diff --git a/composer.lock b/composer.lock index f1127e7847672bbc782ac2bd39688bdaa761f0e5..66441fa06b86b0d090400048aad07fa5719f4d5c 100644 --- a/composer.lock +++ b/composer.lock @@ -500,7 +500,7 @@ "dist": { "type": "path", "url": "core", - "reference": "deeb3ec5ad5b0a9b0aa65505ab74e2bde5255abd" + "reference": "493f34276d92722b600d8cf70f7852260a87afd5" }, "require": { "asm89/stack-cors": "^1.1", @@ -631,6 +631,7 @@ "drupal/migrate_drupal_ui": "self.version", "drupal/minimal": "self.version", "drupal/node": "self.version", + "drupal/olivero": "self.version", "drupal/options": "self.version", "drupal/page_cache": "self.version", "drupal/path": "self.version", @@ -748,7 +749,7 @@ "dist": { "type": "path", "url": "composer/Plugin/ProjectMessage", - "reference": "b4efdbe26634b41a1b89e4f3770a8074769088a6" + "reference": "cad5c2853f5b733663dcc1be328f80ee233acc30" }, "require": { "composer-plugin-api": "^1.1 || ^2", @@ -781,7 +782,7 @@ "dist": { "type": "path", "url": "composer/Plugin/VendorHardening", - "reference": "d54f0b3cc8b4237f3a41a0860a808db242f9da9e" + "reference": "3732b3fa7c1db63f41bc72d847793ea8aebf7735" }, "require": { "composer-plugin-api": "^1.1 || ^2", @@ -4596,9 +4597,6 @@ "ext-zip": "Enabling the zip extension allows you to unzip archives", "ext-zlib": "Allow gzip compression of HTTP requests" }, - "bin": [ - "bin/composer" - ], "type": "library", "extra": { "branch-alias": { diff --git a/core/.cspell.json b/core/.cspell.json index cffca8c11cf1d7b7893ce3d1ca82c93ded40a97a..100e0651b24f91aa316dc9f4bf149cf12c8b4aed 100644 --- a/core/.cspell.json +++ b/core/.cspell.json @@ -21,6 +21,7 @@ "profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/**/*", "tests/Drupal/Tests/Component/Annotation/Doctrine/**", "themes/bartik/color/preview.html", + "themes/olivero/fonts/**", "COPYRIGHT.txt", "MAINTAINERS.txt", "package.json", diff --git a/core/.stylelintignore b/core/.stylelintignore index d70b0031c42dd2af4b0ccc5545b02eab9c85c36d..56035f44ae323d87b3a4d58612a849ac91a8bc77 100644 --- a/core/.stylelintignore +++ b/core/.stylelintignore @@ -1,2 +1,4 @@ themes/claro/**/*.css !themes/claro/**/*.pcss.css +themes/olivero/**/*.css +!themes/olivero/**/*.pcss.css diff --git a/core/.stylelintrc.json b/core/.stylelintrc.json index 56d405e57f92d6f46b76436f93ee74b8c14d5436..ba3791df2623d31cbca9aa5f7bae860668602d70 100644 --- a/core/.stylelintrc.json +++ b/core/.stylelintrc.json @@ -114,11 +114,19 @@ "margin-right", "margin-bottom", "margin-left", + "margin-block-start", + "margin-block-end", + "margin-inline-start", + "margin-inline-end", "padding", "padding-top", "padding-right", "padding-bottom", "padding-left", + "padding-block-start", + "padding-block-end", + "padding-inline-start", + "padding-inline-end", "table-layout", "-webkit-columns", @@ -325,6 +333,22 @@ "border-left-width", "border-left-style", "border-left-color", + "border-block-start", + "border-block-start-width", + "border-block-start-style", + "border-block-start-color", + "border-inline-end", + "border-inline-end-width", + "border-inline-end-style", + "border-inline-end-color", + "border-block-end", + "border-block-end-width", + "border-block-end-style", + "border-block-end-color", + "border-inline-start", + "border-inline-start-width", + "border-inline-start-style", + "border-inline-start-color", "-webkit-border-radius", "-moz-border-radius", "border-radius", @@ -436,7 +460,7 @@ "selector-pseudo-element-colon-notation": null, "shorthand-property-no-redundant-values": null, "string-quotes": "double", - "unit-whitelist": ["deg", "em", "ex", "ms", "rem", "%", "s", "px", "vw", "vh"] + "unit-whitelist": ["deg", "em", "ex", "fr", "ms", "rem", "%", "s", "px", "vw", "vh"] }, "ignoreFiles": [ "assets/vendor/**/*.css", diff --git a/core/composer.json b/core/composer.json index 513b4b317bbcbf27c720d98fc7821d891a937ba5..7302f7e066c7de75b5fdca7b778cd34b57f36a85 100644 --- a/core/composer.json +++ b/core/composer.json @@ -132,6 +132,7 @@ "drupal/migrate_drupal_multilingual": "self.version", "drupal/migrate_drupal_ui": "self.version", "drupal/node": "self.version", + "drupal/olivero": "self.version", "drupal/options": "self.version", "drupal/page_cache": "self.version", "drupal/path": "self.version", diff --git a/core/misc/cspell/dictionary.txt b/core/misc/cspell/dictionary.txt index f5eea8b762e71bbeefdabfeddba1cc2175a5b16d..1576f93bea3bb5d3d4f2b537699cc25ccbc4b374 100644 --- a/core/misc/cspell/dictionary.txt +++ b/core/misc/cspell/dictionary.txt @@ -112,6 +112,7 @@ autop autoplace autoplay autoreply +autorow autosave autosubmit autowire @@ -326,6 +327,7 @@ createkey createrole createuser crema +crossorigin crossout crudui crypted @@ -335,6 +337,7 @@ csrftoken cssidentifier csslint csslintrc +csstools ctags ctes ctools @@ -1057,6 +1060,7 @@ nalias nameofbin namespacing narf +navs nbaz nbchoices nblocks @@ -1147,6 +1151,8 @@ objectindex oembed officedocument oldsilver +olivero +olivero's omitscript omittable ondemand @@ -1252,6 +1258,7 @@ porterstemmer português postbar postcondition +postcss postfields postfoo postgres @@ -1580,6 +1587,7 @@ subjectkeyword subkey subkeys submenu +submenus subparse subpath subpatterns diff --git a/core/tests/Drupal/FunctionalTests/Theme/OliveroTest.php b/core/tests/Drupal/FunctionalTests/Theme/OliveroTest.php new file mode 100644 index 0000000000000000000000000000000000000000..c8098bd5acce04cc36b5907eed5fa91ee2690a70 --- /dev/null +++ b/core/tests/Drupal/FunctionalTests/Theme/OliveroTest.php @@ -0,0 +1,90 @@ +<?php + +namespace Drupal\FunctionalTests\Theme; + +use Drupal\Tests\BrowserTestBase; + +/** + * Tests the Olivero theme. + * + * @group olivero + */ +class OliveroTest extends BrowserTestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = ['system', 'block']; + + /** + * {@inheritdoc} + * + * It should eventually be possible to set this to 'olivero' once the theme + * is in core. + */ + protected $defaultTheme = 'stark'; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + // Install & set Olivero as default the theme. + // Note: it should be possible to remove this once Olivero can be set as + // the default theme above. + $this->container->get('theme_installer')->install(['olivero'], TRUE); + $system_theme_config = $this->container->get('config.factory')->getEditable('system.theme'); + $system_theme_config + ->set('default', 'olivero') + ->save(); + } + + /** + * Tests that the Olivero theme always adds base library files. + * + * @see olivero.libraries.yml + */ + public function testBaseLibraryAvailable() { + $this->drupalGet(''); + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->responseContains('olivero/css/base/base.css'); + $this->assertSession()->responseContains('olivero/js/scripts.js'); + } + + /** + * Test Olivero's configuration schema. + */ + public function testConfigSchema() { + // Required configuration. + $this->drupalGet(''); + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->elementExists('css', '#block-olivero-content'); + $this->assertSession()->elementNotExists('css', '#block-olivero-search-form-wide'); + + // Optional configuration. + \Drupal::service('module_installer')->install( + ['search', 'image', 'book', 'help', 'node'] + ); + $this->rebuildAll(); + $this->drupalLogin( + $this->drupalCreateUser(['search content']) + ); + + // Confirm search block was installed. + $this->assertSession()->elementExists('css', '#block-olivero-search-form-wide'); + } + + /** + * Tests that the Olivero theme can be uninstalled. + */ + public function testIsUninstallable() { + $this->drupalLogin($this->drupalCreateUser(['access administration pages', 'administer themes'])); + + $this->drupalGet('admin/appearance'); + $this->cssSelect('a[title="Install Bartik as default theme"]')[0]->click(); + $this->cssSelect('a[title="Uninstall Olivero theme"]')[0]->click(); + $this->assertText('The Olivero theme has been uninstalled.'); + } + +} diff --git a/core/themes/olivero/config/install/block.block.olivero_account_menu.yml b/core/themes/olivero/config/install/block.block.olivero_account_menu.yml new file mode 100644 index 0000000000000000000000000000000000000000..36f3becdcdd337f7073be20d279d311970748501 --- /dev/null +++ b/core/themes/olivero/config/install/block.block.olivero_account_menu.yml @@ -0,0 +1,20 @@ +langcode: en +status: true +dependencies: + theme: + - olivero +id: olivero_account_menu +theme: olivero +region: secondary_menu +weight: -4 +provider: null +plugin: system_menu_block:account +settings: + id: system_menu_block:account + label: 'User account menu' + provider: system + label_display: '0' + level: 1 + depth: 1 + expand_all_items: false +visibility: { } diff --git a/core/themes/olivero/config/install/block.block.olivero_breadcrumbs.yml b/core/themes/olivero/config/install/block.block.olivero_breadcrumbs.yml new file mode 100644 index 0000000000000000000000000000000000000000..b5ff7c7395cdbf276bfc94303c0f21349b98be23 --- /dev/null +++ b/core/themes/olivero/config/install/block.block.olivero_breadcrumbs.yml @@ -0,0 +1,19 @@ +langcode: en +status: true +dependencies: + module: + - system + theme: + - olivero +id: olivero_breadcrumbs +theme: olivero +region: breadcrumb +weight: 0 +provider: null +plugin: system_breadcrumb_block +settings: + id: system_breadcrumb_block + label: Breadcrumbs + provider: system + label_display: '0' +visibility: { } diff --git a/core/themes/olivero/config/install/block.block.olivero_content.yml b/core/themes/olivero/config/install/block.block.olivero_content.yml new file mode 100644 index 0000000000000000000000000000000000000000..1c2bad4535c41d8c8f8bfb3708adfade0840ac96 --- /dev/null +++ b/core/themes/olivero/config/install/block.block.olivero_content.yml @@ -0,0 +1,19 @@ +langcode: en +status: true +dependencies: + module: + - system + theme: + - olivero +id: olivero_content +theme: olivero +region: content +weight: 0 +provider: null +plugin: system_main_block +settings: + id: system_main_block + label: 'Main page content' + provider: system + label_display: '0' +visibility: { } diff --git a/core/themes/olivero/config/install/block.block.olivero_main_menu.yml b/core/themes/olivero/config/install/block.block.olivero_main_menu.yml new file mode 100644 index 0000000000000000000000000000000000000000..e956075c62fd63147a692d63a48fe91a6ffc63f2 --- /dev/null +++ b/core/themes/olivero/config/install/block.block.olivero_main_menu.yml @@ -0,0 +1,20 @@ +langcode: en +status: true +dependencies: + theme: + - olivero +id: olivero_main_menu +theme: olivero +region: primary_menu +weight: 0 +provider: null +plugin: system_menu_block:main +settings: + id: system_menu_block:main + label: 'Main navigation' + provider: system + label_display: '0' + level: 1 + depth: 2 + expand_all_items: true +visibility: { } diff --git a/core/themes/olivero/config/install/block.block.olivero_messages.yml b/core/themes/olivero/config/install/block.block.olivero_messages.yml new file mode 100644 index 0000000000000000000000000000000000000000..f23066aaac02f3339ccd045d1390c38a2af7827d --- /dev/null +++ b/core/themes/olivero/config/install/block.block.olivero_messages.yml @@ -0,0 +1,19 @@ +langcode: en +status: true +dependencies: + module: + - system + theme: + - olivero +id: olivero_messages +theme: olivero +region: highlighted +weight: -5 +provider: null +plugin: system_messages_block +settings: + id: system_messages_block + label: 'Status messages' + provider: system + label_display: '0' +visibility: { } diff --git a/core/themes/olivero/config/install/block.block.olivero_page_title.yml b/core/themes/olivero/config/install/block.block.olivero_page_title.yml new file mode 100644 index 0000000000000000000000000000000000000000..0a4c67a25a03ee56f6e9ebccf8435cd8d71c4149 --- /dev/null +++ b/core/themes/olivero/config/install/block.block.olivero_page_title.yml @@ -0,0 +1,17 @@ +langcode: en +status: true +dependencies: + theme: + - olivero +id: olivero_page_title +theme: olivero +region: content_above +weight: -5 +provider: null +plugin: page_title_block +settings: + id: page_title_block + label: 'Page title' + provider: core + label_display: '0' +visibility: { } diff --git a/core/themes/olivero/config/install/block.block.olivero_powered.yml b/core/themes/olivero/config/install/block.block.olivero_powered.yml new file mode 100644 index 0000000000000000000000000000000000000000..6f5d83f42927ce748d11b95380ea8400a8bec88b --- /dev/null +++ b/core/themes/olivero/config/install/block.block.olivero_powered.yml @@ -0,0 +1,17 @@ +langcode: en +status: true +dependencies: + theme: + - olivero +id: olivero_powered +theme: olivero +region: footer_bottom +weight: 0 +provider: null +plugin: system_powered_by_block +settings: + id: system_powered_by_block + label: 'Powered by Drupal' + provider: system + label_display: '0' +visibility: { } diff --git a/core/themes/olivero/config/install/block.block.olivero_primary_local_tasks.yml b/core/themes/olivero/config/install/block.block.olivero_primary_local_tasks.yml new file mode 100644 index 0000000000000000000000000000000000000000..efc24c4c759c10b8eeaec81c33a8092346b283e4 --- /dev/null +++ b/core/themes/olivero/config/install/block.block.olivero_primary_local_tasks.yml @@ -0,0 +1,19 @@ +langcode: en +status: true +dependencies: + theme: + - olivero +id: olivero_primary_local_tasks +theme: olivero +region: highlighted +weight: -4 +provider: null +plugin: local_tasks_block +settings: + id: local_tasks_block + label: 'Primary tabs' + provider: core + label_display: '0' + primary: true + secondary: false +visibility: { } diff --git a/core/themes/olivero/config/install/block.block.olivero_secondary_local_tasks.yml b/core/themes/olivero/config/install/block.block.olivero_secondary_local_tasks.yml new file mode 100644 index 0000000000000000000000000000000000000000..8c124da9970cca4b2f0accde5a36a646d8297bae --- /dev/null +++ b/core/themes/olivero/config/install/block.block.olivero_secondary_local_tasks.yml @@ -0,0 +1,19 @@ +langcode: en +status: true +dependencies: + theme: + - olivero +id: olivero_secondary_local_tasks +theme: olivero +region: highlighted +weight: -2 +provider: null +plugin: local_tasks_block +settings: + id: local_tasks_block + label: 'Secondary tabs' + provider: core + label_display: '0' + primary: false + secondary: true +visibility: { } diff --git a/core/themes/olivero/config/install/block.block.olivero_site_branding.yml b/core/themes/olivero/config/install/block.block.olivero_site_branding.yml new file mode 100644 index 0000000000000000000000000000000000000000..5b974e82f33add5ecb02fc186b5a4c8d5b864294 --- /dev/null +++ b/core/themes/olivero/config/install/block.block.olivero_site_branding.yml @@ -0,0 +1,22 @@ +langcode: en +status: true +dependencies: + module: + - system + theme: + - olivero +id: olivero_site_branding +theme: olivero +region: header +weight: 0 +provider: null +plugin: system_branding_block +settings: + id: system_branding_block + label: 'Site branding' + provider: system + label_display: '0' + use_site_logo: true + use_site_name: true + use_site_slogan: false +visibility: { } diff --git a/core/themes/olivero/config/install/block.block.primary_admin_actions.yml b/core/themes/olivero/config/install/block.block.primary_admin_actions.yml new file mode 100644 index 0000000000000000000000000000000000000000..5fc8674cf8bf5cb94f165c11bd093bedc693caf8 --- /dev/null +++ b/core/themes/olivero/config/install/block.block.primary_admin_actions.yml @@ -0,0 +1,17 @@ +langcode: en +status: true +dependencies: + theme: + - olivero +id: primary_admin_actions +theme: olivero +region: highlighted +weight: -5 +provider: null +plugin: local_actions_block +settings: + id: local_actions_block + label: 'Primary admin actions' + provider: core + label_display: '0' +visibility: { } diff --git a/core/themes/olivero/config/install/core.date_format.olivero_medium.yml b/core/themes/olivero/config/install/core.date_format.olivero_medium.yml new file mode 100644 index 0000000000000000000000000000000000000000..3cd137c05dc80901879ecdba89bab88ae1432d0d --- /dev/null +++ b/core/themes/olivero/config/install/core.date_format.olivero_medium.yml @@ -0,0 +1,10 @@ +langcode: en +status: true +dependencies: + enforced: + theme: + - olivero +id: olivero_medium +label: 'Olivero Medium' +locked: false +pattern: 'j F, Y' diff --git a/core/themes/olivero/config/install/olivero.settings.yml b/core/themes/olivero/config/install/olivero.settings.yml new file mode 100644 index 0000000000000000000000000000000000000000..42c5a375b1148a03c3a620b6ad2b2fcd074a5943 --- /dev/null +++ b/core/themes/olivero/config/install/olivero.settings.yml @@ -0,0 +1,14 @@ +third_party_settings: + shortcut: + module_link: true +features: + node_user_picture: false + comment_user_picture: true + comment_user_verification: true + favicon: true +logo: + use_default: false +favicon: + use_default: true +mobile_menu_all_widths: 0 +site_branding_bg_color: default diff --git a/core/themes/olivero/config/optional/block.block.book_navigation.yml b/core/themes/olivero/config/optional/block.block.book_navigation.yml new file mode 100644 index 0000000000000000000000000000000000000000..e07d9ebba6edbdc56fd6e5b5a29813bb5233f689 --- /dev/null +++ b/core/themes/olivero/config/optional/block.block.book_navigation.yml @@ -0,0 +1,20 @@ +langcode: en +status: true +dependencies: + module: + - book + theme: + - olivero +id: book_navigation +theme: olivero +region: sidebar +weight: 0 +provider: null +plugin: book_navigation +settings: + id: book_navigation + label: 'Book navigation' + provider: book + label_display: visible + block_mode: 'book pages' +visibility: { } diff --git a/core/themes/olivero/config/optional/block.block.olivero_help.yml b/core/themes/olivero/config/optional/block.block.olivero_help.yml new file mode 100644 index 0000000000000000000000000000000000000000..b9f8cf3832ec9e54f6664d0b90a14e45e480910c --- /dev/null +++ b/core/themes/olivero/config/optional/block.block.olivero_help.yml @@ -0,0 +1,19 @@ +langcode: en +status: true +dependencies: + module: + - help + theme: + - olivero +id: olivero_help +theme: olivero +region: help +weight: 0 +provider: null +plugin: help_block +settings: + id: help_block + label: Help + provider: help + label_display: '0' +visibility: { } diff --git a/core/themes/olivero/config/optional/block.block.olivero_search_form_narrow.yml b/core/themes/olivero/config/optional/block.block.olivero_search_form_narrow.yml new file mode 100644 index 0000000000000000000000000000000000000000..9ae513e2c77e4d3756510a1c04381b5bf3ab285f --- /dev/null +++ b/core/themes/olivero/config/optional/block.block.olivero_search_form_narrow.yml @@ -0,0 +1,20 @@ +langcode: en +status: true +dependencies: + module: + - search + theme: + - olivero +id: olivero_search_form_narrow +theme: olivero +region: primary_menu +weight: -4 +provider: null +plugin: search_form_block +settings: + id: search_form_block + label: 'Search form (narrow)' + provider: search + label_display: '0' + page_id: '' +visibility: { } diff --git a/core/themes/olivero/config/optional/block.block.olivero_search_form_wide.yml b/core/themes/olivero/config/optional/block.block.olivero_search_form_wide.yml new file mode 100644 index 0000000000000000000000000000000000000000..2e938e8859b18dd29fca0d00d4b5e644712aa369 --- /dev/null +++ b/core/themes/olivero/config/optional/block.block.olivero_search_form_wide.yml @@ -0,0 +1,20 @@ +langcode: en +status: true +dependencies: + module: + - search + theme: + - olivero +id: olivero_search_form_wide +theme: olivero +region: secondary_menu +weight: -5 +provider: null +plugin: search_form_block +settings: + id: search_form_block + label: 'Search form (wide)' + provider: search + label_display: '0' + page_id: '' +visibility: { } diff --git a/core/themes/olivero/config/optional/block.block.olivero_syndicate.yml b/core/themes/olivero/config/optional/block.block.olivero_syndicate.yml new file mode 100644 index 0000000000000000000000000000000000000000..c066164a380e0055260c9403f53bc15820907a10 --- /dev/null +++ b/core/themes/olivero/config/optional/block.block.olivero_syndicate.yml @@ -0,0 +1,19 @@ +langcode: en +status: true +dependencies: + module: + - node + theme: + - olivero +id: olivero_syndicate +theme: olivero +region: social +weight: 0 +provider: null +plugin: node_syndicate_block +settings: + id: node_syndicate_block + label: RSS feed + provider: node + label_display: '0' +visibility: { } diff --git a/core/themes/olivero/config/schema/olivero.schema.yml b/core/themes/olivero/config/schema/olivero.schema.yml new file mode 100644 index 0000000000000000000000000000000000000000..9ae8bbaa6202597e7b8e5b73dce81ec2637fc352 --- /dev/null +++ b/core/themes/olivero/config/schema/olivero.schema.yml @@ -0,0 +1,23 @@ +# Schema for the configuration files of the Olivero theme. + +olivero.settings: + type: theme_settings + label: 'olivero settings' + mapping: + third_party_settings: + type: mapping + label: 'Third party settings' + mapping: + shortcut: + type: mapping + label: 'Shortcut' + mapping: + module_link: + type: boolean + label: 'Module Link' + mobile_menu_all_widths: + type: integer + label: "Mobile menu all widths" + site_branding_bg_color: + type: string + label: "Site branding background color" diff --git a/core/themes/olivero/css/base/base.css b/core/themes/olivero/css/base/base.css new file mode 100644 index 0000000000000000000000000000000000000000..5c310fcb2f0c7d621fd1e39ea22c4f1c84326f2f --- /dev/null +++ b/core/themes/olivero/css/base/base.css @@ -0,0 +1,157 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Generic base elements. + */ + +*, +*:before, +*:after { + box-sizing: border-box; +} + +::selection { + color: white; + background-color: #0d77b5; +} + +html { + font-family: "metropolis", sans-serif; + font-size: 100%; + font-weight: normal; + font-style: normal; + line-height: 27px; +} + +body { + margin: 0; + color: #313637; + background-color: #f7f9fa; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='50' height='84' viewBox='0 0 50 84'%3e %3cpath opacity='0.05' fill='%230e6ba6' d='M25,61.7C25,68.5,19.4,74,12.5,74S0,68.5,0,61.7c0-5.7,3.9-9.6,7.4-12.9c2.3-2.2,4.5-4.4,5.1-6.8c0.7,2.4,2.8,4.6,5.1,6.8C21.1,52.2,25,56,25,61.7z M42.6,6.8c-2.3-2.2-4.5-4.4-5.1-6.8c-0.7,2.4-2.9,4.6-5.1,6.8C28.9,10.2,25,14,25,19.7C25,26.5,30.6,32,37.5,32S50,26.5,50,19.7C50,14,46.1,10.2,42.6,6.8z'/%3e%3c/svg%3e"); + background-position: top left /* LTR */ +} + +body.js-fixed { + position: fixed; + overflow: hidden; + width: 100%; + } + +[dir="rtl"] body { + background-position: top right; +} + +a { + color: #0d77b5 +} + +a:hover { + color: #2494db; + } + +img, +audio, +video { + display: block; + max-width: 100%; + height: auto; +} + +h1 { + margin-top: 18px; + margin-bottom: 18px; + letter-spacing: -0.01em; + color: #0d1214; + font-size: 24px; + font-weight: bold; + line-height: 27px +} + +@media (min-width: 700px) { + +h1 { + margin-top: 36px; + margin-bottom: 36px; + font-size: 60px; + line-height: 72px +} + } + +h2 { + margin-top: 18px; + margin-bottom: 18px; + letter-spacing: -0.01em; + color: #0d1214; + font-size: 24px; + font-weight: bold; + line-height: 27px +} + +@media (min-width: 700px) { + +h2 { + margin-top: 36px; + margin-bottom: 36px; + font-size: 36px; + line-height: 54px +} + } + +[dir="ltr"] ul { + margin-left: 1.5em; +} + +[dir="rtl"] ul { + margin-right: 1.5em; +} + +[dir="ltr"] ul { + margin-right: 0; +} + +[dir="rtl"] ul { + margin-left: 0; +} + +[dir="ltr"] ul { + padding-left: 0; +} + +[dir="rtl"] ul { + padding-right: 0; +} + +ul { + margin-top: 0.25em; + margin-bottom: 0.25em; + list-style-type: disc; + list-style-image: none; +} + +[dir="ltr"] .overlay { + left: 0; +} + +[dir="rtl"] .overlay { + right: 0; +} + +.overlay { + position: fixed; + top: 0; + display: none; + width: 100%; + height: 100vh; + opacity: 0.2; + background: #0d77b5; +} + +.js-overlay-active .overlay { + display: block; +} diff --git a/core/themes/olivero/css/base/base.pcss.css b/core/themes/olivero/css/base/base.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..875879207fe654007b4747f7656d42f101cc9e37 --- /dev/null +++ b/core/themes/olivero/css/base/base.pcss.css @@ -0,0 +1,114 @@ +/** + * @file + * Generic base elements. + */ + +@import "variables.pcss.css"; + +*, +*:before, +*:after { + box-sizing: border-box; +} + +::selection { + color: white; + background-color: var(--color--blue-20); +} + +html { + font-family: var(--font-sans); + font-size: 100%; + font-weight: normal; + font-style: normal; + line-height: var(--line-height-base); +} + +body { + margin: 0; + color: var(--color--gray-10); + background-color: var(--color--gray-95); + background-image: url("../../images/background.svg"); + background-position: top left; /* LTR */ + + &.js-fixed { + position: fixed; + overflow: hidden; + width: 100%; + } +} + +[dir="rtl"] body { + background-position: top right; +} + +a { + color: var(--color--blue-20); + + &:hover { + color: var(--color--blue-50); + } +} + +img, +audio, +video { + display: block; + max-width: 100%; + height: auto; +} + +h1 { + margin-block: var(--sp); + letter-spacing: -0.01em; + color: var(--color--gray-0); + font-size: 24px; + font-weight: bold; + line-height: var(--sp1-5); + + @media (--md) { + margin-block: var(--sp2); + font-size: 60px; + line-height: var(--sp4); + } +} + +h2 { + margin-block: var(--sp); + letter-spacing: -0.01em; + color: var(--color--gray-0); + font-size: 24px; + font-weight: bold; + line-height: var(--sp1-5); + + @media (--md) { + margin-block: var(--sp2); + font-size: 36px; + line-height: var(--sp3); + } +} + +ul { + margin-block-start: 0.25em; + margin-block-end: 0.25em; + margin-inline-start: 1.5em; + margin-inline-end: 0; + padding-inline-start: 0; + list-style-type: disc; + list-style-image: none; +} + +.overlay { + position: fixed; + inset-block-start: 0; + inset-inline-start: 0; + display: none; + width: 100%; + height: 100vh; + opacity: 0.2; + background: var(--color--blue-20); +} + +.js-overlay-active .overlay { + display: block; +} diff --git a/core/themes/olivero/css/base/fonts.css b/core/themes/olivero/css/base/fonts.css new file mode 100644 index 0000000000000000000000000000000000000000..af11aa78431eb99c275c22fca09e42f9a2a866e4 --- /dev/null +++ b/core/themes/olivero/css/base/fonts.css @@ -0,0 +1,83 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Base Fonts. + */ + +@font-face { + font-family: "metropolis"; + src: + url("../../fonts/metropolis/Metropolis-Regular.woff2") format("woff2"), + url("../../fonts/metropolis/Metropolis-Regular.woff") format("woff"); + font-weight: normal; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "metropolis"; + src: + url("../../fonts/metropolis/Metropolis-Bold.woff2") format("woff2"), + url("../../fonts/metropolis/Metropolis-Bold.woff") format("woff"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "metropolis"; + src: + url("../../fonts/metropolis/Metropolis-SemiBold.woff2") format("woff2"), + url("../../fonts/metropolis/Metropolis-SemiBold.woff") format("woff"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +/* lora-regular - latin */ + +@font-face { + font-family: "Lora"; + src: + local("Lora Regular"), + local("Lora-Regular"), + url("../../fonts/lora/lora-v14-latin-regular.woff2") format("woff2"), + url("../../fonts/lora/lora-v14-latin-regular.woff") format("woff"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +/* lora-italic - latin */ + +@font-face { + font-family: "Lora"; + src: + local("Lora Italic"), + local("Lora-Italic"), + url("../../fonts/lora/lora-v14-latin-italic.woff2") format("woff2"), + url("../../fonts/lora/lora-v14-latin-italic.woff") format("woff"); + font-weight: 400; + font-style: italic; + font-display: swap; +} + +/* lora-700 - latin */ + +@font-face { + font-family: "Lora"; + src: + local("Lora Bold"), + local("Lora-Bold"), + url("../../fonts/lora/lora-v14-latin-700.woff2") format("woff2"), + url("../../fonts/lora/lora-v14-latin-700.woff") format("woff"); + font-weight: 700; + font-style: normal; + font-display: swap; +} diff --git a/core/themes/olivero/css/base/fonts.pcss.css b/core/themes/olivero/css/base/fonts.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..b02073eadf839c56c6ee90a5f181dbc5541d09b6 --- /dev/null +++ b/core/themes/olivero/css/base/fonts.pcss.css @@ -0,0 +1,73 @@ +/** + * @file + * Base Fonts. + */ + +@import "variables.pcss.css"; + +@font-face { + font-family: "metropolis"; + src: + url("../../fonts/metropolis/Metropolis-Regular.woff2") format("woff2"), + url("../../fonts/metropolis/Metropolis-Regular.woff") format("woff"); + font-weight: normal; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "metropolis"; + src: + url("../../fonts/metropolis/Metropolis-Bold.woff2") format("woff2"), + url("../../fonts/metropolis/Metropolis-Bold.woff") format("woff"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "metropolis"; + src: + url("../../fonts/metropolis/Metropolis-SemiBold.woff2") format("woff2"), + url("../../fonts/metropolis/Metropolis-SemiBold.woff") format("woff"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +/* lora-regular - latin */ +@font-face { + font-family: "Lora"; + src: + local("Lora Regular"), + local("Lora-Regular"), + url("../../fonts/lora/lora-v14-latin-regular.woff2") format("woff2"), + url("../../fonts/lora/lora-v14-latin-regular.woff") format("woff"); + font-weight: 400; + font-style: normal; + font-display: swap; +} +/* lora-italic - latin */ +@font-face { + font-family: "Lora"; + src: + local("Lora Italic"), + local("Lora-Italic"), + url("../../fonts/lora/lora-v14-latin-italic.woff2") format("woff2"), + url("../../fonts/lora/lora-v14-latin-italic.woff") format("woff"); + font-weight: 400; + font-style: italic; + font-display: swap; +} +/* lora-700 - latin */ +@font-face { + font-family: "Lora"; + src: + local("Lora Bold"), + local("Lora-Bold"), + url("../../fonts/lora/lora-v14-latin-700.woff2") format("woff2"), + url("../../fonts/lora/lora-v14-latin-700.woff") format("woff"); + font-weight: 700; + font-style: normal; + font-display: swap; +} diff --git a/core/themes/olivero/css/base/utility.css b/core/themes/olivero/css/base/utility.css new file mode 100644 index 0000000000000000000000000000000000000000..cd22028e85bf42532592e139484b4f19009fa406 --- /dev/null +++ b/core/themes/olivero/css/base/utility.css @@ -0,0 +1,59 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Utility classes. + */ + +/* + ie11-autorow + + IE11 does not automatically place new rows, which leads to overlapping + content. We can work around this (when we know that each grid item is + going to span the full width) by setting each child to a new row. +*/ + +.ie11-autorow > *:nth-child(1) { + -ms-grid-row: 1; + } + +.ie11-autorow > *:nth-child(2) { + -ms-grid-row: 2; + } + +.ie11-autorow > *:nth-child(3) { + -ms-grid-row: 3; + } + +.ie11-autorow > *:nth-child(4) { + -ms-grid-row: 4; + } + +.ie11-autorow > *:nth-child(5) { + -ms-grid-row: 5; + } + +.ie11-autorow > *:nth-child(6) { + -ms-grid-row: 6; + } + +.ie11-autorow > *:nth-child(7) { + -ms-grid-row: 7; + } + +.ie11-autorow > *:nth-child(8) { + -ms-grid-row: 8; + } + +.ie11-autorow > *:nth-child(9) { + -ms-grid-row: 9; + } + +.ie11-autorow > *:nth-child(10) { + -ms-grid-row: 10; + } diff --git a/core/themes/olivero/css/base/utility.pcss.css b/core/themes/olivero/css/base/utility.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..2c9d8a71d6d8abbf215efc839ef287f8ee19dfe2 --- /dev/null +++ b/core/themes/olivero/css/base/utility.pcss.css @@ -0,0 +1,55 @@ +/** + * @file + * Utility classes. + */ + +@import "../base/variables.pcss.css"; + +/* + ie11-autorow + + IE11 does not automatically place new rows, which leads to overlapping + content. We can work around this (when we know that each grid item is + going to span the full width) by setting each child to a new row. +*/ +.ie11-autorow > * { + &:nth-child(1) { + -ms-grid-row: 1; + } + + &:nth-child(2) { + -ms-grid-row: 2; + } + + &:nth-child(3) { + -ms-grid-row: 3; + } + + &:nth-child(4) { + -ms-grid-row: 4; + } + + &:nth-child(5) { + -ms-grid-row: 5; + } + + &:nth-child(6) { + -ms-grid-row: 6; + } + + &:nth-child(7) { + -ms-grid-row: 7; + } + + &:nth-child(8) { + -ms-grid-row: 8; + } + + &:nth-child(9) { + -ms-grid-row: 9; + } + + &:nth-child(10) { + -ms-grid-row: 10; + } +} diff --git a/core/themes/olivero/css/base/variables.css b/core/themes/olivero/css/base/variables.css new file mode 100644 index 0000000000000000000000000000000000000000..54d0cb811d17f19fe2a1becad88222a3fdc5fff1 --- /dev/null +++ b/core/themes/olivero/css/base/variables.css @@ -0,0 +1,72 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/* + Media query breakpoints. + Processed by postcss/postcss-custom-media. +*/ + +/* Navigation related breakpoints */ + +/* Grid related breakpoints */ + +/* Grid shifts from 6 to 14 columns. */ + +/* Width of the entire grid maxes out. */ + +/* + Custom CSS properties. + + These are "compiled" by postcss/postcss-custom-properties for IE11 compatibility. +*/ + +:root { + + /* Typography */ + + /* Layout */ + + /* Drupal administrative toolbar heights and width. */ + + /* + Grid helpers. + + These variables help authors apply widths and negative margins to break items out of + the grid, while still conforming to the larger grid system. + + Note we cannot change the values of these custom properties within media queries, + as they are processed by postcss/postcss-custom-properties (for IE11 compatibility), + which does not support that functionality. Therefore, we need a separate custom + property for each breakpoint. 😠+ */ /* Approximate width of a scrollbar. Doesn't have to be perfect. */ + + /* Grid gap across various breakpoints. */ + + /* Column counts at various breakpoints. */ + + /* Count of grid-gaps at various breakpoints. */ + + /* Width of the entire grid at various breakpoints. */ + + /* Width of a grid column at various breakpoints */ + + /* Layout helpers */ /* Black */ /* Black 1 */ /* Black 2 */ /* Black 3 */ /* Gray Dark */ /* Gray medium */ /* Gray medium 1 */ /* Gray medium 2 */ /* Black 4 */ /* Gray light */ /* Gray light 1 */ /* Gray light 2 */ /* Blue dark */ /* Blue dark 2 */ /* Blue medium */ /* Blue bright */ /* Blue bright 5 */ /* White */ /* Red */ /* Gold */ /* Green */ + + /* Shadows */ + + /* Radius */ + + /* Outlines */ + + /* Header */ + + /* Width of slide out navigation */ + + /* Border radius */ + + /* Form */ +} diff --git a/core/themes/olivero/css/base/variables.pcss.css b/core/themes/olivero/css/base/variables.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..42333e66999e9a2880dfb4cb83390bcb73211e9f --- /dev/null +++ b/core/themes/olivero/css/base/variables.pcss.css @@ -0,0 +1,165 @@ +/* + Media query breakpoints. + Processed by postcss/postcss-custom-media. +*/ + +@custom-media --sm (min-width: 500px); +@custom-media --md (min-width: 700px); +@custom-media --lg (min-width: 1000px); +@custom-media --xl (min-width: 1300px); + +/* Navigation related breakpoints */ +@custom-media --nav-md (min-width: 500px); +@custom-media --nav (min-width: 1200px); +@custom-media --max-nav (max-width: 1200px); + +/* Grid related breakpoints */ +@custom-media --grid-md (min-width: 700px); /* Grid shifts from 6 to 14 columns. */ +@custom-media --grid-max (min-width: 1440px); /* Width of the entire grid maxes out. */ + +/* + Custom CSS properties. + + These are "compiled" by postcss/postcss-custom-properties for IE11 compatibility. +*/ +:root { + --font-sans: "metropolis", sans-serif; + --font-serif: "Lora", "georgia", serif; + + /* Typography */ + --font-size-base: 16px; + --font-size-l: 18px; + --font-size-s: 14px; + --font-size-xs: 13px; + --font-size-xxs: 12px; + --line-height-base: 27px; + --line-height-s: 18px; + + /* Layout */ + --max-width: 1350px; + --max-bg-color: 1570px; + --sp: 18px; + --content-left: 90px; + --container-padding: var(--sp); + --container-padding-nav: var(--sp2); + + /* Drupal administrative toolbar heights and width. */ + --toolbar-height: 39px; + --toolbar-tray-height: 40px; + --toolbar-tray-vertical-width: 239px; + + /* + Grid helpers. + + These variables help authors apply widths and negative margins to break items out of + the grid, while still conforming to the larger grid system. + + Note we cannot change the values of these custom properties within media queries, + as they are processed by postcss/postcss-custom-properties (for IE11 compatibility), + which does not support that functionality. Therefore, we need a separate custom + property for each breakpoint. 😠+ */ + + --scrollbar-width: 15px; /* Approximate width of a scrollbar. Doesn't have to be perfect. */ + + /* Grid gap across various breakpoints. */ + --grid-gap: var(--sp); + --grid-gap--md: var(--sp2); + --grid-gap--lg: var(--grid-gap--md); + --grid-gap--nav: var(--grid-gap--md); + --grid-gap--max: var(--grid-gap--md); + + /* Column counts at various breakpoints. */ + --grid-col-count: 6; + --grid-col-count--md: 14; + --grid-col-count--lg: var(--grid-col-count--md); + --grid-col-count--nav: var(--grid-col-count--md); + --grid-col-count--max: var(--grid-col-count--md); + + /* Count of grid-gaps at various breakpoints. */ + --grid-gap-count: calc(var(--grid-col-count) - 1); + --grid-gap-count--md: calc(var(--grid-col-count--md) - 1); + --grid-gap-count--lg: var(--grid-gap-count--md); + --grid-gap-count--nav: var(--grid-gap-count--md); + --grid-gap-count--max: var(--grid-gap-count--md); + + /* Width of the entire grid at various breakpoints. */ + --grid-full-width: calc(100vw - var(--sp2)); + --grid-full-width--md: var(--grid-full-width); + --grid-full-width--lg: calc(var(--grid-full-width) - var(--scrollbar-width)); + --grid-full-width--nav: calc(100vw - var(--scrollbar-width) - var(--content-left) - var(--sp4)); + --grid-full-width--max: calc(var(--max-width) - var(--sp4)); + + /* Width of a grid column at various breakpoints */ + --grid-col-width: calc((var(--grid-full-width) - (var(--grid-gap-count) * var(--grid-gap))) / var(--grid-col-count)); + --grid-col-width--md: calc((var(--grid-full-width--md) - (var(--grid-gap-count--md) * var(--grid-gap--md))) / var(--grid-col-count--md)); + --grid-col-width--lg: calc((var(--grid-full-width--lg) - (var(--grid-gap-count--lg) * var(--grid-gap--lg))) / var(--grid-col-count--lg)); + --grid-col-width--nav: calc((var(--grid-full-width--nav) - (var(--grid-gap-count--nav) * var(--grid-gap--nav))) / var(--grid-col-count--nav)); + --grid-col-width--max: calc((var(--grid-full-width--max) - (var(--grid-gap-count--max) * var(--grid-gap--max))) / var(--grid-col-count--max)); + + /* Layout helpers */ + --sp0-25: calc(0.25 * var(--sp)); + --sp0-5: calc(0.5 * var(--sp)); + --sp0-75: calc(0.75 * var(--sp)); + --sp1: calc(1 * var(--sp)); + --sp1-5: calc(1.5 * var(--sp)); + --sp2: calc(2 * var(--sp)); + --sp2-5: calc(2.5 * var(--sp)); + --sp3: calc(3 * var(--sp)); + --sp4: calc(4 * var(--sp)); + --sp5: calc(5 * var(--sp)); + --sp6: calc(6 * var(--sp)); + --sp7: calc(7 * var(--sp)); + --sp8: calc(8 * var(--sp)); + --sp9: calc(9 * var(--sp)); + --sp10: calc(10 * var(--sp)); + --sp11: calc(11 * var(--sp)); + --sp12: calc(12 * var(--sp)); + --color--black: #000; /* Black */ + --color--gray-0: #0d1214; /* Black 1 */ + --color--gray-10: #313637; /* Black 2 */ + --color--gray-20: #6e7172; /* Black 3 */ + --color--gray-25: #5d7585; /* Gray Dark */ + --color--gray-30: #7e96a7; /* Gray medium */ + --color--gray-40: #98abb9; /* Gray medium 1 */ + --color--gray-45: #afb8be; /* Gray medium 2 */ + --color--gray-50: #9ea0a1; /* Black 4 */ + --color--gray-70: #d7e1e8; /* Gray light */ + --color--gray-80: #e7edf1; /* Gray light 1 */ + --color--gray-95: #f7f9fa; /* Gray light 2 */ + --color--blue-20: #0d77b5; /* Blue dark */ + --color--blue-30: #3d92c4; /* Blue dark 2 */ + --color--blue-50: #2494db; /* Blue medium */ + --color--blue-70: #53b0eb; /* Blue bright */ + --color--blue-90: #ddeffb; /* Blue bright 5 */ + --color--white: #fff; /* White */ + --color--red: #e33f1e; /* Red */ + --color--gold: #fdca40; /* Gold */ + --color--green: #3fa21c; /* Green */ + + /* Shadows */ + --shadow-focusable: 0 0 0 2px var(--color--white), 0 0 0 4px var(--color--blue-70), var(--shadow-focusable-smooth); + --shadow-focusable-smooth: 0 0 36px rgba(83, 176, 235, 0.25); + + /* Radius */ + --border-radius-base: 2px; + + /* Outlines */ + --outline--thin: 1px solid transparent; + --outline--thick: 6px dashed transparent; + --outline--base: 2px solid var(--color--blue-70); + --outline-offset: 2px; + + /* Header */ + --header-height-wide-when-fixed: calc(6 * var(--sp)); + + /* Width of slide out navigation */ + --mobile-nav-width: 500px; + + /* Border radius */ + --border-radius: 2px; + + /* Form */ + --form-element-border-size-base: 2px; + --form-element-border-size-left: 6px; +} diff --git a/core/themes/olivero/css/components/action-links.css b/core/themes/olivero/css/components/action-links.css new file mode 100644 index 0000000000000000000000000000000000000000..35a25715c2b618f308759ee9664cb5ca2bb33551 --- /dev/null +++ b/core/themes/olivero/css/components/action-links.css @@ -0,0 +1,50 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ +/** + * @file + * Styles for action links. +*/ +[dir="ltr"] .action-links { + margin-left: 0 +} +[dir="rtl"] .action-links { + margin-right: 0 +} +[dir="ltr"] .action-links { + margin-right: 0 +} +[dir="rtl"] .action-links { + margin-left: 0 +} +[dir="ltr"] .action-links { + padding-left: 0 +} +[dir="rtl"] .action-links { + padding-right: 0 +} +[dir="ltr"] .action-links { + padding-right: 0 +} +[dir="rtl"] .action-links { + padding-left: 0 +} +.action-links { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + list-style: none +} +.action-links li { + display: inline-block + } +.action-links li a { + color: #0d77b5; + } +.action-links-item { + display: inline-block; +} diff --git a/core/themes/olivero/css/components/action-links.pcss.css b/core/themes/olivero/css/components/action-links.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..5d3a1d4644f9f8d9c25857a9e79e416d40a792bb --- /dev/null +++ b/core/themes/olivero/css/components/action-links.pcss.css @@ -0,0 +1,27 @@ +/** + * @file + * Styles for action links. +*/ +@import "../base/variables.pcss.css"; + +.action-links { + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + list-style: none; + + & li { + display: inline-block; + + & a { + color: var(--color--blue-20); + } + } +} + +.action-links-item { + display: inline-block; +} diff --git a/core/themes/olivero/css/components/ajax-progress.module.css b/core/themes/olivero/css/components/ajax-progress.module.css new file mode 100644 index 0000000000000000000000000000000000000000..b80af84caa1f7ab6ce15d007ef7dde49dbba190a --- /dev/null +++ b/core/themes/olivero/css/components/ajax-progress.module.css @@ -0,0 +1,150 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Visual styles for ajax-progress throbber. + */ + +.ajax-progress { + display: inline-block; +} + +/** + * Throbber. + */ + +[dir="ltr"] .ajax-progress-throbber { + margin-left: 9px; +} + +[dir="rtl"] .ajax-progress-throbber { + margin-right: 9px; +} + +[dir="ltr"] .ajax-progress-throbber { + margin-right: 9px; +} + +[dir="rtl"] .ajax-progress-throbber { + margin-left: 9px; +} + +.ajax-progress-throbber { + position: relative; + display: inline-flex; + align-content: center; + height: 1.125rem; + margin-top: -3px; + margin-bottom: 0; + vertical-align: middle; + white-space: nowrap; + line-height: 1.125rem; +} + +.ajax-progress-throbber .throbber { + width: 1.125rem; + height: 1.125rem; + border-width: 2px; + border-color: #2494db transparent #2494db #2494db; +} + +[dir="ltr"] .ajax-progress-throbber .message { + padding-left: 9px; +} + +[dir="rtl"] .ajax-progress-throbber .message { + padding-right: 9px; +} + +.ajax-progress-throbber .message { + display: inline-block; + font-size: 14px; + font-weight: 400; +} + +/** + * Full screen throbber. + */ + +[dir="ltr"] .ajax-progress-fullscreen { + left: 50%; +} + +[dir="rtl"] .ajax-progress-fullscreen { + right: 50%; +} + +.ajax-progress-fullscreen { + position: fixed; + z-index: 1000; + top: 50%; + width: 3.5rem; + height: 3.5rem; + margin: -1.75rem; + border: 1px solid #afb8be; + border-radius: 3.5rem; + background-color: #fff; + box-shadow: 0 0.25rem 0.625rem rgba(34, 35, 48, 0.1) /* LTR */ +} + +[dir="ltr"] .ajax-progress-fullscreen:before { + left: 50%; +} + +[dir="rtl"] .ajax-progress-fullscreen:before { + right: 50%; +} + +.ajax-progress-fullscreen:before { + position: absolute; + top: 50%; + width: 1.75rem; + height: 1.75rem; + margin: -0.875rem; + content: ""; + border-width: 3px; + } + +[dir="rtl"] .ajax-progress-fullscreen { + box-shadow: 0 -0.25rem 0.625rem rgba(34, 35, 48, 0.1); +} + +/** + * Common styles for all kinds of throbbers. + */ + +.ajax-progress-throbber .throbber, +.ajax-progress-fullscreen:before { + animation: olivero-throbber 0.75s linear infinite; + border-style: solid dotted solid solid; + border-color: #2494db transparent #2494db #2494db; + border-radius: 50%; +} + +/** + * Remove margin from ajax throbbers following buttons because buttons already + * have a large margin set. + */ + +html[dir="ltr"].js .button:not(.js-hide) + .ajax-progress-throbber { + margin-left: 0; +} + +html[dir="rtl"].js .button:not(.js-hide) + .ajax-progress-throbber { + margin-right: 0; +} + +@keyframes olivero-throbber { + 0% { + transform: rotateZ(0); + } + + 100% { + transform: rotateZ(360deg); + } +} diff --git a/core/themes/olivero/css/components/ajax-progress.module.pcss.css b/core/themes/olivero/css/components/ajax-progress.module.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..c4f08590adc7305af0d576bc05b80d32a1797f9f --- /dev/null +++ b/core/themes/olivero/css/components/ajax-progress.module.pcss.css @@ -0,0 +1,102 @@ +/** + * @file + * Visual styles for ajax-progress throbber. + */ + +@import "../base/variables.pcss.css"; + +.ajax-progress { + display: inline-block; +} + +/** + * Throbber. + */ +.ajax-progress-throbber { + position: relative; + display: inline-flex; + align-content: center; + height: 1.125rem; + margin-block-start: -3px; + margin-block-end: 0; + margin-inline-start: var(--sp0-5); + margin-inline-end: var(--sp0-5); + vertical-align: middle; + white-space: nowrap; + line-height: 1.125rem; +} + +.ajax-progress-throbber .throbber { + width: 1.125rem; + height: 1.125rem; + border-width: 2px; + border-color: var(--color--blue-50) transparent var(--color--blue-50) var(--color--blue-50); +} + +.ajax-progress-throbber .message { + display: inline-block; + padding-inline-start: var(--sp0-5); + font-size: var(--font-size-s); + font-weight: 400; +} + +/** + * Full screen throbber. + */ +.ajax-progress-fullscreen { + position: fixed; + z-index: 1000; + inset-block-start: 50%; + inset-inline-start: 50%; + width: 3.5rem; + height: 3.5rem; + margin: -1.75rem; + border: 1px solid var(--color--gray-45); + border-radius: 3.5rem; + background-color: var(--color--white); + box-shadow: 0 0.25rem 0.625rem rgba(34, 35, 48, 0.1); /* LTR */ + + &:before { + position: absolute; + inset-block-start: 50%; + inset-inline-start: 50%; + width: 1.75rem; + height: 1.75rem; + margin: -0.875rem; + content: ""; + border-width: 3px; + } +} + +[dir="rtl"] .ajax-progress-fullscreen { + box-shadow: 0 -0.25rem 0.625rem rgba(34, 35, 48, 0.1); +} + +/** + * Common styles for all kinds of throbbers. + */ +.ajax-progress-throbber .throbber, +.ajax-progress-fullscreen:before { + animation: olivero-throbber 0.75s linear infinite; + border-style: solid dotted solid solid; + border-color: var(--color--blue-50) transparent var(--color--blue-50) var(--color--blue-50); + border-radius: 50%; +} + +/** + * Remove margin from ajax throbbers following buttons because buttons already + * have a large margin set. + */ +html.js .button:not(.js-hide) + .ajax-progress-throbber { + margin-inline-start: 0; +} + +@keyframes olivero-throbber { + 0% { + transform: rotateZ(0); + } + + 100% { + transform: rotateZ(360deg); + } +} diff --git a/core/themes/olivero/css/components/autocomplete-loading.module.css b/core/themes/olivero/css/components/autocomplete-loading.module.css new file mode 100644 index 0000000000000000000000000000000000000000..b259afd88c916df402f319b57dff0b871511053a --- /dev/null +++ b/core/themes/olivero/css/components/autocomplete-loading.module.css @@ -0,0 +1,166 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Visual styles for autocomplete input field. + */ + +:root { /* 18 18 */ +} + +html[dir="ltr"].js .form-autocomplete { + padding-right: 54px +} + +html[dir="rtl"].js .form-autocomplete { + padding-left: 54px +} + +html.js .form-autocomplete { + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18.8' viewBox='0 0 18 18.8'%3e %3cpath fill='%237e96a7' d='M17.8,17.4l-3.6-3.6c1.4-1.5,2.2-3.4,2.2-5.6c0-4.5-3.7-8.2-8.2-8.2S0,3.7,0,8.2s3.7,8.2,8.2,8.2c1.8,0,3.4-0.6,4.7-1.5l3.7,3.7c0.3,0.3,0.8,0.3,1.2,0C18.1,18.3,18.1,17.7,17.8,17.4z M8.2,14.7c-3.6,0-6.5-2.9-6.5-6.5s2.9-6.5,6.5-6.5s6.5,2.9,6.5,6.5S11.8,14.7,8.2,14.7z'/%3e%3c/svg%3e") no-repeat right 18px top 16px, + linear-gradient(to right, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa +} + +html.js .form-autocomplete:hover { + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18.8' viewBox='0 0 18 18.8'%3e %3cpath fill='%237e96a7' d='M17.8,17.4l-3.6-3.6c1.4-1.5,2.2-3.4,2.2-5.6c0-4.5-3.7-8.2-8.2-8.2S0,3.7,0,8.2s3.7,8.2,8.2,8.2c1.8,0,3.4-0.6,4.7-1.5l3.7,3.7c0.3,0.3,0.8,0.3,1.2,0C18.1,18.3,18.1,17.7,17.8,17.4z M8.2,14.7c-3.6,0-6.5-2.9-6.5-6.5s2.9-6.5,6.5-6.5s6.5,2.9,6.5,6.5S11.8,14.7,8.2,14.7z'/%3e%3c/svg%3e") no-repeat right 18px top 16px, + linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; + } + +html.js .form-autocomplete:focus { + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18.8' viewBox='0 0 18 18.8'%3e %3cpath fill='%237e96a7' d='M17.8,17.4l-3.6-3.6c1.4-1.5,2.2-3.4,2.2-5.6c0-4.5-3.7-8.2-8.2-8.2S0,3.7,0,8.2s3.7,8.2,8.2,8.2c1.8,0,3.4-0.6,4.7-1.5l3.7,3.7c0.3,0.3,0.8,0.3,1.2,0C18.1,18.3,18.1,17.7,17.8,17.4z M8.2,14.7c-3.6,0-6.5-2.9-6.5-6.5s2.9-6.5,6.5-6.5s6.5,2.9,6.5,6.5S11.8,14.7,8.2,14.7z'/%3e%3c/svg%3e") no-repeat right 18px top 16px, + linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; + } + +html.js .form-autocomplete.ui-autocomplete-loading { + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 10 10'%3e %3cstyle type='text/css'%3e%40keyframes s%7b0%25%7btransform:rotate(0deg) translate(-50%25,-50%25)%7d50%25%7btransform:rotate(430deg) translate(-50%25,-50%25);stroke-dashoffset:20%7d100%25%7btransform:rotate(720deg) translate(-50%25,-50%25)%7d%7dellipse%7banimation:s 1s linear infinite%7d%3c/style%3e %3cg transform='translate(5 5)'%3e %3cellipse fill='none' ry='4' rx='4' cy='5' cx='5' stroke='%237e96a7' stroke-width='1' stroke-dashoffset='6.125' stroke-dasharray='25' transform='translate(-5 -5)'/%3e %3c/g%3e%3c/svg%3e") no-repeat right 18px top 16px, + linear-gradient(to right, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa + } + +html.js .form-autocomplete.ui-autocomplete-loading:hover { + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 10 10'%3e %3cstyle type='text/css'%3e%40keyframes s%7b0%25%7btransform:rotate(0deg) translate(-50%25,-50%25)%7d50%25%7btransform:rotate(430deg) translate(-50%25,-50%25);stroke-dashoffset:20%7d100%25%7btransform:rotate(720deg) translate(-50%25,-50%25)%7d%7dellipse%7banimation:s 1s linear infinite%7d%3c/style%3e %3cg transform='translate(5 5)'%3e %3cellipse fill='none' ry='4' rx='4' cy='5' cx='5' stroke='%237e96a7' stroke-width='1' stroke-dashoffset='6.125' stroke-dasharray='25' transform='translate(-5 -5)'/%3e %3c/g%3e%3c/svg%3e") no-repeat right 18px top 16px, + linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; + } + +html.js .form-autocomplete.ui-autocomplete-loading:focus { + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 10 10'%3e %3cstyle type='text/css'%3e%40keyframes s%7b0%25%7btransform:rotate(0deg) translate(-50%25,-50%25)%7d50%25%7btransform:rotate(430deg) translate(-50%25,-50%25);stroke-dashoffset:20%7d100%25%7btransform:rotate(720deg) translate(-50%25,-50%25)%7d%7dellipse%7banimation:s 1s linear infinite%7d%3c/style%3e %3cg transform='translate(5 5)'%3e %3cellipse fill='none' ry='4' rx='4' cy='5' cx='5' stroke='%237e96a7' stroke-width='1' stroke-dashoffset='6.125' stroke-dasharray='25' transform='translate(-5 -5)'/%3e %3c/g%3e%3c/svg%3e") no-repeat right 18px top 16px, + linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; + } + +html.js[dir="rtl"] .form-autocomplete { + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18.8' viewBox='0 0 18 18.8'%3e %3cpath fill='%237e96a7' d='M17.8,17.4l-3.6-3.6c1.4-1.5,2.2-3.4,2.2-5.6c0-4.5-3.7-8.2-8.2-8.2S0,3.7,0,8.2s3.7,8.2,8.2,8.2c1.8,0,3.4-0.6,4.7-1.5l3.7,3.7c0.3,0.3,0.8,0.3,1.2,0C18.1,18.3,18.1,17.7,17.8,17.4z M8.2,14.7c-3.6,0-6.5-2.9-6.5-6.5s2.9-6.5,6.5-6.5s6.5,2.9,6.5,6.5S11.8,14.7,8.2,14.7z'/%3e%3c/svg%3e") no-repeat left 18px top 16px, + linear-gradient(to left, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa +} + +html.js[dir="rtl"] .form-autocomplete:hover { + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18.8' viewBox='0 0 18 18.8'%3e %3cpath fill='%237e96a7' d='M17.8,17.4l-3.6-3.6c1.4-1.5,2.2-3.4,2.2-5.6c0-4.5-3.7-8.2-8.2-8.2S0,3.7,0,8.2s3.7,8.2,8.2,8.2c1.8,0,3.4-0.6,4.7-1.5l3.7,3.7c0.3,0.3,0.8,0.3,1.2,0C18.1,18.3,18.1,17.7,17.8,17.4z M8.2,14.7c-3.6,0-6.5-2.9-6.5-6.5s2.9-6.5,6.5-6.5s6.5,2.9,6.5,6.5S11.8,14.7,8.2,14.7z'/%3e%3c/svg%3e") no-repeat left 18px top 16px, + linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; + } + +html.js[dir="rtl"] .form-autocomplete:focus { + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18.8' viewBox='0 0 18 18.8'%3e %3cpath fill='%237e96a7' d='M17.8,17.4l-3.6-3.6c1.4-1.5,2.2-3.4,2.2-5.6c0-4.5-3.7-8.2-8.2-8.2S0,3.7,0,8.2s3.7,8.2,8.2,8.2c1.8,0,3.4-0.6,4.7-1.5l3.7,3.7c0.3,0.3,0.8,0.3,1.2,0C18.1,18.3,18.1,17.7,17.8,17.4z M8.2,14.7c-3.6,0-6.5-2.9-6.5-6.5s2.9-6.5,6.5-6.5s6.5,2.9,6.5,6.5S11.8,14.7,8.2,14.7z'/%3e%3c/svg%3e") no-repeat left 18px top 16px, + linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; + } + +html.js[dir="rtl"] .form-autocomplete.ui-autocomplete-loading { + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 10 10'%3e %3cstyle type='text/css'%3e%40keyframes s%7b0%25%7btransform:rotate(0deg) translate(-50%25,-50%25)%7d50%25%7btransform:rotate(430deg) translate(-50%25,-50%25);stroke-dashoffset:20%7d100%25%7btransform:rotate(720deg) translate(-50%25,-50%25)%7d%7dellipse%7banimation:s 1s linear infinite%7d%3c/style%3e %3cg transform='translate(5 5)'%3e %3cellipse fill='none' ry='4' rx='4' cy='5' cx='5' stroke='%237e96a7' stroke-width='1' stroke-dashoffset='6.125' stroke-dasharray='25' transform='translate(-5 -5)'/%3e %3c/g%3e%3c/svg%3e") no-repeat left 18px top 16px, + linear-gradient(to left, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa + } + +html.js[dir="rtl"] .form-autocomplete.ui-autocomplete-loading:hover { + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 10 10'%3e %3cstyle type='text/css'%3e%40keyframes s%7b0%25%7btransform:rotate(0deg) translate(-50%25,-50%25)%7d50%25%7btransform:rotate(430deg) translate(-50%25,-50%25);stroke-dashoffset:20%7d100%25%7btransform:rotate(720deg) translate(-50%25,-50%25)%7d%7dellipse%7banimation:s 1s linear infinite%7d%3c/style%3e %3cg transform='translate(5 5)'%3e %3cellipse fill='none' ry='4' rx='4' cy='5' cx='5' stroke='%237e96a7' stroke-width='1' stroke-dashoffset='6.125' stroke-dasharray='25' transform='translate(-5 -5)'/%3e %3c/g%3e%3c/svg%3e") no-repeat left 18px top 16px, + linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; + } + +html.js[dir="rtl"] .form-autocomplete.ui-autocomplete-loading:focus { + background: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 10 10'%3e %3cstyle type='text/css'%3e%40keyframes s%7b0%25%7btransform:rotate(0deg) translate(-50%25,-50%25)%7d50%25%7btransform:rotate(430deg) translate(-50%25,-50%25);stroke-dashoffset:20%7d100%25%7btransform:rotate(720deg) translate(-50%25,-50%25)%7d%7dellipse%7banimation:s 1s linear infinite%7d%3c/style%3e %3cg transform='translate(5 5)'%3e %3cellipse fill='none' ry='4' rx='4' cy='5' cx='5' stroke='%237e96a7' stroke-width='1' stroke-dashoffset='6.125' stroke-dasharray='25' transform='translate(-5 -5)'/%3e %3c/g%3e%3c/svg%3e") no-repeat left 18px top 16px, + linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; + } + +/* IE11 does not animate inline SVG. */ + +/* rtl:begin:ignore */ + +/* stylelint-disable-next-line selector-type-no-unknown */ + +_:-ms-fullscreen, +html[dir=ltr].js .form-autocomplete.ui-autocomplete-loading { + background: + url("../../images/throbber.gif") no-repeat right 18px top 16px / 1.125rem 1.125rem, + linear-gradient(to right, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa; +} + +/* stylelint-disable-next-line selector-type-no-unknown */ + +_:-ms-fullscreen, +html[dir=ltr].js .form-autocomplete.ui-autocomplete-loading:hover { + background: + url("../../images/throbber.gif") no-repeat right 18px top 16px / 1.125rem 1.125rem, + linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; +} + +/* stylelint-disable-next-line selector-type-no-unknown */ + +_:-ms-fullscreen, +html[dir=ltr].js .form-autocomplete.ui-autocomplete-loading:focus { + background: + url("../../images/throbber.gif") no-repeat right 18px top 16px / 1.125rem 1.125rem, + linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; +} + +/* stylelint-disable-next-line selector-type-no-unknown */ + +_:-ms-fullscreen, +html[dir=rtl].js .form-autocomplete.ui-autocomplete-loading { + background: + url("../../images/throbber.gif") no-repeat left 18px top 16px / 1.125rem 1.125rem, + linear-gradient(to left, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa; +} + +/* stylelint-disable-next-line selector-type-no-unknown */ + +_:-ms-fullscreen, +html[dir=rtl].js .form-autocomplete.ui-autocomplete-loading:hover { + background: + url("../../images/throbber.gif") no-repeat left 18px top 16px / 1.125rem 1.125rem, + linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; +} + +/* stylelint-disable-next-line selector-type-no-unknown */ + +_:-ms-fullscreen, +html[dir=rtl].js .form-autocomplete.ui-autocomplete-loading:focus { + background: + url("../../images/throbber.gif") no-repeat left 18px top 16px / 1.125rem 1.125rem, + linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; +} + +/* rtl:end:ignore */ diff --git a/core/themes/olivero/css/components/autocomplete-loading.module.pcss.css b/core/themes/olivero/css/components/autocomplete-loading.module.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..e104934e4bd6947bfeea83b41a5681a33efdd008 --- /dev/null +++ b/core/themes/olivero/css/components/autocomplete-loading.module.pcss.css @@ -0,0 +1,151 @@ +/** + * @file + * Visual styles for autocomplete input field. + */ + +@import "../base/variables.pcss.css"; + +:root { + --autocomplete-search-icon-url: url("../../images/magnifying-glass.svg"); + --autocomplete-throbber-icon-url: url("../../images/throbber.svg"); + --autocomplete-throbber-IE-icon-url: url("../../images/throbber.gif"); + --autocomplete-throbber-IE-size: 1.125rem 1.125rem; /* 18 18 */ + --autocomplete-icon-right-offset: var(--sp1); + --autocomplete-icon-top-offset: calc(var(--sp1) - var(--form-element-border-size-base)); +} + +html.js .form-autocomplete { + padding-inline-end: var(--sp3); + background: + var(--autocomplete-search-icon-url) no-repeat right var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset), + linear-gradient(to right, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95); + + &:hover { + background: + var(--autocomplete-search-icon-url) no-repeat right var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset), + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + } + + &:focus { + background: + var(--autocomplete-search-icon-url) no-repeat right var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset), + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + } + + &.ui-autocomplete-loading { + background: + var(--autocomplete-throbber-icon-url) no-repeat right var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset), + linear-gradient(to right, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95); + + &:hover { + background: + var(--autocomplete-throbber-icon-url) no-repeat right var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset), + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + } + + &:focus { + background: + var(--autocomplete-throbber-icon-url) no-repeat right var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset), + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + } + } +} + +html.js[dir="rtl"] .form-autocomplete { + background: + var(--autocomplete-search-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset), + linear-gradient(to left, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95); + + &:hover { + background: + var(--autocomplete-search-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset), + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + } + + &:focus { + background: + var(--autocomplete-search-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset), + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + } + + &.ui-autocomplete-loading { + background: + var(--autocomplete-throbber-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset), + linear-gradient(to left, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95); + + &:hover { + background: + var(--autocomplete-throbber-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset), + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + } + + &:focus { + background: + var(--autocomplete-throbber-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset), + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + } + } +} + +/* IE11 does not animate inline SVG. */ +/* rtl:begin:ignore */ +/* stylelint-disable-next-line selector-type-no-unknown */ +_:-ms-fullscreen, +html[dir=ltr].js .form-autocomplete.ui-autocomplete-loading { + background: + var(--autocomplete-throbber-IE-icon-url) no-repeat right var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset) / var(--autocomplete-throbber-IE-size), + linear-gradient(to right, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95); +} + +/* stylelint-disable-next-line selector-type-no-unknown */ +_:-ms-fullscreen, +html[dir=ltr].js .form-autocomplete.ui-autocomplete-loading:hover { + background: + var(--autocomplete-throbber-IE-icon-url) no-repeat right var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset) / var(--autocomplete-throbber-IE-size), + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); +} + +/* stylelint-disable-next-line selector-type-no-unknown */ +_:-ms-fullscreen, +html[dir=ltr].js .form-autocomplete.ui-autocomplete-loading:focus { + background: + var(--autocomplete-throbber-IE-icon-url) no-repeat right var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset) / var(--autocomplete-throbber-IE-size), + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); +} + +/* stylelint-disable-next-line selector-type-no-unknown */ +_:-ms-fullscreen, +html[dir=rtl].js .form-autocomplete.ui-autocomplete-loading { + background: + var(--autocomplete-throbber-IE-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset) / var(--autocomplete-throbber-IE-size), + linear-gradient(to left, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95); +} + +/* stylelint-disable-next-line selector-type-no-unknown */ +_:-ms-fullscreen, +html[dir=rtl].js .form-autocomplete.ui-autocomplete-loading:hover { + background: + var(--autocomplete-throbber-IE-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset) / var(--autocomplete-throbber-IE-size), + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); +} + +/* stylelint-disable-next-line selector-type-no-unknown */ +_:-ms-fullscreen, +html[dir=rtl].js .form-autocomplete.ui-autocomplete-loading:focus { + background: + var(--autocomplete-throbber-IE-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset) / var(--autocomplete-throbber-IE-size), + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); +} +/* rtl:end:ignore */ diff --git a/core/themes/olivero/css/components/block.css b/core/themes/olivero/css/components/block.css new file mode 100644 index 0000000000000000000000000000000000000000..fdfab5808cfc3e09bb148d48534303f4f66d9b67 --- /dev/null +++ b/core/themes/olivero/css/components/block.css @@ -0,0 +1,24 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Block styling. + */ + +.block__title { + margin-top: 0; + margin-bottom: 18px; + letter-spacing: 0.02em; + color: #6e7172; + font-size: 14px; + line-height: 18px; +} + +.site-footer .block__title { + color: #9ea0a1; +} diff --git a/core/themes/olivero/css/components/block.pcss.css b/core/themes/olivero/css/components/block.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..55ffdc7de0e36d5e47dbf7a9f34e85fb863ccbcc --- /dev/null +++ b/core/themes/olivero/css/components/block.pcss.css @@ -0,0 +1,18 @@ +/** + * @file + * Block styling. + */ + +@import "../base/variables.pcss.css"; + +.block__title { + margin-block: 0 var(--sp); + letter-spacing: 0.02em; + color: var(--color--gray-20); + font-size: var(--font-size-s); + line-height: var(--sp); +} + +.site-footer .block__title { + color: var(--color--gray-50); +} diff --git a/core/themes/olivero/css/components/book.css b/core/themes/olivero/css/components/book.css new file mode 100644 index 0000000000000000000000000000000000000000..374ac00e8547a6f82cdbf041b6d30aec5c963b0c --- /dev/null +++ b/core/themes/olivero/css/components/book.css @@ -0,0 +1,225 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Book module styling. + */ + +[dir="ltr"] .book-pager { + margin-left: 0 +} + +[dir="rtl"] .book-pager { + margin-right: 0 +} + +[dir="ltr"] .book-pager { + margin-right: 0 +} + +[dir="rtl"] .book-pager { + margin-left: 0 +} + +[dir="ltr"] .book-pager { + padding-left: 0 +} + +[dir="rtl"] .book-pager { + padding-right: 0 +} + +[dir="ltr"] .book-pager { + padding-right: 0 +} + +[dir="rtl"] .book-pager { + padding-left: 0 +} + +.book-pager { + display: flex; + flex-wrap: wrap; + margin-top: 0 18px; + padding-top: 0; + padding-bottom: 18px; + list-style: none; + border-bottom: solid 1px #0d77b5 +} + +.book-pager a { + text-decoration: none; + color: #0d77b5; + font-family: "Lora", "georgia", serif; + font-size: 18px; + font-weight: 600; + } + +.book-pager__item { + display: inline-block +} + +@media (min-width: 500px) { + +.book-pager__item { + flex: 0 0 33.33% +} + } + +@media (min-width: 500px) { + +.book-pager__item--center { + text-align: center +} + } + +@media (min-width: 500px) { + +[dir="ltr"] .book-pager__item--next { + margin-left: auto + } + +[dir="rtl"] .book-pager__item--next { + margin-right: auto + } + +[dir="ltr"] .book-pager__item--next { + text-align: right + } + +[dir="rtl"] .book-pager__item--next { + text-align: left + } + } + +.book-pager__link { + display: inline-flex; + align-items: center; +} + +[dir="ltr"] .book-pager__link--previous:before { + margin-right: 0.25em +} + +[dir="rtl"] .book-pager__link--previous:before { + margin-left: 0.25em +} + +[dir="ltr"] .book-pager__link--previous:before { + border-left: solid 3px currentColor +} + +[dir="rtl"] .book-pager__link--previous:before { + border-right: solid 3px currentColor +} + +.book-pager__link--previous:before { + display: block; + width: 9px; + height: 9px; + content: ""; + transform: rotate(-45deg); + border-top: solid 3px currentColor; + } + +[dir="ltr"] .book-pager__link--next:after { + margin-left: 0.25em +} + +[dir="rtl"] .book-pager__link--next:after { + margin-right: 0.25em +} + +[dir="ltr"] .book-pager__link--next:after { + border-left: solid 3px currentColor +} + +[dir="rtl"] .book-pager__link--next:after { + border-right: solid 3px currentColor +} + +.book-pager__link--next:after { + display: block; + width: 9px; + height: 9px; + content: ""; + transform: rotate(135deg); + border-top: solid 3px currentColor; + } + +[dir="ltr"] .book-navigation .menu { + margin-left: 0 +} + +[dir="rtl"] .book-navigation .menu { + margin-right: 0 +} + +[dir="ltr"] .book-navigation .menu { + margin-right: 0 +} + +[dir="rtl"] .book-navigation .menu { + margin-left: 0 +} + +[dir="ltr"] .book-navigation .menu { + padding-left: 0 +} + +[dir="rtl"] .book-navigation .menu { + padding-right: 0 +} + +[dir="ltr"] .book-navigation .menu { + padding-right: 0 +} + +[dir="rtl"] .book-navigation .menu { + padding-left: 0 +} + +.book-navigation .menu { + margin-top: 36px; + margin-bottom: 36px; + padding-top: 0; + padding-bottom: 0; + list-style: none + } + +[dir="ltr"] .book-navigation .menu li { + padding-left: 0 +} + +[dir="rtl"] .book-navigation .menu li { + padding-right: 0 +} + +[dir="ltr"] .book-navigation .menu li { + padding-right: 0 +} + +[dir="rtl"] .book-navigation .menu li { + padding-left: 0 +} + +.book-navigation .menu li { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + list-style: none; + } + +[dir="rtl"] .book-pager__link--previous:before { + transform: rotate(45deg); + } + +[dir="rtl"] .book-pager__link--next:after { + transform: rotate(-135deg); + } diff --git a/core/themes/olivero/css/components/book.pcss.css b/core/themes/olivero/css/components/book.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..64e3122055ea4278428ea2559d8e8801bb2453a0 --- /dev/null +++ b/core/themes/olivero/css/components/book.pcss.css @@ -0,0 +1,109 @@ +/** + * @file + * Book module styling. + */ + +@import "../base/variables.pcss.css"; + +.book-pager { + display: flex; + flex-wrap: wrap; + margin-block-start: 0 var(--sp); + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0 var(--sp); + padding-inline-start: 0; + padding-inline-end: 0; + list-style: none; + border-block-end: solid 1px var(--color--blue-20); + + & a { + text-decoration: none; + color: var(--color--blue-20); + font-family: var(--font-serif); + font-size: 18px; + font-weight: 600; + } +} + +.book-pager__item { + display: inline-block; + + @media (--sm) { + flex: 0 0 33.33%; + } +} + +.book-pager__item--center { + @media (--sm) { + text-align: center; + } +} + +.book-pager__item--next { + @media (--sm) { + margin-inline-start: auto; + text-align: end; + } +} + +.book-pager__link { + display: inline-flex; + align-items: center; +} + +.book-pager__link--previous { + &:before { + display: block; + width: var(--sp0-5); + height: var(--sp0-5); + margin-inline-end: 0.25em; + content: ""; + transform: rotate(-45deg); + border-block-start: solid 3px currentColor; + border-inline-start: solid 3px currentColor; + } +} + +.book-pager__link--next { + &:after { + display: block; + width: var(--sp0-5); + height: var(--sp0-5); + margin-inline-start: 0.25em; + content: ""; + transform: rotate(135deg); + border-block-start: solid 3px currentColor; + border-inline-start: solid 3px currentColor; + } +} + +.book-navigation { + & .menu { + margin-block: var(--sp2); + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + list-style: none; + + & li { + margin-block: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + list-style: none; + } + } +} + +[dir="rtl"] { + & .book-pager__link--previous:before { + transform: rotate(45deg); + } + + & .book-pager__link--next:after { + transform: rotate(-135deg); + } +} diff --git a/core/themes/olivero/css/components/breadcrumb.css b/core/themes/olivero/css/components/breadcrumb.css new file mode 100644 index 0000000000000000000000000000000000000000..b2aacd5f6251c5cc0a0732b397fa775f0088da4f --- /dev/null +++ b/core/themes/olivero/css/components/breadcrumb.css @@ -0,0 +1,216 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Breadcrumb region. + */ + +.breadcrumb { + position: relative; + font-size: 14px; + font-weight: bold; + line-height: 18px + + /* Shadow on the right side of breadcrumbs for narrow screens. */ +} + +[dir="ltr"] .breadcrumb:after { + right: -18px +} + +[dir="rtl"] .breadcrumb:after { + left: -18px +} + +.breadcrumb:after { + position: absolute; + top: 0; + width: 54px; + height: 18px; + content: ""; + background: linear-gradient(to left, #fff 0%, rgba(255, 255, 255, 0) 100%) /* LTR */ + } + +@media (min-width: 1000px) { + +.breadcrumb:after { + content: none + } + } + +@media (min-width: 1000px) { + +.breadcrumb { + position: static +} + } + +[dir="rtl"] .breadcrumb:after { + background: linear-gradient(to right, #fff 0%, rgba(255, 255, 255, 0) 100%); +} + +[dir="ltr"] .breadcrumb__content { + margin-right: -18px +} + +[dir="rtl"] .breadcrumb__content { + margin-left: -18px +} + +.breadcrumb__content { + overflow: auto; + -webkit-overflow-scrolling: touch +} + +@media (min-width: 1000px) { + +.breadcrumb__content { + margin: 0 +} + } + +[dir="ltr"] .breadcrumb__list { + margin-left: -18px +} + +[dir="rtl"] .breadcrumb__list { + margin-right: -18px +} + +[dir="ltr"] .breadcrumb__list { + margin-right: -18px +} + +[dir="rtl"] .breadcrumb__list { + margin-left: -18px +} + +[dir="ltr"] .breadcrumb__list { + padding-left: 18px +} + +[dir="rtl"] .breadcrumb__list { + padding-right: 18px +} + +[dir="ltr"] .breadcrumb__list { + padding-right: 0 +} + +[dir="rtl"] .breadcrumb__list { + padding-left: 0 +} + +.breadcrumb__list { + overflow-x: auto; + width: -webkit-max-content; + width: max-content; + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 18px; + list-style: none; + white-space: nowrap +} + +@media (min-width: 1000px) { + +[dir="ltr"] .breadcrumb__list { + margin-left: 0 + } + +[dir="rtl"] .breadcrumb__list { + margin-right: 0 + } + +[dir="ltr"] .breadcrumb__list { + margin-right: 0 + } + +[dir="rtl"] .breadcrumb__list { + margin-left: 0 + } + +[dir="ltr"] .breadcrumb__list { + padding-left: 0 + } + +[dir="rtl"] .breadcrumb__list { + padding-right: 0 + } + +.breadcrumb__list { + overflow: visible; + padding-bottom: 0; + white-space: normal +} + } + +.breadcrumb__item { + display: inline-block +} + +[dir="ltr"] .breadcrumb__item:nth-child(n+2):before { + margin-left: 16px; + margin-right: 20px +} + +[dir="rtl"] .breadcrumb__item:nth-child(n+2):before { + margin-right: 16px; + margin-left: 20px +} + +[dir="ltr"] .breadcrumb__item:nth-child(n+2):before { + border-right: 2px solid #5d7585 +} + +[dir="rtl"] .breadcrumb__item:nth-child(n+2):before { + border-left: 2px solid #5d7585 +} + +.breadcrumb__item:nth-child(n+2):before { + display: inline-block; + width: 8px; + height: 8px; + content: ""; + transform: rotate(45deg); /* LTR */ + border-top: 2px solid #5d7585; + } + +[dir="ltr"] .breadcrumb__item:last-child { + margin-right: 54px +} + +[dir="rtl"] .breadcrumb__item:last-child { + margin-left: 54px +} + +@media (min-width: 1000px) { + +[dir="ltr"] .breadcrumb__item:last-child { + margin-right: 0 + } + +[dir="rtl"] .breadcrumb__item:last-child { + margin-left: 0 + } + } + +[dir="rtl"] .breadcrumb__item:nth-child(n+2):before { + transform: rotate(-45deg); +} + +.breadcrumb__link { + text-decoration: none; + color: #0d77b5 +} + +.breadcrumb__link:hover, + .breadcrumb__link:focus { + text-decoration: underline; + } diff --git a/core/themes/olivero/css/components/breadcrumb.pcss.css b/core/themes/olivero/css/components/breadcrumb.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..3b2eb29d55631639fe3d3a0a3d4c35ca8ae0ef1b --- /dev/null +++ b/core/themes/olivero/css/components/breadcrumb.pcss.css @@ -0,0 +1,105 @@ +/** + * @file + * Breadcrumb region. + */ + +@import "../base/variables.pcss.css"; + +.breadcrumb { + position: relative; + font-size: 14px; + font-weight: bold; + line-height: var(--sp1); + + /* Shadow on the right side of breadcrumbs for narrow screens. */ + &:after { + position: absolute; + inset-block-start: 0; + inset-inline-end: calc(var(--sp1) * -1); + width: var(--sp3); + height: var(--sp1); + content: ""; + background: linear-gradient(to left, var(--color--white) 0%, rgba(255, 255, 255, 0) 100%); /* LTR */ + + @media (--lg) { + content: none; + } + } + + @media (--lg) { + position: static; + } +} + +[dir="rtl"] .breadcrumb:after { + background: linear-gradient(to right, var(--color--white) 0%, rgba(255, 255, 255, 0) 100%); +} + +.breadcrumb__content { + overflow: auto; + margin-inline-end: calc(var(--sp1) * -1); + -webkit-overflow-scrolling: touch; + + @media (--lg) { + margin: 0; + } +} + +.breadcrumb__list { + overflow-x: auto; + width: max-content; + margin-block: 0; + margin-inline-start: calc(var(--sp1) * -1); + margin-inline-end: calc(var(--sp1) * -1); + padding-block: 0 var(--sp1); + padding-inline-start: var(--sp1); + padding-inline-end: 0; + list-style: none; + white-space: nowrap; + + @media (--lg) { + overflow: visible; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block-end: 0; + padding-inline-start: 0; + white-space: normal; + } +} + +.breadcrumb__item { + display: inline-block; + + &:nth-child(n+2):before { + display: inline-block; + width: 8px; + height: 8px; + margin-inline: 16px 20px; + content: ""; + transform: rotate(45deg); /* LTR */ + border-block-start: 2px solid var(--color--gray-25); + border-inline-end: 2px solid var(--color--gray-25); + } + + &:last-child { + margin-inline-end: var(--sp3); + + @media (--lg) { + margin-inline-end: 0; + } + } +} + +[dir="rtl"] .breadcrumb__item:nth-child(n+2):before { + transform: rotate(-45deg); +} + +.breadcrumb__link { + text-decoration: none; + color: var(--color--blue-20); + + &:hover, + &:focus { + text-decoration: underline; + } +} diff --git a/core/themes/olivero/css/components/button.css b/core/themes/olivero/css/components/button.css new file mode 100644 index 0000000000000000000000000000000000000000..aca2570643d2fa20bf8c8e09af64eaa65cc0099e --- /dev/null +++ b/core/themes/olivero/css/components/button.css @@ -0,0 +1,226 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Buttons. + */ + +[dir="ltr"] .button { + margin-left: 0 +} + +[dir="rtl"] .button { + margin-right: 0 +} + +[dir="ltr"] .button { + margin-right: 18px +} + +[dir="rtl"] .button { + margin-left: 18px +} + +[dir="ltr"] .button { + padding-left: 27px +} + +[dir="rtl"] .button { + padding-right: 27px +} + +[dir="ltr"] .button { + padding-right: 27px +} + +[dir="rtl"] .button { + padding-left: 27px +} + +.button { + display: inline-block; + height: 54px; + margin-top: 18px; + margin-bottom: 18px; + padding-top: 18px; + padding-bottom: 18px; + cursor: pointer; + text-align: center; + text-decoration: none; + color: #0d77b5; + border: 2px solid #0d77b5; + border-radius: 2px; + background-color: #fff; + font-family: inherit; + font-size: 14px; + font-weight: 700; + line-height: 18px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-font-smoothing: antialiased +} + +.button:hover, + .button:focus { + text-decoration: none; + color: #2494db; + border-color: #2494db; + } + +.button:focus { + outline: 2px solid #53b0eb; + outline-offset: 2px; + box-shadow: 0 0 0 2px #fff, 0 0 0 4px #53b0eb, 0 0 36px rgba(83, 176, 235, 0.25); + } + +.button:active { + color: #0d77b5; + border-color: #0d77b5; + box-shadow: none; + } + +.button:disabled, + .button.is-disabled { + cursor: default; + color: #d7e1e8; + border-color: #d7e1e8; + } + +.button { + + /* + IE11 doesn't work properly on button elements so we only do + inline-flex on modern browsers. + */ +} + +@supports (display: inline-flex) { + +[dir="ltr"] .button { + padding-left: 27px + } + +[dir="rtl"] .button { + padding-right: 27px + } + +[dir="ltr"] .button { + padding-right: 27px + } + +[dir="rtl"] .button { + padding-left: 27px + } + +.button { + display: inline-flex; + align-items: center; + + /* Top padding accounts for font not being vertically centered within line-height. */ + padding-top: 1px; + padding-bottom: 0; + line-height: 18px +} + } + +/* No margin if is part of a menu. */ + +[dir="ltr"] .menu .button { + margin-left: 0 +} + +[dir="rtl"] .menu .button { + margin-right: 0 +} + +[dir="ltr"] .menu .button { + margin-right: 0 +} + +[dir="rtl"] .menu .button { + margin-left: 0 +} + +.menu .button { + margin-top: 0; + margin-bottom: 0; +} + +[dir="ltr"] .button--small { + padding-left: 27px +} + +[dir="rtl"] .button--small { + padding-right: 27px +} + +[dir="ltr"] .button--small { + padding-right: 27px +} + +[dir="rtl"] .button--small { + padding-left: 27px +} + +.button--small { + height: 45px; + padding-top: 13.5px; + padding-bottom: 13.5px; +} + +.button--primary { + color: #fff; + background-color: #0d77b5 +} + +.button--primary:hover, + .button--primary:focus { + color: #fff; + background-color: #2494db; + } + +.button--primary:active { + color: #fff; + background-color: #0d77b5; + } + +.button--primary:disabled, + .button--primary.is-disabled { + color: #fff; + background-color: #d7e1e8; + } + +[dir="ltr"] .button--icon-back:before { + margin-right: 0.5em +} + +[dir="rtl"] .button--icon-back:before { + margin-left: 0.5em +} + +[dir="ltr"] .button--icon-back:before { + border-left: solid 2px currentColor +} + +[dir="rtl"] .button--icon-back:before { + border-right: solid 2px currentColor +} + +.button--icon-back:before { + display: block; + width: 0.5em; + height: 0.5em; + content: ""; + transform: rotate(45deg); /* LTR */ + border-bottom: solid 2px currentColor; + } + +[dir="rtl"] .button--icon-back:before { + transform: rotate(-45deg); +} diff --git a/core/themes/olivero/css/components/button.pcss.css b/core/themes/olivero/css/components/button.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..718d019e9979486154d1807bc062a702d744b679 --- /dev/null +++ b/core/themes/olivero/css/components/button.pcss.css @@ -0,0 +1,128 @@ +/** + * @file + * Buttons. + */ + +@import "../base/variables.pcss.css"; + +:root { + --button-border-width: var(--form-element-border-size-base); +} + +.button { + display: inline-block; + height: var(--sp3); + margin-block: var(--sp1); + margin-inline-start: 0; + margin-inline-end: var(--sp1); + padding-block: calc((var(--sp3) - var(--line-height-s)) / 2); + padding-inline-start: var(--sp1-5); + padding-inline-end: var(--sp1-5); + cursor: pointer; + text-align: center; + text-decoration: none; + color: var(--color--blue-20); + border: var(--button-border-width) solid var(--color--blue-20); + border-radius: var(--border-radius-base); + background-color: var(--color--white); + font-family: inherit; + font-size: var(--font-size-s); + font-weight: 700; + line-height: var(--line-height-s); + appearance: none; + -webkit-font-smoothing: antialiased; + + &:hover, + &:focus { + text-decoration: none; + color: var(--color--blue-50); + border-color: var(--color--blue-50); + } + + &:focus { + outline: var(--outline--base); + outline-offset: var(--outline-offset); + box-shadow: var(--shadow-focusable); + } + + &:active { + color: var(--color--blue-20); + border-color: var(--color--blue-20); + box-shadow: none; + } + + &:disabled, + &.is-disabled { + cursor: default; + color: var(--color--gray-70); + border-color: var(--color--gray-70); + } + + /* + IE11 doesn't work properly on button elements so we only do + inline-flex on modern browsers. + */ + @supports (display: inline-flex) { + display: inline-flex; + align-items: center; + + /* Top padding accounts for font not being vertically centered within line-height. */ + padding-block: 1px 0; + padding-inline-start: var(--sp1-5); + padding-inline-end: var(--sp1-5); + line-height: var(--line-height-s); + } +} + +/* No margin if is part of a menu. */ +.menu .button { + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; +} + +.button--small { + height: var(--sp2-5); + padding-block: calc((var(--sp2-5) - var(--line-height-s)) / 2); + padding-inline-start: var(--sp1-5); + padding-inline-end: var(--sp1-5); +} + +.button--primary { + color: var(--color--white); + background-color: var(--color--blue-20); + + &:hover, + &:focus { + color: var(--color--white); + background-color: var(--color--blue-50); + } + + &:active { + color: var(--color--white); + background-color: var(--color--blue-20); + } + + &:disabled, + &.is-disabled { + color: var(--color--white); + background-color: var(--color--gray-70); + } +} + +.button--icon-back { + &:before { + display: block; + width: 0.5em; + height: 0.5em; + margin-inline-end: 0.5em; + content: ""; + transform: rotate(45deg); /* LTR */ + border-block-end: solid 2px currentColor; + border-inline-start: solid 2px currentColor; + } +} + +[dir="rtl"] .button--icon-back:before { + transform: rotate(-45deg); +} diff --git a/core/themes/olivero/css/components/cke-dialog.css b/core/themes/olivero/css/components/cke-dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..57584dd5f5498198e7250b7a4f19ac0de251d150 --- /dev/null +++ b/core/themes/olivero/css/components/cke-dialog.css @@ -0,0 +1,261 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ +/** + * @file + * CKE Dialogs. + */ +/** cspell:ignore acke */ +[dir="ltr"] .cke_dialog td,[dir="ltr"] + .cke_dialog th { + padding-left: 4.5px; +} +[dir="rtl"] .cke_dialog td,[dir="rtl"] + .cke_dialog th { + padding-right: 4.5px; +} +[dir="ltr"] .cke_dialog td,[dir="ltr"] + .cke_dialog th { + padding-right: 4.5px; +} +[dir="rtl"] .cke_dialog td,[dir="rtl"] + .cke_dialog th { + padding-left: 4.5px; +} +.cke_dialog td, + .cke_dialog th { + padding-top: 4.5px; + padding-bottom: 4.5px; + } +[dir="ltr"] .cke_dialog .cke_dialog_ui_hbox_last { + padding-left: 0; +} +[dir="rtl"] .cke_dialog .cke_dialog_ui_hbox_last { + padding-right: 0; +} +[dir="ltr"] .cke_dialog .cke_dialog_ui_hbox_last { + padding-right: 0; +} +[dir="rtl"] .cke_dialog .cke_dialog_ui_hbox_last { + padding-left: 0; +} +.cke_dialog .cke_dialog_ui_hbox_last { + padding-top: 1px; + padding-bottom: 0; + } +.cke_dialog .cke_dialog_contents_body .cke_dialog_ui_text, + .cke_dialog .cke_dialog_contents_body .cke_dialog_ui_select, + .cke_dialog .cke_dialog_contents_body .cke_dialog_ui_hbox_last > a.cke_dialog_ui_button { + margin-top: 9px; + } +.cke_dialog .cke_dialog_body label + .cke_dialog_ui_labeled_content { + width: 100% !important; /* Override inline width. */ + } +[dir="ltr"] .cke_dialog input.cke_dialog_ui_input_text,[dir="ltr"] + .cke_dialog input.cke_dialog_ui_input_password,[dir="ltr"] + .cke_dialog input.cke_dialog_ui_input_tel,[dir="ltr"] + .cke_dialog textarea.cke_dialog_ui_input_textarea { + padding-left: 24px; +} +[dir="rtl"] .cke_dialog input.cke_dialog_ui_input_text,[dir="rtl"] + .cke_dialog input.cke_dialog_ui_input_password,[dir="rtl"] + .cke_dialog input.cke_dialog_ui_input_tel,[dir="rtl"] + .cke_dialog textarea.cke_dialog_ui_input_textarea { + padding-right: 24px; +} +[dir="ltr"] .cke_dialog input.cke_dialog_ui_input_text,[dir="ltr"] + .cke_dialog input.cke_dialog_ui_input_password,[dir="ltr"] + .cke_dialog input.cke_dialog_ui_input_tel,[dir="ltr"] + .cke_dialog textarea.cke_dialog_ui_input_textarea { + padding-right: 20px; +} +[dir="rtl"] .cke_dialog input.cke_dialog_ui_input_text,[dir="rtl"] + .cke_dialog input.cke_dialog_ui_input_password,[dir="rtl"] + .cke_dialog input.cke_dialog_ui_input_tel,[dir="rtl"] + .cke_dialog textarea.cke_dialog_ui_input_textarea { + padding-left: 20px; +} +.cke_dialog input.cke_dialog_ui_input_text, + .cke_dialog input.cke_dialog_ui_input_password, + .cke_dialog input.cke_dialog_ui_input_tel, + .cke_dialog textarea.cke_dialog_ui_input_textarea { + padding-top: 13px; + padding-bottom: 13px; + color: #313637; + border-width: 2px 0 + } +.cke_dialog input.cke_dialog_ui_input_text:hover, .cke_dialog input.cke_dialog_ui_input_password:hover, .cke_dialog input.cke_dialog_ui_input_tel:hover, .cke_dialog textarea.cke_dialog_ui_input_textarea:hover { + border-width: 2px 0; + } +.cke_dialog .cke_dialog_ui_input_select { + display: block + } +[dir="ltr"] .cke_dialog .cke_dialog_ui_input_select select,[dir="ltr"] + .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select { + margin-left: 0; +} +[dir="rtl"] .cke_dialog .cke_dialog_ui_input_select select,[dir="rtl"] + .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select { + margin-right: 0; +} +[dir="ltr"] .cke_dialog .cke_dialog_ui_input_select select,[dir="ltr"] + .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select { + margin-right: 0; +} +[dir="rtl"] .cke_dialog .cke_dialog_ui_input_select select,[dir="rtl"] + .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select { + margin-left: 0; +} +[dir="ltr"] .cke_dialog .cke_dialog_ui_input_select select,[dir="ltr"] + .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select { + padding-left: 19.5px; +} +[dir="rtl"] .cke_dialog .cke_dialog_ui_input_select select,[dir="rtl"] + .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select { + padding-right: 19.5px; +} +[dir="ltr"] .cke_dialog .cke_dialog_ui_input_select select,[dir="ltr"] + .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select { + padding-right: 58.5px; +} +[dir="rtl"] .cke_dialog .cke_dialog_ui_input_select select,[dir="rtl"] + .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select { + padding-left: 58.5px; +} +.cke_dialog .cke_dialog_ui_input_select select, + .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select { + width: 100% !important; + height: 45px; + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + color: #313637; + border: 1px solid transparent; + border-width: 2px 0; + border-style: solid; + border-color: transparent; + border-top-left-radius: 0; /* LTR */ + border-top-right-radius: 2px; /* LTR */ + border-bottom-right-radius: 2px; /* LTR */ + border-bottom-left-radius: 0; /* LTR */ + outline: 1px solid transparent; + background-color: #f7f9fa; + line-height: 45px + } +.cke_dialog .cke_dialog_ui_input_select select:hover, + .cke_dialog .cke_dialog_ui_input_select select:focus, + .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select:hover, + .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select:focus { + border-color: #53b0eb; + background-image: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='10.5' viewBox='0 0 18 10.5'%3e %3cpath fill='%23fff' d='M18,1.5c0-0.1-0.1-0.3-0.2-0.4l-0.9-0.9c-0.2-0.2-0.6-0.2-0.8,0L9,7.3L1.9,0.2c-0.2-0.2-0.6-0.2-0.8,0L0.2,1.1c-0.2,0.2-0.2,0.6,0,0.8l8.4,8.4c0.2,0.2,0.6,0.2,0.8,0l8.4-8.4C17.9,1.8,18,1.6,18,1.5z'/%3e%3c/svg%3e"), + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='54' height='54' viewBox='0 0 54 54'%3e %3cpath fill='%2353b0eb' d='M0 0h54v54H0z'/%3e%3c/svg%3e"), + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='54' height='54' viewBox='0 0 54 54'%3e %3cpath fill='%2353b0eb' d='M0 0h54v54H0z'/%3e%3c/svg%3e"); + } +.cke_dialog .cke_dialog_ui_input_select select:focus, .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select:focus { + outline: 6px dashed transparent; + } +[dir="ltr"] .cke_dialog .cke_dialog_footer_buttons { + margin-left: 0; +} +[dir="rtl"] .cke_dialog .cke_dialog_footer_buttons { + margin-right: 0; +} +[dir="ltr"] .cke_dialog .cke_dialog_footer_buttons { + margin-right: 9px; +} +[dir="rtl"] .cke_dialog .cke_dialog_footer_buttons { + margin-left: 9px; +} +.cke_dialog .cke_dialog_footer_buttons { + margin-top: 9px; + margin-bottom: 9px + } +[dir="ltr"] .cke_dialog .cke_dialog_footer_buttons .cke_dialog_ui_hbox_last { + padding-left: 4.5px; +} +[dir="rtl"] .cke_dialog .cke_dialog_footer_buttons .cke_dialog_ui_hbox_last { + padding-right: 4.5px; +} +[dir="ltr"] .cke_dialog .cke_dialog_footer_buttons .cke_dialog_ui_hbox_last { + padding-right: 4.5px; +} +[dir="rtl"] .cke_dialog .cke_dialog_footer_buttons .cke_dialog_ui_hbox_last { + padding-left: 4.5px; +} +.cke_dialog .cke_dialog_footer_buttons .cke_dialog_ui_hbox_last { + padding-top: 4.5px; + padding-bottom: 4.5px; + } +[dir="ltr"] .cke_dialog .cke_dialog_footer_buttons a,[dir="ltr"] + .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button { + margin-left: 0; +} +[dir="rtl"] .cke_dialog .cke_dialog_footer_buttons a,[dir="rtl"] + .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button { + margin-right: 0; +} +[dir="ltr"] .cke_dialog .cke_dialog_footer_buttons a,[dir="ltr"] + .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button { + margin-right: 4.5px; +} +[dir="rtl"] .cke_dialog .cke_dialog_footer_buttons a,[dir="rtl"] + .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button { + margin-left: 4.5px; +} +.cke_dialog .cke_dialog_footer_buttons a, + .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button { + display: inline-block; + margin-top: 4.5px; + margin-bottom: 4.5px; + cursor: pointer; + text-align: center; + text-decoration: none; + color: #0d77b5; + border: 2px solid #0d77b5; + border-radius: 2px; + background-color: #fff; + font-family: inherit; + font-size: 14px; + font-weight: 700; + line-height: 18px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-font-smoothing: antialiased + } +.cke_dialog .cke_dialog_footer_buttons a:hover, + .cke_dialog .cke_dialog_footer_buttons a:focus, + .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button:hover, + .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button:focus { + text-decoration: none; + color: #2494db; + border-color: #2494db; + } +.cke_dialog .cke_dialog_footer_buttons a:focus, .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button:focus { + outline: 2px solid #53b0eb; + outline-offset: 2px; + box-shadow: 0 0 0 2px #fff, 0 0 0 4px #53b0eb, 0 0 36px rgba(83, 176, 235, 0.25); + } +.cke_dialog .cke_dialog_footer_buttons a.cke_dialog_ui_button_ok, .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button.cke_dialog_ui_button_ok { + color: #fff; + background-color: #0d77b5 + } +.cke_dialog .cke_dialog_footer_buttons a.cke_dialog_ui_button_ok:hover, + .cke_dialog .cke_dialog_footer_buttons a.cke_dialog_ui_button_ok:focus, + .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button.cke_dialog_ui_button_ok:hover, + .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button.cke_dialog_ui_button_ok:focus { + color: #fff; + background-color: #2494db; + } +[dir="rtl"] .cke_dialog .cke_dialog_ui_input_select select, + [dir="rtl"] .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select { + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; + } diff --git a/core/themes/olivero/css/components/cke-dialog.pcss.css b/core/themes/olivero/css/components/cke-dialog.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..e9382e14a92f43e6996a932bb9f5f32665566c7f --- /dev/null +++ b/core/themes/olivero/css/components/cke-dialog.pcss.css @@ -0,0 +1,165 @@ +/** + * @file + * CKE Dialogs. + */ +/** cspell:ignore acke */ + +@import "../base/variables.pcss.css"; + +:root { + --form-element-select-icon: url("../../images/chevron-down.svg"); + --form-element-select-bg: url("../../images/select-chevron-bg-default.svg"); + --form-element-select-bg--highlight: url("../../images/select-chevron-bg-highlight.svg"); +} + +.cke_dialog { + & td, + & th { + padding-block: var(--sp0-25); + padding-inline-start: var(--sp0-25); + padding-inline-end: var(--sp0-25); + } + + & .cke_dialog_ui_hbox_last { + padding-block-start: 1px; + padding-block-end: 0; + padding-inline-start: 0; + padding-inline-end: 0; + } + + & .cke_dialog_contents_body .cke_dialog_ui_text, + & .cke_dialog_contents_body .cke_dialog_ui_select, + & .cke_dialog_contents_body .cke_dialog_ui_hbox_last > a.cke_dialog_ui_button { + margin-block-start: var(--sp0-5); + } + + & .cke_dialog_body label + .cke_dialog_ui_labeled_content { + width: 100% !important; /* Override inline width. */ + } + + & input.cke_dialog_ui_input_text, + & input.cke_dialog_ui_input_password, + & input.cke_dialog_ui_input_tel, + & textarea.cke_dialog_ui_input_textarea { + padding-block: calc((var(--sp3) - (var(--font-size-base) * 1.5) - (var(--form-element-border-size-base) * 2)) / 2); + padding-inline-start: calc(var(--sp1) + var(--form-element-border-size-left)); + padding-inline-end: calc(var(--sp1) + var(--form-element-border-size-base)); + color: var(--color--gray-10); + border-width: var(--form-element-border-size-base) 0; + + &:hover { + border-width: var(--form-element-border-size-base) 0; + } + } + + & .cke_dialog_ui_input_select { + display: block; + + & select, + & .cke_dialog_ui_input_select { + width: 100% !important; + height: var(--sp2-5); + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: calc(var(--sp0-75) + var(--form-element-border-size-left)); + padding-inline-end: calc(var(--sp2-5) + var(--sp0-75)); + color: var(--color--gray-10); + border: 1px solid transparent; + border-width: var(--form-element-border-size-base) 0; + border-style: solid; + border-color: transparent; + border-top-left-radius: 0; /* LTR */ + border-top-right-radius: var(--border-radius-base); /* LTR */ + border-bottom-right-radius: var(--border-radius-base); /* LTR */ + border-bottom-left-radius: 0; /* LTR */ + outline: var(--outline--thin); + background-color: var(--color--gray-95); + line-height: var(--sp2-5); + + &:hover, + &:focus { + border-color: var(--color--blue-70); + background-image: + var(--form-element-select-icon), + var(--form-element-select-bg--highlight), + var(--form-element-select-bg--highlight); + } + + &:focus { + outline: var(--outline--thick); + } + } + } + + & .cke_dialog_footer_buttons { + margin-block-start: var(--sp0-5); + margin-block-end: var(--sp0-5); + margin-inline-start: 0; + margin-inline-end: var(--sp0-5); + + & .cke_dialog_ui_hbox_last { + padding-block: var(--sp0-25); + padding-inline-start: var(--sp0-25); + padding-inline-end: var(--sp0-25); + } + + & a, + & .acke_dialog_ui_button { + display: inline-block; + margin-block: var(--sp0-25); + margin-inline-start: 0; + margin-inline-end: var(--sp0-25); + cursor: pointer; + text-align: center; + text-decoration: none; + color: var(--color--blue-20); + border: var(--form-element-border-size-base) solid var(--color--blue-20); + border-radius: var(--border-radius-base); + background-color: var(--color--white); + font-family: inherit; + font-size: var(--font-size-s); + font-weight: 700; + line-height: var(--line-height-s); + appearance: none; + -webkit-font-smoothing: antialiased; + + &:hover, + &:focus { + text-decoration: none; + color: var(--color--blue-50); + border-color: var(--color--blue-50); + } + + &:focus { + outline: var(--outline--base); + outline-offset: var(--outline-offset); + box-shadow: var(--shadow-focusable); + } + + &.cke_dialog_ui_button_ok { + color: var(--color--white); + background-color: var(--color--blue-20); + + &:hover, + &:focus { + color: var(--color--white); + background-color: var(--color--blue-50); + } + } + } + } +} + +[dir="rtl"] .cke_dialog { + & .cke_dialog_ui_input_select { + & select, + & .cke_dialog_ui_input_select { + border-top-left-radius: var(--border-radius-base); + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: var(--border-radius-base); + } + } +} diff --git a/core/themes/olivero/css/components/comments.css b/core/themes/olivero/css/components/comments.css new file mode 100644 index 0000000000000000000000000000000000000000..9e6c6d5d089ea25d663bb1105c33470848042a9e --- /dev/null +++ b/core/themes/olivero/css/components/comments.css @@ -0,0 +1,461 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Comment section and individual comments. + */ + +.comments > .comment { + border-top: 2px solid #e7edf1 + } + +.comments > .comment ~ .comment { + margin-top: 36px; + } + +.comments__title { + display: flex; + align-items: center; + margin-top: 0; +} + +[dir="ltr"] .comments__count { + margin-left: 18px +} + +[dir="rtl"] .comments__count { + margin-right: 18px +} + +[dir="ltr"] .comments__count { + margin-right: 18px +} + +[dir="rtl"] .comments__count { + margin-left: 18px +} + +[dir="ltr"] .comments__count { + padding-left: 5px +} + +[dir="rtl"] .comments__count { + padding-right: 5px +} + +[dir="ltr"] .comments__count { + padding-right: 5px +} + +[dir="rtl"] .comments__count { + padding-left: 5px +} + +.comments__count { + position: relative; + display: inline-block; + min-width: 34px; + margin-top: 0; + margin-bottom: 9px; + padding-top: 0; + padding-bottom: 0; + text-align: center; + color: #fff; + border-radius: 2px; + background-color: #0d77b5; + font-size: 11px; + line-height: 21px +} + +[dir="ltr"] .comments__count:after { + left: 8px +} + +[dir="rtl"] .comments__count:after { + right: 8px +} + +[dir="ltr"] .comments__count:after { + border-right: 8px solid transparent +} + +[dir="rtl"] .comments__count:after { + border-left: 8px solid transparent +} + +.comments__count:after { + position: absolute; + bottom: -7px; + width: 0; + height: 0; + content: ""; + border-top: 7px solid #0d77b5; + } + +.comment-form { + padding-bottom: 36px; +} + +[dir="ltr"] .add-comment__form { + padding-left: 54px +} + +[dir="rtl"] .add-comment__form { + padding-right: 54px +} + +@media (min-width: 700px) { + +[dir="ltr"] .add-comment__form { + padding-left: 0 + } + +[dir="rtl"] .add-comment__form { + padding-right: 0 + } + } + +[dir="ltr"] .comment { + padding-left: 54px +} + +[dir="rtl"] .comment { + padding-right: 54px +} + +.comment { + position: relative; + padding-top: 36px +} + +.comment .text-content { + padding-bottom: 0; + font-size: 16px + } + +.comment .text-content blockquote { + font-size: 21px; + line-height: 36px; + } + +[dir="ltr"] .comment .links { + margin-left: 0 +} + +[dir="rtl"] .comment .links { + margin-right: 0 +} + +[dir="ltr"] .comment .links { + margin-right: 0 +} + +[dir="rtl"] .comment .links { + margin-left: 0 +} + +[dir="ltr"] .comment .links { + padding-left: 0 +} + +[dir="rtl"] .comment .links { + padding-right: 0 +} + +[dir="ltr"] .comment .links { + padding-right: 0 +} + +[dir="rtl"] .comment .links { + padding-left: 0 +} + +.comment .links { + margin-top: 18px; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0 + } + +.comment .links a { + text-decoration: none; + color: #0d77b5; + font-size: 14px; + font-weight: bold; + line-height: 18px + } + +.comment .links a:hover, + .comment .links a:focus { + text-decoration: underline; + } + +[dir="ltr"] .comment .links li { + margin-right: 18px +} + +[dir="rtl"] .comment .links li { + margin-left: 18px +} + +.comment .links li { + display: inline-block; + } + +@media (min-width: 700px) { + +[dir="ltr"] .comment { + padding-left: 0 + } + +[dir="rtl"] .comment { + padding-right: 0 + } + } + +.add-comment__picture-wrapper.comment-picture { + top: 36px; +} + +[dir="ltr"] .comment-picture__image { + left: 0 +} + +[dir="rtl"] .comment-picture__image { + right: 0 +} + +.comment-picture__image { + position: absolute; + overflow: hidden; + width: 36px; + height: 36px; + border-radius: 50%; + background-color: #e7edf1 +} + +.comment-picture__image *:not(img) { + display: inherit; + width: inherit; + height: inherit; + } + +.comment-picture__image img { + width: 100%; + height: 100%; + -o-object-fit: cover; + object-fit: cover + + /* @TODO: create image-style for profile's avatar to have image squared by default. */ + } + +@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) { + +.comment-picture__image img { + position: absolute; + /* stylelint-disable csstools/use-logical */ + top: 50%; + left: 50%; + /* stylelint-enable csstools/use-logical */ + width: 100%; + height: auto; + transform: translate(-50%, -50%) + } + } + +@media (min-width: 700px) { + +[dir="ltr"] .comment-picture__image { + left: -90px + } + +[dir="rtl"] .comment-picture__image { + right: -90px + } + +.comment-picture__image { + width: 54px; + height: 54px +} + } + +@media all and (-ms-high-contrast: active), (-ms-high-contrast: none) { + +.comment-picture__image { + position: relative +} + } + +@media (min-width: 700px) { + +[dir="ltr"] .indented .comment-picture__image { + left: -72px + } + +[dir="rtl"] .indented .comment-picture__image { + right: -72px + } + +.indented .comment-picture__image { + width: 36px; + height: 36px +} + } + +.comment__meta * { + display: inline; + } + +[dir="ltr"] .comment__author { + margin-right: 18px +} + +[dir="rtl"] .comment__author { + margin-left: 18px +} + +.comment__author { + font-family: "metropolis", sans-serif; + font-size: 16px; + font-weight: 700; + line-height: 18px +} + +.comment__author a { + text-decoration: none; + } + +.comment__time { + margin: 0; + color: #6e7172; + font-family: "metropolis", sans-serif; + font-size: 14px; + line-height: 18px; +} + +[dir="ltr"] .indented { + margin-left: 36px +} + +[dir="rtl"] .indented { + margin-right: 36px +} + +[dir="ltr"] .indented > .comment:not(:last-of-type):not(.has-children):before { + left: -54px +} + +[dir="rtl"] .indented > .comment:not(:last-of-type):not(.has-children):before { + right: -54px +} + +[dir="ltr"] .indented > .comment:not(:last-of-type):not(.has-children):before { + border-left: solid 1px #e7edf1 +} + +[dir="rtl"] .indented > .comment:not(:last-of-type):not(.has-children):before { + border-right: solid 1px #e7edf1 +} + +.indented > .comment:not(:last-of-type):not(.has-children):before { + position: absolute; + top: 36px; /* Comment's padding-top */ + width: 0; + height: 100%; + content: "" + } + +@media (min-width: 700px) { + +[dir="ltr"] .indented > .comment:not(:last-of-type):not(.has-children):before { + left: -54px + } + +[dir="rtl"] .indented > .comment:not(:last-of-type):not(.has-children):before { + right: -54px + } + } + +@media (min-width: 700px) { + +[dir="ltr"] .indented { + margin-left: 72px + } + +[dir="rtl"] .indented { + margin-right: 72px + } + } + +[dir="ltr"] .show-hide-btn { + margin-left: 54px +} + +[dir="rtl"] .show-hide-btn { + margin-right: 54px +} + +[dir="ltr"] .show-hide-btn { + margin-right: 0 +} + +[dir="rtl"] .show-hide-btn { + margin-left: 0 +} + +[dir="ltr"] .show-hide-btn { + padding-left: 0 +} + +[dir="rtl"] .show-hide-btn { + padding-right: 0 +} + +[dir="ltr"] .show-hide-btn { + padding-right: 0 +} + +[dir="rtl"] .show-hide-btn { + padding-left: 0 +} + +.show-hide-btn { + margin-top: 36px; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + cursor: pointer; + color: #313637; + border: 0; + background: none; + font-size: 14px; + font-weight: 600; + line-height: 18px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +.show-hide-btn[aria-expanded="true"]:after { + content: "\0020 -"; + } + +.show-hide-btn[aria-expanded="false"]:after { + content: "\0020 +"; + } + +@media (min-width: 700px) { + +[dir="ltr"] .show-hide-btn { + margin-left: 0 + } + +[dir="rtl"] .show-hide-btn { + margin-right: 0 + } + } diff --git a/core/themes/olivero/css/components/comments.pcss.css b/core/themes/olivero/css/components/comments.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..cb095913ae143ba0ec3b052fc5cd04f767262a86 --- /dev/null +++ b/core/themes/olivero/css/components/comments.pcss.css @@ -0,0 +1,250 @@ +/** + * @file + * Comment section and individual comments. + */ + +@import "../base/variables.pcss.css"; + +:root { + --comment-indentation: var(--sp2); + --comment-indentation--md: var(--sp4); +} + +.comments { + & > .comment { + border-block-start: 2px solid var(--color--gray-80); + + & ~ .comment { + margin-block-start: var(--sp2); + } + } +} + +.comments__title { + display: flex; + align-items: center; + margin-block-start: 0; +} + +.comments__count { + position: relative; + display: inline-block; + min-width: 34px; + margin-block-start: 0; + margin-block-end: var(--sp0-5); + margin-inline-start: var(--sp); + margin-inline-end: var(--sp); + padding-block: 0; + padding-inline-start: 5px; + padding-inline-end: 5px; + text-align: center; + color: var(--color--white); + border-radius: 2px; + background-color: var(--color--blue-20); + font-size: 11px; + line-height: 21px; + + &:after { + position: absolute; + inset-block-end: -7px; + inset-inline-start: 8px; + width: 0; + height: 0; + content: ""; + border-block-start: 7px solid var(--color--blue-20); + border-inline-end: 8px solid transparent; + } +} + +.comment-form { + padding-block-end: var(--sp2); +} + +.add-comment__form { + padding-inline-start: var(--sp3); + + @media (--grid-md) { + padding-inline-start: 0; + } +} + +.comment { + position: relative; + padding-block-start: var(--sp2); + padding-inline-start: var(--sp3); + + & .text-content { + padding-block-end: 0; + font-size: 16px; + + & blockquote { + font-size: 21px; + line-height: var(--sp2); + } + } + + & .links { + margin-block: var(--sp) 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + + & a { + text-decoration: none; + color: var(--color--blue-20); + font-size: 14px; + font-weight: bold; + line-height: var(--sp); + + &:hover, + &:focus { + text-decoration: underline; + } + } + + & li { + display: inline-block; + margin-inline-end: var(--sp); + } + } + + @media (--grid-md) { + padding-inline-start: 0; + } +} + +.add-comment__picture-wrapper.comment-picture { + inset-block-start: calc(var(--line-height-base) + var(--sp0-5)); +} + +.comment-picture__image { + position: absolute; + inset-inline-start: 0; + overflow: hidden; + width: var(--sp2); + height: var(--sp2); + border-radius: 50%; + background-color: var(--color--gray-80); + + & *:not(img) { + display: inherit; + width: inherit; + height: inherit; + } + + & img { + width: 100%; + height: 100%; + object-fit: cover; + + /* @TODO: create image-style for profile's avatar to have image squared by default. */ + @media all and (-ms-high-contrast: active), (-ms-high-contrast: none) { + position: absolute; + /* stylelint-disable csstools/use-logical */ + top: 50%; + left: 50%; + /* stylelint-enable csstools/use-logical */ + width: 100%; + height: auto; + transform: translate(-50%, -50%); + } + } + + @media (--grid-md) { + inset-inline-start: calc(-1 * var(--sp5)); + width: var(--sp3); + height: var(--sp3); + } + + @media all and (-ms-high-contrast: active), (-ms-high-contrast: none) { + position: relative; + } +} + +.indented .comment-picture__image { + @media (--grid-md) { + inset-inline-start: calc(-1 * var(--sp4)); + width: var(--sp2); + height: var(--sp2); + } +} + +.comment__meta { + & * { + display: inline; + } +} + +.comment__author { + margin-inline-end: var(--sp); + font-family: var(--font-sans); + font-size: 16px; + font-weight: 700; + line-height: var(--sp); + + & a { + text-decoration: none; + } +} + +.comment__time { + margin: 0; + color: var(--color--gray-20); + font-family: var(--font-sans); + font-size: 14px; + line-height: var(--sp); +} + +.indented { + margin-inline-start: var(--comment-indentation); + + & > .comment:not(:last-of-type):not(.has-children):before { + position: absolute; + inset-block-start: var(--sp2); + inset-inline-start: calc(-1 * var(--comment-indentation) - var(--sp)); /* Comment's padding-top */ + width: 0; + height: 100%; + content: ""; + border-inline-start: solid 1px var(--color--gray-80); + + @media (--md) { + inset-inline-start: calc(-1 * var(--comment-indentation--md) + var(--sp)); + } + } + + @media (--md) { + margin-inline-start: var(--comment-indentation--md); + } +} + +.show-hide-btn { + margin-block-start: var(--sp2); + margin-block-end: 0; + margin-inline-start: var(--sp3); + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + cursor: pointer; + color: var(--color--gray-10); + border: 0; + background: none; + font-size: 14px; + font-weight: 600; + line-height: 18px; + appearance: none; + + &[aria-expanded="true"]:after { + content: "\0020 -"; + } + + &[aria-expanded="false"]:after { + content: "\0020 +"; + } + + @media (--grid-md) { + margin-inline-start: 0; + } +} diff --git a/core/themes/olivero/css/components/container-inline.module.css b/core/themes/olivero/css/components/container-inline.module.css new file mode 100644 index 0000000000000000000000000000000000000000..b88a797f7e0c5c0d6a75c4df13193c6bd73d3516 --- /dev/null +++ b/core/themes/olivero/css/components/container-inline.module.css @@ -0,0 +1,27 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Inline items. + */ + +.container-inline div, +.container-inline label { + display: inline-block; +} + +.form-items-inline { + margin-top: -0.125em; + margin-bottom: -0.125em; /* 2px */ +} + +.form-items-inline > .form-item { + display: inline-block; + margin-top: 0.125em; + margin-bottom: 0.125em; +} diff --git a/core/themes/olivero/css/components/container-inline.module.pcss.css b/core/themes/olivero/css/components/container-inline.module.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..f6d46f154ac17e8bc65125205809445f58fc741c --- /dev/null +++ b/core/themes/olivero/css/components/container-inline.module.pcss.css @@ -0,0 +1,18 @@ +/** + * @file + * Inline items. + */ + +.container-inline div, +.container-inline label { + display: inline-block; +} + +.form-items-inline { + margin-block: -0.125em; /* 2px */ +} + +.form-items-inline > .form-item { + display: inline-block; + margin-block: 0.125em; +} diff --git a/core/themes/olivero/css/components/content-moderation.css b/core/themes/olivero/css/components/content-moderation.css new file mode 100644 index 0000000000000000000000000000000000000000..7044a90a0c339866f48ca10082520f725a2b64cd --- /dev/null +++ b/core/themes/olivero/css/components/content-moderation.css @@ -0,0 +1,158 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Styles for content moderation toolbar. + */ + +[dir="ltr"] .entity-moderation-form { + padding-left: 18px +} + +[dir="rtl"] .entity-moderation-form { + padding-right: 18px +} + +[dir="ltr"] .entity-moderation-form { + padding-right: 18px +} + +[dir="rtl"] .entity-moderation-form { + padding-left: 18px +} + +.entity-moderation-form { + flex-direction: column; + border: 1px solid #e7edf1; + background-color: #f7f9fa +} + +.entity-moderation-form select, + .entity-moderation-form input:not([type="submit"]) { + background-color: #fff; + } + +@media (min-width: 700px) { + +.entity-moderation-form { + flex-direction: row +} + } + +[dir="ltr"] .entity-moderation-form__item { + margin-right: 18px +} + +[dir="rtl"] .entity-moderation-form__item { + margin-left: 18px +} + +.entity-moderation-form__item { + flex-basis: 0 +} + +[dir="ltr"] .entity-moderation-form__item:last-child { + margin-right: 0 +} + +[dir="rtl"] .entity-moderation-form__item:last-child { + margin-left: 0 +} + +.entity-moderation-form__item:last-child { + align-self: flex-start + } + +@media (min-width: 700px) { + +.entity-moderation-form__item:last-child { + align-self: flex-end + } + } + +[dir="ltr"] .layout--content-narrow .entity-moderation-form,[dir="ltr"] .layout--pass--content-narrow > * .entity-moderation-form,[dir="ltr"] .layout--content-medium .entity-moderation-form,[dir="ltr"] .layout--pass--content-medium > * .entity-moderation-form { + margin-left: 0 +} + +[dir="rtl"] .layout--content-narrow .entity-moderation-form,[dir="rtl"] .layout--pass--content-narrow > * .entity-moderation-form,[dir="rtl"] .layout--content-medium .entity-moderation-form,[dir="rtl"] .layout--pass--content-medium > * .entity-moderation-form { + margin-right: 0 +} + +.layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form { + width: 100% + } + +@supports ((width: -webkit-max-content) or (width: max-content)) { + +.layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form { + width: -webkit-max-content; + width: max-content + } + } + +@media (min-width: 700px) { + +[dir="ltr"] .layout--content-narrow .entity-moderation-form,[dir="ltr"] .layout--pass--content-narrow > * .entity-moderation-form,[dir="ltr"] .layout--content-medium .entity-moderation-form,[dir="ltr"] .layout--pass--content-medium > * .entity-moderation-form { + margin-left: calc(-2*((100vw - 504px)/14 + 36px)) + } + +[dir="rtl"] .layout--content-narrow .entity-moderation-form,[dir="rtl"] .layout--pass--content-narrow > * .entity-moderation-form,[dir="rtl"] .layout--content-medium .entity-moderation-form,[dir="rtl"] .layout--pass--content-medium > * .entity-moderation-form { + margin-right: calc(-2*((100vw - 504px)/14 + 36px)) + } + +.layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form { + width: calc(14*(100vw - 504px)/14 + 468px); + margin-top: 36px; + margin-bottom: 72px + } + } + +@media (min-width: 1000px) { + +[dir="ltr"] .layout--content-narrow .entity-moderation-form,[dir="ltr"] .layout--pass--content-narrow > * .entity-moderation-form,[dir="ltr"] .layout--content-medium .entity-moderation-form,[dir="ltr"] .layout--pass--content-medium > * .entity-moderation-form { + margin-left: calc(-1*((100vw - 519px)/14 + 36px)) + } + +[dir="rtl"] .layout--content-narrow .entity-moderation-form,[dir="rtl"] .layout--pass--content-narrow > * .entity-moderation-form,[dir="rtl"] .layout--content-medium .entity-moderation-form,[dir="rtl"] .layout--pass--content-medium > * .entity-moderation-form { + margin-right: calc(-1*((100vw - 519px)/14 + 36px)) + } + +.layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form { + width: calc(12*(100vw - 519px)/14 + 396px) + } + } + +@media (min-width: 1200px) { + +[dir="ltr"] .layout--content-narrow .entity-moderation-form,[dir="ltr"] .layout--pass--content-narrow > * .entity-moderation-form,[dir="ltr"] .layout--content-medium .entity-moderation-form,[dir="ltr"] .layout--pass--content-medium > * .entity-moderation-form { + margin-left: calc(-1*((100vw - 645px)/14 + 36px)) + } + +[dir="rtl"] .layout--content-narrow .entity-moderation-form,[dir="rtl"] .layout--pass--content-narrow > * .entity-moderation-form,[dir="rtl"] .layout--content-medium .entity-moderation-form,[dir="rtl"] .layout--pass--content-medium > * .entity-moderation-form { + margin-right: calc(-1*((100vw - 645px)/14 + 36px)) + } + +.layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form { + width: calc(12*(100vw - 645px)/14 + 396px) + } + } + +@media (min-width: 1440px) { + +[dir="ltr"] .layout--content-narrow .entity-moderation-form,[dir="ltr"] .layout--pass--content-narrow > * .entity-moderation-form,[dir="ltr"] .layout--content-medium .entity-moderation-form,[dir="ltr"] .layout--pass--content-medium > * .entity-moderation-form { + margin-left: 0 + } + +[dir="rtl"] .layout--content-narrow .entity-moderation-form,[dir="rtl"] .layout--pass--content-narrow > * .entity-moderation-form,[dir="rtl"] .layout--content-medium .entity-moderation-form,[dir="rtl"] .layout--pass--content-medium > * .entity-moderation-form { + margin-right: 0 + } + +.layout--content-narrow .entity-moderation-form, .layout--pass--content-narrow > * .entity-moderation-form, .layout--content-medium .entity-moderation-form, .layout--pass--content-medium > * .entity-moderation-form { + width: 974.57143px + } + } diff --git a/core/themes/olivero/css/components/content-moderation.pcss.css b/core/themes/olivero/css/components/content-moderation.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..8b708ca05f676df84be304f04655f4b61b8c34e4 --- /dev/null +++ b/core/themes/olivero/css/components/content-moderation.pcss.css @@ -0,0 +1,72 @@ +/** + * @file + * Styles for content moderation toolbar. + */ + +@import "../base/variables.pcss.css"; + +.entity-moderation-form { + flex-direction: column; + padding-inline-start: var(--sp); + padding-inline-end: var(--sp); + border: 1px solid var(--color--gray-80); + background-color: var(--color--gray-95); + + & select, + & input:not([type="submit"]) { + background-color: var(--color--white); + } + + @media (--md) { + flex-direction: row; + } +} + +.entity-moderation-form__item { + flex-basis: 0; + margin-inline-end: var(--sp); + + &:last-child { + align-self: flex-start; + margin-inline-end: 0; + + @media (--md) { + align-self: flex-end; + } + } +} + +.layout--content-narrow, +.layout--pass--content-narrow > *, +.layout--content-medium, +.layout--pass--content-medium > * { + & .entity-moderation-form { + width: 100%; + margin-inline-start: 0; + + @supports (width: max-content) { + width: max-content; + } + + @media (--grid-md) { + width: calc(14 * var(--grid-col-width--md) + 13 * var(--grid-gap--md)); + margin-block: var(--sp2) var(--sp4); + margin-inline-start: calc(-2 * ((var(--grid-col-width--md) + var(--grid-gap--md)))); + } + + @media (--lg) { + width: calc(12 * var(--grid-col-width--lg) + 11 * var(--grid-gap--lg)); + margin-inline-start: calc(-1 * (var(--grid-col-width--lg) + var(--grid-gap--lg))); + } + + @media (--nav) { + width: calc(12 * var(--grid-col-width--nav) + 11 * var(--grid-gap--nav)); + margin-inline-start: calc(-1 * (var(--grid-col-width--nav) + var(--grid-gap--nav))); + } + + @media (--grid-max) { + width: calc(10 * var(--grid-col-width--max) + 11 * var(--grid-gap--max)); + margin-inline-start: 0; + } + } +} diff --git a/core/themes/olivero/css/components/details.css b/core/themes/olivero/css/components/details.css new file mode 100644 index 0000000000000000000000000000000000000000..1dc0ccf82525efec21486c32b6b0b3739bf2ea2b --- /dev/null +++ b/core/themes/olivero/css/components/details.css @@ -0,0 +1,253 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Collapsible details. + */ + +.olivero-details { + display: block; + margin-top: 18px; + margin-bottom: 18px; + color: inherit; + border: 1px solid #e7edf1; + border-radius: 2px; + box-shadow: 0 1px 4px #d7e1e8; +} + +/* Details summary styles */ + +[dir="ltr"] .olivero-details__summary { + padding-left: 36px; +} + +[dir="rtl"] .olivero-details__summary { + padding-right: 36px; +} + +[dir="ltr"] .olivero-details__summary { + padding-right: 18px; +} + +[dir="rtl"] .olivero-details__summary { + padding-left: 18px; +} + +.olivero-details__summary { + position: relative; + padding-top: 18px; + padding-bottom: 18px; + list-style: none; + cursor: pointer; + transition: background-color 0.12s ease-in-out; + word-wrap: break-word; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto; + color: inherit; + background-color: #f7f9fa; + font-size: 18px; + font-weight: 700; + line-height: 18px; +} + +/* Arrow icon */ + +[dir="ltr"] .olivero-details__summary:before,[dir="ltr"] +.collapse-processed > .olivero-details__summary .details-title:before { + left: 13.5px; +} + +[dir="rtl"] .olivero-details__summary:before,[dir="rtl"] +.collapse-processed > .olivero-details__summary .details-title:before { + right: 13.5px; +} + +.olivero-details__summary:before, +.collapse-processed > .olivero-details__summary .details-title:before { + position: absolute; + top: 50%; + display: block; + width: 10px; + height: 10px; + content: ""; + transform: translateY(-50%) rotate(45deg); /* LTR */ + border-top: solid 2px currentColor; + border-right: solid 2px currentColor; +} + +[dir="rtl"] .olivero-details__summary:before, + [dir="rtl"] .collapse-processed > .olivero-details__summary .details-title:before { + transform: translateY(-50%) rotate(-135deg); + } + +/* Pseudo-selector to manage focus styles */ + +.olivero-details__summary:after, +.collapse-processed > .olivero-details__summary .details-title:after { + position: absolute; + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; + content: ""; + pointer-events: none; + opacity: 0; + border-radius: 2px; + box-shadow: inset 0 0 0 2px #53b0eb; +} + +/* Hide the marker */ + +.olivero-details__summary::-webkit-details-marker { + display: none; +} + +/* Disable default outline for summary, since we have own implementation */ + +.olivero-details__summary:focus { + outline: none; +} + +/* Details summary, hover state */ + +.olivero-details__summary:hover { + background-color: #e7edf1; +} + +/* Details summary, focus and active states */ + +.olivero-details__summary:focus:after, +.olivero-details__summary:active:after, +.collapse-processed > .olivero-details__summary .details-title:focus:after, +.collapse-processed > .olivero-details__summary .details-title:active:after { + opacity: 1; +} + +/* Rotate arrow icon of the details summary, when details expanded */ + +.olivero-details[open] > .olivero-details__summary::before, +.collapse-processed[open] > .olivero-details__summary .details-title::before { + margin-top: -2px; + transform: translateY(-50%) rotate(135deg); +} + +/* Collapse processed for non-supporting browsers like IE or Edge */ + +[dir="ltr"] .collapse-processed > .olivero-details__summary { + padding-left: 0; +} + +[dir="rtl"] .collapse-processed > .olivero-details__summary { + padding-right: 0; +} + +[dir="ltr"] .collapse-processed > .olivero-details__summary { + padding-right: 0; +} + +[dir="rtl"] .collapse-processed > .olivero-details__summary { + padding-left: 0; +} + +.collapse-processed > .olivero-details__summary { + padding-top: 0; + padding-bottom: 0 +} + +.collapse-processed > .olivero-details__summary:before { + content: none; + } + +.collapse-processed > .olivero-details__summary:after { + content: none; + } + +[dir="ltr"] .collapse-processed > .olivero-details__summary .details-title { + padding-left: 36px; +} + +[dir="rtl"] .collapse-processed > .olivero-details__summary .details-title { + padding-right: 36px; +} + +[dir="ltr"] .collapse-processed > .olivero-details__summary .details-title { + padding-right: 18px; +} + +[dir="rtl"] .collapse-processed > .olivero-details__summary .details-title { + padding-left: 18px; +} + +.collapse-processed > .olivero-details__summary .details-title { + position: relative; + display: block; + padding-top: 18px; + padding-bottom: 18px; + transition: background-color 0.12s ease-in-out; + text-decoration: none; + color: inherit; + background-color: #f7f9fa; +} + +.collapse-processed > .olivero-details__summary .details-title:focus { + outline: none; +} + +.collapse-processed > .olivero-details__summary .details-title:hover { + background-color: #e7edf1; +} + +@media screen and (-ms-high-contrast: active) { + .collapse-processed > .olivero-details__summary .details-title::after { + top: -5px; + right: -5px; + bottom: -5px; + left: -5px; + border: 2px dotted; + } +} + +/* Details content wrapper */ + +.olivero-details__wrapper { + margin: 18px +} + +@media (min-width: 1000px) { + +[dir="ltr"] .olivero-details__wrapper { + margin-left: 36px; + } + +[dir="rtl"] .olivero-details__wrapper { + margin-right: 36px; + } + +[dir="ltr"] .olivero-details__wrapper { + margin-right: 36px; + } + +[dir="rtl"] .olivero-details__wrapper { + margin-left: 36px; + } + +.olivero-details__wrapper { + margin-top: 27px; + margin-bottom: 27px +} + } + +/* Description */ + +.olivero-details__description { + margin-bottom: 18px; + color: #313637; + font-size: 13px; + line-height: 18px; +} diff --git a/core/themes/olivero/css/components/details.pcss.css b/core/themes/olivero/css/components/details.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..1ebc06cf6f8c1283ceaa9c96ec2b65331d7422b5 --- /dev/null +++ b/core/themes/olivero/css/components/details.pcss.css @@ -0,0 +1,164 @@ +/** + * @file + * Collapsible details. + */ + +@import "../base/variables.pcss.css"; + +:root { + --details-border-width: 1px; + --details-summary-transition: background-color 0.12s ease-in-out; +} + +.olivero-details { + display: block; + margin-block: var(--sp1); + color: inherit; + border: var(--details-border-width) solid var(--color--gray-80); + border-radius: var(--border-radius-base); + box-shadow: 0 1px 4px var(--color--gray-70); +} + +/* Details summary styles */ +.olivero-details__summary { + position: relative; + padding-block: var(--sp1); + padding-inline-start: var(--sp2); + padding-inline-end: var(--sp1); + list-style: none; + cursor: pointer; + transition: var(--details-summary-transition); + word-wrap: break-word; + hyphens: auto; + color: inherit; + background-color: var(--color--gray-95); + font-size: var(--line-height-s); + font-weight: 700; + line-height: var(--sp1); +} + +/* Arrow icon */ +.olivero-details__summary:before, +.collapse-processed > .olivero-details__summary .details-title:before { + position: absolute; + inset-block-start: 50%; + inset-inline-start: var(--sp0-75); + display: block; + width: 10px; + height: 10px; + content: ""; + transform: translateY(-50%) rotate(45deg); /* LTR */ + border-top: solid 2px currentColor; + border-right: solid 2px currentColor; +} + +[dir="rtl"] { + & .olivero-details__summary:before, + & .collapse-processed > .olivero-details__summary .details-title:before { + transform: translateY(-50%) rotate(-135deg); + } +} + +/* Pseudo-selector to manage focus styles */ +.olivero-details__summary:after, +.collapse-processed > .olivero-details__summary .details-title:after { + position: absolute; + inset: calc(var(--details-border-width) * -1); + content: ""; + pointer-events: none; + opacity: 0; + border-radius: var(--border-radius-base); + box-shadow: inset 0 0 0 2px var(--color--blue-70); +} + +/* Hide the marker */ +.olivero-details__summary::-webkit-details-marker { + display: none; +} + +/* Disable default outline for summary, since we have own implementation */ +.olivero-details__summary:focus { + outline: none; +} + +/* Details summary, hover state */ +.olivero-details__summary:hover { + background-color: var(--color--gray-80); +} + +/* Details summary, focus and active states */ +.olivero-details__summary:focus:after, +.olivero-details__summary:active:after, +.collapse-processed > .olivero-details__summary .details-title:focus:after, +.collapse-processed > .olivero-details__summary .details-title:active:after { + opacity: 1; +} + +/* Rotate arrow icon of the details summary, when details expanded */ +.olivero-details[open] > .olivero-details__summary::before, +.collapse-processed[open] > .olivero-details__summary .details-title::before { + margin-block-start: -2px; + transform: translateY(-50%) rotate(135deg); +} + +/* Collapse processed for non-supporting browsers like IE or Edge */ +.collapse-processed > .olivero-details__summary { + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + + &:before { + content: none; + } + + &:after { + content: none; + } +} + +.collapse-processed > .olivero-details__summary .details-title { + position: relative; + display: block; + padding-block: var(--sp1); + padding-inline-start: var(--sp2); + padding-inline-end: var(--sp1); + transition: var(--details-summary-transition); + text-decoration: none; + color: inherit; + background-color: var(--color--gray-95); +} + +.collapse-processed > .olivero-details__summary .details-title:focus { + outline: none; +} + +.collapse-processed > .olivero-details__summary .details-title:hover { + background-color: var(--color--gray-80); +} + +@media screen and (-ms-high-contrast: active) { + .collapse-processed > .olivero-details__summary .details-title::after { + inset: -5px; + border: 2px dotted; + } +} + +/* Details content wrapper */ +.olivero-details__wrapper { + margin: var(--sp1); + + @media (--lg) { + margin-block-start: var(--sp1-5); + margin-block-end: var(--sp1-5); + margin-inline-start: var(--sp2); + margin-inline-end: var(--sp2); + } +} + +/* Description */ +.olivero-details__description { + margin-block-end: var(--sp1); + color: var(--color--gray-10); + font-size: var(--font-size-xs); + line-height: var(--line-height-s); +} diff --git a/core/themes/olivero/css/components/dropbutton.css b/core/themes/olivero/css/components/dropbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..393e97dcb8ee6f386b4aced2b8b44504eb3f8b5d --- /dev/null +++ b/core/themes/olivero/css/components/dropbutton.css @@ -0,0 +1,144 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Drop button specific styles. + */ + +.dropbutton { + border-top-left-radius: 2px; /* LTR */ + border-top-right-radius: 0; /* LTR */ + border-bottom-right-radius: 0; /* LTR */ + border-bottom-left-radius: 2px; /* LTR */ + background-color: #0d77b5; +} + +[dir="rtl"] .dropbutton { + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} + +.js .dropbutton-widget .dropbutton { + overflow: visible; +} + +.dropbutton-action { + font-size: 14px; + line-height: 18px +} + +[dir="ltr"] .dropbutton-action a { + padding-left: 18px; +} + +[dir="rtl"] .dropbutton-action a { + padding-right: 18px; +} + +[dir="ltr"] .dropbutton-action a { + padding-right: 18px; +} + +[dir="rtl"] .dropbutton-action a { + padding-left: 18px; +} + +.dropbutton-action a { + padding-top: 4.5px; + padding-bottom: 4.5px; + text-decoration: none; + color: #fff; + border-top-left-radius: 2px; /* LTR */ + border-top-right-radius: 0; /* LTR */ + border-bottom-right-radius: 0; /* LTR */ + border-bottom-left-radius: 2px /* LTR */ + } + +.dropbutton-action a:hover { + background-color: #2494db; + } + +.dropbutton-action a:focus { + outline: 2px solid #53b0eb; + outline-offset: 2px; + background-color: #2494db; + box-shadow: var(--shadow-focusable-with-outline); + } + +[dir="rtl"] .dropbutton-action a { + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} + +.js .dropbutton-action a:focus { + outline: 2px solid #53b0eb; +} + +[dir="ltr"] .dropbutton-toggle { + border-left: 1px solid #fff; +} + +[dir="rtl"] .dropbutton-toggle { + border-right: 1px solid #fff; +} + +.dropbutton-toggle { + border-top-left-radius: 0; /* LTR */ + border-top-right-radius: 2px; /* LTR */ + border-bottom-right-radius: 2px; /* LTR */ + border-bottom-left-radius: 0; /* LTR */ + background-color: #0d77b5 +} + +.dropbutton-toggle:hover { + background-color: #2494db; + } + +.dropbutton-toggle button { + border-top-left-radius: 0; /* LTR */ + border-top-right-radius: 2px; /* LTR */ + border-bottom-right-radius: 2px; /* LTR */ + border-bottom-left-radius: 0 /* LTR */ + } + +.dropbutton-toggle button:focus { + outline: 2px solid #53b0eb; + outline-offset: 2px; + background-color: #2494db; + box-shadow: var(--shadow-focusable-with-outline); + } + +[dir="rtl"] .dropbutton-toggle { + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px +} + +[dir="rtl"] .dropbutton-toggle button { + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; + } + +.dropbutton-arrow { + left: 0; + right: 0; + margin-left: auto; + margin-right: auto; + border-top-color: #fff; +} + +.dropbutton-multiple.open .dropbutton-arrow { + border-bottom-color: #fff; +} diff --git a/core/themes/olivero/css/components/dropbutton.pcss.css b/core/themes/olivero/css/components/dropbutton.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..2ed13a7ee46903c09fd9c6b83fec0f0700f12d59 --- /dev/null +++ b/core/themes/olivero/css/components/dropbutton.pcss.css @@ -0,0 +1,115 @@ +/** + * @file + * Drop button specific styles. + */ + +@import "../base/variables.pcss.css"; + +.dropbutton { + border-top-left-radius: var(--border-radius-base); /* LTR */ + border-top-right-radius: 0; /* LTR */ + border-bottom-right-radius: 0; /* LTR */ + border-bottom-left-radius: var(--border-radius-base); /* LTR */ + background-color: var(--color--blue-20); +} + +[dir="rtl"] .dropbutton { + border-top-left-radius: 0; + border-top-right-radius: var(--border-radius-base); + border-bottom-right-radius: var(--border-radius-base); + border-bottom-left-radius: 0; +} + +.js .dropbutton-widget .dropbutton { + overflow: visible; +} + +.dropbutton-action { + font-size: var(--font-size-s); + line-height: var(--line-height-s); + + & a { + padding-block: var(--sp0-25); + padding-inline-start: var(--sp1); + padding-inline-end: var(--sp1); + text-decoration: none; + color: var(--color--white); + border-top-left-radius: var(--border-radius); /* LTR */ + border-top-right-radius: 0; /* LTR */ + border-bottom-right-radius: 0; /* LTR */ + border-bottom-left-radius: var(--border-radius); /* LTR */ + + &:hover { + background-color: var(--color--blue-50); + } + + &:focus { + outline: var(--outline--base); + outline-offset: var(--outline-offset); + background-color: var(--color--blue-50); + box-shadow: var(--shadow-focusable-with-outline); + } + } +} + +[dir="rtl"] .dropbutton-action a { + border-top-left-radius: 0; + border-top-right-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); + border-bottom-left-radius: 0; +} + +.js .dropbutton-action a:focus { + outline: var(--outline--base); +} + +.dropbutton-toggle { + border-inline-start: 1px solid var(--color--white); + border-top-left-radius: 0; /* LTR */ + border-top-right-radius: var(--border-radius-base); /* LTR */ + border-bottom-right-radius: var(--border-radius-base); /* LTR */ + border-bottom-left-radius: 0; /* LTR */ + background-color: var(--color--blue-20); + + &:hover { + background-color: var(--color--blue-50); + } + + & button { + border-top-left-radius: 0; /* LTR */ + border-top-right-radius: var(--border-radius-base); /* LTR */ + border-bottom-right-radius: var(--border-radius-base); /* LTR */ + border-bottom-left-radius: 0; /* LTR */ + + &:focus { + outline: var(--outline--base); + outline-offset: var(--outline-offset); + background-color: var(--color--blue-50); + box-shadow: var(--shadow-focusable-with-outline); + } + } +} + +[dir="rtl"] .dropbutton-toggle { + border-top-left-radius: var(--border-radius-base); + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: var(--border-radius-base); + + & button { + border-top-left-radius: var(--border-radius-base); + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: var(--border-radius-base); + } +} + +.dropbutton-arrow { + inset-inline: 0; + margin-inline: auto; + border-top-color: var(--color--white); +} + +.dropbutton-multiple.open .dropbutton-arrow { + border-bottom-color: var(--color--white); +} diff --git a/core/themes/olivero/css/components/embedded-media.css b/core/themes/olivero/css/components/embedded-media.css new file mode 100644 index 0000000000000000000000000000000000000000..662698363256945fef84ff0c0242587f479e21ba --- /dev/null +++ b/core/themes/olivero/css/components/embedded-media.css @@ -0,0 +1,298 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Embedded Media. + */ + +figure { + background: #f7f9fa; +} + +[dir="ltr"] figcaption { + padding-left: 9px; +} + +[dir="rtl"] figcaption { + padding-right: 9px; +} + +[dir="ltr"] figcaption { + padding-right: 9px; +} + +[dir="rtl"] figcaption { + padding-left: 9px; +} + +figcaption { + padding-top: 9px; + padding-bottom: 9px; + color: #313637; + background: #f7f9fa; + font-family: "Lora", "georgia", serif; + font-size: 14px; + font-style: italic; + line-height: 18px +} + +@media (min-width: 500px) { + +[dir="ltr"] figcaption { + padding-left: 18px; + } + +[dir="rtl"] figcaption { + padding-right: 18px; + } + +[dir="ltr"] figcaption { + padding-right: 18px; + } + +[dir="rtl"] figcaption { + padding-left: 18px; + } + +figcaption { + padding-top: 18px; + padding-bottom: 18px +} + } + +[dir="ltr"] .align-right { + margin-left: 0; +} + +[dir="rtl"] .align-right { + margin-right: 0; +} + +[dir="ltr"] .align-right { + margin-right: 0; +} + +[dir="rtl"] .align-right { + margin-left: 0; +} + +.align-right { + float: none; /* Override core's align.module.css. */ + max-width: 100%; + margin-top: 54px; + margin-bottom: 54px +} + +@media (min-width: 700px) { + +[dir="ltr"] .align-right { + float: right; + } + +[dir="rtl"] .align-right { + float: left; + } + +[dir="ltr"] .align-right { + margin-left: 18px; + } + +[dir="rtl"] .align-right { + margin-right: 18px; + } + +[dir="ltr"] .align-right { + margin-right: 0; + } + +[dir="rtl"] .align-right { + margin-left: 0; + } + +.align-right { + max-width: 50%; + margin-top: 18px; + margin-bottom: 18px +} + } + +/* Pull out of grid if nested in content narrow layout. */ + +@media (min-width: 700px) { + +[dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] +.layout--pass--content-narrow > * .align-right { + margin-right: calc(-1*((100vw - 504px)/14 + 36px)); + } + +[dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] +.layout--pass--content-narrow > * .align-right { + margin-left: calc(-1*((100vw - 504px)/14 + 36px)); + } + } + +@media (min-width: 1000px) { + +[dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] +.layout--pass--content-narrow > * .align-right { + margin-right: calc(-2*((100vw - 519px)/14 + 36px)); + } + +[dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] +.layout--pass--content-narrow > * .align-right { + margin-left: calc(-2*((100vw - 519px)/14 + 36px)); + } + } + +@media (min-width: 1200px) { + +[dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] +.layout--pass--content-narrow > * .align-right { + margin-right: calc(-3*((100vw - 645px)/14 + 36px)); + } + +[dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] +.layout--pass--content-narrow > * .align-right { + margin-left: calc(-3*((100vw - 645px)/14 + 36px)); + } + } + +@media (min-width: 1440px) { + +[dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] +.layout--pass--content-narrow > * .align-right { + margin-right: -281.57143px; + } + +[dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] +.layout--pass--content-narrow > * .align-right { + margin-left: -281.57143px; + } + } + +[dir="ltr"] .align-left { + margin-left: 0; +} + +[dir="rtl"] .align-left { + margin-right: 0; +} + +[dir="ltr"] .align-left { + margin-right: 0; +} + +[dir="rtl"] .align-left { + margin-left: 0; +} + +.align-left { + float: none; /* Override core's align.module.css. */ + max-width: 100%; + margin-top: 54px; + margin-bottom: 54px +} + +@media (min-width: 700px) { + +[dir="ltr"] .align-left { + float: left; + } + +[dir="rtl"] .align-left { + float: right; + } + +[dir="ltr"] .align-left { + margin-left: 0; + } + +[dir="rtl"] .align-left { + margin-right: 0; + } + +[dir="ltr"] .align-left { + margin-right: 36px; + } + +[dir="rtl"] .align-left { + margin-left: 36px; + } + +.align-left { + max-width: 50%; + margin-top: 18px; + margin-bottom: 18px /* Extra right margins in case of aligning next to lists. */ +} + } + +/* Pull out of grid if nested in content narrow layout. */ + +@media (min-width: 700px) { + +[dir="ltr"] .layout--content-narrow .align-left,[dir="ltr"] +.layout--pass--content-narrow > * .align-left { + margin-left: calc(-1*((100vw - 504px)/14 + 36px)); + } + +[dir="rtl"] .layout--content-narrow .align-left,[dir="rtl"] +.layout--pass--content-narrow > * .align-left { + margin-right: calc(-1*((100vw - 504px)/14 + 36px)); + } + } + +@media (min-width: 1000px) { + +[dir="ltr"] .layout--content-narrow .align-left,[dir="ltr"] +.layout--pass--content-narrow > * .align-left { + margin-left: calc(-1*((100vw - 519px)/14 + 36px)); + } + +[dir="rtl"] .layout--content-narrow .align-left,[dir="rtl"] +.layout--pass--content-narrow > * .align-left { + margin-right: calc(-1*((100vw - 519px)/14 + 36px)); + } + } + +@media (min-width: 1200px) { + +[dir="ltr"] .layout--content-narrow .align-left,[dir="ltr"] +.layout--pass--content-narrow > * .align-left { + margin-left: calc(-1*((100vw - 645px)/14 + 36px)); + } + +[dir="rtl"] .layout--content-narrow .align-left,[dir="rtl"] +.layout--pass--content-narrow > * .align-left { + margin-right: calc(-1*((100vw - 645px)/14 + 36px)); + } + } + +@media (min-width: 1440px) { + +[dir="ltr"] .layout--content-narrow .align-left,[dir="ltr"] +.layout--pass--content-narrow > * .align-left { + margin-left: -93.85714px; + } + +[dir="rtl"] .layout--content-narrow .align-left,[dir="rtl"] +.layout--pass--content-narrow > * .align-left { + margin-right: -93.85714px; + } + } + +.align-center img, +.align-center video, +.align-center audio { + margin-left: auto; + margin-right: auto; +} + +.media-oembed-content { + display: block; + max-width: 100%; +} diff --git a/core/themes/olivero/css/components/embedded-media.pcss.css b/core/themes/olivero/css/components/embedded-media.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..fccc8c0d6b98b71b8843154f1849f9e8011a3111 --- /dev/null +++ b/core/themes/olivero/css/components/embedded-media.pcss.css @@ -0,0 +1,114 @@ +/** + * @file + * Embedded Media. + */ + +@import "../base/variables.pcss.css"; + +figure { + background: var(--color--gray-95); +} + +figcaption { + padding-block: var(--sp0-5); + padding-inline-start: var(--sp0-5); + padding-inline-end: var(--sp0-5); + color: var(--color--gray-10); + background: var(--color--gray-95); + font-family: var(--font-serif); + font-size: 14px; + font-style: italic; + line-height: var(--sp); + + @media (--sm) { + padding-block: var(--sp); + padding-inline-start: var(--sp); + padding-inline-end: var(--sp); + } +} + +.align-right { + float: none; /* Override core's align.module.css. */ + max-width: 100%; + margin-block: var(--sp3); + margin-inline-start: 0; + margin-inline-end: 0; + + @media (--grid-md) { + float: inline-end; + max-width: 50%; + margin-block-start: var(--sp); + margin-block-end: var(--sp); + margin-inline-start: var(--sp); + margin-inline-end: 0; + } +} + +/* Pull out of grid if nested in content narrow layout. */ +.layout--content-narrow .align-right, +.layout--pass--content-narrow > * .align-right { + @media (--grid-md) { + margin-inline-end: calc(-1 * ((var(--grid-col-width--md) + var(--grid-gap--md)))); + } + + @media (--lg) { + margin-inline-end: calc(-2 * ((var(--grid-col-width--lg) + var(--grid-gap--lg)))); + } + + @media (--nav) { + margin-inline-end: calc(-3 * ((var(--grid-col-width--nav) + var(--grid-gap--nav)))); + } + + @media (--grid-max) { + margin-inline-end: calc(-3 * ((var(--grid-col-width--max) + var(--grid-gap--max)))); + } +} + +.align-left { + float: none; /* Override core's align.module.css. */ + max-width: 100%; + margin-block-start: var(--sp3); + margin-block-end: var(--sp3); + margin-inline-start: 0; + margin-inline-end: 0; + + @media (--grid-md) { + float: inline-start; + max-width: 50%; + margin-block-start: var(--sp); + margin-block-end: var(--sp); + margin-inline-start: 0; + margin-inline-end: var(--sp2); /* Extra right margins in case of aligning next to lists. */ + } +} + +/* Pull out of grid if nested in content narrow layout. */ +.layout--content-narrow .align-left, +.layout--pass--content-narrow > * .align-left { + @media (--grid-md) { + margin-inline-start: calc(-1 * ((var(--grid-col-width--md) + var(--grid-gap--md)))); + } + + @media (--lg) { + margin-inline-start: calc(-1 * ((var(--grid-col-width--lg) + var(--grid-gap--lg)))); + } + + @media (--nav) { + margin-inline-start: calc(-1 * ((var(--grid-col-width--nav) + var(--grid-gap--nav)))); + } + + @media (--grid-max) { + margin-inline-start: calc(-1 * ((var(--grid-col-width--max) + var(--grid-gap--max)))); + } +} + +.align-center img, +.align-center video, +.align-center audio { + margin-inline: auto; +} + +.media-oembed-content { + display: block; + max-width: 100%; +} diff --git a/core/themes/olivero/css/components/feed.css b/core/themes/olivero/css/components/feed.css new file mode 100644 index 0000000000000000000000000000000000000000..c3d0bfb4a5433594099cc16cc6730ced1c7767fe --- /dev/null +++ b/core/themes/olivero/css/components/feed.css @@ -0,0 +1,53 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * RSS feed. + */ + +.feed-icon { + display: flex; + align-items: center; + text-decoration: none; + color: #5d7585 +} + +.feed-icon:hover { + color: #2494db; + } + +.feed-icon__label { + flex-shrink: 0; + letter-spacing: 0.08em; + font-size: 12px; + font-weight: 600; +} + +[dir="ltr"] .feed-icon__icon { + margin-left: 9px +} + +[dir="rtl"] .feed-icon__icon { + margin-right: 9px +} + +.feed-icon__icon { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: center; + width: 27px; + height: 27px; + color: #fff; + background-color: #2494db +} + +.feed-icon__icon svg { + vertical-align: top; + fill: currentColor; + } diff --git a/core/themes/olivero/css/components/feed.pcss.css b/core/themes/olivero/css/components/feed.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..b3324b131ec8bfe4ce2a758f310ddf4516867240 --- /dev/null +++ b/core/themes/olivero/css/components/feed.pcss.css @@ -0,0 +1,41 @@ +/** + * @file + * RSS feed. + */ + +@import "../base/variables.pcss.css"; + +.feed-icon { + display: flex; + align-items: center; + text-decoration: none; + color: var(--color--gray-25); + + &:hover { + color: var(--color--blue-50); + } +} + +.feed-icon__label { + flex-shrink: 0; + letter-spacing: 0.08em; + font-size: var(--font-size-xxs); + font-weight: 600; +} + +.feed-icon__icon { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: center; + width: var(--sp1-5); + height: var(--sp1-5); + margin-inline-start: var(--sp0-5); + color: var(--color--white); + background-color: var(--color--blue-50); + + & svg { + vertical-align: top; + fill: currentColor; + } +} diff --git a/core/themes/olivero/css/components/field-image.css b/core/themes/olivero/css/components/field-image.css new file mode 100644 index 0000000000000000000000000000000000000000..b78d1833b5b50198b5113d0b0a0b79aafc163a04 --- /dev/null +++ b/core/themes/olivero/css/components/field-image.css @@ -0,0 +1,152 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Field image field. + */ + +[dir="ltr"] .page-node-type-article .field--name-field-image { + margin-left: 0 +} + +[dir="rtl"] .page-node-type-article .field--name-field-image { + margin-right: 0 +} + +[dir="ltr"] .page-node-type-article .field--name-field-image { + margin-right: 0 +} + +[dir="rtl"] .page-node-type-article .field--name-field-image { + margin-left: 0 +} + +.page-node-type-article .field--name-field-image { + margin-top: 9px; + margin-bottom: 36px + } + +@media (min-width: 700px) { + +[dir="ltr"] .page-node-type-article .field--name-field-image { + margin-left: calc(-1*((100vw - 504px)/14 + 36px)) + } + +[dir="rtl"] .page-node-type-article .field--name-field-image { + margin-right: calc(-1*((100vw - 504px)/14 + 36px)) + } + +.page-node-type-article .field--name-field-image { + width: calc(14*(100vw - 504px)/14 + 468px); + margin-top: 36px; + margin-bottom: 72px + } + } + +@media (min-width: 1000px) { + +[dir="ltr"] .page-node-type-article .field--name-field-image { + margin-left: calc(-1*((100vw - 519px)/14 + 36px)) + } + +[dir="rtl"] .page-node-type-article .field--name-field-image { + margin-right: calc(-1*((100vw - 519px)/14 + 36px)) + } + +.page-node-type-article .field--name-field-image { + width: calc(12*(100vw - 519px)/14 + 396px) + } + } + +@media (min-width: 1200px) { + +[dir="ltr"] .page-node-type-article .field--name-field-image { + margin-left: calc(-1*((100vw - 645px)/14 + 36px)) + } + +[dir="rtl"] .page-node-type-article .field--name-field-image { + margin-right: calc(-1*((100vw - 645px)/14 + 36px)) + } + +.page-node-type-article .field--name-field-image { + width: calc(12*(100vw - 645px)/14 + 396px) + } + } + +@media (min-width: 1440px) { + +[dir="ltr"] .page-node-type-article .field--name-field-image { + margin-left: -93.85714px + } + +[dir="rtl"] .page-node-type-article .field--name-field-image { + margin-right: -93.85714px + } + +.page-node-type-article .field--name-field-image { + width: 1090.28571px + } + } + +.page-node-type-article { + + /* Ensure that image doesn't overlap sidebar. */ +} + +@media (min-width: 1000px) { + +.page-node-type-article .sidebar-grid .field--name-field-image { + width: calc(9*(100vw - 519px)/14 + 288px) + } + } + +@media (min-width: 1200px) { + +.page-node-type-article .sidebar-grid .field--name-field-image { + width: calc(9*(100vw - 645px)/14 + 288px) + } + } + +@media (min-width: 1300px) { + +.page-node-type-article .sidebar-grid .field--name-field-image { + width: calc(10*(100vw - 645px)/14 + 324px) + } + } + +@media (min-width: 1440px) { + +.page-node-type-article .sidebar-grid .field--name-field-image { + width: 902.57143px + } + } + +.page-node-type-article { + + /* Ensure that image doesn't overlap layout builder sections when editing layouts. */ +} + +[dir="ltr"] .page-node-type-article .layout-builder .field--name-field-image { + margin-left: 0 +} + +[dir="rtl"] .page-node-type-article .layout-builder .field--name-field-image { + margin-right: 0 +} + +[dir="ltr"] .page-node-type-article .layout-builder .field--name-field-image { + margin-right: 0 +} + +[dir="rtl"] .page-node-type-article .layout-builder .field--name-field-image { + margin-left: 0 +} + +.page-node-type-article .layout-builder .field--name-field-image { + max-width: 100%; + } diff --git a/core/themes/olivero/css/components/field-image.pcss.css b/core/themes/olivero/css/components/field-image.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..cac8115b8392d83e9f027814943a03a6a9a865ae --- /dev/null +++ b/core/themes/olivero/css/components/field-image.pcss.css @@ -0,0 +1,62 @@ +/** + * @file + * Field image field. + */ + +@import "../base/variables.pcss.css"; + +.page-node-type-article { + & .field--name-field-image { + margin-block-start: var(--sp0-5); + margin-block-end: var(--sp2); + margin-inline-start: 0; + margin-inline-end: 0; + + @media (--grid-md) { + width: calc(14 * var(--grid-col-width--md) + 13 * var(--grid-gap--md)); + margin-block: var(--sp2) var(--sp4); + margin-inline-start: calc(-1 * ((var(--grid-col-width--md) + var(--grid-gap--md)))); + } + + @media (--lg) { + width: calc(12 * var(--grid-col-width--lg) + 11 * var(--grid-gap--lg)); + margin-inline-start: calc(-1 * (var(--grid-col-width--lg) + var(--grid-gap--lg))); + } + + @media (--nav) { + width: calc(12 * var(--grid-col-width--nav) + 11 * var(--grid-gap--nav)); + margin-inline-start: calc(-1 * (var(--grid-col-width--nav) + var(--grid-gap--nav))); + } + + @media (--grid-max) { + width: calc(12 * var(--grid-col-width--max) + 11 * var(--grid-gap--max)); + margin-inline-start: calc(-1 * (var(--grid-col-width--max) + var(--grid-gap--max))); + } + } + + /* Ensure that image doesn't overlap sidebar. */ + & .sidebar-grid .field--name-field-image { + @media (--lg) { + width: calc(9 * var(--grid-col-width--lg) + 8 * var(--grid-gap--lg)); + } + + @media (--nav) { + width: calc(9 * var(--grid-col-width--nav) + 8 * var(--grid-gap--nav)); + } + + @media (--xl) { + width: calc(10 * var(--grid-col-width--nav) + 9 * var(--grid-gap--nav)); + } + + @media (--grid-max) { + width: calc(10 * var(--grid-col-width--max) + 9 * var(--grid-gap--max)); + } + } + + /* Ensure that image doesn't overlap layout builder sections when editing layouts. */ + & .layout-builder .field--name-field-image { + max-width: 100%; + margin-inline-start: 0; + margin-inline-end: 0; + } +} diff --git a/core/themes/olivero/css/components/field.css b/core/themes/olivero/css/components/field.css new file mode 100644 index 0000000000000000000000000000000000000000..7e72139fe8923905172bbcb528032f394dd7b1d3 --- /dev/null +++ b/core/themes/olivero/css/components/field.css @@ -0,0 +1,60 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Visual styles for fields. + */ + +.field:not(:last-child) { + margin-bottom: 36px; +} + +.node--view-mode-teaser .field { + margin-bottom: 18px +} + +.node--view-mode-teaser .field:last-child { + margin-bottom: 0; + } + +@media (min-width: 1000px) { + +.node--view-mode-teaser .field { + margin-bottom: 36px +} + } + +.field__label { + font-weight: bold; +} + +[dir="ltr"] .field--label-inline .field__label,[dir="ltr"] +.field--label-inline .field__items { + float: left; +} + +[dir="rtl"] .field--label-inline .field__label,[dir="rtl"] +.field--label-inline .field__items { + float: right; +} + +[dir="ltr"] .field--label-inline .field__label,[dir="ltr"] +.field--label-inline > .field__item,[dir="ltr"] +.field--label-inline .field__items { + padding-right: 0.5em; +} + +[dir="rtl"] .field--label-inline .field__label,[dir="rtl"] +.field--label-inline > .field__item,[dir="rtl"] +.field--label-inline .field__items { + padding-left: 0.5em; +} + +.field--label-inline .field__label::after { + content: ":"; +} diff --git a/core/themes/olivero/css/components/field.pcss.css b/core/themes/olivero/css/components/field.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..bfe37b0cbbaa94b0c2cf97c825f080d8952ce47f --- /dev/null +++ b/core/themes/olivero/css/components/field.pcss.css @@ -0,0 +1,41 @@ +/** + * @file + * Visual styles for fields. + */ + +@import "../base/variables.pcss.css"; + +.field:not(:last-child) { + margin-block-end: var(--sp2); +} + +.node--view-mode-teaser .field { + margin-block-end: var(--sp); + + &:last-child { + margin-block-end: 0; + } + + @media (--lg) { + margin-block-end: var(--sp2); + } +} + +.field__label { + font-weight: bold; +} + +.field--label-inline .field__label, +.field--label-inline .field__items { + float: inline-start; +} + +.field--label-inline .field__label, +.field--label-inline > .field__item, +.field--label-inline .field__items { + padding-inline-end: 0.5em; +} + +.field--label-inline .field__label::after { + content: ":"; +} diff --git a/core/themes/olivero/css/components/fieldset.css b/core/themes/olivero/css/components/fieldset.css new file mode 100644 index 0000000000000000000000000000000000000000..7ef04001ba8a5dcbee2e32f974e776bf7ccb4570 --- /dev/null +++ b/core/themes/olivero/css/components/fieldset.css @@ -0,0 +1,247 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Fieldset. + */ + +[dir="ltr"] .fieldset { + margin-left: 0; +} + +[dir="rtl"] .fieldset { + margin-right: 0; +} + +[dir="ltr"] .fieldset { + margin-right: 0; +} + +[dir="rtl"] .fieldset { + margin-left: 0; +} + +[dir="ltr"] .fieldset { + padding-left: 0; +} + +[dir="rtl"] .fieldset { + padding-right: 0; +} + +[dir="ltr"] .fieldset { + padding-right: 0; +} + +[dir="rtl"] .fieldset { + padding-left: 0; +} + +.fieldset { + min-width: 0; + margin-top: 18px; + margin-bottom: 18px; + padding-top: 0; + padding-bottom: 0; + color: inherit; + border: 2px solid #7e96a7; + border-radius: 2px; + background-color: #fff; +} + +.fieldset--group { + width: 100%; + color: inherit; + border: 0; + border-radius: 0; + background: none; + box-shadow: none; +} + +/* stylelint-disable-next-line selector-type-no-unknown */ + +_:-ms-fullscreen, +.fieldset { + display: table; + box-sizing: border-box; + width: 100%; +} + +[dir="ltr"] .fieldset__legend { + float: left; +} + +[dir="rtl"] .fieldset__legend { + float: right; +} + +.fieldset__legend { + width: 100%; + margin-bottom: 18px; + color: inherit; + background-color: #7e96a7; + font-size: 18px; + font-weight: 700; + line-height: 27px +} + +.fieldset__legend .fieldset__label.form-required:after { + background-image: url("data:image/svg+xml,%3Csvg height='16' width='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 7.562 1.114-3.438c2.565.906 4.43 1.688 5.59 2.35-.306-2.921-.467-4.93-.484-6.027h3.511c-.05 1.597-.234 3.6-.558 6.003 1.664-.838 3.566-1.613 5.714-2.325l1.113 3.437c-2.05.678-4.06 1.131-6.028 1.356.984.856 2.372 2.381 4.166 4.575l-2.906 2.059c-.935-1.274-2.041-3.009-3.316-5.206-1.194 2.275-2.244 4.013-3.147 5.206l-2.856-2.059c1.872-2.307 3.211-3.832 4.017-4.575-2.081-.402-4.058-.856-5.93-1.356' fill='%23ffffff'/%3E%3C/svg%3E%0A"); + } + +.fieldset__legend--composite { + margin-top: 2px; + color: inherit; +} + +.fieldset__legend--invisible { + margin: 0; +} + +.fieldset__legend--group { + color: inherit; +} + +[dir="ltr"] .fieldset__label { + padding-left: 18px; +} + +[dir="rtl"] .fieldset__label { + padding-right: 18px; +} + +[dir="ltr"] .fieldset__label { + padding-right: 18px; +} + +[dir="rtl"] .fieldset__label { + padding-left: 18px; +} + +.fieldset__label { + display: block; + padding-top: 9px; + padding-bottom: 9px; + color: #fff; + line-height: 18px; +} + +.fieldset__label.is-disabled { + color: #7e96a7; +} + +.fieldset__description { + margin-top: 9px; + margin-bottom: 9px; + font-size: 13px; + line-height: 18px; +} + +.fieldset__description.is-disabled { + color: var(--input--disabled-fg-color); +} + +[dir="ltr"] .fieldset__error-message { + padding-left: 27px; +} + +[dir="rtl"] .fieldset__error-message { + padding-right: 27px; +} + +.fieldset__error-message { + margin-top: 9px; + margin-bottom: 9px; + color: #e33f1e; + background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23E33F1E' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: left top; /* LTR */ + background-size: 18px 18px; + font-size: 14px; + line-height: 18px +} + +@media screen and (-ms-high-contrast: active) { + +.fieldset__error-message { + background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23ffffff' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E") +} + } + +[dir="rtl"] .fieldset__error-message { + background-position: left top; +} + +[dir="ltr"] .fieldset__legend--visible ~ .fieldset__wrapper { + padding-left: 18px; +} + +[dir="rtl"] .fieldset__legend--visible ~ .fieldset__wrapper { + padding-right: 18px; +} + +[dir="ltr"] .fieldset__legend--visible ~ .fieldset__wrapper { + padding-right: 18px; +} + +[dir="rtl"] .fieldset__legend--visible ~ .fieldset__wrapper { + padding-left: 18px; +} + +.fieldset__legend--visible ~ .fieldset__wrapper { + margin-top: 0; + padding-top: 18px; + padding-bottom: 18px; +} + +.fieldset--group .fieldset__legend--visible ~ .fieldset__wrapper { + border: 2px solid #7e96a7; + border-radius: 2px; +} + +[dir="ltr"] .fieldset__wrapper--group { + margin-left: 0; +} + +[dir="rtl"] .fieldset__wrapper--group { + margin-right: 0; +} + +[dir="ltr"] .fieldset__wrapper--group { + margin-right: 0; +} + +[dir="rtl"] .fieldset__wrapper--group { + margin-left: 0; +} + +.fieldset__wrapper--group { + margin-top: 0; + margin-bottom: 0; +} + +[dir="ltr"] .fieldset__wrapper > .container-inline { + padding-left: 0; +} + +[dir="rtl"] .fieldset__wrapper > .container-inline { + padding-right: 0; +} + +[dir="ltr"] .fieldset__wrapper > .container-inline { + padding-right: 0; +} + +[dir="rtl"] .fieldset__wrapper > .container-inline { + padding-left: 0; +} + +.fieldset__wrapper > .container-inline { + padding-top: 0; + padding-bottom: 0; +} diff --git a/core/themes/olivero/css/components/fieldset.pcss.css b/core/themes/olivero/css/components/fieldset.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..20a287c8b2cba4ef66c0001f56975e34ad46a9de --- /dev/null +++ b/core/themes/olivero/css/components/fieldset.pcss.css @@ -0,0 +1,136 @@ +/** + * @file + * Fieldset. + */ + +@import "../base/variables.pcss.css"; + +.fieldset { + min-width: 0; + margin-block: var(--sp1); + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + color: inherit; + border: var(--form-element-border-size-base) solid var(--color--gray-30); + border-radius: var(--border-radius-base); + background-color: var(--color--white); +} + +.fieldset--group { + width: 100%; + color: inherit; + border: 0; + border-radius: 0; + background: none; + box-shadow: none; +} + +/* stylelint-disable-next-line selector-type-no-unknown */ +_:-ms-fullscreen, +.fieldset { + display: table; + box-sizing: border-box; + width: 100%; +} + +.fieldset__legend { + float: inline-start; + width: 100%; + margin-block-end: var(--sp1); + color: inherit; + background-color: var(--color--gray-30); + font-size: var(--font-size-l); + font-weight: 700; + line-height: var(--line-height-base); + + & .fieldset__label { + &.form-required { + &:after { + background-image: url("data:image/svg+xml,%3Csvg height='16' width='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 7.562 1.114-3.438c2.565.906 4.43 1.688 5.59 2.35-.306-2.921-.467-4.93-.484-6.027h3.511c-.05 1.597-.234 3.6-.558 6.003 1.664-.838 3.566-1.613 5.714-2.325l1.113 3.437c-2.05.678-4.06 1.131-6.028 1.356.984.856 2.372 2.381 4.166 4.575l-2.906 2.059c-.935-1.274-2.041-3.009-3.316-5.206-1.194 2.275-2.244 4.013-3.147 5.206l-2.856-2.059c1.872-2.307 3.211-3.832 4.017-4.575-2.081-.402-4.058-.856-5.93-1.356' fill='%23ffffff'/%3E%3C/svg%3E%0A"); + } + } + } +} + +.fieldset__legend--composite { + margin-block-start: 2px; + color: inherit; +} + +.fieldset__legend--invisible { + margin: 0; +} + +.fieldset__legend--group { + color: inherit; +} + +.fieldset__label { + display: block; + padding-block: var(--sp0-5); + padding-inline-start: var(--sp1); + padding-inline-end: var(--sp1); + color: var(--color--white); + line-height: var(--line-height-s); +} + +.fieldset__label.is-disabled { + color: var(--color--gray-30); +} + +.fieldset__description { + margin-block: var(--sp0-5); + font-size: var(--font-size-xs); + line-height: var(--line-height-s); +} + +.fieldset__description.is-disabled { + color: var(--input--disabled-fg-color); +} + +.fieldset__error-message { + margin-block: var(--sp0-5); + padding-inline-start: var(--sp1-5); + color: var(--color--red); + background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23E33F1E' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: left top; /* LTR */ + background-size: var(--sp1) var(--sp1); + font-size: var(--font-size-s); + line-height: var(--line-height-s); + + @media screen and (-ms-high-contrast: active) { + background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23ffffff' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E"); + } +} + +[dir="rtl"] .fieldset__error-message { + background-position: left top; +} + +.fieldset__legend--visible ~ .fieldset__wrapper { + margin-block-start: 0; + padding-block: var(--sp); + padding-inline-start: var(--sp); + padding-inline-end: var(--sp); +} + +.fieldset--group .fieldset__legend--visible ~ .fieldset__wrapper { + border: var(--form-element-border-size-base) solid var(--color--gray-30); + border-radius: var(--border-radius-base); +} + +.fieldset__wrapper--group { + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; +} + +.fieldset__wrapper > .container-inline { + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; +} diff --git a/core/themes/olivero/css/components/footer.css b/core/themes/olivero/css/components/footer.css new file mode 100644 index 0000000000000000000000000000000000000000..a15535cb2482fcf6f2b29688382b4020b0b1e4fc --- /dev/null +++ b/core/themes/olivero/css/components/footer.css @@ -0,0 +1,61 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Footer regions. + */ + +.site-footer { + position: relative; /* stack above left social bar */ + color: #9ea0a1; + + /* @todo - #0c0d0e and #171e23 aren't currently variables */ + background: linear-gradient(180deg, #0c0d0e 0%, #171e23 100%) +} + +[dir="ltr"] .site-footer .menu { + margin-left: 0 +} + +[dir="rtl"] .site-footer .menu { + margin-right: 0 +} + +.site-footer .menu { + list-style: none + } + +[dir="ltr"] .site-footer .menu ul { + margin-left: 18px +} + +[dir="rtl"] .site-footer .menu ul { + margin-right: 18px +} + +.site-footer .menu li { + margin-bottom: 9px; + } + +.site-footer a { + color: inherit + } + +.site-footer a:focus, + .site-footer a:hover { + text-decoration: none; + } + +@media (min-width: 1200px) { + [dir="ltr"] body:not(.is-always-mobile-nav) .site-footer { + border-left: solid 90px #000 + } + [dir="rtl"] body:not(.is-always-mobile-nav) .site-footer { + border-right: solid 90px #000 + } +} diff --git a/core/themes/olivero/css/components/footer.pcss.css b/core/themes/olivero/css/components/footer.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..5e1ac53d59fb0f6c772f20cf7f6c2d4ee8ba40c2 --- /dev/null +++ b/core/themes/olivero/css/components/footer.pcss.css @@ -0,0 +1,42 @@ +/** + * @file + * Footer regions. + */ + +@import "../base/variables.pcss.css"; + +.site-footer { + position: relative; /* stack above left social bar */ + color: var(--color--gray-50); + + /* @todo - #0c0d0e and #171e23 aren't currently variables */ + background: linear-gradient(180deg, #0c0d0e 0%, #171e23 100%); + + & .menu { + margin-inline-start: 0; + list-style: none; + + & ul { + margin-inline-start: var(--sp); + } + + & li { + margin-block-end: var(--sp0-5); + } + } + + & a { + color: inherit; + + &:focus, + &:hover { + text-decoration: none; + } + } +} + +@media (--nav) { + body:not(.is-always-mobile-nav) .site-footer { + border-inline-start: solid var(--content-left) var(--color--black); + } +} diff --git a/core/themes/olivero/css/components/form-boolean.css b/core/themes/olivero/css/components/form-boolean.css new file mode 100644 index 0000000000000000000000000000000000000000..22c1db23df2e57a7e62ef0690dd8fee20d01296f --- /dev/null +++ b/core/themes/olivero/css/components/form-boolean.css @@ -0,0 +1,155 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Checkbox and radio input elements. + */ + +input[type="checkbox"], +input[type="radio"] { + display: inline-block; + width: 27px; + height: 27px; + vertical-align: text-bottom; + border: 2px solid #7e96a7; + border-radius: 2px; + background-color: #f7f9fa; + background-repeat: no-repeat; + background-position: 50% 50%; + background-size: 18px 18px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +input[type="checkbox"]:focus, input[type="radio"]:focus { + outline: 6px dashed transparent; + box-shadow: 0 0 0 2px #fff, 0 0 0 4px #53b0eb, 0 0 36px rgba(83, 176, 235, 0.25) + } + +@supports (outline-style: double) { + +input[type="checkbox"]:focus, input[type="radio"]:focus { + outline-style: double + } + } + +input[type="checkbox"]:hover, input[type="radio"]:hover { + border-color: #53b0eb; + } + +input[type="checkbox"][disabled], input[type="radio"][disabled] { + opacity: 0.3; + } + +input[type="checkbox"].error, input[type="radio"].error { + border-color: #e33f1e; + } + +input[type="checkbox"], +input[type="radio"] { + + /* Specific pseudo-element to apply red borders for IE11 bool elements in case of error */ +} + +input[type="checkbox"].error::-ms-check, input[type="radio"].error::-ms-check { + border: 1px solid #e33f1e; + } + +[dir="ltr"] .form-type--boolean input[type="checkbox"],[dir="ltr"] + .form-type--boolean input[type="radio"] { + float: left +} + +[dir="rtl"] .form-type--boolean input[type="checkbox"],[dir="rtl"] + .form-type--boolean input[type="radio"] { + float: right +} + +[dir="ltr"] .form-type--boolean input[type="checkbox"],[dir="ltr"] + .form-type--boolean input[type="radio"] { + margin-left: -36px +} + +[dir="rtl"] .form-type--boolean input[type="checkbox"],[dir="rtl"] + .form-type--boolean input[type="radio"] { + margin-right: -36px +} + +.form-type--boolean input[type="checkbox"], + .form-type--boolean input[type="radio"] { + position: relative; + /* stylelint-disable-next-line csstools/use-logical */ + top: 9px; + transform: translateY(-50%); + } + +.form-type--boolean.form-no-label input[type="checkbox"], + .form-type--boolean.form-no-label input[type="radio"] { + position: static; + float: none; + margin-left: 0; + margin-right: 0; + transform: none; + } + +input[type="checkbox"]:checked { + background-image: url("data:image/svg+xml,%3Csvg width='18' height='14' viewBox='0 0 18 14' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%232494DB' d='M14.8232 0.176777C14.9209 0.0791457 15.0791 0.0791455 15.1768 0.176777L16.9445 1.94454C17.0422 2.04217 17.0422 2.20047 16.9445 2.2981L6.23744 13.0052C6.13981 13.1028 5.98151 13.1028 5.88388 13.0052L0.176777 7.2981C0.0791456 7.20047 0.0791456 7.04218 0.176777 6.94454L1.94454 5.17678C2.04217 5.07915 2.20047 5.07915 2.2981 5.17678L5.88388 8.76256C5.98151 8.86019 6.13981 8.86019 6.23744 8.76256L14.8232 0.176777Z'/%3E%3C/svg%3E%0A"); + } + +input[type="radio"] { + border-radius: 50% +} + +input[type="radio"]:checked { + background-image: url("data:image/svg+xml,%3Csvg width='17' height='17' viewBox='0 0 17 17' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8.5' cy='8.5' r='8.5' fill='%232494DB'/%3E%3C/svg%3E%0A"); + background-size: 17px 17px; + } + +[dir="ltr"] .form-type--boolean { + margin-left: 36px +} + +[dir="rtl"] .form-type--boolean { + margin-right: 36px +} + +.form-type--boolean { + clear: both +} + +[dir="ltr"] .form-type--boolean.form-no-label { + margin-left: 0 +} + +[dir="rtl"] .form-type--boolean.form-no-label { + margin-right: 0 +} + +[dir="ltr"] .form-type--boolean .form-item__description,[dir="ltr"] + .form-type--boolean .form-item--error-message { + margin-left: -36px +} + +[dir="rtl"] .form-type--boolean .form-item__description,[dir="rtl"] + .form-type--boolean .form-item--error-message { + margin-right: -36px +} + +.form-boolean-group .form-type--boolean { + margin-top: 18px; + margin-bottom: 18px; +} + +[dir="ltr"] .container-inline .form-boolean-group .form-type--boolean:not(:last-child) { + margin-right: 18px +} + +[dir="rtl"] .container-inline .form-boolean-group .form-type--boolean:not(:last-child) { + margin-left: 18px +} diff --git a/core/themes/olivero/css/components/form-boolean.pcss.css b/core/themes/olivero/css/components/form-boolean.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..50a9cc194c7727a026c02a77182368944760b689 --- /dev/null +++ b/core/themes/olivero/css/components/form-boolean.pcss.css @@ -0,0 +1,110 @@ +/** + * @file + * Checkbox and radio input elements. + */ + +@import "../base/variables.pcss.css"; + +:root { + --form-boolean-radio-icon-size: 17px; +} + +input[type="checkbox"], +input[type="radio"] { + display: inline-block; + width: var(--sp1-5); + height: var(--sp1-5); + vertical-align: text-bottom; + border: var(--form-element-border-size-base) solid var(--color--gray-30); + border-radius: var(--border-radius-base); + background-color: var(--color--gray-95); + background-repeat: no-repeat; + background-position: 50% 50%; + background-size: var(--sp1) var(--sp1); + appearance: none; + + &:focus { + outline: var(--outline--thick); + box-shadow: var(--shadow-focusable); + + @supports (outline-style: double) { + outline-style: double; + } + } + + &:hover { + border-color: var(--color--blue-70); + } + + &[disabled] { + opacity: 0.3; + } + + &.error { + border-color: var(--color--red); + } + + /* Specific pseudo-element to apply red borders for IE11 bool elements in case of error */ + &.error::-ms-check { + border: 1px solid var(--color--red); + } +} + +.form-type--boolean { + & input[type="checkbox"], + & input[type="radio"] { + position: relative; + /* stylelint-disable-next-line csstools/use-logical */ + top: var(--sp0-5); + float: inline-start; + margin-inline-start: calc(var(--sp2) * -1); + transform: translateY(-50%); + } + + &.form-no-label { + & input[type="checkbox"], + & input[type="radio"] { + position: static; + float: none; + margin-inline: 0; + transform: none; + } + } +} + +input[type="checkbox"] { + &:checked { + background-image: url("data:image/svg+xml,%3Csvg width='18' height='14' viewBox='0 0 18 14' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%232494DB' d='M14.8232 0.176777C14.9209 0.0791457 15.0791 0.0791455 15.1768 0.176777L16.9445 1.94454C17.0422 2.04217 17.0422 2.20047 16.9445 2.2981L6.23744 13.0052C6.13981 13.1028 5.98151 13.1028 5.88388 13.0052L0.176777 7.2981C0.0791456 7.20047 0.0791456 7.04218 0.176777 6.94454L1.94454 5.17678C2.04217 5.07915 2.20047 5.07915 2.2981 5.17678L5.88388 8.76256C5.98151 8.86019 6.13981 8.86019 6.23744 8.76256L14.8232 0.176777Z'/%3E%3C/svg%3E%0A"); + } +} + +input[type="radio"] { + border-radius: 50%; + + &:checked { + background-image: url("data:image/svg+xml,%3Csvg width='17' height='17' viewBox='0 0 17 17' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8.5' cy='8.5' r='8.5' fill='%232494DB'/%3E%3C/svg%3E%0A"); + background-size: var(--form-boolean-radio-icon-size) var(--form-boolean-radio-icon-size); + } +} + +.form-type--boolean { + clear: both; + margin-inline-start: var(--sp2); + + &.form-no-label { + margin-inline-start: 0; + } + + & .form-item__description, + & .form-item--error-message { + margin-inline-start: calc(var(--sp2) * -1); + } +} + +.form-boolean-group .form-type--boolean { + margin-block: var(--sp1); +} + +.container-inline .form-boolean-group .form-type--boolean:not(:last-child) { + margin-inline-end: var(--sp); +} diff --git a/core/themes/olivero/css/components/form-select.css b/core/themes/olivero/css/components/form-select.css new file mode 100644 index 0000000000000000000000000000000000000000..474081e90dac26a1b7d92a96cd9cbcb57edcf5f6 --- /dev/null +++ b/core/themes/olivero/css/components/form-select.css @@ -0,0 +1,271 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Select input elements. + */ + +[dir="ltr"] select { + padding-left: 24px +} + +[dir="rtl"] select { + padding-right: 24px +} + +[dir="ltr"] select { + padding-right: 72px +} + +[dir="rtl"] select { + padding-left: 72px +} + +select { + max-width: 100%; + height: 54px; + padding-top: 0; + padding-bottom: 0; + color: #313637; + border-width: 2px 0; + border-style: solid; + border-color: transparent; + border-top-left-radius: 0; /* LTR */ + border-top-right-radius: 2px; /* LTR */ + border-bottom-right-radius: 2px; /* LTR */ + border-bottom-left-radius: 0; /* LTR */ + outline: 1px solid transparent; + /* + Couple of notes here: + + The select element is styled with external images so it's visible in Firefox in Windows high contrast + mode. There's a number of browser bugs that limit what we can do including not linear-gradients negating the + entire ruleset. To work around this, we split off the various backgrounds into separate SVG images, and + call them as appropriate. We cannot use the background CSS property because we split off the background-color. + We also cannot use a left border because it angles at the end to blend in with the top and bottom + transparent borders, so we re-use the background SVG image for this. + + @todo - look at inlining some of the SVGs with an eye on CSS filesize. + */ + background-color: #f7f9fa; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='10.5' viewBox='0 0 18 10.5'%3e %3cpath fill='%23fff' d='M18,1.5c0-0.1-0.1-0.3-0.2-0.4l-0.9-0.9c-0.2-0.2-0.6-0.2-0.8,0L9,7.3L1.9,0.2c-0.2-0.2-0.6-0.2-0.8,0L0.2,1.1c-0.2,0.2-0.2,0.6,0,0.8l8.4,8.4c0.2,0.2,0.6,0.2,0.8,0l8.4-8.4C17.9,1.8,18,1.6,18,1.5z'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='54' height='54' viewBox='0 0 54 54'%3e %3cpath fill='%237e96a7' d='M0 0h54v54H0z'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='54' height='54' viewBox='0 0 54 54'%3e %3cpath fill='%237e96a7' d='M0 0h54v54H0z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: /* LTR */ + right 18px center, + right 0 top -2px, + left -48px top -2px; + font-family: inherit; + font-size: 16px; + line-height: 50px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +select:focus { + border-color: #7e96a7; + outline: 6px dashed transparent; + box-shadow: 0 0 0 2px #fff, 0 0 0 4px #53b0eb, 0 0 36px rgba(83, 176, 235, 0.25) + } + +@supports (outline-style: double) { + +select:focus { + outline-style: double + } + } + +select:hover { + border-color: #53b0eb; + background-image: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='10.5' viewBox='0 0 18 10.5'%3e %3cpath fill='%23fff' d='M18,1.5c0-0.1-0.1-0.3-0.2-0.4l-0.9-0.9c-0.2-0.2-0.6-0.2-0.8,0L9,7.3L1.9,0.2c-0.2-0.2-0.6-0.2-0.8,0L0.2,1.1c-0.2,0.2-0.2,0.6,0,0.8l8.4,8.4c0.2,0.2,0.6,0.2,0.8,0l8.4-8.4C17.9,1.8,18,1.6,18,1.5z'/%3e%3c/svg%3e"), + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='54' height='54' viewBox='0 0 54 54'%3e %3cpath fill='%2353b0eb' d='M0 0h54v54H0z'/%3e%3c/svg%3e"), + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='54' height='54' viewBox='0 0 54 54'%3e %3cpath fill='%2353b0eb' d='M0 0h54v54H0z'/%3e%3c/svg%3e"); + } + +select { + + /* Disables border of select specifically for ms browser */ +} + +select::-ms-expand { + display: none; + } + +select[disabled] { + pointer-events: none; + opacity: 0.6; + } + +select.error { + border-color: #e33f1e; + background-image: + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='10.5' viewBox='0 0 18 10.5'%3e %3cpath fill='%23fff' d='M18,1.5c0-0.1-0.1-0.3-0.2-0.4l-0.9-0.9c-0.2-0.2-0.6-0.2-0.8,0L9,7.3L1.9,0.2c-0.2-0.2-0.6-0.2-0.8,0L0.2,1.1c-0.2,0.2-0.2,0.6,0,0.8l8.4,8.4c0.2,0.2,0.6,0.2,0.8,0l8.4-8.4C17.9,1.8,18,1.6,18,1.5z'/%3e%3c/svg%3e"), + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='54' height='54' viewBox='0 0 54 54'%3e %3cpath fill='%23e33f1e' d='M0 0h54v54H0z'/%3e%3c/svg%3e"), + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='54' height='54' viewBox='0 0 54 54'%3e %3cpath fill='%23e33f1e' d='M0 0h54v54H0z'/%3e%3c/svg%3e"); + } + +[dir="ltr"] select[multiple] { + padding-left: 9px +} + +[dir="rtl"] select[multiple] { + padding-right: 9px +} + +[dir="ltr"] select[multiple] { + padding-right: 9px +} + +[dir="rtl"] select[multiple] { + padding-left: 9px +} + +[dir="ltr"] select[multiple] { + border-right: solid 2px transparent +} + +[dir="rtl"] select[multiple] { + border-left: solid 2px transparent +} + +[dir="ltr"] select[multiple] { + border-left: solid 6px #7e96a7 +} + +[dir="rtl"] select[multiple] { + border-right: solid 6px #7e96a7 +} + +select[multiple] { + height: auto; + padding-top: 9px; + padding-bottom: 9px; + border-top: 0; + border-bottom: 0; + background-image: none; + background-repeat: repeat-y; + background-position: left -48px top -2px; /* LTR */ + line-height: 1 /* Needed by non-Chromium based MS Edge browsers. */ + } + +[dir="ltr"] select[multiple] option { + padding-left: 9px +} + +[dir="rtl"] select[multiple] option { + padding-right: 9px +} + +[dir="ltr"] select[multiple] option { + padding-right: 9px +} + +[dir="rtl"] select[multiple] option { + padding-left: 9px +} + +select[multiple] option { + padding-top: 9px; + padding-bottom: 9px; + } + +select[multiple]:focus { + border-color: #7e96a7; + box-shadow: + 0 -2px 0 #7e96a7, + 0 2px 0 #7e96a7, + 0 -2px 0 2px #fff, + 0 2px 0 2px #fff, + 0 -2px 0 4px #53b0eb, + 0 2px 0 4px #53b0eb, + 0 0 36px rgba(83, 176, 235, 0.25); + } + +select[multiple]:hover { + border-color: #53b0eb; + box-shadow: + 0 -2px 0 #53b0eb, + 0 2px 0 #53b0eb; + } + +select[multiple]:focus:hover { + box-shadow: + 0 -2px 0 #53b0eb, + 0 2px 0 #53b0eb, + 0 -2px 0 2px #fff, + 0 2px 0 2px #fff, + 0 -2px 0 4px #53b0eb, + 0 2px 0 4px #53b0eb, + 0 0 36px rgba(83, 176, 235, 0.25); + } + +select[multiple].error { + border-color: #e33f1e; + box-shadow: + 0 -2px 0 #e33f1e, + 0 2px 0 #e33f1e + } + +select[multiple].error:focus { + box-shadow: + 0 -2px 0 #e33f1e, + 0 2px 0 #e33f1e, + 0 -2px 0 2px #fff, + 0 2px 0 2px #fff, + 0 -2px 0 4px #53b0eb, + 0 2px 0 4px #53b0eb, + 0 0 36px rgba(83, 176, 235, 0.25); + } + +[dir="ltr"] select.form-element--small { + padding-left: 19.5px; + padding-right: 58.5px +} + +[dir="rtl"] select.form-element--small { + padding-right: 19.5px; + padding-left: 58.5px +} + +select.form-element--small { + height: 45px; + background-position: right 13.5px center, right -10px top -2px, left -48px top -2px; /* LTR */ + line-height: 41px; + } + +select { + + /* Necessary for IE11 to show chevron. */ +} + +@media screen and (-ms-high-contrast: active) { + +select { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='18' height='10.5' viewBox='0 0 18 10.5'%3e %3cpath fill='%23fff' d='M18,1.5c0-0.1-0.1-0.3-0.2-0.4l-0.9-0.9c-0.2-0.2-0.6-0.2-0.8,0L9,7.3L1.9,0.2c-0.2-0.2-0.6-0.2-0.8,0L0.2,1.1c-0.2,0.2-0.2,0.6,0,0.8l8.4,8.4c0.2,0.2,0.6,0.2,0.8,0l8.4-8.4C17.9,1.8,18,1.6,18,1.5z'/%3e%3c/svg%3e") +} + } + +[dir="rtl"] select { + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; + background-position: + left 18px center, + left 0 top -2px, + right -48px top -2px +} + +[dir="rtl"] select[multiple] { + background-position: right -48px top -2px; + } + +[dir="rtl"] select.form-element--small { + background-position: left 13.5px center, right -10px top -2px, left -48px top -2px; + } diff --git a/core/themes/olivero/css/components/form-select.pcss.css b/core/themes/olivero/css/components/form-select.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..af5c5aa6cf20e211bd29900cb13fa4e295e0a842 --- /dev/null +++ b/core/themes/olivero/css/components/form-select.pcss.css @@ -0,0 +1,192 @@ +/** + * @file + * Select input elements. + */ + +@import "../base/variables.pcss.css"; + +:root { + --form-element-select-height: var(--sp3); + --form-element-select-height--small: var(--sp2-5); + --form-element-select-icon: url("../../images/chevron-down.svg"); + --form-element-select-bg: url("../../images/select-chevron-bg-default.svg"); + --form-element-select-bg--highlight: url("../../images/select-chevron-bg-highlight.svg"); + --form-element-select-bg--error: url("../../images/select-chevron-bg-error.svg"); + --form-element-select-border-size-right: var(--sp3); +} + +select { + max-width: 100%; + height: var(--form-element-select-height); + padding-block: 0; + padding-inline-start: calc(var(--sp1) + var(--form-element-border-size-left)); + padding-inline-end: calc(var(--sp1) + var(--form-element-select-border-size-right)); + color: var(--color--gray-10); + border-width: var(--form-element-border-size-base) 0; + border-style: solid; + border-color: transparent; + border-top-left-radius: 0; /* LTR */ + border-top-right-radius: var(--border-radius-base); /* LTR */ + border-bottom-right-radius: var(--border-radius-base); /* LTR */ + border-bottom-left-radius: 0; /* LTR */ + outline: var(--outline--thin); + /* + Couple of notes here: + + The select element is styled with external images so it's visible in Firefox in Windows high contrast + mode. There's a number of browser bugs that limit what we can do including not linear-gradients negating the + entire ruleset. To work around this, we split off the various backgrounds into separate SVG images, and + call them as appropriate. We cannot use the background CSS property because we split off the background-color. + We also cannot use a left border because it angles at the end to blend in with the top and bottom + transparent borders, so we re-use the background SVG image for this. + + @todo - look at inlining some of the SVGs with an eye on CSS filesize. + */ + background-color: var(--color--gray-95); + background-image: var(--form-element-select-icon), var(--form-element-select-bg), var(--form-element-select-bg); + background-repeat: no-repeat; + background-position: /* LTR */ + right var(--sp1) center, + right 0 top calc(-1 * var(--form-element-border-size-base)), + left -48px top calc(-1 * var(--form-element-border-size-base)); + font-family: inherit; + font-size: var(--font-size-base); + line-height: calc(var(--form-element-select-height) - 2 * var(--form-element-border-size-base)); + appearance: none; + + &:focus { + border-color: var(--color--gray-30); + outline: var(--outline--thick); + box-shadow: var(--shadow-focusable); + + @supports (outline-style: double) { + outline-style: double; + } + } + + &:hover { + border-color: var(--color--blue-70); + background-image: + var(--form-element-select-icon), + var(--form-element-select-bg--highlight), + var(--form-element-select-bg--highlight); + } + + /* Disables border of select specifically for ms browser */ + &::-ms-expand { + display: none; + } + + &[disabled] { + pointer-events: none; + opacity: 0.6; + } + + &.error { + border-color: var(--color--red); + background-image: + var(--form-element-select-icon), + var(--form-element-select-bg--error), + var(--form-element-select-bg--error); + } + + &[multiple] { + height: auto; + padding-block: var(--sp0-5); + padding-inline-start: var(--sp0-5); + padding-inline-end: var(--sp0-5); + border-block-start: 0; + border-inline-end: solid 2px transparent; + border-block-end: 0; + border-inline-start: solid 6px var(--color--gray-30); + background-image: none; + background-repeat: repeat-y; + background-position: left -48px top calc(-1 * var(--form-element-border-size-base)); /* LTR */ + line-height: 1; /* Needed by non-Chromium based MS Edge browsers. */ + + & option { + padding-block: var(--sp0-5); + padding-inline-start: var(--sp0-5); + padding-inline-end: var(--sp0-5); + } + + &:focus { + border-color: var(--color--gray-30); + box-shadow: + 0 -2px 0 var(--color--gray-30), + 0 2px 0 var(--color--gray-30), + 0 -2px 0 2px var(--color--white), + 0 2px 0 2px var(--color--white), + 0 -2px 0 4px var(--color--blue-70), + 0 2px 0 4px var(--color--blue-70), + var(--shadow-focusable-smooth); + } + + &:hover { + border-color: var(--color--blue-70); + box-shadow: + 0 -2px 0 var(--color--blue-70), + 0 2px 0 var(--color--blue-70); + } + + &:focus:hover { + box-shadow: + 0 -2px 0 var(--color--blue-70), + 0 2px 0 var(--color--blue-70), + 0 -2px 0 2px var(--color--white), + 0 2px 0 2px var(--color--white), + 0 -2px 0 4px var(--color--blue-70), + 0 2px 0 4px var(--color--blue-70), + var(--shadow-focusable-smooth); + } + + &.error { + border-color: var(--color--red); + box-shadow: + 0 -2px 0 var(--color--red), + 0 2px 0 var(--color--red); + + &:focus { + box-shadow: + 0 -2px 0 var(--color--red), + 0 2px 0 var(--color--red), + 0 -2px 0 2px var(--color--white), + 0 2px 0 2px var(--color--white), + 0 -2px 0 4px var(--color--blue-70), + 0 2px 0 4px var(--color--blue-70), + var(--shadow-focusable-smooth); + } + } + } + + &.form-element--small { + height: var(--form-element-select-height--small); + padding-inline: calc(var(--sp0-75) + var(--form-element-border-size-left)) calc(var(--form-element-select-height--small) + var(--sp0-75)); + background-position: right var(--sp0-75) center, right -10px top -2px, left -48px top -2px; /* LTR */ + line-height: calc(var(--form-element-select-height--small) - 2 * var(--form-element-border-size-base)); + } + + /* Necessary for IE11 to show chevron. */ + @media screen and (-ms-high-contrast: active) { + background-image: var(--form-element-select-icon); + } +} + +[dir="rtl"] select { + border-top-left-radius: var(--border-radius-base); + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: var(--border-radius-base); + background-position: + left var(--sp1) center, + left 0 top calc(-1 * var(--form-element-border-size-base)), + right -48px top calc(-1 * var(--form-element-border-size-base)); + + &[multiple] { + background-position: right -48px top calc(-1 * var(--form-element-border-size-base)); + } + + &.form-element--small { + background-position: left var(--sp0-75) center, right -10px top -2px, left -48px top -2px; + } +} diff --git a/core/themes/olivero/css/components/form-text.css b/core/themes/olivero/css/components/form-text.css new file mode 100644 index 0000000000000000000000000000000000000000..1c669fc0d9af93b36718a40ffaf68e136f8d9901 --- /dev/null +++ b/core/themes/olivero/css/components/form-text.css @@ -0,0 +1,255 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Text input elements. + */ + +[dir="ltr"] [type="color"],[dir="ltr"] +[type="date"],[dir="ltr"] +[type="datetime-local"],[dir="ltr"] +[type="email"],[dir="ltr"] +[type="file"],[dir="ltr"] +[type="month"],[dir="ltr"] +[type="number"],[dir="ltr"] +[type="password"],[dir="ltr"] +[type="search"],[dir="ltr"] +[type="tel"],[dir="ltr"] +[type="text"],[dir="ltr"] +[type="time"],[dir="ltr"] +[type="url"],[dir="ltr"] +[type="week"],[dir="ltr"] +textarea { + padding-left: 24px +} + +[dir="rtl"] [type="color"],[dir="rtl"] +[type="date"],[dir="rtl"] +[type="datetime-local"],[dir="rtl"] +[type="email"],[dir="rtl"] +[type="file"],[dir="rtl"] +[type="month"],[dir="rtl"] +[type="number"],[dir="rtl"] +[type="password"],[dir="rtl"] +[type="search"],[dir="rtl"] +[type="tel"],[dir="rtl"] +[type="text"],[dir="rtl"] +[type="time"],[dir="rtl"] +[type="url"],[dir="rtl"] +[type="week"],[dir="rtl"] +textarea { + padding-right: 24px +} + +[dir="ltr"] [type="color"],[dir="ltr"] +[type="date"],[dir="ltr"] +[type="datetime-local"],[dir="ltr"] +[type="email"],[dir="ltr"] +[type="file"],[dir="ltr"] +[type="month"],[dir="ltr"] +[type="number"],[dir="ltr"] +[type="password"],[dir="ltr"] +[type="search"],[dir="ltr"] +[type="tel"],[dir="ltr"] +[type="text"],[dir="ltr"] +[type="time"],[dir="ltr"] +[type="url"],[dir="ltr"] +[type="week"],[dir="ltr"] +textarea { + padding-right: 20px +} + +[dir="rtl"] [type="color"],[dir="rtl"] +[type="date"],[dir="rtl"] +[type="datetime-local"],[dir="rtl"] +[type="email"],[dir="rtl"] +[type="file"],[dir="rtl"] +[type="month"],[dir="rtl"] +[type="number"],[dir="rtl"] +[type="password"],[dir="rtl"] +[type="search"],[dir="rtl"] +[type="tel"],[dir="rtl"] +[type="text"],[dir="rtl"] +[type="time"],[dir="rtl"] +[type="url"],[dir="rtl"] +[type="week"],[dir="rtl"] +textarea { + padding-left: 20px +} + +[type="color"], +[type="date"], +[type="datetime-local"], +[type="email"], +[type="file"], +[type="month"], +[type="number"], +[type="password"], +[type="search"], +[type="tel"], +[type="text"], +[type="time"], +[type="url"], +[type="week"], +textarea { + max-width: 100%; + min-height: 54px; + padding-top: 13px; + padding-bottom: 13px; + color: #313637; + border-width: 2px 0; + border-style: solid; + border-color: transparent; + border-top-left-radius: 0; /* LTR */ + border-top-right-radius: 2px; /* LTR */ + border-bottom-right-radius: 2px; /* LTR */ + border-bottom-left-radius: 0; /* LTR */ + outline: 1px solid transparent; + background: linear-gradient(to right, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa; /* LTR */ + font-family: inherit; + font-size: 16px; + line-height: 24px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +[type="color"]:focus, [type="date"]:focus, [type="datetime-local"]:focus, [type="email"]:focus, [type="file"]:focus, [type="month"]:focus, [type="number"]:focus, [type="password"]:focus, [type="search"]:focus, [type="tel"]:focus, [type="text"]:focus, [type="time"]:focus, [type="url"]:focus, [type="week"]:focus, textarea:focus { + border-color: #7e96a7; + outline: 6px dashed transparent; + background: /* LTR */ + linear-gradient(to right, #7e96a7 6px, transparent 6px, transparent 100%), + linear-gradient(to left, #7e96a7 2px, transparent 2px, transparent 100%) #f7f9fa; + box-shadow: 0 0 0 2px #fff, 0 0 0 4px #53b0eb, 0 0 36px rgba(83, 176, 235, 0.25) + } + +@supports (outline-style: double) { + +[type="color"]:focus, [type="date"]:focus, [type="datetime-local"]:focus, [type="email"]:focus, [type="file"]:focus, [type="month"]:focus, [type="number"]:focus, [type="password"]:focus, [type="search"]:focus, [type="tel"]:focus, [type="text"]:focus, [type="time"]:focus, [type="url"]:focus, [type="week"]:focus, textarea:focus { + outline-style: double + } + } + +[type="color"]:hover, [type="date"]:hover, [type="datetime-local"]:hover, [type="email"]:hover, [type="file"]:hover, [type="month"]:hover, [type="number"]:hover, [type="password"]:hover, [type="search"]:hover, [type="tel"]:hover, [type="text"]:hover, [type="time"]:hover, [type="url"]:hover, [type="week"]:hover, textarea:hover { + border-color: #53b0eb; + background: /* LTR */ + linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; + } + +[type="color"]::-ms-clear, [type="date"]::-ms-clear, [type="datetime-local"]::-ms-clear, [type="email"]::-ms-clear, [type="file"]::-ms-clear, [type="month"]::-ms-clear, [type="number"]::-ms-clear, [type="password"]::-ms-clear, [type="search"]::-ms-clear, [type="tel"]::-ms-clear, [type="text"]::-ms-clear, [type="time"]::-ms-clear, [type="url"]::-ms-clear, [type="week"]::-ms-clear, textarea::-ms-clear { + display: none; + } + +[type="color"][disabled], [type="date"][disabled], [type="datetime-local"][disabled], [type="email"][disabled], [type="file"][disabled], [type="month"][disabled], [type="number"][disabled], [type="password"][disabled], [type="search"][disabled], [type="tel"][disabled], [type="text"][disabled], [type="time"][disabled], [type="url"][disabled], [type="week"][disabled], textarea[disabled] { + color: #7e96a7; + border-color: transparent; + background: linear-gradient(to right, #d7e1e8 6px, transparent 6px, transparent 100%) #f7f9fa; /* LTR */ + } + +[type="color"].error, [type="date"].error, [type="datetime-local"].error, [type="email"].error, [type="file"].error, [type="month"].error, [type="number"].error, [type="password"].error, [type="search"].error, [type="tel"].error, [type="text"].error, [type="time"].error, [type="url"].error, [type="week"].error, textarea.error { + border-color: #e33f1e; + background: /* LTR */ + linear-gradient(to right, #e33f1e 6px, transparent 6px, transparent 100%), + linear-gradient(to left, #e33f1e 2px, transparent 2px, transparent 100%) #f7f9fa + } + +[type="color"].error:focus, [type="date"].error:focus, [type="datetime-local"].error:focus, [type="email"].error:focus, [type="file"].error:focus, [type="month"].error:focus, [type="number"].error:focus, [type="password"].error:focus, [type="search"].error:focus, [type="tel"].error:focus, [type="text"].error:focus, [type="time"].error:focus, [type="url"].error:focus, [type="week"].error:focus, textarea.error:focus { + box-shadow: 0 0 0 2px #fff, 0 0 0 4px #53b0eb, 0 0 36px rgba(83, 176, 235, 0.25); + } + +[dir="ltr"] [type="color"].form-element--small,[dir="ltr"] [type="date"].form-element--small,[dir="ltr"] [type="datetime-local"].form-element--small,[dir="ltr"] [type="email"].form-element--small,[dir="ltr"] [type="file"].form-element--small,[dir="ltr"] [type="month"].form-element--small,[dir="ltr"] [type="number"].form-element--small,[dir="ltr"] [type="password"].form-element--small,[dir="ltr"] [type="search"].form-element--small,[dir="ltr"] [type="tel"].form-element--small,[dir="ltr"] [type="text"].form-element--small,[dir="ltr"] [type="time"].form-element--small,[dir="ltr"] [type="url"].form-element--small,[dir="ltr"] [type="week"].form-element--small,[dir="ltr"] textarea.form-element--small { + padding-left: 19.5px +} + +[dir="rtl"] [type="color"].form-element--small,[dir="rtl"] [type="date"].form-element--small,[dir="rtl"] [type="datetime-local"].form-element--small,[dir="rtl"] [type="email"].form-element--small,[dir="rtl"] [type="file"].form-element--small,[dir="rtl"] [type="month"].form-element--small,[dir="rtl"] [type="number"].form-element--small,[dir="rtl"] [type="password"].form-element--small,[dir="rtl"] [type="search"].form-element--small,[dir="rtl"] [type="tel"].form-element--small,[dir="rtl"] [type="text"].form-element--small,[dir="rtl"] [type="time"].form-element--small,[dir="rtl"] [type="url"].form-element--small,[dir="rtl"] [type="week"].form-element--small,[dir="rtl"] textarea.form-element--small { + padding-right: 19.5px +} + +[dir="ltr"] [type="color"].form-element--small,[dir="ltr"] [type="date"].form-element--small,[dir="ltr"] [type="datetime-local"].form-element--small,[dir="ltr"] [type="email"].form-element--small,[dir="ltr"] [type="file"].form-element--small,[dir="ltr"] [type="month"].form-element--small,[dir="ltr"] [type="number"].form-element--small,[dir="ltr"] [type="password"].form-element--small,[dir="ltr"] [type="search"].form-element--small,[dir="ltr"] [type="tel"].form-element--small,[dir="ltr"] [type="text"].form-element--small,[dir="ltr"] [type="time"].form-element--small,[dir="ltr"] [type="url"].form-element--small,[dir="ltr"] [type="week"].form-element--small,[dir="ltr"] textarea.form-element--small { + padding-right: 15.5px +} + +[dir="rtl"] [type="color"].form-element--small,[dir="rtl"] [type="date"].form-element--small,[dir="rtl"] [type="datetime-local"].form-element--small,[dir="rtl"] [type="email"].form-element--small,[dir="rtl"] [type="file"].form-element--small,[dir="rtl"] [type="month"].form-element--small,[dir="rtl"] [type="number"].form-element--small,[dir="rtl"] [type="password"].form-element--small,[dir="rtl"] [type="search"].form-element--small,[dir="rtl"] [type="tel"].form-element--small,[dir="rtl"] [type="text"].form-element--small,[dir="rtl"] [type="time"].form-element--small,[dir="rtl"] [type="url"].form-element--small,[dir="rtl"] [type="week"].form-element--small,[dir="rtl"] textarea.form-element--small { + padding-left: 15.5px +} + +[type="color"].form-element--small, [type="date"].form-element--small, [type="datetime-local"].form-element--small, [type="email"].form-element--small, [type="file"].form-element--small, [type="month"].form-element--small, [type="number"].form-element--small, [type="password"].form-element--small, [type="search"].form-element--small, [type="tel"].form-element--small, [type="text"].form-element--small, [type="time"].form-element--small, [type="url"].form-element--small, [type="week"].form-element--small, textarea.form-element--small { + min-height: 45px; + padding-top: 8.5px; + padding-bottom: 8.5px; + } + +[type="date"] { + /* Ensure that date field isn't larger than other fields. */ +} + +[dir="ltr"] [type="date"]::-webkit-datetime-edit-fields-wrapper { + padding-left: 0 +} + +[dir="rtl"] [type="date"]::-webkit-datetime-edit-fields-wrapper { + padding-right: 0 +} + +[dir="ltr"] [type="date"]::-webkit-datetime-edit-fields-wrapper { + padding-right: 0 +} + +[dir="rtl"] [type="date"]::-webkit-datetime-edit-fields-wrapper { + padding-left: 0 +} + +[type="date"]::-webkit-datetime-edit-fields-wrapper { + padding-top: 0; + padding-bottom: 0; + } + +[dir="rtl"] [type="color"], + [dir="rtl"] [type="date"], + [dir="rtl"] [type="datetime-local"], + [dir="rtl"] [type="email"], + [dir="rtl"] [type="file"], + [dir="rtl"] [type="month"], + [dir="rtl"] [type="number"], + [dir="rtl"] [type="password"], + [dir="rtl"] [type="search"], + [dir="rtl"] [type="tel"], + [dir="rtl"] [type="text"], + [dir="rtl"] [type="time"], + [dir="rtl"] [type="url"], + [dir="rtl"] [type="week"], + [dir="rtl"] textarea { + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; + background: linear-gradient(to left, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa + } + +[dir="rtl"] [type="color"]:focus, [dir="rtl"] [type="date"]:focus, [dir="rtl"] [type="datetime-local"]:focus, [dir="rtl"] [type="email"]:focus, [dir="rtl"] [type="file"]:focus, [dir="rtl"] [type="month"]:focus, [dir="rtl"] [type="number"]:focus, [dir="rtl"] [type="password"]:focus, [dir="rtl"] [type="search"]:focus, [dir="rtl"] [type="tel"]:focus, [dir="rtl"] [type="text"]:focus, [dir="rtl"] [type="time"]:focus, [dir="rtl"] [type="url"]:focus, [dir="rtl"] [type="week"]:focus, [dir="rtl"] textarea:focus { + background: + linear-gradient(to left, #7e96a7 6px, transparent 6px, transparent 100%), + linear-gradient(to right, #7e96a7 2px, transparent 2px, transparent 100%) #f7f9fa; + } + +[dir="rtl"] [type="color"]:hover, [dir="rtl"] [type="date"]:hover, [dir="rtl"] [type="datetime-local"]:hover, [dir="rtl"] [type="email"]:hover, [dir="rtl"] [type="file"]:hover, [dir="rtl"] [type="month"]:hover, [dir="rtl"] [type="number"]:hover, [dir="rtl"] [type="password"]:hover, [dir="rtl"] [type="search"]:hover, [dir="rtl"] [type="tel"]:hover, [dir="rtl"] [type="text"]:hover, [dir="rtl"] [type="time"]:hover, [dir="rtl"] [type="url"]:hover, [dir="rtl"] [type="week"]:hover, [dir="rtl"] textarea:hover { + background: + linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%), + linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa; + } + +[dir="rtl"] [type="color"][disabled], [dir="rtl"] [type="date"][disabled], [dir="rtl"] [type="datetime-local"][disabled], [dir="rtl"] [type="email"][disabled], [dir="rtl"] [type="file"][disabled], [dir="rtl"] [type="month"][disabled], [dir="rtl"] [type="number"][disabled], [dir="rtl"] [type="password"][disabled], [dir="rtl"] [type="search"][disabled], [dir="rtl"] [type="tel"][disabled], [dir="rtl"] [type="text"][disabled], [dir="rtl"] [type="time"][disabled], [dir="rtl"] [type="url"][disabled], [dir="rtl"] [type="week"][disabled], [dir="rtl"] textarea[disabled] { + background: linear-gradient(to left, #d7e1e8 6px, transparent 6px, transparent 100%) #f7f9fa; + } + +[dir="rtl"] [type="color"].error, [dir="rtl"] [type="date"].error, [dir="rtl"] [type="datetime-local"].error, [dir="rtl"] [type="email"].error, [dir="rtl"] [type="file"].error, [dir="rtl"] [type="month"].error, [dir="rtl"] [type="number"].error, [dir="rtl"] [type="password"].error, [dir="rtl"] [type="search"].error, [dir="rtl"] [type="tel"].error, [dir="rtl"] [type="text"].error, [dir="rtl"] [type="time"].error, [dir="rtl"] [type="url"].error, [dir="rtl"] [type="week"].error, [dir="rtl"] textarea.error { + background: + linear-gradient(to left, #e33f1e 6px, transparent 6px, transparent 100%), + linear-gradient(to right, #e33f1e 2px, transparent 2px, transparent 100%) #f7f9fa; + } diff --git a/core/themes/olivero/css/components/form-text.pcss.css b/core/themes/olivero/css/components/form-text.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..ceb3a229df638ccd1c9fe8df4ef4902b6b2ebd74 --- /dev/null +++ b/core/themes/olivero/css/components/form-text.pcss.css @@ -0,0 +1,145 @@ +/** + * @file + * Text input elements. + */ + +@import "../base/variables.pcss.css"; + +[type="color"], +[type="date"], +[type="datetime-local"], +[type="email"], +[type="file"], +[type="month"], +[type="number"], +[type="password"], +[type="search"], +[type="tel"], +[type="text"], +[type="time"], +[type="url"], +[type="week"], +textarea { + max-width: 100%; + min-height: var(--sp3); + padding-block: calc((var(--sp3) - (var(--font-size-base) * 1.5) - (var(--form-element-border-size-base) * 2)) / 2); + padding-inline-start: calc(var(--sp1) + var(--form-element-border-size-left)); + padding-inline-end: calc(var(--sp1) + var(--form-element-border-size-base)); + color: var(--color--gray-10); + border-width: var(--form-element-border-size-base) 0; + border-style: solid; + border-color: transparent; + border-top-left-radius: 0; /* LTR */ + border-top-right-radius: var(--border-radius-base); /* LTR */ + border-bottom-right-radius: var(--border-radius-base); /* LTR */ + border-bottom-left-radius: 0; /* LTR */ + outline: var(--outline--thin); + background: linear-gradient(to right, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95); /* LTR */ + font-family: inherit; + font-size: var(--font-size-base); + line-height: calc(var(--font-size-base) * 1.5); + appearance: none; + + &:focus { + border-color: var(--color--gray-30); + outline: var(--outline--thick); + background: /* LTR */ + linear-gradient(to right, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to left, var(--color--gray-30) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + box-shadow: var(--shadow-focusable); + + @supports (outline-style: double) { + outline-style: double; + } + } + + &:hover { + border-color: var(--color--blue-70); + background: /* LTR */ + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + } + + &::-ms-clear { + display: none; + } + + &[disabled] { + color: var(--color--gray-30); + border-color: transparent; + background: linear-gradient(to right, var(--color--gray-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95); /* LTR */ + } + + &.error { + border-color: var(--color--red); + background: /* LTR */ + linear-gradient(to right, var(--color--red) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to left, var(--color--red) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + + &:focus { + box-shadow: var(--shadow-focusable); + } + } + + &.form-element--small { + min-height: var(--sp2-5); + padding-block: calc((var(--sp2-5) - (var(--font-size-base) * 1.5) - (var(--form-element-border-size-base) * 2)) / 2); + padding-inline-start: calc(var(--sp0-75) + var(--form-element-border-size-left)); + padding-inline-end: calc(var(--sp0-75) + var(--form-element-border-size-base)); + } +} + +[type="date"] { + /* Ensure that date field isn't larger than other fields. */ + &::-webkit-datetime-edit-fields-wrapper { + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + } +} + +[dir="rtl"] { + & [type="color"], + & [type="date"], + & [type="datetime-local"], + & [type="email"], + & [type="file"], + & [type="month"], + & [type="number"], + & [type="password"], + & [type="search"], + & [type="tel"], + & [type="text"], + & [type="time"], + & [type="url"], + & [type="week"], + & textarea { + border-top-left-radius: var(--border-radius-base); + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: var(--border-radius-base); + background: linear-gradient(to left, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95); + + &:focus { + background: + linear-gradient(to left, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to right, var(--color--gray-30) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + } + + &:hover { + background: + linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + } + + &[disabled] { + background: linear-gradient(to left, var(--color--gray-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95); + } + + &.error { + background: + linear-gradient(to left, var(--color--red) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), + linear-gradient(to right, var(--color--red) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95); + } + } +} diff --git a/core/themes/olivero/css/components/form-textarea.css b/core/themes/olivero/css/components/form-textarea.css new file mode 100644 index 0000000000000000000000000000000000000000..aed5548754cdcb2fb37ee93e8e566223a252e4e5 --- /dev/null +++ b/core/themes/olivero/css/components/form-textarea.css @@ -0,0 +1,17 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Textarea. + */ + +textarea { + display: block; + width: 100%; + min-height: 144px; +} diff --git a/core/themes/olivero/css/components/form-textarea.pcss.css b/core/themes/olivero/css/components/form-textarea.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..3652c6feedac242aa97d568d1653e8c171f8c9e1 --- /dev/null +++ b/core/themes/olivero/css/components/form-textarea.pcss.css @@ -0,0 +1,12 @@ +/** + * @file + * Textarea. + */ + +@import "../base/variables.pcss.css"; + +textarea { + display: block; + width: 100%; + min-height: var(--sp8); +} diff --git a/core/themes/olivero/css/components/form.css b/core/themes/olivero/css/components/form.css new file mode 100644 index 0000000000000000000000000000000000000000..90cb9125d0d9b454c5f2f7253da87adfa3fc50a0 --- /dev/null +++ b/core/themes/olivero/css/components/form.css @@ -0,0 +1,234 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Main form and form item styles. + */ + +:-ms-input-placeholder { + color: #7e96a7; +} + +::placeholder { + color: #7e96a7; +} + +/* IE 10 and 11 needs this set as important. */ + +:-ms-input-placeholder { + color: #7e96a7 !important; +} + +/** + * General form item. + */ + +.form-item { + margin-top: 18px; + margin-bottom: 18px; +} + +.form-item__label--multiple-value-form { + margin-top: 0; + margin-bottom: 0; + font-size: inherit; + font-weight: inherit; + line-height: inherit; +} + +/** + * When a table row or a container-inline has a single form item, prevent it + * from adding unnecessary extra spacing. + * If it has multiple form items, allow spacing between them, overriding Classy. + */ + +tr .form-item, +.container-inline .form-item { + margin-top: 9px; + margin-bottom: 9px; +} + +/** + * Form element label. + */ + +.form-item__label { + display: table; + margin-top: 9px; + margin-bottom: 9px; + font-size: 18px; + font-weight: 700; +} + +[dir="ltr"] .container-inline .form-item__label { + margin-right: 1em; +} + +[dir="rtl"] .container-inline .form-item__label { + margin-left: 1em; +} + +.form-item__label--multiple-value-form { + margin-top: 0; + margin-bottom: 0; + font-size: inherit; + font-weight: inherit; + line-height: inherit; +} + +.form-item__label[for] { + cursor: pointer; +} + +.form-item__label.option { + display: inline; + font-weight: normal; +} + +/* Label states. */ + +.form-item__label.is-disabled { + cursor: default; + color: #afb8be; +} + +/* Form required star icon */ + +.form-item__label.form-required::after, +.fieldset__label.form-required::after, +.required-mark::after { + display: inline-block; + width: 0.5rem; + height: 0.5rem; + margin-left: 0.3em; + margin-right: 0.3em; + content: ""; + vertical-align: text-top; + /* Use a background image to prevent screen readers from announcing the text. */ + background-image: url("data:image/svg+xml,%3Csvg height='16' width='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 7.562 1.114-3.438c2.565.906 4.43 1.688 5.59 2.35-.306-2.921-.467-4.93-.484-6.027h3.511c-.05 1.597-.234 3.6-.558 6.003 1.664-.838 3.566-1.613 5.714-2.325l1.113 3.437c-2.05.678-4.06 1.131-6.028 1.356.984.856 2.372 2.381 4.166 4.575l-2.906 2.059c-.935-1.274-2.041-3.009-3.316-5.206-1.194 2.275-2.244 4.013-3.147 5.206l-2.856-2.059c1.872-2.307 3.211-3.832 4.017-4.575-2.081-.402-4.058-.856-5.93-1.356' fill='%232494DB'/%3E%3C/svg%3E%0A"); + background-repeat: no-repeat; + background-size: 0.5rem 0.5rem +} + +@media screen and (-ms-high-contrast: active) { + +.form-item__label.form-required::after, +.fieldset__label.form-required::after, +.required-mark::after { + background-image: url("data:image/svg+xml,%3Csvg height='16' width='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 7.562 1.114-3.438c2.565.906 4.43 1.688 5.59 2.35-.306-2.921-.467-4.93-.484-6.027h3.511c-.05 1.597-.234 3.6-.558 6.003 1.664-.838 3.566-1.613 5.714-2.325l1.113 3.437c-2.05.678-4.06 1.131-6.028 1.356.984.856 2.372 2.381 4.166 4.575l-2.906 2.059c-.935-1.274-2.041-3.009-3.316-5.206-1.194 2.275-2.244 4.013-3.147 5.206l-2.856-2.059c1.872-2.307 3.211-3.832 4.017-4.575-2.081-.402-4.058-.856-5.93-1.356' fill='%23ffffff'/%3E%3C/svg%3E%0A") +} + } + +/** + * Form item description. + */ + +.form-item__description { + margin-top: 9px; + margin-bottom: 9px; + font-size: 14px; + line-height: 18px; +} + +.field-multiple-table + .form-item__description { + margin-top: 0; +} + +/** + * Error message (Inline form errors). + */ + +[dir="ltr"] .form-item--error-message { + padding-left: 27px; +} + +[dir="rtl"] .form-item--error-message { + padding-right: 27px; +} + +.form-item--error-message { + margin-top: 9px; + margin-bottom: 9px; + color: #e33f1e; + background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23E33F1E' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: left top; /* LTR */ + background-size: 18px 18px; + font-size: 14px; + line-height: 18px +} + +@media screen and (-ms-high-contrast: active) { + +.form-item--error-message { + background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23ffffff' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E") +} + } + +[dir="rtl"] .form-item--error-message { + background-position: right top; +} + +/** + * Form actions. + */ + +.form-actions { + display: flex; + flex-wrap: wrap; + align-items: flex-start; + margin-top: 9px; + margin-bottom: 9px; +} + +.form-actions .button, +.form-actions .action-link { + margin-top: 9px; + margin-bottom: 9px; +} + +.form-actions .ajax-progress--throbber { + -ms-grid-row-align: center; + align-self: center; +} + +/** + * Custom label placement for editor filter format select. + */ + +.form-item--editor-format { + display: flex; + flex-wrap: wrap; + align-items: center; + max-width: 100%; +} + +.form-item--editor-format .form-item__label, +.form-item--editor-format .form-item__prefix, +.form-item--editor-format .form-item__suffix, +.form-item--editor-format .form-element--editor-format { + min-width: 1px; +} + +[dir="ltr"] .form-item--editor-format .form-item__label,[dir="ltr"] +.form-item--editor-format .form-item__prefix,[dir="ltr"] +.form-item--editor-format .form-item__suffix { + margin-right: 9px; +} + +[dir="rtl"] .form-item--editor-format .form-item__label,[dir="rtl"] +.form-item--editor-format .form-item__prefix,[dir="rtl"] +.form-item--editor-format .form-item__suffix { + margin-left: 9px; +} + +.form-item--editor-format .form-item__description, +.form-item--editor-format .form-item--error-message { + flex: 0 1 100%; + min-width: 1px; +} diff --git a/core/themes/olivero/css/components/form.pcss.css b/core/themes/olivero/css/components/form.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..edb2f6f856f1b98a2c1bb704a4c6ef96ff37f2e5 --- /dev/null +++ b/core/themes/olivero/css/components/form.pcss.css @@ -0,0 +1,179 @@ +/** + * @file + * Main form and form item styles. + */ + +@import "../base/variables.pcss.css"; + +::placeholder { + color: var(--color--gray-30); +} + +/* IE 10 and 11 needs this set as important. */ +:-ms-input-placeholder { + color: var(--color--gray-30) !important; +} + +/** + * General form item. + */ +.form-item { + margin-block: var(--sp1); +} + +.form-item__label--multiple-value-form { + margin-block: 0; + font-size: inherit; + font-weight: inherit; + line-height: inherit; +} + +/** + * When a table row or a container-inline has a single form item, prevent it + * from adding unnecessary extra spacing. + * If it has multiple form items, allow spacing between them, overriding Classy. + */ +tr .form-item, +.container-inline .form-item { + margin-block: var(--sp0-5); +} + +/** + * Form element label. + */ +.form-item__label { + display: table; + margin-block: var(--sp0-5); + font-size: var(--font-size-l); + font-weight: 700; +} + +.container-inline .form-item__label { + margin-inline-end: 1em; +} + +.form-item__label--multiple-value-form { + margin-block: 0; + font-size: inherit; + font-weight: inherit; + line-height: inherit; +} + +.form-item__label[for] { + cursor: pointer; +} + +.form-item__label.option { + display: inline; + font-weight: normal; +} + +/* Label states. */ +.form-item__label.is-disabled { + cursor: default; + color: var(--color--gray-45); +} + +/* Form required star icon */ +.form-item__label.form-required::after, +.fieldset__label.form-required::after, +.required-mark::after { + display: inline-block; + width: 0.5rem; + height: 0.5rem; + margin-inline: 0.3em; + content: ""; + vertical-align: text-top; + /* Use a background image to prevent screen readers from announcing the text. */ + background-image: url("data:image/svg+xml,%3Csvg height='16' width='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 7.562 1.114-3.438c2.565.906 4.43 1.688 5.59 2.35-.306-2.921-.467-4.93-.484-6.027h3.511c-.05 1.597-.234 3.6-.558 6.003 1.664-.838 3.566-1.613 5.714-2.325l1.113 3.437c-2.05.678-4.06 1.131-6.028 1.356.984.856 2.372 2.381 4.166 4.575l-2.906 2.059c-.935-1.274-2.041-3.009-3.316-5.206-1.194 2.275-2.244 4.013-3.147 5.206l-2.856-2.059c1.872-2.307 3.211-3.832 4.017-4.575-2.081-.402-4.058-.856-5.93-1.356' fill='%232494DB'/%3E%3C/svg%3E%0A"); + background-repeat: no-repeat; + background-size: 0.5rem 0.5rem; + + @media screen and (-ms-high-contrast: active) { + background-image: url("data:image/svg+xml,%3Csvg height='16' width='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 7.562 1.114-3.438c2.565.906 4.43 1.688 5.59 2.35-.306-2.921-.467-4.93-.484-6.027h3.511c-.05 1.597-.234 3.6-.558 6.003 1.664-.838 3.566-1.613 5.714-2.325l1.113 3.437c-2.05.678-4.06 1.131-6.028 1.356.984.856 2.372 2.381 4.166 4.575l-2.906 2.059c-.935-1.274-2.041-3.009-3.316-5.206-1.194 2.275-2.244 4.013-3.147 5.206l-2.856-2.059c1.872-2.307 3.211-3.832 4.017-4.575-2.081-.402-4.058-.856-5.93-1.356' fill='%23ffffff'/%3E%3C/svg%3E%0A"); + } +} + +/** + * Form item description. + */ +.form-item__description { + margin-block: var(--sp0-5); + font-size: var(--font-size-s); + line-height: var(--line-height-s); +} + +.field-multiple-table + .form-item__description { + margin-block-start: 0; +} + +/** + * Error message (Inline form errors). + */ +.form-item--error-message { + margin-block: var(--sp0-5); + padding-inline-start: var(--sp1-5); + color: var(--color--red); + background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23E33F1E' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: left top; /* LTR */ + background-size: var(--sp1) var(--sp1); + font-size: var(--font-size-s); + line-height: var(--line-height-s); + + @media screen and (-ms-high-contrast: active) { + background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23ffffff' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E"); + } +} + +[dir="rtl"] .form-item--error-message { + background-position: right top; +} + +/** + * Form actions. + */ +.form-actions { + display: flex; + flex-wrap: wrap; + align-items: flex-start; + margin-block: var(--sp0-5); +} + +.form-actions .button, +.form-actions .action-link { + margin-block: var(--sp0-5); +} + +.form-actions .ajax-progress--throbber { + align-self: center; +} + +/** + * Custom label placement for editor filter format select. + */ +.form-item--editor-format { + display: flex; + flex-wrap: wrap; + align-items: center; + max-width: 100%; +} + +.form-item--editor-format .form-item__label, +.form-item--editor-format .form-item__prefix, +.form-item--editor-format .form-item__suffix, +.form-item--editor-format .form-element--editor-format { + min-width: 1px; +} + +.form-item--editor-format .form-item__label, +.form-item--editor-format .form-item__prefix, +.form-item--editor-format .form-item__suffix { + margin-inline-end: var(--sp0-5); +} + +.form-item--editor-format .form-item__description, +.form-item--editor-format .form-item--error-message { + flex: 0 1 100%; + min-width: 1px; +} diff --git a/core/themes/olivero/css/components/forum.css b/core/themes/olivero/css/components/forum.css new file mode 100644 index 0000000000000000000000000000000000000000..9226d4e52f245c20e59be6b59423acd769d99e99 --- /dev/null +++ b/core/themes/olivero/css/components/forum.css @@ -0,0 +1,22 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Forum specific styles. + */ + +.forum table { + width: 100%; + } + +.forum__name--link, +.forum__last-reply a, +.forum__title a { + color: #0d77b5; + font-weight: bold; +} diff --git a/core/themes/olivero/css/components/forum.pcss.css b/core/themes/olivero/css/components/forum.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..23e1b0ff7c3ed0363075a55a631a220cdae1dbfa --- /dev/null +++ b/core/themes/olivero/css/components/forum.pcss.css @@ -0,0 +1,19 @@ +/** + * @file + * Forum specific styles. + */ + +@import "../base/variables.pcss.css"; + +.forum { + & table { + width: 100%; + } +} + +.forum__name--link, +.forum__last-reply a, +.forum__title a { + color: var(--color--blue-20); + font-weight: bold; +} diff --git a/core/themes/olivero/css/components/header-buttons-mobile.css b/core/themes/olivero/css/components/header-buttons-mobile.css new file mode 100644 index 0000000000000000000000000000000000000000..697d0947dc87fcf6afe479750f862699dcc08907 --- /dev/null +++ b/core/themes/olivero/css/components/header-buttons-mobile.css @@ -0,0 +1,50 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Header Mobile Buttons. + */ + +[dir="ltr"] .mobile-buttons { + margin-left: auto +} + +[dir="rtl"] .mobile-buttons { + margin-right: auto +} + +.mobile-buttons { + margin-top: 9px +} + +@media (min-width: 500px) { + +.mobile-buttons { + margin-top: 36px +} + } + +@media (min-width: 700px) { + +.mobile-buttons { + margin-top: 72px +} + } + +@media (min-width: 1200px) { + +.mobile-buttons { + margin-top: 108px +} + } + +@media (min-width: 1200px) { + body:not(.is-always-mobile-nav) .mobile-buttons { + display: none; + } +} diff --git a/core/themes/olivero/css/components/header-buttons-mobile.pcss.css b/core/themes/olivero/css/components/header-buttons-mobile.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..9958d80b1b748a5d8c986e51036135db71a3b633 --- /dev/null +++ b/core/themes/olivero/css/components/header-buttons-mobile.pcss.css @@ -0,0 +1,29 @@ +/** + * @file + * Header Mobile Buttons. + */ + +@import "../base/variables.pcss.css"; + +.mobile-buttons { + margin-block-start: var(--sp0-5); + margin-inline-start: auto; + + @media (--sm) { + margin-block-start: var(--sp2); + } + + @media (--md) { + margin-block-start: var(--sp4); + } + + @media (--nav) { + margin-block-start: var(--sp6); + } +} + +@media (--nav) { + body:not(.is-always-mobile-nav) .mobile-buttons { + display: none; + } +} diff --git a/core/themes/olivero/css/components/header-navigation.css b/core/themes/olivero/css/components/header-navigation.css new file mode 100644 index 0000000000000000000000000000000000000000..0fc05fb4e4be40044e7e85051b43f63a277b83c0 --- /dev/null +++ b/core/themes/olivero/css/components/header-navigation.css @@ -0,0 +1,268 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Navigation in header. + */ + +[dir="ltr"] .header-nav { + right: 0 +} + +[dir="rtl"] .header-nav { + left: 0 +} + +[dir="ltr"] .header-nav { + padding-left: 18px +} + +[dir="rtl"] .header-nav { + padding-right: 18px +} + +[dir="ltr"] .header-nav { + padding-right: 18px +} + +[dir="rtl"] .header-nav { + padding-left: 18px +} + +.header-nav { + position: fixed; + z-index: 5; /* appear above overlay */ + top: 0; + visibility: hidden; + overflow: auto; + /* Ensure that header nav not use additional space and force + system branding block text to unnecessarily wrap. */ + flex-basis: 0; + flex-grow: 1; /* Necessary for IE11. */ + width: 100%; + max-width: 500px; + height: 100%; + padding-top: 0; + padding-bottom: 18px; + transform: translateX(101%); /* LTR */ + border-top: solid #fff 54px; /* Create room for the "close" button. */ + background-color: #fff; + box-shadow: 0 0 72px rgba(0, 0, 0, 0.1) +} + +.header-nav.is-active { + visibility: visible; + } + +@supports (flex-basis: max-content) { + +.header-nav { + flex-basis: max-content +} + } + +@media (min-width: 500px) { + +.header-nav { + border-top-width: 90px +} + } + +@media (min-width: 700px) { + +[dir="ltr"] .header-nav { + padding-left: 54px + } + +[dir="rtl"] .header-nav { + padding-right: 54px + } + +.header-nav { + padding-bottom: 54px; + border-top-width: 126px +} + } + +@media (min-width: 1000px) { + +.header-nav { + -ms-grid-column: 5; + -ms-grid-column-span: 9; + grid-column: 5 / 14 +} + } + +/* + * Only apply transition styles when JS is loaded. This + * works around https://bugs.chromium.org/p/chromium/issues/detail?id=332189 + */ + +html.js .header-nav { + transition: visibility 0.2s, transform 0.2s; +} + +/* Toolbar is fixed, and tray is vertical. */ + +body.toolbar-vertical .header-nav { + border-top-width: 93px +} + +@media (min-width: 500px) { + +body.toolbar-vertical .header-nav { + border-top-width: 129px +} + } + +/* Toolbar is fixed, and tray is vertical or toolbar is horizontal and tray is closed. */ + +@media (min-width: 700px) { + +body.toolbar-vertical .header-nav, +body.toolbar-horizontal.toolbar-fixed .header-nav { + border-top-width: 165px +} + } + +/* Toolbar is horizontal fixed, and tray is open. */ + +@media (min-width: 700px) { + +body.toolbar-horizontal.toolbar-fixed.toolbar-tray-open .header-nav { + border-top-width: 205px +} + } + +@media (min-width: 1200px) { + +[dir="ltr"] body:not(.is-always-mobile-nav) .header-nav { + padding-left: 0 + } + +[dir="rtl"] body:not(.is-always-mobile-nav) .header-nav { + padding-right: 0 + } + +[dir="ltr"] body:not(.is-always-mobile-nav) .header-nav { + padding-right: 0 + } + +[dir="rtl"] body:not(.is-always-mobile-nav) .header-nav { + padding-left: 0 + } + +body:not(.is-always-mobile-nav) .header-nav { + position: static; + display: flex; + visibility: visible; + overflow: visible; + -ms-grid-column: 5; + -ms-grid-column-span: 10; + grid-column: 5 / 15; + align-items: center; + justify-content: flex-end; + max-width: none; + height: 108px; + margin-top: auto; + padding-top: 0; + padding-bottom: 0; + transition: transform 0.2s; + transform: none; + border-top: 0; + box-shadow: none +} + } + +body.is-always-mobile-nav { + /* Toolbar is fixed, and tray is vertical or toolbar is horizontal and tray is closed. */ +} + +@media (min-width: 1200px) { + +body.is-always-mobile-nav.toolbar-vertical .header-nav, + body.is-always-mobile-nav.toolbar-horizontal.toolbar-fixed .header-nav { + border-top-width: 237px + } + } + +body.is-always-mobile-nav { + + /* Toolbar is horizontal fixed, and tray is open. */ +} + +@media (min-width: 1200px) { + +body.is-always-mobile-nav.toolbar-horizontal.toolbar-fixed.toolbar-tray-open .header-nav { + border-top-width: 277px + } + } + +@media (min-width: 1200px) { + +[dir="ltr"] body.is-always-mobile-nav .header-nav { + left: 100vw; + right: auto + } + +[dir="rtl"] body.is-always-mobile-nav .header-nav { + right: 100vw; + left: auto + } + +[dir="ltr"] body.is-always-mobile-nav .header-nav { + padding-right: 18px + } + +[dir="rtl"] body.is-always-mobile-nav .header-nav { + padding-left: 18px + } + +body.is-always-mobile-nav .header-nav { + overflow: auto; + max-width: calc(7*((100vw - 645px)/14 + 36px)); + transition: transform 0.2s, visibility 0.2s; + border-top-width: 198px + } + + body.is-always-mobile-nav .header-nav.is-active { + transform: translateX(-100%); /* LTR */ + } + } + +@media (min-width: 1440px) { + +[dir="ltr"] body.is-always-mobile-nav .header-nav { + padding-right: calc(100vw - 1422px) + } + +[dir="rtl"] body.is-always-mobile-nav .header-nav { + padding-left: calc(100vw - 1422px) + } + +body.is-always-mobile-nav .header-nav { + max-width: calc(100vw - 783px) + } + } + +/* Necessary to override specificity of LTR and RTL compiled selectors. */ + +[dir] .header-nav.is-active { + transform: translateX(0); +} + +@media (min-width: 1200px) { + +[dir="rtl"] body.is-always-mobile-nav .header-nav.is-active { + transform: translateX(100%) + } + } + +[dir="rtl"] .header-nav { + transform: translateX(-101%); + } diff --git a/core/themes/olivero/css/components/header-navigation.pcss.css b/core/themes/olivero/css/components/header-navigation.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..bbcb9065389633ecb7fa9f629316821d451cb88d --- /dev/null +++ b/core/themes/olivero/css/components/header-navigation.pcss.css @@ -0,0 +1,159 @@ +/** + * @file + * Navigation in header. + */ + +@import "../base/variables.pcss.css"; + +.header-nav { + position: fixed; + z-index: 5; /* appear above overlay */ + inset-block-start: 0; + inset-inline-end: 0; + visibility: hidden; + overflow: auto; + /* Ensure that header nav not use additional space and force + system branding block text to unnecessarily wrap. */ + flex-basis: 0; + flex-grow: 1; /* Necessary for IE11. */ + width: 100%; + max-width: var(--mobile-nav-width); + height: 100%; + padding-block: 0 var(--sp); + padding-inline-start: var(--sp); + padding-inline-end: var(--sp); + transform: translateX(101%); /* LTR */ + border-block-start: solid var(--color--white) var(--sp3); /* Create room for the "close" button. */ + background-color: var(--color--white); + box-shadow: 0 0 72px rgba(0, 0, 0, 0.1); + + &.is-active { + visibility: visible; + } + + @supports (flex-basis: max-content) { + flex-basis: max-content; + } + + @media (--sm) { + border-top-width: var(--sp5); + } + + @media (--md) { + padding-block-end: var(--sp3); + padding-inline-start: var(--sp3); + border-top-width: var(--sp7); + } + + @media (--lg) { + grid-column: 5 / 14; + } +} + +/* + * Only apply transition styles when JS is loaded. This + * works around https://bugs.chromium.org/p/chromium/issues/detail?id=332189 + */ +html.js .header-nav { + transition: visibility 0.2s, transform 0.2s; +} + +/* Toolbar is fixed, and tray is vertical. */ +body.toolbar-vertical .header-nav { + border-top-width: calc(var(--toolbar-height) + var(--sp3)); + + @media (--sm) { + border-top-width: calc(var(--toolbar-height) + var(--sp5)); + } +} + +/* Toolbar is fixed, and tray is vertical or toolbar is horizontal and tray is closed. */ +body.toolbar-vertical .header-nav, +body.toolbar-horizontal.toolbar-fixed .header-nav { + @media (--md) { + border-top-width: calc(var(--toolbar-height) + var(--sp7)); + } +} + +/* Toolbar is horizontal fixed, and tray is open. */ +body.toolbar-horizontal.toolbar-fixed.toolbar-tray-open .header-nav { + @media (--md) { + border-top-width: calc(var(--toolbar-height) + var(--toolbar-tray-height) + var(--sp7)); + } +} + +body:not(.is-always-mobile-nav) .header-nav { + @media (--nav) { + position: static; + display: flex; + visibility: visible; + overflow: visible; + grid-column: 5 / 15; + align-items: center; + justify-content: flex-end; + max-width: none; + height: var(--header-height-wide-when-fixed); + margin-block-start: auto; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + transition: transform 0.2s; + transform: none; + border-block-start: 0; + box-shadow: none; + } +} + +body.is-always-mobile-nav { + /* Toolbar is fixed, and tray is vertical or toolbar is horizontal and tray is closed. */ + &.toolbar-vertical .header-nav, + &.toolbar-horizontal.toolbar-fixed .header-nav { + @media (--nav) { + border-top-width: calc(var(--toolbar-height) + var(--sp11)); + } + } + + /* Toolbar is horizontal fixed, and tray is open. */ + &.toolbar-horizontal.toolbar-fixed.toolbar-tray-open .header-nav { + @media (--nav) { + border-top-width: calc(var(--toolbar-height) + var(--toolbar-tray-height) + var(--sp11)); + } + } + + & .header-nav { + @media (--nav) { + inset-inline: 100vw auto; + overflow: auto; + max-width: calc((7 * (var(--grid-col-width--nav) + var(--grid-gap--nav)))); + padding-inline-end: var(--sp); + transition: transform 0.2s, visibility 0.2s; + border-top-width: var(--sp11); + + &.is-active { + transform: translateX(-100%); /* LTR */ + } + } + + @media (--grid-max) { + max-width: calc(100vw - (var(--max-width) + var(--content-left)) + ((7 * (var(--grid-col-width--max) + var(--grid-gap--max))))); + padding-inline-end: calc(100vw - (var(--max-width) + var(--content-left) - var(--sp))); + } + } +} + +/* Necessary to override specificity of LTR and RTL compiled selectors. */ +[dir] .header-nav.is-active { + transform: translateX(0); +} + +[dir="rtl"] { + & body.is-always-mobile-nav .header-nav.is-active { + @media (--nav) { + transform: translateX(100%); + } + } + + & .header-nav { + transform: translateX(-101%); + } +} diff --git a/core/themes/olivero/css/components/header-search-narrow.css b/core/themes/olivero/css/components/header-search-narrow.css new file mode 100644 index 0000000000000000000000000000000000000000..03ac891b7248d2f9c22949a4c0d9006eaf4cc95f --- /dev/null +++ b/core/themes/olivero/css/components/header-search-narrow.css @@ -0,0 +1,295 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Header Search Narrow Block. + */ + +.search-narrow__wrapper { + margin-left: -18px; + margin-right: -18px; + margin-bottom: 36px; + background: #000 +} + +.search-narrow__wrapper form { + display: flex; + } + +.search-narrow__wrapper .form-item { + flex-grow: 1; + margin: 0; + } + +.search-narrow__wrapper .form-actions { + margin: 0; + } + +[dir="ltr"] .search-narrow__wrapper input[type="search"] { + padding-left: 18px +} + +[dir="rtl"] .search-narrow__wrapper input[type="search"] { + padding-right: 18px +} + +[dir="ltr"] .search-narrow__wrapper input[type="search"] { + padding-right: 18px +} + +[dir="rtl"] .search-narrow__wrapper input[type="search"] { + padding-left: 18px +} + +.search-narrow__wrapper input[type="search"] { + width: calc(100% + 36px); + height: 54px; + padding-top: 0; + padding-bottom: 0; + transition: background-size 0.4s; + color: #fff; + border: solid 1px transparent; + background-color: transparent; + background-image: linear-gradient(#2494db, #2494db); /* Two values are needed for IE11 support. */ + background-repeat: no-repeat; + background-position: bottom left; /* LTR */ + background-size: 0% 5px; + box-shadow: none; + font-family: serif; + font-size: 16px; + -webkit-appearance: none + } + +.search-narrow__wrapper input[type="search"]::-ms-clear { + width: 40px; + opacity: 0.5; + } + +.search-narrow__wrapper input[type="search"]:focus { + outline: 0; + background-size: 100% 5px + + /* + We normally indicate focus by animating background-image width. This isn't + available in IE11 when in Windows high contrast mode. + */ + } + +@media screen and (-ms-high-contrast: active) { + +.search-narrow__wrapper input[type="search"]:focus { + border-bottom-width: 5px + } + } + +@media (min-width: 700px) { + +[dir="ltr"] .search-narrow__wrapper input[type="search"] { + padding-left: 36px + } + +[dir="rtl"] .search-narrow__wrapper input[type="search"] { + padding-right: 36px + } + +[dir="ltr"] .search-narrow__wrapper input[type="search"] { + padding-right: 36px + } + +[dir="rtl"] .search-narrow__wrapper input[type="search"] { + padding-left: 36px + } + +.search-narrow__wrapper input[type="search"] { + padding-top: 36px; + padding-bottom: 36px + } + } + +[dir="ltr"] .search-narrow__wrapper .search-form__submit { + margin-left: 0 +} + +[dir="rtl"] .search-narrow__wrapper .search-form__submit { + margin-right: 0 +} + +[dir="ltr"] .search-narrow__wrapper .search-form__submit { + margin-right: 0 +} + +[dir="rtl"] .search-narrow__wrapper .search-form__submit { + margin-left: 0 +} + +[dir="ltr"] .search-narrow__wrapper .search-form__submit { + padding-left: 0 +} + +[dir="rtl"] .search-narrow__wrapper .search-form__submit { + padding-right: 0 +} + +[dir="ltr"] .search-narrow__wrapper .search-form__submit { + padding-right: 0 +} + +[dir="rtl"] .search-narrow__wrapper .search-form__submit { + padding-left: 0 +} + +.search-narrow__wrapper .search-form__submit { + position: relative; + overflow: hidden; + -ms-grid-row-align: stretch; + align-self: stretch; + width: 54px; + height: auto; + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + cursor: pointer; + border-color: transparent; + background-color: transparent + + /* + When in Windows high contrast mode, FF will will not output either background + images or SVGs that are nested directly within a <button> element, so we add a <span>. + */ + } + +[dir="ltr"] .search-narrow__wrapper .search-form__submit .icon--search { + left: 0 +} + +[dir="rtl"] .search-narrow__wrapper .search-form__submit .icon--search { + right: 0 +} + +.search-narrow__wrapper .search-form__submit .icon--search { + position: absolute; + top: 0; + display: block; + width: 100%; /* Width of the SVG background image. */ + height: 100%; + pointer-events: none; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='26' height='27.2' viewBox='0 0 26 27.2'%3e %3cpath fill='%23fff' d='M25.8,25.5l-5.3-5.3c2.1-2.1,3.4-5.1,3.4-8.3C23.9,5.3,18.5,0,11.9,0C5.3,0,0,5.3,0,11.9c0,6.6,5.3,11.9,11.9,11.9c2.6,0,5.1-0.9,7-2.3l5.4,5.4c0.4,0.4,1,0.4,1.4,0C26.1,26.6,26.1,25.9,25.8,25.5z M11.9,21.9c-5.5,0-9.9-4.4-9.9-9.9S6.4,2,11.9,2c5.5,0,9.9,4.4,9.9,9.9S17.4,21.9,11.9,21.9z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: center; + background-size: auto + } + +[dir="ltr"] .search-narrow__wrapper .search-form__submit .icon--search:after { + left: 0 +} + +[dir="rtl"] .search-narrow__wrapper .search-form__submit .icon--search:after { + right: 0 +} + +.search-narrow__wrapper .search-form__submit .icon--search:after { + position: absolute; + bottom: 0; + width: 100%; + height: 0; + content: ""; + transition: transform 0.2s; + transform: scaleX(0); + transform-origin: left; /* LTR */ + border-top: solid 5px #2494db; + } + +.search-narrow__wrapper .search-form__submit:focus { + outline: 0; + box-shadow: none + } + +.search-narrow__wrapper .search-form__submit:focus span:after { + transform: scaleX(1); + } + +@media screen and (-ms-high-contrast: active) { + +.search-narrow__wrapper .search-form__submit:focus { + border-bottom-width: 9px + } + + .search-narrow__wrapper .search-form__submit:focus span:after { + content: none; + } + } + +@media (min-width: 700px) { + +.search-narrow__wrapper .search-form__submit { + width: 80px + } + } + +@media screen and (-ms-high-contrast: active) { + +.search-narrow__wrapper .search-form__submit { + /* IE11's high contrast show will not show the background image, so we show the text. */ + } + .search-narrow__wrapper .search-form__submit .visually-hidden { + position: static; + overflow: visible; + clip: auto; + width: auto; + height: auto; + text-align: center; + } + +.search-narrow__wrapper .search-form__submit { + + /* Edge's high contrast does show the background image, so we hide it. */ + } + .search-narrow__wrapper .search-form__submit .icon--search { + display: none; + } + } + +.search-narrow__wrapper { + + /* 500px is the width of the primary nav at mobile. */ +} + +@media (min-width: 500px) { + +[dir="ltr"] .search-narrow__wrapper { + margin-left: 0 + } + +[dir="rtl"] .search-narrow__wrapper { + margin-right: 0 + } + +[dir="ltr"] .search-narrow__wrapper { + margin-right: 0 + } + +[dir="rtl"] .search-narrow__wrapper { + margin-left: 0 + } + } + +@media (min-width: 1200px) { + +body:not(.is-always-mobile-nav) .search-narrow__wrapper { + display: none +} + } + +[dir="rtl"] .search-narrow__wrapper input[type="search"] { + background-position: bottom right; + } + +[dir="rtl"] .search-narrow__wrapper .search-form__submit .icon--search:after { + transform-origin: right; + } diff --git a/core/themes/olivero/css/components/header-search-narrow.pcss.css b/core/themes/olivero/css/components/header-search-narrow.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..268bf7d61254351d047014ce2112ac878a342c54 --- /dev/null +++ b/core/themes/olivero/css/components/header-search-narrow.pcss.css @@ -0,0 +1,177 @@ +/** + * @file + * Header Search Narrow Block. + */ + +@import "../base/variables.pcss.css"; + +.search-narrow__wrapper { + margin-inline: calc(-1 * var(--sp)); + margin-block-end: var(--sp2); + background: var(--color--black); + + & form { + display: flex; + } + + & .form-item { + flex-grow: 1; + margin: 0; + } + + & .form-actions { + margin: 0; + } + + & input[type="search"] { + width: calc(100% + var(--sp2)); + height: calc(3 * var(--sp)); + padding-block: 0; + padding-inline-start: var(--sp); + padding-inline-end: var(--sp); + transition: background-size 0.4s; + color: var(--color--white); + border: solid 1px transparent; + background-color: transparent; + background-image: linear-gradient(var(--color--blue-50), var(--color--blue-50)); /* Two values are needed for IE11 support. */ + background-repeat: no-repeat; + background-position: bottom left; /* LTR */ + background-size: 0% 5px; + box-shadow: none; + font-family: serif; + font-size: 16px; + -webkit-appearance: none; + + &::-ms-clear { + width: 40px; + opacity: 0.5; + } + + &:focus { + outline: 0; + background-size: 100% 5px; + + /* + We normally indicate focus by animating background-image width. This isn't + available in IE11 when in Windows high contrast mode. + */ + @media screen and (-ms-high-contrast: active) { + border-bottom-width: 5px; + } + } + + @media (--md) { + padding-block: var(--sp2); + padding-inline-start: var(--sp2); + padding-inline-end: var(--sp2); + } + } + + & .search-form__submit { + position: relative; + overflow: hidden; + align-self: stretch; + width: var(--sp3); + height: auto; + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + cursor: pointer; + border-color: transparent; + background-color: transparent; + + /* + When in Windows high contrast mode, FF will will not output either background + images or SVGs that are nested directly within a <button> element, so we add a <span>. + */ + & .icon--search { + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + display: block; + width: 100%; /* Width of the SVG background image. */ + height: 100%; + pointer-events: none; + background-image: url("../../images/search--white.svg"); + background-repeat: no-repeat; + background-position: center; + background-size: auto; + + &:after { + position: absolute; + inset-block-end: 0; + inset-inline-start: 0; + width: 100%; + height: 0; + content: ""; + transition: transform 0.2s; + transform: scaleX(0); + transform-origin: left; /* LTR */ + border-block-start: solid 5px var(--color--blue-50); + } + } + + &:focus { + outline: 0; + box-shadow: none; + + & span:after { + transform: scaleX(1); + } + + @media screen and (-ms-high-contrast: active) { + border-bottom-width: var(--sp0-5); + + & span:after { + content: none; + } + } + } + + @media (--md) { + width: 80px; + } + + @media screen and (-ms-high-contrast: active) { + /* IE11's high contrast show will not show the background image, so we show the text. */ + & .visually-hidden { + position: static; + overflow: visible; + clip: auto; + width: auto; + height: auto; + text-align: center; + } + + /* Edge's high contrast does show the background image, so we hide it. */ + & .icon--search { + display: none; + } + } + } + + /* 500px is the width of the primary nav at mobile. */ + @media (min-width: 500px) { + margin-inline-start: 0; + margin-inline-end: 0; + } +} + +body:not(.is-always-mobile-nav) .search-narrow__wrapper { + @media (--nav) { + display: none; + } +} + +[dir="rtl"] .search-narrow__wrapper { + & input[type="search"] { + background-position: bottom right; + } + + & .search-form__submit .icon--search:after { + transform-origin: right; + } +} diff --git a/core/themes/olivero/css/components/header-search-wide.css b/core/themes/olivero/css/components/header-search-wide.css new file mode 100644 index 0000000000000000000000000000000000000000..d47d8319c98ac3dab99c501ca878f37f7654c0d6 --- /dev/null +++ b/core/themes/olivero/css/components/header-search-wide.css @@ -0,0 +1,445 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Header Search Wide Block. + */ + +/* Override contextual links so we can position against .site-header. */ + +.search-block-form.contextual-region { + position: static; +} + +[dir="ltr"] .search-wide__wrapper { + left: 0; +} + +[dir="rtl"] .search-wide__wrapper { + right: 0; +} + +[dir="ltr"] .search-wide__wrapper { + margin-left: 0; +} + +[dir="rtl"] .search-wide__wrapper { + margin-right: 0; +} + +[dir="ltr"] .search-wide__wrapper { + margin-right: 0; +} + +[dir="rtl"] .search-wide__wrapper { + margin-left: 0; +} + +[dir="ltr"] .search-wide__wrapper { + padding-left: 0; +} + +[dir="rtl"] .search-wide__wrapper { + padding-right: 0; +} + +[dir="ltr"] .search-wide__wrapper { + padding-right: 0; +} + +[dir="rtl"] .search-wide__wrapper { + padding-left: 0; +} + +[dir="ltr"] .search-wide__wrapper { + border-left: solid 90px #313637; +} + +[dir="rtl"] .search-wide__wrapper { + border-right: solid 90px #313637; +} + +.search-wide__wrapper { + position: absolute; + z-index: 1; /* Ensure left border shows above social region in IE11. */ + top: 100%; + display: none; + visibility: hidden; + overflow: hidden; + width: 100vw; + max-width: 1570px; + height: 144px; + max-height: 0; + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + transition: all 0.2s; + background: #000 +} + +.search-wide__wrapper.is-active { + visibility: visible; + max-height: 144px; + } + +.search-wide__wrapper form { + display: flex; + -ms-grid-column: 1; + -ms-grid-column-span: 13; + grid-column: 1 / 14; + } + +[dir="ltr"] .search-wide__wrapper input[type="search"] { + padding-left: 216px; +} + +[dir="rtl"] .search-wide__wrapper input[type="search"] { + padding-right: 216px; +} + +[dir="ltr"] .search-wide__wrapper input[type="search"] { + padding-right: 0; +} + +[dir="rtl"] .search-wide__wrapper input[type="search"] { + padding-left: 0; +} + +.search-wide__wrapper input[type="search"] { + width: calc(100% + 36px); + height: 144px; + padding-top: 0; + padding-bottom: 0; + transition: background-size 0.4s; + color: #fff; + border: solid 1px transparent; + box-shadow: none; + font-family: serif; + font-size: 32px; + -webkit-appearance: none + } + +.search-wide__wrapper input[type="search"]::-ms-clear { + width: 40px; + opacity: 0.5; + } + +.search-wide__wrapper input[type="search"]:focus { + outline: 0 + + /* + We normally indicate focus by animating background-image width. This isn't + available in IE11 when in Windows high contrast mode. + */ + } + +@media screen and (-ms-high-contrast: active) { + +.search-wide__wrapper input[type="search"]:focus { + border-bottom-width: 9px + } + } + +.search-wide__wrapper .form-item-keys { + flex-grow: 1; + margin: 0; + } + +.search-wide__wrapper .form-actions { + display: flex; + margin: 0; + } + +[dir="ltr"] .search-wide__wrapper .search-form__submit { + margin-left: 0; +} + +[dir="rtl"] .search-wide__wrapper .search-form__submit { + margin-right: 0; +} + +[dir="ltr"] .search-wide__wrapper .search-form__submit { + margin-right: 0; +} + +[dir="rtl"] .search-wide__wrapper .search-form__submit { + margin-left: 0; +} + +[dir="ltr"] .search-wide__wrapper .search-form__submit { + padding-left: 0; +} + +[dir="rtl"] .search-wide__wrapper .search-form__submit { + padding-right: 0; +} + +[dir="ltr"] .search-wide__wrapper .search-form__submit { + padding-right: 0; +} + +[dir="rtl"] .search-wide__wrapper .search-form__submit { + padding-left: 0; +} + +.search-wide__wrapper .search-form__submit { + position: relative; + overflow: hidden; + -ms-grid-row-align: stretch; + align-self: stretch; + width: 100px; + height: auto; + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + cursor: pointer; + border-color: transparent; + background-color: transparent + + /* + When in Windows high contrast mode, FF will will not output either background + images or SVGs that are nested directly within a <button> element, so we add a <span>. + */ + } + +[dir="ltr"] .search-wide__wrapper .search-form__submit .icon--search { + right: 0; +} + +[dir="rtl"] .search-wide__wrapper .search-form__submit .icon--search { + left: 0; +} + +.search-wide__wrapper .search-form__submit .icon--search { + position: absolute; + top: 0; + display: block; + width: 24px; /* Width of the SVG background image. */ + height: 100%; + pointer-events: none; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='26' height='27.2' viewBox='0 0 26 27.2'%3e %3cpath fill='%23fff' d='M25.8,25.5l-5.3-5.3c2.1-2.1,3.4-5.1,3.4-8.3C23.9,5.3,18.5,0,11.9,0C5.3,0,0,5.3,0,11.9c0,6.6,5.3,11.9,11.9,11.9c2.6,0,5.1-0.9,7-2.3l5.4,5.4c0.4,0.4,1,0.4,1.4,0C26.1,26.6,26.1,25.9,25.8,25.5z M11.9,21.9c-5.5,0-9.9-4.4-9.9-9.9S6.4,2,11.9,2c5.5,0,9.9,4.4,9.9,9.9S17.4,21.9,11.9,21.9z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: center; + background-size: contain + } + +[dir="ltr"] .search-wide__wrapper .search-form__submit .icon--search:after { + left: 0; +} + +[dir="rtl"] .search-wide__wrapper .search-form__submit .icon--search:after { + right: 0; +} + +.search-wide__wrapper .search-form__submit .icon--search:after { + position: absolute; + bottom: 0; + width: 100%; + height: 0; + content: ""; + transition: transform 0.2s; + transform: scaleX(0); + transform-origin: left; + border-top: solid 9px #2494db; + } + +.search-wide__wrapper .search-form__submit:focus { + outline: 0; + box-shadow: none + } + +.search-wide__wrapper .search-form__submit:focus span:after { + transform: scaleX(1); + } + +@media screen and (-ms-high-contrast: active) { + +.search-wide__wrapper .search-form__submit:focus { + border-bottom-width: 9px + } + + .search-wide__wrapper .search-form__submit:focus span:after { + content: none; + } + } + +@media screen and (-ms-high-contrast: active) { + +.search-wide__wrapper .search-form__submit { + /* IE11's high contrast show will not show the background image, so we show the text. */ + } + .search-wide__wrapper .search-form__submit .visually-hidden { + position: static; + overflow: visible; + clip: auto; + width: auto; + height: auto; + text-align: center; + } + +.search-wide__wrapper .search-form__submit { + + /* Edge's high contrast does show the background image, so we hide it. */ + } + .search-wide__wrapper .search-form__submit .icon--search { + display: none; + } + } + +[dir="ltr"] .search-wide__container { + padding-right: 36px; +} + +[dir="rtl"] .search-wide__container { + padding-left: 36px; +} + +.search-wide__container { + max-width: 1350px; +} + +.search-wide__grid { + display: -ms-grid; + display: grid; + -ms-grid-columns: (1fr)[14]; + grid-template-columns: repeat(14, 1fr); + grid-column-gap: 36px; +} + +/* Override specificity from container-inline.module.css */ + +.container-inline .search-wide__container { + display: block; + } + +.container-inline .search-wide__grid { + display: -ms-grid; + display: grid; + } + +.header-nav__search-button { + position: relative; + display: none; + width: 54px; + height: 108px; + cursor: pointer; + border: 0; + background: transparent; + -webkit-appearance: none +} + +.header-nav__search-button:focus { + outline: 0 + } + +.header-nav__search-button:focus:after { + transform: scaleX(0.5); + } + +[dir="ltr"] .header-nav__search-button:after { + left: 0; +} + +[dir="rtl"] .header-nav__search-button:after { + right: 0; +} + +.header-nav__search-button:after { + position: absolute; + bottom: 0; + width: 100%; + height: 0; + content: ""; + transition: transform 0.2s; + transform: scaleX(0); + border-top: solid 9px #2494db; + } + +.header-nav__search-button[aria-expanded="true"] { + background: #000 + } + +.header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:before, + .header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:after { + position: absolute; + /* stylelint-disable csstools/use-logical */ + top: 50%; + left: 50%; + /* stylelint-enable csstools/use-logical */ + width: 27px; + height: 0; + content: ""; + border-top: solid 2px #fff; + } + +.header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:before { + transform: translate(-50%, -50%) rotate(-45deg); + } + +.header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:after { + transform: translate(-50%, -50%) rotate(45deg); + } + +.header-nav__search-button[aria-expanded="true"] svg { + display: none; + } + +[dir="ltr"] .header-nav__search-button svg { + margin-left: auto; +} + +[dir="rtl"] .header-nav__search-button svg { + margin-right: auto; +} + +[dir="ltr"] .header-nav__search-button svg { + margin-right: auto; +} + +[dir="rtl"] .header-nav__search-button svg { + margin-left: auto; +} + +/* Provide rudimentary access to site search if JS is disabled. */ + +html:not(.js) .search-block-form:focus-within .search-wide__wrapper { + visibility: visible; + max-height: 144px; +} + +/* Necessary to override specificity of transpiled PostCSS properties from default input focus styling. */ + +[dir] .search-wide__wrapper input[type="search"] { + background-color: transparent; + background-image: linear-gradient(#2494db, #2494db); /* Two values are needed for IE11 support. */ + background-repeat: no-repeat; + background-position: bottom left; /* LTR */ + background-size: 0% 10px +} + +[dir] .search-wide__wrapper input[type="search"]:focus { + background-size: 100% 9px; + } + +[dir="rtl"] .search-wide__wrapper input[type="search"] { + background-position: bottom right; + } + +[dir="rtl"] .search-wide__wrapper .search-form__submit .icon--search:after { + transform-origin: right; + } + +@media (min-width: 1200px) { + +body:not(.is-always-mobile-nav) .search-wide__wrapper, + body:not(.is-always-mobile-nav) .header-nav__search-button { + display: block + } + } diff --git a/core/themes/olivero/css/components/header-search-wide.pcss.css b/core/themes/olivero/css/components/header-search-wide.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..ac6fafa90992144f19d7ac7c985d644d35e8182c --- /dev/null +++ b/core/themes/olivero/css/components/header-search-wide.pcss.css @@ -0,0 +1,295 @@ +/** + * @file + * Header Search Wide Block. + */ + +@import "../base/variables.pcss.css"; + +/* Override contextual links so we can position against .site-header. */ +.search-block-form.contextual-region { + position: static; +} + +.search-wide__wrapper { + position: absolute; + z-index: 1; /* Ensure left border shows above social region in IE11. */ + inset-block-start: 100%; + inset-inline-start: 0; + display: none; + visibility: hidden; + overflow: hidden; + width: 100vw; + max-width: var(--max-bg-color); + height: var(--sp8); + max-height: 0; + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + transition: all 0.2s; + border-inline-start: solid var(--content-left) var(--color--gray-10); + background: var(--color--black); + + &.is-active { + visibility: visible; + max-height: var(--sp8); + } + + & form { + display: flex; + grid-column: 1 / 14; + } + + & input[type="search"] { + width: calc(100% + var(--sp2)); + height: var(--sp8); + padding-block: 0; + padding-inline-start: var(--sp12); + padding-inline-end: 0; + transition: background-size 0.4s; + color: var(--color--white); + border: solid 1px transparent; + box-shadow: none; + font-family: serif; + font-size: 32px; + -webkit-appearance: none; + + &::-ms-clear { + width: 40px; + opacity: 0.5; + } + + &:focus { + outline: 0; + + /* + We normally indicate focus by animating background-image width. This isn't + available in IE11 when in Windows high contrast mode. + */ + @media screen and (-ms-high-contrast: active) { + border-bottom-width: var(--sp0-5); + } + } + } + + & .form-item-keys { + flex-grow: 1; + margin: 0; + } + + & .form-actions { + display: flex; + margin: 0; + } + + & .search-form__submit { + position: relative; + overflow: hidden; + align-self: stretch; + width: 100px; + height: auto; + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + cursor: pointer; + border-color: transparent; + background-color: transparent; + + /* + When in Windows high contrast mode, FF will will not output either background + images or SVGs that are nested directly within a <button> element, so we add a <span>. + */ + & .icon--search { + position: absolute; + inset-block-start: 0; + inset-inline-end: 0; + display: block; + width: 24px; /* Width of the SVG background image. */ + height: 100%; + pointer-events: none; + background-image: url("../../images/search--white.svg"); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + + &:after { + position: absolute; + inset-block-end: 0; + inset-inline-start: 0; + width: 100%; + height: 0; + content: ""; + transition: transform 0.2s; + transform: scaleX(0); + transform-origin: left; + border-block-start: solid var(--sp0-5) var(--color--blue-50); + } + } + + &:focus { + outline: 0; + box-shadow: none; + + & span:after { + transform: scaleX(1); + } + + @media screen and (-ms-high-contrast: active) { + border-bottom-width: var(--sp0-5); + + & span:after { + content: none; + } + } + } + + @media screen and (-ms-high-contrast: active) { + /* IE11's high contrast show will not show the background image, so we show the text. */ + & .visually-hidden { + position: static; + overflow: visible; + clip: auto; + width: auto; + height: auto; + text-align: center; + } + + /* Edge's high contrast does show the background image, so we hide it. */ + & .icon--search { + display: none; + } + } + } +} + +.search-wide__container { + max-width: var(--max-width); + padding-inline-end: var(--sp2); +} + +.search-wide__grid { + display: grid; + grid-template-columns: repeat(var(--grid-col-count--md), 1fr); + grid-column-gap: var(--grid-gap--md); +} + +/* Override specificity from container-inline.module.css */ +.container-inline { + & .search-wide__container { + display: block; + } + + & .search-wide__grid { + display: grid; + } +} + +.header-nav__search-button { + position: relative; + display: none; + width: var(--sp3); + height: var(--sp6); + cursor: pointer; + border: 0; + background: transparent; + -webkit-appearance: none; + + &:focus { + outline: 0; + + &:after { + transform: scaleX(0.5); + } + } + + &:after { + position: absolute; + inset-block-end: 0; + inset-inline-start: 0; + width: 100%; + height: 0; + content: ""; + transition: transform 0.2s; + transform: scaleX(0); + border-block-start: solid var(--sp0-5) var(--color--blue-50); + } + + &[aria-expanded="true"] { + background: var(--color--black); + + & .header-nav__search-button__close { + &:before, + &:after { + position: absolute; + /* stylelint-disable csstools/use-logical */ + top: 50%; + left: 50%; + /* stylelint-enable csstools/use-logical */ + width: var(--sp1-5); + height: 0; + content: ""; + border-block-start: solid 2px var(--color--white); + } + + &:before { + transform: translate(-50%, -50%) rotate(-45deg); + } + + &:after { + transform: translate(-50%, -50%) rotate(45deg); + } + } + + & svg { + display: none; + } + } + + & svg { + margin-inline-start: auto; + margin-inline-end: auto; + } +} + +/* Provide rudimentary access to site search if JS is disabled. */ +html:not(.js) .search-block-form:focus-within .search-wide__wrapper { + visibility: visible; + max-height: var(--sp8); +} + +/* Necessary to override specificity of transpiled PostCSS properties from default input focus styling. */ +[dir] .search-wide__wrapper input[type="search"] { + background-color: transparent; + background-image: linear-gradient(var(--color--blue-50), var(--color--blue-50)); /* Two values are needed for IE11 support. */ + background-repeat: no-repeat; + background-position: bottom left; /* LTR */ + background-size: 0% 10px; + + &:focus { + background-size: 100% var(--sp0-5); + } +} + +[dir="rtl"] .search-wide__wrapper { + & input[type="search"] { + background-position: bottom right; + } + + & .search-form__submit .icon--search:after { + transform-origin: right; + } +} + +body:not(.is-always-mobile-nav) { + & .search-wide__wrapper, + & .header-nav__search-button { + @media (--nav) { + display: block; + } + } +} diff --git a/core/themes/olivero/css/components/header-site-branding.css b/core/themes/olivero/css/components/header-site-branding.css new file mode 100644 index 0000000000000000000000000000000000000000..4dadf2b35e6ec03feeeb8f7c84f31f66c912a2f6 --- /dev/null +++ b/core/themes/olivero/css/components/header-site-branding.css @@ -0,0 +1,231 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Site branding in header. + */ + +[dir="ltr"] .site-branding { + margin-left: -18px; + margin-right: 18px +} + +[dir="rtl"] .site-branding { + margin-right: -18px; + margin-left: 18px +} + +[dir="ltr"] .site-branding { + padding-left: 18px +} + +[dir="rtl"] .site-branding { + padding-right: 18px +} + +[dir="ltr"] .site-branding { + padding-right: 18px +} + +[dir="rtl"] .site-branding { + padding-left: 18px +} + +.site-branding { + display: flex; + flex-shrink: 1; + align-items: flex-end; + min-width: calc(2*(100vw - 126px)/6 + 54px); + height: 54px; + padding-top: 0; + padding-bottom: 9px; + + /* @todo - #0d7ab8 isn't currently a variable. */ + background-image: linear-gradient(160deg, #2494db 0%, #0d7ab8 78.66%) +} + +@media (min-width: 500px) { + +.site-branding { + height: 72px +} + } + +@media (min-width: 700px) { + +.site-branding { + height: 108px; + padding-bottom: 18px +} + } + +@media (min-width: 1000px) { + +.site-branding { + min-width: calc(2*(100vw - 519px)/14 + 90px) +} + } + +@media (min-width: 1200px) { + +[dir="ltr"] .site-branding { + margin-left: -36px + } + +[dir="rtl"] .site-branding { + margin-right: -36px + } + +[dir="ltr"] .site-branding { + padding-left: 36px + } + +[dir="rtl"] .site-branding { + padding-right: 36px + } + +[dir="ltr"] .site-branding { + padding-right: 36px + } + +[dir="rtl"] .site-branding { + padding-left: 36px + } + +.site-branding { + min-width: calc(2*(100vw - 645px)/14 + 108px); + height: 180px; + padding-top: 0; + padding-bottom: 0 +} + } + +@media (min-width: 1440px) { + +.site-branding { + min-width: 223.71429px +} + } + +[dir="rtl"] .site-branding { + background-image: linear-gradient(-160deg, #2494db 0%, #0d7ab8 78.66%); +} + +.site-branding--bg-gray { + background: #f7f9fa; +} + +.site-branding--bg-white { + background: #fff; +} + +.site-branding__inner { + display: flex; + align-items: center +} + +.site-branding__inner a { + text-decoration: none; + } + +@media (min-width: 1200px) { + +[dir="ltr"] .site-branding__inner { + padding-left: 0 + } + +[dir="rtl"] .site-branding__inner { + padding-right: 0 + } + +[dir="ltr"] .site-branding__inner { + padding-right: 0 + } + +[dir="rtl"] .site-branding__inner { + padding-left: 0 + } + +.site-branding__inner { + height: 108px; + padding-top: 9px; + padding-bottom: 9px +} + } + +.site-branding__logo { + flex-shrink: 0; + max-width: 100% +} + +.site-branding__logo img { + width: auto; + max-width: 100%; + max-height: 36px + } + +@media (min-width: 500px) { + +.site-branding__logo img { + max-height: 54px + } + } + +@media (min-width: 700px) { + +.site-branding__logo img { + max-height: 72px + } + } + +@media (min-width: 1200px) { + +.site-branding__logo img { + max-height: 90px + } + } + +.site-branding__text { + color: #fff; + font-size: 18px; + font-weight: bold +} + +.site-branding__text a { + color: inherit; + } + +@media (min-width: 700px) { + +.site-branding__text { + font-size: 28px; + line-height: 28px +} + } + +@media (min-width: 1200px) { + +.site-branding__text { + letter-spacing: 0.02em; + font-size: 32px; + line-height: 36px +} + } + +.site-branding--bg-gray .site-branding__text, +.site-branding--bg-white .site-branding__text { + color: #2494db; +} + +[dir="ltr"] .site-branding__logo + .site-branding__text { + margin-left: 12px +} + +[dir="rtl"] .site-branding__logo + .site-branding__text { + margin-right: 12px +} diff --git a/core/themes/olivero/css/components/header-site-branding.pcss.css b/core/themes/olivero/css/components/header-site-branding.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..c9e322dfab570d9213e6c87a057ad7d5217d76ef --- /dev/null +++ b/core/themes/olivero/css/components/header-site-branding.pcss.css @@ -0,0 +1,128 @@ +/** + * @file + * Site branding in header. + */ + +@import "../base/variables.pcss.css"; + +.site-branding { + display: flex; + flex-shrink: 1; + align-items: flex-end; + min-width: calc((2 * var(--grid-col-width)) + (2 * var(--grid-gap)) + var(--container-padding)); + height: var(--sp3); + margin-inline: calc(-1 * var(--container-padding)) var(--sp); + padding-block: 0 var(--sp0-5); + padding-inline-start: var(--container-padding); + padding-inline-end: var(--container-padding); + + /* @todo - #0d7ab8 isn't currently a variable. */ + background-image: linear-gradient(160deg, var(--color--blue-50) 0%, #0d7ab8 78.66%); + + @media (--sm) { + height: var(--sp4); + } + + @media (--md) { + height: var(--sp6); + padding-block-end: var(--sp); + } + + @media (--lg) { + min-width: calc((2 * var(--grid-col-width--lg)) + (2 * var(--grid-gap--lg)) + var(--container-padding)); + } + + @media (--nav) { + min-width: calc((2 * var(--grid-col-width--nav)) + (2 * var(--grid-gap--nav)) + var(--container-padding-nav)); + height: var(--sp10); + margin-inline-start: calc(-1 * var(--container-padding-nav)); + padding-block: 0; + padding-inline-start: var(--container-padding-nav); + padding-inline-end: var(--container-padding-nav); + } + + @media (--grid-max) { + min-width: calc((2 * var(--grid-col-width--max)) + (2 * var(--grid-gap--max)) + var(--container-padding-nav)); + } +} + +[dir="rtl"] .site-branding { + background-image: linear-gradient(-160deg, var(--color--blue-50) 0%, #0d7ab8 78.66%); +} + +.site-branding--bg-gray { + background: var(--color--gray-95); +} + +.site-branding--bg-white { + background: var(--color--white); +} + +.site-branding__inner { + display: flex; + align-items: center; + + & a { + text-decoration: none; + } + + @media (--nav) { + height: var(--header-height-wide-when-fixed); + padding-block: var(--sp0-5); + padding-inline-start: 0; + padding-inline-end: 0; + } +} + +.site-branding__logo { + flex-shrink: 0; + max-width: 100%; + + & img { + width: auto; + max-width: 100%; + max-height: var(--sp2); + + @media (--sm) { + max-height: var(--sp3); + } + + @media (--md) { + max-height: var(--sp4); + } + + @media (--nav) { + max-height: calc(var(--header-height-wide-when-fixed) - var(--sp)); + } + } +} + +.site-branding__text { + color: var(--color--white); + font-size: 18px; + font-weight: bold; + + & a { + color: inherit; + } + + @media (--md) { + font-size: 28px; + line-height: 28px; + } + + @media (--nav) { + letter-spacing: 0.02em; + font-size: 32px; + line-height: var(--sp2); + } +} + +.site-branding--bg-gray .site-branding__text, +.site-branding--bg-white .site-branding__text { + color: var(--color--blue-50); +} + +.site-branding__logo + .site-branding__text { + margin-inline-start: 12px; +} diff --git a/core/themes/olivero/css/components/header.css b/core/themes/olivero/css/components/header.css new file mode 100644 index 0000000000000000000000000000000000000000..4b005dc773cf12249feb65bdd0cda5cb3f316c59 --- /dev/null +++ b/core/themes/olivero/css/components/header.css @@ -0,0 +1,123 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Main Header. + */ + +/* Header */ + +.site-header { + position: relative +} + +@media (min-width: 1200px) { + +.site-header { + /* Necessary to keep the content from jumping up when header transitions to fixed. */ + min-height: 180px; + border-bottom: solid 1px transparent /* Will show in Windows high contrast mode. */ +} + } + +.header__left { + position: relative; + z-index: 2; + display: flex; + align-items: flex-end; + align-self: stretch; + background-color: #2494db; +} + +.site-header__fixable { + display: flex; + align-items: flex-end; + transition: all 0.5s +} + +@media (min-width: 1200px) { + .site-header__fixable.js-fixed:not(.is-expanded) { + pointer-events: none; + } + } + +@media (min-width: 1200px) { + body:not(.is-always-mobile-nav) .site-header__fixable.js-fixed { + position: fixed; + z-index: 2; /* Appear above body content that is position: relative */ + top: -72px; + max-width: 1570px; + } + body:not(.is-always-mobile-nav) { + + /* Toolbar is fixed, and tray is either vertical or closed and horizontal. */ + } + body:not(.is-always-mobile-nav).toolbar-vertical.toolbar-fixed .site-header__fixable.js-fixed, body:not(.is-always-mobile-nav).toolbar-horizontal.toolbar-fixed .site-header__fixable.js-fixed { + top: -33px; + } + body:not(.is-always-mobile-nav) { + /* Toolbar is fixed, and tray is open and horizontal. */ + } + body:not(.is-always-mobile-nav).toolbar-horizontal.toolbar-fixed.toolbar-tray-open .site-header__fixable.js-fixed { + top: 7px; + } +} + +.site-header__inner { + flex-grow: 1; + width: calc(100vw - 90px); + background: #fff; +} + +/* + * Only apply transition styles when JS is loaded. This + * works around https://bugs.chromium.org/p/chromium/issues/detail?id=332189 + */ + +@media (min-width: 1200px) { + +html.js body:not(.is-always-mobile-nav) .site-header__inner { + transition: opacity 0.3s, transform 0.3s +} + } + +@media (min-width: 1200px) { + +.site-header__fixable.js-fixed .site-header__inner { + box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08) /* LTR */ +} + } + +@media (min-width: 1200px) { + +[dir="rtl"] .site-header__fixable.js-fixed .site-header__inner { + box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08) +} + } + +/* Hide the desktop nav when it's fixed and not active. */ + +@media (min-width: 1200px) { + +body:not(.is-always-mobile-nav) .site-header__fixable.js-fixed:not(.is-expanded) .site-header__inner { + transform: translateX(-101%); /* LTR */ + opacity: 0 +} + } + +@media (min-width: 1200px) { + +[dir="rtl"] body:not(.is-always-mobile-nav) .site-header__fixable.js-fixed:not(.is-expanded) .site-header__inner { + transform: translateX(101%) +} + } + +.site-header__inner__container { + display: flex; + justify-content: space-between; +} diff --git a/core/themes/olivero/css/components/header.pcss.css b/core/themes/olivero/css/components/header.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..d7eef245bad3173b8328f4e5170732d66e0e6f4b --- /dev/null +++ b/core/themes/olivero/css/components/header.pcss.css @@ -0,0 +1,110 @@ +/** + * @file + * Main Header. + */ + +@import "../base/variables.pcss.css"; + +/* Header */ +.site-header { + position: relative; + + @media (--nav) { + /* Necessary to keep the content from jumping up when header transitions to fixed. */ + min-height: var(--sp10); + border-block-end: solid 1px transparent; /* Will show in Windows high contrast mode. */ + } +} + +.header__left { + position: relative; + z-index: 2; + display: flex; + align-items: flex-end; + align-self: stretch; + background-color: var(--color--blue-50); +} + +.site-header__fixable { + display: flex; + align-items: flex-end; + transition: all 0.5s; + + &.js-fixed { + @media (--nav) { + &:not(.is-expanded) { + pointer-events: none; + } + } + } +} + +@media (--nav) { + body:not(.is-always-mobile-nav) { + & .site-header__fixable.js-fixed { + position: fixed; + z-index: 2; /* Appear above body content that is position: relative */ + inset-block-start: calc(-1 * var(--sp4)); + max-width: var(--max-bg-color); + } + + /* Toolbar is fixed, and tray is either vertical or closed and horizontal. */ + &.toolbar-vertical.toolbar-fixed, + &.toolbar-horizontal.toolbar-fixed { + & .site-header__fixable.js-fixed { + inset-block-start: calc(var(--toolbar-height) - var(--sp4)); + } + } + /* Toolbar is fixed, and tray is open and horizontal. */ + &.toolbar-horizontal.toolbar-fixed.toolbar-tray-open .site-header__fixable.js-fixed { + inset-block-start: calc(var(--toolbar-tray-height) + var(--toolbar-height) - var(--sp4)); + } + } +} + +.site-header__inner { + flex-grow: 1; + width: calc(100vw - var(--content-left)); + background: var(--color--white); +} + +/* + * Only apply transition styles when JS is loaded. This + * works around https://bugs.chromium.org/p/chromium/issues/detail?id=332189 + */ +html.js body:not(.is-always-mobile-nav) .site-header__inner { + @media (--nav) { + transition: opacity 0.3s, transform 0.3s; + } +} + +.site-header__fixable.js-fixed .site-header__inner { + @media (--nav) { + box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08); /* LTR */ + } +} + +[dir="rtl"] .site-header__fixable.js-fixed .site-header__inner { + @media (--nav) { + box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08); + } +} + +/* Hide the desktop nav when it's fixed and not active. */ +body:not(.is-always-mobile-nav) .site-header__fixable.js-fixed:not(.is-expanded) .site-header__inner { + @media (--nav) { + transform: translateX(-101%); /* LTR */ + opacity: 0; + } +} + +[dir="rtl"] body:not(.is-always-mobile-nav) .site-header__fixable.js-fixed:not(.is-expanded) .site-header__inner { + @media (--nav) { + transform: translateX(101%); + } +} + +.site-header__inner__container { + display: flex; + justify-content: space-between; +} diff --git a/core/themes/olivero/css/components/hero.css b/core/themes/olivero/css/components/hero.css new file mode 100644 index 0000000000000000000000000000000000000000..f9cb25b8d7a4e48cdb12ca4db09c72d820323c46 --- /dev/null +++ b/core/themes/olivero/css/components/hero.css @@ -0,0 +1,75 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Main Hero. + */ + +.hero__content { + -ms-grid-column: 1; + -ms-grid-column-span: 6; + grid-column: 1 / 7 +} + +@media (min-width: 700px) { + +.hero__content { /* 700px */ + -ms-grid-column: 3; + -ms-grid-column-span: 10; + grid-column: 3 / 13 +} + } + +@media (min-width: 1000px) { + +.hero__content { + -ms-grid-column: 3; + -ms-grid-column-span: 8; + grid-column: 3 / 11 +} + } + +.hero__img { + -ms-grid-column: 1; + -ms-grid-column-span: 6; + grid-column: 1 / 7; + margin-top: 36px; + margin-bottom: 36px +} + +.hero__img img { + width: 100%; + } + +@media (min-width: 500px) { + +.hero__img { + margin-top: 54px; + margin-bottom: 54px +} + } + +@media (min-width: 700px) { + +.hero__img { + -ms-grid-column: 1; + -ms-grid-column-span: 14; + grid-column: 1 / 15; + margin-top: 72px; + margin-bottom: 72px +} + } + +@media (min-width: 1000px) { + +.hero__img { + -ms-grid-column: 2; + -ms-grid-column-span: 12; + grid-column: 2 / 14 +} + } diff --git a/core/themes/olivero/css/components/hero.pcss.css b/core/themes/olivero/css/components/hero.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..b7943811e560e20eb19da036bd75dc58b7f6bb80 --- /dev/null +++ b/core/themes/olivero/css/components/hero.pcss.css @@ -0,0 +1,43 @@ +/** + * @file + * Main Hero. + */ + +@import "../base/variables.pcss.css"; + +.hero__content { + grid-column: 1 / 7; + + @media (--grid-md) { /* 700px */ + grid-column: 3 / 13; + } + + @media (--lg) { + grid-column: 3 / 11; + } +} + +.hero__img { + grid-column: 1 / 7; + margin-block-start: var(--sp2); + margin-block-end: var(--sp2); + + & img { + width: 100%; + } + + @media (--sm) { + margin-block-start: var(--sp3); + margin-block-end: var(--sp3); + } + + @media (--grid-md) { + grid-column: 1 / 15; + margin-block-start: var(--sp4); + margin-block-end: var(--sp4); + } + + @media (--lg) { + grid-column: 2 / 14; + } +} diff --git a/core/themes/olivero/css/components/links.css b/core/themes/olivero/css/components/links.css new file mode 100644 index 0000000000000000000000000000000000000000..38a954cfbd1b7e9741f2e2f537f43abd0a027725 --- /dev/null +++ b/core/themes/olivero/css/components/links.css @@ -0,0 +1,64 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Links component. + */ + +[dir="ltr"] .links.inline { + margin-left: 0 +} + +[dir="rtl"] .links.inline { + margin-right: 0 +} + +[dir="ltr"] .links.inline { + padding-left: 0 +} + +[dir="rtl"] .links.inline { + padding-right: 0 +} + +[dir="ltr"] .links.inline { + padding-right: 0 +} + +[dir="rtl"] .links.inline { + padding-left: 0 +} + +.links.inline { + padding-top: 0; + padding-bottom: 0; + list-style: none +} + +.links.inline > * { + display: inline + } + +[dir="ltr"] .links.inline > *:not(:last-child) { + padding-right: 1em +} + +[dir="rtl"] .links.inline > *:not(:last-child) { + padding-left: 1em +} + +@media (min-width: 700px) { + +[dir="ltr"] .node--type-book .links.inline { + text-align: right + } + +[dir="rtl"] .node--type-book .links.inline { + text-align: left + } + } diff --git a/core/themes/olivero/css/components/links.pcss.css b/core/themes/olivero/css/components/links.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..9be266dcef870132d207104e21e60fa243543974 --- /dev/null +++ b/core/themes/olivero/css/components/links.pcss.css @@ -0,0 +1,28 @@ +/** + * @file + * Links component. + */ + +@import "../base/variables.pcss.css"; + +.links.inline { + margin-inline-start: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + list-style: none; + + & > * { + display: inline; + + &:not(:last-child) { + padding-inline-end: 1em; + } + } +} + +.node--type-book .links.inline { + @media (--md) { + text-align: end; + } +} diff --git a/core/themes/olivero/css/components/messages.css b/core/themes/olivero/css/components/messages.css new file mode 100644 index 0000000000000000000000000000000000000000..bef66a7532f18cc2aefae1652cdac16acda5361e --- /dev/null +++ b/core/themes/olivero/css/components/messages.css @@ -0,0 +1,268 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Messages. + */ + +[dir="ltr"] .messages-list { + padding-left: 0; +} + +[dir="rtl"] .messages-list { + padding-right: 0; +} + +[dir="ltr"] .messages-list { + padding-right: 0; +} + +[dir="rtl"] .messages-list { + padding-left: 0; +} + +.messages-list { + margin-top: 18px; + margin-bottom: 18px; + padding-top: 0; + padding-bottom: 0; + list-style: none; +} + +[dir="ltr"] .messages { + padding-left: 27px; +} + +[dir="rtl"] .messages { + padding-right: 27px; +} + +[dir="ltr"] .messages { + padding-right: 27px; +} + +[dir="rtl"] .messages { + padding-left: 27px; +} + +.messages { + min-height: 68px; + padding-top: 18px; + padding-bottom: 18px; + color: #fff; + outline: solid 1px transparent; + background-color: #0d1214 +} + +.messages * { + color: inherit; + } + +.messages { + + /* Additional specificity to override contrib modules. */ +} + +.messages.messages-list__item { + background-image: none; + } + +[dir="ltr"] .messages__list { + margin-left: 0; +} + +[dir="rtl"] .messages__list { + margin-right: 0; +} + +[dir="ltr"] .messages__list { + margin-right: 0; +} + +[dir="rtl"] .messages__list { + margin-left: 0; +} + +[dir="ltr"] .messages__list { + padding-left: 0; +} + +[dir="rtl"] .messages__list { + padding-right: 0; +} + +[dir="ltr"] .messages__list { + padding-right: 0; +} + +[dir="rtl"] .messages__list { + padding-left: 0; +} + +.messages__list { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + list-style: none; +} + +.messages:not(.hidden) ~ .messages { + margin-top: 18px; +} + +.messages__item + .messages__item { + margin-top: 9px; +} + +.messages__container { + display: flex; +} + +[dir="ltr"] .messages__header { + margin-right: 18px; +} + +[dir="rtl"] .messages__header { + margin-left: 18px; +} + +.messages__header { + flex-shrink: 0 +} + +[dir="ltr"] .messages__header.no-icon { + margin-right: 0; +} + +[dir="rtl"] .messages__header.no-icon { + margin-left: 0; +} + +.messages__content { + overflow: auto; /* Ensure large code blocks can be scrolled to. */ + flex: 1; + padding-top: 3px; +} + +[dir="ltr"] .messages__button { + margin-left: 18px; +} + +[dir="rtl"] .messages__button { + margin-right: 18px; +} + +.messages__button { + flex-shrink: 0; + padding-top: 3px; +} + +[dir="ltr"] .messages__close { + padding-left: 0; +} + +[dir="rtl"] .messages__close { + padding-right: 0; +} + +[dir="ltr"] .messages__close { + padding-right: 0; +} + +[dir="rtl"] .messages__close { + padding-left: 0; +} + +.messages__close { + position: relative; + width: 25px; + height: 25px; + padding-top: 0; + padding-bottom: 0; + cursor: pointer; + vertical-align: top; + border: 0; + border-radius: 50%; + background: none; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +.messages__close::before, + .messages__close::after { + position: absolute; + /* stylelint-disable csstools/use-logical */ + top: 50%; + left: 50%; + /* stylelint-enable csstools/use-logical */ + display: block; + width: 33px; + height: 2px; + content: ""; + background-color: #7e96a7; + } + +.messages__close::before { + transform: translate(-50%, -50%) rotate(45deg); + } + +.messages__close::after { + transform: translate(-50%, -50%) rotate(-45deg); + } + +.messages__close:hover::before, + .messages__close:hover::after { + background-color: #fff; + } + +.messages__close:focus { + outline: 2px solid #53b0eb; + outline-offset: 1px; + } + +.messages__icon svg { + vertical-align: top; +} + +.messages--error .messages__icon svg { + fill: #e33f1e; +} + +.messages--warning .messages__icon svg { + fill: #fdca40; +} + +.messages--status .messages__icon svg { + fill: #3fa21c; +} + +.messages--info .messages__icon svg { + fill: #53b0eb; +} + +.messages a { + color: #fff; +} + +.messages pre { + margin: 0; +} + +[dir="ltr"] .js-form-managed-file .messages { + border-left: 6px solid #e33f1e; +} + +[dir="rtl"] .js-form-managed-file .messages { + border-right: 6px solid #e33f1e; +} + +.js-form-managed-file .messages { + margin-bottom: 18px; +} diff --git a/core/themes/olivero/css/components/messages.pcss.css b/core/themes/olivero/css/components/messages.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..f9d5423c41f33cfa2e8f7e8b7ccc4f70a1f744d5 --- /dev/null +++ b/core/themes/olivero/css/components/messages.pcss.css @@ -0,0 +1,162 @@ +/** + * @file + * Messages. + */ + +@import "../base/variables.pcss.css"; + +:root { + --messages-icon-size: 32px; +} + +.messages-list { + margin-block: var(--sp1); + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + list-style: none; +} + +.messages { + min-height: calc(var(--messages-icon-size) + 2 * var(--sp1)); + padding-block: var(--sp1); + padding-inline-start: var(--sp1-5); + padding-inline-end: var(--sp1-5); + color: var(--color--white); + outline: solid 1px transparent; + background-color: var(--color--gray-0); + + & * { + color: inherit; + } + + /* Additional specificity to override contrib modules. */ + &.messages-list__item { + background-image: none; + } +} + +.messages__list { + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + list-style: none; +} + +.messages:not(.hidden) ~ .messages { + margin-block-start: var(--sp1); +} + +.messages__item + .messages__item { + margin-block-start: var(--sp0-5); +} + +.messages__container { + display: flex; +} + +.messages__header { + flex-shrink: 0; + margin-inline-end: var(--sp1); + + &.no-icon { + margin-inline-end: 0; + } +} + +.messages__content { + overflow: auto; /* Ensure large code blocks can be scrolled to. */ + flex: 1; + padding-block-start: 3px; +} + +.messages__button { + flex-shrink: 0; + margin-inline-start: var(--sp1); + padding-block-start: 3px; +} + +.messages__close { + position: relative; + width: 25px; + height: 25px; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + cursor: pointer; + vertical-align: top; + border: 0; + border-radius: 50%; + background: none; + appearance: none; + + &::before, + &::after { + position: absolute; + /* stylelint-disable csstools/use-logical */ + top: 50%; + left: 50%; + /* stylelint-enable csstools/use-logical */ + display: block; + width: 33px; + height: 2px; + content: ""; + background-color: var(--color--gray-30); + } + + &::before { + transform: translate(-50%, -50%) rotate(45deg); + } + + &::after { + transform: translate(-50%, -50%) rotate(-45deg); + } + + &:hover { + &::before, + &::after { + background-color: var(--color--white); + } + } + + &:focus { + outline: 2px solid var(--color--blue-70); + outline-offset: 1px; + } +} + +.messages__icon svg { + vertical-align: top; +} + +.messages--error .messages__icon svg { + fill: var(--color--red); +} + +.messages--warning .messages__icon svg { + fill: var(--color--gold); +} + +.messages--status .messages__icon svg { + fill: var(--color--green); +} + +.messages--info .messages__icon svg { + fill: var(--color--blue-70); +} + +.messages a { + color: var(--color--white); +} + +.messages pre { + margin: 0; +} + +.js-form-managed-file .messages { + margin-block-end: var(--sp1); + border-inline-start: var(--form-element-border-size-left) solid var(--color--red); +} diff --git a/core/themes/olivero/css/components/navigation/nav-button-mobile.css b/core/themes/olivero/css/components/navigation/nav-button-mobile.css new file mode 100644 index 0000000000000000000000000000000000000000..7f7795debae961c546758cbb777fc4ded7f5dc0f --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-button-mobile.css @@ -0,0 +1,160 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Nav Button Mobile. + */ + +[dir="ltr"] .mobile-nav-button { + margin-left: auto +} + +[dir="rtl"] .mobile-nav-button { + margin-right: auto +} + +[dir="ltr"] .mobile-nav-button { + padding-left: 0 +} + +[dir="rtl"] .mobile-nav-button { + padding-right: 0 +} + +[dir="ltr"] .mobile-nav-button { + padding-right: 0 +} + +[dir="rtl"] .mobile-nav-button { + padding-left: 0 +} + +.mobile-nav-button { + position: relative; + z-index: 10; /* appear above mobile nav */ + display: flex; + align-items: center; + align-self: center; + width: 36px; + height: 36px; + padding-top: 0; + padding-bottom: 0; + cursor: pointer; + border: none; + background: transparent; + -webkit-appearance: none +} + +@media (min-width: 500px) { + +[dir="ltr"] .mobile-nav-button { + padding-left: 18px + } + +[dir="rtl"] .mobile-nav-button { + padding-right: 18px + } + +.mobile-nav-button { + display: inline-flex; + width: auto +} + } + +/* Text that says "menu" */ + +.mobile-nav-button__label { + position: absolute; + display: block; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); + width: 1px; + height: 1px; + word-wrap: normal +} + +@media (min-width: 500px) { + +[dir="ltr"] .mobile-nav-button__label { + margin-right: 12px + } + +[dir="rtl"] .mobile-nav-button__label { + margin-left: 12px + } + +.mobile-nav-button__label { + position: static; + overflow: visible; + clip: auto; + width: auto; + height: auto; + letter-spacing: 0.05em; + font-size: 14px; + font-weight: 600 +} + } + +.mobile-nav-button__icon { + position: relative; + display: block; + width: 36px; + height: 3px; + background-color: #2494db +} + +[dir="ltr"] .mobile-nav-button__icon:before { + left: 0 +} + +[dir="rtl"] .mobile-nav-button__icon:before { + right: 0 +} + +.mobile-nav-button__icon:before { + position: absolute; + top: -8px; + width: 100%; + height: 3px; + content: ""; + transition: all 0.2s; + background-color: #2494db; + } + +[dir="ltr"] .mobile-nav-button__icon:after { + left: 0 +} + +[dir="rtl"] .mobile-nav-button__icon:after { + right: 0 +} + +.mobile-nav-button__icon:after { + position: absolute; + top: auto; + bottom: -8px; + width: 100%; + height: 3px; + content: ""; + transition: all 0.2s; + background-color: #2494db; + } + +.mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon { + background-color: transparent +} + +.mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon:before { + top: 0; + transform: rotate(-45deg); + } + +.mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon:after { + top: 0; + transform: rotate(45deg); + } diff --git a/core/themes/olivero/css/components/navigation/nav-button-mobile.pcss.css b/core/themes/olivero/css/components/navigation/nav-button-mobile.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..d25b64d4ff3483cda2f183a248c84f32b707b3d3 --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-button-mobile.pcss.css @@ -0,0 +1,97 @@ +/** + * @file + * Nav Button Mobile. + */ + +@import "../../base/variables.pcss.css"; + +.mobile-nav-button { + position: relative; + z-index: 10; /* appear above mobile nav */ + display: flex; + align-items: center; + align-self: center; + width: var(--sp2); + height: var(--sp2); + margin-inline-start: auto; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + cursor: pointer; + border: none; + background: transparent; + -webkit-appearance: none; + + @media (--sm) { + display: inline-flex; + width: auto; + padding-inline-start: var(--sp); + } +} + +/* Text that says "menu" */ +.mobile-nav-button__label { + position: absolute; + display: block; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); + width: 1px; + height: 1px; + word-wrap: normal; + + @media (--sm) { + position: static; + overflow: visible; + clip: auto; + width: auto; + height: auto; + margin-inline-end: 12px; + letter-spacing: 0.05em; + font-size: 14px; + font-weight: 600; + } +} + +.mobile-nav-button__icon { + position: relative; + display: block; + width: var(--sp2); + height: 3px; + background-color: var(--color--blue-50); + + &:before { + position: absolute; + inset-block-start: -8px; + inset-inline-start: 0; + width: 100%; + height: 3px; + content: ""; + transition: all 0.2s; + background-color: var(--color--blue-50); + } + + &:after { + position: absolute; + inset-block: auto -8px; + inset-inline-start: 0; + width: 100%; + height: 3px; + content: ""; + transition: all 0.2s; + background-color: var(--color--blue-50); + } +} + +.mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon { + background-color: transparent; + + &:before { + inset-block-start: 0; + transform: rotate(-45deg); + } + + &:after { + inset-block-start: 0; + transform: rotate(45deg); + } +} diff --git a/core/themes/olivero/css/components/navigation/nav-button-wide.css b/core/themes/olivero/css/components/navigation/nav-button-wide.css new file mode 100644 index 0000000000000000000000000000000000000000..ebb7aa37a69e7423622c51fcb6e00c012d5c432d --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-button-wide.css @@ -0,0 +1,138 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Nav Button Wide. + */ + +.nav-primary__button { + display: none +} + +@media (min-width: 1200px) { + +.nav-primary__button { + display: flex; + visibility: hidden; + flex-shrink: 0; + align-items: center; + justify-content: center; + width: 90px; + height: 108px; + cursor: pointer; + pointer-events: auto; + border: 0; + outline: 0; + background-color: #2494db +} + + .nav-primary__button:focus { + border: solid 1px transparent; /* Will show in IE/Edge high contrast mode. */ + } + } + +@media (min-width: 1200px) { + +body:not(.is-always-mobile-nav) .js-fixed .nav-primary__button { + visibility: visible +} + } + +@media (min-width: 1200px) { + +body.is-always-mobile-nav .nav-primary__button { + visibility: hidden +} + } + +.nav-primary__icon { + position: relative; + width: 36px; + height: 21px; + transition: opacity 0.2s; + pointer-events: none; + opacity: 0; + transform-style: preserve-3d +} + +.nav-primary__icon > span { + display: block; + height: 0; + /* Intentionally not using CSS logical properties. */ + border-top: solid 3px #fff + } + +[dir="ltr"] .nav-primary__icon > span:nth-child(1) { + left: 0 +} + +[dir="rtl"] .nav-primary__icon > span:nth-child(1) { + right: 0 +} + +.nav-primary__icon > span:nth-child(1) { + position: absolute; + top: 0; + width: 100%; + height: 0; + transition: transform 0.2s; + background-color: #fff; + } + +[dir="ltr"] .nav-primary__icon > span:nth-child(2) { + left: 0 +} + +[dir="rtl"] .nav-primary__icon > span:nth-child(2) { + right: 0 +} + +.nav-primary__icon > span:nth-child(2) { + position: absolute; + top: 9px; + width: 100%; + height: 0; + transition: opacity 0.2s; + background-color: #fff; + } + +[dir="ltr"] .nav-primary__icon > span:nth-child(3) { + left: 0 +} + +[dir="rtl"] .nav-primary__icon > span:nth-child(3) { + right: 0 +} + +.nav-primary__icon > span:nth-child(3) { + position: absolute; + top: auto; + bottom: 0; + width: 100%; + height: 0; + transition: transform 0.2s; + background-color: #fff; + } + +.js-fixed .nav-primary__icon { + opacity: 1; +} + +[aria-expanded="true"] .nav-primary__icon > span:nth-child(1) { + top: 9px; + transform: rotate(-45deg); + } + +[aria-expanded="true"] .nav-primary__icon > span:nth-child(2) { + opacity: 0; + } + +[aria-expanded="true"] .nav-primary__icon > span:nth-child(3) { + top: 9px; + transform: rotate(45deg); + } diff --git a/core/themes/olivero/css/components/navigation/nav-button-wide.pcss.css b/core/themes/olivero/css/components/navigation/nav-button-wide.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..f4abc3124aa57fe5c29eb7376e2832b5c304e2c0 --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-button-wide.pcss.css @@ -0,0 +1,108 @@ +/** + * @file + * Nav Button Wide. + */ + +@import "../../base/variables.pcss.css"; + +.nav-primary__button { + display: none; + + @media (--nav) { + display: flex; + visibility: hidden; + flex-shrink: 0; + align-items: center; + justify-content: center; + width: var(--content-left); + height: var(--sp6); + cursor: pointer; + pointer-events: auto; + border: 0; + outline: 0; + background-color: var(--color--blue-50); + + &:focus { + border: solid 1px transparent; /* Will show in IE/Edge high contrast mode. */ + } + } +} + +body:not(.is-always-mobile-nav) .js-fixed .nav-primary__button { + @media (--nav) { + visibility: visible; + } +} + +body.is-always-mobile-nav .nav-primary__button { + @media (--nav) { + visibility: hidden; + } +} + +.nav-primary__icon { + position: relative; + width: var(--sp2); + height: 21px; + transition: opacity 0.2s; + pointer-events: none; + opacity: 0; + transform-style: preserve-3d; + + & > span { + display: block; + height: 0; + /* Intentionally not using CSS logical properties. */ + border-top: solid 3px var(--color--white); + + &:nth-child(1) { + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + width: 100%; + height: 0; + transition: transform 0.2s; + background-color: var(--color--white); + } + + &:nth-child(2) { + position: absolute; + inset-block-start: 9px; + inset-inline-start: 0; + width: 100%; + height: 0; + transition: opacity 0.2s; + background-color: var(--color--white); + } + + &:nth-child(3) { + position: absolute; + inset-block: auto 0; + inset-inline-start: 0; + width: 100%; + height: 0; + transition: transform 0.2s; + background-color: var(--color--white); + } + } +} + +.js-fixed .nav-primary__icon { + opacity: 1; +} + +[aria-expanded="true"] .nav-primary__icon { + & > span:nth-child(1) { + inset-block-start: 9px; + transform: rotate(-45deg); + } + + & > span:nth-child(2) { + opacity: 0; + } + + & > span:nth-child(3) { + inset-block-start: 9px; + transform: rotate(45deg); + } +} diff --git a/core/themes/olivero/css/components/navigation/nav-primary-button.css b/core/themes/olivero/css/components/navigation/nav-primary-button.css new file mode 100644 index 0000000000000000000000000000000000000000..885a409b22898d740c3538849ac3d0cc57ed4818 --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-primary-button.css @@ -0,0 +1,163 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Button that expands second level nav when clicked. + */ + +[dir="ltr"] .primary-nav__button-toggle { + padding-left: 0 +} + +[dir="rtl"] .primary-nav__button-toggle { + padding-right: 0 +} + +[dir="ltr"] .primary-nav__button-toggle { + padding-right: 0 +} + +[dir="rtl"] .primary-nav__button-toggle { + padding-left: 0 +} + +.primary-nav__button-toggle { + position: relative; + overflow: hidden; + width: 36px; + height: 36px; + margin-top: 2px; /* Visually align button with menu link text. */ + padding-top: 0; + padding-bottom: 0; + cursor: pointer; + text-indent: -999px; + border: 0; + background: transparent; + -webkit-appearance: none +} + +.primary-nav__button-toggle .icon--menu-toggle { + position: absolute; + /* stylelint-disable csstools/use-logical */ + top: 50%; + left: 50%; + /* stylelint-enable csstools/use-logical */ + width: 16px; + height: 16px; + transition: background-color 0.2s; + transform: translate(-50%, -50%); + border-radius: 2px + } + +.primary-nav__button-toggle .icon--menu-toggle:before, + .primary-nav__button-toggle .icon--menu-toggle:after { + position: absolute; + /* stylelint-disable csstools/use-logical */ + top: 50%; + left: 50%; + /* stylelint-enable csstools/use-logical */ + width: 18px; + height: 0; + content: ""; + transform: translate(-50%, -50%); + /* Intentionally not using CSS logical properties. */ + border-top: solid 3px #2494db; + } + +.primary-nav__button-toggle .icon--menu-toggle:after { + transition: opacity 0.2s; + transform: translate(-50%, -50%) rotate(90deg); + } + +.primary-nav__button-toggle[aria-expanded="true"] .icon--menu-toggle:after { + opacity: 0; + } + +.primary-nav__button-toggle { + + /* aria-hidden attribute is removed by JS. Button is non-functional + until JS is enabled. + */ +} + +.primary-nav__button-toggle[aria-hidden="true"] { + pointer-events: none; + } + +@media (min-width: 1200px) { + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle { + margin-right: -36px + } + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle { + margin-left: -36px + } + body:not(.is-always-mobile-nav) .primary-nav__button-toggle { + flex-shrink: 0; + -ms-grid-row-align: stretch; + align-self: stretch; + width: 44px; + height: auto; + margin-top: 0 + } + + body:not(.is-always-mobile-nav) .primary-nav__button-toggle:focus { + border: 0; + outline: 0 + } + + body:not(.is-always-mobile-nav) .primary-nav__button-toggle:focus .icon--menu-toggle { + border: solid 1px transparent; + background-color: #2494db + } + + body:not(.is-always-mobile-nav) .primary-nav__button-toggle:focus .icon--menu-toggle:after { + border-color: #fff; + } + + body:not(.is-always-mobile-nav) .primary-nav__button-toggle:active { + /* Necessary for Safari. */ + color: currentColor; + } + + body:not(.is-always-mobile-nav) .primary-nav__button-toggle[aria-expanded="true"] .icon--menu-toggle:after { + opacity: 0.8; + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle { + left: 3px + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle { + right: 3px + } + + body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle { + transform: translateY(-50%) + } + + body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle:before { + content: none; + } + + body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle:after { + /* stylelint-disable csstools/use-logical */ + top: calc(50% - 2px); + left: 3px; + /* stylelint-enable csstools/use-logical */ + width: 8px; + height: 8px; + content: ""; + transform: translateY(-50%) rotate(45deg); + opacity: 0.8; + /* Intentionally not using CSS logical properties. */ + border-top: none; + border-right: solid 2px currentColor; + border-bottom: solid 2px currentColor; + background: transparent; + } + } diff --git a/core/themes/olivero/css/components/navigation/nav-primary-button.pcss.css b/core/themes/olivero/css/components/navigation/nav-primary-button.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..356298b7cd415d72a834a8b01b6b3b6650633b71 --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-primary-button.pcss.css @@ -0,0 +1,128 @@ +/** + * @file + * Button that expands second level nav when clicked. + */ + +@import "../../base/variables.pcss.css"; + +.primary-nav__button-toggle { + position: relative; + overflow: hidden; + width: var(--sp2); + height: var(--sp2); + margin-block-start: 2px; /* Visually align button with menu link text. */ + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + cursor: pointer; + text-indent: -999px; + border: 0; + background: transparent; + -webkit-appearance: none; + + & .icon--menu-toggle { + position: absolute; + /* stylelint-disable csstools/use-logical */ + top: 50%; + left: 50%; + /* stylelint-enable csstools/use-logical */ + width: 16px; + height: 16px; + transition: background-color 0.2s; + transform: translate(-50%, -50%); + border-radius: 2px; + + &:before, + &:after { + position: absolute; + /* stylelint-disable csstools/use-logical */ + top: 50%; + left: 50%; + /* stylelint-enable csstools/use-logical */ + width: var(--sp); + height: 0; + content: ""; + transform: translate(-50%, -50%); + /* Intentionally not using CSS logical properties. */ + border-top: solid 3px var(--color--blue-50); + } + + &:after { + transition: opacity 0.2s; + transform: translate(-50%, -50%) rotate(90deg); + } + } + + &[aria-expanded="true"] .icon--menu-toggle:after { + opacity: 0; + } + + /* aria-hidden attribute is removed by JS. Button is non-functional + until JS is enabled. + */ + &[aria-hidden="true"] { + pointer-events: none; + } +} + +body:not(.is-always-mobile-nav) { + @media (--nav) { + & .primary-nav__button-toggle { + flex-shrink: 0; + align-self: stretch; + width: calc(var(--sp2) + 8px); + height: auto; + margin-block-start: 0; + margin-inline-end: calc(-1 * var(--sp2)); + + &:focus { + border: 0; + outline: 0; + + & .icon--menu-toggle { + border: solid 1px transparent; + background-color: var(--color--blue-50); + + &:after { + border-color: var(--color--white); + } + } + } + + &:active { + /* Necessary for Safari. */ + color: currentColor; + } + + &[aria-expanded="true"] .icon--menu-toggle:after { + opacity: 0.8; + } + + & .icon--menu-toggle { + inset-inline-start: 3px; + transform: translateY(-50%); + + &:before { + content: none; + } + + &:after { + /* stylelint-disable csstools/use-logical */ + top: calc(50% - 2px); + left: 3px; + /* stylelint-enable csstools/use-logical */ + width: 8px; + height: 8px; + content: ""; + transform: translateY(-50%) rotate(45deg); + opacity: 0.8; + /* Intentionally not using CSS logical properties. */ + border-top: none; + border-right: solid 2px currentColor; + border-bottom: solid 2px currentColor; + background: transparent; + } + } + } + } +} diff --git a/core/themes/olivero/css/components/navigation/nav-primary-no-js.css b/core/themes/olivero/css/components/navigation/nav-primary-no-js.css new file mode 100644 index 0000000000000000000000000000000000000000..cdcf8e1444f07d26c42c8f77d77f8f97c6f57e40 --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-primary-no-js.css @@ -0,0 +1,213 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Styles for primary navigation when JavaScript is disabled. + */ + +html:not(.js) { + /** + * Mobile styles for primary navigation when JS is disabled. + */ +} + +@media (max-width: 1200px) { + html:not(.js) .primary-nav__menu--level-1 { + column-width: 300px; + grid-column-gap: 36px; + } + + html:not(.js) .primary-nav__menu-item { + page-break-inside: avoid; + break-inside: avoid; + } + + html:not(.js) .site-header__inner__container { + flex-wrap: wrap; + } + + html:not(.js) .mobile-buttons { + display: none; + } + + html[dir="ltr"]:not(.js) .header-nav { + margin-left: 36px; + } + + html[dir="rtl"]:not(.js) .header-nav { + margin-right: 36px; + } + + html[dir="ltr"]:not(.js) .header-nav { + margin-right: 36px; + } + + html[dir="rtl"]:not(.js) .header-nav { + margin-left: 36px; + } + + html[dir="ltr"]:not(.js) .header-nav { + padding-left: 36px; + } + + html[dir="rtl"]:not(.js) .header-nav { + padding-right: 36px; + } + + html[dir="ltr"]:not(.js) .header-nav { + padding-right: 36px; + } + + html[dir="rtl"]:not(.js) .header-nav { + padding-left: 36px; + } + + html:not(.js) .header-nav { + position: static; + visibility: visible; + flex-basis: 100%; + width: 100%; + max-width: none; + margin-top: 36px; + margin-bottom: 0; + padding-top: 36px; + padding-bottom: 0; + transform: none; + border: solid 1px #e7edf1 !important; + box-shadow: 0 0 36px #d7e1e8; + } + + html[dir="ltr"]:not(.js) .primary-nav__menu--level-2 { + border-left: 0; + } + + html[dir="rtl"]:not(.js) .primary-nav__menu--level-2 { + border-right: 0; + } + + html:not(.js) .primary-nav__button-toggle { + display: none; + } + html:not(.js) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before, + html:not(.js) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after { + content: none; + } + } + +@media (min-width: 1200px) { + +html:not(.js) { + /** + * Styles for 'always on mobile navigation' when JS is disabled. + */ +} + html:not(.js) body.is-always-mobile-nav .primary-nav__menu--level-1 { + column-width: 300px; + grid-column-gap: 36px; + } + + html:not(.js) body.is-always-mobile-nav .primary-nav__menu-item { + page-break-inside: avoid; + break-inside: avoid; + } + + html:not(.js) body.is-always-mobile-nav .site-header__inner__container { + flex-wrap: wrap; + } + + html:not(.js) body.is-always-mobile-nav .mobile-buttons { + display: none; + } + + html[dir="ltr"]:not(.js) body.is-always-mobile-nav .header-nav { + margin-left: 36px; + } + + html[dir="rtl"]:not(.js) body.is-always-mobile-nav .header-nav { + margin-right: 36px; + } + + html[dir="ltr"]:not(.js) body.is-always-mobile-nav .header-nav { + margin-right: 36px; + } + + html[dir="rtl"]:not(.js) body.is-always-mobile-nav .header-nav { + margin-left: 36px; + } + + html[dir="ltr"]:not(.js) body.is-always-mobile-nav .header-nav { + padding-left: 36px; + } + + html[dir="rtl"]:not(.js) body.is-always-mobile-nav .header-nav { + padding-right: 36px; + } + + html[dir="ltr"]:not(.js) body.is-always-mobile-nav .header-nav { + padding-right: 36px; + } + + html[dir="rtl"]:not(.js) body.is-always-mobile-nav .header-nav { + padding-left: 36px; + } + + html:not(.js) body.is-always-mobile-nav .header-nav { + position: static; + visibility: visible; + flex-basis: 100%; + width: 100%; + max-width: none; + margin-top: 36px; + margin-bottom: 0; + padding-top: 36px; + padding-bottom: 0; + transform: none; + border: solid 1px #e7edf1 !important; + box-shadow: 0 0 36px #d7e1e8; + } + + html[dir="ltr"]:not(.js) body.is-always-mobile-nav .primary-nav__menu--level-2 { + border-left: 0; + } + + html[dir="rtl"]:not(.js) body.is-always-mobile-nav .primary-nav__menu--level-2 { + border-right: 0; + } + + html:not(.js) body.is-always-mobile-nav .primary-nav__button-toggle { + display: none; + } + html:not(.js) body.is-always-mobile-nav .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before, + html:not(.js) body.is-always-mobile-nav .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after { + content: none; + } + +html:not(.js) { + + /** + * Styles for traditional dropdown primary navigation when JS is disabled. + */ +} + html:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:hover .primary-nav__menu--level-2 { + visibility: visible; + transform: translate(-50%, 0); + opacity: 1; + } + html:not(.js) body:not(.is-always-mobile-nav) { + + /* + * Cannot combine the focus-within pseudo selector with other selectors, + * because it will break IE11 and earlier versions of MS Edge. + */ + } + html:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:focus-within .primary-nav__menu--level-2 { + visibility: visible; + transform: translate(-50%, 0); + opacity: 1; + } + } diff --git a/core/themes/olivero/css/components/navigation/nav-primary-no-js.pcss.css b/core/themes/olivero/css/components/navigation/nav-primary-no-js.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..1535f90cea8dc3acc7b1860c858c1c034dd73d59 --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-primary-no-js.pcss.css @@ -0,0 +1,148 @@ +/** + * @file + * Styles for primary navigation when JavaScript is disabled. + */ + +@import "../../base/variables.pcss.css"; + +:root { + --no-js-nav-column-width: 300px; + --no-js-nav-column-gap: var(--sp2); +} + +html:not(.js) { + /** + * Mobile styles for primary navigation when JS is disabled. + */ + @media (--max-nav) { + & .primary-nav__menu--level-1 { + column-width: var(--no-js-nav-column-width); + column-gap: var(--no-js-nav-column-gap); + } + + & .primary-nav__menu-item { + break-inside: avoid; + } + + & .site-header__inner__container { + flex-wrap: wrap; + } + + & .mobile-buttons { + display: none; + } + + & .header-nav { + position: static; + visibility: visible; + flex-basis: 100%; + width: 100%; + max-width: none; + margin-block: var(--sp2) 0; + margin-inline-start: var(--sp2); + margin-inline-end: var(--sp2); + padding-block: var(--sp2) 0; + padding-inline-start: var(--sp2); + padding-inline-end: var(--sp2); + transform: none; + border: solid 1px var(--color--gray-80) !important; + box-shadow: 0 0 36px var(--color--gray-70); + } + + & .primary-nav__menu--level-2 { + border-inline-start: 0; + } + + & .primary-nav__button-toggle { + display: none; + } + + & .primary-nav__menu-link--button.primary-nav__menu-link--has-children { + &:before, + &:after { + content: none; + } + } + } + + @media (--nav) { + /** + * Styles for 'always on mobile navigation' when JS is disabled. + */ + & body.is-always-mobile-nav { + & .primary-nav__menu--level-1 { + column-width: var(--no-js-nav-column-width); + column-gap: var(--no-js-nav-column-gap); + } + + & .primary-nav__menu-item { + break-inside: avoid; + } + + & .site-header__inner__container { + flex-wrap: wrap; + } + + & .mobile-buttons { + display: none; + } + + & .header-nav { + position: static; + visibility: visible; + flex-basis: 100%; + width: 100%; + max-width: none; + margin-block: var(--sp2) 0; + margin-inline-start: var(--sp2); + margin-inline-end: var(--sp2); + padding-block: var(--sp2) 0; + padding-inline-start: var(--sp2); + padding-inline-end: var(--sp2); + transform: none; + border: solid 1px var(--color--gray-80) !important; + box-shadow: 0 0 36px var(--color--gray-70); + } + + & .primary-nav__menu--level-2 { + border-inline-start: 0; + } + + & .primary-nav__button-toggle { + display: none; + } + + & .primary-nav__menu-link--button.primary-nav__menu-link--has-children { + &:before, + &:after { + content: none; + } + } + } + + /** + * Styles for traditional dropdown primary navigation when JS is disabled. + */ + & body:not(.is-always-mobile-nav) { + & .primary-nav__menu-item--level-1:hover { + & .primary-nav__menu--level-2 { + visibility: visible; + transform: translate(-50%, 0); + opacity: 1; + } + } + + /* + * Cannot combine the focus-within pseudo selector with other selectors, + * because it will break IE11 and earlier versions of MS Edge. + */ + & .primary-nav__menu-item--level-1:focus-within { + & .primary-nav__menu--level-2 { + visibility: visible; + transform: translate(-50%, 0); + opacity: 1; + } + } + } + } +} diff --git a/core/themes/olivero/css/components/navigation/nav-primary-wide.css b/core/themes/olivero/css/components/navigation/nav-primary-wide.css new file mode 100644 index 0000000000000000000000000000000000000000..0cdf5e4ee683594412ec90cd18aa0f84a74d2c4e --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-primary-wide.css @@ -0,0 +1,260 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Nav Primary (wide widths). + */ + +@media (min-width: 1200px) { + body:not(.is-always-mobile-nav) .primary-nav__menu-item { + flex-wrap: nowrap /* Ensure that sub navigation toggle button doesn't wrap underneath link. */ + } + body:not(.is-always-mobile-nav) .primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--link, + body:not(.is-always-mobile-nav) .primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--nolink { + flex-basis: auto; + } + + body:not(.is-always-mobile-nav) .primary-nav__menu-link { + letter-spacing: 0.02em; + font-size: 16px; + line-height: 27px; + } + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children { + padding-right: 9px; + } + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children { + padding-left: 9px; + } + body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children { + overflow: visible /* Necessary to view icon in IE11 */ + } + + body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before { + content: none; + } + body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children { + + /* Chevron icon for desktop navigation. */ + } + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after { + left: calc(100% - 3px); + } + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after { + right: calc(100% - 3px); + } + body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after { + position: absolute; + top: 50%; + width: 8px; + height: 8px; + margin-top: -2px; + transform: translateY(-50%) rotate(45deg); + /* Intentionally not using CSS logical properties. */ + border-top: 0; + border-right: solid 2px currentColor; + border-bottom: solid 2px currentColor; + } + + body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children[aria-expanded="true"]:after { + opacity: 1; + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner { + padding-left: 0; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner { + padding-right: 0; + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner { + padding-right: 0; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner { + padding-left: 0; + } + + body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner { + padding-top: 36px; + padding-bottom: 36px; + transform-origin: center; + border-top-width: 9px; + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-1 { + margin-right: 18px; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-1 { + margin-left: 18px; + } + + body:not(.is-always-mobile-nav) .primary-nav__menu--level-1 { + display: flex; + align-items: stretch; + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 { + margin-left: 0; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 { + margin-right: 0; + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 { + margin-right: 0; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 { + margin-left: 0; + } + + body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 { + position: relative; /* Anchor secondary menu */ + display: flex; + align-items: center; + width: -webkit-max-content; + width: max-content; + max-width: 200px; + margin-top: 0; + margin-bottom: 0 + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:not(:last-child) { + margin-right: 36px; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:not(:last-child) { + margin-left: 36px; + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 { + margin-left: 0; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 { + margin-right: 0; + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 { + padding-left: 36px; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 { + padding-right: 36px; + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 { + padding-right: 36px; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 { + padding-left: 36px; + } + + body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 { + position: absolute; + z-index: 5; /* Appear above search container. */ + /* stylelint-disable csstools/use-logical */ + top: calc(100% - 9px); + left: 50%; + /* stylelint-enable csstools/use-logical */ + visibility: hidden; + overflow: visible; + width: 250px; + max-height: none; + margin-top: 0; + padding-top: 54px; + padding-bottom: 54px; + transition: none; + transform: translate(-50%, -20px); + opacity: 0; + /* Intentionally not using CSS logical properties. */ + border-top: solid #2494db 9px; + border-right: solid 1px transparent; /* Transparent borders useful for Windows High Contrast mode. */ + border-bottom: solid 1px transparent; + border-left: solid 1px transparent; + border-radius: 0 0 2px 2px; + background: #fff; + box-shadow: 0 1px 36px rgba(0, 0, 0, 0.08) + + /* Arrow */ + } + body:not(.is-always-mobile-nav) .primary-nav__menu--level-2:after { + position: absolute; + /* stylelint-disable csstools/use-logical */ + bottom: calc(100% + 9px); + left: 50%; + /* stylelint-enable csstools/use-logical */ + width: 0; + height: 0; + content: ""; + transform: translateX(-50%); + /* Intentionally not using CSS logical properties. */ + border-right: solid 10px transparent; + border-bottom: solid 10px #2494db; + border-left: solid 10px transparent; + } + + body:not(.is-always-mobile-nav) .primary-nav__menu--level-2.is-active { + visibility: visible; + margin-top: 0; + transform: translate(-50%, 0); + opacity: 1; + } + + body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 { + display: block + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner { + padding-left: 0; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner { + padding-right: 0; + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner { + padding-right: 0; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner { + padding-left: 0; + } + + body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner { + padding-top: 9px; + padding-bottom: 9px + } + + body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner:after { + transform-origin: left; + border-top-width: 3px; + } + } + +/* + * Only apply transition styles to menu when JS is loaded. This + * works around https://bugs.chromium.org/p/chromium/issues/detail?id=332189 + */ + +@media (min-width: 1200px) { + +html.js body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 { + transition: visibility 0.2s, transform 0.2s, opacity 0.2s +} + } + +@media (min-width: 1200px) { + [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner:after { + transform-origin: right; + } + } diff --git a/core/themes/olivero/css/components/navigation/nav-primary-wide.pcss.css b/core/themes/olivero/css/components/navigation/nav-primary-wide.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..b03d3b2c4fac3f0961518cdf76cd78afd931fa81 --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-primary-wide.pcss.css @@ -0,0 +1,176 @@ +/** + * @file + * Nav Primary (wide widths). + */ + +@import "../../base/variables.pcss.css"; + +body:not(.is-always-mobile-nav) { + @media (--nav) { + & .primary-nav__menu-item { + flex-wrap: nowrap; /* Ensure that sub navigation toggle button doesn't wrap underneath link. */ + + &.primary-nav__menu-item--has-children { + & .primary-nav__menu-link--link, + & .primary-nav__menu-link--nolink { + flex-basis: auto; + } + } + } + + & .primary-nav__menu-link { + letter-spacing: 0.02em; + font-size: 16px; + line-height: var(--sp1-5); + } + + & .primary-nav__menu-link--button { + &.primary-nav__menu-link--has-children { + overflow: visible; /* Necessary to view icon in IE11 */ + padding-inline-end: 9px; + + &:before { + content: none; + } + + /* Chevron icon for desktop navigation. */ + &:after { + position: absolute; + inset-block-start: 50%; + inset-inline-start: calc(100% - 3px); + width: 8px; + height: 8px; + margin-block-start: -2px; + transform: translateY(-50%) rotate(45deg); + /* Intentionally not using CSS logical properties. */ + border-top: 0; + border-right: solid 2px currentColor; + border-bottom: solid 2px currentColor; + } + + &[aria-expanded="true"]:after { + opacity: 1; + } + } + } + + & .primary-nav__menu-link-inner { + padding-block: var(--sp2); + padding-inline-start: 0; + padding-inline-end: 0; + transform-origin: center; + border-top-width: var(--sp0-5); + } + + & .primary-nav__menu--level-1 { + display: flex; + align-items: stretch; + margin-inline-end: var(--sp); + } + + & .primary-nav__menu-item--level-1 { + position: relative; /* Anchor secondary menu */ + display: flex; + align-items: center; + width: max-content; + max-width: 200px; + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; + + &:not(:last-child) { + margin-inline-end: var(--sp2); + } + } + + & .primary-nav__menu--level-2 { + position: absolute; + z-index: 5; /* Appear above search container. */ + /* stylelint-disable csstools/use-logical */ + top: calc(100% - (0.5 * var(--sp))); + left: 50%; + /* stylelint-enable csstools/use-logical */ + visibility: hidden; + overflow: visible; + width: 250px; + max-height: none; + margin-block-start: 0; + margin-inline-start: 0; + padding-block: calc(3 * var(--sp)); + padding-inline-start: var(--sp2); + padding-inline-end: var(--sp2); + transition: none; + transform: translate(-50%, -20px); + opacity: 0; + /* Intentionally not using CSS logical properties. */ + border-top: solid var(--color--blue-50) var(--sp0-5); + border-right: solid 1px transparent; /* Transparent borders useful for Windows High Contrast mode. */ + border-bottom: solid 1px transparent; + border-left: solid 1px transparent; + border-radius: 0 0 2px 2px; + background: var(--color--white); + box-shadow: 0 1px 36px rgba(0, 0, 0, 0.08); + + /* Arrow */ + &:after { + position: absolute; + /* stylelint-disable csstools/use-logical */ + bottom: calc(100% + (0.5 * var(--sp))); + left: 50%; + /* stylelint-enable csstools/use-logical */ + width: 0; + height: 0; + content: ""; + transform: translateX(-50%); + /* Intentionally not using CSS logical properties. */ + border-right: solid 10px transparent; + border-bottom: solid 10px var(--color--blue-50); + border-left: solid 10px transparent; + } + + &.is-active { + visibility: visible; + margin-block-start: 0; + transform: translate(-50%, 0); + opacity: 1; + } + } + + & .primary-nav__menu-link--level-2 { + display: block; + + & .primary-nav__menu-link-inner { + padding-block: var(--sp0-5); + padding-inline-start: 0; + padding-inline-end: 0; + + &:after { + transform-origin: left; + border-top-width: 3px; + } + } + } + } +} + +/* + * Only apply transition styles to menu when JS is loaded. This + * works around https://bugs.chromium.org/p/chromium/issues/detail?id=332189 + */ +html.js body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 { + @media (--nav) { + transition: visibility 0.2s, transform 0.2s, opacity 0.2s; + } +} + +[dir="rtl"] { + & body:not(.is-always-mobile-nav) { + @media (--nav) { + & .primary-nav__menu-link--level-2 { + & .primary-nav__menu-link-inner:after { + transform-origin: right; + } + } + } + } +} diff --git a/core/themes/olivero/css/components/navigation/nav-primary.css b/core/themes/olivero/css/components/navigation/nav-primary.css new file mode 100644 index 0000000000000000000000000000000000000000..8b3bea970dd9f85910ef7d62f49d9cd186cdc435 --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-primary.css @@ -0,0 +1,329 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Nav Primary. + */ + +.primary-nav__menu { + list-style: none; +} + +.primary-nav__menu-item { + margin-bottom: 9px +} + +.primary-nav__menu-item:last-child { + margin-bottom: 0; + } + +.primary-nav__menu-item.primary-nav__menu-item--has-children { + display: flex; + flex-wrap: wrap; + justify-content: space-between + } + +.primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--link, + .primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--nolink { + /* Ensure that long text doesn't make the mobile expand button wrap. */ + flex-basis: calc(100% - 54px); + } + +.primary-nav__menu-link { + flex-grow: 1; + text-decoration: none; + letter-spacing: -1px; + color: #0d1214; + font-size: 28px; + font-weight: bold; + line-height: 36px +} + +.primary-nav__menu-link:hover { + color: inherit; + } + +[dir="ltr"] .primary-nav__menu-link--nolink { + padding-left: 0; +} + +[dir="rtl"] .primary-nav__menu-link--nolink { + padding-right: 0; +} + +[dir="ltr"] .primary-nav__menu-link--nolink { + padding-right: 0; +} + +[dir="rtl"] .primary-nav__menu-link--nolink { + padding-left: 0; +} + +.primary-nav__menu-link--nolink { + padding-top: 9px; + padding-bottom: 9px; + color: #6e7172; + font-weight: normal; +} + +[dir="ltr"] .primary-nav__menu-link--button { + padding-left: 0; +} + +[dir="rtl"] .primary-nav__menu-link--button { + padding-right: 0; +} + +[dir="ltr"] .primary-nav__menu-link--button { + padding-right: 0; +} + +[dir="rtl"] .primary-nav__menu-link--button { + padding-left: 0; +} + +[dir="ltr"] .primary-nav__menu-link--button { + text-align: left; +} + +[dir="rtl"] .primary-nav__menu-link--button { + text-align: right; +} + +.primary-nav__menu-link--button { + position: relative; + padding-top: 0; + padding-bottom: 0; + cursor: pointer; + border: 0; + background: transparent + + /* Plus icon for mobile navigation. */ +} + +[dir="ltr"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children { + padding-right: 54px; +} + +[dir="rtl"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children { + padding-left: 54px; +} + +.primary-nav__menu-link--button.primary-nav__menu-link--has-children { /* Ensure text does not overlap icon. */ + } + +[dir="ltr"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before,[dir="ltr"] + .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after { + right: 9px; +} + +[dir="rtl"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before,[dir="rtl"] + .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after { + left: 9px; +} + +.primary-nav__menu-link--button.primary-nav__menu-link--has-children:before, + .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after { + position: absolute; + top: 20px; + width: 18px; + height: 0; + content: ""; + /* Intentionally not using CSS logical properties. */ + border-top: solid 3px #2494db; + } + +.primary-nav__menu-link--button.primary-nav__menu-link--has-children:after { + transition: opacity 0.2s; + transform: rotate(90deg); + } + +.primary-nav__menu-link--button.primary-nav__menu-link--has-children[aria-expanded="true"]:after { + opacity: 0; + } + +[dir="ltr"] .primary-nav__menu-link-inner { + padding-left: 0; +} + +[dir="rtl"] .primary-nav__menu-link-inner { + padding-right: 0; +} + +[dir="ltr"] .primary-nav__menu-link-inner { + padding-right: 0; +} + +[dir="rtl"] .primary-nav__menu-link-inner { + padding-left: 0; +} + +.primary-nav__menu-link-inner { + position: relative; + display: inline-flex; + align-items: center; + padding-top: 9px; + padding-bottom: 9px +} + +[dir="ltr"] .primary-nav__menu-link-inner:after { + left: 0; +} + +[dir="rtl"] .primary-nav__menu-link-inner:after { + right: 0; +} + +.primary-nav__menu-link-inner:after { + position: absolute; + bottom: 0; + width: 100%; + height: 0; + content: ""; + transition: transform 0.2s; + transform: scaleX(0); + transform-origin: left; + /* Intentionally not using CSS logical properties. */ + border-top: solid 5px #2494db; + } + +.primary-nav__menu-link-inner:hover, + .primary-nav__menu-link-inner:focus { + outline: 0 + } + +.primary-nav__menu-link-inner:hover:after, .primary-nav__menu-link-inner:focus:after { + transform: scaleX(1); + } + +/* + Top level specific styles. +*/ + +[dir="ltr"] .primary-nav__menu--level-1 { + margin-left: 0; +} + +[dir="rtl"] .primary-nav__menu--level-1 { + margin-right: 0; +} + +[dir="ltr"] .primary-nav__menu--level-1 { + margin-right: 0; +} + +[dir="rtl"] .primary-nav__menu--level-1 { + margin-left: 0; +} + +[dir="ltr"] .primary-nav__menu--level-1 { + padding-left: 0; +} + +[dir="rtl"] .primary-nav__menu--level-1 { + padding-right: 0; +} + +[dir="ltr"] .primary-nav__menu--level-1 { + padding-right: 0; +} + +[dir="rtl"] .primary-nav__menu--level-1 { + padding-left: 0; +} + +.primary-nav__menu--level-1 { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} + +.primary-nav__menu-link--level-1 { + position: relative; + display: flex; +} + +/* + Secondary menu specific styles. +*/ + +[dir="ltr"] .primary-nav__menu--level-2 { + margin-left: -18px; +} + +[dir="rtl"] .primary-nav__menu--level-2 { + margin-right: -18px; +} + +[dir="ltr"] .primary-nav__menu--level-2 { + padding-left: 45px; +} + +[dir="rtl"] .primary-nav__menu--level-2 { + padding-right: 45px; +} + +[dir="ltr"] .primary-nav__menu--level-2 { + border-left: solid 18px #2494db; +} + +[dir="rtl"] .primary-nav__menu--level-2 { + border-right: solid 18px #2494db; +} + +.primary-nav__menu--level-2 { + visibility: hidden; + overflow: hidden; + flex-basis: 100%; + max-height: 0; + transition: opacity 0.2s, visibility 0.2s, max-height 0.2s; + opacity: 0 +} + +.primary-nav__menu--level-2.is-active { + visibility: visible; + max-height: none; + margin-top: 27px; + opacity: 1; + } + +@media (min-width: 700px) { + +[dir="ltr"] .primary-nav__menu--level-2 { + margin-left: -54px; + } + +[dir="rtl"] .primary-nav__menu--level-2 { + margin-right: -54px; + } + +[dir="ltr"] .primary-nav__menu--level-2 { + padding-left: 54px; + } + +[dir="rtl"] .primary-nav__menu--level-2 { + padding-right: 54px; + } + } + +.primary-nav__menu-link--level-2 { + font-size: 16px; + font-weight: normal; + line-height: 18px; +} + +html:not(.js) .primary-nav__menu--level-2 { + visibility: visible; + max-height: none; + opacity: 1; + } + +[dir="rtl"] .primary-nav__menu-link-inner:after { + transform-origin: right; + } diff --git a/core/themes/olivero/css/components/navigation/nav-primary.pcss.css b/core/themes/olivero/css/components/navigation/nav-primary.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..1211272705e8a2fc44ed9fc7e7d9ec1887669d37 --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-primary.pcss.css @@ -0,0 +1,187 @@ +/** + * @file + * Nav Primary. + */ + +@import "../../base/variables.pcss.css"; + +.primary-nav__menu { + list-style: none; +} + +.primary-nav__menu-item { + margin-block-end: var(--sp0-5); + + &:last-child { + margin-block-end: 0; + } + + &.primary-nav__menu-item--has-children { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + + & .primary-nav__menu-link--link, + & .primary-nav__menu-link--nolink { + /* Ensure that long text doesn't make the mobile expand button wrap. */ + flex-basis: calc(100% - var(--sp3)); + } + } +} + +.primary-nav__menu-link { + flex-grow: 1; + text-decoration: none; + letter-spacing: -1px; + color: var(--color--gray-0); + font-size: 28px; + font-weight: bold; + line-height: var(--sp2); + + &:hover { + color: inherit; + } +} + +.primary-nav__menu-link--nolink { + padding-block: var(--sp0-5); + padding-inline-start: 0; + padding-inline-end: 0; + color: var(--color--gray-20); + font-weight: normal; +} + +.primary-nav__menu-link--button { + position: relative; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + cursor: pointer; + text-align: start; + border: 0; + background: transparent; + + /* Plus icon for mobile navigation. */ + &.primary-nav__menu-link--has-children { + padding-inline-end: var(--sp3); /* Ensure text does not overlap icon. */ + + &:before, + &:after { + position: absolute; + inset-block-start: 20px; + inset-inline-end: 9px; + width: 18px; + height: 0; + content: ""; + /* Intentionally not using CSS logical properties. */ + border-top: solid 3px var(--color--blue-50); + } + + &:after { + transition: opacity 0.2s; + transform: rotate(90deg); + } + + &[aria-expanded="true"]:after { + opacity: 0; + } + } +} + +.primary-nav__menu-link-inner { + position: relative; + display: inline-flex; + align-items: center; + padding-block: var(--sp0-5); + padding-inline-start: 0; + padding-inline-end: 0; + + &:after { + position: absolute; + inset-block-end: 0; + inset-inline-start: 0; + width: 100%; + height: 0; + content: ""; + transition: transform 0.2s; + transform: scaleX(0); + transform-origin: left; + /* Intentionally not using CSS logical properties. */ + border-top: solid 5px var(--color--blue-50); + } + + &:hover, + &:focus { + outline: 0; + + &:after { + transform: scaleX(1); + } + } +} + +/* + Top level specific styles. +*/ +.primary-nav__menu--level-1 { + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; +} + +.primary-nav__menu-link--level-1 { + position: relative; + display: flex; +} + +/* + Secondary menu specific styles. +*/ +.primary-nav__menu--level-2 { + visibility: hidden; + overflow: hidden; + flex-basis: 100%; + max-height: 0; + margin-inline-start: calc(-1 * var(--sp)); + padding-inline-start: var(--sp2-5); + transition: opacity 0.2s, visibility 0.2s, max-height 0.2s; + opacity: 0; + border-inline-start: solid var(--sp) var(--color--blue-50); + + &.is-active { + visibility: visible; + max-height: none; + margin-block-start: var(--sp1-5); + opacity: 1; + } + + @media (--md) { + margin-inline-start: calc(-1 * var(--sp3)); + padding-inline-start: var(--sp3); + } +} + +.primary-nav__menu-link--level-2 { + font-size: 16px; + font-weight: normal; + line-height: var(--sp); +} + +html:not(.js) { + & .primary-nav__menu--level-2 { + visibility: visible; + max-height: none; + opacity: 1; + } +} + +[dir="rtl"] { + & .primary-nav__menu-link-inner { + &:after { + transform-origin: right; + } + } +} diff --git a/core/themes/olivero/css/components/navigation/nav-secondary.css b/core/themes/olivero/css/components/navigation/nav-secondary.css new file mode 100644 index 0000000000000000000000000000000000000000..a7942672e8547b06cda2d4b26907d4ad38d9bc63 --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-secondary.css @@ -0,0 +1,174 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Nav Secondary. + */ + +.secondary-nav__wrapper { + display: flex; + margin-top: 36px; + margin-bottom: 36px; +} + +.secondary-nav { + letter-spacing: 0.02em; + font-size: 14px; + font-weight: 600 +} + +[dir="ltr"] .secondary-nav ul.menu { + margin-left: 0; +} + +[dir="rtl"] .secondary-nav ul.menu { + margin-right: 0; +} + +[dir="ltr"] .secondary-nav ul.menu { + margin-right: 0; +} + +[dir="rtl"] .secondary-nav ul.menu { + margin-left: 0; +} + +[dir="ltr"] .secondary-nav ul.menu { + padding-left: 0; +} + +[dir="rtl"] .secondary-nav ul.menu { + padding-right: 0; +} + +[dir="ltr"] .secondary-nav ul.menu { + padding-right: 0; +} + +[dir="rtl"] .secondary-nav ul.menu { + padding-left: 0; +} + +.secondary-nav ul.menu { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + list-style: none + } + +.secondary-nav ul.menu li { + /* Parent element is set to flex-basis: 0. We + * don't want text to wrap unless it goes over a + * certain arbitrary width. + */ + + /* @todo should this be scoped to desktop nav? */ + width: -webkit-max-content; + width: max-content; + max-width: 200px + } + +[dir="ltr"] .secondary-nav ul.menu li:not(:last-child) { + margin-right: 27px; +} + +[dir="rtl"] .secondary-nav ul.menu li:not(:last-child) { + margin-left: 27px; +} + +.secondary-nav ul.menu a:not(.button--primary) { + position: relative; + display: inline-flex; + align-items: center; + height: 36px; + text-decoration: none; + color: inherit + } + +.secondary-nav ul.menu a:not(.button--primary):after { + position: absolute; + /* stylelint-disable csstools/use-logical */ + bottom: 0; + left: 0; + /* stylelint-enable csstools/use-logical */ + width: 100%; + height: 0; + content: ""; + transition: opacity 0.2s, transform 0.2s; + transform: translateY(5px); + opacity: 0; + /* Intentionally not using CSS logical properties. */ + border-top: solid 2px currentColor; + } + +.secondary-nav ul.menu a:not(.button--primary):focus:after, .secondary-nav ul.menu a:not(.button--primary):hover:after { + transform: translateY(0); + opacity: 0.8; + } + +@media (min-width: 1200px) { + body:not(.is-always-mobile-nav) .secondary-nav__wrapper { + justify-content: flex-end; + margin: 0 + + /* If the secondary nav is the first item within the header, it does not need left separator. */ + } + body:not(.is-always-mobile-nav) .secondary-nav__wrapper:first-child .secondary-nav:before { + content: none; + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .secondary-nav { + margin-left: 18px; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .secondary-nav { + margin-right: 18px; + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .secondary-nav { + padding-left: 36px; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .secondary-nav { + padding-right: 36px; + } + + body:not(.is-always-mobile-nav) .secondary-nav { + position: relative; + display: flex + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .secondary-nav:before { + left: 0; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .secondary-nav:before { + right: 0; + } + + body:not(.is-always-mobile-nav) .secondary-nav:before { + position: absolute; + top: 50%; + width: 2px; + height: 36px; + content: ""; + transform: translateY(-50%); + background-color: #d7e1e8; + } + + [dir="ltr"] body:not(.is-always-mobile-nav) .secondary-nav ul.menu li:not(:last-child) { + margin-right: 36px; + } + + [dir="rtl"] body:not(.is-always-mobile-nav) .secondary-nav ul.menu li:not(:last-child) { + margin-left: 36px; + } + } diff --git a/core/themes/olivero/css/components/navigation/nav-secondary.pcss.css b/core/themes/olivero/css/components/navigation/nav-secondary.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..91a3e15503bf61a10656741c68e385118fab0a68 --- /dev/null +++ b/core/themes/olivero/css/components/navigation/nav-secondary.pcss.css @@ -0,0 +1,114 @@ +/** + * @file + * Nav Secondary. + */ + +@import "../../base/variables.pcss.css"; + +.secondary-nav__wrapper { + display: flex; + margin-block-start: var(--sp2); + margin-block-end: var(--sp2); +} + +.secondary-nav { + letter-spacing: 0.02em; + font-size: var(--font-size-s); + font-weight: 600; + + & ul.menu { + display: flex; + align-items: center; + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + list-style: none; + + & li { + /* Parent element is set to flex-basis: 0. We + * don't want text to wrap unless it goes over a + * certain arbitrary width. + */ + + /* @todo should this be scoped to desktop nav? */ + width: max-content; + max-width: 200px; + + &:not(:last-child) { + margin-inline-end: var(--sp1-5); + } + } + + & a:not(.button--primary) { + position: relative; + display: inline-flex; + align-items: center; + height: var(--sp2); + text-decoration: none; + color: inherit; + + &:after { + position: absolute; + /* stylelint-disable csstools/use-logical */ + bottom: 0; + left: 0; + /* stylelint-enable csstools/use-logical */ + width: 100%; + height: 0; + content: ""; + transition: opacity 0.2s, transform 0.2s; + transform: translateY(5px); + opacity: 0; + /* Intentionally not using CSS logical properties. */ + border-top: solid 2px currentColor; + } + + &:focus, + &:hover { + &:after { + transform: translateY(0); + opacity: 0.8; + } + } + } + } +} + +body:not(.is-always-mobile-nav) { + @media (--nav) { + & .secondary-nav__wrapper { + justify-content: flex-end; + margin: 0; + + /* If the secondary nav is the first item within the header, it does not need left separator. */ + &:first-child .secondary-nav:before { + content: none; + } + } + + & .secondary-nav { + position: relative; + display: flex; + margin-inline-start: var(--sp); + padding-inline-start: var(--sp2); + + &:before { + position: absolute; + inset-block-start: 50%; + inset-inline-start: 0; + width: 2px; + height: var(--sp2); + content: ""; + transform: translateY(-50%); + background-color: var(--color--gray-70); + } + + & ul.menu li:not(:last-child) { + margin-inline-end: var(--sp2); + } + } + } +} diff --git a/core/themes/olivero/css/components/node-preview-container.css b/core/themes/olivero/css/components/node-preview-container.css new file mode 100644 index 0000000000000000000000000000000000000000..6b21b87e4ee073545244cf2716c02c6b06fe07cf --- /dev/null +++ b/core/themes/olivero/css/components/node-preview-container.css @@ -0,0 +1,69 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Node preview container styling. + */ + +[dir="ltr"] .node-preview-container { + padding-left: 9px; +} + +[dir="rtl"] .node-preview-container { + padding-right: 9px; +} + +[dir="ltr"] .node-preview-container { + padding-right: 9px; +} + +[dir="rtl"] .node-preview-container { + padding-left: 9px; +} + +.node-preview-container { + padding-top: 0; + padding-bottom: 0; + background: #fff; + box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08); /* LTR */ +} + +[dir="rtl"] .node-preview-container { + box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08); +} + +body.toolbar-vertical.toolbar-tray-open .node-preview-container { + max-width: calc(100vw - 254px); +} + +.node-preview-form-select { + display: flex; + flex-wrap: wrap; + align-items: center; +} + +[dir="ltr"] .node-preview-backlink { + margin-left: 0; +} + +[dir="rtl"] .node-preview-backlink { + margin-right: 0; +} + +[dir="ltr"] .node-preview-backlink { + margin-right: auto; +} + +[dir="rtl"] .node-preview-backlink { + margin-left: auto; +} + +.node-preview-backlink { + margin-top: 9px; + margin-bottom: 9px; +} diff --git a/core/themes/olivero/css/components/node-preview-container.pcss.css b/core/themes/olivero/css/components/node-preview-container.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..53e1f1d4033323ff9e50c40584317d5706b013f3 --- /dev/null +++ b/core/themes/olivero/css/components/node-preview-container.pcss.css @@ -0,0 +1,34 @@ +/** + * @file + * Node preview container styling. + */ + +@import "../base/variables.pcss.css"; + +.node-preview-container { + padding-block: 0; + padding-inline-start: var(--sp0-5); + padding-inline-end: var(--sp0-5); + background: var(--color--white); + box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08); /* LTR */ +} + +[dir="rtl"] .node-preview-container { + box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08); +} + +body.toolbar-vertical.toolbar-tray-open .node-preview-container { + max-width: calc(100vw - var(--toolbar-tray-vertical-width) - var(--scrollbar-width)); +} + +.node-preview-form-select { + display: flex; + flex-wrap: wrap; + align-items: center; +} + +.node-preview-backlink { + margin-block: var(--sp0-5); + margin-inline-start: 0; + margin-inline-end: auto; +} diff --git a/core/themes/olivero/css/components/node-teaser.css b/core/themes/olivero/css/components/node-teaser.css new file mode 100644 index 0000000000000000000000000000000000000000..99c1e4f995c05248930d7dd489fee72f4295cc1c --- /dev/null +++ b/core/themes/olivero/css/components/node-teaser.css @@ -0,0 +1,208 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Node Teaser specific styles. + */ + +.node--view-mode-teaser { + position: relative; /* Anchor after pseudo-element. */ + margin-bottom: 27px +} + +.node--view-mode-teaser:after { + position: absolute; + bottom: 0; + width: 54px; + height: 0; + content: ""; + /* Intentionally not using CSS logical properties. */ + border-top: solid 2px #e7edf1; + } + +.node--view-mode-teaser .node__meta { + margin-bottom: 18px + } + +.node--view-mode-teaser .node__meta a { + color: #0d77b5; + font-weight: bold; + } + +.node--view-mode-teaser .node__top-wrapper { + display: flex; + align-items: center; + margin: 0; + margin-bottom: 18px + } + +@media (min-width: 1000px) { + +.node--view-mode-teaser .node__top-wrapper { + position: relative; /* Anchor the image */ + margin: 0 + } + } + +[dir="ltr"] .node--view-mode-teaser .field--name-field-image { + margin-right: 18px +} + +[dir="rtl"] .node--view-mode-teaser .field--name-field-image { + margin-left: 18px +} + +.node--view-mode-teaser .field--name-field-image { + flex-shrink: 0; + margin: 0 + } + +.node--view-mode-teaser .field--name-field-image img { + width: 63px; + height: 63px; + -o-object-fit: cover; + object-fit: cover; + border-radius: 50% + } + +@media (min-width: 1000px) { + +.node--view-mode-teaser .field--name-field-image img { + width: calc((100vw - 519px)/14); + height: calc((100vw - 519px)/14) + } + } + +@media (min-width: 1200px) { + +.node--view-mode-teaser .field--name-field-image img { + width: calc((100vw - 645px)/14); + height: calc((100vw - 645px)/14) + } + } + +@media (min-width: 1440px) { + +.node--view-mode-teaser .field--name-field-image img { + width: 57.85714px; + height: 57.85714px + } + } + +@media (min-width: 1000px) { + +[dir="ltr"] .node--view-mode-teaser .field--name-field-image { + left: calc(-1*((100vw - 519px)/14 + 36px)) + } + +[dir="rtl"] .node--view-mode-teaser .field--name-field-image { + right: calc(-1*((100vw - 519px)/14 + 36px)) + } + +.node--view-mode-teaser .field--name-field-image { + position: absolute; + top: 0; + margin: 0 + } + } + +@media (min-width: 1200px) { + +[dir="ltr"] .node--view-mode-teaser .field--name-field-image { + left: calc(-1*((100vw - 645px)/14 + 36px)) + } + +[dir="rtl"] .node--view-mode-teaser .field--name-field-image { + right: calc(-1*((100vw - 645px)/14 + 36px)) + } + } + +@media (min-width: 1440px) { + +[dir="ltr"] .node--view-mode-teaser .field--name-field-image { + left: -93.85714px + } + +[dir="rtl"] .node--view-mode-teaser .field--name-field-image { + right: -93.85714px + } + } + +.node--view-mode-teaser .node__title { + margin: 0; + color: #0d1214; + font-size: 24px; + line-height: 27px + } + +@media (min-width: 1000px) { + +.node--view-mode-teaser .node__title { + margin-bottom: 18px; + font-size: 36px; + line-height: 54px + } + } + +[dir="ltr"] .node--view-mode-teaser .field--tag-ref { + margin-left: 0 +} + +[dir="rtl"] .node--view-mode-teaser .field--tag-ref { + margin-right: 0 +} + +[dir="ltr"] .node--view-mode-teaser .field--tag-ref { + margin-right: 0 +} + +[dir="rtl"] .node--view-mode-teaser .field--tag-ref { + margin-left: 0 +} + +[dir="ltr"] .node--view-mode-teaser .field--tag-ref { + padding-left: 0 +} + +[dir="rtl"] .node--view-mode-teaser .field--tag-ref { + padding-right: 0 +} + +[dir="ltr"] .node--view-mode-teaser .field--tag-ref { + padding-right: 0 +} + +[dir="rtl"] .node--view-mode-teaser .field--tag-ref { + padding-left: 0 +} + +.node--view-mode-teaser .field--tag-ref { + margin-top: 18px; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + background-color: transparent + } + +@media (min-width: 1000px) { + +.node--view-mode-teaser .field--tag-ref { + margin-top: 36px + } + } + +@media (min-width: 1000px) { + +.node--view-mode-teaser { + margin-bottom: 54px +} + } + +.views-row:last-child .node--view-mode-teaser { + margin-bottom: 0; +} diff --git a/core/themes/olivero/css/components/node-teaser.pcss.css b/core/themes/olivero/css/components/node-teaser.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..b490307013c43dba96dca3890a759faa21d83d7c --- /dev/null +++ b/core/themes/olivero/css/components/node-teaser.pcss.css @@ -0,0 +1,121 @@ +/** + * @file + * Node Teaser specific styles. + */ + +@import "../base/variables.pcss.css"; + +.node--view-mode-teaser { + position: relative; /* Anchor after pseudo-element. */ + margin-block-end: var(--sp1-5); + + &:after { + position: absolute; + inset-block-end: 0; + width: var(--sp3); + height: 0; + content: ""; + /* Intentionally not using CSS logical properties. */ + border-top: solid 2px var(--color--gray-80); + } + + & .node__meta { + margin-block-end: var(--sp); + + & a { + color: var(--color--blue-20); + font-weight: bold; + } + } + + & .node__top-wrapper { + display: flex; + align-items: center; + margin: 0; + margin-block-end: var(--sp1); + + @media (--lg) { + position: relative; /* Anchor the image */ + margin: 0; + } + } + + & .field--name-field-image { + flex-shrink: 0; + margin: 0; + margin-inline-end: var(--sp1); + + & img { + width: calc(3.5 * var(--sp)); + height: calc(3.5 * var(--sp)); + object-fit: cover; + border-radius: 50%; + + @media (--lg) { + width: var(--grid-col-width--lg); + height: var(--grid-col-width--lg); + } + + @media (--nav) { + width: var(--grid-col-width--nav); + height: var(--grid-col-width--nav); + } + + @media (--grid-max) { + width: var(--grid-col-width--max); + height: var(--grid-col-width--max); + } + } + + @media (--lg) { + position: absolute; + inset-block-start: 0; + inset-inline-start: calc(-1 * ((var(--grid-col-width--lg) + var(--grid-gap--lg)))); + margin: 0; + } + + @media (--nav) { + inset-inline-start: calc(-1 * ((var(--grid-col-width--nav) + var(--grid-gap--nav)))); + } + + @media (--grid-max) { + inset-inline-start: calc(-1 * ((var(--grid-col-width--max) + var(--grid-gap--max)))); + } + } + + & .node__title { + margin: 0; + color: var(--color--gray-0); + font-size: 24px; + line-height: var(--line-height-base); + + @media (--lg) { + margin-block-end: var(--sp1); + font-size: var(--sp2); + line-height: var(--sp3); + } + } + + & .field--tag-ref { + margin-block-start: var(--sp1); + margin-block-end: 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + background-color: transparent; + + @media (--lg) { + margin-block-start: var(--sp2); + } + } + + @media (--lg) { + margin-block-end: var(--sp3); + } +} + +.views-row:last-child .node--view-mode-teaser { + margin-block-end: 0; +} diff --git a/core/themes/olivero/css/components/node.css b/core/themes/olivero/css/components/node.css new file mode 100644 index 0000000000000000000000000000000000000000..ae97b62c535843e9b0bb0a48aa43b34e6b2c0c26 --- /dev/null +++ b/core/themes/olivero/css/components/node.css @@ -0,0 +1,92 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Node specific styles. + */ + +.node__meta { + display: flex; + align-items: center; + margin-bottom: 18px; + color: #6e7172; + font-size: 14px; + line-height: 18px +} + +[dir="ltr"] .node__meta .field--name-user-picture img { + margin-right: 9px +} + +[dir="rtl"] .node__meta .field--name-user-picture img { + margin-left: 9px +} + +.node__meta .field--name-user-picture img { + width: 45px; + height: 45px; + -o-object-fit: cover; + object-fit: cover; + border-radius: 50%; + } + +.node__meta a { + font-weight: bold; + } + +@media (min-width: 500px) { + +.node__meta { + margin-bottom: 36px +} + } + +.node__title a { + padding-bottom: 3px; + transition: background-size 0.2s, color 0.2s; + text-decoration: none; + color: #0d1214; + background-color: transparent; + background-image: linear-gradient(#2494db, #2494db); /* Two values are needed for IE11 support. */ + background-repeat: no-repeat; + background-position: bottom left; /* LTR */ + background-size: 0 3px + } + +.node__title a:hover { + color: #0d77b5; + } + +.node__title a:focus { + color: #0d77b5; + background-size: 100% 3px + } + +@media screen and (-ms-high-contrast: active) { + +.node__title a:focus { + text-decoration: underline; + outline: medium none invert; + outline: initial + } + } + +[dir="rtl"] .node__title { + background-position: bottom right; +} + +.node__content { + padding-bottom: 27px +} + +@media (min-width: 1000px) { + +.node__content { + padding-bottom: 54px +} + } diff --git a/core/themes/olivero/css/components/node.pcss.css b/core/themes/olivero/css/components/node.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..bf6b72ffa10ec9d1874e2f804cdb51a1fff6888e --- /dev/null +++ b/core/themes/olivero/css/components/node.pcss.css @@ -0,0 +1,71 @@ +/** + * @file + * Node specific styles. + */ + +@import "../base/variables.pcss.css"; + +.node__meta { + display: flex; + align-items: center; + margin-block-end: var(--sp1); + color: var(--color--gray-20); + font-size: 14px; + line-height: var(--sp); + + & .field--name-user-picture img { + width: var(--sp2-5); + height: var(--sp2-5); + margin-inline-end: var(--sp0-5); + object-fit: cover; + border-radius: 50%; + } + + & a { + font-weight: bold; + } + + @media (--sm) { + margin-block-end: var(--sp2); + } +} + +.node__title { + & a { + padding-block-end: 3px; + transition: background-size 0.2s, color 0.2s; + text-decoration: none; + color: var(--color--gray-0); + background-color: transparent; + background-image: linear-gradient(var(--color--blue-50), var(--color--blue-50)); /* Two values are needed for IE11 support. */ + background-repeat: no-repeat; + background-position: bottom left; /* LTR */ + background-size: 0 3px; + + &:hover { + color: var(--color--blue-20); + } + + &:focus { + color: var(--color--blue-20); + background-size: 100% 3px; + + @media screen and (-ms-high-contrast: active) { + text-decoration: underline; + outline: initial; + } + } + } +} + +[dir="rtl"] .node__title { + background-position: bottom right; +} + +.node__content { + padding-block-end: var(--sp1-5); + + @media (--lg) { + padding-block-end: var(--sp3); + } +} diff --git a/core/themes/olivero/css/components/off-canvas.css b/core/themes/olivero/css/components/off-canvas.css new file mode 100644 index 0000000000000000000000000000000000000000..8782071a0e2c28a4ec3c2e5a05164a57ef6939dd --- /dev/null +++ b/core/themes/olivero/css/components/off-canvas.css @@ -0,0 +1,124 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Settings tray specific styles. + */ + +[dir="ltr"] #drupal-off-canvas .form-type--boolean { + margin-left: 0 +} + +[dir="rtl"] #drupal-off-canvas .form-type--boolean { + margin-right: 0 +} + +#drupal-off-canvas .form-type--boolean { + line-height: 18px + } + +#drupal-off-canvas .form-type--boolean input[type="checkbox"], + #drupal-off-canvas .form-type--boolean input[type="radio"] { + float: none; + width: 13.5px; + height: 13.5px; + transform: none; + vertical-align: middle; + } + +[dir="ltr"] #drupal-off-canvas .form-type--boolean .form-item__description { + margin-left: 0 +} + +[dir="rtl"] #drupal-off-canvas .form-type--boolean .form-item__description { + margin-right: 0 +} + +#drupal-off-canvas { + + /* Necessary for Safari. */ +} + +#drupal-off-canvas .olivero-details { + border-top: solid 1px rgba(255, 255, 255, 0.25); + border-bottom: solid 1px rgba(255, 255, 255, 0.25); + box-shadow: none; + } + +#drupal-off-canvas .olivero-details__wrapper { + padding: 20px; + } + +#drupal-off-canvas { + + /* Necessary for Safari. */ +} + +#drupal-off-canvas .olivero-details__summary { + display: block; + list-style: disc outside none; + list-style: initial + } + +#drupal-off-canvas .olivero-details__summary:focus { + outline: solid 1px rgba(255, 255, 255, 0.25); + } + +#drupal-off-canvas .olivero-details__summary:before { + content: none; + } + +#drupal-off-canvas .olivero-details__summary::-webkit-details-marker { + display: inline-block; + } + +#drupal-off-canvas .olivero-details__summary { + + /* Necessary for IE11. */ + } + +#drupal-off-canvas .olivero-details__summary .details-title:before { + content: none; + } + +#drupal-off-canvas .olivero-details__summary { + + /* Necessary for Firefox. */ + } + +@supports (list-style-type: disclosure-closed) { + +#drupal-off-canvas .olivero-details__summary { + display: list-item; + list-style-position: inside; + list-style-type: disclosure-closed + } + } + +#drupal-off-canvas { + + /* Necessary for Firefox. */ +} + +@supports (list-style-type: disclosure-open) { + +#drupal-off-canvas .olivero-details[open] .olivero-details__summary { + list-style-type: disclosure-open + } + } + +#drupal-off-canvas { + + /* Necessary for Safari. */ +} + +#drupal-off-canvas div { + display: block; + color: #ddd; + font-size: 14px; + } diff --git a/core/themes/olivero/css/components/off-canvas.pcss.css b/core/themes/olivero/css/components/off-canvas.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..6e40efe3b34b9ea9f640c76cfade51a2afbaed5f --- /dev/null +++ b/core/themes/olivero/css/components/off-canvas.pcss.css @@ -0,0 +1,81 @@ +/** + * @file + * Settings tray specific styles. + */ + +@import "../base/variables.pcss.css"; + +#drupal-off-canvas { + & .form-type--boolean { + margin-inline-start: 0; + line-height: var(--line-height-s); + + & input[type="checkbox"], + & input[type="radio"] { + float: none; + width: var(--sp0-75); + height: var(--sp0-75); + transform: none; + vertical-align: middle; + } + + & .form-item__description { + margin-inline-start: 0; + } + } + + /* Necessary for Safari. */ + & .olivero-details { + border-top: solid 1px rgba(255, 255, 255, 0.25); + border-bottom: solid 1px rgba(255, 255, 255, 0.25); + box-shadow: none; + } + + & .olivero-details__wrapper { + padding: 20px; + } + + /* Necessary for Safari. */ + & .olivero-details__summary { + display: block; + list-style: initial; + + &:focus { + outline: solid 1px rgba(255, 255, 255, 0.25); + } + + &:before { + content: none; + } + + &::-webkit-details-marker { + display: inline-block; + } + + /* Necessary for IE11. */ + & .details-title:before { + content: none; + } + + /* Necessary for Firefox. */ + @supports (list-style-type: disclosure-closed) { + display: list-item; + list-style-position: inside; + list-style-type: disclosure-closed; + } + } + + /* Necessary for Firefox. */ + & .olivero-details[open] .olivero-details__summary { + @supports (list-style-type: disclosure-open) { + list-style-type: disclosure-open; + } + } + + /* Necessary for Safari. */ + & div { + display: block; + color: #ddd; + font-size: 14px; + } +} diff --git a/core/themes/olivero/css/components/page-title.css b/core/themes/olivero/css/components/page-title.css new file mode 100644 index 0000000000000000000000000000000000000000..e8549449f021c5eb4b065ac4202158337af3d4ea --- /dev/null +++ b/core/themes/olivero/css/components/page-title.css @@ -0,0 +1,19 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Page title. + */ + +.page-title { + /* + Necessary to properly display the star icon from core's shortcut + module. + */ + display: inline; +} diff --git a/core/themes/olivero/css/components/page-title.pcss.css b/core/themes/olivero/css/components/page-title.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..62b1336db8872db7b606eb0421e032f9771a91ed --- /dev/null +++ b/core/themes/olivero/css/components/page-title.pcss.css @@ -0,0 +1,14 @@ +/** + * @file + * Page title. + */ + +@import "../base/variables.pcss.css"; + +.page-title { + /* + Necessary to properly display the star icon from core's shortcut + module. + */ + display: inline; +} diff --git a/core/themes/olivero/css/components/pager.css b/core/themes/olivero/css/components/pager.css new file mode 100644 index 0000000000000000000000000000000000000000..5aa14731a05c8a22ea033d79458fa1ee5659b120 --- /dev/null +++ b/core/themes/olivero/css/components/pager.css @@ -0,0 +1,106 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Styles for pagination. + */ + +[dir="ltr"] .pager__items { + margin-left: 0; +} + +[dir="rtl"] .pager__items { + margin-right: 0; +} + +[dir="ltr"] .pager__items { + padding-left: 0; +} + +[dir="rtl"] .pager__items { + padding-right: 0; +} + +[dir="ltr"] .pager__items { + padding-right: 0; +} + +[dir="rtl"] .pager__items { + padding-left: 0; +} + +.pager__items { + display: flex; + flex-wrap: wrap; + align-items: flex-end; + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + list-style: none; + font-weight: bold; +} + +.pager__item { + display: flex; + align-items: center; + justify-content: center; + width: 45px; + height: 45px; + cursor: default; + color: #6e7172; + background-color: #fff +} + +@media (min-width: 500px) { + +.pager__item { + width: 54px; + height: 54px +} + } + +[dir="rtl"] .pager__item--control { + transform: scaleX(-1); +} + +.pager__item--active { + color: #fff; + background-color: #0d77b5; +} + +.pager__link { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + text-decoration: none; + color: #6e7172; + border: 2px solid transparent; + outline: none; +} + +.pager__link:hover { + background-color: #e7edf1; +} + +.pager__link:focus { + color: #0d77b5; + border-color: #0d77b5; +} + +.pager__item svg { + display: block; + fill: currentColor; +} + +.pager__item--next svg, +.pager__item--last svg { + transform: rotate(180deg); +} diff --git a/core/themes/olivero/css/components/pager.pcss.css b/core/themes/olivero/css/components/pager.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..34f51340abb6f394a70eb6ec54f3df5d2711682e --- /dev/null +++ b/core/themes/olivero/css/components/pager.pcss.css @@ -0,0 +1,75 @@ +/** + * @file + * Styles for pagination. + */ + +@import "../base/variables.pcss.css"; + +.pager__items { + display: flex; + flex-wrap: wrap; + align-items: flex-end; + margin-block: 0; + margin-inline-start: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + list-style: none; + font-weight: bold; +} + +.pager__item { + display: flex; + align-items: center; + justify-content: center; + width: var(--sp2-5); + height: var(--sp2-5); + cursor: default; + color: var(--color--gray-20); + background-color: var(--color--white); + + @media (--sm) { + width: var(--sp3); + height: var(--sp3); + } +} + +[dir="rtl"] .pager__item--control { + transform: scaleX(-1); +} + +.pager__item--active { + color: var(--color--white); + background-color: var(--color--blue-20); +} + +.pager__link { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + text-decoration: none; + color: var(--color--gray-20); + border: 2px solid transparent; + outline: none; +} + +.pager__link:hover { + background-color: var(--color--gray-80); +} + +.pager__link:focus { + color: var(--color--blue-20); + border-color: var(--color--blue-20); +} + +.pager__item svg { + display: block; + fill: currentColor; +} + +.pager__item--next svg, +.pager__item--last svg { + transform: rotate(180deg); +} diff --git a/core/themes/olivero/css/components/powered-by-block.css b/core/themes/olivero/css/components/powered-by-block.css new file mode 100644 index 0000000000000000000000000000000000000000..337e587e8f3799d4db5572f0db307ea1824a7772 --- /dev/null +++ b/core/themes/olivero/css/components/powered-by-block.css @@ -0,0 +1,58 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Powered by block specific styles. + */ + +.block-system-powered-by-block { + letter-spacing: 0.02em; + color: #5d7585; + font-size: 14px; + line-height: 18px +} + +.block-system-powered-by-block a { + text-decoration: underline + } + +.block-system-powered-by-block a:hover, + .block-system-powered-by-block a:focus { + text-decoration: none; + } + +[dir="ltr"] .block-system-powered-by-block .drupal-logo { + margin-left: 4.5px +} + +[dir="rtl"] .block-system-powered-by-block .drupal-logo { + margin-right: 4.5px +} + +.block-system-powered-by-block .drupal-logo { + display: inline-block; + margin-top: -4.5px; + } + +.block-system-powered-by-block svg { + width: 0.875rem; /* 14 */ + height: 1.1875rem; /* 19 */ + vertical-align: top + } + +.block-system-powered-by-block svg path { + fill: currentColor; + } + +.site-footer .block-system-powered-by-block a { + color: #fff; + } + +.site-footer .block-system-powered-by-block svg path { + fill: #fff; + } diff --git a/core/themes/olivero/css/components/powered-by-block.pcss.css b/core/themes/olivero/css/components/powered-by-block.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..bf9567e0b311631884163e49074c6a49380452e5 --- /dev/null +++ b/core/themes/olivero/css/components/powered-by-block.pcss.css @@ -0,0 +1,48 @@ +/** + * @file + * Powered by block specific styles. + */ + +@import "../base/variables.pcss.css"; + +.block-system-powered-by-block { + letter-spacing: 0.02em; + color: var(--color--gray-25); + font-size: 14px; + line-height: var(--sp); + + & a { + text-decoration: underline; + + &:hover, + &:focus { + text-decoration: none; + } + } + + & .drupal-logo { + display: inline-block; + margin-block-start: calc(-1 * var(--sp) / 4); + margin-inline-start: calc(var(--sp) / 4); + } + + & svg { + width: 0.875rem; /* 14 */ + height: 1.1875rem; /* 19 */ + vertical-align: top; + + & path { + fill: currentColor; + } + } +} + +.site-footer .block-system-powered-by-block { + & a { + color: var(--color--white); + } + + & svg path { + fill: var(--color--white); + } +} diff --git a/core/themes/olivero/css/components/progress.css b/core/themes/olivero/css/components/progress.css new file mode 100644 index 0000000000000000000000000000000000000000..c8a2432603421ea321095ba266294dcbbfce4e73 --- /dev/null +++ b/core/themes/olivero/css/components/progress.css @@ -0,0 +1,23 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Progress bar specific styles. + */ + +.progress__track { + overflow: hidden; + height: 18px; + border: 1px solid #0d77b5; + border-radius: 2px; +} + +.progress__bar { + height: 18px; + background-color: #0d77b5; +} diff --git a/core/themes/olivero/css/components/progress.pcss.css b/core/themes/olivero/css/components/progress.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..a5f300263fc5d359944967155671b1a5814e43ac --- /dev/null +++ b/core/themes/olivero/css/components/progress.pcss.css @@ -0,0 +1,18 @@ +/** + * @file + * Progress bar specific styles. + */ + +@import "../base/variables.pcss.css"; + +.progress__track { + overflow: hidden; + height: var(--sp); + border: 1px solid var(--color--blue-20); + border-radius: var(--border-radius); +} + +.progress__bar { + height: var(--sp); + background-color: var(--color--blue-20); +} diff --git a/core/themes/olivero/css/components/search-results.css b/core/themes/olivero/css/components/search-results.css new file mode 100644 index 0000000000000000000000000000000000000000..291cb4bcbf9a9fb7c9de1d1e14a5d3dd8c1e5117 --- /dev/null +++ b/core/themes/olivero/css/components/search-results.css @@ -0,0 +1,159 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Search results specific styles. + */ + +[dir="ltr"] .search-results { + padding-left: 0 +} + +[dir="rtl"] .search-results { + padding-right: 0 +} + +[dir="ltr"] .search-results { + padding-right: 0 +} + +[dir="rtl"] .search-results { + padding-left: 0 +} + +.search-results { + margin-bottom: 36px; + padding-top: 0; + padding-bottom: 0; + list-style: none +} + +@media (min-width: 700px) { + +.search-results { + margin-bottom: 54px +} + } + +[dir="ltr"] .search-result__title { + margin-left: 0 +} + +[dir="rtl"] .search-result__title { + margin-right: 0 +} + +[dir="ltr"] .search-result__title { + margin-right: 0 +} + +[dir="rtl"] .search-result__title { + margin-left: 0 +} + +.search-result__title { + margin-top: 0; + margin-bottom: 0; + color: #0d1214; + font-size: 20px; + line-height: 27px +} + +.search-result__title a { + padding-bottom: 3px; + transition: background-size 0.2s, color 0.2s; + text-decoration: none; + background-color: transparent; + background-image: linear-gradient(#2494db, #2494db); /* Two values are needed for IE11 support. */ + background-repeat: no-repeat; + background-position: bottom left; /* LTR */ + background-size: 0 3px + } + +.search-result__title a:hover { + color: #0d77b5; + } + +.search-result__title a:focus { + color: #0d77b5; + outline: 0; + background-size: 100% 3px + } + +@media screen and (-ms-high-contrast: active) { + +.search-result__title a:focus { + text-decoration: underline; + outline: medium none invert; + outline: initial + } + } + +@media (min-width: 1000px) { + +.search-result__title { + margin-bottom: 18px; + font-size: 30px; + line-height: 54px +} + } + +[dir="rtl"] .search-result__title a { + background-position: bottom right; +} + +.search-result__snippet { + padding-bottom: 25px +} + +@media (min-width: 1000px) { + +.search-result__snippet { + padding-bottom: 54px +} + } + +.search-result__meta { + display: flex; + align-items: center; + margin-bottom: 18px; + color: #6e7172; + font-size: 14px; + line-height: 18px +} + +.search-result__meta a { + color: #0d77b5; + font-weight: bold; + } + +.search-results__item { + position: relative; /* Anchor after pseudo-element. */ + margin-bottom: 27px +} + +.search-results__item:after { + position: absolute; + bottom: 0; + width: 54px; + height: 0; + content: ""; + /* Intentionally not using CSS logical properties. */ + border-top: solid 2px #e7edf1; + } + +.search-results__item:last-child { + margin-bottom: 0; + } + +@media (min-width: 1000px) { + +.search-results__item { + margin-bottom: 54px +} + } diff --git a/core/themes/olivero/css/components/search-results.pcss.css b/core/themes/olivero/css/components/search-results.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..13811cb9176c3a4402bf14e24cad70982067ce58 --- /dev/null +++ b/core/themes/olivero/css/components/search-results.pcss.css @@ -0,0 +1,108 @@ +/** + * @file + * Search results specific styles. + */ + +@import "../base/variables.pcss.css"; + +.search-results { + margin-block-end: var(--sp2); + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + list-style: none; + + @media (--md) { + margin-block-end: var(--sp3); + } +} + +.search-result__title { + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; + color: var(--color--gray-0); + font-size: 20px; + line-height: var(--line-height-base); + + & a { + padding-block-end: 3px; + transition: background-size 0.2s, color 0.2s; + text-decoration: none; + background-color: transparent; + background-image: linear-gradient(var(--color--blue-50), var(--color--blue-50)); /* Two values are needed for IE11 support. */ + background-repeat: no-repeat; + background-position: bottom left; /* LTR */ + background-size: 0 3px; + + &:hover { + color: var(--color--blue-20); + } + + &:focus { + color: var(--color--blue-20); + outline: 0; + background-size: 100% 3px; + + @media screen and (-ms-high-contrast: active) { + text-decoration: underline; + outline: initial; + } + } + } + + @media (--lg) { + margin-block-end: var(--sp1); + font-size: 30px; + line-height: var(--sp3); + } +} + +[dir="rtl"] .search-result__title a { + background-position: bottom right; +} + +.search-result__snippet { + padding-block-end: calc(var(--sp1-5) - 2px); + + @media (--lg) { + padding-block-end: var(--sp3); + } +} + +.search-result__meta { + display: flex; + align-items: center; + margin-block-end: var(--sp1); + color: var(--color--gray-20); + font-size: 14px; + line-height: var(--sp); + + & a { + color: var(--color--blue-20); + font-weight: bold; + } +} + +.search-results__item { + position: relative; /* Anchor after pseudo-element. */ + margin-block-end: var(--sp1-5); + + &:after { + position: absolute; + inset-block-end: 0; + width: var(--sp3); + height: 0; + content: ""; + /* Intentionally not using CSS logical properties. */ + border-top: solid 2px var(--color--gray-80); + } + + &:last-child { + margin-block-end: 0; + } + + @media (--lg) { + margin-block-end: var(--sp3); + } +} diff --git a/core/themes/olivero/css/components/sidebar.css b/core/themes/olivero/css/components/sidebar.css new file mode 100644 index 0000000000000000000000000000000000000000..250725691d84ccd40d182d95a2fb3253e87de992 --- /dev/null +++ b/core/themes/olivero/css/components/sidebar.css @@ -0,0 +1,82 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Styles for sidebar region. + */ + +.region--sidebar .menu { + list-style: none; + } + +.region--sidebar .menu--level-1 { + margin: 0; + } + +[dir="ltr"] .region--sidebar .menu__link { + padding-left: 0; +} + +[dir="rtl"] .region--sidebar .menu__link { + padding-right: 0; +} + +[dir="ltr"] .region--sidebar .menu__link { + padding-right: 0; +} + +[dir="rtl"] .region--sidebar .menu__link { + padding-left: 0; +} + +.region--sidebar .menu__link { + position: relative; + display: block; + padding-top: 13.5px; + padding-bottom: 13.5px; + font-family: "Lora", "georgia", serif; + font-size: 18px + + /* Bottom divider line. */ + } + +[dir="ltr"] .region--sidebar .menu__link:after { + left: 0; +} + +[dir="rtl"] .region--sidebar .menu__link:after { + right: 0; +} + +.region--sidebar .menu__link:after { + position: absolute; + bottom: 0; + width: 72px; + height: 0; + content: ""; + border-top: solid 2px #e7edf1; + } + +.region--sidebar .menu__link--link { + text-decoration: none; + color: #0d1214; + font-weight: 600 + } + +.region--sidebar .menu__link--link:hover { + color: #2494db; + } + +.region--sidebar { + + /* No bottom divider line for last menu item. */ +} + +.region--sidebar .menu__item--level-1:last-child > .menu__link:last-child:after, .region--sidebar .menu__item--level-1:last-child > .menu__item--level-2:last-child > .menu__link:last-child:after { + content: none; + } diff --git a/core/themes/olivero/css/components/sidebar.pcss.css b/core/themes/olivero/css/components/sidebar.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..4291af2f5b1272e7fc69ee0c1e5a66441e1fbab3 --- /dev/null +++ b/core/themes/olivero/css/components/sidebar.pcss.css @@ -0,0 +1,55 @@ +/** + * @file + * Styles for sidebar region. + */ + +@import "../base/variables.pcss.css"; + +.region--sidebar { + & .menu { + list-style: none; + } + + & .menu--level-1 { + margin: 0; + } + + & .menu__link { + position: relative; + display: block; + padding-block: var(--sp0-75); + padding-inline-start: 0; + padding-inline-end: 0; + font-family: var(--font-serif); + font-size: 18px; + + /* Bottom divider line. */ + &:after { + position: absolute; + inset-block-end: 0; + inset-inline-start: 0; + width: var(--sp4); + height: 0; + content: ""; + border-block-start: solid 2px var(--color--gray-80); + } + } + + & .menu__link--link { + text-decoration: none; + color: var(--color--gray-0); + font-weight: 600; + + &:hover { + color: var(--color--blue-50); + } + } + + /* No bottom divider line for last menu item. */ + & .menu__item--level-1:last-child > .menu__link:last-child, + & .menu__item--level-1:last-child > .menu__item--level-2:last-child > .menu__link:last-child { + &:after { + content: none; + } + } +} diff --git a/core/themes/olivero/css/components/skip-link.css b/core/themes/olivero/css/components/skip-link.css new file mode 100644 index 0000000000000000000000000000000000000000..3656047febd2678fa393a80ec75a4f6a8fc4d437 --- /dev/null +++ b/core/themes/olivero/css/components/skip-link.css @@ -0,0 +1,46 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Skip link + * + * Allows keyboard users to quickly skip to the main content of the page. + */ + +[dir="ltr"] .skip-link { + padding-left: 18px +} + +[dir="rtl"] .skip-link { + padding-right: 18px +} + +[dir="ltr"] .skip-link { + padding-right: 18px +} + +[dir="rtl"] .skip-link { + padding-left: 18px +} + +.skip-link { + z-index: 1; /* Appear above header */ + display: block; + width: 100%; + max-width: 1570px; + padding-top: 9px; + padding-bottom: 9px; + text-decoration: none; + color: #fff; + outline: 0; + background-color: #0d1214 +} + +.skip-link:after { + content: "\0020 âž”"; + } diff --git a/core/themes/olivero/css/components/skip-link.pcss.css b/core/themes/olivero/css/components/skip-link.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..28f1addda9229a30c290241fa4eb30eed0fad4eb --- /dev/null +++ b/core/themes/olivero/css/components/skip-link.pcss.css @@ -0,0 +1,26 @@ +/** + * @file + * Skip link + * + * Allows keyboard users to quickly skip to the main content of the page. + */ + +@import "../base/variables.pcss.css"; + +.skip-link { + z-index: 1; /* Appear above header */ + display: block; + width: 100%; + max-width: var(--max-bg-color); + padding-block: var(--sp0-5); + padding-inline-start: var(--sp); + padding-inline-end: var(--sp); + text-decoration: none; + color: var(--color--white); + outline: 0; + background-color: var(--color--gray-0); + + &:after { + content: "\0020 âž”"; + } +} diff --git a/core/themes/olivero/css/components/table.css b/core/themes/olivero/css/components/table.css new file mode 100644 index 0000000000000000000000000000000000000000..4c301ec3101005e5219b65afeda32d4eb6f9c918 --- /dev/null +++ b/core/themes/olivero/css/components/table.css @@ -0,0 +1,177 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * User generated tables. + */ + +.forum table, +.text-content table, +.views-table { + margin-top: 36px; + margin-bottom: 36px; + border-spacing: 0; + color: #313637; + border: 0; + border-collapse: collapse; + font-family: "metropolis", sans-serif; + font-size: 16px; + line-height: 27px +} + +[dir="ltr"] .forum table caption,[dir="ltr"] .text-content table caption,[dir="ltr"] .views-table caption { + text-align: left +} + +[dir="rtl"] .forum table caption,[dir="rtl"] .text-content table caption,[dir="rtl"] .views-table caption { + text-align: right +} + +.forum table caption, .text-content table caption, .views-table caption { + margin-bottom: 18px; + color: #313637; + font-family: "Lora", "georgia", serif; + font-size: 14px; + font-style: italic; + line-height: 18px; + } + +.forum table tr:last-child td, .text-content table tr:last-child td, .views-table tr:last-child td { + border-bottom: 0; + } + +[dir="ltr"] .forum table td,[dir="ltr"] + .forum table th,[dir="ltr"] + .text-content table td,[dir="ltr"] + .text-content table th,[dir="ltr"] + .views-table td,[dir="ltr"] + .views-table th { + padding-left: 0 +} + +[dir="rtl"] .forum table td,[dir="rtl"] + .forum table th,[dir="rtl"] + .text-content table td,[dir="rtl"] + .text-content table th,[dir="rtl"] + .views-table td,[dir="rtl"] + .views-table th { + padding-right: 0 +} + +[dir="ltr"] .forum table td,[dir="ltr"] + .forum table th,[dir="ltr"] + .text-content table td,[dir="ltr"] + .text-content table th,[dir="ltr"] + .views-table td,[dir="ltr"] + .views-table th { + padding-right: 18px +} + +[dir="rtl"] .forum table td,[dir="rtl"] + .forum table th,[dir="rtl"] + .text-content table td,[dir="rtl"] + .text-content table th,[dir="rtl"] + .views-table td,[dir="rtl"] + .views-table th { + padding-left: 18px +} + +.forum table td, + .forum table th, + .text-content table td, + .text-content table th, + .views-table td, + .views-table th { + padding-top: 18px; + padding-bottom: 18px; + vertical-align: top; + } + +[dir="ltr"] .forum table th,[dir="ltr"] .text-content table th,[dir="ltr"] .views-table th { + margin-left: 0 +} + +[dir="rtl"] .forum table th,[dir="rtl"] .text-content table th,[dir="rtl"] .views-table th { + margin-right: 0 +} + +[dir="ltr"] .forum table th,[dir="ltr"] .text-content table th,[dir="ltr"] .views-table th { + margin-right: 0 +} + +[dir="rtl"] .forum table th,[dir="rtl"] .text-content table th,[dir="rtl"] .views-table th { + margin-left: 0 +} + +[dir="ltr"] .forum table th,[dir="ltr"] .text-content table th,[dir="ltr"] .views-table th { + text-align: left +} + +[dir="rtl"] .forum table th,[dir="rtl"] .text-content table th,[dir="rtl"] .views-table th { + text-align: right +} + +.forum table th, .text-content table th, .views-table th { + margin-top: 0; + margin-bottom: 0; + letter-spacing: 0.02em; + color: #0d1214; + border-bottom: 2px solid #2494db; + font-family: "metropolis", sans-serif; + font-size: 14px; + line-height: 18px + + /** + * Fixes for styles injected by CKEditor + */ + } + +[dir="ltr"] .forum table th.text-align-left,[dir="ltr"] .text-content table th.text-align-left,[dir="ltr"] .views-table th.text-align-left { + text-align: left +} + +[dir="rtl"] .forum table th.text-align-left,[dir="rtl"] .text-content table th.text-align-left,[dir="rtl"] .views-table th.text-align-left { + text-align: right +} + +[dir="ltr"] .forum table th.text-align-right,[dir="ltr"] .text-content table th.text-align-right,[dir="ltr"] .views-table th.text-align-right { + text-align: right +} + +[dir="rtl"] .forum table th.text-align-right,[dir="rtl"] .text-content table th.text-align-right,[dir="rtl"] .views-table th.text-align-right { + text-align: left +} + +.forum table th.text-align-center, .text-content table th.text-align-center, .views-table th.text-align-center { + text-align: center; + } + +.forum table th.text-align-justify, .text-content table th.text-align-justify, .views-table th.text-align-justify { + text-align: justify; + } + +.forum table td, .text-content table td, .views-table td { + white-space: normal; + border-bottom: 2px solid #98abb9; + } + +.tablesort { + vertical-align: middle; +} + +.sticky-header { + z-index: 0; + margin: 0; + border-bottom: 4px solid #2494db; +} + +/* Properly align VBO checkboxes. */ + +.views-field-node-bulk-form .form-item { + margin: 0; +} diff --git a/core/themes/olivero/css/components/table.pcss.css b/core/themes/olivero/css/components/table.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..11473ae39704784537437154a6aae77523d9108c --- /dev/null +++ b/core/themes/olivero/css/components/table.pcss.css @@ -0,0 +1,98 @@ +/** + * @file + * User generated tables. + */ + +@import "../base/variables.pcss.css"; + +.forum table, +.text-content table, +.views-table { + margin-block-start: var(--sp2); + margin-block-end: var(--sp2); + border-spacing: 0; + color: var(--color--gray-10); + border: 0; + border-collapse: collapse; + font-family: var(--font-sans); + font-size: 16px; + line-height: var(--sp1-5); + + & caption { + margin-block-end: var(--sp1); + text-align: start; + color: var(--color--gray-10); + font-family: var(--font-serif); + font-size: 14px; + font-style: italic; + line-height: var(--sp); + } + + & tr { + &:last-child { + & td { + border-block-end: 0; + } + } + } + + & td, + & th { + padding-block: var(--sp1); + padding-inline-start: 0; + padding-inline-end: var(--sp1); + vertical-align: top; + } + + & th { + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; + text-align: start; + letter-spacing: 0.02em; + color: var(--color--gray-0); + border-block-end: 2px solid var(--color--blue-50); + font-family: var(--font-sans); + font-size: 14px; + line-height: var(--sp); + + /** + * Fixes for styles injected by CKEditor + */ + &.text-align-left { + text-align: start; + } + + &.text-align-right { + text-align: end; + } + + &.text-align-center { + text-align: center; + } + + &.text-align-justify { + text-align: justify; + } + } + + & td { + white-space: normal; + border-block-end: 2px solid var(--color--gray-40); + } +} + +.tablesort { + vertical-align: middle; +} + +.sticky-header { + z-index: 0; + margin: 0; + border-block-end: 4px solid var(--color--blue-50); +} + +/* Properly align VBO checkboxes. */ +.views-field-node-bulk-form .form-item { + margin: 0; +} diff --git a/core/themes/olivero/css/components/tabledrag.css b/core/themes/olivero/css/components/tabledrag.css new file mode 100644 index 0000000000000000000000000000000000000000..9f3ce1ac91b3e722abeab71655a65a05649d26f3 --- /dev/null +++ b/core/themes/olivero/css/components/tabledrag.css @@ -0,0 +1,21 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Styles for tabledrag. + */ + +a.tabledrag-handle .handle { + width: 36px; + height: 36px; +} + +.touchevents a.tabledrag-handle .handle { + height: 36px; + background-position: 40% 10px; +} diff --git a/core/themes/olivero/css/components/tabledrag.pcss.css b/core/themes/olivero/css/components/tabledrag.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..2043d79f0b6f0970c88ceffc207d4fed9c1ec2ab --- /dev/null +++ b/core/themes/olivero/css/components/tabledrag.pcss.css @@ -0,0 +1,16 @@ +/** + * @file + * Styles for tabledrag. + */ + +@import "../base/variables.pcss.css"; + +a.tabledrag-handle .handle { + width: var(--sp2); + height: var(--sp2); +} + +.touchevents a.tabledrag-handle .handle { + height: var(--sp2); + background-position: 40% 10px; +} diff --git a/core/themes/olivero/css/components/tabs.css b/core/themes/olivero/css/components/tabs.css new file mode 100644 index 0000000000000000000000000000000000000000..058171058e785945dfe4dc3973826323930f6ba8 --- /dev/null +++ b/core/themes/olivero/css/components/tabs.css @@ -0,0 +1,241 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ +[dir="ltr"] .tabs { + margin-left: 0 +} +[dir="rtl"] .tabs { + margin-right: 0 +} +[dir="ltr"] .tabs { + margin-right: 0 +} +[dir="rtl"] .tabs { + margin-left: 0 +} +[dir="ltr"] .tabs { + padding-left: 0 +} +[dir="rtl"] .tabs { + padding-right: 0 +} +[dir="ltr"] .tabs { + padding-right: 0 +} +[dir="rtl"] .tabs { + padding-left: 0 +} +.tabs { + display: flex; + flex-direction: column; + width: 100%; + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + list-style: none +} +@media (min-width: 700px) { +.tabs { + flex-direction: row; + flex-wrap: wrap +} + } +.tabs__tab { + display: none; + margin: 0; + margin-bottom: -1px +} +.tabs__tab.is-active { + display: flex; + } +@media (min-width: 700px) { +.tabs__tab { + display: flex; + margin: 0; + margin-bottom: -1px +} + } +html:not(.js) .tabs__tab, +.tabs.is-expanded .tabs__tab { + display: flex; +} +.tabs--secondary .tabs__tab { + display: block +} +@media (min-width: 700px) { +.tabs--secondary .tabs__tab { + display: flex +} + } +[dir="ltr"] .tabs__link { + padding-left: 27px +} +[dir="rtl"] .tabs__link { + padding-right: 27px +} +[dir="ltr"] .tabs__link { + padding-right: 27px +} +[dir="rtl"] .tabs__link { + padding-left: 27px +} +.tabs__link { + display: flex; + flex-grow: 1; + align-items: center; + height: 54px; + padding-top: 0; + padding-bottom: 0; + transition: background-color 0.2s; + text-decoration: none; + letter-spacing: 1px; + color: #6e7172; + border: 1px solid #e7edf1; + background-color: #f7f9fa; + font-size: 14px; +} +.tabs--secondary .tabs__link { + text-transform: none +} +@media (min-width: 700px) { +.tabs--secondary .tabs__link { + border-top-color: transparent; + border-right-color: transparent; + border-left-color: transparent; + background-color: transparent +} + } +.tabs__link:focus { + position: relative; + z-index: 1; + border-color: #2494db; + outline: none; +} +.tabs__link:hover { + background-color: #e7edf1; +} +.tabs__link.is-active { + position: relative; + color: #0d1214; + font-weight: 600 +} +[dir="ltr"] .tabs__link.is-active:after { + left: -1px +} +[dir="rtl"] .tabs__link.is-active:after { + right: -1px +} +[dir="ltr"] .tabs__link.is-active:after { + border-left: 6px solid #2494db +} +[dir="rtl"] .tabs__link.is-active:after { + border-right: 6px solid #2494db +} +.tabs__link.is-active:after { + position: absolute; + bottom: -1px; + height: calc(100% + 2px); + content: ""; + } +@media (min-width: 700px) { + [dir="ltr"] .tabs__link.is-active:after { + left: 0 + } + [dir="rtl"] .tabs__link.is-active:after { + right: 0 + } + [dir="ltr"] .tabs__link.is-active:after { + border-left: 0 + } + [dir="rtl"] .tabs__link.is-active:after { + border-right: 0 + } + .tabs__link.is-active:after { + width: 100%; + height: auto; + border-top: 6px solid #2494db; + } + } +[dir="ltr"] .tabs__trigger { + margin-left: -1px +} +[dir="rtl"] .tabs__trigger { + margin-right: -1px +} +[dir="ltr"] .tabs__trigger { + margin-right: 0 +} +[dir="rtl"] .tabs__trigger { + margin-left: 0 +} +.tabs__trigger { + display: flex; + align-items: center; + justify-content: center; + width: 54px; + margin-top: 0; + margin-bottom: 0; + cursor: pointer; + border: solid 1px #e7edf1; + background-color: #f7f9fa +} +.tabs__trigger:hover { + background-color: #e7edf1; + } +.tabs__trigger:focus { + position: relative; + border-color: #2494db; + outline: none; + } +@media (min-width: 700px) { +.tabs__trigger { + display: none +} + } +html:not(.js) .tabs__trigger { + display: none; +} +.tabs__trigger-icon { + position: relative; + display: block; + width: 18px; + height: 10px; + margin-top: -2px +} +[dir="ltr"] .tabs__trigger-icon > span { + left: 0 +} +[dir="rtl"] .tabs__trigger-icon > span { + right: 0 +} +.tabs__trigger-icon > span { + position: absolute; + display: block; + width: 100%; + transition: transform 0.2s, opacity 0.2s, top 0.2s; + border-top: solid 2px #2494db + } +.tabs__trigger-icon > span:nth-child(1) { + top: 0; + } +.tabs__trigger-icon > span:nth-child(2) { + top: calc(50% + 1px); + } +.tabs__trigger-icon > span:nth-child(3) { + top: calc(100% + 2px); + } +.tabs__trigger[aria-expanded="true"] .tabs__trigger-icon > span:nth-child(1) { + top: calc(50% + 1px); + transform: rotate(45deg); + } +.tabs__trigger[aria-expanded="true"] .tabs__trigger-icon > span:nth-child(2) { + opacity: 0; + } +.tabs__trigger[aria-expanded="true"] .tabs__trigger-icon > span:nth-child(3) { + top: calc(50% + 1px); + transform: rotate(-45deg); + } diff --git a/core/themes/olivero/css/components/tabs.pcss.css b/core/themes/olivero/css/components/tabs.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..54555fe8e8be3ed0e0600e6ac35350fb9cbf6f79 --- /dev/null +++ b/core/themes/olivero/css/components/tabs.pcss.css @@ -0,0 +1,195 @@ +@import "../base/variables.pcss.css"; + +:root { + --tab-active-border-size: 6px; +} + +.tabs { + display: flex; + flex-direction: column; + width: 100%; + margin-block: 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + list-style: none; + + @media (--md) { + flex-direction: row; + flex-wrap: wrap; + } +} + +.tabs__tab { + display: none; + margin: 0; + margin-block-end: -1px; + + &.is-active { + display: flex; + } + + @media (--md) { + display: flex; + margin: 0; + margin-block-end: -1px; + } +} + +html:not(.js) .tabs__tab, +.tabs.is-expanded .tabs__tab { + display: flex; +} + +.tabs--secondary .tabs__tab { + display: block; + + @media (--md) { + display: flex; + } +} + +.tabs__link { + display: flex; + flex-grow: 1; + align-items: center; + height: var(--sp3); + padding-block: 0; + padding-inline-start: var(--sp1-5); + padding-inline-end: var(--sp1-5); + transition: background-color 0.2s; + text-decoration: none; + letter-spacing: 1px; + color: var(--color--gray-20); + border: 1px solid var(--color--gray-80); + background-color: var(--color--gray-95); + font-size: var(--font-size-s); +} + +.tabs--secondary .tabs__link { + text-transform: none; + + @media (--md) { + border-top-color: transparent; + border-right-color: transparent; + border-left-color: transparent; + background-color: transparent; + } +} + +.tabs__link:focus { + position: relative; + z-index: 1; + border-color: var(--color--blue-50); + outline: none; +} + +.tabs__link:hover { + background-color: var(--color--gray-80); +} + +.tabs__link.is-active { + position: relative; + color: var(--color--gray-0); + font-weight: 600; + + &:after { + position: absolute; + inset-block-end: -1px; + inset-inline-start: -1px; + height: calc(100% + 2px); + content: ""; + border-inline-start: var(--tab-active-border-size) solid var(--color--blue-50); + } + + @media (--md) { + &:after { + inset-inline-start: 0; + width: 100%; + height: auto; + border-block-start: var(--tab-active-border-size) solid var(--color--blue-50); + border-inline-start: 0; + } + } +} + +.tabs__trigger { + display: flex; + align-items: center; + justify-content: center; + width: var(--sp3); + margin-block-start: 0; + margin-block-end: 0; + margin-inline-start: -1px; + margin-inline-end: 0; + cursor: pointer; + border: solid 1px var(--color--gray-80); + background-color: var(--color--gray-95); + + &:hover { + background-color: var(--color--gray-80); + } + + &:focus { + position: relative; + border-color: var(--color--blue-50); + outline: none; + } + + @media (--md) { + display: none; + } +} + +html:not(.js) .tabs__trigger { + display: none; +} + +.tabs__trigger-icon { + position: relative; + display: block; + width: var(--sp); + height: 10px; + margin-block-start: -2px; + + & > span { + position: absolute; + inset-inline-start: 0; + display: block; + width: 100%; + transition: transform 0.2s, opacity 0.2s, top 0.2s; + border-block-start: solid 2px var(--color--blue-50); + + &:nth-child(1) { + inset-block-start: 0; + } + + &:nth-child(2) { + inset-block-start: calc(50% + 1px); + } + + &:nth-child(3) { + inset-block-start: calc(100% + 2px); + } + } +} + +.tabs__trigger[aria-expanded="true"] .tabs__trigger-icon { + & > span { + &:nth-child(1) { + inset-block-start: calc(50% + 1px); + transform: rotate(45deg); + } + + &:nth-child(2) { + opacity: 0; + } + + &:nth-child(3) { + inset-block-start: calc(50% + 1px); + transform: rotate(-45deg); + } + } +} diff --git a/core/themes/olivero/css/components/tags.css b/core/themes/olivero/css/components/tags.css new file mode 100644 index 0000000000000000000000000000000000000000..40a5240135b4af9f9cbfbdf2265c7ed0d21e5282 --- /dev/null +++ b/core/themes/olivero/css/components/tags.css @@ -0,0 +1,164 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Tags field styling. + */ + +.field--tags { + display: flex; + font-family: "metropolis", sans-serif; +} + +[dir="ltr"] .field--tags__label { + margin-right: 22.5px; +} + +[dir="rtl"] .field--tags__label { + margin-left: 22.5px; +} + +.field--tags__label { + margin: 0; + letter-spacing: 0.02em; + color: #6e7172; + font-size: 14px; + font-weight: 600; + line-height: 2 +} + +.field--tags__label:after { + content: ":"; + } + +[dir="ltr"] .field--label-inline .field--tags__label { + padding-left: 0; +} + +[dir="rtl"] .field--label-inline .field--tags__label { + padding-right: 0; +} + +[dir="ltr"] .field--label-inline .field--tags__label { + padding-right: 0; +} + +[dir="rtl"] .field--label-inline .field--tags__label { + padding-left: 0; +} + +.field--label-inline .field--tags__label { + padding-top: 0; + padding-bottom: 0; +} + +[dir="ltr"] .field--tags__items { + margin-left: -4.5px; +} + +[dir="rtl"] .field--tags__items { + margin-right: -4.5px; +} + +[dir="ltr"] .field--tags__items { + margin-right: -4.5px; +} + +[dir="rtl"] .field--tags__items { + margin-left: -4.5px; +} + +[dir="ltr"] .field--tags__items { + padding-left: 0; +} + +[dir="rtl"] .field--tags__items { + padding-right: 0; +} + +[dir="ltr"] .field--tags__items { + padding-right: 0; +} + +[dir="rtl"] .field--tags__items { + padding-left: 0; +} + +.field--tags__items { + display: flex; + flex-wrap: wrap; + margin-top: -4.5px; + margin-bottom: -4.5px; + padding-top: 0; + padding-bottom: 0; + list-style: none; +} + +[dir="ltr"] .field--tags__item { + margin-left: 4.5px; +} + +[dir="rtl"] .field--tags__item { + margin-right: 4.5px; +} + +[dir="ltr"] .field--tags__item { + margin-right: 4.5px; +} + +[dir="rtl"] .field--tags__item { + margin-left: 4.5px; +} + +.field--tags__item { + display: flex; + margin-top: 4.5px; + margin-bottom: 4.5px; +} + +.field--tags__item:nth-last-child(n+2):after { + content: ","; + font-size: 16px; + line-height: 1.5; +} + +.field--tags__item a { + position: relative; + display: flex; + align-items: center; + text-decoration: none; + letter-spacing: 0.02em; + color: #0d77b5; + font-size: 16px; + font-weight: 700; + line-height: 1.5; +} + +[dir="ltr"] .node--view-mode-full .field--tags { + padding-left: 36px; +} + +[dir="rtl"] .node--view-mode-full .field--tags { + padding-right: 36px; +} + +[dir="ltr"] .node--view-mode-full .field--tags { + padding-right: 36px; +} + +[dir="rtl"] .node--view-mode-full .field--tags { + padding-left: 36px; +} + +.node--view-mode-full .field--tags { + margin-top: 72px; + margin-bottom: 72px; + padding-top: 27px; + padding-bottom: 27px; + background-color: #f7f9fa; + } diff --git a/core/themes/olivero/css/components/tags.pcss.css b/core/themes/olivero/css/components/tags.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..233dff9366634d2b9ebe81c3092caab8835fa075 --- /dev/null +++ b/core/themes/olivero/css/components/tags.pcss.css @@ -0,0 +1,79 @@ +/** + * @file + * Tags field styling. + */ + +@import "../base/variables.pcss.css"; + +.field--tags { + display: flex; + font-family: var(--font-sans); +} + +.field--tags__label { + margin: 0; + margin-inline-end: calc(var(--sp1-5) - (var(--sp0-5) / 2)); + letter-spacing: 0.02em; + color: var(--color--gray-20); + font-size: var(--font-size-s); + font-weight: 600; + line-height: 2; + + &:after { + content: ":"; + } +} + +.field--label-inline .field--tags__label { + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; +} + +.field--tags__items { + display: flex; + flex-wrap: wrap; + margin-block: calc((var(--sp0-5) / 2) * -1); + margin-inline-start: calc((var(--sp0-5) / 2) * -1); + margin-inline-end: calc((var(--sp0-5) / 2) * -1); + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: 0; + list-style: none; +} + +.field--tags__item { + display: flex; + margin-block: calc(var(--sp0-5) / 2); + margin-inline-start: calc(var(--sp0-5) / 2); + margin-inline-end: calc(var(--sp0-5) / 2); +} + +.field--tags__item:nth-last-child(n+2):after { + content: ","; + font-size: var(--font-size-base); + line-height: 1.5; +} + +.field--tags__item a { + position: relative; + display: flex; + align-items: center; + text-decoration: none; + letter-spacing: 0.02em; + color: var(--color--blue-20); + font-size: var(--font-size-base); + font-weight: 700; + line-height: 1.5; +} + +.node--view-mode-full { + & .field--tags { + margin-block-start: var(--sp4); + margin-block-end: var(--sp4); + padding-block: var(--sp1-5); + padding-inline-start: var(--sp2); + padding-inline-end: var(--sp2); + background-color: var(--color--gray-95); + } +} diff --git a/core/themes/olivero/css/components/text-content.css b/core/themes/olivero/css/components/text-content.css new file mode 100644 index 0000000000000000000000000000000000000000..5c0bb603f8be5dd2141fd8a1480bf4bbc50fa1b5 --- /dev/null +++ b/core/themes/olivero/css/components/text-content.css @@ -0,0 +1,259 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Text Content. + */ + +.text-content, +.cke_editable { + color: #313637; + font-family: "Lora", "georgia", serif; + line-height: 27px +} + +.text-content h2, .cke_editable h2 { + margin-top: 36px; + margin-bottom: 27px; + letter-spacing: 0.12em; + color: #000; + font-family: "metropolis", sans-serif; + font-size: 16px; + line-height: 27px + } + +@media (min-width: 700px) { + +.text-content h2, .cke_editable h2 { + margin-top: 54px; + margin-bottom: 36px; + letter-spacing: 0.09em; + font-size: 21px + } + } + +.text-content, +.cke_editable { + + /* + @todo + + text-decoration-thickness is supported by FF & Safari + text-underline-offset is supported by Safari + + text-decoration-color supported by Chrome, FF, & Safari + */ +} + +.text-content a, .cke_editable a { + color: #0d77b5; + -webkit-text-decoration-color: #0d77b5; + text-decoration-color: #0d77b5; + text-decoration-width: 2px; + text-decoration-thickness: 2px; + word-wrap: break-word + } + +@supports (box-shadow: none) { + +.text-content a, .cke_editable a { + transition: box-shadow 0.3s cubic-bezier(0.55, 0.085, 0, 0.99); + text-decoration: none; + box-shadow: inset 0 -2px 0 0 #2494db + } + + .text-content a:hover, + .text-content a:focus, + .cke_editable a:hover, + .cke_editable a:focus { + text-decoration: underline; + color: #000; + + /* @todo - #d9ecfa isn't currently a variable. */ + box-shadow: inset 0 -30px 0 0 #d9ecfa; + -webkit-text-decoration-color: #d9ecfa; + text-decoration-color: #d9ecfa; + } + } + +.text-content p, .cke_editable p { + margin-top: 18px; + margin-bottom: 18px + } + +.text-content p:first-child, .cke_editable p:first-child { + margin-top: 0; + } + +.text-content p:last-child, .cke_editable p:last-child { + margin-bottom: 0; + } + +@media (min-width: 700px) { + +.text-content p, .cke_editable p { + margin-top: 36px; + margin-bottom: 36px + } + } + +.text-content code, .cke_editable code { + background-color: #f7f9fa; + } + +[dir="ltr"] .text-content pre code,[dir="ltr"] .cke_editable pre code { + padding-left: 18px +} + +[dir="rtl"] .text-content pre code,[dir="rtl"] .cke_editable pre code { + padding-right: 18px +} + +[dir="ltr"] .text-content pre code,[dir="ltr"] .cke_editable pre code { + padding-right: 18px +} + +[dir="rtl"] .text-content pre code,[dir="rtl"] .cke_editable pre code { + padding-left: 18px +} + +.text-content pre code, .cke_editable pre code { + display: block; + overflow: auto; + padding-top: 18px; + padding-bottom: 18px; + color: #6e7172; + } + +[dir="ltr"] .text-content blockquote,[dir="ltr"] .cke_editable blockquote { + margin-left: 0 +} + +[dir="rtl"] .text-content blockquote,[dir="rtl"] .cke_editable blockquote { + margin-right: 0 +} + +[dir="ltr"] .text-content blockquote,[dir="ltr"] .cke_editable blockquote { + margin-right: 0 +} + +[dir="rtl"] .text-content blockquote,[dir="rtl"] .cke_editable blockquote { + margin-left: 0 +} + +[dir="ltr"] .text-content blockquote,[dir="ltr"] .cke_editable blockquote { + padding-left: 36px +} + +[dir="rtl"] .text-content blockquote,[dir="rtl"] .cke_editable blockquote { + padding-right: 36px +} + +.text-content blockquote, .cke_editable blockquote { + position: relative; + margin-top: 36px; + margin-bottom: 36px; + letter-spacing: -0.01em; + font-family: "Lora", "georgia", serif; + font-size: 21px; + line-height: 36px + } + +[dir="ltr"] .text-content blockquote:before,[dir="ltr"] .cke_editable blockquote:before { + left: 0 +} + +[dir="rtl"] .text-content blockquote:before,[dir="rtl"] .cke_editable blockquote:before { + right: 0 +} + +.text-content blockquote:before, .cke_editable blockquote:before { + position: absolute; + top: 0; + content: "“"; + color: #53b0eb; + font-size: 54px; + } + +[dir="ltr"] .text-content blockquote:after,[dir="ltr"] .cke_editable blockquote:after { + left: 0 +} + +[dir="rtl"] .text-content blockquote:after,[dir="rtl"] .cke_editable blockquote:after { + right: 0 +} + +[dir="ltr"] .text-content blockquote:after,[dir="ltr"] .cke_editable blockquote:after { + margin-left: 4px +} + +[dir="rtl"] .text-content blockquote:after,[dir="rtl"] .cke_editable blockquote:after { + margin-right: 4px +} + +.text-content blockquote:after, .cke_editable blockquote:after { + position: absolute; + bottom: 0; + width: 9px; + height: calc(100% - 30px); + content: ""; + background: #f7f9fa; + } + +@media (min-width: 700px) { + +.text-content blockquote, .cke_editable blockquote { + font-size: 32px; + line-height: 54px + } + } + +@media (min-width: 1000px) { + +.text-content blockquote, .cke_editable blockquote { + font-size: 40px; + line-height: 63px + } + } + +@media (min-width: 700px) { + +.text-content, +.cke_editable { + font-size: 18px; + line-height: 36px +} + } + +/** + * Special colors for footer that has a dark background. + */ + +.site-footer .text-content, + .site-footer .cke_editable { + color: inherit + } + +.site-footer .text-content *, .site-footer .cke_editable * { + color: inherit; + } + +.site-footer .text-content a, .site-footer .cke_editable a { + text-decoration: underline; + color: #fff; + box-shadow: none + } + +.site-footer .text-content a:hover, + .site-footer .text-content a:focus, + .site-footer .cke_editable a:hover, + .site-footer .cke_editable a:focus { + text-decoration: none; + color: #fff; + box-shadow: none; + } diff --git a/core/themes/olivero/css/components/text-content.pcss.css b/core/themes/olivero/css/components/text-content.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..5ec6d5b98fd5349126973be08ceb1dacc02f6707 --- /dev/null +++ b/core/themes/olivero/css/components/text-content.pcss.css @@ -0,0 +1,168 @@ +/** + * @file + * Text Content. + */ + +@import "../base/variables.pcss.css"; + +.text-content, +.cke_editable { + color: var(--color--gray-10); + font-family: var(--font-serif); + line-height: var(--sp1-5); + + & h2 { + margin-block-start: var(--sp2); + margin-block-end: var(--sp1-5); + letter-spacing: 0.12em; + color: var(--color--black); + font-family: var(--font-sans); + font-size: 16px; + line-height: var(--sp1-5); + + @media (--md) { + margin-block-start: var(--sp3); + margin-block-end: var(--sp2); + letter-spacing: 0.09em; + font-size: 21px; + } + } + + /* + @todo + + text-decoration-thickness is supported by FF & Safari + text-underline-offset is supported by Safari + + text-decoration-color supported by Chrome, FF, & Safari + */ + + & a { + color: var(--color--blue-20); + text-decoration-color: var(--color--blue-20); + text-decoration-width: 2px; + text-decoration-thickness: 2px; + overflow-wrap: break-word; + + @supports (box-shadow: none) { + transition: box-shadow 0.3s cubic-bezier(0.55, 0.085, 0, 0.99); + text-decoration: none; + box-shadow: inset 0 -2px 0 0 var(--color--blue-50); + + &:hover, + &:focus { + text-decoration: underline; + color: var(--color--black); + + /* @todo - #d9ecfa isn't currently a variable. */ + box-shadow: inset 0 -30px 0 0 #d9ecfa; + text-decoration-color: #d9ecfa; + } + } + } + + & p { + margin-block-start: var(--sp); + margin-block-end: var(--sp); + + &:first-child { + margin-block-start: 0; + } + + &:last-child { + margin-block-end: 0; + } + + @media (--md) { + margin-block-start: var(--sp2); + margin-block-end: var(--sp2); + } + } + + & code { + background-color: var(--color--gray-95); + } + + & pre code { + display: block; + overflow: auto; + padding-block: var(--sp); + padding-inline-start: var(--sp); + padding-inline-end: var(--sp); + color: var(--color--gray-20); + } + + & blockquote { + position: relative; + margin-block: var(--sp2); + margin-inline-start: 0; + margin-inline-end: 0; + padding-inline-start: var(--sp2); + letter-spacing: -0.01em; + font-family: var(--font-serif); + font-size: 21px; + line-height: var(--sp2); + + &:before { + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + content: "“"; + color: var(--color--blue-70); + font-size: 54px; + } + + &:after { + position: absolute; + inset-block-end: 0; + inset-inline-start: 0; + width: var(--sp0-5); + height: calc(100% - 30px); + margin-inline-start: 4px; + content: ""; + background: var(--color--gray-95); + } + + @media (--grid-md) { + font-size: 32px; + line-height: var(--sp3); + } + + @media (--lg) { + font-size: 40px; + line-height: calc(3.5 * var(--sp)); + } + } + + @media (--grid-md) { + font-size: 18px; + line-height: var(--sp2); + } +} + +/** + * Special colors for footer that has a dark background. + */ +.site-footer { + & .text-content, + & .cke_editable { + color: inherit; + + & * { + color: inherit; + } + + & a { + text-decoration: underline; + color: var(--color--white); + box-shadow: none; + + &:hover, + &:focus { + text-decoration: none; + color: var(--color--white); + box-shadow: none; + } + } + } +} diff --git a/core/themes/olivero/css/components/vertical-tabs.css b/core/themes/olivero/css/components/vertical-tabs.css new file mode 100644 index 0000000000000000000000000000000000000000..e7714f8b0d237d7b9dd80acabe4f10ebbd85f8cb --- /dev/null +++ b/core/themes/olivero/css/components/vertical-tabs.css @@ -0,0 +1,148 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Vertical Tabs. + */ + +@media (min-width: 1000px) { + +.vertical-tabs { + display: flex +} + } + +[dir="ltr"] .vertical-tabs__menu { + margin-left: 0 +} + +[dir="rtl"] .vertical-tabs__menu { + margin-right: 0 +} + +[dir="ltr"] .vertical-tabs__menu { + margin-right: 0 +} + +[dir="rtl"] .vertical-tabs__menu { + margin-left: 0 +} + +.vertical-tabs__menu { + position: relative; + align-self: flex-start; + margin: 0; + list-style: none; + border-width: 1px; + border-style: solid; + border-color: #e7edf1 +} + +@media (min-width: 1000px) { + +.vertical-tabs__menu { + width: 15rem; + border-width: 1px 0 1px 1px +} + } + +.vertical-tabs__panes { + margin-top: -1px +} + +@media (min-width: 1000px) { + +.vertical-tabs__panes { + width: calc(100% - 15rem); + margin-top: 0 +} + } + +@media (min-width: 1000px) { + +.vertical-tabs__pane { + min-height: 100% +} + } + +.vertical-tabs__pane.olivero-details { + margin: 0; + border-radius: 0; + box-shadow: none; +} + +.vertical-tabs__pane > summary { + display: none; +} + +.vertical-tabs__menu-item:nth-child(n+2) { + border-top: 1px solid #e7edf1; +} + +[dir="ltr"] .vertical-tabs__menu-item a { + padding-left: 13.5px +} + +[dir="rtl"] .vertical-tabs__menu-item a { + padding-right: 13.5px +} + +[dir="ltr"] .vertical-tabs__menu-item a { + padding-right: 13.5px +} + +[dir="rtl"] .vertical-tabs__menu-item a { + padding-left: 13.5px +} + +.vertical-tabs__menu-item a { + display: block; + padding-top: 9px; + padding-bottom: 9px; + text-decoration: none; + background-color: #e7edf1 +} + +.vertical-tabs__menu-item a:focus, + .vertical-tabs__menu-item a:hover, + .vertical-tabs__menu-item a:active { + background-color: #f7f9fa; + } + +.vertical-tabs__menu-item.is-selected { + background-color: #fff +} + +@media (min-width: 1000px) { + +[dir="ltr"] .vertical-tabs__menu-item.is-selected { + margin-right: -1px +} + +[dir="rtl"] .vertical-tabs__menu-item.is-selected { + margin-left: -1px +} + +[dir="ltr"] .vertical-tabs__menu-item.is-selected { + padding-right: 1px +} + +[dir="rtl"] .vertical-tabs__menu-item.is-selected { + padding-left: 1px +} + } + +.vertical-tabs__menu-item.is-selected a { + background-color: transparent; +} + +.vertical-tabs__menu-item-summary { + display: block; + font-size: 14px; + line-height: 18px; +} diff --git a/core/themes/olivero/css/components/vertical-tabs.pcss.css b/core/themes/olivero/css/components/vertical-tabs.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..52e0b73fa45a5ccbc2f0e8a4f722af3a1115607b --- /dev/null +++ b/core/themes/olivero/css/components/vertical-tabs.pcss.css @@ -0,0 +1,97 @@ +/** + * @file + * Vertical Tabs. + */ + +@import "../base/variables.pcss.css"; + +:root { + --vertical-tabs-menu-width: 15rem; + --vertical-tabs-menu-border-width: 1px; +} + +.vertical-tabs { + @media (--lg) { + display: flex; + } +} + +.vertical-tabs__menu { + position: relative; + align-self: flex-start; + margin: 0; + margin-inline-start: 0; + margin-inline-end: 0; + list-style: none; + border-width: var(--vertical-tabs-menu-border-width); + border-style: solid; + border-color: var(--color--gray-80); + + @media (--lg) { + width: var(--vertical-tabs-menu-width); + border-width: var(--vertical-tabs-menu-border-width) 0 var(--vertical-tabs-menu-border-width) var(--vertical-tabs-menu-border-width); + } +} + +.vertical-tabs__panes { + margin-block-start: calc(var(--vertical-tabs-menu-border-width) * -1); + + @media (--lg) { + width: calc(100% - var(--vertical-tabs-menu-width)); + margin-block-start: 0; + } +} + +.vertical-tabs__pane { + @media (--lg) { + min-height: 100%; + } +} + +.vertical-tabs__pane.olivero-details { + margin: 0; + border-radius: 0; + box-shadow: none; +} + +.vertical-tabs__pane > summary { + display: none; +} + +.vertical-tabs__menu-item:nth-child(n+2) { + border-block-start: var(--vertical-tabs-menu-border-width) solid var(--color--gray-80); +} + +.vertical-tabs__menu-item a { + display: block; + padding-block: var(--sp0-5); + padding-inline-start: var(--sp0-75); + padding-inline-end: var(--sp0-75); + text-decoration: none; + background-color: var(--color--gray-80); + + &:focus, + &:hover, + &:active { + background-color: var(--color--gray-95); + } +} + +.vertical-tabs__menu-item.is-selected { + background-color: var(--color--white); + + @media (--lg) { + margin-inline-end: calc(var(--vertical-tabs-menu-border-width) * -1); + padding-inline-end: var(--vertical-tabs-menu-border-width); + } +} + +.vertical-tabs__menu-item.is-selected a { + background-color: transparent; +} + +.vertical-tabs__menu-item-summary { + display: block; + font-size: var(--font-size-s); + line-height: var(--line-height-s); +} diff --git a/core/themes/olivero/css/layout/grid.css b/core/themes/olivero/css/layout/grid.css new file mode 100644 index 0000000000000000000000000000000000000000..687c6c6e3d9f8be69871bf72396722d06d7a37ac --- /dev/null +++ b/core/themes/olivero/css/layout/grid.css @@ -0,0 +1,84 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Grid system. + */ + +.grid-full { + display: -ms-grid; + display: grid; + -ms-grid-rows: 1fr; + grid-template-rows: 1fr; + -ms-grid-columns: (minmax(0, 1fr))[6]; + grid-template-columns: repeat(6, minmax(0, 1fr)); + grid-column-gap: 18px + + /* .grid-full classes nested 3 or more deep go full width. */ +} + +.grid-full .grid-full .grid-full { + display: block; + } + +@media (min-width: 700px) { + +.grid-full { + -ms-grid-columns: (minmax(0, 1fr))[14]; + grid-template-columns: repeat(14, minmax(0, 1fr)); + grid-column-gap: 36px +} + } + +/* + If the .grid-full is nested within the following, apply the appropriate number of columns. + - .layout--content-narrow class. + - Element that's inheriting the layout--content-narrow styles from its parent region. +*/ + +@media (min-width: 700px) { + +.layout--content-narrow .grid-full, +.layout--pass--content-narrow > * .grid-full { + -ms-grid-columns: (minmax(0, 1fr))12]; + grid-template-columns: repeat(12, minmax(0, 1fr)) +} + } + +@media (min-width: 1000px) { + +.layout--content-narrow .grid-full, +.layout--pass--content-narrow > * .grid-full { + -ms-grid-columns: (minmax(0, 1fr))8]; + grid-template-columns: repeat(8, minmax(0, 1fr)) +} + } + +/* + If the .grid-full is nested within the following, apply the appropriate number of columns. + - .layout--content-medium class. + - Element that's inheriting the layout--content-medium styles from its parent region. +*/ + +@media (min-width: 700px) { + +.layout--content-medium .grid-full, +.layout--pass--content-medium > * .grid-full { + -ms-grid-columns: (minmax(0, 1fr))12]; + grid-template-columns: repeat(12, minmax(0, 1fr)) +} + } + +@media (min-width: 1000px) { + +.layout--content-medium .grid-full, +.layout--pass--content-medium > * .grid-full { + -ms-grid-columns: (minmax(0, 1fr))10]; + grid-template-columns: repeat(10, minmax(0, 1fr)) +} + } diff --git a/core/themes/olivero/css/layout/grid.pcss.css b/core/themes/olivero/css/layout/grid.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..e2f38dc6779c4c7048bb3895e8426e233f119bbb --- /dev/null +++ b/core/themes/olivero/css/layout/grid.pcss.css @@ -0,0 +1,55 @@ +/** + * @file + * Grid system. + */ + +@import "../base/variables.pcss.css"; + +.grid-full { + display: grid; + grid-template-rows: 1fr; + grid-template-columns: repeat(var(--grid-col-count), minmax(0, 1fr)); + grid-column-gap: var(--grid-gap); + + /* .grid-full classes nested 3 or more deep go full width. */ + & .grid-full .grid-full { + display: block; + } + + @media (--grid-md) { + grid-template-columns: repeat(var(--grid-col-count--md), minmax(0, 1fr)); + grid-column-gap: var(--grid-gap--md); + } +} + +/* + If the .grid-full is nested within the following, apply the appropriate number of columns. + - .layout--content-narrow class. + - Element that's inheriting the layout--content-narrow styles from its parent region. +*/ +.layout--content-narrow .grid-full, +.layout--pass--content-narrow > * .grid-full { + @media (--grid-md) { + grid-template-columns: repeat(calc(var(--grid-col-count--md) - 2), minmax(0, 1fr)); + } + + @media (--lg) { + grid-template-columns: repeat(calc(var(--grid-col-count--lg) - 6), minmax(0, 1fr)); + } +} + +/* + If the .grid-full is nested within the following, apply the appropriate number of columns. + - .layout--content-medium class. + - Element that's inheriting the layout--content-medium styles from its parent region. +*/ +.layout--content-medium .grid-full, +.layout--pass--content-medium > * .grid-full { + @media (--grid-md) { + grid-template-columns: repeat(calc(var(--grid-col-count--md) - 2), minmax(0, 1fr)); + } + + @media (--lg) { + grid-template-columns: repeat(calc(var(--grid-col-count--md) - 4), minmax(0, 1fr)); + } +} diff --git a/core/themes/olivero/css/layout/layout-builder-fourcol-section.css b/core/themes/olivero/css/layout/layout-builder-fourcol-section.css new file mode 100644 index 0000000000000000000000000000000000000000..d695f0c6de9797d3e556f50a9bdedfd305da669a --- /dev/null +++ b/core/themes/olivero/css/layout/layout-builder-fourcol-section.css @@ -0,0 +1,101 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/* + * @file + * Provides the layout styles for four-column layout section. + */ + +.layout--fourcol-section { + display: flex; + flex-wrap: wrap +} + +.layout--fourcol-section > .layout__region { + flex: 1 0 100%; + margin-bottom: 18px + } + +@media (min-width: 700px) { + +.layout--fourcol-section > .layout__region { + flex-basis: calc(50% - 18px); + flex-grow: 0; + flex-shrink: 0; + margin-bottom: 0 + } + } + +.layout--fourcol-section { + + /* Two column layout. */ +} + +@media (min-width: 700px) { + .layout--fourcol-section > .layout__region--first, + .layout--fourcol-section > .layout__region--second { + margin-bottom: 36px; + } + + [dir="ltr"] .layout--fourcol-section > .layout__region--first,[dir="ltr"] + .layout--fourcol-section > .layout__region--third { + margin-right: 18px + } + + [dir="rtl"] .layout--fourcol-section > .layout__region--first,[dir="rtl"] + .layout--fourcol-section > .layout__region--third { + margin-left: 18px + } + + [dir="ltr"] .layout--fourcol-section > .layout__region--second,[dir="ltr"] + .layout--fourcol-section > .layout__region--fourth { + margin-left: 18px + } + + [dir="rtl"] .layout--fourcol-section > .layout__region--second,[dir="rtl"] + .layout--fourcol-section > .layout__region--fourth { + margin-right: 18px + } + } + +.layout--fourcol-section { + + /* Four column layout. */ +} + +@media (min-width: 1000px) { + .layout--fourcol-section > .layout__region { + flex-basis: calc(25% - 27px); + } + + .layout--fourcol-section > .layout__region--first, + .layout--fourcol-section > .layout__region--second { + margin-bottom: 0; + } + + [dir="ltr"] .layout--fourcol-section > .layout__region--first { + margin-right: 18px + } + + [dir="rtl"] .layout--fourcol-section > .layout__region--first { + margin-left: 18px + } + + .layout--fourcol-section > .layout__region--second, + .layout--fourcol-section > .layout__region--third { + margin-left: 18px; + margin-right: 18px; + } + + [dir="ltr"] .layout--fourcol-section > .layout__region--fourth { + margin-left: 18px + } + + [dir="rtl"] .layout--fourcol-section > .layout__region--fourth { + margin-right: 18px + } + } diff --git a/core/themes/olivero/css/layout/layout-builder-fourcol-section.pcss.css b/core/themes/olivero/css/layout/layout-builder-fourcol-section.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..7f4c6553905075dd689e809c993f98f8ca234f06 --- /dev/null +++ b/core/themes/olivero/css/layout/layout-builder-fourcol-section.pcss.css @@ -0,0 +1,66 @@ +/* + * @file + * Provides the layout styles for four-column layout section. + */ + +@import "../base/variables.pcss.css"; + +.layout--fourcol-section { + display: flex; + flex-wrap: wrap; + + & > .layout__region { + flex: 1 0 100%; + margin-block-end: var(--grid-gap); + + @media (--md) { + flex-basis: calc(50% - (var(--grid-gap--md) * 0.5)); + flex-grow: 0; + flex-shrink: 0; + margin-block-end: 0; + } + } + + /* Two column layout. */ + @media (--md) { + & > .layout__region--first, + & > .layout__region--second { + margin-block-end: var(--grid-gap--md); + } + + & > .layout__region--first, + & > .layout__region--third { + margin-inline-end: calc(var(--grid-gap--md) * 0.5); + } + + & > .layout__region--second, + & > .layout__region--fourth { + margin-inline-start: calc(var(--grid-gap--md) * 0.5); + } + } + + /* Four column layout. */ + @media (--lg) { + & > .layout__region { + flex-basis: calc(25% - (var(--grid-gap--md) * 0.75)); + } + + & > .layout__region--first, + & > .layout__region--second { + margin-block-end: 0; + } + + & > .layout__region--first { + margin-inline-end: calc(var(--grid-gap--md) * 0.5); + } + + & > .layout__region--second, + & > .layout__region--third { + margin-inline: calc(var(--grid-gap--md) * 0.5); + } + + & > .layout__region--fourth { + margin-inline-start: calc(var(--grid-gap--md) * 0.5); + } + } +} diff --git a/core/themes/olivero/css/layout/layout-builder-threecol-section.css b/core/themes/olivero/css/layout/layout-builder-threecol-section.css new file mode 100644 index 0000000000000000000000000000000000000000..863d645f9fa50426b0fe1da0b3ca9f26cf1434b1 --- /dev/null +++ b/core/themes/olivero/css/layout/layout-builder-threecol-section.css @@ -0,0 +1,81 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/* + * @file + * Provides the layout styles for three-column layout section. + */ + +.layout--threecol-section { + display: flex; + flex-wrap: wrap +} + +.layout--threecol-section > .layout__region { + flex: 1 0 100%; + margin-bottom: 18px + } + +@media (min-width: 1000px) { + +.layout--threecol-section > .layout__region { + flex-grow: 0; + flex-shrink: 0; + margin-bottom: 0 + } + } + +@media (min-width: 1000px) { + [dir="ltr"] .layout--threecol-section > .layout__region--first { + margin-right: 18px + } + [dir="rtl"] .layout--threecol-section > .layout__region--first { + margin-left: 18px + } + + .layout--threecol-section > .layout__region--second { + margin-left: 18px; + margin-right: 18px; + } + + [dir="ltr"] .layout--threecol-section > .layout__region--third { + margin-left: 18px + } + + [dir="rtl"] .layout--threecol-section > .layout__region--third { + margin-right: 18px + } + .layout--threecol-section--25-50-25 > .layout__region--first, + .layout--threecol-section--25-50-25 > .layout__region--third { + flex-basis: calc(25% - 18px); + } + + .layout--threecol-section--25-50-25 > .layout__region--second { + flex-basis: calc(50% - 36px); + } + .layout--threecol-section--25-25-50 > .layout__region--first, + .layout--threecol-section--25-25-50 > .layout__region--second { + flex-basis: calc(25% - 18px); + } + + .layout--threecol-section--25-25-50 > .layout__region--third { + flex-basis: calc(50% - 36px); + } + .layout--threecol-section--50-25-25 > .layout__region--first { + flex-basis: calc(50% - 36px); + } + + .layout--threecol-section--50-25-25 > .layout__region--second, + .layout--threecol-section--50-25-25 > .layout__region--third { + flex-basis: calc(25% - 18px); + } + .layout--threecol-section--33-34-33 > .layout__region--first, + .layout--threecol-section--33-34-33 > .layout__region--second, + .layout--threecol-section--33-34-33 > .layout__region--third { + flex-basis: calc(33.33% - 23.976px); + } +} diff --git a/core/themes/olivero/css/layout/layout-builder-threecol-section.pcss.css b/core/themes/olivero/css/layout/layout-builder-threecol-section.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..bf3db60a36661ebcc1f812e25dfe8ea109b63c5f --- /dev/null +++ b/core/themes/olivero/css/layout/layout-builder-threecol-section.pcss.css @@ -0,0 +1,79 @@ +/* + * @file + * Provides the layout styles for three-column layout section. + */ + +@import "../base/variables.pcss.css"; + +.layout--threecol-section { + display: flex; + flex-wrap: wrap; + + & > .layout__region { + flex: 1 0 100%; + margin-block-end: var(--grid-gap); + + @media (--lg) { + flex-grow: 0; + flex-shrink: 0; + margin-block-end: 0; + } + } +} + +@media (--lg) { + .layout--threecol-section { + & > .layout__region--first { + margin-inline-end: calc(var(--grid-gap--md) * 0.5); + } + + & > .layout__region--second { + margin-inline: calc(var(--grid-gap--md) * 0.5); + } + + & > .layout__region--third { + margin-inline-start: calc(var(--grid-gap--md) * 0.5); + } + } + + .layout--threecol-section--25-50-25 { + & > .layout__region--first, + & > .layout__region--third { + flex-basis: calc(25% - (var(--grid-gap--md) * 0.5)); + } + + & > .layout__region--second { + flex-basis: calc(50% - var(--grid-gap--md)); + } + } + + .layout--threecol-section--25-25-50 { + & > .layout__region--first, + & > .layout__region--second { + flex-basis: calc(25% - (var(--grid-gap--md) * 0.5)); + } + + & > .layout__region--third { + flex-basis: calc(50% - var(--grid-gap--md)); + } + } + + .layout--threecol-section--50-25-25 { + & > .layout__region--first { + flex-basis: calc(50% - var(--grid-gap--md)); + } + + & > .layout__region--second, + & > .layout__region--third { + flex-basis: calc(25% - (var(--grid-gap--md) * 0.5)); + } + } + + .layout--threecol-section--33-34-33 { + & > .layout__region--first, + & > .layout__region--second, + & > .layout__region--third { + flex-basis: calc(33.33% - (var(--grid-gap--md) * 0.666)); + } + } +} diff --git a/core/themes/olivero/css/layout/layout-builder-twocol-section.css b/core/themes/olivero/css/layout/layout-builder-twocol-section.css new file mode 100644 index 0000000000000000000000000000000000000000..1fc5c47cd06db8393254ae836dccf26cddf717ab --- /dev/null +++ b/core/themes/olivero/css/layout/layout-builder-twocol-section.css @@ -0,0 +1,138 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/* + * @file + * Provides the layout styles for two-column layout section. + */ + +.layout--twocol-section { + display: flex; + flex-wrap: wrap +} + +.layout--twocol-section > .layout__region { + flex: 1 0 100%; + margin-bottom: 18px + } + +@media (min-width: 700px) { + +.layout--twocol-section > .layout__region { + flex-grow: 0; + flex-shrink: 0; + margin-bottom: 0 + } + } + +@media (min-width: 700px) { + [dir="ltr"] .layout--twocol-section--50-50 > .layout__region--first { + margin-right: 18px) + } + [dir="rtl"] .layout--twocol-section--50-50 > .layout__region--first { + margin-left: 18px) + } + .layout--twocol-section--50-50 > .layout__region--first { + flex-basis: calc(50% - 18px); + } + + [dir="ltr"] .layout--twocol-section--50-50 > .layout__region--second { + margin-left: 18px + } + + [dir="rtl"] .layout--twocol-section--50-50 > .layout__region--second { + margin-right: 18px + } + + .layout--twocol-section--50-50 > .layout__region--second { + flex-basis: calc(50% - 18px); + } + [dir="ltr"] .layout--twocol-section--33-67 > .layout__region--first { + margin-right: 11.9988px) + } + [dir="rtl"] .layout--twocol-section--33-67 > .layout__region--first { + margin-left: 11.9988px) + } + .layout--twocol-section--33-67 > .layout__region--first { + flex-basis: calc(33.33% - 11.9988px); + } + + [dir="ltr"] .layout--twocol-section--33-67 > .layout__region--second { + margin-left: 23.9976px + } + + [dir="rtl"] .layout--twocol-section--33-67 > .layout__region--second { + margin-right: 23.9976px + } + + .layout--twocol-section--33-67 > .layout__region--second { + flex-basis: calc(66.66% - 23.9976px); + } + [dir="ltr"] .layout--twocol-section--67-33 > .layout__region--first { + margin-right: 23.9976px + } + [dir="rtl"] .layout--twocol-section--67-33 > .layout__region--first { + margin-left: 23.9976px + } + .layout--twocol-section--67-33 > .layout__region--first { + flex-basis: calc(66.66% - 23.9976px); + } + + [dir="ltr"] .layout--twocol-section--67-33 > .layout__region--second { + margin-left: 11.9988px + } + + [dir="rtl"] .layout--twocol-section--67-33 > .layout__region--second { + margin-right: 11.9988px + } + + .layout--twocol-section--67-33 > .layout__region--second { + flex-basis: calc(33.33% - 11.9988px); + } + [dir="ltr"] .layout--twocol-section--25-75 > .layout__region--first { + margin-right: 9px + } + [dir="rtl"] .layout--twocol-section--25-75 > .layout__region--first { + margin-left: 9px + } + .layout--twocol-section--25-75 > .layout__region--first { + flex-basis: calc(25% - 9px); + } + + [dir="ltr"] .layout--twocol-section--25-75 > .layout__region--second { + margin-left: 27px + } + + [dir="rtl"] .layout--twocol-section--25-75 > .layout__region--second { + margin-right: 27px + } + + .layout--twocol-section--25-75 > .layout__region--second { + flex-basis: calc(75% - 27px); + } + [dir="ltr"] .layout--twocol-section--75-25 > .layout__region--first { + margin-right: 27px + } + [dir="rtl"] .layout--twocol-section--75-25 > .layout__region--first { + margin-left: 27px + } + .layout--twocol-section--75-25 > .layout__region--first { + flex-basis: calc(75% - 27px); + } + + [dir="ltr"] .layout--twocol-section--75-25 > .layout__region--second { + margin-left: 9px + } + + [dir="rtl"] .layout--twocol-section--75-25 > .layout__region--second { + margin-right: 9px + } + + .layout--twocol-section--75-25 > .layout__region--second { + flex-basis: calc(25% - 9px); + } +} diff --git a/core/themes/olivero/css/layout/layout-builder-twocol-section.pcss.css b/core/themes/olivero/css/layout/layout-builder-twocol-section.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..5dd2d329b697098ca7bcf4a92fb82e08da29cc88 --- /dev/null +++ b/core/themes/olivero/css/layout/layout-builder-twocol-section.pcss.css @@ -0,0 +1,84 @@ +/* + * @file + * Provides the layout styles for two-column layout section. + */ + +@import "../base/variables.pcss.css"; + +.layout--twocol-section { + display: flex; + flex-wrap: wrap; + + & > .layout__region { + flex: 1 0 100%; + margin-block-end: var(--grid-gap); + + @media (--md) { + flex-grow: 0; + flex-shrink: 0; + margin-block-end: 0; + } + } +} + +@media (--md) { + .layout--twocol-section--50-50 { + & > .layout__region--first { + flex-basis: calc(50% - (var(--grid-gap--md) * 0.5)); + margin-inline-end: calc(var(--grid-gap--md) * 0.5)); + } + + & > .layout__region--second { + flex-basis: calc(50% - (var(--grid-gap--md) * 0.5)); + margin-inline-start: calc(var(--grid-gap--md) * 0.5); + } + } + + .layout--twocol-section--33-67 { + & > .layout__region--first { + flex-basis: calc(33.33% - (var(--grid-gap--md) * 0.3333)); + margin-inline-end: calc(var(--grid-gap--md) * 0.3333)); + } + + & > .layout__region--second { + flex-basis: calc(66.66% - (var(--grid-gap--md) * 0.6666)); + margin-inline-start: calc(var(--grid-gap--md) * 0.6666); + } + } + + .layout--twocol-section--67-33 { + & > .layout__region--first { + flex-basis: calc(66.66% - (var(--grid-gap--md) * 0.6666)); + margin-inline-end: calc(var(--grid-gap--md) * 0.6666); + } + + & > .layout__region--second { + flex-basis: calc(33.33% - (var(--grid-gap--md) * 0.3333)); + margin-inline-start: calc(var(--grid-gap--md) * 0.3333); + } + } + + .layout--twocol-section--25-75 { + & > .layout__region--first { + flex-basis: calc(25% - (var(--grid-gap--md) * 0.25)); + margin-inline-end: calc(var(--grid-gap--md) * 0.25); + } + + & > .layout__region--second { + flex-basis: calc(75% - (var(--grid-gap--md) * 0.75)); + margin-inline-start: calc(var(--grid-gap--md) * 0.75); + } + } + + .layout--twocol-section--75-25 { + & > .layout__region--first { + flex-basis: calc(75% - (var(--grid-gap--md) * 0.75)); + margin-inline-end: calc(var(--grid-gap--md) * 0.75); + } + + & > .layout__region--second { + flex-basis: calc(25% - (var(--grid-gap--md) * 0.25)); + margin-inline-start: calc(var(--grid-gap--md) * 0.25); + } + } +} diff --git a/core/themes/olivero/css/layout/layout-content-medium.css b/core/themes/olivero/css/layout/layout-content-medium.css new file mode 100644 index 0000000000000000000000000000000000000000..13f68a6ca5b47b6d3d9c12b37546fa7cfe38aca9 --- /dev/null +++ b/core/themes/olivero/css/layout/layout-content-medium.css @@ -0,0 +1,69 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Grid system definition for the content wide layout. + */ + +.layout--content-medium, +.layout--pass--content-medium > * { + -ms-grid-column: 1; + -ms-grid-column-span: 6; + grid-column: 1 / 7; + width: 100% +} + +@media (min-width: 700px) { + +.layout--content-medium, +.layout--pass--content-medium > * { + -ms-grid-column: 2; + -ms-grid-column-span: 12; + grid-column: 2 / 14 +} + } + +@media (min-width: 1000px) { + +.layout--content-medium, +.layout--pass--content-medium > * { + -ms-grid-column: 3; + -ms-grid-column-span: 10; + grid-column: 3 / 13 +} + } + +/* + If .layout--content-medium is nested within itself, or an element that's inheriting the + layout--content-medium styles from its parent region, go full width within its + parent .grid-full. +*/ + +@media (min-width: 700px) { + +.layout--pass--content-medium > * .layout--content-medium, + .layout--pass--content-medium > * .layout--pass--content-medium > *, + .layout--content-medium .layout--content-medium, + .layout--content-medium .layout--pass--content-medium > * { + -ms-grid-column: 1; + -ms-grid-column-span: 12; + grid-column: 1 / 13 + } + } + +@media (min-width: 1000px) { + +.layout--pass--content-medium > * .layout--content-medium, + .layout--pass--content-medium > * .layout--pass--content-medium > *, + .layout--content-medium .layout--content-medium, + .layout--content-medium .layout--pass--content-medium > * { + -ms-grid-column: 1; + -ms-grid-column-span: 10; + grid-column: 1 / 11 + } + } diff --git a/core/themes/olivero/css/layout/layout-content-medium.pcss.css b/core/themes/olivero/css/layout/layout-content-medium.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..0721c2c1b6b3af07841de04b6a623aa780928f47 --- /dev/null +++ b/core/themes/olivero/css/layout/layout-content-medium.pcss.css @@ -0,0 +1,39 @@ +/** + * @file + * Grid system definition for the content wide layout. + */ + +@import "../base/variables.pcss.css"; + +.layout--content-medium, +.layout--pass--content-medium > * { + grid-column: 1 / 7; + width: 100%; + + @media (--grid-md) { + grid-column: 2 / 14; + } + + @media (--lg) { + grid-column: 3 / 13; + } +} + +/* + If .layout--content-medium is nested within itself, or an element that's inheriting the + layout--content-medium styles from its parent region, go full width within its + parent .grid-full. +*/ +.layout--pass--content-medium > *, +.layout--content-medium { + & .layout--content-medium, + & .layout--pass--content-medium > * { + @media (--grid-md) { + grid-column: 1 / 13; + } + + @media (--lg) { + grid-column: 1 / 11; + } + } +} diff --git a/core/themes/olivero/css/layout/layout-content-narrow.css b/core/themes/olivero/css/layout/layout-content-narrow.css new file mode 100644 index 0000000000000000000000000000000000000000..b96d6e911e09f8d4fafdc68f7e7706442c83cda4 --- /dev/null +++ b/core/themes/olivero/css/layout/layout-content-narrow.css @@ -0,0 +1,262 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Grid system definition for the content narrow layout. + */ + +.layout--content-narrow, +.layout--pass--content-narrow > * { + -ms-grid-column: 1; + -ms-grid-column-span: 6; + grid-column: 1 / 7; + width: 100% +} + +@media (min-width: 700px) { + +.layout--content-narrow, +.layout--pass--content-narrow > * { + -ms-grid-column: 2; + -ms-grid-column-span: 12; + grid-column: 2 / 14 +} + } + +@media (min-width: 1000px) { + +.layout--content-narrow, +.layout--pass--content-narrow > * { + -ms-grid-column: 3; + -ms-grid-column-span: 8; + grid-column: 3 / 11 +} + } + +/* + If .layout--content-narrow is nested within any of the following, allocate the appropriate + amount of columns within its parent .grid-full. + - .layout--content-narrow class. + - Element that's inheriting the layout--content-narrow styles from its parent region. + - .layout--content-medium class. + - Element that's inheriting the layout--content-medium styles from its parent region. +*/ + +@media (min-width: 700px) { + +.layout--content-narrow .layout--content-narrow, + .layout--content-narrow .layout--pass--content-narrow > *, + .layout--pass--content-narrow > * .layout--content-narrow, + .layout--pass--content-narrow > * .layout--pass--content-narrow > *, + .layout--content-medium .layout--content-narrow, + .layout--content-medium .layout--pass--content-narrow > *, + .layout--pass--content-medium > * .layout--content-narrow, + .layout--pass--content-medium > * .layout--pass--content-narrow > * { + -ms-grid-column: 1; + -ms-grid-column-span: 12; + grid-column: 1 / 13 + } + } + +@media (min-width: 1000px) { + +.layout--content-narrow .layout--content-narrow, + .layout--content-narrow .layout--pass--content-narrow > *, + .layout--pass--content-narrow > * .layout--content-narrow, + .layout--pass--content-narrow > * .layout--pass--content-narrow > *, + .layout--content-medium .layout--content-narrow, + .layout--content-medium .layout--pass--content-narrow > *, + .layout--pass--content-medium > * .layout--content-narrow, + .layout--pass--content-medium > * .layout--pass--content-narrow > * { + -ms-grid-column: 1; + -ms-grid-column-span: 8; + grid-column: 1 / 9 + } + } + +/* + Special grid-breaking treatment for text-content elements that + reside in a content-narrow layout. +*/ + +@media (min-width: 700px) { + +[dir="ltr"] .layout--content-narrow.text-content blockquote:before,[dir="ltr"] .layout--content-narrow .text-content blockquote:before,[dir="ltr"] .layout--pass--content-narrow > *.text-content blockquote:before,[dir="ltr"] .layout--pass--content-narrow > * .text-content blockquote:before { + left: calc(-1*((100vw - 504px)/14 + 36px)) + } + +[dir="rtl"] .layout--content-narrow.text-content blockquote:before,[dir="rtl"] .layout--content-narrow .text-content blockquote:before,[dir="rtl"] .layout--pass--content-narrow > *.text-content blockquote:before,[dir="rtl"] .layout--pass--content-narrow > * .text-content blockquote:before { + right: calc(-1*((100vw - 504px)/14 + 36px)) + } + } + +@media (min-width: 1000px) { + +[dir="ltr"] .layout--content-narrow.text-content blockquote:before,[dir="ltr"] .layout--content-narrow .text-content blockquote:before,[dir="ltr"] .layout--pass--content-narrow > *.text-content blockquote:before,[dir="ltr"] .layout--pass--content-narrow > * .text-content blockquote:before { + left: calc(-1*((100vw - 519px)/14 + 36px)) + } + +[dir="rtl"] .layout--content-narrow.text-content blockquote:before,[dir="rtl"] .layout--content-narrow .text-content blockquote:before,[dir="rtl"] .layout--pass--content-narrow > *.text-content blockquote:before,[dir="rtl"] .layout--pass--content-narrow > * .text-content blockquote:before { + right: calc(-1*((100vw - 519px)/14 + 36px)) + } + } + +@media (min-width: 1200px) { + +[dir="ltr"] .layout--content-narrow.text-content blockquote:before,[dir="ltr"] .layout--content-narrow .text-content blockquote:before,[dir="ltr"] .layout--pass--content-narrow > *.text-content blockquote:before,[dir="ltr"] .layout--pass--content-narrow > * .text-content blockquote:before { + left: calc(-1*((100vw - 645px)/14 + 36px)) + } + +[dir="rtl"] .layout--content-narrow.text-content blockquote:before,[dir="rtl"] .layout--content-narrow .text-content blockquote:before,[dir="rtl"] .layout--pass--content-narrow > *.text-content blockquote:before,[dir="rtl"] .layout--pass--content-narrow > * .text-content blockquote:before { + right: calc(-1*((100vw - 645px)/14 + 36px)) + } + } + +@media (min-width: 1440px) { + +[dir="ltr"] .layout--content-narrow.text-content blockquote:before,[dir="ltr"] .layout--content-narrow .text-content blockquote:before,[dir="ltr"] .layout--pass--content-narrow > *.text-content blockquote:before,[dir="ltr"] .layout--pass--content-narrow > * .text-content blockquote:before { + left: -93.85714px + } + +[dir="rtl"] .layout--content-narrow.text-content blockquote:before,[dir="rtl"] .layout--content-narrow .text-content blockquote:before,[dir="rtl"] .layout--pass--content-narrow > *.text-content blockquote:before,[dir="rtl"] .layout--pass--content-narrow > * .text-content blockquote:before { + right: -93.85714px + } + } + +@media (min-width: 700px) { + +[dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"] .layout--content-narrow .text-content blockquote:after,[dir="ltr"] .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"] .layout--pass--content-narrow > * .text-content blockquote:after { + left: calc(-1*((100vw - 504px)/14 + 36px)) + } + +[dir="rtl"] .layout--content-narrow.text-content blockquote:after,[dir="rtl"] .layout--content-narrow .text-content blockquote:after,[dir="rtl"] .layout--pass--content-narrow > *.text-content blockquote:after,[dir="rtl"] .layout--pass--content-narrow > * .text-content blockquote:after { + right: calc(-1*((100vw - 504px)/14 + 36px)) + } + +[dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"] .layout--content-narrow .text-content blockquote:after,[dir="ltr"] .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"] .layout--pass--content-narrow > * .text-content blockquote:after { + margin-left: 2px + } + +[dir="rtl"] .layout--content-narrow.text-content blockquote:after,[dir="rtl"] .layout--content-narrow .text-content blockquote:after,[dir="rtl"] .layout--pass--content-narrow > *.text-content blockquote:after,[dir="rtl"] .layout--pass--content-narrow > * .text-content blockquote:after { + margin-right: 2px + } + +.layout--content-narrow.text-content blockquote:after, .layout--content-narrow .text-content blockquote:after, .layout--pass--content-narrow > *.text-content blockquote:after, .layout--pass--content-narrow > * .text-content blockquote:after { + width: 18px; + height: calc(100% - 45px) + } + } + +@media (min-width: 1000px) { + +[dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"] .layout--content-narrow .text-content blockquote:after,[dir="ltr"] .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"] .layout--pass--content-narrow > * .text-content blockquote:after { + left: calc(-1*((100vw - 519px)/14 + 36px)) + } + +[dir="rtl"] .layout--content-narrow.text-content blockquote:after,[dir="rtl"] .layout--content-narrow .text-content blockquote:after,[dir="rtl"] .layout--pass--content-narrow > *.text-content blockquote:after,[dir="rtl"] .layout--pass--content-narrow > * .text-content blockquote:after { + right: calc(-1*((100vw - 519px)/14 + 36px)) + } + } + +@media (min-width: 1200px) { + +[dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"] .layout--content-narrow .text-content blockquote:after,[dir="ltr"] .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"] .layout--pass--content-narrow > * .text-content blockquote:after { + left: calc(-1*((100vw - 645px)/14 + 36px)) + } + +[dir="rtl"] .layout--content-narrow.text-content blockquote:after,[dir="rtl"] .layout--content-narrow .text-content blockquote:after,[dir="rtl"] .layout--pass--content-narrow > *.text-content blockquote:after,[dir="rtl"] .layout--pass--content-narrow > * .text-content blockquote:after { + right: calc(-1*((100vw - 645px)/14 + 36px)) + } + } + +@media (min-width: 1440px) { + +[dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"] .layout--content-narrow .text-content blockquote:after,[dir="ltr"] .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"] .layout--pass--content-narrow > * .text-content blockquote:after { + left: -93.85714px + } + +[dir="rtl"] .layout--content-narrow.text-content blockquote:after,[dir="rtl"] .layout--content-narrow .text-content blockquote:after,[dir="rtl"] .layout--pass--content-narrow > *.text-content blockquote:after,[dir="rtl"] .layout--pass--content-narrow > * .text-content blockquote:after { + right: -93.85714px + } + } + +@media (min-width: 700px) { + +[dir="ltr"] .layout--content-narrow.text-content blockquote,[dir="ltr"] .layout--content-narrow .text-content blockquote,[dir="ltr"] .layout--pass--content-narrow > *.text-content blockquote,[dir="ltr"] .layout--pass--content-narrow > * .text-content blockquote { + padding-left: 0 + } + +[dir="rtl"] .layout--content-narrow.text-content blockquote,[dir="rtl"] .layout--content-narrow .text-content blockquote,[dir="rtl"] .layout--pass--content-narrow > *.text-content blockquote,[dir="rtl"] .layout--pass--content-narrow > * .text-content blockquote { + padding-right: 0 + } + +.layout--content-narrow.text-content blockquote, .layout--content-narrow .text-content blockquote, .layout--pass--content-narrow > *.text-content blockquote, .layout--pass--content-narrow > * .text-content blockquote { + width: calc(10*(100vw - 504px)/14 + 324px); + margin-top: 54px; + margin-bottom: 54px + } + } + +@media (min-width: 1000px) { + +.layout--content-narrow.text-content blockquote, .layout--content-narrow .text-content blockquote, .layout--pass--content-narrow > *.text-content blockquote, .layout--pass--content-narrow > * .text-content blockquote { + width: calc(10*(100vw - 519px)/14 + 324px) + } + } + +@media (min-width: 1200px) { + +.layout--content-narrow.text-content blockquote, .layout--content-narrow .text-content blockquote, .layout--pass--content-narrow > *.text-content blockquote, .layout--pass--content-narrow > * .text-content blockquote { + width: calc(10*(100vw - 645px)/14 + 324px) + } + } + +@media (min-width: 1440px) { + +.layout--content-narrow.text-content blockquote, .layout--content-narrow .text-content blockquote, .layout--pass--content-narrow > *.text-content blockquote, .layout--pass--content-narrow > * .text-content blockquote { + width: 902.57143px + } + } + +@media (min-width: 700px) { + +.layout--content-narrow.text-content pre, .layout--content-narrow .text-content pre, .layout--pass--content-narrow > *.text-content pre, .layout--pass--content-narrow > * .text-content pre { + width: calc(10*(100vw - 504px)/14 + 324px); + margin-top: 54px; + margin-bottom: 54px + } + } + +@media (min-width: 1000px) { + +[dir="ltr"] .layout--content-narrow.text-content pre,[dir="ltr"] .layout--content-narrow .text-content pre,[dir="ltr"] .layout--pass--content-narrow > *.text-content pre,[dir="ltr"] .layout--pass--content-narrow > * .text-content pre { + margin-left: calc(-1*((100vw - 519px)/14 + 36px)) + } + +[dir="rtl"] .layout--content-narrow.text-content pre,[dir="rtl"] .layout--content-narrow .text-content pre,[dir="rtl"] .layout--pass--content-narrow > *.text-content pre,[dir="rtl"] .layout--pass--content-narrow > * .text-content pre { + margin-right: calc(-1*((100vw - 519px)/14 + 36px)) + } + +.layout--content-narrow.text-content pre, .layout--content-narrow .text-content pre, .layout--pass--content-narrow > *.text-content pre, .layout--pass--content-narrow > * .text-content pre { + width: calc(12*(100vw - 519px)/14 + 396px) + } + } + +@media (min-width: 1200px) { + +.layout--content-narrow.text-content pre, .layout--content-narrow .text-content pre, .layout--pass--content-narrow > *.text-content pre, .layout--pass--content-narrow > * .text-content pre { + width: calc(12*(100vw - 645px)/14 + 396px) + } + } + +@media (min-width: 1440px) { + +.layout--content-narrow.text-content pre, .layout--content-narrow .text-content pre, .layout--pass--content-narrow > *.text-content pre, .layout--pass--content-narrow > * .text-content pre { + width: 1090.28571px + } + } diff --git a/core/themes/olivero/css/layout/layout-content-narrow.pcss.css b/core/themes/olivero/css/layout/layout-content-narrow.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..bda45423f28f7e1f5781ffae4157f9643361e7b4 --- /dev/null +++ b/core/themes/olivero/css/layout/layout-content-narrow.pcss.css @@ -0,0 +1,133 @@ +/** + * @file + * Grid system definition for the content narrow layout. + */ + +@import "../base/variables.pcss.css"; + +.layout--content-narrow, +.layout--pass--content-narrow > * { + grid-column: 1 / 7; + width: 100%; + + @media (--grid-md) { + grid-column: 2 / 14; + } + + @media (--lg) { + grid-column: 3 / 11; + } +} + +/* + If .layout--content-narrow is nested within any of the following, allocate the appropriate + amount of columns within its parent .grid-full. + - .layout--content-narrow class. + - Element that's inheriting the layout--content-narrow styles from its parent region. + - .layout--content-medium class. + - Element that's inheriting the layout--content-medium styles from its parent region. +*/ +.layout--content-narrow, +.layout--pass--content-narrow > *, +.layout--content-medium, +.layout--pass--content-medium > * { + & .layout--content-narrow, + & .layout--pass--content-narrow > * { + @media (--grid-md) { + grid-column: 1 / 13; + } + + @media (--lg) { + grid-column: 1 / 9; + } + } +} + +/* + Special grid-breaking treatment for text-content elements that + reside in a content-narrow layout. +*/ +.layout--content-narrow, +.layout--pass--content-narrow > * { + &.text-content, + & .text-content { + & blockquote { + &:before { + @media (--grid-md) { + inset-inline-start: calc(-1 * (var(--grid-col-width--md) + var(--grid-gap--md))); + } + + @media (--lg) { + inset-inline-start: calc(-1 * (var(--grid-col-width--lg) + var(--grid-gap--lg))); + } + + @media (--nav) { + inset-inline-start: calc(-1 * (var(--grid-col-width--nav) + var(--grid-gap--nav))); + } + + @media (--grid-max) { + inset-inline-start: calc(-1 * (var(--grid-col-width--max) + var(--grid-gap--max))); + } + } + + &:after { + @media (--grid-md) { + inset-inline-start: calc(-1 * (var(--grid-col-width--md) + var(--grid-gap--md))); + width: var(--sp); + height: calc(100% - 45px); + margin-inline-start: 2px; + } + + @media (--lg) { + inset-inline-start: calc(-1 * (var(--grid-col-width--lg) + var(--grid-gap--lg))); + } + + @media (--nav) { + inset-inline-start: calc(-1 * (var(--grid-col-width--nav) + var(--grid-gap--nav))); + } + + @media (--grid-max) { + inset-inline-start: calc(-1 * (var(--grid-col-width--max) + var(--grid-gap--max))); + } + } + + @media (--grid-md) { + width: calc(10 * var(--grid-col-width--md) + 9 * var(--grid-gap--md)); + margin-block: var(--sp3); + padding-inline-start: 0; + } + + @media (--lg) { + width: calc(10 * var(--grid-col-width--lg) + 9 * var(--grid-gap--lg)); + } + + @media (--nav) { + width: calc(10 * var(--grid-col-width--nav) + 9 * var(--grid-gap--nav)); + } + + @media (--grid-max) { + width: calc(10 * var(--grid-col-width--max) + 9 * var(--grid-gap--max)); + } + } + + & pre { + @media (--grid-md) { + width: calc(10 * var(--grid-col-width--md) + 9 * var(--grid-gap--md)); + margin-block: var(--sp3); + } + + @media (--lg) { + width: calc(12 * var(--grid-col-width--lg) + 11 * var(--grid-gap--lg)); + margin-inline-start: calc(-1 * (var(--grid-col-width--lg) + var(--grid-gap--lg))); + } + + @media (--nav) { + width: calc(12 * var(--grid-col-width--nav) + 11 * var(--grid-gap--nav)); + } + + @media (--grid-max) { + width: calc(12 * var(--grid-col-width--max) + 11 * var(--grid-gap--max)); + } + } + } +} diff --git a/core/themes/olivero/css/layout/layout-discovery-section-layout.css b/core/themes/olivero/css/layout/layout-discovery-section-layout.css new file mode 100644 index 0000000000000000000000000000000000000000..ddbcbe3ab31cf4bd0f99b8fe03834ec37f9b397d --- /dev/null +++ b/core/themes/olivero/css/layout/layout-discovery-section-layout.css @@ -0,0 +1,29 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/* + * @file + * Provides default layout styles for all layout sections. + */ + +.layout { + margin-bottom: 18px +} + +@media (min-width: 700px) { + +.layout { + margin-bottom: 36px +} + } + +@media (min-width: 1000px) { + +.layout { + margin-bottom: 54px +} + } diff --git a/core/themes/olivero/css/layout/layout-discovery-section-layout.pcss.css b/core/themes/olivero/css/layout/layout-discovery-section-layout.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..d3217daade9d8edcedad5f00e588c566e50d36f7 --- /dev/null +++ b/core/themes/olivero/css/layout/layout-discovery-section-layout.pcss.css @@ -0,0 +1,18 @@ +/* + * @file + * Provides default layout styles for all layout sections. + */ + +@import "../base/variables.pcss.css"; + +.layout { + margin-block-end: var(--sp); + + @media (--md) { + margin-block-end: var(--sp2); + } + + @media (--lg) { + margin-block-end: var(--sp3); + } +} diff --git a/core/themes/olivero/css/layout/layout-footer.css b/core/themes/olivero/css/layout/layout-footer.css new file mode 100644 index 0000000000000000000000000000000000000000..14b131f625d57dc88dbdd832e329c1d35d0e1c40 --- /dev/null +++ b/core/themes/olivero/css/layout/layout-footer.css @@ -0,0 +1,53 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Grid system definition for the footer top and footer bottom layouts. + */ + +.site-footer__inner { + padding-top: 36px; + padding-bottom: 36px +} + +@media (min-width: 1200px) { + +.site-footer__inner { + padding-top: 72px; + padding-bottom: 234px +} + } + +.region--footer_top__inner > *, .region--footer_bottom__inner > * { + margin-bottom: 36px + } + +@media (min-width: 700px) { + +.region--footer_top__inner > *, .region--footer_bottom__inner > * { + flex: 1; + margin-bottom: 0 + } + + [dir="ltr"] .region--footer_top__inner > *:not(:last-child),[dir="ltr"] .region--footer_bottom__inner > *:not(:last-child) { + margin-right: 36px + } + + [dir="rtl"] .region--footer_top__inner > *:not(:last-child),[dir="rtl"] .region--footer_bottom__inner > *:not(:last-child) { + margin-left: 36px + } + } + +@media (min-width: 700px) { + +.region--footer_top__inner, +.region--footer_bottom__inner { + display: flex; + flex-wrap: wrap +} + } diff --git a/core/themes/olivero/css/layout/layout-footer.pcss.css b/core/themes/olivero/css/layout/layout-footer.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..9a36e16c961c3ebdf348e1fb96124f8acf3fe80b --- /dev/null +++ b/core/themes/olivero/css/layout/layout-footer.pcss.css @@ -0,0 +1,35 @@ +/** + * @file + * Grid system definition for the footer top and footer bottom layouts. + */ + +@import "../base/variables.pcss.css"; + +.site-footer__inner { + padding-block: var(--sp2); + + @media (--nav) { + padding-block: var(--sp4) calc(13 * var(--sp)); + } +} + +.region--footer_top__inner, +.region--footer_bottom__inner { + & > * { + margin-block-end: var(--sp2); + + @media (--md) { + flex: 1; + margin-block-end: 0; + + &:not(:last-child) { + margin-inline-end: var(--sp2); + } + } + } + + @media (--md) { + display: flex; + flex-wrap: wrap; + } +} diff --git a/core/themes/olivero/css/layout/layout-sidebar.css b/core/themes/olivero/css/layout/layout-sidebar.css new file mode 100644 index 0000000000000000000000000000000000000000..a8d2c7e3e8601dbfa4d49b7120ce14f95c024cdc --- /dev/null +++ b/core/themes/olivero/css/layout/layout-sidebar.css @@ -0,0 +1,133 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Special grid system for sidebar. + */ + +.sidebar-grid > .grid-full { + -ms-grid-column: 1; + -ms-grid-column-span: 6; + grid-column: 1 / 7; + align-self: flex-start; + -ms-grid-row-align: start + } + +@media (min-width: 700px) { + +.sidebar-grid > .grid-full { + -ms-grid-column: 1; + -ms-grid-column-span: 14; + grid-column: 1 / 15 + } + } + +@media (min-width: 1000px) { + +.sidebar-grid > .grid-full { + -ms-grid-columns: (minmax(0, 1fr))[10]; + grid-template-columns: repeat(10, minmax(0, 1fr)); + -ms-grid-column: 1; + -ms-grid-column-span: 10; + grid-column: 1 / 11 + } + + .sidebar-grid > .grid-full .layout--content-narrow, + .sidebar-grid > .grid-full .layout--pass--content-narrow > *, + .sidebar-grid > .grid-full .layout--content-medium, + .sidebar-grid > .grid-full .layout--pass--content-medium > * { + -ms-grid-column: 3; + -ms-grid-column-span: 8; + grid-column: 3 / 11 + } + + .sidebar-grid > .grid-full .layout--content-narrow .grid-full, .sidebar-grid > .grid-full .layout--pass--content-narrow > * .grid-full, .sidebar-grid > .grid-full .layout--content-medium .grid-full, .sidebar-grid > .grid-full .layout--pass--content-medium > * .grid-full { + -ms-grid-columns: (minmax(0, 1fr))[8]; + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + + .sidebar-grid > .grid-full .layout--content-narrow .layout--content-narrow, + .sidebar-grid > .grid-full .layout--content-narrow .layout--pass--content-narrow > *, + .sidebar-grid > .grid-full .layout--content-narrow .layout--content-medium, + .sidebar-grid > .grid-full .layout--content-narrow .layout--pass--content-medium > *, + .sidebar-grid > .grid-full .layout--pass--content-narrow > * .layout--content-narrow, + .sidebar-grid > .grid-full .layout--pass--content-narrow > * .layout--pass--content-narrow > *, + .sidebar-grid > .grid-full .layout--pass--content-narrow > * .layout--content-medium, + .sidebar-grid > .grid-full .layout--pass--content-narrow > * .layout--pass--content-medium > *, + .sidebar-grid > .grid-full .layout--content-medium .layout--content-narrow, + .sidebar-grid > .grid-full .layout--content-medium .layout--pass--content-narrow > *, + .sidebar-grid > .grid-full .layout--content-medium .layout--content-medium, + .sidebar-grid > .grid-full .layout--content-medium .layout--pass--content-medium > *, + .sidebar-grid > .grid-full .layout--pass--content-medium > * .layout--content-narrow, + .sidebar-grid > .grid-full .layout--pass--content-medium > * .layout--pass--content-narrow > *, + .sidebar-grid > .grid-full .layout--pass--content-medium > * .layout--content-medium, + .sidebar-grid > .grid-full .layout--pass--content-medium > * .layout--pass--content-medium > * { + -ms-grid-column: 1; + -ms-grid-column-span: 8; + grid-column: 1 / 9; + } + } + +@media (min-width: 700px) { + +.sidebar-grid .layout--content-narrow, + .sidebar-grid .layout--pass--content-narrow > *, + .sidebar-grid .layout--content-medium, + .sidebar-grid .layout--pass--content-medium > * { + -ms-grid-column: 2; + -ms-grid-column-span: 12; + grid-column: 2 / 14 + } + } + +@media (min-width: 1000px) { + +.sidebar-grid .layout--content-narrow, + .sidebar-grid .layout--pass--content-narrow > *, + .sidebar-grid .layout--content-medium, + .sidebar-grid .layout--pass--content-medium > * { + -ms-grid-column: 3; + -ms-grid-column-span: 8; + grid-column: 3 / 11 + } + } + +.region--sidebar { + -ms-grid-row: 2; + -ms-grid-column: 1; + -ms-grid-column-span: 6; + grid-column: 1 / 7 +} + +@media (min-width: 700px) { + +.region--sidebar { + -ms-grid-column: 3; + -ms-grid-column-span: 10; + grid-column: 3 / 13 +} + } + +@media (min-width: 1000px) { + +.region--sidebar { + -ms-grid-row: 1; + -ms-grid-column: 11; + -ms-grid-column-span: 4; + grid-column: 11 / 15 +} + } + +@media (min-width: 1300px) { + +.region--sidebar { + -ms-grid-column: 12; + -ms-grid-column-span: 3; + grid-column: 12 / 15 +} + } diff --git a/core/themes/olivero/css/layout/layout-sidebar.pcss.css b/core/themes/olivero/css/layout/layout-sidebar.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..2745272a96dd0144291d47da340aff5440dd1823 --- /dev/null +++ b/core/themes/olivero/css/layout/layout-sidebar.pcss.css @@ -0,0 +1,72 @@ +/** + * @file + * Special grid system for sidebar. + */ + +@import "../base/variables.pcss.css"; + +.sidebar-grid { + & > .grid-full { + grid-column: 1 / 7; + align-self: flex-start; + -ms-grid-row-align: start; + + @media (--grid-md) { + grid-column: 1 / 15; + } + + @media (--lg) { + grid-template-columns: repeat(10, minmax(0, 1fr)); + grid-column: 1 / 11; + + & .layout--content-narrow, + & .layout--pass--content-narrow > *, + & .layout--content-medium, + & .layout--pass--content-medium > * { + grid-column: 3 / 11; + + & .grid-full { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + + & .layout--content-narrow, + & .layout--pass--content-narrow > *, + & .layout--content-medium, + & .layout--pass--content-medium > * { + grid-column: 1 / 9; + } + } + } + } + + & .layout--content-narrow, + & .layout--pass--content-narrow > *, + & .layout--content-medium, + & .layout--pass--content-medium > * { + @media (--grid-md) { + grid-column: 2 / 14; + } + + @media (--lg) { + grid-column: 3 / 11; + } + } +} + +.region--sidebar { + -ms-grid-row: 2; + grid-column: 1 / 7; + + @media (--grid-md) { + grid-column: 3 / 13; + } + + @media (--lg) { + -ms-grid-row: 1; + grid-column: 11 / 15; + } + + @media (--xl) { + grid-column: 12 / 15; + } +} diff --git a/core/themes/olivero/css/layout/layout-views-grid-horizontal.css b/core/themes/olivero/css/layout/layout-views-grid-horizontal.css new file mode 100644 index 0000000000000000000000000000000000000000..a5059adc40d19890e74b4be09e87e9444eaa5acb --- /dev/null +++ b/core/themes/olivero/css/layout/layout-views-grid-horizontal.css @@ -0,0 +1,573 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Responsive styles for views grid horizontal layout. + */ + +.views-view-grid--horizontal { + display: flex; + flex-wrap: wrap +} + +[dir="ltr"] .views-view-grid--horizontal.cols-1 > * { + margin-right: 0 +} + +[dir="rtl"] .views-view-grid--horizontal.cols-1 > * { + margin-left: 0 +} + +.views-view-grid--horizontal.cols-1 > * { + flex-basis: 100%; + } + +[dir="ltr"] .views-view-grid--horizontal.cols-2 > * { + margin-right: 0 +} + +[dir="rtl"] .views-view-grid--horizontal.cols-2 > * { + margin-left: 0 +} + +.views-view-grid--horizontal.cols-2 > * { + flex-basis: 100% + + /* 2 column layout. */ + } + +@media (min-width: 700px) { + +[dir="ltr"] .views-view-grid--horizontal.cols-2 > * { + margin-right: 18px + } + +[dir="rtl"] .views-view-grid--horizontal.cols-2 > * { + margin-left: 18px + } + +.views-view-grid--horizontal.cols-2 > * { + flex-basis: calc(50% - 9px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-2 > *:nth-child(2n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-2 > *:nth-child(2n) { + margin-left: 0 + } + } + +[dir="ltr"] .views-view-grid--horizontal.cols-3 > * { + margin-right: 0 +} + +[dir="rtl"] .views-view-grid--horizontal.cols-3 > * { + margin-left: 0 +} + +.views-view-grid--horizontal.cols-3 > * { + flex-basis: 100% + + /* 2 column layout. */ + } + +@media (min-width: 700px) { + +[dir="ltr"] .views-view-grid--horizontal.cols-3 > * { + margin-right: 18px + } + +[dir="rtl"] .views-view-grid--horizontal.cols-3 > * { + margin-left: 18px + } + +.views-view-grid--horizontal.cols-3 > * { + flex-basis: calc(50% - 9px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-3 > *:nth-child(2n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-3 > *:nth-child(2n) { + margin-left: 0 + } + } + +.views-view-grid--horizontal.cols-3 > * { + + /* 3 column layout. */ + } + +@media (min-width: 1000px) { + +.views-view-grid--horizontal.cols-3 > * { + flex-basis: calc(33.33333% - 12px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-3 > *:nth-child(2n) { + margin-right: 18px + } + + [dir="rtl"] .views-view-grid--horizontal.cols-3 > *:nth-child(2n) { + margin-left: 18px + } + + [dir="ltr"] .views-view-grid--horizontal.cols-3 > *:nth-child(3n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-3 > *:nth-child(3n) { + margin-left: 0 + } + } + +[dir="ltr"] .views-view-grid--horizontal.cols-4 > * { + margin-right: 0 +} + +[dir="rtl"] .views-view-grid--horizontal.cols-4 > * { + margin-left: 0 +} + +.views-view-grid--horizontal.cols-4 > * { + flex-basis: 100% + + /* 2 column layout. */ + } + +@media (min-width: 700px) { + +[dir="ltr"] .views-view-grid--horizontal.cols-4 > * { + margin-right: 18px + } + +[dir="rtl"] .views-view-grid--horizontal.cols-4 > * { + margin-left: 18px + } + +.views-view-grid--horizontal.cols-4 > * { + flex-basis: calc(50% - 9px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-4 > *:nth-child(2n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-4 > *:nth-child(2n) { + margin-left: 0 + } + } + +.views-view-grid--horizontal.cols-4 > * { + + /* 4 column layout. */ + } + +@media (min-width: 1000px) { + +.views-view-grid--horizontal.cols-4 > * { + flex-basis: calc(25% - 13.5px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-4 > *:nth-child(2n) { + margin-right: 18px + } + + [dir="rtl"] .views-view-grid--horizontal.cols-4 > *:nth-child(2n) { + margin-left: 18px + } + + [dir="ltr"] .views-view-grid--horizontal.cols-4 > *:nth-child(4n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-4 > *:nth-child(4n) { + margin-left: 0 + } + } + +[dir="ltr"] .views-view-grid--horizontal.cols-5 > * { + margin-right: 0 +} + +[dir="rtl"] .views-view-grid--horizontal.cols-5 > * { + margin-left: 0 +} + +.views-view-grid--horizontal.cols-5 > * { + flex-basis: 100% + + /* 2 column layout. */ + } + +@media (min-width: 500px) { + +[dir="ltr"] .views-view-grid--horizontal.cols-5 > * { + margin-right: 18px + } + +[dir="rtl"] .views-view-grid--horizontal.cols-5 > * { + margin-left: 18px + } + +.views-view-grid--horizontal.cols-5 > * { + flex-basis: calc(50% - 9px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-5 > *:nth-child(2n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-5 > *:nth-child(2n) { + margin-left: 0 + } + } + +.views-view-grid--horizontal.cols-5 > * { + + /* 3 column layout. */ + } + +@media (min-width: 700px) { + +.views-view-grid--horizontal.cols-5 > * { + flex-basis: calc(33.33333% - 12px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-5 > *:nth-child(2n) { + margin-right: 18px + } + + [dir="rtl"] .views-view-grid--horizontal.cols-5 > *:nth-child(2n) { + margin-left: 18px + } + + [dir="ltr"] .views-view-grid--horizontal.cols-5 > *:nth-child(3n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-5 > *:nth-child(3n) { + margin-left: 0 + } + } + +.views-view-grid--horizontal.cols-5 > * { + + /* 5 column layout. */ + } + +@media (min-width: 1000px) { + +.views-view-grid--horizontal.cols-5 > * { + flex-basis: calc(20% - 14.4px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-5 > *:nth-child(3n) { + margin-right: 18px + } + + [dir="rtl"] .views-view-grid--horizontal.cols-5 > *:nth-child(3n) { + margin-left: 18px + } + + [dir="ltr"] .views-view-grid--horizontal.cols-5 > *:nth-child(5n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-5 > *:nth-child(5n) { + margin-left: 0 + } + } + +[dir="ltr"] .views-view-grid--horizontal.cols-6 > * { + margin-right: 0 +} + +[dir="rtl"] .views-view-grid--horizontal.cols-6 > * { + margin-left: 0 +} + +.views-view-grid--horizontal.cols-6 > * { + flex-basis: 100% + + /* 2 column layout. */ + } + +@media (min-width: 500px) { + +[dir="ltr"] .views-view-grid--horizontal.cols-6 > * { + margin-right: 18px + } + +[dir="rtl"] .views-view-grid--horizontal.cols-6 > * { + margin-left: 18px + } + +.views-view-grid--horizontal.cols-6 > * { + flex-basis: calc(50% - 9px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-6 > *:nth-child(2n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-6 > *:nth-child(2n) { + margin-left: 0 + } + } + +.views-view-grid--horizontal.cols-6 > * { + + /* 3 column layout. */ + } + +@media (min-width: 700px) { + +.views-view-grid--horizontal.cols-6 > * { + flex-basis: calc(33.33333% - 12px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-6 > *:nth-child(2n) { + margin-right: 18px + } + + [dir="rtl"] .views-view-grid--horizontal.cols-6 > *:nth-child(2n) { + margin-left: 18px + } + + [dir="ltr"] .views-view-grid--horizontal.cols-6 > *:nth-child(3n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-6 > *:nth-child(3n) { + margin-left: 0 + } + } + +.views-view-grid--horizontal.cols-6 > * { + + /* 6 column layout. */ + } + +@media (min-width: 1000px) { + +.views-view-grid--horizontal.cols-6 > * { + flex-basis: calc(16.66667% - 15px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-6 > *:nth-child(3n) { + margin-right: 18px + } + + [dir="rtl"] .views-view-grid--horizontal.cols-6 > *:nth-child(3n) { + margin-left: 18px + } + + [dir="ltr"] .views-view-grid--horizontal.cols-6 > *:nth-child(6n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-6 > *:nth-child(6n) { + margin-left: 0 + } + } + +[dir="ltr"] .views-view-grid--horizontal.cols-7 > * { + margin-right: 0 +} + +[dir="rtl"] .views-view-grid--horizontal.cols-7 > * { + margin-left: 0 +} + +.views-view-grid--horizontal.cols-7 > * { + flex-basis: 100% + + /* 2 column layout. */ + } + +@media (min-width: 500px) { + +[dir="ltr"] .views-view-grid--horizontal.cols-7 > * { + margin-right: 18px + } + +[dir="rtl"] .views-view-grid--horizontal.cols-7 > * { + margin-left: 18px + } + +.views-view-grid--horizontal.cols-7 > * { + flex-basis: calc(50% - 9px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-7 > *:nth-child(2n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-7 > *:nth-child(2n) { + margin-left: 0 + } + } + +.views-view-grid--horizontal.cols-7 > * { + + /* 3 column layout. */ + } + +@media (min-width: 700px) { + +.views-view-grid--horizontal.cols-7 > * { + flex-basis: calc(33.33333% - 12px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-7 > *:nth-child(2n) { + margin-right: 18px + } + + [dir="rtl"] .views-view-grid--horizontal.cols-7 > *:nth-child(2n) { + margin-left: 18px + } + + [dir="ltr"] .views-view-grid--horizontal.cols-7 > *:nth-child(3n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-7 > *:nth-child(3n) { + margin-left: 0 + } + } + +.views-view-grid--horizontal.cols-7 > * { + + /* 7 column layout. */ + } + +@media (min-width: 1000px) { + +.views-view-grid--horizontal.cols-7 > * { + flex-basis: calc(14.28571% - 15.42857px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-7 > *:nth-child(3n) { + margin-right: 18px + } + + [dir="rtl"] .views-view-grid--horizontal.cols-7 > *:nth-child(3n) { + margin-left: 18px + } + + [dir="ltr"] .views-view-grid--horizontal.cols-7 > *:nth-child(7n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-7 > *:nth-child(7n) { + margin-left: 0 + } + } + +[dir="ltr"] .views-view-grid--horizontal.cols-8 > * { + margin-right: 0 +} + +[dir="rtl"] .views-view-grid--horizontal.cols-8 > * { + margin-left: 0 +} + +.views-view-grid--horizontal.cols-8 > * { + flex-basis: 100% + + /* 2 column layout. */ + } + +@media (min-width: 500px) { + +[dir="ltr"] .views-view-grid--horizontal.cols-8 > * { + margin-right: 18px + } + +[dir="rtl"] .views-view-grid--horizontal.cols-8 > * { + margin-left: 18px + } + +.views-view-grid--horizontal.cols-8 > * { + flex-basis: calc(50% - 9px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-8 > *:nth-child(2n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-8 > *:nth-child(2n) { + margin-left: 0 + } + } + +.views-view-grid--horizontal.cols-8 > * { + + /* 4 column layout. */ + } + +@media (min-width: 700px) { + +.views-view-grid--horizontal.cols-8 > * { + flex-basis: calc(25% - 13.5px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-8 > *:nth-child(2n) { + margin-right: 18px + } + + [dir="rtl"] .views-view-grid--horizontal.cols-8 > *:nth-child(2n) { + margin-left: 18px + } + + [dir="ltr"] .views-view-grid--horizontal.cols-8 > *:nth-child(4n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-8 > *:nth-child(4n) { + margin-left: 0 + } + } + +.views-view-grid--horizontal.cols-8 > * { + + /* 8 column layout. */ + } + +@media (min-width: 1000px) { + +.views-view-grid--horizontal.cols-8 > * { + flex-basis: calc(12.5% - 15.75px) + } + + [dir="ltr"] .views-view-grid--horizontal.cols-8 > *:nth-child(4n) { + margin-right: 18px + } + + [dir="rtl"] .views-view-grid--horizontal.cols-8 > *:nth-child(4n) { + margin-left: 18px + } + + [dir="ltr"] .views-view-grid--horizontal.cols-8 > *:nth-child(8n) { + margin-right: 0 + } + + [dir="rtl"] .views-view-grid--horizontal.cols-8 > *:nth-child(8n) { + margin-left: 0 + } + } + +.views-view-grid--horizontal > * { + flex-grow: 0; + flex-shrink: 0; + margin-bottom: 18px; + } diff --git a/core/themes/olivero/css/layout/layout-views-grid-horizontal.pcss.css b/core/themes/olivero/css/layout/layout-views-grid-horizontal.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..64ad3cad26498399c9c35ca33d45b813d5adaf1f --- /dev/null +++ b/core/themes/olivero/css/layout/layout-views-grid-horizontal.pcss.css @@ -0,0 +1,277 @@ +/** + * @file + * Responsive styles for views grid horizontal layout. + */ + +@import "../base/variables.pcss.css"; + +:root { + --views-grid-layout-gap: var(--sp); +} + +.views-view-grid--horizontal { + display: flex; + flex-wrap: wrap; + + &.cols-1 { + & > * { + flex-basis: 100%; + margin-inline-end: 0; + } + } + + &.cols-2 { + & > * { + flex-basis: 100%; + margin-inline-end: 0; + + /* 2 column layout. */ + @media (--md) { + flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap))); + margin-inline-end: var(--views-grid-layout-gap); + + &:nth-child(2n) { + margin-inline-end: 0; + } + } + } + } + + &.cols-3 { + & > * { + flex-basis: 100%; + margin-inline-end: 0; + + /* 2 column layout. */ + @media (--md) { + flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap))); + margin-inline-end: var(--views-grid-layout-gap); + + &:nth-child(2n) { + margin-inline-end: 0; + } + } + + /* 3 column layout. */ + @media (--lg) { + flex-basis: calc(100% / 3 - (((3 - 1) / 3) * var(--views-grid-layout-gap))); + + &:nth-child(2n) { + margin-inline-end: var(--views-grid-layout-gap); + } + + &:nth-child(3n) { + margin-inline-end: 0; + } + } + } + } + + &.cols-4 { + & > * { + flex-basis: 100%; + margin-inline-end: 0; + + /* 2 column layout. */ + @media (--md) { + flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap))); + margin-inline-end: var(--views-grid-layout-gap); + + &:nth-child(2n) { + margin-inline-end: 0; + } + } + + /* 4 column layout. */ + @media (--lg) { + flex-basis: calc(100% / 4 - (((4 - 1) / 4) * var(--views-grid-layout-gap))); + + &:nth-child(2n) { + margin-inline-end: var(--views-grid-layout-gap); + } + + &:nth-child(4n) { + margin-inline-end: 0; + } + } + } + } + + &.cols-5 { + & > * { + flex-basis: 100%; + margin-inline-end: 0; + + /* 2 column layout. */ + @media (--sm) { + flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap))); + margin-inline-end: var(--views-grid-layout-gap); + + &:nth-child(2n) { + margin-inline-end: 0; + } + } + + /* 3 column layout. */ + @media (--md) { + flex-basis: calc(100% / 3 - (((3 - 1) / 3) * var(--views-grid-layout-gap))); + + &:nth-child(2n) { + margin-inline-end: var(--views-grid-layout-gap); + } + + &:nth-child(3n) { + margin-inline-end: 0; + } + } + + /* 5 column layout. */ + @media (--lg) { + flex-basis: calc(100% / 5 - (((5 - 1) / 5) * var(--views-grid-layout-gap))); + + &:nth-child(3n) { + margin-inline-end: var(--views-grid-layout-gap); + } + + &:nth-child(5n) { + margin-inline-end: 0; + } + } + } + } + + &.cols-6 { + & > * { + flex-basis: 100%; + margin-inline-end: 0; + + /* 2 column layout. */ + @media (--sm) { + flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap))); + margin-inline-end: var(--views-grid-layout-gap); + + &:nth-child(2n) { + margin-inline-end: 0; + } + } + + /* 3 column layout. */ + @media (--md) { + flex-basis: calc(100% / 3 - (((3 - 1) / 3) * var(--views-grid-layout-gap))); + + &:nth-child(2n) { + margin-inline-end: var(--views-grid-layout-gap); + } + + &:nth-child(3n) { + margin-inline-end: 0; + } + } + + /* 6 column layout. */ + @media (--lg) { + flex-basis: calc(100% / 6 - (((6 - 1) / 6) * var(--views-grid-layout-gap))); + + &:nth-child(3n) { + margin-inline-end: var(--views-grid-layout-gap); + } + + &:nth-child(6n) { + margin-inline-end: 0; + } + } + } + } + + &.cols-7 { + & > * { + flex-basis: 100%; + margin-inline-end: 0; + + /* 2 column layout. */ + @media (--sm) { + flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap))); + margin-inline-end: var(--views-grid-layout-gap); + + &:nth-child(2n) { + margin-inline-end: 0; + } + } + + /* 3 column layout. */ + @media (--md) { + flex-basis: calc(100% / 3 - (((3 - 1) / 3) * var(--views-grid-layout-gap))); + + &:nth-child(2n) { + margin-inline-end: var(--views-grid-layout-gap); + } + + &:nth-child(3n) { + margin-inline-end: 0; + } + } + + /* 7 column layout. */ + @media (--lg) { + flex-basis: calc(100% / 7 - (((7 - 1) / 7) * var(--views-grid-layout-gap))); + + &:nth-child(3n) { + margin-inline-end: var(--views-grid-layout-gap); + } + + &:nth-child(7n) { + margin-inline-end: 0; + } + } + } + } + + &.cols-8 { + & > * { + flex-basis: 100%; + margin-inline-end: 0; + + /* 2 column layout. */ + @media (--sm) { + flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap))); + margin-inline-end: var(--views-grid-layout-gap); + + &:nth-child(2n) { + margin-inline-end: 0; + } + } + + /* 4 column layout. */ + @media (--md) { + flex-basis: calc(100% / 4 - (((4 - 1) / 4) * var(--views-grid-layout-gap))); + + &:nth-child(2n) { + margin-inline-end: var(--views-grid-layout-gap); + } + + &:nth-child(4n) { + margin-inline-end: 0; + } + } + + /* 8 column layout. */ + @media (--lg) { + flex-basis: calc(100% / 8 - (((8 - 1) / 8) * var(--views-grid-layout-gap))); + + &:nth-child(4n) { + margin-inline-end: var(--views-grid-layout-gap); + } + + &:nth-child(8n) { + margin-inline-end: 0; + } + } + } + } + + & > * { + flex-grow: 0; + flex-shrink: 0; + margin-block-end: var(--views-grid-layout-gap); + } +} diff --git a/core/themes/olivero/css/layout/layout-views-grid-vertical.css b/core/themes/olivero/css/layout/layout-views-grid-vertical.css new file mode 100644 index 0000000000000000000000000000000000000000..4def111f248e1f51eeb5e28025563f5496051488 --- /dev/null +++ b/core/themes/olivero/css/layout/layout-views-grid-vertical.css @@ -0,0 +1,148 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Responsive styles for views grid vertical layout. + */ + +.views-view-grid--vertical { + margin-bottom: -18px; /* Offset the bottom row's padding. */ + grid-column-gap: 18px +} + +@media (min-width: 500px) { + +.views-view-grid--vertical.cols-2 { + column-count: 2 + } + } + +@media (min-width: 500px) { + +.views-view-grid--vertical.cols-3 { + column-count: 2 + } + } + +@media (min-width: 700px) { + +.views-view-grid--vertical.cols-3 { + column-count: 3 + } + } + +@media (min-width: 500px) { + +.views-view-grid--vertical.cols-4 { + column-count: 2 + } + } + +@media (min-width: 700px) { + +.views-view-grid--vertical.cols-4 { + column-count: 3 + } + } + +@media (min-width: 1000px) { + +.views-view-grid--vertical.cols-4 { + column-count: 4 + } + } + +@media (min-width: 500px) { + +.views-view-grid--vertical.cols-5 { + column-count: 2 + } + } + +@media (min-width: 700px) { + +.views-view-grid--vertical.cols-5 { + column-count: 3 + } + } + +@media (min-width: 1000px) { + +.views-view-grid--vertical.cols-5 { + column-count: 5 + } + } + +@media (min-width: 500px) { + +.views-view-grid--vertical.cols-6 { + column-count: 2 + } + } + +@media (min-width: 700px) { + +.views-view-grid--vertical.cols-6 { + column-count: 3 + } + } + +@media (min-width: 1000px) { + +.views-view-grid--vertical.cols-6 { + column-count: 6 + } + } + +@media (min-width: 500px) { + +.views-view-grid--vertical.cols-7 { + column-count: 2 + } + } + +@media (min-width: 700px) { + +.views-view-grid--vertical.cols-7 { + column-count: 3 + } + } + +@media (min-width: 1000px) { + +.views-view-grid--vertical.cols-7 { + column-count: 7 + } + } + +@media (min-width: 500px) { + +.views-view-grid--vertical.cols-8 { + column-count: 2 + } + } + +@media (min-width: 700px) { + +.views-view-grid--vertical.cols-8 { + column-count: 4 + } + } + +@media (min-width: 1000px) { + +.views-view-grid--vertical.cols-8 { + column-count: 8 + } + } + +.views-view-grid--vertical .views-view-grid__item > * { + padding-bottom: 18px; + page-break-inside: avoid; + break-inside: avoid; + } diff --git a/core/themes/olivero/css/layout/layout-views-grid-vertical.pcss.css b/core/themes/olivero/css/layout/layout-views-grid-vertical.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..5d7a922aa4ec6d67f2583c359477b1c0fa8d6e73 --- /dev/null +++ b/core/themes/olivero/css/layout/layout-views-grid-vertical.pcss.css @@ -0,0 +1,108 @@ +/** + * @file + * Responsive styles for views grid vertical layout. + */ + +@import "../base/variables.pcss.css"; + +:root { + --views-grid-layout-gap: var(--sp); +} + +.views-view-grid--vertical { + margin-block-end: calc(-1 * var(--views-grid-layout-gap)); /* Offset the bottom row's padding. */ + column-gap: var(--views-grid-layout-gap); + + &.cols-2 { + @media (--sm) { + column-count: 2; + } + } + + &.cols-3 { + @media (--sm) { + column-count: 2; + } + + @media (--md) { + column-count: 3; + } + } + + &.cols-4 { + @media (--sm) { + column-count: 2; + } + + @media (--md) { + column-count: 3; + } + + @media (--lg) { + column-count: 4; + } + } + + &.cols-5 { + @media (--sm) { + column-count: 2; + } + + @media (--md) { + column-count: 3; + } + + @media (--lg) { + column-count: 5; + } + } + + &.cols-6 { + @media (--sm) { + column-count: 2; + } + + @media (--md) { + column-count: 3; + } + + @media (--lg) { + column-count: 6; + } + } + + &.cols-7 { + @media (--sm) { + column-count: 2; + } + + @media (--md) { + column-count: 3; + } + + @media (--lg) { + column-count: 7; + } + } + + &.cols-8 { + @media (--sm) { + column-count: 2; + } + + @media (--md) { + column-count: 4; + } + + @media (--lg) { + column-count: 8; + } + } + + & .views-view-grid__item { + & > * { + padding-block-end: var(--views-grid-layout-gap); + break-inside: avoid; + } + } +} diff --git a/core/themes/olivero/css/layout/layout.css b/core/themes/olivero/css/layout/layout.css new file mode 100644 index 0000000000000000000000000000000000000000..99926204ee94a017d64c1deeb29db2f4dbe8f446 --- /dev/null +++ b/core/themes/olivero/css/layout/layout.css @@ -0,0 +1,68 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Base Layout. + */ + +.container { + width: 100%; + max-width: 1350px; + padding-left: 18px; + padding-right: 18px +} + +@media (min-width: 1200px) { + +.container { + padding-left: 36px; + padding-right: 36px +} + } + +.page-wrapper { + max-width: 1570px; + background: #fff; +} + +/* Contains the social sidebar, and the primary content area. */ + +@media (min-width: 1200px) { + +.layout-main { + display: flex; + flex-direction: row-reverse; + flex-wrap: wrap +} + } + +@media (min-width: 1200px) { + +[dir="ltr"] .main-content { + margin-right: auto + } + +[dir="rtl"] .main-content { + margin-left: auto + } + +.main-content { + width: calc(100% - 90px) +} + } + +.main-content__container { + padding-top: 54px +} + +@media (min-width: 700px) { + +.main-content__container { + padding-top: 90px +} + } diff --git a/core/themes/olivero/css/layout/layout.pcss.css b/core/themes/olivero/css/layout/layout.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..60e89204ebe63beb9b600907f50a20baee17b3a6 --- /dev/null +++ b/core/themes/olivero/css/layout/layout.pcss.css @@ -0,0 +1,45 @@ +/** + * @file + * Base Layout. + */ + +@import "../base/variables.pcss.css"; + +.container { + width: 100%; + max-width: var(--max-width); + padding-inline: var(--container-padding); + + @media (--nav) { + padding-inline: var(--container-padding-nav); + } +} + +.page-wrapper { + max-width: var(--max-bg-color); + background: var(--color--white); +} + +/* Contains the social sidebar, and the primary content area. */ +.layout-main { + @media (--nav) { + display: flex; + flex-direction: row-reverse; + flex-wrap: wrap; + } +} + +.main-content { + @media (--nav) { + width: calc(100% - var(--content-left)); + margin-inline-end: auto; + } +} + +.main-content__container { + padding-block-start: var(--sp3); + + @media (--md) { + padding-block-start: var(--sp5); + } +} diff --git a/core/themes/olivero/css/layout/region-content-below.css b/core/themes/olivero/css/layout/region-content-below.css new file mode 100644 index 0000000000000000000000000000000000000000..ef3070f332a9876424c4be7999bcc88a84f7c1f8 --- /dev/null +++ b/core/themes/olivero/css/layout/region-content-below.css @@ -0,0 +1,69 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Content below region layout. + */ + +@media (min-width: 700px) { + +.region--content-below { + display: flex; + flex-wrap: wrap +} + + [dir="ltr"] .region--content-below > * { + margin-right: 36px +} + + [dir="rtl"] .region--content-below > * { + margin-left: 36px +} + + .region--content-below > * { + flex-basis: calc(50% - 18px); + flex-grow: 1; + flex-shrink: 0 + } + + [dir="ltr"] .region--content-below > *:nth-child(2n),[dir="ltr"] + .region--content-below > *:last-child { + margin-right: 0 +} + + [dir="rtl"] .region--content-below > *:nth-child(2n),[dir="rtl"] + .region--content-below > *:last-child { + margin-left: 0 +} + } + +@media (min-width: 700px) { + .region--content-below > * { + flex-basis: calc(33.33% - 23.976px) + } + + [dir="ltr"] .region--content-below > *:nth-child(2n),[dir="ltr"] + .region--content-below > *:last-child { + margin-right: 36px +} + + [dir="rtl"] .region--content-below > *:nth-child(2n),[dir="rtl"] + .region--content-below > *:last-child { + margin-left: 36px +} + + [dir="ltr"] .region--content-below > *:nth-child(3n),[dir="ltr"] + .region--content-below > *:last-child { + margin-right: 0 +} + + [dir="rtl"] .region--content-below > *:nth-child(3n),[dir="rtl"] + .region--content-below > *:last-child { + margin-left: 0 +} + } diff --git a/core/themes/olivero/css/layout/region-content-below.pcss.css b/core/themes/olivero/css/layout/region-content-below.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..8942d1c86596bf9598b0fb5821da443c20fda087 --- /dev/null +++ b/core/themes/olivero/css/layout/region-content-below.pcss.css @@ -0,0 +1,41 @@ +/** + * @file + * Content below region layout. + */ + +@import "../base/variables.pcss.css"; + +.region--content-below { + @media (--md) { + display: flex; + flex-wrap: wrap; + + & > * { + flex-basis: calc(50% - (var(--grid-gap--md) / 2)); + flex-grow: 1; + flex-shrink: 0; + margin-inline-end: var(--grid-gap--md); + + &:nth-child(2n), + &:last-child { + margin-inline-end: 0; + } + } + } + + @media (--md) { + & > * { + flex-basis: calc(33.33% - (var(--grid-gap--md) * 0.666)); + + &:nth-child(2n), + &:last-child { + margin-inline-end: var(--grid-gap--md); + } + + &:nth-child(3n), + &:last-child { + margin-inline-end: 0; + } + } + } +} diff --git a/core/themes/olivero/css/layout/region-content.css b/core/themes/olivero/css/layout/region-content.css new file mode 100644 index 0000000000000000000000000000000000000000..2a94893b592f186c09813b34effca81b25efb9dd --- /dev/null +++ b/core/themes/olivero/css/layout/region-content.css @@ -0,0 +1,29 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Content region layout. + */ + +.region--content { + margin-bottom: 18px +} + +@media (min-width: 700px) { + +.region--content { + margin-bottom: 36px +} + } + +@media (min-width: 1000px) { + +.region--content { + margin-bottom: 54px +} + } diff --git a/core/themes/olivero/css/layout/region-content.pcss.css b/core/themes/olivero/css/layout/region-content.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..05ee1ec3c0d1218b5a38521621070cb6dded23ac --- /dev/null +++ b/core/themes/olivero/css/layout/region-content.pcss.css @@ -0,0 +1,18 @@ +/** + * @file + * Content region layout. + */ + +@import "../base/variables.pcss.css"; + +.region--content { + margin-block-end: var(--sp); + + @media (--md) { + margin-block-end: var(--sp2); + } + + @media (--lg) { + margin-block-end: var(--sp3); + } +} diff --git a/core/themes/olivero/css/layout/region-hero.css b/core/themes/olivero/css/layout/region-hero.css new file mode 100644 index 0000000000000000000000000000000000000000..875812816d5e4dcab8b90ded08bf57e36196a7ed --- /dev/null +++ b/core/themes/olivero/css/layout/region-hero.css @@ -0,0 +1,15 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Region default layout. + */ + +.region--hero > *:last-child { + margin-bottom: 0; + } diff --git a/core/themes/olivero/css/layout/region-hero.pcss.css b/core/themes/olivero/css/layout/region-hero.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..d7c10620e76b26a7828f2442c5f138ce4a467f87 --- /dev/null +++ b/core/themes/olivero/css/layout/region-hero.pcss.css @@ -0,0 +1,12 @@ +/** + * @file + * Region default layout. + */ + +@import "../base/variables.pcss.css"; + +.region--hero { + & > *:last-child { + margin-block-end: 0; + } +} diff --git a/core/themes/olivero/css/layout/region.css b/core/themes/olivero/css/layout/region.css new file mode 100644 index 0000000000000000000000000000000000000000..07f01ce4aa50618bc4ae9f140706dd6178b40f05 --- /dev/null +++ b/core/themes/olivero/css/layout/region.css @@ -0,0 +1,29 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Region default layout. + */ + +.region > * { + margin-bottom: 18px +} + +@media (min-width: 700px) { + +.region > * { + margin-bottom: 36px +} + } + +@media (min-width: 1000px) { + +.region > * { + margin-bottom: 54px +} + } diff --git a/core/themes/olivero/css/layout/region.pcss.css b/core/themes/olivero/css/layout/region.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..bc02691f2300a0d016d02d9caeec36902551a8b8 --- /dev/null +++ b/core/themes/olivero/css/layout/region.pcss.css @@ -0,0 +1,18 @@ +/** + * @file + * Region default layout. + */ + +@import "../base/variables.pcss.css"; + +.region > * { + margin-block-end: var(--sp); + + @media (--md) { + margin-block-end: var(--sp2); + } + + @media (--lg) { + margin-block-end: var(--sp3); + } +} diff --git a/core/themes/olivero/css/layout/social-bar.css b/core/themes/olivero/css/layout/social-bar.css new file mode 100644 index 0000000000000000000000000000000000000000..4ab5d642118557e57fec3b14ccc58376a284e212 --- /dev/null +++ b/core/themes/olivero/css/layout/social-bar.css @@ -0,0 +1,170 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Social Bar Region + . + */ + +@media (min-width: 1200px) { + +.social-bar { + flex-shrink: 0; + width: 90px; + background-color: #f7f9fa +} + } + +[dir="ltr"] .social-bar__inner { + padding-left: 18px +} + +[dir="rtl"] .social-bar__inner { + padding-right: 18px +} + +[dir="ltr"] .social-bar__inner { + padding-right: 18px +} + +[dir="rtl"] .social-bar__inner { + padding-left: 18px +} + +.social-bar__inner { + position: relative; + padding-top: 9px; + padding-bottom: 9px +} + +@media (min-width: 1200px) { + +[dir="ltr"] .social-bar__inner { + padding-left: 0 +} + +[dir="rtl"] .social-bar__inner { + padding-right: 0 +} + +[dir="ltr"] .social-bar__inner { + padding-right: 0 +} + +[dir="rtl"] .social-bar__inner { + padding-left: 0 +} + +.social-bar__inner { + position: relative; + width: 90px; + padding-top: 90px; + padding-bottom: 90px +} + + [dir="ltr"] .social-bar__inner.js-fixed { + left: 0 +} + + [dir="rtl"] .social-bar__inner.js-fixed { + right: 0 +} + + .social-bar__inner.js-fixed { + position: fixed; + top: 108px; + height: calc(100vh - 108px); + } + } + +.rotate > * { + margin-bottom: 36px + } + +@media (min-width: 1200px) { + +.rotate > * { + display: flex; + align-items: center; + margin-bottom: 0 + } + + [dir="ltr"] .rotate > *:not(:first-child) { + margin-right: 36px +} + + [dir="rtl"] .rotate > *:not(:first-child) { + margin-left: 36px +} + } + +@media (min-width: 1200px) { + +[dir="ltr"] .rotate .contextual { + left: 100%; + right: auto +} + +[dir="rtl"] .rotate .contextual { + right: 100%; + left: auto +} + +.rotate .contextual { + transform: rotate(90deg); /* LTR */ + transform-origin: top left /* LTR */ + } + + [dir="ltr"] .rotate .contextual .trigger { + float: left +} + + [dir="rtl"] .rotate .contextual .trigger { + float: right +} + } + +@media (min-width: 1200px) { + +[dir="ltr"] .rotate { + left: 50% +} + +[dir="rtl"] .rotate { + right: 50% +} + +.rotate { + position: absolute; + display: flex; + flex-direction: row-reverse; + width: 100vh; + transform: rotate(-90deg) translateX(-100%); /* LTR */ + transform-origin: left /* LTR */ +} + + @supports ((width: -webkit-max-content) or (width: max-content)) { + +.rotate { + width: -webkit-max-content; + width: max-content +} + } + } + +@media (min-width: 1200px) { + [dir="rtl"] .rotate { + transform: rotate(90deg) translateX(100%); + transform-origin: right + } + + [dir="rtl"] .rotate .contextual { + transform: rotate(-90deg); + transform-origin: top right; + } + } diff --git a/core/themes/olivero/css/layout/social-bar.pcss.css b/core/themes/olivero/css/layout/social-bar.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..2cd4b6b9deb4946b6a76e2b36780f014ff1f202a --- /dev/null +++ b/core/themes/olivero/css/layout/social-bar.pcss.css @@ -0,0 +1,93 @@ +/** + * @file + * Social Bar Region + . + */ + +@import "../base/variables.pcss.css"; + +.social-bar { + @media (--nav) { + flex-shrink: 0; + width: var(--content-left); + background-color: var(--color--gray-95); + } +} + +.social-bar__inner { + position: relative; + padding-block: var(--sp0-5); + padding-inline-start: var(--sp); + padding-inline-end: var(--sp); + + @media (--nav) { + position: relative; + width: var(--content-left); + padding-block: calc(5 * var(--sp)); + padding-inline-start: 0; + padding-inline-end: 0; + + &.js-fixed { + position: fixed; + inset-block-start: var(--sp6); + inset-inline-start: 0; + height: calc(100vh - 6 * var(--sp)); + } + } +} + +.rotate { + & > * { + margin-block-end: var(--sp2); + + @media (--nav) { + display: flex; + align-items: center; + margin-block-end: 0; + + &:not(:first-child) { + margin-inline-end: var(--sp2); + } + } + } + + & .contextual { + @media (--nav) { + inset-inline: 100% auto; + transform: rotate(90deg); /* LTR */ + transform-origin: top left; /* LTR */ + + & .trigger { + float: inline-start; + } + } + } + + @media (--nav) { + position: absolute; + inset-inline-start: 50%; + display: flex; + flex-direction: row-reverse; + width: 100vh; + transform: rotate(-90deg) translateX(-100%); /* LTR */ + transform-origin: left; /* LTR */ + + @supports (width: max-content) { + width: max-content; + } + } +} + +[dir="rtl"] { + @media (--nav) { + & .rotate { + transform: rotate(90deg) translateX(100%); + transform-origin: right; + + & .contextual { + transform: rotate(-90deg); + transform-origin: top right; + } + } + } +} diff --git a/core/themes/olivero/css/layout/views.css b/core/themes/olivero/css/layout/views.css new file mode 100644 index 0000000000000000000000000000000000000000..6956eaf05b86db5946818d016d11d45da386cc45 --- /dev/null +++ b/core/themes/olivero/css/layout/views.css @@ -0,0 +1,26 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Styles for views. + */ + +.view > * { + margin-bottom: 36px + } + +.view > *:last-child { + margin-bottom: 0; + } + +@media (min-width: 700px) { + +.view > * { + margin-bottom: 54px + } + } diff --git a/core/themes/olivero/css/layout/views.pcss.css b/core/themes/olivero/css/layout/views.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..2c3fd66936f8b2ffa38771084cfdf8a170235f41 --- /dev/null +++ b/core/themes/olivero/css/layout/views.pcss.css @@ -0,0 +1,20 @@ +/** + * @file + * Styles for views. + */ + +@import "../base/variables.pcss.css"; + +.view { + & > * { + margin-block-end: var(--sp2); + + &:last-child { + margin-block-end: 0; + } + + @media (--md) { + margin-block-end: var(--sp3); + } + } +} diff --git a/core/themes/olivero/css/theme/ckeditor-frame.css b/core/themes/olivero/css/theme/ckeditor-frame.css new file mode 100644 index 0000000000000000000000000000000000000000..49210c21ebb39a5bb3fd94664d9047098aa964b5 --- /dev/null +++ b/core/themes/olivero/css/theme/ckeditor-frame.css @@ -0,0 +1,52 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ +/** + * @file + * CKEditor frame styles. + */ +/** cspell:ignore grouptitle */ +.cke_editable { + margin: 18px; + background-image: none; +} +[dir].cke_panel_container body { + background: #fff; +} +.cke_panel_listItem a > * { + margin-top: 0; + margin-bottom: 0; +} +.cke_panel_grouptitle { + margin: 0; +} +[dir="ltr"] .cke_editable blockquote { + margin-left: 54px; +} +[dir="rtl"] .cke_editable blockquote { + margin-right: 54px; +} +[dir="ltr"] .cke_editable .align-right { + margin-right: 0; +} +[dir="rtl"] .cke_editable .align-right { + margin-left: 0; +} +[dir="ltr"] .cke_editable .align-left { + margin-left: 0; +} +[dir="rtl"] .cke_editable .align-left { + margin-right: 0; +} +.cke_image_resizer_wrapper { + vertical-align: top; +} +figure.cke_widget_element { + margin: 0; +} +figcaption.cke_widget_editable { + background-color: #fff; +} diff --git a/core/themes/olivero/css/theme/ckeditor-frame.pcss.css b/core/themes/olivero/css/theme/ckeditor-frame.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..89f0402ed89fe9c066ada27278111c717c970a76 --- /dev/null +++ b/core/themes/olivero/css/theme/ckeditor-frame.pcss.css @@ -0,0 +1,48 @@ +/** + * @file + * CKEditor frame styles. + */ +/** cspell:ignore grouptitle */ + +@import "../base/variables.pcss.css"; + +.cke_editable { + margin: var(--sp1); + background-image: none; +} + +[dir].cke_panel_container body { + background: var(--color--white); +} + +.cke_panel_listItem a > * { + margin-block: 0; +} + +.cke_panel_grouptitle { + margin: 0; +} + +.cke_editable blockquote { + margin-inline-start: var(--sp3); +} + +.cke_editable .align-right { + margin-inline-end: 0; +} + +.cke_editable .align-left { + margin-inline-start: 0; +} + +.cke_image_resizer_wrapper { + vertical-align: top; +} + +figure.cke_widget_element { + margin: 0; +} + +figcaption.cke_widget_editable { + background-color: var(--color--white); +} diff --git a/core/themes/olivero/css/theme/filter.theme.css b/core/themes/olivero/css/theme/filter.theme.css new file mode 100644 index 0000000000000000000000000000000000000000..7980eae645cc5d95c967dc8b4777eab9f871ae43 --- /dev/null +++ b/core/themes/olivero/css/theme/filter.theme.css @@ -0,0 +1,94 @@ +/* + * DO NOT EDIT THIS FILE. + * See the following change record for more information, + * https://www.drupal.org/node/3084859 + * @preserve + */ + +/** + * @file + * Styling for the Filter module. + */ + +/** + * Filter information under field. + */ + +.text-full > .form-item { + margin-bottom: 0; +} + +.form-element--editor-format { + vertical-align: top; +} + +.filter-wrapper { + margin-top: 18px; + margin-bottom: 9px; +} + +.filter-wrapper .form-item { + margin: 0; +} + +[dir="ltr"] .filter-help { + float: right; +} + +[dir="rtl"] .filter-help { + float: left; +} + +.filter-help { + padding-top: 9px; + padding-bottom: 9px; + font-size: 12px; +} + +/** + * Compose tips. + * + * Wraps filter tips on page '/filter/tips[/name]'. + */ + +.compose-tips__item { + margin-top: 27px; + margin-bottom: 27px; +} + +/** + * Filter guidelines. + */ + +.filter-guidelines__item { + margin-top: 18px; + font-size: 14px; + line-height: 18px; +} + +.filter-guidelines p { + margin-top: 4.5px; + margin-bottom: 0; +} + +/** + * Filter tips. + * + * Long is used on '/filter/tips[/name]', short is used for the filter tips + * below a text format input. + */ + +.filter-tips--long { + margin-bottom: 27px; +} + +.filter-tips__item, +.filter-tips--long p { + margin-top: 13.5px; + margin-bottom: 13.5px; +} + +.filter-tips__item--short { + margin-top: 4.5px; + margin-bottom: 0; +} diff --git a/core/themes/olivero/css/theme/filter.theme.pcss.css b/core/themes/olivero/css/theme/filter.theme.pcss.css new file mode 100644 index 0000000000000000000000000000000000000000..1b5281270eab11140f4c0b554b794f3c9775ae53 --- /dev/null +++ b/core/themes/olivero/css/theme/filter.theme.pcss.css @@ -0,0 +1,68 @@ +/** + * @file + * Styling for the Filter module. + */ + +@import "../base/variables.pcss.css"; + +/** + * Filter information under field. + */ +.text-full > .form-item { + margin-block-end: 0; +} +.form-element--editor-format { + vertical-align: top; +} + +.filter-wrapper { + margin-block: var(--sp1) var(--sp0-5); +} + +.filter-wrapper .form-item { + margin: 0; +} + +.filter-help { + float: inline-end; + padding-block: var(--sp0-5); + font-size: var(--font-size-xxs); +} + +/** + * Compose tips. + * + * Wraps filter tips on page '/filter/tips[/name]'. + */ +.compose-tips__item { + margin-block: var(--sp1-5); +} + +/** + * Filter guidelines. + */ +.filter-guidelines__item { + margin-block-start: var(--sp1); + font-size: var(--font-size-s); + line-height: var(--line-height-s); +} +.filter-guidelines p { + margin-block: var(--sp0-25) 0; +} + +/** + * Filter tips. + * + * Long is used on '/filter/tips[/name]', short is used for the filter tips + * below a text format input. + */ +.filter-tips--long { + margin-block-end: var(--sp1-5); +} +.filter-tips__item, +.filter-tips--long p { + margin-block: var(--sp0-75); +} +.filter-tips__item--short { + margin-block: var(--sp0-25) 0; +} diff --git a/core/themes/olivero/favicon.ico b/core/themes/olivero/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..63c573b9adf1336978fdd09cd958cd914bee6abb --- /dev/null +++ b/core/themes/olivero/favicon.ico @@ -0,0 +1,3 @@ +���� ��� �¨�����(��� ���@���� ������������������������������������������������������������Þœ��Þœ�Þœ�(Þœ�nÞœ�®Þœ�ÕÞœ�äÞœ�äÞœ�ÕÞœ�®Þœ�nÞœ�)Þœ�Þœ������������������������������������������������������������������Þœ��×£��Þœ�$Þœ�‹Þœ�ÝÞœ�ûÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ûÞœ�ÞÞœ�‹Þœ�%Ù¡��Þœ������������������������������������������������������Þœ��Þœ�Þœ�UÞœ�ÖÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�üÞœ�ûÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�×Þœ�WÞœ�Þœ����������������������������������������������Þœ��ß�Þœ�nÞœ�ïÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�íÞœ�˜Þœ�WÞœ�OÞœ�Þœ�ÙÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ðÞœ�oÞœ�Þœ��������������������������������������Ýœ��àœ��Þœ�_Þœ�ñÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�èÞœ�SÞœ�Þœ��Ýœ��ßž��Þœ�-Þœ�ÇÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�òÞœ�bÝœ��Þœ������������������������������Ý›��Þœ��Þœ�3Þœ�ßÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�€Þ˜��Þœ����������ß��Þœ��Þœ�GÞœ�ñÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�àÞœ�4Þœ��Ýœ��������������������������Þœ��Þœ�Þœ�¤Þœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�íÞœ�3Þœ������������������Þœ��Þœ�Þœ�ÆÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�¥Þœ�Þœ��������������������������Þœ��Þœ�<Þœ�îÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�áÞ›�!Þ›������������������ßœ��ßœ�Þœ�µÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ïÞœ�=Þœ����������������������Þ��Þ›��Þœ�ˆÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ñÞœ�<Þœ������������������Þœ��Þœ�Þœ�ÐÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ŠÞœ��Þœ������������������Þœ��Þœ�Þœ�ÁÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÂÞœ�ÝÞœ�ÿÞœ�ÿÞœ�–Þœ�Þœ����������Þœ��Þœ��Þœ�aÞœ�ùÞœ�ÿÞœ�ùÞœ�ÀÞœ�òÞœ�ÿÞœ�ÿÞœ�ÄÞœ� Þœ������������������Þœ��Þœ� Þœ�àÞœ�ÿÞœ�ÿÞœ�ãÞœ�,Þœ�eÞœ�øÞœ�ÿÞœ�óÞœ�dÞœ�Þœ��ß��Þœ��Þœ�7Þœ�ÜÞœ�ÿÞœ�ÿÞœ�¯Þœ�!Þœ�ÇÞœ�ÿÞœ�ÿÞœ�âÞœ�"Þœ������������������Þœ��Þœ�/Þœ�ìÞœ�ÿÞœ�ÿÞœ�¸Þœ�Þœ� +Þœ�˜Þœ�þÞœ�ÿÞœ�êÞœ�VÞœ��Þœ��Þœ�%Þœ�ÇÞœ�ÿÞœ�ÿÞœ�ÒÞœ�+Þœ�Þœ�ªÞœ�ÿÞœ�ÿÞœ�íÞœ�1Þœ������������������Þœ��Þœ�2Þœ�îÞœ�ÿÞœ�ÿÞœ�©ß›�Þœ��Þœ�Þœ�³Þœ�ÿÞœ�ÿÞœ�åÞœ�JÞœ�Þœ�¶Þœ�ÿÞœ�ÿÞœ�ßÞœ�BÞœ��Þœ�Þœ�¤Þœ�ÿÞœ�ÿÞœ�ðÞœ�5Þœ������������������Þœ��Þœ�*Þœ�èÞœ�ÿÞœ�ÿÞœ�¸Þœ�Þœ��Þœ��Þœ�#Þœ�ÂÞœ�ÿÞœ�ÿÞœ�ÜÞœ�¾Þœ�ýÞœ�ÿÞœ�äÞœ�LÞž��Þœ��Þœ�Þœ�´Þœ�ÿÞœ�ÿÞœ�éÞœ�+Þœ������������������Þœ��Þœ�Þœ�ÕÞœ�ÿÞœ�ÿÞœ�ØÞœ�Þœ��Þœ��Þœ��Þœ�/Þœ�ÐÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�çÞœ�TÿÁ��Þœ��Þœ��Þœ�Þœ�ØÞœ�ÿÞœ�ÿÞœ�ÖÞœ�Þœ������������������Þœ��Þœ�Þœ�ªÞœ�ÿÞœ�ÿÞœ�øÞœ�SÞœ��Þœ��Ý›��Þœ��Þœ�SÞœ�÷Þœ�ÿÞœ�ÿÞœ�ëÞœ�YÞœ�Þœ��Þœ��Þœ��Þœ�UÞœ�ùÞœ�ÿÞœ�ÿÞœ�Þœ�Þœ������������������â¤��Þœ��Þœ�fÞœ�ýÞœ�ÿÞœ�ÿÞœ�´Þœ� Þœ��Þœ��Þœ�Þœ� Þœ�þÞœ�ÿÞœ�îÞœ�_Þœ�Þœ������Þœ��Þœ� Þœ�µÞœ�ÿÞœ�ÿÞœ�þÞœ�hÞœ��Þ˜����������������������Þœ��Þœ� Þœ�ØÞœ�ÿÞœ�ÿÞœ�øÞœ�fÞœ��Þœ�Þœ�žÞœ�ýÞœ�ÿÞœ�îÞœ�eÞœ�Þœ������Þœ��Þ›��Þœ�fÞœ�øÞœ�ÿÞœ�ÿÞœ�ØÞœ�!Þœ��������������������������Þ›��Þž��Þœ�yÞœ�þÞœ�ÿÞœ�ÿÞœ�ÞÞœ�IÞœ�šÞœ�ýÞœ�ÿÞœ�ïÞœ�eÞ›�Þœ������Þœ��Þœ��Þœ�8Þœ�ßÞœ�ÿÞœ�ÿÞœ�þÞœ�zÞž��Þ›������������������������������Þœ��Þœ�Þœ�ÂÞœ�ÿÞœ�ÿÞœ�ÿÞœ�íÞœ�úÞœ�ÿÞœ�ñÞœ�fÞœ�Þœ������ß��Þœ��Þœ�$Þœ�ÆÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÄÞœ�Þœ����������������������������������Ý›��Þœ��Þœ�BÞœ�çÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�Þœ�Þœ������Þ›��Þœ��Þœ�Þœ�¶Þœ�ÿÞœ�ÿÞœ�ÿÞœ�èÞœ�DÞœ��Þœ��������������������������������������Þœ��ß›�Þœ�hÞœ�ôÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�iÞœ��Þœ��Þ›��Þœ��Þœ�Þœ�²Þœ�ÿÞœ�ÿÞœ�ÿÞœ�õÞœ�kß›�Þœ����������������������������������������������Þœ��Þœ�Þœ�Þœ�ùÞœ�ÿÞœ�ÿÞœ�ÿÞœ�¾Þœ�Þœ��Þœ��Þœ�Þœ�¯Þœ�ÿÞœ�ÿÞœ�ÿÞœ�úÞœ�ƒÞœ�Þœ������������������������������������������������������Þœ��Þœ� +Þœ�ŒÞœ�ûÞœ�ÿÞœ�ÿÞœ�ÿÞœ�±Þœ�Þœ�Þœ�«Þœ�ÿÞœ�ÿÞœ�ÿÞœ�ûÞœ�ŽÞœ�Þœ��������������������������������������������������������������Þœ��Þœ� Þœ�’Þœ�ûÞœ�ÿÞœ�ÿÞœ�þÞœ�®Þœ�Þœ�þÞœ�ÿÞœ�ÿÞœ�ûÞœ�’Þœ�Þœ����������������������������������������������������������������������Þœ��Þœ�Þœ�’Þœ�ûÞœ�ÿÞœ�ÿÞœ�þÞœ�þÞœ�ÿÞœ�ÿÞœ�ûÞœ�’Þœ�Þœ������������������������������������������������������������������������������Þœ��Þœ�Þœ�“Þœ�üÞœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�üÞœ�•Þœ�Þœ��������������������������������������������������������������������������������������Þœ��Þœ�Þœ�¡Þœ�ÿÞœ�ÿÞœ�ÿÞœ�ÿÞœ�¢Þœ�Þœ����������������������������������������������������������������������������������������������Þœ��Þœ�Þœ�½Þœ�ÿÞœ�ÿÞœ�¾Þœ�Þœ��������������������������������������������������������������������������������������������������Û™��Þœ��Þœ�9Þœ�çÞœ�èÞœ�;Þœ��Û™������������������������������������������������������������������������������������������������������Þœ��ßœ�Þœ�ŠÞœ�‹ß›�Þœ��������������������������������������������������������������������������������������������������������������Þœ��Þœ�+Þœ�,Þœ����������������������������������������������������������ÿÀÿÿ€ÿþ��ü��?üÀ?øàðàðàðààààÀà€à@à`àpàxð0ð <ø�xø�ðüà?üÀ?þ€ÿ��ÿÿ€ÿÿÀÿÿàÿÿðÿÿøÿÿü?ÿÿü?ÿÿþÿ \ No newline at end of file diff --git a/core/themes/olivero/fonts/lora/lora-v14-latin-700.woff b/core/themes/olivero/fonts/lora/lora-v14-latin-700.woff new file mode 100644 index 0000000000000000000000000000000000000000..dfe18e8b8e25db3e80327a0c8d38c4a83a22e97e --- /dev/null +++ b/core/themes/olivero/fonts/lora/lora-v14-latin-700.woff @@ -0,0 +1,120 @@ +wOFF�����w¬�����ó$����������������������GDEF��€���Z���‚ÎåGPOS��Ü��÷��1_‰<èGSUB��Ô���Ó��€$Þ +OS/2��¨���O���`f›\cmap��ø��ž��l<… cvt ��˜���5���Šbfpgm��Ð��F�� mAŽ|gasp�����������glyf�� ��Q¨��¢Úù‹8head��oÈ���6���6 8.Æhhea��p�������$×{hmtx��p ����˜áÇ÷loca��r<��Î��΃ZÜmaxp��t��� ��� z)name��t,����ü+EDpost��u4��Ö��¹mË…prep��w���Ÿ���±Zï,¬xÚ ÄÀùb%JD’�" ‘ (A²ìõ÷F¡L ”&Ê8ÊÄ,Ï-òÒ*¯mò6ÊÎ>óÉ9_\ó-ÊÝ#?½òÛ'ýò?J«S=Š² ´��xÚŒ–pÙ†ÿ™YV233£af–Âœc–ŽÌ ;3ƒâ3É™Ipd¶Ìb´ÖìÎW¯¦T–y»úÍL÷ßýw÷{³»ò$%ôýLÁç¾ðµïéÂ_÷É~Z×>ýËŸÕŠH’™Cµß#í÷ò<õHö³ºðÄUÂ.çÅ#¬)DtþýYtÖ¯¹øë4Fok½ªtػһÙëá=éõ÷Æx³½ +¯Ê÷ý®þí~ÿþ«þoýÿC·ŸÒƒëƒ[ƒ»ƒOß ž•G–þ ¤Á¢¡ÊÕ0 ×5R£4V“4UÓ”§×4S³4Gs•¯ªHÅ*Ñ|-Ðb•+¦?Z«FZ›òl¡fZµfÛ͵Z¥é*²&<Uxöã©ÇÓªù–ԮĪKˆØ¢ D5žýŠ`)ÇR‹e'1õJ¡ÆøT¸ZñîÀ[wÞF•“ц§ÂE¯ýUΟ®Á<åª3Õ~D©°6h¢%A¾Mi¶.×?¬†Úš¨ Áåxur`‰»ë¢°®mXëÀõ·V²—i¨µÀp¯Ò°,Ö�xRÝ Û„w½†ð<ÔV+×þa ‡[©¦ÚEAî¹d Þåx[Ã÷'M³\p-D‹l˜ŠÑÀyB+¸±`Æq7 ͳ‰Ê·!*ÁOûS4¬²‚š•K\Þñ7•ÀZÜxmÞj¼PC-6ê5®sÐ@ôN³Þuø!q[¨»–ØjÑ!±{ ±Û‰ÝEl±Û””µÚªD=ˆõ êtœhØûö.£ôòûö.óђК{ŠÕsXV|‘S¦¡êF t'™öV7ÿ½Xöb©Ç²RÃðxÜí¢®êêæ’K¾šˆ—×ÝûâØeØÇs|¬ÍvÛ2«#Ç©¾‰6Ó]ÏF[ó9’9‡¢•[³ÕpNïŸéüu\7ð4þ3<uÑÈöïyz]oèÝß¾Ò4á"¾&!¾CGÁ¿A†|ÄW¨‰¨ TŒDÈ@äBõGR5�‰h × $¦ÁHå"Q CxÆ)ᘎÉWÒYï iŽ/áøRŸçøRŸ'øð®F:i ’Nô•0J7êNî·§kX“îø ×Ècõü!£Ëæôõ¡Ë°×“R©@¶ÿ´“¯±Vk:ÅÚêÖúŽžð¤¢i–ŸD¥ð}h‹¬VQ«µÍ0‰:åÖSóžãrÊÜZg'8}¤?³—†j¸¢òxJ0Ç@qÅx¶Hˆë‚5ÁÓUHL÷"¾îÓC {ªØÏë‹ôòe}õ§ú ë+HÂídÔídÔÍ5pg&ÅíaT쫯֮)‰‹K®öV²i¶ãýº÷ïUd 2Ì[ì•y ÞQÿzäÞòÿyŠ¿Ð_íoi—šà[Áü 2¨Œø‘_DžŒŒ‹äE +"ÿŽ,Œ&¢_‹¾-Šþ7šŒÝËŠ=Ÿ›€Îˆý=¶!¶-®øíñć:ù}|D|F|\|Jånn¼$þa¼J¦)ÝêÌl.ÒÅÌåj]«ët½nà¤Ý¤›u‹nÕmºƒSw—îÖ½Ìë~= ™ÚÃÊP7¹Ï1·/éú¦2õ=¢Gõ˜×“zJ/([9áÞÎ ÌoJû/5¿Óá›úNÇwÕäR•QÕµœ›‡FhÛ¡G,©¬EÙœšNÃH4ÏJ5Óöh¶Uh.8O ¢Xmƒº°æëKV§ï©+µùÊÂóþl;J†#Tv%µ¥’åÍð·õ +Æ_†- ú îµCz +dœ§íºÊÚôMÛ¥ïQA¦Vú”ûÕ¹J]ñäi/±cÏ@ᆯšª·ÁY©#È‘GÅ䧗L4ò´CßdâcÉ– ¬tËv„4¹Œ#t1fÑwsøK—tÈõ [àÞº +ô&Ô²dÈ27¡ÔLyìèL}šÎ?¯¹º§ÙwïÈS0GÀ¯£óÝô÷“준þPù1*?®ËðÕ'l…>ikõ¦ã&Îô3™hµþÚ–1…R¦°‘)|Ä*4‚#™þ~Ù¦cϳÑÔquÜCj5\k¨¶-ãù +X¦ÐSÐ¥°„ml{B¶n°]Û%°-‡í}ضÀ¶I9Ü3ó¶-°M‚ívØî…í"Ø6ÂV«R´Œç¦X%¦Hö²5“m±²aá&Ú"aÿ£ŽÅÔ±‚:¶SCš2©#ýµ-¢’kš<%äY žV ^èœ<wú˜ì‹\_B_F]…ÌeªíÔ4t¦mcÇ–j.{U@U…ä*âZ̵Œ™øº— >Ed¢CΑìÓd÷oq 9vc-9vÓ,bô-jü¤øäù^e°§œo]€o¦ºk6³õ°%¹ØŠÏ§rKal òz*¯§ÚªmT×b®]ÏÑsY{Ïô{Ú^º–<ãÍ`ß{¸7»òt%5_OÍ7k®®™”O_ó]Oéz¶è<›,9Ž–¸Í®Ö<Û¾åšËµ%V×è^ªî_%|{àÛ ß&NÁ~½À)ÌVPyšÉñVøͳÄåXC7NÙFd·¢Þ9!ªš(Þ]"*ˆxt+5¹dmøosÈ•…ßùp�™$o‚Š8‰XÛ°î"ÏHòL„™“ËÎ?ªîä{›*‡ û 6€Ø¤(wçî?àjÁT‚ÙA®À&+‚FÑGSÐT4a3å¹N›§‡u…28;=ÐGlYšÈÒS½«©ÄuÊ�Õ¥be2¡,]r7ÈÝ k”rÈ›@^£(SߤKõˆ;ßK@/½Êåm�::æö&“™e¹“V¥l” +\¥ËĪ.î~—[ÿêÖɬß'GÀ¶1…J&æÞiõÖµŠa]‡µB=ÜüšÉÙ¢ÅaÊI¼ÕáoRR²-¢žõDÕõÓGaUú”N]¦OItÑÍêlm´ÿÚAk³ÃHSÝdG¬ mµùöû'Ö«5þíY‘ýÛÖÙ¿¬ÊÖ€çŸö`wñÔLW©Vj•v”Êtî:ÅrÐ{ôÿVÍ*8’äù ––¤e>ß²™™™™éÅðnf|5¼˜™ÙÇÌ·ÌL'-‡„«!i&âsÆ=£›“f}ÿ•]ꮩ.ȪÊLõuÀu'ŽvµYÀ�9]‹ž›6£ìR ¬T="!Ko€c&Oﶡ–k”˜v9È=³eJÃïržJ&xnŠãºzÉXsñÞHNµ9‚bÈ]óÑ¢Ü4ÎÊRL©e^R׌_–1M˜iND¿œŠµJwªíë8%É$cŒ›‘"K†C•!á¼JÁ.2ž’@ŸäUzãïª9*ƒNTcžcdgP#é#Fbh‡—6C-”-Í?#“®h•~¯š³3ý·\&zWû͘P>€Aîr#Ñ5y«D²Çb d5!ûÚØÍ$·Y¢±þ'ÿá?fœg̸G8î)Ã)3[E‘Qà z~ÒåY®˜£ÖêãG±ü8Óa®ÚH’aHÙ¨F;æ?éL9fa¼ÛÔÿ” ©r™ø¸ÿ,O¡Ò«#õrš¥øÊuüª†šV»‡Ô‹·€ûf¬ÿ¬êž$I–«¡’–êù!Ϙ¹³:©:b³«z +Úy†µúƸÕÖ#t›fÊfBµ×Þ)šdX[òʇý‡"9Éb¬¾Fò±÷Ÿ’Ì᜛rØlµöÕÂÃhÿå¨m±f²øN´ÚÓV1Loøu—7W÷7¬ñC!& Ø8ǵ0ãË`¯Q'Ù°§°þý‰s,¶þ—Ú +F´ÿ„9åv•c´Bÿ®¨ Bõúç!è‹N«ÜD?wò }ÜÏ ã<Š¯<[©Uwš½åA/×NÑÖÙ/Ÿñ;»m‰Æg=iþ©ü³4)¸Éº8 Ü®ÐmSñ•f¹éàˆç®yšº7Á½ÒÉl…æŽY�ý’}2esQ[¦ÉDºVN…f•):'To ‡VWÍçGˆ²¶–s”¸@F}Èé}çÌºì© öÖ Î[[M c9LžIíûi +d(„9,hÿ»\oÿÚ©r¶"šå‰|ìij®°ŸÕýŽ<Óü¥ÆóîèÌ.éú$#X5yöÔx~—²&YÂOçv¹•Ãôq!F\Þb[l5û“nNrAóX'¸ÉVñã§ë½ô’ŒNÊgð C<À)8A?M¹ßÌÖ[qÙïw³ßê÷Újn¹2Ì"û¿§bþ§IZ‡4v1}'IB»Ï“‰ùîë,p¿Æä=ÛóKMQbç‚Àe¶Ðbl´&±Nkq¶Æée»l¹_£Èaà +[é=]ì\¢7žpYÉgéMϪbåù’ÏžT0”~yE[×Èmtzd²ŠM¶TÜ$)ª?ϵE1.¶ç:—ˆK«xƒÆa‰÷¸E=ŒEDW‰«5J{º½Ìvz\e³ç·ÙV´ÌÄ:[¯Ùx‘=Ï)øõF—]ÎÛöèÞO==Å:DA£þ<ŸN%ý~Žx¡=#Êm±._jó[~ê#i-¿oíòy]”ÈsŽ^nc„4)ÊLò�{g ö“f˜ƒdÉÚÿ†™bŒwX�²Ïe)Ê>ëŽÎñ&FIØu‚"“•ÿ¹ˆ¬éØ +%©»ÅÈû*Q LÙê„Vöù×gD'깇"§èe7ýŒs*¼y‚dìä/Z=x¶ä›í“®mo÷™uØG=¢ÑéqøùÝWÛz\6èÉ3<6²˜ kVÿžísýnJd]^È´"ü5Á¥èdÚ*›Pzé÷^Šlñ´Ýï®,]¿Úµ«fÚš˜Òï;ýÚªÿ‘,gš2E[<cž²ÕiÒY#ãŒidZTZó$ß<Ì“¨ÄÁ§þ¸]Ìù]iF8ÆDäÄÀ`È•U.¢$O÷(tò“§{<j1ÈÿqŸ[ÈtN3Î}<Ê({`¯¼¾ýLèÄ™ŽÞTšË›TöxÈ'<¢ŸÿÊLèÝ·ð�EŽÐã\a˜ýž¦ÕŸ§)âÌ\±Ún‘Ls2æw_à¢îõóˆ|ΛÈ[›4»›CL‹+÷Möu!^3eg°T9͈®ãÚùzãcÊQŽº¼B?{¤/çÈ…~ÝPôhîPôI£r,ÂrŒczS†£K33êo‹Û[OˆŽ°žÒô±[ž®t}syŽAö’"O‚ÑêõT?è•åjÜK¡ÏÚc}$e œå*/ü¸æ_~0EH1Ïä¢üdyL3À£1Ïÿ¤â!½±”"SYJ‘E:ê¼ne‚qµ³n0UÇ@?Wè¥Äe›ò焸v2&-O³»Ï¾¥=·x=á×U³–=$p$hDŽbí¸"g5³ñ7m±YÀé¸^q´òM5#§‚1L™QÉ9t•&ef[¿”d¯¿Ô¾"{ý5ö}³ {Ý–z>¢,àkŒS–jËãYì’²—ÅmvYò+l±¸ÄkhŽ,÷ U”·à²’•wVJ®ŠžT0”^£–GT{Vˆßh›ª¸Ù¶ŠO“m‡=W_%Ú:»Ñ)¨DœëõƒÙ.ÿ]‹ÛäÕã§G#óTÛᜉgÕŒã>C¹g;·G¹e.›f1Kd‰¢WkE‡ìøölÍ’'ÏÕƒç„\—<‹ùßéãg¿¿ð‚-Q/›É‘"A®¤eƒá4cd]f§»¾hW§H±GdÍïVœ© +g.hà*÷òcäOsÀ*ÀIÅl&Éê$»ü„ÖÑ*åÏéþÖì¸6l!ŘsÜ*ÀÝïN}ÍÔt ÆN7½ôQ$cËÅèÃèõ3@ŽqkˆE�ÆöýÒ§8Z«£}\#;=Ƹ?D‘Ã471hW1°Oó˜À»ñ=²€zé—ռضTƬ‚]·TÏ¿J2Ô|ÙS·FndbH1âNÛÆce¨#ÁU[®¸ôw8Ä^Ø£™4vÛ.ö’ñ´/Úï/ØáM6H-¨ˆ®jìÛõüÓdH†–ª?Ø $È’"]UÛuƒ<bÇAŽ„=—Qý²3Õg•tlmXÃM‡"嚣T°kqP#½™sÒ‡«Ú·¨¯©çþÖ<ÿÅ69Z¶@²-Ê-2?‘‚WÖéi»§ùb¯Eg™Òýõ%—•lT$¦±’Uwš$[£'¥;ômlD½±Mgi‹«âz[#®•½G«½7c\¦ss“¸¦ŠË½ŽU~ƒÿ®Óº=†ä£°Dܬ3Ø¿:Õ—‚Ú9oÑ>Ïà2#œò7Ù +OMŒ†¨`°‰¸dõáÕA‹fZ'qì<=5=êvŸ†ðÞ)}sÚâ2‚fÓ4¾«"˥͹ȹÜÓJ[çr½s¾ÌFÏûíÒ£i.Ÿî\¤3z¾Ë\¨¯ì%ÎF·‰^ã#ñZçb{§³ÙÞeï÷wÀÙá‡ùÛGýŸv.¶Ï:[íóöEÿ—œíÿŸ@é�xÚmCBP†¿‹lL2gq–I¶mÛœæ6[AL§žßäà' +ewL}cs7ñS›Ëd.Ol¯RˆøúBÖíSŠª«éN'þÓÊe0LÈìæÄžsyan‚J?smj™z@¡dj™` ¥•K>4¡dcPÄ£Èÿß`Ä7 ;ñMtcîe¦aE0Š\ÉJGH$W9åZö9 +ËóÖœpææMüÝâgMh¤£ÿ|,rÄ!ñŒ"Cåt0Âý7´Z0ñ�xÚc`aÊ`ÚÃÀÊÀÀÔÅÁÀÀà ¡ãŒu€€ƒØ€sd+Ã%QæwÿÞ10°lcTS``œ’cü´H)00�Îl�xÚm˃’\�À<#¶îNlÛ¶mÛvŠ±mÛ¶m§/¾#¶Ê0"H-"„Ô¢á6(!•ÿ)¬¬IÞ„Š†š‡O…¯„Ÿ„Ÿ©ƒŒAÖ ä +Šå‚Áˆ`W\,–2–æÍðŸ@å¬{§š}Q©‚ôAæªXPö² àM¯ã^g|ý÷뿈_AüàøAñãGÄ׊OÿÿË=/v¿Ø&Š G„æ„f|ø¯¶ØJKwÝM«l¶Åg,´Ý2k,°Ú%\´Ü ÿø×ÿ’K#tÒË"«lq²Ë¯ B ++¢¨RJ+£¬ò6šk“GÖJTA 5ÕVW#5ÑTkm´ÕN{õÔ[}õ7ÀPÃ7Âhë=°Á‡-qÔIÇœòÐm îg§«v¸+É}—M5Í×Ü2ÏKSŒ·Ë,3Ͷ¢~ó—ßýéoÿI-…”RÉ,ƒŒ2I&&·rÊ+—sò(©˜âJ(§€~ª¨¨’j*«ªºZª§¾Zi®…–êè «N:뮋óºb A©—Qòéa›öÙoï[l|x��xÚc LB77¦=Œ_þ32ùÿ‰åÿ‡‘å˜>#ÉþF—gÔÅ*/�>R%…���xÚ¬V×–ÛFªmï-1]@µÙˆCºÛÛ)Jqßz'•\É~Ožòá×€J˧ ¥í%ÅÛ0ƒ2À½ÀÌ +…a ^ý!Fw^aeïËŸ˜¸ £„X¨Æö‹~ÑjÉCÓ²Ph¾¬w„!üÈsÐPÑ +Ú€mciþË΂1ä�+Aha±ªw¿ +-i™I¸½MªMm.òjQkHs︤êî�°ýyÒ©!P5I8¸F¤¶ òꯞEf¤µ6©Zô[(vC¯ØÙ¢½ù +oóêö«øqÑb?ÊâPëv¬Ñ°µ–(¶Ã÷Z;XT@™KÕ˜°”ýíËÒÊô9¹F–”$$ÐNˇ°…1šyÍüKQÐÂbÍ"£ $” }P®-;a´mÆ»:”ÚÒ€›{!ÙL"£—ßÁ²Â>ßîˆBÎm…¶Ò“€Bz1? Ñ¢*°\s°O—:LXJâøÜŒ4»Dõ¬Ô~Õé~àÕ¬£n ¨ÓÝÌO1lIzÂAÈÚ]†…É]@0qóˆ%꧌ëyŠ¡KÂñE Šº(hXe€:CƒESZºf98¢ÒB!Àv\wpT‘#�Žø/9œÒÓ8Ê»]ÚÒÎÁ18žQÄ@‹òâ˜AŽiŽ«WûaZj×õ=y/tpB½Ú _íåJÓ"ýT¦ŸT©÷Ât|ÜG#öpÌæ)§iòÒþ3JИ•@8¶Ã”É#´^’�§Y’Âzk3·SýfMHšT“´§[uIS!¦$±å£XõjJ‰T‚ýÇ¥K‡$ œ¥ÿurÒcÂó’(¬Øø“mÞ%š¦ Û”íàŒJ –³Ä3Ë9•Y~¢ÒËOUZfyC¥–¦JûXÞTi?Ë[*`ù¹’=Þ±Ã\4¾áâ`í„qöÈø}n´OçŒ?äÆÛJàˆýðÝ!|·©. |,-ÂÇò.ác) Ë{„e•ð±œ'|,?#|,K¥`5SGQÚÉ|I[Ÿ[IϪ«Ð±Ñ¡[x_4á’.ÊxQòz¥‡ÉèôZ›<ix¿––™ | 3”sz®ôy¤àiVùc%º>ÁùœhØTËÅz1û‹à¯úº\L3Œõ ñÍKêGáÇ‹>UîܪƒÏ®sEÃo‘ûsj‘˜‚M’oÉ‹$iʦŒ!<$>Ð ×á™aÌLËŠÊ r+Ué'sK…‡¾ý>q%ÀjBg.v7?KÒëyFü–lî„? æÏ…ùâ íñûÚïC"³Ù ›íŸ½¦=ù? ‚µ%ý¸Mæ‚›´Žø};K ôó²A=–”¡A8IdY"¸(‰ä,’,I,ÓÀ•ÏJ'2ªjVýÝÎ_Ðã\ÚÁå@Úò|—¹J4™°?³7d““rW{¶LÎ4ŠýÐ…Ui™¤é)éУV`¥J»'?&äM¼hڻݒ<òk'*ñ{íŠø³ÄYȽ¯+ .³ØÀ ?Ü6wu«ÚM]cÚvpã”u×Ü>eݼ0öªˆ-…‹öU =…KvBµñŒ¨K]©¡.ºá3äl>çsæc”^TÂ*¸r±{~&úC!ÿe¤›kŠ¿c«’žªóbénJÅ¢Ýc¥A»%Û’]^äâi +š +ÅL~í;‚oø”‹Oè–q‰þgLOáSZ¿TøœÄ+f1 º¡‘ȸÇÖkůþî±.Œ¢(Š® ÔG£4æ¡03;Ìè0ƒ«15èw÷Ë<»sÅ(Ž%熄q!�I%p`RÀÍ°0MfhÀ, ˜KªÎ¹~i^ +¼’j`s‹’Í-Ñh™Îk…Îk•Îkm +ëB�6Ø&Ø°E3"lÓ€°KrlÏ H{RàµÏö¼$›;¤Ð×1× ×©ÎqGvÏü¨Ô#ž{ÅNºõit™”ƒ´¹‚Ö\ÓhdÍîÌÖzËÈ–¸ƒ¶Ä=´<¯õ¤Á´àZð¤¶+[ß3#Ë_ å¯Ðò7-™ïЂhÁ§Úîl}_Œ,ÿ†–ÿ@˵düAþ¡…¤Ú‡õ?Ú¶Rs®µNæëŸèöËÓ¶����ÿÿ�xÚ¤ZXÙ>çÚX€"hˆ''”¥©“¥º,Ë×ÖXÖÚå¹³ÏÝÝÝÝÝÝÝÝÝÝJß™›I‚´ýöÕfææ??å?zï�¢�øü+PÐ ¯”�B,1¤ˆtF^(΃|˜fŒiLk ø¹éo‹âé@2ÅíÀòûñ¯k¾ÃxÃÚs� Ï$Ÿ‡Hc¶òÆÈñ«Jfuì@àdª«òÆhÝŠ+%Ë~À©$xdnÎ5é1P:¿ÓÁ óRš¡—K–n Ê: Q +Qa„4£6PLJx6‚4‰„$Äã„/Tá¥Ü$P2+A”¬‡ztNþ*¢Ñh:š„‚ù×oêÝýűB¡Ø–o‡#…|(>161žÍjšš|Lb6“M +McÉ`ËG~Mo%ñŽµ¿ŒXÁoùiHe¿ŽwIÁü¡ÁÑþ>9÷ƒàŽ .ç‚ÝE6¬oÐãØþ€“ÅÃ;çÏ»¢¯ƒP�Øß„_|JµÏ>£>£ðm2 µõ·yëß AØÈEá›ø–ºõß{ëß!P·þnoý»6?óÿ w÷ÂvØC>ö¶((NUÞhH7ìŠé +˜Z˜+vPø¹¾@?4¿I†*"™Bd�HÉæAˆ\¥ÙgP�k¡-+cÙµ$Õþ:*ÍlZ½³\v€p¹ÄêÿKÖ.ɦ�e¸T0*î¿%%0v Œ’ñŠK`4¶`ÃPt’œHîyÅòèøæÜ>Ã2`å’¾F3z_Ī&ÜÑKãš)´¥üëXK'/BH€!aË[K:°ŒÕ°œ¶“8699¹grÏöba|th[_.›I'ãÉ@kp,Hú[õžþìX¡ˆÚD<’ÏhZ3 …ò™l>$Ÿäc(¨åÇ +y->±›LL$ZˆÐBE™ëãE!UêOá¾ +þU”¥Ú»[î2Ÿ;rñNöðü¡²8÷Ç®n´|C2Û~ü‡øvÑ1|¢\ÈãÇ%êÃS“ÑʤŸ8ø—\ÆB|i!q òÝ2Z©lÐüe…Á+ˇ3ï@a€Ü‡|�Ú!£ðÓ·ùQc8åú:®# ˜¶Äkál§\BµZ&œjÉ "_ñð ááÊ׃ + ¨�×J4Z¡žQi´\òì$¨˜© :m{)’Mwvõ§G³£±hGª3ÕË‚ÛÞ_”¢Æ‹ÚDº¥ôaû’Œc¡01žI&„…Z‹êÁvÖ˜Ô›U0tïG9tÍu¸míµèÛ1±³?ÔѲ»wÇeSÅb'sÆ;¶'è4Á«fFOµaËuåÅ›ðÑxdgaÌL§Ÿ³ö~¤.+MâK + @Hžÿ#yù,ÄàU®Š–‰zº #²1:O¨žæ\@(…ED€þ +âÝ2Ær>À« +Ç$( ÝÅ1݈+Å€ Ë€@’%`œ³Ù*ˆñcRÃf�ˆAo&f4½£Ÿe2ã…B~,ÉÛáœÉÚjÃá¼øˆI=÷ÊÏ¿=7ŸE6½·ëqûæ‡ÆÊ¥ûm)?Ú¿ð’ë_w[gdÛ¯^NŽ=¸råÃ+åÉÓ�Rk¿sÔ˜ÄN÷›í#þáÔBÁ‡465iu9Ÿ‘M?“Jù¤ñh„«�Î�c¸HQªA©w˹X!D5ŒkVðà‹)©û7²Q SoRh@#0ŠlPNèp!ø¬ÂsqÌŽb+•¶ÕïOërTàÕÕ²Å!raO$µ¼ó±m¡!¦O¶XfDïë<z=ÇŸ{ßÕY»¨t=®<?4ºXÞsÿ¾‘½Ï?j´¡•kŽMß2ü]-×Õä3DË][¯ÒL½×fæz-/Œl¢¿”Ò€8Uä«ä}Ðiø‰ÛÖ:êZ &8UÕIzØš±MaÊ)) ã6Œð³õ`bÏV …%]ŧ˜ 終²mNõ”ÏzhN§‚ßÓÁÔD&#Kˆ®wÖ•±°£p2žªú&ÊÉ-Ϋ²‘|ÀëfN¼á¡k?Æû,Þÿ.‰Æ›û›‚u¯þìU/¹åÈÔ½>óɉüš\DDp't©ëû!ƒðŠ·2§\yQCЖ8â|oéŠi]góÀX†UEÉáÈÉJÍ�8ß_TP À åË5Ș>ëèLJSjmoolÈÚ¤4m¥÷8ÚÈÖ—ŸØJŸP>dWÕB8ïjtúôz•î{{ª÷9Ïa-1_s¸LÌtæ…xìÉű•ºJ*5uD*õ”øø*äiJ+tbðœ"·áš;<k¨áQ“~ÓÑÌ@{Œ‚úq{¹fÂê%Û«!qÒïíâÝ&˜`ì‚,*Íöo`14ÓX5)²-GA¨ÒÊ—Æ¥F)³©tàÂ$*79Ó˜"òf±R«=~¥“jø +û}z—œ¾T‚n>gíåçþèåèÖ“•Ü׸‘çìƒü�@á[„@mý3Þú·É¾ºõ·yëß &lÆóM|T#{@Fv;œÐz[Aé.ûjàÔœ¯C*^ë•¡ÕoE0çÁ43f5J‡½(½43 —s"æº0ÖG€ÇPÚµÑxSÏ+LcV¦3ÛùåÈòœn]ÔéI»ÞäC<¾ìx¼/æc±Éµ¯læî×7ùK.kâcíU@HÉ©íGrNÅŠ›¥Í&RèE.º‘q:¥ºVuUS«ÎÖææ\ë<èÌ`º¡!g‚/o9ã‹&Æ€QmŒ“ ε•\"òaqk‚³c½yiûz˺QR Yò˜ä‡l¶jËŒcNÊÀ(Œ¤L:!çJé½s¥gœiÆÞ%¥cC¶OíáÇž3›ŸuâØónï?“±ç̦Ž”¯:{}ìT'ëŒt¢ÙÑÝÜLŽô/¼hIM/'®D9¾<ì¥ÍMóÛ§ËèK§_hZ-Í*Çþ&sl©“oì%`É$sntœRgSi``³–4N©!íøö™:0曤D£ºï7tC‡ÛHßh„º®L<§ŒjH "]YoêlÁ63,M¬·‘(ŽÎ©j--ÀÐg=CÝpò(<:2,w°2—‘@ -hgSs]6)ÑãÞ}ÀM$gãʳªW^°MÝ°XÿÚäuíwÎ]]j9·Ï}Ò¾ˆº]{·úbúTû^Õ<<!ý†÷¸5¯¥;ì+󼡵*Å€Ïç^Õ¿€q+u(`¬ +RŠ'ÁOaÁ–y´”Y‡"PÕ—³Y…dÜÕDl…7'zÚmk£6ž n?ÀN?hwû +Ú™F �Ïʾ" ~è +Ñ$8AF¡ÑÞ=Ö?sRU«Û&y«‹fŸUÉŽ+uPàÜCª¹ÒE2J[Q ñð¥þÍ §d 8 +>«à\8 +šŽ‚mmšÞÕß&÷:ùˆ†›)ù‘'t½¬íy±µŸ®S”ÎÏ>ýéÃçvnª,PÀëèÛÀ‚!¸¶ —f_kùž$5) +Àe Õw•®èȘ1õÙÞg—;laº^5P +«2º‰Ç³ÒØ,p]ð%ЙLte¥Ò<êó ôË<Çz;Ú}_¸Õ˜)Ÿêo•ÕWí“cu÷t3Ñg²¹®îL®ë©¹>çú»õâ÷ôö Æzª×sé"<¾.¿‰i�@ÀóÄWÊìÂÞf"N¹3N€ BC`"òkÔ©†rD¯"€«[ÂÔnQ¤B«à].åÖã(°#Wp¶ŠE~|N˜D¡' [Ê>1 +9#aÍÞ›7È)’WœÊ%cqD“µéJÄ›oòïJŽdºü!C;†u…ò;{êTŸÚ0è†hs;2ì•c¦œ5,Zä00™ëš¥»qù×µ6`Á²RÆ•t¼Ú‡”µêY±-å•Ym-W ÀÚ•xÀYÏÜ¨Ê e~x(›i´æÖÕ´±uå‹r€BîGCò_-ŽDÂgÀÈÊ¿ÉìðôH03þÖ_I_“éXžš|¶µ7|}sÌ—Ú´X?ó!Wø‘ œ&Hnç³1’|ÒÍ´ŒbOæŒgØ(å±ié±ø„;õõG@«ëÚ—Xh¨Åi cÈÙ*�ÚX ¬Î¡”öõ6ªm0) m&€Ümk‚Í(&ŽºE¹5c‹,‹òƾ–/ÔvTª<|gyŸ8÷›ÝÀSÇÿÃçÿN_,uÙ‰qÕÅ&{(:`§‹yÏj]L ¥lž#crk¢ +€ó¦N3XÝ:'$€@Vê±Ö#•Æ™‘:J`¥aÛ3REƒU0\Ю4왘h>ebV¢£KÒ€ Ìzv€î“玱QÙ;á@ ˞юÖp(¤9›´ç¯¶‚t€óÞ0_(Ú¯¥/"máê|6L¤Mb ¥¯)òx¿Ý&!•ï=£%¡!km¶žó‹®¨[¨ï_ûuWu;?7{’«{OWoÛÝM§•èôÚ²æx_>O93ŸU€¯f®Íœû. Œœÿ;ù±ôj-×aV;!@:>õžê<Ú©qb‹(‰£ÞŸ1p5l�‚‡ó¼™ÚŽOt=£W}¹ 4F©¶¢L8J‹…-,Jƒ`ÐQ¨ÄrtÜŽ•UÕ‡>Y’"¶ÿ"†ã¿l²æ;j'O¥ëΓFIQ$,æxŠ°ËŸ‡cÛº‘VìÇ|‚¬?Ÿöòï°ÃÚj1‡»öv¨Ås_‘箜÷¬qõžõÁ�@œ7ß—{׈ÂIW„¢6{¶�¸Èq@êYêR?°,×é¬÷1Åcrç÷ø£þžHHÒ5g„ªmâÔ‘ßnâø©ciÔž{øøVîö¼Ëå¿•“©®+_‘Ê>è¿åås¯<sæ•s³¯:{ääêþÇ¿òŠ8øØEù¸ÿcg>Hª“•ÝP[ÿŒ·þmrGÝúÛ¼õoƒ°Ï7ñgöU®?O®·Aâ° –K]&ÈeãMŒ’0¤tÊg8A<ä +® ÆE@éÕYÕ‹¹z©O]¹|‰Db[¢/µ-ËõH¤XU*RŒhJDVêZ‘°}Xš¥áü™ËÊe©×©ý;ŽíÚ¹SÞMïÜ£Ã%©](ô£©èû'G¯Ï¿pNJ]»qâYǤŒ‘[ȲRűåþ3§°ÿìåk'cž +ïöTø®Hÿ=ýŽŒ‹ØNFJæ0:„ºAÔKøã@(§d¡ëÆ +¸oÝ–}èØ·Õƒ!œMS®ÒÒDtÝ\°ë {o]ÓŒ–5àœ&†$ïI——¯ÚÄÂÐWÿfUŽÝYf¨ñbS“µ¨hÕQêôV´àó)V¸tRU†*[’rK›’oA¹ €‚o(Aº¼ž]Ú›VÓ,è`Zºy£G×dsOX£ƒƒ�ƒÛ‹c#0�ýöykõ¸5ã¯?º‰\ì¸UdÅ@5ÄózîÌô‹ï³¾NžÆåíÓ¸{ªó×.úðüÁ²XÛ¾{æ¦þ±ãûNÜo¥yþ×_ûº3þMÎawwÊsØVr¼•âò€çÑÏõFê,ù�tBþ¨~)‰†¨lCÞóºPLG (htIl~¨ ¢ £Ž�8Sð-O�…&pe½±‰Mi¸±ì™mvÞàïêêJw¥RàD<ì7ô®õo¸…¦eÕ ²®8ï`¼×SÝxVéWgã,6±ö ¼²òðd,ÔÞð6ûÌí“7•)âU“òœ8úÔèè¨Òøfg—–ÃV¥q ½Óýi/ïAxç€n0}ÙD8|¹n¦ ̓¦e´Ú>¤°Ò`&Í@ÏJíCÔp»•±š‰×Ùþ¯¶¯�pì8ꇂ³4bÑh¤Ñhx´Ã´à¥Yð‚×^0îš‚ö:‰¦Ÿfpè¹ÄKv8ñ1SüCöÏ—g5¿»Ÿž¤‘gmÙ«©_U^UuuuÑkÔ{Ð:.žty£…*+œŽH$’dRvçp¢×%Íd¥žäœ32gD’GÃö6"¾ Lb¼ñÜc+!쬻wî™ðX·˜Ðj0„ƒc'' Á)›°ó–Wö—iðœëñ´ z<Cp«FŠ4dAP˜Óýj¤V„ZEY报�<$ª"H2Jgée�A†³ ˆ¢°Á¬Ü| +º¹ €ÄP¢œË2#ÃIgª©ú.M—øVK@qWرËCUŒŒtäþj®ß—)Œgo{Ã"³Þ²^=³<8™*f#þ|óoö¦®95·/™=²ø׊Çï(e¯ï1ÍZXxñù ºù´sÝfƒ&—ï k?Ãhl‘+h@J†$÷ÇwÈí3r\—ËÓj—\ +@<¦ ‹’êZ ‹‡ìˆbnMÀŽ.—@Õ â…6*¨ê“a6†ZH@@EÒCæd§G +-Š°ÑFQ“ÇájÊîòØC1]{ó^8WôÓp&Ñ¥#Ò=Jâů=¼áH÷ Æ‹±÷ØãžU¿}XSGVTÑ°c‹Æ8uÓÂõ~TîÅZgÍÅÔ3²Žë¹ö8´²kßHxè{"�BžÚ#U*¯eø¦Ò0‘¹0ù‘Ðó_YÖæ fXñDŒö[D8¡* À"ú{èú ZX<ÚâHÇ� ÍP”**J)@–™m”Š”̲L7!œÖ‰²›i^�(à bè‹i^‘’Ñ›¨U™¯‡‘1él0ÊrO3ûÐxŒgbô]³<<_¬OÞt{éÚ}ùãwÍö^(îX=tú®Æmë6ÁxdïF=-|…GKã~ïÀÃ{¥ +“ÉìµWVMm,Ÿ‹û¾¯y5ÝWƒì·ŒŒ’̤‹ˆHz¹‡¬Wýj[b.^ŽkÇ6ª‹-ÝÙïQ±½€ PP"à¶JÕdwÅívGÒÆr_¸ô&¨ÞHÔ5C#ÑòG~’Šhi¢1+QOÓìŽñ²lj oø¸k÷Cí¾›yvXbô P™ûGJŸ8Ü£m1YÔ\ì;óÓ|[ôd*™QÈðø6p„B/R(IŠ (†&èòÂô%MýMÑ•æìŽ0¡é™ö‡w³½!Ðo{ÿî qý§ô^_ÿ\Ûû^ùïÊ¿üé סÜöþæݯe'~ŸüÄ3Ô:9Í@gü;íñ¿&Ï鿯=þd ¶›ç/ñÇÀè¨nþ†|Ò1o¹ÏŠ2àª&2.IÐÈ)jdêög…ýÛªÌ $ì€ œä[ AA¾‡ŽQ@@vàbk™B"hѧÝ>Eå†GÒ5FÜ´ÛÅü~t Ö™?Pi¹…Ä‘ÐffÕ+ÍÙåusØÿƒDÅýͽÄ9ÛO)J +6çC¡’ö’?Zð €tdhôÒ?1 +ômþFø5¥@Þûé¼Ç*( çæxÚ"%öÅUì¶iB ‰ +ââÔSf0‘Û¦#nt”{Øexƒ¥œN ³Ÿ’b4HiÁ\:-dNFšuþx’i¶°w'úk˜‰ÆäIâ2áر#·X<˜µù†÷~šÍ†"·l÷<wA8}}®ª;Ǿ‡•æÿ)zÉÍ„:DÃ3ƒëÛŽÙæ‹Á@>M©7ŒŠF4G�óa›(Ê@Ve\iÌÞÅÕ�z¬[cJטQ¤K²dÇ0»£‚I葯ía9#J—Ei®A7V#L&7¸ŸDÛ1YR€,Iò†*K{ì£ö }i"šqZ¯SÒ3Å‹ªÝ|Q¼Ýå …nßÌ—”M¤n{gÄYÁò´ó®Çÿÿ‹ÏeO~>ÓS›6ê=‡’ÎBðog•JåÍßÍŽP6…l¾›¯-z9gÄ‘úÝÿVf^>Ÿ%üÜg9QäzR� ¯çÒýÉ–o6…H +IdÛ³~èGAÆB· åÂ"¶Š·Ý,R[Íl‘Ç(t¯9žÝ +G!(¨Lðôã·Š†•†±‹4¸±Û}6µ•ã[Ò½?Â¥[ÈÚ²y¾Cëg¬Þ!*ïóº1 J~y8âöÿ]¢Òÿ¼Î®² ÿˆé—ÛáºSš÷)vS¥ï̬ŸT¬ÿæf¦™öäTäÚs¬¥…½\{féø¥®ÞØ0šyþš êþ–8 ˆÀ#A¼ �tQ¤ã[—I R¼HAé¿;¶‡mdzÁ�¶EI’p *H»xìÚ1L£)<v”N™4ßpÝHåÍëáÇø,æNÌÏÊx©ùµØ§'æhNú¥5üæ\%²¼ëÏÖšë»3(âÒ®?g9Œ4–÷;"BŠðÏkKÓïm3"ÁLšÆ‚D™=®)úÐa ´ +-@Dï�DnË•˜ë_µ›ÔÞË'UìÎÌ-wP¥ƒª¹"*J¯QéE€['L”• fÊÔ&lc)òJ4w**¦ +„„~Š»Œj@ýÕÙy[áÑÔxËÔ}øLË&(€æ9»òî[ç!s,Ž^5þYcÑûÙoã†øÄΘ϶6~è¨4|”f¶øÒ™þÌdì‹ï.g…õ¾Øô©ä¹<0‰ãÔ,‡IîÛûûóQk{ôSíQòh{ô™ífx¨k†`{ô‡+kþ(伟ÚÿJD‚:Ì¢µ¥Åý&bÄɬÀ2¶™1½3fjæÀŒëF0r>HFîèCúS62Ê3&ŠÈ¸h1º‚OšUÒmMo‡jêEE“IÇäZçD{–ÆDσ¢©´§¢è²b¢*HaŠHG—¹T�FgGwTêZ"Â’Rqg2•J¸¬j¨-é^¹`ê©&Šäj'qÇ3ô¦¨<RO·DåÜÚ{nÆ*¾x´?Q;>vÁ‹¡åñòÞalþ¨6_ŽÊ7MšÉ™Àb:¸høFÞ&NìN¶dhd`(Øôf2ý©ÉÄþR‡Î”^Ìä‡÷—“xl|äÂo]Žê„\ÎC@6GùÙO~~HÃ+Êbœr‹ (Âj;ú(dØ¡Šœ�Bòü<{D‘®5�m™I'T=¢žP$¤‹]>™®0¶Î("]ͦÖi‚R �HRÑ0øÁwØtmùù9KIpS™’ªjïDÚ)òŒR¨ìŽ`ÿ¤°8³«odjuòhuâ¦Õ|Vó-Ũ-+Úx¿°î07ÿfdúÖõ+..¯Ü°oõœ×õðP"T¾MDHÀنɉH¢" iÝt˜)‚ÂE=&PZãn,ˆ¼ÆBà"ÒíK‘Z¾”>�:}<™N¥eºqy:®]6êú™Q—Š?º0;ûôµ©B*‹™ YWufv)»+XªÜÒ°Mݺ{í®µôL2RÈú½n‡õØ7åÅ…aº^#ÍKü~â°À÷£€¯ðu¥ž C^Óp™ eÄcDT‚"‰bë–«½|V”ÖU¢kUí½| «Õ´6ó� ˆ œåjô�£0¢Üf·7ˆä#¹t’gQ¸vwÚÄu©¾Hx6 ÆtMr-Ê<Ë鄶<>r´:}óJ¦"ÆÒŒíT~A‰½;SÖÕ¨×Fl”Ó{îZvÌ–³Œõ—>Â~—¦<XPMxÃË×åý¿ ˆ@žrßÉø«>¯Çítج–>#,÷„вÿÉZ4 +ÍGÙ½F ÌChÛ¬¦©%˜©§3uO'H¤7¿Í¯ž>»2Gãb||r(=bYªŽçŽŸ¯]»>4Z*ŽŒælã7ïš}æzzû42æ6¨ýsÕÆß¼pÏóÖ¾báÆk÷žÂå|“ˆà‚�\ÿ)‡ÄÇ# +J€Db‹TÔ¥œá˜X5E˜·Ä³H"dC‡"½[—Û à¸>¸Àw¤UÕÛ%í—pòåû½Ó3·¬\õ\l~fn5±'Z<ðš#Âî|UµíxÆžÅg¯Þò|ùЪ³ž…Çnžâ²Íîï[+\¶ÿ^ зòq¾÷-´GÉ£íÑ,Á6s<Äæ�ä•Ò ë#¿mù¹=(J1ÔLaýƒÊ=U-L"’x{©ø’QPO£Éòü—N*Ÿ/§!‹OŠÑ±ntvQ½ÌŸŠw\ÏË÷ P +«<ÍÀÀpª=‡´Îs™RI—ÝÁ6#;¡0ï¯ì`먧„VÓáÔLé|Ú³²ræøŽéx8!ª5{á<Š±Tóç;rƒ¨â¾þÛoN†2QŸ¢âÔ³w +ÍÍ +] @¨ùY%Ça–áÆ×>VbË+Ž€$B…˜PP÷KÄ I«Ám¯˜è•Ãbˆ‚ä¬UIβݛ̒álGoYÑl–Oô¡,—Û–ã˜$ƒÁta»Œø„4¦zp™ÊSAÙnŠ)Ëæöf™++SS�+GVïÛ{Şݻ¦–§–ævPªLŒ—KÅ|4ð¹6Õ¥åíÕÓšAÑq4ŽtØCí]wdz<Ž.]âàŠ…B¤yáõÅJ&1X)ÖfÎŽ…g½ÎF!–ìØ"B_€„"s!Ñ®¯\|Þ¾»jÅB6]*e&vÄ—VT‡±b³ÚW¦šŽ%¦œ¦R$<mEÇÎÚ葪Õ6¼{Ó^›˜wøgÓ£G«Hl‡UT÷ŽìÉáÏÇö/–G÷4oõ¥œ‘(Óœ‚9íÌ”�Á@ŽÐuX„ïiëÆÌÈ:ö + ²•heÓ(©^’Ð ;õìZªÚ²NŠ$�ÈÇŒØ킪\%©½¦ðŒ-³‘îI4`DaA–Xr…ù”¶É17 ÍÄÌQ 'áÐCEÊ€Ž5£±±u4¥CµŒnÒðЯˆÜ¤é?9²Åh¬ùë´39_ÅN·»æov¸“Q|s9Ã-›¿òÆÎÝþ¶ÇÑøŠÙi·í!ö€@�ÉoÁxLó‘¸d¿eÔ ˜V‘Ë{qM‹i§Hvéåxû„ïã1OY D¾py$èàtœôD^rº·ƒ·ÒÖz¸¯^9ÕÁE®Ç<�‘pÈG)êtô™yÚ«¡'íU T®µ Ñù5…R$šˆ½<íÖÈÍý²1•‰Ò¥GrƒïÌr"ßËIŠE± N¸_£§µ•·níÎ[‚ dÛ–åaæÎÙž1lP¼Ð Ý€Úêâ'[ÁIˆpw/½ +-8xŠŸ\Zæú6ôØB‡½7¿¹©Ý=ß?÷j§O/h]A°*XA <Ôò&)”s¢^=_½óYêDä¢Þß™˜…ØI}ä¤Js¸V‘x8t u§I7´ž…αºa?.ˆƒEYÆ0êÉ‘ŒrN÷9'´”õíDêxSî Æ—çÿa«H½îXù½¨6½$À €uò(ÏTÏ£¤ÉT¦•©žéÎT`©àLð d˜ežm×gy¾ºn ´È6ÈÔ”¨^xB<è éÕû-4=á|ôn$ +¯ ŒŠ|±D0ˆ†S[Ðq]OWç™&ÉÍV?åtõí>–LB‰dðÅÉT0OÜJøCùh¤XˆFóúïK÷ð`©~ˆIõæû›Ác\wfáçŸò¸ˆ@˜Ílá$"¢ n¨S:¡«Bå$;—ÛZ³ÄD"\|ÊX<¿DÇ D"‰§·b÷à0ÕŒ¬àâb/FP®éÕÆsÖœÑxðµø`ìái¿×òÜ…äÄó[Šô£‰p F£˜4.Ü~¼£N÷¦r<D«/%3!kø…ļ�Á @tç¯èÄâAI A,!˜3©{ÀØÞú™˜h8Ý»¥³}œÈ¨�õ˜ »“Ck`4°¢a†m|"l)òq¹QÒñxPõJ¸Óú<œÂ‚Ú1Zƒ•ÏÅBö„)_³nh· Èã�v=•"Îâ4™¶Mö0ŠšëååˆZûAyŽºTû]slàÖp)‘N½ÜJ`6¸nŒîK(ˆë )YB5<MïÈVkiœãÊG³·0B©î‚—kšÇÖÚÍl½»Yuz“¦=c„¦È-¹O¡íj«¤«4J黯«êµ—zÍ¢H?⃶?Ï'",â Ú—·º-Ä@fg† +aI;Î9øÈLÈ8;ºb¬äN8!‰DJ]›²Ål¤ @9n5‘nKhørFÂÂôšY%=¸if„ê2Ô=Ç“b2bè˜|dèšOêÉ°YÉ»HD\¤Ð EÃY}*†ÉÂ.GQ`£·U`qa~nz²ÎÊ2*ùjß&SL¢i–àVsÂåvTÜ´h’Ö¼¢[MßL\qoµ@†DÙ•*N9’‡2û® ’})êÀlº30)o&\˜LÄh¨¹I%þýE®JHÙ‰ÅÂÉ“^Íá|é3µX¶®›Æo™®bê¡ŽG®%"”p¸sÒ ¹ŒO�ÔO$ƒæ|Ý'$¨ªîdî°›2:g]8rŠ ]اût¡‹DVÇÐë4:˜½ðÚæÐÏB?Íôâ4ª:ûÛh"¨HO2::…—eØh£¬qÞÆjË؆óÛt9~»·=Ñôðµÿ@øè.¾€ÓL؉F³6;lÜö<£ÛŸäZ8Êý7?‚»4ÿñ¬|\æ{é¿’ù´<.=ó½ãÆÚÆM÷g·ÍÎߺ°|ËìÌÍ+cJŽÊȨmú¶W\\œ¾}×¾;æ—Îì<xñÜúÆšÿ‰x¹¥q¬åÃz@{ÜÊǹk¾=Jmþ`¶™ã!6tüÃz¼…–ëÞg$2)¿ð¤¹î¥ÿT®{,ˆeSOœë^¯kîZ¯‡eº'Oµ^Ke)¥ÆkÕ¹áD–Rkrx|ùÍÞÌÈá-ßL$÷ǯš¤tóìÉ_?5Aiç9Üüž[ÍÜvfg%÷X¸M•ÇÚTùÑ"€ÀF…cÜó]„*ºZhý>"0*‚ÆdÕeD0ÓZv$bÛ©o”ˆ(ÖL¨(úÞ2(¬ä³m\QØ ¢¨ltæî—J,y²T-U‡Åõ›°” dÜ‘J÷ñzÁN¾X¯c4Î"†r¢K¸/"MÄ»c$¹sâø]ØüÔâºæ1>ÂÈFåty”‰~Pܯ¨-éËä²·Ý-_q#s¢¤Ò٥gÉ!znž¬1Êù6‘Œqš•ðŒ¦ßœLíåsÄ€A”aI\ >~Tu…XØV¹±Nܦ-t2rí]³l3•/<*°HÇä +²¬c@ÃVý¸=žž1Ü‹×'/‹ÛÙ/uôŽ¾äÓtR†ùžÙÂÕ÷KG‚½‰b’†8’ºÞôv[~T::%ÞNánÅ·ìÔ +ŒP«o‰éM"àôòd+ð!D¨ÂÄò(—1ãúµùÞ§éN{d¤û8™/ +ë8~ÿê9Ÿ«ù bçCç‹Aþ¥Åï>TÅÜ�ayÜ’¡_çwïh‡ßå˺Î.Ïsn³è$|RôuÄ˦k#y—ÁÇ‹ñ#{b[²ÛŸŒêBÚ£EÉT›ælÇêÐÜIiNÞÔŽ,ê4/g{iQJóI"B +ízÞ8ªŠˆ¨lº:¦FFRE!T a¾IUÕt4ÝÑ�ø%׶ŠÐÚÓ/l[ב´n:st0á u‰@D¥œA¹CŸ‚€¢å,E”T<Ü–h¡‚æF±G£ÑB4Ÿ¶»œÎtŠ·G•(kê ʉŽbôT»¬~‡Ko•Œ¤Ýˆc»WnY —BzN•µ³>ûŠQêB¯SÞ¼|Tc‰ª(åÏ£À•€û‘JÏî\¿Ðòãý5!…;ZUŒV”I,Lxi‚³ƒ…}”.?³„ K¬:t{ƒN=Î +;G~ ””‹ �(7m‹m,“…,ݶë`wp:Ñ¢íqK;±ún¼Æˆ®ÜzPE‘†êÛSPxØha‚ª©6³ÝãÐŒC¯1HVµ+>± H™_OÅãþŒš0ö˜Ö²÷ÊÜ@ ˆîˆÞ«Ÿê24n÷�¡ +¿Õ‚?ÆPw&y¨;“<°%“¼ÔÉ$/u2ɵ´pý=0*²YÛ£mŸK®·ÉÐÉõ,ôÒÿHî¹–L\… +M</¶’Ï=<ù<Ó•|^"—I>׃@?ÜëEa]Ü!mÌ„É‘F£:p`ºÞ‹¸¾Ã°:J†e×£Õ}e›ÇþPi†z€|6·?:SXtØú?><†‚vTÂ{vT€,+ˆüœî#3ø\ܪBc˜'ñõ>I]WdýJï D·7FUQT™öâÞqà 0¸ãQ=ªšÕÈk6±#Wš‡'àxë轓º¦‘å'˜†é.žâ Ç[o 10o©à›{*“ɲæ×™ß;Uc¼wTîA™u¹0q) (Ätuû¯zŒf`ºV-ìNz£2ádíÄ"¡IDËÞʧÕmE v×£„ üuÉGCZœòe#ÜLŸY_£éæ¤=Ë«¦WÞ~ôB ï4æ'÷>³fË„?Tž +z‚1Ÿ;9Sïï{ÿÆuÍÏW´ÓȾ—Þvú-þ~R…Ü¡ý³«{�ìtýþ¹<pêSN‘@Ï>è‚änž}B@DÍ5}RÑ3K¢üºÀ³î%„NM#Ñô¼†€ÎëŽÛ)]*Ë%©Õ™³ê"…Fštϳjö‘ùèXV]Å»îÂÉr¾<x¼hûÒcû²ãÁ;w +¿¸j²¸+•í½Ø„|¸ar �‰0QÒÊüÎiQwíûJüû*(šRåo '·6áÊv*8îåá)ÙÍvèuP ‚z¦ (ö´:le ÍC ‡Ö•Ñ“îvë}µ”žD9ñöÜ´©ÇSþšƒêã}uª€¿ cj!o;wû¹"·i¾?;r}ÛO>M²Ó'§?}ÞÐ:Á¾:ãV>ÎO°GÛ£äÑöèŽm7ÇCl@7//þáš60y¡O""sÉt>uô¼ƒèµ@%§»+]éiøA$â=l àYµÌZ 4ÛøÓn{Öî‘èaÍY"î˜í¤këYôfƒˆ©GâÆý¸bqN!’w>gCn™¬70ê>øýtEê~l~™WT\²ôîi=AÎkiÕxWOÀb9Ý>ÆÈÈ`‘hõ½0ÜýÊd«/â6€p§˜@Ö ++_OàuØí¹ ]IZ=Aºs÷Zru°ë-â”ö‰e“QÌü[FŽ[$fóÊ{;ŠÎŒbQǾPKÝr݂͉¦Dýj<‰9•ŒgUêdö·Íöïè¿Ë—±1’ÝмïÏ*+“ç©X ¸ˆ“Òª{êADÈ…íQb_çkâàì¾¢l%ÑÃzkŠnRdžâ¦bwœ6ÚÒ×[�‘©ûžªƒ�퉴¡§ê G8Ÿ«‘ábºÁÅTršBÊ’Ø©:à ²¤gÔ7ë¥?]eénAÖ¹§•Ô©ov¤Uu 5*Ï:ãÞSBI þÏ]´¶}l´0w[¢/þÏqû$–Ô~µôÞ†^s«0îf¼´Z}#%1iaüóî}á€ÚÍΙQcTB‘ÛqÍ�JP^–àM [ÚCˆ´ *"0“‡»»[@I¨yO*[Rx¢z·¦ËÂ5:½H¡ ÚÕÁnÚþQ‚¢½@ýÙI¶tÂ^Š›ªO¡‡vÝjÀB7§Bž~t:ßpˆ¥_猧ÐmŠx\c¿ßŸ³ß®L›•’¡ˆ_•ðä<NUÆB”4RÜîùǹôñE£˜2>Ô|óáSC››¸v¼¥aß “Gù8×¥{E�øü½Ò�ˆ^i`ºl¥Aö?Qiý©4p2’Qz±JW°Í9–ø±?ðÂhB¶àkÿÁ{yaÀ0mm^±Œƒ±�œÿòLó¢ý(àÜÔ×´,=r7µ;Çð¹3›E©–"Üeßù¤¶3JO»3ñì9E&ôæô¶ŽÇû°;p>údX¨ª-œ5#vðõÜ$ÅW$Qéàó°ykŸlÆÅËÌ&“><•Ùcí‰")ä0!1à;€JPoI‘ú°7EÛc£õ‘Ê‹Ö»ìséTŒæ +Z:¹‚-WŠ¼%“Ù]í>À3SŒÛ&Ýùƒ¦_<ÇX(.ò¹•Á}‡Ç-®Ç¢|ßÚ’Q¸90ìíÏÄF³É}pÕ'ÊšE€ŸÌJÍ&³>[òñ*CèiÉG‰¡èÕåCÿÔéWQ̯¿a‡ÏF¨ª,0OT_{« 1—‰µýø‰PUì v|¢`DÃE}‚§„ÛìE£P&PJeLc¾¯ÎL†õ®¶ŸÙL2n§Vb"ÑÃ4½e]›jvÎ?oo²çu'‚ùX>඲*Òîx1]ÊcOâ§õŽÛdÅ`2iÁX6øÏNËtq¹J çñ&ò]ÈA^Ú°™‘`!BD%%’¨;éÓz‘ŽžMÎóÈe +!]×øL Æë€zO7{Ø–³~BÃ¥Îyo>¯æ+¥"ä` ™H¥.“ASùÌ`fþŠÞbýü {çõ‚žƒÕëW,4GRVü^o0ÙÈÜv£â²ÝÞ„€}5ߘ?Rê³âù\zx\Êûè(F‡=ôøKÁçÝ—úÝþP ²ê/“€Ódåýàñ¼’ÒÇØQÃÅw/ðj=Z3Až<ˆÅ³:<f·Ýʳ9dCw6‡Àj…nß8´²²c¥?Xó÷CxÉÕ=gOîÚ}õèØÈÝcõéy�Â+ù÷ïn_ËÿïÆ×þþÙ£»}ÖØô‡–ª•Å¹ñá¶ëßsôÐoºá½G}থ×]|ÕÞxç‹>2�ž§ßÓïÔ¸Á¬È’Èsì@m’m`çívnyÔ@˜ßÀ~"´/ëwïÖaº.7B[¯€@6Z× FÔ§ì.¯MÔS¢dÚpO0d»1ù£I¡Ó†ðU;&ßwé/Þe0€?¢÷–‡×ÞgÖzfò6K }OîìòÜ·þwyöÉwù³Ûïò¹T&ËvùiR×ù¦tŠ[:\e@«Ä0“Ÿ®.Íä«¢ÙhŒGÃÉÚÕ³ãgÉ“‡ª£Ò×Ré†Ú\ÝqÍÒàìùz}Íç0ö÷yr¹Ht¥š>0›\;³<°æ•H(soë)+*¥Ê4¼¶áI $úPêH/ad’Vu›[Q.ö´ùdñy.o4Ñåz‚¢$‹gÛˆ7t$Tvk>»i˜Je’‰d&¥ùì:ËNѽ4J\©±·ÛS‹Ë Þwªœ‰D#ªj¬öOÍ.ì¶%MŽÙÕb9P0¨*MØJЇ{œ~fdnøʯy†-?—Š²>“ßèð¬LLDa—ÆkS~»1dòä"Ñå¡Wö7j&´Ÿž»†‰§€J?øàAݪRˆ@lZñCçS'o3¨p•žæŨÒÖÖ–a-H’%¸ AJ:$HRO¶fŒ-”»ÝØH_†¥_· %-À`rÚ]v»ÃÕn)Q‹ÕF|ÜzógBñ~›õþ-nL:%ÆrÍÿ·Œï?_p¡ãøÙæÜ;k¶€ÿú·^y òðé†5ŠDöz° :¥qù sÊ°;ít¦íöWøבAI¤3mTä’t5›Bä;ËO½<t¯�j˜‡Í5K&Ò½¨ ºŒãm»$w—âýüñJ&í7ÉCÞÑú3|h^D!“šQš_÷.ôï¹qdåis¶™X¤˜õy6÷þñ;œ1ÜȼKþ}£eêÌôêu,;©DW¥‹JUJðü†Å‰Hü( y”%l™Víœ~Wg;û‰Š,b¡èUvùÞ*;ƒÂѵ»Ñ—yï¢d YJ2¼î.“JxÝ]oÙ݈f*úškïŠ +ÝuÞv¡ü¬sû²ñþxTQÔ˜{aZ°ïK9Ó¸°P8©[††my÷ú}/ÎNGûiÚÑo0ÛÞtƸóº™ë¦×'?–~+hEüù<øàΆц@Ü( iv}¼/t*»ÅVÙ•F%?¿Îï½ Ñ¯_c#ÏB!po�Ì��>ðÚYIõr +ÐQ×K¾™F®Ó»þP…ø¹]œÊÌ(øÑFÁJÔDÐ÷DïñŸŠ`,ó£·<øñIC´� À(åƒò6¨Â±†¡˜qË"KŽýoÙ,@¶šÄ£tî@‘½µ/Zc#ÎC=‰ëñVë¢W¶üøÜ⮑é‰ùsõÚ‰ñš׾âÚy$ÃÙ\m¦d«O-d²Sƒ¶ø®éÚéf®*NÌgwÖ†ñèÓ¯<‰ÎË£#™ôŠ³ùÊznàŠxxo¬4Û@vò]=ÿDÃ’DY²#‘uU`Ð×5².pú +m¦øÞ"žÔEZ_uýdà\8ÛÁ ¸¡C£ÈËÕãq�Ϧ!ÑT2“ä+ w#ÊÈMG§hÛìzבT<¬ÊJ̳4/9v§Î\;uãÒ]O{ú›§F,ƒ#ùRzĶ6Ú_Lû Õl{íõîäs®½vüSoyãcx<ºñÅ{Fçnäþ;,ÂϸíxQ;L²$ê6}+4é6Û;,Üá ÖP?T{ï&Ús7uƒ „]OjqQƒËc ¾¼“C;W¢áq̸þo‚˜#ŸÀ}hþ8•9ÑübÄ…@Èc ×øIå•z‡rYŠöX[³„Né†Ôtöµªð?kg9ƒ)ºrÙYed„¥`v‡t•-vV)˜M]¢¢}t:7¾§\3úúúÔg[¬e¹ù0ÞQî¯OŽeÙ¡Ø#özJ‘ÚHr4gt›M;A›çé€Ä$®SzŒÃ—Ù>(‰U$‚ÙÀøÑŠ{í%}3Ó ¬‰vÙÆ4ÑÉ”¿¬UÖ‹,þWL2}G‡1j“Å’tG4óŽn›L·Ã”š÷òYÛ{îT´ßëó(Š9Jdâ‰x$à7;%Eñú¼¡ðtar,Ü…É`Ñï÷»U·lM…cÁL ?¢H’S±EB^w¾¤VÑP¨/ñ¥°¼ð.MæM.™Äª[bú'©½T|KŒa¬ +Ñf]uñ¤ ÛYOÙºêWN›ji«)S£«É«W f\½ÚëxýŸ%&&ز*㑃|iõáøfóÖe¶ºÐý4¸ùݦ÷+€ü ±œÏ =ø¹ùæl”|¨vé0õyº©ÎýwÞñð¼Œþ%ð*�Tà…ø¾æƒ`ø8ÁÏ4üX5-ØÜöÅø" –t`“4[Pá°/jÁ~¦ûÑ°\„ñ +; +'&¿�VP½G@P@$@.ÊtTºGDýL,|Ùs•½åÚ NP@tÛ3¦3Þt:íf•EºCÔã¶S³ŒJ7ÍruµÏ|…'<ì ýM32ÿ}£;´x°PÌ ›;»-eݶ”IˆxKû—ýn·Å +ý!0dµ`Ý늤Ë}Ž¤ÁWú†÷–– +ûª%n0¸‚t q{¬ÆTzïÁXÚH©å§žçwQ¿Ú¼|N{š0 +€ï„ÙÎŽÙ'"àn�îxzÊHöå +ý‘LÕb,Z*EcE@ˆÀ÷)š +V¨iD5½J¥Äì{ïìŒl�Ü}ÀþÀHûàÕ+ù<ý·Z(¬æ¿Ÿ[Îç—sÚOz/Õ̓¯‘Äá +ãø@ÁWSŽ#~_Ýâxasþ^vk^aGh%Íš õÕÒŒÁ6@�Üh!eè'“I¢zò4÷=C9Ó¥hvºÒh0÷gbùÁÁâÛǨ‹æ'JC·Œ2™,Pùý+xûf\&߀îÿ qÿýæß¡r¨‚VôÞÖwÉkªµmúï$[*õÅV¥¾Ù@Ùlp¦œqf:Ó< UHxº¸4&d’餚óŒ]…~rsb´žl^ó£R4Zb/ú}K›Yø"Ñ +¯…_â| (|ÿƒS‘@Š®±Yú}C…çµZë²¾í•È›Õ ÙHxÖƒÖ—½O¸oYFvð¡ŸÁtÏã�ð�ƒpŒMÀ¢—p´? ‡‚¿§Ã®ýg³3ßg¢^寪Â_n%¡Té+Q§/¤?¾ó^÷½•÷»ß[8ÿpášÜû\ï|ŸûÝÙë>˜¹wU>\~ÓáŽþ‡‡8ü|�…�í„÷S¾™ÚÒ«*./½åÑMøƒåaÓW‡FGü6¥cÆà†Å‚lé ˜CQZqžBû”ÀvÇ›dí¤n÷Ž$õvO*váÐw< R£|9xÝhÑ338Ž¤5N*•�Jc¥Ñá +¡@=E9f‰Žp£~ä v[nÉ·ü®r}¾UT¨[{Л3±p<^?1~þÌÒL&árYlVoÍãlIì}ñ„¿\É.WÇ}†PŸ§˜‰&çGçGV")»Å&VÍÆtqfë/»™Åïqy~#þû6òœÇ ߯Öä¹Oà1_‚�)Æj'AÆëÚ#íyŸbÈ~N*nuúÊ_eØóBú"ßýÁ~�€Ã‚ÿËg.jóšô$">« ø¤]ø¤ÝÆt›0wÎp€NÄž&EµÖŸsÍöjYÓlî^ͦkòΞëE/úIéè¥þVxpüw£€pÃæiò'›ß§0ÑË×Ì7ܽ^ûã—aÞ+¹c7³—ÞXO?åAyòaóRó1¼–ü +†áTÃG2Ýmy�Ddv²ÀEµØyôqYâçL@”‘G t@a]‹÷Cµ2ĪʗFÞ®¹ÆÁŒfVÝ™¸VÂàÕM@Eá}iˆü:¥º×;š•P¼pkȗ̺d–ƒ±¶û„,*¾j‘v»øsÏ\ßX|8»”¬Æ‹ÆQﵧ—ÐY«¸'>¥oé¨BÔ³»†f¢££N²D9¨Ð»¾•Þõ¼/´÷ÙéMÄçRž)0¡Ý¿[—ŽÌ´ž”cJßÁm`áªöe\リ[¼îØ6¾(>мŸülIøÝ»Þ7çÉÏÐ +÷âótÉGMòÙuý^aò+zý½˜Å‡Û×nI•‘^·Ñïm§Re70©š&<=±&Ü™iózÇ“õ³óóçjÿ<ó¹ßÿЧf•·~ãܹïÝ;Ã( +~þÔ0ßå$ŽÞ‚4L~t)ˆ®@ÃÁͧ€ƒßiÖtœ*Ź÷Éqªx¡ù»‡ÀïûìÚ|¿Er”OÂiñ‰@’ŽþUÀ +ê}V³"’r¾^¯eêèÆûíu+o¿ÿQmþüל*ýÞ¢ÿŽ—š?ó5¹õ÷ð÷2_ñ~ƒÎî¤úþ0 ³ŸÕ–‚=KGJcEÄÎ̱O}jûšeþ ÿ¡Þü™§ù·%ð ðb¦�@ ?¿É¿y?‰/§œ¤#‘©/ZáÕøYöŒ§dŠòôãØzìjŠñ\Š‘Wo>LΣB1?Nη ÏëÐì6?<À$EŸíYA› >K¯+Úl«ç[Wu»‹PlΫͧ“>rd ј²š‰€$ë+H$B@W¢@Ä‹]O?�Þ>Ÿ-�v&Ói¿“er%Y‚RËTÏT•ËußÂ^YÅ}Go>1‡quoo®rM½ãŽ¾ç_7{Û®¾[.¨;+=]¸€ÀñWøSî[i,Z̪,pZ%B£^«ÄêS,Ý—._j +…2¡t¦0Àì´z}W*Cz¥=x•¯µê—͌Ó˕ÂHTYž +Ç—Ë…±ñ\ù3±x"‹&Ì–ëõá…ñ™Phzl¡26^œŸôû'Ïï+§——ÓC{éNr†Ä…†Ï7l¡�Qx¦uˆ +ºÅQj¹?¨D½ +E‹?óÆpúÛv&,tlfÕ=e¤FAƒWdA9D/ƒŒ‚|†£ó¤iUKšV±ù¸Ã3·»íAž.ÝŸ—¶ïÕ]§ž‘ž|i—)*&"(/Ž¢°s‡åèÒðDº2~ú¶+o8Žåk×mY›Ï×BÓÓÃS×Å£}æxî‘}Gќϗ»õÈÊÍÒ3ïîó<|€’2’O‡B£‡&÷\×÷r¶ÃS[XàÐÿCs#Y(DµX &JÕ ;#zOôš‚ZcxÖßЈÌX>s™6é&“ùDšÍ³Nïêå{›¥w£6†»ÓÔ MSßn“ÙlÚÐñLfæhñiÝÒsYíÙ½” ·ÝaáÏÉ(uoz¤FíŸiÂÓÕ™!”æáv‰þïòJŠÒy¶=^ù¡ð9Ç +Á#ŽŽÉÌ îôÍâÊÂî뜸{°ùç(`°ò·žk×ÏΕg߶Óö¢¸)e×Ú³V|þÜ߬îÆó¸†A›þÜ{€?Ó^Ó*ÿFœ”‹ð«†1‚‚XBU!-÷Þ8"Š^4 Â2´Õ‹`RªÉÈ:¤ËŽ¿¢Ø©^2žè3£±`ÔiÞÐg�(``y7lž;¶Îcx‚ysO2`Zïl×TtXÝhO£u~,ÂÂÜìÌÔÄx2cw¥R){€ñÃÓ6ÀYfÛ6 ù²ðÒ3’føhÙ"Zºˆ– ‘fÎã]Á¡´b4ï3]5:¾žHF#1»):T´¼íB<žB·Éì&;„ÉZ-9S0mQ_ÅÒ—³åK¸¯RY½i,3Šä³îˆÛºgdlÏNÁfKÏ{Ñf³ áàÎ>_SU@ˆOÏÃü¦UI•EI¢ ÖôJ*: ´,í²¢E²š¥Óf$}ˆÀ’gš<=„Ó‚�Öc`µ¦:Û_‹Õz§°°)yÇ´ÀbiOИ܊K!Täm"¶›,`µl´ð-V¦Ç,éŠZ¨¬ëq!“ž¶3¿›ÝÉ+íY‡*µ}e¶ö?Ös;Í)ÝÔèОHòÈŽ7ÞtÓÐVoÓÑlßÎTQÓÃƨ‰7A]=Í5×¢uB6„£;+;ï÷Ž¶Z!Û<wNÇ];ϸÆ,zäÏà0®`ÕÂò6ºù ÞBêœ-ô¢§v6¿ÐG¸äá}‘÷âILn$€ DtåöšEi§vjgINê–¥7Ã\Œ‰?ýЇ®þèG¯F+žÀO|¯¼�aûÁg\Öž3R{NrK3øÕæ>Ï@(Â"’~0ÓojVé7M)¶µÖé¾êUÐõŽ¥w¼}÷[÷ï™{ǽ;ú¶•·¾uííû÷¬¼ó}kÔF™‡ü‰@Þà›ä§,¾ìÔŽùØ$7†ôÓ·>@~ŸãÈŸÌ–éN„º‰Î¾§[ÿ®üõ5<F“c„þÝiX"@Jh¥Þ«¹½mYÝÞ²Á3°„“’fzOÎZŠO—Á¯4¿…u4ýæuÔz=¨à/‰�&°ÂsÖ>eY·Ý%’–ú¹Í“wú»¹’L¤ÓÝ@øv×E>°¥›·I÷˨jHç0Õ„’rÇ~øÑ^Ãþѯ=.<‰¯zÕ1|CR¼�¡ßÂÁW‚&ùÙtÈe Ý*³ V[¡Îvù¼�(‚'™J2CŠ[“éŒû´U[Ý-'¨>êïOø“µx|4•ê$“õ¡Åo¹]›Ï÷´u¤:lå§ 3¹ƒ×Äë@‚iÍ"òð�ìyàÞ©–ƒ°3H¥’�¹§wüð}ôþú}PªIî¾·ùFüÊ!4’SÂ3€ýô¤¾Œÿ)ø°–æÓ¶3×—ÏѪ†°Ù D€0¢À‡¸²cp~ÂsÉd1A‰?q¦7sZ�º»h€ðx¸FZ¡#¢|D8Љ52xõäéPÒ& Ož®Ùµú“º½*°ßݹsñLËðÞg)™‹Ý‰ªÍFS2æ‘‚ŠÁrte@ð‡ãÍÇΑ77¿VšHásšoòô;r¡‚Ïv–.žËÅò ÁÀæ£ÂIStBa^×°8�÷Ô.;QjykX£wDYÀ³zâNxÚÄ»õ®ÅEÝ<…¤ú|£ °lÂx¹º\�å‰òøÈpt0Zʦ]W8àã®iÞʪÇ5- »3Âd¾}ð`¡´1>¶¿P9X=CÆW.}a)Ç#áÞÝu)Σ‘.ÔU‡®¯¬]9Úü yÇì¥ÓøÞFnh÷BzhWóhûòð±Ñ=ú0�Aú”ÄGÈ0 kÔÃØ7s ª01Ndîr‰jmÎQQÝ�‘ Ê"%l@ºª¯a…¦‚^F9‚¤J‚zñòXzcí“}O°QÙª„ñ`{$–è:30³6³Ê²®¨9™J§Ó&5Øû¨Jͪéw{íÈÇéÝ~^•n¦é.šV,„`ü{¿ÿ–³¯]Ÿ<RÌ£!Qœ9·ìmD…~‡3YrÍ?mußÝ+W¼x_ãž’§þšýáj\°zbCA§õê«ÞyÕáßzåk÷ïºqdpª6&W–çž¹n2zþjП9<pø®Ùco<xêå+#ÕàLã?Ž¿hL"ÂÜÕåD@�/µUï¥r>S°ÿ¬™3¾)D9r²š×Ù™´GH‰¹ËWƒÛ_R„®n D@B‰)·A!‚ÀÏií}§wk =tŒÞÆßy�ä³:½.Ò…ˆ’ žÖÁÙbvÎô4ÀôòôÒèë¢^ )ËÔߟ7vR?Òéz'ñƒ?âez°Ê£Œ›Ÿ[²¶6<õ:ê=ä›7Îo,TbˆçVw®˜‘ÏUQ +ßß—39‡ã×Æ¢ÙëfÊÙd¸?ó®Ÿ x—flÙýÓ;®õ\?LCGãפԳeW8'5ýÉÑá¾µÙ¨?‘ÆïH¤Šå\xw¸ùºÁâÁ5÷ŽàÜ +m"þˆÚ«˜½Û2öV–¤¸šÎ1'¯G`�÷�»t�:Õh´Y³=ÅÍ)N…Øï]:<ƒIrž'ðUÆÅù•]¿[ž†—~Ú¼—¢6Cøkê·™‡}°Ô˜/¢ î[Ÿ +Š h +L£‹Ë±Fð@þˆó«õ3I‘ÕëP乡A厦SŠêÙ.“,iª·ïjÎYæÕ˜§·¥ÕNâ™VòŸï/ÇCá˜IÉzóƒKØÜÎT6wx®ÆÆ#Q“’òæKˆKÄŽµõòçŽÎß™Ÿ*z-ëË5û33±ð@ÚåsØœåXq6íÊŸË\¯,ç6Æùµ”Ûo³9‡b•¹´'wb6½7)Es‡&ñ9Éh=Ú#±Âb!ÖÇV[ió³ÂiêiµBvÀõÜÂ8™CEœž"ªLVA«¾:ËŸ°Éò,«¢|T3ÕpÖ¤¹pLÜ…cäiMÑ(Kw¦¥ì‰±ê3ç³i[Äöyøѧº¹A²í£u;j©S榒Ÿx¼Â½Ÿ?wÃnÚœ»ñó7Ÿ{ã¾o:}õ[6¼õlãÆéákWãA\ŸS¦ó‰ñxr¡”\•K·/]÷¹§Ýü…¾pË…Ïß4vâ]W]uïUW½ûäUï:qÃŽóóS·Ùœª÷££#…ÝC¥Åt¢8]·Pi®€?etjå+ìF³4=HD3³PôOúé°0j¥C¢dy>›Ìh)›P2ËÒYƒBD#ª‚¨ž±ht´p:öq:SÕ ™ Gƒ¨6láŸÞÿp#»¸ÈX±xÅâžõÕ…ùÙ=bÕò4˜‹v1ÄöÔ’™&Z¹m½ÂD»ó =í¡óJš“‰‘®çì]–Aßr:LBõþ/ŽŒ›¦ /à¹ÖÈú„4ö{¤oýÃðHÜã4Ù/Ï©¡â\*ÚÈ0¾´¼l“\Ž|Êga¶(ÍO!ÿóP¡óDŸ.�èý<q/|ªaÚ"GP&¤ÕÖrªõô¶V•È�òMàP÷�¥£e£ÏL“Dx™…ݨõˆc¿A9n3ðqÁÆtûéoÿ¥ 7¢{¯X[]Y^œŸžšœ`ç_VvT°;µ§Ä9´&•?%.Þõ”8ª‹(S”î.¯Ë£x]ñk”úuÆ¡ª^ºÊ¹ÖuyPï³ÙŒQÊ5Ÿ'd2ñü> TDDÑk—^éqHBñ§,Ê‘·ÙíUð:ÄOz](¡ð´]¸e…ÁÁ×¼f°Œ¿‹zHý~Ç:•)SÌ}U_±^FGôÒV2ò£è¤}ÄöÈ ÅðÐÖ¥ÛR;š÷áKñÝëûÀ£\÷Ÿ _Òb°ø->—ƒ"˜SrKnºØ>Κ¼ýpq°zˆþH‹ñx¡Ç—],¬æŽ,WòKµTªÆ^�´±7|ƒîdõx$6µ¶* à=lÖ;¡H!1õñò«ßþÌÑ>ÉgàQ«ð9jE§èkîfñ:¾È¯šw5Ó|�Â$ÞG~Ké¥@S˦'ÂmT\„ÖQYt¿Š |#þÕÝ8|+/&w͇ÙEüGø!ÙñY8^¡xèüËð·80Øü'•`0ø6 +‡?�þü�ãKóBÿæŸ +÷ñν¹FFýn5€ +,æÉËp:ÍmeŇË4·m~3;¥³ÁWg²ü·Ð_ˆDJÅh¤ ÿÀæïÈ¿nþ¹ða0ƒÑÇú¹-½á4Ò™…t+oˆj#åoí^£#` ™Î'…1SÂa³xúLO¢3ü‚Îð‡|kÃlFm‚›�ë#í,#¥ù‹ó¦%à0zí¯"O3õy,6G´Fg(òæŸß «,µIœ|9ò&~*ø]×W#±Å×½nÒë[äÑÍ?þ•Ëwù?%ÛtVÒiÔ#×?Ù“™ŠU÷˜™Žy<>·Ët“GÓ©‰ØÌxv*6‰“ÑTžQ¯$è7ÿíôñ´N3Â²É @pƒq˜€p¶ÕŸÉnz¶‹Š/?ßyvîDh–ÜëoÊëõÛ\ƒ–1ßrÊô¸ÃOÁ!Ì×-}fc*]íë3›}¡ÍÍÍGÈ4¼Bx‚}üºåÉùµž}Djð¯‚ÌàerÝÍ£Ö"wvó©°×µ;l«ù™äøËìN³Ýgš®ãÒMSî|`/ÔøL¹>#‚«^½v àNSÒ•Ò׎W§3c©Âˆh–\qpÅf6zÔTd½Í9K,û² ¡@ŸY•mwí–˜ˆO͘ù½Tð¹¼3x€+o®ÝŽK¿½Ÿö_àsr4¾#OÞ|ŠuË 0IáùVwì +›á)®3]^f]ÉnYjä]bÅb$RÐoáƒÿåîÕ¦óî·d¶:N{Ô¸·DÞn[}³Ëö²Ær+®?y*,ö\ÄPó‡äO®¦H„ X S@_9ÀtÖ @ÀïrRо´Ô¦À6‚v.z}=AÇàR|¤ßéô8,.“TƒµD¬™ æð´ß ωò¾ºä¾ˆ<¦ïMÿ©Õ£ú´{»ì +ŠÛæâž°ÝêµÒTÑ1×lÌqÙÝ}Ö˜…\,Ž›Œ5àëŸ0™ªÓÿ6ÁŒß����Û²Ã_H_<õ�è����ÖJø����Ö…uüçþäÿ¶���������xÚc`d``~÷ï«ÊŸçÿ›XþEPÁ3�»bV�xÚuÑŒ@Ð;oþÚ¶¿]۶ݰ¶m#®mqÔê°¶íöïÍšIÎø½‘D!�T� ›`¨ŒÞëû-«QUŽ!GNÂ(?P•Òe,ë²êÑgµUÕ‚"Iä¦,uJ.sMTÕ×áÑ~ðæQÈ)ÄÚ`€Qæ0fc„í#l÷„C–#R~"¹œóÔ?&§.¡óô‡UB‘^-H“¾¿âŒ<Ý‘)éÈ’d¶ËPããBªŒB´j…ì—×6ûöIWĨڈÖë-3ÔDFeôTÖ}˜wŽÈT™ç,Z#]mF”GD9Éð׊qb_Aï.;;9j:Û3áPkà/q°ˆ—ó9•T8¥ÜêsÕGmiÌ5ñ¼ÃÖ£`TÛaR·|¯u +âtyad¼ƒo›„Ç°©ÙÈÀOTÃo8ùN%¨‰wpë!0áû?ÿVÕœ†]…ðï«cd^üXß?5<cCRÊŠD +ÖP]ª¡ºº‡jÊDïKFÞ#†²ÔYæÞËz#âð�Y¸ÉšgP�Aj ß´‘´GUmƒ]°“o:Å÷RÂa•&œóÂ¥’Ð<¯mAC²ˆ5ø&^iÁ±è®—¦“à‘-H`›˜xÏ•¼z¢ 4à'šéZ¨¯²˜ó\Àÿmô—¾“—®W}¯U2ÏÙ‚ë³>ˆúyýÉìFu�Ù¹:ð&���)�)�)�ú ,8D¿F%Ñg¤°¼ÈÔš † +N +Ð +Ü}AMÛ ´@+ìøQ]iuøn èl@êzîúŸ>±½3êõ�!,‘ùgs~‰•H Y!!ª")"4"Ò#”#Ÿ$V%%z&Ž'i'u'É'Õ'à'ë'÷(k(v)**Â+Ž,e-,.E.š/*/6/A/L/X/Ç0c1I1Û1ç1ò2h3x4I4Ù5%5y5ç6r77¢8=8Ã9+9§:C:ž;&;×<O<a<w<<£=$=/=T=Š=œ=×=ç>/>?>³>ã?—?§?Ô?÷@ @@8@]@Ø@ãAA$A4AVApAŠA¤A¬A·AÛAæAýB B"B9BIBXB`B`B`B»CCÅD‹EhF7FIFrFŒFªFÀFæFöGGiG®GÞHmIIáJÀJþK˜L+MM×NN=NoN‘N£N¯NêOO,OGO‰OÌOÛP�PAPaPŸPÄPâQ&Qm������æ ��t���*�<�‹���Ï m��xÚmo„A@_mÆ jÛ +ê vÖæùþóÅ Ë—Üæ‹šÕÛñPÎ EWÈ9\ <¸Pþȳw_‹i,è\BSÁTàRå;k™(¸`™WÞÈãž[îHÐÂ#ŒºZ8Prí»¡UŒsi‡˜ü ômY$é{‡zâþ{ä„ëÍßî[îÑB»†¸Ôò™a_srÍ9O$ä7y8Ê3Èr¨éÉu¯u/´ÎÇ’ö´{b¤¼¯”¬éûBBÚâÜ×R!¢4ñ’ï“>cÊF±WæÍwÊ«RTCduIŽ0³ùï1§ò(Ò?Þaaq.±/ÿ yÈc¾zq«~Û>6þ�ÂLl���xÚlÁ¬P��À{ŸÙ¶ÍŸmÛ¶m{Ùnʶm›Ëœ[vÍ«™Ý‰�þçÞ"DÊå†kºÛ£‡½–È-žòz/Ÿ^®»é–ü +(¨Ûî¸ëžÂŠ(ª˜âz‹sß}<´Ô>û•ðYI¥”VFY<Ö×å”WAEURS?Ôß`ƒ¬WKmCÔñA]C 7Â0õÔ×@CO4Ú£4ÒXM53VsãL0ÑxLr@_´ÔJksµÑÖdSM3E;íuÐÑ''urÞk¬•R*©¥‘V:éeQ¦¢BtˆqÚ/¿ý‘X—Ì–YR»DÙ$Fr9l-,R¨buÖUeU%”È!%ñì°ÓYç\qØGs9Äa†3bC3 + %ñÕ7Çe“]VËu³9$ONñÍ1Ë|ó,0]ïT‰C’4$ÉCŠ2¤ +©-ôÆ3‹ÔðÂkÏ£·jØ0ö_SÓ`1†ÏÁ!¾-j‡å µ¹~àÇÇ6iZWÖÍ®››6KKü¿p«0ÇÈÍ·r1™ä(14{‘iæºé‡ÕVùìaaÍ^i˜µûª]”gø3¡-“Ôîϯ@7Â)\^€ÚæxW){~´EØ„ >„s«ð H��xÚ-LCÂBœgÿ¶mc“¹j“±®tƒlœåeï;Uî3fŽ.Æî` ª!•èñàŽÖÀYZ0|\ÐxYÌ&ÑJþò·ü>GóëƒZö•=c–É2Ú†L4„ùeÓ2‚iíË[íŽÈ»‚ª)¬Q[ía±õù8Ú”{ƒHhníöž=dhù¥KL3*]©‘°5˜›mE½(� \ No newline at end of file diff --git a/core/themes/olivero/fonts/lora/lora-v14-latin-700.woff2 b/core/themes/olivero/fonts/lora/lora-v14-latin-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..05498a8bf4e49c3d3c268409c1351d5f7342bff5 --- /dev/null +++ b/core/themes/olivero/fonts/lora/lora-v14-latin-700.woff2 @@ -0,0 +1,119 @@ +wOF2�����cô�����óà��cŽ�����������������������âƒ�`�„l + šm +‚Ç‚ª7ƒN�6$‡ ƒ|…91âzÕ1Cw‚}õÖë©Fò8Ȩsv fŒlN˜ìÿÿ“’“1ØajZõz/Äì0I‡«Ý&e_¡FÂð„ݸf’é5™´Ø&¾‹Jqä¹Ïï —fœ ê¤2ÕMìáùÆÖh ²B.Щh/Hž¿=ž¸ê†Bñ=ÌenÃuÁ$-cÁdïíÏÐÖ^fy]ðìË&¯*®l‹¯ù]܆6âP?±z·q„ßf¯*¸ØVöæÃúû0}ÎÁW±ËcD8ח矷ëùÖ>·ªë}IÅPPL…P&DöL×ðü6{ïŠSÁ T„O…”H˜DؘKknç:ãzçò¢V©UÓ°NV:Ç„€ë™ýk©‰q•dß±€ª°¨»ÔtÍä™ÇïÕ|ñ?Uÿó\HLÊ”D‰ŠáaCE¹ëкó¯\•¿¨<[”©ëŒL¸A¨Ÿà@–ÿÿ©š÷¾öÿ(¹tÉ3]4-ÑšR:Ï‘éi�4V ¬âðìu"-YΑ[9,,,Ë©¾ˆ�ož*~—¤S>VÁEÄù˜ñ"ÖÅJÓ¦ÎP^ïÎç¶_ð“WÎ’ÉN0P4aÿUN«;Þ£nû±G£D©²³äýˆ¬ïÌ×’)„K€‚rùøuZXKß!–R�rBòf¡-¥¢tXÍ(>uFÐ¥§¢vQ««Fg&�ušÏ€ +È2èy^õ´ý©mýÌ?¾¹²‚b5[ˆçÓ϶]ÝŒa€àšÿ¢’VVbP’`î'ú(†wy8ö¡®œói-™Ÿú�×_¦â.ÜeÜûK~)Ž’¹ür‹1ìD!QôWǃ‘À¿ûû~<±RÆ.K†¬X$‡`¬îæ¶Ý°Ø%ü˜ø øÿÿËWÏ~ïͯôöÉÒJ½3)½Í +}¬�(žŽµr(`—�zþ¾Tk¿n6Xlk‚¼‘¶'€“â•‚897†ÓVuÿîßÝ¿)² ‰I"Ð�È ZCBô,E‡‰‰òLmI¶§Š"DÒÖŒ©à7¦xšã¦ºÏù¸é:{ÚÃñb&Ð@MæVUWdtŽK‚¤/GB¶ð¹·á÷™1xm7åÈû…%XOì0ˆ""âMmØ~~kþûÁYºŠ1X^Gvõ˜zÍ5?c®?òQ}óö0â@!8²þ´Ÿö- ºÛs¯]:ÅT±Qºèx×!ò¶§A˜Äd%hÎã_-€ÙP"`@Á‚A¡BA$‘ Š($“�ÒÒ‚ôL +;ÈÉÊòñ +‚ŠUƒ4‚šµƒ:u‚ºAÀ¬LÊ`¶ÜÚ"˜ÐÙÐ+»Û€`8ªÃ˘Žêl‘ks$ °üðC+´]Ñ—õëAnXÀ2Úí®ïü{šùP›`/\7Çð;AHˆÑ!^d<2ŒFž"¯ß1Á6Fˆ‘a˜lL¦ÍŽÄÈtÖ9ç]pÑ%—]qÕ5·™ú<òÜ+¯Y 6j̼‹–,[ñÖ;ýÄ»Ï,dU22ÒÒXq[\_’4T`$f,ßÛ”wùx·9�BCîX€Aìȧâ"Ê–Ef>Ìœà*ágr‘ä&cÏ®¾Íû¯\áp»“¨/îYŠÒ?9þD¬‡½Mz÷gÒEÉÇ8<gCÂþg)ÎÙ|ºœçŠ +’³Uœká|Ž]¬ïR‹P¹î]%+¯5ðªÏ` +Ëp@cÌÃçôÛ^÷‚٢–—zÅrÌÛ c¼G1y^iõ¹ùžYyÆìÜþÐ…dŒ›æY?†:kй8ð «¼®F\K4Õ.6^`‰‘l>³¶u>2¢Ï‚ �pc8ë@ˆc$„áÁ¡X6[ãÎ>ÛÁõF„6V”9°Ý@7ʘ+såœK8mV¹ÒŽ{°Á¸Â¤€ qqò§ÈòŒã \€eCÛOafõh@=îçý¤÷s²¥Z÷(7lÅظŸ4ŠÆ%àË ÚúNf Ø÷¸ “æÊ¿‘˜Uà=ç9 +Ø80"dA`- +œ%µ,pV� >gÑ9s^\x§+vu(ë‘Ç( GãˆÁa–JTåÇp„câÔ'vŸ—·Ab8 ›N¦B¥_CTü3¦ƒl +™‚ªà%‘ÞM·i×ëïç' Ôß+0#Î:¢TFœþ̘WŽÀ‘6�f;æØ6/Ý*¸@^øÚ)lAô\à8P¯ 0àA@ë²3F¬Ø‡€§X¡” €^bse RJÕhã„%‘Ãq8ŠÉ.âÒt[qpH3A>É>YxÐfXÀN1e|‚þƒMÍÅÜÏ/ù·ØËÚŠ#Ùª½VÖùºY_Mî?´Ìv¶ÜgÒÚ5u‹»µÝþîdw¾êwìÇöƒýÁþtÿûD:ñMZ†õ“¥EDí£“Ï&Ï°êP0M±éÃ\7=,V*iûî´u8<<6"ïðh¾@¨¬¢£§o`hd,‘š˜ÊÌ-äVÖ6¶vöÖl$S¨¬iùŽm°Ñ& ;izpÐaGè)÷S{ZÌ—M-J‘VšÕ(‹¿¹¿ûÁ.£€¦„©´=‘/gÆY eil,ŒAvaÉyÇOlˆÚÎ%IbhŒr©2÷ÅÚkÊ꯶ú}wùAÄ¢Å*J)# Äm +Øž/Q*YêH+ÎeS±#ÙDr)¥”öàZˆÞž‘.õ¢÷»jaÇ= …¤†q0Ã&yå›_´hÔI~&)›Q“h‹Ý`õ³¡Ü&G•ô{<r °§ÊL�.�Âp/L$§J§6§®V夕‡v_ûš&žiS3ÛÙ±¶IôR²ÿ…Ñ>Ö\SK=í¶œü÷€}Õi è-¤»_Äó°7X}hH¡åÆø|jæsØ÷°|¢h_É(£ +i®¥%M{·€ †©µi!ÝÖŠTð[!Hª¡~„dpù qZ.½ +#Í}6ã!‚ø“fçk¿¥¦ö¶“$¸%¹í«,(#Dî’RQ]§ê;¥—g^<uÔ´c +ÇåàvjìUG¯qó†Ú©f,ÃBÄbÈ–C C*Š™*§xY3Ó‹N‘©:3Ô3àYwÍZêŸÔ÷VPlÊíõ¼éäé¼4u\}¹‹ ›š ¼ˆ;³g1aÉ`ùò¸âuQ¬…ãHe$ÈAV©E-zæàsÊrÊŠSºÊØP…x–³ÑJéFHŠHrãEÅ€=@ipŽ…·AºŠ<éä,J&µµ Ϧ:ƒs—¤|n×ßU‡êñ Ï…ì^„ÝÕÿ)”flR~_€@hOq?*ÄÚ‰Œ"HíAÞȽOésjÖ–{zyø'}&Õ +YŽák{`ŒÄè•‚íKœ‚á ˆ´Ÿ0ò½ßÉ¢^*/-‹žd$¤bá É$šDƒM'Ø%ùs“(4rI'÷Dˆ–ÛT©&mL8<¼‚|.`Éaâú^à,ü÷|ùÚ–Üž’N-ç”xMãfîpåÍp‚êBíÈÔ`¡he'ê„ï3Ú>ˆßkê¹£u[õX\XZŠ¤uYRúzèÖ96ŽÔeë¼û´î‚zØUIžvä4ЉùIëÄéå—×VäÄÆ×4xÖ®^Œ8·™…„ÒƤùnI€nù]Ïϳs€úúgÓ±øoAèñÊJÛûeå¶e!HNš±ª‘)iË&EÉE¢rÃ+#‘ášqØrÄ"H*Œ xt·9 Z±Ž{@I’aèUšD˜˜Š¾>8˜ŸHPA¤0ÛÌ©zPö´qÏEaQfÐÉrË?Ye¢ÕR…‰H2‹Mœ‹ÒPÊħ–°í•“z‰Ø‹†R|eÔ]Ò$Ù-!ÕL¡×ÇK¿¡{€î•B8e6x÷¤B5ìif6Ô[_' šßÀ<Çþêßz0r +¸¨Ü@:ÕhÔÇ9 VÔ9Ì:UxSxn-MÓÐ(Éc”3m¢Ôk°"e–‘CŠ½RŠQvq”sïÁT"ÔRÞÈ>ÈÏLä/?)™Ú±—‰¼:¥/à‰ý`Az¥ 5((]ì$¡Ô÷'‰ÅáѨêPZxm¢2)3Ľ±IRá '¬jo˜xÁ~ÁPšÔÔÐ^ci.A¨6DA÷1d16ï¶ Â”jïir‘ô<¯Ð«ÞÐj©x+)o¶“ÛŽêÆ.æyÉîm2chrÓ¨úÍÒGF©” +u~!ã!Ü¥.27à�úË•´bfźCŠuèºBdz’Uú¨+¸fR=[±˜\E‘´ª\�[<Ü_GO¯n‚sr'|µ–-Óm’^`´Î?mš§˜Tá H½V7d ××�µNÌ$§Æ²EpÃð¥u¯$,{VéyΉäØ1íCC¥°Šš?-³ÑmjYÿረ`ÎDaöµpÌM¡Ú~Uq%›ð˜¥©üšßƒ‹"êMjßîÜÇNÊ¥8ثݬ£¯h%å|µlü7äóe€*í×›vM³·O¬9‚Wó'R³Ý¶‹vÙ ^Y—Y×íX;;ÖžÉEܯٛF-+Ñ¿/'B}ÐX7ßg›äRç +Ù=5Îl˜ÓHÑ#ÐB¬Ø¾qÚÝMêÏù^¸s•Þ¿l›z H¨•a<Mš$u*Ï'Ìv*Ò2ÄreÈ‘öÞ?kg?¹ 9ŠÜµÕö–’254$д¢ª&¤ÙlC@×· +kÈw¢Ls‡ +–"Žå0iC€j"½¼íj)~xOüE»”@í¸ÈSL‘2Š+<¥5ê\ÀoƒÜÝÌJJ<yI¶´?Û‡¦{#@é‹ Ôê�º€!â€ÏîWì;vH,?„±éò7¬ïpp.©ÚW‡‘(§šgtkkÇ,Ïï©Z²FNͱ?dÔ×›TçN9]Í5�Ûg²®Y¬üJ"/žóˆó/-p'MŠSé-PÛs™XT^w—RÔµ–Yýœ—Œ5Óøݕ㌪ǓÎpƒMãµÑüýñÃnE6R¤¯¼6Øe·v¹mµÃ@ÒY’3$ªm-+ÐH-•¯@,‹nJp€Y%1›öÚÉñE»\˜ôgl.ás…’ ¯¤Ì_ÚeTçLQ6(Š7ŸÓ‰$e‚•Ž€sF²œ@î¼»²ì2Ðg˜6í¶°ú¹Ý¿MÚÍ]*¬PÞ*Â~Ÿ ð\Téƒä`º³ˆ„“úѲ‡*ñjWºHð FÜ<GLò,gòÍÀh0ôŸt¤í±Ïz*®×¶J‡hM¥i,íN“¼–R g°ÐGŸgÁ2°t$¹“ËVç$¨,7Ÿ¤Hˆ£U‡w[ºŠKîË"TÄëÙ© LbE+W½2ƒÏ�Z ‚gTË•ŽyaJGcß”Á“ÌHéãpEíWD"‹J³²„`“ÀË¢^«øÍLJééqǪ�¿¡QÿWPó¬ê¡TN|¯…û^<] 4éHJèì&•¾Yzk_.™8u®(ÑWä!ßL³ŠèWGÑ/š]#КúG»»håVõÝûí†D,¾>"‡Œ²ö6"ÇZ´ç�*2üÃUEEZ?0Œÿl¸z†Û'Pßã‰úÌn'yÖrù zÒZ¢¸¥Ò¯¼/yÛÊN…GXù²h‚¤tIªNÅC…Üü@^rdQ½zó-3\⎻õu»h§E(/èÆ’² +Ö)ÁéÚ+uîa(߉V5W«ÀqÔAÕÔ£ÕÙ/¯«·º/yøBòEO파…–O m?ÃpY 3åZŠÖ—³Ÿ›ŠgLh=ÂÅý³¶ß䃰àðE!JÆšŠÃè¡™ AêkjP¶¾)–Cø•ÿ‰�! +‡¶ãÝ#Û3u' +õš$2毹M®ÿêUrè8T£r'O«#&u8cÞF;éÝ÷Aç+´lšŽÆ5I¿ ‰M|ß±}˜ùÛ9Ÿƒ¶nå†×!v¸=¿æe7AúóWo2`Q2gq„¿Ç)»¯ˆceNeoš„‡¥ZÍyKQ!êî© +g¯û©‹~6âN²ÈÀ“ÞÊ•A†Vrݶûc�ïÁæ”;®"=uÛ:NQõ=2kÝù™Tv:¼ +¹pÑ•Ó¢ü€±KuªƒVS¨4*®ñ5jýÄ—Ë廳l¢°Veީͦ÷vÑ$H%–¸)Z*c¤ñßd±XR`çª&5×,^ÁŒ¯âŠä?½&(Cr”âŸÕêÔf9™Ù<²º¬Hí ÝõMÓv£”kEà}ô!ÈÀš²;µ1´ +ší÷H BìAä;Q©9U!VıÏç`€È5›««Ûoj|ѺPW(¹ž§ÆG+k«é镦Ǯ¨Ò"¡/ø«“yŽþê?l`m¹}¬1ŸT!ÉqúšõüÿÎf¾˜Aù;{ÿuÕmÅtŸFìçóâÿ@G‡‹l¦õ¤%W‹¯B •K¼ªU´¶e:º‚öV-Rdd(æ™LÇIªOŽ—Ì,€E Ê|ò@Y|òiÈ€Ø9P‘Aê 5<ync1Î/[d3Ç®W°"´N¸Åf¹("ÏIþ£Í0Wîÿy@·©Nl¬¯©µüÕ-À8qÈ]:A¼f:(A¸0 HL'¦h!èш‘οQfO )„¢A¡fe×ê7ûmÇAÖœ£ÑgÀOA¥·ÚÁÆCd™�QˆÿP/¸3"ÞD“TË.ÆzG²,¥æÃÖ±u¨+ª�°ƒ¾V9˜*ÒßÈn><°¶Ø/Û +ÖË.€ùeÊîéð—ðV€ü^§KÃ� +€ç‡)–äû×úPX‘€9ÈéõÍ)9uº®Öõ•Îh$2P6ÊGãÑDÔ‚v£»Ylv8›<: +æ�(@"X•0Û㔆Ò_ž +Õív�`G�-�SûôÿAÿ�øb%�_øGÚF6tØFÈ#¡ßì}¶çÙöò¡kóØÌEF8·¿^¾õŠ;[b•eN¸á–Õ¶Øj®³Ùa¹µZ㲋.Yá&Œ1‚…"!êil ªq²—5y6•Oö<É&ólöØ:/„Zž¦Î'}³™²äÝÐ"ÅJÕ>ó¾uË÷Ÿ Úèª#–:æ”ãN{äŽçîšh—kvºç¥®˜fºg®»m¾o›d·Ùf™c¥�¹3:P‘ÂÆßIº¨*%bHƒKŠð'”ðœòw¯DRMR¤2Icdfãá’ÎÍ'G®<%*•)WÂUÚµjã×£ÎXb5¶Û¶¼öÙ´/Œ eç/*¿cè[£,ìøóôóäúMWüG¿àœïÉÐý)1ñ‰ï*°s`·Š×_ž»#'oa‚ô‰'Óøพr(c-ññ’tZW‘À^6©È€øÛòø«ø€Ýa—"yKKõø··bMú|ÿð7fÔlìiÓéM‘;ãˆÁbÄ®ô•ó[?LžÅQZôžYWì9‚~—7dJÅ!ñ¡'Þ¢rÐÛÜy‰÷‘¨pÞ{Ûª£¨$KnB¼ïÇóV´€.È5ŽÌz›‡ëƒ£@ÜXËëŸUä›c”íÂ!uÏ0íEÏ1òÌwÒºÚƒÛN¤ÞÿóiË«¶%G>šx¬^Ô*hN<4ó“ÀuK¸¸ J-˜^¡JŠLEßÉŠ i¥Ñ¾ú„šÙ_sxÏ]á5 a‚…Nr$9vÝk(ƵÎPâdR[Œ\ºi˜c¤]Mˆ÷Ž#†D£jÓè”?5ÈÑ@A`4’fþÖ4“·F¬~°æ#³FâÏñ0ªÐ ŸÛ¬Ò&rÊà|ØBì4RÇ0ÜsW¦aþú 1 }†ÁIÅ;§>󪣯è×rY1ÆΑß9Ùõ\ѽ€Œ¨9S£2‚”;†¦Òô2uÙO!FÚhiÒ³â䯉ôUvW+g¼Ÿ†)b˜4ËY·Òg߉Zªäé§bzoÙ\K‡DâÑ’÷‡£1•±N=£àÐ¥.÷7½@ž9R~SXL“©g—¾Ï…NÃ?Ç—Z±„ŒbQ±ŒL»XUSÕYª9®º³ÕpBM'ÕrŽÚΞBt~-E¶sê5éË;ÜÁÙ‘l%üVϲIø;ÓLq³®Ñ¥C¡0@"ŒÆ BŠ0AädæÀ²2‹…<Ò¦Uêõ¹›r4Tó7̵â@LKœ—øY|¡n:ά”}:ëAr²Z\^³í×]ÿI;h¬US|qf|ouj‹)´‹T߬$kÉ[•k�ßWe>o|ØÍËXF¿í1â%+ºÐõÓ劲�©*q‡‘™Û¼FmÄp€to¥g}™z#üÀÙáÁµ?Z?úÐ <¨0VA®ßd’XVîq^—Å8åXN'åáF-*@þæ¥L€ßÇ‘%Í‘¿b÷³Ê\±8›©‹Y‡HCê€ôBUNÕC|SFŸyÃHh1Ž¬ôŒzˆmyécQ`Å£ôâ¼:ì‘é"×°Ç�0$Šª|@=·5Îy ä±CTàÔ DÏœzTü=h¨Dìˆb²<ÿ¹þ¢S¤öªÐË—%Q´,¾=ÉǾƲXCþéh“ +}*Ûš#(=XÐѱ¡ô`ïþû-Ò¼7ÓÃ2"¯¼Þþ <°ëµÅùè1ý¡9VesîeÑXûéeÍá® _ÑÔïó%OVYÿKž-õ"r¯i¦Ù�rÖÌÅÌK!T\ÓˆZEª È®UáW±„ZæEï}¹ÌNKÚg{þ}nêNS;º,óƺÊÕ6ê•iœ +Ø«O qÈ +níH»ü¼ÖYöùþƒ»c®–Û]ëóúêe=ôqŽ7Ûv\ôÖ}¨t5zi˜kªÿíÒšûøÖ-%U-°¢NÅ +DÜE‰°’t*U \—tW�‰ŒWÙ"‘óQ¾ +@ +^‹DÉ'.ׇÙUš6ªˆš‹ê%`£áT³@´\’v›0ùÎw1ùÎ÷q~@»âüˆö12Ò{Éä[ƒ.L Å3…7owÌ?v±X‹ˆ~Q«T ëP6¡ñµÜ°k½Ñ>¢í8dÇ)Œs—0®HŠ¨[D»«ìy„óçλéQ߈îÀí~øëëÐbVua{ïQôòÿ/ÇçmƒÇ‚ãxVŒý2œ·Þÿ çÿ`ÑŸ�Ú;@x @�Ôx×E0ÿ3aŽÁ{¥HùNv„÷&÷�^Wbm†k‘Qs0¥È®e*3*|M>*‚8X†ùååR¨ñ»¡º½Yž®ä¯Å§rp=öƒ—ŽäúpºGÏ€õ¶n8Ž;ò‰“ü7SxÇù$S½ê_J…Z%›l6Uëeµ{lÜÓ(L”·Ðko¯tXéScØ[ï×µ±{AÃ7]_éPà]ó\Ë’#õ²¤·ÛòkËH'®7ôfC]håãÎT'ÕnY»l2wéEæOeÞŽ¼´¥›+`ÙµÄ'gÍ +î²Í—¹žÜ5ê½Ã9ãˆ×ÄûÀõk¾äþóíÒ¼&0âËHÿðÏ:_¹äz4ˆ¢D§—€‹qÖkß—º³á'<ĵ¯|Ñ?e*ö™Ï§÷^[ˆ9—Ȣžéq¹±œÆ PÑIœ Šc_WŠ(˜Sä³Õ'Gþ|AàºÂ@~ª4z'”ÌluÌr1ŽÿÿŽÑÈòê?h "úá9²è¿–Èø6Ái©†Deˆoº![Ü®7/`J³š¾0¥÷Å Æ°¯ëÄjS|3%Š¡IÓˆÕW^Š(t-g2ï>_¸§uÒMr¥¬šH¥£ ¡¶ …OéÕÆÈ l…< +Í´©zÀ tþ%DÜÕSºÜô–Ç d;1B5|èÛFàNÌãŽd +£[(õæ©9Ž_üb•ÞñÄê<7À¯ò°fõ`wAöÿ¿¥È™ °Ÿè$=3fÝÆ@þ®Sp¦=…ÜÍ:õ¡û“C†%tQ`eŸŠ×€Btê)µ:ÄÛu»\±)#HIXN€¤]ÚKEAnïÕŒ\é=ÞwZÚÍM6[ÛêÜœX©“Š³ú©]¸ÂtF‡Ÿ™±±›ÌqÔ"³xÂHÁëpQ¥‹Ä½MÉÁâÍf[¾^V_LÜ¥¸+‰‰YM°mv‡’Îœ·»"ñ'‘"O>휻÷A%*ÊD„wN‘¥·8 §š ¶ðSð÷E-8k~ݹ~Jd°×s/ ³Î¿àѦQmlŽ©ýμ 5ÅÇð¨lšn"d¿ìþz³]•/ààHð…´ªÔ0”¶Pä×—h'Dm½Š\ªMJËí!ZÔ|ÔÞl-QÕú‚!Ö:•ðÍ;íªýi°Yc4‡êñ¸½7ÄYkx}Jh HvI¿®hgÞ0‡j xt=(nÚªÖP1ö’lðƒóÉÙ›aG=WrÂ7ùÌ/æcÝ FÄÔÅ–³MÞQ9˜Í‚ÚêÔz¬&=lVËx[ £bÿU'¹<Ç£ÐJ ]À-©J(+æp,ÄóKv©¦É…8b ¼d™Ë(k(‡:`ä¨.±#ÔÛOÒy +%]<·¶vΊÐÑ$±ùü§u$ÅzÉ„¤tR<d}ÛeLi²ëëb&äs[HòK2Å}lZ>ÿbÕºŽ·ôg¯Vœ‡.W– x¡OvmÓ8¼¥HŸ[ÅÄ2|K¶ѮèšûÝejißÀU%%=‹õˆ¦%ä›å„0Ykàî1ÇüñŸ;fi«ñ¦ÞzèQB/IJ®²q¬9}v©‘ÄàEl;~Ì•Ûàú±ê½aTj˜È„£]¡ß×/Oò²fõª›?¡c!º:RoôŸ>ú¢¸à-±¸Ã¢Ð€úÌÖóy|ÓòOÊ/Dj²I€Œ:¿iùá;á–h€˜;¯$‰’…õ’¸ï[:Ä’‡f™íE +SÇ_Ѷp˜¹òrõ¢”XJ!+jÿH¯sÎ.dm¼Nj=Ë&ƒ–8½©•dÒÞf›ãõN7·aý4‡‚HZtÃ2¥³dÍȃ—ï ‘x0¥Û‚"!Íñ¹¼©§åÐ5CÓ°=¤è%ö¿¢a<Öª‹Ú§z–]]ç_Q€Þ{F_Íd¨ ¥Ó Òuäp¯Flû±Òö®›—t_Ï@CUoƒTÝ +<íšrbŸ\UázèèJ 첈õH˜ÊØKÕ-æ“‚kBûØYDJÄ®D ›ª§•j·’í£Ûi¯ž-Ó–ˆ‚k†u¿d—#´×·~3ÁZ¸òÛ¦¹½âƈn|wßÙ%gH¡Yèñº¤°cº“{[¤ÀküJÅÍéŽßó.ÇÀÏéÕr„ƒG£9d z�°z¸cQÎÔ’H8Ý-Ùt#úÚ›/¡ŒP{€op'&–ê.6b)¡”ý£T¯!'X»ü±k#¯ÄQ,'Ö¡þ?{l)Qúœ«J`Ú–¸n=Œ=Ÿ¼æG4[¥#Õ§ùûª›XŽªWJ8RAzKZL´l,kq~$¢™\¬_)Ó÷`y]ó”’Ð5ÍæÁä>ŽöÇè=TPKë˜e¸"2ÉA¸Ú5±( ›‘»è°KÈdè*Á#ïųXä6‚yÃö‰ŠÙ‹È°À0Wþ—;r¶Î—¤B<µ1©Äg>ÄT6DZ®;A‹|ã%v–5¦oñh³<ÀW#à^;¸OOÁM(hiû_à)1Õ|…¹WP¤gËî +Š–2bf…«õQTso<ŽñÇÁ´1±žÖ[3‡eýá´&c±UéÛ…Ú»åWþ ¨à½’Z7)&ÍFÕ�L+ bOÙ4JbÌÍMÚ KOS¹F—ƒôÕŠÐü÷º[Ø—æ‡Íø®ääû×{–†’]4nHr:1~K€q/¸OÏã.ƒéŸ§D½sÔdCkºª”:V§š[eJ!ª¾s1ß×ÝßÔìRÌ¢ê‰ònËù $ì"ÉFHî©ôÉzwòÌõ§‡+HÕœüm#gqõäYHÏ?€úUý¤¾…‹[®5Å«2D¨Ó„5üåA‹2Üý¬’ArÆà„ø„ä[²×@ùÈO +²jó ÙÀ–_9(ùÈCïøÆËAáq¤Öè¼2¦;¯ç)W´/ž·:EW…Pcé ‡eWpQÓzžSG.>[‡M}¡d!RoÙÇë+ÀL¿ê¿]Éþ’½ÙëadY:…™»Lò~kçn^YèSD«ð;þŠpºŠ}È-,ýå.)\[2–9EÇ°ÿ:Qù®Þ£U‡f”!)„tˆAt•œ„åãœD‰¸È#ã ›é}ã=íá.¾t2Î}N=‡Ÿœs»o´p#¬9û‘ +d€»ý˜ïüZu{‚ +×…iâè©QiýÐ Oz8í ¢$’i=uœUs5‰«o‰½L‰=€s±€]@M|ÞøÕo!Ãnéãš‘^š Ñ50Q –r¥ÒfK@ËÒçpTßµòf¨x&Ìææ{:á4“øÁ"~î¹V¢&7Úµ¨R¸Dâ¼ï€š´/t…î%T‰T]áC̶½s»¶Ç 짼È`Æ¡†4xUL€ÌMpÍ\˜Q¡Ñh|œ% ÑmÓÅ¡r?ѯò׊YgX ¨ËTÑœ9´ÿ|EU6Y<é i›µ½çjo›L.ºEê<l¯ +V׉ÓØë9ÏÁþ¥Ï!^¸0/þ;¹^Ú0&î˜3þ?‰Ôÿ‰Ú.¼DÍz€fõ'ç$ºoM-ÔWЇunw@¼ÊûAϨÂòë{K‹Ë=4ά¥žÒWA•ÌÝ8Çz\èIdUâFž×ë×ÀÔrpÛšœ›—ZíÃ@»qjxé”äù'š—\ýëÈvƒðò<åþ·°~S¬:û©ÿßõê/º¢-˜üÛÜòË™ýèšH}¬,¡9zÛw°8Žý˜„K´ÿ²Xrç¶Ä÷ÔR'ÑèŠ?¯qb{&É¢ÎÎY,—ÞØ¥~y½RÔÚ$–?áXR…Øhz1ŸƒÂ±›ðxC¯š±&åÈyQ’ïþz&êþý“#Ü4¥>\ùxÅh¯9[#ÂX¢ã¿»H±=F»¢#(OˆI!ŒÜ¥ùó¿ÀÞþ^ù´Ÿ×KφD{ºtòhŠ32T¦+Ð…x>â.˜\6]˜¢ýäkÞÒ€ty>˜„ŸLó7k”Ãñ6Kº ÷%É´þä†a„Õ»±f ž‘#>Îþ‰ÌšÙõÿ-¥ñè? :¥ñDÂq`Z~žÒ‘m‡å¡••¦òáú–Ü13Ö«ÉšòŒW¼U)Æ‘zK¢Á©ÓjçoÒ(_EW•æm¬.Ïܽ¦Ù/,‰ªƒzÏ÷Æè-³¡¹Ä79ݧü¤Ôe2L4.ÿÇX´ÆâÙ¾´e bB~ÔÐ37ªÃÖ]•:?¯<ƒ×%*fD¬‰3ÉWL-k’6É8ýÃo‚—À†[Ƈ²ž²%î´FΛQKó¿!Ø owUîšü‚Ì{§2Æ;JÒ±¶å“t°/ÄOÖ) ¡ëÏG¾T7œøÈ__2ŠjÏ8 £à\g©cÞ ýÜõºUé+á’k;Œ¼ ¾OÙVÓØÕï4b§÷?–þ‚½õÁˆ£{xÆÛàÙý‰¾×{âFé!Ä奙ëk˽»W7û%-Q>mŽÎ¬Îs�Sñîí“ÖMÕhvÈêRru¾'È4xê1o=zCœj ‰õVF™ýŸ]±À¬ù†sÏz/Ù°1Y|¨:Šç!T¿RNÇ—ÎÍݽyIÄê%ÿÇ\¢8ú.'¶™Éì‹¡— ÌI1‹'Ýù9Óùéúß”QÌ6bv²Œ3ÀAqAÄÅ:~ 4£™oNÃ`ùF}í-w¸‡ä9i0ëí ç7Ó— ½|ô ÕÍw6™V®7XÊ«æ=úã8wY»¢vëÖi”ÃûÙ™fܯäk¤Ô¾DŠÒÙàpj:r‚¾B=¸~è …£}½tè «´ê#>Û½rõ·õ_|À‡ö³ëXe…7?à‘±8x›S:z‹›;ïêÅetÃ~³&‹QN^z¦….äÏoḼÑ%O\ÕhßRV˜±mmK{×ê–ôm…ùÛ׶¶»YYœ>ËÜêmU¦œÎ€Õ&˜UTfËnQè«Œ*ãºBòCç˜ck¼ÊäÚÃIË3¸.æ9šÒ¨8ûÆ°0T‘u®‘–ÌlN¯¥-6ýŸ=ûôõ‘!«Jr×VWºwoh™`¹·Ç% –7»fýæTµ†’ߤëra}Ɔ0R¦¹È+™œ>sâšöÿ5Zý«!ƒå-~}Zý€±©�zåû(ÏâÊô.æü§|n¢½í‡aíÛ‚bö³{ò‘åƒI%0l„Î4Ö]õ>sÛ¹ÙrMRDq”|úsþ’ëÝ g– »—5Y·”ê‰]u’VÕôÚ6{4”6Ýìye–pó²¸*;ËœÍVèjåœW¶Yš|4Hɾ,³F^¦-cè¹ÎqÓ º¹Ñ;æ;ޜ܄x;êΣðÑ‘XžîƒLÁYÕ>‡Ú¬ wµJºýŲ8_ƒ>GRJ{uÞïO¼ ÏgPð¤Î¤|N ¿!?)¸Kå¾~¨ wùÙú4O† û¼÷Ü”aÈœ¯xbÖ r÷îKâÐÖyïu˜“7*âñö_sÞ}èw.óó÷楋'O-1Æf{&#”’:‹ŸŸŠ-·@ùŒôûdª=ÏM,’ýZdöê²Hº9ÊĺkoZHNÒKj„{;ÔÝ.Quø¿&WBÞíýÿg‘wU6FöÔþOLLƒC¸±clþV¶ñèc×Êõ·¾å…{¦T:IßÓ‚—ÂðAÏKS„)alùЩ_ý·@Ĥ£…¶ÖÂüñ +6<ãùj>uøvçcWKB<Ó»jrø¡ô^.ß< òÛ]“KâkÆ‚êøÚÄe\üW‡N©ŠÛzXà_“˜ÖÂØ f»×„{ü_:óÚ‹‡G1ëM¶—oÜ'˜uD‡+±`SQ'V]l‘ž:C£áP%V0©M<qlRhÔ}†N‚wò›+#Ú·¸å¢í§z¢ëlþR#zËR¼C¥ ±üX^z)[ßNÉgì¼Ä·YŠø6+VWYØvÎï'äÖÖø”ªÔœuµœ¤½%„¼[ ÿêߛީ’¶x傘$Úh8žè·’¥VÄæ »¥á]q%¥¨:ÝY‰}v—Ø¡nÎq©ë¢®>ú^y¾Oô';3Òýc]é)>ÞY.3eDQOîŒO-ÉË3~ÕzD¿RZ:â õ{ˆ‚™Òßnw +ÂL +-¯…fËú¯è³¸'Û]tâ‰tÛÄÈ·šæ,‡ºA³ø"±NŸØî5ůKwjèp‰ÕGÑÛŽæ…8œ·U¦EJÓÚ¾˜–©žÜîVäj²¬òe\Bµ-[[.®¿MôRÆeÚR'v8•ƒ`ªW`ªuq28¿ßÈ°¸°iÏH»šÅ~¡<Ðrœ±=µ-eÆG\:…Aÿ5*„2ŽØž2©ÝÓ†�°®á¹Çü3ÚäÔsn‡7Å1?3àµ;A—ZX§Ò3Œ¡~NšEÊR2¨W˜¤7òK+ÃŽ3Œ|]ZQ½*iVå›Ðð6¦?ÙšÉÎYÕ¤æ8½$Gȳ*tq‚ÄÙjdÓÆt íáóÃßÿˆ‹8âRFy4CÌÔjt•Bcœ;(¸š‡2‹<õ {X¡}Ïrù…r0ÇÔ*¦E_(ôtñwùβÙ÷™è>gk6™ï”o•k¹i)Ï[Ç¿ò~¹Ï¬^[KÖ-Û4{ÇÆgo‹—z¡ËOD™îhºEcf|žCÙó] +ñ^£W›óÜU7À¦Ñ ÃZ€§#gnÿ;Ü=³ì7šYˆÔÒ)íu…=ûÅXhp?7|4‰÷¦Ùà7Mùëz¢]ŒOeÙÜ-fmTx¡0bi!üyÏÞwBJ$ ùÎÃàÅ'¥äs9™åí‹ØýŸ–íæKçOÓêx bäè¬JU)¤Sñ!½§»á¨_Ôů梌bO}ÏpuØ0gx¤XGÕ>&v¥»<Yæ¾N«ÕÑq¿óÝÞœÔIíf§Î&©õø”}²ÞŸ0I—]Î1 +*’É™hUe˜Äñ™,Aeñnr‚¾ÀþßÊm‚LE}ºnxU—¤Ö£j„+ÞîáÔWqZ/Ÿ€hݤ²þ.0äÄeY[ÜCá¸êáaøÚ'PÕØd˧èj>…dL{†$¦{ã¿P¾-Nkëâ>I2øÄ‘ì×5*$Ò,7~X&VŒ¼öH¹´)r´á*]\ª"WREIv‹ø9;:å`6œæ¥<t‡ÝÅøôèÒ @‡OS¢Æß‚Àqãòª+èú„:;Þ¯¥ãäL*b.vó ¢èvT£œžhX·‰ñ»É¨å%1‹\ãܘ]F/5>ƒ¾,-÷ÏÑ\%:re©±æ0?v0Nq&iè…1ô“ŠLMnlQ†Q¥²d³ÿüI´ín¿!ÚœB›H‰ù#÷ÃÚxmjο`|‚Öák²¨´ïùî`ø>C°ÃWÐ̹]=ÅëkVGI„Ôbé»gÅä˜\µé£/Äóð%6a¢ôxúð[LVìúWf)åÇU%ºë{ºÄz¼¸VeŠåE¥G\4ŒÛд[{6fX8’=–ü“³Ô8£û _™s:î<‘ÃGûÜðJl– ¤æÛó÷ÎWVºß*DA…¬ ›!õÔ1Çß $LñûëŸÀ)âG%p›;\M–ÇïÂp»M³¹zë€ ¶ÉW]ÙÉþ¼{ƒûkC;‘hKãý1îý†qÇLY]ÃÂka°`ä,üt½nøȽutj MáÒtÊݨ@,Œ•‡›×$/ %=pÿeXÌ[Rù Œ4ma”’Z8Å}Ðpuè‰-PVž[ɶ¿– ®€Ãð-Û4!5äü’´g20œìšf§†^Ú·"žßÕ ÿÿô•#¨ÁøX:):H2s³Ø)ËsÑr|êEµšRïDabëríu,€Q~ÒèTö#ö6v•ÇlÁoŽØyS“m5?)#ß)ÿ)ü_¶'Ø1>üÀÊkñÕMzVõufÏ×6H¥î¤D¥ü-èì° šäW7ÈT©ÞðÒtÎéŠçŸGŒ¹KœÕÝì+seæ×99åÞ_•óÚvÍ”„¨ëÚÔh3=ãkâÄ&íæâ‚´ýÅšu[Š +RvLºŸˆÍ¦ZÒ¿@¹ÃfÖ/ߓ1Y`A‹!éÕÖd¡A4Kýçeß ®N±ÉlÆÔ6V슾v`ÅêJÊÐ3Qµ£JeJ¬å¥åš¸Wym¾]¨uÙ.aÅCÀÆ£K+Årmf¢ßÒÆŒŸ°€›bt$¥Xò¼€¤r¬79m‰ ·ÑÇ'LC! L!UØ˦Úñ¹%±¿šÔ‰°˜TVc®Yä¿äFË¡ý["Wæ;žr¦ª¨*̬AÄžXûÏpÛ—ÛÀ½SÄR!ƒÅlAÑk4ê†r,U§ÉIÜ3žöîýzŒ#p +Òðô¸ƒ–ØÌ–ä„ÚT—£±'Á|l Ñ¿g³[~xÂô†¤lAËþÔÐ0‰H¶¦¬@j±Ùl^]moSZZ£?Ū¶ +Ó“÷1k¿,T¬V²‹x€FÀðY¥õ=G@C… ¿cg±¶#í®dÿ´ILßkb=ËêIMðÔ”Á§‰q©æ¼z±6¡L w'Èy!pqѸ’9冻bsS+[üTÇCb{X”œiaµ +²X²;òÒ ÄB—.ÖË~E˜ßL¤ØÍ‹±M‘^¯®a Ñ”ÜТ·ôY½bìÛUÉ¥y_¶Ê¦k$q:3¯Es(-;“„¾y¥YPÆ12#ö3¥‡úã +¢ ÁO“uò }Bme@Ø^Zæ*å¿gâĵ†û‡óÄâ[7/´O„÷¥(pc©ó97ÿ¢^ ÒJÈ5µgQ:—Á4(ûMtìÚ¨`¾¥¦*€ÔF£ž¢’¿øJšìJˆ§ú~÷»H›gõ^X˜]ABC–‚ÄÇÿs0ëµIø~@É#aaOÜX~r—Y}f+ž@ ´h¨‘Þ#V¹ït%— <À!Ùzñ1ÙR»Zm—ÆdÛT}6oƒùCÝW¹öøÉ^2Åû9‘¾y-+&opøyEvÀjz&–9eµ Œ…w"±]"ÑF‡H"qJ‡É¬‚{žW‚ +Žmg¡3Y’dJYÇ5½®]Ïåk8ÜUÌ«=(ŠôœÏI¸¹bkdÁ&ååí‹ûVÉÉZñÉ=óÕˆNnƒù[e—·9Ã6v4 wìâ#àAþ2çùå¡<b¯ ׳8Q¿†MØÕñrêÂÝÓg…P‚l +ÊÕ˜Ë$‰þÚ"‹Î–÷¼šúáE³“~™~+ñÊÀ‘Ìá‘y½Zt«áò[#/Ž@û’ýò^‘žsè:¾YY‡©Gãÿ×ú”‚1;ØêiZªªëŠg» Zj£¿¦‹noçvªUäâ(*>Ä^RäÂ#Þ€²:œGцêƱ/ØéU©ï ö³0—]Fìæ$ðã/º“”‰‰”]º#¿¨*ëV›¯64˜o×o4àãý¯_!44Üj¼Ù¨ò·7úÿi-óô;x⻟‚iAäÕÛaåö§Û/Pw\ Äùy6L %ãÃà „—òbµ�LÊé- +îœÚdŠï*ó|: +ßåVI†[oHÍÕ÷iµ’,v=ã”&áËX».Ùò@Ÿ¸[o´ëÿ9þZùòŽµ¡Ù +>ËÎá v¾’™Åuâ‚c:¾ã½cÆì¢<»z›-¤.«uu9‹Û›±ÊÀпÓ_s!¹®l‹$ƒÏ<ùäË +´ÉùÉ™ÕEÁ`vñébâ®i±þzæu�6 (Ì“æòM˜î(çQ ÁCýÂœ¯d4¶…û¼@æ ”®/9«!×ýkˆ?¦?zˆûh±°´eIrÆrôT.]k…N—˜ÎÒ™‰(3€ÌÄîE•Ò>$cg"'ñYf +ô‹èçÎF9Æ{¢ˆ;©,!Ö®}³ê‹˜?߇[=mª6rÒé7õ¤÷¾é]™tÅÝë¹€tñÜñµ‹þÜóýéAŽV´8«º4+<V¦ÞË÷&ÿâ¿Ç? +ÝÊwCÕ‡ö‚’}gªù©ã.‚†‹ñíº56ǺÕkW{]÷ŒS7|ýÆn>,õRÌ”ª…7©ý':›À*¾pI3j¦5ã_Fì{Á‚šûJ÷‚å5{90%³¯G^º âÚ©ccÆóøØËäÑÉþ±[òB¬º€<,HÍ mXÕ—,û‚+ÆöZJ/‰d$HLóØx¸ç#êä +ûhõbÖì=;-yjI~¼2®Ø§OÔçh$ùòeqž6¾–¦_ç0WÚ¶ü*V2½l6ÃÂWÆzxC›¿YP+K"¬Œo&Ãø$s)«j}EÖúÊ‚ýÛ:;ë§/Îõ&µ&ĉ×&æY’8qɇ9a|}ºƒú÷_<úgò¨°î³ˆQ¡¹¿ÇèÊ*q,÷UeΞîÈ1LIxXÔ¶(-7öƒª”5Mø*Q˜¢«ñÊ5b‹Àœ“jô5Xhd47¤×øâ½b‰]œ˜Yý*¿¾NÍá‚ †íé!‹àv®ŽóS‹mj&Ìû³³‘—&¿%Èåð’±åbêí+iL¥—æ]‹)†³Í‘öÓ¶ùlV‹³À“ÆœS~À[ +`°´ÝôäeÿƒFgà"iüTɯ¬8›ñ7ŒIì.5„™Æ‡Xä+Л&wæGrÔ>¿é¾`·é7žAä*3ñEYìÔT,Ê/J²ôpÑ;BnV<cIÓv‰!Øže;ÕXrlGó™3þž±'üõg:Û[Njí¨×-/ËÞPY™»qEEmõª +ߦŠÊÜ «ËêÓš[)m–”ø®—“³nc�Õ½Ï\ÿDÂYÅò*e·E*ãZyÿýºSnþ¥ÿõú>”²=ú¿89K}œ›¥H°¯Û±ag÷òLiãÐ*±—Ë·Ÿ§Ô7žý¨ª2Ù:ncØãÞ·¿-¡bPN™\€,B ä~ë_”ü\{öò鎨ôv”8`¡"D[fÐÎSd†¡Øû|ÙÍŠÊWßÄ@Ù_øýZ9À]£ÜçË*ÂÚÊ +%Û…E=&ïÑî™E6©ÔéI]ù…¶8©Ã%–²m—y¼Ëlöaï0[—üÇL` ˜*4ýÑlBp˜¦¤åCð³SâÕ”1Ò¿ó…m²Y‘øˆ)±ãìÒEcî©Å!—ôAUá¤5äèÐÓ;Ûz$Ò&f[ÏÎÓ¡Ñä5¤ðª 9."ñCé‘ÜÝ·–D^\òKø›_2ÒRyMçYñ©¢€–û¬¼2¦¨—Ù…òv’±œ4sºF@õ´4Ï E¾úrÕj×òÈÉ%é_†SŽÅ(’Ò¬Yë߇…ÿC¢=9¾‘*½û#&:äŸà üžF¿›î…GV„‚NvʬTߘ„§+á@åº[‚ÖíØ]•ßÌdöÆÐK˜ãG‰Ê¶öÔÏDëLj°ë²f}F“>¤—Ä`Ð¥ª&.‡…-cÊm‰ZNdilœ‚–…ß×R™å*Vß¿&=›òá»zbØ_×f뉬ˆí!D䉰€-Àgà{�^pš£Áˆ¬/ý)ùÒŸÁC/ý%|_ùp¤Ôç +gæI\Oâv4†ý +›9ž…Î ñ.•çp<‡³ñœÒ×àûÊɧDàÒx%7È+9;¯äÞøô>’û +žùÁñ\#¼çz.(}a®WNî5µ"®þ\'Ó¢`ÞZYk³ÄîÀ¿à²'=£ÜZ«_ƒ)¾RTnn])k©+-±ÁÚ/èk£¯Å—ÛR×B‹A’Rþ…¯ÛÝXù ¸°Ù0ܸ˜ \ç4È`Z¶M†Õ32ŸÎ‡}}fkëTîZËcïr¹ña `9·„ÚÂE2—%þÈÇW?„yæ𢉳fÒŽ†ì©Mr<k„ù¾§ì�^«wçgt¬Þ›‰2N' µžë€µJâ]¥øŠ¯3r Vê7"ù .L¢ÝŒ.ÈP`EËÞ0 †&ÙË%¨ž@éô OìäþµY@Íuþ\‡Ü$§/nácîÃÀ«r¥ Ê„t�: nk{Þø[•Ž˜ø_„“T°ü²#ÌnàY=Šñ÷z1ÓÈßÖ3ü +Gf‰hQË<¢z0@ÝŠÇgŒoóo#V«_þsúÿüUXHÐF#EÕ½‹3d~l k©tW¨êˆl&‰"d+sQ™·à¦¿GI�rò}Ýa¸® EEëƒø&.“tþÏÍ&…Ζ®ÜéQVO¡°IWý Žm9£Ñz`Ü7ñÁæÁ´‹å‹ß¦°D¤£5ËÍÀÊáÌF6˜,É™®8@..÷¿çZH=)¦TöÈšâ2’µ;þ TsÛÐÛmÚ�˜B†BIݪlQyRjK–nF6½î¥_Ïýÿç€^Y>�—ÕŸÏBN–ñœäK€+»Iü%ßɆ{kàÈ~Ž<È¢¬¶RWOgÀÁEŽH¡c¯f®a“A+/é‹F�é‰`rtÕÍ„ª?Tšö4Ч™€é¨–:!”`¿k2¦×M+W?>Ç®ÿápcuëJ;¨¶ +ùz³ã%½/|\÷ÿ/HiI2&E«c‘ƒPðºC]ϧæÃ,=*ç’ª ƒ×µÆ„AÃ/645nyÕ|Ë.®®@<«O-))œ²ßO‚�^+²w±®\ý‚øP�‘À³áæzh¤*Ò :_vĖ¥¹ F±¢n¥Ô…ºl±„Ÿæ]Øgõ=ÏÇýzêëªthu®Ë3€f|ñ'½"c\©Ëé8s!ÁÒr[ó®v°…ô-ëî�¾Ø +„8<D‡¨bÖÉe4áp+¥ÐØ$‰ÐIO^Jm–ö=¹“Ú¥&3M1ï§ö.€T¼Ô¢‘Ð…¾ñ4òhƒëý ½ÉÍabÞÜ—MW¨Måׂ-ò�ÜM€%Çb”AÜÙŸšù:ß,€ºIçû ‘wD©ŒÂÇ´´fø1$[}TGñSÏ_·¨y–›[B"aŠ±ºÕúqéòèu,[S–WÀsæØiléT3§<5”6ÔEáÍ.á±îËv{§”žÆ.ö!±Ê T¢™êjeîÈ`œVŒ +|Öß�û¡&¨ï�Gðî°Õ!´CÜaª™Ñ‹².¨7”šÿ¥" ¶ù¤¬47Ä<b‹ÝK/Ð2Wtº¢V"21‘ýq²$gkÅæuÛöƒ9]¶ÄW®"fA¶†‹úx‹².³Üdòä;°µ|£]Ò^@ æÂ`_Jc]³‰¤Â#‰åÚúÌÒ™õ–*L¼nyƒÇ„A•w㽌«%ž˜Â2 WÒLœÀ³|@?g2móJ Äó—$O:(°£…BÄ–²êGü½ qÕ_™b¤9ùÒ&‹çTëªæ£Õ8±�•V)gƒ[iÈc!Ü{4wÆš©+©ª4Ì¡R3}tŠÖ(ŦnŒ©x…*Šë*Ô>É?š1œïœ¿ƒup¬X.“Nt'£§(ý¬”å�µŸ2ÜÓ–{7€Nù'9{VÍœ¸l£"DáKZY»×q¬± -@bp5àßï‚¢&ùæøÂ8jX=ÔFÕ9¬®Ç¬€ÛnJ™K12SD.[†uä½ä¼®[#©Bê–MYí²Ëªš=½$9ç+^NIÜ…’¦P.É’âúxèëÊ]Ä�B:’ùæcÌD¯¦I?I²¼8co,Ÿ7òî×�¸¶3 졘NÏ]5“PDyð,&Ø‚Ü…šýÙî-DëBS< εlßÇrÌ¥.ËÔ†ô+Çè¼í +u‹çFç–LÒ¹)Po±-±ž»=šŒlC\ePœ‡°-{BQÙ61ßý~9ï+Ž^ÍŒnÊcD•2À±ªí@ÙaVZNOÀ1ÛRë@eÀW °B<xî¦i6ÔÈ™¬þÉ ¶ÇMýòEÛÐÊsµO“å·ðufÄCõfØ;é¥BÌQ`6š�£½W2¤ŸÎI¢[o£€üAo`J ÖÑU3d4Òa” ÝEôg9¿îì Ã0H÷h¼æPØä²w¡²ÿ`jÜ›×ÉG«bF·× ¦¬°^Òy®S¸ëí,ÙÁøû°9Iˆ)>‹š-‰2þ‘y¸¥nèsÐèÙÚüáv½z‡ ðK¤áVTºv6AÇ\¦ŠÎµ€Ãص¶ xB¨ >ËG¯çn:&§Ü ЃN*lC°xŠÒhœ?l¾ûµ>ž ]Ž"®Èw/º=‚ªÖ³ƒìv¢�µs/äÜ«¸²¥«&m!Z”çy‹¿¦l×O«Y’÷»X]iŒ†Ž…éPAˆ&É€'¹<vûr>A™½±Þ€ÂKAƒª!ßr³´*K07ú˜HÛMØ؉*� Zæk€BUtÞ«DM•`ª +y0 %]³ ì±ÌW9µAÂA²¾mWÅà”€6–í4Ê6KO7Íó¤«Æ0›cßBÊu1‚¨Ã¶qHBìÎÛ½“†¦¢`‘櫨Ü%ª®ÖIðó#âOU59îŽF]áŠøu>µº¨Lí¦{/ ê-é±-rÑÑýn#u•Æ9åòHǸZ´¡ï!Ô1º\äp!9W})ŸCëÓ]]/OFÀŒ‘–Oø%Oâ9r[‚Í»ØÙ©{€lÑuÊk»�´ìòC+DñJ..+$È ÐŠ™Î¸WUGÁÃ;U½ÓXÝUçê‹ÅXŸ -e.:‚Å©{œdŽìtÍȆûÎèá]P/¦¥?Ól‡ Š¤Ã8³„äC™”³b˜î9(R0Õé€*f™\†”o.9t3Þ®yË#æí~Wï¼N¾˜~cpäbyœ8ŠØOD�dkÒ¼›Ö÷ ‘[‘B(ŠQÏ]sd!sîü¬›)¶P$]ØnÞO¹wÄU¯JS +Á!˜8ÑÔΔŸË8"ìךã!HxÐÇ£å+0²™6¬Ö³Ÿþ:Aj‚áZë’Ð/;tÞÞŸa=é‡×UyÜþÃäw{็v©J�ÞVç¹ iNå¢sœÍ’-ôÀeZP.™[¶«e3DÌšaB¦èÆbgPç Ãï6ªkuy”Œ`“Cõ¢'Z—"£/¬‘³Îzõ-W_äs¬äc}ë˜ÓÙ“¥ÌâIkM“ $œ€40)-¥¥C1Ó»…pQà4I$1ŠZ_û”;€–MoÅsž WFÜâ´:Çë¹°·_0É41a€ ™ˆÄdý„4ß©8% +²]”ƒB¾ü4q[�pà ÚT‘Y./¿°®H;\¶øiض�¨£‰šáñã¡ÄÀ)i“šªÍôcíŒPæ&ÖPàm¼ífpÅ>ÛÞh‚ÉŸ§°L²‰¨ÕTûf iB ®Þ¥1 ʈ]hÃÄúVÝ@ýæu¾Ùþ¶w™hST’U žâŒaÒK ž;»íÈ®@é-tu¬SÀ?¨}õ%ˆQð¹&Ó;e ² ÜÄÑ9›$ +þÒ(“ÓÃÕS’ggÍ“÷ÌÛLÕ’^-ii0¥9¯2Ňv‹¤ZR¦0 ¦dp$L +ƒ@VÆþž6º;;šp¸ +D§Ïy¬÷”g¡;”åS4 x¥EÏš¢ËÁe¤•ÿbY0²•ÂC¯B0öв…Èç{&4? AŒá¨woûÎèbøÃÞOƒ +$@jXw/U{ТšêÝœÂð©‚6‘ä'p±jR’Å``wÝ$Iõ§®1__ hÅùÝÓàµ&-SO~:ÆÈ$Ò£pÂ.òX?Ö)Ãf·¢üz³8mBg%5#›' ¦®!%XÕlÐC†´“8i‹ÔÈuBq³R<ËwÆ–`¼°-a?%éçbI¦¨âçOå¸ýØD’³ÍÝò{]¬®P ´+øŦXQ]]¹U$?‰`’ˆtºö"Gw¹Kæ±nW×P®kf‚jæJ,‰¥s]•rÌF:ë©nô9Ñо_ÿÖéy>œ^<½°9ž÷+Yc5.„±VË÷}˜†`Å°×M‘tå¼Hè£ÜOƒž=Rmoˆ‡ª±¼çàºåÜžà“–ŽdQ:#‘ü,«¯½êIA#ɬڑ:jBúû ÞåÕjÊJ¬3@šÒiî*`ûà²Vfÿà>�Fˆ’ÆG(0ƒZœµ>(ݤ&¼Þ§Iû{Zf—ªØÝodÒ9ÛU/RùÕýôÎ$AGÄ롾A‘œ8’\×’º{‚n¶¯Ñ8åTCvm¿D«ÇÕ(œ½¿Ý©ð³–þìœ8{*ÑËÔe’]tÀ¶…HEÞéKÒAñrò[Á¦%Ú»q‚ËJío�€;lÄÚ"Ui0æ]'ðå ܘŽ”D¤„â€ãbQ5îÅ_’ßѬø«¸ÁÅe¥Of;#±ëpÎEv�Kp#E¾â2%@}LÄ9ð]5“¡KÇ’LÏõyÀEyNjkïÝîK +æwHpýö—#ð.á€Fjjþc”Å}Õ÷Bm$‘³ƒSR÷¸Ë†´gÛ÷Rf^ÆÚx¤Ðlý&âm‘z=x^J½¥ž~EXÍÜéP3†\ˆ^ºÔ1k¾¬YH˜¯Å1ŠœÎ”�¶+rædgefxS)v³$ƒ$š]Ù±ïµËÉÙâsÍÐñl=¾ÇÈŸzøûËÎU~|@ávŸ=F6K Ÿ„Û¹¢)‚lqSÜÓP–Ž]/Õ“è™à’l › +í6ÄsîEŠl÷¢mj‹T¤¹†©˜ç=IÑ7€gC‡$«Ã‹·¬-!땈;jr©ë{€nÀBEbKPðiH‚¹•:;¶È$Že;b +MJÏé(5évø•Ä¡|õòÀ Üí§Ü~f˜¦EsÁxcaE©ï@–ƒÕø«à-R.U¬_R3‚%z¹¶£ItôpP‚¤¬-<÷t]¨˜áY·Æf¸—é2·‹]}¢!ŽÙʇZ¬å“ [•ØGÄLÏ\] lf›ÄÏ0�º»IBèøÏZ)M^Fý�H;6s¥d,ÂtõH¯8A¤‰oiʾðzÚ +’Å}L1ö-(Vž/£ôøéd{Ÿ¨$TÞA•-µ$°î»�3Uá*|ÓQïùËJ§ÊŒùv[ÔK‚wŒ‰N àȯ£‚‰Û@iÿ@ü®3àZq" r{VMÿh‘ºzן¦áo$KîFìvzÒ½Š=ÇŽ¡Ø7Ì +ècUP¥AV¢*åÚ©N�§]„)ܨ(éb‹« G59¬wú9,Â?œBâJn²”íf7§ãÁ6æÐðð-»ØAßlÀ~yÝ·”…òaÙí°»lùû£þë )b¤y´µ[ªÈ·ŸÖín +>ÓÂÖþ¿zE›ß>tÆƧžÄLdµZô"ø~rA¨r8 »c’ÇÁ„zdk SùzKY÷BíoÙl£À^q‹He{Lo(®mgS™‚ÙH+c6h…4c„/ +'£¡#ŘP_}åèp÷öðÒŽ87@dl©³Œ(käð!qÐ)^†‡‡N6¨ììŠB³týS—NÀÞâW‘RhGL²„*?.à1G% +I^ü¨Ù²¬¶2-¤;Vˆ@ˆ‚ÓéA¨WÂX‰—èMã>k“e‘üªó/<§ãg_þøWWy•—ö8áÈ©åe£¦è!*ÍÑ"ƒÍ¾õÄŒÏЖìIéwrÄgœÙÆ‚é}’1Iô&f©AÖ“‘¸ÆÌ{C¾nÁé ;Ý–Hè +nq=¡suî—åè™î«ò2¸ú&pm\wŽ"Èä.¤dé†âAî-„b,dPßA;ê7Xšf‘€ÇÞÞDÓÙù¯lM +ñØP<¯Ð~°Ã|™^wB4MV)`Æo°Ã'WÞã_Ê·Ç&T÷ú‹-d€ÇLjϵ± *ÖGÅ`2Rg¦r¢+Ú;õ äõÈddÞv׶ ÓUÇ°IÒ"ÔèÊ™N2c»æ¡˜ +€ÅRh@}8WŒPM<¾9‚‹ŠéÄI4]R–4¦¡ gŽÄ–RM,ªÝSªU ‚í¨ñä+†¼vNá²s +IË_D3D¨ÞÁ!Xù Qç~úm&zš _”B{ȉ'”ùð–Ôˆ™ÄŠf§‰šå[í-„¿FACFæ¡ xÜóŽ’óàš‚žúÝÖ:];š7?nžp \ÌIò’ØDò…è(ø:öÔáDØbÃwJ¾j°•Ñ껦zÙ-Ÿ‚Ø`dÛ^GçÝîËZ`*§\¥ ßÈ:k¶ôNÑa¶ÊÍ‹|¤×ÉõUÝš·À J³xa#¬nFºŸï.©ûuPÆå>Ì(Ü¡%“BΗMUs9ÁEbNJ9ýœÝœ'ñ;¤>»€¿r,'<ö—¾uˆhºí>Š3-¸oÔ�£\v¨?#MÆèiµ›ÒÞ1©ºNL„ÁÇ¥¨>3KPPAy� €/,¥‹z3ã]•UN±á)—àB“ÂWòÏ*åtÀwIì±DtÅâ¦ÍXð +sÞ¥ÖÈEó9RJ˳hîdŠÄGÂ]Yè!ÇžrØq1’µœ–eY8roLÞá2YÇÎj’ã_›¦.vÕ€ãÀZ‚œäû‹%DÓ}þÏÞšž½ù‚ˆ×ÛRzZ€c +íž8¤I¦ãÏ4ÂëZ`å<˜¡®¬/ЇðâKäm‹2n¯×ÛißË?cùl,퓘…ÉBiøv$]ËÉüÌsd¢´²¼K{yKAmJŽ1m‰]sã:¯˜×žé»ž-–¢$¢Òý¥ ™DOörkhr4X¢¦žVg±iÇ&…5ÃÃÒ4š°?yß)ƒl¨>yŽEÜBdŒìå<Ò²ùìZ<Ǹoá¶ÿàŽ%Yc2þÚEfà¼Dme‰§\ð^]®™"%çt–¬ÐBÃ6“ê“â*Ã\¡ZrÒŽ»†—'j5çLjŽx’7¥Þ´äö,œÔ!¨ºÃJ‹ççã~>ÙèFIø™Œsã;0óï’Ê“²f`2Õd–‹LtδÅ`…&Ñ €£Ñ”[E“Mv¤DóÙ‘kQ+ñ˜éªš%‰$0ê8�½ˆÜ÷''™<<£^))�$×zY{ˆ4…Ëš4¿±ãˆ ò†‹rHQ‹fÔÏBæÖgìk ûÅmÈhò´¢OD‡ÞO¤¬!ȶ͹ïÈÓ‘¶¨epöœ”oí©<3ç¯à•Ùd×dönøß]’Îöä³B<g3ÜxÒHH1àˆ~&T(nHí¡L4êTfT+¤»0 c3!‘ðò¸ T1½*z_-QɼؿÇ6f“½Ÿ^zœ˜é‰("ô VÞØAÆO©+W0T†£²ûì‘Þ¹Ap³¨ÑÔ\óŒ,ÉŒbN~æh2ÙO¯¼Fvk˜‡y‰$Q” AÓº·^ãûØmœ}Â’øñ:©\ç]3„4YUhª”}l†‘¶Ý;\ÁrøL”CTu•/1m‹i™ä¸ªi°ú4¶NØDÉɆð’âÞžB˜ˆ£È-ž¤ ª?º®œé@6 þ¥aôy¨Ÿ“Q¤~F®×<¯ˆ +c,%é—a6NÁq†`ƒò@é‘ö6£È +%Ã’±ýZ Ö_c0<g[’t™EóE#n¶ÆÈŒrÓU.*#ã¬õ†E5®Aî°„dV[aÙªK.5”c{Ð)‰šö~´ÿ5aÓƒØ?žF@ Õ˜—Ç!îë‡pÑëPV-5) &Ûò\(ÒDcñt˜!¸Õ~ƒ¢FÀ`ÃGÛÆûð”¹,j§‹KÂ[¹cBffÍ cl§™3DåÈ%uˆI½±qf³ÞâU›àBëæ¨!))YG@Ÿ#?ðÌõ&/k.nÐÁ1 O™¯ <Ùºåšÿ¹Xlý¬àé|1?Ò¸JMçfÝ€³ƒ8úiËÞ#U,¤i—X\šŸù[¿,G…%có¾ê/%.87äÙökÛò×Èš ›É™�D=d$”¥J¤¦9óZC2NKÁœcüµÂ·Óo–ߦn7OµèàE +¾« íSÓä7!b9üªK9³G•zGˆÐ¬}Á:½ˆ1œ‹¿‹š�œÝ®A}9»Ú(^úbõ\TŒ±Qv¡}¨ý¦ü–o;¡*¾o¸$üôÁŠL\ Ü"@Êv€¶ù}ßÒ½{ΈhdM‰È·P דŗ�>äA·‡Ow¢m—ü ý–ß¹McYN^–èn¡ÊùEx”³JPÔ3¿?;Ï+¡]>ÏŽúŠ Ðæ{‚h‰‘N³UEÛïw›u–&ÿ0x´2Iùñ›.—l$E_{–$“y(þ ˜f.ûàEes…©jyÜii/ù‰_¤(÷Eà©‘k¯â’§+È{‚üÜ?¯g²À|f]ý”¯BDåN€Aç?QdLŒÍ”Cã<•QÿÇ2mrRÁ·°úÀP¨ƒT j2¤Ñá6õÅ‘ßAXâôª +ß7{f4¨kÔG“™8E&U†•<™ÿ‡}ÛlL$h¤¤põ¸ zwØnN?:ÏàhZÇ{[ÖCHR®U=¥‡%¨89*ßõoî×ÅÜëøîþ +gO&o§¿…!:ƒ«6Šþ¦€=ÅA±{¡á¾D¹G:¬ú,.³©©Ø4ùbŒƒ‘à8y›`*lw+^%CÜ +‹¦²·—ã°«këb½L©HϪzŸ‡¸ º¶úÊFŒŽG`Ë»Ëà!_Ù©^\È’5ÉX•ã}½?‰¹\„ÄÂø„ÍWF0ý™† ¨qN*»öë+·§ÒNRSüüBX›ÞT"5×,d~òŠÞÐUßjnF"µ ’ã—´¡þᩈš8it˜»žõ›Ùlrµ«Ž°àx#ûdz[€<z3£uC#ô¨yÓ +ËY9«JwR‡‹ìXD]°Û$jÐ]\aM9M2RžÜ¹Êu5ÆÔ‰I1楫~RUË1_~ ä ¡XvÐ)<\´´\óy‚P«KÇl¤O¹É"š«<Ï÷ªÿ¾ìÝ¿|6ªÍ3 {ˆ>í£Š}¶ä >™»`Å…¢ÕT1V²CB8´N†!&$ä`û°õîÚ|U�dƘk‰àÚ.¶äì®u]ÞîÂ*æF'5C™™ +ž æ-¾†ÖÚ½Ö¤uÕ%f]Î. ž®uøA��Sdõ~‡!]6^‘‹K¼Uâ'QdÊWÌÕöWψ)ëÿBÒ)ï* +ì&ØBÙ‰uÕY=eñíg™˜1Ü[h¼g©²/ÁC|H÷hÇÞ<¥ØŒ• cñ7dF+ÖâMÉ“ðN/…¬Œ…¹ XÄØ× ¨¢2²æ¥Mø^¦Á�ö/½Ý‹.½ŽÝ”Á Wû‚ù„ñÞKçQ½‰Ü/„ljD±'ÅËDÝ”kXHa®}ËbR1¡šÊë`o´@¨‚´À¨IKo?A‹« +Ô°1ÕqHª�Ææ:Æ!¡gyÑÏ×T½ËÅ—šÉPŽ“0r wêMÛpÌþÅ££�¾$êrOÍ—ž¬†wÄ]•’’`u=~¾_ÕAõ%ʽÜe‰Ú¡æàÿzU¯~ö‰¶Ê�ç×QÀVø8ËÆ܈auaŠôÖEåg¾áXž]óDA&ºÐSRíÙÿÂ@H—Ü;vÄÓ‚§·žÞ´Lt]ˆ€•Ê÷ãµS1‹ðÛOI4±‹ï†!Ã~!ˆRFžÉíDuV:åWÎ\iðKÊGƒl‹ b\ ±Pàn†¹FEU†¤ÎŠß ¯?^;È«y]•j¿Û6þÌ6ˆåƒe ¥ã:ö4Šuк²6Þcï¿-‚‡^.Èö‡Ÿ;Í ÔÊqºl0Ådà~Ö©œÔ“ú¼ìßòr…B;ß»mþ )}ù•n@ñ‰Ñqn€aM0D6:„±h.ãÒãák–,ñ²ÇAï…ž¹ž/';ªD¶g»$ª°@ëÅOþïüË·43²‡æAæ0c>37'9êš>§N¬bVËçûup;·%º¹“1eE7gXª©h×5ô&į¾š“ßÐWÿÜ]]À|¼ßšªt¹Ê¿^ô3öÿž‰j‘ØgßÎTá;²=z @¼ðQ~|Á[ên³ÑÚÅ[¾T3W]ªUnG7©ÆãO¼T‚ýá—çg'G»÷¯_:=jkALInþŸŸhaU»É} –ß·œø˜´9Å‘¢1àZšö +nDŠ·µ!gÜåºü´=küróqƒ;j#ÕÚ¸æ'ÞGeJp½`HºÕŽ@\(Ô‚Ÿ�¿¼§õ6¹74œ'LYq×ãÆ—úV³ã¬ðóÒO¨ÂfN:<Àé’”õÛ±)&ÓÙÃ?èm7’Û:> +¤þ%®¹ÂO¦¥Ûdûôúmɦ„€Rã)”¬Öº‚²aÛ +Œì+Ö˜%ñ2ŽÖÚ` ø]$2„ +Y±_Žë PZwÔ"ÿÝùc¥'&ÿ1оxoןo'¿Ø'=ÿ:S³í>@�þË—~ùÀ9>Ÿm¿²¾¬0€@ÝûÃÍjŽi-¡ªý8u·þ Z>gFµSAÒ3¿ÇmªL( dåX¯Åj žªÝ&o8Š—q�0p@‡Å&hÈ{ª}$5©þ–»,°ý-¤^ZwÂL_VV0F͆ˆ”ñßÂcNÃs¡ÅÀªhä…`:øŸhzµ +�KÉóMóÇí([DtÂÛrìê…WJƒlã‘,Dá·z +4#ØyMÐ0Y#¬šÕG[¾&°–G.Üô¤…S«0jS CâÊÄ*zI²¾ (Nq×⤕F–'ˆµ!]HBAÎ8’´âf^Ø1ȀܸE&©S¢¼ J?¦?Åû›´áHƒÐø™¬Õãùž4àågÂØHœ&Î*¿L3hñµ/S¹@êù0+£¹µ¨+¾I>žð³Èó¹™(b +I³ÍW!ûÆé!¢$ —È Ä—FZ¹©šˆ¸RÄ×ChÆP¡„e”V +q‰b9â©zÿ J*¡èe•V5rÛt¢E^kQ+…¨x¤mÙt›;cúу‘âO榕–¸ÜLï[àð'¬ ¯lM7GÌhÒXm%wI~„±ßzuR²|‚�ÝpbÉfޣ̨ƒ»Y�߇=þ' ÿñ‘Bÿ>+<ÜGâDG£áÁgÞ7¡ÔùUÌüÚMЩQ½ÝP* +JJ¨Üj›ºùuªŒgê”l“ZÕnq££ 6è¢Bÿ庵ë’HN®^ãº\*2ÕüZÉUÓ5ÖªÔ"ÐnÊ)RqÌáh-Uk$·‘BÃ9qT¶Z]ju«V ”_ÛœõªÔ²ÉÖl²C3™ÖÂgUd”qîœÄ¬P6ëFè½.äT&}jc¥t¥(J~OÂ…²$»TǤµÉ.2ÿd™ÇÀzrl!¶Ï••ç 0Šeä†kªìQm¯ùxøj|O¨Öu7Ý""&!uÛwÝ{„Xý£rßõY`Ÿýâý¬^ëÔ{¢ÁSz‰’$ûQ +`ut“6Ö³Î|¨ÝÚç‘êणÒOy¹}ãôð€X¿öÆË6Á$½&Ú Ï9~‘+ÏùÐ¥@¿A“ °YO§ÄON*uÞk¬!çŠa«ŸdЃI—>§}ô›ß…HsÉ4±ˆvÁÚ/ÛF8A™ L…Tc;ä Rí°ÓYç\qØGs9ˆ©ÎȬ>±4c„úÕ[Ç¡X˜©´9ÁqL7l–™f›¢ÜwŒ Éœ™+s',á‰HdÈæxæ3s™}ákŸwÞ½Ü“+“>ñ*6~“j¥US4úªq€väm3s["F‹±ü]rj£L'ˆc ¼âC=Ø%¶ +ݽ†ËCßd,} +·V•ÁÊ#XDp(SyÃh_«û¸–6àÆ7&3H×w/8@ðšýöÓ¾ŒŸz�›?…Ô5X ΋nd®øÎyÀÎTOe•4‘Lèý±ÆlþR,î<Xbˆa¢"óc€å±Q¦ïV°ßLÿ¼cjؤßIgìÁŸrmXVÇ>¶ «„ oBí±³¯ú,½xÁæ<&þà'ìš °l ��� \ No newline at end of file diff --git a/core/themes/olivero/fonts/lora/lora-v14-latin-italic.woff b/core/themes/olivero/fonts/lora/lora-v14-latin-italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..8d77461318d683e3c069ad7f62b003cc58d20d9c --- /dev/null +++ b/core/themes/olivero/fonts/lora/lora-v14-latin-italic.woff @@ -0,0 +1,116 @@ +wOFF�����y€�����ïÔ����������������������GDEF��€���_���Ž:HGPOS��à��R��3æî¾sGSUB��4����"Íy²¢OS/2��@���P���`e˜8cmap����ž��l<q+cvt ��0���8���Š +OÖfpgm��h��F�� mAŽ|gasp��°���������glyf��¸��RÇ��›êØDzhead��q€���6���6 .(hhea��q¸���!���$qhmtx��qÜ��(��˜Ñ‰Žloca��t��Î��Î0e¦maxp��uÔ��� ��� z1name��uô�� ��,áFþpost��w���à��¼¥—øÂprep��xà���Ÿ���±Zï,¬xÚ ÄB°Ýñ$TD$@IHH)‚$ÑïwŒ)4€–¶ŽÒDéFééç¡Q›ä©Yž[äe”•uÞDÙFÙÙçƒc>9ç‹k¾¹ç‡g~yçO”¯ŸúØ» +ƒ�xÚ\”tdM…¿÷úg~Û¶mÛ¶m›®m{Ö¶mÛVìäx{ïy'ÉÌÙ¹§:Ýuïíª®$ƒDyˆ÷0<öÌ+œòñŸ?}Ãß|øËw\ƒ`-Re쌽‹ùúÓŸ¾ã”Ì”ÇgƒÞ!aEÔs•yË÷^Á(–Pæœà\æ<ã¼æ|átvÆ8Ëœ Î6÷÷2÷÷+·©ÛßàîrKÌYæó’ùÆüf’&_hiÚ›!f”™`™-fŸ)0U8ºóþå?þ'IÙäKÍiMÚÒnô¤}èG0ˆC¡>F3†±Œc<˜ÂLf1—¥,c AÚØRºÙúØeô·%´;HÙ""4çJÚÚ +1¥bjÄ”ˆ©a¨b¦c–%,Õ™R•HU$UT…R”Õ+* ¨BµØõ·ï#¥Ÿ’œ(ïIb+èe«¤(¢RŠRÊÑÞ•*,f3žÖMõ|±ßEŒ¤\9œNs»u Wl‘j9Íï`’-WUê¢Ôg•TUõ÷ëž½~'>#o˜åbJÅìöU·ëUánñ$øÇŽå_»Šÿìvþ·KÅO!Ë.!ÛN"Ç'×Î"OÑÓþ«7õb¼íM@Žýrì–£@ªYRUb¤iÎÅX…nÖ‹“š^¶úÈQgíT)Zú·¤TmŒöcãlÿÖÕv.!9vÒMÙ>Ê×”F*FÛl–j>A±;ÄêïAQÏŠ©Æ³¿’æßçÈT¢ª_Ì¿êá?eÿ·UR\®"OýöÓ\i¦†þZê”RÄäÛ-ßaùªä+“o|;ÉáyÉ[XïÝçW)’ªVª}RIQ"…¦¯ú*UjW7VÙGJ™ *R…]òj:så«!%«ùlÔ<Ö7î6àhn¿hÕ\üµ½é£.ÏH»FS(õu͵& ã©BÿùÝU«Â¼úWÔg–â*S£ÝÕ©õ+îc¼BwØ:'傶#L¤ÎøØryÒ§êLÎWžÊiõÇ+8N·BPÕwì'ĉõ¾ŠŒ¬+üCÈ!�ŽNQi AÿàÕëÂÊFç +7.7r«twr—´ò¸\Oò¬ÖwùD«<bO8î’sö\qÜ•š¯sžœÐÜiš ïgŸ{Š{ŠwMÜ—ÜŽn*5æ:óélfe™ú%¯¥7Ë[ãU\ÕˆWû‚ŸSÁTè„ÐC™ˆÜz%ÔYXZ¹¯¡šðsᦱi„»Ç6…W»"áLHýMdXdMô²è+ÑÖÑ!˜ˆ]ûÀGgÝ°)V;¿%~_üø_ñ¦ñÎññ]‰·%^K<£ø&ñW¢kbXbIb]¢ä8M˜1Ä€ãxoð)/ñ9òÿ]ý3…_é&üFzñ;}„¿è'üÍ�á ÿ2TøÏÿÿŸ1Œ'ÛÿæÎg«iz”óº€m,IÂ�\Ã:öBtÑ2ón’ã»AÁ2“`™iHL'Ö²`™™™™™i˜9`&¦H¾O/ï˜OÒŸö«.ø«º-âä£Ñê5Û)»êàƒœbÛ+Nš_ÖK1׎>Jã÷±zðã©pœ^/Ç™zñ¿/ôûb'æ%öã‚úÒhŽFýÕÆâ}ØÎs‡sé\³ói]WßwÙw÷Ú%÷4NŽ1õ.VË¢‰U¦@r‡Vž®Wp[¿¨×â8N…),ߎ™ÎÊY*6×>›gW‹Ùy1QÌ~•ÛÅN~KÜ'â~•}§Çdö|å{¬øµhäÿ c§¼§G3û]á—õ>¾UCNGÉXdÕ(¥Ñ«ªQN«Ñ/d}±˜—ÐYà{1ÿEþ»yñZ㵗ׯ½¼ñ2ÌË0/½<xbÙÍ,–°X¢L{@ì.ÚÚUڛŢ]o¹x¯»U¡5šäò²šõÉç 1ª,Ë)Û««JÊò=3E·â1OŒs1¸ÒìUpmrÃ÷¨öò¨&uúKE–iu¶cTÀ¿?åߟ¬l/‹uÑ$R¦˜ÉBòÐÊïÁ¼vê‘_ˆu§À©Ð@Záw÷Zœ§Ã´/&»Ä¸@~þo×oe}6€M5a3¯ùpmìhíï“Ãy%ˆû4³ü–åNíÒ©=<¼Íj@—nbõ«çÓ›ýû¤S½&â0o¤}õÑ\¯¤Ýɨ»ýJk"›2ÞÝjQµ;ÕLùÉd14ªÈ×$ȶ ~ïc¼ãOâ„ؙ͗ê×M³4±°+hhÒ*—iõÑ*ªŸÆ]iÝGÄžÑnOwà3Ó»b–så0¯þßSãD]}¾g{wœKv^ìc•—Zå%rþ4®åù:¶7Ö×Èýñ¸Ó í} ÛÙ$ÛUí›xLÍž€'ñ|V¼ç"Ÿ87¾Äê+ßmØÜ…ÍîØì’°Áä¯XÌÀ¢!eñuÊb+°ø‹mX¬Ãâ,Öbq[Êâ`,vÂâ,~ÄâG,z1؃µôc°w8hv`0+Ƨ]»S¤-"mHr½Åüý=‚Ùc柀'yú*ÆÉtŒ]Ñh?5ã±+he;YüRef꧹ƣtÍ1‘×}rk–Ûd¹SÈN•çiõWãt8³þ¨|ßÃàUk¶\羦sß´vϳÚ59w¶éA‡xdYdY`Q`±EÅ:Uþ[Å9Hìƒiwê )z¸G¿¥‡?ŠæËïZv×éÛ[åíäÔç~U~Ðiù,Ùs¾¿26ÙŸ[£“Œq +d!yHVëN¼Ga0-Óÿ�ʼ—yÿ6Ý)kxïâ½Ìûï¥hQ͵bì˜YÈ©fZIŠ_[±_¨ð™þ¶©²3ÿc¼iN0"ÙItOñ}ª~?SÄþœÜ¸÷à>ü¦@r‡]Í[;üûñïÂÿ;¯”TqéO¤[I·n~úÿÙ ÄO?í5´×Ó¾ƒáÄÇxÒ%¤Ûÿ ¹#9?‡Ôe@MúÔÄã÷$ÌBÕÿiÅ[yaýeÊú¬½›Ó|‘)…äá ú¦4›ÛhWtI›=z„.n¯ö…Ý¥ßoÅâ¬Fþ»Ú‚Ý×Vm†ñ|Å[ë"ë/YͺÂrYÜE~/¸Gi F££‰LqFf!çwZù?åÈ=ô VåôΨYßþ¿9íÏÄçBãµÑf30²ƒ<ìJã/yÞÉc“sô•~]Åïµ´®Kz¾(¿Íé©¿M~{½˜®B/öÛc¼8ú¦@F16½C7“¼¬XW’éß®Xš)¯2e±žE7‹GqëÂíÿ°Â(ž;MýRÿ%éÝìN“¡ÛIf™ ÉlyšY™Õ–„ex"ÃÈBòÐZï¯,^OZÁ'ÅëMê]ÒûÕ¿½£ýÎÃÈþ/³ØÂâé¤6Ò¥6Æq$ $•‘3 Ä8zü·©óLÖóŒ“H +$Ëåõy]£¯ +fŒYõäø9â<¶W:/¯‚ùÉHG°h·*ãqÜèë!_ÏZõzÛè ÅDÒWHßâm€·Áô /ü¾ +Æ„[’t9é¶äëŽH¿poäó§L»L:`¦h³âgblÃ'óbD†F&]4ZøØJ£…ÆÀÈ‹‚Öþ´ö¢µ'¯iíLë›Pš;a´2½ï–Dí ´6¥¯×õ´iM¦ÕOkċqü¾žòßÊò'uû4Ô…n;˜gé%“Î/5¿)Éñ6>Wó¹5&øºY´¸MJ3(šý>ÌZ+º¤Í£ç¿Ô[ÄvQÆÓÛ˜~m·?®ôÒ¸*¦%¬¶™)˜é#ôÇîͶ‘&‰Â_ìÃ^fæ=ffffff¾ë˜™™™i™7ð/3…l‡¥w¥Òȱ3ÊÂÙ‡ïÓôtÀÝvwMõs{l¿-÷žþníVX»%ÖnŒHÅ÷)„Š_V.b÷uëïÚG…ŽiL¿Ð€NjD) j +]PB}êÒŸœAukT)í£JÒ0ùR)!©—t5£>IŽRêM©ÃêmdIdIͨhTäMJeÔ;ÕÇ,)î夦ȃ4¡‰™žÕO†Â{:IÞ¥±ÌYVJ)¬¦$³¤n/Ç5æc”/yY>3ÎÕ ™ª�íÍ%5FŽJ¿ÂRu{‹Ikÿ¬H/×B]Ó%¶9J¿ÖNÐO@æàu˜KWÂŽ¯ë›úóÑOAÃY1ùò$õÏ1æ.ΨƒFÉAJ(©Ð´:×q²¤ÎìX×Nug\ßcöSÒ€¨ðZtU“Á|×Ì™¹ªø7(œ³u633-§ÄÏ•jÓUµ«ô‡àu7ã¢ô3ª2ûÖ¾ ÖRÌ?¯r/kfâKãÙÙÃûþ±™X]Óxú +¼}6Ì}±–¥Ô²I»Ô¦?ú£~Nƒç+•`³õVþ¢?iX¿õëðti×èúŽÏÉmÈóÓ8!麮…W=/{ÕGÎÒ�y–RÕº¢qMÓá,õ?<*ºƒ4hs±DWÂÞ$ÒdfÝ3Ũ†}ͳŸ‡”²rBSç_"Ý¡)=“Þ°àcüIוÒI¯á†Ò ù“;IíJûÞµe ]ÑaýIcÚ©‹iÖiÒTÞû>�ÚïÕ°ÚûNªËúÞ©q;z½ïs:¯ Ÿÿ|ku¶ÇÔtóû5¤N¯Mé2¡€(÷;—±Ãêó(0"F4M-…ePL ¥Ô3ʲˆRO# ”SA%Uišhf>ÕF÷x” ³ØÈݳÈþÍ&/—É"ýß÷a3[ðWQÈVcw™E1wsʼtØÎZîÁ]3(ðÏïåÜ-ß÷Ã~¿ØÁ½Ó,b1K¹“sg¶˜–°š…ÁºÙLÓž¹„•ÀúYë|ŸXxÊÒ ²æ©÷Ò>â¸ê¨çÖµ*]kd‘Ø})„Ø“c¬· “:O…ΩGcä]Ú# :®~õ©ÓÊuk\Wsð¥ÿ&ϧ¿i/¨U-ƈ”Ðu•2†s\KžÁS€‡ðxÈžÌy¹»®e>ow¥FãÞc\—-¦oCÚçã~ZI j@S²2¯#³t@u—†Ô¢KîãÕUfI-ܲ4¤Á¹Þáç5šÐx†“¿%iJCšražB“Ì)ýT¿µé”®zöPÒ#¾Wcv+ž«³ã5WtjçMfuŸÎ«#íÜƈ¯-©ÜÜ®þ Ý3G•T¯N©K{•°úqjLƒÙ«ŸÛ’:Ô ê´ÖSV¶+®.|>f_Ògá¯Ü–tHÇ|V[•P +¬ìШqUS~Î)¨O} dúZÑŸ»ÈƒÔ®3”èŒ:•ú—ä÷ÃÞÇQµ(¡3êÖ)¥£á½‡Û¾z=Z|…:¡!Ùø(ÎkWNñY=§võ{ñ`Ç,$%çÎ'äK~½áîM ýXýù~6Gn›Vܳ۔®åôÜã ISB?Ro~ÇFSêÓ´•)%ô«¬ëíéäAQ“ï%̱ߪawœ÷æaÀ#x ~§Óz +xwswì)Äu¥î«ËŠ,¢4MîôÜM0Ïh¦Ö©£„2"Ü‹¨z;‹Ü‘/öÇ-¢ÑXlí,2«YÂR«/3JXÎ +«¯d‹Ýu/b³±Øõ"wÓKØf,õ;å–>ùnFĽx©{æåî™WpoÄflÔúÝt[x¸Qï÷Ômá±ÆžÀSYËÓŒu<“g³ÞïµÛÂKù¼ÜXÏ«Œ ¼š×³‘7«x“QÅ›y+›x;ï°v>d,à£F53 +ù¸±’/Í|Ѩá+Æ<¾fTòMü“_£ˆïeüÀhâGF?1ù¥QίŒ +QZŒbÚŒ:"ö¨BàסˆjÐk¨T‡ÌÏúhWùû„ðì랬Îô"êJüˆQL ]¦(ävëðÈ¥€"¿Wî-´Q`õ˜•<!bÌ÷ˆ)ðˆ‰xÄDý5D<b¢1˜*˜ˆÇJÄc%ê±ñX‰z¬D<J +=Š<Š}¾+|¾K|¾+y†Qê³ó™Žù—ù¼–û¼V‰¶RÑéÂGSO³güq%X®”ïpßTJê¤ú²>¥íÕuÒ÷ÿÞ¢ÓVÛÏsծúC;µ[³ÜEºÕ¥ )|0ùW€ç™>+“T¦?¿©e«Žé¨N*I5ð~¥¨¢Ä"7¦sjÕy+Û©É\{³v»¶ƒk)aÇ;bG«~?{qŽÝÔ +\J0·n§ýj²¤KJêŒ~ü?JjD'™SiïV¦+Ú©Î`oâ]àz‘¯Æ€âY~ó· n]]Àå?DZÒk)P[èÙ†¤}–Îè2_©ŽàŠ\ ÕõrgÞ›¾æögô~.×=OÊkq pSi¸šu9äêÊpi4Ô~3ùo?üz{omÇ˵Lí:™uEÆZ×/;êƒoj|–/ð¥ôw5ì›þ=ŸðÓô÷4 +ìÿV{NšQ!ÁóöUd:_Wgz¤ÔK_]=/Vû:au(Ë•fd¹ÒŒ, e¹ÒŒ,Wd¹FÏu¾"–ed¼r_ÿŠ}å+ñ5¯$È3*y¼Qåù°Úóa O7ª<+Îó¬Xëka‰çÆZ^aÔùZXïy²Áódo3ñlùÓ‹��xÚm3zEQ…ÿ{ï‰mÛ¬RÅnbÛ¶Í:îRf2)3„`(/çÛÏ(ÖZÛÀ�ÂY䫽³{˜Ä¥‹Ãm +·Žw©AØlX€"ÔÃ7"ŒpŒ¶–á\’Q“`ÂÅVX„A$QKK;ûôûóêáÂãþ¼½±¶Àl�Þ[Úf0C` +a½›h:¹çÓÀ(%X*ÃÉ”kÒGDâ5ú]S¦ÕgŸdË5 +}úR]}?®ÎB©KÔ¨uU2!™t‰Šº2oÂ9Ž_B5*eV®ã¯G,>¸åIô^¾~vÙ&7Üyô¦‹êN"9×:À…æ ÙÑ«#ŸH—\ij~—OB°( ^÷ÌðÆß?Ì@e�xÚc`aòdœÀÀÊÀÀÔÅñÿƒ7ˆfbŒc0b4f� °3 çÈ W†F%QÎïX¶1ª)00NÉ110íR +Ì�pž;xÚm˃¶ �À¬½³ß¬cÛ¶mÛöalÛ¶mÛv'ÿ[Ç…(bH&&‚dâÑÈ#—?É® ažErFjG÷EODïDïÉ‚4A† üä +e‚>Áº¤Dâ÷DògÏÀO9²è…ªõNý¤ +Ò½R¹‚‚Ÿ¨ˆ[¨Ï’xšñiê§ß=ý–pa÷°[¸$ì–“‡?=\ÿ`݃•" ª¸Fd@dÌ«9QÓÍ3Ë.§œ1ßr+L°ßT«Í¶ÐuØsœóƒýìWÉ¥R*éeQ ÉŸ2Ë*›ìrÈ)Ÿü +(¨°¥&ZæªE)¢Œ²Ê«¨šêj¨©¾j¤±¦Új¯ƒŽ:뢧^z룿Å.[â¸ífØaöºâœÐyƒ¬uÂ<vÉ1#rÏIgMòÀƒ3ÎXãÍõ¸¯|çkßúÞO’ùÍïþNji¤õ‹„ýåoÿûÇAÿÉ+—Üò($‹NJ(ª˜RŠ+©´rªª¤²*ê©Žº*h¢¥fšk…CZé¡«nºë«~2ic••6Ùlãs¡ˆ|†��xÚc D�¡*ƒ*ÓÆÿÿ¿þgd:óÿˆõï#²ÓSÆÿY MžÑ«¼�Ø(,xÚ¬V×–ÛFªmï-1]@µÙˆCºÛÛ)Jqßz'•\É~Ožòá×€J˧ ¥í%ÅÛ0ƒ2À½ÀÌ +…a ^ý!Fw^aeïËŸ˜¸ £„X¨Æö‹~ÑjÉCÓ²Ph¾¬w„!üÈsÐPÑ +Ú€mciþË΂1ä�+Aha±ªw¿ +-i™I¸½MªMm.òjQkHs︤êî�°ýyÒ©!P5I8¸F¤¶ òꯞEf¤µ6©Zô[(vC¯ØÙ¢½ù +oóêö«øqÑb?ÊâPëv¬Ñ°µ–(¶Ã÷Z;XT@™KÕ˜°”ýíËÒÊô9¹F–”$$ÐNˇ°…1šyÍüKQÐÂbÍ"£ $” }P®-;a´mÆ»:”ÚÒ€›{!ÙL"£—ßÁ²Â>ßîˆBÎm…¶Ò“€Bz1? Ñ¢*°\s°O—:LXJâøÜŒ4»Dõ¬Ô~Õé~àÕ¬£n ¨ÓÝÌO1lIzÂAÈÚ]†…É]@0qóˆ%꧌ëyŠ¡KÂñE Šº(hXe€:CƒESZºf98¢ÒB!Àv\wpT‘#�Žø/9œÒÓ8Ê»]ÚÒÎÁ18žQÄ@‹òâ˜AŽiŽ«WûaZj×õ=y/tpB½Ú _íåJÓ"ýT¦ŸT©÷Ât|ÜG#öpÌæ)§iòÒþ3JИ•@8¶Ã”É#´^’�§Y’Âzk3·SýfMHšT“´§[uIS!¦$±å£XõjJ‰T‚ýÇ¥K‡$ œ¥ÿurÒcÂó’(¬Øø“mÞ%š¦ Û”íàŒJ –³Ä3Ë9•Y~¢ÒËOUZfyC¥–¦JûXÞTi?Ë[*`ù¹’=Þ±Ã\4¾áâ`í„qöÈø}n´OçŒ?äÆÛJàˆýðÝ!|·©. |,-ÂÇò.ác) Ë{„e•ð±œ'|,?#|,K¥`5SGQÚÉ|I[Ÿ[IϪ«Ð±Ñ¡[x_4á’.ÊxQòz¥‡ÉèôZ›<ix¿––™ | 3”sz®ôy¤àiVùc%º>ÁùœhØTËÅz1û‹à¯úº\L3Œõ ñÍKêGáÇ‹>UîܪƒÏ®sEÃo‘ûsj‘˜‚M’oÉ‹$iʦŒ!<$>Ð ×á™aÌLËŠÊ r+Ué'sK…‡¾ý>q%ÀjBg.v7?KÒëyFü–lî„? æÏ…ùâ íñûÚïC"³Ù ›íŸ½¦=ù? ‚µ%ý¸Mæ‚›´Žø};K ôó²A=–”¡A8IdY"¸(‰ä,’,I,ÓÀ•ÏJ'2ªjVýÝÎ_Ðã\ÚÁå@Úò|—¹J4™°?³7d““rW{¶LÎ4ŠýÐ…Ui™¤é)éУV`¥J»'?&äM¼hڻݒ<òk'*ñ{íŠø³ÄYȽ¯+ .³ØÀ ?Ü6wu«ÚM]cÚvpã”u×Ü>eݼ0öªˆ-…‹öU =…KvBµñŒ¨K]©¡.ºá3äl>çsæc”^TÂ*¸r±{~&úC!ÿe¤›kŠ¿c«’žªóbénJÅ¢Ýc¥A»%Û’]^äâi +š +ÅL~í;‚oø”‹Oè–q‰þgLOáSZ¿TøœÄ+f1 º¡‘ȸÇÖkůþî±.Œ¢(Š® ÔG£4æ¡03;Ìè0ƒ«15èw÷Ë<»sÅ(Ž%熄q!�I%p`RÀÍ°0MfhÀ, ˜KªÎ¹~i^ +¼’j`s‹’Í-Ñh™Îk…Îk•Îkm +ëB�6Ø&Ø°E3"lÓ€°KrlÏ H{RàµÏö¼$›;¤Ð×1× ×©ÎqGvÏü¨Ô#ž{ÅNºõit™”ƒ´¹‚Ö\ÓhdÍîÌÖzËÈ–¸ƒ¶Ä=´<¯õ¤Á´àZð¤¶+[ß3#Ë_ å¯Ðò7-™ïЂhÁ§Úîl}_Œ,ÿ†–ÿ@˵düAþ¡…¤Ú‡õ?Ú¶Rs®µNæëŸèöËÓ¶����ÿÿ�xÚ´Y@#I³®ªîé™I$&46qÉBVøosº»°ìùÝËËùñ»»Ÿ»ßïîvúÜíÜýž»»-¼î™LyáìÝC§3UÕÓ_Ù×=@0€Oá?Jµ"GbH‹2�vºüÇ`^^Áç�\çºÐ䈅„¯7,Æp‚áSÑ•s¢8e±ðŸWòw¿³r�þ#�]H@?Äàλchè83û£“öÖl0€ÁA×S³p^CD{V r®q÷ÀìJŽ´nèŸôT6–ÞP0Û$˜ÅÝûöÕ½áP(Ü#Mc(Ÿ²,½ª'ªS“›ÒiMî`ª®èr Wì4õ˜t4=‡ÓÆÐ*dº‚³t/&ŠÑ?´’¹ÀDøO¶”nŽÖzx!†¡ÁCâ¢ô°ºž®ÑÄËCŸœøéÕ°ºêâÁ¾q`�¨Ã³ãÇ„?¢Uò ‰¯Õ%¼´Ðîþ'žÆÿp-'Ñ:Ç3ø“¶s|«!ñþi[W4$ž§ÍÍ6¤gÿ€}ž~¦`+¥gdž´÷îˆ3Òc~wÐéìµ;õ÷íÛç(Ôj�È–A÷ ¡/ÆI[<Èø"Á§}‹ˆØ5]]©Ù¿É„0Ð0lc·;Wm‡´ +عÀ؇”9Ÿ.>²‘=xs¶4wŒûXì#ž¡7õ`co탩,˜ÛÀ\‡0DÇòk[õ›Ôl´6ûêöºä½.\ÜÈn“µ¬!3J~Õ·l–T+òÙL:™u'*¡p²É$ÃÄ”ë$ó©,s«¢Ë±ˆ«‹XjS)WÕõ^•}å©*VõjLc•0{oŒW;#ó1s¦T꧘?F½År´`üWŽŸãñà +Pn˜´þè=@ñ‰~ +÷þýÊYúL:N™&¾âÄ—ý™üóù”A´Ùb8sú¯%1_> ýe²ŽÉ’ÿß³òx,0È�Ð4ý"È«)|‡ãE$½ãE4ܽv§þa#ÆÇ M0‰±¦k°šuÒôE +ÁçMä<5k ΃*a^HO¶¨‘¹ÚF‹6F“²ýææ,½ù9k•¶zRPj0.–<-U€U´å²ƒƒ�cÙ©Üä`f0•h÷Y¡T*`ôåÁÒ…Ð{ËVo‰Xõ(ª†§dD”«UCåꔌ5;A*~¬J¥ìŒð«ïl/Ú~é +¯PbDgŠ]lGâÝC±ò N™;u[AÅMx2~êÙvÑ/žvæäÞNÚ¿»v¨Ãáü~m|”“Ý™ôÄ}ÜÔʯ°?ØlÑi'î>�abõïéfzFáOk~D¤ÞbH3®Ï@B#€ü, ®]3Æ€ó÷ü<*EµšæJÎ@ªEÎ~ý&K¯ËdmPÞB–��à¢w{œ»®é€QIÙñPX7úó©¤e¾ªt¢·Ç²$ÜÕˆtKܶ'7MMUÈÜ‹4HjìùðÌ1ïÜqìGsýÛo›9t퉧~ýôàôÔŸÍ/qçá3>;³uª÷ÄÚ™·:|ï;–åUn‘XNá%µ~ò°CΊQŸ)$Hìp‘-Æ×d\\â`bè LÔu{˜‹zú‚º¾1æ]or27ýzâ¯OMùТöêXË4‹KI Ô7ôç¾Z�¦`2Ÿp\j2½"í]šÐ¥?¬ÓÓnŠÅõtuŒ?ãÓgÚù9éÌtÆãŸÚ-ªsáà`xthö²éS¿ö.zph¤ÅõÛ_rpËQþ˜¯0Ôì +Íwüüɇï}'Ssï•5·âØáVÜDò*®pw`¯Ý©Ø¨¸ýºFDl^ cŠYÖá³Á†Æ5ZäÀqYGMó¤ó&aûµ¬•^¿µZb½œ”¢Ä´%O*nêõ„Ã�áx86Ø/qÉjh‘<´VAU™Ð•×ÜÂ÷ïÿéGWŽ¨’G}œÍ°?ÏÇ|a¼°}ßås7ßD¿øµ¯,~÷|YáreüQÙâLEòã+'ʺ¶ÿγ>}ôÕñ· ‡w‡qôjšŽÌ@BF‹9×æ}¨i¥ÀV|Ç&ø2 &.»Š¦T!zhš-H¿ÎJof†Zq½†•<Kkªž|ÃÑH ’‹dRÉD|x,;†žlMýë¼!}Q©:é®g‹P;†.RÎYçß-ÏìQII÷˜Ÿ Oú•‹š½ó},?îøçÈŽc¤—¾?FOJ? dh‹dÞE¼ÈuÍdƒFóV3.û6¢üþÔ¬‰Š±A3w>|è[ã€\pÅMaóÙ‚†)hXòüWõh³gãõ?Hé-zZíÕøå=?.¶sM4hl[²×\w ¬ã®k»*'WáZbÆ(½FVwŽ—£Š¬bW26º+Àø/°Ç%«NšJfBøÒ=ýb@TÛî@ö'Š¡ú¯Õ6nóÂêªë}gw¬ï ·8;3twf ‰¯5$^‚ϵ•ødCâiŠ»äI´Îò¾Ðl£…Q…Y<ýî>äšW'6yÁh]žß–ÔBBm"¢o|>Çqú<èº{±¸L4Þko6°`¯¥ûȾôœ¾¶¹½²Ðôáb«O5«»”›%;êI8ñæ_¿W:ŠÖm•äÞ¨)Ö¬ßQÛ1É·'³œQw&“NûQ¦ÿj +³ëaÖŸÏ݇™Ì™”Ÿ=¦˜nS„Õ¹í+ô ๚©uîQÛ 4Î…ª5Œëg ¸®ñE‡æøÌÍi\3f,€ay^ÝØ‚¹àCÓla< õZ¥ES +¡é’ pÑ3åi»U6@ò‰¤<êQÜG¢Ûžû¨B®;Å[ÝDmñ‰‹sT $ñûf><»ý3ùyÛ‚Ä(7ÈèË;rjü¬köœúuEvúÇÿäàùûî<çÌÏÏõ÷?/±-Fn:ç®?ïðϿ׫ß,3g®¸{ýθÀLøLÃ�ÕΩrÅÑÏÕÛ<Ô!¡IÍjˆHó‰l’Œ·êH))î7EO{M#K»÷Õ,µ7ÏfdK‹Yîù—ìTñ¦èD#¸ªZK UœPŒUkúÑ¿b;é%·±Üæ÷F‚E8S—JƇK~jt‡Œ»ìÊÌ«n÷ðgê×™M.‰a!û“ÇUº(a^¢Ô\x�Òû°up8×jô Öu@b-RpTáʸ˜!KZQwÕ-+Ål|Ä +ouoÑ\ae®5aÜj‰‡jÙçÖd¼a]µ$ÀsdMÖaλWhŒPÓvþÿ,¬O-,ÑÓ ÉÚÃmøÛ·‡¯¥«‚ß<§í:Ù×®Ø{RÏ•+ÿÖ~½ÀœõÍ>~ˆ@>×àd2¹ÌNMhú²Ÿù‚‰°*~A…/hš˜!lár² 5L04Äž|VÈå �nkŽÇFGúû‘€Õ?ø’£7ßHY"®’¶RnºŽ´ÁàÚþ‘žžQë»ÎÿXoO{,>ë‹&ÕïH_ÔVÿÿ´-(õÈ7ÅÀ38¹¾c®þãêßã2¢‡àÚ»ÃÈHå}W³ÿ‰3FÍþgÏÄBã„&Ù$ʉ}¤½l-Þ*¦',žÐ8ªºhÊr˜´Ý4ˆuRvº,‰êø[¶<<cA-µs[v:jõZœ÷˜ý6&tG¥´òóoßOYÃÁ.Ã0°¼ÿ‹¼Jw³\ñ$ÜXë4ô8šBSt»^ò*`èBµIˆ™ä1é‡ü¨ëîŠæ¹sƯ!@ýZ-o¢®%夂©‹EO¿¡“m踧MµîÉM•‰±b(ä½ØP ^òôaŠD†©"K~:m§õ¶eOÑûI9 «ÆjÛ“Zÿ >–ì§÷ôï¸,;<X«„MµÏÜóéTf;=Cwpkó䱘vÓÄXg윯¼_jB¯øE‹ÙüÆæ¤, ³NIä¢ÈîîAj°«€Ð4åY 5¨ü8B¸;Sv³™G§òÂòå5X§b¿û¥7j¿–Ý@Z€FB[ôd³ÌeD¾P$궃º1àVé¢-½3YÁŒ">Æîèãx<´ÒãôŸ>dl‡ª×ÃãÅ•S%‹¦=g>Ro4F)èÆæð꿲Ãámð“{˃!†>\jô_�s^1ç¼S^¶v`µÁ·¹‚£,õ²kz† gJi0Ð4š°RÈJ…&YNüS+JÔà¶cEÙ¨‡úb¡^—Ú"îq"UfédhS5¡³„¶U'„WíÊnW¬ˆ©LUeK�Ùyé$2ša/’a÷!%þv(½³'§‡»‰›QÁw³_¤¡a?›ÚI7E÷ÎE)<ä‹ž4U¹VZž^Ù2”ÑʪoÃ3¶ÍY=ï··¾#<¹mï¥+ÿ8Ý/ïô¥F¤CòÇüí#ÇfŽµ¶}cYÂP\ýú3‰ö(|ëÞ~ŸÁ܈.HÔrkaÁ9-먢Ç@'|8wÃg¶ù˜ºUá§ZÕQ—i#,ÅttƒŽóµ «B½¡îP(Ò4½êÀ˜`¢·§&VÜÊ@2:l–V–(ˆ$+À½x,8–Þ‹×S/“ãûéIÛ=Gž¢+{|á’ÊóIâwä×ñÁ‰ˆê.2Λ¶XýMÛ-ÜAññ¿¤¡F`·ADCÆp#b~Ö¡ÞÇ•ëíåˆò&![ò>Uÿ‚A€àHp¸Ï’†:m!û%X²Ð7ñÜN’LØ;O²¸y§ä´—ݼóÀ×/>ý}Û+—œrÊ{Ú|énzpñ‹gîÿɻϻëŒórQæœÛOž½þì³o9éä›æ%rŸ×鄉úõ²æw‡ ‰¯5$^‚_l+ñɆÄÓ´·ù e›Yž¡P³ `PZý)ýýD yX¨õåG†Œ|2"ˆ;~‚.¦G"\�RÆÖ í”·Ò0¶†hG__*ÑëÍ¥5Ãʣ–´«Žh9RUG2Š `´iúΦ-[%´§?]Øzì±Þ³w•W}o )ÆÓ'Ý8µKB=:LT¾nNB=:?p°tÛiîìI'žuËIµÏ”HTÜ•‘°O¿«ØÀãŠÏÓ-ëð ‰Çß³_¥‡`¦ñÁZçDDMlFÝ`õö2HœpM×e` 4&–€ƒfpm±;:üè÷»QçîѨ뽳KßYàó|nj˜äQ65CÿÈë3 + ›ø&U“škoòÍ?gé~ÎÚŽVkRO Ç�-¶Ú÷,e–Æ}n+.•�JÓ¥mÕI‡±ŒJ†’ÎIA¨;ènfcú«½ZU]³‘æU'Í+²˜I¼g[oæ£Ì;¯š-÷SÌW/W‹C¿|!«NØ}ÔYתîŽÏ|öýÓ£ƒÇÑC¦ñC÷D¡XòÞ«ò—‹1¡}õׂ§^èðýïe¹3¾|ñ§ïÒA�€F(_¸A2pÍ?ÒC‚‚fÜæio{#�PÀ’©“: 6°u?ä:\./·j¡®·Sªå×ËK )Ê5}ÉÓô¤ÝÆk �dÒñQˆª÷’¡ž”Ï=ýUd9ÝBUÕ›ä￧oþX´Ã`ü ýƒGw±+OŒ›ÔÑŸ™>wëóô‹çž=}É^·ÅÒŠMŒÒѱÜ?±Òþ·º§ŽÜ¸ì #ƒjþ(¢À™¸Ë…b€.,ƒÆ8Ó–}hh.ÄZŬ¡N¬ù|¹ÔÊ-j:T„ºUÝSÊrÕLFGGs£ÙŠC¦S• ¿Þ.ëÛ.õ©•F3kªR‡%;< îøÕWuÛGƒÔJ÷twZæ9ï½ð lž½ÉQ<{_õ‚]›&º×±å¯¬|Ï?}nÆé6Ѓ€ +\â‚ahLSÇ€„t®"|AGÎójÊ€±‚¢IOPÞ“BKuOlœÉ÷&¥`²’,r€x:Þ›6>¯ªWÔ‘ˆìœ•^•diùm¿ZS=úcûKGBÇ÷ŠÑ|al8\.TÒ´Ù=_|_lp{"¦õ „ÊÅx›®ëeÖy2³Æ`+n¹[C2¼=CÑó¡ß$uìè{õí•[¶+ LÃË ]4Íסj¿™ùJov¾ÚD]KÊIñ?¥½xÇ‘(\Õ=a36çœf€Å.°‹ŒE @$Á�Ì`&%K”D%[)[¤lItÖs–œ³’söï³|Á>‡K¿s¾ä ;ùY^÷Ìî ”x~ü`1]Õè©®®ÜÝò +¿^ÑäÕßÙ ÐÙßÙW«B9çÌ%iyÙãõ6B6›JQ¤Ôåk½µØUž~äÎùëQ×°;”‹’;<Šoˆúü³O1âo^†pÇ@I‰‰9jûÖÜùäþÙÍ7{Ñš¿ •ñ%uåR!eAü|ŸwM€dƒí¥/‘LN t2]OÇwÁZ„6„’HšîKaãÔ±(j‹žGWø?«'Žõj0¯ª+À�]PfáÓö ÒÇœÅÁšÖ¤âcn‰Êóœå•Vâxó4©šÓ¸g×ðt©ÑÛØQï?»µc1I»EOÍ5öuŒõÏtggÉ“¾pñ_f¯ßÒgƒ‘®õU·/õ}û'‡ƒ¹p¤cswna˜Ó" @^Èäb�Ž7×¾„€0“P"Ü("¢|H}<“Ûr ÒëAf ãÉXž¿¹Ùáä‘ã”Ý`QU««£IrRbŸäæ,qõTçTØÍ<XÔLb§‡ûÄŒƒŒã/Ff2øì÷µ9—øܽÿ›|ô56“Ü/RàУÉIË ”¸‘»ô°Œ”ª“ˆ‹ O¤ÁÚHÉÉV{'ªãö(‡?«›3kËÔçŽ êfÏT[ ÖÓä§é˜Dm†û_yì\•X©¸™üÿ¤&VÜ}öôuF'—ПàŽu®ûöèðK¯qþ³#E‹‰ŽÄ³öÄM—^u'+^î×ho¦Úç]M/àÔj¿F‡x‡ñ¯ðȆuˆo“Ùuyªõå;Ä°.OåcþÕãŒÂ xÇ#^DÒ’ŠAШ' +„XKØë~&÷L£´Rù"n�UæPœ‡.]”Û!€ýÊ`…Ó¼b@”lãÂÈÂB™Q”²ó:äîMѬ¦ƒÏŽÏ§yï#T›¡GKe_ïǃ_LÐ^òc2aŽ)–²xÛ<‡“~ã6ò5òzR¨Ý¿4I<óURJ +ÝžØÞ›âç'zSÝ?ÝÙçPcëáå§ÂtEîkXœ(a=*S¤é’‡@B�éFþRxX bf†âŠáµÂž¹´xüqM+.îQÛáFØÆ_¼1âpx<GÔ ‰/Wk«ë¡7F™#ÅH¢d›DáTñzUº4ÃNF˜lѬP)n!ÕÎ>[›k#E:$Ò‡Ûƒç¼NáëÁ¿”Ím¤—ü)¦dc@p-Þ6âqX ¶›ÛBäõ¯ÍÝgñœë¼x÷ŸeŠQZJÞ¾ÑÝG~{Þ?³åÙO Ýç$¥ Dü‘âk-Ó±µÚßžtç°Ú€��äåjDéo4s�ŠRwÚ- Æ�ñgòÚgû4àŒA&<ØmTctEÏq¡…‡×jËN娯‘ãAvy1x`¡Ð¼Ú¬Œ¶ ôŽ #âp°XMDåIY.ô¼=Ý<Î$sF]Éu67 MžpÀšÆ÷¦Ëw\3Ðòö“ÿ&¶tzø:Q¢bÉ¿›|‘D;Ò±WìÙ1õH©l2÷ õØæÈ—È륩᷼nÖ›N1šcÊî«Wöÿ…dä¡ XJHÑBá‰7ôDù„ЀÙç*_|Ez¢Åö<�äl&JpãcI·DQ@]9j–?çÏ–‡ #¢oà-¤V€„Œ—'],œN>‡#h7¶hÅÿûVhÓ\ÌIm1WyN£Îë;Çò»\YQB”¸Ö`ÁK"½©(“%²Ã«—HׄÝw3…H^Oû'^™lÌA-÷ËWΡkªÀÐéSjGÇöœÛêÊe¯úþªTìkÊÞu¹q_†k&@*š°eA¤A \\që™"Ü ”Š‡´,�9Ü"Or=˜TéI HOI9ógJM2 ÂåPÿ‹’¦=G—^˜‹ÿÏä~!éxv™:ÜÞxžr.- Ž°'ø_äµÏ~¯p÷Ž¯wx·}ë_Ù%s@ Ã$|—!yøDÊ(RÅi2 + ¶’Ö¹5Ï%oNÛj°H±S·vS«@oç¡ÄÕ Ùçî몺Q+¼¢Q€h>šK'!álV«ðò‘¦2öqï’é锪±u7Bu"²)|ÕXÉätåla1QÏL;iáDOÿ¦±K‡÷íPFK{û£e\v,}|:)wIá±Îý¥ý—Îí?ò¦ÃéÝ/ßöÀý_ÛgY^Ö¨Fþ�I� +ÿ_h=§†æsß» tèoéÐ߇WlÐËàëžÿ^þ#xÿªç¯÷þãkxk=ý2.C0_ÑB¾î,…~¤â§Å,€‰NKhÂ-¡õ-ÆVË>Ž¨ÕQrF¼�ÔŠ& ¦ÓiÑ,IÊÍ×NZm ¸ñ2p0õy\AäéÈÑÑÞ^€Ñ™Ñ™©M½Þ¨C-“ÍzÒÅÖò%$Ù½R)«èóéë®7KÅd•Òã…ÕZ•áhž²Ð2βuò¢Zõî³çK»bñÂuý[C…Å®‘ѽ÷NQ’«fûFŸÓáì«L’Á¶l5î»#Zúë–£é騅âòætrS¿å3ã5×®ÉbWGG¥w[†ZrAKßX:bv·ùÑëŒ($n]4L æ¿ïžHE³ñ¾! Z~ +ÿžüƒ·4Ìqˆ’Q]_I5k$ +×"ª¿Pœ‘Q’Ô@iN7Yµ”Ó€©pñy) ŽJNnÅÖR[$ÉE”¬ÓáK+&fœ\þVk+)`¥îTå-#dÕ)IZf³§;õ„E’4u|`tð¾WF·„Û\&J7ƒÝm‘-»»‰¹à9²}Œ|äÌHåƒ/;³ã5Ÿ2™›Ó!g³.ýë˾´ÇlÁwŸ{�‚Â(ô.s‰Û¨qYê÷nPAËÃ@E„'SËàaÿL:›‘ôh‚Ê õ–WµÂ;šÕؤøÝnU,Æf§FûJ»B©ôµ#Nõ\·—c= _0hóÛBÁ¿8zâÐÀ¸c÷Ìõg'_yH¡]a v4¶é#ìDJ:Â<72Ýž&â”>^DA<ˆÒ"'ýúaóJâ¤'ÍWð¹.ËTgŸãeÎû¢™Xê…Û…ÞÍ®6¿7Ü~…—Û¹Ç\‰`_Ý3)!{+$¶\·È_—@–I”"ãØ"ôÃC c¯‡K6ùUIR¸TWÉÑ`P_.7#¯Ó9 \”.^x#£AŠ Pf&\Žs£T*õ—ú׺3JV11 ¸ƒ¶Zd×j€ŠOçbÒä†D6…?48Ûl&‡K±E¸JP²m4s´glÓØÅÃq›(mQ™ú™¹l"mt·Y¬¡<ù“Ío¸çuå`HÓåBmæüáì>þànáÎŒ_åðŸÏÝ51½gê–±ú‹L�rŒÇ¿J“…ÜÒðG„P6µ.‘Détéfm{_¼Å/ÊŒ„Í›ã$o%PB(_ÛHÉ阋ÅJ±b.éËfUßHn1Z‹"Y5×"÷¨ÔY¡Jˆr¦2³ùþë;¶wžèŸÎYwŽ&Gj›,Þ±ZÿñF¡¯½g<ŒéjìúÜ…O½§z|ráe[ºÞ<6Ÿôc}cKïï?;sàÔ™§ò“�D]áâ2x!Ý®€Å, +@qšgâÈ¢€„¨*¿%™ÔÚá˜/Êà=E2x›¡¥õKzEÚãž¹µ·¿cO<Q83qðPýìöí“Ò™$.÷Lï²><4èšÝróɯؓ¼s¿es-Qä:U™ªƒ·45ùCÐzþ5ðçš&ß³ý-ýé÷¯ß¨ÀŸñ—Y¾¸ôk¼< i´° ‘&PyÊÈdzåšÈàdIâqgÔªø”Yut e$I8‚Pf1gA*-QÃ)ßÆp5˜%þ×c2$@0âé+ãq³¶ãŠxƒ¡Š„ž\Õ¨^‚ HM4IØ¡Õ@ºþTZaÆoZ«8ÔX·Î¤V.¯®¸QW÷}¹x<žu¹Ü>”yã«é«©,H–øÞùlÎíryÍÎtÖn”xáÔ^q¯sÿ"y:°Ã^áƳ +é½µ2õÀ{ocò2ðf/Üy¢¼yf‹wòJ`›Ó¯â2ä .6ÚJB5BDÉ[…9y@J(’+‘óœ9ïÔSÎeà1Ä,ÎPÇ×£¬DÑóy€|O¾»Ü9PrÙL3Šî“ZÁ)E/?jÑc ¬=ΦðúM>Ñcµ\º12QÁÛ”Œ9÷ÔLÑ„fÖÇ'—ŽÌ-d’ÙÒîšÌá²Ñ°ë¿ÿêÕbÏF=, nµÚlGï½n:yñе{÷½fzÏùÆ̾û¾º×ªVÀ>E:™öèƒxÌç)Ò–æȃ,+jÛ"HÒJ¢X•\YÕ}\›ºƒ#HòÅ«Dà”W4 T/ý9ÀŸ2¿’s¤™™Gž|&—ãÁ@÷ÜuI^ogÔ›šZ³¤Øƒóé«v*»Ú¹Xï9Ìf;sBÆÑžö´•Ø¼Áâþ~²“v"Oª +‡|ú¹ž»Žlé??ðú;+rù`gWvÑúâ._ö%ŸÛïJÓøþ³–<×8@@fr¨N¾fè€Æb!àˆÐªI¨VBÄ¢¦½¹¿µÆ4 5b¬@D8½1Ëêñ2BK‡¥=—„¼nµ|а®|Pâ„áРÞê„áÆLõ[Ѹ׋{íE‡Éãî˜e¸²ßd2mü7c£‡|'Äb@ü»½eåØÈ|¾ÀÔmmá°2]Ï8Âì·®ƒ�¨½·j?v4X™‚Õ"�ÁiuØRºFµhV#›L‘9Îçè®<@\~®q-/kãRõÂ.U[üKZ³D CÛ»JÖãVÇ+‰A‘nÞx܃¡`ȧ“ŸÓ.ÜEÔ*T«Wñ +˜ž%¼o"ô9ˆ}:xÓõÁ7.ýÏs¼’þFßÒßèûòFïùƒ"�Yþ«¥_ïÉwÁøAÃÜÑN¨Ar¿ÇÃø1Tz£ú’²Æ–|¥s ¨®Cr)¯/RáÂÕ ¨Â …À`$ÎÔƒ7Ò—C +@rbAT%_åþŠ¥«˜G™vp©üo܈ÿW©'¹)ŽyìO›•aRýFŒ¯€˜—M¶ÜÉýÑŸÛã§KuÐ-ˈ¶6‡b ‘Z–|—¯ƒh øÇîʹӯüĽ¡+ ŠyçÂâdÚîtU¤Èx�á²ÿÉÞ40Ó0h4„-_³Ð(‘ÑÐ1 +¼¸XQ·b,Oy™ÑdZq³«–~kúÁ .®ïæj{àÓÒ»¶$à9ófOÏ…ÿ¿BͯFUãFõz½QècÒÜf~£b1DÖ9¼Zörõþ\5n~¹,wJrsËôWlÔi¦…#ýå®âÞádƈ¸í^CØT/fª!w,ô“]˜pp¹>Pm‹lŸãáÎ�ùÚ™à+ÞtþØH{ffÀŒËövEbytpª–CÜ»…‹÷ø^U¼s—ù%‡vndµ¼×SØÆf9çå5X¤¥`ƒëB �°.~TãC4ük‚+MŒ|±IV Uÿ µ©ti’åkj˜jx-^ϲ)—qJ趇Éû&#·.}m"bz,<ÚYjÃc¯¬©šÁ°ü=‚Ëp®o˜÷nß4a³J §óâ’@xZÖd4PYÎÍp¯!»fè‚äWƒhvåA8 d‹žœ§Íëv¥|™ã8LÖêpuí®ù]—°êZ®ð^t&R?‘¿í2™¬LÉçy¤±7Óž²£EöÛç{Èûä(—ækì“ÑdÖHΘEZ<X®wKfÚ~¸ÌbOý…ùÑ~¯_#[gWþ€qç¦/{éóóœCgkww6.}aŽÿXÜq&•±yüš_z"<:l²LµŸ_Ôô$9€Ë0Ǧ‘ZÕ"®9½0¦ò%¢êüõ^ß~yÛ�XÇcÙNO.›Ó÷大,·˜®@Müb˼Bf(9=ÁÒÁ!N6#Aei-åÊ‹5N1Ý^R –Y¼£áËÞó…ÝœBþ=“’Ͷ õ:[T:Ùzɉ¦#ÔøêÕû1¼ZÞë¿à2Ø ¥F~¥|”Ña¥L´ -ÜÆ"XWjD/7Á5un¡kà†™Å£ƒ7ÎŽ&kCÕÑhÏ(.wŸØuÿîóÇwÝ»#3rýøîóÛÏÕænmz™ÿ¢jÙCMOõQ€ÖsjОsOõèÐßÒŸ~ÿ<lÐÇàêÏäòGñ¤¢úç9m{`.¶ H‰Òi/âf³‰À”^é©rAëí}¾T‚»ì…¬VϹa9''€ÏµRÌ©à/;Š#ñ‘H„S¢³þýFÂùHÿÉP¹:1ÏÂàaFàÁÀ¡è¾F•øî½ëǧËØ[Yº6?{S½VÒßìïõ÷ýñ>�Ê£.ä÷¸)h‡>˜jL(1‡Ù$H á´y‰†,õùQÔƒM�}½Ý^¹”Éd²ªÏ¥ +ÕJbu¤‰'©ø\k‘ YCײ)òÃwßA'+ÅÑDá›*;Ý$x°rxoýÚ-•-ê;VïêOÓ½/.f–îšèc#›Æåëgæ,'Œô»¶OW» +ý/>ɈP¯ä™ÁÃ5ËØ’¦ôÞkço¿ëоûø›;—‘Øp:`îiX»É„ ó:A™¬Ë㙄[ùÆæ’–em2õ<^As”4`²ëèpxÄɧ uÖ{ Ú³E‡Ã›1sI 3ƒZîIõTj꯯[ör“r«7æuÓÄ=‡ý>qäS~¿‘¢Ñi_ ×mµÑìÞîÞÉšUÓ±%žÅå³sÇþb½ ·)^Ê +æ:‹VùÚ/½3Њ×]Sš¼p¨óèëw¥-»ïÛ¶ÈòSˈß`:5Ýèn´•Db0: QþòMõZk–º¬scyØ¥ewšDÔ‹e +ºåTS=ÎVWݪP\…Ýr[Ÿ·ÑµšªßéÑ°µ›3ŸÏwç«<-Àæ037 %Iöµ”ÜúÙtº6Ê<j´‰m¥ "1IÅ`@"^¡•.`Ñ\òòtÁ›æÈO…ñ¥s×ìxÍ'…»šó—ìêÅ÷ ¯æj¦¾<o¶à»Î½QT#~—!%x©)¸‰(I´Éá¼{ã‚1�ê©:-ò‡€G¯‹‰Çâ¥xQÉ@¢‡Ã¯Çbˆ¼–ÅWDC}MæÔ.ÑÅW[\4s¨>61~éð®=JBiŸë£y\–„[Þ¼ôãÞ'?ðçw<3wìÁyLÍ¿dlëüý_;`T½`�52U‚7?–‹E)®Ú#<iÔŠ2R*ð“oÔ÷AÔ?¯© +Îêq»ç†¾*@ئí!Îæ=î´zN+·´Ú¨¯Þ¦4À·)A·3H¹°£Bv£ÝºJç+É6š?Ìt~,äŠxÝø²ÏΙ’úÓ[º-õ^éì˜yÑQuÏÒSx‡šÃi4†L˜UQ}Ï; +w¢vüê"¶¢@ZÒ&›.eõX—²ÑøVoÔ\¥•²‰îó³e”rñT_w½WéÜS]8]^£\÷Ô{û£¥Ù +.׋ž€ßî°9½íÉHG,˜ïMƲý]žpÀá°y]‰J"3XHó©]¾{é×äyá Oè`‘¢¼+NÎðºÜf´¹P&2ò,¨áfJ[AceÃ!0VY4„ûWw�<ì|õ=hA¨Þõ=0d #=ýüøœ;kWÆ7€ŒùäÆØêó#J<}BÇod€Cppÿ¾½³Û¶LöTÓÉpÐë6Üš§óè<°ž4h–lÔ8»¨²´6‚}yû±¹,JJ"¢sÕô¡™ÆÁ Óå1ÈÅðÞrWµJh2‘V¨00¸iÆa4Ë%Äß7§ä=.—GtÊiÅn0j’÷‹}çn#Oç†Rf±P“~¯—†2]S9žÀb¢'£ôgR¡hÔ>±ckñÌMá¸íµ^`ÁñpÐCÅ]/ÜÊÝVÇâù—‚—¨S䥂;¹J°U @:+ ",Š°6̨±B˜I¯ÓªÍ¬AÀSk¼ù†Ééð¤3uƒ£‹çTɪGa[ºè+o¦o‘½ÎHw!ï¨wÙ,ûèà´;‹¿Ë’Ƨg•ò¤£§:ÖÝÿ©k°0¥VKÌb܆ËЀS ÓÐ`>AßnDU´òºx°®9æ8 $J(^¸ˆæ&5`¤ dž<w“ô�^Ë&®ª>¤úh£læúèÞûóv´3·ho™CÓCCHY'-ïíéí1™ˆÉlwfmaoÆåJgúœñVůÜóyÕmôŸØ±Û:é.u6³™¥ý/]ÜÒÇ¢æ)·ùQZìO¥Œê;\×ô?¾ÐzN ÚsîÜ:ô·tèïë6èåðUÛ +Œ—~¢V±Œ4;Q@Ÿ—PL"á +…M ëŸW\�^;RÈeóJK8ëKër¥Ò¢´FE…Ó”çMð¡‘€gz±2ØmFƒÅîÌXÃb´žU˜íã'f†Ú$£/hŽØŽàòñc›êGwŒÔ^h‹3US‘#£åž®âËNy#éÊ\§³/R1<WŒ¿ÈÞúi\†íp©a™D™Ä¢*ÈDßÆ©ÇÙÍ‘eý³„<¯‹ØÌü¶ƒH É…«‚gÙr�ØÛrO.“W²j¶\ã¹õ|µš4ZçJ=Ç®>k‰:òñá@òÞ]Å$žc=õ.“´Âm¹¼Ýìö•vTä=‚É(ý±Þkƒ’±lŽÚƒ‘.Ÿ˜ÛtèöÞq§ixßÔ@îLÇW“å*½w“so¼¦··-Z>0”ÙJÏ̺ú"‡=¯Ç„6FYŠË0�û±žõ9ì&IÈ4—è |5Êœ8²¬:zúg•Ÿ(¢º<ücKÙ@Ò¡¤•”’nÑKe¾L“3j¾-µ"Á}^Æ,Ú¦1þ«Za«JñŸ…ý—ÃTŸ’ó5º-ìÜ•,³¬FÃI¿#E‡fÜR8äî#ÑŒß-Y°ã€‚Ë!¯#h·>ä¼öÀ¬polþèÁCá°ÏÌ[ÿ¥æÜZ9†ý§âõ~Oìæ]ÜøËK~—am8j(ÒÎdÂ+ èhú/•ÍP$5;P–HÓ®]ùLQ“ú&uŽ!"¹p5(œæ2OlŒÄC隆¡Î¼’Ò* É`«£æ^f)kTåV¢ÜlðµˆË×oß—Ý<´ùîát{°ÍãC›!»v6r§ÝáÁ8»Ú+NwÜ+IyÌ(íNoØ…ËÓµ_9{éŽtÈdr¢üâÿs4(¤FÁ䘩Ô΋l™{bÆŸ5J>»Ç·¼¬QZ•`·4åàŸèÏ¿ÅŸk—}�N&×>H�&aoc>‡¢Ü[çùABŠi$T˜žDis +É€€àÍß&<¼-€,œn¹Š¹ÕiÉt>HçÒyu{‚,±}šÉ¡Ôu»¹¤UW$¥lLO¾¤ñƒí7´GgôÕ3vÅéØêrÈ2TrçÃá¼+PôÅ'îªí!Ùv³5bu‡Û¼ 9diw'|¾„ÛÕåÅ×ïíÏžê Ì’ÁPsºÉxç ‘ýkóN<4u&ÈwÆã¬)é4°6^'An'OCöà'^3:Ñ +»w6|¢‰¦W™°[�Њ`ekÚ¬WLØTÔ"J‹|§iNûE¯f0™Ì‹`6¯7(c¬ÃéÕš¹IûÇ÷¨ óÍë{´µ +þ÷ý©G»]±?ò.æ×t»qO‘çë¤iýnÜ—¹¹•¶» {O÷üŽí›Æ‡¡ +‡7•N;ÜÙŒ¶•v_ÄOò“eº®RC/áfß½W‘¾|õlgÐáaéL_YBVÎá7(û¶5k9\iÅh6[âÍ~áÕÏ‘ã|:Qxƒ~g›ÝŸ.±(déí7¾ãšf¡ÇÜì‘|lÿ!þþ¹»¨òë^Ư›ðc {*BDÁå$DêA£ê®–IP´ +f«… *3&ä‡,š×&Öy™¬|d¹ÌSÓ2u¼j0^ø£zP]V™(¸:üîj]ŽÏ6¥“¼§+bs®´€á‚ÞZX'–«ì¤Ñ5øFò‰µÝÐæ‘~�Ø£‘áÞãQ—’Í9’6Φ>®Â«ò†‰,ηÏǶœ)o)dí~oÄ`§öˆYF敼Û>¯m5j\šÙ7«siÖd´XŒœK×'O›ÖÊÿù¥¿ÓSb¥I¼÷{pþ¢Ê™çÞ~¦É™»wLú“3Œ3¯hàxy À b?ã2›ÔŠ}ý0 ˆ€ÇWJêDžÃÑÎM*žf ˆ° ×àβi$Q"ÙdœuR2Yƒ‘—Ö_^å’j.Õ*_»V²]ð²ÙiôSÉ€ÇBB#ɇöNÕ2ž4qúÉ“¦ÄãY‡ÃÓåh8RŸë?{äîðµ;wîzqÝ�@`oÇYönVÀvíeÜͨ•¬Ë€ê®Õ¡,4ývì=œ6€-`ó»¬+KF2zŠ°&Ó2dÕ³e<3Ù90”ì,wÆ2Åb,CžÜ>Ú½¿w®Ñ½·'2?Ú½ýho÷uÇœÂÆç€Ì=j¡8ýGŸ*ât8Îxа+’A¥¼’†dãÔißÜÅþ›ç/¼�…[ç·ÍËØض}›L†6“'?¿Ï|àáë>qÈÆ~d}‰=uÇû>rwÎuþí€À‘ªzʳZLÔ¡ÇøÐ[aOuÀº“Í}À`/¶`V5oÜ¢nƒz”Ÿ?$°˜h}å2µ^å'D˜#OcWxÉÎ/$¯¯¸„R‚ôÕñ»Û¢ +€@~‚bþê‘( +ê(]ë6Ö�žJõsºõ5ú±Âëw×lÜHƒ“PÛ†sºµÀ,@>[p8§4SVƒ8\¨[r†I}%º£+A.'ÎÞ$Ê_™Ùcú€W©÷˜miíœL ÎZË[Û‚w¨çø(yráðͯë;T1\¸àÐTw´~sç¦=¹˜=ä +‡½ÉÉ>‡ì´ÿ`´„{¶2J¢ˆTð¯*=ì�IDîó´Ê + (PnEjûš×1gi=ƒQ’ÅÓæ:žµÀ (™Dw6SÔv2sJè‰ÎËŸÜ%ª³OMê¬#ϹD²°sÿ±-·ê`¹Ó€Í0Qܶwp›¿@ò]£1B»Ç#µ”`aaÒ@õ(£ÓüÞžÃnÃáM'»ó#‰@,ä´Å‡vì'ííØÄ6_Êa÷9O|²(�þ;£™|pWÃæCˆ`âïÛ\�A©f⻀×îtÖèÄ‹+`«!®Ø˜o†ªœ^‡KUe|rët~@\=QǪŒ>Þw‚ˆ<KKå4!KCð¶äž¥gçø?Ø;WuÓ|BJvá?½béÓª±ª4㆓g¡ä¹3iBE +T÷øôš)‘¢xZK]¨çfôwI_95a´mcŒFn-°vÈ)i%~®Q¦3ÙL&©í¨ùÖ†+ðL½Þ4þ\êêÂo-=fž¹þô¦[6 ÌÃÆ#8šÛ¼“àÈ|¸Ù—êe$wÊÿ|ñÞ×Õ•ád0tú‰ô±ÉÀæ“G�±$�F±?0^È@îl˜-˜sQjiNEÏi~ áZà†g_dZ¬ øÌŸÖQÖ¦Š²Y€l%ÛU*@ÒÙ´’1®Ý®Â}\¾„T÷Í«ö+‘dI'Þ; ºÝ~Y»2Çw™"s=3û”Ž\7zÃIb¼ó¯ïwþ©ñiŠÝãäÉLoÈ 8ƒ;‰äÉÛ2c§z‡¯~à~WáUO-}j¼ý†ŽN7Ÿ„8£Ê_“O‚®yP«×uhzÉüÙ¡–r(éÁ¿Ö.koxõ& +H(žlÔu8sY®´žš1Bô½Œø•ñ½.cÀ‰'lÑ#ÃKOKÄ/ãÛÉ/þ§ÇG"‰‚oçæèø·^„˜È½(ô±±ÿžÍh�²Ð cwÜ) ”¬RË„èj™Òõjùò£©œÁ @{1˜ fX¯þâJ!cOYZ™4®ŸÕ”žOndŦP² +[èÙ=89G…K‹ïØ796FèèÑe >5ÙQ'ÂHýÆîÉÑÓc6‰<™š(÷žˆ®Úhë®ÆM…ܾÒஜ’H´oDw§‡7-ݦ}d|[m!. œ—ûÙ›?žÜÒ ç–R@ ZºÎ̺"Sj+ùÌuJ Ó‚\9È¥…³"ýõ“\:Ó…¯‡Hg›õ|é®]ÉZ¿¾ÚàÒx™Øø'Pºù5½Û²!‹eN]ÛŽí#{j§Ùÿ©Æ$ªÓíóìŸ!O>ü§Û_þ(Ó÷Ç‚“_úÚ‹3·/Œß8ž=:µíΑҀ0ˆuø‰jÛ\Ó02ã„ëÆFPKç¥=Tõnt£†hV° +qˆm5Âk‚0zs˲1ú‹.MŽóå©Z6ÚM^‹a±†í¦�^YH2¬$™ î„~¬à&6Fþò‘ +úøëì�ä˜n±è:hý–á ¹+[4„À|Ó®²½iÖ(Í*g¯lÔ"çš]ãÓÌhõr£†ŽumËå}™hýÆe ÁÍñ¨?+³#>%OV»2›k¡’— ðwwgßh,víf–kòvÆ¡+ÈÔ9ô«ÎRÓ–I R/š<\¼¢=£yºY£ú7]Wa̬÷¸EÓuoš±sº`4†´R^}·”²±=³ÑÔg» +]Õíãµ:¶6¦Jg¶ä2¡¥¦ÄbÁ”(;,[¬7Mž¬Ã5³PÏ×&«YGÈiaQro*^ÅP¯?’ ¹Œ³íVO)ÊÇ™Ç.œ`´²ƒ®cR"#RÒ²_Œ2¡ò?%"Pé(Ò£Ù¸„’‹k!$ DäJ]…ÝÆ–¶Ãàp;Ü`»ƒ±8‹YƒE7k{RuW•rÓ¥.+ŒÙ߀/y7ùfÈÚKz…ÙgÂ{°+‚ñ˜%Šî¥ßbzIþÉG?ÌãÒÿĤÔoØÈ)H¥ˆå"¢‚ø›%9†O‘?;â#_Z^†AæW}A%áejþý·Êðr¼vé`ü0ÁÇ—¾Á·Þ7!ß²ò<‡¼.}“C’Ç—¾Ù„ìc¿R!ï€ÜŸ öáµ°€Ðƒ9ä°£0Û0vwÆ]²„ÐÒ!ŠÍØ,AÄ»E.@yPÍÁ>p‘" \äM·hkj}õ\Ó>^+¦æzybW«ld<ãÓÂ^©$ÓM5¨h˜zVáŸ8,‹q3=ÂV[AÁlNÔ2þ@2¼&6ÛlFcÀßa1—æûlvÚ•ü`²š‚îàp¯$‡<Ùa²œ›³Î€ÃsúE—œ°Ä¬N“T8óîô:ü’ÁfK؆ã£dȲ׉¥NFøÙ0å%V»Ož†qx3ù2Àg¡Áé4‚2|ï3Äa‚€DÍàòÖY�µž®«‡ÿ‹HÚï‹eýxO2VRÁP–CwÁñ01AÔ´€•E/ÂËq¥ä¼¼fL¨'pªbÝ œÿ=–-m)(£Ù–1eF•ÂT!3¢7Øû,ÿ|’„×Ú9¼bø ãÄÇñÁ&—·ÁÛá¸`¸a1«·îñ Q3.-ÚHZ—¢¬üš‡ÚÈ\à,ñ‘ÕôM»=©^’**wš˜-Î`ܬ”,œ+ºý9ƒv£l„EƯOÀY>B•__‹œ—(¼–„UI?ÎÞà[ŒGMà…-¯¤Y¼¢™7<±bœûørÇ‹¼‹‹zK'áŽÙ`öš=Ž6Ö›Ñ#5çK¦)ÊŽ¬šºOq Ó†ñˆ!– ð9$O&Fqé8¾1Rzö©`8— +„ó Ž?Ÿ"¶ÁkðwŸF] ãï8u¯žwäççA�ê!Ÿ„0ÄáÝZmJÎf DyÒ˜ž´"¿ÜÄÞf¤ˆpÈb"�Z^4«‡Õ³ü© +Á«.CÖ¡Yö;˜/^œæîâD#‘H<Eá`ÀïãÛ{Ú?§vƒ_ÕÃdh•}¥êêW½ª~Ueö%²oäìÃmu?lgnsáìë!û;jï²?”Sþ!?¶ôÑžoÖˆ~6øöoðgƒï}ï{ö³Ÿiœû_ðFÆ;f(¯çÕÒZ^ílñ*'¶Î«-mûìjZW™ÿ,ã»2²;{:D(ñ´ vD ºI +êæ Û-S“›êæï’ÈmÍ$kNÁÓ-®Sä¶fW@×`?·³J)UZ±5õL´š‰Õ‹kzº×‡V¸YÚž<€Ò¶ÑöœËíqš¢•@7’\¡¿!b}0\Im·;T[tD~o1íaa™†]îÙÝ•T\V§œr&ÁRºcGŸdíö$ì–+òÆ&ÚŸ}]ÜÌÄCþ_–å¾V]¯Ã'/[fñW8©jEº5nÕŒPŠÍc \ùƒyþ�íܧG/Ù¹ûäb|ãc_¯g_5,mÇ_ýà?�@Þ3¼Kí¹]ë×Ü4^µ^í v +¼OP»ü˜ÃN^µÃ?çXGlüL~A•–4i™]/-—ÿƒiˆÉÓk5;yðÙ—w’›È7Ÿ‰&èOÁ¿ü ¹{ùo”òaéÄDkåÏÔ‡ J9êàÌøa &D9Q'wÓg_Kkݽ€ ²¼êöwêÌNlãLcB*Ä\)mÞ†Ñ;�•=UZ^uè– ˆ ›‚«AñË[ Á…&’Yn.×{J…¼bKÛÎE&fú´k5ÿPÖÖe•÷Vö5¤4{QѲŠûf†Dä²£Q.õ‰ ±o‚„÷oC4°ÿùŠú„¤vo“o“©½±¾1_ÿ˜‰5ç”eÂkrnßNÂG{-þA£¹áí(ôôŽ;r9ÏÜ©.ž‰þ£ØyÛà8¿Ð¸ÍÜ/š’¸cñù-ÈpHK6y�@õà••Úop.5‚Fáäꦆå)!8ßlC²mß +“¢L}r•À;¾0öUqé©)4’OÐg.Ñ^ú>Î/#v“ßb¼µV j«„¯¢{ªúaêò÷Xþ/Ö.1ΰ3´ËXnY²ÒÜmW¿þÐàì¾ x)H¾úšO¿î;ïïöZzµ#ùߟö©Z)F¾È}Cð7<뇶4P¬'Èçž½@ÉÝ˜Æ ‰e¼ +,i©âWVaá;Ÿß¶ôFŠÇ[X ŒâÛŸ«'o_z#CJ +ãŒråßã?“4¶ÁûHKþHSþdXûÏHdhÃ#m&™¶~=¨¸z”ºË#+uö¶ôOþ~4¢üCà¾#è–~B$¿ .ýý|àaòpPýK$2›YàR€z|2íA\`¨Ï`–˜––¶ à§k1øÝ$ƒmð~¼ŽD[sJ¢ÚœswÃ1.y8S²ïþ|¿×’§ “=ù û,°À×ðOàT{c=|›ÆþO2îP†“<ˆ2ûùyò`úÁ4ÿ õ'Oa[«0꽂Ö<ÂxQÖzk¶>¨µê–#QG_¾#gAã óªmZ×–Š‚ žÕcZ9> ª—NæoÄf âÅ+Cð³Á|>õì›`Ÿë™TsÿM½^ÅÑ®Á•3cÆz‹»C©Ä¡º¹Û´}O×É-Æüƒi8ß<(&ôš£'GÇí3;åÛn3ÜpbâÞÃâ jÜ røKüWC¶4&=H1äs·‰eBmƒÄÕútØKp³U&0(lœ§cÖR!’ϵçùVl”yNÅ'+MCÜRê¾æ¾!YZÙòËÑ3½¹Jeb¬\ÏG|Þ¾|¥kl´½ÿëe? +Åžl—·½ŒŸÜT+OÄG³ÙÑøxÇ@rSxSbBQ&c‘¡3½;Ò]{�!·|BG¡Žñ† �A$1¤ú¹î`0RáuøFÔoêj~äåw’H(-ñ½ÏT¿›MïB¸ô¿ï¡¬˜Àtñê QY‹@ör”O uêHú†Y;—¡I³a£Í‹¿pýÅ_ZųÆeŸ\ËÙ®¯¯ŠKÇwæû£Å‘ÚÀ–JÇ¡QC·”Ü¡5s +ìš-ŒôLU²û¦¤ùš!ÝþO»Ž¦ê1e ‰Wf*•=½Â}÷‡=þýÓý¹B8V™éN醴jlòUò$t°[×Ì|þ"a"K¤9uR3 +¢z‹¢hDI%NÜf%-2êŸeyÝkÝW@·.ÚÐj]}NðjÜF™µAëʵ²öÃQôÛÖ‚�|ëT!ŸSø½™é$‹È8w›vP=wRjØI”E^Â%ÊZXJ3ƒ¹îË2Â7LªÄ¶§€B-š¶¿váþ .D–>I}Ñ_»/컵¼ñÝw¼Þuܱؼû_¶›<wýõÃw\ÝyLìÇâõ}uúVìÅÎR/n{1¯¾‚óžb´Þ…¼..à¶; +4‰A˜y*5ŸîÓúZrMbð*øAÿÔ ÞiFbBÕ©DË¢-–âŒV½‰²\Ò‹KFtÁ(QòxŸÀ»¹sM7ÒstÓzî + XðôJW:~§¼µY^²vNoÙ<54N:Óy‡?›±mTÅB^°(§Z»VUÝU%½JO^Sà°ÅÔ,À›ÆÂ^—ÓeóñÚ8E!¯£Š1òÇ“ýŠ+eõE…˜Ôת¦sÝQ³(w%×æ4={zÈ“J=è ¬~«7±{ÀäêØn°— q‹Í +N‡Á‹O{}~f{<¶PÉìJ(}垺Ë4z¢€P Ÿ Ÿäç‚=RF´´"dÃ[ÈMjJ天AãuXÙÙRÉÌ´±©°æŸ×ÝfVovÀ€-VX`–“ô¸ö^³p_o/˜l&™ˆG#ᔃ-‡Ã£¹ÜŒÚÚ}²>Y–ªú±¢=l©ÔùzQ®t¼ècùÄXì…ä¥ÂÝän¬2z½$à%zúbIàgîô¶t¯;k´~®VÄ,bI?oTÆNFöí'[3üØQ6xÓöÖ±£Üšý×å¯àmä—ë"¥·-Ý—ÄsäÛÏüÚA€€]ø3äY5ïÉ%œg^;K˜¢ºôø?í‚2_IÕùW1ñYò9Ë åsôs¦AÜ‹Ýøw‡½ø@‡eB±bÏ奙<E”Å:¡t‰±âð„ìÁ_/˜ÙØÍ”«rYἎ¿þÔ» +ïýdöo-¾ãsø«~¬ãñ”>øþö~ly¦ ¤zšYxmxP÷4üÐ j¢é'Qø1ã#ª×\n´|Œá¤ˆ”:¯¹?Z�Y%Q´dÐ-ò›ÕTû^#ýŸg_êÍ;°€Ï8¶±ñ„Éíºx{ÓkŠ³ö_‘ø*KWôˆr¦žavòy<',m§øÿáƇ‡??úe>Þv�|–`†68ÔÊᔑÈÚÜØÒÜH«/†çRùÞìÐþñ|zs†S|†] 6¢ÏÓÏ Ÿ¡Ÿ1>Ä_ôSx»ñ]÷⛟}¦"ð÷†Ÿá2žªžy—[&„ºL¨qÔYs§? ÓùÀ›N¥¹ÑÆÝu§&Éêòªjckù÷ΰ'¤µÍ©rЗ dªYšíÏà9Çá(t{\»×?�¼‘¸Dج©¿úwo HÉ<ûAxƒðüœþÒå-Œ$�|E8‚º=UëD0–ÉÒí÷<q7�„^µÈàï /nØI—Í ƒB�)¶vcø%uǧˆ«ö„SZÖM1ÞÂÅ Ú[M@‘^×Zhre\…T:Ö¬Ù¯¤4÷{}Íü2O·ègËWñ«èf‰£½/–‰ã» +UE£ÁDÐå¹Hz» Kµô˜Ç³õ^c[&á´{’Ùئl{ÏžÑQŸ7’/--Ù‚ÛæSQ|€È#ztDÍ–º †Wòœ’$ã´qsë3 8mBÑŒl%ɧj…›AK¥KÒÊmú +{fÔüuX-H~™~#Y¦Rn7@u¸:ÔWOUR]ż;éNDBj\ß²ÁÍZ"*¨^µR²·„·¶Ú°sk¦g_w}›Ò¹ÿ컲{ÉØîE,”k]Åü—ÙžýUÞ¾o ^¡B®‡?&O–gÛ{Ž”wtVÏnÏ’G3£QÙÞ;|p`ïÒ—+³=‹ý¬½²8”=P>Å(,¿•ü†œ‡-° Gd®`£ãÐ ¡åFt™PðŠ~bfóGø}|ƒHùñD’$.4ëýEi¶é<T6Bž +WÂÌþqòùkj¹íô4Àôžéù³Œ›39%œ)xµ[A´¢%»²Ûˆ[5ŸÜœT^F§‡oeýΗº¯9ÃzõÞiþ³M‚8~ /[²qÉî(tÔaàºéÞ.‰F$êt +†P%-Wœs›æîžÚy϶¡uúº_9wöu[Q8øÁU&Ó_r¦Gð(äüÁvì;W%r)>5µiræÎik¢í U—+–°´³'jyåý(ŸzÓ¾ã—F +=ÞúÞ×ôüàMOÌÞÚW,¿àÍ›Ôý×Iæƒ|”ªMð—°}H`))w‰v£(åsD%½Ro•s/ÊÖ ˆ‚$ò¸¤a‘Ÿ~ªÓ&/BÓd-µŒØšu˜-pn¡6Zýs!“Ì&ÓJFÝƤ[¦kuYY¹Ç¹§Uv¯UEËÞ•íëÍäÿéíŸÛî7=™‘-õMaÉoU·çÏ^—ˆ¶‡ÝñÍã]¯;ÜžÅê'n|eqÏàýý'™À‰U#îÛ.´Ù¼ñ=Õ]X¾±žéÌZ½îrÌvð±†nßyô`åÀˆ!rÝÀÞN@¨,#¾•|l0öˆ„€-«Ó±RxD Väê38gM\9Pd‘s¥”S.™¦\ÙV0ö†±òB×x¦¾½°)ûOËôÏÉ37’¿Æ•©�ÄrBžæûwà|ÃÉš½³¡ˆH¡Œ‚‚N®ßF®žv\ßM®¨×¬b € "›8B„…f½œ@fµÙ›„MÝ•R!“Êfdƒw_Q[íËjÆC]c+8º<T:H]Ÿ<¢áx}j(E-S:´£äó¹ÝQÚBJ_¥o²’6y¤¸o¬º£ðh[‡&7mª¤ZHæöO¾Ã›¬LF¼>öcS‚<ìúâ~‡ÝéϦ»©ÞB,Õ³½»t ÙÞÛ–ž§z£ÞDÀî¶ù³›Ú‹CííÝ;k…ƒ©BzÏÈÒGÇ£…‘Žh!äOFJQ%ÆóËC'ɨ77ŽÂ{TÅœDI¨õYuïЄ#š‘Óó4ðÂ¥‹‘ Êêp` ²á²¸S¨QՌɂF†g”NÃó`1ÝÛí�ñÑx£¿·Êôs9Ò«n…´6Ïs3$£õòëÓ}«ÈÐ{ßôÙ›nzÏÁë?{ëµoÞ7ó'GO½eïö?=œŸ )³Â¦z~¶Zš¤æ‘â¹îÑk†o›%ÿqâýלûü¹Åw]Ëoé8ùþ3ûÜ{ê½Çö¿îÀ5^Wú]Ãåƒ#ݻ˹D¬Þ9xmcäÎ�Â:o†=p·JéÛ'ÐbÚ„fK-C$3¶"ÚšÅÚÐdG‹Ùd9ÍÍ}ÙÌHÇè&Ïyí˜H8 בnËr[öl™ß¹-¾9>9<48Ðß×ÓÝÑ^*®¢ ãj)¨Ý3¥ß2•Uí>9vm«vÉ”O½ÐÏÛLÂ\‘¨»æ&žd.d'»lñ€ÓÍòÂŽò;‰Ï+¡ +9ß›Ë(aÜѱc¨øt¾v²VØéDS¬·Çž¤Y%”*ÓaÉ%ÝÑ(ŠI›X±àŽ'®#Hº{r@`+é?3éæ‡Y¼±a.ç àf$Њ^õJØ<¾ÃB-—œ"Û "Eñ´ÕHˆ@É|›™ðàäÿ)ÐÃ6¡ÝÎŒ�߉³(Ô^Dru˜y¬ÕÉUý}‹‰6qmÿO/ÐèÓo™úßâª{€â³ÛÇÇFGx„ ÖÓÑ®Ý|îp8yˆ iw™"ê•TrŠºõZ>WJ+D%‰øSÎ? +7\ÔK‚S²¬ïhhÞÓÂà´›wx±òcQŒJm;ÈHÐClÃÑ(‰šð …\H‘t‘7‘°—48Ïv¥Qp +´‹¼Š?ó"Á"¹s³I²0íT +ž³¤·»„K?’ƒ’Ç£hÅÎŽK L¥¾áŠÑT3©×¸Ë¾ÜÒ3ÿtËÈg“šc2õC£G ¹oG9ßÖÜö¹�øF¼¶¹³¦®®ðÒ•wЬß>£/Ë+n¡‰n-n)o-M;êe¥À¾È“;F:¶ä·”fJãù¾±Ra��¡¾ôkøš7î×t§ø¶6Ðx+i•®h:ÝØúí–}+éjWõ¶‘êäÒ¯L°>?©ö)Ã!WO+ïpïLO\jý» :XÝÔðëOÕxB³®Éiò?LÙ×;Gì“}ì/á-ø=Þ¢žËˆ$¿&_*…½µƒh\DdÃw¸ì´é6cJI‰)¬’_ïy—~¾ÇçñƒOýùÈÚñ7ð5jU#A°\t).ߎÔüüMZ"ËË2ˆ$ü�PöýA�`»¨iùô¥`ÊêòÖE‘ +”{ðÀª»ÿ™ -ª[ÿ+«>/ý"÷º1÷«Cq;óPÓêëüù\YÈÓËߤoØV“‘ÀŸ«²ži«˜Í'ÿC\6[¾»<tÞí³Èf÷má5¸m ‹ 5Ô¤ŠªâqSFþÝ]>§Õ,Çÿœºos›e‹Ï}ˆ¿íïÈ×ÙÛ>Äߖǃ8(Ó"rãoAßE7|g²ê=¹†h™Ã_+uŒ•ü‰D0O†È×k=åáZw×p4+– +‰t'�.í 66îûÀÇϳ·YùFÂk¯¤—U´"'é´(ûŠ ++ÛµWŽM-= „݉°pì•LÐ;œõ+>_ØIwô9J=.—Í6`ëkg¡Y™ñ!¸H>Á³’Ëß'ûš«}͈U;g±¬?€ |œWÓ·¹¢]+4nßîòY&ßi²p)n0Ù<þh}üßE߶õÒ¶qù䟓÷´}‘<⤻B¯|UX…]¶Ãÿ€Ü0§ý=‹‘ðà6˜Ò6qyUªœ]8G�ìñÌ6Á‹ëŸï{$éÊ´–Œo匪~3F{ó¦‹T%ª]}ñ÷Íë,®›×®·Pßa§†Ëßáëä^ï»È+äÓììã·ô‘3¨o©<Uáoq•«¨IPçVÒ®@Ôåô‡]/QFœäLÔëOD<þTëçšùòó¿¼z-鶲ž&|&ƒÅçÚî'ð{l&Cü’[íãì#Ÿ +qµ�®©`Wå§ÖWBËh¤KÿC>Õ-�Ò¿%¿WuD/Ç~Î5µ±’Ð(Ð|íµ+ëd=Z(ü›/âw{¢/éo/E:ƒíÅhg0¬D"Ù\$œÕ¸î|1ù{ð·b“7Œ „L„Ó@(%ã² å+̾tf%6Ù +H®_lKq¯=Øæ̳ñE|1ÃkÍ'üÎÞ¹¦Íf±ø=ÖT™}0W-íðcº�����Û'»×_<õ�è����ÖK����Ö…}üöþäÑ���������xÚc`d``áü÷Hþüóåÿ–‹Ì/LÁ3�É– }���xÚuÑ3 M€áwfﹶmĶm¶¿mÛflÔ±ê”QÛ¶íl&ÆIŠg5ø°r™‰ƒ~éÏ=[ìè»u>uMtA“og¡(%æ,]€ô¿¯å×ZÏ©„´3A7žR½Fý;\6£dÑèî|F:«!tg¯Ûº õ;ªõ-¢L&Ïí£Xÿý™œ»^³}55ÏuœBñTÉVêdu¡VcÊNê¢t÷¿j,©ÚŽÆÒ¸g +ùIoñ"Z¸÷ˆ×7‰»+ºhTÞ™] AmK¦â/j,µ²ÂúÌ¥Tÿñ¿È{äê`b£¤ã*hiªþ²™LýÕÿª¯ú_eäÚëpZÈ+”i +EZasN“¨Ö0Íe)åڌ֤¤ÒN¾°ù ZÛ’å~›î¤®¢+°¡¹Ë 'é(¿Ó˜›´µuÄÅ‘tºÚ>‚Å\BŽØÙVšÊZ’å5²‚’F7áOérò¥éçÊÛ4·ý S"aÆ)µ§õßoöÑIh5ò1&G¦‘ßè"ŸÑžõta©Íö–Òm4ƒ ^ \«(ÑÅ4•WüNñTh/ºj.5’BOíKg-¢±)×VÔ×vtÐÞtÓA´roÓÔåÖ9TÊ1šh2v—õïˆI§ŸüJ[ŽÓRts-iÁêËêÃUà“1¶¾`ñIœ±øFScF™i}÷ì SA™isÜ|×°P���0�0�0�¸�É�Ù�ê�ûŽœBHÚÙêû + º +M +£ +´¥¶/Ì }4ÁÒ*;L]nåö8ÕbåÛaÀ->O`qû¦këübý ,8C¤õl•âîùú‹HÄ y „ !I"<"¥#X#è#ô$7$C$N$Y$e$Æ$Ñ%K%æ&Á'G'×(D)€)ê*w*ƒ*Ž*š*¦++Â,F,û---¤.ü0;0©0ù1W1«292Ó3@3Ù4d4Â5?5Å66Ÿ757’7¥7º7Ï7å8n8y8Ÿ8Ö8è9'979‡9—9½:E:s; ;;J;m;;’;³<L<\< <°<À<â<ý==3=M=]=‚=š=ª=¶=Ï=æ=ö>> > >{>ã?Å@{AyB'B:BgB…B¢B¸BçB÷CC_C¥CÚD\EFF´FòG¯HcI#JVJ›JÅKK,K=KIK„K¢KÀKþLALPLrLˆLÔLêM(MJMhMMõMõ������æ ��|���*�<�‹���Ï m��xÚu…JPEÝ’&õ°[J »»»·»wÿyi?ÀŒnóbw’:ñÒBSkPã&éEãfzù1na¦ ãV›fŒÛmÚ4n—þlÜÏJS’-bÄ)$€?iK,°¨ã¸–â‘=VT’Ñ9IqPêŠeƒiEÉO +Ç„8'Å*ó:>UV„â>™ãK‘©_¨'>“ÇÅóÿ}fÙ²™Â:EO2ƒ#gµ—xHé%Éâá[Ê®r£¤E§|Á#Ã*Šæþù€4VwIú"zklñ º;¢Òå±¥-”«·x¤¦Äê+UlPÅöcÛIIIJ“Ï‘‡e•‰Oþ3v9þ^òO���xÚlÁÌj��Àû~f÷mÛ¶mÛ¶[¶›²mÛæ2ç–]SšÙ~ÿä÷~…üÍB„HY\vQ'Ûu¶Ã|YeÓEv¯äÐÕ%W\•S.¹åqÍu7Ü”W>ùPP7…Ür[ww,°Ó.…½SDQÅWÂ]÷ôp_I¥”VÆeUÑSo}ôÒO_«TUMÕ½VÃ�ƒ6PMµÔVÇC3ÜPuÕS_ ÐÈH£1ÊjcíÖØ{M4ÕÌ͵0Î×R+µñÖmrÚr+$—BJÿø×þ—JjiBdˆ +Ñ!Æ1_}ó]Bå5MZ‰memˆ#©LÖˆO:ÉTÒNåT_{í‘$ıÙ'œtÞ>ûpй×dÇņx¦XâKäƒÉ £ôéh]H ŽÌâšnªYfšm’ö^ª†D!qH’†d!yHaNH鹇æªì±g‰ˆª×´NØ?ELµÃ@7¡.[ÄŒqƒ,àüË̼½é¸Š=ŠÒäå3ËgÇÏP"÷I!÷Œ .!L„ +uõ7ÇTcùÔŬòdê04¿lð·È‹«n $ÆQe)‰@V/'·êAŽþ3µPUît‰ª³Wz!Þ½iœÑô7òrTEví¤÷p ¤hxÚ-LCÂBœgÿ¶mc“¹j“±®tƒlœåeï;Uî3fŽ.Æî` ª!•èñàŽÖÀYZ0|\ÐxYÌ&ÑJþò·ü>GóëƒZö•=c–É2Ú†L4„ùeÓ2‚iíË[íŽÈ»‚ª)¬Q[ía±õù8Ú”{ƒHhníöž=dhù¥KL3*]©‘°5˜›mE½(� \ No newline at end of file diff --git a/core/themes/olivero/fonts/lora/lora-v14-latin-italic.woff2 b/core/themes/olivero/fonts/lora/lora-v14-latin-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cd150db6d7e814cd9a4c6f68bca9058c537a9460 --- /dev/null +++ b/core/themes/olivero/fonts/lora/lora-v14-latin-italic.woff2 @@ -0,0 +1,110 @@ +wOF2�����eð�����ð¸��eŒ�����������������������çf„"`�„l + šm +‚¹P‚˜gƒN�6$‡ „…<1RÝ%*^''ÜàÝÿ.ï^0Ý\t·#õö£1˜°aã�³yšúâÿÏI*cì¶ñ#¢ZUˆÙaÒ&6ºÔGŒªÌHeOí)´Â󈮓ª¨¨t2m0&-±KíSì½CäA±|gÍBñ=ÌÇ6‰ïú¼ÊZúþ`õÆ;Êd„þ¨¬„ÕäK⧉ºz§óØ`µc×LŒUuêåùçýûj}_±Gæ¯+6²q6ÑL(!Áuø¹õ/‘0ÍŠ°krÆÆF–Òb ˜èŠ}zŠzzV£gÕ—x~³Î«øæ•wàÿªÚ½¯þî]”(+¡2½IfJÕp7«q8eéÃ)Ôr‘e|>ý{g<’#Y2È2ÈÖZh‚µe/à#Ú�%uÞé—6ålQ¥é“ú×áyžcï}oE¥6‘Š¢Y6}’‰Eïtú?D$—sò*-ÙfØæ^"©HHb3.ÆMjdÐ-lX—®}Ý*“™œ˜qŠ†„@ˆ#Áá¾5†&xqðX h7ÿ¹iÀ#|R IÅ,ò`ìTóÌáÁ©)íæзµTRIÍn³£§XÊ5þb4�Øýÿ9Ó—Ow÷ŽËƒV"µšÉ@È%¾OωÒÚE·u9a¾¶ÒÖ ‰±€ž0<INÉùXðò]K0NI”,AÓ€$§I¡ŠßîÞ=~¯ä±…º’ŠòÃjFÙ°!@É JGE¢VWr `µ”Á×r¢R{)µgMõý9¿VJ5%r~ñ-§LLˆ‰þªvXFà¿ÍA›&Ñ !Üðs¸äÑXRTr.@ÐA*¿Òƒ +°[ 8Öyï/s�¡KN´ñuíçMµlÿÃ"¨MœKÒfê"µº³Í=É)wŽóçÏü™ÿg0H$!±ÁM\3.Å#0�H• 况)“€"¹)JëbRåêì¢:w*¯thš+¯u +eî;W¥sw¥áÿ¿iJs½G®h�³’Àˆv'òqÞÎ*}ËÏQú¦wÚâ²QÒ•R±‘Qp©Œ0’Z`ø?öé=3ó~Rl˜¦ÂûºkQ Ñ+œ ¼•€=ºIXUVkáÐ9?„îöV?Ú=®‚KúB B‚¸çß{,*jÊI,`öwcî?úð沘2<sUß´šî¸€å¬¬9.ÿúê³^þVßHXƒggSDGñˆuRûyƒÀ"Ò¤ƒ †" �‘€(@,\ x * (…ÈÇ”)([�(¨(¢(¦¨LP³ ‰:ºuõ˜ +Ls«ÏÝ;/0NêínDg×ô´Z�}™Úà Aà³Nén—r{€|ýC ß‚`@pC€J!�6pÀç~¥ä•WÅÕ\kêP}Y7ë~(‘Çœ Ì–|˜Çùµñš·…Zk›Òæ´wž¿ü‡Úʶ«h¶OÛÝö¬ýØ^)õ™i–Ùæ˜kž~ó-°ÈRË,·Ê:l´É¶Øj»vÛ瀃qØ:á¬îᛟ~ùíš^,,'Ö±Q@jk;öA‰…1l#N*°'Ç}Mú–`ôAŠ…bÐF‚”O.„õéÄb^G>¯I`Ó.(Ñ#±å�Ä�#®=U›f´%íJ È¡¦ÕÞÒ‡v8VŽ·"öv„%^ùJßÂÍŠîœqêûíHu Üwð¾’¦"¬Tâ&ã}0ÑÀd†©Ú¦ûn¦–Ù¾ŠôÊ\ó,wÖ¿ºã¼»t&²Lv0©`®˜ÆrçœtÎiçÊIL'Ì&ÉxíÇJÙvÏ…ò‚³®•ŽJeÍvâbÜoéŽ<î?¿âô[îÜiõŽÑvçõF%¿ +121ÙÙT”2·5_l=l«ÆJª´½„Êð „ŒãNDöÜÄf-A)Èxr#îF䆵0«½‰\“í/D_¤²lÜ6}ªÚJsçMoQYîBŽ¿t×èì.qj_ì=läWÌ9/³^‰ IŒ%i–ÇK€kS‹Ÿ½[*牺˜˜Åt¶`ÅÌZPüí12€p) iX€Qàë°”Œ= Šl�2Æ�N Î~w>s�Z� ¬–ÄAƒ¡L@åxÁ‹ ï«ÄÈ)E*O&”æD©PçB¢,&]åiJR]€µZÉ]‘ÁÚ gaì?h?Ò„ònvÔ|Ýtºigêü.); Cùáêðr@nª‡Çž×ïx³… )h÷bØtt½&r ýe¡†Oý“Ä_Z3Œ¿¹üj±)v܊݃½Š“㸥¸]aÉS¸çx5¾ú‘¯Á_ÂßÆÿŠ#˜ é„a:a°†p†ð˜H!Z‰Åļœ¥•8¸–¸‡ø9ñ:ñWÍêëáy,¦VLƒ&½ªÛ&Yn²uÍS¬·ÑT›Üt¸¶º>ÛÝL»Ã,-gvqÄ<ý®ûŽ+þgŒÇ(Q‰…äÍúÕuÕ´ÇU`Kq%5Æ5Í- Ý)=ê…#ûÒ„Ÿáÿ²žyn ƒDd'ÐLÛ‰'*T$–Clj#ÔÔv3MÒš�êÑ5%¸v¬ešÝô| 8¤>‹ÊÕ–;›'ÅKŠŠÊ¯Hì íÇÆ)�-M¤Du.) –’—b+ÆS‘¡ÈH F#¡(Ó†H47R¤�¦¼ˆ¶B|Èu¨Q‹½åúBB)kÏ’ºa˜ÆŠ•´’2-!ÒÂ㫊¨ÿ› –UÝw5ŸÞh´–ŽFK©(ToŒ/çýHwŒ§H€QBÔæ&—M)Y§5ALô)´‰@ù%ÄD¡H$’€”œ¼ôî,ÑxÆ–2½NŸ|Šž5z~Ô nËNccøí1Ew\~5*U¼GÄžz“dóre‚URS&–Ë/>ƒ;³à=Å úAeƒ\Ûèâî\ˆbf¯Iã +¥†ˆÛ +I8 ADhÕŸ_g-b«†Ïáª]“Ѐ¿ÀPŽë6l™d ^póáYa#òØêhEV®Å¯ìúÚÂþ⮯CI'ÅãZ<õyõZ¶ª#š“ëKGñ^[íàêm°TÛ–Jnl¿‰C¨:*p†rŽ\¯»÷¿˜‚’ éZF.&ç4,”5±gËE6&8%·¨!9{‡Î¥øEû?JQW·YìdYÒ£½€`vÊSÍ’r}û:„ºGR(tRiªBú Ë”7:UúP©€×øqÛÒÌÕR¬×¡ ÓÍÕ£¼ùÉÏæ—Wåë'¿(”ŸaòÔ¸"¨%Z:¤ˆø¢„F„¹jJ+ƒÙeþ¸jpÙatELMl†PZ4!ÖÌbÌJH{ŒÍr6u^J9ªPh>¬Â*ÃYúj +-â@•‰1À´•˜›ôGCΚ:çIJŠ…¦T!àà)©�¥Œõäj7հⶲٔåó…f©v–¾N‘n©!.,¯¯i ¯š…p åûÒ3ø¤ê¨š®¬)*ѱÄ/^Ã,H}N²¼¨Â«¼M(/„žU^ɇM’bΊO»É£þœ´Oe”cO¼˜ÂЦ-�jª:·%ÝRž–0Ë.@÷S]¾ÇŽ©o1ne|a`´·é,æ¢R¾aÀH‰¾q£ ‚Á[¶š#hjA�¤xBd!ÊbFsUzfF;Û¬iã »’j¾“M„¢ÜÀ +…B/Ï›å®7ÙfO¡@© ¢lˆ ‚G´ˆÜd\–‚*ž€Cd†vƒâÁB‰7ÐÀx»}qÛ°xùðp´T"Lƶ*ÝÓ*‘!³¨R,²!®ÜhOÚ�@ Æç-¡7éFè™FÊ• + î=mnè+˜Qº˜iR8K-¤·~Pü ¹™j¢¹tÿcºˆ5¸ºöæ\õ¸kò’ª +B'4&µŒ½wô°œŠgñ#O˜šdìøŠ®dÊ÷^ðÀÍX7:Œ�sw€ë>CËÆÈÀÊÀ·c×æa¢—+tÈÈ€AA©Ã•Óe¾¢ÍRA1EŒh†1 z5Ú™žÀŠž»KÜ(@q&:§;¦õLX†9ðÀAX‰dÜF¹ÅÁù\'¨ÈjÌ‚öÀ,ìкÝõ°œKŸ;¹¹=lT@IP›`O¤¸Ãp:í¢Ò l°`ê ¡•¯ÉRÝ•jÀ¤úiOÃÚ… +óúµ)L$S€îÒ!ùÒ§õç]Þ¹ÜÌ^ºXÉå‚d9ƾ1$Ÿ“Í.Ä(Ièïic2ž´[2`Û§w™Å/y%Õ/TÉÇ×÷¯…´1Å5FÂämá°ÄéÔÓûÆâÊl%²ÏLGT. NLP€eŸh›v>“ò¤2jÊÝU¬£¬6óý\yÖ|ò¶°¹9xêlCÐ}¿‡=¾gÏÂHå¹èœ³eF<Díè &¢úËÉsƒÍ y\ÁŸQ9Ðåo eZV¯†RÖ'‡¯ïïU)rob£{xЂA¤ÒØýM>ËA~|¸û¨y&ï� šxz%Ò¯¼²ê"Ûˆ–4E°àDÌJ‡õ]Ílæ"Y•WiÜ林ÛÏÞ#@QFHbîŠâÞÈùÓ¯X_»Ñ\éíÇ¿m7zÒ†¨ÔÚôÇÉØYÖGÔ—jàÄI}¯‘ˆ)EEú&Ò¥3_®ïÒR³9ÓÝ«#n#³“C™øÅÙnÛ +ÅŒOWe”&ñ^R––®´iY[<kÁŽàOñIÒã¼ÖDO&z¡~²IÅýòÔ44GÔíWªò�ùAÕªeh M(1ÈËi_œÑ¶D/Ü€ -.´ÑpGsŬãçNµ�Áì�ÇFA ðö®4Èš(htغ¸»‚1°0á‘N‹³qp‘?y ØWÔ¢Fr=šTy®}6EûÎ…éI“H‡Àô¯ÉÀòXÛÛGn¤ÂÊÁ/¹=Ôgë¤Ú•�[q„%„â%‰fF�Ž^ß<OÉ +ØÎùÊ¡I�64{Ö³,1®¬Ñ”òè¢Å±çÑÒÒþëøwXËá¦vƒ�L9õ9.= y,ÚÂ2òSNªõ°æ¼YQaîµÝ¤3Ýé çTbZ>5y$”÷É ÉE<{ÿ@Ž^¹P×î{ lv¸FÃÓu¯U°£!¤AþÈUAq¤ì’þË„ÓÍH«ý£ä´a'¨A,œyl‡‘œT<æO°t6’°7öQUöŒ¹ŠLá¥Þö dÜ2ÓšIìu,ëøÆ‘Ð0NOIt*ÊÜÆm§7ÄX½É¹Ál8éyñ�ëÂ)Õ/·Ì«>bj³}æTq7dˆD'\]bdÜ„•T$ò€‹`¡M§·‘Qh@Èîl6ËÖ §éÃB+è(§¼ßžÔˤ5Ã{Š¹3 ñWyÞÔÙoʾ S*Y¦ž@ŒkÉÈ6eÏ£$µsžÅmù†Œ¼Çn¸MDª`@†ª2ñ‘vñpÀB½.ÔÒ+œŸ%ØpV�Å4ãË«0A«–ërå~êº { +¤ó\ˆL2˜ºþŠYæ °ŸMz©€<l` ðØêß’·%1°pðu :lÍ€åŸÓSÓ¨å ÍE‡†±ƒáð‹À&– +‘…%² j + Éĉ¯)"‚–@\SBMHC«'†(¤ôbCÍxF"Vd!É㜅„N1Ï Ýë5i|2édÕdÈ “_S®P1…è@¥RåT?¸‹ê4šÈÕ,ªL¬©Öª“F—(5iW$=¦Ðš¦—\ÿy–ŠdËD„å¢Ä:‘cX¤Ø(Rm‰¶ˆXÛD¤"În‘m¯È´_d9,â ¾aÿQ®ídÀ.C"úKrÄþ«•)7IÃBúIìØs§¡.ûÕ„‰O\‰… +RäGz^séaÐ!0'?E¯‹¥X Ôj?‰| +7(!…ƒÀ!©DH2Šuh~¢D%Çpϱ|s,ÓÇ®€Ÿ›�jï@�ÚC†2QºŸÐ!9ó¬uŽ¿´Ò¨Û]jX½—-¦€ÑVç·é^“ºM+Wmï1F×yùQƒ„/äÐUVº†&¦/qÞ³©ªAý2âžQ3µ5”Màìœy¹k›ù^ÃIŽú>iÌd¦ZV~ ñ’¯v¨ú¡ u_(ÉÏŒ}ŒŠöY:UΛ·~±ÝyNL‚®¾2`=ûÚÉY€Ü‚4ǘ3yÒïÙë~¸Ë†œ¾ä«Ù`‚KŽúsw^Vؽn£îjS‡«ýÔNºßÑÛå-zZe¯¤NΦŸ_l¶Â…çMZô¥¯ðáé¤|C…ñw XcÆ?-Øï€Ò\¦LIÉÐc¥2izGÌU©K¿ô&ÛXÌ4/š +"ÓºÚ˜Ú˜úáÚ7Û¢€Ù8Ýãxä(ûãhãÐQ‚à#pÒ"£1IJ8U9Í9Z!£4-ÁéQ`p¦ZFÙ¦ºÉÒLtâZ—ÿê#HËÍ‚fc²Í ¤ÿ8&8³gX°ö\¦ÛÀо«pÒIm@ÁeòŒýR€ØÇ袥©¨<º£®¨gª¹ÀA@`¥Iüæ¸�Ü� +¾G�æµä0˼€Î8ñ“(j i9@þèÒz²r)†î†®¼dx#ÒÀ—˜ñ %0@Ú‚¦¨¹Ñ‹Á6™eè†ÏiÝZ’éÌ4»�)Ï1¥ ¦ê)©$æ ¨/Út3@%¯ÝGƒI8ª°ÜˆìWË!¹"±þ¯ÜõÆ U%S%ùT¼ÎÄoЙƒ˜XkYvöW�*ù�x=€€ž�XÜ‘‰eÀÀ("rìWî6D�‹ÒK1Ë88¢œÉ§¹Ÿ‡k0D<QœH,’‹’D©"¯¨G´Ï‹ibæø8]\Ä ÕæòГè"ŽHðšL¢”¯<ºp €ž�˜mÕÆÔ±I�øü�>¿~ÚþtËÓž§þ§Ì§Æ“;ï{¼�Øâ„n6ÖuK¸®¸H¾òcµ Ö:ás_Úh»–:k•ÝÖÙd¥÷}ì¢û€„‚‰…C¨8 j–Ð̲?D¾ž‘•M²v[-³Í ›}ÍÁË'S¶|A +EÅ”(U¦Bƒ&ÍZLÔªK·IzLõk¶øÄQksÊq§]wÙS_™n¯OíqÅ3W]2`ÐCŸµÜcï˜aŸ!‹-± + �™˜‚”ŒŠÜyJ&IÌRiMà”&[¿€¹ò+‘¥\JUêT» V§6í:LÖh +µz»ìtȈƒ’¬¶ŒL¦Eªÿ@úF~»ÉðÀŸor_�8“b}ée28Û·ÓKyÄ�Ä{?T`¯‡ù²Gùõ³çâšé[X ½÷¤ÿ+2’z*c-ñD\Ê W‘€~±¨Hø³G–>wi˜r8RÎÞ2gzúÅ[±&}_ÿˆ5§+ëÎÞùHkœ1u%ç¥\6£Ÿ{aô9~Ašjæ˜vëZ¢¥?èß܆ԨqJ¼ñÄ#5¨ŸÆ]þçØ[2…MÛKR©Î¢’øª&Ä+?dsÀdg ÄcO):ÊÑkÕf-*2ˆ‹Y–*‡óx †ñÜÊÜÑŽ<r"ùÿ_/{žô,øplâ©zQ« 8óÈ$Ä W–À<‹4ÂHÖòN“ kG$¤×¡td;8Ü›sÚ3©XÚ"(g(þíHA—Ÿ ‡î‰3¤:ÇÐÐLE‰Kw[d0LA‰YœƒhŒEýkŠXy½f:cÐÓdt-†³€´qÖô>éfoX}bq˜L;™Ñ¶V4ÁÀ6¸«E:{Mšöp¼Ó;š(�´€™=“:%œÕ{/Þ1$;µ°wî3kzF+?ëÈ>êÄï=Œe¡T½ˆ«½Ð,9‚¤t,¸†ÕEÍeã Ìa$g欰¡Ÿ¬a§Ïè½Õ<Z1«†BTòK‡Òà8zÔK‘°LÒ8gJ2 !qèHÏ;/a)C󹧆äòšz$+Iù§¸Y–¥<¹ô‡\8ÿY\ßÕŠed”ŠŠdr?AŽQU-'טj&©n²–WÓy¦n»èI¹Ø;÷‚šä«Nªñe'ëÄïÁ~6Ž¿Èº…%6¤¶Ÿ:£:T@…TDÅTB¥ô¦µ €&[Ñ°o`±@+·¼M¨FV6(XÿÍY;^¯–1€1Æ2.q]4s1fb€&ä!žù$—[)ŽY +§CÿL‡jLAÊ\°m¼ö?6ÇYK¶l“¸GéÏÎ +ç7�à꽬çY8ðÕ²�Œ!.ƒ7ÞBç¨o6—~’¾d¾B¦rvµ·‰`ªtì¤ÏcyuEø‰i·Ã£ë–!œ^{²ôÍ@8´!ÀìMæŽdMn§UYÌÓ(MÊ žuµQ?Y]U±Á? ÊpqâÑûÕ{#»Òê•:”M(D +Ôü2J«•¤#óДa&Ì1Î’FOº©°€r)ïQ€,É(®¡Â©-²ÍPCðTcNIT²(RòÚdihÜ\ñX 8šdQÓÍ·‰ˆŽ^ƒ”HDšõòmˆŠ6Ü7KßN@‰ÄÛ[¯ñÎ×hÄõ‘Á;“ñd«åì¬H*Ó–¼2f,f¾oÿ.ò†"eàj¢#ˆÇÒ+vnÓ›Sõh´Î£pRhê_ýÔ¯]ÈXíŸJfÞïÈ‹’kOþ}ShÇ2e}ÈXs´ Ëœ"5Rü#‘Z"�àWMŒËQ˺•WeVzæÈ8gö^1.e<0ŒfÛú¹‘uc‹feÕ[]o‘±éÝÔªye…µ†Ô‚Ûa¥úç¦yw›[Orwv_f»Ï±û ìNzüÎPPc”‚2fóge^ÏøxséyÙé`®Ç1Pn�žòK�ö"0Pa�‘—cí�ö$r*_$@ÁAË�Š’ƒ* Pq°_µÌŒÕ˜±:k0Óo +²·µØÛÚøÃÞƒ®wŒ¼‡ÛûŒ|€Û‡Œ|ÄÈÇŒ|Âè|ªAj³®Ù!3Æ«¿€¾qÄî.Û# +j•èI¢ÖØM³ ;Û°÷w¤ùƾõ¦C¢Ž‰½Ó–upi8¸„ƒk‹è–¨{bïÙ4ž‘Æ+ÒxGŸÑ7Q¿Ä;í‘mm×îj ÷䤇N›©o' °_¶oÿc½ð5`¹¬ö€ö Çú �Ò©‹SþÃÛô†\6«šfç¡C)ÐÎð^}‹íî+è 4„Zýû„WzãÓ“^)×YoBk9°Æ CÙÎÅ–RCœosøJR¾É¾…|;b0Do-ˆL{I9Ôùú +x•ÍêÊŠ5 ólU²ªåQo8q‡s§µlìÎ,ËÕ´‰Ñ0}=´Æ|VO;§Ý°Ñ♪{<X +m³ªÎ»Æ†ðd¥µ~{UÆW°j|\èrß®~×<e/wÇÛEpãé&/ZV_fƒØpë†r+]ÛŒ]Ô”²Î¹Çø”³Å™b3¤ôN=3¿ÝöÀvGáÌ•‡+Xü¡ñ·2£eu,«kÖVfxf…q®ëœ»ºRQ¾h¬»ïµ„q<Rc¼g@ä³ÎMžË ˜z(¯U‹é(~:âèéIð½0ÍeW,„v&B NCëyæúér%Zs—IvbŸ=LÔ“ŒEШºÊéQ²]@(Pýëv£` ?ëM>–]1’}Ó÷æ–u¶õ#´»†ý›ÙõHà]5ËÜ*qÝŸOÛ…�k8˜ŒaÕ½ïÁÂÙ²K€×ñæ´Ü;:½Þ�/ùA‘"?ìG'g‚“†œÛøI„YžkȌԲ¶Eçql¾ƒÖX³H˜û„„ˆTazrc©�OÅϲêÞ·6Dÿ]Þ®†²U\áO`‰}ñ°·õ„A5ÅxŒþ"biÌiS÷acbN)UÏ?Șdm:P_/ÒñÿqÆ’Æö²;N¾‚˜J$aU[L¤L“‘äF\›ÞEƒ j€ñKÌ\÷üQê…4lßžy$ƒ%éû;®A~à@˜©à–ÕÏ®c +`r¡j]ÿ£ o~ î2Ó�´<}Fjš™ABvoC”tÙk%œ¤¡Yêsµ†™AA$.Ìè]øCô%ôo7+hÌ-‘|ôRlã[.Ñýœw™íç—xU*î'ÎÃÆS2Cƪ‡î +Ræä1VÔBå8@jQà6¿Œd',hiázŒ%_û}9Æ¢iWÔèF(’Ö ¢\¥?¥î·¸{%Hé¼oäËwrؤJ~¾D©ÜËÆC9$ÃH}LÏ„ÃÚ¼ÛÁùB¾sd÷ +À¾ÓgAœ¸³8Úòâòúð¹ã.¬´ z‡2ÐFãhp1ÈÊÀ¯Ø6—-”ƒdø�Ù +)¹0£Cöªß³8!"ð¦w}Xu»BÒÈÜF—á,¹ƒóÙqŽxnm#²ù¤¨„>ò\6*ŠWiØàé°ÞlêÚÒ‡Ï.wÏ6íö_‡³ãJŽüÐÓ(Èeã£OË +˜úý딚Q§ªçw^¨ŒsÏ›i ++AùÎ9 Ó0ÀÏ'&‘Æx#Q[K]|ƒ·6Roà¦Û\†>žÃ³;òƒ½mÍ%:*øÝxEˆå¾aeI'²+öG9‹3)@”4’ò]Ë�ü{âñŸÆt[mœ*ñ·1“äZ]Ñ> Á#μÊj††•Aß2¼$$ËŸ1\è±WH-ŠØ”sëjsñx‹oí`¼8g§Sè1q÷ËÆ»òY@F*ë>O3包i×ç5Áý„ú‰Ð @ž2k²~¡2Ñí¥cöÒ˜|Åu^>ö&ò²ãÈúö×¼|V%XëÁ/Ù/wfOûNc®.!`ÈD<OTñCŠ™™GB¾þã¾Â}<—‡µèI&7ÉMhi¦¸I¤ÞK~HT4ôE œWhw–qfxñˆ¬LEûU7áÊ°£Ø«€Ø÷ z‘dÅEœÉì½h)R´¬»NýÀÉǹëàxQ"Ù!⌛÷æ€vW@ÕHŽ][¨A”\SÂÒüòèt¬ +¯Â¥4v5«_´2 +XQ.ÌohT®‡\±€GBGg;å…õ�«rìíFÁK0oü ¿¤³òîFSg—qï¶IbH¢¤RNR¬Ó>ž£ïPÉcû6¹;è&cFÆŃ濿×'˜‚±é=˜ÄI†NÎr5›¯]ª>ÃÏ|¬tÑ9ÃÓ,Ûubâ‘T^‡ ½l§¼ežù+T‹)|mlRh»Š‘mûF/ZàÊ8q™Š6“¦C]nþRy §À Rœq„81ôœz½|ZƒY©BOgN»Z¢—NwXcÓ¨ï[Gç«·–‚ÀžÛj©©Q½÷y¥P¹»ÚlØ´<Ÿ…hpÔÄèg‡„_ãZ¬$G6mŸ2Ž1B³©BH©ébšÉ'2iyÛ³ÓŽd¢oJ 0öÁQ-D”ܶ‹Æ]Î7#öweLÑe#ß²IN-ÒÆm6XòÝŒew(pÆ/õßµ§=Hó|¶< J ÄÑõ6â3zofÝžØl2dçb“ºÔqá‘UnÃæÙ¸ç黎 3Ô6ÿ.á61`rzàïôçRlM›r`®ø£âÑÅ£8zŒì”³+²ÛúÖÝÀYh¥]ih%=>÷9”`]fO;°e>ÑÜÅ™W’(u¢ŽP]ž|#» +]‹2E0^BBµ\Go†ê]óÈv£Úªx&›Æd ›2äf“ZòEWÛì ÎZõ¡Ùi¹UD1–(½èi¸Vh˜°4]K±‚X˜/›hFÓ÷Î1›ˆÌúã,Ç©¦—±×¸à+¾ëdbdHÛYV}ò¨NDkÊ5˜Ø´[dËßa*¬,wŽ‹ »R£Å‘ÞeF"F'0µáù »ƒ4Ä–u=F8a` +õeò_À&Sl G¤ËâF¡CO(›ou‚@Fhˆ‹Þ±¹¢x0Ó_= ÂÙI=Oé}dxé$*qý«¬æ…¬r„cRF{ïðö1Žz:kßI›ÆùíCSìiBv„px¡)â¸F-yv—0ããR’•}›!rŒ*ç$g¯’R +^š©kåPÕƒêÐo*pÌÌ=#40 d`äIèYç@‰:ÕGF¤x!¯¾}`°ÕXrˆ;‡ýéÅ“Å¡5æ59bƒs�-±Ï¾ðÀ‹»LœC¶óس]Ò®úa\Rº\Ì®8ó7u•÷:F0iõÊTëµØð@ÚúnCIB±ð}4¬@Òc”íËÈ#0¬¨ˆ¥"0Œ³»×AK&¹ÊÃ3¾–åÌ˼«smèÇa•G†\§™�ãÞmÛþpòõr-á r¬nCQ¹&Ý�·Õ¢aº„iC uå¶qv{K ò¹Kûª˜ íLI¡¾Ò±/Í™Ò ›>æWlŠñ`ü +tHïvF Û¹^¢Ž_†'"3ñø·7ýÙu— â^œcœöñŒ²{õ“`= ûùDw‚þ;ƒö}.J‚/š«uDã¡÷d›œDÙõ_ºAV{êü·»FÍ.£Tï·n9@íɤë08Í%$ºƒuИ߲¦ý‡r K +`i ÊQËÅ38èÝþƒ‹‹ãåèþ•>´Ôùªê¶Înæœi{š¾p²÷Ò¨ÆÄFytùÔ'@ +Óêr–~U§±bûýÉ8SÆüN6©1'ö Nsý‘{ Ú["I{›¿£à‚GöFöÎËíÃ9dTÏ‚•÷¤¡Õ½¥£M£Zlˆ§æÁeBsÁ°þ&È€1(üîd9:L¢A׳¬^_ðÖ懷]*•Ú ¿rªhѨпÉJÚÖ.„¿ÌÍ(H·o?—SŠÅÆidŸ1mg·±ZÜ,3ÎêF!åÃ=žÔ4ñ¨ùúåv,ß};Šs‹'ÆÒ5:BûÐAöZ÷üb>= Á¤í=Üå@⥆œ\tèÔjj^¹·”oFdŽØÇ9\JÞ‘Ð +ìáwÆŒòµƒ·}´0½0¦k4š;Á0ס‡rœ`¼}¯ÚÍ[íûöõûâ™ðØÈØÍ–‹þéÊ’Ù°ypX{ÑB+ö»§‹Ë0½ákùÂúž–®´6ôí“SÜÄ:ùF?÷`„ÓMÎH<TÊ·ü]Æw*È;WuÈ'©.áPöÍT‡ë!‰¸]ôÞ:Ä ^=ãÝûß ;Ãîp…ØÎzÔ²yW^Ö¶“"[“ÚèççÕõzp´‚cÌÚô6£ÿ=:ÚÁœw Ú2u’ýg؃Q ,yëðÈÚØÝ‹v-:âêظ2âSrGV”ô‰ÕXåô€V 8mËÂÑȬł%¯¬ËlÑVâײw^¡±ñ÷Œu½UÝ5¨þÿ…?qMúÛ?Õ£{Q‚ù÷€CSêAÅ8ROøþ¿˜núÚÀ’,Ruœ1Ì}—|X¿dæîCÙº‰ p¡Çþ"ÐD˜Í9†x ¸{ <ïg&Þü3…åäò²á°˜ü@_~ŸŠ(}…˜u�̃ù§(b¡Ÿ ”Àüç›&ç¾Cv%n9;µY,Fó‰Pã„’<gzE›ÑŸ@ý6AÆÜJªÊ‚5™¢àcð3ö¤p¤Ê+uyC»&ý%þ©Â’`UóJ½Ùã“1£Q;È´â¿—"Ê›c9}‘ìõÅ®wº³3=³RVÏOÏ_›‘S¹¬8ÿ½ÊÆбm]“¾¿5Z-8§öûwê„;½$1]ÒŸ–‹+hÉÓÉzŠ@÷\PžCj/³6†ŽmíîïüñìW[·4”ì9Ü4¦ˆ~k¡²eÙ°æ`›<Ç:¤°Œd”,,É[_½`õšÕã”»U°ûjþšjS`Í[Qj8³ožpˆ»¡íÌãqrBBlÊžòßcÑß9žgAøoééÎA> àUüŠ€‘¬Å~4Þ>ªŒiù§Ïq±Çó«7DÙø㺟ÀfLW*jqWIU 0ÿú7ÁËã±ë£kãløo¥@YwSIN_,g}m4}°;/GSΉáîù`þŠ˜?#ýGíæþ"Š«—æVÔ7†No›Òsïëá§?îá°Ž*-™0ÿÑð{Ž6¸ۈJX²¿¼†‘{9Ø‘&Ü50ò¸£ÅÊaÊO½|ÖaR•o!¿„•aýÛÖ ©—E¡¡à«‹k0OÓÕcá¹s8¼oŒÍrá+ÖÞ¥ü»Žs3éß©¾·Ä4ë =Ùƒ¨”vf&ÙU#2ÖF³ŒB¶ÙlØ9…p€ûOÌG-¾ñæsËúŠ«ææw)Ò¸”)\MûC7œø‡ƒO +öç§}Ìþüù—2§ƒ_s~[*`íSXNANЀ‹Å”+¿ô}×ûaí£qÔ‹{}µ}ʧgÚ‡LhJZq +çýåu™Ÿ¥¨ºj¥<ŽbڸIJä\XsŽ"¼³MgaeB¼Õ\Wô·¼+\7¤¸W·[:LË;üüî&ÌWÖfBä,=Þé{pð@ù<‰æO]a‡£"ë~·OìÂàGW×g¾- lëééX]—¹¡¸¹´²[ZÊ©5éë +sM+Z«C¡)Õik + +mﶕçå•ßJ»¯&ç¦,(o=ì·—ŸJ)sëÝkÃZîM–ÒÔçO©ÊXãå:üÈc«j£ÙïÈ?éaæèå]Ÿˆ zŽÙ ÇlÎ5ü<€6öž™fLüÿˆPp¹Þâ¿6Oå’Ó«—…+*C'¶M™ùU}‘ìÍÞî5ž/;åÂÇÿן]V[ƒ··®ÎžÃ»€^®´”!/’&Áoé‹Á ëÞ.áå<¥£VŸR’VÔ¨8©¾zóH<E¼tIu‰-ymÖl +]dLø> ]-ÀÖ�Sš"–ìòU@þêžï|öÔhp2O½éϘ¨‘æÃ;÷EÔ3 ŠøþælûðôŒ’`V¸»• îêÓ&˜¶M‰£Lw66:&ÈZºOofWc/æ ®ìoKš^Юmøiˆ»tt뀿ÈwdŽ–²ì¼$Ü)i ¥gg™åÇÞôþ4Xsmö”Ò6Sž®’Λ7@¬¡$ìŒùÒÕ\Šõs“2ÍJYqeZpz÷ò8ZŽ7)ˆâ•–PD?|å?9Èû§HO!Jd”ëžºï† ¿E%ÄÑ˪íJ3Íi¡q ¿'º3!ÞcŠö,…ð/9¡+ÔßÞ4q3ƒÊ3zºsüýèèðÈß ¶…'Oò>fˆÂâ.þ·Tlfˆ‹Ê;ÏëûX(úÌSñ]BÁ´9y0t›lX½v§|PŽï:™æéæ&/¿ùsbâR’"qœ¢¤ªâ¥v"¯k!3‡š…¸,äa4oý‘ÚÅNù@)ä´.âDÈùg™¹Ï lÂÅIwºM¿ñÎ^íÿ¯wSóºÔüﶆVðÿ l–Pn[i%WùJ$þ3½!ÿåÖ£”ŸˆÌÌj¿´±‹ Œ¼äâ×lÙ›×´h«Ùó ærexø™+Eé)\œP…(BV¤(xÿ¿!Ñï1*²k#MíϾƣèÙþï¬ÕdˆxºÞ.ùÃœñ/wbœkDSÞþ¡|@IŠ)—ÁD„½tò†›u+ÿÐÓ@x$=‰)Wž·¹(_o>ûêÑ\‘«]–Sª¥–Àªþº2Kª·¨´Úµ±¿¢2& †äïV¹´Ñ…)_–<0œž6fÉ”ŠMÞ¹)møó3µ…îï^ª +'úRí¹êÍ+ÎSr4o@ê‡ +.!EáJ’÷÷-b›h@„Ç‹Émå ¥½´#K”Ûƒ©Œ¡{ýå¾å¯©I^ÉqÒlÙ“ÚÏNŒà›*)`ñœÚ"»ËÞT°zðÌP\öéGÛ-eÂ6GÚ¯Â,qhAÒ%0²g=³ +ìêÞàÞœ1æ«O`÷2Ù$ÎW9»ãƒþU5õÎòma*Ï-’„Zr2ÊZÛýæÅËóS¤¾ +šr¯²\×eñ"^ÊTk�—Þ›)çStdN%EXîÃ&Vé»/_/EgRדæ×xÃTzÇÕOà}tŠ*µ•”Kûª+,nï„¢:×êy¡JÑ$Òo4+”,yË.*’Íòæˆ"²¸Ò$’ëaÚnÕV?†Ÿcȼ0ëìÂÝmº€)±Öµ/¨ËJÍé$¼_àræǧû¢^ áË]œâª ýjË-KnH´¸›ø«31_nOd,h³çŒö*m©ºˆã-¤ÊoÊò–—w7ZµEò ¾È’büŒLkBŽØ\ûg)—¤¢3&"‹¨ze¦m©| ¨@õ‘~üÊø=ÑÉy/”J§Ç˜;iRY>y&f².ˆÌDä \Q 'FQ2P5înóbš…Œ7„÷ðKú—v +=d&‘¹ŸAE,_2“‘™SÍÀLDf»`Ù¼²r›ÇÓ+Éx·¿¤ºHR‘ö9sbrmhÐò9"ºAÙÿùr•¢–vÁëfUVÙ’-Y)J.ŸËÚI¡ÏºöÎ2g™%1Ý('T +ˆÓìOS2;åB)ÂPsö‘ÛøÍ>ÈwçæÍÛO¸Ü1ëw.wœE¾³Ó Ô¼«Ôñ51ûÑ´bSi¥›½fÆ-£Ž’O][æd”Y:öIüL¢S6®kë„f¶–lÜ�A鶔kwþïúí;ÉStw«©ÛH\¬8U?PwŸOŸÈ`ö©zIöú6T1ªÒ/%wÉÔê‘£»@þõ§_›TÔE¸°ª¯ª&Õ@J”©s¢©÷AJ>ràƒRÞùá&«S#Óðü–6/gG³A:$O´‡â±'~ƒˆ‹fóËÁʺ‚�—ÉW~¹ïÓ’{f/w˜JŸuíXn¼³]¦.Kt‹kh‹øáL{Ú¿‚î+c†ÌT56Œu‚œ‘Ñ—êw)rÎ’%êŒ*r)_€òò÷j‰á~óÅ +O“€ok ÌÕ; ÚÎc-…wÌÅTbƒø&“™ÄÜIA¨»™[/Àyr`u_YÁ–äÓòBû`m¯jhûxÌœ™ê¡åƒì$ˆ¤Œd%©½N¶§-›ïø¨ÈÆ÷Ÿƒ‰`|(!ÁNlÒ6 qÞ¯2ýìÊ:k]ÑXq’¡ÖJ]Øʪî«Ù:‚¹:ÓZ=E–¾´$g@Øe ›{\Úöâ_*%¶fß^öWzùW‚˜Eí?'Žÿ[CO¢ã¢VONü5ÛÅÔúÕ»I®|A§Íº×õõX[^<Tï+5iJÓïAªÀ„lŸ©Àd€Ö•¥˜*£ÓBÖ–`¶)Ë +ÂÍ56ÄzI…,ŠŸîJSluÏ<"º)kTŃ9™ŸyÛµžUó+9µè™(2Ë÷Lu6Ž3s©šˆÂ´P/‘·qÔk^‹–èƒe3£åæY¾jË0¡0”k纋CòYî@|T¾àèFLqeÒ¯µchrzHø r–ðæØ»™,‹¸1×/0†÷œfýÜììÞèg7Œ"=˜Iä÷y|DnÀëÛïø•´°tVy™Ííi +׺W÷‡+€Bq$,ŸíÎ…‰Em_"Jïªæ~0ÖΧo`ÐVÓ hupñ|K-ÂPÓÈË“Š¨cZ¥ êu¤¯÷ÊiÕÖM±˜UÃœF£6Q¨K +'‹$CbaZåÓš$j+"³¹*SŒÌÅ4zŒJ]Rÿ—ÀRKèšóÚiWKÏæKMÎc)Ê%xDÉí6ìE«ñÀCæ,/Ìu–M£õÑdQi}õ»±ª„×¹Š!âÒ4ŽTפä.Â5¡Ja¯&^ˆ_463¬XÄ%åÒéÙL7-•’ç¡g¢Ûy +ìäÆ §œÕ×õΔñîO_m’m;˜gƒŠx¡Yå[þÛ¤³\æTâ|sP9²ýtŸ¼oßØ\½”Ü…!÷(8~ž6:?ùb5Ur°uE°!ÚÇÐòé³d9Âýõs¢•–dsVŠÝÈÃúìZåµ£sœe–ÆícéµynŽ×Ÿ]]i79’‚VÜTÚ%b§Ð‚å rEQƒ[€n` é‚„££è÷ÂA¡º}x—2A?'Ì89–V—ëæxʦ„4;=4,¨‰Yl¿]‰mªÀFè–ÿ¶©œ«O&ÏÅUyF¶6XdÜÐ’ÜTœgÀ–y1™|Éôøä–&n~hPXùzWe5“þUüüïÇN±¨½T:yc“ÿ`²ÅRÊ‘’òPBâ÷ÕaY5Wf/×Ä ølF/U¢¼œóÀRÈÏý€¡CÔ\HÕ5Øã‚SRÂçÀÄîÒBEéÞ1Y¶µ,óSG[fÿÜÞtéÇ|æZ2sæ6¦°¸î<uzÆßŠê“ +5[JżÂ2ìê"cbÕßǬ)ÇdAú"׉\Î‚Ø +˜Â<F?và›OÛ¾¸•ßPNh–Q&0£Ÿ‘lVZÝ®‘~TË<qbÎ=Pÿ—§nÖv‹?ÒÅ7_øì’õ™… A]êId ›šÐ:1[òg¾è™µŽÊl¢‘«¢›¥²…úJd~y¾>v9ºC¾5ÖXšåB—Ê‹0ù¸*Üþ:«È‰Šd¿}„Xò×b´ãç’?×E)œra¹JAîèÜÜ=TzûµO[ì«&jýÊúÊqWdÍ cæ¹óQtI·Äš‚%e!l“?‹?É9ü[XjkË‚ºñãÆèöq9Õ€Æ3–†ûõbn@ <ñŠ~çµW—Ïùù––ÂB×\(™Îbsêñ£î€Ë,-ñÙôvG‘Ó,‹úÌúua—9. Ó¨«“Íq9²ü£m±qˆÒ”Ý#³&œZÄ'Â¥©;z&FòdᣨÙdÉôŒ½ü¼Ô\6}¦cKVøÛVª©æÿ€‹yêÍ~´L<±m´³Qêþt]Nr¤|Ý~D–Ë'.<¤Ö•{üGåtÇA^kÄt+®üŸO_Ïdìe‰Í¾ÚD×Ú®Ñö0"Ê(®( — k*|Þ¬ú)Inw¹òq÷�‹±ˆÆ}<Û#Ò¢åv{I€³B 2:µÿƒ<Iya±ØpžM¤Ñ™"“¯Zïü»PÔÁE´º|HùŠ‚yåPM”É÷Ä‘EëLñ;9#Exx/·qz,Ï;q’Õg/’ïóÎ3iœ«€S¢Ì*¨}˜¬ôúˆàù¡]äŒ1Û•wp`4[šÉgo`0¦Ñ°õQè¬G±“/%Zrc.Qƒ"1½ybš«£~å":34ãõÚ +w‰›�¶§¬ÌôdWC~lVR“§ïÓ^÷ôà=ÛqÝІLÍŽ/e>º«n¦MC›¿fsPK¶¶ÔŒ‹ÍCr¨îœOU4Q—ô—W•÷憜±NŸÊ¥pÅøgaµÂÒ¸õŸ„DÀ'xd ÑÓÒ½¶ŽÉIM‰>·Ëž›—jÍ.vÅß*Š®Û±\HD®é~¶:9OZ"â`Ò{©¸ÉÚ@mÁ—ˆé—":kSdJÔcéhtg¾ñUC~8Ï4#'1œŽzR–çÎ<:“§1R×áTüOÐë{ÜhÔe2Ê™y–Ò½ 1Ð÷ÍÁ”ŠŒÐ¹ÌdWüë8N™a‚Ycåï½Ñð\e ø<Ö—H*Júš@†m\ÅQHK_Ž#X›8Âïâyjw3O&zBdþ2Sºt½p¡*Ž°[xÎ':éÉpÖ +jl)ö08ÿPë‹C]øþõ%‹MÕáâÑF\æv0æìãŠãiŠw›iðiž½‰´{°ÜÞÄŠsÛõŸlþŒ„]°“D¢<:Û1p‚9$DËWóÎ +¡ê8vpÕü‹\•Ã~ÆãG8ño°.©Ì©PküY*µÂ)ThT™7¿[X±³k4bµºkB¿MR¬Ä@[ ´õ4ÞœôS£+¸XDêiá]úŒ'ˆrÙϸ‚§ÛÇôm”àÏ;’¾ßùv»b„C#׿ïbÇÛm–ïw½Ý¡Üã–ï¹ùÑ‘÷½ùûîžÝ¦ãoU†úÑÒb'Î9 §Ð‰ &kå5×pg¬Ú˜ÌBÍmÈø…O_È`ìaÅ[<•Z¥ál‚Ãz‚C›˜s±C?§#ž‡ž¦#Ÿæ›WüìA< 'bW_W¬zöTAÿ5×"iR(b·r@‡%)aK•áú:¾ÌJÃøùXKËOx@¾ 4¯ª’…GÏÀàf³tMl)Ûñž‡Êf3Ãâ†!K°Û{ê#!éûÊÄ#&½ÄV`±Ÿ—¿k?]ך»gßÖÆ‚†²ÿÐK�ñýg× .ˆçÂk)þô²è3ÎâÚ…uœ- šwû=!cO¿@ó/¿Sáw@;¾Àcîò- !ã °4ëü{Vu{лÕ\•ÉšóO-½(§¼ 7ÙŒ@GÚ뽆úŠ,¦Ý^÷Ói§Wº® Í3ÛèdzÝo¬Î`šû+»˜å-KöÎ1zPnק)žËclÁ¡n²ÈÑÌ Ô¨²“¿Lø{2 Ð]]¨Zy;^±ç§òƒYFcŽÉ”)·9aô 9HÍ¢üOoÅÝ”�%¥Å¡´üìTåðO¹üê¿€ÍRY(–æ‡=Öq q4Â_¬Â/¤äë¢{¹ÅÀÇ 1ž‰e7žôÊ™1wOòšÕËwO^Bë©Ð/�q3Êþ,˜y%ÓdÝëuÉñ˜%tš’ȹì›#²ºCj,]‡°ã‡õËÑñš,rïŸ$¯¨Vh‰ìÇñÉÙz¾Ì:Õ‡wFÞåRÍ$>ú·‚Å®Þû¡Ž…œæºˆÅ2Î9)~nÑü˜Q®¾›Æ›ƒôùà͇=×jîz>ÝB¤é§;˜÷§É5ß´ù¤õœÈOéI»÷ïÉ·Ø“È”å%4”è˜ó ?üÛ»¼U>Å$ö¥]TPÚ&gí±úóÿ9¼óÈÆ=ÇO”úró¾}[\8‚¢N^÷U÷eÿpØûýWÿßvÝ´É çËŸDêÉÉ3ÀܼzÇÓŠsÀܸVÝŸM8WüÚõí‡N +×~^]”%y½²:ȕɢ겵2Áœ0€sAuÖç²ÌÀ`t-{=7>a{¾ÛRË0A;±NRËà+¹’ƒùDÈhÂV©K`,Ê›¡ÍÕKó-æêXªÙ–§—õIºÊ»ã/Ut¤!tô馓ˆ¢$«Â«¡ÖaWGuRr²|Å\Y’’¤ˆLZL±Zƒ±Tœ¦h°ðÿMwˆß·¼Ì»"bî®R“ +=RüV"|É‚~µÎâ…}pNꌉÙ9É„`}HLçÐ >_R`†-ìf,/BÍmðo,©+蟟H›¦ú¶Ù¶Øn_Í}·—•8ÐÙk<áË—ô¤h–±Å9ÌïÃÞ,Å8£q4·RȘÀ L¢ È3-AYFV$Ýd-ô ñÒs“ãrã-¦ì€TÕ>qjyBÜå£Iã™qãþÑ‚ôsŸ„¦)3 +ê;W—›Ô¥‘ôãö”h½.ã½ö17¯,aúrtM]Àå4©ü^©ü¾»üÏ`Âñ8v›a£RFÐß)·nåJšÆÍó™µ ß\z±<™DWçÇ¬î¤ 8Ô`Ía2’)Œ³ÿGq¶Ý›¨¹ìÓzµÞ$c…k*[ÉM•*"%éþyLwœzéY¡Oõe1Ë ^zZè•“f:~ÛSW±¯¥»óâù®®®Ý•e;ÛzZ?>?irKâûõ±}Í¥9«—Fk75D÷Ô–Ö-+T6{˜ó@º³SžæµÛTùzSY†YÊ×›$EŠCWvtéÌ®f{j‹3#mÆä`pOOg)l û¬êÔÄæ³{R¨¡ëoÞṟÈ!DÞúB¹Ê.ª T!ƒÛ‡èäé� ðp-˜dQ^ÑÌ;f‹ƒG—kI4}¾Ï +‰„ô«…qØþzžh³‚®Aqí}þ¡°z—Na÷ÁêÂ{’I`:õ¼QQ—ðŠ™_cðv_æw¦€’\¶< * +´OŽæ3tê¬,¥Ö“›—¡Õädk4¬nê/…ÚêÒªÿQØ&“2`3ÚŸº?ƒ<É¿‹þqß+ž(~ûöó7-’|¡ã³(ê$Üÿ¦:,µ_1ÿ³º[L5ÑyÅ&4î!ÒêfMÎ¥=wÏëhÄ=ö«åä//;-ƒ+M«sYÌFzï1¯Áó¸'HãøÖ‚æCv9AP;/m Å”³1öPΩî8K3cµÅ~=›0u‰ÙÔ8MêA»‹þx1ô᥽zÝóâ‰&aøŠèç*|ù,4ÐZ²s´xóBTaÓç*ÖÇä¦Ïéø|ùˆfòìob’ÖM%°õþIý¬‹êSZµÂÇsš¸ÓW×ÄO…ÂÉæ¡`+ù¿æ±Š·ëÉ´›C×]z!û÷�¾”¨‚fû„§�ˆÁ€šp·£öŒ{tùâíüâUïäð«ÞË÷½ßd“ÂÍNÁ«>2¸àvÅX…'v7«@*‹™ÐŽ°Ø-:Üáœ[’Â;¥b–ðžÛ(4ºÂQ·QºÆL äXEóЧ�«'ž<¾øÔ¯úµ‘~ctþ·§f6UØQ–µkìûô’¼ ++ t†x¸‚y:5ÿëe^{ì·ÌŠ¶„ce®£² +×À]a| ¤¯p°ŸVá³²Ö¬gÁSK± +‡Íž¨°ÒèQ×Ç.z|{/0 ³u -LùìÑÚ-Îy€£=6õSÀ3Þ„àº9¿køZc-X»ZH�x€ZÜê�àoÏl‹Ã¹ŒÃû®šGr©M|oýTÛšÚ@lG$Γö€VíÞŸÖÄQZvØ<íïêÕ`ý>hYSh‡,r¥1áW€¶XϺ%GW©í7ÛnZ#øÅ::¶dñ—géÅÓuâÀªÑ´ô¿°b �ý% g¶Í[îmùú]÷.q1ÚQ{[N?êTÀƉýMûóþLàÞ–¯ÿF\̪ÿàDÜÛ¬~édrƒ=½¬¿©4o÷m˜¹…ýòwå5 +OŽÉˆlÓº%€¶l’sKZFq?t?„‡Î‰F(Odk߆‘L¹Y¡¿¾�¯Ë³ÞâèÏ{0—a3¤À/šÁ{Awó»/æL4Ñ“Ú½ºÒÙ"*²®Ê; +ð±¿ÿ$yÀŒú·#l“W„%Jš·ÿ‘bzõ¢Èhz`—j¹ó´&ä´ú¦hÉ÷uÊã(F[íLÚV¾s2Šæ߈$Ö˪iDøºIOÿgQ1¢”Á¡@îÄ¡ŠÈác¦––áPèEÛ\M·%%¹üúºýû$b(PÈÜÉ€tr–eDxjDøh¯´çKnÛ(™!ÉŒ¿öÍg'Á»m€ ß×e¹›þ‘äúõü×äiçô^ýÿðr¹e&œ+P9¥É!ËU +¯P%ÖÈ&"×ÜÄvAÙÀhy¡:äùŽóçw²QU(§•Rf>*`³ÝâÁsk#ôÖsÔdlØd! ø@ô•oÆݽ½h€É<?^ƒÓ(1]›öb™‚x4Zí<xî<3yO~As&ŸMÑ\¿½<?=œOÇ¡·F£_>B€,îfË¡/’ø/(„¨ç•SôX}Œ\xh¤t,ô–ùàrÈDX—0ÛÉ +"ì˜*`ùÎ¥»¥°ˆ‰úÊ Q +Ý�²üBbób®,KsŸ©£UÍeØ¿ ¼ž-K†éȾtÏ¥)µlX®JmÊätH¹ÚiNÆ2¦w€ +zÙÐÙ±¨ZÙŽ£î·àN/ªÝ'i~þ ˆ¦æN tˆ‚C9ôc +ÀG;"Á¼ÜL®F‡z»ïcúÞˆ‡Ûò:àqô4Ç’…yl‹¿û¼¿âHGzò•QžB2c²!JŸ Zãã þ/ ÔŒÍÑMD*%éÏ „oÌÀJ,qÞ—÷±e¹]ˇgB94z^9EEkyí<ªËœâccŒˆ?˜ÔÍe ÆuÀ]å„0£ë$“/ +ˆ@XZ¥½]ÔGÑp…÷9*—†R'hËŒa; åzºÔ8½îSžZ(T<fÞeܱ7uÈ‹ÁBÃÄŠ*ËC]J=µ?Nv^àC5i!_²F ª…æQÕ« Cµ—…RÔ%sP)AjSn&jÏôõdñÙv´íNVYRrXÜÅ4µÑ®45JTƒ4ä[ÍìÔÐø¸³7p˜‚ÏÕZ°i™J'y¡3íEq8ôÝâÊ6«67nÜ”ñY·æ¥ê[ŒËSKd× 5¡¦ÂÐìÈœ¹'qµ¼f i2PužŽñtâ…ɱ™Ž+߀µá KyAs‚†£ºF@(¡‡uÐisOûÒ–×ÀkТàK«¥npXº ˆ¾¿VBP9¬”?É•TOHÍÝùVHÌÕ%ËQV|§U´À%5À�ý�q›Çáuݦ´¥d€S¨¥ àöƒ‹µËØÚ°úû[Oµîd R:ÈL~´cEI+™ÚÛZIïhn‹pÖ^ôb‹hãÝH4övñ¤W�Hfh‚v™ù)(Æ ËÄvž3Q<h yQ¬Ùjèõ°tVnM†w+©ÐýØ¢+¥¸,ÖRF¦‡çº¨Æ.Íàˆˆ2h ¸GGÄÌâr†jñŠâ°*/h>XD‹O�”ø9msÈÒÍõúZô˜ŽæI]®¢ÂAmTrÊ°ßMLUÖPåsȃ-nv(qLtà +‰7 D}A&ÏOl’WÌ™‚%QÃç%»æP2*u@…h•5ôbyZÈô¨r»óm“�:1§ª’Z²iµâŒPÅò9ÙL—Åó§Çëéƒv[m¦ÂÒ‚œ(ew©wá&öpJV GÔSTg +,o_fF¥sA×›¬¼@96¢«24à>Ü¡¹Œv-ôýŽ}òæåvºßM`̆`MAP»<ýu¬/±Ëx¥ÅgëTø²ºÊq¥b…O¨ä$Àr0OV8‡&vF‚ò#dîØ~œŽ!%ª´…ˆt߇eÑäAÔêÁLÖP$Rûše狸ÔjxÁÊ{&M^[*ÓH>½ˆY5ÁCü3&‘·œ·É“§*ÙÊ>áÞº<gÄVfz¥Ã|Â6êx68FÞþ2fyVÛ«Ó˜pnfËÕ7¹ýCo* ¡²\×JpäK•Ã(¡/¢ú}+ƒE)#ªôÇ`J¦mÚtzZ®õvæ+”;xüˆ,ZGÕA1áÏ,ká#/æÃ`:mûNÛ ÌsmœÌæÈgnžÓ4eµQÍAÛ°óÀKn˜ÒƒÉ¤éÿê}>¡ÞîU +Š[“ÒôOäyN¥Ž�”ÁŠj®|ŽrÍß·ÖäÂ0Ù]>_ŸÙ£”þý|¯(¢Ï;<¬QÀô%†¯H�$0ªN¢ˆNK©Th(fd*Ö“%}&I'ÚÍsd'¿T=PÜi´Ð¢aõÔGBúÍŒF+—§¤ðÙãT.�O ÊÕÔggÃZXG +D‹Œ˜Ô`+$fÔñDв¤æ¢Ðçz’jþÑÖ5öѪ„Ô£‚RÓ·³AR‡n „ò*ÂB}@Okºkêò…ø’Bež"”*6Z´Š¨„áÁ†s|: “ˆH/Ët3DŠ ó T†íNyvÙŽÃ^¥XKUœZjEë]7}¡Ð ¦¬’Z²mÙ+éM>ý³¹ã3Ãxs~yd#ôûêªM¹íÚt›pbÒ+ÞLF +Ž4’ú.7†UÀUüò9ZpåÃO1é@p”GIT&ÖÛ…l0Q±µƒÌntbØCZ„YJü�Ú‘*6?Ûzˆþv¥·(wÒÏjÉ]§Í*U$ 3—8 ¨¾\#{oÎç‘I +iow•-ð5<]=?¥1F¢‡õ „ëàoKZ@ðÔCè-ð!m³9 R¸%&sFµ +oàEe¢ÅXTHg«|<ºørq¨]?î%·É#ÁÎæ*O¢µ™ÌÖ×êMNƒ’ GUŔ҉ gø\øÄ\«Å*ü1€ÎbßÿËEÔ‹!éÞØ ßÛ„ƒßG Ë}M=iŠ£j+)OÞJVNZðè)ÀS™k#ŸSU Š4 äjXš: +÷œf”†›ïoy9T¡"[q_ufJ£\G5Á<E:³Ð´šcRIq1~C-áÜÜÇÚŽÓÕ[‚S:‚鈘c¡Ä;¨zǵèiÞö`‡šëðF£¼'F¾Ü¾3 ën\Uƒ§x-ñèê½¼^E¯…¢Í ð, ìi:(ÖAÇÎM†1=ºd«[ÌC3¦±í¿p«ân?AýÙŒ·†F—ž†Ïöõó*zA#EúE§l ÍX½˜E_œDìeõs—Tõ×¥¨õ)^ØMÑ:²Œáôxz¼½ÎDvd+,#¢•ÞiïÑúB‹ÇEX€'"0ÛUÐo÷iÎ@ªë”f6Í맶 ‹€øª+*Öaz1•&Ô‹q–ƒÑ¾ÑçêŇþMZï0Û»[ÅDèà,BR³yë9}¿Qyq¬°¼ ¹q+fpóWÑ?–S¤âD´Ê÷c«/Ý~n(l¬… äÀñ<ô^hS)…‡ò凮1¨^_mXDäWÝaê6¼‘&[ÜÃÇð>,TšôªÜ ÷ßõ2.z#§ìn®Ë#¢Ç³æ>¿\¾›eÚŸïÁûлƬÕUˆ“ñ¼ÉoÎQá7"!2E¦µMëå2* ‹È•Ò½2ä=m;©™ƒJ¤gåZ©(ø‘û{îúð˜.>é Ùu¬ˆ“)<{7çÅïÛÅQö³ÃxšoÖ±˜þܫǦ€¨w"Y¯F•ã'ð¼¤MÚÏä¢ëÔÅœn¹Y¬Ê–°Ï’×s˜aj§5øTTØ^Øw§Üã +Bø'ÞѨ3kã#—ïY‹8Ù5ñÅW(^QÙÓµ¥»çöérb)’”Ôaè½ß›*U&]äsŠƒž†Ã#ˆÏô°ðÚÊÆ"r”%¡€-ʹʘ¼Î·q=†$²Ê˜…¦¦S–NÄ’!ül(#æSydžé,¢{ѺʀDŒŸªƒO�þ~ýÞª"S‹àK¹~»ÞNÂ%Ó™-ªÒCôZ¯®2ÓrË„¢åfðÆ„®Ç¬ÓF_öý|#²Ä÷])¢_]rõ»˜*z8G¥È¹™®O,<%é@<äÖÚ‚<Gä°Ë0Ó¹vµMANÊ‘…&9“j3"$ß‚AL^Ÿ¹é/î¶e©ïÔ$ÛÔEï®b´®Y›[C.yÁã¤ZùKU˜T)ewvú-<Í:Mc†rgýJžüJn dÙr1@݇Á�U\ÆBÆCí9ñZ´Õ1‹[?ß}HBTHœe?i+ŸLÚ|uKR�Ì{}õ�°éuÝ�ò?í!&=M(¬ñÿ÷úÊlTÜ—Mbù(š¹—Fîì +é1ë̉^,ùü5‰ûÈDÙÖ´ÏOÏۉ߰ÒcLx¬LË”?S¥þ …ŽKü&cˆŒÕË÷ÐX/ìÂÖ¢‰éÌ~®•‘poZnè*•P]®K)8J–ï¡q¼Z•©´;ššÉ¢WIÖ‚KY¸Híƒõ�÷"·#†ÑúôöôÔ8(RŠF8ãá$ÚIRÎhÂÎ^ô–™Ú!œyGôìÚw'JYûFâð*D°hþz}ŽãžìX›o[…#¥^„åžÍ·–a¸Ó~`Û–áRz…òÖ¾”ò¥ªW8Ÿ îB±c«6+¦ÔòT(¬/DÐ0Â_ìö“}tm/�£±ãûÂЛ%!k„ãGßwŠ«€€/¬¸ÇoæðM¯k£ÕHG8Ìë±�n_äÙª¶IæÖD^pB”VìÑŒeìøh®¬Oz–ú±B°×Î,ͯ¬FµwË¡ˆ=!&]ñÚŠq !³W¦£¢?{ëÇÌ/N¨ðÄ âlö_ƒ¤$=2ŽrÕëEfé(eš§ó:s6|ŽãVBÔ›IO\ƒÐRuüžÇåÕQ,9¼MQÌéY¸ Öë³²pe�~‹¿ýêéÓÇ—Ïïo/Oçse‡ërÅÆÌBúñ{ù…D/¸EJ;\MMȈ-aHÔ±¢ŸQÀ7ι-C„ +ÖtÚǶ9L1‹ÕæPÔè®øKä7—ô &±Ï*ðËž¦.²³îÆ#ãõW“%¤ä°ÈH$œJ=ÄÛÝ=CV§É¶óU9¹?ۨ塩‡1œ¼†oʼ” ½B„‚5ÖÕU©¨Ë˜™æ~6€ø8íEFYM!â¬à?Ü%àÂB–ýpc°äæÉŒ¸ <¡Ç@,ù&O÷Øt@£–B¿m{9r]¬ÚxB¿¨éáÜq*—}ƒ »_ Ç¡x`‚áú¢‹™²I¤,W‹�¯p“`؆�Ø–‡þïSâù£gßúÑXPùQ[¾{|Nä0¸1ƒLœ1d†ù³:èˆ(z]t)C#å`âçÐÑ ^bŠ/ßœDUjô‰ +ªq)1Z)ôþ܉ê´Ïn{ÿEÃÐ+Û4mOÛ*è9|õ&®„¨÷Î×#Öq®€çí¢"²±œpÏHܔđ—¢½2hVów{²xbX|X¼õâúò°csÌìX"BHêp—VPq·Ë‘K|ŸZÔnD·Ýk€&´:x+AµP’µåäs2×a¹ó9ïµÔM1/ÃÌ·˜ÓF€ +æsYJ›T>ÕÄc�H€5÷ Lˆ¨�|AL¦,6B®DEÖ|ýÃT«jÁî¿;‰ãáí‘WÑd@ìÊ](ùàöº¡sóˆY¯R½Ÿ0¼õª€- ±‡ ø©ˆ²W1xIE¢aM4E‹z=ñ6Ë “¤h€ÿÔ`9–´t•vŸ>‰¢y0ožÝèøÌÀdÇÖ«é§a"ú>k¼Gq†â™ßä)³a%Ç÷†7 +Þ®®úˆòP!`Ñ=ªÆ [BVúz2KÁ~\æÂ&s¥Í0Íwä¢ o‘®U§'õÖù£\¥q–õa™Bžã³ôÐ;ðõ1o÷ùìÐXŸd7ÿ_Ga¯~¥©6§YJGÛçÐIÊ!ðHÙ]2›`‡m¢Ú'RýÒ-)bö_„hÄ(ý®Ë Ép¦ÈM’ÇÝB|‹í ËÇœ{E‡Æ‚»(H:w6\ý:¦™&r®ô1ú:;kÇ£FÊ™÷bžÔÔéÙ +ˆ”†¬=°ÞÐ&¹ë2ô¶äF‘RÂÛŽ^Ü‹Üc +[IðÀd&ß%kgÎߌÈñ‘¡…²FJg(ä‰iŽxFסcµšõ?HjÔ‰#”:¾Nz8.ValŠ&á`UP”Àçƒj4týN}Xø3S™úˆ¼$Õt‹‡f-Ös†a?§\±ÜþqãÉBÁ´ éhGž¦*͈ܱ`‚0:ǹ²bâ‰c<u¦!¤ÃÔfÒÀ4O‹)‘J9ô}e}¨Â1¨ÆŠËø±«§))šNð©j¨î1ôúÎV�(ä¥>±~*S)3’iÉ¥HõÍr*8Ñ:1È'¨*Akñm^÷+:B½¶»íyë+Bõl—ÖiªuRÛ¢zfÌ°rP a·¬Õ´ˆJ6ª¨V5EÝíCùÆÂ@¼@äûŠö,¨Ê–¬DV€Ü1L󱈊 vùåa–fcQ?€U½•þS„‡Ë×Z¾ýÿdÙœ÷\gº=§x87Á<ˆa«äèUëzþ_”عÓík¶ÕØÄöÃøw{<áWë•9õ3�\o¶ã�Yá–@$$A/ÉâðÛây‹”¸ñ@Ëÿ\ªò-ùâžC¼Úk9(YW•&§&û<’ÿu ·ƒJ(®&*È´Æv=IAêÕÖàÈa[\HÉžUoýZu5ìÑ ^µç¿düꮄÖ?5‹Hzlס±ƒbëV¡*‰Ž—D‡ÖÌ!gq&“CëÔ<(K@ÄÕS†v[b|4ÇžµæZCCuYäYú¿5dÀ‘û[S¶k=÷˜vê.œ\åjK Ø©z«–ˆb;� pDaM'ϯ†Ì™ã#Ã]ûFJJŒÒâ™^íé¯ÿãdÑö©#ÖV§ˆ¥=ä·µA—£ø¬óô=aê™ Ä@HûÞ/ååÚHTåêHû—羇•*lÆMäD`…—ÕPí~›ÓÌC³<¥^ÔÚ S³Þ¬ Ì¡a˜›>Ér®J›ò©2ÜÚóãÐY]diâZDø/ wÚ*�Œ$yèÊ÷õÒºDá�š-·ßÒuâêÐÇjã’[Á/䪸á*ΔSµ0y{Ÿ¨Å#¢‚z3ßZZŠ¦ÿãaB„–üO×Å<@¸¾˜G^±±Ó×6¨G{$3ëÿhWøìÙ# ÚƒÇÒ·/°yR?AR¿3¸©åí~¸weŠž›”0ˆ.ÎãæG Å.šwè*kŽ6ûØj +Šï¡ÜGW'—ÞB´·˜ª}ÍÞ¨²Y‡ü¨*¼aiqõ‚¥vFQNDZ!�ÖÇ}³E›ˆ™€8!*<$³ÞЖ/èÛ¶¬ÕËó“€� Þûtzãî„gH1jÅ©-Í7É öÊH¤lÌläNÉR¦ÚÒ4™4=!ÓéOçÏ€˜hÎ�átkjza +%Zà݈E�Œ0ìY£ß(6¿ßBl_îžYi¼V|2ýþÞ'¦(fË};¡ó‡©îÓÜEl(®Åߤ¡)9é“ÉÓìA²�ß‘O¡¦Þ3nuß=¯1±ƒˆ…Ä„”#‚ +äp/Þàó‡û»Ûý…RRÏíÆ7ñl|‡]F•°‘¸{Hhi÷t�£›ét'páééçn%sÅG²´N¦X‘Ï–ÓÉ Ö¹o©«¹y{í¼�)訫RBÒàà‘á%F%äâÈ1¡œ%<öÁÉüSÃ?1Ôd3Q¦–5-ÿU9Åøf‡Ôr‘oï@pa_$¯YTsá¡ÿP©ê«× LJn¬’îWò‹´±2Ç¥íÖÃoZ{ú¦å¹ˆ^öÝ¥%gÆå„XÍø?¨Â %ª<ldÉ`·‹ø:‡Œ7œ˜ï-`½\…*@pVÏÅøG$¸cÃrgVO»’HØM”àÈ•çê6–˜Ï©ê6BôÚ`[ã‚PêÙ‘,ÙÞDÜž‰ärNx¼@h$ò‚Qã{P„Æ>•Å"ö»ëIǬ§Ô¬*9Z왈ÎüQÊ0d˜¿ß_僼ö6a[Þ6ÔwîìƨÊW—¦–úóÜaH¾Ø¦&i#Ò²©#EQV( WŒð_%ÝcŸšµÎèo.…#ŠbèÊã~K9iy߀‡ï_¿Ä3G©.U/˜ÿ59Áë~IT¯yè÷ð˜¸y@W[o‡èfŽƒÜÂû”>QŠ«4KEñÍ4&î1%»B…$GTì¿ëE‚ju`·M-²l¨#Az>¶âŒÀ û ?>žÚ]»¢NðObïM‡ÄÔ|™\²ÐÇz•Ï5v×K;qåˆ|!áDÖ`+ ©ÅäÓ§ÐnBd1h$5/×ä~;úŠ°<òôÍ7U3lƒÆæpÔªbðÜäsÑ(’Åjiˆ9-Ôh¥ò¹©1òösý$:~ãyþÉ›ìñÚ[M +wœ™/?îÎÿqEêæ÷ªšü`Ë£Õe‹è4»;h.0i›ÉH‹È6FÒ<OVèr'©î |~Žï?Ü¿ýÜ¿óoû¯Ï÷ç§Óqèö'ô›#•„ãbf›#fYc¢“³bàyÁ»31•“QlµUᥢ§½5ýdÿøõš%p +€Â,+QÇ6o1ö‡ˆÕn{Ž&±Þ2®äüDÿå‹Ë‹ÓÑ,õò|:n$¶ü²[xÁêîä WòCé,"AA]äŠLE5Æ$I">õRã_Ÿ¢KÂÎ+¡(á²±j@&tÅ‚z¢uج› Ç™¼R‹C¹zq›-!À_í’76£öw|œ$ñÇúÍ`Øèž±ÖÀkÍâÎ(«àÀ_#r±…—DB§Ø�UÈèÐ@Ö*k2 åjOÍ)UFSçG@«Z„ØC'üŒŽ‡P:„8.Ç®«4@h¡ìu.d½í\×sí3@•“nk{ž~ð¶j2*~<šÍ¡KÍç¨=s )U28(Q¦íšÑ$~UµJÈÁêQ©„X!ª²Z‘]žæ¢ª=¢ €�Yñ#…¶ÎxÕpü® Û÷�ÞÏ…¶øâ‚ô_9ö-âÚ€Aƒ�(@ZºŽ¿ÿ{=~†‘ÔMÌ#¿ÍŸ„…<½M¹¬¿¼Gc§;èDÊ`ÌSžQÓäW„Ïù‚±!©*°4Ȩêè/»¾h\”mµ¸ü#o¹1›éH¼fH$ÈTf ]þm¥Oi~d]›kv{F!@æc½ÞO™”÷ü¼×=ŠºO y”õÈRâ'Û×û…”]Ë]:7ìkC}D>kk…Éi2^ÛˆkV4!eìhÆßE^ŸA×ⲨÿÇV¬B•°D[2O%'ýõ׃ÜAKÿ_êz?Wrf‚´DX«V|ˆøI28sH£f©KD1K‰Rj‘8jÊ!6JÙ•ª>í÷ûˆ#W8—|¤ K£2øMF-`ôì~£iš¢ð” ùú’Ñ”x~¤©{’êB,è3Áy»´‡ý§ò ëÀþSZ誥5a©ûó1HF2eÔ7±«gœEâKV]¸ã;6³6ÒÔ|îôHsƒÛ%i~£)4 ¾¤ŠFj¨”yM aNKªÚþ(ãÀÃdñ”EVD™Íå*Ÿ1|¢$KŒCz²y[ ¹µHjêì%®Ÿ™BÐZ%–/’"/ýì~a+$ï˜Õ_H¬¥³ÿ€N(³¿ô}¥ÞsªbÝ2d,/ª¤84¦ tµ«DÔOt>±Ðú AÔ¼=ÝLj‡)€Ÿ†À6ùu„àõ2˜¶€e¬Ò.Câ•TR¾ð$æêæÑ¡S¯n-š4ë!bb`d$Ö¬HžÝjˆèÖa‚us™|„æ*&%ÉztVǦÒÓkÒR×¢c-º,ÛèÕµ<Ú Fk» s³¾µ©DžžY«V<±ŽŠ–ÈTâë‹„4˜¤A·)ÔñëÐ.e¾m½ß,~˜Óʶ¼†.SŒ£Žv%~›½7gƽÕEE±†7 ´ôâr÷ܬñ7)»/&©uê)‚ŽV´ÒÅÕDYßÿ*èÿúQ˜,þåo0©/|¦Ö~uXNF®žÂO”|îK£TÔ4´.ûÊÿ˃øöL®º¦É +tH’ߘY’"xÓ-Ínç¿HÛYÄc'h×f3߇ћégY:ßœ©.Ù)ÃD™»§š,-ñØiBzÍÐw\NufQäwaÅŠŠ 7ÇÜ,â»”ûÕ).¸h£÷Ñ1r.ŽeDüÏ\CÕ¸3^ã þ�Q† "ÛakÐP¨Ä¶@‰CãV©Z:'<‚#£Æn{œsÞ'>tÔ1Ç] +Ö|g¡kÚk‚GòÏq‚H‚x«ÔØ ¬AïXl‘!ýªüÈb-V‹×E-ZÑ‹aI˜»k)û¹f‘ÉËCOno1Ü)[‰I•Ôm2Ø̬c3ëN1?þ¿›-Wxï—W‚Äy0ƒ1“ÑB +[Pqg ŽdŽží$CòiÈÍ%ÿ]ég¸vg ¦îÿŠ–¹Þ¤§¥µ^nâÌ&· +ùå©×‚AvoÈýÁç›±^sÜ!’=øÍУ‘¾YPÛÜçIÒ¤d’9˜Üý,>öq͸`lWøÑ“6@„…œûBä0œK‚éEÀû‚ƒ‡Å‰ÁOªwŽN)s€ÃÇþs8¶§ü«äîá|,ã²qöb‘áø‚oKî…ˆþïRý8àÝ�� \ No newline at end of file diff --git a/core/themes/olivero/fonts/lora/lora-v14-latin-regular.woff b/core/themes/olivero/fonts/lora/lora-v14-latin-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..2c5dc2bd8d67f19c0e3b197b6697978eb716d326 --- /dev/null +++ b/core/themes/olivero/fonts/lora/lora-v14-latin-regular.woff @@ -0,0 +1,114 @@ +wOFF�����r8�����ãð����������������������GDEF��€���P���jARGPOS��Ð��Ý��.”Å¢KGSUB��°���Ó��€$Þ +OS/2��„���N���`dí˜fcmap��Ô��ž��l<cvt ��t���5���Š +~ìfpgm��¬��F�� mAŽ|gasp��ô���������glyf��ü��NQ��–8pf¡›head��jP���6���6 4.whhea��jˆ������$Ô^hmtx��j¨��#��”Ö<Ôloca��lÌ��Ì��ÌÒ\øamaxp��n˜��� ��� y'name��n¸�� ��-²H?post��oÄ��Ñ��¨ +㞥prep��q˜���Ÿ���±Zï,¬xÚ ÄÂ�ÀûÄÒ;D�I�‘„¤6ƒ™±×ßç8…°²µ¶Q»¼wÈG§|ŽrqÍ7÷üðÌ/ïüñÍ?ÿÜêroÈc”ɬ*ˆ”xÚ„–[G„û¡Àg¶ÃÌÌ9 +333£Qº0˜ýCÈX)33S˜™Â‰uÌ +góÕ–J1[Só´ofº{vwdŸIq©[å}îÅW«Ó]'»jŸ®w<Ô]GÈ—$clUvý»våu¹'Ù]6~JÄe³ax2Ï(ˆ6Þ©ÁAÁýD/¶ø}5Tô±V*íD6ÎÎ¥ÎýN/çÎËΗÎz§Ùmãîáå^íÞé>çÎsßt‹±µX¥û§×ÆÛÇ;L,OéiõRoõQ_õS Ð@=£A¬a¡Ñ£qš¨Iš¬©š¦ùh.Ô"-Ö½wô¾ÊQ/ó›ú›J 2MgJ4ÉÔiŠYi¦Zl5ØÔ‘©%Ú¤wL‹Bõ6 êc*ÉT‘© SC¦NL)"?ÀÒ@4¥ià|")ÞjykV,‘Ÿlõo™êòu6‡¹QϘ•–}¨å{ES¨^b>Ò+T¼Mþr¡‚vœY +G#pÔgû(Îô±ÁöáªZýµ·Zé)vú4»ìOo´È¨¯Y®~ækõGg€ù ö5ÚR©\Aå:²o“mTHn Ƙ~ZÀ÷B|ëŸ'2Ùh¨aĆ³ƒo¾yLKl™ì›OOMôñ-=ÔkÜßï(F¤í4ºi25dêÐn¦³Mä{*OöôÀLc¯q0«ÁTÒo¸Zp?[®\%¸:p)E©¬Î0o ¢ŠŠ&*š©h ¢V0ÉÞbf¿fwl²³ùøܱQ‹ÓñéªF½¬f#§¸ÔFÖ«NŸD>•K¤…Õ29tµ’÷¿©’³s¯"j/™wM™vø1ëÍ&~ëÙ™f„d³2CLšÝîèCÝŽ*`}ÃÔ™M³™¹Š¦Ì4˜*»*Ïô±½£¶”ý%O×ÍÔ¼M~Å.“<cÆ0W#0×VÔÏ„a>æjæi!ækæi1æÃ�ÖYOa1=yê…ñÇõÁÚ©UÌGg¸âB‰'J Çam5keõâV/bõ«±zŽÐ#û9ÖZ_`9*ÁÚÀ±ÌÒ:‚µ'™/Í—<«˜N‡ÈçÔ:<Œ|F×òg˜]ÝmÒ +Ñs¼éé×kÓOοæSÉlî¦ý²‘ÚMqô!TÂÌ¿¸}8 &·¸´ý,«‡Ó qÏz +©àÌ6¹ÇÞŽ¿Ñí„öœÂìDYwˆœÝ¹û¾‡ôÍÁå RV¥‡3|å”bßaK¿Ý¨{{²{¦{ý&v§;ÆýØvÓ^NÖöòžòÒþع›ØÅþ~Oÿ¿8ø3ÀüþëöûS¼Ø_ê/ üÍ_Í3äW7#‚Ÿ‚zké�Tè†Âò°?;¼»=|$ü_¸(ü2Ĉ. W[O…G¢‘ƒ"GØI𓘥¶Š0™;)G{jµÑþ:Tt¸ŽÒ®:F…DOÖ™:DgcGë<OôRì8]®»t¼îÑýDT]¤„×%ÌÆ ]«aØõz»A#°5Š;¹Iã°[5»M“±Û5»ÃÞÕš¯%02‰ð•¨TÝä(®“˜ä}Ì/Ê5 Êc†òM¥î1¿+aZ”dŠÌz ²ÿK~¯I¦ZSÌRMã¬YkŸŸ)Ês’Î7Ëuµ<ÐiPÍôÚJÃÌ+ ™íDäó‡"Ô6i'ÎAñü2“Ò}dº€´,{rBGò}z]èí¤�…F%¨Jâ/Ðó8úuáûšÊfµa5Ž½üª|ØN§ÿóé3[/R{:Ú‰Ž›«I ¦€ŸWädiåÍ3u0¼Í®k©|‹ÊÚÌ®+˪q^T¥U€â“ÑÎr=Ò“ŽEswÔ¿§=A^f¾Cûu-AÛ'ú£vu,ÃXïLd¾r¹<žùøùf§y°®Á¯Åï¡2'ñ"|˜¡¦ô,…aœ™Céá0MÓèÌÐç¦B¥Ú‹›pæfÙOátOÅOÃOÇÏÀÏÄÏ7? º;ª»£ºªë”9qTS¨vDµZVÕNÅlT;¢z0ª»gT7èêKy‰ C/åö(ˆû€ÉÎ +/˜_íù®2;áG⧙ט]€_£Îô²šer¨øM7°Jy캀|!žäÆ=r-:†|ÞBúMs‡è±”;¬Ô꧱Ÿ'w„ö¤ãct².£öjޮщ¨œªëušºÐ¯kï'O»[^&C{Ø=Ð\:ß(e9ö-ª}ØmÒÕCøÃø#¸c³ê”K7yÌÄ=ÚÛòâô™!yLKÊvÕ…·Hæô[È×±“µ™¿7°“9ÔÄÕ¾øèÖÔ+ÞóM“ÚIIº/"ÿ‚vßþÕÌ4¾Úþ=Út-è_A7Xô90ã}ì&–~=e°,Ù„%�]z ¨*tèµCíg</°ûæíÔae–¶q" r™§<fé|Nä^ó—tšä×R›K¶šlÊ*•°*¦®VvŠpÇþvžodæµYvºØ¯\µ¢º…h’xœº DwSžÚ2‘íÉÖéšJµ +Ø8–$ZÆÄ“Ù33 +™™Yp|Â#±NxŒÂcfÆ0l8Y‡yÑö²×ûuï?=uF3£ÝÍnROÝSÍÕÕTÝLqôç1×EæºÈ²7¬“ÒÅ™s›³)¦¤˜RP‹—5CÒÑŸ+ü3£O¾Ã‹Ý…?RÖ±ä!kõöWîö|†î0t‹í/u«zœ:^d-Œ-ª¦Ö:cŠòÛÌö™ãyqÐŒ»âVTC7XË R8„ˆ ̆Å9[ÇÐ=º‡È£ÞP˜'Em?%¡ +§}|¥nÉ +®?U˸ïêÉб-~K^j—žÂh Ü$sB‘~1~Sˆ?¥Rî;…BÍ<%”$k"?É”rSåk¦”Qñøl°º+ïji–|Ú”íØOnœ˜ò·ã‘ÒègϤ1$Jäʬ+A.Y³Õ»PE_=™šs«"}sádõ:˜«¨´šä—ç=—¾ìˆ R{¥P^72âZ-šg¦5\À¯êÁü¿â^&yðGR'ð?\c¾÷7CÑÐÈ“GÚªÓ4|_®¥=ŸWF±Ö¼#*ÄhչǕæqe¤jj:‡ýëIUë<C1qi\ÏzÕÜt¥qÃ>î‡Õ£µÖ/*NÃN‡áQª¥º´Ç•¬IÂ3µ%FE(µ é cY:q Îëcÿ’D êz7ÓB¤1ú³ã#^l†`£täp—q¯ê>£–t +¡äëW¢nŸïáŸU÷„ŠWF¼únÄ𠺔ú¶Ÿ\GÕgÖ†(¥ßE»o¡‚uë¶<`½ZULÃ!ZF{¬ÇùåV: œÄ¿Á?pÚÀë”4‰,î35o…NIÅij®*}ãá# —ÇóLèô)#æÏËp®þ¹£yT’K4itôë’æ‚×® å_ëÍM +ïžÈiÏίK¨øü O[ • +ÅNÖÇèì.uìæ ø8; +ÜŸ…â=®^Ûxˆ3Ž»ã¾w‘hÆŠC ÿ¶' \ Ëx«*†Û¶ËÉ;†¨Õ!—ºÚzð-/.£57…ÛÈÑÐJ/ViyÙ]*uË6<²;ê¿¥ºk%[þg`wˆ¢Â–ÇqŸ\´ŽÕµN-“dAó|öçž'³f²ÉZÅÚ¨gÓËÇ6òóL/‡D›‡ùÖnæA¯†ÓmuÝ~0ïB[Äïîô³l¶‡î}}6‡˜«¯Òb‰ZZB0¦Uþ +—€—Ûü²²µy”¾ÓIÄRÛ,l¥{„õ6½z£«m±IØÂZÖ±Žñ[Xn–ñ0hC6ìz>ÇÖÛÍì�Ý�Ý6Íì>«BÒÞ~÷ÚrBÄo/ý™Ä.žæfši^¬².AÄÙºÛ–Kût䧶Çqûh…×¢ÖÚõ5ê׺~нRíÔ³\Æ}üeúI†Ê˜Bâ$ÃçÇ8Æm.{bBZ»Y’5Ed•å<{*Š¸Ž4[zèÖ]…ø¿ü&š»9«@— –Ä”âý÷4µäoò›]¥ô/"¥>ÝGJ»²ëã㌿C9Fu¿|ì“lלëù¤5Jnæpœßʲï"·Bá™|Í}9Gý…öbÎÊé¸nÏå,œçNªÍö>×ç¾âv“Û"ëÚÍrsèjSŸôW Ìm?©¬fªEŸöøb¦è(Í:ÅuÔ'”‘÷Y"sU×j”¸’†‰w[Sþ¯ËÝ0!!ÿÊ9qµÇòyܽ@|<¬¥°5¦>M!´ÄP žVHúz}C#&ü#lßk&éG§{œm–deD‰cHà,"Md‘Áøã,”|¡KAûEÙÇ)•MóÀÝY'ÉGp†áSüŽ“ã,÷lï$Î9&ìaXÇAè[B$0NóFŒ.…sº/ü•q|ó„,P$ðú%o ç¨ÙÉð›Æ>ï_¹zñIàPÐþÄ êí&’ô0t=xê;™ÕR³».Ïn¤Ó~{ÎÊGÖX3„IIÇüOVOÁݧÅ!\ÒˆÄõÂUÐMáÉ÷½1\r3àº7«;4NE°]¦_Ñ~8`Qrü‚V7+æù-@\u¹TN=ˆ±Æ#û™yq³>M?ÁЃÀý¿\í=¡a+_¹Qps¨éq®16µGMú'òM·•mÀŠ¬ ”,Ù\s=BXï©’©×íãã¸àí Ùzï!áW úšÂ¨›ž^13nœi™7r—A>¬YgJãœüHh†&Õ§Ó¨4¦±†^Å—T±âØgeÅ¿ÐvÓîvVü<ò²‹»¬ÓYÅ]ÕìxùdÇÏ÷[ò²P{lŽ0—5L—=Æ6†ÀX¢%ˆPL«ü!—€—{‰ßž—==,É—ZËl@X,_ ¼¶òjÖØJb»0ÂÖ1ñ;l¹zî »ËˆÍe¦ÍVÖRG›Äm!Ö;Ž–ôk¶È7ÓçËÂ^%ˆd¡mÑÑ‘k†¶z\î—í[¨IkOûŸ(ÓRÆM×ÿ„,NâŠD)ÜÅXÓ5¤p·1Á²ÿÂMÖu‰uN¢D—±Á†v›AüWwn½Íãoî5]«Q/m äë÷‡8ê}ž¦–…wd$g—)iB';íoÿ+?NƲ³ê.še¹+ìg†nEÖ ¼4@(ᤡŸG¸çr¤9s¶…[O§øµ{Mý½³iâßxè¥Å)÷%Ytç(Kܽ¥È½ÍÙóuö-æK#I°NrÀ°fiæ¿_vÖPx†ÐyºÆ5Œâ,q†üÊsÕ€¼}ȽW…¨‰sq]Xf·×Ëyö]Šš¹[²Q#ä%Ÿ“ãÕ~ÉŸœpÊ}oy1·ýwé11ïõ7t×£†:ê$H#‡uxÜ¥ÅÕßáF±…kâ+îÿدÙ7ì[Þ?²üCÖýa÷óÐ?v-,±ZgÊ,ï/Õ&n¶öm³9Ší¢ëv6j« RË:«äÚú4ý Úe鶊é?Û¥àåî¦D3<Lg[]’eš-aØú„AùeïṰ؇%6Bô +}AèMhãûu¦.ð0Gkt–0 ó¦Õ>AÙ̾@wHKÛlµöÉ[ÖÞeñÀjÑÊZö+â(YZØÿØÒÿZ笅|}Ge•u!}uQ»‹è÷Úýa¢Uúèâù²ŒþzÛ@ÁÓ‹hã©´ÓÚÝŸ~¯ :íõÄt{ƒ½‘ü'ìSÔ|«-Tk6"ÁјÎZ# ž�Âæ—���xÚmCBP†¿‹lL2gq–I¶mÛœæ6[AL§žßäà' +ewL}cs7ñS›Ëd.Ol¯RˆøúBÖíSŠª«éN'þÓÊe0LÈìæÄžsyan‚J?smj™z@¡dj™` ¥•K>4¡dcPÄ£Èÿß`Ä7 ;ñMtcîe¦aE0Š\ÉJGH$W9åZö9 +ËóÖœpææMüÝâgMh¤£ÿ|,rÄ!ñŒ"Cåt0Âý7´Z0ñ�xÚc`a +bœÀÀÊÀÀÔÅÁÀÀà ¡ãŒu€| °3 çÈ W†J¢Ìïþ½c``Ùƨ¦ÀÀ8$Çø…iR``�ô'F��xÚm˃–i�ÐócíÝÌ7®³mÛ¶m×0Û¶mÛvƒüÕ}dëÁø ŽRHˆ!…d¼ +’Rà'¹5ʳXÞXýø¡ø™øø½"¤™BÖ3äÅB…0 lÊ’5ëïYS>{~äQ̲ªÞ;õGH2¼RùBÑOTÌzÔ€gYxž¦}úÝÓo‰õŽzE+£Q¥(eôóÃ-6?X'ò †[ĦÄ&¼ú—7ÛBsíwÞE‹¬¶ÆGÌ´Þ<KÌ°Ø)'œ4ß ?øÑÏ~•R*©¥‘Q&™Ydó¯ÿå’[yRXE·ÒT«Ü²Ô#%TPQeUÕR[u5ÖDSÍ4×RGuÑUw=ôÕO¶Ü +œ±Û{´Ï!7]¹b˜ÎÚàªÇ®;m¬qî;ç’ic¸M&™h²¾‘ô•ï|í[ßûI +¿ùÝ2H+ô~‘ÕŸ²Ëáo9ó—‚òɯ€bþÓM%•RNie•WIMÕTWC#õ5ÐP-´ÕJkíµq\;}ôÔKou2È?:Xgm¶Ûúa|o��xÚc ¤¡:ƒ:ÓÆ/ÿ™ÎüÿÀÄòÿÿÈrLO‘dŸ¢Ë3êb•—€@�¼Ó#u���xÚ¬V×–ÛFªmï-1]@µÙˆCºÛÛ)Jqßz'•\É~Ožòá×€J˧ ¥í%ÅÛ0ƒ2À½ÀÌ +…a ^ý!Fw^aeïËŸ˜¸ £„X¨Æö‹~ÑjÉCÓ²Ph¾¬w„!üÈsÐPÑ +Ú€mciþË΂1ä�+Aha±ªw¿ +-i™I¸½MªMm.òjQkHs︤êî�°ýyÒ©!P5I8¸F¤¶ òꯞEf¤µ6©Zô[(vC¯ØÙ¢½ù +oóêö«øqÑb?ÊâPëv¬Ñ°µ–(¶Ã÷Z;XT@™KÕ˜°”ýíËÒÊô9¹F–”$$ÐNˇ°…1šyÍüKQÐÂbÍ"£ $” }P®-;a´mÆ»:”ÚÒ€›{!ÙL"£—ßÁ²Â>ßîˆBÎm…¶Ò“€Bz1? Ñ¢*°\s°O—:LXJâøÜŒ4»Dõ¬Ô~Õé~àÕ¬£n ¨ÓÝÌO1lIzÂAÈÚ]†…É]@0qóˆ%꧌ëyŠ¡KÂñE Šº(hXe€:CƒESZºf98¢ÒB!Àv\wpT‘#�Žø/9œÒÓ8Ê»]ÚÒÎÁ18žQÄ@‹òâ˜AŽiŽ«WûaZj×õ=y/tpB½Ú _íåJÓ"ýT¦ŸT©÷Ât|ÜG#öpÌæ)§iòÒþ3JИ•@8¶Ã”É#´^’�§Y’Âzk3·SýfMHšT“´§[uIS!¦$±å£XõjJ‰T‚ýÇ¥K‡$ œ¥ÿurÒcÂó’(¬Øø“mÞ%š¦ Û”íàŒJ –³Ä3Ë9•Y~¢ÒËOUZfyC¥–¦JûXÞTi?Ë[*`ù¹’=Þ±Ã\4¾áâ`í„qöÈø}n´OçŒ?äÆÛJàˆýðÝ!|·©. |,-ÂÇò.ác) Ë{„e•ð±œ'|,?#|,K¥`5SGQÚÉ|I[Ÿ[IϪ«Ð±Ñ¡[x_4á’.ÊxQòz¥‡ÉèôZ›<ix¿––™ | 3”sz®ôy¤àiVùc%º>ÁùœhØTËÅz1û‹à¯úº\L3Œõ ñÍKêGáÇ‹>UîܪƒÏ®sEÃo‘ûsj‘˜‚M’oÉ‹$iʦŒ!<$>Ð ×á™aÌLËŠÊ r+Ué'sK…‡¾ý>q%ÀjBg.v7?KÒëyFü–lî„? æÏ…ùâ íñûÚïC"³Ù ›íŸ½¦=ù? ‚µ%ý¸Mæ‚›´Žø};K ôó²A=–”¡A8IdY"¸(‰ä,’,I,ÓÀ•ÏJ'2ªjVýÝÎ_Ðã\ÚÁå@Úò|—¹J4™°?³7d““rW{¶LÎ4ŠýÐ…Ui™¤é)éУV`¥J»'?&äM¼hڻݒ<òk'*ñ{íŠø³ÄYȽ¯+ .³ØÀ ?Ü6wu«ÚM]cÚvpã”u×Ü>eݼ0öªˆ-…‹öU =…KvBµñŒ¨K]©¡.ºá3äl>çsæc”^TÂ*¸r±{~&úC!ÿe¤›kŠ¿c«’žªóbénJÅ¢Ýc¥A»%Û’]^äâi +š +ÅL~í;‚oø”‹Oè–q‰þgLOáSZ¿TøœÄ+f1 º¡‘ȸÇÖkůþî±.Œ¢(Š® ÔG£4æ¡03;Ìè0ƒ«15èw÷Ë<»sÅ(Ž%熄q!�I%p`RÀÍ°0MfhÀ, ˜KªÎ¹~i^ +¼’j`s‹’Í-Ñh™Îk…Îk•Îkm +ëB�6Ø&Ø°E3"lÓ€°KrlÏ H{RàµÏö¼$›;¤Ð×1× ×©ÎqGvÏü¨Ô#ž{ÅNºõit™”ƒ´¹‚Ö\ÓhdÍîÌÖzËÈ–¸ƒ¶Ä=´<¯õ¤Á´àZð¤¶+[ß3#Ë_ å¯Ðò7-™ïЂhÁ§Úîl}_Œ,ÿ†–ÿ@˵düAþ¡…¤Ú‡õ?Ú¶Rs®µNæëŸèöËÓ¶����ÿÿ�xÚ´{@[YÖÿ9÷Þg Є¸û� ¨¥¥ ´… +e˜edÚ±2î̺»ût}Öud}?w]wÿë÷ûnéwï3Rh»>3m^Þ=ç&çwG_�à¿ãO€‚ÝM�²Ä"ÒYþBqø›Œ1…)^ä +•|o¦àÍyðõk×àÔ/ð'km:>¼v9s¿ «äß 9xý#)T÷M½/:sy3Ç%°¢¡ +Q¥%@,LÉH]PRîM½¯"Dë=e“üù¢Íî‹J%³Ž0¡æç›ÞD"‘Kä¼~¿×ëx\j¼T¨× _Í*@n¨>4X,J²"‹wX,æ¶9’ôµ»þ5üu·÷|w«+·ö›-~×–ƒÅ‡Æ{IOÝ› +qR=ûw±~VÎ`¿/~BîÞɳ2ÒOÞwË+«çΙ˜Ð‡ �ÆàóðŸ�Ÿ‚&8ko²Ö(|äaýþÓ¬ûËðJLÑàÖ§íxÇá•pƒy ï'ø8 ¾¯Vz?µ.6}…Ïã™–=vî¿ØrÿùÎý/‘"�?Ëÿ@ŸI>C0L^ñH©q–? #€Œ2\*3z3¸Ú;Ú]« ªHê’=Ðîò´/cd)L¢È Ë]SÐÑá^Ø‚n·>Õ¦�÷ ã[œ½›o}´ukùþ?ÙÞ!¾÷4P”‘Ê«Ý•!âïµÎ·=p±mAÅ#+Úþ’›öñMoÄáÒ[;x\zgá]7í¬µ»´Õ6ÍÁÊïð ¨ië»ò¯zé 0$lé¢óíÀÍ:»jîƒóÆ?Ít½^® Öª•ÞROwW±Ëy}ùîÅžN5a:1*C™PnPW”Ôø¡Z€¿×sJÀ¯„‚ü’ªñÛCŠáÜ^wÅxê +ü©”o˧Õ}•þP&*LÑ¿ÏÊg£Â?¾sÿGñŸÏIJ)bå÷ÞFFz+opw•¾T*¨ì›ƒQŠSGÿ*O{ªÇ¥÷ ·Ç±µ…�'Ÿ€(è0_3Nõ‘*‚‚ûbüUå¯óæQ÷Ê’,ð“‰òH&’Â’-À]*`À˜Îìc<_@e*˜ÊêùʨªŽnsø‚j@@F"/;ê\ ˜:gëªLÑp±‹}¥l:¦ÇõB¡ô¸ÕH©±ƒyÊP½6øe%`¼È¹Œ£>¨ç²²tš—âP‚µZ#—dtâÅ3w>8;sÃmÛoسö•ïNOÌíH§Ý.,hT¨o(›Ád©Žo®GX™9Z?ÞA®™Ù6ßOÂÙS£]Ŭ½mzrv‚~k0J�¡ïÜÈëÈ?C +®oº5$4#Œ}&fi 4„à‚‘82Ò¢Œ’T–8>� è2 †„Ó^’Øœ-Ĥéùf�¤ ©g½ºÂgº>4X禇Šœwºi?äLl„8˜~ÍÜôëNß|¥TÏ»NÏß±gâÞ}c÷wEG_>å9ñÆk¯y× ÛëÿgáÔô‹¯ºòE‡¶5‡vñ¸}k¿1lÉB›—¿Lî�b0룜Y|åQ3jæ™$\$*Áʺ« +»èˆ”i‡«pK’%в^ù÷jvµŠ9^¾Ì…€J³¶¬$²/GÌçóe}i½ z”V¾4êOòë<ñrzXìø¯}åòwݳöK¼üÉgÞ nå&8%ºkø¾ž$+#~à½'Î,ê‡_8ÿâ·Ä»kkÇø�ÈÇ8BAèï™õ“©ÌV�5ÐpEAª"Ñ(Ž"-¸P’ +SnÔ4X��l°r¦ rAs$5‚Ø"ZùC>¡Y;_ƒ‹€Ì$yy]•Ë#h³¶ššÑP Ôê*äsÙd‚ðyýÞBG,<‡8ÂC¹¡Úrg‹rŠˆß0±å¨^=‡úFâGá “OÈX°çÓØgOÙ8¿ç‹h@ƒ‹»xЃ÷™¥AsCi hšk6§—¬´æ,ú¡µØ½1©(šÂ“Ê﹓8ÂÆzzV¸4¬nTnñ ZÔ+¢/ÒÜ{éMì¹q3#/šÙY±ÙifÁÏ€<=mjÂq§Ö4*Ú9PÄÛFÝH‚¦Wá7í¤÷1¥œé,dR“ô“—í9¯Å¹œdwýg¡ØŽô»"Ùíý«sçÌs7jLUÓ~êiíµ7‰5«¦€õûO÷š¶¿¥¦½ß©iÑ®i‰u±éóDMû°ù×ÆùWÄE“£çó\n—8% ²Ë8&—˽pó¶n8«ßsA¹ºM¹‹);”Û¨]ùc¿@sÇ…µŠmÜÅn׬µƒË}ÀäXQ/ä3éÜï̱¬I²€M°—2ûš“¹„ô¥œöæÓÁ¶môºs¸‰]ÉRõ]8÷i]ï@úŸCQV@èç9ü;<ï•à5M—KäpT%;…7@‘%IYUb’ÊVAI•¥¥‹dvmÑ…šVÖDå³Q³%ÑË<Ñ;;1Mcs¶.Ó¦9bcèáxøô,ÿãVëI?x¬?¤ð +4˃-GF�©W›~ýéúéÖÈ+wÍß±wϽKÇ—}«ŽõìNÎzf_ã5ï¹)|÷Ê“‡_tüÄKF"_æ=ådß«¢m6×?˹ÞÏ6±¨Šö‘ò̪¦Š\ n•¹—$A¯2 +r´¡ªjí] 0´Q‡KqqFpÉÖæ ©³Ž¢ª˜oûûzËÝ]<ád‚¿ EG+-jÁˆÌsí„ÈyH +×&9¾ÉÿÆëø«óníÕüµ…Æå[ÿÓ¹\›ŠZ—²Ï‹k s4p•=50 `ãXL÷y$Iõ¾AŠ€m»Äf-I&qƒ5oPØ(«Ñ 6z7زñ»;_ØŠy8lÄ0�ì†Ïï1¢¤Y£à’ +$àÔcŠÄ(JdâÏhJX˜âkÔBJ1§ø.`’ï5ä%¡'âƒîVÓhàùÏK=z¶û‚&r{�°nDõ°ÕáùëQýÜ÷.Õ“âtDTž†çÖÎý�çøÙ&àu¸AÌ:ŒÒ”QB·˜ +‹ =”r\¥«ìÞÄ°Ð"K�W/"ÜìÚ(G€¨Ú¸�ÎÙ²(ÍÌ›…âœÿ¡¼(cƒ<˜ŠëåáQø½WÔ`Ûv„C~?“"Z*~ºúR™ñQO1LƼÜõ‡¶ÃY«¬}lñ–AËÃßjL\^Ôt…‘’jÌŽ|5û¸h.¦9Nne�uÁªªO)`]«Ü¼KkÝÍm}pêšå⪠+sŽ¨œ0¢ãîïË$-GoÛìèµFݺV”$ …’¤Æƒ]±¨ëEe£·O=PÈnÿ|ßÎm™k‚é[)Tó‘{£Sw‡sžê¼çÍ3'ÝzmG&#½¬Úב¹æ©.~ÕΩ^ŽT>mfí’Ž„%Ý™¼Ñuä ˺lgéº + «ë²Z„+¿ïþ;‹H@É<™ÍZL…]ÓÅ›Iµ¢Æ6§|s<ó£ÍfV^ólŠ<GD6=÷o€P>÷3z;ǨÏjºªz˜J@ÑbSEl²²Ì$dŒ›@©})ø€*"ê‚\º‹Õ器ÐõT)“ç¸4P`t‰+„YGóÈÓ¨÷–yð‰z}^oTdÍ‚àQüŠ™øðÆÇôCµzCü[èr äÌU>’¥²¬ÐÞ½ÿhjéÔ'{"$8ñªgîë"mE½:ÒýÒ|£dòÅ8QØ7“·½ý¯n,¯}ù-J6!péí#!ZZûÛ÷\‘¼öªÛž~2ƒÝUÿÚH¨Hùb©ÏçÂwH÷ÙÏ�¯=þc–‚w=êbâ•äxõ€Â(UVÀ„@BŽÕ Ù„M˜R¦Óq„7k€ŠêS/¨†ÛÞs1 pÁÀÖR�³˜¶€×°ú5«/ç3¨ @±æ[wUš{)™x¬+Šcwá;éÄãÉ„J*¤±vt,ÍêË>±>û·ø&‘ùdîì¿óüeâă3Ölø� Æœå{¼FÛ‘:lÚB¬L˜‰‹Ë¸˜õ`a™ßG¤sÎ2EQ\y<�ž”'òí:tY ´Wf;Ëýa°¥ÂÂè™ýÓ¯[¹í 3üï™Ó#;îœ>¸22zçQÏõo[˜ø¦›ž¿üí7uÏ?÷ÀìCKóÏ?0ýÐ)n‹ñl“3{LZ=‹½ö&±fõ,+°~ÿiÖ}ѳÜÙÒ³üå%æð?Od·ÿ2^{Ͻü7ù1„ %>§JvwÅ¢!·L‰Š@É>?œN¸4ã&ºA ±4ÅЪuËÀÁ +ÂP$Ëü6�³W)plÛ²Ùl)ÛÓÝSÔ=È•bÃY5B +Ch‚Æœ ˆÁyÇÇvnw£2¸_`½x ¯Þ¿Vè/ciûa6>=RÈ}¶q™zí!Žvb!yEõa~×töÐÚÛ_P#rƒc¿öv~»VÖXÑÁDð)gñé6›Oô?ŒšïmºúÐ^T5b=pØ„J”Ÿ‰&ó¢T¤@EfŠh˜eM’— Í.þ)µŠÿ-íDU]'Dð2¯ÝWu Û]v&ìÍ=¥U±©¬©«ô®âœ¦þ]a}Olow/Ú[^`7€6 +mË ˜‚tiãî\ßånŸ\nÕu³]»{Z$™d¹P.7ªýj1IÐíI‚îYoj¡Öúy“„PPd"9Wox[òÕ‡<tÛð8¾Ö-|Bí5FSôS/à™jׇFk“|ö¹ç¾iÏükŸpí{NSÏú@Ý1°¯ FeéMå©xÈñÐôK®]|Á´5ñÜcÌÒ»àCM—Ž +ú‘*dŸy’ºU«¨�e +]–íöºµb¶O¨(+2®lTY¾€N³ÿ|q{Rî¨m*·yÚ‹Åb]±¢îõ‹ù¸¦Æ6ÍÇ…šU´Læì©çs¼ìUÛ_v_¨^ùS.6n¾:c‘®–\ON.^¾h(*õb_ïìÈGãÅÁïS«QžÁâP„—ð'°šj§üA¥’“cdªœVË š²"7Á¦ÔÔØ ÆŒÉÂÒfõIªéK&²éD1©ç³^Ñ‚tºÕx©a&ªõ +‡[ÞH˜ä:o°aòi§)EëXÝñÒû¢ºÓ¯~Âòµw9Ý ]ø”zñ†¯Ù‰÷“µ÷I„\}pæ¨StÚÉcJªð{¶Í$"1"ü¯Y¦‹@)wFI"‹@H™ˆžÀ£ KT^ H„ÛˆsByDöré…^ÌtŠ²ƒ¢æ%ÿWÏõ‘ÖÆ;„Óº“ËÈ»{¾t¹¯šŒw•ªÉ;_·ÏÌjÛî9Ö½½{-É3ÚA;»ý)‹ô”ò䆷\if¹ý¯8íÃpO>tÊIvnçþÒ[áSvûˆ¤¡å+ej Éš´¬¶8‰¨dLŸ¢`];š�E¿²â¨‚ªþ6ÍfÕR*uy]Y&ÏriÆ`ÎQã Sg¥RÙZÉ{ýÝÞø!ñl)qžï„8–A¥Õpèz?áp·¸Ó&g:9T ?ï)xô¤7ÞLt'Wc…ÈX»'Ü¡ùbíœ_øÒËsÉdG«!9~lïÍö¼~C®ÀƒaµxC –mGüKA><ñ†ýûã]µO3ðQžÓÜœgUx 銡$sm´»¶žó(ÆLÿ²ˆa•²¨¢¢”ŽY·Ã72i (d@AX²…‰Â‰ç€*Tø8ª—ÿA&¨C¹bÍà˜ X±lšP‰hÍ¡3ÜíG‹yiP.J7Ù~¤ïÖ±éáÂñ©Þã:«å¥ã‡·íéÛ½mÏ‘ÑÆõ“žh¤ôÙcc£¥íݱtez´kf8/}eú¦±®Q=ž8´uøXE` §Œ¾ì¤i¿Î ˆ˜«�²"Ê„ˆÆS$ƒ<Ê(ŠnؾQ(%q¸<k Ë +,n¯/ÇÃIÞ£Š€"žëún[®Á³VÉå¨Á…/EpyÇPA&㲎¡Fmé‘ÿŸ!å¾þ\ñéOïœ*œýº5OJñSüOþÍópµõ°PF‚�d…!�žßÛh‘ZÎ+g‹ðE.EÅQE¡s¶µO*üDƒ'NJ¤YkPÆ¿¶=4\/Ù™¡ï¾!6ñr8u|öä¡tü#ù$#øàó<S¯y🚃´ÄëößÌ=xè÷aÄi�ÿÏ‹ãu«iQ{VZ7a׺ÖÚ›¬5Q랆õûO÷Z÷Ö–Z÷—šälø<Qëþc’ó›s?#qTs°ØtÉÈЇؾ-[!ÀÔ�ØN»)k $žÊ—à1!\“ =—M%ñXÔÛ)«Á’O/ +ôQ‘„B"Bð¦r'5§F¹˜W†ÿfRQWwg´è!…öËC>×*÷û>'®Ùá’H8”mF®ëÙ>_º!ÿófÝÏ‘%=õ³@PxOý#Yw©fÛ Ü^RÙ±(çQ†a’‚ÖT kò ?U¬n•!Ì2˳sǶâ÷ÉŸ3©¼l÷MÓË‚¡ ùŸÓ1oZn¬Ïed%GiîT{XþqwÖÕ™”:4¹“ù]ÄÈ—zµtÛh{ÒvúÛhØ[K»5_ÛÌ?å‰`m¦šüèûÄUœ +rLH(ÎŽÙÒ¸ëé=ÍÛŸôŒL÷{‹Çò±úh÷ÁÚ‹N"µ o¦Ypd×+üt:ûA /äg?OozSH°šIL@E¢`ýÆ´žGOÀ¾VQ’äM güç„fƒØÌÝ#HK\T‘¥Yà'¯ÌÙ²Š|ëF†c^oØÍxc.3“4";<3…ã)pkÔ’()"Š“ Ÿ;pÐe±%ß–ìÍÆŸ-n9Xno -WÚÚ£×\è8ú7¥ñÒ-/Lïýé¶ÎÌÖÆ@UªÆüuFN–º?’¯nKø0ê +ûKÏ|N~Oç’<±ýÌ'{øÍtFJûLL©ûÒRÐø%ÖS9bÝpÇcŸDD'€¢*bZO)YÐœR‰á“q-0RÀšùu#í6ᢊ˜;) *³–¬"&}m/h†x™š0Ciƒšðd9ÛLV5Öñ‘å[?Ïcë{úÔHFRÍ~’›$|ÓÿÜ¿³°Šè„Ù[Ñ7Þà -G‹Õ“»ö>£ØPnöèžïUošócÓf#rŒXO¿cF*@(ŽGnnºÚ uæ¡y@`€l˜’Ü�vQB©tÂ$Åb�‰Ô’Dg-Q*qºh<£x;ÆÄ¿Q÷Õ’lä”�Êö�®ÔöÞ‡õè9Ü6š•ñk¯*¤~|Ù,nz®ÏûClßšbdæè¿åÎ~½gxøп�ÈòYöÿ't€—5ÝíH°;O˜Bœªœ Q’*”e@4 +†>ñ³»1¯åEáeY´%Ž‘%—mu!’Ì‹‡u&ó4*ŠÅjot(x=p«QsŠ]™•“"ŠÕ\Ö¿(æ N”XÜKô¡†ÑðÕNXxÞ¸¾#5ÜÞµãÃGgÙø(›<º}GñðËYÏî¡Ñ™"îØ5v„·ÄbÁL#=Õ7ÓyÖ³¥gr$‘Ü’?A·ï,tñbàD“…m�8ßÄ{ cð@å‰æ}žg©’%%Ã×k™ÍëäæºÈa0LVê×~ÓÈa_7¯Íy Y1æ5ÖŦo Ã7¸ÀÞ4ê¬ûJcœÿÙ¿pÖ¿SiÑ*ÖÉ7ƒgúœiv$Ú Á•r‰Én›@Ѕĵڎ.À%-€[÷²†‚3D1´Ø¦«²•øª†6©ƒðÞ9GQ•Ilp`ÇöÁ‘Á‘á:Ô` —ïÌŠ¹@‡ßH‹óy2ÿ–64B¢ÏÉ9 +ip¾Áõ–é+Ÿ3®oÏ»d>;ð‡ûfÕñÎÄ‘Ú¡E\û7<²{f4²ÿôê î½ÿYz‚÷å;5<|Oܳ«6:£ãö±ýé˜P:â‘Pj8ßÛÝÕwÃr{øºÛŽøo]\Ä㻽xíFض¹ r”ãäÇ|ï±l¡Š,¢hÞâÓ¢¨¾V¯dt/‹ÀTã*Š´¨:‘zLBŸò;«ˆ#ì6TìÇq—ThVLYP$¤UG‡¬0™9¿«Ì9:ŠdLq‚Ñ(@´Í§“ÜÌp®Óëó¹ŒÇQE%gT‘¼š¬y[æ§öBíá¡ãÛj‰ø¾æÉw=¸?³+t§'žé%·è1ÖÓѾö¹xjÇíû¬îí¾cñÔ©èÙ§B7gùãè.7Ý>D’Íê´;I@B ÒU{Üg<UX”±²h3Ž€1/ Ë@£s¶eœ–í�|û¼®tY s³lÖ9llþ‘ÝWnÙ=v×Týh”—G[Ü;S}“=¥ƒµÞ¹H´pÇ°gÇíÓ—=x0;œ %žÈ–Th઱±“[«ÿè¶sç¸U[«²°×¨_¿ �z8›†9›’PFÚls¡ùLŒ2…X”ªl¤”¢Øv¯ÇnTU;tÛ¼2þ÷Ó�÷9äN”߮լœ¯`g T%Y;UØ:ªl0,”J¤Ê©R±�IHx}¼y1s…†¢Ù)ÂÊ>«Ñ¬ýõ5ûïØ—Ú ã[9ÙxzHâHeÏX±¿9qùÁqÏŽ[÷Ï<qÂë~–I¹³w‰Ü‹¤óÕBÂSÄtî®k®{�”8ë~F#‚2¼²é½ž-2 %ûÂ!‚üÑyœãD~Ö„¼kJFÆg–˜ìØrÀ§\L¦™6—(1Kd„°9G†ŽPÓ—N¤ËiP +’q]QƒàÔtݘ²A1a7™+žbØØüݵ#õ¥±îýâ=¼s{~´:ÈÆvÖåëï¾÷žúήËvNìõŒÞ81¹:•ÎŽ=¥û@roˆõ0þ4exû÷ž¿úPWåÄرgÞ{ÅòíOñç„Aâpã¾NBœÒ1¥ H$V˜ÍB袨%ËÔèK�˜ly]’PJæl)B¹SúÆCñX‚ÈútÑ›´ú¦$;Îè3òÀO7›·MŽ\Y_;ƒ‡fû®Ž†õ{Fï¨×ïyvÝ3}Ù}û®ï~z%çÆãÛŽ½˜w¡–%g!“F=øM|¹YÚkÔeøú̺ÆÄ]+ç_µžóQ¹TÎßði¾ ¯�„�>›çò"|ô‘2Éþ¿X*ÎdÐúÅ$ÑE#(Æ8MFBºÄ<_[�ñ‹Çm7êQ1U•–/¦Õ¬^D‹rU¸²ñ+KIÕÄø¬£¨û¼>=Ÿóú=FÃ#†”×îöÏZ£§ø%¨b>6¬&"><»¨ï ùýI ·•òÏx²ÿœLôV°Jz·ß§çý‘XG‡[Õöœ*Òµ3½!*&V¹µ’Ò„m0söœÑŸAÀ|€¨¤ ©zH&šÄöÅλÍìÛó¦ë!j® U†TR)g=‰H’¶È±)OñÂÆ%/ºQ–+²ý(§²Q$Ð\’ÖºÃF=q*u`*¥lÅQ‡ßM»9zž"�—T,oګɲkÎÑv™áµ09¹};ÀäÜä±™ƒÛ'¶íâèmVúÊ=©D$äïìPý¥Nù-‹h}ý(‹b¬l?O°"KȺñ?Ž|#ÉÑ7ÜÕ3Òˆ-f–,É–Ì–y×Ë»öyá–Á{¸{|·‡aÎA˜sô@xï 3üò„ó…“Ë/·òW=£–e{½Ù$ßû¾—È;šéMWuwUWý«ÆV[^lø/ÛÑ*kÏ5=}ñh¬?Wª î4O¤¼~§Ãê<~µ×?p¸Ïè0Û#…»o»mæÚátÿp½wh´>¹+øàhÚÜ¿¥ùÛäH,;jÖ'ƒñ!ɵ:°·’ÈÕ|n“Ïa]î‘h}w… +Ü +ê‰-ÕÍiøÈæáéCÛF6îiž”Õ¤@Õ¶ž@y�é"„ö£–Í“ß<‘4Q•†lE PA!¼|µ–ÕhZF•Vvè€c5²mÉI/†J‰uRqSl=šF÷ù›‹^¨‘)Ð)ѦQ©eä¶%I,èt¢Í†Þm>E+m6·[‰‘°K-»MѱÑ@—J1Üb»3—l6AqêÖ]*6W‹%øVËxûB qåé÷²)ʦðó/™ùšßJpÆR'„<…+¦ž„È•É—'ÝÃa�<>©R¥ë ûŸîðÖr>g[4<$´†¶MÁyœæÛª,rÒ5íÝ;³.‰š®t3˘æôzpØì .®Õ8q&-¯€cë*ãåÖpÄéE\G‘›¢l¬ géá˜Çy=±s@þ0—{¥¼ìP¸Mb'÷)<Œð¡ ¤Ûƒ5}ždh5dt6kÄåÑõ·}Ìga·q”âyú•ïìOpu'––”>ÈúogKÛêm«ärEm+yÁHÈsª6ü?í*G1Ƥ2žO”wÒc¡gÑ;ýï]!ÊÝxÝ›üç¾²FŽÈë§l?ìT쇥ïvøN¶íàö7$Öð’ï™çkþ–¼Ož_(>ár°Ï¬’ƒX T„•óLVXrÏ8éÛòuã4P¸]dD"Î\4›žyNETDD[âøêNîgä4[«qºq⵨°2R:³.‘ áT‚´]†—w„2Ì_‰FÂ!¯Ûf‘gªnÕL¥íc‰9j½Ë{[¼zª5gß•ö:œN0ÜÖ@k[{ò’å¹ûô‹Ã‡ÏgVj«ÿ�|¹µÑXzæ3IKóØPóô@€!.Uj?ˆ*¾·ëçPÉÕÚ‡-êŒëá.¹ú•¡Íïò÷Ü€£ÝùæMÝܼòFm%¥g‘ZuØO„eé–ÅBÄð2›Õc1p5ÕS[VTÕ§p;Mv@c¯ÊÖ/}kÒ9ùD~C~«Íg¡™~ç>O6r¥Œ±S¾¬û$h[š+uWÚ(¤ƒªZq§ÆëÜGûËÁlO=Ôk ÏaSV±ÎÉ“(5;y‹")¾Ôªå(Ëv.6ë4TÖóJÿȺµvn3ÑÞRêÞ–RUËÞþß 3}há�ɘEàŸ™‚v¬@Õ@gìkz<fŠ«+Ãú+—bÇÒlÒQ¦*ÍzÊ2[YJmRF%Tá4.L–d«X›Œ°NòµDJºÂ¢U»–Í ‘Š=ӦņH¢v‘ß…±ñ213”•fÃÌôÔè0.8¦s4¼âq&Ä:җܣɽޫ 0—³}ŽDäsîJ6oPÚš,OÙã{2»wжuõè¨üE€žþа¸>Îâ¦Þh2'}áX8¼â†N‹Íç +e¡|ÏUž¿pI—«Ö\âÖGBμI BgÍ�²É¬_e2§¹ÉÛ9Ö¿ld9p'óúl¤95·)×1¯×´gÏ·®y]å‚çd̲´¬9ùù-l4±Y¢J’IºÓÄ®×W Úéìqr…ˆó²œ¸D£Ù…íŠ$¡6ŸqËV7“HKvöl0qÕõr[ˆôþ%n](rú‰’}²…ðCæ¯a^TF陉 ~¶øàgýŸËÁñ³Ü-³Æÿ+;Lÿçú‰ñ맧NOL\?½cjÓ¦ÙM±™ªeìôÆwnœ8=³ù®ÙôÍ{Ž¿øÖ=S“¬Ê³2gËF|£b#òk‚N¹Æ<2—.S|³u–ydŽwxdë{dÖüóÈ<ÂþÅógñ|/q“Iaô=À`²‰x—·œf×Íÿ.Ðl8N…“é¿šu+~N—RwUáyäg£ÖŸ¨åËÈ߉¾j©·ù±èõÙM?žò}1Y‡7íGîú|—DOŽ ·CÛC;š?ƒ ¹[÷üþæ={†›I/óïm®þpÂß›©H"؇ +y¨aЂVp»RN7€;¦¥hë©Õä @Û¯SQtÁoÒƒ$ñ/"žcl«%êENˬ6tÉcKQ”– $æ› +Ñ(!…J¡R.EóQæ�p"b‹'r‚ó¨ªÌ3•ƒ;Ñ:ˆ±±Ø›ä~ `GÒ¯¼bú†1ê¿ädó½¯BŸ½7uªo舂{ëÏÇǧǦgàS´»~ÂÅê¶3/ï¸îJõ¹R}‡½åîZúOÜuó¾ÅçCelçýŒg% 9Ù£_†Í })Oµà•–+͇·L²ÄAٸη7¦Ù¶Þ¬pj¾è]eRöU-ë@íŠes=:'^E×ùÜëÒ6úø:ÊÉ[Ë(¿M',oõv×–X,VŽu#’5Ù^NÝl9µ·—S§,æµ V®6qjȆ eª qvs™ÁcÃÓ7LNUq…ÚTrËæȈ :þ=\TáʪZVù"Ã×Îîº{C䶔‚{àäøÞ;©Öü^ŠP¢EùºÐŒ8†\Ö$ ´ª%àx[Àkm³ŒŠŠýÌoqñÔ\XÔÜ6ü›Âê=/JL‹»¤6ú¢ù +*v~A ç•w/¹ªf.¤ +¢¡m™áCS§§§ËLH›ç0:8ì®L0 Ñofݲþo`äúM»îœ½Y‘ÐÇöÞåw7_›T"@ËT$~’%KO„TT#q¥L¸JG·’2Ž%If034yÉηwIYuÛìä„m.HÔýýZ£ND*Pw´‚DévÒ6]$ •‘Œ€J‹D¶ARîãc¥¦²LwOÑdB.5¥’ä{{qÄý,·ÿ)"é—•3GC£~pôÄàÔ 3¡ZÔê6û™ÁávöŒn˜KÎtŒ‡FGOoÞqç”Qk9w•Ìüp,�ê‘ŒVvð/,Jˆœ±€ +B ©øÒW!*@ÈÔ52LˆsS^³v‚ŠïEq%%)k×:T|“Á¨@%¹X2.íUdÜpl“wqi¯C´ª“„:_#WÓŠD ¢š›œkáSì?„P9m¸«ˆ0¤ç®¢Ú¶6¹»¾žÄ=CÇ–!”Œš"x÷W‚i¯Ûå’[|(ëϵ6BÆhJ eá%qÃPåOÜöïÁ¨Õ#(Ý +y[CççˆcŽðîäJÅ×Ás¿,3ZÂÛÿ“eúZ!eRŽ�)éE‚”ÿs«_̪C43‘ÌMDÊùÞF1¼y44æ§Ù°06Xèõä{…ò¶‚Åký[¦‘È$ýI¯Õ*FÆ‹wòó…P íÇÁ`¶{<Âüh_½�£{3¤y–‚šòèÞÁI¢’ØR¡;Ht$z}‹<:—n¯É•<24‚Á7pžNð›éˆ(èÄÅèVÆê»D¯ô,ëBZ ò[m l",¹1 ø=¨IÁCvuz¨¿§R,8ìõ£DXö¾x^ȸ›mo¶TÈ£ˆŠÁm6p:ZBŠÁgƽ +Iœè‹÷ó©Ræà½dp_Êl`k—]¬_¹µrÅVQèÖß94TìOïÛf±š=ÿÖØ’Kz“>»+1™ÚJoݶ5|ɨ[ä±GØtÃDúÚcz›€»ë çÑFäqâ,¸“ÞE¼äÈhù«xÊ*8(�€Â烇D„åëxET¤È9µj·Q1°œ™IXÑfÓ0àKT±ÕƸë>tK÷„%úØc�ÑlWÕîKmŽ[Þ QÈÁ|íù)úŠ¥™©°ß5=ŽQM’&?—çë ;ðÑ}ì@"À£¡Y%(¬ôB%÷‚•>TV-ù׶àQÐô2 +Ñ^¨½ÍWÚK¼ýò¢¸‰t¶ndÔÀ¶Üœ°À–C¤9ÎZlJ±Œ4I¡Ó+âŒá‡™"®dÇšhUxgmŸ–$ÿ²Mœ +¥Ò¦@¹?1ãRmA܀ȑÈî¬åÈÍï`ë"oíÞ™�”ò·gÄEœFr¸{R8,ï ¯líW_ìWù5AÇ®)ûÕK–)¾Éζö«7tìWýëG�ÖüÛ¯¾ž09«—ÎÁŸà$HvŸ5‚º=8ƒ*àç´y> óÜqaèp<‡ ‰¼EeKƒÐ‚‡ëpþ"0œåqÈ{¨;Š¦„|B†»ïKÓÜ»óÎ-F+*óv£ñZgÐë¼7 —–pr%|¥·…r:Cî;4›k=µæ[”çÂøÜarä?‚½ µŸÜ¯†5èöô&¦’+’!ð‘Öƒ·l¬§{€Ú’÷@†ì×™GÔÞF¯»>“î«UãÖàH4óŒCVãÀ["I‡îÅé{ïIÂ5>6Ü©_íyâdópV-x‚ÚC¾æpkó™<EÂÞTÉ= ›(ÂQd)$بt,E”Ç¥VKm§P8½%›ÜÊ–k@è¼¹l6LÕ +vÔ‹ÿ³véxµŒ?ïÄó»;ÑÕØ//¸®"õø£‘cÖ1³”>ßå 쳸¤©7'ó¥-Ïý†ÂGÆËæº[Jáì=®¬ZÌPd‹ÁèÌo»ÚÑ%‰™ >Õ鿪ãäŽSo½çú˜Sö*‹ˆÛ0 oŠä }D!h¥Dv%8ÙúËlˆ¢°_ Ì|b#—�éfEì(ÇKh\I#³Üš +_%¨@)¼-`7i{ËŽ(’‚Õ±ºqfGØVĆXÖƒ p5&sµ¶ÌUÁDc»³^‡Ã‚ÆèÓ»K¯Î껿 –<7û¢æ©×D®;â¥Á\ó·á€=à7kUÔaO>¶îíFN + oï_ç9j@Fû‡šo:¾8€k†Â=yÞŸn2¯á«LëÚ7ÙµÖzr¢c=1®¿ž iBà+(7yECghaÞytT³£PA¼š#ÞÓ+ïFǧÿAt¼O B^c�K™@Þ*èx5\œ¼R$ nKXûþjF2À³›?ÆÜGú{uCóp)•�3Sï7_`ö™Ø<õ„Ë¡›Ñ«f1¨U¨Èw*Ã¥f’wâÐ<k§�ø¡˜3ð šlÕU׿‰Ö'M²ÝÄjRÃZŸ×ðZ‡ðb»1°>5`žÒ9ŸÉØŽ„Só=IÃÁåîlÆêŠ%d4˜ñBh0¶Bïå{Åþ« ýFwî¼ãÙ“û=N§K•š™ûQ('ÓNl¢÷n«Ñ[Ÿ]N9»|f«Î`_B-*qvvù©@\Ý|m¿‘–Ü÷¡ÜË ž�Õr¼¬î©QÊrT ˜¬ô2Ëu2¿À¼FYõpó§Ä ±9ÑRA»ˆw¸Ç€©dx†““‹£n”×#ÄÖHÆ"SHÍÕÒav/q³ŒP)w—Š¬’m‚UW³Æ˜pLk…£8¬ŽeyX×í›CYKÐdqæ#c½+±{¡«o’Ô˹›¤¬]µÙl33›Û >BI n‡k0‹5CªäÙ ËSÉG¨¨‰Ž¼Ùˆ\[&:V4"Ñ,J jÕ8\UGyêÊ òk3Tx{¹¤ª¼ P¢Åm'¤ˆ%~ñ÷Ó KMÑi»r¶5©))ž‚ IÌæÎRÇê•z]Á¿]VÜWt§1I‹ akt(~-€É¤ÑéµIk^—°¥R´²Ém€Û3ÑdbɌˢ3ëà0»s]7]ökíFG®MlKÆìNJ(éFîœFî˜HÙ¦ðÁãL6�ŽòÀÍ ýÛÁ³™s—Ùë´ã½ŒIµ–AZ]Z«©¾y6›ÛTœÞ›ÝT,– +Å,Ž|êÙby{ñÒåùøTïðÜtmd“`Z¢5åÿ¹š,k3¡Ä”Ö)Uÿítýôî}×t÷^¿079µcûìÌ‚å«/Û÷øUW¼yÿÞÇ®N½óî扻žùB@FÛl”+Ç\£`Š€—Øq¥”»RƒÒUuiÝ(ÜËÛt\nøW^aåß•ëJñ÷'¬v·EÔxäô6A†É3(2[N½Ùñ±(sK¡}}ðÍ-—œ{CÅ®T™*âŸá³æɃgM:dv¹>ך\s÷ðEèaÞöbôðâùõð†D2ËôðeùžµófnᦡÙB"§®3C})högz›Çíê*Û{óþÅéyéí®d½'¨nnëß;Õ‡áË+ã{Ò!»×yB“¥…½÷Í ‰ªÀŸ}>ãKwÞE¾’4Llè*èOë,2u%ª„3«ªª±EU}¨ÕØ}€¯Ry u Z\ä„ŠUȉ€çU’D2éI&çR‡UˆW8Ãv™`Rk<¿ï`w—ÛíÔk'æf颙òˆ¿6–×Z°…§´¿±ûº—¼jêúIKv$ì ,O8¼mã–´PMl.ø¬³?à +N”æ÷ôìöéoÛW`3Ó@<ü²7«_â�J€Zß'É+ ผ¿¨B·PáìcƒûÞåv«š0žGä&-OµÒRÅî¨Rµ6’ëµYëÆÖÛYu)›=,çØËÅÓ#½Pµº1%x` îIÝáæáòÈñãâ–¿.Ð_>F†£eøv³ƒsUÜrБæÇ…–Ïòh/çÈoæ0PµÛE 僆·y>›Ú#€5J¾Uu:±rÈ(»”ÜšÖLk¯C·)8Òî½È_iW¶u‚ê§Z;*Ùf…WµÅcëŽK6SBDž›ªÎÚG÷—åq¨ÞžÙø*ÿvŸ‚З÷©›ïðoIo],O\3aÉŽ†Ø�´º"±#3Ÿp˜» ŒÝ'}×`iœ˜Yìii+Ž¹)‘{pÆм‡ªÛ…TSD,Þ§ÅeU¡æ'—xÊVnuʧÀv8ÚÍÕ,@ŒBâ¥x1›&1'ÈÏJí!©ÛYÒyT +ãÑ£§Š·žìÛžq9Ý.ƒºž<¶Yô]Rßt03|ÅøäXÿlqÞ¬žÜ`yûc[ÞþŒÌ Ï�ðYœNgâK7$Jã'úF.IÚ°åöñü5÷3?�Ž¾÷`&±‹Ü|ÖDöøZY1tÌ<¹f9yXleÅðì:ö}mƒF€_cgîa+¶¬w˜—¹F!,UÆjÍ0 &•3 K+F“.Â|êØëý]&cu,Ù|jÞo*Žæ“–¸%ïÙ1ÜõÚí@7?0yào~å0ó, ¢D JÔCâ(Óý m&nS1:ûO*ûD‚D)QðÞîl@R_!3öwEZ›·R +þ÷èøËŸ;|¤·gOmÓÐìþgßVõnoD§®W7X"³ƒ§ì:<´#ÜXéÛÌÚ³>´5521SîÝéj>{làæéÔ‘ÜÐFÂì-ì«$×¾/’»ú„G.[+Ú£—ÏH ,O`^g côfWÍÝÅe +l¼5ȃ7#$VŒ2)Vò.gó—g Ökíù›’áZÄÆ24xÞÛΔÛér›¤JáØ,°a{ =påô½'O½l‡íÄìðTÿ¬%ѪÀoq:<ÁO߆£öxßØeÃïüÁïLà¸}ðØÌ–ÛÈOd‹é&YÈft· ¨=Š"1Q`E8ŒW{ë·œÏF™CäûY£-i8i=9{WÿeÃ)¶Ùï¤#–S^ ÕWÁÆTì· ÿŽæc~=d*0†Ï›$/âÕ[姯²šfÑáÑ i+²U¶Ðš†·½TO$“j¶@®ÝKpcIr»Six¨¿ z¢¢Öl6šƒ}ÉêTizR?aŒ|‰Àå»J½£‘”Û*YP—ÛÎB°Þ®V3,ÞŒ5(Ã0ò`€¼¨a€J¬¶-$P¾•Êk&¬NŽrsiPü'l¤ÒŸHÆ£l,k}ÝFµÖi#¥i]Ö8•¹ÿ¼¾€Å„ØI!áIdâ%³A_ žˆ óÉ_KTG©JmsÊ]Y—É£AgsT¢h8@¸àóg‘efÆ2“=èÍûzt e«2"96³9ÐÐYA êɳÊö!ê#„Ò^¶ãŠ¬µÔj² 7;ÀZn•+³f,?g¯±áÜk¯Ú™1#›2’û ÇãŸê‚¾¾Ìýe¸åVØ +‘°.Žæï!¾‘FaàqJ`éIÔ#¿Â§ˆú@w.n°ÁWòÍ”Ž~4tn½\»~*¯]è‚&1ò\òB@"Ï‚G›_ Zæìk~9ûZm?sž¶Ïg+mérÛ¶ýÜöÙ¶ïnµ}ëʶ̋)øol;ŽzÂê Ùˆ]'UÛH÷xžitT`DE‰êvVù¶9aluñ(.¬¹—]>!ˆTÊÍ&]sâ–`I¿)¦.”]nö…[;L¿+çÙ[ÊKWÃx|pÊçéq¥Rßå O¸z°a2è ÁZ3 ¡ƒÒ¥‰øˆß¬Óy}bÑ`.y}zô[½!o¯…ÚŒÊc0EÍéCj½;p›Ô‡Òö´hð¨4aX©<èµé¥œf.’Ø“/è¡}-zŸ&Èké;ÛõF&@CÞ Ï!zlø:j½QÆ„m„ÈY +ª,…ãјljy@“ðù’IŸ/A€TÈ÷‘LG̤Wa¶òä‹"ÓÈÖ5wG¾"8ÙÔV8_7•NOe2òÿ¿ŸšÌd&SÊ_ìËÄÒoÈ»e¤ÛË6^N¸Ÿh™wîo‡ñ¥-ØÉãÄN*ï´ÇGê {&þ:lºÐ:…|W|’b^³[.Ä«l›ø’°Ï£ÁÑvG’¹Ðë\ÛSµÚïô…ªéÌé0>UGë—ȵì©äÑúr0Éñ±—S¿yÛˆOýa¡â ógÕ-=Ám.J€žáåü…ƒÜæ’¥BîUÔÖrŽ²ØÊQ6hµZ‡Öž°G™ÁeOÊXn!¦îÖ& +4•P·ÄFïõòæÑ?qéá³.aI*‚™<Hšð‡ä&¡ï†?Èܤ$‚HL?>»Ÿ„É=Êú””TT0i(ž°˜µt”èWªýùÛ²ºÕÀvøèï[CDÌË@öã ”˜YE¸Ð†‚XìÊëa3 +”ÿ,Væ;ŒÕ«ò§*ɧ“ªø‰Õñ“À?ŸzÄòæúã–Gó㹯áçQó#=ZÞœßPøR~ìª}µçC?zþƒ?úèG?ÚüÉO0 ’³(A}{óá +ùa>I\l?ÒⶅsYá"œE.v“!r_Ãd`E €üÚf7¿æ5ÄŶÿD‰ékxL?ÛnÉ-NÑÝ×´¢ûÎr™òPy°Þ‹¿^Ê'R9fæÕd+gé·áʉÈBÿÜï¸b\}¤”L'Jц¯˜èªìœÞ—Éô!݉ë™Áœ·›#§+r¿?í*ÄBåÉlÿ”+b±;Ì€€;8–/mÊ¥&«ÑXU¤Ój?éòÄuÑ¥%äWÎÊ£òðõÕ£¯À/À‡ü<B^-’Ág4XTêÕä~¢»N^*뮂2fõt’�yúXYÀó]V›þvK#sÚqúÙïá¯LãJòqyµ¹_TVõšÕ†¯®m-é78醱soÿ…ðƒÌÓQ¹ÒöKèë—>mÂoW›l8Wÿ¼òãoW“I·Ê駋ç^Qû/z•–.b•–š¿…q|NôxŸM"1Añ "Am©å·„u·]{~fuyëm‘5—×¼ILÁ™T V{³f#IãQžY±RcŠMÆG +Îb›Ë™\ÀÍ—mA•aÔ3«1²eÒ_ís©¥FwiLR×gýÍß.žrMû£½Ý=…žhA×çÞ¸'…Ðäk¤×Ríô@dbÖµoõ£Œ È—Y;¾¶¶µã¶%€}ˆ¸•È~aëäã'Õv×fÛ;g;‘ç!ï¼Ôð,ŸÖì6¬VÙMk8%ÁíŒlíUŸhþþ~HxúùÂaO†Ïà¡¿3y,ò9�Ës ŽO¦OáõG ?k_ÿYkdÚðº {f‘iRC·¬Û,©º‚6“l›7½Ì[;95u²öÔñs/†à§Ý•×|êäÉϽ©,kQÌß/Ïzã^5N?rnŽŽ‹-ª½øT³ŸÓL@�ùÛ4p´ùFÃzÎi(yœ°ï᥿ÀwheøoÔÆszIÏþÏJÄL4gÍI¤ÝXí¬7U'¤Ø¿n§ô‘O|,ææ“ßrSøãŸôœ£O†š¿›?½öMôÍ +eõñ>Ûiïþ8Ó!E<{ÏJÈ]I„å;[wôž£¿ +³{ýï6 \CŽ³•„Yø÷mJÍuø_¸eTÂ3OÒ©”æýðZvDlLštŠÅÌ¡u€^¤`ã5Eî_ú½$¤|½¿Õú~Þš(÷Gžàá÷'Úö]‰r7ò2¼.)wk]½¿u•[RT~j ñ¥[qGp5É‘W6�â*$T¤BU¢ØŠd‡e1^M¨ +”m[Yzàa"J~J{Ú„gýfÄÊJ!ð“|qéL˜v'“ «— +Ü +ʲŽ»Û ]¿ˆ’$Åþ2|¨¯vdd*›³]h̯¬¤9^…‹füÔ†‘›véñµq±Þ+¨ä±„ܕ× VŽž!õl¬ “4|þ‹øH†Ì6f<VêÛe3ëA-PF¤"ËÙq[)lÐ +”̬Ÿ“ã÷û3þt>/'äÄ%·”â 9ز”—SÍk++é%¦«Ý““¥jf0žÉÔJcr-=’º·`ÏÇby{¡÷•‰ðX2ÑOTÆ&{¦#Ì®ŽL÷L>°8/•Æ#‹„ÙóK‹ðKaŒô@¨ab9ÂA4”;¯‰ +y5Ñ¢;%#ý™Ý'×u⇲{N”<þðcÂ_<6о…ÿlðô3ÑßûÝ QDÍn¤ ¥²ëpžÈBi Dñu³\ᲈ(U²’SÚ»SÊÇž‚ñ] ñ•œ±?D7ûUµ˜êà®Mù±úè–Zj~¬’XIèÍÕǶÖ豀ǖþÊžK¦ë™¡œ?Ò³£/¾½n¸AŠe¿ý®éîä@6Å“³—«ŸC€Äpòy´wJäµÌÿ– +yj íº‹´Ê›u�zPp³ŒUDæ”Z-§úb<À`04ј7²VÅ}ú/ äö¼·1†Nh0¢ÉÙE>:Å“ÈmÈ®(²ÍfVP¸R½Šc™ñ +Íø˜âWI*¦õU’ħiÆßì9jÚ +t¿i_ð7÷î.@Í×_²cîN'l÷5?�ÿ“ž{vO\—îºì1ËKo‚!cWØ<tÝþ@ù?·ì;}’ö)4A¾¶¯î|Ië½kù5ËG!ÄnÐKËu DΨ�Ô + +”U§Ók$=³{–ÓctªÓåuŒYœˆPÂV«Åók0‡}¡M¨ÑmS�˳dãôdkáÆV¬]&áj›G)cëÔ…c¾i74f"ÉÜT8WUrÐX 'åd—V»mÜVš«Õ§C.‡Ýn”2‘ÚV«~ù‹Ô=ÎPd(ðÝ~–xXòõ$Òµ^¥Êz,.³¯¬ÏuzÂÝ“ScÇj‰Þ.»×kr˜œþƒñ±\¤»»«¿!ÚmF]84ºÅíñz ÕG€ø[oxª“=Û¢ŠïyG1[0$®Ñ�,ó丨 À,§hI’‚AlÕÅ= ³Ù²ŸX,I²z¨ul¬Â:¸ØBrÊÿùîHÌÄbžoÑ›-¸Åô3žv—##¿VkÂ2—YLÙ`ÖjÃTêu÷â'uê°U–AëÆ?UÙMü—œ÷®»î:úâóÖ‰½ñ–{àÞ{Û¥b%(Á(~~tþ‚±ÿ“ƒŒrWªu/ýfé?á:úãå†n°ÀŽróј õ<ý4›ÿd'ü/ ±*¤ìÌâŤÙ.[€eXª²•–+‹°^VØgì{üàþÂ0ŸøôÁç‘Žl$KT‚ƺ¶™m3•Sµ>؇¦ÌLö`ìÓEôø´z Ÿ¤Ó[¨³ÜØÞž{û[Koy"söloͽå-…·¼3÷ŽwÐÚ˜%yò!¹zìËuCònK÷+Z$oR̾ë¢ødïÃ';+¿Í?Úgis3›=¥“?©ü9Kèü0™‡§)Úläã4HohÛH7´ìè(^ÿ&jì‘šbì½ §JåŒÂšÏ‚[À=ñÉ‘GmJƈ�M*bßÍä.eßê„Þ«8,qM± @G3JTjª:ÞÙ¨=ßuiUj\CÏ=%,Ž ±eñJ g„,}ðƒ}¨ñA|ì ÈÁk^ƒr~d»Èæê$F]ÜHÜdHÞ¡–ZüîÔP–oK@†.®ñB‚®x"Îl¶{+KŽš¥ðŨîTÇàD9àKx=ÑÆ'ÊO¼k¤·´á'N–¡áõ{9ìí‘ÇÜkP²»‰ŠŒ(¦‚KŽ6ž"òHní€`Dljè}«Ïï9‹ýðy@Õ«rÆà‹Í[àƒ=à§#ô=¬ÁæÓt3ü$Yå ÇnÓ©„¶;.BåBPrªJ+yQ‚V¾\Ûä^9{â>ÂÖµü®¸_”Ö jeU$I"G»œUaëµ·ÓªB KYªÑF—ö0WŽ5œóàvÙ<zs=4bÂ<Òx?:ûôè#n>½@ßÐ|êÐeé<·ùŠJÎjvEGB™lêÒÃqŸå¬B;ýׄE³“üfŒ—6t6`áS+ ÒZX y Öå ª^.êã¥[<¨º–[ª°nk›@bvw‡Ã!ø†‹ZO¸.¦“Ž#Øå‘ݾæW^åöÀ …ÜHr}Öëwfóóý;Ò•¹ÊÚS8÷éË +Å*füôÂé™Ê|¥Ìõ×ó…ÞJ¡\m=—”Ë{ë=ó¥ê¾zócô½és›àÙó}£'.ŒœhÞÒ‹öÖ±Q÷Þ¾ø¾êȉù¾á“„P´…߀qˆ;ÈÙbÃ0ã¢ZMc”ªAhíwò„D*ä…–PÐRÆP‹È$µŽa"ʉÏ,-¯'˜ë A‹» +ë‘p€.'!ÑhÍZÒå²Çò=¶ù•54kq3u=““„LnŸÜ6»»>žNt%².”šoÍÛÊXpƒsì'|â]dçMŠ$™(Jø$ž]Þ·Äß°c×ã·œ|hËÈîŒdÀÒý4²%[ª_>;Ô³ˆ5¾RàÅ7:ôÛojÌ?gÇK¶yÊÏM<É|#ì÷<øú×¾õÚKïß¾çº*•*É®¾XeÓí³Æ]§ûôÎY tïîÅC Þÿü/˜Øïí«æŠ×Mi§¯ªWÙ–+Ž¶à‡äwš‘Yò+%l*ÙÕèäH)îV‰(mßÚ³¸©Û£ek4…E^¨6w¡¢æü=—@äx´H…ãEÚ(r*B$J¤EN½^9t¬qËJ0Ïoì«a7»#˜¥Ì-׸ãßðÚ:²Õ‰Ú#ÅìJüÞzÛOªá¶Õ•HŠ$¿tÅø®Ùtw”7g·,xúr#ºXæ»B‡É’·î×cÇx_µí¼fÐÔç¤réKÇ,™Ý£ÇÃÕùÒÌ%‰Fjàp¾k 0 ¦h$#úF+½6LMG²™£ð‰½ÅòÈH}Ó¾æK¶Ø´&ó³ +]©í; Çà¥hmšÈ&Za&�¡g–ß=&¥YÊà,ü;slÁT³�ýsÿ:4aQa‰;wH +1;FWÞ2°+=–ø¦Â4¼Bœ™)ŒGŸž^*<}-¡$¹ä‡ß of¹”œiØ»T/Ý9‰`Ð2µÑò¹FQ^D¬D·_»z”o.R,ž^Õˆï+–_ÖŠ]E×X ÁßœéÁ²?ñh*Ñ®ÏËX«ö§õ5{‰ £s«ÚQY3É…¬¼ŽãsÛ³^;^UÑ¡äèPj 2²µ^Bý37VÝYt;H§ëOäê^vi^Ê$çÆ_hÍ7ú’ݨæq×pü09r„ºìj»Ú›K‡{2xÿ|_vO¬{2µ½:|>“Æ©òF¢/»˜ïËív&vôÃl 8Q;ƒ6WŸ¿8YZâ66—óKŸGÍ÷¤ü®Æù0³e”é©Ï‚$QšÎúäo*埿U¦âDTqò–W~Ù§Z#ªpáÔ.ê<‘^Æéðp}íáT[eêÂd¨ÃaVÉ&ÜôUº±ŠO.ìx/¤Qã”í©¿ñnÈ5ùÄ«ê„Ãø»Žœ8{íµg_þÄUGÚ9÷²Cܵ㡣c§Fû¯ÙŸô‰•´fºžÚ/lï‰íôÓ§z*'ž¸îêw_y廯¾ò?®¨zÝþýo<räû÷¿îЉ±S“#§7¹ìñÇFúósƒXö4‰ÕKD\Á÷d|R¶"M5Ðkê`Ð7@4œí!Æ2 c™†è ý¢DTä’ÌZ¾Òê@-hÕÇM +ëL2ëŒ +Ç/@Nä´4-HŒ\ZC®p>=;Ë8?»0;·}ëF,™5Ø×]büOÅ;øo¹8þ×’©år¡#¨]ñ¬ævµBww-¿ø®êªÃØ;™X®;{ÅrìÁ»^ŽbÙ¹ýÁc·E}ΚÊÖ¥¦Ýô_ÜN‘VÎ^º`ÔîNä|–…«7Y"DØZ9qöz”Ñï>uÕWT¢ŒÞtøðxíÁg%“Á�G|šŽ:‚APÅŒª¬ +èl_z‹ ´á¾^KôçåJ¾ìE¯¤@(…œð+ùÍ#³0Ø°Í}"…¡2UÓq j&7óúµ^Zu ±JÖû²Õ´€^A¯¢rʃY£”&ÓÓbø‘X´T"Ò֖ׯÎoq‘ÔV‹Vh‘›þÙ'hµ_ºõË/”œÝ8Öéï«×pÀd™s«‹y¶¬¶˜Å¦ÈÈ1kLÝz7W2)Å”£8’˜,å5ÀÜ‹ÐJceÞô.È×Ð!–JÅ„Ø#>{#Ðà +1HCÙ<ßßêµ�4T(¿Àï Z +¹»÷Dpqe†nðY©™Bùaµ×Jpg 6…ƒ`„Rñ¾ûªhþ ¨§ñ;Τý·ƒ!ê‡hìÃchZ~}‡ÏÖwìÄb_ŽXhÌ/$"Ÿk~šPR‚à„¼ƒð‘>y..€«”«rù,]¼*WköØ.`Á¿j:™Û-ʳ==™4~àìL>;“ÍÌäðlÏH.Ûhds#r<«Œ¾RŽ²(*T¯„â�²Ïå!^,hjhù·Ó{–ƒ»BlÛ&q’>õ׿Jæðž¯c÷T¢|]Šòÿ¹(þ°€Ÿ9üqA~€æsš?lÊùCp–²ü5ñÉ|¶p#9äBkcÓªƒW4ÿ¸zö@e7}ü7`oþLÆLþŽ|F0.û‡ìv·T˜ßx0šKK¬ÆQò5}¿±§^2Ч–¾"¼Žè‰¥aÔëX\6 O˜U/[óné«aµ`ÖÙœg\‡Ǩµ¶›Hß\ @ú7-ÇÀ„V±ÚŸÑq|”¾Û%l^¿ðQBhóIú™¥/#ñ’îŽ&“‰“×äqØ°±!¡Æ§¡ëf }~2Üë/NEzüžP¨Ëûèg꽑j ¯ÏÅ’Át>ŽçÙÓî´ø´/Äßïi”]NJ@û·ý^âaþ ɣܷ‘â¾ ®f?’ó;Ð!ŠŽBÛxØŸî²û-Þ”5ìZ—Ãl +„ì…‡ÃlŽ-5|’¥æÓK_!â$…F-C†ÑvjûyþùetRÌžðTž3&KmÄbs©wÊfrºãŸ1aN¤Ÿ±ñ¿µy¿Åb²^7¯Ñ¤C½ =‹æ:MÎäXßé_Z^®¿´¼\:I>OÏqËãÐ e8D¡5ímp›T˜³»ƒóºïY>Áât].ßcÉLþŒý²“9åzÜ7»„}SÒ‰\(Œ "³šÂ²ysÐiõù=g£ö8Ÿ26«Õ{ÞùB},ìvE}¾@*¿yóu)Ðl¹r§5ìé•žÍÀQA·<JyIåOÓ»½¯£úè»N`Åä0ûÁ!zfè·‰ž¸IEîCŠ‰01diy!Wõu\j¾|ÅëDaT:Ž÷ƒg 踿õ/=õ*%{ù¿,¢Œø‚,üËF¶5#mpè¡[šp¢�\ö9?}‹ËiÁù³Ür_ï‚}ÿÅ MXT½�ÚæŸéûûD9†I�è_Xß/bÍ¿tÎÓ›“éÁ¡„Ããq:¼].:Ð]ÌÖÙ'ö…“_0Åd£Çàzú âå~Hœ§Tž§„β}®R}GÀÙzÞyÚ)¶uçêŸâ‹SïHƒÆÑ€+â´xŒ®”!`Ðc‹^ŽÈxÅb2è»\æbùÿO^L�������Û[öYa_<õ�è����ÖJø����Ö…uüùþñêZ����������xÚc`d``~÷ï+÷ŸŸÿëY^EPÁS�¸À6�xÚu¬–a€Ÿ÷¼Ù®kûþȶmÛ¶!›ó²í†4ç†lÛ®¯³®µíÙ1¥0e�LN1ÎϬ°‡W2‚Šr÷^¨þ’¢ÿ}é W~à±ù¨hZ&ST‰UÍxç¯ìÔœ:T´kˆ—ŸTÅúâÎ×ù·ôКvZã¯ú8Õ+REfQBÞ”ÅÎoûˆœ2ŸÜ2ÅùùŸ>ÄI6B³ÂæVÙ€\RŒ˜ÿt V<Z¨2¦ >C˜tÄ×øž‚óSe%œ›Î6ñÑx!|ìÂ¥'ÿiLLVر*Û µuïZ:g¿ö¼D9ÙŽ™Kqù¦Çü ‡ !‡Ñ_"[Æ!ZFâ#Óµv=ÌF¼2œJfEÄ·¸ˆ×[òI°ö¯£þZ_†ªª{.3›êfŒÖ$ÆÜvÞÚ¸ä.ýÉ¥½PœŸÔ5Ë)ƒJþPÇ¡–ÉCc>QÓÖ „¯jß$Ä\SºPƒËÔ09i Z+7¨ü¿¾9•|f -•|¦4áJÛ˜:Ò‚:æ…æDPWŠ¬T43 RÜf·Æ–©ìŽ÷q³G¥î ýQ¢„KIªKaÊÈwÂ$œÆßLtÞ‹U»%ZïËE“ÿz�5%P©Em©G½ÿ¾ô°×›ËÈQÂÍB¤8‘v8ñvñÙâ©iVãá-õæv¶"ÕøŽË,ÁN>øÛQy«´Vο5®,Sæjþo½¡¯ê5ôßkû_ÿ¤_����)�)�)�³�Á�Í�ë�÷®iÏÛl!+7UaK×^±¾ " @ L È +] +ï‰w…‘¯» 9 ETêoì£)†íû%1™/ÈBP²FYi‡—§·j…‘UåJXc#DüŸƒ¡¬\Ô Þ!²!½""!","J"V"Ì"×#n$^%.%í&Ü'|(_(º)k)y)„)¢)®* +*q*ÿ+ž+¬+Ê,B->..•.ç/:/00´161î2u2×3M3Ó4+45F5™5«5Á5×5í6}6ˆ66ã6õ7.7>7Œ7œ88?8×8ç8÷99,9>9[9€:::Y:i:y:˜:²:Ì:æ:î:ù;;(;?;K;d;{;‹;š;¢;¢;¢</<•=o>>¹?]?o?š?´?Ñ?ç@ @@2@@ÔAAvBC CðD2DóE¯FG—GßH HLHmH~HŠHªHÀIIFIII²IýJJQJsJ‘JÓK����å ��r���*�<�‹���Ï m��xÚuеR@à/îi#ÕMüÚ¤ +MÜÜ:ìºûÀ3SÒ#;‹Cwô7ÜUrõ›÷°Cª¯¹k'Õ×=¶›ê2×®§ú¦§×r©¾åùµŸ©¾}0_Oõcï¯mû¢cKOUYÅ@P“—Ì«( +þjëYLëi«)Úˆ·Ÿ Tâ¾/x1:ú>ÈÊ*«Æ‹¡uÚš²6"gÑš†-EY‰Ç;_’¦††ª ¯¼ŒV0«¨¯¨g¤hSð][+júoM3êžMÈHuü-jXÓS‘Ž'}±bÖ7“'JÎ^Ÿ$qn¾µôU£Šp‚z%RÊ)¥Ô·ývôe"RC&þ–eMùîï>YQ���xÚlÁÌj��Àû~f?dÛ¶mÛ¶íZ¶›²mÛæ2§lÏ«™Ý‰�~ïWÈß¼$Dˆ”Åeu²]g;Ì—U6]d÷V]]rÅU9å’[×\wÃMyå“_uSÈ-·uwÇ;íRØGEULq%ÜuO÷•TJie¼WV=õÖG/ýôµJUÕôWÝ;50È`ÕTKmu<0Ä0à UW=õ5ÐÐŒ4Ú£¬6Ön}ÒDSÍÌÐ\ãL0Ñx-µÒZÑÖ)§-·Br)üã_ÿù_J©¤–&D†¨bóÃO¿$TÞYÓ¤•ØVQÖŠ‘T&kD‹'d*…XítPNñ%°×IB›mqÂIçí³ßqE˜ì¸ØÏKC|‰|öÅ!d”Þ" Ä‘Y\ÓM5ËL³MÒÞCÂ($IBÒ,$)ÌñÜCsUöØ3¢ê5S'öOSmÀ �ãM€’-pïÐ �w·õqoþÏÛ,ÄqYX?¹~jú$ÎÑpáVaîØnÖ¸•ë In'Š¤/1I]?þÑÚ*Ÿ;$Á¬Ì/ ³¶qµkç™ù•Ù(µPÛ¬]` +Q8y&ÒL &Lœ{äf2O“²2�ᚧ���xÚ-LCÂBœgÿ¶mc“¹j“±®tƒlœåeï;Uî3fŽ.Æî` ª!•èñàŽÖÀYZ0|\ÐxYÌ&ÑJþò·ü>GóëƒZö•=c–É2Ú†L4„ùeÓ2‚iíË[íŽÈ»‚ª)¬Q[ía±õù8Ú”{ƒHhníöž=dhù¥KL3*]©‘°5˜›mE½(� \ No newline at end of file diff --git a/core/themes/olivero/fonts/lora/lora-v14-latin-regular.woff2 b/core/themes/olivero/fonts/lora/lora-v14-latin-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e27b0fd7873bd08c1eb1e8fca4822dea00242ec1 --- /dev/null +++ b/core/themes/olivero/fonts/lora/lora-v14-latin-regular.woff2 @@ -0,0 +1,111 @@ +wOF2�����_è�����äˆ��_„�����������������������j݃�`�„l + šm +‚P‚’,ƒL�6$‡ „…(1ïÓ»ŠíÝà©ÿ´ç‰6ø{v v;¤zÏìEöÿRRC“ÂÓP˜Nu´(5<T…2Í5h¬Uð&åKƆ‘ÎÄ6àQ[¸ëåªBERƒxP®øà‰¹áevÃ_av\±ï„Ø,VlÙw‰>,ÓeËŒ¨óöHP¤?óåR×ÿÀ?˜üšwüÁžÝn5ˆg–q¾—4YôˆW&?HG#¯[Û*0v=DU§^øøìþÿwUçÜ#„œ:’C:É•+?„âuóï½H€BȘ$›ŒMÉ&!$!„=EÖPGÅ5pL\£tW«Ukíp¬vÛ~´ã[íÔÚ©âÿ¿šé½/`”ƒ–£7P#8 ¡„…+iœº=ã@ªF¥Nï®°{×æyþ÷ëuŸs'3f™–á"8 å U© +$‡²U_ÿçÃÏùï¹èÍ Ò¾”Â¥4I9隣3ûNÍÎMHts3jní¯ßr`@œAûdN•h]P¶¹.¢;‹à˜0I Ýé®|ôÃçÆ¿/"cÚÃÙÙã3¯®ß°Ž0ÛÌc3Óò¿÷ÄÒ“Š%Þhí�epƒ,‘ˆ¨û¡í›åái^|±“Åò üÎgÐä[QSÔ骗Å><€s½}%ºKû™3$9—‘0›z?þ¦ÿsèXN¼1ðB׉ŸûDäãçïZ;‚P¦^l‰C¬ì)nðýroK®tÕÚÞÁÎæÊ>Œz…DÑ“Œ#°ºØæF‚iEMof»Øÿå4ÿ$Å?ñ"ãŒÆ‰’ÚYÊváVéõ&½Þl‡Ð!¢ñ\tÓäM^êÊL$ÀýLDªN5P¨MEH) ™ìrýûRµ®ÿ¡°=¶5Aòl ©É²7\el +ñ¼Õýñý£4 +A™!Q ¨�Š^ÝhÐ@“ +¤èÄI²'%Ç0"-š&%Òò¤$φ¼³!†Óîq¯!Ýæ¸ÇcŽÇÞ{\è?.Õ·¿\]À°÷ñŒ—ÆÀ€pìß+u“ÙyÓãHÁò1XÓ½Ž_¡b +\ªm"¹S´ðAJÈ‚{Dw{¿ÿ&öîø3…‡a(¥)"! Á‘Ðõ¼îß>t–DHׯXsB¶ÿÓÌ€üS–Â>=¬iûãÏU ³F?·T5y¡tI# wþÛÙ™•Le:™eXÏ×ýŸÔ��‹B&‘Ò‚èéAŒì .¯ "Å ¥jAš4ƒLÓÒ¥¤G?PaWqmŠ?ˆÏ vµÖ‹Õ=m@ + @œB`Ûº1â…Õ]m€8ûspòÏ]ô|°hH¸1&MM›€ø!ºYmÂ5“þL´ +õT@MÖœΠý ?ŒsGËq—öHßî-ßòwþÎOü2àB× ÂVbO<Ò©K·½†ØƽðÖaQ1“¦L›1kÎ’ek~ju‡Ùi$Ÿ“)‹âI4ž@â"iËY¼`R(l<‚„Db–8ÝA¤')‹c‘ H\,ãW…Dº[°\Ì£¡PÊP2Žu°÷"8syKuIÕ弟×[K¨V“+N²s$$VÅÁ},”¯-ÔB·4.Oò=-ˆ‡v¶ÑÕ¸w$OOÞ€ÃEA¨æ|K*üzÖÇN™Zê´«3Gc‚4ä½êËoG“Ι줹9¥»ûÂz’jª« +ùe’ŽžæsLºGödôfM,5J‡á )=$±@:À!€0`IH¤BJ Á€x¥VäZ{¢šËJÌ ”3+ÌpÖÓ˜�]Vénu€ +àâ.Zµû׸5J¨í?Hœ%øÑÐr‹(ú,:9ía€kÞù\›Ž"æ~N2ÛÎéð “ÐGì.[ÑZðVTñ•ï³ßG*¸cÅÑÆDØGŠ(û�’ Â&D„c"Òqᄈt`‘d–ˆ1$"‹h#"Êl1Þ\1Ú¼áHcÖÀ’Ø$l"ÞaC%`…(¢(‰õÄ8×ÅX·| ')ˆ7ˆO9ØG®ƒ|!( 6AMÃê’×Ýj9´¨ÉX>”ø›ŠÚéÄa,’q¿¤x㟂n¶™Ùæ)òó΂…Cº8¡í§±Y#”\&ehC$GKF«ñK °p¶jc‹¿ûÜò`CÖ<ÅM¹Ÿ~÷èµ£ÝÛfÛ]t»³oé5ÿä?CìmÝÎaVø3¡Ó=›?©I:’ų[éË[g21;÷V?x·’ò>Rd4ù(KUÒ¾©.¤%é†_¦¿û3aDg-³{™éI:³9kUÖ—-œŸß“ôƒì‘û¶õ8{Gç½s)0@^²Xt,8\"rT +&tfvBNNi<²(¨„ÔR«×Ä£Å4Ù: 汆 +u’,²NY±k•ØÄKK8Ya‡ˆ•v‰Uöðj &}R}¾ù§¹íŽé Xéâ°4ój8I©»PÇÌògXìy°9'*ÒJ,f)°ì%îGÞb´±ÓL:VkÝ1./z‹AE_#µz˜C;IÞ¿+èRÚp-‡º¡*U²’Z4á˜ãH„c¤˜„ê÷¯cÕH 6¦exÁ®I¯QQ¯!ˈ0©üTÙäE¯žr2ÿÁ‰å@°ÛÒsp†žPÑ7vé+'žq;&a©Ô +ZtT%‚—§N¡ÿžRN¥àÀ~RÃv5ó¢OæzŠPÎ¥¤>°ç°j:¬f´¶_žò”çB’™äO²’l>ÏzÑ#ŸHO8’EŠ)6ןC~J• +ö†‘ûkÛ¨¨‡h„¦õöSØù LÊÅ>”dKô<JC"乕dé›ýI!×ܘ›NV!‡‘@d†É4V#}rŸ;U‘CÉúõ}Ôš¯ãà$;(Å‹†¨òà-ŽVL¨j•ôûë1yÒÒD½¾ìyVŽ]‰4à„Ebå$>ÅTy45vÕÛOuÀÕ9¬Þ5n´6Y‚YÓX +L.bLrÂìaRNíÒ¢ôò®Ž©wî†îň1an èÍ\†‘¶Û”O–¡m¹F Ÿ¶lûÊ"”œ]ú¡8é‡a¦/£JE€‘îx 9),qÆ(lƒ €Ã”S+ªÆ7C#È#µæ1—2L +B r`XýTNñ´Ö¸Í§*»‡Ò‘3¼x f :Œ$pè=–¾™‹ý+=}Èô‰UIr”Cðá8ĈÃö#>Ç…>—*0C%æ"Á9xßKغ8dFÂ:ÉLÕiïP<‚–+PDcY2>/Ž,£õtÏž¼ä£s©µNïé=h÷е_�5H¶D*dT4’Q w(_RôþÆåqß´^-WåõÁXÍë ¿6I 4R¨jæe&w9‘ëç&¥X¦âö°éë“žq}kÒÖªC•žì®OTÈ|iZ¢6dÒË¡ßsº7Qþ«è³¦Ëžëéçé„C¨¹èj‰&fæŠVì)(‚Àb£c:UÖŒGV@�bVvÔ‘0f1e°\FĪ"Õ»¡ Oˆ¸÷.ÅúÖ:{W\ +~©C{ t¯~ÂÄ™xo4^«ò+,‰Lþe³Jâ¤*d…ÒÆ”n�õ{8ÛK º-zÝ‹žsyŒ÷yýýiÅäÂ>€šT'EËéEÊu³ÂÏòV°Ò%‡½dïwî°üJCSiµ6Æ�\_Jgdˆ—ÅZ´l×/·k9LØâü¨]š¢ä/¨NZ 6ªs¤ëž«ŒmIí–5V¢v¥0ÇOœF¶‹(iÖ›û!€a>•Ì|–ýú„>n•~519cõñºMyó2ÍJ’Rf*ëœ&Žó}ÊYßÛÐÀ:cjDtâ›6 ˆý1L»ÊÅ4p°< +À‚2òU”L‰^ŸÎ;ƒÚ¢Råòì¯:¬[[>õãê¹.‹¤Ê‹ +]=%:$î×v¹«¥¹Ð‡I’ò4N&U€Zƒq™io»üp +ù°bÃÀÞ~*ý2Ñ:ƒ²œš×8¹n×Lne‹â—^ËN°~˜»j9rÍ°i&/u¨5Nsn¼¯Z‡'î½ï? l v >JT’}âçtÝO‹a¢ +¨-°æäý$rrúêÑ÷PW,oÇ”£5)Èü3¡-Rl9¦ßÐ/Flj¿èEQ>Q`¸ø�h£Þ\\Ë{ÙòíØÑX"˜[�!ì1þÐûÀó“wqÚú:ƒ©§sNqOL߀`‘lÎmÝÀЈË=²™þxôpˆÀêÀ©2æhd5xnïñuél-¦Õ±úÑ;õg¿1“ØŠ‰Pùªïi%¶VilØ–·-cÓ¬“® ~F�w€°Üùƒ…z\KEÀº©!@n9›C‘‰@.t@À@é"Ï4µlh=iקîÆUÄÒ=tÕ:%t¾ÂЩ½L°B¶yy¿kß$ÉZºËu2õ0î:%âi»µw,1¬‘eI<ß…µ•Z´ikLjzþÿõTɪgßh!ë¡Ì!¡3_Ñ0>ímô5VŠ!=æ£æ†²âäP}’*áÚúmkHg½GG‹&ñíDÇ묰>Ú²cv©Òl›jbkõ’È]ªõæb¾ýC7Àý£°:'Î-ŽÛÂûÒmØW·ÏHZ[ T°X8q"ú§öÕ+œHF#\h•Æ„°ú4¯¼jÉT*tQ#èôM#ÇF'_zV«H";"^tÉJÅ8÷ x“ÏïÒB˜;†÷ÛöÝ1óøf]Èšàø;{¥oíéȽpÃÊØüüVÉ@®ÆtW=€Ø«Ô° ×Uµ9R¢¢z´Ta¸Àu—Ñp½SWZ^“ t0Rík”nÄYiÚèª�ŸÓ9‚ùÄ<ö+žÖoP›ÕÐ!”ê^aª–\âäóÀl×ú‡…‘w†GÌ4–-‚fú>›òä%·Z¾fÂ`Žò¬{²ŒÎvYTÑãY–£êyÍÔàh¸Åì%á‚jy¼™úáuAóŒFÌQÊ_´úª¿& k‡Ù•²Ö¡Æ]�Ú2‚¦ì¼ ÆÛ±ÎJ\^“ÒØ—™—Wÿ’Ý‚¦•iðIù¸íØjlCÛŠáüdÛ³†f7UoZ«Ï�؃:k Çûw¼—-.4}Ò(#_ ëP™"5 tÆtÄ+XkÊ˾Æì/3p�kNl6º"i‹N7ûrÅ* >ÞÜÀ¯®ñPl¦»úø~éý™6˜®„Ç/ރꮯïÿÖÒ™æwÏŸ"Á|«§^˜80G#«#+ªÃ5)våV'ÂGÏ…Ÿ}j/·—ráà+œ”0¥YSxÜ¡‘[K}cüzjXñTÛÆfM÷AÚKƒ"‡nº§x +àY$VÌ‹¬±TíFqG‰5:SàÀŸ·•`6÷Æ€Žê°$w}AÑÒ8 7ú÷‹«z£–4K}y!ùÓ.)¦eÔïë¶×žöeN*ÑxÂed¸O¦u"Í´$—“°¹qÜÕ±õ®$§Õ:ŽŸm ªê,J“]6—©ïÿ«’X“qd/ŠËNë—Msk[θ—ƒÔÐ[;›(ûéô‘ÞíHk6‹xœF!ž~Ù%œœp©eÉL‚E&Æ“7+öq`ô™j¹„³)_ƒQ™‡†UAÃÉ?B<jÔ$¹—quTEa,¿–r<ò¥m¾ÒZ»|ZY^ÄÊÿå'åv`Tìc}A-qGsM4I| ñK¨™jSfóÿ¬àº–~¨6éXÔô -°C™Vªàf¡XþÓبu¦oò”×9ö*DsA? Çý¸«ª+/ZvÐ@*Ù€ŸnRŸÂ³ˆ�ÍÔr"R‚¤Õ£¼€sHp4r+Z¬ þТWÓQ‚òÙÇ"c`Š,!Ée4 Ij? 'ÂãâÅÔÅd±+ƒõ@ì± +`8A‹œq2° öý˜P/ë:uüñ룴 ~¬…ïpoëG0 × 5 +Å,ÕJ0pH0’Ð`ÐÑÁR¼¶lRrr + +JZÈù©¡)¢~ÑE+RGŸ(0"$@{ˆ¿ƒ@f€‡•aìÏÑ?d‰Ý§VáêA*q»«ã#,@<¦aèµE!ÌPñÿHx?Àðú<½ØÜX ,ÙöÚVàC À×Ñ,vÀ°x DùF‡K A¾òÁ™¬/Ñ R0g±q–dÇ [úæ³k#¼l{^Ø‘4ž<áÇܱÀr ‚ã?2�âðÈ49ÃLWÃv,¶ƒ !p™å*·²´ +ð'-0Ó_%=‰*Òÿ®œ.oÖ‰„]àÐ}ûåÿ_€ä‡¤vô�ZòÛ�]!�¸S[B€8’ä›ÖH,HD€º4Fæ aÊóÛ½æ/ý +1 +£Y”DEtˆn¢ç¬Ö¡n'Ýdð ŽEÁd{” +'œš¢É‡¶®¿,è�À,�"øÿ vʯK�¼ÿ2àý+ÚìÒÃ4YüïÜ àC}¼QŸþ+Ó>ù(}_ÊÖÚl½·|èº-‡ðà,wј6·ÚVW]ñ®>‚#N<ÒpÓkX*wpÙ¸úï+%=£t»¬°ÛǶyÈÌÉÅÃ+ ($W¡"ÅJ”*W¯Q“fÓ´êÔ¥[~;ܳÓ5§¬sÆyg½í¾›&Ý2ÛÞwÐmÜõžúÚnXé£f:d©%–Ù$ê*2:V¢„†¸. U²”?VÀ!ÀÃ'’ê!-5 ©V,ì2Ù8¸åðÉæW OD¾,eªU¨T«Êe5:Lצ]¯}Äêì·Ï„cŽZÔ5àâüÁk !?ŒU‘ñÇåŸïë½ã÷þýΘáƒÒ!¾…%ˆudÀ»œï¨?}Vw\>Ç%òÇJjé¿L?Îdê¼'>'žÉ°ñ,††ŒÊ²!æàoûäés¿ŒG³õ¬žÌìð‹zñ.¾·ÿ?O™Ûusûl(‘iÎ¥(;©r5¬‰B¿å`‰ü2ý!¡Æ/…™X]gtŽDû,íH‚3â%Þ¤ˆˆÐ‰k–?{L+/ÌN_æJ?˜Í“‘¸©±‘ïéâ•kÈ€È-ÍAûJMu Î{Þ¢¥!‡xñ˜ èÄñiÎ_ü” /®ƒìæ¼òDŽþY÷Òtsòt qߥCS1o :Rd.ĶŒçÖ@ƒU ++Òƒ†Ú$ L_"m–¤~¹µ›K€›¹’³?8˜RÑر8Üß™‰Þ˜„g£pÇê˜GN’Ä%·‰ÜânKN+æà€´¶ï¨�’tÐnµáð±T£Ì�J$q0/»·Fí¬Þ‰·;lÚÊüIÐÑÐR6ߪÊï Fç|�ŽÄȺ�½ts¬xø1§•.#òw «Azxw¬…ííùÙÐÇ»}wôKÔy'ôwQà N‚^Ú…¤ºnÁPÅ>§€d) ³ÈJâòÉ-ä—0Ùáܼ”>4ÇCTžü—}F›+)9c‘';Ù[²�[dHBâ¡'1^,ÜÃZAß+= Q¦75-%/‘¤þéN×ázòw¥ÛÛðçjwÕöQЫPÈ +\ ]\]¹4ºt4vhâ2ÑÔÕi[A Ÿ•zyw¬‚–ä}rH¶rͨ Výn¸©-"ñ÷Õ3¬qÏccÎŒ!FHR„!G(KäR]‰j{Ù-Èv>È#s4¬¬Ó‚ +Ü:·7ÝP˜”ÁŒ¤miŸö¹ÌEŽrš)r”«l.Ö·¢ÅÅHïY„Ú.5öù{à±×¬mÇÉöÒ$îGÉ®Eüpí¹l—}ÄyßÄ3#Ù[é„öb×ð,!ÉÊÜ + Áu´:E¤3¤ïM~9‘a A§e5ôçHçîÔC[}ˆrý"ž²Ãj‘+ºÜV>®›Ðꊟ’)ð»6R¨ô=mF. ¤ÍÐBkÍšDN¥#2öSrNQÛY|BçBÆ4÷Aº¨ne±µYÊߧ$�y’qÚvB“cR«ýöA4i¢AÞâL$5K“¥@Š<EÄÍEÒ<‹ìÕo`P‘‰ki›nûºö6F“6ˆGP¿ëöB@–Në}¤-:ñ.pÆàSˆ3£ºíªÞ¬HKVº2RLË]¿¿ÁÀ.Y<Ž°7ßÈ>¬Pšö©ûîе¥ŠýêæœòÐí¯úÙ–~‘ŸÔlÝXîӚמ£€ëkš¹BΖ•=‹!¨M-žHž„¯¶the[wþóº˜âc]Îo“ +Æñàö¼l;_+qo>¢mh+@ÔWvRˆ{¡J$4|xULy£Çìnå<Çۻ絾×벉ò„Á7îSN/‹Þü…`$h1Îij÷V]Ì[¾ù½{»îå�NM`*l‘Iq\$¦R !mºÏà�6"ë*×!ä]*tDÑU©C(»f{8¬ÚÛ©Öê&5Zà¦iªÕÚ¦yÇ'ìÞ%x»÷ > ø§>"ø˜§× +’½ùôË–Žîlžðþo²¸\’¯eÒWIϨF6Q¶ÑÙn;¸f?¼Ö!©crzjËqŽq‰qqn¥¤îÉéÊóŒóŠóŽónõMê—üø㗕УÙIðŸæj–Éxó–çw€@Süo$Ÿý%úÀ+ åe�ÚÿH–�þ˜û'€ÀSúòD @o`ýWÀÀHˆî©§Lwô PÉd'’=ZÁ€¨„ý»OªJÏt#Q¨ +q$0Å�‰4…é™%IHt +ùˆ£AmÛ¹ôþ˜ÂŽ’ÑøÀëŸÆ§Æ™¥õ¼a³,›Àfç°<o$Di©•x܇y¦nšÑBuÊbîDöP_ÞKw+û}³/g§þë µG¦™Xzê&rê‡×ÂzëQ»_WºÒÛÞõy™Éá•´Ré-n}ΟIÚïÈ)—;É9—GÓ圛¦YNœSóf{$¹äÜ|¤/<.=ùÜÞXŽûzŸz±çÑÁK öÌtdX}SJ‹K~i;òGæRÎúâ˜ë¢aÑÇFH:ˆj–Üq$Î*�#$ Û´AÏ+ì]FUmŒ•^íP=@ +¨Ê)Ä@1rÓ†”M ´B„1Û:[Y óbÅí!T-ŒØTWB <ÏFQlÛPÕ¦G}¶eý˜>³4µÆÂ-¡€–—üH ¨*Ök£«ËŠŒ{ ^lg(Æ2ü¡‹±,AB‰hå#{ +;ªÉYœK§l=^Ø別4æÝèüŒj÷šÓK¡°¿�¨‘´@b†ÚÇA>qcKˆ¹aGeÍì›ÿ« |•„,ŒsŸÛú¡z‹õk Æ{nȈÃÏq€¡ñ¨õS¨hÙ{ìgÉ—Ÿ!æ—$oêKZ€/e—ôÇ|`�"èºeñóF˜Â8žT.ÆÐ`“ÓXÁÎM¡¼�ìàhÀ¹C¨êC<kL(º0Xú$]-ßRyhHÛ¡€’Ì2;“Å°jÿü¶UãÙQ=£ÄyöÒ¾;|Â_I·Üè+/$˜Ë™fœ\âHv2Ð>ùy·óN1¦éÁ¨|³k÷c‘7 +P§ü¿¥·ÁñmþÎÓÔ§º_ÓzSRoáìú/d˜%e¯ý¯k¦(N³yÕ' š˜ç—êyž¤å†²ï¤91²ÞãSña¸iõÌG‰j»ZP½Óf¬2Ý(UuÚ˜‰©•YæÎPL䘢}!p©fž°¦”ö>‚\jº4å²–”QpÚþ°@¶ÍÑjýfs>ÅÖ‘D¡)Ô¦XsjMÍÀ½1¹wßÕ™¨½ÕöB/–Lgts‘í[<ÑÒkY™aÃoBqaF¾Ü(òïÌ–Ž5ØV:j۔lj‚šAla:Äøz~´5|À’žlöÐ €À2"ÄZp>·T¿ÙäÔKØÝ°Â’¨)оƒsm¹%ÃZS°Å·Wá7Sǹôæ¼½@WMæªÿ`J™Ò>gñÙ |ÐÃú ¨Ÿ©ŠX\ߦ®{£¾à)‡s{€Tg«k9ƒFfɈ°–ôG¾LÃ:t¥ù +ôg È™˜`‚‚±™Y½jà’†˜7$J4®nI4ûˆ6þ™×©sæ¹"r}ƒŠ·‘zÚ͹ÀöˆîÍÓWW²½ X +öªÀmãr ùgõÛCÂps©s^ßÆfÎ9 8jý©Ìgyé)T=Xt>Ñk×òÛèÓDcVtFü¾iKH倨÷$9jßoøö™‘¶×v80}®šÇÍ1ò»’Bð£ïI>QËa ¨€B9šC‰\·÷gÆ…l &—’5ëÚçß5fi9€ÍòhTë>jÍÉ.*½kó_‡¸·ú‹7P9’}§ß®PñŠ°ŸAé˜×V/<òûFØ/Áh°[í¶¾8N|$mSï�¸ZÈ»u6[6V¿¹†w}Ý´ØñrSÍ6ÚâüÃÐfÎéìhn¥”ú4sC›M¬Qfoá>ÖÈû&ƒ Ó\¥x¾Ät¾JÓUå<wÏH0@Cx’Á]ÀÈxY�z‡±6Pý‹°vF©ï*àÙÒÝN¶”Ó&ž$Fæ¦ø*}‚Ò[Owÿ+)èãqŠ¯Ý]}ÕŽg–6_MFôý9×S͸leIÁT'Ó,0Ar5ªi@¿ÓUƒ,L!3RQóP À°¡ëï,)v: Làpà·³E Úa²µ`¡ t6]O# Elã±Ã¯"MN”‹Û»ÚŠŒ¯�º‚åâ/}etbˆ×fäE¶l>R¯ÃH;£-bn~C¡Ã+™vÒ3f‰å^WN›Ô¥ ãž,4ó¨ ÿ•&§aü ƒ±ŠµZܾnx®¼¼ÍhBA8Ä« ‰Ú4;B\²è“HúÊâú™"6ÃçÙ’EÇû1RkÇif©pé=åwƒÛivÃlOiöZ´Q•Ó~Ÿ;~RÕ€®öfÕ0,:Z`Hóáa‹W°Eu6pãƶY4h˜„•ûWö¾âi3»¤Æè|“µ¹Ø.]Y+VKЊ8$A$‚p@0¼³Ü´þôŠ—ð¡Qž‡”¹!#ˆ*óO–×›&Zb¾öC +õXMÕä&Z.< +n8Àè›HRÓ©àaSOæ%MKã{á"!È€×:>—šR$ÂŒ™]ÖHðÜAƒ&³ {ñQK-ÑÚ…¤VÂÔvý’ÔwËkvqävE÷kï:4†)5aÙýTÚ mÈgCΰ!2~„€22¾âîîÛãDesþå|;Q ±X÷ùU_ï›9Ƽœš!cÅäóж*®c)Ò|š=Žä"M?^¿¹ŠN6^Gyáõ$¿Ñ†ñbSУÄç•ŒN4”:.¥ÇSÖ�‹Q/ +õ:U™ð¾u°æ¾b¿žNô§cšûÓW[�ºÞõæ{VôC‘‹2ä¿òŸ.߇ n³QbRÇ ‚ä<¬U»ïDÛr(´wR ¸’h”©@!9Ä¥Yà�ö‡ .Øÿâ×E¼ë’<îÉp?$„ —™›pCzéæÀö~mâíiz‘' emk¬WyŒá‹C|—T‹´K{D3QG¥ƒ¼ëób?k#räjðòe ’£¯êg‚ ¶ÿÊŠ0r,Þdz¥Ô纸”®ç±”² ß´žêýB3ûh*X€ƒ'f$4ÛQ÷!'㢶ù0h)ë¯Ýþs”-¤Iio=Õo©…‰«Cg#ür¢ÒZºŽSyà¸%ÌûõôO²J”ÂÅ2�åppG°B:ÈÅ~Æ÷}UÁßL®ƒ;d;6ì:½ègçöÒEjÞ±þÊÊb}1ÂMÂG‰k±jüÍR§"-ÎNú@š;“"í«Á4mÑEä4^ç—qþ¸ÿ»5£Ó+žiu[û,ðw`^ùT=ø®t¶3c‘¨ÝJÓnfŒ¢H«YAË6ÁôB E×8=B³±/Ÿ’¬åºåÄöÐG(HYí“5öêêTMÚ�Ž¡?ô“ËŠlýß…VÙ˜´vë}ô'ü•MÅxÞµÅDÖ”ûkÊÁza6Bp—Зç#ÒYýœî«[S_Ý|J¤¢tu.¬C¿Xê´ÿ3d–,LªÃ˜&Z_ž]¿Å®¯²ysÖØ9_±ž{ª†cÄ>.ÓóÀjj:ç Å�G[›¨? ³` ¦‰Ûò8¦Èm 0;_HùvT%³WN2‡°gn#”›³il«ÒD¿¤tùv c¤¹åA«çübý 'щÎYïº1‚ÞD—ÌÙ/S(¹Éï +ñU¿X‰u-«ÅBWåˆû¥D ÿ¿N¿@Z&¸G3d!.+,³Ë»Ãæ ‹áÞ=‚²È´”ë£Ä%r _ç +2~UFØ¡ç`ÅôÀfFH˜•ú7æ*Á.¸Ÿh%ÒîŠ>òƒrn+tò“ò—1®Iü×oT/¬É[|Vãoù°òùøã>þþ¿÷‹BÔOyW7ßTP¾1|p ¤ß³·§%næ”#Pm+¿ÍAHÏÃî‹Ò°¨C»Œo¶Rfì4‘‹ÒÈ#ì°;ý÷|Hñ÷,ÅŸâI£„ý%[RwFåC<Ôˆ®ÂvàöE8¨+H^´}PYúÙ{4!=ÿìøÔþzkëk“n·NèAHWA¡¾ápD) ÆÁÓºªCfsQ‹ÜÉûnv�x"–죅õû>Á¹SEeo~…'Gÿì‘FÄÖr¾aâ7•ì¨ ¼¹¥¥½ÔìÒ=æaÊÚš +==Ǫª2ÏÊÁÏ13½o1´ÖšÝRÅúÚ žË<éSpÞWÇŽVn{³b0ª?'׳¢xõ¶Ý;¸_ý¾ƒ;ëôÿ.¼26Ó–-â–ûŒ“§£ØwJ|ê†Ê_ªÓ_ýž·Ÿè•ô›Oö³'³àï«Ç¾»€×™É©�AÉuyOË‚X7}ÊC‡úKé}V**ƒEž8~O+ªGH§bÃÀoŒäom ÞÚÚ®k£mÌÔÏC—ö5{zr+K+cƒyI %ë+BúˆHÊ’oLÛ¨_åÆq6ûèì’{î}i? ºN×#>;ÓïKÈüè©‚Ô¤MËàÕK§äAÃyØO7¿-7Þù”EJ"špú¬³'Oš1õ)–-¤pV²:ÜjÓVýÇhwö¬«ž”Ë¢ÏØ÷¿?ƒ¬Þ\þÛlMûk\•=#ÙWÝ¿cXðXŸ:¯êùmô°Ftþ-3PÈAÝúí~Wöþ¼+‚i1Ñ<hÍ‘úÒwØ+—ÒId,Ù¸Àè=,(†/¤Öð+]†ùÂÆ5lE‰ ^#²`é$»êœ<C=@l7MJ‹öé øMÓƒža·²×Žö0B Ëø+–}çj7ƒ¥)QñÛš³÷–ömiíèÞÞÜW\Ø¿.¶–äägŒ÷ÖíÕše9Aã¹›"aŸ}s®Ä!m4]Ù+uq¶"{ß�‡¯ôd\yèËùòãbÔµ°b,·@×/oˆ-þ¯ÁÝBÅo,ÊÝ\Wë?<ÞÖÜø-³¶ûbT¾¬ %¾éµ¹KÏòŽo ¥m+MõN¤‡¸º¶Ò±|F 85í±\åÝÐXo27¯qÍLº´J+*EÊ^dR]ÄX2=¯šó¦Nóë\áÉ{}™©b“ßÛ7ÉBÊ Õc–™Éü™¹¡Ý¹UPmU ÔW;vhèš#‘Í’~õåÙÁƒF/´¥Å»»,usúÓ× ´åf¿?ú°1YÎ$VÖ9zì!¢c)4·¤�8ó¦7cOô:ZÂWGìá½ÖQ{ËÕ;ÌNL¹tåð?=cå;ü…٥ܯôêKwq—~ÇWP > êc2ZY^FØn’üä´3iú€IÈ–è³e%äR“ú(i ›v•ðÿ¼ƒVCé]~sšwè6kÇ9ü{X4á>êžu/GöÕ©óK+ +#¤O›ø>ͦ‘ëVµ–L²¥Cì—…Œá’P~SÝrhLËÜé9¶âkƒú?XùÆéeÕ„ +7RÓ)}ÌÐ(Iw·mÖS·¤ýóZÞ-ü³?æGH¯³ýÈ¿g§U6a®%ù\Òçì9ädʪ;=ø|q$Á¤Ý':‚ÜnñléèlÖYã‘kôü]3HƳˆ¤Xµ’Ù´{!çT–^g«]¬ªõÁgŠùŒsä£dzóÄ'7“ÏÎyk¬þ»œV‰ývµÁ>ö[2öÌ»›ªT.ž§t|•‡¾ÇÞãöêضââ?βUÒìãlkòêüJÂçQxß #¥WG?èv&È܃w¥0; MÌl”[aŽÓ3ê¾ÆÀÒìG?òC?°Úb½‡'Žü¶/¶dü5â˜1™ìÿüæ6°ÜOŸ!\ ’›ËAÝ€ÚÚð~›ÖT\šê?ËÂüð&_B"Í ³SK˜†H°T‚I–Ú¯³²"<x…ãò\xÄœÉ?ÃYMˆŽŽîÀ¬jSip1ß 2üìöȦH].›HHb~áê•n)åý°L[Ñ:¨XJC¸Ë2†çew¶«+ gÅàõ?¤‹_µV`ñDû£s3Ó-Ü5ǶÿŠÏI¹4‹u¤ŠÝ±Yö€.>ïgȦnžg¨ßéô#=•Í9³ül+£ùÕ}¿|…ïÈ°uÝöᾜl]ûÿì¤Iä²xê/G~`ʳ”¢J‡CܘcRË +oŒy{Ò ïâ«3ôþm¤ÇãcZã}‹lAº¶(úû(·Ã\…Caçµâ€ùÈšUØWÓ3Ë3…¾†¯1¦eyµCu>‡(›iƒãí¹s›ýF'Zm´#žT~t¦ÙÜÿóòáÁñÁÂ_yåŽëw¦g°¤ÑÛmÚð9¾Íš9tgÎèòz¥JmMV% +üšŸ/¯J[Ý]< 7õ”˜µùºYäUÓqô¥~PäB²0©'2£2ÕÉ盈Dçkˆ•pªæ‚Q¸dºG¢ç¯áÚù\ñ°%™Ïà-Ùû½6 6™‹«”Zçî'v€z. ç#&tË»N^àè…UJCœòQ"û‰žE(„g fØsÔîìA†à’!;Ãm®ÔkÓ¯¥HïئMÐÕUü +øaïŽûte™)g*‡Nß’“öE¶æTJy¢‚œi ¼åcxÐ¥Úˆ‰ŸÅ)üçE¬zF¡ HI¨˜\cg·~GWÃÏ×ôÙïw:~$ß>×–ý4:ï<ÿ–t©e„6Í/_Œ£c„B\L$ùðhø“Ø$p½ºëê=B£ó¦”2úÒt%´aŠàMû…pp¤Ð§'=Ú9¹Iû‘î’„…³IŒRÊÆºësÉtÏD7¦Òé.…ÔŽ8œX÷ÓüíŸéÒ“fªÒÉI3ñEE¡¨'=;2ŸôŽ‹¡'K˜ +Pç™æ£ MzjÇ…“ð•@¥ðÄ…ÁÖîsšîäkL<7·K¯{-œù ¾ËjïölÃ]YnW·}}Í=~ûH—×8û‹ë}+²}¾Áb+§ÍíP‡ ÏwHjŒ¼;²– +|ÚücŠF‹âbŽaUðMÈLa[oy|z•¯µß?söºm)Ô7ßÆ·XÓ»½AÓPK–»×Úý¯Òh,hìlu¡^m–ÈçÍknÓÌÕšíÐÿŠµú…‚ID½mÄî¶ö—6º–x®)!kZ®¾´zg2Ò‡AVú5Cú2%J¯5›;|y®Ù=§‹µ7¶û«%;üF{‰–Ÿý¿F´0RíSAœòªÏVL@¼Çš(£>#½+;Ï9Üír»q»7Ùä¼Yu%9#zÄõ†’cŠRg_ ¿b][ef½ÅÔíÏu÷8=Ì2JBÒ¯4°Zþå"3¯øÑcfV^oßè6+¦<æ}°ˆ™J£åéb–eª#ÌøIä‰Ô?}x±ùZssÊüŸC9®£ÞdRVØy©»0•†Šžp<ûJÎfÚ²e™Lkâi’ø(Kd¤ËüLº }Bóü#±Ba°dámñ˪¯u¦Ýoà™R©Ÿœ«ùþE"WEN æÒKSs~ÉÏD‡ +F+ùŽ�eëz¦ÙªAN¢6†ý,f$:qáÓù}©Þ_p +ªÀƒŠ°ý@ò›=ò‚³t¿`¢ôFyØNqršdOs6Ws�¨8.Ö9aS0ô€®,RäùnIJó{~þsšÔ„xE€ +Åâ'„» ”±St–!å§üGoa!Qö“à—[ôÏDãÒƒy®¹¹Â¢È,~‹]ô1ƒ%Kº–ó½(ã»QôÆP%¾½Zt„…-›V,Îœ3˜Z3tš‰©ƒúñrXö÷CÑ-ÆÊ%q¤ÿŒ’éÏ‹œÑnFÉéÇþÒEµ'N\]fðI1—šæäuÖøaÑþ¹…¸môÄ¥D¢A²£ãví¬—¿±9GT|ôwÑmòŸÚÓó/=¢ßîyêDˆ¶2hY¥³Ê¸uò†’ã„rÃöœ‡YB7ÆÉŒ9¾EíºØw žÉÆ8é1§¶mÄÁýjÁ3f-Xè,SHƒ$R >Á[jöä•—ò¿gîQc—2:#þ¦«_¡@¸ôpÉëSg€»g¶ÕöEŸ~¿>žñ}Q”˜#ý —# l›Æíñ/ÿ#1%4ÍrRw•PîpS›D~û"|ò7<Ÿ”ü¯ôvÖW¸è ;—æ%H7Í2QuP@åãsëŽ-Ü5Ó+yåJqÐ'“»‹K½JQŽO"¿/wj3¤yrqšKg‘‡äÁ7ñÝ÷×—êöw·•¶·¤í*/Ñìëš^˜—ê8>g¥ó£Ü÷ÔìQ÷½Â°—Àgp¿ß|e%T¨8yéÔÆÏ…ÅéÎîZð²ªYe7ÙE!P†’Èã¦ÂQ!·•ôThËæ5乌‘êê d(UŸ.f –[{_!zÅ¢Œ'%ùãã÷p0eYyoŽ·¼ +› )¤Ø˜m¶Ml“.þ‚/%“f‘r{™ÜZÔ)Öäæ'W`[ë6gI—Ô¹ì;VÔ³Wµ…²ùöí:^Q«ý°è¿‚øiúÏðÉËø2ŽiéŸa {BŽÐ“Uíyo3-˜8ü”‰0\ঠæå œ÷ã…†LE½ÉcohW;~ß‹o›ØŸ#›|£É.N!—Y«JâI'#u©uÙw=»óåúì +›°Þ`17µdØ©ÖʬÃLŸ<b{Šjw¬Îš» /¥¤„Æï_RX·òƒQ€A~Êš]NY¹åˆdãKÞÀÿð5,›7½}}ù¢pµÙªh5E|m–Êà+ºà—µ™‹GËêå9‹Å®3XÜJm0÷»ße5 ìv5¨ª%æì,Kù»ø\^<ÝšOºßH—Õy?�3ü[a¹MPg°›¦™ÝóÏXÛ6¹ØíôÛ¦}/ÃYëÉ1ÌðÍÉ΢¹¹¿Ãÿ×¢‚BZ2›³¹ßÜœ^þG&Í £ñØo'ãÅ‘¥ª: Gîr©ªýy‚y›JE”ƒŸ(?$ã^à~{î‰d;(ü9¶f?ÁŠQ¿L¡}È¢ Y£x ÁáÏ•ñÕßISÞm†KÅêl»uÅöœK +ö�ãZb2ˆÝðÞ9œ1…Ø?UPï]¾øùÛhÓfH ÐTvV%bGûi䙯ììŠ3ØJTL“DŒM¡°•gîå +æÍ$Ñû‰Ñ¬ÃU¥ñ¶ôÛ*áÉ:,õ ^–7ñ¼pqJ̺òº(bJ +ŸBE¥¤ð(Œñ‡ÎTC$šÖ8SE"U¸º„¿Yµ˜’q=(ˆE½KÜLJyÄEâî_U¾¹)?Ñ×i©[ø¨zV¹vlï»u?øoŸäœ]|Ü}Г½êö]‘\Î’^¾}áWÚ>>^rn5¾çï´—ÎOr’˺“l‡ØhtZSP“iljøY!kYCi-“¤»KäBŸD tt]>žŸˆ³“ˆèãÏ&⮃d +L"?£P&½É¸‰ž´Ë0Ä'¼yßZ…¼çß ç4 Œ¬ ¿Ù]ÁÚÉ{lG»M—¤IÒmÑpü}’—Uä—8iÖ0Éa&—׳M™¶¿áÇV—‰¶£¼äR]ØÑhƒÏ0æ0¸Ús6Ç–c0 e×ù^®d¬û`4·q‹óZS“óFãÎÚVsÙ~ AYêÞ·_«·×ÔÚk^¥KIW_ÂW~~Ã!’öwì„ûv½|÷â½ËÑŸw÷ÓÔƒCAÌßø÷+mú¶,‹¶¯:üe‹ 4²9k˜I[ÉäÖxʯí�UBRþóQ—ν¦Mï¾4ÙGTÖNçwi+Lv¥ÍY›ášuü`³¢µŽŽWsÁB'Ø.r¹ 6ºEÚ õ=ÇÇg'óèîs‘Eùy&ŸK/:oO›ô«µ!/51XA¯ôüùȨú’=±&ÝâR¤°ŠZìµ.dðÕ5—£i¦ºÛð»V%õÕ€¯±É,FùW¥ôÎcÚ”@—ø!ëÏ/ÉwƒÐ>3ˆ{˜—Îü’ªæt9:õ}kšVî·ãµøP²IAŸ·"¨°'8\6ymžV§wñ¾KN,"& +qÄ›uKغôÜt^´uqhƒbEe²1ÓÁdϽq .é‹¡ñ§¥è<…Ì«{=eãß6ìШ62Ó³WVücÍ®÷›AÉ BÍ’¹@ +™µ½ùŒ”ˆ‰"!Ñ“ÌÀ<6zÏöÞ`x²[6QVæ(ã¢$ÄL98qøÈáŸ>u|ñÉc'ß@'d¼�™*>|ü+–ƒa“o¿gØ3°×Š~-¹h¾�¶^Úz.‚½—.ßF.Ì®ÿùîv+•¯£dJšø©È«ŠdK0óÛ,óí”QÈrzKc)G‚í÷£«dMÜ¿‹óAƒª…Lè8ò}5Óòõ7yBo‘.º”Pµkq"©ƒÔ¶-«å+•’âˆÎd©‘4µ²$O§*7«ßz_w²i4bȔիU²R•EZ¯íÍÕ <Ån"E~žÞX+)Q_UUìšg(U«¹Û+BÛªËÂGöw6-õ¯gtªDQÇFR“×ìz¿[,Ow¹²u3›½>óKLßÇ’|Etʯ´BãÆkûˆÛƒ¨¾²ÌÕùÓ"KÚsWÊ¢é"Œ\-Òq×@ª4ÓÅlÕ«ÏQ§ò;ø¡Ð‘®ó2»¸‘4ànÈÏUfó¶ LþªÉàà¡/V1„¢9죢0âI¦J£|ðj¯MÀ.±‰ûkÛ®ê‹åJ™L\®ÏÎ-io3ù•þeáhëA T²ý|xÃXØí‘ lV6ÿ[À=ïÜÕ0غÂ}ãÛ “¸<‘dLD‡]”Ó©™éV!«ví~ŽA1ˆåEs·9©Á<MËý‚Al!M¸èHdÃl¾¤z•L¼0þÍ"‘ÏY‘Éç‡òöeÞhº\b9yeCEÑä‡U6ýö˜rئ<Q_}ª«þÌÉi'§Õikm>}ªezrmeîxyyÞŽuÕU•kªÃ;ÊËCãk+kõmVK›Óbèn÷ùyÒNµj¿pÈeÐ<I^º^ZTj¸¹Âí÷úÚäšKVåñúê“Ý©¯ßu²¥öLûôæS'תÖT¬ ï\_•[•»£¢"¸u=¾ÿ¢›1JÚ“£ Y É¡š”¤ß“r’—F!·—Be^ƒÐè Û=»Æs +§ÿèS¨¤V…œ>/Ài…~÷øRÒqÖKãr<obƒðÓJ)½ËÛõù,ÍPÔIˆ‚ú‚.9ËhJBô;Þ)œSô +tšS(¬Mëeo‡ ¸»ñxˆ»‡†ž‹Œ½ ëÒ¦Æls‰øn©XìöˆÄr—ð¬•HÄžÈXÆú×L‘0S,Éeg”Ó”÷W6¢Ï §d#ºåöc « ÅJrQŠDb²h3^¡ã¹Ï)q…ÜÇX‚m¨¿,7æ‡d^^ŸYš‹¾ù‘C§e?óÓäN½†H§u}Ï>M¦~Æâý—¢ˆMÄì9aY†#Æ4›‘Eë“_Œ§ÖÄMU~ÏÓ€¯³œZ<Gš® uš’#ï{ðü~¦öÌ,¬#-É“cÏœ'¹Ú›“¤·›©4+©‚I›fHν$`ªÚ~m66òÁ xvýÒñqxÍΣèâš»TÊ}"é +•r8¯¤Ê~ØEŠ?&–,Î=M‘žÇ¢¬~ãQ¹xoªðþŠ=Í·Œ¤°zIÄÙ)ŒudËÚÌ‘}1Äž«wÞ}H'ãsþ›Gn>uëç•t3à�€‰à3p€À +;ŒÀ<°;ÿ-Ø&‚œ>ßròèÁ´!îjCÛ{÷< +}‘Æ`bÓ8<Óã 5Éx¨oÓ4‹ñ8(㼜(+%-³ü<qR@p6?®\FgˆA.:ȵ}ºB.~r.*º©J´Si»t‘J<u£lú®0Wô÷Ch°Ÿ�OÔìÆ}`€;t ¦‡ëÿ`ˆÚ<ê!{Q¶{©X\Ôé1¸ +ozëoãIȵD¦êœ¨Å‹’žM+f 'fÓê¬)„ÏøûRºí^öx9†v®ålbËm½bYŽ½k9b,f«¶”±€¶W4¶b»÷ h«÷$Ú¥S\½÷°ØªŸµ`Aö-û´(d÷B÷Y8ºÕa¼'h6�-RˆœÝèÑ(8�aöÒ�ÚÀZ¯óǃõ¤ùôÉÁ +[f ýýqhbÊ‘N›:ë°# +œÔº+é {£Òi;õêC%àí¤#&8~úÙÇL�1æ—ºnÒ>.ãÐ'gš'Ç5¼„ñçÚ"èô¶aµ™‘MDÞÕ2Üû�]ø¤ëëÄ?˜ßüOãêΦYÍ‚G‘;ù(Ðéô±<ýG¼�ñ_Ào„mo÷.§ù!÷þ…–“/ÿë½ðåJqî]Uó]TbõëÆéÇÞÆEý%pïr˜’`Â=âÜ»Üó 7õ½ +qºó40Ü*ÉTþ<äN.üÑÔÐÏFªŒ–¿üj:!`¥uý<€?"*èžñsÜäÏ1ž²Èû„€•aÉ€dd Ó +NƒÈåŸëd€,ýØ7�®ƒž©¤ª~¼ãXÇÙ"±¾ì»tÊœú:Y$lxsªß’§JaÝÓ\-’ØŽWž‘±“ÔÖÏáE`ݵ#tíM-¬é¯|eLí™]’êÉ3©²• +ðÈz‡<¬Ç1^—¾ûH½S$™òóÒ,dy¦êð †ÿ£eûï¹@2%Jê*Qå•×Siiy{ ÇÝ=q7Wäé§÷ùç3Tœlº‚Kù„<H:]Wª‡ÅµõëBEÇù"ÖÂMO"z¡²šD¯ÇÿÓOPáif€ºõ`ü@ù³Þýÿðv³ÎÝ…ú +öÅó'¡©qCÃô{ÝÎîN·»å¨ôšŽÈ~fwûÓÄLÖD2#ÔE/½»Û¯ôýa’�Öùb¯úkØ?q‹ÂÎù•(ƒvbÛÓç\BRлëç«+ûumÿÆáÊöieF�ß¿ ö}´mw¡õ í8ZÓHÝ´5X#QÌÖ rìEßV×RŠÝˆÛ:ÌÏÁ;zu®·W›iìÛ¦®J£p½”=5b÷Còt½ ´� '…Ç‘=]7#á9‰ˆa^Ñ +À×ÌK`¶> +†mÀ´ÐGµ«ÂûW-ä|A‰ù,ÇX G£Œ÷ŽU¼(çY¹-7C+óÌÎ1SH½º/¢ÕQôÁcÇDN«¶d¦›7!µxY0ó±p_Vø€U€ tFˆQ&ænÁý3?ô3`ŽY!ÙÓº/N<Ð.¿hêØÜmœm›® !Pe<ŸW¯¸µgÈf’Z’Тαê+:æBJ¢ˆ¿ö7 ynMÒ +7^ƒ‡†-ƆÆM¥Ei*=•ãëÁê-¡(PzM{³èÀNÈh“ùê@-ÿ¾„yÌ0YÚC´$ÖAãVž#‚á:ªŒVr9'=`f sB¹{5²µnƒoQg˜¯ªYŸ_ÔgË®a& Š[Ù÷)ÙºâQr`�}[ ÓV/R(-~ ㄃u¸ ™ˆY{ ÄΚ?G¡›’žðñè»òÑ»5_¶ëúuøxS8H¿éúR@ŠJÇ{•Ü÷¯íjë‚]@anéúëèsZX£‹\¥PôR¯M9þYçF¸çF¹yÙVÀ+|’…ëµqhmÙ9µL&ÑA3´Öl`“Ò]ž2�¬S�n¥æžºÁeaÓÜéU"u3 ZaÃЗõSFÊyÑN³IUm½§µÃR8žèeÌí1áÄ(w½hµ-¯ÚõÀ°ú®®´’EÀE…ýJ4)à~ànˆóf0ƒ@Bv¨œ +ŠfA‘n+ª]̯ž‡½¬ÿ÷zR÷Ç7ÃMéòY.›§–2×<YàK4p1‘’Eôœê Hÿê‘GJXièž·Ñ”jI“Q¤ù Ý9»è_„¢<Ëx¤çAq@å!ͦ~Uã+5´ÎÚ�8º®ÖSÕa2�ß6·×–Ú3˜†�aÅ<‚jç +UŽy¨ëLê^År3ðšöé4ºmÇ=Ú1ÎEÖb£Â# Pº9 Ú£d=UÅ]z#[ÃVÔ†…Ø@7,¶>G:"Š7¯m|èPvï};²aëÌÌ7«~Í�uC¶÷N‡ýµ¥jòƒtì.‘©Å ¼s(L§ +B¬X–^¤—›¾ƒRà�éTïÚ{-Ü܆©&’,£Y{üyaÀÆ÷–t˜5õW¬KHìOm eNÌYY+Ä8‘h`¶ 8mç ;qˆs18Ê~¶L;46LŸsx¸f(ÝÏ xsºŒCâb÷°®»ŒÀ×g«*K#/TŠP9=%ÂÏÏ?àÓâ!DôÀ‡b”@1ADÉnD|dvÕ]+›º1ÇuODñ‚èÓª‰ÍÙø'"ê*¼EUÛ0dXNÑ<&‹…x˜j¾;IUw>È·û¯öõýÒÈÒ~ÉÎðmôÜVÛxOÿ±‡A;;ýˆKeôà HÅbF¨P§ŒïéÀN×ï +]_ÝÍXJìl’-²,;‚²ín§5Ù@ש±1K¼g¹“¼“&LÈŠòyš„Zê\ô ³èWêÄÈ°<%x²ªI©ÅD!Ö ‰"tÜçUYiAØI©ózÀ™âi°àê5Sõ€´X´cµ¨YC¢åŒ÷œa§„ÛœÆy‚ZOÂÙ‘Ï2_”K«%<Ò™WF#HÂW[Üd à·"t¤z’à.#‘eŽ$¯š"\cæ¸Ì@ˆ@FÄ$ÝŽ»lY0¹ý~µ:ÞØGµlðh>·{ƒe%Ôí|£Ö.ÚÔU+ +{šTá¸Ún€ (5Ÿ«-ÀÃ1¤`×gy¹Í8>Ž÷7Õ0ÿï]ó +«›Ö‘JIì1¬áʱÉ\6N®@G=0ƒÓ|"H0ˆ‰ð.%Ï)€šx?áñBr°œÂÑ6çôl2Ò:õ7~X®eædI¥&-Jc"«·{Š¼è…U0MÏš—ÍF€n€œàx×EO¯Ë?än%&š©C¤k-ò2¤>ª£³§yPÔ4ÞÁÑ¥F‚"Ó|³)Xظ/4¿ÜÏá—˜1ðË›óc½âzàÅõÕÿ°ÿžÔÝå;·ïÃÃH}r†º…Dqƒ.JnȇâuøåàNôñåéÑÑ“·\�ð3àñç‡æó×ѱ9@Òµ ¾žëIÔÃ�ßòMî±îyúýwÍç½p´ìePuýpbâådøJÒ‰9¼~7ýÏŸ2€Ò2·Šoñz¬IÏŒJÝ}UYg³%¬ù¿á"[kMëXvPt Ù²œÿ¬IT’˜¥^—3�s•Žèù´x! ÚÑ 0жLazÀ¥=ª~~'$‡€&ê®+²”ú ýû”E3ó¢5QøÔc)T*rqÎ-À0äŒäJöŒÛ, ½É7#Æ.v-Ã5ÄPp†>C1ÑÀÃ|"U,ΣEI°Ø—Sß‘¹«Ï(è¤üé1L?¥~–M$0ÓÅj¡ºtN'¾ùªk¢olP·¼n»§ƒ£ó `ú¹k–‘D˜‡»ÇÝV&¤~È7±ÆÆXCw™1€XLÑÂì¸%x¸ßÞË¿»!ìSÍ´)Uà׃ñ-™E3FÔ@¦Gίø‰ÔŒ0öLx}™NÔÊÑšü#GôjjŽÙNšTC·3†'|{jˆ´˜C/<KŸUÔ…aºd˜§:_’+ŒRœ»NÌw¹¢<~é(3KÑ[ô¦Ê+MÞ5ËÒ…I¯ÎPBfj¦ATMÁÅýË‘ÖØ“º7¢ì™x2Î0”ãØ©Í™yÞvUXi[aC <t/ Ì„äB‰)Ÿl¯<j0Y(½Z^ýß,k¾"˜—«¶4d†©Ïöå-€ý«èån€Måôrèð³OïÏŸÏp£ä,1–o]2fÚ‡t¿ŠxѤ¢kC3è¬{El8,brÿ#r‚¨Ì«usÌ&ö´îŽûÞâˆðÜeeÐAñÁ¤[ëdDt”¦±e¡*®à›©EUŠ„è™âÂSœ»f 0H¸U%ÄànÈ|¡bÔňÓ&æŽRGÉxsSÇ ˜9Ò^µdaª)NËçd:jG,óäŽUOû= +�'5öïï8pÛ‚º‹?Õ(âðÉ]§dA_”¼¹®ßÕ˜=6?(‡]eT/«IöÀÜÛ¨µe²u]ŒSÄsµ5ä82]1Gë¼1['ÀùnÀKÕ6§=�<YÝ€¢ ºü‚ÌÌrIoD70j¼eÍë¯?ß¼þïû~ûåùµûWŸ½#oáö¼‡®Y-’H0¿îŒûb/a{SƒðplDC¼J òÎ,Â5¨@ ++—ðÑ)bÔV2 Õ2ó]ò +#µ‡¯Ž†‡5iÙ6µµb xdÌÛF†lÒØL»ËY\põñü–4Pkè©ícÍf¦j*²g˜5m³jœAöÎS„èÑø‘b�šç“8¿X G÷dWw5O+ŒFܵÇãÛ¤N+‡$!6™¡<ëö²ü–8Ú¸2) +Q\ÿì–„zQ‰ÜsÓ¼}°ã¨D°¯BjªC¡)¢Hù±1âýªÃs¤>l�<gLtA×t7ÃÄmb´N€ÚF…°'ÀX‚:¥öðÎ>•áÛ3µ›ŽûªÇ¾ˆðšG.DùÔ8Jù*‰LÐc·îcy<ÈJ¿÷ÇZ + Ì{¤B¶œ»¤øý¤Œ!ßÎ h*eB§Pg¦k5àî`Vÿ72öMC_ÌáíAìPƒ»öÈ× tU1t)QI.(9ÆÇ™yr.”»a{ÿ!'xæJ–˜íÊÔÄA¢mV>3MSN/‚§í`ñ'¼†a¤ÏF)ª¨¶ô Z +�øž,Ëj ÂCl'SÙže–,9|ÆNŠ" ®dBìòÚ«ß|ýz{³´°^[Z3 ;—Tš¾\?Vzæ®3”Dod65±ìÅ wEƒ”ÉŽ‚µ¤¥U+}ÐmEÏ;ŠV3´4Â^ˆÃHÐ%<îïéÕš…¢”öjàÔÅÞ{p“&^÷éé©Ãý=ï™'¼¸ÈËÜVóÊŽ-ÚUÄÍ’”lêΚLMÆ–ZrTBƒÉ’ù+CIBÈzbf™,:À,b–6\árÛKI°ÝÓZvÒl#ʦí…íxÖ—ÏœÆyç7þ7»C‡~ý¦ðröWš1a¤ª|&®cWºe¶ÉøÜš«\š Oéš–œÍCuºZ»ý<˜ö;Oj´ ìPýÂ(㓯hÉÚ²9¶‰ ‰ŠQàcÄH[…"ó̸œÃ¸'îh6;ãu){Ù™µÃ~^I¥|‹OÀ3ÒK±Ìa"ÄvrùðÞx¥–ô¥Ÿ~í +º{uÓ-MѼ*È’œ›á gŒÀHB¶z&šE²¤5h[ÎG¤O5hDN—¤LSFp˜ÙÍIæ—“\@¹ËNǵ~Ñs|õTðS¨�xwMæšAÍêƒ泟Q1®;tå;uŸp—iÍŠ°ò$ÜSÑUÇôkɘÚ[ô„Ù|AHHtÒ»UjpGâ:¿&Ér¤6êF]wÔÔ÷ES×Gøx :Vç<‹qÏb±«¯™Òu¿ƒigóë”Jeð–Qô¥ý¬¡Øj"±#à1! ‰éÕEƒ!^Ϋ>y|½Ý½�ˆä\÷ÅÂ)Á®ã�»�¥\2n‘Uk«'G·ä¬fá…Ô‡ÛÌ=Ý©ËŽÑD`ºØYÝïßÙuÿŽ‚§ë3d(´&âU"… ¯ñ&£ÒÿµhHÕÂa³K¬²µIý¤„$£V:kV7¢ÕtH šÓ§$íLÄÀŸ³"PF%LÓÞÍhÙ¶¥ÆUÇÚù·46cŒ…#ùÌ<>YæĽîîX�„Dwz›m=ÍLæa7£žÕ‡!7ù4-d`ʘ-›ãƒQÍ£n¡ðéqd·“ŸçÔT_±ôðÜÔ‚¦”¦8l¨¬—¥()Û#Ðû&H†¤ná£;¦ó4xõf{Tž™®a†»3ðíJAæWÍÜÖÛÍOe“ï£V”¢6PܹeÊ“H&:K…-EJÜûK¢¸ÀVIuƒmjßãs—±ö^qìtc±Ïüqu¨?ûrãÝõ·£ëp3ùÕ°L¢ð®!9Á«¦)À@¾&êL¶�ï®Ç²Ë<MuÃØAéVı”›"zTŸÂž¬›Æ&*ãÓfèä˜4HÏd*šm§%ØÆL{–0IƒkÞc$ÃèkÌ•âç¯h›™Q/õŽššºm¡{�ž–Úda¬§}-‹e+uìëlbå5Ïef7®‡Ìlo5@5|ûËžåå<õ87=½%&?*MØ™óÖ\Yqóo°ìMÃÒ¹\h¥´þ ÿFÉHŒø,Õ¶mÈ +Ë\X=n#…u +*|ôoØyK-×Ü=À½sß.'v*Ôìo@ÓÌØ"îU+ðXÄÊÅÌð$«](j^Ü6]›BM.vAe“]P‡ÚÇÑ£º7ð„•è ÂÆ÷„JW&zwÌù./æy^"Ú“ÐÓ€T#ÍÔ\-V±³ÅõN'Ò»HtÞ7 +˜‡@TŠ£v†nq“[Sl'ŒF Ø¡’JÄ2cèA0ms4€ÎF•XÖê4VסP,BÞÎOC·Kš9†·n‹Ì0žŸ8ó¸$îÙs ¦u÷”&ʇDT¬SKI„†=rçW»(`²ªŽXÚ¢Ðn2”ìþÿ;²M½•i…Îo-(Ë'6Ðë傺’^ÅÌ¡†ÉêÑëÒ»ïB-KzÍb8±pÞ,+È4AVë¡©HŠ$³ÆœO¢“=ˆ‘Vl6¬„x —T%"%®6«éeüKö_00mÒ XÛ(xíÁè<Þ°cy±7O%Ñb¹!Èk3¬d„áú%Ûà„Ú¦»´oÓ«0ºNŠNëûÙ>7‘Ç,@ÉÙ¡¥Š T_—$A\ù9É/á%µˆFú9ýšb/›xD""È×Hùp“?ì‰ëGhn×WÎTZéß»of“ÙJÎY,D·¢=iÞ^\ûbÛ9Å9±V ròŠþ`¼¸Þ,¥aÝ ®E-µ«AØ0œb)W€ø†È˹QNæ[(ø@ÂÎ?ðrËuô¬e?1ò9Ùó_~û’{Dp@¹rÉ]ßâÊA?Z®@ˆmøÂý_°œTBlÕxñÁÀŵ¹þèÞßGMcÕø•ã¨ÆFƒp¤ˆæY¾´Çª)åìSgÝîmWˆ—?¶}êñ]ǽŒÙ[ ‘òk„ÀŸûs}§íÝq§A*0¸DÛl¡W8†‹‘]¼rÄ"³®Ï¿³»ã–Ëã# ðÏü¹o¯5\t·D¨róÐmÊE'è‰iþn?ùz\£«û™Ñ_:²úœ$ÖÅÄ„Œ,§}0§WËy–&ñÿZ– B ú¬Ý¦ËeWÒøÁ ³E,‰òi¦*êWCuÁvµy>B|5M_SщG©‹¼î¶œ`7ìî¦ÇÛkÒ .MÙÊ$s÷)}ù8k@N&ƒ¬˜–À[: +ãûê߽ƀPy}ju|4Qöî +x¦Þ³D +œÍàZ㊣]²ðœ29T4å¡4ßžZÅ׬wÒwNáûÝMQ7p/”4>¼˜£Ö^IrÀ\ +œ~¿]pV!ì àïbAä3ûo»y°Ófc{©pç.Òä¹ø)!â¼òqór¸~¬!ŽøýÑaß$q=¼uLžÊ¨›Ñ<Ï3ò½¼ÇtÍ–!ê_+²pE;‡¯x×.Éd•ßTvBè¼;¦õµg $ËÃWcÏÞ·Ç.{†JW&¶”æ½ð½½°¹T¼é7×óªëNÌY%pž‡e)UtÉFÐÌ<Ûâ‡þÕƒô+ž‰ät”뉪:žÕà¾'_pÑûž¤vliõš)–7‰BVZ„šsO¼Z §�ip8Å|âȧŸ9lÞšÔ¶ßzóÀžNX\!ãg©|0,;ã¾åT…N{[\3hé4‚aób�IéU:LÔ¨Ö•5Z–L— €]Vì¼âœÚsúÄw¼3šr›1œ›©Kô•ýÌ, 5º÷Féºe_."€ãÎÀÕu5€¤N;ó5/ô†Ïß~…/wÚ@hÍÌR4¸™ã•¿�îþ›ÉT1öÈ.¹·ì×”éGT6¼»ÎÑÁȽ½ý¿Ø÷,ÅÐXfvxä@±â’™%ìAZ±Jsæçç8wÜãÚ_Àëýè©9€NÂÕCŠ$Ø*ûV„D”æºÒ²u-Ÿ¬”1ñŸÞÂœâcBs9hzoÈßdŸGEåTï܈’ëÕ*$W&ðŸ^÷«’[N¹ØŒžÒ–ÿ]µµëÔ?ð®VBç7JÌsÑ€!‚Ìè÷-:>šô£BP€þ Ìà›¸Ô�ry)»ðüð9¹Ï8s]u"OA+°ÆÆÉ%Ô¸aqxF ÅEH¸Ĉë(>¡ŒÓCg+§Zq•A±0«ºŽ>+(Sw¨Û®@Éæðb£’[g}¬*×·ÆV zYÔëžÃ‰eÞ¯ŽlÆ<‚ ¹n¶ù:*+Vb™Æš$ŒGF/=(ýôœ¶zï êCuùÐ>Ï ˆ8Ÿ%ÆYtÌÈoUÙháã deK4üôLª™®E5-}6À0Þ¸V‚ž–ÏF,×+Æøùs‚çß¿úõ‡ïȇ>¸“§¦ íìI&¿û‘É;j¡|ô´ÖѱQOפZ7îA•4}Þ¦>áÍÎŽÀ^çz"ª¼öj¢¬YU;† ç³=!2-ëþ™àþû×Û3Ù¡‰€eû˜ù7€‰‚`È•\Ÿ^Æ¿$ÿÝ +KÄh¼™”¡ÇÛJÛkzGí?¿Xp袉[òK0ƒ)¶@¼…A§û `G¦£ã’@QE»ÈÑH¸`‰×|úhßÖZ–æ´î–¤æöž¤½ýÍ©ÓõƒÛ•»4ú +�5Èü,2C”Ѩ›V›§÷B˜Âh[êÈ`z|BÙ1ÇIzAJ "=>ÜmÆ¡ïZ(~2Ø5¥u|$ïŽàÐ׫ý{;åBÃÙì)WW-QèÕÏ0_¬çgÍœ8wëÚbâÞ)r +¡>ÑPβXªåÈwNª. +}¾ÅÀŒ‡|‘PÀ›åq§šºï}‘¹›–q‰àIgŒ9¬QÃ(ÚÐ/ BéûýV²‘„EÂ>p ÅÒz¬C5µ«½©½žî¨*Q +WC€üÉ&œuS“Óõð±`6#7b¯:…o´š÷+ŽõÁ¿OxŸ×fÍ´\·—sµ-×ZßK¸9õº‚®ð&*s ù·¶}ð=^H”„ZŒa”†ÒßI¥Í~~¤Ìk¶b~hÞºÜX$Löìª÷²©‹ï'‹‚¹SÏŠ¦s„¸˜Šñ�l=Eµ2ì7þ. ØUPZv'öXöàVTJò€hÕá¤v((ê”8càÌh ã ùàÆT<à!é8’˜3¦^„þ!µi‰Åª¼“C<ŒÕþÔ¼-¢H ‘GÕZT"Ÿ*ÀBÚñ¡X\’T[rGÖ:¤ü™¦0d¡…"¼`†ßü«®[wÔÈ««²j´ÆaËmª«^Yn€²†ý¢pë0ÐCl…AaüF¤4ïÕx׫óoþ¾ÀÓ]¾¿?Ýÿ=ó·½lÿÿ)y’”�ÈÁ� àzI×,·ðÄ‘€,?º>k*�´�øõØÇœãÔD’mè{žü¦þxÒOH<Z:à½ëH±è„De¤7ê›uÐŽ³Œu¤ýãÇ5’‘sÙ„^G[ÁCD¥èykë1u6rƒ9-µlÚŽo‰êa˜îŽÝ>¿j Ç30g«›è¶DÔ_€¸i2#1ü †ZÜ’*¼[4þ.B½/§–ªúx¨c¸³•ð݇ˋÈ3º_©æC¯ LÇ!Î1¼ÜFÓ¨™‡”;&C£üzt{m¹ñ ¿U%rÜv¨‚štÙEÑéÒ +¡Tä•!-ƒØvES;†Ü„\éµ£H +²Ì‘‘.t#ʃÈS ÈúÙ ¡k4ÂGò/GVQ½_I¯Øk°x=—9,°ýÉš/aç>êK°¸“Iî´Î~15 Jb³–`Cl†ÁkL^ì 4Ê8Â_[¬}F`&å9œ«+W}9T“G0}<Q¥œ¿^“È(ïW»Ã-´^†–þø"à6„·Bt‰Æ·-E'³8µb«çñkB£Þ ¡ê¼¼€]©c:Òцt&%3k¥ù¿ ç"CÙßdYNÄXÀÿ9üw†Nàß�ÿV*°299ŠòÔ~ÅYÈÈ:\ÀgÁ¥ +LÌl À“uÓA€�J @³2€oM…2÷O§Ãpþ8Aøt$J§£$'Ðîš/{MfàЮà .Í5éÁ¢¢ ¤ÄѤ‹_».ÕXBº´kQ¯6.iÓ»xÓtsaúR=:t3I“¦Qó¼T¯rµÚM—¦–®¾^µVù@G8¢UÆÁGmj3¹½ˆK?ÎÊYÂêu«×¥O½:,níÚ¦l@µéœÃßÎ!ßpšÚ¨j«ï¢"§Ìvd:‡ba®›²°ˆ¤!_¬túìy3ƒ +¢-*¹§»Õæ:¼Cnò)ÝJž6´Qš 7b°åÓŒ§PIèÿ;‘çCï«qX#VâKUGàGBõ>ð‘ëDÄ$¤n¸é–Û78{jC<º;îjtß*GMPû™†ºwtûD“O™¤3{*ƒ“²7ºE›é¶sb¸ÇY:¶ÒÚÉ‹ÈãŸQ·öë•Cã9 lÐL³âk·Ãcòü""_E +6Û#€¾—§ÌOÎ)wÉe[KDdúâÞ¿*hA(QªŒ·ýá…?ÅÉô®èðÞ„´ZŽP°ì‰¢B«±N8.>ÑpÐEïxÏI§œvÆÕ`€½á‚¨T˜o]bÀùÕoÎbacSmwb‰Æ…±Ð¨%[jžJÙ§B 5)A%ŠÈ2ßøÜr_úÚÅ}äûýQ½mÍ +…ÝØÜ*—z³J¡×…˜Bµ1¨ãG[¶ˆ'ns&C”5÷Ï·ª”Úõ&-úÓ( ÛT‹%UþÓkÂ2e±ùRj…ª¶ˆëins¯Ò»¢¯²;@6?჻=F L&×ì¯CÔ•«°œŸq uX]â–H9²4œÍEú\’ÑÒ»Š¹r×GÔ[0„ðM°Vb/;�ç×Þ)šP?Û¡:W‘sÎœ š…èÎ;±{‡u¡ó³¤YëCSû/ز¯%ŸÿV—ç5�� \ No newline at end of file diff --git a/core/themes/olivero/fonts/metropolis/Metropolis-Bold.woff b/core/themes/olivero/fonts/metropolis/Metropolis-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..b9eb251367738716c9b27902edb20d7524639b08 --- /dev/null +++ b/core/themes/olivero/fonts/metropolis/Metropolis-Bold.woff @@ -0,0 +1,75 @@ +wOFFOTTO��F(�����_������������������������CFF �� ��8:��D€j„ÓGDEF��A@���z���¢ ö †GPOS��A¼��]�� R¥þ¶JGSUB��F��� +��� +���OS/2��h���N���`i«Tcmap��À��0��À)”head��$���2���6µ¨½hhea��H��� ���$å‘hmtx��X��í��âÖ…/Úmaxp��������9P�name��¸����;Ùûpost��ð������ ÿˆ���P�9��xc`d`�áÏÏÇóÛ|e`f~Á�W^M‡Ñÿ5ÿÝe™Ç| ¨Ž™ $ +�áŽ��xÓŒQàsÿ©mû)/kÛönXÛ¶mUX[am»qmÛÖô¼Yû%ùrþ™ëú‚.ò5QÁyɲöB~"YkW g Öié9ìĪֈ'Ò_Óƒœú=f!mQƒûH2Ä""Ï�4Ózq•Jà +{y*Ôáú˹r\ËfÖM@ãB¦¡MžÏˆ)ñýÑ (9‡z²ŠYBâÐÎÚværDŠ¦B–Ã*ãáfänÊ‚©D™Åk5 Íd¬yú"\ÕAEéé¢Û¤Ó A˜ƒª‹È<=ÐL[Çû}K0¦òh˜<c«Z…ÈáF~CÓ‚¤ï-E³\\'¤\]QSKB½¢Äµ¥C À^÷唓pSkPKzÁÆ5›É|îw Ì2.Ò2ܨݸo›ºªVÕࣶ!Uµƒ¿² Psaú œ"dZ÷¢µ” +¼ß€Øc_H¦þϧ-™Ô$‹š2iƒá&!\Ç‘É0‘MuD[2‹¾Èy|5_�ê€_ÌÆÌÍ`R`|kŽÿc¿þA–ÂÝø–;!Ôà…¨¼: NÃC‹ƒ¥ÂiX´áp‘-h!ÇxôR/àèv5ê8]¤¤œ¼GÕ‰mÒyâ©'†‹ãÛ@ätË߉���xc`d``–þoÌÀÀrä¿æÿD–y@Àh�€ì~xc`f +eÚÃÀÊÀÁÔÅÁÀÀà ¡ãDÍ€€ƒØ@¨w¸ƒƒ‚’³ôcfi†³ +“ArL¬Lë”�Âl w��x,Ƶa‚a�†Á瓸»”¸{IE‰3%mV`�&ømY€²Gô½ê€[sŠá_tÃ!aÝâ‰éŽGRºçŒ†¾C¾Ë}Ÿ¦ú'Ìõ#ÙèÇDùÄaüP7gºáÚ´t˾ꎜéžWè;|˜µ¾Ë«-ëûdlO?àÑŽõ#r6ÐéÚíw!ä™Ü0á=Ê»@ÜÛ¿ø_z÷_7Å01B#ˆgt¤Ü2N¯£Â·ï1uUS›ò$í¼Õ—e#S]/×ÆVÞ•ê´µ«ÜÖøC·]·Tžç“ÛãÙÙäDò>•8½+jo\)ûÀŵäù^jV®ÜE †Ã‰]<.Ü«Y¶UOõ»ƒAïËÎwf\ÝÈyYÈi±6¹œ„õ§BuÕ8Ëv{³+jål$žhc‚~\Æ•l“Öï“Ùûy˜Â¡Bƒhžøµ‘£…>Õ’TèÓÉ㩯9Z¦<³%NQ0WÇøm“ë0©5Zäyz&¸Å1f8£ú)qð–ù‰Ê½#¹bÒéòé„Ö&QZÕt¬’÷–Pò™ÀbÉs•Î[¢MÕã×G>½j¾ã|EîP§û:GI¿¤ÔšlA}AÙ Çõ7ªÉgcd|vŸvvi_û¶«J}Ù·ŒImHW±|ód_Ï´ðŸÎÌ~êï;Í‹xÝ”s`åxEÏý½ÚvÓŒmÛ¶m۶׶ƶm»íØo±¬ýÿžXŸo�—³a"� ¸sí¥»€/w�Îñ?Q8×¹ËME)2pO’áGÅqUžÜâŸó_ò_ó ßòßóW¸/[–’¸ôˆ� %›4¤'9ÈInòS€¢”§"•¨F-êҌ洡-xÂE¡Ì<Tº1Ac/ñ2¯ñ:ïó!3™)Ìd1KYÆ*Ö³‰Ýìá ‡8Â#eâ±Ò�žøBE(AºÓ›žô¢?ýÊh&2–q¼É;¼ÅÛÌ`s™Í²™mla+€"\VFÖ€²*àO~F±ü•,à7øyÉ›k€~”¥‹ä!—üä¯�*H¡(Z>ò�.(Ä`ˆ%Œd"3Y)Fq $õ¨OCÞPNT>eSnPåU~eÇõ�hJi<‰##™ÎLæ0ŸÅ¬` ëåpÅ+Ié”MyTHEUR•UCÍÔAÝ4Ò2»Í9WFk‚µÖÚhÝ°½ì;ÖN´ÓÚíÜvQ{AÚ°'O�›ÜLåWÛNO6+@Q²”VY芨„ʨºj«¥ºªç3Û»ÌÉg¶G[k¬ ÖuÛØávŒàØÎeùÕ6@&ÑŒñªó<nãì]ü÷M÷e÷÷~pvw»à‹hÊ`Eð+ +…hŠiÖiƒ6i‡viöé¤NëªÀXÆ“Ùä5ùMASØ”ægLÑÿ‰nn<Ÿyeä’rp/ø9Zò'„¢ˆ!–¬?ObE(éLcYJ(24tf²í¨À:zÓžô§ýÀP&2ÚÑÝ;¼éèn83˜Ë,f³9JdÛØì¨ï0KHÁ›>¸è} b0Á!œD0’D&Çx,^ š1¤åÒñ*Ùx—ì¼GÞ ‘‡OÈ˧äã3 +2•ÂL§Ó(Í|J1gZ¤2Ë©ÊJª°‚ꬦ&k©Áê°‘Úl 1;hÊ.±&ì¤%ûhO2èÌQºrœ.SNeÿYƒùUPyiÍZ°—Vì'ž $ñ"IU°‚¡…9ÿ€P¥{ +‡üxc`f�ƒÿ"X��%üœ�x\Tx#[ýqïÚ¶í½H²¶½;LÓùí$Ó>Û¶mÛ¶mû}xöé‹ù^›äžŸçÜ (Dì¶ØÉz©t*îf&ÏNÅ£¹‰;»ÂÎSqçi´³—ÚÓ¿_ÝIí©Ûóð uÕî=¨ó']u›ßýÉAeOô€4B[è½a ‡±0ò¡Â°VÀzØ +uàÃp<œ +Âåp-Ü÷Ã3ð2¼ ïÃ×ð#üÃnD삽q É8Ë0‚q9nDk1…>ŽÇâÉx&^ŒWáxÞâ‹ø¾Ÿá7øþ…;q?u ¾4„FÑ*¢ + +ÓZN[È¡8m§:ŽN¡sé +ºŽn¡ûèaz–^§Ïèúör[îÆx8ã©\Ä•æy¼”×ò6>‰/œUí9õά„e{©ä¬T,•têB–ígmåRaóš«ZÙˆàH4•µlÛIfý¤;=2»$b†#fØ$Cseï\;•HX¦{¾Ì 2óÍÀ"a[è\$<KÌ«T—ªKkýdÌòüDÜò³KͪҵB&VzWJ~•äWÚNÔ熒î´éEy«Íäêà¶ÕFÑZ™Zí¹ÉØZÛõl?QwYó¬zgmÔu<'ãfÖ·VÖKeƒLmh¹¥%X†Æ2›mé±EOÔ¼Š³Ž`çΖ:fØ :ŽÉÞXà–®is[Ú¦ååÇ…ª.Ð’¤ä“ª© )³Ñ“^Oz½@oFò™&C³R7¶æûÁ5¾Yã7 k4´AFZÍkóšm=´µr¨T“ÃZmbų–$‰‚Z'%”iAF…Àf Œ,ÒdÝxT¦r÷É›6-ßyæ(”#oŽ‰ŠÌQñ½Tãíó󊬜'ɨãE&J¥õÜXmvئqö¦ñÃòr «>tX¨Ös3ÃVº‰t&§¬õwj˜üN½J€ÐºÂxÃ<X5P¨‡‹ägæF¸ ·à{ø þAíp$NÁ0.Ãõ˜@Â3ð*¼ïÃÏñ7ÜMyTLa:šN¥³èºŠn¡;èz”ž¢çèúŽþeäv܃ðPËÓ¸˜«8Äóx™üH¤¹žOã³ù¾›åçøuþ€äßyPZuPÝU_5DPSU‘*WQu˜ºNÝ¢îTÏ©Õê=õ¹úAý¬þPÿªÝj¿&ÝV÷Ð}ô`=RÑùºRÏÒsõb½ZoÐÕz»®×‡ë£õ¥úZ}ÓA©º‰¬“Mæ=x÷lÊ2l’ó2õ·.Å‚»;iqßþ[\×·¬î^·Å½Þâ.+¸»Üé±w,™™ûÝÏ®–¤åh»µ“Ú?ÚMí¡öL{Ã>`Xeæb’ÕeÑ,†µdmYGÖ•õdCX€cÓÙö%û‘ýÊþd+Ù–Ì2ض‡d¬”`gÙEö»Îî²Çì³Ø;îàÀ+rƒ»¸—GñZ<š7çíx7ÞŸã±|,ŸÌ§ó>›Ïç‹0ñðFI‘Œ‰}Tƒ¨Õ&c„ÄÚ&9ZJç¡@¤6òúÈAõ©Ácr ÷LAÒ¡lx˜„?¤YCô&àØ*™Û“22&%ÅÅMš8zôö‰™&XWB$t“ßaZ´âˆßý õ:¢{¯Ø%^ÜO!ô7§ +—¡ãXÞ¶ÝÛ½°XzkK*âÕ%¼,&¼îZGƒÆøå>dQÿé}<NJ.k»URò›¶6f;°œ†ù&ŽØßÇÓyÜðè…æ™…Zú/KW¬ó�ö£&؆ÄH í¯«×F~Æ„ËLšÃ¬Þ•tØõ„ÓÀf®aUÔ«í ¨d³#[_~‹àqöÔ›QõJŸ¢µþz³Tt}ê?çùÖÚ-²_Ò‡“•çm³áueâoU³†ÿÜK¯U™|¯ÝŒ›ìÜÙÆZ +,ÿ0‚�}¥Oè“ZO—úʲyçã—/—»x¡´cÓ¦ý-L0f‹–"Nþ F[‘—¿nÇB6Vìsgg$=1mp¡÷ÂK }t*9<T=,štr=`ľz2õÈ~³µ Tk™NjŽ_h]ž œíùÞq’Û{¨JT$…Sø£¬r¼hÛ¾l³7ïØcd=Voï®Åî¿:å–cßE— }$~›rrr¶ÌÊøbA² èKD7F¢ƒÑmÃò;%¾-kkÐw´¹¹ÎQr@¬~½Ï ¡fê²%èÒ¨žlžˆúÜD¡ï!Ëæ5PGè3—£±%Ÿv“Aí{Ú´©ƒf<8@¼î®æ^¹p¸û'`VóÔçi<bÖ@¬HË.Å¿´g¯{(»?sZJiN¥×EU7hT¯ƒ¤7hÐzÁ“ú70äÞ5¬�JuY0Ün鸡¹€…³¿Hˆ* l^3 FŒx¡¤€ñ|J?j΀_XÕgÀ0¹Hè;a©üŸÐM�w_ü‹¬’Vt6qü(&çN–e¾º¯êXcG˜¾–ñ¢¼óE|ÖÜÁǷŽnr¤³·a¤ emg�ÖH˜öÙ†g£90”‚)´‰Sô3WßK¥ÕkØÁ#ºîTlÁ&ªœ~°;6gð€À¨¡ôCŸŠÜŠAÁç Cñ“ÔŸ `4úÈzRÿé'éœ"8L?® *ËîÞ´g—ê¨F–ˆµ? œØã]<1aü¤©å]¨âT€‘ìgª û²«·q,¥kèg”e¹p-î×HýßNÇ5<N>6Æ‘Ô‡“#^Ùé@¡ä×À*±–ÔŒQ_Š×¬jù¦F¢Î‹Žaeꯡú2³5˜"(’9’Í”ztl¤Pôc(v ÇjLÃU5ó%zêüGÀS¶ó3дƒí˜’wù; U)E3`¡¸&!QÞð›j£ìpIVjHýà7¡ŸX/õô#Â#Mغ¡XÆOäœG<Š@|I0èá·=$`<z°?z`†´AÚö¥kÖAÛv3Æ´Ó'RŠóݳ‘|x•2àý²&ö ÷±*´¬•ë$”. ^뛀¿^]rý×¾˜Q)ýF><ÿ}a¥°-·Šì0zò¤8³mb<8Q„å¼Ä¡¬ÎRVÌë.ÆãS=ð_ +hß¼ZµÍŸ™`íÇ èz}†\82ãÄ9©n¥c¯ÉC'™ QcµßHŒÅu¾ø4]‚ÑD6¦ÓÒïȶ=&õ˜p3îf%ÈÆšÀ°êÝóøÁùa%MÓLÝ*LJc˜€hé\{SØJÎ ø\mß›•³¬e3Àˆ0rRÚÁÃÛRwì‘€>¼W,€•ä&Cg¡Òk1CíMÛ¯ßäq#M ZðCÜN8}`ß™3µõ*Œ‡„Fˆ\ ¤í8FÁgð#k~gÕ%€-ÕZc‡)ÔG_j„>ŽHñS¦ÄC FÂa‘*•×KÚØÆëÄΉŠý„’‰è‚<q|¬jï¬Ô_À¢E3¾˜áÖËnÂjŠÁ0JØR–à§×ª3l +¨šÏ—¸N9z™ˆn+FµGµÉX*¡RVÇ”˜ŒQ=¼”§ÀeyÕfN4'¬“^°í¶Jí—-`ŸUÝb‡³ +`m2à=Að`€��@QðýU²ÝŠÙ¶m[£u–Š²bÍF1ÅÙ²#“J²ÇLC)¥±pP†#'e•ã¬¼ +*bŦ’ÊØqpáÊM†—¸UW“¼j«¥|<yñ森z¤ù’ÁO›�Aõ5ÐFü4!ü§°…P�� +žs³mD¶{Ù¶mÛXåm6_6®mÛÙÞ…ùŠñ¬çiC AâE/xÉ+´¥—½êu¯Ñž„ú?aÞ £7 ÷=ˆð6‘DíïC,èI/ïùoy½9ïÒ‡x‘@¢}B’O}æsúÒÏ@ƒøþ$™RI3ØÊ@Ãd˜b0CŒ4ÊhÒJ™d‘mŒ±&‡#ãÃaœñ&0ÒDrMâ(£L6…Ñä‘O…¦šfºŒa¬™f™c6ãO‘¹›Çó)±ÀB‹,¶Ä—–úÂW¾ö µ¨MêRú4 !hL:³œ•4¡ë`*e©AK6P†¹4¥&ݘÈd:Ñ…JTfK¨Î|Ö²€…Ìc Ý©è[ßùÞ~D?1r~f:3©Ê9.pœæ´ S(ÏzZQL¢«_ØÄ6ö²‹Íì`;ÙÍVö°“-~õ›íkÜ!$Jùõ‡ x�"��:·Öíù6ÛeÛ5ȶmÛ¶m»FÙ¶¯ló=‹XÆ*nÕ³º[»6Hò‚– 3è +†`˜–Mà<x +¾C#X6…£àd¸‚¯áGø)”•E5P34mA{Ñ)t=Ç—Á]ð�</Çûð5|'àÏD‘T$)JŽ“š…V¢#éz…>¢ŸYÈÒ²¬Æf° ì»Î±·\ð˜gã…y_>“ïçù9þ–(.ʉZ¢™"&ˆb¹Ø)NŠ‹â¶x%~ɲ¨¬&§Ê3Š©vj´š¤æªê–únw³WÛídû½ýK#mt]NW×õd½J?Õ¿LN/g¡sʹàÜv’]ËUn·Ž;Á]ìnpº'Ý[î7/«×ÇâóVzǽWÞGï¯ý<~a¿¢ßÀè*݃ÉÁÁà\p/øfó…Eªá¸ð^ø1Ê5ŠZE]¢aÑòhct;JŽSÇ•âq÷xH<+Þï_Æã¿Æ5ÙLASÜÔ4ÍM3ÂLÿϨw€Eut²Á»‹£®º÷¿g/«À‚b=6T0J±+"(Òì…"°Äü¢4¶ˆbE°Ñl4{ÇŠ4E"öB[“s7³wf5ß{_)Ì̹§Ì{úì—_|ùüËßš8tXîPèðcÇ©ŽUú¦úéú +ý§d§7m.´¹×F¡zÚ•úÐHºŠ5x¼ Y2‘ÛÈnòPy¼<S¾ììàÜÅÙßy¹óIç[ÎÏœÍÆæFƒÑÓØ×füÖ¸ÃxÌxÒXd<e<k¼`¼l¼Ö¶WÛŠv½ÚhwµÝ»vf—..£]¢]¾w9îrÑå×¾®·t·knL‚I6¹šú›†šBM¦¦¦5¦4Ó!ÓeSéµéSëÌÂïf—dïÃÿ¯eg\Ú›³/;?;+'/'Ç;ªúêììœìì[¥“9ObåK \=àï>R¬_äíXÖ7ûv¾¶æ“$ïÛ1¬ïšÛ1RlT¶úýHÄð6ác¿l ô L¬o8ÞÖd3ÄÖ„ì¯ß—Ä.Œ¹¤yϼ>ƒ4à+™BÞ«³GI±34Þ!Âo\†º¼DðÎVk$Ê]{‚CÙ + KÝÈ$òøY1QrÌW¼hnÃx�&„47_û†BÆ'œgଂã¸nO^6¬vã,¼ÌKìþÌä)’™l# +ÝȯÌëùŸ3‰JyûÊÖ¼#‘œ!rZÈl„õjÙ¯4 ¡HsíÏRl/ý³Ô¥œA§QßèÁÙÝÏ¡ÛÌ1ls¥øn™sçPØÖëF”¾åt hÎ.¢:e¸‹EïTΞ# ¶‹‘—LÕbb6¨Å"F”Ì>D#&²§¬Z‚P-°j¶p-è ØAÐé^SØ +Xè ~¬¶‡†<z¶\ÿ¾g%ki`Ô`b‡$Äë¹xlFØ”ˆ£eÖ›åKH ?^==qbxt ¬½ŠÙsò z•@¶?ÝÒè:ˆž˜J‹O7ÜN °± ‚ŠéÅx¥k‰\ +‰Õ¶J{ÐJ¼ÂJÌÚ2OºP^8Úƒl;R¿ñiAéMÇMDûªª‹hµýlêKÒ°m8éÛØJâ ÿågål>ÎÃ/º'˜&ŠÁ¼t…>‡§Ö¯ø:˜Ð;à¬ÃÄ#óIÌþ‚Äöº±sxDõ=ˆZkÅà©Iñ+ +O“ ¤³t)‹çŠ´ä墺 Â.p õûïå¬o>½L”ÿñ¯ÿšM@üúO.Pð}eËiÎKfÃx§±Ö »¸2Ü<KPÞ¥Šâ`ÿÊ{͹’ø—55Oà![ÕƒÆýààˆìÿ/#w„¾Gö<4ÚçÉç ü>žjŸï¤ˆ©a ?÷Œñï¼ø¹ÃõšX +úíó+$‘M`¼>žî·xû‘ç(!%ìK¸Já6˜l•ý¼ÂÛÇnÃ>fBQ&||›åƒÉ<D£Í$åöËH&©÷§LntüZšì#å©4~"]ÚØêz›‰n#À}z%=ÖžˆõÌ·aõ¿OÊÁ¹>A ¸$ñƒ’I~™É[£ +‘ЈTÈn¶ye}×ð€ó/#X>q ,·ÑNóæÞ0d+Z‘–}a-�TÏÑ“%ß¾ƒ¬Lcî–qß)!“'.Š3xt|‹ yî¤-Œ U`ZLµ…'U`\L!»1RšN•’(# +¥½äóâñzÀ¢ðu9U€œ’ »î·qÿ5ð«rIúv~Ò¼OÌtø«OË�IÌßK¦—’wHºù€ÈUì5Œ +ÊÜY•fp”À¾ÔTål¹²5ZˆŽ ¯©Ò?ULÊ 5ÄX Zq,ƒf ‹¶8°\1“Z[JU¯ésRmïCþC>~ŠÚFG AÐl±Â~N˜;Ú‡VA_Ó·`|®X_·”ÞÏA8ì¯\î•D™h^<‡XZ5,æ4±mÙHb)üåO‡7ºI4-Ó*ßN¤×ÛðõEpF Ë_IbÍ +ÚcÃF+ Ã9®±…u¾È¼de^.œâÜSd°”Yðjxi$Ðu'eÚJèYÓºo‰h#¦›{*µÒ‹³W‹3£Â…œQþ»½I—üž¥ßÈÝÚ +€²óN +1—n%ÜušIe1ýUäã€1ÛÇVHÐìío ÉËYžtØÀ²Ø=a~þ’Â=Ä°ùRTÌ–ôY2dÁ=aÔö)!zÖÜÕٴÑô +Es©¬Ìƒ¸‹wÊ,óâÑD|‡µuoÃwF¢H#)7¨¬Túw¢Õ +ŸiØÖë„1Ö’ &Èʳ³„M·ô–˜ÆãéòögÐÈ¥–^Xâ~GÊxE½ ‚@öůÌCf×¹k“`,¸i6í4CÚÀp‚/~¢V|ñ)ûâŽß¾`®Hcñ—`ÒT™8!r°¬åçè¯\=?Ã"óðFêFëîg—ÄÄò‘÷ž ¿$ˆE'®dÜÖ[Txýi䊨¤™rïÊAÝòâgLOžæ¤Ý÷1Sû¡G%=醥®öl¢WÀôU\¸OUÔŸ Xeý—\�cõ ¢,„UÒ7Ëz‹O,Åà ÿJîIqó§›]{Ò‹\ƒJ¬ÅX0²±MOWL³¡¥k¼òZë΃´«Î±Ny S¥ÏÝ:Ã`*¾¤âãrÿÓ?¬X8ƇA¬ƒö›Ÿ?–zíâ=wˆ +RÑâRíÁ=“ª”ƒx”x…Vð^LoÞ!:H÷ Õ¢¢ì3©å,Æ°ãê¹Ã=ˆ¨¤cK)Ž(ÚdGà€?]ÖèêAWS̾¥cÕ|¾æ~É+©Õt Üï¨ýœLiŠÚß±±ŸÃ(«ö÷jtáTŸ"“ðµßƒ¾Ç�ñ{¼Ù'73Ê^A¿TªEÏû5e_3;g–'}›¸pÙ¶aë¦M2ø¬‡Ö ‚^Ñk´È3Nzs‡ÓH«5¯\In6q%¿FLl•räÆ&XÙ%3#5|n©6XmDû.$‹(Kü©¥9:.DùzÙý÷>[¥ÙDÊ6àÉqÐ(kæ£Ø§Ê°öÄÒ³aµd%KžO˜¦Q…‹Kd§¹·ÙŸ¤f}Xëq¬†õì-[Ï~áy ô…8èÍâ¢fà-îB¦ý ‚ÃýiwÜ rlïk€¿5žðµU¼òâQIaõ¿1E²Rbì¨mTá<›<§§ìƒ¬#à;±óÈ/Q{r�]¢YròŽ!þy2aÇ‘S–pJÉô£‹‰FS'ûѱôܳx*žUÂÍN?û2ÒŒ¥¯‡ÁùPR>™¯Ñ æñ+©'Å’7†ˆ§lܨx:…ÙŽÆhRÊZ‚‹œ±!‰NnâJÿí‹¢€§V33(ó×x¡JT}I¼O}…Îèr)‘ÈâÙ3Ä�×5+èVjè€ëGc‰A,§‹÷b$±û°¨3ç‰z‘C¶¢VÄâ–΂óÊI<“Id\ñÆ¢WÓ¨xnÐj6w¸tÐZ‚¾ŸBì¡X»Jñ¤ ¤˜›HbQJ2ÅEWzÕS‹€ND,´aÍ=½]Ç"»8›µbK¡(ä%pãÝҿ܉5…¦º•±æ¶¹d ïìI“§¢öw˜€nKÜÚ˜žú×ÏË\8)9S9£Îi ru§âvË—ì¦4*z¡7iº¯A[BoRØmÅÓÙ627¸»Š8œ®Š"×(”'¡8Œ ¢¡ÎásÏ\l ÁòéF4ÌG˜5ùü +ZªÝ0ûÜS+yæø‘©A//°æ•›®evDGk¸‰§•±æ�‰mvÁ/çUMP$^6<éH&C+H¢*BÄm(Jé©0éBFLM×i ;âÓãÒ±;=jÿâ}‹3;~3'wÀÅ秜œœ9Þ±(bR–ŸsèäÆÚ±Ž 0|Ý¡ ´@=—F½e°‘M–µÒ€1Ü?ñþOg÷;f ¬åݶüûOnã÷ÍUÆ*R;*ÎñºD5m¿‡Êbá3êKÄ9ψ˜kéÂwzxj7´,¬ö]9Ì.f')@-æžãY0ŽyjÄ\/ðdöøŽ³½ÀM)¿†öÊ2µ#9O¡š:㨅Ñi!F¥r½c^%uéÂóh}œÂxu·D9“Ï $4³cÈFú†'ÒWHD gJWZf¡ÈYN¢?r.çž^¦Ê,´‡>–Žïñü4¢Wa^& íˆ!M½feꊻÈÖï·lÜ(KËÛ“±ßŽÅÀ“£Ha\ÙÍ:ðlz¹¹ÉZaYïLØÁ=ñJ; O¡©ê 8£J('¥œ½Y»w¯Z¾ÅûBÈš²3Ü©ËpÿNr(oÈ[Ú3RXÛôíFúˆbŠä]mñ¡7ßì&âÃ38Þ¡ÑI<BëSVs'!¾`ö’øÈgˆóèŽçÈÕ ¼—xŒçÀ$>N +¥N:zèð±üYG¢äö§gfì›zØaôèy“&ëGœVhߧ@óaâzSœï&8;ÃgwèÔ=w)v\U×Á ¦âIþSOý‚g…ÎaÍç^ûU7Ñ&ÐWÐMwº1OpCGò¨òD*ÈÍ+<9uJnT‘,Ö{Yž,§GÉ ûeø÷Ie††9Ëi}p‚ܸGfO Ë"ùš;bl/O·ÈJzØDÑ ³<ä¤ÏPhÕ0Ž#aD‘ʃ4ú¾¡órZF°Ì)o�^F¡?ømÐI*–‡Mª”4æfIV'¯f,J˜n-‹´Ìš+• ÿ_{ïÖ°QëÓ°’xL>Óq駘”F“^ BT¥÷ÈRªí…)Ë‚kÝk²MGYJE‹{îG,ºCøÿ1úļ¦7a´ÑUºNµ*Íå§èv¸"°ŸýWJA§[óÌzÓÃ.òVùï÷<Tâ¥~lfn¬N3 ‚'ø5ǶÜà–¦ö¸ …¬Ýñ{±9? +œa48‹¡æ¯ëé€á‘Áså+3Fæ u>~æÄù²8»¯Ä]Huñı«çS¸¹xòØ•8{¤C¡iïGÌÆ =„]ÉŒ&‡¨2-ŒžšMncdzHÐWµâ¦ùÇäT|˜Žah(ÑNå¹-#ëZNˆÁ‡µCQG§Xªüš»þ‡„ÙWŠ¹°‰{þ“èøs»R°ñDì;é¸@Vs T$·¥8̢˷¥ñá„W:N ×æs�·{Ý}»’Æ€\I ÆD1?²Ô[én/@Ô†iÖ¹‹R1†²¡ IV*,(¸*¬ Ò×ZB˜íx-»>Ð}ºùႲO.•=ŒX,˜#ì›°}l ñ90¼x’ìÛ_ø«ƒŒÂü‚3KÎ;Í X”͹z +«öó•ø%ìÞ=«—ï40?%,Ù·2ë Ú1w).~ÖE2øA¤·iî=¿§5hqcW(Jÿ_eERÊç_K][ª¨pƒ-Ã)k -u¹ØN˜i^˜Kz‰5ÉpqœWnŸ”ž½@§ºûy—΂ÎÜ‹ybp3GP,Vz~+ ¤â ¥œ<J7¬'D÷9ÄeS±¦MÙÜ`ÍvôèEÐÍM˜Á0l'Üö?¡Ú~ +† Œ#F+tð5ÊXî«ŠL„¥òYcöÖðr©opé3äHQ‹»‰ïÇÖí9BÄ|ˆTúü~^(š0ºŒu²®ïÒäL€qk¸‰\· +X§Í(b.¤Gí:Bº¢jÕp&ø¨Õ\"q–èT"Vù"î3¢Í'°5¹7ÅÁDW7,îMOó‚à4àé?øüÞ˜÷ÓñxZÝ)0¾¬ž†ò· ¥O×ò†¯ˆh9^>¯|å§B [ÿ›-w¯×ëµáÿ¶´¾wÝM0Aàçž–r“WÕ êsÇs.\:;yJDÔhC³+T‹¯}ê^ÈS˜®2^,׃©cr[·>¼,d[–8D÷?ïxÿ‘ªèjb…cáÒHÁSŠ†áëÏV1Màñ7ÞgóøË&ZžH«Iô/BE2kâ „‡¡¢j[È “¶çؘ•¶{§£'†ö9PµÌÀ{`ÚPªtPÒ†SÇ„Ñ?ƒ†ÓɼYŽfWB xÅ!„ûÖ«`º’zY]e„ Áç‹÷½‹Ö$n—DÿBbœiÌã$¼1gv¬«€—ëÉX2^œ3 ë"œ²|!µ§b¢?¿—Õh'£+碔yÔ{xʳS4Æ d9až™–(Oyfz3ÓuÜ•«Å‡žèrü5bI&ïÎL¶)|s+0M滳Áì®(x£ÓâßX¿•NYG&n¦Û”ÍöआyJšÀ<Õ¬ ûÉð›À:ªµû ŒµïIöEƒ!ª¸aŽÔ+Ik”Úi>e[&Ö¯!ò3ÔÚM=N¡ÜDÙ3ËCÉJÙtÙ0çÝ6ÓíJ¶rÊžÃ.ðƒõüZ¯squSƒ?ÛÈ‚Ù:©A€.ÐH»›"Üדà8 ÷àØØΓ¤Ü�¿Ï:4ê9Ä*\‡Â' ðø† VŠ3hvc3O’AT'”ñ¶'ìGÓÏS€ÌÖàqÈjÅL'¾ø2bVB1ÎgŽ!l‰å!çñ^I6·ò|ž®Ä…¡K¦Aè`‚ew}ÎHr'1ûd0yE8^†¢RB`¡›>HWÒo>}˜6°Ä„\R6úJbz +ÿõJŠ×<ŠÓ¯>É’ÄeO2žZeü‡ >+ÇÚ³f^»Ü1·àúQ€úÁÕC#Þ1¡t/˜“ÅK–;ìgXß7ÂK–ƒ¤�u½•¸{¼ä%Ën^²àÊZ²à +&o,IB 2š3w‡Ó¯p;W¬bwTú#ýÖÈÄ�†ï“LqÑ•ŠY)àí,á©"ù;áô+zö")‚pç?“%ðƒÿ€ ¦CÑùá¿"3±6p?ôM:û׃Òׯëovf“†wê$kÙªtb©‚Ñš°7IÔl*3\mM«íl½Jñ¸A +í•àÈ +ÕÐú�ÍŸ¯xÉø’¹1Ûî“z3üÜE¸|ælΧK§b‚'Ííã/³ØxA;…ÐZ£ssÐ)®èÙ(xŠõpq™Ý?>…f¯|ÎJ—Å÷ö^¸\«UûZÖ™iûŒõ 6<é*œ*>{ä–SYÉŒ Cç’û˜®;ÞõëNÌ«Ÿ8%z ÿÁs“Ý=ß+?O„VNÚUØŽr†V*…`kp7áü +ZuQúòßTX†¦1µ�ÏÕl,´â-¬]Û¥ÑF. ¡%|Žª!ÛÉÖMöU=¸sÛL;jÊ¢1òzð -“ÔË-šwÓ„ù…éçœîž8iò�¿oŽœ/wo'¿ù,4NÚäd|ý(hŽíUоÇÆÓJ ä?bÁÔ0축V¿pº|">ú¤\M„¢Q>{8¡ ·fY,yÅ\`2´á ¡MÛ:&Êì±4 ²äñ2ùôîâ×î\Šð=y<vÔÆó¦R‰²ÉÔöðµ)UØZ61G¨×hgòºÏì ?´ÒåA{æÀ[{`ÂÑCün¡2u€Öкv̵¾GdñÍÝC§ÏÔè0í]F™žµòc-úŸžP6Û þÞoÖ¨€¾‚VCÀÓ ¾Qz6³>øÐy}IQîíÛÅÑ!ãƒfŒùYI“ÁcóÎ]¸“sõòÕ5e1côãÆD 6𓱇Öx2QÐKQOø:ÚB)/YÛ3¡=3²6û€xëzƉ™Ù-éÕÍ)xêžÜpÙ›5B/ÝýÔ ‚‘CGˆ….àÂ&Ë?²’ï¨c·/ŸªÉéµMž˜0yf°†°T»výcSÛãÒ?ÿ¸MHÃYïàþÙ˜¶=A÷)2ò›+iÛÞGÿô_˜o¥=é;vå%¬Î“ÆŒ:´hÇò}·î²Ý·ì\½oñæ™;C7ƤىÿÍN+ÞxxçŽÍö.ß•²sáÆÅ+ìDßY‹fGÍŽ³Û—^§ß•´#>.iqbTz؆(ƒ8{ïì¼Y;oY¸*%ÑNì²|Ñw¬8´¨hUÎR;10fièªY‹¯ø6n>õݺhߪ›QΡóîµ[µ8,JŸ˜¾x†ù1^æ+ªeÊw¶ðÄKBÏÞ>¡G½Tg¡·-àT*ÊÏ-)ŠÌ’]Œ†ŸÝá€ê>°…Xè.Ý»~ýþ½× 9bÐÀÒ5²Ö¢:@ üuÀ_œ¦Ã”54ÙIX㢻#Ä0pbnÒ1"îYD K2ø«ñõ?[l0æSØf?™XÿhÙ‡Ä »ÎYý «ñÇqÙJÐAZ× !Ëð¾ŒÞÀgaàYO'N/‹{î1ììÔ“ã§ÙFÉ]k âý?íî=ñè6 ËGè‘ :¬˜m•F¥”ùQh¯>=f£žÊpÐXWÎ|OæµÞ¨#0 +zòéÏêi¬»ð—ú8t@c]€uõV½ÿ£ÐA}ºÌĺHLÃçÉz֣דNPÜá,jÃŽüíñ¨ÖAoø]ÁŸuû,h/.D3K‘À¾R-ÆÿžQýð¥„Θ£{¿)à {yGŠ2O;•‹ +—Å…“ü#;£µ$Þ²t± +(â? `þà€ì{ß.£¡ý÷(¢Ø£žVAÆ¿'öO¬ÊzbbÅ-¶NböCÔb˯¾]õLxÝßÕÞ¼lèõTˆš:o¢ÓȈ¼“²XqêVþëõ(C6ûñ²ÜóùVÙ'üÕòѲÆϺp ûÃÔÃt©e¥$ü‘~RÁ¨‚¬¨ß0Ï'ª5J½íæ))õO,õjí +"¨mÁÂúJ[_Æ´»*ôë µpm~þ¸tÃÙô̼kúTÐ å{wMš!å…À,ýf,Së×±æBÀ¼y>†¯4eYóGÊ©¬…À„ëc`àRçÛù– [˜VzäÒB(=°¿Ìð\ã=/󚼚 qž H3$wÃϽto¢·>•é„€Ì¨sI†qIó"PJkaè‚D#ò¬%Ȳ‚µ• ãÖÕl‚®¿°5Â!X˜_²OèÚ`b]ÕZ¶Ÿ 0ÿ6çjØ�©ºVh÷çÄ?ÁE®§?þñ—ÁëÀÚºöÁàæ£gÞu¬´u5üK÷¨Œ¿=‚.àŸÞЙ3xõ~w>Ý–¹ê™ËD£‹Ñ …yZU‘9˶b%sh²ÔÚ^Ÿ JœªÄÖ‡û*„†EÀ‘c$È‚V‘}^Ò\$BΤ`’ÍÂR(ã g–Px7 Õ²ë/i6²…‰ˆe]åñ•;"h]•fàúÝ9ÁF(AlêÅ]èfƾO}ˆãRA¬MeôÒÿƒNJI;GщnM“P?óR!/[΂“"ôf¥AŠ=‰Toµ¬3ÞÓh-͵–¥ü/»§uÞ¿?^ÙŸ°?A‡ýÑŸÞòb›wHÛ×%ÆÏ[<w¥#ÕdÌX²3áÍ#‡ðâàþèNg^÷ðÕ°ÖsÛ3õL|þ€Ösbú°·75w7_>RpÊNaïÁOºœ}¦$ÃÀvjB2bÏ]Ñkã¶ÄgÄ›G'ìIà·?×ß<™õéú§U§"f<b€îš’”S¢kþt:ãÝE†Üh?BÃÄŽú R³OC¡õë« Ú6þ`Èñžn·M¯O¶7û½¹¡³À}ëÓÇ Õ‹¡ +%Ò‘}YǶXÍ”í‹veëá+‹$»¦4)cÑt}ä왣V´'vRhQUV6˜ºá¬?Søzð™Š(l±U±ÝêÔÍ©[6ëÓÖmû~›vV±ê›GË +ï;EPÖ•\˜<A0øª:uYê²¥úk—¯[a\¥fnÅЖ© ‡SѦ® ȵ°e€C*…lÐH C¯ZÆÛ{§ ¤ôÌ©™¡»o~î„{–trbf™½O¿»LÖô#ŒTª@£Ñ[ÃúÕÞ¬UT º{¯�}ð&f"…•À¤~0x8^ň‰8Ñ`S�<4bâ{ðÂy-óº ^µì?í8È‚f*X :[å¸B%æþLÇüÙ0Ö†1Ð?ø¨9^,©ˆh;B3e°ê–2ÄVY“à?ˆ¥ëõét|ÕHì?Ldâ“^ü _ Úq· Çihv +z¨`ô°…KÊÈ<¾c_#SøŽÕå”ÒšªŽ(mÈÞ7Aq#ê”ݪ +%ʶ¢NR¢ LÀW·ð‘ üÁ\°ÁÓVø„u±”]u4Ó°? -üUÄfˆÆ¦@I-ù‰@1”̥࿋òhÒùDüñüI"9ÿ€ÏFÏŒ7àb?}Ö¤j•ë»èqþC^+² "iƒÈÍlðÙ'ä=öSE´ÿPŽ?ßõmgýùnyÿßd‹øL*äOÂ?ýŽ¶àÕö!ŽA‡êÁ`Ñ°?®+8h?þô:‰ý^¥?³“^Vï+®”S‡ OèãÄÆ1whýa DÀh02ʲ–£ƒÇÄÆïÎÍÛY• eÖ|srp|AØ'fÇl˜À¨,žKq.ózõÜá’| +Ù~bF™ÓÏ`ó¼`$ë=YKbÁøo<‹€¯Y?˜Á‰ H“s©êÂíÊK#¿• +åï¤ÍH[%å£î�¸¢‚tb½Ùù¨Äl@Stø¡kŽÆ3‹B†Í›î^stV®¨Îœ:Y£×çk‚m(¦êѯÃømQyc±Ý6dJ0FÚÖï¼ÀáÁÌ∪âLSþŽeÍš:7Þw®<'wqæý‰#&YRÐU‡ä—ßs¤ä€œ;µh|ép;±f^Lôâ('í)¥î½ +öýŸžÍ*Ž¤kÃÌôTõ¦.b½Â¤¦ãîz6î:‡¸+žâ‚ll]ãÀOüq7$ŽÄ3Yw²î+ÑÛl‘Ýÿp>´ÝÆß÷yaÍGîžb=*Àš#•/%¶I=ÓîY®ÂéÍm¯rôKðŸö·þ.¿FdºêétÄýª“ï4¥§¦`¾ÓѺÇëÎ.Ã�«,SvŸ«–¸ŸÑ²«3øº²Ñ®£©TíÕzŽŽ—o‹Ðé¥S(ùÞÂO \æ”XUÆÇ@á½M½y¼ðª;¦þÞ…ã)7ÛÊ.fýyR¿–zК?Øù’b€PŽÄÈæN?]5ú3NÞ·&.•ÞéDVut…œd#¤“U¯ +8%”Æã4^²•Æ¿zOÐ: X.SÚK$åíݽ£ß;%ºPi ;%/Ñ>ŽÉ|zä9,’‰yR³á·U?›•Öôþš,gkvÊ*Íâj~–évÿ/¼Æ[á€B`ú»)#<l^^÷Ö+ol]ªvSCªâiýa‰’6™xÙÙÄEoË +{/ìK’PÑÕÜÕÖÕݵÄõñÑùćˆÝýž˜Ürw÷�w€TÒWÜoº÷vÕý¥ûw©ûžÛq?6êÿOL.Xœ1ÏXl¬4^3ÖéÆã qÜÈ7.EÆ-ã]ã2ÂÏËÓÐÓÆ3Ô3Î3Ýï™çYLNØ+ž7=<ÿçÙIvØ!O¹a!_ïx¾ö”U¹aÌ`‚ÕcÏ°¬-ëÆz’6„¼°1l›ÉbY"¹a+Ø+lKg' ‘½Ä>g_±ŸÙ_•VX-nñ†¼9ïÈ{ðþ|Ã'’Ë“øRžÊWñ<“oç»ù~„_â—yˆÈ?çßó_ø]þˆÿÃÿ5ÃÍÚ¦eÖ7šÍÌÖf³»ÙËìgŽ4'™³Ísž¹È\Nøí+æ›æ3ÝÜif›GÌ<³À¼n¾g~dÞ1¿101ËÌ»æ#óóßÒkÍ“¤Ž9zË*,ÆöZ=DiC¡Z+S1ÕAuÆpE™`ÞAªt¬=]âÔOüÃm'Rµ z‚ŠPFú½VÑ¿‰–Â$d'³MTØù‚YϯHK]³,yyú¶4{ñ¶"ûÄ꓾[çŽåÌ;0ˆòWJh'*;f°¾|§èïÓ6ÁP9LµäÊRÿ©úøS9&UìJ‹g©Ï/q¡ï¹Å[—Øóš³Ôã…«ó}ÞÊœ{´Ô ·í½ØŠsÏn¿àûöØ´ñöæŽY32¢}`µ‘€-9vwæa·Šy[pŒ#0BuáªnE´jãDW·¡áºUÃÞBÑU˜@ùj*¾ZËÁ»’ÓDîÜ»åÄ™âçœ÷_¿ÏN°¯¿Oy{n¹Ö^Ûô«?Q´êÔI‘Ë®ˆ2fïÑþ@3Q3O]yÎvjpœÔ#T7ÐXŸ†5ŸâeXRªJ á „6æ-Õ§M‰Z"©ú´% Ñ4ïÃÙ÷í×ïS֑éU( D¥6¶®f%œ:BÂ^Ò‘x°°&ï.àãg~È´f²Ä—W¯XîÊñ…qÓVL÷©-¾ÞÅ¡wçOÏÕbÓGCæ7ñ©iª÷Ç{«î8íÞÃüÞ·ñ„ºj‚UwWsJ¹uœ¶«³ÔÈ“Ðä`K\Ë1èŒdSfWŒdÞV_±ù‹¢Sb}}F¾÷åÛï~–“›º`Ÿ]ö5+ž2äXw%4O’l1B‹[¼(aÅ\ßÜ„íûÙ�›uöÚòk> öaíël°€+çÏܼ–3k¤_`CüÊÄ=¿V-˜8£9~S1šÍ£¹úÆ™9Ð5°T§·L›b˜øžx+]‰“ ÖSÀoGo}q7²Ìò«[•ÌãRtq쨖2¨Ì;P`ÖŸ|¬`€m24�¶V‚s›.:-ý؉bè©(¢”è¡©WD1/q<ÔSK!˜(+;iñ/ hñípt_¹žw^ziÕ«+}Ó¶îZ¢L/ñQ/ $ô¨!ªXõÅbFP ”ç șҹr¾Ì6”Ë�¹—k¢iÛc¶PO3Ø -|“ã +zÕgàÇ©6DWt³M*üì%;Çü4½°ðCß—W£ºvÕÃöŽ.Ú)]ŠPÁ¥PhrA 0yr�¶ÉêÖÉŽ¨Ò¡ð,u€‡Ì ŒŽpzÒ•K9y—.ÆæNóg ;|à p.ZØŒoÖZPœTr²æŒadùLMÊt´]°ÆÓ™j¸’×`„f^–0@$k7/J@W Uv#¼*_‘pPèT®ñìOöþr92Îñ˜˜9sfßÛ>»¿Z“l©Ò{¿ôìïÚé&Êdj€6øÔ¯]”WE´ë¢ž²½ó÷–¿ÚHÀ6” Û Œ¥-S½•þ%Éžõbƒ´ÁõŠ0àx¥“se»Û#~Î;¿sÿ!?_˜mH—×%|öã‘çÀÚNkL¢MÝ2aÄbé]õV±4`ÁÒ[bÏAX©ïjÉyB]ŽßJPEïÅ°¡A)›;v^ÀVé‹„Ç™9ä\ôÛ€qø»u·ú]d“!½[´|¿Ï]»‡úÝzÈaš8'ÀRtEÒÐ~{÷½ßmç >snÊÒiË7l\å_I¤9,“AÚW\á¸)±ÑS`‚Fûÿ6t2rR'#‹t22],‘àĘj¯r¬“ +>²áò‚œYàhζ +R§[Poa-:÷Z€QR·.pCh4œžq•äPˆ¥º&kqªœ–4âLüÕUºH¤6Q"þ,>uŽaCÀù¬3ÇOžÍ›sr֌Ąè™'ÎÙpQ^!©Ê¯6ï`rnt!`s8KèIº!¯h ²¬˜¤Åt°ò¼€YâíF‚“‚P‘ÂÁ¥8pi®ðuliÀí'oIpQ¯ˆ6 °wç®ð¬à`Ñ¡`d55±t8-¶ˆ‘.è52fØ\›d4:?…6ä¾- ¨ðŒ@çP@êØžƒ÷€¾'b÷Áø- w>®¾e@Ö) Ù) ýh! ™†[A²ÐBZ7Nûu—b} w—e°–R ÷U£èÓs¢/ææ÷ƒï+ ŇŽçåNœè"³ý^Þüw`ùÀhÅ@@ƒÖþ�ÁuÃI1n@´tÁš½y/žðy±!íéî‚Âø +†#@2E‰@Wnb3ø}žÆS��x ĵA�EÑû¡C:´ÁÝul\fÀcm<U”¢U¼‹'ÌÀ(<;0¦CŠ!¦1Fõqæå"Ër•yÀ±<å\^q#ïx’/¼É¾¥K5<ød€Œ“?dd’¬Ó”múò—?Ì&mZÎÚ¬\´E¹i›cÒ°+†��xt•ü$;„«3œmÛ¶mÛ¶mÛ¶mÛ6ÞÙ¶íÇ›WéÝóíÖ¯¿T*3¬!�‚!J@ +*QAà�®€ÀÀiÞ°]+DhY·]sÄhÙ¼es$�`t•#å¨÷ƒ?B â ÒÀ°“ …Žò¡ƒŒÐÎb +yÇ>Ž¡Xí43…(äs·'þA9þ¡“€ºêÏÞÑØ=» +:»£}Òd°w– +œ†à¸¯Ü]îR÷²{>îŸ+—›>àI¾Ÿ?wÇûìðÔçÊUŸ+7Ý?|¬,u¯¹Û¬~=§û‡ÕOù+Öw´}]üëÁ8 °Ë\ùð›]t…ãcß+ÔŸ¿¹ó½Ï礽ô¹=wo»ÓÝé?¯@½»Ö]ûuöð»•'zøö»A„#Aú³¢ Ämiü!’T™Þ¬&{+«[â®,e‡Q~ó¾uØ'#dœLQÍbP·@–Éj™l’²uDN~Õy¥M®ÊmÖCy.oU²ÊgãÇ +f˜H”eÏ$¡R™dV62)Då1%L9ª÷Ú'›LSË«,;kfÚ˜NTÓÏñjOK™ fÚ7ygsÌ"³‚ZdÖ™-f×WPÚä˜9ͺH]7w©ÇÊ—æ=ëoN€‚²çDñ*ËÎ8Éœ4N2““ƒÊääsŠxUŠegœjNª‘ÓÂiçU§—•îýM:ûúÞuÑ÷k¹ÓÌzeiKG¼ï¦Ró<ꛑôš”¤'Õ—r’S™6ÁëqÀã• ”Û™“êoéõý=Ô>“ÔõxeåEKs]WË{¨yzzR}7zRýKÃ&¦´ÇkþZY9©¾´úÆ_¹b«Oê%,²””LHõÉõù–eBê5C¬ÇWÖ°d²ÝÒéDÞS?HïÊí¡vËEOªïki®0±×+µÏßô¤^“–žTßR¹H“«¯ì¦LÅœT–žÔnJ¿ï¾×±ú¦Ò r Š *Àû9öÄmå}å+å åeíŸFýsåZåM¥ÁsüC +ê¡@œ>]H„åž +TTY6äBäá)¢¢0Š!J£,â :ê ¾vIªÿv) 3ºAÐCá…XÊ.˱±‡ñï?‰³ˆ±ï(é/%’D–¨†»‚ëibsŒËb!!RÐ¥Azî”ù‘…P 9Pƒ'(‹zÜ·’îÛ=©Vº{kÇHf£1‰Ùt¬Â@ža+¦ba.Žà,ãInc5I&)�I%éé3J&e‚§AXŠ'£RQÿ7A^EE1ÍmÉëO2€"ôvuö3³%§@¦B¦A¦AÆ!¶•:Öõðä›ù+ø(át97oOÆSðT<Ívú«ã¯žxŽð¿Ä·Ä-sË°.v*6ˆ».+=‰žLOy÷ì¥~ÿm•ÄJ–ÿe…E®·³4ÚCšž´9»�������������� \ No newline at end of file diff --git a/core/themes/olivero/fonts/metropolis/Metropolis-Bold.woff2 b/core/themes/olivero/fonts/metropolis/Metropolis-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..54bb59f65767d35360b16b0a4dd8903dcfd0e725 --- /dev/null +++ b/core/themes/olivero/fonts/metropolis/Metropolis-Bold.woff2 @@ -0,0 +1,59 @@ +wOF2OTTO��AX�����_��A����������������������� ‰�"’R +`�‹@6$‰bˆ; :^˜›:õëN€ú¿mzå7‚L“òJÒ˜²ÿÿ3¤ÈXiÑK»m�ê¿Èl‡BÝ£&‹5ÆÚ«UÚëœSu{ÎÙ—Ùœ gÕçqìp'¨3Ôêhg¼`¾`õ)tªîý•C‘ò¿¸µH7©‡K²|;1)ê«ŽüoL ’ÿ;…R8zº4;¡e•€í 2ч,“¸œ?gOi…Ùb<±FûàNGº°†;üñq‡Ö–æ!IÑäùýhç¾/ëŽZÆÓ6\¦C…Òè–6‘ +„bÓ eI$ý´ÍîàÈ’á�åHÅ+Q1s³re¿ÎE¶½Ni.RWæÚ7üÿÇA;÷ýŽ›Lj| rŠ 0ßùÞÍ:cer¦É›™Ñª¯8b/T¨@ÅW…Ò:-âPªv&ö•eàÄÖvsÈI(‡4�ѳmfvo‰F‰$©j¨—#¢ßÿžö®n]º{8›×U•®“z?yç^‚x°a0.“àAFò†Q‚Gj1… f3L˜uîß}œ·Ð›yc›Z¹*)/ý¦êCu!-hÆ y„ØTÝç¿�ÀÐ5õx•6Ñ‘ýž"©rÉŸM[[p8ÿ‹¦–\»²k_îæ ô5Ö¡Œ"T€XÁH2A€”°B¬þvzì�:éUã‚¢-óñ‡>7¦Ç«Ð=]äÄ@¤Ã„ÿßܧž¼Ò„ªý[UI,LëxþKæßdgwK“€’ÀŽˆtÈúJÕIÕt$'¡R]úôÞÞ[Úíu3fð‹@~å¾}÷”+™&ÒLi£=¦µiÉAùsÉE +åRŸòJ×oI–¥ãâlÎæ1ÐϽÈi“6ûž0Ýê Û<髱(aEå�7%<¿½_ιn'}¼$ˆL%¤6+Al âÌ{?“*�¤¿P›J/‰Ê¯î)ØŸ¯ú' ûÎÅ7uñ4~ŸŒÞyéºñWœØ„vüÖÂËO® +¯…ÜrZèvž L%ðÀ¡â°$Ðrä)@¨ÉÒ«0Ý\‹·U½VÇ\rS·û^ñÞ7¿üoSAŽ–ªµ×Í@C6ÕLœb…µÎö¨§íÖ®GÆ1']µËûöÙï¿:æ߈(n¢¬S¥Ï£€LE7±ÜJšVUs:Öùræo´D‹uÖ×pŸú=84}#ÅØ~<'`‚'r'cŒ ƒ»YŠsÜÍàUxWZaìöÁWÃ}Vïà/P;|¾…à Þ#[e{¿È\‡ÎGÊþ1É1Ž½ä€ §(îéG®S\„´à9.Âp¯þlЫK\ÇÊ-hÍ ª]ãÁ�ý=Œtï1P‚“iD$‘z$ä>ƆžÿÚ£·ÏžÔ×<K¸|næø•WWzÅBÂ[ +©w!ˆ’‡‹þ8W „…þ¬Q°àAÚºä'/#ÊÔóÚQ»¹|šQŽ"¹„”4T©x%3a^Ž¼ûãÈUÝ*Ejfb·ÀB¦EžEÈŠV´Yƒ18Ó89aH/C2Î DC‰ñ2„ñ6%CÁÑ2ö{R@@iÙ7Á˜ý¯ e±†¦ )y<¨*GoĨóã(¨÷ò}éWJm4×lÌ›€æL+çE¥âJÊ}‰Õ˺¨²3ÿS#Ò”þÉí¬+s m 1E4Ûë´C>úă2m 0Êd'Yá—ѱßQ¿ô£¿rÈ@-ø™-îLÙéƒS´ÉæZêVƒýG3w"ñ £ÃxÿC9êæÍÔ©œ%sv:‡ÉYšÎy0#óiÆçß!ÆrW´Òµ[ýºoÎÖlÃú7¼K{}»öÞ>Ýá}¿Ÿ÷ÇþÚ¿'¨rŸX`…9ŽxâK>Û؇&Ì4ÒJ/¼„ˆ1Åû¼`„Q¾òG”_òµR§“½õ·Àw*R¡N“ö¬V»Ð%㈠§]ð¦]Þñ¡½¾pÈ·~ò»cþk{ï'~¢isʳ€¶µ?IÊ´•eÊ\C-u|³žØ(|õÕuÉ9³Ac-Û2g¢‚´ª]•}~òàPÅ¢H†Øß0QÑÕIJ4¬ZŠ¾Wþ†bü„üÐÃûC##ÆJe4¨ÕAÃ(&ý,BÑ@Ú„CÈÿ‚êˆM_ð†vmߥL¼éCKø¹Å„[í�å\Þ—D´^ùš(n·(r'ֳͰ¦JŽžžÇZc§ì7í¡lÞðßó:ô7àj`˜o˜4§óÜ*z¦ôŵþ¢µÖƒ_÷ô;(B<»AÏ©mñ^WÕXÈ+‡úñ{1ךgŸ-…SsaKx¼®�¬úÇX‘äﮦ«¨[ï²A +·?Çà H& Öݬ¿ÌF½}-vø[ŠÑ‡,¸n—F͈3Š)&M˜Þ¥Æ —mEôéödÃ>%ïDšÍˆ+°H>2KŠÛ+ê*€U‡I$_#…37Ê× µT£soÝÊʹy#«oÇŽÑ}Òü$Wˆ®b*}¡lÙC\¾²=/)"arÿ,™vˆy#;oᘠßw˜«½Z¥0ΪZ˜Åü·Y°™ ™ky~JÅ=J0Ó¡õÛì‰yÆ�ðŽÙÀîtjf!“K±E½ºlíy¿®‹ÜëûŠÆñGVß$ùSƒÛz4ª¶1¥øûùÃa�îø~JàÑ®#£Á…ÔŒC& ›!€|Àx€OWøè!y ·t»Â/áý“ÁïîÉDoNgnß`{'ÍÕ¨'œU›•Û©†*P×NPSá,Ûd{U“ã‘IMžêm iu¢‰Ê/]»}ã ֤slk%_›PN·˜Ø„“ÆÛ߃“zhµÅ›øEì¸fâ37Á�‰í{+æ%5ù?‡‡<¯�bœU½\¬½š…Æ΂֮8d® +ÔuR$ÛŠÊhtDò/óÖ¿Æ·öä( Uq4žÖá¥Ój©¯_Qâ@@à<«| ý¦t$·ª[ÕÂO—æŽÃÿ¼7 +ú6<V+œ>WKÄveYj“Œ™¦Ï|1*y9Úצ®A±Õþqì'+Z8Òƨ"C2ÌÒžL,àÕ–WYJ{Cí%9](¼á'¤Â ÄÓ‰)1á-&&ƒ—˜@²» m�ÑZ éT®RÎÛ$A²“pbš+çË/¡=-ò#‘`PèÂ…]“döƒUi“² ¡m_“¥˜Fëç˜õÆŠ-9…²ù1™¼E¡@g–?A>6dò1ÍÇ.´|Zp/ß6p›‹$\‘Ár'2´$)ÀX¤;õfÉ&Çq™¡•,FB–u=lN0à*KÅqƒæƒå¦ý¥ê$°4B;YŠ ô\Œ%°+O4H®Q°lzŸ- ’Àä)U8±—<<ÝDô¦@ZµÇÑZQ¡h³z"èÿÁÒ*Já¥2B¬çxúV8y;È9xQØm•Ÿö&¼¡–Ì'’Žð—ñ7ŠOÙ´Š¸¡ÀâÁ€b¹–H€%Å‘‡ìïr=Â-š,¢0/ùð•°å‚iŒÄh9šd Ï^Ÿ[Ñ@p¤mj»¢¬õ°(ž´¶bX,·¶|Ë U|2úÖƒ¯!Uú +È+úUx~Öí^š6Ш"¦ï2°Ä˼ë�|Í¢€Ý‚´Á •o +n¼~Ù§¬v^ë×ÏëüVLº E໘":<”(/ɾCÊÄFL»š4Ùu"’ª;ørP‘ì :¿YOUÁÆý +L¦> +¡4hÈ÷Y)P¥ã3;ð;úV¢AÈñ‚Z){Û#áÉ,´p§§Rcs„ÞGÈV‚b°ö‰ih*ÞeâäÌKIu¢¼âHfJÔîÛW¦“cbm<(h• +Ï}Tt¶m6ïØ óÂGqIÑHòäBAOæ:SR*,'OŠÞé¥cÉ.dE¨Æ ©—@ +º¨LZ2¨¼šÈ„œ.ˆ•NáŠz´æg!¦Í!“¼(ô…6ƒO—Eîå¡båT’Ö³²PØ©²¹JJL“àI!^†Òšç +]Q¨O yGë|m€€úG……‚ ++€Ð¡I;_‡Œ®lkÚ‡»]ùÈsBwyér‚ÓZå!H¼Tìû?šn–¤p¿}¡ý8Å9l ëKRGØØ’å䎎9^VNÔM¡¸®§¤rÒ)§gƉšæÚ›WËز»}³s–Î9ç]ж?Xî¢ìmçÀqýéÌi“K[8o¾Ó»ìŠ«®Ýóx}¸Ü÷ýÿ¸rsýa7áþ¨›ñKýÝê8í:tvÂ8]ºâ/ S2x7ŵ6éF·;Çw;ï,÷jsÞ‚wÙ+„0Yí¾zÔU¯ÚuºIx7¼Å"k·ÃN‹òD¯>Oë²›µžY'Zƒ±õxÛ;Äu—çÝc½øîû€/¼Ôo ‡>ò±OH”T¯}>ó)ÉRöœ¡^ÚK†ëwÀA‡öµ#¾òo}‡.>O¥ÊY¢øJ ¬Z!:i&òà…€h±)¨ŠT+V¢P_ø¼÷ƒ£~ô`>“ “/dÉAÖb·DĬ¤Ãª!Sfï¾Rg¶Eæ›a®9¦[`–…æ™Ù7¿ë�:è„Ëî1äêf¼“=Ú&ÅK]FE7à¤îêš,|eƒn»Å „æŒû¤Íìkç"™™›¿æëüY2$_Ÿ Ý [»ûv|×öþ5*¿cáö+Þÿi}@/Ã|—ì·r]¼êpÒkk£;½èû±Ïòäg¸º;{¾{ëîß‹ûèÁj¢ZhµÚÕÚT[úÞ—ÕŽV;]-£Új•Dè ¢0㱟‹âwqP\Ù¢T¼LªKí¨_-túÕ§ýk}õÕ¿¾·zIuM™÷ïÿº÷¯'ÿú“²„¬*•KUQ}™¤X¢Þ�·´imêFY•ödN¦‹è‘q4¶Dk\Žëñ(Ì)c”ecÎ]y5ßç×üST¦Š©gÔúºÌÐå}¢/tG÷õŸcÃÖ° ìàsøô¯Pr’AÀfرñš|‹@jYÎFžçnç;~å_ѹÖ\;®7LRU«UgÔ¨“Ò×ñ¼y³ï©ûÏK|a£n΄½Ö³ñ©°g–ñMý§ì?çþ#Âè;Š¤^42lŸÙ"lÛuø›êëáz}€^Y£að·Á±ÁS‚s‚Ö¸Y£ZR=ÂfÿÒþ»½‹}†}=ÓžcwÛìÅö²ˆÊo~é½1ÈæÌù8?Wg·º=³ÇöʾûÝl~¿mïæë5#6ˆ'`©U®v‡{³÷øšŸøµßùÏç¦<)/iŠq2SÌú~×r}ØÉDo˜ {˜(óøôá• 3Ìgh}&p�œÿÞﻼm/KûiÞžÍIIÙ‡‹®½—27{'ýmeÊÙ3ßDÈÙýrIÊ>\x çËÈ+’Á϶’˜*•Áça$u|s¢”Õ/[oÆ£$|†…µÙ2RüÆLÚ=gs ˜÷å'%™ùgy½íëž?}'ôCü ôíÄÊ`]]ŒÅ½ +ôÀõ(eÔ\¯‹±¸ ä849ps€âÆ`]]ŒE`ÒR76À£à‚º€?Ú7P°`Ëïu:Ðû#‚s‹xÁ¾Þ•}üN`ë2œþo)OÖ)s4™Mš0ŽÀ¯¾¾åÁ–kI¼!EçΡîÄIï•»ï¢4™VWòºBçºo +¬í–¯&0îÌrú¿\…ã~»]·A´åJø¥¥ó61^ ¬2·"êæö°œ1j€JÇCƒZö±ÍÀC fÈ=Å fŠÔWCùÏ!U|2ìi›ÓLó©ÏX ¼G‚H]¬‡ûw‘©{±ráö³HËyuãHŸvBZ·kW„VÅ;`eÀþhZQkÓ²»‘'¤e<î/õ^hMåå±úžÅÕÅ^UÞš6BÊ,Å#Z<†ûúÆу™–Á¾ŠÓélè Š¦Ëê¶:‹ð¦þèPK—rxô[ÝÖÚh=m£â]ÑnhQ n,ä'§J°úšEH¢ã€C¼P|È’‚boÌÕ �N;+,Çߦí =©ßU</°ÓZÓD•¸à<åßUÁ„›Ä &10Ë»ìÍz¼¡#å•ÐË_'œ®¾_FüØ+=÷,p›ƒþøhÝ~˜öŠÀŽœAX¬"™Te%êg¥xs]úǶžñ¼Ö4ÊËMàC þ%…(\ÔFÁçQ(-ûAü9¯IJ{ð…q‚àìÍì5¿r>fO©H÷dgØ.#ŧäú(µÕ쇇“âö+îâÕM7ws Ü $‚\jìæÃ@þt¿Kä‡NÂ.ñ4Z)ñ{þWdB;Dþ&ÕN¬¥EšÈå„ôgÉTVL;2?‡ãçàà×ÀI(Øæ¾CÖñpžùJÑmx¾X€öôÁî•àŠªžû|ì%Msï„j<»qªýYôÿ^›ÕuõŸ¿çÀ‚øz,~õŠE~™Í +7ÑêÛY¼C"¦×Ú>ûÂÚ×ób܃píØTYI«R ôHVïŸ'{’ã È T>ø2g¡—i‡9ö$>©¤ÄkGÿÿ0ÙqÏèÃ{}UÎ6ÎT]3>·á,R<×KŠôT0í x G–’(šˆWXXLüЊ%¬àV÷Þ<æZE<[Ï�ß²Q0<QÒsSõîŒíc¢Ðå¡@ó×g°¸à¨pá¹1ík*à‰º%ŠC#¡ó8Mªï=_Z÷‚´ChÞÓþ‚môUÉì{#ëI¥U×’êžâ¦Â5P +¨]�\z°œÎ¦v<ÌŽÙÄÿƒ¸–˜IF>æ¡ï…fV¸vµIŸ3XíÅ刨YãÿðñRÄ÷”Sô¿ÀôáPù¾·~¦%7 ͺRí/ûG"�ûßhždjåXL¨d~*œ*zÝ'VbØÂtæÎ yÉC‹†r©E³ƒm® ð·¨iÀq°“Äx³*²âòÂç*¿óëãé÷gøœ$·‚çH^ýe¶$·7·ð#cqzSbŠD!—ʳle-xdìœÑ'“L®_‡ñ>–‡ÚLªRñýÂ4VÇ åk=)P;8O¾$q±opa4g5¦'[6Á·Õ-°É ÅÉìÁ¶/>ˆ²_žçº.RáêßxˆWÏç?èø[ö9È-×(+2ê+ýª®‚ç\äÖ×Âþ² 6Å@ˆxXwIB°*=÷\€bpÍ5Áø„¢Ó=“w +4YXËÃÐÇ£d;ù—Ý]½ä÷t¥t»gÃ'ÆœTRwÑpÜÙ« 'Š›`dü‹zM1Έ=ÝÕ¥^Flu«’Òv|V¡ádðºj£âž`4%¸¬° +È-%»ÓmëRP•Èý/ÎCRœ]Žy2ð0]ãl�ª«ì‡£ÏâÛÐ4#.«µiC嵜øš–ö"ÞÛÐHÚË´:£ä30BJ¡„¬x7++ú5²¤ ØZ‰ÇÓ•¸–ûpÚŸs–¶¼»_¸6žsªooÝgZ˜¶Ò•#<X² ò’PVì¢@[í¡ÒÐ�º©yÔ‘„ð(FŸuä˜(t™mÃÌ\÷¹m<éZ>†¦ÆF#ÖhšTkSŸfÒ ŸÖzlÆ]ØaÇÄOSÍ&€æp^Ô|C5AZÞŠ•€ÐkåêT¦ÌêÓÓÞÁ[0Ædp¹ÙcÉ#nAÒ>a<ÄsmSÆÍX6Â.~ü²ËjÅlÜ +X0†Ie“ÂL‚#§ßÈ©150wvVƒSÅ;ó껄æT²[-ª«™¢í&ÆS FW冽[ :ô[ìzz44ÉÔCú-´ûüñÿ ^MCj•ŠÖP¦GÓ€&ƒžtõÁf뙋ãރыSÅooÀXƒÉ®\¡8Tìgb%²™ïX)ÜP®0àoò*Œ†?¤¸9Ô±Rñ"ò£Zwàð‘F ¦¡›¡o6{kšrê^ Y ¤,Ïu I<PõSÂ驨KøÕ\ôáµöSña ÷ðÛt0Dù‘ž¦`%pN7÷£ñÐQ1pnÇØŠJnÆ*Q,3–Q¤Ü˜Ø#è®°‡øÒ‘?Þ܃rÀÉ5M}É'ßÉ%N¥®…Î+èaŸÂçµO`=V´‚:¾[‡D¢{ù_’ TàÈçUBEÏ‚b¹Ñe¦XRV‹›úê2áÅEÀÇíÖzµ’l_˜µ«#Z‹üÖAŽ'uÓhWù1þkJÕ –ŒïuÙlHœ"_Ò½R95àúG‰Oâ”$J3yrì*úDž䉆P2|¡“cÁÚ�$…ÛÙJŠJsµ¿Q½•¤ 'ÏÂÕE|Ô +iAòr,ë•Í%ÜDñ¡øgrAivçç%Ìa!û®§_µ4]£‰D¨ O’¿s“°daš*+¿@ähpäï);¢·,*œs'|ÁÞõû”ÄZ“˲yŸ|Ø?hd{uÒN¨#Šë!u +÷B^ÃrË™ P[Ná™âªâ»ñ=à¿(a\ZSÛwÛ)LÔ‹ÙÓ€ð`©ÝxYéš)´v»Êd˜_9Ž… VÎr?üæ@’{æžÀH€JäN¡LDJµ®6‰ !‹7©Úëö7ÆÒÉÛ@ô¤MÁȵ^sÎ'ôõ5ï>º?výÇëÓËnèÖ•›WnYÙ(~p¤ËË3ç&¿mT#wöÞ~M¯ÉÇJÆZ`„#œ�op†>f�=Ò\*ÿnY~ó|iùùKÅÉ¡©Z¦ëš ÍÜ/xêÙ( ‰cÈ)? 18dYa¨‹t‘wSEÃ|S8†©‹eûû�ç@;Vf¾pr«–2)Ð1J2Q˜ÛZi,Ça [¤/8(„“ë»WmbõÊÍjŒsŠoPÃh+£càʯ(ø;v¬:þ¹<AÜiLÁ +ÌF*qR$}jæ×€U«y¼ùòpñµ9à*úˆ+wêÇçhšY"Z¯ UÏ–_"9)A)W7”)œRɃ+è"¶åÊú�¾57œè调￰]¸€3×°Ã.÷.Dÿ!ÔðeeȬf¤Õg tÊ]Y¼{›YÊ@,ÁópuèJŸûR]Þ¡¡Cí6dÜ6vÏë08©É·q±OëFã]WØ£W¶ì¯ÕUuZh“Þ,Åå^J<úÎåÓË¡¥Ü]}U/àÅ“Ál!ÅÕ^äM¯žV°äW@\'FìÃ%HÎ2â\[Ë÷ôs™±+8-Û3C_²uÀãr*vÿ»E“HB¶Ø9%Ï'ž®erŸz`ˆþG/ú.}¾ãª›+O±W\ÀuÈ‘õXñ??Å4+“0/³÷í†ÕvÝ…CH%X¹cñ§ÙJ÷Ë\ƒMŒëÒc:é4 +Yd†Û/üQnÿ:Ê@F褿´÷‡(% +NY§FÓ…4d”`~[°¦&ÏŒ©°°;K¦±|úiµûÒ ÷\¸b‰bz0ѺzG»¦Ë^žíÖ‘WèÍqH‹pr¶¾/œWfáp8ò÷³ªEz3ËÝ™fü"cÎX‹æ‰>q ëûqñž÷ûš5Rø‚óì¥@Á!+žd£\ƒ{¢íhâ‰qW_+ÁjÒÚ^¯Ð/aVºõžØ‰#ë”0<ÔO¸Ì}?òÃt=°¸Øê½<¤4—YaükåtDµ±6î€&^$ð _Å,ÍWÆÉÁÛÖx¦+åŸ=¬XÇr~nuéqu¯Ý8Ü¿¹£Ë*KµÚhùÃœú_ȱ€ØéTíþTý×kw%®š3ˆíÙ$®QX…Å ïzXÎF„/¤e®»Fܽ7É\=/~a9˜Ðî*6{_ÇÊ]3±OÉìXБ„luWÜN¡¤7Ë/'ìQâò¯$ +ÃaOfÓ4ÊÃ)6/B¡ð¸p®NtôCÄtãm°…cðZ•ä¨ã;bàK@xœ½¸_“þùâ!pRMmMEe›ù„X;Wƒ¥r¡¤%çU¿iª/‹ +#‰5ª¹oPh÷µ`ö‰Yë{Êl@°ñ±MAq·žv`ôM<ù…YÌð²A‡JïMk„ª4¼‚·3¦mߟ轣¿g¬ý—õ.Úâã-Î=ÝTÞ[¼2'œôÕ·ñ`9Û«TבöA¤B8ßXµyƒ×O²Œrä¨sßÕë‚<㧗-LÎÑR›)zY…ì,/œ‘{kŽ¾»@ô5ŸS FnmI´ã¬ªËSD»°¾{D¨|dT¤½Oi»w`{§4âŒ-¥¨dÖýÁMpi{Mý§õþ!‘-qâ\¼FˆÜLø +›1L³øg¨7;D2Ä"_w|9 í~Äß„·'´ƒã¯µ ÊŽO'tS¾ûð’á±îZ“ãžü½ÙÁ +B4™j0kÕ"1móó²m!à¤sžvý.q14IÙ>ßS“G$ZuáæãõÊÍU¶ßâ';,´B ¢šÅÑüÑôa@ÎÐ|ÜÇfÁ&áœé&¨€}P`Cü¯ôE†ÐÌšÚvTÈ €SZÌ4‘o°´)íq*‹Í‹3SC +Xò¨x`çíXìä”<°=Ï1/N:¹(�’>åX‘wÝßX›4žõBG(BŽ�A”¦É΋Gt•y65¼x1£_G™J»Tøc¦óê¦à*ÝÜY1Py~cÆG^aKëþÆ +xý*à8ˆ!Š¶Éuƒ-Ϩ™pC\‹ÜÄ£åê`Aâ’Õ×xè-* ÒT +'gbæ£HÁ̇«ÑóÚ6ý¬bêM÷]ðö ÞãéK¿%Yãñö’j½¹?‘øø:º?ìȉ×Á)äë‡ÔÚðÛÆýô´Bè¤ì(§E’ðÌ*øÎØùr“l½AH”³åÝ*<Û¯MÌexÌKP8Ö']”üœÄ˜Ø9YfÙãé8&*§%¨ˆ¸ZØ1E 1´ë‹˜ÒÕ'ä�,4çÓñDӹ܈Dal“¿M0cçPpÄÈzÉŒ‰ä¤—uï(gH:ÿ¯™‘ÎÕ¹ŒY®VË'^ÌeKÓôfƒ5&ù˸_0¬5í ¡?£škÜRg‚SäÏ@Ä�5ïos^¬ ö湂Z¸ä9w#I ºÏ$R€°„Ô$ª)Z,§µr¿WŸU1جœÒËTKY×fkƒL˜x ÇðV¶&0ÐÊfÿ¡ÜXp#$5ü ÿ½¬~x.wV8ƒk6#`Ȅɳ•ÁUÀ—ra í%5B‚ð¤é$oZh:Rxa"‹ƒmµ‡Js§¾ Á²™óªM|¼¥y8xz¤ …c‘ÔÂÍ.'ÉzYÅ^&ù›BÁ³ìÎFfD3Ú»]Ð/Èa†Gðƒ£†¼¢•{±l"¾PÀ/tU$°óBA=±Þ¹rÅrjÛœ/¿ÝÅ +b¹œ®NПNŽK×cjÃŒo[œãŠsqÕp-çxdÈÕ*û¶sâ8¿ÅÊÆÀ„jÛ‹£:ÜTßäà~¥¼é–M¥MÁ4c¸F: ,ö`GÌôŸÎl(.ɶF£ÖW:¹æÞ‹®³hú‹ŽÄv'X£žŠ¬^é+Õ‹ËE:ÔèÉ�~Ì”6ä"‡ Ê!_3,fSç"!~Tmë‡{e=¹ç?òâÈúýµ®ñ¼©@Ì&Å1-é%àÏD“³Xt¥Š{âI% ðhe†8*·‚ϧL0^ W¤žzÒ˜9wXÎèV튲Ýof½tº8üNxÅɾÍD&ék±ºZÍI†=fLJ8‚"m f+h?®¬‘ìT9�ÒãÞçºýêÏm/»t±1ƒ .²SÛ·ŠÜ®7·ž<>z+Ü{¢[¡´"ÿ9ßÊÌ2Ëñ?Ÿ]ÙŠl×Y—ë?+²ýø™µoÕ³v ‡kŸl33ºG7)ILTðcЛI·µ‹{Ï ø‰±†LN�]rv¼Ã²§Oâ8È (ð=7 Fo]€O?®y©C;×Wëñ"Ö¸¾›JIÌu.îõcÏÁÄÀ<UrªûŽ"IZ¿¡>nUËè¤bpávüdŽ|ÿ~ž£ÐbE†Ð(%£V+äø¯?¿”6JÃù€Œô¡yþ—Â9†¬å"N{ÌÖ˜�0/!°æfù§òKÙeú‰o×øOý1\ Ϲ8µß^ ?Û£F”†Ðk½À¦p7±G?0€v×2o,{î-ŸŠxx‚r�*æA#Vé¼5gÅK¨Á(ˆâʆ_íèw^æí+œý,D¦æ±˜Þ)O~w¾Ïyë1oèŽ$kFÐ{@ãs^j}Õá‹vÂN¤GÞÎ>ÞGÌßeØwÔWêñU»·bçs’÷ÿO¿²Ñ;k89r¸6å +±ØéTó™ó¤Cƒ·øÕ]*ÆÄ€KXXé +VÖõ„ì8füšÄÌçÃ?š<¡q/†Œ yóËô(BZ3Xóÿ<,û}ûÂñânìðÊþ1qãnÊæÏç-Š÷_Ÿøô·ÄMß>äĉкw!dV¯sY~ÛûµÇ.v²´xÈÏÃc~äŽèIJ×ÀQØòC£xT9xœE×øãœóÔ³êua欣l€LKÊpÀzdÏǨSž“Í`µw25ó sÅgw¦ÚºvÉfÓÍIzïnhGá´£%e³ç|`p 5»Ô£/§üø8Öà3TÑ‘˜)§éòiuéºg\èE”d[“Gï“ÉG"ž3pñâxÕÒ™šÐ¤Mè¨ÕJÅìL_ã8¡ÕSŠV/Šl0ä¹ë‡ÎŸK¸ÞKbBFúÁ7üšîøc6…”Áäad?©?Ðo‚ÿ¶Š +„;]Ø’å2Žk, ‹g“Ç—uó»™H|ºâM¡ñ›`óçVˆŒ»õÙkóùÄLÒÑ{Õ•`¤Äølþ”K‡Ý»ìš§ª]wš…ë¼pºOÎi+Tk䧳ÍhѵÿhØsN•f]dpŽØ¯¢õß1W9º»*1 Ì48˜Yêß™¬jbsÑûÆKsªÒô˜gæådüƒMEÖ€“k�4é+sg%¦¡y:ƒÖIøù0²ÂÈãÆË4»ŽçAŸ“ +|6«ö,ƒÜÁ„>²-,vCå,…'fIXšNìÛÆâÛ€iz—ùõ:Mì¿ÝkmHœðÌP×÷¦±³tl‘æ™–²wY–«Ã^J_±Ìex:ç’«öBõÅp8Æ©â#4æ|X.ê‡SÅË$[ô0²ÚK¢’š‡1æI;ð_—;rÉ׶ܘÑ_jRƒ¦²1ìœ<zðÞÖGáÉ›j|Ì#6t4l—fÓÓ.p£€Š‹`Â!¬ÜO͹Rì\«\b-Q!âã•æ¾g£~ãÝÈYËú¾ùÆ´o*fëÅïq7¹’.ùЈøi‰ýƒ°-`W<0€Îüêa×Ã6iäoßÈ?¡µ öZ=`ÿlØ&ƒ‡šòPK+w÷°íxSÆ\ïÕ>’ЕœPƒðþéÚy`tL1®íÙú®ïÕk¨gÝ¿dØ¥ìEL|Àêúº\1Ó¼M;߀F®0iv„`=‡×ÝGŽ•‰ueKOh|ÎööEM7Š4|t(0–.ˆ°½is{~yÎÀÆ‹Vö’ÅeFw)ï̵Ã`sªòÛ?¾¨›Kë´g;6†qàÖá˜òÁl…Èp!HþzÃ`l;&QTgã-|ª&Û„±õ˜ˆÚ>ÓPª'=ÐâMG‘¬#A ¶˜v[—;t…ŽŽæVDù +A÷¤ÃçÊB‰ +ë½ï¨”‚¥n»ÂžáŒÄÖÒáFõéUÏ]6·³2 {H +€a* Š‹¹Øu4 &âBÎ"œÃu4‡#ÜɃC H:Og ä¤Þ‘HùøÚ\uÑsèCXjŠ(æ,tö.ƒèš"+Ïä_2ÐcyáryÁt#l;ÑƨÍv¶«@6ëþâø‘]ãûX·ùbSœvk +¤·^qÚÙv•Éw–Åš+Þƒ#Öî ®¦AË_wÿ=éøî`-]s¯×ïk1ca™Æ¬—ŒcÏùµÏß™VÞ·•‰¹Ó[œqü !òRRÑ”ñvkÜ–ÒùÕ0ûãf—ùR\Ü°eæ‡]y_Ý]…w§Lo’Î’Dœ¬k§kâºÏÞñ†œÎe^n㸌_¬•mÛ36Œ)åÀ˜ãc7kÈj¾_<örÝg ¾;íiüηýþÊ°œÝP|_~Ô0g‚k…³2q‡wÔ†XhM\[ogH8º …umEB½šœ>߸ç²Ó~ƒ åÀº'-C,QXšŽÝO0ÃÅE¼ÓÜôí ['ùÓ–ž3=Û‹xŽ™yÈ{ì|øTÅö,ªÍâÑþ.ݯ˜›ÖxÍäúÍí§:Ðî™,?)ƒp_!ìM›9Äe˜N~ðÀÛ¤°8 1el�ÑÊ9š¿qºÀ(µ£—/ŒœIN4 gQýú,ò³EïNy,¶Z7ÉÀYöáÍ\P§²Ì2 Æý¿D9éã,ŒxŒ@¹Ìé¿þu–í…–“ ¥å,{ߧ¹2öÍ$‡2f[öHnɃ¹`zõ1m%Ù3ÙÄAL‚6šÀ„m4AfîTeº°ƒ¤ý<YÚß«ç!G2ìWÆl{Ådš[´�‡ÙÌbÖý¶®XÊdØ#ÂùH'áìÁ48{qUG�¼Ý1VQìù„À»€ðŽÐBÆŸª;ðŠÞé)ÐùÞ‚;2ÃÈ0€³\ã&ZøƵYÛj�ðB¬ÞqG‚dñ7ÔnmD@È)q–Íé8›OÜ8ƒ³!L¿Cþ'™8¶ô{8«JÀÙSzóà ›«£ÑSâNºYõ˜Òtûˆ×ð -•§N•^eDÒ\Ï<É +}vwéîšè²ZÑ“Ÿ‹]V…Ìs躆Äã5T0þ0ÔÅÝÿ4ÿ‹Ôÿçfsm'€Ì̆#¢Þ—žŒ—wŠ7{>ôÞmLŽ*¶¼ÖD%²*D!žðFâ a+öfÚ°fûJÍC)ìàGIìíWäoãSx©Kº„¢›(<Ê`+¿(qÞëzs¥d÷TaWî°6Íà ¿à2|ÁNÐs!×pÌW´’sàÎ(†(ħeë¾á‹EeÇNWìì‘|Øï˜>®y¥%Ä3ZϪdîa›68 éøð¡z +`39=¸¸ïÀÿÙ‹Ævª‘›Ô÷tuÏʘg|�ðôÉØgaOÚŸcÈ'|¶þó‹6«g¤Ð…¿f‡Î»Ÿk¬¯£À»™µÍ³â;ÓÕê)[ãÞ^Ö]Zi.¨Äƒ•ÛÉì=þ1ÔÞœE'súh\ôZª+4åÃF7÷¨ƒý?p|‹féµ”vR?€†Ì”ÐuïÑõÞü¤¤Å”ñg,ó›ü¦ÈyÒ¿Æcýoãë?ѯ£ä³ÝIÝ@›Ýµ=Zšß É•6ŽÅ¶¾€½|uº<B˜á¸ñüËJ´`e| +‹Xqˆ*†Äq);>%ë ŠŒ!J‹þi{+2ðÈ‹rÝ+ïöHƒ)à1 6÷-¤Nq3�qÅ^ÄÆÜ‘ZfDÎq<v‘fŒVϨŸöd¤"Isyçðqºá°³ò—@mœ¼{O†®ôfU=Ãt¯ žbÔŒ^tØó\€·~~ì+W>ŒŠàÿy×1Æȹ¬{'“IÆcÀ‹@Ý»!¼@¾¾›LA8Ù@ª§K'ôåqîTç;ÿøHÈrš³Íü {ßâùïC¯¼þÁB ÿÈ¥—ó¢ùÙ_ªÕo«_o~¶fYõÌ_Ê8XÀªý†p‰Øó/IšK¬´ÑmÏ|cQ«ÁRçzʸËvØë oý™S~…m#õæw"×]aç[éYC½ïkcÕöŸn¬¤‘jŒcš¦9:gÆ:®ñOdâ3=Ó>=34ÿvöök%«Ù ݳâU¯qMÛ°‡÷Ğݮ\çváíÁ{ûöÅ~Èš7^ðÑ¢Ç_òØÆ. E‰öáÂ9Ìi¬D‰1Ëg<çŸîû÷zÊQ"¢½núZä.÷+R©Ájëlöœ6ûuê3ä¬KvxÏ'úÚ/þï/ÿFî#NÂ$ÉS§ËG>w yšŒUV[[‡;ÑÙ¬ æ(T¬¹ÖºÝýúzÙP¯ûЗþïWHãü¥1ŽmÎGÕ’˜úmÙAtP~j%XÍ8Æ°ŽAfl nf3ÅkÁ§`ÕçCüZÀŠŽŠGQ’˜PŸ-k‹¨7„må}õídÝâQÛ~hk¬¯k1×Zûêñ¢!¼•©lK”º~|ïBê�ŸS`A„¢&b~ùû#y;ûÜŸGý(ÐÇVšÌá,Ä?ƒÕ&ŠÝËÕ¼eÎÚŽ +jÅ¢ÎÞ*<7ÒXfÌ·Ä)[Äm¨„Ûß«ß>ÕÀØ–6Ñ?MÝOn¿¯³~(é¤)’Ai K wK(Läü v2™åf²Fgž fkyÛgEkaQ=á¬Ùœ3 U¯ßÍVùÛÎ6±¸bþºò7æÐGYžLŠ©zÕßâßRçÎüwÓ>8·úP»\º Q•·ËÍHЀº ê4²¼Â¯ &ÆzZÒ‡jŠ\ó%z_p¯q° =AfÖçGuðˆ•³N©~ +™i¿kSÍ̮ݺ}b47©7mƒ:šÀwP¯tèPâf=uCHMHP̶‚²Sò~üNïñoÆô–ÆÚH §šæ‚¢F1Å„zåâõ_æj9óÆojÊ¡°wÄÑÚáœÊžEžl@êÛGóü8Ä×,’ÎóÇÒœß[ªåN¦Xuµ A‰e&véPcPïVïìwŒyCh‹’êÒ?÷vYfNijv]¹¿¼kœÝ;üJ8kÙâGEÑ›0–lÀacÑM£žš5½ßS‰àMt¯~|9œÐnmù/¯è≼˩‹·A‚çï2d±@t”‰—n”1Ó7ù¥ŽZ/gÒ’4-Á½¤¥Š6‰¾¨ö—ÓáóR ®£ gI‡ný%X”|ÆzÇyÊ�š°ç2ƒFË¡n†¤Á ñÙ4ZüåmQ¤;3^ã=È�ä^b>~XüÇdØŒ‡Ž¹KhÛ¸9”e"ý¬¦ z÷ûuñÊöœ(±aCó‘&jÁò^/áYzYôýNŠØÕd#_fo\6ØǤÛ�úN|§|”¦æ©TᧀÕ�E'Ód (˜gÐV§8,1QÈ0Á«ü-Dʵ~šdêeÏ‘óŸnÐS’oJæ?¿}iPëV JòÛCá eÃÙ2ν‘1êLI Ÿ_Bü¬fœ€ßÝ£œó0=‡‘ú’d÷ÖOgÅfg”ã"ômâp8èÛBú¼„Üü}^A6è@(–Ìé”8B0Ê)r½™†¥/¬ó)v2G[—úDQwÄÞ—·{ 5•ÄúL}ªh¯(g¥Ëæöâ÷.„Q(t:ù^÷3Û£õ¨7RÐ/‚¯‘þý>ýdŽÿA#(V9§wû´S™Ö$y®ßžÓ,Èÿg±MÑÌE6Q—åîæÿ¶sèjÕ/ÄVå'ϧÂK)÷ãB³¨Ifôã#ùƒÞ�¢mÿ¨‡ÆKߨ+ŠJ&Lò`2J»EÑC¡½zÞ¢òÒüᯋ„½µïÌ8G±92@-’q‚Vî5O5^ã»ï6–´ÃKy±XjQXïãô[„¼“1Ãk÷î\¯~^—n:ð;ùKcq\äÑÖ5éYNîs¿ÞykÖèêòúÚ³çšÑ*ÒRÚNë©g÷”´€®‚êþ8Š”–v1‹‰t–ÅM<&»œûÐOæ§ÊݶÆvdª9t†Ã%¦m.Îj½|BÄ·pÆÅ¡«bYî^ÒîSW¡¼®›Ø9vÓ”/¥ÃêäòæÐe —M"¢Ç¯¾ÊWÚ| +I†„@8ªHK‰NÄtQ™D«¡¥¬fÓ)uJз*£DÜu'¤QÙô<ÄCº”B‹"Læròv1¢¾:!hâ4¹‰HHn•Ižåo6yÖ +Aé¥ÌÐëŠ<'KG&쥿Ù}D{a’ŒÆVL#]…‹_M&uê?¹@É“›6G@LiYÊK.4ÿ{µÅ]M {ý.¡ÆKœ¬ï§!ýGpðyÐy2°ÔKK6@±²-¼€Tž*Š…Se³ÞS†z!9UüE[ÇKE"óÒ¸,zf~<6…(üŽ¢óûŒX<¨ÝˆXú<€<÷~ö(„¢çh1ÞòW乪«¼Wiy(~k¬ƒ¥lHœ*´Mø/“�$ŠG$Dn%Ò5È)k�˜ôù�…7^ +1„ȆHÇÈ™?Q +ð®MÊRT¥¨N/h¦Å@K-ZiÐVŽ:ÔæÐ-]@=úáÈß6F²0J´’7`œTpûùÅCƒþ@ _¾TnØOZ»Fø4Øa5@M`™D]ƒŒ ¦ ƒ‚Òp8šŸò–EÝ“2²iØОÚ[¥c•BŃòᵚq1@ã§Y°O›xn‡M�&/Öû«zm5ªw +þg¹~v$dÀðÉ{<q§ß¯oøâ=ùÏ;G‚‡ïïƒofŸÚ;õØúÏYþOЯ±D{èâÕ~Oý®óV6…P] ÿ~àP�H—÷d?<Á€á Ò'Ó³Ní{>Óoò:ôÒ}¿ôWõŽ¸‡Ú¸<ô•õ6<Œóí}ˆŒ é/Î#bMþÃ�`”wìÍ´R¿Â`{�ÛëœÝ;o¸ÒúyÁíàÔÉw4**ý¸3.©^öxg%¼Ú‡µ“ê¯üäQô,`㓦ÀØæ„öÚ ã“Q)LX1è°4qK¿‰¢sà_ÔÔ*Ó÷÷qÐg¦Õ:ësþpÞTm¢9°ÌÝéõ#UüYƒx£ÌǾËÈ¿@÷h²°ô`-‚¾õ¨F'ªýx èá7ÁèxàÇMÊdˆÌ›’)-Q=3ì´3`«ØuCõZeí›Rg+rÅ\IÌôÁG¡øŒ(áR<âØ…ÍX›“¢k6Èç|t/CݹƎ .W»-Tb= +—'ÜX±q*ŽŽj¨‡C-ajEbƒÏÆ®M…“«í )„ê[^¬…¨q PKJ´#;¨sE´²¢“-’ÂÎ3HC™6£Ð`ÁÏ[Ä%x‰‚‰Ì&¥z#yC0øå¬_b“@ËÈë5ÀÖG¶``167Öœ–¯¤¢£çÁO°q5âdŸ¢ßÐ0}¢Ö“”è>@GèÅè(ŒCÝ^ÏŸPH@D€)«Yº8íË¡ÓqÀàÆ›?|AL„"Eƒ¥Ê ‹�åNWˆÜ®ùFýøÍö Ûç�Ž£N๩‹P{¤ÀÛ°Æ|/n!wr (, ÒB²ÅH $" )IKM TD“i +ÕPͧÍTO{ŸÇ!(è¨Ô�䌎 ã¬2 +:CUBš †°§�~a ”& B¡ääá|x–Àzþá„"4AÀì«|N db)‰”@*vÌCû T™Z9 )v€…BKA ¡r£u¡t3%"PœPìÄ8õ#ø¬Š“üHú}é¦â;¾–ÄpÅž5Ïa§` 8ç½Ïç«0Ñ–‡# ºßðpq‰êP‡�ìƒhú´ZLlB‡§ÂfÀs,cç¼Yà«1ß³Pª ?Að>ŸÃ�?Œ0hÈ°¯¼öÆ[ï|ò+X‘bþϺy¹}|˜ä»±¡ýáë8q–—À(H¨H1R¥É”%ß?à/�<Æïì)V©J™–XjÅ—Çßl«vivÈü“ÎiSÅoé>Ö}Bø›À>,t\yŠWbªÉ¦(W¦Æ,Ì1×j묱V“{´Ú퀋®¸ä2€,Éð39WgÉ í�Lð-ÑjÖø]ßkû™}óšÓƒ8à@È¿ƒ]¢A"HÉ ´ðE. +âA‚L¾ ƒße>!9„‚Š;€ËbÅI°ª§Õë¨ZÎjuÐI P³Àc>0ìÌШÙnûrÜiçÚ²´T¬lBmèª{løËϵغÙó‘?™/:#º úcá[0¶‚¥°ÖÁnð~)óß?öÑm?—×ãd»´P¤TÕÂÎ窧¾†åD‹œ,Åoôäb³D§EçE_a|æÁÂCY;Øõ¯,”jžJ€«~§üÿ2+ÀD?þûŸôwõwž¾þ§¿øå�JQ{mnd�2ë.#N8åŒs®lñøvøÄ>?û7�P{‚êX9¥Ï%Ô¿@o™È·zŸL9£i1_³!Ä6Ò¤N»¡<|ª*˜\yUb½~<âËõx³ñ²:kª“•›¢L…šm4¸åôºŽÑÓQèþî ûàb÷ÝvØ]8Ó M‚WŠªÍXê°Í`e!yDášMj™åÔÖÓØ@i;[ØÛÆÁvŽvЫ碑AûxÛ« ? ÁŽ19!ÄqaN‰pF¸Ó¢]å¼$פ¸!ÑUÉ®›¨CŽ;rx È#…f«¦ý^–“zÈÐe‚vé:YšOl±<÷¢T-]fû?)C @�;o C+šÇ7�ݼàû¯C´—ü§üÿüÝó 4 ع!ì³ý|Ô2wÇÍÆùçá>ëw&ì”>©uþº÷s˜v%[þÄtR»qf€¨iô5ÊZ‰1æ?Þ{ýNtŠ¡É½'\çAcè¼B—é°Í¥A™ïA¯°u0Ikq3IãÿÁ-;¸ù¾áÏå[«6¼›0w¨ñõØ5w Ò¤Û«ö¾ŸY#côuÈWÖêƒ4=Ùb¢ÔtÕ"ØbäÔ›‡Wt\sy‡×E!žˆ«â©øgµWØϪ1ðñ3\½oqy4W ²”û‹çƒ”·xÙ5þ‡OÒrÇ=W ý–‡{‡N„Ò„Àì¨é¡Urãl”\â¹æxWжjeƒ¤»ÁÁ_Ö›‹ziØmª»m+@ê9þ–8¶‡°¤è³ÁåÔÖ8â¥ï5"ö™ŸÐ1VƒÐlÂ!áy?=êxïF$R]Öl‚ª«›‰cݲ+A;÷HÖ˜aRÂÕ§Ä)pɧt—~_�~²à£í—k�uÆ1úéãs+°ãìT<ú^öø:MÇ2t »ÄæqÍîó¦¢^+Â]DœšìÞ ÊTàÝ¥ƒèðB¬x!HaþeˆÇÂ(²²Î£®‹°>pxÀrÔKŸ{àÂh›DR'D#:Ù¢1ÉŽ‡dÙ£Y/Gñ5É1äŽËOR†¶�°í Aìb% +>ùÍ©)"ªQbTwYb‰æ*ñ–B«:$qÚ¼-Ȧßïö²K÷m-Ëo™cˆGĽf,êßÞسڂvŠ'ÔBÂîݙٽKçϨ‡˜žÿõ»ƒZ»t(6<4@%WJDýöOäMtåRFc p™\dá¿œ"šõzßÙWó±ï`–ìÕåÓ(;Y¬ÓQòpžU(—†©^j³/ýJ©æ>˜b"Á´r^œÖEÝlI¹/ƒM£dK +ÀÞ);ŒïÍXOìêóç+™mp¯n¶yx2ZàÄ»èÙÙýýöÂ؃ãÉ>4aÞ¨õäîNgÏ©Ìt‚¾äJ-X®ÿD¾ÓÒM¼r)#<ãdÀeæßÑÈB1M´£ßÿEzá7*ä˜ä”ý҉}|‹u:Ýk8§C.Þ,~˜[ôsÂö|Êþ �� \ No newline at end of file diff --git a/core/themes/olivero/fonts/metropolis/Metropolis-Regular.woff b/core/themes/olivero/fonts/metropolis/Metropolis-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..312202cf1f0e7c4b687be530d3bb8014d5f72db0 --- /dev/null +++ b/core/themes/olivero/fonts/metropolis/Metropolis-Regular.woff @@ -0,0 +1,59 @@ +wOFFOTTO��Dœ�����],������������������������CFF �� ��6·��BzÃçqGDEF��?Ä���z���¢ ö †GPOS��@@��O�� L—Ú¸0GSUB��D��� +��� +���OS/2��h���M���`gê¨bcmap��È��0��À)”head��$���1���6Ÿ¨¾hhea��H��� ���$Ðhmtx��X��ð��â¿á?cmaxp��������9P�name��¸����_Ÿ/Ëpost��ø������ ÿˆ���P�9��xc`d`�ᇋãùm¾203¿`�‚+¯¦ÁèÿÿÞ²$2r™˜@¢�Š}d���xÒ¬eg@áõï3¶m›÷Ù¶mcÛ3ÁØvÝFµÔnƒ:èØž`xgŸûì—äËÚÇ4É“k‰Vhß"_ÞÀQËcòŽL¨êbZ¬H]ÃQå7¸YÉyG]Õ9Rû³úOç‰2ˆr€\—‰„V)`´•N¾%Ô7GsZµÃ![H°Ù˲„ZʘRË2&W¹Nz³ìwèÅèºäÆÈizÔ³ïZü˜ÑÖ÷Úu¤È¦Õ²wYŒ¯«{U +ÓZÊ軕58ª$Ç9TŒRÎëê‚úNý©œ®YÉPbl\ ¶’™Éhk=±öyêYδ洤Õg¬àn6‘RË]&×$¤šEŒ®$‰Ä6k& FÖ%c&I©Gp¯e]½ƒ)b€Ä1]¢'óUžZ_ÉÄGòqس9ªûv>á6¡æ%²yF”iGœìÒv'E%ËKŒuÂ@5Éœ"‚ëDØûé±w%ÑùÜlc¢šb摤¦›2üÕkž„§Y¬íÀ$å0ŒQ“ÍïD¨8ÓŽg]óx¬¼†VÅë_ÓóÉΫ2׿œDˆË`’«æhb•‡ùkS[íeªµIrŠñ2—±¦sÍuÜÁ™d 0/©]ʳ¢Çà_n“®Ú÷U€ŠU_dÿ¤¼�BÛõQxc`d``–þoÌÀÀ2ñàÿ–D +`´��}áYxc`frfœÀÀÊÀÁÔÅÁÀÀà ¡ãDÍ€| °3 Pïp?%!féÿÆÌÒg&ƒä˜X™Ö)&�¯H U���x,Æ%b`�ÇÑß'sw÷µLÊ€ÈHа#à’¸'€A§# r26ý¿ô€c³áß=è†uîuË +ϺãŠ7ݳOD_"DZ_fŸº¾Êm}-úçõMžã0~ ›ÝphºeÛduGÀÔtÏ£éèK”ÌH_æÑÆôU^mU_ãÜ6õ ÞmOß$j§ßPnÃ0}Gù˜“2‰+c'VÈ‹Åq丕r¤Ýr?nǨ€šÖ¶éœ.•§'ƃ)e•Ó-ÝhÓ´¶gÒ;ÛØJ·×²ÜV©ˆ8ŽWw'÷ç«7ïè`¾)tP6ÒµÚÖ´¯]ÞP>·õ®7Ä|¾2飴þAT:Š‰˜Žg³É×ù7:÷ÖutQK:“…NéÒwtê‹›VÞ7Ë(Úíö–¦ŠÜšÞiÙ*µWÛ¬W¢¼ošvßŒÞ–Ä :8h”Pð <ñ7DŒ¦Œ2v‰s*dZÆ7<4Œ-jœArÏ1kø«Bêšµ[f);NÅáYá'¸Ç9£ïzG›ßfèSfÃ̱®Ã~èÃj—¸ü^UœôÈC~÷Ú˜ó³‚AŠGÈy€«f2šð7Å3~&ÿÚÿ†ÕœS–qÂjö)töRÆ—ðÁ;å±øå¦ûžÙ?»÷3_¼Î*ÂéÌk§=´Jv=«[d¯™ù뚆¿÷kFßò3”ÙœxÝ”s`åxEÏý½ÚvÓŒmÛ¶m۶׶ƶm»íØo±¬ýÿžXŸo�—³a"� ¸sí¥»€/w�Îñ?Q8×¹ËME)2pO’áGÅqUžÜâŸó_ò_ó ßòßóW¸/[–’¸ôˆ� %›4¤'9ÈInòS€¢”§"•¨F-êҌ洡-xÂE¡Ì<Tº1Ac/ñ2¯ñ:ïó!3™)Ìd1KYÆ*Ö³‰Ýìá ‡8Â#eâ±Ò�žøBE(AºÓ›žô¢?ýÊh&2–q¼É;¼ÅÛÌ`s™Í²™mla+€"\VFÖ€²*àO~F±ü•,à7øyÉ›k€~”¥‹ä!—üä¯�*H¡(Z>ò�.(Ä`ˆ%Œd"3Y)Fq $õ¨OCÞPNT>eSnPåU~eÇõ�hJi<‰##™ÎLæ0ŸÅ¬` ëåpÅ+Ié”MyTHEUR•UCÍÔAÝ4Ò2»Í9WFk‚µÖÚhÝ°½ì;ÖN´ÓÚíÜvQ{AÚ°'O�›ÜLåWÛNO6+@Q²”VY芨„ʨºj«¥ºªç3Û»ÌÉg¶G[k¬ ÖuÛØávŒàØÎeùÕ6@&ÑŒñªó<nãì]ü÷M÷e÷÷~pvw»à‹hÊ`Eð+ +…hŠiÖiƒ6i‡viöé¤NëªÀXÆ“Ùä5ùMASØ”ægLÑÿ‰nn<Ÿyeä’rp/ø9Zò'„¢ˆ!–¬?ObE(éLcYJ(24tf²í¨À:zÓžô§ýÀP&2ÚÑÝ;¼éèn83˜Ë,f³9JdÛØì¨ï0KHÁ›>¸è} b0Á!œD0’D&Çx,^ š1¤åÒñ*Ùx—ì¼GÞ ‘‡OÈ˧äã3 +2•ÂL§Ó(Í|J1gZ¤2Ë©ÊJª°‚ꬦ&k©Áê°‘Úl 1;hÊ.±&ì¤%ûhO2èÌQºrœ.SNeÿYƒùUPyiÍZ°—Vì'ž $ñ"IU°‚¡…9ÿ€P¥{ +‡üxc`f�ƒÿ"X��%üœ�x\TtãF8fff¦p¹ ÃQ8)*òž¢Yre)\ffffæöA™™™™¹ÇwÎl@¯‰íýû÷ÿ™Ùo@èG€ˆcתÀ÷žc'——++t¿‹^²y$l>7ŸJ›'õÛ6y_5¬ß¶Üm7mýgk]ÿiÿ9mTõèG¦å¼9aŒ‡©0ÂrHƒ½!J¡êàPh‚:á88.€ËภîƒGá9xÞ‚ÏàøþFÄ8Ç㜅Kq5î…`–c-Š›ÐÃ;ð< ÏÀ‹ðJ¼oÇûð|_Æ·ðCüÆ?q3î¤!4‘fÐ<ZB™´@%´‘!EN-t,LçÐåt-ÝL÷ÒCô½DÒ×ômç<Š§ðl^Ä+9“÷æ<.âõ\Çñ‰|ñþ ¾jVûÇ Ó÷Üý=ËsUS®i¤6yú5ÅA®a†Ê&?æ†i*7]{uþÙùÚœ¯ÍšÌ-”º…¦Z],>AÚP¬ ¥M™ô)“>ë¯Ó8¢Y¯ÝëC×2ü0îaP.ÚrÑ–G´•Â¤FZµ:sM…©b¶ãUQg…8«tÍ*=Q•o»VÔ˜¶o†ñMŽj±|£YÕõuBÔ‹®¾÷r†\ÜÐ ]°&f+_%í¤)bS¦ŠéWÉW VÿK6Gé**šlž% ¬È-m-³{e«Ö¤e9Òª)"s¤‰+¼«qäÔ‹¦â銾h}ÑúmRø@ødwª:ä´0Z&ÔeÂîÁºbmkK_Š-’bKOBm}'mrÒ.†ö¾|WN`)HÒÔ甸é)ö´‘K`×hÛ‰‰+uŸ5«V¥ée^2dYS w™zIÏ}¯ëöik2TnLù1Õ r½D›o[Á¬ƒ™-žµ&•Ñ¬†¶Y¹¾œUaÇÉÔd}¿T³z~©Õ¿=ãa̽¡lhƒÓá¸^‡·áwƒÓq.F…mx^‰·ãÝø~‹â¿4œÆÐLÊ¥ut(]@×ÑMt/=FOÑ+ô}DÒvîÏ#xÏ๼’ÓyO.àn`‹òÉ|)_Ï·ð}ü¿Ëñ×ü=ÿ¼›†¢€n*Ù6?oæmçþ ’ó°0yX ©^ÁmK w«{“¢-î²îh÷³w ¶iRÙ³¾Ø·ûr&œó×;>s]FÿFÒIFÉ$JQRŒ4ZJ’KR‰´RZ'm–>’¾¾‘öIUÒaé„t^º/5K¥çÒ¯Òk韤+1“>¤ &d™Dæ’Å$›’²’¬!I9©!GÉYr‰Ü"6Ò@œä¯ä_T¢ÞÔ@»Ðî4€†ÐH:žN¡³éšEóè2ºŠn¦Ûé§ô+ZNkèqz†^¡6Ú@´>¡?Ò_)Ò·²Nö– r7ÙW ”‡Ëñò$9Yž&Ï•—È™r®¼T^%o’·ËŸÈ_É{är¹:€û3”,ÄT»Ä3¹jèÁÊN¦úò®Bñ§£M¢»D¨{#$ìþ°îtÃIùÐp&âD;b6ÔL"Î]ÞÙ„RÕà‘j‰üMjÂçI&¡Õ°Ã¨ç¢§9Ý;“-à¹l$ªxOÈ"P„a{AÐå{÷–°ì+�íמ”Æm{†eš½Ë *†»ãÄX-ŽDS,v=ž¤Y‹Ë2LÅ–Ÿ,U—Ž'eªÖטîo{ñø¸IáÃSo=2£=F<…÷ÑH›êO]«1ÃGŸ|±ósSåç+JŠ-ËsŠ‹>úÚª–Ì#Ë÷.=jºvöÐèËÐߣP'1�´~aùÉœÊ ¼«F—7v³Ý½þØÞ‘|Ã|þ¹9aø)“è!þ$àé\4gªøçÜÚœ¸nS&÷ì7âôÍÉæé“àÚÁ³ÍŸª³>"3Ö.·æÏÏ©K0‚ឣßpNt>¨†r2úþóùHL†Q\¤`¤ˆÂDÉÞ< ôðÖGú¨ÃUPþõàÎo/"ª¢+Ô8–ÁÉ´»?äÙM§‰hºpjlÁøìy^kÙoèu‘á>Q%C[¹I}“‘””ßž]d©WIê´Qé1#Øý4¶–©†þ ‡;×jÞ·7Z@±×Õ\¸ N¹D¦Í(œbÉ.+Z|D½|‰œ›>®z¤)Š&rá‡íD{ôx˜bµÖÌåXãîG¶cO4 ÕßWô}^ú ú î„í”%ûŽL0~âþÌ dÁ¹ÖœG&øǯØU{Ó§ÍWæ³Á5ƒÉ@Lql(2"QDzZ +&~½ŒåÐBi3¸ñ‹q¬p!‡Þܸêf¼äÇ…âŽ=µ2ŽŠžžâÙ¦e÷œÜ |D;OóƒV½ÖOä0€IàŽo1L¼%í×Þp¶Ã8Uó…íÃA¹Ig1>?L@]CË¡;ÇAtfZÿFq‡â-3¹åî3/Ë⦻31¬.Íb ,f‰™uCiLÖ`’ûi¡XêŠ'a>`hò-i>ž]Ïê2,ø• {܃ÔÒ¹,ìÀ·¿oµÂ�* +Å‘OH_ +¸‚bboœ…³D ö9*¸úNàpýÊÚUçÔ!2ì±ÀÞå\‰Iæq±‚¶ºÝŠvå4Ž1ø¾ "L„‹wkŒjHˆ2ûǾ·Þ^šÔmú¬Ìщ ûÎ&˜&ƒ§XßU†?`†c¦@ZæȼI&ØÃ0Ô%Ñ]]Â\«”况eŽÇ—C"ˆ±ÅÂ¥æ” á)BR¡´^ëW‰ìƒõy+ò‹òÁ¢Í¯‡bÖ±¹’¿ƒ¡OH"…e\5hMÉ’ÙY¦B+á`qÅ[AkR¦°W‚P0gˆœ6f9ú‰1ÂOŒ'ð5Ï·Z +Ú˜v¦M‹¸ÎsØÀa2«`Æ°Š;X‘¾ìh{î4z_#ÑP©Ü·¿²¢x^nqQ~Þ¾¢*>bŸ1(µk÷ì ùuûÊÿìQ ‰ŸaÆø¥Þùâ—ñýû: >ög\j¨=yùÆõÓSÇŒ^8-Q…|®;ß™y×Xå!8]=ö– œÚ—2Ì`2(â¥Vpâp>¾Q~sþñÛø–þcbüï ûMo”: +Ê·Œhq�*Bÿ“芰%£‚‚¶k³Fïâ†B¶ÃÆM[·lTár›ÇxX}µÈ‚‡¯~uË®®·v<gÛíÝÚ|Ylw+¾ñŽ¨Ð†¯œpÊZ• ÿÿL°÷0‡RS½ëÑUïQ3YŒipy¿S÷Œ´ +%§° ;÷@AõÁåU5…åY*àKÏuôØù£ªp‚éÚZõð:Æý¥‡@†»/¥’æú6^›æ ׎sÏ —;ÜÇcq9(§9ˆn[5h4,â´ƒulñdDd³‘pÓ©‡Òút`/Ôÿ„Êç\ñ•í¡Óx6óÖluhÇ°,Ÿƒ6ÇážC¡¥…ArH+kÔêuß·á£6=X¶Þcz@ÞìXâÀoí—™™Æ<¾ûAj¤ +©5a gêZÅ—èl1šÔÑïp4^ñ±>f×!Ð#ÓeÕ5xìËtç[À“Un@/]zAi™uM‘ ëÀõž0¬Ô¾Ðâ’íÏëˆpÍ5Íߪƒ™ÑÖì9¼®ÊdøµUÖ +Í借¶ZÿÍ@=$Æ��ý]PÛÝûÔ¶í$c{&¶í¤¼EûñæUýo® +æSíj¨%àU¯$Äu°Ð[^'Ì"ž{Û,&âm¢Ä¼ã]âÞó¾XÂRúˆe,'A’”Iûħ¬`¥ÏXås_p“Õ¬ñ¥¯|M†µdÉ‘§à[ßp‹"·YÇ+Ö³Áw¾÷ýJÉÏlò£ŸØL™ +uÔûÅo~·š-lµÆZØÆvÒhˆ†i2ÂNšÒB+mÆŒÓNwÙÅn“¦èd_L›a/]fé¦Çœyz-X´Ä>ö[¶Âr>ú`Ð:ë9d‡mâˆ6sŸ£³ÅVÛâ8ÃŒ0ʘívð€qr‚÷œä”vÙÍi{˜°Gœ±×~Î2ÉÓÌ8à CsŽóŽ8ê¸c\à"³N0ç$—œâ‡ÓÎ8ëœ?üíOùÇ¿þã¸Å�0x¿1Û6Êl£ u¶mÛ6ÊlÛ¶m¦Ù|ofï©HMÒ’Žôd #™ÈL*Ñ“Þd!4G“‚œBÑž¬¤¤*iJE*ˆL ÉéH:Ñ™ô£^¼¯ÄkñF¼Eˆw´Àˆ÷´¤5IYÉj‘d£–äÂÑ‹&TÂÆ3†¡Œb$ƒËpÆ1šaâ£ø$ÊIÙÁQnòRh‘FäõEç¿v:#“É´2‡,!»Ë‘r´\(ÿÇð›ò™r*‹*®*«úªŸš¯v«ãê¡ú¬s躸®®êžzˆž®7ê‡ú‰þn”Ia*š.fžYj¶›3æ±ùn¥Mf³ÙR¶šg[Økö‰+⪹>n§;ì.ºß>³Ïå‹úÚ~ Ÿä—ùÓþ’¿ë_BÒ9 ÂÈ°.l ‡Âýð-ÚX!VucË84NŒs⪸/^Š·â¥Ün +OUÒ6éE‘«ÜÙ¶m~˜mÛ¶m{élÛ¶m[yóöý8w~ +@È!*S„ÓÂW±®ØC(Žç‰¯$ ”¶Iï¥orrÊŽ\Z®'w“ûËãåSò%½RAé¦Vn+/”O )€ 5ÈJ‚Þ`˜\p�œ÷`Ì;ÃÞp(\÷çð äj‚JÔtjµ‚zF}«eÔªi-µÙÚbmvB{¦½Õu Õ‡è3õ³()ŠG:Š¢â¨êÆ¢ÝèŽÁö᜸:®§â¹x%Þ‰Ïâø1þjˆ1ÒyzFgc±±Á8d$zÒyê{V{Žyo?ïfŸêëé›â7ýƒÌˆ™ß¬mö5'™+̓æ;Ëku°úX'll§²³Ú5í6ö�û’CüN g’sÚyà|! l¤©DZ‘adÙAv“}ä 9BŽ“Säl LàB0op@p_ðaðc(u¨|¨qhxheèhès8{øCdtdKäDä(¤iiZ†V¢uikÚ‰¦“ézŠ>§£1<¯†mc~Ïa¶pÿ|w[Ö¸«Ýſ賓O.2æ2v%ù—_W#~öG¯Ïgc +|ËZ”nr²ÏÃN®)Ãb_q„ŠŸlÎó¼=ÙµhÊb^WøýQ<ú;.Íb?穈¢<ûÙ{2–qñ”<Ïç”,ïëm-:5ßûšþoÅþ¢Ó=àšJ¶Àa²ñ&8«yOî^ž'±{WXÖ†…*`Ö]uí +Š"Áº«îSQD\TÄÞ{¤ +X0H”@"¢®«èª«[ÏÍN‚ß™àþû÷ƒäÎœ9çÌ™¹gN›@‹ÙR‡¨wª“c¤ÙsÔC£„_ùªŠ,aèI•f#µ¹¹ÓT¾²™@‚c•LÇк2Œjä}¶R_jGi C@À¦¶£)Ô9Vqà»:7H, b-œêD` c»7 áìºØVÍ pñ#Ã7…NÚ£¶Ò]ôOÇÖ@òó/)ÔMþ³H|cÛÙEZN{‘rÖMˆ7,^Fì52‘Ä?B¸4Ä gñ1N¾)„@Z}Wœç³äì‚”Ùò¤-T´ö¦b7`uä!ÖÏ!Tn²©òQeíNªX•O’mR¥ýœÚÞÊ1Xx®z=Hg=|ˆŠåÛE Ê¢`ÕšS›Ll‚&·WxgkÿxåO‘K´ï|LL©cå*»"Á˜«®*˜4jTĤAz6—Y$H†åêTs›È¿ · ÜMbëµ_ÐëiV&ɳŠ/á×ùº×‹;ANW`˜æ–g…yeÔ¦)ýï©Í….˜S€¶¬;^®NÓNý´µæBii ¨0â¸dR ËcU¾rÿŠŽ aÙÄ ßÀ•yij^-ñ±|*ß“mø3_yF$ŒÅŠ«Æ½âŒzÿàQï›X*þÁÃT8ÅqJ€Þ'J°:_5‡<¬s³Zðí¯‡x|ÿž¬›T©_öÇ`ß' ©C’•6²nH,ó«{xÇ ä2ô%ð…cÄ.I+§¶¬â\«qy)×”¬3•ãrha‘“_]’c0XÕ+ã K.¢Z[})Ÿ¯¸ˆ <eÒ4áÔ»7.î° ÈôŒX¸»“¯á²±ÂÝi¢Zó&±*0êŒ ¢Îvi™³‡‰U?¬›ýÈ@aþ/*œˆ°?ZÑöi1q敇1£Ü iJlƒ%T§NÁ¢§éÄîZlƒÕšcÔêŽÁ0>Ÿ&̽^“BÏk9ÅX3~<ÙP¯æ}<V‹ëvZvÖ•Ñý0 aŽíá÷ëúYœ1?Y‰Ó9ü}¾ŒÀvŽò¦‡3m[Ó(¸:JS¨½Ç]‚Y‡ÂT~Ìlƒ}^êØ+ç“O˜K¢éŒ&8š”(øü-èôò4û4µgèp¯Ñ£./Ð….=‹ªñФheѤæ8™ÖYÀ7C}¤4ܦоR:Eñy|3IqôÁ6-'Æýò"1ÎÜMòQö7°WþCjÈœN,i¾†²&öã’X}ŠÆ4Ä¡À¥™P)Á5èL‚YÍtCÈöaÏÔ¦ +~êÚË;æŒÀ!Æ@QÇ“-¨øùl·/†íòbÁþâfØc¼ç£ÒœÇà›"Ö(ò± ŸÿOê5’bÍ$fŠ’ý6t<)MÃñô}-Nb8î\éynxÜ8…±0p$pŠDŠ§½5ÅMzÔk[Ó$š4•Àþñät½Èûåu\wþS@Àݪ„›HgÇ>'‰f‡zWÞ†t[B÷ú朢¬|ï|¡Ý÷[Ó +Š{¹‡Š'mäZILö^觿*\ |È E·³}KGé{·ž¨Ä“¹Å”’û«<¾¡/g> ¹£·dë¥a¤¸0nÖUû`ï-D__x·B‡ØY)4|ß©Éz¨—{—Æ9T;‡ê4Iô®v_í×É(Çw©üÙ4Âò'ÔÎãT¡v–5ú°gí§5„éå +<™¬·ýœ„>±¸@7è +Íà3è¨h¿ Òl¸B¬îØ“TW(;9ý'Òi²aDùWÂÕJë†ÇéS+êÌIDÄE‚LR#îD•M½Õû +Iüæ4© \¼«¶ ðFêNj«çÞԉ˽^ìkÄ«Ù7V=Ò²ßqÝéèØYQzöÉÏãCÿê&Ìœ¶4ÈCóý"ƒüU7âlM@ØÇNðìM\˜lÒ Ê_²Àä/h%ÿâVò´’9dYˆßvè‹*cU6ð„~öh$ò(TúP|,M×·èC2ºk™Ä™Ó¡úí™G K½Žp—ð1Û›˜÷9A°ô±Ô¦ëEoY¦¿YÓb8Ý}Z€ŽÉUOÿÐj–gTQųsÔÝr†ªœ€l‚t6'çÓ×¨× ðänuà y¢¹Ÿ¡vÛ.õü�ZM*Ê{¯ šuTnœØž¬£pm4‰©×¶'ÉÄ +t'ÕNeÆ>Ú#ÅS‹±€qÎcNU沄ªì^ïê$NøG•’ÏûG•Û“·åäWSt¬mxœÛS4.‚ï,¢U¶¢íìƒõ/ÖéG¦÷yºUñ«c/¢z±vïöv¥èv«Â¨Z“L00ÀùÿÌ ¢ÅmlÛd Ž¢FŸÓ¿6½ö[Áƒ•67d%že»ìÏXšüÏ ¡Ó‚¬YiV8è@Wy;Ú;Ú‚�ºˆXèٿ׈Q²çxÂVážU£âau.}$YÄ-°Ü]Þd9´±+Ûùè<Ý;’ Ÿ”e¤£ÃŽlrôœM¡´u@º¨ØvŠÍSBgüÀÞ°Økág pDxb?ÀAsŒ@¶»?ÅÇŽÑd ŠãO3gPtýH “Æ“u(†b@dÝŽG;ÐCÀZ§‹ (‹“öý2ò“ÃŽí,ª(–÷+‹Ý#ÉÇ&¬Çu#cÉ&B͸0Ÿ2 sØÃ:T tÙæ•„¥#ÃH²šÂyùP|Ê=gÒÝQ=H()-»‡¥¨<y”¢gìÊš`É21!h(A‹‡ƒ¹p-†š¢F" ¼î9R@°Vå"æ¹ÀxO*æÚ G¢•†t‚í§ù@–9Ù—rz9|?aýFŽ¤~¨$“è-©Eñfñ‘|¡‹$Ö%âõËDåꆪü¢k +ò(‚ꆪÅÚ„UÁ„(‚iÎçBg[ĘAšÅ<?¸&?•Ä¼ü™D=^×Ôa/š`g-[ÄWã—Î;|=׊·¯çë½d€elj˜mèM±íMŠY#Ä\ŠKÀn +ïÂã×·GÝ9A¯S±Êæ{šôŸ6*Jwgn q[p¾3íiÛÊ hV÷(§â²Þ?ûÑä=Öý¤A¬êLì}í]¤>cÏÝÑ‹Wn•]©v–@u3Ôb•×—Ãûê4ã(øƹ™q׎R8á§W:‚ÍoÔbÎ<Úú{ª„{‰ƒßDXÇì˜h6zš´ÙÏÜ,ìç‘l+,Èk¡v²”ŽñúîÓe[JŽ^½Úâÿ·F^A˜ÇïÌÜ—ë‡Yh7~ù•ÂGq¶¡4ò[°ÄN¨ÛáKõ4Û‚Q"ö½£y›X.7¹«(µÀohÅ´èùM'Üê8eÉÞÅ{îk1è›ÃËÇŽkÑcÚá@ÐÜŸq,´EîÔˆcCñÊƳ-kϺüÉ\ tü\a ¸½GQ\ô~ö©í—Vh.÷«—òþí˜r°O{= +e}± ¥âáÆiy‰<@B©æs©üÔ0ΗWqw+I�çï§:ñ´]Å%Ýeî¢ëãñ¢…Š—m.¶I#Uâé;¸Ç—G1_µxz<ø²|…ó<Íò£2„0£ýprÀÂ6ô‘½gÒ#]èdîõx±’^üŸ½¢ú{¸eWŸ) G+EL¥â‡ÏIOûyi.íˆøa.ßö Ž‰µ8h^Í*•PJ·ÙÏ·¡‘Ì¿îÞúŒ·"ßÚ/!8{ã²gÀˆá ‘'ãñéd?à z–<E‚¨¢—•J¹íf)+íJæ‘c“ršÏ¥Ÿ©|oÐw¤Û“7mÞ®[Ÿøíª„E4=y÷Î}79º7A!®!ç‰øV£êjþkob²×¶¡ìzF¬i„–ÆÙqn@x!ú%DÈO¤s‡ËÜ·:q§N¬>[(ˆ/3ÌJýÚÃl¸¯~ˆW@=Ò,G‚hd˜c¤nyIkäEršÔK-¾ù’Š5û0Ô¸ˆ ãMzç¢qN¤wònnÄÇɬ9Ç|‡˜÷!ü"Â8æûjŠ‰”–æ¡Ê䟥Cû2ŒËX¤ßvx÷¡ÌCs2›µrþlí´}óOèÀË‹³za@^fÃ>Š‹[7阌%\µX¿U–PØãçÞNS .:m-_ΰC +¹DÍîX÷Si.ÑÚÂ$Çôr€[l,ô.@¿uLâ}´ÖóêRÍ»ÐX§{"-ÓÚ_qâ'Ëð5:Â8 +†íH-¿@×ØØASÏzRwœä´‹RëúóýÍ!”f9$ñÑr*ZÎâÌöïUâõ%ɼÄų¦ç6Ìhs]K{9ŽIâ˽D|_ItræØ0i/©¤mP˜‡$¢i“Cä´¸†.4ËO"q¬#ûÀ,ReVV¹—þÓ|bÛ8§+Z‰ƒpÅýRM«ÌüˆÕT¹ó£¥‚Q,BZ…çéM%YL]5ìUÁ¬„LÙ_’û]=h:FðUçvÈeêG— lÂ8²Jåÿbí_X„÷>5 VoœtÙÇcø˜YõbNÕ.T KqᣊœY´áCÕ2æåõíXrÊCgÒãQ±kïèÈyõ½Þ¯¤W¢ÒÐHÕrøÇ“j3ôɯ2‹?—PÑÊá?FS¸Ú¸|¤µœ!œölFµ¯ê-oRÉ!“ù2YKÐض!ø0DÇ‚6$ÞDo%Œ˜@O;fµ!ÙÎlÍ* ×Ð�/ð¤í:ñkð½»;&;Û#äû9æ!>\gЗ«ZëNÈ2Ñ^ õ–p£ÛMÂã`9E%-<äšûµptê¸=ádØá‘W'êGøòˆ?ýè)aÞåÜø9èmNÞ[p{j¶NL·»³� >yúò·s§WÅÓ±-,KXxjå•,-„²©Ò̯S3æêad ¾Þ=Ië¼²Õi²¹pÎý‹üoù¾„{aƬú—-øe܆W8¦\§ÜÔRM”¶äÓ´»×xŸÉºª‰ýóºzøÑWOò«³õÞYOÆ×}ôss©=Ò½•Ç •KZHþ¬ú(ðoüCÍ°_½%¯þx§ûŠ ?‹f¢t:=ã8ó¨“ö’¡O“<Õbu;Êö›Õ˜å·C1Rûo)2ò':ñê‚‹¹J¡—Üg;Áç/3é$†M¶Û©)µfœ0m%ÍúHâÕãT¬^E4lw1©5oÌ_"«þr²¯o4ˆ\%š8€âcP™íX0€².&Za†eft¿èoÛ:fqXAX»¼f,`…C;Éy÷û’ˆïfӼ貅·Ö¶àA|ü˶ÊÒçZÍà†ÊÓZ“ÛcìrVžcz›¢º_[¥åª‚ñCGEŒ¤bTÝ C~<Eòhÿìkf¦éã×Z§aÇñ’RoT�AYŠª$#ýŽüLåG`s¾h”ƒÐo7xÄËNhDÈ"Í¥ïÈÌBÁH‘ê)Š•§:™½ÊÃãÌÆÎfnÍLÙ»»…i viìÕºÅaqt)•GËiAŸ½gRðÁ&ßa~7šÙ1‡Ä#-[•ùûò_nÚ.ÃD´Œ×r¼{qùnÎC‘@ §¥�¶0é‹=¬)û\(VA”;´fÎ~[á‰ý?RW*.ÀÍ°Z³S7çDrä~’äOÆ`ôhœu’â\ð_@Zå k0€ÌÂ�©Ø#µhíJ«Åš9`VÈ3È%Œ -? !ð9[…’%vÓ~›ž »Ãò6qlr¿¯‚¹ršÐ_…i†ÝŸùÉþØÑl$0Ý}8ìåæè +Ó¥á$‘ïÂiÛ61 +ÎL l°c’dÂÔbÓGÑD¾p”§`ö¤¬ÄþŠÎÃѽ£(òi±ŒNw„!O¼G<!¯PÊ?¸³‰c`^¿³l,ëc± ál‹béÂ3ô€èÎbÍ]Y@gŠÏÙ(ÑÈúæé!î©ŽÉ»”Ð{m]ߌC0¥ƒ.ë/(D’c“¢d5Ô«:ÓsTQ wQ¸ý§ £‘Ù\‡””S'lùl⇋C3¡˜‡ Ez(e3í¯¶»ût~b½¶OÊ¡31·‚¡!^d"AgÏ£É3]ý¾¬9?×g0æšâ¹•Šgº ’(âœK¦]"C î^õzÙeO`y(â>ǽ3”x#„!‹ÉäÍ. ëNÜ–OŒjÃYÊKö#‰o£q$É©6É™ÂM®6•ò/¨6fT›S jƒL+ÛѾjѼ•ˆ•¬&v@>¨<HòSÉ3‹gòÁ‚ʃËÈÇw° +Å@_I>ŠM¾‹3¹À¹`ºš˜\` lŠ°#v‘(Â)û!”ýb)±Ê=Ñ¥¼M”Àt€0á“y³/AU˜Îf�>áüAkÚq¼Àë)4†¦Ðô k̼˜W?Dlª×°l…�Ìßܱ>9ZÅ|˜úT(VàMVãò*ò«2Ç]žWÉ~UA�¯–»¾»VùRÿê`eŸ2ßq^aºÂɬ—z<¨˜Ðø´žôè`fšÀDlûà2ÜàòÁ僋ÉMnÅ«ß—Qø¶¯kAý‹OîÐôâ{SƼgZø¤sûO«Ac‡ÕåE %9çª<žÞ;ØgØ”î›õþ›…ÁÔHîr/ÆËgTdçþŠ'ë#Æ #®ÿ8–ÿöhVl¼M�¯ðÞY¦±Z¦XcòþÍÔNŽè©b¯ìSF +€)wºIB>é�µfBb܃ÀJÅ«.(¢Á÷8ÅlýÛsh -ÛYØ¿GGÅ.š©O†ÔVÚ=UIìÏó…—s3J<^—÷î0¢Ë ‘çŠ#õã„QE'ÿ‰%¡ÔMŠR+¼EžO1ò2}D´~‡þîðÉÝ«s£/ë.ßrÆŸìïÁz0 ëË¢Y¤™u† hûË;¡ek¦_e'Rç1æßãôUéƼ=ê„uäÝN¯™È@%ò%èÜŸ« Çæ*”ØgøË®jM4¾†ÔrXoÂ;† +ܲZÅß ˆ/>1Cã§Ão8¢ß˜ÝÎ}¬)+Ø¿ðíª†3ÕE‘–¹:ñ·þ†öÕ2WP‚6åÉmÜÒëüCí½òëOŸÞ?̧wLÀDduñÍ5×¾Ï6}¯¿ÿÝ»‰´~¾ãºèp'L0‘oÆ?;Qȓƶ;0‘µüÚ՘Îß½¤_fû0wöɈÉÇ.MÕM &ä–Î~ìÖL}!"ý 3Ò;Ñý˯ªn>üíu‘_Û}úAñcûxhØšŠœÕ[ TïcÙ[n"¥íLI½d¸¸þ’þÔ¢csÏĦ¬Û½5959uCZÒ¶¯2bvNO?Ÿ~q癌”m[ÒÖ¦®M]¹5iëW±sçÎZäºõÒ΋—´©†”„CRbôΘѺYçû*#iÛÊõk×&nIHYw&ö¢á|üôøÃW±Ië6$$'&'î^Ÿ²ÍõLƱc§º®6ÄDkw&¥¡{Nð·+ÖËJøÅ_z¢b¿ÛŠ1¤ÓØ»ÁÂßå¿)¡ ,”Ždî?vtÉþùüÇÅs3—ÅÓÃ`â9¬QÂL&•Ü-‹(9""b䈂ˆ»z]Ÿ.Pz—*á3¹ÃjïÝè$±†À>±nÕà*NWÖB3ͶĻ´\ð‘‡Ptý~!Á§H ?‹s«—ŽðÃ`pïA#ˆòUûäÕBw•øäª#XâÈò@pq{.ÝÐ\Ä|ð8BÅŒC,ZŠTÅÙWu*Í!<˜ÃoBÌMˆSœ—ñèƒ&í¾)°Æ%„yâGZ$€J5œ¡”‚'~ˆŠ#Uàa1ót¶ÁSÅ—ì\n"ÊÂZ£ào 6›ÜÀ\ºY¡)/¬ŽF¹ð™ +¬ùIûë€&¶<aD¤.wœPp%ï¢ÙãqnhÐȬq’^üソ¥“i’ââ®Xÿ—®VçÍË\Ú˸´/Øg*ÖxÑ�¯^ÚÏk½@|?çn¾n\®1elŒŸGÿqÅ7Ëj q +¾¸U²?lT˜êží hjãˆÆÞ«²› ¯GîUƒsÁ×´�šó×']a?) &5fjÌ +®0ðQaÆ°6FÅwòKåw¬$¿4Ú_ª4÷)´.SÂÏÌKÚ–»»gÑþífh+Ü^tjü]Nú¡S·µ¡`ÍÌ„O÷èÖ!R·ø¨‰mµ¬•zÄÂyƒuájÓázÖZÝîÚè¯ã<CÊ”yȺ§_ËùMÕÆÇMºBõà…Gïê¡•ú÷¨lÖ-]·.R€O—g.ùB»‘µFš•¯?¨ÝŒñš×¢¥¬ñr橹«¬aj 7˜¯m1øÞ`‚aþ]eŽn{ÎaàëXÌ|Uv±þVÜz¨„ÌWº€7@ +PþZP +AtÓ. LËù1Oæ¯e~ÜvbW÷5Ìy¨|ŠÔ …Ffè~Zð÷O¦å¤˜Ÿ*X£RtŽ´¬0#LÁ”: ¬ƒIQdÛ©,ƒdÛirìTi†8aò'Lža²Ï@ AâE¤"Íjê–Š@·*rEöUBtÞzŒM\Oœ°<û4/žøªaÏ«È9X¦„‰ˆæì]å½Fy|l´. +¸>W%t´õ•fáªà7»ƒcÕÇ\ñ< &4¿Q©ŽëÒr7?öNJ1©p$–ãˆ‹Ó d8éÄ©HhXG½†ý±ÇòoV®i{0Vþ +¤‘qâܲs)¿<,o2JcsçÍ™±4zm¹ƒú⺳±G¾qƒòr§^?œÜBœyÓG-FŽT³¦‹º0%“´Lú™)¡éBøß�ËmµxøVrÑ‘Ë—‘ÈÞÂ¥%VËAÝCís0ÄZ§Õ|d²5‹ã7 jèþ¹ù´gë`º0)wîÕ©Ù7›G\uÆ+Åõ¦Oš ^Þ´ì“ÊÉÐäÛ¦¶+âô¤k‚š‡ÝŸñÌà:ÂrG ív<xò›m•T˜•SžªcÕþûcŽj!Â!A’úù¢ì¹£µ¡Q=Öê4'ïce÷zÞWä¡ K%¦ìXùk´ÙÕw»6¦¥i÷}¿oË^<3²;ªº«/ËþðXÎc1©3k1Vß! Fõí²ïââ´ ›6¯Òù¼T±6YàѺzðß2gRÍ<¼i +6B¾éÞ€Ãd#›ê7Åå5îÄ„¦ën Æ9}²º{0±g'¦Ó3À€[,X=ò+a†¼/E37ÁÈ�ãC#ü…¹ìGâ2[k¼…˜Já[ö·À¾€iÞl~«Ä«LÉÏ2PÃ4#›ö©Ö„ÃõJ–b”r¦¬–X8Dø±îá,Üá®j@1ÊS”F¸.åPM+y_œâ‘ÜT)O‘gKcóYKþ-##¡eC;,`<°•Ï< ¥€<¸˜*M¨À°» \9he+ØçÈV°mh€Ã!¸ÚœJîŒ,«ÎøLÞ®¨’'*«žIòDˆJÔvþª–›±@;~„œBÄ‘“ŸI&µ½Êø*•Å +!j ›ùx±y*Q£ŸÀÈçÕ©|?ÙB5Ðq/åuÄù;¨x%ÿ,çù&‚€iãÇè°#7³÷”6ÑÍÒfª‘÷ì¥ü—©œd¢’üÇI>u1l5d¼ÿH"7vßDí®HÈ›H Ìõ4ôΊ*âÐq»ršß‡£9vF|l}™«ô¢|_Nµ~ùaaÊ—Añ=Xë= bÀÿ¢±Õkå_²VÃ"§-<péàþ?Co}ÀÖU#„ËK§œâÁ\Ѻ}ÂZé1¯m[1ìõ½¢sÙguÈ?rç¥Ù·<žÕYø¢Ù èϦ²86†…±X6#d§™Û¤áS²Lï,?ÖYOó^£÷L +öíê¡ÙŸhŒ‰µýËèvÑ|ÀÁfñ¢ÍõÄTàzúúñÒ£wZŒ<¶`ìÜÉ-Ë&æEº¾=_qù…öéÐÝubN»ÁCzŽÛ;é|„^¼Ø:jÜÈ^ZÖä•?hž”Ÿ-Á{™•Ï{l=VãsÏÄD†ÅÌíþ•~fVü…3ڒ˧qøb¸½Bò‘]sçÚuói}vh^Ø£~®&EÎöÐ,°5.V@æ-h|ëã¥[6o,¯zß²-eÉ*&öðÆ-QÕyƒ'w° (U‚Â_*µ£ùîekRˆyDì&N-{JwTh.E˜nl¾P¦b}á°¢Ò8Z²#Ñã…sÏ3XvíétRLoGŒÙ䧘Ö*nÃU%ÌÀ{§üü}.èýˆæÚñÙˆðÓ ¢€ñy˜ƒñÊÊÂXÕlŸ8zƒÜž@5lµüªNq»€ \žTcÿÒÙÃ^(ÕSˆ^†8Måûð¹â¶ÜNyë‰øZ~Qˆ3ÞÆþ‹4ì?ºK·‹”àÇü¥GSöfêçäËiÐކʱ6àê´;è'ïÉO31'ó’ŸP¶ñòý3¤ÌyBÎÂå†ú_ž³xB’²°:¦¬Å*qÒa¢àMæ'™mC±ž˜*§¥B¯Ôש*67õÿ# …�€ �žö²mÛ¶mÛ¶m[Ù¶mÛ¶íoäf¢¤^Yä_Ìh3bƸý~ŒësfÇŒyö̘±"%ü‘2Ñ¡tHˆ)ŧŒ”•òQ*NÕ¨.5¢¶Ô™zÒ ZG;é0¢ûô~2q|NÆ)9#äŠ\“ëqîÌcx2oáó|…ïóþÄA’MÊJci!í¤‹ô’þ2D&ÈlY$Ëe¿“«rKÞÊ' ‘ŸòW¡±4±¦Ð4šIsk ¦ ´·Ö1:Qgèr]§[ô^Ðëú^¿é‹k‰,µe´V×YGëkÃm…m´í¶ßŽÚ »kì½XˆEÚ?(¢!#%2# +£4* ê¡%: zc +æa1V`-¶böáNâ,®â6â ¾#¿=¶'ð$žÖ³{/è%½ª×ò†ÞÔ[{ïæ}ˆð±>Ñçø_ã›|‡ïñƒ~ÌOù¿âÿ[6à8Ž,ßÞjz“þ+[¾MM@[oÆÌÌlKf¶effeeffff[NÌÌöÆu‚03Z:êÙê¹»¼Y¹ÈÃ÷}[5ñ¹øQü*JÄ¿…ü%`–éŸÊ²–D%YEÂœîA„ ÂTiFÑ„¦4˪ÓJi1¶…ðhV!®î¿RH’šV±ƒiY¯u£“ˆm¯ /=^Ru;KÌ$ÖXð8l5ù•h(õ?‹Lpònél¯‰â»”PÉz½ñÐÕ6CùŽ}Ìï‰î0UÕT}D*é>|=jÌ9Iÿ&Ï{º¸™Ììê´gñ›Þ§¸ÒÂdÂyQÀüÇuwÚºD<Ý[ôèÇ0xðA¿Ò¸Nþ¬^±VÌ¢f2€3ÇOœ=qbÖŒŒôÙ3§Ÿ³á5am$šÈ`©BÞ‹Ç_r¿ŒðèKNm9`ƘvKíó+Œ‹Û÷>†yK|üuK‚³´-Ál/ËÎmì—vWéÍ#XÁLÙS'ÍŸž2iÿÉT{ïñ·¯f]c,)]K¨unâÞ÷/_<yûü•ùÓ®Zù·üÝŽöWnÓ¯NÒÅIêo“mÜ->ûVâùÌ܉Ó3ã{ÖZ>cÞŒÔÏ!\S£r“Ÿ”?÷Ol^RÕÁôp +ÓÃ==(ƒ8³ÊP/3X^U¤æò†?žª_½Nm¾Ö9é‰~<–\7A×U«ÔH±¡ÈУÔ\UWL!â^ÓÝkFc¡»óSø¿Dðcç¦pÚº7ƒÒ½)ܶÎM[ÔB¢¼¾ÄÄtÎ>2™ÙVÄP+Ñ~ñHBüZ¿Y(ú•ëbÉÒùË#áI‘£yp +ùW8G‹ÜfÂiä\4î»»’œZ·¡{ÑŽ–›DÓó^œèÕæ‰ÖÊv(r*™¡l+!l`&÷ã¡'Ó¡_P•[ÏEd¼D©"£Ÿ@TuˆªQ¨¦ å&²1•Ö§J,'Ob™#¥ª¨Cn?ëÖÈó))#G¦`¡;ˬr^––œ'öÍS]¶¯]7õ@Ÿöó¦ŽOylêÙÇâC%3íçœ;uî9^)ž),¡ª¨ *§ª!:5“Pv¢làè3ŽŠ~ó¢¢Ï"„䬖Sº„ƒEjù.Bl¡ù¬füm3Áé´^½¬ÿq>/]Ÿ…Ë÷ÎIÄÌ´SoØꋸXUÛ늬Zõô_ìáo°¹zß3W±¹zOl¿½ÿÇˉ'"GÒÓ#‘ô¡ûëmïgñB ?ËMÁ;oÁ>òÿÈðlœ`¤ Ô^]h”}Ïy^½£¢Fe¡KÜr†S®M€OýJ’×p¢DÉêy+¨4º³7QÓkýÓÖ§Á?yA‡Ò{ ›h£´áwN²°©%t¾~Óp¦°[-VøéGÕEÏ5~:UåH—!¯Ã^š&„yÉyá? +~8wé}˜ÑŒ7{0úìÚu?“²¡¼‹ +¾D¦l{u@Q^îî#§,,–!¹A²sûKdŸºI©Óqdah¯E“’ðÚ‚y3§§H„®!üî‘àjˆ]Ï“E’[Õ_×eI˜e¦—‹#§éÇ~ø’<´`&w?`¦g©§–`£ÒN e1*ø˜“K]½ñ‘íÜmïÞ LÌLIݲu¾µ¸—.o>÷?—2\i„÷”|1ÚC¸2ä:á$ù<@ß›Òl*ëZ˜Õe ²ƒ¤cKâqb&'¯Ð.œFS +_}Ì`oäýÖoÙ/:÷óó¡ÞW}©¼)We…àLãKg7áZœÄ {å± ·þDÂÅËijz”ùñÏ‚¢’Ò‚¤JBÙ±.È9~<GöI¼tí4ò•©.¬¡5G"±>Y>Ü9&áp¼ýð¡ ~È Á-Û£ÑgF4„Þ OÄ©ììS`ô ½É)ü€¨þø1p‡x_uåE¥»ˆ{å ç?Aèr!²¥©²@bùÀŽ<Á…\“CçéÀXÆ-½OÞº|“gغXð}ò qq tÂÂÅÜrãªSÞ^Iü ÿæÛ�x ĵA�EÑû¡C:´ÁÝul\fÀcm<U”¢U¼‹'ÌÀ(<;0¦CŠ!¦1Fõqæå"Ër•yÀ±<å\^q#ïx’/¼É¾¥K5<ød€Œ“?dd’¬Ó”múò—?Ì&mZÎÚ¬\´E¹i›cÒ°+†��xu“ü#K„«{âä¶mÛ¾gÛ¶mÛ¶mÛ¶mÛ¶æÕÔíù’úõ·5=™îÝÞ ‚nX6c±eVA 9�ˆ€Á¶Þt§íÐbÛ wÚ¶ÝzÛÑ€kp*ÈçG -Ð}0Žt ˜†]ìU6_,»€‚V(1¶QÎÑmÈoâÁø‹Áð7VÓnžµÛ±z/V5ì«K/J'ŠKOA5 ~Š—Ç7⻨ó‰?ÖÝyz‘ÙÐb¾õ§ñäº>¯»Sÿ~^wÕÙ¹<~ïIZ ÿãɤEõˆÇ¥¹ä×A(<WtÑ�°Ê“Üùu]´£{¯·óMÒ"N~:}[wÊ÷ñn<8¼ÀN6xN<g‘;_êŒåžÊ½�C ÍHyFtBôƒÅý=³>â�¿ž<@\!ïÛµ¬pDì<dÇØIv†tã¹Kì*»Án o³{ì!Æm¤D=‘¨Ìsö +ã-ûÀ>“¾a¼e?ÙŒÿ<çŠ´ç¼ ¿ùŠ·òé]7æúø ªðqÔŸâ‹1–ñ•2ÁH«õ|ߊÚÁwó}2äGHÇù)s•Îòü2ê¿Æoò;æè¾Deñ§/P¯ù;ÔGâþãÿ+ ¨ÄZh–© #:…¡Õ# £¨!aB˜–i FZ-V kQ„ÍÂ6™v +{$©÷\i5çÝí©÷uuØ*yq¥D9{›¢ò‹É¯..6+ï'Oa†Lì–<®˜åÅåÄó˜'å_JÞtQu·_Hô·µ»œ‹Ê 'åÇÓ“ò»Ò“ò7&zÇ”ñågyå%õ›L”ŸFOÊ÷ô¼ø�Ì/‘ï“‘Ÿhƒ=/ÊÇûÈ™ž™ÁŽÉãâÌ'.)^êw'†ÝȧäwÒ©±Sµ ô¤ü¾‰þ‡ª}”‘üMO&o½éIùÅ‹”y%ó‰{Š½˜'åKôdòøÚçÝ UèßL Á(LÀ4,å°JöÉ&€ÅÇÄgÅmÅ(ÿ–x™ø‘èø“†°@W¥¯�h@S^›S1ˆj‚!ÆÜ8LBLÁ4´ÅâX +°<VD¬ Ð]UúÂQ®°;ö‚a‰<.Å•¬r5®EKÜ„[Ñãž/¡f}ɼµ´VÖÚÚZW8»ªº›Î¼ve‡Nè‰tC0œFb:b1¬… X`Elľ«©ïVØ—ÚNÝ·ÇÑ8–¹ãqsgã:Š›p'ÎÄ}xâ <ƒ«ð>Àõpëg�dÃéGÚ(”ᨡM`hJ¹&ãšLÐdršL^“Ék2M¦ˆµ©’ùTàhÐsõD¦“žœžq :“Ó™<¶Æ®(é¹Êz¢ŠæYMó$³‰g³6í¹ö\³xœÊé9óšxŽÆêcêãê²>{SeÍoÞn9UÌ©VažZE¼ŽPÆT¿Rµÿ™´Ø������������ \ No newline at end of file diff --git a/core/themes/olivero/fonts/metropolis/Metropolis-Regular.woff2 b/core/themes/olivero/fonts/metropolis/Metropolis-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..40417bff04914d1c5fd0771f445bb6d900e1dbc4 --- /dev/null +++ b/core/themes/olivero/fonts/metropolis/Metropolis-Regular.woff2 @@ -0,0 +1,63 @@ +wOF2OTTO��@�����],��?²����������������������� „z"’L +`�‹@6$‰bˆ_ R\˜nº§îRÂnß/PŒ Ù¤T%é7Ùÿÿ§$'1öËÌ7{ˆ *˜´1Y¯}ÊxºßÂtMàrÈŸä%á½|þ½·M¨¤z=ìxÀÇðåï34¿6#œˆ‘Kn*Q‰JTn‘._S‰ Bäª*Ü!½åW…Ž˜mfID¢ÂØ*Bx·ñå8’ª›Íö>®Sö«š/.=QÏ©U‚ )¿Wmh~ï÷ƒŽ5°‰ŠŠv[ì»&¤qº¤,o:$)Fz¾ßïÿýs{^€Y±J=—AࢢâdØ'¾"ØÃósëýe²«¤Æšƒ–hѤb„6VÍh¢ÌD±OLŒ>ź†ÿFÓêZNÛ§z{-É>ˆU®¥8Æ�·˜wˆ0É$ëÐÁ/ë÷QÿG°ÛìT¤K¢��…[Ȩì£-S•ø¿“êÊÀwÅ`Zµ˜gèe9=Éÿœêr”¯Ž6öž†ŽÀ.8,;)ÙC ’©@vV¥RŽ\ø~íInÿº¦>•.™£ê>³Ö ´LpûyÒòòg²ÿdwü?wƒ’x&ÛŠe»¥a§Ø(M±vl`[ÁÒ*ˆ‚ºt•R(t©’ˆ`Y],õïwqNe+TšËvãËWúm35ÓȘê6µÉNiUtô'„Û<ƨmE¥M{YDÞLZ`€ �ÓÁRÿ”ž�ø_�Wk¥ýÝ~¢0l@²”aÉs3û0ß»Oû©Ê<ñ> H†%°#dìH>ÎGª—I]Y+í…6@Õ^ªK÷ß]W|WXò$ï¼÷3+ïgæ–ƒò¡ü€Ý§| ®X)d;´rÐÁÚ<PuM÷@EÙRÓ4™:}ÊÈÂ7SØsì>ûjr0Ê<µ‚çÝ«¯Ï¥ ]È"Y.u)ÂC.Šß˜q† @ç…Щ)Q…ŽT:ô5‚xÝWþI£¤?}bâL|û1 wqÛ¿Ž§ö±¯gŸTNt÷û‰xîÐHXdœix!NŠ,3•©5× +ël¶S›CNºâ–~ϼöÉÈþÉhˆ1²‹Ÿcª¼ò/´¸&•Õ” ++«¦Æ–¶ºíéP'»Ðµu³þ†zÞ§¾5ÚŸÚ‡1èñŸpbÉ$ŸYÌ¡‚&X<:Y“ÐeΉ?ÑlÚ)P®‹z½ 4T£Éf»@ådâw8N`…ó˜=gœZØÐþ&z¶*».áر‚µ˜µfêf“~Fi}¬~‡§"sœZN ýÎY´óëó†—Áx\áÍÚú¦âL»e<Ém¨ÙƒÔ¡ê<ú€OÀ"Ob‡iÞ³G1Â3<jÏâ´ge²=eÿúü ^-‰iqõêø¾ïøAâ÷¡‚Öp³†ƒ¼:BÁBÅb¢UHwÔ´ˆë9¡Q·ÁÐéÈê5±£äæNÃ9Àf?-¯+4bƒh,…dPÁ⪃ªx1ñça]õ*=¤°d Kߥq¬}aìÓ&·ö¨àÁ–ÌT`b›Œ‘ÍUØ‹gìM•‰Í©\l£ƒ%.±=DñoÍAñ|KÓÀ”Y^™ÁõnˆÈìPÒcqüCnÖB>¨™¶/_;„›çxäX›$ÓSjŠR +)[£ý;&¥™ aq“9ÒtU–1ç·É]F¢ÅI˜}ùUµ¦ÐÈ|²³=éMAq>ÕûDxMëð‰‹ƒýMÙ’Q¡Çõ®O$+—\Eÿakõ4Øpsj‘e.R30µëÚ¦=ç®Ý{¤+E®ùR|S*®²ºæ…Æ¥däWÔ6íU«qó6õÓ¶sï¸rÝ^GŸý”g_råu7 œ^=xñáøâæýŸ !…yùb³§¢!Y¦©f)RÍd1’HH5úV®»cÐa¯½gñ;¨õê—4çÜó) èJ)»©Í¬°ªL-ŠLHË.Èívô{YM(³HÖª>¡.¦Je½ –³_¨oä�©P8«ûÅf!f'1‚Õ¬ùm¢ì_],<¯ÁÖûžÉð +[ÇÆ™²Îí:Ç"Ä;:«i]þý¶&‡ÞqÔ» j—/Yžâã0StFæ1†Ñ¬` Q .Fíس»|_ôûÏœºU·º÷½¤¥¿[?ûxþ¦ýÍf"•y›÷4'‡åÏ›Êw×nªRÓ{šó.´Íï`YÞÖ/dÇ}µøø“0õ»ò cö%Ôª÷…±áÈÆX‡·ÖNËwgfäçmØY¡¦1gFž¬?ºùÄi| 9Q˜ÉÎÐŽ êàùŒÃãÀØwF,N|þìÁ§%…SS†o<5i{!)Ä6Õ3Œñ'¦7UaIeF‡ÄÞú¿U³ÓÅGýÃCûàþ_—lV#6˜Ã6ÏŒfÍxÕ/‡´}Iˆí³Øú¸j Í®5_Ž%äURäDÒ³+Å¡3ü6Ü‹aïÞ+I¡*8~ÿSã#Í©b*šCÊ>È* Y¥°›|`ûœžÄ—óƒ…ð=[@;y›•¿›Ä$â˜E8=œ§_ÜÌA]¦´ë$Šæ‰†›…’êã.‰˜CMs¬íÀ¢Ný«c7OóÝ6ÇÏ–;(ÔYÜÎ*xJݹ¼>±ÇÑΡ¦Òê,#2SH‚¨[¤vÅÑÔáp4-G–ÏtOégä¼Vßp1‹kN¼Ãù”òk¦>šoFNàø[ÇF§Ì”LffÙ–´ÉþŸ÷°hëo—>`—Ý+Z63ªJëü! =ýÖ€p¬Ç±žõœˆ\ï3ÌÖˆrÑž7LÚÛzˆÜYï =g—°óªJfx:hÙC´e%1ŽßR´œþ²*ṡ"XÂä¯Z† +µæÓá~µÁnë'IK¿Ñ•‹ôû/È‹ð Ã_i)þÞ1UÂ)ò�IwzTg=ñô,ض™ÐNÅ|U¤ËŠµùØ!îDç4|Éq,Íšž&àÌ‘ÌôÀ@a¥ôŠ÷žå"ÕÇ̆"úÑ[í6+¹d ©«W\ÚTNü>ZÀ%eŒ~ÿ¼;ŠÚ"—ð0ŸCÃB Të§Rˆ2Ösf ¹@!îÐKâAþÂ9×U«�r"]ì]'Kƒ\ë¯pü"}„ÉH¾Dd$kXËÎÃû*«_Ÿ0÷–xödzrâЩ]#ýö]Ž O+8S„rPü*ëJ‰˜¼°sVŸÞR'‚Ùj’ˆ›œ×~Û:ÊŒÍVÍûûåJ¢Á¯nݶÑÎÒŽˆÀmÀâYÙyÙp•ÜäC°ñ°´¯¢õ}3"b*KøJ¤ÀePÚ +¬/ávD^Š~ø…sL8¤£4®~)Ýf’ŒCÙ2ÂÄNÌŽº¹ ÍûB±û0¿)K$úÃ!°s0cQBý¦{þs£Rûö¡,tx֖߮²ýY™ùyÙYûòŽ(l€-€¹õúF=´´µ' ã=Ÿ[Ò‡ñç&ã%a[ñmUéOßö¬¨U«GëÚÕÚ£™y»ðåù;\Üëø!…l4nØ‘r_ŽÃ_¼ö8„RŬÁ0XÈùQ”BAO¤–rñ•ñcÞÒþÔÓÚ£—›ëw½*ú?¸ò¯Œ¼®ÕŸQj r[K†ŸáÂsõüúHºîÒõ,w,ú@iœGíö»wm7iÍvÍj7¬¥îÌ©jÈl Óe•Sâžòß'Ð*¹’/ó•ôÍð†·<VJúbÁ…°#©˜´ ao<s¹o‰’dŒ¥ðÐÂ8VÖG,Ð-úŒÜœôÌ9GïÞÓÖQr0M>{Y4ë>¶ëx…s`TÚ|øÕ×3c[kðè¬ÖÐcýþ Sbë~²Ü:kcÞþ¡cçºÛ,ÖxKK¤Yˆä}"h=ôåH‡Îˆh”Z|gNæ$$øbl• +¼ 'µ¹Ô.Âr\*°`÷?z_d™X5+æeùQnÚ9è&Gë[uÆk;=KåÝÝ/„Ä ¢„*c´µYS³`¿}^2°}û¾›¼ªƒÊ�‰ç”Ž•6¨´œÄÁ?’‡˜¯Ä«4Z¼=¼}RØòsŸ¶NtáXÜ(ŒëÿG Æ +l'ÛÇP]qÄ1q-iæ–Œwãèzm6ðjj*Ôò¨õ`;¡)²{^ËúΦ p•1[ûõîh;ךx9͉°n=öF¢öÙo ‘w“1Hìˆ'HO9äp:ãH6—'SPd¯†ËŽ9^r¢\á¨V•sn)…ºfËIJ7œvÆÙNÛ2ç,§²›ZÃn¯O;Ñ;¢éÝsßÇÓÙœ«f‹åÁŠ»]Þðܺ²ÃßÕ]×<÷boßM¯¬ ððÈmµŸvç”îºW¹_o4…è6Ó¦‡õýüc°Óq»È;EÝ1´:Zß»ÇÄ(÷ÐGÓ™5µ?NòÂb)á~OÖ¬KlKò±gžÞØÜÚ–lpwwOŠ¡>?ðòPÚ£^Ÿœž_]\^ßÜ¢êاzç®Ý\Zïåò"€…¨ +L62¾pÓ°QøJ—É‹Îb…Hf¨4Ó,ÓUðƒécŸú¯Ï}5"²¯rMFЪÝv\<YPª •ÈàÓ7u-2ŸÉ\Mj-Ð`¡yêûÞÜ@ö:â‚AC@ô¤Å4«Õ=«-4<4Ñ€…CB‡7k)^ÕŒ±ÂŽÜ9ô!^²Ôù—Zqu¬êײŸá¿g¿aïÞçÿÄ‚yúÓñc”£ß›ó«¬£ºÝßàœ.øª¯ùü;ݺ{ì7§M_Óòu¶Ügã3§Ã�ã`l€]p.A6TC#܇AÑþ¡uÕzii«µ„)¯ýxóÇ>Žúøù'ÿ÷ÉæO²>yCüŸ¤Iÿ/™$wiš´ZÚ(”ª¤¶.=»Œë²ºKI—–.í]Þo¥‚B¥ØS´” :COè‡RHùœ*¨jj0[boêwÔ_ã‰fè>ÓõÐõ×ÓÕ\òŠÞ‘ù²…ì,‹aɬ2ô4ôŠî[]ôéðO·}zúÓZRéÿWÿ©þ[ýHýýŸúýz³þž):âlpîãìç<Ýù¸s¤sœs®sÙd¶šÖçuý¬k®ºN뺪kL×ë]‹/sØ´ë6½[R·ò+º¸D¸¤t†u†cÆîÆ-Ý¿î>¨ûäîáÝtë^tõkÎqŠ‡iÜ„É•s5Üd +hb0Rž7/)ks'¯2Ê'ò/äkùþÆ8ËEîò´ç¼à%¯zÃÛÞ›áóB6m³Óû7{QTù-.ïN'þñË~ô·ÿ^ú–:JÕÒp1²ÌVj>ÑÌÃÏþýþe:Ë9çûø“` #ˆßíœïa A "á!!WµÙE7ÚjEáí#~¯¼÷ôÁÿ»Óüî³óØãÃ|rx|Ÿ™èúWóÙãot~-˜ô¡/ƒiA÷ë[Æç“Ãâ³xq¾e𿼌g‹É@~}±qÆÊy9Í®&Žd %ÙÎw¾ø‹?B¿ U‹¯3ØãCýÞFdP<Ò®ù"‚4s<îBå؃@u‰Æ£¶îKÖ¤¶{Wú¡ƒ+ƒÀíà|¬I½HoÓ ðÁ%Õg€5£§5{°&ŠìùPÜ…Š“gšt80ÑxôÁöl*°&Õî]yßý^9ÞOøí ÖÔ)?ûBíÞúvú5øTs…X»6bEˆ78+±·1al}tÔú*°Eôš‡™ËÎQd/†¢Úr +ÌI3nzçh?2{WdÍQ`vç¢ÈžE…ð@Ã݆æc¨RŠŠêÿf¨1†í~ ‰H)h+ûÈ{}:ÑEº”v×Ñj‹Š,Ý—¾ììí{“}©· /úÕ1¼ŠßÑmüQfËÆ‚Éžž~“‡˜øl~H´Uò&Jå 鱆 ‹!ôƒ]_ŒÛ†YÑ`¶³6|-“K™Þãâ ±V¹Q¯3Ûébª;x?»¦ÜµÆQÈà bÔšFãÉ„¿4]+)q‘ÕØàG,Uyûúø¢ú‰ó\tw#µãØbøášüãù¨ÜUcn‰;ÞÊŽÑ8²Á3“å÷˜‰Xû`o¼ Ýgoë¨>õ'‹‰So¨iÈ;öô_—t§Ug/Æ<',ÕFVPƒdm=A”ö‰z R ÿ뀖°¢„rßÒ +}\gWöŽÿL¡¦7f-ƒ+eÞY³#Eo5jËœ\&Ãöƒ�Éõk#V.[ŽõêÀÞ£âE7@•£•Hæ³�¾…Žœ·–œÚfE…Ò§‘ó‡Št«xq)µ‡¢ÊlWrãºQ²ïA¸j夗Wøm½}p¿3µX9´3MüÁxÀCC Ž³jSo\e·)öäšË^�ñ^ß½5Eâ†ñ{¾åv¾‚v³&\ü +>œY&=…)`¯F»«^Û? ·QšºñŠÖc¶c•xþ{`mÌ +Öø©/ýakî3ܺ:s–¼‚j€¬ƒ_ûýöÂ:kÖœŽ•Ï!a‚+O¡C™7:؇Sv»4fÙЯÓC†®[¿tQ>pnÕ J!ÌfcBOôÓ¿7¢äõsäɼF÷ãy½(DööÜR7¥ãØꮃËËáhÙj#Cz-PC9‰fA9’Ô¦Rçƒp´S»ÆõJmZüùãð0]µK„4œÐŽmê£Ót½¸•Ý6#'øĬáŒ&(%E6¥Ú´P× ç^'Щ~ü¥ì;MpÕ4§ ¼£ñRnÏo¶ÚMô3lj³Nkü’RU‰pl~ 4|«ÂÊ QºŠ*¼ì +F—Lž{äö×Á‚J‰oWfä1J¤ø'§¦¥IçR6¨3–ôj®CuÄ;Uâ²Ý–ßu,3:ûÿâ�?å6ƘEœg€vŽƒÄôm¿ºtÞ\Ã:c³¨ÑÕÖðcçvü8©È«ŒYh‹W7yXÙæ™Uf©½eGSv úcmØŒ%Î"‹ï©§ÄÎ<|‰ì!²E^Bº×ð˜Á¹Ä÷±Wòï%·š~ýF¸'²ø¼"ajqý²Fã"l›}oB…ɱ‡Ð((*›Ÿ!ó¿žFLÏ]v«Ö@-¼Ÿ¼|#¦˜èϨF¤ÅxŒ4,DYÚˆ™1œÓ’ž‹£b5´8õsHûo~Z +îIÞ§´®ÝxD¹—)»Ì5þâr¦Î  +òÈÿ.mO»³ ÍÈÐÓ‘wé6ŒaûnJ¯n ãöPJ¾d.á‹ÌI<ÒP ò£@šÎ‚‰ÕØ5Ä%B-ÊV>£c!>Qoh¶þ•W*³ÕwFæ ®,#»ôrã]ÿ®Ý#÷Æ1¡æ›8ì§ ¯÷ +1g²÷ªqFio:(–Ñ©`O}èwm¡TM›%͆ûàý(²€„Ï+ïáóž÷õ›Ø(w¯7¤K.£EM\é} 3Ò½äoøÿš¢°âƒm7ì̵2£áAÃÚ±u1S™æKãʃŽOKÝrºF¢~6 /HÙ`Û¬öÍ.£ñT¢@òÇ￵»`MT#ª¨ÝUS»iûÅ– Hfmè^‚ÿœÓ~RÜjDš…íf¦Xþg~‚Ž±r©› Ù[ï0S¶}'H[QÁ&¾ß3>ص€C`'ÎÓ@M o|tßVU�UÑy¯›)�˜.åPÀ¬½Ì¾-àY5¼º?-´#$®»ï6G‹]fWC^�ý,ÛŸ`8˜‹å k7…®XŽ&ÖüòáÓ'ŽÊ§DoÔH‡ 5 +¢®½Ûa¼³U°^s:û*¿Æ÷Í?»®ÃT`!4>–Ì7ú/Ù¬^f‘ú‚€4Ѥ>Ïý¤M@{L7,£¬ü×¹ár°`ò熂‡qÀMæ"ÖDŸ„ìŒ,/|sQÆ`S”ØÖà€‚5p 8‡DHëjà»Î_P͉À”Hë…~^‘ÏäžCø‘±Íü‰ÅS‘\¾MñˆŸ„tè”9ÿõ¡Ÿ,)C1z6ÚëNVS†ÈV躑£¤Ò‘»GZ+‘æ•€ã[8Riü½Ãå²PU¤ìÔŠœýaÅhAá%ìbÙ€”P-AÎàŠ_ØRâ%1¸ønª?lB:¨Z:9*ªÙx*ø'ð‚’ÊÔ°`f%ÂãôGqfBSdág\ò·èYÄÙ£äщéX7ÑãÙººµ.ÀŸæ³RÚ Ë‰øj4[œÍ¾Å0Žü «yû•…¬%á5àú[<Ð5<NF¸Ì ¹µvWj§gÍïËM™îH‹¼í# ƒ&vwÊ#5¬ùQà:\ÑdÍK$¶‹‚2¨Š‚‹fv¥j˜˜9N óÃ6M"6`°…Ç„º"ꊢ̢ÃEÛâªK Ê÷eGüŠk1�Š8‚ˆ®’¦–§Ä- +,Ì+'NáÖŠ8ÌEÖè>Æ~CgzË‹ÆÖàÈþ¨8éü²a0QK‡sjÓLC³ïNy`Ü +¦É9klïD¿¤T˜XzYeºµÿs‘åÙÖØgØèße)É×Y–s©+¦aë;N»†å,ÁÏ÷¢šî&†,¤Y£ ´³hCgÛÕdžÙLÿØd†ß**J±f<¬?ƒìùó‰•û‹/gd¸ØÇsk³þžÀ€YkZámÃ^é'ì“…„)J©g$Þ%¿B¶þËFÊØñeMK ¯VyU‰¾ iŠ]¥ß‰õAHÙwSWž[qnY¤ËE±kbÃ"Ý姙±c‰”¹”íwÅË%oÚ‘Ã5–m¾äRvúw=ä[0psðK9Ê�“«ã4}9ÌN€úòWPÝô+¿vÐ7&‰ˆÝâ䄺†”¨”*7R¨²4Ših’Ù·Škn�7`KÏ£Ì(%m„/‚¹A„:€,tÉCd‰æ5¦yrƒd‰Ad`÷Ø%\=ÙçjÏoû-áеìèŸBñœ—zàÌ"Λ@oÖáõ=}Ó±å«KºlkR\n`–¼aÈþ•ÀÏŽƒ´X§ØPb6²ÎEP"ªþdSÕ֨ ?÷+ÕT —r-ûìpzG‚HÁ®‡Â•Ù‹ d¾ÜÞ߇½KµãxWÒsm jEô >ëdzô¥+“sº-ƯG4¼lˆ|‡‡íÞsXÞ¾cßËñÌ¡SÇŽšz)9]a¶2“à*°Ðô>0Ò„Ù?Q¨s<m‚üÌ«¡JRØ…ùa:Â9ÌIÕsJ‰‰½¹)ü˜Ì¬Ÿ +¬íÕùÇç‡ø6èïÖäHr”$ÐL—ÒEÔ™£®L“*VfúEÃÚ¯AÖô +²ö/5í‹ؚӸÁ5ó-b-s"ø¶À•–‹¼ü7l¶# ÷Bf¾î$é¦ú@1‘Q.†E-7Œ=³0º[çú¥3#—ÆÉäч{œDÌ’D΃^¢Rô‰Z™¬ÏSYcQ]Œº5Öi|‡£¤qGæ;‘µÍrXÖ©h1-Ê%Í£€3‚ÉOÁ…Â:iqÔ«&âŽÎŒmTP‹%Ç-' ?óÂÀÎO¿WƒdÄíGuv„ϧ+o@„ 8OA‡'xæH<[´ëÆñÖ>¦ÍÌ"ä0Ìê%v·™íÓHçÀ±Lg¹+ KÂWÌŸ•<¸Ð¹éì Öö2°—ÿ„wýä<vJ~q)3_»¤/r@1Ç›DMsÓ0þ‡1�î¡Ñ¢nt.Y¾×±¤w[Å·£]t�â-ñçVltÒWÐÔàœ®Ú‰Á‰´eÖ®¹_IüýF ¤£¦]ÊúMèfŒG˜%¸j¯ +¼Å¡›ònª Qóà ãC7|/kòȪ…žæjªZ2.mq´Ï|¿e&–ÓxX“[Tx·6g>:†0¤™,]CÛöÈjÀ ÍÆ¿‚CÁg_)ŽNœ™5a¤6œ|XN33:‚¹>E`µ6Ý`aOw ³û§‚=¿Ýaѱí¶%R¥ïkìºQhà•8XÁ¶@N˾€ÿÛn3:‹šÀÚ:,5Ô6;§7ìÔ{ {VdÚÕTÔtü$ÿ¸‰d®“aª"òè �•Yµ§KÜ%°çg¯òµÒŸ‡#«t¥F8®¬STåÖ÷‹/ž'\žxÖ·FÅzdL2¹†?š3—„%iykŒÁÄâkBʧeË쌃ɡD°ãm¯|¼!ôŠÌWðI±,a}z–b9›æÌ;µØD+pR\˜wjúdÃpm KÙ™ßVz®(ªŸ^€…³ç8âVdz&ÐÝÁKbWˆ®Ô«?ÆÞýƒM‘'ô1÷4ºâ“cùÖlÓ€¬{AUœºIæ¨ÄpþÆem™»³Ìú.²Œv×Î ‡vÊH01ëX¨B8¶, .ñüΉàÆd#·iŠ(¥ÊL?h˜µòŽ†et\¶¹ÈÕ ³Œí ‰’¤VÚ'ÀŸgãdþ„‡^¸½�Ê +ó:\ÀµÄ2þBfÝ�ß´š-»òY 'fõmìoAåÈ�Úè‹ÿÙ>£`AgQ/äNV¸Ö¡J§ìÍÓÝÕ\LœŠ³°•�1{ÙÄ^ÌGóôÊee[\zs.%°–ß6”<2HÃN`héÙ8{ÏL›Z§×ä5ÊLy ééç3Ää;¢J¼‰n#$€ù¶áÎaRdusý\–xg¢Já*§ÆÔ¾}Ux'xÐgÒ-ò<Ÿ–¦Y•Š¦N•aO¬ÒòÄÀ†vÂœB¡ +Æ}�7B•lNì‰9-ã:ëO'Gˆ>zÕJ•P¶I^ᆫP‰TæÁàHšÙHžCŸ°qñ¸¨šC§¦#•]»‹ +µX£³·�ö¡œ4Jkƒ,3gÀÏÀÖœb õ@¶l…,cq4ð,'²D‰”n’plm›DâžÃšz"[Ý7æiUûÂÓ…¢*I¯ÁÆÁkÁ„·çÅã‡OËk»ìê2l‚YˆAÏŸHfoÃ5¬éQ`Æ}VÎõ(Hµ0sRÃC$lRJ 8…ì~èÆ«L¬²*BÍf½N³•YôY2÷öýØWùmÌvM6Gƒg*6£€Ÿ&4Ü�Y‰«BÁ´o<ò€ ƒêÚ›&ÂnOßLí lƒü²ÿ>�.çɶguÆÁ’?\@UœR£)›Mž†-ˆÇ*ñ«ÈeœÌr$¯ÚP¯âtÞ"*[‰\¸p®.�9sh[tÈebáe›¶SI™®(5ÒŒÇÏ?P]¨='“SÆPSªÆ`+ñ=\®Áˆ¨¶˜‚ªÅI+pX1ŠäDVè†]â:|«æƒ«fø·&`Ø2ù}‚�<XÖÓ3™•õuN¼;Ù +Ú&AIì °¤ûjäð椯ä©?@–ÔƒÛ‰µ‰ôp:²sT7Tè§/(æÀ KŒ ªad,âë× ¢x�3KŒ@þ”ä¼õ¡î⇑ß^ȯ¦”¾§ÿO lL2ì¾ùtìjPŸ¡e]¹ Íðw ³< +¬#¥ô(áì,(þ Ì{’òéáx™O.lÒ‚æ#/Ñ|äÙZèã`pc%ÆÄÙÑ*b +Q»ÇÆX_¯„b»¢*jô_BOžÀA†|Lf§Æžì¸w2çƒÁk2ÔùœØpðˆ¾ãÀ‚ØwŒcÙâÇ11"ñSI¤PWM¡¦m2c Ƚý‘\Aš`‰Ë?·_¥„Õ9ÎJÍ¿¢j)_%Ìï™ m"·´3žÁàÀþÞrád¡"ëfÚãíýûŒžéþC__Á3„46¼ŽV’tjð#f•¢§å›•¼k¢Ÿú·Ay#O›ØËû¯–™Ö¶‘ ›ƒ…✂”Fãý|ÀðA£¦öÞcºG~[C; flÿAžþ?öq»V4Åä(¸ç> äUÒò¨Pò´`y?æ\Zá¸!«â˜6xþu¿™’ØYäïý´§<ú¨ó-–^„åXlA_01¼–ÎOQ¶êÉ¿QŠnš(,ú謌'½;ºÔÌÆ”Á¡Ëç˜Q §¶ÃAßÈ^\"Ä¥åEÿ©ÿëonî=†x¤ù›½Ïw¦¼Sf,¼Š®¤œf©JìôŸ¸î°ò£þ#f¹O7Ñû 0Ëg,žž&§• +9ããû¹’I¬ãNr¸#¢!úíw¢ƒÝÄÆÔÈŽ~ô±¼©ˆ4¾Xe~`l=àÝsȸ_™¤I½?;‹•|®ùH§ÓF;ò«Œ”¦ƒ"êh¥3ÛÇÙéZq¬½¶ôiV0‡°ÇG—ö½dbíVLy^‹ßÏÉ'vucÎqߣm‹eöÚué豿8Ð�V±v%¬ôØÿËÕ;†šºÜû÷k‚F úu†Ûv,ë‰G•=çYš_ž²öšêï{1©¯Áup`ÙA¥=íôB‹±‹¢Vßr:³ÿñõuõVªi“†»wãL†Ý<åJê4yÚ8ab^É‚#)A‚9HŠ‘#GGö‚Uî=ìæ“ÆÒ;¯?æ\¿Œ4 Yëð›QâsÏ>½i?ÅVPÈ5e+Â:"³¡›/òÉ¿â§æ®réêœ#)ft(Ø”œ›&´w÷žÆeªË¢ÍššÕ±DqP.V*…&´îe<_!“Ô )"a$¥D¬°¬ìrSJó,¡E s—ÓÃ$™ëRœ�B³èðº]¦»Ýi ñ 2™eÇà‰ºê¿-ù}>ûÑÅß¿¨>W”Ë´äP`Î_PÝk8˜C—¢Ï_¹¼òüÒ‰Å)‹£W]6I¼Á˜[ñ¨Ò5š‚`ªÌܪô+ðp÷óS©¿[&ÉÁK +yT“•’]‡Me<8¬<füª³šFÛ‹ÒÁð[Ø +ð0yb–«ìøEØoP^ÆuÍ�ÿ>N¹ ´X¨$R¾©4‰Þ"»÷m§‘0_«Ütwzã8a—Ö;È¢bxù‹aŽ&Ñ*J1©r,då¦]h\uUy«)u*8vp‡Ÿk õõãBé<Wpä†@îDr�>NÇ +qº™¼Çá8—¸Ã: ]_WW’PƒqÔyídÄRKGÞ�½ì öª’Èç…¶ÃJ'ì›ÍM^¹bz‹áÝýå¼@¡ Ý|ÝblÙê5Σ¯ÇÞfboùlA‚Ã-¥]³ñéö÷ÐÓ>êBö½VÛ¾øªr+c—÷íÿ‹áëæ>Dÿ£ó|90Oð›0ÃÕØ'°¨´²¹€°O™$nR~XRQ×úðP¨’Cí"GVdž)šPLV� +!›c'±ËëÝtšÎ¸Ž®ƒë©½*v*ï´\H¶(8ÞéR=’`ŸF؃æ¶üKËÏ7öH”/O:+眉I(7ì"±°GGþ%y+ÆÃ*ÖOúÒÀùÒ}ْᲯ¦.6ÄÍÄò«Ì‰ä²Fbˆv‡\^ÌÌym¬Š“åðe—o™ˆ/ߤoâŠåþák£W4ìâb1&f~ÎZ9h2õ1ìá"Ñù*Ž•¥hº¥nâh¢†mÜà•À`Ö {¢Â¼:õy¯¹a¸”°A—ø1‚y‡vßQÓn6е4C€!\¯$·À¢jfªÀíãìw%÷-6ÑæPã^Ì<¨¾ŸOv@8äß+É/Fl÷X›.Ô·“cÙŸëŽcˆá)dBƒ¥ºÑ±^»A äqVçz]áF¹,ÎjZŽ|TÞúª´½¸žhþ!•Ö`¤+rRÛ€&&ÒÆUÌçãS"m]Ó:‰¿n€ªÔ( ÇݪdÄ^‡6‘*@UG˜£)k$÷t4?Æä?ìo¬·LV:8Ö¸dŽfÇU]R—æñ›ƒ7ßwWª<xQ,ŒM9ôƒÄòÂø8É/ÿKã;|~4ôb¨2Œ[Â.À²óªÓX¥¹ È[²pöªé[\™¼¾59ôÒ¢Ø8s޴뾱㹰9¥ƒ4ÌßCÉË{p83®äŒŸâ2™ís³•kXlÙ¡—ÒÒ(ÆA@=Þa·]”,9èâ{«Aš·±®ƒý8Žv‰‹6á;ú¦y²pcÞâŒiÙ¥Ýür=“úý¨tÐ8 G®ï?à[‡ÙSˆ°Pæ«ä¨~‰“3'ŽëV4¼~öÈÜm?yûÞk;_T¸1§ú¸ÌçÈ¡çg\*4P¢ŸHÔ(-Ï^<Æàì÷ÓYŠ¯§À‹*RÕW˜¥˜?ùNâðV æDh Àßè;Oì:yÒ¹7rÿ9™^ø ½5£ò-«¶Ö£-·cúÖIܱzgX˜áÏ=ñWm¹µ‰\¸‘XÉùª§'s!¥%»ÈX ^kôóûkDfg‚%Û‹ª›nWÌð:#ßÌ UËêmäôÎßsn„³¹•q£ô˜+ÌV6Ù)z7…ßTu§ŠÆ+.¡S‡Ùê@Óñ8’ýo¢¼(Ïû:Ëàè–Or5¡‘WàyÁ,øKÉ—ÎØ*Úਕ] +M<‰1žÈ Õ”À %D]ßÿpUJ–VEg(¥Ï”íqÕ]…¨)Yjäs6˜�öhb¯yzm3°–;ÓœE{;@]¬Ž€Š¢SÓY}ò–;H¾Ì*Š_2Ú$ §ª8r~²2ª¶c*k*•4ñ¡~b(ÅÇ\©Q¨åÿÔE0,Ô)«Oê뤃Š(˜¨Å\l‚FâYèÍ®ÿ„œÜÃ!ôZ6à4p/’Hþ2Ú3ÖåA–žŸ,.¿–ÂmfüT@¡ú*Ú{ +ô{PR¶¾Œ¥büê$§jW§ªÖÉY`[Ô˦‚5Ûw`¨Ð +1¶¥:Æ|LšÁÅt)çžû‰.=…lêѾ™â>a-IÅÀz\™c5‰¦·¶Ÿ‘Ç°JD!~_$g9wJ–²?óoðó¹ìBêÅóï:¡‰¸Øà.¤šš2ÂÈ1Œeó#]ZÍ—µ7üSs#%;Yô?–º Ìø°d›mÁ>pål®àxŽãrÎF€‹æ‘¯é¥´ŠFOͪ{a{ÐjO°ÙôÃÆñƒ{¥óáU3B;ÈÝuËv½ó–ž£€ù8÷¯’Ë.—C½COq[9É\øѳ«µi ÷¯¿Ý[f9_ ñsà¹ÉWýLìúçÁ¿8áÇ¡D:V\|Sfëý$ð–x›¼¤þÞ3÷žkš“µöZ’¡øëÄ}«rÝ×q¹g7UdæZMÙ^fï»|4q²ÿ’ñF)¤»]E»vv·švÓ—yžÀž.TÆ«uNï4€cU@¼ˆä@•®3 Ú©&¨Z_²•!¢ÄÕ!Û…8Y h¡iÝEUè,Šè(E¥ÈuhD©“ÍmHìôøÎL‡¢¸ÛˆM›EX> +$^†Û´Öªr:®Q¾¦ütäµk&Wn¹Îßkxõ¨(%¥¦P«JÁ7…�qÁ 0¼i”OD‰7©÷%Uy{@-Éá¿IZ!&Šrj‚MDÕIE¹"ÖÊm‰’ħ©7ÙÈÈõíê›çîüITå7ÔäË~wùè¹hÓÂa Ž;g5ÖÜ2fVÈ¿«†_ÅrêZjòPÃIxŠêÿ*3Ç+ÉtÔö'd oÌ‚f‹ºÙB|xc,¨VÏû’ÅŠ‰RøqÅü©Ÿùç¸ÈÃqøþfÿ%¬ùÜ>jðèÛŸQ„7?%ÿ²¼é›q¢×ME"19WÂÄH”mŠYÊ´Øï¤ó½5€NÊ6vâ´YliM©¾èq7ìYï«ôöø’D9Le6ÅT0 +‹snT®µüO·á†qü!’…[–<%*ô4Ìx,·ÞyâZ†æŽ=š»ôàG”qQL‰M®¨ê¶—T5hÖ³z–ºiT×Ù}æ쥻¬ßpÀaÇž~ÞÓ/xáâÚöÁÅíýǯvO¯Þ¾÷ñ§EÿBòaÏ-/¡¢$˜$SžéJU¨Ñ�@“ùRµ®‘¹µ+n¸ã¡'ÞúhÄOFcô9!œ¡ã»¢&àH8{J‘@fISYÐ-ç3‰j¸X„'ß4A ÿÞŒœ¯¥Så&‚Û«Æ_ûG’²²Ãò»ËCˆ¯ù\à"À]Òq‹Â›_U|*6�þnëá—aîº +UPì'n¾9˜V½nûˆ@¢ŸJR‡Œþ,ä6‚YKzŽo,1VŒ¡¡ªtø‰¦6‚Gð[MÊäpþ#‘ÒÔt?œ×†×Ù¬xDÿýdìå7!xÒ�Û4ªÝ/ú°OÈ&¼TÂih*8zaOG[ÉÁŒ´ÜœÌô9Ç.3´h–4ãhׯ`Û‰‡4–Œï¾‹¦ ÙhÊÜ"d>cÔêoê¶ûýQ«4öç9ê +Ù:¦= &7¸ËR°…]2gÝ<ã¼9§cBLÁ'ûK¾nË7jwÀ˯‹ÃÚÿš}2ÛS”™·nYN*’|ÝÏ{¿äÕshö¢Î1iK,g®2W&Ìæ LÍ“ô¶Ž…¦ÍHËJû'B?ˆRí»¿Kðž}?½0õ(íyC…}¢§Ì•S¬®™+@Ö+‹iAUŸ*èÓÇKÔf³–{Gµ/â[Ó¥÷«’´€2ü«LΤ*Rø'#Çy½<\÷ +D£ŒKi(ZJŸ¨ ^Ÿ°zEÏ û„Ö"â¦æ-Ñþ±Ÿ¬/ìÕ;¤óÈOBÁ1íÂGH3nñ3ÊEŸ.g`ÞÆš…nh¢»ï4^Ð?¬ÞÙà¹úµFŸž9ÖÕŽOí¬QÐêwWž‡¡³k‰¸©•�ñ´Š8žÊ,NTqmZŠ|kJäK>÷b ½C0âVÓáÎøÍ6û‹( €,ê^�Ò'¬†5¨0 {îÊ…8€UÞ™,HÈ43¯]|8âZ$2bD³NÒ5ñÛÈw8Ö|›Süo©»÷Ì—žèë:cʸÄû§œ;±ëŠ5=¼ñø–ÎÖNŒFw¤í ‘@! +æçId¾:®6‚M•vØtÃa-&w Y1š{Œƒxs!ã#·¯•ÐA+Éša«•'¯šÃp«bÇ‘n;¤/;|ŽGOU Û±p˜5ÆO5HïûŽ°ìŒQ+hµ¼"n,ÚùÍăîÞœ×Ͳ³îÆþa Ž¥H”N5%8r`ýù¾q® \?ÚÃÌ„_Q|UÁâÝÞyÄ¿ÈÔ”Öt¾Ì׳~}ZOتª@¡£ºÜL£Dü¥•«UHi?¯$¬ÁÕBi}ºE1ëkúy?(èiãªK‰ø¶•B¸ÊüNä"êÁKpØ`(Òyc‰{¥&Õ(y|üæq¼Sµ‹eA•í¶“uœb"'*Â×· Ú˜Sb§OmØÑÊÅ\ÚÛÃÁhŒ&ž_#NÄöɬTì=ÄÁ±s&¶Gþúé©`Á^‰Ÿ&CÞvö8Ç.š#¬oÔß+~NTÀåÕŸÙ´¾Âc7úpe9Œ9yX·q)é +ÓÄB£Ò†Ñ]wy-,tGƒŠé–e3ß/WúŠ«wE3aeÖT7kÝúšðÜÞ&º^}5öãÆpáß,•Ðà +á¾ÑÆ9Û$nÞ“8„Fï¼Æyðá–b¨öp¾ÕQY) ´û#&…ˆ3œD1·œp½äš€å'ü1ÁœÉÏZ]P¶¾–tOÇÉÈBë, Bψ—>Ý=.ïקŒ¹ýJÁSN¸‘ËÁÀð’¾ÚjüÑßðë×ú¡ï„Œ‹‡àä…Ý=ø½§pN³S¶4†¹ò±— ì £G\ü&—ãbÅ…I9Ø:8]9ÊÕ³ +‚ˆLåÅ78×ÕŠï÷¾x¹2P-ŸÓ5 êmð_¥P¹FFòñ0¦LqÅrEm0÷}œ¸-|È‚À4PÄrq½Z²Y=ïåèm% „ÆJ]»ÕwûÚÉ®a•4_ÂÎÃøØB_츣ð h˜ÐæU@€c_ƒ±iw‹ˆ" ‘pQÒ€è€KI— ’«¤B5Hé +¤ÞbfË@VX²Ù^ƒN€œu䪛 ·=ÅhÀ‘l©Ô@Ùsp§ˆÙŽ" ºûÞÈ€�Øþ]€ÀÀß}§¸�X>Å3ûð«Æ1`:°Â‚n‰À +ŸœÄ‰ñpþJ[šôPLoTdÒØÏj§0Ÿ¶;š�‡L\ZÐ>©ãÕ¬Øá“fë‹UlÛ�¶Wÿ¶ºÿÐZx`{&ëÿ:Üáƒm¯¼ï_áùôƒ¬š_ì‘'¢/¬U½Ç©¼”£K^ØlÞiK¬5-“wM?²í#3ØA:°ÿî ·$'ôóö×û®Ó>�m7ïua/æ3Ô>It+š‡ÝaÞÑëªf«åÝÅ{ží®ïî‚Ð@€%ÈúÚ6¸Ä@1H�%§…&N³ä˜Oð¬ÐnÑnWtd» 1mh›á{ÀUó`Ç;+™w¹›Ý~Ùz +^…¶Äíjº.¾1ü“àÐ +-ü›æ탳QÐí¡%sØÁb`„m!…!VhÇ‚ðà:,râ„O‚6ÌÌ™<3D)šò©¥+¼PF_3›TesbÓOÎù¹ +Þ†¶Äù^ó»ªÉà<ÆJ¼›Ï’ùÇŒ/�ß•0œ·6Lî/!"”K!ÌkùÃC¡ 3z%¬TQ²×”5«iñªdÃV€)¯Û†U·*¸kMuÌÊq‹NÿÄ+LFn9l)X+¯ T.ÎÚ nóÁ6¼ª5Z–/ò]cuhÑ0ÔÂB'žà eP†âdNÐaàOËÊ‘Àøƒ?Jr@dÍ^Ðì)eB×^F.-ÍÅ9lg19(Ð\ì¦`Á-sÃf[.Èu°8Bw©½„@ñ©Ã˜ÑDú(8áä Çd¡`¸«¥«@©¤ˆAƬn´¦ÅvüB>“%=/þBEK(uö†{.Ã-˜-Ÿ7B;ZÕIg‡ùdì™õü¦�8Ý4!S< +%5*V|ù³"›Q,¾4ÙD Ðþ9Ž—‰ž©ésôí#µè@Ñ¥ÃAGظâ&¶Ûî‚ž9òWfÖÅ`è ø‰„ðà_!�`Îà±3 � +¡ê`>˜a'tÞ}`à9ät]ðtéaÁQ@¨aYÀH@JB31Äæ&†8'ýš‡FI(= `�"WÒBÌœ;Äåð~øl{¾¢~€!,ÏœDÌ‘ÙNF!Àlà¼Fhî* D¤Uíç°FL¼Ÿñé״f–Ì`ÀC§£ö*«ô�õc>óPr4ðÅ¿ˆgm`/Ù�ø +``û�€V=kN0ùpPó ¨FG²Dwð<Õ‚cw²oFýˆ™0‰±ª‡ ³3ü4aØ/½òÚo½óÞ_ŒÇÏÿ‰/]>&Ÿà—pÞšJZ:yÁ(Nšt9rMõ×é�t…_©ÌT®BzK4[n… Ì6Ûn‡û¨Ì£N9K“«nï÷;™? þŸo“;o‰f)R P©Õ,Ðd®UÖZm=ZuhÓ®Ç9ô:ЩÙ�þ’Ô+¯#tU.€£ùéet¦Ã–Þ×Íâ»zÌí!4ø +ØÃñ`o ÂAxˆ�!àGù@§‡°RüO€.†xü:Ûb“’‘sàÉp«x ’¬¬Nú49¦L—sê´9A¬nÀ‹|!Ùqa²[‹v]ö9ì¸S z¬x‰Öœ3]óÈ ÿÔ¨ÒÊof¦q+ódIÏ›Ï ÎðâŸÂ·åsøB¾”¯ä{ð»íï_. ´3-½;×3nÂ&v<÷¼ó+²˜2›Q4¹<ÿž¬ãœæÆ?™oÃgW\øî¿xÏBiæ)<ì`üÿ »èúí¯ßÏÏo>¿qùäïŸÏüc$Ue¯Ö/¨ã�è„vtº«]ïf·{¸Âw½j¤?€9oøÀ\1êÑŽ~ÜÆ÷×ßÀܸd|¾—{±¤þË™åÑ1·Œ8^s¶NµaË¡“iÜ +±wÞ±ùÑr¼™Dy‚œTd–¥ +•(Sm†%Ç×j +¯…À[!˜íIÝ[<§?¢;ö»m¸Ù0Š‘T"«BWÇŠ ÇBvæáZÄZ#¡¥D–q´Ž“õìäb•-Ô¶ÒØFo'7»¹ÚÅW–á[$Ô!áŽsX¤c¢å¸XgÄ8m’‹R]–¬OŠK2]7Ù]ù¦0à éþI‘Óò{XÚô©e»)Ã5Yn`™g±)îG†HU”hËÿN©‰@€€§-L§„×ß�|½øåwõúÓ)ìÿÿCä¬K€«ÏÛÜ}±Ånw~̳úÇÝ}}?dÌwü:`~l½Sæ´Ó’\æ‡ÓÊ)aDÊiõž¶ÇFŸ¶ß~ +߇ÕÁƒp6»Y+½jå(pê²HV’Ì› ýÓvæ1ÒfÀ,q•dÌ|ŠVåœ'ìƒ$š¿¥º“0Ås‚t¶£YÏc‚½©ÖUµu“øáR’ÝD?%¼N|%ž’—ׄ©¥¥÷Q†ùXG8l?I'¥’£ŸuI;ÇAG/EfHC²ê¡)ª– ª 4vì¹èñLª¯Iü#œ_ “3l-˜\ Öò#šâ‘áO,î˜0 ¦ãàY»‰¢špò)¬D2·SQ¯™Äs2i}æólû6á³ÀvIõ[X5ËTñ*9nv‘ùĽ:µMˆ4ÄWxdb¶rK8JEb»¨ÊgèU±Š¹Ÿ}%þƒÃBm®¤Â¹»ñ‚†Is ëÐ_ÿºðí)¦G€2;X>Å´oï6“k‡Ä +¨#8âœÉ¾\;ðØ\v«ªë\s8Í6ö3›,¦Ù} 6¯‚ù´«’–ën'«M†,~‡!K‡%)2¸_YXÌÑÀã �§EzìÓ.zddq者ôç„ÙÎç«¥vhbœ8àµUQöh¶)G°µ_9Ñ5åhvOG#à �wǪˆUY +©Î£FB˜¸S(H•=SPÄ“¬`¨§FÁ²›O;WÖ Hš‰;ŠÎŸYŸwõø2»xð o5æ2º'r5÷-ñ‚Rˆ³ù—”æÑ ^³>Y-çÅo°6ü`Ž¬³Ö—¦=P ¥1*õ÷!«,kSg4%:ÓèÚêF\"¨6CJã_FsÆ´‰n]8yyùšåAê´Ø¾D9§Ò ÝßCÝ:äf-䃚SŽL“cm’ÐÍ‹ºØžRS8·JTIÂ1`ÿèk€h¾v/_oF1s:ÐÕvÉH/\¶HSil +i_Œ7F>ßö õ[hÖ?˜cwȬ5 ˜ö”©¥Qó¯¦n¾Õœuᵩ3Bã„£_ɦQÿ†ê²,‚nÌfHMã˜yã—6Øš™_ +׋–ù5ÔiwDû2¦V`îíz¼•Xð#~Ï��� \ No newline at end of file diff --git a/core/themes/olivero/fonts/metropolis/Metropolis-SemiBold.woff b/core/themes/olivero/fonts/metropolis/Metropolis-SemiBold.woff new file mode 100644 index 0000000000000000000000000000000000000000..ca2edb08a7b4210a888d26f6a18bb9d117d4c697 --- /dev/null +++ b/core/themes/olivero/fonts/metropolis/Metropolis-SemiBold.woff @@ -0,0 +1,110 @@ +wOFFOTTO��t€� ����å°������������������������CFF ��<��<��I*;ÒnpDSIG��tx���������GDEF��DP���ƒ���°Y=GPOS��DÔ��/—��Ž ññ:GSUB��tl��� +��� +���OS/2��¬���L���`h²ªhcmap��t��³��Òììhead��8���4���6Ñùïhhea��Œ��� ���$hmtx��l����øÒì1¢maxp��0������>P�name��ø��y��ÉTãpost��(������ ÿˆ���P�>��xc`d``àf`¸ñþô¡x~›¯ÌÌ/€àVL´>Œþöï1Ë"æs@.3H�–G xÐ3¸eY…ѯólÛ¶²mÛ¶m#+'m3i+oÛ¶ÂuùŒ`|sn˜?™mÂÁ + 7¼ªH‘û.SÐÆ··|Èöä!†wê`'sÛÔûx|ÁpêfûQ}áê/©Oµ–L’å9†;ŒjåÙÖ8Í¿;²²)èRÅöô +Óç_a¸•§ýv†·±‘Ì6ö’íñ6M=ºN‚×02Ú“wÔû¤tpŒÒ62Hè ë +ñ²…f !©¤Ê½÷šæ.Õ¬½3c:v³ŽDY¥g܆ÑÌ”©z'Ûêuõ”zEç*øÃöJÏ7Ûñ§“Ù¬Fé{î¤^vbI]ZMš=ŸµÛ¿qýíßeQßÆçĵ&Ãh2ûH9²M Ò@t{RN”ŒêÈÜ «5Ù@j¯<O¥¹LŽ~W¹,!WÎR K)’ÝTÉpÍTh/5¾T?*Œ?5&@×¾Öq„~k$MI–*äªÍZ¿¬g¥ÀØwØ@¹Ê5WP”˜ÃŒWef)ÅRK‰µŒ¹—BÇýÿ¢¨r¤Ÿó™ÒDž*6sÈSÅæ-øë[0ÿk†wjŽ™Ë ¹›f«PóZ4Èhêe3£Eß_ÿWeŠŒa¨ª3ïÒ×üM5›Z¯w©µNÓ(/Q+h?£}©ÞeÑdnÕ}!ÌÛ5ß'§I3‘D«Xó‡Z겈“@ª9¯n§«Äc#ý& �ܹ���xc`d``–þoÌÀÀrãØÿ],‹€"(€Ñ�ŽŠ"xc`fòdŠ``eà`êÒÞš1ŽA„ÑŒØÀ�ÊD€Pïp?%!féÿÆÌÒg&ƒä˜X™Ö)&�žf &xLÊ·Aa…á÷OŸœõ*¹£WÁv0ƒ<m˜àÎp¥#tÏ @›+�GdO‰²èÑ‘#]frbÎR6:lä +Svrõ個%#.²§ÎM,Èäø÷I¬ÝT6î,WX9}¨þ¹I××ämo„*–ˆ¡`Jö>ŽÃãºï+H&5 Ÿ¿»Ô˳îg•‡—Ø–….&¹ùŠe.ºÅd†^Ÿ§¿×ÎŽvü‚ÞAbÛò—&/”X·f…j&˜yaÐêÈþ8.lÏcy5¯^«µêg&gÖjÓöý4·Ùtà é³27ÒäR›Bù»¼ †E‰š:A/¢’±@w‰ŽðI$Å”qŸÕ!ÅC°”~ð„?¼2:7ÍÝNÛÌúe^’É™+ˆ£iQ‹á’›-YrÔ¶E^ò‚1âeUB?§ +D¬¨Që¨QZô÷Ý’ÁR4¹6|JJÎb�oy…$:$R.'ÈåÝrÙ±¸Ð?»çvò§ÿ_¦���x„3ÀÖQ…Ÿsÿo¶}ûeÛ¶][¶µdkß›²mÛ[6ÖÏÌîõÖáø�€òWáW€Éô¤�F:±–ìf?9Æ)ÎqQ…TNÕTSuÔDÔAÕ]5Lã4Có´ÖupwÝÛ PPßoñçýeŸg¼U5oµ¾µ´Îv¨VíÚeÿŒ–tf;»ÙÇAŽpŠ3\䪊«¢¼j«±š«½:©›zi¨Fj¢æjá_Â÷"LXïÏùK>ל•³ÊV=Lha’'�X +LÖ£ø~Mýµøï6üU”¸>d…÷ɇá]ð¡èûbˆÉÀj…@£-*ªÚ§:¥3:§+º¦º¥Gz¢T}Ñ7�W1¼Õ]}×Ð5vMÁµví“ÈQ)¾¨²ê©¡Jó|Vu2$ÒùJ&Yª-S-òÔ�G JR–ŠÔ¢6õ¨OsZЊv´§ýÀ@†2’1ŒgS™Æl~óM¨®BjÃ|–±œÕ¬çOÇô€†�,µmÛ¶mÛ¶mÛæ«mÛ¶ÝsTÕ¶;$+¬´ÆZ[m³Ã{rÆ9ç]vÃmO<õÊküŠÒ~G_#Kdÿ×CñUÔˆRQ̨é»$H$…Ä’K)\²È&»Š(ª˜ª«£¦Z¨¹Õ×EGt6Pc×3Ê“Œ5Ñd3,1Ïm²ÞÍrÐ1‡qÊÑÈã¤ûî¸ëž7Îz'©ñ-™ Ò˜&é2š-“9r[*‡EòX&«ù +X¥ ÕJÚ¬”-Š[§¬íÊÛ©‚]*ÚŠ}ª9 ªýê9¡®ã:™Z¸¤¹‹Z¹¢kZ»ª½[Ú¹©›‡zx¬«º{¤çyk°a>á³á>EÕ(ÿ¿öêQI?/õöL_/ä´X^Ë ñ>ÒGºwdˆL‘ì_i‰"I$Ä‘1 +ÿª¼T�xc`f�ƒÿ"X��%üœ�xLTY¼³ÚnœÚ¶íæ5ݯ‹Þâl[ζmÛþp¶í«Ûd^œìüã™÷-‚"@Ä}§ê8Ö®õ=gTà–ªö~ë΀ug⺳hÝÙjãA»òÕ»ª6[çµÙòuu]~k»6»]½G›=Þëñ6ÃÿÛ%@Øv‡ýàèÝ¡/daŒ„ 0 æÂXkáp8N…³áB¸®‚àvxž‚à5x>„Ïá;ø6ÀVÜ÷Ä°-öÀ~XÄ¡8§â\Œ–ÑÃÅ“ñ,¼/Á«ñF¼ïÇÇðY|ßÄ÷ñCü¿Çp#!í@»ÓþÔ†:QO*ÐPCi:-¢äPLGÑ tO—Òõt=F/Ò;ô!}MÑzÞwçý¸ wàîÜó<ŽñÊ‘+C}˜”_¯éYvø£-;‰õhÛªà1rkpÅiʼnï¤ÇŽ0ÖÄmôx)SQRéLf¬©6±Ä–mk?Û@MÖD!ñÙÂ4é7Mzˆ)—Ÿ"ÊqL79ÓW'~Ù +ϵ’x–xfIÔlÁ’˜/̶uÉq]kN³Z!3·5u®)77tüò|Io;¡x«\}Ä\3Øürh¦6í‹L`ÉÑ¡Žœh¡ø5Ö²d}ËT¶L [&(ÉÕ–t-X7²J§n%r 6ÉFSn¡5ë4S™lÑ1®Tv¥²/Øoá±`.¦N(Ña3:_ŒjäEâŠ[(Ì&’ÚµªL.)‡7;\(:¼ÎØ‘MÏQz¤øjRØÏrcK\‚dsAõ¢H– Ó\ G`u±ã–L`³sUì“I¥²FdŒÈ‰ÈŒ3ZÁˆüØ$ªÛgSE™B*î—J¥ì`í‘¡S^wðœ(ª4l¾p:T_8ªoœÆ›ç9„}`˜` $p!ÜÏÃ+ð+ü›pÜ;bâXœƒ]<Oóñ¼ïÆGñ R´yÒ1t]V9Ù·Ð]t?=C¯TNöo´Ž÷䃸-wænÜŸs<‡òTžÉyÛìr§óCü,ÄŸówü3ÿÉÿñ&Åj'µ»*¨Aj„š¤¦«eÊRZ¹ê0u”:^mc¡,£È’8Î0ý^o^AGz;Èð¦s$b¸»»l‚»nã8î¾îÜõ2¸»»»ËâaS=W³Ü5ò¥õ•ü%Ó”ï•_•le¾²XY®ä(”-Ê>å„rI¹©<Rž+odÁìKV„ý‹Å°V“5aíYgÖƒõa#Ù4ö#ûƒÍeKØ +¶†mdÛØav†]c±Gì³Ø?ÜÁ¿àx(ç1¼¯Âëñ<‘·åÝx&ïχðQ|<ŸÁ¿ç?óÙ|1_Îsø:¾‰oã‡øY~ƒßãùSþŠ¿ã~þ^ejZP-¤ºTZZ-¯ÖPª-Ô$µÚEí¡öQÓÔ,u :L+©<jÄ0v˜to1"¤f`† †±K!X¨$…RAŠ¥X% Kš¹J…—=:wñÞݳuK—nXgŸ0š5žRÏ,![HºJÓrSHYAm‹0läÖRûge¤.íç3á°Hné«í¢ˆXrRyªð‚œqù¨ïÐ6Vb6o›½ÃõdUKÑÕEA¥z EÛÎ ›wßqÎIÐM•ÄµªÈÎ^µ}¥ÊÉ6æyÙO¿þñÃo®…Œá6fà!¿ÌfîÀFÌ÷]í:¼eÕnˆ“ë²–õ4Á “jŒlGU°u,#Àˆ’Vyrƒw +³šè XƒË¯z£piFù–g^<?ræþ#âb[5ªdjÖÛ¢z›ý7ƘVÔWHÀüXåÙ72Ò“†´wÍÀÆ•íêýnÇC^Y¨Ú•ì:'"9 ÃÆˆÈ ±XÙ•%úìh©gŽ”úìR"^Nå€:þÎq‘U—}%pq .ÓŒšbÿ›6™`Ü<³g—YCP Ô)ãL¶º÷ë¦9u]T$&š¢(ꥋ\8¶jß³©Z³ygO«Vóÿ“âî^ŽõÞy«ï}–Cå 1!wœ¨ÎkÕ¬}•ÕàðêdØ9ÖDæx‹!VAüÒ‰Ïýõ šL¾¦ÄOÒfœÌÑ‹1»a7ªˆÅÉkþ8gP¸mÙˆ‹œQc¬‰á=oÈE.O<yLmª¬. RêcF +}—G “Û¼lf”Ç><×·²OI3bâAI6Ž)’ØþÑU$H}Ø2é]Þ&ëW._cúãJ(ˆƒ½[|è(M +•£ò¯IAyù˜ïàzJÜl†ù_²m-¤.îŸãž<Ð+ÀjšG+9.Ç‹ì~ nÎWi)]dÇÄ’(¨$‰åÐUÌ]à¶+-)†¾ Fe zl' þv %‰NÍì¼É¼‹nZjS´æðå Ô_@îü;Êy;u›I(†acÀŽX+c;”º ¨ØаWä¡ÏŸ/5œòh…ÏD+|$Jö·P›ªÕÃUŒzûdT<E™ÚŸB¿òÔ·ÔZ¿Á‹}&ÎÆ ×d› *^'úR!Uà]ÈŽ™Ò XhæG„×ɵ_·Ö%Y.’€¡þú +mÄé¶SõJ8Ž†ó—ÑCÉ#9%ã:LÅ‘Œ¢8 ¢i̪Eš +Ä€¡¿kúA¡Q[æRÿŒâ¶ú‹'ÑéÎU+7îÙ$Ý#Ct”@ŽÕÃU±PƵjhOÐÿÿ>Pl&1šÂ\z°jûÀ}ä/ª¢feÛ*$×Ê Ÿ€¬{äâàbêk¾ú™þR«zŽ¥gõÚÃwõlØ0±gERS’{øR�;_X±Æ¿dJ +ßÚ6]0ÔÊöÚÒ-/Ç÷/K•/§÷–—Q(‡@‰ŽÍ¿—“²Ñ=1ç<©ÂüivÌ»Äß”`ÜáF'†uö¦´"W5+Y¥90ª&ºe‚¿¾Ù6xì8_/Ï\zù¬ÉÕè˜ÆµbãOÕze‚uû!!Žý!G:æY[ðt¬NX+Ôa¯ÄÿÚ@–Í–€ð€ÔýSa©½"�{…û–¦‹þ+R=Ž¥míÔ#Ÿ�¬ð V¡H;ÛçGÏüõagÁ£Ò¹0¢X#`£X!q‚¾R䇄ªuîÙ*³‰ÂÖ +[‚A€zãÓ`õó×gˆ yF·Ô L¨HMžY/¼@U¾ÉÃýy@mÇ>Á¼Çgló%'%¦õîj¯nÔQ1è:.ÏšœwF‚š´þXêeÊר`y˜)°\èùl÷¹~¨™í„´a…ÙÅüûàè~3E8–aA'§Î/ß½·(8öI˜•5¯X±ÛF+@wz{rëÖ]’›ÐŽêäþ‹«?4õû[²v‹Ô¤Þ&TIL¬âÖHãvÍkÂ%{çÀ&›�\ú;Ø"¯ ¬t+9–ð rpÅ0\Š¡Nè#º¥"·üµo…ÁáœõÛ¶ú’Ý@u¯B >5zc=ðÂÙoÙÃÉÀQ!®a%½'lÞüa(0Áz¾|°ÓŠq�…þS¬%`°-ƒ¿ñ†AØJ;Ôj†ÿX���Dg®’m÷–mÛk³Íöú¤Œ€ã vÒ "D™¢œ +§œ&F%[Î8GqgItÍyR.¸â"ÕÔ¸ä2µÔ‘&CÖUr®»A= nÒèž»ÌÐD³[n»Cž +¹¦äûÌrÃìÒF»‡yB‡ÇÜzJ§gžÓÅ÷<ðè…—†¼¢›¦—>žŒðlœ~£¼˜`W“¼ñ·)Ó|òÅC›3Ã7#œ›µÈ(?æùåÏ‚¥‚àÁ,À��€èÝtÙ®¥âíÑ—íßfž¢÷<ñÔ3&˜ôܦ˜fˆ˜ÄK¯™ñŠY™óÆ[ö™gÁ;ï} e‘Œœ‚Ò'Ÿ9 â%ŽYfÅ_}cÕ€ÚwŽX34b†–ŽÞØÔÄŒ 6Í-¬,Ùb›ÁšÑ–>ììýóÃO¿üöŸ x0��x¶íæÈ{dÛ¶1B²Ëz-ðî^âU¾…Š+QªL¹ +¹²Uª²"A·:kfÍË”$O“tÚujÔ,Ç”,±¤MšQËÆŒK4ïñ?ñßñ©GrüêÕ/ËçjÔªÖ¥EŠUõRÍyrëÔ¥ŽøöìZ·áЦc;ömÙvà(þS\ll+���ÛNÝFkÓÙ¶mÛfÛ¶mÛ¶Íg{¶÷/îJýoðÏ��à€¸@ Ð +è Ìv�·@ìèz$8¼þ˜úø‚ &˜rîÀÑ¡5ÐŽÀÏ`ÎW…»6>‡/~ƒ`ˆˆ$‘ +HŸÀ»ß#¿#ÐÚØuº½ƒ>Eß` &c>V«€5ÂþÃsàðŽø6ü5þ… ‰8Q†¨LÔ#:+‰ýÄ7Ä'&92A– « È.äFò2ùŒ|K!T˜ÊK•¢úSèIÔJêu‰ºAýL=¥aš¦UÚ£«Ñ}éáô4úGFeª1¿²2b¶Û›Ç\Sn·”[ÇíáÎqx–ÏÏ—àkðãùuüŸü'!!6 +G…ÓÂ5áOᣈ‰šXMì+ŽgŠ;Ä“â%“fI‹¤5Ò)é¹ìÈY¹ˆÜHî%“§ÈK”´RW¹©Òju¬:U] îUÿPïª/4B«¡Ñ逞O/¦WÐ;èCõ ú.ýŠþÙðŒêF=£µ1ÚXjl4þ2oLÚŒ›³YÅlaö4‡šÍæuóKˆåõí=×/ŽP‘J‘µQ>š'z"–Ž‹•ˆ5ŠŠŒ]‰=W‹¯‰Ÿ‹ßMÌO2I#é$['ç%¦J¥:¤¦¦V¥ö¥.§~KýaÑVÒêh¶¶Z'¬[ÖïÖcë‹Û”ÍÚ‚-ÛšmÚÃÅ™ìÜvM·Œ[ÇànvO»ÿy„WÍëá-òåÜš®–î›~žœ9ùè³~Ô/éW÷›úü^þ±¿Ù?íÿê¿ËbÙÜÙ_uŽ§A|ïtÕxyD s§FAöÑ`WÀ ±`CD‚¢ŠF‰DH÷gš&&±wå�+"Ò±w Ò-iÄn0Î;÷îòÍä+ÿ} +ìîìÎîìîÔÇGóð¦\Óú=oÚ[º;céð²TSjFVÆ~ÓaÓ5׆[£*FbGÞ#¼MQÉߤ¿oúV*ªZos–ÊoÚ’ð¦ìûj¨åy5Šû˜tŠƒï†«‡Lò®ªã®.&@wîÓ(+Î#¯.V©pŽZ(+Ž‡Ç™ä§“qœNqÜíàmºzØß$+íG©è¤zsŸt¿ª3q½Ê%iØÓ\";ŒŽŠ[\*+ÝŸòQÍ}:ÅÙ¡#ºG©T¶òž#+Ï:=•MSÕ¨hݸ9Òó(Y¹ëHT˜ä›¹«·tÕÅ´F·7·âÇZ?ìÂfýÇ:æ¤e›Ï ‡ÖsTµŠÕ±z¦¹›¯,Ìm÷º8âÊ«y1ÔY×uóŒ7˜�øcÓˆ_*ì3™ËÖ±ëÚ.¬±°ÕBæ¨Y«Ì©Ã§Ã!fìÁŠÉÿ:$K¶ÆÆ +JsÁÓKrÁ‰Vü,„3\jë!f¼}’±ìÏåV™©ÊóQTíÔG˜i=Ö…i^×aëó+ÀUû]”œƒnØEV´ +t“p£¬äp··@{eËï:Eãm,!*ÎÂ?$þ‡N¿ñKtÀ™Ïq:¸–£3G¥;*Ê‹r7üSFå·JlQziø£¢]0eæÝôxúVocà¿ÊèÌ3TÂÐ]<¹p欰…FÀTœ‰¡ºRÐï>Gh+ÞÉCYS¹Œ¶u¢æv +»8 +PãxÀ¾6w‚ía18®o¼ö;Ê®Gè,¯)J¦æý\�3`3*õÜ»ðÞ8>Á7mS2ý®îøùKýë:¤¾R€B&Å©Ü-FBœÅ.ÍÜ:ÙÚ©¾´ûÚÍA¢ÜJW¿Äg42“iê.†íÍUl%Ô3¼k¿ôûôt!Oi yÉä¼Äèâûð@eò`“õö)PVLX±D:1|6:ßz‡¥ÀerlĪ4~Ó67‡ /Qæ/ÑG‡ŠÕS]¸liÔâÔØ,SÚÓÒ´(£žlkç©BAÀ +¢ðÁO¿ñ‰ƒ`I9<x‡I¸µz8ªŠÅÌ™òê3¡kËè‹ÖKN%ÔÒ“´vÎÙ%8ç¯fÎù+xü ßGPÆÑ(g²f*-›k›‚äÑ:}i:ÃÑÏ1eº2ê4Ó±ÿÕQ\óß]g…�ñ±–£b@œB¹yŒ¸Õ1épõŠµi‚¿v…(ƒL )€‹™vDļ&þMÜ¥–QßC~ +ÍctúŸX¹[üÄ~÷þ†M]ÆÖA•¸-¥!Áü¡?¤ØÚH¨ëRt^‰.+/ƒÉ‹) |¨u]sO&CÏXíŸØƒ•‹®_è„£Ík¿d/¬e˘Å[Hì +æZNZÐ…ñ~NÑ ›ÇÔÁ¶}Œ+Û˜#¾¢«Å É*z>xŒ£Á],!:ß`¿Á™§W†•üræÜóÔ§mdN…gÊ O1çIØ[槵×ð�–J¼—Ì‹ù/þÂ]tú´S€R:(Úÿk8ž°ÍSƒò"ô§ÎFy=PY;mÖà ë@ž²srBºðõ¯ â'ÄêÞ¦øQÄãʶñ¡_¢=Ó ¤ýáëa%aÝLpDÛÛ‚²ŠuÏ +$l©óš)á7Ü…Þq¼gJÜI÷4_â[š"1½‘i³ŠY!ÓÂdŒ·Ámˆd WÇu<Á2„Ç„Â=ýmèBÂúû§Ž?û¥½MýˆÝ™ UBz›Àµã÷°µ#0LÛt@ÝÈ«r·æ5íý%ípnNÿ>m´ßØCmr(³´²®þˆ}�¤„:QѬ€:±ùpjÛ¤>¿üŽÚÜäºßH„Bgy±®ÖíH6â’ [{ý˵ŒÚ:Šñg*¾L,ƒÃ¬w:1|#uýK[2—ž¹æàkZ$*DÈ6s^½÷Lâ:Y‰™?WÊšê¿k¬çÖ÷ðsïûv’:L'ò¤g¯Ç•{†‚QÙÖ°àî¤ËÅdù˜®6½o¹ž8–Ÿa «ÿKZr<1¿Ø?¤Î°ðÍ{±ÉL†ï˜1ÕƒwèÄ[pÅ ŸU¤u/¤±¨Ødq(ó·~щi-&2Ú*ÑñžÀßTŒCyWœaÐj›ô‡¥Væ3øPÞ—Qq£õÑÕpÍæ's׎¿c£þ³}@ü¹ú"CÞâîmä…2ºð?TŒÇºO@ÿ‰5Cñº¢C)A˜îŒ.x†hyI˜Œ0Ýy‹„©¼âcP’•—Ü™¦¶)¦hzT+¡Ò™O¼VG +„n,Çü->R{AmÅSʪÿ^8#)9'Ï¥–WypÉ`6çùq‘Æõþ¾¿“VDÎK +õÔïdæÖZXOFíËxÀ}ü(5¾¦Àa¦µÜÅ4Ç&˜«? +ö<ñ[k"ÙÚ„‹í,ÝbØ1Àº”>@Å^?x×Ö±4EÞ9Øåkƒ¾¶Üòߊ׿tñmk¥Ä˜w´;¢æ3ƒSžÎ`W‚j<üÈ}Ųgw°Ïú_îb[ý¢]ñÚMÒ¶øƒ€ÜÐåGÿµÍ»ÆCÙµæÞ=슽ßUtο¦hš«Û`¹™ª[ )/|@ѶŸ”ô€'÷*ÊìÂÐ63R¢[„0ÌÿŽØÜDèÐbØœ[ÈâÙpiÑ?IìxMò`¯Ï'y˜dë(PÈë¡'/œùDô†BXõ�¥áñæÑ 4[~5&¢³R%ß)¼ko.‘†„Ä5Ëb&Cì%é] ;ˆÍƒfÐé73»OT7È)ºAÖõoᕶL†5Ìh½Ø²üö>ì7‡:i…ÍXjÙÎcµí7ÈxÌ:FB#•ô ¢ÿ‘á·nsÙLûštŒÎ¦ªs™Iì:ãÕ&¥Aa<ø::JþöÚU¦Mñb–.ÖuªqýJƬS£è}È0{9™ýÄ’^2¹<k¹?®•xw¿çø÷ü¡„Þ2àZô§—;ì&óïñ‘¤ÏcXâ6¨¨ û6u +”Î$F`T”Œd$ÛÚÙÁâ0ãP‰»LLe7c>ÖuS~Ý@{ëßS ‡åº°†Y4ã_6õv‹ þÈÕ +œð�)Ng[;#÷Ä·ÑVÇO·®û‚Å1<¤íïE¥SC{Q|W\s´`ód¾Gð6£ašðÒ®T0Ò'1ÇÜYUNû³‹¡ô’¼š^’Ow%Òš‡ )|±’›‚SFÜa'(y)¼õ»4ðƒ”ÕŒ]Å‚¿FÁ~ûBg*h¡yL åP?\U=îæ8lSJƒv8\`‘¹]‡—e|}È}ö,‡Á›¤6å0P÷$RàðyÐá·1ö_bÄ0‡àñKQT8Oi5ªR˜2“©5)oÖµ‚5’ø2"0yäjÑ{©zˆ‹»„³°M÷ËDlj\en*¹#G‰9MÙ)ùÞ„/6•M›Âo’é/^ž'Þm|Úý±ë>lMgi†{ªOSš¢+=l÷ÛÃÇ-1Geö eK6å\²í9S ñäzŽëêU?_ûõöÑóÇy•‘õž«hÇ‘§Xtô –#²¹ì=¦üÈwòÝê´—yN;”—Wq!çä§kõaïA#ú&¸–1ÌÃvJÞYâ®×)IÖ ¤"¯ö8`¯»lð¤›(¿r÷çËl€QŸx6ùm âóI,Øšð6Ð{ ¸û“ ® cP᧯kt¥.ômòÓ¿©P‡Û}ôןq _‹3ØUZæo/šróZéç5µ›nU›fRùVÝDP’|®1¢ˆï²4ÆÁ°äXüÜñ ¶ÅlZRë iêùÔèò^á ÛVn‹ÛîÎ¥9û>ØÿÁÞÜÇD§F§¼âГ!©Áî¹³Ò&Pò¥¥^x/lÁ°/ýwÄ6è‹n“sÝKc_ËVuФK¿Þ?áί¥þC¼ûΣþW¢*—Þ‰®Kv×(ÓA›¦ù©DZ¬ÑFdžëܶƒ‘.{Ѿ噆ϖ“ËD¯„±ÒAv܃å/ÏŠ0šå ±…4ßé«þ¨ß-D&ÛÜÁüº:JV2KÅùgOå^:%Ó½x'±ù¥>¨×nÝ"`IŒƒãóïu¢B[º³i@§_ÍðÉR(±·V±—œ2w^5B²çZ ‰äáÔ~ÐͲ®?ÉÅ«©ÿ+³h<EË@P^åRùÓÛ‘ + žTAîHöe]'ÂCÐå4œ-ëw„e–¯Õ…Ë)Ù¿4+ã@Z†)6m±QOÄý'iUò{ª™NÂû–eÀîYuˆP'Âî¼?¶å-Ñû߆µ¯û(eÛ¹Û{QšÌnüzã·ß‹6åï;˜>®¬C7AK”@,…&1‘äŒBª’”=¾n9Ö ø9²wŸýùÔñ92'\¦Q3÷ìK۵㓔 ™UÒ¾¥á[#<4SêÅ2™6ОŽÑéÏÀ=:*ím³ªÔú’iÛ@:"‹ÂåspŠkîR¯… +E§<ù€¿®*õ¾TÛ@PóÄ>ÄCqõ5?T*±½R—‚%Ú=5sj&ñxJæû©‹ömKݳ§õEfL]æ1gÿÂcåq +ƨ÷ªo�ªe1ªƒ~5LHcÙ�ÊîÕÃøIQ³cŒ¸žë…xRÆãRiÞÍË'§0.ô_Âc4ºž¾Àí ý?ÉòûrØgÜ¢Ù&¸5‰qkôrøR˜3¨W"µ2øÈ!`Â~ùˆG}ÂeØÚB$º¯»½2ž¡«5X"“MIÙ×Ù_ÖîËÁ2Q=kí¨¥èÌÛ—A=ñ±†Œ´ú‹gÖ>ÓIþ$¥¬mæzËæÍûØ-;D`;íwõð!ÓáÃ1é‘K¢##F3°Òù7|Ë”g·i¨ãy +M|¼ú-»Í¼¾œ+NÂ)ô^W€’CÔ&¥•N¡%0Ü#|ûWäÛ[FïŠ7Ù_p»ÆŽ±ÿ¨2ÿ{�„“*:x1ñLù](chš1ú<àž +yÂJ)7¥œd9Ã.Ëzþ i¦DžÕæ«oÏ—0•ëù/ºá"À©>&ñõö‹©:*éqI†HåD!£ß6JžùÍzð \¼ÈX5Å4Þ3`Fô¬åd n.gx“4ۥܜ«çN„L0ð‹( ¢}þxS» Öé°µO=w0è÷þ®íŸû)«ß…΃B÷6gòðÑRxJÉÇگɲRò±'ØÛ{á ¤C)¨èÔÿõWaJ]ˆåŽ*ôVM ±_$ÍVÄ"Ail¦ÝÂJÁ!q'F‰Éœ)[zÓWR¾jЋžKîTl™ÄF[:ÃVF:h«pÿ¥•‰lpÈ?…ÖXÑ+ôÑlûi"|‚miTX? ¯ÑòÈ>Évb» k¸¨ôoZã ‹œ¯ŸqPg˜žÜاÿlìSãš¾ Dø¤mÖüÕë5R7Šž–ÅH©óflæÉ{6}1ö@À©ãÄ‘Ò +¡öÞ?‘—Tä‰=ÑE|EAÔõå—æåŠ@Ê‘>›¸—–úɇ{<‚&%H1ey`?>L]þþw?4b8~,m]¾1&ʃ¾¬hÐo¥s£%¥±ÕØ–ˆy µ¢’aL¹EGöà:lK]gÀ»É»7âëµØ®‘¼€ö±&óÒ{ê°à35ät‚A#"&†.Íö=>ÐÓþUG[NôÅØ?ìh½îW¸’gð?]ýÞ}»Å7‘źÁìß1ðt¹rKIþ-O%ÎâÃWŽ½M_€”Ó £é%,,¹ˆí…,~ÎYP*kI¡ŒC=n8N“åÁÇ–QõÿÚýˆÏ™ÐHWhèiau[P/pñä÷Œ¸…fà^¯›|üâb‘M|*²‰Øßû.Dsœ¿qïþe6ШŸg_Þnó*É~’Ìçø…ã„¿Qi§#ÿv#:öôUŠT´A”ámÈGp”ioÃ(Þ÷#àGwe³*b{¢·/…í¼/MEéæJJ7ó£ö¨ìÄ’d7\U©¤¾†e üb²,·³ûƒ@jDBà·Éý!“X€5¡?kN›’LÝd8-pˆ5V@…3Óo\¼6¹Áõ4J×6¢¤Ôi³±§ú²gÚÀ½_¦dDPh6cXþüË˯|ì¾bêh–Nc°Å†ŠK<ôýšŸO±=…8¸¨éõT;ï†ÎÚGò¹œ£.eÏžhˆêZ(—ÂîPÙü®zï½ó>Švqÿ¡â*”zÖð7ø=† Õϳ“±ò™ã3aû*ÐI½Â™ž÷²CÏÝ‚ã|mÂu¥V›IÕBÊOÓþíoÖlJ-9)…¥ûN’Ú[–5ßÀ,j"[T']a4ùv&^nŸ¾èšîS¿·d¦mHÛ´{‡»}P8Œ:9õJùq=@?›i]´Í€ÊÈ`¨™<’EøtÉÝ%‰à ÛŸáìÉ=É?>@ýdF +ØŒD˜G²q,é‚S;Æ. )ðvà`šƒªhVc€3ÞSº'ã +7ôBñýI©È¢S»²êãíuúdŠ.Ø´\“3WL§MÞHÓÍ¿�zRøÐ8v-0 + F—¦Þjí<E§šìT{zªRªºÑè ¤·Ð“h²*iü×#ü„íIžN¡X¨†ÞÛEÌzžD[HJ9�þÇZ‘~æ†:cµÍw“¹·¥-ÿ—ÖV⪬Ob8ÓmKbZk²Ç¹ÖhuÛ-ò.³I‰Ã-Mz2FèɸÁÀ}ë™r|±xi%¼Þx¥å.õäSµg‹Á4—ˆ‚Úv'툟ŽÛ‰ËÖKÜ]æŒâIÜCÆ@¾OçÛ$t'¶ÂQèÊé{¥Ÿ�Gq?oFåF"lŽÍèÍ2]ô±IOWá)Œ°½NÀ¦|†çU†³ˆŒDëF;ÒOñì¼µ7ËÇ,Íß)Ëm4W1†æ˧ +ÅšMÀ!0Þa‡ÙcÍÙÅ7d<Îr—€© ô¡P CahkƒÉÄü1y(,$_ŒÔÆm±ÝËŒ¾Ø/òWƒ²£7[ö�Ô®Y~Â+‚ÇÒ‰ÇMV•4*šFm£„á9„í¾H„¥¨W¶¤`$9,[)%Ûf«*ÛRhtTÊj Zo¶ÐEàXAù³Xz´ðtˆ8â«Œèñª²0–ÂöÞ,ÄÎb`/ˆEðDõáß\uÐ^†Óu¦4»D:²ž^ÂzÕQH°™Sð_pM_±Sb:_@l·VÛ9¯ŠÐtg…¦Ô²‡¦Ô"&̉ž<I% Í;r5PMl³ +?9EÚWÿa$~E6œ¶;J4È ¥ŽÄ9¼¥ªü(ð"Þ„wðàkøT¼j¾HVq:£7.ÀùœJ>Ž%[äÍçóH%Ž5¢ÜÒkÌSìŒËž<{^ÖwæÇxÓWd|ëû€t±nâM×[æÁüõ‚È*$ýÄë -Á–ŽÚPZ&ß²P2§À½¶’ýv¢ü7TÞ¼OêÍéÙƒµ#¥óù…‡Ë</–DL™1pœ‘¸x®¤JF'œþƒ°¥«˜KĒįç‰îÞÏï kó_m{XÔØ÷6ÃL6q£fc™1{¯ X±» `G,HSQÖº½Y×U,ˆ*½ØA,ì(píµœð;ã·ßÉ°_ÿž)¹çææÜò<¹å¼ï[<|‡b|w}Ïé’û&Ðu¾Mmÿbà´Ñ“-7†2'œL¯4ß(ž;Ékjˆë/Ê´c«~!ÂÚëã¡ž^Óû»K/™©¥¨|é_øÒ,ÆP”²Ó'8 +-‰¢ÊЄV0™º^|ꪎ ˜Þ±ŽßÚ™§,F|’¨-p”Á£œè½ì`Í{0«{ð]Ô*»ìÞ¬²£ñ9Eíùé) ¡Åé66ž0{ù’`e=Œbà°VwvµUWĤäÞYb¾W:sÔØ)S\F{:9MÖ›q/« �ƒYœ¿ò#|_Á^w¾‚CUwiä¸ß�L›®<e>—9¿@){Á™<.ÅÙŒc° öÀ`ôÅöàÁî5´¹M5:*aøZrñ/}§œÙ]œ}Ñ|«lö0¯þŠØûßpc¡ºN\ShÍB–ú˜yn]‡,¼çĹ+?AÀ[˜òÑñ88¢Îzh‚:p¤Wæo¸B½í®Aã»Þç\Sã«Êƒ%'ªMà€|%¶@ E~ð Ÿ«áã‡^^ýMÆ¿Q~8t²_©= “Qf*)λv½$pŠ×˜`ï,TäŒa gÛÙå¿)?Üžçnò?g …†ì¡s|ÿQwäM©Tèˆv°%Ê‚ãÕ‹ÉÇò4Õ³Ù+`_–¿âÙ•™yêbxÆPz@0øöƒöè£lÆ:i¨gÑÍòçî?(˜Ôs»2!zê¼qfÑÚã:OÃß[-VJ~¼8[¶v»ÎC$ôÒ•@/=˜T½Ï[âyÑÚÕF.TC/Ç“àŒý —1ZØJ³â¬ŽËå!‡}üƒòâå·÷èû?ú¦ äªíu^͉֦:^À2雬2Øš½òÙK*ÈÈ,Ì[é?{\¤ˆV'ÕZsŽJ‚|†/:”™Wœ9[ÉÇÕ’a d +¢Óuþ¸Áz` ôÂÀœGÚ£O‚Å0OÙO{«ª›@×›"8‡ÌrŸd¹îÆäeM=m®,ð÷:2 ÷ŠñC©µ³tE^@4¿Œ à +ùůÁ@nÝnQ¯À1z£ŒíÔ˜u†?ÜÐœYôäiŒ—éÁ¢Ý’!{™P÷¨?4{{ëpE©eø &0hfØóhÿ‚cÅWóßm ~ ?Z\ŠÁIÿ~RNZZnnhÚÜ9¡¤dHÍ¥ºÏ+$Ð0&èÁ\¥kgÏ^¿æ}vÄpoïÃÏz_×&,u0ÌuŠv„a—Æ^¦6‡@P¥]Û·%dÇå—¤,M^³míî ›Œþ[v|»+~Sè.¿ÍAÛŒ‰™Û7¥íÚ¶iÃîÕ kvDoˆ_¶Ôa}ööülSBܶ˜åqñ±ó¶¬Ÿg OŠÈ¡§£¿]K®V¯XO~Óc +ÖdÆ9×Çù ‰‰_û]ô–ØÍ+v»msú®ƒé©IßÍ‹˜gŠÝ¿‹4¹>·Ç0(Z—¯¾×׳ª›”ô˜qbóaÓ ÀAmF7›Ñ–]Ö‹©cýÐé %ßR®+óœJ¸2`´ÏlÆvÏc¦ [nÊuÂhKS±œßáFonÉåa·Hž®÷ŽÖ£ù,‡Hå—˜6`7tÐÅ]‹NÌv‹*bWe‘ÕØ ”Ö±áAð…Æú:z”ÕÐ Fš`Ô@èŠÊG‹Ç8æ#Ú£»š°ËTÔµÖÎÀWy0¿ÒC=ºJ›«Ô%Dîºaúš3e‘‡|vZŽïØŸyÎô´`®%í}‚e 7Ñõ&tä</eÂUXì¡ ‘CûÒiàgó:ö•þ9×í¥'ÁÞF®üÀþJK7jñr9ÐO<¶[Öa@›=Âô¶`¼ö_añYìiú›3n‘1¨‹%òÝ×`«±æ.¶Œ•°õ>1L°_ýP–Œ~6c+K¥ŽÂŸßíŒ5GÊýYÿX»÷g[¹ÏCmO±"^†ÅŸtE°G_¤½Š{>áVl‘t‡Õ…úÃ)©?kS_[f}¢-³>ñÃçDVÜ„ªuê3}v’ÔgÕÖg,MR8„æ—ã‰äœ(C^tùÚAâs6Ì>Aþ‡ˆb»&4:4"ÜAÄ!jè;yQ†Žõn?Òá(óG^Ë=�½4à ¶•.]M..6Uظ®Aþ¿È!á6ÇWj7lŽéÆ¿ŽC""DkwÍ1ö†\Ç“U6çÒØ‘S§šŒ‰á<ÝÕ* 5÷xÕÿ¯ +‹1ñßZÄvwå\5V~ÇWðª„~+x-«HËêp<‚‡ª¥ÔÞ**;m¥¬"²´dl”ug ù_ßÊ°¨é<ª{°–ñ,‡ÓL£Q‚¬ëE|.Žý3JM‰Ö]†/Aÿ˜¸@7¥W£—-Ž]¸¦\ã¬Ù»+úÞµæsò¦¦xmv¨èåΡ´¬-°9Á®uÈBÓ(˸ǹó[ŠSò +°<¤ëG.T$Zðç¾gfÅ “¸akTý”è¤hÇGàøäÉp¤ñ€PO¾ïQlšf/îðÊÂȼ`ã…KO§ù:}ÐÖJêéE•êã‚Šý¡i¨§rãþ˜”6½hxïæ=ï’èðõ“œ1”m·ïÁd<fu‚ÓRþ¡¬ÒÍÊß‘X`‚¯%Æ•ÇŒò3†Í÷ZmANãÁrµú*4Öñ2x£Q£©ßÔI=]Oß«Àþ«x„ýéŸþøÔðkÂoÛ-Pxw²×ón¯5O#x»aË(û(F²Æìq?ÅÆšVýB‹QõYÅbÛ# ô1o¢ˆ"Ñv¶ÿ\ïÙŒÚÓT“T'AyGBc®êhÉå3ÅÁ3vZÜc.Ííq¤»M];¡EÁfc‡]ÂÜ _fªZ\lj`øÆ»Yyþ¡éþ> (#€Î‹‡øCä|ð¬1†œ±¨ 9cÌOé›8¾ÆßD'Nt†Cïu°tz5Ym*¡;x¢=ÑÝ Üq<è`<¸Ó¦•ª¢·³ +I…2Ê ì§ÚK¯A€„Í H ¿}HŸ2d4ÇfØ›Þp£;„¨c3FìwœJß—‚“"µuî¨ê¹ŸÇµØ—œÂZ,ÝÏ‹‹`è{ßëj©¶Zµ5ÝÀûªÒåš »ªÎÑ_} ©s ˆyÅYµK;>c/¤ÓP¦”ʨ ¤¿9ü½€~LÅ ¦3'âl8VÈ—W@x…mu<Ǥó…¶(î›™9ëâW,5ýƒç–N4_0»ÿj¥b5“·qÛŽ$³q}fö¤Óf‡©îÐ[\¢*Fê¿DS\â'˜ö §1OX옾¬^¿Ñq¬x‹lœV<_KulºLö5Íž@v‹1xÿË^^TËã‹jÁ¥–Î73ì¶È ¥ÍìèÁîšL©†ßmáÕ&M__¹õæÅØ;:ŒÜ¹Óå¡okã½ZþŒygO§çÍ’EX‰YÐý‚ûCØøZd;žÍ°ƒåÁ-×ø`•êÒãk{ŽÜT¢“™€Q1®fœ‚] xB †¡0&Bl…ÃPòœ45h鞬ôÝÒÀUi»i¥“»Ô?c,awh@=ZB[UŽxS^œ~4ÓBþ§oÏ ½h~öw5 ØúaÆàDúD!¹ÇÁ¬=³Ò¤IórÎÝ;ýNyªÿ¸o•k}<†šÅ‚•¯Ô„'Ž§àËe ƒî`g|Vß=C +,˜Ÿš‘q$õTJY÷Âæ1¾Kf-šã{r^~pžÃû#§ +ªM/†ÜhMѶV®C»ùl››=U1>k3c–wo6yéM«/&Ÿ8m¹íÊ«0Bý,å§.˜í¶th˜š—’a:z(õ°Å‡`3ã3)¹—Ž%gNUrfry¤ƒ±*dn`´ŸYüC}U«ƒÂ§Ðè© +§KOë-Ðè³åiýR¼Âb³®Ø¿xê +$UèS»“¯ÍÑÍy@xÁ†\½:“Æ"4ñý‡#]1âhú„#åSÎB%Ç€¾ØúÂtðíê«]±/úàt´]•ßj¥{•ÅÇ•5²óˆ[O_»US0êShyƒG6t¬>qûL¶®,»öΣڪl=”Õ»HÚ‘í5…èQ-®ô1ƒ™,ÊW¬Ó Èu{°ÏµîYwd‘ëÞ9šÁéüŒ|Šç[°øΓt¶¢'ó€ù–ÉMØw¨È„#öK%lâ¶Õ±qñ«£”)¬ø +Ò xÐGhUMj``1ZAšT‹ïÞÁŸU³0“Ù‹½@+b¶`¯(væ\ÐÂcúƒ…qfEܬö¸nèÊoCËÛQ{H5eç<ð<çììéåâRæU£Ü0ÌHÉÍMNÉÉIŸ3'"|.í«;ºÕŸÑ=ùKÿÄMú«þLVüì¬>E‡CÀ¢ï°‹'³!šÆ‰#ö¡Xk"Úa¶dô'0Æ›ÀÌPk(“v‘Þ‹ ™ V ÿ|O‡‘;r"ÐÊ<0ªÁH"#É“q¥Õú$-ðO[õZŸŒ‰I 2-@–èÜp‹¶ýtOÆd_U««u{4s4EK4xƒÉyKµZ£†¤jlYhVÿOZˆˆ»Õ+…|*ÁŠë!©!ZïOÁ‘õß“·êý›ºx¨/¸L>Rô·Özhv%tÒb Ƭ¤SÌX6thgY1VjªE‹huÑp±(]:aœNè&JÙºkb#«wÈ&lETÈÓ˜¢€qåVuÛVè½õåV÷r–D—}ñs#á‚ðnÃÆF@XÿK£/Õ‚¯ê¥£F»MÀÚ™HlÒƒd CHªk·†D»HTò’4¹HZ}³®—ÎT>¤ÇOÑÒåéŠI +ñ{ûÖöcìÇÛO´¶³±_KŠÜ]öíÓìóì/Ù_µ©íŸÙ«öÿè¿Ð7×·Ö·#¥½‹Þ]©Ò/Ò/×ÿ¨Ï$=îQ}±þœ¾J_«WõŸ Œ746 -í®¤Æn˜i˜c&=îCŒ!Þ°Öð£áCŠ!‹”%†2ÃeÃ5ÒâVž“÷á½Aeìžq$En+Æ•™Ìø0³˜0&Š‰c61 ÌRâf0yLs’)%Â]æ ó’©cþ«c¿b›±Ö‰”¸ÝØ^¬3;ÊŽc'°SHëÏÎgClŠÜxRä~Kª†ìnRä¦"7›Íc³Åliro°5ìKöû™3p¤ÆuäZrí¹ž\_R=ãÆpžÜ$n:7‹àæs!ÜBn)÷M~·,H³än²ÿræ±y+´GGE”2†ðSÖ¶Ùu#yɉoठâÓ™¯ÿIÓ¥VýRV”ýšpêãÍÑ‘E'kSì¢6բİк3&Y¸béªsÌ’[—*‹û0+RWç˜Å¾²Fè¬ñeÉÆä8NLŽ‚u+³onò7áÞfóˆÄ„óHM%û.+Hÿrï,xò.±`Ï‚3Æj~k°ßwóèMÖÀHЇ]K¼�V“Æi”œv¼†Êô”ƒçÑòîâç²Z)_ÃäÒò¾×,Œáq +¸¢L¬&Ùaœœ†ÝÖ¢ÒêaµpTu£ûom‰2„ŸÃOÈøž¯YXMºÝš¾¼ õšjB=F¤¾Pÿ‰Ë§™ñ+´kPë‚výêÒðé…šˆ³rl«üfœŽ®Ø§âTªØ¦¿ýTPyIT< }dpü„öØLØÀ÷—é=;”þ7ñÉ²Æ —EÔíóÙ]j:z$¿òreÄ´s–ËO™³£d¡ÎŒíÚõÁF(½ „6¤Œ<ŸQtŸ¶7[´íÍò%faÜo$-WoÕŽâ… g˜E‹æÇ.0%X¤L˜ÀøžZvÚ,Úº9Ô™™xøHItØ1Ë‘{LÖ¤‘ûFѺ?h\—nWÃÀ®#dc–¯Ö íð#rð‘Ô|ÈQÒŽ’¹¼«¼M(?E�ü¬EàKì‚ŒX–¬Ü»Æœ˜>&};Óp5ÆB¸;ùš†4$8EÀaýdgÙ‰TŸwXA=¬ÕȪ¢É¼°æ «:pÖÆÖHFüÙƒ€…1Kda‚—ò ·cæô-¤ëCžÚ°8+pT0ØHRùµÌkÖÆ[a‹Ù!øŽ´à™hštOHáMG5VN%—®†oø•²"<šëˆð$€ýâc1M¾~ν†gžö°Œè-”;^Væ{ÌÓÓ××S#ç+ùÝ¡1‰%^s+‚m²¤yT¨Õæç{4?¿ÔÐTÒ‡²à¦n„¡ÖŒ–¯±ŽÇŽÖUèÉ£3];Fòây|X†óéŒ@j +E¨J8Mð¨p>öh| )(déä‰_'åN¶ù‡(Vœ ³;*÷<-1e†§‡…MÙÓcçh‹°™ÄQдN-òüTHà×ðÂÁCi‚&ƒÍåm¨"ªøy¾ìž1ëxaFV~Á‚Ì�˦ÔÝé)É‚.à‡.0«Ý2h‹£±-Žc:cÿ"‡†‡Óí8Y£J€(¨«ÖQUea2“^?RW{k‚Eú[±héRA:…�¹ï¹ñ5¹ù û’-‚T—„ma´…Ñíö ÎbO ‚öÈŽÀ´ˆô’¶0 ²ï¤.t æÕÁÑ䋤oy]‚¬§ÞÅQÀ 92+ü(‹+wò$ÿåëã—…äᔃ‡ÁCmNyxéê+káõbH ¼ú¦_$ÜÚp|o~íxªœÞ}εÂ_eå5‡:™ÂGE†Ç,ù}C¼%®;5`„,X·}A=ý߹»g••Þ÷!RÖôÈj_ëpRéÒF~Üö¶|åÐ׊Î눩'eðfj‡4Ú+tF˜"œÜÁi¼ ¬àþ/¬F½-óïâŸd§ÿ$<mÞÜ0⟤†ä(¯ûdú•Òyée:s>U¸)Íl8"É’î�/夦çf…¥Ï ™?'-$OFÊ¢ ï9&”CD…p²to¡¼{w +UÊ +ª+é•« õVÑß;{öÞý³Þ,dig½pZ«)'±\6V +çˆà²²”:Ñ5ƒÊä÷+£…ê%ÕŽÂ ÞÆÓF]cÌ`…~6Ö=ÉK#e8¥yÿêrÒ¦yázS¬÷P+@½ÐO§Ë'd°ÍqY¸/ùRüEÕm‚+wF�J6Xë�ÃYè�öÏÁ$ ‹¶Ü¡.ÖçGwî<~”°jUôÚ(³°œ:b½— Þÿ™¼—M3ÿ¯¥Û‚î(00½€Û!šà‘hP" C/a15ÙX!U†Õ «öæ¬M7‹„¢Ø RŸñW^ 'Èib™,|AO«Ÿ-Ps^ ÑD<4B‚¢„ÿ}Vþ �x-Æ%Tƒ†Ñçûi¸»[´W\zĵâDÜ!bKó6—×{çEÊ=rxÅ¡ +‡Œ|Še)¥²œFÙL«l§Sö2 ‡‘LÉä+rM¹Ç<âDžq!¯¹“¼K$,£$ešfV%k¬F¶X‹ì¶²pþgßµ¡�x,¬`€Û³mÛ˜m3¢‹fÛ¶m›Oá{3㋶h¶m³ë!É—¯)þö� `§.ÝúDœ"² 5dâX00q¸ÆŒ3 +B�œÀ¢¹£‹@*0ñ[ hÀYç2E‹b¡æ纤†‡ŠoãÜ\Ù{A‚ì…fz1×æb+¼&˜/ì |#º&ž.qHÎIÊÖËg*+Ê7ªkj›:§þ¡Ùªm¤Sèòú¥†F†GÆõ¦6æ˜Ecùa½gÛmÏÙO9:.9«\«Ý÷)ÏAo3ïQ_'ßJÿä@‹Àà‰P¯p"<:¢ˆÔD-Ñs…Ï´ ¾ÒaøFûà;Ít~‚~qü›îÁº éü£›ˆtŒÑ/”Ò”1rFÁ(éªèªÙ¶–s:ZŒVºŒ6zvÚ€ú€NÊ£‹{ÜŒ‡6¡—íã÷´ƒ<bÂt#´£tcôãœKð;IZ€)ŽÓ|_„¯ß _èÿ î?™õ�$IžÇq4ëlÛöÝžmÛ¾Àڶݬí1Öhk쪱ÚìÜlÍ4Æ슮»\Ô½èÈÁÏû“5mê·ÿ«$êg«?¨~¶ú|Zß®¾]}»úXy§êNÕ¹Ìëìñzÿ~Cð +ÕûTïS«Þ¯zqZÝ®ö€Ê²Ê*•Ï©|NeÊ +û• >£ìaU9UÅß4êOßtQZ©ŠTEé›&Êboš¨‹ÕMNë&ŸV·Kݾ“ê"ošxÓDå^oš(-)ݦ´¬tPé ÒN¥}J{” +¾¨´!}Éj³®àËé;*~¿â>Å3OzÇñŠÿ©øçŠ#Å/Wüò“®`Šâ—)ž¢øeŠß‘^A1}ϤWp¹âo)¾Qñ%® Kõ×U¿Sõ+TS=Ju‡êîàmÊÛ\Á—2Ÿ{a*Á—¼õa‚c•óH:HÎ!i$YAQGñŠˆâŠ>Š!ÅŠ-[(¾Ÿyy¥!óŠÊy$Y·\¦Èºå2Å Å ÅJŠé»Ï§ØGqœâ8ELqœà ÁR‚}Êw(\uèÏøaUGÜìÑÊrŵŠß®¸CñÅ·xû¬êTWTÿTuêªTo*J‚JYý=êïQú²úêWØ¢–à +[Œ§¨¢¨¢AQE1‚âFŠa7QÜ@ñŠjŠ‹(ŸâzŠûmÑùpå!š{h®¤¹Ë5ö¨¡º…ê2{dÉn³GCæsþûóöÿ‚×þéDÒ9¤3I'’V“Ž!l$\Bø8a=Ýt1]Hr?ÉD’‰$$ÃHZI†e^¼“dQæõÁ;I‘<Lò0ESºE?Å:õýj«¥¶Qm£ÒA¥KUöªœ¨rØPa“Â6…m +³ +/Sx¯Â5 +ó +Rx›Â+O*üÂ&…Y……7(,(|Há[¶+|‹Âv…3ÎT¸ä´ÂÝ +Ë +7+\¥p•Â…¡ÂC +§*|b¨ðe_V–(;/ýN««ŒP÷;u%Ò«09é®s.#ç2rj¿¬öµ_Nïù…ôž_p”õ¥es•p%PRØçJ–ïSºFié¤/]¤vœÕwÝs•7\ï ×+ýÒEJÿ¢ôI¥-ÞòµÿPûËôOádµËÒ{^àž{ÜsêÙªg«žyÙÓTW©þ7nóÆ¡7nóÆ!ÅŠ 3(6xãnoÜMó$ÍŠôæaš§i–Ñ,£ÉÑ,sÏÝª@õÕBª.ª.ªªa6(’M¶ÃF;ì¶Ãn÷ÜCjÒÙ¤³IßOzô£¤õ¤·‘–HÿLúÆ ~O:Š´‡té ¼Û/þ»I³¤YÒ¬}^šîsé.Ò„tiBz-édÒkI'“&¤ éõéEÝIz]æ½ÁkHII‡‘6’>ùpð:Ò'H¯#}”´›´›ô>ÒÛI·“Ö’.%í =ù‚_TÒàÕ¤Ip4xiBz_P +ÞNú8éC¤¿#ü¢ýʦo$Ý<¼t鳤Ÿ ýi´@ZȼÌÿ¿<xuæÁ«ILzÖI¿óH’Î#=HúÝô÷b.iéu¤ÿµéfÒfÒfÒá¤Í¤»H_E:–ôÒ¿Î$Fº”t;éI‘^NúsÒï¼(l!aÓ-¤9Ò=6=@ú�镤 éHÒ7öŽ¶i‰ô1ÒM®7q½ éM¤7‘ÞdÓĦ[lº…´;Ý´;Ýô>Ò±¤÷‘Ž=iÓËI7^A:‡ôi=i}ú5®'ÝìzÒÒsHÇ!=Bz-i-i餫I»HK™/0|’´‡ô é~Ò>Ò,i‘°—p›«ÝDèb }ëè"’¹$=$=$I$")øÖ½‡$ñ{IB²™d3ÅÆÓ¾uûըݫ6V«ìUx\á…‡vÕEêBu¡ºMêB;DvˆT†*©,«<h‡Hé&¥³”Î*ª‚3þ.ªÕ‡i}1/Úá¸ú>;Wߧ¾¨¾h‡ˆ`5ÁX‚ íÙ!"Ye‡È‘";Dd›Èv‘EdQúm #;D”eDÚ!’æIó¤yÒ<éxÒiL“Î JºŽtiLúéLÒY¤1iL“Ƥ1éÒ<ižti+éÒVÒ#¤I.$D:‰4&}’tiþÿäšpIF»%Eçe“MbŠíc†¢cfff†åÂÌ•Ó’Ã̌ƀâ“-™b’A²t«³¶t¹™{åùk3Q´Ì»Uõ—‚Óï}ÝÓj0¦ë0õcêÇô¦~Lý˜ú1õcZ…éc˜nÄt#¦~Lý˜îÄÔi¦u1Uó˜%0iáÝÉe>‚EBÉȲFr[£‡ÏÁÐÉ:–ÖC´ñOèõûH;@Úµ¤½ˆ'ŽîO;N=izIù�)OãÉÿ°ú/æ>Ò\DšsHs,iî Íu2êƒ2ꃤ94×'ús2êù†çY#YçRf)%dý1éºo>7:£]èFCw/t¿zº¿?û9Ó}ü9ÒmxEèÞ ]t~èš¡«…î—¼CÞ¡ÏXûcƒ5nL'ïÐ(ãP–Z+$zÅAŽÎ~Ú6í¦®ÙÃ-úFê&¾On¦®ìa¾ñƒzˆqT§;uÏÈ4êt–qJg¦Î1z¨qHãÏÚÇðïr©<v»ùæTkÃç(ƒ÷†?gó:ß‹CÏh°è=Š>°Ñº–žÖŒ'}Š=ä*¡_%ô“è¿c£ÿ ô¿þÐÿFè�}ô)賄þcÐèÏ~”¬µ`qQÖÚËrcýSXÔ`ьſĂ‘D^v?NÊÅ“¬µ&f7ÝXL•=äTÙCF°ˆ`qÒ¶w߃E3a,ÂX4bÆ €ÁQÂ×@¾j?´ ¡ 37öRPËáÓPχz.Ôÿ€ú²C8œ4þÇk99)5´_…ö´¿‚ö”‹¡l‚r#”Ke‡pÊ“Pnƒò$Y' Ýé\HAºÒ%dœ€v…6BYÙΰe;ÊÑ©³å;('å‚Т|Жí +ÉvÅ˚탒íxÉv‰œ*<˜:[Þå¤lÔÐN’l'½€l—<m¶€ÖPaå–Õº!+»´{¡ ð&_„8ñã' žñˆÛXsIi2sPNÊe´@n@nðf†eE&÷Ç0YÉ7ï]ú&>oæó³šÜ«1jĨ£S1º¤3yn•Í:+‡Ï¡Ô0ên¥°òëüz$6¹TÏϧ81*äsWÄ*¦˜W‚Ûû1-¥_6Ò/1-Åt,¦sÔÔ Õ§n—³?¦;1ý³ú¯JÇt<¦aL£˜¦kEiÊA9)Ë´ÓRLÇcú)L—Xg'ê]úF,oâóf>o1ïÁt¶¤Ò1‚éE,›°LÇ2Ëÿa™Že:–éX¦a ïfc9MçRyüy¾º•>\§ùõ(³ ËR,ŠeúËÕŸæWÞ$ý‰iRþâUêÏ_ô÷ç[e6 bÄr Ì&Ÿ¥?ÿInÁð^?„a‚¾¬”UîcÊ€FCí`ä¤\æ@™MbÃ*Fß݃Q5}wFô™¹“L6Ðgk°¹¬3ÙëgQÙf³Êh™UŽc² “ZÛ¹ð1úk>&1úë4&]ýô½Gè=6úÉÐ{RÓ³ºsPNªÿdrSWègýìg ß +ýV¡ßú¼èA;ÂÙ7nƒnmÏN‰³Ùë©äÝÄ-Œû[)û®"2ÙYлÑþSç -› m#Ù$È&ÎøÝGë>Z/£õs´¾†ÖkåqyÉ#H@rŠL攜#Få1 +M4в”+ i—~Yü‚,Ó¹cÿjÆáHw«A&ä$§Â°dÒUTa[&¿‚*U"Å«Ë–EïS»,f,ž¦z©õ„yÊ:E¡ú¨8õ¤YI‹ÿ¦ÅŒZ5ÏÑê1Z=®Lž¬(M9('åbm=€O7õ*Íl$Ÿ.òi„ÌE>1È\ä#Ÿ6}+5Èì‚Òå£PÖCéÕ™üY•Mæ9|¥†QwSÃù7œÐ“[—Î¥ò¨|ª€*¤FQET1Uóû0-ô ÓLË0aZ†i¦e˜öaZŠéyv¬7cZ&ù>‚i¥2‹CL/h夬=S¦ebšSúÀ¼„i+oÈ%L[å̶Ã5àìOaXa=†'1¬Ç0Âl¥0¬Ãð�†5öè\*ÿŸO±ŸÂ°Ãz£º˜*l$†¥Ø%°ûvÂî‡r²y +«µôßjŒ¦Úv|u2ßþú ôK¡ÊŽ/ùz€~ÚŠA£m×@Þ)7TçRù˜PErrrÕûŸ#Õ©—Šqo.²½ÿ‡ì»ýœÑÐÍhBØáNç@8ÑòÏP–ËéaD+JSÊI¹òEÿ]ξ—ÈÙ÷ÈÓd^H³ÏŒŠô•²–¬þ(£"¤³(ëF*d +Ê:ËÙŨhÁ¬NçRyývÝص3*"ŒŠn,ÏcyŒq±çÝsË?ð²çŸU�¢�D;!ª…¦ /45ÐTÚhA€&�IŠø5r›4Ëõ\u–´‚ÞŽ“CŒVß#·Eß&‡6Z>@Ëhy-OJz;Vhîår’œA®³zS)«7•‚à8Ç!$åà×Øg*²ˆ’E\²(W·ÙÎÊÒ˜yn„"a§xNçerÇaFe&ÉS(k•jFt#®Í´2×oËéd«œÿ‘-·“<ÑA9)—9HÖ-£Èà‚ÜN^ ƒ5Ìo‡dwHöpSÈàqFt„çeD{Éá#:®³¨l~ŸÃçPjeÝÆ{ɧ‚|t.•g6’Ñ2 +2¢[Ñqù6<¨K0}»˜&dT»1Šé70‹i¥Œî…˜~Ó¥˜v`:_Ö6^ë‰s'å¢,Ã[1Üa+†û1œmåΧ5Îj1¬Åð†uîÁp†^ÌÚ° bS)?[ÐM‡ØŒÅæ l:0éÄä¼bue˜²Æd‹ X´bÅ¢‹±X°ða±>ù®_uêÔ¿‡z.ÔS žËhqËé¾[N÷C½ê>¨«…ºSN_¤_ ¤_0èÀà01ø-¿…| +ä}ôÃ^è§B?&%ýè$úOÚè?õôŸƒ~”Ð?˜‚þ#Ð{ž'½[虂þí*WîŽ"ÐG ¯‚þ^èBÝ õ¨7C½ê)¶ÛãqIwCGänèÔìÁ¨[L/´^H/Úæ2[dˆBÖ +Y«Ükw[g£2*ÞÙe¦z©eݼ÷‘kˆ\CþIî·» ü:c;åB¹¿óÚß^¹ï¾ñeˆïø÷Ï€x +c;NÎ!ÆvœœCÿ òé䂾úR軡?fû>:b}QwSÖ:þëy0ò0ÖCX5a5•ÌC˜Ælf÷\u#Í,7âÝøȦ]õRÓÇÿA6§ef;M&{Éd2O¾×¶*žJ>2ð‘A l'ƒ2ØnµŠ?ÊvšNÓú™?• ÷`<'—’{0¹}=©ò¡›�ÕÛ¡Ú#gŠ7²•ý²CôVºÐUɉSB;('å2ªäæüSòsDòsDôV“ÌDM2uAÚEouØ~ Z¿äÕJoôè|è5¢J·NòŒõ–)!ÛÙ\Èê¡j¼2ÒYÕʹ¢í;7Í"àÓ¾£ #ûŽ‚ê@fè^zªG2‰Ðâ×Èd&™¬ åÑ´üAZî"“r¹—Ý(™LÒÊI¹Ì·ÉÛÉà§ô–Ÿ~AoùqTÜwY§pPdòÿ³¨lîsø¼Û,‡êÿì›tW÷gùø8 g{åÀöÞ{ï½÷Þ{ï½÷¾›%_'•Iƒdé`B±ÁÜ» ²%¹Ù–%YX0+eµ>þ}ÿ\{ŽâƒY%aËýŸ[ß{#?Ý÷Þ¼y]§Ìõèû8d'pO¦á¶ÌÿG%^êˆ\öáKœåŽó‘Ïd¯Þ|µãY€>_š6«S¼‰µ[M›%HÓå—úpîé·Y U⨬Žï:ßçç².‘ˆ¡ÃÓ¿§ÎYé¬d£¤‡9Fë%a1\çè\Óy?b#ºÚJYýŽv?üÈ®\!½Rí/sî)¨ÔY@äÉ™î÷¼ ÒÒq'@¤<5¹‹.Óm4RkVøÌõ‚-MQ¢^ÜÂqÉ +³]/>ÃÌí8í×öœÇN“Ògjµˆ+î$kW–e…žæ¤§øѳ +Áˆ¾ÃE‰|‘àKi°ÚÇCHÌùŒ›L kI‡½ò•bkç<’&+É_E9½tXäÒ¹ú$$`Jr!Œè÷PO'®ÙÛÅS4ÓBx^fvšésÌ£`²Œ[%;¤¯ã2vË΋£$i&ãçÒÓ<ö£Šq˜¯2&ÞH”.PN¸I\.ïjyáJ±mžWkrœ¸O1ÉÕÒÇÅ_Wi“Xè} iµ¤…ïšT©cD³¸•JÚ˜¢AöVñuÔsìöì²iÞx0“e6r¥7²ž›¼1Ù¥Ò:+Ñ5DÇf¢Ò~Ô1o…³‚¨x˜”d°#©¨àˆäe|Ï´"ÿ˜óÈ›lgÊ¢7cÀ"ÇÍ{L“÷ô€EžbWñ=6ñv³–¯È¾ŠâµÂïù“Ê¿.Oà×bƒê4o½äA>,úüHyü¼ÅŪs…bëÍRçéÒ›¬|µúÞµsjÀÓñ9ŒÍö´ ®òô¨É}t›.£ƒ&³züëÉÚI÷œ(ßB;½„Í>&îf'Mô:'£gB+LjµJžÅdm6k77p5£8câ +ñN+‘%¼iß_5Ï3¢WfTÒ•X'}/¿`nÊ£`²…SV®Ñ@Ø"®xœä´xÐÚxš‚§Ã¢.—’çr6ɪâR‹ÌÇ.Ü…«*kæ<®1™&éųœT^¤çÊpíj×zwŸkìÊ i‘v#FòÎñp^ü ¸”‹÷Qƒ+ÞÌG½\Dü¿óØ`2‡•›•³HJ\Iº²Y6ª¨4™”¶;¾×Fžé*ñQÚ%ÛdÈ_Ñ&ýÈ7ç<¶˜ðïãÄ,’×›U%n²BELæ<]éGχuÒÈÆò1†$§¼qí·þœ4íß/ÌcÆ››3Þø‰òçf/ŠG¼ûE¯7ßMûß®y³ÛÑ›â<.ÞÌ÷yÒìße-ãb~9»}6ªZ_á•·Y³ÿTÍŸÈ*g¯ãÈ«“ýOYÛ…jÞ:[s›Åÿ™ÝÇÅïÑ5~ÉsgÉrf×ó.þ0;2›à]³ÚCñj^ÏÇn«Ü'3Ýïy¶ŸdÜ _öt—É-0}#uØhòG@êìö“ôÏC aÓ‡=¯Žfé:ñBX¹Par=»LïàFÊÌÚb2BdÁÈù±0]+n@õf«¥OþºÀ”ùÙœÇ6“ý÷Vã8CÉ[Ÿdéj²¬‘§9åé?zìiÏq|lé×É%çbMIs¸g1aº×óâ67‡œ�ñ—sóz¯geÔrЬ›¹g…‚‘Ï‹¿rɹÌN¢L|-›$¯“ÈÜ >!ìxçýÜd‹`qºEhß KW5kXR×1ÙŠ´ à çÇó¦Õ+l‡o{9®8‹½ÜÏÎz/wÅíåTb$oÙ›ì× o©{KÁYeç2ŽÓMŒ¨ô½’ÚÉ#Œ¢™qƹӈ :ˆ2BHz‚8m’›(“pæ;ÍÏùp’qR´3*¤èRŒSÉfâB=odQjÙ)oÚGÆäâ‹Ï +ŽC7Ôˆ’T†-ÞM‹‚¶†˜çAžÉÛÉZOÏXÍ Cn^,âvÍ�‘ö×޼鬄iaRú4)çN&ÒlW?IÆüªL÷ñLjÉÐKÃ’¯9µÄúïÁ÷»fŒÚÜw–Hô,¡nN<BÖæx\yR„vZÈ {XÁ’tS-¯Í0h+B˜fgQbá`Lq‘x†<Q4¤„¼"õ\JFØÆCØÎ(Íì•2µ!ÉÅp¹Õ[kŒÏãØx°Y;"”¼ûÆä‹îº1éÿ ó;©òôc9H†cÔ”`L.u¾)°VË®ÕÿY¹ )ÄÄÆLvûþ?L†h•¼“p&â‚8k~ˆ¬éƒ<˜&rôÓfYÈZí´ä¢D-é"k¡¸H<¡ÚDè–Î +ŠlærBÖYIš£ì`ƒ¼©…Xü›g4³Zâ"ñ¨¸Ú¿G¹’QÒ&£\ϳˆÛ:6IÔÎÈo`¯íkwj·´(ÑÈÎ`L±ä¢;HòKØIéÎ9&ÉÚÜ +öüÓn%]´REŒ6ö/}®-^^âï¡Džq4ÎñîDŠTyëCH¨·‰íK¾jv‰õsžž!o:̱9ß¹'®¢C¶Ï/=•>OuΖ½ôzGϯzö«W;q~ª¯.ÓT0ÉIF ËË‘eŒ´ì) +ÄÙ£²?+ZGHÒG;µª;¦²(²r²"„UÏeJ²ÇÖÚ(EbdTg€°d…<AVTl $LX©µ¢“œ;%§Y6ŽSGž2þ æIrh”Úºu¼ê~W<@9ÕIWËŒh}LZý¼°—¸—Qk;,Y)O˜ÿÿd«’o–ÐK‹3ÙÄ}U´†NÅÒ%ê÷ß5Ö§52ïc{JÞÿ_Wx§5*¾B¬R¦ÈËV} +v–iDÂk½Zö kåÖZXœ‚#ÿóçÇï³î)¾P\óˆßˆë©#…Ë·HÛ˜´3¥ƒ$¸HѼå,K„&v©nš1ºØËwâÕCJÖ )þ¨Zí„Ä]‚KŒŽyùŽ!ø'‘"Ú…zÌêzÙ ¸&¯–ÞÌ:•l²|«e)ˆWŠ«±«ñ7R·ç—sù&o'k²9)žBs[u$ÉRÃß;@Ÿe\–øqyÕʲïkR<½pŒ’ò„ÐFÖQÌ0Îø‚¼‹„oHŸ/©ÆaâäJ7¿égšugÎÛåÅh¥œœóå¤í¬r-ƒ²i¡Ícj+'5oœGLNÎszž6QÚhµ×‹ŽˆÓÖ×BpÍç–"ã¼ÄÄ»h`œùïz4Ø)ÉzËÍj•„ß? Žqq•L2Í×»ŠCÁ~²~·ªOÖÛQ2Ø ([¼h¯8NR2c~Î,#n&L”~ÂBƒtÑdwß&Â%ë÷—É’ [VÚü¬aܼû2M”J\ú›÷“&NƒöäÚ?¿ß(wâûJö©–?"IÈk"k÷±é´ÁjcÒ«7ã[º +Ó&;¤(£‰’ç#wÓ8ÝÍãücâéâWöïcöÉ6bŠ¼ù™`¿EÖoé@¿%ÑßïÙ}Î…êÙjú5´Òª»ßýU²Oû§Æ;Uö ù¨ÆðýUREó ZeMÓN•¬jyJÜ/+F?[íZ!±`c¨†¼ÝAר¤ßàªÌò‚j˲÷17ÙÅ8Q?>ED×(ŽûŠï/Ö§Çü3'^bWþÙÌÉ룆dm]s‰[¾D®¸‰FÕž¶Óú4ÍËwŸÉQËwO]Ç¥Ž*[;ïC®ù®±ÛéN˜,gŒzª Ñ@Ô)ñžE×óø¼õ<~·çö Gi*]¿g¶£¨[åd`~_.O6c¸LyëÚÉ;žß¸ÁùíïתÎ"½wÚüþßýû"ñt0Ê©@¾•)³3^¾ÇÕYb¾þÙ™» ß?§À4»}¿ NÒè÷Zf´VÏ0À¤õ{ƒbÍLÜa¿'ýN‹ß>Îq½wæŠ-3ë79²%ÜŸGmUgý=MòöùMÚYnŸvBàù;N¹êž´X§½½TÚîÒË)P…KZHštÉ22ïy,‹`ןf<"_1C/aaÆd¿¢³Säê{ s¾ôu-—k_ò8ÕÙTâ‡Ä8ÁFZÆcB˜£Ê¾Õž0÷Qǯ‰YV›8.\ʟ奋a>JB5n•Vq +Æ䇈©~5YöÈ!'±«ž¶1“1+G}äý=MĬ N‹‡—(×Oâã|×ïå\Çï™°õ|6Ë÷÷8Ì ¸‰rÛ·|U±ËØÌ7]–oÕr|¢Z<JŠj[ϯ_°žOH¦üùn–ô&ìôÁd¹t5%vrJD¼Þy2Çœ—(·/&ÁˆódýòÎK‡¡ ¸„Tö\çtÂþç¥Òç<—„êÜ$òž ÑpoF¸UVA?ªZ#L{'+ÇeD{ßg;ÏT›—Êœ«äÁÂ*g#‚Kܬ˜âÏ´‘pÅõnY³Æ§ëS\]£8ž!~¦ÇűʇלGqH½ªÕ§ý†›G©çOQÛèà=T¥™ZÅG•~ñüÕªàÿ9OäÓªãPG¯¬5¶¹„ZY_¡–«UkC`'[œû“¤ZsôIŽZ«$!¨7*Y)èÔ B„½²®g‹âåcBžŸ ¿¥ÀÇuí Ö_•Ð5Šã1â'ˆ+.Ž{úpXI„i.òߎؙþ\ï94éÝÇ"²#4Ñê?‡î(ò:ákEžC›Õ®yç-“œ,úºç.¸¿Ÿ#Œóÿ½³#ÂV.eLÎ*btcó[ј¸‰}L’±ýÝö›c6†ÚÙçøD3£œÛz°™C·lS’I¿¦gq>šÄö ¢t‰gJtÿü/=w8%ŽSgö-dæí[òTù÷ïuîßqšT÷$Iy5诤–>RóÞwí<5E–Œ¿_Ü¿ÉøVJhÆu3ô2Ž²`Ò>•y²g·_S‹³ žü_ú<öf»Ã>ÕìÚ@¾ý~w{ýÎ{ùÖåç»ÖFŠ—om~º*æ;oVþ,òír×É“´Óù]Ò)ãzù¾Ð0g%¿†¸8±ì¿4ßÏb†TûëÚŒ8G’¬œ‡ÐG3(ð'EûÄCœTí)vÈNrB2d +ôR°Ö‘¬×÷æ“j²¶QI] a±gOºi&÷¤Ê¾ûZÈR(ÙÿÿÏS˜ffñs¢s‡ü¹ž;ÈZÚ¹Ã#–Üï§õ»ŒKŸßÑóx~¯>›Jüá¿rœ/[]áèTåÑ¿~Ì+‡9Ÿ¶=f‚¼s²Ò{ˆ0N'‡‰*òú¢À�a•¶Ñ¯ÒïÉ«”—a»jVQ#kˆ„ôn"Ò}ÂqbL0mèã˜d/Câ^+i¦C:Î@©Þ]ç·ì”ZiëmŠ>NåJ®rV’ã´"Ê-ìg'W£>ÌFåUÚ@V&)Q©Vw6JŸ¶}r+—8F”sØÆ~D±nY1Ùi鬄#%èÃW¸f.ëœf„>q?åûÎd-rÜήör kû¨¦‡ˆIGç&d¸B:e}hàCŽ;¨ŒQ¥X[°Lr¬dï4yóS³ˆ¿Ÿ±Y¢^õ3=»Ýf™7ÃÈœ±ŒVÞÑQäŸYRâˆÝãïÍ”ô "Ä¡‘¨"-4)Òo'Q’6¼O^¥¼iÆä·HNK'¥OX|Èb1â$ }ÔJFi¤ÕJFhðtr®G†3ÿB~Æ(5Ìë#IŽ.ÍgEˆØÊÝØ•ªõQŽÑXJÎËCÒ‘¥:/0¯qvVrH¼wv†œ¡I—<ƒÞ/°g4þŒ/§Ñ³ãâ,“Ç¢uŠn±±D.8–Ä {ý²¬@¾ˆkÖr/–&s&f+AÎvß%%þˆ·.åIøëR‡·.%¼u©šŽ`kk`]š°ž0aëÒˆ·.…4h¥bÑui¼sšÝEòð@ÙÍV[—êŠåïÍÍi^ê_ç…Åçt0¸%èC§ñæCÄ›ñçCš¯gBó!]d>z=•¶ù!LΠ̇þ|}‹?ƃóQ2âQ› ’â;|¯½Œ-Tp”NÕmf7“Œ+VA5×+’cY~¥Èf.ãšÙíòÖÑB»jµQǨ¬eÒå¡ÌFHDz;‡‘t‡ŸŸNzÙ,Ý+V½M4´f³]âíâ-Šßl,iÚ˜2Bć>Õfê)b¿tXÑĉو¾…kq©ä$=œÒýaº?È»Xu§Õ¾‰a—SÒ!g¥tÚûÄ2ʼ{õļÿãw’¢G°s/†©5ÔÈë¦K\/ÖºN‹"ÒÔ’fûuµZû{ NW²ÁŸÓ •ŒÚ^ã +›ÓËåçtB¥òWØ^cÆfòegÆ;9›Ó3wÒ^Ãå:;a1À8%CŠ+éæ "9jÅT¿r£Öýíò6ªnÌrÚÁ¤,%éqKê'XÇVµ‘´Í+t²—„ Z+è Q\g\[IN '|LÚª¿V|”Þ.}?"lãYÔÊ`ág¬¦BÒöÔh,EUë"yËgã|™›åüVõ·°ŠçK?›&ý÷¤A‘2é¼Í§¶cª¢@Ãô:Fü‘ws1)²Òy>èý†Ôµ{Š$YAÒ"E‰eÜH9U6ú¸Á‹•ÓÂF«Q&þµ"7°ƒfkä]Ä07IÛoFÌ*óÖVÓ°™íD¼™lŸn%T²IºRˆp;¨2l³Þ¶‰«Äût…-ÜÈázÙ’æÛ“›Õ7È[jéåµÒkˆp³—‡^/äák¼<óùyx Ï]‡°XŽûyx“åaŠ×œcÖR ‹$Ò#B×[’ì¡R‘ *½’{½ÂÖ¥+…‚°“ƒŒ²EÖñùë-ÚÄaëq+‚õ¡•$›ù-ë¬›È ÕÖ¾Á8ôŽ v d:ŒÖÓ!A’¨r|"î[¿gg‘½ÆU½†¿.ÍÎÝkh]Zøä¯Kåóöw¸.ýïùašË¨¢ƒNÂö¬{˜4“\¤H;»mÝ<ˆËOUëbÊØ¡±ä²AuT/D²r¬“Ž)wë,;Ãü–k¼±$’¶¹m%añ~±@3ÛØJ‚¬&jÅUâC,‚ýŒ“†}L0ü’‡cEö¡@z£ÑîÓ¿.ºoóÖVÓò‰-¾o-%1N£ŒPÏ'Â>ì—Šle‡"§h°ýRÁÛ/•Ë[ïíC«mläU§ g]C½¢Ý²vÁI+jV§¸™ítÐ<×WZö †Äâ.E$åûrþÓƒç<§œ‡c)V¤®äÂ>ŒŠ‡íÙÿÝ‹<‹Ž›<åŸ1Á¤dÞbÙÒŽ¥sÎCõy˜‡%öŸœ} Cj•çõa} B‘ù}Ð~˜Ý¶.½µèºÔáK¦å£ælÖ%f8éü«tå¿\þGçúÖì,“ÿ`ñCÿ«<Üyìÿ皀-b šdÖ¶mÛ¶mÛ*¬mÛ¶mÛ¶mÛú‹Nî]VWŸw¦ŸE)(ñiœ¡äÂÆʲ|b¢¤g¼•)P‰?Ńдƒ‡ð(d‚GœÔ¦ñ^®àu¼…wY ê üŸA/ñ ¾÷«8=áWèQz„%.§I‰$1$¯¼Œ'IÐT’á¯è)›ä‘B’)!夊”CjIi†´‘vH%âzÉ�&cÀI2ÖÈ<£.KdºÙ†ìQ"‡r½"·ärûLÞÈ'Ôãwô™äB \8 çb¹. +"±Ð4.’ÍçŠø)å*Xª¹:H#%b§ÿ¾½þö p-Ôc±€æcŒ9mÉa^ +š—6ŽÇªÓ@uä¹q0Ðü°:wõ¨O0ÏåÑ{.c^, yK8¨.‰á y"%·Áš·6Åš1&–ÀÆ]`"¥ô·%¶1¸1 Ð<ôå`j,J,Ôšw4v¶¥‹lUºàuNˆ]¹Ì�ÍÓ3ëBç|îߪƒpŽ¢ÎQ}WÎÆšÏ1¦Âš‚ƒæÙá y6%ãRý— É(¤ÿ?ÎB¹ü bTæß_í—]`ã)cAããpã1ãPÈÑszEDo9⨜Ï&È_+N¬×à,H+š›F·)^ƒ¶üÉ#=ÀþuÅq�=?Û®mÿYÛnÃÙŽgt¶mÛ¶ÂÙŽÓX‹Í}£å<_ßÏCÜKË$d¢n?1HLL̔ԉ³„ª¦¢v¨éš¦n†Y&šc±)–Ž§Q›-°Ý±Æïd{êB‡\ì2g¸Ê-Îq›;\à.»Øcžt§½éïúÄý¾ôµÇ}ëG/øÙQ¯JŠü«‘ð¯Yú*Ú² ©h²®”©Êr’è™&®¦¤#oŠIª¦k™ c¢†¤mq–MU ÓU5LÓ“´Âí0I'¬+¶Úô0E¬Ûd³Ã@¬^ß’0ÑRËL°ÜŽá°ÜHhµJÏjum +Kl¶E×Ö°À¶°Áö0ß»-²Ç~pȇk¶ãÂ<±£æ:%Ìtª3Íp–sÍržå]Šb§\F]Ö:6º2, ȸ5äD²îÃîò ´‡<lÄc7扰Γa½§BÒÓž7î¯Iy=,ó†7¥¼Þ ï„UÞõ–}¢éÓ0ä³PõyXê‹P9«ø&ÔEÚj~ ++ýìw%ø[Ù?ŽZ!þ\}]¤U¥Td$”´åå”%´ÔõtÔd54ÿO·¦ˆtýÇ] 5�»{’º·¸Ãà‡‚cÁÙycÄ=ûçõéÎè®èÎè®èîé~ÒÓ}¥» Û¢»£ûNwN÷ƒîÝÝ4ÝÝ{ºººwtKtktºUº]ºmº=º·tÏèÞÐÐ} ;¡{NwL7¦[¦Ñ}¦{MwK÷„î’î”î†îÝ!ÝÝ!Ý+º§ÿt/éfé>Ò-ÐÍÐ-Ð]ÓÍÑÍÓ-Òíн ûÞ؆¯ð§ï0tt¶tÎtVuVtftŽtŽu.tF:›:ç:—:û:Ë:ó:K:{:§¡ó'ÿ†y¤¶¡¶¦¶£6§¶«¶¨6V;P«MÔ¶Õ¦ufÿظ§îÆâ��âSÛöEPÛí²¶¹¶õå÷žyo'zûëä—*q®³B]ûØ í#Ÿ9÷ú)´/LÚW®3Úâ[лà;?§uàí{NàF?Ƙf5Âp¢=ž%ºÂX +í‹Oˆç)C{IJ½áuFoƒ�Þ½àŒ¿üK´ÖŽ·¿¸dš?ƒ/™g(¸Îe5ËL¢}¦ýƈ…úåsy•×³M÷(¤‡ ò‰ÐÎMîrÂ1EÜ¢ƒÖxî'@äÒIÕ<¤‘^Z2þO¥‹Zòh¦›Z¹Ïm©ó•+pŽÜá•TPJGäÒåët åAͪ—¯z…ÔÒ@ŽÆ5k\±Æµh\ƒÆµi\£Æ5i\¥»Wqu—§qµWîŽ×z¾Ížw§˜«tEJWâ¾Ti\»ÆÕk\…Æ•i\©Æµ’˵Z÷:ã¨ó‹9§>G8ꌲFc@GcÈ1–cØ1F#îý +:§)›š²){š²ª)ëš²¥)£š²¤&‡jr ÇÚq¤;Ú±¦‘;ªq¡zq¢zq®“zÑ£“zqªSz1òÚ7®gª±û¿¤»Ê‰€Â0úãîRoé¸wxgÿϸ{¸ 99º1}Ýš‚îL {3דAϦ¦ÓÑ«ÉêÍ,ônzú0}š™¾Ì‰¾MU?f¨_SÐ92:%KVÇäÈÉ%O^ +4¦HQEJ”äQ¦¬*êRý©)¤N]u4”Ò¤©6-Z1d¨K%¸¸òñðäàãkI@ =BBí©LL¬]‘’*ψ‘šŒ«Á„‰&L™j‹3]0g®,4eÉRg¬X)fÍZ6ªüƒËœ������������������� \ No newline at end of file diff --git a/core/themes/olivero/fonts/metropolis/Metropolis-SemiBold.woff2 b/core/themes/olivero/fonts/metropolis/Metropolis-SemiBold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fad6dfdece70a4c62d0b8c54037dcbbddc46d9aa --- /dev/null +++ b/core/themes/olivero/fonts/metropolis/Metropolis-SemiBold.woff2 @@ -0,0 +1,109 @@ +wOF2OTTO��gÄ�����å˜��gr����������������������� ’*0‚œ +`�‡R6$‰x† ¾äD7LíøëÍ*2ºÝÿ£*Q»Iü\pùÍÉþÿ?#©ŒQ&ñ/mÑ Fˆ,´_í4x%r`¡7Ymؼ(Dà‰#½ÕÜjFл£î–©ªölÏ×»yÁ_æ'Öcã͆ÂÛ±C¬•TðNê•åÆF:"ïqÈ5 +Û<úþ—T–i}Û“$+ÃT‚fb}-=©Áêüdí©êbýÒÿ“èbÃFøbŒPAF.‘s0øéÝ MfRó(‘¸q®¼¯²ê0G£hd¯2Rzê%Æ®!eöÔKEž·™XA¼Æ´çyþ÷ûßϵÏ}WkÚ4‰z¢›&’W‘Ñ)‰Dý’,D³Ä¶3¡f–dÖ¸® +üû¨ž?Øì½OA 7<?·Þÿûÿ¯ÿþöÆ`ƒ‘6ÑÒ*‚Þ™‡‰—Øgä5âeêÝÉêPT®éÌ4fXLÛIÄ7J¾)È=P›t«ÿ×ëìû¥”™WjÙRÊ´ºžY¦ÉXG×2ÊØ@E, ˆ‚…Rª@B BH &šŸ¸÷ñçùOü~úÏ}7gNÿì¾óú™í‡¸Qˆˆwb¯¤M1 J¤©‘z*Nˆ:81$FŒ'¦@!¬¹Ý‡”¾ãû>óöß|obˆeB!%†HˆDJ¤dJòÐ΂"7¿»×Þ 2BLÄ( ÔÚïa;ûoö¾°ˆÊ%ðé„BÉ„LçœpLJ02~ÆÏý‰cÿSU½Äº×¯Lž¶w‚aÔ–�Œ¤áurÿžŸóƒa“ü='3ËPaÎ{5¡jT¯QÜ·¼Š(R‡�!t[ð`…ªQ‚µþ©éyé}¡�Ωãc£ì´lî|6ØQ_†W¦–)—Ë=ãñÖó c#eÎïö,×l,ð¸%x7B÷x¿·é—à´C x|ë3ãöðÆ9>#…*EÊþ}&ã³'‹;*H¥šT5W€JágªµÙ›“÷€¬‹@¦AúF:¾3)§Piõ Ô×aδdÎD@¾œ(§´ÿÎTšà¯úT¥õaüqÉ>ü–lɾööÍö©_ Óv•›¥î÷þlèzÿ’7̆¨†<ä8ʯHPnS�…QÙ襤P‹†¨¦ø«•è*b¤zÀ�¢1¢Î¡¸Ë0D”`F&Ü(ä224ƒFЄ‹#} ´›ƒ ´¦;òvN)ÃجcÃËÐ…Å”(£1—ÿj´ Lô)¦/Ì’¶7–¡7Ú¢:Dؘ`Ì“:þfùÿ9 +f3WD$ !øʯ«º*ÕgÃúÌÓ=®Ê`%Dl°A‚H b]+"ù{ëVRµû{Üã""ƒA‚ô$´â·Š¿…¢5“ÖÖuŽšq'Ëo-ÓÉ{'Ÿ÷ÇG¢l=ß'ÿŸý<÷íxùñþò²õú—·çýëã÷„ƒfFÿï¡Â Èh˜8„ñKf’ÅjÌÑ©ÇR+õy×»tÖ%×½oÈW~ð»Ñž5¯l-ÑR,ór®ˆ³Re›¡H¹Z Zu[¬WŸwmµÛ!'ºâ–ûÊî{ôîñ†àƒ©0‘£Å‚—’Hg2…¼ÂLÚ˜Ï"x›)”è0á%B•#‚†¼w—‚SÊUkÒi¸)z6ôoè‰Bp¨z ¡(ø€P`@Éž†æ\. +¢4gÞ¨ŸŽðô7k0a¡=¯u=ßqºªY.¡¸mÃ3Šð,’አ^Ë’×Ì/ÂhùBËÐðÿ:6/Í‚º©‰V{(ïé°gD&ŠrV×äÈé<±zŸ^–Ñu¡é×<køž”ú\—Én¨ð=ÖÐœ‚dò½'‰HÒÄk˜�¢Ò)ÿ#JJ°åyY™¸2ƒ\Ñ<§Yº2`±örý aTs•kâûrž‡Ûç ‘øAˆÙ“Q"3Ždxuž8ÐÔ¦V0¨ä¢üió¡OöD>¹UöCÒ?ý¢ÊþÙçؤV$œmYª0ÈÙ£`k]0[骰xgk{]±:u™TìFiY÷]7°ïóKáQìy2Q4Ò(v-7pÐéÇ®çÙ®gPÑþ/e6LJa—u6†é˜ÖFÇILˆhæÈeÊ7[»™PÝãšÛF<.:oQ×Áº±<Ë·’_^§eVµÍŽ:§ÜÞsi …¬gºU/]E‹N|A‰ +uuéÑgŒÙNµÀR+·Ýåîê4gIBZÎJ½üÁoþâËhr¥•W]}Íoa+îVSÍ·ÔjÚÏU¤l…ê5; +ûÊŸdš™g_ÌÒ–»Â•j][±‘É&ŸjkÓmg¦ù—XnÕÕ×Úɶc¬Â|â9ñ¼ø_&ꊦ¢è&ˆ!b„˜ Ät1G¼/æ‰ÏÅ—â[ñ›X&V‰õb‹È;ÅqJ\7Äñ@”ˆ +,ˆ=£ZöÿØÿ¶_²#ì:v»…ÝÑîi°‡Ú#íqö+ö$ûm{Š=ÓN¶çÕs98£°$cäYWRu×Ñ°ƒ�K`l¶³ƒ¹Ìf‹¦�.ãpÊ‘–=êî¾¾vóÙÓ«Ó›4é9¡Yê~Ó‹3H´;�4Þ %Í$§bÿóà!%ÒykºN£<mpÊ‘¯tL`u=¦p{3êóyŽv¡í%™Õkáýµ‹Áø¦7îÙŒH½0³öÆ fðw63.¶Zc±`jîGú3‰ùfñž-»`úÅ…åÙyy;ö’Ùó™wÓN˜“em`ë»[¦œÒü‘]×%äp$¼œßT’®íjDÞ¿A9{d ½-çK$`D8ºÅÀû?t^yñ¤sNýzƒ¦ 8æÇêwj†×\.ý`$&«†¢J;›¤Éñ1y‰ðsŒè¢ 3vËXi;EK¢Ö\YK0OŽTøHƒ~2ým\Òê·(W%$¢wÔX6p?Á@âm&Á,±Ë[ÞÑäÁCÇ~Â+'íõ¤£dÈl 8]ìì7úÚ§C–Ôb}ü(žÔäl¾µÙGúj:õ_Ô{çQ›ÿw°õÚžGú[r’�•/’DçN].X•¤R)ÀÔ÷W0lðýxh^ÊGú†°ã|K:J$æph¹3ð“wW³ŠI‹€YEž¡€¡ÌÎ2+R§Î'nIµ\õa"P{ëHP`ä—ÏOÐý¦ÿ¢ß]‘—ƒHì²Ý*ìn+©¡«’3Ñ ZäÖ…*:Q÷Z»ÄtØ›C‡_P›FPD1¡V:Ž@q>ßÑæÕ£¯ôœsôTµ›}k™ÑŽÎ,�dÒ+ÇìÃgÖ-/¡:¶Ù¼‡MŘÒöÐP¹ŠÆË?–àRVpÙÌ4F9„¢R" +æôTMäãyÚ±rë*s²o㌨J›è1—A>¦òmoJ ÃjïRÀ©„|D"9ä9ÏJ–'Úï)B‡¤JKC–åæýž’‡pps´Ç”ChCÿW&‚Ú@¯ú“TE_ •Õ8ÓfŸtl½tœN²ukczòA›Þ’ø‰~–¾_\?AôKöwT7¿"q¯¢¥.0—†ËßÝH5Ù$—rÀ—XÊÙóÔÀtbÆÃ�êÐe±^p+¯°L,ã61¶„´ªHOHwqËÇõ{k¦\ǹ‹”YNmÓ{Å<5!=b]ƒ]énýAS[Oì,¸œÈÁÁýFZTxÛZSÉ‚¸œ"šä~çR;à¦?ù\á4•ê%7Hš2³Ñ]¶šõÍi(SÝôPÓ]§Ýi+~JV~¤ëG„=gGGè7ÅY±ÿ±±è×\¦Ó†Íqm”hú“’b:^>ï´Þr{€à—csy¦X”™ùeöú7ýxÁäöä‰lJûTÞ½ãzKùtÜ®‹ŒŒÒfè +2-ÀlÇTؼÙcêvC®^%$±¾Ÿ]?-ŸKBFô“‚[ŸÞÏ»U··s½':—È¡ ˜w›1Ì¡õ®ïOsÎO©®o³ôÓf×Ô‚¤lÏ‚ü Xø,zk†QÉ®è +ÊÃ6¬Pƒé«•½]Ê{GJ–Ê�žTD²NÓðQÞ•ç檒î6)g¦-�›f{»\í¢L•EoºK$‘¶36.R;RèfI¡ËA'½ï‘i +¬:ÂSóV=ÁÏ×J¨§=4#IÄ‘©•Ák•Lž‘òOœ´sƒ8&Z%Iï¶u$‹å4~¥•ŸºdÝzNy>ŠÒ ‚0úEúh•T!¬…åÏ›q:æf‰(M}€PÞA@lþXúV‚í'}〈¡‰#ß—fNÑe³ËV›O²9¹WƒIªâ“]âØØ4ñ\B#9¾üñhðh…Vyù½Ûe€_Œ„PÛ!3ÇE:Œ‹òöb¨ÐÜPÊHý�*’ª‚™å^L$x/ätýd帔 +Œ|yàa¸~š$'gÉÕ`ÜÕPÊYï®rˆ£1qÂòœR6ö[J¥hÊRð†Å"áÀ«âþÎÌl`÷‘ +´Ç˜}Äܪ�™ÝšÀQ!¿LjR…®ó¿Ÿ£àPN sîuÈaGöïsÔ1½tô:Î`Û‡ rÂÉ“ßvêÈ[G™˜gauÚgO8Wö6û)ŽòsVqr>sÖ ç]pÑ¥óV{Ïn›… +»pñO¥ËUÂ/_áu…‹›çêµÕ"DÖ\¿UËÇïÆM7o‹ªs«^¢Üw„„ïÜõ¡¨=ïùؼß"ÅÉ&ŸJ6·¹ÛÚÞá§útvù¹~¾1,-#ÛÝë—=~5ì×}ýÆL2x`päwŠ rБQã¾uËTé¦Iðð±ñ ñSNÚåô`Z¢«{âéLh6,Ildn>*ÅX7<_’¶èElye5_K¬'7f\<$>!1 )6¹y`¯PëÒ¢ ‚ƒŽ¡X©h±pM^¯]‡™:% ™e®ÙêQÔõW¥4§$•CóŸ +UXöØg+%…2q0óiPµ:`·~Û•ôF-öšº-Óc…W-±Ð"K-ï\�ä%¢Aü˜))MsÞÊ…‘âãp--¼ÊiÊTyÖOaS亜jµ»ÔMyº!!¥7kZ³·€üi°¨m…Z5Öì©î¶È*¶Šb”˜/¾i"Sœ¥¨ÿ²_´Úmíö(ûî º!´Ýêî‘îïîć]Ý‹ï¥ö¦õj{Û{E½'½ª>Âà04ýè~ZF¿®¿¿«_Ö£aZôÿÔŒ:S}HŸÓÚKùT@—©Ô…–OD843†íÃ…Ã5ÆQØ(côýøűllG[ÇoOþÍ)˜ÌBi“ŒIþäꄧáÄf"šÈ¢½tý™¾`î<¶Æ.²kìcö3{Ω¼¹¼þ—ò>~Œ_á_&¹…\/6ˆ]âªø_ù~$?W¾*/Ë›r“² +¦ª¤f êzµ~WŸÒ?ézÔÐEÍ’´x“Ø/N²ÏX‰í³öCûÌ’Lø<Ý°öÃ/ð‘%]&µI½Ò4|_A öã~ü'dI¶^ÖêvÝß>B>ÝϦbwPEB¢¼œ¬*¿*Z•›®§íéÃôÎÈKùf~PÞ©lí|Q[V'ëë«jCmG;Ý>h?´Ÿ:K¿B_Ý»ûá~¹ßí?ö¿û„!†±aºo¤†žùyãÊ9¼JMñëïÖ¾õàzm½¿ÑÍû·—·émd?|doGg×é>^±k +NãœÜœ:ù8E8IN)N9N5N-N‡¦Ñ€~Kx"—J g~:®ÎÖœÎ=•Â2¹y¹çÕwí[ŸL¬[²¨YÊèuñ´†u+íºÎEêŸmœÁ£š‡ž-Àèü·OÇ»È/ƳBb¿9îZ`{ÂÝóÎÛ¾KÈxûrL…1/¢máñ¾aÊ·©§-¬dÑç:;\ù–„D¯;îšoSÿéªá¬‹fÿzHŽÛë׌²èº%;ÕéäªZ„ªëó•pš·Õ!jHâuNZôxµ*5Jĺá‚øÀðžã™²YBûBTÄ©ŒL‘ãœEbAuè +öŸ%"%Uu׆±ø¢Ñö +øÍéàÍŽxÝzÓØ\#±|8igø[âÚ¢ý8àD€jíÍãÔ”`wÒÛû^×U\Ö»Q~Ï%š/Øš þ Zöt…kd Ìf¡µFôp½Ó†ÑCxçÁjäÃÁCüÒ’KÇ‘Ïlô|¦Þî¤à«à Êv÷„&R=‘ªµ¥1žt-»=Ë 5«ÁUY«ÿ^(ó9„Þ*‹…m]#æÝ·•gzEøÃâ?lgq*ˆ-&�„ž“ ëT÷Âð?òN…'äwÜPæö:GíU®¤ífFòoÖ4…2ì¼LErJ–b1ᾤ‘û ë,ÙŽ6'cÝ”2J®XŒ§¹ÝÚ4îØ/`ô>?;šâ"ä™Äú¦ƒ$7M”ïÝ쾑Þ>ÁlheÓ7ÁœÓAd-< z$!jî +`Æ7šó¯ÝÜÜ^ÚB”PfiwÖa9NÀ:¼Búû6öÂaml*¾åŸÍP+‡ß˜ˆÔЦVdÁ) ;îž8ˆÆÀîüìÿÀ‰kÁD4ÕƒúLˆ¸x¶&L£Þ�áD>ª¦ ÓÔÎÁÙ0ˆ‚xâÞ"®D„ûü~ûçŸð x¢¬i•é|ÃBü3BóúÌ\Cˆ>@Ô*ç²ê“óÞ½_åuiÑ[žÙ +ƒ½÷î Îhãű$`ÊSX ìÏ)Œ(bs?DÊX?õ +2ZS”wm1¶ÝÿKá5}Îpå©:Œ±_Ö0Pú/CÈòY<ÉÖÌJ,®V\Vng´¯„ž¨n|pn4ž'yýb,a\ýÀ%z^`-¾ œY‰™?•´¸-ÇJ’þÊs|¹Ëâ¿pˆ¹JTžÃ_|„%Ðñ#<vH‘ü3¹¼M;š§4Yk¬¥»/Jml?z½û"¢‰} =@µrŸµ7ÉBÑÛ< +ï£ëÄy»çZV¤ÂÏh(¦ÖD‚ýcÈr™ 6¸a [ÿB·®`ê9àd*Øâý×}):’½ÿDJQ®d®Rd;/öž1ßÛX)Œ¥êSܺ䅣vÕ!°C´O"_Ü+¡|Á‚SðyÃÇ^\³Ø!ø +ÿjáWæÚΪèZW™¸J8õìý6ªŠl×Ù%Qìk×Éñe¢ûgók·ÕI×”ƒH‰µNóÃc û4©X>¾0Ãz)©ß6R’¿8XÒ=(ÿÍ¡h%ù HÚuØ�L£Ö.½d±£bUXÃ\þÈŽŽU1Å.ÙÃð†EXn$.¦ [L Ë@§‰°¼²bã™°¹Ó‹àŽ�Ï\á8ÙµC@/¿pÖa3ì‡à—>¨pÚëáÙ4·Üå°ú·ÜÖÆÛ(Abå Q‰ËþÜÛŽt!Ýð7ÂwžÖòÖA=*-1-O� +ÍÚ5°"íZç“£3LÂ’88Žì#ü*Û$ï*qëï³÷㳑v¸u¬ot¿Œ–4ùs_ù)ðìgjÜXmÝA¤EÕ¥EY¨ç@÷_c‘À8ú•WL|¹¤:f-.ù{ýâ+Ê©j´f™*oŽË©)ŽÓaà…WÝÅUýP†“jí•{Q—¢ÈR[×>÷¼%0ƒò/Ó§¶”x—’cr~…«‚óãË«;R÷k²|åñ3¾"]CPeX™>NG.îÌaN +ÚIhÆÿãu=\×!ƒ–gN�ëò``7Hæ¶è2¸vÛéwÍsàãÊ‹”¿5YÊ·‚óØÇCxN€HÙÓ%{á®RÖGÍyþ!±ˆÁY¸í“èÊ“2|ŸM~O€Ëht Ì^à:›4dÄ:AšÔ¯0L€‹ë©¤‚ Dêïñ�P¡*Ç r<,‘N°|Df53×»V¶O”¿ú³«²‚kñP7r/ž©êÄ*ùáÀãEY*+³ýô»?ÏŽ‚åø2så¤ÁÕ¾ïv°f½!,̀Ο2H7e å†3+vñ€‹|±8ßè0ô›¤AÒ¤‚xvì]\�ÏÏY‹@©ªèlDž9¶šê }7w�Úçíìƒ3ÛÔpÑÝ>ý}hŠm‡HÎ@ÞÈy¤’·´½3¶»5ÄeÏäP¤ËA êË|¸íÕ´öÃú‘³W�{F®}¯Ÿ«£öS1ò0[¼UùÏ|+Œ¸GP@šÖ>‚m½°uH«E¬œÛŽýcñ5w™<fïp•¡š0WûéG&oÎTi_CšH¶Ñv‡Â|<fã¨8€Í§°Çã‰zPmÁcä{[¨Ò<ù9¨îI�“p|4áyí´C~kÈhŒ•<ûÂ{BÇÆX“8 ÊhÖ tî×j¨ +nhæ0q}„ØøuaA³0ô¦jŠ¬%– +5ÎÏ0ò²ñ¾Õ¾_ ˜xP«ùW +®Ñz§Zm|ç-%~y„ +oô6s“Ùlq¥'ª©Ì©ýhmØ28òê>¨PÛºe`Hq<÷Ï»ªUVô”÷f#ÃS;ÓðM3Íôô®&:rÝàëD²*s-F»`š¸QŒjÎàœŽ·¨ñ?ä*ø—“Xt^a‘YÍoà¡åìº6mÙç}+Ú³±fAï• « Y+Õ<äj~éK% ¢ˆŒº…´ñøa´‹¿šÄ±NŠ¡ÔÁŠŽrÃðêFÊNù’ŸööBNÉéôtbS6àëiÔbÃF0»9ãÈm#qÎÒ~0ªo œ”EÇ™“pîëí:P6öèlP«ce.pciWd‰‰Àʺãg_%n6&Å£31Y©DÓbP¼™Iâô™±h‚dù&©»°Öoñx^ÈžÚºq_YŒ<cØ$|Œ-ó iîÅ©¦³Y³Í‰n"EÿlvТ/¹âX‘5Iî(b<5¬ÂF6yF6ÿMõõG•ÅËÆKpP1Yå:g¾Ñ¬RZ�ò,xš^¨7@/‰ÏQÎOžp:*ÍxžèQ7©€ö¾¥ƒ¬@¢¹AºŽ•N˜¸b€*”Ê{â;1 ‚…m¬Iy=ø¤óvÜžÿø§Þ'ûsDg6ž³(^èFŸ£ÈkPcJCbpÏØ©þÞ‹…ê�¯ÜᎮ^gk<v¢ðrK©Àb“æ4^7â¿yzñZ¾èaª÷iqŒC‘ù”@`à}Ⱥ 1ÕRXìßÊÛõÜÿy{9ÎZžm2Uä^/.ڴ}eþ:ÇÚ?\�›™® md\£’¬“a‹MMùH¡=žCkÏ/d<uZˆÚÝH7RÆ!H,ÞÖÎNx*OÐñG=ãUM<E7£ÆzÉå¼ð£Zk +uc§ç=¢¯ã*âG ÝÙÆ'{oJMiãR9 Ì$ÏNÖ|£í†,iô]xTàÛ¼Ñ(wLòÏ`u”E,:-îö±<¦»–ø¸ßÊØÔèÔ¨´]r.á|ÂÙ„“s&ÅT½´hq†w‡ÒÕõÓ¹¤_7G:æ�ÿ«"&Å’pÖ'Ný¨lÔÃ<o¾yyíú³75.#†Ìt!jokäž\9 7ÇE¬Ñæ䓦բ¡6Ê2½ai(´Àï\¸QØì!ªÊ‚üŽ1"?<oµ@Òhÿ¥úd-¯ùóÇ]ÂlìZÄ‘n¢škò^Z8‡5ÊèBF®I82špù³s~!ÿÓ›7ó.^ïlórûH\ÛF`Îw7�þžŠ—=ò8¸Œ-€sAm06P»»»ö—16ÙïàœfØKémŽû3ý¢"YöÛƒìÏ ³R!µy+°¥0{”Þ8‚[†Wªes0LY}Ãç"‹Î‡äåfê‡êýãÛ€~Ç"‰ÒÚº0å‹‘G*+(»¹•$v`W{#%GÈ´]ضaÇzi œ<-„ÞP …¬C»í= V+?—•3õQû^zÈÌxC‘} ymÏKà‡ŠO÷”5ßÔ&{¾þÿÅW;Ì1×µñÌ9ý©ôÒÁhV-Y™²Úq¸—ÇPÑû¼K—â!†ì9³[ç¾À0Y¦_³&gd÷#kÊöñ*Öbuãd-rI'Ç³Ï \¤c-Î[ [JŸ<J¬Ôpw‘õÄaÍ]5?iãùcýKƈ?aÿ¹ÔŒ3gþB«ùdªæω\¾¼ã’ó¾—öI"åd +1´?èÅ>èŦ}5BðmÁ…€avxx§y, +iãMsrô‘_czp«h6pTЦâ'RÙ—]0Òµz*÷gà1¬u„‘<ñ.µÎž;ûy-á¬ÕGî‹ë•AüŽà\á±^Ê „~¤ò#i¼>ˆg͉úktÆC2ö<}Ñ;•Ì»Ô\Îy4™pfã$€ýü×:`Šìû)ÈýŒ+ý?Ÿƒ'ÊÁ +U¶|__È6\¸”ã³:8ÐÇ'+à’8Äš÷Lë^`_¿ˆ—Ã6‡p»u<Eï…§µ©4þɨºr’ØËÖæ Sf»Tþ¬~Zÿty‰i1–É1ß4×á.lŸä‚åõÀÒ6.ÔäWæä{ÅHrY8Řñ¤îÔm?Fi(°Çí¸”ûœ–ÿäB~ª57L•·FE{ç¿ÚWÏnÌ‹—Üu…’qá¢J‹†õ…4ŒŸÝf2“EׂÎþÞ~âå€Ù†iŽ®ó†‹¬éA8ÐL7K‹ï\-X<]àwÀ÷û¯åˤïlÐG·pù‰åH÷Íî8<rËH<°t˜ÝÚ#=œŠŸ—Ö´™i2hfs³°"k"3)z…ï€9Æš+?h“Å4z köáÔkÆZ½ô°`p ³%êlm~Í÷]è-2H„ô¤¦·%‹$þìÛ@7Sº -Ø0&Y;kb +˜ŸD +²d•‡/Mà£_imŠÀ¦ˆÏ$Ö¦xÜH,¯¬N›ÊCts"hV•ïiì+äÙUñÚº @ª{ÓÅ”ð.8/ù‡«Žþïv£}N*Îx¹ß¤ë{ªºp£° UÆŠù)s¹ý–ˆ]š’éZ²Xt› ú¬V†³™ªˆSR•#Ù‰K8YD–z/üæŠÒY*ºfBÛ}ÆÆÿx%/µâ3%C^Gró(]xÄ£Ñ"•ã5+%üPP@Ç›*Ø¡‚öW0cjÊIzHÔcƒ’iòêÉ�Pï·"3»(ßÕDú1åSïÁvMÄþ1p3ñN®[)ñ®mÜLë…ÃƯv[*Ü\äœ?Ôñ†ÀZYÐàô{i.¸m\ÊV½ì¡;TøAQârùG¥øù}=tÊÓ›?àc8 Œ?ã•ä*XŠ�g²ú&Ž[“Sß6Y1|+„p… ¤ë!ßm£ömÂéü€+‚[p¼‡ÿ¬U"mxã±uö¬üþ/,…ö|¼èç®Ýñ´tãDW‡;–g˜[Z<zpð>àUoI¶{w/Æ:´Ï ÀêÏC#h·�¥šˆõxd7Nä!둤‚¹Êó¬ž6OÅ4¦¾›®ú0ÔòÀ‚,~CsµÒy:V/³×¥¹ªÃ÷à5›‡´6e0Ø Wkgs8gŠÚ“ä`Æ8¤kdL÷TÍSïÙ—úããÅ„²f¹vÝo»~èYÁTîj`Ïæ)_s+üö†‘s&ANô…ﯻù¾£¶Ù±Óó<À±¯Fªƒ¦|ë£ò«âjñÅë7×x/\¾ÒCè^©®ÁùR]x±êÚè¬Ô;˳«Í ujäòhôÓíWòé”ÁúRèk;|Šî6¼Zv ¼›Åø 8âO¿ÇšäüÑñ½4Ò~Ìï¼Q£¬i„TÖœ+êò²ÂòÖ<ÃÕŃ_³êì>µ1r4ë-TݵÖWt[Õ'Œúýúc§Ó;Ä`'âÄ¢9·“¦p¢¾¨²^îïN¢f$6ΚŽÉs'Y1¨ç2#˜€BŽ +‡:!‹ÉŒB}SóãqÅ‹ ’š!+IŸ²–œ¡/⑼Úå Z¼ur·«®«ÑFFºõ$Û¦Ú¯Pu½Å]æhœ”…e¢æ^¦ž¬e¬,yêbsÙ´L§ÇØò#éS¬�š{qÒãIó ò‰°<D±þ‘̽0ÉtSüò u$Ï(½ +Ø ¥G‰Óˆ¬L¢æ›Sí,3I„óêO,IÊÄ1{Pßæ²KÃ@h2ý›<[ ËbpÞ×Z~X¹RC$y°j¶î"—ôƧ¦©Ù´ÁD `6ϱU•_µktuvGûÞ‘ÂÑ'Í\þÒûÙØÝ• ÃJ”oWå@ʨôéþi6ûÍñ0ÎÅfdcÅÁgÂ-– +dsçò& àq‚åüè"Ó” yS©Xñ3UOXŸ”Ï©V2´ûâø6QHõR”‘VæU½Ip5ï$µ6zOØ€¶åtžƒ'î(Õó"‰x™Yý誇Ӭ•°º‚…ì»1ÀÛ¼W4…¸[Ør;LGyÅHd†w³F¡/V7ž–.Ïœ†í5Ƙé=ÌÄ—ÓûÛ8û4N?$£ACuCu,)¸×™Ë&öViáì„D51ÀRæ \¶d˜¢c©& ,û°ýᤧқ”duÕÖeBNà$G(—Û#Ë œ¦ci0¤¹ãªW˜‹gQ@H§.NqÈîØœ+‹ò)i<D4§Ñ#6J£Œ6S³Rp;ü=MS‰�¦%oóçg'öž¬ºÿ¤ýƒ�›7d|Aœhè 샓HÍxßJÖƒäððZ5|û'¤‰.’¨˜;BcøÀ#V`ñéþO?-ÔHªQÅÎbNæ$ær¹Š«‘†¤�°jQÝ¿@gž|ùo¸.k‡vïY'àðÆ™•Ù•a§s¿þÑ‚sX´·…–Óÿ¤k€øŒ¤O˜Y Œ?ЃfqgûWÈZ7XΔ¶c‡÷.ÇX9{\×aÞI¿8mÒ¨ž"÷q©åN¡äV' 僗‘º‡[:«:Ë~�ã^÷ýÝ~#ªôÞ’Ö¦G úôÖOï0zZ<>×ÅÚ·³ÁvžÛ/•¨ž°(Й(ZĨ{ë4‘Q)âq]]lMé.'ä³ÞI;ÂIN˧–Êàyȯጄ*2Š¤)Ãò Ònlüµ—ýã�÷7V +ôØA#Î[|Þv†¤P€ùåA0ßµtH5`‚l‰«š~õB*ïCeÌúߢ%ùɾ�æeŠyTü¦µzKÕ¡&xå`zÏy c{¹;’HÌ`«n±H„óFÊÏàò² °oø8Rßa?ÆÇ2u}ªˆ@úÝ©·`Îöly€ä>`vŽ˜oÁ©L°‹ë¸ð:‘3ÀcÈ¡¨y‰y>¢ÛÄÕÜ) þ³Ñ}žÏÍŒY”5.à4?Ö8ÉL³Äj4ÇÌoÖ}o c¥:“R~ËKó”·<xë0ž +!ÿ +¥tÍ`çòœökêQÁ™¦úûhÌ(` ˜Õ‡öÆ^›©*¢¦zEWã`tƒ%R=2!Õ†}9×ÞÉeï÷]¿Ñ$5W½V½Qà KçïºÏm&G?½+ëÏ öLŒÌ–·¡0¬eÁåO¡wε# +³ifP嬨ˆïôqSŸ°tAÏÁõ#¯<é’ANÖøÇuÅHêPØ +FÎ,æÿ]ß:Wßñèq nØ/¡±‰²ùÐñ\geÖO ÔIŠîpþëzŽ³-pû²áöCj(úð8ÕzÅñìWn*sàÝ/‡ÃÞ"Iä;«MïÿéÛƒòãw$•àœdé^ù®1^Å’°_ãéÏJ3Ä;Ä_Ç´ëkb•©°X#NUMÖëAŸÊ)Ì\‰²Ž§34MŒŠÃ2kƒÓT:3Év~U·S½ +Zá°î¬<ä4©™@Ü,z<õÓѬޕ;‹î¿ä�5¿Ê¢º'¸Åá³]mk,° C˜š8KÔwa@U\ó¬ú”ûö5~]QExœÒ„ó)î“Þf„²è‚qýØa°C’A¥÷:wkF›³œ;4gèV[ˆJÎWoÁÝžX¯¾™®½Vj¯ù¿ô¥©2eÐûöC—ÁE™Þ²Öêõj¬R‰æ¿<«Æ+7º?6fáýÈ‚_Ù +_úàw¾À@°üß”tg%4“ÿ“j%Us"-®ÏÌ¿¿Fžܩ·roeA»é óÄD3@œÊ1mÌã¶9öiWÿkcÏÐ>BT£…¶š- @½ûï{5…ò0œ¢É¡×U‡Í)ùê<£PY Ùx<¡òì8aáJ¡ëë Õg-*¨EšD"{æ)Þž9pHw‡Õ÷|:nj3´fªà¿„=:Év»¥1“ Óo3µÄvD[ÅDž&“®R#im1§™U†½Â Vô=)Ax~ë~¤=M®Ò½Ì +lÉm¦¦ÈD‚Å +NÐð3ŠNwòåo] ü}ÑÄ„ùöðõà”$Þîl€m«óO05F[8ìûUAä€;«jt`;'‡sÒ%và9é1(Ç_f¥Bõô8Žäª³¢àÂ<ûb{8ÛFq¨†¦éœ–=òãé¸_/.búuæá›Ü"ˆÜ™’á=¿rvpŸCbI?B)¿FÎñ}ïÏNQ™g˜aœ;Û+–,"LÚ ÿûA9�gþ_6P8¤¿âÔ\d÷œqúÏeØÞï—Èù-PÞK/˜É}ÎkðrE]1ŽÏVFr‹XluY‚Þ{Tw/?îwTñåD«¼s5Lsx0N¸Jáô±Á.¼[÷‰ +!‹w=øﳚﶪ8�Âeü š+¡,l÷g5ÃQ¶WŽoNu´T@;L“ZôvW<o +Cö·Ùœ¬x±ôïØrÉ—aø3Ø¢ .ýy :(“c·áÛs’i.N¾)8yæLCgx& +?ž?¹@£×ñŽ5Z„úöG0>˜±±1Âß7y_ÐŒ^Ÿ8mjläŽÞæÚ«Š6¢ø`=Ÿiãô™Ðe`S‡Õzý^ÏÙÍ¡8º¯ˆ±L÷™¢OLäTÚ˜£áö ÷½b•ö4Ø©sÙÝjºü(ÛSŒ€Ëû¬NÓž©�_ÎnÏá/1öcsÕcdáƒ6åß"ßaˆo.D˜öº\'æÃ6ÆÁ×'|=Ðí÷Ö9ü‡Óç§üßû“x'Áå¶ßœ.´;4gI‰aù¶WÌ?Yr¸àá™_ËO4GíämÖ_Â9ÝaqxÞ–²qÂD¡ï›ãáyß7š}>? fé³;/œ?ŠyØî¿$ýü9ÎùæÇüÿs’ŽDÜïŽk¢<µÎ<i0ZîbáÚHL¶w¤³}J¾:vâuÂζI?þßq$:l° bs[´a$œñqN8×îûCœ5¥rƈ—ºzñÇÀïwçX¸ZÕÏR$\íöt¸®·opµìÄgüC4À!Ã3kÄÛùÉ+ó³¸WƒäQË°ÅZ åéK×(XèILa¤ªë)4mè²4€Ý§CƒâóBûnî×/lÞqæth³8»ívÝS8•w°<š±b»jUñøìýõ%%ÜÜEw? +¬LV;‚õ;¡b€ßIU±Ïu~Iýtb=PŒÙ;Êp!©“À±‹v5]nkTŽ;„¯]aNLj²³qKÖce€E}&\b—Ýq¬j”¹\Fu€¤â_Ë‚[t"‰ã{*+XèÁ€ù<akc(«W(K¨äÐVY5AÚ*ùg0ûi0”]€=£ël§5Ž”CXÈoö¡æLLbˆ«2³29Hf㤨e +‹pDgº;À7“`Î1µ(×,B�A¹Û¤‰!êÜb±Pô\Wd!D,²œVW¡;X~ :Z†8þ¼™´ðbö0¬cë×¾ÎtÄ•ñrèº$»ˆxü}5q©m®™¾Ó¦Òúš`b¨µÙžÅÖ±ñbÜÍ?OZÑð mü5Á_T~tcE²x€7©o;\Š™ ÿ(m8:0Né*.è¼õÁÇ»HÿCÌk•çBç'm1Ð?sܼÀÑy̶o÷<Õ×ÝqÇ›G_·à(Û¨T\Ú5êÛB¥Uó*Çó¬;‚Øcµ& Ô¯ûw!5ºª#è2lë5®“¡7¯¬Öîß-ŽyÿKuF\¿„Ô81=õRÈÓ +ÙÿRˆ™Vš×aOÝþônÞÅèèÞãê×;ÙåIÀã,E:Îß×ÞjóÕ¸ƒ…LÛç±þ7°>’Í¡G¶R�Þ¹„_›û;‹iúö™cÕ·H’ž™ØsQá„Îa˜„ +Ä •˜«9žƒæ$*r¹lG[©?Pû»”(fël¡}d#Laeࢠ[A÷'ù¶'暲߫¹qï¯o‹©‰p®å¹<í‹vðsÈ1¨Ãÿ{‘Kêák=ÏÞ¸wÎ"œ¿Š´[»hj„“‘òÁl¼q�ì9€àP÷‚ÎõúÕB¹[c·W[šÍC2_N^”“a”¤6ÈüJ¿|ð@à>÷ 󹑪¨zû.bK݉DÝ«9niôˆp&v…ðÒqS}+¾ÐÞREÜh^¶¯Qe¦js§&ˆ“/–šíÜ® –*«lÔêÞ€‘ÞKµ&W«…l™P“p¹Çsª(~’¸ :?˜‡×y8s—²îúqfŒànP V•rw·‡‹š´gÓﶇ>à`Ó¶\?®oáÙò˜²MßÖ.¦˜iÿ¸„þh;sÜÈMè‹60 +Îm +l©Æ…ì…ȇcÖ™V>0¸Ë/¯®ØëÈ|·u÷§w^^¿ý$0û¿³Æ‚¬ÍÔ|iïÝ67/wóÓ{/žÞqwÁí`„ž®1̲‹…)c�!BÉ^A5¦6º*°ûÔ{cjãtj�"ôé¼qÛçb¾nÃ勯laG›Z×Dkë¯'•–²EÚÏËJJË–å“‘jçârÇ‹¡PƒH&ªX%“ºØ3ŠÑ|ùb¨·ã%jnv§»ÅUV_ƒÚRYìÖÎ/·¶Û°ÒRÉ#¡´Z‡ß4®sPŸóå_ ò~TëvèâÜŽÇ#sZ·ä5¶MîàâÀ¹j“¦š½^“Ùã1é$½NJÏÜÕrÃwçf—;]õÍ£ÐB8U^s*ÇBéþC¾\_>ŽN&@„rØZW¥1àÍZÅù#5Ä9|Øü®oíqp¿™ëxóïA¶#7Ð]tÓÐåGT"„éLú àp�š¦õ?éð'{^²LLJ*-ýè˜w4u¸½Ï +ü ÇycwÍ7—xKàzŠùF“ÚïH§ûró BÖ´}?4wµá;8¼Õe‚5H}õ0|-vx½ù¾—Ÿý'¯OD¥Ë„ë¡pÁk¿�–êÏ!jSz3ÓGLîRß ¨Ãbˆ/‰mšè[w±tœ 7¬Þsø!U&¼F:¯°ÞÍWK¸ÞÅ¢‘NÊ¿û¤¡?>ÜÆ ?†G¦µù§+=õy*e€Ù¹ú¾íú<˜_/êúosúÅ WïR×⊠€ÅH3äÒ€D±zO5@>¶î{Úq³xK¶Ü+Óù¶6ŠqÒezVžƒ5¤’Í4ê¨g.‹‡ýä¬ Á@Œ”Ѿ8É ÿØ£ˆÕhÐi„™æ[lsœçënÕÍ:ô[öĪ,„p2IŸ\AÅUVçomnÝ-®¿ÉÖÒeÌY xeC«Õh‹ØÊ3ûÊ@yÞì¨çߌå¯dõëØ‚½±™-lm3lö¹/?bô¸mïôó‰ÅK"RÔuE#ÑL´DÑW#Ý—ãÄ"Þ…À…ÖâO¸šß,¶‰b¿8ÚŸÅ⡨Ī¨Õìç¼oe¨ýÿv”ÝÔni·µcìÞö {¸=Æž`O´ß°ãíiölûÚòO—ôlä€Uk-Y\aæ½~¥L[êíT¢äãeIR×’r”Dd¼’__{-©w®hQg¥û#c.¾Ì<Á:OÈ6#´X ÐämN3ÓÞÍ]ª‡É‘Û÷ä’C¬w×—y ÓÒ¥9ºÈë®áj¬Ûv`e…›ÑŒøp‘.:|2°X)ø$Ñta6„¾¤ew Rv °€—»rû#s4[€—>¦”p/�T#L,p¹±¾vc 4ußZ·Ï È[ΟÏl-vRoÉ9ðsòȓڌŴ«U+¦X¤I8úxJ›4XW~Æ# ó59ºƒ56¯Øp)ÂÑÅ-% !Té½â™“ãb‹’ óuLcüçtc‚ +Î}ªoŽàös8çz¨/ +J*O\"8Àƒ6µpÁ«‡YDßȶ.ér¬Ë8üN®reáú?@‡¡e±GZ¸];ýW._Ñîˆ<y—9Ò«Ý&†"ØP§³XðäUhãEÊ[_ù(mcæŠr Íw[õˆ-À5œYzØš>]^¢‚où8m$Cg1q™Íy‡"¨ãÒÉ;íÜÆG«ª› +jñÎ+̦á³NΆLëØ·o£Ó @¦¨»«6uæÇš’ðÓq*£uSp[e{÷gÊ?P»+cX$i°I%>m9‰Z¹r†Ù;f®mR[•ˆÃ&šÒçñïøqq|+·µ[‹õÖEAæ07-Öo€1C³=Ž×b9©�Cê,DC“5¿OÙÅšá’X+xÀSñÅ&AºXôs-š¿ te1Lˆ;ÈŽíùF½4Ïèx…VËÌðÀ\…MþjÊ7@·†'Ò%´“<cwa,7v¹hL³ny‹"»¦ÜÝu©»##SS#Ù„I‘{%zÀQY¤c¡Œ» E¡>슚áðp˜º@à +$˜õˆóÖ[Ëô†`à#Àfo{gB¡)0‹SîGîŽ�u“ë,2RD*úµµnT‰òÞÛU&æÞÈ]pÜiû†j2mJ§ˆÝ/~+8öº‰Û8Å¢PjµŠ„cCï…iš5\R"„ecEI,t–Ý¥_å|I+7XY ls+�ŠAÕNúçfÔí.@åáïÖ±™M|Òˆ@WEI9¤çöÒ-*^GÑä`Ý¡ÆûÈI0ÀÉ,úè1Ì·ˆFÈB¿R°{ˆZbïNÏÍåS-Ǩ¡4Ñm™3°x«ÿÀI&]¶ƒõHGåI©³„#¸Ä¢A`â›–¸¡µKéO’e€´zYšÌ6|LLÒ}x‹ôBéûÕõÙZ¨˜«£ÒWÐg®“ò; Ý‚Ý_!Ê“)[mþ9?G'ÞÏ…¡ic¬k_Ù!=ž!ÑoӼ¬Dºñü¶[´°paAÄëÔ{ãò³æ¯ÓÍÜs/‰øÀŒýö[‰ÙºÂœ-ÛÊðûýÎvGòú«_y…L@N¥2®\$ͯX4Óµ"Æã%tQ*þáù£NtyŒ·Nú„™‘Ÿ<ÓâwÐ¥{yiÒ´„öýh4À¨ÿÇ€R€šï“h¿,gšûzójéÉ‚Î*“jµ‡ÐËУk&é`¥î“N=œgaõøü¨þ�d¯zË›×¥µIŵ\bUûõpÔ“yòÑx”ö<dWýyÄü@uŒŒ?é’\êÒ\×OWŽ´?|ÔÝ.r ‹›}?zŠx íR”ã:Q)5°yÃõ’rÝò…Iì¥Y—B霔hö¡žg,âÂZ îc�œéò Y~·ÁÖ¥Ð]`§0—ʃ??µ +8cܽ.ÆÚ=.]u'ú)²ÄU/›±½Á1ýÔÞ>LP² NkX)‰&À÷!%ŽHý)ýfšý”׫~ýSÙ¹sVäCzç#ôN&ó}* !s’àgÑÈ·(Ò€ú‰7 ³È(’l)÷Ó¢¸iÆ몖£5.^“æ.õ¬°A„ +aþ»!xðˆÝ{C&-QUàѵÁRzé#JºUÈ# ¬Ð šJ� +Xô LbX÷p<'| BjXZzËÈa¹y,¯€•ªÈ*QnUê°æê²éµVYcÓom²ÕÚî¨u õž[ÖþÄOåˆ"©Ë ÔuNw%¼º¯™}ZY »—Gƒñ u¢��* ¢Ü¾…Üàÿo¬ùÿ}Cìð–OÁVÅúè"-«Ð ¡‰ë”½ÈºU¾—ý…îv5OΣüúbŽ¹÷t}[ôÏËÜfRó°U8•Ü–¶/t2ºûz ýªÌ|8,½<*ýÛåOcè4ñ…-ãÞÏbŒ˜…¸ðOó½Ý…°èpüª Uœ;R¤jONÊ¥¬KûšF—Q{H÷úuzȨuÑaѻﯦI£d=µT%E Ɉ÷4áÙTcÅžC{a¿g0CÊR@%AƒtÈà™V°ÜÁˆÎªN‰#IŒ’bÉÈÏDÁ‘Ò8‹ÕZ3t$ôÈ6P2R0™ÕXVb}ÈæûÔå )ªQ³Uh÷”¡Jpcb=ú›>F÷<V«X¶‡y˜·ÙXM£<“+,ÇxtŠD ¢ï§‹5H˜Uó”(Z"z€A›1‘I•ùóݵ"8fmÔtOi«”‰3g„e’� +@C ¶’:Ò¶Ã�Ô«ëkñtôDc˜£¼¼U•C³F ÅgõéÁàL„¥6¾Eæ?™GP½ÿØ›w iJHÒt[åS‘‰Ò³qlÎùº/*ùŠ»|À¤1-Ÿ§ÓeÌo÷4k#†*õtå +=òdO-VÉÕ˜þ‚îoHãr=Wë]Ï@ 1pQ®øNÔÌÓhŽ1Îk™±ˆØŸq37ñL"·‡Äá 84;~6I&)frVPþF¸úÛl%œý«¯rŸ÷H¡ÇFªÔf<[ПÞõÌb½yza¨gBMTÈäR–"D(,›ªÍyt270OÄ2‚½/ÎÑ0L¤“Ø$~Iª‡Ìóä¤"¥×©¨« ј¢uÎzWô2Ê6ébv–Å «Klψý¥ê á„dnÄjO*±Uéù åzªp+XÌ°$ïoynV̓GH¡VaÃS-£F_ÈXÊL„Å„ ñˆcaUL™ƒK”‰(G¬Ó¢7Æ`‘qÔƒob&°°³ÁÙr†£W•Ag]çc1åÒø¿¤4Èê VSxòxò¶ªj%›2Q”§ªƒ4ûJ +kÎ�ñtG÷`FüºñZZZgHâL•ó·Þ!"Vƒ²3DŽ§hS~jª¥éø轫å &‡r•Ýô0“»ÍSɹ?~v€Ôá0ûª~¦§Oú2nxƒè„è„`0óáº.¦e98h9F•Õ£’•ajaeå¡ê’„žÞ_¡ýƒ—ðþ>YdLÕð<Õ Ð)dP…rñÞlÚÿD¼JíUj�ˆ×ËärúM¯=RÅ¢EÃS¶”(¼fÓí-I}ì +‰º£¥¢‘@€Ô]0Lnʯ2Â}Ñ'S¤�Ÿ#àŒÛÖ€XY“µ{߇F×µòƒÅÿ¹i· Ón·Uþ–¯9µdÉÛUõÓ¤i¢å¦ :oл›Á£ &vfI¿cebsŽÝO8|ÓeKº.mª”›.�F9ªi¼àÍÍGš¨�èÒ©BÙ‡�Fb*°<3¦Û„îñ ç„œO†¢i šØ€( דna0^Õ§ ƒW ?(Z¡fP.!Ò—5Æ bGU +a%HQÑ•ÂŽÕ¡7GYàl8v’„3�A@ J¦" ±My_ŽjP@à9“2—jÝÂ+™–¯ !a„@D¤!ôbƒ@ h@\²°°ò®h¡P:놫ʜ-ÛÐ)º VP( KU1Xf°ŒaÄ0Z‹5®5ïKSB9¡P(TÌ--´Ï±í‚ŠÑÒ@ëÜ«Ë}«Ú–úÅØ}š”j³8wº=rŽaØ/¶RkéˆîÏ,!®]ÑJ³ïô[f2£®Ùɪì)“H7VZÏI¢ßJH¨`S÷‚mÀwኮµ¾¸žŽùÀFüäÖßx´Rƒ*CÞüBOI«ôËéòø°2x/;ÄÐÐQúm÷PµÓÔæËhª]«twç]æ±$M2·ûû>ùÔFSŽF£iMHó»i»sÂtOš1S“ñä4P¦Zâ¿øïÁó`Hçã[í?ŒêÊ]ïk±`ya¥Sã;묋ù¬ÇýÕj‘ÿʇ÷[Ø8Ûûs&Ôf¨§ÙTÞ rпÆ]r)ÞÏq½‹Fò�»è›íŒÊŒFž«1d)žF9�ÐÙÕþéð·ŒéŒ/ŽƒS9ªŸºGÎvóžßôÐ=#èEAS0Ú<ËÇGÀGM#¶ŒßÍdƒÙàÙ=6d¬Y2>d|-WìÙ³—%ã’¬¸uO–äî˜ +g"1+VN^®rïF÷®m¦§‰tgw©Çªk<&ywR¦ ©(ÆÕ`ÚHd"GS¹Óµ +†&0ÖÒ|Iæ»ÄÅ•ÐüÈT…u×M»7¦7Ih÷ª��“Ä’ÄÆÐê¼|Ðô„¶’¶R_WîZF{ÚK=)T›@í¦WKáº1ó\ÿQ&.ihtûùÖÌ[ò¤ùná•7ÓHIªÿ|2yRŠÎ”þŸ*MæµÚh¹%Oÿ|f0Èèü¦¤Ì,T¬Îmƒ±Ópx†óü#³ü_äîgÓå{ì¿øü³ô|¸š‰Ì§üÊ´-]¾D”pÍ2 7èБOÍŸJÅ£÷µLob‰cï€çeWÑej¼Õ¥J±Ý®4 +ÍED s_üžU€ >.ÍÒq©¾µH[u©Gº(µ<²ÖÛy{㶑ÔÞ›“±éÝ®‘4Maô}‡ÄìðžAqX¦8*Npà„ó"’Ì‹9ó>ÿT¨g’(Qˆ®#‘Vødæp""ãv‘ ä>ØóÖ†µNmâ1sÿ~/8‰Ø‰†gæ_„°¾¯½Kw÷1Üv¸ÙV‰êêÿVá((*E‹#Þþ%¹ç=MT +eŠÌnP(”*•JHâ»ðjj(°Ui +„B¡P +H +…B¡P[”{�UdJXQJ|—J¨ªI3’*9ŠÖÊù£M�$8ˆƒ¹$!—$PTÞ-|¢kÅ)“µøªó«±4¬£ûþZ½,ƒ&c·™„˜guÖ4ÛÓýv\•_À å>®�/z%žšüié3µØ¿Æ^Ô]ë"Òìiï=(oÙ^,™ìR}fÀ.c§f@õùv¡å�mÄ×oíòé+¿(;}ñ©j×h» ëÕ‹C,‹m,"‹ígÚŒˆ°<V؈r¤,—V´Ö¨V!ºN4Ž=U¹j09C7"X´÷ÉlôñÜÝ>Ê4ßóÜìM»½é[X?J‰³ÿÊÏç¸ù�€‰„}Ÿ†;¹©‘(ˆøøÊRä!5V§ê=ŒA±)Nôcîí_qK’%<Íc¥üúž–z©·,ÄÎׯÉÄå©øȪlǾ\‹û§x‚SÄ[‰²áxHL®~ÂYæˤ––VÜÅ,¼„ÿˆs@öù–íú©å"UfiA"QšHq‰—QTTj[ð/a³9$ÖÌe€Bû€v?c-¶Iw·Yêq‹k¶Òúhä]mMÜù8|ËÂ7›Ë}@$åźœRI'ú@=êN\süÆ:»‡™áƒ¯#Þ†Ã]¿YеŒ|OÁ=c8¤ßy +üõxTÐŒ¡ëÇØCÌ0±Ÿ1Sµ‡D„ÛÓGC¼ìÈd©4hOö|z§œclõÛ÷³Ø˜Ø p¸ +¾Ò•ñŸõç~ÿc5I|G}l–?°Ú‡N3îFX¬˜®¿×Ðqö”®¿Måé_ŽOu}ÊÎäìç×æô’þtšX¦„r|ÓZ‹N +Á«íÕ½ ´´â•mõÖûbž›ÜîN•>Ü~ëÖÖö¦†R!¦V!jy¥Ý¤¥Lƒ^tߢì<Т휞áÝGJª3 õåvÞ\Dn|m0ÖV`j}Æ»€Á²²ÙE¢€Àé‚vl`àq¸_^ßÖï†ÓÙ8àGP™wŽÇ›c�Àî‰æñó/D¹®ž±Œ¡P‹õ/�ÊFu)œI“Y€•/\â•1‡ÜÏ1Œõ·BÏ•J¾I´;DèŽ{›i§¢‰eÄK˜1YÚÙa4ãÀº×0…+¾‰Šð&ZÓ«7õîvâz§3=ƒÅö<|‰¬úŽ=çâ½9D+Lg^Š‰E¾mÍ„•/µüûÔs6êgù¯óO5àÂ?n›š%R¿ó»x9$@Â:Y|[UIZFÃï1¬@+9m,{ïF, Ùž½^H½³ò#4àfL6õʪlMü«ã ‚æC/äΗf]Û-¶×µ‘y?Pï;ES¸%í&z^µCeìãh"š¨ò Õ5ÄÑ„rdK„áç\#°«Écº}!S-o„¤Ãô4yœ«½c‰ãng˦ø0£¹iá´uùˆãœšñ &;¬pÆÅNÀúYW1Õ7ˆ^ä½£HÕB"Ý$/‚·"•U·!ÅB‰e&™!ezY1-<j{j¤ccßä-±š‘âÇ?íF´…ÀQéÙŒ„n¹“ˆÅÚ¶ÎàkÊ¡1qdd1P4±Î©™àÓÇ6 ç„P/¦Ðm0×)9I’€›8QTaxá@]Ë.¨ÇZ°&'’Àë/æ?~Á3‹hñ…&j<¼"{ªT�ÅÒn¹vø#0n%„6‘`^½8f[ê9¿‚\A íÛp�W!%QFÑIoð˜gÎŽ¨qVTäßãÿðU*˜Ä&Í<åxÄÊT:mrvò)Z¨ÔëîÑOtá˜×¥Jt2RwnôƒÓåœçLðàd+¯Z=ÖV'@%ãÀOÛcDÊH£ä1Žsñ½6Ê”\»’/‡\L %å*º}>Øw‹ô–¹#*~â6œ´) ۦȻɤ†^+š‹lyí»EiÚ°)¦ÖÑd´ mh¡<èjy~ÇXMÙ€•ƒÿ’'G´R¼–²¢oÈQ*,°æËGl#¸—ÉÅ@%lÈæMR±°ÕrxXç'£vûÅ2'’M”ÉÅ9”,t38=&æ!Dsè"åqeØ~s0— +ÿñ)<½ñ]WM¾Å= KË +É‚‚†‘²~43È)[©íŽÌ¤‹’Ç=S®¥ØÂ-‘wyX(›EZøeÅ¢Ñ|1„ +uÄ𮽶œFA+½Ç‚²±çÈ’ŒÅh¥´q®ÞRÑ^”EýZjˆÕµ‘!NV;DA”lû,SøÐ_‰‡…¾,á:üÛ\cØ{»:œ:ÎúÞBçS"—YI$ç³i;ô«‰VÆ{Çõ‚ñw{«¾4ò¿kºnô{½3Îé÷“ÄüÄ£6*Bel�Z%µ¤BwL(/ɉ-Õö{—x)ýi É©¡\8ÀÒ´*`¥gÛ³¥"ÝrœÎÑZ"©éù#»{/ú°Q׃+Îð)ï»S·cFNX©¥…%Še]ÔF¥SD¸"!1Xç;î`r±£r‡aã¯gK#í—’Æ¡‘þbñ²KÉ«ç-}C¸f#§uóZš‹A]‘œ“1eå;ÉÔÏ•xÏq©ÊŸ§r\˜ åpTVA{`þX¡ËC¤›0�F•¨ô…”‚Â’ªFÀYUÆê½Õt“U÷z÷ìÊž3’gM6Wfuwôýx#wiI¹à˜¬sFdQ!sõ¯ÉŠ5‘uÉ|ÔÅä`2uˆTäÀ3y%.›jT@#ñÇ»q´¨2ˆîE¹i³å?¯ŸÑÉqÚLQåÌ—¢°¾ð6ÈHªsÌŠ.’1©“A’?@ ’îˆÜ“<o«•î°\ÐÍæÞÓ«ÇB}°Ü¡š +9ý¤8® +ê—£ 8ŽFÒť꒧SÈÿrbdùàÉò%9>ßê7“˜·ÊÁÔUã£Ï¡TB`'ž¸º"*”ú~Û>`%Éž(—|¤=fšK/ÞUÀä0D¹‹ÀEyå"æ¦ÑÜà^w— eYnÌâ¢$g)šÓ¤Mè»ò™Š‰ƒI¤\Ø5XP¢ŽY±é¸‰|} /“J<÷?"ÕG©P²t,"Ow´Ò°+K¾3ØøâC)U€jˆ&Uù¨B’¢F,ôª%®Y5„3™ú + @Eʨã,«4³}zFœ}jî*`Ê&9Õ!’¥ý_6Éêõãª4¹iÍ\“´0ŽS?#e]“¼»º«³Ipxji +ÿœE§áÁh\Юd ŠÍJ©Hvjþ~»¡Ã—*›¦ÓTõ˜¿*<›Žb/g¥� ÀµÀ’þºÂ'š’fS±çpZ›Lü<·â"B"õ"t\Ør”'òv#¦wƒL'gk +’õšŽ-pCäÒ.á7ÓP‚Mê!ÏÇ÷|ãíïzóɸ@ó=Áœx,“†Cepr85Mq·�¸í= ÀO€ @¢œ5¬æž…e .nX¯å”ʳfŽg¶T0„n; +UªÕ‚\)‚øS}Cß´ øh¬ØM#ÍCÔÆt/‡„#±ãΫx³óô˜3'áÏÊD¤a‹¢hß)²ÖDç‘Ûç”Â\ši”Ì,’ø*pÙ¦€ñã4 â†sˆ®{Q8r.GÀVÒ©8ªÍ×U],tjìýRÁ´Ã•jéècvW¥3¢£Æ£º7Ä,À¬»'ÉIúò=U—S=åà|j ïçÐ^4^1ÿ + ™nTè'¥Hƒï³«8ˆ�]mdSM‚A±Ûe§Ð©gÓúp¢2† ýX^E,Ö,Å=]ÈT‰²ðI`ͳfˆxÓÁ—mIë¨,ý|/ìŽVZ›Zè‚·O2ˆÒyòÃ�®õõ¯(‡µØ½øÚe؈…LJA£lzzÚQVw`¤h¾Œðüö1øè.F‡‘¬ðVxB1rū׮%§"LïÜÿb½šÌ1¤p)I]ágÎåtŠ$¡1äTåÁâH ƒƒE3LO–®gÆNŠ×Ë_£üž¡«_¥%è¸Ç5ÓÅ-Á!óNži{˜ñÞ³.Ä‹œ‰„»·ª_”1ÝÏ85™ •Ú?"¬>e,u?˜IAB w•@k;!å%R²2bu¯àŠÿVŽÂñÕqPM¸”BrB>—y«ÒìÎH¤àJµ+:àÌ2hϘƒ+”@õ+0ÃIù¨€†@NÿgLñM¹²|*ë4T˜7*Æ�ºw§‹ ™Ù/'‡ê˜Ô#¸5˜‡V„…k4P®8îß³MhÃuäê4PaãhX¸‚MËÂ…˜#Ct8(›®Œ+“!‰Å3Y*¼p7EÕgýÌð*µ%á⣠„œ)Ñ‚ì/ÌSJï›~@A’Óo²|Ói¤7jZêqÐà^X͵_stIù§øX’œË±> ”R~YÿTø«‘¾ÇA3êå#Bc0ÚèS•<¹ôj¼ì‘á›ð+1μ»sy[|ÓÄ9.åê#ä¯?oÀòÄ>ÎaºÚ-“–ZÓ¡ç´)’œ®—`¶ž6¨ê¿Ÿ•îóÌ€äتI-o¬•’ÂtÕ¶K‰i9›åÚÔ%xÀÚRÓ ¨a'äeCÚЖ×xûÍDP½£F¢™šÅ“âI|ór…à]õàÀzuR›â¨Ñ9¥C?©÷ ó3·„ËÇ馈ã:ʯ ¤-€ ØT¢ÄÇò8aÕ`NçŒÕd¬‹ª1e“›Ú"ºƒrW&ìƈ•:§mâòœ½ûìªõ¦Š*R!ÚXQæV˜×|ûvy\W‰ +cšìQ9Sbž-H³”‘*NK%úDXË<£Rµí8ÛpŽŒ0‡æñœ<¬À.±ž!Xß&êJzˆó¨cAx½Ù½[n¡· G=]TaŽ7X'Yg»¡fùÂÏÅ„½\.'´‚²}Kš½ýb¤Þ‚Ÿ +ߌǩ: PŽ-=؆Lì>ùIk:wÒÖZ»W7Š‰òrÏN:hh»ýjPÈêúQJã°Ë*µ`NÜÀ wu2ٮʪ)¼åöÚ©®Ž›oD¥mÊócðð¬»v4«hJPU¹A£¾D[µðûs±]í|j;›ÑL~x±Y–¶9ÛÑmµÙÖZo§(æn69AÎÖZdk±åv˜¼ÝŠ§Ú ìÀBœ_Vœ½å¦Û1¦hß&u(öR«=SëH*Bê0"•zI'GJ©gû<Il)à±×=ôosEd1óí8ŸÚÂf4‘L>ÁpO¥¡(->-¨BIÈ>ˆ€pgZ¥ÞYÎÎ3WöÅcÑpH}{uBg3gèÒ+ÖUKç*’W]]xüw50ºBƺ¼ûƒrDí®ñh+Å›å\NÀÉ䨞”MÏjQNèÄF)9 k€6þ›®ç8J“5 e§:x"9ÍX¥›ã5Q“—ëî„”“¶€õR9ëF–¯t{*QÖ?]Ägœp”,âZúkq×jÏöÎbþ½[û‹°ÚN3ÖsýJR· r’3Iÿjª:vêÞúŠXÅ[¸+"\ÖBišOiŸêkÌØ,êÝcyO¬íÓÚªÝÈi3Ñ…K@‚öýEÑ¡*FhƒRmÞ7v¦GÃ{fŒi,€â>‘‹#MóûPÎ<)94"Rü¤ÚF±1GJ×Ì…ö;Áß¿z©_`¶ æï9t”{®ˆã>ÏÙkÏþ“é®öæ*·<ûÿòêMñëÞ¸ø‡ÞÜüe>f™ìr‰˜eoCâ¬dx´ˆ"0ä‚¡-¢|#IfÎØ(qÇÀ"‡o +€¦Ó*ê³Órà<«h”5ÂÌúÿD.?·^ƒÔf:Èçk‚TåÜ6UEp¼l‰=›¦ýMT×t\À¨@6…£ˆ‘Çâ6â:Sϵ1‡ŒÊ|&o‡ fºõXgÍEÜ岡 oé(â´Zé03˜3ä?º¢êf·÷ͨDºg’ÂÑtkŸ…–Ék´“GH¤q'dâ 'ºyQI"Zº&ÞZfh5íA±s7qs—«³2ö<å^<³RuQòX\巴¯ +Ãøå–@H€Ðn…È¡®'Ý›T*Ϊu9²!QT5QQOVೡâäLD…_ؘÄø¤Òæ\B€Ðœà"QæÈTƒ!AÂÓ¼X§añvÁ~„òiTNÅ`>Õtè«)þùƒbæ;£Å£Ržæ‰ +·¯#í•ã ôƒ´xpSð üe²œ(ê[`TåÓè… ŸßKí¨àÔ-ñ«Ù«oÓÄÄ—Àžf,í&¬[ç,+ê9I‰)dÚãÊ«y × ›V)ØÖ‘W=ÌôÜ&.ØŠAG¯9~[4¨šÁòÆÛÕ¾å¢òkx^òÅ`ÂçÓWð¤hœë*(H£…à×äP ðª·Îš-ÄL):bÚ‚mŽ ^Æ•¢jùî #ߊœš‰[\IЖ‚œ‰Ý¢ +ç¹eæ†8cB¢åÁò U«˜ÐÚ`¥©¢±ØØqYË€‚i%§âãîØ¥3icO5•UÆS¨`iáp ¤#û2öâºa \%2vÌÏ›nÈìPÊQÑviÐRÓð1XåÞæòYÅ3U1´©´ñPl} +Á ú“IEMS½ç%Jœp;")a’rºE¢—AÀÓ[Ð=êÔœu†q·5›qÈ(ƒdÀ÷¥¼@’5XÈme‚µíºÚ¼!xÝå¡y„0÷ìÊ–@’‘œ†}>ké[¾D¡¯+lDLcp<ˆH£¡ÇQ5F3ý`Ü‹3„WåÍ´Þ÷tâ6‡jÙ0OÄøIöTwò�åhnuyÃÅP¸åý&> ±î4gä}À]$þœÉýªi;uavÓÖ¬^B[®—4Ô¾à+qF@,U¯6ò ñ*]¹V$l€˜Rc’¡Ï÷mšþ÷ÀýÑ5<>‚õÜ�Sâó×�È-ѳ©D©_“^ˆ"E×冕´”Å ’•Ü•äÈò–m|S-Áƒ‡È31SÕîû5C,Чõ@1"h»q·sµ%S/->iQMÛRÖ Æà°NY?Š¿PV•lG^AÇËž{ùÏùf´hÌMË?m´ü‡ºH fÍ3× lý·)ÛÌKöŒ„ÛR�È”“ÌÛßlɽɨL-8#¤žÎ�ƒ°kLQ‘ü¶‘³LjÌÿ„ +“i‡±®žn1ª�ÊÈ=a¹À9€ÀœzïwzçÇ£=9)§Îèh*„3ž?”MOûcr=iÄ8~ç·µXlbâà6·¶USà ˜¨œiñÞ*àð-´Ã™ïLX^Sæ.0æ/‹@¥j4%RsiÄ"¢ ¼6so¼íÓ”:vãŽ}{/`³²0r±‡(ÑÑبûw.�¨ùœòÀI©ñ—èê×kV¥¦ËóIa¿H2á„Í3d»a¼N¤ÉܽE`c4´‹8â«• Yæx Jö´°EG@`Œ7|‚ŠhÚcáQË ðòãĈŠ †¼É.Âù6<Pö ™‰Èò˜ð6FÙ/umn’¥ZÅä=v/GéÂRþІÊDü¨Þ)C´þžèðª×)i67áRJÿÿí°Æ¥å ‹Ìkùæõgêe¨…i+'uþ+å«Ëw³¼(œ¦þ;|š<’iý|WäÃ"Ì XJœ2}ÖB‚êìAƒª\,ÌWÏQù¯æ_…‡ë`¾Öë7¾yYH^µw¯uj¾M¨wµ7Ùaà§ÁÁo²þ”ù‡îÚ>_úÞ¯»éOÿ¦ž¼ûyä4è$¼ˆŠ“Îò ˜Ô<èˆöÚ*þ·íÜvB9(v$±$‘;ƒ)äBµ{1Ôi£ùÂlSÜ‹èá&c·‘k¸%h‰�ájt†»*YÈEUR€ÇH³ƒ�b¯i?äCºÀg°ù> +CÕpB!T¶\f 9©¸S¢ÉxS°e–Óù–RÂ¥J¾ÈÑÒh%–ùÒ“ zC“ß×ËQ²Ÿ²ˆœEÙßj~kE½XTƒÜ/÷wѽºÛ'¿Ž†~Åir¥y™ýlž½ Ô0~Cn¤FP¥TMN•SȤér³Þ*K )@J)@F¨à`OlCkv¬ÐÔ š§%æï<ú\ÈjE·£Yg%r(¹)…óœý £T¥aA„‹#üÂl×l·ƒ=ðñíFâi'»_ãKW�Öa^áCïT[[˜›“â¤{S*|*`Àjvîþ;ň~A@"Š“6œ�µ²ž[¯ðÁOœÚkÀfþevÐÚ÷‹#‰,:00ÆÃÀ×ßåR#héÉ9(¹yyXù‘²MSc–vs½f™·l¶§Ëç݉Ä=16~±YõæB! +ÕI£þù¹Ô&%9œ„IŠ%ÃKcQak·ŽKWrd¢Ãlr$:ØEƒ(Cn +Dxsâ}2.!¤ÜÂxZ¹…¿ÏËO$J¡ÄÖíD(¹¬R*^ê¯X¤Éd—e2›)¦1š®ˆAq‹ù4›I¾O§R-:³éÕë@ÓÙÂ8åF·�åÕ]1z*ÁÂ8N¿¡V"Ô4ÌZ|ŸÇ:ï@¼«_¸M6‹°¥U¬gÛû`ÛíiC(·îGEq¬¸Ždà}~'œF:cÏùVa.îb¹\ +ãÆv!"Ý8>ÆßôùÄ0¦{¾Àò¥Ÿ„‚""&´à(ØP0:&>*yïˆèJ/²8¬TtTtÌ°ÅÐ ˜ÄQ‹ÁyY0„£a‘a"qñy8„Š à$'E'%”‘–’A41÷d»‘00ŒEÅãz¾Ì¨^;‘Ž8D‚ +LLNC‚CMK€EÃï(—ßш…cáA¨¤„¤d‡Ü_[äô0 +¥xv6‡\:Ò(êô¯<ß„ýæ‚ñ¤U¨éZµŸ.×vŽë˜êO¸´^©0 è å›>r,‚w,OfoåÌÉ#µ’æžÎÅ-CZR/DzÙfªë̸=±Z™ùº¦’C/íT!Ö<ôzÎÕHnNÀX¼¸±|1½sg +¹¶zÿ“d˜e#ŒÍT'9 ƒÅ¨´ “e¡c)q,„ì$ð³]*<bV()BdÑzžˆ€šžÞnd`*S•èÆÅÒˆ3¤ƒí~a—ˆó !DÁë´Ã‹mıÁÀY5ô3 '¿‘ãccbœ—‚Ueêؽ˷„øÇœqN'qºOXå.…WwB³gò‰ifÈ3ÉÓE&9“(LAÞP¬HÎÀd;GçÎ1My®0U‰(¯ˆfT̃±e_YË5Bgþþ!²ËJîß2-È£by\<OŠ"XcÅ÷´„ž•Éx¥y^L/JäeêÒò8H¤†�’P�è£ÔÐ�it€ˆñ€Œùà ˆ °ƒÚ8�7]"²£N‚,iˆ•›Z“#1”У")5ùiýuoʉx2¢ÉDVfâ³`ÌJF6TÙQæØ `€0¿¦¤—|(Zé€W™Ëøy:àýûfpêwYñÔEVÀŸÛè£e�¼(SðQÀ20ð°À,$gi.®Š‡Rsñé±ÓnûtÌIg¯ÈÈ¢ú8Xlq'"þÄ&-Ù)Juf§§D”[åJcSŒK–Æsñb͘z–ZªVªµj£:DíW*Z-obË„ð'éÍßç #N:í¼÷þFm¬q_b’¬üž#|V_}Ë›¥èºÅ³ñBü?Ãê™j±Z¾¼¬KíËüàN@ßà èc±Ôÿ?M맾?!ë‡ÿ±åŸÅù™SFøá»uAi?f¯HýfŸ'vÖ%—]uÝ]÷üiìÝÏ´�e¹=‹Š±˜‹µØ²©x– f?þÃcÄ1ÄÂxÏ’‰<ô´¿ý“šQGc” ŒÝòÔÒÐ20r²Ã†óŠ’,u&²L1]±*Õ™�¿�´*¦^§¹Ü¸’pÞµ·‰½Ç1œqo?–ټ秗tþ'Š4îXcKT±x,Ú£¨(PLØM$Î¥¸fJBÊÆÄÌ‚ä'ZŒ€Ø”å™!G®*ªu^³MÚÍ©f«Ër¯Zl‰·¬÷†7uÛ퀽ö9bÑa×\þ£g~4?uÜ]4-èZqÌC˜¯‡ÀBJ+È,¥ò:±×謦·†ÝÛÞaÕ'ÄF¡6³…ÇVvðÙ%ÒN ‰wP’£Ò”étŸ¹S²5Ù IΙ撩.*pC‘[ò]Wè¦2ÐmRc¦ÏÌö…Y>OÛ„&ú#êO¸r)õ¾W|Hnµ^µ†n„!#b@(”é<ñcÀâo{œDÿ¶Pš�ß_\ìÈøSî,¥7w 8½Â G|ÍÖ·5‘éÉ?ú?>µwä‘’¸@ÓêÇc~Ê”¾³¬ËÀÒÙ´¤0ª-Ö¥¹«¿fÅò_ôÄÁü‰¦Y}JQ š<ÅÞ“Ž¶Yö*†›‚*Oð¦5aåÀ¼G½MÒ;3¤]9xùVºm2¼zŸ‹~k_¾4ÚùûâMùò+¸^m-éc¾M$ë3È—ìNªM£ÜóÀÀ.ˆ*“0¦9d«§Â~ÓÄøKH‹o~½/]“jš.ïO¨ÑÅ;ÐIÌ"æ×þ¾e‘^߯Zy¢óïo/1_BH—m }¹Ÿ‰¿ÇÒD·ˆtôÃäEÁ[; y‰oÃÜøËz½^Ò¿ùk¡r_ÖFF¾%îÕ0m-ëjÙ×ͳtâ]Bç¾]Q'Ú¾¢oŒØ~Ï~<¾HÑ#éÍmó¬ðšvµ6 +Ý�kïêG …{KS›vw¶ÔÔïR-Ç"8¯î³l®iä‘aÚq©E3ÓîŽJ™÷íè3~Ogà�ùðw ÓŸ€ÊIÛ'æltÇŽÇ¿l¾µËÞûî»,‘[.w“¤ÒÕEö¥¸žð^‰ˆ÷åñ¹Õ¢ö‘ˆžÒšìZ1GÑí¨¸qPÔ\ÚwùzÚ…í# ¢F•ÚÃV&¥ê;º‹Íx`8 +Ú˜áûŒ(‚!ôjš.þÄÖm†¢uJ˜”Ö6Ò¼Ö›UòðŠ( @ÌÎ,0ܱFÊ‘íVTM¶VŒ±¾]˜r+g¡•Àûc¸xÓü±w¡7úŸ…×UCVëþñ‰ÿ<¼g@É7ÿ]VÝ_QÁßfúÅsºC|Q wB=áæg¸Óîó:ýí½”jeç\µOõÒûéã<ý@&ÉšV +îØÏ‚‘Z›MæhRo¦VjÓUk0“Z¢áš«LSV»zåZ¸Õt~müDGÉ‘)Ï$QŽæ:ŒwRîãÕ¢ÕLM©‘Y§I›J3u¼p'7Ð×Eƒòÿ�‹ýÖ¨6Wµ*…“÷+WÉW?x6Â97÷siíZ3µ©Ó®‚ÓÑÀõß;jÙM >Sƒ5xWÝuDA½ÀyZì-Õ¥ø��� \ No newline at end of file diff --git a/core/themes/olivero/images/background.svg b/core/themes/olivero/images/background.svg new file mode 100644 index 0000000000000000000000000000000000000000..de403bdfb261f6f9a49e88844a6f68b5be16c15a --- /dev/null +++ b/core/themes/olivero/images/background.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="50" height="84" viewBox="0 0 50 84"> + <path opacity="0.05" fill="#0e6ba6" d="M25,61.7C25,68.5,19.4,74,12.5,74S0,68.5,0,61.7c0-5.7,3.9-9.6,7.4-12.9c2.3-2.2,4.5-4.4,5.1-6.8c0.7,2.4,2.8,4.6,5.1,6.8C21.1,52.2,25,56,25,61.7z M42.6,6.8c-2.3-2.2-4.5-4.4-5.1-6.8c-0.7,2.4-2.9,4.6-5.1,6.8C28.9,10.2,25,14,25,19.7C25,26.5,30.6,32,37.5,32S50,26.5,50,19.7C50,14,46.1,10.2,42.6,6.8z"/> +</svg> diff --git a/core/themes/olivero/images/chevron-down.svg b/core/themes/olivero/images/chevron-down.svg new file mode 100644 index 0000000000000000000000000000000000000000..08260102beac84c79a667d931a18de2e04acd54f --- /dev/null +++ b/core/themes/olivero/images/chevron-down.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="18" height="10.5" viewBox="0 0 18 10.5"> + <path fill="#fff" d="M18,1.5c0-0.1-0.1-0.3-0.2-0.4l-0.9-0.9c-0.2-0.2-0.6-0.2-0.8,0L9,7.3L1.9,0.2c-0.2-0.2-0.6-0.2-0.8,0L0.2,1.1c-0.2,0.2-0.2,0.6,0,0.8l8.4,8.4c0.2,0.2,0.6,0.2,0.8,0l8.4-8.4C17.9,1.8,18,1.6,18,1.5z"/> +</svg> diff --git a/core/themes/olivero/images/error.svg b/core/themes/olivero/images/error.svg new file mode 100644 index 0000000000000000000000000000000000000000..072a1501a5f3130bb392f373e9bba0e0e5df8686 --- /dev/null +++ b/core/themes/olivero/images/error.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="31px" height="31px" viewBox="0 0 31 31"> + <path d="M0,16.2C0.5,23.1,5.2,29,12,30.6c6.3,1.5,13.1-1.2,16.6-6.7c3.4-5.3,3.2-12.3-0.5-17.4C24.2,1,16.9-1.4,10.6,0.8C4.2,3-0.5,9.4,0,16.2z M3.9,14.5c0.4-4.1,3-7.8,6.7-9.5c1.9-0.9,3.9-1.2,5.9-1c1,0.1,2,0.3,3,0.7c0.4,0.1,2.2,0.7,2.3,1.2C22,6,19.5,8.1,19.3,8.3c-1.8,1.8-3.6,3.6-5.4,5.5c-1.8,1.8-3.6,3.6-5.5,5.4c-0.6,0.6-1.2,1.2-1.8,1.8c-0.1,0.1-0.6,0.8-0.8,0.8c-0.6,0-1.5-3.2-1.6-3.7C3.9,16.9,3.8,15.7,3.9,14.5z M25.3,9.1c0.7,0.7,1.2,2.2,1.4,3.1c0.3,1.2,0.5,2.4,0.4,3.7c-0.1,2.8-1.2,5.4-3.1,7.5c-3.8,4.1-10.2,4.9-14.9,1.8C10.7,23.6,25.1,9,25.3,9.1z"/> +</svg> diff --git a/core/themes/olivero/images/info.svg b/core/themes/olivero/images/info.svg new file mode 100644 index 0000000000000000000000000000000000000000..24b3c4036eceb5ebd514307467106f9d9b2ddd35 --- /dev/null +++ b/core/themes/olivero/images/info.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="32px" height="32px" viewBox="0 0 32 32"> + <path d="M32,16c0,8.8-7.2,16-16,16S0,24.8,0,16C0,7.2,7.2,0,16,0S32,7.2,32,16z M16.4,5.3c-3.5,0-5.8,1.5-7.5,4.1c-0.2,0.3-0.2,0.8,0.2,1l2.2,1.7c0.3,0.3,0.8,0.2,1.1-0.1c1.2-1.5,1.9-2.3,3.7-2.3c1.3,0,2.9,0.8,2.9,2.1c0,1-0.8,1.5-2.1,2.2c-1.5,0.9-3.5,1.9-3.5,4.6v0.3c0,0.4,0.3,0.8,0.8,0.8h3.6c0.4,0,0.8-0.3,0.8-0.8v-0.1c0-1.8,5.4-1.9,5.4-6.9C23.9,8.1,20.1,5.3,16.4,5.3z M16,21.3c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C19,22.6,17.6,21.3,16,21.3z"/> +</svg> diff --git a/core/themes/olivero/images/magnifying-glass.svg b/core/themes/olivero/images/magnifying-glass.svg new file mode 100644 index 0000000000000000000000000000000000000000..219cfc31f69b2913a7b8d895dd628e8a74885c6e --- /dev/null +++ b/core/themes/olivero/images/magnifying-glass.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18.8" viewBox="0 0 18 18.8"> + <path fill="#7e96a7" d="M17.8,17.4l-3.6-3.6c1.4-1.5,2.2-3.4,2.2-5.6c0-4.5-3.7-8.2-8.2-8.2S0,3.7,0,8.2s3.7,8.2,8.2,8.2c1.8,0,3.4-0.6,4.7-1.5l3.7,3.7c0.3,0.3,0.8,0.3,1.2,0C18.1,18.3,18.1,17.7,17.8,17.4z M8.2,14.7c-3.6,0-6.5-2.9-6.5-6.5s2.9-6.5,6.5-6.5s6.5,2.9,6.5,6.5S11.8,14.7,8.2,14.7z"/> +</svg> diff --git a/core/themes/olivero/images/pager-first.svg b/core/themes/olivero/images/pager-first.svg new file mode 100644 index 0000000000000000000000000000000000000000..8234feb812cc9ab3ce796b5e69aeef99f9a95e2e --- /dev/null +++ b/core/themes/olivero/images/pager-first.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="15px" height="16px" viewBox="0 0 15 16"> + <path d="M5.1,7.2l8.3-6C14.1,0.7,15,1.1,15,2V14c0,0.8-0.9,1.3-1.6,0.8l-8.3-6C4.6,8.4,4.6,7.6,5.1,7.2z M0,0h2v16H0V0z"/> +</svg> diff --git a/core/themes/olivero/images/pager-previous.svg b/core/themes/olivero/images/pager-previous.svg new file mode 100644 index 0000000000000000000000000000000000000000..63c5bdf840bd096ca8f51e5b3977d338a9ebb2f5 --- /dev/null +++ b/core/themes/olivero/images/pager-previous.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="11" height="16" viewBox="0 0 11 16"> + <path d="M1.11201 7.19126L9.41183 1.15503C10.0728 0.674329 11 1.14648 11 1.96377V14.0362C11 14.8535 10.0728 15.3257 9.41183 14.845L1.11201 8.80874C0.562908 8.40939 0.562907 7.59061 1.11201 7.19126Z"/> +</svg> diff --git a/core/themes/olivero/images/rss.svg b/core/themes/olivero/images/rss.svg new file mode 100644 index 0000000000000000000000000000000000000000..3f77c22e7adce6a5e2c1b0e6b947b6536c1d6926 --- /dev/null +++ b/core/themes/olivero/images/rss.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="14.2" height="14.2" viewBox="0 0 14.2 14.2"> + <path d="M4,12.2c0-2.5-3.9-2.4-3.9,0C0.1,14.7,4,14.6,4,12.2z M9.1,13.4C8.7,9,5.2,5.5,0.8,5.1c-1,0-1,2.7-0.1,2.7c3.1,0.3,5.5,2.7,5.8,5.8c0,0.7,2.1,0.7,2.5,0.3C9.1,13.7,9.1,13.6,9.1,13.4z M14.2,13.5c-0.1-3.5-1.6-6.9-4.1-9.3C7.6,1.7,4.3,0.2,0.8,0c-1,0-1,2.6-0.1,2.6c5.8,0.3,10.5,5,10.8,10.8C11.5,14.5,14.3,14.4,14.2,13.5z"/> +</svg> diff --git a/core/themes/olivero/images/search--white.svg b/core/themes/olivero/images/search--white.svg new file mode 100644 index 0000000000000000000000000000000000000000..81730452219f3196d8c00ed75ec812c52eba9db9 --- /dev/null +++ b/core/themes/olivero/images/search--white.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="26" height="27.2" viewBox="0 0 26 27.2"> + <path fill="#fff" d="M25.8,25.5l-5.3-5.3c2.1-2.1,3.4-5.1,3.4-8.3C23.9,5.3,18.5,0,11.9,0C5.3,0,0,5.3,0,11.9c0,6.6,5.3,11.9,11.9,11.9c2.6,0,5.1-0.9,7-2.3l5.4,5.4c0.4,0.4,1,0.4,1.4,0C26.1,26.6,26.1,25.9,25.8,25.5z M11.9,21.9c-5.5,0-9.9-4.4-9.9-9.9S6.4,2,11.9,2c5.5,0,9.9,4.4,9.9,9.9S17.4,21.9,11.9,21.9z"/> +</svg> diff --git a/core/themes/olivero/images/search.svg b/core/themes/olivero/images/search.svg new file mode 100644 index 0000000000000000000000000000000000000000..7f8b475416d8a4caaa7b17b4aef98b1abf26b005 --- /dev/null +++ b/core/themes/olivero/images/search.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="22" height="23" viewBox="0 0 22 23"> + <path fill="#0d1214" d="M21.7,21.3l-4.4-4.4C19,15.1,20,12.7,20,10c0-5.5-4.5-10-10-10S0,4.5,0,10s4.5,10,10,10c2.1,0,4.1-0.7,5.8-1.8l4.5,4.5c0.4,0.4,1,0.4,1.4,0S22.1,21.7,21.7,21.3z M10,18c-4.4,0-8-3.6-8-8s3.6-8,8-8s8,3.6,8,8S14.4,18,10,18z"/> +</svg> diff --git a/core/themes/olivero/images/select-chevron-bg-default.svg b/core/themes/olivero/images/select-chevron-bg-default.svg new file mode 100644 index 0000000000000000000000000000000000000000..23e7b897d4b5b740ee571e4c0b7238aa62f0c2eb --- /dev/null +++ b/core/themes/olivero/images/select-chevron-bg-default.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="54" height="54" viewBox="0 0 54 54"> + <path fill="#7e96a7" d="M0 0h54v54H0z"/> +</svg> diff --git a/core/themes/olivero/images/select-chevron-bg-error.svg b/core/themes/olivero/images/select-chevron-bg-error.svg new file mode 100644 index 0000000000000000000000000000000000000000..2e068acccecbcd5450175324852d7c5d3b5cdffb --- /dev/null +++ b/core/themes/olivero/images/select-chevron-bg-error.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="54" height="54" viewBox="0 0 54 54"> + <path fill="#e33f1e" d="M0 0h54v54H0z"/> +</svg> diff --git a/core/themes/olivero/images/select-chevron-bg-highlight.svg b/core/themes/olivero/images/select-chevron-bg-highlight.svg new file mode 100644 index 0000000000000000000000000000000000000000..7d9fe154ee52f292151ea192905da1ec8cf4404e --- /dev/null +++ b/core/themes/olivero/images/select-chevron-bg-highlight.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="54" height="54" viewBox="0 0 54 54"> + <path fill="#53b0eb" d="M0 0h54v54H0z"/> +</svg> diff --git a/core/themes/olivero/images/status.svg b/core/themes/olivero/images/status.svg new file mode 100644 index 0000000000000000000000000000000000000000..becae08c66a7adc54399214992ea57cfe73d459a --- /dev/null +++ b/core/themes/olivero/images/status.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="32px" height="32px" viewBox="0 0 32 32"> + <path d="M26.8,12.6c0,0.4-0.1,0.7-0.4,0.9L15.1,24.9c-0.2,0.2-0.6,0.4-1,0.4c-0.3,0-0.7-0.1-0.9-0.4l-7.5-7.5c-0.2-0.2-0.4-0.6-0.4-0.9c0-0.4,0.1-0.7,0.4-1l1.9-1.9c0.2-0.2,0.6-0.4,0.9-0.4c0.4,0,0.7,0.1,0.9,0.4l4.7,4.7l8.5-8.5c0.2-0.2,0.6-0.4,0.9-0.4c0.4,0,0.7,0.1,0.9,0.4l1.9,1.9C26.6,11.9,26.8,12.3,26.8,12.6z M32,16c0-8.8-7.2-16-16-16C7.2,0,0,7.2,0,16c0,8.8,7.2,16,16,16C24.8,32,32,24.8,32,16z"/> +</svg> diff --git a/core/themes/olivero/images/throbber.gif b/core/themes/olivero/images/throbber.gif new file mode 100644 index 0000000000000000000000000000000000000000..f255b0d3eedd53c3a33833c93ad09da4d0ff7358 --- /dev/null +++ b/core/themes/olivero/images/throbber.gif @@ -0,0 +1,17 @@ +GIF89a/�/�ð��çë¸!ù ���!þOptimized using ezgif.com�!ÿNETSCAPE2.0���,����/�/��„©Ëí£\¡Ú0³ºkÝu߆cTŠç“r+›¾R,£fm«8tï°ëãY�ž £gdè’J “â|n¢RIJz¸b‰Ôm×Õâ–âùk£eçóZ^iã'Œ;a¿Åt)ø1hU8s˜•x´˜Åµ6ÕhXò#‰×2„9D¨ÙYÄéIó‚ùØç'BùDºÅÚZ��!ù ���,��(�+�€~–§”¨µx„iÁÝ +£r´Ê‹ªvøîÏtø‰ùPf®féŠ[¼jôkÝïjá%¹!ñgq’Ê%s‚|f¢Ò…³z bµÕ"àÝr¥ãg¸[N +l:æ\÷ŠrÚº^Ïìu˜l؄熆àƒhˆ³HèáøäÈÔ"R��!ù ���,��"�+�€çëî—ª¸s„iÁÝ +£›4DYó¼K{w}"ƒ‰€WVÜ *ÚŠ® +ÃY]Ó8§ïáæãQ‚Â1%;B€Ê™±cBÃiôi•ZYØiuË}€ÃÉí|Îj½ivÚS¯›7t^ÏYók9añÑñÂ7rGeˆR”(¦—HG˜P��!ù ���,��%�+�€���–©·q„iÁí +ãr´)®8íOuàøDä4BŸ¸yZ‡¼‡»]ÖÊsº‰ãýj¾!Ìb$†’Ç%ã|š¢ÒµÚËaƒÛ©°›ý‚Å1ùÚ-›Ñi6V FšQâ8¼í®Ê×ûq‹Oƒ² ERgd¸u"ØÇx¨P��!ù ���,��)�)�€çëî—ª·u„iÁÝ +#t´2‰Ý5ORž–g@š-'Áãº}݌Թ…+ü.êùn´ p$‘—¢c9-ŒPµŠ¹b£Ú-³éuä'™+=UêuÛý¦ãN6}j¾+ã?ýøÜGø¦#8Ø&׈x¨ÖèøiçU��!ù ���,��*�#�€���”¨¶l„ Áí +ct´2‰‘Ý5K>ž–͸˜†š-‡Á¨¬lhb×Ýï$ŃX~¢ ¸B…Èá’)ò='é”xQ^©Î-5Uô~´b襣¹ë±º|Ãðø¹Ž àóûCwO7Ø6HxÒçw‡W��!ù ���,��+��€òôö—ª¸Z„iÁí +ct´2‰“Ý5Kv–Ϙ‹ê™‹qhº}ÖLÞJç¢êšŸpx9Hå’¹¢D‰PˆèY¥=°Yí…›-u¡ñ®l.òÒH)»M}Ÿƒr`=R��!ù ���,��*��€���”¨¶`„Ë#j´‰§Ý4K:ž–˘WZz`ö~ÊZÑL¸Rå|÷ùHÂZq¨ë”ȇÒÖtö˜Ñà‰ZM +ÙÛ±ëý‚«q˜k–¡Ó [º~kãrã©>¿ãíû ��!ù ���,��%�!�€òôö—ª¸^„¡Ë#h”Ê;«n8íÏaàÈ\¤sF_·BUç½î«ò£Ô’¦÷SFóénBV¨h<"MÊ¥äA£;šƒúbq¨Ü–;ýšbòÖ"›±è4P[^SÛq¹“ž¶³¯€�!ù ���,���%�€���–©·T‚©Æí¦b|ôÈ›*Ã<hØaÚb…ÞWuè(®éå¾SLÁôcߤ;y_Ê�A¤aðdä%gCe“ù.¥@gÚ³f‹WîÖ{ûé´arLLku©kãÉ(��!ù ���,���)�€òôö—ª·LD€©›á΢yO*Š-ÞrsíAÖäHh’™Y¦-»ÂñøÉUªŠ¶NÏ …«í‚¾N1"ü݆®##‰„>i•zzE9 Òûå}q$rÃT��!ù ���,���&�€øùú•¨¶K„ÈÚâ{‘MZÍ…YïîQø‘ewf©:!†^î*És{Ã쟯«Ø€½]ÐA³…ÉDóuDlŠÒéHiEZ¯ÕlmjŒb¹(¢��!ù ���,����€òôöš¬¸A„‰ÁêÉâ›QÎWÃÅy«¬yK'`9Zè‰ìJÂUëÎí[âæ±È“Ù€A¢ŽS¼ðTåÏä|B£ ¤s52E�!ù ���,����€çë¸7„©í—{±šÙ¬ÅºâÐEàJ_©œ(ò륾íÇe›¡xžÌîKqáLd“®U��!ù ���,� �� �€~–§š«¶)„©ë‚l°š9-ÄY/ÞI�†XUvdJ±çåÆê*»JM¿O=[¬V��!ù ���,�"���€~–§š«·"„c©Ëš\ÎjÅMklž'ŽÎˆšJʆg‹v°ÆK�!ù ���,����€���š«¶-„§ËáÎâzOZ +mÄYOì5\ø¤Áudšœë²ª&›mYW[®Kü}©¹^˜�!ù ���,����€���™«·5D©ËçÈâ;QÎÚ.Vnó|œöu"Š¦J–-¶ºoog×ôÍꟻá2ÂáHôS½C�!ù ���,�� �#�€���˜ª·9„ká|œ„²²:~z_ü‹f£Ur'ºšûª‰³’â)”Ø1Ý Ý(ÂpsDæ’¾š«Å‹ +�!ù ���,���#�€���–©¶B„i¡½™{1NP³Ë¼ñž|–'Nåõ]h²m¥®šê¾# Çõ6㹉Q‚Âx”$…2äRg´ÝPQ^•ô2e±�!ù ���,����€òôö˜«¸H„iÁÝ +‘›”ÅS³»º[èuQhU v-§™rl;¾ðºÍñd»u®È<†ûõ‚Bஸ "”¥ñád—JjµØŒf[îyÅB£�!ù ���,��'���M„ Áí¡¢D¯Ö‰—Ý/'^^H:Y ¡xr‘ëð±ÅJ-[ö+jÝÎkÐzÀƒò+ÆtÊe²Ù2AGÒ)†h +³«'÷ãý·bã±)��!ù ���,��*��€ÇÐÖ•©·N„Ë#j´‰§Ý4KvÞ–Îh^€é™ûm£ÁEò¬U…?¼¢ëù‚4¢(Z%ÃÓÙt¡H†òD.4Ù¶‹™‚wË1ùkÖ +�!ù ���,��'� �€òôö—«¸]„Ëa›tÅ«ªžøíÏuH:X9¢Ñ×±ž&fUÇô,›öM!áþúe€ÑÖ;"“J³yB‹Òiaê²WWRý¦°b¹œó¢Ççõþ¾ËsqÝÞ^ �!ù ���,��"�(�€çëî—ª¸d„¡Ëèÿ˜œ +ZŠ§=¹ëë…˜"¹lf ¥*¾òúÍ2eÛx~×üæûµ‚B±È‘ Êe¤é„A£4µ:ºbµØ�71¥—cd8Z.¦»këm£×9Œ[n¶‹ñN:ÛÊèP��!ù ���,���+�€òôö”¨¶_‚™Æí¬b|ÔÈ»*ÄX[ÎiÊ"žžUªR]ëJð*ÏÏeßSÞàü6ú‘2ÂC°X&KæQùt¥S^3wµí QìÖš……[>ðW;>½Ðe1ËSªÆâr|vÇ¿ÝÝS�!ù ���,��"�+�€çëî—ª·h„é›-ZGéÝ gyˆ‰š¨¥®éè>^üN44ߥ'y¯8 °a‡g<"‡E`³÷„.Bf•:•fuW-#©üX±5<ŽÆÈ\¶’Ô’t}q¹Ê4ÇëçĽ~ãçVãwƒ‡R��!ù ���,��)�*��{„©ëYh±Ú‰©Ý2kÎyŠ#šZ©l*¾›)ÏqÝzx®ïÐís�ƒ‹!a<’JæÑù<)‘½éah¬¦Ð`×Wµf«˜¦î[Š¡aåqXF[®C×Ë~“ðT=ª‚EÇW8b(5¨…xÖvÁȈI¸7)èR��!ù ���,��+�&�€çëî•©¶r„©»Áã TÚKóÝ,{N^†#Yr§“ªcë¾0&ÏÒiÓZ~¯;ð}€"!‹h0‰JdQè(—ÀiÔêtìpL·êýÚVOÔ¸&·ÈAµÉí[»“lP¼s·@!ÆH¿‡5EÅ'(øVXwˆø#‡ˆô·Q��!ù ���,� �+�$�€çëî–ª·z„§Ëíâ›ôÅ›ª¦XîÏtÈ€˜‘v ª%"Ý;ÅçL¯ì}å5kó5P8aˆØ3‘)e‹ÙtÊR4ê¼VŸÌí´»Å³â"yç:ïxIå8-„Û49w²ßñ"Lÿ76DõãWq•ˆ¨HØ×høÉf4éå¸Q��!ù���,��+�*�€çë¹z„›íÕb±Z9éÝ){ÞncVšgªcË°‹Î–lßdá<ôúõvB±Ø9Wš%³)|BR$¢j•²²X¤Ö +x)yâñ,Œ’|9_ºMdÃäòR}5¯‡õºw’o„7$Ät¡Eƒ¨ÂØòˆ²u&éeR��; \ No newline at end of file diff --git a/core/themes/olivero/images/throbber.svg b/core/themes/olivero/images/throbber.svg new file mode 100644 index 0000000000000000000000000000000000000000..1034c9d30c71186127695cde9b84952420fc4ffc --- /dev/null +++ b/core/themes/olivero/images/throbber.svg @@ -0,0 +1,6 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 10 10"> + <style type="text/css">@keyframes s{0%{transform:rotate(0deg) translate(-50%,-50%)}50%{transform:rotate(430deg) translate(-50%,-50%);stroke-dashoffset:20}100%{transform:rotate(720deg) translate(-50%,-50%)}}ellipse{animation:s 1s linear infinite}</style> + <g transform="translate(5 5)"> + <ellipse fill="none" ry="4" rx="4" cy="5" cx="5" stroke="#7e96a7" stroke-width="1" stroke-dashoffset="6.125" stroke-dasharray="25" transform="translate(-5 -5)"/> + </g> +</svg> diff --git a/core/themes/olivero/images/warning.svg b/core/themes/olivero/images/warning.svg new file mode 100644 index 0000000000000000000000000000000000000000..af35182579ffaa78d9374a6a51fe5c983cdef5e8 --- /dev/null +++ b/core/themes/olivero/images/warning.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="32px" height="32px" viewBox="0 0 32 32"> + <path d="M16,0C7.2,0,0,7.2,0,16c0,8.8,7.2,16,16,16c8.8,0,16-7.2,16-16C32,7.2,24.8,0,16,0z M18.7,26c0,0.4-0.3,0.7-0.6,0.7h-4c-0.4,0-0.7-0.3-0.7-0.7v-4c0-0.4,0.3-0.7,0.7-0.7h4c0.4,0,0.6,0.3,0.6,0.7V26z M18.6,18.8c0,0.3-0.3,0.5-0.7,0.5h-3.9c-0.4,0-0.7-0.2-0.7-0.5L13,5.9c0-0.1,0.1-0.3,0.2-0.4c0.1-0.1,0.3-0.2,0.5-0.2h4.6c0.2,0,0.4,0.1,0.5,0.2C18.9,5.6,19,5.7,19,5.9L18.6,18.8z"/> +</svg> diff --git a/core/themes/olivero/js/checkbox.es6.js b/core/themes/olivero/js/checkbox.es6.js new file mode 100644 index 0000000000000000000000000000000000000000..e051de5040c270add3148452e78deeeb62f9ceae --- /dev/null +++ b/core/themes/olivero/js/checkbox.es6.js @@ -0,0 +1,15 @@ +/** + * @file + * Theme override for checkbox. + */ + +(Drupal => { + /** + * Constructs a checkbox input element. + * + * @return {string} + * A string representing a DOM fragment. + */ + Drupal.theme.checkbox = () => + '<input type="checkbox" class="form-checkbox form-boolean form-boolean--type-checkbox"/>'; +})(Drupal); diff --git a/core/themes/olivero/js/checkbox.js b/core/themes/olivero/js/checkbox.js new file mode 100644 index 0000000000000000000000000000000000000000..90d825cbee41ad588186ded39ff3f81dc114feeb --- /dev/null +++ b/core/themes/olivero/js/checkbox.js @@ -0,0 +1,12 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function (Drupal) { + Drupal.theme.checkbox = function () { + return '<input type="checkbox" class="form-checkbox form-boolean form-boolean--type-checkbox"/>'; + }; +})(Drupal); \ No newline at end of file diff --git a/core/themes/olivero/js/comments.es6.js b/core/themes/olivero/js/comments.es6.js new file mode 100644 index 0000000000000000000000000000000000000000..46ce7f49ead829e9efa3114452ccb4995a7bcb0f --- /dev/null +++ b/core/themes/olivero/js/comments.es6.js @@ -0,0 +1,39 @@ +/** + * @file + * Comments. + */ + +(Drupal => { + const indentedComments = document.querySelectorAll('.comments .indented'); + + document.querySelectorAll('.comment').forEach(comment => { + if ( + comment.nextElementSibling != null && + comment.nextElementSibling.matches('.indented') + ) { + comment.classList.add('has-children'); + } + }); + + indentedComments.forEach(commentGroup => { + const showHideWrapper = document.createElement('div'); + showHideWrapper.setAttribute('class', 'show-hide-wrapper'); + + const toggleCommentsBtn = document.createElement('button'); + toggleCommentsBtn.setAttribute('type', 'button'); + toggleCommentsBtn.setAttribute('aria-expanded', 'true'); + toggleCommentsBtn.setAttribute('class', 'show-hide-btn'); + toggleCommentsBtn.innerText = Drupal.t('Replies'); + + commentGroup.parentNode.insertBefore(showHideWrapper, commentGroup); + showHideWrapper.appendChild(toggleCommentsBtn); + + toggleCommentsBtn.addEventListener('click', e => { + commentGroup.classList.toggle('hidden'); + e.currentTarget.setAttribute( + 'aria-expanded', + commentGroup.classList.contains('hidden') ? 'false' : 'true', + ); + }); + }); +})(Drupal); diff --git a/core/themes/olivero/js/comments.js b/core/themes/olivero/js/comments.js new file mode 100644 index 0000000000000000000000000000000000000000..8376ad292937bfc198ab49116c0f1540f3654550 --- /dev/null +++ b/core/themes/olivero/js/comments.js @@ -0,0 +1,30 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function (Drupal) { + var indentedComments = document.querySelectorAll('.comments .indented'); + document.querySelectorAll('.comment').forEach(function (comment) { + if (comment.nextElementSibling != null && comment.nextElementSibling.matches('.indented')) { + comment.classList.add('has-children'); + } + }); + indentedComments.forEach(function (commentGroup) { + var showHideWrapper = document.createElement('div'); + showHideWrapper.setAttribute('class', 'show-hide-wrapper'); + var toggleCommentsBtn = document.createElement('button'); + toggleCommentsBtn.setAttribute('type', 'button'); + toggleCommentsBtn.setAttribute('aria-expanded', 'true'); + toggleCommentsBtn.setAttribute('class', 'show-hide-btn'); + toggleCommentsBtn.innerText = Drupal.t('Replies'); + commentGroup.parentNode.insertBefore(showHideWrapper, commentGroup); + showHideWrapper.appendChild(toggleCommentsBtn); + toggleCommentsBtn.addEventListener('click', function (e) { + commentGroup.classList.toggle('hidden'); + e.currentTarget.setAttribute('aria-expanded', commentGroup.classList.contains('hidden') ? 'false' : 'true'); + }); + }); +})(Drupal); \ No newline at end of file diff --git a/core/themes/olivero/js/messages.es6.js b/core/themes/olivero/js/messages.es6.js new file mode 100644 index 0000000000000000000000000000000000000000..c6dde116e919c9f011323884f07f4375cd1a84ec --- /dev/null +++ b/core/themes/olivero/js/messages.es6.js @@ -0,0 +1,126 @@ +/** + * @file + * Messages. + */ + +(Drupal => { + /** + * Adds close button to the message. + * + * @param {object} message + * The message object. + */ + const closeMessage = message => { + const messageContainer = message.querySelector('.messages__container'); + + const closeBtnWrapper = document.createElement('div'); + closeBtnWrapper.setAttribute('class', 'messages__button'); + + const closeBtn = document.createElement('button'); + closeBtn.setAttribute('type', 'button'); + closeBtn.setAttribute('class', 'messages__close'); + + const closeBtnText = document.createElement('span'); + closeBtnText.setAttribute('class', 'visually-hidden'); + closeBtnText.innerText = Drupal.t('Close message'); + + messageContainer.appendChild(closeBtnWrapper); + closeBtnWrapper.appendChild(closeBtn); + closeBtn.appendChild(closeBtnText); + + message.classList.add('messages-processed'); + + closeBtn.addEventListener('click', () => { + message.classList.add('hidden'); + }); + }; + + /** + * Overrides message theme function. + * + * @param {object} message + * The message object. + * @param {string} message.text + * The message text. + * @param {object} options + * The message context. + * @param {string} options.type + * The message type. + * @param {string} options.id + * ID of the message, for reference. + * + * @return {HTMLElement} + * A DOM Node. + */ + Drupal.theme.message = ({ text }, { type, id }) => { + const messagesTypes = Drupal.Message.getMessageTypeLabels(); + const messageWrapper = document.createElement('div'); + + messageWrapper.setAttribute( + 'class', + `messages-list__item messages messages--${type} messages-processed`, + ); + messageWrapper.setAttribute( + 'role', + type === 'error' || type === 'warning' ? 'alert' : 'status', + ); + messageWrapper.setAttribute('aria-labelledby', `${id}-title`); + messageWrapper.setAttribute('data-drupal-message-id', id); + messageWrapper.setAttribute('data-drupal-message-type', type); + let svg = ''; + + if (['error', 'warning', 'status', 'info'].indexOf(type) > -1) { + svg = + '<div class="messages__icon"><svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">'; + } + + if (type === 'error') { + svg += + '<path d="M0.117801 16.7381C0.202622 17.9153 0.292289 18.562 0.481317 19.3904C0.922384 21.3161 1.6785 23.0626 2.76178 24.6589C4.58178 27.3355 7.18213 29.3823 10.1993 30.5062C12.458 31.3467 14.942 31.6495 17.3461 31.3782C22.5831 30.7872 27.1246 27.6164 29.4875 22.9027C30.3769 21.132 30.8616 19.3929 31.0797 17.1983C31.1209 16.7768 31.1209 15.1733 31.0797 14.7518C30.8786 12.7195 30.4714 11.1693 29.7032 9.49549C28.3848 6.62269 26.1722 4.18589 23.4289 2.58235C19.4399 0.249712 14.5373 -0.171762 10.1993 1.44389C5.82985 3.07165 2.38372 6.62753 0.915114 11.0215C0.512822 12.223 0.289865 13.2863 0.161423 14.604C0.127495 14.9674 0.0959901 16.4425 0.117801 16.7381ZM4.02924 14.9577C4.2837 12.2108 5.46391 9.69412 7.40024 7.76115C9.15966 6.00743 11.3529 4.89319 13.8224 4.49352C14.4234 4.39905 14.8717 4.36514 15.6012 4.36271C16.6941 4.36271 17.4793 4.45718 18.5093 4.71636C19.2969 4.91257 20.0143 5.17902 20.7873 5.55931C21.2526 5.78943 21.9409 6.18183 21.9554 6.22786C21.9651 6.25692 5.90498 22.3093 5.86621 22.3093C5.82501 22.3093 5.46391 21.6916 5.21915 21.2071C4.51877 19.8071 4.10921 18.2956 4.005 16.7138C3.98077 16.336 3.99288 15.3453 4.02924 14.9577ZM25.3725 9.6384C25.4428 9.7038 25.816 10.3602 26.0341 10.8035C26.6618 12.0776 27.0301 13.359 27.1876 14.8366C27.2385 15.2968 27.2458 16.5225 27.2022 16.9561C27.0859 18.0776 26.8847 18.9786 26.526 19.9669C26.2377 20.7663 25.7748 21.6843 25.2998 22.394C23.8748 24.5232 21.7882 26.1364 19.3987 26.9576C18.1046 27.4009 16.985 27.585 15.5891 27.585C14.8232 27.585 14.4646 27.5607 13.786 27.4541C12.2568 27.2192 10.6574 26.6209 9.40685 25.8191L9.23237 25.7077L17.2879 17.6609C23.3562 11.598 25.3507 9.61903 25.3725 9.6384Z"/>'; + } else if (type === 'warning') { + svg += + '<path d="M16 0C7.16667 0 0 7.16667 0 16C0 24.8333 7.16667 32 16 32C24.8333 32 32 24.8333 32 16C32 7.16667 24.8333 0 16 0ZM18.6667 25.9792C18.6667 26.3542 18.375 26.6667 18.0208 26.6667H14.0208C13.6458 26.6667 13.3333 26.3542 13.3333 25.9792V22.0208C13.3333 21.6458 13.6458 21.3333 14.0208 21.3333H18.0208C18.375 21.3333 18.6667 21.6458 18.6667 22.0208V25.9792ZM18.625 18.8125C18.6042 19.1042 18.2917 19.3333 17.9167 19.3333H14.0625C13.6667 19.3333 13.3542 19.1042 13.3542 18.8125L13 5.875C13 5.72917 13.0625 5.58333 13.2083 5.5C13.3333 5.39583 13.5208 5.33333 13.7083 5.33333H18.2917C18.4792 5.33333 18.6667 5.39583 18.7917 5.5C18.9375 5.58333 19 5.72917 19 5.875L18.625 18.8125Z"/>'; + } else if (type === 'status') { + svg += + '<path d="M26.75 12.625C26.75 12.9792 26.625 13.3125 26.375 13.5625L15.0625 24.875C14.8125 25.125 14.4583 25.2708 14.1042 25.2708C13.7708 25.2708 13.4167 25.125 13.1667 24.875L5.625 17.3333C5.375 17.0833 5.25 16.75 5.25 16.3958C5.25 16.0417 5.375 15.6875 5.625 15.4375L7.52083 13.5625C7.77083 13.3125 8.10417 13.1667 8.45833 13.1667C8.8125 13.1667 9.14583 13.3125 9.39583 13.5625L14.1042 18.2708L22.6042 9.79167C22.8542 9.54167 23.1875 9.39583 23.5417 9.39583C23.8958 9.39583 24.2292 9.54167 24.4792 9.79167L26.375 11.6667C26.625 11.9167 26.75 12.2708 26.75 12.625ZM32 16C32 7.16667 24.8333 0 16 0C7.16667 0 0 7.16667 0 16C0 24.8333 7.16667 32 16 32C24.8333 32 32 24.8333 32 16Z"/>'; + } else if (type === 'info') { + svg += + '<path d="M32,16c0,8.8-7.2,16-16,16S0,24.8,0,16C0,7.2,7.2,0,16,0S32,7.2,32,16z M16.4,5.3c-3.5,0-5.8,1.5-7.5,4.1c-0.2,0.3-0.2,0.8,0.2,1l2.2,1.7c0.3,0.3,0.8,0.2,1.1-0.1c1.2-1.5,1.9-2.3,3.7-2.3c1.3,0,2.9,0.8,2.9,2.1c0,1-0.8,1.5-2.1,2.2c-1.5,0.9-3.5,1.9-3.5,4.6v0.3c0,0.4,0.3,0.8,0.8,0.8h3.6c0.4,0,0.8-0.3,0.8-0.8v-0.1c0-1.8,5.4-1.9,5.4-6.9C23.9,8.1,20.1,5.3,16.4,5.3z M16,21.3c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C19,22.6,17.6,21.3,16,21.3z"/>'; + } + + if (['error', 'warning', 'status', 'info'].indexOf(type) > -1) { + svg += '</svg></div>'; + } + + messageWrapper.innerHTML = ` + <div class="messages__container"> + <div class="messages__header${!svg ? ' no-icon' : ''}"> + <h2 class="visually-hidden">${messagesTypes[type]}</h2> + ${svg} + </div> + <div class="messages__content"> + ${text} + </div> + </div> + `; + + closeMessage(messageWrapper); + + return messageWrapper; + }; + + /** + * Getting messages from context. + */ + Drupal.behaviors.messages = { + attach(context) { + const messages = context.querySelectorAll( + '.messages:not(.messages-processed)', + ); + + messages.forEach(message => { + closeMessage(message); + }); + }, + }; +})(Drupal); diff --git a/core/themes/olivero/js/messages.js b/core/themes/olivero/js/messages.js new file mode 100644 index 0000000000000000000000000000000000000000..aadb74b614952c365f79dfd5fd3dd5700f57098a --- /dev/null +++ b/core/themes/olivero/js/messages.js @@ -0,0 +1,72 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function (Drupal) { + var closeMessage = function closeMessage(message) { + var messageContainer = message.querySelector('.messages__container'); + var closeBtnWrapper = document.createElement('div'); + closeBtnWrapper.setAttribute('class', 'messages__button'); + var closeBtn = document.createElement('button'); + closeBtn.setAttribute('type', 'button'); + closeBtn.setAttribute('class', 'messages__close'); + var closeBtnText = document.createElement('span'); + closeBtnText.setAttribute('class', 'visually-hidden'); + closeBtnText.innerText = Drupal.t('Close message'); + messageContainer.appendChild(closeBtnWrapper); + closeBtnWrapper.appendChild(closeBtn); + closeBtn.appendChild(closeBtnText); + message.classList.add('messages-processed'); + closeBtn.addEventListener('click', function () { + message.classList.add('hidden'); + }); + }; + + Drupal.theme.message = function (_ref, _ref2) { + var text = _ref.text; + var type = _ref2.type, + id = _ref2.id; + var messagesTypes = Drupal.Message.getMessageTypeLabels(); + var messageWrapper = document.createElement('div'); + messageWrapper.setAttribute('class', "messages-list__item messages messages--".concat(type, " messages-processed")); + messageWrapper.setAttribute('role', type === 'error' || type === 'warning' ? 'alert' : 'status'); + messageWrapper.setAttribute('aria-labelledby', "".concat(id, "-title")); + messageWrapper.setAttribute('data-drupal-message-id', id); + messageWrapper.setAttribute('data-drupal-message-type', type); + var svg = ''; + + if (['error', 'warning', 'status', 'info'].indexOf(type) > -1) { + svg = '<div class="messages__icon"><svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">'; + } + + if (type === 'error') { + svg += '<path d="M0.117801 16.7381C0.202622 17.9153 0.292289 18.562 0.481317 19.3904C0.922384 21.3161 1.6785 23.0626 2.76178 24.6589C4.58178 27.3355 7.18213 29.3823 10.1993 30.5062C12.458 31.3467 14.942 31.6495 17.3461 31.3782C22.5831 30.7872 27.1246 27.6164 29.4875 22.9027C30.3769 21.132 30.8616 19.3929 31.0797 17.1983C31.1209 16.7768 31.1209 15.1733 31.0797 14.7518C30.8786 12.7195 30.4714 11.1693 29.7032 9.49549C28.3848 6.62269 26.1722 4.18589 23.4289 2.58235C19.4399 0.249712 14.5373 -0.171762 10.1993 1.44389C5.82985 3.07165 2.38372 6.62753 0.915114 11.0215C0.512822 12.223 0.289865 13.2863 0.161423 14.604C0.127495 14.9674 0.0959901 16.4425 0.117801 16.7381ZM4.02924 14.9577C4.2837 12.2108 5.46391 9.69412 7.40024 7.76115C9.15966 6.00743 11.3529 4.89319 13.8224 4.49352C14.4234 4.39905 14.8717 4.36514 15.6012 4.36271C16.6941 4.36271 17.4793 4.45718 18.5093 4.71636C19.2969 4.91257 20.0143 5.17902 20.7873 5.55931C21.2526 5.78943 21.9409 6.18183 21.9554 6.22786C21.9651 6.25692 5.90498 22.3093 5.86621 22.3093C5.82501 22.3093 5.46391 21.6916 5.21915 21.2071C4.51877 19.8071 4.10921 18.2956 4.005 16.7138C3.98077 16.336 3.99288 15.3453 4.02924 14.9577ZM25.3725 9.6384C25.4428 9.7038 25.816 10.3602 26.0341 10.8035C26.6618 12.0776 27.0301 13.359 27.1876 14.8366C27.2385 15.2968 27.2458 16.5225 27.2022 16.9561C27.0859 18.0776 26.8847 18.9786 26.526 19.9669C26.2377 20.7663 25.7748 21.6843 25.2998 22.394C23.8748 24.5232 21.7882 26.1364 19.3987 26.9576C18.1046 27.4009 16.985 27.585 15.5891 27.585C14.8232 27.585 14.4646 27.5607 13.786 27.4541C12.2568 27.2192 10.6574 26.6209 9.40685 25.8191L9.23237 25.7077L17.2879 17.6609C23.3562 11.598 25.3507 9.61903 25.3725 9.6384Z"/>'; + } else if (type === 'warning') { + svg += '<path d="M16 0C7.16667 0 0 7.16667 0 16C0 24.8333 7.16667 32 16 32C24.8333 32 32 24.8333 32 16C32 7.16667 24.8333 0 16 0ZM18.6667 25.9792C18.6667 26.3542 18.375 26.6667 18.0208 26.6667H14.0208C13.6458 26.6667 13.3333 26.3542 13.3333 25.9792V22.0208C13.3333 21.6458 13.6458 21.3333 14.0208 21.3333H18.0208C18.375 21.3333 18.6667 21.6458 18.6667 22.0208V25.9792ZM18.625 18.8125C18.6042 19.1042 18.2917 19.3333 17.9167 19.3333H14.0625C13.6667 19.3333 13.3542 19.1042 13.3542 18.8125L13 5.875C13 5.72917 13.0625 5.58333 13.2083 5.5C13.3333 5.39583 13.5208 5.33333 13.7083 5.33333H18.2917C18.4792 5.33333 18.6667 5.39583 18.7917 5.5C18.9375 5.58333 19 5.72917 19 5.875L18.625 18.8125Z"/>'; + } else if (type === 'status') { + svg += '<path d="M26.75 12.625C26.75 12.9792 26.625 13.3125 26.375 13.5625L15.0625 24.875C14.8125 25.125 14.4583 25.2708 14.1042 25.2708C13.7708 25.2708 13.4167 25.125 13.1667 24.875L5.625 17.3333C5.375 17.0833 5.25 16.75 5.25 16.3958C5.25 16.0417 5.375 15.6875 5.625 15.4375L7.52083 13.5625C7.77083 13.3125 8.10417 13.1667 8.45833 13.1667C8.8125 13.1667 9.14583 13.3125 9.39583 13.5625L14.1042 18.2708L22.6042 9.79167C22.8542 9.54167 23.1875 9.39583 23.5417 9.39583C23.8958 9.39583 24.2292 9.54167 24.4792 9.79167L26.375 11.6667C26.625 11.9167 26.75 12.2708 26.75 12.625ZM32 16C32 7.16667 24.8333 0 16 0C7.16667 0 0 7.16667 0 16C0 24.8333 7.16667 32 16 32C24.8333 32 32 24.8333 32 16Z"/>'; + } else if (type === 'info') { + svg += '<path d="M32,16c0,8.8-7.2,16-16,16S0,24.8,0,16C0,7.2,7.2,0,16,0S32,7.2,32,16z M16.4,5.3c-3.5,0-5.8,1.5-7.5,4.1c-0.2,0.3-0.2,0.8,0.2,1l2.2,1.7c0.3,0.3,0.8,0.2,1.1-0.1c1.2-1.5,1.9-2.3,3.7-2.3c1.3,0,2.9,0.8,2.9,2.1c0,1-0.8,1.5-2.1,2.2c-1.5,0.9-3.5,1.9-3.5,4.6v0.3c0,0.4,0.3,0.8,0.8,0.8h3.6c0.4,0,0.8-0.3,0.8-0.8v-0.1c0-1.8,5.4-1.9,5.4-6.9C23.9,8.1,20.1,5.3,16.4,5.3z M16,21.3c-1.6,0-3,1.3-3,3c0,1.6,1.3,3,3,3s3-1.3,3-3C19,22.6,17.6,21.3,16,21.3z"/>'; + } + + if (['error', 'warning', 'status', 'info'].indexOf(type) > -1) { + svg += '</svg></div>'; + } + + messageWrapper.innerHTML = "\n <div class=\"messages__container\">\n <div class=\"messages__header".concat(!svg ? ' no-icon' : '', "\">\n <h2 class=\"visually-hidden\">").concat(messagesTypes[type], "</h2>\n ").concat(svg, "\n </div>\n <div class=\"messages__content\">\n ").concat(text, "\n </div>\n </div>\n "); + closeMessage(messageWrapper); + return messageWrapper; + }; + + Drupal.behaviors.messages = { + attach: function attach(context) { + var messages = context.querySelectorAll('.messages:not(.messages-processed)'); + messages.forEach(function (message) { + closeMessage(message); + }); + } + }; +})(Drupal); \ No newline at end of file diff --git a/core/themes/olivero/js/navigation.es6.js b/core/themes/olivero/js/navigation.es6.js new file mode 100644 index 0000000000000000000000000000000000000000..ecc300bb4bb0b535fce65d042ccb1d9fe25cc957 --- /dev/null +++ b/core/themes/olivero/js/navigation.es6.js @@ -0,0 +1,134 @@ +(Drupal => { + /** + * Checks if navWrapper contains "is-active" class. + * @param {object} navWrapper + * Header navigation. + * @return {boolean} + * True if navWrapper contains "is-active" class, false if not. + */ + function isNavOpen(navWrapper) { + return navWrapper.classList.contains('is-active'); + } + + /** + * Opens or closes the header navigation. + * @param {object} props + * Navigation props. + * @param {boolean} state + * State which to transition the header navigation menu into. + */ + function toggleNav(props, state) { + const value = !!state; + props.navButton.setAttribute('aria-expanded', value); + + if (value) { + props.body.classList.add('js-overlay-active'); + props.body.classList.add('js-fixed'); + props.navWrapper.classList.add('is-active'); + } else { + props.body.classList.remove('js-overlay-active'); + props.body.classList.remove('js-fixed'); + props.navWrapper.classList.remove('is-active'); + } + } + + /** + * Init function for header navigation. + * @param {object} props + * Navigation props. + */ + function init(props) { + props.navButton.setAttribute('aria-controls', props.navWrapperId); + props.navButton.setAttribute('aria-expanded', 'false'); + + props.navButton.addEventListener('click', () => { + toggleNav(props, !isNavOpen(props.navWrapper)); + }); + + // Closes any open sub navigation first, then close header navigation. + document.addEventListener('keyup', e => { + if (e.key === 'Escape') { + if (props.olivero.areAnySubNavsOpen()) { + props.olivero.closeAllSubNav(); + } else { + toggleNav(props, false); + } + } + }); + + props.overlay.addEventListener('click', () => { + toggleNav(props, false); + }); + + props.overlay.addEventListener('touchstart', () => { + toggleNav(props, false); + }); + + // Focus trap. + props.navWrapper.addEventListener('keydown', e => { + if (e.key === 'Tab') { + if (e.shiftKey) { + if ( + document.activeElement === props.firstFocusableEl && + !props.olivero.isDesktopNav() + ) { + props.navButton.focus(); + e.preventDefault(); + } + } else if ( + document.activeElement === props.lastFocusableEl && + !props.olivero.isDesktopNav() + ) { + props.navButton.focus(); + e.preventDefault(); + } + } + }); + + // Remove overlays when browser is resized and desktop nav appears. + // @todo Use core/drupal.debounce library to throttle when we move into theming. + window.addEventListener('resize', () => { + if (props.olivero.isDesktopNav()) { + toggleNav(props, false); + props.body.classList.remove('js-overlay-active', 'js-fixed'); + } + }); + } + + /** + * Initialize the navigation JS. + */ + Drupal.behaviors.oliveroNavigation = { + attach(context, settings) { + const navWrapperId = 'header-nav'; + const navWrapper = context.querySelector( + `#${navWrapperId}:not(.${navWrapperId}-processed)`, + ); + if (navWrapper) { + navWrapper.classList.add(`${navWrapperId}-processed`); + const olivero = Drupal.olivero; + const navButton = context.querySelector('.mobile-nav-button'); + const body = context.querySelector('body'); + const overlay = context.querySelector('.overlay'); + const focusableNavElements = navWrapper.querySelectorAll( + 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])', + ); + const firstFocusableEl = focusableNavElements[0]; + const lastFocusableEl = + focusableNavElements[focusableNavElements.length - 1]; + + init({ + settings, + olivero, + navWrapperId, + navWrapper, + navButton, + body, + overlay, + firstFocusableEl, + lastFocusableEl, + }); + } + }, + }; +})(Drupal); diff --git a/core/themes/olivero/js/navigation.js b/core/themes/olivero/js/navigation.js new file mode 100644 index 0000000000000000000000000000000000000000..8a26829260f29e13c5e913af3acab4746d71127d --- /dev/null +++ b/core/themes/olivero/js/navigation.js @@ -0,0 +1,98 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function (Drupal) { + function isNavOpen(navWrapper) { + return navWrapper.classList.contains('is-active'); + } + + function toggleNav(props, state) { + var value = !!state; + props.navButton.setAttribute('aria-expanded', value); + + if (value) { + props.body.classList.add('js-overlay-active'); + props.body.classList.add('js-fixed'); + props.navWrapper.classList.add('is-active'); + } else { + props.body.classList.remove('js-overlay-active'); + props.body.classList.remove('js-fixed'); + props.navWrapper.classList.remove('is-active'); + } + } + + function init(props) { + props.navButton.setAttribute('aria-controls', props.navWrapperId); + props.navButton.setAttribute('aria-expanded', 'false'); + props.navButton.addEventListener('click', function () { + toggleNav(props, !isNavOpen(props.navWrapper)); + }); + document.addEventListener('keyup', function (e) { + if (e.key === 'Escape') { + if (props.olivero.areAnySubNavsOpen()) { + props.olivero.closeAllSubNav(); + } else { + toggleNav(props, false); + } + } + }); + props.overlay.addEventListener('click', function () { + toggleNav(props, false); + }); + props.overlay.addEventListener('touchstart', function () { + toggleNav(props, false); + }); + props.navWrapper.addEventListener('keydown', function (e) { + if (e.key === 'Tab') { + if (e.shiftKey) { + if (document.activeElement === props.firstFocusableEl && !props.olivero.isDesktopNav()) { + props.navButton.focus(); + e.preventDefault(); + } + } else if (document.activeElement === props.lastFocusableEl && !props.olivero.isDesktopNav()) { + props.navButton.focus(); + e.preventDefault(); + } + } + }); + window.addEventListener('resize', function () { + if (props.olivero.isDesktopNav()) { + toggleNav(props, false); + props.body.classList.remove('js-overlay-active', 'js-fixed'); + } + }); + } + + Drupal.behaviors.oliveroNavigation = { + attach: function attach(context, settings) { + var navWrapperId = 'header-nav'; + var navWrapper = context.querySelector("#".concat(navWrapperId, ":not(.").concat(navWrapperId, "-processed)")); + + if (navWrapper) { + navWrapper.classList.add("".concat(navWrapperId, "-processed")); + var olivero = Drupal.olivero; + var navButton = context.querySelector('.mobile-nav-button'); + var body = context.querySelector('body'); + var overlay = context.querySelector('.overlay'); + var focusableNavElements = navWrapper.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'); + var firstFocusableEl = focusableNavElements[0]; + var lastFocusableEl = focusableNavElements[focusableNavElements.length - 1]; + init({ + settings: settings, + olivero: olivero, + navWrapperId: navWrapperId, + navWrapper: navWrapper, + navButton: navButton, + body: body, + overlay: overlay, + firstFocusableEl: firstFocusableEl, + lastFocusableEl: lastFocusableEl + }); + } + } + }; +})(Drupal); \ No newline at end of file diff --git a/core/themes/olivero/js/polyfills.es6.js b/core/themes/olivero/js/polyfills.es6.js new file mode 100644 index 0000000000000000000000000000000000000000..4e828889138996a94ed3cd126a60c7713ceed6f3 --- /dev/null +++ b/core/themes/olivero/js/polyfills.es6.js @@ -0,0 +1,29 @@ +/* eslint-disable */ +/** + * From https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach#Polyfill + * Licensed public domain (CC0). + * @see https://creativecommons.org/publicdomain/zero/1.0/ + * @see https://developer.mozilla.org/en-US/docs/MDN/About + * + * @todo Remove when https://www.drupal.org/node/3143465 is fixed. + */ +if (window.NodeList && !NodeList.prototype.forEach) { + NodeList.prototype.forEach = function (callback, thisArg) { + thisArg = thisArg || window; + for (var i = 0; i < this.length; i++) { + callback.call(thisArg, this[i], i, this); + } + }; +} + +/** + * From https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill + * Licensed public domain (CC0). + * @see https://creativecommons.org/publicdomain/zero/1.0/ + * @see https://developer.mozilla.org/en-US/docs/MDN/About + */ +if (!Element.prototype.matches) { + Element.prototype.matches = + Element.prototype.msMatchesSelector || + Element.prototype.webkitMatchesSelector; +} diff --git a/core/themes/olivero/js/polyfills.js b/core/themes/olivero/js/polyfills.js new file mode 100644 index 0000000000000000000000000000000000000000..7b9214c3e9c7fc54d8a0fe2c4b80b99f01175130 --- /dev/null +++ b/core/themes/olivero/js/polyfills.js @@ -0,0 +1,20 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +if (window.NodeList && !NodeList.prototype.forEach) { + NodeList.prototype.forEach = function (callback, thisArg) { + thisArg = thisArg || window; + + for (var i = 0; i < this.length; i++) { + callback.call(thisArg, this[i], i, this); + } + }; +} + +if (!Element.prototype.matches) { + Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; +} \ No newline at end of file diff --git a/core/themes/olivero/js/scripts.es6.js b/core/themes/olivero/js/scripts.es6.js new file mode 100644 index 0000000000000000000000000000000000000000..698ef79c7fa5bb66a2e82237ff36bde35f60b846 --- /dev/null +++ b/core/themes/olivero/js/scripts.es6.js @@ -0,0 +1,131 @@ +/* eslint-disable no-inner-declarations */ +(Drupal => { + /** + * Olivero helper functions. + * + * @namespace + */ + Drupal.olivero = {}; + + function isDesktopNav() { + // @todo, I'm not sure we even need the .mobile-buttons container anymore. + const navButtons = document.querySelector('.mobile-buttons'); + return ( + window.getComputedStyle(navButtons).getPropertyValue('display') === 'none' + ); + } + + Drupal.olivero.isDesktopNav = isDesktopNav; + + const wideNavButton = document.querySelector('.nav-primary__button'); + const siteHeaderFixable = document.querySelector('.site-header__fixable'); + + function wideNavIsOpen() { + return wideNavButton.getAttribute('aria-expanded') === 'true'; + } + + function showWideNav() { + if (isDesktopNav()) { + wideNavButton.setAttribute('aria-expanded', 'true'); + siteHeaderFixable.classList.add('is-expanded'); + } + } + + // Resets the wide nav button to be closed (its default state). + function hideWideNav() { + if (isDesktopNav()) { + wideNavButton.setAttribute('aria-expanded', 'false'); + siteHeaderFixable.classList.remove('is-expanded'); + } + } + + // Only enable scroll effects if the browser supports Intersection Observer. + // @see https://github.com/w3c/IntersectionObserver/blob/master/polyfill/intersection-observer.js#L19-L21 + if ( + 'IntersectionObserver' in window && + 'IntersectionObserverEntry' in window && + 'intersectionRatio' in window.IntersectionObserverEntry.prototype + ) { + const fixableElements = document.querySelectorAll('.fixable'); + + function toggleDesktopNavVisibility(entries) { + if (!isDesktopNav()) return; + + entries.forEach(entry => { + // FF doesn't seem to support entry.isIntersecting properly, + // so we check the intersectionRatio. + if (entry.intersectionRatio < 1) { + fixableElements.forEach(el => el.classList.add('js-fixed')); + } else { + fixableElements.forEach(el => el.classList.remove('js-fixed')); + } + }); + } + + function getRootMargin() { + let rootMarginTop = 72; + const { body } = document; + + if (body.classList.contains('toolbar-fixed')) { + rootMarginTop -= 39; + } + + if ( + body.classList.contains('toolbar-horizontal') && + body.classList.contains('toolbar-tray-open') + ) { + rootMarginTop -= 40; + } + + return `${rootMarginTop}px 0px 0px 0px`; + } + + function monitorNavPosition() { + const primaryNav = document.querySelector('.site-header'); + const options = { + rootMargin: getRootMargin(), + threshold: [0.999, 1], + }; + + const observer = new IntersectionObserver( + toggleDesktopNavVisibility, + options, + ); + observer.observe(primaryNav); + } + + wideNavButton.addEventListener('click', () => { + if (!wideNavIsOpen()) { + showWideNav(); + } else { + hideWideNav(); + } + }); + + siteHeaderFixable + .querySelector('.site-header__inner') + .addEventListener('focusin', showWideNav); + + // If skip link is clicked, ensure that the wide navigation closes so the header will not be covered up. + document.querySelector('.skip-link').addEventListener('click', hideWideNav); + + monitorNavPosition(); + } + + document.addEventListener('keyup', e => { + if (e.keyCode === 27) { + // Close the search form. + if ( + 'toggleSearchVisibility' in Drupal.olivero && + 'searchIsVisible' in Drupal.olivero && + Drupal.olivero.searchIsVisible() + ) { + Drupal.olivero.toggleSearchVisibility(false); + } + // Close the wide nav. + else { + hideWideNav(); + } + } + }); +})(Drupal); diff --git a/core/themes/olivero/js/scripts.js b/core/themes/olivero/js/scripts.js new file mode 100644 index 0000000000000000000000000000000000000000..0c2237448b2c5deba93e720be3769e51e64bfef4 --- /dev/null +++ b/core/themes/olivero/js/scripts.js @@ -0,0 +1,103 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function (Drupal) { + Drupal.olivero = {}; + + function isDesktopNav() { + var navButtons = document.querySelector('.mobile-buttons'); + return window.getComputedStyle(navButtons).getPropertyValue('display') === 'none'; + } + + Drupal.olivero.isDesktopNav = isDesktopNav; + var wideNavButton = document.querySelector('.nav-primary__button'); + var siteHeaderFixable = document.querySelector('.site-header__fixable'); + + function wideNavIsOpen() { + return wideNavButton.getAttribute('aria-expanded') === 'true'; + } + + function showWideNav() { + if (isDesktopNav()) { + wideNavButton.setAttribute('aria-expanded', 'true'); + siteHeaderFixable.classList.add('is-expanded'); + } + } + + function hideWideNav() { + if (isDesktopNav()) { + wideNavButton.setAttribute('aria-expanded', 'false'); + siteHeaderFixable.classList.remove('is-expanded'); + } + } + + if ('IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype) { + var fixableElements = document.querySelectorAll('.fixable'); + + function toggleDesktopNavVisibility(entries) { + if (!isDesktopNav()) return; + entries.forEach(function (entry) { + if (entry.intersectionRatio < 1) { + fixableElements.forEach(function (el) { + return el.classList.add('js-fixed'); + }); + } else { + fixableElements.forEach(function (el) { + return el.classList.remove('js-fixed'); + }); + } + }); + } + + function getRootMargin() { + var rootMarginTop = 72; + var _document = document, + body = _document.body; + + if (body.classList.contains('toolbar-fixed')) { + rootMarginTop -= 39; + } + + if (body.classList.contains('toolbar-horizontal') && body.classList.contains('toolbar-tray-open')) { + rootMarginTop -= 40; + } + + return "".concat(rootMarginTop, "px 0px 0px 0px"); + } + + function monitorNavPosition() { + var primaryNav = document.querySelector('.site-header'); + var options = { + rootMargin: getRootMargin(), + threshold: [0.999, 1] + }; + var observer = new IntersectionObserver(toggleDesktopNavVisibility, options); + observer.observe(primaryNav); + } + + wideNavButton.addEventListener('click', function () { + if (!wideNavIsOpen()) { + showWideNav(); + } else { + hideWideNav(); + } + }); + siteHeaderFixable.querySelector('.site-header__inner').addEventListener('focusin', showWideNav); + document.querySelector('.skip-link').addEventListener('click', hideWideNav); + monitorNavPosition(); + } + + document.addEventListener('keyup', function (e) { + if (e.keyCode === 27) { + if ('toggleSearchVisibility' in Drupal.olivero && 'searchIsVisible' in Drupal.olivero && Drupal.olivero.searchIsVisible()) { + Drupal.olivero.toggleSearchVisibility(false); + } else { + hideWideNav(); + } + } + }); +})(Drupal); \ No newline at end of file diff --git a/core/themes/olivero/js/search.es6.js b/core/themes/olivero/js/search.es6.js new file mode 100644 index 0000000000000000000000000000000000000000..7176a0c1610c4730730bbae2fa9adfda966c4908 --- /dev/null +++ b/core/themes/olivero/js/search.es6.js @@ -0,0 +1,47 @@ +(Drupal => { + const searchWideButton = document.querySelector('.header-nav__search-button'); + const searchWideWrapper = document.querySelector('.search-wide__wrapper'); + + function searchIsVisible() { + return searchWideWrapper.classList.contains('is-active'); + } + Drupal.olivero.searchIsVisible = searchIsVisible; + + function handleFocus() { + if (searchIsVisible()) { + searchWideWrapper.querySelector('input[type="search"]').focus(); + } else { + searchWideButton.focus(); + } + } + + function toggleSearchVisibility(visibility) { + searchWideButton.setAttribute('aria-expanded', visibility === true); + searchWideWrapper.addEventListener('transitionend', handleFocus, { + once: true, + }); + + if (visibility === true) { + searchWideWrapper.classList.add('is-active'); + } else { + searchWideWrapper.classList.remove('is-active'); + } + } + + Drupal.olivero.toggleSearchVisibility = toggleSearchVisibility; + + document.addEventListener('click', e => { + if ( + e.target.matches( + '.header-nav__search-button, .header-nav__search-button *', + ) + ) { + toggleSearchVisibility(!searchIsVisible()); + } else if ( + searchIsVisible() && + !e.target.matches('.search-wide__wrapper, .search-wide__wrapper *') + ) { + toggleSearchVisibility(false); + } + }); +})(Drupal); diff --git a/core/themes/olivero/js/search.js b/core/themes/olivero/js/search.js new file mode 100644 index 0000000000000000000000000000000000000000..94bd72d6fd611bea3a7e62ae9219e68b09b06f1d --- /dev/null +++ b/core/themes/olivero/js/search.js @@ -0,0 +1,47 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function (Drupal) { + var searchWideButton = document.querySelector('.header-nav__search-button'); + var searchWideWrapper = document.querySelector('.search-wide__wrapper'); + + function searchIsVisible() { + return searchWideWrapper.classList.contains('is-active'); + } + + Drupal.olivero.searchIsVisible = searchIsVisible; + + function handleFocus() { + if (searchIsVisible()) { + searchWideWrapper.querySelector('input[type="search"]').focus(); + } else { + searchWideButton.focus(); + } + } + + function toggleSearchVisibility(visibility) { + searchWideButton.setAttribute('aria-expanded', visibility === true); + searchWideWrapper.addEventListener('transitionend', handleFocus, { + once: true + }); + + if (visibility === true) { + searchWideWrapper.classList.add('is-active'); + } else { + searchWideWrapper.classList.remove('is-active'); + } + } + + Drupal.olivero.toggleSearchVisibility = toggleSearchVisibility; + document.addEventListener('click', function (e) { + if (e.target.matches('.header-nav__search-button, .header-nav__search-button *')) { + toggleSearchVisibility(!searchIsVisible()); + } else if (searchIsVisible() && !e.target.matches('.search-wide__wrapper, .search-wide__wrapper *')) { + toggleSearchVisibility(false); + } + }); +})(Drupal); \ No newline at end of file diff --git a/core/themes/olivero/js/second-level-navigation.es6.js b/core/themes/olivero/js/second-level-navigation.es6.js new file mode 100644 index 0000000000000000000000000000000000000000..b793cb6ddb20b4a0af1179d7d6a1835754f22551 --- /dev/null +++ b/core/themes/olivero/js/second-level-navigation.es6.js @@ -0,0 +1,103 @@ +(Drupal => { + const { isDesktopNav } = Drupal.olivero; + const secondLevelNavMenus = document.querySelectorAll( + '.primary-nav__menu-item--has-children', + ); + + /** + * Shows and hides the specified menu item's second level submenu. + * + * @param {element} topLevelMenuITem - the <li> element that is the container for the menu and submenus. + * @param {boolean} [toState] - Optional state where we want the submenu to end up. + */ + function toggleSubNav(topLevelMenuITem, toState) { + const button = topLevelMenuITem.querySelector( + '.primary-nav__button-toggle, .primary-nav__menu-link--button', + ); + const state = + toState !== undefined + ? toState + : button.getAttribute('aria-expanded') !== 'true'; + + if (state) { + button.setAttribute('aria-expanded', 'true'); + topLevelMenuITem + .querySelector('.primary-nav__menu--level-2') + .classList.add('is-active'); + } else { + button.setAttribute('aria-expanded', 'false'); + topLevelMenuITem + .querySelector('.primary-nav__menu--level-2') + .classList.remove('is-active'); + } + } + + Drupal.olivero.toggleSubNav = toggleSubNav; + + // Add hover and click event listeners onto each sub navigation parent and its + // button. + secondLevelNavMenus.forEach(el => { + const button = el.querySelector( + '.primary-nav__button-toggle, .primary-nav__menu-link--button', + ); + + button.removeAttribute('aria-hidden'); + button.removeAttribute('tabindex'); + + button.addEventListener('click', e => { + const topLevelMenuITem = e.currentTarget.parentNode; + toggleSubNav(topLevelMenuITem); + }); + + el.addEventListener('mouseover', e => { + if (isDesktopNav()) { + toggleSubNav(e.currentTarget, true); + } + }); + + el.addEventListener('mouseout', e => { + if (isDesktopNav()) { + toggleSubNav(e.currentTarget, false); + } + }); + }); + + /** + * Close all second level sub navigation menus. + */ + function closeAllSubNav() { + secondLevelNavMenus.forEach(el => { + toggleSubNav(el, false); + }); + } + + Drupal.olivero.closeAllSubNav = closeAllSubNav; + + /** + * Checks if any sub navigation items are currently active. + * @return {boolean} If sub nav is currently open. + */ + function areAnySubNavsOpen() { + let subNavsAreOpen = false; + + secondLevelNavMenus.forEach(el => { + const button = el.querySelector('.primary-nav__button-toggle'); + const state = button.getAttribute('aria-expanded') === 'true'; + + if (state) { + subNavsAreOpen = true; + } + }); + + return subNavsAreOpen; + } + + Drupal.olivero.areAnySubNavsOpen = areAnySubNavsOpen; + + // Ensure that desktop submenus close when ESC key is pressed. + document.addEventListener('keyup', e => { + if (e.keyCode === 27 && isDesktopNav()) { + closeAllSubNav(); + } + }); +})(Drupal); diff --git a/core/themes/olivero/js/second-level-navigation.js b/core/themes/olivero/js/second-level-navigation.js new file mode 100644 index 0000000000000000000000000000000000000000..273cf8ba20122df26e447936eaa7a64e1d5643f7 --- /dev/null +++ b/core/themes/olivero/js/second-level-navigation.js @@ -0,0 +1,73 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function (Drupal) { + var isDesktopNav = Drupal.olivero.isDesktopNav; + var secondLevelNavMenus = document.querySelectorAll('.primary-nav__menu-item--has-children'); + + function toggleSubNav(topLevelMenuITem, toState) { + var button = topLevelMenuITem.querySelector('.primary-nav__button-toggle, .primary-nav__menu-link--button'); + var state = toState !== undefined ? toState : button.getAttribute('aria-expanded') !== 'true'; + + if (state) { + button.setAttribute('aria-expanded', 'true'); + topLevelMenuITem.querySelector('.primary-nav__menu--level-2').classList.add('is-active'); + } else { + button.setAttribute('aria-expanded', 'false'); + topLevelMenuITem.querySelector('.primary-nav__menu--level-2').classList.remove('is-active'); + } + } + + Drupal.olivero.toggleSubNav = toggleSubNav; + secondLevelNavMenus.forEach(function (el) { + var button = el.querySelector('.primary-nav__button-toggle, .primary-nav__menu-link--button'); + button.removeAttribute('aria-hidden'); + button.removeAttribute('tabindex'); + button.addEventListener('click', function (e) { + var topLevelMenuITem = e.currentTarget.parentNode; + toggleSubNav(topLevelMenuITem); + }); + el.addEventListener('mouseover', function (e) { + if (isDesktopNav()) { + toggleSubNav(e.currentTarget, true); + } + }); + el.addEventListener('mouseout', function (e) { + if (isDesktopNav()) { + toggleSubNav(e.currentTarget, false); + } + }); + }); + + function closeAllSubNav() { + secondLevelNavMenus.forEach(function (el) { + toggleSubNav(el, false); + }); + } + + Drupal.olivero.closeAllSubNav = closeAllSubNav; + + function areAnySubNavsOpen() { + var subNavsAreOpen = false; + secondLevelNavMenus.forEach(function (el) { + var button = el.querySelector('.primary-nav__button-toggle'); + var state = button.getAttribute('aria-expanded') === 'true'; + + if (state) { + subNavsAreOpen = true; + } + }); + return subNavsAreOpen; + } + + Drupal.olivero.areAnySubNavsOpen = areAnySubNavsOpen; + document.addEventListener('keyup', function (e) { + if (e.keyCode === 27 && isDesktopNav()) { + closeAllSubNav(); + } + }); +})(Drupal); \ No newline at end of file diff --git a/core/themes/olivero/js/tabs.es6.js b/core/themes/olivero/js/tabs.es6.js new file mode 100644 index 0000000000000000000000000000000000000000..adb9de9513dd887c178353146425ebe720121645 --- /dev/null +++ b/core/themes/olivero/js/tabs.es6.js @@ -0,0 +1,40 @@ +(Drupal => { + function init(el) { + const tabs = el.querySelector('.tabs'); + const expandedClass = 'is-expanded'; + const activeTab = tabs.querySelector('.is-active'); + + function isTabsMobileLayout() { + return tabs.querySelector('.tabs__trigger').clientHeight > 0; + } + + function handleTriggerClick(e) { + if (!tabs.classList.contains(expandedClass)) { + e.currentTarget.setAttribute('aria-expanded', 'true'); + tabs.classList.add(expandedClass); + } else { + e.currentTarget.setAttribute('aria-expanded', 'false'); + tabs.classList.remove(expandedClass); + } + } + + if (isTabsMobileLayout() && !activeTab.matches('.tabs__tab:first-child')) { + const newActiveTab = activeTab.cloneNode(true); + const firstTab = tabs.querySelector('.tabs__tab:first-child'); + tabs.insertBefore(newActiveTab, firstTab); + tabs.removeChild(activeTab); + } + + tabs + .querySelector('.tabs__trigger') + .addEventListener('click', handleTriggerClick); + } + + Drupal.behaviors.tabs = { + attach(context) { + context + .querySelectorAll('[data-drupal-nav-tabs]') + .forEach(el => init(el)); + }, + }; +})(Drupal); diff --git a/core/themes/olivero/js/tabs.js b/core/themes/olivero/js/tabs.js new file mode 100644 index 0000000000000000000000000000000000000000..9dda7c72f0db5a98aa518e3eb63e07668bb6d2de --- /dev/null +++ b/core/themes/olivero/js/tabs.js @@ -0,0 +1,45 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ + +(function (Drupal) { + function init(el) { + var tabs = el.querySelector('.tabs'); + var expandedClass = 'is-expanded'; + var activeTab = tabs.querySelector('.is-active'); + + function isTabsMobileLayout() { + return tabs.querySelector('.tabs__trigger').clientHeight > 0; + } + + function handleTriggerClick(e) { + if (!tabs.classList.contains(expandedClass)) { + e.currentTarget.setAttribute('aria-expanded', 'true'); + tabs.classList.add(expandedClass); + } else { + e.currentTarget.setAttribute('aria-expanded', 'false'); + tabs.classList.remove(expandedClass); + } + } + + if (isTabsMobileLayout() && !activeTab.matches('.tabs__tab:first-child')) { + var newActiveTab = activeTab.cloneNode(true); + var firstTab = tabs.querySelector('.tabs__tab:first-child'); + tabs.insertBefore(newActiveTab, firstTab); + tabs.removeChild(activeTab); + } + + tabs.querySelector('.tabs__trigger').addEventListener('click', handleTriggerClick); + } + + Drupal.behaviors.tabs = { + attach: function attach(context) { + context.querySelectorAll('[data-drupal-nav-tabs]').forEach(function (el) { + return init(el); + }); + } + }; +})(Drupal); \ No newline at end of file diff --git a/core/themes/olivero/logo.svg b/core/themes/olivero/logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..cb8d4ec372f54437929c94af95212ad22df314fc --- /dev/null +++ b/core/themes/olivero/logo.svg @@ -0,0 +1 @@ +<svg width="44" height="70" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M0 0h44v70H0z"/><path d="M30.75 11.73C26.87 7.86 23.18 4.16 22.08 0 21 4.16 17.28 7.86 13.4 11.73 7.59 17.54 1 24.12 1 34a21.08 21.08 0 1 0 42.15 0c0-9.88-6.59-16.46-12.4-22.27zM11.84 35.92a14.13 14.13 0 0 0-1.65 2.62.54.54 0 0 1-.36.3h-.18c-.47 0-1-.92-1-.92-.14-.22-.27-.45-.4-.69l-.09-.19C6.94 34.25 8 30.28 8 30.28a17.42 17.42 0 0 1 2.52-5.41 31.53 31.53 0 0 1 2.28-3l1 1 4.72 4.82a.54.54 0 0 1 0 .72l-4.93 5.47-1.75 2.04zm10.48 13.81a7.29 7.29 0 0 1-5.4-12.14c1.54-1.83 3.42-3.63 5.46-6 2.42 2.58 4 4.35 5.55 6.29.121.15.229.31.32.48a7.15 7.15 0 0 1 1.3 4.12 7.23 7.23 0 0 1-7.23 7.25zM36 38.14a.84.84 0 0 1-.67.58h-.14a1.22 1.22 0 0 1-.68-.55 37.77 37.77 0 0 0-4.28-5.31l-1.93-2-6.41-6.65a54 54 0 0 1-3.84-3.94 1.3 1.3 0 0 0-.1-.15 3.84 3.84 0 0 1-.51-1v-.19a3.4 3.4 0 0 1 1-3c1.24-1.24 2.49-2.49 3.67-3.79 1.3 1.44 2.69 2.82 4.06 4.19a57.6 57.6 0 0 1 7.55 8.58A16 16 0 0 1 36.65 34a14.55 14.55 0 0 1-.65 4.14z" fill="#FFF" fill-rule="nonzero"/></g></svg> diff --git a/core/themes/olivero/olivero.breakpoints.yml b/core/themes/olivero/olivero.breakpoints.yml new file mode 100644 index 0000000000000000000000000000000000000000..3b9ea0ee6cab2ff8291c14a01344a2b968297d33 --- /dev/null +++ b/core/themes/olivero/olivero.breakpoints.yml @@ -0,0 +1,48 @@ +olivero.sm: + label: Small + mediaQuery: 'all and (min-width: 500px)' + weight: 0 + multipliers: + - 1x +olivero.md: + label: Medium + mediaQuery: 'all and (min-width: 700px)' + weight: 1 + multipliers: + - 1x +olivero.lg: + label: Large + mediaQuery: 'all and (min-width: 1000px)' + weight: 2 + multipliers: + - 1x +olivero.xl: + label: X-Large + mediaQuery: 'all and (min-width: 1300px)' + weight: 3 + multipliers: + - 1x +olivero.nav-md: + label: Nav Medium + mediaQuery: 'all and (min-width: 500px)' + weight: 4 + multipliers: + - 1x +olivero.nav: + label: Nav + mediaQuery: 'all and (min-width: 1200px)' + weight: 5 + multipliers: + - 1x +olivero.grid-md: + label: Grid Medium + mediaQuery: 'all and (min-width: 700px)' + weight: 6 + multipliers: + - 1x +olivero.grid-max: + label: Grid Max + mediaQuery: 'all and (min-width: 1440px)' + weight: 7 + multipliers: + - 1x diff --git a/core/themes/olivero/olivero.info.yml b/core/themes/olivero/olivero.info.yml new file mode 100644 index 0000000000000000000000000000000000000000..7ac8eb2a84e10eca8e07a489720584d0751634a4 --- /dev/null +++ b/core/themes/olivero/olivero.info.yml @@ -0,0 +1,85 @@ +# This theme is marked as @internal. It is intended to evolve and change over +# minor releases. +# As the UI of Drupal improves between minor versions, the markup and assets in +# the Olivero theme will change. The Olivero theme is not backwards compatible +# If you wish to modify the output or assets of Olivero you can: +# 1. Copy the whole of Olivero and rename it as your own theme. You will need to +# manually manage your own updates if you want to stay up to date with Olivero's +# bug fixes and feature support. +# +# 2. Sub-theme Olivero. This is only recommended if you want to make minor +# tweaks and understand that Olivero could break your modifications as it +# changes. +name: Olivero +type: theme +base theme: false +description: 'A clean, accessible, and flexible Drupal front-end theme.' +alt text: 'Screenshot of Olivero, Drupal front-end theme.' +package: Core +version: VERSION +experimental: true +libraries: + - olivero/global-styling +regions: + header: Header + primary_menu: 'Primary menu' + secondary_menu: 'Secondary menu' + hero: 'Hero (full width)' + highlighted: Highlighted + breadcrumb: Breadcrumb + social: Social Bar + content_above: Content Above + content: Content + sidebar: 'Sidebar' + content_below: 'Content Below (Flex Layout)' + footer_top: 'Footer Top (Flex Layout)' + footer_bottom: 'Footer Bottom' +libraries-override: + system/base: + css: + component: + css/components/ajax-progress.module.css: css/components/ajax-progress.module.css + css/components/autocomplete-loading.module.css: css/components/autocomplete-loading.module.css + core/drupal.checkbox: false + core/drupal.vertical-tabs: + css: + component: + misc/vertical-tabs.css: css/components/vertical-tabs.css + media/oembed.formatter: false + layout_builder/twocol_section: olivero/layout_builder_twocol_section + layout_builder/threecol_section: olivero/layout_builder_threecol_section + layout_builder/fourcol_section: olivero/layout_builder_fourcol_section +libraries-extend: + core/drupal.message: + - olivero/messages + core/drupal.collapse: + - olivero/details + core/drupal.dialog.off_canvas: + - olivero/dialog.off_canvas + core/drupal.progress: + - olivero/progress + core/drupal.dropbutton: + - olivero/dropbutton + layout_discovery/onecol: + - olivero/layout_discovery_section + layout_discovery/twocol_bricks: + - olivero/layout_discovery_section + layout_discovery/twocol: + - olivero/layout_discovery_section + layout_discovery/threecol_25_50_25: + - olivero/layout_discovery_section + layout_discovery/threecol_33_34_33: + - olivero/layout_discovery_section + node/drupal.node.preview: + - olivero/drupal.node.preview + core/ckeditor: + - olivero/cke-dialog + content_moderation/content_moderation: + - olivero/content_moderation +ckeditor_stylesheets: + - css/base/fonts.css + - css/base/base.css + - css/components/embedded-media.css + - css/components/table.css + - css/components/text-content.css + - css/theme/ckeditor-frame.css diff --git a/core/themes/olivero/olivero.libraries.yml b/core/themes/olivero/olivero.libraries.yml new file mode 100644 index 0000000000000000000000000000000000000000..6eebb2750bec29a69f891334d49086b699e8f954 --- /dev/null +++ b/core/themes/olivero/olivero.libraries.yml @@ -0,0 +1,216 @@ +global-styling: + version: VERSION + css: + base: + css/base/fonts.css: {} + css/base/variables.css: {} + css/base/base.css: {} + css/base/utility.css: {} + layout: + css/layout/layout.css: {} + css/layout/grid.css: {} + css/layout/layout-content-narrow.css: {} + css/layout/layout-content-medium.css: {} + css/layout/layout-footer.css: {} + css/layout/region.css: {} + css/layout/region-content.css: {} + css/layout/region-hero.css: {} + css/layout/social-bar.css: {} + css/layout/views.css: {} + component: + css/components/block.css: {} + css/components/breadcrumb.css: {} + css/components/embedded-media.css: {} + css/components/footer.css: {} + css/components/button.css: {} + css/components/container-inline.module.css: {} + css/components/fieldset.css: {} + css/components/field.css: {} + css/components/field-image.css: {} + css/components/form.css: {} + css/components/form-boolean.css: {} + css/components/form-text.css: {} + css/components/form-textarea.css: {} + css/components/form-select.css: {} + css/components/header.css: {} + css/components/header-buttons-mobile.css: {} + css/components/header-navigation.css: {} + css/components/header-site-branding.css: {} + css/components/hero.css: {} + css/components/links.css: {} + css/components/messages.css: {} + css/components/navigation/nav-button-mobile.css: {} + css/components/navigation/nav-button-wide.css: {} + css/components/navigation/nav-primary-button.css: {} + css/components/navigation/nav-primary.css: {} + css/components/navigation/nav-primary-wide.css: {} + css/components/navigation/nav-secondary.css: {} + css/components/node.css: {} + css/components/node-teaser.css: {} + css/components/page-title.css: {} + css/components/skip-link.css: {} + css/components/pager.css: {} + css/components/table.css: {} + css/components/text-content.css: {} + css/components/tabledrag.css: {} + + js: + js/checkbox.js: {} + js/polyfills.js: {} + js/scripts.js: {} + js/navigation.js: {} + js/second-level-navigation.js: {} + dependencies: + - core/drupal + +book: + css: + theme: + css/components/book.css: {} + +local-actions: + css: + component: + css/components/action-links.css: {} +comments: + css: + component: + css/components/comments.css: {} + js: + js/comments.js: {} + +content-below: + css: + layout: + css/layout/region-content-below.css: {} + +content_moderation: + css: + component: + css/components/content-moderation.css: {} + +filter.theme: + css: + component: + css/theme/filter.theme.css: {} + +details: + css: + theme: + css/components/details.css: {} + +layout_discovery_section: + css: + layout: + css/layout/layout-discovery-section-layout.css: {} + +layout_builder_twocol_section: + css: + layout: + css/layout/layout-builder-twocol-section.css: {} + dependencies: + - olivero/layout_discovery_section + +layout_builder_threecol_section: + css: + layout: + css/layout/layout-builder-threecol-section.css: {} + dependencies: + - olivero/layout_discovery_section + +layout_builder_fourcol_section: + css: + layout: + css/layout/layout-builder-fourcol-section.css: {} + dependencies: + - olivero/layout_discovery_section + +messages: + js: + js/messages.js: {} + +sidebar: + css: + component: + css/components/sidebar.css: {} + layout: + css/layout/layout-sidebar.css: {} + +tabs: + css: + theme: + css/components/tabs.css: {} + js: + js/tabs.js: {} + +tags: + css: + theme: + css/components/tags.css: {} + +feed: + css: + theme: + css/components/feed.css: {} + +search-narrow: + css: + component: + css/components/header-search-narrow.css: {} + +search-wide: + css: + component: + css/components/header-search-wide.css: {} + js: + js/search.js: {} + +search-results: + css: + theme: + css/components/search-results.css: {} + +drupal.node.preview: + css: + theme: + css/components/node-preview-container.css: {} + +powered-by-block: + css: + theme: + css/components/powered-by-block.css: {} + +layout-views-grid-horizontal: + css: + layout: + css/layout/layout-views-grid-horizontal.css: {} + +layout-views-grid-vertical: + css: + layout: + css/layout/layout-views-grid-vertical.css: {} + +cke-dialog: + css: + component: + css/components/cke-dialog.css: {} + +progress: + css: + component: + css/components/progress.css: {} + +forum: + css: + component: + css/components/forum.css: {} + +dropbutton: + css: + component: + css/components/dropbutton.css: {} + +dialog.off_canvas: + css: + component: + css/components/off-canvas.css: {} diff --git a/core/themes/olivero/olivero.theme b/core/themes/olivero/olivero.theme new file mode 100644 index 0000000000000000000000000000000000000000..d7feba0bd3c9453c47a349d2f9aded43513c3512 --- /dev/null +++ b/core/themes/olivero/olivero.theme @@ -0,0 +1,579 @@ +<?php + +/** + * @file + * Functions to support theming in the Olivero theme. + */ + +use Drupal\olivero\OliveroPreRender; +use Drupal\Component\Utility\Html; +use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Template\Attribute; +use Drupal\Core\Render\Element; +use Drupal\user\UserInterface; + +/** + * Implements hook_preprocess_HOOK() for HTML document templates. + * + * Adds body classes if certain regions have content. + */ +function olivero_preprocess_html(&$variables) { + if (theme_get_setting('mobile_menu_all_widths') === 1) { + $variables['attributes']['class'][] = 'is-always-mobile-nav'; + } + + // So fonts can be preloaded from base theme in the event Olivero is used as a + // subtheme. + $variables['olivero_path'] = drupal_get_path('theme', 'olivero'); + + $query_string = \Drupal::state()->get('system.css_js_query_string') ?: '0'; + + // Create render array with noscript tag to output non-JavaScript + // stylesheet for primary menu. + $variables['noscript_styles'] = [ + '#type' => 'html_tag', + '#noscript' => TRUE, + '#tag' => 'link', + '#attributes' => [ + 'rel' => 'stylesheet', + 'href' => '/' . $variables['olivero_path'] . '/css/components/navigation/nav-primary-no-js.css?' . $query_string, + ], + ]; +} + +/** + * Implements hook_preprocess_HOOK() for page title templates. + */ +function olivero_preprocess_page_title(&$variables) { + // Since the title and the shortcut link are both block level elements, + // positioning them next to each other is much simpler with a wrapper div. + if (!empty($variables['title_suffix']['add_or_remove_shortcut']) && $variables['title']) { + // Add a wrapper div using the title_prefix and title_suffix render + // elements. + $variables['title_prefix']['shortcut_wrapper'] = [ + '#markup' => '<div class="shortcut-wrapper">', + '#weight' => 100, + ]; + $variables['title_suffix']['shortcut_wrapper'] = [ + '#markup' => '</div>', + '#weight' => -99, + ]; + + // Make sure the shortcut link is the first item in title_suffix. + $variables['title_suffix']['add_or_remove_shortcut']['#weight'] = -100; + } + + // Unset shortcut link on front page. + $variables['is_front'] = \Drupal::service('path.matcher')->isFrontPage(); + if ($variables['is_front'] === TRUE) { + unset($variables['title_suffix']['add_or_remove_shortcut']); + } +} + +/** + * Implements hook_preprocess_HOOK() for maintenance-page.html.twig. + */ +function olivero_preprocess_maintenance_page(&$variables) { + // By default, site_name is set to Drupal if no db connection is available + // or during site installation. Setting site_name to an empty string makes + // the site and update pages look cleaner. + // @see template_preprocess_maintenance_page + if (!$variables['db_is_active']) { + $variables['site_name'] = ''; + } + + // Olivero has custom styling for the maintenance page. + $variables['#attached']['library'][] = 'olivero/maintenance_page'; +} + +/** + * Implements hook_preprocess_HOOK() for node.html.twig. + */ +function olivero_preprocess_node(&$variables) { + // Remove the "Add new comment" link on teasers or when the comment form is + // displayed on the page. + if ($variables['teaser'] || !empty($variables['content']['comments']['comment_form'])) { + unset($variables['content']['links']['comment']['#links']['comment-add']); + } + + // Apply custom date formatter to "date" field. + if (!empty($variables['date']) && !empty($variables['display_submitted']) && $variables['display_submitted'] === TRUE) { + $variables['date'] = \Drupal::service('date.formatter')->format($variables['node']->getCreatedTime(), 'olivero_medium'); + } +} + +/** + * Implements hook_preprocess_HOOK() for block.html.twig. + */ +function olivero_preprocess_block(&$variables) { + if (!empty($variables['elements']['#id'])) { + /** @var \Drupal\block\BlockInterface $block */ + $block = \Drupal::entityTypeManager() + ->getStorage('block') + ->load($variables['elements']['#id']); + if ($block) { + $region = $block->getRegion(); + if ($region == 'primary_menu') { + if ($variables['base_plugin_id'] === 'system_menu_block') { + $variables['content']['#attributes']['region'] = $region; + } + elseif ($variables['base_plugin_id'] === 'search_form_block') { + // Attaching library for search block if present at primary menu + // region. + $variables['#attached']['library'][] = 'olivero/search-narrow'; + } + } + elseif ($region === 'secondary_menu' && $variables['base_plugin_id'] === 'search_form_block') { + // Attaching library for search block if present at secondary menu + // region. + $variables['#attached']['library'][] = 'olivero/search-wide'; + } + if ($variables['base_plugin_id'] === 'search_form_block' && in_array($region, ['primary_menu', 'secondary_menu'], TRUE)) { + $variables['content']['actions']['submit']['#theme_wrappers'] = ['input__submit__header_search']; + } + } + } + + if ($variables['plugin_id'] === 'system_branding_block') { + $site_branding_color = theme_get_setting('site_branding_bg_color'); + if ($site_branding_color && $site_branding_color !== 'default') { + $variables['attributes']['class'][] = 'site-branding--bg-' . $site_branding_color; + } + } + + // Add a primary-nav class to main menu navigation block. + if ($variables['plugin_id'] === 'system_menu_block:main') { + $variables['attributes']['class'][] = 'primary-nav'; + } +} + +/** + * Implements hook_theme_suggestions_HOOK_alter() for menu. + */ +function olivero_theme_suggestions_menu_alter(&$suggestions, array $variables) { + if (isset($variables['attributes']['region']) && $variables['attributes']['region'] === 'primary_menu') { + $suggestions[] = 'menu__' . $variables['attributes']['region']; + } +} + +/** + * Implements hook_theme_suggestions_HOOK_alter() for form templates. + */ +function olivero_theme_suggestions_form_alter(array &$suggestions, array $variables) { + if ($variables['element']['#form_id'] === 'search_block_form') { + $suggestions[] = 'form__search_block_form'; + } +} + +/** + * Implements hook_form_alter() for adding classes and placeholder text to the search forms. + */ +function olivero_form_alter(&$form, FormStateInterface $form_state, $form_id) { + if (isset($form['actions']) && (count($form['actions'])) <= 2) { + $form['actions']['submit']['#attributes']['class'][] = 'button--primary'; + } + + switch ($form_id) { + case 'search_block_form': + // Add placeholder text to keys input. + $form['keys']['#attributes']['placeholder'] = t('Search by keyword or phrase.'); + + // Add classes to the search form submit input. + $form['actions']['submit']['#attributes']['class'][] = 'search-form__submit'; + break; + + case 'search_form': + $form['basic']['keys']['#attributes']['placeholder'] = t('Search by keyword or phrase.'); + $form['basic']['submit']['#attributes']['class'][] = 'button--primary'; + $form['advanced']['submit']['#attributes']['class'][] = 'button--primary'; + break; + } +} + +/** + * Implements hook_theme_suggestions_HOOK_alter() for block(). + */ +function olivero_theme_suggestions_block_alter(&$suggestions, array $variables) { + if (!empty($variables['elements']['#id'])) { + + /** @var \Drupal\block\BlockInterface $block */ + $block = \Drupal::entityTypeManager() + ->getStorage('block') + ->load($variables['elements']['#id']); + if ($block) { + + // Add region-specific block theme suggestions. + $region = $block + ->getRegion(); + + $suggestions[] = 'block__' . $region; + $suggestions[] = 'block__' . $region . '__' . 'plugin_id' . '__' . $variables['elements']['#plugin_id']; + $suggestions[] = 'block__' . $region . '__' . 'id' . '__' . $variables['elements']['#id']; + } + } +} + +/** + * Implements hook_preprocess_HOOK() for menu-local-tasks templates. + */ +function olivero_preprocess_menu_local_tasks(&$variables) { + foreach (Element::children($variables['primary']) as $key) { + $variables['primary'][$key]['#level'] = 'primary'; + } + foreach (Element::children($variables['secondary']) as $key) { + $variables['secondary'][$key]['#level'] = 'secondary'; + } +} + +/** + * Implements hook_preprocess_form_element(). + */ +function olivero_preprocess_form_element(&$variables) { + if (in_array($variables['element']['#type'] ?? FALSE, ['checkbox', 'radio'], TRUE)) { + $variables['attributes']['class'][] = 'form-type--boolean'; + } + + if (!empty($variables['description']['attributes'])) { + $variables['description']['attributes']->addClass('form-item__description'); + } + + if ($variables['disabled']) { + $variables['label']['#attributes']['class'][] = 'is-disabled'; + } +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function olivero_preprocess_form_element_label(&$variables) { + $variables['attributes']['class'][] = 'form-item__label'; +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function olivero_preprocess_input(&$variables) { + if ( + !empty($variables['element']['#title_display']) && + $variables['element']['#title_display'] === 'attribute' && + !empty((string) $variables['element']['#title']) + ) { + $variables['attributes']['title'] = (string) $variables['element']['#title']; + } + + $type_api = $variables['element']['#type']; + $type_html = $variables['attributes']['type']; + $text_types_html = [ + 'text', + 'email', + 'tel', + 'number', + 'search', + 'password', + 'date', + 'time', + 'file', + 'color', + 'datetime-local', + 'url', + 'month', + 'week', + ]; + + if (in_array($type_html, $text_types_html, TRUE)) { + $variables['attributes']['class'][] = 'form-element'; + $variables['attributes']['class'][] = Html::getClass('form-element--type-' . $type_html); + $variables['attributes']['class'][] = Html::getClass('form-element--api-' . $type_api); + + if (!empty($variables['element']['#autocomplete_route_name'])) { + $variables['autocomplete_message'] = t('Loading…'); + } + } + + if (in_array($type_html, ['checkbox', 'radio'], TRUE)) { + $variables['attributes']['class'][] = 'form-boolean'; + $variables['attributes']['class'][] = Html::getClass('form-boolean--type-' . $type_html); + } +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function olivero_preprocess_textarea(&$variables) { + $variables['attributes']['class'][] = 'form-element'; + $variables['attributes']['class'][] = 'form-element--type-textarea'; + $variables['attributes']['class'][] = 'form-element--api-textarea'; +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function olivero_preprocess_select(&$variables) { + $variables['attributes']['class'][] = 'form-element'; + $variables['attributes']['class'][] = $variables['element']['#multiple'] ? + 'form-element--type-select-multiple' : + 'form-element--type-select'; +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function olivero_preprocess_checkboxes(&$variables) { + $variables['attributes']['class'][] = 'form-boolean-group'; +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function olivero_preprocess_radios(&$variables) { + $variables['attributes']['class'][] = 'form-boolean-group'; +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function olivero_preprocess_field(&$variables) { + $rich_field_types = ['text_with_summary', 'text', 'text_long']; + + if (in_array($variables['field_type'], $rich_field_types, TRUE)) { + $variables['attributes']['class'][] = 'text-content'; + } +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function olivero_preprocess_field_multiple_value_form(&$variables) { + // Make disabled available for the template. + $variables['disabled'] = !empty($variables['element']['#disabled']); + + if ($variables['multiple']) { + // Add an additional CSS class for the field label table cell. + // This repeats the logic of template_preprocess_field_multiple_value_form() + // without using '#prefix' and '#suffix' for the wrapper element. + // + // If the field is multiple, we don't have to check the existence of the + // table header cell. + // + // @see template_preprocess_field_multiple_value_form(). + $header_attributes = ['class' => ['form-item__label', 'form-item__label--multiple-value-form']]; + if (!empty($variables['element']['#required'])) { + $header_attributes['class'][] = 'js-form-required'; + $header_attributes['class'][] = 'form-required'; + } + // Using array_key_first() for addressing the first header cell would be + // more elegant here, but we can rely on the related theme.inc preprocess. + // @todo change this after https://www.drupal.org/node/3099026 has landed. + $variables['table']['#header'][0]['data'] = [ + '#type' => 'html_tag', + '#tag' => 'h4', + '#value' => $variables['element']['#title'], + '#attributes' => $header_attributes, + ]; + + if ($variables['disabled']) { + $variables['table']['#attributes']['class'][] = 'tabledrag-disabled'; + $variables['table']['#attributes']['class'][] = 'js-tabledrag-disabled'; + + // We will add the 'is-disabled' CSS class to the disabled table header + // cells. + $header_attributes['class'][] = 'is-disabled'; + foreach ($variables['table']['#header'] as &$cell) { + if (is_array($cell) && isset($cell['data'])) { + $cell = $cell + ['class' => []]; + $cell['class'][] = 'is-disabled'; + } + else { + // We have to modify the structure of this header cell. + $cell = [ + 'data' => $cell, + 'class' => ['is-disabled'], + ]; + } + } + } + } +} + +/** + * Implements hook_preprocess_HOOK() for menu-local-task templates. + */ +function olivero_preprocess_menu_local_task(&$variables) { + $variables['link']['#options']['attributes']['class'][] = 'tabs__link'; + $variables['link']['#options']['attributes']['class'][] = 'js-tabs-link'; + + // Ensure is-active class is set when the tab is active. The generic active + // link handler applies stricter comparison rules than what is necessary for + // tabs. + if (isset($variables['is_active']) && $variables['is_active'] === TRUE) { + $variables['link']['#options']['attributes']['class'][] = 'is-active'; + } + + if (isset($variables['element']['#level'])) { + $variables['level'] = $variables['element']['#level']; + } +} + +/** + * Implements template_preprocess_HOOK() for fieldset. + */ +function olivero_preprocess_fieldset(&$variables) { + $element = $variables['element']; + $composite_types = ['checkboxes', 'radios']; + + if (!empty($element['#type']) && in_array($element['#type'], $composite_types) && !empty($variables['element']['#children_errors'])) { + $variables['legend_span']['attributes']->addClass('has-error'); + } + + if (!empty($element['#disabled'])) { + $variables['legend_span']['attributes']->addClass('is-disabled'); + + if (!empty($variables['description']) && !empty($variables['description']['attributes'])) { + $variables['description']['attributes']->addClass('is-disabled'); + } + } + + // Remove 'container-inline' class from the main attributes and add a flag + // instead. + // @todo remove this after https://www.drupal.org/node/3059593 has been + // resolved. + if (!empty($variables['attributes']['class'])) { + $container_inline_key = array_search('container-inline', $variables['attributes']['class']); + + if ($container_inline_key !== FALSE) { + unset($variables['attributes']['class'][$container_inline_key]); + $variables['inline_items'] = TRUE; + } + } +} + +/** + * Implements hook_theme_suggestions_HOOK_alter(). + */ +function olivero_theme_suggestions_user_alter(&$suggestions, $variables) { + $suggestions[] = 'user__' . $variables['elements']['#view_mode']; +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function olivero_preprocess_field__node__created(&$variables) { + foreach (Element::children($variables['items']) as $item) { + unset($variables['items'][$item]['content']['#prefix']); + } +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function olivero_preprocess_field__node__field_image__article(&$variables) { + if ($variables['element']['#view_mode'] == 'full') { + $image_style = \Drupal::entityTypeManager()->getStorage('image_style')->load('wide'); + if ($image_style) { + foreach (Element::children($variables['items']) as $key) { + $variables['items'][$key]['content']['#image_style'] = 'wide'; + } + } + } +} + +/** + * Implements hook_preprocess_HOOK() for setting classes. + */ +function olivero_preprocess_filter_caption(&$variables) { + $variables['classes'] = isset($variables['classes']) && !empty($variables['classes']) ? $variables['classes'] . ' caption' : 'caption'; +} + +/** + * Implements hook_form_FORM_ID_alter(). + */ +function olivero_form_comment_form_alter(&$form, FormStateInterface $form_state, $form_id) { + $comment = $form_state->getFormObject() + ->getEntity(); + /* @var \Drupal\comment\Entity\Comment $comment */ + if ($comment->hasParentComment()) { + $form['actions']['submit']['#value'] = t('Reply to comment'); + } + else { + $form['actions']['submit']['#value'] = t('Post comment'); + } +} + +/** + * Implements hook_form_FORM_ID_alter(). + */ +function olivero_form_node_preview_form_select_alter(&$form, FormStateInterface $form_state, $form_id) { + $form['backlink']['#options']['attributes']['class'][] = 'button'; + $form['backlink']['#options']['attributes']['class'][] = 'button--small'; + $form['backlink']['#options']['attributes']['class'][] = 'button--icon-back'; + $form['backlink']['#options']['attributes']['class'][] = 'button--primary'; + $form['view_mode']['#attributes']['class'][] = 'form-element--small'; +} + +/** + * Implements hook_preprocess_HOOK() for comment.html.twig. + */ +function olivero_preprocess_comment(&$variables) { + // Getting the node creation time stamp from the comment object. + $date = $variables['comment']->getCreatedTime(); + // Formatting "created" as "X days ago". + $variables['created'] = t('@time ago', ['@time' => \Drupal::service('date.formatter')->formatInterval(\Drupal::time()->getRequestTime() - $date)]); +} + +/** + * Implements hook_preprocess_HOOK() for field--comment.html.twig. + */ +function olivero_preprocess_field__comment(&$variables) { + // Add a comment_count. + $variables['comment_count'] = count(array_filter($variables['comments'], 'is_numeric', ARRAY_FILTER_USE_KEY)); + + // Add user.compact to field-comment if profile's avatar of current user + // exist. + $user = \Drupal::currentUser(); + if ($user->isAuthenticated() && $user instanceof UserInterface) { + if ($user->hasField('user_picture') && !$user->get('user_picture')->isEmpty()) { + $variables['user_picture'] = \Drupal::entityTypeManager() + ->getViewBuilder('user') + ->view($user, 'compact'); + } + + $variables['#cache']['contexts'][] = 'user'; + } +} + +/** + * Implements hook_element_info_alter(). + */ +function olivero_element_info_alter(&$info) { + if (array_key_exists('text_format', $info)) { + $info['text_format']['#pre_render'][] = [OliveroPreRender::class, 'textFormat']; + } + + if (isset($info['status_messages'])) { + $info['status_messages']['#pre_render'][] = [OliveroPreRender::class, 'messagePlaceholder']; + } +} + +/** + * Implements template_preprocess_text_format_wrapper(). + * + * @todo Remove when https://www.drupal.org/node/3016343 is fixed. + */ +function olivero_preprocess_text_format_wrapper(&$variables) { + $description_attributes = []; + if (!empty($variables['attributes']['id'])) { + $description_attributes['id'] = $variables['attributes']['aria-describedby'] = $variables['attributes']['id']; + unset($variables['attributes']['id']); + } + $variables['description_attributes'] = new Attribute($description_attributes); +} + +/** + * Implements hook_preprocess_search_result(). + */ +function olivero_preprocess_search_result(&$variables) { + // Apply custom date formatter to "date" field. + if (!empty($variables['result']['date'])) { + $variables['info_date'] = \Drupal::service('date.formatter')->format($variables['result']['node']->getCreatedTime(), 'olivero_medium'); + } +} diff --git a/core/themes/olivero/screenshot.png b/core/themes/olivero/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a0f57baaac404711511cfb5555c5a09d65365b --- /dev/null +++ b/core/themes/olivero/screenshot.png @@ -0,0 +1,621 @@ +‰PNG + +��� IHDR��à��h��ø0¶���gAMA��±üa��@�IDATxì½`Wy7þÓº’®öÞÛ²ey8Þ+‰ãìA’�mhˆÒhK[Ú¯ÐÒ–¶_ùCX%’EBâ,gØNâ½·-kï=®¶tÿ¿ß¹:òµ£eIvlбußý¾çœç<ÏyÎ3}r\ævww@¥¿¿n7ÿ¶ýÜç Ïyž+ÿú"sß•ðSßÚ@SUWW¯Ù×Ösf }½=ž4ºŸõî€+¡¡¶Ž¶±:Ö¾{`{nƒûº ]BT 6>Û`^°ïº¢¶š¯Ú |Nƒ{{{5®Ì>q÷ñp ÑWXƒí0Vcí¾¶¾ÞàêçîëëAOOj¾µ™‘œüËeæœÎOVÙüæ[æU‡Åï_Þdö¿ýßÁž½ûÌ~EE%^c3Ž=jŽ_yí5³íêê2[Wg·ÙVVVšíP?çéönûxÆÚrŽõ@–`|_ów®ÜŸÌ7‡]_ŸF“PÉó½uWâ%™ÏøJ¾¾¾ðóóƒöÇR:»ÏÞª'}ø·½äË»&ý5T Œõ>½GTÚIb¥Fzéspx´^¬ëª“ùþó‡´môeÑ`ÛÐÃÄÙ¾Þ>´µµ!0(íííX½r¥½<¡í€ÒßÜtÿxCÞ„><ÔÃÂ_áçhåB‡´m¤…®¶¦Á+^„m¦¾ÀmƒO>÷wì@Td²33q’ÇjäGî¸ÝôÅ…4Xt©„·DÐáç;ˆÇáÑ 0Þë¶Á£=¡ ê}£“F¯§ž{ástôØ1l¸ñf<òçŸc/ö™s_ýú_á™çŸÇO~ösÜrçGŸêèððéol~Óœ»ãž{“”‚ÿþáqÓíwà¡Ïü)vîÚe®©A…EEƒû½}d„ÆYºzÏr†=ž:j.Ö¼çîèê6Ú©dL›n.ÿý?þ“ÙæΚí>yêÔà#Ë׬u?ðð§ÜщÉæ\qI‰Ùvttº¿ù·ß6ûº–›?Û=gábsœ>-×ý«ÇcöGûáHí–ÁëjSCk‡»®¥Ý´Ínÿ(†´e:z‰Ó4¤Ç9º>ôÇ,oæïKŽíBj£ùÑï}{îrÛ +g5©Øíe1¤ÇJ}ÇzŸØÒÞ‡¿ž"ZA~¦ÑÎÄ«y-Hm^—wuÏXzÈ6Vûj¬Š‘Qis“Q]ÑŒ„øD$8°xÙ?QŒ�8ÐÚÒNì_ùÚgÐÕÕƒmÛÞEþ¬ÙxÿýMœô+àÁ-«?ƒ”ÜTD%Äcë¦-‹ˆÇuw®5•Ï:g,¥§O+?7ý=ÐSƒÝþ>pF£ódªÜµèìŽÆÛ-{ÐRݵ·.f#;™“ˆ7ßچظ(¬]»GŸÆµëî@ˆÓ‰}'‹7ÞyóêWÂß?u¥EðÏðå*ÆÉ…gûXê=®{,;©‡í¾¶£-7ùÜÛYIŸ�DĆ *Ñ5Um¸û3kàëv¢µ-„rTTš°{÷nÄs$tp‘Ò’Røø ¾²Á>Äc¦úéq5Ô>dùhk_ÖvÔ¯ú…øaÚÌDø‡ø"!1såááÏÞˆî®>”W–!.)½]¾8STÈFÇ ±¹ ÇÇéS%(8] +‡O$¦Ïœ‹OþåWP|prf/À©=• ý´u»¨[;ø-·5jƒcâÂ9$º°`å4¤e¥¢¦¢ GŸÁ›öbö¼\47ö`úôéhkîàr®QI —ƒ¸„X8xŠ’ŒndgÌG�{wþµ×ÂíF/Ñ„dê¢6tpâW´ïtøJ÷²+7ÌÆ+ÏìCX´]-¤s=øâÉŸmAÓ·»÷éB_BÂýI$Âpüh ëÙ‡ÄÄ,”œ:…ÞÎN|÷ŸÞF\F6«¡¾>Ëïò`RËùCÚÊ´F…pSe7ön9†Î†^ô´¡¯³=ýðiëGWCÚ«{ÑXÖ‚ª"ár;jº±ùÅ“(*ªAEy3ñ6¯¼øšêÊ„ðø0Ì\ΦZþgRÛ9ìËa•Qœ¾4Õµ˜qu"\X¶1Ž°@Üø±ep& k~|Ì_–HâpIa#‚Ã|‘‘’ŠÎö~øcÞ¢%HÍš…>7–¬…÷_¯ç§=+S‹‹ð£al‘ÆomG‡+ö4"wa"œÎ`,^=§U›º¾öìaôWKÝøÌg7âg?|Á¡~ˆ‰Áw\‹ý;O «½I©3肯Ÿ~ö‹ƒèhëCBRÜEh⹯´CZS¶öÕXmGmpo¯Nª‡_o|úÉHDø"a–/_Œ;÷£èp~ûøVÄ$øÁÉá»|Õ,,˜Ã‡ñ\jÏ¡!%qm1X¾,…¥uøþwþîÜÚ ù #5K—-$W€'žúÝà•ñîX©®í€Q‡´¯?{&Ôœy)˜¹*é¹1HL CKk#E1Á¸í£+ð—ßx±QìÁ@œ<R‚°°pÜzÛj¬˜„OÜÿç8¾ï�ž{j/Â#1sv<ÚPúú;)"ž–‰Ðôtu¢µ¹»÷zÜs×õãÂv;Œõ!»?¦!{U2bãQRZ™Ór0oîlH%“œ˜¿€¹è§¼»¡±y³¦#7=}d3}ØIŽ€@ä ÄÖm=ø³/g`ÏÎrdOK“¨ÿœK&àî^DáÌ™^w Íå@lB2þìO>Š’²¼ø²GjrÎÃâ–µ¼ !€}»ã_‡ØØ8DFFR9åKuLEª=d@z‚›nZÉi+u•f¥9Ã99¯¿þ:þú>ÉÊw`éŠTܾá3¨bh@�üüj4~ì,øñý>èlë@ɯ[ôLJ=ÀηeÌCº½¥Ÿ|äF³R +FmM**ª Ý@”UV‘¡@G+ÅŸd&š«;ŸÅžíÃË¿{=øÙww‘ål…#СAñhè;fë`¶ÏRBÍ5|.Iý¹Ò!qáÇ××ý”>vS.ær¹ðå/<xγ#ôR>fK7*â¶Îv½zÞöªU3ÑÛÝM|A««M„h8öì>DEM/*ªË°}Ïv´S8å”òÇNÃ]÷.Fay!Äšû ’Úù‡óÞDs4øpºò箟‚·ØØX:B‘“ž‰è¨tñinhFZb +Š +«Ø5c›¿ý‰&íÝ}˜VËÄQ©´˜}??B±³áa1K‰ÂüëoÈ'ñ…‰Ô¨ºqÕ’yêalL?œ“ŸûÍû¸÷Ó7"°"sWCoO?’Sã°õЯ>ÐàÐPj(Hé'|9 +ÔqRѶwG¡¡¡‘áÑ‚¤Ÿµåµ˜=3çïî„ÓÁaÂÂ×™)I8=jƒK¸ÚÉÊÌ1CZKÁ·6oGW›Ó¦gàä‰Räæ¦#ÈŒ^ê’Ý=¾((:܈ֆzLËšÆÅw¨Q@®\¶~ÈzusUŠæ–~hmk@tlÚ;š¹Ú +G8gˆ°0u&PWÛ‚¸”„!ß3ÒI0S„Ó£é4R^—«M-ðã`QþâzÑZB5„+¨pœ<*=‚Ø@ñ8qñÉøÁ¿½D^;…d=» îj¨ÂJaS9ÿ&ÅGïdN:ÐÚÚJVµÅt´ƒ×CBBž™€c'Nõ’!Ïui]´SÓ¨ Þ½ã(\ÍìårLÈŸO<‹ „SÐÜÔ…¨˜ôû·áûÿò8WK.ÃUÕÖ7ãñÇ_Ã]÷-GM]7þ„œØp¥‹D)%9›ÓW(šÑÓIªï!Ú“Rs(9L£}hÐØÄ¥ç‰3ýêœó"PÁÒ¢ÎÂe;5*Äûü—?…Øè8„…Æ!6&aá!è䪧³³‹ìb�Ù†ý{J RÓö^\µt:¦çf¡ÛY)¸z¹,†ç›H\rÒb‘ÀÆâåÏ÷‚$uldT˜™ªÂØ!uÄéþü©e_¶ÕVçmívÔÛ¯´ípÊ´Q‡ô•ÖP[_ᬩ•’ìþƒm°å¬ÔÚ#¢í¨Ó’í1mâIJýÈÐß…Çá\Èsn³‹]१§^{ÙÒ«ñÞûÛqͺuxæP%”· />]‡7cíêÕ“=íFMm>ñ±û¼?sQö{È/H.A8\UUMž¸ ‡Æ¬ü|cÞÔØØh¦1‹.À[#º:ÎÁ9Ùè&‡&Ö±ƒDnÕŠ8}ºÀðݧ + +ØY\”šŽ*åö®;ïœÔ†gÔrA KÄàVÙk8)§ö.ÖJÎûÜdíŸO¥…ÓÒ>Óþûg;Oé§r[ú£öà¾1?¤È@ÛÏ/MÀ_®J±·^ÖÛƶN3ÛFJ9n¸,r\çà°–{j°ì*eoémvhÎ_ÖÍ<[91*–p(Õtîœ÷XÓz-ÈÊÄM¡éð̃^t¹]‰gÄRÜ×9 >k>ÌFš!-‡¸d‚üRlc½·R†kyxÎ<¬?vÏTsjþz%>½$‘ó—ÇàTPžŒòÄo;øšÍo½…ïüß6ÇGG% +*o¾ý6„C—M¯¾†òŠ +sþs_ú²Ùꧨ¸õõC/H4”e²¤Õ)²±*ç†Ú23|½´‘jäÀÒêkksðk§™‡&ûG£Gr²áÔ ÒûS +2{LÕí| +í]_Y»Ø–q©æk F*c¹Ç>oÍÿ½‡´DHÁc‘xØ—\ÌípõþæXî±÷k([ø-KÇ$ñ°/¹Û§Ÿ}Ž +ö.$''sÛ‰kׯ7Cy<ß–é°Jð€NIûš‹Ç<¤ß+lÀG«ñÏ7ÍÔ³“ZÔHÉÎF*c¹Ç>þÖÔ¤Æ6xÞOŠqàÓ”M}8â¶1¢Î ññÆl¸´¬y3f ¦§ƒí=¶Q#mE´¼ñ×i3>xü4ææQàö!7x¤F\hƒõ®¡xu3Pò?–²jÝ5øëoÿ=¾þÍo™Û›ššñ‘{ïßáKøõož@Þœyƒ¯¹î†›@ûJ\ó-œk¿kÎgçå›í~òSüó¿ü«ÙøOþÔ<«MM \}‰@É°T«¬ñÍÁ*”e©Hƒ8X¬a©¶£•oüÍߺç-¾Ê?ûØñãnǦ¤º›š›Ý÷Ýÿ {éª5n2 +æ5Q Iî¹¼7".Á=cö\wPx¤{Ѳån6Ê–“ë¾fãF÷‹/½ìþøƒ‘™#,F)”£rÇÙËj‹5&µ[Wg—97f¢5ØCag,Ãu,÷تYÆÛ¶×Îa-íÉ?”4’ç—?ØŠL¶X[0í_1 ¾;Kb³á®Ô@;%É%Oû„ùùcàKî5Úòs¬U×vŽm¬wFlðâ¹ËP|¬~}8býà€ w, ?Ûß?ˆNW'§7úÔ]d9 Pžu`ÿqj²q¦øøvÕ"&fîºíÙ³›üm|è9s¦*_ûë;¼ë1æ}Ao,ÅB×nõŒöGlð©c5Tx oq:}]¨8ÕŒ}ïPYH^· ¡ÔêÍ]0Û·ï¤2,³gÍDZf"rgä`fÞtì=¸™kÜ]8y檫Z‘2- t<µ¿n,u÷=ÖÍ6¶ƒ’ äñq8‚z$*äqt_!jZ‘˜†n^~vn¹õ,X8…Ål`6åÌEØúî»HJŒÁî]û<æ‡q³á¤îý7Ÿ‡¿»ýíÕìá ¾cÄ~wCíƒV¤c‡´–…ÒB¨ŒØàNGLš»±ì¶B§™œÛ?¾ÇŽJBQO›Êìßw”Ì0âã°cÇaãJW@ãÒÄØht’{ºçá/!&+Q)étŸAÖŒH[·‹¶•ªTÅ•j_ËÑ\ä-Já*#Õ%͸ëÁ 8SP†ŸÙ0g4Ù¿>9T†–¦š1¹PVFëY.ä;ii{äèiôP’á2^žl¸ûVÚµ.ªC›«/®@PCY’Km%ÇÒV ×jiı%^Meñ·G÷T£¥q7ª +;5+›^؉B/˜úPš"ÆQO좥Ž@mBúieÛaL$r’¥V9…Ðø`âq¿½…ö—ãã‘¥± e+Ó²S”}nħgƒCƒ‘–‘Ž£[ +Ñ\ÕC¯OîàP¢V?Ú}ûÐÕOÝp1¢ãi~D*\tª©™ø›oþ'n½e6õËI8}ä�ZûßمƓo[‰‹±µ8k§(û‡tñ ;3™$ÒsjÊž•HK<²„qHÒ ÍÁUÖ#߸…Æc!øÔg¯£ÿCª‹N"؟ֳݤクõž¡ªúSbÑGÙôqøÅ«ß°ß¿([ aïÅå)qhíNÓZÄ.Y“][NÑ>Æc<FC²ž.yzùbÚœ8ÚD'ÒŠ6ˆ&G(/ªCá™ZÌËq!9k6xäÞy>ºKWæá‹_¿{Ü Ë<ì-�lËŠ{ºè›<âÖð]¸*Eû\xïÅc4öClŠ“ÆŸsQ_ׂm¯A€“fGÍnÔÔ¡½¨ŸþÓ;і߆ršÕ¾‹ `ª)oþÅ/ßA"@ä"0RÙ¸a¥QxgÛ.â~éH·ŽxÍNI¶±ºYÞ-#6¸©¦ »_)‚›–}e#^znå.chRWW‡koZ‚ŒŒ4;v‚¶X¾XBŸ¬ÌT:ñÕ_~Ÿxèz,Yº_ûücõšùˆI‰Áöß×|°¢œ"BƒBÃ6Î×õMX½|/ÌC8uÐ?ûÅ3|f„3Êj°ÝjŠ + ~IÚ‡ìG›ÊykSÉR†áÄ飸ï¡Uº œsƒ—Gö± QDÇБ#7öžB}ã6:¡‘NDÆÐ䉖=É)‰<߃[>2÷Þ}êJÖ�ÚcÐœ±££eõ媦AK(í´Bññ»¯Ç¯Ÿ~•¢‹<:ä ïÆÚFëFíH´VÜ8´µŒŠñashÁ#1+ŽlchlJå8ÍŽ£¸N6¸jjB[¯>ò#l¼a9Vƒýï)l†‡ã±5õ§=¥,oýüÝ´ßôCKí2œäÍéjà6Öx tºûŽuö‘1mÕh«f±è܈ Þ¿çVo˜ùæ›a*ó†ûéÿàê¦Í”‹Vs2dB1;?W¯^h*ýäc¯Òä?O=ÿ[<ôé›i8„Œ¬H|ûÿ| >LZ)i%äv;Œõl§h¢Ò¬î^zÇDE£‰3 ÕÍtü +¶uqk×]œ6Ï/#é¹SÑCMLoO/¡Nã±0DGGàåW·reÔ‰«æâØÉ3X±hçä^ºÞù‡Úª&8“"’”On¬›V{uÄ!7v9×Â]sdb´“6_œFXË`I-LRR<Š÷VŽ®â¢¤'Ç£”Dð“÷Í,B&Œv(Û -\™4,ó'#QÃáÙÒÒÄ%áãmvâH!fÍŸ†£ÇŠi׈Çó_ùò¿·s/¤ÜÙqIxâÇïZõO~ü[çw6·›H¨ pš=Ý4#æ:ÓÕÆTÝ‚:†¨‰!?î£@Ûéƒ{<¡j>ð¢!Nxã±.[Àˆ N56µu‡¶§ÏÈ%Q¡çæˆ'Z)¦]0{!²²²ÉV¶cñ‚#¥¸ñ¦¥\ŽÑö2ÄÁ…Em-+p¤ÔsÇ»n²“nnv!˜÷ð~Åûé$z47ÓÔ1&ÓçÎ2Ã]BaaNÎ#V×ûÕf_>¿Œøhw� 'Ž?a›iM»èêéxëÕ½¸æú•Øwä *këiXVè®^CËœh”T‘JGF`͵ñ¥¯<tþwͱ›³@P WY‘æ/ƒÔ¼·¯“Ô:€R‹@øöuQ9@"éDjzRÓR‡|ÏP'5”UìvL2ÚÊFRá ”ÓW!;QÄ·/~哬„nûÈ.꫹þM¤¯R Ç[Œl‡~U}%àpïýWá_ú)?ëù¸©×‰ÁNuÒ˜4œŽ!…e%HæSŽ› ´ßrÐ:7Œ³€)IIIäßGV©ÚWÛ…ƒÅ_qgcÒ±ñáˆÄâ«gÒ+Œ„‡Öë|8#ƒœÄ³³2±å}8´¿/½ô¾1‚Ù¶�ï¼y +‹—ärÙèÄ{‡~lëñèµ|›º¨–'LW\ÍÍ4S&äéJ «ZWXRÐk˜?ñä‹xÇP'ìÂÁiïĈ¼ôP/»ÎyóÒʪ·öGÄá+¡qCÕÑ6Òne/ÝKÓCAüÂCu„Î}nsg-f^üýK†³‰ŽŽæº×‰üü™Ø½gm(CQp¦¶•¾ôF‰2æ‡2ÍX¥ÑØ[Ö„¯¬É¬xÄ´Ìœ™‡ÒRÑPªr÷]gCÙóù>¥ VGݴ³DÌÆÜà^ÆÉS£6\{ Nž:²òrdef²þFiÝ@ªœ››ƒÜìiù„rš‰Ãö;ÙAõïìAȉwñ–»ÔPKÍ«-$NwÝy^{ý šõŸ0ÊïnÕ0Ø¡ì½!“|kÂCZÎÖëd¨ï‹ßcGµSHï¤Ñi+ GØ�c¯©BÅEáT7YEDK8ë/f†PµT[ï?' ÷ÅõéçkdªëÖ@M×<ÒÏ–‡ºjÎ}qy¾¾zìL‚žœ*£÷€Œf½W€vëIí+¼ˆìJíºADzX–©g!ç dJÈ™cîk ªcø{H‡¦Êä÷€5¶À�¥E’ѳå±,Ðulî®»Z¡¥€‚¢7Æšc�tÍ5Ýc‰¦ÊÅëÌ^Šc¤5ó.öšÎiX¾R�öüõ¢ð«‹ÐBNá{3(úè1œ¾»¿×ìKá+ûâ^“¬k¿ŸVåìEÈ `»¶Ø`ºöx¼[‘_[L³Ì¡÷yðU†ƒ›¹ž%ÎÌVz^ë96$Úb/_bæeÝ &‚÷~mÝų«V¥/VñP(5ál'^è·ì2ÔníóêpÍ‘)ÖK¤W]mCíèsuM¤\!ÑjËPíé`²hÕ^Þäiøx‘iÌ¥~Vö4úÛøDù„>Þyõ£)Æ7ÍÈ®”°Ö³À%V±\´½&½¡öÏñI³/Ñöò©õ®Ã¥Üp3}4‹í±ÔI’A^ˆ‘ÕXÞk1x,÷Ú{&F3ì[þ�¶!Ë—ºù"½âžU¤øÖ±-Ú·4Öh{aj{ù÷€ÌäÿlÉ°�è½/IŽ÷±ö1øúß”ã‰ãTê3”ÎT¹<{@æe6èŒjhi÷½%XöÚ €_½/«£©¤MìT¹¼{Àá†V¢IÛâ½/ÓÚA�ë†6ڹ܊¤þ—¢Ø�÷ö[Ýd¸†*b l·×^Ÿì€§?a§8tíkuì}Mku€ë›'N¯o~Ó¼ëð‘#dáûpãm·#9#Ëœ+,,¢E@|hf¬?[èódvC£cáïEÞÜùøÌ#ŸÅ¾ýàb®}÷_¿ÏˆlGD1¼T¯ÿ™9¯s3»ÿ¡OÙ×Á:ƒ…0Ʀ² 8#£iMÇÑËÍ=Êì£úÝyÏGñد?‡ƒ–)åPśˎ¡J÷RÒ’^}÷ü}K$u’½6µL€lpäýg(Ào§'~&‡£EñË$óMMIÆ©Ó&>‹ÔbòÝNKM…Tk¶\ìe’ÈÐo ’1ÍÕ*šl§�lº‚¶Rçxàô¸6Àò„Vv +xÖï]çD’UtÍ[1¬6ÉÜ=Î Î_ä«Ñ;´¯ =Ò«J¸ Ðh—[Qšjè );;ËäKI¦ÃðZ1EJð/}þs—¬ê–ìʆ2½í±°ÖîÐv_|Ø€çJÀà)IÖpI\©·ìx¯š´÷œ_Ë)Ûó–,ëØûšå¢u~B$z×æ4Z)ÚÉÒäSjBå� =5ÚÕ2:.Œi.˜†ìzh8¹e’ŒNbU8]EÒqp¾©“gi‰Ñ#Ë¡ ‰á9CBÆ·ßDËÔõînFͤ…u‹ÆÃnûh¦L§"'¿HeHB[šÛ›ËÄ´îö.(x³¬·Oœ<¤v HTéý÷Æx»ÕcË–-ãÓ#ßfI¯€)‘ŽÅpu (ô´®é¼8iíOˆD'…å8ÁPõœc™ ƒ9B£D+ï>œÇ¼%åÌS2sFÛ‘À8èe…4‰'à^•g€ž’‡˜èT×T#=5´3.--g.ÆalÖh^“…[í™\ÌŸ.<ö2*êÐш¨ 4ÜvÛ§ÐH_¢C{ÞEFÞê³[€#"¢ádœæ'ß‹ÿ÷Ø##÷âE¸:Yrîñè apk›¢€Ó%àäþJLËNEÂZšüÆÇ¡€hg\Ú7žÙÉÑÆtCYÍÌ;qËG—##;sæö!9) »ví% zéÄU…“ô•è¥‡t+n—“©æÏŸ3…¨«¯Btd2]†â™Á€ûшOŠÇŽ½¿FÆŒpœÞÞ€ÓEG˜àcOçÐ{®‰ÉsèXVDÀ ää_ƒ¶Iv‚It<ÜèE€åE}e'™«>R5oLöÞWDfyˆ¹²âÂàЀLºð9é)ëƒôé±(;Ö@{q?ÒÝ0cnüú»±xåløøõ¢…‰?*«š‘žAÓ PìÛs„6åL$PÜ€k¯]ÇTÛÈe`媥ŒíyÚõ à@q999‰ë¾`ú•T›T ÔèÈpî»ñÖûOÂí[…(Ç·†bþê58¾÷�:ë™?ƒÜfNùâí7Ž#*9>öeN g¥Q"/Ÿléµf¢¤�ê hï¼ÂàY‹S“¥Ûhoí#ytáöWBÞ‰o>s�n’ÔâÂ÷èö1‰‰ö3'“‹5“DÓ@se\|*Ã!¤£¹µÉØ߆…FÐÿ´ŒÞLRãÓG;Ý`xm¦›5ýÒ8Ç+Gþ¬t-)Á¼y3ÌœíëÓAR‰´„¹XzçuHÎŽÃUëWã¹>ŠˆèxD%eà'¾Äpth£yCö›E䥀ìEú†¦˜)ÙÀ~Ê^#Ì Ð'`I^Ék´æ&#š€kn¿GöÐÒ»×|„‰U˜v£¦±ÜÄ3&Óäb^¢ÀÔ`æ+§È0”IvA +Àªuó �εt.¬(oÀšµWsmHL>e�/jýéûû;é²zšniÕ¨b0úYs²Q[׃ˆ0L_1ý~œsÂÜWm\…·÷üO•"a:Cš»˜!ƒâO: z€ÙN¹’¶²½²öÕÞõö–fé¼L„L(8’Á\áތŢ#Ê™ÅkÒP³ýµLA�Ìš—ãûËÉÙu#%#ÕEÍdÂü6÷·s\õÓW—Ǻފ¡pwŸ‹a–ü€Éæ1È;oîÃÒåùF¸àöa²*fòˆ%6žbHŒh1Z=$S¹3ÒO䦧/Åì‹6-5ÕUHMLÂö·^GDh +^ØT…‚£˜³,‰|™ÿ÷‡rÖø¾tåbè±Úd£l¸Ð&Og~©‚õ¨=ÒÊnÈ›CìqcÕóàîòCå‰záùcñuÙXwó|¬ùH>˜Ó¦·Ç‡’,æ˜Ê‰À wÍÇýŸ¹‘K,4Ut`ÇûG¸¬˜COY Œ`’~²EaØ·£œAaº˜¼‹¤¶¡›þÖý(:v”b¹.d¦æ’û1+›èç`â zç¥`'S>ù…ôàÚO¤£¶¾Ï?ñÌ%î…öéh÷¤à2H¤Y6Y"Éú¹VѾ0܆휉>ün)?ä ·Ê\Z+“pf_)\}tâ)Axbˆˆ7U´cûó'¹Ô C"ÚM·ç`b"}dæÄcÓS»‘;+•œ3çY„`͆,-ؽ)Y!$ÕÁ(+Ö’ÊÄüÜpëüêÑWMÖ‡>ÊÛ,¾ ÉkôµïýÀ]oªkÂôbn¤+u}hÞ}£ŠÎùQdJÜ8Òt®—òhy9^÷V2Xƒ;ÕÓ:$Ù:Û0¥0}ñÂðýi\öÜZ‰ø´tW†3bºü™ž’äØMæ~‡¯±¡.+®Eú¬8´ÑñØÅŒpû¶òyqUÒõ;}ðzN6bçûÇpïÃkîˆÀ™ÒBÜzÇjdf'áé§ßÃã¿|«nšÍÏÂ’¹Ì'Vv[*Ú˜/¥¾TñÍŸ·�{¶Ald>vî8¬¼hNH¤&¥d®D°<#ÝvÄ•¸‹¶ŒÖ„~ÓÈ,+I6“²£Œ¤…,»r#ùbͳ=-Iš™Þ³XëÃù3Ö\ïåÚMéË=÷Ü@[á <ýäïÆeOÑ™j’àäÌ¡Ù)ÉLhT0ÃÞøbs¢&3ý§Èî£Ç)èèBÉáÑdÒ"ð‘»îÁK/>gx<B3àãÐŽ*|ñwcÇ»{±ys ~öøçÇÆ=“*(ñM…3¢böª£Ÿ'•ÀÊÌ}ÌX ?fí?ÿ¨UÀ•áçõÉšƒ›)´Ž¡˜ 70…Åb¬&mî˵'=èæÈ@ZZ<½ê¢7¬œ[z¸<j ·“ëÚYì$²²2¸Hç +”¢Ji•ºH«ûû‡ˆä¸®þ-Í=¸fÝrEø›d½Áxç}ÈÍOÀ½ÛÀ%IŒu‚ƒáø±BdÄÑ˞˨å\÷îß·›Ú¶0_ìäÍÌöd9ªi@6³ µTuà/ú[œlô Œ„±Ê7J±hXJ09%žÓP j›Œ"‚‰c8 … «ýÒŒÉ]§‚Ì滊æ~¬'À—\’•6'ÜÄZ’<±àteȧ0“óiFV‚ÙJ^œÀ<Xò;Z(Ų#&€¡`d.gbùC÷É齧ƒn2'+°~Åtù6">Y¹·b¨R¤t»¿•K&ý¤QàO¿ƒoY„EKò¹®nfÖ—XÌì/!!œkâIJp7♺îÙ½…“MoWsÍÀ¦ÐFTÜ—y»¤”ì[ÉWê‰ÊÙ¥¬Êý¼¡›¤¥d55Œ‚ÙmB/D1b1{ZîؽóŽœ<5ê7Ç{ƒ0×z/'‹Ö»%™$+;s>×°ópøÐ\»a‰é„^¾4–¢Ê Ó_Q¡ÀXLÄà #¨ÐG¥"‹•áµ“@Uz;JàŒ2‚akªùŽãê!Óê>ꡆ!œžyú ”/À#_þ8êÚëðƒ¿yÿçÛ÷¥E(ƒr Â4yÑÑ‘øÑ6áï¿OÙó(¾R!däü}¤ÃögÐ_¶@†wKâcF@.Õü|GC‚N'•íà(×ð~äf9VÉÕ·S!Òc$pééiˆâ`ûîýTM6÷› þx+üõªóI´Î‰dKù`¹í ø®ßL‘aœ rš ¸$gž¨KÈE *ZkK±—a(ˆÉ…g*pìø1Œ�fEx‘mÓÂųÑÒйÙð×à Æ(€v¾mÌ€'nXJí/þé÷‘™F¡Æ4”Ÿ:7§‚›°þö|¬^;×�(5‹ƒ}þ«ÿÝ¿ÿî'Õ拃ìAdýø'1«jêä’Ï—J +h±1&ÆC‰¤á’¦H[VŠ×à %’G{Óûq:’éÄ©Aììÿy”¢TMŠ“P,‰Öë4}Uä²"ûh[&ÄE§$¤›¼«þ$‹´Èì§Qv0ãÈ^òæ^®Qûx.ˆê¼½{3¬%“¿S{—•›DÛ&æjlg€CrÍÁa¾üÒ[ˆ‰G¬«sÙÅ’Ú°‡óõ_üÙ¿3„@2n¾c ÅžOñý LHÛ‹U7¤z,61‰: +W1ÊJŠ:܇m‡Ý +¨q¾ÊÔÌ%m¸n'´ ×Æ6„‡Å»¥êäyþyl©×]& zã;47³Í¡ˆ¢áŸñ™ö„F“IÃÖjôòýÃg‹†=²öXöÚ„nt›‘$Ñ`Á™*j6(˜� bcý©ƒ(gxO¦Üúê!¦hä� ¾xÖÌ,º8ÂäœÍœC]q×_Ã|—±ÄjŠ[Û8÷ÑÂ’su3#÷|ë[?ÁßýÓgp7Ã¥q9uõ²µ8| –ÌB'ÝUÏ–1êOb“ÃqäH¾þí{Ù¾±,‡&†/jfØÁ`™ ™žbç±·„¡²ò(-.ä@t‘uP²Öjrxö3t™òù‘Z9Èew1RX.cÁÍ[˜O +à0SOCö·p-þð#|Y€Œ´IÖŸÂbí«¸öš l²ìµ a°‘ +æý馜8-#I®d"ÛÒâ‚´ƒÐI“Ò'Æ^M™…œY)dªÂä£QaÑÈHOB}É!—:~¾ýÈ›6Í̾œsÙ¡Yä²ôd)¾òÕ; ¸º941ÈmDT"6ÞêcÌÎ~ýó¹Èâ·:ð輆?ñ—¦Ñcùñgˆc®êÅô˜â$Lñ'™6Àã åtntÚ¸’¹‰2)6]l\ +©K'cR’É$¥¡¢¨µ1>G,£™%$F‹‹Í{ìxñXª2¦{ì’HaݬÂ_¥ð×ù>Ž‚ XFiá4œ¢@"œ\ä+¿—“|8Ú±jýl,_9—Ùbã=‘´î(<QÉPQÈÉ¢º/?’癯˜¤¾þ&<û»ÃˆfvéU×ÍfبX2+¤T¤§¥¡ºš‘\HÆ™›kæ¨g–ꤔ2xyŒÓÕDÀáóñ Ò“µkÌ¥‡Xæv3º*åæý܆qjÐüªù6˜�w‘ð¡ö‹07€—FK ¶ÆhTá&5Èüss`Ë0Áá Š…1½ãKa×¾ƒc®ÏXop½‹MŒ¥svh_ÓÄ�ìÃ%C89W…ÀëîjÄ-·/£þ6ÒdR´GC*¦ëªEQ[ù:—Mñ4¹éãRâ± ‡™{Ó°uË12(̼]| +e&§]¬Y¿ÈP†žNá±BTÇcÔkKW3Í2uýNt”´às«¸DÝjÓÍe4!=dôŠ¾†á“TXRbÞ% ù9)}kf=Èp1T§’冇Er]É}šÍðþ +C” ˜\«™»Èl¸ù^Å=›¬bÉ®¢Ž½÷õ+£¡´IÚŸýíï|€é Þ5!†©"Cå SÄ9 ”$ÖŸ‚ÿ踒o‡!'ŽŸBîôifÔ«2=ˆÑªfT½“'Ê(‘MU(¹V˜ö>,¼š$›1;]Ô5Gqé3wý*œ>t«–Ìå@hÃÝw^-$™PÑ4E°Ð�FÔK'Fw#2"’áG=á’4¿©8¹Ž$•ê¡ÅI1<ÄA«‘Vƒñ"ÝÆÆŒƒA³1Ä÷ÿãǬŸÇÖËó–‰ýZ.Z€§¬ùV¹í¥?÷´÷þ„�<±êN=}¡=`lŸÓà¶Ðž;;!.úü—M_ܶÚ4 ú’<lѾ”þ¶Xr>¡9ؾlj{iz@YU(\*‰[@z“eéŠíµ)}i`3)_9ŸDŸ/µòþˆ5íù£!Ñ’ÛR^^aw¯¸íY"L¦_=P$øð.öø¢`°œ¶å¼% ‹b=·‘Ë”£YI5N´yîdrUììäErf…`ÍÊÊ¢AÝq#=;c“9Ómóê%WÎôí-[Œ6JÑk¦çæÒ¥³ +Å\Ê„P !O +&š[ZÏe˜òJ¬]·[ +¼›Z¢:æOžŽÃL^ÕFP/¿yuz^?U‹E©8ZÕ†6 +RnÈ +5É°¼;ërÙ·,²l„/$ÅC‘h«i2÷ygº÷nˆô›žQ@5íè?·ú§ƒ[³Ï'¹4×y¹â닼_5µ? = qh›ÂörÞUñ²=ö¾f—QÃ2YF["À +”â€*@Ö™¯½ÇœÔ§ÊeÑÃØm0Øà© hþt$@êØî›ci‹€ÿ²h÷X‰³á“Ty‹¶!ÞÇv_ Àƒ�j¨p 9Ö«�n·€·ÚN^hý+²+½¸Ld-Eª-9>>–EÇ�öDR;\ͱ‚©ùáæ,p ë¼Îé`ªLzX…‚ô½ÖÚ~Ä££ö˜Îz;t}X�‹ÜžD@-ÀϪ9?`Û瓾åBÁD¹“¥‹Å^}ÄîËÎMÀ÷2æ0׆p?Õ_*f^rz :¸¶rx0Ú\×üËsSlúmò|ŒalÀ´Dò&ÇÂZ]VßÕ5aµH÷Ù•òy5`µTZ˜‚Êo.ÅïœmàÎ�¦ì’7>¯G1]§¹FmÆ‚kK1gSøÎ?w’»Ju¦€«bÅ‘Ú0½=DÎ\•a0˜&!¸"ƒV!šÜ+h‚"ÁÁ³ÌÃsGª1;!ßØt‚6Kæ]¼ÿòC_dS[dü7wîƽÊ0•ýÅ/£7E2m±×ËO`ÒÀHéßÀ<v·Þt“±Øе=ú“fÍêUöV³ýéÏA?çtcÎ#EÿÍ7Ü`Î+ÓðPeßþýÆ8OÏ(±Ø…#‹æ‚…µ½²ùtì±ÞgÝ[„É>C:èV_1�0ÏÜkˆô�)¤æ\T»eç4gÃ…Ôû²¹WmlÏ8kå›cœ¯ò±š)©¸iÉ™íÜ+ +¸Â`o²-pÏE#Ï&Ö9h¸žÒ,l¶ª‡ŽÊ�ŸsÎ^»¶j“¦ý èÀRÕ5DÀVXèOÇ“YBh ¦n?ß\ÇZßòÞ×çåéï?«ójÓGòl�©ø§æçÝ÷‡ph»©À…ÿØÙ8¡&ýìæx¤Ððb�Yj¨:{"éƒm’háiÖ;'˜wËÆâ�î}ÿ•¼¯Î’‰¬ŠñƘ@c»RÀ•[Ž7�&ðJó¨•E{+tA�—ý•ì°,ðÍÜ+&Ç=“5Ñêüñ>o¨ÞEiþÙyW¯·ÀÔ¾Ô†ÞªCïkÃ.“ôàT¹<{À2Sª÷¾x%a²-º6`Û—ù¶:l-‹Î/"Ñ*â°í¾½gŠDÛž8o»ƒ~¾ÕÌ÷.·ÑxzKÊÀ ‡:Ù7^Ï8Ò;‘K/Œú$]ªâ࢕Cv@%l>íMŽ½÷uQÇSL;b2™,¹ÇŠÁš|&«‡ +ÿ³\´ü$ŸÀUDŽ-€µoƒ¡]þì3‡hL€3 íxâM¦~&ÚZôœ-R.ˆ0›‡bìd/á‡Á`„ÜÑY 8ýÙLó–©eÒÙ콋‰Áä¡.¸bp§4v|p¿à7þ< œ Š<ÐÒʈµô=j¨o`’T,]²o¾õ6n¿íVüûþn»õdgf^ôVK,‘¤´u6–>êMŽu^×½Iõà\Y[¤¸³ò)Ì.+=´FÂbɘ½h÷µDR4Z 8,ð186*b|-šzê’ô€?µxÒûÊùÛT¶û¼Ò»3„Ì`}tmðhóû{/\N;••½:)îÙ»ïÑb —HÃö¦ÇfmØ;.Â…'¤)óÀ›Ešõ§"‡°Ú—<ZeÀÙ©Éöú„·JzUU]=˜ôêÚn4ï|úÙgñèOföoºí³ýÄ'2õ: +4çÖmØh¶_üê× g>û¹Ï3bí sîÀÁƒø»ïü#~ÿò&üõ·ÿŽ!úOákõÌ5ûsÀŸ¿úæ·ð_ø"~ø£›Së¯÷¼÷Ç?ýé Bþ¾û`¢¬xæ¹çðŸÿýÿì£ÆP_ûÖ¿×.¥šè'¬(’7_Úâ -ayi醕yEEX-í‘-:¶6\r€vëï¹×·š=fƒÆ]˜µÌ<ëäd‡Ùÿè'îwÿÛþÓMà»Íy¿�÷Öwß=çtçÏ_à¯ÝqϽî/~å«îu®w3;šûÿõßæ^f.3ÏÿÓ÷¾gŽ¯^¹Úl;:AÅó-ûÒ¯ã›nf7sÿäç¿pÓuÅ\ÿ§ï~Ïýà§>íŽNLvû°~*‹–.wGÆ'ºÿù{ÿb÷–†núÓÆ€x5‰¥³Û'Á§½óì~[G×9p³ðÓ¶ÉÕa‚7Ào\}µ�ÞÆÅÆbæÜyèëp¡âì<üæ±_š@'±´thm¨C·+—/GRz&¶lÝf¾ƒ#ûöÒ¡<Oþê1ãÖ"÷—ääddff˜{þáoÿ†n.™›à0Ç=p?òæÌc~‡2tTQç$uRibh£GþüsdN"Éß\W¬ ¹Ñ(Lƒ‹QáRÓéðaŽ×]kž»¬¨R¶WÞäXÇÖÊÒ›l‹”+ìá }~£þعè3̯¸{ÏnÆú +2>Vòƒ +pà£wß×7oF6}©$ÎLd|°õëÖvßÅ⢻˜@LŒ”ŠäÍV{äm¾£kºÇ’k]›°é”ÉÓ_L�»¨pðÎ,€ÚâíJ*nÛÚJ_jNÁÖgj{Á= 5°Ç|Jz“caª·Á»7\_ð÷¦¸Ä=à6K~íúW•„Ëß‹«÷¾vQ�¬°JÁÁAƒf0Ò¬4*›…%R3¤ b—kÙôÊ«hgt»ÆõRu6™¾Î³ògâ½íÛqÛÍ73„”Â:]ºb+MRð€Ý³.I®ì5‰µLRQÈÿK2k^²™GõaÙ? è—Ké›,›¬‹5[³Y‘_‘c‹¥"Õ#™Í^�_.€®W€½¹èáÚ1Ôù)&k¨^¹LÏ [mc%rl‹÷5ïðJS�¶=4I[ɵ'Ó\ölµ<óª…©„’M«x"蟽S`)W™"Ñì‘hû'³öÇSXÍåÖè}2=^=!.z×ûûM?øP•åãÇ<ÀJJÅ°À>ì)âdòŠ6úÔÄ'x”ÊÍPÃ`£ + îedV&£ì`¬J_ê9ý=Gœ¾b\vÑQL"Eu´þ"Eü3µtÑ0dŠIÓrJ–Ó‡‘]#ÂÑÏ &åê¡ÞTat¹jä;¤œ#™i\í +Ëï‹‚âãCÂÎØn‡¼i”“{íÖÞ>ùƒ{(v”S™ÆÞpúà¡°qXê²›×}Œèƒ„t†î諉ŽQüÇ œìðè¤äÍJ`´Ù¦Ô gpð:ævâ0ó¦¥0'ÝN««êˆ.©±ñá¸ûžÛL°ÏH†ÿïä2j×® +‹úÚJôû2‡Bg)Õ'l¬_#ú æþÊ´ï…Ó/Îxf(-er.fK›6/eŒÕÄã–wÃíòÁ¾s§í÷K¶/Eð® 8gØ{Þµ×tŒÎ'Õº>n�k”ÒŠ«oËÁ¶çÀHîV§áÀ»åˆ‡“ÇKÑÁ8UL)›’CÀ€1³¢á—Lµå¥•HJF2c%$$cîœ|¼û.ãM3îÕÌ™¹4W Gvö4œ9uš×c°tÙ|ƒÍgNrÛ…Zצ‰meò‹lÙö,fOŸ‡ü„ULÝDóš.œÜÙÂüMT[2a•®&f%oj³}rÅmƒ¨ %‚´K$5Â{ßú&ÙÆéÚ¸™,JÚìáN1A¤®LǾL€Åìßý~íðífÊw‚ <ÂICÛ:¦víFeq#_5¹3éSËTìQÑq$±N¼±ù-®ƒAÍü¨jÃé‚Ó XÇÜ•Õ(-)5s[¿lùB,˜q+©ÓË0»w{_#š›j²¸µÕLté„DZ˜¨R–LªÑTAsVëÈl{àŠÚršñ⢵oÅ1Ø}5IûÖ�~Ü�Ö‹ß”ÙC}™Ì‰ƒ;‹pã'–cùúLÏKEÖ¼P†·AmqC2IVCß +×åcúŒ,ª¸Ú˜�ƒùN—p ø3ÉT´‰Ç,U_QI+£¸‹YQxýPÆrÖ9%Ñêf”ö.’ƒ˜ÄPøø‡aõ†PÇóMuµÌõPÇ!G’Ìy»¯Ó…ŽÖj´×SAÏ{%ÕM˜³8[Õ¾B‹Àx¶ˆ§¶ ?<üõÙkÚ_£2n-ö#ÃÓÖNRÝÙÎDÏQxù÷²3©ÿMAhL bÓ˜,!Š‘ÚCQQXO@¨o½¹ƒNzèÄù7�ñLÛîfBè`†vOMMcHÃC(*.&æV"’âÀPV“y$Þ”§ƒ {1;é¯û7ÎÑnê—3¨ïgÞˆ¸X¸˜ÉÅß·‰y³Pz⊠+5-0KJç‰+¸EŽvÒûšÝ³9n6&+ýÌsÀ$RÔeàL“[1ƒ‰ÃŸ¥1Q1ŒŒîDÖÌ8d3ËŠ›ôÆÛWPšÍpø¡TÚ§ )9‘óm6ýþ ìÝuÈ0 +‡buéìÌwʳ–ÙD³sf‘Ûî# nByy%I¹‹‘à•C˜!…¸`ºš"Ô3¹tcCjËÑD£‚D2rË×݆í[™4!XÃ^«ð×ú×›K¨¡*:ï}“ëä a°RÀµ{C#ƒáÓ€>tM›Ž0fVi,md°ÐvÜpSo8°|í|”smahZsR¡îçWË48'™op:J‹Ê¹ÔâòŠŠíDÆ®ÈÉÉa@Óƒ†;ßôòL¾ÅÌcä¨KŠË)Ìý¡LðAA{x4|õÈÊ\Ž×mDCy Ši§US]‚úš:&‰ŽDxB�Z›ºY'&mºB‹õì—·‚Lcm÷lcr1ăòTÙb®Ùƒßú`Ý]9haŠõ`š^ùPeUZÚ„fßöê±-ð ëÁƒÇQñ\ò¤aû–ÃL{-î;„šà´2ýŽ«õÄÒðÈÚÌDŽ•Á^=#Ö.Y²ûöí£™ÒÉùnºs±›ùŠ›ÛZI1h–ÓV‹0úçÌgj½ˆ8'S3ßB#sX¹9§“²4 ©Ò7sI4‘Â\©EÀ²Æï67°Úbm …Å´7#©kã&Ñ”`ë³8}²»6—¢„$ºäxC3tpT,nø*ÌäZ4.6 +W¥áЮ3HÉŒÆk¿ßPr¸ñ Ñ8xà4ɲÓÊVaÖ¬™ÈË›Áužb<1' ±yçŽ=L4ÉõfÞ·ÿÀ.¸¬´–K¡6¬\¹JAn™L’Y°™ÃÕèôÓ è4ì¢WH¸ò®ŽÆú[Q^tF—¯ÐÂ$ÏvìMŽ\k&«ÆéšcN€DÓÌ5–)àZé³ÚÞ˜ä(ÆkvÑ ÒûNsntãªå3™¡³‡Þ«€Ã/$³™9éعõ8ö½q‰&¯aîô¼²é“%1) ++–¯Äž={H zi•H]r ×Ñ.&Ð +Ɖãg8R¹¼ +e +;&åbŠÚØ0fr t“7Ân¤a’j¹{Ú±yÓqä0±ZP)�s°Zs÷Š)žHvV×kLw„Ö,F�B +j‹È¸Tˆ*gÏÚ«cÜŠ OL¡Â›˜µâîéh©íDþ¢½y5U4°ƒÛp˜Àívõ{ŒàáôÉ*„:c(Zt ³Ë & +S¿t���@�IDAT?r¤Ì,‡:™%¤¨/‘éª'†v03iyy9c5&«®¶•s4S¾64“ÛN¤ßP9âc‘–8Í x剧øÎV“EüÔÞ÷áîE)¹÷êÆZ¾£ eÍJRuvŽcS/›Û8q8”ûÖ£ß^Óu\1`ã°–I½$§Ý8øN ªËš±{sMcý‘7;ƒ×zP[Ö‚>&– +æƒÆBF[¯lG¥JÝLñ^WÁ\€M¨=ÝFN9“Üq'6l¼Êˆ?1¯££¨Ì-ÕIÇ8“Ovu1OPO?û߉ýMpÕu œSBFz²ÎarjêhB+@w…e#*>ÅEÕ”}£Å}å†ò—ÁŠ8cTØ"Ý*Þd›à1CyÜ�Ö*ÞߌÐp_$eD±£ÉBw+›)ßrô¡¶„ÌÊHÑÞØÉ´í™d”¤Jã¨ãùnå\´EwUQ~Í +x¯=mþøÝ3;‰Í”Lu¡ð49k†M¬*ëÀ¥¨%ehgxþ.Ú¸+¡V×ÔIIÓ°{˨¬(ũÇÑZïâ@iFZþŸaI2hiy‰z´S0Ób:âJüQœ,qÊv«cí[ìÕ¾½¦~Öþ¸,ÎœOSœ”®§TÉÑé!ŽíG}5@‚›�Osà·×#{v,ÒæÅsÂ`¤óVãbðÀ—¯Á}ŸÝàLaç¦@ãêó¨@¸Š˜gp¨™_i¿Uu†ïíñ5šª¾~qÖTÏñ8>!Û`l2eÚ½ÌBš”ŠÚZærcæ‚8¦™Ï6Ò.Ï8W·\™Å{+fË{²ñ¾f,µrÜ�ÖÃEGª˜û׉¹X{ý<4Ñ5'7 UGÉyQã³î¾ù&Ëèï»Gö”`“U&gÇP釺†&TœhAQVPSäË +/Z4Ÿ|øNtQbµcÏ~“pßžBÊ”ÝÌè¦x2Œ >ºÐé"¹¢P ¼ñÚ[“‡Øô4JÓ¦Áim%#wÓè僚¯bÂfìÝQŒÐËÈL}wáÅÃPY.Z@´–Vîlß©{ä+¬2n…¿Ô…ñŽ¹Ä\_D&3Id‹€àÀ¼%iÔÞD3g�¶<w„äºmõÔS¬D·•n8cƒ˜Ã0…XEÉRw�ÂcBÐÚ¨Ì,‘¸ýž•xëý\^E0uüiôS„ÙI%P4¥bÙÙ™8vô4z87;)Ÿž™×‚ 7<€ù‹çQ¸Na‹Çè%øÞŽ”U¸Pz´ÉÓ#Éàq@«Âã[ÿÞöÁ%ÝŠÚM´ŒWá?nVû}8Jø?{vçO7rf§`÷ÖL}ré÷ÀäîdŠú0cq2ÎJ÷.$dE"š¾ÈÇ÷R]˜‡ö– +0ÂqÛÝkQYSmï`îÝ2Zü�×6‹çÍŠuspíÆ¥Ìl‚›ï]o„!=}<LCd-™5fez×pz(¶µ0ZAe/²f'`ÆüDêšxù½Ç&ÚÇêóÞcÄ›{ï+U5ÕQeumÜ�Ö$îKÕÞœkR±ûÕÓ +óÁá·O¡—LVcQ'¹g2SµŒŽJææä¾bë˜zDCVÓ³˜b–òF1KÁ‘X0!Ã%4àßz„‚“Úü:¸t*ÀüùÙèéïÄÍ·¬DEe9öì8 +9ïüùLëÚôÙspôôä_5“1×Á-¨,+G4ÓÙ†‡ ®œËµž`.¹ÚÑÜWô¡h¢—-´Šå˜½ßg½º¸º°ûöú¸zA ÂOî-Ç¢53ppG×´G’Ï*ëâãç §2fÅcÆÌlÌž3ƒÊ‚ZøáÔñBD¦8(3®äÀðÃÏm&p\Øùîq¬»n1¶¼q˜ÌS.˜Íe@/NŸ8ƒÕ«®"Ép ¹‹éß››1gz7åÍ唊åp~?€Æ²êf¢ç#§ë˜©Ûëoœ‹[¡1®3Óc9°.”Lú!’Š”¹sgS§bò$;˜Ò½‚úæÍoneGjN¼tl›ÂbqÌ–k,×|þ¾=÷¬y%.x¢#ÑÛ¦dÐ=è¡ÆLJ:\g”îÿÓ[¹Oqæ[˜{7ûœ7i¥ÑÒÒ*þo¸Ž,sÞÙ¶“LU79å�¦^8©IH ¥¸ 7{ûÝHKN%ȪÊz¼úÒväDâª[ï'óNà†£àçf8H#×6D O Ö\›CLÿÚ¯ÞÁ³;ÿMmS c>áÌÌD“²Þß?Àd·Ì2~+°ÔœÊwüë'~7ê;'köŽ“%»,Iµldw‘clí[o‡qc°*íËeJSe%T\oÑ6Ë„ëoºšÚ%üö7¯1E\fÍO# }ĸY9Y™ÔÍV´ûÓõr'²221Î,DD†¢‘Ò¦¼¼ixë÷ûp¦¸”&@I˜½( u4×É7sm7D#Óäe¦' ÆÙ€”¨jŠâ(:‰-oï‡#(¥{ð±¯Ãž…ä©fG¼¸ó'£A7p•Ž0®7£Ãõ\'ýŒ;LFp¹ØùI>N.»LÆóR7î»÷Fn<ýÜË|Ã…R‰1Ukà&mŸ6Kß«2°±—ÌVó±ñY:çìøëDbg/JEtd,b¨X8s¦ÖRJÓ™DG‡`ZÎ4C⚨ˆŸ6=qqqœ8QY^M`fS/<w —QIqTHlC }a4Ï™Oà72ü>1¸‡XðFöÃíw桲²Žþ7¨eÀµêª@|ák«ØÙœ§HÖçÍ™‰ˆØ`ú2%£ô½7¿:¸œ2¬Ig?ƒAÆN+¬ÊÚ*£Øæj@öQdš’šâ1Bàêá®;¯e¸‰7؃£|èûøìígÝUtÎb«öÅy{ïƒõâ€à~¬Ü@ñ àŽ)…Ÿ£˜ä‹X;/™Ö‘Æ9Zñ,¤¼omãš—€ ˆ9#² “JŠi¹™˜37˜ªÆJ¼·õ}Ìž=ÿ“[Ðáj±]%”X¹Œõ‡ž÷%¹TjõÔh?,\²†Ê'º¨„.,*çËO=þÖ®Ÿ‹wß;E‹s¹^#GO™ôúÜ*H'ôþœ„©¹ +s[øý¶šjSg©a9¨Ti#ÓÈUˆ‰5ÓO»O?t~òó'Õ5“^:É@)ŠŽ˜(qʈÞäXd[mõ¾6n.Z-X¾a:j9'îÙQÈÑjFúÂÅ3Ü.ºhÎÓn€*%~,Ã:x‚mÓŽvÏ¡Nfù¤|8œXîtcÅÒżÞOSB$Ç' .2 +V/á95$˜�§,ÚEíT#ºÝmxåÕ—PW_K6Ç¿{ê�>vÿê˜c9_ûòÛÝÈÊ&¹.sá©WÿuÔÎVlt€žÝ!JÈ?1e²Én§ÐÅ—�÷#‰ö§µJ7•&}rá²Ï‡LŸ¸÷�Y±øM ñ©oããêÖ!ëk•úV›ä}“0XE6Z»žüwMDÒÜŒ{A£stø³#š±~ýU&*€‘7s&ÒRS9ò} pe~£¢¨qzÖcvCƒwÆÎî—AThΓ‹9ófrÞ£]]7Eòcb¢Èù[ÏHFýâSïØiÈÏ›C†*Z_ø"¥_Ýý¼?†¡¸ñ–ådaxóõ}èy¡ðµ‚IUÄ%´¾¾L#ç2Œ”¬'©¦ì'׬Á¦–GÝÄ>Ä|EÄ+åòLvÉ--íø³OßÃ÷œßÕ#Tb—d*FOõµªÇì¾0W‘u¼MgumÜ�ÖÛdeïž“¸zC:6Þ´ŒäƒÒ*z&ˆ;IÞºèe N¡€ÙXIJx¡ÎÐìÀDÚI»\TåÕréÓDFŒƒ†VõµÕ˜–M&‰Ò1æfŠ¢”Jw‡'óCŠG“3Òð??úÿðü“ÇØѼñ3R¨Bt°‘YÙ 8q¸›žüí¨S¢�ä':@’¬•È³ÓÅeÍ~Ýþí®.NAìN7·ìå@ŠD£#h6DO RRe3ÖÔÔJ +C.–üÉä–8YÓH³þTD¶EžmÑy+ð7€ÕØZF®\—‹ÜÜ,.œn(×hF +%sW5¼–vQû÷%ƶ£vÏ"o%œo( ÍV%ç‰1I"éfA%~,m¨C‚Ã((á`‰2¦;´ž¬klÆ”iÇÄ80Þ[ß};^á@)•¿ÙɺHçÆïúâÕ7÷áxËfÛæ!·¢ +l¾téã’ÇÇèYýÐÆ© ó¬0ÚáGk·âTáI¶@AL-4kkk)kgÂ0R0¶WEÊ’Æú&üÅç>1ä7ÇR”Å£Ó;´<²vZ2†·f²º&rn—Ob²²ób‰9á†ÄjÙTTT‚¬ÌLv¸'µL€l‚ø±®kEZä%¿w÷1,_µˆSE÷V$Äa?v¢±[¾JññÑ|c.s> õ¼¿¤¨Œ2h`þÍÙ8YPFÌiERI¾+€§²ê(.kª±k_rÓò±cóVööÀpW«‡(pˆ?×è4© ¥!&»…¬¿Hl¿[Æò0ó4C;õrziÖsÀDPÓ¥v¸!´ãn—ï?ÙÔØÎMŸ+óÆ!><ÎSÖ«_S ²"0ñöš^mƒ I!1n6£ßÀ—kN¢Ÿ*À™y3Éy:D‰}fŒD‚[ˆ ÝüØK¯m§#§NŸD$¹ì’øp* Š+Š±®Øâä¤X’Ù€Î$é 4äù§ÿó2f.I ©¬?Õˆ=\VÍCÕi �b:I¥Â-„Pò”@O‰—_Þ‰m‡G—=ñÝNšú{@@ò릟‰N©Q@(M E¯œ^”F>!ÚÃ,³kZˆòªhá’Ö¤äêÉp �U•¸îÚÕãå³f³"½Vl©»$º´âKo²±9{Ü�ÖË£B†è4zÓ+**̼ÜÇÊ¥¸¸ŒÆ¹6 ?û鳈¤D«èL ¢Õ¶ÉùŒsuÊ24šý)îyךVóÎÖ=\£RS•OÛ+*&\œ¯|VÆ�q N’ç.3Zû( ‹Â‹Ï¼@‘¥¸9Ÿð»!!ô’à·ÝLx¥u®˜>š:88u8Éñ»hmÒGg·zºÕtq¬zq±gâw¨®¥œn4µôë¦åI×æWSË5YE!ýU¼I³ŽE¦èRL•eºTÝ;>â"ƒØ¹íl(™v¸˜‘Vb¬›7í óóÞ¶]hkîFļ0‡ä«µ4m%š7–-[hæÂ>JÃú9Bû88¼ `’â¼G)Õ§?Mrcðú›¯ *< ¿øỸóþÕHdòLaœæà°('^üÝ~ì8ò”Ú>j d§q!Ʊêb¸Äª¨ƒÚ¹LÒRÉIݲMª»»ä!AFR%¢3üˆÕ!ÀN²X!äAÔÞÚÚf3Ø{(~=yâä¨u¸„¡†3VåŠ]6‰Û9Ù’m37Û/|+Ò¬Îð#ÖöpýÊyQ19DË¡,,ÂpÔuu Fy@µN(#æñ v¬‹†xrK‰O Ü™Ñâz)êí•N/ʸähår£—¶÷À1ážKiVZ(ìX·f5Nžl¥ÿS^ç2(šëkRDbŦÔIÿà»ÿ8Üõ´ÖÃÑ8\ê±-Âú`Ê¡Ä~>—‹¶×dÜ1'耥êcgT¨aýˆ¹qTvRHF€fˆØÓM,Ÿ¼âª•‰{“ãóÃ9ˆd[®zB$ÚŠÛ÷ÎÈH5²ç––Óx :vïÞEn¸›‰Âc4¡ ÂôéÙT”Òã€ÇþAh¨«'™–BŸæ®tPó' Df%8i¢b¢Ž‚ë Ž±%ÅíîØvˆBʦc¨éI%SFé h¶K&ëľJTwSŸjäSÖIIUëMnœßî"-%‰œÅ%ÍÒ2Ïc—Íìb¤&t1'Uò§Ug*’âcÇu:)ŽÈº�Fûl.ã¢ÈÍOêZØ#ª´ëMŽÅdYÒ¬ÆkßÄOÀ=].2F!$˨®¬¡(ÑÏȘ…Òº$'¥¡¾¡“®¢ \z(å[Êh»ÌyŠ ædæ1';[kÜ^bŠç•2NV¬^»ÐpÌ +PAƒù«×,Äô¹”G—s=LGµÔÐdw×ÞB|ë{3äz,&È€OªÀV¤rëZEð»NbŸƒ=£yVd çe—xÂbƒÉ-dꟃX¶Ú”j³GªD¯áAˆ¦–…ƒåb‹z·0Ù²A?%Sœ¬ ØŸ@IKO¥í2 ÛiMÑNå~áé +2R´"Vø2¬Cjf®¹a2§Å9tEIÂèä½`a>É2(¹JÇÛïï"`)r|îÎݪ&…c\z´RsÔMÛhqæáô0ô¥ öéS øݳû)©¢Ô*: +¹´˜”´éÑ”çÙÆš—Œò#†®—äL&ºDBš Åa¨‡ü£´4’§E+b |‰)š“ýÉAký,ըĮ½\³k.— ´PZ*œÅĺ÷œÚ{sÑgçeXQ‘–õpÐ-"êãf²4’ËK«’”HkÆ>_¼ñê>šÕ8QX°9Ó3±èª¹f=[OkäÔx’½>;P‰ÐY\U’´c‰%IôfxêÉWpý ËUO.ƒè¾B’N-I‡Ú\ZöSKU€ý;KȘuàž–P DïÃ.TœêÅáò7ÆŒ½æ#üÇ,ÀÉÔGÉv"†~ÊÔIײÎòØPi~`Èa 8ÞŒ¤(±×¬™õF +4?ûHvÂå›äcçAB·³ØÄXV€a_s>i¶ç\]7€µ¬è"€º¹dð‰$CA.öºÙ82 ñ†œJ`/ÎTʇdº¶Hd±2Ôp¼5U˜=7“^ +m”vµaú¼lÙ²›ÂŽ`ªãèÐiîS\èÎîbå¬!t:£…Æ=.3$?4Ä#"üæ¿ÞdÖÚ=L'„œø‚ÇŸ<×”œ&›LèE¢x"™'ª‹K1 :alÃA ’,‘&J^qE"£BàâªÂ+'¹É,–‹Ö;ÅH‘€P&ãù†÷5ïý Õ ÀáC3Ùd2Gjb8—,±Æ6š¤³›¢?)úµ&â<«”çZ–(Þã±£E¼7Ô,•4w?ZŽÓœK;Hb~ýËM<® s™Ï>ý ðJQPP‹ßÿn£4â®]…ÓŒ +0cZ2]RúðÙ?¹}\À5Oøô’»/-¥ëí©;©…r£5¨ô'^@õ‹Šˆ$¦rsÎ%$P§›‚•^R[D¢5�ºz:ÙùüpÙòÚ[íåIØj0™Ï›8gÙ`©|ÅÊ¢ÇÁzqfVªé�_ ++âãcÇ=W9f¹$N²—ôàüæãdgôP?KO„„0|äîõ&šN}w·mÙG&ŠúbFÂñ¡d,)=/¾ð¼ï¾kp’ƒáÍWà–;¯ær¬‡éÁ¸fÅL”¶â;_û6yÚñVqu+);ÕiçÚVs¼H±‚&‘ÄJbÎ垘2’ä¨%;'·a!Âh |¤Ê4ØÂëéÉ)ËJ‹¥3 ¨¿&V†Wø‹{ŽTOƒÛZ{¹Þ¥+hr<]X$äwá„«½ÍXIööSøÀó’áŠôiΓEÒGS[bÀò•ˆÙ¾ÈŸ•Fn•H-Í"iijj'ÆÖÄûcö¼iô„Â&_¬]3 uu½xþWoãLÝÄ1¤T¦›õ HͳÚo¤a~0•ÂX†0SZZ’Râèšš‚ðèDÃh)ž—8j xä#m8mnŸ}~Ó$ÎÀ’¬"Ô›sÖ¾š$ì8ÿÚ¸î&6§ž¾Ðh•a¢äþ„æð™Ï¸¬ã€´Ø,`OøB{úCº_ž ®g&{%&D¢Çþ™©;'Þ´h!FÚ"ì´ä˜H;¸¯ë:o5Lb²ìǦ¶—¢ìLëù–±¿@O/ÝÃ`E<6fÄx%P<ëµóÇ”VÇ«Ù—íîpÎg"ÛZ¢ U´”š"ÑCõÌexΊ*åÝoI³ª)†K€T9‡lóXdú¢èÿúŸš¬f‡ÆGZ¥=)ÖaîìÙ´a.†ë®Å˯¼Bc»³îÔRK¨æ–f³ìêg…µ}èÁðÔÓO›ÊßqÛmص{·±^I’Jn.9KÖ›e‚”ü׶BDÓ³‹Ï/¦ëËÞ7_4ˆ¸¸X.Ú°jå +†zHÇc¿þ5²23iV†ô´4OM@nNŽùÎåúcE•²ÖRÌé|-9–É:Ÿ ©ÚrŠDÛ®º¼·"Ñ’NR¢6Téæ VÂJÁßÎ˃9j<š‰eE׬[‡÷wì0FqÊ Ýæjc»ãÈŸ™‡ršùÈ䥲² +«V¬ V•Òԧظ…ìÙ³7l¼žöÒYæy\å2” òÂó)è‰Çp??Ÿáˆß{ +÷PJ™bŒÅãŒ3èJðK|¿„*2Ž›>=—òìf“µT潉”›«´PÀá¤ÖjÎìYæøòû‘¡ŸB)ÑΊгdZk^—FÉXêDÍË +˜öÁd]î9˜&c°ƒmÔ÷¡Þg#Ýéš1¶@áKÊdyÏCUr¨sšŸ‡+ÂDɽmé”BÀ«ÔÓ‰ÍÎK:ÝN2gK=eãµm´ì»BŠu_±k\U{P©àÅJ[«aùE!Ñ;wí¦²<ÊÈuwòtAV,[†Ó§c;Iµx¾„¸x2^µ†,K>-Ò,¦K¢19Ù9´‰2æ¨540)¯#£&m”bbí`¸¥…£ÉäݾTÍé›"Ç"ËÓ!ŽJ„*Ú'Ÿ¡‡ÿܤ03&—¼%Ä„ÉŽXÕFùmÍmkyŸ“úÜ[gƪß.»bS*N–ÜF%¥¯Ú¡co²yXÅ'÷Çenw7ÇXúiý`1Ñn9›ÿú1ïxû¹ûgï1Ÿâ=溞ñìîÀžÓÅÁ;x×'ãë«SÆXË©Û¦zàÃë.ò{m´°EÖ®–ªj¬{›\Y½îÕr×›:{_“-¼Uköµ6wL¡M–šAÔâW½ÑƒtžsB?S°SGgÞ{_<p¯ÞkwϾìœ÷x¦~§zàrî³ +½ók)äóFLïëgX‘†÷yí{{&y_»pælx "š™!  `Ý�2ŸEH~jàœîöü÷Ü{öÏysÑs»~MÏÞÃ3´“˜*S=p¥ö€Ö:Ò•¿]:BY÷ %ÂÛ,3KëjhÛoŒ¾Én_0D".y³·ž—zñ,RÜ3ˆÀ¼kpzµ3íÕÞsö=ž{ô¶©2ÕWBØõ¬«× +bÚ‰tÞHl×µEÒXgpí«gí5=Îk²Í’,á‚Xk`;;´:û3p~�ÙÖsyàœ×³)-‚[ä>ï]ö)ëí`>>õ3Õ—q(®·ÎªæùŽ +ÞUŽÖ=Ã]âÚkã@`+k؃„úÜÀœlkNÌ8Ã~`Võºçü÷Ù'ôfÏ›<g<ÇS¿S=py÷€X\Í’r: TèV¯"A•VC±ÆzFÏJH5 *|ÒÎÈyuá‚X>x•Îþ˜ˆ5¦ÙA^^¾mªœgÖ@<VʳÇ׳ÞûBT!³½W;:êŸZ›¾™ú¹”äPA´>Ü¢`WÛWE¥Gê9Õ±ÆUb½‘Qˆ«?=ïíL¦¶È`K6=*ˆÀ6^ƒÁ*ó‚ÿŸ½ï�Œ£8÷ÿ¤“t’N½7«K6î °1˜ÞL‡�´—¼”—@BòRþ)„Þè5ðB -lpÁãÞ‹¬Þ{»¢SÙÿï7w#ÖgcÛ’ÍÛÝ™ÙÙÙÙùæëß°3í?>Sì?\]œC΂#ð•“SåœÂùõò*ùç¦&ùÁ¹yòÉééÒ¥ë•n–G?9Y^ÙÙ*UnùÍ奒üãep¶a úî{‘s?Àû_L=4ø3jî¼ëå‡w~Oî»ÿ++†™J™|ñŸ“í;v(=¬¹ò?{\>÷™[äþ‡‚\„Úê®;¿/_üòËÃÜg®ªÎ?ú˜Ò÷nÞ¼û&Ègo¾ÞüÇ�OêÓ§)£¹´4Ÿ9oxgÅ +9gáBYŒçp_Bê‰ï½ûW2ÿ¬³eÍÊåªMšÔÐ×G§ÏéËòío}Sžxê)™óâM˜0zã&ùì-7ëjêøç¿þM¾ñµ¯ªsÆËÊ€!9õÃïÈ +ÀkaÄDZ`Ä™ÓgÈzì“Hó¢K/1ßzÏ,…æCÌ@k~(UM*£™Ž6Õ1ßs˜zàéjo¹ß)‰1©|îGø¡H8IÓ.ˆ×\%úà{Ë#õXÄД¦aQy@¦ÝgÒI¬Í4ŠŒV9#?wœS(w]P2’<;æ#0ò=Žù£ú�ú JŒDÈý;Ìɉ�@8òeÒþcº�…aÝ/÷»¢³‚Nfݯxͺ_k™&§Óǘ¨|KúÎH�ëB‚ÓÁ3`8H×ÆGmÈÒi-Ã&xo8ê¨øb,c²ž+p÷íhÀåQŸó‰æóCí×fX;i å‘Ï5_ëƬÀËü±^ö,ŸO×Ê«Ñ㦦÷üOw_=ß´W7©ûôÙ‡À +¾FlÙQ o<ñ}'ügš;Ï|tD¯>¬£Îù6,¦± <r¡^Yã–ê4Š=óßCüT4í|rbõ"¸„Bœ';ÌÓâC_Õ7M|1u?59Nr°i þÐ†Æ ‚ÏçdäÁÖ¸#%ûïc.3«›Ìù<×9¤²«ß ©ÿ¡$*ÖCSUó¹?;@–é†#>M„£QbôÑŽ¬}ÄÝ9)o$àê?a‘dMf¬yb&“€¬y¬ûèùVSJ lº®&ym.ãB©Í,É뀣¬G=1ÙQ&ÚEk‹°¼¸0Äž:t¨ú +«1<©4ó8©,û3žwd¬è7æÛúÝÞ/8)mÖÞ)ºë²:G=œ¼§)©8l~<«ã¡±øðHhSƒÁÓ“sÆÐZGw¼öËÚO}M,É¿@ÉŒYYÎuRºYuÄ2ZpQðKÀ6ck–)CžSp‚#pôF€6Ì@J½Þ—Àh¶Ì"ɬ òÎaTÕø“™Ô6vCëK#µõ]Ácp‚#ð‘F@!`pÀËr&…\\3ð²LÛ?ó~¡™Ol̽’HŠIhŽH0òÔ74úòód_y…rÈ„u^KK+â¤ÌR<ªñ±ÓaÜÁà%¿¬lŸoSmýp±³Ï:K¤¥sþÉœÌSf¬Ëw¦–γº +R7LÚ*ÈR ?¹Mþ9:e¨d ÃȾ‡š‚B¬C©¯ùL +ŒxÔRèñ�dÜ°‡‰q³$z¼Ž°U +1©î¯™46óµäiõ¬k.3{4v}‹ß¨%hzy•[<~Í;ý/+Â.^ +ôõãÇæØ¿HF$(C`ÿÄWgjB˜”é™ØÂ*˜‚#0®FÀgJILJ²˜$¯9QPEžX«‚t±j¨Ú4‚»bŽæn‰µK"IqFÕböÏßmW[ƒú¿¾¤©¬o‹c,ú]ðœœãˆqŽ‚À{ü¿Œ._¹RahŸ%¶Ö›%ë“3¿¡±QeqÏ!†!$vïD0³^zIåóú`Ït{'â‘�ª¡G…Ð21ϼĮډAñµ&à5ckÍG«FðòýHh',g0¦Ã)Æg9|$¡‡‡â¤;9úx„Œ<ÑHèvl;l¶¢Òê8aHåêxV¼6(Ú¬z2—™Ép§6øØ€Ù(WÏ=•µ2©0——£R€G ÇIuq(�ìÃJ7Ô$G;¥aú¥ €ˆÿ@ï÷QòŽ7aëF,ô` +Ž€u"à Ç<É¥ÇÖw>’k%Ífº-¬2cU]Æ éCl`é2…u}ÍƘvÅغ{¼¥ì‘ŠMH‡L›2EÖ¬xgTPè£Ý_>ŒXŠý1N^q©\~Ù"µóu;ö™ãÕWŽöãÚ^f^ÜrÓrϯ~9\¾²ßýá]âîlÎ;Ô“›>û9ìÓ»U¾ûíÛånÿ¶t67Ê}< _¹õÖQMЯ6//Ožù׳‹Ÿ®6ÛàæùØôbÏÞ½*„~m]ÂöŸ‚}‚Ý2!÷†ÿþ‡ÆÆ1Â7nF¿ùëßȾwǨ¶Ožlfå×ì0úMI:ë¤%ÍŒ¾aTzíx™H>›ËÈ'kÖ–n†Ãª'M7à0ÿmؾÇر¯jTž.gý±JaÑ1Æo-~|hd´±bÕ*£ t’‘]PdüúÞ߶(‡Ifdäæ ©éÆ=¿ýg@pb$gf§N7n¿ã»óE¨v°E¹qÙÕ×·|þÆëK–·}÷oî5±¸ÿ·Æƒ?bDÅ'¿ºç7FtB’±nýÕη¾ýãêO\oœ{ÑÅÆW¾þ cBQ±ñÛ?üÑøÅÝ÷·½©Á~ÿ®¹E%Æ׿u›ñÓ_üBµsÃÍ·{ËÊŒPôùg¿ø¥Q2eª‘–“k,{çõ¼G}Ô¸pÑeÃm™O +&ž¢ú÷×ûî7b’RŒ‹/¿ÂøÛýIYªÚ§?ûyã•×_7ì±ñÆ[K—sæÍWÏüÓ_þªò6mÞlLž1ËHJÏ2þˆ<¾ëœyg=²ØHHË0^}íuãÞßýÞüÈ1;Ǧ ÿ 43 3ÀâY_åÁïhxÒ°s,Ž£¤Ðz…˜\R …²ôå¸:¾½|¹<´x±Ä§¦«í|¹!KSs³Ìš9C®¼ü2¥+P¨>ßõƒ;åŽÛoS’Op‡�Öûô7Êk¯¼<ü^—]z©\ݵ2}Ú´á¼/é‹ÒÉé·ß.{±ó�·fÏÜüi™3{Öp=}råe—ÉsO?¶wúߟþLg«h€ýµ×¨çþù÷¿SÖê4pøçã ±u›W_y…Ì;ítµûîì™3å¡ûþ.§Î™#o¾¹TÉ$&M>ܦ>á–—]r‰¤cƒ˜ÊÊ*eÑò۾s‡ÚJŠeÜlæƒõëÕ-Ÿ@Í‚;ÍWU× ²F»ä«q³ê{‚»ÿÓá�Õ¯ÖDŒjJérJŸTF5Ë´ÀJßÃ#±0Ë +±ÌçA!–uDŽÏuú„\iª©>æ£�“‰*"NXû˜w ÀN4!V§Ó3le¥Æ€¨w\`è(sügÄŽõ¨ë5ëxÍ�o&§YW—˜£Lj@~¨%V{GâK픜ì,©·Ûí N•¾wÎìÙªê|‰ù©ïU¼q +¶œSºa,9ÙÙÊóåW_•SçΕfPPfêÇú9N4�>žRè �[gËÇøúP�x,†çD`bVm9u ìi6‰Ôãª1«U'L–&¥ÍÒë€<°n,xŽ@pŽdè°ÿá÷¬Ž¶ÌÒ˜¯ý\Ž* +¨FÒ7Á°Ž@%vof˜VîúLSI +ã(ìì蔬¬,äù_ý€ â[‡rÛѶ¶v%dã^îĨÛwî”…gžimþ$¹f`ö‡"²bdóK¨Œ¼±µŒkÄ CB7¦vçîÝ*‚åÌÓ±ìjKîðð0ñBç–/3gÌ›6IqQ‘â½^yí5‰ær¹%Ú&Ô'*&1¥ÊJP3mêTó~lÏ„„¦¤úXºN4ºÓÙÔqkŽge%Í^FfÒ˜“P“Ó<·¯.;a�˜/LÇvŽ€m|Ÿh�ìêë‡/ïè‘Ñ�gŽ¬Áä“ ÄLV Õ[°â•uÌè †.ø£G@Ó×Áãá�‰(tâæ:ˆ»8u¬«@¤1ycíAãjAåÄàÃÿ>Á;Æ`NŒh”z`B@þŽÉ°b]YÛØfll-3“ÚæHA�Öc<�EG¾ÎÃö…éÄbŸC?ã8+‡~9M^—Û™]ù~ÄÆŒuE›h³±ËhäAË,bvó}A˜£LÃ#@>ø@¬Ä²c4 òx ¿c݇Ò~ Cª8tfK+ýòºŒmsUÌ] +uø]_©L‹œÂ¬YÒÝÔ§TzRb¥‰Ò™™²ýÝ +¸“!˜žÅ%9dò¬)=¥@þõÄrúÙS±c^·t·Hks§Lžš/nº·>9õôYH'(¯˜Ö–NqöôIw—[º:»¤©¡GŠ'fI\œC"° sBBœRoôöº°£]„xÜ}Êþ>!’˜'W]y¹¤¥'JT$´NMIQVGýi—ŠŠ +H²»Q iw +,Š% mºœ—Lw·ô¸*$<«kühÓ2âéê·+Fâ’‘T,y™%’”š¿ñ:½ÒÓÕ#ò3Ä5ØçìD¿êj[Ñ«P9ý‚9²{Ãx¸Dá9éêéý á¦Òá’”ž!•Õ2:$}Mnùê¯×ßû¤>ê94^ÒVÖl.ÉɬbÒä´dgÆ®ºŒG³„š6êL�ž>é, ·_³¯UâÃdÖ‚IòÁ*l)Ým^É+Ìô\âTîm–Žj§ØMB±}d”]2²âÅæ—Œì(�Vº”—WJ>\ìjêjÕÖ”Qöp)éìvÁ†¸MòK&Àì/J¾ea¡(w ©†úúf”Û$7/[.¼ð\EB¾÷Þ{R\\¬ÔNQØñ...!ÏPà#ÑW—§W}SC³$&¤ ·ÚäÖ™}}µˆ@¥-<+àÔÐ(ö(Äõö©IâàÀî°G@oÚ+X2¼6‰‰Ê$,i)YR:éT‰MŠ—>, 5•Ò‚ö#ãÓ%{Rž´ÖÔË TáP…1” u«11qâê—ÔŒBY÷þ^iïôJ¨§_îüý-ãaNó>Œ'�„Ý‚Àï~‰�(Ÿ‰¹ÉóJ,3�NÁV¡}0ÞŽd\\›¸úáÙgÇÆÆ^`,ƒþ-"ÁþÄ¥„Ëéçœ"5ÕÍâêÄÎæ1Äžéhé“äÔH)ž’/•ûeû–=ræ¹R]Ù"®žNè'c¤½¥Mô¡¡am.YÙI’3!’’š,]Àv¡ _ââ2sæT\w«·(cþðp»²ßMLŒ—üü|qÄ�{zÜâ�€)?aC2PG]SÛ2(J²³2ÄIÔ°«¶Âáünóy%¢ 'Ó Œ^÷žttUI<b{õaóòŽš~‰‹•¨P,JÉ…²à’ëÄ‹gÕì–oª—†æ6´›.ñ™éâ5‘œ™!½í—ž,íÕµª#Ä€dßúí%Òª")!\~óè7ñí}QM‚“%o<01§U€¥Ç»e1ˆófMd1Kë:$µ£øãý[еñ±Ï‚ ¬-nDš,˜œ, éñ <’™ ^éë”hLðÄôXimëÄÜ“¬ühe˜Q -*J“Ö:·l~o•dÄʬy¥²~Ãv¹åsWÈ¿þïMi©k‘TÁsövKai0t±Š_‚˜�Eó<eúDÙ‘øøDÙ»«€Ö*IÉ Ò Ì=0ÀE�{Gõ9¡¤d6ú’˜¨Héää$Ù k"nbŸ€ºn`Kò:po¦¤¤$;°� à›·O²&dcàöŽð„I·«Xjj±ˆÄ0A:»7Kk-ŒÿÃÞ¬[&ÍØÀzï¦÷$3TâÝm¯î¶É(,‘Þú&iÚ!MÕ6ÉÈ,•Ö–P%…bØ"Ä9ب¨•§çIè£6`ý`:¾#0"…&©ˆü%N%€›¥Ð$£µ×’µLë}ùƒC¾…çcÀˆ/€Ð,À àO'LK•Žf”ï¬Tû +ï”vIÊ +úä”)yRUîÆdîI&9…irÚ3åý5ÄÝȇC^‰IµË…‹æI˜]¤ ?EøÃËà/íÀŽqÀ¤}r&xæÁ!b7°3‚‘ÇkµƒOÂäÏH•ìì�[Œ´´UJnA6v†G$Eðqq¼¿‘'²ÆÄ +8�É"ówïÝ-‰I ÒÓÝ«¢*ôÓ“Ç«ÈçÎîV‚õ2)ÃT^¨"AvÇcgx;Èñ-[%55Iºa†Øãq@A 4÷ }¬²¶pÙ±m$’q’1¡#¡:›Íâ¹Ó¥«±‹D$æåJw3xûú½ ¡¥±ÔCGøkH*cB1^‘OñÁt|GÀ'…ôLRÃf 5ס•ÿ¥á–ÂÀµ-•Žú%hþا¡2€jé·þ§0?9Š¸KD 9m²ok«ôvu‚§ôJ?øJò|/<½Ó²OÇ$sbŒä•Æȯ€‰›Ü®n™:3WìÑa2çüb¹þæ$+w‚ÄÆE€—™sJdê´"˜V‚3äôy³¤²ªBš›š€A½ S�Ê ýñ�‹&É´iS¤¡¡ |H¸"Ã&fü(¯_Ú’¿Ï,¯Òß.Ù™ùŠ4gݽ{ËÀc{p=Š/îíí¿çýÓðþ6¢†°tB�Ö2Ø+i™Éb3¤LNQ>øÛh‰ïÞçÆBÑÛ)»W®Dâ‡,\JgL[!)Ù¹’^0_V.o“Ʀ,T}`!©©iÅ8q¦± +²ˆU%ækk,s9Ù–3[ãj±ll00æù^CÀ÷ÚÀPÃ#¸…$Ö¬@Ž˜0È{Å`�µø0‰IŠ‘)sS Ѳ‚ÔNŒ•^g§O*©è•Lèæú]R×°<²MªÊ¡ã¬"iàÅE9`hï‚ïj-0rbiÍ’=ûœœ{ÞÙ²lé;(ë•ÜÜ)m‡PhÉ–£nÙ!}îVkE?a3 +\ˆ|&òÂ\M]ÎAXÖ¯ÛŠ~GÈl/ÂøÇÜZ¤Uý†õ[d2bC5Ö·+_rJŒzw/ø[¤žEؽày=ÐÅJô`¼„¤IrRªLŸ{š,ñU`X‡T#U4øøng«L?c¡Ôî®”TħŠ-'^+mÝX@b%4rƒ$,Bõý\;ß>x}ŒGÀ*…f,íMD@&I“jò¾ZË\¨ËD²Ú ^ÇÕ�F§lÑG†ÌYXrÓ%N¨Vbb¢eíʽRzZºx¡Aéf‹€„µb[‹ÔíhPÁM`<Lâr"� âîpJ�ÃÉrBJ¬Lž;üp’¤$&ÀéhïU<óOSz¸×þ³|lŠ¼öÚr¹ñæK¥¶ºµFJ'ãY¡’•™+½P͆x!ÍΕõë7HÔ;ýp˜ × SZZ¦äîîv¨‘º�„¾}k)Í~ÿýµŠOž¥í]½Xx¢„‚®$P<€|Ža6¬È° ºñL,`X +J&ɤ¢¹`nl’79WÂí‘ò©oÞ +,Ý![W¦ÉÎwß• 'aÁª“Ø”DHͧʾÝ- ÿÁvdBV°«r2LøÒ¥±®Sõ7øs|G€››Q²¬3|˾Î9ˆœfC)3�vÄDŠ§'T¶®®÷@Ÿ$�œrþ•³$üè»K¶‹#Ù–]fÌ)kßÛ)“ÁïØ^/é9‰ÒÕÒ ’3J^8€)eÐc¥ú`UôÃNâÕŸìUÊÔiú€<�?›––,%%%2ðîzybñIMùÕËÛ” +«!º[»LûöT+ò—X:<B·ð0,¡ Åë�tC2‘1].`NÈÀÏ€9è±’¶·wÉ;ËÞ_+%¥ÅÐWKuM^½ Ëc%¼w0zTdÈ v¼´™ ;PgXˆOŽ¤”8ðÀÑx§AÔµåH”ì‰è7Õ +˜CCNi�yî@^ÉÈw6õJVa¢ô£]í^±5aëJRЦÉÄ÷ +¦c?:t¬ÙìQ?U›ERçkåy¹m(?—Yð¥ïÓØÚØcÀÍUTÄJVNªÔÖ×Jõî.Hb‰a!&ÇÞGC6¯L™V 9é²ñýÍÅ ä&‚xõ‡B}â�õK0á¿Ÿ^.ç^0CâÂeõª*Ôi[=…Að±^µ¡òÞÛ;䃻 Žr�ȆÐ^™ää¥ÊuŸ:üe¢¼úêðÜIÐÇö�#7Cª›¨„UÙÒ)3dPà…§*aU=€—.tÔïܹ]"í1ÀÚ9à=¡›%`ñ'6Û tÀ]qÛ¶ ¥;a$Ò¯øj +Âð¸-MŠw&)4€w‡Ûc¬#A ³`!©ÄÂÁy¡!c@é{‹&O”Š}UÒ[× + |8]²kg˜C&Íž Û×5Ȭ…ÙâêY·jÜ«g@ðxœF�š~¿«-°ÈnéDr™IY`™„Vª®¿Im3 jé4‹i¢©M-ÇDÌNd$O™²d~Ô+ì|d²HjV*¤´¡J•Óïìð@Z«$X;¹{û1©Á¼w{¥¼¬^a:€<nKf¬'T@FæBRMRœ*œH¥C¤¡²Uæ-œ©YÞ~€ÂÉ°ulrÍ'./U*£¨›j«ZÆ€¡ý†ÃÀ‹ŸvÚ© µ÷ +·Îd4H,ÄÀƃL‡e øV²‹(bd<å6XhÅKmm=Hp`R�…sÓfÉœ93婧þ.½}-•!¹)rÖœ+%.&Czz[÷7Aê·ÉÌ3æI<œæù.MÍR½¯B¿rÙ³e»Âøu²{g¿Ä&DBf0Ö$),É”Š= òüCOIùàr¬Š'?G=0çù±Nc‚ÉötöË©çæ!$,y_êÃâeçÆji«qJ—«KŠ +ä‚¥PXL…„6)AQ|šMæ_2Cölß.yÅÙR rºzw§$g;$!5’W�2°o[-,* /t«>¾Õ†vÖ¿»K£±ïªŠ¶ˆè÷Àxýà;_yi9€<T\àÃk;eú¬)²F!à!çÌ-UÁžý×¾Nƒžxú›¤ÔWÞ߆]ííð5Õ0°HŠŸkWj#ª†úè‚•·ÁÕ¾¸S’Sa}…@‘0båaKÈÇÃH%9)M2WÖöKUE¹AáïÆNÍõõ0?m€î·Rq (óÊÖí]2ýݳ»¤v$Þy�RófÌCšv +E…>QȱžJÁöõpw³I¤ÙËÈ9½ëDlJ‡&«ÑuÈš—6ccÖÕäô˜�05%“S¥ºÖE°5î„Ð(."æì€Û‡¯¼k¤ºò“! ¡E옳eÛêr‰‚ +ª«Á ɵo›Ñöº>i®¤T8nÈŽòHì ô¾àOà @ ºj�a»£¤z˜´‡x”å’2U㽨WÞÕ.õÈÅWŸ.ï®ØAP¤ÍJÃâÐ/ûÊ|fšØùÀ‰MIJG;|6Ô= \Ý}›×>µÑ $$QzŽÅ‚*�;L:¤tÄ.~^òòa ÕSrTŠÄDÆ`ñj‘ «6Ê™ç,”N¨¸\¨ßr[3L*¡~êmkÆøDHvA‰$fK÷P™Ì€ÄyÛ¦}XèB$1Ë&E“aÓk6—MÜЧƒÆÁçöM~ø`:ö#ÀoaNfSHó9ëÐ_ØÇõ’š3ß +ô)”X—EcÀ|00OIf¶¼¿¬ý—ÎØZ9ÿÚ¹RQÞ ½;š%=ꕆ0�[1áÒj{ꂇ*‡$eLJ<øØHƒß¼øʹŠ„”¡ph5ÀÞ3Ïš"ë–îÄ-arÂ!w·[B!%LËCx²ü*0e^^ºìÚQ&—^~¾|ðÞVyõv<+DÚ!å^¹|«|çûŸ‘U«?J¤° °¶,˜R²mŒ"1_B",²°&4Ô@Š Ç…î¶b@ž¶–\ÔdrŽ‡^q%HÈŠ†ú +a 6suî•ÎÆ*ô±ê â]õž: ê¯Té)!•{¶»‡È^Ùþ¼_J¦dÌŸ ݃°f+NTìES;Ôf�jØõúöÁ¼c<Ü’—ÀÅ?ÿ¬”$?ÕCÖ½€õ}t!<P"¶f�æ…8ö‚KŽ–©˜xà‡+*ëĉIiÀªiÏNO�KÎ>¯XªwµJ=xØìə޵jo0+ì—SCÙ¢ ‚Š½ °1î‡ÐÊ2¸[οp�¤JèÙü6øa7…BÀhõIHà»%=;E.½f<}Ú€õá‹.¯<¿RœàÆ$AÕ)aø�Œ@„ûâR¥å� Ѥ¢;*`�ɛϛ?SÖÛaV†l^¿}„ÑÉ�Œ/BÄÓ; �f’у —¸:óEE!n°·äVfN„y²íƒµ+±ð(89€ä>÷ÊO†°zeTX¡X�Ø_(”y©`B UOUæŸÕ¶aÚ¹©*´Y»í-~ß`“1¥ä㹦üpÒä/3Ì€MÙÝ™#HyMÿa¯ß ÃWkL�Ý“½[ë%t R¢ã ¸ÊÌ’+6©‰?=Yr“S”«`o‡ü€ÁpÂ&Ú)m¸ìÜÐ$¥§fÃb)¦‡Ð7u‹Ç õ:6×AÒ;(W\5–-!²òÊ’dHZn”ôÂsˆÞMqñ6¨¬úÀC·HùTH•¡^**É…Z +y.Ø“oèƒûÞi³eþ‚©òî*èwã’d×Öí¨›aT<ÔBôê–gËWCÍc“úò89à2#ŽævÅê¦Ë呇þ%ý°¸Š‚Ò ¤Î! >ú± | +JKdîés%¯ �šàŽÁã’žŽ.`×piíl‘úêz<ØÚ‘$[67B]V µŒ] •Ÿ27ùvôÙ Š"Tl0iLc4Ф�{RÃ@ÿ_3ð²CaÈ£šÉÌ'3ÙŠlV]¨,͉þÂ4ô�Œ+ßa]6&Rhò ¶‰°E†4/BI0L´¥h~¤µC’ŸÚÝ0as¢%¾»9…é0ÈpQ¨C5O2Œük Ñé®×C7=X5+‡s¸Ø&$Ç¡!`À™:\¦ÌÈe/î‘b`ü™ó‹Ìƒòúó[•4wÑÕ3¥²¦Q,˜);·•Éª·wÃ*6ÙÑ^O“hðã«ßÙ"-PÝúƒëåù§Þ) ù~Æ™Ód×H¨Õž%%Ç)ÿÝ…gÏ…™f•ì-o–¨–]½n%a7`u–ëÉ.iPO>ñ,¥ÔÂt³d°0)¶¥#…«Û A\½”×Ô!k;ìÅ›ñW/g]2«2¨jdM„Úå€þÙ¥0ÿŠ×ÿ#[_ §?óÉ<¤Ðš4¶~ ¬•7Öu¬ÖY:ŸGª–Æ€ ÉJž%‹Çá%`��@�IDATŠY)(‡„‚8Èá g ’Ü�,òpÐdŒ! �™‹«>¸Ú"�¬‘áâ4Ê"uH˜Ã%:%Ø0uôº@þpa±´gKòæéïÅbSIØ\À‰!Y\`Z'N*9jÈ„Â$(Ö#ᢋçØÕ3üëKÒÝ~%´O¦MŸ$‰X »åÆÏ-’§ŸyYêao«©+¯9Ž àá•Z©¾¡QIÖ‚¿¾á–‹dÝ–mŽwJ]e$ÎpœÙ.ôØ“&Ε”˜dq„KÁ)…Ò +Is*\éã›õ * 2rºBeÓÖiîlƈؤ¡¶ä;®¡9óâ +£ïÛW;épyð‰oC/L“_}ĉÌ4ž�¸£×3Ê\Rn°ŸÔ@¦”,³v˜Im³„šë2 >˜Æ€eã&JzZ,†zÄ‘¡t«}-ýö¸ G¥)VúÀ¾¯�ç†A„?Lfb( +Ba’Y<-_ùç’Üì€öIé¬\¹ìÖ«ƒ›^Bll”=¿÷IáÀrÞA/€5ÎñR¶æˆõ�.è¤'åƒ7uIG›K¾ø•+¥¹µ^öB¯ºm]•|ñWÉ?xUfÏž"§žQ¬¢u¤Àµ0)9^š[ayU×G¸B·nå.Œ0H(ôc!Ô_ï¯Ù Ö¡A +3ú%¯&Å“enκ�l—¢éÅâ†ãWÖ¤¤DÅRлØ÷Ÿ¯S*±Oß|žüû…uÐ-CrŸ&Óæä½1 Ö^°ûÆâòø½OÉæìUAÛø�`¬¬Häéˆè'’ÿà»øè¿ã €9ô+òïl%›ùæüÞ”´¶&úS>c•lk÷C³1v�l›¢0&‘Dl¤´Ð¥æÍH•úu½�F7¨?’Õì œwAÃ>Â|јÉÌJ)ÓK`ø‘!“ê–^`¬D8ÛÇ€GÜÅ;aFÙ§õ‰Ã—½ ¹™…‚÷Â÷ª}¶lÜ Œ™ˆÈ5Àäh›Q7!0ƒH[¢âaÊ3ÏÂlh“¢I0(ƒ¾*ª8˜yžqÆlð:|q;ä¬óçªÂÝmHl2u×¾Q[ÝO§.DÊpȲ77IR\¤¤ØvŠ#§Öf¡àÅ=rÙyW˾ò=pªÈÔ»I&ž2üºúçx¼4ôÖ%+WoéÜ„ N¹dÑ©p²€¤>'^ªëºTˆžÖ.§tòÇ'nÇB~Œu˜)p +I„CIF*¤ãУ'@ðF#å\1ÃÁ»GÀ«+j5eJ3èÆ‚ºuËly +iºì£ÑÕñÀ£6ⶼ$u¼f!•¹˜@kÏkM�µ +šyÌ�8Î6VJÑ siÇk“èL¨†`>H)t&ö& �¤n¨dA°UœŒr¤æ‘ ЗRhEe=ª!ÒÆ„XðËqXéµ±½GTt„SY¬Tä¥9ÁhÕÚ +ý(ÔQñ ð + Ï›w¦¤"4Ïz˜l2ªFUu•’j÷´Sƒ«örê…SeíŠ2e*$Æ°þš<w²<‹ 9)“§�?¿ *#öݦ“&èm÷–Uà=íà©w‰í$†l‡µU?Bãœë©T`쩈aU)³fO\/K°c_RrºìØÓE* î9RUÙ6¬Ób§˜–ºîç—BV(;¶THu¥SÙg¿ôøsRãy_ùè™nP'BŽmJ„lŽ(Eâ«r¬#"àwLÀÅ5T-e4¦a"?OŠ‰þÕ9D#šÐPÞK‹¸Ayí?+°xu«ºGò3¾�x�0æ¯?™íš ƒšüe±Y +mÞÁÁZfvèç¸kà-êâ]Ç)ÏJ—fHpã`ðÏêltÃqzÔÄ^XUÅKbrVúxLZÆ¡,#oßY.ÕUmkWý O™’ì<\¸%Âàƒ±ªÂàPW×€üXN!€�˜“¨ ¡Ö"˜m©)°†ÂB04葺ò^ÉÉÌS¦ŽóçÏ/W=`ôÝ0ŸÜW^Þµ^.½òLÙðÞ)¯h§Ô€,8m–lߺK2ê&Ñ † ¶EÄcaÀÇ"”ˆHYp¬ dK˜nžzá<éí®‚³BšLȆAFr,˜÷\¥¢Ú³è°Ù¶±äpªL=¥Hêk›dœ11=°ÆŠŽp@X›pÒ`s“Sìðt‰“uooð®9z_cnÙ£ÔkÚáÌÁGVÐlŠ0¼s€Ñ¡�–¦³‡Z°*€J؉ûœI¨û�¶åV£}ƒ.ä;CžÑc¯—ºñ!9çìSÑöp¿õæje?'<6{&ŸC á†Um 2î¬bµèЯX~w„?�7í‚ÈL’®%iˆ qàSëjš%n|äQ鼿sû>X5+Cqž/gœUA@¨Ú먮zS§N„“½…" MÃË…âã·`Â'ÀÊ+U¹*°<-¢l6쇌ÍÁà_<¢OÆ@ŽøYàéë”=;š”͵ŽA“J¦`Ó®<PC²cǹüòå•+d×®jÔuËYgσ0,Fq²ooµ"áCà&h£•�Ö0içŒt9�)µ ÜÍÜ—JSú0щ±’ãâa +¹¼P”,}‹ü…gž–k/——)Ëí;ÊñNIÒˆ(œÄú¹¹YÒÞH>}Hª·µËkËÿ†OÊõý£%NþÑÁ†E.:å‹ +©>|6ÅÝs_G-ˆC0œés:Õ¹Æ-Ø?˜š<@hlC—N…•á}Ö +7y{; ´wcqT‹+…‘´g"Æ?ÿ‚ùª=0ºyé•¥í…Æðn³d™|.©ª—˜Ìet\ÇøjKsYZ€åƒÛàe\1`/{óŠÓeâ”t|,D ètK}¬®`Ù´møLX* ;ºRuÚÜ|Iψ°Å�@®za¬Ô¹ˆ3EìJm{`nHG/W{æ‘“ðñg>ì€Ð‘àß8Q@ò3ÔcÀ;ÖqE©AÎÈ€ž¸£ÆmRµ±F&O*•,ÜòeKÙ®2ùÜç/—÷ßÝ*%0i�À@€:„ÆA€¼I“KF¡‘Å�l¥IÂ77·"´í Ì™ggž SQðì pÀÄm†Þ¹Çå”UË7@Ÿ-gŸ5[Ú[»ðþIàÏݲæÝm’”Ý2íª'ìX©aÌ¢¡F«)ë•ûü¸CÚ?2üjà¥T?bzN$μ] Øj3.W°1÷,âøsÌ) $&%°†¡ßãjP˜†¾z<øb’Ò¼÷DÛAA!Jb …cb@–‡â>5y1Ùi¦Ê@ƒŸ½åjxˆ5ÈÒåd NŒäK`Jç€j“ÈAï«%Í}ÉØ6¹tÙÁâj Ì•è¿û‘ŠƒU¶³ +‘*ºðel2B™=Ûš¥’é(ć¾ôü‹NƒMq´r¦g„GN:#ÄÂ"‰äù-xˆ¤2’Ió\CþÉÀ áFŒ²#h€ŸÀÍÉÇDÍs—Ë£œñC�ØôV2@.’4v‚Ÿ ñØ$³8üi„<ñ¥$"„g˜¸pH`¡»æ"@ yvv6”øD©ƒ4{@žû盲w[¹äç‡ÊllNŸË0<´Y·RÖ½Û%1˜Ô×]¶Òwvö€d¦ÛäÞ•Ï‚$¼FfÏœ!øâ²yá¥õ²aÅZYºéA¼ãy"H2è(D%ÖõaŠ +S ”bDOŽŸ‰°¾\ ð¿|gp#Š7¾¿ï/:@±.…yŒ¾¢¾x^ÊhœBO3.²ŒKÆñsaã‘�܆¨ HÒ÷Ya-|ƒ¸Ødyæ™—¤ ‹d Äzã%’B«¾~ñÉ•XÉê”TÀn¿´!–S;¢JÌ=£�Fþ³Á'Ka…ç‰VŠ‹GÈUäi�å‘‘9Ô„ÁÇ£½1ùZšK890Á˜¸ú‘/f@9b –3¹»=À^P�¨�§0†Q5ÂAæ0X^CM;T<sÐ/Äå®uÔó„ÈU×,b£Ò’8‘Q°åV[•rr2ô,ÔUn'¢p´AÝÓ,[ÖÃñÏtHAAž–H¬ª¶n]ã5p}t˾tµLŸY€vzñN>ìÕ‡¾eçÀ|Ž ,9fa³B«*¤¿ePÞò¯z¡#üQX¬·ÄÀÀQŠLP³ð86${ àdOâ xSþ¬°ú²'ÀER™ðCê½xA–FÐçPèô)è¢Pž¬¿¿B¹hèò vtqqèa$`e¾E¨²XüÎ趇†Zåê«Î…ïx§,ykžéñ»<.Ic²V‰2M"iI[gëN ¼‡÷j²ÙÜc‘Í‚¯1`ÝÀ„I°1.ßà u9ó¼‰R\šÒMl\‰ûAZ1öTww7�:!nb`F@B ¡‘±)y)®ò^¾<&Ñ €´µ£,×$éìM™8"LŒá`ãã`À$ï&pšp"G?Ú`@º)Ó&‚äEXØ&§�;ïëÃ^Ãœðññ0::kÐèÇs9QéÔ�}6ê55µ"ªä.Ù°vZ”’A¶gdÀØã"©†³Bxt¤¬ø×Û²a5BÐÖƒG†=x|BÆbAáB³ÎŽV9eÒDhoņ@© A!E‡ëáol–A²þúÏoáû´Žûh²™ß¤Rr¥ð¯Cù ¥Ì��=�ÌêÄŽ …qÄ‚É{ˆ;FÒ>ViÄ®ì?÷dæx(²‹0b.JŽÌ‰Îó^W òq§ +-‰ùI0¼éCÀÂÜ¢|ÄËGìítYüسÈÇ{ù«›aã(Ÿ#2(¾#Ó�€•Z.„:x™hàaF.Œ^&’Íæ2ª–tâ}ÚÑaÌH苯¸PaÂtlBIf$&?0w|çjÌÀéÄÀ\•kŽ†ñ˜§N;EÐ\ʼnEYŸåU•µ ’bÀÔÐãªÐhƒ‚‘ÚÚZHS!B]büh8,0¬k<êÙ`j‰Ç€ �…dŸ=û¤r�Æ Ùè[VN:x3(xñȈhDÖ€•ÒXNiLÄž§êûGЋ€uuÕò—ß>dH�òé/L—šÆf¸÷y¥$'[j*á0ᄳC¤lz$xJ´dÂkéò+@ðÆ�àÿ Øb_J§"˜{r"!Ì�#B–½±Kù*ÿùÁ»°xø|Ñ™#J^²#¡xoJ›9Ë"ñ²Š…ØMËü £A>ÈiÉ^ ‹btàs'ƀ߂ØR±8žs|¸ò&¹00…øù}¸§§§+›ÀÊïÙŠ`üꨘ(ó ¯Íëˆpb—壿ØíãùôsKÐ’obëvUãcüsÒ“ÐìA|¼¢ü|¬Ü†ÄŽ€v\b^ªH>rÛ4rðÑ0Hseo†J&99RÍĘJQd)˜e<F#¸]²qón`ÜuÒí!yr&rReDÝ€Š‰@GßÒÜ è‰Ø^¥S&ç!ß¾ŽFƒà½x¶”£A¹ @ÊÉÊ E*€|·šà˜äœh]°¤zîÙ×!Ò'ƒ|YtU¡´Á´.ÎÞ†©oî—~¨À ¶‘íô*v„yÓfæÁ; +† I©Ãn 9kntàù]2%»Ë¤%{àÐôÄdvu(Ê@…q'@“„Å/‘ðž\LqÎ8Þt|RƨAÄ9‚Ó£Œ0àŸ)Lt"j‚RÃXqN•E¬âQ=J[h¡!04xéDØôƒ’êÀ.ä÷ìŸê§(PV4ôÀÂi`ü‡`XÓƒ�ý¤Ïû©=ÈG8¦J¨ÙÆ["&UÂ8SÇ4ùkõLb]bT&3ÆåµÙÙßZ¦ýÇ„„æDÉÈÈP‚X‹Ø”çAÄ«‚„ŸÌ‚ç&�ƒ‘è5Ùሆ…ÁFì‰]0i‡G¨;°vJMƒšÃ =âZ±Í2}v‘jËãí¿†g(É(Œ ÒÀ„)%ƒ¾F¼j�F2tÒe{«dOY•”ä"ìÍÜ) +ƒ$§ÂÁ�ËÇËacJó=Hþ)á&i¯»GþôçJÝn§\wÓB,ø(10"™8U6,}A"BàúÛík®¹XÚ%;–½$t|¨”LÌÙÌ„÷¢:‹B,‹æƒ™eú·s}³ü¿ß ü)÷£ÑŽœ`P2Q(“Ç&F¥Zk�„ˆ¥±1$EcŠŸÅù¾ø¯°«o—ŠdO‹1 PJ&„rƒ¸?&& +‹e¤$bì¸(õ·u¡ÝõMyŽïY^Q{õ6®F'&´A +£è�2{57(Ptã[ àBõ¾èÈéËÝ%W\~±üù¾ÇPo|%Ra‘~I={¦#nðœóØ,i¦‰¥N\èÌ€o¾O×ÑGTUiL�˜ONAÆÂ"ÉE`"60À{öcÒ2Ï ³Â :à“,æGg¼eton†¤V;“§œLœ¢°B¢ZÐÐáñÇ^F¸XE‡È¶e0®€J-ÜîĪÉ? kVoÂó3@†B%å–´äTÉÏG�»övDý( ÒË}º±Û),£™ �‘OLÔï’”§ž“|wSK³<òÀ¿ÁÏÈ…—Ï’·ÞZ'·~ùJ±aqyíÕçÄŽíYz»¡óM)&í”'þðBÅÉÅWM†ya»�®¨Â¤¤dµÌ¬Sr±YY=I:åç¿û¼xU>ÒZ4/"¬M\HÉ¿öÀû‰�ì‚چœ!09ö>àå‚ECÙA 5ªÅ“€‚±¢<€̆èšCƒáz0ˆàj1>¸ÝàŸcð-¹ÿ—±¬Ì ÐéÛ•´šþÒlË g~{RY´ 0pü7ûGʧ2;wÕ€)gÚk÷GýHroŽ¢pδ¾j@мl 2+Ö5×ÑecÀÜò„Æ*"@PÔÑÑî#`JI>Šd.ÉTnš;½"÷ê€!�''=ãI»\½²qý^ÄŽ™–#Ȩoô‚Ï™À@o¹À™.¬ÃÖ› ¥9I®ÑIŸäæ#p'+78ãD©Éf!ÈÛ^N<öqª¹sPJNU–$x]}¬Ã³é/|ñ¢IŠj胗S4ýa¨rÝ¥ç¡L&[¤¬¬Cžyð¹ì†Ó´®UÖm¨•«¯œ÷sÿMP¤3…høÏ>-_^|~\[ä‹¿ +\à>J‰[¤Úna$Ã[«ÛØ•a /ÊðúŸå3€ñ ¡˜Åð@,šVvu˜�ÀÌ®A ¢0&ÃÜú¶`õ™Xòûôàûq‘f[{º’’ªé…N„U±Ð2Ð~:.€¹Àx)„9Í`újqq ÛÂÍâH×7`ï¨ùóçÈ«KÞñ÷t¼(ÄêÙïë6Ý;MNók’¤6']FÇmôÁr.‚\™ÌÒëÑw«âãóÃäDÑ,ÒJ›$/ÁßR?ÈÕ˜Ê}Ì ‘|-U>ˆ•LáJvd¼«Æ†Å§r'„ÝÛÄ,Çß·¯¦•v9}Á)àocð,ð³ØK‰.x†Ø±xtBòÌ-:ã’©Sö‘†õpçã.ˆ$Ëç‡åd"Ps¨¹—pŒä”ô¸ºäíw6K5l”?qõE2�_¾ìÜó± ßa0ä¨Eˆû¼øÄZ�f´Üðٳ幧W+'ü+¯=•äHøvINKÄ"€Šƒ€*Lžzâ}ÄÍ.—¯ºÀ;Bj}Ô/ÄwbTM’áTÏ5 xmÎ'äÒ´´Oú€A<n¤&´WÒTß·âœ1¾�ä`%Hó{̦l€cÅE•u¸0*LV%zäPDÚd>ót:à!,†\…Pc¼4‰€©W( WùKK„(,jÎÀèߌÛðx±¤aá—‰…±8hâ'8@â7•,—ºlÌ�<c¿tµ5K[K/¤¼NDWœÌ*cã0i e@ÀÎÍMð5º°Wo>&�H,7øMLŽººZz˜`0sŒ†÷ŽET&8+dLˆ ă— +X¤±@vj(,ÎÀä3`p‘?['TYõ2mâ$‘db#³Ü¬l…ýa9žºäš¯/Äœx”r÷×&P“ä½tÑéÐ7KAi,®\X@E{'±^7Èzê±'deÈŸ™#û*ä÷/Uª©Oß|.°z‡´4öJHQ›‘Ó|Ð ë¤x5=ÿØó²£ñU|«™úkêÍa¨‰*Ð^"e¨J£Ÿ4©.¬¡6�20r(0r0.© +¦œœ[ÄÐC_ß|B¾$'˜vߌí�Œ5mãÉcb’ÌLè¶!}[……82NXy„CeÅz”-0/a”YÐr«fšxþ)°v«®®$) Õг¿6Hä@ÉŠ‘Íõ¬eš}Q2¶&Ï<f� ²‹ &6À~ÐÚA²bǬ¸‰ ˆÒ”‚’©Û¶”«F>”€ãpÄ©IVWÛ ,£ˆE6nØ*óÏÉ—dØ WÁwBn®ÔVÔaa’ªª&¸¼ÁVS‘+› +Á +ÕDIJñp‹ãäzsé™=k²o²€ôݸ~¬žfKéä4rÔqBx…IÌ>ôb£1b +Á¨fŽ©Ðó}|]p샤ÙþÓÈ# v×Á™ÿ•×ÖÉ®í Jr›’Š ±�dädÀA£QŠ'#Ú¨ìªXµÇ-wþôëÒ7Tkþ¶G휂)š¯’· Ð4’ó|}¶+a`{{J_\l‡›¦‡B'ÎIEé5vId”6sA%0SmDLIäÃsrPƒ@„>ÖƒDQ†‘*ƒºd)ÆŠ‰d5ùqæ[Ç8Ì$6(ìöµ§³ã Z£6‚rñ–hŒaæm)¨¢-4“Õ°ƒúbMj›IcÖÕä4ÏÒk]6f�ìŸD2 EÆQéÏI——ÅþÂ.ñ¢áI…U§ 0SV¼³IE¿X�;aª2 Ò‚•"Q2º#VrG¬·°J‡„Øá1´n†Àºô�¢Å”=Q@“FiðjÆÖ,MõN™:=Wa—ü|eËß“Ò¢B9÷œ3°iw Hîô’Q`_b& +Òˆ¥È‹CDƒÔs2Ò%"P(æ€ôtò)qPôIöl¢q%ÂçÖT@PÅþ@ål@ŸK•ïïÀÞÈt,‡Š¨Fÿþ¿-òô«?Ã3QãØ%.>ax>í”ù~èY—!ˆÂÛàl0„rØ—~�/õæQ0>ÑÒv;$ÖÄ’õKÀ¤L´:'dÜ™Â,ÀÕ‰Èä0yÐÎVn\èÚq…TJ€{OQhØ çó““)˜ì9g#ÚŠ’lC‡ïÀV°.Pe˜ù•5Çf‘û(#o^¶CÏ4%mÆ¢fµÊb]nbƹ`µÊ:h\-‹”R™!Ç7_‡âSÒsWÀÚªVLø¬À0–pÁïäor +x`Ÿ´üINI€}±Þ9¹J兀5098©¸âsµ§@©¦®@Ó€¸Ï[«Ý»Êáî§8áGc+Î^x6Ùa‰U¶oÜý2€ãeõÊ-rÃc•¤u×”!,N+ì³IîM‚¯ï”©àÃTû‰‰I˜€¸‘ÿF¬+¼î±2í©‰Ü�ðÞž>xWuÊšåÕø8aèO¢Ì[�)7â^sÂ’¬Þº†&èÏÇ.wÝù-iun‘üò ,>ÊD:ؽ�]‡€2ášIƒ +Z‚Q0„k¾ßÀD)3)nã[A�†S ÆThȳö‚:ŠEÐ{”ãÀ#Ûá9›ß‰ê¾„XŸ];ûH`§€‹Ï"V¦°Žvî¡æ{§¤fâ¹ +ÛRSˆç‘*ê‚Äü¹—hÌákCŒƒmÈ1€÷ÖFÖn û"é:Ô [Y—Yc‚ùÁ¸¿n\<vÀêCÅaiºLšš«€u„ p „ë°2÷………j¥'iʼnÂJòŠü1-¡HÆÑ¢‡‚©¼œ Òãúඵ‚·Â`Ðq zbš®_¿V¦OŸì‚íP`ÜQ?àX\m†Ñ‡«Áö cŒƒÑERi²ì./æߎèuˆty�Rr¨?œÜöÀÜä` +�›Û‘†ÐÝØŒ’RbyR-ÍuÀ°nÉÉ—3Ï-Áý1ŠœÏ�‘Q„(åå°z¢/ïN¹ï©o(þ³éدžTçÐP£:ç88cP…爆O6ü£}±·a¯‹ñfâŽvX®ÑÁ€@ÉEË?®û•©+¿I(0B'ÂïÆ‚]é׉õCHF‚,ÎJωl‡ 9ôòX,H…q.7Ý/}íbCðJ=Ó¨£µ³z{†äÅ&�ð+~oíFô¼g|¥‘°²}`ϬvÍšü%YmæyÍF|s™ÚCs™‰‚NÍcþ¯/ß >M'¹Â‹¹œ ›¤ä‡¨:9ì†%ãCq¸�ô¬Ë•œVO<g8Nx:—sÇëÁkg¯²§%& LK¡>L�'ÚïÄ$ˆwO"E+8!KI"i#{p_˜ÍßD��épD‚Gmö‘‚ÎPXL1r&w<,–7Þ\«ªAl®6O’Ý{€¹±iÙ¥‹ÀJîØÙaá9s¨5Ê~7''Nì`ÂÖ N—§+B¾{Ç ÒÕW~ÿI¨üª$‘NEL¥>Ö’Žß‚sÊ ¬$Å÷“õÁâIûtŽ?ë$bc8&beþEF:PßP߈¿? ëÆÄÄÓ3ÞW¿Â¶$ÛÙËø.l—ì…ZÑÒ„“×ÔB°œÔÀ¾ªygå{ê¹üO@LLX#БçµÆº" “œöÍÙá×Pù,·’ᬡ|Š1OôÆfÌ#�’»~ò-�g?>°'Hh;„Zôf1àr˜Ë¡P£PyO@ऀ…ÂN,Z)ò|�'y5Ê0©Òh@4HêqièÁÉ—™ÍÑ\|RòL!T¨š0!ÀÚ4ÝscÕï… dúrµPtƒ,›6½T^xvøÙ8lc’„rººqA1°?Ò!鍊/0¸;–—5PwIkcró‹…D·º²Mò°Ígâ„Yòü™wú™5³}wÈÎÝípŒ?üì!YµõücšHªÒ×(‚8Ü'i=F âžTãC "…ÉFÀ" ãåó‹‰JªˆžX\Pà‡ è\0\RldàíXtù-ùýãj€å5<ç7Ò‹ó¸ÐªÅòp” ¬œòÌs/áÂ,œLã €Dã@³Èf:ÍtÍVXê¥ðs°ØYÄäcÀ†üá/?ƒŠ¥j¨zðaÁõ¨••œ$é)©JOKàî‡5Usc»Û‚„_ÌßO‡¸ÛùÅš¥Fî õØLRJN¸dDŒ$ÆæÄb»ÔWr 9©H~Ó€„“cÝû{0Ù`Å…²Àº½ˆŽY¶½MѦ”<$‹ ñ»°µi,öfJA¯.~ئ47ú[`ëêªzxË”ÒeËî +%tɉ·cï£HiÆ}Øâ&•òà3?ÆÒ uÌ`]5€¦.j›ŒUÞ;l'Îü.D•˜u>ŸuÈ+3ŸÞc@ ØaP£1Qdž{y75ç8GSŸïŸcòÑpƒ�ËçsÂóíÓȇu ÈL,çyÖB ÷â’71vL¸ÁÖ�;óñ’Úaûnvè×.‚ì)ϊךœæ9ç±ÙÌÒ\6*®^›€Í4&�¬žü ŽÀI:Zˆu<^Ï·Ä'ŸÙƒR“aM¤�Ï*Pb¬g3æ5סגö\ÒùA�Ö#<Gà¨�¥Ð>�Uá`ÉøÏ”ÞG]G—ÑùßKÛˆ�el‡Â-þiò™õ‚$4G!˜‚#pGàx’Ðc¢>Šcl*8ãnFðíH×ÌùfÝ®.%&¶ +·XFlK’™îˆfÕËt\-ÛOˆº5éh…‡ZÿhÕ£š‚Ñ1žþ¿A UP<õô3RZR¬¤Í[·m“µ| KKae…mS µ¬¨¬TLJ:)ñ¦Žùù_R;:aT@u“FuÜP¾¥ÛwìT�øŽÍˆ-M« šN6†ÁÛš`ÃKçó¿þý>¨¨b>E–.[‹ nÕV¬„• +…ö¾»vïV./¼ô’T×ÔÂÐÄ. ð¡í†["í‹)¥4ý_[$Áà÷è¾5Urjn‚¬é’g7×+if5Bî¦Ã³êKËÔ‡$ –Œ½…?X·æ„Cp«k”%o¼¡ì½i¡¶}Çå†Y‰÷gŒì˜,îܵK©zzñ¾”ÆÓ¢ª¦¶÷ÄKyE¥²=¦:ˆ×ÁôÑF ‡êQH”u¢þV‡•U¦2ó. °ÏÀ¼õÉ×y/¥×Ld£©f)ñÅÓbY„æ(ŒqzfG>’oݦҟ««ž�üžü€|POÈj±Pñœ“ ÿXô;ªœ`_#p<Iè%�¬0æ)`-·^›ëžlç§w=Vߎ�LjŠþíHcDkÁ–Õ3‰}ÕefϤ†®®©‘w–¯�IŠðª mio\S[§,¦Mµ9uîÙ°q£òŽé@ˆ‰¥%Št¼èÂåß/¿¬âpѶšd«/1v“‘+ëTÙ´©SeŪ• u#$/7O0ìÙ»WòóòAfV¨ës.”÷×~ úÐ�vØê$'ûü–¾¹P?ú˜ÂŠLNÒ•VDŒ@±àŒù ùŸVý¥+ËHÂÒ¯öÃ/TXX ›6m–ÓdëÖmŠL¿òòËå·Þò=ÏÊ€Ãß÷=._¹õK²~Ã{c,iC‘ÿùyyØË©ÎIŠ´§¥óö–íUcÇHÕÕÕrýu×)òŸ¬ë² ÚxÓÐ…ldh@q˧oòUðpè#€ø`�^&RLÖ¤©-z™]|ù ub@;³Á‡òfòšãj},1°¤à18ÇbŽ' Qѱx£Ú&IËÞ~GÙ+Ó~—©¤¸jæùĵ×ÈC,FÔìèWß "mÜøÉOÊ[K—)oÚïÖ�‹Ó´²Ø9'Ç·¯Cµ|òŸ~XmªÆ8Ç4ËãjÈ ãt> ¶læ¦mo.<¥˜O_ÔE—^"=ñ¤Ìœ1]ví{"l€°»¦ó9ïÏFd’êQà”ˆ�ï^ÆÓõ@¡…`|/Ú Ó4±µ¥UÙSǶ¬1¤}nÃùM7Þ$¾W¥ŒÝ3±ýŒ«x +ZuéyáoHœür/®oš•-/nk”‰©1²µ±[y£ +B±ÏÌÉ‘§!$‹…éä^DD)N…‰#"ƒVt¸”žrFfœ¨\?=ó¨~ÇCc$Ÿù t2dz¢¯Ù¹.]ͤ1ïÕ¡cyn•^krú¤ÂÀ$ù(Ù=X:XJ†GÈ냵2ve$²Y÷«ª_ê±zþ‰Øn¯›FdƤŒµñ…•·%ðˆ™¬@ªyå@eÃ�\ü—½#„·jæà?ôÃõ%zWŸùìÊy©2Q¦ŠðËÿêBçøòô,d‰™þ×y¬Ã|ªM:tšï–àopÆù0"¥VÑ9AkØmÛåy¨“ÖH ¾´J× +ÌÂƇIBû\¢øð€Ó�éPuð°r ºŽº7ûŽ<XÛQE¼ÃïHMžSpÆÿhŒÊžòÜÀNéD³I³ß¯^–ÓýÐLj›ÀAß®Ž‡Àld°T‹ÜЖÿ (I@ø�×WG]éS þ~à>ÝÊpÛª9]å0V¦àœ(#@þW# 0̉›ÇÑÿ—Éì:Èk²+ÄÐLfà嵞x6:�«[ý€ªÒ~x¨úïºQçÃ5P‡å¾:¾ft}Ô1ßãkLÕõ×ÝëàUpÆñP÷k%uw ˜Ü(.P2cck¹5�¼.Ü’. pdˆ&X~`V êËðÝ|àf‡ÏÔMº®/¿¦º>�÷µî»Í_k¸ _óÁßàœh#À)LÀ”8ËP¨ú¨¼Ã`bJ?P cI¶‡<Sþ¼±¾~žÿ>•aÉWE£óôsTëþEC·<GàDNo'TzŒÒa ›£…Z06ùe–› :ô{S°KØh]—äHÀRX˜´ºÿœy´.áþÊg]ß7c¹TÞlÎ<›ñ¬nS52ªƒt)Xq3¾ùÍù;’(‘&†ÕÎ º„µ´ƒ¾Vé2.-µOºŽ.#Íç°Îáa`WêG‘È> ó7KÀT§&�åµ)ß_™ªc<ª*èˆ/áè?i›yºÜ_-xŽÀ8:÷AVõ¡idŽï_•À©“ùœyÚ³‰ç‡Àl¸ÒP&@dö0ôés'ü�è;è<]êrÕ6»¥ëøZ<Ø‹²v0G`<€Ùˆƒý¢‰Ö ï$§µäÙî߶V¿%ÔOа’ÐQH½0±úa°,’Ä|ŠþÁ|à†_ß}9ªš:×5t*Û¿ÿœøn×ù¼ª‘8bÁ4þG —Ѫ2ÒorPÉ3=%³”;p@wùó6Tp¨ Àå;Ž�@Þ *$õÝþ,}¿Ž:èZú~_¶?ü+ÁCpN„ LÈ*´b¿9³$u&¹| óUê–(ÞœŽ€¨i˜ô©sò#@‡Šþº#÷é•ÃÚ#ðïoO—øn~˜¹ïÁóàŒÛЦ¤ËÚÌÒZF\HØŠ™)Т“ë˜C€qó09«`Jýø@è»V@ç?D]æ?*̪†Õ}¯þ&þ;Q(HBëA O€ ¿«§;ÙÌÚ%ÑHón…¬ËD,lÅÄÚSEk1Yw�+H,õ4À™mºµEaƒ/v*Üï‰1¼ó�ÞFƒç( GÖk¶inÄHõÄàOpŽ€»Ï·‡qÀÂã˜i&›¤27›Ðþ@Ôãš/5œ˜Û0×±ž�³q LúHcíß>UÙn>üAƒœU _zv—ÄÚmRÙíD°šHv„KcwŸÄGr+‘6g¿$Dù¤iì”h‡_Å÷Pk¿ƒ×Óøç3ÿ§|¨¯½ú*DMÉ5 +}<ÈMÈÇ:i˜óÞìÈÀ~1º¤ {l‘ ¶Ú;Ó\’Ø›÷[¶T‘£ û²½Ã`Þ 'X-°nj”pïy§Jº~ºP^ÝÝ&9ñØ.|ûÖ3¤{ä>»µY&¥9$5:\æåÅË‹7ÊóŸ™!Onl”‡×ÖÊö&_H˜ Õëz"”Bs$”ÖoØ(+V®TQ5¹™Ø½wÿJþë+ÿ-/?ÿÜ~·<ñÔ?�ìDäÊ(„Ûùæ׿†DëÓ"—]zé¨úOüóŸró7ʃ?¢Bí-Û'?ùÑ]réWÉÿzFídÞÈ7ÿ¿_þJ¸=ìÊU«TøŸÎ;O5`à‚sž¥îaäL¼9Ä}•xèalü¶Ñ=»eñƒ÷Ë…—,’¥oüGW>Κ9S…/úÕ=¿‘;¿{ÇpþNÞ]³FæÌš%¯¾þºÔÖÕËÕW^!/¼ôoùÖ7¾~ [ŽJ>[Âl˪f2W²¼.cK$Ù‡ À´žRàåÿÙà[óÕÙÂèï`¿Ûx`^b4"¼¸£E +#•?oBm>¹±^žÉ›.¯ílV«Ë:àü¬�t¤Q® ª þªu®‚?Fà•—_‘g.K/¹ûWc+U¯ÜqûmjŠ +¹{Ú©s¬—¨˜\p°bå*D¹x¿úsfÍ–‡ÿCÅêNÀ¦ë©ªÎ¹çž�qBÕNš4iÔ}T£da'ȯ~ùV†—¨dþ¼ÓeÂþfdd¨H$æ"ßì翺[ÌŸ¯â†5a_gV¸øâ‹ðé÷>øÊk¯Có%͘6]ES™?ož<ŒwIGô“/|ö3‡rëQCK+«ÐJ?ÀÊ'ë|bpJžéÁdMÄÔ$³CÇ¡p ;Ü·ùÚòÜö!Šh6ʇÚÐ0ó}d1Eé°ÙDq–“q'3¯<3†¥âÀçPõ‰s¢îÀ=‹¬ï¼>Æ#0Lmãç|Xót«îéìuKBÌ؆Ù嘑”7'-‘fžˆµ ¥&»õ}-¶†á¡€K›W6ö}T¿PJ6#†ðŠú�•]Pà«Lúí6°¸Q—÷°ž†Uu+ÐGÎYÁ×ÈHvð옎€pÍçÇô¡×€«û ¯TUYш÷5™™™ã¾©¬g¸94áÇœôIÌS…›\µ?1ËŽ€q'zåc¶ãOH_G†K‡{oDÖã-¦N›NukÁãñá刺£åx¼zD`e_4ÐZ¯õ#b8\p Òã—g^>Õ‡ª|Ï×ÀË+ó.V©sb» ú0¹•÷UAü‘=€G®ê ã”Wú|8ý@•¨ê¾{ö³E~3”[χ¯}ƒü=6#`^ž›ÿôu}}°ãÒ*·bÎÍ<Xµá2 ¬ÌÐç<šÏ‡+ÓÝWs÷(Aæ¬4IR*#!j%·u›‚éȬ‡ÀNºþ1)0äGöù1ª¿dhQO«Ú(D¯Toý¯2êÜ_‡=×÷ës};›¦c:h9ôw¯nÅéð+æ7ðÀ.àѽè«!Ÿ›+vS”ÆCy>_ÍœÜ1?iøö/W§'þ°w+xƒ)3ìp>ëRå»ÇºÃ Pý÷éá|ÓÓôâÚ\f>gUóµÿÜߢ¹¡àù1,ÔK*\AÁƦ¢DOº²¶ï[€'„£wÐ+'Ä'í<Q€—|0ÿÌVXz(À%ùl¶ÂÒejÑŒ’B-s"(I6|‹›¯4do«ûáƒM†P ’>ú/ye*=âS6[”}Ä÷oüðФ1õº<§z‰ÁæÇCb|Æû掓€õq<ôÏÚ‚÷k“IjZ(EÖ‰†Ol&+ 2ʆþ$»Í ¬¥Õ¼ÏLZ‡åÄŽ4΃%2ÚðE¦“{8‰ôDoªûÂãx\=Vt<ЉáaÍË ÍŽu" ÛBGàO¿'Ë)•¶ZjéûÌÇa-¬93xþñóo#0žûf+³Ô8q°Ì)Ò„�Gú>’ÈVàÕ$µYrÍvƒèÔ<ºÁóá8‘�f¸ÓãèÄLæš»EÖö@eT?YUPú^+°ëü Ö#<@x‡‡â¨”>P²q˜ëø._ �›G+x>.GàD_P ´žÒÂ+ó Óý–f‘ÔîXM0µ9¥µŒB-–Ø:2Áëà|„àbc6‘dSÚnÙ¼góYWoÁ¢¥ÖÌg"°k˜& š“®Ëò �›G&x£0ûãÒ£Ðèšð&˜#ª¹´ÄXßåß‘Á*ˆb]Jž©žå® æDaM&)u¶ƒ°=>Cyó™o +žGàÃFà8ƇÁ¨"=-]êê뤽]æŸ>O9̧¥¦ÊÔ)S$""BÞ_»V>÷™[dÍ{ïÃ#T¶mß!ÉÉÉrÁyçÊýpÞ¿ý›ÿóa:iÊ º@É'yTâ‹Þ¸Äg² >ÐóŽ@ss‹Šp1iâDU„ªháÐm€÷ƒ 6ö•—Ë9g/TŽù[·o—p8í_…HÙÙYÊXoÁó¶}²eHòH`¥ß= K—i^Z_óâîó2É´Ä2ÝÉuNŠþ£%ÿ¢¢ÆÖ9^°Ûí–0¸ +Ò”’LãÙ"ËãíWvËì§&ŸyÎD`Ó’e«>˜Òj)M(iJiN†A/’ÎfR<ˆÍ£<ŽÀQ³´YKŒu³n“DÙŠQõ5ܪÖæ™ÖüÑ`®Ÿ2_xz“ÌÉM€wL¨lªï’3’$5Æ.”¤ŒÃÞ»ôqbI R•¬¦,ÓÀh5—$æÕä°õ¾ç(º(|œ°ÙÓô4»d8F˜ï±$¡;ýb©g£ô.À£‚è©î>Âhò™Ç ý·’„&Ÿ‹iºŸM3[ÖX”ÀlMno€"¥¶šZŽÂÀðf’ÛÞh–Ò»œž¥�&£`|¸ñ%FxGÖ^G ÐÙBÖ ¸ºÃ 9»L蟙)}#nOºñà18/þûßât:–fLgÇ£eËÖ*ŸœÉ^¦Úº:©ª® +¢v!î3ýŸ{áEÄîRå—³?¯õ–VºœX\o©¢óô‘|61ù(ÌB’§¯•õ*ì{þ!Æ2Ò'ÿ$%&ʪի¥¸¨È÷ðZU]%^±1±²vÝÒÒÒ*g#ˆ;UMeeû°õBCŠüü‹/É÷ïøî-TÒä‡ÿá‹Ó<� +®ŸI/`æwÑ�ª"jX¤Ë°š9ÊäøÏuPÀBCFG¹¤zŠê&òÙ£x`®NïæeèW3£=–<°y@‚çGŽ”&¿ÌhÇ2Hj$Žc¯Ç;Ê-P)ÇÈiƒÈ’€«“Y¤ÕFʨ†òÑ9C²ÔÜÓ¨$fàÕ Á0À±^ó³N”s« Ió¼D€f±ÙUd©d½‡{(édÖû2Ï$`?š‚ìÆ–v™VZ(ƒ~~F7<G Ù9Ú3æhŒw³LŒ™°G£Í±j#‰�Í}³Ú9›ËÌٜυ@—�àéu¹@\›o žGÀ7iŽ�S&88G€dîá‚q¦ÆÊÖF)Ô"ðšÓ~Rhz-{»˜ožG 8>ämµÉ¤µ6yb- ²–Qàe¶äÒå^Þ£uÈ:?�& ÐÙ£·ûÔÕ>žG"9ØÛ¿ôï—V|”ñ»óoé²·•„8)È—Ù[Vðzzzæs;;;UYww·:–WT¬{²d2ò¤vê7›Nòý´¹$Òë/«ß[»(af¹9i€×÷ë²ý�˜R´k.\8bÓ¥kŽñ‘û»†;b%42Z¢’äÞßÿá˜öèó_ºUbSÒäwÿz¿çtw÷Ó_}Õ•Êëf¿JÇ0£©¹yøùæÇè¨k=’¤öâE—ÉŽ;å7¿û}Àfœ`¯?ö¸¬yÿ}Yòæ[òú’%rÿƒÉ#> +—ÁíòØ“Oª½~©ëå6¡ÛáF¸ú½÷äÍ¥ËT›”ZskÐCYvàÈ4og=¢Óñuܬf2Ÿ[_Ë¿Öâ‘kz#™ÿ¼Æ²÷6 £Gå³NŸ·Ï›ôÚþcDÅ']ÆëKÞ0"bâŒïÞùCÕ`ãâ˯0n¿ã{êºÍøò×¾n�È lFmÀÅMå¿»zqÞÅ—˜œÃ/ñü‹/ç^x±ñÐ#‹‡ó›ŒäÌl•¿eë6Ãëõ×ßøiã“7ÝlÀÁ��cëu»ªÿÍÛ¿òÖ~°Î¸à’EÆ/}ºn'ßüöwŒ‹/»Â¨ohPÙ·þ÷׌òò +ãó_¼U]ßù£ÿU÷bƒkuÝÜÜl\~õ5Æ7n»ÝÀDWyæ�0lI#ç_@ß/ºØ�À©âÈhc÷ž=Fuuñ©Oߌ6®5�pêýoýê׌<þ„qÁ¥‹l¢ê¯zwµqÞý¥ËÔûpœø>Õ5µFé¤ÉæGŸ···ŸÃ ÃØîvæGKk«zw�®@Uõà/lðšãÆ4€|~ŸÃI.¼¿nG·u8mϺ„•ö^·ÑÖã2ä}?8jëqíø3ÃÏž>u¶Iݯ¬Çå1Úº]F7ŽæûöÃÀT0…C¡Œòqt'—\t¡Üûë»åOý«`²ËÄ©ÓáT~º�È€'øàòØO*Cƒí؉¾å»÷ìLv9kÁ¹ØåîßüF¸Ëû ·|V®½ú*¹çw¿~g»=ìÃ%&Æã„Áb¿×ðC¬rþø§?+lxÚü3äú뮕g_xav,:e²¼ˆágÏž%YòÔm-^,“gÎ’/8OòŠK婧Ÿ‘Î?O¦Îœ-û@^fåJII‰Ô×7(ÿZý,ó‘®~<²XTL5g¸ï¬³o_wÍ5pŒ”„ÔtE?úøòö;Ë¥µµU² +¥ÖTç\x‘Ìž5SîúñOÄ©Œ-þò÷û@òvHœï¥Drè-“ý|GD„K +î!&×»(° ?x1¼ öëII#{é¶N¶#2(a-rò½%£or𧀊÷˜wrÐㆠÔ![ÕMb†fžóÞ}ÿ“F?¬ªeãë•ôöï~Ïp$¥�ë~ט>çT ‡É¦{Ãò…—^2Ó3o}û#õÅn€7²ó �ŠE`ø^ó ã×÷ÞkpõŒKPOÂ"°5€Íp»=Ãí3iÒ´†�ÈaìÃ|>¤ÿðsÁÿ!T”Q¶¯ŒÅ°…‹®OìxÃÍŸ1nÄûŸšnÀ^Õ3ÿ(ì§�˜klØ¸Ñ &5róç¾€ÕצžÍç3é~bACýãÙçŸ7Ò2T™*Fg²E9Œ›6ÿsÛ·Õõxø91°vaU]§Ë9«ê|{Ý}ûÁ!ófßËÜö…OÁåiÄBD¯c}ä*þÔ3ÏùÓ?ÿõoòø#Ëu×^£0Îæ-[俾ü±ÙÃ&Ñ}ÅT§×]s5¤ëý²eóFùæ׿&µû䜅åÇ?û¹T×ÔHn}˨#1v¼÷üê—òú«¯�+ÖÄŠ3gL—¶–fini‘—^lÅÅÅÉyçž#[6m”<ô äçC¾`ˆÃ£žépÈ'n¸Ivk®X¹JnùôÊô°µ¹akÒä¶;îïýà‡òç¿ý}T¿"ѯ¿Ý?xÐ7oÈD˜-2q?£'À‡öôvɺ5ï*ÛcUàÿÑã±àŒ3”íòªÕkäú³ýöAÂPÓŒ€ºº“Reš?ZP¬D©3…V::¥ùF +µx•æ5…c,߀Ù� ÎÇ[bœ¥ÔÔùÁ]ÿ+•UU²eÃ:¹¤3æÍ“¿ÿér6ÈÁ•«Þ•îÖé‡$%Åç' Ò0$Û™Î|ﻲð¼Ô¤' =ùèb¹â²E2 $hUUõ(241!AÑ5e»vÈþü¹åó_7 ¸¡MJŠÄä‘‹Óé’‚‰“ä”×\uÕððµÔÕHmm,<ÿY·~ƒÊ'©IR’©§Y€eþÂyµa��@�IDATsä'?ºK]r‰d¤§KÉä©JسøÁ�Ü»¼µªÏ’¤q±±½/7Ü|‹üü§?‘h�4Û¥àè‡w~_ÒsråçÀ¥úÇA÷76ɬÇg|ç¶Û¼¶´ƒ=øÿì½gdgv¦w²2«ÒTeyï]{FÃf0àÇp¸C3ËWÜ`(´!ýßRèB±A‰2Ë]înpwI.É!8˜7 ´÷ÝÕ庼÷i*³*KÏû%îàv¢zÐÝÕ˜©TWVÞ›yïýîw¾sÎ{ÞsN6ÕoùüÿÂý½ûÏ/;*{·Èyer +C@Bš=W}hÿæ%†£üÈö]\hÿl÷Z6úns³íFæÁ¾÷üËi_b8vôÈ=‘nY9ªk%´x·¤Î/?ܲp$`þTB/<¤oóTz-1÷§Ÿ„ÝÓØRþD½ï-»¬‘ÜÝœõ¡É§ ï½øwÞ±éékmiq©‚KËKv�Ëã½÷O[Ks‹5759 ~ùêûïÿù?§:å™|8‰ÐTPðw¾ùMû¿þôÿ±_|Á@ûíÄñcößý®;ö^á³”Ì {PBá&-, ªÐ3‘VÜøcà_ !•–ÞnŸLn-¶»¼¸Â‘ÞýûgŽÀ¢}ýk_u(ýÏå•e;tè ‘‹M"ííí&¡ +.2ÃäÔ¤?vÌYË94ÿéþçá?ýþöu܆_õm;!Ô=#ƒÛ +¨ö) ü^/?¶i1ж«?64¿žoxÚ÷çiàÏ¢Ö8fñ…½–¡þq“6"¹27™Ç÷J~àU˜ü°-ˆUø¥»ïŽÀîür#„·œG—ï´d Wúî=ä |XeÃï3{g•ðÊÜöûÌÚ·+ÀÞíþÞû4~D¹°$ŽLéTêXèß<´Zï…—ðj+ú]ÎËî¿»#pßF@ùÍÞVX¤Îï—|èÇzÇúSÑb» –7z»¿wGà>€Q!!iËD9ÿå`¿ûO)z¥4€ÂÍ}ß6ûv5páHíþý3Gàÿý³MS³ Sú È0b±iûþ~hJL§×]Øhtl̽¯l¤k×oØÐð{÷½÷\ŒùOþôÿvû~ÕÿñËa¡éë¿wÿ¾í„×;v»}Ÿ ¼HN©ØQÛm" x=s¿,¬Óä!¬ú¬bgJvÈÂX*£iwûÅG ¢¢$A¤w]½~Í ¬p³0à´ïõ7ß²Q„ZU&E=ñ’UV–“4qÂ¥>qꔋý’Õôk‘Ô଀©R%7ø¥šµ”ëë'qxŸ‘O¬ŸBäYûõ…™>3a$eÒˆØÖÞfïÂßmh¨·´@\âµµ4Kµ¶<ho¼ù¦J½W +q`A•ê³•dÆÜp„‚¸K2¯ç;´O´Ä_÷Í[ävÃHŸn&hüDä¢ð6?ª\(¨Þ>íohægb…P4áâŒe¡Õàõ™` †8»JOÛnÓÀùMÇø5³”"¸»m?»¼ý¸ü²ïjÉr¬+ﳞêï_´¬l†ZÙŠ#{›_ðJòö|$ÖÞ‘ðï{ ¯.¹PxõžgVëõ®ðjv·‡1KÊ;—‡(;“×{“ßþ²²…„’ÐGU:£˜ÞþÍÿ÷Ý{üGí¾ÞGd¶[œ‘KûØelwJÐìÈüÛù·Þ¡~뽧߲ν}Ÿ) 쿉Ý×»#ð¨€gæþ2× }üž›—ä?`W€ý£±ûÚÀvZdwh~¹PJa!íÑûùÄ¢Fn·és…-çZ…¹Æ»¼Ý(þš¾ç\ÿë_ÓáøÄ·%ö4i¡{åaÁºè<xw¿v‰FY¨m= +f!5sW€?ñcúÕþà£$Àº–Géz~Þ“÷EpXï>Ú¿Ïÿúî£ò~ná{Ûý½bm7*¿ÆïyÂò( Lá5=J׶ÝT +-WVZ¶]Vª â¸ÞBJ¥€)ie¡Õ~^´Î¡J–ú\qèn»+ÀÛ=_Ã÷$ŠajóÆûÛûý0‡Å/¤þ×ó>͹ +…Óÿ]…Bíß.PoŸÆ`Ûr³Þ»¿wG@#à ‹bè*'áõØûý GÊ zkÑoïý}þñýÛ%ã{ç‘_¼]h-§*³Ýb ?YZzG4pß[Z =‰wî·J/—P‰q§%–©+Æl`1„)›ËQjH7TWrƒB¹î‚á[¹€ÅË#¦Ê•úRM´`Qžnƨᰀÿ£±¥e31Ï—žSk#‹ÉBÐ\“Uuñ¨õ¾ÊŨ +¦&*B¨Ð›ÊÆĨT™Yç#a[¦tŒ+zÂ1Y¾—šÑ$X‹—|Nr=s¼WÄߺ º¬SuÙ|ïÆFs†,J›˜ÀV÷Bùr¾WÈ$×É×¹ã‹t-Üoš{( +†(íÌù£:ï +Ä”0ÇÃ.£ ú:ý‡Bìç ÓXlpÿE¤´ õ Úz.q×(ÿ¼?<!½×ïŸ÷ùûµßÖ{ýöŸ§§§Çêá]? +›7nþk‘€Ê¸ÙNˆ=àJà”¿'°>ï`T™ÕÞ&þ´‡Tïˆ�ÿÏÿÃÿj¯ÿð³\“5/c‹ß•XïAÊšòß‹”yÕ$/ [Iù–}å=i—ÏÞq“¶µ»ÊR‰œõ]³ú†J«ã'•Z³ö®zW“)/³‰ñi&uÄ&'æíÖ^[woÙfíÐá=NÈ4Ø##ãRÁ ÙÜjô ‹Æ–<¸×¾ô¥/r¾$7N€ËJcÔs.åaÐyŽÎ·ûûàb×ÙÊ +]×’âˆ,ÏXy)B•]µÄÆŒ¯ÍÙ:‰ÆèèPl%ÁuÛÊVÚÜBÂ<b•Ñv«¯i¶öž^Êá²Be‹àp—X +Á«¬ª´4œîñ;“ÔŒØV¸ÈžûüI»~æ²;v}}ÓW¬ŠEemeÝêš[-·A²÷208lú¿ý‰õ-æ¹ßvzáWå÷ŸÓéâÿø™ÛÒŸ,Ó¦_z剢÷¾ö)<„üÓÍPöˆ: Í‚àm¾xo=øߥe«¬ŽÙú*Ú…ô³b4g¼2fÑ +³D2eC)”Y”ª^ê‡mr:i¼ÙgÓ£´ii°Ûç¦Äe;üx;š0`5µQ„§Êê›jœ ÑGmYbƒ¤°%Ñž'ž¤Ær:a«+ 7Gq÷›VU¥†-„/eËKI´ä&Ÿ)vZÿË_~Ñ::šI™[tš°8´Æ¦:§-%ôÀ–]¸p-@8Óœ3má’*ëèj¦KÔ-@‹+3–M–ØfIÎ*ª¢RÎ\KÒr(ãâȲµ4Dmvñ*Ú·ÔÏ¿gë[_³ÊX+Ô¢.m$Á¢šï]wÂæ<ó“£k‚ó336…Gmkƒ6%pÃWçðgEl°�\¸8@ÆUÆb‘rwΟÿ`wÏàFÀ/¼…Câ ¯Þ÷UÎêò¬ï@)»Ð„%@KÛŽðâ"¿Y¡i‚Ììý‡é:µ±ÁqK'ñ»‚öôoì·±‘E+¯*µÙ‰„^Õ$ bÎZCK)©kt6(ÚD°šlyqaÚ@#Ž¸ì¢¦Æz§9+¨z˜MnÚÜø5ˆ(¼ÞÕewÒÃÖ³§ÝÖSZ8VW_Iáõi4hm²ßüÊ‹ÖÜÜÄ{cTW\v¢4Æ-LbõJ¢¡—MNN“ ÕdÝ=véò%«¯A€eZoؾ½ûY”ÒVŸmtÂÊò,×uô$±&a)’Ü’•V–¢-S˜Iç©°¿iïŸùŽµÖï±’¢0î@£zúóÎßd1šŸBÓ®[Su¹yï<fu–ûû01c-ãJÀÆJ£VV³…¹uˬâ~С¡$¤bíš2y ¾»=ØðL~ÿY¤=¥mýëí¿×>«}Z|?.ܸ]òÓx´;"Àåø¢ÉÅugÙí=F£«Ø†]FÃmaëãÛYÄl~u‰.)›˜å*VF#„šÚ:›š\À¯£�ØæºM¬Øè9çOîÝßfK3øÄ›¥vetØšªiä5F3²JkíÄÌ] +¡yûláJ.Xmcþc‘ut6¡õWÑȤV–!yàFMÀæ]:âæFÖÊâ1üåMçgë!©ƒÁų]ñóh,ÊçòÝb¥%˜ËÅÎßL"˜Ü÷š~d|Öè°%-&ØO#õ8:Zšåš0ËSK–ÂÞ³÷°Í/ÎZ$³U§5’L‘M`J‡’9î=c%[Qç‹ô Ð .ˆ—Ž/¶¢R|}•-ÆtwÛùØNx½«úYû +…×ûŒ÷þŽðÌìK…®s6xcѵB 0ÑBöF&M¿‘"ë{Áeî¡%÷m°24ñàÏÊÒª>Ön«ËigÒ66Dz±Öμ} S5lÕµhlLOõ0Êsüò” ßw竪®°‡zLíV¦g'ð½ÃvùÊm—pÞÖÑä„nphÐúúú\k–H¤Ô ž:òE"7Ëá*Å�jk«°uäÄ×~EµÃá2´kÆçjë*óæ,ÀXcS-ç¦@7ÀX<^Žo\mOÿ‚ýàÕeÑpÌ‚of¹ˆ… Ç"�P†Y,™k!ïùêÙ¶F¢| r‹[+cqmž”4-4€c�iQ�¹Ôâ +–KžµÙiúé ·„©¹EðÌ{껿ڨX;}·E—åÓ +”*4uqº+ÞN¨×°ðÊüŽ2Çïˆ�sohß«HŸÃ–'P€¤[¬"hû;,´±G17Sp¡Èத-µ’³w^é·´v`hž}±yË"<ÍÕ62<i•5Që9Ðcý€\+“i;t²Ã*ª£VÒ›ÛÒ’tMÆbQ[_eå¥VrßÛt(wàV) •O<èi‹O’uí9{»»úJ‹‡€ßÜÙÕh†™»4F[ɲ0hqÌ™Òê3¤0HGgþ®ÎŸ�4®7¢ªn&õ M§l-“°Šâ|‚ááaî£Ä–fÓ€,naŠ y·B[ÖÔÒhSýö¶€ÀÇ«éã +c!¨ÙUØ™ûÑ2uàõ®øJ.ê¦{è†6ùªþ¸¯ñE“Ô‹zxª”c]©YV[¡Öþ¼a}ÐjÙRúí´vD€ÓL`å*‡ËŠ-·–Ep‹mÏá——Ø,;º{*-tkËiÆ'z´uë»qÇöì±åæ%ˤ‹m5±lu ´WÏÝa ÌŽ<ÓÅ`á·Vã7ÇìíW¯!HQ«jŒÒ7 R]góø‡‚¾ÐØÍzþl“6!mvåò-§5Z²i´±BPI×µïÎÈëŸ[ŠFnÂçVÈIÂ{“Ž‚ÒÎ +/RŠ„)ÊVœ›™G3¦0»ËHîNbvc°Hè3 @µê(šµ3KAaeUäX¿KàÞÈmØüÌ–GØfFnØâè¬5uçÞ’zŽ ÕÍ63µ€i=Å8¬Z8Vmë š¹Õ[šf3Wm™PÎjªÔãxG¯»Î_ç2¾D| l¡�{c#Îtmëmêdámp/Ø{o»ß;ò„µBiË$�[°óê;*m¶+ƒ ®¼7vã’}í¾À„G0)£�4_xñ‚¸ŒYBì4˜"\mWÏôãó†ÐfÄ„2vôd/B¹dÞ¼ŽyZj?Ù˜S‚І¶.FCmÙøøuo4¯ÿ攎LßØÁCûíÒ¥ËÎÄ~â‰çììÙœùª&ê4ñøø8�Zܽ~â‰'èjx‡ÐR0L×q’\òª©>HŒVm@‹ðOJ’6Þ¿¿ œ¢^TæîI»µµvZÿ?µÔZÒJEµpëéí´ÐVÒÖ—³\˜Ï^O®Y.1Ï{¸Œ]:±ŠñBÖD1¨óë–XÛ`ÑcÜ8·[¶?šnÜwÿy°# õÚ…²§d{ …q_™Ô^©œBá•I- LJÀ¿í�CÛ#6ÅžÏl¦-ÛÆ,-v~fa{÷õKU‰Åˆ©õ/€�[ko“u¶ÕaJ–ƒPÏ[+~ë&Z7 Úó_>b\a¯½2‚°b3ï¿;h]{*!p ‰13¿ý7¯ÚÞ½]6Ð…0L„ Dk–ÚÑcGllbÄFÆFlϾ»zõª]¹zÉV2‘åóNM[eHAØWОΤÎb.¥Òk)‰AȈ²¢h^Ÿm«º\Š/G«¥©‹¹ç õ¸r Å«˜Åq{ÿô+v£¼‚û+³ô23hó™#ÖtýâyÌö9@¯˜eMD Æ‚Ð[ÇÞ[f,n&¢É4ÖAÂÈÔ)W•Ù:n^‹P±•–kiÓß•`ÿ¤Ð¯5â~3×> â½öIðýÚÚÿ¹í˜ZÚ¿#*A;ÄŠ>´K.b—OAÖf¢‚Ú6tTØêLÚ懶hzƒPË4Œ0Igm~Òþ°„aÏÞV˜B8+ìÝ7Ïç]ÍeÃ.Ší…¯±½øÔ™¾*¬®*Â0Ó4àúßý²#ald‚|oÚnÞº j]çª$Þ¾Ýgÿˆ¾Ã«+« ÞÓvòäI{å5ÑFp¿TMQ–úçYT!kkkB€—¸þ ‚²äÚŠC„%”KX±XÌilUÌ,ÅÑÊAö–ª`!ƒ9µº¼È5ÊœbQ#¾™¦ßp:Å=FîË%lÀq“6 ëJZcs3™¬Š¾r‹U–·ÚK¯Þ´hT?WLl;2M¨iW~ýr°c¯€ªÒvÛ½BL:VKïöŸÊ“b}‹ÅˆÏÉòÀÕ³Æú +×ÌZæîô¤U6WYE l¤HÅ–µî©³åô‚í9Ô„F +YUyܺ»ë¬xÈJ«�:äu´ï±Ã'öÛ7¾uÊ¡Ù¡Ç[¬¾¹Ú!‚836[ UÎÄ£9GìÎðàÐ’õôtnå„/:51c'Ž´ïüÃ÷©|y2G›½üò07hÙîÀ/R2Oë î¥IéGLh´AÌ‚4‹L²åv–ºÉŠ ‹Xâ™>ú®ÒXÁŒž•Ã†ê)z%®Bu]t2l›Ù„Áš0¯E:½E¸©4!®/‰›ZOYUMZ¸Îz··ÞpÕ&,1=pø0n¡ÁÖ~èÏw÷„w€Tì©Â_%“Ù£ZÞý©<¨åÑ)÷ ÌÒçvD€7ШèU&šB'›pšõšPJ¼Ø*Ã65¸`KSkVŠº:“µâ¦aÂ8}קUFØ`ÿ¬=vò½ðâ3vôé^ë:To•%öÚÏCÉZWo‹e’ëùP áÊJLXù‘0Ÿjë¢öâ—žƒ¦'Ö{òäã;6mäθ½ú“7�‡ˆÏ––;ÂFE€¦Íèè¿‹]hF"ô×.þ²ã$C“|úÙÇívßm4 ™ñ?%´³³sô&f³´rÊÒë§Ý›[x…¤�áð±!‘€«BÁ¦,…OçÜíûº8Ï:hô¤ÍŒŽb/&dT:¹¶øwŠý!››çý¥€$V ‰håNZ„EBá¹Ýíá@>dx÷¢éù¼^R¾w5Z[=FUa…ùШå}ÞûœÐjmZvÄ„Ÿ0XøKÚJHlôve Ò>ÀL4Ã5„/W´aíÝ5LäRxÌôš]²£Ç÷âãfk§Ý°òʸ{óªºbÍ2H³,Ç$&njäv+d—.Þ 1aÆöíïqšïÚ+ë4�R-ðwÞ}ÇRÉ,´ÍüV±ºDŠH!À3ìÍsµÃ8–Ò¾y¦Ô;->ꢞÁŒ ØYøÉuµ£öØcÇÑš)h˜k˜ë3hB´¯MY+ì®å¥5ŽÅGrÿ„+Äy–F>Š~³`•WVXéÁ§ 'ÀjêI¦hj°E¬‡™ádß²¦½=VŠ�o¦H�jzýÝ%γæ,ŒÂ®±kï‰Û·ÿúuYkôGÜY=øÝíÁŽÀÝâû³Îuï#óA¨üg=Ð×û&¿Qµ#¼K[~ðê!–8¾0ñÍ HµP ‹$Íø˜ëËË¢=àAW×AÍ +@X€·üÚwNCZÈÙ¥Óƒ¶÷H‡±ÊÊâöÌ“ü“ƒÜ΢@l³³¦ðijœ‡ëêu•Ì’}õ·ž³ýà];|¤?wÞ¡Å';è ÖS)Îöîv@«8¨ô%´1´M¶††FZ[[µ‰É±¼iëây2«×1ÓíÌ™3œŸÅ ‚úÕ0‚Ð=õ·š[Kø+0›Ã€w*8ŸÀÃk¶ ¨eÅ%˜ÖøÇ« Ñ=û³æÖ+¯çX‰óêÚ*››ÇŲú®nè4B\ jŸÅz€™…ÐÜ^A8lÜÁŠ £®opN)à{Ïw_»ÿÜ¿ÕåÏÒ7‰Vˆ³˜ì2ÿ¦c…<‹ôQØXϤ¥e+W*¹_µ³ôpwD€ƒY²(iOþFðí° +m˜fb‚kª"¬tñ5ˆ Ç)4á¥×gìj¾r}˜C€ÓžþÍvå|ŸÜ€î +;1öš}îËÇèÕ'ú¹ç1go ‚05iÜ!¨cÇÛhõ¸½ôí7Ðäݘҵ^œO"8tš?¼Þñ!ªqÓ”Xcc“ã +QÖÏ•+Wˆñ–YO×~)®,‚…yÍ\‹‘±T_W…©ßPK{¥ Š~)bˆ9^^fËëhGþO’±™‰ap˜þU±r+‡x…–Y‚ÙþÌ×¾eô¶Í²i_Æ,O§väD쫰ݼ‚Õ±iƒ�z›$3ÌÏÁánŠ;ê¦Îµ»íì($¤TÐí6‡<;+éã{…Ú„Wzûoõù�^×PKÛà7—À®‚8O<´½ÊÖ‹ñ„£[LP„Sókß8lEë[võÊ°í9Ðfã·çìÒ;Ãhé-;ÿÆ«Ú†µuÇíÈcív㈽üíóŠlrì>ûÛÿü“€¬½‘xªÈ+öÞíshªûüNÙ0™J5ÕØYåÖwsÜŽ=jo½yšÐ) kb_ÕcÂJ{fù"äÈ2³y0J>í–u ˜QHrЊ[„Õ ‚yô(/z?ýø‰Cvó}zvѺ;:-Èw§ˆ×†sAâÇSVŒbWjb @⸬±²X ”ÐJLðX…CºA˜]X•õ V¹Õ�{¬Ñdðٱ繩FÇ5 °Ú¯§Kø{ÓÒ\×GÖÀ£ÜýÊŸ1÷Bžµ¦ÞÏÅXnÏÇ·BV—ŽØþÈö¾¾³´š°¾‹“öÁË·0…‰ÿâÏ3 § §ÔAm<xp?ð\ÎοۧyÒå¾¾ýãKð€W¬õX5ì/CøÉúÖöÕß}�(lÇžèyn´*·Á«#n27¶Öƒ%›ga€,bO?÷”KüN`¦“$ñÆkçÐVø¼Ø÷¿ÿ +¿Ãø¯›€L¤3bÜ*d$A–æS³)á_?baí۷Ͻ–©#sH€œ~+Ä´º’´‹®ºÐ”b³ü}ßœ¶€iÏ>÷4äLçVE>±)êëIØ g¹½½™k¯ÍIùþ¦w]W+)—qÈ/¤š@žyã‡.£»·ŽƒV]׆ÁV]‚`ó}�Y;ôˆ9ï¯÷&”XÈóv�+í/Üd.+¸ÐÒq^!Ö^"¿÷ÙÑÀ 4Yšì ’rnß –ôÀ¡‹‹hIHÿË-Ь–Å·[]ÉZôÈ$`QÏ~üBbªÕ˜¢Òt·o�ää@~ï`þö 9¹I?IØ&\ +äÌ›—I(¨Ç_Œ»ÔC59“_\ƒO¹L–ϵký˜»u$Ú—N +ãçV#PÄdj)D\ÞB º yˆ‰(ÂïDÐûo!6ø³ êØâÎ_ÙÂg&K’áΖ¸ð•À/Kñà îW(z 5À®æT*ŠðvàNã[^ÂL *¨[aÑî2bTJš"víý‹àR;° +6ÉZP¨©²6ÝG§°@öÖÛÜô´A�ÙBïúÀÞt8¿=dYg“0ú‰I„ÚÛ$Œ~¦–‡6KèròûÒCK¥tˆ¼þtÛ†dhaâ»U ¾dMÜY!T´fUÍ厧jÚèд}idÎiÑärʆû¦m|„|`÷UV'X±Ù™9ûÜçÙ•Kƒ$tØåÌ<�VÀÒ«¸1‚°‘C|sÚ¦ €B0ÌËtÖþÉ?ûM€hz ™€‚H™•™Ñ÷ÚØø(Â\g$1œxü0a¡(ò’n#å/„¹Ÿ€ÖXGŠã¢¨ùš +óHXEüX¡ˆÀôô‚Ó¢âPÏðz +2IÀZb ßH¾v.¯rZ¼8CPV¤ÌKEÈg3EauÐÞ« Ü9€´Ì¬ çXH�úXäFï,“™•/”M@hA€]ÂS»ÛÃ<ªŸnKwmÚçQ¥…Ük+üܽŽÛΤ•ÕmîÚ;uk™23ä�“û÷¼Q´nµ”ÉZÄÄ„ƒ¿¸©‰¤ÿà&BÝcKÅÉ'ö[}kÔÅC‡'I�HÙË/ÁW,qÀT1HoemÜönÃî%ÜC¿L×$[jí¯þâeûη_³wÞ¾€ÖNØa@ú¦J×ràÓèÈû, iÈ&ÍZÄì?:]ë4©YTÊ(/¯t‚'UšŸˆ +#É”žžžqB/Í+NóÔÔ¬ge• à¤ü!å +W•5Xp³Œ…$n–æ1¡4Ž“¿¾ £:h6ƒéï#H(„½ö﯇â‰ö=ÖÀòHQ¢u¥i0¨ á»ÛÃù°Ò¬¨ +dSeR´“¦Ö{:¦0PÙIÚWø}wƒÿÛàë8Ísýë–€f¸B~f³‚|ØÊŠˆÝéÄZaÊQ*fm•hÖfb§vøðA&7~‚ñ÷õ&Žä~Â)Ës„m ^äëöù/Ÿ°†fåãâ²ÂÝžlB;*4„_©$€}#T+IVTc“LéŒ}À ªh } Ë@›|Ú$ÅópÝêë'Áá‚ÍTÃuB+¿uqRñlq¥Å´Ú�d“‰m[$öƒœË¬Ï:39…–“®âþ²®öÕEíjj›¬¡î=uê7]™ìwúnÙØÐ0è4'úP»ÏÏÍ“?}äýï§àM7sM+¶‘Û…wǬ®t&gu¥µPt¬Ý°ãCß„< +¨wzÿ^û$Ü~ÓÙûŒtµöjæYžW‰ÅاzìÒ»VÚ±ãOïAS’ó;O2þÈæ*…Ü‚Mvæ¯nƒ&S‘£œŠ“k0”6mïþ=–@À>xç:Ÿ™8ª„4Û?üÇ×¼_± Û‚¥¤ +Žµø¼×.bRÛu~ËÏâ+OO¬8¢.×2ÀS)‰ +(Q4±|º§£Moák—“¤ M�V +BÕ<今ۡ|UÛؘžÃ'&æÛJÀ–Jõ¨6—êq©2æ*ù¾¬*®–ÖÜü,ÕAHoÔ÷@ȨŽ7ÙÒ*5¿ÚZmnevÄŠKÁë,„/’¹ "^„v‘#%ñæ8ÔÜ¿zßéœ1Lï¥@2bÏé”ØnZ¸Üeïþ³Ã#P˜Çë¿ù¾Û%+È-S< ná&ŸØE? +w<Œ¿©ÈX +RzgrÊj:«ìäçºì +ˆóß²3¯"@Pï˜õŸ™Æ´fÕ!ì’] ¹29GN’M4xr½‘ÂÔÀö.oÙ‰g÷’•¤ÜKøÄøÇ!JÒ”žWLuŠM›…Uf‰©¤l~%‹Â~ÊàË'ÏP‹kjtJ”/8\h´˜V1Á¥‘««”EÈæ—3‡N’yB|ó³I»yc + ºŒéLZ$ŸO7ÖkÑ-õ™M4óõ«·!”ØÐÐ À¦1ÄíŠÒ*@÷-Ü +Ls‚ôõmï‘}¶¼J¥ ¾C»"¾D™Ÿõ¤Ë=ÞÀ‚˜œGx1·¶ŠH\ jåähÂgë,LË ú"ÄðÏÃx¤»çøpüXˆ7(âìýöÞ×o½'ô9OÌøh¾G€—5#âÛÜ{( þÇEÛwàƒzÙ ¢Eš)GXå½—û²®m¦lå÷R–u3eͽUhÛfL̸)"yçÖ¼NX³ri‰n`^nQa# øúÙ禩Ƹ0Am)B4ksLü(•Ô›R±¸-²…R‹Wø{q*¶âóQŸ:-'…âΟ9G’~9B±‘˜±|ÏçŸFÖM†#`]0´TOqWQ!åóÚE±æ�½ÊÑàq2Èãu>N +´Ðb ŸÖÂ+?|DZÃ䛯£9CÄ]ÒîÀÀ–ÌöU2«a’e( Þ›¡¸ÀYH‹$H4´¶áÿ²ŠØUU—±˜@ý¤0Bi¥¸Ô”ÛÁs^!gX²«ÄÍÝíᎀ‡owVÿÓð¸Î:Žõû®Í/´Jü÷oþ¿wD€÷'»h&W +9¡Ìöµ™ÁË’b$6²¹£šL›Éñ*W"Îäµî9B YþòÚ2#é@Œ£9½xûh;ù©âþ9Å¢V¡¡•B*.ba ZZ°ŽL¤8<kUmL¯~!ýpeš‚ró˜*ÔáÊ&ƒÎ—œŸ^µ#GöÚÈÐÔË5;}úœ#…È^†-•Ck)Î`…Yë JßSÚg–PXÔ>0-6¸Ô|N«¶Ákí»vó?‡pâUU6¢„íÅ.Ù÷¾û#œ,qq’Ö–¹hTl4je]ƒuì?bQrˆkëÊló*÷·¬‹…®¾©‚û.Ç}Û=s%Œìnw +ý[l–ÿê·‡ü(t…áßJ»/ÿŽ?Ô¤wüïˆ<7»Lñó2»ùÞ$î#…ºNµXçQÀ¤yüÏôf.3ÞV‡ŠìòÜ +và“â¹Ãק1©ÿDòû&¥cj ã¬WÑ`)P\j07 ÐŽâ]¨æ´á•ùög£‰AÀˆÆeŠÝ˜£ui¼Ô‚axË3{íçA£vã’ÊÛ`ŠC¯LqŽþÛ0 0ñ·øÐÜì*a¯rÌêÞc6‰kÐuŽ#hå°Íª�•Äy"RÞ®Îã:'àÇ®b–Sš{Cð-Î,Xjn�wâ9bÒh`€º@Ð+Vas„©¤•C,D5p£çì?ì‹“bÙB°Yë>ŒÎr\ĵÅ)ý3·2Å]Jÿ,íš»Û=§ÂÍ£=¾¯¿ý1bÿ~}˽öÉ÷õöíˆ�§Ñ°ûŸh·›gF¡nÚÕ÷¦ìЩ&*lÔÙ…·’üÜÚƸ/*¯–Bn–n‘Rgw`"ü¿J*\¬Òý`5½hq#¾ö•'Z,Ôy~jÕj�y–§–mq$-SL¾.nkë+V[]Gêauá,%§¶k6dûtÙìÜ¢ã/'VÁÁA¨RÞ¿pŒq»xé–%ˆG+¼¶&ÊDPDš°N E¢Ñ*ªmPt=B«˜*JÕ*Î,³J~M�)†ñˆ5Á†*IR¾’ ÊKk×y¼¿ßꪛå•r|‘2ØÞÕÚÎâpã†%I¼s{ôÈZ´ý‚í=°ß&g碖Øz )—W¦¬e~k„)°+¾~¡ø,¼fŠ°Xo¥nþìd*=ü»ÁàǪ"èÈYßÙ1»ôö!âAšZ²†^„«±Ôö=Ñ`‡¾Ðl‘jb¤èRIó"ô/¦¨nQjûáB«´ŽÀ¢®îf;zªƒøo3Z•c +å)S‡²–äÔ®R\®Üª[b¶„yúì'퉧{(æþ¬}ý÷>£kjçmücÌ{ qç + +°ŸÁ´Uúc9ÅäÕÙák_ÿU-"‹@§ã&Åô }¨ÿÑÊòh08MéÛUR3n»K b-0šv19±¨�¥Dálmù»à� ÑMm\;a)Êó¬RíR›ú"…Ñ®›êqæ:R ûq'>ÖD¡40Eév&e¹ÛÝvnIJڴÒ)I¿07Ø»R1·¶ó¡%Ø @+^þmG4°ªj,.¡9™°˜‹GŸé œƒÀRlýê›ã6;4oÕ”ˆM,fIëk°kgIda.7ÔØtbB,¡\ìã{I¤6ÕÕ)»SLwüÝb²åÄ„?±Ç¾ñ‡ÏÚßý›·m$x«H‚ÍMã‡Î8à©¥©U˜³N_¦3Z¹žzÏç&ð1Ñ1´µ\DÆ�J%Iz2µ]ùößþ?xƒk0—3ÜÙÙŽF¦ Œ|+1sž²9bÃY=ú@ȇVHz“”B/µaÞ£ÇOØDÿ(œ‹bbß®6v]ïëF»fIV˜™š° %ˆÂt¯X…åUÓ\g_"¹Cˆ¸ú@ Nã~¬ð%XT@'ñÓ9‹ÿ9ï¾~ˆ# ¤(Ú””%RàmlíÑ1T¿¿ìq EÅt!"Ÿ¶Õ>)f!Ïžù¬ïܹ1A]çRRÖØv•){÷¶Ð6¤ÏJBvì©Ã˜‰cÜeÈÒ[TÕ€ ¿2 í §HÙúÔÔúÒï=íÂ,Å”Ÿ€ÐqûÖ˜«…%m[DMäNß°ßþg)Ç·)|é(sI8bÕ½TÚè[´’@Äþÿú[RõN8 |³oÀQ%Õs(@fPGGiõ˜Î5ÖÞÙÀÂ0g-.L¤Q�’Æ +æ´RG¹.ÊIPë›… +‡ñm1óY ‚˜ÕÓkX ò… X¡Áƒœ{ƒZÏ�`õU€R],Û³¿/ µé18׸ +YôõÄUºGÌ«"Ø`ÉÕJÔøï~ý'×8O…û>]W1‹ÃÐ þ¯l+9û»ÛCé?Ò¬Q†’·é8Ÿl3o¼=yTÚ¿>z÷ã¯vD€•>·2NUFH±#6‚™$U¯(m{?ßkï¿qÉr)ö•RB«RÂÝÊ[%4Ô_†|òsû\žÕYr`û§¬½Æ¢ÜmœPÔ‘ã=”dm´›ýãö·ù&>cÆ2øÜO帥ÜlüéPX</¸Æð•ôìq¶èöäìæéq+@•¢ÄíSO=†–Ÿ$lEÅ‹Šë»6lŸ{þ¸½öê9ÌbR “Š+cN#0Bƒ]SLfÕ¤>~ê(]áo³`À@l®›é$HøK*¼±©Ó<j mìò™KÖ{à¡4|é’8VÂ:+xÒ(ßC’#ï°Pß¼5aƒ—(DÀ¢±Á5<õºÂÁóÞäuÅÉ+êjº+¿Ÿïå/daI ©´dBK¹æûêo™Ö¢Q–••¦–Æ.L5Üž%„¤v!9ÐÛK?¡ËæÐè/þþÓÄs ¬£¹˜ªnŸ æZoú Éë}צ©}Eœbë¿0êˆJ¼ŽöM„0ÉÃöÚ?œµ÷©Õ±¯ÍR3PaTÅJã'†ÃÈž\´½ÇZñÃvõý!ûÑw(§ƒmêªqV5º=Zš¶Ç¾ù<y½óÔ¬^¶}ƒ$SÐî…§²ÿP+&4a,ÎÇ�Èq=K¤,á'Ë?—¿«Š”]ÝM¤‰ÎˆI…Ƶ³Œ¡YbÁQò–Ãø¼‡>nW.\±}‡öQ`¾S›•�Ù®%aƒçÅuŒÚd‘›7‡Ý¢008gÝ—Ÿ'‰á +åv×�hi�?‘BX3K·Þ]üP¤õ')\ï°_]öŽ÷~kQØŽ‘¥§üз 0¬ˆJ®/!4’ƒL"ÙÚÊñš0±aÚ ÐY µ«Ö¦Ç:÷µP1rí¸ üD‚ÿø0@ü—$Z§É&*0 ¢°*½²åêLo°Ò aÆ+µg?wŒºÊê•”°öÖÌÕNÛ¼ÍnS$ B—ÄJjQ½€–þò7žÂÇ$A€ÞÂ?zé]ï§óéàÁn[‡ðñ̳‡lP©ˆ{È"ÌMíÖÜYn-ô5ŽÀn©áuƒó©oõݦ…è*ÍزļÅS›(—¬²e1Ì)H«ÔŒNQÜn~õ:á/ſ˜ÑJü×"£BzqªX¶v·QÏzÑú/ÏÙ[?ºd§¾°ßºÈné.uårUcŒÛŠ¹ÿ”Í=ôgº{Ÿ=þÃÂ#·¼c +A+ï}ÏÜÞÄàw’«+Š ŠØX±¶ÞV4%Z¯!¨ã Úi&œ{£ßîà3Ç ¹ˆ½5xmÈsIÊÍ„¬¶Üâ$´UÙÇ›,XÞaÒ×´–!œí�?€V$";ÕmÿðWd*ň‹Â~åïoØÛ?Tër€ƒYëŸs¯„X~ÇSÏ!Ç÷Ä|ÿ>B\WÛb—.Ü¢Äm©Ý¸9b5øïU-e4QØ$ÓN9«Ò¾õ߀�²‡d‰ÌòU;ûn¿?Ò*NCq„{ÓQ1Ý#«Ü1•+ËIj`ñ’‰Þ»Ÿä…ÂT«6 ÅTc#Ô:M)žb•š¥¶õ&%xZé¦XDeÍ÷ßêÇLÛÄzXÃFÐÔ*Y &YØ`”óœw`o²?Ìßž`ùÏ)ÕÏ:‘’ÂMIÿn¿ßì#[ •Ï5öv¹<cíßZuž”Þ'[q‹Ê“Åø‚Ã7Æ0)#Ðñ§ÈèžøîKW(T§Þªfãý×1/™È$ ÈGPòÀÜ-LØÙ"(v¨2`‡ê�“H¸ÇŸnîª@«'á+#ŠÎMÃÎbÁØ +%IeÌXWg£<¶“7ã8Ï0£ï;n·n_·ÿéùïì½w/Úþþ‚ýçû²óSÛºjlqyÅŽrLSÛ”ýø‡ï#¨)2‚ìÉ'O8~ó�>y¾øÐð(Lªu»quО~ê�3v¿\eoâ€rpS,Š^K¬–µ«·è4h9Ä™©I„ˆÜ+&ù2èâ\¥«oV;• ÐtÒõaŽÅªG¡u0Ë"å›v{ð†giØîÁÿtì¾x@#�+€ ëÏ(ò´ï$"± ½MÚÕµäûúÑeï3:V>³Ÿ‡Vkߎh`¥çEi§"™ iøz&+q3@©Eáx�Ó°?ópF O€.|›$(Åy³M{rÄ=7È` +P–Uá Íúò$!™y£ÀÛÌÄ¢„ÉñW½¡b!üã0̪�<¹™ÄD#yÊoMSjvÞ~ôý×ÙgÙ²Ç?bGN6`-à_R««º¢²F‘}÷»?¶ŽæNk%ôÔÒ +_{O¥sâöå¯<oÏAú(–ÿZ†ƒ<ŒÐ6‘.(Z§~hIÈ÷à—€¯¯ÙÕk§IQ<KÊV«#‰a–v¢*/Ó:“J;=Ú7<Žæ§M¨øó. ÑÅ¢ÈqþzH'ð»•ïœ¥œÐÌ9ë.Z“{§6T¿È¶kËûœ.Ì öÿí[¼>øßòíÊÈý§ùÌØ +î˜ìTzÌÖlÚúeVA›µÊD¨P™ƒ µ>/M„¶vö ž/�W€µGHêÑŠ2•ð?Ng‘5Žœl³ªúJªr¤]-ª½‘”F¨,ŸlrŠÔѶe˜J•hÀ{ý—Ý"ÒÚÚŒPÝ!1d]˜õ/þÆÓÔ¤µW_¹LÝhá@ ]›‚5oO<q,kMt;THhjbÞ sU)ÇîŒZe¼Î&Çf)´�C‹Âu”ÐÙÀ®¯åžòL°†²v{ìÔ)Þ«±;wh^–²Î®N¯H;`‹\US;ep?°¾ušþõW)] ×} ’E¢“{É:÷ÔØØ¥E[ÍK~õÿÕÀš¤Û™‹Ÿ=,V?=›àA_ØÇ/ࡾ#¡ô˜N.@KÉ þ˜¯Þ×P(F¬L´pAÊ ‡6Ëú,¯„VKCk\wD€«bvõÒ*¡Hÿ‹´¡‚âá§Eœ£ÀúŠÅin¶<ª„z„•SLu-ì&&¶§Êä"uÍ¿ÅI.C›ãaØIˆõýË?å+chfÖë¾gjr–ž¿ôQj¢…é˜òsI¶Ç-q~žæc0¶ðG© €Uy˜,a²‘tÿkh¬´7^½:\ +:¾N +Η ýhíÉÂ3==…¶°�±ð�Î?q€Âî´n9ÐÌ‚´É"Cê#B/Sê¾:tÇ$Ørv‰ëBpÉnéT¿# +Pº§‚úVÅP6‡èRqæ}üoü÷µ¸:÷UÙó¡cÖß7 +‡ª!Íp‘1×{ˆqÀ<A²”ùL€ƒï†ÄÂì)'ª»»›{Šƒº—B4aQåÁDi£‡%¶Z„dl–[?ùÖk\›¦¶u…ùo”þ• +¨w}¢‡ýêÖÛÁoOˆ}oýô¥'Ô;"Àót04j�³´ˆº‘ +QÓ˜\WRà/IÊƨ¤òtƒiùÉÄÔ´²q£bLÙ†Õ+Ëw‡uím%c'F¥e6 Ê�ºr©!'Ì£,€*iŠ5 $ÌSÅ‚œÜùÙ%h‡”¼!8X�¢«‰ôÊI#„C·¦ˆÍ6Rì}ŽºXêý[l=„°æÆ(NGÙŸ¾¾aûÒ‹OÚÊÜ!¤„=ñä»z‘2üçÚ:Ìÿ\‹§Xüù37ѼE¼GzŠv'eÒÆLp:Np¦S8f3³3ÔŠŽ¹v¥'Ÿ®s=ŠÃ4|«®©´¯óvötŸÝ \¶´´n‡(h¿ï@…�æ è•6r{ÙnõËÿåflH»Tâz(ÛK5½T̾Ž†qÂ.²,j¹ŒR8ÜšÇMQ´¡†*šu5UöÜS'eddÔÞÿàœŒNþt2æuѺhßYæKÝJÄj]]ƒ|dii vá& «°í¨wŒ¬ÒÂðÔŽ°ØI¢(*TRÓTmsœË’PU·Ò:JÚÈdFëj&:Í‹‰@%âÀѽ¬üd-Q¸NEÓ_ûñg¢jƒôF ¦IholhD —ݪ/3WVD=\¤æôSÏœ„¤±†I\m¯]"ùaÍ]sð0šQY?gÞ¹A‚¼€µRB8U骋)8ÖkM;{î†ýä'g¤N—"848ÊäÍJïÐ!°œ˜n«kî]USÊ]äÜ‚±·«ÑRó£\g¥UBà(£Rf8#°MÖNW‡÷ÑèP"I¦è¿=lûîuÐÝkj#6Ås 7JXéèã'm’‚fSÖwuë,²á•+Þ³¾¿™d2~Š»@· +J×Æãð¿y?JVÁÍPµD›TŶ� šÊñº Š!¥2E„\U¤•/ýƳNS_¿Ögïœ>ÿšâ÷ï–Æ7yMÉ$¨~@KÀ•ÇƒV+¿©Ðµæt½¢dJ)É_¼mGx=½åHþ!&Åüè<æ!L«NáÑP[”‡Ä¢q‹¨R¦Sa˜:Ê'\}¶1r„§>˜·®žV*[ÜÀW¤mhá$òa£h?i X:‰_0ëo nKcÔ³À¡—¾ý#—D 䄺Êz{þ‹OÛ1šƒó-¨zë7Ñjå.»i‹ŠuU56>µhQz5ÝCµ€í;H¥Žùæ;)ƒ¤ýÕÖtÒÁPÅ¢BEïæyÌìöŽfÌà1Pöq[¬ÎYo-R) [_S‹®BKµAH&A|d5LËàK¿úê)sÛД&|5LB¥uÈ›>p¤™cÖííwoØÉçÚ¹³7y¨”‚æ¹EδzÏõ¾ý"©¥4£Rå“`ˆâõ¸ÚRp½¢˜‚®<.YSEX/*(ó_ºÆ[Z[ä58×Øk‹—•;@](ö“vóF¿½ýÞ%·ïWáÕvö¶BtÙ^í/ÚÏÆò#ÏâRûÙX%3yß¾C>pà“2kÔÇWË´Š”Ï.Z¬’ä¬Ëõ5Ö%¥â!¸í°™ºÉ0Ša^ÎPBöú•~‹…Ëìì{×iþ…Ɔuè¯BruÔtÖ$�µ÷h~ê +u¥ŽG¼FëU×€úáÌÙºš^7Ù$á“£®œíãÄ’gç¦mooZžL ,„Ó¯ÑýGtÓÊe$9j·IjøâWŸ´¿þOß³FBFÏ=’Å"À=áãχ@º»U9œf2†.@i®«Ô1bMGÐæ”üéî؇F'„Æ÷Õ‚-poETÖXØíW–SÎ.âû&0çÃX,{zÛ,ÞBˆ|oÞÔ× +Eí)†ÿÃ7^E”p7X:îËÆ#(o@&Ñ ·8ªQ³Y¹ÍÂ$¬rQ\;´«*˜ˆ…FdÐÝ–ð X�žÜem©@¾~'°€ôù-¸î]ÝvðÐ{åGoÙÐ( Üg|+†¤ä…|ýÚW·%¿Ö«¨Qh^K[{ÄÂÏÝkHvD÷m¶‘É;øÀaL^ÌBÈ%hÂÃVTJÖQ-Fx_Ý5ib¹3}s$+8Ç) _šj“Äø‡öÐyaÑZÛx/M°F˜KqüÛ´DÍUyWV€rˆ „Ï"´Gi5Ú†»Ä¾JWIcƒûö¶N´iÝ¡ìM7ššºV Ùkó+öä³ûÑÎçHLÚyNž<è–A»$7{"E˜bN3ñ0dÖ¯° LBÔ(!¿y¿·¡" +mFù\-[Ô©°>µ’JX`6(û#^ö!*¨È¼üK50ß îÍjçLÓ“Ovñ 7\¡><)+#ìu{â}GGE‚ïË&ÁÓ&,!ET÷ä„;Nhº4Auu^µR••#¡Î"Ü[ü¨&vSPšx>z%c¬ç%ÿ_Ç«UŒ×õBTVÕÒ~ìñ}Äã÷Ø÷ðúýºû2¿ì—HekŒôÚ¿©iY1c©`—+l'.üŒŽ•I½Ý¾à¾óã–^™vŒ†é%¡!Ž_«ÜeUh.êAÕÆ´U[¢‰×õ4V–¨PAͧ%U[;kµµÖeüتdÒWÓí@~–še+CG••¤Mfžö/RÂ�!ÕÎQh=™Zq½“noÒù¯¶ÖººÚ=ÅrI略1gž=sÍ$X9Õiß‚l‘À/,q>p5ÅVVUúfݺY|Š)H°€E9ç�ØI¿÷æ5× ›4aÀ¶ZšŒ÷Y[{íU– 5Ý!FÒtÊ«×R0Ь“4Ê +˜Zª*"Ô[erÖX€*J#6<©ÔI„†Eh†Ò;Ck¶´Ùçîó~ü#á•ÐD³@±(r ÿJÉÜÀ}Ø`D^°ÊÌË"€ÅªH2Gs5Têg/ÑYBùÙÿVó¸R:V¬¹ühJ&U31÷\7²X¼–ÉËÚýá·ì/ÿú%ç[;è>-J÷cl~ÑïØz‹`ág +׿;áõöo·oGˆQ´TXê–Õ¦goS11Ú�ixW¯@ÄÇVוÞè›"ß•‰Áê¾gƒ?ÙlÏ¿pŸµƒV¢õnE¯©â, e–¢o*ª.ó,ŠÀVÑ0»®®.¼p>âR,´.eAÐ ÷ô’ü¿¯Û™ÁO?s„ôÁr篽üƒÃ±æú:;Ýw‚"I‰<rö÷xD��@�IDATÅe&ÙóTRü®ƒC:BK9LÂM¥�²éšKA¬)o;1²hÇNHÊlß‘ýÐ8ãN£ISéA«âØ°¿= +a™sÀÓFc 3…î9L0„¨§‡$ §þF.j.¼îÎw?þ‘¦•6em ÛI«°F +!Æ<ÖD˜ó•Qh'Ã{@CWœPQÈt’þÄët–Pé!³Ê +I%YŒÕIRðÌÌŒg‡V#äò“µÅr2ší¿ýo¾å8à:ó¯Â¶›j»MSò^‰ÿÊhòšy~V¾´@¯à, N’âå•ÍQ:ÐW[GOÁ[[€Ujãcó604n“4ùR~ïÞƒ5)j]uM°8µ«$´ÊÕÕ�()¢ŒÄöEŠ¿©9·|1 †~«k`±bÉLÄrÐÓÚ¹Å.AkW#€¥hgöá—ÅË©vAÍçù%ê;ãG¿õÖ;hÕ k¦ÚF-ˆuMs‰}å7^°ƒ'wO3çcl‹\C´ušƒ»Lv²a®]´Îˆ,mišƒ+}Êe2…îV‰gà—a=Ôá¯ã¨u©Šð%SjS=Ë{êýtþ\ã²dÀxÍm€D*‡‹`MS+ûrÿÛ…Ï÷ýí4†Æ“‹Wµ îKÚ³‹Â 2ËOÚX%…Š ®9Ê30È„7¨Äà,¡$…óMÛˆ¹ƒQhÅÔXeUϦe¬–fuŠ,k‚[ìâ4.òPAø£ÿúcÅäýh·Ú~¢»z¸*™tv ¨¢íÕ£Ez¿½«•¹¬l<W~pKû%¸ +Eéý`f„ÕµTXgO-“@ @/˜f«Ë9È‹ø£+TŠÌðCÝe¸ÆMMM�9Å€O•ø}Tê�ñ”¿¨ÁÒª;%0Eþ•~ëGæ›YäM@i™ÔòMeöªŽ&¢W×T¹×{zºíÈá}Ö�0T€÷ÜvqÞή&;õø)•)ú ·¿®œïÂÌuÚÿ“X×#s=¿(0Ù¹†9bÎë´Ñª9F·EÍä2|ÀêjÝ1lbÛó_^BË.á:DAfÛ±¤ÙƒX ŽîÙIj?|’xnÄæéÊÒ¦ \›€}5¬çú©7 °3Ó5WÞ—1S›~DÑÂäº52DùÔ|YÕ¢Ö1Þ¦æpÞçò‚K _v+åRžÒICÔðÖss1f\ÒÖÅ</œ€ÔóÏþè÷XäéïÌTõîç—ù-»×ÆÐþtóe½Á´¹kó‡ÿµò@0½Þ‘Q©i/µ¶½ø»€3ƒý“/-@g.e°¹½šiBl1¶VŽùòWCD„BM²xl`ny?Õ/HÂ)Õ&?WB,ARWÍ)§)˜h›üQLEuj¨„Å” ƒ ˜OÉ4µ©ºd9Èjœ˜§4w9Ú~šfd¥0T¾¦ +’†ŠÍõôv:‹@EâÓÐÕ©®¾ÆK“\?BÍ—H~X£ÄNEé–;—³á±›$= Ô³îX—”1‡=OÈ©µÆ¾öÛ'ÑîÔâ˂&|WOtÎ'Ý}Uã»Ç`;‰l"¡¹|uÈÞ}ΩÈ֧ܤ!Œ™¬e-jšPš`j #«F.‰~jɤÖý¹ÜgTƔ޸%WUNibÅŽ5/õ=!Æ]¥u·”†IŽ¶ò©s,Ú9µ¥J +³ 9FçÕ‚ë™Þ�Â?úÃßw…ï³°}]v.ˆ†HÑG›#&}øgaYY?™ÃjÒáþ¿wD€¿úÍSö$Ìu +ìhë¶÷Þº@мZ‰÷TUL-Rt+Sã³.G~’ûAðDÞå±òƒ„UaÏ’fuf 7©ß\Mô5´œtiqÑ!Ñú]aB82·õÝÒ˜nÒ°zJ¨jÐŽ‡uÙd•#¸*—³gO¯#g”„àm,1—ùn‘(ðéùž$-T•-RדJ¦A˜—¬%B<óPš‰sÔ××»kêï¿í +½óuö’!êÈB +âØÖÞìÌUùÕª‚§¸ëaBcO?{JŽÜàUÊß&ìæÄLúOÿ•ÖY‚ÀE¬d'D²V4ŽZäDUˆJ¤jdgV³_B«÷œ°"Rùÿb"IØóš†2X*y +ðBëYHà1�¦ +êÞ%†¯ŽÂ2Ô#û§ðMžgðK€fó#¶yóÏYâ;Eö0¼ýB«µÏ/°Þ>½¯ŸÂ’ßÛ§™üзkláL$ LR|í©g÷Ùe|¾4l¬»BÙ¿¯—‰ÁÃÇ7U¨I»„ØMn@Ú@f¨6™jy‹V`ðo5Þd‘€JÈ4)™^}Ñ3Nk«3aŒüÞŠÎiõ—ÐkBÍÍ-Xooåw@Fi³º"ÿ¶Ê!Ë“”²íéît×ÞN;ip-& ¥ó¦ÈZ¢¸Ü…ÓýÜ—ªgRÀŽPJc}‹‹×"óqßÿÆ…i{þ¹cd$U3±™Ü€Vê•ÜÚÖ‚ë€ÆÂOli•où_aA ×ø̸ÍSª‡�÷‚ù)6á +Z$b‘QrŒ_±‹ë ´Ò¸ŠÃ £ +PMc,sWÏ@Öƶ”-\ë æa|fgNCáà%ˇ¯sÇë\jP'àRSãí=‡|j™ñ³ss¸8å.–#Ö]W[c©víæ0b|oõSÃ}ÿ¨´_v½ÑÔXm·=2a¤*CôOXu=$@›¾[˜ÑL¡ê¶}î‹Gxpù1§¤=Ëðo=*ž&CÞ·Í›sê ‰¢’¯êÄ ‰¥ý2T”o,!Λ|E4øŽ ˜˜‚ø›åÄ„µâ/’S+ i’U¾ÇW¿#%J`øpa�TYPšÅDÚ¢¹‘¶&µÍŽç[Äß[€^ª1½H§ÅM4O @±>Ì| ðµ«}„_@cΞ·ßþV»CÄkú�fðùöŸÙð5„‡jÏ}^™MEÜsS–ª„Œ”+DÛ—àÿ7ÒúT‹„xÛ‰%À¯ÍiûÉ;ßþð9<Q|» p¯÷¸j—ñe,D,’ÉÌXoHH%ÚŒcñ-†ú+mÂoŸuc©ûϱX1ëdålÑÃJæ¯h-Š›9%ïKaý}_¯ºY”rO`äyyˆ¶ž·DS Ÿíyz3—°”`)ÍÏ/Pôr¯ÿ-Ú½îäÑy_ ”„Qš²pó@-i_ÿ¦ãõ9-l~3YLj™%æ–’ü&ú§·½üW𾞟_æ!§™Ì0�f²L‚¦Î˜½ð›GЪhS艬ê2MLhô>ýí °Lb Š÷¾„Õó…õÚó‰µ_šçãjTõ^5þw{{“ + †ÌEi1„1µêë1BæÛ&‰þ)ÌcÕv}}9.O>H:Ò, Í»ni`iÖVr|ÇI–(¯€-ÕçoÚ›¢•2Lê÷ÿ¹½EÖm?·Ñ ¯Xdú¬&¹´Rš:‚/¬Y„R¼55嘕)(”ÖÚDòý_pÄï}˜ÆB›B‘{i^ýÍ02\ò‹åGÓ,³Àû€Zø°dÓ«ç%÷ Dˆ2ß)wD¿õì¼g#K¡8Ä÷#sYM +Éi,%ÐóÓyõì4úN‘vdýÄÑÆ,ÿÕ7¿rï›yDöt’0j+D—UaC›vû)—zÏ;V³~ü›„W[!"}÷àÿÄ|]^)M‚¼0‹Ÿ»„ÉUd/~é& +M@õ 5µ"«“ÁðàÒë1)ÔNn¯&‡„MEÜô‹•oI%H½ñ^ðCa”É¡äMBoÒ„ê4ëóµô#Ò$RHªŒ +’“Sð‰eÚáOê8Å·h0R¼*¸Ž0µÑmÎ’„J4ñ"e¤,b7¼R§D qm•røÎ]Æ°,F‰%g¬³+ÌõÚÑ»èʵ«¶y|6KŸ_b¹hº +Òò’ š›# šðb¨¤u¨¦( 'ÀqxÛê�±0“&:a߇è€ø|ª§$ÓØÈJáf]"SŽ‚{B…%PÈ©{â[+Kf°IÚAà”€.™Ìj]£²«¥ˆ"…Q�ÇMH&ù…-Ž æ3¸zÆj’¸JMPRX&r—�+Z.ˆVãé®±P,9I8-ÆqѦ˜5A«-'¶¾‚ûõ™Ü4Xʦ^ÞkÓâù‹l;¢g¦@’Š6iºÿ`½}íwa=1I¤•=í)v! LM%ëëµ~r©[«´Vk™YÒŒ/\%&;î¸ÐÒ$žÉ�N‰Ítûö D‚ VlŠ˜åì"?Ä{•ÿ»Jžjœþ¿‹P2‹Ñ4Ò¦òåfR¨¶ ä5^“¯Âï!êmÉÔy”„ aеkq*«ºÔs”¢XVCh¨”°Õùóo4·`n®"ˆ Ç.q®0¦iö’ ]»|ÁZ¬“E®O1×RΧ§žIæìÌÅ~0 »:ñ +ïü‚Où3Á ï‡ÖŠæ”4¿�<½¯M÷£ûÒ= +ˆÒ¢©ñ\'v-á-AhµØêx€:N¨µÌf±·ô¾ÐwéXmZ(õEæÐ1ù°^µ{¾šh]‚ÆC[g ž€ÂXßßÿÇ¿íÞTÿ‘‰+γ»Âô?Zz_¨³—Óë݇Lj¹z¿u¥þÁz¯Ð´Þnë©°Öž*’ë‹©êH<œ%2}ô0=3JR«ðÒbÂnÝìw¾¡(’"håvf/W/®²À"eI{I�Ö0»7®$ÈíÐÀ˜½ûö9[$ovs#Á¤ÐŒù^Aý©�a!Z—Ò7‰¹gå5QzßqZc™¤úÔ&2&¯&”&0 8e€8v`Š)éÀ.ù{š¨ŠÛ +§œOÂÑ$÷|NÌVÕ¼¬É.\>ǾYrds´x!ì‚ÿ& —Îß±fâr5#_‚½µ8Ÿ´rÚ‡Š‘–å¾D%ì›±—¿ût?H¹¿Ÿp“@mI›blrÍÅâ¡jeBëoñsF„Jów›_0$Ô¸ºüÈÂÑB&€+¯óBMá‚xùOMaËs}ôY^ùö£HïK¨K~’à24æ rŽk]%R±0‚ø£¼)¿PؼëÕûÛ¡Î ¸ßÇõ>#á•KøýÛŽ˜Ðu$·'’dÅÊÐJP£hWi]=l™]sð‚…wt´¹‡/ôS®ýr©ãežE1]õ:LÚ›Vh§AÑ‚çÏ]Á4]GƒUX¼:l—.÷Š× QoŸýàÌŒ®:LÖ°+.×ÞEçŠà Ð’Y¬•¿$Œ©§º[Lng€ +k*9Bȸ&Ÿ&¾Hjzâïj¦Æ|$¹Ñª:öÚÙ·H}ç%LsÌJ®q+i^…kL|™j—a²¯t +Ùl²°¬Ð…bÏÞfG¡,'&$ttåÊ89¹ev±ÿež¡&¹æ'b¥�*±ž¢„ódÖJ˜µ1Ä’ŸŸþ-!’壸ºü\™¹ú[reœD¬Ñ¸èÙhq•pêûå·ê8=OÝ›~kŸÎ£ñÓs’Æ‘€*§ýºçsœÌx}6¯€Ç%Ö-ržyü¨½úžê}66ù¾Àí6|î%ì +ÅmW™Ã+ +°#8AÉØ�8Faó—9Á„—9† J¸HIíÍÍ-ä𶸉¤* KHã㘺J SX¡Õ(ÁYCcFñ#s—t§FU +S¸©¥šùQÇy®@£UÁ¼#F;iàˆ|*jR’”?5Fc±fÂU ÎÒøUøèL ®ñ£Ià@|W±N ¯~4Ñ„ +ù~Œçf,ŒÞƒ vŽôGUÅáç3Ç_‰ž#-°ÊsÔ¢„…"Ñ€‰éUÂ"âdʪg8È} O db©eHk·Wü2ó‰óŸTx5‰tÍaa•sQB‚Æ?/¸H%Ú—Ýîy𘰠Ä}Ö=¢ g\Ô&5> ìAÚV\hô¬[˜ô¼$Ìa|YQ#ã,:ÚTa$fa$¡#Ãçù(Ï[ý•Åè·"ƒ¤¢ƒ5Œ{€s9}kk“¼ï8As-GÏ©ý‡÷ºïüÐ(È¿~þõÿ¥H@…Çx •Ÿié_¯µO@—>ëßt}§¾oGX~–²V_ývÚ‹UXÚS+´ÌQoËïSãnE¬øìSr‚C1éÔ7AEI¡·J—_¦‰3²ýçÿþ;d¸DHŠ¯u)UU˜Ê¥V{ipH!!¸ÒÄ‚&½p„|j|Ùª`^é»t¼ê=é3žfѵ¹ +*®‰k”éžÅ´~õ'-µµÏ}þÄ‹nk¥^tbyTä†"LçF{ì±S,<•N�~:©õ,j§Œ¾Ï¥Lr¼ÊÒªh2‘ÆWg1Z*±·.þ=íÓWº~¹* +©B¬”¶-¸Ê’vÔuñoµ²z>®®K–¬%îÞñÏò.ëÐ +ÃÁ½ïM`-vzç%Ð˹Fü÷ôÌõj–¾¼¼ìž]–ñ•«¢Qg¥…â+œÅJŠÐ˜#KM‰(ÒÖÍV>Š›ªjø7QæÖï²—ü‚YH—ô£Írí}§?ÁaGF ¦&ovJ $ �¡¿¢Óå'‰¸Ñ2GYaÐÊÒ„zð"a(5?‰ŒŠ“3²Â7bT…]éXåûþ§ÿø²íßOÉ�LßÈ'92víÖ`^ð£¨T‚™ /7Dö6U!Iý“^¾v÷¥YâNPLdiFµÕ"Âår=ù…@רxt�Gñ&ßåÌÙF] ÐÃ1(s訌Ãæ˜Õ0Ë"U®qZb?LdÒ}™Ë¢bba Äù]cARØÆ™Ø ¯AÊú@9}íÕâû®æ-gïi~ÂßrŸ…ðÉ”§+ØaLÜ£âÝA-L¼!ÁÕb%ÓY›~ìŠF‰O‘«„‘, …Ðä³ÊPX[) `”_±~eyî ¹ðŒem¡æ~gM)_[ÇHPËÈN +ðEde᧨=G?--$³àÈ»s=Jÿú©þksŇoø*ÿûÚíÿŽußæÿ{G|àrL®TE!¼^¢ê%Gña…kÑ…Ð6š@B K˜Ô"Eˆ%4==ãÌgf15ÆÇf�¬.â˧FÛÝ™´‘á /jhzFÉœÑ17QoÝ`â2a‘D%X`?4ŽY«x#† ªøs.Wáõ¥ÀŠ¯T¹"š³©Ìâ³¢PÊ÷]¢/ðK÷Ï’û·o|ó)+J€_z•F‹hè4½‰öݘ¦Ä<ÈtØN>½Ï-HBwehbê^6‹H[g‰õ“N¹¾\lï]þžäŸvsa"ÆVc ×D¤Å(åh1à´°²‚ºSyî‚ü_fR8ødîÂúÑsÔµ+¬û(Œ™eA\ ƒ[¬$-´ò‹Uó:Œ‚:ª÷´2ÎÁ¾Jó~*,—Ä•Eevv‹ÅŽ-]bÂ;¿h‡°‘©·?íPÜ×Ïk®òÿ]›ÈÒÂ~¡ô¸×>+[óÞ/èúœPê<wZËýlŠg:†Ý$ÑE2OÔìZ“@5¦4?Lí¼i,`g“ò«£ ÒËB¿àVášš|Eï;n÷ Øä8ÝêI¼uó6““ RUɱó6;½€OMEÊ[h |BVê.8N1÷µ„Γ†ØÑŠi]ƒ9]Om,ŤÅ[Æäc‚+‘BQק”ºÒ2Å=Eb@Ø@k/^¸AÇ2’zácY| y†˜˜sÐ6ꪙ¥w1½ÑrÄM_ùÞ%´_ؾü[§àVOÚ©'÷³ Ðéû•µÆ,•¥£�|i„zÑ”ôyéïþ†TGQ@%½3„w~ÙM„¾‹yÂx³0r^gñ|(°: +…Ê4)ó&´€+…“@¦9n‘Z\z>Zì¤1¥yNëJl8 _ û‹0©´0i^•Öås²JÊXÌ‹gaêO%×Fa#qÊe¡å-eDåÇÞ‡ª~빇OïNü²c÷IŽßNx½ï¹×>-…Âë}FïëÙíˆ�ç0Ù\+LÎîÌ)¡©LÑ!%ŒŠƒŠ¯¬Õ^PB£‡YSSGy™jÇPÒѤÒûyÓ+kÎôÁÖ Øë3öØÉdUR®u̺ºéz@IÙ™Y@“‹ #M¾DÒ¼Â>¤jH<hfBˆX ²/ÓÓÓœmX‹‡/4ù4¨Ùó4eAèÂ瘜—/öaî•Ø3Ï?a_úòs€p•|/¼^Ìwq]]ûØwÒ®]¥7½ È´éƒìf&vžÌ¯ŒU +•p}#IZa‡½üÊ[–˜ +ÛÙþ—8U^ºÁòžä'ø-b¤q•é.¡“«â4ÿO£üøê¹hÓ8ËÕ„ÒiYHÅÀuȦ�.Ž/\ÏC˜€0mB»C"gðÝzÞy¬J .q ZP+Yl#T+¬*uŸ•P»E„óé¼Â!t²ÖÆGÇr:<¢›4®€¦í6ù·…~²wœ€)ÝóvÛvùÄ;"ÀÒvTgsµb)‰]7µBúâ +h‚åÍl‰€.W+ÊcccžØ111áLmùJâÊæ(5w¥WЈWÐÖªÙÌw¨ñœf&€’Îu^!£µ€a‚éµuuu¹ó‰T 3p’Vý€ó{AñK¥y’Äj“°€ZÑÌxjj–ëݤ†WÝÃ.výØ©Cn²µ‘Wüì³ÏÂÂªí®¶sïÞ²*JÄþÖ·ž%„Õ¼Êi³�ñOeñl€°*þº÷@+Åö0A—¶ìßÿùŸØU:Xv¶{®Ÿè=cÝ«�!Y2ƒ•=¤g£ÅQBª›t‹¬^É|F€ô;Eu eH9—g¨+§^¢ôYCæ±Ö[í<È(×HaÁćߡqÔ³ûMU>ÅUW}Ÿ®Oß‘_lÔf‡)Ë÷ª:¦¢úêGmã²ðJˆý¹»ºN-Ú¬ÄlóƒXÚ'×g·C«½2µ…B¼#¬âV{4±„D†€~QÁ†, |Q…RÊ´Óñò·‚˜Ÿ"(©J†µ”ð/Ášpfê +B+Ó +Å %1KY×ZjD×S¹ÿ +M“¡ÃŸÌ^E2ãBLÞ�Œ&†Î£p†²¤$ ªµ¥óI£äÒ<I•&4a¥e&ÐÔ§)óªÖ0Ç(9+ó_é®Z&“¬¡ºž’µÑ;sö7ñ&}}å·NØßýåÛ´«o «"÷“H´¡á5. M„eè¢øêO®ÑÆeÙF—Þ“ôÜWc1FÂÂYZTn2ˆ´ò …øËO•U|Z!7 “âò"Ø”à›iŸÆÅ'áäµ®]ã$ͪ}Zˆµ¸‚Z1H´PKãËö+!tWJRå‚øZãÞS„ÏôlEŒ‘õ#í,sÜ!ØÌS”Ø�þuÏM,¼*òºµMmT¼ÍÿZïe\oó#ÍzÏC«õZ‚îßîþë£=;"ÀZé½U>ÿpO塲 +‹=%ª¡ö+ö«‰£„zMÅYõ[›VwÂccãhMÕ0Š°®Ø/΄›h*5«Ê¥ðUC:•¦0 ¨(ehl%6ˆÛ«ïî»ÕO—ˆLà6&P>Î+A•`æ¯9ÈjH³@è÷(`Y9ËÛ;Z9'©ohv-úÜ1kµ_IÃ"ÚJÙӟ봷߸†Ðd\=°28Õ4_q$&Š&¨°Qìܙۀz1{é{ÿ;z÷þ³Ž¤!C´x4I§ÂQùk‰X¢ñÕO^3ç‘hiã¼`a3V"èùȤvÏ‹ïÔ3ÔwË Ò^;óáà¨çß"yä‰ùÅAïéhÕñú>„2£õZ×¢Ï +ׂ«qw‹.‚þ¨m~Š¤ÿµ®ÓÏÀò¿Ö>hÿkíãö·Ýv…vÝXY×!Î߸‰uUbÍ-uLüjWGY&]’‡¯'³UÚB¦³z%é‡+m¬Õ÷ü¹K&2w7AéV§%`é´S~fii‚ Z&Ñ*àHUlY\mM¡RÄeŠKhW©&'¤$€ì‰SaÌ�d‘›‹¶Ñ„¢"‹µ¬™dš4XnÑX§¶×0h³Ú”>õÌ14-5¡X*7(ÚfQªbrí“O¶ðkz{)Éóäç,\¶e/N[yåei{c6ìýN<ÞîîO-TERIñþ÷þ滶–S¾ïýÝ4ÔD\ÕC,n +eU@Eå.@-¤´)§ZË»–~,n›ñ©€÷y+Œ°KˆK–`É®T,›€Ý œøå/}V9½*Á«œl-†*lWŠÖpz!¾»KJsCB¯•Q’ß+A–¥¦óIÈ1þÝ|+#«ìQÛ4>Û¥ê:XÝk_Ëâ^ËQ!§Ú»ç`&…4¡È !.zt*Eø†¦WE¬Tà•þ:l”þaºò=ùá„¡s!VS=t¥ÍÓÄkH8()™tåÚåQʽ62™`÷lE!Aк…ÜTu)”ðö´´ &\’@–É93=vV:A€+Xä -:W".®6UŠ!D¦aˆï~ìñƒ ×€B(y_RB¯ûVÛØJyÖÚ¹±Ø°¿øw/»*•‡Ž´`ž+=2H¨Úh°ÁUÉ e[Ei÷ò^ù¾:í½ì'wEŸà¾Ï æ±€Ã(àÛ&ño]ÊPæK'˜�.òÕò‹¨Šèu^kêµö9¡¢Î™,›D’Bu§Ìh'„Œ…¶uj-hB¥UõÝ\•¾G7ª[Ï\B«× +¡È'–�/bækë+VJ™ZÂI ¾KÏç³°¹1¼‡ÕýkÁû$ÛŽ˜ÐB$£Lö ùjŠ¥ÖBgTXChïÊÒ*ã„3Ÿåï0Õ˜ü-ùUš‡ª¯\ÅѤ52x ˆ4»ÙY« s`¿ª¾îr�¨®ê ÏÁ®R1¼~×SLái9”>h|L˜4q]5!ÛÌaÂSÈ}q‰Ì$&¡ÎÇ9ÍãzÕÓX‰îb*)>©Ô·æzóYi,‘6ÑRªŸáX™ÖÅònÀkC„³Vˆá!8ÜË:MŽ3�wŽ6ñýj©Jl”{SgŠ?û×ÿ'÷Îä¼ßÂûá,[$õ^V'-^Òf*¸®–4ri¤qëX6S9˜ àZçä^3á4é4ùä÷ + vi^XùMÂ%atyÒX3kXCÊVRêd‘¾‹±u»G…¨ò„¼pó\‰Nˆß^A››êÂrtô¨ªÆ¤©.Ö-¼âQß´>©§Q!h¥ëp«}ÛmÊöÀ«Âýºzíˆ�ëbô”«+M§°Â*õÉû•?» +WZl›+Wn¸×çñ5™¼0‚ª9ªV”|L@W{Î +÷àÉ&{üs½¼Wç4WÍréâãCOw\RÂH’ã[Z–×îPÅ+*Øã×ÐÄÔbž[²EÊÛ¾òÊ9ΙS뼚hÎGgRJ‹H»èº…ÄJ‹è{DL˜žCøg©ò1kC3Ãp±ÇìGß»HŠ-’'oQ2W÷¡¨³KY· BŸ|ùÛ¯Ù\úbá3»oK³)Æ-?V@‘giC œÜY?ºÅâ5^Pù¬ŠHƒê·ÆOþª>«1ò‚/s7äè‰.©±S¥Ká²$üy`P™^yÒˆæ„Lli_iumUD4þr™„^k“ (sKÖ‰žÃ£´iAË[]•„MúµÉÐ:4ZG¢Ë±ô£cüÔIë¡Õ½vF€™0z¼šDå0Ÿ@‰õP¥%:UÑ¡¡†˜`“I¡‚Ò²;ýÞiÀ–&.ñ0¿e«¾³~ÖÇD6ª PÖE¯³«9üOÈhµ-B3¼kÍu®’’þ˜T1¸Ô*íRŽ¶ŽÒíÝ3—± +Xí©þXE×Ä©IâÄhŽ¼–ÈOT½Ö¦ *³;‚€ +í#?»«ÃÓ»“Øqª`ÒÞ¿~¾s«ÂRT”¤Ü¥ ÜÄLAH(m¸@{Ó‘ëIûÑéÃߟ̤r÷sþѤÈ"4"eHTiü%4ó3D&)&Æg¬òs ÙYhU£[‚(!wá'XIBÝ3Y™²ùÉ+I‰¬ßÊ®*é3÷·7†TOÐ…|#™´KE“C²á"µ°¨ã…BV +'ÊÂqa.4¯2¨x0LòüBñsnù¡îöÐ?ó¼…‚î?8É¿ãwüš|GXf”Væù…ù¼Ã\Õª/M¦ ¥<80Eê_¥—¦§lv*‹6VGA}Ãn¡¡÷q§y_xñ=u:0³ªAt'xèk •!²�“䳪h¼4NS#¹À<®ã'Çùþ +Šªÿÿì½`dWu>~$M“F½×]mï^¯»ÁwìøÓCRHB $?RHB „„$´„ÐB pÁƒ¸÷îí}W½÷>3iþßwÞ\éíìÌHÚ]mñÞkkç•ÛÞyïÞïžzëë¡’Â@ª@Ø›G_·_6®Y‚UAfNg©HÁ?8¢¹±5_UOÓàç©Ë…¶ƒÑ?F±_o“<÷ìNØYwëh�ü7<o`Fáˆ+ñœÜI›š9›} väËW¾õ .9Ì/é B”ÄSŽ€ŽÒï€Ms`qYM}-!!DWM¸O´%jýH¾;&~häQéŒ@µ’ú‘îSĉ—ù¹së0õ±/ªW×:£ ¨‘@sBà±ö #,ïtKü~CÄIt¢Ÿ/©ŒV¢;!ËඦDV6YÜáýS"Äêéî‚ g�?t‰>{ü%X*QpÅ:EZZ©qk«ì|Kã\ð9TÙôɶm{ÁcRb]´.Áì;«:7Ыɣ‡a 27É’êU@pèwl{ 6³«eérì6>·½½UyêKß°Qž}öE9’àžÆAä<)Çò½yHî¸ó!9ÿ¼uR +žz;UhÅm?øÒÙ|— m¨{a÷Ë%&5ü°A:Ýxx@ë#O=AIY¶l¾²})ƒ{ PF½A8§Ú?!Ù”üô‡wÈ`hÿ¢“üÈ8¨üFá? +¥ØwŽ\>'%êl9ˆ—±*–0® áùx_ƒBÚœ i5#©äAwÁ�¦Š‡KqÚXs{"5;uÈœ˜¸“—Úäy9ˆÙNœ½‰S>@Ø ¨ ¹ZÒPE˜a®D»ÐIÃ.ýLH¸‰ƒ×ô;qàšëüM¸æ® ˆwJp�~¡tàÌK‡ûÑáø7cI +É$6‡ŽF=²n}¥ö—³NN)a ¼c1¬#`áR”Òb~pœÍ53Ð-YJ 3Œ9°Áw–c×\·E Bȳõ„ÕÉ �éë®Íéq×Î&¸üUa“møýâzi9 °Ä}uÛN©ë_‚iÖE¾åøh'EèÀÏ›† +Œ¼A>–KLž‡Ñ>A¡¯¿[Í«jÃÒÖˆÍÓ°©ba â~Ý´#$@êrìšHI6…Fœ ^{¦OžÛócsn]\ôå�ä3d’ÏÔ¦‹)N>ôÙ¥JHm¥u BÐ¥ƒÉ±®êíï× +F¯x%äX-©S)39=²<DZL&'Ĉß7ù^²(FýÄ~ð‘ š3Ëp M¹·šQ¤Á{f^òÓÙ؇æ°}�‡^léôK©$Ï$9ßr²D¾Ö râ}Zp%N§d�sVælKþ®Î^Ýá·�ia>‰?tòÂ[¨®®ZŸ”ê ZèÐV–H¡Ë7”Ï�‚Ñ´‘ƒœª†bÜǦh%%ôßÅÃb–ç.´EÉ#·îìD¨›µký²is=¼—zä‚ÖÂõ{ò6wã£Cð9D‚¤ 0¯›k„z +Û®"`;xd.ÝhˆO¾˜’ìlø³Ý ØÿÒ%RQò²äøЇþ¾¹pJ¸úúÚ÷,Ÿ)øZ¿®N ¨gÕp‡W¾ù¿c|¸4''AɆ‰o(I,ªÓ‚Al¼ ºs5ƒiTùM +ìè^HV‚®4”QÔd7ÑWªuò‚%U&ÞrÉËI‚ƒ•¼už†™EYÒ&îœÔ@P¨EóVªî‹š‰|ø$Ži¢ÉzhV€×X/Œs0á1€<'¾ó‡Ø -wºýclš“é|d9ñi¦’eÌX‰Ñ;8xi¹…,êdž÷”ðÀMMí@ø”Â}åjèCñÒèNG 1÷#Z¹{ô‚O¥UMi#[A/_ÿ”oÃÃÐÁ€Ž Daºò•!qÞÕë- A;|q¹å c«cöc +…G°¥K'–ÍòÂ3»Y§!üj<Ü!ˆ¡µaýzH¯÷ ?yñ¹=räaèhû †-u7\Üyrd[žBHÅL—åqÂþ°OŒVÁgš’Ë®Zƒ·H›ñÑ}Ákw"ÎU«ép®üë>&“0ãÛ9Y M…t\Öy9ÒóJ£@bÉÀ%6»CÛf2ò¤\ëö)DW|91¨—8`¹Í Ó&I,ˆñNB¨“»2¢I!ÞÔp|?P¹1†4æU•Ñ1öµèœtRÇ çâ\Yq‰Â<æþSœƒPÏÑt–KkF[9›y•‰vÍnIôÑaeu‘ÛmVÉg4f—¬ÛN —”æ‚Ïm +è…ÂD³;†ÔÉàöîøèlÀ†úTP€Á—L}#?ºh‚p.¹ø¢‰´D†q8ÍCRYƒJw£g%�† ;ÛGdI=vlíW•ÑŠõ¨úá1 í>ðkÙRSP!?ú"ŽP×°~8[·”VLo¼ldÃð˜ñÁöºÂ§0V •RY]UÖ^ L‘´4¶«j,Ü=;ú弋kñ#öÖó{!h«ÃþÇ4xȃ€6Â|ïÿ#=c[qLÃ>ûÉIúG+~h\¾ÒY¤j<7¤¾Š„¸NµyTåk1m’ïî„D?N‚x xf®ŒF4Ÿ,ë$kÐ6†þÕ,C[kÒh”P#âÒwš“/%Ü:pã_?7ïqÙLW^De + wíZ|YvêþIµ<fUx’MÓœùœliÿ=%ÌçÙ^ Y§ +38H©wÌΦž±�xvésôŒŽ$’îv1Cà §Ë”ZNü1ê Jý(EafÎbpÉFÄ-Eð<~X„5·6ËÍ·^ª†�5µÐ5z±Çoo7ê£)=œ*ðOȽ˜>hà_ ÕÔLÈG5$?ûÙÓ@›qi<Љq`ã¼cg#ßuáÃË–_Ø«“Í,wï:ŒX\¹ºÈ®=‡`6¹ +Kü")…›as#¼±°ÿÑC?{B^ØùD'sðò‹à<>‰ÁAõ×Õløšb`èHé: ‘”+ÇS6„Teå0D€w´\H§ó°2â&à|g\òr¦õ[.Y"6&¨�’JC +þøê¨÷§e—ÌDSNÀ*Ä‚Zƒ™Î%ä¹9p9€™Ç`E äåDoÇî½zïtü‡8gKÛ£ÃÊRh¥÷‘ÇH§Í3pIMþ—6Ò‰~À&"eâÒú” 0ÍiÃLþŠ/ÈI!ÕDF]CTÕËXnvÍ<töæ@V“=|Xt�7’IÎlœå‰”S@T]]£ªÆ¾õ¶7㣈Aý´D#^þÖo_§¼+ÃÖ0¤í¾½Íp\çˆv½¨g†ô.‚>ß4BãTA"“æ†n„©í])ç_²Zš»å•÷Ã*+W^€GR9ö,¾èÒµòø#ÛeݺjaÖ;N/&$„—ÁßÜŒg΂<Ù.·ßÿy<?X‡øŒl^äÉúTSªÎhÀW½pë¯K©0‘‰ôæ@ã2›È{¼ÎwBZÓ‹Šï…8è9…c;Î|™°Ó ‚Ösùù9˜<é\R¬u²^S'ß9' NÖzÞRT7ê÷õS6ô©üiOíæjLJš*1älª”J*ÍìÞ)Àœÿ9¹ææÂvfuôjñàÃñ"Î0—vôĘÆ>A|Ñ\©‘Y†1 i½ÅТ´ +GáM„svµçàåËwþ基C|,X†óåç£-òwDçè*)L + ÖTaQÔRä»`†Þ¸tª?¼o›n#Ö£½íÁ|/??nÝrÅ•›•§[²¤BvË£÷oÅ)ç^¿Jîùù‹X~NK‚×5vMË;ä}ï»Z?Ö~ðÑô`êm +Ë—¿ùa<÷Jõ*ÿ:mE"ph†9iAƒÒYsÅ+\‚)0ZA1Qö@ë38‚ë�æö 4¡º‰>ÓÎ2˜±± 9ì«99q(šˆrÕâÉäxX²ñÎ8q°N&‡gvöY?'"2½Ó8aPX„:[º<x×(Áè)$;½€DK«D¡•)NSÊd;’&Ï›èµÄr䉉֧d�gݲ2‡U(D!²Ä@ªDÆ`Î윃i}£;"`iÆÉYœ»rYÌ%4¥£²PºîL?6ÐûˆÌÁÑÜÜ,«W¯Öò†`üp8£¹Åhm|va`Á8VË–-‘üJHÂ!—a\®’JHd£Ø©È<›²ó±”~RÞpùFØ_u +dÙÊ2ð“Aèœ÷KUEžlºø\ÙÛ4(‡›vËmo»ÍB õ‚•ÉÑLùÛO~û#A·tŠ“ò˜©0Ñ(‚&“Ã%4‘•ÖU¤;¥ï¤—Ô<æ€å¤ÉÁÅ%/s`l¡<,ê"j°u@3€<‘”+ª`ÍG±çÕÈg°N¢4Q—õr`>¶Ë÷ÃúyÌz=°zkG,´q ½JÑN1ý’5o–ýî{F•lJšK2¨»IüvÀ+“{¢› �(rjp.l‘‹J}¡€áSŠÐg(E`Ì'èRÉ_˜G)#Õê9”^5‚%-Ñ”(@õ •Ñ9SêÙÙÑ ž,&“åøˆò4Ήb>P@C)U'Ô cïÜ÷6lXƒ’Sèvƒùð6‡J²ºBÈSÀÐxT6mY®ËišD®ÝP¨”ÎË+‘篖g^CÐzðÝ—¿ –bP‘ä€w;„å·?+(ŸÿâßJ~iT +bUxì#%ŠìçÉL0Ä° N +ùàeŠéËŒóN‚µc0rB%RæeåÃå³\éΉ“,Ë3¿¾L¨ÌK^—/ÕNA +$äÜÀ?(–@¹¢,¥ÉNÜ-çãÍÆ$ÍI¤�“0ßD>'i´‘—S"wÝõ VF•xßl™oü9W§Q"jº£I³½îà4É}ÌkTñ™D´u×áȧŒ‰0¶KŸg"jÑsÅ&KKäà„Cõœ;0¯%.£ s9ìæq9è rû0Qz)eŒ'"°ÙÐ`Cûk)p‚(@sÓ“•R‹ÃNVl;––ó¢@²¥²Àó"Íd)°0 +o5KàÄ’N…¡éH–¸¤æ91ñ +ï¹ùiæ±8‘RöÜRà8)`Ô?l´mv'lÞ§sâ@5‘9Èß&aÚO“Nœì�vS×[ +œ� +¸LmšÝLLrÓ¤[•XÎäIüµ8‘"öÜRà8)à6‘L4}¤3¾In©3¯-({Ô˜Éä㯠3›èjh¥Ðn*ÙcK@+…>D´UX +œNHtt÷-‘vßKZ™{†GžÅssÇþZ +X +œP +p€RxÅ䶨â9V¼Ÿ©›«Ïkðž1�I4þÐ{q¡–åI ›,N(ˆJ@«)3ˆMSÌkÐ×Ø=›{Dlƒ¾&‚‡¹gò…³>ñ÷ÿIsc®_ÚÎ2ì©Hÿð©O«Ñ|\ +醸ÿÀD¸h’–ÖV5~§1ý£?ÿÜj—K[Ü^xÑ0Kv1d(——_yAê-ei³ËP¦{÷íGDŽAØXÈÎ]»Ô3ª½£S{â 5®§ç]åec�Ǭ‹‰f¥ìÇíwÞ¥¾ÄŒÂȺ¸íá„þèci`‚à òô3Ï©b•ÆNn‚ƒE¢X°O?ÝŽMÈ;¡møB¶µ Ë7Ÿo’MˆÚ1„ |“ðÚÞ1¢±wc·†övËu…š× }¥ýwCC#¼¥²¥£³NóÙµ{÷Œ£wYäR؛λvïQGÖö6Ý$Òä«_ûš\|ÑEúlöŸã£�¿“ÜËg·€‹÷ù~MrßsGå`Unäæ 7ƒûŒYB_qùeúœwþô§êÅrãõ×˸}{÷Kb^Ýý³{àÿ‹ë™çžÓ¸UÌó,Ž¹&?lcÏÁþäSOa`†dÝÚµÓ„8ÎËà˜ß#ÛŃÁÇPœ¯€ƒž3%Cþp·ÄM7Êî={a@ÄB8�<þÄ“-‚áT·ïØ.W^q…<õôÓp�p"^p`———ÉÿýøÇòæk¯•ÚÚZ9p�›¨a`—ç!¬ß]¾¢D~ðr‹\¼¤Hòøî~ÄébbäÈ"xBíÁŽÅˆ€/iSS3ž)$O=³‘G*¡[z°Ÿ2C·^û¦7iœG}TÛ¿îÍ×ÊOn¿C®ÇïK¯¼WÌ!õ÷ݸaƒ:(ìÞ³Ûñå…‡MÇO9Ø5»%ÑŸ“è#̼t¤_v¢Dš–ƒ”9ñ½–¨_fy+…vSú?Ò8&½ãpzÇËàÃܪ/†Ë0£2à—ÅÙi +Ç¿µ:[žC û+¯¸üôØ69N¦Úà¹Þ†½o)°@ +˜L£ ý'QUÑ3á:OÉ'»—Òî,DÝD4>ºvw‰Óè˜(t¢RººN\+'¦·éúzbZ°µ,h·L{gVwâ…P‰‚)æ!oK~Ù¸ºËqðrUfXæÞÃßûË_j¬%†7̓£>¹ŒQ8ãÖœûÀc~죑ǟ|Rwà® w«©ËÞø¹ït;R.U)Ø¡à†üâž}{ÁO#:HŸòÖtö'¯;ÁÕ×_§åb•íÝ|ã*Äb”D +´ê—.Õ¨Ýö–·(OÌè---ð}!fÈCŸ¿e‹n7 Øú…,ùoîPÀ@wŒ^±sç.ì!¼¼øryüù²úzyæÙg•Çe4ö—ýÎ}·lÞ,_üÊWäò7¾Q#GN Ý쑼jåJÍÛa[[{„}ûåÿ}ìcrßýHÝ’:dBú\DÏ`ªžÞ^éï¿bÅrr†@lI]M¸êÊ+Ìwb@·´™ÎšÀFg&%"ª‘Vó>³±¾â¹‘l'NgÌ�A@³lÑYA¥ÂüP±’’`îLé3ãw„;U8D–±»§G�QŒy:!¥Õ€iXÖPÒÌüÚkÛT�Å€la‘Ri–¡Ð‹Ro +«V¯Z-/¾ô’\zÉ%²íSʽ}ÇÅÅãs6mBôÊDßhÐúËËJeé’%´½S¬ýbd‹Î®N jÎÐ5!Ci:Û怯««S »†RE?)eÆ^¸ùˆ2Â0B8Çý”ª!0c»í´Ü aͪUØ8|›Þgð?N� oœ›‚Qp¶ +“Ä–s6ËOï¹GË0P]G(Ü:tø0"n”"2å°NT2&–M£�e�LMŒVâNŒLbl Ò˜Ó൑¸ï';¶<p2ªœ‚kˆ”Ç“¨F¢T:YâDÇXS6->È)¹zN6‰¦·ªÉôŠÈ›…›¼Ÿ˜Q™÷í�N¤’=·8N +!ÖqV3¯âGbø¼Šœ9™œÝæî/#XKârœKÔc)ÏíJ¸×I\&'¦6ðËLd ÌR81ÏiÒ1NvK¯ bëT“F \a2¿¡$Žåœém:±H&˜2-¤ºG¤&Ÿœ,‘ÏVDNvót¼öíï|W-…š±%?è~X‘¯[¿n\sõÕºýÆãOÂ8‘, "?úò˯¨—¦ü$)ØážJÜîcÍê5ˆ3͸Ì15æ¸ïD;ÿG# ò}7n€0ªUyæ•+–«e >È+wuuÉo½õê”VOä‘ÉwŽ`²ÎNÜ_½r• +œ˜÷ýï}/DvÈüq“/ªh(ÒØÜ$åˆòÈM¾¸eK-Röî? ![ÿ¿·ÿ¶<ýì3ÊïsçnÛ¹aÃzùÉœWS(¯´ ÊrDöü •òо騑GÏXD¶V”esU¾l¬Ì“nî¯<Ý€rؾÛÓà™¯XV,èÕçïÇv4…ˆ{íÃsSÏ\‹MÓ_h”½¡^n§ã÷pºö)ÙDk$ΨnŸÁ^ +»Ü®‡¬Ç^J¦°Ä¹ZwalŸ1¦”ÞÐ\ÖMîN¡TYY™Ü«–/[†�äýš‡ƒl-bA7a°¯]³Fï’Ú:H±s¥¡©VIoV“PÖ1ª;<ªÀŠ›m•b—£^šVV–Wh;Mh4{¬®ªÖ ò¬v^ƒÝ%8xÇ!Qf8TZDQ¢\Œ¨ì…h´Àbß(!fèPZk-_V¯¨Mk®K/¾X76(ÿKé8Û¦¥yYJªuk˜}2¸=GbØ +WIÐ'DÖ¤-ƒØ²VZkʱñlæyœ‹ ê¥ÈSŒ-lžh÷ž_«ƒ2V<žT ´/gxôq¢0f¸ºÂl¹|Y‰ìéÆ®Ðû¤BC›FÐ$÷Žšeb#p&qËs‡ßƒYí`Üú_–ÁmM|Oî{f`óæë†æŒ¥ÖJÎ3§ü—ª“T’Õt÷RVx’oðež¬äþOV›gz;üS…•åÀ5s›ç4LZ»4ø– rÓÜ’û™ä^Zg¬úfk,a¤ûÅHÎFÒN͔ʱ‰à¬aöQ÷@'x7 MÂÑì ãçñªyË9tgš½jjÑ_Ô?›ËÉsÔˆ}@…ÚWn§wß±Â2èo¯ª•_^sD3öÄRÀRÀRÀRàØ)@PŒ`C·…©FºI¦¹a²§‰ö¼N¶Ô½²å5“Ü i®™ß�|¨)J–Œ{pâ½D€6÷ÕŽƒ E@3«[î9›xgZÆ/Çqæ:øÿWÁp gï8YL&\wU¿‡¥€ÖcÚ<P‘‰ù°f¼RüÌÔrGæG6\à;p®Ç«æI¼˜sÅþk)`)`)`)pJ)à‚ƒEïÛZ@ZT�f?èÎp– +PJ¹@2ç:þu²éã8‡ø÷Ž+öóÚ|:G®lZ©9ǯs¿Às=ŒŸkËøuÏÖh.âÊL›ñkZ8¡¬Én-,,,Ž‘Ø+}ûýŒÃfeA´ëŵt‰Þóäh©xåMõuAÉì M=äX)nž„µëLôLp+sM^÷¯Š›3¡[ŠëȤ±L*uÀ¢0Ÿ˜Ýw!8r‰¡¼n#uÎ3ãâl.“CëÄ“eÄëæu'Ê&)ç\;ºž™EÁlÅ(ïôtæ’iŸ•ÌÜšiDïšFu±1ÛÙ*ì‘¥€¥€¥€¥ÀqS€€f‚§/¤2`ö•^Hýù.Å��@�IDATâtŸJD®ž…´µÈ�L@t�u²âl£s[>Íl†ÙgÓkGåtðõ˜;¦�±×¸ñ³ûžƒ‰¼â\5ùyjrš’G²µ&?rÍ7לZÜ î<ë‘÷gÚ²––––‹JÎÓ´R$H'ºñ¦k˜Ü1¹d·!UºüæÛ¢U²¨;&Oâ/Û¡.›ºäE`À(â@R˜ŽÀ§Äk&¯ÓåYpsš-ã¹îágGÖÂG]Ñ\ñŽ9™’®êœÚâ·µš#n]ß~b–ÙâöÈRÀRÀRÀR` ´Ò‰ŒY%Áù˜&pLQsÀã,½’üæ§á”™¶iÕœÎ8ËÔ†A˜Ù¿PzJjº>ò9Ø/¤€Ñ¢æñЪ¶N’ ŠN§\ùØCCÖcŽã—s§Í:“Ý“õ!yâ#3jõîÜæ¶ÓEm4~‰Ç¨gÆH‹õ:É]õQÏj2Ù_KKKKc¦�CCªØåÎã®Ì ¾æ:±Ø8è)-£Y.1©“..¦?«¾k+–'"˜¶’0q ¾,ô¸�ÌfDÅ<Á):’Õ;|D 㠮h1–ÏH¨Û©OàPsàwvsçš“KÿMZw¼<‹#±mh›ñ/,®ht¥˜¿©9œ\Úyö'ñÖL{`)`)`)`)p, x*C&ÖGðÔôÑ`JédàË2JÖi¸f^3Éí·k®™_–I‚ÛZW2ðe9ê®Ý‘,M]‹ +À¯#ý¯tâÊDqL{áB,Å8×9ï˜Mog~qÅù?~%žƒ×f*æµøu%EF˜©TóëéQ×\â"Ž™+8pzhžu掻b{l)`)`)`)p øfûœ=ÂRW=,¤o8ÕðR¡»£ó5 Ì2,›.€‹í|K·80uQ/Í?Fà!Jð¹€µaÄôÀ}„‹î;Æͧf ¤fœ©Á9p2�îs=föÙ&~ã™gÊðŠûÄuÌRzê\›ý—ûŽ%ä3uð2Ÿõ¨û¬Ì&KKKKŦ€‚î�š¬óÐÄrêT9óºÏÝÆa‹ÀÜ}'1¤Øù£± +yÀ7"IÏdÀ¦wÈÏŒø›ÑÕš– Œ¼Îû3ÎMW~š‹G»#ñŽó,Éú†g‚}Äk±?––––'–äV©»%hv>-PwKý®ŸñxQv>‰OÆ–¥ ›FVó+%h‡–ÎSªGNç;¼è�|4X90w$.ǯ‘"zèœ+pH±rÒz\Ùœ¢ñüÑã2°"…J;Þ@²¾h(îÔPOüêLÌÐgùŸM––––'’Žô‘ÀkľbZ-ÓX*ÈÀ6½¡Õs˜BðN'¦æV5SŒ®Äy]–¡kö{Sþ x™}4(@ÐW—#´•ŒË^\�&·©§ytçQô_ÓC½å:a‘™îÇËi=αsëxWÑ™kÌêj×d9Ä5ã‘ÅL½¼¥É”6ç¬Ú¹6{Gø_?ŒÙ‹³ì‘¥€¥€¥€¥ÀqQ€Ü«_wE8‚[20åtL—¡ÄÄ)Ü�câ=ž3’•_÷ý(�9kš~¿Éyá0Ê%ƒ�ö!.Q‰éè+‰9ŽóÜ+vÉš8S uõ”ÄXZ[Ö•¨¢ú™ÆAy±ÅÙ°ï=[*@xÁv>Ãò½ß^+þ‹ƒòRËøâ+®5V¼U±6j梅Çü3À¨÷pÝ¡üÊ´m·o™«3úÌè¡ëÒÌ!.ò8ñiô" õ@+°ÿX +X +X +(úd[¯qµT»9%’j`dB|àœ‚_â³ðÜÙŒs/ÁÑ$Îëÿ˜|™‡ót�5p3bˆIs‰¯¹e³—ÜÉ 5ÉZ“'rÕä°QsQçËrÉRj^:Yî]#42ÈøGø1)At‹Ÿ“£ö·ÈOß½^Ü×'_¾UÞµ¹Búþá2ÙT”[Ö–ÈÛ7•aÃL§Î 7C~þþsä³7,—ìÉ÷G—ÔÈãtž¬( È7~sìû«Kå‘?8O6–¥&ß'O}è¹ã=çȽØ,E9ù[×ÈÁ¿Q¶~ôRyÚ‰L9ÎÑ\]9Xi¡üÏ\›é¿>•ó<5‹òk>Kü9c}pû¥À¼)ðð#Jk[›ŒOÈ}÷? 帽^;GßùÓ»gÎÇ'&äÛßýž47·Ì«î׶n“Û¶iÞŸÿâ—¨Y/ÓÝ÷ü\ëŸÒï?&wÝý3ùÂ|QóIÛ±Aî+¯¾¦Yyÿýº¦©ûg?¿W÷ÜŒÆë¾çÞ{åß¿ôeáž›IÜÄ÷ñ'žÔ">þ¸n +l$P÷?øÎ;t/QSçôcá3/$ñùÙßÉhTZZZä‰'ŸÒâl§¡±Iyìqkgî:|¸A>ó¹–Ûï¼k^Mp“ã¯þ××táºÚZaùüô?a£ãÙ]ºSU¤Dª›®ëíØë”L†þ<æs1õbïT~[Ñ$œ f8ƒþ¡1-͹Êd¢]÷#‘éÊF>S†¿óÑS¬í.ÃãtîIlÓ|,š\}d,êóâ[A;ñ‘ÝäP¨â?úÇ@×AlZ[]à—§ÁõèS‡åÀá¾ï¼ +©Êõéj‚@˜ �ÞXÔÁð¡Ÿí•þôB©×|ÕòB¹é;[åï¯Y&7¬)‘mí£àŽ3äS×-—~¬AÖ–åëϵÈ>Ù(|è"ÉÅË(ýÄò®&_vìØwJ~²µCwÄvzÊÎ!Åû˜x‚®€»æ€tîÌÜ?ò‚û¦=¶HK‡}LÚ0I®Ç®íüêWrÿCÉùçm‘ƒ�“Ý~»üèûßÃÎîÙÒƒé5–%KêÒÖÉ›Ûw†ÝLúÔùÄSOÉúuëdç®]²ÿ~ùâW¾*÷þô.Ý�›àøÔ3ÏÈ;ßñv).*š³îØÍ~÷î=’‹¶ÙÿGT¬{êíìê–O~æŸä{ïÑM°ýþ€<þ䓲rÅ +¹áº7Ë‹/¾ˆ1„¹y÷Úµzœ¬Áf�âï¸Cª±1õO=-<ø+lÎ]"ýýh£KþøOÿLî½û.Ù|Î98þ°pQpñÅÉ–s7ËN<û�GÎ;ï<ñûýÉšÐEöO�¨Õج»4`?ï¼ûnl*¾F7ëþÉwÊŸÿéŸÈÇÿòcØü{\AŽ}ºåæ›$˜““´Nsqxd›‚—Ï<_Ee…Î_Q€½Ïë5ÙŽë—›’ïܹK7?ß¹{—/==½rÓ ×+ïÁcó9›°Iy¯¼ç]ï<®öN÷ÂÜd;•ˆ8Uß9•“éšÌË“Ó%‡›š'N,᜛>.â~ÀppŽFdt¤ß2E3vÓ…Z +XŽ™‡ïÚR)9«‡GöË¿?Õ$=#“òéë—k¯oßÖ)Ÿ»~¥|æ‘Ãò|󼡾Pþöêeò—ÛäžÝ’ðÈ_]Y/ׄûÇ'å?žl’=�ô¯ÞºV¾üL“<v°OÅÛ¾l©¼m8läù×Çä‰C} ;j˜>&‚,»¿Ç•kÇÏqLƒ€O^¿Z>qíJí¯ýÇRÀR�#ƒ›`k’ûœÇé’»\º|î:™ÏÔkÊ›óTu˜|©îïõ�È¡á!Y±|¹<ô«_cAQ-×]{MÚjG'°kϱ‰ Éýò™æ+îNÛ‘Óàfƒ9>eÔ1³¶ö˜Ü2EÉs%Š™Mô+Š²ÉÎõ=!d[üe"·œ*r–»}¶cÄÚ‹ÀÃ}ñöÙQ´ˆÏ9sõ`€Î¹Ãgš…êÙÜNE<Ÿ½Ëk:¸â—Xcœ&šM/ë…™ñn°eW:¢_溫msHª™Ž-�ºÙß×+æ²×ësÏ÷¹æš¸ç[ó �€}ÇÀiçtÏËonp,¬Ì“Û‡ÖÝï0@Ô6÷Òéz9O@7l¦sS†¿ªëMöÒ ¢î2|÷Ùi\•ªÒ�¶)w°fW¥NãÑf“ài’s4{Îë³@›3žm–ñTÏj…ü7~M+ÒÊÜWâ÷ÝàÊŒ®4ƒÖ¨gÎcW9{h)p†S è&^O<?Ã;e÷“¬¹æ¦¹–²¢9nåfÏ‘ãìºíšÁ“<xò»É¯šâ¸›"ƒƒ03½)0ÇoŠÊÒ”Z<�Ž÷}FÌs}Þž7¡[³Ÿyø8¢:wâWYÇLÖ™‡zêºÆ&g3;˜iâ=r±L,?Ôsž˜² œnêë¦"§û¯¥À™N#ÇÏìx2×ͯyÎÄss}1~)]ì›–Š ³áúb´‘¬N7°šc>·96¿†æ<Y]öÚÜ ýrüY3Ón²Ê±fÆT”¬Ó6¦oŠ…Óé‚z=ZÆìlD›öCéÞë%g= ®*`M4Îâõt‰Ü1ݘ&£N!ÂÊâ0zBÈ4¡œó^7Õûq€sºGBué™ÉeâÕÄóÄësn²™l8p˜ìTÙžM––i)03v‘Ëó—ãê5øWðF¼ +3øÌïÌøýùƒñûÀÁqù«Gûd(<-…Lù·7•Èõ+`5Óþ‰luÅç÷ÔÁy„Q÷po~‰M›Iœ43Ç'ºW¶¾Y +³2“»ûÌæ:úˆÀ Cå%êŠQk¡‰›Fx\^e‹ +ÀNçœjÆ©ùJ¸ŠTÏgþ™Éà®sTêLîk<æÈÀ¯ºGIü~ô¦ÞŠ—Mv<SyŽéx¦¶hÿ±8)`�—}7ÇüåŸÞÿþ\¿|ò©~ÉÁñÉNÄ=?8Ì·ºLË<Ð#á$ ¸Ø}ãLÂ~ÜÿŽ9¯ÒÇi‘€KZàu/vŸÎ†úiÈä�îü¿?ê_©¿%·¼d´æâpÝuò»ÐP”Y_™¦‹/Íü;Ñ fÎD‰ž¶á|˜Nsîv‘G³™k<1yyíÈ:œòæ_SÆüòºûØä[Üßɬ…›±/nlí–§�ÁÂ$sÌ_ó1ÉŸ_X,¾¸Ôd;«uvšŠªu«\Ä‚ð‰ÿ,ÜPðUÓÏ6ÈñkÖ–qyqïŠ`:—ÕrbKŠœÉõøÓ%·AÛb~–KV*ƒ*Îíž®ÁT÷232%+�›,,Î +hM2 Ësy0çY×ô¯µÉ¡�¦6]ºþ æ¯9fN÷±¥Ýü)ÀHVŒ0e¸ÑÄ’Ô¯¦Š†5Ž£û›6e Œ©rÐO—í%K,“ +„ ôî(X¦<ûÆ>&&AFl’xóxÏ3¡IÒæñVkË[ +X +œd +˜ Ì�ðInþ´oÎÐ…�kheÁöľ6‚^2L¤áT*ðeh•,X*eT©ëìR”W¹€â½d¼¬sŸu&`V˜$Ù%l¢ØK––³ºßDZ€I¼nÏšYà]Œ/ÁQï1Ä#Žú\BZ–JÒ·G/AF]ä·K�M¾¬yrÐÛ1€Ê2éÀ—僮ÌÙ>¢“ÚGÞL’,�'!Š½d)`)p4,ðM{åäS€@˜\£šº/dZ=ʹ&çDS•$àfƒÔ|û˜Þq)U¯ìuKK³‚tçÿš-æO«ÅÊIn• SéŠSµK}ïx„;&% +S•p¶ŸC™dÛ¦.ëhXb³ì«å€ÓQÊÞ³°°°8¥à†nGéÜ€€e°tž +ÉüüKg0Ňr[Uóœá"ɽ¦2Îbb´ZUÇÁšA<híÌ°¡êUÄLI—åLâ±å€ 5쯥€¥€¥€¥ÀiII€\:®–l2æ•Üi*ž–»¤2Ùu“Û×&ã”é÷›ì:˱oɬª-�ªÚ_KKKKÓ’ä,ÓqÀ4´RoBïõzÂ5sJëéduêu õfrùëƒ^2c,rÀÉ®³4ûæƒûRb²�œH{n)`)pÂ(088(÷?ð ¼øÒËØ>:¯z:4¯|ÌÄÍæ»{z4Kk«Z¹ò„mnhÐëügttTžáÅ™û37ìÁiOZ•Ï4ÆÐ’ƒ}Þi%íþ£89]b½îü<ÖÀi +LéÓ›X.ø™Õ1.ub«NCh{ËRÀRàø(ÐÚÖ&ùùRQQ.ÜØÞç÷Éê•«4½Øþµ[åüóΓÎÎéìê–kßtµ<üØc’Ì•kpüèãOƒ\twwco×,9÷Üs%Ì‘ŽŽNyëm·JSS³ŒKqq±¼úÚVy{í¾á’‹å•W_“—_}U.@Ýï}÷»$77W¸qýy[Οό÷øÏ–¶8. +h$¬Pd±"aaåâµ\oȶ8É0Ö¼üu›HXü%xžˆHXä`}>¯äçåŸä§<±Í…ÃaÆ(X&97ógZ³>†û ONª•¥¨Ÿ¥>˜œh€bß9¸\–áwšœV_`/Þ‘ß;?á/ ¬Œ•ó\]l‡‰:gê{M‹\o*ñ8óZt$l²°8%(-)9%íÚFÏ4 +`Ç)ìG+e“hØ4 ›ËjÙ�6ËQ Í-£ØE‹ñ™SmWhê6P–¥Õ2P?§l»›yhÐE÷&w\J¢W¶�LÊžÀÔ:’Qœ«³|¿WJƒ>5Mçjȼ4~0ŒÊ’ÅL6Y +X +X +X +ÌI³gobF‚“@‘%à&KQpÑžÛNÅãž'–# ³½TÀ=™¢-^÷&q:š€Í‰Ñ >‰+;"`ÏÑ›\h—ÇöªA@×HX_>·I«Êóë*ˆJÿÝ]#²½}Xþúš•rÛ†JWi{h)`)`)`)p4°¯�9Hàw%2‰i�âädàË<dq²¡¥H˜LIXUS4œ*y@‰Ü³)EÌ£¥s*ðe~pñ3Ï™Èp¥j+¥˜bõ‘HLÞrG›´Oj%|n¢?½¸ùï+ä¶ÕA EMÍ¿$ŠÕjØ_K3ƒFìÆ_÷ñbè€ÏŠÌÝK«ž›FÇ“Ã>žzN·²srÀ^ 1áuKe@þä‚by¾mBzƧäg{‡±ê8ÝÇöÇRÀRÀRÀRàl¦€1~Z (É¥;w›¬>¶EU"¹ãù&â©cÏ ÀdÛWù䦕y²§7NX¤.Ÿ;RÌ·9›ÏRÀRàl¥ÀƒehhnH²{Ï••+VÀ¨Aî3aýœ'míp#*’â¢"iii•ž¾^Ù¼iÜ’ºàr”\üutvJmmHWwÀµéÆ믗ݻ÷@$•s7Ÿ×£W¥®L#£#R‡¼ýÈËò—\t‘½ï÷û%;;Gúûû´žÊÊ +“ѱ1©®¬”óÎÛr¶¾ª3þ¹ †ˆš paüQd,ÐF⃺EÆ�)S‰´MYâ"ËáGÓ\"mSŽq =‚‹i˜ ^ç‘Ž‘¨ü`û ÖA¤g£õ˜€;ܱ©ÜþZ +X +X +¸)P^V&Í-- +èª+®Í¨ªªRß^º2q>á_%�º®®N††‡eéÒ¥R]]à–M6H.>555288Ÿáó5îîÄø„ŠÇ™ï¥W^‘WáO\^^®þÀl“>ÅË—-jÔÖ××ëÄJŸá]áêªÕ:|èÇö;µ}wßíñéAªAÆÃS +¨©k„áb”hlEý-U¥´ZN–ÈñÒŠzFÉ‹LÄ6ZZ§ïÄøѬ›íL!´ZHã[KLÄéêu‡ªäµ”:`S3sOCú·QD1&v–•¤JVœŠ2öº¥ÀéK·Þ×}luÀ©ß™Õ§¦ÍñÞá788†!Sjc«d ÈvÓq¦É@Ñô5Ï/9mr¿‰‰x— +ì™—nL=»SZ˜™?¢¢mûä¹×vJEi‘Üvíe@{+ƒvÒ[ +X +MÝa¹÷ÀH|/Ö£ïŸ.W(R¬Í÷Ê»7XÛ–Óå¥ÄûAéE¸X2|©EÍ´\&.™ÈƒzÀ0&aFgª`&¹R#«§>7—m +ROìAÈJ–áwÃzXf.±5AÏ@Nm1ÿœ�ÌFch¨¦¢Tðk-†î…»HØd)`)`)06–û…6Y +,6tÂMÂLxö,4tS‡äH^n½ô¼{Ëp_~ÄPµnEÉ k¯Z +X +X +X +,>ÈEROKïBõ´ŒJµPþ‘¢ãd"çtm“;f[‰"çÄ2óâ€É¢7´vȦ5+dÃÊz(œ–'VlÏ-,Î| +PüGÛ&nŠ`“¥À©¤€[: @¥î7]HIöU�Ø&M�ÁOJ�»'¥ã{ÝË, #¤ä–Õ\„&gA^ÃW¢l�¢îd"êy0_³¬NÂØ´adl\²V¤Dš¤Jmííòð#ÎL\ÌG7ˆÚšjÙ´q£îÌ’ªì™p½;Ñ|â“ŸÔÝgJJŠå/?ú¹áºëæìz8‘ÿøÒ—Ô½äª+¯Àn6·É»çò£ï_nþß{î¼ã„øŸ³#§(-r¿øå¯H6 xóµ×È-7Ý”²'Ï>÷œÜñÓ»á2“-ýðŸ -{OFúñíwÈsÏ?¯–ÈûÈŸËôcyßïý¾0fóc¿zPÖ®Y#cpÙašÏf{÷íÓm� + +dé’%Ð}Ť´¸D]à=)K–ÔÉŽ;¥ª²JÇÇ‹/¿¬;ÝróͲmûv윴;(ùe;(íÚà¶TZZŠ±´A¶nÛ&“Ôáàx»ö©.N+–/Óí—-[¦îEäyúég¤±©I>ø{¿+tG²éL¢@†nŠŒ£$wš™à¨,%&&rÁ,G½l²D`7îBîû亹(Må/ŠÒÒÙ]Â1Tf¸]bb:úJbœsüì«;¥³§_Šóå¦+/k½0ö?Iµ¯ÛKÛwìþñ‡tÛ3ú7üåzz{ebbBŸû¶·¼E¾ÿo«ä™Dî³zÝͷȮݻåm¿ùVù³}HÖ®]3¯G õýþŸìäœoŠ�üåÿ7yëo‘7^zé¼&ôy5tšfâ»ÿÞ~( ‡Kü_Óð¶í;ä+ÿõ5)*,”¼ï½' €õðÃò½ïÿ¯œþùò¡?úCyç;Þ÷Ñ-VðÍ–€ÿð©ÏHEy™üÍÇÿßœ”Îòxd"RÀó"$ }s—Ö-‘§Ÿ}V¯544Jgw—n7ØÝÓ~¼Ô»vl{¥;%Ñýˆº3n'xí›®Ñ ;:»0¦&uŒ=õ̳z‚kýy/¾ðB,"^Àñ¨–½ù&™ÂÄÈ~ø|~ê=!Ïù 6Ã)§�#0Òö—\¦;ÑÒ9wÉ<äp©sM&®vëbÝõñ˜]Y»Ý†xzßTàËûÜt!4}ô÷•²-˜xÇ&‘´áÉhìÑç_ýðÞ_Ç~ñè³±Îç*Ãûà˜YýY—îðÁ˜''7–]P{øÑÇŽxþ¾¾þØ…o¸Lï/Y±*nYï?ðЯbuËW"‹QÅ=ÎŽËjêb?ø¿ižƒÅ +Ê*5àüfy5_f G¯}곟ië[ÿóX^Iâ†ú]õùc×ÞpS¬¿¿_óÇ~÷þPû"ñº$Ó©óï~o€9S�º±,<W ¿PëÎÌr(ÄîºûgÈ;{ÿïý~Lûbžuf!Ï?|êÓZÏðÈHlÍÆs´OùØ_êµßr«Öñ†+¯Òógž{.VZU£Ï£}ÊÈÂýŒØ¦ó.Œ hžÄ~vï½±ÒêÚø³:ý'Ï¿ä ±ÖÖVÍþ‰ü¤¶SX^ÛrÑ%z¼lÍÚ&ûØ}<«®_~í+ê–Æn¿óN-`±k®¿ÑiÃ<úæ æÆxð¡Ä.%=ïêîŽ-[³Né·tåê˜7˜‡~d:íâÖâý¿ðâKZök_ÿF,ﵸ²:¶ÿÀ½ööw¿Gû-¤I¾öȽó½ï‹AºÀÇ6œ»÷¼ú~2üÙ0ÑÌŠé/ò¾ë}¿£ÏËÊî¾çžX~iyL˜‡ï4•ÄØ/_n¾ÒŽù¾þÍoiýy1øÊÆnýÍ·i¾òŸÿÅÛ6Å) +…bOüå¸áw…Åj`ƒûÖÌŸ%رQ šº1g<Ž‡Ž¼æ¾Ÿìxc„å’ÝKwí[9ôql—WŸùØÐÚ‡õºªr#ímš›ôt'rÄÙriÖQÙž={å›ßþ!Áˆ<ðË_Hl +{_âoë+/Ã,KÞ1íßýÃ?JNNŽŠ$)y×;Þ!±hDóýËç>«RŠ/õ¿T|÷ů|U>ø¡?r«ýóËý÷ß'¿üŽòæ7_#>ú˜ÜòÖßD$ ~ÁB@¾nçMW_%c#ñv#ÒÓÝ)?ùáÿꞯ_·NÆú{¥FÝèß>ÿ9¬Fcò[oý ¹=Å•†ðÿþš¶ùÃü¯ÔTW˧ÿé³òŸþŒä@œš˜Tèñ͈ô“Û¥Á,áÁýüÞŸ£)måE)7˜˜þïÇ?‘·½ã2Œ�¿ó¾÷É}÷ý¿”w€>O^}ý‚IQU�X¨øôVpDì÷á½{äK ÕÍ·ý†`ò”G~ýÐí_zþY]j¿ã]ï‘ÏþË¿*ÇÿÄSOI�Ïpíµ×Ê7¾ñuÙºõ5éïh—®Ÿ[üîî7ßK%¢.õw¶£ˆ¦3VI£CÝxëB†Çµ6ûÊtû Ͻð‚|÷{ß•oëòýï~ô.Š¿öõ¯ë3RÕ‘®óp°Scð`ˆÊý÷Þ#D„ºóî»åáG•gŸ{^�Æ*ùW|;úa«·½;¶©ÂýÍRÌœ…g¦(œ~þÓ;å/þêãJ/÷3ÙcK“IÎÄ¥dÉ-Gßav–[hb‘c+G%Kòdú8/�¦ÛÑÒê +¹hó:©*/Ť‘¼R{õh +$êš~yÿýò§ù¨*¶lÞ,W\q¹N¸$j^^®¬_¿n¦’•+W8¢GÜëéíƒ8úÜÅrZV¬X>“ú.5'jæ…®‘ù¨:E˜½—)èµ×ä²7¾Q>ñw#o¹éféíëw&Q”Y=[À¥K·G+Åx +ø*)*d¢Ho‘‰ø‘rÂnmk“_zIåwçýò·ó×Âg … .ubßÿóK_”�Ó—þíúà”\€;C(Á׎*Ìg%`ðY'Búœ|Þ ã'Ðî;ßþÛ2peb>†Düc�»I=ÐÇ’ö÷ukÖšËJ“îU‹{Í}^zÉ%”~ñs9gÓFùÖw¾+o¼êjÉ/,–Obqa’iËœ'û%½¨ûÌÅ¢Ö¤uq1>õäÃXÜdfÌM‚ß׿õmÉðúåú›ß"Mˆ,U[[š)Íù®-Ê$°]ÅX33i0,#?ün8–¹ !-øÍN&U#BUPn�6÷Ü¿\@Ød)p:R 팥¨s/LQgK‹e–£îw¾‰yY†F]‰zßTu°OìËQ,>/0'ÜÜ`¶þ±b³"OÕÈÙ~]o„€tÍõ7¨¾œ“"'s …‚À7¾öŸò»ï¿’ê“ÿ åV?ÿ…“úUk$??_…1t9þ@ì¿¿úe 駺wÔå~<æ¤Î¼ääþî¯?.-1´üœ²Á1Ï8À*Ýã¯Á¯^µRÁ"Eù¯¯}]¹pr###2>Ø/×ßò¹ç®;�fó^u‚võù?þ?p’oEH¿ò¹ý‚Ás¢ .ï%—].ÿØ_ 8è#:;3É›sÖ=1’k®»A^xæ)ø^¹iü0u¦ùùy¦3¿øÁßWÀÿ§Ïÿ‹Ü £¥_Üw¿Ò}Œ‹ôëž;o—<—‚F¼]7í>ÿOŸQÚýÇ—¾,5ËWHÚ¡~ÚÐþƒ¨ÿ¿ÿó«ò9pÁ¤+¹hÆ&àkßÑC+2nñÚM›•~uµuòêÏ*?ÓÑøËøàÎ÷‹_Þ§uјˆÏÈÅï}öÓŸ’u4<öÄ“àÆ9NûxwŒ}ŒŽÁ2"¿úõòk×.yâɧdßµy&í“‹¾l–÷X¿ê¡oºázù‹|X>ÿ/_ÛÞöv}Çäœ{a£@)K&öHÕzLYö“icÕªº°cÝ6Y +,6øÝ…"7}œŠ¥¾6=?¤ê›Ëj™`è6ì"(XÓŃÖE¬à ¾aê+U2uó>ûÈvæE™ª²ù\§bülôædJ Ã×2C&r†*ω;]âdLΑÊÿºšZ)*š»rRd¬\þ2ȼáZM{ü8 ÞD“¥µµM?ܺºZ)Àýd‰ñziËòŒ¡›êCç``8™d9q'&Z©öôö ¹W/™e»Ë’«#WFË`g1/AÖ$ŠcÉúa4Cn‘‹ˆ¹ëjÁsD1iqÎ…I\;eHUZä&{>–o‚•,ûɸąȗ˜ÌíØ Šw\12Ô¤ææ¹øòËUüK‹n÷{`ž™çI:3òÁC‡tƒr´e®ºÚECùèûÍÄÍÚ;;´oËêëõ]pq‘ƒ ²³?9 +Q1¿ ~#L|WÃPoÄ a ×Í€IÝ÷“Ö……°|^¢†Jüù½r£J-Æ`ÌÄo9ï“ñ�˜XG2šz϶_ŠrñÞ8ÇÍÀXX·ÁMeÌ”¤¦7œ‚³}ÉݤÚdvý²‚w²D 'à'KŒ¬•Ì XÊp2*Úk–Ç@îØC.’®fgrâ„ÇÄ_÷1~<ç/é¹iBËj..¨1v�*ÉA]TÑPjC@g}\íÁGÂ’yÒ.Êئ{.&(à‚ù¹p¤…ó²eõj+À…$\°Àxmæ]À€O`l§‹²7]uåÌ"Öôß<ŸÍ½@1÷çúµ�<…Žý>ßÍ,Þ“›©•_,ÝŠÜÜ,ó¼G9Ë™üæ—ù ¨hb&y¼´fN—ÜÜ,󱉀à_ &+K¦Š›F¸-«çAÉj²×,,Ž¢�9bþÙ4KJU¾eðcþ5€Øëõ©~R‚èî½{eÝÚµ*1¡t.DϾð¼ìÙ¿O.¹ð"yåµû”idGÎüê«®‚˜<[·-¼å¦±»R¯nUXanwH÷¦«¯¼RÅó¯Ávï}÷»d``PA÷ÜsΑ‡~õkµI «'g¾³C ‡Uÿ}ë-·ÌvÞà;¢û$;FˆMåÓ›˜×}Îz“ùçºó$;&wœŠCN–Ÿ×¸ HܬÁrÀ©¨e¯[ +œ¥ ÇÁÄ_÷ñ±pÀs‘p}ì“(®Ÿ«ÜévßrÀ‹ûFÂPù¸˜\$95o›¼?äx ºI¦]4· 4Ÿ¶,¼ ’ÚÌ––'’Á`Ή¬ÎÖõ:§�ÁP£MÑò i.#+Cî@Dñ/›¢ét"mSÎ[N·µ¡ÉÏ_·X›˜ÍP™©@ß°›röØRÀRÀRÀRà4¤@†îA@7#w¢.6J«å†VÌëQž;:å)I§ë%‡Í ܉†W4pLehż‰ºa.Ø>£gˆSzMsbn{n)`)`)`)`)p +(`DÁ‰M+$;qâ-=OU.Õu:Ö{n+wgŽ\6ÌÞ±ð,-ì‘¥€¥€¥€¥ÀiID]…áSâ>“Ë4@GßÛ¹,–ɱÒç–,ÿ£æ˜¢ëTba>>ïi9´5Gc^óÁÅ3.˜†`QˆÇ¹‘ƒÓãJg©U2²Z�NF{ÍRÀRà„QÀ¸ Q÷6ŸDá|óºë£?<Ý£Lâ$íÖóñ> É£Ó™üö÷ô§€ãZt´(w®žÓ¯7‰8m1¶•Llœ¶nRÜìèÏ'Y�ž•lKKc¢�wÍb˜Ìåõõr߃jБsà'ÝŽÚYY‰LFd>žèÂÝ’ÈlnhPW%ü*é‹@xmÅòåÉ‹îJÑ÷¼ëBW£ip7^p¾<õ4¶lnÒzp†FNô6ì¶E7¦;î¼Kƒ\wíµÇäë{L°…N:¨seDª…,âȵª8¾¹…$ú{àsžŽ›N¬Crñä–R"uŽóœ~‰[·;Aí×ÿ1< ˆ‚¯aE9|{5:Uuu•N>YxéŒZÄ:}L€Qˆ!Šó‚‘ÁÙiåŠÂèEŒw|í›Þ¤Q³UÊëñÂ_a$Ô ¶¦F#4q¢âFtñ`(Áil“ÅÈM=(Ï2tà„·åÜÍGpÇI[ü§€ÛõÈ}|,nHã}¹k×n>¶jå +l2�P,–=ðÿe Æojiúç2õVìL¿áÒ’RÝ’pㆠ:.t.Kô÷åxâØ(**Òï}'@žã‹q¾§qQÆÜSŒÎ|nC˜ÔüÜ<õ>ѯȺ!hŠÎÖÇ9*„EÚ\hÑ Ë$‚â\¾ÁC6Û0i>–ÕiDMbß²±€L×G}�6#p™dØPâýr¥½oÿõmdâ]ˆêÃÍ×{±™Â> ˆL‘`H dxJîNÄßò²r éÅ>¨K�ÄŒéL`fBÆoæäÂð…œ¤ˆ`·ò0±¨Ù΀–e†rÇÎ]²e˹҅ýS©“`,sÎÆMØœ¼!³±ŸïÚ´\Nil5gÜ ë>>�>Cù¸»iø¸I˜²~ƒƒŠ2©äjŒDKgS¹àœâ`‚o¢¥³)—.e¢¥³)ÃßTÒ„\Æ‹v=ó[�&l²°˜¡€tÝÇ€gHtÔà£HrÂ.ðC¬œÚ�*‘#5ϵA˜@œ˜È9§+ÓÏ—€Ÿ˜æâ¸9t–·:àD*ÚsKKKKÓ†äbÉY&ÁÉ™>:FV™ƒ€Ê2ÄäüòL±™z ªüe܆{³9g˜'è÷¨(™ÒlEÛš£1ê¥)ÞžŠ[c³À³tµG–– àDf¸à„[ö4¤•M§–BðÉê_›#Ú^X9n¼�S¯…µ…Üî¶l Ž‘Ïf¶8{)`æì}÷§Ó““ÇèØìÿ;ß¾QL==¬Ûj®²ª»…¸9™È9]YrÔl‹!0Ó%˧£Ž½g)pS ÷k8õGai“š6Ç{‡"â·ó‹[à XCCÎeµœ¨³åÀäz°Z›2%êlÇÂQp¯™ê┪ûÆXÕF\ÎøÓïy +²å€SQÒ^·°8Š`Ž"‰^ ]mÜÇÉsÛ«§�#`ÑW÷hƒ)wd¬Äz „É8e^ÁS$'rÖÑÜ+Ýœè3œ*…q߀¯ÉÃÜÉúÀû€ •ì¯¥€¥@J +Pqÿ¦Ì|ÞHF^³éÄQ€œ.u¼‰ÉŸfg#¾µžN(¤Q®ÒÝ0F] Å4&#]¥Jô1ш‹ßA*d+‚NEI{ÝRà,¥�'·á•97€b~ÏRò$}lCþšcfLuœ´{1 hmL±ñÂ"U±B‚v¬–šøü[Hâû¦Åö|ÓÂ{5ßšm>KK3žœPÆî_s¡O°ñ6`ø{Æ?|Â$S^KöÇ¢Éò'TiOt ÊÂ{YH¢˜˜ßo"÷:WÆåiaaÏàx-�ÏEa{ßRà,¤€³ð¥ŸáL0¤Ñ“ŠŽè9™È:ñ1ÝA<˜ŸSs*ÁšFZ4ðbšËÌ´Iýq„¡/q`ÖDÂâjý¦kÞ&O?ñ +Ú÷›2Uiõ¾Ò$Áȃg™•á—`±HÕÒB‰ŒeÈ¡=mjPQ]&#cCRVŽ›±)).+¢Ò\É$š”áþ°4ì”Á¾)()Ü«YR$þ�6–FhÉáÁˆìÞÙˆ òÙRU]$mm=ˆÇì“šÚb©¨Ì—ü âHçjÐxª§Ïc:‡Bè!|êÌÝÓÕ'ímÝ4?.‘ð´øPÞ}HO7bBFeåš2é”L<˦sÖ"æŽ3%˜Œ×B|Ýòaû¬¨ä"žnNN¶ŒÁñ0VµÏïC üQ<{T石i#B\n–<o(4>ŒJ[{»½çÇY€°˜Yh«¬¬uæhìÞPh\cN3œ&côîܵ]¦¢¤¸1°‡%/¯¡9󤣳YbÓ9ˆ•=ŽwÅsQ”„Þ;…~D$4<„óA‰Æ†%ýó °83¾ÇL,+§§ðOŒýÆïä¸dÅr¤·Ÿœ›_<þ,Y³v%b·ÈtVYØÀãGÌàrÉ+*Úú +Ô“)ƒcX~™E%ÏÌõI4cR&§•'Û'~_6úÁ„¿þž^ijêÀs…¥ª¶ßŽGÊë*dý¹k$‚ O=ö”xyxß|SØ ÅÐÐÞã$è”B“F¤C½9’‘åÅ·”G6J¦ÂY²ë@«T-+'%Ë“Ñæ!ùçÏ}NÇ^5cÛþžáøÎw¾#øÀÎð§8ñÝç|ÂP”dÁy0YJ’€šJlͱ61ytxHÖŸ. ±¾‰‰€€ø9yÏÀk�Û”=‹8à˜Ô.-–M箦ý]ž€&h&ç¥r÷LÜ\Ñdà“¹Ïç“`>~³3e¨g\&‡¦$õB|€ØÍ-Ãx· J†'&m c˜4§¤¼6WêW—Š/Ï/y¥ÙÀ¤]P0-ð+8EzEº;%»¹0(}a1À6? —¼a“ :Äo‘þ¾! K>8‚.¹ŸÏžB´P#Ðõõ� óeéŠZl®Ð‡]fF�XA™¸/+,—–¦m»:§Lº»{¥µÏ6…�õ9248*5Ø°axxLÛ—`ñÀòl„_˾›0ÏCà{ŠÙ>f:‘Õ«WHyE©TUVJyyú5 )ˆx|ˆc]^"yùxV�9Á»Üh,kî^‰„€bƒˆìTãÁbÁ ),,ðDÑæòD%'¯î5µ•�å ´`‡›q�6ãV{@cÏô¨da!“‘#Ó9�Ø ô/K&®Îë �°ñŸ‹˜‡«Mìщ<%å~™žÐµ¶rG\˜2©,_…?*íÝ]RžU/žçÝ (XfŒ}~€b&dx®hþ„£2ࢠS&FZUƒ6¥Aƽ^,j&Â)(ÎÅ<µRY·T:QnÏ íèpTFAg¾w8DèÂfb"¤ßIn~¡Ò~r*Š‡™ÆBÇÚ„±`š”¾þ^ɛʕ`v†ÏÊEäÑ‚~ÜöŸ3†n©ÃÓé“ØQ~á©4²éd)Åeͪ±¯’S.:”¦2‚Ö>°AIBb3äÌÓYÀØE¨W"Ó!)[R(ÃC£âÉÈ@ÏX€8dJêVƒ{+WØ€ÌÃD‰ 7n¨kB†úÅ›ã—Âp?øå& e•¹Òß=,=cà`ÐÆá1ém +ʼn=ŽÎ+C]ãŸDx7ø‚¼þ˜,Ù\&¥å¨`ÏaöîݯÀçøÃÏ0g�¼ársàÖ=ap® à:wu©©•¼`¡‚óݳ§Q:ÛÚq”ìœNøc#²aóY‰Í:;º±ò“êšrp€ýÚg²Ymmm�ãlýz{�ãèܨJ<^ÐàÈmÞ<¾€Ô/ÃîLù¹²jÕ*]4p³‡={wëb€�ËiÔ\ÈdƒSÎÉöcÁ@°Âvs�áh4"àÄó°ÃÓ0@ ɺud`°z¿Žtã9§ÁñyÚdî”CÀ%ýkë–aÁDðö€óÌÆ»jÝ“þQ G†@ÇI)*á^¯€2Ðj\ïäd;>Áñ>®ÑòXÃÄàÊ_T:‚îØ©'2Õ&‡šÛel(„>¤¹s7¸í©\#uUõ2Æ.,àÆ3ñ|ãR·d:ÙøŽÂº`™˜�Ý ÆB;ñ´µ6ÃM!K*k–Ê ÞC,3KF&À5O"ž-JÓxß>,FH/.öè‹X’W€ÅÃ8JÝRXP‰v¿BŸ3ÐÇlP†À‰Oâ9zös£ ¯Œ‚#÷û#¸é‹¦£vü†ý±8ã)À…É\†Mêg‹ùj’a1Ï‚Yá_ªDŽ•ÆY䞧0ƒØ‰9L9í$ jê1ÖØ,gÚâ–„é¶É9ŠEÐGݱ‰m¡³€á´=á—ƽ=JÇ@vŽŒ‡Ç°%Z†TeÉòÕµ#Jgë ìßÝ,¡‘)�)¸Zü7I1¼Çêšb @´X./;_v¾Ú"ûv´HÄÑE%~é™è“LLÖð0ƒ˜7€I2¨[¨‚3+®È—µ«p‘ƒºeï¾)F9l%ˆI8Qlóሟ‘g|ÀÐÀƒ‘p›# +÷Õ×M0¯c[ApÕÅrî¦U¸`³ìÛwXÆ�EôMHoƒìÙÕ¤fó³·OwCü�VD$'7œiD¹c˜ì½x®%�ˆ)injÕc2‚‰ Z¿l©ÔÖV)×\XX¨�Ê®¿¯_¹´ �Øž�Ì™(jöû½ +ÄoŠølYYAb¾tbG&rÕ<æNMᮨ_!‡V±ú²eË°Ô�h—‡<,ëƒX8?¾W¬W·OävùyU¨‹ÔMÍÁøèèfplB9ëÁÞÐ(�1>Kù�ÇñlÕ8„¿0¸s 0 ˆ~3ý a)ƒØ}¢©¾1p¤�¾X€¸\ò~,Ò<Ú·¥�ÞÞÁ~p¢y’…†¬öŽcqRy"ä.põàÄ£øë똖–ÉöçwB%1!Ñðú:…gòënXT‰n\Ä cë<J (q!8Ob`{0XýF)2Y~|~~•ÜÂ,Éó%†×™H+=ôÌþc)ðú£�ñóFºÄ i<‹’åÈ!à¦æ“Ó¹m®EA²’>ô‘&U�ìp•”‚£è‡îs0„ÕD®¾iLŠÐIŽDåн2ІHà"Q7‰gÅEÅ8ÏÀÛ'ž~ŸôtATj„j¯ÜNǾp6ÐæydåúzÉÍÏ7Ó¥\_.DÐ5…Ø·t(âÅvªOœŠJ_hL†ZÁ‰ã«)«-Á¶€±-aŸr¹9¹ªïËòÃ’óίº+§Léîê—ƒûÚäá}/B÷@Èœ’ªšJ‰�TsþA”/�øÁI´ø³Ü4t—¾€þ0¾� Üp¯êq‹±+÷P--ƒh¼0_7?¨:¨¢dî·Ê½„[[Z†³eÊ°…âà ¸P€+7X�T¸’œžÝ:õØ55ÕZž:OnÃÈ?¡�@éÐáÃrèàa´]®"âLèI‹ŠKÀÝB¬Œ÷</táà +¹räî3ãÐI3kQ!<c–g‹†J,rÊ0@¼ºßl¢ç,p´ÁlpªÍ¡f„±›ÀsC¯‹u•ýófð â Bš ‘¯Üt‹ /ÄãaH'€¨2p¯YZ#ùÅx—a´JÝo†Œ £®Ðˆ„@w?ò·¶u¢lÊu¢Ì8ÞI$+AéÁBÅàÏ䢫tŠ£r�äYx¶)<c,ŠMé!º§š€+ói,ˆúð eeù`/€ÅÑÁ^HDDZ;Å_à“BTã¨%¨F™cfB›,^O áø+óMœGY.§š¬.x#ÿo²räçjë,àèä¦!†ÆD(˜°Ô«e礽i@Za¬„iÕƒ S28€/èÇáÉ`’ŒaBÇ$Æä?½„Yx£4Øâä]qua™OòKDF†{ -€.3 mÒqxÆ:�öñˆäB|½l#ô§ÓШ('è×~a€4<8ŽÜ8±jè?ƒyà¤úñ¡Á� +Æ7[·6Êí€ø;‘dûÙÖÜ#ÁEÈ-{�–Ø€"äþ�+€2N•œ+¹FX²³ +B#àó`0En2�°¯ª©êêJåȈ{öìÕùúÕ}{� (æu¸8r&1C²¢¡’&ˆû~å†)‚n‡Î:´(„¸šzo‚1ûú¼à˜+kª :/”Ð ƒ‹'7› ñu/ö-.€ÁVFWQ�¦NY4�ÉeçÀ Œ`Éz¹Q;u×À5pà¹Æ +•¢YRR–+/¿ökiißà÷¢l6h‚…I&úPÌÍr ㇞xx|�àé-”’d�³°˜Ð{¡÷`à÷ 4�8§dtx@F°�ÉÄ!]ŒNŽÀˆ.ðŸ˜VQ·âþH¸¨hkl’!pé™xW^Ð’}dß "(,Ä žœ1uéãc2:äï Ÿ…~xÑŸ�Ž�ߪ�À“Í�öš¥ÀëŒÃ0§&QíEƒ©¹`˜eN'žfý\$‡À€™±5‰F(êžô)f&v0±-/ÅÓ˜[’¥³€AL�gº8Ì©�.�2tiÓ˜Ð0Å¢`L"âÏÍ(º\FÆûeåºa, ë--ÄKΒјl{é�ćÔ�\Y� Š$#Ðu¶µ*gÔî%\^1¬Ÿ‡}´2—‚5ß¾!�D†]Ž9`‹bÏœF/|R³¼B¤2&ÅKÀ‰Hc1Ÿ<Ø çnÙ� *†·>Ã�šIèCiQPôc¢QC¯)<OÏ@·Š'ÑŸœŸ,©¢È6S-i]<Žn”:_$Z1Œö«%îê5+ ˆü‚¹W@ehí€3GŽ7 +nU!põ)÷8²ÁYœ *O39{ŠU .ååš×륈:Sººq4û@ &p¯X±BvïÙg†+P"òÁÔ“ n¾ÒX¢«¾Ù+y¹ƒ¾ã�Ä‘QKa!àAÝ…X\x”\lL›¥h—\9¢îÔTÔ1ý8DýY»a@¯°m0ˆ€®! y°˜™§}-þó‚]=íXsåI5C¨k|�í É!H"P+ø òöC’’Q¶ó-¡<Ãh•WX�ιýˆÂ8®UF¾ãCPW�ø'ñ. –2űŸCCRVQíÐ –×9xÎÉp�z*ÐXH—VåI®¿òìn|»Ð%ÏL¤¦M–¯G +8ª@‚›;ÑŽbÌÅÁ©€1Ùž¿äN °Œ’•,%Æf_±®tÒÉ,'1¿‘K&²>‹�\8µ|¦Ø œ ð¤ 9ÙªÊ")(H ô»tõY[°V'ÇÞ.XƒSꎌ)×5Qâ2èrk î¥!P.8ZïN4(N¥^”º¹px\ Wfü0–(`vð+?¿×ð&¸=q€#ìN¬w£ÒÚÐ!¾\¯ìm<®F97Ü|9�*K¶½|@ ¨Aײå…RQW*Ý}½R]aQq•¬]¿ +†LY�Ó|ô9 ;°œ†ØVÐm-RWW¥ÆT»áaŽAœL€ÍÊ(Á³FåÕ—w(F`-ûÊà��@�IDAT„¥sii©ºÑ½)€…E¿}h.¹u^#PÇ`ˆ4räP ²äJ#à¾)J/©€X�ÌöÆalÄöY¦¸¸åb0@Ûë€38B¡ñ_`…[ÓX0ƒÐÏÔÙg‚.Û Î_ª@`íR: °§Þ~úRº;A}ÐËòÉè˜ÔÔÕCâá•ñÉ!p×øF¤áàÙ|þ䲫›vyñù‡àB6)$$\ˆ©!A@|0èoƒ%5,Üaø»°[ú± +ú!Q�Í©³èïÂ+tÃâŒ`þxÑ¿Þö‰ÁÂ;6E®¦ð±q,øðm¶XØP:B7O@±·Àš;bi_¥Üß)=XeÁe-i@Î$$U•*À7t²ÉRàl �§íd‰×9æS%-‡ù'1¥læK]É:gyæÙ1$Mg�sµ„uNú¤ð¸œÕÇMËà(ÜŠrbÒñò0D~cÀf@"&HpŽ”xЂÙë‹Iiu®ô +€“bW\lƒNô¥´Úíïë�@pò%wHà ˆ§a€ÔÛÓ$kׄO¡´6w«î(ÄÌ�aºÅûfbb-ôÊy—l„¥uL¹½"Jµµ·À’¹K¶¾Ü$ù0žÚ°¹¢ËŒ¥�2à×®[ã6). ‚;n…µæ‘_€¿3úOQhg'°`ð$ðMdÈ®ÛÁ¥öÃy-8̈P{Á=f€Ë^/5W\o›.6#¡‚!E¢ôÝ%¸RtK29W|Ñ�=i†¨œzó0DÄ€$9]Š¦iÀBÇ´œÞ´i“‚qkk«ÖY #®aÐ}p�†dÐÑ�.ùh†JàzÇÆC*Šg{^rÕLôi¦Dƒ‹ÞcŸ¢f°ŸQ,*Ø›6•ÑñšÄ}Š¥=ÊS‡›‡w7æ}‡ö¾“—aƒÄ膅ŠùÅ°^rÓ¸›uuµÉò•ð©¦1ÜÀ +KË%5Ȭ~Ïä€Éåû±Ð–•àÝHïÈkû6,ºø]x}4ä¢{T؃xöýÖ²ó| ,êAï +¨&Ʀq•\ßèò•€8«}ŠÃiT§‰ƒ;ÉãÜ´ÿZ +¼(À¹”FV˜+ÁcÚV¤mÎ\Q¯È±’Û¥?\¯cq츦¢EÛAXH“6¾»Ô9ó/]¢Î—¢mnCˆ¢ +ÖA§í³ +€©s bB†tt¦W B„ +¬@Œˆ¢#ШÁ2Ön#®$‚‰ÖÿØ<…Ça—¢Lthž„."ã¼|¿´ÃÒvpbZp€ÐÏV”cŸž€ut1&ú|pzðÏ…Ãfqi¸Z,ô&àçËÀ-pØX¡n2ÑبÔU,Á;¦µñܤ¦`•Ý*°Ee׶LÚŽ_nEm!,‚‡dÃrëÐÆàò„~dgS/Z(/¿°Çpã�Q,rs{á;œâÍœ@Pš·)7šp ‚G<ÐKhˆZÑØÊ•+pW@·Ê@}¯Û°Z¨÷e0 ¸Ä+Ü××Ki¸E!hHWW¶ -ˆú±@˜†øœ@A`®ª†55Äûä i9ýêÖWÑGHÉóOõÔ�¹<èg3!Z„ÿ•ºdXDÃX.˜—'X‡.šÆe”8lùÁ¢(++ +—¬l^‚à$ĺ4bŸ‚þŸ`zøp«ŠŸó +¢�åt½Ðå:ÆN“�þr²c¹$p‘€Or6ÞSYŒ»°èlkⲤJµÍE_ÁÅ¿:ÉIÏÍ™!Œ~†!-Ù´F\à|!æˆ�ÄÉäç/©… +¾Ò(×ÛÚÎR|K¬Ë‡[dxZ&°Hxè×{$ï±w€>á0Dƒ˜?ËG:ž'3,9ù\bará +„+D›,Î +(/ð9É™ú8°˜æº‰UlçÒ/›2g�SJÑ° údG‡;1YÒô +âàÃÝÊÒbv)Z >'MAoL0¤4£)ΰ!*Ú'¢A¢äÀß“áÒ•K�Žp‡è´ª¶HVnX† ’ºµlül)ªårˆÆIuKá¾³,zÌô¢Iø +76ô‚ãV«bÕ�°7bo@$¤>ø,OܪêËä²k·>6}qö¶ìhÈ‚.+/„w\š››eõÚ:)¶cÇ€ô9 +¼‡ &äœs6(rEHØýû÷€S\j¡ê–)^&ÇK°«‘epIjii•—^~I¥žìEÑUÐ/“N6b1Ñf¤a ®•eÉ9$÷íÛ¯œ$uÂcÓø +x¨¢d£'./¯�ÃJ}¸e°‹&}m±Ê€…9}m{ºû´?ÞA—‰�O®š€Ë…Ë$_¤¸ìûÈ(YPúk$«õë׃6p/*ΆQ–4¸ ðÐãü�tΓ0ÈBŠ» - ÌkQ�pœ~6~üyû±¸Á³eÂú5 ˆÑv�"ê¬Ò}xÀ]ϼˆº=jYNñ8 «@$] `m‡Çr‚£x ¡¨¨At.øöôFååç÷È|Àëê±°”ž>¸{æYx2Õ5Šo8àÌçµbhÀ&KP€Ò%êa}Ðíz�¸Ž/0üò!]š/LsäM€)â‚ÀíZ4׋ˆbG0îÉ™ŸU�ì�`$ƒù9p,¼àn)~¥¥1-z‡aœ3…I– À ž\S�ÖÏôf@‡Q¸£Äh‡;M†da‘‚°¦në/Æ#}˜Ì½ bMº–´„ýÙ_–€›A}˜°§Àµd`¦/«—·Û; +ÎÈ#7Rd:�c°bº¬jXË–6,‘kËEë¥~U%ôŠzˆË!:§QB>’#¤ž´ÜYÄ£êk‹ õËjáÎØÐ ‰º×BwuõȺõk ë-TÎp÷®Ã·S‡ Ã.€ÑÒ¥KÕ:ø嶡îQ�!E)�þB¹ô²®@»}ûm×`‰Â¨¨½½SËÓŠFhLU-Ap@ºµHŠ‹ V=ˆÔE)@Âýlˆ”ý~,Aç^__ éíñì u(D8EÏüô!~¸àiüÅ_1iàQäMdËÁ† ˆ…öŠ ɨ©ªÔ£A ɇ(ªy`d65Pà2Ù/ôMJÐõô±#ƒmXˆAÌ-¹2ÐÙ/pªëÎ9WZe¸·÷;eœ.Å΄Áâ#ÀL·£œì"¸? Ç·OgºÝjèŇ»záz”òêZ ÂU-'¯B^{YûÕpßt·‚I¤#‡AÒâ‡ß21Ðy‹£,/!%(+N%‹ýÇRàuE~ó°‘Î Yx)jfâþ»ÀFÔtºÞÄ°’4èb;´vN—ÜÆV´xVj5ÔgÆ ºÎ*�æäÌ—‘Io Œ€à|Öip7SxÁS`IhÕœÝ+WéžB«âqÇ08E�¾~Zõ""Š€Cý$õÄaäϘWWæiøÊ�|q3õàŠƒ�þ±IˆhiùJËÜIó(�€¤²ª?ƒÒQ.¹â¥õKUÌ -‡Úá÷Ù£nRÓÐ3ú�àöé‡~°´Æ[Y²~¦èC0öö‚¤¥0¹0úúN›ÀÄ 7©"Xð2�úÄ}û¢ŒÜy«Z_o>wD¨° +‡{C4ƒ›=x ³;¿|ü�$°£ @ ø–.]Ž8ÈpÉÁÇO€¦î•ùxL¦”R&ÒŒy¨÷åÇHi�%§3ðûíÇâõ’Òb, +Šq t†8œA.èw\VV¤ ÍvÉ]«Ê>ܤà[SS«´aQƒ‘£†q@Ò ŒæìÝ·rƒE2êVƒ(/t6v1 Krº:Ñ=)s¬)Ç°ÙËÄ;ª‘0¸òz«:¿g¨°t’Þ®nY³y#¾©LÙþÌó¨3¤zÙ‘æ,Ê�Âàòi}ÎÓXû¡;ϯ]ŠsDVkï… C—ÖaQX¬íÜ×'ÍŠ%�¤ùì ‚iê> éµü 6ã™ÒÑøÿ³÷fÝ‘]ç™æD�˜g 1æ@f2™$Šš,Ù’«\ÕíZUµj¸ªUZÝ?«/|Ñ«Ý]¾è^ÕÕn[’e™ó˜Ìy@&æyž#úyöÉS©D’é.™CFˆˆsÎ>ûìóï÷~+ŒCÃÅ > AÇ›vúÏ7r"ëÏRõ1^ +±¬|Ë *.À¹.ú8Š±ò~*ƒžÆél®¸B'LÙð”íñ&l©S%çzšÂWÆ9Æ'·¥€«!™«Ý«Ás@9 ‡ Ö7„Kƒ‚rxÐ"óaBx’hKÁçœSxÏljÈ‚p5W‹ Ç8²¡BÅÁdûgá}•J©!…}nx#%3"©—ðp¶8Öʼ ¢B³í(œÃÐÒ\ƒr,„É¥ü^è%'øfÓáí¿ÿ�€–LW›¡¿¯'4âm#„\•º‹¢¯€p#Ú;£2-0VQ¾æ©——Ãý{c‘¬Ãœ§¹éήÖðí7^ùÉ šÜºuݺ?|øÁÕnƒÏy¡ÞÓu†šá˜ÞÃ˳f·³“Zå¨×b.”%‰£¼‡kÌŽRæomnsΕ0C~8±¡ÒÕõ§› +×WOµ–éJIb¦žï¨€ñˆUØF$˜7r‘ÈÁâRj‰}áÜÙ°deXÜ<¬@7ÁFîOF§¢½Y‰?ë ó +£(Ž§@.·Žp®·=€bÛð`×æe%çnnnC9ƒˆgè5¬…�Gmu[¨Í‘i«¹V°aî=ó2DŽ<ßÝ +ùalÈ7jÈgg¹N¼&Ê»D�êÁ¶¶¶¸j(CêyéX(DAÃï’&¨‡§{{Ü@–ü0FàÞ–lh‹(Tòõ-•áÒ‹}aqb3ÌBEIÕ7ånY˜Ó YÉ1O)ê™ïÅïFGisºÎÀ7tô,S¾^²Êòi +μïÓ”¯û´*ƒºü»¼)Ÿž•Ãõ3Éšž|ä|ÿiÊ×ãÆc2F ‰Ç·£€÷!?ªÎ„ (—ð« a<cçà Î3Í(W<dJNŽ¨U†¬¦Rø0|û'�“–6Âýk””'>*U‡»OY…ä/§"M¶»Ï’ZÝÅ•PI]LšÐ¶žŽaëaŽ\1Ä”*–™«©+Üùh/w!î³×záùÖq�>(CÒ—_;n\»Òd”ÆSÔÓE1 ŒÆ uh"|ùÚ·.¢¨vÂÐÐ@üÎòÒzøì³x¸€ª�Ÿ t:k}prŽbøî÷_A‘ePZÛ�¬–ÂìÌ<hÝúpå•£J&„³'Ï6(K‡ÖÈEf8õžéŽ 4C¿.,n5ŠHƒ ¥¥…ãÍÅœ¬ï—ÆÒ×èèx_Ë›l°hdÉ4T¼Î»Z]KÑûákÄ´”Ž"™M Høaø\ÒúúN<`K‘²�ÏÖ£’ÞBùÉA¢g®ò×—ÛYà šðrªzJ€qKk +0g™Šðõ~ —˜c +ˆBca@Uëð%œËt87ø¥^=(m(.™§<eó±ÆÕØ|ñ¾H²Æu•HSì¡`ܾV¶àˆÑ݆RN3ž®Ÿ>*ù–îŽÐ¹œë¢£ÓÞ« +ÆG™¨í™éå07¾r°·Äù!qaÙD^³uÃqsÒN·Óø†Î€Ïp 9·g-sÁR¢–Ýâ÷'J”/Ú¤¡ôŸ þQž}ÑÆ©"‡´ß{žs© }=~®£€ ¦Kx+ÔcÚ™èÊõpê.Žà%”{¾ª3ÌN̓8Ý +uì,!äÂÅk^\|¹œ"žÜmÊxÒµäí2áÊk—è„NçWÂCj5×V ßGð×€0nṅí5:ü¬cñè5áYPj´CNr¢‡Zè íø›»ŸÏ%ߘCIžï‰¿úë«(×”%Õ¾n„/ú[o¾æfV æ'OL¸ùãwQ¤Ûáû?ùVDW¯ÐPÁ†ïO’ã8UwØE9‹ùß{wÇÊ. ª6ê‹õ¬UPXT³H͘†î1:7OÝ@©<|¹U¸†qUp*ÊÑ(#[Ú S?\€{šV‚*;»+=àÜw%,ÂY%lÈÙ/QR¼ÊÍÍí�·Fð@[‘ƒç{vrEKiéý2´ïßv²©‚9ùººz€_\Ç!ãê€c4ÞCÁO$ét!^‹¥RÍŒÏ<ªŒTØ:äeÉ%1ÿ£„ÝM9XV”Âæös_á½À¼À +F$uD©Ó˜ò·õäf;;ºéÈ,¶ÃõÖÒ@Ázo…ƒáè†@Ç@o€Ò&'ÃÈÒMÆr7Ã1ë©GW‰1v×tÄ$FŽ¨>ä7ð..×AÈgaVËå ¢Ü E¼è½Uš]€<Ï@ƒº°Z™›Âc!wm$Ç0M§ÛéœÎ�3ðe”è“õî—P¾¿³ß?fòh¿£€Pë~ JöéÎŒNã}ˆ|Ý%»‰Bɇ³C]z8~ñb.¼2€ Å{¢;P¶:6WÃë6õª5 xh‹3˜[=Cø9Û‰ÇRÀ[(Æzk!„«ïŒé"¢| ââYnƒ¨žÙÝC0]õÁü£ÁÐ7؃’FÈòu”xazÉ=V§é’3CÐøÇx¤(%^W$3€èðw{5üñ?{e[ÓÜLØmÚ¥\ˆú^˜¨Ž>Äólá|?àbµ¡ 'Yÿ-^*ÍÎö¦©õ·ûû›€³– A[RSŒß7=ýeâM¶!Ç^\Y¾*îDÅ©b4”„¢ÔÐ\eÄ!*TÖšûš57|ÿþýX,ÀK’ë‚éÝÖÑ’umƇè‘Vq=ZËŸfg—ðú'£'\‹‘ÔÜÔ½’Ä" óÛg×Æx¯‚ÁÐUÔ9û·¶5òþA¢›Óר@-6)SqG*Ë— +Úr.Û#¶µ¶“û¯å;D,:šC–µ^¨%^+“ו m‰AR„ð[1Z*0D¶IAˆžm8Ýšì]CHʲL¿½m Föi2Ðê€ñ˘¶�¥¡û†¦i +S% °9Æ.=©)XQ‰%kÛœ¯SýË$œn'bÊÀ)ý¦ý¢¬ø‚+÷ù(ÓQƆ<›_f³8R_òy®ãBÌOËP³¬]’ð<Ðub°BJÚÆ<Òûsäù¯¦•%d†úË”C¶žÆ +S~–£Æs-líN…ï|ÿ%3Ô‹ÚIíÃLýedóÒ4-âvçè^Díg˜ŽŠÈ6r“ãK(¿pöB;µœÛáGÿöB"<ißÛ¡\IöíÏ»Œ§38tŽÜ2,Ox¯iJ]îŒB±N9й0t¡+ò?§+ráí_}Šb^á t ÅìãA}ï®ðÝ]r»wðzÇèúÓC̯…££ì}H;.‚#oØÈi(ON[P× 0 )V–vëÍpñÒ…00Ôƒ¢}À\Ð}…a>ôÂç1Fè¤ð«“Ò"k~ÍÃÖôjl쌵Á‰)çòæx¡z³¢mÆ wh~Ý—šPêE!»ÔMľ¶4?5Ê$9^ä +ëKBÑvûÕmǦõuçAb=êzëA¤Â”ÈC£i~n1ܾu7*V=q•qݪôîmØÐHiyâŠÊ‹áæ·ùIÎ<CÖEªÑR*Öàe^æû^K=}yë1¦D»{ ;„†ë[TÀ~.ˆLÝÕ•Œüˆk¨ä——›…\CçtÇâÜ·¯’†ßºÅº0G;H")ݽ¡šKé=šÏ´p}S²Ð¡‹JŠ(éS7¨Ã~ñ"„GY¢,Û(ß?áù¦Î‰Ó?UÁÞÓí›;ò +`œò¼—£=‚®v•%ž~õò1—s¯>)þíË’£ãH<”DØÅó7~ˆZþ"îéÇ),=—€®}¢wŽÏ|ó“Û‰QÀzdKÓôÝ& ¡<ÖǘZ[€nò,yW‘·3€`Ö—(eÙ�Éˤݾ:N—#;÷Ê\+! Ø {û[™ÁV¼U˜®æh£Ã⨤öS�TÅ^GG$¢áÞg3c”üa#Š©†ÜÝḟnÐË÷εw§�LµÄÞÀ°0µQ‡I=_wOaPBÄ4ŽßÙÚgÌûXžÂ»¿¾^}íÅð2ŒR÷›[\Ke¸uíyáÍÚ0?³:Û¨ÓE‘HþqïáXÛöôÄœ¯áÙá³çÂÍ÷bIÏ~ðãpãú >[‰Êó懡ïL™ÙDy57µrýò.'u·*dë}u ,pÛ&ìL^—Jц +Ö' +d!Þ²ß7â Lb½MAVq©³Hõ"ch—/Fàßר‘ê±Pšç4‡\€`ÄïåFF†å%x¸QÖu€´ÌOëqº^\\ÇX�’Ådzò‚ØYÖšá +ŽÃÝ#ŠAÛ?D‰Ü· d°’k‡©t +$2cg@ð@B®Éº_u2ãýÍS¥"OáÞ‹ódïá:Œ‡e�yK6³Àp°éÂô¥•ÕÔ}?¼�ZÏåº0ú`™Ñp}3ed6¸ 2s&C“BØtEÚÞ°©†@5¬|¤¹äߥßåô—Óø†Í@Òë÷w/JX€ÖÓ¼S•µÊöi›¥C‚JŸ¶yLQÒOn¾§’=®ÜèI®êòþ¾¢°q·6¿ß³íûàmÞ.†Ý =¼;Únƒ(^‚k`0€ª£Ð9ÔBÿUèø+É–5Ôp%¼Î(”½}¸†ãØ×õæZ nÐØ]úÀ釫xÕÈk„9Qc<3š0ÔgÕWÏsp½æF<XØ•à¢nÆ£²¶V‚Œ=Òûðÿ.†±‘õب½HØÑpnåOÉ’€o”ðé‡o_ãX…�<Ê ðdÊZ™ßÆ£o=O›TòKª,‡ÑCììiŠ––V©¼ÍM.ÓãWpSF€JS#åÁƒ‡Ñê³—¯�«3=Ñ#ÞÜ|À•~ÒÎL%H-ßba!B°§dß²DÊÖŒz½>@†¨=9µ†üÐÖ󪬧¦&™Krò¼Ê[´vý‡kr ÅcÈ©Ì’U볫7âÜK‡é²F‰™eJ¯ô¢íz544€‚Í“§^ã…#À0ÆÈ÷[¾Æ:Pa7n³Ü,]E…Ú>/é +f]RJ~±Aä¡nîjŒ üz ïsŽÑ¯h–oõ^’j’pþ÷6G£J€ÃìøCi;B:ÏíÅ0?Á{sÅ°J#†¾³íxÐ ¹ñŠÇïMÁ°U†["N1® &è5À]"£ã PB–Óít¾¹3€œcí»©Ë›²@Ò§)_¿ã熎÷œ}ßT×qü¼–*w5ò=·Hðñ(╼óÛÿÊ=ç(¸’Ï”‰ž²Øk¯¤‡@I!¹Ÿë° m¯Ÿ„ñH¼¨ä˜9Hpªä×` +t¸iÕ@Í®4‡Ò)ÎÏíá%î 'Âå+ƒ|6gótÈ¡¨Ê[xw)vO_^uù\X¬ Ùðõðþ<lU „‘w _· ôk#?ôÕ«wÃðÐ <Ôô—…™i®èyÁ\G&ô ·BÆéÐ&J%)Gß@WT˜E<Âtu¾è[€¢ðÜ¡m|4s{GžV)eÔ^îëëÅSœÂc/†wnļh$ñèj +—_z1Ü»/²q‰´m¤ƒÏ+¯¥,h'Ü» {¥;K‹I—#CÀ,m³¹Ý„÷X¦°õÖM®—~¾xˆk«ÌÓ¼_‹ +É.Dƒƒƒ±Mbu´<“Ú=•h%n„ d¨×£s?TÞ‘ÞñÑb–âR›¼Tâ*$;AaìðP&µÜ<œ|Ç]ô´®ùlmô¹óƒ|§‹ùžŽ‡ŽÐUóW…“f‘äÒÍ¡½y8´5÷‘‡%üŒ‡¼ i*Lœ"aè +¿µPxÚNЮT•<x\j“Y +%)Ç!m[¢È+l°p°CëÈ1ÒýÐnbd4Pú´¶Y¦çiAI R±ÈõⱧ©Ïž__ +ÍíÕ”#åIWBêAÜÜ.ã·´ b °ó«¬ðÈ<sþN·Óø¦Í€Ï—¡Üg…›ŸvÍÊöZ9`Ÿs‹¹â§„ŸuNõÔ®GÇíóü£:îH_ó÷U0>Ýü fn©rˆxU š©Þ‰ÊÄöq•„ÛÉûµeCáAxOORv„¢–Ä¡*µºûš) êÁáÉ„ëWÇð°hÁ·dçžMBŸ9”]„¨å5<L”ð PGä/&á"ž`¥À¹5Kxë ´lcmw¸õÉlTÀÞ;¤ªÈ~5%:6ßY#LÊ1ëñÖ¶7`áõ,/oJÅcßÓ‹|J¨£¶½}s*Üøl<*%ÉE4+îݥɥ< Ã\F³‚·–@ÛvÇ"‹—[C»»»ˆIŽdkåäffœxÑGæ=©%eC‰¢Tîj[¦LË.L‘dƒq¸ õÄs1Ôïú·>®yi7õXU¬*^ï•¡ÜZÊ…÷ýŒÜ¹±[6C̾v0lz!(Ìy±Í¤ +Øc¨Ü-[¶äñÌ·žªÃ³`6;=Î|Ñ~%)3—Ê»¢šsãÝ’} Ão†:¾'X¯ŒÎÞØLJ*ùÎôä†ÉJºt1´uv‘coÆC¦W4×K™ Ñ(rÜsÔÈ[Û~peêS9©¹§©:ê«ÂÛS=æÜ™Á®5?J§¦j:7íÄS¯€7G:4w †×T !Ç6÷°·Îl`¬àÉÚqfœžÓítNü"ÖÃ}žÍ§Çœòq9áãŽå>ʘç;¶ø£1ž,Æ%{¬\Þã`3 Ûx•%JER¡ýL +ù°8#ú4‹PF màYÒ†ï€jO«±½‰ÚàÅpí݇áÁÔFMØ‚œÃZÖDiT„9”pÔt5œÑCWºÂùÁ¾0ó`ý¤4eè [Ñ –ÈW®pnYÐ!ÜDxç¹F=m”å) ³7æ7ÃÜÐijI+aÂÊÔ¢XÇ^ëÔúîÐÑãj¤«Ï~©6æU«¸Vs°Gxá”Í–P’¡„ÉÞ”»(© M£QQ „~q®TH†9Pf~_/ôLŸ�¬Žb3H@îÖ(¡ïúßÊ´µ2|zjÐR¤!ÒRê£O™CÈ&P vòAUb$$JÖ<¬9e½Ùȩȧ›SßÀð¨„_Ùc¨ý™(b]D[qÞUȪñCÃ×(UŠ²ãw}h¶0VÆh:aw%IM¦&—ÂGÊüqϸÞjj¤+©Õ& ̜ѺðÄ/[>¦Éå×’"hª¤4õüä$=£)Z±N#K‰²æÔÿ8·õÄ6q0Ma-q%V éÈïWökíngͬ¢˜7ÃÔ<yý-ë–‹ %s(â]ú ¦ážl¬¬sŒuJК í€v4‚ϸUÜ.£«Ì¦‹Äs?þlj“Ó÷Ogàë9*È/ÚTj²T)'ÜŽ>=~¿©$…µõ–9>.¤]ÞWÅ[$åèO7õ¾ôoÂ['G3I……mˆlR9šòÕu”|L�&*Ô®Ù¡ö„êÔ&ìF±?oUX@Õ`áÔì„ö>„Ú4taO°’æ +Ì ú2*!‘ºó€m*h»7x± Ä+å&“kQam +®És.Ê|Vg!c !D&M‡%iᘮã¼ûx‡ZnYöߥ¦ï¥ž°»Ž0_¡DˆêXÛxÔ°èöñ¿õ²ˆqJž¨1E‘Y;+0(¥ÐG!ÙÇVJLQÃ(D;B©lõkjjcˆv—.@*½ÄŽ£Ô‰œåê«ßßÿîáæí;áúµ[(B½DÊzËvA$ÑÙÙŒÒÈR¦SYÈ$^ðlh<׊>,Aƒ9g;5¯>»·’ˆ‚µÅ±]#‹þ¿,Xv"Rñk„”ðfõwÉÉ_¸0̹Š‘ÐC –ŸÅ†ŒM…Ë°¨è”o‚4½§¯Yäô.aíÅ¿¿J^}"üѾ¢ø<�pÜJe™Ï÷'OYVŠœ°¨ä.¼Z맧æb(߶Ž_ôöõE‚”–^»Èi;!åÈŸkˆ•0NÌwÛC +Í-x¢WAƃZ†Ô9A™ïCì2³EÞ½€'Lä¢÷Œ³:ÂÇï¡\<ÐŽXKw.çcgg´iÂú•‡°¨¡˜©0çÒ½PæÀÅpºÎÀ7p¢ì@þ™>γ5ïª~|S‹;‘Šòi›ÊSdóã[ù=Ïeøi›ˆê']*q1(YBÝèðßÙ™éëø¹¿Ÿl˜ ã,„s„”A›ZzråÕá°¾@^ôÜäørHMW!\Q0„al)X§H ’#„°¾),ÁÓ[BP§@A×4W‡.öS‹±Èè©ñÅÔj¢Öt§°¦Fæ" GmS:\þöÇ«Æs¾½MXø/%™AqÐ$~Ã*FaÅ-¼>Âíý¾ÜÄ*MTÊÕi*Û4(P·Ü|½MÞão»ïè)¦`jÒË݆¢Ñ0x•œÇh›Ä›¤ßm3ä#«äNvgR\;5Ò†tu,?}ûA¸wsÄw{øη_‹œ×L†ÅÙ=¼Ko¥Y\O–6ŒÍ-yê‹'ÂïÞÕXÕF'§@.ׇ÷ß{?*R¹àɺÞZö±˜ù�Åy�SØó p—Ž®@µñZm×hDÀᑳ÷:R„³ß”È"†ñ™ˆXì{<o÷ñº’R¡}º9-…¿üËÿ*P8Ÿë`ËâºÉ³f=¡µ¹+¶}\…D¤>“·¯Ý!?Ôúûã}/B~±D4 BöŽVÈI -ݰƽ@�ìcH¶×` Üä20‚XwÕ¬£æ¶ž§ä(_ßFÝy1\ÎvѺq‚z³¦ÃÔý‘ÖÒ°ò÷y«DþeÝÜJh›(„=£«�~e àX^e€äúÀ²NÕ¯‹÷tûæÎ�²èiŠ|Áz¬>oOnÏÚ'†Ž9®râÉÍÏŽÛx<ŸºÅ}ŽûŒ=ü¼,gË81 +دÆÛh‚qv|5Üxk%Üzw«ê(Ô·æÂErºƒÃ]aúÉ{7çñé/K÷Ò&e5„h7÷6ÃÙ—Û)?ê 7?‡)|<w7Ô€RÁèc¸¶Šã}ç'¯ÁUî^¤îv>Üþ„p!u· ˆK€yöà{†1†‹½"f“ܦ‹2BµÖ)Cé€`EˆtJsžjúëÚPªEœPBÝ„NQ˜ˆû G:Î}ò‹¢…‡ °*Œ4$$"M�îr]Ù°>.ö*á‰ë•ª#º9EÇ!‘„ùÑX´7WPï†æŽ:JyêQép÷Ú(yìQ¨k)›É…EÂå¢Âû ÷¬NƒÈÆë{÷÷ãZÓpˆ¹åAd´@¤éü憡sz?:¯åÖ^#F€x=²[‡m¸K!†}¶A‰ûžž¸t”LW,cÒ«?Ò«FFeìOÎ¥N7Ÿ<¢Dð¬Ó4´¨Uî÷5d0"ô–K°‘n¸}õCÆ€‘‚§¿F#†‘»LUVPÂ4F ½~»{?CÖ±NÞ»°*D‘—¸eRΧãéèè ÛD[Ž¹××·‚¶Þ£x‹Ò¯©X›XÜž uM”¹U{O¸ãö=nb-ú«k¢¹Ç`ž¹Î„±{³pS×Q~DOâ¹ &G¨¾sä S Ÿn§3ðÍœeU©«§(Êò—=V=Ó(OØDzŸã”¥ûùøÎÒs¶^Wù§‡}œç[>—ÇÄBœË}ŸeIÇyçåý²„Ü›í™Ç~åOÂÏr©Ûý÷½„—ºz�ª’{„¬lS+S“(äÙÐÔSúÏ·|Q™Ú%§*Ü¿:æ&7PB‹ WQ®4[ØÌã=Ó%iô*ž |J¨dáAø‡É©ñDñéB"T«ð‡49X?"™Ç"ªAiÔ‘ë5/]"´’x¯†“[ìî4$¹å¸ë´FDylmÂJ…‚UI„tŠ<®ÕÖÑÚ�ÞÐsRw„ºÆ3TÙî\CÉá2bL$èì\mõ(_Á[S™¥c†Î:²,U�ürlæ9 =×5d ¿¼Lû,<¾Å5háÄNS ÄÄ(<ÎÔ<×7çc[zGs˜?ú“Œå <|0Å¥Sʃ ʸB%<"dŠ³Ë¹«bm²J'Ož]ÐVìÔÄc10Ћ"ÞC¡Cú‘kâç2ˆj<u€iŽù¥XCiQ}KšñHózZ$aèCÎçÚ<°ÜÆåÒU´C‘zÛ4=xÓP‚1`¤¦Ö·F, €™©û´¬„é¬#ôƒ&Ϩİ™žœ9j‰Òi˜·àä®íª#·ÜNØÚ.Æ–‚³ +Ê]K¹¶V#±É½œoÜ»¦‹¤)¬+f ’ç=Â=K÷øÈ +k³ê;²€üêã ž[^Ø ÝáRØÄPjÎ#ùÉüÞ8—¡UáS{êýžÙuz_<èÁ¦þâoþö7Tœ_¤<{Dy«¨óϳ驧á(o'JÛÒ-ÃP3`ª®.²»ùMB©;xbE¨xªÂêÔŠB~¼,Kjz÷©¹©¥?îùæŠüèPß›Å󫉊«@8²ƒ:Nš7o]£Ü¨="±ë–4Ç(êÙ.:n¼ÃÖS“ÜZ)²iAg'ãêmˆ9òÉ›ä¤E»Ç&`¢é‰µÈѬ7§wµ:I^±òkâ cÍ¥2(VÂÚöÁ•z²Pð>ûxÍ«ü8¬ÏôõD®Ð°MVhÈÐךw +�Â:=‘ŽŒCv1/4aÐ|k˜Û"¹º=KûWR*ク@±Õ¶_¢Ž¸zü0\~y(üñO_%OYŒÝŠäƒ.¡„»º»@·FÌyXÆ +» œQZÈbHcD¯;…œ…£c ¯}qv="¨s¹lTæäs·˜{*J†ÒÆŠÜ(‚¨gAqnzÂηÑJÒ +µxæMõ\t7ÂÎ.hbBß¡¢ÍpdŸé†Ø=Fî|Fz"ttµÅ‚ýµí•ÐhKDêow¨'_°jq‘Fäò³äŽeí1¶ê•QØ‚Õl¢Q$²@}uƒÔùöêêÕÐÙßèpe¾ç,ué¥,ŠœNV½äæk²ä+Ã\ô˜qÊé°TƧFÈø“O>ÝNgàÏ€9ß/ã>>Ez«bX««ìú²›½…¶•ë¿Ì~úî'ìY€®“£€™ðWúÃÜÏ—ÃgïM†®¾&rl%ÉÙµ€ÚméªÁÓ#„ºm´”(•<JxÄj½x)# ÷¯/!7Q¶°ZÑ1¨§¿9¬o®„ïî„ÛPYf¨©pé{gCKcK¸öñš?@˜oN’¯g8tÿ�/ ÓI‚Œå9ΣŒòí”!=€'æáY¶ìf´Ê8rìcêQ<׈’>Ó¼ÔÔß¿7IX˜ïS“\€TîLB–5m?RŽ Š!z¨ª«M¹pþÅÁ°²°&ÉO;^yå2^)m'çAå.Z í¡»¿“ùé¢9ÀXx÷퀿¨½C©Û™©Š2-sÌUÐ$ê)cžDæ)L�ÂÀä… ¯çr„Ñ©U]_#œK§Ù§üžù\I?ÏÖЯX*8K¿,}²õ üÈ{{Ûáܹ>®¡ +�Ôb˜zH.5–.I†AHž°=ƒÉSoÒZ²³·%~—ÃDp™ý$ ÞïGåcµ0cMBL ¤Ó(h¢9(5ýÞÞ¶ãloƒ¶²JKø¸+x‚¤É¬"ÿo qi’˜¿:Cœ?.¾ÀaÍ«“/—Ç…¿ ø*Ôá›òàÅ\k®šÐù÷ï�eßv¦7ô¾�øÜP} +#Æ}�¨¨÷@J[&Æä:+Ãèý…03 @”vÎ> +|šu&wõév:'qV•‰8¢Båo‰6žåÁú,îôŒÏ$“&}¥ßw¿gm¸öÙÅt2\òŽ”¨Ûc6£n*^Çæé+‘žëiJÿä(`æã(Ý=šƒÃy~V„…ŽÐs©/J^aºÁ8´N‰i½bkm³9¼6ˆ(Z(Eé!G\±¼EMîü +9ÎÕpéõsá§ÿ¾7L£¿åÈnøøÁ½Î‚$ÇI!”e‘ðQ +ò¦/CpÑÞ×*x¯tÔ,ÔŠ„¸¯½3‚Ké[!‡x:`¬Jš£4jvr2Zr܆®Lxý{P>xG‹(jBš(‹Š¤ +OKme^ƒð/ú–Àb›fËxÐÖº²úÈßR<ý…ó—ú ú8Có¿Cá¸L¸sáSÌ-¡¯urd)ìBþÀ.x»xÞ,À|c ÊüLÌG/-0wµ\g#èâa¼ÚªÈí<6>ËezûQxi€G ¿©[NÊ>(ѺSí)(¢¬sù=B¸¥°AjàƒÉ{|nó” +?˽±¼ˆõO–Ä(¤ZæB¯}Âk¡õ~¥×ÜÄæ¦ÕêS�ÌIE +cJþÉP…"”Á¬ €Ý˯‰èfÌ4¤À£=ÊT†®¼Â½Ûí\C–ò*µ§¦&¸Æ:2Ô£8ë˜[sN¢)³"ZQ]¥N/i¼r9³WW9µÙÕ\Ë‘ùoûƒ†ïê¥ë%NÒ†ø5^v óˤF5¿@RCóÉ5¥ðÚ+ £Ìb¬îºF¸¨äùŽ×wúÏé|óg€Ê[Yù>~½zÃ"Ÿæiú˜ìòy’Žú|/¤û§„ÍÓ~®|?ßOåjZñ8*ÊŸk˜?¾™ïÝŸ~È RÀäð ¯Â¯;·»E]BÀ™,uµðì®.ì…±å©HüŽVbMìM²-Õáµ?:‡‚É„Ññ9kŽú[Zõ‘“ô¾yý!ÜÈ„Sm€pHímB³D™I‰ÚVp\”éäaMÚù&çw¯)„[Ÿ¢ iwGŒ9Mv"Iîò…‘Û“(C<Jö½ÙÍðâK½á§F)B}tt> sPa’§}ùÊEÆr¼6¬¬#…?Jk·»Hå1Ýx¾(ÙuÐwàO&”•{ˆÒ+�xJr´á¥K/‚&o‰Q07¿ˆR£³,NMÔÖ§âÅ©ÐlÓ˜&ô:ú€¦òPU^zéløΛ¯RûKŸ^Â-³³3,Îj8ª/…^h+¯~z‹ÐMÒåÇ<¯ .hû@t<Ùd´‚Áb2^±#èrsÙ²cÕH27-G¶†@ )†–ûðÔÏôw`áN¬pï!eYÜhF¼HCõì \«šZe +£ñžQ‚(áJˆ-LÑó" íÔ37apt†ÍÂEXÄÆ@%¡4í¶”â>e)5jÃͶ ã÷e“~¼»Û;܃<¨wæÅo?æ5XÕÚÚ:ðš-™*r?Ã\ãË«tX‚¸ÅyãªPº“Ì}‘HD#´y¼À=’µ‹é‚d›HBÏÛÆzì5xÐ÷'Ç(>¢ÅÖév:'pô<Ñ™¿³éÍ>MùúEñ”Ñ#÷'¶g<¦ë“ŠÛó<ËÛö˜EÜÛqç:9 +˜‰[%„·bµ@86JUéôsw…ºúúÃu›ë$Ø··º±*\þþ9h€ºqT,áQø|«*i¼`(™[»‡€¥fwA\$H\™Tc)¼òãa<Äðö/o†i×9:]¦~´&Þç#¼o”4(âU4OdÉBÉ47SKË‹c«’%šÁãñ6·956G>>±äA+›Ÿ¿0n^½n¶IØÓ%¤{2B„ÖÞz¤RxÍKä¡ uN—Âí{4ÈÀE\¾ÿÇß ã°qÒ¿x¯HŠa‘Sý›ÿöVôh âé6é½-Ú]h!Õ\ÛëúŒUyš=\~é"tšUàéOLŽ“ó _-¤#s+€QU„¶!«È/‡×Þ¸þÅ¿øÓðóŸ¿E(zÅM>>_‡‘H‹óU“K7+¨Èl�)½H›[ÈQm>»ïÒ\²†ÀÚÆr© ÷ÅÒ¨yrÅÈíñUÒd`xˆ’°uѰΡ¢k)jÌZ(zõÕ71<vð8×8!$¢ærõBáÆ®âx<nCC -ÃèI˜I¸ˆw¿´´�ß³a÷©XäV‚u�ê,£ãÞñøÄýÞÏ…¥™õˆf–‹ü�#ÎhÉ6¤#¶½¬âšmþà‹K)ÐÞæ´7 +alá:³ƒaÂ[¿mc?ñ´Ÿþy:߸à™å¨£’E¥hR)ÚÏ>$_°™»õ¥'ê¾èÖ(žµ›‡Õcõ9+‡®•)_t6=ãTcRáqŽ3<ÿÉQÀ\ìˆfü'&߈æ>å�±Ai™…‹ã¼0¨>Eùà$~f^M>\ÆÓÙ=½ù°4KžŽ0¡HcâÁˆ´µ¶ú^�);Е”¿Yr¥ï¡àöB#]sοØËM¬ Ÿ¼?B~qWyŠ–O˜¼&Êå�oijs+ÌŽ®†*”»ÜúX{5„U “®NÁK R;M]o–†#ÌQÌ ÖªC™T¤Aå‚fæ”ZMø³?ÿ~¸I ë;¿¸MþšÒ$ƒ|Åçζ¡Àim÷ÞpáµÞððÚô—wÃOÆb4 µ½–Úfò¯Œÿö-¼-Bã/\Cx²w(½’\ôø<LLp?ûŠsïÐ0{°8gÚ�*¿:Æ5ÚÚφÕá·ßÄûäo}œÇFÎÙêyrbÅÎ…jµ¬ÊÖ‚æ‡s „kkiÃz[czz&æ”üãòöŸQ„ñ¤Ç+ ËžÉ ü]¥©ó["|ˆ¡‘kæ¾f0nP螧¹¹…Ÿ%ô»®/Ý�DW^¼|þf÷Oc¸flgQžpš‡²’{T†äó½]0ô5Nq/— š$D¾WÌ„qxÄ«Ö`ËÙ:£#óP;ô!ng¯Ð7º•vŒxüËs‰gžmÀ‚Ïg¦Íä!)‚Ý-ò\‡–;ˆ”Gý‡;xäë¥Y¢ëÔY«§ÛéœÄP©i®?ïásîæ×U¼Ï»¹Ï3RÅ¿9܉RÀ’HmX£@žB‰¶ÓëÐ*²‰{!ÝÔ�’¸é0Ô6*Ñã÷A …º7 +èj¨+/½~LˆO‰þ‹„ ;"¨—a•´´$2QA6¡"*!ˆmswáî%<M`¦È‰¢4Ì[¦jð*íK.Om>E‚Rb¹/Ýç|{€T»\×8vû©¥Î¢ÒÈk®BSøüï¿ä³]‰¥24«§äfqjƒss=„Ûk»ji +q+ìP@[çñ!Èb½hsKÐuVÚ:w®Äw7!-ñ £øñŸ¼ÆÉë¾÷ÎÕ˜G®¢VjÞâÙ©uÀZÓáÂÅòäMaäîC€V0O‘·NGÖ«špáüp:;f?X- Ð7ñeÅBÛPFøøp.¼ùW1xéß¹KþF»)½máÒÅä}@ƒ²¶o³Ô’x,,χþ×Ïb®»wˆÐñ•sáþíñ°[˜ºõÒG(]MÞ}CÓ\G%åCÙ6ó¨çixyk“H‘¦æÂØãajtŠÞÊ eyÒÌfŽ™£1§x¢¦�‘ÙîÐpø÷|m¢ÎSE¹Wªæ0¶¨_ ã”céï1ÿR]ŽÜXð¶Ú»šC/4—Íâ…§Š¡“Ò£Zʼda+‘©%äm^ØZä©ípkâcV¯ÑŸÝß §ýæ‰>ýåtNðÈHUÄ6ä+ùËlzÅæƒõ¿Ðõøñ¬.²Ÿ!iSg_VOKa¹ìÓ+?1 +ØPBo´±‹î6”¸è%¥P`ÖªÌ0)/Ó”yÈš(T,T†1òt$)1µÐv‡zßýTx•?{w$ +ÿ#¨ÌŠx…8\(”(ˆÖ.×4 +Èüj#%”‚LX[-¬Hâ:ÂɵTÀlãAï2žC„úJÆ’Y÷ol%÷J÷•B×<a¶®NæUò´?Ä£ìêjŒ¡ÐUê…;;ÉM‚èžÉ]AYTgCX�Ík)”¬^[+€Çh0u‰s‡þo¾GIM.üÕ_ýmÈÒñ©†ò%ëi§ççð +먿ÍÐŽ¯ŽÜh-ÈèŽp÷î¹ÒLøÙÿü¯"Zyôöƒ;4�d´2¿®Ç ¹fcHº¡3s¦šØ#'}ãÖPG˜ý?þùÿf×–Âßýú]O0F˜7›¬D»þÙ½ðÒ•³xµƒ(üŒKxRáúõk”Muúm`PäÇ1 �;,“‹ï†[¹þÅlèýN[èèÎcì< ¿My‘„„· ¤ìØDþ5—[ í˜ÖûÖC¡I7"¹©í µ‹ád‹ÃÖ¶6rPW v2øGÔãí)ëÚ†(ÄþÀ>iG¬Ÿ#Q”L¯$!¤!ŽðZÀ,Óº´u¨në1ÿM‹Iò×ERŶ.\[)’XåžEà[]‹Gô:Ç̶¶Nz`_p[=t*LÜKÛw£eMµ¡úSü¸(<ýý›<†€(g)Ô2¨Êyà1Š`-[îó´>¼åùT%઼©ˆU¤YôÀq +UEí÷TÜnž[dµJÿY¥Jæ¡¥±,oþ~b°7åh^`<.=HúàX"|MõÒÜ@€ÐúêVäg–yJ*Fó™’=›çƒž!N8]‡rÚAi¬>Ò•9ƒm‡2 í%bÐÈå¡Êj„êúÜ&Š#ÇèÃE)žØ*Wã ŒãŠoàAéRá½v\ų4]\Å&ìX……e‰N%–‚u*׺pê@$בó]ZÉÄøÚ©+ÖS³7qŠ|®‹ƒxý©Ð}¶…¹Ny-üÕÿö‹è±‰àÝ£ÁƒímpÿÊ+/…þñ+¡ +OüW¿~‹}«Ã·¾õ2áÓþòn 7<8Ô‹óZ +ßY oýçáö <ö%ê_—ÉÿV3GöÔÍä)Õì“ð)?¤«ÏÏÿß÷Ãß})ü»ÿáϯýà¤ò©I3=ú‰±©ðÊë/…ï¼1€‚%Í9ÉÙß¾9ÊÁDEqÚØÝI‚xÈð#/o®†O>º~ðƒW•^àl…MʸŽsxù“ä…ÄQÜÇð±d<¢†Ù›WlgÂÕëD2ógŠ +³pñÂÕÙ°4¹)5ÈH³33xâË€Õ謄q""D Ö:m¦¦Ãˆð†ÆÞ0Ø}&ÔÀ˜µ¸8¦��@�IDAT„4E‰W]Žšixg–ñ”yþ`Ú¦ÛQ~Êÿ\CY—žòõÓ‡äówÓ§«©ÝfýÜž~‡1køôÅãŠ9ýçtNÊ(ÇT`Ç™žìÛ[žë~•«ÊÙ'7ÑÊ+ßòç*VÏuœ2õ³²ò-ïãOß(ö´œo<æcÊ·¼ß‰QÀ^ð! +÷”ùÒ¢Þ +ŠÎÎGó(¯¾s¡ýlO˜�¥ºGŠžÁ•xÕ5p*À)ñ]d&že=@$PÔk†P†„£UʼXœ¥èqZ#¿±·ƒ '–O’O $*;lV¤¤a’x¿O@õ¶ŠXÉìu‹# Å"ÜÄ9¼©zjziOTvòŒ,ucSž|é6ž¹LاJ$¡W1$ººZ᯶M"è[<=@=w'È-cpÍç.u‡³:ñê 6x&µâáAet;\¥~¹RK˜Š›€¤wži ·oߎ¯…ÖAÝî•W.„Ÿüô»ôÙí‰M@ûRKˆð*/]ºÎ¿|&¼ýö'á´œE€HúnÍí0h¡.½4À5×’O^&ìß»µÆz·õµô`Æ|ábšóœ§ÄJ„0�½ÍÖÌ27ð+·6‡½)ÂîÔfßüdCª;t‡ÏVƼ´${”6UâÍ6ÕBI^†ðîauCÈ’·]‡h¤.ÓÊšNX°›Í†"o¾ù]B2|rBÿccc4a8úûû™'ø³9®‹¬Uö~5P;½‡!3Íøþþý»€×n„fÐãm\zaˆ°ým¢'€¿ð¤g©5¯ËC¾A?áõýý¡°¿ R3QЖ”è«L;̽PÓ·> +Û÷búÁðHÆœ!dÄév:'fb¸ÖÑ1[±ÞiySÖf�ˆ·—O÷3Œüø¦=Nùú½4ÎP¬èйy´yõ4åëWô¦ã¹m ñäxÀNB39Ñ*kOR¡s�EŠ[_„¡¿‚`¬ÁSé?Û©½pfoÈ:Uˆ(ô(Õ—+xMë0Õr¬,,RÖ£êµX&#–Š7z)BUÙ~'ÏP)W`•U’O#„¢ç=~ÙÅË:äxîLˆ²›¯™ÐÉxúé :;‹ÂjiŠ¨Z‘»6Œ°+Š·hÉÒ—áéʳ¥")ÇÚÊFôú¨‘bAÒ:ï\› ÷>Œçm LÞI;Æ:ø«W n À—¡YŒlRL×ý‘ ”� ®©·¯c!n~6Bw¡”AP2Æ5|ütU&|ŒG:NØô@,=óÕu¢�\õ¶e7„ÏÍ ç�¹Í/,‘#Ý!ŒÜC$¡»Ø6 +.‹€3ʳ«°RuD”s/^ePÛ¥Qk-ŒeHîÊëÄ«‹°v‘s %™…ë + ¨j”¨&«é¶ÑݵrÔ×P&ü;ß+ž¤§pc#áâŒ[<X»Ô.Pê³Â}¥p@½Î68 ¹?Ö@giYË…ˆ50=±”|•5°I„eglº`µCîRƒ‘1€‘3|ñÈè©0†q§wí–!Š"Ö~ånDÀWùØÖ +aÊ`K/áï®ò <˜úùóÜïç|<ÌÈ?¡‰ª4|ôhD¡¤%‘dWE¨Pƒ¸Žë\®¯…ò+R1–êYº¦ÔŠyFLIX"-ªùøȀƺúØ�çúísç2NÒÊÃj”âãŠëÉëWÁ×õèÉï>þwµüø{_ô»Ëê¸úágík®øÉZàå‹–FAìBj�Á„¬€fIø·ðP—«6ɡH&ªñ’ˆ‡ÔŒJÏhXÕ}w +D€QÂÍêOU,G"‘™yù±Õw£¢íkø8!¿ÈÖJAé áÐƈüiâPj¹³%¶¼CæÄÐf.OÝ0@#{Øê ëùìRú’p@'Íë Úä^oñÅ/ Hñì@ ÛÃ×BqKÑ6 Ç.®PFThaΡËx© h#Í&Ñr¢ëôTÕC¹K»AKŒ,»Ñƒ´ABÏÕ¨ˆæÛ+ã(¢XÀzãwÞúõ§áÓï…Âø‹“¬Á~%²»’‰eH-¶�8Y +T« e~¦&§Â{ïBÚ}4œÎœNÏÐn®v»ÿäÉ.E¬¦úN€kØK`•]†m£ç{?| £"QêSÌoExùåK±ŽyhNV°–ãȶbäì,s.BJ(äêºÆ°Å=(Ò(Ba¿»Áï”k™ÿÝÑ<O˜ù¿XÃç†1tÃ8ãÜŸ„bóUæl/ÎG}}=ç�;€á$‰È&yü-Œµ}š&làqÛžp“¶‘·îL‡Ééå00Ð;EÑüŒ@'¹r,_‚ÈÅ&"µ— ®TÙ¬’"(}‘cüîëa¾8ÊÊúÃÖؘ‰ƒÎÁhlÈñ¢¾g¤žµ^G }6KÍDö'=©ùc4A®òt±olµé*dmZ¢æËU©ATÍÜ9—¶é”Le B™™Y˜ÄfÈŸó»(ùÏgѧõó¿øãtû›Xeìó \ù8/õ¸#•?§{®íËœëD)àÃ=jv,©LÓÔjµuCÀ‚ÕPo- ¨€Sû•áúâ4ŒUµ‘©h`S %(s%yWoÞ¡ÊΛ!»ÿ„ŽBƒùÌü�ái”TžV„†mZЀÇÜ°ªžgS£áaè·* ƒ"™òžµªßJ¯áUI%81A>³¨r‘ƒ™sâ1艪8”N³³óQ0UuvvD~éîžÞÐßÓÃõÕ„Ë—Ï3f}‘$ßlåÚg·Â-Ú nA±xIÀPÑU$É÷ñ¢/¿r6 +ÊÑÑ1<uÅÂ&FÈD³Q)¦1zºÎÐmiïQÊI@.¼0Öw�•¡á‡‡ÃG‚A�Š›s¯ü½sm¯ËEŸD‰†póÖÝÐOõ¹ÝxÀ™ðá7C±§‹®C]ìE¿^Ûµ²)–ß3˜ÑÝÛ]ãb¼†µ‹„Ë›á¿n˜© }ít"¢ÛÐþ&&É£§Ò £dBžpè(ô=X¦zÚûÃàÐ0^ÿRèÂãÎãY¶†ç.Àngs¯v:êsºŒ×¾Â="¹¨gF™œC©ä›3 ½[ -„{wf˜£¹0?ÉqK”su‡áFÚ:v¡ÈmÆ +ý½av«”C +o¾z_úM¼]Zw¶ a¹Áxùûë¬+ÊB‰1úk4Eù¥åi3±�Y°�i�ŠY¥¢†k4–‰Æ?�Ka„iŸ´ŒÆˆåd^–€•XÿnS1"ÃïzÀî«Áé÷×6MòLø¹ï« ÛÛ™3×]â{>“¬ ö[":1úpŒçi:ÞßÄ/wäzéþôä]~9ݾf3à£`È8b[øý‹¨!ËÃ÷ûîç•>ö8jÈò÷Ë?ïýkXú¸tùûþTnYkb»P ‘{Úp÷Ó¶ +æQÙïcSY‰*þ:l>€ÿìÿ!¼ÿî§(®<¥Ô…x—$lÍãբȴ¢å*Þ#TZRŽÞ$,Dy¬ôšTtsxÄÜBŽ¥â5ìì3[É5ª°d³ªËgiÒÐåÞM¸6ƒ—+Eâ/¿zÑr½¢]§§à`ž]¸b!Ä¡Pì¨\”*Ÿã%e©5Öº·Í¡¢í…/ÄÈfñ•(‰TÒÄÀ2"†ãÓ3ÖêßDy8~•X&ÔúêZâ!rݽxdrK†; –â<(5v ÷‘g®ÏÕvžÂ#¶—/#ye½é´D"ÙðƯÐ:ñ ¼õ÷a›¤(¥©ÁàÈrÕä‰#Âyƒæþá£0ÈL²»'½ðâ¹8îšh6i|o¤@o(%h–0ä:t +ÖÖÖ¶˜ß'änãËnß¾s'lcPRN/¢(·Ã@[5„Ä;Z¨.‡:Œ¡JÂ÷µ ¡¦©›ôA#hæ¶ÐK•÷Q’‘K~¨Ç~ão9Ó4žX½ÿ>÷g6Ôã¡U߶Çì>lôõ·±¯Qî-(ÈQN¼Wi®C®î5è?¥“ô½†X/ +á‡?½LˆÂ•¹eJ¸VÂÆQTR áîÍ™ÊÊÓˆáïþÛ_‡O¦ÿ†‘ØŒÃuñõÝ-fÚl*Mû7{ÿÌy¹–³„Û 'û<ÅgŠëQ ff^*ÓDé©H]w>[F“Ê +Uå꾆œýnü +ØçÚï$Fi"kü]%ìO·òySù»¶xŽmJUÆ·nÝðèò+Üþâ/þ"üìg?û +Gðõ=µ +MT³yÞ'7õŒ¼òÉÝ~òÓDa[2ôäö,…ª÷*ó“›çð\ÇyÑ+ìÇ÷‰ý4÷×C;>>ÒßÓï>¨è#nÂ{t¾Iá©ê¹Ú á�ôé&!^þ ©\U¨oËóÐB²€ÇYܤ6ÚÁŠCÂ… +öCBÒZɨ'¤5›xº]=„Pià«aãjÏùÁr¡÷Ç#èÊ¿õX-Ñ1m§V|#,XÕ ›P"Žs+*Mòµx—‘Í ¢Â“’Qïá÷{m•p: +Ô>³ +›-ÂÍzÒòkíRÆ°è¢]Þ¿oAô\‹ãÂ=-xø9˜¨ +þOã¹% åpnø|TÞ{,@†Ø£££‘¸bh¨›qÑÄofc“2©æ0O÷¢€i7?»K¾³?;äCes}ç+ava6|üÞpùõáõ×.…_m¼M{ R_è?Ó‹’]ØÕ‚rJ‰.X§×hó‰<a_ç@£cå¾W"_͸^~éEÆÝææyï�qÈ_÷ɯ6…÷®†‹}„<©ÂÌŠ%^õPN¶Ó›÷؆¥{ÃôÌך!,¼Œ!“A¹Ã`Æ•ÜŸEÆ^:¬Ós�ÚHIø(×p¿V@ÍgêÂÄø,Ý›öBkGÏ«žâæp�rMB KÌ;#QòáhÈÓ¬ãÇ?ú6egÕtQ"ïŒÁ¤¶b QD]um¸÷Ùƒpoæ#ÎS`ͱFýïŠñUlJ Gƒñ×XG"ÓÓåÖÄ<®^‚fvÚb¹/ »Uª~ÎÚ}ªG«v}Õq]ç eM>O¬,\*R#P‘ a4:9–Q + Äß—Z@sõÑ[Fy[_/©õþ‘µƒRö©Ç“AŸG#@C ¯·#ö÷Ä1ì@|£2¾ÍK£Œðèr½è¯Í]ø*îüW~β×ûä@T–®›²ÁõøçÞ1kôŸ¶EÎfó#OÙâgOy?®ÿa==ms,OÛS½ñÛÛ‰QÀ^v¾2´õÒÄR~; ÞQÈ*¼æ?UÊ%ˆ)öiœ`œª< +¹¾f…¥õš>”vK²fµ·¯¥ªeŽ²¢»žî,W;;[(š6Ì£9>‚¢ž0¥ìK•“lš†{;ä~›BÈ]t"½^¡hdÃg{£²>¯òÜ%<-@È&†f åÕ÷‰~ÞbL¢¥C;HÞÚ*÷˜CÀI6²ËµHèày7·¢”W–NQoXÕ?x†cØwxƒÊ +A63=ÇÖ‹2i'?k8¯5ŒÍâZªoŒÌVÎÏÜ,Í@Pïvª¤–øÆõ»aðL?]¢P>”æ4"&´íæƒÐJ[á!�lä¯ðÝïQX œ‚ùúðò+/†.j™ ;Ïz(ù|CdñÊqlKhôTâNãQæÖzövV’Hc‡ˆÀ¥NòS¿D¨}fnšZÞC,ôò/…%r«„Œ¥’loÁë' =’FÙZVÖÜÒ•GõÆî„ѱQè<ga¥¢2áеMË„¬!}÷ÛgWg†Ã&ápz8sÍ÷"̘¿ù¹9¼ÿ\ål8uäÞ8FNsÌaKr@Ô©ž<y%!ð~fÀ&TQ+>rc:\»õaØ>šgt‰â}ú#ÍÇ_Õ†ðQ!VcŒjÕ©èd3OŸÒ;ઽ_ÑËEÛÅp±ß´)§|æ45jU´n®ÝD&Wr> <tÀM8äÃÌ(Mv™â‰ÇÙ‡T†‡‡6ŽIäÊcûªømây\ë)p¦tŒ •Ï»GDÅ.YÖy»ßYîÙ%¢2zæw¨¿zT†¨2Wya +çtû§žÈŠ¢ádS†$¥àŒ¶DŒc†ã=Ë"KD-9òÎi°E#ÑÅșà:ô\e¥*ˆJ´ÆÜq›¡mË‘Ê¥J~Õc‡ª>1 +؉·H”±Ê#Êe¤œÄPŽ¡g-õ#„H^jžÆzoÎ5 ë(QiŠ„û•LnÍÙÍ!ê…ªàÖ7ÖÉ&ýgUÀ*Õ-€@E¼ìmB´«Ô¤ú gÉ9¯ÓÔ@KŠÊ\=af/:{ZPpy ÌîˆDè¼ »<ìeïÀŸQ ŠÙB¹mÓü¶dÊUø.€––Fï»lP¨"b…¦Ç|HÒÔ©¯4IP‘‡,cÚDù*è44$°P`mnÀƵ¿i¾ùÂùQñŽNUâ¡“s4ÕÝG® e±LWŸeêVxs½Ý-áüДكpýe88x“ËÓám„f-hó`¸²õáܬ×Ý ‘=ܳ ŸÆY”ô&áÞú"ÛuH +Hk¡}z€ŽÕkõF%X0DNð…Ï‚HÞÄ#§Æ÷ >´t>^ U°•¥«ê¢_Æ{_ ^yðì@<î÷pjrÅÚˆiE8p”€¯¡óáöµ5ÊÎ0^ a±aCCc:œ=ß 9HÇʆ¦º¨p½_Y½)†Ä³£Œ£g /·� «¥™ïSsÞF?a×b‚“¦bžù':A˜º¸M8téšçkafëãHºáýO€ ï/ÿ|µ›Ò„ù7üf4È5gØ9†‡™8[2 +”òµÏý1W/ÙMYÙª¨½&½N£FƒÏû|¸¶ýÞóçûCð”Ï”›¡mw×(U¡’‡•,©v½¨Ëx ÷w, +PŸ ŸS-Àä‘û׳®|>4pið9f ‚Jà’ç¡««>ü„½ªÁKÜ w1Î|Ž’Íë9Ýþ)g ¢–1òžgón©8!ϵ©pÿ1Èê/Rîâ9‡ôø®X¿{6iL°:±Å$‰P/!T™‰ªñÜlì^ßZ:‡ZPj-Qé)nƒvÞÃìhhå!pC8ÔÛ_¤W„òÊ +’1ä ¼MY”DM>îꆴb¸!SE8ra`µ.AßB\Ñ‹“¹Dsž}5[`¡©øÅù*ç¬,6 ßÁRWXÕ¡pUä–e$¡•/^9ÞœÂÈߎÊ.½ßCÀ-9ò·æÔ¢7 ©ÀÛÏ$Šyl¼-;)Œ6Az{mÛÛ«aªÆ(ëñFWaá²ôixx8Ôw4s<”üæ—ù=ƒGØCž–nJ´H¼sãAèj?üá÷ÃøüÐÄ+as®šPöB42rÉ”©\û;˜C0iu´rþ¨¸ì6%mh +ì +êw9 ÞaK„¤×(s×.óbd ¶ÔJ:Êy긋?ýxŪªÈ†mîÏ +yãÝíyBŽÃñ>(BNt··cÍ„× ·Ì4„k7fÃÂôFXžfl±6à†ÓNðîh,0…eæg+¢Wíüolci'e2F)v™{œî®vÖÅ~˜\˜ —ëû¹¨D‹kÜ?’*_ÔÛ�ÛîB»5ò6@5RŽKaóuØœï$o˼3_ÆUÂ)î‰/?sÙ6ß&B- +ƒ*ï‘rö}•¢µØ^›kÍŸ(Órùç9d½Ë fèÚùô;¶‘kpÀ3²C4ÃÍ®q7÷ñ|Õ¬´NÃû¼j¼âÐ鮾áUüD¿Œ¨84k4N}†|5Fm3iyŸåf/Qr÷Ýï›–”³á·Þ…J–ˆ˜7Ê-Jòûé¿_é赪]_v3LS#ì÷<›DÇå„Ÿv,N=d½â£€ˆò»YjdkÈ»‰ÎÕÒm!lÛÔFnŒÊ1‡"0Œ¬—dXY‚…|„ùÍÐQ걬RjÁZÕ @[›äÿܪ°°; º´7ƒ2´°Àª¼ß>~žž²¢6(†%¢BÜÁ›€¤ ñá¯%×+ÂZ¡`Ыò}Á[zÂ~ÏŸ¤ÂñjQ°!PÊ›çÈ`X’¶Ûžî/†cÏZƒ¥i^*b=€< ²6Bõ~Ga¥A¡â]#T|„kÎÓÆ s„Xë²y®)^½|OÃsbb*ô ‡Ø²Æ@›æRá3‘S7ÂÅ1Âí$PpRÔÝÛƒ÷ßgGð_oá)*É®«�ÅJ(¦Î®¦8.Ç–ÅøIi0=<\‰±R‡p¥ý"C‰R)i,×�Ó´QÛ|îþçþ³o„Œbi;öq.A'ÚÓÓCÝ6Vð^Iª¡Ñ# ‡€´=ýØÈ{Z•ñcO^ò“‹\û +Ê›þÐ=m(öÎ8æÙĹð¢Î+¹IùV-}škS(jø§/ÒØ"—nˆ] ]œe¤�pÝ~òË°¾?o¡é×a+¯-Çbø•›ÐPé¢ìX{,ŸãOÖ´kÓšv¯_cÏuh¸:®U>WÈyïÊëÕÏh¸JÌ2¢µµUÈIˆR=šƒ²¡)"=ŽÃss¬X;Gt§ÊÌÂï;ÿz¾/ŽËêÏÏWã1—÷ ;ƒ!«BöUVºŽÍܱž¤+Ù*q©HØ)ßQ~öŸÿÝfÂ/õkE|ºýÞfÀuP^Ï:‰a_•¯[™•Êðô³6û8‡û>h¹œåtvÓÔ�ÈêøÎñÿx®r.;Žñø¯~ó>ÙG°–°È+É™‚uÊF¨¨Ñ|´�)Ä>.ã,@&fsQæ‘nÒòoêh›› jZëJ鹿@0ܘ†ª B®Âå¥ÒêoÁ®!fﮡ[)ǶU¤²çA«�íç +‡h‘³ŸŠ6—¦ßó3ÿögŒÞ"V+2,ßåí$L[‹ÂÌ€ªõx*]…œ£ç3(Üü–ß·KêÆéü +GØ¿º[!ˆÀ3ÅÃ+Âp%`hu‰PqõF˜x¯'ôé ,Ûê³(häk5_$'ÛÙÙKíî+äÌÏ…©±¿k|Ÿ<7¹Ïæ–F®6+Ù»@jëñÀ<âÄÉãu’Ÿ•‡Ù%¹>½uóí%‰Çîû†Ñ1®®áÆVmPUBQ®‡K¹ŽTÂ!Bw†’y¶[ÛCM]üqÐI®lИ<³ ¬YŒ‹‰±®„sà<Œƒ<Æ™Ñ +y*aç[eš¦dL¯lŽ<÷kÈ0õÜœ%a¦0 êx 4ÞMN½ +ÔÊî1*Èhce?LÜ_]{'L®Æˆ¹ø¯É×óC¿üľŒ{âí&¯ä$2ÁE…§â²žÅãZ‹áh®·:ò¾¢ÐXO.Ñæs×\ÙèÜfÍ»ÆÝ48ý¬|þ*úK›_p¥aXqz@ +è€^ÊîCþèfCÃx½a†¡ÂuÏÇç‰Àô÷mïE<Ü4¡^´UFÅÜ|vc¸a‰tçJ98Çàeø»µ9üO?ûáÞ½Ñðëx/rÄLJݓCøÛéöÿ{DršgN™ü´íqÅVþÜœ¯ëå¸0òqHgõ,„´JZåùø¦a¹Ãó.цëîÉÍå°‹ÜUŽ=¾ «°p¾µ*œ{,(Vs¡Kð=/BeØMMæQò¬½tRiQ7‚LÎdõµŠKIøoDz£êz 5×"ÌÏž—B·6d0Âœf%á_Þ¦dÇú^P™(\‚¨4‚‰‰¹•¯Jµ,œü©uîËßLQðð»Â¿}âˈPP9Ô¬gWp)£†0^yxn_‰±‘XŠæÜ<žcus¡iŽ¡·Ó€Ñ°Føï:ÖJ”‘‚ñ…ÎEºA8s½%<„RB°žíîÂËÄð(Ц0_Wî/ÑŽoÿÊ+—rÁ…Œ2\¦Ü§©™Úhº6K·ÏBöú{{Ï<ò<uŽrLz +wÇ(òÛH†ó%ê´ÇAWÁ ºQÆ4 ‡áÞ¢™FKèìîƳÝÍ$43ºŸóí˜T¨z8Ÿ||ÎêOa´Rˆˆë_ì'LÞCøš¼ ߥ0ÄÜ œÙÇ5´ +Ù‰FA;Þ¼õ݃C/,›`>ì3ÝŒ×dNÙÈ&Á£®³[�®æÆ×ÃgÜWoüš´&uÓ +yŽõUoÎo²®%&)†yÒ, +WïÐ-.»GÂÆ{V\Ÿ‰”у¬"ãz”UV°þ]Îíz÷óåçåõçß~æ:psŸ$.Ï¿91ùq×¹ÏJXŒ€ëA‹Ác±>M¿ÜÓ˜<¢ô°ÃŽ£Æ—Ôqº9¸¡æ#¯Zl× ybWÒ8%"#m</ŸÉ:gÎ9ÌæÖ:Æ^SøÙú·á*9â÷?ºÆ¸æ˜·»œþóßc¸ÝoÇmÊAM¼'·¸FŸ|óÑßÉOÖÖ“_yVHù¸ÏYüä‘’¿}Lâ]Èm'GóP¾þ“ÁÐ1 1o)k¹;†'GÃxò£«‹Ôl’—]¦´…G6ä wZ’”¢œâ¯Ùd=!dCºµ„®òxo%®ƒ ˆ;»›åªNX9 +<E½ËB!(À¯Qp*R=Y¯‹@XVÌeïWTVØ +!¿§PQ)úòo™(òDàD¡Ã V©*˜â~H³9²ÂëFæü\cØÖzhƒ(É>äÝ6œ&ž[Ƨh HÝ¢PB™×ÕåQ*Û1í~†u= +»ëa}ÂÚí54µŽ'<KxjrRë¡áLèë¬%ĸLþ+“’°<uÂòÊàž˜W#üM_ÜZ¸¬ÓôÖˆã8¼–hT`éÍX‚ä8„¶\ZÜóÓ\Ê(l¼fºX=œÚ /·w“?¦Ž¹°F7%Z$RÏ«²Þs¤ç¼ƒ‘°¶½ŽÌQû;Âý#Ñõ½ï_/½<@e"vÛÄÃ5âËмÂ>—k#ŒÞ†'›©ƒÝ<íiråÌÏ0´¦à +ê›ñøÛÍ*@ó¹C +c3|òÉ<¨í…°=åûÿUØ8Ó?d–¿ZåëP½¬ÿeÃãÀL~g¾ö¸ßñ|×!kÐ@%÷¿YÅj×gyVðþsU…+ÎÀçÃcÿf-³žù#îSųaDÃÏ%ÇçF%kð†syú²ñ³¯·¤!ä<Â82*R…’MèYm?šËKÑÀª$ÀP…Á¬“»‹5dmŽÌ›0Ìö®!- ±`„ë5¤Ð´¼Í|¾ÏBÆQ+lWés*©Ï>¤./½t!\|ábøù/þ.L€Èwã³áÅ:m§Û?j\KµDYâÒ;æÑcåÞÇ›k„9OÅ5u̼ímÑcÕ.#¤^™Ó}Ö&W´%qb'ûíãš0<~CÔžËçQ×Ö‰QÀ> †KEšÊ“Óm[Ü.Æ°ïÆ:Màö–t´´FoucUÆ',_rD*ÎH*öқѢ7oi.¹ +Æ'QÀ)XÁ6*É#´âK¼Tªq‰÷ÖÕÕŒ +KoËÛ«µÂÆܲ¡X7) JA£RUpâð³²"öÆXœNÛ÷}¹é‰x¿·±¡Çvçq¯C©×�¾ô“œ™Ë(š +:ãþ±Ñ�'?5ÏiùÆ>‘Z¼a[4š÷&àˆIhz i¼Ä“)rÚæ‹KŒ]j@Ž©©i@ZM„¤1€@ K¦¡ k´6µ€Òòo¯ß0¤¬^¾ï<z=ŽiHÊH¯WáçõÍŽAšñömrÕt.¢/r39ýÍ +-Hí:î}vê[bô¢¯o€}™{ï÷haa®Ñ@™|H÷%š;dQüþ¯@ÉToÄèåZcm·(óŽ +hÇ£‡œf]Ô3> ›mÑí9Ú¾úúyî=°Hæ½%HY™½0CÙÕÝ”=áòBuxûýŸ‡ùÒ¤Y·¸Ê¯LV{M¾D6Çú^~*‹*ÁØ•K#®]צ› +Ƶ\K»¶ã»QÐ$yz¿«Á™¬}ïÚ”õ÷ç§éNüèžêY&Þoò¹93Ë™¬á}¤,ùÀ÷âºg¿˜šà|ŽÁajpZ/ÎGñzÊçñ{|Ìš™äþ†±| +CÎ5š¬q˜Ê¯ëÐò;`9v>÷«1uC4¦|\£/*þí%ÖN6üù¿ú egcá—ÿ‚]ÃÁó&×w:ýç÷2Ê(Ӄϻ¹~ÓD3žw‹ˆì/PÖO3>+ëÄ(` »ŸM„‘û<Ìæ=i<ÖÉðg„sŒá£ç@ë./š« ƒUŸo°s° ¯f€=z´ZÁ +o‰!Ñ"y¤:¼¤Èc‹`Èç›cþׇ5 +4…ç/ ½9ôø9bÅ°¦á4Qž¾çM2ˆ:BA¡aˆ- +Èè$ʨ€2ÔKv³É¥þíy<ŽyfÃiî«âÕëµ,£šsYJµ ˆÌœu9·¬¢ö;§¶–öOl"RÍVB݃6pðp‹t=Þ;JJÏÒˆjÊr¨ü‰ãÈàY”˜—@Níí¡¥©•#¡ìäÔ2‡xMM äãåË>ÄàË×ð·ù\HF˜ç\>É};&•¯s^ ÷»G‰×ݧ&&¦Ã½ûcôb‹šk= \-c3<P8*—`ß:ÓÓÇ£Û†âw¬*ßÞξîݾǸsáÎu¼èðÚë/…?ýç¯cXÉ’•"ßM»ArÙ*Qñ)Ûx܆=mUi©™FP=hnkPUݽMÑË6Ê`ßg#,;”tmS.5=K{Å{¡¥þÖ»ï‡Kpõä½½É_¡òk‘1(†ÂÆJÖ…×Sb=¹~Ü"k?>É{Öû+ £N„z¬¡t½r6ÄÈSÿî³bëIj8U²žüé}µTÎc|þÒKæÅx\£™ †¹ÉsàócÈÿ<†ÍO4UºF„\Ç1’è\_nqˆÜ3óˆî#NñóÄ{t¢AlZÂgE#ЗO¢”˜Î‘ÆÉ ¥ŒŽW¥ÏWãó¢1->± wÓŸú_‡ÿúÿ’¨5N·ÿn3 |+ð¬ÇºÜçP¸z¬{¬=Qeì—Ù|,¥°ô^?Éê¸cDêKÎ%Ìq·ìŒMÚiÿ–o η%‡’" }á:å7’ +÷*J’²u¥ðækÔªÒ–O]EÝk `&…ŒŠÀ—›®^žï«ð¢¥Cr RÙÅâÍSØøR!ú]p…Ÿ¹ù=•ŽÂ¡ü·ïùr¿ò{*£ò>*Iáwn~V>†Çó3¿ãæXm(¯ò(Àøc‰’ÂBèxü®¨b¸<>em±yV;1¾UÐíBÎQ]Ýä , +t›—n~ϱ/ŽYÔªÂ,ŸkŠëÉ°˜mv¯Ñ!8Ì÷ÒH{ÏãÜéa›ïõü^«BÍkr¾%1ìëgfg¢pìêìB‰¾¯1†ÄUäýÚ ëÉV¦J€»ôdñ¢ÉÛï¾ùéÕpïîíØwìÄý3”-+Ã¥+ýá‡?ºBø<ÇùPxü"ÔãØðè«æâ§hqdø[ÜQ$0ÿJr"°ÊùÖ«j¤å¡žo‘èÀòb1ŒŽlSæ4z;Óá½ÿçzxä¿�òB8GåË!¾¢¼v˜h”§˜î?×Ï¡±Z6—©á~V2¯Gk–÷ ÿúYôˆùn\‹ä\S„úk0à ¿·wt‡ÉÉQ:?!ÈF»Öáˆ>Ä@‹ù\ŸÖŸë¥DÙ˜u·n®ýèÙ¢_]®Mß‹(eCÐœœÝýLÖz%ϪcÊ´F>v¾Âpó)Êrï¼.÷óx–Ÿ˜öIÖ9Õ�¼ï|ø™Çóø{þnEëÐï%/ë +CMÚMYÙ\îͲdñ?ýÇþæo~n=œL&ÑÁžnÿˆÐPç^ñüÆus™‚{`Êï©V•7)&]_¤ˆUòÑ°‹;¦&ÅÁz–"vLoù6—Ï빞¦ˆO”–lc‹ÒÞž>+¹›ñ‰¹°4Zw僰í8Ó¾ýæ+±qB¥ |;½cþ +-nCf>x>Œ>¼JP³«\òø+ˆe»âe'Þ\VV8«LüL+\aîƒlȬ, µ¹@ + +›˜ã =l…”c07VŸÊN³‹ ‡¢ÒhØ'}@þZ%ÁW,ŽØ¡ôê(ًĈBHË]2‹,»( èôøËd¸±Éënmm GùBÈ°`í%å’P¸@‡Î ¡¸Š …gc˜±$¸ó¤@ÓDˆ×ËO!µ¥}ŽbKæ&){JÊŒDdƒö6ÔËuêÝë•oáyJ(2çóîŽÊ9èê.ifØÁ�û´´a8e0„P¼"Ž‡ÏŸ`»±É)ê‹Û@©nB3x“Pø‘ŽB˜ºÍCEýö÷YR¹š‰‚€hÖXñž(ð'Ì#gwo+Ο‚֧̹q›01™ãa �ÄÒh‰‚œ5± Š~œ¥ÏîÞ' ’ Ÿ¾=~ýñ¡Þw…c¨>NÍ?õæšòùŠJ5"‰ÆQŠ¼b¸æC.Y{Š@±÷Çß’¿’µŠ Ë%!.QJ󬡅ù©øÝD™&†¢%~®µ>ÖÛå?Ï/`Ð÷Yúüí]¨g5‘p¥ìF%êYnεπ?“ëH*ô`“gˆ5Èú¯öÜG·¸56xf<î6@Â}~ZžÔØÐïìXòuk`¸&5V=2ÁÍ9ñ'ûÙ<œè1UÁç2‚UPFð/ÿüOBöW†Oh|¢<‰áh§ìT;…_z}\V¾ïäû*·§yµ*Â"k÷ÉÍ÷Ë%GO~æߢœ?W¾ŸC繎ËK䱟ÜÓýΉQÀ>”é€TM)¸~·Âý»¯VÞß„1©v¦WÈ×A°OnÏð¢ýsµ¾µÚ}ˆ£'$˜ ¥©VVz;†´¼©xp%<<½¸òÃo©É‡µ,0ÜLJ>Þ¤M¥EÉ›]òIÖû +$ñ¸6†wãqŽçô¼ +DK@j°º£R~$ˆ„žÃZJÏ—Xë=�6Òƒijh†•îi„פÂØÇ+TI;æææª(pS×Ö๢|‚<`Ïk^XO³··+î︢€#\_"·fx¿ƒP¯!æÕåæ#€Î]Ž0JM NäÃf±jT¸9W +7ùÎÑ?õ:,û˜Ÿ¤lÇû6>äbTÁÆÌS-d ‰!SGh»¦ªñ‰;ô ^™=wõ|¸víSÎq¦Ç +aü6çÞvùãáðÃý›H1x^½X‹Ä‹@:çÊ9ué9}Ø×é,ˆ§ +bÓ‰<]‘ˆ–Fƒ+ÞŒŸÃpÿÁÄ#Ì{m¸þÑhø¯÷¿À:>®ÊáüOyZy÷÷½9Çn¿õÉs¼¬w½R~ð’Ø"¹÷~ÿ7F"ÃNr®ú±‰âž,ÇÕx;dm;W~_€–ŠÖ9ôgÙÛôs •xYx&Ç÷xdæŽ5t ³F1’2,îç¼¹.ÜÌÕjÔªP}ÏkrMzÊcô¹P¹®s-»ÍÞçhDs(¿›ÅÈ°)‡[Ù(Ž|áÜ{ÏgHÛð»¢ãñØžÇYôw_z?‹”¢í¢iåи԰`á§úð#©ð(é¸}5·=9÷è¿zº*`çùñÍ÷Ëëçñ÷ýÝ{%–aäÇ·äýÄ|üýòïæ’=aëÇ7=à㔯ßÓ;ÖKÿí½|?1Ø?–¿+NÌv€B•D£‚NämeuÞ×nrƒçÉá +¬]Šü Ñej?í$*õÐðÁ©…®éMÔû4œª™„«¤Ê#4KK;_zË +Pt…¹ÇRñâZY]‰žæ^G‘°Ý‹¢2¤ƒ€ÌP +ËsÒ(~÷W xNló‘žÛðø&ÊQÖ®¶ÖŽ"¶»Q:W ùÄõ© ®Yo†ÞS„ +•Ù"ƒ§&aÄÖ%@ÀtS‚]V1f)$7 Í_|ébhl¦à¼Å6ù¼|^Žl£‡¸ÀEëy@<ÁØ$ãÏÀúäµGAÌj“%Ì}lòäÌC$ÝPÈ+3B¯ßëv'JÙï&í>¼&R“]-IB††E<ÎüÏ}Ì‘PÐõ ¨o>|ó˜gÎÑ›w +ÁÉÈà´‰C761×(Ø}ˆ6ªÐšÕ-ܽ51çÎ÷ÃïÜÅ5=`<²ù»ádÁð†èfT:Ø ÍxK�÷jP®Ö+kTT!Õ1àÓOŒ¯„>Ácß ãS£á¯õ—aý€±Äx€W¨2ùŠ6p¢€ï!ÖÚF¥Æ¸Xßn®éD‰&žeY¡%û±¦¹ã†QP±Ÿ9[ÿf!ø¬¨ŒÕê”îã9ÄXÒ§wí¢4%ãÍv]ø}×»ÞT~†w“1$kßg(ñ’3¿ùÜ÷Ü<‡ßM¾óHIòžkÐŽLi”¨¸ >Ûe”½ëÏuç95°5öÝdb©8¢¢A™x}Œ±Šçˆ«× ¡^÷¼+y ëLã9›É³6ÏÍŸüÑ›Ñ8ÿôÚmöxä ÇQŸþóÅ3àª"…ÀúyÞ-‚¥ˆv>ïf7¯aóå÷Ô¨}Žs=ÿ¨¾üX¾VßôÌ5ì‡_îŒÊr¸Ÿ‡Áp+æ-™Òµ]UEâ±%Ê ¡vL„ ¤ž§T|†Cy²bXÒŸ¹F=H•G¼À*ÙhÝsCʊןnQ!!àì†$°gËRØtŠäe-ih ü¥âwK”®%Lö°¢ôbwÉMz¿°`/ÜšpýÚ‡1ü‚ÜÜz?üä§?ŒÄ�7>º‘Ä¢ºmPÁ-„Ëæ—P¶iÎQ=B§H·»GÞ\Ê-RðSRsùµé¯òÂ\(�²Ýá>¤1LÇœyý–fmàm§»#0+iûaªð•¤±;¿™S-ì&!q +Ò€Ñc1Lmè¾<O +Ïä8‰Ö«±ôçþÝñ05Fw¡„-ó`ýv`Ø›oô„|ÇaXÞBqWµ„ùÅY¢ ZñŒnß»:rî]ŽkZ™šŠÐÕW +�¹ŠÛk*Á�رg!µCQ*»€Gýyg)KÆ\Òdš?_X\$W\‹á–ãBxðð>íáö†¢s/n õäáƒî†£BŠ<ójøë¿ý«°¸3ÁL¨t¿:Å[^Ï*•§Ê®Æp?Š'*?þP2/%/ Š/ûý¨Hù<zvþEdGCÊ{gÊ *]ªë?–y¥¬•¢ÇP¹¹v}Å0û¸®ìågz]Kª‚ô÷øÜðÓçпõzËž¯çósÏ7~wL®ßÇp•tÅïy\?¯¥ìÍõæwÊÇó»ñYç<*ú1¢Õ¨JY0â‘n_ó9ç|·|ž#ößeeóz|–MCíRÿÝ7_…§|%ŒÏØlãtû}Ì€öœÑ›çÝØíÑúÿò{²”âsñå÷H¾Yã‰QÀ^v:ÙžIow_|ȳY,e<>CŽ>tQ± HT†Y£db†}ˆŠ„ÀÜÌE*;•…‚t“m4Ðó5lê,‹òƒm;@½<óˆM°d©< kù=†4˜O¯@ácþA¥£w+pJEéxvózüùùH#îàív‚~H˜•64uï O{ûåðù¦u”*$MôÖƒóºVhhiE9L»Å¬nüí½ww^×} »¢w °€M¢ª%'q‰ídǯÌ$÷&“™¬ÌdÍG¹Ýpˬ™ÉLV&²9¶#YÅ’lUK¢$Š¢(v H¢÷Þ1Ïó;82 ™È6e¾[ß÷=çìrvùõÒk–cj‰E’‚~Ïדûvb6µîl%“Pe:¸o_èÅÔí.!š5>¶ó#2"°î+hÞM?^-šåj"ïäÜZä”}_çd@è{ +8Õ·zÝçüíg>oÆÙöÙ‹Dêì$àB›²ª,ëT\ùï|õFè†'jˆÕ{zïýçI!9œ¶Ð&ù0†xJdÇ‹àÄNH—Ï™lDc»‹±to$:Vë%†÷V\¬ƒ ÀZQ¨Ï®¿i‡ìEšP†ñÙ<©ë.Œ &á45‰±Ø|1ºêiÖà[ñÿh_zþ¹ï§©óIÅ1ÅnYùýËùyFz?æÄ’º‹Ôœ_HwDB‘ÀŠ10QuöŸ{I.¸a¿©V€8´M1§Ùþ1l%¯hßu 7¥ø\áyÞõu?å{Ã}*ò÷܉èB¾‚x}Æ¿Ø7 îÐMÓ¶Æc©–|¿ù\Dã¬ùÝ=PŽ–¯|=ofÇ)w¬êȹñœº7]Ç`_–œ˜‚Ãu_ºß…® }fuœ¹lB«ÂabÖïΘA{–᤿òÛ¿‘~ðÄsiLXR(ŸØ¸®Ššb™o¤m‰¦WwËÚ$pQÞÄÅ«ëø¬Õú»ßofíœ×•A ægpæù_÷Oˆò‹‡i0%@•«ñ™ÉYT›WxÈ¥ÔµzÍô´Ö—Òµ õ¢"M)htvø8Ì 'g eç5‹zCõÂXÄÖéOËuƒ8èók<a‹ˆ#[Ñ +À÷žâ]ìCHŸY„;ÇïõìÙvôŠ7�ó© .íБ6¸Þ±Ôß9À³pó2o%‚—®ýý$šÈÄÀÓ´Û€h[#¤1¸Ô} V“c¸q½P4šfèþ„|Cè9‰ +4PE¢…S#:ák+¡¡Û8ÕÆP®f¼ +1"QÓ®ûpîx0c“ƒŒó9ržüîýéù)rL'OœO¯üä½424Ï•¦¯üþçR¨¸¬lgg"òÖtõÒéT‚Ž°.€¬:ÄâÈ7¬!šá6‡€QZŠ•ê’Œé^lòà~AÒµd¥šfÒy?cXïÜÙ~ÌŽËq8öi$®»ï˜áaU#¤9¬b?L«»gŒMÌã[|="ñj/Àö±Ô;ñ>ûb5òÖ³¶~ÉÿÊB|,à`•x·D`Öa=©OX:öµÜ¯g‚¬¿în~Æzñ™.‘•HÖû+DÏK´yÆÀ}¬96ÌБ E´ÉYsÊÊ°€àÔÂ6”,iS ‚m˜Ûý#‚¤3BQ"1bÞ«!†ÃâJw!Ûô¯„$"âd¹rÏ‘õ¦AÖŽ9ïR££¸Û¦®\®¯ìºgÚ=Æ8Vö&¯!+«èÓzÖQ:ÅÃÔa�%,Ù2 +~\ôIø×Ò¤4Upmé÷ÎÒÅFí´PÖçRËeõ««aÆê‡5šÒ¨ÊÓ¹Rg3«e§\+e×-/"T÷ÒFVË>·Öªš®¢Ïõ6*öe]‹côû]ûˆpj•²÷·QîKÑ“Dñ±5¿çý-]x½¦+‹Ô²@ Æ{ù¦`m6Š®Ó¬HqϨ£ ŸÕW@Ýß?FMêŠ|Îþ}¦¶V ŸYT;>Û•ózå•·Òµ=!n;¼'•HGF‰o-ÁŦNw +.-ô¼%5Ddê% Äî�Š+ßéСCˆÇFRGGGˆÍ"Zîöõ a�¶H¨Î} »~ÂGVââs-í$²Ôñ'Ó¶ºætÿ=mÔ!"HW‘£€Ëù4ñƒó�PàH?ÙeJöÞêé²y÷žÅ뾟c³xÝ?‘Þ8ÜþÛïžK/ýøƒ4Nª¾í¸}ý¿œÆçGx~KzྃÔO»÷ïG uvw¤iÞe�.ò6€†êªêÒ‘Ã÷`Ö.MOÿà ÖýsRDÞç™Ù‰TßL¼k¸ß æ|§Tù¸åèUY’èÁ°’ØÈ©ËUÿk{às‰.wt?åöôć%0á 5‘±óøïWSr„bïuŒ1GH•4ÔHjµ›Í¿¡@Ý«~ …ó —[f45ö¼ún×M‰7£ÞÚ³`[rÅr!ÆX‰¹GÊ Ðâœ)Ε#öL)Ê.Îâª$!L•Ð¡º,<qME¢A”²÷œVƒZE‚¾FHC9‡éX-r§±öéñ¬œeÛÕ pŽV²Ùž3ÏŸ;^ß%ú¦]ûTM²“¬Vº¥¼Å5”#ÞN-ÝŽ²|à™ªÄ˜ÔZAOàÖ¨Ûš©*—ÌWÝÒºÈÝsÏ=Ø%tb{aFB¹Ùˆ·Ø&ì·õŸÌÛÚ»«‘ëÚ{î‡î{]„º^Ù¨/¯‡ºeeÿ®ë~ñÞÚr× `eó¶fÊ,?3ªR„f‘ƒS|$5Ê“\Q±u\9Rëˆl4ÈXx¨Eæœh#ç”]T¶ ‡]=Àø!`)Û®@˃¯Öß;w/÷ RTÜ©.9š¡ÿë76îóýS—£"Þ’ÔL©Å)üJ‰æeêÄ9¸7ŸŸ…K.¯E,J°í�Šˆwm¸Ã¶¶Ýèº0XêDÄ<„ȽœvpA‚³¸Ž.Jä¯nXW¥¥ZrØv“˜jm|„T„•„z„EL�G<Þ;;Ÿîx즎zÜ8AçbA‰ïP u0ŠWä<²úh{Ûu~œ¸¢âXJ€ðA®Lîažñ÷c½üì³/§w·§…q"†1æJ8Õ³/€ÜÆÓ mO7¤]Gv§9ÖoðÄ 21Ú!aD%ÀþØÃÃåÖ¤QŒÍN½}1u@TßG†¢Zòû½D :iˆŸ—xšÕÉ…sãz+µ˜Fô¾µQ}d)éåû 曩O°9¢GÇÒ{§:Ò¹}¯µw§þ蛩oú4#¡4ÂÏŸA¯þRŠ{Oäbd«¢uU†ê…®S©ÖôLšûÜõpj…ÏÆàýž*tHáQÉ5u¿{NüËö>Oòݽm ‘3Ï*RÖŠxyɵWªãÑi”H;̽ˆN$è§ÈÏsg["·y¤*&C‘vàÈ'@ÈsX™g„¥nsì'¼‡ HÔï¾·íR)ÏÓ>b¿ÆYGâŽ1s=ë;s/tŒKô¿@&ErcÛžçGnÞ³ª¢Ò•)Σö ±åe ¸uÄ@¸•"~6^ÀL…D1Â÷¶¤£H[NœÆF�bœÍïtÊ:3àÚ™Pa}t˜Uó45`x}¬´±÷ë#žC\ÎÂ9çHÕ¾´ªÞÌÒ9·ºž&#ëLdÒ¤ éåJ`£uä²-tu÷pÀ¾°Õƒæ$gÀbETÊo¯±"<#€È€HöŒý™¾×\ @V¬–‹"Œ·D«98}Ár9¡T¸F[Š£mCJ^.«‘´‡U`a¿ÍĨÎçŽ÷8úÖ%RÜã{K¢ƒ}õˆ³IB@‡†ÂaVÎÀýRˆêÙŸEÜŒ½÷Z?iüšˆ½\ç ÿäX:Eó$¡5Üs” S�؉°5ÚUu¹}gW¡Cn"dã0®>ã!-‡Êß��@�IDATÀm ‘µÆH0˜†»†ŒnÛqû.þy2ü�žßrÔ[�îÞ““Ì ‘±“Pkk£R9I>Ce€—Üètº|¥;½üò»éœˆ²7 2 +mßQCˆÉ:¬Šû1vªK{Ðyï&{Ò‚%€N¿ùRšîI‹ø].¢ÇYZ�9kŽyí†èA‚púdgz÷¥v�"ªˆ²¹tσ»Ò£Ÿ;B¤¢î0ŒyàžáØÌÿë:eÆ59'/qfb +ý»ÇYKC:ÖÖ}Í茛Éð4‰ŸçÅ4?Qš.ž<Ÿò¤¡¹+¼_`¯Ø1Q±B\þçß?×Ê?÷³© %.µ@—”£Ó¯{¥+}–{ŽM¦^×W‘ÈrÿgÕÝPጹö"2çOËp‰¯yÎtMóžÏÉYêþ£mƒâ_ï»—$üÉY/osN%nag‘© ˜4yÜCª¬ï{Ù¯%ߧîQC·ÎC@kD)]E ŽÒR’`™?›ù×+Zž©NÁ8ñi{Ž[©FUÚض0Âç´‹pøNJ¯³Åßfø2šq凇‰%ˆDÐÁƒÓ™HmàÎeóˆí–m¯ 4Ê™·SÜ/›‰7j+½Ñýõ®ÓU éÕFÒ¶Yïé_Ãkh �œX¨g•R&F·¸þyf8¾q€ÕÈ):,FÇçaóŠ +VL D¤†cÌÛñà‰Œµê”º7g¬uG@Àã!¢Tt%7"/*æY1¸ãððk@uãZ/qhué9£Ÿ¼ÚN¶€Ì.¨çkÝ×ÒÄÈLj;¸C£þ@°ûö·¦‡[诖´zãˆÇ*S;Á¤¸Í³Ìßµë× +€™Ì`í{åR{&�Vdåv[w60ö]²¹)ÆTѬ\n|Í#¢Z‚;YÆ° ˜y•N- Îa),�ÙŸ€*‰›û¢f^C ›5 ‡Üq'½óÎÊèƒh€bÔ ª-‚d\ë¼ý—”Ìá‹‹.Τ˜¸Ó—/§ +ë×¢§V7=D.á)â,kØsàð^P`yzûõÎtêxQ²à\jŠÒÄ×<z˜Ð—!FFÓ‘£mˆáë˜+|‘Ôrľ·ˆ‚�..jè’ +"PÏø¾ÖÔÜT•.¼?NœjGÊP–NŸø�Î÷oÓÈü%7ÆÖXùç#?Vßø¥|÷}ô¿Ö §*¿<ˆ$Þ‡a¹÷™:ˆÃ,4éî\®9™qÆÙ`˜p„¾—o£XÈk”é8gy‘øR´}Ðp ‚J„Ò™Gª`ZÆ™eBÄÇJŒ<ZúË+9‘p)mÊö’ăH=Cæž™ØGH@T±Û™ÖöÚ]˜ýl‰±"Ôý7ƾXÔÓä©%Vb�i8K *Û-¡Žîræ —àЮñ¹÷Ãì3,þ–°(coLA‰/áZ"{îén•sóŽÅ¹Y xÌ"ƒ*óª BÛ6öDew´WøçÖg@ÿ\‘²\ì÷«„šœñ픜;ÞH$½Q[yä¬î{ý®BÀV‹‡È?E4< +9¼ÜÙÜE©HNÀâwƒ²›»WQ±Eàé–#BYW…nHã)ÛÕàÈ`Z2_Ã`H@bú>Û™‹ *>+0‘Sî¸ÜMªDSÖòW +<÷å„Õ+™°¾¡¶gµ´¬LŸûü(ì̹íÐN¢ À-vÑ.±©ár´à•Ò§‹x‡Œû©&>/©üŸ— +rWwàÀ¾ŒJç½2êÏäN¤ÜclW:Ñ?W¦Ý{š�–YÄ,ÓÿÉµÈ 8·Î“Åú¾—mˆ¬s)„÷2Î8ã ´íLWÚ{ÈÁ<ŠµªïI6£cÇ@À‡páÇšû®DKéð¡Vú £ëÅhgyj˜ðŽp¢MÛÉ!Ü€ßó�7F0¨:‚Þ>=þŸÀ¡f¶·V¥ßúÂ}”§×ŸÃpc&‚hin&Y«¯E®"ÎÄóË$è0ÙC¬9®V±WÉÖ5�<ñ5v·¼ýVo:wîbª.mL¯<óVzî•¿M“K=Üa1×wš`Q„¢›ŒïâÚ«[BÅ=fqDjŠVET¥Óp¾‹Ö½ù™ñ99>¦*ŠûÉ{^÷3;cÙ½ü¼ùŒû@U„Ïyf\wæh´'@¼oú®€ðólX7úŠq‰ð ŒWú +d͘"Zõ´à!ú¼\jHPŸÿ¼¾‰–8kªO¼®4Š-ËX2 +öÇf4,³›éʤ¬L ˆ£”hÌ$>ÄŪRxçz±òÖuåãÝ|Ú1ú´QÑ£ë:„pëþ½x/´0st«%T‚HXº(f<*wínR4ÐÊsø*rÖÇw31³ÍÙGitv31s>%|yô-û’+—à]¯Ü58?l``VDºr8ŠÌøólqP@Ë¡Oéy(rV€,7i@~Ûñ /Â¥ Äk•CÙ²®KGõG ¢àï‰(›š¶2DnÐÅpóäصïE€þÕŽ®ôΛ—ÓâÖÍ1¶J,¦¶—¦c÷Io¿}$of'ö”4IíI.ÑXÝ”êA¶cS©ŠÏ²ªaŒ†àºÑs¨›j@ßi‚„±‘‘ f&É4Ißp$ÈåF:BŠ,x€sÜ~ˆ'5Ó’µ€4B¿ÎãåçÁgœ~‘ˆL€$RÀ«Å*V©³øKKpðõif +"`÷¨Q8ú«Wºbö"Ö5V÷þ#{à²`m8×o\OGµ$c{@‰Ì[·mKÄdž!̤ ,Ɉ4�²YNo<ö"s<I{%¤FÄ*üÐîôÈo'_îd±½^K˲Öíp)B¼hˆZ¹?6JfdFî3`Õéû‹QÍ$®[§Þ¾–®tôaM]“ž~þGéõÓß'%y) +fïÄ""pþCd«.Šu¬¬ªç J xô7ÝdÈÌЪîûÒ’jļ“ìe ¦´2Îl¼gFé@Âw÷ˆ{Á¿l_€Ð8c"ëÌM)žÞÙìFå_ØapÝý2b“uÞµWð¾gWPç¾ô~.‘ÒUO"-Bº²nrHK¼K Ò#ß9Î1ï]Rj[ŒŽw|‰}¹…À)33 Gö®6¦äű˜VÄWµVîöé82"B@9R´R$BeõY¢Çëø³ˆnÙ\Ø.3@ÔQÞ÷RjVjÇñ:°‡<Âï“?{źþNÜ4wĘ‹sKç|H̵áuÕ¯²Ìë-¨×@é®´È>вz½"×›ÇqÎï{m +iÈfÒáÅs«‹ºiáäz¢î~þ×ò»‡PÔdñ¨GR–¯øɃâ4¬B9EÜ_£ŠÁÁ@VRÛAƒT¤ˆ›šô£E¯ÃAùjZ‚ÈYñ²ˆ×Cª¸Í~³þ2Ãëþ¤®Í°uý¸Óôöö‡¯nˆçÐYÖ×kyù +ÀP.`AÓ]MlÀ¹ôÊKï€D¡®Ç†@Å„ÏlƒŠÞÁXG"”¢ñ•‹ØT£¸Ü”ÝI£„%�‰ñmþ£EfµÀ•Í,�ó¡H´7âŸ<NxECþ ô|FB¡ã-À6ýxè †kl`ÅÏÅ‹Ó cþ’rPÙ< oã}Kà*~tŸÍ xudt0ut^Oíäâ=soQEÚߺã²ÆôàƒS Æcê°o\ï)Â.tÛM®{šqñˆAbÄèZf”šI韞å`biK Žmè?÷…�²Ó釿ʜƒT±Únl*KÍ;"P‰Ëm‰9¶o'Î3ָꃵ.wË8GŠ˜±lK×;§Óï_%÷1Á#K?ñÄéÜõgåy²»CÿuïùžÎ]9kSLlt]á$Îz{†â:KǼNsVp"Ú˜ÈU¤9o!Äô·äûZ5CX:Sѵ\§+�È~$ÒÀ9qFò³g}ïyèe[²±‰Ø³Ð’>ë~ÓNÄ«ZF·$ë„A¢i‹Èó}¬?¾õÊ´"±qË™Ø8S¥�pA¢Íh¹G¢t'Ó!cËÁ^ÎÆâå»-¬Ãkîél_»%V2s gE#L¥dŽå#õ|7u¾lî°¬U äÊhsÌõX¤OμP6’núȺ7ÝS&ÖÜýµ·¦nÔÙ‡|ôË]ƒ€}í°FFô°$êŸb5ýå>uß‘k%²Sɖ̇t'zЖÃcõèÁ–úAüÜDN[Ź"¯Œ£Æ° +qèøÌD<k$+‹‘µä¥ì=ÀLŸ—CI"î± Üƒ:Y£Rµ·_€†õSô¥hyxÍ;j1Ò것¤J"WmEÔÝDêÃÊ´¤!5ˆ£3ý¢»ƒ¢ïÃJZ1ÿ“|°x¥�ÊEŒn$ KM¹ÀÐo\õ½¬&4ˆXÄ©±™Q€vìÐýƒy#VÀuèÀ¶`a-ÑaÑCý‡[ÀWD@'ztÞÌùH݈ø1¾†¾¬D·¤fNÕÆ,³©¿cW-œî¥°P„;6XÊž];³÷‚u}£UuÁD¿¿gDŠ_w1€qפ ÍéÈý»Ò‘{w§÷N^N'Þº†hXvok®!gïâV7Ft¤rÖéì]�ý8ìÆn’šcNDÖå r#pµ_H—.u¦ +¤ÓÔüàŸK#¸59Ì¥õîÄâËÙ‡4G +HNL±37|©’·¡%–$0Ž6‰ˆ8s¡’ÖÈlåØJ®Tbì©Etñ"dʸׅ|¨–à +AúúŒ¿ù`dû$ã‡Î¹`OifªOÃVòD IÛÉ)A1wcA(Ñ®È^ø—…ÔÔ0Òg@Ž</2õ/K¼ÀY·>{Ôyñ,»¿•p‰¨}Ï +Î<Û“~3;�Çf;¹nç¤B"¥5g_·4CÏ*óY÷¼Ïyž5Ø2:Mñ aÇ +„ô=Eö5í +åf3�1Ìœ*¥R”œs´^»™(YÎSîUø[Õ=B½ÍôÇŠ› )©wµøfù†å¨µqpŒy_1î@ÌÇ» +»hòKÚÄ•ËÓ·®Ï`ê§à`+"ª•HgˆÍ0D‘ãkj"µ¯Ô“Š <h" w±9á€ìàä庼:.žÍ)dõÈÃCˆÓˆÎÕ‚>±œôm"`ïËý•–u#nÁ ?Ç +â9÷¸§g„ëË©aÖÊÛj¢^ÄÂîK¨„éƒ,<�…á‘!Œ·Æá +±¾ÄŠzˆ{ëV“”C@ñð^tOÅØwm«†“G'Õs·(Œ•öíÙ›\`¥qÙ"nÃD.m]H{¹'÷.G$óu}G¡^ˆš™9n¹ ¡JøDľ›::¯Ÿ3Ìá®n‚Ô¤ÏñÁÔ~á*ÎõÄu¾Ëëª R\۰ȹ¨O¹ÜÕ—’ø·†ˆTZ³VáŸ[Ž¥éÑ{¶¥¯~_e²%Í‘÷÷]yœ?w„ á0Ü»¯1Ýÿ^D÷MÐœ½F¯ÆõiûD”ê—ñçU‡ïKNbÁ:CJÁ±©A8w ¡8ñêùôýgþ[š˜ï䑸ƄÄHï¼BW Àµsgä§Ð§Ad¹Ï‰Eª{>Ö“Spsrj"X÷zìo ’ ¶€a±÷‘Ðx_ƒEu›&q_hù+òîXÏsB|ÊñfHÙ1ÅÓ¯ßÕ½»o$èêÈV0Ë]¡´À×EÐÝKrÞºö©„iŠä%ˆ³þ$tåDEú!ÁÊö-„bôj´ÌMìžt.2$éÈ%TÙ°ïxw¿Û~fH™Iœ÷dF„HÌK8gê(DölÆ1ûŒsÕ²sH~’==ÄÅÐŒçÆHÀò…rk3àúêt»E„hn£¢ë&ÂÔÝV±ßJ4-½«°§q¥^\Yàê/B0Ó_ + \ä,ž3.'¸ëlÅàʺº!,^4ž'GñJë³è/‘Z<ØT“¡€@¤mßRÛYÚÂú%ÚÓÐzYÿv’9DÓ=@Äãp^ŠeXúz1Ââ¿£÷ïçÀ/á£;VØ0 +V1º¨.YȤ„677Àsk£Ü†âT©Ç2�AÈ[«N35@#߉ð‰ˆ5 “¸©£-—ûƒÓÐ…©ˆ(SEU�7¸ØE¸ÐŽÀVŽŠ†à®áj�†Ž×ù@)ª÷=J�Ø&X(Å´±n†|¦8³l&üæV±Ó$2¨…£(¦_æ>ˆ&bq¡2‚Q-®HÛÐÿêûŒ6‡þK3ö"t~UµM`£··£·ÁÔ~"kÄhO9ˆ–)j©Ý¯Ÿ0þ¯%ľ¾x¾‹üµX6ß³Ï×`]˜ã1æ*X±öðàpäx]šªNÏ=õbzåÍo§éeÖi…÷åUïè’¯•HW½®‡-kUU¸d±OÝólÓxŸ¹X~ÈA΃p-r£îó…ó¬5µá,õ˕в}m�´„7š–"à@®üD�P÷'jòLÆçc’`s?ŠÈEøqfBŸÕ1³×’;ˆ/íŠèDû +mÒ>a^ {Ã>=‹J¯$ªÃrßSF]ß[nßqX?8ù•…”P bd=kloÎoHèËëžcÏuFd.A C¨0·Õ5èÒÑç±_fb|ÅE® +ký2~ÄŽFm&@Qº5gÄ*–Bùdf@¬îV$};VËr¬rºëéi7™GÞ¾äÀoƯnÃ~òTˆwùz ·@á‹2ë_‘ƒ˜™ˆ);Xø‚Â{è¦'Ia6”ù'†!Ȩ¤ä9m$—®:4ë\¹r Ä >GýmúÎú9µ,P‘sSß”*-O5TrPˆÒäóW:®€$‰ßŒ8u궶 +±è~ªcXê6¤æ]5„T¡OE椄ë]"+OIL¨+DyÖÕeµD³"9�þÀÛ02Bd¬(¯ ±•@#´aãÄ0®¬B§‹(¸—�/]pµ f0C5 +S<¹À8<8†°>Ì ù-ø17ˆTFn^�˜�;\H8¾·‡Aä«è‘9‰:W~ +<ðÏ8š©©_9Ü:tbY]£ü·˜ +¢&U€(ܸ#ƒèÝ7.TÂá°CÉ@qèºIãˆ/¦bó¡‹ Ñ©EôÊWÐÙŽBàKŒ¸þÀÁîw4c,>*·_’ÆqùZÆäžûö’\¡1"À•@5™£DÐúb/c¨6ÖÒ÷¿ÿ¿Òû—Ÿà<ôït¬»êÔ—ÊdH€Áºˆ<Ìw[ż+B™Š‰Et!Å@ß«ŸpÎzN©NOg†H6o2˜…%=ìž.ÒõéåÒ"õ¹¶5 +Ò1% ëì~Xóy÷ûA+lŸÓfCw<ëKÙ~Þ—¯ŠÙw¾—uäp·:k¥NSD¸ +ŠÒ,¨ˆïZG°Ó~Ú¯›Û¾=‹¶™í¹ì<º®Ù+e:e¥.>ëù´8>Ç°»ãŸK¬ªú)…p°Àßc*E#ªØ$‰lT#¯9‚™„•³¨Ý‚õ +eãp5ªÛ²²Ï6zRd˜‹‹ýîã›gÙŽÏûl^&¹"Ó›qÙZ9ç5æh#*xe³1ºæö%\´hÐuW!`ÎLl|³¾¸:R¿¢£)&~üµFÝ [‰‹§î· ‡ÀaCvXˆò»««'\|J¸6‚nv`~:Ü‹v“aÏîÝ¡SÊE°ÿ<Än(9æy8 uªûpG#C@û¥ëô'ADŸ‡[S÷`O e8ÏKç:+"aÔ®i°e[Îu¦žÞAÆaPE¬XhÃE¶¶¶P·.ħ©/Û·¬+‰þ•Íä´pi8R‚n¹hÑ{ï>\f5€Ã±7nÝJ¢‚xôÁÕ匧·Ÿ{#íkÝ•¾öõσŒ*„,ˆapËÄGì»Jtäïís9·a¼k¯‹ŒouË>LÆ-Õ�xUƒ¬‰’è½ûwdÜ’KX\Í’Ú·\ ùìïIW;ºR÷õ ¸XLeÈJc˜HáŠòã—HXžî{�=6@XnlžukÙÕˆ¯ñú(¹½â÷±Q¸îñòôîké‡OþMê›1~/ƒUA¸r<LŸ† ö¾"^GêêÌÈ•Yò‹3‰M¶Št'™D×KÑô,ˆÐõÓ@OW;÷šˆÚu÷‰-ï¹–ž‘@d®Ä[ oß5ZrCrâ7Ö!»g²3ª1—†JîQŸ‘Û‡ˆÐ1¨7vŸX¼.‡›ç,¥¥ãZDz±Ùy.wÁ³¾„p¾_ó6lÇw÷¾}åû0“’Óww¬"ëL½äwEÞÎ’-]2nÛý|až¹s‚´`ä îŒkçGÔS"T(›ÏÀo"Ff×+«‘o~ßía¬€¢hå1>ÿÌÝ•6BºåÈ7¯ã§y€ík=ݲcY|ózw–Ú‰CÀQÇ£¸T ª�C¯¢<h"Ëœb÷ ¡ �cÎ^ š¼7L.ßð-¤í- èÇWò]í:EÓkÌbNY£>ÉIÎ@ «ó•b—SТS±ØÜ¢Á6°¾-AÿY†+)÷P8®.±uu¢Ô(hÂÞLwlpûÆzܘÔÉÝCá×áÖ4÷(A´½¿m/À)ÅÕ¡ó=ñÎÛÁi¶µíŠôy¾pù.DÙ©«·:]Þïì™v¢Q]Nûì&áCkÚÅûè¢Q]ÿhíÃ�ª„; .QðrPL'@LN.C ��eQWW¤ëuï›o5æ‹ï1ÞIŽ¡±ožàŠÅwºØˆçÕ¦ñz!ÕåhŽw¸o8u°¤§›¸Ú Ë…9ñÓÔíœ3Àr>3óÀ‰Wwïn$°@Þì4ænmݯO7€œ¹ÕâvŽfÆ‹Ó`ïbzîGßMo¼ûF’3Þðç3>Åu±èaªAQ@™"¾±}yg¨qöè8’ueú¹‹ DÚ‘Í]|¼:u½á³á¶åDÃuú;$I® –Ò†DT¬½D«gä+Q»äó ,¶çHL}¥RÖU¼½ˆC—7‘¥œpV7³zVzá+ѽç„Dž™¨Êp3ZRÍÄC_ǔlË6N8¢t¨9 ù¢?ût(Š‘Õ;nýŠMÜRTDvŠï ëæb÷i8íEÓcÆäh&²7æz&’Hñž #4�$\¯EåA¥YQ7.þÙ`ûo&RÖÐ)’b¬©¯AÔú(‰ ëi›9לWåò†ˆÞgJ©ü±¢OòzÈ×£MîçÈ=¯|W!`+=èˆ :9HX f™yJˆƒ�¾>©i©[‘gf,¢±Õ©3 ôâsçºwÿ.¸L<ÖÄê+»oŒ¤sˆ<kà›š¡ÞZƒ†%3ÀF7–={›iŸ .f¹§%å2Ï7¥Ã‡‹á¹eÉç—ˆ3,w1Ê!ÝF˜JC .�¶c™½°ŒÍ;êëãò•o[[+¸gãŽÁ€ò¦IÚ ¿c}ý6’5T¦—_~5]íJ 5X W’æØÒ½æû…ën;ØÀgyW¨†â´·mq¡IYHÆŸçž9žv66§Ï<r,mDZÄ?‹ïíÄ$Fbˆ0Ýä‹�‘¾À2zÙ6ó»EÄkñ¾‰j>0y1?Î;à �Hб äHäÜ´"l‰§ ¸ŒÄ’£#Óah¦ß¯j‚EBOlð„2§ÎÀy~‰�"uåpñDöâ]kˆ•Ý3†*‚•ôd{uèh†{‘û-‚›IéêùôÿøßÓÕÁã å?„•9F‹7úôü#rO**`ˆ¸Œ¡+Œ¯H©ÎuIIðð#ÖÓ·”XI Ö\Om¬ëp¦Ø"qœ3×BÄg+Eß^ùyælc;³1•¥ßõ‘÷Ó=ãxD¾¶#`Mün»r¼¼QÔuì"õÉÊ•ûŒg^;®Û§×©Òwþéë†Õ*}úŒÜµ}{ßb•ŒIø`ýØï YuÎ^œ°†ÞóÏñ‡*†ÉÔØc‚˜?m-Œ5P(›Ï€sojA¦râ¶$w8ªüm„W7’ë|%ÎmÞ:ÙJ¯~ê£ß%ªí‹ËÖ»Õ¾ä¨ýû°/jÞEX‹`˜—ą̂6™Å"\‡JÑï Ú5âQL46LBÈEŦG›!¢¨„\FÞW"K‘zî7?`ÁÜ�€¶ ÚjD›KD˜š› �™{ÓÖÖo©€¤pã0“€PQW9a.>n2´A<¤žE“I(<¼À2IR†¡txÿî°h^†k^”Ó»ŸÄ,aPÕ‚ëÔ’/XoîqkC}ºAV¤+oœH>t_:|ðPª¯Æ ˆèW ÿâZ\–Já$ «‰®«uOs¶‰îc†¤Ù±é=Òüíؾ+õŒ¥=ûRp¨Gï;ħV¥]púMˆ2ÉŽ€` Ô=,ÉD’Šú•Pp^•$(ªó½%Ptóج䒴r@Z À‚»fS*ÎÎX_Û¢D~Ý0„¢ÓD;@Ç ¡œyh†àaldoÒH‰ƒ5ä�wCÄŒ‘PAÝMzßÁacéwr¼"½ðäséÅ×¾•&–®3¶+hþtçæ“=(·ËZi0Ç,eOW!þŸø3«€E`Ï<,DK-úTu³êÕ� >K´ç³¬»{ØkaQת˜Ùõš`Ç¡flK„~è”@ÙÖÔ¨{ÄÏ Iá.pó¬ÀQ/s_p(«xW"Lî —*Roj|¨þUã/£cp,á¦Æû˜àD±°ù¶+دµ O£^å†TÚ-ø^TaŒœ?Æ$ù®×®K”ÏHx8_ópÖcüås–Pÿ@Ì-à§o +G9%\Ž×9°…eúi—B¬!ù)fœÓ‹qyÇ R>ÝÛ뎽k¶"à¿ñÜ +²^Û «¶™ÎwíóùïÕ}ÝE˜t}$(.êx+þTt´ˆÎPKتtð aá9€áŽ¢~×¥ÜÞLÄ)8Ò1�ÅÈ0†ÒVt…Ûš�LÌ‘†FUY*;‘¨©µìéHÅ@þ)zݺ� ä»T´[k_½`ÆË'!àé·í`3ÜHuk³érÇu8Õ*ÄÈ[ Ì1‘·íi’€WœùùqÞ·!]¼x ¢±:ÂäÔ8ÄPXÿ–0쯣ËXM—+ìÇ£¯˜kdSžþðßü+êA�œíÀräÈ;ÿìÕ·x·:æ Tq3±—îSŠé„a™;†ïë»ð †Î‚ÆPšr=Š;%†B2ºkd?*Zw~´lÝN<l‘¡@k +®·ŽèGŠü/œéÃ)áضéÀÁ&ôê»y7-œÈêð@âQŽoWËvHWË…î\‘â<¶˜ ï<;žÿîÿ“.t½zñÀX:¿�Ò}eÉh}މ߮O‘�Q0)ñ[®Ô¹×Š„3“¹ä‰DЗ{ß5ñw^|J,¼66ŽmAÆ]#UâY‹}-C\F¬eõÐüÖ€O.Úºáî‚•˜ÀɈ\êèåfº{Ed/'+r³O?%î¼/Qk{>c{žk÷X.Mõ¢àtúÏBlæDƒõ-"l¯éNeÈÚàZÙƒž‘-pñÙ@õÜׂھ}>î3~çd™½*qé{i@8ñ‘·_Ƽ8ÿ€ƒû"å«WƒŠþ¹åÈ §RÒÓy+%ÓÝb�!¾‘.ym;r«ên%åÂ]÷[)Jí$îofÐu× `7¿”°ˆ²Qý·l©&’øåV16Áµ',9{öµpx@ ´mMMÁÕj°”‰¤3ªßCëÐxåö<~úÛÅò Ë Š_|Öß>ãufIò~èÖD-9EìUå«h@D(ÀüR»Fú¨[™:¯“v°ˆMp½CX&ŸÅðèþŽb9[c¹råú\ó¾ŸzºF£Ž†XS$Š7�Eëž½aÁÝÝÝ›!@Úö¶¥“Ó›ÇO!憰€Š¿výu3ºh8™ëýˆkKÓÑû`øËbÌTwŒùºt©#räîc¾ôo¬¬bƒR_ŽCc¬Ü@'�=@H ”ñˆ%P$,Ô¥@«±¼.†³¯nlQó8ìç¾Ä¶6™vA�è5–ëëÙ`EغŠ -ø÷6‚@Háq£»‘!¾ÂXªbG”¶î¢î2DÈ8|SeBH��€žêÕôÌ‹ÿ#M,vò®A~Ôüòáüâ§÷“WÑ=Â"‚8œ¿"Ôäú £:Ôb¬Ò•>ˆˆ•ðˆÈäð²T„pš�$‰·Á¸6ú“‡ÝûÛ<·º‰Ðäö<îûxž¹'°‹ Ξ`O-.VrTebÞrž†¨” T2#'âÍEÖ>g[ž39NÏ*ËÈ~Q\Œ I ›,,¼ËA%pÙrÍ[ ˆ3©RžÑ:_1ˆ÷'m9N9îüüzfý.ñÏï’Õ&a€0ÑÐkBT?ûIÚû¹xàž–Ðñ\xÞ'‹Ù< +åg ›ÿiˆ#a…ED<uVËà˜Åˆ+/Z0SmCƒ©ü¹Õ†]SX"ý\l?·ú3'òk¡>[g=ö]ƒ€95©³ó€·ÿÑz¢HíD Ÿ¯¯<Tú66¢ãPzè—@Ôë7®™r¶oßJHD}? Ij@€’Èw+–Âu j)q‡3/¶«Q’ÈVñ¨ÀN bÀëzð^"`?‹¸§NXqif9ŠxD#—pðÐ~cÔ¼z×-éìé‹©©qbÖz~MJ±ìbÚ½«5oÇÒykºïþ#Œ ¿YDb"¬ö‹7xŸ>¾B(”§óçuÙÉÂtîD”<÷o�ŠyŒ™.·_#²]pü^Óðéâ9³¿Çž.¬Æá”úà¬1@3´f¾í@„Ù›_`æœÌL„�î{Œ }«î%\5U¬¬‚÷…;)Þ"cÅÈW@5²W_¬(Sq^5þ¿J0:;»�¤X6ã"VQU–>ÿ¥¶Ð‹ŒgE BP\hâ³á”`Û´P›c î!æ4Ú€[Båp‰Xßý‡¿I—z^嘤†û5·ù^\ý©n]BĽ^¡Î +ä¢Kœ’HÉÍ4j�Šh""&rz4#"rÿ*± Šå:'@’Ó´-Ró|X<εbl¯[×O›ý+v¶- aÛË9iÏMœ §=ÆHÍ~<31–øÌtÕz'˜ÎÒ±kÔhÕ ;-‘ý®è:óæ|ÑÞÏY»ã°M?}Öw·ˆˆ=¿þyÝ¿œ°öyKÏÈuB=¹Þl|’(×ïþ×_Â@_|c±Ÿ?w1êþ¹õ0¦2Kð±"’“£]-ÚÍòy9ÑõJ¸)Y§ØæZã,óšj¿¢o9ÆõŠH¿*ò>z÷îAÀ¬Äƒ;Ñ ª$¡:ÅÒH ÿÜoqgÕŽ8HêåVGFÆpéãðc̃¡Š€aÿD®vÅÇF}± 8ÇAÝÚ–º"u°J)w96K†ŒAîËçˆg²vºÈèB#u΄“#í"8]Œ?ýÞÉSPôPÓ"[«ôkÝÚHèHü‘H&…ÐùÄÛg@FÛ0<Ú–Nž8“ýìgÐ÷„‹Nw×cYÀåfõ›‰®Õ‹~·5�˵ë]á6Ñ×w ‰OnÝVâ&̢䈘]Γ &ÛY¶äŒŽ—@þW.÷§Ñ1ôèXp‚0OöÑ ÷“Ũ‰™W{ÃPªeG]ÚE Ëdzºt¹+ŒÕz{Ir>vloªC/<…D`z~AcÜŠï2†©ÛZ ’ïÐßc`þ1¢^í"›Ñ.æ»(?~žÐ•ˆŸÐ…oYÃm0ÿŠÑ«‘ôšq‰¸¿œ‘¸°‰Þåôô“Ϧ?–¦ºVNF†`V~üÚ}¿æÙ+ª2"( Hx^]0ÄÌ,"z ¹HY¨¨Ï/.’BD#bñHähè~ÉŠ`ýî¯G ÁîÀÕm©“Ë"ö ¬~âú‹Ìœébô¸"]‘¥×ìú^[\$RÍbKaœç29]î›\C1w1g‘LŽ‘ ð¬!ºˆú܈ógðJ8{‘Ÿˆ +îGC;öóŠ‘c·x^u2šWŽ˜½.`wÿ{_ý¹é…!v¶„÷6 Ž[XQ1/¼À0Œ¾B<Y†�˜á÷F~¯½ùœÛ +¡g…rK3 “{d-bôúzÈ×F]ZEÎ&Ip/çÅâõŠ¢cÅÏkÝÂ*öÙú5 E¹ÖÝ(Ãz5îì!ÛÖ´ JûçzŠÉƒå”Rõi$V)²ãðlÃë"W9´"îŃˆÉšQÉàìæü 7€„íë¯k9§à÷œÚW‡©ŽX‘³ãóOX†|FÙØhŽïèÑ{Ø ôgÞNq·mûögÄ¢¯ün}.€°¶£¯Þ(׈NŤ<˜¾ø凲÷E/*å>·�cgȽj;ŠØ×6Ý趩Ž°B{PŸpçr5̇:‘b¨ù)]êÈQ__Ío²!üªÈ1ÜŸzn Q�ïÁ/Z€mŽ×{y¸d +”ÃUj?æö "g–DËBuºzáFº§nâôûÜŸùì#Ì=ÑÀ—ŸÆÊ| +nâ3¶E¶¤$²8ß„‚µªo¨LÛÔòÞÍEÍÐoǵ±4;®‘±Í _ëµöôøÿ3õ¿ïòóñú˜þüê¯Û·9VÐl,ö ({ª•ŠˆÍ0£¥˜á÷Î}‘¢œ§±{B=f¶·3Ëd÷§ÈÈ}ãþÎ?39DݘªÙ—î/ S%ÖW=‘%hu Ó}2öy¤ôï^TŸ«*G5cÈPfÆÁzn²ýjÂÕKú-»‡3Q±XûÏš¶�ªŽl[b³”ã^óϳnÛÍÛw|þi¯ày´dHxÁlG5—p¢e‡y¹•&¬Ÿ05éÌç ‡cüwÇN‹iúþɶÍÄ¿u"n\çÛ-"èÛ&!°§»Qß·?ªZú\×WQ`#`$M$ȘÀC·¤%l ÂVÅ-’ñðbÑÈ5¦ “4¸…Õ?}|E˜RÚÌP¤%©RÓ¤€,\7ÐIªg8•â¼íÁ·´ãáù¬Z àA6ƒ¾FKf]ª!«Èк’k×®¥ˆp#ùWW·?�«œ½émCŽ^Nç�>Â&Cز¥32õ÷Ò?.Sø O’vаƒÍDÓ™ŸùàbšŸÄ·‹áña,F+0ŒÂšØŒA“FÕÁe*¦×b»±±š¨U©÷@i´ýtyzðƒ„åÛʘw°fWoKgÏ^Mï¼uŽ÷Ä-f’÷˜ˆ—¦ßúÊ}©¼º8½‡¨Ýd¾‹DÇÙzV™j·`TÇ_ïå4¼e }ás÷e© +!N\ëŠÊZ6¢qý³‹Ûc€uålwúÆcßH§¯>g2 �<ßîÆ¢ñ™DÑ"g@¿Ý98cÃnªÓÔˆH•ƒîËÑVõ»áZ ¡±–{Õ³d‹{Ù=ëÞqK°E(Jn‡øÃFí+J‘FéŽ38 ×A†èåó3ã>¶ ñ]ª†ššAÀÊá†ÞB×sþô&SA"%7œåçå¬CHH !NÕN5çгèY·,Ž?ïÓwõ·>—ŸËlðdF^Á¥ƒìíßw·H|(VŸÃØkóe› ÈS5ûøT:wé +OÁÉÅÓw羋Wÿþ#çºG¼Q·®‡ë{Ûõ¨#¼¾Ý’ñ®BÀeˆH¢•*6¿.s[˜æàhÿÔFôÄr´º¯˜ˆÁC+à£Õ‚V¤gÉk&æRÔ,‚ÖÓB©¢/ƒ°{ÀsnUãÅ}®³Ñ´à)Åqà¥â�9³9|"å°–-¤Db8‡�p~n´$ð(ÅZZ�aßÍ͵aѯø-R tmˆçw´ÌÀHÿG^^„À58”Г Â?°‹ —@Y�9nãÖm!%�ƒ§aDÕ¦W›™Eü¬ËGEê¾Þ ̸$“_´_†S%Tgmƒ"þ9ô·“ŠõÀ”0¸±×<ú[uÖ?r$æ¡ë*¨ðC˜íoÛžvîßRn Œå\zýõ³il¨7=üðžtïÑ}ŒÝ5âE%ãÄ®¾rå:ýW¥úÊæÔwc,}÷Ûÿ^?þ=ò¼¬�@g/Ä~»;RŠ:ZãW‚0*Q‰¨¦1¯éKä;vÿd\>ââ"âjë>$r±¹_Cÿ"aù¬HIÂÐ?³×lG ç~‘0“.ÂÌ‹û-\x@ÆÖ³ŽH-Rrþ<¿¸†{œ#ÀŠ%DÌÅõUP/qNs.V/†ç +ž•ñâ—Ì~Ð +4§Ÿö‘ÿV:eÉÏ]~Ïûî+;.ÏøøŠÑX>FÏ›÷¬[—†gZc´Wñ8÷+!Rà|cŠ?ñM¯5+šVd|³²:‡/ËS7CĹu4[)Š:èÍDÚùÔϯè¤éênòFpñà{ÍxCÔ~ 1œ1Õ$PE×0QLFÜX äl̇JªÛ@þŠ ã·«÷¤kËœ¬FS8ÙÇ‘ç^%@gÑ“]Àaþ`Epá{(0ÀB²ÿÙ�`,Œ‡<óÌ|ËÊÐ[,“7¸¿kç¡°:mÀ"€ÀFñªÆ)† lii8h½š¿ˆ¨->/�t¸ŽØþœ“XkÊUj¸ù}¹©«Ž–Ô~ªÇµNDõ𴨇%oìPÖLK?ÈópýåU׿€ó`?�›ÏÊjb5Ó6à-|vð=Ý£é{—_ .Dq^öïoA{ˆyŸÃH +nadÀT_»~`½¤ß’~ëK÷¤é01š/ttáç˘hcïaÜv¶¥z8£2ÆWºÅ$EpÔÝÁ…ÔV7…A×w{"=ýã¿K£3í1'…²élÂrWJ€¥®–MûPD'©g€!ZÝg¥åœÊÈU•ªnEKÓäqj('2 +±3çENVI’‰F‘«{^5‹{Rd%�Soº•˜ê‡Ýî] ¸ˆÆånBΞ®y…"äp]Â# (wÕÑ*¡’p°mÏA)êƒx¬;¯¯8*¨8?<ïû[2.7#&l/ãúíVX‘¹(ù¬…D±íepD‰•Ø÷¿z,œ`Þ‚£Ëž%k|ìoåçª|<«.¾2΋iÝŸëY;I¹‹Ñê ÓÈJƒ©Ê` VßɾG»ìëÕ‘ëíyP—k@–õJîb´úžºb ÖbO»ê†ªqçÅoEby†ö‹(ReŠ;¥è‡ê¤[â“s-EêÿQò¹‰Ÿ]Š£¿r=.ûmD3«ªú´mzÝžÿŽo+¿óëq3VÞ?¼—]Íÿµ¬½Ìú2.ƺÒGV5ë+»Ï³ÑqÞŠc‰áfï7³vã±x‰Œ‹wcˆü>y_~þü²÷òZ�)6\>ZŒŽòzÖ‘»q4›Y"�¢}ï Ø,°hOÝqÔh:^uÓ>ïsA‰rKñ|ölTg}û¼ß¼MíзF8Œpíúp¡³ú…?>Îg^VÏ«ß³•\YOçÒ‡³ŸÙw~æõ?¼ìBÄþÉ¿¯<g/ïìÃÏ•çòßÖåù¬Šÿ®\ÈﯴåÏÕí¹÷>?Uâ÷êÚ+cñúÚb;ùóñÞ+õ}.ïîãµ>zÏzþR,8ãDz¶³U¿sÝôªK…¯Ì€°a„¬q·‹€<áÅfXd»ÞZÞ.¶/·T%–ÎùñÚêb_«°÷î*¼z2 +ß3P˜ÂfàÓ1³HÀÛ‘›â]i~‘¡âç8æÕ iX+§lû"ì2êY³â³Š“3†Q2õ6â˜W·c?ö—÷U@À«g§ð½0…(Ì@a|Ç ú´¾û*)Ì@a +3P˜Âü*f òñÊêÞF‘CÖG÷v‹ºdõ¾·Säp×ú¯W¿À¯7+…k…(Ì@a +3pÇÌ@ί5€R·nŒæͬ–EÓk nÅjY«êÕ[©´±§o&Ö^mUíš°¡WÓõ¤ÚØ*”Âf 0…¸ƒg�«y8QÿV ´Ö3nZýÌ4>çkŸ´Z^\W?ïwuµkï"‡ƒöÞFÅ:kïëo?ÃÖ+¼Þ¬®f 0…(ÌÀ5qžNmÆoTo£xξ4n½ër¬gmÔ^Ôc,ë•,ÛÛÇïDП“•Âf 0…¸ƒf A;$¹Yÿtóù®ò>>xEÊ™$Ñ 6@”kke}y•hl¸EÞÌ::¯«}Ý9NºùÈŸ…(Ì@a +3P˜ f@nw3Žwƒj+H÷VÑuÖJÖ—ßo¯^†ào^§ ‚Þhµ +×3P˜ÂfàS5êv' {»VW|³—Pw;µŽ®x³zêvíK£«Û)ŽÍzrÉôíÌ\áÙÂf 0…ø¥Î€bãqR• c£¢]Ôa~yô#ÅìI›‰›WÇfÎ+*Ö¶ÞFü«ãa¯µÅºYìi³Ö"ëß(Máó¶fÀÄW£Žquóïkyçĉ/™ÅÈ°Œ>ßÕ•å¥íêî&yÁåxæÝ“'#–î‡nñ‹1¤Ïœ=›ÚÛ/‡îÃj}\ËÓ¯Ýb3yl€¬5§?øà#×nöÃì0«ßwõó&©øàÌÙÔÝÓ“Å×^}ó¿ûNgÏK½½}éýÓ§ÓÀ Y£n½L"î£élïÄÇ*}Ð3ž®ÎÄ{åÊP܇z}uåûÇ*¬\8Þ9’ºÆf¢îÚgFHÈîß/£,®]»~[]½wêT¤ý»J…‡3ðœ9ÛÍ|qElk‘¯ÃÑ_x Nþp”F±Ê#|x‘/]ÏŸ‰Xë4*g»ÖÚ:¯ãØæÖá”:à|†>¡OýÒ^~íµtòýS‘²P*êwÞIG9|Y’>÷›¿™Þ‰'öô™3‘Táÿü“?!u^_úÙë¯GpøÇ‘ä~,lkK½\·ÝžžÞ4HJBS¨=ôàC<ïï¡ÈädÀûöööô_ýj:vï=ñ6}ýéõ7ßH_ûýßOÏ¿ð‚Ûדx”´µ¤‹ïØ7Îððñ—‹Óרo’‡o}ç»<ßÔ†ããé‘Ï<œÞ<þ¹}wGR‰Ÿ½ñF´cæš‹—.¥ßâ®tt¤{ŽM=½=¤#ldز}GjÚÖ”:;;#ˆþ;ï¾›öîiM_úí/¦Ç¾ù÷鞣GÒõ7"Äo©/\¼‰#ì3O a ÿÿô—™N¾÷^ W •2‚îO´ÿÿÍqÑ~ùJ:7w>ò!;'/ayȼ™º«»+=òðgÒ©Ó劉x0]b®þý¿û³˜§±™ùôâÅÁt¬¥&=s¾/BÊÕ‘)k +ļ§¡"5’eiO}czãêp›YHCS©¦|KĘ}þâ@ºg;9Œ‡§S=Y„\ïRL(¥ŽûI¾.²¾12þâ‘=iW]–úÎyzåÕ×Ò£<‰6ªkªÓ…ÉêôPº|åJzøÁow¬Ñ£Ì»‰6\?Íó|"™D&ö8zäp$.8vìÞôwßøF)æf®‹„û÷í‹9fO¾Ê{•°.[ƒ�ëééK»vµÄû›ŒÀÄŽk'ylMƱuëÖHyþ)ÌÀ¯x+é¹Ú¨èŸ»l†¢jEØI’.¬WË1—r}£bâ³E¶eôµ‘n0> 1Í$\Ao4ËÿÌë"€ùz-r¡ÍÍÍp¶ÝéÀýÁá¶îÙC¾á42l;p Ý�íXÊ=›µk=‘˜Ïv\½ +`-®É”hþÉ)=z4Ú5‰z%ˆÒì2R»õzz{# ¢È{'À[.3CjEp8ã Ī@ìfž™%Q…¥‰> +•>‡ÙmÌ#'5Íg÷LWâíæZZv¤~Æ,BX�K,Ô‘§ØÊŽy×ΩßqþÓocScÚ³{wÔóÝó¹rœãããñ~öWNºD‹ýîß¿/ú=wþ|Höð~Ömƒ@Yà}í×âÜÈ‹ø%8äŒE\£ÌµiŒöûà”mÏ:^{åêX:Ó7™ÚI…â=Ó;žŽí¨M=ã³i˜¬Põi7gà¥~6‰pÍ$U”&ÐÕ列ƒk÷ï<¸¡2CÈŠ¦¦I +QÝs*ýÞïü.DÑ›‘ùg+k圙ÝgŠLBΉcr ¯óå::ÿ)f’¨ðp~œÛs.¤Vꙹʽ'ááž²þ)*íÃtxR8ίěuç¹fv0×Ò1ÌBÀ8°? ïµîmM õõÔ+”Âüêg`µô¯~4ŸÜ +ø“›ËBK…(Ì@a +3ð˜µX ðFœífÝÿsëmÖæF÷n¥¯‚z£Ù+\/Ì@a +3P˜;næÐëΣF ƒÄis#«|ðŠ‹gæ3m©’*ÄÁ·RV‡¾,'äe ¨›¯¢f®Ci¨L¥Oë•-ÿÅôH¿ˆb§&‰¿›ŠâbõœŠo·(2TüûIEÑ/½ò +ºÚö´{×Îmæ}¨stMoT®v^Ko£ÇVÄÝÔÔ´îfR4|îü…=WVV!ÇjêÚ¢žQ¹›õ©˜ôÕŸý,Á@KC¶½#ª]]Ô…NNL†ÎÜw88v;âþ›ÅÒêÁKJþùô§sêø<˜ž{á…x×/OÖ®è~³¢Ñ†XŸÄzÛ¯¢åùfã¸Ù½§ž~:æ^]¿Æ|[�xôU(…øe΀.;þea'Þ³HNäºY*@u¼³üYDƒT ƒ®Í"hÑdš‰Úg^ün"á ðiZH[ß¾¬-±`YÏûŸ¢ÉÂ?kg@¤2RÐ’ôø[o…ÓÃ=º¹ÐͶî #¶L/¾ürÒ(ËÍ ŽöÏÿ,3²ÝüÓ?¥}{÷‚ØβxàþûÑÑ] +ká#‡§ïž`ƒ,¥?ÿÓ?Åš]$@RÃ& sFFFÓØÄx:! AAë¾Li¬å÷?ÿ³? ŸFW꯯X`ÿ;Ú»~ýz Tu»n#õgΞÃð«?½÷Ÿþ‚qSSúÿËI_ùò—C§83;ƒáU7úë@¿ùŸéØ챿ÿ{¹>“&Æ'RiYiô§áÖëo¼‰Øpè~ï¿ï¾´cûöt/Fd"“/}ñ‹éðÃô;_þR賟yöÇ°$ê¾ö€õô™T‹Î÷ +úëÿúÓ»'ßK÷;–Þ@ÇúÖ;'Ð{ï¬ææMÖâ_ÿá×Ò}ûÓYæ󵟽ž~û‹_Ã2 º™¹��ŒIDATÍ\‘Ì>î²FSiok+ú÷Žô'ÿöߦa¥–Üêhg¦g¢¿)t±uÝ:õõ÷…ÎÙõ~ö¹çÒWï÷Ò?ùi*¯(OüGé¯ýeZ?~þ…tã<ß½ëèèúßaD¥.\AËîǦkè€5ÒkÙ±"jwºØ~)Ýï½ì«+Aô¸fŽã;/ýÆgMßþîw9ð[Ò¿ð…˜Kuî·ûà¯ÿçߤ¿ús ”ØÄr|m»ÎîS ×´SÐ Ë¿ÿÿ¿þ7Ö¦9úá]Ùÿù¯þS¼áŸÂü2f`52\ÝŸ×EÂë@‰ú€‘ëÏÎÈzE¸ê¹X[¼¦ÿoÉx£¾lH±¶¹‚ðÇfä_xA‹R¾Ž“^áÌ4�,ç½îwž�V„-'¤!’@x||,€½V£,ªuä¬DìZ-» ¤~Ú†À:7d’Ky7Äç,�Õg¸ ¤zÙ2œl+>»VˆSKéúÏ\¼‹õc+Rß"€YY|ß ˆ4Zä½í§œ÷óåPEÒZÔæec¤¸(ßUDê;:ŽeËl‰‚r.Ëv|wç`–wÓÌ>wÎõyÏ9wN¼æ=-¥%H|/çÂëùœøÛqÓžum[d.Rýæ?|+ýÑ׿žjëjÃè)ïgœ5óݯD…k—÷—V’rón¾“œî^rîŽÁç|‹ß«×[ûwýîÜz_¤÷ÇO¿û•¯„ÔAã+ÛÌûµ?ëøéû؆÷ÿöïÂBÎÜyqohäåœÙn^Üs{åóãÛ·ÅïŽÕöýîœdû3Û[Öqü‹}–7Zø,ÌÀ/hrðj‘°]ɸhø¸ò͇"ØÒi5×¢Z«åÍŠÈTîyì ÚnIä©W¸^Û—óUä-G¼¶Œ°ÖÎHáwa +3P˜ÂÜQ3#à;jPŸÀ`>Κ(Ì@a +3P˜Âü*f`³€GöFâãêxÝ:Ö½âÓùFX·3s·ð¬b?E¹ØQq¤¢=EyŠçIJѬוÎ#þT”§XÒmð\Þ†ÏÍñ§HP££åe~L¡ß®A+ÊЫz_ÿOE£ŠaKZ[Ú¶A.lSñ²×Iúœãõ»ÁA²oï¾h_ñ¦ý:>u¢Š†m3K:fÇfÿŠãúW¶"ÂTf£èt½¾—À¾÷ý¤cèmŸ|òG¡³V,ª8)ÄÈŒÕw²OçN1ªí—®ˆmýí}EÊÌÌdb^Ç}ü®ø¹»úéatb½yüxÒ¸” öáœIëä©÷C÷îoÿôCvÞ\KçÑ>5^{âGO…Ÿ®ª†áá‘ôäS?JËè£ê]»ÎŠ” nb@xT‘”Û³jpÅfFàÒ8ÄïOŸïOçú&¹·˜¾û~wª*-IÛk4¬Ji”º†á›Â¸CKN¯ùÝzyùöÉ®¨ªuDE õ·„®J?å×ÇÒŽÚòh§’ë>óì…þô஺4‚Ÿóøìbú¯¯_M÷à"Ž776±¾ENv¡/+J—'ño.cì®/ï¿ðY˜_äÜŠ¡°{V#-EÍà8'ë>§çQ‘±¢fë‰Ps3ÕŠÏFî_DÍF麙!XÞg„qvó1p>3ŸÐ§A8^|ù•�ø/½ü2†U½a¸£ÆKF§ÒjUŸ>ñD:BÄ«çò“ô“_JÜ_�xýÓ•––¥ÿõÇÒy§ÆIïpûú#øÄÈ@+Ük×o„îïGÏ<¿?Kt¥7@,?¥½íÔ¡ˆä_yõÕæ •ð·¾ý0�ûÛǾúgÇùà"ñiôeß.TBáu‡Dú^×€ë§/½Œž:³Ø6–Ážzæ™0üúÉ‹/¦wß=†_êW¿ùoàá@ú‡ï|'Œˆ^fû÷nXħÁÐ_þÅä¯^ñ›ßúv¼¯Fl¶§NZäwò½Si€ù3ò–‘¬.\¸Ñžýñã€L_bî5ì2p…ãU{«ô~úÓXa#ØŒŒŒ¡¢ÞÚèb¯At½Ëv%2$H4ð2Y¼>€0q]ÕÁ¿øÒKD!3RUÄÇ\ѹ6®™ÁSDÄ$Ob=¬Ú{ýF'Q²JÒ÷ÞïI?ÀHÍ@FÜj˜JG¶×¤Rô Â]N�<®5K#ÃÛªÓÿ÷³+釧{Ó¾•ixj>=ñAoùÈÖÿ³ŽáhË(Ag r´¹&®¿‚}ë:¡0Gg &2G‘ñÔ36KÿÝéÑ=õqøOv¦/ DÛýÆÕˆøLIÿ÷âôB?ïÚ>z&fÓC;ëÒAØû Tò:}^˜LÏ쾦Rt[%A|BǧÐLa>6A@NÂ|#]¯n?9W™7 ¡©ˆÎó±^ñ‰°E«‹U"w#ämøÊܪ:¯gaÔE_Ö][ìb¢Õñ¬.ðêÙø—{•Ù<ùÔS ¥¿øèÂbVÂöÑGo«-Ý…ŒÞõ…Ïî¦Ôàm5|—=|c|>=~šSÕ|Ϩ$HÏdPÝ\ËÏ®6“ùwÅçuiÐ1ì:¹îëçÉÅ#'QñÑm�‘_üàÂ?Ö¦©$ˆÊÚŒÇ2£;®åíå}ÒuŒÙöÿêA,¶Ëx¨P +3ðœ÷ÿÈälH|<ë9˵Øçܧ&VX¯¸÷§ç?žÀÁg5šÊÏÔÚºöck‹çª²©×Ú+¿ukŠs¸ê~¯šŒÂ×Âf 0…¸ófàVŒ°$lsq°ÈP]ðÍŠk.âÁË1߬–Ä«œ°}Z¬s+}IpÛ—µäæÿ7ê¢"cÕ`jë����IEND®B`‚ \ No newline at end of file diff --git a/core/themes/olivero/src/OliveroPreRender.php b/core/themes/olivero/src/OliveroPreRender.php new file mode 100644 index 0000000000000000000000000000000000000000..39dbd09a0b56a8804e8c0698012ee31cc5f13b32 --- /dev/null +++ b/core/themes/olivero/src/OliveroPreRender.php @@ -0,0 +1,54 @@ +<?php + +namespace Drupal\olivero; + +use Drupal\Core\Security\TrustedCallbackInterface; + +/** + * Implements trusted prerender callbacks for the Olivero theme. + * + * @internal + */ +class OliveroPreRender implements TrustedCallbackInterface { + + /** + * Prerender callback for text_format elements. + */ + public static function textFormat($element) { + $element['format']['#attributes']['class'][] = 'filter-wrapper'; + $element['format']['format']['#wrapper_attributes']['class'][] = 'form-item--editor-format'; + $element['format']['format']['#attributes']['class'][] = 'filter-list'; + $element['format']['format']['#attributes']['class'][] = 'form-element--small'; + $element['format']['format']['#attributes']['class'][] = 'form-element--editor-format'; + $element['format']['guidelines']['#attributes']['class'][] = 'filter-guidelines'; + $element['format']['help']['#attributes']['class'][] = 'filter-help'; + return $element; + } + + /** + * Prerender callback for status_messages placeholder. + * + * @param array $element + * A renderable array. + * + * @return array + * The updated renderable array containing the placeholder. + */ + public static function messagePlaceholder(array $element) { + if (isset($element['fallback']['#markup'])) { + $element['fallback']['#markup'] = '<div data-drupal-messages-fallback class="hidden messages-list"></div>'; + } + return $element; + } + + /** + * {@inheritdoc} + */ + public static function trustedCallbacks() { + return [ + 'textFormat', + 'messagePlaceholder', + ]; + } + +} diff --git a/core/themes/olivero/templates/block/block--page-title-block.html.twig b/core/themes/olivero/templates/block/block--page-title-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..64361701688917aeff569a1b40dc3516a00eb281 --- /dev/null +++ b/core/themes/olivero/templates/block/block--page-title-block.html.twig @@ -0,0 +1,48 @@ +{# +/** + * @file + * Olivero's implementation to display a block. + * + * Available variables: + * - layout: String that will determine the layout of the block. + * - plugin_id: The ID of the block implementation. + * - label: The configured label of the block if visible. + * - configuration: A list of the block's configuration values. + * - label: The configured label for the block. + * - label_display: The display settings for the label. + * - provider: The module or other provider that provided this block plugin. + * - Block plugin specific settings will also be stored here. + * - content: The content of this block. + * - attributes: array of HTML attributes populated by modules, intended to + * be added to the main container tag of this template. + * - id: A valid HTML ID and guaranteed unique. + * - title_attributes: Same as attributes, except applied to the main title + * tag that appears in the template. + * - content_attributes: Same as attributes, except applied to the main content + * tag that appears in the template. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * + * @see template_preprocess_block() + * + * @ingroup themeable + */ +#} + +{% + set classes = [ + 'block', + 'block-' ~ configuration.provider|clean_class, + 'block-' ~ plugin_id|clean_class, + layout ? 'layout--' ~ layout|clean_class, + ] +%} + + +<div{{ attributes.addClass(classes) }}> + {{ title_prefix }} + {{ content }} + {{ title_suffix }} +</div> diff --git a/core/themes/olivero/templates/block/block--primary-menu--plugin-id--search-form-block.html.twig b/core/themes/olivero/templates/block/block--primary-menu--plugin-id--search-form-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..1ac2fdc7b60a6d85d00b3aa8ac9137fd5d8ee785 --- /dev/null +++ b/core/themes/olivero/templates/block/block--primary-menu--plugin-id--search-form-block.html.twig @@ -0,0 +1,48 @@ +{# +/** + * @file + * Olivero's theme implementation for a search form block in the Primary Menu region. + * + * Available variables: + * - plugin_id: The ID of the block implementation. + * - label: The configured label of the block if visible. + * - configuration: A list of the block's configuration values, including: + * - label: The configured label for the block. + * - label_display: The display settings for the label. + * - provider: The module or other provider that provided this block plugin. + * - Block plugin specific settings will also be stored here. + * - content: The content of this block. + * - content_attributes: A list of HTML attributes applied to the main content + * - attributes: A list HTML attributes populated by modules, intended to + * be added to the main container tag of this template. Includes: + * - id: A valid HTML ID and guaranteed unique. + * - title_attributes: Same as attributes, except applied to the main title + * tag that appears in the template. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * + * @see template_preprocess_block() + * @see search_preprocess_block() + */ +#} +{% + set classes = [ + 'block', + 'block-search', + 'search-narrow__wrapper', + ] +%} +<div{{ attributes.addClass(classes) }}> + {{ title_prefix }} + {% if label %} + <h2{{ title_attributes }}>{{ label }}</h2> + {% endif %} + {{ title_suffix }} + {% block content %} + <div{{ content_attributes.addClass('content') }}> + {{ content }} + </div> + {% endblock %} +</div> diff --git a/core/themes/olivero/templates/block/block--search-form-block.html.twig b/core/themes/olivero/templates/block/block--search-form-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..c779a6a0cc5cd34691156a039b468eba6648c0f9 --- /dev/null +++ b/core/themes/olivero/templates/block/block--search-form-block.html.twig @@ -0,0 +1,35 @@ +{# +/** + * @file + * Olivero's theme implementation for a search form block. Based on Classy's + * search form block template. + * + * Available variables: + * - content: The content of this block. + * - content_attributes: A list of HTML attributes applied to the main content + * tag that appears in the template. + * + * @see template_preprocess_block() + * @see search_preprocess_block() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + 'block', + 'block-search', + ] +%} +<div{{ attributes.addClass(classes) }}> + {{ title_prefix }} + {% if label %} + <h2{{ title_attributes }}>{{ label }}</h2> + {% endif %} + {{ title_suffix }} + {% block content %} + <div{{ content_attributes.addClass('content', 'container-inline') }}> + {{ content }} + </div> + {% endblock %} +</div> diff --git a/core/themes/olivero/templates/block/block--secondary-menu--plugin-id--search-form-block.html.twig b/core/themes/olivero/templates/block/block--secondary-menu--plugin-id--search-form-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..fc8f1742502c612130efb4774957dad817bea260 --- /dev/null +++ b/core/themes/olivero/templates/block/block--secondary-menu--plugin-id--search-form-block.html.twig @@ -0,0 +1,43 @@ +{# +/** + * @file + * Theme implementation for a search form block in the Secondary Menu region. + * + * Available variables: + * - content: The content of this block. + * - content_attributes: A list of HTML attributes applied to the main content + * tag that appears in the template. + * + * @see template_preprocess_block() + * @see search_preprocess_block() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + 'block', + 'block-search', + ] +%} +<div{{ attributes.addClass(classes) }}> + {{ title_prefix }} + {% if label %} + <h2{{ title_attributes }}>{{ label }}</h2> + {% endif %} + {{ title_suffix }} + {% block content %} + <button class="header-nav__search-button" aria-label="{{ 'Toggle Search Form'|t }}"> + {% include "@olivero/../images/search.svg" %} + <div class="header-nav__search-button__close"></div> + </button> + + <div{{ content_attributes.addClass('search-wide__wrapper') }}> + <div class="search-wide__container"> + <div class="search-wide__grid"> + {{ content }} + </div> + </div> + </div> + {% endblock %} +</div> diff --git a/core/themes/olivero/templates/block/block--secondary-menu.html.twig b/core/themes/olivero/templates/block/block--secondary-menu.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..624fa44498e8a07419de18e8a0b1c28a829fb63f --- /dev/null +++ b/core/themes/olivero/templates/block/block--secondary-menu.html.twig @@ -0,0 +1,56 @@ +{# +/** + * @file + * Olivero's override for the User Account Menu navigation block. + * + * Available variables: + * - plugin_id: The ID of the block implementation. + * - label: The configured label of the block if visible. + * - configuration: A list of the block's configuration values. + * - label: The configured label for the block. + * - label_display: The display settings for the label. + * - provider: The module or other provider that provided this block plugin. + * - Block plugin specific settings will also be stored here. + * - content: The content of this block. + * - attributes: HTML attributes for the containing element. + * - id: A valid HTML ID and guaranteed unique. + * - title_attributes: HTML attributes for the title element. + * - content_attributes: HTML attributes for the content element. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * + * Headings should be used on navigation menus that consistently appear on + * multiple pages. When this menu block's label is configured to not be + * displayed, it is automatically made invisible using the 'visually-hidden' CSS + * class, which still keeps it visible for screen-readers and assistive + * technology. Headings allow screen-reader and keyboard only users to navigate + * to or skip the links. + * See http://juicystudio.com/article/screen-readers-display-none.php and + * http://www.w3.org/TR/WCAG-TECHS/H42.html for more information. + */ +#} +{% + set classes = [ + 'block', + 'block-menu', + 'navigation', + 'menu--' ~ derivative_plugin_id|clean_class, + 'secondary-nav', +] +%} +{% set heading_id = attributes.id ~ '-menu'|clean_id %} +<nav {{ attributes.addClass(classes).setAttribute('aria-labelledby', heading_id).setAttribute('role', 'navigation') }}> + {# Label. If not displayed, we still provide it for screen readers. #} + {% if not configuration.label_display %} + {% set title_attributes = title_attributes.addClass('visually-hidden') %} + {% endif %} + {{ title_prefix }} + <span{{ title_attributes.setAttribute('id', heading_id) }}>{{ configuration.label }}</span> + {{ title_suffix }} + {# Menu. #} + {% block content %} + {{ content }} + {% endblock %} +</nav> diff --git a/core/themes/olivero/templates/block/block--system-branding-block.html.twig b/core/themes/olivero/templates/block/block--system-branding-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..999902aa118e9cec513ac8582349b2e8cfc313cc --- /dev/null +++ b/core/themes/olivero/templates/block/block--system-branding-block.html.twig @@ -0,0 +1,34 @@ +{% extends "block.html.twig" %} +{# +/** + * @file + * Olivero's theme implementation for a branding block. + * + * Each branding element variable (logo, name, slogan) is only available if + * enabled in the block configuration. + * + * Available variables: + * - site_logo: Logo for site as defined in Appearance or theme settings. + * - site_name: Name for site as defined in Site information settings. + * - site_slogan: Slogan for site as defined in Site information settings. + */ +#} +{% set attributes = attributes.addClass('site-branding') %} +{% block content %} + <div class="site-branding__inner"> + {% if site_logo %} + <a href="{{ path('<front>') }}" rel="home" class="site-branding__logo"> + <img src="{{ site_logo }}" alt="{{ 'Home'|t }}" /> + </a> + {% endif %} + {% if site_name %} + <div class="site-branding__text"> + {% if site_name %} + <div class="site-branding__name"> + <a href="{{ path('<front>') }}" title="{{ 'Home'|t }}" rel="home">{{ site_name }}</a> + </div> + {% endif %} + </div> + {% endif %} + </div> +{% endblock %} diff --git a/core/themes/olivero/templates/block/block--system-menu-block.html.twig b/core/themes/olivero/templates/block/block--system-menu-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..28bc7dbe1eed55e9751d5622f55df8d4ee2adbcd --- /dev/null +++ b/core/themes/olivero/templates/block/block--system-menu-block.html.twig @@ -0,0 +1,55 @@ +{# +/** + * @file + * Olivero's override for the main menu navigation block. + * + * Available variables: + * - plugin_id: The ID of the block implementation. + * - label: The configured label of the block if visible. + * - configuration: A list of the block's configuration values. + * - label: The configured label for the block. + * - label_display: The display settings for the label. + * - provider: The module or other provider that provided this block plugin. + * - Block plugin specific settings will also be stored here. + * - content: The content of this block. + * - attributes: HTML attributes for the containing element. + * - id: A valid HTML ID and guaranteed unique. + * - title_attributes: HTML attributes for the title element. + * - content_attributes: HTML attributes for the content element. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * + * Headings should be used on navigation menus that consistently appear on + * multiple pages. When this menu block's label is configured to not be + * displayed, it is automatically made invisible using the 'visually-hidden' CSS + * class, which still keeps it visible for screen-readers and assistive + * technology. Headings allow screen-reader and keyboard only users to navigate + * to or skip the links. + * See http://juicystudio.com/article/screen-readers-display-none.php and + * http://www.w3.org/TR/WCAG-TECHS/H42.html for more information. + */ +#} +{% + set classes = [ + 'block', + 'block-menu', + 'navigation', + 'menu--' ~ derivative_plugin_id|clean_class, +] +%} +{% set heading_id = attributes.id ~ '-menu'|clean_id %} +<nav {{ attributes.addClass(classes).setAttribute('aria-labelledby', heading_id).setAttribute('role', 'navigation') }}> + {# Label. If not displayed, we still provide it for screen readers. #} + {% if not configuration.label_display %} + {% set title_attributes = title_attributes.addClass('visually-hidden') %} + {% endif %} + {{ title_prefix }} + <h2{{ title_attributes.addClass('block__title').setAttribute('id', heading_id) }}>{{ configuration.label }}</h2> + {{ title_suffix }} + {# Menu. #} + {% block content %} + {{ content }} + {% endblock %} +</nav> diff --git a/core/themes/olivero/templates/block/block--system-powered-by-block.html.twig b/core/themes/olivero/templates/block/block--system-powered-by-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..0b94cdf9b95048d36b76628dc098f46935a2d16f --- /dev/null +++ b/core/themes/olivero/templates/block/block--system-powered-by-block.html.twig @@ -0,0 +1,14 @@ +{% extends "block.html.twig" %} + +{% block content %} + {{ attach_library('olivero/powered-by-block') }} + <span> + {% trans %}Powered by{% endtrans %} + <a href="https://www.drupal.org">{% trans %}Drupal{% endtrans %}</a> + <span class="drupal-logo" aria-label="{{ 'Drupal Logo'|t }}"> + <svg width="14" height="19" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 42.15 55.08" fill="none" aria-label="{{ 'Drupal Logo'|t }}" role="img"> + <path d="M29.75 11.73C25.87 7.86 22.18 4.16 21.08 0 20 4.16 16.28 7.86 12.4 11.73 6.59 17.54 0 24.12 0 34a21.08 21.08 0 1042.15 0c0-9.88-6.59-16.46-12.4-22.27zM10.84 35.92a14.13 14.13 0 00-1.65 2.62.54.54 0 01-.36.3h-.18c-.47 0-1-.92-1-.92-.14-.22-.27-.45-.4-.69l-.09-.19C5.94 34.25 7 30.28 7 30.28a17.42 17.42 0 012.52-5.41 31.53 31.53 0 012.28-3l1 1 4.72 4.82a.54.54 0 010 .72l-4.93 5.47zm10.48 13.81a7.29 7.29 0 01-5.4-12.14c1.54-1.83 3.42-3.63 5.46-6 2.42 2.58 4 4.35 5.55 6.29a3.08 3.08 0 01.32.48 7.15 7.15 0 011.3 4.12 7.23 7.23 0 01-7.23 7.25zM35 38.14a.84.84 0 01-.67.58h-.14a1.22 1.22 0 01-.68-.55 37.77 37.77 0 00-4.28-5.31l-1.93-2-6.41-6.65a54 54 0 01-3.84-3.94 1.3 1.3 0 00-.1-.15 3.84 3.84 0 01-.51-1v-.19a3.4 3.4 0 011-3c1.24-1.24 2.49-2.49 3.67-3.79 1.3 1.44 2.69 2.82 4.06 4.19a57.6 57.6 0 017.55 8.58A16 16 0 0135.65 34a14.55 14.55 0 01-.65 4.14z"/> + </svg> + </span> + </span> +{% endblock %} diff --git a/core/themes/olivero/templates/block/block.html.twig b/core/themes/olivero/templates/block/block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..647fb4e1f7093d6832cc0571982ce684443f826a --- /dev/null +++ b/core/themes/olivero/templates/block/block.html.twig @@ -0,0 +1,54 @@ +{# +/** + * @file + * Olivero's implementation to display a block. + * + * Available variables: + * - layout: String that will determine the layout of the block. + * - plugin_id: The ID of the block implementation. + * - label: The configured label of the block if visible. + * - configuration: A list of the block's configuration values. + * - label: The configured label for the block. + * - label_display: The display settings for the label. + * - provider: The module or other provider that provided this block plugin. + * - Block plugin specific settings will also be stored here. + * - content: The content of this block. + * - attributes: array of HTML attributes populated by modules, intended to + * be added to the main container tag of this template. + * - id: A valid HTML ID and guaranteed unique. + * - title_attributes: Same as attributes, except applied to the main title + * tag that appears in the template. + * - content_attributes: Same as attributes, except applied to the main content + * tag that appears in the template. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * + * @see template_preprocess_block() + * + * @ingroup themeable + */ +#} + +{% + set classes = [ + 'block', + 'block-' ~ configuration.provider|clean_class, + 'block-' ~ plugin_id|clean_class, + layout ? 'layout--' ~ layout|clean_class, + ] +%} + +<div{{ attributes.addClass(classes) }}> + {{ title_prefix }} + {% if label %} + <h2{{ title_attributes.addClass('block__title') }}>{{ label }}</h2> + {% endif %} + {{ title_suffix }} + {% block content %} + <div{{ content_attributes.addClass('block__content') }}> + {{ content }} + </div> + {% endblock %} +</div> diff --git a/core/themes/olivero/templates/content/book-node-export-html.html.twig b/core/themes/olivero/templates/content/book-node-export-html.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..94a4c24dc714d510299c202402d6e575b739a126 --- /dev/null +++ b/core/themes/olivero/templates/content/book-node-export-html.html.twig @@ -0,0 +1,20 @@ +{# +/** + * @file + * Theme override for a single node in a printer-friendly outline. + * + * Available variables: + * - node: Fully loaded node. + * - depth: Depth of the current node inside the outline. + * - title: Node title. + * - content: Node content. + * - children: All the child nodes recursively rendered through this file. + * + * @see template_preprocess_book_node_export_html() + */ +#} +<article id="node-{{ node.id }}" class="section-{{ depth }}"> + <h1 class="book-heading">{{ title }}</h1> + {{ content }} + {{ children }} +</article> diff --git a/core/themes/olivero/templates/content/comment.html.twig b/core/themes/olivero/templates/content/comment.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..1c66547215016a78f044933f3ce81ca462c43e16 --- /dev/null +++ b/core/themes/olivero/templates/content/comment.html.twig @@ -0,0 +1,105 @@ +{# +/** + * @file + * Olivero's theme implementation for comments. + * + * Available variables: + * - author: Comment author. Can be a link or plain text. + * - content: The content-related items for the comment display. Use + * {{ content }} to print them all, or print a subset such as + * {{ content.field_example }}. Use the following code to temporarily suppress + * the printing of a given child element: + * @code + * {{ content|without('field_example') }} + * @endcode + * - created: Formatted date and time for when the comment was created. + * Preprocess functions can reformat it by calling DateFormatter::format() + * with the desired parameters on the 'comment.created' variable. + * - changed: Formatted date and time for when the comment was last changed. + * Preprocess functions can reformat it by calling DateFormatter::format() + * with the desired parameters on the 'comment.changed' variable. + * - permalink: Comment permalink. + * - submitted: Submission information created from author and created + * during template_preprocess_comment(). + * - user_picture: The comment author's profile picture. + * - status: Comment status. Possible values are: + * unpublished, published, or preview. + * - title: Comment title, linked to the comment. + * - attributes: HTML attributes for the containing element. + * The attributes.class may contain one or more of the following classes: + * - comment: The current template type; e.g., 'theming hook'. + * - by-anonymous: Comment by an unregistered user. + * - by-{entity-type}-author: Comment by the author of the parent entity, + * eg. by-node-author. + * - preview: When previewing a new or edited comment. + * The following applies only to viewers who are registered users: + * - unpublished: An unpublished comment visible only to administrators. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * - title_attributes: Same as attributes, except applied to the main title + * tag that appears in the template. + * - content_attributes: List of classes for the styling of the comment content. + * - threaded: A flag indicating whether the comments are threaded or not. + * + * These variables are provided to give context about the parent comment (if + * any): + * - parent_comment: Full parent comment entity (if any). + * - parent_author: Equivalent to author for the parent comment. + * - parent_created: Equivalent to created for the parent comment. + * - parent_changed: Equivalent to changed for the parent comment. + * - parent_title: Equivalent to title for the parent comment. + * - parent_permalink: Equivalent to permalink for the parent comment. + * - parent: A text string of parent comment submission information created from + * 'parent_author' and 'parent_created' during template_preprocess_comment(). + * This information is presented to help screen readers follow lengthy + * discussion threads. You can hide this from sighted users using the class + * visually-hidden. + * + * These two variables are provided for context: + * - comment: Full comment object. + * - entity: Entity the comments are attached to. + * + * @see template_preprocess_comment() + */ +#} +{% + set classes = [ + 'comment', + 'js-comment', + status != 'published' ? 'comment--' ~ status, + comment.owner.anonymous ? 'by-anonymous', + author_id and author_id == commented_entity.getOwnerId() ? 'by-' ~ commented_entity.getEntityTypeId() ~ '-author', + ] +%} +{{ attach_library('olivero/comments') }} +<article {{ attributes.addClass(classes).setAttribute('role', 'article') }}> + <div class="comment__picture-wrapper comment-picture"> + <div class="comment__picture comment-picture__image"> + {{ user_picture }} + </div> + </div> + <div class="comment__text-content"> + <footer class="comment__meta"> + <p class="comment__author">{{ author }}</p> + <p class="comment__time">{{ created }}</p> + {# + Indicate the semantic relationship between parent and child comments + for accessibility. The list is difficult to navigate in a screen + reader without this information. + #} + {% if parent %} + <p class="visually-hidden">{{ parent }}</p> + {% endif %} + </footer> + <div{{ content_attributes.addClass('comment__content') }}> + {% if title %} + {{ title_prefix }} + <h3{{ title_attributes }}>{{ title }}</h3> + {{ title_suffix }} + {% endif %} + {{ content }} + </div> + </div> +</article> diff --git a/core/themes/olivero/templates/content/media.html.twig b/core/themes/olivero/templates/content/media.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..27793653d2ad907279c42a1f7c227ca6525dbb93 --- /dev/null +++ b/core/themes/olivero/templates/content/media.html.twig @@ -0,0 +1,28 @@ +{# +/** + * @file + * Theme override to display a media item. + * + * Available variables: + * - name: Name of the media. + * - content: Media content. + * + * @see template_preprocess_media() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + 'media', + 'media--type-' ~ media.bundle()|clean_class, + not media.isPublished() ? 'media--unpublished', + view_mode ? 'media--view-mode-' ~ view_mode|clean_class, + ] +%} +<div{{ attributes.addClass(classes) }}> + {{ title_suffix.contextual_links }} + {% if content %} + {{ content }} + {% endif %} +</div> diff --git a/core/themes/olivero/templates/content/node--article--full.html.twig b/core/themes/olivero/templates/content/node--article--full.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..c08fbb307dd71c428a4b3867d61f9ff8faf7b334 --- /dev/null +++ b/core/themes/olivero/templates/content/node--article--full.html.twig @@ -0,0 +1,5 @@ +{% include '@olivero/content/node.html.twig' with + { + 'layout': 'content-narrow', + } +%} diff --git a/core/themes/olivero/templates/content/node--teaser.html.twig b/core/themes/olivero/templates/content/node--teaser.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..67fc8285a2ebae34599f9fb4bd13838f58b9645f --- /dev/null +++ b/core/themes/olivero/templates/content/node--teaser.html.twig @@ -0,0 +1,105 @@ +{# +/** + * @file + * Olivero's theme implementation to display a node teaser. + * + * Available variables: + * - node: The node entity with limited access to object properties and methods. + * Only method names starting with "get", "has", or "is" and a few common + * methods such as "id", "label", and "bundle" are available. For example: + * - node.getCreatedTime() will return the node creation timestamp. + * - node.hasField('field_example') returns TRUE if the node bundle includes + * field_example. (This does not indicate the presence of a value in this + * field.) + * - node.isPublished() will return whether the node is published or not. + * Calling other methods, such as node.delete(), will result in an exception. + * See \Drupal\node\Entity\Node for a full list of public properties and + * methods for the node object. + * - label: (optional) The title of the node. + * - content: All node items. Use {{ content }} to print them all, + * or print a subset such as {{ content.field_example }}. Use + * {{ content|without('field_example') }} to temporarily suppress the printing + * of a given child element. + * - author_picture: The node author user entity, rendered using the "compact" + * view mode. + * - metadata: Metadata for this node. + * - date: (optional) Themed creation date field. + * - author_name: (optional) Themed author name field. + * - url: Direct URL of the current node. + * - display_submitted: Whether submission information should be displayed. + * - attributes: HTML attributes for the containing element. + * The attributes.class element may contain one or more of the following + * classes: + * - node: The current template type (also known as a "theming hook"). + * - node--type-[type]: The current node type. For example, if the node is an + * "Article" it would result in "node--type-article". Note that the machine + * name will often be in a short form of the human readable label. + * - node--view-mode-[view_mode]: The View Mode of the node; for example, a + * teaser would result in: "node--view-mode-teaser", and + * full: "node--view-mode-full". + * The following are controlled through the node publishing options. + * - node--promoted: Appears on nodes promoted to the front page. + * - node--sticky: Appears on nodes ordered above other non-sticky nodes in + * teaser listings. + * - node--unpublished: Appears on unpublished nodes visible only to site + * admins. + * - title_attributes: Same as attributes, except applied to the main title + * tag that appears in the template. + * - content_attributes: Same as attributes, except applied to the main + * content tag that appears in the template. + * - author_attributes: Same as attributes, except applied to the author of + * the node tag that appears in the template. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * - view_mode: View mode; for example, "teaser" or "full". + * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'. + * - page: Flag for the full page state. Will be true if view_mode is 'full'. + * - readmore: Flag for more state. Will be true if the teaser content of the + * node cannot hold the main body content. + * - logged_in: Flag for authenticated user status. Will be true when the + * current user is a logged-in member. + * - is_admin: Flag for admin user status. Will be true when the current user + * is an administrator. + * + * @see template_preprocess_node() + */ +#} + +{% + set classes = [ + 'node', + 'node--type-' ~ node.bundle|clean_class, + node.isPromoted() ? 'node--promoted', + node.isSticky() ? 'node--sticky', + not node.isPublished() ? 'node--unpublished', + view_mode ? 'node--view-mode-' ~ view_mode|clean_class, +] +%} + +<article{{ attributes.addClass(classes) }}> + <header> + {{ title_prefix }} + {{ title_suffix }} + {% if display_submitted %} + <div class="node__meta"> + <span{{ author_attributes }}> + {{ 'By'|t }} {% apply spaceless %}<span class="node__author">{{ author_name }}</span>{% endapply %}, {{ date }} + </span> + {{ metadata }} + </div> + {% endif %} + {% if label and not page %} + <div class="node__top-wrapper"> + {{ content.field_image }} + <h2{{ title_attributes.addClass('node__title') }}> + <a href="{{ url }}" rel="bookmark">{{ label }}</a> + </h2> + </div> + {% endif %} + </header> + <div{{ content_attributes.addClass('node__content', layout, 'text-content') }}> + {{ content|without('field_image', 'links') }} + </div> +</article> diff --git a/core/themes/olivero/templates/content/node.html.twig b/core/themes/olivero/templates/content/node.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..a17f1eafa84b9929787360353b5333f4572d26f3 --- /dev/null +++ b/core/themes/olivero/templates/content/node.html.twig @@ -0,0 +1,113 @@ +{# +/** + * @file + * Olivero's theme implementation to display a node. + * + * Available variables: + * - node: The node entity with limited access to object properties and methods. + * Only method names starting with "get", "has", or "is" and a few common + * methods such as "id", "label", and "bundle" are available. For example: + * - node.getCreatedTime() will return the node creation timestamp. + * - node.hasField('field_example') returns TRUE if the node bundle includes + * field_example. (This does not indicate the presence of a value in this + * field.) + * - node.isPublished() will return whether the node is published or not. + * Calling other methods, such as node.delete(), will result in an exception. + * See \Drupal\node\Entity\Node for a full list of public properties and + * methods for the node object. + * - label: (optional) The title of the node. + * - content: All node items. Use {{ content }} to print them all, + * or print a subset such as {{ content.field_example }}. Use + * {{ content|without('field_example') }} to temporarily suppress the printing + * of a given child element. + * - author_picture: The node author user entity, rendered using the "compact" + * view mode. + * - metadata: Metadata for this node. + * - date: (optional) Themed creation date field. + * - author_name: (optional) Themed author name field. + * - url: Direct URL of the current node. + * - display_submitted: Whether submission information should be displayed. + * - attributes: HTML attributes for the containing element. + * The attributes.class element may contain one or more of the following + * classes: + * - node: The current template type (also known as a "theming hook"). + * - node--type-[type]: The current node type. For example, if the node is an + * "Article" it would result in "node--type-article". Note that the machine + * name will often be in a short form of the human readable label. + * - node--view-mode-[view_mode]: The View Mode of the node; for example, a + * teaser would result in: "node--view-mode-teaser", and + * full: "node--view-mode-full". + * The following are controlled through the node publishing options. + * - node--promoted: Appears on nodes promoted to the front page. + * - node--sticky: Appears on nodes ordered above other non-sticky nodes in + * teaser listings. + * - node--unpublished: Appears on unpublished nodes visible only to site + * admins. + * - title_attributes: Same as attributes, except applied to the main title + * tag that appears in the template. + * - content_attributes: Same as attributes, except applied to the main + * content tag that appears in the template. + * - author_attributes: Same as attributes, except applied to the author of + * the node tag that appears in the template. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * - view_mode: View mode; for example, "teaser" or "full". + * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'. + * - page: Flag for the full page state. Will be true if view_mode is 'full'. + * - readmore: Flag for more state. Will be true if the teaser content of the + * node cannot hold the main body content. + * - logged_in: Flag for authenticated user status. Will be true when the + * current user is a logged-in member. + * - is_admin: Flag for admin user status. Will be true when the current user + * is an administrator. + * + * @see template_preprocess_node() + */ +#} + +{% set layout = layout ? 'layout--' ~ layout|clean_class %} + +{% + set classes = [ + 'node', + 'node--type-' ~ node.bundle|clean_class, + layout ? 'grid-full', + layout ? 'ie11-autorow', + node.isPromoted() ? 'node--promoted', + node.isSticky() ? 'node--sticky', + not node.isPublished() ? 'node--unpublished', + view_mode ? 'node--view-mode-' ~ view_mode|clean_class, + ] +%} +{{ attach_library('classy/node') }} +<article{{ attributes.addClass(classes) }}> + <header class="{{ layout }}"> + {{ title_prefix }} + {% if label and not page %} + <h2{{ title_attributes.addClass('node__title') }}> + <a href="{{ url }}" rel="bookmark">{{ label }}</a> + </h2> + {% endif %} + {{ title_suffix }} + {% if display_submitted %} + <div class="node__meta"> + {{ author_picture }} + <span{{ author_attributes }}> + {{ 'By'|t }} {% apply spaceless %}{{ author_name }}{% endapply %}, {{ date }} + </span> + {{ metadata }} + </div> + {% endif %} + </header> + <div{{ content_attributes.addClass('node__content', layout) }}> + {# Comments not part of content, so they won't inherit .text-content styles. #} + {{ content|without('comment') }} + </div> + {% if content.comment %} + <div id="comments" class="{{ layout }}"> + {{ content.comment }} + </div> + {% endif %} +</article> diff --git a/core/themes/olivero/templates/content/page-title.html.twig b/core/themes/olivero/templates/content/page-title.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..ae2c1cf27b70a749d4557da648bbf592ce991ac3 --- /dev/null +++ b/core/themes/olivero/templates/content/page-title.html.twig @@ -0,0 +1,26 @@ +{# +/** + * @file + * Olivero's theme implementation for a page title. + * + * Available variables: + * - title_attributes: HTML attributes for the page title element. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title: The page title, for use in the actual content. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + */ +#} +{% + set classes = [ + 'title', + 'page-title', + ] +%} + +{{ title_prefix }} +{% if title %} + <h1{{ title_attributes.addClass(classes) }}>{{ title }}</h1> +{% endif %} +{{ title_suffix }} diff --git a/core/themes/olivero/templates/content/search-result.html.twig b/core/themes/olivero/templates/content/search-result.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..ae2207e3dfacb4f97ce615b2691e30e847ea4873 --- /dev/null +++ b/core/themes/olivero/templates/content/search-result.html.twig @@ -0,0 +1,80 @@ +{# +/** + * @file + * Theme override for displaying a single search result. + * + * This template renders a single search result. The list of results is + * rendered using '#theme' => 'item_list', with suggestions of: + * - item_list__search_results__(plugin_id) + * - item_list__search_results + * + * Available variables: + * - url: URL of the result. + * - title: Title of the result. + * - snippet: A small preview of the result. Does not apply to user searches. + * - info: String of all the meta information ready for print. Does not apply + * to user searches. + * - plugin_id: The machine-readable name of the plugin being executed,such + * as "node_search" or "user_search". + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the main title tag that appears in the template. + * - info_split: Contains same data as info, but split into separate parts. + * - info_split.type: Node type (or item type string supplied by module). + * - info_split.user: Author of the node linked to users profile. Depends + * on permission. + * - info_split.date: Last update of the node. Short formatted. + * - info_split.comment: Number of comments output as "% comments", % + * being the count. (Depends on comment.module). + * items should instead be within info and renamed info.foo, info.bar, etc. + * + * Other variables: + * - title_attributes: HTML attributes for the title. + * - content_attributes: HTML attributes for the content. + * + * Since info_split is keyed, a direct print of the item is possible. + * This array does not apply to user searches so it is recommended to check + * for its existence before printing. The default keys of 'type', 'user' and + * 'date' always exist for node searches. Modules may provide other data. + * @code + * {% if (info_split.comment) %} + * <span class="info-comment"> + * {{ info_split.comment }} + * </span> + * {% endif %} + * @endcode + * + * To check for all available data within info_split, use the code below. + * @code + * <pre> + * {{ dump(info_split) }} + * </pre> + * @endcode + * + * @see template_preprocess_search_result() + */ +#} +{{ attach_library('olivero/search-results') }} +{% if info_split %} + <div class="search-result__meta"> + {% if info_split.user %} + <span> + {{ 'By'|t }} {% apply spaceless %}<span class="search-result__author">{{ info_split.user }}</span>{% endapply %} + </span> + {% endif %} + {% if info_date %} + <span class="search-result__date">, {{ info_date }}</span> + {% endif %} + </div> +{% endif %} +{% if title %} + {{ title_prefix }} + <h3{{ title_attributes.addClass('search-result__title') }}> + <a href="{{ url }}">{{ title }}</a> + </h3> + {{ title_suffix }} +{% endif %} +{% if snippet %} + <div{{ content_attributes.addClass('search-result__snippet', layout, 'text-content') }}>{{ snippet }}</div> +{% endif %} diff --git a/core/themes/olivero/templates/dataset/forum-list.html.twig b/core/themes/olivero/templates/dataset/forum-list.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..2d537faa27dadcbaaf487a450718ab0e3c91952e --- /dev/null +++ b/core/themes/olivero/templates/dataset/forum-list.html.twig @@ -0,0 +1,79 @@ +{# +/** + * @file + * Theme override to display a list of forums and containers. + * + * Available variables: + * - forums: A collection of forums and containers to display. It is keyed to + * the numeric IDs of all child forums and containers. Each forum in forums + * contains: + * - is_container: A flag indicating if the forum can contain other + * forums. Otherwise, the forum can only contain topics. + * - depth: How deep the forum is in the current hierarchy. + * - zebra: 'even' or 'odd', used for row class. + * - icon_class: 'default' or 'new', used for forum icon class. + * - icon_title: Text alternative for the forum icon. + * - name: The name of the forum. + * - link: The URL to link to this forum. + * - description: The description field for the forum, containing: + * - value: The descriptive text for the forum. + * - new_topics: A flag indicating if the forum contains unread posts. + * - new_url: A URL to the forum's unread posts. + * - new_text: Text for the above URL, which tells how many new posts. + * - old_topics: A count of posts that have already been read. + * - num_posts: The total number of posts in the forum. + * - last_reply: Text representing the last time a forum was posted or + * commented in. + * - forum_id: Forum ID for the current forum. Parent to all items within the + * forums array. + * + * @see template_preprocess_forum_list() + */ +#} +<table id="forum-{{ forum_id }}"> + <thead> + <tr> + <th>{{ 'Forum'|t }}</th> + <th>{{ 'Topics'|t }}</th> + <th>{{ 'Posts'|t }}</th> + <th>{{ 'Last post'|t }}</th> + </tr> + </thead> + <tbody> + {% for child_id, forum in forums %} + <tr id="forum-list-{{ child_id }}" class="{{ forum.zebra }}"> + <td {% if forum.is_container == true -%} + colspan="4" class="container" + {%- else -%} + class="forum-list__forum" + {%- endif -%}> + {# + Enclose the contents of this cell with X divs, where X is the + depth this forum resides at. This will allow us to use CSS + left-margin for indenting. + #} + {% if forum.depth > 0 %}{% for i in 1..forum.depth %}<div class="indented">{% endfor %}{% endif %} + <div class="forum__icon forum-status-{{ forum.icon_class }}" title="{{ forum.icon_title }}"> + <span class="visually-hidden">{{ forum.icon_title }}</span> + </div> + <div class="forum__name"><a href="{{ forum.link }} " class="forum__name--link">{{ forum.label }}</a></div> + {% if forum.description.value %} + <div class="forum__description">{{ forum.description.value }}</div> + {% endif %} + {% if forum.depth > 0 %}{% for i in 1..forum.depth %}</div>{% endfor %}{% endif %} + </td> + {% if forum.is_container == false %} + <td class="forum__topics"> + {{ forum.num_topics }} + {% if forum.new_topics == true %} + <br /> + <a href="{{ forum.new_url }}">{{ forum.new_text }}</a> + {% endif %} + </td> + <td class="forum__posts">{{ forum.num_posts }}</td> + <td class="forum__last-reply">{{ forum.last_reply }}</td> + {% endif %} + </tr> + {% endfor %} + </tbody> +</table> diff --git a/core/themes/olivero/templates/dataset/forums.html.twig b/core/themes/olivero/templates/dataset/forums.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..457f4678088dca14db7c19ed01cdf94b41b84f7f --- /dev/null +++ b/core/themes/olivero/templates/dataset/forums.html.twig @@ -0,0 +1,24 @@ +{# +/** + * @file + * Theme override to display a forum. + * + * May contain forum containers as well as forum topics. + * + * Available variables: + * - forums: The forums to display (as processed by forum-list.html.twig). + * - topics: The topics to display. + * - topics_pager: The topics pager. + * - forums_defined: A flag to indicate that the forums are configured. + * + * @see template_preprocess_forums() + */ +#} +{{ attach_library('olivero/forum') }} +{% if forums_defined %} + <div class="forum"> + {{ forums }} + {{ topics }} + {{ topics_pager }} + </div> +{% endif %} diff --git a/core/themes/olivero/templates/dataset/item-list--search-results.html.twig b/core/themes/olivero/templates/dataset/item-list--search-results.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..6bd6441738d6898161f89ac43a11527d75572051 --- /dev/null +++ b/core/themes/olivero/templates/dataset/item-list--search-results.html.twig @@ -0,0 +1,34 @@ +{% extends "item-list.html.twig" %} +{# +/** + * @file + * Theme override for an item list of search results. + * + * Available variables: + * - items: A list of items. Each item contains: + * - attributes: HTML attributes to be applied to each list item. + * - value: The content of the list element. + * - title: The title of the list. + * - list_type: The tag for list element ("ul" or "ol"). + * - attributes: HTML attributes to be applied to the list. + * - empty: A message to display when there are no items. Allowed value is a + * string or render array. + * - context: An list of contextual data associated with the list. For search + * results, the following data is set: + * - plugin: The search plugin ID, for example "node_search". + * + * @see template_preprocess_item_list() + */ +#} +{% + set classes = [ + 'search-results', + context.plugin ~ '-results', +] +%} +{% + set listClasses = [ + 'search-results__item', +] +%} +{% set attributes = attributes.addClass(classes) %} diff --git a/core/themes/olivero/templates/dataset/item-list.html.twig b/core/themes/olivero/templates/dataset/item-list.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..7c7a6e365bfe70196380e6f289869de2437a0eba --- /dev/null +++ b/core/themes/olivero/templates/dataset/item-list.html.twig @@ -0,0 +1,38 @@ +{# +/** + * @file + * Theme override for an item list. + * + * Available variables: + * - items: A list of items. Each item contains: + * - attributes: HTML attributes to be applied to each list item. + * - value: The content of the list element. + * - title: The title of the list. + * - list_type: The tag for list element ("ul" or "ol"). + * - wrapper_attributes: HTML attributes to be applied to the list wrapper. + * - attributes: HTML attributes to be applied to the list. + * - empty: A message to display when there are no items. Allowed value is a + * string or render array. + * - context: A list of contextual data associated with the list. May contain: + * - list_style: The custom list style. + * + * @see template_preprocess_item_list() + */ +#} +{% if context.list_style %} + {%- set attributes = attributes.addClass('item-list__' ~ context.list_style) %} +{% endif %} +{% if items or empty %} + {%- if title is not empty -%} + <h3>{{ title }}</h3> + {%- endif -%} + {%- if items -%} + <{{ list_type }}{{ attributes }}> + {%- for item in items -%} + <li{{ item.attributes.addClass(listClasses) }}>{{ item.value }}</li> + {%- endfor -%} + </{{ list_type }}> + {%- else -%} + {{- empty -}} + {%- endif -%} +{%- endif %} diff --git a/core/themes/olivero/templates/datetime-form.html.twig b/core/themes/olivero/templates/datetime-form.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..9b56a9160e76c482096e08143b3822dc3e5a5065 --- /dev/null +++ b/core/themes/olivero/templates/datetime-form.html.twig @@ -0,0 +1,15 @@ +{# +/** + * @file + * Theme override of a datetime form element. + * + * Available variables: + * - attributes: HTML attributes for the datetime form element. + * - content: The datelist form element to be output. + * + * @see template_preprocess_datetime_form() + */ +#} +<div{{ attributes.addClass('form-items-inline') }}> + {{ content }} +</div> diff --git a/core/themes/olivero/templates/datetime-wrapper.html.twig b/core/themes/olivero/templates/datetime-wrapper.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..e9230077ccef3ea7eb74fa69e0658fea064c3986 --- /dev/null +++ b/core/themes/olivero/templates/datetime-wrapper.html.twig @@ -0,0 +1,33 @@ +{# +/** + * @file + * Theme override of a datetime form wrapper. + * + * @todo Refactor when https://www.drupal.org/node/3010558 is fixed. + * + * @see template_preprocess_form_element() + */ +#} +{% + set title_classes = [ + 'form-item__label', + required ? 'js-form-required', + required ? 'form-required', + ] +%} +<div class="form-item form-datetime-wrapper"> + {% if title %} + <h4{{ title_attributes.addClass(title_classes) }}>{{ title }}</h4> + {% endif %} + {{ content }} + {% if errors %} + <div class="form-item__error-message"> + {{ errors }} + </div> + {% endif %} + {% if description %} + <div{{ description_attributes.addClass('form-item__description') }}> + {{ description }} + </div> + {% endif %} +</div> diff --git a/core/themes/olivero/templates/field/field--comment.html.twig b/core/themes/olivero/templates/field/field--comment.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..548be76260e48ad6f2cea2cfefdfcf77cdecc82d --- /dev/null +++ b/core/themes/olivero/templates/field/field--comment.html.twig @@ -0,0 +1,57 @@ +{# +/** + * @file + * Default theme override for comment fields. + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - label_hidden: Whether to show the field label or not. + * - title_attributes: HTML attributes for the title. + * - label: The label for the field. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the main title tag that appears in the template. + * - title_suffix: Additional title output populated by modules, intended to + * be displayed after the main title tag that appears in the template. + * - comments: List of comments rendered through comment.html.twig. + * - comment_count: Count of comments rendered through comment.html.twig. + * - content_attributes: HTML attributes for the form title. + * - comment_form: The 'Add new comment' form. + * - comment_display_mode: Is the comments are threaded. + * - comment_type: The comment type bundle ID for the comment field. + * - entity_type: The entity type to which the field belongs. + * - field_name: The name of the field. + * - field_type: The type of the field. + * - label_display: The display settings for the label. + * + * @see template_preprocess_field() + * @see comment_preprocess_field() + */ +#} + +{{ attach_library('olivero/comments') }} +<section{{ attributes.addClass('comments') }}> + + {% if comments and not label_hidden %} + {{ title_prefix }} + <h2{{ title_attributes.addClass('comments__title') }}>{{ label }} <span class="comments__count">{{ comment_count }}</span></h2> + {{ title_suffix }} + {% endif %} + + {% if comment_form %} + <div class="add-comment"> + {% if user_picture %} + <div class="add-comment__picture-wrapper comment-picture"> + <div class="add-comment__picture comment-picture__image"> + {{ user_picture }} + </div> + </div> + {% endif %} + <div class="add-comment__form"> + {{ comment_form }} + </div> + </div> + {% endif %} + + {{ comments }} + +</section> diff --git a/core/themes/olivero/templates/field/field--node--field-tags.html.twig b/core/themes/olivero/templates/field/field--node--field-tags.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..bf867a3dfbded56353ed1c577567ab18b4bbd88c --- /dev/null +++ b/core/themes/olivero/templates/field/field--node--field-tags.html.twig @@ -0,0 +1,50 @@ +{# +/** + * @file + * Olivero theme override for tags field. + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - label_hidden: Whether to show the field label or not. + * - title_attributes: HTML attributes for the label. + * - label: The label for the field. + * - content_attributes: HTML attributes for the content. + * - items: List of all the field items. Each item contains: + * - attributes: List of HTML attributes for each item. + * - content: The field item's content. + * - entity_type: The entity type to which the field belongs. + * - field_name: The name of the field. + * - field_type: The type of the field. + * - label_display: The display settings for the label. + * + * @see template_preprocess_field() + */ +#} +{% + set classes = [ + 'field', + 'field--name-' ~ field_name|clean_class, + 'field--type-' ~ field_type|clean_class, + 'field--label-' ~ label_display, + 'field--tags', + ] +%} +{% + set title_classes = [ + 'field__label', + 'field--tags__label', + label_display == 'visually_hidden' ? 'visually-hidden', + ] +%} + +{{ attach_library('olivero/tags') }} +<div{{ attributes.addClass(classes) }}> + {% if not label_hidden %} + <h3{{ title_attributes.addClass(title_classes) }}>{{ label }}</h3> + {% endif %} + <ul class="links field__items field--tags__items"> + {% for item in items %} + <li{{ item.attributes.addClass('field--tags__item') }}>{{ item.content }}</li> + {% endfor %} + </ul> +</div> diff --git a/core/themes/olivero/templates/field/field.html.twig b/core/themes/olivero/templates/field/field.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..1cfbd651ce16042e853f73c243590019058c4573 --- /dev/null +++ b/core/themes/olivero/templates/field/field.html.twig @@ -0,0 +1,81 @@ +{# +/** + * @file + * Theme override for a field. + * + * To override output, copy the "field.html.twig" from the templates directory + * to your theme's directory and customize it, just like customizing other + * Drupal templates such as page.html.twig or node.html.twig. + * + * Instead of overriding the theming for all fields, you can also just override + * theming for a subset of fields using + * @link themeable Theme hook suggestions. @endlink For example, + * here are some theme hook suggestions that can be used for a field_foo field + * on an article node type: + * - field--node--field-foo--article.html.twig + * - field--node--field-foo.html.twig + * - field--node--article.html.twig + * - field--field-foo.html.twig + * - field--text-with-summary.html.twig + * - field.html.twig + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - label_hidden: Whether to show the field label or not. + * - title_attributes: HTML attributes for the title. + * - label: The label for the field. + * - multiple: TRUE if a field can contain multiple items. + * - items: List of all the field items. Each item contains: + * - attributes: List of HTML attributes for each item. + * - content: The field item's content. + * - entity_type: The entity type to which the field belongs. + * - field_name: The name of the field. + * - field_type: The type of the field. + * - label_display: The display settings for the label. + * + * + * @see template_preprocess_field() + */ +#} +{% + set classes = [ + 'field', + 'field--name-' ~ field_name|clean_class, + 'field--type-' ~ field_type|clean_class, + 'field--label-' ~ label_display, + label_display == 'inline' ? 'clearfix', + ] +%} +{% + set title_classes = [ + 'field__label', + label_display == 'visually_hidden' ? 'visually-hidden', + ] +%} + +{% if label_hidden %} + {% if multiple %} + <div{{ attributes.addClass(classes, 'field__items') }}> + {% for item in items %} + <div{{ item.attributes.addClass('field__item') }}>{{ item.content }}</div> + {% endfor %} + </div> + {% else %} + {% for item in items %} + <div{{ attributes.addClass(classes, 'field__item') }}>{{ item.content }}</div> + {% endfor %} + {% endif %} +{% else %} + <div{{ attributes.addClass(classes) }}> + <div{{ title_attributes.addClass(title_classes) }}>{{ label }}</div> + {% if multiple %} + <div class="field__items"> + {% endif %} + {% for item in items %} + <div{{ item.attributes.addClass('field__item') }}>{{ item.content }}</div> + {% endfor %} + {% if multiple %} + </div> + {% endif %} + </div> +{% endif %} diff --git a/core/themes/olivero/templates/filter/filter-guidelines.html.twig b/core/themes/olivero/templates/filter/filter-guidelines.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..213b79e19e20057fcad025fdc5dbd7884138f7da --- /dev/null +++ b/core/themes/olivero/templates/filter/filter-guidelines.html.twig @@ -0,0 +1,30 @@ +{# +/** + * @file + * Theme override for guidelines for a text format. + * + * Available variables: + * - format: Contains information about the current text format, including the + * following: + * - name: The name of the text format, potentially unsafe and needs to be + * escaped. + * - format: The machine name of the text format, e.g. 'basic_html'. + * - attributes: HTML attributes for the containing element. + * - tips: Descriptions and a CSS ID in the form of 'module-name/filter-id' + * (only used when 'long' is TRUE) for each filter in one or more text + * formats. + * + * @see template_preprocess_filter_tips() + */ +#} +{% + set classes = [ + 'filter-guidelines__item', + 'filter-guidelines__item--' ~ format.id|clean_class, + ] +%} + +<div{{ attributes.addClass(classes) }}> + <h4 class="label">{{ format.label }}</h4> + {{ tips }} +</div> diff --git a/core/themes/olivero/templates/filter/filter-tips.html.twig b/core/themes/olivero/templates/filter/filter-tips.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..665b56798eedfce5cdfb53c0b9abe30ba8d0ec81 --- /dev/null +++ b/core/themes/olivero/templates/filter/filter-tips.html.twig @@ -0,0 +1,66 @@ +{# +/** + * @file + * Theme override for a set of filter tips. + * + * Available variables: + * - tips: Descriptions and a CSS ID in the form of 'module-name/filter-id' + * (only used when 'long' is TRUE) for each filter in one or more text + * formats. + * - long: A flag indicating whether the passed-in filter tips contain extended + * explanations, i.e. intended to be output on the path 'filter/tips' + * (TRUE), or are in a short format, i.e. suitable to be displayed below a + * form element. Defaults to FALSE. + * - multiple: A flag indicating there is more than one filter tip. + * + * @see template_preprocess_filter_tips() + * @see claro_preprocess_filter_tips() + */ +#} +{% if multiple %} + <h2>{{ 'Text Formats'|t }}</h2> +{% endif %} + +{% if tips|length %} + {% if multiple %} + <div class="compose-tips"> + {% endif %} + + {% for name, tip in tips %} + {% if multiple %} + {% + set tip_classes = [ + 'compose-tips__item', + 'compose-tips__item--name-' ~ name|clean_class, + ] + %} + <div{{ tip.attributes.addClass(tip_classes) }}> + {% endif %} + {% if multiple or long %} + <h3>{{ tip.name }}</h3> + {% endif %} + + {% if tip.list|length %} + <ul class="filter-tips {{ long ? 'filter-tips--long' : 'filter-tips--short'}}"> + {% for item in tip.list %} + {% + set item_classes = [ + 'filter-tips__item', + long ? 'filter-tips__item--long' : 'filter-tips__item--short', + long ? 'filter-tips__item--id-' ~ item.id|clean_class, + ] + %} + <li{{ item.attributes.addClass(item_classes) }}>{{ item.tip }}</li> + {% endfor %} + </ul> + {% endif %} + + {% if multiple %} + </div> + {% endif %} + {% endfor %} + + {% if multiple %} + </div> + {% endif %} +{% endif %} diff --git a/core/themes/olivero/templates/form--search-block-form.html.twig b/core/themes/olivero/templates/form--search-block-form.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..68847fc0c8fc7b2186b118621bd2a1ff6147ece1 --- /dev/null +++ b/core/themes/olivero/templates/form--search-block-form.html.twig @@ -0,0 +1,15 @@ +{# +/** + * @file + * Default theme implementation for a 'form' element. + * + * Available variables: + * - attributes: A list of HTML attributes for the wrapper element. + * - children: The child elements of the form. + * + * @see template_preprocess_form() + */ +#} +<form{{ attributes.addClass('search-form', 'search-block-form') }}> + {{ children }} +</form> diff --git a/core/themes/olivero/templates/form/details.html.twig b/core/themes/olivero/templates/form/details.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..c526d63e6ebe2bdeab610cbeef90ba37777e3491 --- /dev/null +++ b/core/themes/olivero/templates/form/details.html.twig @@ -0,0 +1,67 @@ +{# +/** + * @file + * Theme override for a details element. + * + * Available variables + * - attributes: A list of HTML attributes for the details element. + * - errors: (optional) Any errors for this details element, may not be set. + * - title: (optional) The title of the element, may not be set. + * - summary_attributes: A list of HTML attributes for the summary element. + * - description: (optional) The description of the element, may not be set. + * - children: (optional) The children of the element, may not be set. + * - value: (optional) The value of the element, may not be set. + * + * @see template_preprocess_details() + * @see olivero_preprocess_details() + */ +#} +{# + Prefix 'details' class to avoid collision with Modernizr. + + @todo Remove prefix after https://www.drupal.org/node/2981732 has been solved. +#} +{% + set classes = [ + 'olivero-details', + ] +%} +{% + set content_wrapper_classes = [ + 'olivero-details__wrapper', + 'details-wrapper', + ] +%} +<details{{ attributes.addClass(classes) }}> + {%- if title -%} + {% + set summary_classes = [ + 'olivero-details__summary', + required ? 'js-form-required', + required ? 'form-required', + ] + %} + <summary{{ summary_attributes.addClass(summary_classes) }}> + {{- title -}} + {%- if required -%} + <span class="required-mark"></span> + {%- endif -%} + </summary> + {%- endif -%} + <div{{ content_attributes.addClass(content_wrapper_classes) }}> + {% if errors %} + <div class="form-item form-item--error-message"> + {{ errors }} + </div> + {% endif %} + {%- if description -%} + <div class="olivero-details__description">{{ description }}</div> + {%- endif -%} + {%- if children -%} + {{ children }} + {%- endif -%} + {%- if value -%} + {{ value }} + {%- endif -%} + </div> +</details> diff --git a/core/themes/olivero/templates/form/field-multiple-value-form.html.twig b/core/themes/olivero/templates/form/field-multiple-value-form.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..e9adeefb0fdd3070919533aa08a124ceaf5db6e8 --- /dev/null +++ b/core/themes/olivero/templates/form/field-multiple-value-form.html.twig @@ -0,0 +1,50 @@ +{# +/** + * @file + * Default theme implementation for an individual form element. + * + * Available variables for all fields: + * - multiple: Whether there are multiple instances of the field. + * + * Available variables for single cardinality fields: + * - elements: Form elements to be rendered. + * + * Available variables when there are multiple fields. + * - table: Table of field items. + * - description: The description element containing the following properties: + * - content: The description content of the form element. + * - attributes: HTML attributes to apply to the description container. + * - button: "Add another item" button. + * + * @see template_preprocess_field_multiple_value_form() + * + * @ingroup themeable + */ +#} +{% if multiple %} + {% + set classes = [ + 'js-form-item', + 'form-item' + ] + %} + {% + set description_classes = [ + 'form-item__description', + disabled ? 'is-disabled', + ] + %} + <div{{ attributes.addClass(classes) }}> + {{ table }} + {% if description.content %} + <div{{ description.attributes.addClass(description_classes) }}>{{ description.content }}</div> + {% endif %} + {% if button %} + <div class="form-actions">{{ button }}</div> + {% endif %} + </div> +{% else %} + {% for element in elements %} + {{ element }} + {% endfor %} +{% endif %} diff --git a/core/themes/olivero/templates/form/fieldset.html.twig b/core/themes/olivero/templates/form/fieldset.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..4cd7c6aab119dc4f8404562d31f1113405a24203 --- /dev/null +++ b/core/themes/olivero/templates/form/fieldset.html.twig @@ -0,0 +1,81 @@ +{# +/** + * @file + * Theme override for a fieldset element and its children. + * + * @see template_preprocess_fieldset() + * @see olivero_preprocess_fieldset() + */ +#} +{% + set classes = [ + 'fieldset', + attributes.hasClass('fieldgroup') ? 'fieldset--group', + 'js-form-item', + 'form-item', + 'js-form-wrapper', + 'form-wrapper', + ] +%} +{% + set wrapper_classes = [ + 'fieldset__wrapper', + attributes.hasClass('fieldgroup') ? 'fieldset__wrapper--group', + ] +%} +{% + set legend_span_classes = [ + 'fieldset__label', + attributes.hasClass('fieldgroup') ? 'fieldset__label--group', + required ? 'js-form-required', + required ? 'form-required', + ] +%} +{% + set legend_classes = [ + 'fieldset__legend', + attributes.hasClass('fieldgroup') and not attributes.hasClass('form-composite') ? 'fieldset__legend--group', + attributes.hasClass('form-composite') ? 'fieldset__legend--composite', + title_display == 'invisible' ? 'fieldset__legend--invisible' : 'fieldset__legend--visible', + ] +%} +{% + set description_classes = [ + 'fieldset__description', + ] +%} + +<fieldset{{ attributes.addClass(classes) }}> + {# Always wrap fieldset legends in a <span> for CSS positioning. #} + {% if legend.title %} + <legend{{ legend.attributes.addClass(legend_classes) }}> + <span{{ legend_span.attributes.addClass(legend_span_classes) }}>{{ legend.title }}</span> + </legend> + {% endif %} + + <div{{ content_attributes.addClass(wrapper_classes) }}> + {% if inline_items %} + <div class="container-inline"> + {% endif %} + + {% if prefix %} + <span class="fieldset__prefix">{{ prefix }}</span> + {% endif %} + {{ children }} + {% if suffix %} + <span class="fieldset__suffix">{{ suffix }}</span> + {% endif %} + {% if errors %} + <div class="fieldset__error-message"> + {{ errors }} + </div> + {% endif %} + {% if description.content %} + <div{{ description.attributes.addClass(description_classes) }}>{{ description.content }}</div> + {% endif %} + + {% if inline_items %} + </div> + {% endif %} + </div> +</fieldset> diff --git a/core/themes/olivero/templates/form/input--submit--header-search.html.twig b/core/themes/olivero/templates/form/input--submit--header-search.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..4d14c0d2874e75b402cf87e28380458fe87c5b72 --- /dev/null +++ b/core/themes/olivero/templates/form/input--submit--header-search.html.twig @@ -0,0 +1,17 @@ +{# +/** + * @file + * Theme override for the search form submit button. + * + * Available variables: + * - attributes: A list of HTML attributes for the input element. + * - children: Optional additional rendered elements. + * + * @see template_preprocess_input() + */ +#} +<button{{ attributes }}> + <span class="icon--search"></span> + <span class="visually-hidden">{{ attributes.value }}</span> +</button> +{{ children }} diff --git a/core/themes/olivero/templates/includes/get-started.html.twig b/core/themes/olivero/templates/includes/get-started.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..8bc42405da1e4f0ffbf1cb001e395d1109ba3f7c --- /dev/null +++ b/core/themes/olivero/templates/includes/get-started.html.twig @@ -0,0 +1,45 @@ +{# +/** + * @file + * Olivero's theme Get Started section. + * + * This section is enabled when no front page content has been populated. + * + * TODO: + * - Move this markup into Drupal's core Frontpage Views. + * - Translate/localize this page for different languages. + */ +#} + +{% set drupal_community = 'https://www.drupal.org/community' %} +{% set drupal_values = 'https://www.drupal.org/about/values-and-principles' %} +{% set drupal_user_guide = 'https://www.drupal.org/docs/user_guide/en/index.html' %} +{% set create_content = '/node/add' %} +{% set drupal_extend = 'https://www.drupal.org/docs/8/extending-drupal-8' %} +{% set drupal_global_training_days = 'https://groups.drupal.org/global-training-days' %} +{% set drupal_events = 'https://www.drupal.org/community/events' %} +{% set drupal_slack = 'https://www.drupal.org/slack' %} +{% set drupal_chat = 'https://www.drupal.org/drupalchat' %} +{% set drupal_answers = 'https://drupal.stackexchange.com/' %} + +<div class="text-content"> + <p>{% trans %}<em>You haven’t created any frontpage content yet.</em>{% endtrans %}</p> + <h2>{% trans %}Congratulations and welcome to the Drupal community!{% endtrans %}</h2> + <p>{% trans %}Drupal is an open source platform for building amazing digital experiences. It’s made, used, taught, documented, and marketed by the <a href="{{ drupal_community }}">Drupal community</a>. Our community is made up of people from around the world with a shared set of <a href="{{ drupal_values }}">values</a>, collaborating together in a respectful manner. As we like to say:{% endtrans %}</p> + <blockquote>{% trans %}Come for the code, stay for the community.{% endtrans %}</blockquote> + <h2>{% trans %}Get Started{% endtrans %}</h2> + <p>{% trans %}There are a few ways to get started with Drupal:{% endtrans %}</p> + <ol> + <li>{% trans %}<a href="{{ drupal_user_guide }}">User Guide:</a> Includes installing, administering, site building, and maintaining the content of a Drupal website.{% endtrans %}</li> + <li>{% trans %}<a href="{{ create_content }}">Create Content:</a> Want to get right to work? Start adding content. <strong>Note:</strong> the information on this page will go away once you add content to your site. Read on and bookmark resources of interest.{% endtrans %}</li> + <li>{% trans %}<a href="{{ drupal_extend }}">Extend Drupal:</a> Drupal’s core software can be extended and customized in remarkable ways. Install additional functionality and change the look of your site using addons contributed by our community.{% endtrans %}</li> + </ol> + <h2>{% trans %}Next Steps{% endtrans %}</h2> + <p>{% trans %}Bookmark these links to our active Drupal community groups and support resources.{% endtrans %}</p> + <ul> + <li>{% trans %}<a href="{{ drupal_global_training_days }}">Global Training Days:</a> Helpful information for evaluating Drupal as a framework and as a career path. Taught in your local language.{% endtrans %}</li> + <li>{% trans %}<a href="{{ drupal_events }}">Upcoming Events:</a> Learn and connect with others at conferences and events held around the world.{% endtrans %}</li> + <li>{% trans %}<a href="{{ drupal_community }}">Community Page:</a> List of key Drupal community groups with their own content.{% endtrans %}</li> + <li>{% trans %}Get support and chat with the Drupal community on <a href="{{ drupal_slack }}">Slack</a> or <a href="{{ drupal_chat }}">DrupalChat</a>. When you’re looking for a solution to a problem, go to <a href="{{ drupal_answers }}">Drupal Answers on Stack Exchange</a>.{% endtrans %}</li> + </ul> +</div> diff --git a/core/themes/olivero/templates/includes/preload.twig b/core/themes/olivero/templates/includes/preload.twig new file mode 100644 index 0000000000000000000000000000000000000000..b3d5811d8291e745d95b4b57210ba68ed93f5249 --- /dev/null +++ b/core/themes/olivero/templates/includes/preload.twig @@ -0,0 +1,7 @@ +{# + Preload the fonts for the headings and normal body copy (non bold and non italic). + #} + +<link rel="preload" href="/{{ olivero_path }}/fonts/metropolis/Metropolis-SemiBold.woff2" as="font" type="font/woff2" crossorigin> +<link rel="preload" href="/{{ olivero_path }}/fonts/metropolis/Metropolis-Bold.woff2" as="font" type="font/woff2" crossorigin> +<link rel="preload" href="/{{ olivero_path }}/fonts/lora/lora-v14-latin-regular.woff2" as="font" type="font/woff2" crossorigin> diff --git a/core/themes/olivero/templates/layout/book-export-html.html.twig b/core/themes/olivero/templates/layout/book-export-html.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..b7525f7efa88263beed101cbe8e0dcd4377ab5a8 --- /dev/null +++ b/core/themes/olivero/templates/layout/book-export-html.html.twig @@ -0,0 +1,45 @@ +{# +/** + * @file + * Theme override for printed version of book outline. + * + * Available variables: + * - title: Top level node title. + * - head: Header tags. + * - language: Language object. + * - language_rtl: A flag indicating whether the current display language is a + * right to left language. + * - base_url: URL to the home page. + * - contents: Nodes within the current outline rendered through + * book-node-export-html.html.twig. + * + * @see template_preprocess_book_export_html() + */ +#} +<!DOCTYPE html> +<html{{ html_attributes }}> + <head> + <title>{{ title }}</title> + {{ page.head }} + <base href="{{ base_url }}" /> + <link type="text/css" rel="stylesheet" href="misc/print.css" /> + </head> + <body> + {# + The given node is embedded to its absolute depth in a top level section. + For example, a child node with depth 2 in the hierarchy is contained in + (otherwise empty) div elements corresponding to depth 0 and depth 1. This + is intended to support WYSIWYG output - e.g., level 3 sections always look + like level 3 sections, no matter their depth relative to the node selected + to be exported as printer-friendly HTML. + #} + + {% if depth > 1 %}{% for i in 1..depth-1 %} + <div class="section-{{ i }}"> + {% endfor %}{% endif %} + {{ contents }} + {% if depth > 1 %}{% for i in 1..depth-1 %} + </div> + {% endfor %}{% endif %} + </body> +</html> diff --git a/core/themes/olivero/templates/layout/html.html.twig b/core/themes/olivero/templates/layout/html.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..64e719c6518d18d424ffeb53db045f76208ad301 --- /dev/null +++ b/core/themes/olivero/templates/layout/html.html.twig @@ -0,0 +1,57 @@ +{# +/** + * @file + * Theme override for the basic structure of a single Drupal page. + * + * Variables: + * - logged_in: A flag indicating if user is logged in. + * - root_path: The root path of the current page (e.g., node, admin, user). + * - node_type: The content type for the current node, if the page is a node. + * - head_title: List of text elements that make up the head_title variable. + * May contain one or more of the following: + * - title: The title of the page. + * - name: The name of the site. + * - slogan: The slogan of the site. + * - page_top: Initial rendered markup. This should be printed before 'page'. + * - page: The rendered page markup. + * - page_bottom: Closing rendered markup. This variable should be printed after + * 'page'. + * - db_offline: A flag indicating if the database is offline. + * - placeholder_token: The token for generating head, css, js and js-bottom + * placeholders. + * + * @see template_preprocess_html() + */ +#} +{% + set body_classes = [ + logged_in ? 'user-logged-in', + not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class, + node_type ? 'page-node-type-' ~ node_type|clean_class, + db_offline ? 'db-offline', + ] +%} +<!DOCTYPE html> +<html{{ html_attributes }}> + <head> + <head-placeholder token="{{ placeholder_token }}"> + <title>{{ head_title|safe_join(' | ') }}</title> + <css-placeholder token="{{ placeholder_token }}"> + <js-placeholder token="{{ placeholder_token }}"> + {% include '@olivero/includes/preload.twig' %} + {{ noscript_styles }} + </head> + <body{{ attributes.addClass(body_classes) }}> + {# + Keyboard navigation/accessibility link to main content section in + page.html.twig. + #} + <a href="#main-content" class="visually-hidden focusable skip-link"> + {{ 'Skip to main content'|t }} + </a> + {{ page_top }} + {{ page }} + {{ page_bottom }} + <js-bottom-placeholder token="{{ placeholder_token }}"> + </body> +</html> diff --git a/core/themes/olivero/templates/layout/page.html.twig b/core/themes/olivero/templates/layout/page.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..f850022749c3f6fe4f152c6037c21032a8fc941d --- /dev/null +++ b/core/themes/olivero/templates/layout/page.html.twig @@ -0,0 +1,134 @@ +{# +/** + * @file + * Olivero's theme implementation to display a single page. + * + * The doctype, html, head and body tags are not in this template. Instead they + * can be found in the html.html.twig template normally located in the + * core/modules/system directory. + * + * Available variables: + * + * General utility variables: + * - base_path: The base URL path of the Drupal installation. Will usually be + * "/" unless you have installed Drupal in a sub-directory. + * - is_front: A flag indicating if the current page is the front page. + * - logged_in: A flag indicating if the user is registered and signed in. + * - is_admin: A flag indicating if the user has permission to access + * administration pages. + * + * Site identity: + * - front_page: The URL of the front page. Use this instead of base_path when + * linking to the front page. This includes the language domain or prefix. + * + * Page content (in order of occurrence in the default page.html.twig): + * - node: Fully loaded node, if there is an automatically-loaded node + * associated with the page and the node ID is the second argument in the + * page's path (e.g. node/12345 and node/12345/revisions, but not + * comment/reply/12345). + * + * Regions: + * - page.header: Items for the header region. + * - page.highlighted: Items for the highlighted region. + * - page.primary_menu: Items for the primary menu region. + * - page.secondary_menu: Items for the secondary menu region. + * - page.content: The main content of the current page. + * - page.sidebar: Items for the first sidebar. + * - page.featured_bottom_first: Items for the first featured bottom region. + * - page.featured_bottom_second: Items for the second featured bottom region. + * - page.footer_first: Items for the first footer column. + * - page.footer_second: Items for the second footer column. + * - page.breadcrumb: Items for the breadcrumb region. + * - page.social: Items for the social region. + * + * @see template_preprocess_page() + * @see html.html.twig + */ +#} + +<div id="page-wrapper" class="page-wrapper"> + <div id="page"> + + {% if page.header or page.primary_menu or page.secondary_menu %} + <header id="header" class="header site-header" role="banner"> + + {# Gets fixed by JS at wide widths. #} + <div class="site-header__fixable fixable"> + <div class="header__left"> + <button class="nav-primary__button" aria-controls="site-header__inner" aria-label="Toggle navigation" aria-expanded="false"> + <span class="nav-primary__icon"> + <span></span> + <span></span> + <span></span> + </span> + </button> + </div> + + {# Needs to extend full width so box shadow will also extend. #} + <div id="site-header__inner" class="site-header__inner"> + <div class="container site-header__inner__container"> + + {{ page.header }} + + {% if page.primary_menu or page.secondary_menu %} + <div class="mobile-buttons"> + <button class="mobile-nav-button" aria-label="{{ 'Toggle Main Menu'|t }}" aria-controls="header-nav" aria-expanded="false"> + <span class="mobile-nav-button__label">{{ 'Menu'|t }}</span> + <span class="mobile-nav-button__icon"></span> + </button> + </div> + + <div id="header-nav" class="header-nav" data-menu-open="false"> + + {{ page.primary_menu }} + + {% if page.secondary_menu %} + <div class="secondary-nav__wrapper"> + {{ page.secondary_menu }} + </div> + {% endif %} + </div> + {% endif %} + </div> + </div> + </div> + </header> + {% endif %} + + <div id="main-wrapper" class="layout-main-wrapper layout-container"> + <div id="main" class="layout-main"> + <main id="content" class="main-content " role="main"> + <a id="main-content" tabindex="-1"></a> + {{ page.hero }} + <div class="main-content__container container"> + {{ page.highlighted }} + {{ page.breadcrumb }} + {{ page.content_above }} + {% if page.sidebar %} + <div class="sidebar-grid grid-full"> + {{ page.content }} + {{ page.sidebar }} + </div> + {% else %} + {{ page.content }} + {% endif %} + {{ page.content_below }} + </div> + </main> + <div class="social-bar"> + {{ page.social }} + </div> + </div> + </div> + + <footer class="site-footer"> + <div class="site-footer__inner container"> + {{ page.footer_top }} + {{ page.footer_bottom }} + </div> + </footer> + + <div class="overlay"></div> + + </div> +</div> diff --git a/core/themes/olivero/templates/layout/region--breadcrumb.html.twig b/core/themes/olivero/templates/layout/region--breadcrumb.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..47e01c8ffb02f1628503db0fba1e682e63d2aa36 --- /dev/null +++ b/core/themes/olivero/templates/layout/region--breadcrumb.html.twig @@ -0,0 +1,30 @@ +{# +/** + * @file + * Olivero's theme override to display the breadcrumb region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} + +{% + set classes = [ + 'region', + 'region--' ~ region|clean_class, + 'grid-full', + 'layout--pass--content-medium', + 'ie11-autorow', + ] +%} + +{% if content %} + <div{{ attributes.addClass(classes) }}> + {{ content }} + </div> +{% endif %} diff --git a/core/themes/olivero/templates/layout/region--content-above.html.twig b/core/themes/olivero/templates/layout/region--content-above.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..1cda303f7f42c91e43e8bec90115f0f6ace9f25c --- /dev/null +++ b/core/themes/olivero/templates/layout/region--content-above.html.twig @@ -0,0 +1,30 @@ +{# +/** + * @file + * Olivero's theme override to display the content above region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} + +{% + set classes = [ + 'region', + 'region--' ~ region|clean_class, + 'grid-full', + 'layout--pass--content-medium', + 'ie11-autorow', + ] +%} + +{% if content %} + <div{{ attributes.addClass(classes) }}> + {{ content }} + </div> +{% endif %} diff --git a/core/themes/olivero/templates/layout/region--content-below.html.twig b/core/themes/olivero/templates/layout/region--content-below.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..90da7002ca381d7ad61e9083f8c3d0acfbe18f80 --- /dev/null +++ b/core/themes/olivero/templates/layout/region--content-below.html.twig @@ -0,0 +1,28 @@ +{# +/** + * @file + * Olivero's theme override to display the content below region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} +{% + set classes = [ + 'region', + 'region--' ~ region|clean_class, + ] +%} + +{{ attach_library('olivero/content-below') }} + +{% if content %} + <aside{{ attributes.addClass(classes) }}> + {{ content }} + </aside> +{% endif %} diff --git a/core/themes/olivero/templates/layout/region--content.html.twig b/core/themes/olivero/templates/layout/region--content.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..cd770e624bafdae8db72312c1fd23278e9cf00ec --- /dev/null +++ b/core/themes/olivero/templates/layout/region--content.html.twig @@ -0,0 +1,30 @@ +{# +/** + * @file + * Olivero's theme override to display the content region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} + +{% + set classes = [ + 'region', + 'region--' ~ region|clean_class, + 'grid-full', + 'layout--pass--content-medium', + 'ie11-autorow', + ] +%} + +{% if content %} + <div{{ attributes.addClass(classes) }}> + {{ content }} + </div> +{% endif %} diff --git a/core/themes/olivero/templates/layout/region--footer-bottom.html.twig b/core/themes/olivero/templates/layout/region--footer-bottom.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..17d8e42a1432024fb3f6e0dbdf585a9ed8f4c244 --- /dev/null +++ b/core/themes/olivero/templates/layout/region--footer-bottom.html.twig @@ -0,0 +1,30 @@ +{# +/** + * @file + * Olivero's theme override to display the footer bottom region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} + +{% + set classes = [ + 'region', + 'region--' ~ region|clean_class, + 'grid-full', + 'layout--pass--content-medium', + 'ie11-autorow', + ] +%} + +{% if content %} + <div{{ attributes.addClass(classes) }}> + {{ content }} + </div> +{% endif %} diff --git a/core/themes/olivero/templates/layout/region--footer-top.html.twig b/core/themes/olivero/templates/layout/region--footer-top.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..f4aac351924ced07e7fb8874e49793a106209e44 --- /dev/null +++ b/core/themes/olivero/templates/layout/region--footer-top.html.twig @@ -0,0 +1,32 @@ +{# +/** + * @file + * Olivero's theme override to display the footer top region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} + +{% + set classes = [ + 'region', + 'region--' ~ region|clean_class, + 'grid-full', + 'layout--pass--content-medium', + 'ie11-autorow', + ] +%} + +{% if content %} + <div{{ attributes.addClass(classes) }}> + <div class="region--{{ region }}__inner"> + {{ content }} + </div> + </div> +{% endif %} diff --git a/core/themes/olivero/templates/layout/region--header.html.twig b/core/themes/olivero/templates/layout/region--header.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..32ade151fe6ef692ddf3796000580e4bfbd07b5c --- /dev/null +++ b/core/themes/olivero/templates/layout/region--header.html.twig @@ -0,0 +1,16 @@ +{# +/** + * @file + * Olivero's theme override to display the header region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} + +{{ content }} diff --git a/core/themes/olivero/templates/layout/region--highlighted.html.twig b/core/themes/olivero/templates/layout/region--highlighted.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..cd770e624bafdae8db72312c1fd23278e9cf00ec --- /dev/null +++ b/core/themes/olivero/templates/layout/region--highlighted.html.twig @@ -0,0 +1,30 @@ +{# +/** + * @file + * Olivero's theme override to display the content region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} + +{% + set classes = [ + 'region', + 'region--' ~ region|clean_class, + 'grid-full', + 'layout--pass--content-medium', + 'ie11-autorow', + ] +%} + +{% if content %} + <div{{ attributes.addClass(classes) }}> + {{ content }} + </div> +{% endif %} diff --git a/core/themes/olivero/templates/layout/region--primary-menu.html.twig b/core/themes/olivero/templates/layout/region--primary-menu.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..32ade151fe6ef692ddf3796000580e4bfbd07b5c --- /dev/null +++ b/core/themes/olivero/templates/layout/region--primary-menu.html.twig @@ -0,0 +1,16 @@ +{# +/** + * @file + * Olivero's theme override to display the header region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} + +{{ content }} diff --git a/core/themes/olivero/templates/layout/region--secondary-menu.html.twig b/core/themes/olivero/templates/layout/region--secondary-menu.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..32ade151fe6ef692ddf3796000580e4bfbd07b5c --- /dev/null +++ b/core/themes/olivero/templates/layout/region--secondary-menu.html.twig @@ -0,0 +1,16 @@ +{# +/** + * @file + * Olivero's theme override to display the header region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} + +{{ content }} diff --git a/core/themes/olivero/templates/layout/region--sidebar.html.twig b/core/themes/olivero/templates/layout/region--sidebar.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..a3f88864f9582570e3b1b4551f12742bd85de480 --- /dev/null +++ b/core/themes/olivero/templates/layout/region--sidebar.html.twig @@ -0,0 +1,28 @@ +{# +/** + * @file + * Olivero's theme override to display the sidebar region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} +{% + set classes = [ + 'region', + 'region--' ~ region|clean_class, + ] +%} + +{{ attach_library('olivero/sidebar') }} + +{% if content %} + <aside{{ attributes.addClass(classes) }}> + {{ content }} + </aside> +{% endif %} diff --git a/core/themes/olivero/templates/layout/region--social.html.twig b/core/themes/olivero/templates/layout/region--social.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..4268c69a2ef73e685be69d50ebe2c1f78c53e5ad --- /dev/null +++ b/core/themes/olivero/templates/layout/region--social.html.twig @@ -0,0 +1,20 @@ +{# +/** + * @file + * Olivero's theme override to display the social region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} + +<aside class="social-bar__inner fixable"> + <div class="rotate"> + {{ content }} + </div> +</aside> diff --git a/core/themes/olivero/templates/layout/region.html.twig b/core/themes/olivero/templates/layout/region.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..651a0112a56c88c5cd4c4b491796604c7cf7b243 --- /dev/null +++ b/core/themes/olivero/templates/layout/region.html.twig @@ -0,0 +1,26 @@ +{# +/** + * @file + * Olivero's theme override to display a region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region <div>. + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + */ +#} +{% + set classes = [ + 'region', + 'region--' ~ region|clean_class, + ] +%} + +{% if content %} + <div{{ attributes.addClass(classes) }}> + {{ content }} + </div> +{% endif %} diff --git a/core/themes/olivero/templates/maintenance-page.html.twig b/core/themes/olivero/templates/maintenance-page.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..82da4f665ce86320cbce2db3f7573d3e8073601f --- /dev/null +++ b/core/themes/olivero/templates/maintenance-page.html.twig @@ -0,0 +1,48 @@ +{# +/** + * @file + * Olivero's theme implementation to display a single Drupal page while offline. + * + * All available variables are mirrored in page.html.twig. + * + * @see template_preprocess_maintenance_page() + */ + #} +<div id="page-wrapper"> + <div id="page"> + <header id="header" role="banner"> + <div class="section"> + {% if site_name or site_slogan %} + <div id="name-and-slogan"{{ hide_site_name and hide_site_slogan ? ' class="visually-hidden"' }}> + {% if site_name %} + <div id="site-name"{{ hide_site_name ? ' class="visually-hidden"' }}> + <strong> + <a href="{{ front_page }}" title="{{ 'Home'|t }}" rel="home"><span>{{ site_name }}</span></a> + </strong> + </div> + {% endif %} + {% if site_slogan %} + <div id="site-slogan"{{ hide_site_slogan ? ' class="visually-hidden"' }}> + {{ site_slogan }} + </div> + {% endif %} + </div> + {% endif %} + </div> + </header> + <div id="main-wrapper"> + <div id="main"> + <main id="content" class="column" role="main"> + <section class="section"> + <a id="main-content"></a> + {% if title %} + <h1 class="title" id="page-title">{{ title }}</h1> + {% endif %} + {{ page.content }} + {{ page.highlighted }} + </section> + </main> + </div> + </div> + </div> +</div> diff --git a/core/themes/olivero/templates/menu-local-action.html.twig b/core/themes/olivero/templates/menu-local-action.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..4d5b221e8babb4f9a8c200ebb69e1ad22b5dbd16 --- /dev/null +++ b/core/themes/olivero/templates/menu-local-action.html.twig @@ -0,0 +1,17 @@ +{# +/** + * @file + * Default theme implementation for a single local action link. + * + * Available variables: + * - attributes: HTML attributes for the wrapper element. + * - link: A rendered link element. + * + * @see template_preprocess_menu_local_action() + * + * @ingroup themeable + */ +#} +{{ attach_library('olivero/local-actions') }} + +<li{{ attributes }} class="action-links-item">{{ link }}</li> diff --git a/core/themes/olivero/templates/misc/feed-icon.html.twig b/core/themes/olivero/templates/misc/feed-icon.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..80af01e02e45c422b5fb8ec0a684afdb4913a502 --- /dev/null +++ b/core/themes/olivero/templates/misc/feed-icon.html.twig @@ -0,0 +1,31 @@ +{# +/** + * @file + * Theme override for a feed icon. + * + * Available variables: + * - url: An internal system path or a fully qualified external URL of the feed. + * - attributes: Remaining HTML attributes for the feed link. + * - title: A descriptive title of the feed link. + * - class: HTML classes to be applied to the feed link. + */ +#} + +{{ attach_library('olivero/feed') }} + +{# + @todo - This works around https://www.drupal.org/project/drupal/issues/3156244, + Title variable isn't set by Syndicate block. + #} +{% if title is not defined or title is null %} + {% set title = 'RSS Feed'|t %} +{% endif %} + +<a href="{{ url }}"{{ attributes.addClass('feed-icon') }}> + <span class="feed-icon__label"> + {{ title }} + </span> + <span class="feed-icon__icon" aria-hidden="true"> + {% include "@olivero/../images/rss.svg" %} + </span> +</a> diff --git a/core/themes/olivero/templates/misc/status-messages.html.twig b/core/themes/olivero/templates/misc/status-messages.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..ff4a0e827cedfe14a488b4fdded02b810b4b862e --- /dev/null +++ b/core/themes/olivero/templates/misc/status-messages.html.twig @@ -0,0 +1,68 @@ +{# +/** + * @file + * Theme override for status messages. + * + * Displays status, error, and warning messages, grouped by type. + * + * An invisible heading identifies the messages for assistive technology. + * Sighted users see a colored box. See http://www.w3.org/TR/WCAG-TECHS/H69.html + * for info. + * + * Add an ARIA label to the contentinfo area so that assistive technology + * user agents will better describe this landmark. + * + * Available variables: + * - message_list: List of messages to be displayed, grouped by type. + * - status_headings: List of all status types. + * - attributes: HTML attributes for the element, including: + * - class: HTML classes. + */ +#} +{{ attach_library('olivero/messages') }} + +<div data-drupal-messages class="messages-list"> + {% for type, messages in message_list %} + {% + set classes = [ + 'messages-list__item', + 'messages', + 'messages--' ~ type, + ] + %} + + <div role="contentinfo" aria-label="{{ status_headings[type] }}"{{ attributes.addClass(classes)|without('role', 'aria-label') }}> + <div class="messages__container"{% if type == 'error' %} role="alert"{% endif %}> + {% if status_headings[type] %} + <div class="messages__header"> + <h2 class="visually-hidden">{{ status_headings[type] }}</h2> + <div class="messages__icon"> + {% if type == 'error' %} + {% include "@olivero/../images/error.svg" %} + {% elseif type == 'warning' %} + {% include "@olivero/../images/warning.svg" %} + {% elseif type == 'status' %} + {% include "@olivero/../images/status.svg" %} + {% elseif type == 'info' %} + {% include "@olivero/../images/info.svg" %} + {% endif %} + </div> + </div> + {% endif %} + <div class="messages__content"> + {% if messages|length > 1 %} + <ul class="messages__list"> + {% for message in messages %} + <li class="messages__item">{{ message }}</li> + {% endfor %} + </ul> + {% else %} + {{ messages|first }} + {% endif %} + </div> + </div> + </div> + {# Remove type specific classes. #} + {% set attributes = attributes.removeClass(classes) %} + {% endfor %} +</div> diff --git a/core/themes/olivero/templates/navigation/book-all-books-block.html.twig b/core/themes/olivero/templates/navigation/book-all-books-block.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..b4cb64de3d5bfdb2bbbfdf2a32793f53d825a9c6 --- /dev/null +++ b/core/themes/olivero/templates/navigation/book-all-books-block.html.twig @@ -0,0 +1,22 @@ +{# +/** + * @file + * Theme override for rendering book outlines within a block. + * + * This template is used only when the block is configured to "show block on all + * pages", which presents multiple independent books on all pages. + * + * Available variables: + * - book_menus: Book outlines. + * - id: The parent book ID. + * - title: The parent book title. + * - menu: The top-level book links. + * + * @see template_preprocess_book_all_books_block() + */ +#} +{% for book in book_menus %} + <nav id="book-block-menu-{{ book.id }}" class="book-block-menu" role="navigation" aria-label="{% trans %}Book outline for {{ book.title }}{% endtrans %}"> + {{ book.menu }} + </nav> +{% endfor %} diff --git a/core/themes/olivero/templates/navigation/book-navigation.html.twig b/core/themes/olivero/templates/navigation/book-navigation.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..fe02eb2745406784930291b716be698fef691b4b --- /dev/null +++ b/core/themes/olivero/templates/navigation/book-navigation.html.twig @@ -0,0 +1,56 @@ +{# +/** + * @file + * Theme override to navigate books. + * + * Presented under nodes that are a part of book outlines. + * + * Available variables: + * - tree: The immediate children of the current node rendered as an unordered + * list. + * - current_depth: Depth of the current node within the book outline. Provided + * for context. + * - prev_url: URL to the previous node. + * - prev_title: Title of the previous node. + * - parent_url: URL to the parent node. + * - parent_title: Title of the parent node. Not printed by default. Provided + * as an option. + * - next_url: URL to the next node. + * - next_title: Title of the next node. + * - has_links: Flags TRUE whenever the previous, parent or next data has a + * value. + * - book_id: The book ID of the current outline being viewed. Same as the node + * ID containing the entire outline. Provided for context. + * - book_url: The book/node URL of the current outline being viewed. Provided + * as an option. Not used by default. + * - book_title: The book/node title of the current outline being viewed. + * + * @see template_preprocess_book_navigation() + */ +#} +{{ attach_library('olivero/book') }} +{% if tree or has_links %} + <nav id="book-navigation-{{ book_id }}" class="book-navigation" role="navigation" aria-labelledby="book-label-{{ book_id }}"> + {{ tree }} + {% if has_links %} + <h2 class="visually-hidden" id="book-label-{{ book_id }}">{{ 'Book traversal links for'|t }} {{ book_title }}</h2> + <ul class="book-pager"> + {% if prev_url %} + <li class="book-pager__item book-pager__item--previous"> + <a class="book-pager__link book-pager__link--previous" href="{{ prev_url }}" rel="prev" title="{{ 'Go to previous page'|t }}">{{ prev_title }}</a> + </li> + {% endif %} + {% if parent_url %} + <li class="book-pager__item book-pager__item--center"> + <a href="{{ parent_url }}" title="{{ 'Go to parent page'|t }}">{{ 'Up'|t }}</a> + </li> + {% endif %} + {% if next_url %} + <li class="book-pager__item book-pager__item--next"> + <a class="book-pager__link book-pager__link--next" href="{{ next_url }}" rel="next" title="{{ 'Go to next page'|t }}">{{ next_title }}</a> + </li> + {% endif %} + </ul> + {% endif %} + </nav> +{% endif %} diff --git a/core/themes/olivero/templates/navigation/book-tree.html.twig b/core/themes/olivero/templates/navigation/book-tree.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..31fea3d160a1af7435f413743ce52a489a89af4a --- /dev/null +++ b/core/themes/olivero/templates/navigation/book-tree.html.twig @@ -0,0 +1,67 @@ +{# +/** + * @file + * Theme override to display a book tree. + * + * Returns HTML for a wrapper for a book sub-tree. + * + * Available variables: + * - items: A nested list of book items. Each book item contains: + * - attributes: HTML attributes for the book item. + * - below: The book item child items. + * - title: The book link title. + * - url: The book link URL, instance of \Drupal\Core\Url. + * - is_expanded: TRUE if the link has visible children within the current + * book tree. + * - is_collapsed: TRUE if the link has children within the current book tree + * that are not currently visible. + * - in_active_trail: TRUE if the link is in the active trail. + */ +#} +{% import _self as book_tree %} + +{# + We call a macro which calls itself to render the full tree. + @see https://twig.symfony.com/doc/1.x/tags/macro.html +#} +{{ book_tree.book_links(items, attributes, 0) }} + +{% macro book_links(items, attributes, menu_level) %} + {% import _self as book_tree %} + {% if items %} + {% if menu_level == 0 %} + <ul{{ attributes.addClass('menu', 'menu--level-' ~ (menu_level + 1)) }}> + {% else %} + <ul class='menu menu--level-' ~ (menu_level + 1)> + {% endif %} + {% for item in items %} + {% + set item_classes = [ + 'menu-item', + 'menu__item--level-' ~ (menu_level + 1), + item.is_expanded ? 'menu-item--expanded', + item.is_collapsed ? 'menu-item--collapsed', + item.in_active_trail ? 'menu-item--active-trail', + ] + %} + {% set link_classes = [ + 'menu__link', + 'menu__link--link', + 'menu__link--level-' ~ (menu_level + 1), + item.in_active_trail ? 'menu__link--active-trail', + item.below ? 'menu__link--has-children', + ] + %} + <li{{ item.attributes.addClass(item_classes) }}> + {{ link(item.title, item.url, { + 'class': link_classes + }) + }} + {% if item.below %} + {{ book_tree.book_links(item.below, attributes, menu_level + 1) }} + {% endif %} + </li> + {% endfor %} + </ul> + {% endif %} +{% endmacro %} diff --git a/core/themes/olivero/templates/navigation/breadcrumb.html.twig b/core/themes/olivero/templates/navigation/breadcrumb.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..1e742df3ed339409ca9373bd5ee2325f669c8d84 --- /dev/null +++ b/core/themes/olivero/templates/navigation/breadcrumb.html.twig @@ -0,0 +1,27 @@ +{# +/** + * @file + * Theme override for a breadcrumb trail. + * + * Available variables: + * - breadcrumb: Breadcrumb trail items. + */ +#} +{% if breadcrumb %} + <nav class="breadcrumb" role="navigation" aria-labelledby="system-breadcrumb"> + <h2 id="system-breadcrumb" class="visually-hidden">{{ 'Breadcrumb'|t }}</h2> + <div class="breadcrumb__content"> + <ol class="breadcrumb__list"> + {% for item in breadcrumb %} + <li class="breadcrumb__item"> + {% if item.url %} + <a href="{{ item.url }}" class="breadcrumb__link">{{ item.text }}</a> + {% else %} + {{ item.text }} + {% endif %} + </li> + {% endfor %} + </ol> + </div> + </nav> +{% endif %} diff --git a/core/themes/olivero/templates/navigation/links.html.twig b/core/themes/olivero/templates/navigation/links.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..71fb1162b0fdf38fbaa77b68679c4c7c4b9882e4 --- /dev/null +++ b/core/themes/olivero/templates/navigation/links.html.twig @@ -0,0 +1,55 @@ +{# +/** + * @file + * Olivero's theme override for a set of links. + * + * Available variables: + * - attributes: Attributes for the UL containing the list of links. + * - links: Links to be output. + * Each link will have the following elements: + * - title: The link text. + * - href: The link URL. If omitted, the 'title' is shown as a plain text + * item in the links list. If 'href' is supplied, the entire link is passed + * to l() as its $options parameter. + * - attributes: (optional) HTML attributes for the anchor, or for the <span> + * tag if no 'href' is supplied. + * - heading: (optional) A heading to precede the links. + * - text: The heading text. + * - level: The heading level (e.g. 'h2', 'h3'). + * - attributes: (optional) A keyed list of attributes for the heading. + * If the heading is a string, it will be used as the text of the heading and + * the level will default to 'h2'. + * + * Headings should be used on navigation menus and any list of links that + * consistently appears on multiple pages. To make the heading invisible use + * the 'visually-hidden' CSS class. Do not use 'display:none', which + * removes it from screen readers and assistive technology. Headings allow + * screen reader and keyboard only users to navigate to or skip the links. + * See http://juicystudio.com/article/screen-readers-display-none.php and + * http://www.w3.org/TR/WCAG-TECHS/H42.html for more information. + * + * @see template_preprocess_links() + */ +#} +{% if links -%} + {%- if heading -%} + {%- if heading.level -%} + <{{ heading.level }}{{ heading.attributes }}>{{ heading.text }}</{{ heading.level }}> + {%- else -%} + <h2{{ heading.attributes }}>{{ heading.text }}</h2> + {%- endif -%} + {%- endif -%} + <ul{{ attributes }}> + {% for item in links %} + <li{{ item.attributes }}> + {%- if item.link -%} + {{ item.link }} + {%- elseif item.text_attributes -%} + <span{{ item.text_attributes }}>{{ item.text }}</span> + {%- else -%} + {{ item.text }} + {%- endif -%} + </li> + {% endfor %} + </ul> +{%- endif %} diff --git a/core/themes/olivero/templates/navigation/menu--primary-menu.html.twig b/core/themes/olivero/templates/navigation/menu--primary-menu.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..3bd3bd6059cd695d0c208c875fc94461c4ef237b --- /dev/null +++ b/core/themes/olivero/templates/navigation/menu--primary-menu.html.twig @@ -0,0 +1,110 @@ +{# +/** + * @file + * Olivero's theme implementation for the main menu. + * + * Available variables: + * - menu_name: The machine name of the menu. + * - items: A nested list of menu items. Each menu item contains: + * - attributes: HTML attributes for the menu item. + * - below: The menu item child items. + * - title: The menu link title. + * - url: The menu link url, instance of \Drupal\Core\Url + * - localized_options: Menu link localized options. + * - is_expanded: TRUE if the link has visible children within the current + * menu tree. + * - is_collapsed: TRUE if the link has children within the current menu tree + * that are not currently visible. + * - in_active_trail: TRUE if the link is in the active trail. + * + * @ingroup themeable + */ +#} +{% import _self as menus %} + +{# + We call a macro which calls itself to render the full tree. + @see https://twig.symfony.com/doc/1.x/tags/macro.html +#} +{% set attributes = attributes.addClass('menu') %} +{{ menus.menu_links(items, attributes, 0) }} + +{% macro menu_links(items, attributes, menu_level) %} + {% set primary_nav_level = 'primary-nav__menu--level-' ~ (menu_level + 1) %} + {% import _self as menus %} + {% if items %} + <ul {{ attributes.addClass('primary-nav__menu', primary_nav_level) }}> + {% set attributes = attributes.removeClass(primary_nav_level) %} + {% for item in items %} + + {% if item.url.isRouted and item.url.routeName == '<nolink>' %} + {% set menu_item_type = 'nolink' %} + {% elseif item.url.isRouted and item.url.routeName == '<button>' %} + {% set menu_item_type = 'button' %} + {% else %} + {% set menu_item_type = 'link' %} + {% endif %} + + {% set item_classes = [ + 'primary-nav__menu-item', + 'primary-nav__menu-item--' ~ menu_item_type, + 'primary-nav__menu-item--level-' ~ (menu_level + 1), + item.in_active_trail ? 'primary-nav__menu-item--active-trail', + item.below ? 'primary-nav__menu-item--has-children', + ] + %} + + {% set link_classes = [ + 'primary-nav__menu-link', + 'primary-nav__menu-link--' ~ menu_item_type, + 'primary-nav__menu-link--level-' ~ (menu_level + 1), + item.in_active_trail ? 'primary-nav__menu-link--active-trail', + item.below ? 'primary-nav__menu-link--has-children', + ] + %} + + <li{{ item.attributes.addClass(item_classes) }}> + {# + A unique HTML ID should be used, but that isn't available through + Twig yet, so the |clean_id filter is used for now. + @see https://www.drupal.org/project/drupal/issues/3115445 + #} + {% set aria_id = (item.title ~ '-submenu-' ~ loop.index )|clean_id %} + {% set link_title %} + <span class="primary-nav__menu-link-inner">{{ item.title }}</span> + {% endset %} + + {% if menu_item_type == 'link' or menu_item_type == 'nolink' %} + {{ link(menu_item_type == 'link' ? link_title : item.title, item.url, { 'class': link_classes }) }} + + {% if item.below %} + {# + Aria-hidden and tabindex attributes are removed via JS. Button is non-functional, + but still visible in non-JS environments so that chevron can indicate presence of + drop menu). + #} + <button class="primary-nav__button-toggle" aria-controls="{{ aria_id }}" aria-expanded="false" aria-hidden="true" tabindex="-1"> + <span class="visually-hidden">{{ 'Toggle sub-navigation'|t }}</span> + <span class="icon--menu-toggle"></span> + </button> + + {% set attributes = attributes.setAttribute('id', aria_id) %} + {{ menus.menu_links(item.below, attributes, menu_level + 1) }} + {% endif %} + + {% elseif menu_item_type == 'button' %} + {{ link(link_title, item.url, { + 'class': link_classes, + 'aria-controls': item.below ? aria_id : false, + 'aria-expanded': item.below ? 'false' : false, + }) + }} + + {% set attributes = attributes.setAttribute('id', aria_id) %} + {{ menus.menu_links(item.below, attributes, menu_level + 1) }} + {% endif %} + </li> + {% endfor %} + </ul> + {% endif %} +{% endmacro %} diff --git a/core/themes/olivero/templates/navigation/menu-local-task.html.twig b/core/themes/olivero/templates/navigation/menu-local-task.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..34bbb1c44d4c425b30852bd836fbbdbaf0abd121 --- /dev/null +++ b/core/themes/olivero/templates/navigation/menu-local-task.html.twig @@ -0,0 +1,29 @@ +{# +/** + * @file + * Theme override for a local task link. + * + * Available variables: + * - attributes: HTML attributes for the wrapper element. + * - is_active: Whether the task item is an active tab. + * - link: A rendered link element. + * - level: The menu level where the tab is rendered. + * + * Note: This template renders the content for each task item in + * menu-local-tasks.html.twig. + * + * @see template_preprocess_menu_local_task() + */ +#} +<li{{ attributes.addClass('tabs__tab', is_active ? 'is-active') }}> + {{ link }} + {% if is_active and level == 'primary' %} + <button class="tabs__trigger" aria-label="{{ 'Tabs display toggle'|t }}" aria-expanded="false"> + <span class="tabs__trigger-icon"> + <span></span> + <span></span> + <span></span> + </span> + </button> + {% endif %} +</li> diff --git a/core/themes/olivero/templates/navigation/menu-local-tasks.html.twig b/core/themes/olivero/templates/navigation/menu-local-tasks.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..4a138bd016b10a7300b179a8b26d204a351e8377 --- /dev/null +++ b/core/themes/olivero/templates/navigation/menu-local-tasks.html.twig @@ -0,0 +1,30 @@ +{# +/** + * @file + * Olivero theme implementation to display primary and secondary local tasks. + * + * Available variables: + * - primary: HTML list items representing primary tasks. + * - secondary: HTML list items representing primary tasks. + * + * Each item in these variables (primary and secondary) can be individually + * themed in menu-local-task.html.twig. + * + * @ingroup themeable + */ +#} + +{{ attach_library('olivero/tabs') }} + +{% if primary %} + <h2 id="primary-tabs-title" class="visually-hidden">{{ 'Primary tabs'|t }}</h2> + <nav role="navigation" class="tabs-wrapper" aria-labelledby="primary-tabs-title" data-drupal-nav-tabs> + <ul class="tabs tabs--primary">{{ primary }}</ul> + </nav> +{% endif %} +{% if secondary %} + <h2 id="secondary-tabs-title" class="visually-hidden">{{ 'Secondary tabs'|t }}</h2> + <nav role="navigation" class="tabs-wrapper" aria-labelledby="secondary-tabs-title" data-drupal-nav-tabs> + <ul class="tabs tabs--secondary">{{ secondary }}</ul> + </nav> +{% endif %} diff --git a/core/themes/olivero/templates/navigation/menu.html.twig b/core/themes/olivero/templates/navigation/menu.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..f825ae574b51969f4f3d99a2c2fede309e69c72e --- /dev/null +++ b/core/themes/olivero/templates/navigation/menu.html.twig @@ -0,0 +1,84 @@ +{# +/** + * @file + * Olivero's theme implementation for the main menu. + * + * Available variables: + * - menu_name: The machine name of the menu. + * - items: A nested list of menu items. Each menu item contains: + * - attributes: HTML attributes for the menu item. + * - below: The menu item child items. + * - title: The menu link title. + * - url: The menu link url, instance of \Drupal\Core\Url + * - localized_options: Menu link localized options. + * - is_expanded: TRUE if the link has visible children within the current + * menu tree. + * - is_collapsed: TRUE if the link has children within the current menu tree + * that are not currently visible. + * - in_active_trail: TRUE if the link is in the active trail. + * + * @ingroup themeable + */ +#} +{% import _self as menus %} + +{# + We call a macro which calls itself to render the full tree. + @see https://twig.symfony.com/doc/1.x/tags/macro.html +#} +{% set attributes = attributes.addClass('menu') %} +{{ menus.menu_links(items, attributes, 0) }} + +{% macro menu_links(items, attributes, menu_level) %} + {% set primary_nav_level = 'menu--level-' ~ (menu_level + 1) %} + {% import _self as menus %} + {% if items %} + <ul {{ attributes.addClass('menu', primary_nav_level) }}> + {% set attributes = attributes.removeClass(primary_nav_level) %} + {% for item in items %} + + {% if item.url.isRouted and item.url.routeName == '<nolink>' %} + {% set menu_item_type = 'nolink' %} + {% elseif item.url.isRouted and item.url.routeName == '<button>' %} + {% set menu_item_type = 'button' %} + {% else %} + {% set menu_item_type = 'link' %} + {% endif %} + + {% set item_classes = [ + 'menu__item', + 'menu__item--' ~ menu_item_type, + 'menu__item--level-' ~ (menu_level + 1), + item.in_active_trail ? 'menu__item--active-trail', + item.below ? 'menu__item--has-children', + ] + %} + + {% set link_classes = [ + 'menu__link', + 'menu__link--' ~ menu_item_type, + 'menu__link--level-' ~ (menu_level + 1), + item.in_active_trail ? 'menu__link--active-trail', + item.below ? 'menu__link--has-children', + ] + %} + + <li{{ item.attributes.addClass(item_classes) }}> + {# + A unique HTML ID should be used, but that isn't available through + Twig yet, so the |clean_id filter is used for now. + @see https://www.drupal.org/project/drupal/issues/3115445 + #} + {% set aria_id = (item.title ~ '-submenu-' ~ loop.index )|clean_id %} + + {{ link(item.title, item.url, { 'class': link_classes }) }} + + {% if item.below %} + {{ menus.menu_links(item.below, attributes, menu_level + 1) }} + {% endif %} + + </li> + {% endfor %} + </ul> + {% endif %} +{% endmacro %} diff --git a/core/themes/olivero/templates/navigation/pager.html.twig b/core/themes/olivero/templates/navigation/pager.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..29d011513e10c9f039a2bfbab4b57bb62c5396e8 --- /dev/null +++ b/core/themes/olivero/templates/navigation/pager.html.twig @@ -0,0 +1,119 @@ +{# +/** + * @file + * Theme override to display a pager. + * + * Available variables: + * - heading_id: Pagination heading ID. + * - items: List of pager items. + * The list is keyed by the following elements: + * - first: Item for the first page; not present on the first page of results. + * - previous: Item for the previous page; not present on the first page + * of results. + * - next: Item for the next page; not present on the last page of results. + * - last: Item for the last page; not present on the last page of results. + * - pages: List of pages, keyed by page number. + * Sub-sub elements: + * items.first, items.previous, items.next, items.last, and each item inside + * items.pages contain the following elements: + * - href: URL with appropriate query parameters for the item. + * - attributes: A keyed list of HTML attributes for the item. + * - text: The visible text used for the item link, such as "‹ Previous" + * or "Next ›". + * - current: The page number of the current page. + * - ellipses: If there are more pages than the quantity allows, then an + * ellipsis before or after the listed pages may be present. + * - previous: Present if the currently visible list of pages does not start + * at the first page. + * - next: Present if the visible list of pages ends before the last page. + * + * @see template_preprocess_pager() + */ +#} +{% if items %} + <nav class="pager layout--content-medium" role="navigation" aria-labelledby="{{ heading_id }}"> + <h4 id="{{ heading_id }}" class="visually-hidden">{{ 'Pagination'|t }}</h4> + <ul class="pager__items js-pager__items"> + {# Print first item if we are not on the first page. #} + {% if items.first %} + {% apply spaceless %} + <li class="pager__item pager__item--control pager__item--first"> + <a href="{{ items.first.href }}" class="pager__link" title="{{ 'Go to first page'|t }}"{{ items.first.attributes|without('href', 'title', 'class') }}> + <span class="visually-hidden">{{ 'First page'|t }}</span> + {% include "@olivero/../images/pager-first.svg" %} + </a> + </li> + {% endapply %} + {% endif %} + + {# Print previous item if we are not on the first page. #} + {% if items.previous %} + {% apply spaceless %} + <li class="pager__item pager__item--control pager__item--previous"> + <a href="{{ items.previous.href }}" class="pager__link" title="{{ 'Go to previous page'|t }}" rel="prev"{{ items.previous.attributes|without('href', 'title', 'rel', 'class') }}> + <span class="visually-hidden">{{ 'Previous page'|t }}</span> + {% include "@olivero/../images/pager-previous.svg" %} + </a> + </li> + {% endapply %} + {% endif %} + + {# Add an ellipsis if there are further previous pages. #} + {% if ellipses.previous %} + <li class="pager__item pager__item--ellipsis" role="presentation">…</li> + {% endif %} + + {# Now generate the actual pager piece. #} + {% for key, item in items.pages %} + {% apply spaceless %} + <li class="pager__item{{ current == key ? ' pager__item--active' : '' }} pager__item--number"> + {% if current == key %} + {% set title = 'Current page'|t %} + {% else %} + {% set title = 'Go to page @key'|t({'@key': key}) %} + {% endif %} + {% if current != key %} + <a href="{{ item.href }}" class="pager__link{{ current == key ? ' is-active' }}" title="{{ title }}"{{ item.attributes|without('href', 'title', 'class') }}> + {% endif %} + <span class="visually-hidden"> + {{ current == key ? 'Current page'|t : 'Page'|t }} + </span> + {{ key }} + {% if current != key %} + </a> + {% endif %} + </li> + {% endapply %} + {% endfor %} + + {# Add an ellipsis if there are further next pages. #} + {% if ellipses.next %} + <li class="pager__item pager__item--ellipsis" role="presentation">…</li> + {% endif %} + + {# Print next item if we are not on the last page. #} + {% if items.next %} + {% apply spaceless %} + <li class="pager__item pager__item--control pager__item--next"> + <a href="{{ items.next.href }}" class="pager__link" title="{{ 'Go to next page'|t }}" rel="next"{{ items.next.attributes|without('href', 'title', 'rel', 'class') }}> + <span class="visually-hidden">{{ 'Next page'|t }}</span> + {% include "@olivero/../images/pager-previous.svg" %} + </a> + </li> + {% endapply %} + {% endif %} + + {# Print last item if we are not on the last page. #} + {% if items.last %} + {% apply spaceless %} + <li class="pager__item pager__item--control pager__item--last"> + <a href="{{ items.last.href }}" class="pager__link" title="{{ 'Go to last page'|t }}"{{ items.last.attributes|without('href', 'title', 'class') }}> + <span class="visually-hidden">{{ 'Last page'|t }}</span> + {% include "@olivero/../images/pager-first.svg" %} + </a> + </li> + {% endapply %} + {% endif %} + </ul> + </nav> +{% endif %} diff --git a/core/themes/olivero/templates/navigation/toolbar.html.twig b/core/themes/olivero/templates/navigation/toolbar.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..ed42ddcb4e5f983b61ae0efdfcf9e6dee31f4ea2 --- /dev/null +++ b/core/themes/olivero/templates/navigation/toolbar.html.twig @@ -0,0 +1,51 @@ +{# +/** + * @file + * Default theme implementation for the administrative toolbar. + * + * @todo Remove this template when https://www.drupal.org/project/drupal/issues/3174422 + * is committed. + * + * Available variables: + * - attributes: HTML attributes for the wrapper. + * - toolbar_attributes: HTML attributes to apply to the toolbar. + * - toolbar_heading: The heading or label for the toolbar. + * - tabs: List of tabs for the toolbar. + * - attributes: HTML attributes for the tab container. + * - link: Link or button for the menu tab. + * - trays: Toolbar tray list, each associated with a tab. Each tray in trays + * contains: + * - attributes: HTML attributes to apply to the tray. + * - label: The tray's label. + * - links: The tray menu links. + * - remainder: Any non-tray, non-tab elements left to be rendered. + * + * @see template_preprocess_toolbar() + * + * @ingroup themeable + */ +#} +<div{{ attributes.addClass('toolbar') }}> + <nav{{ toolbar_attributes.addClass('toolbar-bar', 'clearfix') }}> + <h2 class="visually-hidden">{{ toolbar_heading }}</h2> + {% for key, tab in tabs %} + {% set tray = trays[key] %} + <div{{ tab.attributes.addClass('toolbar-tab') }}> + {{ tab.link }} + {% apply spaceless %} + <div{{ tray.attributes }}> + {% if tray.label %} + <nav class="toolbar-lining clearfix" role="navigation" aria-label="{{ tray.label }}"> + <h3 class="toolbar-tray-name visually-hidden">{{ tray.label }}</h3> + {% else %} + <nav class="toolbar-lining clearfix" role="navigation"> + {% endif %} + {{ tray.links }} + </nav> + </div> + {% endapply %} + </div> + {% endfor %} + </nav> + {{ remainder }} +</div> diff --git a/core/themes/olivero/templates/text-format-wrapper.html.twig b/core/themes/olivero/templates/text-format-wrapper.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..b993f3307919f4101a8ff511ee4bb95a7abfaece --- /dev/null +++ b/core/themes/olivero/templates/text-format-wrapper.html.twig @@ -0,0 +1,44 @@ +{# +/** + * @file + * Theme override for a text format-enabled form element. + * + * @todo Remove when https://www.drupal.org/node/3016346 and + * https://www.drupal.org/node/3016343 are fixed. + * + * Available variables: + * - children: Text format element children. + * - description: Text format element description. + * - attributes: HTML attributes for the containing element. + * - aria_description: Flag for whether or not an ARIA description has been + * added to the description container. + * - description_attributes: attributes for the description. + * @see https://www.drupal.org/node/3016343 + * - disabled: An indicator for whether the associated form element is disabled, + * added by this theme. + * @see https://www.drupal.org/node/3016346 + * + * @see template_preprocess_text_format_wrapper() + */ +#} +{% + set classes = [ + 'js-form-item', + 'form-item', + ] +%} + +{{ attach_library('olivero/filter.theme') }} + +<div{{ attributes.addClass(classes) }}> + {{ children }} + {% if description %} + {% + set description_classes = [ + aria_description ? 'form-item__description', + disabled ? 'is-disabled', + ] + %} + <div{{ description_attributes.addClass(description_classes) }}>{{ description }}</div> + {% endif %} +</div> diff --git a/core/themes/olivero/templates/user/user--compact.html.twig b/core/themes/olivero/templates/user/user--compact.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..4d06130eef342cab5f8dd0269801c28b5fd0c3e9 --- /dev/null +++ b/core/themes/olivero/templates/user/user--compact.html.twig @@ -0,0 +1,25 @@ +{# +/** + * @file + * Default theme implementation to present all user data. + * + * This template is used when viewing a registered user's page, + * e.g., example.com/user/123. 123 being the user's ID. + * + * Available variables: + * - content: A list of content items. Use 'content' to print all content, or + * print a subset such as 'content.field_example'. Fields attached to a user + * such as 'user_picture' are available as 'content.user_picture'. + * - attributes: HTML attributes for the container element. + * - user: A Drupal User entity. + * + * @see template_preprocess_user() + * + * @ingroup themeable + */ +#} +<div{{ attributes }}> + {% if content %} + {{- content -}} + {% endif %} +</div> diff --git a/core/themes/olivero/templates/user/username.html.twig b/core/themes/olivero/templates/user/username.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..10c7a6b0694e7a750e8df0b69d575818bd7c1138 --- /dev/null +++ b/core/themes/olivero/templates/user/username.html.twig @@ -0,0 +1,31 @@ +{# +/** + * @file + * Default theme implementation for displaying a username. + * + * Available variables: + * - account: The full account information for the user. + * - uid: The user ID, or zero if not a user. As used in anonymous comments. + * - name: The user's name, sanitized, and optionally truncated. + * - name_raw: The user's name, un-truncated. + * - truncated: Whether the user's name was truncated. + * - extra: Additional text to append to the user's name, sanitized. + * - profile_access: Whether the current user has permission to access this + users profile page. + * - link_path: The path or URL of the user's profile page, home page, + * or other desired page to link to for more information about the user. + * - homepage: (optional) The home page of the account, only set for non users. + * - link_options: Options to set on the \Drupal\Core\Url object if linking the + * user's name to the user's page. + * - attributes: HTML attributes for the containing element. + * + * @see template_preprocess_username() + * + * @ingroup themeable + */ +#} +{% if link_path -%} + <a{{ attributes }}>{{ name }}{{ extra }}</a> +{%- else -%} + <span{{ attributes }}>{{ name }}{{ extra }}</span> +{%- endif -%} diff --git a/core/themes/olivero/templates/views/views-mini-pager.html.twig b/core/themes/olivero/templates/views/views-mini-pager.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..b64be942db8357f2fc43116841dafb3e8f3b43e5 --- /dev/null +++ b/core/themes/olivero/templates/views/views-mini-pager.html.twig @@ -0,0 +1,49 @@ +{# +/** + * @file + * Theme override for a views mini-pager. + * + * Available variables: + * - heading_id: Pagination heading ID. + * - items: List of pager items. + * + * @see template_preprocess_views_mini_pager() + */ +#} +{% if items.previous or items.next %} + <nav class="pager" role="navigation" aria-labelledby="{{ heading_id }}"> + <h4 id="{{ heading_id }}" class="visually-hidden">{{ 'Pagination'|t }}</h4> + <ul class="pager__items js-pager__items"> + {# Print previous item if we are not on the first page. #} + {% if items.previous %} + {% apply spaceless %} + <li class="pager__item pager__item--control pager__item--previous"> + <a href="{{ items.previous.href }}" class="pager__link" title="{{ 'Go to previous page'|t }}" rel="prev"{{ items.previous.attributes|without('href', 'title', 'rel', 'class') }}> + <span class="visually-hidden">{{ 'Previous page'|t }}</span> + {% include "@olivero/../images/pager-previous.svg" %} + </a> + </li> + {% endapply %} + {% endif %} + + {# Print current active page. #} + {% if items.current %} + <li class="pager__item pager__item--active"> + {{ items.current }} + </li> + {% endif %} + + {# Print next item if we are not on the last page. #} + {% if items.next %} + {% apply spaceless %} + <li class="pager__item pager__item--control pager__item--next"> + <a href="{{ items.next.href }}" class="pager__link" title="{{ 'Go to next page'|t }}" rel="next"{{ items.next.attributes|without('href', 'title', 'rel') }}> + <span class="visually-hidden">{{ 'Previous page'|t }}</span> + {% include "@olivero/../images/pager-previous.svg" %} + </a> + </li> + {% endapply %} + {% endif %} + </ul> + </nav> +{% endif %} diff --git a/core/themes/olivero/templates/views/views-view--frontpage.html.twig b/core/themes/olivero/templates/views/views-view--frontpage.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..fc6d497fcdaccc2461e8958dbbdb91d6bdd5b4df --- /dev/null +++ b/core/themes/olivero/templates/views/views-view--frontpage.html.twig @@ -0,0 +1,94 @@ +{# +/** + * @file + * Default theme implementation for main view template. + * + * Available variables: + * - attributes: Remaining HTML attributes for the element. + * - css_name: A CSS-safe version of the view name. + * - css_class: The user-specified classes names, if any. + * - header: The optional header. + * - footer: The optional footer. + * - rows: The results of the view query, if any. + * - empty: The content to display if there are no rows. + * - pager: The optional pager next/prev links to display. + * - exposed: Exposed widget form/info to display. + * - feed_icons: Optional feed icons to display. + * - more: An optional link to the next page of results. + * - title: Title of the view, only used when displaying in the admin preview. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the view title. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the view title. + * - attachment_before: An optional attachment view to be displayed before the + * view content. + * - attachment_after: An optional attachment view to be displayed after the + * view content. + * - dom_id: Unique id for every view being printed to give unique class for + * Javascript. + * + * @see template_preprocess_views_view() + * + * @ingroup themeable + */ +#} + +{% + set classes = [ + 'view', + 'view-' ~ id|clean_class, + 'view-id-' ~ id, + 'view-display-id-' ~ display_id, + 'grid-full', + 'layout--pass--content-narrow', + 'ie11-autorow', + ] +%} +<div{{ attributes.addClass(classes) }}> + {{ title_prefix }} + {% if title %} + {{ title }} + {% endif %} + {{ title_suffix }} + {% if header %} + <div class="view-header"> + {{ header }} + </div> + {% endif %} + {% if exposed %} + <div class="view-filters"> + {{ exposed }} + </div> + {% endif %} + {% if attachment_before %} + <div class="attachment attachment-before"> + {{ attachment_before }} + </div> + {% endif %} + + {% if rows %} + <div class="view-content"> + {{ rows }} + </div> + {% elseif empty %} + {% include '@olivero/includes/get-started.html.twig' %} + {% endif %} + + {% if pager %} + {{ pager }} + {% endif %} + {% if attachment_after %} + <div class="attachment attachment-after"> + {{ attachment_after }} + </div> + {% endif %} + {% if more %} + {{ more }} + {% endif %} + {% if footer %} + <div class="view-footer"> + {{ footer }} + </div> + {% endif %} + +</div> diff --git a/core/themes/olivero/templates/views/views-view-grid.html.twig b/core/themes/olivero/templates/views/views-view-grid.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..57193e41c9913f51f6b1d52a3139920d9edab05c --- /dev/null +++ b/core/themes/olivero/templates/views/views-view-grid.html.twig @@ -0,0 +1,56 @@ +{# +/** + * @file + * Theme override for views to display rows in a grid. + * + * Available variables: + * - attributes: HTML attributes for the wrapping element. + * - title: The title of this group of rows. + * - view: The view object. + * - rows: The rendered view results. + * - options: The view plugin style options. + * - row_class_default: A flag indicating whether default classes should be + * used on rows. + * - col_class_default: A flag indicating whether default classes should be + * used on columns. + * - items: A list of grid items. Each item contains a list of rows or columns. + * The order in what comes first (row or column) depends on which alignment + * type is chosen (horizontal or vertical). + * - attributes: HTML attributes for each row or column. + * - content: A list of columns or rows. Each row or column contains: + * - attributes: HTML attributes for each row or column. + * - content: The row or column contents. + * + * @see template_preprocess_views_view_grid() + */ +#} +{% if options.alignment == 'vertical' %} + {{ attach_library('olivero/layout-views-grid-vertical') }} +{% else %} + {{ attach_library('olivero/layout-views-grid-horizontal') }} +{% endif %} + +{% set columns = options.columns <= 8 ? options.columns : 8 %} + +{% + set classes = [ + 'views-view-grid', + 'views-view-grid--' ~ options.alignment, + 'cols-' ~ columns, + ] +%} + +{% if title %} + <h3>{{ title }}</h3> +{% endif %} +<div{{ attributes.addClass(classes) }}> + {% for row in items %} + {% for column in row.content %} + <div class="views-view-grid__item"> + <div class="views-view-grid__item-inner"> + {{- column.content -}} + </div> + </div> + {% endfor %} + {% endfor %} +</div> diff --git a/core/themes/olivero/templates/views/views-view-table.html.twig b/core/themes/olivero/templates/views/views-view-table.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..716ad3723dbd1feda0263daed2434bff6155df00 --- /dev/null +++ b/core/themes/olivero/templates/views/views-view-table.html.twig @@ -0,0 +1,121 @@ +{# +/** + * @file + * Theme override for implementation of displaying a view as a table. + * + * Available variables: + * - attributes: Remaining HTML attributes for the element. + * - class: HTML classes that can be used to style contextually through CSS. + * - title : The title of this group of rows. + * - header: The table header columns. + * - attributes: Remaining HTML attributes for the element. + * - content: HTML classes to apply to each header cell, indexed by + * the header's key. + * - default_classes: A flag indicating whether default classes should be + * used. + * - caption_needed: Is the caption tag needed. + * - caption: The caption for this table. + * - accessibility_description: Extended description for the table details. + * - accessibility_summary: Summary for the table details. + * - rows: Table row items. Rows are keyed by row number. + * - attributes: HTML classes to apply to each row. + * - columns: Row column items. Columns are keyed by column number. + * - attributes: HTML classes to apply to each column. + * - content: The column content. + * - default_classes: A flag indicating whether default classes should be + * used. + * - responsive: A flag indicating whether table is responsive. + * - sticky: A flag indicating whether table header is sticky. + * - summary_element: A render array with table summary information (if any). + * + * @see template_preprocess_views_view_table() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + 'views-table', + 'cols-' ~ header|length, + responsive ? 'responsive-enabled', + sticky ? 'sticky-enabled', + ] +%} +<table{{ attributes.addClass(classes) }}> + {% if caption_needed %} + <caption> + {% if caption %} + {{ caption }} + {% else %} + {{ title }} + {% endif %} + {% if (summary_element is not empty) %} + {{ summary_element }} + {% endif %} + </caption> + {% endif %} + {% if header %} + <thead> + <tr> + {% for key, column in header %} + {% if column.default_classes %} + {% + set column_classes = [ + 'views-field', + 'views-field-' ~ fields[key], + ] + %} + {% endif %} + <th{{ column.attributes.addClass(column_classes).setAttribute('scope', 'col') }}> + {%- if column.wrapper_element -%} + <{{ column.wrapper_element }}> + {%- if column.url -%} + <a href="{{ column.url }}" title="{{ column.title }}" rel="nofollow">{{ column.content }}{{ column.sort_indicator }}</a> + {%- else -%} + {{ column.content }}{{ column.sort_indicator }} + {%- endif -%} + </{{ column.wrapper_element }}> + {%- else -%} + {%- if column.url -%} + <a href="{{ column.url }}" title="{{ column.title }}" rel="nofollow">{{ column.content }}{{ column.sort_indicator }}</a> + {%- else -%} + {{- column.content }}{{ column.sort_indicator }} + {%- endif -%} + {%- endif -%} + </th> + {% endfor %} + </tr> + </thead> + {% endif %} + <tbody> + {% for row in rows %} + <tr{{ row.attributes }}> + {% for key, column in row.columns %} + {% if column.default_classes %} + {% + set column_classes = [ + 'views-field' + ] + %} + {% for field in column.fields %} + {% set column_classes = column_classes|merge(['views-field-' ~ field]) %} + {% endfor %} + {% endif %} + <td{{ column.attributes.addClass(column_classes) }}> + {%- if column.wrapper_element -%} + <{{ column.wrapper_element }}> + {% for content in column.content %} + {{ content.separator }}{{ content.field_output }} + {% endfor %} + </{{ column.wrapper_element }}> + {%- else -%} + {% for content in column.content %} + {{- content.separator }}{{ content.field_output -}} + {% endfor %} + {%- endif %} + </td> + {% endfor %} + </tr> + {% endfor %} + </tbody> +</table> diff --git a/core/themes/olivero/templates/views/views-view.html.twig b/core/themes/olivero/templates/views/views-view.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..769a86849e885e5795ab0da396f366556770b23a --- /dev/null +++ b/core/themes/olivero/templates/views/views-view.html.twig @@ -0,0 +1,95 @@ +{# +/** + * @file + * Theme override for a main view template. + * + * Available variables: + * - attributes: Remaining HTML attributes for the element. + * - css_name: A CSS-safe version of the view name. + * - css_class: The user-specified classes names, if any. + * - header: The optional header. + * - footer: The optional footer. + * - rows: The results of the view query, if any. + * - empty: The content to display if there are no rows. + * - pager: The optional pager next/prev links to display. + * - exposed: Exposed widget form/info to display. + * - feed_icons: Optional feed icons to display. + * - more: An optional link to the next page of results. + * - title: Title of the view, only used when displaying in the admin preview. + * - title_prefix: Additional output populated by modules, intended to be + * displayed in front of the view title. + * - title_suffix: Additional output populated by modules, intended to be + * displayed after the view title. + * - attachment_before: An optional attachment view to be displayed before the + * view content. + * - attachment_after: An optional attachment view to be displayed after the + * view content. + * - dom_id: Unique id for every view being printed to give unique class for + * Javascript. + * + * @see template_preprocess_views_view() + */ +#} +{% + set classes = [ + 'view', + 'view-' ~ id|clean_class, + 'view-id-' ~ id, + 'view-display-id-' ~ display_id, + dom_id ? 'js-view-dom-id-' ~ dom_id, + ] +%} +<div{{ attributes.addClass(classes) }}> + {{ title_prefix }} + {% if title %} + {{ title }} + {% endif %} + {{ title_suffix }} + {% if header %} + <div class="view-header"> + {{ header }} + </div> + {% endif %} + {% if exposed %} + <div class="view-filters"> + {{ exposed }} + </div> + {% endif %} + {% if attachment_before %} + <div class="attachment attachment-before"> + {{ attachment_before }} + </div> + {% endif %} + + {% if rows %} + <div class="view-content"> + {{ rows }} + </div> + {% elseif empty %} + <div class="view-empty"> + {{ empty }} + </div> + {% endif %} + + {% if pager %} + {{ pager }} + {% endif %} + {% if attachment_after %} + <div class="attachment attachment-after"> + {{ attachment_after }} + </div> + {% endif %} + {% if more %} + {{ more }} + {% endif %} + {% if footer %} + <div class="view-footer"> + {{ footer }} + </div> + {% endif %} + {% if feed_icons %} + <div class="feed-icons"> + {{ feed_icons }} + </div> + {% endif %} +</div> diff --git a/core/themes/olivero/theme-settings.php b/core/themes/olivero/theme-settings.php new file mode 100644 index 0000000000000000000000000000000000000000..0413366580a91086231688dcf27190f06e2c6dad --- /dev/null +++ b/core/themes/olivero/theme-settings.php @@ -0,0 +1,34 @@ +<?php + +/** + * @file + * Functions to support Olivero theme settings. + */ + +use Drupal\Core\Form\FormStateInterface; + +/** + * Implements hook_form_FORM_ID_alter() for system_theme_settings. + */ +function olivero_form_system_theme_settings_alter(&$form, FormStateInterface $form_state) { + $form['olivero_settings']['olivero_utilities'] = [ + '#type' => 'fieldset', + '#title' => t('Olivero Utilities'), + ]; + $form['olivero_settings']['olivero_utilities']['mobile_menu_all_widths'] = [ + '#type' => 'checkbox', + '#title' => t('Enable mobile menu at all widths'), + '#default_value' => theme_get_setting('mobile_menu_all_widths'), + '#description' => t('Enables the mobile menu toggle at all widths.'), + ]; + $form['olivero_settings']['olivero_utilities']['site_branding_bg_color'] = [ + '#type' => 'select', + '#title' => t('Header site branding background color'), + '#options' => [ + 'default' => t('Primary Branding Color'), + 'gray' => t('Gray'), + 'white' => t('White'), + ], + '#default_value' => theme_get_setting('site_branding_bg_color'), + ]; +}