diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..cf1f2a1e --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,5 @@ +# These are supported funding model platforms + +github: Jako +open_collective: treehillstudio +ko_fi: treehillstudio diff --git a/.gitignore b/.gitignore index 90c14fcb..eec222b3 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,13 @@ -config.core.php \ No newline at end of file +_build/build.config.php +config.core.php + +_build/site + +icon/*.svg + +_packages/*.* +!_packages/.gitignore +!_packages/*.zip + +node_modules/ +core/components/*/vendor/ diff --git a/core/components/tvimageplus/docs/license.txt b/LICENSE.md similarity index 99% rename from core/components/tvimageplus/docs/license.txt rename to LICENSE.md index f116d9e9..17ff2f8a 100644 --- a/core/components/tvimageplus/docs/license.txt +++ b/LICENSE.md @@ -58,7 +58,7 @@ patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. - + GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION @@ -115,7 +115,7 @@ above, provided that you also meet all of these conditions: License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) - + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in @@ -173,7 +173,7 @@ access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. - + 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is @@ -230,7 +230,7 @@ impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - + 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License diff --git a/README.md b/README.md index 1a3d8a8e..2e20a64d 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,37 @@ -# Image+ v2.0 # -## Advanced Image Template Variable +[![Default Lexicon](https://hosted.weblate.org/widget/modx-extras/imageplus/svg-badge.svg)](https://hosted.weblate.org/projects/modx-extras/imageplus/) -**v2.1 now available for [download](https://github.com/downloads/alanpich/tvImagePlus/tvimageplus-2.1-pl.transport.zip) `v2.1-pl`** +# Image+ -**Dependant on PhpThumbOf component** +Advanced image custom template variable in MODX Revolution. -Advanced image TV input type for MODx Revolution. -The required dimensions for the image can (optionally) -be configured on the TV, restricting one or both -dimensions. When the editor uploads an image to the TV, -they can then use a graphical tool to crop the image -to the required dimensions/proportions. +## Features -This extra is a complete replacement for previous versions. -All previous versions (1.x) should be removed before attempting -to install v2.x +With this MODX custom template variable an image could be cropped while +maintaining the original image. The dimensions for the image can (optionally) be +configured to constrain a minimal width and/or height. The image crop could be +forced to remain at a pre-set ratio. A graphical tool could be used to crop the +image to the required dimensions/proportions. + +## Installation + +MODX Package Management + +## Usage + +Install via package manager, create a TV and change the input & output type to 'Image+'. + +## Documentation + +For more information please read the [documentation](https://jako.github.io/ImagePlus/). + +## Dependencies + +MODX Cropping Engine i.e. [pthumb](https://modx.com/extras/package/pthumb) + +## License + +The project is licensed under the [GPLv2 license](https://github.com/Jako/ImagePlus/blob/master/core/components/imageplus/docs/license.md). + +## Translations + +Translations of the package can be made for the [Default Lexicon](https://hosted.weblate.org/projects/modx-extras/imageplus/standard/), the [Properties Lexicon](https://hosted.weblate.org/projects/modx-extras/imageplus/properties/) and the [System Setting Lexicon](https://hosted.weblate.org/projects/modx-extras/imageplus/system-settings/) diff --git a/_build/build.config.php b/_build/build.config.php deleted file mode 100644 index cc6e507b..00000000 --- a/_build/build.config.php +++ /dev/null @@ -1,12 +0,0 @@ -'),'',$o)); - return $o; -} - - -/** - * Parse the smarty readme tpl for packaging - * @param string $path Path to tpl - * @return string - */ -function getReadmeFile( $path ){ - global $modx; - $modx->getService('smarty','smarty.modSmarty'); - - $modx->smarty->assign('date',date("jS M Y g:ia")); - $modx->smarty->assign('version',PKG_VERSION.' '.PKG_RELEASE); - $modx->smarty->assign('commit',PKG_COMMIT); - $readme = $modx->smarty->fetch($path); - return $readme; -}// - - -/** - * Get currect git commit id - * @param string repoRoot Path to repository root - * @return string commit hash - */ -function getGitCommitId( $repoRoot ){ - // Check git exists - $whichGit = `which git`; - if(empty($whichGit)){ return ''; }; - - // Check we're in a git repo - $gitFolder = str_replace('//','/',$repoRoot.'/.git'); - if( ! is_dir($gitFolder) ){ return ''; }; - - // - $test = shell_exec("cd $repoRoot; git rev-parse HEAD;"); - return trim($test); - - -}// \ No newline at end of file diff --git a/_build/build.transport.php b/_build/build.transport.php deleted file mode 100644 index 70a7a718..00000000 --- a/_build/build.transport.php +++ /dev/null @@ -1,120 +0,0 @@ - $root, - 'build' => $root . '_build/', - 'data' => $root . '_build/data/', - 'resolvers' => $root . '_build/resolvers/', - 'plugins' => $root.'core/components/'.PKG_NAME_LOWER.'/elements/plugins/', - 'lexicon' => $root . 'core/components/'.PKG_NAME_LOWER.'/lexicon/', - 'docs' => $root.'core/components/'.PKG_NAME_LOWER.'/docs/', - 'elements' => $root.'core/components/'.PKG_NAME_LOWER.'/elements/', - 'source_assets' => $root.'assets/components/'.PKG_NAME_LOWER, - 'source_core' => $root.'core/components/'.PKG_NAME_LOWER, -); -unset($root); - -/* override with your own defines here (see build.config.sample.php) */ -require_once $sources['build'] . 'build.config.php'; -require_once MODX_CORE_PATH . 'model/modx/modx.class.php'; - -$modx= new modX(); -$modx->initialize('mgr'); -echo '
'; /* used for nice formatting of log messages */
-$modx->setLogLevel(modX::LOG_LEVEL_INFO);
-
-if(!defined('LOG_TARGET_ALREADY_SET')){
-    $modx->setLogTarget('ECHO');
-};
- 
-$modx->loadClass('transport.modPackageBuilder','',false, true);
-$builder = new modPackageBuilder($modx);
-$builder->createPackage(PKG_NAME_LOWER,PKG_VERSION,PKG_RELEASE);
-$builder->registerNamespace(PKG_NAME_LOWER,false,true,'{core_path}components/'.PKG_NAME_LOWER.'/');
-
-$category= $modx->newObject('modCategory');
-$category->set('id',1);
-$category->set('category','ImagePlus');
-
- 
-// Create category vehicle -----------------------------------------------------------------
-$attr = array(
-		xPDOTransport::UNIQUE_KEY => 'category',
-		xPDOTransport::PRESERVE_KEYS => false,
-		xPDOTransport::UPDATE_OBJECT => true,
-		xPDOTransport::RELATED_OBJECTS => true,
-		xPDOTransport::RELATED_OBJECT_ATTRIBUTES => array (
-		    'Plugins' => array(
-		        xPDOTransport::PRESERVE_KEYS => false,
-		        xPDOTransport::UPDATE_OBJECT => true,
-		        xPDOTransport::UNIQUE_KEY => 'name',
-                xPDOTransport::RELATED_OBJECT_ATTRIBUTES => array (
-                    'PluginEvents' => array(
-                        xPDOTransport::PRESERVE_KEYS => false,
-                        xPDOTransport::UPDATE_OBJECT => true,
-                        xPDOTransport::UNIQUE_KEY => 'id',
-                     ),
-                )			
-            )
-       )
-	);
-$vehicle = $builder->createVehicle($category,$attr);
-
-
-// Add file resolvers ------------------------------------------------------------------------
-$modx->log(modX::LOG_LEVEL_INFO,'Adding file resolvers to category...');
-$vehicle->resolve('file',array(
-    'source' => $sources['source_assets'],
-    'target' => "return MODX_ASSETS_PATH . 'components/';",
-));
-$vehicle->resolve('file',array(
-    'source' => $sources['source_core'],
-    'target' => "return MODX_CORE_PATH . 'components/';",
-));
-$builder->putVehicle($vehicle);
- 
-// Add Router plugin -------------------------------------------------------------------------
-include $sources['data'].'transport.plugins.php';
-    
-    
- 
- 
-
- // Add documentation ===========================================================
-$modx->log(modX::LOG_LEVEL_INFO,'Adding documentation...');
-$builder->setPackageAttributes(array(
-    'license' => file_get_contents($sources['docs'] . 'license.txt'),
-    'readme' => getReadmeFile($sources['docs'] . 'readme.tpl'),
-    'changelog' => file_get_contents($sources['docs'] . 'changelog.txt')
-));   
-    
-    
- 
- 
-
-
-
-
-/* zip up package */
-$modx->log(modX::LOG_LEVEL_INFO,'Packing up transport package zip...');
-$builder->pack();
- 
-$tend= explode(" ", microtime());
-$tend= $tend[1] + $tend[0];
-$totalTime= sprintf("%2.4f s",($tend - $tstart));
-$modx->log(modX::LOG_LEVEL_INFO,"\n
Package Built.
\nExecution time: {$totalTime}\n"); -exit (); diff --git a/_build/config.json b/_build/config.json new file mode 100644 index 00000000..c146297b --- /dev/null +++ b/_build/config.json @@ -0,0 +1,148 @@ +{ + "name": "ImagePlus", + "lowCaseName": "imageplus", + "description": "Advanced Image Template Variable", + "author": "Alan Pich, Thomas Jakobi", + "version": "2.9.5", + "package": { + "elements": { + "chunks": [ + { + "name": "ImagePlus.demo", + "file": "imageplus.demo.html", + "description": "Demo chunk for Image+ template variable output." + }, + { + "name": "ImagePlus.image", + "file": "imageplus.image.html", + "description": "Demo chunk for Image+ snippet output." + } + ], + "plugins": [ + { + "name": "ImagePlus", + "description": "Image+ runtime hooks - registers custom TV input & output types and includes javascripts on document edit pages.", + "file": "imageplus.plugin.php", + "events": [ + "OnManagerPageBeforeRender", + "OnTVInputPropertiesList", + "OnTVInputRenderList", + "OnTVOutputRenderList", + "OnTVOutputRenderPropertiesList" + ] + } + ], + "snippets": [ + { + "name": "ImagePlus", + "file": "imageplus.snippet.php", + "description": "Snippet as an alternative to Image+ TV Output Type", + "properties": [ + { + "name": "tvname", + "value": "" + }, + { + "name": "docid", + "value": "" + }, + { + "name": "type", + "value": "" + }, + { + "name": "options", + "value": "" + }, + { + "name": "tpl", + "value": "ImagePlus.image" + } + ] + } + ] + }, + "systemSettings": [ + { + "key": "debug", + "type": "combo-boolean", + "area": "system", + "value": "0" + }, + { + "key": "target_width", + "area": "imageplus", + "value": "" + }, + { + "key": "target_height", + "area": "imageplus", + "value": "" + }, + { + "key": "target_ratio", + "area": "imageplus", + "value": "" + }, + { + "key": "thumbnail_width", + "area": "imageplus", + "value": "" + }, + { + "key": "allow_alt_tag", + "type": "combo-boolean", + "area": "imageplus", + "value": "0" + }, + { + "key": "allow_caption", + "type": "combo-boolean", + "area": "imageplus", + "value": "0" + }, + { + "key": "allow_credits", + "type": "combo-boolean", + "area": "imageplus", + "value": "0" + }, + { + "key": "select_config", + "type": "sizes-ratio-grid", + "area": "imageplus", + "value": "[]" + }, + { + "key": "force_config", + "type": "combo-boolean", + "area": "imageplus", + "value": "0" + } + ] + }, + "dependencies": [ + { + "name": "php", + "version": ">=7.1" + }, + { + "name": "modx", + "version": ">=2.6" + } + ], + "build": { + "readme": "docs/readme.md", + "license": "docs/license.md", + "changelog": "docs/changelog.md", + "setupOptions": { + "source": "setup.options.php" + }, + "resolver": { + "after": [ + "resolve.cleanup.php", + "resolve.treehillstudio.php" + ] + } + } +} diff --git a/_build/data/transport.plugins.php b/_build/data/transport.plugins.php deleted file mode 100644 index bf574fc9..00000000 --- a/_build/data/transport.plugins.php +++ /dev/null @@ -1,63 +0,0 @@ -'),'',$o)); - return $o; -} - -/* create the plugin object */ -$plugin= $modx->newObject('modPlugin'); -$plugin->set('id',1); -$plugin->set('name', 'ImagePlusRouter'); -$plugin->set('description', 'Required by ModX <2.3 to route class calls properly'); -$plugin->set('plugincode', getPluginContent($sources['elements'] . 'plugins/plugin.ImagePlusRouter.php')); -$plugin->set('category', 0); - -/* add plugin events */ -$events = array(); - -$event = $modx->newObject('modPluginEvent'); -$event->set('event','OnTVInputPropertiesList'); -$event->set('priority',0); -$event->set('propertyset',0); -$events[] = $event; - -$event = $modx->newObject('modPluginEvent'); -$event->set('event','OnTVInputRenderList'); -$event->set('priority',0); -$event->set('propertyset',0); -$events[] = $event; - -$event = $modx->newObject('modPluginEvent'); -$event->set('event','OnTVOutputRenderList'); -$event->set('priority',0); -$event->set('propertyset',0); -$events[] = $event; - -$event = $modx->newObject('modPluginEvent'); -$event->set('event','OnTVOutputRenderPropertiesList'); -$event->set('priority',0); -$event->set('propertyset',0); -$events[] = $event; - -$plugin->addMany($events); -$modx->log(xPDO::LOG_LEVEL_INFO,'Packaged in '.count($events).' Plugin Events.'); flush(); -unset($events); - -/* create vehicle for plugin */ -$attributes= array( - xPDOTransport::UNIQUE_KEY => 'name', - xPDOTransport::PRESERVE_KEYS => false, - xPDOTransport::UPDATE_OBJECT => true, - xPDOTransport::RELATED_OBJECTS => true, - xPDOTransport::RELATED_OBJECT_ATTRIBUTES => array ( - 'PluginEvents' => array( - xPDOTransport::PRESERVE_KEYS => true, - xPDOTransport::UPDATE_OBJECT => false, - xPDOTransport::UNIQUE_KEY => array('pluginid','event'), - ), - ), -); -$vehicle = $builder->createVehicle($plugin, $attributes); -$modx->log(modX::LOG_LEVEL_INFO,'Packaging in plugins...'); -$builder->putVehicle($vehicle); \ No newline at end of file diff --git a/_build/resolvers/resolve.cleanup.php b/_build/resolvers/resolve.cleanup.php new file mode 100644 index 00000000..34863002 --- /dev/null +++ b/_build/resolvers/resolve.cleanup.php @@ -0,0 +1,149 @@ +xpdo) { + if (!function_exists('recursiveRemoveFolder')) { + function recursiveRemoveFolder($dir) + { + $files = array_diff(scandir($dir), ['.', '..']); + foreach ($files as $file) { + (is_dir("$dir/$file")) ? recursiveRemoveFolder($dir . '/' . $file) : unlink($dir . '/' . $file); + } + return rmdir($dir); + } + } + + if (!function_exists('cleanupFolders')) { + function cleanupFolders($modx, $corePath, $assetsPath, $cleanup, $package, $version) + { + $paths = [ + 'core' => $corePath, + 'assets' => $assetsPath, + ]; + $countFiles = 0; + $countFolders = 0; + foreach ($cleanup as $folder => $files) { + foreach ($files as $file) { + $legacyFile = $paths[$folder] . $file; + if (file_exists($legacyFile)) { + if (is_dir($legacyFile)) { + recursiveRemoveFolder($legacyFile); + $countFolders++; + } else { + unlink($legacyFile); + $countFiles++; + } + } + } + } + if ($countFolders || $countFiles) { + $modx->log(xPDO::LOG_LEVEL_INFO, 'Removed ' . $countFiles . ' legacy files and ' . $countFolders . ' legacy folders before ' . $package . ' ' . $version . '.'); + } + } + } + + if (!function_exists('cleanupMenu')) { + function cleanupMenu($modx, $namespace, $newAction) + { + /** @var modAction[] $actions */ + $actions = $modx->getIterator('modAction', [ + 'namespace:=' => $namespace, + 'controller' => 'index' + ]); + foreach ($actions as $action) { + /** @var modMenu $menu */ + $menu = $modx->getObject('modMenu', $action->get('id')); + if ($menu) { + $menu->set('action', $newAction); + $menu->save(); + } + $action->remove(); + } + } + } + + if (!function_exists('cleanupPluginEvents')) { + function cleanupPluginEvents($modx, $plugin, $events) + { + foreach ($events as $event) { + $c = $modx->newQuery('modPluginEvent'); + $c->leftJoin('modPlugin', 'Plugin', [ + 'modPluginEvent.pluginid = Plugin.id' + ]); + $c->where([ + 'event' => $event, + 'Plugin.name' => $plugin + ]); + /** @var modPluginEvent $pluginEvent */ + $pluginEvent = $modx->getObject('modPluginEvent', $c); + if ($pluginEvent) { + $pluginEvent->remove(); + $modx->log(xPDO::LOG_LEVEL_INFO, 'Removed ' . $event . ' from ' . $plugin . ' plugin.'); + } + } + } + } + + /** @var xPDO $modx */ + $modx =& $object->xpdo; + + switch ($options[xPDOTransport::PACKAGE_ACTION]) { + case xPDOTransport::ACTION_INSTALL: + case xPDOTransport::ACTION_UPGRADE: + $c = $modx->newQuery('transport.modTransportPackage'); + $c->where( + [ + 'workspace' => 1, + "(SELECT + `signature` + FROM {$modx->getTableName('transport.modTransportPackage')} AS `latestPackage` + WHERE `latestPackage`.`package_name` = `modTransportPackage`.`package_name` + ORDER BY + `latestPackage`.`version_major` DESC, + `latestPackage`.`version_minor` DESC, + `latestPackage`.`version_patch` DESC, + IF(`release` = '' OR `release` = 'ga' OR `release` = 'pl','z',`release`) DESC, + `latestPackage`.`release_index` DESC + LIMIT 1,1) = `modTransportPackage`.`signature`", + ] + ); + $c->where( + [ + 'modTransportPackage.signature:LIKE' => $options['namespace'] . '-%', + 'modTransportPackage.installed:IS NOT' => null + ] + ); + $c->limit(1); + + /** @var modTransportPackage $oldPackage */ + $oldPackage = $modx->getObject('transport.modTransportPackage', $c); + $corePath = $modx->getOption('core_path', null, MODX_CORE_PATH); + $assetsPath = $modx->getOption('assets_path', null, MODX_ASSETS_PATH); + + if ($oldPackage && $oldPackage->compareVersion('2.8.8-pl2', '>')) { + $cleanup = [ + 'core' => [ + 'components/imageplus/model/cropengines' + ] + ]; + cleanupFolders($modx, $corePath, $assetsPath, $cleanup, 'ImagePlus', '2.8.8'); + cleanupPluginEvents($modx, 'ImagePlus', ['OnDocFormRender']); + } + $success = true; + break; + case xPDOTransport::ACTION_UNINSTALL: + $success = true; + break; + } +} +return $success; diff --git a/_build/resolvers/resolve.treehillstudio.php b/_build/resolvers/resolve.treehillstudio.php new file mode 100644 index 00000000..41006559 --- /dev/null +++ b/_build/resolvers/resolve.treehillstudio.php @@ -0,0 +1,107 @@ +xpdo; +$c = $modx->newQuery('transport.modTransportPackage'); +$c->where( + [ + 'workspace' => 1, + "(SELECT + `signature` + FROM {$modx->getTableName('transport.modTransportPackage')} AS `latestPackage` + WHERE `latestPackage`.`package_name` = `modTransportPackage`.`package_name` + ORDER BY + `latestPackage`.`version_major` DESC, + `latestPackage`.`version_minor` DESC, + `latestPackage`.`version_patch` DESC, + IF(`release` = '' OR `release` = 'ga' OR `release` = 'pl','z',`release`) DESC, + `latestPackage`.`release_index` DESC + LIMIT 1,1) = `modTransportPackage`.`signature`", + ] +); +$c->where( + [ + 'modTransportPackage.signature:LIKE' => $options['namespace'] . '-%', + 'modTransportPackage.installed:IS NOT' => null + ] +); +$c->limit(1); + +/** @var modTransportPackage $oldPackage */ +$oldPackage = $modx->getObject('transport.modTransportPackage', $c); + +$oldVersion = ''; +if ($oldPackage) { + $oldVersion = $oldPackage->get('version_major') . + '.' . $oldPackage->get('version_minor') . + '.' . $oldPackage->get('version_patch') . + '-' . $oldPackage->get('release'); +} + +$version = ''; +if ($transport->version) { + $version = $transport->version; +} + +$modxVersionObj = $modx->getObject('modSystemSetting', ['key' => 'settings_version']); +$modxVersion = ($modxVersionObj) ? $modxVersionObj->get('value') : ''; +$managerLang = $modx->getOption('manager_language'); + +$action = ''; +switch ($options[xPDOTransport::PACKAGE_ACTION]) { + case xPDOTransport::ACTION_INSTALL: + $action = 'install'; + break; + case xPDOTransport::ACTION_UPGRADE: + $action = 'upgrade'; + break; + case xPDOTransport::ACTION_UNINSTALL: + $action = 'uninstall'; + break; +} + +$params = [ + 'name' => $options['namespace'], + 'uuid' => $modx->uuid ?? 'unknown', + 'host' => $modx->getOption('http_host', null, 'unknown'), + 'php_version' => phpversion(), + 'modx_version' => $modxVersion, + 'manager_lang' => $managerLang, + 'installation_type' => $action, + 'package_version_from' => $oldVersion, + 'package_version' => $version, + 'date' => time() +]; + +/** + * Curl POST. + */ +$curl = curl_init(); +if ($curl) { + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); + curl_setopt($curl, CURLOPT_POST, true); + curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params)); + curl_setopt($curl, CURLOPT_TIMEOUT, 5); + + $response = curl_exec($curl); + $responseInfo = curl_getinfo($curl); + $curlError = curl_error($curl); + curl_close($curl); +} + +return true; diff --git a/_build/setup.options.php b/_build/setup.options.php new file mode 100644 index 00000000..10131b32 --- /dev/null +++ b/_build/setup.options.php @@ -0,0 +1,55 @@ + + #modx-setupoptions-panel { display: none; } + #modx-setupoptions-form p { margin-bottom: 10px; } + #modx-setupoptions-form h2 { margin-bottom: 15px; } +'; + +$values = []; +switch ($options[xPDOTransport::PACKAGE_ACTION]) { + case xPDOTransport::ACTION_INSTALL: + $output .= '

Install Image+

+ +

Thanks for installing Image+. This open source extra was + developed by Treehill Studio - MODX development in Münsterland.

+ +

During the installation, we will collect some statistical data (the + hostname, the MODX UUID, the PHP version and the MODX version of your + MODX installation). Your data will be kept confidential and under no + circumstances be used for promotional purposes or disclosed to third + parties. We only like to know the usage count of this package.

+ +

If you install this package, you are giving us your permission to + collect, process and use that data for statistical purposes.

'; + + break; + case xPDOTransport::ACTION_UPGRADE: + $output .= '

Upgrade Image+

+ +

Image+ will be upgraded. This open source extra was developed by + Treehill Studio - MODX development in Münsterland.

+ +

During the installation, we will collect some statistical data (the + hostname, the MODX UUID, the PHP version and the MODX version of your + MODX installation). Your data will be kept confidential and under no + circumstances be used for promotional purposes or disclosed to third + parties. We only like to know the usage count of this package.

+ +

If you upgrade this package, you are giving us your permission to + collect, process and use that data for statistical purposes.

'; + + break; + case xPDOTransport::ACTION_UNINSTALL: + break; +} + +return $output; diff --git a/_packages/imageplus-2.2.2-pl.transport.zip b/_packages/imageplus-2.2.2-pl.transport.zip new file mode 100644 index 00000000..8b3bed33 Binary files /dev/null and b/_packages/imageplus-2.2.2-pl.transport.zip differ diff --git a/_packages/imageplus-2.3.4-pl.transport.zip b/_packages/imageplus-2.3.4-pl.transport.zip new file mode 100644 index 00000000..5edae024 Binary files /dev/null and b/_packages/imageplus-2.3.4-pl.transport.zip differ diff --git a/_packages/imageplus-2.4.5-pl.transport.zip b/_packages/imageplus-2.4.5-pl.transport.zip new file mode 100644 index 00000000..264ab56d Binary files /dev/null and b/_packages/imageplus-2.4.5-pl.transport.zip differ diff --git a/_packages/imageplus-2.5.0-pl.transport.zip b/_packages/imageplus-2.5.0-pl.transport.zip new file mode 100644 index 00000000..248531dd Binary files /dev/null and b/_packages/imageplus-2.5.0-pl.transport.zip differ diff --git a/_packages/imageplus-2.6.3-pl.transport.zip b/_packages/imageplus-2.6.3-pl.transport.zip new file mode 100644 index 00000000..c1e28a94 Binary files /dev/null and b/_packages/imageplus-2.6.3-pl.transport.zip differ diff --git a/_packages/imageplus-2.7.0-pl.transport.zip b/_packages/imageplus-2.7.0-pl.transport.zip new file mode 100644 index 00000000..470cdd24 Binary files /dev/null and b/_packages/imageplus-2.7.0-pl.transport.zip differ diff --git a/_packages/imageplus-2.8.9-pl.transport.zip b/_packages/imageplus-2.8.9-pl.transport.zip new file mode 100644 index 00000000..1f1b733e Binary files /dev/null and b/_packages/imageplus-2.8.9-pl.transport.zip differ diff --git a/_packages/imageplus-2.9.3-pl.transport.zip b/_packages/imageplus-2.9.3-pl.transport.zip new file mode 100644 index 00000000..01299549 Binary files /dev/null and b/_packages/imageplus-2.9.3-pl.transport.zip differ diff --git a/_packages/imageplus-2.9.3-pl2.transport.zip b/_packages/imageplus-2.9.3-pl2.transport.zip new file mode 100644 index 00000000..d5142911 Binary files /dev/null and b/_packages/imageplus-2.9.3-pl2.transport.zip differ diff --git a/_packages/imageplus-2.9.4-pl.transport.zip b/_packages/imageplus-2.9.4-pl.transport.zip new file mode 100644 index 00000000..275b20f3 Binary files /dev/null and b/_packages/imageplus-2.9.4-pl.transport.zip differ diff --git a/_packages/imageplus-2.9.5-pl.transport.zip b/_packages/imageplus-2.9.5-pl.transport.zip new file mode 100644 index 00000000..37456b39 Binary files /dev/null and b/_packages/imageplus-2.9.5-pl.transport.zip differ diff --git a/assets/components/imageplus/connector.php b/assets/components/imageplus/connector.php new file mode 100644 index 00000000..5710ca39 --- /dev/null +++ b/assets/components/imageplus/connector.php @@ -0,0 +1,37 @@ +getOption('imageplus.core_path', null, $modx->getOption('core_path') . 'components/imageplus/'); +/** @var ImagePlus $imageplus */ +$imageplus = $modx->getService('imageplus', 'ImagePlus', $corePath . 'model/imageplus/', [ + 'core_path' => $corePath +]); + +// Set HTTP_MODAUTH for web processors +if (defined('MODX_REQP') && MODX_REQP === false) { + $_SERVER['HTTP_MODAUTH'] = $modx->user->getUserToken($modx->context->get('key')); +} + +// Handle request +$modx->request->handleRequest([ + 'processors_path' => $imageplus->getOption('processorsPath'), + 'location' => '' +]); diff --git a/assets/components/imageplus/css/mgr/imageplus.min.css b/assets/components/imageplus/css/mgr/imageplus.min.css new file mode 100644 index 00000000..cad25322 --- /dev/null +++ b/assets/components/imageplus/css/mgr/imageplus.min.css @@ -0,0 +1,6 @@ +#modx-input-props.imageplus-props,#modx-widget-props.imageplus-props{padding-top:0}.modx-grid .x-grid-cell-icons .x-grid3-cell-inner{padding-right:5px}.modx-grid-small .x-grid3-cell-inner{padding:8px 5px}.modx-grid-small .x-grid3-hd-inner{padding:8px 18px 8px 5px}.modx-grid-small .x-grid3-td-checker{padding:6px 0 0}.modx-grid-small .x-grid3-td-checker.x-grid3-hd{padding-top:0}.modx-grid-small .x-panel-tbar .x-toolbar{padding-top:2px}.modx-grid-small .x-panel-tbar .x-toolbar.x-small-editor .x-form-text{margin-top:0;padding:3px 8px 2px}.modx-grid-small .x-panel-tbar .x-toolbar .x-btn{padding:4px 10px}.modx-grid-small .x-panel-bbar .x-toolbar .x-btn{padding:2px}.modx-grid-small .x-panel-bbar .x-toolbar .x-form-text{padding:2px 3px}.modx-grid-small .x-tbar-loading:before{line-height:16px}.modx-grid-small .x-tbar-page-first:before,.modx-grid-small .x-tbar-page-last:before,.modx-grid-small .x-tbar-page-next:before,.modx-grid-small .x-tbar-page-prev:before{line-height:16px}.modx-grid-small .x-btn-icon.arrow_down button:before,.modx-grid-small .x-btn-icon.arrow_up button:before,.modx-grid-small .x-btn-icon.refresh button:before{line-height:16px}.modx-grid-small .x-small-editor .x-form-field-wrap,.modx-grid-small .x-small-editor .x-form-text{margin-top:2px}.x-form-field-wrap .x-form-triple-triggers{border:0;border-radius:0 3px 3px 0;box-shadow:none;height:100%!important;padding:0;position:absolute;right:0;top:0;width:90px}.x-form-field-wrap .x-form-triple-triggers .x-form-trigger{display:inline-block;position:relative;top:auto;vertical-align:top}.x-form-field-wrap .x-form-triple-triggers .x-form-trigger.x-form-clear-trigger:before{content:"\f00d"}.x-form-field-wrap .x-form-triple-triggers .x-form-trigger.x-form-crop-trigger:before{content:"\f125"}.imageplus-hidden-textarea{display:none}.imageplus-sectiontitle .desc-under,.imageplus-sectiontitle .x-form-item-label{padding-top:0}.treehillstudio_about{cursor:pointer;height:40px;margin-top:20px;opacity:.25;transition:opacity .5s}.treehillstudio_about:hover{opacity:1}.treehillstudio_about .x-panel-body{text-align:right}.treehillstudio_window a{color:#b2bf28;text-decoration:none}.treehillstudio_window a:hover{color:#77801a}.jcrop-holder{direction:ltr;text-align:left;-ms-touch-action:none}.jcrop-hline,.jcrop-vline{background:#fff url(Jcrop.gif);font-size:0;position:absolute}.jcrop-vline{height:100%;width:1px!important}.jcrop-vline.right{right:0}.jcrop-hline{height:1px!important;width:100%}.jcrop-hline.bottom{bottom:0}.jcrop-tracker{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;height:100%;-webkit-user-select:none;width:100%}.jcrop-handle{background-color:#333;border:1px solid #eee;font-size:1px;height:7px;width:7px}.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px}.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%}.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%}.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0}.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0}.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px}.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%}.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px}.jcrop-dragbar.ord-n{margin-top:-4px}.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px}.jcrop-dragbar.ord-e{margin-right:-4px;right:0}.jcrop-dragbar.ord-w{margin-left:-4px}.jcrop-light .jcrop-hline,.jcrop-light .jcrop-vline{background:#fff;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-light .jcrop-handle{background-color:#000;border-color:#fff;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.jcrop-dark .jcrop-hline,.jcrop-dark .jcrop-vline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-dark .jcrop-handle{background-color:#fff;border-color:#000;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.solid-line .jcrop-hline,.solid-line .jcrop-vline{background:#fff}.jcrop-holder img,img.jcrop-preview{max-width:none}.jcrop-hline,.jcrop-vline{background:#fff url(../../img/mgr/jcrop.gif)} +/*! + * ImagePlus - Advanced Image Template Variable + * Version: 2.9.5 + * Build date: 2024-02-21 + */ \ No newline at end of file diff --git a/assets/components/imageplus/img/mgr/jcrop.gif b/assets/components/imageplus/img/mgr/jcrop.gif new file mode 100644 index 00000000..cc55e8c0 Binary files /dev/null and b/assets/components/imageplus/img/mgr/jcrop.gif differ diff --git a/assets/components/imageplus/img/mgr/treehill-studio-small.png b/assets/components/imageplus/img/mgr/treehill-studio-small.png new file mode 100644 index 00000000..d4947faf Binary files /dev/null and b/assets/components/imageplus/img/mgr/treehill-studio-small.png differ diff --git a/assets/components/imageplus/img/mgr/treehill-studio-small@2x.png b/assets/components/imageplus/img/mgr/treehill-studio-small@2x.png new file mode 100644 index 00000000..49415abb Binary files /dev/null and b/assets/components/imageplus/img/mgr/treehill-studio-small@2x.png differ diff --git a/assets/components/imageplus/img/mgr/treehill-studio.png b/assets/components/imageplus/img/mgr/treehill-studio.png new file mode 100644 index 00000000..c13691fc Binary files /dev/null and b/assets/components/imageplus/img/mgr/treehill-studio.png differ diff --git a/assets/components/imageplus/img/mgr/treehill-studio@2x.png b/assets/components/imageplus/img/mgr/treehill-studio@2x.png new file mode 100644 index 00000000..dd7868ba Binary files /dev/null and b/assets/components/imageplus/img/mgr/treehill-studio@2x.png differ diff --git a/assets/components/imageplus/js/mgr/imageplus.min.js b/assets/components/imageplus/js/mgr/imageplus.min.js new file mode 100644 index 00000000..235ec5dc --- /dev/null +++ b/assets/components/imageplus/js/mgr/imageplus.min.js @@ -0,0 +1,6 @@ +/*! + * ImagePlus - Advanced Image Template Variable + * Version: 2.9.5 + * Build date: 2024-02-21 + */ +var imagePlus=function(e){imagePlus.superclass.constructor.call(this,e=e||{})},JSON,$jqIP=(Ext.extend(imagePlus,Ext.Component,{page:{},window:{},grid:{},tree:{},panel:{},combo:{},config:{},jquery:{},form:{},generateThumbUrl:function(e){return this.generatePhpThumbUrl(e)},generatePhpThumbUrl:function(e){var t,n=MODx.config.connectors_url+"system/phpthumb.php?",i={wctx:"mgr",w:150,source:1};for(t in e)i[t]=e[t];var r="";for(t in i)r+=encodeURIComponent(t)+"="+encodeURIComponent(i[t])+"&";return n=0You don't have any crop engines!

Before you can use Image+, you need at least one Crop Engine installed to handle image manipulation.

A quick fix is to install either pThumb, phpThumbOf, phpThumbsUp or phpThumbOn from the MODX Package Repository

"}).show()}}),Ext.reg("imageplus",imagePlus),ImagePlus=new imagePlus,ImagePlus.panel.input=function(e){this.options=(e=e||{}).options,this.image={},this.getValue(e.hiddenField),this.createImageBrowser(),this.createImagePreview(),this.createTextFields(),ImagePlus.config.hasUnmetDependencies&&ImagePlus.warnAboutUnmetDependencies(),Ext.apply(e,{border:!1,config:e,baseCls:"modx-panel",hiddenField:e.hiddenField,width:"400px",items:[{xtype:"compositefield",anchor:"100%",hideLabel:!0,listeners:{afterrender:{fn:this.onAfterRender,scope:this}},items:[this.imageBrowser]},{cls:"modx-tv-image-preview imageplus-image-preview",border:!1,items:[this.imagePreview,this.altTextField,this.captionField,this.creditsField]}]}),ImagePlus.panel.input.superclass.constructor.call(this,e),this.listenForResetEvent()},Ext.extend(ImagePlus.panel.input,MODx.Panel,{listenForResetEvent:function(){Ext.getCmp("modx-panel-resource").on("tv-reset",function(e){parseInt(e.id)===this.options.tvId&&this.onReset()},this)},createImageBrowser:function(){var e=this.image.sourceImg.src.split("/"),t=(e.pop(),e=e.join("/"),this);this.imageBrowser=new ImagePlus.combo.Browser({value:this.image.sourceImg.src,source:this.options.mediaSource,hideSourceCombo:!0,openTo:e,listeners:{select:{fn:this.onImageSelected,scope:this},change:{fn:function(e,t){this.onImageChange(t)},scope:this}},onTrigger1Click:function(){t.clearImage()},onTrigger2Click:function(){t.editImage()}})},createImagePreview:function(){this.imagePreview=new Ext.BoxComponent({autoEl:{tag:"img",src:""}})},createTextFields:function(){var t=this;this.altTextField=MODx.load({xtype:"panel",items:{xtype:this.options.altTagOn?"textfield":"hidden",submitValue:!1,value:this.image.altTag||"",listeners:{change:{fn:this.onAltTagChange,scope:this},afterrender:function(){var e=this.getEl();e&&t.options.altTagOn&&(e.set({placeholder:_("imageplus.alt_text")}),e.insertSibling({tag:"span",cls:"icon icon-code",style:"position: absolute; left: 8px; top: 14px; opacity: 0.6",title:_("imageplus.alt_text")},"after",!0))}},width:400,style:{marginTop:"5px",paddingLeft:"25px"}}}),this.captionField=MODx.load({xtype:"panel",items:{xtype:this.options.captionOn?"textfield":"hidden",submitValue:!1,value:this.image.caption||"",listeners:{change:{fn:this.onCaptionChange,scope:this},afterrender:function(){var e=this.getEl();e&&t.options.captionOn&&(e.set({placeholder:_("imageplus.caption")}),e.insertSibling({tag:"span",cls:"icon icon-header",style:"position: absolute; left: 8px; top: 14px; opacity: 0.6",title:_("imageplus.caption")},"after",!0))}},width:400,style:{marginTop:"5px",paddingLeft:"25px"}}}),this.creditsField=MODx.load({xtype:"panel",items:{xtype:this.options.creditsOn?"textfield":"hidden",submitValue:!1,value:this.image.credits||"",listeners:{change:{fn:this.onCreditsChange,scope:this},afterrender:function(){var e=this.getEl();e&&t.options.creditsOn&&(e.set({placeholder:_("imageplus.credits")}),e.insertSibling({tag:"span",cls:"icon icon-copyright",style:"position: absolute; left: 8px; top: 14px; opacity: 0.6",title:_("imageplus.credits")},"after",!0))}},width:400,style:{marginTop:"5px",paddingLeft:"25px"}}})},generateThumbUrl:function(e){var t,n=MODx.config.connectors_url+"system/phpthumb.php",i={wctx:"mgr",w:this.options.thumbnailWidth,source:this.image.sourceImg.source};for(t in e)i[t]=e[t];var r="";for(t in i)r+=encodeURIComponent(t)+"="+encodeURIComponent(i[t])+"&";return n=0=i.options.targetRatio?(i.image.crop.width=i.image.sourceImg.width,i.image.crop.height=Math.ceil(i.image.sourceImg.width/i.options.targetRatio)):(i.image.crop.width=Math.ceil(i.image.sourceImg.height/i.options.targetRatio),i.image.crop.height=i.image.sourceImg.height):(i.image.crop.width=i.image.sourceImg.width,i.image.crop.height=i.image.sourceImg.height)),"function"==typeof t&&t(n)}),s.onerror=(r=this,function(){if(r.oldSourceImg){for(var e in this.oldSourceImg)r.image.sourceImg[e]=this.oldSourceImg[e];r.oldSourceImg.crop&&(r.image.crop.x=r.oldSourceImg.crop.x,r.image.crop.y=r.oldSourceImg.crop.y,r.image.crop.width=r.oldSourceImg.crop.width,r.image.crop.height=r.oldSourceImg.crop.height),r.imageBrowser.setValue(r.oldSource||"")}else r.imageBrowser.reset();return MODx.msg.alert(_("imageplus.error.image_not_found.title"),_("imageplus.error.image_not_found.msg")),!1}),s.src=o+this.image.sourceImg.src},updateDisplay:function(){if(this.checkImageIsLargeEnough())return this.oldSource=this.image.sourceImg.src,this.updatePreviewImage.defer(10,this),this.updateValue(),!0;if(this.oldSourceImg){for(var e in this.oldSourceImg)this.image.sourceImg[e]=this.oldSourceImg[e];this.oldSourceImg.crop&&(this.image.crop.x=this.oldSourceImg.crop.x,this.image.crop.y=this.oldSourceImg.crop.y,this.image.crop.width=this.oldSourceImg.crop.width,this.image.crop.height=this.oldSourceImg.crop.height),this.imageBrowser.setValue(this.oldSource||"")}else this.imageBrowser.reset();return MODx.msg.alert(_("imageplus.error.image_too_small.title"),_("imageplus.error.image_too_small.msg")),!1},getValue:function(e){this.image=Ext.util.JSON.decode(Ext.get(e).getValue()),this.image||(this.image={sourceImg:{height:0,width:0,source:this.options.mediaSource,src:Ext.get(e).getValue()},crop:{x:0,y:0,width:0,height:0}})},updateValue:function(){var e={sourceImg:this.image.sourceImg,crop:this.image.crop,targetWidth:this.options.targetWidth,targetHeight:this.options.targetHeight,altTag:this.image.altTag,caption:this.image.caption,credits:this.image.credits},e=JSON.stringify(e,null," "),t=document.getElementById(this.hiddenField),n=""!==(n=t.value||t.innerHTML||"")&&JSON.parse(n)?JSON.stringify(JSON.parse(n),null," "):"";t&&n!==e&&""!==this.image.sourceImg.src&&(t.value=e,MODx.fireResourceFormChange())},checkImageIsLargeEnough:function(){return void 0===this.image||!this.image.sourceImg||!(0this.image.sourceImg.width||0this.image.sourceImg.height)},editImage:function(){var e,t,n,i,r;!this.editorWindow&&this.image.sourceImg&&this.image.sourceImg.src&&(e=this.image.sourceImg.width,t=this.image.sourceImg.height,n=.7*window.innerHeight,i=.9*window.innerWidth,n'},JSON=JSON||{},!function(){"use strict";function f(e){return e<10?"0"+e:e}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(e){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(e){return this.valueOf()});var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(e){return escapable.lastIndex=0,escapable.test(e)?'"'+e.replace(escapable,function(e){var t=meta[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function str(e,t){var n,i,r,o,s,a=gap,u=t[e];switch(u&&"object"==typeof u&&"function"==typeof u.toJSON&&(u=u.toJSON(e)),typeof(u="function"==typeof rep?rep.call(t,e,u):u)){case"string":return quote(u);case"number":return isFinite(u)?String(u):"null";case"boolean":case"null":return String(u);case"object":if(!u)return"null";if(gap+=indent,s=[],"[object Array]"===Object.prototype.toString.apply(u)){for(o=u.length,n=0;n>10|55296,1023&e|56320))}function F(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}function H(){C()}var e,h,x,o,q,p,B,W,w,u,c,C,S,n,I,f,i,r,g,T="sizzle"+ +new Date,l=L.document,E=0,_=0,z=O(),U=O(),V=O(),m=O(),$=function(e,t){return e===t&&(c=!0),0},J={}.hasOwnProperty,t=[],X=t.pop,Y=t.push,D=t.push,Q=t.slice,v=function(e,t){for(var n=0,i=e.length;n+~]|"+s+")"+s+"*"),ie=new RegExp(s+"|>"),re=new RegExp(Z),oe=new RegExp("^"+a+"$"),b={ID:new RegExp("^#("+a+")"),CLASS:new RegExp("^\\.("+a+")"),TAG:new RegExp("^("+a+"|[*])"),ATTR:new RegExp("^"+K),PSEUDO:new RegExp("^"+Z),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+s+"*(even|odd|(([+-]|)(\\d*)n|)"+s+"*(?:([+-]|)"+s+"*(\\d+)|))"+s+"*\\)|)","i"),bool:new RegExp("^(?:"+G+")$","i"),needsContext:new RegExp("^"+s+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+s+"*((?:-\\d)?\\d*)"+s+"*\\)|)(?=[^-]|$)","i")},se=/HTML$/i,ae=/^(?:input|select|textarea|button)$/i,ue=/^h\d$/i,A=/^[^{]+\{\s*\[native \w/,ce=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,le=/[+~]/,k=new RegExp("\\\\[\\da-fA-F]{1,6}"+s+"?|\\\\([^\\r\\n\\f])","g"),de=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,he=ve(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{D.apply(t=Q.call(l.childNodes),l.childNodes),t[l.childNodes.length].nodeType}catch(e){D={apply:t.length?function(e,t){Y.apply(e,Q.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}function N(e,t,n,i){var r,o,s,a,u,c,l=t&&t.ownerDocument,d=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==d&&9!==d&&11!==d)return n;if(!i&&(C(t),t=t||S,I)){if(11!==d&&(a=ce.exec(e)))if(r=a[1]){if(9===d){if(!(c=t.getElementById(r)))return n;if(c.id===r)return n.push(c),n}else if(l&&(c=l.getElementById(r))&&g(t,c)&&c.id===r)return n.push(c),n}else{if(a[2])return D.apply(n,t.getElementsByTagName(e)),n;if((r=a[3])&&h.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(r)),n}if(h.qsa&&!m[e+" "]&&(!f||!f.test(e))&&(1!==d||"object"!==t.nodeName.toLowerCase())){if(c=e,l=t,1===d&&(ie.test(e)||ne.test(e))){for((l=le.test(e)&&me(t.parentNode)||t)===t&&h.scope||((s=t.getAttribute("id"))?s=s.replace(de,F):t.setAttribute("id",s=T)),o=(u=p(e)).length;o--;)u[o]=(s?"#"+s:":scope")+" "+M(u[o]);c=u.join(",")}try{return D.apply(n,l.querySelectorAll(c)),n}catch(t){m(e,!0)}finally{s===T&&t.removeAttribute("id")}}}return W(e.replace(y,"$1"),t,n,i)}function O(){var i=[];return function e(t,n){return i.push(t+" ")>x.cacheLength&&delete e[i.shift()],e[t+" "]=n}}function P(e){return e[T]=!0,e}function j(e){var t=S.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function pe(e,t){for(var n=e.split("|"),i=n.length;i--;)x.attrHandle[n[i]]=t}function fe(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&he(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function R(s){return P(function(o){return o=+o,P(function(e,t){for(var n,i=s([],e.length,o),r=i.length;r--;)e[n=i[r]]&&(e[n]=!(t[n]=e[n]))})})}function me(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in h=N.support={},q=N.isXML=function(e){var t=e&&e.namespaceURI,e=e&&(e.ownerDocument||e).documentElement;return!se.test(t||e&&e.nodeName||"HTML")},C=N.setDocument=function(e){var e=e?e.ownerDocument||e:l;return e!=S&&9===e.nodeType&&e.documentElement&&(n=(S=e).documentElement,I=!q(S),l!=S&&(e=S.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",H,!1):e.attachEvent&&e.attachEvent("onunload",H)),h.scope=j(function(e){return n.appendChild(e).appendChild(S.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),h.cssHas=j(function(){try{return S.querySelector(":has(*,:jqfake)"),0}catch(e){return 1}}),h.attributes=j(function(e){return e.className="i",!e.getAttribute("className")}),h.getElementsByTagName=j(function(e){return e.appendChild(S.createComment("")),!e.getElementsByTagName("*").length}),h.getElementsByClassName=A.test(S.getElementsByClassName),h.getById=j(function(e){return n.appendChild(e).id=T,!S.getElementsByName||!S.getElementsByName(T).length}),h.getById?(x.filter.ID=function(e){var t=e.replace(k,d);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if(void 0!==t.getElementById&&I)return(t=t.getElementById(e))?[t]:[]}):(x.filter.ID=function(e){var t=e.replace(k,d);return function(e){e=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}},x.find.ID=function(e,t){if(void 0!==t.getElementById&&I){var n,i,r,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(r=t.getElementsByName(e),i=0;o=r[i++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=h.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):h.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],r=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[r++];)1===n.nodeType&&i.push(n);return i},x.find.CLASS=h.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&I)return t.getElementsByClassName(e)},i=[],f=[],(h.qsa=A.test(S.querySelectorAll))&&(j(function(e){var t;n.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&f.push("[*^$]="+s+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||f.push("\\["+s+"*(?:value|"+G+")"),e.querySelectorAll("[id~="+T+"-]").length||f.push("~="),(t=S.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||f.push("\\["+s+"*name"+s+"*="+s+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||f.push(":checked"),e.querySelectorAll("a#"+T+"+*").length||f.push(".#.+[+~]"),e.querySelectorAll("\\\f"),f.push("[\\r\\n\\f]")}),j(function(e){e.innerHTML="";var t=S.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&f.push("name"+s+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&f.push(":enabled",":disabled"),n.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&f.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),f.push(",.*:")})),(h.matchesSelector=A.test(r=n.matches||n.webkitMatchesSelector||n.mozMatchesSelector||n.oMatchesSelector||n.msMatchesSelector))&&j(function(e){h.disconnectedMatch=r.call(e,"*"),r.call(e,"[s!='']:x"),i.push("!=",Z)}),h.cssHas||f.push(":has"),f=f.length&&new RegExp(f.join("|")),i=i.length&&new RegExp(i.join("|")),e=A.test(n.compareDocumentPosition),g=e||A.test(n.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){var n;return e===t?(c=!0,0):!e.compareDocumentPosition-!t.compareDocumentPosition||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!h.sortDetached&&t.compareDocumentPosition(e)===n?e==S||e.ownerDocument==l&&g(l,e)?-1:t==S||t.ownerDocument==l&&g(l,t)?1:u?v(u,e)-v(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return c=!0,0;var n,i=0,r=e.parentNode,o=t.parentNode,s=[e],a=[t];if(!r||!o)return e==S?-1:t==S?1:r?-1:o?1:u?v(u,e)-v(u,t):0;if(r===o)return fe(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;s[i]===a[i];)i++;return i?fe(s[i],a[i]):s[i]==l?-1:a[i]==l?1:0}),S},N.matches=function(e,t){return N(e,null,null,t)},N.matchesSelector=function(e,t){if(C(e),h.matchesSelector&&I&&!m[t+" "]&&(!i||!i.test(t))&&(!f||!f.test(t)))try{var n=r.call(e,t);if(n||h.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){m(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(k,d),e[3]=(e[3]||e[4]||e[5]||"").replace(k,d),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||N.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&N.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return b.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&re.test(n)&&(t=(t=p(n,!0))&&n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(k,d).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=z[e+" "];return t||(t=new RegExp("(^|"+s+")"+e+"("+s+"|$)"))&&z(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,i){return function(e){e=N.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===i:"!="===n?e!==i:"^="===n?i&&0===e.indexOf(i):"*="===n?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function K(e,n,i){return m(n)?x.grep(e,function(e,t){return!!n.call(e,t,e)!==i}):n.nodeType?x.grep(e,function(e){return e===n!==i}):"string"!=typeof n?x.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/,te=((x.fn.init=function(e,t,n){if(e){if(n=n||Z,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(x):x.makeArray(e,this);if(!(i="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:ee.exec(e))||!i[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(i[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:b,!0)),G.test(i[1])&&x.isPlainObject(t))for(var i in t)m(this[i])?this[i](t[i]):this.attr(i,t[i])}else(n=b.getElementById(i[2]))&&(this[0]=n,this.length=1)}return this}).prototype=x.fn,Z=x(b),/^(?:parents|prev(?:Until|All))/),ne={children:!0,contents:!0,next:!0,prev:!0};function ie(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}x.fn.extend({has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,we=/^$|^module$|\/(?:java|ecma)script/i,r=b.createDocumentFragment().appendChild(b.createElement("div")),D=((O=b.createElement("input")).setAttribute("type","radio"),O.setAttribute("checked","checked"),O.setAttribute("name","t"),r.appendChild(O),v.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,r.innerHTML="",v.noCloneChecked=!!r.cloneNode(!0).lastChild.defaultValue,r.innerHTML="",v.option=!!r.lastChild,{thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]});function A(e,t){var n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&u(e,t)?x.merge([e],n):n}function Ce(e,t){for(var n=0,i=e.length;n",""]);var Se=/<|&#?\w+;/;function Ie(e,t,n,i,r){for(var o,s,a,u,c,l=t.createDocumentFragment(),d=[],h=0,p=e.length;h\s*$/g;function Pe(e,t){return u(e,"table")&&u(11!==t.nodeType?t:t.firstChild,"tr")&&x(e).children("tbody")[0]||e}function je(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,i,r,o;if(1===t.nodeType){if(S.hasData(e)&&(o=S.get(e).events))for(r in S.remove(t,"handle events"),o)for(n=0,i=o[r].length;n
",2===O.childNodes.length),x.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((i=(t=b.implementation.createHTMLDocument("")).createElement("base")).href=b.location.href,t.head.appendChild(i)):t=b),i=!n&&[],(n=G.exec(e))?[t.createElement(n[1])]:(n=Ie([e],t,i),i&&i.length&&x(i).remove(),x.merge([],n.childNodes)));var i},x.offset={setOffset:function(e,t,n){var i,r,o,s,a=x.css(e,"position"),u=x(e),c={};"static"===a&&(e.style.position="relative"),o=u.offset(),i=x.css(e,"top"),s=x.css(e,"left"),a=("absolute"===a||"fixed"===a)&&-1<(i+s).indexOf("auto")?(r=(a=u.position()).top,a.left):(r=parseFloat(i)||0,parseFloat(s)||0),null!=(t=m(t)?t.call(e,n,x.extend({},o)):t).top&&(c.top=t.top-o.top+r),null!=t.left&&(c.left=t.left-o.left+a),"using"in t?t.using.call(e,c):u.css(c)}},x.fn.extend({offset:function(t){var e,n;return arguments.length?void 0===t?this:this.each(function(e){x.offset.setOffset(this,t,e)}):(n=this[0])?n.getClientRects().length?(e=n.getBoundingClientRect(),n=n.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,i=this[0],r={top:0,left:0};if("fixed"===x.css(i,"position"))t=i.getBoundingClientRect();else{for(t=this.offset(),n=i.ownerDocument,e=i.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===x.css(e,"position");)e=e.parentNode;e&&e!==i&&1===e.nodeType&&((r=x(e).offset()).top+=x.css(e,"borderTopWidth",!0),r.left+=x.css(e,"borderLeftWidth",!0))}return{top:t.top-r.top-x.css(i,"marginTop",!0),left:t.left-r.left-x.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===x.css(e,"position");)e=e.offsetParent;return e||I})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,r){var o="pageYOffset"===r;x.fn[t]=function(e){return d(this,function(e,t,n){var i;if(y(e)?i=e:9===e.nodeType&&(i=e.defaultView),void 0===n)return i?i[r]:e[t];i?i.scrollTo(o?i.pageXOffset:n,o?n:i.pageYOffset):e[t]=n},t,e,arguments.length)}}),x.each(["top","left"],function(e,n){x.cssHooks[n]=Qe(v.pixelPosition,function(e,t){if(t)return t=P(e,n),$e.test(t)?x(e).position()[n]+"px":t})}),x.each({Height:"height",Width:"width"},function(s,a){x.each({padding:"inner"+s,content:a,"":"outer"+s},function(i,o){x.fn[o]=function(e,t){var n=arguments.length&&(i||"boolean"!=typeof e),r=i||(!0===e||!0===t?"margin":"border");return d(this,function(e,t,n){var i;return y(e)?0===o.indexOf("outer")?e["inner"+s]:e.document.documentElement["client"+s]:9===e.nodeType?(i=e.documentElement,Math.max(e.body["scroll"+s],i["scroll"+s],e.body["offset"+s],i["offset"+s],i["client"+s])):void 0===n?x.css(e,t,r):x.style(e,t,n,r)},a,n?e:void 0,n)}})}),x.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),x.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){x.fn[n]=function(e,t){return 0T.minSelect[0]&&e.h>T.minSelect[1]?(j.enableHandles(),j.done()):j.release(),R.setCursor(T.allowSelect?"crosshair":"default")}function z(e){var t;if(!T.disabled&&T.allowSelect)return r=!0,k=u(I),j.disableHandles(),R.setCursor("crosshair"),t=n(e),O.setPressed(t),j.update(),R.activateHandlers(U,_,"touch"===e.type.substring(0,5)),fe.watchKeys(),e.stopPropagation(),e.preventDefault(),!1}function U(e){O.setCurrent(e),j.update()}function V(){var e=je("
").addClass(S("tracker"));return Z&&e.css({opacity:0,backgroundColor:"white"}),e}function $(e){J([e[0]/y,e[1]/v,e[2]/y,e[3]/v]),T.onSelect.call(M,W(O.getFixed())),j.enableHandles()}function J(e){O.setPressed([e[0],e[1]]),O.setCurrent([e[2],e[3]]),j.update()}function X(){T.disabled=!0,j.disableHandles(),j.setCursor("default"),R.setCursor("default")}function Y(){T.disabled=!1,G()}function Q(e,t,n){t=t||T.bgColor;T.bgFade&&je.fx.step.hasOwnProperty("backgroundColor")&&T.fadeTime&&!n?e.animate({backgroundColor:t},{queue:!1,duration:T.fadeTime}):e.css("backgroundColor",t)}function G(e){T.allowResize?e?j.enableOnly():j.enableHandles():j.disableHandles(),R.setCursor(T.allowSelect?"crosshair":"default"),j.setCursor(T.allowMove?"move":"default"),T.hasOwnProperty("trueSize")&&(y=T.trueSize[0]/p,v=T.trueSize[1]/f),T.hasOwnProperty("setSelect")&&($(T.setSelect),j.done(),delete T.setSelect),P.refresh(),T.bgColor!=he&&(Q(T.shade?P.getShades():a,T.shade&&T.shadeColor||T.bgColor),he=T.bgColor),pe!=T.bgOpacity&&(pe=T.bgOpacity,T.shade?P.refresh():j.setBgOpacity(pe)),g=T.maxSize[0]||0,ne=T.maxSize[1]||0,ie=T.minSize[0]||0,re=T.minSize[1]||0,T.hasOwnProperty("outerImage")&&(I.attr("src",T.outerImage),delete T.outerImage),j.refresh()}var I,T=je.extend({},je.Jcrop.defaults),K=navigator.userAgent.toLowerCase(),Z=/msie/.test(K),K=/msie [1-6]\./.test(K),t=("object"!=typeof e&&(e=je(e)[0]),L(t="object"!=typeof t?{}:t),{border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0}),i=je(e),ee=!0,p=("IMG"==e.tagName?(0!=i[0].width&&0!=i[0].height?(i.width(i[0].width),i.height(i[0].height)):((se=new Image).src=i[0].src,i.width(se.width),i.height(se.height)),(I=i.clone().removeAttr("id").css(t).show()).width(i.width()),I.height(i.height()),i.after(I).hide()):(I=i.css(t).show(),ee=!1,null===T.shade&&(T.shade=!0)),B(I,T.boxWidth,T.boxHeight),I.width()),f=I.height(),a=je("
").width(p).height(f).addClass(S("holder")).css({position:"relative",backgroundColor:T.bgColor}).insertAfter(i).append(I),E=(T.addClass&&a.addClass(T.addClass),je("
")),te=je("
").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),D=je("
").width("100%").height("100%").css("zIndex",320),A=je("
").css({position:"absolute",zIndex:600}).dblclick(function(){var e=O.getFixed();T.onDblClick.call(M,e)}).insertBefore(I).append(te,D);ee&&(E=je("").attr("src",I.attr("src")).css(t).width(p).height(f),te.append(E)),K&&A.css({overflowY:"hidden"});var g,ne,ie,re,y,v,r,oe,o,se,ae,ue,ce,s,c,l,le,de,m,b,x,w,d=T.boundary,h=V().width(p+2*d).height(f+2*d).css({position:"absolute",top:C(-d),left:C(-d),zIndex:290}).mousedown(z),he=T.bgColor,pe=T.bgOpacity,k=u(I),N={createDragger:function(t){return function(e){return T.disabled||"move"===t&&!T.allowMove||(k=u(I),r=!0,F(t,n(N.cfilter(e)),!0),e.stopPropagation(),e.preventDefault()),!1}},newSelection:function(e){return z(N.cfilter(e))},cfilter:function(e){return e.pageX=e.originalEvent.changedTouches[0].pageX,e.pageY=e.originalEvent.changedTouches[0].pageY,e},isSupported:Pe,support:!0===T.touchSupport||!1===T.touchSupport?T.touchSupport:Pe()},O=(w=x=b=m=0,{flipCoords:Ne,setPressed:function(e){e=ke(e),x=m=e[0],w=b=e[1]},setCurrent:function(e){e=ke(e),le=e[0]-x,de=e[1]-w,x=e[0],w=e[1]},getOffset:function(){return[le,de]},moveOffset:function(e){var t=e[0],e=e[1];m+t<0&&(t-=t+m),b+e<0&&(e-=e+b),f").css({position:"absolute",zIndex:240,opacity:0}),l={top:Ce(),left:Ce().height(f),right:Ce().height(f),bottom:Ce()},{update:xe,updateRaw:we,getShades:De,setBgColor:Ie,enable:Se,disable:Te,resize:function(e,t){l.left.css({height:C(t)}),l.right.css({height:C(t)})},refresh:function(){(T.shade?Se:Te)(),j.isAwake()&&Ee(T.bgOpacity)},opacity:Ee}),j=function(){function e(e,t){t=je("
").mousedown(q(e)).css({cursor:e+"-resize",position:"absolute",zIndex:t}).addClass("ord-"+e);return N.support&&t.bind("touchstart.jcrop",N.createDragger(e)),D.append(t),t}function t(){var e=O.getFixed();O.setPressed([e.x,e.y]),O.setCurrent([e.x2,e.y2]),n()}function n(e){return u?i(e):void 0}function i(e){var t,n,i=O.getFixed();t=i.w,n=i.h,A.width(Math.round(t)).height(Math.round(n)),t=i.x,n=i.y,T.shade||E.css({top:C(-n),left:C(-t)}),A.css({top:C(n),left:C(t)}),T.shade&&P.updateRaw(i),u||(A.show(),T.shade?P.opacity(pe):r(pe,!0),u=!0),(e?T.onSelect:T.onChange).call(M,W(i))}function r(e,t,n){(u||t)&&(T.bgFade&&!n?I.animate({opacity:e},{queue:!1,duration:T.fadeTime}):I.css("opacity",e))}function o(){return l=!0,T.allowResize?(D.show(),!0):void 0}function s(){l=!1,D.hide()}function a(e){(e?(oe=!0,s):(oe=!1,o))()}var u,c=370,l=!1;if(T.dragEdges&&je.isArray(T.createDragbars))for(var d=T.createDragbars,h=0;h").css({position:"absolute",opacity:T.borderOpacity}).addClass(S(b)),te.append(b),b}je(document).bind("touchstart.jcrop-ios",function(e){je(e.currentTarget).hasClass("jcrop-tracker")&&e.stopPropagation()});var w=V().mousedown(q("move")).css({cursor:"move",position:"absolute",zIndex:360});return N.support&&w.bind("touchstart.jcrop",N.createDragger("move")),te.append(w),s(),{updateVisible:n,update:i,release:function(){s(),A.hide(),T.shade?P.opacity(1):r(1),u=!1,T.onRelease.call(M)},refresh:t,isAwake:function(){return u},setCursor:function(e){w.css("cursor",e)},enableHandles:o,enableOnly:function(){l=!0},showHandles:function(){l&&D.show()},disableHandles:s,animMode:a,setBgOpacity:r,done:function(){a(!1),t()}}}(),R=(ae=function(){},ue=function(){},(ce=T.trackDocument)||h.mousemove(me).mouseup(ye).mouseout(ye),I.before(h),{activateHandlers:function(e,t,n){return r=!0,ae=e,ue=t,e=n,h.css({zIndex:450}),e?je(document).bind("touchmove.jcrop",ve).bind("touchend.jcrop",be):ce&&je(document).bind("mousemove.jcrop",me).bind("mouseup.jcrop",ye),!1},setCursor:function(e){h.css("cursor",e)}}),fe=(o=je('').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),se=je("
").css({position:"absolute",overflow:"hidden"}).append(o),T.keySupport&&(o.keydown(function(e){if(e.ctrlKey||e.metaKey)return!0;var t=!!e.shiftKey?10:1;switch(e.keyCode){case 37:ge(e,-t,0);break;case 39:ge(e,t,0);break;case 38:ge(e,0,-t);break;case 40:ge(e,0,t);break;case 27:T.allowSelect&&j.release();break;case 9:return!0}return!1}).blur(function(){o.hide()}),(K||!T.fixedSupport?(o.css({position:"absolute",left:"-20px"}),se.append(o)):o).insertBefore(I)),{watchKeys:function(){T.keySupport&&(o.show(),o.focus())}});function ge(e,t,n){T.allowMove&&(O.moveOffset([t,n]),j.updateVisible(!0)),e.preventDefault(),e.stopPropagation()}function me(e){return ae(n(e)),!1}function ye(e){return e.preventDefault(),e.stopPropagation(),r&&(r=!1,ue(n(e)),j.isAwake()&&T.onSelect.call(M,W(O.getFixed())),h.css({zIndex:290}),je(document).unbind(".jcrop"),ae=function(){},ue=function(){}),!1}function ve(e){return ae(n(N.cfilter(e))),!1}function be(e){return ye(N.cfilter(e))}function xe(){return we(O.getFixed())}function we(e){l.top.css({left:C(e.x),width:C(e.w),height:C(e.y)}),l.bottom.css({top:C(e.y2),left:C(e.x),width:C(e.w),height:C(f-e.y2)}),l.right.css({left:C(e.x2),width:C(p-e.x2)}),l.left.css({width:C(e.x)})}function Ce(){return je("
").css({position:"absolute",backgroundColor:T.shadeColor||T.bgColor}).appendTo(c)}function Se(){s||(s=!0,c.insertBefore(I),xe(),j.setBgOpacity(1,0,1),E.hide(),Ie(T.shadeColor||T.bgColor,1),j.isAwake()?Ee(T.bgOpacity,1):Ee(1,1))}function Ie(e,t){Q(De(),e,t)}function Te(){s&&(c.remove(),E.show(),s=!1,j.isAwake()?j.setBgOpacity(T.bgOpacity,1,1):(j.setBgOpacity(1,1,1),j.disableHandles()),Q(a,0,1))}function Ee(e,t){s&&(T.bgFade&&!t?c.animate({opacity:1-e},{queue:!1,duration:T.fadeTime}):c.css({opacity:1-e}))}function De(){return c.children()}function Ae(){var e,t,n,i,r,o,s,a,u,c,l,d,h;return T.aspectRatio?(o=T.aspectRatio,s=T.minSize[0]/y,a=T.maxSize[0]/y,u=T.maxSize[1]/v,c=x-m,l=w-b,d=Math.abs(c),h=Math.abs(l),0===a&&(a=10*p),0==u&&(u=10*f),d/hg&&(x=0ne&&(w=0p&&(e[0]=p),e[1]>f&&(e[1]=f),[Math.round(e[0]),Math.round(e[1])]}function Ne(e,t,n,i){var r=e,o=n,s=t,a=i;return n'}],listeners:{afterRender:{fn:this.onAfterRender,scope:this},destroy:{fn:function(){this.cropper.destroy()},scope:this}}}),ImagePlus.jquery.ImageCrop.superclass.constructor.call(this,e)},Ext.extend(ImagePlus.jquery.ImageCrop,Ext.Panel,{onAfterRender:function(){this.initJcrop.defer(10,this)},initJcrop:function(){this.$image=$jqIP("#"+this.imageDOMid).data("ext",this.window);var t,e,n={minSize:this.window.getMinCropSize(),aspectRatio:this.window.getAspectRatio(),setSelect:this.window.getCropCoords(),outerImage:this.window.getOuterImageUrl(),onSelect:(t=this.window,function(e){t.onCropChange({x:e.x,y:e.y,width:e.w,height:e.h})})};this.$image.Jcrop(n,(e=this,function(){(e.cropper=this).setOptions({outerImage:e.window.getOuterImageUrl(),bgOpacity:.5})}))},get_image:function(){return this.$image}}),Ext.reg("imageplus-jquery-imagecrop",ImagePlus.jquery.ImageCrop),ImagePlus.grid.SizesRatio=function(e){e=e||{},this.ident="imageplus-sizesratio-"+Ext.id(),this.buttonColumnTpl=new Ext.XTemplate('
',{compiled:!0}),this.hiddenField=new Ext.form.TextArea({name:e.hiddenName||e.name,hidden:!0}),Ext.applyIf(e,{id:this.ident+"-systemsetting-grid",cls:"modx-grid-small",fields:["id","name","targetwidth","targetheight","targetRatio","rank"],autoHeight:!0,store:new Ext.data.JsonStore({fields:["id","name","targetwidth","targetheight","targetRatio","rank"],data:Ext.util.JSON.decode(e.value)}),enableDragDrop:!0,ddGroup:this.ident+"-sizes-ratio-grid-dd",autoExpandColumn:"value",showActionsColumn:!1,labelStyle:"position: absolute",columns:[{header:_("imageplus.gridsetting_configname"),dataIndex:"name",editable:!0,editor:{xtype:"textfield",allowBlank:!1,listeners:{change:{fn:this.saveValue,scope:this}}},width:100},{header:_("imageplus.gridsetting_target_width"),dataIndex:"targetwidth",editable:!0,editor:{xtype:"textfield",listeners:{change:{fn:this.saveValue,scope:this}}},width:75},{header:_("imageplus.gridsetting_target_height"),dataIndex:"targetheight",editable:!0,editor:{xtype:"textfield",listeners:{change:{fn:this.saveValue,scope:this}}},width:75},{header:_("imageplus.gridsetting_target_ratio"),dataIndex:"targetRatio",editable:!0,editor:{xtype:"textfield",listeners:{change:{fn:this.saveValue,scope:this}}},width:100},{renderer:{fn:this.buttonColumnRenderer,scope:this},menuDisabled:!0,width:30,fixed:!0},{dataIndex:"rank",hidden:!0},{dataIndex:"id",hidden:!0}],tbar:["->",{text:' '+_("add"),cls:"primary-button",handler:this.addEntry,scope:this}],listeners:{render:{fn:this.renderListener,scope:this}}}),ImagePlus.grid.SizesRatio.superclass.constructor.call(this,e)},Ext.extend(ImagePlus.grid.SizesRatio,MODx.grid.LocalGrid,{windows:{},getMenu:function(){var e=[];return e.push({text:_("remove"),handler:this.removeEntry}),e},addEntry:function(){var e=new(this.getStore().recordType)({targetwidth:"",targetheight:"",targetRatio:""});this.getStore().insert(0,e),this.getView().refresh(),this.getSelectionModel().selectRow(0)},removeEntry:function(){Ext.Msg.confirm(_("remove")||"",_("confirm_remove")||"",function(e){if("yes"===e){var t=this.getStore(),n=this.getSelectionModel().getSelections();if(!n.length)return!1;for(var i=0;ilexicon->load('tvimageplus:default'); - -// Handle request -$modx->request->handleRequest(array( - 'processors_path' => $modx->getOption('core_path').'components/tvimageplus/processors/', - 'location' => '', -)); \ No newline at end of file diff --git a/assets/components/tvimageplus/mgr/css/jquery/jquery.jcrop.min.css b/assets/components/tvimageplus/mgr/css/jquery/jquery.jcrop.min.css deleted file mode 100644 index a59f0a73..00000000 --- a/assets/components/tvimageplus/mgr/css/jquery/jquery.jcrop.min.css +++ /dev/null @@ -1,28 +0,0 @@ -/* jquery.Jcrop.min.css v0.9.10 (build:20120429) */ -.jcrop-holder{direction:ltr;text-align:left;} -.jcrop-vline,.jcrop-hline{background:#FFF url(Jcrop.gif) top left repeat;font-size:0;position:absolute;} -.jcrop-vline{height:100%;width:1px!important;} -.jcrop-hline{height:1px!important;width:100%;} -.jcrop-vline.right{right:0;} -.jcrop-hline.bottom{bottom:0;} -.jcrop-handle{background-color:#333;border:1px #eee solid;font-size:1px;} -.jcrop-tracker{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;height:100%;width:100%;} -.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0;} -.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px;} -.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%;} -.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%;} -.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0;} -.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0;} -.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0;} -.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px;} -.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%;} -.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px;} -.jcrop-dragbar.ord-n{margin-top:-4px;} -.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px;} -.jcrop-dragbar.ord-e{margin-right:-4px;right:0;} -.jcrop-dragbar.ord-w{margin-left:-4px;} -.jcrop-light .jcrop-vline,.jcrop-light .jcrop-hline{background:#FFF;filter:Alpha(opacity=70)!important;opacity:.70!important;} -.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#FFF;border-radius:3px;} -.jcrop-dark .jcrop-vline,.jcrop-dark .jcrop-hline{background:#000;filter:Alpha(opacity=70)!important;opacity:.7!important;} -.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#FFF;border-color:#000;border-radius:3px;} -.jcrop-holder img,img.jcrop-preview{max-width:none;} \ No newline at end of file diff --git a/assets/components/tvimageplus/mgr/js/jquery/jquery.jcrop.min.js b/assets/components/tvimageplus/mgr/js/jquery/jquery.jcrop.min.js deleted file mode 100644 index a6231e74..00000000 --- a/assets/components/tvimageplus/mgr/js/jquery/jquery.jcrop.min.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * jquery.Jcrop.min.js v0.9.10 (build:20120626) - * jQuery Image Cropping Plugin - released under MIT License - * Copyright (c) 2008-2012 Tapmodo Interactive LLC - * https://github.com/tapmodo/Jcrop - */ -(function(a){a.Jcrop=function(b,c){function h(a){return Math.round(a)+"px"}function i(a){return d.baseClass+"-"+a}function j(){return a.fx.step.hasOwnProperty("backgroundColor")}function k(b){var c=a(b).offset();return[c.left,c.top]}function l(a){return[a.pageX-e[0],a.pageY-e[1]]}function m(b){typeof b!="object"&&(b={}),d=a.extend(d,b),a.each(["onChange","onSelect","onRelease","onDblClick"],function(a,b){typeof d[b]!="function"&&(d[b]=function(){})})}function n(a,b){e=k(C),bb.setCursor(a==="move"?a:a+"-resize");if(a==="move")return bb.activateHandlers(p(b),u);var c=Z.getFixed(),d=q(a),f=Z.getCorner(q(d));Z.setPressed(Z.getCorner(d)),Z.setCurrent(f),bb.activateHandlers(o(a,c),u)}function o(a,b){return function(c){if(!d.aspectRatio)switch(a){case"e":c[1]=b.y2;break;case"w":c[1]=b.y2;break;case"n":c[0]=b.x2;break;case"s":c[0]=b.x2}else switch(a){case"e":c[1]=b.y+1;break;case"w":c[1]=b.y+1;break;case"n":c[0]=b.x+1;break;case"s":c[0]=b.x+1}Z.setCurrent(c),ba.update()}}function p(a){var b=a;return bc.watchKeys(),function( -a){Z.moveOffset([a[0]-b[0],a[1]-b[1]]),b=a,ba.update()}}function q(a){switch(a){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function r(a){return function(b){return d.disabled?!1:a==="move"&&!d.allowMove?!1:(e=k(C),V=!0,n(a,l(b)),b.stopPropagation(),b.preventDefault(),!1)}}function s(a,b,c){var d=a.width(),e=a.height();d>b&&b>0&&(d=b,e=b/a.width()*a.height()),e>c&&c>0&&(e=c,d=c/a.height()*a.width()),S=a.width()/d,T=a.height()/e,a.width(d).height(e)}function t(a){return{x:a.x*S,y:a.y*T,x2:a.x2*S,y2:a.y2*T,w:a.w*S,h:a.h*T}}function u(a){var b=Z.getFixed();b.w>d.minSelect[0]&&b.h>d.minSelect[1]?(ba.enableHandles(),ba.done()):ba.release(),bb.setCursor(d.allowSelect?"crosshair":"default")}function v(a){if(d.disabled)return!1;if(!d.allowSelect)return!1;V=!0,e=k(C),ba.disableHandles(),bb.setCursor("crosshair");var b=l(a);return Z.setPressed(b),ba.update(),bb.activateHandlers(w,u),bc.watchKeys(),a.stopPropagation -(),a.preventDefault(),!1}function w(a){Z.setCurrent(a),ba.update()}function x(){var b=a("
").addClass(i("tracker"));return a.browser.msie&&b.css({opacity:0,backgroundColor:"white"}),b}function bd(a){F.removeClass().addClass(i("holder")).addClass(a)}function be(a,b){function t(){window.setTimeout(u,l)}var c=a[0]/S,e=a[1]/T,f=a[2]/S,g=a[3]/T;if(W)return;var h=Z.flipCoords(c,e,f,g),i=Z.getFixed(),j=[i.x,i.y,i.x2,i.y2],k=j,l=d.animationDelay,m=h[0]-j[0],n=h[1]-j[1],o=h[2]-j[2],p=h[3]-j[3],q=0,r=d.swingSpeed;c=k[0],e=k[1],f=k[2],g=k[3],ba.animMode(!0);var s,u=function(){return function(){q+=(100-q)/r,k[0]=Math.round(c+q/100*m),k[1]=Math.round(e+q/100*n),k[2]=Math.round(f+q/100*o),k[3]=Math.round(g+q/100*p),q>=99.8&&(q=100),q<100?(bg(k),t()):(ba.done(),ba.animMode(!1),typeof b=="function"&&b.call(br))}}();t()}function bf(a){bg([a[0]/S,a[1]/T,a[2]/S,a[3]/T]),d.onSelect.call(br,t(Z.getFixed())),ba.enableHandles()}function bg(a){Z.setPressed([a[0],a[1]]),Z.setCurrent([a[2],a[3]]),ba.update()}function bh(){return t -(Z.getFixed())}function bi(){return Z.getFixed()}function bj(a){m(a),bq()}function bk(){d.disabled=!0,ba.disableHandles(),ba.setCursor("default"),bb.setCursor("default")}function bl(){d.disabled=!1,bq()}function bm(){ba.done(),bb.activateHandlers(null,null)}function bn(){F.remove(),z.show(),a(b).removeData("Jcrop")}function bo(a,b){ba.release(),bk();var c=new Image;c.onload=function(){var e=c.width,f=c.height,g=d.boxWidth,h=d.boxHeight;C.width(e).height(f),C.attr("src",a),G.attr("src",a),s(C,g,h),D=C.width(),E=C.height(),G.width(D).height(E),L.width(D+K*2).height(E+K*2),F.width(D).height(E),_.resize(D,E),bl(),typeof b=="function"&&b.call(br)},c.src=a}function bp(a,b,c){var e=b||d.bgColor;d.bgFade&&j()&&d.fadeTime&&!c?a.animate({backgroundColor:e},{queue:!1,duration:d.fadeTime}):a.css("backgroundColor",e)}function bq(a){d.allowResize?a?ba.enableOnly():ba.enableHandles():ba.disableHandles(),bb.setCursor(d.allowSelect?"crosshair":"default"),ba.setCursor(d.allowMove?"move":"default"),d.hasOwnProperty("trueSize")&& -(S=d.trueSize[0]/D,T=d.trueSize[1]/E),d.hasOwnProperty("setSelect")&&(bf(d.setSelect),ba.done(),delete d.setSelect),_.refresh(),d.bgColor!=M&&(bp(d.shade?_.getShades():F,d.shade?d.shadeColor||d.bgColor:d.bgColor),M=d.bgColor),N!=d.bgOpacity&&(N=d.bgOpacity,d.shade?_.refresh():ba.setBgOpacity(N)),O=d.maxSize[0]||0,P=d.maxSize[1]||0,Q=d.minSize[0]||0,R=d.minSize[1]||0,d.hasOwnProperty("outerImage")&&(C.attr("src",d.outerImage),delete d.outerImage),ba.refresh()}var d=a.extend({},a.Jcrop.defaults),e,f,g=!1;a.browser.msie&&a.browser.version.split(".")[0]==="6"&&(g=!0),typeof b!="object"&&(b=a(b)[0]),typeof c!="object"&&(c={}),m(c);var y={border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0},z=a(b),A=!0;if(b.tagName=="IMG"){if(z[0].width!=0&&z[0].height!=0)z.width(z[0].width),z.height(z[0].height);else{var B=new Image;B.src=z[0].src,z.width(B.width),z.height(B.height)}var C=z.clone().removeAttr("id").css(y).show();C.width(z.width()),C.height(z.height()),z.after(C).hide()}else C=z.css -(y).show(),A=!1,d.shade===null&&(d.shade=!0);s(C,d.boxWidth,d.boxHeight);var D=C.width(),E=C.height(),F=a("
").width(D).height(E).addClass(i("holder")).css({position:"relative",backgroundColor:d.bgColor}).insertAfter(z).append(C);d.addClass&&F.addClass(d.addClass);var G=a("
"),H=a("
").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),I=a("
").width("100%").height("100%").css("zIndex",320),J=a("
").css({position:"absolute",zIndex:600}).dblclick(function(){var a=Z.getFixed();d.onDblClick.call(br,a)}).insertBefore(C).append(H,I);A&&(G=a("").attr("src",C.attr("src")).css(y).width(D).height(E),H.append(G)),g&&J.css({overflowY:"hidden"});var K=d.boundary,L=x().width(D+K*2).height(E+K*2).css({position:"absolute",top:h(-K),left:h(-K),zIndex:290}).mousedown(v),M=d.bgColor,N=d.bgOpacity,O,P,Q,R,S,T,U=!0,V,W,X;e=k(C);var Y=function(){function a(){var a={},b=["touchstart","touchmove","touchend"],c=document.createElement("div"),d;try{for(d=0;da+f&&(f-=f+a),0>b+g&&(g-=g+b),ED&&(r=D,u=Math.abs((r-a)/f),s=k<0?b-u:u+b)):(r=c,u=l/f,s=k<0?b-u:b+u,s<0?(s=0,t=Math.abs((s-b)*f),r=j<0?a-t:t+a):s>E&&(s=E,t=Math.abs(s-b)*f,r=j<0?a-t:t+a)),r>a?(r-ah&&(r=a+h),s>b?s=b+(r-a)/f:s=b-(r-a)/f):rh&&(r=a-h),s>b?s=b+(a-r)/f:s=b-(a-r)/f),r<0?(a-=r,r=0):r>D&&(a-=r-D,r=D),s<0?(b-=s,s=0):s>E&&(b-=s-E,s=E),q(o(a,b,r,s))}function n(a){return a[0]<0&&(a[0]=0),a[1]<0&&(a[1]=0),a[0]>D&&(a[0]=D),a[1]>E&&(a[1]=E),[a[0],a[1]]}function o(a,b,c,d){var e=a,f=c,g=b,h=d;return cO&&(c=d>0?a+O:a-O),P&&Math.abs(f)>P&&(e=f>0?b+P:b-P),R/T&&Math.abs(f)0?b+R/T:b-R/T),Q/S&&Math. -abs(d)0?a+Q/S:a-Q/S),a<0&&(c-=a,a-=a),b<0&&(e-=b,b-=b),c<0&&(a-=c,c-=c),e<0&&(b-=e,e-=e),c>D&&(g=c-D,a-=g,c-=g),e>E&&(g=e-E,b-=g,e-=g),a>D&&(g=a-E,e-=g,b-=g),b>E&&(g=b-E,e-=g,b-=g),q(o(a,b,c,e))}function q(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}var a=0,b=0,c=0,e=0,f,g;return{flipCoords:o,setPressed:h,setCurrent:i,getOffset:j,moveOffset:k,getCorner:l,getFixed:m}}(),_=function(){function f(a,b){e.left.css({height:h(b)}),e.right.css({height:h(b)})}function g(){return i(Z.getFixed())}function i(a){e.top.css({left:h(a.x),width:h(a.w),height:h(a.y)}),e.bottom.css({top:h(a.y2),left:h(a.x),width:h(a.w),height:h(E-a.y2)}),e.right.css({left:h(a.x2),width:h(D-a.x2)}),e.left.css({width:h(a.x)})}function j(){return a("
").css({position:"absolute",backgroundColor:d.shadeColor||d.bgColor}).appendTo(c)}function k(){b||(b=!0,c.insertBefore(C),g(),ba.setBgOpacity(1,0,1),G.hide(),l(d.shadeColor||d.bgColor,1),ba.isAwake()?n(d.bgOpacity,1):n(1,1))}function l(a,b){bp(p(),a,b)}function m(){ -b&&(c.remove(),G.show(),b=!1,ba.isAwake()?ba.setBgOpacity(d.bgOpacity,1,1):(ba.setBgOpacity(1,1,1),ba.disableHandles()),bp(F,0,1))}function n(a,e){b&&(d.bgFade&&!e?c.animate({opacity:1-a},{queue:!1,duration:d.fadeTime}):c.css({opacity:1-a}))}function o(){d.shade?k():m(),ba.isAwake()&&n(d.bgOpacity)}function p(){return c.children()}var b=!1,c=a("
").css({position:"absolute",zIndex:240,opacity:0}),e={top:j(),left:j().height(E),right:j().height(E),bottom:j()};return{update:g,updateRaw:i,getShades:p,setBgColor:l,enable:k,disable:m,resize:f,refresh:o,opacity:n}}(),ba=function(){function k(b){var c=a("
").css({position:"absolute",opacity:d.borderOpacity}).addClass(i(b));return H.append(c),c}function l(b,c){var d=a("
").mousedown(r(b)).css({cursor:b+"-resize",position:"absolute",zIndex:c}).addClass("ord-"+b);return Y.support&&d.bind("touchstart.jcrop",Y.createDragger(b)),I.append(d),d}function m(a){var b=d.handleSize;return l(a,c++).css({opacity:d.handleOpacity}).width(b).height(b).addClass(i("handle" -))}function n(a){return l(a,c++).addClass("jcrop-dragbar")}function o(a){var b;for(b=0;b').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),c=a("
").css({position:"absolute",overflow:"hidden"}).append(b);return d.keySupport&&(b.keydown(i).blur(f),g||!d.fixedSupport?(b.css({position:"absolute",left:"-20px"}),c.append(b).insertBefore(C)):b.insertBefore(C)),{watchKeys:e}}();Y.support&&L.bind("touchstart.jcrop",Y.newSelection),I.hide(),bq(!0);var br={setImage:bo,animateTo:be,setSelect:bf,setOptions:bj,tellSelect:bh,tellScaled:bi,setClass:bd,disable:bk,enable:bl,cancel:bm,release:ba.release,destroy:bn,focus:bc.watchKeys,getBounds:function(){return[D*S,E*T]},getWidgetSize:function(){return[D,E]},getScaleFactor:function(){return[S,T]},getOptions:function(){return d},ui:{holder:F,selection:J}};return a.browser.msie&&F.bind("selectstart",function(){return!1}),z.data -("Jcrop",br),br},a.fn.Jcrop=function(b,c){var d;return this.each(function(){if(a(this).data("Jcrop")){if(b==="api")return a(this).data("Jcrop");a(this).data("Jcrop").setOptions(b)}else this.tagName=="IMG"?a.Jcrop.Loader(this,function(){a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d)}):(a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d))}),this},a.Jcrop.Loader=function(b,c,d){function g(){f.complete?(e.unbind(".jcloader"),a.isFunction(c)&&c.call(f)):window.setTimeout(g,50)}var e=a(b),f=e[0];e.bind("load.jcloader",g).bind("error.jcloader",function(b){e.unbind(".jcloader"),a.isFunction(d)&&d.call(f)}),f.complete&&a.isFunction(c)&&(e.unbind(".jcloader"),c.call(f))},a.Jcrop.defaults={allowSelect:!0,allowMove:!0,allowResize:!0,trackDocument:!0,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:.6,bgFade:!1,borderOpacity:.4,handleOpacity:.5,handleSize:7,aspectRatio:0,keySupport:!0,createHandles:["n","s","e","w","nw","ne" -,"se","sw"],createDragbars:["n","s","e","w"],createBorders:["n","s","e","w"],drawBorders:!0,dragEdges:!0,fixedSupport:!0,touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}}})(jQuery); \ No newline at end of file diff --git a/assets/components/tvimageplus/mgr/js/jquery/jquery.min.js b/assets/components/tvimageplus/mgr/js/jquery/jquery.min.js deleted file mode 100644 index 93adea19..00000000 --- a/assets/components/tvimageplus/mgr/js/jquery/jquery.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7.2 jquery.com | jquery.org/license */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="
"+""+"
",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
t
",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( -a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f -.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/assets/components/tvimageplus/mgr/js/tvimageplus.jquery.imagecrop.js b/assets/components/tvimageplus/mgr/js/tvimageplus.jquery.imagecrop.js deleted file mode 100644 index 89dc3d68..00000000 --- a/assets/components/tvimageplus/mgr/js/tvimageplus.jquery.imagecrop.js +++ /dev/null @@ -1,64 +0,0 @@ -tvImagePlus.jquery.ImageCrop= function(config) { - config = config || {}; - this.tvimageplus = config.tvimageplus; - this.window = config.window; - this.imageDOMid = Ext.id(); - - Ext.apply(config,{ - cropData: this.tvimageplus.crop - ,collapsable: false - ,items: [{ - html: '' - }] - ,listeners: { - 'afterRender':{fn:this.on_afterRender,scope:this} - ,'destroy': {fn:function(){this.cropper.destroy()},scope:this} - } - }); - tvImagePlus.jquery.ImageCrop.superclass.constructor.call(this,config); -}; -Ext.extend(tvImagePlus.jquery.ImageCrop, Ext.Panel, { - - - - on_afterRender: function(){ - this.initJcrop.defer(10, this) - }// - - ,initJcrop: function(){ - this.$image = $('#'+this.imageDOMid) - .data('ext',this.window); - - var conf = { - minSize: this.window.getMinCropSize() - ,aspectRatio: this.window.getAspectRatio() - ,setSelect: this.window.getCropCoords() - ,outerImage: this.window.getOuterImageUrl() - ,onSelect: function(ext){ - return function(crop){ - ext.on_cropChange({ - x: crop.x, - y: crop.y, - width: crop.w, - height: crop.h - }) - } - }(this.window) - }; - this.$image.Jcrop(conf,function(ths){ return function(){ - ths.cropper = this; - this.setOptions({ - outerImage: ths.window.getOuterImageUrl() - ,bgOpacity: 0.5 - }) - }}(this)) - }// - - ,get_image: function(){ - return this.$image; - }// - - - - }); -Ext.reg('tvimageplus-jquery-imagecrop',tvImagePlus.jquery.ImageCrop); diff --git a/assets/components/tvimageplus/mgr/js/tvimageplus.js b/assets/components/tvimageplus/mgr/js/tvimageplus.js deleted file mode 100644 index 06103035..00000000 --- a/assets/components/tvimageplus/mgr/js/tvimageplus.js +++ /dev/null @@ -1,9 +0,0 @@ -var tvImagePlus = function(config) { - config = config || {}; - tvImagePlus.superclass.constructor.call(this,config); -}; -Ext.extend(tvImagePlus,Ext.Component,{ - page:{},window:{},grid:{},tree:{},panel:{},combo:{},config: {},jquery:{} -}); -Ext.reg('doodles',tvImagePlus); -tvImagePlus = new tvImagePlus(); diff --git a/assets/components/tvimageplus/mgr/js/tvimageplus.panel.input.js b/assets/components/tvimageplus/mgr/js/tvimageplus.panel.input.js deleted file mode 100644 index b55cbe9e..00000000 --- a/assets/components/tvimageplus/mgr/js/tvimageplus.panel.input.js +++ /dev/null @@ -1,278 +0,0 @@ -tvImagePlus.panel.input = function(config) { - config = config || {}; - this.tvimageplus = config.tvimageplus; - - this.create_editButton(); - this.create_imageBrowser(); - this.create_imagePreview(); - this.create_altTextField(); - - - Ext.apply(config,{ - border: false - ,baseCls: 'modx-formpanel' - ,cls: 'container' - ,updateTo: config.updateTo - ,width: '100%' - ,items: [{ - xtype: 'compositefield' - ,anchor: '98%' - ,hideLabel: true - ,style: { - marginBottom: '5px' - } - ,listeners: { - 'render': {fn: this.on_Render,scope:this} - ,'afterRender': {fn: this.onAfterRender,scope:this} - } - ,items: [this.imageBrowser,this.editButton] - },this.altTextField,this.imagePreview] - }); - tvImagePlus.panel.input.superclass.constructor.call(this,config); -}; -Ext.extend(tvImagePlus.panel.input, MODx.Panel, { - - /** - * Create the 'edit image' button - */ - create_editButton: function(){ - this.editButton = new Ext.Button({ - text: _('tvimageplus.edit_image') - ,handler: this.editImage - ,scope:this - }) - }// - - /** - * Create the image browser combo - */ - ,create_imageBrowser: function(){ - // Generate opento path - var openToPath = this.tvimageplus.sourceImg.src.split('/'); - openToPath.pop(); - openToPath = openToPath.join('/'); - - // Create browser component - this.imageBrowser = new MODx.combo.Browser({ - value: this.tvimageplus.sourceImg.src - ,source: this.tvimageplus.mediaSource - ,hideSourceCombo: true - ,openTo: openToPath - ,listeners: { - 'select': {fn: this.on_imageSelected,scope:this} - } - }) - } - - /** - * Create image preview img - */ - ,create_imagePreview: function(){ - this.imagePreview = new Ext.BoxComponent({autoEl: {tag: 'img', src: ''}}); - } - - /** - * Create field for alt-text input - */ - ,create_altTextField: function(){ - this.altTextField = MODx.load({ - xtype: this.tvimageplus.altTagOn? 'textfield' : 'hidden' - ,value: this.tvimageplus.altTag || '' - ,listeners: { - 'change': {fn: this.on_altTagChange,scope:this} - } - ,width: 300 - ,style: {marginBottom:'5px'} - }) - } - - - - ,generateThumbUrl: function(params){ - var url = MODx.config.connectors_url+'system/phpthumb.php?imageplus=1' - var defaults = { - wctx: 'mgr' - ,f: 'png' - ,q: 90 - ,w: 150 - ,source: this.tvimageplus.sourceImg.source - } - for(i in params){ defaults[i] = params[i]}; - for(i in defaults){ - url+= '&'+i+'='+defaults[i]; - }; - return url; - } - - /** - * Render form elements to page - */ - ,on_Render: function(){ - - }// - - /** - * Runs after initial render of panel - */ - ,onAfterRender: function(){ - this.updateDisplay(); - }// - - /** - * Fired when user has selected an image from the browser - */ - ,on_imageSelected: function(img){ - - this.tvimageplus.sourceImg = { - src: img.relativeUrl - ,width: img.image_width - ,height: img.image_height - ,source: this.tvimageplus.mediaSource - } - - // If server returns 800x600, image may be larger - // so need to get size manually - if(img.image_width == 800 && img.image_height == 600){ - this.manual_getImageSize(); - } else { - // Update display - this.updateDisplay(); - }; - }// - - /** - * Fired when alt-tag field is changed - */ - ,on_altTagChange: function(field, value){ - this.tvimageplus.altTag = value; - this.updateExternalField(); - } - - /** - * Manually get image size - * @return void - */ - ,manual_getImageSize: function(){ - var baseUrl = tvImagePlus.config['sources'][this.tvimageplus.sourceImg.source].url; - var img = new Image(); - img.onload = (function(ths){ return function(){ - ths.tvimageplus.sourceImg.width = this.width; - ths.tvimageplus.sourceImg.height = this.height; - ths.updateDisplay(); - }})(this); - img.src = baseUrl+this.tvimageplus.sourceImg.src; - }// - - /** - * Update the component display on state change - */ - ,updateDisplay: function(){ - // Hide 'edit' button if field is empty - if(this.imageBrowser.getValue()==''){ - this.editButton.disable(); - } else { - this.editButton.enable(); - } - this.updatePreviewImage.defer(10,this); - - this.updateExternalField(); - }// - - /** - * Update updateTo field input field value - */ - ,updateExternalField: function(){ - // console.log(this.updateTo); - var TV = { - sourceImg: this.tvimageplus.sourceImg - ,crop: this.tvimageplus.crop - ,targetWidth: this.tvimageplus.targetWidth - ,targetHeight: this.tvimageplus.targetHeight - ,altTag: this.tvimageplus.altTag - } - var json = JSON.stringify(TV,null,' '); - - - var external = document.getElementById(this.updateTo); - var current = external.value || ''; - if(current==''){ current=external.innerHTML} - - // Has value changed? - if(current==json){ return } - - if(document.getElementById(this.updateTo)){ - document.getElementById(this.updateTo).value = json; - document.getElementById(this.updateTo).innerHTML = json; - } - - // Mark resource as dirty - MODx.fireResourceFormChange() - } - - - /** - * Launch the editor window - */ - ,editImage: function(){ - // Create the editor window (if it doesnt exist) - if(!this.editorWindow){ - - // Calculate safe image ratio - var imgW = this.tvimageplus.sourceImg.width; - var imgH = this.tvimageplus.sourceImg.height; - var maxH = window.innerHeight * 0.7; - var maxW = window.innerWidth * 0.7; - // Is image taller than screen? - if(imgH > maxH){ - var ratio = maxH/imgH - } else - if(imgW > maxW){ - var ratio = maxW/imgW - } else { - var ratio = 1; - } - - - - this.editorWindow = MODx.load({ - xtype: 'tvimageplus-window-editor' - ,title: _('tvimageplus.editor_title') - ,tvimageplus: this.tvimageplus - ,inputPanel: this - ,displayRatio: ratio - // ,autoWidth: true - ,width: imgW*ratio - ,crop: this.tvimageplus.crop - }); - - }; - // Show the window - this.editorWindow.show(); - }// - - - /** - * Receive new cropping dimensions from editor - */ - ,updateFromEditor: function(crop){ - this.tvimageplus.crop = crop; - this.editorWindow = null; - this.updateDisplay(); - } - - ,updatePreviewImage: function(){ - if(!this.tvimageplus.sourceImg || this.tvimageplus.crop.width==0){return;} - url = this.generateThumbUrl({ - src: this.tvimageplus.sourceImg.src - ,sw: this.tvimageplus.crop.width - ,sh: this.tvimageplus.crop.height - ,sx: this.tvimageplus.crop.x - ,sy: this.tvimageplus.crop.y - }) - if(this.imagePreview.el){ - this.imagePreview.el.dom.src = url; - }; - } - -}); -Ext.reg('tvimageplus-panel-input',tvImagePlus.panel.input); diff --git a/assets/components/tvimageplus/mgr/js/tvimageplus.window.editor.js b/assets/components/tvimageplus/mgr/js/tvimageplus.window.editor.js deleted file mode 100644 index cdcd10ae..00000000 --- a/assets/components/tvimageplus/mgr/js/tvimageplus.window.editor.js +++ /dev/null @@ -1,149 +0,0 @@ -tvImagePlus.window.Editor = function(config) { - config = config || {}; - this.tvimageplus = config.tvimageplus; - this.inputPanel = config.inputPanel; - this.displayRatio = config.displayRatio; - - Ext.apply(config,{ - border: false - ,crop: this.tvimageplus.crop - ,resizable: false - ,closeAction: 'close' - ,listeners: { - 'close': {fn: this.on_close,scope:this} - ,'success': {fn:function(){console.log('success')}} - ,'show': {fn:this.on_show,scope:this} - } - ,items: [{ - xtype: 'tvimageplus-jquery-imagecrop' - ,tvimageplus: this.tvimageplus - ,initialWidth: this.getDisplayWidth() - ,initialHeight: this.getDisplayHeight() - ,imageUrl: this.getImageUrl() - ,window: this - ,listeners: { - 'change': {fn: this.on_cropChange,scope:this} - } - ,cropData: this.tvimageplus.crop - }] - ,buttonAlign: 'right' - ,buttons: [{ - text: _('cancel') - ,handler: this.updateFromEditor - ,scope: this - },{ - text: _('update') - ,handler: this.updateFromEditor - ,scope: this - }] - }); - tvImagePlus.window.Editor.superclass.constructor.call(this,config); -}; -Ext.extend(tvImagePlus.window.Editor, Ext.Window, { - - // Get the required width of the cropper - getDisplayWidth: function(){ - return Math.round(this.tvimageplus.sourceImg.width * this.displayRatio); - }// - ,getDisplayHeight: function(){ - return Math.round(this.tvimageplus.sourceImg.height * this.displayRatio); - } - - /** - * Get a url to image resized for window - */ - ,getImageUrl: function(){ - var url = this.inputPanel.generateThumbUrl({ - src: this.tvimageplus.sourceImg.src - ,w: this.getDisplayWidth() - ,h: this.getDisplayHeight() - }) - return url; - }// - - ,getOuterImageUrl: function(){ - var url = this.inputPanel.generateThumbUrl({ - src: this.tvimageplus.sourceImg.src - ,w: this.getDisplayWidth() - ,h: this.getDisplayHeight() - ,'fltr[]': 'blur|25' - }) - return url; - }// - - ,getMinCropSize: function(){ - return [ - this.tvimageplus.targetWidth * this.displayRatio - ,this.tvimageplus.targetHeight * this.displayRatio - ] - } - - ,getMinCropWidth: function(){ - return this.tvimageplus.targetWidth * this.displayRatio; - } - ,getMinCropHeight: function(){ - return this.tvimageplus.targetHeight * this.displayRatio; - } - ,getInitialCropX: function(){ - return this.tvimageplus.crop.x * this.displayRatio; - } - ,getInitialCropY: function(){ - return this.tvimageplus.crop.y * this.displayRatio; - } - ,getInitialCropWidth: function(){ - if(this.tvimageplus.crop.width==0){ - return this.tvimageplus.targetWidth * this.displayRatio; - } else { - return this.tvimageplus.crop.width * this.displayRatio; - }; - } - ,getInitialCropHeight: function(){ - if(this.tvimageplus.crop.height==0){ - return this.tvimageplus.targetHeight * this.displayRatio - } else { - return this.tvimageplus.crop.height * this.displayRatio; - }; - } - ,getAspectRatio: function(){ - if( this.tvimageplus.targetWidth>0 && this.tvimageplus.targetHeight>0){ - return this.tvimageplus.targetWidth / this.tvimageplus.targetHeight; - } else { return false} - } - - ,getCropCoords: function(){ - var W = this.getInitialCropWidth(); - var H = this.getInitialCropHeight(); - if(W==0||H==0){ return false; } - var X = this.getInitialCropX(); - var Y = this.getInitialCropY(); - return [X,Y,(X+W),(Y+H)]; - } - - /** - * Handle window closing - */ - ,on_close: function(){ - this.inputPanel.editorWindow = false; - } - - ,on_show: function(){ - this.center.defer(150,this); - }// - - /** - * Handle crop area change - */ - ,on_cropChange: function(data){ - this.crop.height = Math.round(data.height/this.displayRatio); - this.crop.width = Math.round(data.width/this.displayRatio); - this.crop.x = Math.round(data.x/this.displayRatio); - this.crop.y = Math.round(data.y/this.displayRatio); - } - - ,updateFromEditor: function(){ - this.inputPanel.updateFromEditor(this.crop); - this.close(); - } - -}); -Ext.reg('tvimageplus-window-editor',tvImagePlus.window.Editor); diff --git a/core/components/imageplus/composer.json b/core/components/imageplus/composer.json new file mode 100644 index 00000000..74f53541 --- /dev/null +++ b/core/components/imageplus/composer.json @@ -0,0 +1,25 @@ +{ + "name": "treehillstudio/imageplus", + "description": "Time Range Custom Template Variable", + "authors": [ + { + "name": "Thomas Jakobi", + "email": "office@treehillstudio.com", + "homepage": "https://treehillstudio.com" + } + ], + "license": "GPL-2.0-or-later", + "config": { + "platform": { + "php": "7.1" + } + }, + "require": { + "php": ">=7.1" + }, + "autoload": { + "psr-4": { + "TreehillStudio\\ImagePlus\\": "src/" + } + } +} diff --git a/core/components/imageplus/composer.lock b/core/components/imageplus/composer.lock new file mode 100644 index 00000000..ad325475 --- /dev/null +++ b/core/components/imageplus/composer.lock @@ -0,0 +1,23 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "80965595bee93dc0b3f406e3ade38afc", + "packages": [], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=7.2.5" + }, + "platform-dev": [], + "platform-overrides": { + "php": "7.2.5" + }, + "plugin-api-version": "2.2.0" +} diff --git a/core/components/imageplus/docs/changelog.md b/core/components/imageplus/docs/changelog.md new file mode 100755 index 00000000..25d364a4 --- /dev/null +++ b/core/components/imageplus/docs/changelog.md @@ -0,0 +1,352 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [2.9.5] - 2023-09-07 + +### Fixed + +- Don't check the mediasource policy in the frontend + +## [2.9.4] - 2023-03-13 + +### Fixed + +- Fix PHP warning: Undefined array key targetHeight & targetWidth [#115] +- Fix reset the TV value to a default value [#116] + +## [2.9.3] - 2022-10-10 + +### Fixed + +- Fix a swapped ratio for the displayed image, when no crop is created after selecting an image +- Fix chunk getlist processor not found in MODX 3.x [#113] + +## [2.9.2] - 2022-08-01 + +### Changed + +- Add an initial crop, when the editor image is closed without selecting a crop + +### Fixed + +- Fix the random use of the wrong crop for images larger than the editor window + +## [2.9.1] - 2022-06-16 + +### Fixed + +- Fix showing small initial crops for large images + +### Changed + +- Update jCrop to v0.9.15 + +## [2.9.0] - 2022-06-08 + +### Fixed + +- Fix showing invalid size message for large images +- Fix some scrollbar glitches +- Fix editing template variable properties in MODX 3.0.1 + +## [2.8.9] - 2022-03-23 + +### Fixed + +- Fix removing plugin events + +## [2.8.8] - 2022-02-16 + +### Fixed + +- Fix OnDocFormRender was not found! + +## [2.8.7] - 2022-02-12 + +### Fixed + +- Fix options property of ImagePlus snippet [#107] + +## [2.8.6] - 2022-02-05 + +### Changed + +- Code refactoring + +### Fixed + +- Fix OnDocFormRender was not found! + +## [2.8.5] - 2021-12-30 + +### Fixed + +- Fix styling issues in MODX 3 backend + +## [2.8.4] - 2021-12-20 + +### Fixed + +- Fix for PHP 8 warnings + +## [2.8.3] - 2021-03-06 + +### Changed + +- Compatibility with MODX 3 + +## [2.8.2] - 2021-01-19 + +### Fixed + +- Fix the ImagePlus.MIGX_Renderer to show normal images too + +## [2.8.1] - 2020-01-04 + +### Fixed + +- Prevent an error, when $modx->resource is not set + +## [2.8.0] - 2018-11-15 + +### Changed + +- Updated jQuery + +### Fixed + +- Fixing a jQuery issue with ContentBlocks and other extras that use jQuery inside [#60] +- Fixing cannot read property 'destroy' of undefined issue +- Fixing Undefined property issue [#71] +- Fixing a window issue with tiny images [#53] + +### Removed + +- Some IE < 9 CSS rules + +## [2.7.0] - 2017-11-13 + +### Changed + +- Improved check for the allowBlank TV option + +### Fixed + +- Bugfix for using a wrong plugin event name in special circumstances + +### Added + +- phpThumbOn crop engine +- Warning in the TV output options for the right usage of the Generate Thumb URL property + +## [2.6.3] - 2017-06-01 + +### Fixed + +- Bugfix a full server path in the url placeholder + +## [2.6.2] - 2017-02-21 + +### Fixed + +- Bugfix for disabled option 'Generate Thumbnail URL' and an empty url placeholder + +## [2.6.1] - 2017-02-03 + +### Fixed + +- Bugfix for an empty select_config system setting + +## [2.6.0] - 2017-02-01 + +### Fixed + +- Fixed a missing realpath issue + +### Added + +- System-wide predefined crop sizes/aspect ratios, selectable in the TV options +- Context/system settings that supercede the TV options + +### Removed + +- MODX 2.2 compatibility + +## [2.5.0] - 2016-12-17 + +### Fixed + +- Fix showing a full server path, when the image is not found [#41] + +### Added + +- Optional caption and credits fields below of the image + +## [2.4.5] - 2016-07-29 + +### Fixed + +- Solved an installation issue on Windows machines + +## [2.4.4] - 2016-06-15 + +### Changed + +- Don't try to get an Image+ url with an empty template variable value +- Change the image by typing the filename +- Correcting typos, refactored code + +### Added + +- Add assets files on manager pages (i.e. for MIGX) +- Log invalid JSON only if imageplus.debug system setting is active +- Use only uglified/minified scripts in package code + +## [2.4.3] - 2016-03-03 + +### Fixed + +- Fixed not found image in combined/minified css file + +### Added + +- The alt text field could contain special chars +- Debug system setting for enabling not combined and minified/uglified css/js files + +## [2.4.2] - 2016-01-18 + +### Added + +- The snippet could use inherited values + +## [2.4.1] - 2016-01-16 + +### Changed + +- Change the image by typing the filename + +### Fixed + +- Fixing recoverable errors + +### Added + +Translated error messages + +## [2.4.0] - 2016-01-15 + +### Changed + +- Improved error logging +- Resolved issues with apostrophes in language strings + +### Added + +- Retain the value of a MODX TV as source image for the Image+ TV +- Fill output chunk placeholders with script properties + +## [2.3.4] - 2015-08-06 + +### Changed + +- Open crop window automatic after selecting a new image +- Bugfix for media source issue in MIGX + +## [2.3.3] - 2015-07-05 + +### Changed + +- Run jQuery in noConflict mode + +## [2.3.2] - 2015-06-06 + +### Added + +- 'value' parameter in the ImagePlus Snippet + +## [2.3.1] - 2015-06-05 + +### Changed + +- Use default_media_source if the media source of the TV is not set (i.e. if it used in a MIGX configuration) +- Don't show the crop window if the image size is invalid + +### Added + +- Enable property sets for the ImagePlus Snippet + +## [2.3.0] - 2015-05-24 + +### Changed + +- Updated Jcrop plugin and jQuery +- Updated Czech translation (@bartholomej) +- Updated Dutch translation (@Mark-H) +- Updated French translation (@AmaZili) +- Updated Russian translation (@Alroniks, serimarda) + +### Fixed + +- Bugfix for fireResourceFormChange issue +- Bugfix for a Firefox display issue + +### Added + +- MODX 2.3 compatibility +- Inline Trigger fields +- Some better backend styling +- Set thumbnail width in template variable panel +- Set crop aspect ratio in template variable input options +- Respect context settings for media sources +- Center the crop window in the viewport + +## [2.2.x] - 2013-11-02 + +### Changed + +- Refactored to allow changing of crop engines +- Confirmed to work with Articles [#21] +- Now works with MIGX [#15] +- TV Default Value is now output if TV is empty +- TV Reset button now works [#22] + +### Added + +- GUI warning of missing dependencies +- phpThumbsUp crop engine +- grid renderer for MIGX backend +- image preloader to accurately get image size on upload. This is because MODX File Manager will not report accurate image size for images above 800x600 [#8] +- option to put an icon on TV input 'crop' button [#16] +- Create a system setting called imageplus.crop_icon and populate it with the url to the desired icon png +- system setting override for core_path and assets_url [#25] +- Czech translation (@TheBoxer) +- Danish translation (@Flygenring) +- German translation (@KristianP) +- Spanish translation (Nico Telfer) +- French translation (@rtripault) +- Hungarian translation (Kristof Kotai) +- Italian translation (@tillilab) +- Dutch translation (@Mark-H) +- Russian translation (@Alroniks) +- French translation (@Alroniks) + +## [2.1.x] - 2012-12-09 + +### Changed + +- Fixed bug with non-default media sources + +### Added + +- Field for additional phpThumb parameters to output renderer +- Option to specify a chunk for output formatting (fields: url,alt,width,height) + +## [2.0.x] - 2012-12-01 + +### Added + +- Complete rewrite diff --git a/core/components/imageplus/docs/license.md b/core/components/imageplus/docs/license.md new file mode 100644 index 00000000..17ff2f8a --- /dev/null +++ b/core/components/imageplus/docs/license.md @@ -0,0 +1,287 @@ +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 +-------------------------- + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +Preamble +-------- + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + +GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +--------------------------------------------------------------- + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + +NO WARRANTY +----------- + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +--------------------------- +END OF TERMS AND CONDITIONS diff --git a/core/components/imageplus/docs/readme.md b/core/components/imageplus/docs/readme.md new file mode 100644 index 00000000..cf462074 --- /dev/null +++ b/core/components/imageplus/docs/readme.md @@ -0,0 +1,37 @@ +# Image+ + +Advanced image custom template variable for MODX Revolution. + +- Author: Alan Pich +- Maintainer and further development: Thomas Jakobi +- License: GNU GPLv2 + +## Features + +With this MODX Revolution custom template variable an image could be cropped +while maintaining the original image. The dimensions for the image can +(optionally) be configured to constrain a minimal width and/or height. The image +crop could be forced to remain at a pre-set ratio. A graphical tool could be +used to crop the image to the required dimensions/proportions. + +## Installation + +MODX Package Management + +## Usage + +Install via package manager, create a TV and change the input & output type to +'Image+' + +## Documentation + +For more information please read the documentation on +https://jako.github.io/ImagePlus/ + +## GitHub Repository + +https://github.com/Jako/ImagePlus + +## Dependencies + +MODX Cropping Engine i.e. pthumb diff --git a/core/components/imageplus/elements/chunks/imageplus.demo.html b/core/components/imageplus/elements/chunks/imageplus.demo.html new file mode 100644 index 00000000..2ef7a9fa --- /dev/null +++ b/core/components/imageplus/elements/chunks/imageplus.demo.html @@ -0,0 +1,90 @@ +
+

Image+ Demo Chunk

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionCurrent Value
[[%imageplus.placeholder.url? &namespace=`imageplus`]][[+url]]
[[%imageplus.placeholder.alt? &namespace=`imageplus`]][[+alt]]
[[%imageplus.placeholder.width? &namespace=`imageplus`]][[+width]]
[[%imageplus.placeholder.height? &namespace=`imageplus`]][[+height]]
[[%imageplus.placeholder.source.src? &namespace=`imageplus`]][[+source.src]]
[[%imageplus.placeholder.source.width? &namespace=`imageplus`]][[+source.width]]
[[%imageplus.placeholder.source.height? &namespace=`imageplus`]][[+source.height]]
[[%imageplus.placeholder.crop.width? &namespace=`imageplus`]][[+crop.width]]
[[%imageplus.placeholder.crop.height? &namespace=`imageplus`]][[+crop.height]]
[[%imageplus.placeholder.crop.x? &namespace=`imageplus`]][[+crop.x]]
[[%imageplus.placeholder.crop.y? &namespace=`imageplus`]][[+crop.y]]
[[%imageplus.placeholder.options? &namespace=`imageplus`]][[+options]]
[[%imageplus.placeholder.crop.options? &namespace=`imageplus`]][[+crop.options]]
+ +

Default image output

+ +
+ [[+alt]] + [[+caption:notempty=`

[[+caption]]

`]] + [[+credits:notempty=`

[[+credits]]

`]] +
+ +

Responsive image output (different crops for different viewports)

+ +

+ + + + [[+alt]] + +

+ [[+caption:notempty=`

[[+caption]]

`]] + [[+credits:notempty=`

[[+credits]]

`]] +
\ No newline at end of file diff --git a/core/components/imageplus/elements/chunks/imageplus.image.html b/core/components/imageplus/elements/chunks/imageplus.image.html new file mode 100644 index 00000000..60dc8f68 --- /dev/null +++ b/core/components/imageplus/elements/chunks/imageplus.image.html @@ -0,0 +1,3 @@ +[[+alt]] +[[+caption:notempty=`

[[+caption]]

`]] +[[+credits:notempty=`

[[+credits]]

`]] diff --git a/core/components/imageplus/elements/plugins/imageplus.plugin.php b/core/components/imageplus/elements/plugins/imageplus.plugin.php new file mode 100644 index 00000000..559eec6f --- /dev/null +++ b/core/components/imageplus/elements/plugins/imageplus.plugin.php @@ -0,0 +1,33 @@ +event->name; + +$corePath = $modx->getOption('imageplus.core_path', null, $modx->getOption('core_path') . 'components/imageplus/'); +/** @var ImagePlus $imageplus */ +$imageplus = $modx->getService('imageplus', 'ImagePlus', $corePath . 'model/imageplus/', [ + 'core_path' => $corePath +]); + +if ($imageplus) { + if (class_exists($className)) { + $handler = new $className($modx, $scriptProperties); + if (get_class($handler) == $className) { + $handler->run(); + } else { + $modx->log(xPDO::LOG_LEVEL_ERROR, $className. ' could not be initialized!', '', 'ImagePlus Plugin'); + } + } else { + $modx->log(xPDO::LOG_LEVEL_ERROR, $className. ' was not found!', '', 'ImagePlus Plugin'); + } +} + +return; diff --git a/core/components/imageplus/elements/snippets/imageplus.snippet.php b/core/components/imageplus/elements/snippets/imageplus.snippet.php new file mode 100644 index 00000000..74bf0772 --- /dev/null +++ b/core/components/imageplus/elements/snippets/imageplus.snippet.php @@ -0,0 +1,24 @@ +getOption('imageplus.core_path', null, $modx->getOption('core_path') . 'components/imageplus/'); +/** @var ImagePlus $imageplus */ +$imageplus = $modx->getService('imageplus', 'ImagePlus', $corePath . 'model/imageplus/', [ + 'core_path' => $corePath +]); + +$snippet = new ImagePlus($modx, $scriptProperties); +if ($snippet instanceof TreehillStudio\ImagePlus\Snippets\ImagePlus) { + return $snippet->execute(); +} +return 'TreehillStudio\ImagePlus\Snippets\ImagePlus class not found'; \ No newline at end of file diff --git a/core/components/imageplus/elements/tv/input/imageplus.class.php b/core/components/imageplus/elements/tv/input/imageplus.class.php new file mode 100755 index 00000000..99f4089f --- /dev/null +++ b/core/components/imageplus/elements/tv/input/imageplus.class.php @@ -0,0 +1,131 @@ +modx->getOption('imageplus.core_path', null, $this->modx->getOption('core_path') . 'components/imageplus/'); + return $corePath . 'elements/tv/input/tpl/imageplus.render.tpl'; + } + + /** + * Get lexicon topics + * + * @return array + */ + public function getLexiconTopics() + { + return ['imageplus:default']; + } + + /** + * Process Input Render + * + * @param string $value + * @param array $params + * @return void + */ + public function process($value, array $params = []) + { + $corePath = $this->modx->getOption('imageplus.core_path', null, $this->modx->getOption('core_path') . 'components/imageplus/'); + /** @var ImagePlus $imageplus */ + $imageplus = $this->modx->getService('imageplus', 'ImagePlus', $corePath . 'model/imageplus/', [ + 'core_path' => $corePath + ]); + $version = $this->modx->getVersionData(); + $imageplus->includeScriptAssets(); + + // Get Media Source + /** @var modMediaSource $source */ + $source = $this->tv->getSource(($this->modx->resource) ? $this->modx->resource->get('context_key') : 'mgr'); + if (!$source || !$source->getWorkingContext()) { + return; + } + $source->setRequestProperties($_REQUEST); + $source->initialize(); + + // For migxResourceMediaPath snippet + $this->setPlaceholder('mediasource', $source->get('id')); + + $context = (isset ($_GET['wctx']) && $_GET['wctx']) ? $_GET['wctx'] : ''; + $obj = $this->modx->getContext($context); + $contextSettings = ($obj) ? $obj->config : []; + $contextSettings = array_merge($this->modx->config, $contextSettings); + $tvName = $this->tv->get('name'); + + // Prepare TV config + $tvConfig = new stdClass(); + $tvConfig->allowBlank = !($params['allowBlank'] === 'false' || $params['allowBlank'] === 0 || $params['allowBlank'] === false); + if (!empty($params['targetWidth']) || !empty($params['targetHeight']) || !empty($params['targetRatio'])) { + $tvConfig->targetWidth = !empty($params['targetWidth']) ? (int)$params['targetWidth'] : null; + $tvConfig->targetHeight = !empty($params['targetHeight']) ? (int)$params['targetHeight'] : null; + if (!$tvConfig->targetWidth || !$tvConfig->targetHeight) { + $targetRatio = !empty($params['targetRatio']) ? (float)$params['targetRatio'] : null; + } else { + $targetRatio = $tvConfig->targetWidth / $tvConfig->targetHeight; + } + } else { + $targetWidth = $this->getTVConfig('target_width', $tvName, $contextSettings, isset($params['targetWidth']) && $params['targetWidth'] !== '' ? $params['targetWidth'] : null); + $tvConfig->targetWidth = ($targetWidth) ? (int)$targetWidth : null; + $targetHeight = $this->getTVConfig('target_height', $tvName, $contextSettings, isset($params['targetHeight']) && $params['targetHeight'] !== '' ? $params['targetHeight'] : null); + $tvConfig->targetHeight = ($targetHeight) ? (int)$targetHeight : null; + if (!$tvConfig->targetWidth || !$tvConfig->targetHeight) { + $targetRatio = $this->getTVConfig('target_width', $tvName, $contextSettings, isset($params['targetRatio']) && $params['targetRatio'] !== '' ? $params['targetRatio'] : null); + $targetRatio = ($targetRatio) ? (float)$targetRatio : null; + } else { + $targetRatio = $tvConfig->targetWidth / $tvConfig->targetHeight; + } + } + $tvConfig->targetRatio = $targetRatio; + $tvConfig->thumbnailWidth = (int)$this->getTVConfig('thumbnail_width', $tvName, $contextSettings, (!empty($params['thumbnailWidth'])) ? $params['thumbnailWidth'] : (($version['major_version'] >= 3) ? 400 : 150)); + $tvConfig->altTagOn = (bool)$this->getTVConfig('allow_alt_tag', $tvName, $contextSettings, $params['allowAltTag'] ?? null); + $tvConfig->captionOn = (bool)$this->getTVConfig('allow_caption', $tvName, $contextSettings, $params['allowCaption'] ?? null); + $tvConfig->creditsOn = (bool)$this->getTVConfig('allow_credits', $tvName, $contextSettings, $params['allowCredits'] ?? null); + $tvConfig->mediaSource = $source->get('id'); + $tvConfig->tvId = $this->tv->get('id'); + $tvConfig->tvParams = $this->getInputOptions(); + + $this->setPlaceholder('tvConfig', json_encode($tvConfig, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); + + // Prepare value + $this->tv->value = $imageplus->prepareTvValue($this->tv->value, $params, $this->tv); + } + + /** + * @param string $key + * @param string $name + * @param array $config + * @param string $default + * @return string + */ + private function getTVConfig($key, $name, $config, $default) + { + if (is_null($default)) { + // Use $config if defined and not empty + $value = $this->modx->getOption('imageplus.' . $key, $config, $default, true); + + // TV name based + if ($name) { + // Use $config if defined and not empty + $value = $this->modx->getOption('imageplus.' . $name . '.' . $key, $config, $value, true); + } + } else { + $value = $default; + } + + return $value; + } +} + +return 'ImagePlusInputRender'; diff --git a/core/components/imageplus/elements/tv/input/options/imageplus.php b/core/components/imageplus/elements/tv/input/options/imageplus.php new file mode 100644 index 00000000..c150fa03 --- /dev/null +++ b/core/components/imageplus/elements/tv/input/options/imageplus.php @@ -0,0 +1,28 @@ +getOption('imageplus.core_path', null, $modx->getOption('core_path') . 'components/imageplus/'); +/** @var ImagePlus $imageplus */ +$imageplus = $modx->getService('imageplus', 'ImagePlus', $corePath . 'model/imageplus/', [ + 'core_path' => $corePath +]); + +$selectConfig = json_decode($imageplus->getOption('select_config'), true); +$forceConfig = $imageplus->getOption('force_config', false); + +if ($selectConfig) { + $modx->smarty->assign('selectconfig', json_encode($selectConfig)); + $modx->smarty->assign('forceconfig', intval($forceConfig)); + $modx->smarty->assign('hide', 0); +} else { + $modx->smarty->assign('selectconfig', '[]'); + $modx->smarty->assign('forceconfig', 0); + $modx->smarty->assign('hide', 1); +} +return $modx->smarty->fetch($corePath . 'elements/tv/input/tpl/imageplus.options.tpl'); diff --git a/core/components/imageplus/elements/tv/input/tpl/imageplus.options.tpl b/core/components/imageplus/elements/tv/input/tpl/imageplus.options.tpl new file mode 100755 index 00000000..b97f2947 --- /dev/null +++ b/core/components/imageplus/elements/tv/input/tpl/imageplus.options.tpl @@ -0,0 +1,217 @@ + +{/literal} diff --git a/core/components/imageplus/elements/tv/input/tpl/imageplus.render.tpl b/core/components/imageplus/elements/tv/input/tpl/imageplus.render.tpl new file mode 100644 index 00000000..3a72115b --- /dev/null +++ b/core/components/imageplus/elements/tv/input/tpl/imageplus.render.tpl @@ -0,0 +1,15 @@ + +
+ + diff --git a/core/components/imageplus/elements/tv/output/imageplus.class.php b/core/components/imageplus/elements/tv/output/imageplus.class.php new file mode 100644 index 00000000..b7f45076 --- /dev/null +++ b/core/components/imageplus/elements/tv/output/imageplus.class.php @@ -0,0 +1,34 @@ +modx->getOption('imageplus.core_path', null, $this->modx->getOption('core_path') . 'components/imageplus/'); + $imageplus = $this->modx->getService('imageplus', 'ImagePlus', $corePath . 'model/imageplus/', [ + 'core_path' => $corePath + ]); + + $params = array_merge([ + 'docid' => ($this->modx->resource) ? $this->modx->resource->get('id') : 0 + ], $params); + + return $imageplus->getImageURL($value, $params, $this->tv); + } +} + +return 'ImagePlusOutputRender'; diff --git a/core/components/imageplus/elements/tv/output/options/imageplus.php b/core/components/imageplus/elements/tv/output/options/imageplus.php new file mode 100644 index 00000000..91afdc57 --- /dev/null +++ b/core/components/imageplus/elements/tv/output/options/imageplus.php @@ -0,0 +1,16 @@ +getOption('imageplus.core_path', null, $modx->getOption('core_path') . 'components/imageplus/'); +/** @var ImagePlus $imageplus */ +$imageplus = $modx->getService('imageplus', 'ImagePlus', $corePath . 'model/imageplus/', [ + 'core_path' => $corePath +]); + +return $modx->smarty->fetch($corePath . 'elements/tv/output/tpl/imageplus.options.tpl'); diff --git a/core/components/imageplus/elements/tv/output/tpl/imageplus.options.tpl b/core/components/imageplus/elements/tv/output/tpl/imageplus.options.tpl new file mode 100644 index 00000000..c4cb1222 --- /dev/null +++ b/core/components/imageplus/elements/tv/output/tpl/imageplus.options.tpl @@ -0,0 +1,123 @@ + +{/literal} diff --git a/core/components/imageplus/lexicon/cs/default.inc.php b/core/components/imageplus/lexicon/cs/default.inc.php new file mode 100644 index 00000000..a470763d --- /dev/null +++ b/core/components/imageplus/lexicon/cs/default.inc.php @@ -0,0 +1,59 @@ +dokumentaci.'; +$_lang['imageplus.selectConfig'] = 'Předdefinované velikosti cílů/poměry stran'; +$_lang['imageplus.selectConfig_desc'] = 'Zvolte předem definovaný cílový poměr velikostí a stran. Definice lze vytvořit v nastavení systému.'; +$_lang['imageplus.selectConfigForce'] = 'Vynucené předdefinované velikosti cílů/poměr stran'; +$_lang['imageplus.selectConfigForce_desc'] = 'Vynucený výběr předem definované velikosti ořezu/poměru stran. Definice lze vytvořit v nastavení systému.'; +$_lang['imageplus.targetwidth'] = 'Cílová šířka (minimální)'; +$_lang['imageplus.targetwidth_desc'] = '(Volitelné, celé číslo) Cílová šířka pro výstupní obrázek. Nahraný obrázek by neměl být menší.'; +$_lang['imageplus.targetheight'] = 'Cílová výška (minimální)'; +$_lang['imageplus.targetheight_desc'] = '(Volitelné, celé číslo) Cílová výška pro výstupní obrázek. Nahraný obrázek by neměl být menší.'; +$_lang['imageplus.targetRatio'] = 'Cílový poměr stran'; +$_lang['imageplus.targetRatio_desc'] = '(Volitelné, plovoucí) Cílový poměr stran výstupního obrázku. Pokud je nastavena cílová výška a šířka, tato hodnota je ignorována.'; +$_lang['imageplus.thumbnailWidth'] = 'Šířka miniatury'; +$_lang['imageplus.thumbnailWidth_desc'] = '(Volitelné, celé číslo) Šířka miniatury v panelu Template variable.'; +$_lang['imageplus.allowAltTag'] = 'Zobrazit pole "alt" tag'; +$_lang['imageplus.allowAltTag_desc'] = 'Povolit uživatelům zadat title/alt.'; +$_lang['imageplus.allowCaption'] = 'Zobrazit pole titulků'; +$_lang['imageplus.allowCaption_desc'] = 'Umožňuje uživateli zadat popisek k obrázku.'; +$_lang['imageplus.allowCredits'] = 'Zobrazit pole Kredity'; +$_lang['imageplus.allowCredits_desc'] = 'Umožnit uživateli zadat kredit obrázku.'; +/** Output options render **/ +$_lang['imageplus.phpThumbParams'] = 'Další phpThumb parametry'; +$_lang['imageplus.phpThumbParams_desc'] = 'Přidání dalších filtrů atd. pro phpThumb. Dokumentaci najdete zde.'; +$_lang['imageplus.outputChunk'] = 'Výstupní chunk'; +$_lang['imageplus.outputChunk_desc'] = 'Vyberte chunk pro výstup TV. Nechte prázdé pro výstup čisté URL.'; +$_lang['imageplus.generateUrl'] = 'Generovat URL miniatury'; +$_lang['imageplus.generateUrl_desc'] = '(Volitelné) URL miniatury možná není třeba, pokud miniaturu generujete v chunku (například pomocí pthumb).'; +$_lang['imageplus.generateUrl_desc_warning'] = 'Tuto možnost musíte aktivovat, pokud ve výstupních možnostech nezadáte výstupní oddíl nebo pokud v zadaném výstupním oddílu použijete zástupný znak [[+url]]. Jinak se obrázek neořízne/nezmění velikost a vrátí se původní cesta k obrázku.'; +/** Placeholder descriptions */ +$_lang['imageplus.placeholder.url'] = 'URL miniatury'; +$_lang['imageplus.placeholder.alt'] = 'Alt text'; +$_lang['imageplus.placeholder.width'] = 'Šířka miniatury (ignorováno pokud je 0)'; +$_lang['imageplus.placeholder.height'] = 'Výška miniatury (ignorováno pokud je 0)'; +$_lang['imageplus.placeholder.source.src'] = 'Cesta ke zdrojovému obrázku'; +$_lang['imageplus.placeholder.source.width'] = 'Šířka zdrojového obrázku'; +$_lang['imageplus.placeholder.source.height'] = 'Výška zdrojového obrázku'; +$_lang['imageplus.placeholder.crop.width'] = 'Oříznout šířku zdrojového obrázku'; +$_lang['imageplus.placeholder.crop.height'] = 'Oříznout výšku zdrojového obrázku'; +$_lang['imageplus.placeholder.crop.x'] = 'Oříznout podle X osy zdrojového obrázku'; +$_lang['imageplus.placeholder.crop.y'] = 'Oříznout podle Y osy zdrojového obrázku'; +$_lang['imageplus.placeholder.options'] = 'phpThumb řetězec pro generování miniatur'; +$_lang['imageplus.placeholder.crop.options'] = 'phpThumb řetězec ořezu pro generování miniatur'; +$_lang['imageplus.error.image_too_small.title'] = 'Obrázek je příliš malý'; +$_lang['imageplus.error.image_too_small.msg'] = 'Vybraný obrázek je moc malý pro použití. Prosím vyberte jiný obrázek.'; +$_lang['imageplus.error.image_not_found.title'] = 'Obrázek nebyl nalezen'; +$_lang['imageplus.error.image_not_found.msg'] = 'Obrázek nebyl nalezen a nelze ho oříznout. Prosím vyberte jiný obrázek.'; diff --git a/core/components/imageplus/lexicon/cs/properties.inc.php b/core/components/imageplus/lexicon/cs/properties.inc.php new file mode 100644 index 00000000..881d6db4 --- /dev/null +++ b/core/components/imageplus/lexicon/cs/properties.inc.php @@ -0,0 +1,12 @@ +check tpl a thumb.'; diff --git a/core/components/imageplus/lexicon/cs/setting.inc.php b/core/components/imageplus/lexicon/cs/setting.inc.php new file mode 100644 index 00000000..d4c8ec59 --- /dev/null +++ b/core/components/imageplus/lexicon/cs/setting.inc.php @@ -0,0 +1,33 @@ +dokumentationen for at finde de relevante taster i kontekst-/systemindstillingerne.'; +$_lang['imageplus.selectConfig'] = 'Foruddefinerede målstørrelser/aspektforhold'; +$_lang['imageplus.selectConfig_desc'] = 'Vælg et foruddefineret målstørrelse/aspektforhold. Definitionerne kan oprettes i systemindstillingerne.'; +$_lang['imageplus.selectConfigForce'] = 'Forcerede foruddefinerede målstørrelser/aspektforhold'; +$_lang['imageplus.selectConfigForce_desc'] = 'Tvangsvalg af en foruddefineret afgrødestørrelse/aspektforhold. Definitionerne kan oprettes i systemindstillingerne.'; +$_lang['imageplus.targetwidth'] = 'Ønsket (minimums) bredde'; +$_lang['imageplus.targetwidth_desc'] = '(Valgfrit, heltal) Målbredden for outputbilledet. Det uploadede billede skal have denne minimumsbredde.'; +$_lang['imageplus.targetheight'] = 'Højde'; +$_lang['imageplus.targetheight_desc'] = '(Valgfrit, heltal) Målhøjden for outputbilledet. Det uploadede billede skal have denne minimumshøjde.'; +$_lang['imageplus.targetRatio'] = 'Ønsket højde- breddeforhold'; +$_lang['imageplus.targetRatio_desc'] = '(Valgfri, float) Det ønskede højde-breddeforhold for billedet som en float værdi. Hvis den ønskede højde og den ønskede bredde er sat bliver denne værdi ignoreret.'; +$_lang['imageplus.thumbnailWidth'] = 'Miniature bredde'; +$_lang['imageplus.thumbnailWidth_desc'] = '(Valgfrit, heltal) Bredden på miniaturebilledet i TV-fanen.'; +$_lang['imageplus.allowAltTag'] = 'Alternativ tekst'; +$_lang['imageplus.allowAltTag_desc'] = 'Tillader brugeren at indtaste en titel/alt-tag til billedet.'; +$_lang['imageplus.allowCaption'] = 'Vis feltet med billedtekst'; +$_lang['imageplus.allowCaption_desc'] = 'Tillader brugeren at indtaste en billedtekst til billedet.'; +$_lang['imageplus.allowCredits'] = 'Vis feltet Credits'; +$_lang['imageplus.allowCredits_desc'] = 'Tillader brugeren at angive en kredit for billedet.'; +/** Output options render **/ +$_lang['imageplus.phpThumbParams'] = 'Ekstra phpThumb parametre'; +$_lang['imageplus.phpThumbParams_desc'] = 'Tilføj ekstra filtre osv. til phpThumb. Dokumentationen kan findes her.'; +$_lang['imageplus.outputChunk'] = 'Output chunk'; +$_lang['imageplus.outputChunk_desc'] = 'Vælg en chunk til tv-udgang. Lad det være tomt for rå url-udgang.'; +$_lang['imageplus.generateUrl'] = 'Generer URL til miniature'; +$_lang['imageplus.generateUrl_desc'] = '(Valgfrit) URL til miniature er måske ikke nødvendigt hvis du generer miniaturen i output chunk\'en f.eks. ved brug af pthumb output filter.'; +$_lang['imageplus.generateUrl_desc_warning'] = 'Du skal aktivere denne indstilling, når du ikke angiver en output chunk i outputindstillingerne, eller når du bruger [[+url]]-pladsholderen [[+url]] i den angivne output chunk. Ellers beskæres/formindskes billedet ikke, og den originale billedsti returneres.'; +/** Placeholder descriptions */ +$_lang['imageplus.placeholder.url'] = 'URL til miniaturebilledet'; +$_lang['imageplus.placeholder.alt'] = 'Alt-tekst'; +$_lang['imageplus.placeholder.width'] = 'Miniaturebredde (ignoreret ved 0)'; +$_lang['imageplus.placeholder.height'] = 'Miniaturehøjde (ignoreret ved 0)'; +$_lang['imageplus.placeholder.source.src'] = 'Stien til kildebilledet'; +$_lang['imageplus.placeholder.source.width'] = 'Bredden på kildebilledet'; +$_lang['imageplus.placeholder.source.height'] = 'Højden på kildebilledet'; +$_lang['imageplus.placeholder.crop.width'] = 'Beskær kildebilledets bredde'; +$_lang['imageplus.placeholder.crop.height'] = 'Beskær kildebilledets højde'; +$_lang['imageplus.placeholder.crop.x'] = 'Beskær x placering af kildebilledet'; +$_lang['imageplus.placeholder.crop.y'] = 'Beskær y placering af kildebilledet'; +$_lang['imageplus.placeholder.options'] = 'phpThumb indstillingsstreng til at generere miniaturebilledet'; +$_lang['imageplus.placeholder.crop.options'] = 'phpThumb beskæringsindstillingsstreng til at generere miniaturebilledet'; +$_lang['imageplus.error.image_too_small.title'] = 'Billedet er for lille'; +$_lang['imageplus.error.image_too_small.msg'] = 'Det valgte billede er for småt til at blive brugt her. Vælg venligst et andet billede.'; +$_lang['imageplus.error.image_not_found.title'] = 'Billedet blev ikke fundet'; +$_lang['imageplus.error.image_not_found.msg'] = 'Billedet blev ikke fundet og kan dermed ikke blive beskåret. Vælg venligst et andet billede.'; diff --git a/core/components/imageplus/lexicon/da/properties.inc.php b/core/components/imageplus/lexicon/da/properties.inc.php new file mode 100644 index 00000000..0bc38fe1 --- /dev/null +++ b/core/components/imageplus/lexicon/da/properties.inc.php @@ -0,0 +1,12 @@ +check tpl eller thumb.'; diff --git a/core/components/imageplus/lexicon/da/setting.inc.php b/core/components/imageplus/lexicon/da/setting.inc.php new file mode 100644 index 00000000..a16a5c6b --- /dev/null +++ b/core/components/imageplus/lexicon/da/setting.inc.php @@ -0,0 +1,33 @@ +Dokumentation für die entsprechenden Einträge in den System-/Kontexteinstellungen.'; +$_lang['imageplus.selectConfig'] = 'Vordefinierte Ausgabegrößen/Ausgabe-Seitenverältnisse'; +$_lang['imageplus.selectConfig_desc'] = 'Wählen Sie eine vordefinierte Ausgabegröße/ein Seitenverhältnis. Die Vorgaben können in den Systemeinstellungen eingestellt werden.'; +$_lang['imageplus.selectConfigForce'] = 'Erzwungene vordefinierte Ausgabegrößen/Ausgabe-Seitenverältnisse'; +$_lang['imageplus.selectConfigForce_desc'] = 'Wählen Sie eine erzwungene vordefinierte Ausgabegröße/ein Seitenverhältnis. Die Vorgaben können in den Systemeinstellungen eingestellt werden.'; +$_lang['imageplus.targetwidth'] = '(Minimale) Ausgabebreite'; +$_lang['imageplus.targetwidth_desc'] = '(Optional, Integer) Gibt die Ausgabebreite des Bildes an. Das hochgeladene Bild muss mindestens diese Breite haben.'; +$_lang['imageplus.targetheight'] = '(Minimale) Ausgabehöhe'; +$_lang['imageplus.targetheight_desc'] = '(Optional, Integer) Gibt die Ausgabehöhe des Bildes an. Das hochgeladene Bild muss mindestens diese Höhe haben.'; +$_lang['imageplus.targetRatio'] = 'Ausgabe-Seitenverhältnis'; +$_lang['imageplus.targetRatio_desc'] = '(Optional, Float) Gibt das Seitenverhältnis des Bildes an. Wenn die Ausgabebreite und die Ausgabehöhe des Bildes angegeben sind, wird dieser Wert ignoriert.'; +$_lang['imageplus.thumbnailWidth'] = 'Breite des Thumbnails'; +$_lang['imageplus.thumbnailWidth_desc'] = '(Optional, Integer) Breite des Thumbnails im Template Variablen Bereich.'; +$_lang['imageplus.allowAltTag'] = 'Alternatives Textfeld anzeigen'; +$_lang['imageplus.allowAltTag_desc'] = 'Ermöglicht die Eingabe eines Alt oder Title-Attributes für das Bild.'; +$_lang['imageplus.allowCaption'] = 'Titel Feld anzeigen'; +$_lang['imageplus.allowCaption_desc'] = 'Ermöglicht die Eingabe eines Titels für das Bild.'; +$_lang['imageplus.allowCredits'] = 'Bildnachweis Feld anzeigen'; +$_lang['imageplus.allowCredits_desc'] = 'Ermöglicht die Eingabe eines Bildnachweises für das Bild.'; +/** Output options render **/ +$_lang['imageplus.phpThumbParams'] = 'Zursätzliche phpThumb Parameter'; +$_lang['imageplus.phpThumbParams_desc'] = '(Optional) Geben Sie zusätzliche phpThumb Parameter an. Mehr Informationen zu phpThumb Parametern erhalten Sie hier.'; +$_lang['imageplus.outputChunk'] = 'Ausgabe Chunk'; +$_lang['imageplus.outputChunk_desc'] = '(Optional) Wählen Sie einen Ausgabe Chunk aus. Wenn kein Wert angebeben ist wird der Bildpfad ausgegeben.'; +$_lang['imageplus.generateUrl'] = 'Thumbnail URL generieren'; +$_lang['imageplus.generateUrl_desc'] = '(Optional) Die Thumbnail URL eventuell wird nicht benötigt, wenn das Thumbnail im Ausgabe Chunk z.B. mit einem pThumb Output Filter generiert wird.'; +$_lang['imageplus.generateUrl_desc_warning'] = 'Sie müssen diese Option aktivieren, wenn Sie keinen Ausgabe Chunk benutzen oder wenn Sie den [[+url]] Platzhalter im angegebenen Ausgabe Chunk einsetzen. Andernfalls wird das Bild nicht beschnitten/skaliert und der original Bildpfad ausgegeben.'; +/** Placeholder descriptions */ +$_lang['imageplus.placeholder.url'] = 'Thumbnail URL'; +$_lang['imageplus.placeholder.alt'] = 'Alt-Text'; +$_lang['imageplus.placeholder.width'] = 'Breite des Thumbnails (wird ignoriert, wenn 0)'; +$_lang['imageplus.placeholder.height'] = 'Höhe des Thumbnails (wird ignoriert, wenn 0)'; +$_lang['imageplus.placeholder.source.src'] = 'Server-Pfad zum Originalbild'; +$_lang['imageplus.placeholder.source.width'] = 'Minimale Breite des Originalbilds'; +$_lang['imageplus.placeholder.source.height'] = 'Minimale Höhe des Originalbilds'; +$_lang['imageplus.placeholder.crop.width'] = 'Crop-Breite des Originalbilds'; +$_lang['imageplus.placeholder.crop.height'] = 'Crop-Höhe des Originalbilds'; +$_lang['imageplus.placeholder.crop.x'] = 'Crop-X-Startposition des Originalbilds'; +$_lang['imageplus.placeholder.crop.y'] = 'Crop-Y-Startposition des Originalbilds'; +$_lang['imageplus.placeholder.options'] = 'phpThumb Optionen für das Thumbnail'; +$_lang['imageplus.placeholder.crop.options'] = 'phpThumb Crop Optionen für das Thumbnail'; +$_lang['imageplus.error.image_too_small.title'] = 'Bild ist zu klein'; +$_lang['imageplus.error.image_too_small.msg'] = 'Das gewählte Bild ist zu klein um benutzt zu werden. Bitte wählen Sie ein anderes Bild.'; +$_lang['imageplus.error.image_not_found.title'] = 'Bild nicht gefunden'; +$_lang['imageplus.error.image_not_found.msg'] = 'Das Bild wurde nicht gefunden und kann nicht zugeschnitten werden. Bitte wählen Sie ein anderes Bild.'; diff --git a/core/components/imageplus/lexicon/de/properties.inc.php b/core/components/imageplus/lexicon/de/properties.inc.php new file mode 100644 index 00000000..214a5d11 --- /dev/null +++ b/core/components/imageplus/lexicon/de/properties.inc.php @@ -0,0 +1,12 @@ +check tpl oder thumb enthalten.'; diff --git a/core/components/imageplus/lexicon/de/setting.inc.php b/core/components/imageplus/lexicon/de/setting.inc.php new file mode 100644 index 00000000..9bf7b781 --- /dev/null +++ b/core/components/imageplus/lexicon/de/setting.inc.php @@ -0,0 +1,33 @@ +documentation for the appropriate keys in the context/system settings.'; +$_lang['imageplus.selectConfig'] = 'Predefined target sizes/aspect ratios'; +$_lang['imageplus.selectConfig_desc'] = 'Select a predefined target size/aspect ratio. The definitions could be created in the system settings.'; +$_lang['imageplus.selectConfigForce'] = 'Forced predefined target sizes/aspect ratios'; +$_lang['imageplus.selectConfigForce_desc'] = 'Forced select a predefined crop size/aspect ratio. The definitions could be created in the system settings.'; +$_lang['imageplus.targetwidth'] = 'Target (Minimal) Width'; +$_lang['imageplus.targetwidth_desc'] = '(Optional, Integer) The target width for the output image. The uploaded image should have this minimal width.'; +$_lang['imageplus.targetheight'] = 'Target (Minimal) Height'; +$_lang['imageplus.targetheight_desc'] = '(Optional, Integer) The target height for the output image. The uploaded image should have this minimal height.'; +$_lang['imageplus.targetRatio'] = 'Target Aspect Ratio'; +$_lang['imageplus.targetRatio_desc'] = '(Optional, Float) The target aspect ratio for the output image as float value. If the target height and the targed width are set, this value is ignored.'; +$_lang['imageplus.thumbnailWidth'] = 'Thumbnail Width'; +$_lang['imageplus.thumbnailWidth_desc'] = '(Optional, Integer) The thumbnail width of the image in the template variable panel.'; +$_lang['imageplus.allowAltTag'] = 'Show Alt Tag Field'; +$_lang['imageplus.allowAltTag_desc'] = 'Allow user to enter a title/alt-tag for the image.'; +$_lang['imageplus.allowCaption'] = 'Show Caption Field'; +$_lang['imageplus.allowCaption_desc'] = 'Allow user to enter a caption for the image.'; +$_lang['imageplus.allowCredits'] = 'Show Credits Field'; +$_lang['imageplus.allowCredits_desc'] = 'Allow user to enter a credit for the image.'; +/** Output options render **/ +$_lang['imageplus.phpThumbParams'] = 'Additional phpThumb Parameters'; +$_lang['imageplus.phpThumbParams_desc'] = 'Add additional filters etc for phpThumb. Documentation can be found here.'; +$_lang['imageplus.outputChunk'] = 'Output Chunk'; +$_lang['imageplus.outputChunk_desc'] = 'Select a chunk for tv output. Leave blank for raw url output.'; +$_lang['imageplus.generateUrl'] = 'Generate Thumb URL'; +$_lang['imageplus.generateUrl_desc'] = '(Optional) The thumb url is maybe not necessary, if you generate the thumbnail in output chunk i.e. by a pthumb output filter.'; +$_lang['imageplus.generateUrl_desc_warning'] = 'You have to activate this option, when you don’t specify an output chunk in the output options or when you use the [[+url]] placeholder in the specified output chunk. Otherwise the image is not cropped/resized and the original image path is returned.'; +/** Placeholder descriptions */ +$_lang['imageplus.placeholder.url'] = 'URL of the thumbnail image'; +$_lang['imageplus.placeholder.alt'] = 'Alt text'; +$_lang['imageplus.placeholder.width'] = 'Width of the thumbnail image (ignored when 0)'; +$_lang['imageplus.placeholder.height'] = 'Height of the thumbnail image (ignored when 0)'; +$_lang['imageplus.placeholder.source.src'] = 'Path to the source image'; +$_lang['imageplus.placeholder.source.width'] = 'Width of the source image'; +$_lang['imageplus.placeholder.source.height'] = 'Height of the source image'; +$_lang['imageplus.placeholder.crop.width'] = 'Crop width of the source image'; +$_lang['imageplus.placeholder.crop.height'] = 'Crop height of the source image'; +$_lang['imageplus.placeholder.crop.x'] = 'Crop x position of the source image'; +$_lang['imageplus.placeholder.crop.y'] = 'Crop y position of the source image'; +$_lang['imageplus.placeholder.options'] = 'phpThumb option string to generate the thumbnail image'; +$_lang['imageplus.placeholder.crop.options'] = 'phpThumb crop option string to generate the thumbnail image'; +$_lang['imageplus.error.image_too_small.title'] = 'Image too small'; +$_lang['imageplus.error.image_too_small.msg'] = 'The selected image is too small to be used here. Please select a different image.'; +$_lang['imageplus.error.image_not_found.title'] = 'Image not found'; +$_lang['imageplus.error.image_not_found.msg'] = 'The image was not found and can’t be cropped. Please select a different image.'; diff --git a/core/components/imageplus/lexicon/en/properties.inc.php b/core/components/imageplus/lexicon/en/properties.inc.php new file mode 100644 index 00000000..2a495cd9 --- /dev/null +++ b/core/components/imageplus/lexicon/en/properties.inc.php @@ -0,0 +1,12 @@ +check tpl and thumb.'; diff --git a/core/components/imageplus/lexicon/en/setting.inc.php b/core/components/imageplus/lexicon/en/setting.inc.php new file mode 100644 index 00000000..4748fe4a --- /dev/null +++ b/core/components/imageplus/lexicon/en/setting.inc.php @@ -0,0 +1,33 @@ +documentación para conocer las claves apropiadas en la configuración del contexto/sistema.'; +$_lang['imageplus.selectConfig'] = 'Tamaños predefinidos de objetivos/relación de aspectos'; +$_lang['imageplus.selectConfig_desc'] = 'Seleccione una proporción predefinida de tamaño y aspecto del objetivo. Las definiciones podrían crearse en los ajustes del sistema.'; +$_lang['imageplus.selectConfigForce'] = 'Tamaños de objetivos predefinidos y relaciones de aspecto forzadas'; +$_lang['imageplus.selectConfigForce_desc'] = 'Seleccionar forzosamente un tamaño de cultivo/relación de aspecto predefinido. Las definiciones podrían crearse en los ajustes del sistema.'; +$_lang['imageplus.targetwidth'] = 'Ancho de la imagen'; +$_lang['imageplus.targetwidth_desc'] = '(Opcional, Entero) El ancho objetivo para la imagen de salida. La imagen cargada debe tener esta anchura mínima.'; +$_lang['imageplus.targetheight'] = 'Alto de la imagen'; +$_lang['imageplus.targetheight_desc'] = '(Opcional, Entero) La altura objetivo para la imagen de salida. La imagen cargada debe tener esta altura mínima.'; +$_lang['imageplus.targetRatio'] = 'Relación de aspecto objetivo'; +$_lang['imageplus.targetRatio_desc'] = '(Opcional, Float) La relación de aspecto objetivo para la imagen de salida como valor float. Si se establecen la altura y la anchura objetivo, este valor se ignora.'; +$_lang['imageplus.thumbnailWidth'] = 'Anchura de las miniaturas'; +$_lang['imageplus.thumbnailWidth_desc'] = '(Opcional, Entero) El ancho de la miniatura de la imagen en el panel de variables de la plantilla.'; +$_lang['imageplus.allowAltTag'] = 'Etiqueta Alt'; +$_lang['imageplus.allowAltTag_desc'] = 'Permitir que el usuario introduzca un título/etiqueta de alto para la imagen.'; +$_lang['imageplus.allowCaption'] = 'Mostrar campo de subtítulos'; +$_lang['imageplus.allowCaption_desc'] = 'Permite al usuario introducir un título para la imagen.'; +$_lang['imageplus.allowCredits'] = 'Mostrar campo de créditos'; +$_lang['imageplus.allowCredits_desc'] = 'Permitir al usuario introducir un crédito para la imagen.'; +/** Output options render **/ +$_lang['imageplus.phpThumbParams'] = 'Parámetros phpThumb adicionales'; +$_lang['imageplus.phpThumbParams_desc'] = 'Añade filtros adicionales etc a phpThumb. La documentación se puede encontrar aquí.'; +$_lang['imageplus.outputChunk'] = 'Resultado chunk'; +$_lang['imageplus.outputChunk_desc'] = 'Selecciona un chunk para obtener un resultado del tv. Dejar en vacío para obtener un resultado de la url cruda.'; +$_lang['imageplus.generateUrl'] = 'Generar la URL del pulgar'; +$_lang['imageplus.generateUrl_desc'] = '(Opcional) La url de la miniatura puede no ser necesaria si se genera la miniatura en el chunk de salida, es decir, mediante un filtro de salida pthumb.'; +$_lang['imageplus.generateUrl_desc_warning'] = 'Tiene que activar esta opción, cuando no especifica un chunk de salida en las opciones de salida o cuando utiliza el marcador de posición [[+url]] en el chunk de salida especificado. En caso contrario, la imagen no se recortará/redimensionará y se devolverá la ruta original de la imagen.'; +/** Placeholder descriptions */ +$_lang['imageplus.placeholder.url'] = 'URL de la imagen en miniatura'; +$_lang['imageplus.placeholder.alt'] = 'Alt text'; +$_lang['imageplus.placeholder.width'] = 'Ancho de la imagen en miniatura (se ignora si es 0)'; +$_lang['imageplus.placeholder.height'] = 'Altura de la imagen en miniatura (se ignora si es 0)'; +$_lang['imageplus.placeholder.source.src'] = 'Ruta de acceso a la imagen de origen'; +$_lang['imageplus.placeholder.source.width'] = 'Anchura de la imagen de origen'; +$_lang['imageplus.placeholder.source.height'] = 'Altura de la imagen de origen'; +$_lang['imageplus.placeholder.crop.width'] = 'Ancho de recorte de la imagen de origen'; +$_lang['imageplus.placeholder.crop.height'] = 'Altura de recorte de la imagen de origen'; +$_lang['imageplus.placeholder.crop.x'] = 'Recorte de la posición x de la imagen de origen'; +$_lang['imageplus.placeholder.crop.y'] = 'Posición de recorte y de la imagen de origen'; +$_lang['imageplus.placeholder.options'] = 'Cadena de opciones phpThumb para generar la imagen en miniatura'; +$_lang['imageplus.placeholder.crop.options'] = 'Cadena de opciones phpThumb para generar la imagen en miniatura'; +$_lang['imageplus.error.image_too_small.title'] = 'Imagen demasiado pequeña'; +$_lang['imageplus.error.image_too_small.msg'] = 'La imagen seleccionada es demasiado pequeña para ser utilizada aquí. Por favor, seleccione una imagen diferente.'; +$_lang['imageplus.error.image_not_found.title'] = 'Imagen no encontrada'; +$_lang['imageplus.error.image_not_found.msg'] = 'La imagen no fue encontrada y no puede ser recortada. Por favor, seleccione una imagen diferente.'; diff --git a/core/components/imageplus/lexicon/es/properties.inc.php b/core/components/imageplus/lexicon/es/properties.inc.php new file mode 100644 index 00000000..98a34c41 --- /dev/null +++ b/core/components/imageplus/lexicon/es/properties.inc.php @@ -0,0 +1,12 @@ +check tpl y thumb.'; diff --git a/core/components/imageplus/lexicon/es/setting.inc.php b/core/components/imageplus/lexicon/es/setting.inc.php new file mode 100644 index 00000000..d0dbac3b --- /dev/null +++ b/core/components/imageplus/lexicon/es/setting.inc.php @@ -0,0 +1,33 @@ + documentation pour connaître les clés appropriées dans les paramètres du contexte/système.'; +$_lang['imageplus.selectConfig'] = 'Tailles cibles/ratios d’aspect prédéfinis'; +$_lang['imageplus.selectConfig_desc'] = 'Sélectionnez un rapport taille/aspect cible prédéfini. Les définitions peuvent être créées dans les paramètres du système.'; +$_lang['imageplus.selectConfigForce'] = 'Obligation de fixer des tailles cibles/ratios d’aspect prédéfinis'; +$_lang['imageplus.selectConfigForce_desc'] = 'Forcé de sélectionner un rapport taille/aspect de la culture prédéfini. Les définitions peuvent être créées dans les paramètres du système.'; +$_lang['imageplus.targetwidth'] = 'Largeur (minimale) de la cible'; +$_lang['imageplus.targetwidth_desc'] = '(Facultatif, entier) La largeur ciblée de l’image en sortie. L’image téléchargée devrait avoir cette largeur minimale.'; +$_lang['imageplus.targetheight'] = 'Hauteur (minimale) de la cible'; +$_lang['imageplus.targetheight_desc'] = '(Facultatif, entier) La hauteur ciblée de l’image en sortie. L’image téléchargée devrait avoir cette hauteur minimale.'; +$_lang['imageplus.targetRatio'] = 'Aspect ratio cible'; +$_lang['imageplus.targetRatio_desc'] = '(Facultatif, Float) Les proportions ciblée de l’image en sortie, valeur de type float. Si la hauteur et la largeur de la cible sont définies, cette valeur est ignorée.'; +$_lang['imageplus.thumbnailWidth'] = 'Largeur miniature'; +$_lang['imageplus.thumbnailWidth_desc'] = '(Optionnel, entier) Largeur de la miniature dans le panneau de variable de modèle (TV).'; +$_lang['imageplus.allowAltTag'] = 'Afficher le champ tag alt'; +$_lang['imageplus.allowAltTag_desc'] = 'Permettre à l’utilisateur à entrer un titre/tag alt pour l’image.'; +$_lang['imageplus.allowCaption'] = 'Afficher le champ de légende'; +$_lang['imageplus.allowCaption_desc'] = 'Permettre à l’utilisateur d’entrer une légende pour l’image.'; +$_lang['imageplus.allowCredits'] = 'Afficher le champ de crédits'; +$_lang['imageplus.allowCredits_desc'] = 'Permettre à l’utilisateur d’entrer un crédit pour l’image.'; +/** Output options render **/ +$_lang['imageplus.phpThumbParams'] = 'Paramètres phpThumb additionnels'; +$_lang['imageplus.phpThumbParams_desc'] = 'Ajoutez des filtres additionnels pour phpThumb. La documentation est disponible ici.'; +$_lang['imageplus.outputChunk'] = 'Chunk d’affichage'; +$_lang['imageplus.outputChunk_desc'] = 'Sélectionnez le chunk utilisé pour afficher le résultat de la TV. Laissez vide pour obtenir l’URL brute du résultat.'; +$_lang['imageplus.generateUrl'] = 'Génère l’URL de la miniature'; +$_lang['imageplus.generateUrl_desc'] = '(Optionnel) L’URL de la miniature n’est peut-être pas nécessaire, si vous générez la miniature dans le chunk de sortie (exemple par un filtre pthumb).'; +$_lang['imageplus.generateUrl_desc_warning'] = 'Vous devez activer cette option lorsque vous ne spécifiez pas de morceau de sortie dans les options de sortie ou lorsque vous utilisez le caractère de remplacement [[+url]] dans le morceau de sortie spécifié. Sinon, l’image n’est pas recadrée/redimensionnée et le chemin d’accès à l’image originale est renvoyé.'; +/** Placeholder descriptions */ +$_lang['imageplus.placeholder.url'] = 'URL de l’image de miniature'; +$_lang['imageplus.placeholder.alt'] = 'Texte de l’attribut Alt'; +$_lang['imageplus.placeholder.width'] = 'Largeur de l’image miniature (ignorée quand 0)'; +$_lang['imageplus.placeholder.height'] = 'Hauteur de l’image miniature (ignorée quand 0)'; +$_lang['imageplus.placeholder.source.src'] = 'Chemin de l’image source'; +$_lang['imageplus.placeholder.source.width'] = 'Largeur de l’image source'; +$_lang['imageplus.placeholder.source.height'] = 'Hauteur de l’image source'; +$_lang['imageplus.placeholder.crop.width'] = 'Largeur de l’image source recadrée'; +$_lang['imageplus.placeholder.crop.height'] = 'Hauteur de l’image source recadrée'; +$_lang['imageplus.placeholder.crop.x'] = 'Position recadrage en x de l’image source'; +$_lang['imageplus.placeholder.crop.y'] = 'Position recadrage en y de l’image source'; +$_lang['imageplus.placeholder.options'] = 'chaîne d’option phpThumb pour générer l’image miniature'; +$_lang['imageplus.placeholder.crop.options'] = 'chaîne d’option de recadrage phpThumb pour générer l’image miniature'; +$_lang['imageplus.error.image_too_small.title'] = 'Image trop petite'; +$_lang['imageplus.error.image_too_small.msg'] = 'L’image sélectionnée est trop petite pour être utilisé ici. Veuillez sélectionner une image différente.'; +$_lang['imageplus.error.image_not_found.title'] = 'Image non trouvée'; +$_lang['imageplus.error.image_not_found.msg'] = 'L’image est introuvable et ne peut être recadrée. Veuillez sélectionner une image différente.'; diff --git a/core/components/imageplus/lexicon/fr/properties.inc.php b/core/components/imageplus/lexicon/fr/properties.inc.php new file mode 100644 index 00000000..90e28009 --- /dev/null +++ b/core/components/imageplus/lexicon/fr/properties.inc.php @@ -0,0 +1,12 @@ +vérifier tpl ou thumb.'; diff --git a/core/components/imageplus/lexicon/fr/setting.inc.php b/core/components/imageplus/lexicon/fr/setting.inc.php new file mode 100644 index 00000000..23659831 --- /dev/null +++ b/core/components/imageplus/lexicon/fr/setting.inc.php @@ -0,0 +1,33 @@ +dokumentációt a megfelelő kulcsokért a kontextus/rendszerbeállításokban.'; +$_lang['imageplus.selectConfig'] = 'Előre meghatározott célméretek/aspektusarányok'; +$_lang['imageplus.selectConfig_desc'] = 'Válasszon ki egy előre meghatározott célméret/szögarányt. A definíciókat a rendszerbeállításokban lehet létrehozni.'; +$_lang['imageplus.selectConfigForce'] = 'Kényszerített előre meghatározott célméretek/aspektusarányok'; +$_lang['imageplus.selectConfigForce_desc'] = 'Kényszerített választás egy előre meghatározott termésméret/szögarány. A definíciókat a rendszerbeállításokban lehet létrehozni.'; +$_lang['imageplus.targetwidth'] = 'Új szélesség'; +$_lang['imageplus.targetwidth_desc'] = '(Választható, egész szám) A kimeneti kép célszélessége. A feltöltött képnek ezzel a minimális szélességgel kell rendelkeznie.'; +$_lang['imageplus.targetheight'] = 'Új magasság'; +$_lang['imageplus.targetheight_desc'] = '(Választható, egész szám) A kimeneti kép célmagassága. A feltöltött képnek ezzel a minimális magassággal kell rendelkeznie.'; +$_lang['imageplus.targetRatio'] = 'A cél képarány'; +$_lang['imageplus.targetRatio_desc'] = '(Választható, Float) A kimeneti kép céloldali képaránya float értékként. Ha a célmagasság és a célszélesség be van állítva, ez az érték figyelmen kívül marad.'; +$_lang['imageplus.thumbnailWidth'] = 'Miniatűr szélessége'; +$_lang['imageplus.thumbnailWidth_desc'] = '(Választható, egész szám) A kép miniatűr szélessége a sablon változó panelen.'; +$_lang['imageplus.allowAltTag'] = 'Alt tag megengedése'; +$_lang['imageplus.allowAltTag_desc'] = 'Lehetővé teszi a felhasználó számára a kép címének/alt-tagjének megadását.'; +$_lang['imageplus.allowCaption'] = 'Felirat mező megjelenítése'; +$_lang['imageplus.allowCaption_desc'] = 'Lehetővé teszi a felhasználó számára a kép feliratának megadását.'; +$_lang['imageplus.allowCredits'] = 'Mutasd a kreditek mezőt'; +$_lang['imageplus.allowCredits_desc'] = 'Lehetővé teszi a felhasználó számára, hogy megadja a kép kreditpontját.'; +/** Output options render **/ +$_lang['imageplus.phpThumbParams'] = 'További phpThumb paraméterek'; +$_lang['imageplus.phpThumbParams_desc'] = 'További szűrők stb. hozzáadása a phpThumbhoz. A dokumentáció megtalálható itt.'; +$_lang['imageplus.outputChunk'] = 'Kimeneti chunk'; +$_lang['imageplus.outputChunk_desc'] = 'Válasszon ki egy darabot a tv-kimenethez. Hagyja üresen a nyers url kimenethez.'; +$_lang['imageplus.generateUrl'] = 'Hüvelykujj URL generálása'; +$_lang['imageplus.generateUrl_desc'] = '(Választható) A thumb url-re talán nincs szükség, ha a kimeneti csomagban, azaz egy pthumb kimeneti szűrővel generálod a miniatűr képet.'; +$_lang['imageplus.generateUrl_desc_warning'] = 'Ezt az opciót akkor kell aktiválnod, ha nem adsz meg kimeneti egységet a kimeneti beállítások között, vagy ha a [[+url]] helyőrzőt használod a megadott kimeneti egységben. Ellenkező esetben a képet nem vágja le/méretezi, és az eredeti kép elérési útvonalát adja vissza.'; +/** Placeholder descriptions */ +$_lang['imageplus.placeholder.url'] = 'A miniatűr kép URL címe'; +$_lang['imageplus.placeholder.alt'] = 'Alt text'; +$_lang['imageplus.placeholder.width'] = 'A miniatűr kép szélessége (0 esetén figyelmen kívül hagyva)'; +$_lang['imageplus.placeholder.height'] = 'A miniatűr kép magassága (0 esetén figyelmen kívül hagyva)'; +$_lang['imageplus.placeholder.source.src'] = 'A forráskép elérési útvonala'; +$_lang['imageplus.placeholder.source.width'] = 'A forráskép szélessége'; +$_lang['imageplus.placeholder.source.height'] = 'A forráskép magassága'; +$_lang['imageplus.placeholder.crop.width'] = 'A forráskép vágási szélessége'; +$_lang['imageplus.placeholder.crop.height'] = 'A forráskép vágási magassága'; +$_lang['imageplus.placeholder.crop.x'] = 'A forráskép x pozíciójának kivágása'; +$_lang['imageplus.placeholder.crop.y'] = 'A forráskép y pozíciójának vágása'; +$_lang['imageplus.placeholder.options'] = 'phpThumb crop option string to generate the thumbnail image'; +$_lang['imageplus.placeholder.crop.options'] = 'phpThumb crop opció string a miniatűr kép létrehozásához'; +$_lang['imageplus.error.image_too_small.title'] = 'Túl kicsi kép'; +$_lang['imageplus.error.image_too_small.msg'] = 'A kiválasztott kép túl kicsi ahhoz, hogy itt felhasználható legyen. Kérjük, válasszon másik képet.'; +$_lang['imageplus.error.image_not_found.title'] = 'Kép nem található'; +$_lang['imageplus.error.image_not_found.msg'] = 'A képet nem találtuk, és nem lehet levágni. Kérjük, válasszon másik képet.'; diff --git a/core/components/imageplus/lexicon/hu/properties.inc.php b/core/components/imageplus/lexicon/hu/properties.inc.php new file mode 100644 index 00000000..c7fe8e3c --- /dev/null +++ b/core/components/imageplus/lexicon/hu/properties.inc.php @@ -0,0 +1,12 @@ +check tpl és thumb.'; diff --git a/core/components/imageplus/lexicon/hu/setting.inc.php b/core/components/imageplus/lexicon/hu/setting.inc.php new file mode 100644 index 00000000..09c163f1 --- /dev/null +++ b/core/components/imageplus/lexicon/hu/setting.inc.php @@ -0,0 +1,33 @@ +documentazione per conoscere le chiavi da utilizzare nelle impostazioni di sistema/contesto.'; +$_lang['imageplus.selectConfig'] = 'Destinazione con dimensioni/proporzioni predefinite'; +$_lang['imageplus.selectConfig_desc'] = 'Seleziona un’impostazione di dimensioni/proporzioni predefinita. Le definizioni possono essere create nelle impostazioni del sistema.'; +$_lang['imageplus.selectConfigForce'] = 'Forza destinazione con dimensioni/proporzioni predefinite'; +$_lang['imageplus.selectConfigForce_desc'] = 'Selezione forzata di un ritaglio con dimensioni/proporzioni predefinite. Le definizioni possono essere create nelle impostazioni di sistema.'; +$_lang['imageplus.targetwidth'] = 'Larghezza (minima)'; +$_lang['imageplus.targetwidth_desc'] = '(Facoltativo, Intero) La larghezza desiderata per l’immagine finale. L’immagine caricata dovrebbe avere almeno questa larghezza.'; +$_lang['imageplus.targetheight'] = 'Altezza (minima)'; +$_lang['imageplus.targetheight_desc'] = '(Facoltativo, Intero) L’altezza desiderata per l’immagine finale. L’immagine caricata dovrebbe avere almeno questa altezza.'; +$_lang['imageplus.targetRatio'] = 'Proporzioni di destinazione'; +$_lang['imageplus.targetRatio_desc'] = '(Opzionale, Float [numero intero/frazionale]) Le proporzioni con valore di tipo Float per l’immagine finale. Se l’altezza e la larghezza hanno il valore impostato, il valore delle proporzioni viene ignorato.'; +$_lang['imageplus.thumbnailWidth'] = 'Larghezza delle anteprime'; +$_lang['imageplus.thumbnailWidth_desc'] = '(Opzionale, Intero) La larghezza della miniatura dell’immagine nella pannello della Template Variable.'; +$_lang['imageplus.allowAltTag'] = 'Visualizza campo tag Alt'; +$_lang['imageplus.allowAltTag_desc'] = 'Consente all’utente di inserire un titolo/tag-alt per l’immagine.'; +$_lang['imageplus.allowCaption'] = 'Visualizza campo didascalia'; +$_lang['imageplus.allowCaption_desc'] = 'Consente all’utente di inserire una didascalia per l’immagine.'; +$_lang['imageplus.allowCredits'] = 'Mostra il campo Credits'; +$_lang['imageplus.allowCredits_desc'] = 'Consente all’utente di inserire un credito per l’immagine.'; +/** Output options render **/ +$_lang['imageplus.phpThumbParams'] = 'Parametri aggiuntivi di phpThumb'; +$_lang['imageplus.phpThumbParams_desc'] = 'Aggiungi filtri aggiuntivi ecc. per phpThumb. La documentazione può essere trovata qui.'; +$_lang['imageplus.outputChunk'] = 'Chunk Output'; +$_lang['imageplus.outputChunk_desc'] = 'Seleziona un chunk per l’output della variabile tv. Lascia vuoto per avere un semplice url come output.'; +$_lang['imageplus.generateUrl'] = 'Generare l’URL dell’anteprima'; +$_lang['imageplus.generateUrl_desc'] = '(Facoltativo) L’URL della miniatura dell’immagine potrebbe non essere necessario se questa viene generata nel chunk di output, per esempio con un filtro di output pThumb.'; +$_lang['imageplus.generateUrl_desc_warning'] = 'Devi attivare questa opzione quando non specifichi un chunk di output nelle opzioni di output o quando usi il segnaposto [[+url]] nel chunk di output specificato. Altrimenti l’immagine non viene ritagliata/ridimensionata e viene restituito il percorso originale dell’immagine.'; +/** Placeholder descriptions */ +$_lang['imageplus.placeholder.url'] = 'URL dell’immagine di anteprima'; +$_lang['imageplus.placeholder.alt'] = 'Testo per l’attributo Alt'; +$_lang['imageplus.placeholder.width'] = 'Larghezza dell’anteprima dell’immagine (ignorata quando 0)'; +$_lang['imageplus.placeholder.height'] = 'Altezza dell’anteprima dell’immagine (ignorata quando 0)'; +$_lang['imageplus.placeholder.source.src'] = 'Percorso dell’immagine di origine'; +$_lang['imageplus.placeholder.source.width'] = 'Larghezza dell’immagine di origine'; +$_lang['imageplus.placeholder.source.height'] = 'Altezza dell’immagine di origine'; +$_lang['imageplus.placeholder.crop.width'] = 'Larghezza del ritaglio dell’immagine di origine'; +$_lang['imageplus.placeholder.crop.height'] = 'Altezza del ritaglio dell’immagine di origine'; +$_lang['imageplus.placeholder.crop.x'] = 'Posizione orizzontale (asse x) del ritaglio dell’immagine di origine'; +$_lang['imageplus.placeholder.crop.y'] = 'Posizione verticale (asse y) del ritaglio dell’immagine di origine'; +$_lang['imageplus.placeholder.options'] = 'L’opzione su phpThumb per generare l’anteprima dell’immagine'; +$_lang['imageplus.placeholder.crop.options'] = 'L’opzione di ritaglio su phpthumb per generare l’anteprima dell’immagine'; +$_lang['imageplus.error.image_too_small.title'] = 'Immagine troppo piccola'; +$_lang['imageplus.error.image_too_small.msg'] = 'L’immagine selezionata è troppo piccola per essere usata qui. Si prega di selezionare un’altra immagine.'; +$_lang['imageplus.error.image_not_found.title'] = 'L’immagine non è stata trovata'; +$_lang['imageplus.error.image_not_found.msg'] = 'L’immagine non è stata trovata e perciò non può essere tagliata. Si prega di selezionare un’altra immagine.'; diff --git a/core/components/imageplus/lexicon/it/properties.inc.php b/core/components/imageplus/lexicon/it/properties.inc.php new file mode 100644 index 00000000..4cd1aed8 --- /dev/null +++ b/core/components/imageplus/lexicon/it/properties.inc.php @@ -0,0 +1,12 @@ +check tpl e thumb.'; diff --git a/core/components/imageplus/lexicon/it/setting.inc.php b/core/components/imageplus/lexicon/it/setting.inc.php new file mode 100644 index 00000000..dab4de22 --- /dev/null +++ b/core/components/imageplus/lexicon/it/setting.inc.php @@ -0,0 +1,33 @@ +documentatie voor de juiste keys.'; +$_lang['imageplus.selectConfig'] = 'Voorgedefinieerde doel maten/aspect ratios'; +$_lang['imageplus.selectConfig_desc'] = 'Selecteer een vooraf gedefinieerde doel grootte/hoogte-breedteverhouding. Deze kunnen aangemaakt worden in de systeeminstellingen.'; +$_lang['imageplus.selectConfigForce'] = 'Forceer vooraf gedefinieerde doel maten/hoogte-breedteverhoudingen'; +$_lang['imageplus.selectConfigForce_desc'] = 'Forceer een vooraf gedefinieerde uitsnede grootte/hoogte-breedteverhouding. Deze kunnen aangemaakt worden in de systeeminstellingen.'; +$_lang['imageplus.targetwidth'] = 'Doel (minimale) breedte'; +$_lang['imageplus.targetwidth_desc'] = '(Optioneel, geheel getal) De breedte van de uiteindelijke afbeelding.'; +$_lang['imageplus.targetheight'] = 'Doel (minimale) hoogte'; +$_lang['imageplus.targetheight_desc'] = '(Optioneel, geheel getal) De hoogte van de uiteindelijke afbeelding.'; +$_lang['imageplus.targetRatio'] = 'Hoogte/breedteverhouding voor het doelbestand'; +$_lang['imageplus.targetRatio_desc'] = '(Optioneel, drijvend) De hoogte/breedteverhouding van de afbeelding. Als de hoogte en breedte voor de output zijn ingesteld wordt deze waarde genegeerd.'; +$_lang['imageplus.thumbnailWidth'] = 'Thumbnail breedte'; +$_lang['imageplus.thumbnailWidth_desc'] = '(Optioneel, geheel getal) De breedte van de thumbnail in het Template Variabele paneel.'; +$_lang['imageplus.allowAltTag'] = 'Alt-Tag veld weergeven'; +$_lang['imageplus.allowAltTag_desc'] = 'Laat de gebruiker een titel/alt-tag voor de afbeelding invoeren.'; +$_lang['imageplus.allowCaption'] = 'Toon bijschriftveld'; +$_lang['imageplus.allowCaption_desc'] = 'Gebruiker toestaan aan een bijschrift voor de afbeelding in te voeren.'; +$_lang['imageplus.allowCredits'] = 'Credits-veld weergeven'; +$_lang['imageplus.allowCredits_desc'] = 'Mogelijk maken dat de gebruiker een naamsvermelding (credits) voor de afbeelding kan invoeren.'; +/** Output options render **/ +$_lang['imageplus.phpThumbParams'] = 'Extra phpThumb opties'; +$_lang['imageplus.phpThumbParams_desc'] = 'Voeg extra phpThumb opties zoals filters toe. Documentatie is hier te vinden.'; +$_lang['imageplus.outputChunk'] = 'Output Chunk'; +$_lang['imageplus.outputChunk_desc'] = 'Selecteer een chunk voor de TV output. Laat leeg om alleen een link naar de afbeelding terug te krijgen.'; +$_lang['imageplus.generateUrl'] = 'Genereer Thumbnail URL'; +$_lang['imageplus.generateUrl_desc'] = '(Optioneel) De thumbnail URL is mogelijk niet nodig, als de thumbnail gegenereerd wordt in de output chunk met bijvoorbeeld een pthumb output filter.'; +$_lang['imageplus.generateUrl_desc_warning'] = 'Deze optie moet ingeschakeld zijn wanneer je geen "output chunk" hebt gedefineerd; of wanneer je de "output chunk" wel hebt gedefineerd en de [[+url]] placeholder hierin gebruikt. Als deze optie in voorgaande situaties niet is ingeschakeld dan worden afbeeldingen niet bijgesneden en/of vergroot en verkleind en wordt het pad naar de originele afbeelding weergegeven.'; +/** Placeholder descriptions */ +$_lang['imageplus.placeholder.url'] = 'URL van de thumbnail'; +$_lang['imageplus.placeholder.alt'] = 'Alternatieve tekst'; +$_lang['imageplus.placeholder.width'] = 'Breedte van de thumbnail (genegeerd indien 0)'; +$_lang['imageplus.placeholder.height'] = 'Hoogte van de thumbnail (genegeerd indien 0)'; +$_lang['imageplus.placeholder.source.src'] = 'Pad naar de bronafbeelding'; +$_lang['imageplus.placeholder.source.width'] = 'Breedte van de bronafbeelding'; +$_lang['imageplus.placeholder.source.height'] = 'Hoogte van de bronafbeelding'; +$_lang['imageplus.placeholder.crop.width'] = 'Cropbreedte van de bronafbeelding'; +$_lang['imageplus.placeholder.crop.height'] = 'Crophoogte van de bronafbeelding'; +$_lang['imageplus.placeholder.crop.x'] = 'Crop X positie van de bronafbeelding'; +$_lang['imageplus.placeholder.crop.y'] = 'Crop Y positie van de bronafbeelding'; +$_lang['imageplus.placeholder.options'] = 'phpThumb waarde om de thumbnail te genereren'; +$_lang['imageplus.placeholder.crop.options'] = 'phpThumb crop waarde om de thumbnail te genereren'; +$_lang['imageplus.error.image_too_small.title'] = 'Afbeelding is te klein'; +$_lang['imageplus.error.image_too_small.msg'] = 'De geselecteerde afbeelding is te klein om hier gebruikt te worden. Selecteer een andere afbeelding.'; +$_lang['imageplus.error.image_not_found.title'] = 'Afbeelding niet gevonden'; +$_lang['imageplus.error.image_not_found.msg'] = 'De afbeelding kan niet worden bijgesneden omdat hij niet gevonden kon worden. Selecteer een andere afbeelding.'; diff --git a/core/components/imageplus/lexicon/nl/properties.inc.php b/core/components/imageplus/lexicon/nl/properties.inc.php new file mode 100644 index 00000000..1b6936d3 --- /dev/null +++ b/core/components/imageplus/lexicon/nl/properties.inc.php @@ -0,0 +1,12 @@ +check, tpl of thumb.'; diff --git a/core/components/imageplus/lexicon/nl/setting.inc.php b/core/components/imageplus/lexicon/nl/setting.inc.php new file mode 100644 index 00000000..8bdbed99 --- /dev/null +++ b/core/components/imageplus/lexicon/nl/setting.inc.php @@ -0,0 +1,33 @@ +documentația pentru tastele corespunzătoare din setările de context/sistem.'; +$_lang['imageplus.selectConfig'] = 'Dimensiuni țintă predefinite/raporturi de aspect'; +$_lang['imageplus.selectConfig_desc'] = 'Selectați un raport predefinit de dimensiune/aspect țintă. Definițiile ar putea fi create în setările sistemului.'; +$_lang['imageplus.selectConfigForce'] = 'Dimensiuni țintă predefinite forțate/raporturi de aspect'; +$_lang['imageplus.selectConfigForce_desc'] = 'Selectare forțată a unei dimensiuni predefinite a culturii/raport de aspect. Definițiile ar putea fi create în setările sistemului.'; +$_lang['imageplus.targetwidth'] = 'Lățimea țintă (minimă)'; +$_lang['imageplus.targetwidth_desc'] = '(Opțional, număr întreg) Lățimea țintă pentru imaginea de ieșire. Imaginea încărcată trebuie să aibă această lățime minimă.'; +$_lang['imageplus.targetheight'] = 'Înălțimea țintă (minimă)'; +$_lang['imageplus.targetheight_desc'] = '(Opțional, număr întreg) Înălțimea țintă pentru imaginea de ieșire. Imaginea încărcată trebuie să aibă această înălțime minimă.'; +$_lang['imageplus.targetRatio'] = 'Raportul de aspect țintă'; +$_lang['imageplus.targetRatio_desc'] = '(Opțional, float) Raportul de aspect țintă pentru imaginea de ieșire ca valoare float. În cazul în care înălțimea țintă și lățimea țintă sunt stabilite, această valoare este ignorată.'; +$_lang['imageplus.thumbnailWidth'] = 'Lățimea miniaturii'; +$_lang['imageplus.thumbnailWidth_desc'] = '(Opțional, număr întreg) Lățimea miniaturii imaginii din panoul de variabile al șablonului.'; +$_lang['imageplus.allowAltTag'] = 'Afișați câmpul Alt Tag'; +$_lang['imageplus.allowAltTag_desc'] = 'Permiteți utilizatorului să introducă un titlu/un etichet pentru imagine.'; +$_lang['imageplus.allowCaption'] = 'Afișați câmpul de legendă'; +$_lang['imageplus.allowCaption_desc'] = 'Permiteți utilizatorului să introducă o legendă pentru imagine.'; +$_lang['imageplus.allowCredits'] = 'Afișați câmpul Credite'; +$_lang['imageplus.allowCredits_desc'] = 'Permite utilizatorului să introducă un credit pentru imagine.'; +/** Output options render **/ +$_lang['imageplus.phpThumbParams'] = 'Parametrii suplimentari phpThumb'; +$_lang['imageplus.phpThumbParams_desc'] = 'Adăugați filtre suplimentare etc. pentru phpThumb. Documentația poate fi găsită aici.'; +$_lang['imageplus.outputChunk'] = 'Output Chunk'; +$_lang['imageplus.outputChunk_desc'] = 'Selectați o bucată pentru ieșirea TV. Lăsați gol pentru ieșirea în format raw url.'; +$_lang['imageplus.generateUrl'] = 'Generarea URL-ului degetului mare'; +$_lang['imageplus.generateUrl_desc'] = '(Opțional) Adresa URL a thumbnail-ului poate să nu fie necesară dacă generați thumbnail-ul în fișierul de ieșire, de exemplu, printr-un filtru de ieșire pthumb.'; +$_lang['imageplus.generateUrl_desc_warning'] = 'Trebuie să activați această opțiune atunci când nu specificați o bucată de ieșire în opțiunile de ieșire sau atunci când folosiți simbolul de poziție [[+url]] în bucată de ieșire specificată. În caz contrar, imaginea nu este decupată/redimensionată și se returnează calea originală a imaginii.'; +/** Placeholder descriptions */ +$_lang['imageplus.placeholder.url'] = 'URL-ul imaginii în miniatură'; +$_lang['imageplus.placeholder.alt'] = 'Alt text'; +$_lang['imageplus.placeholder.width'] = 'Lățimea imaginii miniaturale (ignorată când este 0)'; +$_lang['imageplus.placeholder.height'] = 'Înălțimea imaginii miniaturale (ignorată dacă este 0)'; +$_lang['imageplus.placeholder.source.src'] = 'Cale de acces la imaginea sursă'; +$_lang['imageplus.placeholder.source.width'] = 'Lățimea imaginii sursă'; +$_lang['imageplus.placeholder.source.height'] = 'Înălțimea imaginii sursă'; +$_lang['imageplus.placeholder.crop.width'] = 'Lățimea de tăiere a imaginii sursă'; +$_lang['imageplus.placeholder.crop.height'] = 'Înălțimea de tăiere a imaginii sursă'; +$_lang['imageplus.placeholder.crop.x'] = 'Poziția x de tăiere a imaginii sursă'; +$_lang['imageplus.placeholder.crop.y'] = 'Poziția y de tăiere a imaginii sursă'; +$_lang['imageplus.placeholder.options'] = 'phpThumb șir de opțiuni pentru a genera imaginea miniaturală'; +$_lang['imageplus.placeholder.crop.options'] = 'phpThumb crop șir de opțiuni pentru generarea imaginii thumbnail'; +$_lang['imageplus.error.image_too_small.title'] = 'Imagine prea mică'; +$_lang['imageplus.error.image_too_small.msg'] = 'Imaginea selectată este prea mică pentru a fi utilizată aici. Vă rugăm să selectați o altă imagine.'; +$_lang['imageplus.error.image_not_found.title'] = 'Imaginea nu a fost găsită'; +$_lang['imageplus.error.image_not_found.msg'] = 'Imaginea nu a fost găsită și nu poate fi decupată. Vă rugăm să selectați o altă imagine.'; diff --git a/core/components/imageplus/lexicon/ru/default.inc.php b/core/components/imageplus/lexicon/ru/default.inc.php new file mode 100644 index 00000000..763cd42d --- /dev/null +++ b/core/components/imageplus/lexicon/ru/default.inc.php @@ -0,0 +1,59 @@ +документацию для соответствующих ключей в контексте/системных настройках.'; +$_lang['imageplus.selectConfig'] = 'Предопределенные размеры/соотношения сторон'; +$_lang['imageplus.selectConfig_desc'] = 'Выберите заранее заданное соотношение размера/аспекта. Определения могут быть созданы в настройках системы.'; +$_lang['imageplus.selectConfigForce'] = 'Принудительные предопределенные размеры/пропорции'; +$_lang['imageplus.selectConfigForce_desc'] = 'Выберите заранее заданное соотношение размера/аспекта. Определения могут быть созданы в настройках системы.'; +$_lang['imageplus.targetwidth'] = 'Необходимая (минимальная) ширина'; +$_lang['imageplus.targetwidth_desc'] = '(Необязательно, Integer) Необходимая ширина для отображаемого изображения. Загружаемое изображение должно иметь эту минимальную ширину.'; +$_lang['imageplus.targetheight'] = 'Необходимая (минимальная) высота'; +$_lang['imageplus.targetheight_desc'] = '(Необязательно, Integer) Необходимая высота для отображаемого изображения. Загружаемое изображение должно иметь эту минимальную высоту.'; +$_lang['imageplus.targetRatio'] = 'Необходимые пропорции'; +$_lang['imageplus.targetRatio_desc'] = '(Необязательно, Float) Необходимые пропорции для отображаемого изображения. Если заданы минимальная высота и ширина, это значение игнорируется.'; +$_lang['imageplus.thumbnailWidth'] = 'Ширина иконки'; +$_lang['imageplus.thumbnailWidth_desc'] = '(Необязательно) Ширина изображения в панели управления TV.'; +$_lang['imageplus.allowAltTag'] = 'Показывать поле для атрибута Аlt'; +$_lang['imageplus.allowAltTag_desc'] = 'Позволяет пользователю ввести заголовок/альтернативный текст для изображения.'; +$_lang['imageplus.allowCaption'] = 'Показать поле заголовка'; +$_lang['imageplus.allowCaption_desc'] = 'Разрешить пользователю ввести подпись для изображения.'; +$_lang['imageplus.allowCredits'] = 'Показать поле «Авторы»'; +$_lang['imageplus.allowCredits_desc'] = 'Разрешить пользователю ввести Автора для изображения.'; +/** Output options render **/ +$_lang['imageplus.phpThumbParams'] = 'Дополнительные параметры phpThumb'; +$_lang['imageplus.phpThumbParams_desc'] = 'Добавляет дополнительные фильтры и другие параметры для phpThumb. Документацию можно найти здесь.'; +$_lang['imageplus.outputChunk'] = 'Чанк для вывода'; +$_lang['imageplus.outputChunk_desc'] = 'Выберите чанк для вывода TV. Оставьте пустым для обычного вывода текстом.'; +$_lang['imageplus.generateUrl'] = 'Генерировать Thumb URL'; +$_lang['imageplus.generateUrl_desc'] = '(Необязательно) URL иконки может быть необязательным, если вы генерируете иконку в чанке, т.е. когда phpThumb используется как output filter.'; +$_lang['imageplus.generateUrl_desc_warning'] = 'Вы должны активировать эту опцию, когда вы не указываете выходной блок в опциях вывода или когда вы используете заполнитель [[+url]] в указанном выходном блоке. В противном случае изображение не обрезается/не изменяется, и возвращается исходный путь к изображению.'; +/** Placeholder descriptions */ +$_lang['imageplus.placeholder.url'] = 'URL иконки изображения'; +$_lang['imageplus.placeholder.alt'] = 'Альтернатиный текст (alt)'; +$_lang['imageplus.placeholder.width'] = 'Ширина иконки изображения (игнорируется когда 0)'; +$_lang['imageplus.placeholder.height'] = 'Высота иконки изображения (игнорируется когда 0)'; +$_lang['imageplus.placeholder.source.src'] = 'Путь к исходному изображению'; +$_lang['imageplus.placeholder.source.width'] = 'Ширина исходного изображения'; +$_lang['imageplus.placeholder.source.height'] = 'Высота исходного изображения'; +$_lang['imageplus.placeholder.crop.width'] = 'Ширина обрезки исходного изображения'; +$_lang['imageplus.placeholder.crop.height'] = 'Высота обрезки исходного изображения'; +$_lang['imageplus.placeholder.crop.x'] = 'Позиция обрезки исходного изображения по оси X (горизонталь)'; +$_lang['imageplus.placeholder.crop.y'] = 'Позиция обрезки исходного изображения по оси Y (вертикаль)'; +$_lang['imageplus.placeholder.options'] = 'Строка параметров phpThumb для генерации иконки изображения'; +$_lang['imageplus.placeholder.crop.options'] = 'Строка опций обрезки phpThumb для генерации иконки изображения'; +$_lang['imageplus.error.image_too_small.title'] = 'Изображение слишком маленькое'; +$_lang['imageplus.error.image_too_small.msg'] = 'Выбранное изображение слишком маленькое для использования здесь. Выберите другое изображение, пожалуйста.'; +$_lang['imageplus.error.image_not_found.title'] = 'Изображение не найдено'; +$_lang['imageplus.error.image_not_found.msg'] = 'Изображение не найдено и не может быть обрезано. Выберите другое изображение, пожалуйста.'; diff --git a/core/components/imageplus/lexicon/ru/properties.inc.php b/core/components/imageplus/lexicon/ru/properties.inc.php new file mode 100644 index 00000000..8b6ec769 --- /dev/null +++ b/core/components/imageplus/lexicon/ru/properties.inc.php @@ -0,0 +1,12 @@ +check, tpl и thumb.'; diff --git a/core/components/imageplus/lexicon/ru/setting.inc.php b/core/components/imageplus/lexicon/ru/setting.inc.php new file mode 100644 index 00000000..28b61cc2 --- /dev/null +++ b/core/components/imageplus/lexicon/ru/setting.inc.php @@ -0,0 +1,33 @@ + + * Copyright 2015-2023 by Thomas Jakobi + * + * @package imageplus + * @subpackage classfile + */ + +require_once dirname(__DIR__, 2) . '/vendor/autoload.php'; + +/** + * Class DaterangeTV + */ +class ImagePlus extends \TreehillStudio\ImagePlus\ImagePlus +{ +} diff --git a/core/components/imageplus/src/CropEngines/AbstractCropEngine.php b/core/components/imageplus/src/CropEngines/AbstractCropEngine.php new file mode 100644 index 00000000..178fa38f --- /dev/null +++ b/core/components/imageplus/src/CropEngines/AbstractCropEngine.php @@ -0,0 +1,60 @@ +modx =& $modx; + + $corePath = $this->modx->getOption('imageplus.core_path', null, $this->modx->getOption('core_path') . 'components/imageplus/'); + $this->imageplus = $this->modx->getService('imageplus', 'ImagePlus', $corePath . 'model/imageplus/', [ + 'core_path' => $corePath + ]); + } + + /** + * Checks that all requirements are met for using this engine + * + * @param modX $modx + * @return bool True if engine is usable + */ + public static function engineRequirementsMet(modX $modx) + { + return true; + } + + /** + * Parse image+ data and return an url for the cropped + * version of the image + * + * @param $json + * @param array $opts + * @param modTemplateVar $tv + * @return string + */ + abstract public function getImageUrl($json, $opts = [], $tv = null); +} diff --git a/core/components/imageplus/src/CropEngines/PhpThumbOf.php b/core/components/imageplus/src/CropEngines/PhpThumbOf.php new file mode 100644 index 00000000..9069e407 --- /dev/null +++ b/core/components/imageplus/src/CropEngines/PhpThumbOf.php @@ -0,0 +1,176 @@ +getObject('modSnippet', ['name' => 'phpthumbof']); + return $pto instanceof modSnippet; + } + + /** + * Parse image+ data and return an url for the cropped + * version of the image + * + * @param $json + * @param array $opts + * @param modTemplateVar $tv + * @return string + */ + public function getImageUrl($json, $opts = [], $tv = null) + { + if ($json == '') { + if ($this->imageplus->getOption('debug')) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'The value is empty. Could not prepare the output.', '', 'Image+'); + } + return ($tv) ? $tv->default_text : ''; + } + + // Parse json to object + $data = json_decode($json); + + // If data is null, json was invalid or empty. + // This is almost certainly because the TV is empty + if (is_null($data)) { + if ($this->imageplus->getOption('debug')) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'The JSON value is invalid. Could not prepare the output.', '', 'Image+'); + } + return ($tv) ? $tv->default_text : ''; + } + + // Load up the mediaSource + /** @var modMediaSource $source */ + $source = $this->modx->getObject('sources.modMediaSource', $data->sourceImg->source); + if (!$source instanceof modMediaSource) { + if ($this->imageplus->getOption('debug')) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'Invalid Media Source', '', 'Image+'); + } + return 'Image+ Error: Invalid Media Source'; + } + $this->modx->setPlaceholder('docid', $this->modx->getOption('docid', $opts, 0)); + $source->initialize(); + + // Grab absolute system path to image + $imgPath = realpath($source->getBasePath() . $data->sourceImg->src); + + if ($this->imageplus->getOption('debug') && !$imgPath) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'The realpath of the image ' . $source->getBasePath() . $data->sourceImg->src . 'is not valid. Please check the media source path setting of the Image+ image.', '', 'Image+'); + } + + // Prepare arguments for phpthumbof snippet call + $cropParams = [ + 'sx' => $data->crop->x, + 'sy' => $data->crop->y, + 'sw' => $data->crop->width, + 'sh' => $data->crop->height, + ]; + $params = []; + if ($data->targetWidth) { + $params = array_merge($params, [ + 'w' => $data->targetWidth + ]); + } + if ($data->targetHeight) { + $params = array_merge($params, [ + 'h' => $data->targetHeight + ]); + } + if ($data->targetWidth && $data->targetHeight) { + $params = array_merge($params, [ + 'far' => true + ]); + } + $params = array_merge($cropParams, $params); + + // Add phpThumbParams to phpthumbof snippet call arguments + $phpThumbParams = $this->modx->getOption('phpThumbParams', $opts, ''); + $optParams = []; + if ($phpThumbParams) { + parse_str($phpThumbParams, $optParams); + foreach ($optParams as $key => $val) { + if (empty($val)) { + unset($optParams[$key]); + } + } + } + $optParams = ($optParams) ? array_merge($cropParams, $optParams) : array_merge($params, $optParams); + $options = http_build_query($optParams); + $options = rawurldecode(preg_replace('/%5B[0-9]+%5D/simU', '%5B%5D', $options)); + $cropOptions = http_build_query($cropParams); + + $data->targetWidth = $optParams['w'] ?? 0; + $data->targetHeight = $optParams['h'] ?? 0; + + // Call phpthumbof for url + $generateUrl = $this->modx->getOption('generateUrl', $opts, 1); + if (file_exists($imgPath)) { + if ($generateUrl) { + $url = $this->modx->runSnippet( + 'phpthumbof', + [ + 'options' => $options, + 'input' => $imgPath + ] + ); + } else { + $url = $source->getBaseUrl() . $data->sourceImg->src; + } + } else { + $url = $data->sourceImg->src; + } + + // If an output chunk is selected, parse that + $outputChunk = $this->modx->getOption('outputChunk', $opts, ''); + if ($outputChunk) { + $chunkParams = array_merge($opts, [ + 'url' => $url, + 'alt' => $data->altTag ?? '', + 'width' => $data->targetWidth, + 'height' => $data->targetHeight, + 'source.src' => $imgPath, + 'source.width' => $data->sourceImg->width, + 'source.height' => $data->sourceImg->height, + 'crop.width' => $data->crop->width, + 'crop.height' => $data->crop->height, + 'crop.x' => $data->crop->x, + 'crop.y' => $data->crop->y, + 'options' => $options, + 'crop.options' => $cropOptions, + 'caption' => $data->caption ?? '', + 'credits' => $data->credits ?? '' + ]); + return $this->modx->getChunk($outputChunk, $chunkParams); + } else { + // Otherwise return raw url + return $url; + } + } +} diff --git a/core/components/imageplus/src/CropEngines/PhpThumbOn.php b/core/components/imageplus/src/CropEngines/PhpThumbOn.php new file mode 100644 index 00000000..13453026 --- /dev/null +++ b/core/components/imageplus/src/CropEngines/PhpThumbOn.php @@ -0,0 +1,176 @@ +getObject('modSnippet', ['name' => 'phpthumbon']); + return $pto instanceof modSnippet; + } + + /** + * Parse image+ data and return an url for the cropped + * version of the image + * + * @param $json + * @param array $opts + * @param modTemplateVar $tv + * @return string + */ + public function getImageUrl($json, $opts = [], $tv = null) + { + if ($json == '') { + if ($this->imageplus->getOption('debug')) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'The value is empty. Could not prepare the output.', '', 'Image+'); + } + return ($tv) ? $tv->default_text : ''; + } + + // Parse json to object + $data = json_decode($json); + + // If data is null, json was invalid or empty. + // This is almost certainly because the TV is empty + if (is_null($data)) { + if ($this->imageplus->getOption('debug')) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'The JSON value is invalid. Could not prepare the output.', '', 'Image+'); + } + return ($tv) ? $tv->default_text : ''; + } + + // Load up the mediaSource + /** @var modMediaSource $source */ + $source = $this->modx->getObject('sources.modMediaSource', $data->sourceImg->source); + if (!$source instanceof modMediaSource) { + if ($this->imageplus->getOption('debug')) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'Invalid Media Source', '', 'Image+'); + } + return 'Image+ Error: Invalid Media Source'; + } + $this->modx->setPlaceholder('docid', $this->modx->getOption('docid', $opts, 0)); + $source->initialize(); + + // Grab absolute system path to image + $imgPath = realpath($source->getBasePath() . $data->sourceImg->src); + + if ($this->imageplus->getOption('debug') && !$imgPath) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'The realpath of the image ' . $source->getBasePath() . $data->sourceImg->src . 'is not valid. Please check the media source path setting of the Image+ image.', '', 'Image+'); + } + + // Prepare arguments for phpthumbon snippet call + $cropParams = [ + 'sx' => $data->crop->x, + 'sy' => $data->crop->y, + 'sw' => $data->crop->width, + 'sh' => $data->crop->height, + ]; + $params = []; + if ($data->targetWidth) { + $params = array_merge($params, [ + 'w' => $data->targetWidth + ]); + } + if ($data->targetHeight) { + $params = array_merge($params, [ + 'h' => $data->targetHeight + ]); + } + if ($data->targetWidth && $data->targetHeight) { + $params = array_merge($params, [ + 'far' => true + ]); + } + $params = array_merge($cropParams, $params); + + // Add phpThumbParams to phpthumbon snippet call arguments + $phpThumbParams = $this->modx->getOption('phpThumbParams', $opts, ''); + $optParams = []; + if ($phpThumbParams) { + parse_str($phpThumbParams, $optParams); + foreach ($optParams as $key => $val) { + if (empty($val)) { + unset($optParams[$key]); + } + } + } + $optParams = ($optParams) ? array_merge($cropParams, $optParams) : array_merge($params, $optParams); + $options = http_build_query($optParams); + $options = rawurldecode(preg_replace('/%5B[0-9]+%5D/simU', '%5B%5D', $options)); + $cropOptions = http_build_query($cropParams); + + $data->targetWidth = $optParams['w'] ?? 0; + $data->targetHeight = $optParams['h'] ?? 0; + + // Call phpthumbon for url + $generateUrl = $this->modx->getOption('generateUrl', $opts, 1); + if (file_exists($imgPath)) { + if ($generateUrl) { + $url = $this->modx->runSnippet( + 'phpthumbon', + [ + 'options' => $options, + 'input' => $imgPath + ] + ); + } else { + $url = $source->getBaseUrl() . $data->sourceImg->src; + } + } else { + $url = $data->sourceImg->src; + } + + // If an output chunk is selected, parse that + $outputChunk = $this->modx->getOption('outputChunk', $opts, ''); + if ($outputChunk) { + $chunkParams = array_merge($opts, [ + 'url' => $url, + 'alt' => $data->altTag ?? '', + 'width' => $data->targetWidth, + 'height' => $data->targetHeight, + 'source.src' => $imgPath, + 'source.width' => $data->sourceImg->width, + 'source.height' => $data->sourceImg->height, + 'crop.width' => $data->crop->width, + 'crop.height' => $data->crop->height, + 'crop.x' => $data->crop->x, + 'crop.y' => $data->crop->y, + 'options' => $options, + 'crop.options' => $cropOptions, + 'caption' => $data->caption ?? '', + 'credits' => $data->credits ?? '' + ]); + return $this->modx->getChunk($outputChunk, $chunkParams); + } else { + // Otherwise return raw url + return $url; + } + } +} diff --git a/core/components/imageplus/src/CropEngines/PhpThumbsUp.php b/core/components/imageplus/src/CropEngines/PhpThumbsUp.php new file mode 100755 index 00000000..7f2177aa --- /dev/null +++ b/core/components/imageplus/src/CropEngines/PhpThumbsUp.php @@ -0,0 +1,176 @@ +getObject('modSnippet', ['name' => 'phpthumbsup']); + return $pto instanceof modSnippet; + } + + /** + * Parse image+ data and return an url for the cropped + * version of the image + * + * @param $json + * @param array $opts + * @param modTemplateVar $tv + * @return string + */ + public function getImageUrl($json, $opts = [], $tv = null) + { + if ($json == '') { + if ($this->imageplus->getOption('debug')) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'The value is empty. Could not prepare the output.', '', 'Image+'); + } + return ($tv) ? $tv->default_text : ''; + } + + // Parse json to object + $data = json_decode($json); + + // If data is null, json was invalid or empty. + // This is almost certainly because the TV is empty + if (is_null($data)) { + if ($this->imageplus->getOption('debug')) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'The JSON value is invalid. Could not prepare the output.', '', 'Image+'); + } + return ($tv) ? $tv->default_text : ''; + } + + // Load up the mediaSource + /** @var modMediaSource $source */ + $source = $this->modx->getObject('sources.modMediaSource', $data->sourceImg->source); + if (!$source instanceof modMediaSource) { + if ($this->imageplus->getOption('debug')) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'Invalid Media Source', '', 'Image+'); + } + return 'Image+ Error: Invalid Media Source'; + } + $this->modx->setPlaceholder('docid', $this->modx->getOption('docid', $opts, 0)); + $source->initialize(); + + // Grab absolute system path to image + $imgPath = realpath($source->getBasePath() . $data->sourceImg->src); + + if ($this->imageplus->getOption('debug') && !$imgPath) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'The realpath of the image ' . $source->getBasePath() . $data->sourceImg->src . 'is not valid. Please check the media source path setting of the Image+ image.', '', 'Image+'); + } + + // Prepare arguments for phpthumbof snippet call + $cropParams = [ + 'sx' => $data->crop->x, + 'sy' => $data->crop->y, + 'sw' => $data->crop->width, + 'sh' => $data->crop->height, + ]; + $params = []; + if ($data->targetWidth) { + $params = array_merge($params, [ + 'w' => $data->targetWidth + ]); + } + if ($data->targetHeight) { + $params = array_merge($params, [ + 'h' => $data->targetHeight + ]); + } + if ($data->targetWidth && $data->targetHeight) { + $params = array_merge($params, [ + 'far' => true + ]); + } + $params = array_merge($cropParams, $params); + + // Add phpThumbParams to phpthumbsup snippet call arguments + $phpThumbParams = $this->modx->getOption('phpThumbParams', $opts, ''); + $optParams = []; + if ($phpThumbParams) { + parse_str($phpThumbParams, $optParams); + foreach ($optParams as $key => $val) { + if (empty($val)) { + unset($optParams[$key]); + } + } + } + $optParams = ($optParams) ? array_merge($cropParams, $optParams) : array_merge($params, $optParams); + $options = http_build_query($optParams); + $options = rawurldecode(preg_replace('/%5B[0-9]+%5D/simU', '%5B%5D', $options)); + $cropOptions = http_build_query($cropParams); + + $data->targetWidth = $optParams['w'] ?? 0; + $data->targetHeight = $optParams['h'] ?? 0; + + // Call phpthumbsup for url + $generateUrl = $this->modx->getOption('generateUrl', $opts, 1); + if (file_exists($imgPath)) { + if ($generateUrl) { + $url = $this->modx->runSnippet( + 'phpthumbsup', + [ + 'options' => $options, + 'input' => $imgPath + ] + ); + } else { + $url = $source->getBaseUrl() . $data->sourceImg->src; + } + } else { + $url = $data->sourceImg->src; + } + + // If an output chunk is selected, parse that + $outputChunk = $this->modx->getOption('outputChunk', $opts, ''); + if ($outputChunk) { + $chunkParams = array_merge($opts, [ + 'url' => $url, + 'alt' => $data->altTag ?? '', + 'width' => $data->targetWidth, + 'height' => $data->targetHeight, + 'source.src' => $imgPath, + 'source.width' => $data->sourceImg->width, + 'source.height' => $data->sourceImg->height, + 'crop.width' => $data->crop->width, + 'crop.height' => $data->crop->height, + 'crop.x' => $data->crop->x, + 'crop.y' => $data->crop->y, + 'options' => $options, + 'crop.options' => $cropOptions, + 'caption' => $data->caption ?? '', + 'credits' => $data->credits ?? '' + ]); + return $this->modx->getChunk($outputChunk, $chunkParams); + } else { + // Otherwise return raw url + return $url; + } + } +} diff --git a/core/components/imageplus/src/ImagePlus.php b/core/components/imageplus/src/ImagePlus.php new file mode 100644 index 00000000..915785f3 --- /dev/null +++ b/core/components/imageplus/src/ImagePlus.php @@ -0,0 +1,299 @@ + + * Copyright 2015-2023 by Thomas Jakobi + * + * @package imageplus + * @subpackage classfile + */ + +namespace TreehillStudio\ImagePlus; + +use modTemplateVar; +use TreehillStudio\ImagePlus\CropEngines\AbstractCropEngine; +use modMediaSource; +use modX; +use stdClass; +use xPDO; + +/** + * Class ImagePlus + */ +class ImagePlus +{ + /** + * A reference to the modX instance + * @var modX $modx + */ + public $modx; + + /** + * The namespace + * @var string $namespace + */ + public $namespace = 'imageplus'; + + /** + * The package name + * @var string $packageName + */ + public $packageName = 'ImagePlus'; + + /** + * The version + * @var string $version + */ + public $version = '2.9.5'; + + /** + * The class options + * @var array $options + */ + public $options = []; + + /** + * ImagePlus constructor + * + * @param modX $modx A reference to the modX instance. + * @param array $options An array of options. Optional. + */ + public function __construct(modX &$modx, $options = []) + { + $this->modx =& $modx; + + $corePath = $this->getOption('core_path', $options, $this->modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/' . $this->namespace . '/'); + $assetsPath = $this->getOption('assets_path', $options, $this->modx->getOption('assets_path', null, MODX_ASSETS_PATH) . 'components/' . $this->namespace . '/'); + $assetsUrl = $this->getOption('assets_url', $options, $this->modx->getOption('assets_url', null, MODX_ASSETS_URL) . 'components/' . $this->namespace . '/'); + $modxversion = $this->modx->getVersionData(); + + // Load some default paths for easier management + $this->options = array_merge([ + 'namespace' => $this->namespace, + 'version' => $this->version, + 'corePath' => $corePath, + 'modelPath' => $corePath . 'model/', + 'vendorPath' => $corePath . 'vendor/', + 'chunksPath' => $corePath . 'elements/chunks/', + 'pagesPath' => $corePath . 'elements/pages/', + 'snippetsPath' => $corePath . 'elements/snippets/', + 'pluginsPath' => $corePath . 'elements/plugins/', + 'controllersPath' => $corePath . 'controllers/', + 'processorsPath' => $corePath . 'processors/', + 'templatesPath' => $corePath . 'templates/', + 'assetsPath' => $assetsPath, + 'assetsUrl' => $assetsUrl, + 'jsUrl' => $assetsUrl . 'js/', + 'cssUrl' => $assetsUrl . 'css/', + 'imagesUrl' => $assetsUrl . 'images/', + 'connectorUrl' => $assetsUrl . 'connector.php' + ], $options); + + // Add default options + $this->options = array_merge($this->options, [ + 'debug' => (bool)$this->modx->getOption($this->namespace . '.debug', null, '0') == 1, + 'modxversion' => $modxversion['version'], + 'sources' => $this->loadSourceMap() + ]); + + $this->checkDependencies(); + + $lexicon = $this->modx->getService('lexicon', 'modLexicon'); + $lexicon->load($this->namespace . ':default'); + } + + /** + * Get a local configuration option or a namespaced system setting by key. + * + * @param string $key The option key to search for. + * @param array $options An array of options that override local options. + * @param mixed $default The default value returned if the option is not found locally or as a + * namespaced system setting; by default this value is null. + * @return mixed The option value or the default value specified. + */ + public function getOption($key, $options = [], $default = null) + { + $option = $default; + if (!empty($key) && is_string($key)) { + if ($options != null && array_key_exists($key, $options)) { + $option = $options[$key]; + } elseif (array_key_exists($key, $this->options)) { + $option = $this->options[$key]; + } elseif (array_key_exists("$this->namespace.$key", $this->modx->config)) { + $option = $this->modx->getOption("$this->namespace.$key"); + } + } + return $option; + } + + /** + * Check dependencies and raise warnings if not met + */ + private function checkDependencies() + { + // Do some basic intelligent sniffing + if (!$this->getOption('cropEngineClass')) { + if (CropEngines\PhpThumbsUp::engineRequirementsMet($this->modx)) { + $this->options['cropEngineClass'] = '\TreehillStudio\ImagePlus\CropEngines\PhpThumbsUp'; + } elseif (CropEngines\PhpThumbOf::engineRequirementsMet($this->modx)) { + $this->options['cropEngineClass'] = '\TreehillStudio\ImagePlus\CropEngines\PhpThumbOf'; + } elseif (CropEngines\PhpThumbOn::engineRequirementsMet($this->modx)) { + $this->options['cropEngineClass'] = '\TreehillStudio\ImagePlus\CropEngines\PhpThumbOn'; + } else { + $this->options['cropEngineClass'] = ''; + } + if (!$this->getOption('cropEngineClass')) { + // Handle unmet dependencies + $this->options['hasUnmetDependencies'] = true; + return; + } + } + $this->options['hasUnmetDependencies'] = false; + } + + /** + * Get a map of MediaSource id => baseUrl + * + * @return array + */ + private function loadSourceMap() + { + $sources = $this->modx->getCollection('sources.modMediaSource'); + $sourceMap = []; + foreach ($sources as $source) { + /** @var modMediaSource $source */ + $source->initialize(); + $sourceMap[$source->get('id')] = new stdClass(); + $sourceMap[$source->get('id')]->url = $source->getBaseUrl(); + } + return $sourceMap; + } + + /** + * Register javascripts in the controller + */ + public function includeScriptAssets() + { + $assetsUrl = $this->getOption('assetsUrl'); + $jsUrl = $this->getOption('jsUrl') . 'mgr/'; + $jsSourceUrl = $assetsUrl . '../../../source/js/mgr/'; + $jsVendorUrl = $assetsUrl . '../../../source/vendor/'; + $cssUrl = $this->getOption('cssUrl') . 'mgr/'; + $cssSourceUrl = $assetsUrl . '../../../source/css/mgr/'; + $nodeUrl = $assetsUrl . '../../../node_modules/'; + + if ($this->getOption('debug') && $assetsUrl != MODX_ASSETS_URL . 'components/imageplus/') { + $this->modx->controller->addJavascript($jsSourceUrl . 'imageplus.js?v=v' . $this->version); + $this->modx->controller->addJavascript($jsSourceUrl . 'imageplus.panel.input.js?v=v' . $this->version); + $this->modx->controller->addJavascript($jsSourceUrl . 'imageplus.window.editor.js?v=v' . $this->version); + $this->modx->controller->addJavascript($jsSourceUrl . 'imageplus.migx_renderer.js?v=v' . $this->version); + $this->modx->controller->addJavascript($jsSourceUrl . 'tools/JSON2.js?v=v' . $this->version); + $this->modx->controller->addJavascript($nodeUrl . 'jquery/dist/jquery.slim.min.js?v=v' . $this->version); + $this->modx->controller->addJavascript($jsVendorUrl . 'jcrop/js/jquery.Jcrop.min.js?v=v' . $this->version); + $this->modx->controller->addJavascript($jsSourceUrl . 'imageplus.jquery.imagecrop.js?v=v' . $this->version); + $this->modx->controller->addJavascript($jsSourceUrl . 'imageplus.grid.js?v=v' . $this->version); + $this->modx->controller->addCss($cssSourceUrl . 'imageplus.css?v=v' . $this->version); + } else { + $this->modx->controller->addJavascript($jsUrl . 'imageplus.min.js?v=v' . $this->version); + $this->modx->controller->addCss($cssUrl . 'imageplus.min.css?v=v' . $this->version); + } + $this->modx->controller->addHtml(''); + } + + /** + * Return a scaled, cached version of the source image for front-end use + * + * @param string $json + * @param array $opts + * @param modTemplateVar $tv + * @return string + * @internal param array $params + */ + public function getImageURL($json, $opts = [], $tv = null) + { + // Check system settings for crop engine override + $engineClass = $this->getOption('cropEngineClass'); + + /** + * @var AbstractCropEngine $cropEngine + */ + $cropEngine = new $engineClass($this->modx, [ + 'core_path' => $this->getOption('corePath') + ]); + + // Check crop engine is usable + if ($this->getOption('hasUnmetDependencies')) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'Requirements not met for crop engine.', '', 'Image+'); + return 'Image+ error - requirements not met for crop engine.'; + } + + $json = $this->prepareTvValue($json, $opts, $tv); + return $cropEngine->getImageUrl($json, $opts, $tv); + } + + /** + * Prepare a JSON encoded object and return a valid JSON encoded Image+ object + * + * @param string $json JSON value to prepare + * @param array $opts + * @param modTemplateVar $tv + * @return string + */ + public function prepareTvValue($json, $opts = [], $tv = null) + { + // Prepare value + $decoded = json_decode($json); + if (!$decoded) { + // The variable does not contain an Image+ image object + if ($json != '') { + // Get Media Source + /** @var modMediaSource $source */ + if ($tv) { + $source = $tv->getSource(($this->modx->resource) ? $this->modx->resource->get('context_key') : 'mgr'); + } else { + $source = $this->modx->getObject('sources.modMediaSource', $this->modx->getOption('default_media_source')); + } + if (!$source) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'Invalid Media Source', '', 'Image+'); + return ''; + } + $source->setRequestProperties($_REQUEST); + $source->initialize(); + + // The variable contains a value and has to be converted to an Image+ image object + $imgPath = $source->getBasePath() . $json; + if (file_exists($imgPath)) { + $size = getimagesize($imgPath); + } else { + if ($this->getOption('debug')) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'The template variabe value does not contain an existing image', '', 'Image+'); + } + $size = false; + } + $json = json_encode([ + 'altTag' => '', + 'crop' => [ + 'height' => ($size) ? $size[1] : 0, + 'width' => ($size) ? $size[0] : 0, + 'x' => 0, + 'y' => 0 + ], + 'sourceImg' => [ + 'height' => ($size) ? $size[1] : 0, + 'width' => ($size) ? $size[0] : 0, + 'source' => $source->get('id'), + 'src' => $json + ], + 'targetHeight' => (int)($opts['targetHeight'] ?? 0), + 'targetWidth' => (int)($opts['targetWidth'] ?? 0) + ]); + } + } + return $json; + } +} + +define('imageplus', true); diff --git a/core/components/imageplus/src/Plugins/Events/OnManagerPageBeforeRender.php b/core/components/imageplus/src/Plugins/Events/OnManagerPageBeforeRender.php new file mode 100644 index 00000000..1608afd0 --- /dev/null +++ b/core/components/imageplus/src/Plugins/Events/OnManagerPageBeforeRender.php @@ -0,0 +1,19 @@ +modx->controller->addLexiconTopic('imageplus:default'); + $this->modx->controller->addLexiconTopic('imageplus:setting'); + $this->imageplus->includeScriptAssets(); + } +} diff --git a/core/components/imageplus/src/Plugins/Events/OnTVInputPropertiesList.php b/core/components/imageplus/src/Plugins/Events/OnTVInputPropertiesList.php new file mode 100644 index 00000000..efa758bc --- /dev/null +++ b/core/components/imageplus/src/Plugins/Events/OnTVInputPropertiesList.php @@ -0,0 +1,17 @@ +modx->event->output($this->imageplus->getOption('corePath') . 'elements/tv/input/options/'); + } +} diff --git a/core/components/imageplus/src/Plugins/Events/OnTVInputRenderList.php b/core/components/imageplus/src/Plugins/Events/OnTVInputRenderList.php new file mode 100644 index 00000000..92750884 --- /dev/null +++ b/core/components/imageplus/src/Plugins/Events/OnTVInputRenderList.php @@ -0,0 +1,17 @@ +modx->event->output($this->imageplus->getOption('corePath') . 'elements/tv/input/'); + } +} diff --git a/core/components/imageplus/src/Plugins/Events/OnTVOutputRenderList.php b/core/components/imageplus/src/Plugins/Events/OnTVOutputRenderList.php new file mode 100644 index 00000000..d4e4113c --- /dev/null +++ b/core/components/imageplus/src/Plugins/Events/OnTVOutputRenderList.php @@ -0,0 +1,17 @@ +modx->event->output($this->imageplus->getOption('corePath') . 'elements/tv/output/'); + } +} diff --git a/core/components/imageplus/src/Plugins/Events/OnTVOutputRenderPropertiesList.php b/core/components/imageplus/src/Plugins/Events/OnTVOutputRenderPropertiesList.php new file mode 100644 index 00000000..78115ae9 --- /dev/null +++ b/core/components/imageplus/src/Plugins/Events/OnTVOutputRenderPropertiesList.php @@ -0,0 +1,17 @@ +modx->event->output($this->imageplus->getOption('corePath') . 'elements/tv/output/options/'); + } +} diff --git a/core/components/imageplus/src/Plugins/Plugin.php b/core/components/imageplus/src/Plugins/Plugin.php new file mode 100644 index 00000000..74af3d21 --- /dev/null +++ b/core/components/imageplus/src/Plugins/Plugin.php @@ -0,0 +1,71 @@ +scriptProperties = &$scriptProperties; + $this->modx =& $modx; + $corePath = $this->modx->getOption('imageplus.core_path', null, $this->modx->getOption('core_path') . 'components/imageplus/'); + $this->imageplus = $this->modx->getService('imageplus', 'ImagePlus', $corePath . 'model/imageplus/', [ + 'core_path' => $corePath + ]); + } + + /** + * Run the plugin event. + */ + public function run() + { + $init = $this->init(); + if ($init !== true) { + return; + } + + $this->process(); + } + + /** + * Initialize the plugin event. + * + * @return bool + */ + public function init() + { + return true; + } + + /** + * Process the plugin event code. + * + * @return mixed + */ + abstract public function process(); +} \ No newline at end of file diff --git a/core/components/imageplus/src/Snippets/ImagePlus.php b/core/components/imageplus/src/Snippets/ImagePlus.php new file mode 100644 index 00000000..6a5f3aa5 --- /dev/null +++ b/core/components/imageplus/src/Snippets/ImagePlus.php @@ -0,0 +1,121 @@ + '', + 'tvname' => '', + 'docid::int' => (isset($this->modx->resource)) ? $this->modx->resource->get('id') : 0, + 'type' => '', + 'options' => '', + 'tpl' => 'ImagePlus.image', + 'input::bool' => $this->imageplus->getOption('debug') + ]; + } + + /** + * Execute the snippet and return the result. + * + * @return string + */ + public function execute() + { + $value = $this->getProperty('value'); + $tvname = $this->getProperty('tvname'); + $docid = $this->getProperty('docid'); + $type = $this->getProperty('type'); + $options = $this->getProperty('options'); + $tpl = $this->getProperty('tpl'); + $debug = $this->getProperty('debug'); + + if ($value) { + // Value is set by snippet property + $data = json_decode($value); + if (!$data) { + if ($debug) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, 'Unable to decode JSON in snippet property', '', 'Image+'); + return 'Unable to decode JSON in snippet property'; + } + } + // No TV is used + $tv = null; + $tvOutputProperties = []; + } else { + // Value is retreived from template variable + /** @var modTemplateVar $tv */ + $tv = $this->modx->getObject('modTemplateVar', ['name' => $tvname]); + if ($tv) { + // Get the raw content of the TV + $value = $tv->getValue($docid); + $value = $tv->processBindings($value, $docid); + $tvOutputProperties = $tv->get('output_properties'); + foreach ($tvOutputProperties as &$tvOutputProperty) { + switch ($tvOutputProperty) { + case 'true' : + $tvOutputProperty = true; + break; + case 'false' : + $tvOutputProperty = false; + break; + } + } + } else { + if ($debug) { + $this->modx->log(xPDO::LOG_LEVEL_ERROR, "Template Variable '$tvname' not found.", '', 'Image+'); + return "Template Variable '$tvname' not found."; + } + $tvOutputProperties = []; + } + } + + // Render output + switch ($type) { + case 'check': + $data = json_decode($value); + $output = ($data && $data->sourceImg->src) ? 'image' : 'noimage'; + break; + case 'tpl': + $data = json_decode($value); + $output = ($value) ? $this->imageplus->getImageURL($value, array_merge($tvOutputProperties, $this->getProperties(), [ + 'docid' => $docid, + 'phpThumbParams' => $options, + 'outputChunk' => $tpl, + 'caption' => ($data && isset($data->caption)) ? $data->caption : '', + 'credits' => ($data && isset($data->credits)) ? $data->credits : '' + ]), $tv) : ''; + break; + case 'thumb': + $output = ($value) ? $this->imageplus->getImageURL($value, array_merge($tvOutputProperties, $this->getProperties(), [ + 'docid' => $docid, + 'phpThumbParams' => $options, + 'outputChunk' => '', + ]), $tv) : ''; + break; + default: + $output = ($value) ? $this->imageplus->getImageURL($value, array_merge($tvOutputProperties, $this->getProperties(), [ + 'docid' => $docid, + 'phpThumbParams' => $options, + ]), $tv) : ''; + break; + } + return $output; + } +} diff --git a/core/components/imageplus/src/Snippets/Snippet.php b/core/components/imageplus/src/Snippets/Snippet.php new file mode 100644 index 00000000..e15277e0 --- /dev/null +++ b/core/components/imageplus/src/Snippets/Snippet.php @@ -0,0 +1,163 @@ +modx =& $modx; + + $corePath = $this->modx->getOption('imageplus.core_path', null, $this->modx->getOption('core_path') . 'components/imageplus/'); + $this->imageplus = $this->modx->getService('imageplus', 'ImagePlus', $corePath . 'model/imageplus/', [ + 'core_path' => $corePath + ]); + + $this->properties = $this->initProperties($properties); + } + + /** + * Get default snippet properties. + * + * @return array + */ + public function getDefaultProperties() + { + return []; + } + + /** + * @param array $properties + * @return array + */ + public function initProperties(array $properties = []) + { + $result = []; + foreach ($this->getDefaultProperties() as $key => $value) { + $parts = explode('::', $key); + $key = ($this->propertyPrefix && !in_array('noPrefix', $parts)) ? $this->propertyPrefix . ucfirst($parts[0]) : $parts[0]; + if (isset($parts[1]) && method_exists($this, 'get' . ucfirst($parts[1]))) { + if (isset($parts[2])) { + $result[$parts[0]] = $this->{'get' . ucfirst($parts[1])}($this->modx->getOption($key, $properties, $value, true), $parts[2]); + } else { + $result[$parts[0]] = $this->{'get' . ucfirst($parts[1])}($this->modx->getOption($key, $properties, $value, true)); + } + } else { + $result[$parts[0]] = $this->modx->getOption($key, $properties, $value, true); + } + if ($this->propertyPrefix) { + unset($properties[$key]); + } + unset($properties[$parts[0]]); + } + return array_merge($result, $properties); + } + + /** + * @param $value + * @return int + */ + protected function getInt($value) + { + return (int)$value; + } + + /** + * @param $value + * @return bool + */ + protected function getBool($value) + { + return ($value == 1 || $value == '1' || $value == true || $value == 'true'); + } + + /** + * @param $value + * @return array|null + */ + protected function getAssociativeJson($value) + { + return (is_string($value)) ? json_decode($value, true) : $value; + } + + /** + * Explode a separated value to an array. + * + * @param mixed $value + * @param string $separator + * @return array + */ + protected function getExplodeSeparated($value, $separator = ',') + { + return (is_string($value) && $value !== '') ? array_map('trim', explode($separator, $value)) : []; + } + + /** + * Get the snippet properties. + * + * @return array + */ + public function getProperties() + { + return $this->properties; + } + + /** + * Get a snippet property value or the default value. + * + * @param string $key + * @param null $default + * @return mixed + */ + public function getProperty(string $key, $default = null) + { + if (isset($this->properties[$key])) { + return $this->properties[$key]; + } + return $default; + } + + abstract public function execute(); +} diff --git a/core/components/tvimageplus/docs/changelog.txt b/core/components/tvimageplus/docs/changelog.txt deleted file mode 100644 index b4e5bb67..00000000 --- a/core/components/tvimageplus/docs/changelog.txt +++ /dev/null @@ -1,13 +0,0 @@ -------------------------- - Image+ TV type changelog -------------------------- - -# v2.1 --------- - :: Fixed bug with non-default media sources - :: Added field for additional phpThumb parameters to output renderer - :: Added option to specify a chunk for output formatting (fields: url,alt,width,height) - -# v2.0 -------- -Complete rewrite \ No newline at end of file diff --git a/core/components/tvimageplus/docs/readme.tpl b/core/components/tvimageplus/docs/readme.tpl deleted file mode 100644 index ad46adcd..00000000 --- a/core/components/tvimageplus/docs/readme.tpl +++ /dev/null @@ -1,27 +0,0 @@ ---------------------- - Image+ TV type ---------------------- - Version: {$version} - Author: Alan Pich - License: GNU GPLv2 - Date: {$date} - Build: {$commit} - - Dependencies: phpThumbOf - - - -Advanced image TV input type for MODx Revolution. -The required dimensions for the image can (optionally) -be configured on the TV, restricting one or both -dimensions. When the editor uploads an image to the TV, -they can then use a graphical tool to crop the image -to the required dimensions/proportions. - -Usage ---------- -Install via package manager -Create a TV with input & output types of Image+ - -Full documentation can be found at -https://github.com/alanpich/tvImagePlus \ No newline at end of file diff --git a/core/components/tvimageplus/elements/plugins/plugin.ImagePlusRouter.php b/core/components/tvimageplus/elements/plugins/plugin.ImagePlusRouter.php deleted file mode 100644 index 357aa5ca..00000000 --- a/core/components/tvimageplus/elements/plugins/plugin.ImagePlusRouter.php +++ /dev/null @@ -1,20 +0,0 @@ -getOption('core_path',null,MODX_CORE_PATH).'components/tvimageplus/'; -$assetsUrl = $modx->getOption('assets_url',null,MODX_ASSETS_URL).'components/tvimageplus/js/mgr/'; - -$modx->lexicon->load('tvimageplus:default'); - -switch ($modx->event->name) { - case 'OnTVInputRenderList': - $modx->event->output($corePath.'elements/tv/input/'); - break; - case 'OnTVOutputRenderList': - $modx->event->output($corePath.'elements/tv/output/'); - break; - case 'OnTVInputPropertiesList': - $modx->event->output($corePath.'elements/tv/input/options/'); - break; - case 'OnTVOutputRenderPropertiesList': - $modx->event->output($corePath.'elements/tv/output/options/'); - break; -}; \ No newline at end of file diff --git a/core/components/tvimageplus/elements/tv/input/imageplus.class.php b/core/components/tvimageplus/elements/tv/input/imageplus.class.php deleted file mode 100644 index a64619dd..00000000 --- a/core/components/tvimageplus/elements/tv/input/imageplus.class.php +++ /dev/null @@ -1,111 +0,0 @@ -modx->lexicon->load('tvimageplus:default'); - - // Load helper class - if(!class_exists('tvImagePlus')){ - require $this->modx->getOption('core_path').'components/tvimageplus/tvImagePlus.class.php'; }; - $this->helper = new tvImagePlus($this->modx); - - // Load required javascripts & register global config - $this->modx->regClientCSS($this->helper->config['assets_url'].'mgr/css/jquery/jquery.jcrop.min.css'); - $this->modx->regClientStartupScript($this->helper->config['assets_url'].'mgr/js/tvimageplus.js'); - $this->modx->regClientStartupScript($this->helper->config['assets_url'].'mgr/js/tvimageplus.panel.input.js'); - $this->modx->regClientStartupScript($this->helper->config['assets_url'].'mgr/js/tvimageplus.window.editor.js'); - $this->modx->regClientStartupScript($this->helper->config['assets_url'].'mgr/js/tools/JSON2.js'); - $this->modx->regClientStartupScript($this->helper->config['assets_url'].'mgr/js/jquery/jquery.min.js'); - $this->modx->regClientStartupScript($this->helper->config['assets_url'].'mgr/js/jquery/jquery.jcrop.min.js'); - $this->modx->regClientStartupScript($this->helper->config['assets_url'].'mgr/js/tvimageplus.jquery.imagecrop.js'); - $this->modx->regClientStartupHTMLBlock(''); - - // Prepare tv config for jsonification - $tvConfig = $this->helper->loadTvConfig($this,$value,$params); - $this->setPlaceholder('tvimageplusconfig',json_encode($tvConfig)); - $this->setPlaceholder('tvValue',$value); - - - $this->setPlaceholder('mediasource',$this->tv->getSource('web')->get('id')); - $this->setPlaceholder('tvparams',json_encode($this->getInputOptions())); - - $this->setPlaceholder('imgData',$this->getImageDataJSON($value,$params)); - - } - - -private function getImageDataJSON($value,$params){ - $I = json_decode($value); - $Opts = $this->getInputOptions(); - - $data = new stdClass; - - // Grab MediaSource info - $MS = $this->tv->getSource('web')->toArray(); - $data->mediasource = new stdClass; - $data->mediasource->id = $MS['id']; - $data->mediasource->path = !isset($MS['properties']['basePath'])? $this->modx->getOption('base_path') : $MS['properties']['basePath']['value']; - $data->mediasource->url = !isset($MS['properties']['baseUrl'])? $this->modx->getOption('base_url') : $MS['properties']['baseUrl']['value']; - unset($MS); - - // Grab constraint info - $data->constraint = new stdClass; - $data->constraint->width = empty($params['targetWidth']) ? 0 : (int) $params['targetWidth']; - $data->constraint->height = empty($params['targetHeight'])? 0 : (int) $params['targetHeight']; - - // Generate ratio value - if( $data->constraint->width >0 && $data->constraint->height >0 ){ - // If both width/height constraints set, use that for ratio calc - $data->constraint->ratio = $data->constraint->width/$data->constraint->height; - } else - if( isset($I->source->width) && isset($I->source->height) ){ - // Use source image size for ratio - $data->constraint->ratio = $I->source->width / $I->source->height; - } else { - // Fail safe (and square) - $data->constraint->ratio = false; - }; - - // Grab source image info (if it exists yet) - if( isset($I->source) ){ - $data->source = new stdClass; - $data->source->height = $I->source->height; - $data->source->width = $I->source->width; - $data->source->path = $I->source->path; - $data->source->filename = $I->source->filename; - $data->source->size = $I->source->size; - } else { - $data->source = false; - }; - - // Grab crop params (if they exist yet) - if( isset($I->crop)){ - $data->crop = new stdClass; - $data->crop->x = $I->crop->x; - $data->crop->y = $I->crop->y; - $data->crop->width = $I->crop->width; - $data->crop->height = $I->crop->height; - }; - - return json_encode($data); - }// - -} -return 'ImagePlusInputRender'; diff --git a/core/components/tvimageplus/elements/tv/input/options/imageplus.php b/core/components/tvimageplus/elements/tv/input/options/imageplus.php deleted file mode 100644 index 92e368fd..00000000 --- a/core/components/tvimageplus/elements/tv/input/options/imageplus.php +++ /dev/null @@ -1,14 +0,0 @@ -getOption('core_path').'components/tvimageplus/'; -if(!class_exists('tvImagePlus')){ require $root.'tvImagePlus.class.php'; }; -$helper = new tvImagePlus($modx); - -$modx->lexicon->load('tvimageplus:default'); -$a = print_r($this->getInputProperties(),1); - -$modx->controller->setPlaceholder('t_width',$a); -$modx->controller->setPlaceholder('tvimagepluslexicon',json_encode($helper->config['lexicon'])); -$modx->controller->addLexiconTopic('tvimageplus:default'); - - -return $modx->smarty->fetch($root.'elements/tv/input/tpl/imageplus.options.tpl'); diff --git a/core/components/tvimageplus/elements/tv/input/tpl/imageplus.inputrender.tpl b/core/components/tvimageplus/elements/tv/input/tpl/imageplus.inputrender.tpl deleted file mode 100644 index 54420b0c..00000000 --- a/core/components/tvimageplus/elements/tv/input/tpl/imageplus.inputrender.tpl +++ /dev/null @@ -1,14 +0,0 @@ - -
- diff --git a/core/components/tvimageplus/elements/tv/input/tpl/imageplus.options.tpl b/core/components/tvimageplus/elements/tv/input/tpl/imageplus.options.tpl deleted file mode 100644 index df458200..00000000 --- a/core/components/tvimageplus/elements/tv/input/tpl/imageplus.options.tpl +++ /dev/null @@ -1,66 +0,0 @@ -
- -{/literal} diff --git a/core/components/tvimageplus/elements/tv/output/imageplus.class.php b/core/components/tvimageplus/elements/tv/output/imageplus.class.php deleted file mode 100644 index 557c7f68..00000000 --- a/core/components/tvimageplus/elements/tv/output/imageplus.class.php +++ /dev/null @@ -1,12 +0,0 @@ -modx->getOption('core_path').'components/tvimageplus/tvImagePlus.class.php'; }; - $this->helper = new tvImagePlus($this->modx); - - - return $this->helper->getImageURL($value,$params); - }// -}; -return 'ImagePlusOutputRender'; diff --git a/core/components/tvimageplus/elements/tv/output/options/imageplus.php b/core/components/tvimageplus/elements/tv/output/options/imageplus.php deleted file mode 100644 index fce2c00b..00000000 --- a/core/components/tvimageplus/elements/tv/output/options/imageplus.php +++ /dev/null @@ -1,16 +0,0 @@ -getOption('core_path').'components/tvimageplus/'; -if(!class_exists('tvImagePlus')){ require $root.'tvImagePlus.class.php'; }; -$helper = new tvImagePlus($modx); - -$modx->lexicon->load('tvimageplus:default'); -$a = print_r($this->getProperties(),1); - -$modx->controller->setPlaceholder('t_width',$a); -$modx->controller->setPlaceholder('tvimagepluslexicon',json_encode($helper->config['lexicon'])); -$modx->controller->setPlaceholder('tvimageplus',$helper); -$modx->controller->addLexiconTopic('tvimageplus:default'); - - -return $modx->smarty->fetch($root.'elements/tv/output/tpl/imageplus.options.tpl'); diff --git a/core/components/tvimageplus/elements/tv/output/tpl/imageplus.options.tpl b/core/components/tvimageplus/elements/tv/output/tpl/imageplus.options.tpl deleted file mode 100644 index d5551d62..00000000 --- a/core/components/tvimageplus/elements/tv/output/tpl/imageplus.options.tpl +++ /dev/null @@ -1,62 +0,0 @@ -
- -{/literal} diff --git a/core/components/tvimageplus/lexicon/cs/default.inc.php b/core/components/tvimageplus/lexicon/cs/default.inc.php deleted file mode 100755 index 51321483..00000000 --- a/core/components/tvimageplus/lexicon/cs/default.inc.php +++ /dev/null @@ -1,21 +0,0 @@ -zde.'; -$_lang['tvimageplus.outputChunk'] = 'Výstupní chunk'; -$_lang['tvimageplus.outputChunk_desc'] = 'Vyberte chunk pro výstup TV. Nechte prázdé pro výstup čisté URL.'; \ No newline at end of file diff --git a/core/components/tvimageplus/lexicon/da/default.inc.php b/core/components/tvimageplus/lexicon/da/default.inc.php deleted file mode 100644 index 68ab08e0..00000000 --- a/core/components/tvimageplus/lexicon/da/default.inc.php +++ /dev/null @@ -1,21 +0,0 @@ -her.'; -$_lang['tvimageplus.outputChunk'] = 'Output chunk'; -$_lang['tvimageplus.outputChunk_desc'] = 'Vælg en chunk til tv output. Lad feltet være tomt for kun at få en URL'; diff --git a/core/components/tvimageplus/lexicon/de/default.inc.php b/core/components/tvimageplus/lexicon/de/default.inc.php deleted file mode 100644 index b38d0490..00000000 --- a/core/components/tvimageplus/lexicon/de/default.inc.php +++ /dev/null @@ -1,21 +0,0 @@ -hier.'; -$_lang['tvimageplus.outputChunk'] = 'Ausgabe Chunk'; -$_lang['tvimageplus.outputChunk_desc'] = '(Optional) Wählen Sie einen Ausgabe Chunk aus. Wenn kein Wert angebeben ist wird der Bildpfad ausgegeben.'; \ No newline at end of file diff --git a/core/components/tvimageplus/lexicon/en/default.inc.php b/core/components/tvimageplus/lexicon/en/default.inc.php deleted file mode 100644 index 6468aae0..00000000 --- a/core/components/tvimageplus/lexicon/en/default.inc.php +++ /dev/null @@ -1,21 +0,0 @@ -here.'; -$_lang['tvimageplus.outputChunk'] = 'Output chunk'; -$_lang['tvimageplus.outputChunk_desc'] = 'Select a chunk for tv output. Leave blank for raw url output'; \ No newline at end of file diff --git a/core/components/tvimageplus/lexicon/es/default.inc.php b/core/components/tvimageplus/lexicon/es/default.inc.php deleted file mode 100644 index a369dbb1..00000000 --- a/core/components/tvimageplus/lexicon/es/default.inc.php +++ /dev/null @@ -1,21 +0,0 @@ -aquí.'; -$_lang['tvimageplus.outputChunk'] = 'Resultado chunk'; -$_lang['tvimageplus.outputChunk_desc'] = 'Selecciona un chunk para obtener un resultado del tv. Dejar en vacío para obtener un resultado de la url cruda.'; \ No newline at end of file diff --git a/core/components/tvimageplus/lexicon/fr/default.inc.php b/core/components/tvimageplus/lexicon/fr/default.inc.php deleted file mode 100755 index 1f5bc29d..00000000 --- a/core/components/tvimageplus/lexicon/fr/default.inc.php +++ /dev/null @@ -1,21 +0,0 @@ -ici.'; -$_lang['tvimageplus.outputChunk'] = 'Chunk d\'affichage'; -$_lang['tvimageplus.outputChunk_desc'] = 'Sélectionnez le chunk utilisé pour afficher le résultat de la TV. Laissez vide pour obtenir l\'URL brute du résultat.'; diff --git a/core/components/tvimageplus/lexicon/hu/default.inc.php b/core/components/tvimageplus/lexicon/hu/default.inc.php deleted file mode 100644 index a44bcdc2..00000000 --- a/core/components/tvimageplus/lexicon/hu/default.inc.php +++ /dev/null @@ -1,21 +0,0 @@ -itt.'; -$_lang['tvimageplus.outputChunk'] = 'Kimeneti chunk'; -$_lang['tvimageplus.outputChunk_desc'] = 'Válassz ki egy chunk-ot amibe a kimeneteli TV-ket használhatod majd. Hagyd üresen a nyers output-ért'; diff --git a/core/components/tvimageplus/lexicon/it/default.inc.php b/core/components/tvimageplus/lexicon/it/default.inc.php deleted file mode 100644 index 25ca8fc9..00000000 --- a/core/components/tvimageplus/lexicon/it/default.inc.php +++ /dev/null @@ -1,21 +0,0 @@ -qui.'; -$_lang['tvimageplus.outputChunk'] = 'Chunk Output'; -$_lang['tvimageplus.outputChunk_desc'] = 'Seleziona un chunk per l\'output della variabile tv. Lascia vuoto per avere un output del semplice url'; \ No newline at end of file diff --git a/core/components/tvimageplus/lexicon/nl/default.inc.php b/core/components/tvimageplus/lexicon/nl/default.inc.php deleted file mode 100755 index 52466a51..00000000 --- a/core/components/tvimageplus/lexicon/nl/default.inc.php +++ /dev/null @@ -1,21 +0,0 @@ -hier te vinden.'; -$_lang['tvimageplus.outputChunk'] = 'Output chunk'; -$_lang['tvimageplus.outputChunk_desc'] = 'Selecteer een chunk voor de TV output. Laat leeg om alleen een link naar de afbeelding terug te krijgen.'; \ No newline at end of file diff --git a/core/components/tvimageplus/lexicon/ru/default.inc.php b/core/components/tvimageplus/lexicon/ru/default.inc.php deleted file mode 100644 index b4311413..00000000 --- a/core/components/tvimageplus/lexicon/ru/default.inc.php +++ /dev/null @@ -1,21 +0,0 @@ -здесь.'; -$_lang['tvimageplus.outputChunk'] = 'Чанк для вывода'; -$_lang['tvimageplus.outputChunk_desc'] = 'Выберите чанк для вывода TV. Оствьте пустым для обычного вывода текстом'; \ No newline at end of file diff --git a/core/components/tvimageplus/tvImagePlus.class.php b/core/components/tvimageplus/tvImagePlus.class.php deleted file mode 100644 index 2603884b..00000000 --- a/core/components/tvimageplus/tvImagePlus.class.php +++ /dev/null @@ -1,209 +0,0 @@ -modx =& $modx; - $this->loadConfig(); - $this->loadLexicon(); - $this->loadSourceMap(); - }// - - - private function loadConfig(){ - $core = $this->modx->getOption('core_path').'components/tvimageplus/'; - $assets = $this->modx->getOption('assets_url').'components/tvimageplus/'; - $this->config = array( - 'core_path' => $core, - 'assets_url' => $assets, - 'connectorUrl' => $assets.'mgr/connector.php', - 'sources' => array() - ); - }// - - - /** - * Load the lexicon topic - * @todo Do it properly with MODx.lang _() - */ - private function loadLexicon(){ - $lexicon = $this->modx->lexicon; - $modx = $this->modx; - $mgr_lang = $modx->getOption('manager_language'); - - $lexicon->load('tvimageplus'); - - if(in_array($mgr_lang, $lexicon->getLanguageList('tvimageplus'))){ - $lang = $mgr_lang; - } - else{ - $lang = 'en'; - } - - $this->config['lexicon'] = $lexicon->getFileTopic($lang, 'tvimageplus'); - }// - - /** - * Get a map of MediaSource id => baseUrl - * @return void - */ - private function loadSourceMap(){ - $sources = $this->modx->getCollection('sources.modMediaSource'); - foreach($sources as $source){ - $source->initialize(); - $this->config['sources'][$source->get('id')] = new stdClass(); - $this->config['sources'][$source->get('id')]->url = $source->getBaseUrl(); - }; - }// - - - /** - * Gather info about the TV - * @param ImagePlusInputRender $render - * @return object - */ - public function loadTvConfig(ImagePlusInputRender $render, $value, array $params){ - $data = new stdClass; - // Grab the ID of the assigned mediasource - $data->mediaSource = $render->tv->getSource('web')->get('id'); - // Grab TV info - $data->tv = new stdClass; - $data->tv->id = $render->tv->get('id'); - $data->tv->params = $render->getInputOptions(); - $data->tv->value = $value; - // Misc - $data->allowBlank = (bool)$params['allowBlank']; - // Dimension constraints - $data->targetWidth = (int)$params['targetWidth']; - $data->targetHeight = (int)$params['targetHeight']; - // Alt-tag options - $data->altTagOn = (isset($params['allowAltTag']) && $params['allowAltTag']=='Yes'); - - $saved = empty($value)? null : json_decode($value); - if(is_null($saved)){ - // Crop data - $data->crop = new stdClass(); - $data->crop->width = 0; - $data->crop->height = 0; - $data->crop->x = 0; - $data->crop->y = 0; - // Source image - $data->sourceImg = new stdClass(); - $data->sourceImg->width = 0; - $data->sourceImg->height = 0; - $data->sourceImg->src = ''; - $data->sourceImg->source = 1; - $data->altTag = ($data->altTagOn? '' : false); - } else { - // Crop data - $data->crop = new stdClass(); - $data->crop->width = $saved->crop->width; - $data->crop->height = $saved->crop->height; - $data->crop->x = $saved->crop->x; - $data->crop->y = $saved->crop->y; - // Source image - $data->sourceImg = new stdClass(); - $data->sourceImg->width = $saved->sourceImg->width; - $data->sourceImg->height = $saved->sourceImg->height; - $data->sourceImg->src = $saved->sourceImg->src; - $data->sourceImg->source = $saved->sourceImg->source; - // die('
'.print_r($saved,1));
-            $data->altTag = ($data->altTagOn? (isset($saved->altTag)? $saved->altTag:'') : false);
-        }
-        
-        return $data;        
-    }//
-    
-    
-    /**
-     * Check if phpThumbOf is installed
-     * @return bool
-     */
-    public function hasPhpThumbOf(){
-        $pto = $this->modx->getObject('modSnippet',array('name'=>'phpthumbof'));
-        return $pto instanceof modSnippet;
-    }//
-    
-    /**
-     * Return a scaled, cached version of the source image for front-end use
-     * @param string $json
-     * @param array $params
-     * @return string
-     */
-    public function getImageURL($json, $opts = array()){
-        // Return error message if phpthumbof not found
-        if(!$this->hasPhpThumbOf()){
-            return "Image+ Error: PhpThumbOf Extra not found";
-        }
-    
-        // Parse json to object
-        $data = json_decode($json);
-
-        // Load up the mediaSource
-        $source = $this->modx->getObject('modMediaSource',$data->sourceImg->source);
-        if(!$source instanceof modMediaSource){
-            return 'Image+ Error: Invalid Media Source';
-        };
-        $source->initialize();
-        
-        // Grab absolute system path to image
-        $imgPath = $source->getBasePath().$data->sourceImg->src;
-        
-        // Prepare arguments for phpthumbof snippet call
-        $params = array(
-                'src' => $imgPath,
-                'w' => $data->targetWidth,
-                'h' => $data->targetHeight,
-                'far' => true,
-                'sx' => $data->crop->x,
-                'sy'=> $data->crop->y,
-                'sw'=> $data->crop->width,
-                'sh'=> $data->crop->height
-        );
-
-        // Add in output render params
-        $optParams = explode('&',$opts['phpThumbParams']);
-        foreach($optParams as $oP){
-            if(empty($oP)){ continue; };
-            $bits = explode('=',$oP);
-            $params[$bits[0]] = $bits[1];
-        }
-        
-        $options = array();
-        foreach($params as $key => $val){
-            $options[] = $key.'='.$val;
-        };
-        $options = implode('&',$options);
-
-        
-        // Call phpthumbof for url
-        $url = $this->modx->runSnippet('phpthumbof',array(
-                    'options'=>$options,
-                    'input' => $imgPath
-                ));
-        
-        // If an output chunk is selected, parse that
-        if(isset($opts['outputChunk']) && !empty($opts['outputChunk']) ){
-            $chunkParams = array(
-                'url' => $url,
-                'alt' => $data->altTag,
-                'width' => $data->targetWidth,
-                'height' => $data->targetHeight
-            );
-            return $this->modx->getChunk($opts['outputChunk'],$chunkParams);
-        } else {
-            // Otherwise return raw url
-            return $url;
-        };
-    }//
-
-
-
-
-
-
-};// end class tvImagePlus
-define('tvimageplus',true);
diff --git a/docs/contributors.md b/docs/contributors.md
new file mode 100755
index 00000000..28f7dc44
--- /dev/null
+++ b/docs/contributors.md
@@ -0,0 +1,5 @@
+The Image+ project was started in 2012 by [Alan
+Pich](https://github.com/alanpich) and is maintained and developed further since
+2015 by [Thomas Jakobi](https://github.com/jako).
+
+Many thanks to all who contributed, whether by creating pull requests, submitting bug reports, or donating.
\ No newline at end of file
diff --git a/docs/examples.md b/docs/examples.md
new file mode 100755
index 00000000..713d2baf
--- /dev/null
+++ b/docs/examples.md
@@ -0,0 +1,152 @@
+**Image+* can be used for various purposes. On this page you will find some
+*examples of how it can be used:
+
+### Collections
+
+You can display the *Image+* thumbnail in a column of the Collections grid by
+setting the column's renderer to *ImagePlus.MIGX_Renderer*.
+
+### MIGX
+
+If you want to use *Image+* in MIGX, you can configure all *Image+* TV
+properties with a JSON string in the *Configs* textarea in the MIGX formtabs
+field. The following properties are possible:
+
+```json
+{
+    "targetWidth":"",
+    "targetHeight":"",
+    "targetRatio":"",
+    "thumbnailWidth":"",
+    "allowAltTag":"",
+    "allowCaption":"",
+    "allowCredits":""
+}
+```
+
+You also need to change the *Input TV Type* to `imageplus`.
+
+You can display the thumbnail in the grid column by setting the renderer to
+*ImagePlus.MIGX_Renderer*. In earlier versions of MIGX, you need to edit a MIGX
+configuration to do this.
+
+To use this *Image+* MIGX field in the frontend, call the *ImagePlus Snippet*
+where the value parameter is the name of the MIGX field:
+
+```html
+[[ImagePlus? 
+&value=`[[+migxImagePlusField]]`
+]]
+```
+
+This will give you the prepared URL for the cropped image instead of the raw
+JSON object.
+
+### getResources/pdoResources
+
+In order for the TV to be parsed using the *getResources/pdoResources snippet*,
+you need to add the following lines to your *getResources/pdoResources* call
+Snippet* call:
+
+```html
+&includeTVs=`name_of_your_tv`
+&processTVs=`name_of_your_tv`
+```
+
+In the template chunk of the *getResources/pdoResources snippet* call, you can
+use the placeholder `[[+tv.name_your_TV]]` if the TV's Output Type is set to
+`Image+`. Without any further changes, the placeholder will contain the URL of
+the cropped image.
+
+### Using the ImagePlus snippet in the getResources/pdoResources template chunk
+
+In your template chunk for calling *getResources/pdoResources Snippet*, you need
+to add a parameter so that the *ImagePlus Snippet* call knows the origin ID from
+which to retrieve data:
+
+```html
+&docid=`[[+id]]`
+```
+
+Here is an example of a call and configuration, where *image* is your Image+ TV:
+
+**Snippet Call**
+```
+
+[[!pdoPage? + &element=`pdoResources` + &tpl=`tplBlogPost` + &limit=`11` + &includeContent=`1` + &showHidden=`0` + &hideContainers=`1` +]] +
+
+ [[!+page.nav]] +
+``` + +**Chunk tplBlogPost** + +```html +
+
+

[[+longtitle:default=`[[+pagetitle]]`]]

+ + [[ImagePlus? + &tvname=`image` + &type=`tpl` + &docid=`[[+id]]` + &tpl=`tplBlogIntroImg` + ]] + +
+
+

[[+content:striptags:ellipsis=`255`:typography]] + read more »

+
+
+ + +
+
+``` + +**Chunk tplBlogIntroImg** + +```html +
+ [[+alt]] +
+``` + +### Responsive images + +If you want to display responsive images with and without the crop, you can use +the *ImagePlus Snippet*. + +**Snippet Call** +``` +[[ImagePlus? +&tvname=`yourtvname` +&type=`tpl` +&options=`&w=320` +&tpl=`tplResponsiveImage` +&pagetitle=`[[*pagetitle]]` +]] +``` + +**Chunk tplResponsiveImage** +``` + + + + [[+alt:default=`[[+pagetitle]]`]] + +``` diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100755 index 00000000..4d608788 --- /dev/null +++ b/docs/getting-started.md @@ -0,0 +1,23 @@ +## Create a new template variable + +Once Image+ is installed, you can create template variables [TV] in the usual +way, but instead of setting the **Input Type** in the Input Options to *Image*, +choose *Image+* instead. + +For most use cases, you should also set the **Output Type** in the Output +Options to *Image+*. This allows you to control the image output on a resource. + +## The cropping tool + +When using an *Image+* TV, you can select an image in the same way as you would +with a regular *Image* TV. Once an image is selected, a cropping window will +appear where you can select the area of the image to use. The original image is +not changed. So you can upload a single image and reuse it in multiple places on +the website at different sizes (and crops with multiple Image+ TVs). + +If you want to change the cropping area, you need to click the crop trigger of +the Image+ TV. + +In the cropping window you need to drag the handles of the dotted box to change +the cropping area. If the TV has been configured with size constraints or an +aspect ratio, the cropping area will be limited to that aspect ratio. diff --git a/docs/index.md b/docs/index.md new file mode 100755 index 00000000..03dc48c3 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,29 @@ +# Image+ + +Image+ is an advanced image template for MODx Revolution. The dimensions for the +uploaded image can be configured (optionally) to restrict a minimum width and/or +height. Image cropping can be forced to stay within a preset ratio. A graphical +tool can be used to resize the image to the desired dimensions/proportions. + +### Requirements + +* MODX Revolution 2.6+ +* PHP 7.1+ +* MODX Cropping Engine i.e. [pThumb](https://modx.com/extras/package/pthumb) + +### Features + +* Visual tool for cropping images, integrated with MODX Manager interface. +* Option to restrict minimum width and/or height for uploaded image. +* User image cropping can be forced to stay at preset ratio. +* Use chunk as output mask and fill placeholders with url, height, width, alt + tag, phpthumb options etc. of cropped uploaded image. + +### License + +The project is licensed under the [GPLv2 license](https://github.com/Jako/ImagePlus/LICENSE.md). + +### Translations [![Default Lexicon](https://hosted.weblate.org/widget/modx-extras/imageplus/standard/svg-badge.svg)](https://hosted.weblate.org/projects/modx-extras/imageplus/) + +Translations of the package can be made for the [Default Lexicon](https://hosted.weblate.org/projects/modx-extras/imageplus/standard/), the [Properties Lexicon](https://hosted.weblate.org/projects/modx-extras/imageplus/properties/) and the [System Setting Lexicon](https://hosted.weblate.org/projects/modx-extras/imageplus/system-settings/) + diff --git a/docs/installation.md b/docs/installation.md new file mode 100755 index 00000000..8757935b --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,23 @@ +## Install from MODX Extras + +Search for Image+ in the Package Manager of your MODX installation and install +it in there. + +## Manual installation + +If you can't access the MODX Extras Repository in your MODX installation, you +can manually install Image+. + +* Download the transport package from [MODX Extras](https://modx.com/extras/package/imageplustvinput) (or one of the pre-built transport packages in [_packages](https://github.com/Jako/ImagePlus/tree/master/_packages)) +* Upload the zip file to your MODX installation's `core/packages` folder or upload it manually in the MODX Package Manager. +* In the MODX Manager, navigate to the Package Manager page, and select 'Search locally for packages' from the dropdown button. +* Image+ should now show up in the list of available packages. Click the corresponding 'Install' button and follow the instructions to complete the installation. + +## Build it from source + +To build and install the package from source you could use [Git Package +Management](https://github.com/TheBoxer/Git-Package-Management). The GitHub +repository of Image+ contains a +[config.json](https://github.com/Jako/ImagePlus/blob/master/_build/config.json) +to build that package locally. Use this option, if you want to debug Image+ +and/or contribute bugfixes and enhancements. diff --git a/docs/usage.md b/docs/usage.md new file mode 100755 index 00000000..a03cda67 --- /dev/null +++ b/docs/usage.md @@ -0,0 +1,193 @@ +## Input Options + +In *Image+* you can control the final size and aspect ratio of selected +images. For an *Image+* TV, several advanced input options are available: + +#### Target Height/Width + +Images can be constrained to a minimum height and/or width with **Target +Height** and **Target Width**. If both values are set, the target aspect ratio +of the output image will be calculated with these values. Both fields must be +filled with an integer value. + +#### Target Aspect Ratio + +The aspect ratio for the output image can be restricted with **Target aspect +ratio**. If target height and target width are specified, this value is ignored +and the calculated aspect ratio of target height and target width is used. The +field must be filled with a float value. + +If you specify only a value for **Target Height** or **Target Width** and leave +**Target Aspect Ratio** blank, the size of the crop is not constrained to any +aspect ratio. + +!!! note "How to calculate the aspect ratio" + + The aspect ratio contains a floating point value: this value can be easily + determined by dividing any width with the desired aspect ratio by the + corresponding height. For example, suppose you want all your crops to have the + same aspect ratio as an image of size "1600x1000", then simply divide "1600" by + "1000", which gives the value "1.6". This is the value for your aspect ratio. + +#### Show Alt Tag Field + +*Image+* TVs can also contain an **Alt Tag field** which is an additional text +input that is stored with each image. It can be output next to the image i.e. as +an alt tag or title tag. + +To output the alt text in an *Image+* TV placeholder, you need to select a chunk +in the **Output Options**. You can also use the ImagePlus snippet and specify a +template chunk in the snippet call options. The alt text is entered in the +`[[+alt]]` placeholder in this chunk. + +#### Show Caption Field + +*Image+* TVs can also include a **Caption Div**, which is an additional text +input that is stored with each image. This can be output below the image, i.e. +in an additional caption div. + +To output the caption in an *Image+* TV placeholder, you must select a chunk in +the **Output Options**. You can also use the ImagePlus snippet and specify a +template chunk in the call options of the snippet. The caption will be inserted +into the `[[+caption]]` placeholder in that chunk. + +#### Show Credits Field + +*Image+* TVs can also include a **Credits field**, which is an additional text +input stored with each image. It can be output below the image, for example in +an additional credits field. + +To output the credits in an *Image+* TV placeholder, you must select a chunk in +the **Output Options**. You can also use the ImagePlus snippet and specify a +template chunk in the snippet's call options. The credits are inserted into the +`[[+credits]]` placeholder in that chunk. + +### Context/System Settings + +Each *Image+* TV **Input Option** can be replaced by a context or system +setting. And context/system settings can be defined for a single TV. + +There are predefined system settings in the `imageplus` namespace which are +empty or zero. If you activate one of them or fill it with a value, this setting +will override the input options of all image+ TVs. Context settings must be +created before they can be used. + +| Key | Name | Description | Default | +|---------------------------|-------------------------------------------|-------------------------------------------------------------------------------------------------|---------| +| imageplus.allow_alt_tag | Show Alt Tag Field | Allow user to enter a title/alt-tag for the image. | No | +| imageplus.allow_caption | Show Caption Field | Allow user to enter a caption for the image. | No | +| imageplus.allow_credits | Show Credits Field | Allow user to enter a credit for the image. | No | +| imageplus.debug | Debug | Log debug information in the MODX error log. | No | +| imageplus.force_config | Force predefined crop sizes/aspect ratios | Force the usage of predefined crop size/aspect ratios. | No | +| imageplus.select_config | Predefined crop sizes/aspect ratios | Create predefined crop size/aspect ratios that are selectable in the template variable options. | [] | +| imageplus.target_height | Target Height | Constrain the target images to a minimal height. | - | +| imageplus.target_ratio | Target Aspect Ratio | Restrict the target images to a aspect ratio. | - | +| imageplus.target_width | Target Width | Constrain the target images to a minimal width. | - | +| imageplus.thumbnail_width | Thumbnail Width | The thumbnail width of the image in the template variable panel. | - | + +The global context/system settings have the prefix `imageplus.` and the +individual TV context/system settings have the prefix `imageplus.{tvname}.`. +`{tvname}` must be replaced with the name of the template variable. + +The order for these settings is [^1]. + +- TV name based context setting +- TV name based system setting +- context setting +- system setting + +In the `imageplus.select_config` system setting, you can create predefined +internal forces/aspect ratios with an auxiliary grid. To force the use of the +predefined sizes/ratios, you can activate the system setting +`imageplus.force_config`. + +## Output Options + +Several advanced output options are available for an *Image+* TV: + +#### Additional phpThumb Parameters + +By default, an *Image+* TV returns a relative URL to a cropped (and possibly +constrained) image scaled by phpThumb. This output option allows you to assign +several additional phpThumb parameters that will be generated to create the +thumbnail image. + +#### Output Chunk + +When you select an **Output Chunk**, the TV output is rendered using that chunk. +Select the name of the chunk from the drop-down menu. Multiple placeholders are +possible in this chunk to customize the output: + +| Placeholder | Description | +|---------------|----------------------------------------------------------------| +| alt | Alt text | +| crop.height | Crop height of the thumbnail image | +| crop.options | Crop engine crop option string to generate the thumbnail image | +| crop.width | Crop width of the thumbnail image | +| crop.x | Crop x position of the thumbnail image | +| crop.y | Crop y position of the thumbnail image | +| height | Minimal height of the thumbnail image | +| options | Crop engine full option string to generate the thumbnail image | +| source.height | Height of the source image | +| source.src | Full path of the source image on the server (not a URL) | +| source.width | Width of the source image | +| url | URL of the thumbnail image | +| width | Minimal width of the thumbnail image | + +All these placeholders can be used in the Snippet too. + +#### Generate Thumb URL + +If you create the thumbnail in the output chunk, i.e. through a pthumb output +filter, you can disable the generation of the internal thumb URL. + +!!! caution "Caution" + + You must enable this option if you do not specify an output chunk in the output + options or if you use the `[[+url]]` placeholder in the specified output chunk. + Otherwise, the image will not be cropped/truncated and the original image path + will be returned. + +#### Thumb URL Issues + +If you use Image+ in a multiple language site with different base URL context +settings, you have to set the system setting `phpthumbof.cache_url` to `/`. +Otherwise, the generated thumbnail path will contain the `{base_url}` prefix. + +## Snippet + +The snippet gives you a second way to display the TV value. With template +variable output you are limited to one output chunk per template variable, with +the snippet you can be more flexible and use different output chunks. The +following properties can be set in the snippet call: + +| Property | Description | Default | +|----------|---------------------------------------------------------------------------------------|-----------------| +| docid | Resource where the Image+ TV value is received from. | - | +| options | Extended phpThumb options for the image. | - | +| tpl | Template chunk for the snippet output. | ImagePlus.image | +| tvname | Name of the Image+ TV. | - | +| type | Type of the snippet output. Could be set to check tpl and thumb. | - | + +#### Example + +```html +[[ImagePlus? +&tvname=`imageplus` +&docid=`1` +&options=`w=100` +&type=`tpl` +&tpl=`ImagePlus.demo` +]] +``` + +This snippet call returns the contents of the template variable named +`imageplus` of resource `1` and the extended phpThumb option `&w=100` (width: +100px) in the parsed `ImagePlus.demo` chunk. + +[^1]: The first entry supercedes the second entry in the list etc. +[^2]: Outputs *image* if the Image+ TV contains an image, otherwise *noimage*. +[^3]: Outputs the parsed template set by **tpl** property for retreived Image+ TV value (with additional options set by the **options** property) +[^4]: Outputs the thumbnail URL for retreived Image+ TV value (with additional options set by the **options** property) +[^5]: See [phpThumb readme](http://phpthumb.sourceforge.net/demo/docs/phpthumb.readme.txt) for possible options. Maybe not all options are valid in your installation (because of crop engine limitations or server restricions). +[^6]: The template chunk placeholder are the same as in the output chunk of the template variable. diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 00000000..f1e59862 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,140 @@ +const gulp = require('gulp'), + autoprefixer = require('autoprefixer'), + composer = require('gulp-uglify/composer'), + concat = require('gulp-concat'), + cssnano = require('cssnano'), + footer = require('gulp-footer'), + format = require('date-format'), + header = require('@fomantic/gulp-header'), + postcss = require('gulp-postcss'), + rename = require('gulp-rename'), + replace = require('gulp-replace'), + sass = require('gulp-sass')(require('sass')), + uglifyjs = require('uglify-js'), + uglify = composer(uglifyjs, console), + pkg = require('./_build/config.json'); + +const banner = '/*!\n' + + ' * <%= pkg.name %> - <%= pkg.description %>\n' + + ' * Version: <%= pkg.version %>\n' + + ' * Build date: ' + format("yyyy-MM-dd", new Date()) + '\n' + + ' */'; +const year = new Date().getFullYear(); + +let phpversion; +let modxversion; +pkg.dependencies.forEach(function (dependency, index) { + switch (pkg.dependencies[index].name) { + case 'php': + phpversion = pkg.dependencies[index].version.replace(/>=/, ''); + break; + case 'modx': + modxversion = pkg.dependencies[index].version.replace(/>=/, ''); + break; + } +}); + +const scriptsMgr = function () { + return gulp.src([ + 'source/js/mgr/imageplus.js', + 'source/js/mgr/imageplus.panel.input.js', + 'source/js/mgr/imageplus.window.editor.js', + 'source/js/mgr/imageplus.migx_renderer.js', + 'source/js/mgr/tools/JSON2.js', + 'node_modules/jquery/dist/jquery.slim.min.js', + 'source/vendor/jcrop/js/jquery.Jcrop.min.js', + 'source/js/mgr/imageplus.jquery.imagecrop.js', + 'source/js/mgr/imageplus.grid.js' + ]) + .pipe(concat('imageplus.min.js')) + .pipe(uglify()) + .pipe(header(banner + '\n', {pkg: pkg})) + .pipe(gulp.dest('assets/components/imageplus/js/mgr/')) +}; +gulp.task('scripts', gulp.series(scriptsMgr)); + +const sassMgr = function () { + return gulp.src([ + 'source/sass/mgr/imageplus.scss' + ]) + .pipe(sass().on('error', sass.logError)) + .pipe(postcss([ + autoprefixer() + ])) + .pipe(gulp.dest('source/css/mgr/')) + .pipe(concat('imageplus.css')) + .pipe(postcss([ + cssnano({ + preset: ['default', { + discardComments: { + removeAll: true + } + }] + }) + ])) + .pipe(rename({ + suffix: '.min' + })) + .pipe(footer('\n' + banner, {pkg: pkg})) + .pipe(gulp.dest('assets/components/imageplus/css/mgr/')) +}; +gulp.task('sass', gulp.series(sassMgr)); + +const imagesMgr = function () { + return gulp.src('./source/img/**/*.+(png|jpg|gif|svg)', {encoding: false}) + .pipe(gulp.dest('assets/components/imageplus/img/')); +}; +gulp.task('images', gulp.series(imagesMgr)); + +const bumpCopyright = function () { + return gulp.src([ + 'core/components/imageplus/model/imageplus/imageplus.class.php', + 'core/components/imageplus/src/ImagePlus.php' + ], {base: './'}) + .pipe(replace(/Copyright 2015(-\d{4})? by/g, 'Copyright ' + (year > 2015 ? '2015-' : '') + year + ' by')) + .pipe(replace(/(@copyright .*?) 2015(-\d{4})?/g, '$1 ' + (year > 2015 ? '2015-' : '') + year)) + .pipe(gulp.dest('.')); +}; +const bumpVersion = function () { + return gulp.src([ + 'core/components/imageplus/src/ImagePlus.php' + ], {base: './'}) + .pipe(replace(/version = '\d+\.\d+\.\d+-?[0-9a-z]*'/ig, 'version = \'' + pkg.version + '\'')) + .pipe(gulp.dest('.')); +}; +const bumpOptions = function () { + return gulp.src([ + 'core/components/imageplus/elements/tv/input/tpl/imageplus.options.tpl', + 'core/components/imageplus/elements/tv/output/tpl/imageplus.options.tpl' + ], {base: './'}) + .pipe(replace(/© 2015(-\d{4})?/g, '© ' + (year > 2015 ? '2015-' : '') + year)) + .pipe(gulp.dest('.')); +}; +const bumpDocs = function () { + return gulp.src([ + 'mkdocs.yml', + ], {base: './'}) + .pipe(replace(/© 2015(-\d{4})?/g, '© ' + (year > 2015 ? '2015-' : '') + year)) + .pipe(gulp.dest('.')); +}; +const bumpRequirements = function () { + return gulp.src([ + 'docs/index.md', + ], {base: './'}) + .pipe(replace(/[*-] MODX Revolution \d.\d.*/g, '* MODX Revolution ' + modxversion + '+')) + .pipe(replace(/[*-] PHP (v)?\d.\d.*/g, '* PHP ' + phpversion + '+')) + .pipe(gulp.dest('.')); +}; +gulp.task('bump', gulp.series(bumpCopyright, bumpVersion, bumpOptions, bumpDocs, bumpRequirements)); + +gulp.task('watch', function () { + // Watch .js files + gulp.watch(['./source/js/**/*.js'], gulp.series('scripts')); + // Watch .scss files + gulp.watch(['./source/sass/**/*.scss'], gulp.series('sass')); + // Watch *.(png|jpg|gif|svg) files + gulp.watch(['./source/img/**/*.(png|jpg|gif|svg)'], gulp.series('images')); +}); + +// Default Task +gulp.task('default', gulp.series('bump', 'scripts', 'sass', 'images')); diff --git a/icon/imageplus.ai b/icon/imageplus.ai new file mode 100644 index 00000000..1338e5be --- /dev/null +++ b/icon/imageplus.ai @@ -0,0 +1,6466 @@ +%PDF-1.6 % +1 0 obj <>/OCGs[32 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + imageplus + + + 2024-06-26T16:25:40+02:00 + 2024-06-26T16:25:40+02:00 + 2024-06-26T16:25:40+02:00 + Adobe Illustrator 28.5 (Macintosh) + + + + 256 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A4rlzU7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX6J5S2uxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV5N/zk5/5LBv+Y63/wCNslHmiXJ8i5Y1uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K v0TylteDfnV+dXnPyd5zGj6OLX6p9Vin/fxF35uXB3Drt8OTjG2JNMB/6Gg/Mzw0/wD6R2/6qYeE I4nf9DQfmZ4af/0jt/1Ux4QvE7/oaD8zPDT/APpHb/qpjwheJ3/Q0H5meGn/APSO3/VTHhC8Tv8A oaD8zPDT/wDpHb/qpjwheJ3/AENB+Znhp/8A0jt/1Ux4QvE7/oaD8zPDT/8ApHb/AKqY8IXid/0N B+Znhp//AEjt/wBVMeELxO/6Gg/Mzw0//pHb/qpjwheJ3/Q0H5meGn/9I7f9VMeELxO/6Gg/Mzw0 /wD6R2/6qY8IXie+fkv501nzj5LXWNXEQvDcywn0EKJxTjTYlt98hIUyBSH/AJyc/wDJYN/zHW// ABthjzWXJ8i5Y1uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv0TyltfJH/ADlB/wCTMH/b Pt/+JSZZHkwk8kRGdgiAszEBVAqST0AGSYvTdL/5xy/NG/sFvDZQ2fNeSW91MI5iCKiqANxPs1D4 5HiCeEsG8yeV9f8ALWpvpmuWUlleIOQR6FWUmgdHWquu3VTTJAoISrFXYq7FXYq7FXYq7FXYq+uv +cY//JYL/wAx1x/xrlcubZHk7/nJz/yWDf8AMdb/APG2Meay5PkXLGt2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxV+ieUtr5I/5yg/8mYP+2fb/wDEpMsjyYSQP/OOWl2F/wDmjZG8VX+pwzXV ujUIM0YAQ0PdeXIe4rjLkiPN9i5W2PFv+cqNK0+byNZalKoF9Z3yRW8ncpMj+pH8jwDf7HJQYy5P lXLGDsVdirsVdirsVdirsVfXX/OMf/ksF/5jrj/jXK5c2yPJ3/OTn/ksG/5jrf8A42xjzWXJ8i5Y 1uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv0TyltfJH/OUH/kzB/2z7f/AIlJlkeTCTzj yv5k1Py1r9lrmmOEvLKTmgapVlI4ujgU+F1JU+2SIYgvpXSv+cqPI02nrLqVlfWd8B+8t4kSZCf+ K5OaVH+sFyvgZ8QeN/nB+cF75+vYYIIWstCsmL2tq5BkeQinqy0+Hlx2AH2d9zXJgUxJt5zhQ7FX Yq+ofyi/I/TD+XV6fMMH+5DzPAK1A9S2t6h4OFej8gsp/wBiCNsgZbswHzn5o8t6l5a1+90TUk43 dlIY2IrxdeqSJWnwupDL7ZMMCEqxV2KuxV9E/kN+bfkPy15MXRdc1BrK9F1NKOUMzoVfjx+KNX9+ uQkGYKff85AeZ/Luv/lS8+i6lbahGt7bF/q8iuVrzpzUHkv+yGMRusuT5YybB2KuxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxV2KuxV+ieUtr5I/5yg/8AJmD/ALZ9v/xKTLI8mEnkeSYuxVfDDLNKkMKN JLIwSONAWZmY0CgDqScVe2a5/wA4w+YLXyfZ6lp0xutfSL1NU0o8aEn4uNuw6tGNiCfiP2T0BjxM uF4nNDNBM8M8bRTRMUkicFWVlNCrKdwQckxenfkF+Wv+LvNIv7+LloWjsstyG+zNN1ih36io5P7C n7QyMjTKIfYWVs3i3/OSX5bDW9BHmnToq6po6H62qj4pbMVLHYbmEnl/q8vbJRLGQfKuWMHYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq/RPKW18kf85Qf+TMH/bPt/wDiUmWR 5MJPI8kxdir3z/nGj8sPrt5/jXVYa2loxTR4nG0k67PPv2j+yv8AlV7rkJFlEPpfIM3mn5rfkhoX naKS/tOOneY1X93egfu5iB8KXCjc+AcfEPcCmSEqQRbKvIPk3T/J3laz0OzoxhXndT0oZrh95JD8 zsPBQB2wE2kBkOBXzt/zkn+as8cr+SNGmMYChtbnjJBPMVW2BHbieT+Oy/zDJxDGRfPllZXd9dxW lpE09zOwSKJBVmY4ZzEQSTQDB7d5O/JLSrKKO68w0vr0iv1RSRBGfA0oZD+HseucvrO25yNYvSO/ r+xujj73o9lpunWEfpWNrDaxj9iGNYx9ygZpcmWc95En3tgDr3TdOv4/SvrWG6jP7E0ayD7mBxx5 Zw3iSPcpDzjzj+SWlXsUl15epY3oFfqjEmCQ+ArUxn8PYdc3Wj7bnE1l9Q7+v7WuWPueI3tld2N3 LaXcTQXMDFJYnFGVhnUQmJAEGwWlQySuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV+ieUtr5 I/5yg/8AJmD/ALZ9v/xKTLI8mEnkeSYsq/LTyFf+d/NNvpFvWO1H73UbodIrdSOTf6zfZUeJ8K4C aSBb7g0vTLHS9OttOsIVgsrSNYbeFeiogoBv1+ZypsROKuxV2KpZ5n12DQPLupa1OA0en20lxwJp yKKSqV/ymouIV8EalqN5qWoXOoXshlu7uV57iU9WeRizH7zlzU9s/JLydFZaV/iG6jBvb4FbSvWO AGlR7yEfdTxOcr23rDKfhDlHn7/2N2OPV6fmhbWLfmT5l1Hy55ZbUtPEZuBNHGPVUsvF612BHhmx 7M00c2XhlyphM0Hflt5l1HzH5ZXUtQEYuDNJGfSUqvFKU2JPjj2npo4cvDHlSwNhlOa5m8w/O3yd Fe6V/iG1jAvbEBbunWSAmlT7xk/dXwGb7sTWGM/CPKXL3/taskerwrOqaXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq/RPKW18kf85Qf+TMH/bPt/wDiUmWR5MJPJoIJp5o4IEaWaVgkUaAszMxo qqB1JOSYvtT8nPy3h8j+VI7eZVOtX3GfVJhQ/HT4YQf5YgafOp75VI22AUzzAl2KuxV2KvMf+cj7 97X8qdQjWoN5NbW5I8PVEh+/06ZKPNEuT46AJNB1yxrfXmm2Udhp1rYxbR2sMcKfKNQo/VnneXJx zMj1NuUAx7zL+ZPlny5qI0/UmmFwY1lpHHzXixIG9R4Zm6bszLmjxRqmJmA8/wDzL/Mvyz5h8stp 2nNMbkzRyASR8V4rWu9T45t+zezcuHLxSqqYTmCHflp+Zflny95ZXTtRaYXImkkIjj5LxalN6jwx 7S7Ny5svFGqpYTAD0Dy1+ZPlnzHqJ0/TWmNwI2lpJHwXipAO9T45qNT2Zlwx4pVTMTBZDqVlHf6d dWMu8d1DJC/ykUqf15hYsnBMSHQ2yIfIeeiOK7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX6 J5S2vkj/AJyg/wDJmD/tn2//ABKTLI8mEnnPlbzJeeWtct9asoYJry0Ja3FyhkRXIoH4gr8S9vDr kixBejf9DQfmZ4af/wBI7f8AVTI8IZcTv+hoPzM8NP8A+kdv+qmPCF4nf9DQfmZ4af8A9I7f9VMe ELxO/wChoPzM8NP/AOkdv+qmPCF4nf8AQ0H5meGn/wDSO3/VTHhC8SQ+dPzs86ecNFOj6uLQWZlS b9xEUfklabl28cIjSDJgOFD68029jv8ATrW+i3juoY5k+Uihh+vPO8uPgmYnoacoFj3mX8tvLPmP URqGpLMbgRrFWOTgvFSSNqHxzN03aeXDHhjVMTAF5/8AmX+Wnlny95ZbUdOWYXImjjBkk5Lxatdq Dwzb9m9pZc2XhlVUwnAAO/LT8tPLPmHyyuo6isxuTNJGTHJxXitKbUPjj2l2llw5eGNVSwgCHoHl r8tvLPlzUTqGmrMLgxtFWSTmvFiCdqDwzUantPLmjwyqmYgAyHUr2Ow066vpdo7WGSZ/lGpY/qzC xY+OYiOppkS+QySTU9c9EcV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv0TylteDfnV+SvnP zj5zGsaObX6p9Vig/fylH5oXJ2CNt8WTjKmJFsB/6Ff/ADM8dP8A+khv+qeHiCOF3/Qr/wCZnjp/ /SQ3/VPHiC8Lv+hX/wAzPHT/APpIb/qnjxBeF3/Qr/5meOn/APSQ3/VPHiC8Lv8AoV/8zPHT/wDp Ib/qnjxBeF3/AEK/+Znjp/8A0kN/1Tx4gvC7/oV/8zPHT/8ApIb/AKp48QXheWalp15puoXOn3sZ iu7SV4LiI9VeNirD7xkmL2z8kvOMV7pX+HrqQC9sQWtK9ZICa0HvGT91PA5yvbejMZ+KOUufv/a3 Y5dHp+aFtYt+ZPlrUfMflltN08xi4M0cg9Viq8UrXcA+ObHszUxw5eKXKmExYd+W3lrUfLnlldN1 Axm4E0kh9Jiy8XpTcgeGPaepjmy8UeVLAUGU5rmbzD87fOMVlpX+HrWQG9vgGu6dY4Aa0PvIR91f EZvuxNGZT8U8o8vf+xqyS6PCs6ppdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir9E8pbXYq7F XYq7FXYq7FXYq7FXzt/zkn+VM8kr+d9GhLgqBrdugJI4Ci3IA7cRxfw2b+Y5OJYyD58sr27sbuK7 tJWguYGDxSoaMrDDOAkCCLBYPbvJ3526VexR2vmGljegU+tqCYJD4mlTGfw9x0zl9Z2JOJvF6h3d f2t0cne9HstS06/j9WxuobqM/twyLIPvUnNLkxThtIEe9sBde6lp1hH6t9dQ2sY/bmkWMfexGOPF Oe0QT7lJececfzt0qyiktfL1L69Ip9bYEQRnxFaGQ/h7npm60fYk5G8vpHd1/Y1yydzxG9vbu+u5 bu7lae5nYvLK5qzMc6iEBEAAUA0qGSV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KuxV2Kv//Z + + + + uuid:a9ac9e71-85c3-9644-8c30-ead468f48af0 + xmp.did:3938c170-648c-4819-bbca-2f389e2b948b + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:182b8aad-59f2-4271-bb09-49a37b9e3e8c + xmp.did:6ce228ba-3300-1e41-a3a4-a8b78dd690e0 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + + + + saved + xmp.iid:3938c170-648c-4819-bbca-2f389e2b948b + 2020-07-23T16:56:26+02:00 + Adobe Illustrator 24.2 (Macintosh) + / + + + + Document + Print + AIRobin + False + False + 1 + + 400.000000 + 400.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Standard-Farbfeldgruppe + 0 + + + + Weiß + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 0.000000 + + + Schwarz + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + CMYK Rot + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + CMYK Gelb + CMYK + PROCESS + 0.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Grün + CMYK + PROCESS + 100.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Cyan + CMYK + PROCESS + 100.000000 + 0.000000 + 0.000000 + 0.000000 + + + CMYK Blau + CMYK + PROCESS + 100.000000 + 100.000000 + 0.000000 + 0.000000 + + + CMYK Magenta + CMYK + PROCESS + 0.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=15 M=100 Y=90 K=10 + CMYK + PROCESS + 15.000000 + 100.000000 + 90.000000 + 10.000000 + + + C=0 M=90 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 90.000000 + 85.000000 + 0.000000 + + + C=0 M=80 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 80.000000 + 95.000000 + 0.000000 + + + C=0 M=50 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 50.000000 + 100.000000 + 0.000000 + + + C=0 M=35 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 35.000000 + 85.000000 + 0.000000 + + + C=5 M=0 Y=90 K=0 + CMYK + PROCESS + 5.000000 + 0.000000 + 90.000000 + 0.000000 + + + C=20 M=0 Y=100 K=0 + CMYK + PROCESS + 20.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=50 M=0 Y=100 K=0 + CMYK + PROCESS + 50.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=75 M=0 Y=100 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=85 M=10 Y=100 K=10 + CMYK + PROCESS + 85.000000 + 10.000000 + 100.000000 + 10.000000 + + + C=90 M=30 Y=95 K=30 + CMYK + PROCESS + 90.000000 + 30.000000 + 95.000000 + 30.000000 + + + C=75 M=0 Y=75 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 75.000000 + 0.000000 + + + C=80 M=10 Y=45 K=0 + CMYK + PROCESS + 80.000000 + 10.000000 + 45.000000 + 0.000000 + + + C=70 M=15 Y=0 K=0 + CMYK + PROCESS + 70.000000 + 15.000000 + 0.000000 + 0.000000 + + + C=85 M=50 Y=0 K=0 + CMYK + PROCESS + 85.000000 + 50.000000 + 0.000000 + 0.000000 + + + C=100 M=95 Y=5 K=0 + CMYK + PROCESS + 100.000000 + 95.000000 + 5.000000 + 0.000000 + + + C=100 M=100 Y=25 K=25 + CMYK + PROCESS + 100.000000 + 100.000000 + 25.000000 + 25.000000 + + + C=75 M=100 Y=0 K=0 + CMYK + PROCESS + 75.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=50 M=100 Y=0 K=0 + CMYK + PROCESS + 50.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=35 M=100 Y=35 K=10 + CMYK + PROCESS + 35.000000 + 100.000000 + 35.000000 + 10.000000 + + + C=10 M=100 Y=50 K=0 + CMYK + PROCESS + 10.000000 + 100.000000 + 50.000000 + 0.000000 + + + C=0 M=95 Y=20 K=0 + CMYK + PROCESS + 0.000000 + 95.000000 + 20.000000 + 0.000000 + + + C=25 M=25 Y=40 K=0 + CMYK + PROCESS + 25.000000 + 25.000000 + 40.000000 + 0.000000 + + + C=40 M=45 Y=50 K=5 + CMYK + PROCESS + 40.000000 + 45.000000 + 50.000000 + 5.000000 + + + C=50 M=50 Y=60 K=25 + CMYK + PROCESS + 50.000000 + 50.000000 + 60.000000 + 25.000000 + + + C=55 M=60 Y=65 K=40 + CMYK + PROCESS + 55.000000 + 60.000000 + 65.000000 + 40.000000 + + + C=25 M=40 Y=65 K=0 + CMYK + PROCESS + 25.000000 + 40.000000 + 65.000000 + 0.000000 + + + C=30 M=50 Y=75 K=10 + CMYK + PROCESS + 30.000000 + 50.000000 + 75.000000 + 10.000000 + + + C=35 M=60 Y=80 K=25 + CMYK + PROCESS + 35.000000 + 60.000000 + 80.000000 + 25.000000 + + + C=40 M=65 Y=90 K=35 + CMYK + PROCESS + 40.000000 + 65.000000 + 90.000000 + 35.000000 + + + C=40 M=70 Y=100 K=50 + CMYK + PROCESS + 40.000000 + 70.000000 + 100.000000 + 50.000000 + + + C=50 M=70 Y=80 K=70 + CMYK + PROCESS + 50.000000 + 70.000000 + 80.000000 + 70.000000 + + + + + + Graustufen + 1 + + + + C=0 M=0 Y=0 K=100 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + C=0 M=0 Y=0 K=90 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 89.999400 + + + C=0 M=0 Y=0 K=80 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 79.998800 + + + C=0 M=0 Y=0 K=70 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 69.999700 + + + C=0 M=0 Y=0 K=60 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 59.999100 + + + C=0 M=0 Y=0 K=50 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 50.000000 + + + C=0 M=0 Y=0 K=40 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 39.999400 + + + C=0 M=0 Y=0 K=30 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 29.998800 + + + C=0 M=0 Y=0 K=20 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 19.999700 + + + C=0 M=0 Y=0 K=10 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 9.999100 + + + C=0 M=0 Y=0 K=5 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 4.998800 + + + + + + Strahlende Farben + 1 + + + + C=0 M=100 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + C=0 M=75 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 75.000000 + 100.000000 + 0.000000 + + + C=0 M=10 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 10.000000 + 95.000000 + 0.000000 + + + C=85 M=10 Y=100 K=0 + CMYK + PROCESS + 85.000000 + 10.000000 + 100.000000 + 0.000000 + + + C=100 M=90 Y=0 K=0 + CMYK + PROCESS + 100.000000 + 90.000000 + 0.000000 + 0.000000 + + + C=60 M=90 Y=0 K=0 + CMYK + PROCESS + 60.000000 + 90.000000 + 0.003100 + 0.003100 + + + + + + + Adobe PDF library 17.00 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 5 0 obj <>/ExtGState<>/Properties<>>>/Thumb 37 0 R/TrimBox[0.0 0.0 400.0 400.0]/Type/Page/PieceInfo<>>> endobj 34 0 obj <>stream +HdSIn17D9$T{bz˽{7'ۿd833Z'gIDv }_!CR9t~YvDC\Ȋ +=^dciƼTEiC}Z b]u;geVR.T-rK+ lpV18#°bw4@;~y g>cXb6Dᢌ(u':9N@ LRD=hQ:IXX{ﱫ HNwuj9tN+~baٳ$.xkmǢF.${BgB+1eN[Ԅl%в/} endstream endobj 37 0 obj <>stream +8;Z\u;%eO)#_ikC:EHAp`fmn%3X[F?>,_)#1E-d,R_nMPe,^$hP>bt5#9I]!2ld8j +6R?,Z7&"Y=b +_oL\-+*AVel)@8#I%U9qjjC?Df.lcn]l48+qFK?u+9AgNG^RUn%.laZMFS?>`9\uq +Z6GrH.ipRIC,6p9Mh+==%M(HpEHXBTohfjJf8&k2)3<'VN)bC7++*_YhlAneru_9] +ir]8]s8N'!!<<'$!(((bDu~> endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 28.5.0 %%For: (Thomas Jakobi) () %%Title: (imageplus.ai) %%CreationDate: 26.06.24 16:25 %%Canvassize: 16383 %%BoundingBox: 0 -400 400 0 %%HiResBoundingBox: 0 -400 399.999999946123 0 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 132 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%CMYKProcessColor: 1 1 1 1 ([Passermarken]) %AI3_Cropmarks: 0 -400 400 0 %AI3_TemplateBox: 200.5 -200.5 200.5 -200.5 %AI3_TileBox: -79.5 -580 479.5 203 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -124 11 3.01 0 8191.08637873754 8191.12956810631 2547 1388 18 0 0 6 45 0 0 0 1 1 0 1 1 0 0 %AI17_Alternate_Content %AI9_OpenToView: -124 11 3.01 2547 1388 18 0 0 6 45 0 0 0 1 1 0 1 1 0 0 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:-106 -596 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 11 0 obj <>stream +%AI24_ZStandard_Data(/XtnVV 80OAGd5b+0 vmkmQJRJ)eR/# ^i +P +c7- fUv|e:{`T9ca1oβ:{}Ι*#tYݮ*"tY (=wlZ穡b T>Q=w/##UړΜ+;U7wH庪oeHM":·wJCˌdK*HD^;4Pմt +]e/IG.hidDYL"9{ޢz^>Pj],vLe+FDMCUXZ!g<%eɒ=bV퓦BEGs Z;*."'sc,}Vjoqʳ7ʚ֝l+y(W쒟sSΎ^^'kؑ[e5, RŰM.C˷>˒ })XG%,TVI+)цrt 4,@ >ApAaH  (8HA!1CB±,4,H +d@F S"R2$$R!AaؠaxH 2 Galn)"g3[G2]3򮠕l`P@,8*'x@͌9\CxP(8~B?Qv~B`0$S*;L_8 bJe02DC s=0pP8 pthjlnpr<(f1i ӖZ^YMTEmC%"#$)A +Z@S-*+JŨF1X -vKư1\/KǸ11X$,4E2 9e>;afa{z~?qgqO JTD&x"P$ F`H0)P ++H(h(-p /H,łh,(01ÍȐl $@!B!X6HHT@@ @,"D 4 DăT<(h" + +6`@" A a„@x  J&DtCDà +$ +P„ D  + l%pHx!2&pA9/[Xi? AdѴGBin%R3 UˬU| Yi7+8dI/{ܳc >4[IK"t>fb I|bonO{:-U7sR^Wl(oE7c#J{/+]>Z %唿g:mbF,2/ r7K4u'k~MVt ^8X/l%tsT˛rn^6iݝeYy,̬ ^}->2rAJUE12Y:{rVRs_:S]%Xn-b:Q6Se:oo?,ѹXzIenVi{YRln~V/w)N~G*Ÿ/e9u?,ݲ^.):,<5ծ, oO+iJ]ɷd!lӄ/k[l_bod!MZ6 +Y{/<᱐xT5xb22%'KX.|yXDlLsfě }Mư+lIȞ̌ebe[/̑U?BI;˅J42t5}RUܖ[1=]Kɬ\j|y7eFocV/r6OyewM)Iƿ',<}jޕο*o)MOXWw,GSKΘGWâkWD'U =fYNN]B}vv}GxU8;$;e0vO:BAgy éérij^nisU<#<]g|b!$6{J?RF^vVgݫ-2#j 9*)c:տgTiV\g-.~]- 111tḌDvLvI"89eCkDRDFJ5]'zLe&|"$Oوٜ)S"9P"e"&O)d&OjfI#nյ<.uFnNI)Y #/\$,h2:r#L{UK4eRCrh->RRfgTUȐ\Б'c#/,#+B)ERc*_fk$$5Cwʱp^Ƥ\2&ɳrf٪Z3=%Y2-ck&aH"3[`X$ER&4EiVʧM " +\"I,h#2#W)<|9Y\߫ϪddVɺ]Ė!$VN4FfLs)BYJX,h5#7 IѲIWsx'?aGB*5%U~|:)]/gk V~dߗ2r-' +"s*;˴R#XF,g$ +11MN$eS(kNve]j͟|xS*_uS "4+$Ѩ-nňČ^Ye9֥HT:KɏXHR'oZ+vH̒ʜݽC$T1%&'9ɡ֤rȔ畜V0ЌK[Or†C)^ @ + +( HT "~AD0 4,#@P02ܥ:}Rbt:dUzK-RS:hX8(HuVlԐKbp*yGu@3#BHUrt|w{9[: ycC{?K"t@C˴<"  +RRgVlWGw^ȐZbצR "* 7Ust` ӬM]ςU Z(J3Y8ԱЬ$+7K/)1}/i#3Tl%dҧY~(Oc'KؕPVh[^ҝ#9K4x4q|.dovUƔٺL̴TF,vogI/]_Ko53FNj\SXFj|{]Q9,AKS +݌hw`J#uo$]Xb#zncfKȅPdirJo3/Jg4_|#:T%y_bĒJQfբ+Ҿbsf \ Ubݴ +cgOX)ߓϑ>IUo}~EC+4u!цe9OU퇯ݫewW$,tF:YvO +e][DzVjՏĶQV<ߒ-RښyZ8 uBUtCp ~Uҧ$LpkjgB8Y7eUI<,QbU1rIV–bZ +o~Wxurf3URHsrXdU/+dWo[UҤyyhZ2ݫ;ϋޔʡìg +YoFVkɰoUBˬB³>Y[켳Orw )3ahV,؍!RDli +պEUա&4}KeX!ZKJ4ծv*K`^]/aW쑰/v)  ^3;/>wY(ayu:IUkPkX84z_]3vJeZe7*J Gޣ#>sUn]ddEzFI$Q*`5,1Zص +ǪTZ+ik#m9!I, G M^Mf["Y9L|ʢ*t{s;-JYVYcILN?XnND6,Ҳ3ñxZgXh=k5-oP`^F]!lX +k4z8ϊkuܗMG)NZPk{qVSwiP]}sVdڋ2]Cv"r"NS(dw +FSY:Da}>Mu,N.]r,K.^knz}tͱni,EM=YaҘ;'{43v'lvwֻgvƗc_*=fk-uۇ^.5T'y->%RC3vhOM։ƊzHYȈ^~DDg%"Ks^Ur~Ϯ4FK{Fxť$*EFd}հpD8X& \r@nLSsל7r.m':e:>YFunx?#*r*Uu 8Dzm尦J+~Yz)sXL{ݽS0[aVَ4.'*ѥ_O3Hxo *Rol YLP±Z!#/9+Uh¡fDygNDh/RTS<^CtԺzSӹuXj-{(f+.eX10^ztQZ)k0cg㬼<,La] +^R,;#ݔ9m^-fi?OȰ~*jA*[m^M^X?"CeʎLuHIX&^ hzukeُL&R7; +U͔mnRTTXuy6_d]ͼ|*}~ޜ?S4\DsNذp|KgfUlgf7Xur: ndq@UG~5r$W[E9G1֟eBeLE RYZ\fg3/uD$k"_it*TLFٛұʳa'KJٝԺxƦ-u¢RF5R[Ȉθ~7eՌˊi-7fڇjxTl=HLt,8t,͍Z9MJ03?I5!RVK/Ϳԃc/XXYf.eŷ[y*]~:45].b}ʋ'"هːW"oNS ګu3fi.2ݞvM/j5;*j:JsKziHԻeNMq@_&<,2aΕ_q~6Uff V<',˱ή\(+=8w =񊱲de:J۔soN,˱Ag3Mdg~6b-ك%smӋ CdeYYYLl?e%L+Y5miOcCh1Widt'׫bd/k"`ˑHfKCLZUyTG˩ e:AYCE'˲bA6yl\I&2p4&b7Nkw"i{-Y7єA˯19fx"Dǜ}h76eSVޜlʛWz:ՙ׭Ɗ}XuY9sWeWU( Isl4Բb;b?"g19IHWajf"2}tUkYx,=lzvcƬ/]t:W:V?MլQ,rÛr+2Ǝ,lQIgKvd-NƛWɝ,Of]BNrWʦVTOUʅ22ʫ=u\^ a?TC٤:\zTm3C23cOexeVW{TfbUeE9<,hzEs[*jybuK?Xx3뚅uΛ?g={yTfN!w|،ur|{f>{UKSWjHrUq:Tr߮W7!4ӏR +ݣ)Mttr\^(]J!=PV1ZYcUj*<|aS2emN^era?vӬ Ƴ[C{Ϝڊ|ڔ-WB<:2L"-ڵmJUMώڙe<+49$h(ꖵ>h)GҦviFlj!4+2gfϲ2hc;#9Cߌܬfg9wvhѥ}f,.lʎet*-3վlKn.e?߽4F1{֌v[dImEVfwƅtwW.#_SM;Wh,:&#x-UkZY:f=)5F eȲλ,jf ܙvfct_̭=C-WJ*˺RexͬwCreJ +/,,T3]JVcy [C\\H=iTLݱzDGy^Gc9w;4*_sǾ fcK±ɜ{jp~TV&5wYjkd';m] UEfp~t3k3UonF]X>o,JrU]U.є^JLr!ycF?i'#YrJ.gZ\eV[0/Oe_,aU3r^jm{E8H}m/g{yxTҊ:XKuU5k*2cUS/d6Uj^ª-WOK,nafRSF->ԢDo΋M]2*\iԪZwI+>[XT=VgJ<}.tVnU'QjUUШ8!4 p}}b6L6uAe! ]14:AW {Xp3WLѨ2J { (<{h i?4Mb|Y9G 3ɰ"2xpƊ';'y#PD(^!$ۃ}qAq#pqo|Ey^㲉R.3O玵 joR=RD_xUs]eX/{Y>UWI} H)wpBtkyKB"] z`YSRQpCO,NvG ͼ4{iDr'{*+@̢F_*񪀿GN:ƶ ,qXPbSc)q6gEiQTvLOCRű@;46Hx +Kw!;/ϗ>ȫg;I,1ĪT,x6uig&N`zl޲;Q-֋V|>kx?q=ӚDžIџ3ŮLJaCDQxab\fM/>AÍ$^Ll~2ԲNxF^˽\UuبKqIA 5 '~, R|UuȒ1,5siKSo ?ܑu##ڊ/\n+63|t ..|XBj=l6ᥡ˯ iZI"y*bJ?Y:]ږ}ѦJ~my*(uPZs9y1f22رYl_q!Af-6p&~cx52$xVfp4q[D,B'rE؉.H,O!\bB7}z.ߪ\3(s !1^œ(^]J`g~lVy}Ӧ K``|#8-Hh`m:䔴`Ț_g{EeHwBo ,u _`L4ŭ#֭{\-z(\Or\xA\@B_#ti3#z:GY7 hk{9=M \R_t_4#:$!/~I|6pV:"-yM$NAs0g@ksh V ;:Ҩ +s9.$;0Ȭ6^z$0ܨV*K>=u[zo%~>id8'yT›sn[xHxUɂmH_X0ʝ ͪ,j"5Z'uRڂ,h\26? )Z;RK<@Δf$]%F`n0i?#g>۩SyWJY[ >esj~qSH4k&GLatq]CS +ڲX{[p"?=ǵWΣQ BlˬyUkgMC lrG&pTVxH[eż\[垼{O-JJf4D&QZbQ䯥OY&PÀ{,k$ә93AԾpo"0$5^̭jݔVvaWUv׍ގH4`M\<>" S\CM)ޅ$=#gN,mݤ: k2"ӅyόkQU޻ diɫ*K5\G6E2^j؀hFs .u _H ĥB6.%'O qK ,w+Or@V@tӆ B)0OS(Aq𰜂 "WT@#KdVq;t~1'=ŽAFu`i"(*だ^D^yW*Sò2<;#M8@l~4Z >˸,f*`沮;O9ՒGwE@nt~#$h&Ծ6`nT[*i|a{"2WzddJsB>2T}rpv|_.'D΀DK?@I Ba x,RYH<n^PrԠ`e)9-5vC*2γ!(0ԷvcB.ay)T`6"Bzy+Qƃ ,D= f5D?v +iޗ";PN׿p/׃"ZLRK|%v:0yIVc%``E VA0/t(ҚeGpʣS-GvXdc$0@SSkb^ɵBb 'f)}̓LB|AOE ȶ"xTd* %BZ1˦8 +ZYa3%0r-h%EDG>{v@`; ,@. '=j;¨]>~x$~9(L ز,>L>I3˺`>*lo*Huxzͽڧ :}Hsig;x4@,p)d:rJ P姼PB + > ءUy9>  䌭n p2ई5`S!>N&־|0O|h(S#> ppjn7rJdx~p2yV7(j/u|879 &|w5|)]Sy]-o$ $sfՆ (vQ7A:lr_sѐR8ᵦt8B엱_yWoI[pMb@L5u~T¨MP4ssHv3  QYu9 +QSݠ&a$٠@0۾Ѣ~~߶LXN쁒 +ڊ⃑L?W!D"٬lk"A oq-kb "sPqj0n* +L*puZn٠^eS ʆU_(m>'i=1j +:"38oЭY/B?ir anf@%(1Y +IdKdxQ3a1La +k`kkż*hb20iCdh-nieҨ#.ύA|u:)PWN1ލxlt'app2" %8?Yv0h] +hf 6n `RV~PV:UߞXPP!sܒAV؎5ҹ$;pd-5rX>',:!h,A~ +W72)?@HA|u(\( +v"3*;Єٝ~mVX%unpy~mh1g!,K;]9rdvWE&nJ{D vT!XD.,ѠUFv 6)+fU>[hxȲ;gipg]0ľBTWO "y~x#!ݟvCeCϥk)~ *϶ 10PBoC-,f6U+K+s?Z9%UVR!7 Hr +4)? +%EAK\ 9>Py~,R)Ő&<=!R..Q%,(BUX|zP"%wa藏HS0q+a3_K) >pkgD"PxW5uiEm1.}.d㧐{D-{Sz[ I( cZ! +]P{i}$tTse@ ,dCRM{M!չ]HI!Z6cdrGN%o)$s &[f!Lԫ"pH-Ɩ?!m/h+g'E޷cKXRQֈp +x#; 7 c!D{.seQ !ZLz~m7\6JI$. +׀b*Zjޒ%DzD텰sJ!C9ǔhCX' +DW5zK0y DM'0Q\Z,Q%ՠq+*Dzy`G9Q$U w̵ǰPDD9RX|b@0iePQ@ ^@tW vڨɝQxa%C<<ԔشZko6Mɮ ZPQx?#W!͏>}:K7+zIИzޟEl젭|8ZM,m*(J4}6g8=@dw0 cAbx0b(>t*%] ]x*m A6M8%(myEz%Zl'^Jo!Ed'޻R,3 @z4BzK6Rِ[r r8Q Ƒx mD ؠpBE\l3/Zڈ{XXDeuW4;TQ%;BRoA* :}|,!G`%E~4}%v>5U#'PDhCxr]ܳ' +h}Yn!b):\wCmr*/坿|t玙Ѭ[݋CB<ϪNY&?xp8k5_iʔg!,-I3v} 7B)jx 9Os/v`J<#M^'֤DfauHB(F{GɈawCU3 &$` I=oqa%/)fMtR1ډ`c$ {1S GJ˶+~p90L^;aLȊIv?kgaGuX TmI׈/:cڋӑHV x~$L,S~?Z^Ԫ)ܟ^`-0Q,)Zp@2[$q̊ dXzVr-3Q;$~`X/QH0%H$"P(_D:G$»P;GhD?Q9y2hoB$ _(8XL䖷>͓mӶKivį0 z K.QIMͶCRLЛٔXFڥogI .bQt8\ѥo+q?Y9=I qIcTkeT,Ȱ螸ϿN'mSYະm:/W<0&tJ7jQ0kjOMM*tQPkADR;zpjȊ ɐ Ӭ!8Oʲ角TscfE51YFmha@&vqĂԢ"e[SpPI2ǢFlҀ=K2١x>VtFdh{% "a'S +nv#~u!i5`]Q]6(RX;.Hg d{TE /=Ap"+ˊW:(5'onEyxU4ưmuRNc&| ~uh3Ԯo;e3ӯe_#Pqd鿒 <:L7EOELosr'wOoI}te%*hUƍʦ ,MHy!Vo( +w +v,ui!?3#&~O8gW5yxZyaCPL/(^$ u'5tT|3o[#*=i)% ,͒hv+:Pcs^|)AzQ>IR`3SRȸ;0C̦dV%EUM, +^/Y,RO9X ~9j|rn~NטwJylpbmK&?7?OloǝdP%LFg_()0=ewyˆt# 0kEPouYb +Fr)0|Ђ0v۲!`Wn1D2Qy1b # yfZϽ8. >]n6g@y)[ GAX }KX#at@Xz\{Gl{rI)ZW&~8 0SyZہ#(8bx-| }[QxIa3 )XLq8•08@acU$ %FE9oL] O oM$^f?>r׋} +!4i>?K3+eQ4m,2F^s0f!QVpLI1>P4I[3|n _Yh*A=xEyL?p&byvST23Jh}, H8KF㌔&y/|dOO;3siH”uULM w%3E!b|0 +66̺(BŌ1ct531wfGLr{E)L &֍sjsM#Yęe4٬ T>KoF3ՄPq;fVg 朤)5 (atn (*όڀ"aݎ`3x ;i]1:Zjq[g +LLd*ys5S|}XHanmbj]obb| J0) }mD3wULDҀ5~Rg* 4:nԙdzb&+)Tp~`#r/e!o YbvCDdf):wSOZh*♢MM5Io5>31f(ZMt'jgͼ!ޝ6ӱeJ 9:3smBӓ,Qpebc:=rNE1VsVЄkpg1LT@y >tIvRڶEcxy>.I$rH> Ԕ'}K=EX >#?~9XЏAfJFޏA8-ctbio3eЬc'zT.elͬ"88-Ced7IT58oGwop݇ rqJ6w$4 +]vFv +`g̙;`$ .΍zU+[8-Ol~qn)ձ8Sqvs7H4SK%rSqE,vFéJ"Wq: TE '(nڜNH?v*uVDj>a746th 7 vzmT-M +zY\l4!˭'e-͇P²uIJ˦9Z D_3ʒm"i$qRMAZ[6\J6kǸllyѭlٺhm9gϦx>ϦaVS٬aւ&SlQJ/͙N,g6|"m_ԟ#<k^ a_I}Fgdd~=|8jAc] |%j-(jrFQiπ^  po,?hʝk8*x)NbO q+yW o Gm"`J r+X?JαDܠ?[@rbG< P[&"eK%Z/"pմK }7yC:*y2Ek-,~Hm-r{z P$n? 1o++6dijx"=eCG2 Ӻ pٔOec)x-$&J*2KL[y33`)dVs""uMN\6hCRn M-%Dc-G5!`q\GsU'n *j⹗$`_<$9bL5fF0LNt~fчHK%4BV8ظx# !Y8w:MBdsZ֢٪KQh12Ep8-eqX8[xM%M[2#ݲ&/Nn+[Bk > Ҭ#)Evܸ +|L/dcHd>0DJ?RwF6PPQD嚎«U/":Pb%tf/=K k̞mPsA̟ ShP^IL}Sw˴a[^c`ژqC+(2٬:^ŧ^= KL*ݫۨYK %cn4ȨQ>}NXkM#O1s)n2"hiEFwFX .T`Ыd\^ڪuab_"+1XMau] i:|=ɡ {4AѦKu>D▫]6oK8nH= +OA"[V@Q?RzE(هi_e0 +*\9$)Lɢ۽\[pi9@.zWuQ<$1mc +9*2A 41x8vD?YK~ܶt yܤo|w&`wzRPvjqĝ;bMir Zó#3K'ݟ`Q \tqD+*hȵP. +}^}>тǕ + JAȉ'>hjȕKuƍ֘\Sg%huC)ꌽދ5-G aHG'"Fޒh݄陵&Wm?G#c.*a>O=qxfhF$͸& |‹xga} +4ϖN(ck&vDiN6_崌. Tx3>|l5hB/4 )bШ܌)=M( Z955%(a-PPڕbHXA$cb ρBD9 24I !J !uk_<1Y䷧rmtXq\ouī$ceTAה^ĥ%؊)''|EgMEe_Tdz >%܎%r! /C(`KiȭwbRBl>Ǖ | Os斀:Dyj,&jN@j I) ZgD3Cs+!@+qq>:NgfFI5%BdF9 Z$M'X}-B 3N,d-6#_"e3Q{(x߮Pʜ}5:xXI*,$%~½m.ٞ.VXs{R U +(<`>IX&{oanL,d0 pv{g~,-`ث8CmȜ]ɐk7m"22.r4GCyDEDƞs+2kqYVӭf[/Q+PA=HUb"تT=Vq[ᓬ=󆞧2 oV)GO_Hc '>,<ţK3pWdHY/a}8Awn1\VgSXLb+CWX'\QiJJW5\T6 R >{'Y=y| 2.S<X=64>XU`hWZlhtbHVX5  :0!;p)m-[ՂR&M~s7 +>1/TWAAI /1p7X\{,0֭NYu~@ B]Q8u_By ^ZW|Kf}_& ~8,Sld#%SSus a"6)7=, 9y.i p'2ָU,ү#^(iL.F[طmXE? qB}"@9E,Q]ّ?th n|-W8:Y]E^ eOEfaȐ5Mk +tӒNd{{+0?K)|xY27%bIN HW]9Z.`ЙTp}WKz)^gs`dox*խStE/ݕmxq _!CűRW8cL>tgSfEn +DΥx]_?8 qe@;ovR.܄Iݧrr(V 1d5ZH6ֵR.y1*NTJ6vF.x$xM#e"Nb22tJU17=Dh?&Rfsˁpg{TgdC\B+q`]J}) OX_#dH(id{THeU~?G{8i箓<%&WKC]t8n+oe<,#1. ܴP 0 K 9ޕ7m%Ԟ]lY^硪*/> -܊AXԨ^<>! 6mufZ}8ĚcSNd'C#^ +LYJu#^}ޙ8c-;܎Ns$NJ$m;Ft\t.r'y X5)&S2U\=ZUN#bNeb]S&7 ik%ZzkNgEZ%:bp2cN.Cs|:gvKUJayo,?*cOeSeަiWi:VdO?| +S[ҬHm+eSFfɀJ9lnx,bYn88Ψa(K_[=BY%ƨeWp)h07FFeCm! ~IU;*-8.sj,gά W֟|g+8h`X21J?o&ٮJQ_e(,YhrΩQ9N wዀB!B%cq;+\)HW^{a:-j/K`Du%V&nR^)pWaV ;xzX-8ߨhQӦ-oLjp;GםBą̶BN[G}w`;$VbXXGLप08"7`Z~ւ$k#a9wwU>?>&/h8y`eʝ.Sa#. xt)AE"jB, t`J50d~5a̾˷%[[n Ng^ %?GnIfq-ɏUD3:Fh#a ·$XASCDSd8vQъI!?l+AC_Ѯ 0 4+AT3%N6*"eFխqR2 P&AeGc? Hfz'vSVI1((C 5t%$Є+Mǵ9m&>N2«0tUd>a;_\qы+P + *B%}q/ qh1f6 P [zvWaִv 0?=p(P00Kmx4F<{!XOh4sj\r)Y,8'Yv60cݍɅyW̪}V44ui6_I2+ȳe`[=}Ԧ#@ݘku[ +p)8@ rȌ +\B2nmXBa^Va[UV7)JNxhǺL +cR_&:kt7zh\2[c~1si< f`93oNR8ήu(wMg VCqp"*˯!ڑC}~ h.wctGVdۻžm>t1HXC@&5 LoYy5g5^jiE-S 'Rw7L)NJ7Z= +hv ۜ1X[P# ]n]q2S @e:CP"CъلJ}Q(&kf&09,uu.* Ö۵,&;/9}xdbuHLMGrO$#Z'9R˥VՖe +=%p=]ig*I M[j{rh. ~ ɿ,7+$bII2_F RXn[9 MVwAvJ_#qI"əxu[= $`o!5KaUD=EtF`#Ded~l>ߩyCXKཥ\ %08 cZN5sM0 NTZґ)#.1W3Ʌͳ -%OGw֒m\lOŖ8P'& X饰ʾj$n?;C8mɍ:;$_`so}~n}^҂5as*%!9B~|eSSwh7}oxZJëeٲ$oixA{[OxaΎЙ!l߹v2G31F\#`zz~ vRC='@Βp,qQ1&OOrNŕN؀afWp6`VŕwNB &y4 7r; ((kG GG|H.E&0NM@3U^eNTnӚ|V,SkkZ_hf4 e%}iQJprQ,J/z#Q j%dQ1(Y6 Lpi vNKQSux`W7\w݄Z%6i~ +K}A4ỹ7V`Ģ/vG(}佮ڣp1Y:ԕ/h،8?c"?}q8RI}:a']F1>eus{ z(ϚLVuu/#ϥ&E8a8JӶ){x.z /^?"ԜɮHyR!m*ZI {m#%\c L7ු|X*O"{\' 4nn:'{}U%wq[[o*ڃ:&v'\6:3,9,=6k]5?}bv +dyoSwwN(PERtGCY} *x*8@Lkj5E?m#_̤UrmSsXlgI@+p;d`&ك;?vR=,<woYPplDCҳr)F}V0=Iv#/E}aoUn)sNORqx/(Jo$7ˆ&G1ѧ!)(LI _Dr[I!ąo+"r(7vifqW?5cqtV:'3'+(Ѐ/{ *d VӴM8YbRP;Ҵwj@Tl-8+ڇ3D(oď7+^W] +P,-[ׂ.n7tϸ#T|;0`aF12rv0Rq#(f:š-cM@Paglȅ/P $h*!UEƧMv:説± P[5LRרMCl4BfaRCr&O:Lk.׾]sBC^Ԛ]&wM6qS(o$ &<"w GȢvgT/@_<3n35ה)"գ-o-eMRa>[{aZ2>Ѕ`N奉HT&2=eu?6 qS1@j>?bW +An6y//VkޙuI)_R|Qih9kHR;WUcOuUOicQ5dyX٨{OIlG#MC*yDvTŕ}]B@B~%jHXL8dtmzZ Snڢ W|:T1ۤw"< !yFE^8=(yᔤ)% +? @ 0 4;EIC^*K{C*Ӟ7"BY5!aE 2|f@ 8P@ Pp1"t`h`h + :DB}*` @4 DA0x' h`# @,dpA 4 Dl@`LBv4%YtGt<" DUcj(_1A-R`A3k,2,FX-$Ff%=ydA3l'1ώSej5߃S,Eʄ8ivVEbDD+/y4jhSTHc +1PI"Eq­X!:(BEmef*z#kNIEVB~J/%Hʜ %*KIW^/ҹ? +c:Bkt.%T[Zu 3enH*+H#Y`gRPhY%tL1WN98gl~ lj3|NUŇ8qDh%MTQŷq3y 5(^N1,vZ=0hRIfex}xi5])O=r0E}GѺאyA4 N%$@%> C܈djnjȕWԢ[}8 =|CN^T>G WrكQکe{4X5.f'Ft`>^#eho58$c#X47z /TTpFjYx)4T['? ?N +3eb_2í$󌒄Wѡi)#^EFӾצo軫ws[͐]X:b$ V>SeYf{Y5HRXfb$YR>ez<.XYEPV9ّX2/R0Niʥtmj$h%Q=W&jHW} Oͫ'/r(}ݓ +˧cH^Y|*Kqꖡ{U/ +LGr ^T#%4!= ܞ% +=7q$ +Pd\3DzDͣV# A 1'(oW;E2$u*ÚXcwmK&)~ QGʦJͩfmG5rSGQNpIBcH壗ѼL[bꚪshMFԘǸdI)G8T)@$TE|oSPI4ES#~;{'7`fd;VW =|2vĆqӲY(7D{V;r.l"$U퇄=5QƥΘw@Tf1.4S^jyr\Q:E'i@^bO1oRS֭ m;W+p_ MDфtV +TfhM Z&j4Kg($]W-!:5d.9w{((ez!E>}d]䐢&2/71'V=F 3V$ #CT0JFE.ۥLCICc +esԝ\Ɇ]f\,ty %P-vIR&v2?I;{ FFt%kf BDXP*S*pWQ^E&yPK*j^DbV-dHv'SF0ܖ1¸ѻ;5N[Ŀ 'ޡqٙy,KhX4ICiDZ۳f|L|l'%^|S+&5dX H,>B/? j$~$,%N46R.qnF4(E$CxaBW}g8~?_(2~ﬨG=&9(b)Qp*|hU&5jE#V.Vf3aie"HkAR!C:|qM u)y$iIZ$"lătJ +3RCDL&g.RlDȵ/ ٛ95!=KD%"9 SSY$d2+<I#b(Y}hChZ)LT M(MQ( A3 A1S"ZHA#qGURF&+.L̃m>x)T1TLr,8*AW{J[ 4cw%C%QaDrPgH LAuu +quw\1 M l!y[ј̘ $XX.Z} uˈ4OTZBPHKRUD[^\s?Tr|gB$:T`5О$鏉Й5ڬ>B%ϔ/r*w&v95Q&$>E*'3I26a \񠡈Άsͭ}^5DCu4ŚRCU+э03]SD#Au +qJBDC$hB&s=s +RӴ>.$5 +]bdNiB=譚h Jk7IT訪҄w&Xs*fXE PeO;SԲgJ3m 6KCbZRm9$Þi XzoyTM뢉*"efJEa#5[g,TVv!ԧ>za*L{xQR!/԰3&wtā*Rw%O&VD"Mm3Q@duUTy±]?pv!BD̐ejZ-)̪oC~Iۋ:k`J ?BӸo }hIhp┼D|ZAܿ(ì0G,/ᛔ"z>}0c2B +t.gױ (C#_W&3*4keZ=&6aBJ'^{00pbԄ182,U1>"GTl6 % RJ9V9ST?7;Ԝvohȣж[2N %A(#dצpBeTrH%ۊ;HVIH&V/\D]{ L"pS4rDX 1;t1m +T!& 0% +2C̄n g 9X EyTMJ)Bzň*:".T\HfqՄPWab6 WufU@C+nJ+ + +E s"̂$H}T2$Ћs0AZXH# _p{#KX DpȈM1ڄn ) bj3ED0D4)b3 vɋ0if٩9EuG!, ѡZpPs@ݎ:1~L`䞐K`Tb\j9ns[/%HtII8H!0XsS(I(~쨉5K`HiأXn8ڬrdoLWm$%D2m.=ؚY. NҲ2 + t8zJd]f~|:}AΫ62ih 2Uxq~u>CyiUa\HHlxctD)&**S$ Ko00cYq + mxZrI*b*#jƢO8NU/Wuh:SerIĦy.h*BUw|0O"-sBVy㡸6*l;/" 9Ur­AybMKE"}6ŦHE) +#%dZ4Uk<ej(71շڻ[nX6HZ~Pñ< /AZHx*N$s 5" U]T!v.ګfbF,CY!2j$"{blFDR )shLT{PmE(C]B)W JRj"ZVQgDXQ gvsF-XE#,2-XXRlE S[A+v^U흇#\#teʽQUL>) +N*"#޲̈8-rs{RZz`Z Z4!(.jr~XHCoYIoe-d%54mj/Y +wHdJ&C!o|NC[rT"!FO|+*|sU"4 P߈7PƉ8#[l>a,fMb^LJ]$zLi,h(Q}v-ʊ!9hd"# !ʸJ%;ZP*=4§ZU*H#LORA#}+U 34:U%/QDԡn)JQ)FBKe.:!pfsώD%)OrF:̔hJc*mj3xdsSsT(#kQfػX$9񥉒KMHSq6yJ r9*bӢA2O1MYs(LSs(kiぃ=zӺa Üjl˃+Z~4hAG8?ȸ +ݺr#Z_HP4ZJ>hc}<0),rC|8993\eU_xDS eRm\ +,h; }a8!@5 E5:TV)N88t2UC2u%t1t 6kfjҗc*GL.CTb"v:,H5fEJ",/R"U咵_ijt +7~BjDCgCXy\&XS)$S9Xʕ`hLZCc5FO4ϋ4}.3}9Z> :m}?6m "Zh#ؘ;NK`UT8FRViġ5x_Lee(.ѫ qH5 M,ѸxF=]nFփMA3I'l&TUmHqW(*Rq 'EyQH0| E柋n +gS= y"E-a1soH2S@@:\ST3 cG4J:p:89Ƣ}!i}P* +HQ$N}B&}¿߰Ij" \d|C<-{_܌]$ːm4>ŃSY㯰~˅҃WBRV +gc$p1O~"ujƄ_UO;#lb- RZm!5!%N譔m)n))~e/}y@b* +E#*gT=$iZnL1d:EIrYm787_]A$I#!f EjA"pP^4K;|eD2bqfCэPW1D(E +Kob.RE*>ĈfʢG U|d! +ʍӽh3w <}(mh^< kB{J:h2tUy9dxCqXOیEemJ5-2pabsBRyQL!6vFJEH"V6%Y{\7mgMZ14Fx2{<+KEU)Z!fq1bHW̬U5>D;>j7'zH('d郫MO 7,H/zi$oi(#><=L&aɨu8sJfœE+*yHo8yI">fMIc}=yk!OxW<^E9xʎUZ:_/#DM ~w6Jp&1^:"?Z[67B'K׉IF+haۻŒEq6ux)Qn]cIuŕّ8Yk]^-NE*Npm)?QKnJ.A8:KQ/~}9G.N0NsŤ~s$nS$Jڟ“Oy)e2c!E:IbbUuq5*+)m\cBaq{gF"zʭ꼹s?_\U酻p G"*D$'ɣnLIHT ٰD3{|4uDA»&UjQN{'h7ߴ)pǣ}<+ !-%#X?^E?j6cfDh#e#z˷>jz_m|c"j:"5&}^mI_ZM_m5__m5n7 RuiLLTݲ"TnJ =\ DيN}?QB+L &)TLKQ2Qx +)9L4$h` +ì!PE ? +U*)OG"ΏJtb$E)|ܞzE2|F'ySrM'$}O!oCÄ.kBu+( *]!<^јP<>v|W]#TIh%Q'ܥSs ,ЌC}9[>D/fq&C1Dt #T>bz u2JFR*x$TAPU+C%[%Nڦh44ո%;5N''4]qL4!Q! ˄Tt9P&T˅+WrʭFd̄_OMa4 UR׵>*TSjB5"L\ MqDR!fqjPg8vNR U<|\leƼQ*(~@U \ P1Gk6taeRNHhI9 +Uצ},Wq!g#sT2')+TBPɆ9/ˢ2vNUgPs|8PU[mNNМkt&TK\ ~t?z)*UTPo7&T9PkV?"n$P^I=qLKӎ-v K9XPBa(T͗b4) *UA&muOG8EFx ҃Xfњ2Pc UCXRŕPXAMegұ)NF=(T(e )VJ\\=W΢RDaч +j2+G +-6JT\QC֕BD$BU0>(! ʆZQa Ֆ嶐 Ն p::DŽ cw ~Vzn +]P !XJ~ϮrN ߋ]Ax2 ḤJ Bwc%d:!:> +r_fLPm.JPos2 z}WS+l#QY.fV*7NꜞC)(TEވ2 PX.R߃;'TQ/&\6|Ag' UA zHY +I sL +;<*dP[&Mk;F8'TQVo(/H4 9\V$kf*''BlvĨB'X\7oOwnoGe +5jm3 +US[IB"7WGKBn<^G(Ts|=PUxucȭ:/PusQ7:Lle-IsdL·>8l^Ex#Tp%&uӚg4N PR_A +"OLw!T6ݗP*{PtЕÕH}REPCLMU.Zp*?졑Hg!w.> T*2W:<0"Td*ٞEpG{*5<4Mu3 U8&Tt^ɿ VMG V&`8Rii{\&T8s'82ŀssb'T53JلJp/VP/~LAXvV z$]jBU Hq`" '\Mz V猸eBDY<˖O1, @{&TmA/6Վ U`SJWG%MZt۞N#-0IP- X2!*a䠦46S$T|fB ;œLBUƙP޶r M$T&&Tg,_cCBuehXdVBa6" YLjz"c0+ pTBYvyABU5&0 *|cXqj/ċʾ5@!j&#r%QoBJ{򠎄dK&pňN%Tƶ +$T  5FB \Al %TT0]^ 3e_O%O[n 2kPypj5Ea `Z)Tb.&H?4Od唺 J"^=+)TeRg 5 RVK2a} ?2ϛbnB"΀5(T+"Bqb;W UV/Hn-r5B$ZOjav>bJI$h*c:P]Of0`e-T݊ DB,TVn gb~=LJjyg#+ ԛc`-BVpwbh\W+`[nK5:;#ZwJi喦-Te*po|K%@<# + U!bRN=8vP; +TzU'4*CnGwWBO,hBf[+\{,T e,T1B6Hhgnp-Pտ +fOG'B?aTc>ysG֖"D")ĉ*3]!K1Fk".`OBM*R)PݩvN$ )v2\dfƟ~*kZ`mIBUo\V-YKhuB O +U:BUYHsG2i6u ؼqy OB5 gnELZhQOPUq/HFBrlPs%>-T{40nlH5BEkS{u*I+#FL}TJ^5^Mϳ7[0\{P9 +(]PxY[dRd /yO\p H*MRK ^" UD 2Buqa +:~̼*UVlm󵙲P' t< U:]jgɟΐWΧ,)dɠW@z`kCw.܀^&v@-@j@}CU@".59_`QyUc=CDcS,s*uHv꽘/MPA +Ji;T2Ceh {99wE^62eIi\:Qu,(c(=u6KN9HmQ'*)?./N;B &(vx @T)iҎ >j?Ij7Zi"jeATQafX *!fMrwy + +,&e/DU0 +#NcF7CǎQvq/CT O@Tdg>Te&9k=TWSSl[ަB;pTLj;koiR + Q%S? z9l4u&P`Ӱ$CG) ״C%u +P5X< "Ǧ-u9TNtN1s~P/l)oq$yGGCU\ + +-PҎ0A>F|M(oHVȑ $E:V v! -'=#Ku4_M .bH>FfN `:4H+Sn2>y)vVj@OaCuS9pz-;T,C-hndp' ͧK_!p, QuwԵ~"!#80D`Ⱥ7"\$ͫ3[;Uw@%HB Q.: Q[.&2OJq9g) +иH69E:g'u`iyTCHF=K/jUFC +P@Uqx %z)2wP1O t4 7SMmڏ!*KAY 61Si^"q DT"(3#Q2 a%7*w{4ɀs6ʆFU Àdydm8&g^Ш_@MQZz` QQ=<<,aTt?GT63IFT_L^ʈϻ`<0܅oDY(#=):XeDEA](c**zbbELޓQD ;u]QajQ56όʒ$FCl#GaH:[7kwWGT +)%BŏYiUbQQZp06{3Ca"IDepj[t*F+ +MfUē&w5Km:o}D%vѤ rK@T#TcP)o~'>TbB̳/&}1*1PQu`l5lv mCTkY[.!*":)DDQѡ2P[I%j4N3fx򹪆TOx П4Qe=Hl3YryޝJjy:ߧFDe6{6HGT#g!5DE)W.;=95> b]DְȑD]ѲEU=Aή@n-"*͏wXsrDE] r#GVQoLK/vR|DEȒGNEmS?#U-ڑa;r8442ZJD{8 +VVxDUYޗ|D_!Q5ITx%Dkca%PunQ*-/X[>U uD꺩‡ eDQ9MV#*{;U0WF8іGT@[J)ӈ +.~jDu?( `v7X&TDՄ' 'X9#QL @uX^ U-uۄ*|iPi+XO,ڂ5B9p ؅^#FM#I -e6nZDsAi=6E u DN+ž Y?'Cf4_8 -hުxi&:AYv93Q@jލً4RV[~)Vyvh0B2 F4l&y? +I9*yFc3 m/,i#PКZ~ +Rx-.O&TM:HsЁO:qY8-voٴ*ka~gvدbEzRȀnE1-\> s$&-p0(~% c _'1UI v@؝3UwC0!ѿ +!F ah_8Mj)nߍ(AS;9>o-VCH@;rWŸj֖G:/np]Ti. <[b?pg$._`7H~0h6lV5xr,8;F Bx)GȎ-r d̲RҦKj`HǮw5NzJ {/<') +xVkN9҆V-W9 i5\{>$)RQRi )\ho )m Otz+8n dC~Q&Y5ewlK'ŤXVv-~[%XLա/gPb[blᱽLlmN3žUzxةUsq#3NYeNW̓fp.d7:u!$? :j՗f`ò.B>5`rLW3.U?IO4yuNfkUBd:oa -@G( ~d#.2/z:ikL/<yyښx_kc&P2/*c8,erf1sY)WCH-`uLF 5F:*!w8[A 6czI70rr^pZ*Pw1+kh=@H%}SVy\k>p @IAiJݠRWd.^lLN.wL8=eJ107&5+  +\pN209`HԂECxm4.)k +)1SFͳk}2)s3'XFAi$Aj0hz.7SMF!ZyA$($CUw]x8Y6)pt;BQqB8L^f}c8\pEcyݔ-[ j@ώTAͨǿ1K 5r䚎mvD31R!C5("yyD+[i(zW"x6WV@WCSteXO"YwA}fUe'~m:D nу7,-<(/}/U@M3gvU"S֢}c +N% KW5';Ie^SNnF>_ӘHR7SW.R1 +6dp*.MMpƒ" t2ga\r1^Yj1T@IӤ3EoPc/o!e=l\-K^6^miJ[FNLj2Q<%Al1W5FeSE& [z$rR.&TE4y-pw.ę* +ך5?YۤE cj \`Nn0 < T*uhqHX,j0Ky;8 ig dR9h$T%b(A b8P9<*݀ k3][9WQ lTʮK0%XpR*vwPRcWJd&'?G  ٍ^0{>ɷ,:79KЩdw3o,4TGi;(*.zRWd#M7-ft|(E߫EL"H۪VF#Qk%6V"D+ɐpe|ɓƒI( Rg״2OZao1nDЏٍ\'qWfM,=OYR*w*mI]n==DA[~AZ̈1\9-P֎`YgD8.B'gD*(F!K]K~9+qCQ]z DE dzIe>hiضo`&CRޥ_01ov ~ +T@zJk!ff{bF(&n!S[Ye]`1ey{Ϟt"X:CSƁ'3ITctPi^*$'#+!YqA5BnD0~WW|wTPM<)qDU{]{d]j<ǻJ%ܔ8roStZ&fT/vvj q|?G=k^%..C)6p)1Q?z3 ۢ'Bo^ 1y3ފVwf<28?ٻ>PD0s!n-v2c=h۶)&8},!\$9? 3Ȋj@= AzǮ@Jo3UƜfܒ\n1CGTl kuc ^:㷐X7OC//y +Qz.HU`\ٱhKKͪ -ԾLeVigŰ,7U9)l͂1^_8BFVg ּti}&x[f/9偒/R};,S]&~L;^d5,6!GnTY1"KS'In&jBʢ0Гj' A7yEKa1%M A6@ +eB/hSV<7l7l}暔q_g^/i5]#[mЭ^ }vyeKK `,*P)ZnLOaLkf$ptDaa%,LA;29]G\{}ie-0%3Gq'Vd]*Tn*R a놛fti(H"8FAE('H+ܭ5͏U(n(ixc3"lr@$c $\ +!-GW6N +vyOw,*{ܼv!ł I6= !=b0EyrJ,y~1B0!BZ 1hQozޘn^uhjWݐ={Lm9R<Ι^g{>νWy|0Dl#$,za)T;JS֏Ʌ#Ġuܨꖁك2Djm&.*e;4w*GasN*+ %[giF{!bOXo!G|d#pP%D:"[6K4GͱAu/CkVᣖ/9vf. ^Թg&5KD'n-uf|9\p0!@I^|s 3R +pS&AW&R9m+,j*nTtydZyXA;P5q Oy#5GzeȠ=3r3q|/Wr& #09T)~g_Qrg4caZ< hG"vɄR:|Y +$Ig" 0bLFR{r + +7#N&].AG1%t'5V&~!ѐF p$*$-_6 "?^t)uGHJn ^Rɠ +8jCK9r)GȠY*XMwMBAB!Y| Θ0lФ*Mdԙ\DaÌ3?/)Rpl-я˨tr˜Q.kJlK9Q< ]Mu#?k(A[ -RB\ceQ],-nf ɳS{j-Z| ;KLx'(ⱶJd;`PgaT^dZ!!-ӯ[u߮|eX"XtUgLYTj7yN̳p8Aos"3,Cti`b[!Jnx~_J^!0BrrHyxA9&BD}Z7'2d *j4h9o|K6B'cJb3N̓I+& +E#+)"K-l%Dy1ԛ$zZꔙHK[?};+-d"F&`~noXiB$(qTWŬ t]}6HcLInyá$LQMhЅf7!!P;s@* u +]Q@T&zG`ҬA:ilX)=mzFi8YWSwT>u;);Ҟ0յ"6Jc5&Z?$6\1ؕ-رWPhlg}yl$bI(&gY:AⷹJ/+ߢGFOk^3ծ lv\,3=]//OO%1w(Б{,C o0F&UqeqBE@OxBdHZ?_f5^9^8wǬ}EH N3S]G9l]s|;))X̉t֡/FFidFd87tf.aFz8^g2bZ)jZIMC}vIF.ۿϧ6+*1KHz4 s0ԽPQ̉i~DIbC|#igt:wjLe`eBgYntpv*RG? `DC0@}5ULpа|̍+%Ju$kϿLM.G/|CGjq]bZau:M̗+n3 ;4빒&Vbl17ܤ7šBo~)& "OasW5G;E7հ _RpC҅? FN\#([ 9]MGnWVNX87^ׇюqBy.\Lu]R%8vcx͐&WJ=aP,yIM/Rt갟3/ IdL2<ΞrTO4G{fIy5ѳk) dCfE8 5@9÷G~TAl#K5 Y"}) +5GNV +">> e>TgDB86žq "7HqL-,Ib¸5#'o صuߑxu60d$;+} ;2tU;j2/\a&ԇ$ϛYԖ˝@} ~W +Ώ%Bp?3%J!=dScsС 0.+n E2 -FJÕL߳KEG gCeSJMm dVA + +Aʨcx&bV 'X_Ea/g: +N^+Gb=Òͤk]cXDQ2@s~PYT%w$ٖ  Y?v:ccٷ"qW/ ~wqnhZdw>t_ nY +] +t;>[{^hjERv<i\5V̽qK(@xo=:eYg&y]満<7J*ohg,&" Tlj;*KTB˖7Zchq#_^~I/kPt)O ;UJRxsdWX}Ӈ;UȉӶ]6A욧QMʉ~~y!QQ[!ggM=' {2ʟ;@ꥌEC/ &5o|7W6Mc{񵱏ȣϳg~*+=97' Ә 3ED4) 7hxvujAlxn&)#vDV䪚jQSND_B˕(qH +@132<MY^.\ğs4{{Bq2 {oIe* j +N[B-$uy݋ RK CkӿD]XSq?9?6%Ęm)$C&REair&oe/ qjO'(kFZZBW/%BvCεth *.Ygs &p) +9"fonbbT ?KX #ģ\u_.1R|O`{-˂QSe ++$xvŽr/Ic9:uTP"t7P-Y< TQ|#P rd7vf=a)Z?~ɺ 7-?\2UpAȟęڕ+: + Fż% OI: Ox/B 1/4{e:u9Wd !pl7;_d̷~B +ɭ2^PҔ&eۍ !ʁIz-60|墐T(G;ա AhIӞ4 +2%È{}M;A$adyȧϨ+#2πmA>\ns&"b9+(&r&b5Wi7+UO˕=A#虨OHFO~ q$'уq_;ڠ خqO8l7|[l˅OyJFcʅXY ) U<H!Wy5PK?JT2dԉ +a0}M&J.)A9.m|G~a^Ϗ1 m~l@"kh8pnSP8g|Ur6 +vČk?R+|ν[ĩ(٘;B0{(7+1Gc&A +\jt’m],5uy}lhKJwWSssAz8/8^bU +? ~h$`zSEhG>3@(P?_X,TZr玔U+P GI +y*:U' D=FL/vM7\z0҆E-/ +gnk9"cz¸mħ[/D4fRezވo)T EU5 FC`':$eDߩ-߽{7Pp翯_T&R3dr5VA)5!Ca"Mв ю'&)D rSNDcs~H(t6\W\L&`dFGSdhMN!dһI J,Mq@f׺2 8i +b< mL[52JϽCD7blW(M %HVvM &iU iʋeV)ו_2sNeqdCzP[fH}" Ӑi&8 fEJQbf+"/Iu !%g%5  z !"_~#C FT?mMdjץgV7ap;GZ`@K0,ȣ$=|E*;nZp} % /Ķc{LܠCZF뙘핍=B.e;J^₄bpvH 5[+-X^Z|>hF-:(+` ;;9$pܵ1g,DѦ#B;(׈:Ămʥl3+H-hpv,sVr _;K6j`%x|ii5guDk7'lZb( Wl,dQMy R=$MK, yCቹ_C8& +x4P ,X!l͊Ghԛϒ2O36ϐW$!PD{ܺ{$7&4ƭ4{&޽o{t1fg1rI/ȅ@,$QLTAج rG<;[Ũj ސ#SwV +XN{k?KA/c?t&(d~ѓO0:P4R{dc3b-HVI1!X,hA&@9*%dtjTmD˄Bٌ pݏGA𨶖 ݛMMW{ (OqίxB| + Ay\tVǫ!Fl@0#]KLA%"ws.maD  i9(xbh{q3{=r[4T G8F;8k(wld+aڎr;"zIX_+ rLnMܭ%hC~ +eAq7(xSoTFsBdc(xc+L)]:QQ\yԃaZ)guSBhNސ/;d"AS#R|ll2$.t -ڽ'UM)5V<}/>V(@d1G2e^:#op|c9Z+Xb>!)E77"Na\DŽVz@j,ϯJXvNl%Wq.+Vd7|2X9gUA1|w,W">fD.N?!9.&b!8Ge:f +,Kk6THV3d(D>9/> +e5FL7C+QX5XX!g6ex?EPM/vUR2$,lQg70i<+9y.k%1jи'-PY߲&Cl\bH2s8ͽ0"q~✞7 ,`-dJLݶu(xM_qyTo.ENRSX"_-MmxTK!O1g5D@׮z52:9ș,crSΉ/}SJ#"W "\Ll( pCvCǔS֤jt#)h,zV-D2WE%;VΊn*v +ʱl1{U~ɂc:VC2q^E>ZkۣH@aGYr +u& Wa^%_zGH`p{cG.ĒFW$H.AtZ T*+,|)dY^S$#* EXq 9yd)krmE>`@rkxۦ?ACqjaR+t%ߕcKrvyAv \mJDիjB*J +0tfݚ):aIvE1//@ +~K#In5%CpӉECev|?k +xZ/t<^Ǫdu(R,b,2.HtIN( ^M6J< bHSO-ӟ1pbޠ3߿Th/ە;Ãh/*A'%dZq5A{&h֙F߁ű%C~#!|W΄Db&vw=c .8/MF?ތAP]kP/8B( aPD O I ,<;AA.1ȫr(jYRϴMHcT9d +OyRRO%DiFg>;tzpgp""YVqv34+(yZfe A +ބDCelS$9'+ A +s G$߰_nȐZv#E V|^1[ vpK5]FۣKlGՍsb+ ȔLRPlc˘﫮bB„1K53x[m2؂Q0lŖ>#,ķ`(եđMlQ9'N` c@CUf]pqcrd.Rq%[/%WR;De8A*[3oSl\rۖ[٦qV[',O-F3ZPYKw*|rYة:M=U݆!'hhNU>T%4a§ +UM)WU$L= WiJSHUUw|SNUCX6O_c'6,,J9|Y*pŒ|,F+>Gڕ'1s:kF?Z=St֕:ƴ~;,B3~ʿ/8bыr:8o*2EF@n|\h.摹.\)qiցpZe()e.L~ gjf5;eDh@_y q+$[P+|_& !u(V^+Z +fc-߆6>OJpY(z%X,bcxXA ߵEk`}7J~\<6/n.czsuss|6oD5ZBt5^l-R&@7|? s?"T2!ר0~Ag \7{˥/}.ǖ) 6 4^H +mmyTĒk,1u:NȵY;Vv|z|*XXpK&Ы\J!KLJןulPuD\_L.|QKy@*ٸgr9UѶ.]:Ȗm'dԵ߽4 !9ehkBw ۽߫kdIoz\̞ G,֢?~aPK}Bz],.D`[8>~9V,TX^[>G˴ID˕zL'WM|r- $x_CX/<;eruIڽgc ;((W@lĬcعjlTlN`phc¸KjˁǼ{0matxI71MЈD(r sr^^XNjz}E*ȘRWpP|M-aiQQ' 6K(vOw"А +ej96 NWw$Պٜ ^Wjq^cJ01hx oYpX*1tҵB18aG>鿸!P?4T$&ph2],.Z |^K! p脒a)͜4KoZ9 :*w3ri!+z]!j܄/=s6{oѡCl߷"m? .xNRUޅ;QtOn,ŊB0K7esLC w5_Q0K9##ppJ,-o}7.P>eqn5a')_-k\C}H qwbWPsB%K7FֳDu\Xr9dvnŏ_Oqn=V6՝ +NP'AAM[j2-5dYx̒~ѭyg=yD^}ن-)n{3HmE'hA2\%b-+jM endstream endobj 12 0 obj <>stream +MIJ8WG+ޅOi $-9_@9Sp [o18iSBk-įl[,M. +uB]ѧ:Urĭc`Mef%~4V&;*OҏJB.>=UY{gQEá 4/P*zFdhYPъj_E˜% +aHU& +d| rJ#O29k>%ړ>ub&`szĚ"ʊNhq)) B 6a>M0¶_RN5]8Ţ1!e-촮=,lL'3 ma8trK +ٳRK kb<I)`%dtѥghA ,fٞm\#OƷHuGIҝFA#f7Iϣ~4ڐQ?CqT!F7 "5 ,`eo{qg7"2݃; Țk"\g% #8b5[;y;Үg=:N@ J(e\`B{Ή=9PN݀ +[8=+N/Q=ɓx@1gȑ0TetJ/kJU݊zVWe2g+t;hle>뵚U0nIV7m[hnuiT4]ԸS\q])y KE-Ӯ-FխI\Yuu^Z"7u;EM-==bYX<:ǶJ]^ҽI[l +&¤/Ǟ ](ٲ\,u** +`܄@ +L(5W06-.@ ZRT肳K(*s%99r-c޹z13&bnḡ+^U5Cpڙ`<DYk.e +Nh0G| 5;8 4i9WlB 񚲈񩹷X\3pZ\1Vip1x\&jk ke81ۂ1x88V #oɴ86 k0c *} 2:mlak+4q-<]qL.7/ 茝3W63FfdΧc,ޯb' .ތuaܨo{fRg; AJo3U> UN>K/=U=Խ 淣'2˔tj=ýi&I38A`{oAr{ޚQ¨{u!ݑ=OuOކ^ Pa)=G4}kڞA8X[ ^ 2bLV!c_K[܆ 6(ވD>ƆVbp 4?4M_ d*㗶K@$S{M-"E.e:QfI^z@{Ԛ["hj%^ͦzvou / J#[aŢ2is^&4b)C*IèI'EV”@"93"tL;Z1\_V˜*cM0w3 +.E5dlZ*p!ƖzTmpma_RJAnu0 B,)dW;݃ 0E]*@_`@tI.CD<˲l+cn!U\2=%1\%S`[8wtsDu&GsG חp)W8շٺ^$klI$CBN'x"󑦼p]&ѤuvQ:De,~8tSo Wݮ5䋀a~;v: +e"P\jہr#wg&a.Bgzu%JJ``qJ@vwMvaAbs. :z `n?-!ʡCox=8_C]ˊ7}$Iֵt"uCPE1<.]J +eÃ6g}CbV޾ +ʶhM>=b5\!J7ٚw`+zuµZj+W}SӶV/dm}Y5n.ٽM橤컉 TzD M1N7gi`L Dl,ݓMmB4g !;0+9+^Q$j` \ʮ#)KwcÔnz [Q>h:0&%ӰiMJ@mv(c{Q3ڤm2++PmU*Dml>*+-Xܜ H&]=.V%VRTDS$+'\1:t`PH+@$h:uoJ sݐ~<'Iʳx;])wB0-GYnT@oŠw,J==|t"y\C*Sl-BY 8B}ǹ6Í唃@7Po1\#AB$LA.ZdBqt +:TrqA#inliү^DL~g3+|I,Nq_E VMO15. ]3; J iIqN# .{uC`BUM`gx&B^h cRɫ e*)akz ߬r)h$RoR1(TҦNu%ħ #.$S&Vn?M8)KWRIadVDk"dOv'ȅgT{L9aRu`}^>t+'+ Au΢\ط4LA9HAAo=H]K/LrŠ)<*)ڬHsl sX3<K Eǔ GNZe,g7mƊn~TD)%Ϟ$U0t]т]#•ݞi]\PVfqFC6v|wll)T C@*іop &r!:ǚ`'ܠ:9a&֡DxYPYVa!b7<~‹\r6qfqUMo+NV"/ h00ŝ*`ȼ\7OKL0gWʭNZ#$rL c$gSudˡ(0/ur swr}L~Ex"̀bO* 2'uAܫ iv{̕t#.|4gV;9LBp}gsU= b6KHm~*m#{HMKU^R>nt0 +uP5$0њ)FߨUpW1{H<}DCƒ}*R4PW />F>rFXX'&b,Pm Wn Vi3fË=uzbZb֩"x͞)'^<w$L3WT@нTόPMOcYݷ&Y?-8l-opw +{It$N=>k--Fy&٨T0*ެxʪgxG"),0ЂX3+aa^TY! 1Qg?D=S,x)S7⾧g4ދWTD$=:E)\6;L'c l39ր2%#ܴ}@ʉAOv ֋R;1khVME)w5Rck\CݞA`b8O)Mfc#a +A*6Y4K!U P-5v&caoJp.^^micwN>m_&)`3/ԿħEǓа}^`ἲC丸iQDHµnm4~l~giy)aeUX{IwC B4.D x +ه+ۺlcǿrxn5kw"M&=sC޻ d555zs څja7gk|q~]Y^,<@jܑ=0VOH*h4Wɭ Suk[$M~q+?&R:xsb0X"8ɍ!ae1 +p٨ldh _]B/\-UWbͤ 6T cB h  =Q!AmV- RU`x 0$|꧌o"N b;soǡjuxAGPE9еjn8!8|i8 šI!^?v-t= hS5/ey +i8| b_O~,8&ex2&6J:oAHהhQ](8ٷ=/2s;']{ҠҼ (4Е15aT= nhn!dܫr79=g-n5 $~bBSd P]@:Qrf'_(c(dOsicK+tm.,0x:)+Ԍ]sbKv#^] +?P+0H:nmN ".i!k^i}x611Hɻ ؠv>F7'DUȊK$Ѷ7f"X"t/UFﰔkp +RE4Q3_UyX +0e_bptbߗWH6`i8zʖ*?w5 9#Ce:20\scի##0\ֽȑO0jJ Ƣ]v?%'v +y#jHܔd˲H2p\N/"]6F8HAe^Ds*O'~Y8+gq yE H6%]η{:VdĥMe{J)⥮+<̫J] FG)f(rDBA8F\ qVr`^$<. %,$ɋ%:B8p)mqrku)زP_%]\kC `ϺwwEDlܩ׾J:>)YBĜHt87WU5|bC҈>s(&S-Y۩Bکw',fO-brfJ"*WNL'bwKtKW3鬯&BCh_]"=HN(ck8K_\/G L/j8+m2ΗGb66(2cCY=OZbX"xHL'b4m»bǟ6uKIEH:N\bk&␯ZVtU3'nN]p5ro*&FY-A(X\B2Nx@ `\̉BE\$Nty/i9F)'B5.3$czb9hgYH=SKK3nd+X\"Ѿ&b]cQPEi-vվҟi)oF*ܹGtj^wDO^BBAHUǗ#hK!VDb2L|"[F-)l$e#Kxud*8Ģ9c6CCz_{}什R:_ÛXbuvZkM.ߓVI7j]uީx͜{jt#3kWo5(^ S+h'M(ߒW,O92)Z(-OsgܽglMXNfȦ`]&V{r-jG ". bbǫX+a}pȪciD^$CܛG8.5қ!baRL$N3vބr"rNfhriKˑF%3RaG +RUcS O2jhч%A[4.j^S>N!(EKny$)ǧ(M>b:ݳYgӨBN2+։C>ʂHUiҵ*JϫM\qt#ټHKLD}4Gy#".6Y$FjL:Gt%)+ZnkV&/l& Λ(ġ;uH{)&tJ5ZlT!-DShk( ,}9$HD"c8d,Q2}(hdP " e$ӥ*l&H7Rӕs˓',%6}!) +RU +UTNܐ.J(fjcLj6(R<󊼄mb8bQL< Y34E.p+d{FsA2sf1 NqdnZWk-#^|-^Vw*]YdUذ<ɒn*GǑO2~λMAnDNl%̲iWIiy8GiNJ{B9_oxVZid7Ռ;;;G'%Zu,QYYkE_gO.yNu[UM91(Z4lXFR#~׻ EĴ~J'^%%aC&ZƹDNkў/FOl9/zfDg!/yNh'MؐaK*l-sd;L[1|!)G&ҙJ%Z%1Y%ߊ*yZ&vaipMV^N*Ӽ'7$ZWД*x!Ehx_E GDE ~ Y;=Aj9I5i0J83q0R%7Y5n[-?Qwq^*IԶP;g4MPe*&"fT/Xc2MVvHj|1*ɌpÉ1$ /"Uy63Va(SMވd&nȔ*d\gQ{HA^NX=n[^XKڿ srrr)ibSLJyIRyutط"iVZoڬf*,HX}'mljSuaDNY/mBc$Ud*D}߻6_ڍ :BeAᒟ_%0U˕!CC"3E%WDLFq'Qٕ*㒘0(zFNEp #B*8^$8q DJq$ckp!$8#HNFv&lٱ5 MV'H8ըU7ZAj`">CB1hhB ]s/ >HeN$Y wجAc}|@A^|Z߁>YG?a|m|Q[ 9W{ Z*Zܚ֧tybݞ 恫O\y"+A=]SƃtYx^A"Þ;f<@D0b Ud뫕AxPmE[Nr6y[ FYAMޢPꞯglh+6 \0`xPTxI{?_ >~Gxњ[o"ɇ[_TIm}yf[}0V3iֲ}]sxxGe>N7Tω6ڬށ]wpQV,S+k'vݣ?_7ցDu"۔Eܨj:xC@ :ElYo/i/툙 ]j*{rKr +d%6qxQ8 3NQ:L7@ jW70B((܀r' .`ӳL1#A26`^&k0}@kpdZW?]:4P48𤁊Ѡ* C@N%3ɪ3Xp  8fpGOk k TZߗ2|DTPYf#'#M!qc@L10HUh})>1 @F|X `a?0Hj0Ȗ& >0b CȨ}!_00;z{9:(j􂊳`d~  .hȑd쬏90۩` h'gwosUZ_f n޼Z_H4,(Z_x"o"ObRNz oA/zƳ o}G\DNz uӽҺX-Y񦥗>"i~[d,O#X-OBĵ%Q@ݲ ++lZc냣Z`/,- m}P9O|=>kłdX ,S}7@쓮:+;+>i`9UUh}*0;*A[B)0w;(V&T$\WAޫ +! DU`{z=q}Rם֭oT@Iݖ*amb +Tۉ** $>zTu{^q^<٩H;gI U\sowIUeNn}T.vx>q9n55&LR > +dCW*P񦧀\S(ot( q}+w +L>3Tb~TreJ*/X^ x`f0 8T$Q61)55wRͨ{`%&hFهȧ^ԧ;q}v bg}?\/S@g4o{X¾ 0A6¾{}>}3 %p.L~ +noޟO6/{ +|T u倻Q7 +qCQ@ اaFv +@hS`'mOֳ(uݧ_DX;J +~MO wjAVn~$H IȥBUR@ST(d? ((8Ԥjc¾BA tLm~`i +TΟT(p(@Ou6(fsQwO` <*pD3c߳M% Mk,47m&H& $*d׷9L%Һ/[_|,j%h/j`or7@Na >:N-c¾nqbQ?@w[/=_}#3$ġ6aId W:P>f7ȞlW!Х~MNx¤P@.,8%Xr:8'_O, Abnh[t@l4uh@)5fW ``|`qd*k~@-84a2E=5~( <]Gf+4f H!}$Z+ڇ}(̙}c¾€'ط\002|=/; (Fu/:sTO\ ~w dlx_? y_NW'Vk +,`?mw)`G7cS@>#RF(eְOn\( zR>=ܥQqJ@(y&[e>!L\e syX'ZY%8`$`nF hXFFEfE)hqA Ptj L)I P 4@#p /2}[(Dᨏ=z2|<`"|\uC4THqQoQ Ev$-] hqžeںKPH㼭1bo,%\x} إ߯"OO*f^~ݙ`K.[iaD4@ 3{35 >+΀w([(m@aTþpWEf~>kĜPgGrgM5d }M!B $P9.}un7f@J nи6Hf3K3cfvib\R!AQ3/.l(>̀thP"$j|c6R~DLfz7|"ΣQic@GNFj@Y)hQHn00r|j#n?`*FXz3dJ. Zз~g]Y2&196:5yԴٴ,@ܪgX@ Q4t vzQ +/k(Jӹ +h)$W'_ +g@malRk1x^ՌP*o_zK8}c+6M zM8ux$L@C QX={ )U|6֩EX Sޡ#`j E@L/@C7aM˳vᛂt1A p]D'ၖߓx6iҰ{(ovgb$x}D9_P< Aٚe/!E?vNRBlFsv -gI|tE|91U>g+d}pd *=ApR-]T9dK:LDŨt? (MQvLIDY?RGk6ֵH:ˋoՑ"L7Ŏ Lw)YX+2vQ>KfCyI&3ۅ?^2Zl[e߅QH~:fM%9 "_4c7yJ(ɌbKMrYEXO:յ!ba^TKlVI?`jLj(Pv y^*VS#qّ=mtB fW(E|=D4P СxECt@Aȣβãy @-b1rƇ\poƚsA 523ISD?G'?B:1O}soDPiG9e7CF'ȬP ++Qdu0b>\b2*fJ,+'[gB%)ѿn6uhfXπVNRcW=/\T%P8$ o'A4T/,܀@8"Ze@j L?kð{?7o p%N(Qhhw:Eˋ|?ȳQzmGTtBgߣ0ȑ8` +_"vxo-o/ǃ2o0aUqĉkPic0I"#:uMhuKO&`D3#RK PKqep?V ?^vF9BEda]ڴgWޤ^ O&ԗRX*PX]6_QCS?`HF?x: +,FMQjBͻ0U `H3IԿS*O Q;G,GGت)}*netɬV;&$직fyC>;mJ nOj5ʌ[hF\Q4 7bOAIQ i8(lJtںmGBE?T3 zIŒP4E˜+o_nCh-e5IU]&k'_&'pCG yNGKRKM!mo߱-|5rT!6Ħ,欤MqU R20S|<5g6-{2 =WcCU+vuiArʤ1*4QkoԈc1aCSruG}_h !ؕ)O/uQfև\'0?M@K DW>ҧx*jwQv1cM +%Bwvb 5[ֶIJC5.LRu,1MfrJ6 R5nX-5_?O , _ xR zHK9&@/=>-a&I]>_g٦_ 뎅Ż߅YQ^odr&sG76aW\^II  zF۟JpR>Wc;_۞rp$3蔞`~ &-ՇGRWH-R?\>^vccqIOկ?/8X'dBY: +`bkagq[ϯbjܤ\Vm~AQU&0R3UП׶I_ 3|' \LT6<T-|=gF[Z$%9?8ÀA|QJ/ +z$$_~;KA3( ZaB:)SHQ6#Bk$zIOa-8O|̚SЎ l +A$/Qyz_;t=ޯJ4qwn Ŀ?'e-H.p yg6~ԱSߠƗ=?vl2 0 "c[~#Lhd +2Kio|hGxϪ{-Oaޖ;[kM~5P)=[}-Vpf{\tHp\ezT+Pٴ;ifpC]MqQbj^p?K'pPƤ~FAFھI&SX}lq(#gkNЙ DOd?Y~XotBig?f IݯsfEFrd*fK ƾFxzQ +Ѫbg BFBk*}SҞR;NR%յb?ܱR=al⤚x½=)&U:_$Jyo>(>0 +$c8V/#rد誸?BڈZx. UFi EϖGгf_ +G +P Y!N`?>ƘL/~wCYYS9-j4"SP,]=%Cz~EvmŊ˲-z}[dsuX;Ʈe^jO$B9ӉUz&+1e.o?ʟ:2E۲r{l +C:D,4nQ'#v~vC3Ftygi}yX~ %B*+ā`1h"1>{ٺ=)d_bNJX?a1~U4gWcaتӸ> F1Kh~Lk6*p*ĀS_[lbؾJ\Dw9SXIx9耐 x5_ꎲ;},rN~(WNy?wۥײjcׅN#U~7spoa*o9,!giyۺM1xBG%'—Qxt>P*. c +Wq>bO?Q^Gд$G8=d=}6l|xH˜>7TuFb-3rJM@/)eZOXj3)vBRN} Pq"0U&x=NhmھѦUWC6` Ytjx>%@Tb ĥ<5}*~NKSJ!KLC^zXv2k3d'w^ىS-t5}hfЯ@4NH{sˀ<$ϩ{u,ԦhJoˌ#фD5M\)J,YZXm-ަqqqݦWj>7[?MfGь;"kf*?1BMĻ<;H7}jзeu3j0xLf;v2eRѝk:`o&wIǰ/7}k_01dosC0;8&JX9so~G-ONx 32i&dsap)1c'/*P*ht%}ݙ];-H5lg_$~j[&ޘnM|O'3D]v Pa|DTT~74 #j#$f|=Eg4S7Bz柟&YoC?KVf>̳"hyC0̯PГ5(˗onX]YnS|b;pY{^PyBao=41¶*M'_`ؙDOrt)s9kG2BOI(ސYJ27Cspen! `2#<φzc1D]$T PCB tAsgDOeijpŖRV)afH^7^I"ZI 7;:SkV[, ?=7g45}t|uC|kcҷhC}6-43Wi5|<*5 _IΜcZ0 +9M45Ƨ0H&|B m[ L'3X~R Kut?e~=Yv?߫حr=>d-$Rm=BetiM۾'pdKO}%eoCo|Clk.տ@ul +0R# Zޫ՟Ed u!Nj$`pm T] #ӿU-H, Q| K}"Z{XAS{S%L(9Q{]O\2I/tqtNvTгs?]ؘѸs2bޱ !D5;Ww +ki)Z8&e,x o3f9Isӷ1)ӵg0oo*'A.uL-X,Uyz;v#íåz}3!(vlQ8G?7{d]x=5Axm/.M0G*۾EBؼz+mϡ5?&ZcdB ޝNF* ' B>T }< S[\Uu~xg]}lf'hSB_ڝ4hx5 G.ܽo Vȶg%k`^Ll{d9?tQ:6k<1d\".`Vu+_ɶWwd8Smldހ}(k#p* I1a?̶#C$O`Z8D5 6qxrm_|ŏCa`GT@u澕-R^񣉔xfgԀ %}q#݈H$wb9S7?`"+l'`D1`۫@z-!hݭY'c}O^`6t<H\*贒\\ldNih^{0TTC5C\\{6e@ WZ%"Y"]ڜoa^ػ"5ʱ bk>}Xpzs%H[~cS=C3epTtJЁc wee+aGtbf;컗w&5v}찳*or!m0s`G 'Ҧ*] +` tQkAsv7n4 ϨEQ +_(=tSRsу{p-b>mo:76NI+YU ؏7좔 5&8PEgA2z ^ci`/l$C$Y0-K{gw•4ѮD^(' CA |G^ $!Aw>^NŌ`_kF?6h{h F:Mȍ !@0m}|$fpmF# P/R QnEH({SFi{=v %WC^OPZ=]כޏ%m _vw]/U0AtNϸ +\ֺD z\g/k˶9H0D')Ioo`qu} +$}OQ}ʰN1 b![m*ˠ7jb`npߢosUӗS{Yo/\e?®"Ir'fpo+72Į90C:Xf7-".fߊn/ťrj$PvX*uaׇGpڮsu;x^Ä́IZ)dNwA,@mC83dzz)R4{ 2E|jT9{4$!66z73̑zW)nןiiL AmVaҰ;q@P'ډUSZu÷DڛwJg&\*i]/,C_e?zߐwт_hntyst| /R$?1ܻ=kV-)R=HF]nid%!IͰj\+eP!x%o4D Dw=$ Zu" +ToF\*fb5ɿ73S\>MI21ӝ/dR:Tߌ1"_X%P%}k,/H(/֜^di)ۜBtGV Z[// ![z9`w7z7g)oJR4=H +*qYoW{P%V֢Z 8A^ehWT +W?{Rd8X^0+U1!Vlk5b? + v9d%3 SlbB"E'K6TDHH'ٿπ ~ #^>T P!W>jꕎr ꛘyreu`,v38nu,9~<+cKv8zE툮T@hx@jj!bw}dV׿2δĩ. s҇9u/ ({U%5ʪ/(1DCB>OR #ԣݗ dS πuA6mgle5H`>(ڭ} I`G{%o/Č@V?P&"``)Dl=bh>N/gFӟ"wCa +B@%ezʤv;v>rueD˧JNt7W_Ό#)='Qzq&)N㨒$i"=$)bqH_MHf_BǤTBDѰ+DO+sM-8 9>Ga'A|憤WBcpA΋j6GdTҢRd{]HBan@O.cXSa?XlO?OEgLy,,1`PY| sNrǞ 37G"LCx7=5B?vV}GNN"3 Q+!;tG%rk@y]YЖUɇfJڈc 𛿱R)"ZyKS`/ tt/i,GQ۲Rc\-@A}(Uñ$]ӤI&V5p7^T@c$ڃ+GyOy? ʍjKKmT,ܸj#ZOa$<9ʹ/Pc?U`QǾ([PCMqtkŵ20ć+&tP3(P< +ܧ|bVf)/M&m#Y(-k!fRl9lO**'@_HKi%GW 75<& 5+vw&rfH^ 'BL fL "܁+5 '2.!/|3]A|MjP*Z] +0+Fj3̼_(,o 񈾥7K]EaIx;{m+ռRRC-J9HxOP!'olPEo Ůxv/dMr+x=B7H瘟 ]x 0R+"/yXU2OAE7OmU>ڛao.*~+ {pgu>hyTAHV.#v9|ryᆧ5)5ey:,2OlI~-x4p\xN,Rᴬ;DQar +F՛@?bOb%0(BDR$Nz.kH0g nPk9(rW@ yEB}=4䀋:IxFb 'Ta&1rB~k+P?+WyGR1/.H=yob wQ\=r45}g`!vxNCJ{hk<ߡl=7;wE*?גH =F&bxٽ$A=}+?sS5.B#{Hry5ATu2"AYp~ soSO̪=x>}}'L[{bB7^@)eW&i%QEjnr^kMmy6ROy+}ub{;˂k&:#~*Szxw[{sd،>x?WFOj @_wGa+p˨xyܽ5%v 9`Sfe|KUbB +.UêT ihnK8Fk>tSlEztkxPy=^(mSP[t!H"|.͉A4J0بWȰ+hKU8ؽB#y[Q|FC>wY3*bСq(К.u:MCj!GŠ0 +A=CI;u3-|-1%ct`g4`'=򸿃n1JtlLw2 +|_7\R5sJԯ+-tZ8=bؘ@ƥTzMnGs$z=oRRUީIiCwmrzD,sCKwBTSQtkJQ4#."2w͟#{uto QkXC7r=% g0݉W`?*Kq_[.|-e8Ea\YO]givX<$#\]E fSU9ݗV,:,gO| +}ޜN*ˌJw/5 Rgӫ<rj=(Q^'r^|=VU?:ѐ,z;)/(݋oL PWaY%œ-w dX}(݃KR^r((0:U." C.i{2;iK=k+݅ɞFP)N tςRe5ВA[Dc|˫z4^OJ Ci$*ĸH_1AOS<",Q*r?%2j5P^MLLQi*)j(\&zzj| {i,#ǭIհ#јtj찟*b蟨oЋg55Sbr +ΪF/Yl +A-p|BgjL[ y- +Or[x!i+ E> ,hL +KH1UQvbLa/I/A(p8G^"PJt ɨ݁3nY/Ⱥ3;Owɮ?D-~t"jxH< լ|\XC(QQR9wkE4Za7As5!\Z%dX ;Ǥ+__JjZ3?γܩ=6D!@? ' dI31[Q+a4ҤO`)K=9؉D\,T,4@d\Sim (i.E`?$ڛ"s=bS,L/v{9NK[E `8Bhs^.u]#4 Z߽?˜61PlQq?ӔW <:7>٧n܊Lx>F7as/2kRogسR w)I)M,d/!jQaQofho'ZJ`h]dnp%Fioxΰ?0 #|]N7G؈JU[Nߧv5"kHF\nw.G;js₉MRZ-V@<; td4 @  bfၼ2<V@xSvVDNY“P +}NO銟KD_8BHzofSD|zb 8$^mQW/5gx`ʀym&90gIo+51~$ =N;#mЕ{S NN[{$س;VosϟSoJm@Bu_L-읱Mz4wv~X4qr%RTFjgy"-#<욮H Ӟ`Z;SBiY*ȿ;$\?Ef!d䊄N>gXcV aXM:\p|~h1 ?*%$bD@iH Wߍwv_P#Am]n@j?ŏޗBAQ +S 2n9_ w,9YQ&%4{=)* WR9'>}d;3 I;+dR?L3ij"{ ߎj:.8.@ +,6U v dDe}_8ƀ1SNcS@&*z%$y5ińs'f_PE }''LiBI[}}nf,]n~Ǖʢe;O)u#r5x@Jw/ЇVφAT!ӲZ:Ou%x%UN5*f$Oq?p#v>K?AHaqp r=IOc7ppkT<2s.ܲG ufXn.ycAU<@nŃ*E:S't7,Bm y43?ꅶg5`yA"CTHAV|+'4XbߒH#C +x(~5gxDm=vUlXY~i)=8!3CR<a+ϭ &+OC ɀ.p^NVuYDhRgH{}?.WuV":2F(BL4u7Wyҕ-Nc_cg s3$(^KTYk<2ί>"* TuUy)vjU VmAtIZüVU7$'¥MxP^a.$霖zO̒nՀ<}٥gčRǷKP ԝ\0M%ñqb"6qg,yL"%R.Nl zɃ0K~KHݒÇpC$*{BQRA*{aRmo0!Qa?GtUU7f;IЧ_-)}1bIQymW ?A(!JDLX2_x ="TU/bAMz:8)&1Y,n@!W7X= !C.~39oѝ>Ir@jpOE\ܟga +j(@+k4'% Ѻ \EJwhʥJiy#}BdPRt du>Ҍ dBD^ċ0i Pxu*ԅ*!cEfA@CJё A"]gP%s>hYtM=:hi2I|f5"q(R@Sút=[nSd=N-Q"vĆ[&X´N\ÂҦ"<'0Z[E+m3iZQЧ_ Ѫ(O*N_EɮE  U*IK嫨,U(I&_Ecܝ '{= +b`k"iDz!>9^(xUxZ)O@\MNA1ZP4`؍.m&L^.Ҙ!lvOE/3RӇ-_*-'ؑ[j0C[(㖱k.byiڍZ%C{7(uj;<^"F[zM +Xɼw G6E.+W9TT߹ci 4b̨%;˦Zhp+C=@V5^ao*y8:֢]@#GW/&Tdꘇ1o1;f2 +E9FGsMn=6Iߨ>envPo4eة[ԁчE`|Q~l±ecIǦw5)E& +J.m$rp ٹN`b[i!{1yGFIт +&CmT;q}q#*27:6NfCBˍJiCC\.lMqIn$5a%+H#Bs97Iaep#8p_\$kj+ rmmO?ʾ&〝+/F2Yq!tMTʜb)$z'6rxHbƽb"$Qce, JkHꊗHPUnkz<0ŒIž+ұ&KC(FR;Tp^;NAk5KD%2kjrG#S̗KF׳iB G#GpttRj"o[ǧ?G#qNkGt.j +dNFkM߷{F,կiYYi DFO|/#aMd 0d iRnd4 +M38oMݬLaGG"ޏ1Rr" H#PTF?HA$1rjeBbTSq:ȋ!RX66 +p_$ "h$p8s;TykM9A)J,A]RIڋ$0E;!U'NRť@% Dٞ K$޿T)DkL嵃S'Nd#,'<[="))1I~IS\ 5g .``**GwcYş~ȶ$I|a]'. '듔E2y I4vZ6)IO"tp5j&Q~4%QK lJTخr$vrֻ f\M؉+y>%PĪPEJ.zJ|B@aFc N:qKԧ1%%>|t"i3,ȫ&\G$] ?K/&be4C9|YEYZZ7%-)][e/kk׺y!( K.i;7{%O]Rz3TtI_IP!($eqPIbPa_RY[`}T ̩:+3seU* Čl|_;)jdokO(Ms$Of +%5:3œ_YG> +%L3-H wDƍf/*efl]+V,<_s +8.;y.:O4jdas!5pI>*іY!2EIyg'3b{%˒yZ]\$S, +˭b* PT`ğI<{[]8H)%=DWɔd0- cM]^ȽV#>h$j +>^~a}nc),KqvOH=R?ŏkD%.C;>%1'kK',k9)~ Ln K4h_ѹ*-K-Wz~ yJȲzQN=T=x_AfR +(d4YFޞ>9 +Yj/t4gbM {I(,7 %Լu.Y+h|5tF4V +0)Wy*`HDcڡDW>fʺ=ei`zvGW:5Ta,5.&L S}hMG u'G\KRn*f= +mJH1U2LPWs,įѹRy0)^rQ`!`zWZjūdaTK*Aɔ.թ4Ti )b%pu-Lc^:!H"N,L_,)hbf\Zi Լ^nW?[gh_PK;j"(zs{, w)OLkaR*k`[0R|IV+L#t֕` ~r_ş{q-LM08I&̀D7w,xʖIS*kG8A@w%e3 Lc18&zc +8sqTz f[+ŎJ<};KZ`!a2ٿ[bDO& + w\C Ƹ19(0=;0Y_б/[LOLa |(|1Q>wGr-6$"ãń8`NG6tbvC,}R M=DQCEژQ-⪤""(fS٘g&fĞY +[P CgGZP$&b5V= ^21Xu/|Lg8K/!|UzǴUe,Pru/S3 +oECAqy>`tP1 K + {LPF:1}f0ɸa:^)0xuƮK>RA=ڪcj IJl6LUofOg:h= ֍] gLOEӴ1ujz=t1 K]E^|z +@Mw>Gvao.vTo2̀df(#x*1Q̓7SL%{U#&\D7#ŠB`3+:Fvqu/.] WmY;]0]^2=9,þS g + OOe\14Qh='Z7w)Ӟ[3 GelX^'?.@8i@ÏwH,T|TZ8#w Ex3֑LاYsH&0Y~TQWM[(|@2U~ޣ 0=r yMz ('" -J>I8xGWw."{T;=}xeRHɲ iO-`(w=ʧvA)V>Mr`qgGѝ9P'inl0[U;P_;ʍaV޿'`4nd9܅!I&ӿ}#'Nrs5*H}"e(T9ԟ+o)-*Pcꐙ)#7Rн~?@ROCCnXAyH Jxst%ީ8/B"&|;+-0Pԥ|VR 5f<puEYOԘp,:ǂWT l5®.%S% +]RI9h%LtX7A,=a H5c(őbUI*>g&Z# Dmj'2T7ߔ҇EyR<˩oeNC-1sȔ-cwJh+/M9O1WSwQOiE2MMmq +)e-OX23QЧGLz!KޔPQ̓!T"޽#9'?6F|\E$4eQ5 +"x3X TQ)YT*v%Jϒ*>ےw 2R JE_yWk+0OlQе U&E]Y)~ŗcUP;/Lxp{QTdEu 4vn ̞j uK)d'9_T`0.O /ދk0u۬&=^Qi8+U pZ! m. $oa Dlܧz}U)_%{>6e2XLXMH%&6jԙ㵿Zv^@$a00.,==CGQiL+g%ݗF?"xRԂ0*fJaT!-7Z1*eJ]2mʨ,c?@PDeQ*+^D2\)D^gio[iT`ڴETY ̰n<7l +?n 2#1iSqAFeVd~CFn=u} S.,u,RDZaT欍ĔabosƂ[ ka#sQ!.sjfS^ToTRPN$V3 @w +T|-<@t*#u6 17. &0jr1ŬZ9Njʠ:oU&` ^T4Lݧ(8vxTK*,dsG~B$ #o] #CnCzBdQeJ\Qq'wdO"+VTvM[T-}QUb!Ĥ<Ú|n*#TZx#ŇL@j&OF1?1{3k}p]ΰe6ȣ/FՊ},H[pvbTgD=Fu ++UXxҨM]RZq<2]bT6,F[U$ݰrC +GZ,q1DEi֛c@~@SX翈ꖢr \U AшbF5FqIQP+ rF<ϨyY fTSbbGȨ"gY1qx(FSL1k~a?Izgad0w *}IדH9 ɮ*hW*ܦb)§N,\42!891SIrYFU UzĨ^~(+&2Fn"'5AIzBMcT!D ^nͶ4g;C-FQaepRFza颺N/ g.r[<,+axͶbC]`\T$.f%JWB,-*@+U[*P͆8;/,*^ČZ[ GRUJ,6m!ע$_tMZݬ\-E8){Oo8JLBj." *.}+)z/+ +6-ڂ,)*5WE59%~c? 1U{Af߸C isUQ=8TT̗fm90TE`rtU+**3+SgVQU5O ANEUt`Io8U1 3>!Em!O6+Yfao2?dh2y0"̕)1 + f)'*pa5 +g^ |1Q6EYS`ϒDrkB[HHT8ʻ$QuRNƌsr-F{. HT@Ԙ[(ip#Y+%^" AɨBsdy#*bN}+!݈!2OET.f=Q*wda Y6mTib~oQy/^u-@8 CT-R)l:QuD )DN$`߶~Y&lGfi";"2LTan j63Q "$8ABd;P_O NgU/*LC6h~,ы$@5g}"[){ (}B C1)jG+.EG}t$ۏk}2D½0sH`v',s +ZX6VFbU'RDT]?{Q6ǐ"Qj?jQMJ.LGqU u(%9݂8_;M p\75<"*(||QX$ET+t"%CD8+ 0չm u,DT[ީ6ѡ`pXZ7"*$Xs $S3yKAD[Y!– qvSjAD\-KQLojjt^-q +_`!LW6*ZBZQ9اsV L MUفrы*58 [Q(0#>ӻ/__IĠ{gDp]g|QNϲ Q.Naa=GT)2 Ȉ*Yp̌^q3!2V^= QGqx! +|#l'{t:t zvGFTz`>E3[d$%U5"ܔid" %"0X_ex{)8]bgRDH UHg"HӃp#  !<&Fa!Q'8,\a Dx6^CR*Bl`'(aZ }0Ba᣸, 7&AKdB{"t ), +#cє|\.ŠtAN>a;i)0fBټ.{ɬQb 3Hё&OXJ&*a !(D$tB*޸bݢ!fl<C a vݗ v#ft7CݏӍ#|4_TbztD.X"  [`xfb&~"!wuw!?l{84+!,q\cC&2/ !2i÷I(STAؖ9/$bFkfn׋!]\?2aߍNqX.Y9!72YR+t\/jF('NJuR̃a~3&ʐ0at +E?NG6d.òV#-LzHƜTA {=+#ʜؼٝ,KkicٜQykCT|"}Ж>9/Z!O"/gعqJ %zy|JT"WZC %9*ۺ4'{k.hT^cO044,UUF!(!:4OCݗsה'q1 ijG$0U">UtXTc ×;Xb!?CP/'ŃaOܧB |<#HHlFio _OTކ24bSxiݪyxᏥia=La-{քlB4XF;+?'#Ru6 +O>/4&D SPA + wL(]%ŠSG +WFoD e6s4 F>o +QUTRYBz!hlTh,&Qdӻ6Q uLpX߆p2i +# mD? Q>9|pONNl;bI2l0U {_4H+[1$fd ThB=\L@E1'4~3jasJޜ`}.R捆]~DE\GM1l 5!0ER((_ + ?qbџdS1x%̦4"[]?$ݗs GG9QtP_ArS񲆗Rnk&nD*@UrFC~KlXEp=#k#sF!DᑋT'0Hs~Y=ШD򢲖|Fo'Lû>Lo_o}@ c-(S}\9/r}z> =,|>4(\ao}Ob@[ᧇH.Fγ64(h\""N!Q0\Xd wFpBV[N@,ׇOX\qSrU=,Daa~aq8 H/gþm&!Y0 82d{XQ+f׶'wX.h+QgI3.50aJ E/}ŷI(POc Rp g3$u1ϗ/,i^maa-IT5=.JܰXI FŹڙ%|V >ܰH+Es?,1DiVwtȑ"tѴdZ0. ̿Raq0 hAE#pXH<ЗM,|diɒa7x|8S](Wlâ!0"$Y1 npQ Ux:,^ƛe1=X"uJ: $Y9:,##œR; :,iBZiBâP=nbX`,?c0V,즿%k bZacAt*ﰘSiacce@+@&SW52IS=,xfe#}v|5>l7W *vf٭ R +/׎sp{!>G;^D+'lI7ә!ԁP3v b# Ђba&ZQ}0ҐҔ@DVHc!!-S\n1>"Ma5 e5ImkV@~ nJet r5Gk EbQG [0e|/XK +yi-lk6U ^A9- tIRo- ?[ 9{b}SoFmтXh!pq 2.>­r,UgXJn/{׃'%KXyR!"Wfda:JXR?x9-& qNX# l:nlw1/Gq%(p &GVwba'C ٭WXb5W¾<5xj[H"*;>FE +.h|ί> +3ģs% +qP%MU}Ś&v ,>9 DyU;&bv)Q_LĂD/nM'n%3:8"Fh5!)#'~*p7ۀMռ bd+V ".!㌴rЄZ\'b *Nb9hI^ӔDXpb҈*V0ڍuZ>~|8B)Ser8V#k&M(jF,.Ǥ "-%Z2 $N:!#\-o")[n,rpk>T$45È&bx;*.Ԓ`/(j#\] ,XDiWZ8;ErNkAo1[E"Mvg&~1#,a$&,.<o/n +̄ЍC( + Sfp߄, esI %Jj'p^i ]!Xa"+8dB6 xp>vCN#hLEH a#M#-aឍybK|تVਜH bXۛrԴ zfGh a!d.>gcXG,%o[V +S9Β̺IՅ)DJb,sȩHq Pg\؈ }HH,`1Xtt|(|@(-ԈEt.Lb1 6 ˛bF*D åG,3Wh D2b;bQ.$&~@G,X>6dW@4W },( nj™@vA93XB7\.Sڂ N*[)@dљ e))w2΢ +\TUت9a:QJIM/dzS$Z؋$zVB1xd]GH+ 1bы Ϩc݈[hS4@^rdκ ͹S<5!ȐfTOOF,blW + grBƄ +^e񏒈:af4" tAX Д>@BE ȶjwf\"GZCxX&ePW&]o_&(32w0@)z-ȉXTDB$tt>5v`O>E,(M$0EE,0":(u넶~TĽ.d<%')ul LԦ E+y MR7lb 2F,y#ګ^F &#xݼ^X(>̠2bq;|r& bj:Rp+tꄥe˂3LA7bꄙ⇧N I-E,m$$M_%bFKfb:MvIyS'jA]krJޡ.s0ƈE";p臾1b1A)SedĢPTQq\Zg4 bR'hIO.2baO J ,MV3F,FԭVD0"2oFbw9ɭ""nH$.baҒfzzJE,8y҆O^ k"?';.J7'DndM8.@2!9'p aĢXC9ęb#s, xX@& Cn7'3RTRD;P Qd | c[;vq_۪`!f)bQN B"K[L~qTLBwj۴"KaN[.B"ZN N pitb]o#b;"r 5FKAb74e4 b!`惈EP*"% ")'cG!AcD,T^̬Z߼|@+b> p6Ϋkt=s)|MĂqd~廚@UmBUa&E,K'1,&dm/94tE,n([\z3ݼef'WBXh=V\,|?!!i\GA v/3D,_h&m@uY"ݡ0"t{u eS `i$&zC;AE + +ѣ(j+[F +(8g_3)9a~X_Qm,\kC@ؤL!͒'`۹N(L b!҅ڇXb.# |ppTXtʝ݂j1s:5?u: m-!iՍj cՋ6|b NgD)+7hhƜ%T|ʥkNycVlp:'u#yj8bќi5JEx&+@,yG/1 NցX,@OMg$тSYONbd%AiD_ooa8l)`&wKIKbxX@"'aa1X81nxh1QM(ҽ81_% Y+  G4EDD5ky3M5.L,r~PdpzX*LɌֆH5U' =,eKM`2R +H 5f;H|Xpϼg܏a^gd "W9Ae{X-.Td ToT GhÙć[K%s.MC_ :/0dE͍ͬ ?m&tZ5ju>-n)Zd bm'ap!zxJ7LLIbbaE\ܧ; * p)bGb1A:)Ǔ7H*#s#hA,4ASp3XgZCp+$Z wָ b%Y3Aw9;XT~M/6Xz`>􆻀Xh;-=@kOX!쁔YvQUq/9>Aj #baPzxFP:FQN6j6@THR`m(zw6CQYGػ&6]eC&;m/˜ &B,4"u9b<=E# XB# + 2ӑDIbAg-}ȞMB={'aAGf gu[ta"d4I+âMIy<^gtC#9ݩa1uqtanRZ*QO-Daq%hAHn G-D3l`oĀD|U Y vyV1Kâ|OθIm?N% ADiv_K {q:dA"d'ޮ*N0 aEMO|9GIbD8lICZC-tpk~aW9IhSGzr k>uڮڰ&:=X(6 +E+$uq*/~+c@"|@AGw@"$[tJ#i+? ڙ + ?kյ LbX4SMg%H + ɶ n6Â^ Q +(A"X47aq{Is) -aAiel@fg1FgT֜_INpJZ?Ѣ6L[@1GD)eu,^G;,껬X'`g'6A@آ?"DTڇE"'"K0'!d*T*?b!HDܕk{0KʨtSA:ɆP bWxԈ +W4Xp]uq,qŗ*"4$fimƼ]pTMtqD`+ܯD\5 +@Dt.&ڧn)DP\!߄B~aCqANZw?,?/٭$5! EQ׆"?,$&ry8pK.l)L-XF%fR"򰸗p5Q(Pm d`cY!B`3=4c:,X?laM`2h ȻyX߄.BCTb--{/ʐtN"|`Xs!E +WF#X U6NGEB_UKE)=,jgw|Q!BzY+:DkByET:,il|Nm ~h/u"ai~0#zs8%√sӒ{ ".3)u:ʟv 9aADSp9,`r7(lr(?,9,RAxE(5aa½|?N"ZhDsX`kjlj\pAQ(u ѻa0E>ʥJf^`mWM6 S/OW 㰨'0QW@65RpBlad@^TpT} H\A?f\C/=|`^yaqL9iiGK*k!3^(P +a"-B·"kaY]qhHLםd{i}E$7YݨZY8hC⼵!8(?ɸ/ū!P;t \-`G=. 7Udzr`.S=7ϟ4/1!p+TE+E1w,?l[5[/1AOk;Tbf?T•\,o-QvtVUB2lŷs-C+DE&8,[osXy/knJ + ,A$HAQ03Ꙧ+"#'g9lE)Xp=#*|vbc:a,Je0nsswXȱ"nm[,eUAYsFc<曜?:cӐ,  UdHwJ8~u;,Pb+P%xvX<|@0H]^9,{Zٔ1ūS/ʙԛn~_?@# +%?ȔjF8c-4RHR(2sQzN2@zV>}ZaA9 Vٲop:`VD猌Pczk}nXHK Wrh% , C{UZStF!3sBppЏR/F`p鎉QKN !?@. -`lY°pshr<j0,&װ[^r7aX퇜?1貄sFl(ivMK}Ŗ.,K1 sƃQl),xۂăg:z¸# /ۅZJ߅tq#x@€-V%X/o;+gh%(`a1Hz`ZЂMk("'4\NAljG,,X/;$ )1WifBGF!eTXږem@6+,3sAs9v`GϿ`|!p<tt-,` ZX^v~t9Ԑ8~e){u Jd-,` 3 fZ+XX;PE}_Nf89#[YYDmax'8Ǜb@ZGK ;XdB p dᙌ|[ 5Cd ?jsx OR$;rk&+d VK Jϖ378c1Ÿ {~=cXD:![ųZXŘS^_%a,j8(o<| ˁ4y"(gZ!a5 +8~?6jnXx&1jVsWqXpLiOc`ubhM<  7t6l]7sw1JE96K3:`/Ydk,;RAi} +Ͽ㊗N妰,saNPj/'9_5,f!~g/Rw@'X]>|[]uڠ T]9+E/ٰ& +lK_0gpaO$V2 +p.+tyf^,:3LlSZ?ri,} +tw 񆁬Pʖn*NExנ(QY#Ķٕͳw J˞BD +-uw !`a/W*x |d<~oMϐ(内rY\ĤZf\EY5h[&*ǰns3k0ݰ75ܰEl' 0قh7qΐ}kEHG~8,rTsᰀx?IlolYER)HqX[AbEaqG2;XT氘 8,_]LvyaqA~ NVY~enXlf1)a}-DzS@)tV0Lu}\h*h"nui%lXV1p,eσ4sNLOJ5nn]XWn(]CJ@\t%EYfSuybg'kLB_ ǫIpGo!2žzbfdvNߪ nXTaݰh'^y#ŧ\ (-"kPE, k\7q?љtu7iY;!u R@`XmXd[&u>kXPrwl>ae?:av]uv|K]I1`BFx,Bx+4^f +|޽,/z|&׹buĮvu^uźm%+VruGqP+⭨%^Ppѩ]kc*2#7H@,yR!4R!Q!Z oUC ]j + +x +m8P 1K&QEO6O^ؚbk#;ŹbumМ鶇?]*Ywu`)UM]LG=0һ\𥰝KaSK׻;RpbuhJAÐȯ'b'E&EQņ ИJ~{"'#d ;ô4f'겱}Cc4ڴ`hp0 < 2z5F*l +,YBppIL=AdGܱ;6 @p1M7=1Ó@pD@D=(@_IZI\;7z-o:V{ȥ)aS6"I/&̀2A w2]6BC&#LDkl+KB>ںɄu{'KyY| Ih Vʵzxѳq?J%c +-@~=A'j6qyb&YDN$ NĻdNqȜ:W: +:%{O RrX"do&#Lv8"~k't*P*tL|&& MuDڄʲ Ĝ8&ƶY `M}$y/5 + Ӕ&huDJIibddb L<2D.^D 6nL\q1dl 2YaB5a®`B%n2  KT &]_:̳Ӛ]"[C"q-=1T["&FK,ɾ"KĮx^/Mf Kɺ ~%:ו ![pV %dTNJTB6%*Li)A83}IJaL %J5NvI'4Y;1Wv^rOvI4>2J+G>jʸ[˕˔D4x_Ih`94EBjEBU Ge eH<ʔyBWW*$PU!حH0Y2ˊHϲvt%znN4SH^ٴI^B߰XMe#hORHt5& r$8egD@"~Zgj@d#&GA))!Gpt n-s:="Kֲ)YF~G, wRHGoQ4#^T?oӼT@~07o{]Nʐ0͆'6" rvÐ| -,|!ք|@ԷvBqo99E DŽ|ԙVBGuA8ϾN~]=o~zhRoЛyo0~-!x~o8IR?ރh7 +d@.Nk `Yu+~!.9 ge@7;\2g;m ++,8n#ރJw]עo3=T=mp\^P|;`q/{1T,\\;@%i@= n搽+C2ZE܊5N.LT *||DSJz.0ҕI%'be=D {WrΆMns&T\>w=DJ')0^\49`,97gxzȂa%xV8#m8zpq +選+̉˜ED؍9c5eqCx"]GIo@ũ8L +GoX ^Iu%tV? + o ݀xQnxLۧ8P;d G:p܆mCImP[mP{;16H!b,&ա Z2D 6D"|k!`•[/qkSi ti" \`6O XjحQCP.4h:iX:L䭮Je{u HC|=i4hpe1[O:>Ϡb =:<øvإPDJ΀qp5 XZf`a֙=c(3<+u_̀ĺO0`:/Yp#!, ^d2D{S>ίGG;UVlcW*$~ f/2qnd5r×=av:$WmywꗱNC^ xv(U C-^Rw3k C76@@zw +1lL;·a}Gaѭ5&`-. _w0lX \0U׃M#O`Pq :&%yiF<x(|~`5XQ= xN}ý( X_h,3z%Pd6}}x5B'_o[\px{,gӳ:N}=6 Oٽ@-g.%-&y 6o"RK&FBsP+/9Z^ -//Ϗcvshjyj{wyn녉 rb2w?蹎 ҃6^zkVWֿR^(_y%1zp| ;;?x@}/ +v^p|`*7`mrEHŲ12g8{!T_"ho>^Xļ>0*݅ҵ] %2S|! \Js 6@S - h[x%݂eB_)x[TS 5O P0Z?h0= $quൔ& Yٱpc-wXEK؇[X7Xh}$W$IWS +Pujsu +\v+Ujo.hZ}Ic c ()pW4s}Tˢ +& lУ}Oa}5I >t +b))6ɣж`p΄)RByTB=) \9)OPw&IA-B +7!Gy1>BY\J(S}WW}_PvD + &Ф@zBB('Ot>{|ROu'g.T:A'bN'$#Ĵ7nB$*;{%}˞R K+^Mh&zë@xgSׄ#gMލT\`Ѿa}h1OB*WluVU&7$&\a9A@N?0e66t@`6aLM쫙$OM8]n~ڄ p1Մe:MX>ZO4 MeeX}=>~Bi̱WfD403b_#y&t`3yba M,j4!h!}p M(EaU}X M}طVjɐȲ 7#ED2aYjh&oQ4[dİo/+k8{1گ҄:)`DPg\GNDAE}k&df@vdvL%ALXL[Hv J%iK,A%mHH_ `ǵUB4*ՔH  >Me#ꅚ%'6 C2 $RB$o$ :cX$PקUCD룙!k$,0Jb<JӖ!#d7Qm5UF#ь +J@0 FX ɇ mÙ$E8* D@n}@U%\D!SDByf[ClF"B@0{bl}7GQS{8Kzj ZAZB(>LG 7@hšm£/@p/?Had}[_NJ[sV075[,V>HB9ʮdf,qci>X0-^L(i  c8N,S-84I?PZhKJJJJ3K䓘 +Of?aj#j62t ƅHS ܚ*%Ψ+ c@;’="u<%MfP_C'=7E]: :Ar~.Nw +RX4=x% Z|d)1xte`#‚uŌ?FP\X Y0=0~q3|kzKd/mꓐE,6+9 _ F*b!+>8@`\'_ Y+eWNЉƣ&P88>:Ē"fM8. 6C-Q"lECpV IT V3atO +@+[dd|MZ Xz\a£L˼A1sq+P,4VB>NnXm3! ;F[L-&> @‹숙#Zf#|x?"͏հv=ŴԧcOtxW8ɩϓkY+xctKBsrKh.-(վuY-zd+/XݰʰäEBcz~0!kYs6FY b.˭:VY(iX_YP +c 6. 4m:&UvTLËE|"4>b(dv|c4ī&~sAlXX#L3:qmK]ᩊƩ6mBgAxRswEإMAt쒋0矢S薸+:w $c!87iA)s'8ƂQ(gxPCl[+(AU2z#.^Q8=PvČU%0<сՁVĕK.yiE\ ,8 TtVvN_3K-:3JSXixRNМ.w6sE3>ø"l#F4ӷA#dMpLȊ`Ď +5I]8@7'@ŔD1ŰS P03rdJn^dzk Ėޔ4ӳ+gA؂l]aaGf {Z;/ K%2&-س"MdPo9>DGSPócS7ox0LNUIu<J^1( ‡ +^ƣN2<&׍oE6ȫ>stream +H15$f0YWQ14 U}*JBCb[v|MN &G% Fa┛LiDw}FwC Um1Xdv1)3s-u$5&nJn=ŲtC%I 踲stX%Yk+:1='FHm;'Txxz-s@O 3p{'H(q@DpBL'pގwR͸NOq݆ m6?8}l8NA .u^~yYx?)Lumy]~xν>fb|% $x>! AڄzȄZ { 'L^OݜL}Gl@Š=4O~N;=|o6}6>׹z^9\~_Ii|o{|z;oq|u<$|ۦ۞o|o}mqsw~_qq} 0 {|;M]-ouiuq~g{yw>g9u~yw{yuu~oy~yi~wwZI^yq缷mu|{u9{Z{>~麧su~^^Ywz}w}隧޶w{ouoY|k{wk=i{)7]N8wq隮mp3;=5}}}]ӽs}4Nﺿ~{y}g{yoom)<z8=65~woϷn}M볍|緞=8}79_6yϵ}v5un=׶m׹x]z==n߳8;>xqsomo{q۞}]mZuzosy\=6]|;6n9owN97~;6~M~x9=6M7Sgk}g|뙿i]w?=89u9zN㹞9q{qxx|}xn9}?v>~s8s\y[u9y{}yi]\|u^q +\4_׵zl۵׷=6=lw}}}95>㻎7:>73>z:x}׳׵=5>:6ϼ5?z4Na麮s{mܞ]{w0;_||ﳎ93^;}:Ns;9糮}?nӻ~wo:Giiٞmy'{ݦykkkzsu~uz8?m|<}yk|w뻞>kﹾq]y}=m`:u=33Nz~t6׶};{]t=^5M׽>}<6S{=i]k|[iw}w]mw}k}i|q:{wz{>gws{g9|k|Yk\~kwyg{ھgiyiIszۦq +4~|=$7}I۵us|m[k{{}g\o~)78ӳm8igo;L{|빮k{~;OkLlM4NAmNAat@K0.nNdO׻^߶u{Mt;'oRccTviӛ:ucx" ]Q +VsGiwxQe>O'> ɵY񩬢{a'ݒJ&t 9-K@G!# )_CJs,:ĥ-nIF8#D kDm x'5nPpLnm19N\E,ad7&G#jHT"`?&ӜEɫ&-$ ָ EYcrтp XthxRN +(J΀%F'Țަ+%`U"!nVdǕ1RkԵ ?,78NnL].%xI(dXcRlPoWwDx~vd= $P+uxP蒴`zmEJBIQ!$2% Tl@5qoħx=ODdrDY 9ktNX9Af7EԅlvkDw}A1+ZUL\B?mүOڝI5wSF;ԷʍW<)+VG-[lR8005 DGkhĒD?C z{2SW1"rO$F{P@Y*? +(x~VU +zrrPd &qͰ Hyovw|T?4k8yaT;krF_Eeč%ËiG}ʥWN5\bSЩ+V*` ?GKH%Mp͸M~yri>?*҃̒EjXXr8Qp1^+*A*Eeu~RVdzY`Mޜ;R}豂cU(~,<,b%ZH%pLFfWGa;pM#oTT+(ac~qwPDG +05Crc*9~Nx%O_bTp:& 1%&#RF#O%:dD^hlL䔼@AUrbc~c@hy{9.;,X1k̐@% )M^pѱ7䌸w) WΏ=UKx#R,+z9qa`bMѱ9%QqM $VFeCڂ)qф029wĩO NÿLplyi~-H0oHHo>̎Nl.!%R`nhԞbng~GW SDV%-+F} %vC[t% )dhȌ+P)"/z~% +A@c5TRCPpg8HĒPe}8# RՊWzsE(GY{VqXHx%}=`ᙞK N?ʪX( Eh|*S1.x+ODPdHaPN"c("FD~Y䞤D:83,4V*zA!++zS_Ɖo Vݔ;N1VTD҂/( qp51F{ +,G + _|,FmtYicUE8V?Ov\R}ُpN*b?30qmi">M5kv_vѯM8'W +o.ImӳwzFgzر +cOnJJ=$hͭ. +dZHM.qcJ1!v|,>ygy1.Xߛ]2"|O'@Vr +S9\,f+w$Vqvfd&V5<,bŵk,>BO>+M 拂Ea[CHI Z"񩈱pÂL `]ۂLB,a؜)o"YvL7mo i[0uܪ?w-0>Mɫ r SAi/$ ;JZߛ\BfEZ!dLo%.Nsglaqܖ`4&069P`$EakOpL~Z/5.2 Y&tKZҶq5iar?j&7Ԛ`:K \xL_zƇ-8k>L:lG\[R7 (1t FdnmX 130[acR1l@ﲃrs~. +GgWWl]唜DF$jL\)6-S@ŏul4V$f-J(9mͮ؟hǪXQ$ũ'bDj;^E6vxVHĊy7 b ;J[-:'65>S217bW5$jLo* ?M.M>!v bjJkxSoۂ?:=GAxX{4^}rc'̒glSA )1'-kܶ]]1McOXc FyQEo@i&ڂTrҘ%anԮwMhP_l2ovRgqO5̢'#&wYBE=RV2C$%9B}UrG9$57$3:9@fe֯]HU,4+^+F}[RE(7hNֈmI[kҲ\]3LB[lnUx1h]*%G4!GI Vv aɍ ~9^ae [܍ @'pr" +*&rD؞!L#Ժa)a$m}re(KJH~ueu@C[!Cƴ-^ಂT[nY1ʲ ( +J +=11'xf' =״}!m]]~ՆNMM=xszͮ +ik~Yr8 9HZ%jέ +.څI:U,,^d̒O էt_$FIX8zP^0l,F_,f:6qsn_v.M( ^\|rszUp.-8_tQp +p*kn?\)N 2V0N}ـVOꩊ}E{zgih|"#Odb1;O-#QDd_Rɢcv؞^%Z`%;#@kFԨᑙKb?.:M4:'g%d[-=*4iI̠_^ @=TgS E(sr_tЯv5JHuテs|fggvRMF)i;Đ%6Ly"dT\%9* 0 \ؘǕmM5qsNaVИ5?6ĒfJ4~E$!H +8I[5MQV&/;̮$. 8FZ#&m-HԘ];M[q}%iA̒rv$nF^6C$(CR1e`rkqN6?.59&0CH.zizEĜ_[B};$-U h%_bCOlEC^I[zMpK\T1Zѐ T~TeL6&gzN ԋ͹M6#oL/Qq+du|/ N-Asv?Ț`M3Ã,W8Ċe*櫂r +ekzi|oY$!tc>7(}@zPceq(U^DvU1mUkn)lr~GȘ] 7Mڔ\ :Ge<3-ςѰ-( +5C,gDznH~U7̎¨Oc*r4B} ?7{VpP oxկSkb{n[rЮ)OP,~᠞)xwCX70^U,i'U(*2c-R ag) ʽ`T[5|Ӌ 4# Hᗜ4ӫexw-̲[no|Px-πԿckB=&4鸦ϯQ g +:?.(H1% + +TlL4ARr.{=Al"!vrt\rPw_:=+ 0 X0;+BVa/Lܹeik5AaOË~uBo;0<3@0$mGnH]Xqc,^ G:6=h@0̀`9iAȖ^$&P5΍) :HZ+g !cnE̜):m, ߈0 /GpAvT6(< +;?4H\v*VdzZzHXfK[1'%M؞%r[rsHdԘ7Ql?,VS'8a ๊WS`A X9Ll֟Xyb +؃ d?RnN/.KNI*6(ɭAcLyOp5^I3i&aAuCʥ%#^3:A nAPJ F5:?(?T0uN#O*Nc?P_6U>èd1'̎_tЮJfT蚶n|OJn0Sj59?O>Q0mʄP.-8C(":߲kv[v.7ӀT1-ׯ 4 \f>H䊺nͰ[9ӫcچudXq 2QHڡ(̎[nUpLe\Jf"}հNX%"Cɩ (PEbtЯփkFG@I+h̊,{S9RVkV4_D|Oȧ1.8Pf} Coŏ~_`,x6ːDZA1`N}?ȧ'AHXJbqܤ2hF蜴*9%Y>=QW-_7 | RyYtͮPڅ4 @a+Vrӛ2`@,J1uo~L V_zO(oꇐ1#b-u"%B>)Y%`JSX`3פ* 2qP][OtvOe_X-11 䌴PJ$䚸L' O +:>%V Դ=!eɀLmev_qE䘺ReJ@J+G+:G( :q~/-8Ob(U nXi@Q2g9moˮӶe^[tOp!sBJFFkGrWp*[U`G[vLjLmKY˻`vJ( )D<Ȕnrׯ+gÄϭِyq"*tA +T*xb!dT+n**Rt Y}AP.iK)H|~RoɭfWYpш XL+BT/듼DkXĂGwvIC3̲["pU1\nU̗%A~@B'O1;>afPKY*Eu)"I^˹ YVrU~5c x^dOޒkK"qKaCʲQ}]RŰ?_AINJͲE\tέPڍ ]M6<'\5U4>wP§*MXpnM jنP J&>Roh#.3j Pr88u_nqNX-Sq)djuzױTԀr7)m%qрE ·nC4jqhĒeAWgC:< O/RЖݖ\kzOpn8ƨgZ>S%’]`˲ӗ $T'̖qWD(E~5nq"b5<]a-)e̢cjq)8H%24^˰ t >ELD>}ٯbӂTNx roA3|~=VphD߃̖ixpebsrqzT?(|"BNqqvձ.Q9.gp9"Uoq85FsP}EF"*xذY;"{nMhSn +ʭ3|ʼ+bZYCJ?X kx)^G#!tOvKT4@'*1s9R<4R0?>M.Dr L]o9|M:=*R@Q>S HSdOkvGbQmW<d!eE\e ^4lã1:xrDg!mrDiMRW/>,{gZ180HʀM. :FO0'^ɢ@E)"`wBލ ,k؞['A&jQp[jK7Zqv\F5>e<]d+'cr[d/ +~*πԯS /%5u]BR_jٱبaxhQaԗ.߀VO@RRB+za'l؉U06IbzwtPq8ED`ܳ ^}eUR}pF5l P6lC5H(nQj-id|Nq:d%cDąbkrqV24^T//(5-'Wg BqxS oڭb :Ne#V14n PDhtp ~A0ԟ _1ׂ9ڪPՂ{~{Bk9'%hAĎ(!&uYE"TտJp3 8#nM0I>'6&wΓso'"3_MͮZ=#&ΩӋE+9k?iX"-kׂ1 )|ݰ*:Mݼƈepc$1{ML4ƞ%!RE,W%&CRWْnuLNcr؊vS2Tbkb …T$uPc%wr@Z=HgZI"Ev $Z)xd*n=<ԸH* ~DQ6UAXկ?("5Y )2$dP#GGw'~i@v$a9 1(0RDè/]0K#ET_i]HcVB U|艬RfB +FJBb dKWpJhM`s*|*U}U<v'O]6!uˢ=lZpn7ܜ`n8g7c?bl`.-y;D-mܾȨwܮJM9CJ/Mp=$AbǾ"u v_:Qp !2,#J䕚TuU@#D)ʠ/N V9YpP?G_v01?&!\zm|ˮ{r[~+7A %;!aVOAbţfG__`S礥1ఊƔ&AJĦ[ki&-a͆ͭܘ:$a N`냄P?c"vutYqpUB>qO2K죤q@Z}Qe3畲%bfWGV1/Vd=`r;:b\3RU@U@Y W'!Zp-m5ȈJ䎶ȩE# +bڭ"1zXr8%AJ'%HHm eą+:4bL.NH!손ôz}xM/M[ߑn$~ iYjpL4@l~Ln( 'Fgs*~tQDn:^-*=R1/Ċv9:M!0&'U1uJ)%ӟ_Nɫ΍* ;>$[In+6lwN]a!]0^WG3DQ'й>I,56=)"?avӛ~o|Q- e'4B}?$V֋ra*؅V<#>~G6,$Z;Ȯ>2Iv.`@0%V!)1N8߄T( zEu|4^&< BTAjg'Ēƫ'E/#J,urDlzQ.NH$BO@X?|z5|<^d@ؔXt̬+'z5MˣY~G\dFUdNY4`T!9PD%0Q< (T,II0|c>ӯM(Yna#EE,fFbTERf'ٿ9HiPɈKW@ʫ7|p.cnXh1oS#c* >GW2KF>H ӀR Ή+Z*Xp@.OS\Xs Y&rKFUv1C#Tz_ =) 2;T@ۊH`8 G,.T1E ZdVqak\TAe +1,΍* 8*MtT@Ox6`=@<̐v\ "C HxdPbJbTgG\(" `n`IjEY Tаr?(H>ɀ H'. Fr`&I<&C*ߡA 4+LTJpǐcH2@q%Ac#e IǕڍ:gF96llPbzpTy#5b*6ak>A]"K~@cC}SC[5VxO /? Pg+= Rx6rPiRl@,@2Q#S4j4,'!d6g2}!  +rҩAlxχ$u `4.H6  `h`XoFZį(, uسW nT\-A1 YJP,H|qb`(jK57B頒)r mNޝ1[Ϥf# !a& +gVH7HAdX3ŵSs*ZvG 旟9Fv +,&8am.0P!Hz1YRa nDKz$p=.xQ*yz:A,>A !@,@ G4@ h::A-#v$@RsBJQPtŀ`':! -EQP<=I!0UL +5+ ! lwfD\qـʀF0?pXP9rT32*wv @iaasD&Վ GŔG KfAU001(68hi1dBfU+;%p$E! = BK +V8+yAaH"节 =-`dz@`)& `p jGE+> fV@U"ʃCV N) g>(g=$0b +LQ #aݎ! @C !$H0Q.0ib ԞؚOKHd9 P12-DFx?0bxAL +-'`Ag*=L86M`(А0a#F*\@scbcY Vt\e!Frh`ȧ؂ʐuW@p94!uS Q'Rqo/8Vt쎼fæưsgt\eQviJ`5K5 ѕPC!ܴ`trjGd-U]ŠAdz@(Q:q#;ʐU(J1/:!5#h!U +rD &L0).]eHJᦆ: \#Yқ;zİ!JxT@3rq3`FU-  x(̆@r(`D->Q Y$pI[F2 M%0rtd'G& +2;9qo/:bHX:E-V(Q:9:*pqql c9zn؍+j\dU9,850Y`C# #J0$ +Lx g&C b`d?1uv CBWEƢJ|`91@ˉ)2"`SIU%ATjf@20uwA&;7lXE1C[㩂ƔIOւ2pPJO+'v*}Vc$ a 1<€f + T3( U/nT;/ و_x|n#N<'@ \׎8䌼>xaoz\=@bhQ谲äE99=ӋKĂp&E"~a!%L bbH74 HA.'AQf芁c +glz*2؊vL>vC[+ ]b?T!dK])TH|*>X%Vrn8a|K. (bҶ +mz1JYlf@Uځ (KvL*=$-L ';-~C5iiÊCFhK\YalTQD)!GU188ّ 3ҖiI0~pcҷ ふpTTjH]6&8ԕS<1K +wB>ȑ :'GUe茼( z~0VFBlUcևVKo@#ʺ 8"h;*AqŠFǐ-Vl<BnWh>hX) 4 [%nLaᡎcAJ芲0(u2L^wMc5ef%`rE46#s;:-MH-P- S̢K^Ҁ%!mК`;Koٲ[arT~cH2>B,hL2P!xP1m5,a4|^Q#tFfN^.(ބ2 8-E^tp +51&n.R[us_XЩݐ _]wW1q-~duњ-8A&Fx%Dښ)qI;ُҷ5ykNcZs|da؏Js%iOrM[6$ 2VQmC +AS`_ӛ[ +&ɫ|[tL.I[%5y[rN0%d3+N3<'ol1oXZ=)XGKbv1iX3  G P L~[#\r*a[ꊘ5y=Ȗ-:!͠%V2?.ScH+%1 :G\ܦKIbaؘa S<+2"X?|`qؘ3'IU8AJjNHmɫgT21hVdH^&7[QWSC  +oIkÊdkCV-4CVdvfHZ `j @ +364̈RzHZ2#mcHQWQ QW7 _*^w!u9<8=p X&pNۘ JUU<+x9@fXԜ EZN^!6&EԌJjM[4\b*wzT씴|R;WDE[fɂN/s JP=iq +e +]5܃̊gz nب♜7ʢWx}jxe=RpN/܂zħO<ăxcr͗-=vNlp-g=,9棂gzOU;B0`aGP=S7uBkX"ױn8ykg->M/:DNlP /QkrOvHXaT+N1cQ*bQWBp Z-ئ7R9}IpI^77̖"_ +c!iCy}!i_vNE ߂Try-r+:$:#\ ``^Z@  k&0dHZ&7&7䆘- dn7 CPzI[bG[fH] hJ@;J-qkK O/شe)qo|e %lN`T,sat߄1hAŁL!6+ . 1$a64z whUbH]19o/,^,x,zaiEI09z]rR[ +\( !' +ⱒsl-_9uvp.X NxESEE75Lv{P?  >v QG-]`-~er0gov ꥊ@rezMn]`*V*Re/+{z\(9^Z788'QcRe>Re=S_0JLa,8Dm:II}xOd?*:BNu [ +oA꫅r,̎w| ׀sz-9ϭ .[ # +4\>0:XFgxR 8 Fc0M&a +؏IhFdT% rc~#շA'R&j/٥IAJEUc%yؚ`3|ë[rNpɍi{{) (SDPpIn5%uit1,@}cp0Dbi3 RN.8-B ,w`_6YLùъa~QT~ ƌbN@Q$#4f$ +T2lUe㔀ɜjm>G֞/>p_'=T] ]o3wmD*p!פ0Gl8A·Ey3_.Ot;iѶ>x*"Xy6tQ)5S+eys`r췀 FQq#8NoY̲DL2exc'~Wt?!g>7n.GJׁ4Ne* GU7#w0>L JQGLBu,OZ4+!0u#>pơM,]ܧfi,/U34L)\q,2v4 kDGp"jO /-Yh]l&`%1Ċ->|o_ tcSpG.[]9olS-T|ЄQJďyj۾,:;E3ZߤlͬOKknB\vqenYC Uo+E1Y8|hW} +/m^OW)T] MRڽ_ao!n~(v`^@m@ Պf'4y )X:݊XbGF] +sF/9"D\-R1@DT+Ӱ?$ht"A A7 8i:fmu<gސJn#gy"2'C]´sv;Qe{ ,%mLº1W>-k*e+q`+LXfTR9d;3J,*G޾ :h6[C~PbهA+=9Q-[Td\ͪQ*?.u\'T+9`$?,[ &FUܡzCrb(eC !XpA,y +H6.>W^wVDF5&Ku}x(h^T$ Vhp vi.dIh|pf֬RKhC3w?<6/{b3/.vCsnl "s$x(@q|8mȰ_$P[MעAr9]dR=s"hB9H.H@uRB,G _|5"U79q!qB +!Q& p4UVTeP>WɊ9 MF }Ӽ"2|-͋8U˞Ap}'D;P.ͺ0ۃ9]#̒HDGCН$lUm9\ }z :!`t>1M4#p!Y3{JTlRAV6rƺ-e)s,i*&,,W Rc>>*Riydv*->mONP%9~Qیۇ e99HmRʈuOsQ9IuBS,26t,ZJF+7\hY\\8s:6@2}k^pgLbE"o1c{˖FY]F rB5C$ -{i>6y3& +T>R]pss~!}98ZEmLO GCaj[(pxGd8+(3XBH'IiDP„_=Fi&` Q3tAAp`ҒIQBmXO~1 :^δX-$O@,'!:+idc)|P.gw3;2hOl~hL,D~nh ;75R -)sP;彸Hδo#_cQˍH) qME3ݸOXVpn|y=m.RvN+a<3=J}TV}Ԏ A q=2#{$dFq1qջS^ ,! +=Ɔ0Lmm_<' b FSn5֪++`}nc!B=i~`c*eof`NwW=a$z "$b'{]*S*L~׾V)gF~!X#& _'zQށi-YHS=VDU?h7u +׭FT—Ǘ]tZc|e2xq>czlOK¦TI x*FR-Jj& XȪ%Ll o؞R^V"jQ'tE+ʿEmBG֒Y#EWALk|6CNgPD՝N%KdkhaHm]C:`z]A:Elh?ӟd&WNp!X1h2mF +ⳤ[ hX\ط ܸXt%_n 2r0+  PQҔr D7DZOBs8fvCrVF3QPU:m0v_Up.=\ QW3\XijLC+ő7nQaݢFq#b*uf}܌Oyo:~E_.<_FR"h0d˚^zAUaVl/ETBz/\N5! 89WzיNi"Dy-2(Kdi4vA&(ʈ4%{Ӆ*CJC뺘ߚ- _\ KWb|5Yv_ޏ4{UxeuU9liNJ  Q¯߂M g28E&7Cp:v3tGۖr+bxںWvnI:(@Aeg>bF1|*FA+e\9߷)OMZjx+P_D#)R.POBli 23Xѡ5Dy7MIăKB[x7bbxi.اD@ʋI;m, 'u +)9uo yQa%"JovDWk-8K +`uT@-B[[oON qE5V%*"l:a61O:nۼqH 2b|?sf>i]{72GL 0>HTW<ؐ(8.(dr% +.xy(ַ.LW/>mѧ_+ '0U'vgg+c*'܏ݍ]߮7l,$idyɜ]}O>;H#ir֢=}Q-4 dGD՝")<ߑ6 ČI兄6j[A~wNl~ķfS3MLRb5fiUzF%8// t H|J˶O~4@cNyg=,h|F\ gWakPYji5&C4QiT)!&)tnX ?v3:}i3^W͎{O\g$0Ԉx@>.lV.h^pDEr~X#)HTkT 0ֳ^%QBKxUN Ǣ|wD*u︼Z)I;;lݴBkCDS(љy(jZIN8qcud`rSIonŕ2;+}а>6>;fflJNקj o#jONcőf a\3J5C;~w-~M ]RGъ{wnGhA0ڝI.mޑ[K%;p,;j +>r5 {ej +y y6kN W|:Gzâՙ$RlMY15C_%虧圿WyC;S0* }؍Үr5'wk!ܗnTͷU0|"C>8{ + I<!p^mo}4(Twzs1jjoY_f._^zV?=xRUܘ7(<<^~S} ]5 \ ނ*#bx蔘8zs u f_5%) ܖTgE5 + )w!6¦3^,R!6;t0nrf3Qlc +6̕pһ +2+rJ86Őo?dXw;9E`gzg8#Z7=j=)=Dz埡@DЛ{س}2BPW2~{{Ǚ@Woϧfg$1;rm0t~Ey 0\V^qSq &PJg6A=}pM7l?p4X;1.}G9g4 !֋R;H@!(͚/AtcS'C w9D|n?/_W};> ]O-=,kp~\/YWhہ9PF>WߚY;d`!(W15];k4z:jwr&ZVP4HQDtQC낊B(f;3(m/Swjr_j /,^oӛbZd9*m6gձpXKX48ӕZde`yeH@qq2b,nʱ=0!BX+1Ѱy:>7]̷EZmQMS _rm_^MbN(F5@Sm՚att!eUXwxhô F0E@8MQLȅpE`.Sak BR|ڤhkid|ZhQu\ęfVg|C^ieVHᴃ/TEcφۈ꾋ˢAb^*D'?ќIJq~]I!KW>gv qjGxm NZy=VKmpg)q垅ZISIP)oΆLgf{jFt27$u ]0h4Ć?g4vQ#'|W=ÿǞsF3j5vf> 9c=&V?:B@ƕ1ЂGq+k@JG,<[ⓙTEM +"g߆ǎ^I%S Lb|օvM|ţJ|˕ ZV`FYZxIj_w> "~-ϣj액?H: +W"mk񟽑,N|oEM@Olb\nes rw^B0U᫸J> b΍ha@qS?c*5=ޚz*ГuGɯFA 87#fA +Zl[NN mCQ +tppz aV][$Sgc $xxC/$N_OJrNYyԌ~h@5KHm$t,;M|M.+`UW#N0o?y1-Ximx2>d01S Qh S@OiI>5)j+]j20%‡MC!0Grx>rư I62FQLNБ #)hTلSe_b+yQL*U>ɗO/;k˅ҳ(82z]E .> - s݁z•cM\6OW,ڥ}GH8N&򁼩JDS*%3E>2`#f.Evtf*bn%;;3mN9(Xʩkl?Ĭ% w\YNVP2jREw 0 +bV>ixJtKU(B%q/Y` P' +J(@ #ʱ!,YPIM,}2RRM\,8bg(@`j2mmŬW (9"-'!b0,x `Wj_CeV=V*BtB$م+bUX +K8m<](ðS1YéND;l~TX8SL(qv7-?Z'5c$Bu( :o=A4Cѓ~'`#,sēfpO;Kwn0u@~.@[ۻ9.'\`OrvԌ=[hUJ<4HUXb;)!Pڈc(-Rg^D08^} / +OޘҌZMQϱ@n&#nV_ Q?*w J,Yc,/#GAwm1GXA& dSΚnDSo|TI 2!^\!".chckpщRѬ>=8/X.x % G=󙨇MrA(?{T-؂&ͣ~\GQ3S\`MgEצ$f´ .hלTSߤKEaVk[./*%s hMۇ~hXer"} aZ"PO~nV!޳u՗ 6;UE^ܜt^X(T"P PcB1wEY^]0yyѼ?z$E c> qCOd@X!W@dSy]BUnX +'Y^Nl wu W2+8^-4Nb5]@WX%;^K|xX\C +]xK&+x pxT|%Ws;^2cQv=+-SWZ^{^y̦3ɼXxGE-3ƢޝF1 \KhccB&5t +5zյŠpy`]=]jcEX|!- +f5q֋^)^W$+K_Xb //_֛Y+TEVciB +! ڍ=m`zo,X`"C\ 6 of]TxIY!0N o& Enn|OϏK˱\)SL R4 Xðoar (vzM)Kȱej *U&>X)++`W̿Xdee?x=ڨH,Cp,հeؕ.+ Tz,ߋNmXˉ.e)_IG,eUG +l%Kٶ@e% +ŋ =eXW|d1k,"7e`c1PL<6MQO<&a,!x,"p2roc]n,R?SCh||ʢh)#mVGk\?H?R$&YƋn\)eoR&-e]} +zy@lyY~U‡^ע)e *S (^(t,N U 22]8h8w±iem#_l<~X\4,KBYvֲBe2 1M17r˨,lDF e%qU#|YCl2ؘ &2DWˌR80XEn6Kp,IŒ{c`un,$ĢhS][hcGccG";4i^ d'yX-mPa}7GicQ McM4tn} jסpc@ԲЩEl,C5?wZ^5ղ5jūMX0D5R1QrXd'Ok%Zl[à"@FCX 04av xdỾln6cB1m[H[*56Mdk|+/h6ڍX@ =[tCogB觍6pҵaT5dmXmk,$-+mhܴp,-%7L5͍Hca"_Iӣ Ѝ?7?Zi,dF7 +O7 i,Sw[u׺1@)-~Ƃ0ozh,$oԬyX^Rcިa,LTb,7Eڳo8O6~-Mko0L8pي@^$7Ep7'1p 8]X0m_\j{U2`\K5 H #c*8یCp Xh#dO#]Qv)pTzƢmg,ܗ )4XՉю +OƢ(p]X(ڀX j,ˊ NƢؿA!5g,RWLoٔՉoY/#V@Y{5QBE 8jF)cQ]JE32֢KO-XTE^e,6-<~m A ?ۏ PzBLAcbĖ[c p2KBP9X +.u5z);>KE ڔRށEYWb8bpLJCG7}Qq'-Ɔ /'¸L3 Č.#XJErU ~PY!89쫐f"$cW\Bco3lK.1K>`)q%wJ>cAo喱ٸU&hr5aW* r-R%5r%'#r1Rc{R. z~*WbH@:Uʼmƕ[z+yʼn^h#X -,͕t 4E/T9RYځGpkJ{XdWb,ά15=o/2'<U1 nϹf,cqZ6ljXBXlSo>!ni3B276.cAJXvr.]-c:Wם Oΐ"aQ bъ֑9OXl󁉇#,KMЊ\ϺS#XḷXtB ٞu3\`]R+.bqoW,h\XOk]i^W*3c:aݺ +EdbRNj=2IngÂaCb:/k{/;*@h8,oXޫj8,JޗEuEsX:NOZ@?Rr OsJ&о\CaxkD̡ MN;bW܈XXL`w'bQGE Ӿhv>!c}WMH% ĒX }:&?E,+K#ע}F5 +6#wu@dA +{y#O~uξ@o ೯њ7}|>LVb $$˾"O}ZRlF# +8Т ل>cѨ& 2 +eEdzf_MbWf~-׀ ɾ +v#: [}d}1GoT2Ab{*bz(ľ%)v<쫉B!#gd@"xMd9}obg s?qbєȌ=b1y`PKwR@I{1MJLjI"VSţľd?f>f5ҿ-"1v·X\kl@ž,fD,l%~G?ϲ r 8Y a"?,X_Q. hD +6 sBw%Qg *cncӭ;p}#[p<o뫢>{H[>ũ9#@- Hm}ӯ…#D[Zf‹ + XDk/Y]&;bgL5@X|wn `MHLZߤ? ֗"αF0lZo"ێوEVE, 0dbX[E| `Xַ:F,(5=ʯX \j#n}_+k/1F,o -b15_+;"zw_(ol} ZS@`q}NҐ[" )+䉜l}GuԀX$WJ!|Vk}y|XA">]ɭo^ LWhTPXJ7,]ZHa1hf}̴k} Ti}1 `d j~X{@,TB tXX+9Y3(s) + J/1 +b%XdD,(g} sIC!PӉAYq4mBbq{qb>OZ!lU Cހ5l}#֧l}tַ au Qٞv|3׎ _O>,:p}- BN*J֧ǵZ_˷ۮg;Z7@ ۬I>nD-Sb a1wxfZE6- +.#=M@0}w}8WJ)T(zDZ[[[[[[+wwwwwwww{;;;;S5Wn꯿믿1yz=B@*8EU?YH 2+[/=Lb6ruJ*=#h(> xoF'GINEIگ@I]e1RIBHJe1JV4i9R6ʕ1 Xfs'~Ym6в>uPtjzOTgD,c8Wӟ3b)qA +% +1Jrum3V@EL2ͪ?HIZ1Il8Z}$YsIW_vL( 5Mgn8@уWviFT}M n)w\rɵ6"K3UAlj^Th!F05>Lf*P/9͡#s[%:~:`SfqMoz ߰ɱI.Ccj~W/z;=W)- Fby9SiNe7Pi^^&K8_audHnzneyuImZPﻞGm;Ւ8|&ND߇ֶgھ#}ZDivh[o4ekdۮJ[1ֳD|WuW?D"\XnHy;;hvn3Ue}&A;/^h^*Rk@l?S {clP[nHeSxɁybu>c ͨqp]f]K-3`D +O՚s;?@G5ϑ2,5@BE;B]C!2S9)78q\Zvv /+ ]!,6"!8& /hp_l.H*9Jejl 8ֲ/M2 SoM[x~%3;Yn@bHj5񺫢3=o=aKcnv#=z5Vj\ƊUxi kc~^hN x'ǥ&SEFE l/.(4_VOJJh<+Rf)Re +ĈnMpa*s!P{ou kzOrBtrkԙH1}.MIevRf=PhjjvlrJ[nKn. +5ݭVU[#@)G+(۵;f#"U[g^/Y{a$ǰU-'#%aQмEU9K?X"s@8Q)<&8!dV]rt2^uOJBct` 8]z$&חX+?GCcYݖf y/72wt:)#%e PergozuP[oDf;H ҪĹ8x%*M Yg: 5Qof\.\MT=~p:7 +~v{nr=drGu?y^`ސ׶߂,@ `5_x%6mG86 v *|8~R眊1Z8j;3 +$Ns.Uc$?]_X߉xpyf-oEKC^dT6zZ"vJ9iUwjbSrD-P0G2mo ^Qv3Ot1 "g mNVLYEӉA*KB˩?jy5E`q!vb̞C`vT'\`ft&Tl1Xq(,8gV}7b2vŁAgQ3|:{z9i= }H-[mӵrqD^nD,{_ܞoZe4J`qẘtb(ƢHa6R9PjСJ;Q5RuT}eW?BZRJQPydHr̈́)LAc+"4](Ҿ^?'ֳ,r.JK +:vbVWjz$F\3! oひ1J9Zt0M1+-E)*~Ul)O/Ʀ k:! Y6ߥi4ؚ[6>H^LTJK'm kVϱ +2 75}RL.UPw+58Yo)~]x9Sn#|Qj%Mw j MTD-Hn,p<̶krx:Դ?ʬd?(5@PDhŹ-ɶ=49 eBb9 ++Ns 2UfB#X[Z?ePbTJb +7GdnhpvnUKs* mŏiLČP$6l]g"2AZy!"U,]ḞL)fLCs:_u\/M4xeĐlUep@y`eS?RzSQHǡ)09x ?bvX-Ɛl')A|N%k2EvWE0q1=e-i+bGZ~7^/h _e;u$+]')ή:S oCUYS.]y7\wb.M'yLt,íZ(w^`K+Zt*:qܺfP{Za~4wzOD tmLJ͇n}*5<[k$4?٦KI.MGeݑzKGP +(UVorrkayՀ㓺f*gԲS"40#pC$cDT*SvUXv +1x Kv2b,~`wcvYEi3ZZiVYCh"BV M vaȱ71XԽG"vz/$j'̎|HvU+Wr6#L3{qz+b`UMJuYrvXƎ4^VAzŵ@rءJ)";aBHgY㙮X8(~;;X6]U^f9U{뽊SlWz2[4Di, +#-5zBﳤ{, H-pͅi<jܟ^HMLMXq~V6*Eh42㫄le (Af VbB4%ӡ3)|vɏ~8SiF2H +1Qg&v\ޜZxh?!Ǯ6a2$U9WREց{b]j՜fԂ<8e,О",XuFC ss~bvGj~w>>ִ]lTFD8rKC9$z 4ߕLS=)t"8yḟz~u,Y޹mwj;Vu@ v+ۂu˫ӞߔE4ptk,{t^JU9ٞjVHsSQ?O:?D8pug>Q%ZA񻟦WMSL ցB[u\RN)>~zMߋ~vͿrg|2 @5%#"Uao3} *b秐2/fkq*SzqUp[ϑ" yjM]d-URX{+&"aeh-FM'L+vko;CEqI˥ӱq1HJ ؠߴ9κf3tN +M^]nռA " +Tl EI%ɊQn!r׫mɕFjCRsB]:  -_jZl'12jb 2aZn):X&!ʚ.KMeU;EecEn|+# [Gf02ѐ4G[&-PWiDHE봢4D5a8: cD*iP$MeXt-]Jz㗌y >hecΗ+ xUmRjP` i(,H7MO`7NN]%AK\0IY1[.v36:r~03O0 +ڌU5ۓ޳JdV&eIRpV/HKa#&UHlrtDFiBa2,Mc>BZeF0-ZITsBYM-B|"sĥ&#4ƀD6IZBZVV/gJ D*JkV=mء\f;BJ׿z"$~ yg9lP[/d3rs)U,!QI;&t$f•zdƤ1&=f5'8'ܖߒu]HG?ܡu -zv茯ӥ L:ZlrXȜGahU$1Ą~oyGvpG,a$Z&'i + NIXLv6Ldl(1R +% ,E '&TԮ?j:!yx-I-U;zJM-*- rVn N,1" 1VXYEF,jBEb4j}jnuh~- +ߍ])Ҙh]@FW#x#eŊ\$ b`('6u3jmKBd!3޿Dَ%:SJ"`X (a H"pxq\LtUS"oT5}c{;am>nXQRn52zZ\U!Bj(40 "6dH!B+V0PSc(!i"ux7sȭYۊԠt$ +Efni#"c@X(F (l8pacDXpyjFDdP,`K*.#W-Iul^D>MeC6 81%D8Fķ 0Azܒ E U1Ir*iJ^cϢ40NVZi3#u +dR 5f53NrP|S9\҄e8t⚥2A%Bp 3>T V)mU5'ZSY s^ @ IbfRzę&%> z y˞{>@ (@ +@`C 6lL x`Ć)&\lxtgX@(` +`J(F0VD8>K#ã(x@ +0ذ$`@ 6D ` !H6b7` ()e& +0$9rz3h8*:og)Gˌɶ m'GjNt):r6 F8p`F %6FXHBgCE 'V +xjCR$iqt*…R'VZi-Qe|0^ 7"PX6H` l$ (ذA,6 Æ /6Zx)k!*=2d>$~B$6 +R@٘adبa'4qC +9"JlXA@L~*0u G4"U}2dK. +Htn +Hё!DT@@6&xaH`ac6D 1 NOU#PVL ,'#n^+  :8Q6# B HXTIv`oE-SeWf9S+Y݈v +,zΪPx(Cg#6pF @HP„/9_ j|@#(lN@K(Ԋ, ^bZs#5RقUyWof)CAH +R)d +!$/D +L`qA<Z TqE')^$zWKp< Kj(L Nm~hUqVi8\0.̨2XT!A40 T-4Ba+߱iQC4iJ]m0`n#ɰۊsvZ*ɣ18F +@.Bi(t$ # +JqvGk ,YP+FsB +@)s +bT7=׏T9YKlՀ D6"ƃ " p!#A͏Յ2K ̚zt7DOthZ%7~mW"\ fwF9)F Ƅ!2tlt0R +68y*  .| Aq*"p4[-Tɓ*XJg .Ƥ +6%8@Р2OxL@" SSTʶ)R$Q\FYXb0bˢ1 +YRJ3M׭[Bn`vJI?RAMkH <؈<烽#) TYl'~Wj!x^lwf6^̶{Ngj<8(>T4*(,|Ri-WnPxk$*DX@ :gD0-d&ԖO]Jvӹנ5ܕј˥(y 8@mkUrMǀ`\<_-9k_҃%~TozJȆ[E +fOsaK\0?Wk+ +_!XѮ)e+&r]B6MTpҘKYj4^4 1^1jYB﹞̟~_v[=r]M0P(k/u"peRh6ׯ(7/@p X>ut&%CxUpf8JLތvx:ұH0n`%xZ V;H^'$1OVeDlz_pWp)~4ɩ1j A~ y܂(bH]s)]2=KlWa+ΰM[FlT̰C9^Q
ܚEYϣ}YRl}qgWVee'AHO >2d ?P10ab=x-|0׫3nbb0DqU]L3,GRb; /R45tKe>^̡.9R ou,AEeahށzS~|?RfjRT$Xp; ӣ,L|*Q-%~ҜZL|^v+W~%% ҉&g媇0b՜GnU繆YX"x5ԶD.zMcjn(VnCy?%ɰ6!~sC-ڏD)Ls-FlhM]uE-8D6e,ەz1Z;YR\@>O̪~WKN%7A%v`J!7)+r ;P p䎡ve!woqª%Cu +-%9@v<8ޑ[V7`BTr4DPV%C9 %+Ei$ vj~>MZ͔ fŹbc++&dh:[,0ά NKF YiͅHՆvXnc;2. 79Oh,Z@6N$4`.[n)~\p=RvuiJ. +!gӊSv$-P1|5T|,ٌ>``y:=IyDIԊmy<Ftˎ@c9&xGIf4@~m$dK3qH~ũ4y =W Piz}cIB w"8vdfC۽C칙ڇRe'9Y\@P1ɖxr"= ++\0Toq*`4aK@"$;F :` TܗAG\M*7 CZ|PXsaMGbLV̄CMY"0 1Em#Vqj9j,2OrQve} ᳵFkXċu[ɂ[\r-\$zOV[%kM S :4A@u;!;Jsκ@:$ߙetL>zHR!;XrJ+GXnřZ40e潋M O#*3Yp$Ű^&ZHUo/P/9X"8Eqjd$|D엁zI|@敤W[e G 5Go"d)(fWazdu'.! `uТ-kI"0C4?YWy^S+qԆp2RY.x"h!;{%(A~iGvadx1( G#ņE,B Y48-V7  H%j^b]^b Z^a 8_4+stJJ ۃe"XŦxyՆBjr=Qfl)K1~K3ܗrԂjM?"+!r<C1^I!ƱCO2Tqm9FJDQL5t](A1=~AP:'rbr?Toh//IG,Ƒe?bXbTL|# +1<LA$czcW}Yi(&PNP5蘖hq 3FHH{0)2E 0ZMpѮ)X-/(# )4 f,L`f_x%Ȓ+K1i %R* 2U, >",ZD0ɌqmpjE~k`RmDnQr##6f.Y"8Ou S&.I 2I𓨕v(mwZ3lj|dWmV.9%ӘpLsP6*Z7 `ZGM5s*fJSLAt!#2%]Ϫ-`>bq'+Q"ĬOa/W?Js,8 zkfj~kn m&;fk_l/Qt'}j3qG09VsllC-u!<yzQ-JKIO`3CZ2U͉FZh?ӱ)ƟdA !Yg!~M:8.qɋ'*3;&̞ݨ{u}%T0Ұ5)@*WܪZ=G+7j87Uw}/Vi>/̞V^j%Ьl>ߺMbkؤ5M%5͵KhLU)Z ks,DD#vHy$/8KNY0\ 瓎!X߱;#'fqlZ+vzmB0YWh-'Ԗ3V7fWwvҊ"hu,˙4`$Ҧ8݇q|JvW^˥ρ04تR- wo(9]l'j'on{10{K{72R Dv!gh 5$sZ`Bɇ]M +6C%\rnYڕ9Efkl+cr>2c9_6,˚TW'tTaf$Ͱ3gn\K: !JVUwi3W.2`7-DtDMS &՚a\c-+DvOGGA&-cbC!eqщMV'qYT()W%"PXbu' XT +%z/`4|,Oc4V}mp'L;pO$P,NjMUx$B|b:$ D1uQY oQ9/!ćN)^,H68|ZM7%YԘ͐삈 sI>~)Qxtl* Vݨ]Wߩ?[#{T|G@$W5fY:T!M^$ 9f-j0E*EXfOY޳,){Lzz?d~u-۰BdNVL m[3#bt?T6GiM܆T@QZMц7 U bbwb?w)+~+v8G\kg Èņj#3tBrhvq'/be3;RݔJw8B$g +=b.j|{񻡠y^ )bKpgԝ ='F(A'5Tl#vd"Ƨ4 /QN5`0JPd&@,|)D1~czڮ`fAQ#] +(Xs!|H:_2z!F1> 2CHτT+gXLpqf)PM'cj;p7S"ib=0њ((jD߸їAd'ːcgH-*) ЯLp'T;@¤cNQPR h+H0r5@F uDEsR`F) :?`,DVJ2M߁L CRrNs Q^v,"hԦq:ZhH.5k8nEh~QYZY2IoTPI0"b]we'mQe!I.{.]ܟ/Ev,_bū>5+&(jB !\qZiVP:aWj,Hi&cbs0`_vW݆zo;,wlY;v~)홍8]Kzb\WV_י,} M/XmYI2|'1}jbo-Z+{,jL M a0MP@Zw=CWi`h]}ނ4^ĸVŨцE(!:@Ԩ@h=JͣIfb+ynT~[lSpxܘD_U덃*DڵfJre)Gݎr;du s^? MZO!>HMa S0َAZnVOIŠ,j0Ql>Hc 3U +hU5bilL̷ݙWI]_3P\^i$ů'Wxrce)-D2F Rl4A .\h]n >CmH'`D PBjBR :8eR:Ā.!uaD:@` "rk*Vq$)Ta#|Mc0Le_$%My,~Xb#؄F+Z&K3A uPҘjM+VY(fj3m +ٙ$>_k>T^e[$30KYl$W(( Ţ7sJnR3!BP3v-kG=^,&>Lc<086 ڵ]y;{"":*~l+b`_mm٭X-udt[DjwXBnxN`7=c5v耾s;2P1\ +2}y(0YH%7anMp:X',SK7ήZ. ?YEcsO{CMY ^a_lbrBCnP_~}$(0yfQx~HB\ΎDZmV7X{ 3è&ZHpbomCea{u;5/fZt ݥy r(=`w8Uk!z*~[e:96ᅺҤ*Kr{(:qr]}vg=R#08`]a4F4bXRϑ;4 :.8W\`u!+P- +hbBs21*Y!3 =D 9Qe+vh>KZ3U0@ &R2̀(q F$)x#v|ҴH4-t FW R efAi]ׄ!dBsE!!Gkx%p"0r(F\\v+Hxᵥ7} +`s}'f{y8fd|ɱ L+ b6u!7L"@!R]:hV &#xl nh !uK EXk? +uU"Hse"v#M[:!;$0:lNd`JmƏtǡT:pliG@ew<0!r,nk> _ `S܁IVlibE¥@GsJNS!܊k1{ajciJX]X[(Ʃ1v lYl?ʲ|nTv݉.F3X/ob,E$@z@BJjoGkB!n- "j]|WǪ_r+#3_-8W 5Gmˑ(c]Fq^MSp+N_YG˞,qr#A: +.Gf(|)Lr]˴K~Q4 a(RYT +& 7A 8i 2ʣd6hnB\ԎSpZ/RPARt_sM m$&u_ѻFL℩p1Y2u&c(=ocb_n?,tdu,SfwE_)֌f mᶈ~αZOX-YPynݮ/ao*˲\I03PRn.tJ[lZ/ e/f,Ӯ?Ti |Rh2[p+ήz?_/Lк=ߑFf<;\oHFJeӍ&Ё&3F @D7p .N0f6S6 +_uMY +KZs`ٌ+׬,pC+:.HM^D(2[)@ :Xq5F#&J`E;Tr>č lҤBYV}nPLCQ<q:CVsIl?Į F8 + jy~Dwe~sYNd XV;Y3ͣ&PE04;Q,jKъ@DbrjT$XMf^o\"4c,he|kif|Pbi~Z> s麛b+e7S#X ވZ1;P+o1z3ฆY=-| fE1(4NJ#J%3\~S](e*5TvDžDf'$~6Vo"hf%|W&~ZPe}KWMݒh N}r; X$ڥ†(M2zIvi;z֋Rf4Tv4t'n1]0E 1Bmc}Uw " *`՛92d((QrEB%g r46dN(+6fW_-xChf(D$=]o(\q1ʷ]j'ԖWFb:*2{nyRNAR; j8o)!kYz!a>7xA4QEK5215݀ 5}Ъe^lpa1b?hE%D|#[p亊3:BE廈,幰b! 6ΙBIӪ [F2MyX! FZiLoXemjP +0ү1R>PhQ|RɕAn~V09%# +MPLs-goui^.qa&{'ә$.ƫjTV“gæ*JvP)Yd)W k<GJURG;9̀r:>AD,ɫ 1G>[o1Iu]G h&Tau$VfW*\j4)HFu+OrS+vRzd؅A,Z_ V6 *},ΘZ:B|8 z0yg!7"x3?Uk<ײܖȼjR-f}V]Ii1w_O,9?\q^|$Lu2P3G$ 5Dp:Fo݀7C|8ZG󩌅 E:V~@$0@$NcHX?Muk:/Po>CE-ҩUQd=x1J"y[t_haR sC *$&'E6 +kNYIҌ硪lzODE6̲G"1\"cbkBbs?ϥ4 *>G!͡9 +^^x_yN}O7X)Ht*s[I/N>9֯ ,I b"@qv86HN]i?ֳ==mc8$nY~zooblZ[Ŧzg{Q G+Cϒ\TYLױ1M ;@dڏ35Y 6P/~Yo- 4_zu:ect*@)t;hn7ّ͒4>Wh7T1=QXmd[$b[1L085E/+'V ZÍˎ]W?;*]zH|_IHjݱZ'Qr*+Irqx]Vf=Wr^ NŎNg 0LWP +)j0DP.$"x#$Ȳu &-tJ` Djq/~Wl:R5]ScBӐi8PC(,Mq< 0 + b0jX 3 +x[3 +-mMWl~(p'M^p%^Z 򃰃ADz_AlR{Svsbwπ + aF|[Z閬Nj(mFۉ;67c!kO ֶB8v]zyI/$@Fd.+/8>̲">`q0zq Ls 1:"0D!! TO})b,I@t + C1M[H[~ǚX嶭7zx8/#qN\i?Vj30 k dYu*yzDD0lnb<0NbaWYnE7beE(\es**SNuK|.L{fr!k`jAyZu lWRzPR8vh .-˃* R8"5jv=HP k-NG3h~ܢ.~am-FfXwg>BB#:q: [Ѣ !A S/'@k 5H'4(՚+FZ*6TgF }.PZ(t |k:' $t;s_zԕ*M`B4b1B@Br` +J:Mم(3J(!3NC"4*-)dVߑ3ͫiI3 v] 7 ]ߊJ׿ "≆-g +4,/bg뭄[ ه_ՆWhOW <7A -2+eOn${ !~DcXM vvԺGCs0v*}tkfc*3waS=-m<;8iN=^&oactNmy#M+%[қ ́B +*KrĐs-]m ksrrܵKo}И`7,ЀT03!x?'Ҽ* fi8F@r?#HeƠuܺ3sWFD㑄s%-#4< + G% 0Wf 8ٴ盿#]Z9Zz,p9Nf=Â`uS)|مTz 13$JOofz/hַq Ҳ`>IhudVW5OueN*}]8]S4i.TéZ8"a$>'lV҈ޯ*I+nD0M=:B|qPrALj3 ϒe9cjs,h҃~oYZFg3f0Grh嚌_tCtVi}X75]7ﱎݷ5׫@J3QDրe*@u& f=3 R ,N̒D v2T} +4L]ԲR+=ѐOu43>uGA?Y]3+ 𹠕''~r2UqmV7ha,vXb9ey刂wnv-NMӼ MaJi!FЈ3A4v2~i}QiNZy淡RQ|$D㩦>VɅܷ~jlN ߫(v"/YOlH^eIrw Z{C!&nj7^GĮB:?H@fxav{Th{K盏-#K1>Ud#|bct 3Q3P^u @$' ٢=VWK7#T:CtyV0ܔ'Lj^Gc"w~u]q~8Of9_љLT%K5:qBKVAR8eV3jSi&5(QpYFu NO4:O(?*j XrKm|ny+R*(V*Ft*ƳX;IԵz%k"RKd<Ҝjk '\TYRkMNS#x$PR@H+^F]Wdyn]c⻶KsrUYXn>stream +, 3aӊZ h1"ڕ l 3^8sVYď C xI2t9K>XfPP  *4 8ԒdQxéZ^H^q:V3޸Mۭ{ 7nw Mۥ]zPp<bprqHau"W[p*EҜx44' ZGeuSBgxu+pP]׭RrL[B]mJ-U 4jeUbli2+TkYVahafm4b=AdNԫCmعwn74r}/PMp;Vb?~e<R#!?h{+!TZ@f;ҫ)u?Jv;rӫ*P&K,9wʋ9*CaUsdHt'=ׯ]׏98y;wTG<'wjb޿+s)#NZ9ǐ*-N* /@bfU=DN[̄,b(e vYd}nsZ.vǎV!nj9rZ Y XI-~@J=`r]_QB@n!90O,5¡p[1; {CbznנD 5f%#d8BI%3h9@RTK"Jn:HfŨwtSY/~JP$TbD'WIj->;BeGR]d=Uvx%Fzcq߶]yUANӽY=R8h﯊rXuco _!<9_p'-7h9#Rc\J#XlP\|&)>9P2Rpìa^m.YC EzOlqѭ|hh^7u4 +V?$4zhf3\qoǭDVXc"},@+DWz$[ji+3 𙂛dj $R(=]Zp8ծi%G@{;_%2!yPМN(>OlPJth1M‹HE*Tld(/0QQ*CBM]q'M0`>XyeUYj+Re1WjG'q> SAB`o(0f[[ruabDwe^ )7@7UrMMյE*ֆ01#dQ䪟({_ݖ]rhȍW r+!?5S+ϣnwPCtj$1KAfzTT*pd;-˭8vpnA{ ]\o] s+-LeЁ{Eq֎W*FDUArMxCO2, Hr)Uh?ز=~gFe=`{5 `D1b$قCV}ˆB ꃍS|#5%6[1zEsFyDyXNjEQ˭mLf\ fY0~# OAk~>]dpb:ay'K޷<" qBl 9.tp' 0| af&߲֦!hLa+.y~Ł %~Zn(~`gnU_nQBy^9]_ FV,I;՜~ R^}*~Td(4`8 pHFTdl0P'Z[ LgSq!! fM> +3MC;ho^|O^}v>cUoR v0ؖw_ee0t§UpcW)U +~Sz +aZgz~qC牖+&@ung9dv#5".QyV8@}`׽Ď1gfsm2ofw mg:9tW^v'r^čњSir '~9蹏3r$^&PDNv\`m4ZכL'Z#][n7,~Pj1Hlj'P!`B[W݇jG!@XD&O=McHɚ?D$rD@r;uͧ,uw?8?>{限QbsMNA W-aap$]-&LNȞS)B}HнwI6uewxMgx?|םY<1To#ͮK #pS SB'j-Olijdn; "4;t@J(V\9ٯoa+VqC tnt2\l&L) ; + W} | z$XQHbӂQzci2M2̷R;ud4mײLy?\0Gq,WHBZq4Qq0턏OY +_Sڈ&3Al啚^H4j'#adR̾FUoThNh +L&v8]wC+6ky ׋6eӡrsr4զKnXV[ +WA2bG1ǩՖV8~kjt' j5i^I3rORwCۿ0x%[nHH$% +GJfJjČKGzsq>25Tm ,89O aɊj^򝷡î ѻT[z櫘):_0zny#dVak0SvQb/`NDwMVIUӝPyq:Iro; (L2&X%ǰTq?QseuВ#Ny%m'M ۈ0Aܱ&~RƜմ +h$f prM`Љ:yٯ.yuשr(`#7`Axzr(̎V-jJ 9o+֬ʏRUKF n슃nXfTz)gϑ#Hvc`c9)z&7S,NxM׍aY +аȲjm%K+D 7esQ;_4D 5m ʮȑO1#Dq^He6nWtzXh\ 3$Rñ&ˬ +9HsW͔,/:Es>Ʊ^$@_S$T%+,Q~xgB L;Ogb08y"F2.I2wZYQHm/|[h!fh@ >cH{V# +(M ,"H~?Ut.ΗJR :Gk.A fμ]*c)8D,Ȑr:8~4q>R19 \^v'L/"u,׌t(Eu + /akr(!uoaS%WL~$?2J1Zh)Uip5@٪_T F.bV5ͳSY 81 ,CcdV;$-8 "5'X p̪r&A5M%(V@|bxoBg3 0 -Ql2LuSwprSCe&cfŵZ  .繮pY:y9Og@mRD(Wj/< ӑ%|ThPa|,N0ы5(\ϭv(e.BLl9.ٕoP%<Ȝ`4~=I0r-O!Mw@Π`rC+gʦ+ae "x&Q`(d[i?V ]ߥ6)Z1;\n1[p0P>Yc9Q(4.>HʞGb>aƫp3axW݃NU 1Fp׽%$X +Ӛ2bd*&ׂx4DƁlCN +0]F.H2lbH)U0Jl4ZXFsbuf\1ͣeXNTxf݁Kv|sAQo\pv9Ē$4l.EVrBDna;'^ +;+ TLaa"@gc= #9J -GZ*5G%$U>!x 8XfE#;GjUKmo,J /V 7Hq2Akl P*B 2?5C48E$3Gt-Es +bxT.Sm90=˦cr-_~DRx x,ybEY@jdr,@8Y*(Xۊ%/B7Ph2_wfo4qj_b+I2M6]SO yku]ס$wD9ׁPJ;G -UL/Il3PSrXXItQDOBVKVOjjLq V9MlnYëfg1s5RdyT*P49P={ 7A):Rhljd=-,f$Jao'EcxGNe,MS@BӿѲȡzkۂ뉾z:1E#yrc%K^ Ӛ ؞gJ%dZ`'BmP,=C Q*1rd=ft0a8s$|Tp +|P\ÉhQP&z a(So`nAh,nӠ$ $& .y%k2 ](^$n(4;Zq$` |#z+q%7JڃBewF0nC%ߡD:0S, _ok v2Bi+G@0}u\g*.MJE2l[M1zjM 9Oi (B9x^}$BOf'Is] +_U;:8HReM@@I(1_DN#:,ځ1~O-Mf+R; +1 :Lf,YqE[G-d%"4F"rkCTlDWOÌ<4t: +\V,~9Ys ${> sk0NU[ +`V\ `x>V]KGJx.ΒM' ' +T8t/z*t`U2< 9Pdn6Hrہ*?r kAbIf1k9֌Ѫ{D9S`]"h&A64O 1It=Wq,|*3OUlcժ:+cVdӡ0z(:*]Xvxeoq5NrǙkYXNeD!f|Ӵ]PF +j#-Q nBU?Q İG0f3gA%ĻސrDQcRH?X㔇 R`=%( yH+5evFI&inBX~vw1 hڿ$]ir2 nhek:*;Pd=Sh7d8a=rKnBAP8LyPZ(6*U[o-Yp#~@LJL}jg1$28`-\'2EOU\ U[ +$d*zҪL|4^LY۝냾ftYDk5۴=ĘU&'' OoD_L0m,g +a/E](9fmPPZͶ]a̓Z +*/Mi*J3]՝7k,yoˁ XLb׾DOj~k7GQz(v ycz.~(0s*@3Ƹ~\r&?Z + +CEKbz'y#]M;۞y5R%L+/``՚r?YǮ +!JJ3f)2ʓEp*Î0He,Z&dXefjàn"1Yn#Oe+Wl'Fw݉ӫ##WmW݅H|9Oz̦'JΗ65\'! z晦{q_Z^qL.Y'd-Vf,6'V TLoT`_JH1U-6W oqTw*kb~vFے_*G3azTq[8K6i8EFIߡ>(E]l?X4 Uڵ?<{'ۏSkL"&2T6Ñ|M@n{j[1M-ꈎU4fjc*=_mC*NT2[\f0`w1I <^a$*QrV Ԋl%zUjnulj5ϳg@O,r@)Zq?nYͧӬy*XP >qr8Xc9X݄Om節#vnwTIp:&qur'v^nzl1Xi;د7W^f+NrBZ DAdu긝3E^^iyMîb.*Xo) ̨eBT%\FkuZR͔6^br.OGc Bo9EM + *;]/IX#4*Z3Mk]lX)yU쫚RTDtF`EYH}IQQ-uCnRbTWdʧ2(8ьvw[I;"7N5;tx+KSKGW: UkZ]"()*r6+Mr/ƼlbR6:8uz&{NoRxD~O\"%ׅՆ"V4d[mQ:CjL80;D4|0Wv*Qjv "%ȥVdHIKIuuE&d6@YmXْ{~OUeFԪHEpz<#2a@I[OaS Ց "IKͣt)r7Ƞ.z  ^#iqIDSMxΌL@1AKDUv:zJjRqi-U[No4Yh/&Fs\{rqN nh*B.@M$IJVjz3hM)}p5UFP]B/mzmu"VnO!3SV+[TAymYaR4S XS +uF%udĔeDŕ+N}c^oݑmV'O%2Vޑڢz!7yMD]BXSbZ)44bT#b7-PL?/&,/ֳZé\XZd:SMc^W Ud &1 +Pvؐ@ $಼qKJvč]011 IaQcWo<r7dv'e`h zJJQHE52  ӄH fNx4X9QvFN/ҒʋkhKl<%v"ϑZrZ  U"5*^z]}J2JzIR`Pa6-s5 +XSa \Y*f zx`E!P(6|Bl1HQW xQB ځ9E!]YEW !۷q][eij~TBnE6&6&8lQpP@ ]p`)Gǁ=E0*i⒰ճ$dVjz)9b&qIR:&l\AX0"lxf + 0"R"X霤pC܆2$ .&'/bYtpFmf 0hQ@ +=%:lP0g ( %@&›)vPq}״MI}TZ]#(.l`I`@%ŀjIңdJ<ע7RwXYdtqIkåtU⊺Ei!†q ȋ6V0X`ącH \WH b)UWزVvEVbHVKN"4cGeP[bRJ^WI=^a'0/pk, nߥJH﷞ +RzDth"#BVWʆ @`H'6\:|#0q &$p{ l G#!+NZҷjbFaSXp-;Hɫ +ĕ4KA8d`#Ea㧃%L?ZlPVDɨ4pS3D%|`(7+gCi;K (k͞jNZav=%U|}bBBX-"lHx3!Bnb)Q_ + >,ư Y TA_3o +Zf*)e9UHJÖ +Ru}@ +(KV Dezx$AN9נ퐊YhT{b*Ν(&(< +K&ϳp[L;J:iʜbJatÓ ' రam E ckʍƌ y,nB[+¤ntS T|ҔA G %``'F5Ɖ0PllP@ +hdɉꆆ#㣏#9{"/yQIW&6ʏ,\GH6^4dAA& lt(\F*>3) _Ggy"2kHۥ +͕UC_]ɞL]s$%/`緁&. x0a#V81Y`0$U*`e\F*UOWjɻƲZ*٬&ZSNY#GDY'LDU.*.  +NJ*uńu1ϰqd'2|l5S @zťRqaqt*p\r(UbBD_vH\q!3?XDIQ5x}vKM-YIM8YRRZ0/!0{'+6ۙmq#sI<6d*m:lX 37xdҁC0.8pēCK9qF;W!ЋWH,VDasיO5j-˂.OKa/C"1>-6 %*+33=/!jP* +ƙn–h:K_+FP`L-43 -ĵ&a}$6YUYIMuBpE*0)WTU~ُ" *RHJ\6d&G_[@f\Zh25Z_ذYQj-gDkU$W A4D%V1W0Ӗ*db8-utEu:qhaDP.RI\>؜' +4|ńI8|ZPbE3#D$,:`Q%D1"hEW$KdCM=QUJ0(."TUYkѨy-)$){7GH)aC:c\S9aF]H(uRuD#]*[ W4Zv +ߌC_g?FHY.< xPz, QmUIP<ծ"sQ4vݦ\߃tқf +ٞ@귬XM4&D!U]⎝º`PbnW5&>Uq3UGYϭ0i Ckq݀r33!r+̌@c5;P\StjԼDzbP0*8[K:b߽KSTCZUIvr)MtP\ -׼$#;~{ӞEaj,VYq(Lr1Fb%RW Rw67cZBX){UGt،K[ +m=[Da)薊eNCUH]Vt]uQa{KvAaTM`EY^qagI,9UuN"uɿ,\SB I"ԕ"DQԖ5I/ZrJ&* +:h v\|$;Q]@hD\[l".-`Y:EhrkҒSM@׬",fiR/HJ븨/RFCr~U+SRm5鴓(ܗe]4 bj/S2q4Ƈf|;#]׫8hHB睒pLf*FjUĒf&~< ++KvmNo}OfGRUڊ2ݒKkuS~ Lے~hZ멚Ԙ)g +=4df+ZuMטc_O:/d}[g Vs%i_Ƈ*B" +y=xNSa!0r(LӒ@c\K/:Mf$H(ߙ#05 %9pX0\hLUD(B5w^kU/;ǁ)Zw$8 )mGb2-GNb'_2(lH}grq7RkRODΣH.U.2(R"݈p >ܖ~UuxeZ4'cZ;vv4T<7*4̸K!/8nS\tI()2[ý҂Z3eyi&1hEG&uůO_c?BYd s+c,H'קNUGUe,OHpvAg$3G6_VU(ӣPlx<NۜU:Ii}qJa;LT\juhw +-O8áspl{E/~k^KډNGnQ%bo42j7)9MUETFc"9sr9T.#43g8dvmrFmxIAdhw-s%l;`XGJ$Snp>Xێ{jr?+ +wak X@'VpQS\j,%cXFf"!,^BgrS0[>Z[vp#0zP[K+L6TEG%O4 jߗs+- 4nBBkkv[~n30z׉rj%ġ6'6ܗ_$XNVd10Q{cqYLw]~^xB/ 1Zj@3~D QZM:?̖)06Gi:W:dfsϞlUN8/R)4^{nB౹&Hbo=W3Z6^+3$u#q:OVi rZ3Xv4hҬ2K!Bv{Ω߅9JFn}ۖ; +*_ -mv~rK-kSJC]eFp(DzVu/wݦK/%By @\^fn儀u@XΦ6"sI "\PA0.)L` X|D0 +&)^X"Df0U:Ŋ)`TtR&Dd@ @ @ @ @ @ @ {=p{=p{=p{=p{=p{=poHqe@bG@C͔JVޗN8}ƒzfR>Z LXX@ w] Aj +)Pc&̑NU#w;V$Ug1j(v%;_^"(f7U3Kix@q#&VAvK# :uG3)hdK'I3LMHϥ?D={GUb֖Hh`a#}h(M~{cvPlFm8-!b͂U[ +XIXβLU-r*8^w*,9v[VuKVAMt͟q^qh\ʾ㩦ff>3,#e *ͅɞÁع{A í(zjnu]#(sقc8 $HTHN8x*- @z] woF,PĈo U c?]@V7)7'Hgz fRsHAg4h0;h{_pnӸ3S23MgmIɆAXiIKAƉ§AlDf4EMիqzq>;IM5!a ~SxS(hqo*}n$V]"Z;Y` dX}'hR |fIvpka&~Wh"H1p#idjqk(jkpHΈU]2 +IMO٩2т4f-FQ,?LV~XR?9ԲkZ Tn3ihz\mZ `Yru1~zt I}U{ +7, fA:b,I"pB[oP{V +-DT|vնu֚&: +4^5\zS +{lXo1\0E0,GSdw1bp@8<1|ͨIZY`̖shNW|и ?hYbj6c8k!zH΃(SwbDcm$Ej-FIJ@@c'4׹rE`*E6ϴ1+Ju':F&a`**S*[QrX/8ƿ(] sm31"FʮCZx%4OqWLTL-xݐ% فv9`q(z:P6{js8T }*b.Ӆw3nzSI pcS\gi5O _"u_^7pɲGn$6+v*iX;?^ɞqWz*;Vf@5Jk;de3FB \9<"!z)H=1U WCbD>㹍虾T_8ͱQX/1g6}zۙ$dz\ @$Et7r:7hdlh5^jLr>f)KZwPAk5Vz^ŏ:U<d?d< ς\dzNCdxܮyFjFϔ=WUAoB3)NYzuW%齢ildJxCin䧮TfG+FrAPCʗAf؅[PV@nfQ4u1~z -MeVBgM3#<"۽(t,r~djHOg3]ݴ'|P,$HAhs#1M_$4V5CZybMP$ex( ߟ`J(?\ {t=ǎ&4s.u엁K.ʅmc31=vlϪ,;<^j.b.Fe= +V r߅Ӊ|R]p:ݮYݪ]Y0!) *G;Ve9v%Upi(v&EQgӄ5I_:}\ tw! :vJn KIN\]&zΔԲ ֬'钆y2t}Z󀓥f\k "zd:fl 3oI6ͷ8%j,7QHuբvv/UWx]vW%1>,hU͂  !?uG m߹0@hVmFYU6͸q"$! ',CaqS5_# ,̺TY %]/Pm!glqRۙ]/9~,4ϳ83dhe@:":p*[5`قa*xϐQU_gm̪H`HbR$ǰ5gzd`Xɮ N4^m /Oh t|j?[V#)cA:+6GvOsE\q*iPFqwGlׅ1Yܨ.y]͓y*]4[׬njpcUtfӹk|T/Vs(ecP+5y%HaMfSYP.[ݚUP]kg؎ľ_EnyQ3Ea9%1+Vm/:f7TA^v8='ͲTL`p*zgJT(O-8^u 4Wk/RP[7Tgm:>d?M^8]њD~n i,TM8a"T&3m5ﻞx[v]Gdۙ~ 3Ifb.\v&]h=ܮFd= 8/4hxĞ=׳]hm㝂_:皟D +LVLwMwg8Yt~14_-x:3R&=^vUط_gPD!,Ӊz*Hz^dׅ}_d{Q8^Ɠ|F ߀QR۩;SmLgz#}D"Urk:w#E!p=`'#5YsG]Ь y%-EnF+L!S6DVc:P&'k-Y1Ms;V08-O{~㱦)J1|/aUNw X_w#7Wr,Zg5  fNd&gb,&j;*NE)s߄>/J̪/KqބT# [\F3AsT{ 8Zn%tj-|zglZ4Qq2l}yj0i8v;γ +|O +~W_ʕ8}O3V 4_i%tDd@(nIErROjkƃ[xJ#NӌwaRsq*3iLE-YE@&X4-z_4(~Xd4ìWg,|-+&9<;`uB5$YIɚ!uUwtK@by)N1>Iη8eC=[> &&Dau~E)͂g>,z#F뭂T +Uv\ +\? +F}س^dw"xfr<=﷬;&=# Ry=R81Q7= 1mD^OQdi>vk- H1-al4q\l48o* *(1LtCUן2,8&'ۿA)maH +lA1GvVC +Inu-ݮ,4yۊF puSAm|fxF|oRLAh + WԫS𺙦ٱ +xo#?sdӥ "Ϭ0F?LDUb_ŞU@nK2牮j5)SxTumA&,%YÎ =|Q؝4 i:R4'i(₀x-@b ?3]lӵ8v_ٍQtr3!\s ? mu zLn<80{ \H!luNbmKl\̺Dc}1a!Fkgmﱪ4H惀Wp٪WhT<ط4ͯ-O.h s,^M^WcqȒgLN\CNՌZu;S լfwgz|ym?^=Wj1Yj4Ҳ\ + ΤC۹9V?t;nCU4Gn*'f}fo@ S{1SߒzmIS):I8vF/i=竖v0Ȳݫm@Xm~*GdtL+8=cZfs9Q9]L3a4ζƩu\@X9jY^WV#)yP.\vWs+SlY< +;bl 5̦Xa3=fF.7&9?d\2=/+ʳMNXx,s;RuS;q35uet;->[o(vFмyܳOlN\>O:0IЙI1q98MWҼ:ՄW4?NT*4 1Tj(|]o=Sʥ4w)̲^w \GѓuZ+jqE:$߫]" 0~'@w3Kx^PYBYDi-Hq_^x-081~KoVQֳ*O4n#eIҬNvA0*7\(s* NpkCVb(v2,a<(ǪX)Y"98Tm +hl%~>a9gÄӭzE`v(X\#̯:Q|ga]#~kV f"Xb {-{CY'kPC+4gXU\f(7n$S!9pDzYk|ħur,׭5P]98jтKTv‡e/zVf@0 !k"tux\\8_Pw'/V3),o8M:\dQR o~ =G=zkt;[oOHKZ.cBV=x]nsɭZi-F5KB!v(0$W~IJJc='Hu"1~d(vo R煆|(I}nYP.X*7nf{+-uUft8EƗQw$W2.Cibכ/<}z.iGq; ѭ[DN _Lkd{qДuU]ש$;^!_rD%d@t/sX%s10;ǏG Tw]Q{?(>S5}T?jE(,eBDO1d<4;F90|*.}8v$poDSAJyS- +@p4e$&Uj>V('acԂ롎>UvN=!DGQM>`jx첣,'۟|d&cVSy(]ն E{i5.hՀ{9vYM.72_4]9fVAn HrJVgPo#Po.v$.h4|bp!JlgM +6_z4|x:{ +mh1@~`w6Nc*|Mr4Nk `^^im̾:N 44Oc%v^c7&[$Twtg,y,˳'U}R||l +"ó멦Jo_ Ba^l:b{eY!jčɮӉ낺h32WR~4ǴT>) /Tm#r#z҄س`һ0-:"BO`x.]pna`bA i> bHWn=gܟq-rkAzjHr|GQIGʮKY,J3DI@廮U,",ָQ}ׂ'L(/=;v4!(!8G=]7ޏUmAl!"iq@2Df,ӑ詪 6V1oe%׀d/V[oa:V*Ώ8|= +>_TQ89J30Wh {/hű~}[1_&emr=͕[#$r%yK4,%V@~Ź4{xLm!3DweUZx25]vkHOT]p~nב _p*r\׹[5j.)}w$9Xq+dz1z6C sL+t'TOb| 5Ld+TiBjz虶^}]Mnz%Fuj&ǭ$ 9un ՚ }w|$sXZз`60)W/knY㪷s\[vOt/4x@s,\p%zN`#eq`тM`qٌ?bB %qH1^W؝ޏB]3D]6 2c8t)cxH,|(^gB#srsv9)$xW&A[v foaD܇'2$Y_l(z6LqfvfhAI5;Wkfo"' a( +GYF뚮d)vZ~i9BB;Yu Tf|Jv nT@x:c=51Uk,MruQg '>YTgwЙjSaJ qZ<1gQ:vJs_!ĒkвeobDܒ\^Jsb~[19#&r*Da|f!쪫8.X%Q<5([)iY 6W*MFJdjWDm $Ng&rNx[$K8.7JX1"k^j̪ 4Qe*`w>ZvPBj0JD®6ߓ_RvmZ^7kflN\M?N?FLқ:mnjո^*Գ[CpyBPr^o:0 Ewj`L{ao6ҳ*BE+ g %HR ?Ԣ=ذ8[`J܈&:R wS|]/#XބOxS劻Ɇ bmNqZzܲOe#Bs ۧ@=2C1X `u' +.:QzVZHRLu({=^B}E'=DDG,R2:NwU6Ck6MvŸOfw^ $n}8˴BKLh$Dǫb1:!t>w͢-:6mFHjPjlIEbR}O$Ef =GdX&E\qk-Kݢtlʑ,'C(Vo:{z}˯"Y^q-O/2:h '#~,<~Ȯ:0':~u0O19 0Js 2Mg%rPe>fD_n"|Ug^|gX_BJ Sezev3%9<]@I\Lu;S + ѷ'U]]u 9G$m` y7Zm"]P,-_e3\|+TyRs9G_b5X<2F0KlWR>ay@.‡JALP2,]שvTx`n+@n;VjInMtY0s!rXB\E0]GMax8_b$1`]a0)87T{i<[Hf:4gY:⽊_W=KQҙ +*5VnUx.Sd&J5#܉[ W3cgiZeJ`U(%vHT8(=88ޖ[,OAW h gJpj F,NeI!aIbG b\shUW˱ցJ ŨTy-y0F?EeNpg47Vp$x.^j:!f=7,ӥ$t/˶]Jwrm1WJG1 -[z+k<n1Q CY`0^L3|_b[&(\>s",BPZ="]v%,b~普멮U]Jo(Bi10”"RC93L8JϣypFD U"q&t"A +Q^ub}7WZn%K !XV*`6"Q-os+ۉhe}M +6Pg~Ș^)fAamc.w1ұE +7Cjrx)W]M*8 +PHh0vz)}.*h5:Od4uߚM V}+0A8Nf%09imж.9./f3[5 SZ Ug4g^XVd2HW9)׽$r<'phfmGz6vWwӪ$ 7Gp?InbNDLqVgj9W.E8ʳ F0탎 Zs CMx]fw!FIϰ^ Pbf>V,Bl MTGZtJ@j4x$'fc*rJ|0JgTX֫dffɭ,j w2xd(COe-~Iq啙 AC/8ŮI2O¯4@,_!ƪ'rOR +gQ$)t!HAGZ{d.vQ%\4edT'8M .u,&#f?1 "R^[IAvc% =ک1yU3*R**4's6$ D5E )p  )fb `"d"g8 e3t1d0F 2tC32CC2!ND}! ]!LQ ]Đ '>b. &¨A. DE"E""@B!"! ȰPdXdX(B(" 2$ EEDD@"B"CCA`pHH$Hd" +84fe9ec2-68b9-4da1-9969-b704541d86e633b-528d-47b1-80d0-a8b736bc06cf-794361079262l602371h W n Q48~ :U.'+1Z4ҁ^alQ30x@@{LJށ: +5 +Xb6\q]q!p HPKQ8`8X:4db7d0b41a-dbdb-4fe7-aefc-e8ea20f601e40f82520b-17a1-4c31-9b81-e6fe4205feab9773925691gˣ:@k4:zmGtP[ HH;ߦ@Nq.@j0CztQ`BT'g@jvXXEH}8+$40d499c9-1504-4eb2-aa00-492cdcfd8-ca5d-481f-a4b9-935cf7e92dce382679353050235496977184ebbe8f39-8df6-4f29-bf57-a74a3333cfb863b32569-6aa0-48ed-8ac3-2bf9d63ed79943882m10SVGFilter / : /XMLNode : (fxmlnode-nodenam /valu1t/ArrayeGaussianBlu;childrenin(Sourc2attributes) , ; ,stdDevi(resultbfeOffseodxdxdyySpecularLightingfePoint-5000z(-20zy1ysExponent(1Consta1styl(l-color:whitsurfacespecOufeComposopein22Graphicarithmetk(k4kk2litPaik133MergNod20%yyw14qѤ$lqD J$`8c8(BD`BSٝ59UkbqԱl:{sLՅ܈)(]UU,YfI$1T~#"D +Xz"Hkye0=i5Fx;LJ+^e^2/W-pbug:n %$Ț*4hf_@KT+v&EXQ\v:!!dir { *?ڌd +O> +0#8/3i-; ENQF5 "Ŗ~;wH_1Q@ݣvh.AA`H =`F)&K]C(íluPo34*Վ3MOa!^0Xt`e p$5^@ 04C1KѬXeu7ڟT̗m2ZgJຐVRX2*zVǮ棸dY +ŝM;u$t& +4\:::)adC`E*hґ dL>=OT$,*2H/IV{AE¹(؈(fLU[,i"2Ũs(pTPV(eiY˻B;PdH X&D A2iL&$, + E L`xhTY&F20X& +X"Ѐ Xyxk̄Yc$>˒z'%>fC֔Iw(:).CtCL7}cW^dz0(h\h~ZgE}](t^_4b}Q!1浞yo=C,.ev=ܜhnJwwNQ>)il9m-zrnɷw~uvuEi.K4S55N!YvEyw+KOCF9^.z4 +!&OC$<̃Q덷^ȳpOkJ$G|2 +iQS#=Q&}-nqT<"n/JT]E7 +bR+yNT(ExG=VcۓkigQ>S};Fz(hOI:ͱRdڒQ ,2UOmfQU I"HʄC "&h {_!CzԹ}.CȈ}0nY3Ga>}$/K2nf:XfJ,M>e(<׏ԝb=vC{˵ѱ0Vry8PzRCߵ9Y`Rsa8~; 23Ph {gŝN+VǾYP"uﻅi{%2:i;>vG:) včgwogI~NfAjjWA.նK8qAlM. IdHrFPFԚ>șY(WJ}k(jǼ~lf=]|:|N\ƣG?K1u-x7MRCG U/yQPQи4Z0 Sj=gcb;ncK[gt4oս8le*JST!լ8Ei*aW\X`X +]F&4 f=Iz<93(kyk; w@x fAnz摟h0mivnkS|ǶtIe*, Y2y5잩X1,\Nq}Pͣ;p^R9/1$)*'(h ̂l7)61q4`3mܑi ,6cgWd= K@#4!| +cƩbI|@[KZ@HdtKQ +khHB5,< Cv&[ pnpj _t4aEI*f +iuV0 TLd%P&QB}C'myA86lӱjQ㵦k9W!9X]X`IN5M" ;R:r[ +ǒ#Wz$lƝ{|ݽU +-i$=#T@6ǟZh: +gmE箲پa+lj8ALc`)l D?\ˉ5 ,xM@/=NLBAXƩX^v2l*(pUrBm[cU}mp[R2~^/'G'I;[&rj yD=`xnY6pCk>N+!']R5*-w>u^>|J>cqƶF,˱3#QSz^_Au<,gjUB=|-X*u2ˋF`+j"clHZ[+`#D4N:/-'1 mX>Qis"Ʌ4b=|2YIe-?KLDi1-x/jup^֟rQƒ)BiT9KB~m*;wmCO ЁM4fт[cPfSi2OjIO6Iz$]R鉜տߤB}h夈R*`X%ixzY96!e?N>wMIX۶tk`[De_ e-#(N[S(_[uF;zWױ(?I>놓+4B5iNf*L ί =m+&<' ڟZ!$$RlePJ> [e]G5,O@/ 6[nzC?i=LN]vY\ ie_iMAUlyk?mnU#UXؠ\ +MS&mp(WRސ%݉CƧp;lC ibMv&RD'c#y!XЁ+;`a4^Oo\WR\H#g-q'aX Rt.P.`@}"cJf(SFSG儨9w{\Qb(4q* jJ +V s^5ښiMAE9Xc)EgfJzTf.YKE>(9SJ? I kHBol*^3(T 7fE* n\\˴(CwMVƝ0}zEeΝOHj#l06NL6c:k-b*2#y "DBAT%sG٧w+8T+ -8 N=OI"P WI"~V48wy` @bu@RjzFwrb{44fDs@i4ΑaT,TKf绤09L·DqWQb>gWѢp)ˬīfhB/q96C켑hW! +L ?9ai,B ^/al\xZA,}NUEH[-e$K0U?aR+s҈>[`u&O^ +B85 ͕տ&g4aT(&yBSt<(R2{&зRpd>6ib_mCO$iXʌKbͯ-I8y+at +$[~ls$<ةՇfbڮmXNTR&HN_aJWQ{?U/CR>#K8YMT'Đ K6Ӕk`!\!iS Ϝqc?)THPe*ʤ{ƨU z.Ƚwx'9Qq-.Ƀ[OG!a]2d6Vz-~|vM&D-չHTo2g*6w +m`]f x][[BX#SRԑY+/ܪ@(ZG}Ԍށv%{ i*?`)1~nʱ4* ƭW)k".ziZX]co"@HTѳP}-*޵~[)ZG9 =]$PP3<fGN" P +rDN"E 3̇A;|w @5C1U~P-!述SvP/(LCE>hRp9CKXMޞ̙*sbI?Y֐-'಑~RjWT֪W_?se5BG]. v + %O'-ae#$(K⛰$ +y*1('fwJ-FO|Fo R?`EB^G!< +XR~u>t-SAwGo 'eI@|˩93/r?^i&7 +t㏶d-KaE° +y1weX؋@Pl97Tj*鑵s3!5'ZR~.ڞ̡Gt  EuH$o2N uѐ?(vwmJ Ȗ +QqDP\4msNmN0z6 Nx~l,D]n{N"hDk7Yp_e&/6 +Uvt_]('WpϢ/9%!y,j۰DX5i'@/=A,1#{7I% E9BMK֩=yNd g t6?lԘ!~w@ `b[o-l n딷(i:6=&RvBGi|))J6YKW[E[In] 2Ҟ<?F#x"By4hr%$NI GW}0Rs5NKb__ yd]$#`QV /4hu#c}{ޕbSGN^mq%OZoզ͡kϧN`V{ctjCUQ +DMFCR,>5n{~ 9MZj(m.ӌX\1pL ů}f; BF#]7P:̭`HBJ[{M kM쵶0?w4i5D췊}oSE9|"NQ ﲋ,i`(0أԓ+];)^셈);f#t͉/k^W@S`p-~sR#d0rC@/CQ6;FfNc&TQ"]A| ",~ +:J&L!pR6d'XG:ހ^ +%9Kx9ۛ+f@0Un{iJq:E4 k5-Ux΋Ym@>PA8}]DX_HUjѽ/4w:ĵsоbNU|؁}P3tfÎ74S.G8:JT9XÙԬ.ޏ/a}AtiI}4Y&R +4*TmݠV8&7qVbBY)Fj0Gy⨽t$ޮb`.2UI(0XU,jM)A)gz{OyjWlτLEgQ(FLh ]:0DZ5zߗSO@k8Jɰz}2)"'L:vu~f +S'iMTimvZ_&IP_Hr0Kv*ƌF'΂tG nY +@_*KےwT'"3Ϡ)ʤzT(Lq~Ca1tt5QW^ax1ge7ʊX*ݻU-j[N%xI{s,"R\95ܩҸ6:5%F̸M$zM[8&WCPw|(睷/]]R0]֫!E_t0++Dt TZ_˶@xN߷#<M)ar٤0R~ɭھW";IU(yvޝy2eh@ܛ7/%ooN[rXi`PW%9)LqN3H '^*O&D=FI&)eS3+P6ird'C}Jt5ta >R>Ɓx=բeyL0.Aa&`ˢLM U=Y.sЧ.&QPVH3ĆR*oŦj^nx%ؤT4Ϙ\BhkxK7D7O\W&h]}o! +Be?^?1z2T]x#TʠЖλG@+(mvDLUUὥMϽ/SDO╅\Iuu8옃j|1kWiOb8 :d JQ7+@lEUC ++Fh3wkdz7&%#"eY1UVJ0#c`8R\ x:jOtA^ #(Cv'@Gm_- +B5Zd)v2X>wGV%aށij;YGץvxV<גC~%2.p M`G6C R;Phϻ +yWZsf٫z-uk|X!9WA7НhE;ey iZ1zչ86q>s2ԊJKE_ilft>FOM ?Er¦H[1I +[4 F& wd4Q-9n{7 &hH];?Z>q4.:`Ίu8Л=3jcc {Y9 + zs)0KbIG+ #c}i'Y R?kܑPY)z6D6㍚е Gqijw/P-Yߨv0Xl4͕%8gDG_a+ F\s#֑,DɜT7bױ(XeB@caAU%.*?qzaА;'#un n>1#B{@6R?GF4 `%]dc^Qn 쳛>؟D-8Fԃz(;mm4m# b%#Q*.F>rībZת\LӚ`0#\Ȁdg +<)avc(bRگz39[e'IJpCOjnU #In"7 uOPP[#5Bo\XBMt.n%:܄$'njy,p|U?ȃ[6Ӂ6N0a3~A@҇29~. 8Z|۸T.Dd2T௿b{b0ȴ,=w ^02 +p+\:/F ) )f?r: _ +@bAQ"x͝B1*TV{[,=MвiTnԼo|QM̕fރacC SLhuJvbG-,s\lƁ8ϴNK glm\?q^lJxXB@mR)ށORܟkYQ:dr֒ #h1[ +'+y#Q, #h1ϋn{e}J8/@ Gj !Y(oVI G(DhG",Eexr7LK<)Wk@l%QJ9ֈK2ZVSyx}eؔɂ((Łk`y Ka]^0ÏoksyD%8&~Qv4oQu}+±{][ _(uCSpVE&\=qߝb[u?v_/:u)2;7DrCl, 4bĸ T8nP3ިE+BL~YDI*[ +~W 5⹎(*wj&F8uiPԩÈ"3oIJnS2iaN^@ vRx)nއw9hR )HnB +$҇h9 K]R7MCDB\dq;*hYSVF2XbCOtE^'x(N`fIqĕ=[5Ymx"h0 + %T69?xa6Tdfˊva%/ka`S;bډjqs< +$h98,xPEv (>GXq<{eWMӏ@Tv"XPCp`b߀~ o܀ +5FޭP$0+`<xME| Ҳpj1:-4ϋZ^iP Ȳ9ъ0UصB@"Q}z`Ćp H/E)"e@)Ś߁\9[n&" +Cy~H(49jFǶ.-侽c+r_r#o ['n{8R6iTW$e>q0N璬E(q}B8\`(JL4韀ij 6}~$Dkj-A)6,ʢ`K`|B Gup! [H(gd[+pV6ξcJ NJj o,ˀ@CѻčT^eb4C]S4DGvh d굯Ti;dr8w1Bp+,\N<-JEI͵MדgzgXzx~t9Z.tMd*kqG D5m$W8X%gHS-hJ^Smx|.uhx ;dvL" #]P@O->R{)W8>/N[q~Vo ZT`u mb}]s0gKDKeC,0)Q!X76 ԐžiSL2P-7Icq(Jh.*l6Z Q:oL33%}LSD[S/αb $vޙ79lӰY^h EKa_+v.f~KJ֭Z0+CU`'F.QDm0_*lDI6 + +#Ib@ǭ4߳[&a<_ K.5:3E$HNp8?aߡ"5\_jafRkIpdKJ? ` = +y$/+ȏRG߮49}7)1{ܪOE( gʖ( +[^P׆2>s}.y+`ml.ל^9L6{`N7W52ձFm oxktKyk| m0xsik>ZzmԆUs~q/e.mM +js;؜IKKۻIBʾgNNy\+תn}٭wzEX^P(;XRf UvFyKfN/y1؋f[Fl`G:a_.=Y̓T]2_,_P9W*|wc(ym%Hy5lfCղeY^5nߩ\*)H/>uo+:]+x9 v:X( ݲ]^.LU5`_e/ڋ5b^ `u(On[U]~Y0XHwb^~χ +`|4>K=rT^psѹ0K̾S*toz6y=C^9Jva^˥1I1)f6VClߔ͖{-̾-p\06^Vv[ cs3Xuk>uNrC})mv~ ;=S3TSPlUz1;9&5Hv VT'Y -u^،X>P~ea9Qbl}ͨYVJP`vULi(d3v+M +X6Y^f޶MHb(Q:oVCﶊVeᯌfpLVb> m_#wnkAr]ðW,Ki96ۙg +W19Tn=%|,qze|#aMu@fTJe[۷lI}ϛ--&^-]Sk e:^ٸ20T3#*q:U aSᔚ3 YƤ>~Ѐ/zd +JERo eVF@䚭 7^lԜkm::^[6\/KSE'&ײ5skRZOs\W"7w 6G`p@f&#zy޷lFLφ>E^ AOS]窭o~*_'Y>o%dW~>ml_1~\vlk JPv@u>öҤK%DRM +$i;(u|l5 +ï>Ǒ$ɲ,2,˲$j!:5fs9ЭکR$Ipn_|OEn_0|!}}=ݾ׿!a ?r! ~_$I}پnr!}nC,yf^fw|8 +]kdP@>`EýEکe[)&a.28.pV,e߮ 5ڕlnWݺ//y+ n:(>  {-@mmyn3kX^s 00aoW~{E_׻}H"B,)fs +~תچ6ϗЯ@zʎ᦬URN +j{Ez|&_(l׵7Os,ey-ղZlٌ 0>Џ`8e8IPx}W^2N0جn(Y6j~9ug܆չj,{圏GFw󗌞3M5emiSrm.cl3 gp/0uLRپrC}=C/,[Ʀ9æm׭W.i;6WZ,9 5 +1lMahvͫ%Px}Ɔ -VR~z}o")~omm7!9SB[aK)|R2)}op!z/vWn_& @oWo! j]6^_d+:ƨmܾqFՙ{B7F^ F+z3ܺ`A6Óߺ ލ![^f|VUlWXAH6b +mgDK}+ð5ҋXn xIvc)j}Hz=Y. a~Iwχkt/c8j2,6/Fv18eI/~Џ{;8r"fHp Afq  KͲdE_B15AR@MQ Ű$GRr#K2HjwEp$q? ҏH^wƍKG7bcГe)z]_G {H(a~}у_G2d+^aCBw$ v0_R+;#uQHHqo8ye>9Q;F߁]W15HbW`_A߉#$;]AwAn<a'}K^/;ؑ]#?#p NC2$wz,!` ~쾃{ f}66PFv}عȯ(-:Xz}^s#Ar/ ?rmGPGp,FGv؍iE]V^`Yq EQ>Y#E?_aฅ`>pIca;G}=,E?~$>~"'=No؍+ve #YaY0F1va]Yn4K~\QP'Ůa'Gp,G5w(n>,ñn#Kf6b.A{F؅E_DR|{Q,Ekq=Q=Q}cHdN\‘z؁؁p,=OvIz!Yz! [I~KI1H1n̓zHzn+/ŮwHHU̵cK֪9ٲ9lUdt\{r=CHW^E`'GQjF_,0o jtK eׅ>}1A0^7XeY~SF> {}ٽaG~  `{wR߅]=A={AI)=߽0 &/ {{=Aw].`EPEQ C7zAQK/z,w}{>{C{z{}{` ==APQG@ Ð 4X㿽z{EICw9``)Nb8vvaÐ Г"Hd`H$z$=I/aI}zM~eXe?]HdH]X$!z!!a;6 K2 K1 R ˰aY_~ p,zaa!]!聾b﯋8zuP EO} G1a?/ } 0 C/84YEG?ޏX~~Hz}8v78mqd CJ>ɐB}8z!Ad >C0 dޕ$IeIp,?I/O,?}^OvnXˮ{{Cw:-پMcq-Mrմ}]ym2h}KKvپϏ>zғe8Khrxa'/˱,KR =k +{X=>lG{)7z`? vG $X~_O-ej!}}=Eײ]X]+oQLSߧd F&Wd-n}?Oz~QN5fߟ%J߿a~²{`Gzғ=IvGn"X]mAW*-=H翏XGnR??jK/[+]mn]JֵSM=Qx-[ѳ:^`5ص᧹4iZza uLo}ڻ`avk+OA2CQ׵ԃֿNs0͇z=F[)6Q vn KQkm%~{ERKî®d(D'z"Y~.NK7uqAwZHOIo$ZuM\}1lާiZ5}k:ǍNo4M"遟hDσ^5Z5J/h}[I~=Hkho`[A{ͥ G2 5ѡ'P=p5Wj 7/z_~ ~wRG&pPd@RsZJhe^hI5%g?~rR ?+m.ҝ,=-$ّޓ`I~z$0uzˢ5Y\9E< +d̛s$qQLEƾX^$mT Vӈks"lF4yy\dwDaSP$<O% (qVܒodagQW+0ޔI[9*B>y,yͬR7,&fЪd6P.ʐ,O kPnB)ŧr̢ F互}yǥILWAVF#bN vX r +tӲn$% t:R{R7s)ا$07ϻB&f2kxE]aT +,AF]N4ENbR.w3xv6O9CԂ$ɣST6[Nig*$O;wVl7/OQZgyxvq0ƫ)d(0pw4i% ZgA + *BLpiyu61Bh +PG3()!jb_AcR591^N<ńM$xV3 %K{<hmY?0YaK)fߗp4df;Tr#Q? *ޥCjjpI:SZoiS21+j<|VIPW,پ#!`.o0dsMҧb>@R&+hZQi'f L|X)6 6;0uiYlZXaE4J87gBw*%D-IB!-DUf>6{tZ } +#/uJ~`6%C<x`¡)C+T#X˝`'H̞YO)C 3Sy3d;vv6> +b+0?W:x^FAL*e) jgkG7j/ UTi~Enf'#юAy8K&f7-Ť:މjv+p}GnǐٹIW(3@^Ui6&KHr R;LIQJ>gDylAF < ()cU|=0hnLx]h4SxN#4.2D9 烇 _1Pe5B^'qA,jcLK:,c.@|XM.Фz9t'_zp%UH P RÅbDOA0ơ&^Q\ +{ `pRKO(%%$i@[[Gn5`1%,/Ufĸ`LhiTsyű9U]m>q;8-T}ejD)V[tʑ^sD!/}RBc̀rZC$"4x 5*s%t2 ({,Ш_r؎stJŁQmi6B]ٍoԃ DO ( ]!"-䫒3@W Ύf%QL-*|J:35k|&FN`gH)NNytiɫ{lpGd0*P SkDsh99^ Igz6dW<|!3D|OȌpZD.HyȈ"AW`9J:cۂuNTdS}Aa4|F1uR12853#cezgÓg#PЌ{6i38xXp0X D:_!Sں`P=ጵ|odyBH +kX‘mc )IJO ]_Py>H`urh>q#haR\:r&n0 xɛ1UIsŧfOH \K%!8^ +WޜVZ6'Z쌕!%Vt. iZXZ EXIe}ugt=f" C@(!7Z',3h,љYXP +kp Aʟ<.S:7 , 'kv +dM4D9m^!)\%t0+JE2.tU0t+ۤA6s>hC=kM$fy7)Cu,dF&dh;7nerͲ *K劰3wv mfVuL#lx0P!rJ57#IL>al865Yzʋ:A'2x|iZLdbP enΖ8ɥ?s3Γ'na" a2@WP!-s:&#jcl$ĉߒ7ɀ4aAn\6!e`X\M~kJF%Lq#֨fI0-2TVoXL,dG F9> 3[4'yS҈C`p0+-.B +B؛1ǀu_̄2L9橲` ֦;JR'!N6X{ ҽ2mrϭ`bB0lD8o9!‰d:#yA =To8 nP2w@|B &&#.@a5MiUu?Lqπ2ĜLʔ4v#1*Zt(/܂JGw`O <";fB+'WPrk9YF4b(aGE/^3K&I+u Z*7jXҜ$cDC,|TIDjaZ&[yNF79%+8$FTAG܂~-)9ܷtI,L̚Nx!qZ+x#1Jq@0K,8zlQ ttPX@}"2㿋=;yi؀$Vo. Uh .= xIt G`gJ=^܈:H8P",IHgh;NXAe4ELIchi@Fut2i9AA(EpN!8\X]Z¹%E{źq +,& ;1 vL,+O-TL5 +U v6b,ZarO݌m͇iXt V2J0yU!:hdH}#q!"MG q* K8*t(OQ8x2N +pBAF@ʣcÇǢG3 7Kmmٿe5"bvҏXaDTOGљDm ,, p@hik^3p,4,~Kx+nS:'[( JL +\Ri ?TAF PȲdxQ Q:D8U/RP_ /B2y*t.bGz-,\ikac(B_g\DFbXe X!LЫFܝ@{@ p NLf3؈{ @ @H<p2wȻ@ z" L'a@Dɻt09uI ʦP%nh(/\SۤbW|"Hi1UP +Z2m@ |38#Vl:Hn32 uҐ]V]`9Y$ϼtRɐKڀwz2Lș"ᄖh#g@XLWG!$9-br,ɌbmM911cxZeie( g¬`̥ȋ+ KC+La +FBUQx& #N" 6 akb4Uv&! l-b'1Pl+C&r4S}ґuvΩǷ!#,edI:^a(eva!Ź_ATMZ` %vղҀ`V**0ˣ?D؄&CC]&TN heHgwӫF8et8pj8WHE8ϨB(LJGɖVMk_D,Y&HBuBBF=Q)|]#T2O` 'F( +2pi5= (DĆA$ 3h\Ҁ%J/5[ ͇OkCfukp#}ȍ7X1r;\4u]Vˍ!XC:VB:H(A*džD{к3 +{ٌpȢcmשN[s3zĞ,p5.Y\uP["UUh6yGl! +INgn.ŕ}qb7y/!I^(R!s5C<cSaujVCij#TsIC=[Nm"B1YvC`:)IM&#Y#}2P 0AwodŰ%CI@ZbBN;TTӀls uMJ0üS5󀦃 h:N#6(Def@ җjcڴ<2 |FsqtTP:9+>TV4]fbi$񓶬0f( d t:zD QJmJAA&d(J=C!2*>M 5׀̢cF`n<ag@h݌U%^whbf1Y"i(x$=}ubLUr . J)R?YC"$RB[t9yo;^hX9=Z*1(?)|C ؏Hv0`:ᢠ'1 45 RV8\1 #y9@Fs8MaL|rIT@TG#PD0=/cVXDL3%C'HZJ +y%hi|ASt 4}P +fA`N*FI䧫|?sV.O]Q>?" }yq;ymVXi$ "xeK&ډ)-TDmL9Hss! rHPL7hSze\0t9= 9t@WN3 Jg!GQT<.4hiNʰ[0. b d? 4TMyĝXxdst62PShiHn0BG `rtblyxсϐ@Gn`ǧ>Å@"xzeB`M)hX#PCxo"F0>M %-U⡼hiNRLNtYd38E*Smʂ2}oNH)^Jx@η2H2Un(O@ Bq`f^^! ;z(1X"j(MG`$jIWd< 3#aϋA<e|?_Rda4݀\2UA\Z'J<c29<؄#.0i;XGza@xu +`aOIb3ņQ{y3 QmFL&x`UO8i~sLTTAUDImW+ڼK+6K%(OU ^~!x*VŵP}Xpڧ'fO@ E_0 ͐;֝)گHM5dy N'H R"* Rd0͹S0P8-c"IMifBU1rt(x(C&N,qAQ$PG1| < u9S\ѰtxJMiiIQ鄁n?|6L'YA%s&+`},T_ĸG1" L!ibYSnfԗҚȀ` -`F]~9aE1`!? '~B' $$b˛Tml!C O%hb9.4u`4^A$%|.J sЖE],h!"]bnjB Ui1 U9siP>\IIUXCE`WzN\%bha*_s-'&ݬ!8NNÛ)hFqH^ QMj]Yb~Ԭ_ n-[4(/7BI}ރJ%z'**hr#FVMjd Q+s nV>ًC1ށ8$h+# b3@5hX(4]g4@DŊTNpQGe:8F*"k&ėd،%B*F C RCfFpBUhtCTlCSr(waߍ9-VRI $v6D*Յ0h B<6K)IQnBP;Q]ZRH +[Q$@ZGp7%]X:|y@$hc,/6$Q,u 鄽O=yNR |Ċ/l}aV!3' +"i̪2/00U;6{%PA endstream endobj 15 0 obj <>stream +!ƍ(E"XQGVNSA5ԊWImL*0X@?_ŏ &obIQBC%V[*鱘+}W9UY $\Sh*P ưu>`v#iNH%#|DfT;5HiƫNATCdgC-߰O?I'2O(RhE ɰ̹M4NƋh\Q֙I3c`ؐOt@y(8*ٙsl3J`ђPO iZSvH5BaֳݰB9IXV増D%7H͋#jHSNBP +꽲Aj@~$@m򁘙5Ƥ Ti܏x30&`\BuQh Dm##bmZhBh#C؉"0*މ5O;[<:4r #Yں+J@k]ԅuD]THOiDjR*guR(XGg7.re3C;>Ll玱-6_HE .2!@6!bm[Y:!E & (3O[_4DEbnƒH EbN%EcAB+A2@l̇(3=n=s%YX jÀW253H ~ϔ34#5G$i!Rně6 k~8Y'O Ѣ_Y1CjlcqTJLdp:G ̜>#v8/ `{-䟷WHK,Hbh*y(^eH(~yQ̉ɤ|d-kvrZ53,J:WLao9Eq(I^Y`萙 ֪E!A3~q<̍H:@.\iHcGlm!`RgN`P`}='V/Sbp!=)ٴKt]{Aؒ )if*qTwTDtm!oIltBLs q@ Br"W֚mepa:m +iW1dN{,g"63vоP2(t8$(o EjKl1㡲" \A57bSCpZjVg%z(X3|+\Y* ӛJZ9y?+I!owʕW%WV-*Ae(H@>rЏJ|V&@GI2ы(!zJ-ͫq.d鮝63 { V:''1# +\|Bi\xqM%5CrH2Y7D?ORʈg7مJԸY$2oJ2D+fѐQ$xÀ?Jk8MKdH40X`\!Е6=р/i3n +29<@X!V4$ˈΕh5ŚaA-!m@A¾P}66X WtEDbV+$`֏.C]MD_\3>)քQ 0&a#XoP*fǁa̅LDt}T!$2ИaE(A((N8 uRW@X1&05uh,e +j1!]FNw,c+l&S~"Tڒs,T_u[<GOƑ,^ `mqdQWu^E,Ɖcw`I.`PRZQ=`%5b1Vɤ<@E]SNNd0z.O  +|-r!lB:73̵d*MWb̃֐hc. +^_}vrڊt<ShmX.I16(8(i5*,zu9BjzR@أzIVCVTN:4/E.}rRk?H0@5Į(¨gؑЀ_eTNqDdDf}܄Wb4Gackd"\L YIs +'.΋[\67XkBܲ*A!"8S)7k8"K&\ZqyLb)>r`B!`߅zcLAfd#2vt+|D묝*$a9Mi`IYA5ԏq/B$ ߟ[[o81Dyބ}֙bzaFp +cfO N#d%6G]cL Q.WAxT&C_dc +i-@xUar_ +Gr?)HOBTiWB/ S*mbߐR +W uDt5ã2?(Ƞ+Egdin&-ac&11AԊ" \NUxJ<C ܐ +GcÕZ|]9TDB؟rᘵsk8RE+;BܗVe],d +kQ|UGfYlLNO ì BRȒHMzB"DJ뀲)Q+f'ɪv^Zl$ J1+%|E5A )T#Mp1و5XGJL-K1c-B DrG QʀMݭNY\83izl +k8xXA,cI6~8bGkw Ul&D.iYυT.ڨK2 z2Q'>\؄F &޽rv=$,P!ʢpM4`$36 4LHlѧU=o`XBJ\'o,pڹޚ˨!l]9ZIȯx+Lhn({N5 FӀSGsidrtM D7Fv0UJ9MFJp[52tXGǟ$p ; 6jX㕶lրUppeKڐ+ߵU'R:N<zP%Q\NFczւqt(YLBɓa2ȋ + RY:tPNJ  tHw*`ЃkğW@0"7 pS#U:wC#֎RX@ UpH?*P!6/ם + )Sl}.Q\5Q!~ l40VNU`)p[zrv6'S(Hhs0h:i'82J<)muF1C43ab;=2 wz r;b'r?H-9:VǑ:_Uy$7rb2jO`Q8C3֩/!j:U8!婤u;jZ{4h\U4 +[\NYٝi1|Ht-]X%rJ"с S4C !xU|nBO:? +#ӈ*JFԄ,VLkUZ ̀Jc1߾^κk4(h"0TCLBDX*t5 "7m/BE&Dh\_pE_p4I)<*Cф&s@=m(, X -UP̀J>UAH͏HNi'`\NʤVRuA 3SaF+)4h0 CTt@zJʓ$Hr !d ȈiC<1~K9.!Be}4Nkb)&o+oUmt`F|Nak!wѨu 2%GrS1=2QDuyO Mj Ocߪl' oE)y`['S+ XqBENsi"dͰ,ͺ6cDzrYir@+rdTm*k+ud9Et_04rtW@'7Uv Èz>k>X/h=iņvDT3lo7F8$Gw4h|-EN@Pά:iحYw>6${.6F˯4 6=ݧ::A=@wQ+7-#D-<|@8OZTsKfoWq`H 9fx)IG*p1.t$Ā&^)=EպLbꟚ$"Aƕ5tϹ +8.ff`^^3CF۬F.v##'MaBbdb 2k015jon\fbk ԾaB [O`h|=;O=p(-,l[IªgeU.'][aMvn3xAR +:i2b>n'%$p Z^r&Ul1#m}fPHČ2oG%څh,U1鰦[c(2AP-rvյʷi6a]xy}f7}!f0lJOUho=IvS "\BTV\C]Ex2~A(1~XRkʙrU-&&kpQx6u,AQӉ-9/ti73:A.]D=6ZV@~[děvkǧE ϐ_}88F@oKRDUHЛ](\u$bAsTB* N&6*͉qUL^Swj۔(T!T+Ͳ@DlT}I)784:Vq(\Sdm":1'koH܎҂|C ^ \ +M IWRpŜ{֐`XðW,},QC |Z~rM97v8f$4;'AmPȼk%;/?-;"Tt9LAGJaii%z6ėC,8/F[fR_q 6+YϜ>J$ #{T>δf\5?}j0(9AɵZĻn.0 +L9Uy %2ehzbj7"ځ>Y㜾fޝ0\W@*HΔ} Re,0 +y*>stN,AگShK<98cnƞ-N}ͽƱ +dҳ@E.mVwO8%Lz9'8^c/\12Dmg@6hI9 +)z(ÿՅ=E+$\) >ЌU{|, +jWA ZT:Djr?Zn#k\|߾$$&3Rg~GHS_[mDJZK 6JgOmF :dנ!_7;=N7l{ R2q +b#RWo,]Wi_'IH WҺ|Hon 9ONI6`CRnNkH)|u? +Z μ;Q6'7Vo$ηy4)V]d/v_kV"NT2hyQ.ɍ†^-yN>j4>)7N0Mz~:0v| :ڪߗ$ Em6.4E%Ϯ5~<=, U2Kw^,N&4Rh&5A5@ 2n ?@o@0q+Zo/TA `7is@=:;ە#{ةƉXqMqJ\VrƔ۶!Nܿ /!_2Y3?Y2M]-957Ŵvtʏ}+hvZ)2֪ZS7l6A"$2` O FnG;@S*%xKxkOz8ބ:~ſxӇ4?iOJsبsV߉.@#xMVFmH\e~ 5Բa=lb4XXlTivWWðC\Ic+hJjFˆ(`VJdQA%ټYFx xqe`j `欢XX2X2,ΘDpDFj&R"Q.K/hJٳY5Y{sLL\$-MѠDA~mHBNE)/߲H>PDPqQMw 1e"N)$ A "`R;Nnbr_,7RJV|ŮwRq[GI>N{ 3Z}_B&qVj=(CzxhN}+:~1 YOyv=2/-c~d/+"vO @պĀ pSϽ'ͨ$#YItuNI-͢~_םV.5wT+rwL_LhV\S=NeB?)ˤ^Gd637@3u4o'ѨP|ɿKL <ꢁ-Wآ*r hDIVmMn+ \:Q}p~i<؆'dqC ) \Kx`&:U~x@Iᐖ= qlPㅶ izs8G_ 8L vCuΧ|ෘTI@,%cS͜ğ\wt')[=p;zaU}'vУd%=Som^YnoG*wY ZA>^1+ q,BMVGp,$9B಼ &(c$ gw@ u0T,Z܆B+ð z6P7m_.1wuVʕeaV GX.Z8ɰ$ ~gJO*\mdm)/,"}rBsV+-\$Zަ+&~m1Hמ~gtSe楠!p|}>iDl#.&\?R!UڽO2VFLOО&IlD3vʥeId +V%9ԥT-IH1ZPS mK!HHgAN $˄&4fD&r),g/7luv+o-+LВ'S*0lsV+-HO+wbV +Sk1ʪ>3ҿnV)q$#U^8hPZgb?o^ qljm2cܪNAqY~1ouGXEֶ1׵2`hm=T2/)]<0}^S77@9sˁXjooiZ3 >\&dv-1Tb`t\bgU-+Zv!oxazkO h3h: 82B0[)h8nro;FKog'ӝ\Ɩt^Z)OB{&  _l' Mvpmf8=3q1%.y$u|${Cǣk[]^xnjNEe&C:6NVm: +q x;6ϥT 9d 3!G7(8O-! Qi6yY +hl s D"qn^2b5*IJm&W/' S CVC>x؍ٛ׆V3.+,M#r~l$^8 +ȶWd뙓",JqpVNP5j#;onǖ|s [&Z_ +p D(h.(GP,dކ}g!W֓YexhWydv`6z["Tw/0*ٝ׷mFJ>@Xo.^|mAmޮƼό G%)1o{oX:m都Mf~؃XWgU|ܴ.+U +mҷD% ^2-o{XS h^6;Ӻ!!6]ċmuM:BvLLj8/A+ oAE?+ؐxl[_]lv-$N `(a+ VR%&Hoii 3H9zedžA?NyLR8#Ve~%6nSqK@­Q 6; %kA%'z fWeS$ xt~ +xL* '!KAȪ>"lںʆԫBg`mA< +H3KHQلF;@z;L]hQ63.هnu1{CG(PYEY4 +Z⮁)Je[̢n֙lv9`G.D&/,^kƦo؈ w} i_ ?DW ;D%үUs9X-6pOwj + &5dIj}wd77S_BRnܲ1L/Xz""Jx属SMNL /Y\(6ec i3krFQ\@kDA`pRW](BYZ:E0$|J|eL%< (:ƅ) 9}p\G`y]ADB3Cv}莒BϛxXw \˰u*M'K/qhb=sWzlI"pW28͎ >dWZ;8=3i +.GdG'k;V|AlX!uky$WĻ,VW6F*oxM[eUGya #ZBEt +>&/)\bӻ\YvqW1&XɌ Z ;Du@rS1Ov\l0S<ҏN_@wo3g(QvǺa^o L-6 ԝ-NGӔd|wS;lc5~dbtjn&<,bt40̈́HESqH( xX-M 3 O2)~ȧ:gHx\ m~Iaf4 >+`0{=?*TnSw{52&{-%:0v;-Qi٪ܯz-j\ AZ"S uBY(``&=1`.m8$cAt[ +g+-ĵ[ƴx:T%27b"_,8E^~Ȅߩs +T<ĥ1.=!O(Pu\ FZ˲졐_iB/Dp+8 mīYp<_`}Cj`ʛGc&rj0|5d V{395TV++fHY[3HmI=Ͳ]pf㤐Tysx2+gs!5k[aSnE!7`Cl |陎Q{RPzBu]`oz_p0%zڙ:D #B`Qa᳾:k빗 >>Kc;MH T':_vAh@g(Zh*ꁚTiPU:Rxr6)7lYF_?$2~DfI6#e[0C]@ 2yDitXZᤅ ,"ٔZ< #%Ox3fxgڞJq Գ尛XH y@Jy~` +7kzqGQ^t/Y .*3FJ9o~kA]ʵ?jC>8(yCitH2.Θ(!84FX~f.R˶=|оVi+e z$ u0fJ{/#>hޢW]/϶c-mICIʀٮ̐=HpJ^#ѫa͡rGqŐ! ?ZuOEŕw]zbl`yܪ;XMI޶$Q~ +Va:&ǎ }oQ|5][?' +(!SNifc X6T]㆑!#ldU;5Vp!9@U5yBM-@#m7Pټسuy|ޞ3ho, ؼ%O3UOc$oTnB`wP:o(sY?5E 'K9dt3_m95G:)t)U jG^ s;?ō" _~oenhPR;ʅ#e<l!QLn-u<`0zDeD(y|غx;h1Bd׆(Yupp"5e#DmM|qya +r;d"`V(8j +7|GM[IhN(+yƂd,S4Hy-OK q}A0]oGc*Y(i~3"К*ɖC[yRovn,o}k] ZlJcWGF^0y kE"+7Uo+l3#ikr @3lr!Oo4 6g69qmnot80ԢzU1t(<cd l^tEYƆ7pV>Wb{[)xw{@H``8, _ԅW U{@y|]p:&Cɔ_轐n;cw3{bvs#>бzlJr&uDoTw'GXߋ"x7ˈsmeUӧn"Ά,*OO]dD \)8jsKu2hcB.Gj~>Ps$* [/ yo> ɤPfi99 o+?W@ԧU8:\6[4jUgHazsZq'8p +$? d]E@%M>DDh@z& +́o]_"eb%gV:AE4Ng6ք2s`dлAd  0C)@ + @4քKs4DFrXkJV#WyW5psj4R#?1#<XPym`3} h@KQ5 ܂qh\(!:18:/e>M7хȄzܪ"$kү*R\5x +yUS&IQ S`iZ2 @=t1Hn8AMyג>Y)%c^!-HڒH+ƨn^ݙf[gew~J;SZRYnW'>jZ2lw>d47 hK,G>f8KG!W|.,cp"8 kb#G_µ{:3[ 5Hl)d|o9{HZ8ޞz*E6;#UtLaL[f`)rA"pKjHNe;P(b]UedY H(!5npzo,cߦ3V7 G[eۤTLcO9CNc0 roϐ!Z-yd@ e@$Sor6JSq_bF#HPڛZH#n]-Dm&DO^k(D:daWLE1 N58$[8XvoJN_E5fd1ۏ6 ~)w>zhexl+sĴPj}v7>UMai(kXZ%ֳB?s;Ml/QR`tLMX[-8 1ԣifp i4V! UsuJLiT|$a eb8<beo\u^A6/b7$A9$3?dzqf{4}p )|n nz9`dտAqЄ'\AE/')-Jr 5l.|(ۆBGl촷 +dwZEfٗ@a4gagۨJd~ +o_}hD֡TùHWQq)|ԑ #XgXT%[ +~`H.&TC4HR/wN&lPYED e+2rw8Qi!/SǪD!tEmސC@CkF;n"t2"Kx|&XP> UƆLM̹""4ήPtŪ$9AE,)P0;Xn{7?sֆϟj#PH'9!rщd>f$ !aw +g !lSqIT oRvnMhߪAh@8%Pw''NpCvdn$Q&]{6hAJFeY!~dG-gbPj_5 ܟ#bS)X ݻ!P`LBPmߎpdɔ*Ȕh{gS&(FwiɔcQ2 ;G \K/F*P SSMdR)|420̇x7pC6f* +1,~>,jo+!=96RDTuP;Ep`K`'d {SPTOKy邱+mS#Yu+ +##BA flaZLp-/%P$_ۄ"/_F+/?\eؑ"@`<ȼAB+%( 0ٍǙXA7j4l){i! LnKEG28]IpQ^>;U]hёd⢊`ckex$C(qԯ&9rnq*&o9{TQv + ]rY`XuMxKOo&A3I}Z卾W)g8 +r 8.uo.m7vl/H +`&;y!aE Z9cgˑԓ`|0vϑJ&)Ȳ~YW㌐cl&䟾k0oLҰg].yFo'3!VP7)l6,?c.0(c%+.*z@]0ZfҠe t2CU4Q%~|ZJIUMW[D_U$'&9{I^Xp-a9  N9V\dҲ7u}7xQb/wmFB, a{$X݌hoTʯO:߄rIjc;=}:x}=7]}B\cw9X} 1:_g 6 tdh bǟ`Kɤkpi<|pu|:54GyDžll/U@U en4k,.<PjxA}X|_b9 f}#fkB?K ُ 9#0+vHI;>7hѩV"cvVtC䒯+d>xB|졪Pڛ qZ$/SN$zٻTok&/w'p#aFopegi:HEeϛ&lQ:;03O6 +f(1-<>X\qRA4LtqϟC[3(] f`:Րf;En?WPH8bZE> $!]|BVp;=:+Bi>#(PIO>܇+4|V5aZZck g$"^o5xtXQfEqpoEGxߦ;T?T=MAGPէ8vz&%F)OL!vGX)q2@(#ַS/Bd*^̒8bB$O{xC0%roPc[Q% pU +,ii2>wHֹ:ï+HALl5˺;:>KD!yBo)Cn2^bHRpICv4R@^U)5!1-.$]ߞ ٛ]tƭ e +H  4H䶎vD=!=֯(OH28 YĘ+!!!tT7C #4jfgh4@ijIl&6 9Cwf>0L:x&CSB;8 RT +~z[ -xV9HbމsCY5wJIXbE 靹Bx6d*qkS4djR۝ȱ +u>ބ]79<5kfc/Y$\ +1jm,%YVNu=䍳"Nk[ǝ|v<1nᛏǺ ̝&s'{YJ1 h:IziS閪Cdmħ]7,Qn^6*c).J:kE o#jf#)%"7zI{ms| v;nw աNVz߹~HO-=xG1L0NPanh$ˁo`iŝ:$ 3pZS833U;!'o2b', 8wZʂS_nwvKـXНltwry5 TN`"םl}u,2l9꽢I ݩY5\?HyP,HS Rr6)`13Zpֳ#& DO/ny|rNPk*lE)$YI@LNTK'r=_x>|SozIƿޔ NLЋ GqԈ:oÁ%Ҕ;pOZlӢNQjoY!7jkyܣc- e +`Ș5Z4FӵR!Mf LP#bPCQV(/Zh" +VGg{G޸'*}',}7 7OuM-L;󮶈BDw,Ie2G!BH*n_g߮pyfzٔK]UaȎ{qA0 9Dh=CDU1G'n +h!hbK2c=PF1fJ~m8/!N3s1iwכB$wM`oBDjsXOo\NW8߳ #B-"zxኚĭ,uxH`I3EcY${Ĺ֖('"XoC$3R;N..TԣՑCՀc}r@ɁLuD= {߈=%n5J~[.1 b^ 6uf2 ܩwBkO T-le#~`AcՆ33@0.Lh3*B,b?}$;54#Jajh:',~v E[$=dVmNp0q~H{nurzXPZEe!b@ ^\lmښuZ {($Ċ#;5Z6Luegg2eƞjZWˊހҪٓLhS(mXns wYX(b`bᏎPnx4RJ~ǐd)K{7INlAwL/(<7X*$~VidXF!26s3^'Z/7Դ=Y<4['ADBCu>-S~7 fUjx6 {FȢM_߆T aJגnڣQ£\nh! 5&\ҷ +;ub'!^kkXp DG\\:[=䬮Ѣ? o}s BCńD\W[o{&ӴƷ^PpG۸WFv3mGv]7HwP q +3 cK㌸|A_ RM ,F㯾!ZE lMGiXj\,`3 ="?]JS!G¸ap %'E*lϺI_僉*L[AOr(LFu-AQg.œRX3oJK>P5F k|ᐒ5+򡁌7֟c41bv74\OX6H߇'pk*; ׫(L4+?v㘵蒂6i8/$ 늑5ݝ/i#l ߜP +@؃.mMU|7 IV={P6`9ߔKB+JԻV|"6Qi~?x:ZKGxײˢ:D +9ZR>cT6gjyS>s@&p%+.0ۋ +vPG7lv(wcw>+L<~M(y +!\@;0ݎJ֬,XȲ5+d=V˪ #R*MOCtb|Ѳ"|Tz{&)7!o,{e+xBcԈ4dA::‿v0rBzjcAҀ˨ALWŹ+PR^1lTD8/ԕe!ieJ䚠 a!YY<R֜yVfjq}b?|L O[D%{ً@W%fwJx8Fq?Jdq9Nf9kzWj+&E_lj#E!4n<67:)@hdk-#Jy;.TWf- X'Dvέ d{v cy9 +n5NT i(CqS4/Z <B ZråeĪKy,‘ur N;`YSK8v`KT9FL8؊sφMz.`8DMv{f^[a5!0`z4.B7x9}F_'.Y O;lri- yΠMC H k$0$iKH"||$ù|r/s'UЇ"˕;pE$'b~ذprJ6UxBrt~NvR/лN" ʢB|OypG.R]']*)ƃjzN~ü$&D÷š;Y^slSMx䌳ͻ\#r4M{pTM vQKad;MUMphQ*…kZGܓɢā8@,fp[h!d$/ApÒ<^3A /)iw!T6^^WO6k \ #H-{,:'VsW#m: 2FfqΛΏ+mp(Q׺ ,9PH0ȗyezO/>޳򙭰t`Z"pU}A+bQip̓@Kv$ +AW GZ{x2 ⴗ=bDy; V]( gG~sݜkJem,h|pڀfE7C8\l(B`7.'?&.;@\Qy,@ y\e + `-(_r|x<meSe9eqWy# |J^(N*],jYU받ˠfcF'Q%wQF. uph56ҁV,mai4!m6c" ?~JJPPH~hu&aPa½owa$Eؑp~&sA ,t09ʄdc'k4Q oY' NOFA!Q~Htؙ˩ ]rdR7d/ihQ&l qa \]i0g-F|%*[P 5h6 زNuH!:3KK>qN<7εapeTa/Z#yRmJ DSx*tc^rjgt +{%dV,h+yIhgzZ׬dHU zPH;d^C չ|<0BmXv^IG%ʄ1bm|6)dz:O+/Dch}u#G:3 M}ʒT)>GyۏLdh7'ZEV/k"Ny +.J*X +e®˒!6v7RB K "f2;Bh9>HH6& *`^$$ddfCZ)x=I`C'(9iHĠ{=Rg;([Dlot AȎsbG®PnP7Z>ܽH;d0 P'd;~R 4Y>]E"gYanHR4Bn +v jnAc dX y怗>t:h +JCke?቗ts#iW@u+" l5Ќ!=E)u19 au͟8{7C~X.]<@:v&l + X9 T vcPC^{ +d nH!/$+|,)Trjsb1;tuϐA4:!DT^b42*^NЂ_AD<4RRIlϙ3ְ%\cdQ,N]Ǘ$2 +Q(9J"M(ߒk(R"AQc;5-xh M~rW$8O/>__ @ +W!jU'H82\@wk]~|/ @թ?&<4]"Uj#1!&/@>< H!qAĽX@ίX-|Ja5ai`SUTȑ 2HF0 =AkGVbG{+T>]ޣX*Lvx׏BhZIWU&tsn=8K.dAn $.-Js,v,,ݑC$rȈ7 bVlD|uFLW 릛`[3b/yW3)(SpeFѕ t"^|ݰ4>f K>(ޑb BI l ե7cB-W*r#O0Qa|:X,iEoq-]aD?US-l >nRP6~.#]XU'Ub;T< ^~Xx,Q[7 !Utgn0.t?ܬԎfZ*jV?bE^'9pw|~`yQ i  +C_Ӯ p43r~$ҐgXFF)"PlM" \Ơc`ߝI=@QΎ<#G?Ev")x Yl!::W^X* JCA4Kkcl{?`M˲,gY( 2kCZ˥a +՗k϶Ym280(*;f9H6&yMԥCp7KbJ60ؤ8B hh3=i +xnw1~R\W85=)1IctQq2py%VcۀQxt^2V/JcxvԜ'iy]j y -8Pcx3O~_"KJО;rlK } bccM^O BhprO9zk5S&z%](ؚW'8lb{r@OL6N[.=H7i`H1,H!w2El˥ [^B2tEm8Exƀ@"droDd஘I$CKqV2go TQq]ڤ8tuM} +˦*,9טjb 1G8"@֘.[U12un!hVVh[WhwTd70TZ[$]d>q&РGy,l{YmThr~n[} (:6oRs4MhvTK֌<&^xZ M + Nܝ`c]]QMdJW̚ q,z.Fo% ZePIaC*D੔gBBq>rK]⎑V)mq[?e J /LJ0yly+=cY,9@,Tq%:!́U#ZOZ*-bG !TLp4lVF,rXb>~)3LP%9t meM ^aaˑ-!$FF@{f)(A耱ƒYX@=񘱱4Iy$5jbH( Hr F[B03s^AD:q(2_A!T'S/uG* K- G*E&36s\ +XVpe;$2 zb!Cu +F郂ؓuw)#`sU> RI> +\ jx"FTRd";Ş/Ɣ@u'֓ +~xdfE*4CYZXO07%$,0o.*v\)2{>9sb+/KA﬩w= /9uc`#HC8ı(Jg2Lv?R"||m<8,3;< &Hi .{&Of@mM)DF4ۮ@ $T-wT,O[8|@26Ly. +s)CC_⿚]ڍCL2 d0p~@, $>: 6+(.Ul҃0;D\R|!c9ɯ.*0ÜJ:s6O x%y&@08M7>TP1V"S +<8 (i`K㫲͈C ̪؝r+^15ފX 1^"@J?.fH/i"-E3P!'8ʭ?!I9=n. \9 X;ع%O!vIFCI!hoAÁ P.;OSy6}8~4pSB!BDZIzNXZБ%ЙmVA"Vun +a7s_ `e+|Y!4Ԃ|]7(Ɔ˄CV$` $}/51``A߲>1X` i7 +aO<@үe DWްp"$d1~+1JEQ:my8+y',$NtK2a+ +yX1^D sLprJW#n+ mpMu9g|yOObu8}FRH8#30*ц"6snCb'qf22QsO`ې'7بuF\4?Oyۗ 0)V|8 nDJL9kj|U[xeRz5]}|t+cPUACS /1#o\c/P3>,MvIƂ +-+JH`*k&Pďóą-pЃ;H_x$ 5M6d(8mKa:jˈcmK/ީ\>Hq-fgv݊YY$ UdR}:ܐZ i7."hܢ`EPeД6M2%v܄ μ RAUuᆛТm%rnA?%Y7X bwZ|7N~|Q5Q*yIե7wԐWIA#{ԢE#χn7&JpLH㋐GvlהUIQk +@QV6Z f7 v%MT[.)!>J<)<`,0A-XW`78.݂ccAFI ]bm +&He aSg2/||D:^6'd`b@cy,|'/MuAwqLK !!.ix."X*1Ss^ +_XCKnlUn$]0no.ewӱ]^n:tSy!W#kh$9 +A$dێZS|',,(Q6#yV@$7apindzM*Ml,>Dv3.d&oܚ$+ij8_ Gw-h>ښZ (Æ,Po w6#r8$gzYyT9ZNB_0j=CFVv(bborqƳ ǽ4֥NFfη qx\O,JUөC,?+냶s0ԉ\d+h0=2O4b//MEVY;o%2 z,V0b< jOE{0OrWp!AŮޒj5Y,dXS:I͟UbNpZjR dXZϴ4Nf3x vde:T)G6jAܕqpXBz=$l ..AUP!UUToWDc}/ڰn02k, RW^+z9g0)e]URMl,*e+c6R!h XPr];.zVq\%x! A90q6YSz P UOn,B.@2ϳFǠG7H/~-OLaYf5I6kywfN# fT}3.)3[+x)`QbƁJNoHƘNML{XpR +mr:Dr%`jńl@)98,Ws+iX&, &ahI-Nj-OL'wCM }Pk-[?yhw=;5ukJU l\{NC|PFJrօƨ֌3r.5vR|62.t5+( y_$|ThAx g caBM˿frkkvS*c{#´`g$36'MN{GYFpn/U}υ %8 B>?BʦsB[ã1hMz^ukO>(rwB0=5Z2fn{j W!ڈ"֒4D|r&Z idg{ykW$lp/)pp`ifb=^x-J'-h$ Y65N-pEӦLe='E'je +K5 z:5!\d-Ĺ4Պ]H*1At#~umY,pɌPU" \lMgM@11@B skU7L.@dtoPE +'VGXǎ VTOR X} Ѧ<( +N aTcgܮuވHϴB4tqFaC9>p2lT<>V <.iqr$*isHaX:$,^ǫW %C7Z(>}&5{ d&v&XlEZQZ8@J^ |bn6C !N%&xY>Ae +SN 3+{`W8V[vVҿ*aTWgg00M|R < AŐt2OX  "PD4K!6+"fu(Bayz3r^o"\ɜSVB Z*D$T)S6U*gGUi:DV;--JIAG=L1F9{7>O2n #+ OȌ95>5 dFPo +oۆB!Ӑ *hf_lwLI +9Q7/(`Jv,-C H4/z9ZpA4F3xe@%54ȱpQk ""s +}q3ld02”"Ų@(nxYS o= S;݊g̣5GQS#c>F|S*]Tq $N8 T7ʌ @U0*co" %P>~@wRCk(k +5 +'l2eY8FIvCpziRUt|JGeұI\qŃFVwK?6 +0A"*4x CY?{DPB׶ivI)ut'ɣHo:h0θHՒ*5:`y"GɃ{FAn(鬃9 I(*:@=> &2&fENp9ĥT/z smX5bis`8= +4`1w5'/"p,/|BGrf]"/',yG030㧌A2*JrkLLhwR2[$_D&5A0w>"XEr ́-~!ԭE {Y14!Bją/*vi@XpY5$5%6cJ[>X~[m;?vLf&ȓOf UcNs @o#r 0DsF;$3:17C.uABq{|GsqzSj5(C!%Vl v4j]n@aUͲ!/xf lQT2| \(S9HDD^]|R40lYNe;݄&0x|sL |tms3q2$m٠@JHu(if =[zzlt_|*+>qCRu\ +zC3MP=PP j,`v|6=hخV;hJ|8d  ,FD4šANI^ B@x)W>ؼlRrFZ">A4;jNDH.;NT=PbeI疷oٱ5{'{}f0*I*S8;!ZJq}/B99O6ae8иaw8dJWe$+L.Bd ؄4˃(n33_3 Ϥb^QtǥOqI1r@dr*]YͺF ɤPGx54 <ſ=Z=|K QPvM|B5xք+/,[Ep'!rȪ-#:6J,qc%T)z#(eLX'OCYC1GJ@2ԥK ;Jμ:NVX,_V&z4jIZpŚ1ZD;JbƇ! W D#yi0k\ |7eew@~Tvaڃ#zD06vb ϛ> "ot4?#m),6I|AbPQ_Ĩk&~ ݅lCrZɥ t +bFL6d9iPX` 8@`ZS}\s#6F=M3Ҙ8,}'"2ؠgJ7/ iZePOjH|H,kL7L04XlآV{Ȯ-P{Oƀ <;sp?wT ./qu:@X@KX:$ ]^A9p]% %ס,Bo ].RZt̽S!Y +O+^2%81BS6d&Lͧeۖm%vW^>FQT 9/yT}~M#fש8ԠDs뤈CS!UGԴG,f" *bP!^m~+x!T.TGe,S 붵;>%(Q\`SC q2~?4KUrc|6M%k%s8q܊~U$NCkU9HAR)Ez5~2½XeR8"*,r%ArĴq,ďW`ZҀ} hm"I2-dy'vb4Au禎ؖN16LS.+[6:r5ޝOPZ=$KG%+~ZzWh`ƹ;SQ^!N'E!/JfP;#@"+` o.Z`_\L< +O9\;b>s·- 2?JX΄#*K Uhڨ,xU!ת_Z6 =P4cӿ\u$}5, /k `wE?RVo„DXj +=+JB:L/x*?3]=! (PG!ƚsgc4khSEHlS7]Q9P֛4(_YauJ Ɩ֨X +Qd5zTesr+xѓa `^?2aF=v?,xFu ('Y$T+뚊uRD3v"05R#ch?yI5b*B&IA0(V &,b0'fۘ\b=mD¿A!`ZX苪#BS{0wܬ'Rx$/XW}B Я)G!.x+{|e4Ybq' 9N +O(͵+2"]#$\D{!QX`Wm +F~MfJ^O^Q-~ +5@" +|óeقe[h%&*F7إbjSؽꦴ hYgXf]څ&ΝJwv늬#):0;w%E~Eb1$b,T; 1l—Pw=* qةc#'.xOB.VEUhtUi +'#38TR˻:kБd$nL|#4rV &on-Mb2` >סL@!whU6O; K2+Dv Hk\#ՄEP䔞( @]CPE+szsoF|F% @I#8|O"L<Db,% V ++sF7p4-CUK {J2¾Qn5ES/ƒ\2y=+5%q|uϪQa[oFq3yNl) 7 -'NX4lkiV6vd[ 5WX@%-K1oQv.aJ1̪?d* 2fQPhLz#㋛G,ِS; C[dM)HVojwR +]lCAqҏwU|&7wFL/MO/ %x>Cf\ς&N93oO, +Y:- h%gWg MSWQ 4-Si$WR\[G{OK94M+m DÌCY,}-g_%pVT3.˶4Tm^b-\;|E+}ɷW۰dg$ᣜ d= AF%]ZH1uz!DTijQa]=8$I?̹Q BaA#ݱD(h)YCDq@z`)5혽V"ǎ=7|jrHc[f)Ha%d DŽ%Vw+[ISk-:PZ\t(9[bu8lP8qM!y7yHޕ7AH tY۽ +-@ÙKO[{gAa!eP ^A-Q6D@i\҉]5)-7+YKD8hG)Dm}8JBoo~)!BQ)n0Eqӹ+jXϠ=@\p!Rnt\MomG6aW1]n- Cze +yI'Ѿ8Tv-|s7ظ%A;b)bǹ9E +~DM+bb=)yC\X@CU "(B%;ƒ|ҝx˽@C" 66۲z"l.xQŒj➷ԸCxc>F*jYdMTwx\{.8 q/+c8܂" 2rvjE3)qu??`4EFiC"7AN ѕaQXgү<Eixj" +&yAPW +-rzec%HoMٗ3a R_4p $# B-D&꠬lJG" xՇDƵLJ<؉ dk qoAP+3d +މwh":Ǫ"7uɒq-'VkO),PU~?GDDF1Se KUo؄`2h#@'2eP% W1B5Bg)[sj% v(Jl+WGn5!Ն;".H7%Jo` +cL"InyIBIQn&C0Xt˿*2cVySB\Pfu)q19_D3~2sӸ0 ҌdUѨ(O"La*Ɨd*﬑469fN6@ x$_C L(SLƲYiTM)oZ3q$"?*U8#[Y^f-"Zԯc4 !_E`{wYpM8G @898?X`]P%,pUX>[3}`G +nT"p&7ŷ$}*⍥ͦ: 0t*6qKV,*pF>|K6boN/UJ*,I=IW$ +XpX`:0BCA!%RPH<tV2q@ |D_G]%3UF.!#(ʕ; C5R.0_㱇oәr>6vIIψ%Q@G'5(Ec94nu$hw(8'IfR4 Agg9K·L%Flk~f*/un3"&C.ۃ퇖c璯4sXQ @TyY*%GD}X` ݤVJJHcJAlTu  +#PrEG"(9MW*Lj K9' @ڧY FaŨ:8cS7Xwl .+? + Mgڃ +=b0SbGU$bexPw\QGX6uL0&,E=|\D/\emɈ~|b@ng<.-~  +U̢N!?VQwzt%A͍i, D6 `rF-PM1;WRqˣ5fl=tԍD0JMcن; T$wYR&6uJkLwzv\ +*ԀؓGPK(PHgĦX*0MR1 CN+DQIL.=eсg1<(6j\>-} (x L(:HM+|!qP%^ `Api0BXUМEy߹Bw㯽z-1g>D#l#Un_c%zHrq$U(K \M1B9 ߌ,}`gDqyj$y)aT7MXn.9|ox`i,@ ¦\Ԋ 1xYq{{W@X#,fd )$@xo$\+v|FMDe÷ӥ`c4exk<1hK +"Wx _Wwit1{6WY|mT4'0Yܚs\Yt'iB𣣘C#bA8&H93xu {*!ߥU4cxchӅVHg#I9*Z?F)gP*Sg萌X 3A8㺿'҆"|FI#Uc9Eo4!'IqĂ9&bHKk\V'Ub7#؜`I9s[(YjHLbΧIu3G12.;I p f|H%X <`aB*^c#H:DBb{o|Vnb`އrna/̱X ,bu)8n F6(q=@eB1%Dn75d3d]rNs6SbkݢM ǸGH5PkD,W3.…&d$} N[30Ⱥ' o3B5j;$%{tՌDc,rcV XQfƭsdma%I ȃ2 !W(JmqZsHmZ`$AâƘ)ڪb|N |ZRk%8ސ"t -PD6WgzB?>@Y(jP6J` GGs~q\.sWFEלX`ZZpjƮR4>m[@>A2L+Wbtnv:D_Y$.)}Tٜ*\,Q_W5.t mPl!:y0idG&VD X X\j}*۹5gTbc OyvNDA6뜟|D ói SL[^~S^JE%bxaw_4wj?;020pm Jw [96  G [eTԆ qY܈,j-ӃOq0ONsMנ12˂P>|hZs7+ c{;;p8EI_`Ʀ3ȹ㋘#mb$с=4F#D:&j JBV&sCgeyF-FA#i,N s2p^TG~Mu϶PCOv@1`y37 KU7^ +ªi| {X!O9;a,Ml*0EwcpqtAٕS:X6LXzR<¬q6S 6~L)9f]IYѠmde_ٷ%@BAu,"c5OȄbCl Ļv,.)Za!Fl0E90xVr,ѩJ)jC/~SXn l-90tl˵E"Uu?_8^R8S t +t2lwpV &paFBnA +L ?Q52 ,Wdi<;S AFDHo9;CB7[OFa < +Φj j\? $G<ۍZvҌlgL߫h %169Xl4.ma.<5B.{V+<d'j`(oN]8.{pZ`ܸڠa9)ÍXk\Z$\aA/ |aG<䪀Ig^b{ 50֗QM|H D:4fOCX8o  @18 !puy'@{aXF.|zߚxlRTq/p8\E$>oK, 6vdVo#hG E#P-[\5hZ^Bo\:X،`ɪ|ώY} 0vmT ZmtZކ`Xj@$^h&#I'gzmI 2YX;Qra,TvuZY?#_z<#?YH8S cEK'an܂FR N/3jn1* "5o@kDBu 5vrjC8%2$z$3BK zqw(5dR(6[xM,a 4ija`1f[ 2Йzl1 uLSF@/Lj'OddB ],7;Tظ_0DTf ?NoP5 +z1+]u81|tX+SHP) j _c|*.".㍒w2$26FtA?U`=X3 X,f1VlMpCيʏrw!(&:wyUgD*JJ/1:1Ԑ-tCY"ba B3V~/QMrһ}jdxk-N&EPɺm$T>1w 2 \TX0pAѭbg`$=Ztq8J_pI; ˸4z'n*w؅:D Q {ޒ ƍKx@$"Bv$`K' 1\-|D*EFpŒw +D*>b3Pf]D?dTnc1oa3ѺwІ:O5;9b5 ?`_rK lo)9c9BNF0y>KĄZi|f2WSn6:kj4GsLv\BF TX1]5ˀgD^I7c42<*-GdӅAhd-2zhxx =BH1"ї$qb5>f`+uw*RV"g8k[h=ӂ%aiR*3` + Vί ^AؕFcdjgU(XbO,E]':_?} b>RXl~H/p&y) Ӥ2ڻJc LnN0SdJבk,@*) #巀͏[#(䴃;7\BO(&hT(HiL-lR N; !3aԈ 2L 57$xAPt izi 6S܍[HU1|lRw<2&4v PT +YVUhE*%-z˵曍P7'$WǠ$&zOc^--`)}‹<<9AB!]W0HR<22ǭGQ*ڰ[UG^`)r,JAJYWJ|mQ, Vx(͓BZI-@Gba8nצВ|P3@_^eK:'F)lt_0JtG!)Z8s,4 Kěrk*Vg3 AU*` A_URaP8W)klw~4)oѢ6l6qZTrTQ^J:I0zm>eBF2QV2FQ:-ʈ/NЊtL'H(2j] O%w\0&י@ĸu~T∷''1.R9A+f"E Gbo4TUC@ "n-C`$ bc#J Q!Y%2߾K^cŕèaLh&eOZ _?*Wq_ eDؚjL1CbX;" a +|@ *Q GgֈEl=?I>r +^#a![ +&_iL7.)L\ ,PUY犃3Y\oHG'7Je18}@ bUΕ Q[ %i)jҋ/Pšb(lV()t4ye{wpG&cT!1l, [FvtUSkQM; < K& +en"ގP\%\:ƍ#%tP>UZ9+$ČI,fp@+ 4뛅qJ EsICX$ +9 [uzz2ԴC!B) ef70 !a7rHx +"#Y7`0>ں]%J!foyU$:lڈvtΌ*T+P +H0(j,ENFx%P},rD4/`Rc,CT\43z}HH5lHֺqgLG{ y׳PUĊƓr!`Z͍=vO&ǬgX˜(0\\.!x]eH`~ +1q5)r$NI=4|}&E+$g!d6sMm;E(.u--TIL:ƔHܪ3YIx=bE9R\eR?AR6a~Aɞ˔ iJ_?LUL] NjDwC0G#܌L*BO%uU"BΛWpR4: Sm H1-ݶ{`KЮW<UbDBr-`E55HSΈ(1}( +%< |9}ܑ:RI(ZWKl:I,=,pJ8U.Csx | s9&iR--샌FDbNpZJ}n̺Q1L ^NδP@kݤB;7# NSP(4cNbrD^}`M&*pt>0W,΢>V_ +A(LrB3auf[xIhH5Db$Px4\[R3LK8~fTVM"QuG1,}o7z{]܇;?AX`?|y*An=ʏKr䥅YZ C<RdZ>`{C v]CdChVNũp.i0InN+8+h0!D1=1Crq=Ȩڸm Q^sQ(1JVMh}!pG'mOȦ 8Z4hP"&ټL>l$vԷ XT7̻ 5&Gq{Jjq%`x\{ ?"aUj\1䐳ULLJ/#D +wgE; l8,MaQ Jh+U*3C=&O'rXcV[ES\sJCdɱ+YN(3/jAHdNrq#%&V߰ŘTъl7򉿦kJA'˗ C 7k',Ǝ~aC o)lrPs u%Nfn?6R3u<9EɴHƴFPAs`*J^X I8Q%ʀZ, D>((",9̀f4F$m 6 "2aK'FnfB  pT|wIְOȳp_Fr$/&C,t1 xXN4~&3NÌEu(6N4 hQ>"*D*TR7se,\ 3 +< ,]ɜmw43pΤ9lxtkVCt`iD1X`9$}#p*A/a>k*E guM#BxAc` Z JN6swJ1պڽW*=;"_2EK?Ċ Ƹ{t:k=@0[탵$)!pߴKew-,9ghފ N7T.AJX` *3d+j`c:N) y<<.#hے BaevR+-ּY50<:7="^>_ח!?E,7ex*/gs +.`24Vm~LI}Ǵq옱vRJ]h~86¸1¥1e22Iџ}2<Ȱrd~ I- nbWA#:'B n( EwOkR[IV#MD;lh5H$$t:[k/ '+8HJ'e]4{A"1L7 CLZ:#n˔S8ʅMG#| V?IacL{!|bpkΡw>vbcd(Kb A_8.6ŭ1 V7<wqJĿ}Fc_bS߮P(Ood@ lh[KԕTM0orRqm#Q[/ ojwHŢ&2|\haaq󠻪hz攻qI[; +ߊl=Ɋ#*G < ؍Shmɱ2cX ͵_QV RijjT ?#<5P: *JQvn& "8x B;r)Fe؆coDS̓O@WЕ7lA A!ǯ6ziEYDSNAP28StȻR3E-懡Зp`Nk⪨1T6`3%0DmFعqy4UIujVgin 'VZ)g{Q B{|4B`1>~| flb|T<+ 7ߠLKP(؂~8 OewAM>AO|/)T!HixR.ccIc4o\f~8l\5]}Mt~ ]]yEzi[`dZNsxa,QIqըΊjKDd( NB];ppD|'6l${opdjke c-RH,GeGJ R;Ju'+++DO,N4$6Xz`(躪Pb3]3:PWߎb7qb$ֶ=,sFD)QI^B),|%a9$I煡p\B$^54<+Bo~+ YReG9!RM[0 .usџR&"rb`7ʱh3 j[L,0悒lc[%{PXM6sSRV/B G D>qV[ R[I q Lci8 &&bmBˋM0Q͒Š _ TD'|TF S&aG%1;{0k\C+(143t|B_sUhdbќU.L Sd7R G%6&1uS^%a$?ܝ Z pb< 쌡eZ;çX,=:q&XY%E>J IA }:sz B }v@d}j~HCxhݸ !Mz`{FBB:sZ;WdHئ3U +݅7D ZA'#dmAX5 u8[_׶,mUmj@zќeY qfųjRˋOj: +]=bŭIJ^$l]#Ȭ@boLig@@ل6fhRIgDvf"SqKjORXa*m> l@lmWw{Q$ۯBL(^0FyZ'Â6H;+5 +&9Dj5.2mky *N8ƿ&Mٚ&>#G1+=Ԗc/΁c7rN=.ۡ>AZ,Я_sҊT${= 4rnsS)`umVu"d%6t¦>VՃ'&+QP`,i̓dK_\f| +TӲGײJj;% U~l ont7dwNW/H], ޿sX@@Y /Y +;ޑݸ進ӣ9n}jE"喎j&RVw4. .jc|i@A{\;ܼv#2[t ^V99WU@%H`R~ ;$`{q2/c+e;(T/ Fڇ="̻vL(/E>v̢xF-FmoH(";Fxg(#\@-ӚX^'Eh_#W lcXҰN>уذ HBUu !}bT`e\JCԖS]/W/1HS}d'i84X 'ꈞzd˟=-~9QOB>E$?o&32J*QyYh fvUcrMV5"S_>:jD!vBE@ZuPI`'L +rTv>S-@KYɔ`,ǖԭPbn!vBD4(i  )/ᗏ^Գ`UNud:RkF ,ڀا[|m&qèn\ZnwR'&NjKΎ"r-"@jPEpVUbDӬ@29nLV6\ +ng$ϴGMSD_c μ`MT̓?rp S@i)ɴԴG3J0;]&20fܵTĭИ:XV kԆ8Onъo@UXdP{ t =}rB:L2I]k9͋NbCP')P+TM!Ÿ.b <d!dJkba-dQBf9.U!{`J#b37@< : )=?us>BRT7""Z<wF$lDc̀BDCi$WIK/C`Z b hL_<+>x72ꊬyY*;$ jkXa "MiP*/K4Z mux#渦7}CjT8=^ +L})^WvnYv| Cx + $߅,7G|ڃo nu=YyTƈ]\ԋ ؑP'YrV;KjP,ҌD bƖDd8"F<8[N`7LUʠ:W f=XF̛-E؈Q! \-})%yR:'PX+II>;Cj!vL8Y \\i@hj+|pDhB[DwvR gxb9cl*ae:fT5뀾C B8)(?7FG9]V|X`Nr$=Ks#p+6c:@/?5)ec88@YAp͓ +N-R17t ?**r^ˑc3vVE ;لd UQV:$^Pi3#XլMEk4ElH70ig~?vA+=r2E?D w! գ"Fr'_|4М)x8'zLXLXC <]vq-srl0F,U_PXL/',.(g n-؇ O*Hۻ6 +.aA]20(Dܟ%Rbjtu+ .Go%Q;UK,/jh-ݮ 5s?l?Y֊ + %͌R[ x cJ{"â. s웉,*Xv̂VU=%)V$NWn^E?}9%q^ek bXU'9 +Rl(~:Ȭ騑ĀaN6+S+1$I+.pE ^ZD,oY;, e:|9I PJƩۉEѼOc6 gLJl|#('r=_|k_"6wcm)j͌iLSTʭ-Sf-rꏰo`w,9u!1iVM "NQ )шR ['g,P6-wFd" fՅw#qEGCMI6q09Ğ&'ąQcW9Ƭ]/ɨ3>ñr}3$RBg#Y l+O| 1R2*?OS&ʷ[ endstream endobj 16 0 obj <>stream +CQx%#UY];iM@HvUiL`AR"sl5X`!A4ΉG|9|3 +Ɖk ,y}-Q >4A9Y(Fp9jM1kr"NRXgrB]G`းk%og WUBb6֟[6uD` k&Ie6gҀg.Hki[,paՔ +^22`!EB`'!e ˙Nc{'Kr؃PPӕE9˩XO25tN| .U(Ee(BMDۤamb⍱T\;9x=CM/"8rՎ`)<B"Ǎ,,AV)f,%st4-\\#5W6^Dȇbivf,C&&MtRxz0q@[JM٣q& -K4EԠCMd!C0%aepgUĝ(b-N0{8BE,> 3'M +\]0h" +DAХlƝD葺ĻXtA(+F-R^ P(Pt +F_ [⵸0o_:Hȕ5 Ww2u],q(x ! eN%M:v( SpbgRaoG‹p|vN) +VJsEkh9b،cUV:vQB::2d +Ȓ62)}t*ɮ-Сp(2HoT ZLgDy(q@#kHf1(*cSpn1h䳲 A+Gn0Q#KU;)-l'Y=i. i5P(Y!&T1dyPBġLl'm$9`)de[C=q`B(<ۂX@EZ5(chN`k@FZBn+Df%d؆јF?)oWΑ.Cr! +ʂp .R3i^~(sJiKUֳ6wJ͖GRxe*aHP# +$q"ri,2WCbL&׫^77Բ D"М1!Hrؓ0 ]#6u>L25b WJ\8=dlDcabE9[:(|3=I?pE-'I"y@qY$H6u7q kbAo +pKUd$uNP!&@}7LjN]$-nP@Ƶ\S;5sַýD , Svdb!HzJX-ky7)3Yo+ i[b&JZt 6NnDNm2\8`%\9b2-kapOFm:(["Nߴ`8Du ڏ@WB!rswbNW cuzՋg} +Ӑ9kڥS>KIvrP8iw8-6gQ&@FD 76iaPh%Ċk!r !֐o.p4VreK< *e~?(K/D MLv:ehXƀt +͛Df[[~sAVb8ne¼4$ V\yJ(ER $hW}~mB[XG`Qݝ\~h^o:p삨/ 8;~aAąuXi`o^(nQ?әvoEސVi@%}9ϊ'[(iCyX`u.Q=.J<;uREwqduvmZDMdGkK-VQ̒<01_ѰJ(GX`^A @kvT0xp(%)Bp̓[x`qWv37m鮻RũDgf!kDU&k'@7 ԁa]B1,bp$ˆRͧ ,4Eܝ)M+ܩO-XUGB!p"`Zz:al o,J2ҪN4[5Lx 8E Fx63[2uF(5~;09jT>ڨH[4Xm!$旒↕3Q5)9pXc LR}{P落*FP>_EfDƆiP1Z}7ogld#SH=Q|)LRlkE%=]@U6u=6YɵIN,nc"ocкPQc@ q;* vG*kĬ +L`쾃!KvH5M..97*[[2^z;] t?'z)*{ HzSˁ47B7J}|c h$2Bd WVŒl\>x nP 2%՘p,̈́67DY +.kۚ9ZmP|> /(܇C Ԡz jBve=e.U"P +dHz{ ma6fBW +Z>Sc;Gc5;,V ;7eoW_;(0κ_`jOJ16q0.Tjξ?h*X9\LO|,-#u%^ɺhyDbuQrw#k0$ A^EN+ޮ@!#ªd`Q+>?ؐ.&V h ƓҮKb y ek/U/u6n'B Y/h޻k=EX*I[MvJTׂ[BwKA%BYXOiMκ~Ad(2{Lr +y"T`k^N:?Җ8;rQqLEn@7%8zGE +޷3wq–Ĉ堗P|M +3p +#-Fd,pA +ѴG1)5_#M?7"4zN;꤃+дF{̄E"L4Q_k@UXa0rpUuԿս$%b1Yl$D1ZraQ u. D +.Ц@!.+7`=x}9v=)zm\x2 +TK {S(JindOK#/~ՂЈMգ!c[a3ýk"1x;ߞ]BiEGL),:ŏ U|1zkWj6 +`YdؗT_ТYj(L 5-X,2x@$-ޮX$t b˕H&V\\X~LRxC.Kqhy~N%R!$G#Vf Sn蠮H@qU:$0Fno~Qh/f3*t\dq -Erxc̈́u'Z$Uu]MTA\%Ժp3@s!Ue}3yHdW *3/*S-1h.tL5{ +n~ _LKĈ3Z +ܖ#asJHwUBbK'@wVZl#b +s)y`Z AdTBڜ8lh1xXYɾ$<N+U73-A&wIV0]soHl{cBmRd)[5Ẃ[uQ1yS鈸Kˆg a8*H &tFw]I.#T1 +d$"J +{tt67RRg (u~ظgAёS L)אcwD[5j¤a$8}Vt +֤YqS`NQ/b&&54 + $\̨N͒Y%0>EApѴPqԅFmڼ"O) MYH=8[gkC K&*8uDء~hb,P? P,wZ4SD4P'.UV^~ yKEp~ +p0ʫBRđj6\dc xe=}n% l$< +SZ"+8 +&,$WZZHmjV T*a k)P6D&xMہyX?+Z^0וSYCZ?G/F#R)]qZ,oEWՍUJAHT|YDb0b4V(żpBtag(2I=_>y. R<6x37&$Ɓ'J/Duo&l8Htu>'^VuZ&z +Jt{e§<ΐ @}bjmI3t +fNp~}.Lzs̡u{pלDI1_f+:4I7L#o)Cj + :D83:=4n@A9+vҩ3~ä6kÚHvUIaߡw]_L˳Y^YLK^O_Rb/XcPkgIk&JEDpTnXn!Pk{،TZ~m~Q#]P*ld7H:&mKW~X rk$|+C,G+WP2C7-U%%NI2J:ɝ}Kl +qX eZ,B3訖IWF艤HVONRuV dTU؀Jhx`d;9Ci0AdEopw4&2"!Jї=&-"-C^iT/Ɍ'˨(s@Ig9"~ Cx9ɜ<VPښv iVgPUԭ֣dOS"K) 2'&3ӕ#s%͕2 /G#9qO4ܘn2hݍ<=) Y .5tfr %T<^OY~cժX`|;;X!ORP Vv%( U> +JÉaE WTaOazB,o,P1_w89"8NrAwoCZp?vqZ4r' QU/xV)qJjN ,BWi :t]"%Q֚|K(v] 3|3PXыDZcԊ79Nƀip Rm-q[IM.xq&%lEnK{ɥD F !!BwzжF%Ph ȭ-lcj 61"~X{=Ec-:i&]"`9<%z`攉;qjtG/xkehU,RŃfxVr)C1 qqӢDÔѠY4_D.xA[ g3 oq4C.k@#Us,9ABNqAg[3bILئԒ<0/ߋ8TDFUx8c@R5+$hvP\L#X Wh ψ(}<:jF;G~2vW!;H?Ŝ GᲪ1>NZ)K_Mj=" $ )z^V" +/&ǥDz?UHT&>ӷegtAXj܋bo $2Iѵ?$OHYU֍0\ +ƶsRZ)~1 `β22楛 N>Nj%R7l8;Mu. +tzؐl( z „t'j4j}.Mw|J,IDxk(aׅ@2I> +rR_[hW<_ة;dު~/xIds' blk, o̙;:KP:)m[ :*hy/rQ$u  +{4@٤\:Mc5xQlC*tcUkv,#:PN1/W nF&L>nJ 䅅E@H%>;DL^kܳ7X +L1òYX~Ŏ.G$32HevA^WMȉ,x!J)ms߸$G$S~^ )!5pq @^gқVCtۘmDCu EwhŪdMU8/'^Fr |pCsIA/# dZA + ^ Zs#[j0j+ԩ$҃1Կc\0`Viɰ@c-zaBaڬHwZ9o<ۨ_c} yM)rh 7}єT  +RUkDȡپj?!`tm< TAI'rO)WxbփwV.../k袋۩UUG3Eg#;wrzd5wr/f +CÖ.@~(&6M~Z<&_a7Is"=ejM?Um:,sϘ(Rlu9X@+<)lcw6g,KǸ 5(?}jz3>fzIt/g|KF#U *$SKM}X,l6z$rhm~e"\O1-r ‘yaX:FY$f (B R)-<d-n D%!H8"9Eb@g5kA4Y@*&)'u>Ud;ٛ a,{bmLe-h?8hSš[luCK]֮hatVz{E$A.XȦ8?V~\ \#`F/ [=52LH —EyCA 86޻&-׈114Ec,- +/]sF27n x`k @K"\rW--WzK wz;NIfULpDOQ[^qNth<" $TcNlK0}#c(vJICmeXDzPҗn*53bTRaw:%SCʨX%-f %V`;#E-t`(CC˚ 3fl1#DOO2g6M]vݶYyjc-#'%bcRelB* ,Nw|l<".4SFD.^O5d,\@X$*;6}B P8Þcc\A]&= 2%G!kB,Z!Fy fT"f։'J3HYDј'pBauu JŁCsB:7A|[ +vˌVFRT_6B[=HYa?!A$FkC͡oB[ڠVq% +^,@t`)HQwfmm5OlJ?ZEK-uq])xAN 1E򥲚m + X3].҈3Z/XAnK֤ {C0Ϛ&C+2DFU<<#«ʙ ,bjA􍥊 Fx"=T:+g8o|40l#980$_&TAXi,4Ch(*DG֙L̟Ltma,К1>qW6u4>f +O~GTXb(aF=;qi0(R%eq[޴f=>R6?3E@S>r~2U ͏*ZH((@j|1Ā~/pT yfK8aTF;}MF;☶ ~>2aFmda]4,bC >6oqk'@+,OUa j,\V-#օԮ\UI'CWxTU'ϭQkc lS +DdrUTw1h]m7NgO[ 5q/X;Q_&/D,1 a(G<#|>J<+f #v3|PG|E +^G5dx_H +员QWMYFd7Ek b4S1ԟ/\(ջ'Fq[zm*~Akk' B?(\Qkx4hZltNbsD 0bYH[rSVUI0I$ZZFq0;  4~0#>xfhr' ne R%&'U|,W_\EتFJ"Ƿ,Jj rx4l#J09ty~ae^C{ IGrXrK"̅ekƆ`"2<^",_~^tw" +C +5PYN994vHmK4-֝@%%BltrKL܍њzN* ZePj PX@D&ŋKTY5/N?4{F&iME, +=D#Ȥv "C`k,PUwC0Or ?Tzu`qҴ)ԡq^&eA`XB$VQ]SvD .hgChu@C9 -W2vv*m0_[wcIF-ⲷ 0 ;?<:s>k;Kv y;yCzzO y㒖K Q6j5x +-{vꞸ"Q߻WlJrD> +d}ٖDI r|7 jWaoJXG=_F51P3e(bX%`DW{5*.AeJmQU=2TIǏ3ؗ=&G7>&q&B2/7*uT^ U%2(5G^0 3n=q-IP= fm$ʞSbϸx7Ϛz/V5I- +cԏRy5U,$zl9&}@Pڅpn Mu<6{'RW QjpɪB97.vTܷ6 n紗Ԛ&ǭr#w +X0&ƣQ,4^ZTl7Pl ff$eoZQ+5XVARd!Oni bQ>w BA+̜»). 2O3Mr+"W f1͒*,XlpP4G)Պ45F_ tsi_NCƃ@g+(ŀRvzЂ<˥ظ؉V@fJ g,"JvL֌h&VFTxҪ +[V+RA 06cЖ2KfJQķZ cHH!6Σ[-4V!w_zI[l cXe.>?y  +5E^[Z .p %| *Y6nVR!FX kK&*B|'lU.zdZU~99@9][+ \qVqq۩kˤL\,ev 6 Wv US2. "a22HN'^znB䭕~Ik)B܍WםՊu# bO04W CUj}XY` *IHRj.8B.#ZM۔O1ЀUtU +&2'?S$Mv +掻];/b40,& vgJI0Ο֍ MESRMPPsD_ Ȥi%4B#O􆞵)%(6r4ZFy1B=e Q+|pQEt>p`ц8l OPlipP5OرS n]ίWp'*j#u<#75FSX1V$[M!c )#8Ko^<8zYK9XDSuIYGdoZ&9 `-Q#C`)l(QqԺZPq'-%i+V +$6xݴb,`)QN7ZY~~6u?bŗ,(tUU^DLVl'Ň_o~ rG=/ ^b'Ң),q=i|&<+Z ֥4:5v(7$K+qvIJb&R(qd|djo"t?,긳HN@|PVNUs&5X޳񏒊Wj[*4EBGqSp-_33_۪)FT,@b'CkJqDa8Efpj多>QJ68)=jç8orW +x"Ԑ&9dRJΌTS1IAZ>!v$ d/A=kVJLRLW>*=NMP"J-|%g(X5 fE䆴rDA#RRID-:Nɝռ=ҕ[B#xw<>Ɔ?bL6cL fn N R7%l̨G"!{pLjD+lZ5 ɣy^Y]>N<`)'ŠAXT'o^At+wgL`O4#x=%Vt!'k_ebF o Z.vŬڡIIPUQ*WF yl|rn «>BoaO +a' +@N]#Fh=d(VE*(-W.M"ɈW.q}gǖC_u%E܌̪٥c"UBInM;6Q\X("% IP&orE|3\"k 1O&+Yxϕ0k.Z*w +nqXTi Nc4Ͽ: +?`Pē<~0|%Nel~PƩܕQ7,l UUGK;hWUS`Qs~/@M'Ȥ{pӏZf!dÒq6]0eCP{,px8 NqRt]VZK?-SSz0LA/"cV +CǍF8֏ߞ}&Dne0r%ʃƊB[`힗hw?˻}_u5gu SZB&!NTH.(?Ǫ}k;-ŻWi[^#٭SnAV8.BAz!,:P2#Rcy ng~0.5dvh5]Bt)x +֪f#->QȵwmPS< j]աE\TH9Ev+{ Zȃ-~Q3,8īfʂȕ98c;ȯ_'+bt2X,0ij_ݴUjlt]5XOg.h+ݝѠ3MXT1h(%mbywBPlqڃR KxAuEmL{bN-pEJ,r3m"t ec8lU-$c/7h?2~Dt~ޫlL F +H?ъ0erzz^şȉ]_hC~3*%MȒ$)e pDoCTw5/hhWr ڃZ\,VNAX+ERRTTܨkN,oBӃ/Y+r_@K9 +j$A*<{ +^JI +zJb兞yxCцcYD+p;>mPl,&8ho- +)KY̛X4YW) q7jQ@8 9#b)8sXi!5 +j`hR +&,Hi%lz L/yp]!!!q]X @`H\cDYaVaVaV~i8P rR:0gYTñ9"(,/~#[R$FٷUUM/[UBl}Qs`lf1?fZ 3S^X>+Sƒ  ]_zߖNb_ߒV +.%-v\ƥ]u Zh@8|,^L[ 1>ǗxmJC{CP>>ͤց%| Xl{LY|]3̪"xDƉُgV6+ + @JgZEU!؄eȘӂ$z>Yl(K +tZNe?~!ױr ,n:v6䁺;9:JDt(1$;اr)sOr) e+SZ3v]pmD^ !S\ ٽJ+q"8dc2P]Y1hqVrQOb7>_[RVF%ZI4S<* Q +wr *N,C+]z.MFdGB6 DxLw6) r$+&79L3v|y5Fkdprq:)x ]AUlu4G%zM2ڣSpz0.iTp':OF5 ~6CA&X(qbăI`Q cfA:mx^.\Kmk~g\H=%qW}U(QE(FĮĀY`Y96 &O([ٍ~uD/ +Vxt( 1>bl~9zj-½a0U%0Oj)2~8T,WTw)r/&u" :{ +0"okYëM +pmK +w]v0UibAb} y9 |暾NC:S) + I3MNN +-,ÃǕ 6Y$`T(xƮK` XBEtYhC(2P +{sȊxf[Xf͊PJG]c䂍: X #wdP/D0bTii36-u=)f|QaE\;Nu=txXV%JoVkP*¬ٰ{ڌZ@jn?2EwTjeg]]FU&u0˺e$m,R.tM]}uH,Pl2Bn%C"xƮK9Q@LR j%~?' ]9EHVo=%⼝8#d!(])a!$>{ޏ溄*,2 jAN嫟/l2b2??]0тUH]l5CGf7onA-I?, u^>9uL<bVycP`rsN:2+47NLxvHbgޓ)aO>5D|1c- E * q/eW8C4\kz( ")mH}2H`h8;x&] V+H<D`~.9kIȯHQe7߷h0*A'iW5:"y֌c,XA;YR@ :3Z`gu 9|rQƃXxMj!gVJNH,6/} pU6q38?b7igÉl%7_ݬ5` +>RאdY FVZHD*JֈNx(R¢]"qY\A$a; @Bb=\V4™jVѫgԾX) N%"6 +T;ƊXoXb=*sQeۜ@4[O(8>^F7YW5 ;3v$[O]Kݗm'dҡԖvS~fOeg6/=Xy0+ьc;F\$>Zx' қׂN4yei NQjm1xPiFKDaǑޣbL'E]ʒ"btH,wT 0 "&orK׃ȁ)r S XDdbKpF\X`Ze0_Yāzb8O[ ^`L zdž$X\3)jUxˈAGb +u;,^aWZ3@9ѿcO@Ԕ(^I !B O|9Lk0ى٠r[mXbq=p"q(CbKpkݞNHs`z 1@+!bJ*kDxK(Ur:Rz@STL*s RSnR ] JkD6\e&Dpb. [FGRj +K_pZN@vy?KZc 8yKu#(UI&'qILʶ%ʾ݋Jۀ5L ɎMNG(vEx G#M< of&2bdʹ)ݍg4ΰZ<׳EiX@P˅ Sʔb3Gy $" PH^9RI4e?+Jk LaF~GbG)D*>xQ'Ov.>8o s;*%1t +vXsụ!2F诡5,Ȅ;r$A"!iPBaK!Ci5 CJ`Xt(U{ dybe&qxHɸ5e4U=Oiaۮ(F͢A(= 7DU -xՍAE3P T5N BڈmPbhMU2LFYyP!n&0H7 5Uh w]:`DP'kž2N?깲F37"Ɂf%eZr 9$PZ7Kn3v]߭ŻjD%\X.41h$:@Fai4Q5t Я/&NMpdrTCR>G+p;3❄ٵ$*̈́:J^"<,)>xp [%D]C<@;vHYěFTI+ h@w2a{ +iDV ir;L+T %Lc6f6{Q䣄* 姵 +pȬ.{rmbTMB$w38ҁ-`̤Z[fEMR'ZF<^e*hvA0#nY9X +_,&\J瘩 +1Ѱ)B}i'At1jM8!z("(@DK_/E(}Χ̤RM%ع&eU)]~ڟ'm䎒^4UdG<1T*5SM퉂G:b3(^ـS].'Y_mp.Ԫ\X)7P'jg-$깽c̔bjjPA +>]L=DO4%٦d p61_t @D:Šhʎ!:>;rtiGkrd0QHh:AKYh(_s:Tt3`#f  H!SMijfv$zX;$H!.c&1%IC>i2Sqatd (ubu$ap[Xbj| !b%+ k^,# +JČq!E؀päawBnSL +G'K4caTP.ڎ ۽$I'bx@ʃ力6a3i{!vb;GR(>sS,.nH2-!̧1Yjbۉ7xYA"sX*RDz=nDBzBQ'lCd!('w +fn8YtS2hմBf\k go`B4R>Vp%ٴ)"tfuq}>މj'28| +85,4T#.8PPCKVA"]+JLhJ@>g>ٱ"h3^gC>a{s4qWgKeh\ew};xK +IMKIKeP ϳ'ȕ_HB 'iuDG[V4£Hx!PJ[Z-<h1x.:7 +7.-) +jZ|Xb5ȗGjIq`P$Š%-#ؾ=AIrǿ$iKdУiR1ΛD4#a9AȈdyA hm_,vW)dP$k0.K3Y𻢄@F*H5["jpy ]Qc :aL]eRi"!ʒݢhO0׋Ν*PCAsdh_e]Nњ؅c!T1.wl W4v#c^FP4iDS#?) o-$:-buT0qF#eGIq"O.&(t)Y6B@8*c2ҳv +pēb6U^.w |YcjdN& N8$Ȍad0]%Q#"R=Wս(on5:!O-lɦaɲkZ q*8` @1͠@0L)*|p`V!\zAcxĔ'дq9L;f:$AɠKtHP&T"ȏ$޳jJxdA']kDpXhpm3nQ21&|q< VDlm(.҂p-FyZt+Q۟.$ 7䗑^RjDw)Z)"{+et +c&d|q]O;$EƏkkMEU=BɵPR1t6 #lS`7(XP cXn +'C|XV;\X`k<ݕ*2@Q hf"Z`1os@h(+sJ锱#f!ks +iB0Dzx6UdB৤Du*5!PG>K\/&6 +pv(8 XJʪbtLѮɽMRK +YpqG>"8yȘKMky2I2 *>I +Xq W9_%~ h ׽ř 53"K<ɴ͙&%o}qCk$F٧$?,KT-q9R"Db%0*g (y]Bk%YKˍGD *ُg(Öe q2er&09ϐVZYR3$X :zZYRnuLJ 1>:; AxbMp`=ofluBV*Y@/(!KHٞsX]@6uAě!|bD:H>_MQ?m) M1]3C]o=uq +k>D +6KA)ڑ,?Y5H FY1jEBƴBN샨,>ؠ@Sĭ|qHbuYbrX0$E`4.t6=ILU 1>$];D8:Z?@`Iv]JўhWS  dW4=%7jGH,Ɣ㢎s^8h +%3v]4lI(`B(k1IGxy{Ev&d2uRK9 9:DeX~. Ap!Ppb7 +֫40-KMhgÚ<  c|xƮ:j[CBG4=܈Lȩ)|C#0yOo]o' 1? c) n L#S'`?+"Cv 12.'2`6֨2ĻqnhY Vx~ҙ{킥s3&YF,ֽF8l A$FٷC'5*sEd]C[ aJĒA(]դp9)d2 Xm+B%qaC"ye5UMya/˨ *\ÁB,|FF[lUl|B건$` Ida7,h H<}N2]8]Wb`cb lgɊߤ"6K AЉI,O- _7;@ʦ%l"!ɺ=)ۤ^X %h֔"MoҩY^ οYjuNŠwNcSM'+dd{ϭ`"E%Z;$[h@]craZ4$F` ~L) C,dFT"~7;#e`qII r47(Y,<. e?ʤe3OКe=])56B+<׫b\>X'ZՊ(odf~?()ālҷr>WHn`Rp#ߣR3dP+3v]X Ro~g?6g[3_J <^7rk%|^%2.[ +(HיW@TŏXbihw|gI^!Xxi^Cq #ZO^真Cُg/umw"}F ~X &kWj1O{HwCFWC[P6RX2l( +}0`Ujۘ9bI:`Z}xƮk| ѻ.{o➰7bSL{/L +!&-%8Z(9XJwFٷF{Xօ"!FS.}擣)Q`}+~!?\5{=XDV2de328ZM35C%M{nLJgs0jF S8ܨWp-l8 3h=]KLgt籷d^u Úbe<>̊pap-۾"T(\Hx͙p¥#(,F](<THS D,Bn1 +VHf+*HB85i9c &n<:aJ*̿kTPk<ߝCj +8BF>X%v @J *[U44}0Al\Rk1TqFPB +DS'bUUN#'r]hIѺ0|@UAfRA8rIih~7`uDPo=*NMZj`oV +$6.v!SHx R=5lmW  ӢakLCDIڍ&X`Phϊ[ږa{cq\m {քPH,G\V(]~7'.V! Z}GY!mX>? +ڴXOcI!jb$;+17: VɊj$ju]ɐEia0U s7b0\(-1?(xZ p$PJzԣrcOInk|M4H2^ $&Óv^8>bv ]WX~D^l mw]N E$}QH(B+rYy񈲟-\P,I,^ +NB*..&4NB0:8hXSgL,kb m1X㘨 ylX:DR8j&(+<;UrQꙂ{%B`Lg8)#.xJHiD4DžӸ*d1\=2LJ&ar~-'ݯNxB!`):WX1AxjGdQWRƠ u5*cJB,^ ?Nt|TJ)HSup_88gBխZ>+ x5Zbυ"FBX6E+M^PCi0XJ j$*H&^&Тb4HnG0Tշ#6 (X@QKl4ZUMW>5@ۈ5A%ب yî$#[:D~{ E8.J(]-X {ebU|b#( l$')X†K! + \"JN9l'4|BvVY%ZD> ; |=vʂ`\+Wi3v]&xEK׮#dFHF$2>| y0L( TlmZ=N#CKX,lhu*?Q u& \ +٤3e1/h8.•=\5Q+E<4:;:xƮ $?g6P<] 90‹8.a=FnsA +@bUR:".Z0c0l^XL>38C+e/e6=#2o-(,TL5fNidQG)P,Ty:dE/%J+ g i[T! riA4NgCc@P]A0*B'4~U-C<4IM&ǫME}VV kS x&Tq⊆*,6uܘUBf`JxoQ=baTHΔv0Xgv)00_UXytɪDL?Dr&l$2CD4u]CXMN +<4uX!7ѱ ù3W7BHZZ,)ʚLt:>ceNRBr^EZĶȴ Wcc_tZZ.Hb*,VS@1E 7J pSű d8lC +fb)|KR4V,"4ӿ^`C%2?n>zׯA" ̒ISZgWOwX"XZA`[ZKZ̮„jUddӖT؆rjaElJّ3Ѕ|!¼:ϲvY%EEGP $tsϰQu^7&zFhZPĘX{QN :,5eV VpbR* l4(7h؎ ՗.\p5yYJ0&2 s/>$I%%a5i[{`\8E(`SNd)"9*¦jmtЉ*, +=,0 c` Fraǜ3*NӉK@,98H&aAIټXK)2B.?޺7|m 9v/ZWAU=Ƀu1j E+TV +DN{nVj @d%/.O&LW;>W##h >I(CIH@/$VO.L|,co{daTo!+thi~e`5 z2Ys:3(#ӱBE&WST жd\aAsaw;#_Hkp`>W+cl[wk[r˄rPb'A[AƲ,HXLP ^*DT =L4jieկB Z# T&XQyp\(Q%$I)S ,:Bq\I Ju BiR=ଅ b=JR7ٲHif)`dhi = W'E܄{ yX983X3ŤG2j^EnJdKA:RMPU& q5hWfX PThc106+ ~9g>2ōA9Zr`AG@#P ԃЯY/#3(8U)*dW0$fQEuM+̡ sɊ1ZY/P[?{(t)xC|* T0Y:X}:pEX>xLF :-P +=B@&TW'V& \{@!_0j-$~2#Dda$10EA葘R:|lN引kKCC[G`K03f?+:% bkU#@M"lL(km#{J +aL \%3#x#xDB4g?O `1w8d?ְ`ݙ0x KLȀk 8 cϖDTZ`avtA}$xfJ܉T&\0Fb0]Fp!Y @AxPТ 4ܚQ< +F'TQPԆ/h"hhh?F *{:ī}G.zn[<,hMUi!Tj)pF'V!2q4f|-b`Z t&ggn:,#9ꓦ'N PQHąԖC|Um[@Uկ_ 9"i*;KE'HKjJ0M I2dn\Lb4E9n'SjʧrDi !^br2+Xx 0eʄT J_3I^!Skd-7Y|MY%%}h(lDD,[굕k)r9f>?i*z*זF + n1!4pe8x :%)Az׬?MLH`ZdX},ZA! PBl:TQoGh0/3u@ZAhU9'[{ m'acUU#=+AC*M銬.u >ybGp5sN:"ktSLN/D \\G\0o\o:DEU?BFi \g pU\!|D27XepyqJVvT @ ;+H^TjnhlS4D-T^E<<@/YODő_!hXw 1O v z8L#^񧰐`4g5HV,ABq,`W@\|![,6 && + yq=Ti@U$l3q$#ԏU1H/lH-֞-6Ω +i\ VGGSK[Lo9?$o,Q(&`7ҡ)H(ħ.ԞP:Xmq2Sh246tFD-aeI5)WwtaVa pH6crr'Dʖ~j)bhXtHFHc5f|2I]>H‡0J{hM :ԜP7E#aI:r/[sEnxt  r{̉$= +2a\}D!/Q-Ĩ8zZ ƣ0D6d_Ecpjx :q, |-Lh%kk>k EdxBWa# ۱b 20W r +oB`>HыNU@H6͞-õ |L>P~/XXQXLM|ds4ܓ:FFSօ$R$lkiSDž68-Qq_a~peRA3 +MA# m&* Ħ6/g3\zkO#+>@p@.F RblWO7"4Oaؕ"7f-eꍆ!; 4jF"M]8T3 N WNF|4p=3RN8z4SHK-T2:. L~Zy,ވ ȱ܇WVe}Yrc+ռP'fHAtcXa +\G#q f5?6W*n/ [xPT VKʡ!Ra4 hV$hbY0K?@ʐ=#xjo'X5ZC=iV{1y6"Yʾgc1 +pU\0mKڋPlB-DP3dX#X A4tflV̱A4ᏺ"dc-g|3L5 rљɯ sK @D\(כh]n1%vdrן+ 2ubl윲hl5ibt]_j SajS'PX"a%9KM-^s8t*GRRS‹DiZh7icoRcX$AB#S]$` @::i׻MghX\p֟=5%r NYKi5X&)ڟj=Vfvك5@xEF#0 eOw#XYQJO1 ]]EgQ "LW%IR1~h Pkǡ0:r)DZ/*.,0Ht? ] wĂ!^-qLA)[F ML)cwSo I H jE},q>aThA$DM G @qSBlRe?Һ3IY D1äQ*fʂed7 Bq|w!W ;l8ng+;_#4RT,.N;IU~yF&FJ4nJǮK8Y$]#9FM.*#P}dIx lE])DV!&POLZLD<Ků*~)ARؘ`g8ܒA%4Ľ 6E{57aw*Dj5j'&VݜʷDya4N57Y$%^%s [FP7$S !H楷sYpƧ8ɕ}Qc&+R +R+;d dI,1DǕ}^C]$Jz aJbz>?(aJ՛Y.#t2٤PPv$pE:؏waI0x ˒i,J$;\YxYV ޑYjFӿJ1>إw`g9w-j %5[@w*l*A :2WO+L;y# Ӧ$vp `G pW,'TG-o1 BFS4 PEaoq[ʩl'TcsJ?skUbHelWdIp;Ҹ׹Ɯcw&n0*47<^z/$6X];KH0'YuE `CVtVD2^:GgJ%T hdO,`L0[x;41G+pF@<2,-(jQlr}H·’V~LZpJnj"t)VX@TKpXA<K%QЈmIM.w L478Et$t\: p<@_'r5SWcPI$'ti63m| Ԅ;{) [SmgwU_4 {#r-wC,RV%Qĩ`ab8\pxȚcZ`e/Uố8qpFdG| ~lzKC'faƄy!i!xRt{辩#t$΋zP74AUk*Aʰ,/{h', w{gEq0%h%Cv2.SM;kbEpgH8uxo/NaLj6E9np"\U֗;рh5.qX߲ d8W`${TOq}NgRKw 'w. +%k`Zbۿ`dX".yt>ۺ?̐Ftx(c#+Bq PlH(-d-{)c).CD+GPh(&"OZB❣2UD (3ҦJ Lh=mX)e[]rkP]ĈRh$YUY=M"i M#."HIFājbmK6ibUL!f,"8~D⬇ɭ) 4,sw[]AXZ6Վ + +- +hyv}Y٬[[( rc(e1ð~žJ>D΅0օ3-X>"u@DuCO +E}l-sV-D[N;Ob^L'f&oDfPf[n8u +[_% Uh^|CCĦɳ`bE"@FN!gmDXګ(]s۝>r,TD%)vB? X7}[C@{)-^ajn&C He4[ 3? +TF =L H*Ujk9GD)眖S1 Q?Nf)],F:B6f+7&6'\9 (ʨX"[{1< .Q1jf/飚p,˔Og$dT3z;!2 ;EV/nKBn|5o_5b-)5r6BShQp@} F윈`In”z_Ț/b Tļ. hnPo.yLc6x•]=5+jӣFb %a-^MhڥV9<4] #N,R^<7OpBH:HgbOϑ8_q2S; ˛DK[x1)v H~a-b\ؖ 1UQ`(X,(ST]3E\)pKHr}V֛drCd\M:Rl +PC͡yDYZRʱ^,aH3xX MܰI(B8qO"SshT +m<I%>Dؒ1nyu3)bw ɔфq㒦9*Lxڕ[CF.ʓ+ +Ov.o nR1Lz$&Sxrt#Ff,q-Mb7ڠ1g]*(hۦ zRAPYPr$;R5uq bm _rlBŨeNp}|]J48Q& +Ǝ5<5Ej2+[`^C#(@S!G6p WSdV;| JDT!{7&ܑ\l`գcl.BjUТ  |''ƬH5ScNGں䈠Lq/thokQzư^I=H,J1pW@[*ۡ4bgMK qiQ)Â-06#{zMU]|[b oJ"x Z`/駑(NSTmHVa\,0i]K_(aLѩ֡kW$,j:)Y ިGc1V1 +D00WARi`9QQ@D +̹S}6 +lӸ##TFO%X'fpli$#&u{ެre()%pHtۛ;u;tF3d+B:Eɉ3A(0lX?tget;#m-e11馜I9.k4uzcί^BvŲiXr;e;  +:1Pv2^h&OCe]9NHVI0;hd- @B"xMV+ޞ^S"vI,n`$Nq=U!DӉJ>qNv@]{OݓSU3\x<<MH'OMͳ;3z~>"z``(, +EV|;_.38wFP yΐnkD(8f,2F LzwM7e/" pYg=x$>(]~m¡ĨB!k/򌙈Fj<-Q@ V+6.CA3p\(v,v&Y(9 M2Vj>Z҉fӝGy@C#.b8hx|zW ry݀//ig_" +a뇂iUd~[M Q 0 1 y1Q ta`޾G'dv}Md#'7UӸj.Kv,2lWa&ogAڲFejEvpUsPicA9P+4 |{+F۝*Dz@Ō٭2: |&gƸRzDbU 6(9ԺDfuX-p(pGXT c;s\ dxxu +UcQH8I!#տ7JTfSyҞ2rXbzibU oFp]V{Jq5ƨ+\N[ϬQVב +Tit NƂt#jJtA-b*{T; $U.BfhRsj!7N_,oJ Ypǃ` `lMb,c `+|5xQaݺ#5|2| Bl^ԡw~ISOi8@(,K<4X𹡥6/p(:އ*M}0 F,`( +ZӪ&Pٵ@EIHv 1,IƤ4fV;S*M-קxV tw ޴ 'mR0b[j}R@88`<0ك<*1t $zЏ&eR(#xNc]͕~ߚ.mA0q~,>P|xqf]|Ei1`Y.PmZN/jG`Ѽ|#r=u>c|O`OEiX-;Y3Άī/ZFH.,Z!i1u^R b/mQ̭ g+óa; (Gj::aCZ2Ҕ@n'4y S RČ2R l*RX` ~𧐫y +#BkFGP;uٺ^i${0'Q ʢҐ?x۪]Q>Jmr^C4j2QgٙSr'.Y+_KE׵ E6 +PKU aNGLY1AD3qͽntBٹftkIxʉ3l߼]?}e?@WxY>A-zGyze\G\%ѭ\A ieіRHLUE\elb&ckR 6r;Cfj!,VD\Gظae _bv_&hZ16?ge*jr*ej%PXF'7|^ZPO_SIuRawY0h%-mJ`!"-'"]7@*hCsIOJbTx-GːaP0jN&n>FVL`oɴ +'. +Kǽ>M: ܯ9\*U^@ShҪO]vhAx,K[QA*K[~|EbSHPcU L ?s C r' P N[@:K.l"bt W8#N6Vg!L*YE̜jVd +5c{_+ Æ +DK˱OBT'(gnbMp + ߊA1ko X`!-!-ڞ@ Տge`H9dr)ÐOK]41/>3^|nS2&pܖ.[,CHwmsH'w_y"aѮ:7 i5:7|רFt_"74S8&o3߽C$[*Gn|87%.487gd\#F\-=n.DZ|.1Exz-6ݖWޔNͅN?ސiu=3:iWl&"ޔrU>U.G6e.&Z8%?^ rF2ߠVU ϮR ЌɤBsߝңRsʈdl@4S`2#A:YM+a[/knelyA(+),2"C2?LF`k[W$x ?gjRu謌HV_4q5s3p) GR@4'2X@+|f&&v#4=VOmٗjYf kWQV䤬3z@;, +(q|[,NFB#趆 ^+8+F##|휘j 3p`\{mbvF 5mJ`Vg {њn&֗NMa0WaD3IzW[9P&ajsFxY+YֹéJV]64$.`벦6_wzfYb.zWk uO!äSRyifUD}hC;`r44Ꜭg`E0/$+ @LDŽUXC2!X!ȠZ{HQ{k~FϷPUq&'E؇e/j*o5QbE;*ЁF\nƭ asi;qA/4uAVLg||Qx`tfhP)X 2Dc;42Bpvi62D6;T|Y;+'6v2b)'IdϒM̑2Z`iw QCJȱ89N7@|` ;GP^OJ/xFp{1vCgo0i !dCAW@@ +Xߖ:/5%llCl|Ԥ9㜬l> Հ6\4jg1}@w}/ sJ$Ż5.ŕݢ( ZSȱ@uKX6g2]P5IYkt>jܶš/>6'(PDسgN*j`>I% g,!\W\GA& h!x0lҨf(1Y8ėe9λkX`dj%;MH Hгy%{q+wQidbi*C.㘞#-ZIGqw֧JI_aw=1d91IF88Xx[|,Ag/gS>M ͠N NⰲIUp\n&c, ]|q.0Ԟ܇s= +cO.dSc-)UMUU93^VK1%qPjMn h, pRsXW 8:\t&O/Xt6S@inƦ Ƃ6T\5XU C0ge]qbV&wOKEp!,sy҄X@Xz ހcKP@3ψTLcNbB@G}ݓw3[͈,D53Ϟ<ORKjUϴa厈խ\'Pb2!G2U`|!kNb,P7j#~ 5))B숼 zJ!y2bIŎ/qj Q:fpjDP%XP4МhA-c6\L>Eph!"rMWXZ%)8cE魨%xP%Jyo9EQCk} ߍ|#gp4KW;tZP`SWˆo(U=^,71K#-ŁH6 +rp;3͵P!3De iZ3M&_?Z!g,H +!Ye{e  hqNw%-+,V'\iD[U.zᤇ 4H{![cKa懁6RF2g$bSǵ-St(ah:nZLJiak=^X"fDG4>=v=ա1&ڦ\S_#X+]z;, )U`(B&c4Մ G%4 N+'T]H<pMh!ًX`437O# ,cje+q٦]N@qS|@ڍ]M>EWuSP;lU8ÞQ`/2@FP02?:V?l̈́aN4ϒ\faЬ1%sf[T-8 .{Dzky5Q7aȻDP8g g@ :_,`+4,4ko:(Gm,Q`XL\ls7 ^ lx  ;킸394X83| +7`k'M=`6 G٭bOtOzB`8X&#Yn^hY^ՠCl)]vA˔G[Pe⚙tIb nB(w5'"LW0xc ApbtD+'%Ga=n. +15zQ@951)U ci` u@f{,o"Oge &$@3֘'F+L +%B MŒtsZW1S)7>zY\T˹M젌rCpTɣQD,ʲ&{'o/䒹D`Ř'LAj/r[8."3_jXF&R:xsz4U"x?C 1ӭ|>M}GB!0ŢId@`Pl2Bchx"DMUZܡ}b1P6brg_iTQ'AeL&3Yo ?CGDʾe`X *'!^YE Ta7hk!pF `ZՌo_w+l:.4\G׾['ӽFݢ +ebљh7uz +uՃPPV:S)'aL)Cê$-W)JߖNౠeqyV4G!MΝ3$!b;ɐ);%i.W ͩ$^l$Y[B,2!t4IX ysE!EBqx{&ƾs= +XMuKfELH*9=BXD粉^OGNnm4QtS13P|VoVna1x`K8 ְ\,3i1ΤQ@ V AZ5$ Z9n5Wy}-53Ccl;n~ !a>* Q'M\#LFE6>!2䘤m$40OTZDxݞj&_囝o~x +gZ g$"""VaP{޽%ۧ{x6?4Cx-T7.s#"],/"5\ +"qȋ<eUk=|+"Ԛ.z%:C+VP&t6L J5%Q"+{P=ګQ<~us(7f==]hr j0mK`c7#W3XJQoزs +Z6,"(d"|xA!2<-y@NW"I56Qj229 PB +HN7x׶ѐ’eLrSRv4|gF_j^!`%P}Ffxކ reXOZLԘu$䎞8TaiPddq*H:1 +,*ŽfпaxmVͶjʻo`-~Be O ޅ2`f塰(a X/s/hcOp9JL(P@a2$},/"H#(lxoAҤ&Rr\9oL+O&s" G^Y".*h]zX- UB 80]]V1[>_l zbc Ul.iE0!?N YV, D(V ȷIf&pxr\,{ @ bèSq!Ȭ8%#c$+ +Z&:)v>'E} Sr!a@g8qAl:98v LtFO#@QF42/-e3=N׺!,5zo $F#~kD]#9h{MeZDL% 9]k3w!1}Fd 6L%6Ո14T/kۢ2>dsѫc&[m6$F'3p,00J?2Z!5cyj R:<SxMOSQ?nL;A956>X=N$lz Nr*Ah1<9Iݔ<־pɉ$7-ߑ҆y@cs\!I@?K1G\maNE?";_Y}f>(vN\S61&Nl&W3=DZwKyb{kx$ӂ +5%Ƅew@aqj `R4md{2}xWN0O#0).zrpz7JQsL\6wA +GĢv̺+Z(!J430] +Y; + &na$tƺ\$j8*]* zEj% %E?JỜ8 ܬ+ >kl̆ ?: ͘˖Rr,kzZ:g^瞧xҡBaq7 WbQccQ,CJx=T- +ֱQ-ʑ"~zRtFk2w@Ɲv %KX +X;B8@HYJ=:B ZģMkXi֛[Y&I'uB~iRo{ؓ,21^x bFiR m3z)!-^u jbY ,~Ld(Z+@0{RiA HNjgbEZ4wEWUZ sǽҎ-WWK_ʊ}R8@[+[xYK5|ZЋP.{Wa҉IJm.E.Rdi[jK[\}[7 ^XA2ZxCPn`(aPև8gy#юW0+_$K f- ͱ#Z+}sLxx(i +#JR0lu"'RH{-;88y.IZFѣ'I[@}${ b Li-3X4K+) 0;P-2@0p W$XKv`}FR(1G!jjeL,b,Ć`wNF{!:  K{ܯΚ`+DvbȊcyŖ`Gf Nk P$e.E֑7.6`&t)pC*g&%0(H #!'Y/iLw$\VŐ > 8R'ltpf${ap*B8 ؼw G|"tW#Kl8g5MdE&l&[r?0!M8(ATh=2kS,U))ZCy/~ҼÌ.[벣ޞ펦}6YGn}ί_ ;(A +%&et!! IpJE" ]Vn3W1B1M%%m5;,qqÖRnw(ض/X`֝ +/#hڱEHPTأBaYβ6*ڳh B?I;&+,tP= D-5 J@IPАaM!nsoGkR%m1{"CQZi Mwd>kfb,PV0xjj`Pш"%tȧ58Wa0;wSMvdMȒLJ)wil7kX Vt-yD"NM0n"+2~™{lP#Dc@TP<) +M=o$JDo +D]!ޠ(ٕ6Arb%-OAҨQ0)PL1=Y%DRUV$PMiob:dWcZDȠl6  G]R͸0H21wG$2\b@vw0vFgpv<941ZS:F1JO"):UHyPR!arX@#7 3O ;1afLJO.(fS q5#oǠpKN=`)'XI:ð>qN{.$4{lQDd lBYBtq,@ ktycK 3(ҹMqȖ9ťD/FPhSlĖ$`H20eq!DG!õ]CDJʋ`բ}28CmE7$1w{T0$=s +6kɃ1+8+$Cb8&uDŽ@k o-d<?]9*BzKmB S'T6rlȗ +]c鍗\583Y ۽?SDN<>̉|s3=zHŻ˱GP cx@ PqzKc#BPRDL59\+RyQ&JB,!3 v7 z"ցxB7LџXҷ3bRdJ{1H<V! BV:L.VM0*L99[#r%tG0[=[\_4 M̯7p3r$#O TkӴ,ͱ 1'l3 ʘA|Om }~W˃֤$BxT烃w$c?(k!q^'IvL '-h9'^P]?ww"m& +K`n1L }e^XCe7-'.fuXϘLӈ كnWn +dplyCؚǠ Vځu4"V1;-Xd <쐹2dG5K _eiCzW y^% AÙaxNmX Έ!KJϹWh.qZőNJ$K-ZU +GUjq6\|ԅ:Bty:Vwv/ Dg*sR%abc5AR{f[E@ou%h7c|\<[/OLb-e|ufL-cG.Cඊ7 ۋ|%0nocRA2lkcP? *$c6*HFw9f8ʰ`O%R"tnZIIU]mSF9گ8|:pyQ,. =,PJ iMPQy!N|p\_ZdB̉9Շ<`c&x 2rp3CV~դT8!_&Q↩Él ףpmP)1hԔ5گ4tKu2.y4;it p Z2d@F"tݕ0Zԍ ٦\N%x!n[ԿĶHG%6t{@9>7F\ Hز7L88 |T1¯2}^SH_!/eAɞ77!qwSiЫL(-+Pf1RqױVo 11a;Y/晀A1oj`aBbl2fcp. 9 66s+>(&wl}PVP~UIP LK[}:J[[5Igx7(ZY1B |*vvBTTнJaa~F?G#kHI[ȂF +;m o= r P 2}987Ȭ1tVu\-[H秩ɪ\t~!(^c+ &J-&5Ԑ^0 +@5"6Ec; ]؟!71^d>P *JF dt0 3*iU`RG>&9"~p!n\y*H!"p"!S-ƈf{$gl Jd 2Y 't[,iZU:cf]^/"yap<Psœ0g”`df6>e+Xm݅,7f0P;i-g0l#)<;4>TG1)o C![#}hlN"Z!~<%> DWd1}bjaeugeOE,0"GMFYAK02zd϶Nd>h JgPfB4a%B0KGA㪘/TDO(6h LƖCp")͈OH+—F= 쨤Qz^$ϐF)7`9F")$v(.mIaYlWb[ 409YCW Z5x #oQCFg\ £ P,s1hJ Afut8z , v D\%XBu6b$vsO ގ]HXxUpl_YKe'd <@F%M0 5zNm(i菨aQ +/s4 L2@ohRi2^x#`,@zAtZ/"ɧ:@ l1.mQ= 2Bq{m_hh +ykw?UQҕ@*kJ!Y FpRPފ] -sU+@W]~1ԙq%ݡw|x8HX蘗f5MBCtHH74K,<73r!Kbs#͞EJC&!n)&\v &wqp Q+5-FJ/U˵gwiUfOq%<ư!FJۗEK|ad3=7 URat6!T(/J'BS|E*H@]D~VlTY  k?!FǑJ򊋴s;⼽GbCrĻ'ճ9Tp|K"Ć$iak##rni|pIBp^2JS +oIHIl4ian2@RIQ]l3HG?  _:R{p wP ,iZŋ#D +h@hū,9@Tq͂r"k0{I>z/Vܴ#z()lif2*!E4"of:.!@ԧ}i`1uY}5V̫ ;QܻP佔o)^AID +o=="qW@hnfg8v*/hWї c~B>fm;@6Վ6XQqI$|@I +9cnOʲ.EnJH\x#dq$Ԇ%߃!ܟqtov8fO c3TKCK +}tHkE! nјϨ,sycT)?gi^>O0'1l]> *_feq% ^=-1))jYwEu3K,g|FJ4BS:Hr"c&'qmO^މ ENyi/ih}]12ʘq[^Ƥ$.Hk@tD'WLgE;I|0GBI=yi]QLœ<(E51MEKe^Ѓ2gtqY7(* +v:T\.7F,0K-5l;(=yt9)^,`oTmF+IXceZy>W>ok ! MDK :u?Bs|8,z. BNLԇKTІQQqdH3Blro13"(liFeF1QJIЕ#.\cn"Q*)HB5b<+"#Fæ7店iᶒ# ͹9'SԠ&eim ?n)RgK&֢9pa(q$ H"FHx|I(Ĵ<<˹-3ND1Mc .f&h2Mߨ cyI7솓7;LAm#L9N%]v6ÎLݶy c';Ihu`q'̹q=uY)ID ~&*RJWyl5μGj0b&WYr?s*[l?􍩸@E;8Ο|xvG)/§LRn`K[e>-g=? c]|TzKMS/GRV +~z,bv*A_ +"72#Lbb)9r-ŨKS#yBaD~ijJ grIb垉+iAUjkXk{;#W:(=x0? Y'J"c|'x.mS&44őDy@Gr4=k 86}TMԃ Kd>t.gzLzC{KsYO6h hZgNGm5jD»hAkj4&JÓ-GH*>mQCu{?SŽoOIFܛ L6X! 4눂& +g({ 5plW*RBK7o´zRPx3Jx $QLXQu%)hi"jIp'-6Z"ln1%!xp4 KNu"$ajVpN .-AXeGfSiÑKbGƝ6)_ݜ) HM{6d7$&-X-j4'*GxK6?hhLB'n=0ec> j0(!THbBm  X?L2Dh!)Qj#c]P>xzv5?;UFw?k(;B˖. JƑYPF1 ;XߋY!쏤B-Vݠٚ^ MAiPbN"%5 #]bۢSr_^Un]=8iH-x`+,q7jao=Rc 4{?7-d .s|'/pU5=sDH$\[W ėrD۪]N77".!4vNC`㡗`F\p$/rglKixQPX +UI0Z#70=؅h-.Zal"}2qPR\LX2~Dy yXM`,Y| :('gL +w754{5\餼g{zЂˇڇ[X"O-</y)?㹦Jk|ϊ9,FrC|M!q3jZ2nV*|3ˈuOtފjcKB"E8EiRdToS{`2dF \R<;LEL]ǎ6% 앖gj=Wʐ4y|u"A)֡,rE1V +7 ɍ}SOTt/S(D 8XVXrjt '0\s|\t]a +M^ϴS{a*qJ>Ȥ5{u(5EJyÕa PQuErTʫCFSsPn#%ӽ ZJCq+Nԕ)MƻLuyd`@w(ьq j&xa^ BamkL积 ZHQJs *6XqY"V(jtm)᏿xɏ&>E~4|8٘;8Xٙ ҕεsxt-Q-BNWX(snR1H"a2X:jhv0 JSw@!Zj8|}~uʂ<lA\.( Xݓ91A` $-da]f=|yy*xV bUU&Ig  t2tAF6lhvؑ5R̪+CP49 endstream endobj 17 0 obj <>stream +3*2Aek1cj p_T=,0MRǑ:M +-.G#.$$W1€A(Ǯ*O\ +ZbU͹cb|)+$XNP5=R|p79/䑦vq1-F焆21U'c7^7wW4ޡsHP(N% )Id>T%VqmGpHȣ̗M@X`-5 +OXi[NlXL!qaM\=06ϒ;Xht\ބR+V'⢴%'xzȈT/#;wMɒZm5͞ jG3bR[CS IVreWrtJc +aÍAh]o bgDIk,]=rEmU= {7\S =ERawe,` +mR93~qA3pg )8@u*:u*wV2vMpA!Zⴖ9mZkj&w<)ԫB yKpE Onނ؄EoĢȄS 9 ذ"ڥ!" %9J</"UsPQAi;ݞ/KVB19@Gdܕd2R:8X(`f,Py_2{S6vQxԍ4<"ьäI#ZЌbPr#ک,ƌv1;':XI&A!Tt5srzbcת3{"P^Y3D oCmfn4QQ2nmȢ'G w^͆ +f96r@S(Dh[B}m0LZ ,MX!Kɔށ/1FhPm`DWr)ZM>K}0p +ى2@\a𩗥 nWmMzQD:=DV6 zm2࡫<{++fl/bnrJب ͠T3@cC[V\}eEUM<)˯$DQa6Dz#55Ж)hK1=`nTJ4#V &C%E/On Itr4hP4C*sVUq؀2jzh5 {P}:vtf0)!W1p"K{YP!IGgy'KpLkHtp^<Lћi_QN cLS0E> }GF'3w=/JI/SW^6\ѣӔxxh}\aḎTY=""N BMuἊғԖ%>Ņ3FlpV3YII@V܀L/Du=}*½qb?Qg ō]VybR)fJR@i tCЍ,TۉAK>Bciki)rb)P,M#*ŏ°34i* hI<(%\Ԣ"۽mq6H5t C^f w(^OL!NwI-V񟲷C>[`)g}YJwd*{e 9GJrW-*x8;X跆[L":d`It#<[JMz̰[ԥ)'[dʢ;N/$m<6YXNKu]YFre&m3́ޢCihe{h`U ]۷_#/K^\RIAa* vkT|H5*I*ׯ^3c5*<LG5QsR9U^bb҃_—~ށK }sA2U\@ҡyC)U1<}|Z8.@JfcQ n@[l  +YR"91>>ahY\T`C۪TL+^22rNd۽43(uCyY[6s$ZV;xM{-D +ᖔ12$$S0q־\5eѦ>[}SFˤW72&\K^Zs ^$ U81reDCBű)G8?p +VbT*NM*p|{9JIŴOl:";T +,p3AܹkUS^Kw!R֠IoΘoZy&|Y%P'z`CR$ɝ0gC-v R-]/D)%C&2Nȡ?@#j%ø 7@3S3_}Ha)NȖ1s)Jg:yFtؓEX[)ħKi=g/ȗeI@3;WPA5P8q&ж|pp[.נDc|b}gw98 bY_,be1CtN!a ``):d  m%`r5V- :D~ng(KhS!,ܕvYCC +sJDDQkv2~xAT5 Ck* OM3p1gsR *Gޑ-%Uj^Wʄ +'aYxsuM]猚hHX43j/ϛ";@ %0r,Gᓨ^Q=(K;:i (5}MA65*go;nateGܺP3s^JqبcdE$|#< #Zʊ`TD3Dveh1h>1|?)C]qr"O :MPTC>f:c΅L)hP'p :Q45P2nYf "sN Ȣʳa] _clLd>4$LGzxcIZQnCQ<֬UVuÖY{oKpl/2=7WDwoE8*@FU$m9LϓG*~kF(qVp$G0VnO'0SKRCX'TJ pc&WS!LjO +;^71[WK/KM-"Ѭ:,2ͣ }#"cv' C7em9f:() hFʖ#̎:R/:%gide_;L؈:ƴq͉V2ײҐ/:KN8T⩬\tE IL0(L -n5xGY5oy3Yg3 -eA$h!^>خ"dGY֌oVh +n8jcW0x3a +niY1C[fPlT}YEʱiI#J&?= +#?_ )VWF ,u . (aA,~KR-]0+'%83}. +AfliLd958Rㇱ9Ԩ5}H/ Ra(Q#+9}`J'ti"utBx_ +6)0isH3ԛhdo'8_6^D||Yٜ9[N˽546  SBS#;:bF_>ju nb/\HPCcˊu6<, !qy)u< +2hX5pGԦQLrѨy ۉ|ɩR9e3.& 3f/1@Ha$%8\/&}U9˓vƈFvx2`@Hs`3dr)f o!n`p~=.M: aAsyEs:e^Tʑ@t/hKk7;\Leabyʧ214~ 1+Vdj)dd(ibwԌMAjhB>z`CBW n&3 ͏UA~\@E} @A :%a.#c֕T#ܓɆa158̆RnKI }Y&&hS T&#YՔb<)M1D_o.h:CIMBRYB7MYR{906} zoBbc:V8VUq9nt#/Y'RBę`+ߣ !ڀMUf /kcŗvdA!4G%QdA8.ya (VOz[L]cOs e0L(ҍ£cYQ`(61 X[>y!-(Y-"o((>tl f4gJT@"Kge=jXq/'KWT.LQj9g0ꓯsiA$cD9X̉M+%I1Lf|YaO**@ N(̦s@؞ly8V3?&0Q9eEtH.'wISA9qt햷`IeOa,q\a.GCɍK;֪BCv`Np9ne벻:p#É!"Q~_hq6?pl=Bt&?GKh`pi|``XR ڴx +T`bD%qzKYEƗE>l*;5 9^L R]@^<SAqY,'Aj(%f[RCͤ@נYE$R\rA T-iTMxZ?b3i3$j-dKӍң2,9 F 79ܞtTˀLC QeSbĨfނlǘLWl{ZB8G 8+3g +{4[s4ӚT&t"!q*̧Hp}nCrK0r#X5= wuu+%4<#K9Y xڻrU;9'ݪ,~YkdI1HK! 0 + #}-ъ6 Thc˭݊rIt"gI b=!xc0e U <27x<5 Y;棫u ,+9t8E `X¦n @;D ZfNK`"s]@rY^y_*0 `{3'8|ڗzB i厤vYl-2T Hö%|Y)D>ۃ|븀"/-K{ dn|B[zx."7(pߋɥF9zJ)^V(YYWzzm0yY.-`Cz f (hWz3|g@k(̐El{ +?.Cr'g/>R{YctI_"'Me8| dcR0da_s2gF5BJ,:߇iiJRcrp2^ ZJpR%#R {U͈[(eۿDo衯`KT-a "|Yrʑ}„nUN;G~ U?^W}d|5?>zko'3IBl(A1k%gF9T̛d7bix vz7[Sʻ 6J ВRM-.@fT{[d`$XL뗵zw%mT8H|2M7*P@@_ISB7ON|+tH-wZ:zq;q$R. V$tE1DSzE;7OCtnVPjoF$??rӮ `V]@.=_YQAZy\O%iۉڨ3X)aQ^KB!ϴB*#sSAe"|Y*Å(uWn!J7LDMKZQ/ оs\cG0Vqcꨛ`l2»๗\N9PEK+f|*D +Mqk9'U9̺u,#&*E &+MG-BX/Zˁ.JO[@E)-v?n. 14jxǵ/.Ta+M)_IjZ?_HMӇȫ LR>I*D]zDnۗZåY"xFm5τbv3laolWp#uLJb +{q$x?8^'r AIu-XJ(Jf憐ZT쵀2ߠW"׀G!|X!^kE;dzsIFRkx*J{. XME B#16lʅe8E$ܼaU͚fiLtkIG y<ЃXxQS]H DN ND j? ([Lar斬q@k8H k$"N2rf?%Tsjц-nt;hd&y e +CN:h>p @/ FV+YĘە!N)`9ڨGؑbRwscs9I;ysN2 +MPG[I9\03X@hH= ZWtXcڹ$,SK7e ^J"m=j/K\v9YԢ8H9 zOv uJ*67lB\D#0z~172߿d5*91!ӘX'ON&~/#Hy!vn A6Ӄ;-@h3m>mK[4e8t&'ʢS$0t I !܌@}F2wd2\xIh4eQT ȑX/lV V80^nKn#wH|rK(i-}?pU [dEssKޫJg˦<5Dm}a-)%n]ViXͫtĂ?cXRGyi;gDn z%Á )Ζ^hi*|k Ek~XOBk_])cBiEz`qj@ EZVSuzI J;dd @_V/ĵ#vH )G@ճ9)fȒ+0EΑx>h +/HH4~9*l!yGR6Z2.XQ RBXdH0g> B)<[" YD$)̘=%BM8zЗE ܎|Y#G&](P"@jU^܁t2s$\qǫ R¢:6VaXҽ82/5.A.}ۋj>@3.R+Ί >)Q_(eh}« *H( F4|N9 aYwM_gng\gra_qUN3?Ke$aPb1L7wlYW즩=E \q`x-8mb;_Bm>tOIi.z9!"hM`(ٱ +.?d-t!9u; @\4 ZMu P +\>kqppL`$ db 6+6e>lah)KosY1=:҂DBH +UIdb';Yt@NO$1ɣ^O3IQ"qVowI}?e"o1MD.2r`|ar >$o:(:ZI_ '(^/(̲ut)Q"6dҪ.vSUћI-[>0m{0PLZDpFo_=0A+]4I;$US@ժrBJg"z +4RtgG's8`|W}滑} 1Z5O6`VR~Q[)mT>:ݦJ=;:]|M~Oz69_;W*h;@e8l(UŤMR5YaßFqYFA1BrAGLrғAPنY8K| v/rP~~fPd:WG)Fc!їE2' q5])C.H6B6:d3 hY d`"n+`LׁCT, +WޯNyEl]+L+A)EjYĪ|=ʯjRĩL-7-q&MT&g5M oR?VW/ YMeaVϣF +>m ]E۶8\ypd33v\/-|qseYDW:5.jE/Xvh˂f6=fVlRTujAMB.jXrIunJ,l pAnȎLADLynԐ]PKg]@>QCO*~{3V-7J.A>I HV0bI3)yV}euxIUa{QF+#5ao!%x( =LFX8K0z]Sǐ%7Ȝ2,*j4 %a" o`B+D &&iX˖` Txa= OA!%A#cمqJEgk;c1EY ݸm )dX&ʺptvY/gŰWE ELx`?嶜^82 j88 X=}\P +Pol`vqv?xS.D c42cuu\ s@#>A"r"=ꑡ@˚5V`oZq'kD}Y(Dބ /ME@ΚIȱL>_L jxXմPK&r ǪZqǶW_ ˚%~#C HHc15 +XI%pD@coOMd*04{ChMb1piDʗ"a pqNc"y"&Z߼U6b۪W:E]$q@ >Kӕ*.Nsbw*1ӷvn_fGR!~KB P(( {U^Ei#1TgsSkЂFoȱptC)=(ɯ/B Cκ̈}8_ +{e]_j?,q6PxQ}ɐ߆S #4!J y OFkr'/}_!+l&gėڗMS>ݦޜ&`,.AXTrXjTv/d`B#kJիq㞉"ѾW^eALW*k9׋ltCf+;wߒor/-19ZYp9ѝG@YLC3dԗeBzƤvV=B/ +k0v2QO&g_?0+.I<'PAw(û$*s|M$/ƒg\1rl37xj_+ ĥGGĉ- +)iϗ5P.qN[OhdTՍz*p856̨Fw s@dwtnؤ3paB=ge" +,\~"5+#8*)Bm/Tz0=7! +\s>i /4':C?ZƓFtdNq1A\2 dAɀQNiMW0#A ֜mV +N8tBdqp;DZ[V1B9W|Y 46@՘烠StJNz XJQ[PbR P=&"萂E zeahX`MX+F))qFCv% ef֣ؓ1(s!M1c (=hYz+H@̟UbKT:}Y&D% #)ɟ-1h_⧓K!b=Ա0 3Ey 4͌Iɗs6!z 9|RzJYN6V + );1/ZiqޙGbCr?O4HW^]]9Pb'c,ԑ0̨Mg@wVF1}COS\p-~!N0 +Ff-+;r+sHe*}k6ņ &L(!z`,mmF6LW0yëB.M)7RHE+bG*F3ȗ1NbȨQ`JC>"gk38lKT]X0tV\ )7M!EANRD]0*.G }-!hW{lJ1XG*YԐgJdhFG#MF4Q'2e *rU1H/ǐ=Dsqyd$e J؟L|T51`ʫ}M HcIq4Td/ǯucx5!z,<|Y*=P@_8b ^IDɻ4\ns+<0¾t)\| N@lDdAh/s.c\0tM +m:atmc- } )1Yl,t InJ#a{sH:TH7ov v'צф@W *U{c?&/oAdVBA gL/+&̬.<$1vqUp1I4\/BѱsFoblG%@lba4E*pZx7*%5AhJ|TY.ȡzwDZ~o{;q.5,/yO|"_]J_Pk9Z\7RB+C^I("V )B͒;b{TB®$^tyރKe[y`.}hlZN`P(4,Ps9{p,1|GY|ⱍp)U‍qaeh7J:+/`~+/a_nF4i`F}. |ыy_Ǘ]R2`g~ jg2fu̥F.6#G>*b>c7 0:.En&!Xm{DpXQlϰt^#R.H~AKp i2@`[̺O*O!yr F.cTDQDk@!G9C4rRzsU?0C7=e4f0G3k02jx@e{$F!F\k[#LH ʚz+CVBhT&oL.Kְ +2nFxo1D(tnXۭNavÌ/wv*ftC)n} "cV8ie, 箈RtE5Kˠwli̕vms-mY#D꩏f_ 9㴉}Qc2%#e?Kq/k/"foW%pUD6҅bNސzTH8>@tF!JojA#,-xfC* 8v̴ b/0!ۚ|ZAgԛM;fCƩ ڲryJ q׫Y0'gq.rQ1C- 2D+@HD*'  +bbWXaVA +ex#=J(SYޏ{H`l ,LE ׳$" ^ѻz݊Q8{nJ8*Gûl0_$z ]$2f( Zذ[â\PEd ofp.qCWLx mo$VnNocQ\?t9dH؀pWLpq4w +;-qҿz&@I7!B&M +\K,ܐglp'4-XJm쬐LRX\@HƓGX!h:Žiz# X" ƥkd!`ϑraD] +5**3XDS!)+%ϭN&"#E.K]*g, 'lR+wdf{3Y:H$uN|! ZpWSR+P3ʣyG2u pV$|YNiD)Њil@DJS!l`ox%DoF=H *yIa3e67-f+E1zpn1R̲UsX97χ! \R̒ (T뽨gV@ezY! ճFf5g@cQqMrr$5QTǚdH:ί5DNwt`"l2|$+*-7'vL" +:'g?Zn;aHQB MH*8f'UFŧT +6xE`˰IÂl>MBa6Z/+Vj8>'%Дŀ`UI#w?rDwUut u/+9s (3hD +_otz^]peHy&%¦ceZQ]_(^aפ&&^Լ^" VԡeoBqk0UmJ`/\r݉msѡP +1r^$G)'J_p1#`ܪ5tzI[T=_$Sݮ. +Ɛ~Y;5O +v"\r8EBV* > SG1e!Ua>N{P r_o .1!("<.kt"x S6p<fMnU) q+^5Mb[nA]#޼Q2n&&mVJGt_VnMU`IƠ RGlgUbCxɣO&VÁ Jթ=QdD\lGhQC9h2$V.HlTr(ٳJ1hÝJП3/x.Jl͡$B6n " <.<("!uR&jSZTfQ9o.YJzОaA@Z[#h'}sM +ҋlXbKDߜTSSMq. ݡ) x1@&+B/bcFecq4W85Á%NJ7&՛1.9[neIr-N`,0o .xK̳Ӱt913 @HЯ |v÷USq4ȆA!#3!NQ BaL]1oϹb⹬^;=ܓ +AI@di=75VRQo=NLLj[ '!/K  +ƍILoI0ⴴvSj+(cѪsZ* +9~G/v OSu1r V8#͑¯6ntv΃Hu| )]r$60^r7dU_o.eii =tZCLwb1H0:0"}aPHͽS ({ 3ruھ5 z“\}ew`ʼ*G5[ݾs2,]]Y/#% .YdgsSa7SFTr22 _2}&3@e#C\3oUuT_VI9c*Y8. XziB: 4#@Ly/_}@r?7&5~F}Y&v*e#U:*\{?h{A5FE^H`vcّ%Oɘ UZP$g7;,3 ӠeN$XɝƄqՇ(~"CF իԄJD "А\2PVI7"TaA Χ@c tE$jnȚv|%]™ dSN#DHI_9{u<.3s=lVA4Y\n*E[CA@e^1H*X@47nE"0'N qvqĪh:aubSQ&PAIxXȾ@eL0䞯{FEC>!^b2%(^:^gHH?|X6gؖЗk.r DϱhXˆ#!Rr~zm/cbڶ*Խ@0D Oטlcѣ9F)'{M;HOdLq ,dʂIeB0uU,aסTꁑܢ;T}YA1 +&1#fϨ7A3P_=RshD+ϏJJpElbvBbS ;R+0\fkz$!1RPZw$5 :=(n wKNeKɥ6ͣЃ>(XAW),_pwrh|bF˟2?8?GwI@1o8 ZN3*PR%1)kQ4qk:s 9O$ 9zñi`cAC*z"BLA':QPj sdt_ֺiaʹryWN~NM: UPlؒsNu;2e^bu+7w9v/WrzP1E`v)v9ReC0h69 :;qztv+D:I`k+ ybbꓫC>,p:!Y[4z64>IЪN;M<μ-JMEezK1SUbAebd?*i$ĉs5B._HUDIRV|:5jM) Li>;lNn+*D:0н`vIW*DKX\bԱйsիrC2Foã_{ E"^YA٦t KChrj]!GuwBj=?*e\Е_2 /n0iSح%f:g;t'Q Cݏ''LlAem:$[MeP jZfnal0S˱IkPćSjzD̟{dTrPeiK.(C>p Eב4GIHbZ?&inZGL)gB~q^wZ3 +k$e}F+J*e!s.X="*~3OK"'N ]J?_cAFEmWZhեp2ޡ{!0^ h67@ZdQ]zxY魣B 3\}9(|Tx5wBe>[ +/3loMYi&6K94h$p`42 J[?Wb(;knQ\~epE|HMNQQ9""YOwN\ǩt̼!H93B6OJG&h\XI'@7,SFXh1x!m5MHt7bH˿3tAg5HjEU9; iݼF 5$e:`=~?T5k<'[ =X) wtHϗ % BFu,64 ՌT{`v + Xy2QcdQY[.O^'k7QzI`Xo|pQ)2"~m?Pf +W ܷmRqΈC+Y=Qh1C4 [=zY>;Pԛ@tjbi66%^RzHu'*0I~RQpċ0+ +=T~c]t@C8njz[ BV0F#V~$nr/< F91!$sq5g;HiN4'1(Xl aWxם5!%q"e^AJ$pՒ53ĢLe/4`@$;_VƆJCMͅhX *{H'-rLnU 'Xb>cEє$q<4BY( 2?%ʗ6v@p#zJ2#橰!ąp2$#$`8肼KYgm`Œc8#^ܙṟz0Ԙޒx[- rفd޲v#E +sH7 pBB^I|Yq3Ws{$(`~gr/ p\$4D3oݎ<A x2`T*10sdGi0lЀȗ%ͯl-x ~m`O1- +ӚLr48e`82D݋Zx!Xt2H^{8d`/g;REp:̿iOz9C +͉cpȱvS;߁(>S8CL3]xY +ŚU=G]ƩzGb <-)v(:x]m8!5rayΘǫN?Af5"{ra\8u:*WLE +wP$,z7&uB1g5.E +Ndc%݄]%Ū^X7tx^LW>qo94'229ڇ e]ް oMB"^1M07@B`X>4ȗYP+Bܹ IQHjiǦZkF02GW/AҔVXDU{yO&A'TF\>P\.T)kPkpΰU +M3;6RqEo,u/0g"8/=.-ݿ,Jt[+zLzE}sbiig̈́}#K2R0+;]˷3f:=#.({|aJ>qEo%)MtuMuGLW؇"`a/ٙ@/l&@bumWc WAZI +_Cm2wY8`Uwe?:AE$= JL^Ns9έZTB"dN +7|1us$zZYMy1Dw֜jQ),Yֺ9^ h_zvjCM̉(eqaرzdʁ;n7 o Z +e|3w$٘O.%IOPj~7Ҳ[%S&f&< d1^2IoF.vA(2oRlJv\B;;7[.moӹahEHxu\P2X +MHaP-D6"e!:gu(--8*L2wb_v6pJ(2jjfW;mU=ICj?-xZEe,1-C2xDޒȧ&4{9Ѐpeא(qCTmY6.8sQTڑ⵨n, _¹+ؐR0ͻwcC'kjttV~w\d~ f B;|^X ʹoU!BÄi`/\F"5~C/j_ uߐE`6(ie˪[ @Rr[d4 "L3X8|YP@7T݅eaȝ9aɷ68']V01/k&"S@ w=IGTF G,Dr$1{Y*۩1ܲI1+yײItjxXiC)Bd!":M|!yׇV[p(AAPϔꠓ~w[g_I<ɗ榷c S25Yqh;>l'<O P6u;jPpl[HŠ4%9 Oe73ӢSff6m +C#QӪwӏ^'qU!nBep R`Q#ʤ7kV$4帬w7TXˏP9#EY)33w AU5^8[Fe|f'4a#uA+iloJL2n +1Ʀ\®&)y{Y3Ο<3Rz.bP qa[x贉F┕ $vmAy̴HjV')y0w #C.p,GRC1ZĔm$WO.:lUX5KμilwN[AD2.f~Bn0LaenH".`N\"Y $oOp y}aF#Uku1z>@{YK:ݷvuBRĦ+cBDM4򡱺DzLaX>Ke.-E;rJ$0<I_D{Rc Nx`;1⽻5 Y߅ت(]%KwtCfzY ~_ U2b9.጑90,HJZ=Q%>H>V5?R<} +M13F%q+_֫PlW  xlekwI Ha`&]Ч2jaVsQ4 h:EbE\/zJEdzacjd+~~=M+Ԩ:Pئ9R۷P^A=D3 +? +ZY̎ǫ5.+S@f6HHkUÆ^- +OoC' 񮟩#Qd9!pP+JtN7ê0T@7{oº/+5]5Z*Ujpşd'%#nhiJٸdg(<(^%=ŬzW 'gA{HHBؖeJ.L1+G 2@$WP`ζe=¶|?|%b*D +6nVp/ֲڎD|46W&jT"FIp#4FwKxC5i/B\,k0[kxP<K/8rz$b/JL@ov9ܖ- +Z61ԍŠ&4l<[Wwv$=P![ n׏K|Ō|U\V!SHp>%T/kS)ڌJG7R'lj堀Rϻ#J9cWNQE)bpo3;+5GN DI'YeydRp0<1 R;'$Bp7͡Twmi{h^/Dtqf +܂x,ɍejWoڸ:gDJcN2uB tv!ɎJ]<ӭ`^ЮP@@) j!˂\J{܋0nC~Φ=pU11j9\1DRU G4 NabNOCiu4/䫓=U(uU I.<[zԀ \O[`uǗPn_!#,|qkQCbB-AբS~xʈTM*%xܧpY8XJL٦/OQ0hqX[`Aה:_lS m(ײJ.J`Lbny'DFwI .< e_G +sgFSX1x͌Lm{`Vi$/&K-r^"mDfsۇh;c+`nZi4XAWQSXy%' 6rxBv(2C;aact/P3zCjc,< d1m {5J$\mv"Z w/xVx 6mbsn Em5s5Sg&Ql>& %0` !XIҷRG *4JgA)R\P$iDiԷ5U=-Sn~PtBM"GCJb#-vE^ +Vre݅qO MXit^uڱzJq`Wgh$+L^i|Eg8SAr[ +ziTCgXfE"jϵW$ݴjF|;Giu/!eVhIU"/+yv8 .i0(:FUZPDbu +5 +z1vj5D)cO70<0`@Et^$qe$(TB UT cܱ*Į& _}n+Y’A]#84fX_VX/?Xs3 fTK= EWf(h}[UwzF"/Z J +IȪF%j0{/f\V"0Pg O޽B)nL :i66Ю1vTrE@+ID%\o_vh/+5u!;WU Q(THQ?5ľ^z8 ů`Wmj{]ZI"?B,k4Ye\|_RrWV{eNo +n|e@ҶDzԬ4dNل@WC8>&XpneF+NwCD(5~<۸Uˬ`ȱ/.L RA_5܋U* Fw/{\EVTm"á,-T3gW%Tdh?JrieKaiXRœE.C)Y{EE4.ya'`ܒ!HV t(0c >5E$JI}ٚ,9&ĥ4cRWKau sV3"J1HɄR"UIЗhv5{#g9t) &yad8k]bx#F 3cWulb,QFZ/Ȅ))*#.73fNlK|WO!-SfBUѵ)cZD( |Yk )}cl^F#7"I *`Fn PڿRX;{,QԞ +#\Y7BU0HCaG5 {Ad_o&  0W\(^g)GR'wdAwfCz9‘ɳW@csrCDNPZ mHp&' X 1xW5^k*]7pw"FqhlqWG^r's@͵+UvA6\NyqSe+-`rI] +8cyҗ0$@aoGBG$^^8GX&2%hA \>s0(O8D*P x Hb15sUj{#U F;zT@Yn8!3,up#8$*~ne\`"5b(uP[ 9\0B5hX1/\*VkA#mLr祯HC3WbˤǃiM(W70#Khr}4Sls>.Ny)=bpB eq-|> ! **$2oZ6OM'xABͫQP9_tc9-5W=j3A"_dj*?Ns HOA ݹG!YWK񎹡i1^#m6A)tg mF*4o:03[Ȥ`ke6HEh4AHI,dR4B|hCebꚢa]З5Qiw`1 7e=r^K&* ې(VsY/gFTߏ_PmeKD N.X,74UZ6jŐN \G6_3al3p cbYg,3ȗE@f4<&|Y3qPN]#>FlLX +^%s"B#'0+<Ӷ>hJ*mJF.)ӧ0PBO&KE_GrɾfɴXA Jh@(&*;a Y{xF_B}; ccj 211I} ʩeOkcB  -WC#!/Z\ӸPL) +yz`|TDC ȗXD|hβp(0RFQH9?DvF0JMg~]/  {-kʛzIn*^'/Dm*s ++C^f 0~PҌXh9Pt/*@eg9!#;3BB{pi )s\Kπ71n˲f׳Rwn`HtFs ёwzAiQs&1JLN9}ƶw /oħgP cR ­n~_Ν3!Elta_7:nH xY&+es)S߬Wqdt_%!̬"2; +C/ J6pH.2-,'O\2w'N! YĤ%㑩*4 +8J1g  ȖqR"q4Zu4UƛB+`7VD>={ +1Nyb{RXR +QWniu)B\=)q +oA6T!c-6`Iq)ȧ*QUnxTqQbĈ x%u.ifNIQ~=&?=NeJ[13r*=kJpr@)8F׉#*YOm/2^xyJ6T2CЬ@` 3^r12pm(kg%t!WHIs7J+(&kc&99]*'̥\h@0}QMO"䬈Pۜ"Ӓ)+A_bTywL4IY2 Uo\[XxYŘA }tj}QǾe +CNCF7jUk_*'L$2 D^R)_Lu1( Խ2j a'^ԅ - +eMEp?xI2QJ*H~Q17LFn3ݔJDv!8֓aÐ x]q$ @" +7. [RnHa|ƬG/ X:`XFeYH'|Uxt G,%GlÀ%raԧ/&U7Pr=c4 -?O ]$!ru/K<\ w{ºTm?̵2-)xQ X [Y8/u)X5`|YXRs5**Aj &Ju̖-ޒad֏pU.񝲚꒺N4r~,^V\̱D(3|ܝT֤jI^B1UF]e2@i@c*FX&=a[dP'oSdW8~H˚ zwH"0~m͖41„u ?gæ,Ú^D_J\8 wg,t!!Ѹ^H낟;L+h9|MJS5;2\4Z=-1|z0% Nj戨L3k!3)ey(㨕#OO}'FMAwa<ɫBK@4xN`!q.1~4L R%]Gb[P\Ǐ{-W%ŜX}鷄Pr0M Jqrg}Sy & %yH誁Kڒ@`/KXU(3%࿛x!!H__kxđT62F#v4EJQn@5$Pf"p + ܱDXL ui qx `&pbI.3}t%nHԫ^0H +ڙ/OnM6(JH绗48tn8Ȅ*3[jv㙸8Y6mUɍp,"OPd'`vk=߆T众;PjRuz틚X6OIp W$~{>\B7cSe0>RjAqit˲ 8i,gH1t&q\rU9ULR&:<:!#P_T=3Z`)ɗ0B z܌=(-< G00 (Qc/E;BЅzy/ңKf>:/ahM>:*< +Nڐ4 +ܕOXASLgT}ԕR#=(r*1j6L2+x^'PH븬gŋMP֬.oHZMO> t$}M(dׁ!Cė< Фiw\ u' Xe>t* /N;4;WKg~En/{YCU%ʫN.qnN(sbuwm[IIL/&K)E bZƐAq9a$[9i"2? [@RLYjEt;@I0:/_UftSbQYaV~b +/?֗5g eBin²w +%Bp]ݍ}䘳K:Z+1udM8!L2+\ePݺՌiH,v:ˊ#N)Ȧ F3Oc[Iag$g +(qVȴ=4S|R*X&*&RYDG`DY, O))ă_V%8?H= U=2pRXk0mH0KlnA+!BX rKZiY\!t9!xh{Z +/jSeq=Eն"hyDE C(ŠDJcaՏ0었Y#!?)7ȴ.^v7̅0mzY}'S +HN+Ob֎9֭8*bYߟ !4cwIT3(bvLU;EpEzҼYCdPɃͧҲMR%mH 戃8*AdNdbAU329d@3C:)D81<> ٿmv· ~2r$0# mR 7lg" !f-iGsA)~r zf!;>aU[v-O,nN@3}nJBdKhx%ɳƱhϭ^ ꨖۼ|6=l盄2 锗[A߽MǀJRl)?pg"XJୱEY/T0v^\3`IZ6$NDó`D\\Fa2w\2>*D*KQqgqdT:; HP4"_հbw@ 'qh/tˊ9jHjXhƴ[(# F~= 2C=m dT W ,VAUҪiu @B ;ϸŠw+XkCCv1 @̖F_T4!Rcu(շe9!./s88ILi W@pRRxaBHN AhZ,/MLR "om) Nb29*1*J~6ª +:_NqyD00Ah +yjIB%/zD(bDԒwYvZ['l8NM) zAu{t;nS" 2vLIm&h,/mZyM7fL!=@6HL<}%mX{?1(JGF'e#+˥䁠dl΢*ÎA~$lВ95Q1z-dLt;40 +Bwh+ʹg6 Akrabe:Lb$hEs^9y/kYOYc~'H"g5[Xlg !&9qh: +)EY\ \B* XNؔ sBf^rs`"ff_**En+&+9Ljx3H҆Hr NfwYnɻi\_k/kď2HOe!kʠKvn.EFC ^G{O­s-JQR% pByYP99D:clsQ)w|" {QҠ+/|2^-ǴoH( E Cɂq#YU>3yu+AlzG+}xTsadҊ’(2`˳S΄gj-H=<9iSx %( ǜUݩG'd"xܾ<:2v `]Qlz1(Cw#Fs ȩ}|T˒7?E vٶMc3iB{Dn{`|8e} %4r&Ƕ{twE:iҩG'h Lx$K.)@.꼤:Cpluw" +{!mU?P BY 5iVa"` zC֤ u'2uQsNG߹YR-)^I|"4NmP]_#btJh㖔h)ٱYV=<)Θ!ߖ$ILR e EflCMB +t PA bG% emsaC'R㣃Iu#d~#;4!V&B^v />laJ!;C iq6q/ˢdU=H0̯#` \=÷DݑrS7-R$agum8)#aNJ8)b `L&@тqz؍zԴjD)Mf;"I[װH d~``F҃ r]u6iрJ뉈szHyzXus],n1'*4(H,A75"Lj u0ڴy,{6- TĤ]“hw?N(+wSE6!`A*i`oF~XcJ$]nvPKCr}Yf3Zuy#(YS2"#_F@4 $H\,nFgc,i=5a^rJ< fFG;tX΢3o 'BɦȨVHkN(\ʔoF&GlY|FK503v`7>~a~`'ccI5L<%]P1;A\d%i$EWApliCFaDlH&=J1ig&TCX7gP^1G6$BY)}qY#ѩoDXy߸UPx5> @<*Ƙ|0 ImБ a,$TۮeQn!)Ǝ,M2&lqUChDtP8~vpӬ`wQwЛܝ{mQ/\D̎}3ڭ} b)<_+2gsB+O2@$Nݽ׊~X2ClrHa#4) 6ss@-կMab%7$rIUW ++c QŠEDINbֱ$)1j*Q(6qgK8ˊ12h jICB +A 3-GY2!㤦TD<A`deJPNUd _3mΗs܆{~;j$Q"h*CP1̯%rf Ę1 꺊h/+S7aR$4,J=f>vH{ YȥSn}̇M} + +{hp +p3j\LA7:p`11/@0bHŨ+uȝ5(T<3CtJ2&jԚ +QO =J U(m(dLAF`1n'=G +DΜ8h '<@W5fՈġļe3dzzB 4u~c3WPqIbk|#L=+[3fQJ@W*;Y%{B!Tv:93n b|8";E v50t\RM(A) 1=LPT؈rȗ6:NBgD2ckZc +nLf׿8m/!i ZmE!͟^i[7$8.cҌI@bqZj6%/Zr']P{ۤT́U{}Hl"9]b^hD ++h^I RWQIgEگAʠ@6|"O+.-f hv\Eqj^P= hսn$p˴ʍCanD"YL(YabҺz#~G{setN|Y HEdN*wtʝ*=F\sB҆)1}&EX 7%ׁcLrx"HVe]%ㄳ"@Jތ+a6EY<KI\?67yQ5jQ`\ہ8^p,l]0xeM7(sp0#`8bhi iS$n![g-tl"}7pFbD:,T<=cƪ_tYi @/oQIFp AJt${}WɍQ%mcUPv[BTa_4!W%b=YT)عxlI3F3-xWdhbZ|q$Kv/H h锣? +~$o HqvhPiOYP@/2@P:ɗR({?2vCJQ"^u%.bʂG_փ1m,&Zy:h2-}? Ka[d,ѫA# !\M- zC9`(|Y( Å|IxlHL ղF=f;( ?PU`[|2ɐե6̤OZVQՐ3{@av9ɜTj/#/3ҌY>o@iK e}[;uN6"0)na 2X9MJj4D~x—EclVpZ[S()~ؤˮ5r%Ieb̩a1B_jC0J %&AU GuO_1jV0'~wφ# I]Of+U^OCud`ymAsvp+_Yx# si2w]ߖDpg=W af{'XN/#!شI _&qd$rZN+1$\#q̌eB 9_q h\DCƄ㑢cEgcD%f!+] }1G-i{^Vd1 OrpV1PIeAJy5(ʅ1LaVDuc8#e(4$^<'\@q(BqI`0Zoi7i!x|v,p܆,%v'c8FwXba0K9ȗU’*WDI l^TcMzzu4TLOh&7 Kp="x +,|Y0/(KRw qC O 0E;Sw?AtD-xyȾjU ŗ22I0â0ˤs[V2t,%_P&]44T6| tYsZ*ZNъV淐R &4|Jj !)9 x9[p8`MML&x*p!rD8?dR@-M*)j)PWwQ$2BFWq8ЬR_#.QЖRtf\>SwVDAGYkE^m>C~Ձ2_c$8MN\Bd_@Sa#_4ga- <  }%L?hC#W]<2X ̎B֪zk\F}[}YJǠWJȆAP"!Ar_ M&OJ~R~Rm=_%5*egTy^9HrАR +o0% >2]5Q$7j}}.Ҭ؉@$|Neq?c֔: $k,{DJS<*LAsxRKY'q q? +hg + e6%8xL &m1gET@}OC_NY-1Ej~Y+ѩ8*Scgz6KCO/uRV{PyMHe7cٵ{ u#<]鲺G= 6u:QaIv,(衸 JjTF͓1eeGSҤF݁K$1 2u!re`Z:KJϜ=,7tIlѰAR!|'SUNs/ ˺˺˺˺˺Uϓ= &-,֐ [lŐp +? +\pRQ<+HZ&3ROϨlRduI1$M^ JfԢP }Jl8?C>3n촀{\څlH뺂v,POGd5}kJ'(Z*MA˺,G hH (?'~Iruv.2Kd S#PH @ԀseP4%m* /+g"3I:d |R0& +d6 }3y?G:Di֓׹TBCuY.+Gpt8 Ub0!/*FtBĞ˚@UB%)O* +GUEs5ɞǒJJ zQ0BGp,k)U6W$kNBHszRP¯\uY>GLpQ Ob. >]0kFdD5Kp ~TBזI55;Odw]pȁE$ӎ)1ip G˰'|%_hNj&) +Lbd;M-4"0h+迦ԉqeޠ(f%A?v +6'DjޢN*9Yy':aX[C(N{{sY:+%>f_KDa8<6j_eM ,N86u$}@&AH~DBji7+ >=J1ձJ/N>&86hV35džtYe#CJS&DHSjD)L2\C@/..gfo$3lj(((((((((((((ooooxCxXTCGώ0Y+ B EA4rOD2)u)*}H>fGe`(h13^(!hF^HW1.X 9[\E[Bnj? +? +? +? +? +? +? +9u2,PƳc(g +HPBC8 `c fGվ2E|RJX8'CKo.MC\-ZO? +)07>?$Jy&(_k4Ԑ@H;P@2G&Xn! )4ҡQ@ +&}{˪!ER9!F\)h@eC Y w?,0Ԏ?`P;Gemkxb8IMEpA9.&p0\#5}/@ ;AÅew1nX )+ YDh[dq'{KUEE<Sˆ +J/@|KY@ZBtef=( ܋H~Aar{dcO_r&e j+܉rf",|Ղ?> 3eGADc] ^ك 9yJ׊|5HA&?D;kHXNG.4A3iG 7QQ=).09ї%(5EOq_]8h_##D*#'UtN+2)-?!G4fE'isqYIaӠ\bA;q<֝=Cł0 J$g =>\ӄ|]Lng(CjKKv3Ar L{_arA=2aph/!HeMEާQhM}A~@J~!F҂UnbD|TDR@,ci +v w*i%փ"9e Zp̰XSHcJf ?G P]&cPiչ`gЀA-Qyzqdyù較LV7+HV8J- (D@}/KW(B2Hx.ZZk5- &#O',BVfH0&~0xVLHޤTy*ҿށ/$V;uC x&%(XƀC$%ꛘS`ZƁ$vO`~lI6E #^) d"rg 51lsmU/&!Jn8@[hb&`C.8T/2S(]oo|`RO!N[*PŽ,-4\!I㋮ѥm`/X+ܸtQ z*Gr`_EBx!\ᢇB9haH,"_֬#U)$׬v! \DWڙpTLa&Px#\lĵM!2*_~\l le+a4.YhJJcHBv|jG<47恾Ŝs5!5i& ,(&Ft2yiWW=j"Bv +>u86: M@1r5`J Tyo+xG)0:šL@ N#- SHS2Lylm8 +D6|Y;ti`gqGk;`{'F}qb'~U13HsIXRcl +8[B,)O8Y8|"yy _ +r ޓiՁyPWBp3ƣ]``*cƝ3:_qfM#0LsNރ&⿗7L$‹.X!R"W!b/Xjt\Eڏ/u3/"na@`""PJX%NώwiX:ł͉WqdO $8 HRxXrER5 e=$[. w.ERG;5ZӖeyaf4XOW>H]}țu~3e Cj8YeUYd1 ,HR=l@5NM9"$x8XtR!䎎) 9|N&Ne^T+)cfj.h:cr^C +Ey$Fd˩Z"Ƕ51a.f/154}Q1g68Jn^p3eMʺ8Ue1T a^Je~_)mM@QQdԯ餎MxTɅ%>2;8&/K ND$; +Y'qnQvj310[UzFM}" j=t9-j Y% }CeR 5Y%$w6t07XKjn0\b``Th%Z?Ca@hCr9΂!"&#(mM 7S TKڌ$3E ]!hWEBЀ^V7?w+@\ Pc0 q,@2JB +hYd0%jdjaJ@&gI4E:(eL$~S<6u-74v:m\E%tֻQc6!%Grz ++C|"f ݔ|z%/)2dt")G"%{v\YIV!=͘7$餑4Z ;,<@-qZWT,oIydU!! wwABպ`HIDzQ=Ӣi.9&g?S㵈FU H:epDdp75. Yȿk +Ij(.FeV%"&n6דv; qْ*(^坑ZU X%1>' ̅ǓE.;  +n],ͥJ" 37bBAar"(5vf͚&3Įa=xVmO @ϔރ*" +\{o6i[&cg>:z<08RA *[`NPCxvHF~JXIUqj0OT4SFWK NU!8ʹ0h(`iUF +" &vꆴ, *yZͭR^ Q-_퉉BQ*]8gTs%Qxsr|E"Uc)mXې8 E'm/d,HSMPzA{5ʻY:̺lQܶ ]˰7g2TKrd "Κ4iadSDe.Nic!z[RLZq [dtja纒6Edj4:})AJP5333CY¯gk G[x`˗Y:m)^FM"l#Z:cV-/ (pa=&SfMڊ3heNZzYIxbuS?,)vemJB"%DLi&* )p8ʨ)KB}B 4&SƼ,כ?gB\<  f_%{ " VV9ڡ˓-8zP?XKi915/ku#=E(кg8ŌnaVS!` aVO* r٤`Rrȗ~3VDz6fgEmab4.̞%t+REf,0:`*V# /BCC +B$mƹ1UlKNRgW#  -ub;{Yf$#NfToml慚 +]J/RfNSe}ڿSA`tc*.͠toص`tOA(1N\@Y";CR)2y'HkyE#zUXYO1Imdpa'^ M2@3Iw"۫6WzW >#JK'RbVtz";f¸Ukf;ُMࠖpJ7\rbF_p^wTI~k2k|}`+ȧO렙e'Ā=4Zi1| +<%'pCs1p- $ZU +vY@wSf_FtMی U:P?j}R-#=f4(94)D( gug09mw<\10X)ߨ")A`[篕H؃ΉSp0YE|G 0tO_E!~ ^VɁiMഷ"@t.7qj\m]t6˶h?X,m ^R=0pC>#t>lei6L%PH$R#=j\Q'D".$(,HT3 oEc~!; +90n^Uob,Cmz#HF@a빲۾x[*s=@EjTY9N@I BP)gFFåN[P㙪;SQaQ3# Iooqۊk2`w54DxXRf82PaHb.d A0XQS$eEjx8XBJS!CʒL֔YTϘo)>)Ay26֡<༬MԮ%/{C:E␅I%_4-' Ey2-,?8`4 N\ xf=+4yYDEhUB3Bp{k ^*'ߩFRĆHW4q4Q1Lޥ*<rvTꑟ:q7uYeDي yMaAHW| yGD{@fv܈(3.kHf^'gA"gE`M).J$ H{Yq J2%Mf*|S.8t#7(U +`4', 6N!q7 p"Yel"Ucn$< LHLWx/p@42@X\Kǫ`Iw. 2DTZiY8׫\GoJo/PBf0U&k<LGK|쪒PRf4y%<1#~jb@>Ld.UipyY\w+YH~/MW6c4[?T8 +)ZΞp6IPKWNS<70KgLke?4w=5`",\5v=ؼـ/GjpTh'HʃϦ+b#􉜨\p$@ʇ ++S2j hNe $,H!)I_=9aO(eĚǦEv{k\,6I,e(Ʃ0z%Xr+&UnZZ8|.;]M1Td3 M1g!^hD@D)mTe41q)*Ɔ@1-U4.2l~5 +?^s^b4QєxshQ_6E o8~ + 6Qí0I)dԃǵC /zhHt#NV20XS^E'{G,.k^<@0/#F!pHSF [f/$8(۩E ᒢ#.K"aDN҉T^ yH3g|SrwT$e0Z_{Ywo1g1dapInONj+D+7 5ec gh'EՓ$({$0K~Q0.S{Y Fli^}!С C00AԴM"˩gw>fl^ʻ ;n98p /eƘoFƭ_SFd I,1ɦ[&2xgfo3CuB3!5LJ;{Y79[FbC{$OUA lD',܅ƻ5o%Yϵ9lJlj { g~VJ?}YYsVpdTZD +57WFl`]̜ozѫtlͩ ƀ5NBFh'x:1R߇pg-m Th]d#Uqs֮)*: Bqū8 U^6+M1ʃA`9pn*QMŞFwf~XivNj> 7<:F1*%fMbؐ +s MfƯoatX3ѢcOC/6K٫T3D3]ܑ;8_mSD`*d 7t)0q\Z8<XI%aT.D"ݹqG4wSseցU@9Fg':xf^rtH%Aܑߐ5IIg!d\2C7YC<߮RZ0.ݛ]7 |Y&Teͯ2a,n{Ӂ_<{-B?ۨ.\Л7I-N3z:O(.Kf=|o<'Zd/N'4FG8ɤEN(]o2(^ݣc +lPC"No[ +iI%jq|)fTk{<~x;J?h!2G +|,(r>@8&:n7RkqygAMOXgn9%"6uHaFiM̀qB;c640qYCkƧbU30;xx1tYc>)=R`P%nl鋏q,Y>cyaY4] w@1gZc6m#5+R +Є(p-1|"%H5rS:C$QZeemM}z(4Ƞ=i2t }Tm.0xo!A`AlUu$cd6Fe 7p8epZ}<љͥQ.< |I22(Kt)=ӵqߊX\N.:eF + |R4,:cxPr nH"n tě+9toswcX{4N5G:652I(@N/k20rL b!/{^NF90V}wOr`Q/!ZJ$d՞Z⑵ H-p"}@ xy&0 Hޒ+r~y +P OHWN(@w];s40*?_D_vN]d|?G̮"*P +pXl2M#B `*x/ ha =em5.g/6T#1PRSn1a^R>EhQmxzG Ď$@<&HqYx+@aVL`{N  KfJ$Ufd7,YU +<õC$낔QzU.YWFddD'!A:*)ٴJ}jIn]W@2{✙72Ԕ 7-;̛Ss/)Q9.o)@d9L@EBýFφc F{IV'zr&vFDȫUdO&sFAy.]V ϖw|NtBp B\WC+1)H:б*ik;8Qbkfoi#@eQLW"J. DŪ)ܑ)⟕a `5mQ!U73% uRB1VyPx{Y ѲbDVlҾ$&@"`zrf09RcXj;hÁɣ-wmQ6/+0ϖ2(\ +N7$T jL)rNKxD7CЙ^a¸̻p!ҩ 8v6SԦ!k/Ͱ`8tؽCF 3JӒ<uj[;RLX{'J8(D/KGL,H/;90mAA^i6bH~r!2.,-eE}VW,̯ɻ,Nٰm u׸ExpgR&WDE^Vie!/XY&]$m57FHzZG ?\Q9"qfkMGQ)f.ʗbʸ˅-0l=?LQ`G(+ƐRiȌpj:~oRy\P}<. 6T˒(+ )!F6])N>QSdL=_]{:|Y;8|8.qr1m(X+yofUFUFǏi#%*@#\u+r#wU\ :IV€{YvC@3 cX~ DFx8 +k$n7Sk(*¶L VYJvoK2|Y$־rpѰyo +s +4$˫'# +#ʀ^4tMqh=:2[(/8"s+,og]&pἷ^>X6OQc C Eهv;t`*طZJ%Jv &2kDȅ=JcU[z=kS/kc. bioP̮߱Ү + +W.31ulp 40$V9!ـju"2SI%h̀%~fB(|YsB\61=OzQ" yᵷ$7@y"FW,B=v$ud] +ж %&tz澿^Vx'Sp _n9Uo~ ~%TsU4\C/(u1 q qPq/Y/+ffpQz eI B$;78R 5y+if:Z2HJ'!OV# ^KLRmgUG{Y0{U̇\`*ƀ|QRL^Pə# w5鷘%< p Bla.penwаAAr:VA]v |-TnUK{vS@?D>FxDsA]W  +2H`/92Aq[XH w4P3W3!SmY@*&MzY~5c(HԸqIq2bux߽`1z +bi'?/[7jI+ qA +]cK Dy |hH8ƴ}$)5Cs+N2U"sly vP +pA8ս^"հ^)En +ŔǸvs8?,A[D'в uE^6bNنH`9P& + + +Q#3e@hΜ +<2=Q@,jCCE"@&3L o9>k AJTZ :W +g>Mb)Pr\%qNo,L˙kA +WIDSűFA + ACݔ7ą_-DO,?'E2ŨZ[\<X;d:fR, ޟ)AZ'QPЉ1 5i7IC{U6浗j@|Vp/+ eO5D,09n/up +gs+HV{!(8,.q8G z #FpRDܭ`)a_NKT+dj(iM%vQ};BC|/H Z(w~C$DR3 +3.Ȧ / ~LZ +|?\`GPR +hC +>  dE Ayx_7_D:l\#\ǫ~@BS" z԰pkH}S-XR1KT-*|U,, fjO_ian*`Gx(=d(iՑFSPsT}nӋp P(@ {YciД߽Bz94lȩ}PY؝;nmIuUu-a[j^Ç5 >Ⲡ+j+_g0tϥ,g W٤ ^NCj_D2`H2Shnc9fx!RN4u8rTA)ynG0Nez#eUsE;3gMwR C7XG>%w+UFX#D.#~Y\h3%)MLe t  tcBd'6+x Ժf?9lθĐI>>fm/39[׫Um9A"F0(o><ʮPONr'0hI,9KYkqKeMP.EQ~DtDj&4O/Y Cn)ҦE}vFYGk|"&1ă~* + +02w|HFyF{33E_Zw0"abq#zͪ3yY`z^Kz) lUjsuz %eiwimMWQHa^Bk^;a j8c +L3Ι/kC +}E]2MrDSH\0`nOU4JGw'Q?2g\\ eq6âu`2@  ++&f qIrHEV6/jÀȆxh(_" +L<$A MGafsafbB%a$H<8*OmGd+yh.KY Hi7'!}`AѐY>˼,"g>_'& =DOXaVZ )̑: tXU2v endstream endobj 18 0 obj <>stream +(Q:=*e w+iyG5e.&! 4ޏ&sJ 6'IA-?كsP2-}bWqafP ;*j?p(K㨽, dU%;D^ʵ\Jz#zċ(nym,GX鰏^q8qi=ǛI@\ZjpA#:0 LM5NL1K8B_V/8!6O2eTVhF9#xKl kgpwKHXd `kxW« BEgoGP\L\+b`WĶ+9v! ~fY8s,IiYwG%j۵{Ԁ# +Pq5MX@/k!y*1x5\VoBN[q1YͻGRHo4&N<""v:ygՔq(IgPW,7TMȐ"n<(h¦;eС:LܜO ;P$ȁ x.2D>eMTБ+$z u9l$5(S N=l*j +ű߄̦N_CETL}>bAʳ͝v0OK1]7B?BgmI!16uIAUÎ.zt෧z||,C C +p0C 9Dc'@-@D"6JE[y4;ꥂfR! Ea_zd6XO(x$N0 aohS5.+"b_Y  XGfe)7#f҅ ]󐛶IU@}E4zC3FT?L|< kvW +Y΅\/%@A4L@)L1~(*g>X0cM㪉,W# +SB) D<(ּw+9l5q\6S茩>b:-A;t6E+@J_z@u2=OJTcS/`X,{-?>FbٝjAl?`hJQ(&z*GQvHpn9n[RJ/ +:z^2HΆTh; Glj:`cAổ5 cX~IS ?A=QJ}>s`qy˱a^툜j @ܧ2-9Xht !9Ό`bfEEH$!9o.+Ntz^4?ԡfJ @:'9ЍYtq<0%m6K,oוC[=9Tf cow{zb4eRSaّ34@z{\'b$ɉ-V6̘ ?P߁>=+B869_=F%tq)w_ 89{YG'_f-ɐV5ƗrvCh2$~@`׫c 璀d?x +:6, +c hc3ntꞱq7 [m ^~S{ AYц &= ^弅R|Y;A8AmhғWFM۪M[P 6 xbC r @ s|Y4b\ y/ksD*m .HVt/-.~<4)#J/de:?{J]WhqCV.sAB%8)Y5q hcªIt>?*Mdث.Co~\ήعGcxQY@@SzYC3|3I.^-krNs_MIێ}/W{~cV/klv79p;T ݂/@5 E.1Z|J{Q!#˜`j1D٥8x}2 +|ZѼ)8Fg&rң.c[)K": 6YX{Xp"Ų'&h */ל!">OL ϬR8XkI:9%B@a==9I2vF1ʲ&ۖ˪$6XÉM |L磛,{}!fl:_I @& Q) eЊ:9Rĸ$s2*rA&9,&h y4X;*$,mF#$o( _AÍp޼j\#QD0h.F$LSs]2dk]rE#$O0 n!vh! [1k3 f5t ]`RZM۪~ #7OM,:o:eC 9f媹x2vk,eȽ,nr>6l C>XBR&;'V-ndb8" "(1TTb~ ~ae 8$|Y y3#j'z1sVar8j#Dz]LJ?S:%2UBx44DrGJز +u j|~A9'HSH +~ z~u;b9U$AoA3M!vB-o38%j&‰3M_#KkG~H~ya f/ B s@9ZeCE>`e!Vb8Tw !p-.4it<" ?󫌡tڪE}~?)W+o[2niaɸ͊o\G#Ì +Ѡ]oUN ATjd. GO<'v̕@$!QEoO0e&Rh?J*/k- qCbѐtUIAc/`Y+\7œlfC1lؚr;QEgRPXr",6l;Ҭg0D&M7[̖AT{2fTS}Jܿ|WeLj=Ῥe#!c ml u0\r#aOCxxHIB9U8 R"pmEDL8I,~,-P%S& 9T+'·X(q?xSRQ%sYf(')Ǡ4Q 5i,P'[0ּQ /P"%>Dp** /l63ņ9%A?ڇZ g|ɘ)7&CQ܍-(QY(Xlj +}G3RPoV>' 6_%_ !%r*¯0׏}¯r@ ^ ? )S{Dʔ˪42dUL)~U!΄s6),9F1_A&D?3G|zGb߬F]DVUG|/o ?(%J#(padQתּy= ?A! eaL 31 5 ~ְA=L6Mk0be?td69Y%b~q U!B . y-B?j &4;l*=7cpϩXk& R-P"$?fͥD++qD}TsJ KJ 4#_gfO_ܠ;ʰe%/Aa}ƤY*#_Lq .#n5gcHDR CYuVI"@B ?:P6>LI6G*tHj3n0&٭p rȰ^L~/Y +J"h;gYJ'X)d8`",Th8; JFyY U=Kj>U/6JmHjHZSyP8j "!lLOtBNL Sc.BRš3*H WŮ7. +[KCU~d9Q$3'4\f}iDZJi'tWx뀱0,(J{Ԍ{ {RMaYx0$n=1YWo7S;H}*0fW3sZ2ItYd>4gĨ#Et>P4a!"I>GPNaAG}Y,^sUk+L d$ M]͏$Dj8VH 4ixY( oŕ H  Gx`|AD؅JYAyYw~&'S&BN{x$1ҡ٨?y_mdYy.bh`=Gb7^$6rip`7%Mf@aVuMت"+e PB6ge?+yW ,@?mT"HFă W + ,4ofѕnMn#xKV2Q@[ؼoaeU?TS*)}R߱WS\UR`o9IrxJcf+bj^a@ʗpHڃ`r`X: ?ChA"Y+(X.T fer)26t:s@hKΉhs1韧@)u,KJHUvϝ N*(+1,hrGSA5WGq(ٿi}0THt(G`AaO@DĦ}i糂v +1y;*L364! D)6_©"*Z/q?9/ +v_IK|JZAk0 V58zq~YgرG̠I~uĹJT |YtUOj?mY`rpm?VCy,Z]vZ3k\G@&@vh*04e$tO Ie +2*TZ< +Z1QO Gp"?v\C$p./}7_(%/ xx, +-'A}nVȋ(>/R3RL<Q< +d~@_1:b7:!b:əPg耠+5fj{uJGtƀx&a\YG`9F|''%0,zB TTAu_/͠Ph)ރ5?5be@#9#1ۑ)‚̟; +H2sx +nfLx]<4 Y- BR 29'FCLuΰvƳ +A["었捱tFF ;itDX"$[D;dO\h0DĞwV8<3$IO +Lx9ZR_4eگIdڿ*/$߳ևr{Y IO?D jHO>!YOcDsR'K"@A_VX_XdOU0AO ؟WǓ<HtYF< q4ADZbMT"ivZN@؃ Et*^[8 >{x\ٿp p[r.ȇc/#'7D)I$GSpd4P2ʂ ShBȗ_kĽϿ߀70 +b cL%~%917E:S"q`ZB=u +MRۦG(MҚAR*_~/asR뗘. ?HJ7/*GP'7᧠,vnѨR)eHp_WUw p''~ͦq{s-0 68>twp *w"ޣyHR4|+L'=?c2gA?$A!;`q:Pʦ#BꐇwQ QYJ+1}TpUze~+B" {$?Z?"ܸ\?Yx_~.8eC3+ >և}! }$R}d B#m&Xc@@v + 0=ꃌB]r=Qb=+wrF{[!s9^jg\moJ}VF`+`n@ ]"Q3Bo!7%uw~ZI][2X3/++Ze^5!&$Hf+{\k%kJH]Q\R.`,:4/.Ks â:Uƒ~;]JB \i "5@fmSItϣP@X,QT9`*oO! uleYnblH E BT& qNȮ<Gb[~1O7L+I.X3e!2;ytNŸ2h|A ה"~O`_̈/^ֽE+61O#8ƽGwRFGӈ:6t^$U/Od$ ~+0n} yFIEkO$ c _+NcYNcG7%l@LdI%Gmjw!9^AWu#"B! +~ PpD \R#j'WueŠYj)XYu=QPrYa~SPNa)Xsq/KQ]*Q zrf`@&B2sZjC܏C/+=*bVZ>% T#4eC!)"[vr]eL;7Mc`=OaYk +2ӜHvt" p)!)BWvlF}`. ^E;Ljo"k+ y-1g* M.ŀ dJ;kLy B }#֟5u*\J #D_qWL%0W }3?nEbF}/՜Ԛ/=_ʞ ?zGd*Q"2S}aOm[eHtBU*>AH|jq8D;0ؿwU,@i!M 5 +&\&'Bsʷ*< (ݬe-b>psܿrkͶ̪Ҝ}Y`i4}vuբ=BF@Ejͣ)3M`, z1o-k:)1j,b;k@rY"@njıwVoߤ>ME[e gd +|3J:?OcJ|Ђ7oͳrY#|lr┲' +'-Tg f0|j`Y9SDD7p)e/iá&>NPr玉/!OS۟}7o@nrJB*ƓJ,iQ|H$.`˚=]ACKgys@?@LRǂ0dOAI%&;}1DMڬR cϭ3KҔ씆 +h<|vEKdh!BжgUaB2(R O S?Yol0/|)Pj0sYKg٘>.Qp!e$}Fw_Z~T8$L!MU%r"iP)=b_b +ݤۿ`~ɔ%*|Yf?H0NTxTE1 BCZucgi0KK)N<4 o~*XD S(E7 Dٔ >j?%gٱMa"KDJO/95@-݇,H0PiQlMPc8SSʽ@R+_> OIa@'6#ŋc|P,E>xD(.7/u!ǀrP{:yRWj߫RyE`=9|Oٟ"Y=-Q)4BSq>ƢQTN +'N eI(5?T:/*w)s!SؘCؘ7$qYF'\,oI)T>X/Jcao!7PTR2n^fE Ge2 xč 9l#tA %MG HX_.CABnP@!^e킎 çg" cW`)EV+k>:У{xbW~@ +Q@xv3!C5m +xc) x<8 [׽t8&.d%56ͨc]AӨ 'pBzĪz ()ާ@\D2Ȉ8e%w2@:6RL>$t+f`55x£"'Jl|x_A r@L;Hq?x8^>H^IfiVkjYO z8]RfYOU"5,ǃ,'и,Lk?mӟjg1l>5/HxwN||t c.`3k&Gm{&]4 &,Htw m2@҈B^\ydɽ ҳK(R#R u(kU}OE| at dan-8q$:"TR٣|Ng .2_VG2J~!H8ЗHS"<]DѳQ ڹR!KQ?T`zҀ1݂d8K̂*pu|. '^iNv$Ωt#o~G֜ŒBT33U5/3سrR یIcL4fuCB")*b`>(bhA&В=zC{~tm*oeyL!'&J_=BAsXUIE&fð AFs,EqP0c+qWg"@ʓ B=><2hh:ol,Ժ{SU,҄DB Y7ݔŴ40p.R">z[%%q` +_^"͔NIӅ Qob4~LcY ." +R9T0T5UYQ58[ʳU4WIMF#^:EJC0 0IWO'M 5~Ib$]۶BĮ|NZ ,&=ɣ5OX7;;`%S9IGB1;(({]"Nn0Tz2-p o}э%PJ̻sTP +a7 +=iHt$" @ښ$fL鄴ϳ b1?&LjJ\cC8?F/C.W_V@B1R0e!J2ԲN$"ev)3x#@I( +L{3}W4T2aHk` +uHmÎgC !iD#vH@i0aSE^v?>º_^$jw4 +&SI30*PP |tDT4!SvQR}H= /jdO HMCʓFTa/%T#XqpZp??±D#OrF%eM R"\c}O\J!MڌI7R0Rјb` O^ Bm*Q8s.8ץOj~a~''hGu>|W*)t.2_y/x$PTf,eH'n)]ɹIӘZ"'bH!Ps"T^hgPgz~~H }Y*Rl2BgWC/BI%xĄ*?e '{\')ԣ<0r6Ѵ@~7oeaǡ}fǴY?ŭpB`:ǹ"tW:0iJK B'NN(v_VK 1ɴt2xT1?uYe]#vBU"Z57R +uRҠfE)Stççtz[cê[I=3%TL? ~~ s k &50ܨhPc)mHi8 sSxf 8^2uޘ'Gj>)6 +\5 stsY{{u8V  d RY<A* L1ةv3l1F[ThKZ@.K?&x20 ⴱkX"0D4!㢺 J}|w}lt~y\vKD-"EBU`-{E D( RٌL"`GSe. rpDX ĶbI|&#(A.E#3T(pEнCC_F@] ڊCm9p*ԉ⼿ԣ@T8bNT8Jd28~|Aɢ^ LsBw  e!`L;X,_FVt &M!0eMRt1xdNEȞ4lFa@2K ŗE+B&M8( +t۵k'\Xv.RɄ֠FeŷDKkRo&}&ox|te3G3=xR|9:StϬheȜRKEPS6&]dp(QF.(IܹЯ8ٳHHP(C垺䞗&lXФ@fL 9==I?~y}B D:6:'5x}s\B_ /Btp?)J*P9tN2S霞f^i~hQX 7`&DciD+2F|RUf +!~/Ǚ8#@:9pNC ,Br!%L{x3@Mzu !,d1xf4e4(p1Pu h\6WdVͩg>¥ |x޿Ru/ow_V4-@AWqS0la"ȟg#ۉFv +Y(2 +b'k% \ަ(6eN !}OI /.0/ 47®햡2KgSJt c(d(bh1GK~>$N&O>K+QkY%㔇 n Մ +0cVIDe (, [ *qiYPL0LOf~^p}Y6 +3տ/fXux P]6ۑͼN4\JJ1T.'A،.8N,`$[S"ZP4bx?qxߏ7DZ{MQǶ]fƘ} v_Vkhn2CDSPI,3j8&e$ G֕>1c8i#$uIeb_4 `^w{ JB}B +߽%H"IhH[Fy(!N}7LݤZI%i?nK%r؃eM"QobRC %\eɂDtKy e|Ejl.9:vt$:g˿bROrp2;חMl!m@nRgu>i' rP3[e 'D*T]3Y5ÝOsз2n)Γm %ǖ5\2$[>Y~eɲ%RҢ*0˺?sLs#Dd֞ŕΌ8qpQuP9v (PܓStN +YQͤDR; !lUwʾHwG@/|㱯 RRSC?.gCJGRD"ZZ +:,d֠CSPM|hSF]ql rkVJB2+C= N< %'Hc/2H*^AJj.i]tEZMT`{ ;'U/TO~Y}HFGWBIxoyl(mrU H_V?*AZLX]@'lTL@Pj +Kb l:#j૘b> oJ 8)7TE2uYzTMۈ4Uz{Xl~NT՘i~CF:P)r>+n}AIA=dÁzß%djR3PB 'CԨI u0 ףJսD^P +\>" {M )5$pYX`k.+g.O|FN@ C oPk1/K=nip.VHcU*PԜ[JfaYqy!_*3'3r5B l7TZ-'r-_C_8`yCZnCnSP bnRDjs܀a!*|SWT@FaJ54I$ +Ŧx_޿WC_q9)ûz-)9@~_Ǩ~ۯzKHrڡNJXBL.<䮩(\P]C{6#*L7kP^7.{/_7!Ԑ, 3,IIHBPJa`Af 4jB ߥ/oRqHO6&P _VؽdkG&fw&W+k((-U|Rf"pD9K0CG*D*!%ʣ8}xvHW7o&O˺ r K't7̚DqfoY +\ }sjOh!QF .Y(]s/ +%J2f`2)YpH r /p˺˺˺,G/=jƋ<\(%PBp +RB R'F L?`1A"ݸM}CsſA9s|~')Y)v"n@@8b(=2ZuQf$mn8E9Ĩ5{q g}@`tx`D+F' AD2C$!c Q8@"RQ:Ha|>LHjz l$U*5ݩ 4QOa2,ĈЀ.'\ 'RN]*Hy&ʸtWБj3w9fR9%O[+\H£].iLq̚ S0v/w܃@:&yI9y!ҕ!QsxxPSH#T'0d1rH[ }@V +.y1M!Hk4*eTꊦ&% +M4pbqU=&X?}sꄀZdAYIۥIM"|T=FqA-z/C@y? ԏ<*v8*d +էBiPU_Zwr%aA>LrF Rj: +ƒ,*h-RwI;CCN߯YBj +5d|b8g1Oj3brɉVӼ4!.&<,CK':6р\+%ԋ_ [ 7 ,8J'>!hԂ~% +BˀMOC#%4 ɩxKFu2O([f(½PIvgQd%Nu=heCDypIdܔxxL-2"}@7(RpO{O9/↓Ca^w^y^ȷaGD5Uh2T0f%Nv%=).Kp}I.Vޏ oZmo!2&7I8apr$$́4͈BH8PK9D!4LO*c2yAy +JB|HM2̞ؽڡG GT7hc$ewE.!rYoLɨhU RHxL"' pIÊJKY2@W׾yoRAuzrpDH=㭠.IΣRckN6/yjb7.4O +|(˘reݏ_%W +]J !\Tf@cCOD7S^Ȕ'o2_MD|ihyZޗ\ĸMHT]SeVs1QtYXFc;q}|hy?_診?rte6m>+ 0!B%R㤞:e@&}C“ HFyQ*W*Q[_HQTh=C=W.lԚPDr@8 m 񾧆_4*B1A:Gz)&K 2(]怏0Fu R5$0TwRٜ=~W2~ e|$+eCމo,]*ȭ,cdȃϚ23R&p:TUL\kfBC +6Z1 +BtT X8*H\H)ZiIR%|=}֒NK\gq 0, <_+P)S\ySHTXWD`NNe{O&}Hfv~Nz?c wEQgE\,@\ +&rJ8mo!d iE*w yTXT/k@G?}Xt9* +>-OFNI!Β$,瑁<ް"_y9A_@(HS 4*W2~MwGuDw\VRFRp9)]<5B*WF!F~#yGױ̖ΘT[2x$uYr$pfLtGuY_ݯ/sY'\xԞԃZv%HI),yyt=џ8/H4Jb%T[NAhT +A~:v^e]e]e]e]evA9lQQXFem)4 Jo^鴢֣&,'&|4s8NeXd_ݿ";?55d4A|?/k9Xs2DNd((e 02ZCǝԤflXU) &(q (^EHijS!.5`<6"~%9Az-2~ !@*і$Pu@@6т-"IEXeb]2t?1@B*LP9$qy6/t.k 1mtY,Uk|}?[BIC.cc+o_Ϸ-64:$pHvSSpDsqGѯ0.Q'_ϟHu̍䧁(,²3e;h*į49i +"웜Ґd͈beI>DÆϳm%O_?TcS$SvQS.E$y81qQr.wI2:i.s i +(V׋J4wX+|9Tw2~S@$a$󉂮M?g 5՗JM_ ؁%ʀ"Ӷ;׀`D/tA; R~ҟ{e-(Ȝzm<Qqހ? z9P`H@ZmHQ5 EgmzReD:Y A"x@ +8k~ ˰IW΅QB+QNz2Ά*C̓ל.?Y:ⴇW7.erH]tL(NPF;h +dHF/(%kJ1!ψH : \ 20t)3FneC$q9 fHQxI T̨I&9c;e2+l&xDҮ'y8,L r~|دil4UDDWrCuBBi/+AepdOLZ*˜>C湬u$yNƻ@ʆ ? 0٪̀,.qPw\W,}m&N#P@Ly. 쵯fpx%{4R1?e%?$Q<%  m9Exv3ɬpiA&.efNHTs&*ȵNR@y!{(R!τoE h02%,3R#묞+0|f><Yb ")23i8$= L +@  + yatYSi9C^aYKcJ>2Jv4?L&$[iP1MT1]c*xe&Zr9M^iG,YY;%9u14z .z+i5d)<1&h?tY3, jbY +Z:z(4s\R{!h DND` 0JR"U*d Zڼ]szlo Tb7*8n#E5LG 8?04jh@jJ9el{@c5y;-\2( E B,&E!A-̀zDrhkY`X- jJ0{貖oiTLeHK.'`tƐ҄s`DtZ@I6 {YWũXW}5KO&N>) hɤ'?;Pٔ=i?"/$,8j3F [b"jIxY4΋5HO8eeǁ0eJ?"PaTxXNFbQMcv~ДEFQBM⎕ +oܡu{1u~x$R.X"[mA9d/<(hQ9[p¬ȪTi HXYuΰJTNTߥb* o6ocmQ%X:T5KU`U:D+Ap:!5j@u/*MjHPGMU;%2J+\XX50 y$,vZNA,9^ <-; [Tڑ&#3B:r*35f)wRXU)4R5j,X^Uz8,&A`IqÄOcx ـmUaYZD}DXw,ף!e3C|Yj' +o|IB +ITzQWWGNAKz5pY"9%YgYפqSjTa]Wr_c&Aqh^)/Ky) sM ~\?VP !|k9/a_]+]y\:Qb.|&Is>_t6TR,I[M8` @rJ<0aa)ѷsmXեcTVhpY*{ 8-YiQg]"J=Tμ6O6h;xA>4'C];sЪQDj&c6- +񄤜ٱa9|%$k& mT'x `fd ¹脓@X Ms#O%S4CKM +V%疩{ ־"(("#q$h;a@8±.*JԜ'uT 8@pQx`ԁ!\P6/?^MK9MVPI)O!ab&15UE(9\'Ac@ F@s@dNH$|OYf\YA&,,N:GV,B&-aOҦobȔvQY`O>vtl! +IRS{TV_8))əNHH@#a >, gᙻˌ%fvO Ղ@'C)P h''.՝O… X`ǖdP b&!9&& +5 }"pA;ӧ-OF@B)iKYݷsX@7Ŋ8C1L1L(է509ruOd[D8v4K>!yȋJj +DIa/x {=eJVg+x] + +Hԯ3O>ֻ+TÈBXBSr { ?beUmv ݗcP0gsrJ) +̡[2%FE)V:9rR`lP,tP1WSe&><րpz,pJ]]ݮ&51pH !4҂5O߫J#:)a' l'X@B&E|+#80ŭV]TV:ȥ̧T +3G-e$ +GӲ8MØ=@pSr)ǕG?'u^(X',`0++.}*~Ż>e3~ߟ8ū+I1B \<.9OL,5rz8Dc!uH(,n +T8<]jTr+(XK(Xg{7//N{Ij0oϵx,P䥔󥴤yImQ"7QT~zD@L zSagB8tXxlؗOEG)Q4<:Q xLZk r^\Ay + O<rcD.J}ᨠ*͊u1+/˭p6O|HkXX<"?%*V"I5`'5)>OU<>%xK +Qc>lF8Ϫf1)T}_w! K*k<$sQ'=B!#B,k?# +ɬ'LeS )I"t:֩C0˝{CV$m_soT4*=LCH@RM}-19i( p.[gx1z\&c)~B XЂ%ʼnMLQvGLe4.ngN^C(H`q*s9K&c*$X,`׻O[9)}MvKal=QttZ0(|M" nLJ6ZeBlD,\^oܯ<1NZbJYQ)Ilf)H]Fj ٤ڨ΄u됛̛EC8Ts L=>΂2 ~ьo݊ዷνXTz>>jV袟$=ݤ@D ,Ad%YvPTaזsVr1!҃m\nV$,ڡ9e(Z-.(Ф|l1\<$$yۋengc@剸ʬsʕ 0/Ȍ$4 (AZ5%(:n ?4" c& zNhHvS>JX{ۖڠPکP * p3Xpg}cxSm 0vt 1[zDup#mI`(3}{L68ȆbƟ9J3X5<|iOy˨uMfe=|B$esbFzV}5`<L+<+gě:%/U- EN(>{Ol >%L 9([ZCgxDNzTVLcr(Hc|4(=# +xꮤrԧԧ]-ɬTZ7'LZx)`kS" +s ƋѰ5Ml "X`/WQVSӟ3 VP JæMSS* ]*A|yTZwTU0 dpde,<5cuZKG/@v ܞ&lF +jBrM%/9fE>1O""RX@&|P5Q@*b%jI&gcZ[bZCN/BuS%y]P+ÝNO7͘!t RΘ+"{l9=-_bz3(! JUV/pnt?މ#Xv6L|"POd-tG׊kh{T(z 0@D@nwmBzXeG8 4"Q8P`R1(27,RSl0 <$h= ܃iQnC6B+Kbxsȹ2͝_0V)7:A0JAD #̜.0# +) +ÎC& {!P#Et.O+Aƾ:@B)AAuW뱀ȼQ_p\Āfޝ\0d0t86C$1@kq:j0BT.^' i?&p s2;#B2,Ts8k|xM}ͱ "5SwMѳ XHbxf$*TJ-Zux +mZ=pzlg'xTŤD*uq8>^K=\}dq%‰1H_x-`IN}X'. +N7ԺT&IIVYoxp}F\;?6X +52pqtJn錝sOģ>]e,( +ɍi}&CBZR',\E|VQ. &\2-8Ȫڒ !ˆD*L=" F9("TFg@_9CM-[LÚMKN#_A?X~/x-4HÊ!aH=5l)ƚΓ +D2#U&GKIHQ8(uGOU+J>*Ca,Vb5VkX £P=)/-a~`{ z~I/@-=+#sZ=)B, J(4)f,TV%ŭ&+)sVkH:%TRD> +~|`u/== `F}D~>_k{~!x۶x,(+$Lɝ+J:J[)yy8e<*SÀ ,Z|BxYj}Z[<[umR?R.{&{ QŷP]Zx9HyRM[ P/e%-^%-^1ZchscůŏsŷDśF]$Oϸ\lak\DnBnlZ9`' z4Pad[WbQ ;Gϴ8OMgHj'ړ"€)0Jɻq~Bj|jXg-^$bǰAy5 +O>]Vݳ4G +N(_[.mae@be²io"c"|*bkq;=$-?>_%,mL-%Sn6Z,*P2X[AxPu=rU }YbL5n ]Y* 6l&#\~qľ\0!5Ej](yTv*hZȌ40Q̝ +gH=N|Ġ`BDs)O@qnXM< ir{AebsA͍J2 4dIwj|$~bZ^*~QQGZ/`dǪ!jNIաA8Gi$jqr.j28K#E|y\qڲpᜟZ#RF@ zAp\RrDj\:"8.13E@9 +c`⇝JmHKt)X\ !ȈF)gK\(B:d(#\)ĹR^ ԂTO_I]<V8xh .2=030q8!4Uc %[ԙy dHreqܴn U؀_F{?a8j.WrG.imJy^),p3-aXB 09*[.39׈0Yp3Tu ha,W\A! h6*q'Ls{5y4)KlwmWE;fQ2{ʐf*h =CzCb} Є%t#X]k(:'CT0vdi=CS*i@7T"lb ^_IA-w)bX,B4X5@AH"t%NM#-8ې$ׄr=(,Pkz.z,Y~.֏7=$2]D`J8 &d@vI'fPҁ yZN RQh>P %(/=63U)>R ԓ։P>T(5D=2S8 +G%A/^WcŰP?i +iPH(.D)F +F9 JG. *7邹5ᦞ79:8~RH&:'(c)UpJB*`=>)`} 2nsa@w%pGD:!чG} ݙ\s~MkMgSOZ$Z +Y&j{7SOLESHA\b_Hcyl+d˔__Fz ʯ/po$^ +mywtIS$(ROV9R"\  fV: *v + |ά[mt^p Vc<cxu  _ثoHثgy/sOAXĈ%':}0ofT;Rj@aΊdMXP`.s:/9~ 9^~q +zS +z,@~'E z +4x 57=y}տ>{E!:R#aNX-T.Y16 <A/~~_:~K8=O{E#}GM,wqDHI=P﹞{a2ypV@}݄c{Z~X@'ו}Qh#~oi*\"RP~,(w'wŨ +w^G2EbץZ;k=o66jmS xWJ̩z a' L|d}^$uw.(gOA1 {N)DkH1ҡt6DLjmXM9 +p·#!퉠IX,=$( +2<98)'S"u)`^}3^ТQ*X Fc LmwIp/s,`z]9h9rx.U?Сh'١ͩ 0ˬtGwsX(ѓ2QBxh - if +DWLhSYnJ6C%RLɫ,,IzJ)|VI1 }Wg\󀜊'V+ Oz!?u#f+rǒ-mm2.2:Z[?^AUxL'A"cj-Zohˀg!C&3DElhF@G`;V:we\tel3~aYNHV~X#?KBzOWFG:eYu|hK&o`R0^<@BE<)Ш yi5TERGMLq ahdxjq2tڹuLՀ7&!U!>BJJnec^ FAX2~%#82476%wbwN-C'9ʡ0'PSQ(evTrJ,z>Z9}NNYDsgŠ. jŴ/N`n1`M>D[ČcB~ـi}H/ѐ3s7>TpN+.! !фhS!A;Aw2כ_e =Zurru1svdj|X!wP5C+AX.Mኣ'd00*ըSh M؀ &nJ6_6f&@1!CzYՏE]^M֪LW!Yu-Y="dN0a ^}gf +؀#h &b+20X$i \tpXЈ15pYkmPڕEq, slXfXk\X@M|@LrG"ܲyF5fq] iCvnDK&Vjw5h_L:SdPyUz,4{Y$3mQɐ3%,d!VڡIZE.bnBQ h &H XژfHKqqm,40m$wBI;јW%JFZ4!kjPXqPR<9'q3DǍ;kxU. +!1FTh4jX`LK8KD4aG.8C0`qtB)h}"yx~/707Ȥ=,( 17 `θ0˯A-C$KIW$HkfYNα);= " -q [c~BFXY \ QcV J},:@Ǝ`Ğ(!PQu0ԀlWVe$cJ +7tO Q3#eB} ?D + D +\?6>d~Cg +wPy+?g3eyL.p/WŠI ٱeAX#hAqČ(,,_@ ©| @P9F0ˇR[/{^}YrcvB"7f#]J$ =XR4~2պp4"5 +:ysgoQ%~LF ->1X`dY96wr )l֔&bzIG |#*"zJ3kG@*c)kT61Q hXQ h.r [oŐDcgAG oMD1YfQrqRs2y@&^{`0E`ʰ.Fr}Dn=@WÑ Ig)lLvlqha< +H< $҂$n[Cج\``EN" Wb(AyqV] FS- + bAt2p|cY/$xB֯֯FXADQͪ\{tvW ++bTғH%a4&NQ%ϞQ9xPXR mMps`7Bh NU Ҡ&]9BD,fDQubZg  + iH!+ʥCɞ"@Ue%XJz,6Y'Y/PAv=Cmp~XP[1NXi Ws_JXl)\7}4S&'^@֍”2PU:,\k]Xq,XMX{4J7Aώ/[0mFnԁDI <\JY3%;NusԍR +U28&<)`Jyq"io8ܳpRи>Q ipa= 1cW@ЛzRښ6^7W=a?V'UauBL;e jUc[kT-Vѫ|=+l UJXJ!=-{cEɯt8ItczZd^̂$>;&Jc 7Jc4N(SMJ*TX'ֆ^lc4ԈyQaAspJГ쐠ɐR\+>LWߊW/r󫧘W?ZAڗ'=>9Ԁ,Tf^. +)>Fcbb z%n$ϓHЃFoFDУZЇ CgAY>_Qj z$g#a,S9{r7 zR]Va5H%UV6'`6,,Z1/P}"cn'UЛP{P[JD@A(SA s,X@qтt^Cqm=e- p&œɮy C߼|s]H  t @ƱZ{:Ó5YYg@/1c7<ڢ'g&I-x [R\D0K;`@zB ( k +{ U 2*k̻¥z"!Ȑ:;yp:E$JsiF0V3XF`>lsg׶nE%ӖrÃjF!X(L4CbpXH2a_<ߓ!ŬI+DzsLk$[OZhX}PƸHEq=;!.% *[T%.Z 0(e!tY賸%vC>Vn@EZMT}cg ((ag7aޛ-7b)CJ*N"N!?q}T 6? +krEM_pIj a@Ǭ,GF#BF٘ -7E:$B =? 8X8vJ:!%,ށƄ?ƄP '2[$PsѨee^2SqP K2{'!8;p9oNyXO'-41A<: (%HB%, 7$)7,n=C?'U2b=L(^e@ k+h}-WG, =XHI>B@F;DS(fHMB`:~{:X$r]&Jr;XsÇsTۥ0뱀X.R\ROQ!muu#(Ԉx X M %, v1qM0)1 *M)31VBEW#zŠSAXAyՓ2x"{j;q$B2D5}TdSӭ2b:E9JLeEPEj_$x,ǬwkJ{(O{#/7ԠOHXWv.?m\J<&%8p:L(9e +ӭTR=PNSR5EzUTՂq-ޣ6}}X̠<~A\=M\}+1 zLRUoVlYRfye)/VK cNArpfzs^jWgYu" Bq1ʹz ?J^W/mfWH٫g֪6"\MAfJƛ>=C}_=ɐ^z]}#\\ 7 z,0Є + z z]#[zCAq)z wB~&qsz z44,];VFXd AHx7ౠZ*qԩ 3%kG]7ZZdyW9Vmr݉@ٞކ:JLRwUG4sթ*4T$a P.( F4-|HkUBK.t]U*>eGHB"D|tcJSȚĠ=hi\Yiay-LK;ɞނmp +/*/\4ȉR[}{E1"$i24'3*ktw=YAg-5rsv2؛AܜW-6H݀4JT$U`ÀyYQ <(Ps00^S&ޣ##*5!Z}k3u}nNf)=[Ķ}^5ǣHMxNۜ/z 8)qVT td| qsYJָH*j@1KBR(api)aThJ xCNHGF[?AQ-„}A8\ lz3qӣ?޺3-'B 18L΃* &qClcJk׫5N)P<(cGyPI0Xĩ"i<2 + =$$?ĐepJ 9;=fE*Cv!2|\T4: $OCR,P[{M +alRoTHaT,GZB`vhSY ©큠FRD࡟ $+!,jcX6IBkxr%AR=jUu]%գѰvWY,һ]T\21CX%`ã=Ie$I$LdjW As̝Xt`"sWԫjTQ*g]aeeUe(Z.x{g#&$Qs,_ MQRɀ,ݟLr*te튜V&Rs3<J񾮇 +\۳%d͠ܗGe% @$[awj8+lLLP7*ihV#uBDPNXP#d3nޟWី6/?R9oeDyrV"d*7tԙ:y@v{RDó`BA2ιx6t'! }H,fj3KQdVɑ F"O<@ 5k0<.qb;Q[L +#4HKG:A G&+D:a))w%ϴZ+aG@Fl@ BL?B0mwʊSvFSr`PkL-VȀğdB*BĄ@YqHyg #޿@R>rg "Ey1e%cn0;MAzz}$zz," U*!V{!upnp<Pb, }rP(XCRAZ܍8 #=)Csr_%6)qXuڂ銈p]_ZpnֵVǡh9<p +a(f,^L .L0!D@g' ї+ĦP!mbR<0($[&chҴe2"z{5(a]OX2 8[ NbE$b2BOI/TFpٶg]SR`s-l>r@V ( k(ؘ;YeSI)fN2}X@>ϩ +S ! MP0њ)?t|FxUpD!=c 5$l9cMDJ(B(#E9 +E>84q|O@b8 D5m[-Z7g@NECJ?*uE0l@f"V@|VH6*UVEhhqFz,u.=rZj!J$v|d;[SCqLAViV(B 'u|ո>`7 S+BT%G* Cn6L#|HH [ Ǥ]F;42(QZ*)o*Y?[Q.sʜZoM碡,YzJ(,`XL+s( \Hv5UAsB +'TJkQf"T ,P;T~0kW_@[ɥD H2A:O~8r^mejNI%b*/[\\ߑ>&ZTQV0fUAaer#/bؠ0>21jTCGbH>hX ) +sZ pJPE=fJEsd7:|9oKonzW,oX ^ѱ"Z]Ȝ`tۘpvs9$wqy`9pR8褜&s!@23F6B]p<IX="h(ރ&#~mW}$ z3eRȳZJQ +NGiL# ;֫:6C._xccUkS3A1b0229&R(D貮!^ͣs#iC"F\5aƐVaeIIa@]~[/=G͟&!/Puֻ6`2zU瞆z2AX&G J6J|ƎK$)^v,(5ݕŴ0\LHRNT$%S +SYSFBT" = Nhb +i!z6Yf=w(j. $ _uR6 Ű)]K7T)IJsmߪZ+e` z,5֛<אY1'xX? +X@X?Wg=-%ǂ/Bނb;<^Pba15x=x5РO(8Xd J' Z2^ĺAY +^% +}|\Mү^o곅U걀篃>_ebeb9yuXy`D zG3eD +L? o&8A?AXAէX"Wdzyb^}5\)]z$3MjAqA?1m 40ɠOPZaSP GU;S1lV&ĈD=q %NktI/ tMi.v\7O6F +Rm7Hlg hZ8W/vv\as0?C4XJ9Akԝָ 2'S5Z]+*OcM88#s9q*=B`^<:+W(;&!yܭGw ੶ d́xE΃ZpRib>/Vg;;ogJ|pH奄Տ˰گ3O)O˥Er\k K*م!:e"IȈttyZ7<9gUHf'**gVUsw`Rr#˜j)v" NhЈ›QLǎ  ֨it\7'GLZIKpP4wJy2- HT  \0+-*S7Q#81Di5 )Q&LZ}b\ +bi^BYt0)jX A5.I#:a XkդgqQѢaB3.%? m ȧXX&*\NwVj"Sg +iGu0q=:,X+Z$X)a$l{b$,AX,]lQg6!wB"DRIz]Gܱ ''+ wل8!V&)L6yJX`;Mv&erheG8HJYp.j.I8Xuz/1*( -Х֟ ;PknYx%g/k0ߋFN;*-9uC7@'ݵ-X L*V*/**Ft2R[-ZCblG#B{0]%0?o SdӌЗvHE]qk|L,k`F}ZBG& $M ӳyR}{h,Oj,HRX!:lPN#dp7+x'}{ +ʶdd*]J/0cCh 7'.d#4`>q +0َ AuP=' ȽU]Tg7^qd~q5.  +7> V+1QEbB$˘Jq"jX +$B# bSqO(tttԙC jj aOT Di%H'<#|t̤}By97?X#tbMeQcRh0.@M('q;5^)XdU#hV`JoGuI? NF'C&kukRIB3`{-S24xgq#6LN}U QP V}`VD>ȡcūnՆ^ d| L>Q?6P]ubՍ&H4s1 >6 :St9?)IbO\Ş@L`Y.Ӻk=-EkKs)gO }h,{P [ہAF7hst'}!%vF4$ch!'`0%Rd@-< *Y)*:Mp@<2N1Xo@ \e׈:Ep$2ÐQ6k yu -LTDL$ +LQEt( ep) E,dpĖ"UKT$9tP4ZdnrJ2t2MJ0UKI3k>簰\,&$^!2Z?4@M! +SrHcD_ӧ I@/ +6$!Vb +M1~ʱ@jP* X8Ť FcP̂"لXR7Q_B&,R^\;dQ1L!@)W ,N*If1 +u$\+aRUŁx#, T| /)v."NMM,1}P)/ۃ!O Tt;t:x?UtӞp2χD' 4(#GWEe>\CVLe4h,ٺ5ˊP_@^B.@D[{&aŚ6nmJ(x%dD5/TF\`IR d|Fy[RdHI@̹{؃i-=sX3Ԍs׆FsAZK&{R$U`'! 3"0aID7MX<f"OÞhLZa\,nN}SRNco(`B+wwT>zNkf{H. n13h03Gǖ>'9ylƵu;z{wRq9:t=q@򴢫7!53PwY%BX`{(bѥq\iOK#O*yBɄ1C=)E7sy[-sd!<XZ?8^LJZdGEq<$PFk +9˺yF4#x9cy4)$T%`c6#dJZӁEQ0BHJM9eMvH adRȬH oʗ#ey$-ϗvJ߲'hg++3S~?’o)W_ +-\a,;,7.5مKOΓT)ugwAaE8bg,}Qǐ C>A?m er~3IHJ/aiϊ9#_Ώ;U)t96L&Y$Ʈg P|p/K$'^8X璡0}g[w诨MX`źr7y~ߢR_? ay.3K6E"K)dہ&1JXTa6xN-}hߟ ʏ _wvg UD\Z+{$R>P-7Zhe}j'>=%h6@q`pO at +ڡH$)`sbRA״~S +v=jIY-,i Ո' hdٯaT4u!B^OMr:DF{B, + +aV-ط_X T|HpVPbz8Syj15l#d0)+K_P\ϲ(<:Sm DHƣ0QWW@\^"t(y +XSk9R{'Jxw|ƛI +a[ף +y\C'yDtP8#QY! +^zㄒ +w%q\EV fqA).&Y(/faD^L^L fϙ3W'IP_'DPȂJҤ + E˪z[)PJA vĪm!R'(0B@_Ul I]U]>osB5]UE=XE72 B=2q3S:$?ȧ+cY, seOјwbAonʚ3ǩ +%"[E..%!Nj,̉eTADgT )ȧFm-Hjxu@r:%B+(6xX 晫1Z שԙuK"@$~iH@10-UHXҨ[A8{ 3:8s@v,~Ύh4̎*3kHvl[=iW2sGi jzsdy!' 3T!'.OeS @ړy9K74a#z0 ᑫ'E,#^RqcM|UcWI;$># F4EN4,/^T{@AhRĶ%̠pgeaivo +88s+~tX\~Iri%%L|rՈB.:rFYa,@8+& +O'&Ԑr2H,Lq@%N=2֘\+ĢatF` ׂt}*(dJ ˁ=]ayA#7Q1@)aVU!  ,0XԊ2ɛG#` +\%2+JϨFVS#Q-zٱm,m T(%9pzP嵈P .a|DA*H` #Mf\Bvw@1։B#7nm|: +z)+ĎXaz%:E e8E@ I-T( + FPt1`hҏCy3]#-kZ+8@'*](R5eD8%8^< l(Q(1> N]kRMTinLӀtQwf@c`K0Q@xP9ݘre& ;ZL<X9FE$v.\؞ӂ6А16kd ՞k`AihsDzw0OfwXaiG Ho= 6,6NqG()Me{)S(WJdPHb ,$  :9V3;N,Tu5Zfntvsq 4hf Qz>փP C@69>ucy#eD(id6@xlt&rPTG+O˔xKG3)*3fQi0A0M;ME ^  "hHB= vInQnN?"C5Ez[ՐH2:t&#(?by݋.9W*mi_^%XdTLfC ='PpY:N@*I_jMoBN}Z-G$ʛIh&:r&X`0Hhօi(+%quZ@iv<4nd䲤d$b +^9moVN _6|OYXfjꦌG[a|.tR;yx8͜Ɛ[ݤE+%Krz$mїN\zy5x{^Bn>% >Z4V "٤H]fˇ^"ze%S4O8+$52Fxɵ̊U<vA֕k!xxkS쾟eGP3G@cX̎NrFi3g+'CfUP\%BDXuшh0̓&\*9xwQB]7ӽ|!ly~[GX,N=.I,rl;Po Yf=F"ZQi3Z#$O.$% R͘&L$s%:BaQBo -[WuɚI&R XaT$*PI0!d[fİiBP O&'rK:,DR4LԜ(؛ +E`d,|d̺IП&PE ~~@FѯZ6#wCCp~m:?kl8 B4;qX _´Q-Lw* , j:*!pt|oj|8fO?3zO>@BbXƑ{Md~\Ϙ3GQ΀f<,c!+)Qm uWP3Po Lv[)*) +O$v^8Z#iI^Mʪ. c7T9MH~j&^IkdCfbO( Ȅ 7FkR9^׍!QC[zRdC${C.Iyq(2h`Qky>l  \BI Bj!LF OEG gĂs1T+OZ ՓFf!_d"^jEsc%K% $TH]0K4h,\z4قTt>\,6Eٚm4s ˮIQh"lV,` ,j q\2RbpR3M +uQBUYQT$n1=a@HATqIj展OX@Ub2s!zqR7י"i3SX4ҒoH3ۄj\`Tt !Eg(!Oj3%H w!D! >(! +m47fz>%h)5diRB :&U9,hLcQ,@=,s;$/ G+$mDg":|i@X(ԹGȠl6N0#ʠ#x詘1v ;t'Entlߦ6 ,|JVk-3w!`3.K\8wKO, sψV4-XjpB@4';HVF[!{' (وKYUD# i*N'ia҂,b4Y^SW:mX2HQzB0l I 0B<Vq 5bYBD$,n?fҚkO.䑀bS0Gf Z-(cqJGF3ξ`Oէ%Fʓ2Oƞ#8e6 1FbG@|KhK'ѷ Fg'Q)B_(4!I+q"'ѷwJX2ZO4ZF3 5 \,o C +̇]̇12>6'B$v#6Sˆ`82x|R}:t IN-0*[)F 4(C`-H9i"[%.oҔ:sJ#3J#S+Ġ+C3Ry!y˖& AErK`}ad5~},Fl<1 'I$] 3c*ZhX^R]m~ص#'>(a*Msc+>-PlҠŠd,>0YuhYyq.|XwG#4$~}MA<,Bpcr7x$"4 El+@LM(lFЁuBP9lg[f H3p$Q Oą8~IC?4Qpy|~*!#T +=ɈBT$/u% DN{(bSpCfp Vw"Cbl ``DّLvG2;#A26T,л">9~}FuVDSV[$)j\{ Nx&) \Ҫ2!- SPf`r^'&p(W9 Ć41)}k=Rf!rI@RC6 +Mٌd,)a ?IbYWO,>_7D*D 0@.$C:TAdkJ0Ϋ%:g2ˋ)]8D[E D( |`H N$3OhK':!Ӂ%+X-txDor& (1i(jBUP-B[O@h4"]čb: +]c6eX6ʀ62vhxv 0`F2),GE#Faū (p*!M}Dž0:gIA(]yf$GH,;L2J@; DJ%Uܝ? qjD4f52թ]PENc+(/yS(d '" +'fB; j\6Ҟs%U9BsVDyvJqw@Q#=hXg +i{r(dg͈*5dn;lUwL˒Lϯ١6tyn~Si|CpfP˱!SCȡb7 3"w\$^%$S(K2:ݥ2ES@\MYͺy,@ZwwC32 ^4h!z@Q&~9)U%dKEBU$(N8!R,( 5!ډtqCzR^Ub )||#vyjyʹ<{ZGZ$fU)gURJpݦˌ%TvD +g0_ *+IK9TK)'24lBlt8y>+ag^!^Y.?.'2 vcퟜS3h%X33?Z_:s EI~Ph2HKRkM4CH,rTHl 6)!Yph(AN-R>=GTeXXֿB8סmwR`0_(՟)_I}S:H'#"/c>68ht)Ba~( G[ +:-V(rw7_t0R*^Rj~ϸI$פ/k4X`%#C m6R +"#bPyZ&&[T݈fUd6A'^fg)) +S^8& YF]Zc StY2:ɯ/hWO8S t~oE5˨B $K &^)"N&T6u:Y +;|.wPHCAMܢ *Jt.Q#/i uHvxi~h 4V)RYu͙ܨM\f: +N6of݆ 4@gߌ.=,&:8"u~n[E6s6wgkF-*d0OWlZޢ}i|!^@ԆcwM!T*U.q!j4֑kw09\;wg\<ԕIx9\=G>ufƸ%m†. (Z$#JfSۉX5CC%EضXtXK!@ŬpψGm3ude0 pnFW@dAn$|p+p +GY,%q9ctZSWn <(Z!Y*SkLl }\>nPǻ qA ERᮂ u=4d49$Om#-(7zҘԐ6XIM)2t@:׀ч┧(r_ٖ4E-y605KR.S):2Lx4rߵ&3'NX, 8xhTx Y8= D@dv%QϥkbuJ ,lfo橓e'œBNUJ; |>, >عXA\Pn}pbK9Rx0H*(8O蔹?e,, W2pW4(Am#)U$K021@i-`gw) s%]Q Q5hZ-Ԣ9>nU &u8^L!g* Š?k pCq,VEEreȀJ-<M3q,Ay@p>f~E1zўSs"YZ@gemko/d'LKD"Q%\ D!͌%Fw!贑xv3~$&ȥMn}T\2{ ʭ[N,u9{[4'k@,YUt2*ytfKmy;Mǜ$I 0J?\89$܆E QdX*)rV:0y*/=eͺT"R(h)h7hFDh*0uΩ4qJurJ vjR +Dz ܞR;B/Axæ>OՉ _$_ŕCj\7mMmM/XF 0 U "`paS$e@H#@%.#Ou &$QҤޘ$!]GS 1Mig^ldwq 9DP€ I"#L-r6L--F,^kjA԰Erd b[ + QUdSʺE^J/P에UձiM@6ǜIM? eכ,/^Z 4^V8 +!^+\ò7}B]8 +%F9zr܆FVR"@% +6p ]L>WC"ܫ>| +Ҡ_8&Y=12ԁ$!jrW=_cc*aa.Xi!E!}aWȰ1?i9)/-1!Ξ>5~do";=h~^99TDl,"\F6^Ï^htNΏ%̯܈.TQWޢm!;1@ܑ"%X \-$I pkғ <LArdܵB@m4Վ78cUSlsڐ&%!ɛ>v~ _,@XA|@pU\UF!*Clz*іQ] c%"&F/F)"%B4P(<<18<<4=:JOzK] S4hx@&*8Hʃ(+2ɹFs#DvGpv$uD%o'gRH',uhjH:"H=,R0ǦC| {=X$BGDFG#2BhiFI'- /=RUiLmO&9rD,4Z'e6eaWA:yuy ̗JKKKI*hT8Id'HÌۧ%IK:I9HB9&9Ũ<6*ˬ^Me ˏ %L{vy~jNmZӓMUQ]lu^f8=/oX^n < < zyxy~#xy<\/ B߸~oq?H61k&~ota)\߹ԫ +e +rz_Чh0-Z1TT V]0q,lL2Р*+=$G#>6QWZ/gObWX?i0Y h)b=䞙EPYNH7xX@ H1u4hH#Cq 8&K& +!t8cx'x"3Q@ eS֡? endstream endobj 19 0 obj <>stream +yAGi,zcXrikfZFPyN`9ukPɉ˔vܤB2'Bb:}ո' M_-{R83D?*l 1r}rl.|R""0!(YtСjF᩽K + +k;R L$.Ua-jaXs]Hp7oB,L^ )v(Lh @d͐H(1OƕRЎcE9B 3_CfhscAȶ_0&yhrT|!LUC=j&IZ8`lp~*Z u۾^W1QE^-rYeG> Ytv_B +4,Y襆PB"#%SSR"hc#?!"M1DrD Gd1J0؜$H)bH(Z,hpK;Y~ ,̭ YlG.Mt!LvLb/H,i.^yuhۢL\R]'p6&li +u^R)]'bx%JaB9404 nS͑9@'\(&iV锪*/W-hkmq&!%D(PNQH>Jk,#1܏A2m‚TE22*5$!1G/6*MQN+MOK*&QvnZf ҊԵ治_1kI%B =9+ :> GyphKFe^6K(?  8帉BK!`с AҸ+bxIŅ?H1l}LpGf}^f6UXjgMjylF@,Gx@N\vN/V59k +it*84n @Dp'Is᳤ Cjj~JLH~ +>Pbb8 H8"+` 3zS1R{4]IsZ!$Ġ &}liܣ#Id +\ɴ N_A%W+#B[D2ad+CF_Q1$DQ(?',GZ`N +-(MI~,i݉%yoO%21Nͨ'D*f~UBT*.>\7t4R#8%*'a'g |Pl0vӠGi.W ́>~E5R7cC4M3M'².Q):G @LE' *>*D>F;D` Td eY%e +HQ\(҈i7HX4zN u5EO974WnHr;Maji%C(PeefX@e)3 +gqnqldgKf3CO%YP>ɰV:u !ӎ `/%1Z"a +\ +I,9$4P, JeB +Q +^~_6)X@9*+g-T*ѩd^:tC/-`ƖaiѸ'9CJ^dN1IѪ m,Fss +zGS,#òA? p#lF1602ueXq`р$_bx-fS06Ql-Ҕg<LT/BcX˅<*IЛ̎d\A|+&ᾌ$/2#.,h4=8 _3]p"A!hUgF<BP'CcAX^!|BeN'3 +1~_6iO5zG:YO1l-Z=thrD&` =rTtAbAtF{u8HSw>ģIˌ%5\(et@ԴbL'`pn+,@.^[|[[!erEH;AȤ #TUH~%Vt @65)}ȒUpt"|Lxzt'轔Pq*TaVb5`yM( ?0:pXV4"OFpu'oW!=.ZJdʴi/ytJe5U!.^ +[TEpTN7Ds˪ YС#sPd6m7ь',p'`)q (\CdzR%)xѽJ5=/Kb'Z<`fyUI.&_t+ &J[ً VGM%];:vU0Gޜ/:m% 0,Y5U2),+m12ܡEP —3o1\0+L7D 8"pEXq, tdJj( ôO)tͯ8d*K,fI~t"OwLRբ4oU,mhY}ظdTLT񛅉+ba1 PI2%Yuɏ9aK3^lK[m[zD)`=ļx91%-mH+2n>!y#8r35d$32 QQ} T3cj+Sj& @ImfwҀdBm٢N?% [0:ҁP½Ft,0ReL(hԥ()`Y0CaZxT`zF.암ftX4Z(C D&7h Af#YE :[{ E䗗fdOJ[@ DQjyxDf3d3S΅p8&s^!&s?@5 EGcBWŧe$=א[öo +`UbE!lȘCXPO>)gc6$…*W1G9">Da3;%Zꋦ6ƂjMɿvM1tPR>R#7ܿ ̥acFp[&+Ϝl0XP:J`\xHvG\vlLKG,#HhjԣRj(Gd4*\FT#کFDU +8,(\҃Zc,ŗ$DXLsb]: g?! NUT)BTV RR뤆,^!i]N!!H9]hw؊=0wڥƓ(1XecMa,@,\~ WJe p*!g 4%q<&XElȱFc}W$i 66 vB3t-m6 W.2!b MU?r7D +ĆLSo |(О8i[mnIN5h܆B5䍻7v>J /1b$D{9Й b.R}֘L |j$45S.?RtNjNgщPF8PE@]^,`IoÛM.iBX%ϫu&K@c KōtPxqY~76Eg(d̳[U6'>! (8lK.m e%8 +tl#v7CBheX]@+CuY,瞈R:Zl 8H@l'/r^S-a6 +ݎ6(ETLur@bO*3K 8&tcĝ}@հ4g@\T5"+7ŧd9yh +$(0q='lwfX.xz}>0D6d&Ga`wذ^[ĖaK:'7_]1'iGj,u#HBHťٳ@çMx DIaeGuv \*HsI: C @'n'NK3֕w`6ҚP7j\@;V cW"^H-[/m CLQC.22v΄6u"S9<֏: +P+Α#u;̗n67۴bc rD Q=b$VPE"Yd Nx5S(p-ĔXX.  Pܘ YD*="YS*X]}<4Ia ٿPt:{hidR_dZLR@ı07 gc$"SAEC QJSIFOMN׸z,(.4B8|IR9LF552ZL:`GA9C9J,M)E u۵x&:\{LflvzDVXQԇfVk"c= zFsMٻ:!M&4v}g[4oXI_݌\v`pК0c`Q>F9&ԫ+ޔ@3jezb)Ϡ +AOf9U J1²2-fpԙ~ +eT$ǣ8dyI¦]0aZy6]ou hM\QJAz = +󢕂BhpFWHyՙ5 m oL IpqKosZ(A;H˖,BX F*I&B1UG~?~cd\b_ZgΣ:XAr<|<IPA! R#Q6b@&CeiRYY-BAa]YQZ W<'L!&NDi_B?0$%,:eڒHW奏QM(z"Ijr S2Uq8ڌ{߳v;wJ߹l-jqB ,0tK 8Q 8F$-͌D^rMVj2/7}[ety}ctJU?*-jR}Tm+[2PB?I{+ &y7qrDZ8 K/ڰHeK&B)\j 2$)#6x%U/u #uj@TQQ06au+Q"۬1X.uaINۡ O r)j |fXA߸0: +<^D'88{0(]$nϩf NJ[XfE9u0O<(Y@-=a˞\e?rg<{~=5zh<Ƥ :9IϯT>ZR/VSUʓ*é+ɣfXSb?[B.| +' CwPiinSpTt;?(t*Y&ȅHtYzc.Ӹ7F@B mϬ{%A[<ā%9 ͨM8A+/P:)è3Jcg4 M>d~/[ \dMċ8ςoݱF]*JxT2N%6(^*KL(הUVDDCr4(#D/!  +_lj:@YBlZ؀ao@>&]BSpEЫXLTbz̷?:t-@N< m $&ބI'` b4.p÷ސ& M+`V,=\zNiˌxL?`Ij.Xde. uౙ7>^7NIA`Zl8<5JmK}X*@/]+n+QKvϜ(+֌.|s +GjwG]'9%BMm$ U@OU P_)Ô؃n̖YLSXkiMFU HH5CNi:fqmFbw 7M%BD`fDKI=ZlOUpW6;7gmrJu>fGȧJL"sjH>E?: | ]XTޑaIBo̩=Svm^v,.+Kv:nq1oGfll+ Iu9A7%/݃X P,k?lgv;ۚ?uv?S~c?{ӿ<,ЃB+I#J6(!בILSƄEtDM.2b67+B& u! $&G/)ȏ(?t2ʡ&7K7u BcXU'B7qSi>$IǼ_hoE@TOC{S:?ďow$E_uH_s_F _) )%dt(#pZh+ߥq;yp ptWHPZ+~I !l=W]D!5S I`Jt؀QAM?4/y n +}bPTe.$x:0RtKQlm2;mXhArQ^̬ 0"B[|>4}mOH]'?Sc|0~j?}>J=}?=h,>)Vqq|R(%hc_/@!8L۪r^KI(& NO\ }~FOO:7YE+&}򾫲/V+XTRyyf?2wl$ޟ'(Y@O'o 玳L1P3t( ?I,T! `+DU6D!0>}ЋsܶϢ.? t/Rž7:Ac6yX`0c2JL|A=Vd?S XfQUD.X\% REc^_F*|*|iUX  +?.w}F}+G ~O!h?R.?3p2ek-,i)z 6:'0ZE(P+0 e L&AZknP{ +jJM:+ lr+&zԂp8e+#SŤ[A[Ӛ # .'!n-נ*Aa`_X +PEK,KAh݅utɩck4̀ut L%P1$1O̤I0c-țU %x@:INbKi3]Ӧr"-,ކscq̈w2]$T^]bRqQN#dgi!C,(`8VDPSX:1fSQ="eŷu)2dW[fc*5Ye#=Q.m$EbL=f ?tc>ymE N1ƨ4#P\F&$][OJ$E>6 nDbLf8\h-Aio @9kb,A,tV%YN7#eiFz,@#w'ްŴp+ 5Ԍ +u$cQ dʣwM!(qӸԂr1--%eV_A %DKt=Pe!lHpjM +>b_I`Yd0tiCaj l1as=Cv(-2Ú `]0NCnN6#z +D lAD~9RV7RM#J'Pm*P¿*J`ˏaOEEպ]UM%{?v6\dVcK- @&ߢhoָϢGQp}: E:: FQ +)8<hULon:j jlWeX,p p;z{ }eMyox'qiuAբj9lB򎰐Cb[`9$@+ +%CiAdhgi3<`~pƨz*b%PƊBP ©D%bAoS~$c^MJ@ -X*N'|89F9 ie~aX٤a@3>.d d/]8D *'}J Ԛmѱn(%]}e]^Y7V%5ŕ@, h!}Ԟz5Hf«RbE(Ѡ#AqH) +l h;mH7ܐ [K;)\@'Cgc}Кn,->8S6>CHk+1+fxJpw{J@DC(6 `EȋC"6BhCH5Ć`j1H`] 3$o*քR)CPs\vh4 -Hf|@֘"FGaw lta=누&{3iѱ4{؊ !< nؑAѕ >O+\hx3qFeΑr"keD+>8z8B ,|44-<ٳ`,M UpD GP5"IMuH36VSN#޼׶54_s9mr op*+#&fU)@<)Z/fU*BZ4a)48< m .SyFol.K,pbt(qi9@sۜ8 ˧3eBnq4оg0F FKPf 'xrN U[%fO&~U%,ϋL.2 7s9B$vTJZZx-!FF ƫ# +"N$<,/6Yv /ʢLuJLHZJvF]԰zލm#R:'`O7}n,:{H#/EH 0gCL6!0734E!|2X:*6g_Ai6^[^ 5D˷N*2$\,{ ,  l*$ׅO)- t +>y<՝?IeXc GDA?İ2>#P:hSq,^,T +`H xĭ\ls߾?!cD}Qg/NߒB~~a/%"z߃(b0ls>9DM'}Ϣ~fŽG u j63$ lyF*ÇD=]%fɉ!@6 NP:FUH7W\ z8*kӣw:,Za*gaӰ苑tb4eRQ"\\ɽ]^dN0UoÅ_^?E\ F ;0*Ry +ٵIH:f t fN +Y1 +f!z8f1z; )+ygƃk yֺӃZ +q<6*9։mKIci6Y Bþͱ[6,о3A +7Q nM:8.Iq齍? +-Ȏ"&V͞h1J;o`aB3.nhb@oK{ll ڹ +}(DL}W{}XXr,1$C,`*HG0bF0D"SrP\~!HZ'7I02H $!NeP0ԢFqGD"+ 䜈 # +Sޫ[ayAӻS}a=*Ƚ=9K>Ԓ"1IH +3I!~KgWF Y\(ޓR臆TeX/fj=bQ$ ŝ Ĩa% ASbz&i(K噃AiWWy8W1JQ! C,`|"9vDH .MT`D ֩eHKe+j$+2LhC"70VA})(G}R)꫌h *an:W1FxyDv:F6gE!j( 55]_  +-R!oaQT--1@*̯# +/".P8GRCCKt)ID,}VΏ8nnԔD844jƒ.[z?7?]"Eأ,\(:Daw!_q&:`,p3ڕlF\3 05m]3XfWk6dpS?ܜ'qĀhi o4|viZ>*^WfY$ЖBzT)`2C_amL ߙPitTPF2#_K9+^K,r$W޲B +Le~~klPvsYy9+@gͼg06(`Ip maH]zC(oFYwGi1!  E2a<X {ܣ(u>EܓoPވ`qR<#TDmʅC.2 +ệ]t3|+R䮤]{7Q7+!' +NiA4J c5I)zy3njI* +/ ʤQ Ҹ0iR߮"F) 607z};pb &1"0"ް +Iox'~Felì&Hub_ 4x2!J@|Vph8aьOגW m:+Od?Xd * VgvתU)`8le(#/sT8S᠂J(|(QΡ nmK2$bǕoO*D-R\ΗwKZcXȜx"J\62p6*<UQp) m(_qV ƾMx/ ԿL _fS+,}.#*=+qǹ笏I ;ƦQ.B^pRh9CaQC]\ ,{OrWw*]Hv ~X^ ޸0LB!>N.t/Z6!($Z F|֋C $ҌoxX5K﵊Ҙ4Brx@l \ڕ,m J*z,N AH@`p:ɗl8[I9ueҊWNHZ+2 y.`&-!:aDWO 5(¡Q2ءv0-qssTx[KJ2!+Լ!'rJѾA_twD`0:`-h66;#63qAN9G6mprXspl̎2" @ڑMڊ8qv}PT +2!0ri߆tcU3#fO'"-G) 0d +S[("U)R/F,3Co6/;);f=Pڜ@' +xB9'0"cPO:2{$A))b0Y\pfPY.J̯:=MZbs |)t#Kd~ġKHz0 +i,ӻh~WqiU:DfR3 JNz6G}$|ҊfPU,ikhego&B   +ИJd̒kDo +01C`NlHЮ# bJƦHV k,>u]tS"tI03  _xg29k.ɵ쥾Jsf"׌vDhJ0έр%AO*U}n Sl3373 ֤ջ wkS1*>zHLcZQ@aDm&LtQ~QI4ɢ|< *+.:J 1;!>xs&rg H+"H&?*y}OzKTAU2]mmԱUX=@ڼ,G]1NQ?jQtUuQ0wkYes k}*1SVC].jR/Ƒ$q~8虜_ (WLr,5_Wo˸Rj_H)Qf,?gJ,:S]Y0S5lu@ +oFs d1 +~vz eAg[^).?˯_]~,sG*,CPȟ +. 4&`RƿO[(0 E?K4|o +EX 1eTQkht *J~.STg4~4S?Ot?Z[m(_K]NKWqX:ԼJCC$pQF:@`냑= i&~, Q$*J|1=-X +M񃤂 xAT +P_FTJV и]O#h% *c
[xѾw,q>|~ +9wb4ץ j hT0N8lVi%R|u&YשG91`/ Vy!eg0SZ0(#Kvv vxM@>ev}``Z؈tN9FR}``ophޟ )9g-ʟV7PkJS+]&ȅZ6S8RANi[+`!ˉ%-GqaDX7i L{ z bSYKv`<+nÏ8BA5 +Q6 ^q= Ѷ.VÖB;XI3Xw|:MXO1a9:He#5]JJl+K#\|:n!HXG! +UGz0DwoAbbThg xA 3AR4+?ÔuXQNI&@39p+c3qUa&?MQ($ȃnP +׀Ъ dLbO1ڧS1+WW1bFh'4 1oԠdHC9ʐנkZdPoF`lmub7#i+Z*`nv<&pJ<W2i;*sQ +8 7)/LApl$%%ؔޥ|loNk*brz,exB:Cv̡D*"W5-ʖ7d +섌"(̿ :Ch6D'w((*z>HTDzHR=9 +~LE L +NR B zHդnͻ^m04HZD +®a.w*\b 4xB*'0C) +%IG- k(.fmr,jd^98Yi*g)HC +pVzVl7%,NP{LNr J +c7 0eW<Ԍٞh!vB&O9vC>nyH;+4k$ļB0ygǼ|c^tscE5mXfmۨvtmzTQ7ѥI`"dh#^x@"8<&«ʌ]L) N kUl+V79k-%n6-1mD,1DbZvn1ܑZ|\|Z_s^#BBN^X*k2`G8\V萯6 +de $I̢ ǜT`Ku5&T,#j0 + IM8XPhH6ӍRzq9XVQŪZ.[\$ uV08TˍlwQ‡"@T RArб&RWr[  4Zs2ˤ_OC.JCת%7 +9FU`!o5%TVԱd0cGT/h'9\6A.SKR&!@. +xӒ+NWP=|H5/Ή BCCzѽ!HF2F5JΙ@ Ģ +Ԡlg g C$yHdz󆤆!xts`Ց ["쑜P  ;)D_J^J9DTJ+Rw[ ֌A2GOq\LHðhc30!X@Wȷ?A +xҾ?c *DKHpتJ,o`,+`먄^H!t-QekXڔ#vTd'#rIyJ̤%Pb~ +b}ly^E|EL&Ӓ:'(lyK.1L/g@k=3MK3z 6Ao \mTE: <Ɇ>kt VN : Ί$]/tZ/j0J g +> <&AD1;JԱ@6bI'@T*5&fD ZS%^0q"BOU2+JaG9+ +2;X Ч5YṇR)N5>^Ђ4{ǩ *T ٪7/pg8e*ӧʂf}" bDq}NG bI]IIKXpkxgLv_ߖCV X1P#iNu Jg|DX+򼈷K~,VRLMVv ȎowD>#Dh5~R6OY|*a< p]"k0`SӁ b,K#ͱV*ߜ{6мkX1^.~CYR/I*P0/JKx?HL_ɱ#©" V/m^GPv¦ЅV~$F,ryWբdc8(7=~=f~pE~K) += +1¿vL~ t=S$ IH\ s\PIvJnD#MNj{𘬁!Hex@<ً.ԬX)eQKd4:6#ڧH7JSFn".$5 WP^NXNlL^8/Э4 +pMzO`oLċ;HD4ˌ e-O6( [C0ĪJEJ4qGsXRNRح:(.Z|hc2n9D}|}ܮ >n5rKL\Hž:¿Jar ழ1 p21^-).9x!; :5#4zHPp<`V88B`: F^2v}=d%ɾXerն"a8)p<};$;Cy!.NaS4H^dä(>v&FT8bQYZj#C +*2sU*W 2]gV;:яHI.fE0aHA3tJ[ۄr5kIGns+qQRHdݘ7},`^ueAP +,}P_I9pDKX4 2bW^cյ5˛h& 1vQﵻ؄Bk}\h X(d:%TޠFd.(Ba+/֊Z* +<7h5眰IBP ʔaEuQz +ũ!Ј=s߮ֆpV|DàW !Bޝ˲onlEՑVH"X`4H9fg&C4&>OLB Hz)i LhwL}:sO=Hsչm!Թ]S0V#oBlz@D^:FX@cRN+U|x:0 ƒAL 9{O쮱~܏A>uR!&qU0P3"ɄnORhmz5)d^]t[_3*޿2W;q(T83dv94r2gB*8DXq|,Z#$,Pi)w0-3U' y +J\sayny DgqM3$lt@@.P@F >z{LŢz,#XFI6ꤥdNV4TpWBf0,< ,/*7럌aգ/2G)1@P,` gb\tpib00?Iu(bUEaeP'cI-p)3g$?M?CJp206b4?|00L`Y\E>46I ̨m!-(W`tCn~8%I1?XAd+yh~Gؗ!UQ~ϔ(b_، +\=&tHZ #yqp0n" q/Pu\XZ-kZҨlGN#򇜝?cDǿzװ;b]ReZ/(! Qc&1~oDp:ߨFhb@Urw v&li!%ON 1dJa'&L'_8Ђkr +I/D1LJfrgpCjX u96LrЩ"v.hAex SDJtNE: '3ȤMXLآt`i r` byfżYm$ZTv{ VQqlr$;7e.(jtsP˼󂏃UI( +B "]0 ߅`86GhhF C8\p: -CM(?= +,Q$tX`kkEbK[n*ph<-A0}6ȁiiKa/h^[쭬3ġkբLYuޢ`=dǍdTJ88gt"G,4\yr2fH[&'u>0i@Y;ӣ>!0R0Xi8r" JL8ي~H Xzhч"zME }"3ˏ˭.*"lt0#ϧχ@DGCcΧ8`<#8 ,IB&)f'@+ P)=2֪eXw~ +9Th%=vrn; +2o'cϏx2*9: „oռ9m4a0̬dfVʲgK2˔!2+5-y-e b6S~*jQُ ^KMj7^P ~ 83) + +)A*'\tB'v,8LF0E yy!+ +9eʉd) +qc * 0)ttئ*H}kxT$eӂp=fzq+W}:WymM`ĜD V!てbLUVCX A6vgP,R?KGa`\AiCKA#i1aKGq ?*rW_ӽCn/u -8e} 4X p'^2A.1<>CxL#:K t͞hm胼%`Ei=TZSeK{cÏmRo,`qɧPXi{#Ɣi8e) okXc}x))G',< '\%SG.bI{Pӱ ?Y'ZaTHYx;Dު̈;$I$B'Ld%5"F\^, +`gCɡ짦)%c= N @5b :UCJdx,DVpCbc|zJnlND)h% r2"#W @XB'K;))aXcڢ6R4kbEduX/>/'#wENp{%<:jj2,"… JET,.ŐK$8ͣ-MHYuQZ`Dh eW.ؘ֦@jyZFC1k5,r +?@Z'yB2"[hE)z+}Rhtϡ.hX} Z{h*SB , ^mQtMFɺr#̡]6f+6)k z*CIC}#j%$XԱeoo("'M ^ ^< )D{ju"z0Q]Y_{ұlQBD<8T9;숑:[GI{G;0 bFЭ/˪wRUeqd7r4`R*P l@F-p +2m;[4ȕz5{#"hm>L xE1:UZ,zm^t>3U' %]Dʖť&SQ͠\hLJJG^6 PȂyMq&ȐSHVtP1sB*HU!(4Tc#L)S-&fc \~ԗҴ#@I'JȬ-J[8iJ+dQU6x[D4ꩃgX{ N.033243hj,Gk8|*0Lx5ke:)XZNJtTi3PiIMAkW_"N9A̖OJvջQQ "H9 +`ݲ$qT$-@6 GS5zYt + X'Qo¡ylyJ-3f4*8hB7XMKMbwy%H)*XP:_A=@dU.*!So?Ţ6zGI8V&{2a;N Xݶ<- #8uD3z$$O;¦lF`H&JdFT5U;HPTK"ՃɔJi>CNb,(O2|w~puYx&ZX!%UF8I̓hG'-34M n'L[Hfғ@U +yYb]WC0.Fͽ9;IJ$P/@J,@b5G*UCy6P d!) BMV󉀒 vWS(L]-tA՞fީ\Us}?b iVe3'cS#Ix+*-N]c1UrX(ʩ,q +Xeٔ:F!:t y=H|FR|!kq) +6: ?TxACʅ"!\* =㢈-W:x) DlȮfP-Qnq"̖2t#6!aC=ix+(̨e+ KA~!n,V8 +Ry +CjMs>Z9 +I*J=UuPFAb8b`U1Ze#2J0k(tU +!*3dCnjrN~'%G$% +SG#TCf^bN :O=U%I΅lμ6h:\S!:Y"DY GyT"A1覒1SUPiD XC@,#TFbj1cX\@)L)J4AhSmln=*]Z 9s{2 7z/( {(:$0BZ{kD<\q~͕zE8#)eX c=,V+_IqHYJ$XveD9cS892+t,h95־XY!" G18D* 8\:z T7QX usXZy33f T48X*̴$@HNBkZjqpaHs"B[:%K_I@fGu|w/SHS45dR6])v $RtHPTf;"FU  cU]:,wݝt8V +I`ŕ NT(Ru@G}E%B]༰q jO*. Ji)S8HB2+jxƢB4+A$~jۇ|˴$M[Mxf+A=Gg%]oWD? V0@@L*5GAa$?d''!T[~dh$5P3o| Y:m܁o!c%~ +?gk[Ge_6Pӻ0Ȏ"&۹P LԨ9)7\D ~?(Zȃ_4fLAZދDSe4{1yD8H}l,ep}3>}2Yt߇@W$bJ e%gx߉ Q_n!@DT9څ'(Ɉ + o.gHSJ9EwkO"\Fh^UMfg- (9#4yX0S>wp;$֬@hyнo}rPиP"@'h/ѢrNi&`UpCf&LO{< 6do1nų}x>OߴRVc>m?~6w$+o ^{jabGuh>Vnޥ uIi30m#c8I/xm/C SCх[ᣰE; \o!N$ÉK)$l&(|ұ+ĄC{/Bi_z/wSߛ9ڧpcEe'M$_F,E$ BX~&3edٿC2P15-(QTP)}aV7?TB+[cI}~f??!|F ~ʾ\NbO͓a>Ȅd dNn+y!C +~1o4#Y!?E9l{p@J5d2GF_Ncv_ +IԱ"/>ڱRwk>,?/1ueWS +M})}d`߱@E.UzA9X°ČZn! p Vҝ<iFTxxn >|/`= K :b~B`e Ė Wϧ*K>{h_09hCP1Qa!e>Lt23{&̧פ_7Q.}ieY3K ~J>_ڃ_E %,>Guխj9 ӣ Ivt¬s/T[Z٘A8|-6`"L \ٯc ~AxnS9\?( I'Ѩk!z4#sN{praqqgb ʉw S+M2ʢS @;2K(qϥ\h5׏P2Gl뛷ܙz?I[C sAΥ U8յyӀqv`NkdD;P0dpzb(pڨ;Xpۚ&,7lj|6|N]_cG(*O]*Ejza\rP" +怓.?L\-X 0‹4a@p lqH,%U.l Q$N#4\0Vm76N+ +Zk"VKX%N5a4R 2dL'd^AӨfg,MhHF!829NdxR +Q3QS3H* gH,!,B*Kj ̫ '%" $_#EHb>Vm Ө!,6r͓.]|2~Znqv1IVRtӡ*-~kvZTW< V^b8hr4ƲiY8Dq |M&Cy  Bo0@o'(m9"9M\j"(ER< 6a:(I:7)OXiP>`pb(;U1ݏfa w5,"y.yy+, U T wcRކxvAt@#= `=Cx!RD4U`Dti`尲`ebYDF^F, Yzbb!1B%,ߊʆM)[$$ G$Q6lLŰ= "y~\>y:i BO'A5>RkaK~:'C'5􌗛*?d$r +X4 ͋[SDD o",z'IF'<歏vjmId٢R=k%nSmN&Hy~#O`B:Gё#MJ(̔UAAۂAQ) -\_B<'%(IN %CD6*8yjiZ1)%͉s2!}kt[BKrIo&Udj[ S a#Zgr[Gd~Hg[اT0nSF*Bt/!;[IK'֦~vTV7TbKNVmgVIM؇ lXPh[Y:m)֫d5b VlN=ϩ*Ud6zg'Fb׶ۖ +K @rC~XMΌXt($@Hڰxڀ`fǍt\^|@\15 @]#}D|!E6sziaԃ Ii;(Vdc?N xEkh9Id8]5 ݇GD]B|~N: kO[7hFht1H{ueP{C!Eܐ_vȏFU~4˿gwh(W~qcG&w #Ѐ߻)#3+=PK+3O\OP,ZOuX#Ӧ? b!#C <7`jB +R@3'X9oO${- gA='"h +75DBEH7uaY*Ovc=%y_<-}_p[6}E"V3wT[jG}!Na+%Sƒ?27}j>BSk㘽X7uI +pJ X +dq~miXqzp4n"bς_Ǫ~놅mgoaD +E +_ m/{K(T!S#\b.ԸmTȖV1ylX`R:Pf43},pbP@& >Bpq#ᢴ}B}H>?iM%I LUk 'o*h'u3ΫD\u6OG;'F#$+ܾݚOJ},P"w`̇yCOR'{,8Dװ w@@%H5 q2:۶UhWe-HDBGl1eh5O>IҾCi~Ot@LHS%|F)%|xP$,Da&$ט`acG٨dL's}_;Myi YچwҞA|,iMcFuAڗYLIhtW#Q% AԔ}MɾT<[ "lHG1Ԟ:,Лs],HbH*V&TY \*c35}cV?KQճez@dd?dל[B+":X"bQi\ z)} F{bCʒ+DcEcط@:؟[=˶ǾB_y_X؇7 ¾@Wa_?B@ؿ"/PL]hC&|Dma"bg8Pgܪq Y Hva?K},@YYӠmbr}S >bC*O"EZ$6a !LlyJg_Ne+:t;C_$ScgCT10qԃI%1]>{<k _Od5Z*,0;Ksi΁e;e`e֋Ӹ͈ڸT:,db0I\kȄ}b,DY$=Vvl'ȬMgdWo<άX`.V@?CgBg׶"SQ[rz=uLO` }dT#0찤U%ׂJ 2Y?lJR/~~,UTZ%ԕ}yZ칝 +VkPuNnqQ~Â,u'{Pz$9K(A +Y$$~*%~=;~ jo98ZK?,W>?:,l!J d{oPԢ.nf +~nm4!"X?χ8XguQH)  ':_+f \ (Pq 5A"F95 ~#|:#`}ý~߿"Q}b~?/;@ +Xճ1ߡL@~Έ~YXR ю/ X#JE5Ou8Ko.d7SY@ .@{}B~y_!uD|){UX@t2n`a@LƽO@ Q՚A[=N[*Q.QQ4 +/|~~j>Po +1~ +>tY"*⾦p[k_/и+#TVvnd8*Z[Z jrP2F7oN/^sܟ +# Wsp_o~Q-BcMSyMUD>ma`}H .+jٙ©B2 +OcavT]C*=uglw3aXDۇ,Gld~շ:ۇܝ+gh}pUl 6H!|Rdw)}AA@ g姚ŕ3ȸ&"iĀI"Q%|wNN ,'5A!|!ի!|*D:DX>Yc] Y~E@ _~/ң0Mh܁۲-#qFzbUɤ$p5' +CEJ:i?M?JԽ%Z}Z?1^_}1~Kh%h , X-]bu@vv􎠢}RlZ9( obTKw.(ۼnspQ{9т}i}, Ɍ3OKcR }j-xo?ꜰĢP +i&/RGP[)l1;I6c ` Wf1oxo;j~b)ٿTuVH*ɾEɾA>H-wξ*SY#%@`djQЇ`Ł4sP +YuxYYI-L1/\,0 )%>w`/HtsFۣ ncw ~>A@D|,b+? `U橁 0, 2p>) f# U@Y!vF x5;X_w'**9MEN s@˷U CW@5 +~`lza~rIVt"L RQb@3aL#tR @XhKX *aTLkHPk4 ^1z/I#Օ $KbWbAD,B Ryv0k#Cɫna2Ra + 2L@tO8S @DU^i(# C!'Dt(PQA0a,?ms"m(.|S BfDNU8ḩґeՈh0NQhql) +9r8k +ՀwXԶ':GLu:, +.Rf$Pmy(C9.uɐ{$v^f/8!eKetFrd0ROW\^@2_`</wRZW4y*sXJ]-lfLPF5nbϰhM`8uh»- cz̦5-_Ρ0Y88Q Gҧ< MхL|0ѷ,Bȵf'JÖb[.P,dZK =`S3l+K2mC4*KAsX*x**2pH׈ $zJO4 1?荾i@Bk!\"Nx%%㸋52p2-- +eUET t#ʉ,Q6Q\YqpRh?SY1uշɇ CSX`0JpTc `XKOʌQN'ѠWصmm ̺2DV֚RŻH1rCG W$ nIŏw܄nP/ѺF 5jT5ڲ +p/1jYYddhBI͂D4#6FX.!ȐNh P i2{RF<(MH =wQugR qJ& + +-ɬ>pҤ*|)HUZ4-6]s2As2>YtlF=B5-KI%kSt?ʑY ŶbiEBcl)l$lZqje]\848\'Q`B&RNgK,XX@SY%d$JJK JkPl]V9o)AuwʥC"2jd !~1ħ X@Y՘dPaY!/YK9u}XG¬$2,Z}mk<|a6%P6*Wη_\N +I ֆEhN="66`TXI vA`2Dk\֔i%`Qxd(@* PΠ|?|Y/~9R싄k 42"U=i;lQ> ТE BE{ĩN aJtT@&42_xRj +Fe΋.la$'d'&8VCIm,Cd < si%!_0vzq3RL8Fzph \&pzzehdZbFeX`-й<|^3/9ȆWΡ +i 'B%xLТ~:iH(FmZu9Y42\pk$;J= UDL&D~ȉȸpN]`cJܡqtfF#gq\L'ІLXoQ6JyQH\GK"J.'˂z@A Z}q\4&-c=3X"צPڭ J9vw@o_$[G]Cg4'v1$J @^HM͐ D;tߧ*+CMX +ǁ_69+y^ c}KߪX_=5_!5yhX@q9\} @q2i%6ji[tؑ,]Que OH /YZW23>BxS4EQz 4|&֦k}Nt}> ,^8C:2EgS+?Qo--bP_))t ʰ +aݗ^>f*B[0d!/E=z] _t7M K>IS2V~h ۾kHL@p<2,aKm1CP(lK}$\݌ T+%NvZ*-amGأ$P%k> |so>0m w'0N p>IcE,ߗ@2k 6 MkЁ - EliqMbM,@}nvrSFZk_PJi\<ڏ'$IPICI_>]!ivIO?GC _Z,]-]a쌰,m\KU8#=WH!%#Zț~tHMZŁ+e߼FĴoS<۩6 OKkX09C(q˽h>`l\aѰ35vx}s*`l7I<Ό8@b`ڟ8S0Qz*-ĭ.;Ru)2mJ > +8+S.T)`5ݣ1C Ѳ(v~CWtGPq( -ߪXA@-!$Fé$4X(n&CT D.֪\Zhd B1$ +"̂[- ^#0}F  -ﲎ3AG:F67 0p-.v|A_<>cdX 9JLSUbA^_=bI*S3 |ħu6ʰn|ڥW-zaV)@JIAޚ!ֱ6%b=V "]S) ֕IW8]} UX`$XX©zؼº mc%d W<ѫ%R}CHyNږQYL4܈.Ø~A Bt.1']W vNKC*3Uf OB /N4' +6f1& R[91DY!JYFP&Ҁ.*}jVK:'x[m/lK[xpR/l_( ,#UǚЧGZl(o䗳&y!5#bm.v1døERP ,V*3\l@u5"bǠe80lL7́StL#DEa*;[o/ մW@@5x*]3tx1/]Mh6"L(\G`,7J v*sSuC7STxi,}QN8}3Btfbe-iFBd>}=$-*h|UM ?NׂUX q̸)^ҢQXHɤ_"4" Ĝ2RiA4Pl-RNtRﱘձmUo|m^B A1QF[Hb(U6m 1N w o04`ֆ(2#kP>PX%+vzhBs5{ =%ÎI|k6'E|ٝꪲw'܉/ 0[qm،TPuf0Z!4mP!Fw@8ϕ8a!/} +aVD$dHk.ȵKD`g|nΑ~yB+U"'ޖOLi&P_ +"tqT4f=,Ã3pkJڬRߜPKSۣtv&b`FTz 3g4Oҕ"<׫1a< dj{;U2ͥʡz7ڄf19o3scv(vw$f Hp3*",0xXxҞL!Ow_BГB3 C5+'̗:OTAX4 ;i FA&b~٩ +nRO*8ȔeAoiT~m)T)MV/  L.cn faSt,s QjzЂUzdXN;'m<9=Gc34h"a0 #I-."( #N&~%F0u?U)u |R1{qK}GlwHlW|~ oSI)of0,"ȚTPDِ0}R` +PeOP߹-|Γ(S(=)z)|v)O)~)s) +Ry).|N> Åorgcpe~*>T1Lu4jY)-c1fN4]*# Dǐr?22p},P ;ܟ#d>Oع?ꌸI?FwDܗk aUO/jjwF732Ԣ'VXX*A,G 47zL3s6DgB1ch>پ`> m礶S/)k j,Pk>dϐ߮훗~"'xMCI0S2]t@? +326DS"3_,@ZICCj"|'NmF?1}tn?5\+ln!滿 Ҿ.rձ\^b ׂ;MLoC젫= אMRj+ Ķ"y;I%ME&G&|,C?c$&&۸ׄ.Ǯ:òbo)3'M( AA)}W~K: ?Gĝ%?&R&-I4;5X4iQэlj>^xEQd_ \>LmGvHJP߇HǒG8l.Ŗ^zP.Hm{y;0dH&mn\TM$:ܢ p l ;22kOTʍ2viu;k n Bm,hj èB #!l"Z"Nj{`WVL=|e~ 5c*CtaJIN8~M5 *eZ\:3eHByGHL^ ĥVb3m%ZU̙^Uk_¢se}g)J"ғ TO9EHdi]oPH?,F5xA"^8PtXh=Xް6r}8 WL<_v-F27Քi\DgNBSJOTV!-Ae MN!u.j<.bzx"e#ɐƋ uɃ)$ʳˠy՟H*5)x#!}h$ÃR{"Sn!2 wî۾&,(e|G[]Fp(VQH>ۥ;"k{HAc!O"ofKGˌ{HTb'`;mD+3Bԗ(598U8tT΋kn֊ HGkhar +}Wd5>XNL p:0>8,6gR@eQ.OǾyhy3~QM0Bo +'e)]A%ʍ:&Ol*5_[,F[!R] +^E^K!D + $aE9g%,UpR&­ &S/֭\V:`t#all ۶y9Xm]#{ +. &h"!Dq=Hl@"6q2$M 5hUXUIs + O7Fd49XblۉIl[ۖ] I:v N|Xm`Npm8t+${Рx (tLE0 AuԹBOD4V':/JA=?pA`lćFE h([#Np]6lZ: NIZRBK=C{pe @s%@h VЕzb! /+$/88,*;&V#MMM X/Z:F*E{X`4zlrښD\YkfB(˨'*u+L Rp[v~K^~?ZjX@h - RhT@0< CDo5!( аWw|W*}V& 1(dZ@9Hma ϐ֋Q#ZHF!'Ff$yrd .ix3j6C޶I(`P&DAOX'j= 0Rh@=x$} R'6't'(lccv&0>oC;&Lh >Y};*0*27`9AX ѾQ&D`zuctͺђ˺|5x k3rQ bsEJ+!@ᶘ$pDX71"=H- $n r6 aA&x0Pnf*BjWih'ݖ iu /ҧ1u&2=kVݱjwtu&"L墠xʼEXl.yؠ +Mmagɒ&@n +>2@Gt˖FX H}#|W.p8sqI|ez@-&By[>YJF-Hz/<n9|9cX3%&bQ?Z>8pw'6I/+2^[Z䏀Vtg䯬0.Ft#6/fm%$~,@8?FsP8WXCq2)b&39S"Ił^hϩb ~,Зw0|*ŏM`)eNE9! Z??L/y  .h>uS2'>R+Df3ziS3#$4nɱ{j [Bc~jS?H%I+D?vñψDoh~ b~_A|!@p+&vDo/t7C*\LMrmՀQë M~/=+#|?#' |KԿ\_^?K@G$0?]}Ϯ;9$ ,}4Q?%֡,]h찷[j#J`<>#W}k_߬]xAxC_5ToP7&>#wёFW3]]ay p~^!;9Lm{Aq7#1gcNdS{B_g" u_~w_v_rRcFm'6Kv<[պU]mYX*i +j=)qHuq˔*!3R)EVx$LdPP)k)Ә_#~ Y _/k/0ą_ą[ o_tcD~{ _GʓAkA4}6㒀"n mHˊ!)(_A+A2-5p afXq39r 9}5sgߥ籜# }JF} ݚ@3/Uڊ9 ^L!Ry ,jv W9 D`Vj~=9bm5G\ЄF'~"slk'_k?&R& A~ _ uiLq>l0 bqqA͌,;[s)n[MlVx%! gz󉍌 o @oL3֏ִ;`]հqJ V"[24W tX.Pfp-( eNщ#N3@L"("i*( Hʭ۰-n:M@\,/-Pa/ci|j3,/ BVy4TM>T$#k%G+4e(C4YArr!N#тE>rEreYaAB~A] +t)#}dJ`9>|U1!#RfơmYBX@(~B 2/MԢ0!Rb5gïyBÉ3(`M +^ +SPXV};GaQrQCACWDD%5N@ T)f`vA#FDOPW`O8)f%xdY=M0ޠ4\`:zb~҇#LqRuÐ $bH8 2dLRVsOBȻ5VsoJT8&ąQfϖ: gSvvƇԘwXep](%J +ýFGe}Vkجd8<*_C`ܨPPɐv&HY5kU3_y@)JJC(-!Pffzy򛶭X ljc 21K5ۮ @[FJ .,Ch[KX5LpwPbHsNsx\4D-ұD@$*.c D+D\eCʅly$ c0-;kV߷L=qo9riz^}.X@t Ca  p;0:ÍEþ~/?lNRs2ѡ Hwē|upy-r܎=_WM8p^a!Z$dXԫ.Fȷ'vvHO~(QEq+Appb0[ +Յ@⊏7g'5ҔA=Z12UU&o<=S.z0 []:t\V:F(pO "adKN< +=VC. /*ѢR9z^io2 ~-Nf|(H6Y\Kjo9b #Mf¥*' [ rᄶz"2ƵxIrnx U +gLrk# +Ԧm +\`-%cH3X' "Tvh @k\q @TJ4"YER%+V"#.G.]Ns9X\/y3iGڴᄓV -.1XW0B[ ;y1w'kTj¡15quǢ[es)V2!^8A~ANr(.%2xA6㶺|XPZD^y\c~C13 _,0α(c Z>L@IS qX,}㐚t?]a0:Dvh6GV< SKX2dx ` (@ QthT` pA0BA!TVa98M4mʵ9ăvS*U{\8.38Yy'9wމw"rNG&М{ڢ=[Ίa-[leMX-$-[^fBer *e5W2iH-Yc/R1`3v@ne +^BUxߚ3e[v֙{p: +L56e,( o F²Iepo8[tm$17>{RbXup:uooHNveY$~CBHoSbP -p*XZ{4T~[,|TI Uݔ1/RS,RUS=asQcdrNJ]8-5Oi(%:+71U(q [-&NGs˧P"'D6]UN\qUq9PpfۦV 5+';SV$m7`o飲~ fRҒu͒IjiƅͿkׅb`|2*~to4iV j%kVKWXie|Xϡd#R2:eSЍ˽*Z[$YO/a)[XO,zfr@)%cfOxdK4MZѺYSۆ"}rX|?sIzRi[(iTP[SQyª-UmiW4hذ [ kAA/oIOOfRoCyw%`XLG.:p $:F*6t6;bßx-8<*.(ȟaL2J\\(6VP H  +]u؃xGl(8_snpWP-퍪e~ 2ɬ f8savxL_d^\e`͔a5Ԙ^b)EW} +V * +fgXhWYh@W5U#݀vʰo8di6F KB!%/zN@0IƤ<锑Z9!N0IƳP_e!0.)K>iMYo@KYJ7߄ ?a/C^UU)~°{ҁUhՉY+LiwpS( Ibɛ+O>  XrAaB0*)j3}Hb 쵯*Sf2daNUjv*·22 +`wT + +;<ܦrbcYU55NvglzUTSљ+N.rUS^A=!` تE| b˟ȝêP3ɊGdu2`i5u!0 Z=Xʔz! QCw#IZ +,T'А/n(!YzT Pq- a5'ՋT 5\r)kUh2m%%}4(žB"Pۢ9Db[@ $N +Q'$/IT" AQgہkP[ 㫪QXoA#vd~,³a`\|ۤf xm`>y"XQ&-R!a@idtDbR?ܧ#spR=ed*L}RV a%J0Ў +eF,"`@ VvIc"2dD5#j2&"ϡ#>c(QdNZ| tWxaAbBX@t^ iD?2 J*ȓ + <Ɇw?ҏlP*@%WYz&d@0H +PGi I̊ +$feL%_+H'"6h\4sLD05%:oAN~ ZjTB8aqj:@hsrD8QB;@nt@s`}ܒ#?Rҁ-~mn}L=T7+J`OC +iرh[90so@-NJ6RrbKcd\8x8Q(,<`KZ3 +zLY"jrv`=:D|*3#LBLLVUNxT&ɭ=U7Īxfg3z]U/iT5?̆ +-n67ɏ{H]>$ĚlL)t(Q%-2'L[fz[c.EѠ:'1]Giq}"Ši +?T n "^@)6'Bed2 U)U6#+*Vr L8JRY T#"m[7J"b7pk{LjiL-B%Q'B,6uƓZѸݲVGBkg#P'LŦFo/DkWJ?J?aVY%Wd`z"n ?` mrM.c'IJ":ZTšO~n.măjqX>)Lo=>];9;Iǣ#W=. /)ჴ5wHD )TP:-2![\roUF ?iϷ]ϲ9k6#>#& ~lYF +nAOz%`/| AmPNy%Oh#AZ|E ~edz=hPeO$97( +gYOZ׼V_ʄyhK `y aw=x\:4L;|$M$|Wy +*p +~ jY >SYk<7{]?3IAmU "y'b?Z$?Bܠ1E""z( +ﲥbGJc=|| 3[?ۄCﱷ0iY%&tM*%'{&8/vYG=Pvm{0 ~B:̝.E,]RIܔ:rE"gK#?!KPƈrN3|qm| +>+8 Jxq<Sߘ1pYv"TT!T+1J:$g"xmLOL,SGPT3aK#!I$%< ^[֚26-10e <2`p e3'N('bĵʊ3c4T_j5R_1%K|*u!Q.stQHP M8K? "!ȽHCp${*RSEVKSsY-lQ]%n}"ż[lĹX +3{^bn :Zźף#+"!ADH!+պ/Q0#@{JlJD8615|!*"ɯ#ܞ(~}j4OOm %3btrqp@B4Ő1?ĩ <7-c^KKXHpcFǠؼG G oA\vI.}Sʠ<rI1XDhXGԣu슏bbnY/@_(MQ۔U<D:f!+dX + } +\ !9C%AMWLR R$kU>lo\1@,݀ +)>j7jJ] @ +U< xRV`ħ妜QEλT +&HD`Pn(T2pAfXO@+ PQ1Ď?5:X:|ЄK~H vHhVk| ]J*)`?NIQH#n*XRK#<(-*a|%) $D!^> ++_Ե <}*vE"J"I 2T|˱ I\@S0AnIUD84jHwi+"P|&>lx?BXK9Xe +) A& +WE\YM챆 Uϛ {z1иm㰇h\şt'Џ7٤#Qᯞ=F:5Rl)D0(bv+]I7ʥK\TF(|0 <+m֜DuN˃${?(XeRcGeOcCOJw#.0X_ -%d@,c3M{3@*ٞj$@jVbCПwG#Y}ـr7vTҾgӵ/ҳE-x"~X?&j8K,HӈD\' :b` k~q\eIlx;_%vzA|L~f@g7l7$7|9uKyLҪuoL +p?#VgvlQ'=6.*S(*,h0O!ßᷝ=P"MEol&x!:Ny"4]#>J(ԙ&s?L L L\IYWLޚ؅sB*MH>I foBhԅ>}z3}>qE++. b.E,Bi-Άj |j-=,:[`OwiB؅ 2Q>Û~wR + ںX +a[#FQ]pfnn q`aZiii'L+#-dc_Y#aXiU$cZ*Ւ+?k3 79>s>UKNj`qY-$9/%ʔqf]כ9ٸg>L{*? i$_ؽ^ٖX&|~g~c 5 g~$[c[ aYlzN +/ß4I#+aƏ "ӥs1Ef<2$F^_eΌ>1[0#PZ4-*(J=!ixLi "gaKtH`7wx,|Ŭ#i Z^Pp6]AR۔Y@GNUl +z}E)+ceuoY#c&GlZWKqrTᤥ)U++QX%)b,J(`& &MDQ>N1)1RyjMpR%C~CŗwnǙ9LzCձx +T(@* L<-=+Eqna `Ku@W< *t֪*ܨnm} +h: %sv/ggKH5,HhsHΥ>stream +UQ1SN[}lR|SH|єǪQU)|YAdr6Nhge1"XM؜oxBۉRh5_Af}!)q=w~S*i $~h!ij<&PRB#I b  +%*Jt.3A4"ֵFL y/t;ylҹߔ)U˪:esVo^kAߝP9{d*mzlFjD9tj}`ad*aFf-|t7jXe|im"jZ#1&¥z {o1 V|a';o7 q>V7uHx@Oz [-ሸn(uʀ:ߊH@PU;5e-B6w8P%mWG 'WO07ѾR͐Վo Bwb,i:rB!(8nQ@46d[uKF>mVyL|iHVc3*غ";(r2i_wm(p +U Fm *B*u_! &=z$2vn+~ߤ(~!wӁħ}Th_/~E?"+4$}%e9mMy QZ*`nV%@C\k8 +sC،5w/0++_ʫ}#l3^A}훹- $< i2 +CDB _ -=#[9<:<,k.5uV'M|%_PZhqJ+:ct%g& +B@%4j,X U-Z{#{ײZmJJYm~s[ޡKTU;9?N"G_"'#D exա.< +pbjscm14uG+l݃>o$%H2q9!rZ + D }v_?f@N,܉ +qq#>1]elJس"#W\AZ - p+MQѺT69fc *4AJ~MXq2!ݙt?Ъ(cS=+RJS".0 YMRBNp82+tT[+@|Չ"G"BP K~ " +Ss`Sfχ hBčNhrNlV LGkUB/B%#ُs:: Ï{ Lsn@|Z"} ~.!3Lfe em@~zsgsqQz7~\>JhCW"EбQpM';zDs-]r`hBg JS 'j`V6Ԅ=FEЙng.3':{e=P<Թ2{Ѵ'Ava$dHe*1V">1Հ}"vcO]Y8~(|tktfyż9n6ijgyok7'᫥Y:=*"-,sαt:R)wtD#FWly,2JX^F%Š,Blɬi˛R E缸7*r?VDqH|FxݎϮWS.Z,{qFs+40,/ģ^yڡ%`XBI;tĊ6Wm 4s(p:x}8Q#*Gfy7 %6>pj7)k:sի2k'yC=rhM4RCL#ƵHKA& FHFaDCi +7UxF і"plGAFZx$Wh3[1qlB( *$ڇ$\Ht+b8@ǣ-xamj7wD=(Q%I%(L lDF5U4\PT9ot&E~ Ro\s9rK9ǸB9GC>$*b4KNH)xKY2\8ӫ0qn6`¢ nPH(jqkRwl_NœMœ w27hjbJTi?KR,2u(Q\LY=W0q-P +ԙqŁVz)o$ؾllZHMp[bxt]j5[V)HxI u5-~dRQ|P|[;%&w)U2H - 4zJ8e|Ǒ1{I-`[Jht uRҊT&RoZch@Yy"e[i-o_tmU((Ы1M E>7z|5F +9@zT`nNK $S =&&SEy]%ymVo~QõNs)'U;A&ZHMdlTXQFPB^3k3aMDr.r +xpȶ}*>15xdJ&FgˠN@e}8ZuVc|bFK'!bu`UoеPQvZ,DpjKJ0v7| ڰ ,'zQo +/ǴjHyZodM>kEP +o mپ +)~aP|TP|1S4}rt֏Uh mЀn`bD*%r&O|20ϰpr +n<.IL 5fU*>A{/K{lgkR6B Z5D(Q"" +y`ZP(&Z j_]s=NQ}w4h\ĿwUzpqYF;A%L# .&ϛ 7~OO A6Wv>"hpYMC +P8zwBT q"AOD +UFecBd)Պ_&+UީM|B)Z4]L|L}EMXo7Xݸu+RH-6M/lHb:R:(?ZV__= ?{N1L|+2#p{ 0y(1Nɯydhq EW`, +iN{25[NN?Vv[ОHl.=h9]4fA New$O,PL#N*fu^!c1ygƛ;.5UG g7742ŏCi{ 1&Г31m2Lm8s9}q5"TIޖ8.@S83 D#wh +Lus2wcKk60e_χWtF)xa\NaCnŎéƷ \/DT-S7իN'ɋd`O`J0r.F?UCǬmD D)mL|u%I `ePN/wur ML`J-VIQ%@xTn^0HK$%rS$j< ~o{lB8 po+qHXNI,V!b1Cb CNxc[E\BnKоԾ HHCk~owΩXdho8چme`Z;b;bv\Ѝy+N@A`UK;]gE<&28CR9U]k2`uh+bn )7x|EkGSƎ#1U9g*tg$tZ7">+Y}Mi13=C3&־W־rH'X ʗr $a){>r-)FK:H4ylnKz*K0%&L #EhBBQ1c>dCBbHM^+AWgL*]9OXyʐtVcHtxuIOJ*>!DDM -[N[2 +!#z"v%r8F +cl7Y kgcK͇ng +hzRDD(܎\lB)qX@FPvGvG01.G=))9ĒJf#iZm4&qD M6$ ,=R +BcG$8Zm)ZmYMVA -҅E;h,+"_ĬR5 cJRlcb JʂJƮ#x!g 47;kF8 #ёRK;C:ֳ@(7HIcL:*Sȣ M1%b˨O/Ai"XԓzSXGQƤJ~B"w2)uWM T[SdQѽ;or L Z4;hDgSg.N&C&2 3Sh'jj5F xDꃥ'&T}RsQJT1v#b"oGkf8 sP6PLѡݔ þMg5LcсJQ+V3*mpdtxSZ*I͑VyՖX|,>n/QVcJh!dBfP$P ]zL :ؕt{$諌A6݇΀@W>s" ]A)qkr{5U:6R*hn) F>@N-Ԓa9bΔcsZuW%-h=woO}':Jt<.:Ĺ`}(( FDFHZd|zv4Y7ZuHK%-nGU7 Ct]ڶ1fFw&: kFOUzCLTj22$F ~+>PG(瞞탓umR!koKQ|q794SmxwZD1v'])R`rZsiz{x:rd mD3~"ݺR5w5+~ض~J_!P=I9NltU̹TI1|3d}fessmUEZЛ  y{J\fȞVYlAbu[߾"7bx%QBڔd>d|*!Y >M4|^TPUB%UZ:XЇ}bZya"Q-ujgt,_Q -URg0I<TSF%xs\$u?:T!Pq͡PUb F K~+ɽ).-S($!(ƕ@;IZ8sI8T.EU:Um UZ%8W+hWG9Irgq__vOV_L_8şLX}_"{,#*XMbQU,VZijXy\jZS kMJU tp|dVP_3EŗBWL{m<1ycW<BI8TTHJZy,L4TG]P6k^&y)X󪵨$h"Iѵ:ry1B:ޣ%IH|DM#v$OE]e+"=DDy$Ra7RÔa$ĺBmECx e L(K(>Ӳt>QP$P0]y)}D@"bbuqbڻD&Hąp!UN@|QY<<7ңHRp#z #G@KE^>04/=EW=zm!ASfɆLL &9 1t G`dB]!pj&A%],C +˔Q(زF=Y )W2րJ&to+䲗^bVjxl^)ӥ(BBobf˧1_ŒO;A6״lT10QQ +]Aʖ-N5[vxk9)ܱ*RM(h^#IXp9 +3O}! ֗⹗1DkL#"l8HS)Ӈ)Vv8/$i0lЉv @ENV{d|,]kVco#k@ĢAOEH, šJlv"1/sLGDSp>#tҥTg&Pnck(Atx-ƨv +ˡIrAC/SrCκg,'yg QAУ jJ?拒>%r(65DPtZRnq7*\:sis,gYfJG` j\@ZLt +@ëaPg&F{2\9DA#".jCӶ +Z!wM qLѻjD XGNI.!6'^˧(  d Ia爩ЭaQT1W)H1Vd{>?`??Iii#{])^:Uh|!!P%Qܷk7gIȓ)`0 b ȏ,><N>!W"!2T@XeB 6cw +I MMr^3>.:Oe0 )]˲$S89N-Pɬ+)P fhU4ŬLo>JX'?ގ?enmQ.,ЉH !UCH')4V$=rWPдbV@p`5);1i$P ƘAԣڜ-1\B,2 +An.:@GR7ݩ36{3HQMTSiLU `"@&WЗК#XyҊN4|5 +?=$Z@{i߹/\̜TBNy:.Jy,YRJʢFc3Hq;0բSXb}PW<1c:G38>'% *TZGx0+5a|W*⠄2C2䮬i:(j8Xk(=Gh(.Mw |}F}FB:N#(`qG8vG6dXnH)LIEHT4wdFZ:K/WD@0qNz5A,䪃GgN\|^+D\|s|F¹̥յ1=1yc< N+)v]vB\BӫI Zz#ykU4n%3n@$nϠ{뜒OJIΗJI4*$&QL-%x  }QQB)"~DErHr ؘv(c *T0xTfA|-d問+ N6jA(6hmUiNȤL$Ey%H388U$2A%oJ"1f2R[4(m 9>+ܬI5!l#] ɠ~JA'*pN*PȢ,#]{lR&V ++Zk^gXX@EC"}W HF﹑[41ʂ,) Dĉ=Ҭ!3] ƦI9?9Uɣ!SA@`/dFZМ+@?Iu:*00Ozr+?|`y%i6r[jJjOE<͵*R/XYHĸ.$E Ѿ?~ْ8NSXM` c5p%=V8%$&5[346t%FĪdt$=!K +)zg-t 7( K`2-!ݭ38M#[FىϺRB22nm22G{ߙ`V`;8xF',:-jxVm2M !KpѐW#9-Lp06Ӄ%' +Pgg\. K* h<L\@(dq:e$I-  i7 ߠNq,9J0X1OECIi#ɽ?׸R|O)J䥌s嬎8y1'"+x(w٘ ;\aqZd%@_ T$<<LӜ)()͔hc._:7R6ay^'\I%`msUPR Tsa{, \yFyGtGrz$=SR 9%9+PW~wf-\v4KwWFAWt\4LvuKw1akKyyyL=|È@<(ODWHg`7 +-O +DOk<{,1yLwbDvT yЙDNғX%8 #Dݓ]rDuc +^<pzYp.e-8d66&qB#[~0]*g+}h> >A)Cq'c[)eqn+C*F+tZz5P8E]hC l]"qr,yl:J%s< lDcbYEd] Li< P;JT@ +nGqz97z[KQa z K;[:@V&j +*Ɗ{Sɹf'5y۔rUӡFyEgUfȞT4⧴1\pgۂكUQw)4L<ޮHာF|h2ls«s4\J42UIA;bZڅ,XMaTYR՘@)ʴW&W_X<3$n̹8t|ͳn޳X-X~l؅n9Y  )eP-IĦ9`Ăi&0)<<cqNyt&륐,ά*<; "cq9,#YB3J;<<<.`F:[+t{$1"Z-1=VS&-Aі7MG^ H)9Tv +P%%><ަfAB( ╗=f0I1f2j)qvų}D}U]P +yF G R(Z (v)}<**[W,!&I5H $U LV_(.f/-%El"(88#TeX0C$mZg*LZbhށaөμ9f1tBdquX + 0hiF׽Ije~٤C!M<ɉbBz$uM^-D5]nNh`\Jp3$a֞7rX lxDJ="֢|R Ctr?tvF^GYHАx@HZbsI4lmہ$c=l3U@xB! reT5m9Zs5;rPMKٽ۟9R]L$BKfB#p`; +SL~[b[VcOI')}P/8=:ĚC@-#"kT +uXcFƹ|^9 l8$AUv0{jؤH3^V#L*hGن-m[}C yNd. +- '15*{l4RH'4&N ˫@U HQM"kt`Bm^q|Rw +E|܈VnJ7#LۆAZ-hB][m!h:<#v + |j#b%cJ>:b4-\6$Z6|\4}$;B5%ATdh +0[J09QPHJ`Ay)~pȵU0ȹ@'ըGS7fQ +B?}o*QHۤJq1WhpD(~kAi0㑽PSkީM@2򘁨TeT +:@@P϶e:C2G{L}*FtD>bUgOڞ>CDZ!{&.UF,9HM\B_X屔b;IJZI>=ƄlXͫ2gqטSGPe({@ +>8*~,+ecۑSMF˩*nbThXʀ~裱&W8!K;$?;T|lm )2=m]~&rܢ km&=Fl}H~fvkBR}j_勞=G=Ev9赓k?dekE{|5ZnSbߘܲgܲ :ߖAkv@y0Pv+^;F_$r_(k'%rՙ/"ɵwʵ'8kTZ^O^{αoIE!s1 퐏7vxr˺wvTU&tGõ3Bn Wa!.W.w T8=_/HEvވĆ!͵;rk7d=3?JwM|τ{1=7G$E71]  T3׵)k3Lub1#131[;14bf91|s` +@,, {ȜDtc&&oh {|lBɒh)sмXcI]N[vOҌ'f݉Y#"b_ +Ob0y-ٍC%K>R絕z_~Lp'9k#`= ؚB3zBLHWA9 4 qrLQ_EfD{DFwJpRDo7}EHJJT3~"Xy}C D|-904[3@#( +ҼnQOU4O;@e?8q5Rr%d-@0>T >&(AW@ABV1΃sVb4Ⱥ;)ħ؊KfKNhd~l (PE$qAjεa=8_鄫hÆB\X|ΐfRt؉_8n `8 ** !*e4mԔw}8@ rWbi=" DU_ع!|C@DK=AkVaBcYW@E:$:D‘o+C%#Y0v7ܕr~{RI]-p4 UB`c`t5S]~j$|J +T]OO(xRK{4gK T]h~2 !0MPhm'@xUOÎwzPMFz$8C2D|XuփR~MVPd'!#N4W+Q`6ipv4iRJue)'06\3: A=67GIUDgh )Q%FҖ(A`ȹ V⏮Y +z`mjTԑYJ&IlјJR"7LtGsn 1X.< JYQBAi3%9,y$c~boZT+ }qC*ӥw*/b9!bE$LL{r2uH %fW2Nhã3y+`׬B,W3^Iֺ(}qa kĕ!Jln `:e`9ʜ({+-WbB´[lj;0Mic(99$$*1)֤ME:wc5D+eDu:k|ħ a2|2Y038rXGܑ7醢@jjc)9t q. Ք^sD.j8JE& {V|4co2cv0>[$VU&Xa%MDuI!zXA竺'i$(ŁVj\ C:H ʡe{U42P U6 y ҭ1[u6b { +hm +߈\? +H[YӹkǡZ'- BDѧ>5r.l[ཌྷGzDmR'\oif 22@8/gReج\QY#{¯XR"#6#hN{i"P`(o+='ִV|J +ݴ&& :[)siJ4cLJSNK:I +{PalcYX>L.C'YsK>MWf9a[ǂ5A7dG4>X“iN @^ʎE.T]T2NBe sf ֨ TU^w#ao}Gb=2VZFHr!\ +GIN\(R!{*kȘ]5.OeU*t@ {ZM7Т[w/w*!# L+qZCk1$ k!=F;RTsBu'N-f-'+eJ tx-?5 3\aWQ,k]2opSǐ=&@p+q[?0o/P,#'dX:|ZfcFu/jX$5X6ڡ&^z(É"ugYմъǍEmj5 +8ibך3_|0| +^ |E|HF +cMlUo;2F՞$G||-4R0:[QzF F-1<[D~-(q G(7 ÝH7,Anɣ W5O+\İ/z)Lvwƫ>+u]gQ쏎3ܪ&}ʾO)*<^&>C~!e/F\nr.:ńVvJ';s!اeXcmڑDd!YM~~+~L]!ki΁kH 3ڽepdc-y[ +e&TQD}d$kse浇tk﨓1 dVkZ$c$~w/ Z~w|䵇|=Ɗ׾k|8]4T^_뵽z^; ^nTrʵO+J=\{fƬ?|\*kkw,}Qï!:_;AD/)ubub`tbFX=l 9(mɞx]4/$0wnQN7jhڀ]Dh $cy͠l٧"}C9Y{bxb;1 U{Ug(|8Z;Cb7 {`}ڐlM&M4I#JXS*U0# B@EhA6"%k9<{1Cu,&PȪզhawZ[oxa ßwQ +M!ބ^\,HvPA@AWPzic_$N(,twB=N钭PUT BSCnE +jaz?qP{ E)aQ\H s0<̓xB7Y($3DyY5RDْ1C_@s 2QU$ uZJ;HfQBB 6/-6QsJ$Qe$Ż"e$"Kb-Ĕ) =X8" DUS#mxe4e;]دeZ4FOB*<1z}JlE :pIB1:q* ިh &t0ƑjƖvQPsխ?)\9(4?i#R].^˴xヶj$sCUP>{hbZLDML3:4n W/ DB?$ɛ Htt0n6)1(&jV/9lZH19LN8 e9/!Nss_=(DD9|(XIP)qUPS e_"M:όD-~.2B)Q1'xM8}+G)(3Xj\7㓱Xb4|AqVQÞuЉ[l(Z (lB@CDMrB({:SwLu 7bw jixl25 dX(S %-2TP]CKuStinaG, v2tBH0b,. +]Il'Cm>[DSwF +_=CE-B  .}$63601=g͍䟼' y-=J dVri-.v(N]XP!Aʧeџ0-U{)=׻Ŵ{qe[:Ih'G`@dɄf JKt^=|ʨR\|xJNR.E} +UX^_]Ɇ_ΝD;\V`N^**Q2H!Ҍ.C g-> ϡVThСP'B"RȠJ#4W7SIȈSr$ tNbQ+\RyeTrL,0B"JV ׁ+u{~D~~]lq7Hvb AhiĶҹCd + ]DY Ǿ N + {rQN#)/TxhSi8g XEB]d$#bY)!ύnaa[[?H ~DlZ i(P *gɗ5r䍇VTVt%a03VȾM׉Fc`"dV3o HFeK(p Pv*5|He!*N >9ua3zohLQk#[dC2'.f_~B,([3'/`/L._!  |bЁ?B쁯 c`|.vB m\'4FG0HC MI;<*2_|c[||n>(/Rl_R+ | FMk>&AcN`uPz14"DONo;IC]X|/(~WuaDneQz[7y~2< vaYu H{LW?5]|qE}e}a,f\ ".V`dEdmp /i1O\H=]dwTY}B;dec#^wdcdtgq׾)^h_{|vtP_{gd7^G>bK'f!fCtCX +XMb;0~rP +`(QT/@kORm+{ ((Dn5  wsb&<<kl@W@)ߺ'=тB1h}LhPҷe:AcSa:p Mo] {j`WR4$G(` Bv9Kc!iL&LJP 0pC.B[1@Z@P GhVT*a1rcb}iQ:;hHCjMR\s 0R'P>a[rd-y,l+9bBt(4iI5G ŝ-7,R(1+,6D1cz42d7DzxlVw6\z A4B6iۜVHfDAv" Y2F$.ٵ lO'Fw{ѥ /\+D(Z*) FC)>ga?H_v`yJ%Qv5Zr!4 qcJ#sx[u\a=HoUg'@.c.F(֭waVBsYVjԓp,OQX. d[! +W4VxxH؎Yt"Jlv5w!ုy͖].kB}yA4}D>}'ְ9*:^JӤ8s#<ҒRyCS,Y&OShbR!xDa\=ʗp؜JȲ&adqH7.;U3TIa#2(U8+G_&)b,@ D4tOkȏ#Ҭxtgxx@j)a"YaE$h:k1B,g_= &HdAg%" n)$]r0i3|Wi|̖RVS:)L.k“xI cX}12.eW48: 죕QlDclFtIQ$ +2T[զu:|>*2Ŀ pl#qj;bRE͊&NJDę/ň僪 LKrI7Q;:Xk#% ^T|*D |&!(yXaϖaYS&ۭD$lUDFG(BT` F5FE!QkSdqkacGql4Ju$BKJHG5##zjWN#\L$(.IrS&rs( +d f"GDZj.2m`‡s\-Qգ&B| ? TI&uS,˗WvoEK-Quk C;cMn1EC`BYU M+·1V{fV +nEue%EfzvY% .ԈRORSim(e GzmSOs8TCJUk NNu% +n(ASu0[>čs__I`\08]\1&`Lr. +XZ FQ EjYEMMj\K0#Q_#t*IbHӴJ)NN\UK[?8~߳! ҥKM_@&fAfT8av&%K;'>5CFa+-pX2aSoI<+4y,,$E@Kծ9ρ:N !>> r_5'Z!5;NM2g"ħDQ׃c}rZ @<a4-[ڵG:Ev*ijh.Dq;5LP MFDf%=H4k&lUH5i_逌J!X; ȥyPg0l&QU ^*ȱPE8W2d`MԗfwuT>^.WZ-Q?d&`> | +1>D +H4>4`"dwyN3@UBł*yL5V""pq+&B: 0tL1T+~QU:G +KB\Cu 텿dc1kB`=ub!z$VJJ, ޳( SD ӦR J`8SD{򓀋g$E{>I7PwNy搈*{VY ỡ7 }.DBEԎGw+c~+s r(SJPFBcx3\SzȈ.՘TݦdNTV_BDi.|֎ Ap(n 7II`ofL +=]w?(Oyز} +i2sHڨ:bVUB+f!5F&HuKaX*P5O9IvS~ dL*H;W7l!%# `'?2bI) lmRoypuhw!|/~v~p/K;yA_ +s:-JXrA{ǥ޳ߤWsEqksQUq}y\Z9P5?rvce5402r?O1K7b!M_Ⱦ8D.6F\U14L2thuڂSL;.Rwo ?81@JYbKP ŤQIɪvЖ`e +6EN)9Rx9YZ J3Bk@K;W2 |J1M an#͂k\ER-PGLdYq?UVwG5[MˀM:G5//q"E A@9@nDHc<4?k|&g@;$SaH#_4Ut[s^KrxY>~`T ? +7v )k ? + ل|C9?F;ل_y4?x.{Lz')EN5/5 H0,࿟{ %c +G(2@wuت> RIˑ>e!E'9A55{l,҈r54|\guS[Qфξje_ )_Aj#\M-{,h?([V9,rDդ ` o  pP~h}pC2ꎈN#ѐՀA,m_]GkL@ RI\-t1ǎp8uNb! ôIߣO2֯5(t4-d5Px<.+"2RR τ[@ BP#Ac}@*T12(F +2+Gc8'\-"HBi R +h +HCbcZA+̊OT[\%zmRmmXnzHqfJ;gaАa\"YY d("i -Dcd:PXxf.R^IG4ujpI; ` Y xcp/( kDzDr8CwQ&FOaNZTB'tM`5aF'I\PcqonogE#Y@QpU4m#cD=7|8.4d&. "C +a[zlC%mv|+ jC!Y6[auL.E% dP728*s kX\C?GC4%P.E, Hul +[AD/c"#[^o"EEһF@."E5#=G^EY, p.I 64)uNH1QOHTͨ^Ac*eT݄f$⧄,5J:JODBAH Q@l0:35nF)!()' hrDLPQM)(V"1*&>Th!UluH| >)Tr 6?Ʉ &X$R*,6 ]A dIX:L!8b9$zyƂPHP/0uϪa-/o * s9*Nx$krRɩCrX䔭. >J7 +M3=}hymhG&eZf9&0֜ɀ$_Hvj p.A-I'}Th>j!YlCPe*:Yt ͢2;{PuKS>u&ZLK!H'Y`U"e)@K|LxAH\8Ϫ.b-oC+o أK0g a?Du6Q& +T碻 C".rQsNR3H(׌QLk'1I G&| +[)8$ihWcU*C+!N9)oBy+DD"ի4RH EV[slztLR\I{_kgllLe[Hc?$j@]&9deJ0 F!G* +z̕Q\7=da2XC@)p(5XUfz֐v)0y~ p-Wְ=6d4PKJRLm!y͇maD]U:+,!&(fg2MAV +FэZ4z" 9|U3|P>l>`؊b-zjacj;NZW!ij.pmO+lTNu$@Z]ǔa[^!zQ焉b%"OJ{RnItfG)GYfXبG:1F7<,ޠ(0hzj1;YWnc*_bR1|cf%0 +Z]G^sHwb+W|>"|eG2I~OAaR=p:QƩsF/rRD yРF[႟)-_߃PԡiwcPksj sNs{2>1nBO}-os=TG c FtAA5 +˗OEU Y/c:| +xz#J(\ZQ"=|jDAk4>++%dJ1ʡ^&|C | ~_@/<:U'OI1hD5Ah!/LP[ 0 +  rxmg6ŶѵM ن0<!i.xgML6\G:z1y8_j qxP';2RlL_b7Y'EB<&btmX\&'(ErAfd!'PHYr`q@gvIhM؉P:B +*y5+H]ڤ +E4ɮm +nXd^eMX6w0ةe_ %+y4Ê/jH;#L{R ͧo+ mK'^h*jͥm}Xgʠ0,"eL$ZJ`P 20x^a!p2PVhir#´3ŨcI/,i +#%XڷQLa8%%S*Dނy|+ +Pej9pFh|5/d*-sz<4spj2 sEiW"UW!BYVE1 EOiUȣYl@GmQ"yLӏLR9xɬf^&pD2ImDJ$^T@"K`JW@՛ O'xlvDH,nZW ~c sY((Z0Ěyɵ] l逜v^:@c=bSX'ī&2Wrqn +ɵD9,sXweRnPRp MA:|0L$PEH}bh>8|m8 Ƒ +a. pSi. %ҡX9j< > `+UB*U_ ܰܮ X7zxZe8J|о9|,Bg@6lå=$Mc'2@h|8H ]P byq$ ++^{ej̒Mb^jcN+ğ!dp '('y2qp$a-ȐQT7( ')>VGhfSQjMӠRtw eP @ 6-Zy__F̆}  c3uNfYIzNhx+H[ZTIX 5'hʑD҉P^P/39hPcy 9IZຉJ&iP ?7φ6ovpïC4wnjjW=fi|u Z8нhTw3D#qAq(v2)$%t<1WB`*؄t[J1+'ui3xȆyd"U3_5;6z2 d2EbmZ{cW`wzK^E4ALnmzHd}h Ә>jp{ X4*f1: (yye\Ge +@NjNϫ*}:c`(VSBd5*L'dCAB&-ʵ< )ȳgd:9Ʀ d` ڶ׏Tt:%u$1^p!*"tNΦBZbTbKJK50: 3iDc6\󉵎" + B =]hf"Lxw S8yn䣨h6\S0"r%a%Jw _*Gt6bua̧㣹( fن,'-uDgC*sp<cOú!ZJvƑEIW S`—|n +]q-V8FK@/C_Hfr"&?"L dRLOhQMQ`m[cfi8+ٕPKd +'hz E<!zc +MPؼ%A\Ώ6H'J֖MhY,&0̪e*iNմ2-nciQE ytT4q: +)& &|a3Oi<,SP S<%4 mQؖG7|[Q`0@qFeT2Eӛa0)Z>f8:; +J9=!)7s].95ŻSUO},XUݥ0)!˗t`|)d.roޤ#qTvNXBI1%ޓ#}TE&X'f$-=T0#U6>īζrfXng4P BnKb7%9kA*K3 Qɓ3J)E*5]z<$x l:xTh|P곎u 1bw%x9ShXDDD(]|&]/H6ϼk)STGJܢ.X]x%V 3kDS+8Y~"Q1I"4#btZpn2OIyOU64Mv  +dR ykjDa1^o{#G~#"Ȇ5F|hQL+7*lHݧ"6~y De2GĝXChBx($xIIE(Xo5~ciG)GT!Hv +RU\: +ܰ%CIԢgBW[6 t% x#cpt .e\tE ˶?JKOj4^V\2Ev<6HUX ¡(GAPE^yDLӣ1+IMQ'g4<[!݋tIRچ }(T*[0&r:MNRsJ*uWR4Qe5S8>'#sƔGC$H\ҝ-ۑ4:Ix +_t@֐4" +{ՎA$'8*f*; q!l +c"hQ晉/^!R) xBW۪j b:@j$۶c m(^]C=X/Eg䵭ߢD`43-:ye1@+田`VEULcq;"~=V?'Þlu.y DbƫP<-[jyH}4~>bwсZzzĈ/O1>$Xj75 —#Lי9&>J^+( +8_I@P*0YڭQjcEEAPԢ`Cā"t={L= "[ ?cA0NV`,60+QOpAD29Q8[ HPep8qN2 ]J*¬9Ӫ*jZtb8Y2Stw 靈$uJ 'x@rRBUL1+E#SF-!Pa"(B0 ˴:&WtbhjΙU*(ea +R']=`TȓowD8)8,%NuU‚4ѭ\)ei `vK1 =h1K0fX3׸d}k̗3yU&bQTOdu@$BEy-TxC8qLJޮC\LS}DijSYSE^( CyOCPuMl:NQ@N"凸 J8$ҀH$VHGQ#"J8RhԐ%_V1<ܯ R I)EBɔPRVgQ&0aH\z2r gvd^'PʖJ{SȤ39و@F˵F(Qb[8\M*cc"("}MrRE(CSdo {T"j]6yԬL*R`1q BZ>FUdbv +qvvAJnƑs#dA`-z,o4CIĮp S_)`/ZKQ^C'<DžvEI,JdVy +\֩v^,^Gx\;qyMrP]YҠbo;!h c^Pk[QQfF +@ȡ]e<UJRe䂛H{ڡjRo(irp/qht;D^![F j0CaZj2.vl- 䜪?&,#^!̱=x@5YoR%ekWEӂծ1z5b +d!dd߽Bxiwc)/Ad/̠w'fщ|yH!f f.0[ JcmB]@$N>$lRAQ)-xg/DX&%(f3B՜<'F YKRRf^3T95 <*訔D 1AF0b +|f!d ddˆdg"d_d$$yL <`6uX3gcb?U8eWи9@t9A*NaJ ++UA FAC,l `0`v/cyZ_&U_J_֖J~lR?unI/ <K6AZM򄭥jkC. +B'ךiTZ1Hxa[w5Z+wV 5%/3^1k `R +P#XB :)┸xɜxQr ) JJˉ5T8bD~ ,hl8$tIYGmI[=)W#"OW5Yd@2adD|a! # + [ҼXS!l <@Ħ4lO3h EB%<ܕ;̘q-hp|62 K,c!Avv'fVlAQZIX341UhR")>%1SBe_K +GI$/.dn..V&bbPc&OqeqoqyBWl2N͊-qufoFWhj`P-`[YBܡZp_/dcv$ZWdz,3 ?0&e @iMʫ<♣!uCz N=_*.]*.Bq Vs1W sy)N W7m8bqċA!G 5"VIhay C[ML51Һ1ǣ89ˆ;g*vشx@LJB0`H޲_d43H&#=a@ +dvXKɎ/qCF%w߾+B: gGF}#UC( 3 ZlIvqD@ e:9>,魏HVlbHM*^IXe%d]̂9Hfsߏ)j`@RT#-jJbIC1?CUIwwq1(!7D{Q>0< (c * $B$=*XB*op)9. ~F^&ˆh5&$Sit{@mz6^ +/+oGRtAyRRlP8'䁱"/V GcYݡ +]D@hSY0pq8pd}!95LZPxޑ$wɥL'Gd8?"PM-sMPؠj)QG$mBIi"1%  UIX\ha}͠( hö'sv(#KҰEH8$[(-L(B6͚2 +*BP b*‚'!~ +!DClA-D:)RVqt#x[9nE\4| Lp fK.hMƋj8i%E vLlAݛRջ=f3B]+T"ELDJ%rJg$)d*_P8KF[prɵ5t@ƓL!;=LEmƧH4'to䎾w&4Ɣb/EG2c˪zlY$'!e>q1}NRӸDAC^ZB^R fB&ԞAIU % ȧskrE5#,UadښftgU҄ PIQ\mX8% "10U,t ` `qyDI%&L) b4.%x}A{3d遈q#i;`9D2 +B%Bw w*©>fbxM 4>6׵c&Ԣ fASVL> z)` KmD<X#OV÷?j֑630gFH,Qg^uJ[N+~CkDߞ+ט"ņ3O420 *[13=$Tn$#O(AROJ}TѼd}j5"#FVЌ P># +>*EXR|[~][*-KXxTu]-Epy( +FG+zl7\52.58+g*@qՀ$4)J%hwxh p)J0X+@qrRSa5.DI"OgP`bԆ9z;Ue-6VC3+H+)*%`]ZVat"B(8QZ[*Nh) sE:fT#Ш J+>D_ϯ׶  +CAev:$ Ohunɂ[-h)SW %8I`wJ1(u2e\p[T%L%6¡S+4|Ⱦz%"E] R,JH"N|*}-d:| +6.LɴPhВśqeXAY^,+lQ<w$Hۦ^xuA_dO))!&okO/聩T(&j`&Q"{=TF(HSM^iFahP5͊W\IF* Z4BapV 0VDaovk'kL݂v ?>;'&I$ʹԛ8RRȠUs1 WQ}wK@*3=^,mc#Mk?OOڱ6fY'gOچ\P\?6K.]^u_-Trn\;Hvg35מ{lghkc锖b"]z R֬Ol\gͭ>~1}^cж kɾguewS+'yw>=-P~:Ӫ԰Q-i~Bۭn:cݓݵ ǫ#SǐN3h}NCBOSo2}Ԓ}_h$dquwTaE2Ѿwƿ)ywbN} /ȁF8v@g;'%P%NPH.3}"yD}cp˾Ⱦ{LpS5ljl<>ֶ(-DzlmK{\^-?8 ;"}!5N}}Gɾg(}(ÕOʑ}OFd;w5{Dՠ-y2: 91,Ì> bu>TX$]qLeT[ +-1wB_()[5 (fxb( 1KM1<bќ)LN'f3voТL#)dz s" R*_JE3'|XL7oV=w,zldt f/Y&QwdY0llb؄aƝw(K@Hv`+AGN1!:E\N0A̧M̂&Ųj_5c]()I%@2$dA$ %X((X(B4 O @Q ݑ[8 |RA>*!$BXp|fhE""cZh@RF0u!N8D}}B"T(*쨰W %*m2S  9{$I ʔ3ctXI \NJ`D(K4Bo~BжLD"BJ"=~!.*{" +BKɩ {(1'DU7NA!'<"#ۅa\D5|kA l*15eL)KkqB8TeH&sB鄈D$|HHr(rRK@7K9ۣ;4xYBtIK aBK0%ztb@xҪ[[aʀk_mtohMĦCɋrł8R&QUQU{(=TR(.FgDJ# ] 3uT9Lzp(qBVՄ.yz`a9'4GJSXH.N.J Pbz|Fe_c?KP. +C,{cNY C^qx79ԼT +]sRfV{㱒>MYpT(ٜiYTl9@=0-jYI< t3zl + E?O. ]TV* Ǵfۧ3C̪nshN)pMSޙCK0N {X5!hx2*zX=vXOFzpR=5&4 'm)RϤ&k;"_3B65 'C܍ʙ1g:-}'k(k sK.ʼno֮hGU)3('bdR-ࣾR#<ILjTGYNO<II#AШCi60?5gu%_(i;`c`dPQD y[H_=8q=>GqZ#bUV nzC͊x+I‘'0}m+EGE-^UCVk`RZ bL( QҪE#0m4P]fc[pSg(mTjhxx?''/H[=s`YI +Vk$ OK_o8ObEvx_g?6o@co@%A +*vɴS,bMSP6>1R1Ty+9r2dSY=V,H)?D  m+W"( 8ɾ[}S?O':ebAe=1 2tFfqi:>@&حG̲YsH>*ޮ fRD^ܒh1vv%N9)] ]]{{yvv'q"9%[+-/21[[28hp)2{6t]%1*AEOnzu$-Qlj[*뉻I;)ps}*} +K4B[E=T#)fiD+y.N]v zC)Dm@KcW%ត^{}O供4r=&'}߈}'d;Td]qiŸ%ewPhwvug{ X~@+EPIk[YpH}G}(Z +>侟侻ɾd9ɾW}]ɾ+}}#"#}PB}Dps+K=ʾʾ?P}(j~}Wm}G}便rCdsd!'ɾ/"}}'㾟X}u" #ˆ]AcY;1;L:1K1+)bv~bFbŜ), N +8';`{L@kAGH) ,bPB!hLZ2Vݨ$*/|x{Kx믂 3ٻ}bf3lyYrYrsYHsbx4Pv`hRX +T(lo|jRg<6"_z  <41uzI&qqP V\ZB(f D%(f'f 32቙҉ٮz|Y y32Ƴ"B+1Wr |qc('DS\×<#0ďGbRܝ w]$@f<;yDi68ŜGƲKh)Jv!V%'USSJXB{xp0@JWr⡭ %{=#tDHB@uL5 |dWAXr% whl0ez4Ȳaʈ֧Nb-H +~=b +| +CfǪv^!^zgbI|6)[n!cfѪDA'c]MKJ~sPsv&ڮ{,RU :%ՠttCB%@!b$ }:񁠏+쌃艈"XM ø~q1O!S6{hZ0BjV+סuNej{Ϡ'IZqL4eĶvV$t'A<Ru*7e8אN` ӧQ!+'rtV'#0А#ݪnt [Cu=H=fJ/_G&27u|)>1lՠ/{\0"D6ibh +阡 2="xB34D0 U+J0f]E&zL'N6p@ܜed}˷rdk U,Pt eFRvCNQd\1*#W\FJX*1B4%k$izhRaN/LrDAc5)ffXu$i\*Im,( D춻L U]^2#'Ok1GvIPC8A55!ɇÃ,XJE6%](Kct暗't:-H)<h5Z[R@K(p9LVjy!aTFPèL:EM:e0*kk`F I1@Y +rq0s8BM ITu89)ZITz"}i:%OV  ԆcIN:YH{sLhdYprS(e*]63LaQ&@44-nX*5gÁSqzldM*kmLOD Eb]Ey>+ tB1|Rc,g YZj/2N)xD2Dٿϼ-ҜܪkJn@Lf/8ģH.'*^P;EҕjKfHc2֝W+0{qIBXڬm*=ݔt(34O΂*fNHu<Ȭ,)NO(X{&Ϭ!];]"RM0oPɦV Q$e\Nmj9`I8CN3R"$:ej耜9 \˙N bt<0"tyʦlFWU2Ղ,@1R*"DPhH*墆j,TI% pT*$aFId"ъ$|2 +x<YF~i tt?Isб?W\& kjH 4^Jq8u}2b, EI1]Ӎg.SMzuo_>NOÞS)SKk$Kc5/iX"ZB@1X=N\@T@E$K\G qCE2awS| `/T`BYZoo P': TARx %RxRZ(}ؑ&q$ +~o.swJ[kՋ2 Ft6ɩRAȈBߋ!3P_W܂KO(G|EBFuEE@c[!]EIȂjZ$%WE E4%Lqq1 ™c .)E㔥)L6gq-Aa=4 RaC?mRBUB,ӷ]QE]QpKԤ%6߆ʔ$! +̂dTr*F +RDyCGmu ޝǙ’t€UJ˦T!cXu\KweILؾRrh-U!U4F 2Jxzxjhsk"ҔKB*Ӹ%!4/IAXyH-Wdh]׎]-\:K +Cǵo"׵ "kdz쵫T׮}u]JDiJkwA7/)yktؖj%)юf^,z;*t}~f[@:w+]f\VnWkWN((q(-g$-mv|^;T}g|}7|gg=2}.72N'}7}$Hݥʏ=v.CT_kW]}t=pʼZ2V]@>N徿rQ勞G컂;A; ']j}}t}'UD|wew,Cb+8/ ׎=1uN NCbCXCpYsbe812%ZDX+%VxzIs N"nE&HxE ("Ϙ|J4(7}bv>1#>1d<1 U颇1b=;Y4`z-05l

0RQxXQj#d"\Icr1^\9hԹ.LWxkM6GL"fKO3Mٗ,!RtfǠsZIK7th9hfS."3eL.uX<6' 1ԴpPYPJyQ^I*X!+"Zt6<`id8 +v6B_AჯAm~8OI]p!ѕ b4 &dvà#8q$!7.1Wİe?M˱YZD:C;]âZ$]՚07($ޒG@"m#e=e.%y,f=m FsA6w1zrKb=&jNgUPu!J +ySa!"Aa'##Ij$v1.-~c#pRxݜܱs+ \.fdh"(gc˶BAe<ԥ:+ S4Hq bEX ߀tkt\USoQOg>$2>ׁ-&BH :q7( +5 +ɘWLB~^`lΖ(Q" ID0w0Tcr^T" R4#xHN|y=ܣ +|1~oaAʒhcF40![T|;-&Nuy݈S&JŚpxhS(\= Be "MT6IS,'MRwNϡN">(}r}^$*PΝ٘C//:ӐO 3:8ҥAy +i3d&20% n@($%Y]0‚BB&w'D6ܒ +iw RjuN}˴+vBÂn* _z5RHi@bCHlFEHX +K+Qs uyID3SgЎHShbKiA"!TA*z)AFR+Nc.aH +1#0,({,`uB WBʁҬ "*\5OND*x3'7K%ך6hyΌҲ{uZ^z"#0)q3(˔25-K;E<0*Њ@BHDnJ i,z0a",yAT;x c/ZJ;˰a4O*/n'SVH{9(hNd>Z$b}GyGhR/N"܄8Jjɦ|. hMpUsrSR *Bxڙ}/+Yp֬<:|PT#NILHd~$ IPPlT*]MxbuX+@]fĚc\TV>uAhVABTJ wC-^_ y 3’VLsrSnVrS:)YP!KbiE0u|L"KB0]~wQ}~f#&qҍ}>Зdd +U>v"vWSOjpWvy 0f d+! +$Ӂ &=$R.xiQ@M#IyaS,$"3mFV!V*as|pUr2J !'ISV?NjG,0=4s40 y>1HP!JdCfdĤ2x^B0=Qׂ)CP%3FK!@J|[|$S݌tx&) R"UP8"U*U 5.$.k1{ @/\5D XY"{RxmBr'CH1E"]⊠ 4'\_Ġ +1 *(4PbЂ.B!ॲ˥.!:e4{Zl']9PN)*,!O"f6)L* ƎI~%&rC'_ħ MCiPC@\*‰PW*#-.%x e(,0]fBp5J3E`d1$ z,HI (ȅڙLLaemdG0I b^A(&V K%Mbh2OKC}Y4~ 9TH3<eu4@k4fCv%GS%HoOBϳB.za.+2 *Gcfr2W1,/UX`eI?Vj3xCe>rLrHn2⩬̟0 wcKeZ\3Ojj& {x{q286c1]e xؠpV[^@6o_5~'Vsg|3Z*RB^[P D(Ym\ c@)hN$a⬹Xw`l'wN($nDzu @< h?P\ѼjۃFL:4SUQ(A @Q(zM6Qm䥱0ȓ +tBâ,mc ~u0@<=sO WԵw(jZm*C0Um"D^)c$CclG# "ː>'KoR~;EN+ry>)&ʰzL*jtDΣ@H|]cc!m;AЖCIwi"eF=I ;<ޒ:RpǓ6PvcZucL$! "z\Xu"w"~Ri:f&isE2ȐW2[JL&LOͽx4+^~B#fCҍV2k薑9.5+0PřcvP2O>'O [y$1o\mļVRƐ)wPjBSP_påOS,6o6WȺrgƫ:}ոz%k"6]9<1b0ؽ2R(-()d s:Yߤ*o +vfVF1HYv԰]!mnYrǐˬ&KcK=vzpjᦾZkqvi;`,웛D|40S%\&t ZTA ϟTm5P +&RB#~nS("F=u.QE8^DBQCnE@r,6a +S +โJfB%Xj6 2iv|iqZU0bP4O6R|\VPvZ7I; AFE> 6ҁ8.BD̠IJ.H8dAR7,P&lE<^r;0F:*Y"F pMh@bޣ^ @wu?<v`/.0fHZѦmy0xxLB@^X"ǙLFdYZRe2!ʇ3c!&r5$%LЕpR:Z +=^!]DZ7]̃ az VQ`4>ԅ;Ɠ$4Eo:E@ly{ "TF%ФDI+jrb\m=ugP$Ё&@jO$,2 U:q ˆ. J`҂18#* )CnލEqxl +Eru/'A}(؅a0"_=Iw#z=6,L;)..YGDbX1l"<K{ԉs)HMX#&CɵFd{dua2 sQ yĘؕLj}5 r )8 =".UzN5TL0q; )G5I"1NabhWņZ&eƠ* +4gP&N( {^C{ - $TpM$ NrL蹰Jq#ވ#OCa2 LZ?έpD15׆µ¹Y֖p\ +AAtJyP< n >k:bukeEx EY>tQ5BIR|=Hu((\/&C2,R+ʢ@Kk҈xJ!昝ér>.Ajh:z@z@G +RŨRc穗Y\:0bE(4|6)u*W}q܆NpSHpt DPǸ#w"lcGN|zHfK'ncO$Fy&EIZGLeÝ%j+˅n $-MT;1fzc~CFʱ| L zʳz]7KxBC^| +LF!Ad"- φ0(bPXLYN%ܥtt3L-x&8Y*L^8PvtN.tcƇ5E,"R r:!&t2=k8#bXPIQyUbx1,0\_Kt9h 7 -L xcHE5$|HX|3NB1"hgA +𨛵 +E)WRKVˡҾƴ۩|wscGK,J]Z x&46f.25OZ&GTB1c$iFJ$r#=$v1jDDЬ%`AVmS+bzq8*9c8>uyYڍ^܏^:_.b #3 'Ӟ> uКnb1oF3=XbA8tԎp +|]d!KC砅NJ>%x^ VB[a CÎ1G +M'r4W:61al8 XT #2< +Bg^CbtZmx Gi/]yxY(F@tW +h%LuWefW2TƟX-k( ` h& =N ce2! WAr#㊦#񀩧0lM:~tΛ}2&"XN5",>6AB "? +eTy"lE74g *c2 +іBzc>te>d|P&e|Jx!J$/ePzNaU@ETs$'$$C¿c*oeGGJBhF`ޜC6"X[` HD /h^>/u^Lee\]l9Du*i4Z &Bm6Lof@s tJGl9lcnwd#P,ˑ16ۑ6(G&"G&-p+Y5 [Bh5"M2Cj C2 Zx2!ژܦ@$Cj>!3@r⟷ٝq2x#S\BU .c eee PjdFđ>QAhO+Jiq,[10(b(u.老u/P-Z4u4х#3#2#c,pF݌luY CC12,bd;)UPx/h^Q2.tRˇ&s?؈L`0+uI)a~EoJ,#EEuLیcR\d]diErKu)R A82@JZ&EК+!(͇| />AsHTW%3`A:c2 4YZepPK(0 UaFH.gڗ˙ٚ@bBZ +T >zu8;`Q+!2#b-t;4AZbRptc)ၖՑMD$fo pzLl)bvdAcȧ]^r +d#ӚRuALF6٩$Uc.կPO'DQj ř>+·ԭ;!ij0/C"C:b$1R gc59I3H@<9X`S@H*NEE:YTUFY&% m!(Mn|dn"L8 ~bqJMb*`)@pG{ZXq6o1* j vE4qs JN%F$1\ZT4㱴~7_8s$RE.FeMa2Fd4=3';n̩ +)!xCPdw̦{{ @;MJRBt  + F$eRDEe dF3iFۛv +"bSכ%BM:ylU.  \R \hKn0g@iqA:C*_븟70]hu3$_uN(T #)|>'80*aKIH0Ӥ m |ΑŪf6VY.̄D5Mge_8](8rx N\1h,_qcAqmdg.!5Db*p2P`02rw +I M 62(vXQTN|)_dj0 C zbzݨTuȠL$a?4,!+CYhq +3 ABGIд$R{>1S C JLzIJX&rO &5SP&*Qҡ?S2?D0 pV7” 碦#7dq|<6S(3RXUmɴ%Fl3m#pl.qt Ur;J924ف,(R)1T͎+c)=i +P,Ap S\#zfME1MsF@kp^Ntk}z,exѴgE.m/^c{@zL6K''7H@q0)ʤUbuWDk(QJK \D/|]#:h͎!kO"y殀F<a̦PEg- j/E4hvͭV"tPjPXUOʗ% ,9D xXzS[~2d3C{h8I +MZmcc)r+(NISՄ"ŻuO\Og~ȵxYǼb2ʢWX*xF[t_C-ԌrעB5al8d” e.)8cN*uZ=W,T&г4hdVR,H΀P&*q.SW4c3)*uj e)^_! 瓶`:.v$tܭש()DPJ$=C?R#& hto걌(b7Šb3/vЂjYG +ؼheL0of4*c8e,90`8Sgt:=1jɐH…nf[wRb]jJPJUdE]jm.%GȤԳ&+ta9;cWmeV )taeVxEA*^(S e㔱Hk}R暬(-N6 JP-^Ӣ-QވޙN=ƹ4L\qfu&2b* +@hmBd +Yq?g7V^=FYcn][ĤJ#  M#*^rjx&6( ۘ$!cť1 ]#:7E;3 +D!I x!> [ \k*x gK~)Q/擋l?FKG%j]\hb!U[2џd;ZhF_u^\[O@eR#&?^w9'f`EK_]1x&`ʘD1cwFP)FSeCpN&?g$ E"M^#n^ΰye ^]G mؽ=5E" qE`Vl&+f!ihWpOb#A!usgR@/K3ODګ*&B.} $;*!#)b&c>1[iO$O +N&ff`AC2R'ckH;CQo[wH5^hl,1\R8BLwoǴ܅dzBRB=d م`@1`0;!H_b<&\ @>pi {= +<Y42idBJ#cF6) u0cv /a:ť8[/r5’㜦J"`.\Fbq:;IL"s""@^,P)|lq2Cb?FGAtIm{lrLAI40T + . D醥F μ$"MRlSޣ\TȇDVh}hLH938w J $) M mp= ( kH>V×@pT1aXkhfD1eV#j^%hJ ꘆ%8Tnnal aKaEIh6Qa1q sV1nq]7n[EdEKz'Cdp d8B82JyVթzs k4ӰIG=Lx[oWׂC(M^LQcr]m|k)\Ysu># In i|lnxL35d(R1x$uW$6 dD1D6e0V|$|a +{P+oh"Η(qyք<~ 0^ +rT h&3dM cT+s20901"S[ Aot 8B=`=r|7Q>Ģup9N!?Yј4Yh-[u.$f,@ȉ9őgDJ%RiujE !( =* \Z /K-dn&b~nU%.MݘD&Wm F=*US(CP17`xN򘜞b:M9 JeV{T(gh8V + f2C&FEI`g&BId_T^BSzɢ# J@M(MZΚ4KLЂTvml ST}uػ;i%V};4"Afx *LHIe wqAD1cMQ^֬<.OpY#q dH7 9MHAkкmɄsu#ÓYĉbf[+n1KC쀎 ( "&VAtW?G8HqXbr+ 7@cO^RG*{F3INmX,uVi'AR(I'@!A =QA0罄va] GZ#)ԑ4mh!PʛdvgB_9b+ ++چ.X<*B^Z;ЋӸu鸡3L?HdJR.8~!6BEhe17L"D\p8!7tkx@WEMj랜!lAQI)bJU&ͥ C\%„\ JgSJp+KXxt]"*}dPyF#QL c1?0 kəA@LDPب(w}Tb>fp)ArF"%K!\( +нDa( ѩ$ToL(ۥ&P5g xOXE2VZ)j U('p7K~ir0H,(1)rɚ)(lf*"8 +KiX!V{)-FtP 1oԚ FR (  1MG, wb6"ACwlDChYy銲4{z(x_HSYG:kQ=2e6X 2~hLq#ՌUcp2fb$iRDVㄋy6"C{'x3MыbLYoA$eU Ylʔ\1\ &[UɬC3 ,զlՆ$0pF n`9eV 錼',3StopJk97 X4D#F&4l9uH/&Bѐ0$㙇5I \MTK52R:q#%\{XcuM#vXy4aI F ~2c; + (qX}-;QpHQ0EeP9й+ma^ky!MogN$ݯsr袥QOʬХ+LPVw*j2M?%&㨈  +t {#'mgH"RK2^}K"-m}&=xwkGb5 x,R Vr+XJ dIIe"X}4hP|h`gh'tڐ4oMlXOJm/V.LjfI{d'+8ozFZn b9{Ȟ ˺ +ULj{T∳0=򓂅W E9宊W>stream +A~?;(LM2!Os,*6*6)oquƼ }C]ZTȐ>-JL`^m#zl R!_&hM +|aJVr&?ŤM"sxUZ^DE@8AXxYvw6U{ i:۱Z|(Ⱦw1!!;d萆 +WzרOYk9tdq}Q웛R{|4<|]Lh7Ҹ'ȸ Vd/cd?:!YX\7v,d cO'] +A @?W20C۪L.9L.rE}{X}g;Rq[OO &4D1b6 aqj.l ݈HL(>q2,؅%D(fȑأaa!dP ` 6t< JvPDBhr +Ck0Npo V2C%Xc82$:TY2]|YaEF} /ìdM2äWhĊWȤw|X]&CjR52P@ .E.]Ō.+2~]]Vx.M#G###4#sLGp *r'AMFgW $ z,K؛AGpWh*uP 6/.GF +`82td_$IqdWƑAƌ#;G7FG#c#Jđ#+A#x#VG9D@2Sƥ5T ѫ9KV3 !5JTHo#=o#Cmo#SY=Dw#UFfb)pZpY"2׾qܸtظLUiLl9, ΂b-xL4fD Y׎ƚO +b`3,HeL#k=ȶ0x8%K9M!AM DHTct}(# ƥ }u܇v  $.EMW7 X>B,ZVxy 3˂ =rv֊ RPH\OZx8c أZTsh3#PhI!I|y̻Jį%(bQ(KKTO[er298+jVed#HpH V&W»AURy Xxr2َ7h@B~^%st[C*?fN +ݨW̡J`91&'t)Dz )r] F)5g%O$|g6J@#(3.¥A/vAUZ[P gj`i>9kalI"sC[x:^d6z7C>y=58رI-S$&](o<@hstt .7@-.p/dQdlH$5 ]+p)j7y V=Ė-Vh F{BLC #jP(9 jpDS>^8ڣrRc Val>5V@IƅCK{ J,d h8u}d#;zsBFB4`RK䅮ޑI,;Q Bl"N"ygɉ4ʘ.d>YBKpuAn]8*8>FaQ_#w!=\Beԩz 8]D$m #>0L'sRؔݔSpi%1#w@,lPgm]\"@bRdݚb4Z^ȒJ D<@z9(HGߵVě;+ +C XDE1 @Ǐ(I8#5*Uu$0@ȴҤ<Lh@E `IK%YNkJ%G9"!b; fVfQH=ni"J?OE)VT !w5/K2#+#=,8E9.}}.KYL;Auf:xg+QVD2BשZ- ZDs2w`ҠLx`)8eK3=h;r/xʎ$7Q6rcƵ+"́4ęNItRUOwjb~2X:Z3_%C_%C♰x!}DPZ\'Hgb %ݒ"f(db/ҡUR,W8Ub&B0X|f` 41Sc8E^UQ,lcĮnD 0e6TeIjǃv/0H"'$-GL(%A:*$<0Rj<T~res0[ʈ pG4놳3Sڎ>LQs'VPIQCؤn Ny-:M%eUá|⇢BR/ QdiɥΨK`J r%$.|+13᪚ "sLGppfvGBU$a2\=1rjs**$0 QJߊ$6+K-/UP~ +$JS, +X4ѽ`6v" 2$Y=co{ [7iެ10Ox23/B!a¥ZL JqM*K%Q`|2}_\WǧPr@o{@9D0")`&x fu4pk +!c/4qϦ*&8OsHǡbXp3V(PJmѰb=ǝqQk ~&M']( cGF3A8jmln7[`MqD!aJN$tO;8M+H'ƌՈ*BOcV듖&C,9@F#Y8]CŤ ` V: aƝA&0): 327dIYF(CPC y2i"xJTڰԑ*3>Md9/_^ &$qPaED-QE*c#zgxT1hڣϩa-h$oq]o5%cX_=dcvLF>PGk2iv5Zb=LXZ"Fkqq[24d0h(ԗIt5XZ}'I%RT1!m)S*˩=f:1^hWj_*ڬъn$(%(ΠHQ6nKJ:-HTٵ<.X,T)g`Hl튐C:K#5>x`԰Ov|{h!5" y^U6V+]Zk4WZ{l)=XfA:yB6wT5@r1}t@]W'm#&a!Հ LHY\b2iamjT9]yd3: X«Z[eww &SwΌq+;_Y- N X"b*H,RD,^7)ϴ.r@_H;t O5&opp/жzx"~ʆ0:kr4HCtp8{A%#svh5l1GM-6-peL夫t()e(QI&$Q1.Ix]hF"xu> ==7*6}BPȅSDj0 %)3JzL_6Q͒`c= fVºvTr/^'`ٴIUlr#EEt8H.rNyE| oUk}m[e@arD#ʏӇ,2 +zsюL|p})Qq}"Ujy$(dquV\P^sIAK/ FtMoA /$#ȢaS]@ &`kFU!wB=bKI!7 +,1+4Ԙa2Ƅ\@z, '5C՚ +d汈|Axx~#䑌6 +$JTJ*ZSB%.c62Q i㩦C3 +Jpѕ˂rTYvk'5&C泌1QP1NŃ>`*~ܨd%''9DLBz1+̔".$\4%l^!6qm"<M'WXNCyx?"u^Zpl^,T" CFfdƈG#9$!lR_>|DEc,h/̛J#.Uy!=nSӄ:Nt8.F9 [ 0rH+K(M5q=YD3n 1W<$H4(gipaP( AXc0rB yP44b d(b$@\# e.,-=TOL>>ū.}hHrHLLOR*bS`IsTRYAGH2M<`ҤCM +UVsW!z2V̷7n.VV'rr!*Qc)KZi g)WŬYkNN K]jٷl&jy@O`de:fU.78MP,c7C3\|QQd ȑK8;$%R2*a* {4&ꀣ&j|j#}'ߙ` uHSp Gim(pqTm5%9aM>UY/[^_icj3zadڊъ范bQ@|z?#G3"h 25PӳkҪ[\pr)\e 2YBQQE%:I<&uta+_TIA,IK><˴"/+F5MM*èf`TK(3&?!%`PF5D%iGU2)B3.+X$b3(:v-!#Nb*rTpU*N܀B! vI*}O [h.\eȫ +i]+J*G?dh"WXђ'>%EH1+V,,XToGdWTd[`;/7L@0:N`}Q} +J~ `J)ooF' ;2XfWPxȇQF`WSxB=gt/44J$餕u +,%0e&6/W@b(x(?Khs+E*2:~UԴoț(.Q\B&"I +&WUk}V-:දrfXJycu]>y`n|C 7I!0:I ,:4OL\\b2R\P,SG` XհPm$P UҺrՎ-/“(UEZ4r][\-c ZW5^ Wqy1JJXzF Q̄?~ u1 ,K.ԡ6¼p_ 3Y_L#9Aet>aP *aTT:A!&L 5l JêD pk*l9 ]*h_QUo(*b+--H&L01"@f[fb UX$Wm6GNՀkK)%"RMhvUB!8DY ++aiTɞ/FXy5QzF@UQl#ϒ%ͤƦat>9XNc CI/p!I**!cfJ@ +I{f/BmnA*AOڴ8=L"m'7Ae\~K@j(T&brٚ8Śg+RcK6 )LRc\dǹFYk\i40dvi#p{Mr(ZЅA_?~I1L ld0+F5m}F C +x`F^$i2!7]Q% H"\ٸTXkih4#(\PbU`gfli=jtlZSI? `{N B(1h7u.YDSi:5] + oa${%acѪoɤKu:bAgd $W!@ʬre % j`{vѣ Baa@Y)sRSG urh̴+t N/*8 +!]$b +ETGq|Ԓ<*& *IUSNPO8: :HGS.'ijaz-MkIh]ePSġ١BaW8H~Y{8M2UbEe IVoX=TCrU)A +$*8:Dˁoɥ; 99@p4faO5ڶ$v @%LGGf NTt/;,<{@@ +);}#"@8p#}fSw^'uU:xB4AV#w#?jPAlnho51ĉv!NG}bnHW4 % /]!80@r(eJ/U5f=I( -8WE tTM_Hs}~BF%/&~AT)AY7M y-VԊbeFfvcy XWE<*{(3dHj^uDѤ`Ɏc.1bGjŸuКD5@G  2M`mSD3C!dnpwI cUQ֠8ЭϨl|L(sV嚊b"0(dPA$ [8pfpVT `lgBtXSAwfxkiqQE%(Yk(4#PXQUWi/:g +'9FPA٭`.5UJ{*P!k#afFe<4kiL )c7vBRѰ:]x@ߡUkTLG +T _cfњU%r>kyM˺s +HATǀ?[ +w7J/(7cVB{'~/ S[L׌*GX$m9uYQ5yPw +ΠYSQwV*r{;k]O?H%U4 *ͥuyKj<ޮJe.ar,4\]XI*.,& kZutU`<TXLB?U#QSYw$ ]1/Rb@iΙy^C\Y/SU⹜?ک7zr(4BCLU%6,(p[Ծ, &rK2c_J+YQo`T?V +Ӣl˘uEU*,Bb"r#DBl,M!MCERQD.k߁> uZ;'g-z"v(+uZ ?7I(BO# +pnS3qSck ?\pGp.)Շ*bdg7u㫹L'BBf BzYeu_&ag8Jo*:]n5 L]+d%.w+5{8Ђ\.u'e8OxODiW+z3HxG = RyNGmdՊt0SvAM{Nx7,ĪV- fč솬āQY*Je.}*hN{0%Y|[B5Y-T#ֲٳr֥{B\h,\7wܼ ?2PE/"("#>4t)Q7J^ +ndSF*C7@ `7 QK~Q$V +t$ܰB օ(V7V8/u +J}M P Tiq5ׂ"x5ܮY[|X!7M԰8TemnV YͥJ(Ѧt_fa?!X+f0;ggJo]YCW%W+U-X$kek(zzm%"5@UtMEp=S +o1bv/дz175-/%jsM4]Dkd{s4=^j~M $R99_ltS¬[>̉&T!-딟ZU QaeV ˬSNkh;B%V\Ϥ4t]K쀺W 5֓GǓXf/.e*j߹Lx^!GGG;MV䙄#Q[X.&{mWv1zAv[ńݕsM }E-p\ȬjlYD0ӤFX%"Fߺ&N(r_LqD$1V +ܫϵq1AwzցXAR'g+(]9^ye(6@+7~:&K3gU>TAqsHYq%*SL*b/kgyYF"+7<%"iH<IJp(} AIPB\Kư&,ODΤ.Ŕ+,fI9/M%-p@8|aGL8OL|։]pZAJҐR%| .c^Jk0Xt&"X6KQ89%۹"px%DŏVGTρ1eBhM,K?F *9Fg'H+FP6(#NFe1ٸ1>ĺ0\a0hT:ӜJӤ,4(Q)G2').=GBiXh !dP'K>``1X̥SMNGluވ|ߜ^Lgg#'aH* tzqg2NUp Ty "F)pS$6D=V}خ!."P !Mck%'nOC6b3?`NAPAQ6<!yҕ$d^Sk/E&mFkcŊt(bY4:b1k>ȅ;e%%7彌<0Z ʐ)[&,DvV |FBNd~ilw}[ +a;$=7wi #ttyx_E1r):ޫBvΨ2g W{}ŇG Y품v a.> +s;GHFv Odg#G.r OVq Au!M㺆-cy@XHCKnkReh?N0g+<&ݳ_J$谕!(=>O 'l|'DS-y"'r.?ZPS+}f&pn$̎Yf݈Q0DĢ^P3I/vbE;b)oS^>"20M ZEhFf@I7d'S($Ԓ$dxd>d%fͱEv";gB@K2r@|渀@a&9λGv!Iೳj%΄6_bOp:AQ튱:SBC@K.vE|]e;& ۴/3HL@m[z+֪֓ &`b@΁3]vVl]c`'^ ;Bb('e];D{GA=[vqc`͔٫+@%sC뱒B:(fzc| +@3\:_G3Ɏ ՝ `$ +xP,^FY}U-\ӆ6coSwF"F:^w ^'_ 7XlP#>D >Ig[=D+X8XnK'UDͳ>`U\it%=*d~H-4 BdOxZ`H6adqJg:uf@󪝂 `^o+W"} +B = +_v ׆dcZ3t@ @@`Ky8| ГPl=\bD7Sر#_ +{2L\j4K:m¤Ăs%]},4aHj8$.;#Rv՚XSK*ib21c ށ1t Y? M-ڧΎ>h|̈V\g2NJmgQdA Z@n\m:qM}eMXʎ:5@1F |7 $ĀZv01)vM&7 7#"`艠4.cTH7 +Jit*Y90x  &K=|Am=2QBAE:8/͒ظEm a)̝Ղ&&ة3^]C` LI}`Sr)EfWl +xࡐEa-<5vb +"):TF7)Mi+:JdY!w`dͮ5b($y2(D\,JHۀ1Et%+)< <1{z/͝G'&aѠc>K*URcI9!5ٔkiš֐`9vh%s=o,{]`(aR1Y=q}$xU^p4[BѨX=}ڡ + (IPfB+NRYsN`kW%MўJl|\$x3楬OO-[B 49H6 1/v<^1X%MJqiyiZn~DTI/Ch#YC"bS˪kɆvvp{ {\X{LyM+[LÑU ;\<.8" Y!!(Pb?r5JPrqpF+ܫن.P.֨I˃¤(6IdURN"9ؐqE(q ŊQ' @ ԾteL>ԃtaeg\ڂ5X1{}W}g} &}7֔*S/\N58eAf7|>~y pĎ}2O\"e:i`+: +vWle@HxNc[!%<L7f3UP&(o41Lyд7rX}`""d 8vŋzbLJ'\)T ++NǢ(#ܻc78#_h3a+)>r9C$3h_+\rˠgP$u,48: +fS%X(+xb u: +hCjCAQ!\Eb-6'9yZbȖba+!pFoljc0 ij?_)|Q*1#7dL_Dvd8 KԒůЙ>KQI-M^k嫨sE!)rjqBC1Ynv\}4m;X88I).j +iXЙ!K,@)c& s`sugw-92JKJ=dd#Ȗi A0]|$CoU=Q:sBAsKպ|#wG|CHo1Cː\[X:cQ i) %7J9aq2tSTz36y|]XBA)H틝6yDz)u&ls/MP|3P3F?R|Baدwh׮e4G&Zcl ,zcOr3?*wJ\T''m*\"3K@DIm$OUE8"[D.w.p"6 MFH(#X(y T]#h(PmSU&dbq Ҹ)3{  +1 +Jmm[vT=b^flom˦!Q|>ԃ|K"IJLXR{jO0Jj!B3)QV,Ώ@~|n+lc8:(%}m"tFtuWd1ˠΠod Yꠝ[$Hh5L?cǚT2}7U%֠8CAqgN zM'ys~g<&g8`U3loT٩cNGU7)UY8*@fJAnCt}2^HMf';k(츉`RaeO,T.meB#'Wr~TP9q hIO*66s@pIڐmȞ7RdY#; e_Ҳs>?A[-.AgYW"'3"\H@BRomYrFED @~U"% +.^1vA0VJ{d}3nƞ3f l> =ԍ*>v4vŅ;{Eױ8Lٰ5dM:\.Pb=?WVg hIňFk'osŮb +"Qwػp$;;ȋĮ b((bwR}]: .f56)7#r)ŎTR D$!}3 9HN"(-32_5aL' (vi +ŽJa/>#Ha|/Rw N  f3.n_xU`qBpg56bPoZ00LUyac +F:J@+ + vk:{D;P,`9}qa`h0CY 8XX +.ŕ&6JJlĔ݇ҡ I`U`Gg$qU(_7(_ߔ4_Ghw(u#]`'5=`mi)RF>~7CoRf,s>-)B/3 :L|lU1]J"~PZGA\0)6O %|8(=s>c٫OöFy-pmdV_2' jҭZc#n|&os 5>LG! ;&j)Cajp62O9aT 7Tb0CDbU^]@b6&l&۾,& :`xiW +?}>6D\9>aH3FDL'jF+%`< ,!Kʹj|\Pa`q$ϡ9">S>wcV+mVfNSgjlH$xހ@6f]zZ{Kŗ)UH KEDЛA>NFMM)0R&y+נt(P o >}(,#VL LJtBvqiXqF7R8i42o1<5,}RnR.h3`<})Kv~|>g0F99êR] <ԆQA-ݨ -ĨP\]Zq^AO4৳$܎TYwis(Lf`+k%7G6ex "vt0jZM/kq%a4 @T̫PYciYMw3LT8L| `^,(eCb"VTbj$@5sC@!Ng*m41W1Ti  ah'+!ʠd +Ź£1APQ?rkQQ& h%KV$ +ҰqIЫ& LP@H0qSrS R +SzI%aR[B8y`x=X9$3ZFpx)mPUqHaG`!QK'A^D4Ƞ `w@qν ;:K v*ia`)J2!0TkRDR8,Yc(%Q [;l0~_kԂ;E)pQBEx_T^\&&*W. n +>DVg=lzBWydU9PD(adQ`5Y\]֦oB鼡|F@R23|X"d,1t$67jIw";Y&-@SMN'lly,, ($%Ԏ-p.s`67x=04\usR(S5€BbZaY\ ~I .E:0qcֱ[]3PTlG]Sfnn&O%EBy$b: wbŌy8uFCuXê1ht'.ֺ(Iaq i5Tg&`9>'@kצࢅDB gQkR $ћzmR$X ViDdki'V$Ytt3ʧ`"!u7!)]:L*ܩD4ԉ;X <+j hܵT%ќEQ)$ (=t$%)9bo-8>P$7z5?aY"8PSSgnpx ^߁u*1=)ogdi ( gּLJdX+[ O0%|$m|KNa Utvv= }DZa[CI޹( +1!4,r< y tA_ e f tހaa'tVd6U I8Lm+jP,AQ!6dvH5(2^34 kKt| g :D;Nr|Kn;]^pJ$5(9^dB4I3P sI9;*ݕϾq!zh9?;:Ed^o&/'t1>#B3YklJ0H@* oa/ Q\dL7\{LUAߴ;B(bev-/f?ק>pILȋ +| {08b%b c`H^Yv~KKLvTLHTv)*ZeU4){ˡ(L[vJPvM+{@RpB˰ 7ZѵR@n$ -kzN**Pw +Vtt('MK_>A.':I&;@ j~R{"1Fv *ZED`9b*NzD; I{-ZI ZjB$ba9}ш]NbmP{c}Fc?ؽCbǞc[vώ]c4ʱ#DnO\k Q:0u"v& $A֍τ|i\ &e")i ˆHEĖ%vbv'Ůr bت#*, vA vV;,;e=BBnt=< Yp3hi,ꊵ:ٜޮfhh}*B2sF`3 þh7; 'hE&"a7={/@2C%Ch6]HP#a5xBg +AM*8AT' }RW.,23&,Px1,u  v ewVES&]@%@͂5 E7)Tfk-Wuiq t0VR*f-܅c%5˹Q1 6FUW;YS0/gPJ,i(*I㻗| `gd4ЎӨSݤ4D<_kǎ5 #^.i}FX4华hwܠ|mVZN݄!dJM}ċ\+dzUs 1sIT; hAuWzU4*~)k`\0Ȉ.OM\sAƘ޷fjJ~ɖc)O4mE +en ~| 4^U=EP`m9˴1TBDלw¸4U$JꁒIj *t]G@Y)DI8^3&C%=(o]璘B +`eI4(Afd)3(j#Ѽ%ޔa@uuކXCČ,y^&Y9r2LŸKL9 Պoh-ΙPMڶFarlNjUW;O&hGY_Sm#"RyKv5'S+t؎ 8Ұ)~| +c|9!+(>cAk̆ +B7 +ZX(pC1,_Щm@8iE".VZ+*LVA"Zc0-=!46>or +4( Fp%<Z#hYCD194>C؞?"`)ԱN"GBjUthsIRr?R}x CWjUtR9x: g,ŧSn`Cء0괖 LV$`==ZIds =uلUխP0GxSkؾeMV," qĝT$p$&"/gB <}J(EdP)y!osȺ#;H_7˱,i;y.ȕWS@o~!aPY9UX(ulD| w|6BK":yFKi9g|DCQb&BAO+ZRE+ژO@]RBX‰s1ЈG +[VCyPh9H%ĠŘQEJEJ`AN*1h[ 7|VGLu0Ų,8f9Qcf +(ٙ"D Ow8]_*8\ӡ֠$B3I챖D,$`cAiEG 7b2pCDmuԚg>hQ==:ܭ+SH? +ݓKFEE~4dp_)3UКE@6AE91X-rc$5NxF%Mb C.4T4 YDjt@N8A癜btEN?Uf8% PFH%uuq .E9: +]hPp6a"upF(K+70 頴2y Ba Kd @n +."$$ +QKbBg4Iʨu:ePRyq}bR +M 6,spY`(Mmt&7KG)gULm: &:rC8 b MԒw&0\))[I{ \_t cvBOz|6SyܐU+EhB>tN1i"31-F$%}3v hpmo@ MQBS6+;Fdr/%\h +[+>2x%yW",iApR<tρͫS P74ҴR(o@GrE/H%yKB01]<$bV!с 5FL {p .LhC,U>oֺ;kT; 5 +8>&A֮7Y&Xh~|tbsiiΛk7,P snUũI"CoΥ2*=IT6LJO)jX@PB7%mt(FϻU~&Ɉ>!=G: v3vZ(kbNk\m U18pɣ:o)Ik"A8ϴ'xd2F tҕ'-00wx q{[Ni;&VbJGŧr$428bcw3^ +SUm`̝\YT,ʀ2j/hSS">#u#^pGԺ9 ,K3̝n`TN!FzѪZhtU⚼ +S֪KLXMPR +g 0لWt(v]^n=۷j{3i{`J<>QHPpn$ԻX@J9OcaDqBA.BxܾqII֎ ukB4PrI׸U_lx-OeLS3V~Ŵ=MN rM9M^IjgX4 eW:c(!NL+\HO;:PI<*(iaRhhפh/}tp.h'b@D;D}Ah:t3gR_v$B<ngL1hPȜ^b^|QąDkO]PAo +AHĤ`}EK!  #G ETAеE(8t;Hf轘cHwF6VދT{bCʔ`G@J'"(]m`.xތFLBl.+*fY^VNBkv9d=fO!̙=TOp.TvZ)h>Q(pW<`# +mILyv5\%jE3z S{pX$qB +8J#,b쭓& p9=:heeǦ^ecd,^M&;!&![N9Dl+Yt +>^Q 8VFC3.ucx(.$k%7F}e>RcOuc8cg9h*TjC>I +6C ]^c@_cg6=i였ic|Fh^?&u (3.BS!ˍn†E7v##4^`J#,(}OkV'V"ȡ{)g$% %v"&vC=eR_$2,:L]$rgtԣi,Db=")d42 JN=ZYI0PqN/D1biv6z/G̽f=Q[hx἗M7[VN7cٝ8&\P$021PQZ56[bh-D q"-֋NfY۬#)ַlf$@P[?^K@v*Stj*=4b <4c;>mT(,nSqH !(y`}$hrz<11!*HDPՊ*"i)T9Y~o_9<A4sԍfu=~`Hc1s ufAlG4\ sPd4gRMiUD1"- qmH,`AR[*-pBh``<%8_xIWG'Yyq~Bh bd)ь;Â!SEڧcp]+)Ҽ39guq(Dbj)Z>;yômH->4lN Ku+/pEPl= [BpqST(tF ٭4C .*!V3P\E B,Xֆk.vTꉜ3.M9ቃ 3lQhLMi{ݖyM,< >=! B|?krL b1 ԒU+yw+57XH_~DHS lʌLIbGé鼃+R} */Dlx38n0 Bz_AEjDwfdBԕ#;EBB:+beXe3gh 7Z|$z@f 37vP21ӳ>( +ne!o +J Z W"dF1(BXm0 TDbgX`.!]#q1-ij Vc,]$M> LjT$$'Q g0KneL;,y=/ߙF!!\L ˴qBsR>hMbhb{6 b>Kh1!9KC9rEqH$(,. q@0 K ;•ds +Ię+*,1] +g l1`RɰI.SLL1 ENڱP&a5Jq4&`ɃȣWL!t@4\:q|w$qk 2t& ZIԲPI%Es ~ZsN s N$ӲVQG+Pr| DK4 ⊓r";ܜP!MN'wMBe))._+W&@4)#RyiS 57gbe4ˠԺIh<` $/e%QKF}MMܙ8:6CMQWbع33ʖnaN0%(90A8hM014 \6xaYJ߀"wRRcQ15t`\<>\;?m4M}g=4z9`q0ҙD&Ä@X$60 1\f +\>CžǙU4"h8+MLs\z¹Z70…8R:+*=:%QyBV%7&$4X^w5ZE+E>բi} + * + .Z).M2V.jPÿ{m~x>sv7NDny1k豙5 ^XV<tpz`BM.F ^T1v/nRxKbx>> +B/B;٩ю^ -ц:Rt<  KE*ф*a DXY)狕@ !wl =x :ΎigEppv܁gwJ=.:tR lV/dzGũ\N +9uOb1eè+`gՁEp^+qq89B^e=jv`0 qG_evVdpBj좌1Bfj>= fM.vܘ(@~F\&V:Ȋ5'ǰY!FdVd7p>}ƥXd!kQv. }۔}SʮtCRv5)KV*k2m7hox"tՁ[0 RM6FT,) $X,K"BDA%fR7\W#>c/طE'gj>d@b d4 d$ A~=5d[2d?} m=]iqbrLd[4K4t?U9J.`\(')|6J$d}Qb'066=.0 +cGJR9QPZ3A/z3'e;G} 糗Q w0?;|b#hM +kg8Qԧc 2H1ch[Alkl0l>mMڋ"9(vH$0^GSNw%+b8兵X +g4eN+ 4@gNz +l cQVƬ"h7K9D2P!\'UOq']uؗx JM~Q:(_,"3B|$ąD3`d< /B)dWXWS,, +"R$KN;a],$roS>Z`L.@P Ox@K\ +Y=){EGؒΑ!/#U.TpńO1S~O>C[)^]RUG +s'(M,udPC@Z Bn/O8F DFa1;@;Jǂ_j;riZXePLz$Mel8*fo%qNEUCj_8}( \L-*W>6f /3VVb<#;EṮtvf|$QQƷWsJreMYJ*L4e~Ӥh$?ÂQmZy?D:i6y3emjڝ:) Bo4 ~c$hIds<.(Ra +d, .2WJHRUٍDPNKD +9EI\㌱UwZi?EπC R[rk+{guiӒ]Qsyoldl*- V E"B( Xú1|\D !`\iUP Od%ea"Ņ4QjQ?&@а*sm {h w|T?ECNCQ!|!%pWA7Aќ˥trh 9@TU'FEQC h4`UR,ޅRg%ZCn,rVΆCźaGGt"$P sZ+h8S ?& @`R^)ϼGhQ~Q~wgsIe{n"zOڐ< Q u((F̩$YNSPI{([R3B12lDR{\F+-ÅViȃ=ɢTBlF&+N\t_c~͋.SC_Z~i +"cȐ4gàYc'ȟPTB;щaS0k}}`"z5E y&VD8o:DT"*g%`=TFja#TJ" Yɀ3SH@&T.6#`z r-[iD$BCCd0 +;@w6CBwGcF$J?ǂL,nN/a\E;1 k#.wLTA/)"D 4r#JcQ\V$gゅb3!,uI? kcHJ""O, E{AJ!* +B:FB*ɲ xYNن Hc CV~xtDHCY|p5+)="P][8ʼJsL?S=15}Fˢ~;<ʘ1EC*"uGXg}y,l_AYc"|3(7=F!-H"]Jt.F*@BTh?h`_!67%;R] Eq^|3g>|4$!IkiX3B$U),Nq\xcf#”߅K( bN +; cH2/X ] }.#AŽaJ/Zy#HIeK #s9;m.|vV HUa +>c7Ej` 5]Os '&_#0ݏ Rjb +4}`(*~\>x '0D}" !GBAApvM %>sH|3|HVj؋2pH% +>< &L@"+@uаa9?0!ul oHy+_%8Z&ASawI !籋LCi?Br' bXTh!oh\~J2Ks"\`}pY!HT42=XK Z*OѸD6#Wc:3"u九3P5T$KTrW\0?g+3xOہciQ$4ȫ#9u-”TKf2Қ H$[_005[C"\Z('0כEh9kDw"UQ]q&Kh͟(ﳊ'V<以p +W5J IV>g7lü(Ukr-RK,3`.u&=+.aTʬOx ,"%v8ar:8 +2y(ѧn4`V1|3 Hb QsڼŚ2Y\0 +akD+ZR}I;40KNy(z`7'u +2Z8-+0f0YEZ>3' C9؁ ; `[@9~8 +ﳒ)?k+*zBHҐVd=QUb:XEҼ83sc*wݞGN31g>|3g>|3#'e ޚf+Yotq&3bSeԊU޾ +ouVxJ'򯾧1y)|3g>|泀C*|3g>|ǃeaCi;#n?cZ`zvMTK"Ĕe4AӠA9': ªvCRKh"t"a7T 05L>RP<HE.pv3ޜ% [σvQfzQQJgǮ4jNR*ϸivDbdvX! +@kFagDtRɂ1[N#;w7 ޶(;)Va$W13^g*UeoN4 +; +YaOc (i?;vS%;Nj>cGh g?vkup)9Sdž;E`#Lr`O8잃 ]^Iaow[vK W1ݷ}NI&J.ŭLMBT= +I^,kT~}A^B:q=ݱ p_U}fvC_e^ cd{Ne[u( ⺬9qŮTN?6v_7 u\ mCMJyfpp|%`+9]pӓ|LgK<h.?lݘüF3  +^t1%tar=f#6$+H {s]gTcupSY8HCDxz B[P9cP^Tvaib+"@8Y! |޸ R|A()3}p}xO{N]mgͣj /(w"$ް/o"ݢ96INf!ļ8l=̐j[YA | w\4}?JCw.|됍f닄b 0TYk3k8F%GI3>@> ]NyXBm3 B:H(BD +29ֽuNۺ+ȭ2uF5gl]+[Lߎ}A[|'w÷uF| :k.fm&MRYĖ-10QgCR+z&g(j)h3S΂4Z!Z1%ZZOEZZ͖9/̭u䃻s PF+e >8V%N4 UP ΑL";0FN%tRw'!P{=$uK^|'ي:UmS >KL1.5Q c>0Xr6lVBT|Rj(D"k`kO{EZlu-qZuVehRM=ƩU Ez(&8B)1@jL\7X/?sNXZF[Xn b.<2}--W[;=1M@5dA8AjlVP`[\r.'b.@A(Q\? ``tXm8.|`MKD0-aZ"bO4MnF p;nЯjc. O5N5 +C{b#c1N:|B 'ʁ^ܔ2>lgɝ>K$b+pgCUw')57BFY\$4Eai(:]Ȩ:_ 2 3`K+7\H @Tc0aqF#%B>xvDr-"ܺX!:Q! ጜa5dH&PM+䗧/5Hm'jɦ f; s)٥) &,J %}SRA䁠X-XTɾ JY3ƕɨi>ɱ#${%;JuY|:+$x oKϠd԰;jbg9JI7&;Wg-<p @Zf.ޣ38𬂶;`{p}}a6L$cvK@0{b_Xag_G? ;306vB$Y (áJU <Slra =-!<v;fX[@`t(E>`_&jABJxsM./bщzꢼRuM^Wu-|[HH^w .^G`QdJ]Tcȃm\>NJ(Hnⓠϙz3w0]+ wK{f>uԯ^Gk /uIA՝s:\HN⧍i$Wad7&J5l-ˀ\O"w>Q'R ]]W]_]nIunup + ^Bp=1U>cdTm PYhPJEr" +J  +ȵVue|eu6εJޕҁÅu)s=jpip]hp}\t\,J_@b-#xN17'ŊzsW )4՝fطpZB/țcP0we](^5 仠<ݵQ:kKP!l^  =g4im4fz&jGƞYB~arȆYUY dHv뜛غ踶:mŶxw2e9:_b{>9=puzYZr7Zۅ?\u^}&m?<cZp|bi LSnxPZom^Z'\2t:ioSLy+Bx2XɅ)>Jgpwk{?ͨd; iGǖ+PT5E۲n1{Chp&WRW[ޮUih3!O`ʇ6Гeorz{wJkit)E}, ̌H4a YHQ>; l0wxI0U Eƶṕ~\^a_^Bm<`)Flƥ]pPB"]9yG:C*⿗ |*&q@iC* 5,>A@.pXFI1!oT*Ou \OWny01z.,\9[/wm{h7KVF: Gx>2TalkC#΄+ +O"FK g$7Q@mGBv. +^lHCahUCͲo,%Ɣ$!MINwhf'[Cd !Ey6Z%14<Z2 ! ːs9$X~ / reCo!k!>UXb|PFN"B +2!鳰rpsAôm5^L-8.m?v`j;@%uR&@2YAW)t Fj 0Mr0&IbIt N&eڍ@a*,̸X@)S$ ‚Sؑ1|n|yjJb%mZ:=)5M'l4n̅gi8l\ۦE,%;bM-@ +[3:_RBC f' +&!t wnL_0 +v} ̃:NNa&BX2>iόX)PdRj7rWM@c^ب 6֐9㖕Lv@inْyv.G}Q>;5B%vPT.0J!2( {hLqr;_~31Qx(y A6(llLsXaLGUJq{ڸ;k~"4s/,Nlaxd(3/3yyXU$UT_aXF#6DId`igUU>.g +3`QC]Y4\,Y@MD06#Cy`CȦGc"*oÂ;s)KS,)Z.xN9!)c.j0]Ƙaplbv>lsKq:9ejʣÆuiUze|qn4h󌖜Q ٙTGN#~(yύGaυebC!%MLChA bJ9tvFbbh9PcPBr+(Y#̘5">R\BԊB 4ܾ-,a>yΛxJC l;EAKW->YG`KB=(g+UIWPrJ tN9ثUtP)w}/T)JT!1v* O2ek5QM-]iX<+D 6tQ zhsձA3 NR3bc;z7lQ @J+Ml OIjAhHiUQ U-(9|؀y-ê,ڃ8)XkZU.h]쁃ߨN *^*^=>DUXZI*U1쏖";~ɾʮoٹ(+(ʞa +X\K*e2{Uqj|B莋wB +(-f<S}VĮrĮbQp옔;vT}H3AcOLc /+rnm8"|;B΀2J/zqT燏6<5~z1[(afME&P%)>[x=X(v1->YQ+XNQ;a>6:u k\!o*t(gto&G/w{1`oH*`GQ4  +~< 35`&;@WQH,b~R-n|(#RLv +>S Z^ί([ uNZoXO"+['u+|=c|vs6|@^j3 =k %FLc +\ 5Gq8wqyK*`!uB: ޥ_\\oiV\/#% W<"3REkx-tY |`UH;H WDp/*N ۂN(x|%Xk&,ir+n2 (C準2p1p]e0p>}c'B#yV +*BɈ8^j +dУ>+dt/NxM + ] wEHB@]Kq_j9FVSdF +)\֒@=<\ؠBLNE``XAscl]d3T:;m@[;H.Cwh5a\MoS*"@$J(TH`>mB%:ĿU$ӧ%?n" +Νoueݺ:lK(=`M@3$ [ ɥޏpe`6 uJrO'Z:N vD=0ךqPꠢ'V:șVذꁎNn`+%>rNto`tKVBE)/6&!b!+ޙx8i 'ag=@XҡuZEʁ'$3uH,W,hBP'7Qa1Dt,,v*4Qbldh!5:P$y> |>1okքC0ˆBHXx1!O"G#R`W<ћ鳕Rpō8cH 81 Mn %vAy.QdPpn"q(v" љy ylf( +g.ގ (=q]C@-Ev'QvON*a3a('09* I6CU)NܢHc >{\N^bf(d$7: :h)-:hp,sfB"HôL +N$2D$Rya)2 | kx芥mSʰAOZ+*3x:&E'd7-(h + ^R]Eb}H(0kDHGd"mE(3_}0 \ ZNtNe;GF?)G1b +9]!VZ3X}%bSxsbha+MD,LMֱMGZ +^b, B>$;X`,tUجt@PTA#`DC!Bҍп//XY0Ƃd@+Lapw̃AmRNqcg /`ɶ/VT9c#`ՉjzDs)Fyc$𸴎u!!Xͮמ!kEAvs\Z L{DUX$*L 6EemoȈDױcSީׂl4n;vJs5v/3N"X(ٮc gIeD6Us 86 V},.XM!c XgDqAsЯ`c ,Xb.P p6`:,';aZR+ !rp!DˡDC}D`, ݸ}qBR:7J藃MCyExAŲ! + ڤFbb6_`:1N .N%/!rL:+WCge%MBXa혂"M}i0ʍY N)nt@.Y}HJ %c +(U|tlA/`c#Ƀ3bWnt>Zc&QLM2)8ɣ&Й 29%erJK2<82"$@ܐ EQS' cZ0yxxbԤ)6d++l Ec1)2c*/HLIٌqLgj @HhΓ[!3;`!K lq&@.F#?JǓ + #`$&Ԓ {.T8QM.m'\F#gʜ'R: +?*=>;a=t@AfDI߅FFS!u@nb eR:5TzO$~T`Q{A0M 0&MNcQF!ug>=B FIp)Lo8E'gGz/k5' &iNUEy3H#[ q +jjmSB5yB=5,99wQvf +}jݒ객9l+{*U2c|KXٱ.>GiYw6S툐S;h 1)F#@FjYL4`@$ +O>bv tpG*>=dҩ#,sfOȥ$ YG3>daq1 ʫȧ>j&SP34Zz'+H ml0I3w]CNXnlv.{oʮ'eO K<:aOﷰF Sx?TZ iǞƱS6%aVz:4v†Wy6ndY d :vԈ; Gзgt.LPX,B́t!ئbU v<;a'EN+;Mb_lσAڊ!v֣"vQCd}Ů?Vh'vi tOˠ:A6!uA(N vl_:/p ;*PXnB~)awj1+)> Dq}|'@вpHnU7gZG=B_ߺmD{` Fs {a}_[9:h{@da8?bHxTטq|ULtgqW:^+bu By`q_ou5~}_guj:U:)|]@8- +L]*rءZQCBs+)[m(WX-:ݢ^z\EuzCn#^g ^/< ^W9 -V{]%XxJqTq0r0,ǡ,H 1PA3dU#͈:`k Tu]?U]Ǹ]?rIY^+]瘛ODt>k=gIТj{M]$ $y[R?X+}I9b쒉8UɜSs6L o vٕb*Lc3x-H )_z\.T3#uDػh~`Z`]:/IZ̛dR8,zlɊJiHp(OMH}q!7X+ϼrX.]CrZcƥͺЄC侂AFG[k-u!k}] LI>; €Rx̨Fx: LHz|@`=Twt v0 $[\[&X'\e`PQ(ctb@? A82Z4r\@,WRR"H'lpߐBpf/1UXFb H* Sòڗק)( F + kdNPwhDr]nbC2. / ;UsA: ĠÐcERaa>9,hd5W+R B&GdE ȷa(Mg"|@\">?@|p *.<2 YeJed2&rLDC&$PS4ERXv| bdaM5 +z+MVǃ"E@{fY:5-F$iE` +#?+<q&.Dwưt>8R~r4#y9S2F 1dzAI@ Jf6JB:>K * +FNu<,:^BC[` i\c.FEZFC*(cycS2y&/@_D + >EEG;-ALy-UW 4PZD&85Y-e#]M9o0xU"|nUۄeۑfӷr3N@;=,>! $ I +``X9Pp@D1biJh^ +RMSDN5+e>T%8>TPJ"+&[s7 X|ٍŵsƭHi-aסB:B 2wv-\U6,CصX@ߦb fjnȎ8ܸ,ZqM~\v ^e^vlm4 d.1ܔE|ߒe"|A$G !v’ԥda܈T`  7Ksav})ҕ J\L\A ) b.$FA6xZ_ܳF t@m]܈P\FĎ%('|F"b +Ӌ68&D,ѡd0)zY` +<:)NÄ~-"(J |ԉ4-:T6z +ո,GU#tL|&DDYq S 1IS"$ޅӋ +Jcg(8iɰ,ӃĐ ."*W>fE1% 7|f(4uR$Gn("."Ȉdb/XD- y#a9F0iHo`js0)òV0Si| +mLQ D`\РBHn$Q:78uNR. w1T[ /5w5f e>+YNhD *$DC= +Z<:l蓵J$` L--կ|: )DyO`PIBn$$n-ShUW>M^D)͔Rl9qs󜌄P!3gpKd lm#Z!w V<\ĉڹ-zDR tQ+@Rgծ`Ӻ%ؐ1%. ,Оh[=[h?%c8C Fm>T: mәQ-jy̗IuHԣŠ. Q}NnZł>fA'%AQH.Rg$X"|12;mB"s2Pp; . J]ٿXYv~({Le=w`?Wg0.͞ߨ^M?DgI@B\ Ws / 1܄I`4u&, ޮ VÌg}cc/Vc4&Q=AȎ \ch>cG +5ѸpJ`T @PpP*^m"zӊ}b_5E"# +32{bWUC{&d}Ůb7ܮ D:dl)%98})lRφ2XoѶ&ܧX'İ ;̝#Ksvp ; { C +eaiG}ƪj>}ia$&sFFR)cWOgL P˷%ɨ +" -G"?_/%8Lb!^0[) 7G*{ri~[B`ߔ!WR 7da5vB+aLk^\`1 Ti 3.@<!p 2ca |-SKHR7NŽh`lJPVup|=>{>_낆ZV\.q0W_U*=l*~O ť7" 𜄾HEhFAjԡ2Zm@ +H]p1 +^ rڥe{BHyN~00/ė?5K}i_G_g%}Z^VP-+gB':P5x~H2 +"𠡉ZYuRF%QNΰU| +NrpLe3uУ{]C[<xt^,X[:&!0`<2)h nj +5z^;jg%U!pU/z)AC41p"\ bNȥ\,5ft& +@5 -hȉ k oA V ǔCEq%eR*MfZ(VjCSFٞk%,?wgĮ a/?"; ;ZI!:k@dAkc7CdQSfED: +1ubV^\|>#%ЌezYOӤt}F"Rd+7( #gRD6=ifh+@Qf;WC )eԩ> OT*|_C3#@ "V/boE2rZA!f:}V^A  +!m8 Tp[ i9<ʁ&G]܇38N]'uNA0:@Ē֡># ^H9!Z%҈΀- +N442t)r @I +sgE K FPP ^îb^C@ ont_óy=t*%$ȉ@> Yg!&.af`L4-}`R_ >{zmeht3*@;F7e:6 /gD3QG@dޭ*RjEJ205($> t'U'6pStȪZj֡rNF*C "q`%wq*{UԐ<\X"y(֘XH]ks4`,I90!U B;+j^Xl3P^׮P<0x6Ji]*ӷ'Uih=#_J!}l6#L050Bp* H@&acZH&$Y|&(<%4 +jtJ)RfZS1s?L3 N;#R#:EDrC+>ti#8ǡb$p݁T +.gΔ{p?8Ä@XxGZ̄L +z+IN΃PA/Vo +&T5OE=R9᳄ N)l 0N %2"Tݹ =0:ɇHrԲc.C.PEN䂃Ca"ԉ"Tr:h qX0d9Dj!-fFh\H?eXGUߗ1 35#@EG +4NМDE!45);R|mDu>|fU M}y2cb!%g!!i5@ }v }a`xO4ɤ>5 +r,PRUN}#2ʮOUCp\I+[ k } (dP UB0'{P +)Q +q0[$i] iLyORZUhInCQ(G +z{_@?D7D7e# +Y&s罈`n Q9N3~;e$Ip('R.X Fb#^y!dw^aL¿:h4R{9L_;cA9Q*՜)0&+@l 3{#b@@lG%5 V =D,>_īY[ExVB"93Tbp 9!8 J|\j\x +ɖJbH:Lu*.тX+A*hN a{_F/I&JF4}&ɰIlug̽PBm14?D-4bE6Y ضE|T&A+~/TC`"}HsR`GGVI LygWe`LF#l~Vtͭ}\Bu-o}@դE +: # bQ[2x+xgM +/}fA?_W>Z#h9y ?sg"kf|k^FdzuE7Z\/|*v'({Wx?Xy?樼Or VOG>hQ @qV#NJ<:+h['C +l37 z}998pyds2ۤP Æs>_4>o/2ܝWbV Zٴ\S /R:`-lpZVKfZZp?\}fY17<lEt-w+i9+D1\7#r}:pg}~pm*0cV+!r_[R\ v@[>M;_a|a#%AoX>FDpQ Z*ܸ"i%pg K[CVpgWKςٖT,* Y$U6t=`JsјHN&>3xЅ8A3AE,nEM"{/ :H|؎"(z :N 2@.N3ܘHoL:ʐL-3XH-puD\٣؉4JypBg!fk'~f _IE'f !'PyB6RE!FXg dZ@)Q鈍P߱4:=;8S]M3L̖e_3`W1娚бAQ@SSP 4jJ}v)U2KBc#,lBG ΌA'azaRn,IَU&cr&`B@Ez򙪱IsRN4/ !B@\LM\t:V"k?[q9t/ i:3 J; Aڙ,Le\͛P<;.cD!R:֖#߫<.cmc1`kYQB äy +d1&XFMZl,R6bl|A\26$~nD  # 7%ϣ[1z{Hoߒ3Ж"槥_ܧ<ր JgRyMbA0D_J#Di)$Eig:!jKR^f͋g4Ki;bi1i_5na^fPh [_ʅV0-7$RDl$ ;/KBePPm:{ݧQq%(EI}\I  T_ }5\-T%+]7&]/ ks +TFU5(€NUI*,2V-& z^!EF$*Z]r}[ /$ <%%)P !B8 +QD\0 % 8#gA̲P@a"q#6<-< +5?r9J6o?/蹴Y ʷa1qI a3TnytztRH6-CZɃlL* %Ŭa;!YNUq'J G5%kZ0 ďŸʜA-PH q-ևjIAT`OȜݸ|`RaD޴01 +91+<TvE0TΖw ~*s/8Q^`Dƣ&Ӥ)A ;L|F[ Es:lM(!Dx.hu)7JҪHS YTL@+XiWx$-&Ξ㕅D  JN&ؐ&Ł%Hjt!JGI`,TCYNoC1F `F! F/ /F@$`P g9WKYH(p1|6IP&T@/-&)64CF\gՇ 1~EX7ҕ1'cN +49d$,Y|vbq4Z#͈)9T3 ƤcRsP& +|'~eCZ3wh-nU[5g1°25S2x8iVhjJ#L}Oڬ40SRã`u3j"X]ߑďPK`;ӑ+&3rV~yATp4<84,61T#B@P\ +*޼%TPVr u\iga #~h\"$"ΎD0RaNt|zt#XhO!Q)/5CG$Z>ĽSN R Ui)P@B\EҰc奮 s1,~e +$P}+K-"\Aa8~OY71IQ=6rhS-5* ٞ'$.?B:bD)t{ BD*?,k]T_VL17o!jHRԬ9Px0ܥM(e +KgDȒ +=P\~V+KBuɯ G,J9g7t*UJyOBLTuFx:#0!{ʴ?DXFʢ֢T4$T+VR`JZrvLo(+ rLwl0ߧW# )tA gfÿK(br)%*]6 Ym[$Rmԫ5v.W|r ^B*#;T `Sw}h.5%Dei.gyf R&aHz5-"O6*|Wi`%/Hk@c#x&7$9& . 7 +}ͨ}&k&uZ;yEjuXtl\2_#\@#,.lXK$XyW Pv$}桾O"oIw8~QD)hgPꂙ:%"H3r͢'&*ckE1t?L.)}}Q>k6Tj>c5PB5=tViȮa`&8F/vg}rv @^1 +L}a>Lx?x ŗ|3$تKezp0ت}}N ~F`Y}˳~qq'˸-ԧP}Hc2t03}1rQ~sx0]q6WZI4:H^4(('])*հYLe:a] "|1]᠝IE38VcN{@ Ķv>}:\ܱt(hT\r恧t5T{l!ɽ@ue5`X} I=dw T rA>hE`Ш(ű1fT,5@ +rڀSML +[%<72x5 d冂3怈Jl)Y%(fV;Cg*vǥeRTӤ)R̫$j@:&p:V\ +M{ + +$"$`\識q Gy<烜"LǤ脨VԱԱs^!h^XrrvFqgN ˠr1nIv:j8/h +] C49; K*(b4#iU3Rpm rBF Z[Gk1Iq_+ͅ R|"Ǎ6EN?rI lfgGtN$j=mU&p>ӌֱjj +.7Ekz s/'pCnR7qjB(V*!N S >{U <LQ~Oٌ5%iWrg[`_[ bYTx ɗ CT*|*&逼'(jŐ.ZИgJ"D.J3Y㌑+hN%7fB-ZgUGĐ J0F ^V`J;.Xj`L@Y? CAjLh5(x?!I& 3RF'1@#q& [߁GE@; 58IHBFf'Ǒ`!jqK=" Nv4bRѨEK,A +7d AgXqZ扃aS=gv>)ĠKH.]I  PP_pW6&;VRW 4zhȟьo`Q+~$>PN)FTiGNBF!C?ݹ?|VA]m\+ #߅,:75:ˢn,V SAD* 4IuǒJLpceY*9$W1k:[>$o؎;erOf tf%ћA@=A @ +tB[d\R(җS !*Sb]\Uh$0hR;8~[ h#P͂?$M$цKdD%m\U:gXz`7X` 1a~iiy#лxHG_m@i?y8?'5J +>9Z)8P*c[D.[l܏% l>Uz_9'Di{gl> ~'~  l6/|Ua>Kb}g>4(FXpL\\ -J Q-h\p]6a b[bM@>F#2[qXq i!hƠ9 DB`a0~W?Y +,I +>C$4Vu NC7L +Ӡ8؜p&u5JD/0Пk`Tp' +Fx ._|PС#BRC ,W#`#)ğZ- ĄOnBd Eq[ՂnQ:0E#m0?!? %L-7b1D@T&|~*6:9TЅ_0ɸ,30eƥBhnQE1JuH+*tz_?]7I>CDbj1 [ͱ! Oύ(`Hiۑ +ڢ] QǴYT<i"f G Y~ d5~E0oU')PRDDd2Ap/1+$-S[^=9r!Hb ְE\| âJ\IP+%ؗT"?d?Jw!~}A4 {3(Un{L@ǘ>T@v_5 @yO NzhKT),`rp-zm$Т/(rTXx\`B>RDB⑿ZJf!QBwMiQUcu d./'D~gRŖIlrEUr-@ ES)g.ǭ龸Ep_/,?U|6Y2+X f&9O|8i=t"g]+\#MDHHPE|Ύhqyв\/E84(P*r,fLZd4iш09ł[hfQ@>˰ +3Dqd"żT1)㢆Vw`^x.LCX0ؤѠқެ&O~zR ,D+FՌGs)·PPV9<Ųgޝph Tގ\|gu4<^Aq|IxSgOjF!"|-D~.",ӆThP+jx4֊VX-W*@ +9|bb@f+::>l&2`RU YtJuvw32KFTfF:%{#@k!W|eM + RO\OpmB"E- *&3N\jnYB + MB*sXX/mJEfץ]Tyjd2$鳍2?95'Xߔ*yl{"FC tXK"Q:!M8RU+ 7B"Iz?zKVCgG(׋?4Jm#O7U&-~RT`*3r}3F8U<1Oǀ 6H?)]x*@_&TX}Fʴ/jayu*(mX`ø +J EIL9"9s 1k3Q ?9nϚϟ~9f>|3`Tej} *FҞurW3J09@5rUw}5@ﳏ/`1$oY?p_XsC9ZA{w5Ucb4+=?%^b"~/nsLLQХXII6'[<˼4S㲧䏉9`)6TaPsJⲘcux2$MT8=6[X,+DKjb +)BJsUrsAPSD"HmVXhGU@u:ir,cQrD$I:~"\Y磤`-.溑rXB9B2Qݩe"3E*jDTAU{3Yiڸq¸]AlDkz;Zka e .31%c%`kI%䥘GnS68D'il+Qy4SRKiU8.p} E4/$x;S/gj +Mђ*8C3kqR̛\+>W+'j(G}^gHp_qھ-mЩy7d"%# v)67BX>*DQڙ8:e?b.ysidl0Z$h$>cO% Ԃ T 'U&jD|DxX'aR-f1 &oMW5=gMПGZ VS>TXAx_M[{$aNU0ӐAE%3Ӂ86U+_TkT6Nd ;dTiD#V!$ӽJ(#Z^  `3;N UeX8$Lp0Kp,9J ^`*[qEG"0*KIfP[i\aATW@;uFd@s"_E(Lʋˡ`6 :;!:XH*V`:D}UZؘ65@Z|05 6s;D?ڌ_sl_ @R fDGxPA'ViU g9TC E ЊD:SaRf 7d0?W3&> +Xu(F!.a0=`Q0N@l#)PUϑ#L>LnszO7 #X5R +ɚk wj%"*11ZķpH VXHȨqI3H-)%+Q[ݾPR֡GI@x_ď"BiEM#l爹SQ8Sa|VHZL:Ӈf4M?%@u Jg4tg +9j0׸ڑ53b"~ȽހFfT"DVߠ[># 4r`4']9GA|>1]RB: KkzۗRCC?qߌ@>wE '=< +g5EKLGt9 ("8ӯפUJ&*ȏI|~Hǐ(GYRkEA8lcT +b%zASr! V ^_LB*_'18~x.ߌ` \H&Xހը!|eT;&k= +mSO2 jɎ߈J.l:ԅ}^9 `oP_/ pE@[3k@26"8 {e~gGܽm*LJ$Uzy^cV̧WG|M,&8vUݻUxZa[hz +٦7*HIaPڗK~g'.~"!dK!TԤ ? +ÔD;ְXY`%Wo6.P&b]keoa?_*gOX;~kgwLf'7F_J$)ֲ1ԒFDF!o" y-cV$09RD?u <_◌*~qĈ$ + wcRf”`\&. HdEӒI5ycZM'F+~Κ?B;cT}3g>K3[Jd/<RQo8mLdvѾJTɧ%H_%A{Fq'iI"*xr0Ab0JQ3Xb|\\$СG5@B'Jc30+$*/A`=DBV*t@2݀c(¢RasxQ/[T\^ݾ|]1`@I~;pb)RNKљqHg:(dP)R׍s3 :exgSp:$‹:l+EoïO J 4nLuEhd(b2L9.OG2<lXިꍑ*ȃ+QM`o{g#1fBb2 ģCrڟOmD ?L)>`ni=l}ſ` P~\!`/?GĎn ua@̗T@Yg {ցMT^P5/0?}6H%@@!%ٗQ.}Y9ׁ7~ L[ F~g4~Yr$D0 I:0a_5u*7a=,M{Xq.m~?\>8!4V2 +W`T5ee^fyg?r6X$W)O2D7\Tvck ?h̦dMQ`I+܄8IIi1gBn؅!@>!Ra>rϦЮ4( g gD͘T2ڨs@@Z*E!e<@W\bDp8_GׂiRaBY~McHYFǶSҺ69b?gcKЏP2 +D28Ja/0'_?RmuDYmtȵ|RH6tI'2sˤT X}+Aoȴ z]eDF  YxZ>`N4> ]Fq?QN=[hL1gP x `'WqH%8|&?>Ͼy3Q[?%Phc)B!J j = _P>*,#sZ'`ASBV tK|#;Z-~eU|Vz%d%ۘ;[ՙSh*z+ŀ[pNy9s?:!/ U1;9F<bߣT|3g>|Js(x$AoKQWkYwX] a'Z6tD3C/&+J0etp:kaA`O M K\?X9^7f +0H\+olͥ+3xʃcTs   $HMQP6"giI}pFb "w %auQv[*`-b2`”D Z; ʥp:#(g~RG٤JZ>SD7\uVUT/A +dISR0)6nD>Hʥ|S^^m&)FW"LLurg}/MR@,셀jBA2 +g1,Pr+fJ0Bq@{:4ȓtXMhVtDWzl@UX/6ja٨1Š2 sJ` J3˵%՝Yx:j 8IAM`ȫoB# P;%>0X؃*?1܂8e >Ni R`)I@pB,qb*yl%4%Muy +©:Z`Qg2 k q),CD'vɁ\9gI5|33\=t!i 8"Hg^ˣ>cx0caW8q(jѡ+"8R +u4HD%.+8.aM˿m@^EbÁct]ubDITFp=+3I LŲt.&(UUڙֶ*7셛$ ׋D~.w,%ߛZ:qVsʋTķy%+\4gP't6H'L%G@iyJx!/P' EȿyW\QKH$ @uEdlc @{lNPӲhul'LW`SS9Y@l5 4W@? }C{TkIc*ee<1P`7+fNeF\ T!T1oK,   Q7C~ 5|ֺ>GI!| \ +%&X$#LM4. +jDk%G4/kQ'TAd|V7ڄczjA>k~S6+˜Iy.15k,`ʯ(ȟq%|FΣ:0ӷ<["ȁJDqId`LsaLA'l/ 7*,c*q;ƽ1TuN!} endstream endobj 22 0 obj <>stream +:`HsUnPь浂e7õ$Ւ?L%:&5QumIAg/`.ǵ0u+^ +O}!S$,H^g>!PSZ9 \yܽZ%s?#?ʵK}j7 Q $ eA,ۢM*nVg)7x .0+☟h_\ȏB?- g>$yEhFUI/bA2%PO/ H.*+DgZJqԋEs?̿bEK.! O>SRZS"a%dqؗ:)B cO+@st2)9儗WkG jCZ Ė )aTORslʕSP"sQ/{ŝ>#;BLfa.?)?},hN%Nr H1n*ND)%R 1Rmew#3Gᓿ De#ECl&McB3g>2 +D{ 夅 H2IJ PyXn\If듸Um"=mj;r;g0:D̠༦("2{ƹ2soހ#Ӷm5bopSqQRs--Nݝ I ݜ*7(bwK}qNkgYDƔzQ<>sXͻհ7q2` + UD0.q`{HJ@s1?("B:8 .0i*쥀̭1T VBS`K/ '᳹Z>GH0rLnEVD0gW/.M]5X }vi9eG]1(5{]WG>Ri YE%7Ԋ4]ϫ#q;:Ȟng^ 5A"5h4')x%\&3C`|<X•w8,r8f#&O +QVH~<*[[ja +c@4RҮF`2ykr4uy-u +#:&޿y0q!$v>{9 ZMn7\jy 1\OXy!I'BK(S)9)BgxA%h*̫$bs 2`+2ؖ^.&ߎkȗ/RKCK +FX@=ި }&Ŗfx9j`@K\kVT@wT|| qgIņJ +00yFtDN*" 2}1W_2 ~pCYNY+#S!9c$OѸ!#ܫt哻]Øbm9Y{8 FK78cM +y1#BQ*aBt]vDR\Ba1]LPwHR+ PBtERWH0@x,/5ՙS3x}r,8iZV,'R*"I@C¨# By&LqxQE#oon5Ad|}F 0Z^@Mcz@qڣtP0: 2,>Ůa #Z:NC-!B>C#H>GJB_>@ υ8<Ys 8r+o!6<2: +&wFEhJ6ѩ8)M "H>XL`薛/OMO1 W$. !K3 U$^O~$: AbPZū jR~ 4+_XJ&7n[:S$C# JZ +CǑzuc&>XImb=&c1Y,dBAID +1  +">XᓳYCJLEgI Y8itqPP6$d /f)L/pwe ߣp*C T )Bo->{͒f"Kf.LH<cNA izF!IŘBynwQMGN=d|f qroXC2|b{pY^ gx]Zʗ1 8s^(303 T`E&C($@9Jꕬ)X~gA|T'X9LB ϲMgIp$̙MpCcnL=I`)q|QXĺE[4J N2jmm 좰߸?D8(&b Q,i 5.ICC8Փ?X܃"#"Y1z! &C0Fȉ0e(&BXgՔM^_s9g|>{@){B"lbՇRPuK Cer-6:|DR0(#Ņ܅JCBRA#+Z>gekD7FX=_':>hgצTaF<Ր-F²qF'wW27EB VЅT:A u*%Lrt2AjqJt\T@*q@V2uZsSL }bNo6¨#BmF'szBˆAg@bj[q]ҩ[> +gD(aӥD^<MՄS+Y#rizuPNRWHjmga)nǪg$&Lq@ <]87U}5JΞ,K5Nf֨Y>6EodV`GH$`ƫt6QR]cZU>KFFuS>92NqVV:Ei?k& _ʔRg_ e Ң`Cc>Oh}Uhe OҫL1ai8%ibXZUw((K Y^#)`Z`/ttGצ k>~TKTIwFr#7 |}ӿ?AK亸X$>/.2 l }r:\\cBYQ$ǮTYdx-?\U g*%gu❄/Q%X1Bl9}p?hs\!o:п&vrt )O,X!<ȱ4rq>N,ԢX~xU|UQ3ҿZS8#IV٩u0D'uC+Ԉ N& ݄VH F>'=d"gvG;B‰J@R`|]tZ'^,E>Ȇ/ OU06B,H9b52@qt4p ̬HEXf!0NC+vB<]t- mw"h(Tk|J91P'5X +g2E=4F#6lf? 饕G ƙOhgʄ gHBՈCǼT䍐6J:J 8X9:@pEY+H hCX|849,lg ^Y: +s.IB"yM?8Upb" DrICQI höed~҂XƊ3/FAmS9c Lmpd #??>hK3zj G:h|:`<(UkYC%Q=&db`L=>ND}8F%KHU>h']ĪxȔo*_vD^ 8Rn͗z#o}#lF%66 +glw{0Ե=D8ջ8T?Y3 LтO~P>dj[3[*W+ +b<5?Lz +7 +I *  (4ʨQx q4 +&.0\tv`|g%%2ఔM#l6Rə1&Uo,|lq1L挟5/#a4V#`[[!DlԀ#,DtF4W(=FQ leҥְ;q90 Q}h3@f`:\1),>8uZj)RH9p2ŕ03Jz#c!N+O$d,FlKj`M $Rc 0umY6eq DriKh` Y%wdx`VGG(Dw@J~M%Bbfbx.)a +Ijؠ$^LQ) abD^eơKdȍ^1WVtj8~jYLd|6onre +ޅV砑 ˽ ?hS"4Yj`FQ0HHD + ;,>4:t +rmd״:p],…0\̢JB`o)7Vd*1ܜq4Cф2.P~̪K}ug'ł +2 r:(s9AI>LnZUW̤_ +2Dɐ a>k_hs`-8⟓܍\-^<y)1}¥ gm&K`|c0@<*s33 dӨH,2eMMGa΅2b=o} +0J_dbY*BU>3M4D`}L#~'$XYqGj\sMHTD$n zj00G:yV6i}VcҸpOhR?h#t NĎMaj\AԫUVATOGsp`)wqqwz0W? PI[Y$U{ة"bybP2Aڶ@B|6Ip³Z%4e(/pN*hZbby }Kh +{?E[%DJ3ҒaދP긆φ~~#,':UGn6ھ3`g};ĕqxi VE9!~Vɬ~0r0I<F-ҭ][a^.'hX g$b,4D`HQkPb3\JMLZCPqJq(!Jd)G(N#JYߣZ( +W"zpV}G>޺y/ Saf.Ѿ\vlCH.Onqߘh^Ha*Q8|Zmad6RelYu~|!K B^T _C%"Oܟ76@ i4w)BBQC|?jaM5BJSBdX.%TV `Q.*x p͋v&"T\ +](]6ȭgy֣rs_ӻf /V+T ˄8|6 NjpW>,`(>#ڰW3E9Q2/q?M|1DgRVLc{YGL?Z_ZxۿF,tGi;gJ@kOM HC}{*P>ҷok5GAV=0r)]t(Ll )K ~I֮gڌG-FQTU^5PpK^,eYccŇDy2Dd-t覉R[Mޑܡ.:^94_,i>9`d,݋~@ qt4IU1-@G@ڼցsӮ}i_wVR.[ZI@> J6FjFg,"D GB@MւMͫS;'<|!Ι[ cE C_5X)Љ3ҧi;t(vE 1&46Au^ JGqP# 600 ԭ.! M-.%mST90!eӞ +0R["3 +_ȠqA|b& I8q3ڰ) R?( *HE{zOI]Z!gl(A@@J:{?5KF˔$F!7|D$%)XN0Ȋ^1Y4)R䳔q(z`ԆMP66lBr̈́xmr89X 9ZI@\|N +cU-ǤK( ["Ȭ]+ftU+=m4H)IOz\gBU*v5|6,l1fiBL{JPieM{"(BQ^01UMgʀY!4DA‘4ABR <0[Uh1|2M1n逧8Pv+!:S!iq S-֊*r"M[sŦ `LVIXm$up^}VP r+W8-.I >o*K^%DY*L!r˓µQ8 I 3B-3]9hEN,N(x*x%,SRc '9|@wI-5пQ@Y>B@C0ǰ` *=(*gJԀxD/.@*ЂxAA<8rb P +G@!Xzb$゚C0 €Q +# X3Za}0 +Cju }YaA9[CN12_ȐPbN- 5& S +'"f!4Dt `ETɄ)_c>>pńx+F࠙6ʠB_Et+ %dl`L$l Z?\|B.w$Q=sWhTy 2 Xiy/ ~ʙ>S6DbpΉGt03o ]F!U"*AωfQ]T'|.?=bCI",'N:`g} KV&,0Xe%5w8i - "A h#聣-El:*#i3PfGD;nO)C2vF_M ,O +z7d3洛4aЃڔ/{;LH';@| ZuT/w +$)doNy`J]|*[eޙNJ:XRއ8#.&[Θ-G'Pj]^ OR+gmwmbH:6*Kз\- rx*XsXf#%}U~'} Q@A@UBaJ;Dj΅!NrurvFq- 6ߩ$-{=KĴ:mI(*.%ZĔ]yYxNuhEBUgS{qR8VIߥD!t>;"mc`>YR2 :S +&"B)PiG%1jкTePZjzr~/APUE.0ネ>qr긯 /LxOJ^ +UT:tŏK= +7 X-]]ZNj-xkmZ# 3o+~V4DQg?[H+]}Q?l]5'XWJ`%LZeX# &69pR$ %>^Ƅ2(F<&`"h<@9sfXojN&_~EW* + Vk<|PT/QJ@!x  ]3R _}Un:Ҿ5Ҿ1䋴oxo_ݵnߔl_#@l?"Phr }IR˔'<AWx +^if:umK`ҥ}xD>BҾYz:ڏMVCڠ} kо4~?Z6E8!W"{P~qY*,`+R0ۤ[khrh?{h<퇹}j??@]~'҂~̀>zW<y.|ڇGwU)L>;x&sL*!U eXZS@D_I8mi&1dÏ5D$+r%!cT-;vf4}!zqWg2 s4: m$zY +g +)B͹v%|b/3^EDQPABI #dKIR0:`)_RX>VDWRCOçWR G@"8 +ba@8Lג* ɆՍ`S^Dx1u(}tf,FP@9*iX)R1_:a8MEDHUY<dc(w!dK &-(mX(3]>gta'_A,ГvDG焹mMPZj%:R4Da<'\E ED¦RYQ41_pL:1 sZuWc'Nr=p(f(Ùc#MTAq|CfSC*TMSQӛIZ +bL!w+ zm_oI q U4Hg:VI_J͂`J@E X)a$Q: -@|f>`K qA 5p# D}Pu IJҊjD 2k9M'OA &:TQ&)&A87oEaJ}kF9QZ{mG! +ôƇWsZbYøg +X~VrF} Nn-~TMZ}6s̮LÂ`Bo1cn#jriHZ1~EA6*3Y`FQ.OfDjM1^ D>+<@UyT&?Xw`s 0n M3mX+. H*#"] i z;[i0iLF,:'4St<@Ҩ' +gRLLJVv?CDua,.Ж쪠vr_v>^06*1! + TejBN3i2>K%B : +ҵVߍP}-.VCD>L޼Q^FL\񙼜g6N,3€zW6)M4ܙ4HC?2tT0ҨDDlf1]U x^BxIc#Ji83?QO2+ 0 A*\TR񈁆 B0bAjmc ,JB3t#CEHNQ/߽='7</CaάZFNBߋF*Ll &18T5k*aA>KwD)5rC4OX&X( +A8ik9 $ +j63_'Ny&dhJ#)W# ;da\rqs tRq[/}?h?ButD* |0Hr !2CWL**?0&\X|R:ftH/Lyl,$C5 TKX0,i3f$-^dhnn1虮тZ G^AZLz4udq0Ðt{F#Mk]r @)goW+ `q*cHJBb4C| ǜl%x@<&KTɈ(rxT~PB2A1aq!hdm"AYR0ʣRNHHJy`5\ N0^oXY݇b'N3}FXMoS> "|wK +N h߹(9YZx%1n^{]3<lb+3I1J^)*oA\ !Q/GIr~?EjJ݆:&=cq DpXG( ށ+Wde&%'m4\(0R# )&)O*W(}UץH3iKPI_~易-s`bQ\uFfITK9aSk:TTEz7s)͛NM*!*A}Tmx1NvYY[/.M>`Ob>z69oX@8 ?81)DQ{oVּPuİ& c+KaicQb3UԅD+'4 /R |6!"M>|tOوgyȗr7B>WV>;TE@k Ԑ+<,.Ӫr81NC ^I'(Kt>GXJr.g +;w?U< m#!*~jhX*\V MtL(LL.Lg:Ê_G{a"lz'Ўg7oD'g gLa(VשncrX M_k|xP}ھ mG4wq}fA?oU# ?8l_ln7FUXJDH/!aVxr ʷYjjhh޾R?ﱻK}O,+Ƕ>ۿ=kKF0,QzlTwU \ܥDF}g(ӲT>&~cl?1z3n{ƴoW+?D*c= ׄ% $UuVVuy[5Oeױ}2lE1lԥxۯ3`aM߾_X}\h-π 3. @Vl*m }H~Cؾ!,?k|7ai6)O%3PFqm#Peئ!|nh#nz!㎞lQG+@">~Ld\`5>G /T:*a i)aa&KSQ>dTR`q +g Q),VL3ZA/; +(0ELhĚxX$AXM̑>6Kt8t<Ȣ4_oHX.E\rTl3%Gj蜢;A!It%x UNP2hQz eLv2)b&&N+m &cuVb#'5g, PڹHٛrtN^TPrT=姺6O5U6PH)7F+|C.L +,T,BY@8DPPn w2'rU<PԤ ?ET`@ce ת\,i|H o'WEti{Vc֮?!5ZӮ>2 +ʔV::Ǵݺ,0D3ɫ r7 JsUZuj%u*/3VK[e;}/f<UJʰ=ܚgl¥ۘ$AМѴguW jwYmyM@5YpC8ՉhEqLA 6$JMаSg}FmN S"X+I`A_o +­C.Zfg|Z7!X.Xudq:9&!ʖFψEPޘB;s{H#׮P(i/YCH!LU 3&* F +6]F +a*Ē0\D7:oC!&jc#ijԉ{0>p M#*qDImB72e=P땒KJXkajEdc#]GqxFNdr8xm E28 @Y0r#i/TtP f +x@P&֮&Y%|fzkb*F\HH q>$ 1&Jjylę;tyTɾك=POgR Pqxeh ~$x?VrE Gu _kD ohD|v +逹2`fAi +&QeJJ)X=ƴ`&)CC,^^f$~ 0?#R1) d9XIpQU&>s#E$J&@`I&Ptmȓb +F)H9A@ +ɞ; ƈ?+4lOT=L)g)*.*(;-1k2;We| $ZuA_>QBB)+EqhͱL=/ +ߟSCn>#gtڢVٍ܋3'8u<2y#&bRj,i(q?NY={Tk(6FH#>d3Rgf6FGc_B|;ԧ½2BkDCZX774AbYLQ|NsOKj9lx4wg4 ZkO2/!hɈ~l(CȐ+#tJS B| +VN gJ'-#$B2>$.JB~RACcugA'AgNĮ>^K!uFb9L2tGӵЖI8 Q}ۭ_ :'r}V€F,0Z?^)_}M)t,41T>BP.$g +m?!xFnnKÒ,6Ejhɩ%F+j'oKU*Rkߐ?o{Xw-}oP/>/ PD3(E0K.~lb%V)JloQtQdق [)uUS/tIf;j8;$_>xJgm_(E"RXS)ũbrZ"!chlYu7swG\m2}]Z9.}G,w87$̇F78ʸFx|/P4gbZ[Z-"-Sz.ɮ tN47WR;U>zߔ;1ܯt > I| 8V%g]68k lN\\k)EB yF57^&qgQpȹA@HK}b`SBSam3qY[4e( '^&ȋ14`@5D旛$"P G8. g&39i7#d}c/ 9v_M\[\c % ~_vP^,_}P 30yL+B}pIp<OD}UP6u]1P E_HMBAFon!9j.5H}E2?axWZ 3'{qBׅ#y%y.%%|O_W^I[G$B;FD} -mma F?q0\6blZCﳐ}'}w_4bS&9dW5o+})m?~/o}ѠbA + c!X !NjKmW/|l)N@(34:0]9Eo1S@o +JRp[~Ī1 g\@VEkAO8p}[ YQuƒ'V#L,C]֟bn(gfKR)ȽN!͕t3^$ *m,:;$/g w0&!Ae (|p5扮8hJjs&?U@DP=6>1tY܈)D1ED60J|f@qT~# >ӄ 9ORWΘJv6\<85}^#ɽ +%A)' "z3mlIK+EDV@;:PUD@C tr@rڞ:gcJ@T]JfW9A.X %+V#Z^Aଵ8 +1FޤNuHU& AZ8*B8 -TDԜ Qjl/sݣVy(\}6m-е3O`H R[JL-S M4QµUlILhRƊXD+0=ł$ؐH"p:[NOkɍrAfIl 0>jLzh 0ڊgcN(jVL[ҁ&5I5yX/ZHړGch}F(NlH74&'0'sM l`y8'w (,6H'TȰ6FWwJ`a\KuЗqSr9 +}buY~MD ^8Ac,8H~.׿_/MG(oj +T$jJds`fOx+u㍒YIW!5[XU3Nծ H@(,R.Y +!(AgjYU+ E0!)<@|ЂԂ:6*j3["CȺg4f}ծ 8ܼ[`d0ERR;=#FR4R}cQ* @Y?T,6!驮lH|mEy5I'0Bգ6bjQ[0Cq hf eqUVc -`R՛>𝩭 +5S3e90~30ز1Lgj;YM@13> KuɆXe\UBRYB!\j-iTgs[*w`¯JG-d0M18c3Y?gftFԛи+6S[&Rי,wzJC$_a35 ayBFЙ3˰d[xo* +ʝPSب*]HB +ʉ)aYE1RzBEU-U>Wj U3 tBJer=cB| I[ņK1:UՇj`[][x Ү;ZzK~U5( +U*7 т0>3)ӯ&޸35_TVflg~K@35GuLQw*L`l;@q&h{PS  95;E)Wj0{QAz!(PQ;|*(p?ȳ'RXlOP 3L: Y㩚ߟrS( PT5k< Q&7*)XSӘEqpioB|EC5 ND8 l}ýL:! I  =&ϊ_ABW"@Ij(,M6YܻЇP*k"L}W]~Ԕm>A&U mJyF?e_0SnmMTJ`U"49*JZRqՋF')>vWCrebV^7~][ ?0 +s#Q] RP2x ļ.F9)o,Nx|dRR)]2l^!ʙGռP%1ą +2}/),$<5 9{U2iPuT/ !'Td<uf&W4&Xг'^\) pZBK5V,.zC_R5"(ԠWq4-ԇOEM qZϚ6iү-q=EOkjkܥzASMk@Sش&7]V@SL-ϵ_?kp\i"`gcqQwJ4hj&Ԕw4t^w0['@V]( EيEXP Gw0N[[JIMJՊCjv6ުU\^Z^3dT  q%R"/x2:]4m/{dꈡdCN e^)ƒm7׫F^̉ /,iLyb:P`"6P/a-˔phַ{nQ]MO 4 骩m̢Hj`6h@0/fFU-ۼ1 ɤ)I O:p ~}XT Ǵ a^$`)s^-sIy#EKf2Y z wPt(EJc멐 +# *b`bV *ɡR`_e'[ȟSS @%C+tYIx=Z, b+`fC59\~6H^/(تf + ( *(, зTD$Jp# +ؖy 4hbZݻrEॐoq845 dU)RrC2,{&4_ڪ2)m[q+Ir+by|`4Sq$5j JHǔhPJvOkDtG|m ߵoMK~U MviYLp uLH`D^`6o:jt"BRseZ=_|ŽiA\SWfK2{UZ.R55|ŊTfO|>N??^dto (]5ɔMDh&(MxA9&Nzrd6T/QyS6|h 2+Uԟ/=W_4RVO8 %Y2,2 jKXOyTS_a)W'*OT:TuP c3Wez4جaA`:nݕNkjSWDw[FNAّ!QjE @4N72Z`Oj,V1-M-J؏ lgL"DG>[ܸUBUn88-Cl dչE d8⥍Jh?`$YZK`rl?TVjrlOdI vc=D%"S@/bm9KPeh.[45B4ׇߟr55l$-ꢲ/sL#O)BAQV{ K44Ta O Jp@<=_q&~ڄrQ!λaԷEuH誉ZoI{8@,,׽c8|ۜl^fƦWj`Xz̩PEP꩖ UaXh д$j;lw:_EZɔ"يY_󊴭:5lPUb,U{]T?f:T GEZuQ +*F:Ѣ֪Aȿn[C>K_-*0hUem7޶d`*jWV8M춓&V10~,p yߕHluM>MCtbf]Qs+.w+[Qp]?r@@hVAZ޷VN2I]<_"L"ӴjEe%nڞQ,ڐwGR|4³D!jʊ0)Ќ$>X|3P9o՘ qdOPR *ɭ7YP9*F RC+.t?J_ +AU?_U&gj-SveQ5}ΪH*NV>D%U_Cipn< jPͿ1% +S UqgϰXJ1w^1Z']GJMZ@sKp'0eJx!ܘ Tɘo%W3U͍Q+qpQpfuw{d0ҏZW ,0V?tS ePSF ;G7f+ ^a~$V{OXhY3?A%4? +iMjUH~ADYJ ~o_UFגYl- ꁩτE54ȟz,S󂦶?ɢQm~ͪPާ']: ʰW\\gWN H \n%[b*ǯD-[+Zk@`RsCl.suW,1N.K\ۤ2ˇڳ}WKs/Qx`30erJsr> 1,m.%ÞHAؘbI4. k*񘦵Q@Z>ֵl[l5UKB%$6 8a(4Vy0XL,*'P_[>,!El@b̩?Y%ZY)Jk<pE +/J.!v>Uwj[KH/+P+bY>K('pˀ}=k2`f.ke< + H Kmt|8qY,E%_9I`qeq BA*@/ߟ4˜ +Sd +(>S?\pD7Y&.;zҍd^]#- +%},zd-ф p,[Oc UԠ_ wޢͭLW6@'4G|t姫zKi šFJ8\:drn7C%@OӌUX1E1+=1,T$JClsV#-!5M{Q {Xv[pƁs3`q\`kke2(3LtF|QU%x.k&%~Aj?5;Ɔk@Q)2 {p :0/C;IUM27.0*U`P& >e O +i*dYBVlJ+OM*m;؆dY e)\Q+an[.0{.<70uI6CC/ePp5DN|Tzb_NR:F7ڲ +,~|Q*9a|E5xԕ:*m{+)W[E:јѡb,}aGLM^duZ?aJA +$ɖII[HGֈq 9BvY6{_ =AXWjK!@9:+ , Ҍv>e&!;D<|~($r2C(8!d J=Uy2 hČE3s-Kа +"BX ҆6TefX|)ddSG2aô>ǧAؙOP7xW`RR:a"'uG|A +RgE ]X +D4qh^.8`A9LFth@hChA4:V#$$B:ju"54IV9IG)|T̜3dN}ZOzvz,@qR "`̙bGӨyRLh|f̢a) HlCErو=BUPwn d #JDB|A,-`QӴfTZ2l@hD@.s|8p$04ǁʐ; 4<0C$arκV)W +*R %@E-&$pB|Pa&@u/,~I !HTvפ뇠'6dH!鏉B1 <̥BxB8O߃QkP@˳TUX#\Fe a #ȋFS.'J$>" +SX YΈDdA"pL )a0IҢT pNfP,FC/< Ve5(#7J{^`գ CUd6-H*@!Fлև!3XJ$M rv٥!w+134eJ*1y'*X+AEwgޤ:fȗ4]{ȟpq'1aO#N6 7 v v>gܵ$2Q.E + 2q!!'ĪW@Nmb_Ye@pXʋW{>;t )L6YȷYxy]:笥`w hB~X'GH:!)F" yR_t^_ $_4G_xmeg`.!M&رF^MI)Id顐6">fn"d޼& +mIFݏhptrdP!B'R~jJmB G&`uXcdL8vAvD!ұT1K{ @O(q!(ބt&$@,jkJ(N5U~f-IV ԿP +nR%]ט[WIG3#/ X.QB[#3jIKI͓B4IF6ٛd <)K:q%D2k@:xz(KEq5QEϻJ7WE`K{yx~fOp%o=σ_B7-`$Km.oBy;2U+vd9U$>-ZmRwI!ZJ +k +y|Fy^uyy3%QXdsՌ.<.A? <͢6.D)'a17- )i]F%ͨglXlPPxp~IƆ FW$Pu $Eډ4evGX.(μsc^5AKD:,l ƀ6fvԀ:\:(F1rCB&hqOIɘ46KhlsϢQ2)ϡs(;Kst¸Ȱx!&rtJCF t,scT^B9Lw&惾*(#Scsc ͉N:Z9 j2T6T\o*", pJhAШENat00ic9MB$:FAHа/;@})æ $2oan97~T&ɉ4觎AH)$XD)g W 2\դzkhSZ X%z08 UfU%Xppog3:ԩȍgn CW9 +.p +l(r D)֏Y=dr*sR +dM]TuCI(0y`)71v +X_nP-F&sb{ AՋm8ZK<ΐG4afbvS0dMy:!n!Ԇ@E ¤vK0,Y@pAǕ-iehAye1 (5#>PPE 1Yk0y4 m<)4R2HBP(XZaqW8kd +X@ԗWؗb b0%&PG#aܔ!} C͍_AWi̭.!rPGDH'#葆dDäIY3[WDžQzWS ԂƒkTʖeD$8$jT#S@Xbay4*WFbDaJlU`g\/±@!$(aK V2* 2p亐~$ 9L>xCBXtʨ >H#RGE RD2&p4>(9 s(7Afr[^*튫X̑fA F%v 8X oaѴf`c\ %=qzqP׸p+'1Syd sL *;+X@4eJr˥4W}=p51ˬ*XT +4Sv1c4[Fo퐲(c(O~>Q0רA(';D{:8= &o +4L\};]zGƁ)h{g8|C> ! Uǫ% ٶWJ ABa&WyW{zA/~Z~"K'1z\<ňN7T*hg*(e4$6?]6(B +Gc +َ>:Ez +ÀBCh{Dzˣ褁bZ"?X)KBk5L{e3Pl>.k8]jx\(4SS( X@BP +uI4C a'(OĠGG e!ܖ\LSwÁKi Jڳ߇hzQpHⱀƦ!M1y8pHǓe!Houc'DZG4*H3)y4UiWɢ"L(4Otb\ + @48 zh0G[1êyMpZ,O=,yX<[j!#)K  IsLeb2UwՀ[+< < fyg<&2JOsGt`2>Z E%A?OeM7,z;gPC!Y^T>zmb-I*"TRFFкuMHF,X"S#cq()$HO̓$Žʂ!%2=,=} +]1͌F$ /l`rdiX -Ay[$$AD95ބ|i@2eJQp^ aM 3E ڨ tJA%N,YQ3ѓӝ 6|4(xjEf9F(}t^M1L>*VaM\Lj@tTJyD$ +)auRVw,Pi ՝b>? |Fنn5FFZ?rA_0vUVƲ[o, xU +H# L*!HQ3#aSPΗdBMIEh.#Ô%cjjbA)J_MN+eI=]J+:XD"%4VZiEV + VEڣp+U7 %&LѶWH2yi8SƵ!9?gaB[|H (*Sx)M L+p@WFW Wd+kkСVQC-Yfb4[}!f^l+4dGd!ubbhUS!Ұ`Ю%; +BKfa1CK||6R4R*aQ `zI,d:͆#lK7 +!B߸rJ@5q35N_.uʑ##8;,XM<ԑusF$B}j+\JM Z&ϝ˒FLV8}:D`oc^,b]1D5Z fXݣò{R Y bt:T($rGf0̜OQ + +oXV%>`tû!GqO ;åW}qC2)glkfA3?Fv/h{2$+2='``zP_%cYƠHeGehOH٘)KI.Za0JicErlzyL~8dK(J& ĥ~HzCOFM"2m!:|-:A !lQ]?%@1@ѱ=@ +4dSjtle¨I'l?$Bg?;FN`Ac T*"'*@qFb뀟#.3jP}ÁmbiGj0@cHPJc0(:LhǴ\ +LGH@[H'HJ0ԠLr:;UGS8uW~ĚF$$V馂^ٴ4Aafy4ܤVZMfOqiDhD`L6\ 5Bw98T$g6܍06?B 2Cj߈#O|KwRO@hί|4!FUˠaD@p>REx.Q8q٠a3{ ;~dxAⅴ:] bdyc5ri@$r%ye? ++ r,@zآ] EbCY5N|QE;zoH(OPA&di i"d4/YV7@$XIL":%b/#ĂIfA +JP"ɖ7 1&aY΃,xj b#ZیB .&A!'W r.@䦤E M jL(\3QQG 3(%[[ΒIe*#t`V(X0bTVBs8K,Ɲ4Lo2f=*bpP UdBuvXE|&_5u+g<3b/Gr-YygջnNu1qz ]d i`<;ho^Rv@y*<[C?ON۩/TzVzz!LUaF2%Ru腓J w, *=_&H<LqhT&oH,u߀X/'cJ8wnMJYX:AV#"M96&`HIX s6^W}g +.0=-@PdT|AQ V,)qYu:BߥF8Z-B{)(#zDh.`.$CbeM5QiYNR y3vAk`w@V|z^+,",^Y<Ợ7,nqK'ΦFagSP>"q4guTuz V LHE_7yy%;'oyvh<4 ϓر3,w€k 4h)өwե#|L8<852σP*y&#|&y>xRx^xGWG2χSy% +I|(y l-'߷_ y@uG-+3F& |y?1ݟPMRϼth矻A)AI̐3m5Z'T8p>>x1Z1P,PsΗvDr02?ޭ,;i V,/NݿPg#~StXLӭ~,p8K + iZ_bꬭSPC}# +4DQKDB:?w[Fd`*.+Xa +Xo~DS _p+A\c(e($syv=! L!Db1+#@a JHa!A5N61]"OGnmv LoEo@dF)2_;Y~-7{+ lɷUoiGб!gN"'+/(|؅. F@,Hn<=DQuS6cJRZw97j3<,x~JɷY`N^(5!XG8B6#w,cJV$JR,P/klʂB6@X +kn@aݺ< @*X/X'od-hR!-8zB/1BG΄{H`׼詼_qK**LcE D<)2 9:UVHqӁz}2cx4))B\H=I4,~R?YԵ`OK}f5bUuQHȏ@doI09L͖A?mpELa1t!X05F'`F6 r,JTNJ lfܙu!:H?D,?6V* +X*Ohfq6O&Mdj^Md<:>СXW-%u~YگCEgEr`{%rUP%I56{!uF\UI*6H\b ]m-&q:'0$[);L J,7{Qp(W`&Mc.!{ F ,˭!#z${5vF.hYz³,@I%gA 1:gTEv#lF:Z)rx7Q((qaLj͂auX@,cʤ]3:qI9Wt4 u1q"c۹"J0!RƤ +5sH~Lg$*VjEDY֟e?tOݪ Lv٦l tX,QECiOc\WH YaHP(>@wD,/#nD[  4ؠ$01^t(r'[) :#S=%)G#k2D!gUVbh0ҌXH!aJdU)UoCzR!PI7tIMz(@A?WC,AR-E2)T- +HsN̅z Ѐ/ʕRh`Q.==X1rJl{2cP%#!bN +NNU<6*,j@t^rZ"ߛ{ Dǿ?Ռߗ?xtKa䑗ŒDy\ P J4!#zR Flu +xLG.B/T,dYƱ< ǰŧŷcxiKJM#@@JyZUH_VU!`i%-_Ӗcq5xϲbc+KNsJSHv;l cb#eظ`)Q=M=M*ŗ27PM4TM4URɪL V,PEOE/*t)r<~=}_ϯ@/1xx^\xGx $ ϛCOşD_,YbI7RxRa<;y~d<5_{L'E!2 oJnjyD IИ[Ɨ'Dc_ȱWnX!$FE [h'kzɲ +!}a?%4}bҼ}Of0GiLq:\hNh>g Tc<^SK0): OU?Fw + @<@F{D cg:lH5h&QKF4+LVC2Iʘ3yhh-t@BDpΛyh|ejIb\k@>B+ ?8suJyh lDžlW\8'MK?6=nSpNay]I G#y1\"fh[qQgTBQzęqx?,m2PKAmKXWsǯM7/xIV ~$q"2hG#F ){VD w5:VS:4)]:zKV8ReX` PIJUc + ^p)B$^Z"eTiH)D%/# +AR@Xr U8H䚠<409B,80<N! nXu9tU_VUHI@jF{`FxpO:1٫#$CHsJ]));IePԝ 8 Lq֚&*hz+b +'l +twxXQ.oȐ:/9)ل#. ?Y`z'@,ffPՖ] dДߐf-kGͪ1fFWAEqNPA nA#\D4SEWoܠl^ +.,@ V fp}voRek3ʇD%(7>$\ݾ8!yhRP\r* !0Hʁ4X`Ș{@c*Hb\yX4"O`}z :Q c% IH<$z2jB,ozW6yaЉ+i/_XWČ7PAvTE `Ab:hGj&[ϮփT"/RyёPl[; _FDHÂ>nA_A]{LjX Ip@BDNurCܸ /WV%T+Qi\[Ufaf?"0oȠtmt$Z^ - I |g9۲+iTn[ǫ.~ ;~;i-^k-CY|.X<5Wp4,ސx֤AKcůV/b,>,>,^,EEX|еxlabVY RPg +o +,,rY^,>2(Y±xUpydy,<z<(!==v7P "JϟMo,Qkcl,x^-^e:ݏPbњg%3$A`C"Ug->:pcl gkMpX,1` dmfZIu +q+*4:msJKtUjtzLBeœ}TaN>\fBE`Xkĉ"fU6 5T^)1Y,„\S +YW: B90=$=8m`l"v0K|-N+TنN'F-K}N4[IgN04yڌYHWJK+aذ0riVk8v" "n*8]R";23(mT1 iD`#HO<=fQ7_|a'ru)aИ"@Xi՟LC͂ڨ*_:+()Py@C ! $I"$6q$qyFTFq0\F, ' +6h3\OefmJagClt> 0*- 񝤭P-񸜴c'_HR\AԨ+6lDblj^'l=sx CyA0x!WlnG(䱀sȂCÑ(gC%sܥJStܥIl'% PY 3f3yC&Q%1,E=A57v!w+OKf_ QQVGQi#MGuN+~EUՎTPYˆѵ4|&"t8R}Ff%.b?b <@dX9^DFFG{QO2+`r !sZu&bbZE񰛼1\Dº +⁅ j{TV8` ?q2j9>Cm'TX%CY$U|Rl՝63zT%H3Il.̽4%Ouwy +-pHUxFcS0ۀqғ1]MbȢ\89`tqz=*Vyiu=G ;Ǝ 4h4}7 ܾ{S^/ + pR0TrJ5;br'kߡe/-DJeaI`f, R79O@'?2c)y!qn=hbrsC6ҋFƋ y؃NML~1P|P,jFv@H@ u\L(RU*Z,rH)M`Gsy,4XTB$Qg+b<@cMGhV|M9A49ls؄! qo9kė + Lŭ$>(NIͦ\x^d jFxu ~j j a?m::IGq+R_%xY@'WSqF#Ol$">qŋ[R_o4?{!pBƢ 5KH)ӃpUB48i`=v|{٪ 䵱hǀh'Š1 C6u,c9+gT.a/ql.%vI]:±hF K`ūW5jxiHs0>CMd*6zG8ޓGTsD G0o^?$FD" (p"^^0%6|' PYtaH&w mC=jA)#ܸLC_Mu¾޾V'V'H9w{qn,^u,BB%bHF6&taT{\ndܚ~ =.^TJO&z,H 鴪3 + dc:! {C& P_f:2>~~u8q68uɓDrQ%a.8Y0~^X+̇{H6j7y!;DQJSdS˛q)+3'șL`p\ =$|IxE?N P,gvAAkV_̇A`ph!vw3j|`Y,d> + œ/W+X+U$Um)]2 f]}{I71."]D::-c kA!O`-`Pac#)NNِ˄ ?DPZ= *TLA hzPI89M B$DrB?PvG%ф,#k>BqFkT^N +Os /m*auZdR1XD?fHEݮZz[?cfiaКg*4$b4Ҿ'Sa^@"t-X\sj 8,Z'<'e7\xcX Î%=EBOBJseڋ&ttm<9k_c<3y Q? @. ! g 5Y^, +(lȈ$"E{T#YqS#2?(: Ps{䅹 #4UD?nUpp̧Ҟ (PS%d>cNx< +a +<kqN7'񣱄ƔJJL| 46̅X 5OMb! ÖU:z@X|4H[Bˉx'd0f>@B~BxEhPi8Rb%"*VJL8cxy4~ WMQً̤Z J*( k\`hy."h BxZLc'5J4)lD%Μ BQHQ(ESƑ磋FJ aC+=KX`@hf Γiga+di +ѝp Q`XRsfY3!bTaPZ̋-ffFI Q91rRARHhRXVwNI#JcJDJbGQ))6@ EMLbqJe9WEpEA9.vQכۡ ?ns5(_P&s4f 7 'OR8dbΓU8Q=E=p|B)NkeBo6SSņH?bT/&+Ēv ;0ihyUZ k,WD8Ҙ'pQ}'bHSHӒIS NSCnIiN=MwT\Tj8Zt_IޑQ`.0d~@~C]mژa |Nt*dqA Crbfhn B\jč#+hs4 tib{pe$P-;( *o,&RI8z49.a-&HXZ \88H *+w9$|diaw!qT9rZT7rd崊DsE@v{=(R3>6]M.FW j;AĀnu)$" +"3k@`WB^AD5D!H%EQ?A!uz ܺ^йn@}տ  7,j"q62 +2B9tÌ<mnu}^haU:a:fý +H(La*u\FVӠaq3@!N: OyDcA,O(*6>L<`(UJϛ (VSdcTHB>-D<&_R!7:y5lJ:&lra&LȪա>)(!|ᣀ(!5Ad/`f|JTDKr)EBQQ[ ,0n +6mcY^ԫ6GGŶ>kf$H@.U .'&kb ` R !>.Anj@Qt0RZ YS`̪m02zͨ> qr4"/xld +2%IH(})$:@6l4"͕(#0Bd(Zɖ(- <+PtOhnLvaA?89lJn"}(Zbp=`y)R +! BL&8z y4DRiՆ +O-u`* +G8$5&9̖yKGina$$HArv("$2$llzcT2PBRglrs-3dV y  lUJh˲@M`0ʛX#BP؏d +8qp8d''ހ)2.t1 8Y@m~a|*{0uGd̳&jVHKŒ~lL ޑyZX1 /d<3ПWZOeRgNoiDe$N,`>#>,Km1BX݄~D=M=zGӒDF-y6ۄ{Ib!1C>mpTF\wy[B;-A! +Hs!Cp9^Q)PK/'!zR%OSzO&,XƭC)xR&#SyLݮP6f`Z^& <nT{ŪVcaW^i8/w +~mfo."O)sd*I@&*9}eψ֪O+ +q󼖆|8r@S ~7hڟUXnM8?%%!5M](= }i<j ۇ||a?'a4- ce|Or I - [П8e8Sɸ,4)LbLpW3|HiP̧ S?`D%/Q*sK+2;~ȩ~,0fWBhtx?<^OkIv2Y\X@9Uchd;8(n>mh)8H*QZ\SGQ]?9DSFX߼@_e~SJ`~M-0|T*'HE27\ 71o2GJ!P Ј x잽 ٨d|j2wF~Ç@l_-2 KC~l!ސmOHȏmD~U#"(Cj0srȘrFw. fQ&rHk|,pqQ-ncWA@ճ':/;%c'ta0Uee;a5D4VIr@0q)ɀS=RLV%AK )nWBdOo1=H&?7+?eg$a6v!(qX[;CIӞ$xLepFj ,wpC3ҁ_TgHlԳY? Jo,(F_Ni܋ɔ!t!0JFn4nO5lNF`QjKA)!%ZU$hIx.I&Vn]uWA>^S W< +۳HaKb%s3q'-62'L4 $ +Uxni*X'!dJUJ=3ҍATTRĚ?X,OC+mhe15XAфI6ix:2B-OϜ2-況I"XX|M͕UCB\`9VHŲ%a6iLD21(8YA[4iW @(p^uL딄(|0D?Ou`9G=* lOgBL%!o:4`sI`qc+g~DT.ƱU0HW2$2CZ b0n {A=CIM&0>Tpg'1Os\W!@1l4+ͱ: +/ eVUi,ă;Bc8 ._iH#eN&4˕aKX@TxPQHX?oO +ɎxvT zZg$,*ppd\+?,8]xB}Nq ,N(u}ѓT.],iY{%gHPF`[rWPFi +~BoY6Ja E,}(Vo - حVq^qU* ")s{ŤFXC2ĘKXǥ]W4PP9F^Y_i!:uwbIBQs +H=k!Ɲ` Z`]NЩ ,O-"vDâH},E mB8 <16e;xzQV"X i20vP*ֆa`D]<5B/# l1yxB$ APbf` CCҾ7R$kU7KIJ4S/G)uX4ZNtvrNjF869+Ip! Uo<H@Kb {Iz<+yA|N*%J'ӟKC-y#Dꒆ?R'"11CCg@ٰ[,4@B7UӪ>qyX6ӒH D^r]~ՅvSӆx5k*Rj~H)R8uꧏ6Cͥ]G~d#8+,Rq`R'8"OR+ۨEP, +vc#Σ' vxzB]Kg~͵؟uJ6p6ەd7a_;פȢB}Hayœo}?Rj0#XM@ARD!'p)APRwORԏJQT+§_$ؤ_g8YfKM8 B[3ïs}M%T$ !J񌟥9tIv(/ *}@(CW)/o/3]?Rb`2BR~,P|Kh** hHnŪ8z,YZr(!f(Q#JyAc5dL@!ch~ y0"PGҋ b_p[o,l*׿b~C69?970)RH{\l0+:[Q2>z*6,bt4! !{)\;w-!dOr*i +^ N_ 2a-HÙKon68FyhH Z*OR0 +ޛbX@娌l/ML43lcQ V4 .0062 %L7+%V(%&J,3u0ГvGC^'<&2'= iX[e`Or0f +HtD8v[Ԋ_Zr9;OEW` +,@8m#@m,NBٖ Yԕ.AO*. zˀ GBh1}&ţ#xL$F] s)E*+=#aYE6s#JMSZBi F`ėm0̓; tb/>Y"TtPڰAIM#%5feu`>w]HM҈ݬn^gd ezw ̝s4"V'^ED-u#BREP4^ICUTl1.H^q+(V($`EBygvrʀ^kIUdՒFNŨLf2HnڀZIwDy!+&@,m)*zY*%f+{!hi4/]$"V_|K +Dң3 Z;=@Mt䦡]N#A%p,EgkA]ȜBTX G8i4'4b" ++KQbf=s&N!L 0R";q?OG UFk6 ^P\`kJ\txa>nC*5!XCE%b|L\a8͎ De( %ʁ&g3/012|b"@qN6*5 Mp  ăs>bӐ$)$q̓|Ʉ +It + Y% )J)t< fp49\P)> +v`m +Zr;=]>2oD]}D;˦LTiZ"2 <,` Ħ ]v-s_O}"_]{p6t5SNr&R6R'GOESXPDgn#ZQA5)5QMpèb7*Ih8eF薛L':9'EOi?Ƞ`ByQT8ioe? #ܾDZxs`ba!pXhg +FEѢʹFpyHm Sdゕ^% ,|, +-(c7, AoVHi[㆝qy١q/0.ލ)}?b` 1\03!0$QV0(#`, d+.2rbHy -{ M-`Do6>A5Jh+zV= 3nFKjh.!3H|RS 0A5P&2,iq 1NK LXũ r01:|g4)Ix$׆z:rmփ94t5*~XG|XNN,cIZ%Aͦ;چ%A?\P%KE(,MC2:E Y6 ?cF\U;5tK +QL{Q}7[DLY?sXGP8Qfdh35dfo n/^ +,HhVZrf..qgZ!ttl[}Uw($$CE x48v#6~"N9#ĪbBV/!=rίX(e^{!>P<Ɯ{fj1Hal +#(1LJ]}(p)OcBffתh֣?VCPnjF@W\8A:F:=0"ӬQ##:kz0%E>dhQAu0С8!fV8RVlv;1>-<wHV-`&`SgKF&a'E}O[<™LM;'}4+-)qXj5z> $փKަ~pJ0I"בK1#區|8XqKjhzr:ֆ{JwCR0ˋ'y(<6Sy!BV + '9 CG 8$EYܬnR'GiLg(ڂs,0A)bwJE(㩼9ӟF!dJF"iZeŷ d!!;RZF!O%X/4鬸ɣl&'8b.ʳ2/Jרg%pYR"ԒL]t7̓tsnBXWyu<ũ`uIV ?`>ĮD yDȑJ7! $3%1$J_HEQ1P$Ia (WwKry]@ <ܨwK}ǎZ$Rŀ&INu(X8l.QImPjE +`@x]7mPe'',P_q.Mj2b!kw֪eZ rKVyUgsܤTi}qzZ$12Dj yB<xx@ryݸ5ǡzݓܖK@EfҁiW4߈"s:4{qcS'"BhhM-Q-&2]` *?E ȃ3xS񀝄ϐu%`: ^0wE@=1:ldBe3PVϡ%fyy0lQ(6j|(.^h`eT7, (ԍYy-lZ99AH=q%v@ {z gxR}fR|A&܀+Ht +5" '!WP.Ks̱0d"K'ŧ5pcѬ4 +fhD#h8j@/e@ubt!`; +( Oƹ{[-y\(WwbN`-Z/ \>$Ej{ WH[R.$JQFp2%_i 'H0v!:AX{L4l@pHz\( +[Umd Q 6ڸi -g_{تD(\NApݲ4Ƃ2уefJʰ(YSZm<;cT ;eT ;H&' ts8łn劅'MIMI74=Yqp)&† 7ŕ "ugI#^nxtD䵫 +0vH> + +VB*h`fCk4IћJ;q,QMxkXscw#Dj +‹ p얈a֝gvP`9z =)*EΦ€JLt(GH%Q璋OU UIf U)JM|rUr.YSlC$rZ1ǵ|LBA 21ԇ)ϥstl̪'aĢOeLlVC֔ämNi"L&+GBԋMܑUܑ5Ȋ TdOSd@U +4C6 y0uns6.½IJَȢâk30Ed8I\ۚj؁kı(h;wǗlnH";VS*Rz6Jù]oZЊ fr%[/՞P$9j"GI kkT]'̑@9"S`  +E,ˋemx˛%-<,/H)÷IqO< _`tOEaMC.E7%<u0̠!%=?og9L1 +<[xXK2^E, fm3jh Ny(bQT =ajasN0P}2 qJouhOMWб=qoMNr-FcSpH$+(Y{d@adifeHtIx맠hE_&ްEOfM Jv:jH;5–Q/*7bHijF >r Ջ _iM % +!mK +%0B[h( Bv,SdP_b,X()Q@d5` +,0ԫ$b\` ~PZs=Cǭ1To( +U^4&+_T4j#Ӻ*z}0#qk#.9.`54 `vp<>Ȥ  1hd1$|&'**x eXq@'}D ě9!'1Vb(NY %EB7T9Z2;nى>G<~އl X`^{YGcK HF)4Tz]u0D4 >थ^!H@Pa!X`G3lmzhzpb4HxYlFFVe%}|"gKߒ$)tRLB! Wǭ (6=p'F#Jl`I<&jAgGĆbj)/2˘K +22 ;$3P:.*&lLVWCX8Rq҃Yx\Jub(A4Cː˯4,0}| +Q,cˢtU, PiÛc(a]fhe71hLszZڨE( Ԭ3G?lXoZ=1j+2+iY쳂%%tffW L[(vuhjд4k`j Q8$d҂題r tHNH͓R£j FH Z<:ZAжVba;]^<&` Ύik&#AB隺b,~ԕcz)N=9u0|Qesʔ>PsM,5KA9ɱ4#V+eEbXR=_x?߆nIc)ζwҧN&ɝ ? >3Rb$*:a QցZuc@Xqy= ă 4x&`]n&/OH>̶8*%DqdB ZK oW*Wc|>*<-!|z<x>x <{9bN摩pf]O_yZMˣ,Y΋Y{☯x~@yuyy p̗'Z.'gy*'x .߹?OX$XQ{.汪~hSk>Ae"kN_A**3D-rj"^U`ߛ2wN{#j;ΰ,=Xw&Y>0$BznX@ NץVu_8r:Ls>)!/=DNcد +[_?ZR?3\/1vͺlRLՆg^>$::mjeް2T_iUKSB`TKRӨ~{_'`&X%GHGd!fx-3![‰ /k5!B踚V&2cVp~p~vO${D?Zϑ߽Y +-HIBF} +8` zF ;  ",94 xcG'0K EE zU ì V YJ4,*4xrRq#a;<:Q4M6(5։AL8heЂ:J(O +~nG̰%CvnAI +'ɮdi@8\{ ‚ׁ}1"O1F8`Pǭ+ICK] u8>5&M,7>M*B +P2T Hj)PyLH>It4Z'AX@Nq21B_aTEJľ">VxV\:Q+qґ4H2*cdjCIK$Pb +e,ruAD[,0!CRL ""N&CWU3.:Ad/j\p*%VB$ &/Z"6X~@trA16 Wj]_aMvPȏ9ɠ10Za(4ȎKIJ,9?_eH0fSM$63$DsDǸ&F鈈,)TW46Ӄ34)`F"u6M']x5eQː"QN"]=:1zgC4rP,_Y.uhQl,(} L uMIwA΃ s8U@s_CPn@S$3ZWj l!6Reh/Dy//FӢ<%%Ơ[$%tɈ0)ot~[T{;*, ZpS4IybHVxkht=XNݽD|\{1#̓F:9(ZQeU@a"K@L2 䐵#!d,QOa,9F =BmZ|yyZh|J湪rR[-d@d|]l +X`E>1w5EJ$Qf@`:#Ae`dCB^g2HѤ$4JU,GUTZJUx E\VY<6!+GIX`X o|an*Zc EVl-#≉`;f#E6F7$ry#J롋ҏh# 'VxXVkwUuMCXIBUs9QL*jJ M61Aeq@z8a ^Cq%?DLiim;wP#k 4^6Ta Jز6 Y'!t܂'F;rn| i̝ S["!$z>Mk\!9R&0sAd*`Эpm8閐_ +V:,y$(e͈r#M5CsbgY7lފ"iEmО:BA0ZySa| 9%UĂ ގo$NVd舺ܙ V5q%.D +uoIIH4F +9-$"ǰ3!ͨ9 NTr5ފ7;̈'87DJK364*\^s}@Ś1R1Q/-dž}ܮ|?INH͕;դ;H<78K$™8]z5ԉ&YyrdTD#v!eJPu,Й 'Hfweo6xID)J, IBNnJaס}9h3~lR/y>1aEWKJVl endstream endobj 23 0 obj <>stream +X`ENH݄0Y؟f)6xI=/ +P+6O$|xeOBzD)L"F}Ek6e.hrp242&E +U gV  a&tkT3436 njI(PH HIU]]V-O*m5Gj KNjb`:h!Ön Ё}R',K+)<mZ_V +99!A0? ]?h{Cf!1kP7d= %'-6$5U"(p)? +pC+E][TBo7iӓФ,&TDapHJíi-$? WA~*gG$+kioAJ?Xq?*0`6jIWIk3+}%ɠSXX k ~$Ϯa/ǻH +ĈtgȎ.:! |DV Lt 8. кݸx脊=Dv]ÂoɱP`EQ#PH rß9"&:R945G\Ҿ sIIDذ#NȗP< t(|`IcDj払>F~D W& {QNTN'cwUhXO`l&b]]k^UaA@D^janXk )PT(^A}>pV~j}_ᶾX ~OA?1)!o`= w{mp%bu3gVbB`Юi >!X QF=vp}P)}d{6sH"߫'>VG5P\}~h + s\4^%+0k :}@`Z_)= VIɩF&w9H?3.rOZc`So8⻏12臨 Ky_aޯC#r8=*ilw>1|s|Jn"{#c${Nhp7~2 +-(Ja}I}q l$~@<|A, @?2\rߺn$0Z~88Sf>a=E :Ԅ lmAit+T  ,#md|\#YX sLh&0&@,8[W9(Uh}vX 'ڞNZDnX:AeBPй<>UYۺĠptE0LU"x&,dOңƯ)dx2|I0NJcf`eTQ;bRƗGRqAlir1xwc<,0؅a`bm5D +c6r\(9$q_TO p\ ,K%O̶\ݪ_AQiP.ҰUXl DQ5ѸPUs.ǚ3r1 ·њYxtp= +#' +W@ྔVL H@RE:$bEIΊ"5V v"W.cP*2r -ª6J;pߥJp4 bOd,:ځRsƢC8u(ڝ8$Atkt&|Ζp -/m/2.3('WnZ *`)E e- Fqw蘀b;6UhV$sn"$:o[4cT16١, D&y"zFO˓lݺ97i%06J.$x#ڠ2I8?B@B; ̝OGROTpX/F  6u[xOZUXTFCr>#βl~ (ЅBl#zQ(Uy &wJ9)ijӋ1B籬g/Klj ,y<6tBNt xˤњ .*E:zJӶ&VOP==[=IPDcA.x#8yD!ڄsۊMm71{ú[W#*'93H7hɶ[:S0R,,##Q/Txh@B| 0(WӠŦ.@:q"6ƺc;- +o` I=@!ɌDG02)BHg%`V>[tD[l8:d3r rT]u><#x 0x[ V7{[١91#saI> 푤6n=!y"8V(NJ"6/\ih+dʑd.ֵ^aVM$ˀӫ=By*j |H;-lN\,ARka:-hd ukT +nt 00;{`kUՒegTմL-9;$ww@SlOd y.ԣ)@a҉]N' {|L-uR9hٱ;ũd+Pt*AT," ]iw}$@-Z$iIb9NL@Y>5B7v64Ev`]4JZNМ&f8&<J:!+D>,@BB2 #S}T λ"֊."4`b( ˱c!%4Q !G dZW-_}IaopH/)$:$M_Mg]7E?S \7ɭ:ɏ iOH.HYH1D͘?uw 䧛!k~8Q4ʿ1<WSkDWg%lz56\85C~UAȏB'j'?3ؐߑАd4} bE"c2AJ9'x1@ +scbǭVyqJ"~#~di'x0Tpsu˽c{GC?~y6觰ϴDFΔx!pW\l+6LNؼ 41 ԗ"O~S?|5?4 +ŸVᯠT! + e`6N ڒ7XF ld8x[#nae( +_ 𳤀7#Mޞc/ NX`턟+0/2W:4=Zs ) BTLܩke븗R2 FQ~8U8aXX }G/~>>g{|;/Z ql{.'6{X9!&oy +::牮PyP›@Eis3Prx27LfAp1 WU) nԞf''p ^IP9ؙ_0QbiAk,hq!y-ɵ6.(Y{Mж&,(}iFpٜ˞ w+w~@pL` B[6tT*$9J!\x>$@z[$b :)QXz_v6wƪD$J)+X0={gHM)p{qιq(?ys +q2OkS$#<ffbET` +B`lB4*S:@{0f4 l*ޅ`l%6mq#©]4#aBky=`nfON,*D[V BH~pn +#aS{8iF]/'$n˒E{q20`ˍx{pa^pYntÌyHcJ )ʧh[ ,ws:%d7@`14 Q$)H ň9CVRX, v/)b9suZm4cɹ^DuDwxXvX§>ʷmDE !*P‚@ TE7}UJR~F% +H.9lAvk2-/PIY¾R /(GXy\h*h)Bf$?~Om#O&t"8jz0LQe8ބDVQlE @Q6B9P +~r*Pڜn, f@  F(_ɷCk1'sU C$~AWKQׄ +R'A\|(7ޡ) Q.D*" ã9P2ˈmX "}0'p0:fN* e%jV&JoqXwWx>ۣoM0FTb`r9>\-pl! +!CA`!HαhW [.s"#hx(t!O' x:w9M& +̓HTm ,wТK@Jlj5䏼7 + vVkJ 0dD}ނS_(o#g8T0T6.'fjǣhC.ZH3znpmj5cyIpB=NEXn9H!z @Lt&0С$#4_L"KmNOD"s:Ί $˸PGswưMyPda{ '<f|E N'\nz)`Ңy+p[Fag0/:'1g;,Ҟ%# U݌& 4}r:|1"|9+5NUQx[fcS@Ž]4fY ILQI>*Gg` ?0)^qӢŽ x'vDB  nv3XvWCuQf{&&yz`ԥ24PsnB)e>k<-V]NSLnw>L%dBpLD.IwQZ{9)9jɻ5id9q)!9*"S_$ٔgӇD(,xJܜ&,)NB$ trEj0%@R)nR(T#U V]Z2W΃lۏm$cٟ86w~D ϣ~Lf~] )4NG_ҿaz)T9ԟ{Q&mNm-/&2+LpeY8]V.[.p}:Kn=b?"vo~,7/,l,MK 0ON4U},L`Ĺa1Nx_--,͡lK.'j+=֠LxN~,Q"dFukWQ2Ɇ*u4ӗ%{]_"/,BWgcI jg g32 =/O.AGe+!;xaZ(P^'JWhfȍ*VT2g2gA#-N A_0:4ğc /@On`A ji `. 0I̸ vM T Xn|ZIΉLIyV@>.ߐQ>|`gq~EfLՆO׆aÏ$ 6{ HY 7WJ|Yql/US!|,,XqA.Шz6VYz/ + K6KH!9'ED $j}as7t~,%A'Pi, |X\TZ +"m,r^ +1uތT'Qp +Pfa&Q?Hah9 䣫9ұ AݡB9AIk{} A“[\m1P0}H2+d&k(tIhk Ua/.R./RRLp:RQ? }apŦk2B,&VI)6+P;9S#i!pZ7z[9Wh$f#R5h:$yCRX@ov#[\lj R? I[MJQo,&@lhNe$̝&qə6D)e0/TN)LvMZ +HrB:0HsGJR8$~; +n 8wtaJ^IFƦX2KH,vRd0yuD^DT*J%5tѠaХ0>E8f+KeZ; B,`Jvx;%q)a𾺆2XԈL39ya6[$ i + +**"߫h&!q{@^Kqk]kMJ56~o$E xCaGV3xِ#i%D<իݬ|T|IW4G 8>>NŇjߥPgY[թt_AeǠHkRg5/=Ƞ +'_JK<| R{I^ν`JyD4wP{jr?SGE?5^jəJd`TFRuU B(XQ ZOc7[5o#{Rqv8ѶȂ1˃y|^9iƄ`*l9Չ@I J<9թ*V%BÞiLiǟS:#Un 3rJyc?B7m-l0ik[o}9 #6,V\J6#0$hp0픘TAS@0CpcT2XՖ9BX3DϑvX,[k4mǂ\a\ɛ + +vd!i!#ͫ02od!ᄵj($yu}8\d;;G zxU(hus  VX86♖qmqq +/\F/h,Lތz)0#Pihh #4(~))Z^%@*6S 2 ԰*0Ja4ra *(O's1^ H d- S^3~^ҰBHN/'S +|*0́&p2i H9]ڄhҨ +M9i,Gr;x.ֳWqHr7S8SREM+ C`z[4l ;) \~nEHXFs8uX .a'k/ JqT"(Ef\9Zt՟U84N /BPVZ JԛD LG A9:_H:a,4?:x 0.5Fe>~n$PgBE(||&Xc@Ƣd~g Ukk $L-VP^v lE6;6TiÙߌfNTU O> Q]X`h B6 +æ'IWťAB % S0Do=Nܸl2`G$[6}G&7{u r#B>pnC2gWǿDM4+$z"zQf>JUҌKj{\˖OX v`uG +\^}`xQbqtX}gX0bY)Bi%`vXeD2փYʥM+.ܚ$/Anޘ@>#\Ci9L1ۑ:!>A ih|0{$C6X1$I_ +E%"s^ח%Y -M>A +>SԡGwl Ow)KyINiO6OO7)贀dR_|V_V#̇9zb{ FKC:(Ho'}(HSBEi5OD-X : /wd/$a +(":#&f7LVqƝD.!R9^svN=NJKB[[Rsձ3+Y%/ 5$ )|aTsv, ĩ( +ТcnBFE$Hɖ:M b"! + =*p=6@`_'5 Iȗĩ>4S&C8Ow`)@z@W݄Z)lnqe ?B]|Jmt(CkU/Ϗشr_!Rص6k?HW +f0gU@v?0F "9*vthrOMA*~,H 0GZ$0/~0?/bT7i5B{L/pB?Qr.V$hD{X EC |2ٝB +{#ImEEF ? +7Eۏ?U pFS#D +XϕNQ=(!VPDL13:d-ea„n`; Rl YVwI§EGgMNCCυWB!|~_ ?*!ȸ66ĺb~bg"4EPT^DISZS 7e19$]rAlv%P +NT)©F p@-+sEFf H!YeStT㩀P#a1eu+: SJbA +#+ek0H}Jp +GwA!Hm8bhЏU$W*P#M)0 ,'Pa$`DVc-%P<@ѡ`EUyԦ4حܛ02Pnn0Ӹz65oBa +7Pi@ tDSy=RdN;~%E13@rXvCi#D=uбtj9hY VXİ/$y @JKm9>c.FHXa1vgaGވD<\Vx|()Ti0G}1 egNL4;%EUM^;RV0w:=bsBp^ +5BcQi*rh흽nHd?SB\\))G;!؜c?l.积 jNi28N/̸o 9DysXHDtoG4EYT&8𷇑Y$'UXRpti+9$KugH*e "Z3c+܈kb.T{wj^+Rc:<@/!HQQȫΥO*B9cزtmESH8FN)NV/M։^ cGPa5͵|!ܴ%Xc.f^ +& 7Fm ^ 4#N4$Xy}&GQS>ap~C<ҹWF`X> 5*#+ok4\W-BTb85EBPHˡ 9 aG2d,RƖXEb:G ;:H‚&]TV|LdܚUb\5`)hZ4 8GyUi?naX1.FY ҷ!WC T +U(H%+fJ*>vY*۴7nIL8.XX +ʾi7 FKa f:LcB%' ܌qdhs.eLu؀X]L2Qǂ\SbGOԒ(+Oz6eN܁Or +tb-JV TI|J!J &!R(V,4}D/ֹ=jB@Fj|QU߮Qk:o:9Vdd(mۻ59;ufRh`_?`mcg]?R?_a#xe,J 8vW. `NH2>'A}̰)Idp;2q{@?ƴ?;F=*+e +qϱ@ +CCV" +)Fړ7Imf{Xq h~m$2?bF:n{$B7y4?KS9Yc+ρR*UV~8c$+I-GaW]뵻%^E1#xT8ク] +eW0*BK' @$&R%pON"$όȿ(dJ2 '@ wdCDM4!-h PExwN~',7VaNga;Qd)42~?_@Ə^dgGJqƚP[yc8j: AA7⁩reQ!B  z +@t 2ddSZiNs6 y LQIBV`uxP< 1zA*y3\{V j\rhe#Xe:b,l@iʣɋk +}7 LPGՊz ]l@l,Jp,%"c(~8`/rOxܓp-iN[[D!mQs;G"5fgiW"@ +KN@Q8T]>' dؙf +9G_!DSd mĕ&V0G>uRtStotAS*/hXB u-0tBSq$:h|Lk+ nSjt#>GxZ廏_I9 Zcwn* kjJa,PMQcx^ 0)U@ Ad%"N<$`7Odǩ ~Lcm*G:MҏW_F +BTc ]ڍ[CiWVAbMz k)}EMEP巷EWKKıEwDd&wOh$; NB1ZӃリ-cSdV,9O+k`H DEh%<ĐHNNeQ(cO)#RlE-$rRS8m@z}W hR L mU4e8ɔ,q t@5{_KA}+g +g[ؕԧ,zyT+4Z(.CF~AQ{,>* $:#ljםUc +V@F`i1rHlS/JrW"2Q{i`[jh!zY@@@G\ݜrz, +kZ91)b w?h֗<,?_X@]I^ңrVx|8]Av(5I; n{ +C= ж?i`=Ä1( ןEU\jG!r]I @Wfg@.@!\Fw;'ـq'kt*3i@Hs p ?\Ep!2 >! <:]@_0Q{ =N`0*I%w X"dpqЙs݀>Jy']Bu:/ 嚞;V(}nG:'|0W>]!QփޥģN&{ 6;xz\X3s!Bc= A|hE48t h!*7 8P$Clꀀ0vSYyP~*PER +P!ب GWXTRD ]'ҍ@rͶ%ej+s!>MHh\K%"4)7F +B8}@fKpFc! o1&PZ)l|3YuQtE_EI+ +4e?{lzI}COpsM +~2'S`w#,`ئJaRR?XIV` PROa},ec9h)J@~һdO37MQ@Pꃹzn[D6%Ǫ01)(̈L<(NUzoX `,DXETC4ܡ +N D?;9:X `,X `Ng"ACXus%5_B\uCv9pLgԦx;)rPǁR!3ea0 ͟՗94X^OjXCdX`tIO&0"#%.i3ݴz-8Ə'[`'s? `?Y#*%ai PԩЋ@c'J7lP48 8HD~) -_FN_6>~ބ'AWᯔD$3!o5uBa|&$S+GcBZ;V: w~ygR Ƅ/b>„(Oo ^@Qx̭t [q/c}=tt߱7'oIM}}/yg.3n9|$5E Yc] X,THBo[CBI})W>EWpQ~?>0h&0IKTDWQihrh +Uw˛)R;tZCpScx> Zcn_=g8}nC:yJؾ(`lEa. +LQbl]8ZmRas'Κrv)-Ji_R'KNh?$Yik99ڿNy}@F#MFH#l*1 "T<^T$WKY2 ,:c|"O2Z+^C};rȾdzOvL7$H$}g?Dxez%&%vXyaJ%`H<]Қ1^ .~IX  K=jC@G }X;o9cYaAa߀a|U>J aa_a__ Ag`PdÑJiCxP8)<'x].T8 +AoowQb_T"$a )-b_i2o |Ia'Z_Ov݁P< 1Y8_@4I9hXIBZBv/:8|x|O| +2X1i*1&ߴ׵r%"r`D 4iJ#XH E{8;)4 O`S71A V`@- @1pr}ù%E~auh0s0I1~y?ǵ[@c^u{:Sܙ0RB &CiAC`,(\@۰[E%5 nxP>luXow}y ^im_Fl}sá:[V/,"qe:Ϧw4%Z]'oPNh.e)XKF X:sER?sDN"4KD#yO@/|4ߍX+@M` c%gFإOzZ'lij[΋u_8,0q0XoFr ĴJ(ésX gg_p+v-1ds5;j1B *#b$2Qd(A1a n`$R%XaefZ/]juq;Ҩ;Ј{N~+^ :r\Nf\.+3IRvR7Q6oJ&iAmI (_i}a1kó}ӶPl[ *`.G-QN%@pOU L +l6*eBT CRʼngGHeIARS\@C]fAС3v$m [w`wKw w)=nGҐYOnHCp&Vg.:($#x"; ~"%"A0`/jB Ձx6DȲu ++"Ke܎Uz|㙕(xbH?U35v6;8]lץ0DU.1l1@ ҜIFFqEI"7#/Wė79}^2ZN*; wӺa UCŭqެ)cjUQ级*[ ei9} 8?h ռ. T+?l6 djn^dnΓnfRyy6昘z% +JVUϭKYARf7'{g1n+'P qxBz \kÈ0 ɯē꣟iĖ}\wh1I+,RCd@ejZe-np&Ub@e nIz +:w[ &UX *&):$%n\HfQ'I7n,AȳyJ=urSB:xзb立!^%|ڀR_<~ (; .|υ7kZRngz+8i;-*qaoؚۜO%t Ebr$9˥6&B,;#❟n: +UtH6p" 4 WM@0C[S)mbdŘ\aChB%ZGB|A$Yqgk0qomMD{DpQ1^= 0n Aw@ߵM7E^}t *$8BA49b'4ET>IAZrA-OR*ٜ`8 + +#?c:?g +c五?X`eBWhѾ Tc*К%..@'RnVphґ^7 ƍ#ĝ8jIE_`d)/I|K@9!|b'7Q5C;<{4~$a #9Ա`yU7]=g Kj)3GB4%ιW3~W 7, +˯  3GofZȇ/Wsx +!h* F5DVy_]'}Rj~)A j_ 﫹N\@[3̩t>G4 Z!̭ҡ'.twaXP u_עft|<>Hyboޟs0z_-QWxRx?oC`@mFNX@dHt F՘6A羄ArߜYt +},Z>ϸQ7}fqBVX?0g3aAe Qqv !j9$lO>ͮ0iXBUe%|H'/uO@h-hLھ]l8Aq_)O\"3;-X*w/VG Ԣ,@|Γ_>I PZhh:iж,8;x kɶX}m_cSa&A}T$\f2,j̫oB+3SVI+oeX`l }X-L+Pd7ٿgUk5uj_[OcnjyT:#R+}QBjkISQ#Xzxŋ-5o#&)uJUd"} + +Qy0-I( ~?!oѰOpu}A}~%c~:g_zR7>zyUh"ڙ@"zGq ` n4+"FOjdV0` $`?9' 8k;% q,b}`?q1RVc~T)2> R!lNH7P9@,9͘؜ρiuI(Fx;Ĉ_={)kekӐ5|B +|l +L/k@$;4\NuWB  Z2ɝ^T% +(`x[E+ +.HJ"&v;aEyz،R̄İD19 +Q\ 8`%-܅ R+6O,{ H9Zmmu ' =FL,ަ)7fn.Q)%yNS - F]͎ +p f)p%; V[꺹1udi +=ryPiXp:[-\y1iը:a|o37#4fi-k+IC>AE4<ؐޔqUibECHPghGkq&40NB7FVFWT*,ܑF;FoCBC\:x{(;Z='Y,UZ,`(rWւI4^() K(pwP_lYÃJ,R3r9 |p_ːC Bg_2:Eݶfu"wn- TMGA { + μ60Zx䪛k`56S7h}6WzV}s&V/ 0|5C INؒ A1'Gb9ΖڌM] DCWxNlݒ2.4xIIpXBѵɓzPiQx梈w@LT!()-d- Ro%I/*S\4 lb@g)OՅS& ТYX V@L0T5J,aA@$^.D0BQD~[hI<1* +KE< +2I&#tT`<¿36ĭҶtH“ђފUL,O ne>Idyi~_H7}|T*po1mlP?}7?H8A,Z9 *?8KsE'!p + Gaj ]wu@u[/6W`}tiO c(Sc]~[{'I#_-"r).t!GდȄm룁+Im䴰YQDAA~l?Z_$nt_vwIӟ$ԑurfn}C$86>IVM~y%D:^Sg.$RC)*-}3p4-mY}@}4xp#T?p/C mC-ibrx.P 7G gƎ?h-P"Lj:sƼ}>z:7{}|cpDl_$@ \ iB{Ԋ9nrYMX&lA?zd*^yQi>㖵/Vb2 OIRG}^Ѿ^VoZ}IJ@ X`5RMkM:h|>-S>!0bfI . Ljuj5$_NʴZt*"0NVf>$x/ +,@~;OK43'qxFdqz ~e;Z6lf8U}I$W0,pv4A1P.T+v0(1;o坛(MK5UIhYzl[ 1!%%îV9SH*GY oԸ9kv /uSXXT%6 HL)4*y$bs878Ls" ZTtug!y 29pm,>ԛ&MքV78u2wlnszG#wgk\O|a8N՝@;+@o!wR{A`̆pR,GLHO@Ovce$ Gg<+KG̝FQ";-bZxUA<gy| S`UO,L+ap0hZ!K$OZ\MkFh\{>SX`C9ɠ,\ .T IcL'9);X(qx0 +ϱ۾xmY '{M.Z|ra鼩S (=\ ǧc1"Y j!hzTg.b, +MRY/c<8!h|@\MgFd8Yhrí#Z*2Om> np]bUN3 -pC1<:boaRtG轴팚NBJRpB8Ѿ#0$pS$vHC¹ )<zCPê$(GJ" D \ɞqI^_JKI(>mKOcX䑸]MYS#Gt88l:' 'Z7Um>h|R+HUZ贬R?)6ᅄ)x0̺ٱr@La +$e)QTjE{@R:ޖP_,gXrQȣ^ЅCH30hLԹ5P\a4oe{X +c\#ΩUy{ PK!Ivh'ԫ9)N]#z!- 4+R9Nq, ĩS $-@,rt$\=2bzGI)fHF/'O@zIҰzKA:Cz@>{!,,!-sEҢ5= +<ɴ٨%&N<mxzJ1Pxj4RtZ:F@ˀ m%%[ +R?Oԏ4v-D[#9>V!EHr!lF38Cb=?KAq~_"7Lrm,tQ&: 1Oc,ru I9yGEnWQ~(!:,]Ye"D$<:W62e@,JWT +gF _Z㗐Y2A2O?d*[9~Sߓc {HG?T+VAa.XZr;#5s  e +?g4)pڄIz E 2p2$"gRxc(q#8#w7C#^9~}=?NDV8b5 6 wi(rP~dT~Y·̠6bF*HrD(gpAQ)zF<`4 +Ruj5‰k n +"~7?oAg#R ?U" +~ a@?x`T/1me6bwr<;UF70tas{WdX487C,y?椼O)c Q9>#xzm0a +zQ)OAW)\D8J>9[i= BYnP%|)~vA1t?xK1nuv,u R[)}h*'?}z@-.p$#/` otQvh8dph K\~">Aq_ QOaN-[x>m}ru;*]~*'*ASIUAtP㋨ ro(,k3`a9zŽ}, gA~ ¸?W:א.K ~px/ =ӌZ&C/IRZJFNҀԫRa$"]ĉRڇk &mf/ $v}n <-}?_p&nd> I-\63Yw[Q£-@p!gyYh9j,0 5\ +уJzLN{>e?._[ ~*~ȿ.D/W\ +l]ֺ >FSԔp=Ucs\RN`Z": L$6>&NQP*7~ RN&,⌲ _@<%ۈZKĵeACOaZRCKhH8ŖF\Zbb8Lgs/"8vER76R{G~>G- -%&K2ҥ`SJf& ja;3<ۀGʠy4jpe:c:ކ*hRq9aݒ٠LK0F0 ƁN-9j`V,ߣiNrQ$ߑHeׄ͑E&;AeoX< + +XwCGHN1, uey y@ hN9=\3hwQ +X⠆(ż'F 0+DB1! fYI8[B[WbކDpKG&á6 CA{5^ +|jhE,ēIíNE2Vy Xy܆&e2a8pBv ,XEs`-gσD.]^\/i޺GHU+C@,ےPaMl=p!Ca%iq}GhL~P +?8U 2n"DrzAqX l +[ޢ/L DVRg(@1'E6!|Peu|gRCqs-ی4+ +C&-Z9f80I!vBBWH<{nYE}co$♔rqөa)Fqv $gbcBG~[:"J FQь+wIѯ1彥ȣĚ^%98ahB4HMV_a묪ޱa}3d,`b Vb_C>QoC;9@.rur wI 0X(Fm ((c]T)r*OLfL.BXL4%RT9DnU$gEmQ5K{!BآOfzǯ?vGTK O-i-tZO{a&TO%nu*XxM#cepWB]hp7ɍl%m^SKoR,RYD|nh9@![&IaCB Oc!܊M,t'kP޸]:!k $np )7́xc,Q)kdlꄩ-es9HE;XY[W*l',uBF,&Ba2$Xe8|7)Ң,+sm}s!𶗻įNEG76N0Ȋ|4{$!g]%,oXvaE1ͫN ɩ6&E%=~X}aę p\M$Пy&M6Y%.+J"ѬڼI󜆠 +`UiA&|{V_1WB3kD B4GH\uz@&c IѠNK8Yȕ`X //#[a80FcZe,JS(`1y]EʇSMhHI$4Bzo/g:=lkZ`BuTjvCzLL% +h+@e)DHO@2Qh\HnO?6"tZ/ ))ǷI􁾊M3qi Ͻ(A<kA- 6:_&mvҗCGŀ +`{daM +)[3Rw 2iB/R?Q~""TF>jn;>d"|}b"ɂEX?QyIyhVyQ!9lQL+w7`U?g0-c^?a>Q CaW  ?$ 4jKD H,bgZRS8ȡz4{'&N +_B.}~*.Yx.os+H Uֽ_mc`v 2%J-ܰGB0ڔampHLxB@D~ߺwX%:w?stjtݏFA> .KZݽt09}QhX  h&A@Е 1!'"iLFc̈%_,WL ~a>-!},P⧢:%uET,R=G`Y!+& ?~a\_3HR@Goߢ!5ObezdU1~mК/:uLZR.{G-؁\;R /f6|C3_aDK!E)~Z%*c$ caQ&ܭ{TWu9 .E4ߒD5T r W"% Q <9a$#cL)BCSp&gbs[CI^;D)@B CU7<nx  T0epA2%GJZ#"->"bQ@|phr:ؔjnLnRuZ[.FJ-<[eT- נ(nFXǶw-k#Hgt Հ[}H +Bґnhe@L`B=Oq\!UP#Uk/j e +5P$f҅:p-$Pt<j,PR'j (xL~Z*acqV(0AxQ:{ &S>*$XL*ƑT鋑^Ea;> v% adx=bThV~Tb$, SC1PȘή̠ @/5gk,$A$.UPRr* τ.btb:.3!Oep#Q(QRMFkF +оyp.|:(x,,JoCPk'N 29z}j^S (%u"+7L fV8B8=fSt+(o 2-$ni X ''F'q2Ryb92_dQG̚xd+hB%OU.,>GR]B2`SzRXg&i<0jeb^H+ _pԆGk/}K9ُoE[Rut#vD<\b8ߍkWfM;g2KيUئٍ5-U޸j޴\Ԍ5Ԣb? pg:S3VtFtXЙZTD,ܫnOءvә7M3b2%.=:W8͑*y +4GXU7)r1LmL-&Ҝ'HDwpyzWLɺ&m뚢*T2fof(zA`pMaS2^ج/[\?u7hTVLHzQKt4cKɪŕȻEu 5òdﮤF.!8g8 lќ/mbe801-hq|vvU̪\)yN*o׀!Q,lTߋ[rj7H0%9fj74]7=";y_c>r"_[`<!ԛb6@dV7Gs^jp*!DUF\ +v +Zt!W[6>2;_v^ig?Y6W6+ g Ue|x -WYA%SbVW6g!W[UغUM[z~@7%밪6s^ S(pD ǧ rC]n0˩ `,$0>kp~ b>s9x=a@x+G¼ J1c5 ֔PtxJ ,sV~7h)P]λTq.j qF6~MgjXʙa1L` !#Yu:D_@SXl2vULV1ؽ*M`C쨨թY8Y傟xy`KXVȸ٬cOY *Z +-fe;SVWaT +{[H&gv_sY1*+r4hEs؋2DAWJ p.F\L+tR>hqP?'@b}Z, +:b҄[Eyro*Fjn[ix)^@Iە>&#` շzo7US 6.j!RMeGntfWՐ*1C}"l_̫8AuR&ҨL7 (}Wi_vf_e+Iڌ0{7J͊Yl-K 6)uffA;:.f N*dh0" +\ưɲQ@[-/ude[ X8(Ϗ-MAcpVO88Xok#]܁: 5{9_8E-XUo ,{^F.1GR9si]jf!7nGydxҟ7; Y`8@7ZA1l* i2>6mVX^v-85`_+ vX[}[ aXo *^injUz;OD`',ʌUo6˫\;,bŌ](QK4E^)z'c1kC{nWy:WMӄ0auKe5$4{lu[YۑG03q Y X!ՍoW@ TuNqE.3`KcbQmЛ7A 2trL  ،&P] LQ9'G a +T R2"q 8MRڪA֤ eWm'- ,\:'[`$OLn?lWMe?b'L0IYN󫦀JM^Uȕ'|UʫLWˁU]5mLqx FuQQ^;Ȓ'Ug )z*%]MKUa +26@>;vh >;j[^%-KI+5,<+[:,AY`h.7%0pW|m<4Niu0^ቚ,(Da %; ,l:UYhU) +6i5첹BֳVx]scAD0d*- +BO;Sm<@͡Nੂa,U`d.DT|:hmHEn,MJ!0f4/*Ua;y\@0Nہ[U̒%Ӯ ckM\w^Qڪ4Bym{v+r584\G@$5Q3X"RÛ>R.aW9hV2p(I +'3WUGX A`_*̕ЀZ` +H}j}]5 Y`ԄC!I,[4H`Gy FA-s0` 6G/]I0@Eu%\;$ExUEMyÚ؊tK|xG%Z*GhtZO4<'`¿v@V9F#sTO/L!{ 1fYQ~W,k6]V <#4?ii]Y eGqD,sv{ FVp;[P0ȃ<(@REZk0aُV|9pDqfaۉtX-ʲa'4Z`j25Qgj*yܔ?^ha9T.=ɀ>s_P%)mWSu3k +rЩUl퉢D`4`ҫf|դFhCƿRh,.LdWVfj%Ć%c@\^C2M;lM6h WӇ CB2^W,   Rypj4\OT$~0v SU!o[æڑfڸqь@u Vjo5WWOLK"KSw[ɉ|M:h:DzѫwPRxH*-ZT:3_UJ?%MiJaeTT+Z!%P +ҵ˖DUgt4Toc.(o2.jQD,k'*Pv&i';~ep 5,:ă{T1E@&X&FLaB;V5c0 W+Kۅj356@2:S3~YLmzHҷcy0uzH4qXL4s#aܦ[!]5pp]ݝZarՄ%hFݪ:ê6Fk659U-zӮjEP]BjI_tZFU~݋mfaҬULYRE2F^jX=^>uZ%S@*2PD5aDyE?|+g2;7??pRP&?y`7v6X8NJXgjLm:x0j n:S`ؙF7JfC&gS8$RgZe0,9\۩S *DjQC tja~:kVB[Wuem[#h,ZW}-l;_"a$KLX6ЙU=*duhưP5p4Cm#<=*#~(={ s2,s[.Fh +tM 8IG rw_>j XMgj+BB }tjWaԮ2 oV(fj]%ʩԨOoQ*wX`%'l#bXPYJDUj%D/ֻ65&8T #UemVԸ;S/hٚϭ%.@ W%B,"iQMXĜ~0Že(g> +0GbGA -P~s3WQ0,;>ttbm7teb:S6bXSxZq1I*jlwruLC*`࣡:VZvWΒ:-[Qb"ΩTu{"ݩSh"nz8r,s.[VqkXF=+~3 MA2@D/ƽƄpK.3GDk6Ssɍ^ 38GHgj `$aR#D0C4%E + 4Yg)Lʑ>XԾIZ×^Ǟ$|klM! B6$W"8m7͚}NZ4MH,l9ɜ\Ko3L! ,y5+ڈ"CB#w6"'5W #eARR?}0.e?'oGӨV0B(r24.<0ǀ8ȉTt(( -Pޓ/MFx 4k31fGXVK.*o +R$`*otgLƺk/M_lZ+c4 UNB0+0fS5]y`U^FVU4X5]Y׌uj%cd2O,7m"\1GDc&@ѨZv/lRxѱ,vӘc1G,%7bdu%a MP fi:WLja,3ZY8A%C폇Ȩ}kHe +.8IP9,g.$ġԟ\pXO]s8,ݾA&E0!Fv6KJMz26/׷q`3←3 JK[f9'kj ¬M&BD!sy Ҁp Lsf(e^ @W& };# +g+I` ~R-teT8 $cz9w%U-Xkh8lHom,I11 #tsS >P%Ntuj#="}IjȂ!A]nsdd,,rEzU{I^}dH{3"ȸB'LOιd-u,Z$),ePѐ rFl ;_: +BX*{T&+yABXf= I7)ެ6BJnEa:sw쨒\nj` +e! VܵR,VN`,IQ9Cvq +rX%5PZ|TyC d5@ ȋXVR SϪ}-2dd#=G5!,ԉ4J2s*=EhfKDuO]p +9Y .bh~y *X^H~\)w㍳d*9#NDP85ZZ1 (T%fk殑/-,>r86"HBHQP8h:mr&4E\ NE4 QM:I89> Um+NyDir!qџy|5T6a=jס;6 ȴd 횴Lfv#!gJ6W| ڃX*HY 쌶$8.HPF`B*cHj@34iVbNR'Q,{ +h q֦^Mk@>rAxrPb"pNk ++U0y@ PЁe>700@$ 6GL =>⠍_Z/PKd^uP,sW\+$t'ZpG,qBA@Yp]7U>cCb4_[):vHf3Zx$b,6L $ 3f$`3t9ٜX>dHw9DSƾ1AS%hD8; ,ZFX]"#isrPL<0 cq5dQ>_aIgbH;s +/%H ?ds<yqEfd?4rTjHc.jm@Yx@E˷cuY 1V6ВSф" Fx@Dd599\!(QHB(j6;cS׷y) x@X>9S雩z(\)v:i(>5*L T{v). xD<9Zk8ru&&d\S8_زhf:t&&0yg'Hm(i$H j2G?LC[" +#3 ιh987J( "!t Q%}㣈 + Pcpι -e Js?C <{} 9?cC +,D < e:K-(8pyn\$FT"kڙj +4PHx@i):|8 x< +^v.qJNke",M E<`207$PS%~怾5ybZm449L:v6^o®`Ys:RD?" ifח z[N<:4/]nKu`.};e8=eXSCyOpTOpT=DHۋH 4,G}3_#\ih1.gWH& W2Ӕ%7L_Q7-vⱓ+?dX&{)GR*i躟þLvU̯0`5CyZo !)]nf "0g᣽ I=C&>}VwL@;/*a'av}LR-=}fEHvܢu7$"'ɹ"o/aWr;4o1rѹ#&ڗ$a(u'cRPP>}ap#4,-6E f# dm6٦zD~h.X1obxOS}G<8W2[nĕ̕JL@4P߶ t5[[z)i^{oB4S5sh4$Ymd6Wցku`˖m&Ntn[ooImGIo m8*-1tM7H4N 4Nς6¾YqBfeaz>40PZ=F> +lP%0aDX١_cy)hM$iwphv;Z|~ S)̾ՌJ4nY7jfK*0_DPTfxQܷ@Mp-v`ƨ2B٪4}S7nĕD4*k1Wz$<, -%̔E^ݬ zKgb' %w IbAc焰E(ax߫ WY}-vTLz)ۇlSTlzM˦`Chĩ*7{3QNw.Aޯ15) :0eMӰo_%ĉtpU]zUR ?*H#ɾ)еe,XXm7rbw9N({pE$۳objHCּҷK$aQ,7QN=`8ؓ% קYwt*E]birx٠C ${%E*r3HbIh*#@ZlXax/ ~u`& HI\} ֻK  .Qr3 RVkIIKL6pֳo\]X&)=7B<(C_a|pmVHB܆ֺ.a`?ߡYԳ1etV!) Of>ϥ mJÍ5hK#LF-xrddY3`#YoSt(1i|  ^-U'#Z! #!<;g<}; ^0[CyS 1;wl" s]2SAt<8{;,u +'HD8]g5m V][]0R. Yjz~< +r ȶaC̍B]\RK|* .e@ʏ`5P} 1>ZJ?pa[okT)ݷ20h +Bޡ RQ&`^G}[Ill!5Cdfd@TZ oه ManFA@#ĦQ?ȥ` 6M +'z`57{Kzh `K̮K*ڛc6MaÜ}Cu#7u2Hzy)Hߐav%5-0x'էO y6jț"B+7TlE]ۑ״W*7#<¼P-#t(Mkh0SDZGuvO)WgLh\(0lt>I-=}f2gwµA69o,] VsB5vkЄQbfsO#}B%.g[ ih"uj?F%)Mx}!"'I@Ė\zKlǞ/&Y)d_OY"Ge2KlE՛/\D`B,$ `,` Tz,k3L Ё<ˢk*F vjD|8'EJy%2 +t%Ĵ ֥KO ͧ,aןϩ4US9 +5R>B- V d۷ +T pa9/(p'g^՝)oc)`~pJ$$LX~'$ ]2FD$p!)|ʑ'+EnF]ۑ9ɀJW|R>"\8n7x2?>7<$ͯo⿾ȧӷIu޷;UPxȻXOAOVIw8k`]JI_j`l7t#>GB vd7Q$6F uGɬapȷ ;[VM{fYqe0g'J?DHok/^+)RPKi&$V55!Ѓ*CD־qNb: +II@**;x׳% kDCܑQLZaRv !2mPA/&ڛ}o0JCvIϼѿQ}?Hɔݲ +g&bD364-PcV-Է/x7Vm5K + +78E< +*_x;hPpV5}{|&GšdX$e=SL2xM s2-,D`ZZ94og/îo_*h9}nfu1b3F} + # Isf2A߾x&j +9 @ KR)\*PLU2)5tCe( XNg=ɶ[2\VYݪLR3~FS#C_A}cf`Nɞafo6H/#lTzc{7N; wBѻ,bY􋪗j>bu`V@z뾹&;oJZLuҫv`%.GpېלMf]yXk6+ 9eF@38eD\YB>!O!h"'H0򾩟'"WEmlzN\XQPa.K(ۣd}!IE!+iڢ-MavGpHtDL;,ZUT }!m-o:gjGdn8%R\dakU'hH\l.;+ׁ.cښt! +P PH +I1I0J\IbyD8W1׬c}UMpcr_ > ut"^۞h`֥\K͕ؠ0ڍmIY# e ԲLF;ժwq*d*5.*E Ik]tCEۄ>ؿ ,5_.l`okTU_ͬ#=QEU d d$eҤ5#qu ryFs9"8K/^N"gSUgr,w^A[0^E}KYWj7ـWv6LGԓJ! QL^9iB5NՏO(zj*:T!Nu݇m1H0E +D-pJ 렛ZYNkb(f%V}j51L*U=T[=&e #\ɼHX^X50g!5_-{^XRgpC&#ಎ Ҍg^;j$3jS,`nV;:]B]{㤮Aт/;!.JȻ _żGZ6F_O?y>aC!ثolzoфjHþKJ0lazpuuB a9 -sfƐ>U*;doV+ډAGo )6ՙy‡>Cy@~\93i Tș)?:ά:l[楺Vfb8a0Y%ɾ-~hG}Bf¹ M qZКj%Y{<`]Bpnxl= fCC)͕cvAO_V%#U_V]^ *˺ƽݏKȺJ,$U ,?wL4jEGLFa0 LIT9Ed5&#N;D:1$6s!V +BJ[{"1ȫZshd٨5j +($f]*D ~x6 Ԕ 1I!r4lSmMm6Qܶ+qf̔ ^Nff8@ٞN܉x.>535s +i-f]8-h2]8OnA!qBfiwm< +0%gq*x\١/F3o˪ϔ0/:.Y<ˑFp%7w&vWޛzW4TF _v4u`ºJwj5gP8:@AFS#DР>JiSE^svg6ਃUἨ_jZ@Ft8.X)Θ `Q][|YA_u\2FZA* kf319W21+ 9ApxV fsu(|AScAu I)q[&DmSܙ6 ddZq"d;mʓJ~h=}oBO 7oFNfq84q|.er&LB͙ܷ}[D6S(61Nf7I~F*Ú^")qtd1eַI+^,-_)KHZlեP+Sv[ \ +/ФK9!׼]зbAP=7 U'4xtϷ;Y}) +Cq7+)Gˈ9-e_H{ֳ.OēI&ҏz=;HgJa}ۋ"vq x&42p=kL*(=&^oXIJOu6Qӷ}NPk%r[FIִD;'s%TzK#,KcT%- {PK=.[$.=.q2=!{X!#u؂yN +>ȓtW6ݟ޾Y5/+q*Ƭ_CS)2"K)ib=>ODM:V-Iieh ^S^:G/Vm + + $'c9WJoJ홌TJ_ҋu`m%qd?d59eU EPӧ'4lg9:H8M# t߇RE)7CS ^8a{rrZi C65Lhߙ=nTe0䧭e4g݃LR ++K['29h)|bPw'id${j}v#6AD趝 *7C484Bz +؝d^:H|lB 7x +-W4\a>;Lx +ix§%B8&`ȔSr +iXӡ~BuJO234e jUт]`6:Uց|)H/G,ixj,'ӴhLXWIRHC1L'B*RHҐMќLֲC?ʓF+(b+v`8ڷ#6)J!8CA$SMG);!B"$?BZzvi  KR.!I)/ʅ4e M\($۠B*f: C>%!pMD$s!]y [+ЀF'k4K#ֻpLkuaTI ڸ$b6S7{tf&^h:D:ࢮCuBb̵d+qĒms*hr"UT'LV捭}!_Oqrַ߷M#!jdȼoXA^ȒA`PGBSNg=!֥ʜ&)1nQgdIl-%1a߾}=Bp!n #9[7yEsR+T"z6!#TvonCU"TĐ&fY, ~" +!] +gGBZ^Uƽ۔StD\Be!&lC  %>C2 B4J(.$&,EP$8 BQL|'Lmђxq;LĿټ=(J߇0`Q-L(.TzKRaCLNh;щ'/b 0LP|-P#.p2qddajĸg hmum0?F&PQ}o>6tϻ I'##-0UQmuϱt9jVg'eOhQsH ;Zj9_b PzI/],8XQ:9{;remCYM7CwבfNM,N؍t܋HxblMnn2LkqH8hxӮ gBDt$4D$aNZ/ ޡO:xxnGۺt 0"5m0omu~=y4 vÏEv𭩃T;rn#Rq4o B +ښ2;HmAx/U,Uau65n\Lèpn} !mИ? bfmsLίTx挶14kmaޱ/ӰZͬ1CP̊O^ۣ,w)яhyy=yur㰅tAH7VE}m_g|#CtA) +#R$xCՊ%Ehv+m9.A{~8 #“Gb-꪿ 0{R3O$v=6N?D" n(ⳉ +rpGv="Adj.N$b,'G, iؑ}4d9{;yg/!!(DkQ2|͔'$mn-6gvg=L Bis79b>q‘tY%Gݗt.g]kYHQ?H~_+&۴Mn̷`6M9Qu^^m;`=lpdDPER!O|%#X +2戍UVd'ZE1!PĘ`Uuu- wVz/z"&k# n3x2\ u+]Ak8/?/Z:vjRp#~R}|SLVكdq=צDq[3> xRKn2?:Ԩz@Ț^ÚՑݦmk3j;4k"r.YvO?gEh 7 I>$lĄtᩔw`Mm<08GCjc*Z)ia@d@\` Ufz"~j&HTKH}!3!_5LYrdLSMR7İV!LfV@Mt[?4 $DU"T|_NM||SI" +ZɓpLo:TBcYv7-S${YZFWB/0;>=e<f$a/e˒H?*. *l/;@AlBIHrcWEvr e7*Qy8B<2UŸ6 F=w4j>Ra/<KD׿b{AnKp$fq;$|")HTF`Cx4t8dE8 +`RF\UM5WAe,RZ{/F3VpF6oL;F ; HZnwd*݃XHFv}2NiDx wuJͻdH% KbdjF-ͅӅ=5S +-oME)UYI܄#-#7mpG;vE\"T^ňn7wq! *ynҒV{ً-ywM͜& j/?h_'T%dWRШO>):ȧ\R6kH(ydc]ړäV>EL.v'.Ձn@K>7M4ZLNQwH;#i>JԶ@$2X6B:2K`` YȤ2-NrK_kRKYI{d BdlgP 4h`۾[Gi݄ 6 V=xN^~pwrutx{e v?fVt@x7hƜC'.e]w{#swh -j0gݓQw5%DwAā\\T$# Jwۇ'FcS\x`Nr:(&{dvu6avxwfhBʓǹyJ۪y<zy4KmBk9fGmvo&yk^Hp6ڎPB#Cu̢AuE/]:)rmxnX؂vBr `\wvڦv)Ɵg F#Psti + }S (ul4 \}2b9?n٦d-|5 ;P]0C@ "ûVG!$- sC".O:C'H>|fZ_jᢃQZKb2]lЇ>2KlM28&lg+Mniv-i\.,zv3и'kb +3n9>S?ٶǪjj%N},:K$xLL"Uk M4zB"Q;UWQGC/. +}=Rfm%߆Ra.#zȈX)Z"Q8^7#m_/U!\a.bzT&]t0_ 'K#?ƋS6'ZA۩fb2wT"\׷/SԃߑjzS?@bvO_5J~)Zf$5 JtBUS `G *V;Vuccl+߽%)@zy#k uuEHҝٌ7r8oUR1~'ٟdez +m?Iqkm  L#BJLmf ~u|nXaz{ b_Ɇ#7Ŕ +=:9Wqňݍ%ail5>Olo(`֦ɔH 2$i{TP/{$$P}{L+8D(.~ⵡhkhz Ȉ-F.d+(4V~J_uc8M"ƊzZCnm6+&AyHD3E! ɟn^?n3ȩCL%߾<#eF*Xd,G`eIO(gP4J190qr|y,S!hvB]K +Gu`B}zܡ:qtڷy׽ "JLQK>ʄ] =ǦTW:*Ky=͖H1ORGZC ڴ_MxW}KH}(|;@&\ Ea KYM/TF?jB1؆aLgի*5u8UK _aƺ~>jfRX^[4mYv_9lЖq^ :+xe5r>g̓3 UZD'HF1^FR`J0# +rZ +^9 wr.@T%w&Zae*`d#z|Z<41D+ĥeH$ x)4E錴%`D瞘&~D3X6ÁJ)"p +[LvD{!A/zFT2flED?K#!SPaD +N:v .j?k9)B} +" _IAxO|x2c.ǵD.x֚{Ihc;7dRт&T7_${(Z`4BVx?KmT7=$͌aF̅S q.$7!:D96 ^͆XP*  +DR%/tm١0:N$~xu&u>j$1Y3@X',dLڶV悌TeҨi;Gz#jhЯqcuiFA +)c!G[,* Z5;JG V] +ŠPZ*>pF.9ġ$Cj׍gtрoSGψ=ׂ9]q㉢b!"IEϏbIu{Uf'O3(e)AQ ݔ(716baH OӞn%dyK_7gJӮ W b5H?L%S2CcV ; T5R.:ѿ2@ONtu?យ ''Lu6cK9q"E m5l $"Ęх(;JCf?Fs- ~ش!w ) A*i4IJUJs(:%Lr;-5E1b Dp<݈("e7Bpk _\XsS(;a!05iNz; R&33EЎe(k|auDI=C KR'nSfԿv! xovX2 U %8f]LDs[_ +sK2A"}[ee2f=*5 +]+KayaK2qv&ƿ1+(MeyVmvڜwρ/ mF\XQ9 g44&?)VQ @v{}|Ѿ4]@:&u{ 9KդݫX!%fjOC>ų}̼XJ6:[#F=>>x]n-:;֣-ύLp +FIt1HBG'_1Z) GLIU-b4EG`%Ut^te l[a/{f)6!bnڍB({j>xDF ^-AsēFŊ0$Rb4w'v(81e~z<`^㇣ a^iA^`iqv%Ti\l)j5dC}A:(}%`Y ;>qD"3dFJ]6O^f `5cbJQ{l:*`!@+y4ƚ )0(y"~ε<3һVVN=̻^RO:f6NLi`͙s$8iMޙѦ}aԝ?D@%*X+BTw/&7*NlЂvaxFU`v=ben&^̵E"tQ|# +"'1Wx>2&J#FZ|Ŕ5gdk &O. U&%̖7K n`[\<֛_nPϯ$A +Ȼv +cTu w%n@Z=נD3! ܪ2#BS M!%_IWUozV0(1EWoW`MpOtKCswXMh YR{j뼬z%bJC[LާD$3Zꊟpz:)>իș3̹0%bp]ɷVw)aҳSh\,{<9gT7=},r5*q5NOn*OGJ+Ul7wsiI?"g;%`Q [RM:hvM|*g} I~;ͥ|k>SwEN6I/";sEKEeBVTd}Od6axIQt8:g r- +|/(}.<]><EʅXf,ܲ,ꮌD)a^K'b[֭| D 9AwQքqVnI?*Gb0=_Kxwm5aDN5]v#;r-ێ/O+{1 Ց(ݍ벼q$|wRB;0XCik`c|w08xw'n7H9 |nGwDw7IWuCA8xh_x2mPȈ'UO#1leG\$.~:[ÔحʩUh_}J3^`pcDmw2̥;v@_pޕ +`6Y(JW]nnHt&?a u^W \mNGiԒIx׌@r&]Z*&[]bxq\-BCWEەr&1̎wa& Wmݟכ3z}4mH(QZ[x'ˍ7ꔙ!MN\c{C +pPk밽ɳռvEzDYqIѭ sW +p"ڞ +AkLU'PnxRMde9< AU`^X1Jl @s!ʡF_vPP\8T _ܠ%W\C)b%s6˾]4X5G#Ut}..ŏl=s#/DŽsfq]]Rj GWk: +9u[t=Awt2i@22KLP) zK™LtDLÖd"-4 RY +ҧ2CA_a0]7'~ F=b\X1er"&hoQ,#c#F^S} B#YE,Xq[TqľƋ 3bHcշffyPbPښً/ IqqIgPt&HĀH:~gJ/DWs$Kn~: ? ٣ vo !6v>);ц +Ә3B-:Ix*b7& D\MV!svr)O=* +3&ebnœ-7#&z22<^5T(4DUuƶնb~r +۽ +prVfu' tOj.WmإL0.( +I.H܂C_t-k?U&aDx .EaPjn^)E[Kl>QBוƻ>zеdFA_3 g6; U6IrjHT/z-"uS:S\NgA6!LuV[m*-=WebUWre`)YJ]|C~E7:v0ijh^y7 V78LWԓ>kE<{2փS0sݥt.p+hT f-yw^з=T3P,u=l}DJ+hR :HFuZsc&֓h_i]fSk +*D:!qW`p כ ?hM5&˷fe:+zycBfH;,j(o]uEmYET S8~{|wL+k~`=[ + +ɒA)ּcݣpѽH vKl=f~F[bc6W2<`ʢlq4W`?:!Y`7a;| XCҐPl{Y잮Z mo=I 0H D,xtn&ҁɁ)[ Yj :t:m9%؛iM.w@ȝCl}rkfQ[u؅ Te1+fJu0jkkG7/ʃY_+ ntn8<9Bw1;R)1$# +SY1z 5_6'۹W C I_-a:kPy %I|+׋hd';eO@{leabK4 0m2A;{)= - lR><4,@ gtk+L4Oj3޿Zf\|Ʊ*38U{K;Xtf _%qÓ{Wh`1M/Q ܖ 3&fi־TRfd_V}W3Z2CN|H  ^T;;mȇ%lmh-Pd˰f~] ?:}!E4vҲ'$ O-ڽW}'Q^o+(SܚծH@8^w2'pZ!YF"4V%rO^OQ +ZXx91(+7*+Mm}}j-/h/׼]ۃi<'|a5`0(l4LVYj}OeҵpfW,*QXxljߛYk5#ʊd\9dnfiD~Q,qgǨ<.f%"ey)xu-3}Ć5_|P*![W!a-׷REy/? ;TQމ-.Ed>stream +;CVCpp 爻:7aaCՂ]=XZ95q2Ih_;77@SK9wDàa!cR O@-/Qֱ0GmyUִxX`pd$?j4rGX7oZRvNYbح*ML܇h5 +;[K-dSJCR|-A*P8t/[Qƺːrz "Ҹq9h+5 3%%>T&,|#M-J2B[`D1[1rp,rA[H uֱk?jZP`/lUW7 5zD5\[6hB/Y:@7BKg_3<0 +qHfwC)CUeFy,0D&RNUkz#~11Km3԰"0ԃY#yjpII8σBKOVaRqyY3:L葀_ŹO# knVgvUT؛ -NĄ]`5i?LŸÒkLOw+&Ak<+T4ӏv &ڧ-#\0ä́)eXpb/%z'lGFܩjk+=P8c>] v?dD7;M73{"2pf%OnMc33= n%󋠧-RGBS2g ny؛H81d 2v+3?ٽI\i *%*_>ڟ@'{ }bf++\ K6DBx<pH`!_Tn♠5"1_k]psp ))m 㸌 *]Y3o$'6S4 ~SK#}G4k>7j4A^L<חjϫ Xsx.1IYIǍ'D^Y\L' #D|mt6%@Q]Hc\CLPjz 9+}&!\3n`&^7d+fYc%10s/ihnX) fn%oitu-.K[}" k }RT24p3zv\foEH_{Ƶ6:{N^QUa!x da-+>ZY+)PwZK|ASBOr:r5ͺ+J `jr-rΪ|ig9xRDd#U&Mryc;ڦipІl'-@l88WE46&2 99,$BvB(eluq*E&иdc!;a!{BÔ0e`iϪB3 cedR*Q+4 +2u]ֻ äc U(maGg!ՁLDshPXpLl"(΃%;Dc(\PAUՇIjJ֣8ā јx,7@pMUp%blCqRB96Pb/zv ^ fH |>CFЛ6=]q#hsΙ^fxNq}#h3wb{fk=h1Xg:'nccƷ3׉cÆb?~ $o(iiʖ\l LY:`fZ8+@{8[L N#칥`8SHː">4d{JED>u(Gltۊ0L[R>JmJŤ5Es'H<^cCzݩذ}=oS,z[IK5@%PCT[W[IKm+m8 n 4UuۇI0faYú́8MD6³7~79 kxwssN+uk=v[GV]o>qkqZ5_A=}[tZƉn[9lj3}9ӯÌs}\kzzO5^Ja꼝ֈ3KZ4֟k18m͘{/;ߜs1g`͙~ ڂ|E $I +" 0E9 +lƆ` aeQ C(c @Fj +׉T5&[T襄XW&Pu[gw +bx֐ %RP|Edg6ӭN%FoO $B'!NEq7vYCpzLˠҲWA6d39qjD;F;?dLW <"?KV).oD"vk >_7_̨UX +ytN,8USݔ$Rrӎ/rOҼ^Qj^[>18}FICb_DTlq,j!ف' + ҍnbj)-o@ Ec\zNVZ +;ehAJHۍ>#5JiU<4$$Mk<aZڌUيݬռO5gk3l\$* mk +o!R"~֐ A[]\iiUT +=EO+')Oέ˵Gq~rY 4 z+EiRz/z =ujo0'.dcNdkm)cPNITy2%|TZ@].&uX|'[\K$@$'<(_!_M!%z^14=_Þ9@8ϡ5yXêKwvh-%xO|7W֦Ķ9=o\b8-Ym~H[cלU@aRf~6#yoC NiW1GRn8Czqvz=wf')>TWcküurZ>~I~p6ՌPGnͫva\gd%1}_ P[b S!GE<[LUlC"HdVn&ڊ¸-eW=mOZ{?'BxS_ ^@IKWZqLS'eZbʻ}aqL0 KvbuWf5d.?mC)]AG +ɰ7E_LZzowd9OӇYZVҭHK(4qMBo泌ςTR.L_IO+FK⢖Ƿ6,vv0c9odBb.9nZ~O18A3fa5Ni#m ^Qb>s-&.s [\%7 endstream endobj 38 0 obj [/Indexed/DeviceRGB 255 39 0 R] endobj 39 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> endstream endobj 32 0 obj <> endobj 40 0 obj [/View/Design] endobj 41 0 obj <>>> endobj 36 0 obj <> endobj 35 0 obj [/ICCBased 42 0 R] endobj 42 0 obj <>stream +HwPS -Ћ!H $!.HZHǂ DAJQDқ4A =3μ;͛y;7g5u HL쌌]\t`-8`nn :\ ñQG܉n@% r KQd yy(D7/2Af)ԛ2 dQNr:@27T.YG3Dd,@/tWG`ϟ +pݑfz9eS+q*8 /?& +1r8jF=(HpE$=n2pjb ^]oMq G-?~:A엂D?0^0*MNQyPp?22W* Pjs5Z4m133u1)ccMcepiL\€*r]p337t4l6|-G,,ZS=MTWߛȔN6O MKkHؾq w"3FjVYvg\.4O0_䭀۷>İԵ,zÇ3!UOIE}ϳ MfրK/s+_ut~yMFp;^>l{A!vT#8jBh1?=1?;12_wt ̱2Kڅu⛰ŭov"v])@s0R%BBM4)t~0)FE.R#,86.'\a܎3.\(O)/?'"%hJ A*YG$FEFO:/ux1Ᏺw '.[$%&'>MN8{Mefޜ\<|[ GPߕg_tR21Uդ'IOKj:j꥟=~8 oh%|վ!ة:B;|m_xCQHcqiSgftgX>_] Z2[^L6~nUbqf6݁xk  LAQ(л;1ɆYyH35VO6U8+|#Ӊ ~Sg/̿)q4$C +Qߎ'JHKJKde+19X\#P^IA\G^iWyIeLOs' +]tub#NcfZ+ 3V֟N ~85`o08zzi/.[{P"ܓKK ȁ)M!}a,(h^bgT_x{q)DaoBT4'WFAKfZވ̺\p]{닧JKe**?sPD-˟ugmFME-}mKtݫ؎΁n7o= +{ /@? J ؏z~$Os9=}s&w6w|B䥸s+~_\l׍on"ߖvwǿM_ U D +2-&6Øa YNL(%#,Vk 3*G g >70^_><@QkbJ$, w\uD65eI(H2HKJee;J\ / УX줢 +W]TkS/?nyB@K׬] =I1!$?P9+F'М$埈s aN_bg8SaKbmk`/lvp:&ғIFGh HCH'8+y ;89E,{P8[R^4V< +Kxl qQW2:HG +r;A;bjJ +߹/3?z(HjU4r6\ttL(ӧ!è^+!d Eeo_87}/tg}KLsurc.p eӎ`qt 3,#|Zh80I5]^K= ǜ;yyC1TxA6G6zW[h +><1]^~|h hO#PT +>$P@%hیoK/{W4yw8 f8e D*RBy;`nQtVy:_@ϨgaJ.?c}z5M7D>XP j2{89 +O +#/a^#.y?FPgq?:K1b4wߘUuF]WqP&:=9ݵ`ez}1mޒpd7lY1-uCrjz19"z/ +2 caZnpHu| +zP1iDhTL.YeP]G&G,,` ]` Aѡ-/s">BUuF.{T}ؗ) N!"GB;dl߅[LpـnF9 ZXcL8xէeW[o@ē1VL-#C&k*K&vV,*p$i;Rxټ_PG?+\ʽMbL6))r>=@x5*fv]^Zduz]X?P41p 9Q~*^ *,0#%8b;Q'p*$LEf"޵wǕSC戽Hah :-"dk>uy7C/)d%x`'qyo SY "&]#6؂5;4uWy +tk/ G &0,#Bv"R9 59oQm@;/D5RIP+-GM#º'uhAt0";=kմ?{-We_]ډ[jA )H>Au%W#Ժ>D.ٜJA1~ S̕V asUB +䪪/j)+68˼=wpmbnv\ߝtGOx;`uKJ ̄wAߕx~Ϟl.ɂQ!h0RȥjEGlsܦ5# J58/G V//"N1J;mh`$?,Wq$L$0lJVzq+ĬЈAaix!dpTP/H_ zZYs-dqN +U)$Yǭ, H -Ϻg,7xeIHh6 <{*M@+{ Pw/fID. O-Me̙mu+M­y!@*D> Ox0LA % v[Flrt@q+ /4r +X8Dm*Q/ZB\@a8~r;E=,7!oM2D[..Reړ7tA};GbsWh q2A];%mi"+g=Uf*l3xݲ?I a~ /&.u +궥 +>'ggUi AN?oO%),z~U޶ 3^Gj)ȀZMۂFiPnQY#TVtgSVD^O˿:JOg+SMnveKlou"̋'gøSzّ[ oIpkк½+/eM=Pm4?EAO =Ф>˭=@tVw {[u)jW>'jcJ|e57R1a7/zu c\V˞ Bb-C~}5ְGU*Z$SmƩૌL "CƼ+g~>dwE͢B`Ѥ*]vQ)TTڒWЬ~E0!U~Jqb `,<7q |?ķz\w5)r-C#n[-V 1/ceSˤpm^/hOC0eծXd#GQ(HJ3`7޼yofq-Eߦ~_ڎOZKW>(C8(8>=%šЦx>ǝ/@'3EHeʹb#ӓ"=ݯQMcOu䅂A~d+ʡ^yk2͈pRtzdswB8u9]7}CꫲQ] )>^6&$Gk{«C\L`ȣnggw +;.ˊr_/C:x)P]aΥ:媀B3-⊗cpcـ=#ӗ=Z"#j%"b7KJːйcle/_>‡*E7@+V6ŸnvQGM]wTnG<2 !_,>P蓧VwN5[,*tgGvR20B'džɫ+ tGj x1jMTn"AKFoUkoȱ*h$e1%#*54N nRΝ7ⶂĎ +V"8%{4G(ȫ*d+~?ɟt#gG9w[wߺ4ݑĈvOrb4鴶ר=yR:p(bHY-Ƞ$D~)5a:GXmr ]c^vzKS8=UĊ3c7o1UNϹu!8EGpҮ69 Esu|?Wx5ɻ3FI a ~۸ߕ +TCY bY#thG:tW5-BG^pw+.xZ t#4r uI_o$郅t/*-]V:SI#< +BqEd_07Ɉp0 e,%(IkLgu=Xin## Ί9W"o;!t%-Izx`to[!֦Z?Q,YjwgW tCOTmW}9Ӓ B$pqL?5LRDH|]gpOhz셠kJ$ۨ +sOk|8C "rզqc (:/k~%Dj[ihH5nߛ-787_A%V"RjxwڶᎣͿ3"汬6EVÄA'X*{G~GZVAZv}&(lݽ6$>Yԟn-ZT3(( D;峰&pۜ :J2gkSIJ}']V +WC;KX_="ŸXʰ #ލ=Omp(e{K  nK 溞b@mfl_#va^Xw4"f0aAҰUҷ`,."4*kĔQ~$pwf k33vRIܞ =|߬oS-KmaRf@8(M_!^3<.ẂXש?{غΏ{h*0I 8G.6hy MBYnW"v vhZn?lL,6XS(i)IfړH|E8Mۀ])>ZɿݳzK=IǴAK)jT|~/|x7L |{R.YXv /hiqM:=cMYCgHZrqqeNfFz.R&)φ,+.Obp.5^W۸&P4^?7H~(+Pjřv$JӇi|zK:mS`Rץ~q1Zo8#π)Ɂg.<}CL(pd,KWJKJo>v܂1%~#6ÜGyuQ`|ƿopCćKc˴WbJ>5&0"J⛰)nÈij||bocv勒WJ=h0Ρ=("hhψБ{oj{;cFVPDJht"=ލ:0"ݜ6׉20}{bnbVEJҒN=~80="ZӋ2z&njub2~U/^IEz=F0fJ"5ƗƄˇ¨zqťm +aUIrÚ=! 0KN"𚙓0qq(ynmi]a PU>?IG<բ038|"5|;"yh!lYf`TڧHϦݤ<30ŝ)#ae^ڼxภl`ST_'HF<{ڤ0iN#({-~~r}f}Z}OGD~ C~7H+)Ѥ݁j~n +rI;fS炜ZKO^?Cm]7{‚+EܣՄ'd+т~@( rf"Zv&NܶCG67^4+(>0N?~/m r7if+ZegN͵ҊC:Y;7R5*g^W΃}̪qwen"Z/NPCF7>n*H2HSՃU}qhʙfe{/Yڹ=NZWBђF7#I*Ɛ3D.r݃},kq;e-,3YVNB'E7 *Xxi<|pķ]dྠZYHMmB}6S+ffOBT;|rp8dX0M@Bp#6񧴜+™@ |r|`p;˯dNSXMpEBPg~6-+- <{$*6aWm: ;^h(zUfb 3`7)GH$I܊賏[:.mjrupTFgʛQ_:= e4V}C?1]@8l^|Eb?,Υkz, +00X m[<?bPAߩ,C] IGe_ ߠ .1^IxO/'`c R.1B8- 梛x*g;ԗ~KtCP^W.T +Dw2EkH|0`W*q"]|P&XbĀC\1=.kCլĊIUl(ha^ȊKJmXpq}P9Vaâo^Q#ŜdD@@φPފ YAɈ~joJ V@ZK.9@Ya΃d˷glĝsg5Ņh7\ |[X̑BAa#7qb̔+z *&3(Vcҗ.' +&1O%D'M DzFHq K0;J5 7GdQX"/! C\8"wv%>+>r'ф1N[Mƿɢuo✔b/HRl+W|[{ṕ)LvŝiC؋pׯ—g߬ +1+KL!Ԙ@|m#>`V(S<{;PXVK~JxY'VV}b{7anWT4[ ҿ\݈lbR%oNCl:^sZEѯZQ-33*HqB6Jwhgڛ:gդ73s=?Wѐ*vn):AНy=liC4X Qע.273ghgq4WZܜtm|>x xRr!P s{P"_PŠyW;f3x^CSW) ((\< 25;} y$RrF|_*@uN$-'?hp +08^`lw`Yll`ײ/lp q28u{lbۇ̝9M;]w[c]|B[v4hL̫%B"HPgp"?es1c\cekE +B7)*ѧ7{>ĭGulk(67aRܶcS|}<()2L/ΤX.`sk$Z<%S0aF~l7'y i^2N@HS&xpyRF}Nք5Qd-!c%٘$cL# + Zx..m}1K橤ybI֜%sSBqrMї8mr0)YͳRܹB wWX8Je3)}U[ )WO{eTS pJJyςG5ꪲ5\E2zP$\ +YFtQwd^Nk+J*6VDy[JB~3{?=cƌifhEJcpn|\VtP rfW,ծB;?Cq9eXc8ß+͋ǚSO붅R.s+ƀ}tຎͰ՝W7۔Av+dol6\9)<:`Z2^M{ר8vWA1it}+4~iD?Q)pC63:>lm~8Q=ӌ*`{3~|wT7Q@AX-Re1CYTL/&Na%づ!o<.ΆD@hLX!V[0|rrɳ$ `M[q>/C +1wEtHt8Eu%UTTl^*!%U,kF܂0!wi %"I(s\׿knu6F rH( &U1?OP|vINI"(* b خ0'kMԸRO3 +KyشvYV:^tFƔ.{od%;V:6C&1nG(y%^eOacD=4ONi6썂; ˭L`f7Qk{2f7PI"ăW(^\ $b1S.%.F6;oAAj[ T>f+(n_I߉^ʻǫbȌ[nq 13ߏBb7C Ӂ|S綵<*/У%ڋDrܱo|RהulsUZ_fת@^uP6T)#:ςlama$Hl^z'1`XPҺ}*%]ibd9&e@՗}@v^HdnKn( +̖{]1;R ;e#ZT"?hpiK Bzޒf1zlRIP<΅R1bm],2;%E7THM>+aOέbw?R HGQK+6f[ev&ŧj|xR4X%kZ% Nhr  HzOޢ[WJk2V\^Jpsκ[GFH'3Yb}O. =דgM!.grWsG @d+Mw8|oA8a +6'GCg5ɇE-h-;^)(pdϔPY u_Te.#!S*0zo#,,~vï:9wՔsU CKWWP)PbE8ʊ w_{zr_ YY{X~ */? 9e!+s<>&.F6һL1jX:U*$ION{y/Yf?ֳb fRowgJ[9T ܹ,$~Z͠I3!MZ)%rKi&yNl!쟢#" ы? p{1(n?%#T3Bym#la ߼oÌW$e-meҡrlwũ ߏ`n9q#l#O#&&ELI +*&/x }vuL7 Z +ڡ>k$G-)1="Y_w: j˱LiYm! ;ʀ}bZFr'^;hͰYնg0hE6AL%eO%wAݞa?UBW24a:Qc᪜~yʦ/ dWm_Z!ÿlq* MlX[͔+l;):|UKeo3W # +)ln>fĆ3 _yL3̀yVii߇k4[p+Z~ɮNW +WB~l^Q%¸k=LzbBw -lƯ* +BD+R7[T*Pu2Gn.(+QO^K#6`.m@6?e÷ Yk7|RO;1KKCXo }Ic?bVx*r7k23{7}M ;=3˚P1YldHv^Jg1͘܇L>Lۡ=mz!b= ,;1) ,%=3|~XEq1o[9^iUSlwzXRkTNP'JeR@݌1p4@ٕK\Ƽ42i|S`D7n.\|"Pm4QX!:# 9Qqb.'$g/jj)?cNF=R%ȟ5TC"/A%Ԡ̟uVmvMI@V#Gxt%CG:T5ɻ5?I'Lwn|ͱ |!\d-CWnd l[ ujoT^6ݖDJ(?X`yt+`˃c8Be^bUvRs-ga>ru{?VK3(r[ܓ|%_#|F|=Iާi m߈0l108 1"+9L(h_UK4wFw#ˏqyZ)vԨ +"kSͲE~fy,pN<<6 eݽXYۻm-; ujp]ɥcRd94M8HjhpMq:)ޞ=3U޶ 5Oq}Ri'!.gEWOL::Le˾FMq.3J\%|G/)^yS +7%Tw#UUCs0}* ڇ(jWA,ӘTR r`]Crz5_VYA9?uayK$mZiin%44Q5Zq%!'Jj$;tр +a,ߛp,=Dշ{nk>Rg,*CcL57iRXZ#EoP ?ҶC_=~vǹ{*N6uW2'{R_irUR(5kx;$d#D^vS:2r[i<WΩ텇wƬw.n4]hlt9/ъx‘;vjjG)Df{׵'8yGWm~MSE"70]˝4Oڑ5|j/@@t'("2h8@$$j$pX]md%WO, 1{O?mShʌ#e3# ($NxX{OZlߢ@Ñ"G\t!nTӺ1~Z%I9zBu-r]f@&\Y˥%RMN:g@W2ݚ $cMSBԶ(~glqIeY8 +LԠ?2o$?9a s}DZ4qlse -X"Lk-?pr2i@$~Ó2Mʉii}ppʬdsƝX3K?P20l,$i|d%|_^pc˧jWSKS>񛎛P1$Nݎ/M,{oi{c6WK>112$6+ X;݉ӅQ8c{ anBzbݮVVJ>W1F$"ӘnD qo3nw9wQwkax_[y)SfVyGqz:{-|}Kŀ`}vػ}j}^~S{~kG%~:k-Ǡ%𑙂GmvEjs`^< RFߨ7:-i Zk/J恌\u9i$^;qRr凋Fp:V>-Y'q4ᐹu;iwrO]ɯR1#FQP:-kBQɘj``t¹Qhⓧ]H$QEp9ݡَr-L I'ar+tLhe\ٮQ=E9D@-2Fg X}F֌r^s˸hf\f$P٩EZ9pO- *7+~s>g[魱APnE97<,- %Yr[~e°Frcg2[{OPD9О,曹 ,ٕ{o$}߼lXrHf["tOĨWsDƦ8ܟx,ԛ\ 2r0ۊwDxlGŬy`*yYUyJz?h{3׫|p't}t~ S%? 8w>~lĭ~`/~~U~Jb~?KQ3Ū'iĢ Ђ?w;8kð:`r:UZLJJ.?873u't⡤ 읠8 ڂv>ks°`4>U>*J<χ?1H3 'C ,aIvsk'ޏp_hU%J ?R3'ģ%U x͏vk͖j6_TmI۬E3R'ˢ׎7Y [Hv B|j/_b$TaΖI>r43u8'ТTꎾ9f#-u¢CjU _T7IC>ԗZ3c%'ڡm#% niu`Gj/^к kS̴Ih>\>3Vc'ǖmH̗ЊXՃuҮi*^S$HѮ碟>:C3Kޝ +':Ғ1)Xtjwi|Ȱ^T5=SV,H?>V3Bs(Ț1V6IȋybtPyuz_v֯zwA{}6xBxvPŬ gcn +7N\VYgM`TfM~o1*:hgKxD:ppqR /Gx-5-Ӡ`_ol ts&+s0K2'AkO* +7UdAjD-Q&!Q B \ 3h(;l 0weX{!i)5$uۙ.mD&WdXQ6l44+\e8\SaOƞ*˞!}S|ILJ\ +h8񜴸x$<~PZ?wJQԔ5 FvS:r]P"6(F^]Se >:1*ٛ>LUh\W-[VLIkIHl t0,x Ԝwe\q$**&6(w$׮|~<NDYo@cuh"hA(w3$ϛvY?qz;*܁ˋ ͔o\/׸, %)gaNh{N*/P0v(= +0?ER.ocqE-輏'l$m'X +<۝|!b_7sD]&1b+r'"ؔ\ާ7-rܕbMxswq >"5OE"ϞGG2/#w5m_QwRrRq<$W`K(ABc>%%D 0oD`D :P˝nYE5e۹+F2Wͪy"9u/pQF$'ߕ>r3&=70N@9 +mUQ)!..U[_ +?KFJ4GĹÄY$ܐ''\]fG63IAv_mfax"C%k4BbT4TՂ"k<\{dq s7/d4V +{lhxZ]b[~=ifig 5Fb(ק9;O٧ViGGX_}n]wӸik6f:,p,@бkbmuFR!s37:!?`CW֧&`':gUDtx4DLؠ²CKh#NLoosR +mRҦUa9B6c.oo18g JVnv[[mFGvzB+J02Nhļɍr/ 䜲Cy5(raDlGx~H?I.ȩ GH;A!A0sARxJ8*ۛD[Ѯ~b +W.Q{!n(1_9W'IlCw'Cp^~u% ^pV& > Mфy6_E%.xA01݇"QC͈ZK+gD2sϑKtOt z nf9 ?Md$n|c-G\zx 1~F;ĚBtB":E&'>"3$vAPrfm#t&pJN866n^yOOMZ,z~ Py$;l*|\7󱇭 ؒvߪUDl?ᐺ,"uy )mܞhqS:wdREZk4cS>nW=kvKPmGYpfo&]*YV.#^LCxTrz )s=\||V+w]mԇZc&r~2fAcS_ he)>t*qQt`1x w֏+I۾:hYK *9I|8Yk^nT| uڿkVܥCA$r*S$s,ౝ+z`;mP걢dbP% @]6 +UUu +nIR:^ar]J& :þҝm)%қFҚp} 2e d';(MdFڶk ]*HДPPCjߙ m> wE2j샽/;Έ?* ,oqS6wniZMfOdI&~Ej*tcHV=֗7<Lk2XF]E=m,6rU蹲P/WSEFlPyzS8Q:/~`~kLS 0RߪnFS+d@wQlf6Vkd`j⻪5)0T5 8+F9yᲹl( ܺ),,&L@!A~VSHIe"3o%4*%yV "_;Sa8iqk¦&m&*F^XbBϓ.$%_d nC^36^$LI|yIB 3Uu ê+z;EQ^}NW%'%3mD35+۞AFI#7'_1m 1˚wEkG eZaV7Uͅf5‚"m/)euw"FYwI׵Xq [8f2n88EOfQk:sXpcuʒ@}5u ?TUf݅]m[-S]Лc<"_.×z;,^Aɝwp36 +i‡WRj|pI%(E:"L{+:eȾgdOژ9ؔgF:fՓ ԙdb:JJ[pdR"QfQPgeGE}bOSZ p0Jd9 ܽIrpGm]$h$0Åzm㍝|Si aYvq%ҞY[iS= z D>x̢L# dsV6S'ɷb]T%/y%7[]X%iLjj#]W=f&0]h=0yx\P ؋ǯ]uG_i?M^.ZRbG*I;Ҙh.}h!BQ0bPEYBtZi+m]xR)^FПf:s.C?!%8^k gbztٱh]3YQǟbFc:y'.!ܖYi3s{Wrp?sBe t`Y|u]NZLvB@w6}x*@z1y{l <1}8${ +uxo﷑yӚRPg΂MyiniƊc]*,X;߉aMAI6:)phgz<όۂx葿mݴbʯeW9.L2A\58)ݛ?htz2uzv{'1wR{Qx|Mlx|X4y}PCzZ}-ez~ z~-qԃ s-t;£9u(iv1}wjwW5xByvl,y6ycpm9+qr󊦡s2t|uivVKw߅B!x,[yiyweoSRp3q𒩠sōt{wu,lhv2Unw&TAzw+xXxZԳntQ gXSТ(LRp*৥U +!!$$wߛ{C I0B{M ED[T~{QfiŌ=~\C¤P/P%`vָ)Y /Y4T?5hMsqjq+:m'E)̐/kby@}{DR39놑>cvvSDžƖM t?65)`o&Z]d?qF4۳}lA(h|}]f;+ʹ @갋.+'n&oA\!R\;u"Q<7!ia2Sp>&ΠڴA2NPKGU;PomBp: oBv:khC8|Zp@_+nPy_@iiyi1&o)y -wSuP$-_gK?fBX/zQ է+v [+Џ3(-]tY!(y e辬9h ro/r%shxu/cP}O:kՏ@9`Ys3Crz 'Xk޸?i1GF)eDK;hز_6AЧ;rl%ۙ:$QFVwp04sf8) w|1-R͓ykx ELуCSL]*R)p̜:Rیh_<.9]QqAJKAmao:Bv/20%!;9)L͓ka{&(}{9lI:RV*҅VG܁`@*a/&]-ad{K͔5-O oۄs kgNO^˟J5YQhl:/=y%qNXD2D^Z@:3sz0ow=+,b{/. R0q 3NyG.:d*K%4U=أ9Wu"gb{3Umg5 g}xFO]RqޗŲfv5gW]eWC;SpFbHy flO0: W띀q\~#?RҤwPw@TzښY0ldӮ㣖e: s/:!g1!w<<>`Eսºshsj-AgAZB#J>ݍmȨtwXTa))A? +wGPXkm +_BIѨ+ ڣ㞠t7tj}7Deߣo]3%j%Hn- E/GXr#3,+b=?^'NC%}Uss6p)n2|0%wiC^0mo#703:|ܞ+¤ sW +TmJocz}a Ҽ؈ WǖSKl$t_@*CTV z7vdr]&4DiOQi lp;#K}&B׉/4"a$+08Mh~TRiu+a2&dg}y j`D/%@3J`<[rO@ojƛiCA F-y\H4tj Ys~T:eK3 +xJкDg&vhh\ +6+5DľGѺHs͉}dU3 ͫV>2  + ]-jxP$#LmNܫyZ44CDcXj66DgmZHSd}Wlɾ[oy@nę&)Ι;-~(.xrZG`znr YoB)`cТzٶmixC,WSeH)5ڗ>B>dS#YZ퐉FyQ R!,-j"~jo**e; +I`h]<nVD¤Hb,q(Ȕ4ZcGP=sQpv/R0!pxe_l&!?F%GNw33䊘""=XC7Βq/߉)˗M9h;F奢.qY8$I-BD/ĵ#L(>f+oZˎL;T +O'{XzE|H>PcU)'ItJ&}>wͧ3dQ%{z ;-'L5CXj>^!#ͪIWhMsfZC&9 +3WʏeL)!acE2'(h*A)?+f7GHtcfի-(U+bІ]Qx[Beb; \h3J0 DMM;Q[9Ԙ8L*fd@kR9rLDg5ٍBuJCa&NOlٯAM :m!vİ̞;('y *1\_M +UH1("D H٠hdC fܛABf"S"Y EQ˧ҴFTɍ +Ϧmߔq;K/G(:'ܷb^# jQtkA}R*SY<~522]t%/pN+t֬ Nh*{]YqxJ<+KKG/4x1%vJ1aKtׄ\&I0GIW)O1)}+% rD"Pc@?CNM_^(6ڔLAʯȿo>-}r7"w:()2I1_vZ4^u)j'6kV6V, Vb# ?/;̱;o5g:nĬ7},4mG6_n) yҰ_2l(󊞎hs`L]x7z.թQһޜ첱nEͣc:6ԥ4ݨ`j(a֍4kɪRM]Լe+-[Zb_Hq6Zن:2+}Ec]ZH&:LQОkdèi_V.36$o^ϰQ-E4<7*,+}3a$}r RHjgKV\zRffmÉl@$]{%qf,h`=Zo:5snX5~ ą(J||5v hGa};WO{p S*8"7xD"U+7euIR +wejwtpO1Yt37z h3HjYh+0`ҕ#ݶb?&ZQ~ )TKty ɘ1r)G^T>Q0ON\PP+8\6zQ-*Ze^Pxe +dP&ub~JY!Y/!]1h>@jVuF'lqV螩m1:UH≢8QEvWb\#ˡyNſ'\u/H$wuψ +MxoI&v}!&yh嫎\0txcL0UA6,*ilȔntmTiy+n^֯pLTqIG#s>jt2١2v&&Xw+Ix +̙+{Sޏ;~sRsi +t^yuSvHw>-xx2!y&.z_| 7~irzhz^{S[{H|=u|2}|&~NE hw GrW?gÀc]{RπHR=l2h=&j BP!qƴ%rgk݆*]ŅRztG77=_285&w3%ח :.q=Z\f߯ \wQ=7G= ׉2z&ff P!9pKfU>\r"QG,<ş:1՛׌t&W-  Œ yhYp,Leέ[_Q' FϢSu<{L1C`&A/; 5Èo}beHq[\P}FkǗQ<*#1g& ; un4dʬZnPM@FOQ;❰12D&Y <Ո6nk̫0d\Z;OE̠b;R1䛨%ꖞr TS_Ahnn^xo{TYcpJWq@WsP6OZt+v[ >?wy9|@%hz=tq^\uTI6uJHv@Niw6N;x+Yy j{$\|h=1~LW4h9zd^%szTzJ*{Z@S׀.IxB@%y6;+Ĥ7  +Z5x+!KVӘЍ ++B eq~[8RtH^ 6>ͧȚ5R*+p!$ +ɑK<ł0e9P[}Q-H.>R254$+a_!8F +feh`Nrj3.s%l5Vt#n#bu oJuqzvs[gzwtTaxv@vyww*yxfzyoѾotK*puH|r/v@sPw0thx"xuzyfPvyS_wz?xd{* x|fy|`m~o#~"p~8q~_Is~wt6~ewfI)wNgxE|k݇%mêo +gpqlqńvPsjd:tRQuu>Dv}))vgẃ~j +OlJrmo^pƋQu!r$c9svPt=u(v'w8i^kdminsx(tOgu@jgyiikȒl 8ԉp"GV_lRȑ!R1>f13fc3B}]ښX߯6ax4Ḫձ쵺9U[sKmyS GP mWlDk#XLꎇ }qK/cH+Mg53Y;+' 2rcz(NwV@87S߾kRn4M5> 6d\t"gE7scLìyCQte;Cop1\mFM9ky+@$z FJ(lSʐߑ44l1/W1cVģz&yOqu]&ЉO(aKv\qX!0͡#,WٖM + r]S~³Km#jc=Bf3>"d',EodbU})XO%yڪ!J@U~e ѼvӋ@qnM!{ n3۲c iwuCcS:dZ7;Kw%7@ks5N'A̝ra{;N93&`qhJۭSיά׺#420$j9CJ9gVK0+H`&~=s* Da%ZCC B l#n#Wϑ+Kd0y WĠFy怙V\0FjLMa o ".3y;XJēj3?$&LmB[Bzth1Cӑ|MƸkXm4LP3Gq!pbM-ܾtw$!2fFz$(b_n-zz1脝[Xdaz=YnQyKU?؎Z'c+U܋]ʅ3QC~"tN~R184֭5Bک+HR.MJ0Q ,; +=PmhbaOZG|mXs̩^4 >?@Uzڽ'a8,Y oۃ<)P [i H60?[^&=NBG 'i]a# +@LA5&i6u3QsN=g6P`f+]i@'RG@=`eU~Qa!:ǶWK_5PK)P>-hΎ7Tհ\W9'i6["%ӡvȘY) +IN0aI !5t9#$1$g]0d 8.{t7MO "nmaa1%T*CJPyj^^ln+T,@ :b̴S6,Ik0JA\,H!̭\R(`H:.pqIx5ͯkR|=m;WRq|)Yf+1~M"%gz6[*eF_gN>OEm{Qy%yI)/O"mr#yBAԐJ#ӖQz9Gz!dA[~2di"nw^XO(Y /"%gbJ'GXmlz@EIDz^9sޯ9̫166j?ǫ֢e,]wrUX>>%{|K@); 4jw@QOZO'8ey`2:<@}]bQ_fy֓hе>"!R Ycݚn0R}˶5\?fU$ 0FuR(` y>| \c]m4ӫ {RiB:okd"*> ~QuIP.|u7 d%T_bB=ֻI<~E=cn~ѣ#ߪ'l͞5u S[ 7\pBEbQL^:l +RV&yrQ՟2G4&sNwԶ3+Ji}/jZx,"d{~yGRX;w)G="q{,xں?U>)!崸tU3Dz.#>8DÁεǰ`G  5T<8 5tvnk0'#O<2PwndO(aY2~ ,⫈o0"fwqrMnHDKC BP.U%XdBfЁ0):}`8M{ğE[KHC沱K_Õ0A#^Z}G>lK0zAK؁7{"LA[ +CA# -nrf,lp%ǜ(l0yL@-yDS~-~e +S4c^z +]5Y&p^G6 +tk +΋@ qѶN6I`a?bꢗ `Pl{i0>#xz)FXہvgڮPxKkn Y^㫳3\~qUv*mI{RXj;,&9N\FD Dwx#YvZ򚹠NۙW)+(YCv:+4CYM,ٸrNF"I~y?)LZiI|`N]{ɿ;fHw2IİeL{Kx`*Q }7c}*72`Sٔ# (%,FS>?cu0 !.VvjnEe6f_^uUM~j~@∋j&}TX/jkB_yzn/a2=ȁ#v u({X/CߘGs ;9!猬/~u읪O8YeIqKLoRQӴfKK.ADcgT4X}nzQ+i=˸BXK}6T {e) rtv}I o.-p`-\񪰸YxM78WmM' :{*p^ʆ8_׾@u+dIWЧ-CRy:((f{3/ X']5ex%] +~%^ At "X]-ig48|GҴ 3" _pd=DSFEK T)[d/JsI.].K.,T *VWgŭu<9>GIy1iAH"M Pq n_}^1E:c:hڶ~*}kK2g%d_o: ~_/l9PKo:~Ty(mmaWHЫͳ/stMDxI,LQ5 SMzt)$"`rSh +K qr#D O[5}yH4&{zEk&Rkd)Y%V2@q3(9w1>h?h FFf &R#`T>e 7kv1ЊȬZ5mMӣЙC^(Vϗ~Z՞Iͼi:XjXG|(=EY6{T 5aȭ@<_P56{>HZV)r}{)owYWc\i#m5Zݑ4ӉUau +XQU<]-}!e \NfQ,u,.|O|f~\Z? έA }sy%*_I)ο`ߞ6_ҷ;I\la Ch)Ha{~ T' 3zIgKw{5czֺUw: bĀvX~fծrCi ˳?qLr(|# +/[cW}BwsZk>KcYpڸ?fr+"4'90Q&OVt\q]s_x>[2Tލ (Z_kN4 +LEF)"bv׸ۊ<.|ԲBT?X  hLcԀ ci.W$-lBB5 +_ƭ$SYo^,^rhT (ʥ )4gɒ?s"z`Gyو=\ϣ_RHO Oq|<  +6J rU>{E10Ipe6V DOy! + +ldRp*<s-qwTGJ*_Y$,';b,^vO'χjtZJԡ' c;l?o7t=-~Ԯui87uԕX.W涐h'y` Syn?wdT [{/\߻یל,yĐBs S-\r77dho߁Ua[ancOIw]}Yf#Z  ZBLmDCᖧnnGrν79 +Ep/dtu]9 _]l .}oz"{D| {~׋lajͯ{a{W%|%M,|C$j}9-}.VM~S"  ڒfJj*H`l`VqLŁvB x8ǝ8.+V"΂ƃ6 +/1(i2_VJLE0Bc8~u-"ٔ' +{ jh_`-RUKJB=8>ˉ-ؘ܉p"ۖ1vވ + <kсhcH^ۨU>K~Ab7--:K"ɕ  +.d!g뫮^Y}TO"KA]“t7]-q" ^ g|g[]٧Z9TLěJlA 8S7g-> g"W Ŏ .fê&]cSTJ]@Ŝȝ57/R-"q蔻H D=F7a_iGW¸RjN56l?D9m;EQo1qz'@sEwtbxvјz~a-oGWpANqUDr;3 +s1KuY'vxLϞyX |`ܹu)WQuMױvpDuwG;x<1 yG'zj柤{/;}ϕ![`oN{VM{QMY{D9x|":쨖|1}`'U~Z~9nK3`MVBMCICm:1c'<72lؚ3~_efVLZLcCJ:/1`Ӆ4'Sb[0(qtU!ɀ_gVL@Cyɉ:Y;1D'zQlqJ x_uU/LrڏC=#:(0l1#]'ό&ˆA0^UgxL&B@9s0/'uÎ˖H[[^YTUXKjBç9£Ζ0Ӡ}'y +5,~^BTѮŠKߞBl9I0'i6f *!^ȁ ne og +pirl(s7n;sGt\pBa|ur0O-vt<wu&xv ywxƹk^nmpx2nq;psQ+qxtrru`ctw+NHgŠ;i؉Ck\/m^no ]~pKr<9vsI%Jsuւtd6wfxhҐCjP}l{mn8W\oފK%q\8rN%rUWu'3cA.e#g蘟 iՖL|klm}[o.Jp8q$r1tb}d壉glif{jklҗ[nIp^85qJ +$q@t2ua߯媧d@fx\hozjX)jl2ZjmSI|o'7pN$qDsfaDceWgziͧj)kYmkIn7p;$}psN/`Jc0EeyO:gnoyii[ik8Y^l@Hn7fo՜u$ep&+sAt1dK#uf2ui`vk}wAmm wo[xqJ <ԉ]*DmW-9:E"%f}` rXJVwmzm,j[Q^KٍHG(َE4kXׁgJ./ w$턔@OxP +y9VlxZk|][$HC?nW3^#4#`'-q%;Q/خf̛`ƭrw O'erϩutKeJ4@x!@/I_!; y@8,Z=lKzQ{T/!G=Jl-x A 3F6rpJǚ;jhi-+ +4OyUVX=oRNwPFV<m1*GP<,yyfC%T/QyM&_Y88$ 8Rt8 +l/E@Cૺx+6]0Bl)q +kd "Ym?7hk$"P!(0 ,V ohJH}nJޣDY"?ޔU=a-\Zq`8g9f\ +Y|7j) +[ݤ^UtsNo׬!(rZ7C5y'gϫA;?JݎBņȐzc*K?]3'7(;\ޮ4*|KNsB!+| pF`OWp"+&ނhĤ=- {/5&2=(yA+=?9SJ} t*DlBU(ѵv"9s>y1zȭV!eQ6_T~7FD]Cw[k>D3 |LEH-'P8YOz2j = ^ u)>QJ$$~=Q Dp7!aa΄E?Z6n;u95~VT^>) +x\q})Q*flfwD,*'}=?BuppQF~)GOFWW/h4^֪͡kUj\uEʌmd_? +ʞouQ) E) Rp!%~^݀mlD+sbW4M +I"Tq`h孁;2-"1̄G ?XxAs~=pQN5F +T-Qjau!MPNi.? B+SO a_BL~nhw%G~y]wJB`E} oe7c[_j$'(߇ |6lTB򴽉6AX+aO.-P5醲=DMHPo5r1O+qkխfIRzjY).A[6FW|{./]Lm lcŻې/13p9紸9.Ï4F>Kع[Gi9—5XkhvY_݃ͩfs?% ixy@v '}̓7ŴG>yC_A^9zM4̠ug(.'z Oӡ }LՔFFO3^3iIfW +ENֆ\$,K*䙊,rBV.ܠeXyIiw[8Z'Uqhc%(>5$ܑj2\gvi,8ɂԂ;^ q8 +N(7O`AlYʿ3WGvRF wy&]=B)+D_7:zrzC%?*!SfS[x?j(S:PKѭt*tV{>9}ޣMJh 5ڙ" +)dfe$)eǵ5ߜJ \iC &)֬ Gb^QQCBe@|%xD2,Z*첄ɳMI}{Hϳ^k +:%(ʩ$?'펠dIW;Fs/K->#n\J5d["tY`L-UӮx["!.vψoKh++쭼 'VxhU]'V'7 |IJl!ԍ. ~;pcn +kT!8+G6|| {H+ƌ+h(4f[  Gg`W': h?|&b(~Rݘ!|_nCRעGL$ EJqtʽL:#sZD,QREIpY͊ŴX.ϰ),vUO_Q ǁ, &˵ +0kěY +0/J}+^,"8xd@1;t$6c-IC S~1L +%d57SE;g65N|v#e!!YH/(~*!)h#j |xT"JJӆ)0nGya OY9^`%*$'LTgw@!!a=>>j>mPbػnX!mSY%#C!ﵼ='4Ut|KaO+aWc%^^[^=3lXqv[^dVo{P fܮ=2spӏ7Bl{B +:ط3&N_=@ 9ˑlW>` =Fx8*>zL[`㛻ͱ%(U;hn頑̯ϛ'@5[\#/N^>-a#J-P +mW +ͲXY}^%=<\7yE0jw\XzZU͈޻g7{BmTtnj U5'_%_hI*OWVωsCU%oT_`-Id$,$5~u>UVjKDj2*u}? +MTC.aB.3j:@c~h$:䧒.u^H^*GAf5\џ] U-Lpt]TцPcY@V%/S%1z$f!h)ȥ,g$:b,6Ь5ex]>9R 'I*krG]ȴP$菜)LZ͈|s-hxVQWtTӧ'1uܭ}[3,n YYшXfU| qȌ5sg;\_Q=oqEI:GW-qU& _` "x{8pfj["PE֗9Ӗ-۔7ރڐ肇nMvz`'pCQe +D[;PCKE.x9Uu,ڄx|njozycp,%eregZiOel&DnX7ɑpY*r1fs u{Dy|io=ikdzC +9\ݔ.ޓ#܌iB  fhS_dU+LnȜB͒9qn.r9#ŏ` '2 +)eS}c\eRhHj&?0lB5Wnf*bphrC\s{w&}#di[XkR'm[H$n>ߠ;p5lr\*t6uw/z~Ud &oZqPQrHs>u 4ݜ"vX*uwFxKz:x} dcjuZIvQ swGx>"y4zl*Op{XOc|M=}]9<W;b| Yh|PV}G0z}=Ŝ}4O~*,]VCxGCbYpPf)Fʞ-=rH4v* v[H, aqXkO#FqÆ=*3ܘ0])𕮆X_oّ!؋pG`ٍgX)ȌO@ь2F|<ޚ93zn)͔#X f (`n!>WaNɟvEBt<3a͎)GOD4ۊr 5W:P_z.W1lN`tEYsרNx 6 x-<|y#z| G}3t&XQ{xP{GX|1>"|5ᣳ}A-&O}#ʝJ~r}<Xi`#5Z-W#ԜE(뙑eWق@4+X(4pOFܨ>.Fn5]-m#ݛcA8hdWծIO: F_=l5l,蝴R#ܚZ2 產9܆WpGN4?FSS=5<;,Ɯ퍐#Йƍ8DՋ <)WŖNvpF$>=˓@5v,A#Ù~P8LKVANDךEޥ=^.4,{#YTO +osP>j _kbӝmSewnhJ} p#jl{qm[|roZItAq~7u\si#ut Ixufihkjmlo]{n&qkForZsqStKIru6sw"t_w ewmxd's@ftEhuNEjv\zFl[wXj'n#xNYoy4HGqmz 6Arz"?s{ vk{a|adj|vf|h}1y +j}~il}Xn~ Gp4~D5q~i!q~U u~P`~Dbe,sg^wiyhkTWmnFo&59pz+!p tγ^}aR ֬:ڕPrXU6_Q8Z}^XpjCNd1dD @Hx*55{he5~,tUs;GyQF.9[YTʼn$fW`60|Di]FJ폌t;g\Ot*hx]/G$m#iZS;ڊ{s7K.>rv:܋¿zv ց h/1!y[D2j䛋 ~P4W?_Ia%lM wO ]mk~絬*Q5K_9]]V0c3KxVHK-/DP>H\/$iv",w ڬ(v ܳ76Ye4T" c.Ɂ\ 3[5]|ޢA +fL2`=t"C_P(2NW>K$ +Iy(¼=鏰5#Eli+qe#3^d]$ h7F2:c/۸# KBOq vJb;\VI; :O̤Ӥ`_ +Atp5X ]}=E-c&%k ~(N[঱) 4⧆x W@F6ȩٰuf#O~ W+ y_#Tw#B>(fbK%,rИ5yS02xbymbE##@ 4>-4zڅhx{]8)9lۜ{dX+$PV?V¸eexoz2u4y/o;I;,QjUO#?w1>5>S{)4\s(nfY' \[gv*!Ag6f˾NsN|r0q4Jby@Y}LN2M2G2+K7W <$?ъ0Gy+)~Ia/G<(z@K8;HҽYLIM )aQD*W3[Q'g4fp;&]It:\/&S1NbXsɣBߓ#A_3qnKnBp4E¦WعK%8\8{BOy$X1K!Cܦb b9!]?z_h8O.ȣmzL{8i H jE^ %g{2ekUsjOW W,X\5h[83] &ӧ~j"GmmnWi{^U_`LfF_~!q%>ߘu  "A6pGK1?noAV7nb֭J2wlk11`O'(S7JiO.v07U筂L,biHb ?D307!iX 4{/#R& soUAaW ^M;ēȋhmSNH>5VzgK'6J~.O]PCKCDkU-e' +TM3U$o;* -(oAnUqpsz?n 46ڝD%.C kXP$,P~ I)ldIN?Apc\\1k?6JCѩҩ9i)Ih_M͒'ږ6syuV*s_WaOUcJlt*! GcP,Iyi&Rae@(v\ RxBڕW/!GU,OdرAaV\ǨT0n|z E:G-X23nEOBQ`EH2ߊ8bc:t-= 0X(x6Ctca$CvnqOIl lO) DZ]%nbJx\>^O ~Z lV+Bܡ|߫8z~ܵ\_jՎxVGR?>4ցa?xN }g wFue>E'qʮvl"h(6xDQJ8PUd +/T$; +E1TIYA:H9>`'rd'G #0k6H,AE7e %a1% J"u|L8>b>_a~is[|3J e_*$6Rv{ݎ +|.'8= Ѹ)Î̥x{*\9RkD.25t{ʍoum xX%+0_NjEG7Ům}*V`JÖ2,fMsқE_g'ڷnejiRP GZ)E[Lёh_i"jeڿgm-&rG?j-< CNIUq-*lβEmS P""ϛMήӈhG#Gx\{"IaԤg@ry  #]3Ý HSGrDDD7]85/bEF"]PuI*2,[VAGBx͖;h/TZ><a(XdLg,hC~DW[޽j}2埶holpQITVE)\`MBU ^r"9vux: ɋ4W.Q26EpOhb۝{UȢ68dC]X=_v5oXk)aYAvKU`/IS9}Z=U4=h(݁{s07dZkNhm"}&\I&˭ !} v0V|bO&8>A 9Ѵ71iK]"]_@3W"CV}(s@pJvJc>a54.QS2ǜ(1#ZoZe]dWP_ֿIe^R-L!VgFz'j+~f]@fgy$#hw̦<{=IնS 9޷Ȯr>.~i-14%Q,{9&mP5&SS-\t94! l HˎrBSfӋV#aSL@Wb.{Qi\B;ыudqw0qecje* #3LMV* D4UA@e#CH `2_򒼑e(T-XQz=Qi-ZkUruz[-Bv )-|-=]󨌖d?PM;+{(h +ؓw8+x*ր!4Eǣ(ܨgè (1[ZBU/Bwߥ/ +h[t]<\,S +;H%JS ' aRWIzBr2ɑSads|b%P&Rdރ |NX9,DaB㬒;܆rKaH(_/DˆlYDzEFs<?;%-:m+ Kk)~xsnRB<Ÿry`^ye!d$_.\ +B>ق)p]4\RYNYenvV>2H5;qз=S$@ Ju"0@Gs j/fXfV!옫*մ /€,+ +]?TsdQ8i9CЦ1xWvWuZLOoeb0;\ hrC.LJM_OՌ5 NY@8oQ9Y7g:m]Řc pcMcu\Oi +h)%L۩Z<ËBMg˚pͣ1ZFx~|I=[BOIOPԧUAq6ڼEyio"Ebg7h04FnQ1b<IT?8=DCUr7? +sv2BԬ%F`w s0/Bw\CM0A& HԆ[p70NEӜ[" [2,2xKȈv@]uCE޷TzȓtST8{C2O%.x{)w95@j 6Pc@ N7a.% ֍.+:>XRP:UH(?˕7O.ȑo%[3ύ^D`S*7_&JapBc:%f1hu)j\m+;o: "Lr 㒐wPE}ReJfBeh9j1l( +npr Uu*Zy~R!jJK1l9BCm9UoB1[[p(trȜt7ěu 䗑xDÏ| QopIکqAr9ss1+u1(؝vxϛuwty 3{U<~WQnvIv:vAh]w99{x1ys(ɜzd{f2|} ~=} Q8{I:{A-.|g9 +W|0q}(›~4~s 3ڋxЀPH@'8X<0ϝy( s( -)PJH@*8a0( Ӕ, jl! UP1H^@{/8~fB0 (ъ  _FȀ/OťϐH &@=Us8N0cʎ|(~ L S`ËK Ï"|ЈvUPOdTGĢ[@ +8'ړX0E!(jk , pd:jkeZڣg^iCaLjdculg3eneiUplDqn3rq 5s0rw wtbdxdBfǒf]ihhk`tjemydlUo~Tn4qiCos52qDtqru qv.*rx +YrxwzRbu]Sdv:fwyhwkbjx]lyMnz\>Fp%{ -q]{-qR{w |ա3`~ b~1e~]xUg6~jJiJ~\kQ~M9m>=n4-fp3Dp)%u-cgfIYhQK WS`e)ꩈ X, (C-(8B {so !܈ WxĞj}V=u=p|?~JuՄ9ҊMnUMI)8eռ`y~~hcԏ.6vI6#e6W|]Agp-U&SMh[LӮ vuUnE![sK]iR:tP+gp6U~U/~(Cg=yhжsP"%/V%5}◄*q0Rœw0g3ƆoLD>>C|F^ 6oO WW.!$Ր OԯjSD-o!Z\))2ege.˟ 8PB$Ũh$v! + +fQojvlK|7%܃(.CDZaM\)>-́˧!ct (Z1n{sBsj*!-QU2!w\h?||s:#^.#LE)!56Fy.[%O:"m].^(-#9UdiҰxiGMF*]As nks!Yv-XsN8MU-ɉF-@k*uOէdB٬3VxeuP<4/۸X'ߘ&@\ٵm'FUpW?<]U4fˏ"VYղAkJ)n +K{vʯl1krȴDnʚS}n8)re]Նl*-QOdW*b@8~(M;H?e>amаcHlBy>ӡ/ʰ%iK:B/ߒI +};p"[՟z.Mfہ1vX˅\^0S}oe4FVZ~gZxe FaL ˮWܯMZ?Z[Xj~ـß++V!+*8X3 +syxhYSYhO>yi*6D `R}䪪p3=]rM>\ ^9#&ăOennfj)Ĩ4_Gg._'HBhwj7zЉ5T>)̵;*lSTmVlؚw +Ԟ64%O5:N '7Mu^.V~yG޵wBuh`4K%?#I>/%O +f c~՟%xoGP*/91KOGcjGc噉X0oNE +>X Jb'(%7^Rg#=X T@NKdAב!i0j-;2nLtO/o]eJl~?'{W x<}G:Eo-<e;Ѽ$Ϳ2H% W!'E~R'~cK2Lf nZlB''x j3i%y15Dȷ"@ 'c8~<F DWxwŇ0C\Tkq ̸ lbLst'FL<$&ec爗I՘=r_c>Cl)1^шnjK/׶PqB?]#-XkFϫ[ЃjϨ9Ruf";!8(ae E;˲Н]BSȨє(C HP +iw1#BmÌxhp;_dRJ I߰!_cΒ#Ղ*MWw[q#`~]\zii&Nw-;e-=aufKP;j WXuXs/zjՉ‹\57&Sj̵4 h3VRf(.wJgܺ5-\S ‚zt.1m͝_n|WX0R:rV4&DYovA^iTm &I5&`0dd(7FؔaXv[sG&?N}kb*7\}O愫V% þ>еK%J>=.w56]-8 +bsl u _7L^c"^hϥQ&RP=FeYs B1*Hյ!,^Xֈ6gv>hEs׷m}NWp:,g~a +gRQi"hū@>"iVV!dKAd2)Y酼8ʟ"/CgGdrǝ--D8cK(>5!LqU +r*d$("eu1Lj9YlhW ߣRUΗ4K !6=%5MQ&3 +s&$&H(QEf-1n%/ش‡i BnKL@h&>W&Ap[Z72(MIIҩl7l'i)3KhAwt-p]t"r"k;)%-[[_px޳:iqDG_LÎ̭q)?5u:gm/H "ϊU + +[Rb'3 )m{7Lm(l,!;k-X5;o)0w#+fk[ԑ<c6[^ h\@6Lzy: VZZQ0!V7߯-i7yOܓ|]lrcmY@x:I{sT3Uy9bWͱ\ȃ :|@Q*x%MnU͜ D ԕ{S˜8QU^{v[>o!za^5<zsr +/i DfhsSNF|QD1_-&AʘppL/lh2t3fQ{ 6 + RxW9)?§Xk%'_nXHG)_3p<Z i1TU<-t9K<TWRA2E  =[JW#ʼnPZw̗O{T[N: )8r.F!>2pĢS2-kBؖZ79=B)ZuRzt+Ey/Gب\rLiqZ-0  o^njCiFy=>2ҹ.Cv '[jxKuJ zTEz\qP]ټv|}%vOiG{l2FEYs7\"eJmA:}K:Al8ڲ65#feBZZޙ DNC@@ăLY+k'kwڬƮ)۲tl6Y{YSuY9[;ܤN iAEOX}]8E2ua<&"v'ĹIpL) +LWҞ3]LUiyZ _|pi#5M>AV@V! + s)lx +"hqblyR%I@SsbO(PIe+{HĊ&ӽ _[OBTF]|}ہEҷ-W 7O ^b:ޝ\TR]SJtæ|9د"cl 1V45.^z^t5{Z\6]͂pEZ[<-V;s{4%Ikp^?]ir{b pS/j8(@+Ԁ` Cr-L>Uduea;-(KOsaU3HEې#ce7gc?ݛ@fXO+ExF3ׯD+jT%nOgkGW%[XWw$g8g=I2N''$JxXI²;co򚑄2r%C[(f18dav1O f!}y︆d`@Xnd.# 9h-e12IaX\a :D&n= ~!mo/p¬鏆=^*KA׋oLdI?$%KncTM?UK<]VT=Nˆ^Ki+y*Q.` @,C7zuBz U8@îRmF$+~P=Vhʍ*zP/UQ/mx/N2Iyj>7K.g:R 0*g\rMY~il_MxĪSrPSwz6c9b Q6@['g(WZ8DmkIz8^":y@N> \ڛPay~+(a]3DŽ 9ݞ +nqwSwVfj92DT1DvPF k8b~;d]~>n.!NyN7NXəC+T8NIQS`Y0?4 x<'Z7̃g!mDmm6ߑ Q쬣?h:il2vNR? wϢEQYN,Vo"~rH-ķzte>P7ϘioΊdXYq[p0VkWUtڰ &K_$k8d0O#VneYH36`e. )2ZNf2LS~]@Ld*Jq7wE1-S &0)xnZ{DeYJ], A-bt?H4/s+5iCD9ڴ$"!Ղ@UDm#r5VY5?bkwp\|i_91:eM4m~2@WꞁlZ틐Vr+S#Z-^[s1;QثemYeֆ$9cքZ˺eM= ""Jy\@ +.lsMY#q3'dy)ZmŴ-IF^hFgmwp97ĤՌ^U,_{ܳ[ǯyTM'Ӗá5<\abcP%:9;ӉK}*WP­3`Ŝ(jJ:vc3%ޫ$(DJi}f~s4G1x"n<rz<"^Ֆux371|;qˁZ +8W8SX.yކ>MXƠjD!E8];SZ]O!ﲶ+'+{_"6@ cpZDN.᧩X3Agis$ 7 U +6ޢ*$EtQpj\ bnIH_xBPe4K˜\FTQ +FעkRrhiq< +CӰ:5տ5<)J)79[ |#{N9X2O=xp?AوQc_;|0,QPm Yůh{CM6gk uZk9>gjc:cY[.[|Uۊ9'a%9IOeUN97%|\-$_[׏Չx"e1/\gUjneji˜n`U[ %b%?dw}Zs,pvH[xr|S%PE9'#.xjy[/jm=jݿ!i<4]lmuS"l% :^hh^ԥj9ض3t"w݉e dzv~6CD],x36H!&V>;[hdtٻH{q d|Y,> c9xD$[B\%xLGԂwYlAMk2 `jP_4 TG2¡p[st?pÑ,4<qqr1g.56W[yJ忢)[HE|ou|4.X|$^s6lE2C#v/^X I/ӧ yD"Am |y̨,̬MHkU]{i%鉪Uo*c`YO.ӊ$&1P/* _l4 +qڞx 03&<@öAoްRӉ p-bѿ*pq&s[n)kŻ뚒ӊ50NC q,1˧ʯEϴ3T֒=Eʳ +_s] ʞDCheG)I oT?NbEܜf+'}#hX<'{NfHs$*'Ofb:JCi+ά֯cXgd2_ +y/\"çs T=u^an`. ґk# ,hs,׭c/K_jsH;s]d72߰Eΰήm{KL41#_myZHTm v3n8r4aᗰ3HeG[v;#6_֔>!IFQG '|6,܍7Xo`+.8aycM}M?E$D%Ւ۞M_M=.ZT@Q(KC[Kk%%ɪos<˲Khhp+PlJn i;YӎLucuj8R%lWf&EUC%X[9ᚲ~$~uۖ0Tq,D]S䀡m{W?Dn:V,QW +N*p}5y HQD lElY  ɳWd2DPpQڏB=ֽjښ‰@(={zW7?rv﬷@c />QhxּĽqqѻ?V*w}Pm0ЀJ:# J|)|)ǿ*RKDžQYk(PԱuA=- sIfXX@x?X<[Kz 'ᖔr"^lQVFJtJĹHqyB+h PE+(@tjp['y `-J9:ޥv]DWY94AK+EC>;z\5G?Ko 9 n-,@շ5^"0u;^=I'aEI挪(Wζ@_s͟a8+ A e5mu݋%a3mN&Rjoس?ϑޭg5hRRXL@,L u`~p),?CSI[O܃|_HKES<5JE)q@Gŀ!/S oz.A9"*Za[)h_1pl@`ڞlHR7x!l~敟 `sYC`OItny)ՎQԦd +AF~+Cc9/NtӯܲavUџ$MWM }ō1hmohF^*; q'-oܤcE[BZ[5)8!j RkIT}):Sה̨]\B`~] +4if$"׵aR?\]i1`qCC6g~zsə³2_D2ܪl~\ܟڀVCf?/f2]INTx9"Wsu.BuN"*Ţ}U4LN_ψU>Ѱ$%&]*_u7q28}Gjr442/%dt2m qS٦#;WC37Y((Z_qN՛oKc~V9iP0" +D729X.i' P# rCpRML޸;a7ʠ+-7c|\LY05|-lŭE0ERJ8:t;)adsNr j,܋KM3 g3l+\do9 c6 ]]7 rPݰ7sƺtl˛NYxnIFaxKX9|ޤpL.6"YƯ\fbl~#W.v ݠly%yrބöuW. SskhnsY'{[̅d6=Q20Ha `Y2}z-j:\Qw(LkK܎u3Q;OX-_Jȵs,ӢHy_al+I1\vX8Ɵ?3E xn>P0p_c4ET~OSؽxz!^߮nYn,9p^ƸiiEyS#Ui1FvHo6T_?SvSthfցS&+O(1;cQ.a";=JDPDcL&aH'lZ}GuyC cfBׯ:-IPS}*}!G{nu`Ev쀟i4i- 蛨I 2@""'t-æ՘Gj1#@ffkB +p͢Lp 8GVms\iiIIWBO2zig?UYng`N,DLs9Vv(ؐN\+f6D)->Èj7zYO3 M3v]@Ĭh~LcptGk4^ZbEJh}]K'eM=ƧYI/ #b Id}H/0,1hg*%X*$v="}U牮ℤu8QE S!ڑʉ!J%x-荺j8FD +q`5zkE!sLFI{ML&ًEt:pbi)8Ϥi/%N`s:Gu Mhp_y4!i2+ +l4V?lT4-w Jj?ƕN @hQϦ`RP1Ȧc+_UߗTB7Ia -P` &h +ަ^YvUYTWv-sVT+Ť`()z:ܚE<Cp BT_ "U/<,V#J PS0uF5E@ Fr(:Z'NWW8\[ P%BI m,3K2i+a) h^VS(9sP.D}ƴ%DfB+҃ +-6 +ڪ K(ڛt[ַ=sWƲə0M9fmS-E5i~[H3NKt-dI:;D&:I4PEJ͛$n3%lO +si9պ11BR:`.nX?/ceDh#-/~xV/FS,jLH|h,FB-AfC"49<jY2hďlBV햎PY}`4щD/P9[_񚏚Ή!3VTSsgO߯!5҃N,MC,RXQjT_Tښfbe_OJ{|\]EäۘɊm+>@3%io}Ԑ{@\ƭW}YM]LLyn(0rQ>bFH<)(K((pHOK P%:HBOTg=/v\e )/HŌމTyjj𔎡bj"!N}ܷ! vG*&)H!J~NN3wA|Rj&}z54E=sWG>Rm#,RQm:{Qưp>mhVɞ/ Gqr +Źd*G>ꈚ!wM/U?mvtKZȴ*;FQ3lI(Qe'NUܳmym˴+[o)>3SF&׺n‹9@-Υ/C>Sc%R_k!xԩBn2d^0Fy㫀h|oڒL6ǍB> 4 +6۳+ wկۓݏ?ݝR,R6dvCSO\e=~|?2}^k[Ez+Q f۶ xޤBB%],]`4M/%Cw)XMiz -J猑R/ܴ łb掲Qp5/_^%reD]}&g{ !e 5"b(,CssnօRї+cE)Jzo^.Mu?% ZN{J1FWś5\.9(*7Ǖ#h5WUL:[%ΑHۼ|R2I@wƷ*X[J:\ר +㉙"r^vۘ[z1:._%DUkv 1kD{$cf4a5_V}ӌCSNp0@jʭ4'Ua([b7$ p& +sn^m7&9都،_cDUPlZ[ʳ>${;^AǑnΔW{CfG Vj<0AP\2{#g? `XH-)7ٲTvTo4n/iL >f=4k=Èkԇ>B +R:Wj??8T5ՁzҸ9Iه8RRhLa<g-Osy:@Ɩ^gqɽӵI%*/9b{V 1]-6v= 1 r}ʌOex-HS\+MBɉWPGIx2^sMGO-V]UD` bOǞ ݓ㜢bZA<((&)<I/Hpq++Mt}B?5XHbcLb\k>Ex@X(eJSq!dUG3OMRiq |-!at.B.ɯR|])P!dHTOk$'QkV:~FnⰖmU W*qCZ\k>E +#ؤ'k#t]6M +^qwQXoM9CPAQ),go! X.zZ,. +ˈe1e*S%^[W5xQav53< 'xJ8:b$W[Tǘ%-HI;Ѭa4²6ܤ8z0҈p̩K{oU/w +K>R,VR;c=eNfMHNI?=)P7hkʔ]i"r:3S8=3n뼝X6&ՖO6O]DRǩGvT[UCay;쩢}.g\ 8^O(+omd)Ke/Ψ +W @4)q&*KJVo''7F)$b4^RuHUO0b +*vc& _'ddEP[+~!nZ}A`a e52$mGhTuxoHAR4F +u.ؽo {A6 +2:JӘ;rZ9C7h]]yz.olcG`z&y^F/~Ƞ_KAƧ fZ:ol#fCd$wg)xp{WJR;%=NH9ﵽFI+dvy ֻ^K0Ϭoo;X2 -G4KAĝuGZ5uQڛAmY@FO+/2vgrZ)*8߬)hR89\` $u,0(Ԗyn5bcr*bc('X=-%@gdM|eODs+' VÓ˶z4oПXS-տl1,ddnc ڌkwDu![M2$sV}@P9x4xKD1QKξ;t0;fN Htݰ 1}-_Yv,}{] inxuQ~LzC;5j_:O᳠Gʗ + *hPV5 ohiT$ǯU{O`[|qmWհ=$|w2gVkiVy4AeLRakpWC4tzEEgvؤ2yA3T8#)RbGaomUCuHa!n@ȍV0OlVZFkSh/9L6A,Q>ceZ(kWaTw)."1ߢnag=c 1 +R&!Ӎd%WS.Y]-㐧qbE($L\J%+49-MQ蜧H}1HRڂQɀ+CJencJcrZ٣}^$?)CL~5cMBɋVJSk`!rjY>E]Ϳ hC5d-~sޚ+2f;%l<)P,l\(N5زM1bǬ揙Lq8!1,ws["mqO~[tY^]Y|_~kMlkd&g~(5M'Vڔsm|2[Z]-j㪭<[鐟5 j|s$N;xGݮ^Zs_Z5PMYԤ_<]q(MO>\_HNW/Z7Buvff{R9VܰK [fISB3E;F<BBF>F97g9 +.V)mvpx"#nɿwqN-U5UqNs\PBQB[9zvfA4!k'VcdBuUWC~&?ܭ8ktJlf!Çx%< +U5D@a-{Q"1uE⁹&)?Gϳ7bɓ2`b<[X*v(4Y%bAi-ߠ54_L1ӑ~Lz e $Vٞ5=[TĺnqA+ +,} Z/xD@'ʻIMPO;k( XnfȇE zX,oau +)T_[# Hc (\8 MҫH7ZkM(K|)G^*QŤbV1Tڂ<(nAHPX)e";F~ 9 ztybTނ4]W@̆y!R[sdz|T&{}0G= +dgn=UTcn`"Ahn~k{/} +}Z[i1Xsɍ PSeWcsoD>/Dk:=*lagzN`CCU+kSiտ< Y6QU/r,gF<'H +IoGi'UQ2PؚEqmђO"ٕ-`#)t˴|7W2c4RruP>v +R*\a|k(㍇Wdngt~_hרZahGHU+]5T:9HcG~MLߩ]B5r4~ΉH օ/Pf +O(,Ϳ~*w&{,;>UϔRؿyXTԊG=d +V^0"@2 o=VL2'\0} Z.D"O! B!悰U )P)sy w" #|8/Fs6 |l9WQ}VөD]3n$3 +O fu[}M:L"C8fXI]jczI<8yS);GwwtƱx3e᫳2fשs6yZwx ԦҩIC_MB?H)]iRKx9e= {|e i,nAspTY꬯jzb1|#~6[(4 [`! + ."2.@HHɗޓ$$0PԖ{VQfHXlSD3l=;92v^µŁ`l'ԱX׊w`5qꨣڌ:~!vbht8x\JpFG[zP9P=V!:[1^Lע6cTDgt)egS:HpK>\S4փ>jo8D|(-@7*i cAx6Rw Dv_+h̔y յKCF'6^8I6k|.,jU +x4>40wPs)x|i5t{.ڰ{KJ :u[p \A Jz!`Q,Fiٌ8D?GHR; +[vq]'UNkB%?2/N,w.i$e~ +֌+3: e.BC1'N39OP;6Mz%s5[2`eSO)YZ6֩2nPDYY^gLGVɞcdIvuxn~ z똝KvPG*KsPydI=X&(I6SC7"g#]V3 NyjFo7e R 2!]$u#?*^M38_O/hPyn6* nen"°D shF0hÚc^'ѽBB-BP ;܄)WNܩߒ(-k!7o<&X7n*,4z%_=^ I6"56`F_T9ܴGsXoM +@FM1 + %Pw9'{l=nZ +ZĪ8njŢx\g}/N0NXe0Bhp]*lbNezW,Q򏐇ҍ*2er<+b"g!L#@rH +H4TGDR*>]&_ e Kk +PyP*Vo致ADZAZC .Bh3U0oPWT}wwI^8QP@_M` jݸb{?0Qe{DYP Ah ::*o=,:IsE3d=XX4?tS땏TIoCC#f \&IdR + C&X({%彈>S©!JT*Լ»gfDWCJPǚ5(ZLϒd(PwȪ5hTwTSo3 E|e8bvmrSe{9#Z?Bu&:f9I2 ,,H(2I0싟"[ȏX>6 bsx杴AWV$|mٛƚE<֋)zf&1HD7c #Xn +؍k"(oh3.w榈gF&r߆t]炻S8:c~_X{}[i}xLJxy_FopAhg,d}'UZ8 ͂Z1v4Ա6I@SؒӁ0R;`m4} +lQic5O򡖶c0g-űZ;wN!\ҝ?l !uK7#ө&n (m~RʝexꟵf>&|Igg 6Ͽc~&BNŜmȓ7`s2tIaunv:c* +zSҩ3 4ɛZmhe7]I&Bߜi$/P:7ji<zՂ O3d{4ycB>"FMA zK@~ ![Ea[mkn>9 |^ *Ř#tÑ}<H:S`9̌lv>h\4pEqyIu}^\2agYs&9~DV =W?8K{Za׷&[]P$`)9GݒFS6ИHzԱJl_Zp7',n)[O:kL8r 5l6rrK ȡ@}Md&pJ]zѺRU*RD_UŃ/y>y:?Z_>;6kfD>o]BnE!6oDYb-*c,{VU DkeQstl5ǕuRly"1 7YZ +RR V=jeپp@ݶ]c 1ij@#-+g5n@&efF}܇)2W + +~U^rViĠؖ?#SNf4sNJjKtrBs1t\ Vn-WT߆|pUa%jq.>!=NϢu HٯڥJ{e^ 0)A !@+b>"I$uAQOe {CrIYlPfh.<*4M_hAtr&Z^W,1薔#cƤ!F1G&yʌEHbh-¿$V屬y|,} XG]ߵeJu{py5w@]lq kAWy+ۇOy>muIMG<[QgD[0nIr+gKs`o)1op؈{JS6G'2rc%ddu*I[=*ƍ +u#jM|G+Tk*+g7Ls0U.lf!9q]gAiӂb1Yrރ^YvqM( Y^;嶧^GFxIZ*)zE b2Kύ R2J7q/8H;2 ((I ˥y]qj)[/V }P3oppsq~ǜP<*432%)m2sx}y971~X|),4)sk>TQf}-37$ö˲xIb4OxPtmNXUiY6^ٗ`K΋Z]I8XԩWsߡt5[ ;|?ݐh1S Q 5#A?0M:Bg/t]ڐfbNB(sdkBEu8$FxM;-Cfr4v0ࣰ@gVW]lB+6~ƈ=Kchۄkz&{nj&92ڌ.ՠq]!T!_2ؚ1SQp,a>~~)nZd|,&-AB "PwWl( ,Uz 5K%!DYE]EDVPOt mQqAXx̛7;s9|1*FJ=#ESkh aJڼ +AojJq%{Zpr?^lTcOVIG9z9{1!RSޏyk\7(I&dca0)>wM V{V+y?JEVH3\~;~FC]I<$m %+CU8S\ +pjƷ +i:T 7u8/ -O_zil,+'u^|,%Sbqz1LFt!&8t -KVo~N4Ғ B'~@ u3j,'Y9 +)qs~n +ͳs䖖')r|fql6s#f!xyu4_^O֐#&rw)6AZ o, [dm +rS VY< SNy>wp +zm9 1\09Maoԝ>jjXd|nY!^1GXYUaV(bpm߱q<'u KŭabwLf#fA +1 @(.$0cdJaFQBZU{c$+h&1Ľ8*cA4S"ӻɺ&nǠ8[E7׸m2{¡ 0\½ȏT7> &Qߥ|> R#` +cjmZҒ՟U**ByN,GQh<*.{KTmI1i!(GAO!A,9pyqX)0qP5T Of@`ͯ8h+a8 @;48:/:|@hx^lʻ$6Xqc<y/# `}ߝxC!`08b1 tT3J||5=sEI~*(8$K6#Z<+ųmָX;{'WI6FjR;#sCyvʺ&+6(7J7-[s~k?P]r]v7ir7Ѿa¿D`"c͟[87S?_MiX\FZ#P#jJt QSKրvB7K/Hoǫ5L +LffSV[uVC-6k!7)!NjZ҉LqrF&Yk{<@\+$;rH?<@0A%BCD +EEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdef%g0hdۣ/Zߪ ;iǯ0Nlɸ +,Os>lśHq̙4WxԘշ 5I[lzy`F+qO, uO)lF!gD!l%m8c , + V # g;^0{N"qE  !"#p$G%%&'()j*L+/,,-./012p3\4J586(7889:;<=>?@AB~CoDaETFGGx?R@,AABCDqEMF)GGHIJ|K[L;MMNOPQRuS\TEU0VWWXYZ[\]^_`valbacXdNeEfd(؀+ˀ:JXkeVtA,|〟~׉~ˈҦ~ч~󆧨 [56j_M.Ub@p, w$}ߓ}LВ}=~e~#z~H}~tAi8~T~͆@'~2+|םB|"Υ|/}s}F2}||}h,~S~F?~p+~| |0|INK|gϣ||ݕ{m}+g=}S}Ҍ?!~+l~aW{{P{ӧl{|'w|k*zj|_fo}R}q>}Œ+{~{J޲{Y{j{he{n|y|ae|lR}>}r"+}D{ďa{ȯ{δN{0ˠK{lv{_x| e!|kHQ|ȕ>Y}%1+}mzhz8tz)!zU9{.ŋ{q6w{d|EQP|m>-|ڒ4+}3zB z[gzȉzNzv{;w[{d&{ɣQ |> |+}z*z|ōzNz ԉCpu>#%4cV5)jjJ:6.;s~jj2ըVCEJV+ǫ,o]i 6(S{.}_gH]W-Pđڬ%AiM>N{+q&CUro*pHh m7:BO"xQOi +a;|q7bA'):8%Xܯul4 +}D0[~->IpcOYd1XF h3SB4rE:"<;$;:ׯk"2wP\%U:%#y+hAZqgwu" {^!xH_m0ξJʹ(%@h3ҭyx +1@]!],\~HJ_? L@ M)LD"%9)ey% :h~!> n`NN<ٵ/?Ss{=ᰬjxkz^[uIN;3є=&^<仚 o҂WxM<iOC/2ECm*wdJ'ni}gOٲx1X{2M+HIP4#x06fV r]2&n2F߯dV n;ʣxfI;Q5Xm`\sc2EAV ]+< =.ಈKqytHK?dy]D{irn-< %c4VlsNg06Oߎ.'p dwIsmSzWzWc (e4VT8k^ԨxD͉I "ǍLŋ]ؐc?fljj5[c/ +ʯ]1GjÖNgGW,T$=]EN:uİwv E{䱙6Chf()VލLu&oޛ,fR@7W}(\N:__zQ> +}3;/e3ކTgMN2_6Ç=^9ADUѵ,S  ׂT]DA`ATT%L3Lf2i$!  D +b{}z_![JR?&Z;AHQan@({.YOwL/ W qxTd`Tk  +18mL~H nx`,F}/ék?٢ɥ<ܧ8d~G% I=='o\*_!9&(=zN4脹QQy,\e;B*LM//eG9?~?&ʯ -8QWeH. hU61f`@T'@@qˀp =­ ځWTz 6_B6P=)O-e7Po-&%x[A/ɷ.'c叺O( !#9KM?!׵MځZj6wu1g+m:z G ˷ˏY<"ExQtꁷ JJQwCy}yy]Y[B𬋆MGpm=>K;9qw 0\u^>>P5Pޗ4d},..^Z)QQiZokH + 0Q@s4rStvse<:lPYՒ&JȜ^4lM^1>Q#f/d!rE@*vNCkVT4*HyXG0L&8c;2: &w<-xe +3lX9cŬ* +d1zFzii0k + sʮS&0g'ǮSzO8-1vԪ{Xϲ5'&'P% Zݵah~Ffe-:K"D1o{|s6ƌkї2V}Jn-k_Gbʼ 6O+*Υq݋Ot7hgݧLK`z33tA7ʘ")>]UכY~ECh{,}4~O I61~W2U.Wg z wr4)6./s>LwW ^:9ɗ:- $ s\tPN1~C_Eb#^a>녻\6y5U׈Tw<)5>kN_*0`Gk;e[eZuNdO7"&ݵA|wpL: +V^!DL:IT- +˯^O8n,t +p6mreYME%wHҮS&e6Nx&Mƀ 0s`R#4l'2n^M\34\HW҆c 8a8m% #(5&^}?q% |^_S&5c8KS"C#%%{$:w"Y @'\,U֭I+Wfy/J깜3Y#q$tkH #ap%Xҭq_˾Llq~zv3^꥘C>e~)~ +?b#2i7 +T~-u\ŮPC3%yZhWr 0 Ulg8YLGBZ9@sʤCYxmԁw ݺrUO\ATDN8I,~,bFAWPeW3rReZ]< WݕiD`6pG,:l a'["[):ZɞmTu]RrdZ!?QipvJDSyB$#уQke7ֿ-^]N]mcQ{vWQLBc^6IpgMiK?=9`Un뢊g$ܕKVp jҙk<|?wbfĩFi ȫi vX˲&e#Z3Mt "hX xHur@j{)NGoAe4deщYZڣ e"J̴7x;buYMI :A4M +ce7F +XZ1 +Jpa;-6{\JdDӎ +aM'UL7,NnfȺU0*B7K8- +LGA_֍ɏCmɊעsO 3~6lMs8X?נ׉X2c B]UtGݡUJ9ܙJ o>.)Cd%ޠ:V uMt лohܮ=ߢܘ^HZHT5&{ʯ +|D=๝9_B.R?vup=oiHӑVuGU΋270=[Ǟ$2øR>6ǦV\l;Z܊V +Kv6Iz D[BGZO7e֢&[)\|Jd('Քȏrv!^!qKy=#ksbh'9rsrY[klʂ4jY8I{P,YM⑁ PƜEB@J=GLu,Z[1?+4֩}֮ZFOQ-81Tzw UsZf;9-rI7x8.ԜY~R8Ѳ}" %Ռ,GAW"VDD_d5৪x CaB=H~m?xH =EKEWOTv>}-jNH0sQIFa7;&1{'"kz,hV~}Hr[gǓR[[=P>F*M;Ec1߉'ъ~ ؝,r7MfGx[הPf]E;w1X( + }vWqĴufKқ[0\{PptE͞w;sD1݌(,x Y53Yh}qFeӮbZ̨P$nE ;`Α1l(I |άpس.ejZsOEss;Pjh1 m(b U>|+^p~neqZ,1O(EQa;C1(ui9 ڈsZ~v0}jr}` +}U~BKg~ATdi76.%Bdfu +jl_޹&U`K5A0.7ueg.&*%;׍ɂ΁9˂u;jx#_TQU:&K=Aτ7i.,q_%[7)̏#uEmjg؋_U-t|K +BA%7d.1͆ +%w*Ere u`È|j1{_r厱U"J@pO7bS.C%VŅ$Wu ܗQiݼs_%2TǰJéЎ@飹7c._m6%4pڀ2͟ tN i^ⵗ^TgJ/w@֣$7d.xՊ&iAwPGtsˠiMVD^T]җJ}9@Ȣk7kv.J&GN֩Mt2MSiѡq^YuT&?MJ]@7zp.ˍ>&t#qok)shź_i^2SKJA@~7{ .Օ_c&A@sh ]곗USѭ\J+#@7f. Y&o |zo|z̑}3{i\}| )}|~ }/{~K}gn~~*S,~~>~*(~{,x{o{ta|k`|ǂg}zX}lJfB}ł R:~>L~dp*~5yOAzrYzC{b{͈ڌ|4y|e/}Qa}x=}܃*\~;;yTyg}z zsz{f=w{xd4|gP|=4}a*&}׃lxE؋xΞAyJ"y!z5j>zv{M*cQ{܍O|i<|\*}rhwTx(3xy(NRyƉz@HuzՔb{nyOl|<|*(}VwՅwx'ex|,y<yНtzm}a{ +_yȤ!Mz_;{'*`{ދ眃tx؂yvz+9zқ{ˁ|?ur|bAI}O~?;ހ~)lẃ< +D#;큊ZtLsa1dN/xN;SY (5eڋȀ!Fvh$lXP+cu}*C+S,A@OB!@#&2*!Ȟ*RXQkN=%Ȏ &,1j= 6>Ǐ@3X-䬛RK>v'A5#g@x+7w~dCZȟB|s% 1 9ōA䩝SUYY=X3 dgcL3a ͺCnԔyr +lf;~7ޓ~~5f$|ZfDu`2@$\]G\@]zTe 9 4[y#'LY{@m!c>zn:> =.+E)pmp'^2%"qJl?o[:x``:X%>]RC K_ 8mI :u$iG@3zs( PZOr_xs.M"`/WS$nw",8X40m5<ńo~h n}DnaϠ+lQlW^Sl,]{ v`(`R顷Uږ6H['׳W6!EI>_pz)xxcvL0bquf 7?jjh>?^\Y#ʯG)RBQX ~F8F_D<=v~մgԦ4bDFzGv?VBa_݅Jh3Zd+XlJ˵a?wJ3AjVjIgu>LeX<R0EcrCBqf`cǒ02`j;1;/FPcqh4$p/)_uy{Q4hݓj|ۗ2<.LU$i42"L?`RԺR磇@*C!`(`@,2Dv_/{ @ 2]ZEWARSx*dR*WSq!Ѫ`$r"?lߡۨ,+@Ymyon-rI|Ԛ:Oe)Cd>49l'C{ K` HzZiLZsz.fT";ib-2(!-htB  _a' am/ruiP[FUYtc?&%'#'19Nu#7od%o ]#k7ak3RLhUkobJ2m% }01<:E4q2Cl^^)iZJ|jlk;> OP|"Oƪ/kQI +Q<_CUXyF|sM{v*4UWp`H +0 8Jm?qWߞS|lLwy ޙȫ +NL헡, +l~øjb7*&"4+\rT'Vn\5.q`&s S.R kICwv&[r{k\(1b0@5l@|=:s|ESҮ(/c[e4Mty^@8uX!L*<$TJx4k?.3wjnItv& Mҩc ,RHrܥJ]2`8ZDЎziX{!ZM)"pWXtly@@^3cW 3Z+mNƊW O16 HOl> sC +z!(A p!UjIRU:=ح.?\jDtE"5c9!ه=0 /F3h8{24Ulx @ڦ>_L֩l-@]Nk GY$"N (64{/ׯl"eGeu1Y/ìD6J*%F@M#x|hUGZ-*|>'叹5EJw Ty[uG)P*Gb!#a-v~0w[gcZ9w( eU2CKLM+2sZ*»as̉ͦEǟ3pG(]3o2ڴjyoM.}]?ڨ \4 n;b~g?3FG{(fi6-Q y)d2'ߢfX!:=\dLׁz|WcGcIJY)Ų܂FC"]AErrz{0j2[%by$(=]1l _dŶ yBsWܩ*pǤ +,g,{?//\~7&(O7Q +r# +jk|h?|s.jb6P^$@gH4<%"/+0i0 =yA ~'Y +NxR#po=F͵ڞO-t&73<á'$RM»"0XNG^1D>jhQߨM}&ǨpjO|dh2:'x iT+kmc{d4.W}iK?^-H,Q.So2P"rcWz$ajUNsZ2i󺩢qe͑ + hIGO^)uԿf}C&=44>-=m0 ji˹|\QXt:!ac7P{TN[\{$8nh/ymp] ve5"1 ԇ[SN[Z=E1U( +A%RV*Ȇ ^^{B2ણ𫟠pZ'Qw?ⷛK7Մ;wb] +Q.7 f#D(xabaO"Fޒn:`VuɖTUUNK}!oOrJoaxA؇u/PȆ2-6]*[U;/reU^ј +/.TklO"7{77T4^uo ?yi|Wɒ4}Z?K5ukqrt-D tP)j}6N_߳Tڸ4Iq2VQFޒH@&5(AJ)]?E,{zuq yɴQti_nE>JEWT$mT- +bH|apԠ#_RBfxS)yka +ex()S0I'b9F`" {1ϫ>ʑ[oc W[YޙwiP19b$,&ĀGht~In+d7*' W<̓'Hfb k| %c*p } +d>_RW2nqQُu5f%ďܖ5b9YŔg=0^n&kk;7O,5|Wz/é/O앗1/˹x%:Y0 +{XG(U.vabYG錝=2 D^9'rGL^ ;Zc3z7+g EHu`V5 IDI|31vba0fsq>5vGYyf?B,ѽe91x"wԲ`&`h5 f0ظAۣ]SMC4aZQIPD" B`Ic͛DU֒v#(snQqƨhM^{M 7nJ&*^(,Y(}ctS[WU>= ЖRl'[N]@X{χRzm0WIGe!Tht7h=¥T/sp% k2ADotm 4Py3#+: Ͻ؇eHqNC%{YIp؞ M+(z|= PW0aKFT }r=,Es(ŘVE:Ȼ?pT,CV(fiEGArCj$Qa_}$՚&Zu2kX(]Ϗ /&ōt}*vŵSk̯ޟaIVLB8疨/&ጥ\vHk[`H6VM9LV*Bs6+8֖D~/B&ItЇ^mܺ<'uݴk:=`QV 矛L#כrBR?8Ǖ/' "{ry&p6‚ykey[QzeQ_{5GǪ|#>@'}4J~,d#ˀzq~p ~ey~[0~QCGl>1G4i~,-#Ȓuzooe3Z[ނQ.GB>)s4,?#-1z7yGoo#dZFQ";Gi>&|4ޅ,P$3myıo(ǎ9d쌼Z0iPpAG}->%5"&,iP+$R8ׄcy n" +dsAZp|EPGP!>+5n+,$ˆW$ymÃ=nd8AZ-P}G*E=򠍌5 ҋ,"$ď1UfyAndEc"_YLPGG=65C,”vy$󎪈= +Kxˆ nc}YBPDF$]=ٟpu5,%2ވx|mռ*cr#dYl>Ow=Fɤ=ў5)I),%Bω F$x2mJc?ĤY<٠OFJ=ʞH52쑂-1%_c.syzuyv +òz|wkzwٝ#{bx؉{yvx|[zc|{O}i|nz}u6{ja| N|;}<) }v(ҿw w͇xw8y'yڄt zY`{GM{;4|S(}Qt咈uؐvӫ"wp(hx8yNryЈ` zMM{]:|(|t tSBuؖv9wvxTqy-_6zaLz։':i{(|rtsdydtTu6vFv8awƕ4px7^wy7L-zg-:'{?2(| ޝrήsctnuyQv^pfwIpx6]y Kz9zM({)4rdtʝsU\t:Su gwu򤴁pvoRwϛY]#~a&uhbIQ;5)t'VAZẀ|%搾0S#Vuv?aboUsmDցzA6 hׇ +ƻ%LP()HPu'^hvPءlDntYryW+Ŵ6x'&ғw-Sq4¯Th00"7 +R.'|aO&>0HS#ma7CG|3=7fx[:I_ƛ[SK'fAр/ńm8,po R-.\ [&g(ǂ\/{,` vbLT53E7\`NE^'[ϮVvӌ˱:'SQ1;Y!%f&]r}0z[5{rKG-Eؽ%݅!t2!mjPwE5;=~&HRߣ[9t1]8tslF0KꋾѤ[Pl݁P[ \Z\!֫MbtݜGh.3 ݤe t e^VAW7G<{;!5JD-mވdta~g4Mhw Vkٍ<%C  HtHH3@6! peP2箖墦!Hy]'N!zAdUE{ daOAy~W2+yzx5޿S?t7 #mE%Wir=#^+#>^Uu{ޓ&o>Y~<|Hr7%#SRI5(Eΰ_hwPI/6:%[?!.`D\bBnHjc(x8]+6J eAF4b+i8&VxqS:}ۍ<ɾI-w;@&@[Y%sd4(aBTiC0IvRNt>Xp^4$림r25BhBT +xG(=?j<@-h5-Ά1J8)5^6JnyE UD`)r.6 %'IBXEuǏoF_Y2 ;+CitSttKn:Inq;Ԯ +>M144b3fP/b$׌Zp 6NAy$Օ2>XчdmpG|j3'l5X)ی7=a/)JToKOӯGI!S~5{X!FM"U晚!(_'* RKQb%W!6Jӽȶ5T nQ + +*TArNr&f{.qM LqL&0N;580]aBe cJNZP6f[(V2T Z[⢸Fj #ldb RŅZMzjq0* UQ,%b 3!=HB2ʼn +n-ugzTnRkVA^BEp꡺a5+`_iiSDOG@r|12LEjPm,X >^{%(㐇j)~4L@}x!YDLPu&|:41L!oΉނym/4t}x2a\D@n]˽hV$s3UmIX E^a'LeW NmmioQGP}ׄR6GrgIoFUٸ +|Mvb [|(ߖLwud|іx\"qmw(Ta]g@5:^A D{l%Gly/@bjDؔ݀:lK1I%P&Er"=1@cJ:G$x|@෺z'ƛ;NP);09%*P 0[F]^k~m(WmяMQe + g*Vsfdj4!N̩nOGjmA8!#)9ʼֻJ'SaZS eod+ekٓ9CHL(B,6X uznzMA*\_OZw%A}a209Tw"G(>bʷp0D7JלX8e~T.¬0~{=#b[1m0#̇_g=dpbܦv/vӽsa>c|̝6 rKm"V7p}1]"%prږC{+uT @=-)fwPU :@b+[Y_璄 Ϳ8q5-,rXd]]a34sU9T/[y9 )KsPת +Vw5/mUZ /VHTM51R`Ji2Tud\ DxC|եߨ:msރYԵ#ݵ}\jb17U@ZGf&O +UxftpΗ~H7qN(s~;}!^p}x5 GwΡO=@7 +DEDTK)(.UR ɔd&ɤ 7a;;;*SAdmw)k{ Y<]%t@,kM@̑nc}ORUoM%I2;5kۮO22֠0}(d͇7-ӒOg`Av=u2"\7!s799x)gChUI!_V TZ8\ x545fl)w񎤲bNJa}(П\XI\t>b7XYR2~8<T5TpUUK +q}#{+yk|NB[I i B]e$5~kh2"uT'A)bƐ|Ϗ-:+<b,tDyI;Lzۏ77ֳnFt2+J)O *Sis%zagQ{p&%pV#/fCҊ/[AD][@ ]eofj̠O>+i:%4弭'DUeQ"h_-$cFۻ +sֲX;cC%gwb3$s-[r`OϐV i DBƃz+)@*sG,#:jg֗ߒ$|tIC尞yP5uTsYmg˶;K7?5'-qhuw~Iܲ^ƺHiw*}݆<f՝lV3_TUУWB- :v_ oSGgn8}=2oNw3# )jM +. 8c +q2 'vذݮhQ v^uw7ok;mG  ;#Cz/G`&0`CnqMP_@]j/;`'?ciwJ-?/L"=[DQFࡀO$FւKXܲ^kl(72"/4L~[mYeV /(Mo 4+1?("$Ca,HX"E>848o۴NzwuW%Mwz mKKwWl/*?/(B/ag}ADԁ(/W,kvkD嚔xUI5ᨳ-5i-LN?{GjkrtoS]sIMHqWRͥXeF XauOs~q.~,.'.v̼b #%vZDUEiF.mmXJM YKO-Yht3Mp;֛\fT4w;SE.!J~ٜ+ 3Tg8~*`-8Ov4 &+ODչTTBI~ɠ 1\"61zlxbAf9tű\'G7r0:b|zE~fS,:Lm~Z.OJ،%ISַZׇ 1,"n-(RD]uZ4I?f6ϓI2ktpW&ҦIZ$";k +TL "]Q69fܕjCf˴qC,4J}O\E+ ]x?<0»kǗxظ*O2ezuS&2V􈤫+hd& W粗uH/l16Nl7 ]p}|lU$巨djr;_֣s}@}x5} V:QOD4 +aO#%z +(*D[0LBof= B 0Bd6FTR<=\`i8ZjveI3yqƨfnw޼%{'J _X3N-ލ}wElg)i=3pb +&|ײP^"#}hKB8m/򻄙Ebov%"-{Dȡ@!5acNm֓;bEW=EEwQ1_牋}+{OF$m~HXҴX+NMDKzW-I +_[JL%k?zwҾ|B=3R{aHDLk½KȞTK}x*͕}Y>ރVՉ'sPF arʉe-3{yh+gԝ:9nb6$l`-6LK9 2G(k7%u}bLjQM4yWPD- +_CPny~3 +9[1הeʞԦdʤqM1jٛP6ds 3p:2_[(dQzI^M,)Ǫ`1;,Iڅf߰+ BkXnXZV0%+r34ߕ[IK265Eֶa:ҭN"ذ BgBS_5Ӫ8CT=ƕ^Y].@Ǻq0y7\U&64@r9ʥlG>·CP7W7Iֳ!|L} +a Q$<4t +&14$P,4]*@qtZYr_D #nǍc&k&p- +-;\T.Ls^Ӭ=XRcap|n;MȹsÛWR􄾜֢6{:~#x,aGp_1OE -:WhRϙ57e2guc# Ǚ*՟Yí+!{m]& ᜬ>6-/%{c#neې[9L@Cd4S6͚W ZFsϡ|/~ !g'>C'G:dTna#| *J|X8R;H4гg +2~WH0G]&&%bcQO\B6v׀QV#EҨ]4~|3.ZgEv7HT{DJ[; /2E:*?2]u4<"?ȥ:)q=DGaW◃da V5KUB*I%T]A%hXxU؝yd}gDP+.~pLRU< dPhz珪!΋+i{[U^<:jӡO x@{$h"WơD%,tt,ͻcdf`KI" .sϩWڞh{,-c(kyH^EL1 y{d79_9+Yx?|\F%-3Ϭ̟XH)["cf]k\dqcxV?6>Oqn"5f+ +Y䯇w͵[i1BHê'a"_?::_?{p9 ],P/e/Y8*݊o,B & 4_^}$!>ra9ByGOpx Ng5xX\ X InW ă-0WXsd$i4ScbX>uq9i6I"N`ASypCwhxY4F4]6mU(cggxc5:ͅoF R,.aŔQM,i8En?ҝ?!ÚGF$NE76[◘xx1),5G̋)El `#MIȑSAy9=h*2 @0Cay-?uF5הǼkEc"x0%zӽ !yr$z±ݠLlߩEkykxESbQl_/`4H 5%Sn)@$XٮC-guc砑 +zܰaZÅJ(J9WQXDhI+@E LhA|ؽ|*<|D7 ϝa4(DÞ 6ua ?rQ}NdƣT?;)IYArCOB_"O9*ԣۇުeE%V(0Fޝ^ F]*a=RÚ#,&AGlG+`GX̱5ƨV̥c7R!`)rt .5vxAL_bYY'Lb&Jq K : ٙd'{א(yq2a7Kj36)x QfE4WwSԙ.T3r<{W  F= 6}G6ݡgh||9Eu;(ݕɶ{?y/ёkup'᧎}oQocI~ki0ʪhJ[I;n$e]%tHzgtnv&6A%f82N5u754@KgdO~Csi4/9Snا]9y7~GƺѦ$$.lwS"'eQV%TOym+'cE$ʕ$ ^QQB^]-6Lj:l5}YMM. '\̔b=daBeHU +眛 %b5?Б9_m卯Iu.Q)^ƿ+zksm5fGN:JRIi:c}wΦLe}I^6,*-z>%X<=&=f&b$zarw;f@chvp u{v+Х6cF ~9lҙh5H#Rh9}.3/N΃@a.gP;)ADwAnlgr?Q#/NglxeFC-0O[5kV\Tک/X{IϚuxܩ)s.\ ##G3a{q P$[Ġ-xN)OS +!іk-h1@Ou9=R'hLЩfJb($i+ ( bW6Mrd'\r}ȀhZţr*BH߮lHZOqĭ~!*%AC {k!Lnt:򥃕=טOKl$M+E9S R +􁐿VC>uM(4Jv?{AEBHt&@Msp)( %ӜP3Xkez֗"§6s͟Fc{RH."#O7Z1upDp@K>am'fGCAe}cX:|Jx+~WLjm®H,wH@5[UHRPgMǴP 4cMnܙ~ZC> +lE8x?'} :遲;V.Ncj\DthU&ptW +T?Ѥm(G@ENux.ls 6*팵aai85Ts)S-?gOĢt78#@ox7~8D\bQ{U0E;C(~fRH)mс@b~uϫ @ߚVEGSojul6Si?*Bø;UJnv⬭6]g܋l0zWy7=O,8C= 4Na\I[-%T)m($[l(+0dj8J,:wa_5c3"*lcqq^yEc3حm b4"}I@zW* qK z]Vc¤>EB)/A{Y昖)yn__[NQStĮSsts( +Wj;й۩T7AZzd!p^;VmJË%zvM'f^cT{oȲXׇL V7!^tjT/h\'M+9T%$oip8oPW^ OpCϠQE#7V e94|uJ3DReb +^BH(~kάe՟+&IUطƕٗt=)Y ޡwD:%b!$gF<{|5bW;F!QmBd]LDdSwb [b3(gYo:@ƒÀZ4CYF>a剺v[_6%SiiGc^]ap;KF 'd܄1UOg^sN +[iMY_~$? c!EUaExc4ZW9Ab.h,0X.Y>=4<5Q:ݏeoB]5;Kq*V7 +/PW%=ƈһ"aY욑?pIWFn^|r g\9ˉQ䈫F;U1'لׇ L`|1@q[5f-a[GQe>Fd;njډ1'V>)暠{fјxpJeޗ[)ёPF -;kz1jY'TlsVzx9oܚ_e-NZh&P-vEƐ;:1%ч0wMn'mocqPY訉rPJ=tmFv%=vw4 ~y+0B{d" }|~wtAm.OuWcavcYw_P@xFy=Zz4|=+OM}"ߎ"~ v~zRl1zb{oYA{O¢K|F}>=<}4~+kt#RMIWu벼;l.-\bqX᥋uOuWFQ=4؁2+q#QubІ kKbQXwO~FL/<04+J#tk(a4XNŸ׈'E˛_<̗4s+T #7Xk2m񆝬wr`ysɄ+hu7WvFx~6y&z>jflnio(qpxrgtr8VuFPwy5x.&&zrʌjƹkߗ]m ro-݇pwwrKfsڌVHukEv5xk&CziIոLklݜ8npvqfsUUt@Exv^5ex&[yeǁhضjy|l<mZouq3earؕ{U't|Ev&5=w{&pyWGh-i-Tkm_+o +tp_dr`Tt yDu5wj`&yvsuokcqISsZDTu4v菊&x0$xcixkרy=myo݇zIqw zsf^{quSU|wE|x4g}zh$~L|2v3s0vtVwuvjx2vxwuyxeTzWyT{&zDk{{4||$}}tU|du(| u|v}6w}txu}dbyZ~QTzH~C{63|?$}rۅC/s˄^t9nu҃{vuswcx|SaygCkz3{$|q!pr͡stoBuXrvBbw/Rx؆By3fz$|qopدq̔KrstqvHaw&}RxLByo3:z%{ٽosvq r'珊s;QtUpuq6avQwэB3x3z%{8oO+plqqrsÚ|ot+`mv Qw^Ax)2y‰%7z;Qnװooq\^rT~!sANotj<_u&PvAx02yl%Jz89nh oyMprq}MrҦnNs._.u@GPvLAKwؒ@2y#2%[zaFn +o p1qN|rxms^tOv>IAwj2x莔%gz2l~i.b~k^'~mt~o`~qCp~s(`~tPvAI?x1zT#|;~|r +|sTw|t@Sg`ղTcC)ʐ + +ALV aPA9zwXS[Zz**z̃VS ]r7O;lW ~xL/'HhwGH\ŮP<7CUXy96`Ȅ7̨݆}j_, 9II[O@M .hv,-B;,Q9]U a4tNNv3Ƿ0/2&l}R|,sd6*Qe%LYp!=%*:|]|ӿA=b7 +L7+ziD-fU܀#Ogʤe =<}* `<bo4H[ Z%}$t!~WY*ѹ$׺]CsKT`[fr;]|K qm\1!7mFCzaHO8!ۢBgh tʼnPՐr`>$N3WujKB-[$9TdbZgsQ3){甎9iB {_okK]-~wzy.Nė+ڋ2nHZ\;a'fër,}9yqa/~`וֽƹ%1xaIiS>ģ՗y᪼}x2y ϗV؟mn&}1|R^Ǫ܋K:kk?Le(P"[Hs?x6@uӈ;)oogm#0 2׬nu͸ nz+2cœ]zXs^)<(l#Ng2qඉV#.|ouiVէ5Y) Vn9K;!V%NDWji?<kLX}~0U{w+z\JMBGδ;ZA.2؝|ւ;s{r`lj uAV_Q ˄Kh?mezlPg/uxQny|"_?=Ay"IJbSh`@U|QURYp[WЅ.Q^Ut4,N :-feWݏ1 _2-֕t |2CloTlD^)eG>:TXOdet=~ $t4^e}'RG3|w ׹䂜^iHG2Ʉq2ݙ"YA5BV,\{\_Rr><*;*>:θ#{^+f:PCs6d5e8,,XNӏ2EGUHBIn5m/=Л)oN+Gel$Ұ nfBP}ʚ;JRRUŇhvuEvo%{^;0aLr|0^%7ULXP M_e/BLm\D;6dY46otlFQ:ufEO771M)չ5ɂt?j1S]a]LXJDLKi3cOU! !_ +"g>xG=iu#J26|&Ue6'L_Fss*vp}04u v*CIi!Ɗ" .JA̗3^{ օbEzr\Uj{߿Jo=-u ++q>Ou&]=TsV\G;J +F0iYS0yHw +ob<ƑjJB5>;T +3D˞ 3wKHhYiE\6+>UdG0Fym^#:kyQZ`J)3AÊ@H9}F{:RאSOADvZZŵBg pg,VFY:{Kv,奨]{x}wG~ozwo߰^$JhoѠCɇHgItoV,&7D'@sBO8AL2CsʡݤwH1k M,uDK6~\K"r_+?8nB@O^3=&lƨ,_\MaG1,C)ÿA(8 \B~UVHTSb+{$=BL.1Px&1ЋɿwXsz։i;ڤ3ѱ~omȀ-U ׏RCuwqWpbu.o+PX: +2ҦpVv|[2 Y&;] +P 8EvgJhռYjrk}D 'rTs)$JЇI.t +#۵0К(w>n`A +NaX-STNHzN7 +:{t  꽭Yw J] ֦g]_W[Lh s0 A)iSc@ qn)N|bj% }ļE'$8ۂ}g M-4{VO +qt\xNa%+c +f6ҁL uDxI YTn32f8rܣ'L% Tܼ,Th +a| +;S|E\dD\)vmyxgyK's,%y-`#ڈ-Z&ԤtPUu<3T>^^Ӌo] bkҠH-$\wahu4J5`JkJ 9-YٗfVaj}aƃ $=.xy%WW Gj5Keo,J!Җ)ˤM)%k "١xO>W-'fm1`*ڮZ(-ꗉ,ŭlXw:eJUC^="]NFHWpևRܪɕV: B2lPRq(2IDw B 98r;w\5I?vB7jª=l Uit .= ƴҘWOBte.񭹈]hA#0_!sKT@cs|< ip3< hl"җ9t%0=5i6@L({|"l|=ZT--,Y}זTAn/ UoL.BF̎@8/#N&%eDže|Ԛ.priK_>lUiKǍAn8=7.,& kӂt| +ħorF0M~5\R,h#׉|)wm!dTсZQ@H}>5e,$˂%vףmAXWcZ4;P͖텺GօB>b5FJ,$&#j@Ovlc/oY^PkSGWE>+W5*r,$D{uU|8kbېYYDʎPōEG=֊?5,@$X=tkSbSX>O?FA =^4Ռ~,o$b؃ԅ.tuYjauߙXDǗ6O.̔FY֒&=j4,X4D$iK}sTj(aWfNݔoF=74ʎ,Fz$n8p)igCk]mT֤okK٠qnCs:;u1zWw)"y!"{*~ pof˫nq][rTsKuzBw:%x1Kz^)N| !t}>;oIufM(v]-,wT%hxuKLy{Bz: {1V|)v~!0wpMnԭ%{de +{\|{S\|J}|B~~9~1sU)!*҇Dn<,2e-D\4&NSQsKJ\B@y9ΕB1) +"3n&/mLdCL[^RퟰfJRB59H1)̍["eJqP +m d5([]IRWJ TxAЗ91c)ą3"#pl2cZR>e=IšA 9koG1wه)<"}2nl"P`cDOZpQܝő*Iq#[AX~9@ꋾ1`W)닿&"Lj'sĄk{bΤÙ^Z-Q:I*A Y9x1K鋭)Ul"هŇG;jrk1pbbKYȠyQ?ɘIH6@󕦒81:0)"uX"fj]=l1TmLYLoDOq<|}4'~-W&9 2Ѐ^dϴ \4SΫ3K̀CܢHL-Ӂ&h w`9d})[鮾PSVKr|C{5Bku/3w$x :cɮfd2hhj9lpn`p%QfrBt^2v$x`c,De y\̉ŲOjjQ\]S}\5GMӔ>JB!Œ"-[&Ee}nΚߓ&g[)2FJπ]8R=iF) åGtXhkIf zA$x7Wthv c⡒ +ɄYh?:_Y/;g߽vtئʋc&;:Gqr4% .\!s2Vx4$B-Z3bN# 鶧Wff( pe]duNM8w)u O5cq ́Β޿&=5$(N%ve;dGJ H@)zJE0.0;Og!" J/ݗR̠$\xf+"wC3f= 5ЏэH|EÞBOKlJ+Ju~&8GpO`# DH& *;wt֩Ƅzmc"OIҥt~(sAH醰=+]꾏2}2ug HܼOx^U!.vR:PL$RXJ,y"5Dm*]7ZC- lP52C1vb AiU91KnJto(JzkG&,kWU}O(*g#uutSBF]z15ʈ(^N@ZYYhJtM(pD#j[fEْ[i*QHoh~;YxWmz,\T/ +9_HS:) pT"j<j9 aDAچ 3魿ʱ7x=rAlB)ɫENm &}԰LB{6c."OAS쩜Zi!CdF3$aY"Z-Z֧R|@T֭u]>X}A\}e:rZUT֧?y%8̓QJ/"\j݄`-yH%s9Q7mj+cEk3PwL)4›G^xtiE2sF-#m_ UZ +"Ͳ%v^yB$51o2|]e{ayhwl>],{"ѭdžޠh՚6US+ٓ' 91!8,͖~S}EsWWA"}~kLt2!AzoWp#5 k:"}T/oK(CHaKo j6{yA@:v`wg\N!Ɏ5BK;%fC>}u,#LB&' v6ѵAr^(Rv p2U"N nKݢJՀ"/՜rЛ:<ŃC &vh3@,aʁ=Q/&*4$1 ^obpO0/m_c@9_]~\Wl/i=稯k>S@_ň +G62A/1n`jk/I{nJl4bMu!>ĠkL噘f6OS\SDT3q(ږDVG{ۆIAU[Fu5X* +Uh S݉&PBs u/lk_ YZښGP[K Rڲrǐt)~L_ 2]Xrs. mIDԅ /A~i> .rYd܄˥ݑkۈu_]1 K'횜HՒx)l#梵!L45'6PU@PαzQ}Aa!*]]eIH駣 US݊hY蜉MO?+>_-mxPzE%u渱UD#:9ҬlOH+zx8T⼊D7iDVJ*M^4-"ktZ =OSZj YN}L#;Gl YY/)!CQLzC0 u>Fz>#e6^pV'Ӿ=k U Jh#OP> +V2Y X=EV~Ԝ"2ɣґrP|Wd9/W9Ht2 C fL;\3HyUqtU{zv:&2'|ςZZKSNDf }KJpZOFnd]񁄝6"$Ե K6BEZiki P+;YzkODx..C熇`ɷ שwb6s˥=4YC zSE}wV!f wY˽:+~^068=}9I]Ԓ>*s=L~}' (s_Z6㤯XzStIV-nW ̯Љ͎TAY~,4 ]ClP qA3qTTeR<,L!~ Lñii [g,DtσM0l!F)6|HD$2w@X9IRM"|a1a->wØu7 Ign+%cBKKKDɢA㣲n="5~'V}P׫r6'ksO]_ XCWJŜKu*P/NOdTEE\sWΑ?>($7_b#dۭS+QFABu.HUeqtu[;J K{8X;~2a Y{|)NWTjJ2;tKԓۣARqCorVV H4Lt +/ɜ/Ņ6+vuB^IH_2`qұb@"c4\w'61](c&jٯ +FRO0~MNM6Q꿭%'s(;oHuۈ_]s,ED9AKOǺY~6$\5\v6V[jݤ /p+?W9#]Nqlk̫lnMYb EτkkU +5xF +ݬX0Ăw푷Nئ?3,aDWc'rKSj=`-lrvÝN0Rty o.\kcn +3w:mA3CA +lY7p ی+`qCg!S3S@o3fL] $+,uHQW'<^bH,O;={B eX!0h~O?Ί +zC#?HF^r09qD {T+eHsxcƒ"p;mjp~y^Sl u_ } ßքWkMS1ЪNX4ީ 0hn>O֩xJgf~;5` "(9`~UEjAwpKXe})c2{G\]%/8e< ަxOpGS&r?Et|7Uv|/ +x'lz +Z|zUI~ahp`rXWsOGSuG v{?w6=y{/{ +'| st~ vxgLv_wW/mxN۝'yFzq>זs{m64|o/}v'~} {sgG-|T^|V\}eNw }Ff~I>~6ȒNL/''ތY cef1^zɁVNvNCF >o6/#k 'J!!1/RIfH^ +U󝮆GMњELV>D6焂/&Ʉ(!N[ey']/hUM̉E>m6N/!3(%:!r l&7e/ő?]){U)?M+E_*=ӊ6`n/(,!gTʄPd!=\ݔT̛Lޘ}.E"fb=O6A>/.(/$!-?yqd' +\UXT&LDF= +6)ٍ.̋L(2ȉ !܆*/_jeWigOj!Gѧdlb@Z"n93qK2s+wva$fKx{;R}z_EkW@m#OanGp@Fr91t2fv+*>x$zt |W~^yqVrAO s~Gt@,v[9(^w2=y+M"{5$|ƌ~G|^} vVFwRNۧix)GMoy@Vz%9/{62$ |T+i}y%$~ AW^ {VB"|7NI|GY}/?I}9+~]2*)+3%HHMStu]ԬV!N`QFl?h8VF21Y|+g%{BI]UϨ:FN.zF|?88ꘝ27+%׃^̉)A]NUaMFՇ?O8ח27+Ґ]%Ɍ;~!{\;.U@MٌF`?^)k8AY2.Z<+܏w%䋨 !)\TݒM#`F4S?n }^pI~8Nrr~{?t~0v~#x~`Յ]cטf$Yhy{jălFm ]:oSN/q9?\sށ0v)#Ax[+_Y-JbBӗzdghfyi͉FkUl0$\znMp?sC0uc#xw ^.Ťa&ra0u#r#we-];L`:c䆟eAx"h2ij[=mAeLo>rA0te#w7\vƢ_|hbW dwLgcij ZlL\oA6>Lqӌ0tte@#v򅫰[ɰ^۬;ad`vfhxiZ9l6L nԓy> qu20ht$ v)[2A^TaC̄6cvf ևWSZRq/G%MAX"V*.@$\YwvBB @ L"*ZzQ!"jj+U#>P{(Gr\SN ?}kl4'3LR4ZI+N-)a J"Ck٭}:enLj$;ZiXAs*_FȟK|gd!Ib ./՝((ƻYVN)ଚKPt\ +یي1<6@yp .%Aߑgc#T{7 'C&(oN"yCWzf6? 3fl*֫ *g#ͪ拂}tcQ5$Fף{+[ˁG"3+[uS:ۓaB!kq{AcY 5S+R7%hP&s Y1lzi|q2N{aI{#DÃSѢo,R,'<=\-#:3/ 0y0o ^=V608Y}EsHSgr$/265b` +*-^z>wbά 5 @BI@h  +GY/xP9=kA)`Ooi7Jn\&ZVCY# (HJbo*W.AИm~7?d~DG&)#6qS_NV.Rݶ@Z wH +/\5I@MRLlM1SzfOS%JGIr2*l\_DoF< 3zV_4xCׅeb:gR"-R(#MXRϙSNѝ냨7Cuuhi=gfs{x)sOoXq a)$O^T%Oӥ>E#F~mQf(|}'ݳzl9+ֲHB#~kKA))b%-(VaPV )߳ڸI:suiyP# +ls=/Wc.U/7EG@_}yy[1n,֒!+-'swAs#Q@U;.zHzX(z . 6d^fU*1)~"3Ma| O8W2f1VM_u:WFS$4%,;Fg{J_Љk8fi17 V@^zF?r5x7:TN|&EI3OAf{ ԯ~GrtL@˶aͶE8=$6"qx6\ KMÔ(YCB(_8zjEu|VȮE4z4O} ވ}Bj!ʹEyͼf2i-akVLpXeҨ!z3AX+la,.> ߭"x~ߐt84թ[JWiupMQ9HtS@%*ʩr + +!$!߻^N "⁴ckʊ*:Aԏ~E"jjƣܐRKLM'FgOUw򫕨ݎթv (~ThP hE}SCBwıyhMbh|Eyۿ{ 'W9} +Ud;'Uedxk*Z+4#[GmQȈu4;<ηVixǬ~Br%.~Z %s5*KM#DiUuTY ShQ/W,\"e͊ |o٣&cYA76#5cB폢dR{K[2\Vq +sQ#ܢ|X1 7;;`RuX|ې5:ayhEDE;U^͞#j1:qB~CIou#߂ɸ`f%vpH gS`0Rc~F x*{-/n#\4D%.C.@`#8H +>(~,E납ew ̫\ HәA5"1E E 1L} ܨRc])j$.B'X!>Վuٱq 14+qD:xt9PDfԈu5dmNuƖ+b1q8>vX~Gi6^NބnHg˛L%UC vUۅfV[SeX"pI@і6*mR1ez/6.K+}bP>P+ l'0[3>LEEӴ+WF]eT }h̽$e<I$~V^mqa>aT+.Pba%8NWv4>XE{]њ";/(>D7Z!KK3!XJO)"A1}:+좭ۇ" ZLF~vr5)VԀޤZ܃JMc;‘yd-M:}'DDžm'ա=,NX1P@sWµ{Z5Ni0җ9n0mpxp?ggz4>g4E^Ji[!h~ CAx>0o[>285{iW. Hn |l}e!vm)6^v|#}?WkRS2;cU^/1?1JܶQ5~CĨ9GA3lw@-d_Wo')*T [.ډJMKmVn v{UO}s^9zb!*2ke2ܷf<1BmP ר7!~^lZtU(WO'ޥަrƓن*eAu3hw7 }}h9ǸUOqlZzn*d|i̬$,-g#-NkT@4l76sOx#7:bYCd7|.G8%~^JtG}kq5:H̤Z,4 +|ɿx7JsL.ԗS8mԑ8U4YKI}Z*Jo8Y\j. j iVQ O‰G%}_;oEˎvfYj7͜Õ{cz-9Lh5jg94|@[_tHG8悦FTS%5.u%kZ>2묊Cк|9k0S/LQz^Z(Jמ`i(4l// ; YYdX.cp7i :,s0#3мb ,n 7엠i)N9"C3/\/s3Ⱦ)pXx +Ǽ*qk4ߗ>+ 4'TADJ\UibJ(⩺dCW.nLTC--:]ўK$YDC}gF(-&lP( x>>54 b䬦_[Gl]3 41Έ"aWB+ {Q &6h5}$GN\P~y;$,1O؁F.0ViΪ+Q :QJkٱH4a s-E$."0tgU,aҶ@H#$ͽ[Wmߝn3 >_\+Tf! Jt-I;7ĕVnE펕;muTucf)LD|bejo0<4/ODzCC.I5 G.j޸>7Ʋ,J;i% %K7䰸GXٳ +d5,ɛ +ʱIT^bkKW֛iqƐv{Ÿt˝56..+YCI>f~h|s +) ~'mT5rKv'7SS9Y&$k"+!i+2? +9G 0>YK/6>0# +ˍG\v"ZmYYk9C$q7{/'9tfLv̥o$b]|'z4&dR+ zEгWmSy3e]}\9< V'ƛɒV:},Ȍ~&~` _|Xi}P.~Ic~oB~:T3̎g,ԋǀ<&?/$[__$XEPFTI JAғH:ѐPK3J,ߋH&^L T:Ăb^으;WPDnHڔ܆A?:93,vC&t F|iqC^8W3@O喡HAf:.3e5,މ܆7&`H ej؃^+V͘ +OHPbA4A:ca3܉x,ىX&憔 }Gł/]Vs1OP`HԐA ^:G]3ulq,Ԉ& C9YfaOQcJflC`Qi<~xk5뛔n/Kq(ݔt"ѐ]wz z*`|X[fQhJSCkC8mRgirvgitFhl?uYnwK q+x[OxP GbwdS}Z^()|g-bf&Cu%l񑍪o,lIP]0{mq^tQ!P^wI:lWM" :q\Z8Nm$ +dsKdۇkka3[{1LRȐ%x%]-']{X [ʵ3qiQ(.з?&{53KDX9)dgcsKU%LM7aIf}.{#;3%sܷG44&r!hW.5%+:HՌdW?P +:nE@RCPY"W`=]ߚ~Jؔ #V9`E2ECup}o~AdRY.uENJR֘^@័Kƅ*a8_T%x^bs2hΉkw%He𞬱bF{ŏ4|aZb]~lCXqYEdk +-=HN9O|F >S*~K9v׭!A0~q{s,sJUKm=c7%!5vȗ ~PQNηBm-^k:_'Cv>9D2ߡ +"J²y;Iw +!y{X*HL Ka" hzN7wI${{Pvx_u<=l.rX"|=SݒY¡Q٨8"o@HЍUơCt+CBQ'V`j/dSʪ2QtOy&!_$T +'! + ˉC46#}dzUۨ{NjH~|IW^GOYVѬvCK4z|D?N1[+-'b@6 +&\a> +UuPK]A\ +uXn2cHmeա@eHz0B|C1ocHlSDŽ[^^fw!#QwBqDg|mc[N. M`MGYDq'tLQ_U#=S{ a63^Vi*פ;6^DاL`RKVi{Iᵝ)Ҥ"k ĵz)Q35IL9sUn#LqK:c1huvtf[Ŋf97xE*}"=9+"q\+n8Wh}oϸ+tKyIoe>jJK٪8$^V{2pkN|zNU=DY6Q" Y**#l!!2~ aqhJkqVQx,z EEʝJ9yIyj0`ɨ4ȳ+?T&uKjOQZL +߬M;D=-XB"mNx2P_,V"'G9IDLj{d.-lim + N+hO.}iX *)ۉ.{KJ9N5P MA;@YoD(v\)ӾB?wq⫔X; <& %`(A`j7}LzXR$+;ܐ3P{ fH:: X+@ `#פ_hyX4uE㏺Qm٫˪,nî]35LUdL2hoE'l9?1͜.!r +{"ك/tysFiɤ3tDW{ju pro +<]5ǚLGfwr =dnﻓ4< Y\d(*)a s^\ml!7{Zެh s1\^XKsUMDװFBϲXo,bzq¦`?WizƖ/Rg= +Ә185sCݜxqjVD2z +FnX c6Zf#:)dbHA7aFJhA aV8 76clhF4,FvCM3zNE>6"{ +4 B.ǬHȫă'ƭC$jUA#Idr_hq7J:+ؒ4B]kNGFo?=:f-#,^9; )0.W"%׋A<mܿ s:67b'#ugUZW| +?E[aHŝ޶ɢTmAMRr/;WZXÿ5.㐘oqSy0s۹^k*TsR.ZJuRj|" \û6ywA|+W^=etѮe>Y3qO?5_1.o}bbG 'Jjx`n+}͏i%|rImx<~#7 +GB$}؉X\+crҨo$ Z}jd,]LAM qqZg}ldR4U,:K^$FB|\2Rn5ëQMA:f hzW{*ԝ"ɦw,¤}P 㚂X ]_8IA%tC] UQM׊ 13$}':n|cc@P#*;`=+pwy/;aX`DE&Q0)z·SoE8AcP<_IS4AxP{jLltݙ: 2L!d!\~&h~( w cAg1 II8Lvpː@KI֚=qㅘݐco( zuvÿ>G>)@Zw]miT7$Rb s(GV)A! omlA*Kȟ)v0${UZ,LJ*mr2E$eJ~` M26iPmW%jW Jt;;^^֐o;X$1r;^ qtkX#aBZ&rν-R[E:ʃvG, +YI 5sk/D/Bkdʳjܤ$i贪!5wqz6V3VGfm?$Q݈NE"AU>eUv ?5wϚliT + c^ ]:Kߡ4v=Ot==yMB]TQД.A,_{qSу2I_\, +gMtҌcn8a <^I\O2Y#,c9x%>786(^MB< . 'ྐ1,Π a:=<B ꥖"H_8k2}dz:?@I%NAŭoؓ !l"FcÛ5 שPeB/A0 Ԕ|ZO%}(]^k5@A(E++]jOASE/\"W4xVi>VZ6k־.m~?cj2&e_rNB']M1׌:ַX2@+jB?ⳍ]/2ǘe=c{nЭ$>mלHeru\0GVG +}#]?`4pУL[aA@m FB-Sf撘;/t*X9KU?8kxNs#yu7D#z2Yαm%v(dHwo0)>IL{r_ePk#Pewpo6J!7g*A8ٵ`QcYQ8Bew~>)2{p\bğ?lk#y(C ^e"F<iRy|"z_W$_lek, u2%*Bq9GV+v$v`>Mj!"r}ۈ.W4 1(;Z#eEw~c~j nMg6#I{;ZȲ(TjnSUZYE x̂*pYrAW {L𝑻1R7IaTBGt^V؞׻`*8􄉢 U^U_ +T)'@LSQ[]'4Ā㵺?n {b9^>2~V_ M֢5\lp[>:y[^=NGk3!:]U\>7 :"\vO(M3 ț4Y^fҦ 66DaxNⷯ6ӣB Vݩ4^&ԡkUyiU2i4)׌rI|CqA&znCTD_aMv_r.U;J6y¾z#qWO_"\8jE`q~a@p/V0 GR*Z/?#?)QTEdDTPQ.,&Sk +;b $YR,K'hq-hו,ilݴlt<3JЛ U'K@33b1PG1?ͻ5$ubpyuNX1˂4yi@ mFا |=ߑ -u`#]-;X1)fm"m*(XB~; Pef^UB8}X UADޮqeF@d35Mޭ_GuUEƬ:Tľ;U.'Ur87LdW8 +6FRAלk0} ΄ +cb7i|h!WnB;'76.snWt_ŐuD*)f%B'QP6xOgTm܏٭ +[n ]{*c{fai@$4 +}c(<;ڳe>kF[do//%x4!Lm"bPDK$`3]2~'ѽw`ÍR/%ci~6t81` ȉM菴5{S5E:I]Wm. _3kqq}Op=T,.oaXs&YQo&&CrNp?bV6-~aU*'AW3x/Urs%0(%bŧX0X,kUNSc$>ZH"ZrO3yc"AJń&C\iRKXo" jS SӢUeybtDN$~݋Y)|W7 IbYdO.Q"^QkVe(kePڒkdޑ_ +zpja2 +|FJnJzTs@9>P\SSǟ#US: rgUn}9(*P!+bȽ㰟 iWS@P[Q6YD "EDPB{yKH0`Z:ֵG6QaseUDK]Rg=>g|.뷛!_mŷD7l_>fmTNԬhGR`|˘8vqhhZ~du禺sʮw`+N_P8Ev] +IAZ1麣OCbs`]XMzƝ-G.jܔ4ߒ2~u,xLՙ,t7qmtbn!/r8xN{$sH%rOǝ1uЛhӓQ4vl@ͬXyꃂ8qM|띗y@?w[PbdP]O +-N}\Vf#xΓ!#J}fk&?'è8~rFo[U/oڣ"iȦTp90gKD +'^Q @uRt+)PP(jpC{XN!ztZ%0r딵GT q>;2Z5JݨQ$^ MdD Ə } + %ڂg9,5G%. +zݤ4LJ+P3ldJFb7Ykk ̉—ƅذSeSBmTBn^xƳij?,3ޏ*Dϙs ㇆ զ%mQ +G YJw\eo> R\9hyuOtAϑ-S?ԧ͚I8ӈņq$6|5[>21QJ8SkU %Uthn|$=-x$ ._D",V9 +D`Ue27Du*5 ),,RgS~5~W\vŕbhTf1~ђ[Y˨tN su !0}p5u(ւZZWQјD$mA AF@dF3 웻Wn]@.p@q{GxOEzjU + Q%O ܖzX)4xpmI]Bx% `0 QCX\{^|lT jB"5'Ɩ #äA4UYH?vB觲w0-C_ܬMm z* K@=)z=SlŭE;HJB{zL,LuߦݲCcұ bU LMn0cbhZfҭW|zz6%vSE0ٿ`=-+`,Eg¯V-/lt-]9zYw$[sQ=Uh;u?@ҖKX1Oai;[dUf yDfA:X?S=;4~p}S =6, @PLTQYJz(M4%!eDIT%-淌R/ک_uv~[Kg"h?RK{ŻEDln(U Fmá'Q5;Bu*`('pU~r" +}T"-ܒTuFM4&uz)b.'#^ ?bW;FMH9G,/K<ԧD!h0-=g& {|?'߉بX`/8:3Ш? _G~BaQ/dsBMXsz#$D/Ac4 = +XJdIGpo*"8flq%9j|{O"4>0SeV + bTe'̃U_DOnE5T/ˡ^r~|nU#ӥAmLwvKPBql3GB'+NM&V،7 I􁩌i_J-8: +LXV̐f,6 Rs/^Lg% /+qӺ/jZ_VI2E`Rxt$ǭ-ew&`voZ2Vs{gݲi2}zC|agex^,kz yeﴻ;֙L9@;Ö./zǷ:֦yXo'm2'2o|N0jٷK2ƠLÇ7ɹSd.)\?`T Xacb`A&ާɴ^|cN&g(tGy*Tщ,zK0ݠ8J縣D~!i +@Gx sTYHY_SJ%)=گ=qdQCCzRKJVn-3EzIvЙ"Xl=! 9䳁p,٣T 1T7ׅ,dv 9hI# + l$h8G RʵI%\ +hA͘<>\F  x #U33!̽Ttt|Lw}.Zyx)_4 ib _uT3IB+f"ݑ֎he{Y +_ky<81xO.VHSݝx[EGݎ ⷈrڿPg1[Kq_C]ӄt z4bk2O! +sH9?iRFCiӚmq +-Zuk,JQxl (Qq5,2ԓ`!MnpUE\I @IXʅd?\0rlZN&'C8n- ]pXTHw)'׃wE~".1cSuc'^EqKaIc>S.-,xE g9}IΆg CY%J?^ `aYZCdq,P2c"<3D/* ē7g> gl;߅ǿI_11agV"\ZSxutlY+ٸ3L[{1V*M6ך]QhTV)>In7ަpÌЙq4]ƛҢe= [%Qv!}5sk)Ea9>O'pwf;Ӗ6X:+c-|ߚ?#R1ުQz)ȍhh.GpϤ7:C\YκZ&QD_EQ M Cƕ~lN&ev>/ )6t!9g1M5IAES]8+x4g6=Go*286BW7h/qB_1\MNzHA;-) lzIj r)K܁ +(i"5 _%_z; +֏R=e*IAߋx`=U'pS6m`6_(77 B42_TNC1ȋQip77\=(6R<}c勞8WPH&#mOU"mIEIPiS>8 +Ndj3'yKҽ.RCG3>LMnڒ3p]AK̂B:vgHk+cZ[ZMU\)ɝeL61y^W,hg':ί k?]!g;R5XO7K+Zz5N(MKQwn-7(vXsUI۴ZVWqW:;V~BַeM_xzZV0QǞ=5&uò k9޸5ObLku^'SVD&97DVꁎI9/sQl=(`מTR,4E15n<ùN7TגZꆢ4BG29?,V \fSޮv}E:6*Cܼ@ms4ƷX̏ܔ 7%*S)^ղcD7 "x'9>M,Γ-l)Rn}F쉗YXR_AdIT]F}E w_`,uk<rWP`g +o 崉{\%D3ٟCnqNFyNHG8=}A8@h#~E'8or7GJ< W|:fz_SLf:[CPknEmhTe[8I3/k@@У=-WeDȐDECy!:y(mW~ +B8WZZ@G﾿cd'=KM"]]r/|G1uD;~pR|ڝD\p2d~!=♓o1`YPvV1rX zGҺ{M0hxQ.1#O{~\iU@~zX +A/iZKowϰ ~<͍BnJ2Y,c}Pt6mixJs-@/5午PyHH+4u +Ҿ xkyܕ6>.(+O>Jy=uTm 'a!:m\XYjH89}LlKOrOύVŇ:Om Y)ֈ@9n9%_dn3W|YPُj mV%tkd 0و'I v8ZԻ +6z_zjZ36hSios8)v~MBo=ff#CM SFE wFߕYfnr6#~r02&Dzk6# MH>* g<栜s!t> ZA)v B.ELUa+ }- +|yEH6#f ׼3_i/LoJf!ЕHVE&ħ:QM.Adh>NN8 +%q-~A";&0}[e?j\N<WJ6R$ ', 56ϺOe\s|wbn*?Zh5#*p)ꍌ%z]]A+to>gL +k+مY0ROnO+g'mf`+4@Yё&cba%n,qxvzЯlyB*ߓ͗=X˟R``\1YUt6xKy{QpE192>OP$zzDF+䷜(q7΃pf(fWyQWsi"nL "VJ =CƆkgDX_=%c%R<ߜG1s*oLX~]ij-xY"S Z_aCn S[Ptm]p)Um'A0THz WOfbʂ~fJK-BjK*W=?/Ľpo#\-2gEN\D(| JMMs ˡ]n֤C3@C)Cp'L|z\.9mQ7G"p3j4$4>FK7;cḺ܌q6>(9*E7S-ꢽ+fSv8r; .-%ÌYR#VyH5#"|{)Rs:1AetoT-RF_]rw+ji  lj$Onj2"JsPD @ h IHBK򒼼$rU)8Z-PGQA夶shUb]'ZZF|E{AUysNOײi{vlTʺa X˞‹\}ĜkF{ڬ;BjDj 0V)!"}Lo+-]YaOpBΕ*^{t׾ X1f{:v%aVe|k~[kmq,mTKm`QmQU<5R> +b+Uj c +<*j\GQP;Vd?x(K`W=ac~U\eNÛɁ/v\V3jbӺ TUoOƷug5Iʦ˜}e#hNm1,GfRStZdVm.H ہ6~Zgu\"T#ض p>GoAP > טLÕ4CKv^24P+tޤc4/f|l>څ -D` +˺.&OS'ku[Q0&4b'scmIU-5Mli6>VPwGV2b +T}GJ}u0Kd^Ӎ8N'5Zn8߰{7ф =gҝu=uW=JKjv^ԥj{ +䅓 779 +MEƪc3Yc VVLݵMo!bϫoN>Aij?* +ꧡo?a!IaN$n'Jd=ɓd!P3J)4#2Mnݎ`eM ik䈎W|dW]+Cy2S1L,1-ğ6](`~Dر;ZRW.M{䣼ݰ/n,Udx^m%F=)XESp?n^FBjB HT +qM@f1.1d"DŽc.%I$M7)\gX ߇n#鍆/qf3ix!^sr +𧎙q{hWwl$C ;GI8uhSfFb63Fh,yi] ɦ#U:}<3y{A9²+鄡2ۚ!G!-۴^Vi]@c΍,eF0ѕf.&[U?f\<Yvaτ0xyNBX?u!hkmOU[TGā||)gB`O+e=(8)7:!E}jlc)MmH;Լ&Πwj#1-ۅg<森ڙN4tkćͭq% @`Ŀ lK,aKW:b +eŖZF{ϵx2댘Q鸟JKƥN~' cp38mkm3gHLJ%Ģ7"M1CL⊼0e ߰0.yPJ-O{ݧ-!垊a],1ڧuqf\ +%azr.` $o>B7xevm >Y`վ` +Ь]Ȉd3t@WLGo(I^@x7ZcS<1U\pH)tEɚMdYj0  9N,O%&#w31ukm3ScE~|%2ˠ~aWU_QK\>BV|rEgmO`a#LghjҰ br|m b!02?cTnbUKst9ҴKWS Iy*ȫ1+!WJ +֡GOxLbFSV]6{ΌL0'EQV3ϴ ޲Ղbd9aulg~5غj:[rFS~n9:`ݙfk];h`ӐPDV7ܨg14.Rl7ָmʜ4J|hK׿7meMw]%ލ4`a!K]j5r-S8ԭV&E,4pVTNҵ'/9x +$PY4lw#6ScTBbpRn~/{R3҉@k1C{"c&l$$ >a$S 6p P%/6r:0,%*&#*rnAJ Izڠx$5 f89к +O =Rke;a.1FdCѧRܗ;@ +R5'w=e[Aar?k\bqĘJ-qSPȶdQ9,Hp7|/p[I.F{ڲ< ZB%cqGGb OYmq^<"9X֜ZA,&4> ^ΥkNH$]zKY"Ccu#ĸ3Zl$ +ݳ )BN33nqPQ٬Qp,6S--B1 I=?j9*̯ϼLV(.**-Y?*ͻj%ȶJ:g>̕iR6~n 6]8;[N"K/<.eA7)UW}:sl'0%rƋWXf7& +iPǕs)zVq?>3igefALL2(rSfrenU.^C#rP T94tSMVj.~BG+W.mKMsFH* qĐZ§'r4D+-qb@T 0'G:mh05)I D`J `P! AB z;GJt"oz+VDDkx;P'DU|z!ϑ xG[e$]ov^Xgo ŋA(XP9!~[Sȏ6>ji6if.@}!Z"5kAO䶸< ( ˳B1/ΏpV[jYH[ICmqA|h{"DS<]98%C}2_b-MN?ìt΢lky).mGl,JPN_ 3uuꓴnze[g8E(+2@. tr_4Fdf5g /Y)m't닶+nbE;aBG`i拪A>E/iG,?m"keʟܞ)]^y%bRZ+{%jP$:nQ+2ƲժVM1ת ˲# +ZQˎPUY 9bDM1 I;)sޢ.)w*ZHOB >G%,53=O3 + 2CȢˇɩDa@9I,5Ii- [%^’*z= +"=@w,k/ǿHb|By*!ò;$yU yqG=tQҦnUV5nyk/ C$, Lh +6(ev]%8h,H +4_(YH<*"iIEtH:Lp +)At} Ec:O(*}5?fV΀֘qx1vL6^ݖa {Zw܇/8$A[Y{ 򤶩_@~G܆rP;yN$KBka/r78h #~J_\u-2 ̊sc.'g'F+AZ %Ԟ _hp#8QBq (lk•_YƋkIw6vCB˱6L7On+l\SНP޴ku@lz#d}FwDP<]U,xxnR׭}ߑ7~5藤]k^5dN(;q,59 UNqChl* ,?dz=}eI5e*;|b]u`ꘇgstNE}oGvjӈ1V#RerWUg!^Q(0J~`j# N&̖$mfb'߂D_p=|Eة7k኱}*ۆ{3N-oc&)˨&GJoȘܻ !;:h\'xaSܐ\}%kg@` o:c@*ƩiJ$X+\=f~o$^sf:7` ]c?dDq|Rz:!wM9n? /EW:N.65,y ӿRQdֻFN s)w僄&g#5;nG!NH;rm,Ďhw1ϼA YX:8i`55nFQqp џ? Q2| [b{F}ewX2x ~z߉9cQVu W캑7p/<*s=et=I9IqM4uNŌ;f¨}Ozai`P6(gTtxEBÔXlE;F}D !s(-2h?m YLJyG2YgrObjr,5G%(E*}6Bωv׷&$E '//ֲ&u51>a9H̏qRZż%HSɆrL8w8Aͻ(=l$SߏQی!7 fe\0l!K/PZB͈~h3]V쓴4}Ou.kpmv|2V8f21^Z>yjo|H>ͬd^unj;0B- IU1m] Վ(OU.wp2 H1oY bҹO9N#tlGo4=l{RTx-҆.Q,un@Tj! fFJh6OkA9ه8Lg;5JvEi`ZHKzss ߥI<ĔvȎNػ~Jf)D'̹v<\sMIGK)eZ(}A{G)%SU!&C%yOc5ʃIz:-/&dFPEJgѾV⽼ߘY.yqCْL\Chi$WV5:t-z79ΨE /.d5ڜ)$>K^5Z5ؙfD.2#T^Bo MuY2dRG-N'ޠS`=2J7ʓ4$]}8q!i\ݫԶh#m4# .nW)Qڵi][SNv%p4M$;jIɴys 7glaKXW*hɤ&z&]gEnR=ğW{~@'/؟9Zp!Y +] 48~ p{+1\5,WJ]-هe]t&qAq%͗A7!0n+0ap[y0p\^I 7཯y^E7vdd:Ź):` ૢܶeQ|Je.l^"&o/{ɻU7\@ +1]zAm2NUz^ A͡b,:aoRzėxuu g  c<32qVt]\OZZ8UPAO^pvin4DR~63WZZl6{*̄*#xRdR1`e6G}yoӯ#TLGc5O4P6XT5*e -GYSJt &t{<='MΉJelS^^A"EC &P^Y>UF3T8v +Mm_hJ.59RxWUNvHΘcDD?wRXNqW=T ʘn(tISݪ8~`B(柦Ym<fuҊ [aqEweZe^oJ\*N"JU=_!p1w +ςю9&x.ʐu#R_ܘ+lTY+u=iQF _\<7cf׵~&bs"4ɐHXia95e}qB_4m [aGDyB?Tldn庚6DŽZ|@ҐS'd}P!ud>OA%6x/TBK{%UVjo}B1fsKd~B4kL0Ie}tB[qN$ٯ5PzxAۚ4S!g9 ZeH:mq!W̌&ibj[@Lusfw! a@Pv_ +?z! `*a6Rz-Kz 4$l,@B'0;̀tV.^ ;TyQ͏rM։U#nI!H:V{$[% ŠC MkO#wa:b +I|M0#ԄQLic~}.IH!='VL"8Vܬbfn\tVZSLt]˳ 85OLOb~ vb˪8+9ua+6Myr]~Kh_m^M݂$7XEq.M7;l$ <1Wbz.(% ǮQ^?hyYE!eLQ +鶻;Hiԩ曞'KtLK]EA5BM y/?4 :ReL6|L.$?m ,JMGx ;C'2sPP:T,V>]ikJr-ҥa uANx?ty ױ|UQZQVy[(˰ڔ㩗n3񷠃!x"l[j#1N- ~~Evc'gcKj"0נ e +BF4v{DRMӶ?.kNo\2[Iసj _ ];6=hXCR0_.Tq7 O^Lp‰A1:vZ!׈}[J1EBԩ8xlr,<@&”pC"4&|uCˠwX-17k_*´TKVFB&GH:fq%_[pBa-sty 'vkm9RO2kW=ʒ/hIaTc6p×٠0 +.{vm5+m _TS4[Юpney_iܑ|P}[ ?ߠǛ?|HB} esWpXMzJZ*ȫϕZ ?V+%&}@\`o +cڠ\w8{>%5ۥ3Β'WSe2Ī^nL.W*0K.% {vS -ބ={Xg8Sۊ0bh/NR5I|enOzRd[|ȟ .D6*^ݩtE|xUB.QP +ڂF34ZiMsy5uL](I{`E3cAfLD19  {H!z㚭2?sn]e!] +MpY"= +&_OQo[*B,lQPq>߈>tm# 4b%xٌO~H>pA-C$+:prˈ{q'P|Av1:ϋ +xp]YYz'Hךu9tIdKQF:"_k?-l1 +|AbUnWWlcZPgϣ/Xl`M"CmZtm-o .xNz*eOSaHñᆪE׎' YJG{D >-:Ȥ= &.rJY[XZ"C=N}sm,!t!,!aYz<oEUE8.ėV{F6)ͶSjYz_3j>浛netdqUd\XzX2(*#TznuVfgA״->禲 }DkyguZUk+2֑#۔k$唛zuH'Lӌ37{25;G7gLjU=eX/͔'ŻI%'Az%mAz19}B)w5Zь7H~8)5N}śg,D;Y4Ss$&""!(5FXSM\Ks_` ۀ^kq~/EB||tR=Eeޕrm@Q\xz( .Bva˰yĜ8\I'RݧpYl"\OI`.-ĉܸLU &T_Fw!0Oigc=T]kҷw0!5@c[2ũP#-F$,=gx-Χ|߆xSeÅg>ؚ<hx7Ӑ d^U1MHBBƷwZP<,ѳ޵*uE󔺽Z7u@ջ_5M4^^;J +u+.n2-^ժtB!mwRoh6u>h/jT*/WQS%ƧIRY'XǹSTz{v`A *s9&V1~zv_>sYwMք7zywL{ߪMߑJѬj$9Y,\z5RH\NgJ:2M8o96˚L-\eH#oɮn/'b0Δ?r.f2帢HY.}oǹ::Z-G sC̰$D=VX@t8? rf.F& c(8|iB5:1`ڬ@Y.+~Ģm`lJ<&lƛ lD=KxCToYjøuZDCˎL +v$7OPp +>/uY3}]zTk/-j.tDq ȓϡt$E4 `;Qs"(v'vpzsHh(R+ ɗQC|DEQ!^!x[&TiPgzI8eXAԟ$GJ/bȄ4S׏!޴<BMq=jRԈ3Pr5Pi62c-ڂL<({ͣҦXkm"p\O_m}6QT;/0;@ B1tEş>l{B~1'/R6u%(w6z @A]:몺,籚f5q" BJ@?4pQLIóasa + ϪPw8=j vcfӓޏK-1=Jh[Uc̀y@DT{#(+@G!ʤ]ilj&6`ISdUKaGK@N3Itn|Z*(jW\_*N + )ԵV]'j"4SҗZh ȨTWGFv:GC0"|KLF~C@LdH!B#ZG[1=O-q7kYѪX0ت5 +Z4]n5] ?}X?f .w;m=řq-maacsUˆc$cGmN?9>j1ޖ*_5P\Un5yHָ?D +hs8EgƝ勢F/]*=kl6N²SE^fKCC3Lc՟+=rwAcOm.[f$uDgPzI QĆ+[Sκu2s˶Z̷sAm:˵Er̡>D#B:4">#Cj2Ke>計 +:;:3XFJ^$t%8"MAN +!BbB/RHOsvv؝=q={92Si@b"S#]]B1;K: ߭Z:܃6d]䅨:fFm_vTw:W;d {@P\45>hz"΍"m;(:`X{ ;X>|\}- +R_"7-HUV75FO (C\RMHcہ=Hak@);hkjOh4ipdCf,/;^*YVSEev_zڿ|n6or_{T@]C_CG;zOhSΜ=w /_r욹uk۟o{xz + +  pNݤ{~Q̬'9<}l?b`r۽Y{8γtE9]@A&nFIA>k@%LՕ''+AiPAiP`bX Ka$ù= Ux{^5$_~)n&F +Iq.6aJS4>a X2kdk0ɍW|Md +۫څPI%j[LnJ$S4w#-F$ɥp7prb_ 7T\JP 񆉿="d*d\1Nw2+Ψ! b7ϙ%40Ĝp);XMBQdQ438 i34l)ߞ jtb8B3D̢EJq 2rG/"N)'b"2ovS,a}XdA9\UGЩ>%n==hF x[sd[pasMcf%aq ƈ$jT!%b))bTI+ӋDs +wT)՝dύC4UՄRb<=*L֟M T4r|d']eXD,⺺.>n1,aؐi5 ^%; +o{ńzrh![f (WN-Qͽ'fAV %4&a!Rvps>+5:#ؕV4O)ֳ&.ˮ@LZi1͑P!؅j}9>4OKJok2˿MUU]k0hzտ9g%/bgLȝ'pgYiْuWҜs0%c>-gg4( JҠ4( |prP\#Gy$7L}F~T0MR~"EmEYD~_9x2l0> N>Q1r=3{]8`RL(,7's7=ggPȊ{K--#s +U0A)ׄ.|LhmCsfbOvڴә>t3v7igfh&/[ 'DP#\r + + +(j<Lԇ<|Tϫš ~s&q]Ӂ?aE9 ܘM~}Uw l.kfEz崚Y`UnRmJ3~]~p ;ύĽGob$ eyȩΐrG,|V^hȔ B7nHtŁ s#DQ)g'扜a*_T ,B)bExfræ> `}<şòx!$Zē&(j赹!̑ο5k &̟qЬВ}qX!p:ui3SYJ*O'Q<{(wI\nc:| ݼ8Ğpa=YHYCs3)3֧c0D ,{8ۉ(q6T/ :x>c^PqP%4B֘y +]DLE]9d:0'A.p~}$ rF_ e0>DUm\:zf& ZiNV2.7)yȳ@uq8l K @"h2Um8ՈCklP]/xos|}~a{q8܃\Wiǀ-7ٺ!XhhD2in8XQ +uι)mw}AʽWïk q|>N:;ĪkGc_tRe m;?x}w"yNhxeXڹ_$Yp;3ns0)#(U&Z] ԉcjێݱGW'˴Ν$× z3a"5Z.** A|]\)(rn {m_-l#@zp7]Dz^Ӷ묚{F.=#,<}90Ag,p1'/vOzWر-70c(KdGFE:qwrlǵ,c[<@xKqXI֍$D+b{n+3mؽ3o A8"MUHƲ!*s~MDW񲎉fMx2H" fY|9@˥OZ]q" ?AWuϠ2,!źY@n@~Bh(IPɖ)Ɯ?R?7 /dhXz38pS ~9G[> pXX7IU$sDS2ט*}4 )ݹ]:{JE_AЭPGশ(1߈M`1Q9Ul5y"G] \]C^zi[~AȦWamԛ"哑(%ey5Z&e|$]V1*6QEitϥnr䲓r5{=/y Q|ޟSfEhd[93M4 Ia2 +O0`گ~tݗ{wy9yKNȞ#7\۾gf/vٻdo> +ҦD{T4,7p(Y  S Gwi_9vl;xj Jrk22S͛?ÏkB`V0 #Gn|l'[k;p bR߸P6݊HkpKku  hhH3 +w Ya va;o]V +\x5pF3N9ionlңD+ [_ZuY^ Z \{W?F\;Wk^ p c'7 G7[=۔Ԁ{T|-(-o@W敿'Pр}–jM%) 윾t|S|jr>^5OlRΧ )]1I C4u2XDzEr2${ ϧ*ؠsvHmy"QMR$*m2l (:Gz#V@kk +ZLJiBm? Åw{ @I:F +cw[6y+E,_( +GJ47f @?L{ +[]E@{hFPܹ("LI-}ӊ9d23]X?à zmva7  =E:_ 0 BŝÈHʑq$qkCHjNk1{_TPUtP3(/tQ0&`Cd(ĞIBSN"߶Rl4~д JY2{ʡR$-3K\kC&86d\❁HǜOaOeQ7ز y|r7eh!uXي*N\B7U^1)X%MS,b@&OoЊ 9aN!cY+Ӄ)^\LdN˓Zub|St͕4s祬ڧ?c-dӯ \ B>>uDR60UUB]`Oe)]BH+'Kzg(yZQm--gYJ3p 24A#ΤΠT@Dk%4[lau +`%m'l:C.ְf +Vz{N2==pҁIBRDWuXÄf:X٥Ӡ3=fiuۙLn-H$ +g gWB $ ! \ "_fӗ]_3;zm)Xښ6Ӕ9?Mᰦrؓy!C3d໺J=Ƞwȍ^rHp,hh*5yRcӛeqi턑 QY\)]sM8W};uҰK(q%k1J"=G";A#!r7@i#2p!ḫrsqCX<3ޣUU@&o&˜"4ك}ш{LŏRj#k|G]lj\P57v+K[ʟ MI FOB{辔)>P0TK|RcM w{;>b\v7<,>9_L PF5aIZ0V4LƍtFuZ= ڮluœ&w' 1*\e0g@& jp&Y][۸I-)bsR|)j1c1ձڱmW&+UDҔV? U!C ##@c4עi͒|%H"V$qEbl475R*3U*` 6ZjimL+:2}2N7ءϧ4ތswg]wvUW ] & Bt% ):BV t9"- E<_݋3#sgBe'cmm!4T3&pb?AF&V,HO TW\i6у]Ko2T3,( Ȉ[%K>cY ŒiliC/&"AzuWL ~ J [ew#L™f Z;KV<ܢ}^wK{"|1 핟?}=s_Woe204Ȇ+p% lF ܽ۾4a}<2;T˪]cӪ3^@b}7c޹,8Mc}8\r 2\ =vbwn|0 u6 Cob9n[lv[.[XuwX*$y⼣wSCik v +%@K S}r$˾bXZ%U/)FKx`x$^4 (Hq  >ƒ H] fV +ɏ$KDz%Q$[")eZ[Z5C- l K4!mR}A# \!RPv"!po7p+?e=<${%0p(]$%,DERbRV@/b4ǘ-VYOXR# 4LM 8Bx@:IHN 7VC,)Rr,QNחC!͊V#\]V+opƐaro Om>`3c3trU ճ6< nRv3uD^O @gҐlbO!1w|5}.ރj.z*ʞaH0" ! Vªzg R( +rǗwN51vD{zCf/Sfh S7ɽ.*`Jܛt%$n68>Mx.nO6/%Z|ZLfW>IOL3c1қd1R:^)S%);TLk +> +T@ 4xy4WkCiv~Vr-Zp0>KǖPx +UPѕwPrM!o)MPxK`!EzWghbߵ_.6QgdòXmVb ֦Ja: Ċnqrcکlu*:Dt(57Z%49B+O/ IQB)#5Qn<7*cemNO>USG!eJ-뫽P +Cԡ,^x}S*&>f1[C2QE5]aC`j*zUEFKYQ!fH{C8AݶR}&#iy q})6ZZTDΡluDbk +2E|H]0%ڀBPC48=lJN2o.ļ!dfp8zPmq/a,7;W8bی{_2 WR m#W664VP$T 5?{$l4wF.5}~)6ixymznC(%c̑k%ؒ!Jq`K@ t6p0}4Y=rqlD0*̭WwDۯӛbq~rm&_ddZ?T< (F\PjxNϾ.ĜmqgÄw{'5դ:<-QBj  +{C$u=!RY7E%{9Tfk7SΧ;M?p;>16ur>Jss QWZ{C!hŕZ@A2YR) tɵP\l;|ul._gn-<{5I)2s^.N𩎽Mh  l'KwV$}BW (Aȁo;ݷ*ۣ7-|0mr۳+6n%Lh"š`yRf0aIBװfd|$o?oYOEӠ (=*uBWr. x8yoc&k6FN.uUt"sř]5Z4M{H(~:Of~+%xęm@őPk'NzDOemBEeOJYE1bC8sY*Y|l"{6J +rm@ՑϠ׊KѬkT_V|p*0{*: =]vST~ѹ{q <.7G>^֜hbkזw"0;s.zfi@{ȸ-TҚU:a63l2:s#X" Hya\m@O6ܻGgϔ[ 8`h40"\㐈KQ-8+D  Tu454u=e IGt4mәTg>:7Μς3):?.7n\xcee缉st8mR71MOAmin.tٿdoq}*0=P8Xo8D.n`DB '0 qPX؅88#\mv0a;8 }]:۟{p@&|}4Fw)~Ł;rA>ygv4n;3۝:vۮu-r$p@EB$!!$@BBH g8EU*!}?N߆b_|><P8`M 3vbwzj #Bũ@zT"T'`[K"aC1 zԅ/3Ţ&2i?IFzCZ@iafB5ݶ;۶$,ʖ m+ro 11>^p#96.:򒌯XڼCn\*Ӆҕ5^ km6s!έXΟW$\/yŞvwe^؈8'tZ""A-IGÒwsY +$lœmGYZls +n.~VypYT|Y9_21U6+S{ ؈v0|\p1#ρ4.1?>|C_E+ =Ojj44N͍9Bz;Q>qf:j}~|x~Qp "Aehܦ[ϡ>%=.~UV-QXߢ]o. !8uc$Yv+1C1"2:c^'?W3§ +!5]Re e,\Qc(Mu'Ku㥣:WFY+tIq1!Z ; +? +M|]ɟotay9ڍ2MkʹLi$J0WM :nNZ}A N6NOJܺ.=iOFփΜۊ|UaI,,c6 +[?@n2[*US/eC3u!L]u_0/u a[5#&13>;:#+N^$IinEЌuEY3jQG-mQl2 \A^6Lss;}XU-<$pFe"[0`m3(e AcdP +o緯 ր@z 1`Ժ%%+:&%=ӛM,$ʮfNΥE,%Y[#l6akd9Ѐ}Y! +=ۖgɧQ!Δ/Yr϶jqeO3,wN&dpLZǰ1 (>?>;iM<_# ;K +UB +ٮ"a(ҸH(m9ʛlvoAbhD #U{``{h{T,DX59]B5A\?*5w +RPT[1Lhu ktpHܲE|:}'f]pyvCd6l8I@K-59lҚmFQK5-h蟡'//[9?޾}c"‡Ţ I9E8r3DTWȞ׃*>]a3\pNfLrƍނ& @ Gwξ:g˓ufuޏ +1}W|Za1ƃX:3;/Lzfsr-zЅLtb&g:.[м7r9]g|p/sv?[mk۪m3Vź(D c [%@B%]ƂPl.TbYDVYԢ]A%g.?0s.cG(geO9Oh"C.cr{n +nDէ:V ˽L-Pl15_]7~h)ܷ\L*&q7m !^CH s]1$@J9E]!shCPIP=ضvk&xEخ7g[ڷ.X39/}KvEM;ؓ* R#1G9ZX,*9>'Jru&A1pzo~޹cGafˋk8s+08PU$OX4>rW2&)ԗaIAy2T2)Pqҏ_`zƴܚE `MV`{L6$06^X/!ّ` v;a# X%tHH: $kp#2LiD5!ƅ|'< ,B-9HP +#IjTHXܒ/Qsm=uҧ+u̯'y`ʳr @"цVpD.nKfBor# +$VDʍTUUJHO3Roh-io<;.p@|=hY ^b6@`mvw BFDCHX|0ЕTjZH=:Z]Uhw1[_{)'XʡAv_Z#e 6Ģ =@xG =})txsǎ$D!Xh*VΣ>-vWk փN`C@h3\H! @$N 'AFW(ưWJ:{Y=<9R֔wC֤oz$]=ܝ9 +Wez6|"!mH +;kP9@E 6GEφ_''}T9/5>:͘QV]YޜV^O݈͝eA<S ɖ{A=YNMp,1 x' '#SC3~gǵOA`_< tz4yGv7Du܈^$ Ag+-@4x;!FA|gTQqH G` zE=' Cj +B/vp~+|(Qp;gA{q 6ģ qrb͡oED"qA&sYtv3YD8aZOTRn;WYt)i ++mVՕ Q{D[iCk1m/?^'\$_ hC®o rho eD2}\}.ŤsSP݊(5Du7jtףuWbZ~j-s&!ifP[} }P2VN/O r2Xfjx|Ycr\-ZRW/ cb/넷EM&)I >ί! +wD*xg%"ȿ(,)'JRP$EEUD'ΊkRY-io'4VVt˃d! mH|}E5aYq( Xfd,EzM( !@B -HDRC )8H 0]"u|[^gnw^/G`qhg/噘_GkILM)dX|~wWnuoGPԞ/Z . / +/6|1ۣ "1= ęA|lbbDF.Ji^ +gǧdVf׉xmlNOsaAr[RWԲԒj?l}/ |.16-)VT; + +q^64v,W՘vRRs")fWK+migTZZ>bvlq|Ǭ2*NTѳ]%gҫO4Wvs*y|evi*SY@+J'IYJ# F[f|8qGɻo !ae$]*;-fpSNWg4񛲺k2eJU긠M\-S$LS&+'3*&e|i 6hYNIiǃ^f=\VQTGmtv]Reyojّ)̖$5N -R]81hR$աj4 P6b kjhhΜ572e⑀ jLHdZPl)eByX}$x/SD.mLjbE=z3} m =[U`kmӯWunZ~;5Nt_%RZԴxd>$d0&MiG=Q(eSWJyn#ZylL;cĚm(3 BfXmz7i[w^:yx;mHxIi9E3 utUD\Cx0|<5ldkdC mi7F414ע Nm}_}>n}a2Oc-#ƃyYw,z{Zq+ y#͘G]]K ˪_ p^@/U!Wo +BgoVkz:PkLu~¬{te2P~f;lX&ۮ7cRO|֒_z@.uV +ʡ>e*{.y+&bީXZHzjCed»(WDk-k5o 뛷bWݒiUb=9g%]൒T@|O|\\ k*e#rG̍k#s둑U=D-`W<偽O*8ǁcT8у>?S}?2?0B cainS>5kt_ Z:[Ͱ{! \@ OB\<"Qᘈ ~Y,-f ~VeA@ _c~ +dec"巐T= Ō˻XEl!,Ƶ q<6Cۧ?^/2c"II<iJdYV/Z}=Ys cʹۚsםӉiKBm"6P~S4[Cq \\PbݯJ<) +͏ y{7ť{hlYQ}_|PHVR:ͤ_Meu$6_Mcm $[e5]A3xm/s{ r+ ?<>v5JI_ i;B#)Td,٤jԫm:j4}XUVU2**{k dBP߶']aG$D+W3K>3KBu]0JFVWzܦ=Tb0|n5Pr/F͏́;,a"qa=Ehez!":#aeYJLc`)tlm֖qjK9Z5{{LŽUj0m [e乮{/̾.X7OԜ>Rv"6hSM +&ir q+w]w`]uڮ@Kщ8w|8q2į;3NVqq`CXe26̚<&;]օnp'WOn}vb-W3/L/*-9*5TgmV5m]ۤ۷JlZrz +/M[ƂIp{yb.iFnN$?!Z|'jt;L}/9Fv|ٚB0lVY&I\kݔ^[ITm~_umD.}g檉 ZDR6L{cqGٖe K5U.ܓӭMkZVpd ~Xo +˹Zyw 6NN';;Ɠ:grIXOG{bTvS*ѥ4Ʋ,Yzb?r)8ME VV׎BV%3|VO{Xmӓ4G]Gjn'z .Q9Q1n06x i5T 0%ePxK~eɥІ6iw2&ʡM5*nB'X?nO :);V,X7x$redQv$'{X,x`iR!'@YiM(V'B!WHU9L`?m3ݿ߂e 8J aL",D @& E|1(QȑEP0lrL7~&EB$H!6߄Ybk<=LS'L +>R0) L*Xc" w8sC  ?9{i!d뀓S9_S :#Q3O1< a;x.FH|4") +5tjRQN @_T}{m ) N+@&c=|f +1c6 nIE<|^A]#"4a-0op¼ ٘ pV֡at+_l=+F g! Bh`YHXoq[vi_ 1-N9׀ZAbV5:oST6UϮ Q!ݑh d86R +q[R*HةuGt: YHC;l[]!SkF_ l{A 5:dB. +)*0:$5U6h۳Ac@O' GGRnߦ6ްg li6mG]Dܗ*Ӎ*!<(nQ c&B%`C!@+_檜 V;Ʒ)rSIyͪe6yOi^]P"|tP~ <7WHX(03(RCU,aN5ky%<<=bb3\5؄96io_t'y48dc< k|( +ca|0ӆU*ŐԨL[jy_vvtZ:ė% '6t_a4fTսBLOa񟇢o ƊhiyBlʐ#+0w.*_4}˒v'mcegZe{hkɻԫmW=KQAhP8c\ 8#ޮaQ^e]Y\S[Fq#YEwk|~^kS=)kMVUtI׹삾z ;2"( @Yr¡Ԙ%zrx_RKD*]Ou:ݜ{$ḛ6vf/sL(qu+{|~{׿oBxll,zELCГG\ \L@(23d i=ro rwo)-71o m-|:ʁ̀v;.K~gWgțĘalYԋbRGh](UHۣmQCVkz#f!.v!6uz76{Ow۾e#oE/0I6o#pݸ$R{ ~ash)ysـie1k,]< +7Ϯg}7ls8o2Ky/|g$ckȰn*ۖDHiƓZ,sp㪸UF6[?-rfYn7 $; @xGUWT];<`-*ijӪ 4E$\PD#u@Igr ߐ +pY1/'k;,;(;w}& LH/'QEI, /Te"H%d"iH'N$Oeb Yܣ6R.UviTٕC׏("aȚL,@+pZKRr9)*fY)4\'MyCVi=;Z,էs]?u]jU QUX|1`3$iav*#Gq)y JZ'gv(RCóh->Xў9~ҎJ[&̿&,ύiD8r.b3it:GATzB)6eJڐ~)Qy*m4gc,k5}kq:;nGW+ *)\lHgrl:b, YZM<URÊ|CNߐdo8LA__g5suGLk8硦j5JԅQ +å3);Yϣ1LYW7OUѼ!e gXa6duu ZtɛͻZ{|vjNik +‚# NUy 2-(P u8W.)U" Hi)GG,zm4iՇʝF[PæNojju߯k9QࡸZ> T$"TdBWKea0MVAfB .ƥuaH6ZhIx:]mŽm^.뗥M7 HF-2T"~A3QZ?"EZT`m 1?/lFR4eH2\[ hW54Qj[ 3is=s^υaP NcADn`=keo޽ hb4Τ߬}ńنZmc4Um 7@Sa=jU2|j{â~3O}OݰxJ`{5=v#(HCYCzDJkt-nnL4R +zj]5j8N9Ex#6HO| >#*Q{={l5>xChIe A}MFУ.#iMBeVZJ]x g>Ř>9s7|hhyR+N5_,_s̨!h@A-nA%&Fcf++VbV\#|.pߕ3NRzyqGAӗ1 L25"CS JI"$.#A-b$ rTSBP +\0JCA0?{vwN=0_ɛWHM[3 ZEJZz)R6KA.u%~Q󺬏D}#}uʇ@>>xB1 9M + I#*j{VN{fu/g{Vw_;[ieS4hKԷd57L#;x +|`J AAZ ʈVTdE^~y;M[־4dR[BܢT?7C(]FH:#^W.>r2̠C;#,!{1;a OթJĬ[KJ6K<==(.)t7Wr/ ?O9dgݑ톂@7GLxԙ^5G٩˞ ņ{;FM6 >oYnjײo/k^ռ;o?J2 M9yW-JxSK,3 [2oWKMWuKMj.d42՞4]3yjj-<6%gCO TW̙6sa sEͿ,[yӾPFoμQdT]+6\[ +T|2g-}̭[Gs/}Pz]lOsw8S\PP:MoMXåҸW,s%eE5=l8dX_qCΊy-{Ts۲+T5o1h\,#ﭙNkc\z_M{RB{uI"eNQsIBKۼ=*w寴(dm.hn36ڬ?^n-n.zՑ?3vwFxT+ެl= ¨+S5:afXrɶqUmk̝!un`jv5_m5rw#ZAĹzr-Ơk3oo.2wVtͫו6T-m^]zzU鹚5ueߑjOwCqG,j"19;Gܒah9w&E#PYҷvm?<kIűbaQ#jJeTѰGJi3Ai^53YxEcLJwLIned7R\jI5;^o`pglrEd0e^FE,QS6bԕBv-Wۼ [lB~LЙĘʔ +Nz.]\X)UfXՙ"auZѥԢ[UGTy'* ƫ(!YU?`3ZmӀݚ0c&wQmf(50ftaY1߾bL:v.9'^v"\ZtP+4쬠$LU*i}E ,;#SCF?`U +uKԐ$L\7,'wM?2|Yw5Zfn\虑'﹚P{fIf:87{'?g3}*4G;={/8|a,y `*@' +P+]6Hn^0{*yc/ǾA|G{?IZ Zy-Նz> x2}i-mi=D̟:p&@ x$ U'K_5Q.X~cg2jq_kwD׊߁7no~|] >~+'H0}hChz 5OdGyꚑJ5  ߵ}Nk.n\> t\#:E=`7ۃwW]>u|YvW&4Y`*Ҕ/_@#n௦}YZںs@#l1c0a)5f='2@~1suN|2i[qA{38-l-͑deAV&i,wb!07@>֛#_a  c@2ebPQ1 7'ouE--G!5ҷ@he`]dhcmD&Ź$ځhO +^$dL0| +*N*ָE5LP{.6B#h::h[UxmیZjxHKc5U0A,t،vhcff::Cm#dGBgbTvFg?t\BIUΘ`6f166LsNnrCn;*Jgnn}Kw%J]%z-G ڌhްܟ{[wQ /# +P^/S`5.uK{ryfb{Gr [S% QxضQzix\‚g;I3̄נ87Gр#)g#04DyEF+ +Pz@}JSdvq=V:g'q_ !GDRGHz0)=y?Jw>M>K7ש~z?>Li|~~!؃-zGډ0ꖱL=]DGS-;( f;ocV?!kidcn!Pl!p5/v ټxR^5Me8.K| 1̀|V)Uh`>8˼ +Ǽeu}`׃&9m+\SfgeVƣ\F׷bH'L@{̉euu.s]ȹTù94rn_}2m厇^;f"{Ye$To4­x<0O Up;)a7z^;7w5Rk =#v9"<Y8>Y/3 l b)267YٽI8PW?Rl'wkҐ~Z%~@x_.<_~LxZ$l!<q7DD_T}1G1Eb$ i 2篚E|(kU_I&e4/U\~-1#c"3D"s'" +qaq]TXEѨIm351#E#U? $9es y6X1S7;7yZuNw2׵qi9qqDq(Uz4&+6&_vXT&;$: k*Cy|䃼QD2D VlH]<{ֲwmm ~fy\HQ B|(N-;ST+cV$쉭M(6&I[vK+KʢBĮxSec{s!nf .)X9x팇7,ٷlz&3ؐ:"$ĕȵRYfR,_U,+W +d |%uzO+T&~ @d9Զ?~/[5M;JV|0b*5Ҙ$uRB0*5E&GQVf*ni>~@W oMb-fC v6Z4n)-rb{1->˚Xpꬨ=:ITV.S+r5LefڎtrozV<(ROڟQJ*_kMKsŶT`:RhoWng]dWOmUh {K˘nu^ݪW2#AէS& TuI|W{W^+SҕiJF])̑j%b,+K}hzwHS^f󹠜?S[ 5뮞iyjyot6[ktz=-8y>UQi'bmHZ<150e`o¼}ae{Êu +)\4r׻Utmws_Eậ9, )bMlct~}Bpݖ-][l/IZP¦U w74 nKMT4~?^ @w P{u Tu[ktQ:zMbib;BhPx[DDpkl֤֝9ۊckbۢ|oGnjQe.y@o_Pm(kv.cށ;R[n̤^¸?@РkQa6)} +.9s>-gϋ@1/! <)wPK,6ORZp.>08te\ S߫ xѷ׽嘆*/'g=\pw}7#)/U~spoWkAV;`}~A owd(^x/=_9].2`|T6T*st~!v~@$}J84.Vuz?\3p5aۆM;fsm}E۰+q8 ߇ģBXP8K pXx.OwHoUn;BgG:`Mvrφ?/_6ez{i:MH'`ƍ}%`3IXL&2Xj{l+v't*| 36WSGH\ D hmvfd"גb+ʬieO%[TZ`5&[Xb +<KJ (|A]Z +Ԟ 7KPPhfL2ڙ#)S+@zbeal 0P,\^3x @zѯB'@=Aa 5P{/!p.ճAC}k45f m|@JǺ8Ö`6nR I=5B1 $(3dK-A"Yq,dn%ld|G+e#$@V;LQ0I 1N"!3!ac Rr%Hy"L+$v&ȧ ӴFHv"KrJp_xq>2>*ȥJ#$o E(vD- +Yȋ$@!d&0" +'9n55ǫ'gyg/ *gZp3%|ƞE#$1*#ދ="DrXg , Q`aV4E]P@8B +/17%:,:Û7q'mq'Ǜ'cr̩|4y'u~ Qz57@g`,CO9lŗ@PެSpZUY[4!} ?:~VƤ5QF{sY'X~N;oP>'_BG9 o } 7U);YkC/4 +cAֵjUGjXB ,$$,@, -`TmpaТ#.z*L]+hթsMo{Ͻ?`AQ!_!JfAu/#_D~u"YـȫDkd] #???GB}!K/[7-01pH7 ;bAH^oQaϐaOE !DՄL4Oƴ?z{&h"J8z$>QXL=۱#0F/xp9c|ʒ6,߲-ٔеϘ()*3y+CG`ˣoQøu|+5G QW Kħ1 `i">C-={-/ o+wCc^e/ASiح[N0IFT_!1I&̅v^Y|+4e*2=I?NN*$[ _ q +vuN\fT+'2#MLM=fF]/RslB?pZB죚Z $x~MI'u$$M5#rx,Y J}>8[;G/o)6 Iw%"0\jCGdj;AkeюҚYc& z#mR=CҁX@uwi^Pc_*o~\N?c7\VwR +q<>+q-bf:9jല9'Y8:v- ]}6Y<= //l}e=[m=_o3x(kB.v[ҝ9Bh荩zsy^mJ5pוbKUx<,Է K`#zœֿX=ZMw˶:\/ T aˉĠL^"E*g+((7Jiłiz"/i:kVww)0s xYyǥ^~/UnBiS0~Ā =!F(<=_""!]+ +[qX#/шfѿ5yp!Hru|{=}p%c{EҸMz^oR}2PqL-edY2x@f%/2YBG[h]g[~A~.E Z0uk*(ᢅ]]fT&S*=nWJ|'"ϝXeW%*/mU?*ms#˹wNkTP5AyB'qra&kb|$I=gu`)u.gL0js, uuM;zKcx'W77֎ڋ_xK:q5mo@o6кVU--jrX^ٜ 5{jKKܲFejݤkז/7?BdF$i}+ 9{ }z -SRΈiNISAwjؖN<^{ľHt-h׊?i^~.=?TrU\eHeI.8WPY +q~߉x7#?{~ƬHm@H5 tݠұC򭓣ϑdl&dt;S<FK+X$A}8W=By7_VG(1!ӝ@ ZXaZQU W&h t!$qaHXΆT&Q9vbex#t[p!1BoP@jiM s@üP)0D%@Dလ < #âPXI +ќ_INT!~7 Xd` $J:s1[z6D~ XxB_Av kmƄ!c\2bT<1,>(ƀSA "a84 r@-p]$rϰ] s@=v >I%{BZz'3.1 }2`@$K +2^8((b H, ҵuAg]|ն_b;Lܳ'~wU.qLޔاk}ګ6`{ iY48]ilUKZucccs@Au먦Us_\s_$=Nꍹ՝wJA  xL %2Nh((L]t;%'X}ó2ɳ^WzB_ݫV_=b)JCUrj86MV V`5p +Й>Vf ~ȟٵh6ey<.Ө&3 !,"b]gpfT . $,I Ⱦ}$$,DVIQ1V8G@=c9贶3cJq~{sq 1TAEGFO=M{:@{A^~ B-[eþ[Ϗ +}u7"畨iuU6'q!F5~!c^9KauFsя1aװ'wqop癝&(mb]Q[jG~m3 6;*b% sS8r[MY2BAe#tsZ]B43NtsGl)ąHFFB8%PWM_#fͱa7M& +1.goVJx~8G&v I_IiPZjGm\4'Ӝzۜ:D>". HHiK +|a2URqZ!Zޓ*NJ\sKQYh7 + 8&&+WH-R*u KòY:&*3ɾd/&ٛ\'A -d$ CaB-r0Q)h螅g)+OHZ]&NZ\]+WhT\J/,QŊJQQ/5(Z~^1"*n +(IWyZkQ C +3}2q LRp~_{`M^fFTNPB9 +C^3jdZU9TkJMRV43JBA.׼*/%@ &}wV LGhpֹ3ې6cmk5!UEd&rq!hpuX+d:ZitNHש՝Q tj{= e@|D0__ ;W5Ӱ\vM`SlH_yi4gm!;e6NB@[تHlWF "cg=qP4^S1L ߔ̢g +<Ho=wvω65u[pgK|dK3:٘]$mω?\J58xMĐTHsejrHŰXtK*VҬrj'XRJ_Ȩ%/@R K'`h1־wqO6z kuL6p3uj1PrR*k%G8%"9Il\Bk!(H0ofG4ZPߓޕCޥo'*OEMl2s#O-?S_28g?sg@ݹ(`A0MZQx&mz#$ P>a|f6 -㼎Lb0 ݴ 㴴/1}ﱁgP]pva`=2X/}(V8j*Ŵh(nkB\~*ïASUi^KL0/ϽO +| J~8"U#a& +hol Vțٿ;}pmTحIɜ={Q{P q)Sw&Mޞ4&3/=w`y X`-wÁdn5B015Iۻ2k6q-fmL%$ͱ7'Ibu-ܫ?lgTe)[g;[a ,.KY\P@XrED`ƒĘxDWAF(F"K"KP"JSʓד/̇ߗ9s?Ϝ3GxD~0@{K1$~pBkZ+B!45SnfOls=9lZ&O3aO?~ ml3[VRg_!T- ճ){߃8Ъ~m2ڡN S: .KSn- 53zSW E|/._K/ PG>_/_gB~u?@( qN#t6)tDFXo,*#U/Sx2|Xڋ LI@<;zoM d@vad Naw%I8՝@%AH@1L&cn"Ŗ,) ~,5l,<|l X +h)ĊbpS{ +#I*({2&K_ Ƀ!~[#[~  dofe\Wb3w=>;:a:DQ ڈ,mDrFDR]^[.1:@8BtH8 qlA2L|}|n$[ak2ƐcPV/h='.E' @<c x"Hx4qiRҰ .(sÊ׊ك/v@!/`;U@17p?';R&:/7/mzk +-*4o<i gQ!@ +:<:54Q\l^:׫^Vu|GV΋]aamìgVTw٬kf>ukw5oҀ +*:4tIBc"د#S]|A[jֈuO#6["7#x=җq* '9 ?ssoG={0$j=H/(P!f'$ ÈϢ2-Q$DݛqqѸ[xX*a*]7fIt5A@|)B̠ L3Aq@M=5S= i4WOթC5I'ꂫ'_WD}drohQMEh{fG9sNs.fnڌ iրY䜰K45ɫ4'hK٨J٪=G[r@uRt>ҕvEO}Y +}S=H0?#̥^,Nxء1G0/Z?;vz&czh5;*}QdeZ"c}yZo2XJɨ֋Qֻѻ:dac߀W<N0rzEAOsNtaާ6'{";YV5kZhmV2󌥙M%M{3י3cړ%fW֞Y):=\֬-Yq3 3!~d85pf;X-@7/Je5yI̱E웕m,0v׌;f2o1o}Ŷ){ێ6*'}kl]lZ +l}olc>8:@]W3ίBq,ĨX(*[4O437aUЂ""lH @ '# {!& +ղرGQYVt~=9wm"nK'7perj5#*ΉJNd9rTg"Jy*, "zW?'цL?9:! Q0K9@9{aR$pZU?H+D+b~[ltl=ǟ+cX9,t1>?:'?`R7apn]?/ّq {ɔb~zH/T2"C.+f 1O dLh.^&>&s);@}+2ʍ0t)3nSsb]dLLvpIR If0rS +d)U,q3k!`\cc_$'SK(us&PY0Rm|Nwq{IB]}^su.û@RPA/"7#9V7!s~T$z^"%KFyBɏ<W$yN̳IK@Aç Q@b VmڝUކW5-9yYv@#JMؓMb!_rBGθ,`e|/`IcIeK89R0_[xzBV~nVʓRhq*̦<ʡDIw+bgIr>-5')Nrd2a,_ 1ej!CvJ] LL9eTjX'6z7ԑ֖R7TŸV0|J%\@Γ,~\!+tE /VqVLhY-w/,L=Ewpe bj;hVZL*CV5FlӶTq5 *6S.f2}I1J9+ZYDSIv3J/0"Kʙ8J,#xQ\^)t(5(F9Plm#@s Եo׮Gj3鑵rzHqq!0=BcL]/&\99k1j;WOu읕w hg_foAWdH tS6-zĩ+|l7\fp|Bڐ`.uip9p hh36{]~R<{>Bx\ gb>m80Y#^N9Jpp$H=j_jW\~L<3Z'6 oDO^!S"j'Dt)Bt!RMszYei!S3'm.V~T%xSdб|7O^{16Fؚzqt nJ'HO$K%KjGT C}U[z4_y5?viPp'Bh`YHc[Hs~`J _żU &Nh=[4FM.;)̕,,լnNޝ{WRΤ#> I|v$Oے<96'A`w@aGD;;HYVoT쉙uf _ }!]l6oOJSJ~ƔŁ۵+뵕[uچͺA53t7u]#}!CuZecO, kǮLٞJnT'J'LM خl7gkC7闆VWnWVUO_ _R6b`Ċ/كS5d"[XGv?|)fڥdMːo09|azzCQdabababa]T.jiԯZze{KR{~F zQ*T07hsf\+m v)nu$?wZqjpd>*#=t)+ruQi1+?j[n\ԸZظIPyeSFF9h0t=N;oZ`+aNJ$V +"iiU85'+22&,17np/҄ L+Te*\6~l1%[c~2P> Bˏp +ڜyv E=%~v J^D׵ӴSSGONW,d9O=\8%4$~$Sk\ڌm%`(sԖzUž۷ʬDNٜ>W嗑bcZԒ dm*I[RjɉCI o^e^bUBڡ$~$Kpgm a*A_TlYJ'nvX?s.I޲(x馥 T+s$g$eoU*rcs&(s~~TDeQ<ϛ[3;˱sU PK5`gtۨ2|6Y;ז+f*Ӷ-hIhb +B:6FFbt QryAwd爈[aydo"f?`;n*jt3v/oYvZqYV౨"Yܑ(_]*\^YVYk~DyCHxIYxyWpXݠ/CK>Qo8EVЄto@>=̡yw&Tn>l(ǔ8פ=J݋F, g BkN wICw}dϥA>U~-]*[{gЀ~Fxlr_{5~f˾ +r8|bҡh'g!uvAb +f ; < =  w?wWÿ\oA7 ξ s9{hl(l +=.U'` 7nqoVsellȖ).נ敮l6e˼zgcN~-Om5hiɧixH.;8Ww[1#Zʏ=AjXHtT9&XY{m@ο}o2k&I;6I;J't8:~NYfmשv$ݷQ}Dw:4Hg6= +vt6v,|V V{[y|a5'ҳH٫7mhlF;!;uIt; si_@U#6S>צq{=K׃n7Ʈ7Ʈ7SoLoܹ:޾Np?v@W4;a=K1060li])x&=M|dk&;fl7Kghg}H0N{ ]x}ث7|x).o8${'v{7ֺkJ\dFA>fF%4 PY;Q4߀x=cE]CB/\86Ą&ƒ劉ׄ8q%s 4ُ4k_| o2 fWD8_`I}3v(KmF14B-∸_?Y H>R2 +wńqMDf +3!Dcd %TPz.Fp[6zI=O}bF wc=zq?_~_A/Ӊbbd/"BWGD!gBxF>KÂ*Z'~fHx4>J4>A0iL~M.LnoLR/M_SMg3%o1^L$6"ba'".{Ḧy)/4&auFĹAq!y[sY侳lbX2-O11/.1/n}V'VGcL8~BE@%7wqL@" +(K垦YVXYg76m>}ֵkN,gz}9_ vr4|eqsh2$A;;2t)eM wDY _ .Y>P: vaۂۉ[#S 8\6xp_äsاǎ&\ ooNfDH3 ѝXj9)44yxIGx\riĿqiý^؉\kK/h{ aNa/ac'蓆3;n_nAtHN@4߅hSM;w lw)dҤGKFOOWy?^?ي3D1B8A'd!\}it?K h:΀foxfv0W ۀp+?3?)R ^`1n`vPfP+FOHׂHW.%1st EE_-.|-ȖZ_`+mβslN )'9Z(rN9RqQpڎp`7̽k'.G?۹i 18ƠXW1ě83Pdnyc/džD-8َGy*üeԃ"WGPVSw78 vw9tqƿE¥u37Z/zx> + !!ƀ_LIpN Nl<<c7+qFRA\qfqWk{{xwxgxZ1񏌎qӾmq__w@Їb$Xz +u \̘Ng;۟a:e-qO z2.rNIIjJvIg*Io@dgJɡ AM ~ OAެ=P߹295.>P`&Ǫ/=ڝ֕VHZ*+fU1e!MYwHl0tl$Vv&Zv;J&R)R' + L"{h9\ӠEZ8owh-6eT"jԧ-5%%ElL "j+"孬*yB>Y.,\T,H''HV~#[h%yQhF(`Co Bo~zMda[fWSzR@2-&53R,W*%&N\[WjW4)/4F[.L0vpסpXXtLI["wFYʋqn{e2SBT,R5PY,[UGk\&ZEZ,=J#HS" +uEl)VMRoMT RyD=!ffȲ!..3YNm6R7$a[-z K X RnY(e 97(ja'l4senZeij_ˆLwIGb:!Y/ҾmO%A.;2XVHgΘaWĨ&'.7Y;#Ӑ#rY3%dω/蓾g^=ּpcR^&qm)ʠO+bjsש0k3 SEIю)Jq&8du??o# 4NV8;*pIBk²KaI%,}_ڽ-)cvro[ lXGDbSK\i?ƗFĨ~pq!wSWgnd2[wK IN Id]h]oJ&Xu^ n@/cZMm9cY?@ݲ֡X\Xm_ˌ$ +*ߖ蜽얾53Ŗh96sۧ{f-Zkk;he;<{n˱|ʀN2w 2Nw=`3]Ŝݥ̽T{>ўkcmmiie_þCw~H}z}Įa;߹fo?e4:u L '9"2.0;|8G2ڑE:.b.b6r&r:XխҮ <4UT~ ,,_KKM +9o0s?e@ˁG 3:8끈,lحSpU*]x˹aN9!|awHP&x] $zV!?^@Gr=n cotO™IS>53yc.Ħ5ч6~mFZ(7R˩#4;ɗ+@u$=` pioh[LբgR- H"xM #&-zG6۝`!}>$0 +GdrG;6\@ (ZAb0 \"DG‹0QXs 8s:pz?}tpRqLqL9f %%xxxxrqSF7Hj֎?NtjN=YĆy#b~p_[]} Mvn97p,\1pU쒁;wuqC; ^ͽǏ[1NiF:s"X+cPTJ1~5FŸ]Ϯx~b^5Coi_.?˥>\q Nˍ +5(UɃT:'e+K~j:O?Cvx% O)`Xexم eUAeAvòSNǂɏPT&>L$]/=/"!5fŵqҹٰϥasS'—(PX1Xq$¦!b"_ +.&48Pr%}$  ^$p_ ӄF@E몣zutY۝YwNv,U}fgyy{>7.G>6[\߶b[ rfHc32p+I51&(F%~b"w˳(щfb߈4Wg~LB|A\)kQi*e`L[@jqSs3>m؜hf dBƁbƆm1[f%3tF˫ en5f*zzb}>> ,a6gYO6 Yy) vsw8HC2m%pп53)zn_K~˶Zv89;rdKRE\鰀78[NN}!9|(!, $8NW2|g ѝt{t-pMmvAZJKٹt>w9㕻\\\\gxziޘ$o}w}wccs ^{3d-U !6@7Venr&n9 +\gӂ")~{=oz|>zY+~}~=un]w|ҿ3H2x5|O=p"wTe^B#vbTVX&3)(Ȩ 5B}`OxPWѠNbV!Oĸ6n[VqZ+<>ܭBd`v4޴ 65Ęv3,jj%ϭZW]ZZFKtiQK)\E7Gяg+f,.Rq293$X"9}`ÓP+}| 8Fh iNoNinbmHqxՊ59QUxb&./̲6nF\X>I/g ?O?`Yҟw70 Odo]gtukѶ5$NJ4iCvx^}^\v*e Tl51MJUMbSL3F~Br=!槄귌j#_>Z%X{߁.+4!F]Ne/H%ۗז!R*_]BOU+R7>Y=AKj>IMRrboc8?ű~y +xzν =| ީۆZΨA`Gm͋ {{LΜд)$mM Wk{pxG{"] ck&va~`yTzg?'tzp~ȇ_=lFPͨ7 3*ʆ1!x0E8 L%%A( f뛃݁,XK]e0u/^{7{|j;B+2 + w <7P4ϸ"@-4}{tdIsD;{"ߓ5.bWjODGĨ;}|Ε>+~K7W7b߻.,{JLXBeS(dHpUԺuZێc[[ ZHI@Dj]X*dAEuDT78$y^~wi .@Ǎ^ |{v ͢\O,&WUMgXl ɶft$_mm xg;VWi'&C4VRe4wS| |RDg ͞D;0, ʆixz$:wdt&X>1,MsPgzs*qT9qIi,XYKjKiͷk %ŴA= d+K +U~0W @BUW'JVYQU]F{HlYkZ&tH\%!$x_4K˨L5$B~JRC@TZ/b` '!#|`_ oǜc}j< vx=g/%wNړvQs@YU;@a\ m{VZ@{~4-CnI%J$(!sυԽ:n*ҽ)NeP<ɝy֠HnbN n@w PrސC -h #bdpsNr;DhE-Zjn8b{.]^Y O\dFbOe o>t*{^D?"Fe!=Mm>[*%[Y[CK |&8KrZ@P+K^-yJ<$zgSPD] +V]_*c]&]-AVnʓ2vdNK0˿7%bS< + izaahIqygojd&(+RM*OڕWΤUΤoTŪҤIs\f.U+<泚|s{w}s[7[X7Zn]o]kNjk*q֫˭zzݡ'ܛ jTq#uc2o~(AzG<~^j&n.Nɲsdx@z} Êhq1jLاEXMu  o WjSiKQmV+RRkRVQPof~"Z~/ +i,oi͍#u7ߵ H5E&0Ngk .R^QU]X]XSء[8Y7/p^n=Y3g~__qH/Kb`,03Uar.Ko9WG`sD]|UDJyXFIhvaHn~H~nHANHaVHaFHQzlԐ!;BΚ$<1N l 1??k4p}~l`_'aQt^r Z̝i&-)6IbUe~ʅ!Yi&)If =f3c×DŽo3 +?͢?F1o Ïiǀv66~+,`;;abCwc[[CouHYtaRNBFF\^JlQbLY\tELteTtedtUx4%Vd{\ƟBBJT*Ԥ, ilem0DEZ**kRewY9,n+X붖8O}1<+Iq, Qq?A럨xᗨx盨|\^gGr=@c&)Kٖ#*Κ]*6͈Ln8iQj[r[pleZ@2G\8SY!+w㔟* QI~.M_|Ut~-l`"TjQl44n<_üIfK_eH똜:7mgd*U@*KZ(Vɧ6LWɢT_EE>\72E||:A|`i&uˀu,)B;k +&Jf,lj̍șᒔ5=>sw:o:S.EK|[|۽#gշ3z%B?R9tVrd +Z#@YU䩗QoZ2D2RbmRAc|~eyD-KQ{Eh{kJ<5a5G&kΌv }=8[\΃ENR Ek rJ-Y6e2_e$EqyH51#W'8Fu.t .q]>.T[<6D[=<&HcЪ[+q}|tpG[ 45 + {mR=V\?w}QbUuSNn3b]XŜQ 5'X>|m@e7J+o퇑}p%{yp~vpޕt[JvS~+y7[Hz?}fy,?YGcI,L #X 4`+0V_D@X@H;,XJ;* x&GN"gi"񿢏dj+$m J*+7yp9*r.)AqAX5pl.Ę2>V2ƅ1ap=c/n17l'nI둸6qlv}a3v[KBndA'z!^\HK]Cr\C?"Zl}P$7.Rھ'ʶ/ʳ+*#*-7w 춋0'~5MO{wpN]n>u7 gLNɄHx}K{TB0Lh avF;n!8 D&˩p!F1ĴK'qeȵxj#~aK/0Op<+6K騏&S`,%7YhS~(I5qˀDYgIY"V԰:%n n>!V~fyFuosg`$|ͪdV`<*);c +_ܗ"gu'gxtʲ=;d2MZnV[u^MVFYwlwlԧVvȧFzηZzw_gJ+c?K/vT}]`D͡ .[g.QNˤnTw\(mj5FjyG@?RcOpgwKR斤387Nq +7|Ds1AVv9~0AɊס^ئ2to2BYTs- +jE}Pb}P/X1bVR 5)n%4?ǐ_Ƞ9`>\G9o0+(ƱCo [VxC0j>ֺM+o̎wS*oef&guF6Ti.V +5+ +5&eKxR<aPNGP^ЧOO'Ð7|u p% s`[ yVMvuz¹Zaɖj9f:ش\Z3# *~1JҪFEg5Og|M"5d{؋wxP`(CtXn +f^?^q q+Y]SpCv6Omk +,MV@Adf +2t͟5/j?g{1Q{P}P~ oR E 'V=<|=<OV{vdڂXj].u8a";mMZꡬJI$Wd$Y a9TyTǿ*2 +3(phv-ԫ]%T]dqAEDEE2a7izMCzW.|g~2F2|?Ұ/ְwg{G^1]wnak衍똕d36KyHQ4WM`NVx5-R>=5fr8WR%Os4=6iLjÓVy$mpNpJ*pX2,sd''wu O\u_El$ޔD@r^:27l{Œ3T=fLج)1Y: \Qq?]fCDoxf}xf- ɸgpc{mڋڴ#b[RyM^6VybR  +1 T2 B:#6QElt9C1.lSa| .e^sEHmŀG]//OkJo~ t{wJx3evCd?te/KceYy`Yy,мI1 +RVSzV]rC]P\U:wY@r x7@ڪÑxr "I 6ڸqm#,T0=3"Nְ޿S!V sU(_0 ؛2^F@8.ΉAn$|qrOYskNel{w`荤7^_z]s _K5;F:$w=!up{q@'7N.Ɲ;9;9:)=`tg3OpĨ~YY}&MGr_ YDW +̠'|: +^3?*G-G"N6Vs=^_DT!e}w<䱬o"7Et-k5OzI'<: +( T5LЌhbhQJRN"vjsH8!0z0IlȖM'kqBa@2Ǖ8@*UF4Ѡރzu lqjmcϰDETA&:B~)HpA*'|e\~8 ǝDBv\VCԻG&tKC[jܶa"Xn^èr? +rg2/Qbb?"ڟST#7usP6jc_rXVZ$R=\,@yeՒҠIIiIq7AOA'DH~  <-[.o8% (T%T zC{GD([!J B6AT*fJbiBjn׶_w)r"diEKI?\^Oxڡ."„hnxynD7[^'ߩ{W^[ء[0*m͊8 ^I4cATWN +^5*&&Q%iғkle'[-99zkzu[riأ;}~=G<lOpAǹ5.h!I\;0]"փxgy3;iރIg!vcbz_7C1 +̜ܱq^V Ζ6Yu7U, ^. /U! |-o8Fr?D[))3tf_ E=j)zF)Ky8TlaMgaC%VE|T:WZ6+ 6P'- a'&4ƅ#QfE.GXa>(9 '(\I/ +R{*;0^VÚ6d8Eς<'`<#MKi62bL\i5EFYDQâAhh:Oc`.2Eovvg}ka,Sowp1MǬ=YU ,X,tU>ɦ(h +yT= 2%X+1H,]҉3(=&=4H3[$%%z z7|=xЈyk9uadt?[ 2\UJPJL +F&Sޘ`mVPR|RgR䯥N>D;Y#{y#>m\^G.X1c Tnd!Z/`X# +{VURI+)Mʎe^iM(gV^eocW)LV|Z1Z}[|ȹ`pb=3z +؛`9gDMo'4:etF*jj5FVVNzT/q N +G9BKL4YsڻÇ^E^iCZYJѶicZ3z y-Vk*oLW%4SʐivUh&2 $\{#,] [Tg C m>ԺэrYBf:>S8!:S~P}O1,K#P&Hɢ&Vi1%hG)" >O,h}T`xT}N\Ϙt"675H! i8W;P3XH}2:,6'1fi>t`qؼqy1\FMd9XQ ?4ҡ~4 FwT ++/HfKUt>Z1\5:2u`XdEz͈#iß ~Kxbw{~2}@Qsz0 +l;'jBz*lOgHMLMHxU --nRsBs)ٶ7C~wSr7'{/¶3}@W"b܋I\s qA|$ JdGr|\")<r +rh&utg9,jȘ?}3O?qSرmFm<#b s +EW pR!om7!ו*r {\\* W?AdiI?QӾɫ}V$./c穌qՐ =rȵ! !'uMݥS_3Gі܁'17?q0gb3U/l  '?F5 + xSMďXXX'c(w(ŷ~-xpfun2Ȧ f68 gxȍ"s +y %J^yd"W(#g9U\i _b3|ǸBG b#AiO/="ȜD^2?_Ȋ''$qlrV +ZKN9׭lgviqqmIr_'}[ȇ  sD}U;0rfDN +9KD'sr99Xa3׮>YЋ=K-&'i;F2 4<5Q%2jV 'F*kq$!Cl%|< Y٢{-.Z܅F64X2GsؽFw!xʣ| #㴙#zp^4-NQhvx4.钊FYd+wY`k9j]Pֈ*}t,M(UP.7W,)XjYX1.+tݱ4P0h<=bLyEBT{+[rūʰk 6z 6x7 ʼ y*(-\DXJTmc;dW{d le MCaRg'TX)3Q'NX $,Mn]*,]-\FoدNT[Tw(QMU~?s^s|[luF5l5قa0lW( +**r^^%^ULQ+EBEq28OYdJ8WYmRd$[yti{II I,?rj{#m٦FwT"ThR +1-0-Oϑ/Odge2UfT[UKUikEGA0=tՑQr96i\QyOX4L\0*tuh\XHl#J3GΔfLI3,Թ%V) +zduM\76#~NiחP71|;ӖJcL. źA_\L3GfhVK5QiA٤ͶY4v~dMm.QSn?GSgiv90#c|CӃ vot=cG?XE5V}.Lby GgQV$#4<-DchLmm6>I;~v\"YLzSVm[S)Uwj\xze+a 9'%ϬMS++kzMȚw<Qs#ç8<|SozLVA= >QUz%XM>JnּP%6Gf586rєՔ٘X>=mjaV)8O^&{)tgnLmPVx{V^ Fi)(cj6ŷ+}bڧEO7DGqھ1=ir[ӤRжljm&uڏoo?oXHaL>fqOz +ށ nZ^;~) U^ +(:^Sadhi`gg]h.5C.Ⱥ.pfw˿ u>/mowG|;Cz^I-uȻR:lUgI.owhlxv);J35;YftkT}ӈV )=)9~MλnyM=" w#y.])-ƞFB{5) f$W[mr%aB졈3yKχ]I[j%s`wKpISKIcJ#`|Qt|"@,}9C!#>=!x&>ÄzoԻl5o2=&M}RӒ3bĔrC,Ƨ8x,fgbKYMT#d7qFj򨃳Nlء qr}|?7n4%K r8d +N=u69zrI#zFO2zM}dti:F{^轿0}D/}`p4O^iES +g%p4&X1;qȏq28LEmdäbA?K }sF5}faf_d T"B!$!! Kk "ET\ǵV;N=:NqsfNOt3[mg?j7%sˇ;?_{>ufco:3grZ +.1{18Oy8M>($ +ނU8F ПsXf23hO/ysN>ܦlt.GZBγ g8~8 NrwVyp7 GyKpKK ~ saV`'Vh Zۻhh\&\HJt +\gX-%;XVvVX R\?,큅McphߴsL Sa2cHx"'Ohh8nJ.~b$n[3`ukMr찐T a>I0 ɻa*y&_y~ +aaLzWz0"oa3:iH#?Sb9oq\shq`55Ӷeʴ98-+'U'e.kF~Y q\ z{eC>ҫҰ|4$?M_#C? B?^" (CG˛%gpZV2 dŒ"8#O(RʘFrRFܔ,/eOV+eP (vSCQjbګ8LٱFqTܡw(hWѦxh +o[zGE9s_rXE\!L%4Xn6eDOVR)=^ѭ`t){aF@5lWdGU"UY>&g&X^wHx8 5@Gk\èvqOA&ew~._ch.5S]ѡeYj?˯l D44Q^ +As59u?p\#߲]0ەfZ9#}k+ƌQh#*N"䞢Zga>]gjK#[Q>ݤus]m^ukGyui^<ߩ)ph.NPU/~U70{~}r90cĜkb`i4&M71}źHo]/㺋켺~mQF*t{J?)D6 +F[>E!~#7}U~k2g‚,@U]谦e&PϪ35Fi(T"]ih0AqqBl1.bhxOl0|"6=Xu$C*2x lDVr-dBS\o˦N]Uf,er=M&sh-1X%%CeMRdy#XȗүBS8ȁwYA搉jw{ sN1x[L# +:i**,ff1T-hUI +mmLNۮ5{bu1/1j:7j. K42 8CCu@m] +QIt)|ciхNQh8j^qs.&y":H+R: sT=_FP w:<dAzv7R@W#MPM&ؼrRYc6A,/,7p@="EQAg9~p?f2k3k^ +2k‚;dqCH5~ l~1X`,%k2K"|Wqw +_7'7DeV2|W"3vJKVz+Bfӌ +=2}{Ǐi)R>o?eH[^DH[#n`Po@[p@m_;|G{J EA~H  BN(3C:JzH*hiP-%IH(GI}I[&mWRbS福+x,; v'j7uzfeywa@ +,. DCxFSc5$bQDYdFQQAĸ%ihXj665X($9{bFH/K W vF@csWogW/Tcς9CXA!QehP%+8k#CpcpSvxU8N#)Z" u)j"ʂԫ,T=]VbJPkk]5CA +,+RDzJ_UmKMY/6Զ1AFKQyχJ`.^Y* Ě/{+@wV{wڹ{o=E>ty2V㊍0>>zED=T<{:\Jx*zɷ"/O 5  a򼌸p<0Cr5EFذ }Ox @_ U -qp&{1C~6nldB6KVLvz?&5060624G#q4hFl`z";R=b1{TJd)H"A- 0ꥠ.;݈njve qC ~>Yla,nEx̵Ԁ:$ O헼e L.\x舁A(&n?2=E'l{9qQI%3KL#7ٲ;y1f!V#1x:N3s aҧ}K ˗FU^4u|Rث{!EYqMmb 3#;|#|J?5N*tu7Z + JHnQMYj'\y9*'j1g jR/%ρ6Ùc̅US>99aZgP~NhsDH}7H}5㲆{YeLc-$8Kh"]\ǩQm^vt/EZԺ `}&+kNNc1F*9g\vX䂷:-DC;uOho\[b |7n8[5k$6F +0|,XyŞ?EhQjfy:|#3=M+٫u+E9/a g"+O#pҩx&lX`TsCZ*TIWqsܞiQvH5kihϛd$mm4\Uh9GU-w*-Zm٪UTw\+.KemjYTڶs yo WY;-moյզTqFj] +5ZUY*׊r,hJ;ժnw:|K]rti~0/q9̑\oun}Tս" +Z2^* IUif84GEa* s laKySny-B= Y?fâf \/bPϵ\+}?ZU1DW:ZEdZ'iM:SKg2F: #K ّE5; Q5Ώ:k̈a+= j~&1WaƏ}#WoՋ̹}O\}{Pdgp~at؆m#y׍9mYE4L\b+c6bLcfƜs;5[ߣ,+?Wϩ@F۵I]IJ"NZ^*G{W}i}iA(qMNNei/I_3=~yZ6sJ~)|'ۯNcdlhoLk\yl.O`,>+e9ߗp&kIRrzlėL}%j0<3!75a}%̱$,LItX&'ML\7!D{TǿI \B؊7.rk  D$x74 +s^ܙss.Nzܙ=kV;OV=V?'%}~83~.ɸHG= +s=8%k#סxz3-XzrЕHȍ.Ihe[uy-E!lKhSv1FRV8̙!uK-j݋2nHVޖ۲B}*e=ٲldG={15: Jc`a^@s~)OR7a52#ZV[/+.MS=佪,Sϫc*seqeqηԸ<1 GAj'g\]Zn4Y)NP"- v%vcX**ebtJK%UjWm2i +G5Fo4Up[m0_leIM"Eժ2X4yzme6ڡYi5YWԙ73t{'/%qz`/Trn~u7?[j!9SQ#Nhq3 P*uJUVe:ӾPa_N4ˊÊTiyJyr-yrdcem\yg oQkj: l`DI}T(2֥rBrjYBt*׶Sk)ݲmҤ$硰Di<IBMI?od׋D-:J56po*V*5Oe9ͩYtW~|94e$j$.dkYh[zbx3(ዐoB%赏#.XKvE:g"rbRás@;$a;C& nkP4׽ (ֽT +voj0gJ4k%Ef."pFOo7黒KYs.w7yځ P#3 I٘G'U0ד-EQR]4 iFz|g;v 8(◈h#"e .Z8uɷMmf^h%һeN"CY$殕 ; s1yMtzM]n't/D׃IލxwAv?]'Xs7Xuʕ|Om\Fw3wY'`5MZ @DS|Ihh}P2A+W0_B}KB׏޽m<Q_p->D=g ߍ<̻5odU.@l b!/E2F?B&~gYX?%LN'Hn% n.9v1߾T;Bo'm̹fmd]  :No8 r/AnlA&9{~-nB<oS뼞nU. +XzF& H8W?buq@20a60C+ԇml:w齐vһ>}0Ŀg~@va /p>!,#Ύsa=FxņaY1 7q?rv|uM^c0t?JA+|89NMN&gb q8σx?B0'xqu ˭e6\әg=#=NNS,%aϢS;ԅ @b\ `~{*ktc,jE;FZ.2zXk۶09~Rz G.R@K]Ĺ:ap=rSr@c}bv'yI)f?C  +%!f7F.wVү^irtҧ 1J& > +2]TgY\CjQ_eܣ>8rB"\$ $B.@pI%"[EUzFVڪtvuvڳvs;s׳v]f_ywI~yymxHuXntvS3)}xN!]."}wut>U)t81 ?׀ +t + {TM"5:C7ұA.14X9,uǫKD"f"S=KEÿ<<#m +0jhNރe8ccϡ|E:rr749X@-  /φ=7|_,,'F ;Îa"8==8\@,NQdH0k](}E\Tm]~oh!pQ`4!mt880</"r#»}YAaDRrTMoZ4XvS8U# NHmlCX+~>݋<,M284 ?(?Bd(+%*Pϣ4^q +tDd":$.YI9T>IHi4%I˦hLvF'h|vߤ[4NQ_BOYR~tvi[9J=o% ڿH3+ +hzVhrEƣkh,F[hw143N11ڱ,B+ߥm>U؇U;`YN<[ͣ4:֤Zři4N#qWJqA @\L}izg+9ښp:^whsGԖW5_Nk|~r0[)J) {-S,_M7$Τ Jʡ<ڑTD}I%ԛTN=IUԝ\lMna$oa:-eiMgS8R/sSiH9>ܺ/o6ײ`}~lu8lMδT&RR*R8[.NiW8mZNӬj6qz$N= Ojկj7U?+Uov ZcAbwx?[4|ڡYF۴qԥMa:lnm8xMQSʫT4u_TkU`0",-Q_Gs_5 \Yf{Ny ¶>=C=zbisŠ4x\~X/ u%*]0Mr}LC\j %^qIc!uߗ.c[4b >| {:Lj5&S<՛R9\ hfa&*q9~/R5Kec̝;"sȊr;rr嶜Ϡr[vDv^G3oڅ~m 1RM~2S[~Q䉋-RDTȋ,!aianf[y֣ +k^c͖&Xk6Eث`E |P@CxN658rDQUa, +S#uhA贙Ņ6ns lelFamRm[L!E}JaQ*mWY6[P(,NFklj= Ż[F{ēʸ"N`w]R)79Yq6*] +k@wM:<:#t):$:4EGa/Cyp<.A pms#xzJ}"*/'-9K_)g>x WYzyC4 Y4wZ{C'VyUJC_8h@-P('`كTL$k015ܜ`6_6P,@Dl;q28'L n \V QrCqdqH^Fp,fn%*;Dy!)Cd p +LfXՄL +yP`c8,H R1~RoChunb5w %T})|"\:oP+!p+- ֣o$$ ݦgHۼ2SzstGEyq73 ˈ,NI$j*# #, +hPAlLhƪQGE&iM$-&&>䏟wwHxcu1:4o.6 0k!h]aYvZWCp7Ơv`bREQqV4*1&dDyO6?E4HPca0t(؞ {;5֠6+߬HWC+u0I[;/ ҄liLgY"/;P#Fs$:f1_^tdD}Vvʵ\>k Jn9Bע9 +{ LNFI}Ұ"fϕR(#r7y9 SN:c>ruN9[F'u2:yP[¦c,5Y'4¿gu!, BسaO-$҈R)\ +gTg9j\kjq׍/ͽSKZXk 0d)C4YJP:$` :Z +K}^ų`#`ь44h3M`p]R\N>O$p 7KoB/VhǡO<\JmơFkq$c|~߾{L[>W9y.D`ÞQ#=[/ o`mܶ%\9+2J;5.ƎNN`ޅ]UW> o>,X`$X#]s2S*Z8Ll\vS6tĽJn'zl=t }~A %f`͆Oe ַa> %ZF5Sda+f'xt\nhX?_-%ѭ0B›cM3?BObTOg{`Up`Tn^ӋzX줙o:Xa;+e硾K&ltZFr䅏A0OaJg- F*OaP1UFVꢕOycHZf*l߫/~~hnb/R8> 58az׳^;ɞޖۍ.7f `MzL3Qqj6%ʴ\kLY4e.*wY2*uJ7TzLEUvMn_m/6L%Gp;[i/7uWc?5E5O~?VTUzR\9=s<3]%^9*rGU]|P}+}eT=-zGL5=`V(UǩtD bWB')?MYJYlRz`AkyQ]Tju- N)A=: @4G/׏-Mh=Go`:R* PqEa a>_OъtY#rQԈ*7(ټMIN-1bCa.ָc<s3Āc%T1WsF飂m0eEUFGM59E5F-0D%m%ņĘJâ˜-?9ds)>)>E9(bjQ%eù_]!P%@AZ,J4,7$[&,gܣ.8*{h 4-Ih&I/I/Ii^S +I)% +r+q΄ 3wc(nE6d v6D&>iɛ U갹A]gnԚh3j2Vj]@:e|WON}`drC,(RIԹHun]US]4~][/vRcT7y\Mզ:'W%:8\+gJv-r>OyC>{6gW¨cgT䏔'UU1}Нw{ nwi{r&8=ϜgqݳF@9lLVMּ5Vu7 ^[ +ًE4xJ^R.>X)MT{-R"ђHSM22fFs`!=mO OCV.Ԓ/wk-ee-ÚDPM~9K[ $7(HVȬljKȩ ̡]z(jЍB*mJI>͸Kc*/+>&OK.{+5%iF"~ZaoV$N'Y~X%3V}pfl^=&ܬNգ+T›U#V?J{MAjoW셽 J Xk+(ܺ*|/vσ]sNaa3"L IȸYD'Kr4WFEdd4 IZʰ\]&ePd 3~-iĆU;ஃ |; n#ko)jUˊoIiX_"I2,&Ccdp!bnIl-!(}cPl(bC'WtCLMd+N`>R/Ěð+aG-{4iHu\ 2 _ŇIx< J*S BEuuqq6Y`llf\φ;|.l"6|؝l>X\"R/U\$FGs=r0#)Ic?ۙ ey jJy7SmGQ#llSyYFwS/+t]AD1D?< +{zz &&۲lٲl!ɖeK^$lK^$o,Y6^0 8o iBH&2ӦM:> i;:N6]( +Ag7:{=sȲ墅2:9^ڎ0c?ʐL 92EG:݋\<=ynA}>>>~I'c!AN#qwi?HrGy<ɘ"c簃vyE\3|sNrO +S?Sw}Õbw>%J2hM^f~cLS#d1M62h{q%72s29w&u>#7wË\WLe"9p>Z$#´#c'b393d,02wr%Ǚ=$f$/s?vuxgxQ; "~O4- g-͜;~291r63IV^݋"wl;hymu5~TۼSgy0UEfyFZKN9-tY}$5D&rN1peNp<0&y&f\soLj^w:kG8~H)【Bfb9 C$SpJE{d^U{Be-^{i +̥%af[uH7b<c5hHF32۱!3hfYQ d!5pBٌq_FYWwtoQw;WIJ`7弦8ɜ| `CѼ*ϫ@^"ymkЧEP3Q hѭ݇./ >ЦuSl˿'+E!`,אMr.8B +S-@:#B:+:zu. +uM2$TPG[$qWeZEI*q$W*D"τ,* +=uOwZ4}*jI$kiFM)[ǵ@-6m+ac7e"|e*"CWz|ߠ y Bo +=d٭[ͷϒ" Qd(o ןmc*mN +( ?`&P\.\NY2clCz`/VE&>@4@FTX2cx,Ę+cf$ĪsAk2)e#eeӸ VL+\/x^2'3?; ^ QD@ C2dP@ ȺLe4DEjոjIm!i&jILmO{vx4$Üw}/elcRhR_4Rr6i2[:luaeXP\6X@r5RM+jUU_lqKZ8%\HsN;#EW*M\.C5s F~`4EY nX76u$W .Ko/ߊ"!׋@>΀;(b& Z ^GL5K6XXr,<蹎 \'çKCI;E2Gv."ڊ ljrw +ܳ9RI:᧴,o cY?Ơ Ən.${)~7ﲹGv}oJÝ D;= 3wY=?C>'[v ;0Cc;s{P-u^ +x%$܍nד:oN'dǖ^ʹ _va!>==HoԇH!8\xYVj]RON;<u8a>҈w"]a@K,&H'+qikZ' ?8ub w$S爽|y^bCUpzЯgs,YPXަ7ޡ&~I`?.RJTtcq/u&ƱGw zppDYu~X$ H/Uzzwg9EtQZ?Dq8k=w%2Pgy҅%(*}:{ %;TU(h(̋4ʇ(ߒq=?)V?L11C@&x/"?+EG]|8,/QJ_ǻ+%ev}C_E)GH_pp{/ryCE×HpR!-Քr4`) +, urqbWxR#3߂Gc6\Q_.?O,.Ķeخ%kS 6;iu& =L.dk?}Q_ȉq^nmr-jGRs <^ G؟<bq)vk݀Uګ0(oA@6Uӧ^!x4&%bj7h&;qG s</NUQF:U[Pd3^=gV7-x4p2=虡w|18\'bO~fط28͜uu+kDztOxCz{*\nO$qp$a= ,8Bx,pQ:Ob +k:c's) +̇k!:+?m|wC nks)G) VD.yu^2_7E2uA.Vt$eNZ&%ͨN[&hڄmY_{X15ZQ~}JF{=pWؓȁQ-俦 z5L44cC$9J|A3+Ӭe橱ejqe\ilD۪4D_U_ЌǚЌ>[ᬇ2&U " 1k3=5[Mh +xSeϒ%:{23ۤDf[snv*a&%ԼNaޢIe=X D`V ,*F`Mx.X JeD0̍$ < Z$Z$ӭ%(Ӭ2%֗?垓)2em_:DpPL|d,[,v)D$K'=P&#2ޞ.,[eLڛE)/UPQ(P D)z,ݰkZP.l칅b|O)ޯ\$BF;}/c:#Ed;DN' W/FxuSqk.ƔTbyEV< pWk0KQ>5/mâ% &M]UdL={n2.eшCM@sAa&1r: [-& PᭀWC ; vRHS$:(2 + šse.`.w;?⻻P?ն#dY.ըqa`b)#l4])KZx|ЋVkF/6.6ǚY6zր0z.he&Zyͷ]J-VVa9 f`?d`nާyѬwx5\g;h EB[|L͕?I6EpaTpyKFWq_C8+ [r{.&GhxDg=r󟠇o.> +8jg|._//%@qrM7pgؼS, 8~AW_UݠQK$~E| #W@Rb;E'kHfb&f#귲Uv3:G +??|Nm1:Vě_ +#D%v!K]AjbxװڙM5'/󯟕9ɑYF_31=#>01mc&]H|3.$v)GT_KF|&|/ҥ-Y.}G;mv³FJrO&Z:yϑ䱍6Ɍn`M6"@vVM>E34\s9~_;^HD#\a@Ka8`8Y}&-| WөUtdVRy3;YGShf*\I]2É@sdZMYFW)q%M|94լҺt}'x\caswrwhWJ +':8Y^i"ȣQéQ'5u)\BLHd7;&zTpf 5ȵ5sjJ f pXqaQC&,,8|VJJS)qMbW[\<87@97$kI6lv6l6F;rTP HZ E:(:ig?G?b?}}~7zLч}ZsꌾI74/6^j{nտ@z!$8-1Y`Cb]Z8 +ߩ)auM(4uDWGV%5ZPspKs~`m te%y^K$%JӦjaE(b.(uXjjU@MR5ZݪϩR]NjgUMnf*w|y+mfٞvʸlg[q~a*r1G\{߂,_C`tK+q6dKV-Su<؊U_Jy,h2v3ϸ"A,~ؔ4))]2E7܋:õ zܢ!O;{-=Qv|v*rrݪ(6ΒSh5(4%#^0eMA _Sc+};Vr/j?up>; @๥o|Vy5&ðSt`ߕڈ6û3̫\mp]b_Bn)/N&eϰg3d9ll?p?>3 c˜0ԋb;p5@ApWs9vJ9dR@2\A.?`qID:ό`&#n6[t 5-!|j졋س\xMb8a.bX|a^(ea!L+  n9;%&֚4YXK3xG:4(EwW;v-Jq u5}\t.nT>@&C𳭈6pKctql!66~Zl]0`j77艍7u@4]C.r.,xH1XaZbJ;rbc>$qۻُ=Ǯkܷ]ͺNJ!Ϙ|;'G9=rD Ft?QzY^8rR:tE UpQ\M77<MgQ܄19H>AMN79//R3ӟ/\gřx>: ^Wܭp&Bj_!fqT7f ҙ zX^&7Fs7 I&{{x^0iF}oZ_0p;!W]9XטNr_?%:l_^[yK3u/'|xݫxwԮ%x.ئ3?Iqb;N8Nbra'qprrZhҮ +bE6mҤUbڪnBVi''}_~¸5x?Oi@?Dg^A]E722~Cp;!.<6xꈥNb~j +~oeo.DO3NFA_<B^-JoTX5S䏖Q&5QG5 hi0ƨ^ŏx?/rϱb>KM,%uӇ32 -K3peR{mد_/ha*(e0HOVOQgY\3X\NEO.xޏǾ;9\ Đś[]~aG= loނNh*<1jr+Gx&C<%XGTU8|G9z kƗ>cLQАNQ2j5llEޢ.5PdZnkzT.՘0+|"Ggz#p=23jʕև?!wKGi̙j1g6lUJnK}+ҫ˰˧TUIn٭Ti}VֳZPy;ߔr[Z& f$4({?ڙ3͠"M\+(SuM +*l> +E;vxBeߑqA%k*^%2U <Nx' "RrU%*KUU;MtZUtZ]/KujUZ3 s͸Lyve]'epQ*y[7TP}KzvfQ@;|\tYdqmPI}}* UgVZˠizlʪ,{vU9ut|Em4Rq 0@hwpy$G1E{ 2zKUTFF*ǷNYl^RF~7Wy^UGJnR>Rj]&uIM3 O?m :nehDejm{r%[w*_tJ)?Df%?:)7ڿ's#4vd[y )[HPNW2k4*9XD7!H2 D:` ) ANnt^xi;OKpOc p vn5+cS2 cz?}Jp G@"4wPg#<AĆxaDcFSB}LN=;&&x- +z VH.B!JCh^gTI@fQ jJj%bx\z T1C.]`؅]`K +D +YOP3hb3mjĶW֦M[M6visۦնN&L&v=EwbOtCH-`52эbZŎ>rOC>؇䣗r-duCotwNFPsV5nvp@)@?ܵ;6`FGm p r lz ܂[iq35u#um-"T͠T]ɞvj$-54I),<nŸ89|ng %L} qFc~zuއS{!{|켥օ7EcMy 3[ ~ NYgX +(=;F^Ǝ4q[_Ȧ3va;uﳱ|lƎW*v\q.0}:|ĽHk˯pA.?O$XÉ^4-UR#𷒂w +nxPHuF(R2ϑ 0ζ3NIS;ܠlmHk(wc{>{Yͤ?Vu +nJM6Q#xsߍA.77ib<#p[vw( 8Lj(8J}>FĎ8@=AN|sރ}=)n%|hgVxxmf/GP!D #4Cl{cةS[9b! Xu~j} \39p8zL pGȱ +_8vlS-h̥»2ŊDdU$k-U{vx`8j.Xb *tjH 7ût9|ڀeD9T}#iנ'bpn#f^1qcv' 8tBǃO G}̥N X8f:ZGR3Nˇ8jGFH+Q|^=-ETJ7Z^hU543%YN&+ +.KTJ9J>xCBs3lW +ӥg<ǻ&lc(՛4+Ȧ fTcSPUe\Y*2OTB>Uhޫ1_/|!?/L+gb [ڒ&93[^mY5a1jzX*2TpJKT1]Eu*j?jW(/Oޘʉݯrǜ;\7.P+Z}ԀmrD_)ӱ2ޤpī$&IE*s"W;V9NhSVr{iӲO˘-甖xE7JMa@N60V8U1c4S--Qʷ$(bT5[$\IL~H r(=Cimهb;$YYS.˒rSeM~ 5;Xՠg%+˵)&=NvT9R]JOSZZiUVJ%;xTTǨg~I7Rk>Gc5zKXO滈| +3|{d8(ԌD2lJPRGBY\JtTYvŹ(ƽIQY>)^VX7 +_?+lc5E @px<$Lʙ o0/yV?6G?cLMFhb3W A;Ķ62||Vr|ᶃye'fXfc.[6؎;]d $;;ogS'DnCQlDo#?Ybk7^q3qj-@,!td~<9S}vA%Gx`z9o_cqfZf95pPbN'F58w\@,#@rryu>~gȏ)wxQΉ("rI07 ·>!C O؜gNJOp{Is296qrrLEP9(uD4Ģ~ٽv 25"):5 0vE NH4b=lx\3>eDp|\C +`tI3":xtWA$ ( |+{؛?c##8>bg!~AO{u6{]`WVk.3x!NC: w#܂[p aѯU7UgS-uT/PW +~\ƏK12(iڟQȟ^hHy=3; 48 ~ 6x/9z-q:L.. ~jHy3["xy4, ufz\< Ykm! tO p(K8r\l2{]X knlc;Jf>Zgl0JB2D}1 +^Fh'͓n>P \v#ҠchGQ^GvG8D9^dp З{( p?0FLM;6@XmDŽbcjߊNX YHſIdU@\E1fOx8FhZm~-`S[( &r1Hdy`/͌~:`Mk`;ƌlU2D~0~l!ď  \n}K=duҡ똘Nzt)#kN55ȌE;<; *& FlN ;|s/m9"G!Japu`FKV`?,JSO-M=\M]Me86-[qz&|@??Hoqr p5V`9 48'"SN*4ı ցV)>΂'xlÓ O>2~S0KK,f9c-*IRQl +c06_si2Yk+;EY]?JKثdO8%{˲Ž)cY:XZXꗂ*ޗY ,EHB[7Ϧyʶ*Re$yIe!Ouf *6DcJTeY$ni}#QV"|Hj^+@ ㏃ 'Mʴ(nU=E)YȖTrjҖ)1-ťo%cbvf]q +}[9Mݷ@[{-GA/)p3( Qq9oQec6gd[6.̖-&3ٻk =>yŇpı(X^oGjعu8Zsj> FT )JĀҒ_uѧ%zM^q^((_gՑWq(M2ݹԔ.ug|=֐)Ҏ s-OˠzX+{GAѫ( +* =:Mѳ-zTwD^}AT,#-ô4orʦ\sVA3{ iC /X^\  c3(}8fݏb1fm;0s4'A[9/ m2a~2HL%ejKtE#( K{b[s1o;`v#bsWLSx 9sTȐ ?pXMbNk ^;CjwrXH\C\Ω0a\)baʪ?vFB4Xu/Xɢ:t%KI\cܸBnWp +B1`-z9Y^nRߍ /N6h]lT{8ڄ/m%g=^Dw.z\Ck }>Ew^˨5zn,pgb:_C 1.e@i>`r|rKg vdߗ[ +ܤ^n#r㈘ٷ- 9śl7Uzc%_YQػ1gc¹3Ǘp-2x ({b8#a}0'ʏGq\?,b6:D(El8,ܛ!wJc $}IxCKziwjVI>g |h:ܥ_w_9;`R*{?C)9VL8hVkzmΪ2? ‡b+$1߷ή]-+E 90~ Ɓ_:}^9#5cP?Ì_3/>޲}[u;;G=Nz^piR4' z.^ͺyk8U936=,u|O~=mE} cM dܷ_Fe[8 ٴ* rK_ d%w";Ys-"Ri5.8+ˈZϥ+0P#G=fJ^;ctܵJ^/oEᥘ>&d:ʵgS$$zqt+ڢJ "AE ObUpUpxsevU}2zn5%}/u= GkhT$V^.)ށm7+.IS~D?L'C)ҸqBTi؃;<5fABb;Vt,.'`Z)(FC4 +e]Hmd'2r*( e +F2vetU:=Op ҈_:{V zG4&2Q3_i4JfzP `1SO)Mp0RNHzz$Qǁh~GPs/.1:GDk֋& +L fYxB_AAO. EGDp"Xؙ-R8YsBqrF:H$s-akц;&E՞ERE4ѐ:ݭmvh(((8D} NhHp#^4ӎap /rOTH6h6Ԏl,8*Aq|ts +T+(;!洌~ۓq)cA3yz0q[$i4ȔX 㲁va|$2IjQa\2$ӤN s6ԡ,x1QCyy((`rb yٟ}*=pJz{ (Drȷ텎*xc$19˦3d2.0c'F#3GO d+ tAoG`!5}=VP [c/&<ʼLǏBxfNf3fcTKSx,`}N<&ixx9&4{s_{GZkW`/zY(E殧xs@R:t v(9fD?Hl7 {1Ȱ4)2e~f*a<ǜЫ1u(Q-c>ثL@l7җBY+)d+ j:EXK[Iscİ"Y5 aل[跰6c"/7c&C=.ǜX`ק-beLd,OVP ۀ"?e&vwm|kt&LnvVT347&u;`ɛM1<>e|¢$h"ʼ{?G'?0l +1["GFtةs\|SH處ݫwn4G>G~<џ>'ۧuM/\W^~˯n~8(z%JtJvJy$%>MD~ҟC#`2ara26LS>RFʼnʊxTB;~x^G6+K*O^ǔ7+زKO>WT(oj0rʞ?Aơ3ʢsʣtYtCt׳KPDAi ְo˲{oSK.ZrMuϿq-uZ-v#ЦUJ4 % +DD(Jԑ g؄ /^B/_Aoܸnݺ}NK07Uef4VNj:_Rg.RUjUkU+m(P_PqhơC6m8&WmzOjWRPg-]v5֞笽 +pޣ8T>TԐs69*az97s(}9TgΙxoqݡh}?u7Vu9[ѣׄk5gs6e^*CC堃&=6{|}M)h-k-YSL=d)>Ynmyyk3pXq.CSElurpݑG3Ǟ>U5㽚 ֲWvC8<4Ut6$MM9u,}ɣkv<;U;;;j՝]*vEEEzAQ@O")"rDP;m=("GN'@0BnDpncg=}L|IqF Z% y0wd7oR}کrʫ,B_V 5 {voxm^s]pJ9Gub 10MV4kկZ貤y{K۪Tq`-7Hy&"$c<<ՂߝM߰b~eԯ~+ 9F?հ8fjo#I=l]Z]ZFKhk.e3aenǏd2Gb!(N ~l5^\^Kq-Tw}B7<ݒxy;trX +aj_Buauyp,gъl8t4FO՞|`mGy]w󇮃?^kà)Y@FzQvj N2&)@qg{\vr g&+g1LcnbOMJQ #q^wOgʙ9Üa0g32TƦo08ۗ_,p:`,ػWb],ܯCFb):Wm9̼]nF GKHn o<ٸ?0x 0)" +)]`/qg VE ;,hrwD &`A =&9#˿vDwH0؝x`2̞q]`o(rps+}:0Zfx"yQGâFFt#н^>FU DN6I91m|>tENg.0 +X2$X7$7$NoEbꉈm4A~vC,6@[nw4@^=/o4nT /b|Y=KA2Pj2 5CXJp5%srt MH]{v&ht.7G$umQPH.8A\-~lu^l5J{ (Q{pЪyu7~ڢ]n`}"QL} 5aapэpi@C}k]_t߽PuQ D}x6/SqRpN"L4y$4p浴-~_d+߲1AyTy>ѺYm0g[gkQQ`P(pͿפ_Dh^9y7Π^oy]5z{^KgB޻eQ_wUDWDtaTtϞ|}lAl̃V{UaUnEE~>z$-d_A+J,4g3 ʠJ`WÅNJJ@aiy(\~ .Ǡ1 HlX~e/aˢ 4I1NW諿akS6eu^ S0$.4C/EweB -k'P8iEW1(Pcη+0O& 6k_7HuÄRlEW걱Zl"0dt1006}ȩ ƙطo&e#!J=.݆=Ӡœ09` K3 6pl-{Ɓt!؀?UGp *lN` +0L=?O>14"+S6|\ +Y~i4H4~&00lA=HpZ%E#C[`~`cl6ɒARxE)%R:lƃgk`;N;}X6Ä\  )kC;Ϙg5Pxmp AmhppBs $@6, i)٫ +Zϝy<]-_sů,/٤)S C]'rVCe(zm$Ԣu%qi%n{Kp5g.!0ƭ +sUO-Cj_R oLwp,)+g[jcd;錜e#IcTfUpg<[|&:Kp&)9mQN~EPeaj4aL"LLn=J`7<[S{mpvy +">U/ybt?_A9-+t )$QT i4[ÿmRLX~:(kkt7wDzkS7caM_"C-sl&*j,A?\-ď$7&I2(m)tU=;?||g^LH(Lk`PX:UWEɫQ(UYgHqm@ɗ_=I΀9EwSG澯jf,OaiA`Z+/IsB;Tayzo":(_{w~KϾwU X?tM?TWNn,՟mf g ^`9`n6wKοEojxfS?U_l?=Qe +@WmD;O?l!A^p Vy .s`JҲwvH X.ێ#/YO[ϠDY.ЁPP:vPiϻ{7D;yCW]ͱh{cB!1[*QuC#ť"ԄR+JAǕnX!04CcÈKMfvWG0yC0WtXΠA6T n{m{vB4O `kb1vBbmaИ=V30\7LhS2Q1Abg4nnZfУ=! +01 t:Nza$ .oL[?9)21~ ֬1wU՘e[2핁y +[a.R Nod5g5G7؜7Oc RK_wU]e?Z5X;N} + #a ` G- #XOLA]k~nT̩%6|AYS\W9/?ps27\X\C)1x %n$';=#A~5[[Yw4`8̢)rFۆ{C+5 +FX/ғoulC?nR +l="\7/IABV$c`H}8mH+---q8b}淂Wn^M+OZ+f`ĶSG]&YIK ɂ +Pu6|#ɖ"alj#s"V:~M7] =3Tb{%SIX˅ZѽidŎ{qǼ+//\ tQjRdov:)wl,:_?|ݡ\_ysڃpcvk!l$]nBr`}v6pM\ˁg8p3 MXWLA.[p"+s/Ϻzxހl( V`mS#y'`W<Cr(DǓPϦx.x,]y/]Iu_Mt{C[?oOA@WV[|p+\8i>ӎMlNODev[KBq%\jI$[$Ԓ 8RCOdzWï;飡P DhO]!@hE3 \%xcAaB) /7%&EnJMr-frdJ gృ*hyoW@w/@*h "?ǴsmBk6ZbN0(&PeC)49dh|)sB` n4hTh +j +q\[YZkΒO=6 hʐ^2d֩4 JenRנoPJ 8BjV!\m4NPgT0*}nd<02E2Gu:uLvOƾh@W/GPlF +ЀPss1Z]at [;gh & Z-@ް 0BAƐܥ{X(Sz +}qZ-ҍf5cbژ6& a%4][c}20y.` XA9KЊƈڙht]\h+ R^6U+: hفevHBS9+5)61r}Uz8_%d8QTF1vZK)FniZ P>u@qgA}+'9EsqN6uQfj2o|$d-|)6ʪM zhq$@ٌO/{͸u^ %/j%ioZV^bVhX]OIdk9i kē㫬2^J1P:h`_|ǽK_HӞ XϺZl}qSR6؜>~7E : j8ζ3خngۺѭ+\  WBr$p I"G@9Ap&((ӷug}}{JҜh)b"ceJh`om mJoƮ_YvntN1Ax4>ֹxl6^Zco ݰof‡7_ѫ +*;E]Ù +&CI 4B$pYȟkFJw{k ÖmrKG92U{ Fú˺vٞ(VJ&R+&Ҋ`{_iPݔ0hk!LS5r +SxU8"~,̧iyO;ʞ%IK'WHo\۟ U 2?jRGU;r{y8\SK"⁀.EII3G*FʍCnn78jM7el^ڍM\t"zRZ4O +$e#>͹}:|#'q2f џЛ(#@ڨ6w!n 9sۜZm9cP"ύZzTł}Tiny*F搧"qG= +vGt :QEFRGv_mʬ㓪LJ,l{-}+֑ET%dʥ8wS|ZKʢnR)~'TXl[P:̑SFrHj8K;2/S[ G%_m3DfsgPDs5Srk$zɂGa`Ux#Qu4EJ|^oLjb΍&>okPm+ц#x>!3]gǍ+t(%t ;W D~c8O&ԔjXl1M w{`oR~tk`ˊ^J{dRH6QkqߚF)A%@&&Rkٵ@^>HP'EzVKj +kmUddĈ9,5trY NYepI +CXHOdw:Bn.XР hБjt2YhW[F.4䘟r8@qby3Vd"!Z1y[$ՆdʴܦA6~,iԑ2Uq0E{EcD@C.4p-N48ay۹IklKGZT1M̓M-qM-aF_\h`CB<|2pw!\>Og)irN Y6CnD: j@8imbvi;uWz X!N}@`7$ r$!!$ ! +NPC‹%ѵZIZIEh&Ԫ9 +Ґ4o/[tBfOPJО;w;{rdRAGhmUWqx9I]=(@JtB̻ؖ& &U7/ Mz_Z߭_Ȏ*U9ҲƜA>ֻ}Z-! D\,ɂjA^" S{F% +cSׯ2-5ZIb䨰q;nԐCMҽ1@o+cAEuANO}_[]#s k?u_a购o5lG0XYO[=a< +>C5>ábjߑLh)G9$ IX +H6t.kx:~|i5M`ԷbI]2K&͛eM3&9cv|ܘ{%n̟{<'H\36_u0k@oWZ8e˓ɖ/k1CŎ/Q8`D +i1-VyL0&]'qDm>M^榢Tj-1P(ب;wŋ"[>c Bn=; +&m!F,'.I^fM_XPc ;ؿ!/B|tfYHОŶPʉ}G7nY- v'l_p-㵬Kt}hf`] ټƒm $; ŨtqQzJ!ߋZq׿V8 +E{pGQ+{v:6 b-VMW068Ug͵DZcJ.݃j@mKgp\3Ni38n{TsApVQQH B8B@ W IHH! NQu֫*tE(sGl%xB*$ D0v8o99);9l9ǃ aYG)ap62sgA5AX'|JleJW ZEBMbg1}l鞣tMewX{rWK8 +J A +׿ܗP('Ky#=טi5K4Z]RAr^jj.Ӣ̵4z Ϭ5TOY(!C)2gPu8Hmph ):,.yZA>)iK+:fLw=W7A5iy& z胺NI6 JA7yC7l)#q/1VBR1/%WHX\v*6XFhҍBhPE~GA;a׶ Wh< +m~34M7c%E#)"ڬ<+CtЛQ ag 6PG9CSmUUuL&.&r3})C2R۪+/`rZkVKkCղtV7GA;*C1hp<ߨ.=F-c#x}Cl:5N6f)z2YT"UqZm&`kFaA*(љ%zmʑ^r> nCoՁ/!^?0A1o,QqL*YاhnmQE!vgQV?Y\;,Up66W3hlQG>2A|ݏBOAC^ "g"63ؠOR6ɔry)OT<%OQ$Uy|L=Z.j- A2TT~$.-եc/_7zW>}=44-T[-l d6RHݣ (Z3#kP R?@ǡ7}>GǖG{ܼ:r+8Yw#@9×db'MOQZJKkԣ7[r9VgufG`DOr'/Y|?}ݻ>sx|%x~`b74ldYLhߞfM,TcHoOtI}J@RdaQP 24g8~{=;O<,A} ţl0vu"cN0D,GpefƊ + +J@$$!@(!AJBP""EQYGca,((lXh"g{os|os~K>9/\ݩ>BЍۗDo]ykP0@&[3zS>ݫ55_U?`gT7Bb2CJr>e߹J^Nu ?+J=]o~U\Sz8IPWekupPg&eqϓ-o t׍fw M;J dD +28WAWYoJoO֝v<:o?T4_55۴lh}B~`wuckgm->ai#i~~hǸ=N#)ep,/.|8sBE jCd7Z1|{ ޾xԿvaݸ9jZ5V>*PMLmr]&0)` +Y>y/3_x5Py5PT)A\Th}L0a$DOZ|Ib+X.nCL7u( u8NIM?R?Vk ^WD- a<5Kb2" FN2򈄉 >s^{61qe%seBӄ$ibdrدySI-5q]o55KJalؤF8l 6@a'&~n0 a;)C4)Sr$(}%PUDJ&Vj=Ogq NcFɁj~{0ӱ]ö\k W< x35ĭGqAH̀,ѓBO?}Ofml +F{ahS'sPMaM { pܯG['4%B; ?4qh;tP{k 'c3lڽ&0$Pc006J +e Hl`>t [b7ޗƀ'_H0bAK%3DPKRZJ"H*Ƴ)VK¨W|ȻCtǫѰ_? cn߅"@OIn%TD6$~t; IJ 춄AnGB/S#V 1Zاe޺B3cll "E%,Iv@E?+ +ҵtUbrkHb5[ ڒ?t$u&uu'X!l#Bt¬D؍@`TJ7Ep8"}έT>~'}٘6nJkI)z;NŋTu7_ zbddYY" BA/bR2fsf܊fOqʚa^˚e˚j>dһJolRd~E\ 51D%qΈ{A Lʚf̙ff>4:whzδ烜QnCv)G`wP࿲:rBԃLkbȆ}dCu1ގ9H@R^8AJH W=qdң wTޤGuq##M[i> +m5OɆ \A){fgTw` + +0V2=靚7wtܳ DyO$-Z o)ѬȆx!z.6EdPLmglWdoC|1Qtor'^Nxϙ^ڢuJ žݏh:^T|CT|+ #bȆ؍j9ȵD\&{.8&~' f~ 3_Vv^. _>oB +iOr08w\a2&J,i݊& IRL]HSӨ ֠ Lu=ppɸwJCOozqTHk g7Tǔx 5TYV6u-iKV`dlefvXNeFFݤ da>0BFr9yV'3{.mjVbQ :ؐʥ8:F{%)CթLkl50oreNjxsjԑ>GrW\z`zeSPUɪIc+RTܶ +Ыm-eULʸ.65d` m j-7-m~nZiKy?>.B VU)%!.y8KY%t!Pr 55"E4|rb[Ʒ&6^C>ɜ.tu/%TmWf6uA}`QoCH1\;Ӂ,ÕjU' f+{vbK-3vD锽{; ajf|M`oOG!UjabHP?XX; rPg/{um3Y;O0Rϓȟ;X98_1 Kl3bңwk<1ɬx+?3(;3=^5zG?vW9V @ +(ߤ 뼽MOsu{L [k_R\)9JLԬ=oNyqfC\R +]SX+M#4%Gg j_.Yx['=OG*>Xp[3DM~Ka.8-:.D:,2ޖfٿgۿpz=ry:v}8["ufh]@Cblx8b¬`)I疈3mS>:0?xN ʠ>]I#}K!}iO20Q(F +FztQ +ԺQ Q9s l9Q<V1Kd8?|m.ĝZlb^ZZVD[9RBSؾa2[]!Z[ `l&d?8 G`A$p +NZ[!8bBNB >I6!4Bq$"T JhM.B=iP(A8j @"7(T po9xo3:,/P$!+#x5ua&Of,+vElªRdHAZ$I ! t B";0v8VDVaDZe݇}{>\ +LVzb+8bFٲVvXu36oۈm.`?KP"~ L###퀑foR!Fa4 +9 S;b2{3tz5X +,,r l-vQqZ+sX!1|68ۃdf0\yL8Y ḏńj.Z tpx ?z Ge= cQF5M4; T +Q c%[gB!\p=O!{W_;ǼQ },hA4",n 3B|L ^Xx(põP׆x5.!=^ѫ߂#ǂGaoѽP:l]:4 3Dl~3.$Dy{# 3 +^21<ҥpO[i 37|%}W,d>?8~؈N9`Lw  |q[7B;Hи|I$J3/z睵O^'I{-wZl/c>ߎNlV\zlDC |u - ?:, J/Ko_][JekFSꗁU/hݪQFH1R.E& p$ΝHr1$V@ig$P!P + +ɗ +SRj5O%#)_RFB&0&uE=JHs=O;ӟ~ "xDk<fY d4~aѿrcHHr==!5{N?`Ocvu9\>ȼۗ3/$//x$͙ 27ERdحFi=r?dyN>SDJq?9/64735qXl2xѐu鐞F{XySW)Z#7FO,Q\|0yobuH|({ޒ;#+,!k6M}=>7M"۴IIj!i}b;1c^#|@ʌ!keE^ȕ_]]rmcAHg鍪l(z N"y*[ԗM(Y[6=yQ*Kt6I۳_Sl +i+G=oj.Mh29vV{gxe5#H~㫈~[%H H_Gm ܑ45uˇ|,x&5`zPu>WCHyBiiOj-+F3|v6a.2LX5B</J䏄%J⎦'zR3~.7;2n0?6AOAO#!iI#?iofYopN8OT d%É/(c<BJ\ql+#]Ā۠R SGȵfBZKHcBa^́f,6]quQƁ'KXb8!A,c@)sFBBa)$vZtf;a2|7֘c,B,25 `X fc&6 ZOCI7^tz-׵8gqD/4BJGy%_B0> +> hW/Ac~た_Bf`;XN[ r0.v 0Hi(/%pOr?xcaqPDՀB*T]<xLp>`+'3U +mp. 'dp9Mi]ƝP0}( +7"^>* " y© 70l!a?>rb`P3GFS +SuY0x<[9|>yeòAc±JT1Ab+*ODJ_QI%8]*x?TgP7>b(xXZ9_:քq<"AĉZjU:PAdB FP!X Z@"EP,EVk[O<ߛŹ@/`i5x;yOD+p)g'd fܿ7u fk3;~0h;< ',0Vh WCa;7~ X#@&ML5t {%F^y~;IŒ q,~<-q8]s_XK [i g aIvھe@q +G}e{)s^)Է^9Y"33i6ʫ"& zQ٨k7Noh_a%ж/ .=ysȠ3XLl(8Ob<ϊ~xTʘ + J+!!}4|&:3s 7jO "C: 9C̶ ?l}y?α*y SFŬdk8 +nM j}3;Axi&6^p/u9l bНVK{-HI{>yFwY#1ØxJʽR x=_u[M w4DPC}">T.H怱*[`_ [mAҜ7~|)?qd"{)„.|' m*UR#9rR\OJM&^O&GM&EM%FMdC@r\q!q5[9-/wM)O;1$),&/lH$M,eJZ.5.ѯ˪ +DrYDr s"Y|$+b>." 8{k:XC:+n~=Fsmۄg=e>9o3bcㄵiy byyt.?YrAA@z^D`n.vtGVO=qMБlԙ9{EB$` *8R$SR :v g6B7ȋʉȎO7/(io搾Nw6KMWU.P:»%S.J!''T9US6er2ù{9ܑl9wT!\ P ˀmo5f+X>.wxam{w:g^3 e\/;#AN))"_$\&5I!?'ˑF4S3 8v搼m3yU#v}[}k) =]ÄUh}ʈf$sDV(JEڢxQ+nqDw + uȈ MPI2)Rb)3 u.!7\FYV;ߗ,͊(-F(ʅofK!F˗"=K]7-;Mko9;^9ﴼ%8D܄$6`ؑZÓӂ/RjkzA SBK!urd€DF&1=1Xei2Bt~^ D}VwlQϸu"麟?3Kkc`Z!-q@kȿPv)?4*FYGvPYfXgfFQͱ5ڤYZDQ'T nƠF B"ޓ}>}}8^ޡu}tm/ [ %!׿!ⷴe?rq +巻5c]AԦrZ V.}~zRWRm;Wj{[=Zi;'"7ҴԞ",ݽO${~:y N^ۦs_.k; +_6{.;K4}e}}Ka=!#=KG 9wcW 8|ON'-'{n^J!K(蒙m]<),Vw/.V*Rţ|@[%{?W([}{L+ !'j w>ܠ5̨Avg' +ՆAI5_bGp]8&?;i潾eCzO'n?!Or-B>m!d㈿:M]ːYD,;29zsʤЩyk8(Їp֨22,3Q'cz.a!hNG״nMԴ)W pZ%BJq#6ڊ$`e"͇ˆ-?6~ +*󱒗 lqq|=LȷDnڃA+!; #ĔiŘ>É`BՈ &ND6e"=vJ*DHM15E$5KSXɡOΞ&EB'sڃڃ턼LXL*f&Flfd"WStWul ʹB<"d3222U2]  4L 703"!шdA #P0f!#2HH"~MTX裠 l2 +}nV !`e +=99MB G%<."em.,%H!A^ RS%H jHbd" "p z͇pX"_d4f`3;Gl H_ 滴ViȐ]XeH?I}/CF MRduJq>#"!@ A4CDI +H^+GRd#cئD濕:@S"9W`Q!aB: 9Elh(Hb!a'B*cAlBWN{Pfj}pрwF~jTEb(h +TPwjP D:4*9h,\ȜKwi!XO n :GI=^K[u#n+_MڇZ0`Pφ4.́%3VQLקK*@Vitq&˘teT2"oV5R3ͦCv?øyehf UtL1ap΍;=d9[jǴr=ǀj_fOᒭxezd}hGMQO1W}XUk.,zF愠(1,ѹ,g{agRj3.u>5c˴-]S_m?8;Z ]##- y3a+= %㭴0͉} wcV鰮+z`Ok޿<-y4;{/F.z%JE팪j/Rۣobh5-ՄzMUI\iCٟ`1o4Xen,akof[2<`&ņv'P-t1N ̈́JЄ4_EBgj+f +9R_'kC`к5hsAdm"iVeI#r70nNt&JXL5Ϫ%gUd52SpSJPEKV>e>52 R۵KX^S8I"qIJTFjQ2 @(d3F@4$&= SYBt1g@:Cj#H7чu(ݠ>ΜjxtlL˝t۷(½؈ +)GM + RiR,@KL4P|&NG&s>7y*< 74ƆY +f~`b#xR@j^צ ++zQۺܸ__sάyMٺ Ǽ2*WJ d)f +e8eqN^z&84(L6!I' Q@;e  +2.o=Jz[SuK- +[sCqhbbU<SFᆕBK"~pY}fpu^P87d:#8:3T1*w0X F^W V&U_q'x 8战h*F|N@]!ۿ.տ;ůaOx +TqDU R=hu7uACV;Tvso9pIt5N j1t|wDo5f|m^`=IHBF xf5].0G?~y?(VhXӷxo+c"D\AB + 8F|C8 р tĝ r!x!84*W9(`Y!F|CV7C|86 ] +BɄdL:  B^ +ɛP 1vv#.\)D$.rEѐk`nkNC! CHCDZScBFe7C句"r" +b {hblB>pw' +rP ^EtEWe c#_E EV.E6l0l #?;7u˸籈x +Dw&" %=+$څred01)Bz i1*|8,]lM`Ҙ7kc^-/~G== _%EL<"Z"$OB\g2H& ?;#yPs(!/A,z:$7*e"󤕊ɛORRNo8w?jܽ;}[#Iӑr9iH;D)P i4[;۠9hdE +^o^V˜G,uw3tf5jNݒz#dj_wS]lA39r_n?/<ʑ SU÷ +0N+G]njb~(ʭ@B@muJLy"iOPsbIhoiPiDIxH$U(=o CL) [Q$"a-Fkt`䄥1g/;Y]*"5i)yNW.#IHK%u% Ni|ɠ$NQiaBtgqhF9@ySC-7:I҄ݫ)}_tyێ:)kN +hHίؕQ%^ 8( z ?zBĮEψbJgDټbY0BrϤ {_]GI8߳N˝S=Nm:巪d]H A[RlVK]9 {"jAD@nx?a^a7OL??pt/NS{:)7{VX' s;gONdw8EܰNhѬγ!n |]!MC˂@yA0Y p"ݳ>eP?Y9Δme: y +a&pӂ{ ҂zSڒ'͒ڻ$oSߤ~:[d' 0T^Q+I_s߶0˾<0mXbeHkc#!^>Fx{o,:;d_\8C'qy{O$(mXƻ1a0c t+Vﭝ|Ƅ~[Ǜ}nz{N=}샏Msndw^=dH,FD* 2pX;6&YAGj7 iCt4BMGC:2 ~!.B &d$LMV*X ÞtOB ɮ,BY2^DF#.B9&]&1M~f+_lwXCE !3F0@H0 + APDTpV\.TVUuԅ (=}?>s|lV~3dՌ|zA=ڙN+F{-VX)-jX MVk+3ȿ-,~ŌUSD' P8p6g)8V98R,f)| Jo6pDm 8 ͺ\}v/n {W; \W l,=$pہn둍/ZgfŒN'.´!G)9[ Y+//H s|x0_bmV@ Bpf;̐> '%U>[nw4ֿq$M/(R& uyn}8w. |P!,D$M?,ƣ#ቮ/gTqXף҃Fpd}"Gut;g^ע}Dϑ0@9G- +2+`sx׌`ܳXG1h4Zo +1u7bZ +p~,2lGqVC8=! r/k>WpRMҧp55>'r2d($t02DŽЁԋ{}ag% ?4ˀ#I}p D0?CZI DM|ɱ=,#c؁ ̼ȳ2if /v2y'Dޔޘc)b܊9W쁔ǂHg|hbB6H>ʹ^+p(tW~}]n1$w凟bKb)O+N8Vx8mKAv+>J؛$3ÚtXk8 C>pu@K4ޫL43.k,6YE52}O8aG2xo){yթyM~Oj;k'V!jIm@)sA"4ں2}i6Rh=VcwJpWKYúIE-ɤIvAg*mq]FA/o`W/ǫj4Z)J0Þ "2dDښ_::ZWZn Ux/ Z-BgGΏm[%2NS*cDP/ԉEjaap趰BFX.((˚e}ASC&7ha`Tc:/>T@*N\ǥ(̭y9|a({\\.lK6Hz$%䆤XR\,'E̹ Vw!p04 +e%]~]⺠6pHxβd6uzI 9rY*[iXZW(m['SIO)WϤ +黜1qAx2g"k._|LZP޹[a74˵@ vYx-69W2}7Օ6fKU9Y|R^(_[X+oT9c +|0_,C.͕Hec⹀ BLs\a(wު@e9S-GokZDnfTWpeBX^&URPY(w2T<@WPWg* GBܹw K`j ǰ (s.Žkpo[m4DiʌҜ\:_-VҋkT4|~zXZ46mH^7oeըt.4ڐ{ +]PϿS;ԉú:IzA-Q[*GvEyeaJM7K"MBYU%7E5*!D \n($:)M2Q""ʢc x}Uϭs{{mܓ6ue^|̜ϲSsSXbYrn풤֬ĜY)R׿΁1+hShWQ: s(+URqG%ꭇ7'ΜvLߝ1ewLڙ`qڅ[|waތ鹽 9F seq3`']䯢Uz+$p}JζPӜח|Zl<4+j^YE ?L*\:7py gPTa\QkŹޏbܑ̉'zπvP[ pՎf۪'Xm2ן +׮<U9~yʔi1IeKRJ̈-M)۟Sv,1襄iGGI(bL*|7c$ݴtSjSG4u Jtc ߅(G8/8=>LĤꔰQUbVDUoYUeS>"S58FؑtP[\p +Sg#`U!p]b}OlȺYuO +6o Ұ{┆#k&_e AX!#C9F9?pzf1d4;Şu$0F7D4CCntcye>{Я&k`s3z^GxRhe/H;HU>i19wXvOfksEJB&´q3/Xig|okT}H9cPՎZ}ڏ*݃KW6]3ov.ᘘ.exgsWaCwܧ;T"FrBܣw̽wԭĵ$&ֽz"r9((N[@Cv_ȹ +:['{ +fVcC![[B^:l;318Ul"[Lq@JS`%W9g˰g5NQo#@?B_?`< cb Zb\GЅFO 1\\ıu65 Z[`^EͿy?mȺIVv!X Y:-m(dKQE'5zp,Џmm?\b ,E9ȿɿ7H`Bg3XrKJldX!fɫ Fn1qJ#2,Wjtb/ Z%h +Qt!Z,ีңSzTףf$H^T^}FF_9;V=蕦z핡TAb|NUׄ}gQ>-U>1Pi8ïAxOnR7j pˀd"$Ab.NV0I%AAdmqRklvnvLܣTdTb{/B殩NjY_4 /;PwPA(EPVF$@$-a`uøh=Fe~t~\|绞F8m<;'àPN(r)p0p` +W[+ e'Ҟ?6;2>.x|`dz2Ex>j||;5sl_qoW12_Z9dl9tΐuG?79ܝ=Sdn6Ѳ&ɺ:kk~WH._>\ s$oΒ`` ƺ:@:M?=_ YeKݢnPuר9WhB;o4NoH?4J :OaL1<@?Z0`77u\h;!v|" v/ĹӽrXc ̰saViYVu 9 xD?ae_eߊ8yyu:m uYNko%6J^ +Lk6gIS@[WT1!'`$.!dall/τq'yu.^;'|t3F7!7*r-Kr)N[ xNzUm1 iǰ/9%aIASK>&( (G͔,U Rxɵ +6qa<{w6mױ,N`.`VB(Y*-D_0 +M +a1!OaIQMȖ_O˿EG/r3 eq{C7Js!9=@O՟;+#״[kK>bcrŴ,$QtJyzF^7jD'BݨJR +to´2QGX;+̊~ v.@=<@Fᅡo@ +,um+ *iޥfvi(L bչ*$;U!4qb PNsrMbl7㣔 Ŀfqhxb #;`N4f_ך(5LJn!T*fʊdטlceX 4)f3g19baNbPWGQȿZwvֶ/8-Y NȫXnEeŘ E1BF%^1GQ31ŵ0G!INGW 0oF @=Aր!/̡gUAx;CcQaD<`M[#}UaPl;Lpd!=0< F.9^9ڃ.VC c@е1fEi:jN}C BB nPpuutZWwkcujm[]j-QV7j\KAY q5̳.dè6[0EhQڣTaI1ȇԁFa}KnyZ#{@j~VjDO';ZJg@y`C7j>8PtF$bQY[τtJ7 +§7Ma'z;Y#[,f 'Ҽ#8Lo7o +3t)7QU&@=G(B<Rh0 1|R,,,# MCR4e4O|H{q >򃟃|"= +Z1,r & d$RD2Q +YX:6/5d=@:e~1@3S7,ա:b12DK?eIP$!e. Y?,*hrJM*e) B1bב"!!rԒwgh0C¡^ UKuLvgQS˩ 0((FV$BA*E(&D/ pț9^}9T<vI,r4(Bfˑ %ˤ(]!A 3(ePA~RΠ3i7=Nq7ZJ3 ~"E) ȢQǣB rTQ_Ųw>Mҷ^iaCp^x]!ybb(4ÈaӇz}=4a1h є|z>1Og+E7W/~P 1]>gsډ0WcΗ`d#W^8MWz-x^NXoJXX՘B:-sɻ e*cMrL)/LǓGR$/O +CU*t/d0K.qFl=3\y+-oJ-n5٦yi̧f>dm~3ZeVZ*3-噭ÙOfܟ{ɞ = i  va U<>F2͹1ʆt}}V"f V,FzU%])7B?~)(O$`97ywsGh|&3~6Cyaˎk]K&3̆ݑuEZQϩTq+qc}\KNONrUD,$`Kqsd`*v>p4?ʹ37.߁$Fm]ORt)U]AP-(R (/ZX~pɄD3_%OҰsb-׊ tvpԅ2XkݫWon +HJv:WWV$,H+iEi.',QeB?q*J72Y-=ηL '*-(e0xnE><9Hi9ZIv^edIǥjT<1Y\T,RI|j: `)-ľʱV[i 5Ƌvz]kecc9ǥTDP\$ (yiHT*\'jN'I4eb͓DX$HPE2u cl2΃UPIo$3rM!xY$P"1͹QhC;Ō4FD؆Ymxx#aVx<:".]b(;>7J yǃeF8Dqv't%6#!l26@q$ 8a& 6B7T#z?{{~I^ @;rF$/3q)ɬ,2ȼ@/0pk|8દ=(td/w!z>΃уuM6[AX14KPv<-X}V:g}ڟ37sFWr/){/aF`QZM/(Jz;(n/G5#]Ȯ\LtF5bT6O3VH&_kSXU^WR`8oI0&a +a)A:l#pIhhVRBVgX9Ypz,8^'x'0r`4kOe#g2_CS`6o 䊡ӹu2Yx?ft3L:!WhKY-M\w*w;pj5Qsy9LhMgZmG>NN<~۾\iTg (.T1.I dCB%laAhdQ.(cucuZێmO3=Vxo~x?ΑU2Z6KF˯x㋶z.@;ݽm'{]J"ɋ|!}ܙYmQjPnS;nQKn /$f|SKh^X:K{㲋1A>ARњAPxX8^gyI_R=/KW-0.z\ʹW0[>fv\ba^u5juv9gYokN^;D'(( +Qm+b|qϏZ'\ɪYv%.r֝]_,!poG??/]"cv"Bt=W||7Sn`nw̘xM|hՉhդ~`y@bndzoC]GݰKݩPnWW(fՏ&կFnxGvB"kjp//sa2v-~Cw(#?Y؆8pƳFJ䍹e<'6&vzc}4ceQZi0ߩqI,taqMqsz#y?8b߄RPX.4 77+YP(*EYDG$Vt\8N8NXOqu0PH!RqawcV:=<9ϹpNw{,ftRE +!rY̡9 oB`]~^lL)6'SXf8{dsb+|G7i?׎(ԚY|#ޙUG_D޽y42;00o +z$9#JuqSE;RLnQՑ\#+TETT,Q qۧ21uX)8S z@|9]|i`q +Y-È` "jCkF&$au3ġusġD!DA? 5/Ej&;ä+%!՝Ctr.9(R ܩB. a7z|dW4Ze D2A/%xO'ُI}D8,Oi^"U& h%*o "BIP6 ń}NЏя#ǀUT`N0N&w|+q =4]T@Ho~g"hzfľ5aR2!P%e+fxG0gc3b5J vԎBaUW8K4|X? qzG)020ޥ s()YGl&2țMVzQ(G6> +O LrdF02yES; bDpE yf z#<ὰpQkH1Ytitх! CK-D,TG~!=^z:j*ji)_vT"49L\ʇt)5,1v-bj{s+| I M,"<($5B0|&:U~fLũQs'b>RY]]*Zz$.p>גx8BmQ7vϋ{Ǵ{cv[_"x6^[G 4 \mB*!Aq,ab4MK(I\Y=E5 my.\53cmJd~Ďaè=Oh}e6S"5FQj^+JJٟoe7E~=-;Y\,k!z°hfyn ܒ7IIG9RpL OMJtϟ6Րc6w@=(Ӷp_rx$!BAGGP-<`r&lM٦ Ӗ)+~y2eu"û2=W 4UB_ )ȗhÂ?4_42PID#=s;'Y_0vW; |g5E85hbH=}6EE0_QUԉ+D!ѺS"Uu2[2g2 R3 B/ܕ!k`Աb}ρB9mX0pm[bǚrm[&[fӆfgTJp'<]pX*NU> +) +)`{F<9s'6$sbj-1Օέ(^뼱0~~Cg.?{RH<*UmJQwF&FHWĒor^ab6 x^uT`s;0WN*jX_?"d,ҩT[SꗩWdÒt:cDꎆ.uC/Baz&x8?s 6507ϡXf/:SzSeCRy=F_ +GUUuAUUUGU}**1~R'4N6fMu6dp!}m;NEhl /oqIڜ<9cmSWI-6LܰvЦ5!7zfM`X[8уs :`0m$wِǑ4=+X=\).,igcܶ8KfJ9wUx\Rh޲<ؼk|x |qQKxm2fxFQ{b-ptcAI52Ia'JvF =_ԗܛq-t^зޏޛos{'nfW.OC lݎ:]wnY$r!WrgG ڊSK,%עr\{/ˁk}=cG{=,nfn聓Ex.hG!2`5 ';Hzd" :PՕg"*FحJ&['svk$7I]+Co-Yfm3Ň;ɋ1ݳ^9wYGDljOafӪ3Z~v-b- b]%) X UFXoIw&;54vf&8 vx-W$Q̇DDsD+?&rL4 ͼfOלh4:\ &5VM6ch>%!7q 9}58K$%@ DcD3?'uۖ>θ݈0n*S{hh>^!x? pw3eY#DDaq-6 +!`.]!DOp ?$z ~?ay+⮂{ܙwv߄KK#7<S;=_F_+.!ǠHى^@{zĝp3A\p*6/߁Se䙅)}Md@X%&DvD +"(#TVǭ[іVkjTkmz0,^!H Z,^5tAW#褗ԃx۠8Ho.(snGw<7`d +& [xp@xJxHv.4ˠUZ24#~+Jҁ]vT1G ӿ.25ܰ?M Fxx3 +Xϔĝf*Q\q7 /ttٺw\Lhτzz+d:&0etC +Kr55AtN{ G+"< sTy{0#̀tXbfl{.~3YtJun1]TUa5].ˢF$ZCE .>3C y!t-:-~B'Mp21Sa&|3 xoy?9q5QtUHLy>}n1.XVѐ:g]Ogmmvtb.{=9jsk>tGLwh 5\j=u2o9,W64l?sQ9;.{%{µ;Z=V;^;⾒w} n~_$JNH.wIl0&`z"NП%=\o覽!]tq!Sbtz'|[*W)[,\[$%mv}{D02N?f llrAz#3W 8o`@@J$,B! T,1 7*k#0jgTlN١ћdC;dwCi a`&^;׼}냥71]uKP. 0W@pgX}a c{³[‹L6/0tcDiGD6fmZ# ?c~Ӽ)ao-W1ˆ)̲~ +]` l/Db1w%7Μ>HQ3ɖZvy:yuOkmVWشhia(])[.jW7;-m)e1}Y3 8k@a@*{UynQN2ܨjc]:9:~UTCcTcCTc}TFeQjDr:\=󢙏fq^ɜ*#0?9DsdZH}I%YH oSWEZR*f%91n"{|uµFmZ*fJE{Eaab^0ג6w&=bij}ueaR"1ݫrKԋYD\gNSDYfH KyZRL,Lɔ'$M^4'yE65(#'(-iO&tPJ)h]s _Hԍ 87Bj(/ /̑۔ύq.Όȟ䓝=)#($-RI%%v$O=i| +}އKØ=wc朏s.h)#j(סTSʩ,(1*)0/[pɘR,U͞ɕ)rBcrF笒EvyFEyaygfP$C ])"* 5ZU$5;FeETPK,XH<)Qˮ&w;Gx{KꎘAIgF~idbH/&릓fշ*o 'Iߣk2:BK3IHtj猕,:a1 ӗJJώ1*1}{DBzՀM#;B= _"E|yobc>vIN6ku=Bt]l."!=i?cM˔ 2 +M OH6B[2\[=m 铀ؕ"pnnr-'}d)ZGz\X yafǨ[;J3>gk }>e++5zŮWQY72\ͫV{B7͓O?%|wl, M+0yո6I5#&:MwRg4b\c ΃ +8Ev*(x80 % v z +paB;.۠aYyKsH@rSJ;|%1xCe1h(c@c:lUh٬!eV Nhbٿle@Y5eݏ,vu|wvaF{}H 1] + 0ZjG|d +d8E_hi4WmJ{垦"iT+V_\Ȝ*_+c0K{~I!3eJ~ P x0KTɰymXj0GC5P}PP +-zDlwZz؃#Q1 xPCY{ v^G@<ڹsaۮr3|@~Z;וNu5V$KohKs`{P]ӌno7\_^Fy11 øp7. y$ xj4pX#$" fD&>s-F{*[P{u8ǡa,: .squ!ܖ='G.j= qs j:$U{5HUJRc>.[(^nr|};&}]c hD`/I:o,YM|KWWW+ /*T2jF$@ m @H!,Bl2ŎX b10x9^&8v67iII̸36dit'3դ{|s=w1ܶ3Yxa"oS'p.?$beGm\\aj(c1HB׽Lu*OɻVeA`s[8yNyV%{zm +6x ? Y]~'E너ҷ8bqy /ya`zv#\Ϲ\=oKwZ)fD6fRѧg!$'$y~,/GYO>;caG~^r..Q6Ě6qsЪ,>F]SSBdx;xF|-dZ|/dRI/C3t4<" )_HGqѿc K"a[zD.X--IU!y>lN>+튘GLK"1VJHѝ +W(s!i. "e`$hAPW~c%gG +P8Tq=E eTkiYqyeԔ&zB;.o{Fq)ڠdf.١-{/S4;Cb;'|5x\ :mvFCum"iEXdTꒈ1*f\K*OPIfErb<[1ܩXe{ֲGtcͥK6HAN;3zh^Goo: +`>S3y$E+ (b*+{+tnucJ=դMkWfFiPm3U7zfsf򯩵aԖt$3<{-}}{.ѳ mLslxYQk :yLW*ѤզU3#ˠd7jzNĩsT^ck+fk*>CTQUjK) Z1s͹тۈ>bõ,|_,|\뢋n4ŨxPbdLàmkcI7MJI\ZD)vYKtaϱ,%si{%L40nasMK iZ Q#hχ lՆWZyEfh c@Lre x!0 >ʽņra !{ t 1^ctpwMv2VM_ȚKV9YBF6y<5 +8{\<l%aO44g!PXZǍX&T;6K|_6DgAAv,52X9pwmhξhv W-vn২vP38Ճ3P垃-%o<*DD=DL-o)|ğz`(K[w6#~hK>)CG[>#=`ha >~i7ɸ7ݸ7d_IjB&~;L}1i+,k{e~^\YUO3=;} Q5 CG7)6-bV?JEy |ErEE""WQlVT[f)-Yeh*u;U=dǏ lƋQuťGO7-RN(Pj+]UαQd+m6 em6M.eB 'fpv ƿK'Əl>oA{@qf~Z5jk]5JCVGM:0+.S/CeD5!MJvLVe:&U*'r?96󼀇Ns~w;Qp?>5=G9nOCɧ]ZsP&]crdmz!EwZHـXDx|u,6X6/x,&x뜠#AQAdQD +ggʩ[wx/΃8~miӮUzLwƲC_M8Co:umN0T?^;C6_;-V3p&~P&E>G-ɣ4Y#&B + yd 5[C*l?7R̸bY#E# Sg(lu@izϧΔGOv9kJg.3\W0dsSsJ9O]]wK +urOy;Y??<*_6BI$M "&(^E@\Mb Yje65SS62:Ӵ8eY3{=9WzD<K[VUsqF9̏.]17կ,!y3CF.3{)'gqtvNStVΚs6t2sGed_Lxx#gaYF(y++Rʕc}/Tz˂UST]VQطlA򀢢As g ͝]P5$zF~ՈGoN˷LͿ0<9asH5!,%6u8?si c2_W%UuOCEeLqE,L- *:8oxFqiZQeԢ:SjQkTJц){M.:1|ĢC + Mg&!er?J;vpkjWEpG9_^PwvUʀ{22+gM K-\^1lrymĤ K*XLsA}8۠R#(kҡj$ +uf~J>XMy}r&x];-dv$sapyQp Cƙwk~z`k~qU7cT0%j\aIzK;,Ԝ SVh\ӛ'ޖڔ=)s@Rcƹc'47.7߸]>KYzkw?Uc Yc9|?_وotj%+N棻ڂ5-!-irxפS<ƭNo/5;;oLkK;[۽FmԪRmr3Y\, o2%s9%dpf9NVP|yUԁ wRFizmiW5T&k"qìI40kcuPkc!0dV)` o"7~ 'psk8BΫx֯cpϧ%$m.) -u lE;l6K;mmnucMn{urw?w:ۥ-<2 sA*X=NgLC|RrK˱;Bws ͏^7[7jؿEwq\[`ЅkndW󺁏Ws.iީI㟐FuIag,sq\.p_ȢȢw?:RkF>ypu3g<(/I>{Ex~9%9$UfD_&W]|[-;oy=)ES >^^o;>Pj}(}J}>,}nb\b5q|LAqo<gz؆{]z385 ߌYxG\u |ç7b5|G,7i~ +Mm .h6`ȇ~=7fEBf>`ʾ?>18{CF@pf<| +G-SDv+pQAJv/z29r9?-|l.37^ 9pR 7!D3g2G> pT0eQ,8ְ<{#c??0zUtI>FM"2t^10Nc- g(O!2=jؒ xZYCgØxc^$Q l/_3N쭫 +k"Rqݍ'nΏu8qe㙋JW1gƛq"ueŵ񻴏O?pQ:Nds݋# Ot/!i›#N):2CLں8~$HH$@ 6؄e  @!.@،X @@l/qvid2ͤq4i鸓6m&iףowB`.c!cr4`5iނ+p9t.݃B`咰3!iO)y'R|vO~#.K>/nEe~\1pE+# e8'ހmE߄3†. ^'/1QClqoc[="7m\LLq&KA]: \./*k^=h^+hV943<3Y >W~1|V>d e9 s < *A-\o\X.YU(ԱI.91635igԸX7{T3̳ݚ5 g@}ӧusTN?\veX+%Vh ׵LX)HN+̤Oh:քVhmanmK>kǸ}K֞97xwy#ZZm%ÑfOz=,ZDZ[r7>a A8Qbk9CA}_Wѫk9t.S7yU\t5h{Ѷ?F+D"$c FehC / <̇`^i0cYFW AcL.5F:K 6C6E"aAd+YK,%U*TJG}Լ_ٵl༅x173NUxkR\Uj\m0D*MAb+o㘴8'2IKRSزǖ~-.3B$O0=ndἅb,SձmÀMNq2N*VTW֪*IM-5l2|:`މ/6+ޒU|&-2}%)2rR3?A4\G!/g~52)zΦFSC(VSe5MqeM2řPl9xd:J|B\4flSIn?Ĺդ( +$~~Y#+? 22ۄ>9]Hhdj#nkS,-(cIhh74; ZT\^ò4Dp[!T+8VTS J_YqG{ tMw&3jT +g>C+n7B^hhbcRtܱ$P9ss?n82idfwQM$?0;idp:\8o3:H~ SW)-*#._jlbDk߄* K|ArSI\C%2]8284h,&=o$.fv[òܭat8GgY!)䡏Gdƒ^.E|<29u03@': +<ѐ?-t2dQM`((}6eaL51zNڤ'o&M8 q-agQ28ndz{Cx*2cH@#)4) DH^%7*y+i^;-Iy8,EH{p!!+!sL~8z DswQrd w sg5*C!n]R@Sȗ_),@zDOw}uE]fq; 0 &TU@W1exɼ /"o("xKMM-Js5-RE~@|?>D7RwHQCvK}qr(`Cw|qq֥zd_^#rGouj95 :kh%Z'5{5_?p-7;paLaƌ:N7 _{4R}@wCw:cٺ1u-вA-4Rc+}"$ao999GxQU~.7Rnu"ttyDNf8 :| PpހAOn!](]Gr8~\(Qkd-u9H/LsX+}@hO7isMp +-܀zA ] }8<+n]ea430Q= `,L}2-ӿu([b,H瑜OT:dFGam1^%:}AU22J~CS o5Rي"+=ZCyhF@oFobO^* +*ezItEvqdZ:]ށZM\CmGnݨW/W4Ih̠Ө\7NjQ3R~lGiܪ7JnFLQm`S ?Uw3Gs_1 Բ=X)34U; TmLW|mX˵3O֨kMUfگ *>u>WT{[kn;}QһJG7| 6H=jwW՚U̩*0U6J[+(EA*PY"m ViHևimFV8t +Cju?rMy;Zeu+rk2g;qGpkm1 QmpKUYõE*Z%hc*m=NZO63TffsZRa[JUNZvJþ1, mso+7"WP>P11͐aUd!7rK+;w.1.2fwe̊|ݸ$Cȯ<D j8O>u /qUxX"k]6*Pf|cU +x,z4L,%19^cƔԘE2eDoJunn>+6S`v'VhpCN\wqvqNS-;6gmbY ls|3m}ږαmijs<+ߌ ~)?MuM6Om||O'b?TA9K16 ޤUZٻain{z/;|3~O5˰OO϶?koyƞmiϳ̰طLu `R0!>`n7~8K4H wĒ0jEe Ӓ~]<۷yN?-qh@jg:Nw +4\dGNӎ -I8#ñʠ8oE,+%%)3$w2<5sXO},8dh#\k89M +D {"9$!NH\sBuI0b󨻚uڵVӮEn{P={#t>'>yI$s`VRy`fmɉ/&& O >k'}'>s޿UZ`3Lg, 6jNʳC eCJ\ 1S3'yf$dM⟙TԴ䴪ऴ=&m?hb)'M&}y7˙;`=i1c<'4ykM2Etɝ-3';=;?%++(Xo, 3VL4Z'W5ڂO1^y/:__tzo9m6bZ>H3 ŅUX0C~aSvakƴ=N6eL4bM%AgŘjǚ cm;*OT#nzG̶ <#=\7mb(oJR7OPΌPg;OR:-dd=2Б{zA8]%U7ҷd̯O-exVYgmآ.?# ^e~‚'?Kqp;<ʽSo0 guM4T$~2qñLJYj#LnOB}E~ByE W'z˨PW+_"L;Y%c>˱RfKtKuߢ کW9@~|a):qEΞ8Q(Ꙅ'GoK"lJ:@X6ΰ6NI'1zqT{u??ÌwP?Rǣ1܆[p >Tj "'z8Qc:Yrd-48VgVVD{nfZ0`;WnXX)zquqTp%F#32T[g%Mv`ΓV Y>=ߴwɹi?Nˍo(ai,xҨ'X.മ+*@ @ /$TkAH#@BBhA+ZXBK0X+֊v!xq\glOu3dIMd6mtIf:i36i$/vx0s;B:tu5wr "k^Y͛4qѰBlZV +E,;Ir:ާF:`Z7Zzfxi9#@K -j(y2f~f2/Д:EӄѾ`9toCgzZsg +q, 1Ch-@+9f)Ym`m\n7gVL8Sc.™[mrFqrCA_qra'VȄvv < qڈ$ZޖOI\fę)q7QC? aN4 O  WABυO+-xoЊ:,'Q +`CVZ,QҼMs9b޸5:L%.h{tX4d FDӴϴ">ӮxKm|QYO'bVnx/+hwUa pbYA, LJǭh<Z ECVx[Xz~Kg I{-ieQi9!XvdmȚ̯weCMm|L{\w`8Qn~, ]DcU +;2`UoT_ixNkoIw;m~6h+ZmfۦmlPU-Y7_&8˞:֋.:XmE3X&S@Gk4J{XskڭlnOl܎ucD]U1qNUzW=JU5fXi +U+X#Ѐ8 V|=|6bAL 6*}lN[j4*-rw]}bEru'9]}ծP5\ZMΨ+\'I4|4WJ A~jK` YRLG[Tj4T&k5MM*wGOpݑ${E]~ZuDmEqu1.VC/}(I$,+{ :7'A(>#DjzPCUZ 1byL`+ Ć@(#) "]`;.7pE+LBexY|9^Y01B m{REH@eD:N%c8J…>l+x.$ w +y^f7#t~dX+ۇNehN0r@ G\a"8QѤ#ɤQn$#z:13JFG20QX-M ȻY&ǡ?M5ǡR)/N{(eBjRGH!%&FH]#y$K$ ߣ㟒(>:<   "h7Cf:Kd'Y$J[!ن$)$S\,1 bVjk#&C(^6 amއ3,]ù%ppdu]QQW0# 1FabE2( QDA( +YP#b4m[5Zm!$icMM\ӓhbr2}F8wf{{^rJ$F$q՛mH:V66eENefocxldžIaR/ ޙsLHܠf\lon| m"=Ž.ۭر&dȺ n7ʟn0nf@Cnv]ڈq=UGs9<"#az`LnD=DC-]4ec7=6ux?&-|l1yPs[\ܠɥA{o~t" "G}i |׊viX!:?HZfb]s*&tXs Lox/.:NS2h(EκҐ_ G.\"?>Bz tF|)utWN8!I;E0xLK΢s"_9T45vGxF+.[mƎ,z=YMK|b׉pm'DL6 xN~No+t^F)^n;W;>O4e1"{BF4̛J{ţddyvɭFFvSֿIڻWwؼ[+&z>GW̼2-$ f|wY[ɆQc1e0V¨Qk& 0s$'2Ob/;adž3bμ'#a`DZ&J1sG1>g̘WZ"ִLjKлrLΓ0YwCxFN9p'q]'N"4R cBRd )Ycլ@ڶ̻-J %tRFCrP>&}E (xMO)$swq;c18*0Vv#ى#{m5+!Qw >+I?,0?`M1F2g~6B"r0jl8MmJ|AGvzF=ZJ|5/^XVL"= #Oa,ױcMv'[f.N܈G;aTzP znLxP}F geaAclV6R+rXJ3M0v}T;GXwWꨴZ5q ;U|vZ):V;߂+pf?YpYQ(MFY.jiP:QmժR:-+RtKVjHk/5FH@aUޑR/}'EJ}37GH)+E~B.EEI<پs}~TfؕYvC +Uc[f W))Kdq"S.0ũMNyNLwV-GVGֻGFnsy-|u]x=]ծ ut޾Xr!13s[AH.ƻ!2+GRT !Slcb1)IY[CDlN?!=,f[.(+30JpAQ\p820qe\\uh5QSEsRck5f&mԦO$9|8߽w JH*(;Ao;ߝkRoJ,IY C3D4<+G#!Jf2 $e1|Κ9,WfFp̜F gu,YnbqieSY; vy:^B4%)ebRy;58Y%Dh`N'Cn>9M= #,]8Kcf@Q1{_w"G~GLo@ VXky.WfI;p9Jvļyq>]|ɦgs)4upNr.tmiw/',okjk3uV08X{8|g.cbzK'\V'W7CGWoCk1e3wٍ\m]S + &oRW|a5xA͞dhz}vڄ5]AEn>5mm灝8ρEȂƊpT[wڸ;;^ajjQS$QHA +pYgezKV}Uda;I/ip9={6xo_ u+(4'DV +W#Ogy/'Ef]<3d,,f1e?`\xRWaIP.m pHHjb\ ci((rɕ2Kn%6,[U$.Čݖ1k9<9`ϒ7.pa%R2)*%y@rQ`5yT0*8h rmNi%&r%= dd4υm'np;`[{K`H֒" 䱁<6xTG%^%VE3WnЮ?'&'j%(5( M]!l +ӲQ2Vތ^D/n.&=kջ v}e0 ZIvjBna6"Y) fuc^Փkh7=f89`o0d< ]@_wǏ{.ů$gSjq9_|zuFPg~SUqnk ^u9\zy[z%"]$c]@ ~ײ Yx``T75U_{M a2N E4gl9#=[itP'ͨ-̻PWDHx̋%$jy%38\8S1(_%˷YP֡?{o +p}h7zJII{ӎhYğO.QJˮ"ZlؼNo+絏!G+̿nke0#%V"$Éoכ8y$ZOTL̥@9xv3~'k~QM_yJn_F׷ V4 4d,!I5QBb.ƞLo TQEWnb7B}Z Lq?T?~HXzH#U?J|ă!Vau-aEV(2ed<EǯB+^Gx`Ǧ ʀ0Z88g&-&tZn2c)K%tbV~q{Oc]3k_IVY1zPS8'NVh?c=(;WRD}kׇZ fW-7&j h_Fjiߥ*4jDsm\A04MC,z]f?.l7pݬVn/UyLJHF0&vl NlØǜeB @HsY6KI5iHKd%ڤM[VvJ6Mؚ֩v賿`E#lN0І2suLR1ԋI&4cXFc$5Švk>DX'}ɱujbyɫ +q>~W)s(˳1z̤0ndncLۂQma gF19g<ͼK:C_B6&eW +k㙣$ݪtfxN#W: {0!uCBnB ]BОUhͿ-y4})iʍIrCr):0QjY{>Jۦ>z F 0\XR!b aSgpKz~IU2vK;1i4h\gdM2c2w2|}UJIUFW =wSg 'bI'%f4dudmfb/6<-z͇ŝS2)֙Ě_99uY)_;MD4qe xZ˚NAfZ6y q~_ᵶ*vZ{n됲:RZO(嗔Uo(+S>U,+lS1S# ;p8@6!xO?v%:+RV`e$WXEOEN`AuKJnN~Qv_i}ҲSYcz8:E" 6Ag5ZkuH)vEFtU +GG:Ɨ9- *T}OY\ʢUE:pWȹZCAkr5 F0VZKa<44sr$nѰ#ZisT]~u-/uMYUkYYzAat]3ԿWPoqzgLwT}|]܏ 1@M;qO:_ +jYp W.*|uRWi("_Tamwd_Jsv~&v?]1c|ܗsM~f>@2 loCyQX8X#7wX._<" >/*ٺmIf3I,{cur@J9bD%p+ka$6Jv>T-fiNWH5(E!=k)mEJWBJ0&cWȷJ%0]\D'n$w m=K"tDEҐAvĀH)2#vh#uH%ҎH) h H HuO3P 1e$&[{6r]G>z0}-J}GT-$F3̓fԈr$Vaè]PE{B9qH_0L6c.C|IHc@҃#v]nd:Ӛh]{ )SM ,d$$$d#l44ok$ 9rp\=<rG:rL{8)2 6yhy6?>Y&rq`?cϐo$w;9țE9z?EY[KKxoBpq,Y̍I]f"3l;~ٟu0U1FDv˜̹ț4RiȿLIq"Ts88V*Uns,9N"۾>7~'AGq<|D9goys]%'8hKK /S| +W᮲WЕl|\~?COqΜ= @4rn8wi]r<IJ!Ț\gM^ܼFa8nR!|s |ŠofOxa~bνysgV2LrnWrFpi.p S#!isp5yss?B\X$xb> 9C+'d@ 4(DRY/pV/R=L1/tnj'gi[Va.;(pސ kq$|Zk?r>3i)kh㍜!O2JQ+?1~N̷:B?/Zb8B +;\N*'jKMzBr1ݼN_UiژP3k2Ss[Z5A+wW6V]j6uVTY%˵TT5dIOP,DyC&ܡil9avi3~i1nfnggo&upp@7Wi(g:'ANoJsR MzKjb5!Μjκ7;s߰ ycY<YO@ hSxVT`M/- +bW%8]VM+Cp"UnHsM6G_w=3L[6fBڨ[jӯvp,A|bHaN,w݉J;Mҥ TLMrר 5ݦs/ŸWj횈Jx%Wqŷa..ȯ>5 |yW'hE.6Zx+Dm&{PUJ'B=fxD]yJ1jmg&3S陯{SUo?1ЪSRTTB~Mp_ o!|Y^kpiWÏ\JzP7Rua[-1u2gH_DJ X_JH][/#[e}b}YN~_2>l\4V FF⁢" +7*(&#ʼnlؤI:ƚ8Ij&UkcϚM'ix{}dܖgC^s-v·FbdTNlE壽 +`@@[-)Z(Kq&YiA yح`ceLT*q-QD`h +T9⥌-Yd'=zZHvPrr pGˤLUIɽ]...iy)l}&z 1YxE4 /Pt|U>P'\r=( D'=9O +ލҀ,8E,s-h.V.VZ+`[Zyo\Y.k C +mJ@H!*1GJakA C,GS.G߶q0¤. u yF=7.Bu[zex>A 39Y b_J)X σщk| fuSnM.q|v-=х]Ʒj%:P9Y@(x'w''dx [YtƁ&+G @aJr9OpQ>=%fd4ӇR$֠08ݝ/>Zrp-śl;˸t/k,?q/ I>^߿c%p] dbD1NgB8wu@A,,&}4AЇS3+J:L4c܎7׼vJ..C. <.a›m`A$OӫXR%OS~c? Ω| 9~Xxg\GGഋ7[>8΁.%Oѫ_\ +_sEouq1?ҷhoкv2З7Q +Njp@J^Q0QjHHP'zp#pcμ(&Z+%c% B8􅪰߀rkgq?>Qd(Џ5^؏%MX}6'LJkB<pY?јG.~_&/~Lݔeʶms={CGp>WE $_xBቂgj*K$9z ?WKr?(a!TԤC}|{n.Y*rl13_k\V5K8zItrT +?uw.emCVͰkb(ZGa0u(Wҝ݌-ZTa-Y]Kwћ]pϸ(r; ',31)d;/:EO;UFgtҥfWͻT p/#}5~a 4x| +Ix3T|)pd‘Gدr-Z]B6VQmxիE4sz q5jFV׵qNk3L'4xhQ 7`}L+J5BՒ~V<2m' +2ZFǖrbW36_Vxz_Z +,g4B[FaVU9Ie *JRt,y*kJ^lNezoRe,'2䜒\wxp d]J\ YAcZ|fa* SOlǪw +|7Ky~V2+ߨ4%J^IK3)ﬦ^wCӇ33Y5vgpxY*wJdդ).!.!n0U8GεէTw9+Y 3+/[#(E*%"ΐl7̶&s 3yka8bl]ah|ں8>q\ؑwaclK[bkch暯a7ItmPƓJSJdF+1jafxcBd㴨ӔlӤh)?d{TǟSn +^@ +(rM0@\" +LD! +P$^@ +/jkvNԪt ZkZ[[^٪k;/vt'{A y| 5ШT׫fN՘xXMJ|C'|U q^պ&x*`:.5rcO1ۍdq"fA7Μdts6\Y̓Rcs4Am^̏j95xR}IIZޫ"MIHj0'Wg{|JI(YbtK.bRR-5ْ-Gh˴ehY[Vh(v%:2"u]TGj٫E<",H1dAJ@0V$7[/C ITk$[tfkbILUo%Xxkk֩#-%2g3g%lM%4ͫZ[JxA@>Fefq'Snmd%z^`+1\%VMUlJVn[ adHs\$!Y7$Յdzmr+uk6E@!yffdSR~$X +ILADd(QvDسt|n/PLj/M\.}eפ?ȀIzu[͇ύL,9pH#b@pH3\œ2̩12ؙ)!<tOHsuJf G#+jU ߖlA9k PwJD$T`W t \䊕H_WqEsR*C!JMS,S%%6.''󮬅|v|.vm,0݁T + t=P7͢u3nMau9s@X N\ oSp|p}w %9SA1ȃ +wTK$z: !" OAGyx<s/~=">`}p=zC*KMRk\{G7 (4LAZgu7\_#r0(_>G}J\"R[.i՗rK-8^*ߡnni%gB]Ir}#?.{q?1J_lXJ G:pL_ +͒UROW43)d=ϋ/3d9]jfš_"ݻ}+xSjO0<,gCD8}gHTRY I#6i":c!Yw='ާ`Ijg(D^48*#m.VSdzW%':{4yְVOl/  W"? qpe] 9 9 ǒkI9vCIMHd͵r!G G)rJ+Ppl:Y:j`- cu:-G~{~OSkٓQc'אEtsºُn]7]gZx;h3 *gHGK5Y>ǔK1\eQ _ٓ5>pw7+dmD 5L5SMF>FRݱ17 FgxHLZkJHECZ@!NT'Fa kSGXj PK5RcayßR]9ՆeBRu5)gRp63Ƞ`y#a85K,u-3X1ejTklc[ۥƸAyUE];ʸ}N1,! l:GO|Z?Ekb'-\5'ȗTCRIՙ}5w<*VUnީ2!'2霊^#Ip[Es:1/G*"{6"9]%9BM)jLM7ժ4B;8$8Ka1 Lz AJzx5 qv. Ω{5H>2-La-')"gSxm6Z+ơ׌Zhkhpn&6`Eph)!p륙%mh}^zyًLczWݨWR>Ͻw. ϕ|,ZV?B O ܡw0 f:JRT1ƒ#x0j`e4RD 5rh>xk,#BbRፇ7 +2 ?!hbC7PdL7[ +} eS\g?&VqT؛#-mj啠/ps11x:.Z'-wPf +f[XV NmlgO3blc?>Lf/5$!ZlCM49 ;!f}:}4}^6u/sץӝW'Z@eyDx|Lo^D& ES!H2 g8xG) 8}e.}QO-b.&k7j{|h@|Oqp|9y9M~F|Cw=MBO)D{]ISel'ip,q.x0y$GLIt y~||1xu\F{f^ g1?P*r]D̙ěoc*y3\@+`PC*]7nGU<9lyѯ~ɏ U奐(6N87f<z^@U@m!xߧ? +*I1 bƑpQhEC}t{黸wذI,uԯx5t.o3].M_W@c +y88p^&q2N$N8BH 8+€hśPʠ nCv]ۍ+FW[L]Ѫ[ǴZω+M|{(S2|,Oya1e#~?~o5 Wwds9 |} +EOwib,pt\-74G@f:y5x?^ƏSx ?P0.spgx>ar@>b >s,",8E0aa!쇉e%ǰN +< $dP,+S+oo 7ѻzif'H~JJcM~+9c^c;8ʑ>C)^_|dETl "ξ?z5F23_2|!XcSI 818JQ:͚| Xl쇸ڋދ8N"'Ǖb.QKl4~??hݹ+e/WQޝag\77S z Osqv CG!e(j%zMDJ;ᄰ06h"-x[t̜d;i +bӶvLj02`% Nqp*pj` +kYC3y('dU_-st=rbW_J]DZ2vMo%i!,+\8p\&8-P+L:[hj91N`W}z}3RNO$r6oGO_!"|%*`K;`7kz٭VU*tr>:{/tE}ڠGj.Hm6Zǟ5s\tˁWDlNxUVY}6 +mVq:0RqZ~73\ k/kCvz\+h==qޏ0 і0%hy"27߮eKJ,WFu%-US>WoϼI]j0Oc>:E՚.&?P3^i?s j5)7] y9.ϩ{vKUTyGU?%GTs[(3x070XP_D(QErg8_%*wTQ'P08}"*C#"cr8XiqZ\pKւ!ch)9@!ԁ y[-ιp.*gYJˊRF&C`w*5lפ\_յOe'VRkaZXw%W)K:/؟.rPj- 7߫4*IVTP] T*帽[=tZ(ŽWTL4u%V/SgJrEuA3*B*fNԀjQ[*c\O=)[to,^RA%{uw\IMJ<1ͭ ua5jnXswt1d'1n;F DjMUv36$[Y[̲X)W>J5*PBK涌в47Ӥ7q;6Bp7$G$;keχP q)1cK+) in!cBAô1s3q+ҝJK |+gjF +vl%k! 2, +L Hj$9g &>EP:>:O|n.GvN>fS3`K?sYyw$'+3z`y2C~6yQ}eڿW>|nO|~w 9{'lW>@ٿҿة.E4y|X? q_Ӄg _>RoDJI,Sc; Y8Öu-~`hM%1=AO7D^7G;p?wkFC~E.N**iZ,N&[hv8fc{>mzm%n~ +0l'|wV:iQ08Į}دdZv*I؅; 6 ǩ {+~=证]e"nf>R -苙6̠&-F*Z D*W ;M ZQT%PjzT>Ƶ#EH\mCAAigQp W.qW +_%2w\3??1c +z%ta 'D_¿ξ{*H/Gq6OCh8M +ibCンT;,OaE L4ԨrSJMTlZ&OnVQ^MpG;{|#?hM:|$aQT PeDDUYjTdOns2/W_4SF1V+ĺ\ LxgcT1ѱ*4֡*˗;DqUʷL2U96eY*ӲL5[3%Ǿ kkJX֘ȿy) +`W}=52?*I4(1J$*ߚ)5W9VF(VLfaT%Vjۢ^Y+6b?Vb\ 8:ϋ9x 5XyMSvMYQʴVPe;Ju+"SŲ8V){vTzE)7eNi3b{\HzP @(Bߙ1B(3MiNRy9KduUsMsv(ڹHQ^E87),sFdVhYW訿k[m ¿3,j*@1(.-sBk-"+Y8ʑQl^]jT +s-p +Up.b8;u]AYCNhD,w;ɇjxZ@b`fڌXDF;MY`<y=!`]?ON ,o+ *w.DFrY$pL Oʹ uE1"dȏ-Vm豃ALP!tB ,׈kGRVl~s=ؠz ~#0* ˂nb3NN$ p$ȏbaZgr#'v;or2bikĿC +V]ک=`Bƕe`R%W +YVY\z\ %!g!5]ʄۄ{U[FR5)DK 8r)K9&2 ޕ(F\W(k~+|~Vs@80&4|I+&/oA^0S}}J|B>&I>ˆJ]w8N +?a6/$Tn \cS_?I~Lf{=~C(Yvٚs0Bʫu3*1pT]8 7OD!߈|/g>56zG7/ux =^)6՗)S$w3$W18Hp>^-N"ȷ#Ʌ2Rh@2qi҅O{xFaCH=p>&^0v+jڽD^ϳ2t2M~f:vs?t1'h${`GX0&Ȗi1~G}Q7;a9p]mfdLchcq]Wgn|ͧK` rNZ gp"KFeS9YTgt*!MK}\X\FR)G#%RI&Qd)M,q9dQKr$[['fvKv@jG%E;&)I +;.b 7·eqg;M9%_#f2I4t0 qQDb⟐%BV%\w%cطk`mT"Y\\ {9 2x.-1T&FK)^MI2[b9O1$y3(f 7_jz^4Iw27h8?m$1jPX^rgi $"IbZٮ 2r r#,{\*(bN١VVcީVcʨMdi戚ci}~?g{?> +)i14C2m1($dVG^fs\3#bX`"M|ޏ|YN/tdV*`2d`8mG1dTR2!Ҋ_:=rK#OIgXK,%Mp%yrL~='jaPEPcK"F:_9"roe&zWNj;V+k +|[VSl~a58Vшc%L^18*wVFOjD\+ik*Iޭsn5`VѓbMwfӠ:^E0Ѹ9ek"rD ^a5HF$PMivFݾi0 LzBI9],jPq`? 3u.s.{ͭw6i4|3ģ!7j6 KfG,:4VA݋`w^/ҧvw~Kk>9les r`֧v~ƹ-K͋s/KP#rzJLJ#|\Oֳɉb1{A+wnoNLۋEJ+E{4YITmA}Wb}~|~yx|X,W$#o{^.ڗKw~ Qj arhp,w[珇 +N/ḻ(}rwٹb` ؝N9]?\R{9O4eONr\< aϛ] } +=v]@'%u߫eK</o½p; +78??ǿF;m'mϯۙQIZhNH$3@>%OH]?m^e1˽]i6> ^%x-q/w<:x4=0pu=c1>9,~@q$K;{IߋIJ,-< +tC'T;ݱE -?6JOW_Ix.r^ΣR8^ 7]ֻYeJlw$vIS;IV99n"ZAYNJIlۆgq7eɃ^2k?=>/z"MṅN\GGqW +.Cr=.~ύnx +SoNZ\i;4rBP%dW]džFЌc.q& ƱS-لKT7 xτi==?X!/2Xȼ)O%S#f9W,'{5]2uQۘ"ͮ7v='z݃;S'ZTXHZ=0PDb<]CUX).4+d햲dʅ=_)? W^)/:3{4 8&x +*UZ2[ktEϵhJ)M:E0[g$)w"%km{uvHLׅrcZwK^:lffMYR/ˠZQUzEJ 'Z]pp5tXҫguKVdl勖5W!ɸqM֯Ebk +UdíL- ۍdhnz 5Yݽ?N1P7M\%܉ +}>ih(72:ͳ=߭^ҮncCa#C@Mp8W9 + +(<2 "J 1"W fYo}}qQ[ZK"SեDei_=/Ɨ-8(.F]#Kňp̳Q0`;v{78b+ۀ|N +Vz^&DfBQTO((c\y[UFIŜ]$+VȊSbD9QP +Wndg{>m?kqH>Z:&y#zDeQ1l2123#FL\∌a1c8ΨNXc筦CtCg$ˌs} ֶ&Bgrj cL]q׏qd}mflXN謁BToPDuY-(OV3"wwv:vhD:UC1 qT6I&j\ݪ5-stݦɞפ 7ꆍ::~[o {¬\$ n,I@qi\SF勥3۫7C 16w.8jhuROy~ 46k j6:p@{8'Bqgjaաu1I/izţw>ݖi.JӡPIv O { ٳe溙9ݯKG w!3[sŌ)U`NiK@3&~J@&!v-z?tBMt+9&؂}1ۡ2G, +lX:K8 L,Ps;u1c ?mIgLt]^+#r0'w/cdHLxCcM.Ial-1>;Z(? Rssr~%=V$1Y zFuV8|-L+߆Xٍ.Yו3#fo_%kӁg8M\ΠdlHglwLM񧼮(?|;qvu+eȥ\~Qƃ%  q&?/ԋb+.syQ s>6]~k<wk:mO*z\-7]{B}K^vy6w͕\V&=0 Rd\&Y M"{|LˋAN<rO[O%MK*[S‚0# qm l/ w}E~Д|?#8)Y6s|5ݑr:/YB%-ai=^|Xd=^R+/(ӂz&$?Źw%1,ڔ3/YƧĄ/YTH9)x^WMxO?}>⟒-~S`4O)?LSOHXDhiޛiJh ɖy}Ed-xm(skxN 7Mp|n8fZd4,M5ѿIB4b]9[߳xFP O +~9=?Sn: ; ހKAv56oLO꟤~z~&=qqX>/lJ 5UpjdwJ>rسdy} n5ຘw:Ql~Vyp \[< in5Jȫ[l&$&zH8@n&k4]Upu_][x k7<64MSoZӲV"k|N.rlN|^_LJkxTl oz[8}[Će!xt +j[iY^s0Hnyǐ˞؜ѝӒQ11Ω;71=4uxjEnZCIF6UY՟Qc2F"cH2l,\a4 + @:dF cU+^k&Wٳq x jxk:~où ONŹX6at@Uųf45 +5kU]fq2xM76Qx>t f:1?heec<.0~33!36d&eR& ) d) -C -AUAX .bEn (",E*EqH\:?.&<'3/>>7d1%N6K!PD"$PC b3$DFt9b I7M^[yg WY %Dr=O'ajPLAb +`SXMubzDLigJ)[<(:3oQdxcn?xXcw>`&mi%K謹"V*®`<0E໕+2}߅g`Ǜ1aFNzyK`'>\c ):{xlv*ʎISi6 iBH`e +D2߉m.M|Xt;$( 6o{1G f`" bLzF5|2 0rNML"V4uA 6A.`^,z Ӌ1 6*Dld:bhN79Drb;ΐm)@hO摬Txe8KHXwciN6tOM$ՈlkIt$o"]0Q㤌pҗ:hցS@p=|¹fVr㻑kXsC29$㔒! ^<{[#aP# Pugd1iUdjHESp \z._1Z#kNuK.'f\|c4G:O\E .h-Т5%N$MVte1܋Sq1iμd>ȣqE\;fl@f%HW+{#C5z +=M9&lnfbOd2@!yϑ[xK4s"y8V^al$D;YN^gCb`N4N#ҭG>MlgsK-n;k't׌NoB̀W=:Q̚E/-B=DF/Sg1uj_S쫙B 2 ŀmMeydMfb +⽈KH|n1J tNs=g*cEIa 2GD & me>:5oB5c6b=JVL?,-(߆X'؆^bG0xj19=B=V)R  />n4NfÉm(MۉGeKw/Hp%5(l7ԌV"_CQp| -*TJ*xWZNx)nkyrFj +@ *2"G @Kqj#K~9O̓:F? b pDF8c&$&׫ %aM{YZyɌv;detzsns{]?``g>b1c?/䗧L6}F+89[o3oE,}>GW\Oӊ*?۴e;w}<ŗG~8qgΞşy7nrNS}e?8[ih;I#pOS+og"@G@W%AV"S* B!JJq(h1ILu%\Y$yWi QT)G5JuJ(YICiq>WT)yAcJ)%9%DTd[9X9^n7xytz &tG@Ŋ!aE4ATAtAGmǣ tJJ߷C= /3g͞[s-Xd(U-k>k8zH*Є'Da +U: 3g{/^3/_roܸyo߹snu-(,^.m.x̽c{cnMEl.(eȂ[G,?etq;W?Xv&YʭEm9PCm9PÊrXrWdVoE7v/pṽCNS9uϟ)]=a99& 9l^E-p`щ/>PXy`ϐ];?~#eN.dŇ'rO6 5iՕneϢg>wo84pwTy_/89Ɵ}X<9Zk69]T7cf~w<ѡ#Vm]lV5J֏=RˡE{]&7etqˎ圝GŲΎ&PzBBB E: #M]e& +"@z a5$Rġ/ܻ=-yx;EhILx|fy0ݺd~YOnZ…/i; JқL eW+7tA +-9Nb٫뺘F:jgArCҙ + -jB[;P֤">.-g$w[?k'V=n"5ome9vI0C+w~PqIԅR` -FB~\֋^|~D'fUDb{-9!1,V~x?J'ƴ/v[2?m6}?dAC{qxwUK-K έ {@Jҩvsc7/0ueڬIQ#fÆA.<{^ΰLPTt@24tςA#mb,gyDj쮁3geo\=Oy$PԊ0P#ni:{k{YKo j" I[FJzLM(rU(d%WPPefKjS򣮻ٺf -i:*U|v.h +\< Y%?MwP0 T8A‚)؛1:Iݐvv?PdkEih Y:ꐍ6dfF,$RN$>= MQ‡%! ɐUUiL +[`m'p?zem6UF7uqNLW=APY옸}a8|*7rl'FM'QÖ>ܼR9ɦe]{D ^3߯"[ @C !S{(Tg|m]ᰁȯg,5K)i]WFP]_#קڗ]7v'b 4Vo79tFtIwg0ecI=vGͤ urc;!LĐ)srOTmyetXG7wԱ[=g8WM YPs-stK~k&ֻ!pntkrj+v,o@EiAeP ^Z)7 + +Mŏ`S",29wqr6jr6o;.2VˮnQTMm&nE(x#s~4!d,oKg;qpyv=B"R`HyzS:!R[@&.k u'O]yðitIרi ʹp;`Y)ixǕ}'X& M_]g^?1pBObHx%nh>n/v[yG6 +/aAQJjp0 迮剜{v F!ytC9YYk[/<(3xֶw繮׫V)EB# a +@,D K2BBD~?>]|V;kSwpxQ%pPR@͖ ..:^+OFeeLŒy v hH xA>ߊj+Urd{p ᜡ'(cphzX0t1cWS0uCo`M6,Jؿ-8=epTN({)M8c@%9b1fi8c> h/2*4ݐ( O@ +0&ÙA#-'QOGEL&JdVUR5׊\~+^Ҿ  b]<,]eE@.َ D7˜*+X=i|*ZY 7 1$# GwdL~'cz|搤@t}PzJ4VV,Hӝ!+lQkym+y@ZKJ +}P>~3d)BrS|}9.İe+BJ]>өTVLjM淪S_Vц،>Iφ?1T4l>1} % yemfZK c% 1l&bȒ +j +&F`š'*^ vۧ-va ]u>d~TW=,`% ?[2t }@<}cq3c{bH.3rG#ͭ1DtW@‵g3dKobRyt!sSzECWu469f4˻Ս/.&T\k#ֺ έ NBQ]E'qrlP|z_KJtukeKF KF۷WI(sU8pى}x +[qIݛ `~;Qi-q`I3MasאemgSHsX8B| ]}6#?p;Ѵ?k?/KFIx&,7LƑ&]^ڿJ'ZgG75$?((/XyXjX|dsۤ%%bP9RǍMUݫA3sAߴgCOܱxt'Yjx扖Q_prw (YP҈4Ԭ@ÙCrdktb-] 1'`?؅b>8b]%n-j{T6`Nf[)ۓ'%| (Y=?PxPw 3,֍%N\#XYTqܪvV=ӎ +ک#TE* @v @""@lB D7I`EP?Og^6>|?>872(OQ2TnpF~2 c3кfknWPp u,,/Jx`+d2UCQV"Hf!c[K [Μ7ŘR̒i,3Ns$7x]njA DĐC !?Lh y@?n-w)O'΄gBIzd0?\Y2_ӣa{P6 9J_Aelhfs +\<[%ĿMCMcƧGd _Wصc8A,HSX)l򪪑'dF !WK +,NƭcsnɈ.HHԍ&7DZ_ڻy5ܮ +AKAUڹaxd@쫺PŞa\<{} dz_\@R;Lo{W?ԛ.XftIii<.h2z +)}ܡ!|C-P6 ;^XOUW7^[@̈0?zDTq/6a\ĉ&}8RxbĢ>y-@A $@UZCͷLfX:M> pHsw{T KMHi,?p6ɠ "կxIX}4)YJWrDy!Oi;P;\sM!KïM͚uΠ ;2'~zK]t{[hWO`{د#FAywv{:iÐ}fߚ7/~;.|Ř^ߛEyTLلuV(`Ю,Ͼ*COKgo{wD[OR(M\"OPo3(n|=wV ~Mt@m{?y} +F=8׺zչ9Kk$Y5jy}0Z8?gD}@:ڱWfh_3f-_șE%$M w۰0.<H<$ L&`(n;kO|ǝk|9wdݪ^9_g;i`7J;fEv{i[8@qcF|#!t{4DM:u]plTo*;h}tcS |]L S^[?˲p&Lx&³Гx +>e^q>)]+?Ihjgq\z~+!KNQ {1s9sޱsAa1%V++ <ٮ _W_mȇSaؽ  78Z/ Vp" +L E067SsC@]k\ {ziA|d@r4/wH 6"!y9$L] *.`8 A<6O} +CQj4_H!!1  d\w$@~-,iA¹VL/_Ѥm@񠇜jW!?lt@q;d` GL[ħRsfe寱IըZ[#T5 #lĐ%$$@5<t`׮BfF-5&c>.6'ѪgJ9a\ЖG:ntͧjkĐR d=MjC1<[mB !}3k.5obzK|9n~2,}NP,m7tשgH @>Y+ss]aFfIDtr +{$(s0D(n hP5Y/@ + 0/rPez[uuP-eOS  ܇T(rp$S2Hdq_ w⪐6A{.օPil˕7Ur1nJ5=YҘu.PMWqxn?5'ܮj@A y!1i48 \+kY[ W$ߟ< -(vc[nvZZE +EQZ(J("+ח#R @;| ՛Zn2ks|37GـeIk"j%u[]eI `AcJg&U@F ۡn`\m4Y[ôk͘.^GPo.&tsR2ITezNVjQKU q@M&';, _lq3Mk `XvTZyʌ8|BK̩R؃)<!1е3;7X >pc|5Z!%e[15UP>ўUyS"(C+q`y2U|4@69}KZQ߷4ȸ3Oy-CԏJXAyMmI<ώVSj r,n`aT XZ_B+-\ۦS=?kg?_PV™aESNI\ܿ6)z{ Ǵ]Wfz*#"ykA!b(6Vϟ+Ϊ?9{pNςJ4r羱²fmy3)G:~©"p܅5z=?(h|}rXy1OՀ#`l\UlŹ󆧄+˦K5>m6Ҟ2@t.pp{|clJ牔 +r'eA޿~ǓC놟;~waκ> QNԪPhD+ȾEd @HH l@1Y EVqT#q<:[Ϳ^t.|^[.Y/XIyMFBbF#g"虸3҈tiL4lVP6[*7&Kn߾z/5 ]Q HL_!0/Q8蹓輰 sļ9 +R./oP >EݺWοg f2_ 9'p4: 4Χ Q3zR5uG .-\ e`C` ‘XpȓޘO`lD!wbp~@BbA +56eҾ۴v}=` ;(8~u|>'}0hOݭnjlb5JU(%VZlm[`Ɓ)k\xyx;x+`d"!W/zP( C>1,ײaz +l2N4 67|kn`t898;;Qpwc.G)@6r6B@; 0\@.0Ȋ9xH9I\ +Dـb`\[2NZ 㮱$Lranr~{tOyO5d"ݐ8Ft +6m%I\N`/%sU=yH^3O-?nފWcfF@vyAA R +.D)7׈_&%L\x&,5)UO 1d[}\ۯdB7{Bad%į䦒ge1eoSE*+%A]W?\;&~|,ZI>}0~3j+ۚĞ@ŧB1D|.55%|^X,U*{JyBT=&v?5L' +_mk^'(@ yeX[@pp;V'C/`0d 3f15!~XhV&̠?~;VבxZ k8v8 +σ p]D/ƽ$ G,td~4QvX1EJmOokp2yV!#bY6(u 2Zw5AocbW$g) +Wu$JLN I۩!h;F憔}C1n +]P~`y!,e}T̓Z,i*sOQr #W9B-2%ڞ>ӭ$tקh5i*9iQ@ + X| %6[ksvMSȘ_/Ɠ&sɒIvPp5]Zeo{vޥmHݗ*2t-,6A` nZ|^z̬2."=%O0QJ,h,m)W0~IE) "&(1Z{F7VA4꘴i%u>E<\!$jn0:빼>9KdJNS>OOb#Tۗ]-ߨ] +yq^M@(wT X}RH- mz˦k5 @ Ala2/AamQj'~ +?Si. s5UƺbF_;WP<|hu41'(Ab֛n7ϵ^%}{a76g'P+/*ȊJ,S WΉ|֥sVC!b(@ RPgZ6ոA'~Ə=ڳ|E*bz[A UK/JIe%i1u$Y]Z}!b/;uuq|hcWڶEiKw1!!1č13q'UDv"j>-]a^뛧-r|qJgCW֌޶6gc{׻\-wh9+.75>]o =RS;U{{R+hs,P@4 *ܨ:&>y`-yii-9̹Sp7x{@Y f8qhShCԍquyj,P<DC2UtIY2xm1kG^YG|K;ۙgor̖ffkᕀ['_Lo._hiQ2M%ڠ4%ޮ^ECk;G o4bϨ`T5=wHUuۧhraE >Mv,PL4)goqv}/ukk$h}_׎ɩ#ι1C.A/O=~Ʃ|[<]Rz]R[:xqG,PJ4)S{:~o7Y/07g+1[n'ظOio܎҆i" + +DpyșcN#e P6gVȏ] +_ڊ7zi uS&䊯f +R2'&m"&c)~\ +MD &kMFuDp0 ,> <00NGqD(z$3i{_I+ڋAuxz7OS^5Ȯ9|3~NGu'yX˟ RXdm5d@J,☭dc>;mV`$ETr^VuoPQMaڮ?jڂn4nsV5pS24$-[ѐQl,6OWڒ'*D4ѣP`ƿ x?8" +]r*կR(\r\Z e݆11[.3 cvc%գӯ~:ۣI?&Rq<;&#A-(ds'Y):@YdUQPdf VaXYdk Ǽn4S,v0nHfQ)U&@Z7?}'Nq#/E{9m3=sO~6bTA 6Q^-T ԡL:CQ1Vv] \M)k(6чZS}h=dg'vM V1M\.kWp3:P]8׶Ylt0t/vC+ƫfshtP&}=oK{/%:a&d^otu0u ?%PoTUCDX=Z9o~˭)LTHlϡYշŪ[MRD5/uFKzp2~'B.F,oMjB]LknLJVN3mg it4QH:JݰJ!Z>?qNICo6)h dh>+Q(U5Ѝavh.vھ:7]gQW^?|q3hrҘ9Vئ3ә%,̯Nw-df>T]5@Ti{k!ph|vpɜP~M\еyX<ۦ!dFѭ?͙?|td}/z'D-[ "aB A b> Xl=(8NRWt25(h#OD[G-,;Zv:;Y +H IF=O8k +[n7Z_uxߥD%I:PG6d Mke0ch:G\< (7pswO'p@pnx-uG +% 5K`N.5HcKyaF!8lGl<p?Aa`N!jAJ$N2hGކp0w=_ 8vtBAluB餐@@h! 0QPbAAāuAŻYϙ`>s=%w^|/`#l (0;B}P8<( gs zvJ ~^|HDNap="" ΦQHzs!䧨QX[P8zo[[c}!f7AܾM@8 0胀H~$D RhM X@9@ƍD { ̙!~ <~2 zA¶5Ym` " +h + r (dMuT=q +DB!~B&P1kP ?b,|hl [C@ ޳X @ <Ѣ)t&3ZED&u?D'c^1z jjh.(܀x[Vwnİ@LJNhOy{Ϛֲcww`Zx.0ћ$O j{9lG0] +?ǥ ڼRvCʁ :2ŜSpw g-G7 ldۙ֏vG=;Չ蕴^ +oѿsak -w"$?'NOp m$ %S8ُ֘=/4dy٭觲&Loj +Ht |p]A҃!3cֱ=ӑı>@s<)NW>ƛʮߔb*oa*q/~XcR5̄e!{H.e"dD]9Qd0Tzo";;>)aᾪ(֝m6ҼfC<(ظfe6E# +bIRV!.Q\r7 g*N2Pn5hmbb5iKaa$wlH +9PuR}x>U+O<1 #;51%E g~M㞶%Fͫ8u*c QoP[*yNu.~= p^.pw6h7`G垕{-~TI7 +ɼz=4 JJEIU$@XfR +kMfS&MAƽqkk@3|]@~{Xv{͑-ظbU 5)X3rV&*WHf'+,RKF"7X$I7,bAQ,(ok큤Ӏ7 Rܜ!s&q2δu}!~/vM&Stl!S]BM-W34 +F)(ITy8&9X#LX7&7xVOԮ_f [US&h-mYo-d[C\GZӾT6fzu:wx6wloz(JdY 2I5Qh +|yw>ԺNH))as090FN贍Jmܕ.b}umu#][)܊"S!u?u}Ug+q\幘5ggQ>8sTS 9TCT4Zi +lϺeyIDžp{II0@tKmUqEJ.R\vF~r)ٕʤWOJ.ԗJ{tD8;M.2tBMimK_:Ψyvѕ-lf}A掻:OU:D\帨fw1a]Q6 h:(\ TCp|T'oI}^mk]eB?gr +bsZ76qed4YyOv6-O~жs}.5ME8eL:.M#OnO%Hm2.Fk->{} fa2׿fe;s"-u\AtƂ|mC;#O~{%Sxj +Mљ\{,.Zo7%Stn03_Hb d 1Tbc[giv^)B.F4ks*ZO/S7LCaKVxj+9Fs#m\i4f _rljg%R'gςsDZrW(,e"B^ߙ`1YNDԟLDߡ< + N8w9̙`G!xT@ma;QtD)N {{8{"y,D\`6 Sxo(} {7䎱{9:Ac< +9Q %9[#ƋE,&%hp8+)WWS&- A'oL7,Foxc\ + o3C5 Y*eP{:po%D /hJ<)\LoIƅw%c&裴O/{'w?K_FuzP- !b4HZINH`z!N@=qlHl鄰P>.<Ut"fTtN9*_W ~?$~~+~%S ͢.H42D, 2 )~HcA2/J2EUU9"Ѫh$% 3$}ҚO҇ɽ)ݒυ=O%a.H҅H6UcҰ96Y !U_IwC8wҋJofvKguI6:6Ie6H{䃚: {CCd>R`v/A9!ّ? oF K>OnKVh:uȎm);BZ.m;5u}y:Ż*uA3Y`xyȰ fͷ`@(wk;=%#!+]ӪسY)TXyNۨ}[mmքcOAT8+ukKZq!dȖ!! !d@!BdeQQdEAXp+j;'?ol9JO йY8@z!?ƺcJiJvW쫨)v{#*mڜ6Gˇ0@ՐK>Nn}-?/=1S{4RfbF yr^זkPuOɺ, ӿXGkHq;l ;OB7jOl~U:' qEe'%ܦcȘŸxFGN!"VpA#E^4H01fR.cfKt +`*n[T{x +3 G&jYh M Е|W,e%8aM-NQ#_osbnD5'!}BcagV1ˇC*Hu]?f}sǴnZY߀8>D(Mm(r uJBM2 R:{PE=f/PV02a6/oW[ql͓n<_!yF&LBͭSErKF'$eCYFVR0$+"JɄrpE0f. +,`l3\|'O?t%̻W&A.kn`zsv2&Kf[Y`,azSh _P4~ytDW}`u[dXKDK#3b>VgV6+S+J$SՔmL@G)e+f&0Rי@WFm2|ߺf[ߘ7θjl~N(V%b8M)TY:$ɪsH>Iħ7&V yBp}79/fv{pwࠛC-=ǚC%?E^hK"[ܦ nZFPOɄ$V]#׊c$1©J] X@`<1-F7^>e7}a1̮qx:8#ІǴEQTaT[ :*szȉPLVFoP~o  v6C |V $A1L@&}}VON}A! L A')awe!Cزsť#U%kEqr.V- T>3g)_.9]鿞:VL@Sh'Y3伀 ?w9HﳅlE.@wE U=00z&7zwL]x:ߺ}S^Esq^ +HZ M XK{NyBxKm*̛D] '2upOGFw}ɧ͸v}tu*x`7Cȥ#'b}–N.y} )9gLgrHϟ0?gB<|g"Uܹ@.M聦Ơ3NTe ܘ ݞ퍅 < }N`0:D~`1q5Pu{7V4eqQ)t vYp?uqqnl*D6,@B-%ASVі:jV굮R7PDE@Ox{+ļd1jT h1 ^ld1Ȏ CI, +qQZ!OdvG'A9EG/ľoh4i%&/)jY>.|{MIe^  @DD#aAء! @Z?rCŒ +VRƤ;O{ AU`"{J̭ftG&]ip;^>!boG"9F'xRܠqEܯ9~ ^!nH+l(1916Όc8a7{>fŝ _OOtG+z:# "?p|f*g!ޛ7 O0#)3/ -;2*VLEB;H0NDEwI"4X lD| +Yi`")I )HLx9oiE!. +MQ`s?y.Bҟ;TIo`Q'c1O_ِB6$x9n;R"|7p0Q F 54$n!^R' IcL'ɽcQX)1֖9L9A6BZR8E#IVeX`7g7IG"]O\.5 +AB6;Bj3 tDB8Ŝj)/?G:$|iʢDzu%KHwihI;-!\/f2NggT|0YS!i,]Q9nץ%^N=_*MYKI#+V*3v(af_|}Ojv?o/m--7yfP̰f;OA9,[Clz7SmK𼿙W~qmLM*j}jc^uu{vi^]٭l*}jhUjQLlș>Z)q2Cy`H;]oqlw5f~U).;/ޣ[bܩ]QV^n[yk]?4nԞll]{ 双 e5/L!:;3rMߌn][ŋ{hNwq.nNf~ntoMiՎ +%Vy}ESKSFݾݱzݥڊͫ?3jZ^n +P`cOw}EE}`a3t0T,(Ezuzg&J:  HD"\$e=;{s'%BX E]n~#Gw{](:Nҧ=G9aĮ³E,veyN)X9ژy1Ґ*Ҝ煼`,!n> G^^`]U]q!}чC4g/d{psDH/T|[UB40]]Sܜ]rroprsӲWҳ6*XJx{D0QB $}}V{=d"ttEׁ.n g+s3 ηɯhK% %5^k|JCBޯU Oyb"".X#UG1ҋ +I q# !psoOkg䩺2bڔʴؒ҆貾;-Q%+ Qх+x8"Ca9;RӉ`J ;Q7>}Q蔢9I%gkcj3k[j[zC9M!冐պP;I/ *bXMݳ6iaXQ"4Vqwϫf(8d "17&lw\QlGrUXk'> j  ]жQ4~L$2c8i;x<(/ȑt~?6ͤ]f KOs>| 4?ҿ7PW7pwpbߞ/syd!,!#Gwau\㇅y2\#cw.NaŢ''3c +-K-:9_=^[=ѝ5y%RW^#oX^CiX&HK~WȰpoت*ԽjxiJ>ø #s靴50S\J\Vu|W:sJR«$3 fvj6:,^#y"6BϿVo?ڰ;E>Zc'=LJt[Mp]cǻwƹ:뼱tՏQ#x y `f`b [)p{wDzޚQRb^0^1<_ +qy:. +MI wVk/Wuܾ 0;0Hdz&[R|UJ[Y[TOџL >Ӽ>nNܙ-?OOdۿrl>|be֙H\;st4) o we2w%w5dw)^Fft6td#m-0sfȶ26`i3xϜWn\  @ )%= (? TwAmm{ףZ"L fao,OEu8F @s@NEa8P0edPAUT-QSZhHCs +)HB&Q1RK 4UJXˍWn?hZ({ + c_$H{dLQ+꠲5P[EUTTETAYJ2(G4QRy_L ?@ 2x":![#>3:hbRT8(%BFQEN5"U0DsYI݇2!->>hHxt=ήW7{~%0Pt%2BKiUEEFhgCAk&'*tiTq6s_JӖlS2 [\PPAQ@DdTD\%%qi۷iV+L˴,g^| |r vUx_Q'os[ =|1c,<i$6s m|̖Y?f+/ei~yC`7t1t1|#)b1G c9Sd%bY۹Bћ cDBPr23 +]@C~ǜDc:c!!#!ϡCq0 p_0."1i*Dm,B}&1 LZxHNX![hy/a?cPطA^8'5;`.9Cy@۸⽗ 41?XC:0~5J3H-$9Ym6̆U+D}I^{8)3iHE Y +W2Yay=M~ӡWT'KJ\4+ sMh;kulHsų~䯴4zWtâе&츤IgP~%EB^JUVx +e9r?r/}do[J2b 4{+9Z@漙[4ch̏,<8-Ŭv^GȢG(XLVf rTuR]"<.PzaOZO[1Y'd;+`Za&dLӾO+_3UFGU;Y^y>&踎Fl԰G٩uerRf6 56P0eicSxڜ9귰!tÑH}4~o"++ JN*L]\]mkۊh9WgtMRUo3M8kK̚VS[W6{R?A 틧tauw~s3z]mcX uKRMٌ”uQlAZxoͧQ^R_k(n)]QMi@PGY)`@HH_ )@G 6P׎ǎut:2XW,mԱ (*E1??s_7;`qgj\ӑl+;XMǏ(:;@ZLR4ۆiT%h?-)\bq- U-_wn~{<Q;bx=Wӕt҄%ʆ=4j [<`dNé)u RdZay|7?nk¥j]2vph% hE- 2A3^<>.Vxo,Ɣzbϵɍ%c,w&ûFû$;z}SSE .d`;8/m%6†NnsZ{zNi :MS!(h9ڔQXK^md? y /4_5M*sRX5(ԨsR#XM;&ѷf~tFC qHa&Dꡖ%@f%U{L,r$hQ2,Fᇈ(I8.qj;8vh+D+>"BCG֥wCՐbGC#><b1D(3BP5!AXʉ#,g~dX҇DcG.6tڄ:S÷9BzG",H`c ` + +d.+OC>S{ut T aX_v1 ~En#`}u{,mLfP4@H +AFm ЌFt9Ƞ]uQIB/H<%V3鉤=Ajp7#\͠  6GrdL>0x9t +FB7b_-0lga<,w_/ۓoLd-zs씽@hAd ٷ `XX.X.lB&J`I#9W 8'av&/bZټ!LfTZZ'TߔS*ߦQ֧6^:ҠxiC f` {{F&'o!͡u2kNZR>,>ާnvpoӪFQVۮq׺f >J.q3t6!^>pz"?hC$j[}LjM66ڿI/I~wU_en3)_md~ߵ<_Ze~LL@lp7suV0 ӯ=0D䃡?.ӯ&< ?aŽm]FuVZ d# Y%$dO Ab Ⱦ"lAٱ`E+vڪԑSȇ}\k` ؇aL I8 /[GQ6}Bn&f w/v74MTx8xZ0|e@wIY r/ɛpG0[旉ỞILD= *cfb {V4tXIE#MZHK+ۤ1,y*v +b02w@oF`ދ MP=bϪW̉Ol|8z};NLjhשf85>W¸W3C>kCF' ΆXw@l2H\r/?bF;'cR?Jf"PCtef6/rX.n'涳rO yڜ@Y }޵}0leԴţ#3*jȨLSxbv7-s-B.rȅzĕІ4.#MH=o/$!khN>$V,t{j5Y_Xu<|`H $S싈Jҧ4%e DuZYKt-r"j'Q%R%xP.x*M~OwF{G]KjVzCz79nyP +a3tƉY2!UԥEgFI GJ+iAV.+MAV2#+Χ +׼lw@rt 4ꃽeB +>|XvWAcMؽ]f Qg*D|T!.OKDfe(OU(*SթEI3Ie"U; ii䣾^MA`h| rlVy0p,BV;k|‹+7& +t6\jrsz̞aWfd z%V>n*뵊g*4MRH @5=%ƾ<- SH%U׷EtQB̈S\J5 +DiHSu*1Me5T%&I$U$iRZR|!q/F ~s\Wvu0Cgv]mo('p3B9|[";'[b4*4tNkNfY]%Yw f3fDDh9;`xyA/<(/0Y F> {u;URWMvE<Y2ED1;wY1,l@|sMaoz^esiI0/U;0YL-a41N5gmm*aM8\Ű|`zB8~~pۺ|׶ӻbHPmˉM I_[ҰNEq0DdŒ"[z\QZܬk(%SiԒ9j=P`:l-`uϫ Z:z?GEm f ]#Fv!l@B))*rMErV*Hf/=3%!:D$+bqf4B3C tvlT/=&;t3j=%H㴰f~2I"mҋbWE +Քw#$koz%vTKjv@+p\] JGvڇȾrdc`.@THJ_LCӉ |(!SuppeȞ>fd4={Ӏfn&FE;QPxs ț=SxdZ>X7Q|D"E59b41Z>@Ň_W܎u;/l0-^㋁q} g:34ݑdQrX8B {.<z\rwzFI.η;9t璃7~;\o {e`v2#C]6E/T2_h '<7 nF󙓩s/K!/_f[ٽ{anz&6o[md棡X q 6a`Xra: 7߲3eM*UE8싦W}E&N_ul:[}2b`#^G*]&fiZa{jtYTgQE$Ɩ@ 5,!aֵUgm][\V pj+:֪U\F93Wz;w<^HX9o9uí4: !n2!^N(U\L 2pC8Z$rK|+F ]=kXkHm67፲McY+ݿ_u=ҧ#'Q?Q4<>WX.3A@x;bcdL ig-\Z#^tЎH U.7"O9ݝgVjyV‚ g̳Ok2Weךl6e:ljm35^6Ͻ/Eڞ‘Hh,FbČgGPb?t+gO@hշX6b[FЯKux*7R8t`^vsRsS~yAyo=s *<=VmCmeHReH 񴩘fc +;+q[>].[u2 sq‚tfEIMUsK,YVPp{ɗ[K */=Tu鹢M]E˞lx=mC%L*FI I?ZO I8K\,^԰,ֺYЩ[fk$.75LrnQ}үY U(_[TEE[+ueuUuG͟U!sULc!QmcES,FHo-[$]$:?UO9"s&Ҭ=vF5aaKAV"" +*K HIHHB+!A,JYǺ8uiQ3:=Eq;si{{;D|QjO-窹ռz~^ {,w>[:[Ϥ)8  SX0[i/ :Cvh4\o= +_տ41<%@~fBXZ+(9UJF+ Ke9SܲR;N t!y( "Vۧ Mpm/~0>UGge¶]YuTD# +˅R^IY"vJ +$R$_K$EeڔZ^ +|ֆ;M:pu 5m.ڭۢ5Tg% xLR(䪥Pr\*\%Ҝs9o2=G9&-[\h_h@kXܸ\S¬ܝ))EbL*͖˹ZyT#ϐI,L}[^B!{QQ05L"]u + +l!+:Dl5rMsSW:1PYQJgLa@U'M-))J.VqJZI%=sQiR3IRBNk5w>:( +2  `0.s8ݽZkp}mLϽ-~s"Rsk3Ӹق*q>[Q$KP(ef) j(/Ny[|*bUMY{fXd3@G |ub7#8B:ig\{-ic&wq "Q\\*7Y-drbԣ|z~KeּM:] `Wprnz-'X rPl~ +NHILjJӈL<;FE5sz2m2GӢڞ04FlF($5׾@OtkZ42Q ەqgncq$1z=Yrdĉf%} +х̈N;#3A2|,; pMLa؅aPqчVx!`|sޜ11a̰Ƙ.F٨3ƒOυ?c|p$w]h%;X mPܲ[kt ozo*`Z{HOUf@vpȕ̐yu`H#g<VafM ! C?BWn!_% sӒswwVGEn>KGwtӶڰu|m[̹|=<0| ` ɀ#WS@P'i'N1eNr i*ൾ c6 tdէO[]7=[ʍlv|1.6 u;GH_Ew^B+KWSN&aSiSLmp4it_^3=fN3nodQ9,[7{b麹{oms6F:p4y77?2~H֢|oR?䃭 +X%ϓܿK@Y@mhx mDڙS\E[tY m)l,i7b3s15C #눿s?@A Au +8#ښ-Cs[t1Zss03F3 2eLE'r#@!`N ^PK&_ _A˃N`Fv[롣6~FH@Z1f@40LX 4-0l w{! T)(( (9D J5 b~tۀikpnVxm A `~aNO1| Ko|-:b.d` +PH b7c0 l#~xXz.Wqzf'IqI17u`93Kx  >pYD t 9YJDP7~, ?3?u0QP#5zzwQ֛됟YB>y۪acC8^(>`Z˽"%7e ( ďG#BƠ(0yUY^o^^/Dۼvx= [hq!v)ð^ۜ{/897#=oD51uUu [_bp Pd҇\@{-adzDW<}Q{?{7{GĽ%nwroHy%=>IjT?rQ csN^geLcgeN⅀Z4 G5,4ջFb5n ʻ%ܐn ,x!ବW#MIW ŴXxX-A="l}KcȲ7&L_jhk˱i +]9:a\xFQ#:hm':-=z$F衸ↄ] AO>63 e1hAXE47E)}h^U'9%TBfqe~D4R|(N| IܕGܙp@/#do#ɞ?{PX)DMa nlzRg%f׋Br%:)JSJN~t"kGdm菲>Y+zT#zQނޕ7MkE5fw@3Val EP)fnpkӊEWJ #'އ;3T{ՙmyVUUEl6ICߨ:ߠꉯWT֩^+RGu:5D֪!LHLB2 &Oe󐗛 hȵ*zvWa\4U6kuYꤺm][][ԧ}hZ>Lf H:yT!5TJ l50 e%~My ٙ[3֡U5ZUEIӑQs,Ls9uqZiZTiaui& L>^ҿmr}; i|6ȖPJge۞M +nk$ctIم YeRmuzQSݣ)h/didgL+O.ȞQdB( 1z;Xި5@n WsN4Q#qiQԖUi7f&e*Y9֬,݁L,NVF@6oL͛Jf~$b0eX2W=\ہe&rը{'Ϭ1Į^l&WT$oPJ֧'g r5ԂfSR?3*3B(Ә> C3tP&" "Ĩd(XPcAJtCqml&q5&h@ s|͇ߙ/9yWnrˣ/WmHYi2i&c6|{(R{%@!k<:Բ,ʥ$ޫpoR`;U2 r֧mX+')o*nCB{2 +3 U)3}9}.IɪkvMM.^EYq;3 +k)6h`ulhj\䊸T3tC.߾Ϡ2FCh8f +5\jV)vvϫ\@RȺԘOW'%d]pMtIꨒڴȒUR"J#KFUQ%ˣ1n&^>UzZ]'jNI)Jvq?iM5VYJLM(L,O +UW&U/  ;3iw3Hv28E 6-zEM­OgEA$>5<.#&nK첺1u +\ZRR?R;tpH .SP_P<|6m7v'Jm炬Ά:'F*c}Û6 iܴ#xIsYВA3c>q )ԽPu`e]tٍySvD$ +u H +H[Йпsg_Qf]v ttvnYܣ=AR=򷐿:hU'>{iA-)eaM7vbRmhtcߍXޕ.>Y.޽΋qXxͫ +ϛ垽/o +umh:iggeRȸ +낪_o y0O`AWgł֘+)L=+0[܁[4tiH)Wi_wRDY =yo<=K'k{ȻOT ?`iMtNXZ軽&E)T]b:U`6g.䚨+'9FŖ] ;_EOȟwO@[:spB 86hɵ@]x2Tr p1W 6 都 Y;pɿo'؇K`М儠@-=kc!e"elәJ3#zV]}:8MWMOɿ9?x$h* tSC=1j PA&<JhL^+‘?#ȥ"hnJ(Z2N̗ ;@h2SGF, 6rDY+ C(xJ`@ibOftM,Ehb-FC{ PgH +E"/" +J(Ga5E(:Fq+ %L\bA/wqI)LHQwOoj&D SZV&s ȇƼ U4!@b>PvFh|M4ici7q65eo[7o/Ռ1sd hd!DK#!ʄ(7.R2DCy$Fmt=|@mUɟ:{giNڜ徵Пp^)9!5B~@l܄tљ~]) WtV!ٴ"K:eg־P2P"~p@cppԹE¹]0r?z̵민?qS"h-B.*\2ᣗBʹk<f22yxmȜj*MKGTdth*eH1$^  mIhA0 u;:ZΎ:rQ猌w_ϽsC;mݫ痡/FszO;f='pt'j4{=$Y I`j鏨wxpI^~x<?W=wW^Ǒ"]M/dT˨ >h>99 yx[)T15]+W$*z_ŠX$V|/H}.PAz +R.ȁl ߹ϔpXX%n@YsVjaQlUVN甤kEi)rN Kk iGE٪DYi?Md|bk3 })0u!! UEuL|&̮"acPX IT.+39's([di_RKREIj/ɪiY`-wԅ|`7&s5؃=^f !=uǶj{S%ӷ,1$PR$M^zrzV)5 +Ƥh{"B=#hd7q|I"8A}4{ Bn gPMȹLPFdѴ $ZOPE +%2Vz +dIDRted%ߥʓewI`CR=\DQ-;[-67h5¾9n]uͳX\kĨwKreРRO_/:%ÈmKg߅? } N!~tw9.? S'ny~⚊} %-L_]3/419J "jl~ukXªՇSY.z0~`0<*B]D\jDǐ >mVl[y ACrhsxI +rYLS.a2pz6IkaPhY*4O6-M0n)/]+E]D<׊2B!w قaP9h +_?HtlH;qC{#ݒXFW֕Kv( ]$Jwg<{$=M$uߍ&uGwEu^0g20 ˰;" +56[UMk5FSX[kVm[DpK\P AEQœcy?޹{}snM݈ܦwBh{vlMgϽ,+%%!bԳ%9ؓ5p\` ֱQiRR?|\1*`wDRĂ&k.kB^hN/|B h;57S䧳 +TJtZMfy>,;lj-I3JǗ./[9:lèزز*[Y9@9z9FRT >_T,jw0`[ |.T>6ZVTnL񊮙]gTgڿ"j#s kԇ[B{NPNR^U(:KgI繐ݠ7NzI$mTG5$؇7d:X':64>i6y Լ]czKQM>Ed p-ɿ0r'fȽzI4v-/qHKjU)+PVM|zwK;0n>2#C_HH/<0,9cz*X|KȿȘzRgA2(dwԥwD[2Ë"<@,`5=QNFuPfy B.qQEE*vAOF~C52L38Q$B~$*>g5)pN+G̩'?ϾFoD?;!z 8Hr"9:ӇfcD.p.p)p5⟯ɿ$j?OL)}!\ ,_ "G9C^H^7D"YD.f8_>jxԠ[" rjK"EaaKV0Dۉ|e|&N@"xAKPF{ ԨAIz5 +ǫ?U92,"S bV"n0O='o0=A@wj=W+]9Xd-,m,*3(B{ +NO([)A_T1vP(B 5~/a򞰃ZuF7'C@âDj ++rt\!rtPdi5yKOR&zzDԣ?#|,|otn(l#ZQ2t%QBVZ%hc;Ih־4L Q|nXRԸFA#ޅ.L!Q"dnPr͌t2WY@X9*0[`-:e:<3Ovc}cUg-ʗ],mߴnXdW-A݊AE}*爳#@_-2Z)ƨ$$X}aAۂr2O{;t{ӺnRs5lJ͏a[4MyKňjBy\-L#m]$5QV"5e0mB1(D 4w/$iw=˱1ݥ% Nl:}tVS'Jk㪜kN9W]q9R\NPWo8)sX`8/Q)њ4]}Dr;8DBCmR ǒW$8٣*ew))eƃ)Ǎe)S[%=Ec}o0u0B$bV2R6.-ui߱o^NF ֐`4S{on+{ڎ֛Kaq{TiZnPǝJ/dWqӫ et3DdVEb(lm{F#Q֐|}+x _wTlkU6#kN+Nl,$k4Ұj9B*$(O"٤e _9(( r lœduܜs8$R6?f`|>j=}<F `s;"nwqD@1hSB* +ҢK5 +VZ](UlQR2UE +՘(]HF +5VI5lVa zof- ~j)kLg7Uh⸟)O*QOFi܂,^V^)sOIdFI'E"̉ŚqJ_y$摜s{=ǾQo ۮ>ĩv=];"%4MY/!ZmJJQDTT'jS8Y;+h$(&9bmͯ1 s;bp kuö--Aꚢ>240z(qT*]^/)N +^;+~X&%7\m[%x&f p~=P)vQg81c>`'ŧQ^#I8xI(̡ Yc.uPCC>C7FW"/ ǘFAØE.Z>?e!sF>( +uN;ÚzDO<#'Ԟ%hĹfЉ%뫟_}J'ݨc9ٛЃ iYmT#vpȖo qfX>g dZN Zt \`y~uw)I׆F񫘃I ,rɋXvۈeoAˑˬM~˂M2$wϊJ G]wz#+oy.פ}r5 }Qh +s7vjPHX?>u^[zۈU5T#a >GәEfIb3>H|23!hꆴ<iS}'/ui =viKYW:!'xEMe-DA8,+ GQJ8 h"֓xGj U+;nuVnUj[ʻt_&3}}߼$T^ׇ7 W;r(_he+R_祲T-jf j猚KmIK'YJymEBMxe""+b$C^^Q^^=Z~(zy^!2+e &DЇ+1o!/Pr̽3[>vgQoլP,v-[[UʴY̕+2U,FP422?e*NRe), cO}+Y +̽U#rU^F6ڭ]QL++N).L']Ζ)bإde{lr_lØ~b=ɒ"0)k}K1?W6f=xnGmkgp6՚5Rx%~ʒAV S +c䭎[66!s=Ҹ^I\g# Y!p&Z +5ϮZlшyjjB ZkauGf<_^XZ)SZiU-SwGJ՗";Bz(L X!?('/#30s`ųyov+Xn +jr]35s™usjRa\LjjEjw;4 Npf(0r$ r}5OkG:Z\aD5Ó+mk^lY"qMki K4. 4G7jZ"#/5ܙ+\?' ױ9y%jpa=Q[n#څ9y'Q5(iK]SplYҶFML =aKgLG,q{?-/M'j#lokgw my;u[΁~si7ֽDg=1^'!1>up:x)??3̟9 +&I4Èk2/ܧOd1/vw^-<=f tM8d:u3)MzN⭹fa۱?z\vh'Dip'\$# +3UG^n"D^׉o9=0%LJ6p"?=lsǑ"$TdZ\ ǿ=bpCLD͛w.[w"ܒw&'$}eLa+̆92a8_}@_ wמ'*%ʺL%p d'DVO.D3Y bsr6 N'|J$JH +Dsy \m3i?w ebp w`՚qy[Ji&*a Zx!Q(f~Q^QِllPT)naw2c}qDW-zDW0جSMe`Rë/Gh2MZ8 ]4ArGhp84tOHNI$ժ_kURb'4XHڬ%[l6Kl:%l6|ɶ=;mZ$[5K%X8|JȽL;c ѱX6uo.ش_f SuK:&6&VfSyVtU'}X+}o_+v5Rl)ux3̙uȞi1a}"QJ!%zh&Lz!]HHc[D2E,+tilջ\d=n5A*٘{{G[sivE>>Oe sB? 3F HD{]շp齉BFgZpfE4kCtk]T{<ףZ^Y)*7yɻ%ESB NwG~v?O1B `3o?y rqȠyq&ehoN 4lO3TRHV2ֽ"&ѫTNQS(-T4(:y0/KqKW<+p2b-[039،b}d4X 8mv4g6O J9݋q^Yl]OQ')UaNbf^ :L ; $σP_0Po=YZk 2,s(J&zg&%3V& +UU N-P1ÂhEAW|n +E9&`rrUBv!Wm.%5tjK טDdd* Ԁؔ\"4(*a<3(2eG,0OU$Gfe eY%AaYuAҬЬAHX$\@p]I ?I$ |c39p`gСt; E+^eU<<>4M.Q'- ), . \[mkF-0e7q0x/סE/R!ጐVu#Ybp2XΙzs.̙ uj8J5 )j(;X{.v:WѹN`G=YFDE+X*V&uUtHC\ark*+]mU%W2T9" N^K*ʀ^@ { vtjUhUn cpY]uPW ϡ:'|=֝MEz'? X**"}p6P %yEX /zz6$'OȋssY;00{GH8DTJ P( xoK:Qcn +:л 63N/d}[d.r4}?{!{ ^(BeC,sHeh+L^`:s\L;["ZKppUGn3:f~k{ F'܍:a +CVhjzs|hħCLeMtz2Xpo5i?Jj[zj+gϱەnB:cxhs>N4Wa׼i~zd+7U3'87sq͸Wq=Y?x@g!.x9qe9*[VL8!N4ILBQAr!="*YܕoMʧBTE)7}$]5}$]j75oε_K3+VK:NlNJRh),T|_. ~<,`rЈ( +)Ijgf/~g?E]`|%0^QOqpt1ЉJWl/eKG+ vAKjea9gQYw[i +"vɳmn3Dg?xڍ>+( n{9HVvEiʢGjKciKb&k:c u{VevmZsb.}m6kaaU6 f d )$ 8 ՑD]IBPcqh S 澫\1]AMg@P9p߉  >ÝpnFn +(*QkN[iNc;;}g~{y +{~=nʙYqXpXsXgNxɵ`LYY3%R{DAZQsp3K!i͇j.YKZSǴFѿDd kS| zO#a C1N#TL"';[ܙ+NOŭ-SMbݩLXx=L% ?:*UhUb2 6/ǹ%j? _R )OXlsnZлS*lˣ6%aDMh%*'VJE?."~SD|YD|VDI3?c- ﺍ\E>p+F+X=\Ne(QNPUaJiEt>T[,c(% d)@r3N.I\C122).a&>a-Cω~{s⹈Xc*譎8s\SJi,U +Ix鹂(eA C!/dr-S*eJ \u&!̖#;#GM4!'H؇o_`P.z? +3 H75:]8ڦ84UPU +|*˳KJ0E,ZV(+Da+봸P:ee)23Ff gL1B2 +4 eq{wnt)p^M3ko9tڶRUYR+ +TTWJD!./gYea|&AP^V/kLZQie$=4gkc\ïj1@9twB{gt-ۘ6խINj{aso~8h Ϫ+P24U{_5HU]MیN\:ڏjȰ௰~ +p==ᇪqV +R\dO=+ 54M =U'ɚFlJ =yE;ާ&P9$c ua1#.̎aP;4hK&HOdez zrRҒm3D>dkNcu1Hwcs¥<y +}4 I 3(tdLN؊ƒG'R.=tRD]/[W{Z xt=+ {x+J I =Lĺ{7Pom,Kٜ5y@,L+L-wȹ$ra]sKW%V?}o1_̽}eEZznMM` Pw gD=p @@Ol @51\3Oc&PRpPnZ8Yp23 vI3;Em&wPSMY]}]QQ_Y1 ]`(q a͈e1b v T Ƃb }- K,uk,}ĶρsxZ9.h v AyЏG4٘5r._Ek'謁o=X.ˬI! 8speE@Ci8j9r0 .]^{ܣ{LIr=+YE̽O;ǨϜggj*QGrDA><EY^!NJWW޳1IaEdjgα̹qgNԔHMFK3:CJؘވE+ԟQ_Ga*h@L$5}02餐#H^a ^b^`98G;7~5~ozC0=4ЁR7D3PLPOPx_3~5Œ#bty +!yC=zw5B@Wug~51ө1_WPgUp{r619rt{Br';Rߍu=4 ^J/ٗZC-x$Rc&n:󩳘eY*SQ\y/pǾ{8jZ2A4**J/Zẕ -|Icy'Zz΢N15Rc)5V2np?N N,NqV=ةYK𐫅TJROp ?S7h)"nҨu`YY'|:N qB18Xr jU[pHaMq~Wn݅1B \I2== n4UM9Yp%z[8Vo8xa8蝇cO v,Go%vnv=w +[ƀG!U:#D LD@z~Ix~ߖ6 A6I ,iG8i[\ikilinQW*#ڈ5+z( eyDCٟثr# uAN8Z}Qq|[=Wo6DQ5J.*G6jbutEetbUBFV٢,9\sA$%B,󗽤~Va1 |D+q(Gʶ0(7hj䰦UU/ء Sf:.1u\l(u\dXYhؠY`ثg84piNX<-"e 3sm[NMk/l6dUJ+2c2c7%>._.4vo:Ϙ:8۵8n[Q\[a:YƝ37<{͟h~3lsN|Nz*s*ĩ]kI;|SJLz2= M#^Ս{v4Nnnn{O  O܇ <Ǩwߜ3I_zvD۳cN8xԄ]Bu0#Od&=G6<\ Xyǿt9t.B%ݯrJ*TrSJRQ'B]tB1:)r\Y-cw,3̎ٝ"fƼy3$y?Og'Ev7Yv7Io[$$F\y{.m!}_}غE#Q] ge[̋MuȞ+s⑞2;U"_&MR|4A~P:[~R'AqOy샒}Xؘ|wRHAF ,rlgd&8f${$ϛ+Kϑ&ħK ^?3]+N7:׌4x~q.~ 1UKZ yCM#2fJ]>;{wlV4fb *ӳvEeu;"WĂW >\g .0-pݣ6Hn&(Za$‡.M*uxThEw"gbO;BQcj~[X5).y.B?Ρ~.g58G_GJ}5cYØbq䖸Ku3L:,8j ӕrH|"Ԣar)cCBG:-p/gjUYԒJP]n1H/$ǯ0nUxpU) PUCj}ldQTvA#&m'<v*aD``7 W +rPC5瑔os2UC^5Un*AћŒ#7Fc'ULTZOPZWW[lXy"<`#3iE_0̷T +}v=ӻ l!HaۜZ1b!u@ݰ`FA;fcXfPԿTZįfo^#C_5~hؽJJL V:qS7rOKb{xB䄠&oq:M!z(ocwcWcgGJ߭JϵAϥMwleSRqS r==4\OH6I:DL>i ॱOjEΚfx&AIkD5ŢȮu7l[P'?Z~Yă~^ր:ԭ* kpH?qE1yBZ3XkGJKi'\; f ΃ڵ08Q -8 =9o&>րz:[Kߒ62:NA'ͧy@sDV@#$Hዸ/.|Md.\ _ +?<@ʼ鮦N%9Z 0 {`l'0`~\_t>f|y{f%e áoK a͛w1`+]Do*khO v?=t!w_ȗ#<&Oy |Ja{gɓZ>^MuNcqukw)G}|MoS-yX`M^}7wN/o_ykbAUAYO`M +n R_" LHYA֒ +T:n{H3qGZ<^s}xI^1JX0QS,`"?"2AGRDjRzx-]5kXcβ4e+='P`:01pzKOtd*rfmtUO^^Cci2s?X_nƠ0c`~F(k7d2yѳu lHVӳogq'./a{hMn~/\0{;x[4f@W=9̥/߱RޚtlkM:α7o\e.sHC0_t!b *Ud+X*w +s/9ͧ+y,g%=*zq ؆+KEyg)#8o +2j2?$pA*!$$&@+wo[D*ެx *bvu8ڎcg;uSlۇ?>{|ר/*F\ƨW~db@%}򚅿#po<q! +>quzܦ-^0|2`LuAz.5Xqܟw/8Cidчdal- [O71s0wdXgo.3uqa$9Q8pN\EG>7p28@z9+liτy$Ρ]?p-TYp1,^JY +6PN (ݔ#) ӔCaE&uN'YяI/"#kƿ ǣm^,T%dpXN=p8v8prkV vDHi=ô9x%뛦6Mt4"&{=l}kubؽ;n +T6 gINA>'1g%I-}O<%wuN;J]F.{.wCҧs>^ qG0ۏ3pG ,˜trO0s2#'v廎n2ۈmm}H6>(pyp #2vVJ^֧K-my_(f7ȧ8yN,Z~[%o[!ɩH#و;?ĕ.X0q@DŽ Ɋ i{3<:ro.o*ݤ2rfn_(*eU9ίPǷ(Kkf @J# s]7KXpDw}C?r0Cy"ޜmV]WVWɭ*5 +MY`:L\ 1kFB5|ͪ+S18OM$ +_,:AwƊz}|8p +|VC(ѺO~{~5Bed5>Ճw`?nTR̭PE5nҷ$h1h ++om?޶đn%/Ꭓ׾֐xWRޅ!K(~i)vC7r-v::]r&ѡIjKh/`R{7}%XO^[[^{G7>Mo뀱(Ɏ]gʣRvahA5EQ RIAt@njxn1c<[FclgO\z36r&E]0hg0u5k +%Id1Ɂ02jK Pl.QT :ףuGĽ(D( +DR +Z[낎XΨպ͏91y{ޜp͜(1*;FFv62{ox}mm-YkehBmvu/[*$##UMZ_l`B!NYx2K_̅]Q}ޅъB}}}e7{2؞SBz-Zeo,r9VsOsJx6$ 42R +؞us"Gw胮 8x1q(O|Rzq .۟ealEӑKG.րWɈݬAQ F蜡8A팁s<7K'Ef:Ϥm8Y*Y:+=\>}z^GQ4ăẞ$AT70:upu\hxGGy !Oɋ6jX +Zm 5茣3ǀzq$1|F>yȹ_CCf 7]y&x?<{߽GQU 0\]!000!O}XJ@J$#*k#m;>үa|0kIobM +FVy=I3߉W:=5x~: KƧæbD~ 7X[>&c| =b=9LEm>ӆd+:OfG1z#.WOO&7M.76S5[]>XeSy>6dxjdsg~_aoad,JH"I&:ErxRJW=n8OC@܅3yot-$)ܖkpsr6\g-β_Nq>Nk| Np>1'u~0.S虿s 7ItcNcLL\fXF*zɠ'|_G#f!?i^Zj_AVӯ[Jsױiݟ5e^OTzObzqk 䀐}bU8PtbXj*M>CzeY%q{݋G^`pQi1'5uCq=2LAq!jKQ㞂jnMY2ZzawwnB#Ȱ(ߑ;^]QMY$@! *JAY$ '@ KJ",QqIЪ5:uC*TRSUO[3cպi7h|{Fucʛ*-Vu{͖deTrnBT0*!3ujE3ob>߬p+wBgGz9<2M1NChf73p݂{P.-kdjL`&{7*&[\ϳ(KB+ +elpmarXy@T<%*P^ʗ,& q=x?i>{}*ıD"{Qd+uo,LQWlz15J'yV|+u兙Uhq~P[*VH4i9RG+"#},qB{ ܋Ph~+4(S}Z0fP^k0:QfLQ8Jdizy$_t*]4[WkT" Ҍ=IҋF~=(Kq.Gy0zx֎,TcQeUZƻI^~EI.dDDn!04HI Έ4z4chpJp7\V<'T0q58n6< G\"bB] ~T( ]S4ƹ5${̚9KQM懤Z|O'[yVGpumPu77!gr`|ĚgܸLЄj&xM8; `]'<vM ke5rۤjae&x[xL:G/ Lpl5p- ޶?޶fD.8Q?6iz:F? $0}zs9ЏNvLI `$S1`+uAGʂiIvň{O'^3^3k_:"f~WaĎw=fSmVgmo za9]p?s|9=hKI]bJK]Yq1v=ir>v:E,;/-%\]x/bCA[}x Q58-ͽX"R@l 1GzI;$r'%) b؉׽ +\8+&[ +p+?wAo&"f{F\\A.O⹸Q+q%'?|\!- XxFx xMXkaC"ش5X{YQN"."n"='_  `czuNWO_oA hFMQPA#O4]D8` @6 A~b!,pp >Ƌb};Co^ ЪGLzK<=$&%B: f 7 'D0` 31:[ pȜAcAa?9 yo*.f4+YM4}Ht{{??őDPˣ] +:⸁:5 +5 ywC{1jk #O%L=Q)"14(אp5F kD,0|/Y°zGFt/Cv=BQY8 bt@79F|Ft?w7 ~?MsK$> x^?xN_xNxNE +T:%u9:9S_hL[8~7c>[to?x6$ ЫJi'i \l=}@و5}t6tQ}1xrG ,W1q"U=@wi֟Bc)a9tVcKbX{ :B_q5|*V/Epa8B bB U7_ +R2j d#’A-H ,a  "HAJ23nTqZꌵsszjggfδL;˛/j߼{w. 'loE:l{40r8`>eކͿq69@W)ԁ ^ 8x[=`a ]3-:nl)pf9I7qᩫxR,K? O13Dr1kK3B pȶp +N8C`̀s.<+m|^G<᳠. 6-ZWS^X9US N#8@ucƎkt' >B]g_ Ig8n?[.nʧsSvs6Ig.::cQ:5IҬ4\o~4|IL/Gcqrm%qr+7!tWE)t6 NqJtXROM]4#a) MO^9#IX#U>%Zps}+űc{jJQ;tA*y2:R[+tpfVZr +} 4B{WUh| hᐟP5z5ģ/ e<{Co`}me Jz:*CkjKaMY{ XᥬJhx-k$5b Etz99ys[䛞ݑzvE~'#ᴿP[8} ]L7h;/hz}0]ڥJܩJV將Tfޮbؽ*'Gt9[Ճ-qNzۮ>uۼxoT #} iDh>=ڡɾ8oڭYF;5aC&ۧhLx +ow7[nMKբjL FCsKXw޵% '=#"Y3*Wax +FR4՗NNmINjf |K["lV7i7x;MލZCͧ^OvҷV{ķF3QvQTدBw迢$~v־XcI fbu"=qTwC\@\k`q &8_'DwB%xz;رwlڒڲ)RiB.#6!+&'nKjK%vIBuDcw'bc ~j]( +& +\W>D.0ƀiccZɡ&19WP3elRyTA#'ё'o(mihS;:D*ǠzDŽO:ǂ0]AdCA߰ZF-b]Om#xh'1}(DPҹXXvBc\"vU +׹Q6H?µ: s]|fBWH#X/K^A. >`4|gu Tn.%vIӽ_,.4sf L᠌mke%몛*A((0*%QTk"[^*))`V'q\r3Btyn}9؜# k_k39\bvV{;Mz7z=2wX#x|:@pvz,V7]޵ {M+@6W]s+֕F1i#5J52pWŠZ\E{ԥ}/J]P%cj?~YI7VURf"D)niJFqwܑw +vVgDurTwV,_y|vRzTgQKo˧sOws̺*P#yQgO!(QIA*ߚH6I暡2ՌsP5Z5ɬ™i e%Kjv7hBw]ƯmkI4 `=(El,4z8G{x(\ +$oZGsP uj'm]8۵EBih\4 &ٶK;vJYW;pSw +Oь\4f +nA/!Fn_ 7[y8̂3(8!O +|h?Wk xA sI|^?Abqg-rқFK+ 5p0qE, 3})4ig4I=>B7vL8<s70xAL^yBK-:9Ġ~?.VA+J[CмH('ߦߓK^֧4:Ӯ_3K*t#RE°|;<x#if +dge}(Ehz=N6uo%Fw?lMZբ+|{}.t޾ l0E!;zJw5X3`EJVªSG[ϯ)݋:;΢3G6 fw `RM1|}\|)%Y +j}8uXSP"o >&Bno0ŷn>3}0a,<(P gIrQ[@ay.zu͆p7%s>HI'J1F>dJaԛ:W1=jjo|&1Q#8F ga*>‡ T6j!%Om#'ͪ:Rv@ގe[9^Ѧvy7Q+}F,NRlj;8L]гpÙ gT<iwHLQ'`hOS' lX@6֑ZbQC]TcVtB r[|=*m׏!9{І +qiRO^T{J{?eQ)*/W*¨YZМgfαd̷ٟŒi`ɰZgZ3NL:='-gj.Ԥ7|$;~Ityd5,1MfǦU{TVH7e9[2C>sOJ;#y%OQ?Q?Q0ѱ=9ǡO9 |;plM9Sƿ^c8J4E(&G{UV&ˌ1)6UqJQHQJy8!8Mgm\irojFZӚКSj)yGm +۱"XJ+Sz`+̓Y1>e )Co ^jsMUSm2ֆefl 3eK3 K5Хӥ{iiF/0D`k%8f_U)5ZKs(JszNYU:z9S>Vr/ێhsr&k{j$@J:IAI_]2HSm)YVbQ'$C7>A`5qԱ  +VxM5~?tHG <$Ƣy::RE,cV܊]1@U1TctOvFCBcjB;8ܪaCAC{ v\ Tz?h*Y 9>N]kw q&VTb$/b ^.ƚ(Erp$4*K@LU^Ъ!UՁuW Y>/U]?_XO@x'QDsq~kٳGH9F?S'^ qΡgPgw3'i,tswsWxF~}jO({OLk]Q;L>i>Pdl y"QēL~beHCgWJk p%)ҕe?WRTl$^.3:㢯,HiO%x$؆v2G >yE< D"_Z4v^%q=R;On'uQ5%`1<8#߉V47a֭a+"N˱DVbJ$ҵ[4jQ7wUs7GI`s4ſ)[| +Ży((`/c[H.uE%~w}6;#{oG t7nϠa=g"! [[4 Z~ZxkrmmD_1+npD?׸6~:PγR`7c ؊l,Bm #m "m۸E+܌Ȧv6 +4#u+ CʦxCV7E"6v4wvA\»|:h +G﹌&m _3Y"@6I`H"="S?瀒N^ Ň"x3?r~x 7'*|([ހ^3_E-Zo|GdZ}wp~= ^"'1 js.Fh/B{U`^Ss/PN%Wsɗp;X. yy< 1<%o {K z{1qhLBc* h!n24Gq\\}L^@ܤ}"heІ6t9XCdNNqeys IW6f@  $EbX*dˀ121`b;ނر]14iԩxmL3]2M4i'4Ii3mӸ/+@s|gp&7]tΣ\F4!;ާȨgkxd_>Ixjax&JQSmE߇kq9 +M y{?} Xs\,9H'v򉆯`~va?Cn|@QMeWV858]3NgqW GOLG~a8Gq:5'AczPj߁GO +_CIi`UN-8Mx@qXc44Xs<syExLZAs{^Y(i̿RZU!vbіD033UBǘJ:«Cf: В` MEY"&Ktvߣ)hR M8ba 7J}h71lDK 01tDBʳi?[@KJ-sºzڻַl`Ѯ3hh2&K4|Fߣ?pȷ4>A}% [hW\MÌ Ӂi_h"o̠M4J3ae3\4J#Gh4bE4q|+4Gz>o(x^ovjFMh#6K4Bѱ3&bi<6%]UAQ5ҐC[U^Th nf޸%;~錿#-|wbWЮ@H$R&g0FfkL:^U}6^ff:vi4m ih@jnߥ-th[UAֶ [f퐰)}BԐWJ?,K?+I*NؙġIim`9`>m +:$4 >}4yɼv]ߣ3[uQcV!V\,uHjuj_Z:7d6eJǖckcYZб_zAԙIŘo4.C6"αIrJGVn蕕F6㌼Ը_^l<_W>MQ=lN ߯} 3~3F^c:ƠҞϒ T+_ï5g +&Ҕ/-7 +yNQbjeL^jf ly5Oy\h k0Lk{lo"71ŵQ "LCtx8C8xEZAU/.I-VbWZ|KdTY*I̱W꭫zͲZiʹpBNU)_˜ +_|;jB'fl<$tl + ") &gY$U%0T~=Kd%BT[d l[RoTll}ʹ/+2+r,,WyjؔM)`\oΉ5֢=G`߂vZZw8qNaY4w me$w(&q1=ǏuǸ/6_ED|ΏhVȉ9)Gw>vFG2!Fy8 ҼLjo"%yL7T^/[͋Lwa¼iSuB;I-lOy85 +90ONމ{uhϑI#a],Fب +I[O1M틥("}˥0_mU_#:)7LZ;H9Jo3=)920N` z+q7zDГ9N%`8Uޯ!_G +]QQWffƥW " +2 +***. ((*qcqnU0z\$M4.1mcmRcbD-1N#G9o}d+H` rd.(q^9;m54Nʻ->a[Y7LTЏL3?|s);?Ze.4@P Af/J(p F7I nEcR^ W˳k5}:[[ +L4/ZUpTxT81['ڮ 0\0| K C_nS7ҋ N _Y"`j +?cSd_p|x٪ ڸGԮGN0ܪƽV!A˶*ʖxNXjq|&Y +x.{ڳ T3:՞n6艝Gڽ`5vK9{g~R WjdxLr`3.#,,(q3\BtU*08tO;g=\x2IOJMii6=80a!5p X}YJ,ɧq!.4?手km{E Lb @cz`hOSx9%}@}'ڲ~WqN1&uqCW>V"`Zp-΀d{ x +>'3CIשMVCC{(*u A; P=F>B^@Rr} +2R/e,]o\|v UR V3 ͇c7 Zu:>+}gLJљљwpO2Ñ D8fKqQ)R*b[_ <)q,ٸFnZgYO`rp$wIceG&c?v\xONfO J p\;O-y_ <7?ચe*VCua|{FC+{,O\;r`/<)ēN,EOٰс)^zF+ܥ-ɛb+B6]Zn9je &^pgVhFH؆[9+*Z<]M$tK9le2W׌-YpP?ɇ8c8\qĔO*< uٵZ79'xϖtjp/jaӆqH +:/{՘8[c%E+O"4xO&W\s*3S '`/4xG&4\-:H--Fbmo{U^=;AK}Uj-dju4ߚB[Jo+[(1lf4w5 KAp&~>jssV6-Rӎ*iMhsE?hfhXMR W"e4 GYG5MlU ʭ0\^|a`%Z*A-u +tܶQ֡v}4]r); ]FijKSOy~&.+pҘ# :QA52!#mG֎dz$/prP FZӱѴ{iJp&'kbp&120&$ǐR`Đ0"taXAcz KMinSZ{j̊YXWDZSBj3r:iZ eu颉] Xø8Øa)QaCa#úN7w7 Zl^aJ j~99WR[V3Ƌ6C*5ؘR.C#'ʨ5!E(3ad8"iXDyhDyHD9-bWjXASR"D.N*N?jOBԛ>񑟀o-m9M_+F t*\1썕io15fj4E0= zwRPDhI~1 ,1+q1U1bް:c.VG358F/ 2v8 #?#i:dfJ_'!6fa}v̰teX[^[uya}l tw3,!D$!B^f1A2$dH2^$ DD)IkֶHUUc:KuO϶]U*Dړ=g53}~c܆x=x+/+pؖI//Ïyh:~Ltcg!SblV'%kMFıC3 i8c!ָ0T9ȴ3ڴ_?tLeeL|9m'abofFd2 /KcR%t";(sw1{K9La4P O IONM'Om`^2#S*= O 3 K~Mr{; ^:~CZELNV|MIK[@f+C,8`ue&zLn1QG%ˣe."HFZ Mݧ:$:rG4'](GHMĿ=h^W;. jb"V?`kb5ZeMPO7#Gi­PkuթZ4\{B2zQ?[?έ=: >wr&*;[~2_ A^H[Og p[b}l[26^fS*,PLYa*~6n?ۛ|[|2+^VyOtH pO?.D"փE@$_&&/C%Ү>9]$8OrWNGK}_?{3no{t˾Y:TK'CiϥS#Vu*5ȠmE\"+x~GnbaЋ8"#]1J::bpdQ :RU~(gӢD߈jSQOwA @nE~HL|oF~3Owi[t@:9@TQ8zNFsR<VVsxϤup\]]ƹD"O#'~ړ_DžuqX@\/r뢉,|*umȮM?]-I6~ ׋0)c*/V{(c )e2JE)MD`hm5"bװCJvklWYUIHW1(y|Ψ  3PYZ"ZQ䣒T2T*x1$g7~J6UtDf9 }$-߳`P{ .{Y ~3If䢆Vw ESXjfҴ9 $:2#Z]C;4%@C27Uh ߑexY"IpD|xBd|0iÛKX2Cz8 IfI3&k&$y g)|K_B=Ox:>8L +>\O.!#^E-jrfdy 9pf9=g"pul:ql9p\l"?H}nӯw93?pG$_5s(@'`g號ņZ !;̷oP:4_Ѵ_4w(m}·7v %pM/ WJ(1p"v%\+؟E,Qo4F}OT-tMG2*?ڒ?*cfc4lZ-.lPXZ! zѷ` F ߇cX~б EF[sBE"_p>)d8foP 0Ps܌sX8Ë92 C `}}ѕ^:t6&5]݀ձۃhFK 4_oK +M / +甀?s S~]w2LT6Q]%s4.À02LhyoI+RyKnl7|+sUٞO2Y(cڎjKBE$L̖'m&-9"rRҨ-(iӚKz&fѾGɳS \rs9g96˦jՐJKլc;-l#>jlbU(p8"QXG9B,:JfC69\J^ɫX*&9۹[rNJzy)yW&'M9\URT&gx.)=_뜳ȯ4p*,,\F!U$\e2))%e4i]TQQ>'II/e_kT*Uϼ`Au {֮.2/rcT0'y0zID'^B!kҽUbw6)5BrݠX7&,;F3xbjU1Fe1~gZĮ r!V楖ϕY _|:H/F }w ƿQQDc[X{? ?hPzU0!fV%1ظ=A^~VyK.bHGtR, +h@X{0/0 m`r$kд} +M rwPV0mz>Z b- ޯ$ ꙛ a 4yA=A#`1b]b{|!4-khB:bx\cM'^c_M@4s20H;ȡ6;73XJdz~*>*uT=_1/C;!`Ai=@5q@N^(=h$##Co;=vv&z >f?lBs +v#Q9;:TN||yȧ܌|F"/-x!vF@gSƙSlzOT;fw%Y<kp/yvc@a!/=$I +I")))2S,I&(J)Lߡ&i +ivvd.0g,k˷<:m:[αDQN)HBR貈ĻpO(DgXWYfa@Ko0ׯwU:0S\w/u&3uWc4sI +;½PCG111_} K` 8B8X2]+1G/$>Ɯ9ػ'̣,8oB’!dB2f 2L @BL1!YѲѪh]Xqmm"GAKRԥ9usK2Kޤ?N ܑ4I's8W&>xFsa<4"Ć9Q($<؈XȺL4B^| "ly>JMqsO_м߶1JjY_uRB2}U(+u5wPV"F3Zo]x;{; F 2QdE]ZZu{u]'txs;.(Sz:O(0 S0~;`&K,.x^>] 6z]w]JM8{u+q+eKQG) NQh0tўž$\Es&~#V +ss~Zc0[8MM I+?u9BUqÜAԦ҇{Z*Oēt`4w?Wse]|o>!n>P}P^b_~z0S9W^pjDYuq$;c?=OPoSv ջܝ?zi*>ь>퀗F-&o0ap56LEvөtP`o#?SqqqIا(QgK ̀SsVts>XK`u_j9u7j)X{/c?e?zw"msqp怗WqzL̆5|X a-&-"d.e.`zg@OgPO,OnVx7Gslfx_1ӽ7K=a{\dE?bېG׶"z{37FxЗ)/230V73ʗFZ))/姕ܴ–,l{?8C?"nakaJ|)DNHI Rʯ*rUUhL x #=4@RHRJCՇ_)3#~F، [>fBykp?y$fz5ZrGkj} JoRjK) ӔP!{^I%/S|p&*6x&(&5< ]bQLmށ܉aI{GO?wR>"oi(%b59dWbȡPBE*PƷRtqDu^D_ ّf\(ec8F +(f9P-Eϕr.gXn\ˉE B.!h%%[8BGH>ƸK=>$\[w0 >=QM=Q'v K%SƅSp)zYB'?<:X$RBټ] %7 9agc KعN b_(?gi)$j۷B!<{y;8o Xb=5".8c? ǝuAnNa䤑HQ5ٓ+k OՂ|8߆M}w]Z8{gW(/QJ7Q47PS>B>A }L{ mՂZB \C#xNO!Hbnjf \3 sl+~7?< +'3<1qL'Žر(xJ 6^,'""V@P;p͛Q(=uWߟkbNjroN p+cRKXL,wVyDJ><*z7A%N߁fxϳbx]*ci++9)%'_\CaOp%Õdr'rG?cTѤ)MMv,AX{Y~Sa-cg=ĵ,swUKO-tN!vԜsլ. e,n断]뙮Vej{<6jKU y4)R<V̄!k z41A x=-'GE%ulOo/KPv7+0eӔ_$*g2{ejb\ )իD)^6%{P+J>&{mjyVS U6:d ܁-[kPVPֲr\>A}+o|(gf(7[If*%/V|Mq~w\#Q P1ی~m9?a$A Vűb|2 "]~ޚJT*!`j8]52hbjxpj( ࠋ93cPcP`}޺H]XmQ:<`hv*9}1& +ؐᡓaFt\cHسƠՆTnDӯ -#t b +mfs[X3|;fcG6j6Q}42_1g H2̑FTd5*4LFy1\iA '`gF2ww"QP.YX +A!ⵀ^*I5Fcz 3$j=64uLL'cV'L8fq8_}{m$mɣjtrUG1~P9K /Q܋ ׈h QtlX!*60$n!2_j_jKXeI {ZAWm:JoJ=Nc.;y^/ G8lj&ZM4{hD&St@E%HàqÀ&+ؼXA3oTCS|Ewm,KSOgg|F?nAx2@Lig|ibZNDBz+8 R` +ƨ5Y}/j5Oggz_gz)zI/w{V|K_"VR'Y򵅪mmmlaːfqI m,,o18탣 eȮ +ft%>x7&㋕[8F$MoF YD}4Sh3L3=h!$  GT7n½Z0i[ha` w=\mx};.4=~'9= whwHΣ߻ok3[u(yHyx[~݋ƾ0#Q8Ɛ IGc_+۳#a;[t 0uz="={#=E]t|?tIN⩆|bH" SpDYp-/ŚK0\#'D|~~z6۽@FBbFGvlF{6;lQ߱BD} + +=qJC] \/M>eD}{軻;h̛aŎ}u9 +~\虿*?Av +/i>VёgIU}U9p>#`jz5:z2]7JjcT_"~gh Uyu5x5z=I sv@ۇ7yqț?|W.OsB"la +^A :J6iuJh/Q|xӭ]`'\"Vk o~ nj0ۅ؞bv>[G5p8±?xakw?gJ DV 58Fa? Cs_π| +쿁k6oRkқ4hWQu p?-Ϲv=gDjFHL8B֧QE8>óuTFcOv9RGfkv_񅻕ϻ!l{<{j}DWO*I'duǏQǹjKSExWJ"*ΙOwϣgN> +`1ɯ*2/9ODM҅c'Sc!~TG@Tj.`uAqEt]u{&:뿍7WW6ܞD 0,a1 lr5:3t:($STNU*:O?0o(UHo۹6n-c~%Yƨ],o  k8,p WʇoJXd.SDEM&lԄ +bfҕ7ēFֱլe+XGy9er0:! +p%KpkLPٌsePiƙYi{5tJcLe1ݑ`fy+]+]걒uTrF%iӽ{(r{2>E^\XXaQV"` x j +ZD#* F31M8Zc3mMRM;1NLzLLOzǪo_F HBPq +VзVC[|.A_P}У? އ[b7YڔJ kMHr"Ge!-w`5|@9T/WpBʔ2A΁X% ]+{6PjBovO)ޣ3y^N7Zj_u~M@Fz(,@ +prmrgaʌqGMUZlF/͸FIƭJ05o(xWGDNCuPsz~!/܍rvD:/ːGy9Q'j\\bUJp)\4jKMB]> +V+J~.S`W߂!.(WA :b +0(sׅZo=A&%V'_|6>5pO(7rկ8@}Jf@M.a`1@ϗp#܋>Px_ɿ8,Ϧ[\ +?b[W%h?Ct4hE=NBV>nּ[W¡k8NpIiLmWE{/#$.\s:ƙðρl9 E2sYsWp~]+VmY+iFcJbJ;Շ Y%^=iB4q5џMbZ42Pl" +\lg>:p L唫~5O|'wp +FF h--ԣҌ h-G3*]_~oa,ڗ^d +^׋6bhC2#m\Dm Wʋ g_cgcv%qy6> O+xwd^v7K<.n7Mwu2ysO*|Ne $,n觵1<\=c^&o00q3r?N-⛜UGnĜO0!9{7b3rc @cx̾sf"3rFD1//k {@"rc:"~7I3Cv Z2y +t/<__@a'm-g?0$>mޤ9>dnPJ+>)8OZ~(EDߡ?Tráw'^A3+!N;,q;e6hՅ_W .{'{`͊:bhߒKܢOZ,8F_Q]{ +=!,cvw=٦W^%չq֣Ml-Fo=)|FrYȓJ]/)+?LjrT<6\2h0-d}ѥt@&pY N'='`SШ( {GƏ/i\ Q~h5׸$|m5Qx`qSN85<&/85 +jVNmD +H\WQJߋ2]zh>_ҮDHNCdND +2`-!S!Z^ID%~KRfqr:Jwm5hN/gV!z9k.VS#h<]̛ N|,;WK j7iccC`Ta\&Ib,|6znobj`)d 7-h>byTJ"TdBcQʏQ^TrKeQvBe.-%e5)|X7d-h\i"iƜq7u~k᱂xYD԰80+EqʌRF\g+-%kG) MJNX$&Y,JH -odXwO1["Bv3 +nE,c9RP%ᛜ%8&&)%)]IJ9G3eIFHi9eL;zHQdL!1Ju>kQvQ.n*ׯ# X*9$kX-Z5#-[qi>W1h֥ve*6` l?PPƇ +TӺ={uٹzkcqTbp&ycU\VLYNQTv|EKnVX"4+(w 7"\f\CۿFOLmfVtb6lpo$sd̏TD~ +f* C<E +t﨓_!c!lf{͂P.cjK8cmU>; +F R&$c+$I8I"'$НkE.dx.a.Gi0y0wkikyE,8IWh\)ς*㞗\wqHU7<:C+?@J/>yOy>J# Z֒S +IV5c옞 +⡐x(nv 7 &(@ 8`.A$;v~s=Pdma78Y#nj +ditk@b7,A=;^2&-aXĤV t`<Ph?a@_&/R:R;3v Y >Qͬݲآe波B$xW@+1^36ӁW,g\ƴ38Ot!.Gl5çp%Dy+앝::⢃uPP vk-נ&'vc8G{i^x*/.Vl W+-G/\r^Y?Ybqli`dQr)xcR,i͓D*ov F21O7p}\^X1$K:di8xR{"J;hh%-t[3]p#^C\ẹ4of86J>E,r,#Mɕ}El +mT_ +Nfk22W̺ę/X&YAxamK%&&y$ 1*rY!0fWh@B*T +Y)ܡA-jUy[ޑ|K>fF.<ׂ쨡FJuԈ$ lA^ +lYUᲬrL\&?kVw~y>-32,yX+"سe#DZrVdW'yV+]n~DovĚƾi'E<=[MOz.|jbUBLrI:\HTk|eWUvb.WG\c,l IC,Ձ-E\zG yOˎ5|nĤ.%pYN$}c!&>rO0%nD#%Q@kyI8܂J),Ɉ$nďI*?%>sc'3 o/J.Y05\4Na`$ISgD:qah،ў NL q(6n>ob= puR3$Yea4m͛ITdC<gr0|K[6DS&2%p΁lGGk_'v3vHeKRj(#\3zERȄBQȰ/ +) +8`c!ςjY)?֯Y0I3%55n rc1咭Xqn&G9(&I^q@jK\)F[ +ypβNTGI } +q5f2R͏/1qa(.b0'uĢZǠ&j)~TQ uTZrQ4d6P2G@ P| _op%(lג!4vRX Ýh.h6ĵBhbF4,nި麇kS^S1*ٖR)p .FWbՌc/ ^=iC!E]v̈]g: %; LiK1\hNe;de C=2H,iA +j'GsLFl:IFec.0 Z@)-hJ\ + +xAT@ܤʥ "" +At2uhEbLlL̜Kys{\+ ƺD|C>Hkƃa^+kljN3qϱEGwy?_:>8U[|3$b߷I -.mfVخ7kr>s\[%bsoc獇/0KD=`t95Z?~w.z1VX#Gpg q1q($Yq8: 1< g3rJ_RS~k/< &(~S}ktD1qc}a&DٺNƛAx_M>p8g̊3Gv~3S*c.#j7ů _P99ʻh- {7|Z|R;_qk/_gхo`>C%f~SuC'xjPX謇>n󈬼gO;U[DN;[zgS+ei-vw=4ԭzw⿘8O&F^wKd k\aQ#۵0.QhU: `Z[2M^ӳGw4Q'{3NcQ?1;WB^*Sj0FC"Q1ڵMdk%sJ^>ao} A2]J}M2O>nP9P,O^v(L'RwwIWAt+Dݔډq5Wf -^b{* +XUj`MU2XWš ka|5r{c<ɉ5 jMZ^6BfcNpY&/&g7)y +dPX`tTZ`QsǪr]eThdӤ>nL>=꽅>>%}a*5r*xc^jLt(2҉t>*p=1f ;5ߞQyWF ;Hr24j$MfD@{Hxª9;TE`dS_h:cYqnk^k$*-s&' +hRwڒY["3-n##Sxǖ=J^<,Nqjrhr|;_̈́NkY39zG~FVKy18r FGӣG-k^_8ҲWE%5R_GR'y6KrngC/fM~7B9)sv +rS"gzdeeEfv^Y{EF{\\]s# ts.qև>qsJ6qI 0Q#BZV.=FFnf} "oI$_R3j>s4@ӑrwvjm\Ú~1. dNN2JҏLQ]5 +U\&*`Y~Ĝ b@3 BBp[B +'}쭬F`X"ͷl9ie.p"}GzZC[jjRE+@KmZc1kC2a A:R(ơxYΥG7ˮpRX}Rn|UEsU+ +ìPJ \pX"WXd+ +`abgcTKY 뢛35qx C]$ .IQ\-o5QOxpNSI5TE8=Ql]5-A,^dFj+pc%g[rBRz]6;&a\bCl^\)n 2%eKW'iBo^)WCQ>Ad.{x.vJ6͎:ccw; WX_%?Cp͕T5"\4IQܨ&7jrecTdBafe ^ARJ%I'ҠUTd&K2||W}眹Ι9_羟e + +zt2 +h2rL>5񸽍m֢ǟC +C=,#d?%ujA'=W|oRX8+)'y8ps Lh1dƲdg` [ 驘u57CWpy{}0q ,_W1|41_\tOϣ<@#iࡉҷx"Q/{wT}L2=>[45#>+d CŁĩXTt ^x_ ЁB1\|PV?7 +2bOR2ɾH+>/Y]<7t !t}?lR] biv6&E H0q;N$^@4 ) kEuR kzr\3_([&LR7q(d}=Q,)o~b!ޜqQ8RS ?, ;_e4(/UTAJW;qϊIQ/@iG:=}~^x{ѠdjFAA؁Ml.׃pd6 mg7(ַ,+Y9,C8٪&xI j!.'*LQ\Ty=.ӇC]Wh-`+KkEk#jd{Xqr CMO5lʢn(z%=+^snYs#EWVO*g.Z=2>nvLPjlcy\Ɖ=d)' +Tei$j6,6'oC}a\j|@PXiØꩥVw,GʚsNX۶ + 0F/@TCUs:˂w|p=h77;bK.`Ӓn^Y .O}Pj,T6݃JcLߦa}V][zžfg_ULػ'=L :q\*עtgh;V=36g -xO]}s b6 0f{s4@wHb\  mwpf."O~OWG8Ww,ta2lvdK +9zKBѬ)AKe;FkUl~q7D +;]gNw3r 0[P{B&1+.z]f#te dpI=c"f Nk1D>V3@. ]m8-\n6> _ion߹n(a/U.e-/uz=^Ƴsa, 2.7V\0.00̸z`}HlF ˙~h"P2?B[8lۃb⏤S ?׹_Z1:r^Jw/]H8# @D +( +T!` P` qP 7Hƕk&" \Qr83dĀO/6:w(CgFPaó^jB#A' ˞ 49lǒɝ`(2 +»I@tO`M5he((@c2"`%|@AK!M1XNE0 A? &|EGGYkRGpOOv4Nwѹď +9VP0@S > +Ë)G +sLlM<` '`V 8ٕڦ>P\ $lbW0G&]@يGPR]uW~:v8!fv1Pɇw U\h=@W#n2@)`K`@"]qY3NV()(@Dg8ћȇwCi +41HjE/`&ף#5IHQr[rt,+n6.m͌ @cEe"/ 10Ƈg\tM :p'FQ| +@&r)Xp7!N{w, [ eLC cGjϤU y:{D䕷PRz|z +ωDy@VzR7M88bJ'"Kr ybm @O[⠅ +nb:pDq)#Jv7"@Q +6!"l_Q; b!zX8d|im{ln=_UaAe#}$sQaK'U +C80kK{R71}Rce"J +Sk')F}D ݆rxɉjr?5oRna/tXbKIVmM*ˮUQSnVf:d`av`Yf*+8)p = Ł17q\~aoL{!i(7w"{c ÝWA@5|5Bs륤a`#(GeQ'_J_[<82o >WrFm-5޾EWӢV?| VO/&e88C<] +4MS @0d}@_*; t-P@;c^X%uO{7՘biov;t7P #PݭzPRB|'Kjue8^O{ JJi?ؚp_ 85!(( 7WMNA#OVBpݾx4k_65 +*#&Ys ϨAO_kge𧻓ϟ={J2BzoXmOPt2&J]~88Ӈnci5VS=p b h%> A +*Pc õ߇͜wU P$qr*#ٮەZ򄧕acpLZuc-U._(9_T|uՏ|W673162nja-[enhgDχd ՖUj +9C&٣G;}(9%5];2YQ&K|xZ̦X;y$Vq]ԕ֧@RSVCѩCq1{DFF,9KL 61T}@- /Du3("1&;=l蹞qRȤiMλx͵'[9H;->,9;|N}}Ʀnj8#jWV_o6z~=,D#& /''Wq:r&:'5Ba,Ax:3UojӜCne~G]I~K%|Xm|T{âzq3IIoYʊ + ](^_?a*!qy +QU[VZ[n?NCig_*7*+b߹7%UlŠ&|͟ͼ&o8GH.\ +.Y v[eQ8uUkn~腛c(xߙ[Z7q7?TL7de>|G7bO 3X i ,S&cӻVWlݶc\8Tۺ`5lm(wgܲ`޽ٳf[nמ#W6ONk~{%.A,gi9T}r=p5'nl_! ;2 endstream endobj 33 0 obj [32 0 R] endobj 43 0 obj <> endobj xref +0 44 +0000000004 65535 f +0000000016 00000 n +0000000147 00000 n +0000045896 00000 n +0000000000 00000 f +0000045947 00000 n +0000000000 00000 f +0000000000 00000 f +0000047251 00000 n +0000047323 00000 n +0000047766 00000 n +0000049165 00000 n +0000114753 00000 n +0000180341 00000 n +0000245929 00000 n +0000311517 00000 n +0000377105 00000 n +0000442693 00000 n +0000508281 00000 n +0000573869 00000 n +0000639457 00000 n +0000705045 00000 n +0000770633 00000 n +0000836221 00000 n +0000901809 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000908187 00000 n +0001401205 00000 n +0000046326 00000 n +0000908487 00000 n +0000908374 00000 n +0000046822 00000 n +0000907613 00000 n +0000907661 00000 n +0000908258 00000 n +0000908289 00000 n +0000908522 00000 n +0001401230 00000 n +trailer <<559F27543B3B4F9BB2B2A3DEAB0AC63D>]>> startxref 1401419 %%EOF \ No newline at end of file diff --git a/icon/imageplus.png b/icon/imageplus.png new file mode 100644 index 00000000..0f592960 Binary files /dev/null and b/icon/imageplus.png differ diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..65aa1ab6 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,57 @@ +site_name: Image+ +docs_dir: docs +site_dir: _build/site +edit_uri: tree/master/docs + +repo_name: 'Jako/ImagePlus' +repo_url: https://github.com/Jako/ImagePlus + +copyright: '© 2015-2023 Treehill Studio' + +nav: +- Description: 'index.md' +- Installation: 'installation.md' +- Getting Started: 'getting-started.md' +- Usage: 'usage.md' +- Examples: 'examples.md' +- Contributors: 'contributors.md' + +extra: + analytics: + provider: matomo + url: matomo.treehillstudio.com + site: 40 + social: + - icon: fontawesome/brands/github + link: https://github.com/Jako + +theme: + name: material + custom_dir: ../../mkdocs-material-treehillstudio/material + + # 404 page + static_templates: + - 404.html + + # Default values, taken from mkdocs_theme.yml + language: en + feature: + tabs: false + font: false + +markdown_extensions: + - footnotes + - tables + - admonition + - meta + - toc + - pymdownx.details + - pymdownx.superfences + - attr_list + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + +plugins: + - glightbox + - search diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..b715d446 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3703 @@ +{ + "name": "imageplus", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "imageplus", + "dependencies": { + "jquery": "^3.7.1" + }, + "devDependencies": { + "@fomantic/gulp-header": "^2.1.1", + "autoprefixer": "^10.4.20", + "cssnano": "^7.0.6", + "date-format": "^4.0.14", + "gulp": "^5.0.0", + "gulp-concat": "^2.6.1", + "gulp-footer": "^2.1.0", + "gulp-postcss": "^10.0.0", + "gulp-rename": "^2.0.0", + "gulp-replace": "^1.1.4", + "gulp-sass": "^5.1.0", + "gulp-uglify": "^3.0.2", + "postcss": "^8.4.45", + "sass": "^1.78.0", + "uglify-js": "^3.19.3" + } + }, + "node_modules/@fomantic/gulp-header": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fomantic/gulp-header/-/gulp-header-2.1.1.tgz", + "integrity": "sha512-jpQpZJSn1ApefG4vyypbENvIBP1d4+0g+rcqGFjNA8x9jgGP8IqIgjUhgFF67vu7f08RvYJetpdnl4dgDy82dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "concat-with-sourcemaps": "^1.1.0", + "map-stream": "^0.1.0", + "through2": "^3.0.2" + } + }, + "node_modules/@gulpjs/messages": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz", + "integrity": "sha512-Ys9sazDatyTgZVb4xPlDufLweJ/Os2uHWOv+Caxvy2O85JcnT4M3vc73bi8pdLWlv3fdWQz3pdI9tVwo8rQQSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@gulpjs/to-absolute-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz", + "integrity": "sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", + "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/vinyl": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.12.tgz", + "integrity": "sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/expect": "^1.20.4", + "@types/node": "*" + } + }, + "node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-done": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz", + "integrity": "sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.4.4", + "once": "^1.4.0", + "stream-exhaust": "^1.0.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/async-settle": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-2.0.0.tgz", + "integrity": "sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-done": "^2.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bach": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bach/-/bach-2.0.1.tgz", + "integrity": "sha512-A7bvGMGiTOxGMpNupYl9HQTf0FFDNF4VCmks4PJpFyN1AX2pdKuxuwdvUz2Hu388wcgp+OvGFNsumBfFNkR7eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-done": "^2.0.0", + "async-settle": "^2.0.0", + "now-and-later": "^3.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/bare-events": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", + "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/binaryextensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", + "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001659", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001659.tgz", + "integrity": "sha512-Qxxyfv3RdHAfJcXelgf0hU4DFUVXBGTjqrBUZLUh8AtlGnsDo+CnncYtTd95+ZKfnANUOzxyIQCuU/UeBZBYoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "license": "ISC", + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-props": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz", + "integrity": "sha512-bVWtw1wQLzzKiYROtvNlbJgxgBYt2bMJpkCbKmXM3xyijvcjjWXEk5nyrrT3bgJ7ODb19ZohE2T0Y3FgNPyoTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "each-props": "^3.0.0", + "is-plain-object": "^5.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/css-declaration-sorter": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.6.tgz", + "integrity": "sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^7.0.6", + "lilconfig": "^3.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-default": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.6.tgz", + "integrity": "sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^5.0.0", + "postcss-calc": "^10.0.2", + "postcss-colormin": "^7.0.2", + "postcss-convert-values": "^7.0.4", + "postcss-discard-comments": "^7.0.3", + "postcss-discard-duplicates": "^7.0.1", + "postcss-discard-empty": "^7.0.0", + "postcss-discard-overridden": "^7.0.0", + "postcss-merge-longhand": "^7.0.4", + "postcss-merge-rules": "^7.0.4", + "postcss-minify-font-values": "^7.0.0", + "postcss-minify-gradients": "^7.0.0", + "postcss-minify-params": "^7.0.2", + "postcss-minify-selectors": "^7.0.4", + "postcss-normalize-charset": "^7.0.0", + "postcss-normalize-display-values": "^7.0.0", + "postcss-normalize-positions": "^7.0.0", + "postcss-normalize-repeat-style": "^7.0.0", + "postcss-normalize-string": "^7.0.0", + "postcss-normalize-timing-functions": "^7.0.0", + "postcss-normalize-unicode": "^7.0.2", + "postcss-normalize-url": "^7.0.0", + "postcss-normalize-whitespace": "^7.0.0", + "postcss-ordered-values": "^7.0.1", + "postcss-reduce-initial": "^7.0.2", + "postcss-reduce-transforms": "^7.0.0", + "postcss-svgo": "^7.0.1", + "postcss-unique-selectors": "^7.0.3" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-utils": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.0.tgz", + "integrity": "sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/each-props": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-3.0.0.tgz", + "integrity": "sha512-IYf1hpuWrdzse/s/YJOrFmU15lyhSzxelNVAHTEG3DtP4QsLTWZUzcUL3HMXmKQxXpa4EIrBPpwRgj0aehdvAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^5.0.0", + "object.defaults": "^1.1.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.18", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.18.tgz", + "integrity": "sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fancy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-2.0.0.tgz", + "integrity": "sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-support": "^1.1.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", + "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fastest-levenshtein": "^1.0.7" + } + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/fined": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-2.0.0.tgz", + "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^5.0.0", + "object.defaults": "^1.1.0", + "object.pick": "^1.3.0", + "parse-filepath": "^1.0.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/flagged-respawn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-2.0.0.tgz", + "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, + "license": "MIT", + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-mkdirp-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz", + "integrity": "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.8", + "streamx": "^2.12.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-stream": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-8.0.2.tgz", + "integrity": "sha512-R8z6eTB55t3QeZMmU1C+Gv+t5UnNRkA55c5yo67fAVfxODxieTwsjNG7utxS/73NdP1NbDgCrhVEg2h00y4fFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@gulpjs/to-absolute-glob": "^4.0.0", + "anymatch": "^3.1.3", + "fastq": "^1.13.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "is-negated-glob": "^1.0.0", + "normalize-path": "^3.0.0", + "streamx": "^2.12.5" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-stream/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-watcher": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz", + "integrity": "sha512-wGM28Ehmcnk2NqRORXFOTOR064L4imSw3EeOqU5bIwUf62eXGwg89WivH6VMahL8zlQHeodzvHpXplrqzrz3Nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-done": "^2.0.0", + "chokidar": "^3.5.3" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glogg": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz", + "integrity": "sha512-eWv1ds/zAlz+M1ioHsyKJomfY7jbDDPpwSkv14KQj89bycx1nvK5/2Cj/T9g7kzJcX5Bc7Yv22FjfBZS/jl94A==", + "dev": true, + "license": "MIT", + "dependencies": { + "sparkles": "^2.1.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/gulp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-5.0.0.tgz", + "integrity": "sha512-S8Z8066SSileaYw1S2N1I64IUc/myI2bqe2ihOBzO6+nKpvNSg7ZcWJt/AwF8LC/NVN+/QZ560Cb/5OPsyhkhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-watcher": "^6.0.0", + "gulp-cli": "^3.0.0", + "undertaker": "^2.0.0", + "vinyl-fs": "^4.0.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gulp-cli": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-3.0.0.tgz", + "integrity": "sha512-RtMIitkT8DEMZZygHK2vEuLPqLPAFB4sntSxg4NoDta7ciwGZ18l7JuhCTiS5deOJi2IoK0btE+hs6R4sfj7AA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@gulpjs/messages": "^1.1.0", + "chalk": "^4.1.2", + "copy-props": "^4.0.0", + "gulplog": "^2.2.0", + "interpret": "^3.1.1", + "liftoff": "^5.0.0", + "mute-stdout": "^2.0.0", + "replace-homedir": "^2.0.0", + "semver-greatest-satisfied-range": "^2.0.0", + "string-width": "^4.2.3", + "v8flags": "^4.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gulp-concat": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "concat-with-sourcemaps": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-concat/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/gulp-footer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gulp-footer/-/gulp-footer-2.1.0.tgz", + "integrity": "sha512-CK3nRBP3PG59XN2L1rDLkBHA7goYsW+tJuVQccLP9jq3mpBT2kuRq0ImgNjrUkDbF948aCVQH4J7uIEqiZ2MHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21", + "map-stream": "^0.0.7" + } + }, + "node_modules/gulp-footer/node_modules/map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/gulp-postcss": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/gulp-postcss/-/gulp-postcss-10.0.0.tgz", + "integrity": "sha512-z1RF2RJEX/BvFsKN11PXai8lRmihZTiHnlJf7Zu8uHaA/Q7Om4IeN8z1NtMAW5OiLwUY02H0DIFl9tHl0CNSgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fancy-log": "^2.0.0", + "plugin-error": "^2.0.1", + "postcss-load-config": "^5.0.0", + "vinyl-sourcemaps-apply": "^0.2.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/gulp-rename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", + "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/gulp-replace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.4.tgz", + "integrity": "sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/vinyl": "^2.0.4", + "istextorbinary": "^3.0.0", + "replacestream": "^4.0.3", + "yargs-parser": ">=5.0.0-security.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gulp-sass": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-5.1.0.tgz", + "integrity": "sha512-7VT0uaF+VZCmkNBglfe1b34bxn/AfcssquLKVDYnCDJ3xNBaW7cUuI3p3BQmoKcoKFrs9jdzUxyb+u+NGfL4OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "picocolors": "^1.0.0", + "plugin-error": "^1.0.1", + "replace-ext": "^2.0.0", + "strip-ansi": "^6.0.1", + "vinyl-sourcemaps-apply": "^0.2.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/gulp-sass/node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-uglify": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", + "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-each": "^1.0.1", + "extend-shallow": "^3.0.2", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "isobject": "^3.0.1", + "make-error-cause": "^1.1.1", + "safe-buffer": "^5.1.2", + "through2": "^2.0.0", + "uglify-js": "^3.0.5", + "vinyl-sourcemaps-apply": "^0.2.0" + } + }, + "node_modules/gulp-uglify/node_modules/glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-uglify/node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "glogg": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-uglify/node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-uglify/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/gulplog": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-2.2.0.tgz", + "integrity": "sha512-V2FaKiOhpR3DRXZuYdRLn/qiY0yI5XmqbTKrYbdemJ+xOh2d2MOweI/XFgMzd/9+1twdvMwllnZbWZNJ+BOm4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "glogg": "^2.2.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/has-gulplog/node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istextorbinary": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", + "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "binaryextensions": "^2.2.0", + "textextensions": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "license": "MIT" + }, + "node_modules/last-run": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-2.0.0.tgz", + "integrity": "sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/lead": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-4.0.0.tgz", + "integrity": "sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/liftoff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-5.0.0.tgz", + "integrity": "sha512-a5BQjbCHnB+cy+gsro8lXJ4kZluzOijzJ1UVVfyJYZC+IP2pLv1h4+aysQeKuTmyO8NAqfyQAk4HWaP/HjcKTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend": "^3.0.2", + "findup-sync": "^5.0.0", + "fined": "^2.0.0", + "flagged-respawn": "^2.0.0", + "is-plain-object": "^5.0.0", + "rechoir": "^0.8.0", + "resolve": "^1.20.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha512-4TO2Y3HkBnis4c0dxhAgD/jprySYLACf7nwN6V0HAHDx59g12WlRpUmFy1bRHamjGUEEBrEvCq6SUpsEE2lhUg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "make-error": "^1.2.0" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", + "dev": true + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mute-stdout": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-2.0.0.tgz", + "integrity": "sha512-32GSKM3Wyc8dg/p39lWPKYu8zci9mJFzV1Np9Of0ZEpe6Fhssn/FbI7ywAMd40uX+p3ZKh3T5EeCFv81qS3HmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/now-and-later": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz", + "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/plugin-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-2.0.1.tgz", + "integrity": "sha512-zMakqvIDyY40xHOvzXka0kUvf40nYIuwRE8dWhti2WtjQZ31xAgBZBhxsK7vK3QbRXS1Xms/LO7B5cuAsfB2Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss": { + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.0.2.tgz", + "integrity": "sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12 || ^20.9 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.38" + } + }, + "node_modules/postcss-colormin": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.2.tgz", + "integrity": "sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-convert-values": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.4.tgz", + "integrity": "sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-comments": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.3.tgz", + "integrity": "sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.1.tgz", + "integrity": "sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-empty": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz", + "integrity": "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz", + "integrity": "sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-load-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", + "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1", + "yaml": "^2.4.2" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + } + } + }, + "node_modules/postcss-merge-longhand": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.4.tgz", + "integrity": "sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^7.0.4" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-rules": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.4.tgz", + "integrity": "sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^5.0.0", + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz", + "integrity": "sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz", + "integrity": "sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^5.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-params": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.2.tgz", + "integrity": "sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "cssnano-utils": "^5.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.4.tgz", + "integrity": "sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz", + "integrity": "sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz", + "integrity": "sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz", + "integrity": "sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz", + "integrity": "sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-string": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz", + "integrity": "sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz", + "integrity": "sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.2.tgz", + "integrity": "sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz", + "integrity": "sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz", + "integrity": "sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-ordered-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.1.tgz", + "integrity": "sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-utils": "^5.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.2.tgz", + "integrity": "sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz", + "integrity": "sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.1.tgz", + "integrity": "sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.3.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.3.tgz", + "integrity": "sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true, + "license": "ISC" + }, + "node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/replace-homedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-2.0.0.tgz", + "integrity": "sha512-bgEuQQ/BHW0XkkJtawzrfzHFSN70f/3cNOiHa2QsYxqrjaC30X1k74FJ6xswVBP0sr0SpGIdVFuPwfrYziVeyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/replacestream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", + "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "escape-string-regexp": "^1.0.3", + "object-assign": "^4.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-options": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-2.0.0.tgz", + "integrity": "sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "value-or-function": "^4.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.78.0.tgz", + "integrity": "sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-greatest-satisfied-range": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-2.0.0.tgz", + "integrity": "sha512-lH3f6kMbwyANB7HuOWRMlLCa2itaCrZJ+SAqqkSZrZKO/cAsk2EOyaKHUtNkVLFyFW9pct22SFesFp3Z7zpA0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "sver": "^1.8.3" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sparkles": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz", + "integrity": "sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/stream-composer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-composer/-/stream-composer-1.0.2.tgz", + "integrity": "sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "streamx": "^2.13.2" + } + }, + "node_modules/stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true, + "license": "MIT" + }, + "node_modules/streamx": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.0.tgz", + "integrity": "sha512-ZGd1LhDeGFucr1CUCTBOS58ZhEendd0ttpGT3usTvosS4ntIwKN9LJFp+OeCSprsCPL14BXVRZlHGRY1V9PVzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylehacks": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.4.tgz", + "integrity": "sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sver": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/sver/-/sver-1.8.4.tgz", + "integrity": "sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "semver": "^6.3.0" + } + }, + "node_modules/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, + "node_modules/text-decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.1.tgz", + "integrity": "sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/textextensions": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", + "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-through": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-3.0.0.tgz", + "integrity": "sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undertaker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-2.0.0.tgz", + "integrity": "sha512-tO/bf30wBbTsJ7go80j0RzA2rcwX6o7XPBpeFcb+jzoeb4pfMM2zUeSDIkY1AWqeZabWxaQZ/h8N9t35QKDLPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bach": "^2.0.1", + "fast-levenshtein": "^3.0.0", + "last-run": "^2.0.0", + "undertaker-registry": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/undertaker-registry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-2.0.0.tgz", + "integrity": "sha512-+hhVICbnp+rlzZMgxXenpvTxpuvA67Bfgtt+O9WOE5jo7w/dyiF1VmoZVIHvP2EkUjsyKyTwYKlLhA+j47m1Ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/v8flags": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-4.0.1.tgz", + "integrity": "sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/value-or-function": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-4.0.0.tgz", + "integrity": "sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-contents": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-contents/-/vinyl-contents-2.0.0.tgz", + "integrity": "sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^5.0.0", + "vinyl": "^3.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/vinyl-contents/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/vinyl-fs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-4.0.0.tgz", + "integrity": "sha512-7GbgBnYfaquMk3Qu9g22x000vbYkOex32930rBnc3qByw6HfMEAoELjCjoJv4HuEQxHAurT+nvMHm6MnJllFLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fs-mkdirp-stream": "^2.0.1", + "glob-stream": "^8.0.0", + "graceful-fs": "^4.2.11", + "iconv-lite": "^0.6.3", + "is-valid-glob": "^1.0.0", + "lead": "^4.0.0", + "normalize-path": "3.0.0", + "resolve-options": "^2.0.0", + "stream-composer": "^1.0.2", + "streamx": "^2.14.0", + "to-through": "^3.0.0", + "value-or-function": "^4.0.0", + "vinyl": "^3.0.0", + "vinyl-sourcemap": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/vinyl-fs/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz", + "integrity": "sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "convert-source-map": "^2.0.0", + "graceful-fs": "^4.2.10", + "now-and-later": "^3.0.0", + "streamx": "^2.12.5", + "vinyl": "^3.0.0", + "vinyl-contents": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/vinyl-sourcemap/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", + "dev": true, + "license": "ISC", + "dependencies": { + "source-map": "^0.5.1" + } + }, + "node_modules/vinyl-sourcemaps-apply/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vinyl/node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..9e564384 --- /dev/null +++ b/package.json @@ -0,0 +1,32 @@ +{ + "name": "imageplus", + "description": "Advanced Image template variable", + "author": "Thomas Jakobi ", + "private": true, + "devDependencies": { + "autoprefixer": "^10.4.20", + "cssnano": "^7.0.6", + "date-format": "^4.0.14", + "gulp": "^5.0.0", + "gulp-concat": "^2.6.1", + "gulp-footer": "^2.1.0", + "@fomantic/gulp-header": "^2.1.1", + "gulp-postcss": "^10.0.0", + "gulp-rename": "^2.0.0", + "gulp-replace": "^1.1.4", + "gulp-sass": "^5.1.0", + "gulp-uglify": "^3.0.2", + "postcss": "^8.4.45", + "sass": "^1.78.0", + "uglify-js": "^3.19.3" + }, + "dependencies": { + "jquery": "^3.7.1" + }, + "browserslist": [ + "last 2 version", + "> 1%", + "maintained node versions", + "not dead" + ] +} diff --git a/source/css/mgr/imageplus.css b/source/css/mgr/imageplus.css new file mode 100644 index 00000000..a9366943 --- /dev/null +++ b/source/css/mgr/imageplus.css @@ -0,0 +1,304 @@ +#modx-input-props.imageplus-props, #modx-widget-props.imageplus-props { + padding-top: 0; +} + +.modx-grid .x-grid-cell-icons .x-grid3-cell-inner { + padding-right: 5px; +} + +.modx-grid-small .x-grid3-cell-inner { + padding: 8px 5px 8px 5px; +} +.modx-grid-small .x-grid3-hd-inner { + padding: 8px 18px 8px 5px; +} +.modx-grid-small .x-grid3-td-checker { + padding: 6px 0 0; +} +.modx-grid-small .x-grid3-td-checker.x-grid3-hd { + padding-top: 0; +} +.modx-grid-small .x-panel-tbar .x-toolbar { + padding-top: 2px; +} +.modx-grid-small .x-panel-tbar .x-toolbar.x-small-editor .x-form-text { + padding: 3px 8px 2px 8px; + margin-top: 0; +} +.modx-grid-small .x-panel-tbar .x-toolbar .x-btn { + padding: 4px 10px 4px 10px; +} +.modx-grid-small .x-panel-bbar .x-toolbar .x-btn { + padding: 2px 2px; +} +.modx-grid-small .x-panel-bbar .x-toolbar .x-form-text { + padding: 2px 3px; +} +.modx-grid-small .x-tbar-loading:before { + line-height: 16px; +} +.modx-grid-small .x-tbar-page-last:before, .modx-grid-small .x-tbar-page-next:before, .modx-grid-small .x-tbar-page-prev:before, .modx-grid-small .x-tbar-page-first:before { + line-height: 16px; +} +.modx-grid-small .x-btn-icon.arrow_up button:before, .modx-grid-small .x-btn-icon.arrow_down button:before, .modx-grid-small .x-btn-icon.refresh button:before { + line-height: 16px; +} +.modx-grid-small .x-small-editor .x-form-text, .modx-grid-small .x-small-editor .x-form-field-wrap { + margin-top: 2px; +} + +.x-form-field-wrap .x-form-triple-triggers { + border: 0; + border-radius: 0 3px 3px 0; + box-shadow: none; + height: 100% !important; + padding: 0; + position: absolute; + right: 0; + top: 0; + width: 90px; +} +.x-form-field-wrap .x-form-triple-triggers .x-form-trigger { + display: inline-block; + position: relative; + top: auto; + vertical-align: top; +} +.x-form-field-wrap .x-form-triple-triggers .x-form-trigger.x-form-clear-trigger:before { + content: "\f00d"; +} +.x-form-field-wrap .x-form-triple-triggers .x-form-trigger.x-form-crop-trigger:before { + content: "\f125"; +} + +.imageplus-hidden-textarea { + display: none; +} + +.imageplus-sectiontitle .x-form-item-label { + padding-top: 0; +} +.imageplus-sectiontitle .desc-under { + padding-top: 0; +} + +.treehillstudio_about { + cursor: pointer; + height: 40px; + opacity: 0.25; + transition: opacity 0.5s; + margin-top: 20px; +} +.treehillstudio_about:hover { + opacity: 1; +} +.treehillstudio_about .x-panel-body { + text-align: right; +} + +.treehillstudio_window a { + color: #b2bf28; + text-decoration: none; +} +.treehillstudio_window a:hover { + color: #77801a; +} + +/* jquery.Jcrop.css v0.9.15 - MIT License */ +/* + The outer-most container in a typical Jcrop instance + If you are having difficulty with formatting related to styles + on a parent element, place any fixes here or in a like selector + + You can also style this element if you want to add a border, etc + A better method for styling can be seen below with .jcrop-light + (Add a class to the holder and style elements for that extended class) +*/ +.jcrop-holder { + direction: ltr; + text-align: left; + /* IE10 touch compatibility */ + -ms-touch-action: none; +} + +/* Selection Border */ +.jcrop-vline, +.jcrop-hline { + background: #ffffff url("Jcrop.gif"); + font-size: 0; + position: absolute; +} + +.jcrop-vline { + height: 100%; + width: 1px !important; +} + +.jcrop-vline.right { + right: 0; +} + +.jcrop-hline { + height: 1px !important; + width: 100%; +} + +.jcrop-hline.bottom { + bottom: 0; +} + +/* Invisible click targets */ +.jcrop-tracker { + height: 100%; + width: 100%; + /* "turn off" link highlight */ + -webkit-tap-highlight-color: transparent; + /* disable callout, image save panel */ + -webkit-touch-callout: none; + /* disable cut copy paste */ + -webkit-user-select: none; +} + +/* Selection Handles */ +.jcrop-handle { + background-color: #333333; + border: 1px #eeeeee solid; + width: 7px; + height: 7px; + font-size: 1px; +} + +.jcrop-handle.ord-n { + left: 50%; + margin-left: -4px; + margin-top: -4px; + top: 0; +} + +.jcrop-handle.ord-s { + bottom: 0; + left: 50%; + margin-bottom: -4px; + margin-left: -4px; +} + +.jcrop-handle.ord-e { + margin-right: -4px; + margin-top: -4px; + right: 0; + top: 50%; +} + +.jcrop-handle.ord-w { + left: 0; + margin-left: -4px; + margin-top: -4px; + top: 50%; +} + +.jcrop-handle.ord-nw { + left: 0; + margin-left: -4px; + margin-top: -4px; + top: 0; +} + +.jcrop-handle.ord-ne { + margin-right: -4px; + margin-top: -4px; + right: 0; + top: 0; +} + +.jcrop-handle.ord-se { + bottom: 0; + margin-bottom: -4px; + margin-right: -4px; + right: 0; +} + +.jcrop-handle.ord-sw { + bottom: 0; + left: 0; + margin-bottom: -4px; + margin-left: -4px; +} + +/* Dragbars */ +.jcrop-dragbar.ord-n, +.jcrop-dragbar.ord-s { + height: 7px; + width: 100%; +} + +.jcrop-dragbar.ord-e, +.jcrop-dragbar.ord-w { + height: 100%; + width: 7px; +} + +.jcrop-dragbar.ord-n { + margin-top: -4px; +} + +.jcrop-dragbar.ord-s { + bottom: 0; + margin-bottom: -4px; +} + +.jcrop-dragbar.ord-e { + margin-right: -4px; + right: 0; +} + +.jcrop-dragbar.ord-w { + margin-left: -4px; +} + +/* The "jcrop-light" class/extension */ +.jcrop-light .jcrop-vline, +.jcrop-light .jcrop-hline { + background: #ffffff; + filter: alpha(opacity=70) !important; + opacity: 0.7 !important; +} + +.jcrop-light .jcrop-handle { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + background-color: #000000; + border-color: #ffffff; + border-radius: 3px; +} + +/* The "jcrop-dark" class/extension */ +.jcrop-dark .jcrop-vline, +.jcrop-dark .jcrop-hline { + background: #000000; + filter: alpha(opacity=70) !important; + opacity: 0.7 !important; +} + +.jcrop-dark .jcrop-handle { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + background-color: #ffffff; + border-color: #000000; + border-radius: 3px; +} + +/* Simple macro to turn off the antlines */ +.solid-line .jcrop-vline, +.solid-line .jcrop-hline { + background: #ffffff; +} + +/* Fix for twitter bootstrap et al. */ +.jcrop-holder img, +img.jcrop-preview { + max-width: none; +} + +.jcrop-hline, .jcrop-vline { + background: #ffffff url("../../img/mgr/jcrop.gif"); +} \ No newline at end of file diff --git a/source/img/mgr/jcrop.gif b/source/img/mgr/jcrop.gif new file mode 100644 index 00000000..cc55e8c0 Binary files /dev/null and b/source/img/mgr/jcrop.gif differ diff --git a/source/img/mgr/treehill-studio-small.png b/source/img/mgr/treehill-studio-small.png new file mode 100644 index 00000000..d4947faf Binary files /dev/null and b/source/img/mgr/treehill-studio-small.png differ diff --git a/source/img/mgr/treehill-studio-small@2x.png b/source/img/mgr/treehill-studio-small@2x.png new file mode 100644 index 00000000..49415abb Binary files /dev/null and b/source/img/mgr/treehill-studio-small@2x.png differ diff --git a/source/img/mgr/treehill-studio.png b/source/img/mgr/treehill-studio.png new file mode 100644 index 00000000..c13691fc Binary files /dev/null and b/source/img/mgr/treehill-studio.png differ diff --git a/source/img/mgr/treehill-studio@2x.png b/source/img/mgr/treehill-studio@2x.png new file mode 100644 index 00000000..dd7868ba Binary files /dev/null and b/source/img/mgr/treehill-studio@2x.png differ diff --git a/source/js/mgr/imageplus.grid.js b/source/js/mgr/imageplus.grid.js new file mode 100644 index 00000000..263dd56c --- /dev/null +++ b/source/js/mgr/imageplus.grid.js @@ -0,0 +1,267 @@ +/** + * Image+ Sizes Ratio Helper + * + * @package imageplus + * @subpackage script + */ + +ImagePlus.grid.SizesRatio = function (config) { + config = config || {}; + this.ident = 'imageplus-sizesratio-' + Ext.id(); + this.buttonColumnTpl = new Ext.XTemplate('' + + '' + + '

    ' + + '' + + '
  • ' + + '
    ' + + '
' + + '' + + '', { + compiled: true + }); + this.hiddenField = new Ext.form.TextArea({ + name: config.hiddenName || config.name, + hidden: true + }); + Ext.applyIf(config, { + id: this.ident + '-systemsetting-grid', + cls: 'modx-grid modx-grid-small', + fields: ['id', 'name', 'targetwidth', 'targetheight', 'targetRatio', 'rank'], + autoHeight: true, + store: new Ext.data.JsonStore({ + fields: ['id', 'name', 'targetwidth', 'targetheight', 'targetRatio', 'rank'], + data: Ext.util.JSON.decode(config.value) + }), + enableDragDrop: true, + ddGroup: this.ident + '-sizes-ratio-grid-dd', + autoExpandColumn: 'value', + showActionsColumn: false, + labelStyle: 'position: absolute', + columns: [{ + header: _('imageplus.gridsetting_configname'), + dataIndex: 'name', + editable: true, + editor: { + xtype: 'textfield', + allowBlank: false, + listeners: { + change: { + fn: this.saveValue, + scope: this + } + } + }, + width: 100 + }, { + header: _('imageplus.gridsetting_target_width'), + dataIndex: 'targetwidth', + editable: true, + editor: { + xtype: 'textfield', + listeners: { + change: { + fn: this.saveValue, + scope: this + } + } + }, + width: 75 + }, { + header: _('imageplus.gridsetting_target_height'), + dataIndex: 'targetheight', + editable: true, + editor: { + xtype: 'textfield', + listeners: { + change: { + fn: this.saveValue, + scope: this + } + } + }, + width: 75 + }, { + header: _('imageplus.gridsetting_target_ratio'), + dataIndex: 'targetRatio', + editable: true, + editor: { + xtype: 'textfield', + listeners: { + change: { + fn: this.saveValue, + scope: this + } + } + }, + width: 100 + }, { + renderer: { + fn: this.buttonColumnRenderer, + scope: this + }, + menuDisabled: true, + width: 30, + fixed: true, + }, { + dataIndex: 'rank', + hidden: true + }, { + dataIndex: 'id', + hidden: true + }], + tbar: ['->', { + text: ' ' + _('add'), + cls: 'primary-button', + handler: this.addEntry, + scope: this + }], + listeners: { + render: { + fn: this.renderListener, + scope: this + } + } + }); + ImagePlus.grid.SizesRatio.superclass.constructor.call(this, config); +}; +Ext.extend(ImagePlus.grid.SizesRatio, MODx.grid.LocalGrid, { + windows: {}, + getMenu: function () { + var m = []; + m.push({ + text: _('remove'), + handler: this.removeEntry + }); + return m; + }, + addEntry: function () { + var ds = this.getStore(); + var r = new ds.recordType({ + targetwidth: '', + targetheight: '', + targetRatio: '' + }); + this.getStore().insert(0, r); + this.getView().refresh(); + this.getSelectionModel().selectRow(0); + }, + removeEntry: function () { + Ext.Msg.confirm(_('remove') || '', _('confirm_remove') || '', function (e) { + if (e === 'yes') { + var ds = this.getStore(); + var rows = this.getSelectionModel().getSelections(); + if (!rows.length) { + return false; + } + for (var i = 0; i < rows.length; i++) { + var id = rows[i].id; + var index = ds.findBy(function (record, id) { + if (record.id === id) { + return true; + } + }); + ds.removeAt(index); + } + this.getView().refresh(); + this.saveValue(); + } + }, this); + }, + renderListener: function (grid) { + new Ext.dd.DropTarget(grid.container, { + copy: false, + ddGroup: this.ident + '-sizes-ratio-grid-dd', + notifyDrop: function (dd, e, data) { + var ds = grid.store; + var sm = grid.getSelectionModel(); + var rows = sm.getSelections(); + + var dragData = dd.getDragData(e); + if (dragData) { + var cindex = dragData.rowIndex; + if (typeof (cindex) !== "undefined") { + for (var i = 0; i < rows.length; i++) { + ds.remove(ds.getById(rows[i].id)); + } + ds.insert(cindex, data.selections); + sm.clearSelections(); + } + } + grid.getView().refresh(); + grid.saveValue(); + } + }); + this.add(this.hiddenField); + this.saveValue(); + }, + buttonColumnRenderer: function (value, metaData) { + metaData.css = 'x-grid-cell-icons'; + var values = { + action_buttons: [{ + className: 'remove', + icon: 'trash-o', + text: _('remove') + }] + }; + return this.buttonColumnTpl.apply(values); + }, + onClick: function (e) { + var t = e.getTarget(); + var elm = t.className.split(' ')[0]; + if (elm === 'icon') { + var act = t.className.split(' ')[1]; + var record = this.getSelectionModel().getSelected(); + this.menu.record = record.data; + switch (act) { + case 'remove': + this.removeEntry(record, e); + break; + default: + break; + } + } + }, + saveValue: function () { + var value = []; + Ext.each(this.getStore().getRange(), function (record) { + value.push({ + name: record.data.name, + targetwidth: record.data.targetwidth, + targetheight: record.data.targetheight, + targetRatio: record.data.targetRatio + }); + }); + this.hiddenField.setValue(Ext.util.JSON.encode(value)); + } +}); +Ext.reg('sizes-ratio-grid', ImagePlus.grid.SizesRatio); + +ImagePlus.combo.SizesRatio = function (config) { + config = config || {}; + Ext.applyIf(config, { + store: new Ext.data.JsonStore({ + fields: ['name', 'targetwidth', 'targetheight', 'targetRatio'], + data: config.data + }), + mode: 'local', + displayField: 'name', + valueField: 'name', + submitValue: false, + triggerAction: 'all', + listeners: { + select: { + fn: this.selectConfig, + scope: this + } + } + }); + ImagePlus.combo.SizesRatio.superclass.constructor.call(this, config); +}; +Ext.extend(ImagePlus.combo.SizesRatio, MODx.combo.ComboBox, { + selectConfig: function (c, v) { + Ext.getCmp('inopt_targetWidth' + this.config.tvId).setValue(v.data.targetwidth); + Ext.getCmp('inopt_targetHeight' + this.config.tvId).setValue(v.data.targetheight); + Ext.getCmp('inopt_targetRatio' + this.config.tvId).setValue(v.data.targetRatio); + } +}); +Ext.reg('sizes-ratio-combo', ImagePlus.combo.SizesRatio); diff --git a/source/js/mgr/imageplus.jquery.imagecrop.js b/source/js/mgr/imageplus.jquery.imagecrop.js new file mode 100644 index 00000000..3a2c9405 --- /dev/null +++ b/source/js/mgr/imageplus.jquery.imagecrop.js @@ -0,0 +1,79 @@ +/** + * Image+ Custom Manager Page Script + * + * @package imageplus + * @subpackage script + */ + +var $jqIP = jQuery.noConflict(); + +ImagePlus.jquery.ImageCrop = function (config) { + config = config || {}; + this.image = config.image; + this.window = config.window; + this.imageDOMid = Ext.id(); + + Ext.apply(config, { + cropData: this.image.crop, + collapsable: false, + items: [{ + border: false, + html: '' + }], + listeners: { + afterRender: { + fn: this.onAfterRender, + scope: this + }, + destroy: { + fn: function () { + this.cropper.destroy() + }, + scope: this + } + } + }); + ImagePlus.jquery.ImageCrop.superclass.constructor.call(this, config); +}; +Ext.extend(ImagePlus.jquery.ImageCrop, Ext.Panel, { + + onAfterRender: function () { + this.initJcrop.defer(10, this) + }, + + initJcrop: function () { + this.$image = $jqIP('#' + this.imageDOMid).data('ext', this.window); + + var conf = { + minSize: this.window.getMinCropSize(), + aspectRatio: this.window.getAspectRatio(), + setSelect: this.window.getCropCoords(), + outerImage: this.window.getOuterImageUrl(), + onSelect: function (ext) { + return function (crop) { + ext.onCropChange({ + x: crop.x, + y: crop.y, + width: crop.w, + height: crop.h + }) + } + }(this.window) + }; + this.$image.Jcrop(conf, function (ths) { + return function () { + ths.cropper = this; + this.setOptions({ + outerImage: ths.window.getOuterImageUrl(), + bgOpacity: 0.5 + }) + } + }(this)) + }, + + get_image: function () { + return this.$image; + } + +}); +Ext.reg('imageplus-jquery-imagecrop', ImagePlus.jquery.ImageCrop); diff --git a/source/js/mgr/imageplus.js b/source/js/mgr/imageplus.js new file mode 100644 index 00000000..1f570ba0 --- /dev/null +++ b/source/js/mgr/imageplus.js @@ -0,0 +1,67 @@ +/** + * Image+ Custom Manager Page Script + * + * @package imageplus + * @subpackage script + */ + +var imagePlus = function (config) { + config = config || {}; + imagePlus.superclass.constructor.call(this, config); +}; + +Ext.extend(imagePlus, Ext.Component, { + page: {}, window: {}, grid: {}, tree: {}, panel: {}, combo: {}, config: {}, jquery: {}, form: {}, + + generateThumbUrl: function (params) { + return this.generatePhpThumbUrl(params); + }, + + generatePhpThumbUrl: function (params) { + var url = MODx.config.connectors_url + 'system/phpthumb.php?'; + var defaults = { + wctx: 'mgr', + w: 150, + source: 1 + }; + for (var i in params) { + defaults[i] = params[i] + } + var qs = ''; + for (i in defaults) { + qs += encodeURIComponent(i) + '=' + encodeURIComponent(defaults[i]) + '&'; + } + if (qs.length > 0) { + qs = qs.substring(0, qs.length - 1); + url = url + "?" + qs; + } + return url; + + }, + + warnAboutUnmetDependencies: function () { + var warningWindow = MODx.load({ + xtype: 'modx-window', + title: 'Image+ Warning – Unmet Dependencies', + modal: true, + padding: 25, + allowDrop: false, + resizable: true, + collapsible: true, + maximizable: true, + buttons: [{ + text: _('ok'), + handler: function (L) { + L.ownerCt.ownerCt.close(); + } + }], + html: '

You don\'t have any crop engines!

' + + '

Before you can use Image+, you need at least one Crop Engine installed to handle image manipulation.

' + + '

A quick fix is to install either pThumb, phpThumbOf, phpThumbsUp or phpThumbOn from the MODX Package Repository

' + }); + warningWindow.show(); + } +}); +Ext.reg('imageplus', imagePlus); + +ImagePlus = new imagePlus(); diff --git a/source/js/mgr/imageplus.migx_renderer.js b/source/js/mgr/imageplus.migx_renderer.js new file mode 100644 index 00000000..f8cfbd64 --- /dev/null +++ b/source/js/mgr/imageplus.migx_renderer.js @@ -0,0 +1,30 @@ +/** + * Image+ MIGX Renderer + * + * @package imageplus + * @subpackage script + * @return {string} + */ + +ImagePlus.MIGX_Renderer = function (json) { + if (typeof (json) === 'undefined' || json === null || !json.length) { + return ''; + } + var data, url, cls; + try { + data = JSON.parse(json); + url = ImagePlus.generateThumbUrl({ + src: data.sourceImg.src, + source: data.sourceImg.source, + sw: data.crop.width, + sh: data.crop.height, + sx: data.crop.x, + sy: data.crop.y + }); + cls = 'imageplus'; + } catch (e) { + url = MODx.config.base_url + json; + cls = 'plain'; + } + return ''; +}; diff --git a/source/js/mgr/imageplus.panel.input.js b/source/js/mgr/imageplus.panel.input.js new file mode 100644 index 00000000..50e055b4 --- /dev/null +++ b/source/js/mgr/imageplus.panel.input.js @@ -0,0 +1,711 @@ +/** + * Image+ Input Panel + * + * @package imageplus + * @subpackage script + */ + +ImagePlus.panel.input = function (config) { + config = config || {}; + + this.options = config.options; + this.image = {}; + + this.getValue(config.hiddenField); + this.createImageBrowser(); + this.createImagePreview(); + this.createTextFields(); + + // Warn if it has no dependencies + if (ImagePlus.config.hasUnmetDependencies) { + ImagePlus.warnAboutUnmetDependencies() + } + + Ext.apply(config, { + border: false, + config: config, + baseCls: 'modx-panel', + hiddenField: config.hiddenField, + width: '400px', + items: [{ + xtype: 'compositefield', + anchor: '100%', + hideLabel: true, + listeners: { + afterrender: { + fn: this.onAfterRender, + scope: this + } + }, + items: [ + this.imageBrowser + ] + }, { + cls: 'modx-tv-image-preview imageplus-image-preview', + border: false, + items: [ + this.imagePreview, + this.altTextField, + this.captionField, + this.creditsField + ] + }] + }); + ImagePlus.panel.input.superclass.constructor.call(this, config); + + + this.listenForResetEvent(); +}; +Ext.extend(ImagePlus.panel.input, MODx.Panel, { + // Listen for TV 'Reset' button + listenForResetEvent: function () { + var resourcePanel = Ext.getCmp('modx-panel-resource'); + resourcePanel.on('tv-reset', function (changed) { + if (parseInt(changed.id) === this.options.tvId) { + this.onReset(); + } + }, this); + }, + // Create the image browser combo + createImageBrowser: function () { + // Generate opento path + var openToPath = this.image.sourceImg.src.split('/'); + openToPath.pop(); + openToPath = openToPath.join('/'); + + // Create browser component + var _this = this; + this.imageBrowser = new ImagePlus.combo.Browser({ + value: this.image.sourceImg.src, + source: this.options.mediaSource, + hideSourceCombo: true, + openTo: openToPath, + listeners: { + select: { + fn: this.onImageSelected, + scope: this + }, + change: { + fn: function (cb, nv) { + this.onImageChange(nv); + }, + scope: this + } + }, + onTrigger1Click: function () { + _this.clearImage(); + }, + + onTrigger2Click: function () { + _this.editImage(); + } + }) + }, + // Create image preview img + createImagePreview: function () { + this.imagePreview = new Ext.BoxComponent({ + autoEl: { + tag: 'img', + src: '' + } + }); + }, + // Create fields for alt-text, caption and credits input + createTextFields: function () { + var _this = this; + this.altTextField = MODx.load({ + xtype: 'panel', + items: { + xtype: this.options.altTagOn ? 'textfield' : 'hidden', + submitValue: false, + value: this.image.altTag || '', + listeners: { + change: { + fn: this.onAltTagChange, + scope: this + }, + afterrender: function () { + var el = this.getEl(); + if (el && _this.options.altTagOn) { + el.set({'placeholder': _('imageplus.alt_text')}); + el.insertSibling({ + tag: 'span', + cls: 'icon icon-code', + style: 'position: absolute; left: 8px; top: 14px; opacity: 0.6', + title: _('imageplus.alt_text') + }, 'after', true); + } + } + }, + width: 400, + style: { + marginTop: '5px', + paddingLeft: '25px' + } + } + }); + this.captionField = MODx.load({ + xtype: 'panel', + items: { + xtype: this.options.captionOn ? 'textfield' : 'hidden', + submitValue: false, + value: this.image.caption || '', + listeners: { + change: { + fn: this.onCaptionChange, + scope: this + }, + afterrender: function () { + var el = this.getEl(); + if (el && _this.options.captionOn) { + el.set({'placeholder': _('imageplus.caption')}); + el.insertSibling({ + tag: 'span', + cls: 'icon icon-header', + style: 'position: absolute; left: 8px; top: 14px; opacity: 0.6', + title: _('imageplus.caption') + }, 'after', true); + } + } + }, + width: 400, + style: { + marginTop: '5px', + paddingLeft: '25px' + } + } + }); + this.creditsField = MODx.load({ + xtype: 'panel', + items: { + xtype: this.options.creditsOn ? 'textfield' : 'hidden', + submitValue: false, + value: this.image.credits || '', + listeners: { + change: { + fn: this.onCreditsChange, + scope: this + }, + afterrender: function () { + var el = this.getEl(); + if (el && _this.options.creditsOn) { + el.set({'placeholder': _('imageplus.credits')}); + el.insertSibling({ + tag: 'span', + cls: 'icon icon-copyright', + style: 'position: absolute; left: 8px; top: 14px; opacity: 0.6', + title: _('imageplus.credits') + }, 'after', true); + } + } + }, + width: 400, + style: { + marginTop: '5px', + paddingLeft: '25px' + } + } + }) + }, + // Fires when the TV field is reset + generateThumbUrl: function (params) { + var url = MODx.config.connectors_url + 'system/phpthumb.php'; + var defaults = { + wctx: 'mgr', + w: this.options.thumbnailWidth, + source: this.image.sourceImg.source + }; + for (var i in params) { + defaults[i] = params[i]; + } + var qs = ''; + for (i in defaults) { + qs += encodeURIComponent(i) + '=' + encodeURIComponent(defaults[i]) + '&'; + } + if (qs.length > 0) { + qs = qs.substring(0, qs.length - 1); + url = url + "?" + qs; + } + return url; + }, + // Fires when the TV field is reset + onReset: function () { + this.getValue(this.config.hiddenField); + this.imageBrowser.setValue(this.image.sourceImg.src || ''); + this.updatePreviewImage.defer(10, this); + }, + // Runs after initial render of panel + onAfterRender: function () { + this.updateDisplay(); + }, + // Fired when user has selected an image from the browser + onImageSelected: function (img) { + var changed = (!this.image.sourceImg || (this.image.sourceImg && this.image.sourceImg.src !== img.relativeUrl)); + this.setOldSource(); + this.image.sourceImg = { + src: img.relativeUrl, + source: this.options.mediaSource + }; + this.getImageSize(changed, function (ths) { + if (!ths.updateDisplay()) { + return; + } + if (changed || ths.image.crop.width === 0 || ths.image.crop.height === 0) { + ths.editImage(); + } + }, this); + }, + // Fired when user has changed the image input + onImageChange: function (src) { + if (src !== '') { + var changed = (!this.image.sourceImg || (this.image.sourceImg && this.image.sourceImg.src !== src)); + this.setOldSource(); + this.image.sourceImg = { + src: src, + source: this.options.mediaSource + }; + this.getImageSize(changed, function (ths) { + if (!ths.updateDisplay()) { + return; + } + if (changed || ths.image.crop.width === 0 || ths.image.crop.height === 0) { + ths.editImage(); + } + }, this); + } else { + this.clearImage(); + } + }, + // Fired when alt-tag field is changed + onAltTagChange: function (field, value) { + this.image.altTag = value; + this.updateValue(); + }, + // Fired when caption-tag field is changed + onCaptionChange: function (field, value) { + this.image.caption = value; + this.updateValue(); + }, + // Fired when credits-tag field is changed + onCreditsChange: function (field, value) { + this.image.credits = value; + this.updateValue(); + }, + // Set old source + setOldSource: function () { + if (!this.oldSourceImg) { + this.oldSourceImg = {}; + for (var i in this.image.sourceImg) { + this.oldSourceImg[i] = this.image.sourceImg[i]; + } + } + if (this.image.crop) { + this.oldSourceImg.crop = {}; + this.oldSourceImg.crop.x = this.image.crop.x; + this.oldSourceImg.crop.y = this.image.crop.y; + this.oldSourceImg.crop.width = this.image.crop.width; + this.oldSourceImg.crop.height = this.image.crop.height; + } + }, + // Get image size + getImageSize: function (changed, callback, scope) { + var baseUrl = ImagePlus.config.sources[this.image.sourceImg.source].url; + var img = new Image(); + img.onload = (function (ths) { + return function () { + ths.image.sourceImg.width = this.width; + ths.image.sourceImg.height = this.height; + ths.oldSource = ths.image.sourceImg.src; + + // Reset crop rectangle everytime an image is changed + if (changed) { + ths.image.crop.x = 0; + ths.image.crop.y = 0; + if (ths.options.targetRatio) { + if (ths.image.sourceImg.width / ths.image.sourceImg.height >= ths.options.targetRatio) { + ths.image.crop.width = ths.image.sourceImg.width; + ths.image.crop.height = Math.ceil(ths.image.sourceImg.width / ths.options.targetRatio); + } else { + ths.image.crop.width = Math.ceil(ths.image.sourceImg.height / ths.options.targetRatio); + ths.image.crop.height = ths.image.sourceImg.height; + } + } else { + ths.image.crop.width = ths.image.sourceImg.width; + ths.image.crop.height = ths.image.sourceImg.height; + } + } + if (typeof callback === 'function') { + callback(scope); + } + } + })(this); + img.onerror = (function (ths) { + return function () { + if (!ths.oldSourceImg) { + ths.imageBrowser.reset(); + } else { + for (var i in this.oldSourceImg) { + ths.image.sourceImg[i] = this.oldSourceImg[i]; + } + if (ths.oldSourceImg.crop) { + ths.image.crop.x = ths.oldSourceImg.crop.x; + ths.image.crop.y = ths.oldSourceImg.crop.y; + ths.image.crop.width = ths.oldSourceImg.crop.width; + ths.image.crop.height = ths.oldSourceImg.crop.height; + } + ths.imageBrowser.setValue(ths.oldSource || ''); + } + MODx.msg.alert(_('imageplus.error.image_not_found.title'), _('imageplus.error.image_not_found.msg')); + return false; + } + })(this); + img.src = baseUrl + this.image.sourceImg.src; + }, + // Update the component display on state change + updateDisplay: function () { + // Make sure image is large enough to use + if (!this.checkImageIsLargeEnough()) { + if (!this.oldSourceImg) { + this.imageBrowser.reset(); + } else { + for (var i in this.oldSourceImg) { + this.image.sourceImg[i] = this.oldSourceImg[i]; + } + if (this.oldSourceImg.crop) { + this.image.crop.x = this.oldSourceImg.crop.x; + this.image.crop.y = this.oldSourceImg.crop.y; + this.image.crop.width = this.oldSourceImg.crop.width; + this.image.crop.height = this.oldSourceImg.crop.height; + } + this.imageBrowser.setValue(this.oldSource || ''); + } + MODx.msg.alert(_('imageplus.error.image_too_small.title'), _('imageplus.error.image_too_small.msg')); + return false; + } + this.oldSource = this.image.sourceImg.src; + + this.updatePreviewImage.defer(10, this); + this.updateValue(); + return true; + }, + // Get hidden field value + getValue: function (field) { + this.image = Ext.util.JSON.decode(Ext.get(field).getValue()); + if (!this.image) { + this.image = { + sourceImg: { + height: 0, + width: 0, + source: this.options.mediaSource, + src: Ext.get(field).getValue() + }, + crop: { + x: 0, + y: 0, + width: 0, + height: 0 + } + } + } + }, + // Update hidden field value + updateValue: function () { + var tvValue = { + sourceImg: this.image.sourceImg, + crop: this.image.crop, + targetWidth: this.options.targetWidth, + targetHeight: this.options.targetHeight, + altTag: this.image.altTag, + caption: this.image.caption, + credits: this.image.credits + }; + var newValue = JSON.stringify(tvValue, null, ' '); + + var hiddenField = document.getElementById(this.hiddenField); + var currentValue = hiddenField.value || hiddenField.innerHTML || ''; + + if (currentValue !== '' && JSON.parse(currentValue)) { + currentValue = JSON.stringify(JSON.parse(currentValue), null, ' '); + } else { + currentValue = ''; + } + + // Has value changed and is source image not empty? + if (hiddenField && currentValue !== newValue && this.image.sourceImg.src !== '') { + hiddenField.value = newValue; + + // Mark resource as dirty + MODx.fireResourceFormChange() + } + }, + // Checks whether the image is larger than specified crop dimensions + checkImageIsLargeEnough: function () { + if (this.image === undefined || !this.image.sourceImg) { + return true; + } + if (this.options.targetWidth > 0 && this.image.sourceImg.width > 0) { + if (this.options.targetWidth > this.image.sourceImg.width) { + return false; + } + } + if (this.options.targetHeight > 0 && this.image.sourceImg.height > 0) { + if (this.options.targetHeight > this.image.sourceImg.height) { + return false; + } + } + return true; + }, + // Launch the editor window + editImage: function () { + // Create the editor window (if it doesn't exist) + if (!this.editorWindow && this.image.sourceImg && this.image.sourceImg.src) { + + // Calculate safe image ratio + var imgW = this.image.sourceImg.width; + var imgH = this.image.sourceImg.height; + var maxH = window.innerHeight * 0.7; + var maxW = window.innerWidth * 0.9; + var ratio; + + // Is image taller than screen? + if (imgH > maxH) { + ratio = maxH / imgH; + if ((imgW * ratio) > maxW) { + ratio = maxW / imgW + } + } else { + if (imgW > maxW) { + ratio = maxW / imgW + } else { + ratio = 1; + } + } + + this.editorWindow = MODx.load({ + xtype: 'imageplus-window-editor', + title: _('imageplus.editor_title'), + image: this.image, + options: this.options, + inputPanel: this, + displayRatio: ratio, + width: (((imgW * ratio) + 20) <= 200) ? 200 : (Math.ceil(imgW * ratio) + 20), + height: (Math.ceil(imgH * ratio) + 20 + 84 + (ImagePlus.config.modxversion === '2' ? 2 : 8)), + crop: this.image.crop, + padding: 10 + }); + + // Show the window + this.editorWindow.show(); + } + }, + clearImage: function () { + this.image.sourceImg = null; + this.oldSourceImg = null; + this.oldSource = ''; + if (this.imagePreview.el) { + jQuery(this.imagePreview.el.dom).attr('src', 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=='); + } + document.getElementById(this.hiddenField).innerHTML = ''; + document.getElementById(this.hiddenField).value = ''; + this.imageBrowser.setValue(''); + MODx.fireResourceFormChange(); + }, + // Receive new cropping dimensions from editor + updateFromEditor: function (crop) { + this.image.crop.x = crop.x; + this.image.crop.y = crop.y; + this.image.crop.width = crop.width; + this.image.crop.height = crop.height; + + if (!this.oldSourceImg) { + this.oldSourceImg = {}; + for (var i in this.image.sourceImg) { + this.oldSourceImg[i] = this.image.sourceImg[i]; + } + } + this.oldSourceImg.crop = {}; + this.oldSourceImg.crop.x = crop.x; + this.oldSourceImg.crop.y = crop.y; + this.oldSourceImg.crop.width = crop.width; + this.oldSourceImg.crop.height = crop.height; + + this.editorWindow = null; + this.updateDisplay(); + }, + updatePreviewImage: function () { + if (!this.image.sourceImg || this.image.crop.width === 0) { + this.imagePreview.hide(); + return; + } + var url = this.generateThumbUrl({ + src: this.image.sourceImg.src, + sw: this.image.crop.width, + sh: this.image.crop.height, + sx: this.image.crop.x, + sy: this.image.crop.y + }); + if (this.imagePreview.el) { + this.imagePreview.el.dom.src = url; + this.imagePreview.show(); + } + } + +}); +Ext.reg('imageplus-panel-input', ImagePlus.panel.input); + +ImagePlus.form.TripleTriggerField = Ext.extend(Ext.form.TriggerField, { + /** + * @cfg {String} trigger1Class + * An additional CSS class used to style the trigger button. The trigger will always get the + * class 'x-form-trigger' by default and triggerClass will be appended if specified. + */ + + /** + * @cfg {String} trigger2Class + * An additional CSS class used to style the trigger button. The trigger will always get the + * class 'x-form-trigger' by default and triggerClass will be appended if specified. + */ + + /** + * @cfg {String} trigger3Class + * An additional CSS class used to style the trigger button. The trigger will always get the + * class 'x-form-trigger' by default and triggerClass will be appended if specified. + */ + initComponent: function () { + ImagePlus.form.TripleTriggerField.superclass.initComponent.call(this); + + this.triggerConfig = { + tag: 'span', cls: 'x-form-triple-triggers', cn: [ + {tag: 'div', cls: 'x-form-trigger ' + this.trigger1Class}, + {tag: 'div', cls: 'x-form-trigger ' + this.trigger2Class}, + {tag: 'div', cls: 'x-form-trigger ' + this.trigger3Class} + ] + }; + }, + getTrigger: function (index) { + return this.triggers[index]; + }, + initTrigger: function () { + var ts = this.trigger.select('.x-form-trigger', true); + var triggerField = this; + ts.each(function (t, all, index) { + var triggerIndex = 'Trigger' + (index + 1); + t.hide = function () { + var w = triggerField.wrap.getWidth(); + this.dom.style.display = 'none'; + triggerField.el.setWidth(w - triggerField.trigger.getWidth()); + this['hidden' + triggerIndex] = true; + }; + t.show = function () { + var w = triggerField.wrap.getWidth(); + this.dom.style.display = ''; + triggerField.el.setWidth(w - triggerField.trigger.getWidth()); + this['hidden' + triggerIndex] = false; + }; + + if (this['hide' + triggerIndex]) { + t.dom.style.display = 'none'; + this['hidden' + triggerIndex] = true; + } + this.mon(t, 'click', this['on' + triggerIndex + 'Click'], this, {preventDefault: true}); + t.addClassOnOver('x-form-trigger-over'); + t.addClassOnClick('x-form-trigger-click'); + }, this); + this.triggers = ts.elements; + }, + getTriggerWidth: function () { + var tw = 0; + Ext.each(this.triggers, function (t, index) { + var triggerIndex = 'Trigger' + (index + 1), + w = t.getWidth(); + if (w === 0 && !this['hidden' + triggerIndex]) { + tw += this.defaultTriggerWidth; + } else { + tw += w; + } + }, this); + return tw; + }, + // private + onDestroy: function () { + Ext.destroy(this.triggers); + ImagePlus.form.TripleTriggerField.superclass.onDestroy.call(this); + }, + /** + * The function that should handle the trigger's click event. This method does nothing by default + * until overridden by an implementing function. See {@link Ext.form.TriggerField#onTriggerClick} + * for additional information. + * @method + * @param {EventObject} e + */ + onTrigger1Click: Ext.emptyFn, + /** + * The function that should handle the trigger's click event. This method does nothing by default + * until overridden by an implementing function. See {@link Ext.form.TriggerField#onTriggerClick} + * for additional information. + * @method + * @param {EventObject} e + */ + onTrigger2Click: Ext.emptyFn, + /** + * The function that should handle the trigger's click event. This method does nothing by default + * until overridden by an implementing function. See {@link Ext.form.TriggerField#onTriggerClick} + * for additional information. + * @method + * @param {EventObject} e + */ + onTrigger3Click: Ext.emptyFn +}); + +ImagePlus.combo.Browser = function (config) { + config = config || {}; + Ext.applyIf(config, { + submitValue: false, + width: 400, + triggerAction: 'all', + trigger1Class: 'x-form-clear-trigger', + trigger2Class: 'x-form-crop-trigger', + trigger3Class: 'x-form-image-trigger', + source: config.source || MODx.config.default_media_source + }); + ImagePlus.combo.Browser.superclass.constructor.call(this, config); + this.config = config; +}; +Ext.extend(ImagePlus.combo.Browser, ImagePlus.form.TripleTriggerField, { + browser: null, + + onTrigger3Click: function (btn) { + if (this.disabled) { + return false; + } + this.browser = MODx.load({ + xtype: 'modx-browser', + closeAction: 'close', + id: Ext.id(), + multiple: true, + source: this.config.source || 1, + hideFiles: this.config.hideFiles || false, + rootVisible: this.config.rootVisible || false, + allowedFileTypes: this.config.allowedFileTypes || '', + wctx: this.config.wctx || 'web', + openTo: this.config.openTo || '', + rootId: this.config.rootId || '/', + hideSourceCombo: this.config.hideSourceCombo || false, + listeners: { + select: { + fn: function (data) { + this.setValue(data.relativeUrl); + this.fireEvent('select', data); + }, scope: this + } + } + }); + this.browser.show(btn); + return true; + }, + + onDestroy: function () { + ImagePlus.combo.Browser.superclass.onDestroy.call(this); + } +}); +Ext.reg('imageplus-combo-browser', ImagePlus.combo.Browser); diff --git a/source/js/mgr/imageplus.window.editor.js b/source/js/mgr/imageplus.window.editor.js new file mode 100644 index 00000000..4d085009 --- /dev/null +++ b/source/js/mgr/imageplus.window.editor.js @@ -0,0 +1,170 @@ +/** + * Image+ Image Editor + * + * @package imageplus + * @subpackage script + */ + + +ImagePlus.window.Editor = function (config) { + config = config || {}; + + this.image = config.image; + this.options = config.options; + this.inputPanel = config.inputPanel; + this.displayRatio = config.displayRatio; + + var cropSettings = { + x: this.image.crop.x, + y: this.image.crop.y, + width: this.image.crop.width, + height: this.image.crop.height + }; + + Ext.apply(config, { + bodyStyle: {'padding': '0'}, + border: false, + crop: cropSettings, + resizable: false, + closeAction: 'close', + listeners: { + close: { + fn: this.onClose, + scope: this + }, + success: { + fn: function () { + console.log('success') + } + } + }, + items: [{ + border: false, + xtype: 'imageplus-jquery-imagecrop', + image: this.image, + initialWidth: this.getDisplayWidth(), + initialHeight: this.getDisplayHeight(), + imageUrl: this.getImageUrl(), + window: this, + listeners: { + change: { + fn: this.onCropChange, + scope: this + } + }, + cropData: this.image.crop + }], + buttonAlign: 'right', + buttons: [{ + text: _('cancel'), + handler: this.closeFromEditor, + scope: this + }, { + text: _('update'), + handler: this.updateFromEditor, + scope: this + }] + }); + ImagePlus.window.Editor.superclass.constructor.call(this, config); +}; +Ext.extend(ImagePlus.window.Editor, Ext.Window, { + // Get the required width of the cropper + getDisplayWidth: function () { + return Math.round(this.image.sourceImg.width * this.displayRatio); + }, + getDisplayHeight: function () { + return Math.round(this.image.sourceImg.height * this.displayRatio); + }, + // Get an url to image resized for window + getImageUrl: function () { + return this.inputPanel.generateThumbUrl({ + src: this.image.sourceImg.src, + w: this.getDisplayWidth(), + h: this.getDisplayHeight() + }); + }, + getOuterImageUrl: function () { + return this.inputPanel.generateThumbUrl({ + src: this.image.sourceImg.src, + w: this.getDisplayWidth(), + h: this.getDisplayHeight(), + 'fltr[]': 'blur|25' + }); + }, + getMinCropSize: function () { + return [ + Math.round(this.options.targetWidth * this.displayRatio), + Math.round(this.options.targetHeight * this.displayRatio) + ] + }, + getMinCropWidth: function () { + return Math.round(this.options.targetWidth * this.displayRatio); + }, + getMinCropHeight: function () { + return Math.round(this.options.targetHeight * this.displayRatio); + }, + getInitialCropX: function () { + return Math.round(this.image.crop.x * this.displayRatio); + }, + getInitialCropY: function () { + return Math.round(this.image.crop.y * this.displayRatio); + }, + getInitialCropWidth: function () { + if (this.image.crop.width === 0) { + return Math.round(this.options.targetWidth * this.displayRatio); + } else { + return Math.round(this.image.crop.width * this.displayRatio); + } + }, + getInitialCropHeight: function () { + if (this.image.crop.height === 0) { + return Math.round(this.options.targetHeight * this.displayRatio) + } else { + return Math.round(this.image.crop.height * this.displayRatio); + } + }, + getAspectRatio: function () { + if (this.options.targetRatio) { + return this.options.targetRatio; + } else { + if (this.options.targetWidth > 0 && this.options.targetHeight > 0) { + return this.options.targetWidth / this.options.targetHeight; + } else { + return false + } + } + }, + getCropCoords: function () { + var W = this.getInitialCropWidth(); + var H = this.getInitialCropHeight(); + if (W === 0 || H === 0) { + return false; + } + var X = this.getInitialCropX(); + var Y = this.getInitialCropY(); + return [X, Y, (X + W), (Y + H)]; + }, + // Handle window + onClose: function () { + this.inputPanel.editorWindow = false; + }, + // Handle crop area change + onCropChange: function (data) { + this.crop.height = Math.round(data.height / this.displayRatio); + this.crop.width = Math.round(data.width / this.displayRatio); + this.crop.x = Math.round(data.x / this.displayRatio); + this.crop.y = Math.round(data.y / this.displayRatio); + }, + updateFromEditor: function () { + this.inputPanel.updateFromEditor(this.crop); + this.close(); + }, + closeFromEditor: function () { + this.crop.width = this.image.crop.width; + this.crop.height = this.image.crop.height; + this.crop.x = this.image.crop.x; + this.crop.y = this.image.crop.y; + this.close(); + } +}); +Ext.reg('imageplus-window-editor', ImagePlus.window.Editor); diff --git a/assets/components/tvimageplus/mgr/js/tools/JSON2.js b/source/js/mgr/tools/JSON2.js similarity index 100% rename from assets/components/tvimageplus/mgr/js/tools/JSON2.js rename to source/js/mgr/tools/JSON2.js diff --git a/source/sass/mgr/imageplus.scss b/source/sass/mgr/imageplus.scss new file mode 100644 index 00000000..eb148d87 --- /dev/null +++ b/source/sass/mgr/imageplus.scss @@ -0,0 +1,163 @@ +@use "sass:color"; + +$treehillstudio-color: #cbd842; + +#modx-input-props, #modx-widget-props { + &.imageplus-props { + padding-top: 0; + } +} + +.modx-grid { + .x-grid-cell-icons { + .x-grid3-cell-inner { + padding-right: 5px; + } + } +} + +.modx-grid-small { + .x-grid3-cell-inner { + padding: 8px 5px 8px 5px; + } + + .x-grid3-hd-inner { + padding: 8px 18px 8px 5px; + } + + .x-grid3-td-checker { + padding: 6px 0 0; + + &.x-grid3-hd { + padding-top: 0; + } + } + + .x-panel-tbar { + .x-toolbar { + padding-top: 2px; + + &.x-small-editor { + .x-form-text { + padding: 3px 8px 2px 8px; + margin-top: 0; + } + } + + .x-btn { + padding: 4px 10px 4px 10px; + } + } + } + + .x-panel-bbar { + .x-toolbar { + .x-btn { + padding: 2px 2px; + } + + .x-form-text { + padding: 2px 3px; + } + } + } + + .x-tbar-loading { + &:before { + line-height: 16px; + } + } + + .x-tbar-page { + &-last, &-next, &-prev, &-first { + &:before { + line-height: 16px; + } + } + } + + .x-btn-icon { + &.arrow_up, &.arrow_down, &.refresh { + button { + &:before { + line-height: 16px; + } + } + } + } + + .x-small-editor { + .x-form-text, .x-form-field-wrap { + margin-top: 2px; + } + } +} + +.x-form-field-wrap { + .x-form-triple-triggers { + border: 0; + border-radius: 0 3px 3px 0; + box-shadow: none; + height: 100% !important; + padding: 0; + position: absolute; + right: 0; + top: 0; + width: 90px; + .x-form-trigger { + display: inline-block; + position: relative; + top: auto; + vertical-align: top; + &.x-form-clear-trigger { + &:before { + content: "\f00d"; + } + } + &.x-form-crop-trigger { + &:before { + content: "\f125"; + } + } + } + } +} + +.imageplus-hidden-textarea { + display: none; +} + +.imageplus-sectiontitle { + .x-form-item-label { + padding-top: 0; + } + .desc-under { + padding-top: 0; + } +} + +.treehillstudio_about { + cursor: pointer; + height: 40px; + opacity: .25; + transition: opacity 0.5s; + margin-top: 20px; + &:hover { + opacity: 1; + } + .x-panel-body { + text-align: right; + } +} + +.treehillstudio_window { + a { + color: color.adjust($treehillstudio-color, $lightness: -10%); + text-decoration: none; + &:hover { + color: color.adjust($treehillstudio-color, $lightness: -25%); + } + } +} + +@import "jquery.jcrop"; diff --git a/source/sass/mgr/jquery.jcrop.scss b/source/sass/mgr/jquery.jcrop.scss new file mode 100755 index 00000000..a22093c5 --- /dev/null +++ b/source/sass/mgr/jquery.jcrop.scss @@ -0,0 +1,6 @@ +@import "../../vendor/jcrop/css/jquery.Jcrop"; + +.jcrop-hline, .jcrop-vline { + background: #ffffff url('../../img/mgr/jcrop.gif'); +} + diff --git a/source/vendor/jcrop/MIT-LICENSE.txt b/source/vendor/jcrop/MIT-LICENSE.txt new file mode 100644 index 00000000..4f3a0fe4 --- /dev/null +++ b/source/vendor/jcrop/MIT-LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2011 Tapmodo Interactive LLC, + http://github.com/tapmodo/Jcrop + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/source/vendor/jcrop/README.md b/source/vendor/jcrop/README.md new file mode 100644 index 00000000..9190b47d --- /dev/null +++ b/source/vendor/jcrop/README.md @@ -0,0 +1,66 @@ +Jcrop Image Cropping Plugin +=========================== + +Jcrop is the quick and easy way to add image cropping functionality to +your web application. It combines the ease-of-use of a typical jQuery +plugin with a powerful cross-platform DHTML cropping engine that is +faithful to familiar desktop graphics applications. + +Cross-platform Compatibility +---------------------------- + +* Firefox 2+ +* Safari 3+ +* Opera 9.5+ +* Google Chrome 0.2+ +* Internet Explorer 6+ + +Feature Overview +---------------- + +* Attaches unobtrusively to any image +* Supports aspect ratio locking +* Supports minSize/maxSize setting +* Callbacks for selection done, or while moving +* Keyboard support for nudging selection +* API features to create interactivity, including animation +* Support for CSS styling +* Experimental touch-screen support (iOS, Android, etc) + +Contributors +============ + +**Special thanks to the following contributors:** + +* [Bruno Agutoli](mailto:brunotla1@gmail.com) +* dhorrigan +* Phil-B +* jaymecd +* all others who have committed their time and effort to help improve Jcrop + +MIT License +=========== + +**Jcrop is free software under MIT License.** + +#### Copyright (c) 2008-2018 Tapmodo Interactive LLC,
http://github.com/tapmodo/Jcrop + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/source/vendor/jcrop/bower.json b/source/vendor/jcrop/bower.json new file mode 100644 index 00000000..2e25d8f2 --- /dev/null +++ b/source/vendor/jcrop/bower.json @@ -0,0 +1,20 @@ +{ + "name": "Jcrop", + "version": "0.9.15", + "homepage": "https://github.com/tapmodo/Jcrop", + "authors": [ "Tapmodo " ], + "description": "Image cropping plugin for jQuery", + "main": [ + "js/jquery.Jcrop.js", + "css/jquery.Jcrop.css" + ], + "keywords": [ "img", "image", "form", "crop", "cropping", "cropper" ], + "license": "MIT", + "ignore": [ + "**/.*", + "build", + "demos", + "node_modules", + "bower_components" + ] +} diff --git a/assets/components/tvimageplus/mgr/css/jquery/Jcrop.gif b/source/vendor/jcrop/css/Jcrop.gif similarity index 100% rename from assets/components/tvimageplus/mgr/css/jquery/Jcrop.gif rename to source/vendor/jcrop/css/Jcrop.gif diff --git a/source/vendor/jcrop/css/jquery.Jcrop.css b/source/vendor/jcrop/css/jquery.Jcrop.css new file mode 100644 index 00000000..ab983cb7 --- /dev/null +++ b/source/vendor/jcrop/css/jquery.Jcrop.css @@ -0,0 +1,167 @@ +/* jquery.Jcrop.css v0.9.15 - MIT License */ +/* + The outer-most container in a typical Jcrop instance + If you are having difficulty with formatting related to styles + on a parent element, place any fixes here or in a like selector + + You can also style this element if you want to add a border, etc + A better method for styling can be seen below with .jcrop-light + (Add a class to the holder and style elements for that extended class) +*/ +.jcrop-holder { + direction: ltr; + text-align: left; + /* IE10 touch compatibility */ + -ms-touch-action: none; +} +/* Selection Border */ +.jcrop-vline, +.jcrop-hline { + background: #ffffff url("Jcrop.gif"); + font-size: 0; + position: absolute; +} +.jcrop-vline { + height: 100%; + width: 1px !important; +} +.jcrop-vline.right { + right: 0; +} +.jcrop-hline { + height: 1px !important; + width: 100%; +} +.jcrop-hline.bottom { + bottom: 0; +} +/* Invisible click targets */ +.jcrop-tracker { + height: 100%; + width: 100%; + /* "turn off" link highlight */ + -webkit-tap-highlight-color: transparent; + /* disable callout, image save panel */ + -webkit-touch-callout: none; + /* disable cut copy paste */ + -webkit-user-select: none; +} +/* Selection Handles */ +.jcrop-handle { + background-color: #333333; + border: 1px #eeeeee solid; + width: 7px; + height: 7px; + font-size: 1px; +} +.jcrop-handle.ord-n { + left: 50%; + margin-left: -4px; + margin-top: -4px; + top: 0; +} +.jcrop-handle.ord-s { + bottom: 0; + left: 50%; + margin-bottom: -4px; + margin-left: -4px; +} +.jcrop-handle.ord-e { + margin-right: -4px; + margin-top: -4px; + right: 0; + top: 50%; +} +.jcrop-handle.ord-w { + left: 0; + margin-left: -4px; + margin-top: -4px; + top: 50%; +} +.jcrop-handle.ord-nw { + left: 0; + margin-left: -4px; + margin-top: -4px; + top: 0; +} +.jcrop-handle.ord-ne { + margin-right: -4px; + margin-top: -4px; + right: 0; + top: 0; +} +.jcrop-handle.ord-se { + bottom: 0; + margin-bottom: -4px; + margin-right: -4px; + right: 0; +} +.jcrop-handle.ord-sw { + bottom: 0; + left: 0; + margin-bottom: -4px; + margin-left: -4px; +} +/* Dragbars */ +.jcrop-dragbar.ord-n, +.jcrop-dragbar.ord-s { + height: 7px; + width: 100%; +} +.jcrop-dragbar.ord-e, +.jcrop-dragbar.ord-w { + height: 100%; + width: 7px; +} +.jcrop-dragbar.ord-n { + margin-top: -4px; +} +.jcrop-dragbar.ord-s { + bottom: 0; + margin-bottom: -4px; +} +.jcrop-dragbar.ord-e { + margin-right: -4px; + right: 0; +} +.jcrop-dragbar.ord-w { + margin-left: -4px; +} +/* The "jcrop-light" class/extension */ +.jcrop-light .jcrop-vline, +.jcrop-light .jcrop-hline { + background: #ffffff; + filter: alpha(opacity=70) !important; + opacity: .70!important; +} +.jcrop-light .jcrop-handle { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + background-color: #000000; + border-color: #ffffff; + border-radius: 3px; +} +/* The "jcrop-dark" class/extension */ +.jcrop-dark .jcrop-vline, +.jcrop-dark .jcrop-hline { + background: #000000; + filter: alpha(opacity=70) !important; + opacity: 0.7 !important; +} +.jcrop-dark .jcrop-handle { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + background-color: #ffffff; + border-color: #000000; + border-radius: 3px; +} +/* Simple macro to turn off the antlines */ +.solid-line .jcrop-vline, +.solid-line .jcrop-hline { + background: #ffffff; +} +/* Fix for twitter bootstrap et al. */ +.jcrop-holder img, +img.jcrop-preview { + max-width: none; +} diff --git a/source/vendor/jcrop/css/jquery.Jcrop.min.css b/source/vendor/jcrop/css/jquery.Jcrop.min.css new file mode 100644 index 00000000..65680a6f --- /dev/null +++ b/source/vendor/jcrop/css/jquery.Jcrop.min.css @@ -0,0 +1,2 @@ +/* jquery.Jcrop.min.css v0.9.15 (build:20180819) */ +.jcrop-holder{direction:ltr;text-align:left;-ms-touch-action:none}.jcrop-hline,.jcrop-vline{background:#fff url(Jcrop.gif);font-size:0;position:absolute}.jcrop-vline{height:100%;width:1px!important}.jcrop-vline.right{right:0}.jcrop-hline{height:1px!important;width:100%}.jcrop-hline.bottom{bottom:0}.jcrop-tracker{height:100%;width:100%;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none}.jcrop-handle{background-color:#333;border:1px #eee solid;width:7px;height:7px;font-size:1px}.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px}.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%}.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%}.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0}.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0}.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px}.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%}.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px}.jcrop-dragbar.ord-n{margin-top:-4px}.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px}.jcrop-dragbar.ord-e{margin-right:-4px;right:0}.jcrop-dragbar.ord-w{margin-left:-4px}.jcrop-light .jcrop-hline,.jcrop-light .jcrop-vline{background:#fff;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#fff;border-radius:3px}.jcrop-dark .jcrop-hline,.jcrop-dark .jcrop-vline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#fff;border-color:#000;border-radius:3px}.solid-line .jcrop-hline,.solid-line .jcrop-vline{background:#fff}.jcrop-holder img,img.jcrop-preview{max-width:none} diff --git a/source/vendor/jcrop/demos/crop.php b/source/vendor/jcrop/demos/crop.php new file mode 100644 index 00000000..1d895c7f --- /dev/null +++ b/source/vendor/jcrop/demos/crop.php @@ -0,0 +1,123 @@ + + + + Live Cropping Demo + + + + + + + + + + + + + +
+
+
+
+ + + + + + + +
+ + + + + +
+ +

+ An example server-side crop script. Hidden form values + are set when a selection is made. If you press the Crop Image + button, the form will be submitted and a 150x150 thumbnail will be + dumped to the browser. Try it! +

+ + +
+
+
+
+ + + diff --git a/source/vendor/jcrop/demos/demo_files/demos.css b/source/vendor/jcrop/demos/demo_files/demos.css new file mode 100644 index 00000000..fe98635d --- /dev/null +++ b/source/vendor/jcrop/demos/demo_files/demos.css @@ -0,0 +1,143 @@ +/* Jcrop Demo Site CSS - 2014 Tapmodo Interactive LLC - MIT License + Not required to run Jcrop - contains twitter bootstrap code */ +/* To build these CSS files you must have LESS and run + * $ git submodule init + * $ git submodule update + * ...to pull in the Twitter bootstrap files + */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +/* JCROP DEMOS CSS */ +li small { + color: #f07878; +} +.inline-labels label { + display: inline; +} +div#interface.span3 fieldset { + margin-bottom: 1.5em; +} +div#interface.span3 fieldset legend { + margin-bottom: 2px; + padding-bottom: 2px; + line-height: 1.2; +} +.article h1 { + color: #333; + margin-top: .2em; +} +.jc-demo { + text-align: center; +} +.jcropper-holder { + border: 1px #bbb solid; +} +.jc-demo-box { + text-align: left; + margin: 2em auto; + background: white; + border: 1px #bbb solid; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.25); + box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.25); + padding: 1em 2em 2em; +} +form { + margin: 1.5em 0; +} +form.coords label { + margin-right: 1em; + font-weight: bold; + color: #900; +} +form.coords input { + width: 3em; +} +.ui-widget-overlay { + opacity: 0.80; + filter: alpha(opacity=70); +} +.jc-dialog { + padding-top: 1em; +} +.ui-dialog p tt { + color: yellow; +} +.jcrop-light .jcrop-selection { + -moz-box-shadow: 0px 0px 15px #999; + /* Firefox */ + -webkit-box-shadow: 0px 0px 15px #999; + /* Safari, Chrome */ + box-shadow: 0px 0px 15px #999; + /* CSS3 */ +} +.jcrop-dark .jcrop-selection { + -moz-box-shadow: 0px 0px 15px #000; + /* Firefox */ + -webkit-box-shadow: 0px 0px 15px #000; + /* Safari, Chrome */ + box-shadow: 0px 0px 15px #000; + /* CSS3 */ +} +.jcrop-fancy .jcrop-handle.ord-e { + -webkit-border-top-left-radius: 0px; + -webkit-border-bottom-left-radius: 0px; +} +.jcrop-fancy .jcrop-handle.ord-w { + -webkit-border-top-right-radius: 0px; + -webkit-border-bottom-right-radius: 0px; +} +.jcrop-fancy .jcrop-handle.ord-nw { + -webkit-border-bottom-right-radius: 0px; +} +.jcrop-fancy .jcrop-handle.ord-ne { + -webkit-border-bottom-left-radius: 0px; +} +.jcrop-fancy .jcrop-handle.ord-sw { + -webkit-border-top-right-radius: 0px; +} +.jcrop-fancy .jcrop-handle.ord-se { + -webkit-border-top-left-radius: 0px; +} +.jcrop-fancy .jcrop-handle.ord-s { + -webkit-border-top-left-radius: 0px; + -webkit-border-top-right-radius: 0px; +} +.jcrop-fancy .jcrop-handle.ord-n { + -webkit-border-bottom-left-radius: 0px; + -webkit-border-bottom-right-radius: 0px; +} +.description { + margin: 16px 0; +} +.jcrop-droptarget canvas { + background-color: #f0f0f0; +} diff --git a/source/vendor/jcrop/demos/demo_files/main.css b/source/vendor/jcrop/demos/demo_files/main.css new file mode 100644 index 00000000..e630c28f --- /dev/null +++ b/source/vendor/jcrop/demos/demo_files/main.css @@ -0,0 +1,5183 @@ +/* Jcrop Demo Site CSS - 2014 Tapmodo Interactive LLC - MIT License + Not required to run Jcrop - contains twitter bootstrap code */ +/*! + * Bootstrap v2.2.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} +audio:not([controls]) { + display: none; +} +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +a:hover, +a:active { + outline: 0; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} +button, +input { + *overflow: visible; + line-height: normal; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} +textarea { + overflow: auto; + vertical-align: top; +} +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} +a { + color: #0088cc; + text-decoration: none; +} +a:hover, +a:focus { + color: #005580; + text-decoration: underline; +} +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} +.row { + margin-left: -20px; + *zoom: 1; +} +.row:before, +.row:after { + display: table; + content: ""; + line-height: 0; +} +.row:after { + clear: both; +} +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} +.span12 { + width: 940px; +} +.span11 { + width: 860px; +} +.span10 { + width: 780px; +} +.span9 { + width: 700px; +} +.span8 { + width: 620px; +} +.span7 { + width: 540px; +} +.span6 { + width: 460px; +} +.span5 { + width: 380px; +} +.span4 { + width: 300px; +} +.span3 { + width: 220px; +} +.span2 { + width: 140px; +} +.span1 { + width: 60px; +} +.offset12 { + margin-left: 980px; +} +.offset11 { + margin-left: 900px; +} +.offset10 { + margin-left: 820px; +} +.offset9 { + margin-left: 740px; +} +.offset8 { + margin-left: 660px; +} +.offset7 { + margin-left: 580px; +} +.offset6 { + margin-left: 500px; +} +.offset5 { + margin-left: 420px; +} +.offset4 { + margin-left: 340px; +} +.offset3 { + margin-left: 260px; +} +.offset2 { + margin-left: 180px; +} +.offset1 { + margin-left: 100px; +} +.row-fluid { + width: 100%; + *zoom: 1; +} +.row-fluid:before, +.row-fluid:after { + display: table; + content: ""; + line-height: 0; +} +.row-fluid:after { + clear: both; +} +.row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.12765957%; + *margin-left: 2.07446809%; +} +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.12765957%; +} +.row-fluid .span12 { + width: 100%; + *width: 99.94680851%; +} +.row-fluid .span11 { + width: 91.4893617%; + *width: 91.43617021%; +} +.row-fluid .span10 { + width: 82.9787234%; + *width: 82.92553191%; +} +.row-fluid .span9 { + width: 74.46808511%; + *width: 74.41489362%; +} +.row-fluid .span8 { + width: 65.95744681%; + *width: 65.90425532%; +} +.row-fluid .span7 { + width: 57.44680851%; + *width: 57.39361702%; +} +.row-fluid .span6 { + width: 48.93617021%; + *width: 48.88297872%; +} +.row-fluid .span5 { + width: 40.42553191%; + *width: 40.37234043%; +} +.row-fluid .span4 { + width: 31.91489362%; + *width: 31.86170213%; +} +.row-fluid .span3 { + width: 23.40425532%; + *width: 23.35106383%; +} +.row-fluid .span2 { + width: 14.89361702%; + *width: 14.84042553%; +} +.row-fluid .span1 { + width: 6.38297872%; + *width: 6.32978723%; +} +.row-fluid .offset12 { + margin-left: 104.25531915%; + *margin-left: 104.14893617%; +} +.row-fluid .offset12:first-child { + margin-left: 102.12765957%; + *margin-left: 102.0212766%; +} +.row-fluid .offset11 { + margin-left: 95.74468085%; + *margin-left: 95.63829787%; +} +.row-fluid .offset11:first-child { + margin-left: 93.61702128%; + *margin-left: 93.5106383%; +} +.row-fluid .offset10 { + margin-left: 87.23404255%; + *margin-left: 87.12765957%; +} +.row-fluid .offset10:first-child { + margin-left: 85.10638298%; + *margin-left: 85%; +} +.row-fluid .offset9 { + margin-left: 78.72340426%; + *margin-left: 78.61702128%; +} +.row-fluid .offset9:first-child { + margin-left: 76.59574468%; + *margin-left: 76.4893617%; +} +.row-fluid .offset8 { + margin-left: 70.21276596%; + *margin-left: 70.10638298%; +} +.row-fluid .offset8:first-child { + margin-left: 68.08510638%; + *margin-left: 67.9787234%; +} +.row-fluid .offset7 { + margin-left: 61.70212766%; + *margin-left: 61.59574468%; +} +.row-fluid .offset7:first-child { + margin-left: 59.57446809%; + *margin-left: 59.46808511%; +} +.row-fluid .offset6 { + margin-left: 53.19148936%; + *margin-left: 53.08510638%; +} +.row-fluid .offset6:first-child { + margin-left: 51.06382979%; + *margin-left: 50.95744681%; +} +.row-fluid .offset5 { + margin-left: 44.68085106%; + *margin-left: 44.57446809%; +} +.row-fluid .offset5:first-child { + margin-left: 42.55319149%; + *margin-left: 42.44680851%; +} +.row-fluid .offset4 { + margin-left: 36.17021277%; + *margin-left: 36.06382979%; +} +.row-fluid .offset4:first-child { + margin-left: 34.04255319%; + *margin-left: 33.93617021%; +} +.row-fluid .offset3 { + margin-left: 27.65957447%; + *margin-left: 27.55319149%; +} +.row-fluid .offset3:first-child { + margin-left: 25.53191489%; + *margin-left: 25.42553191%; +} +.row-fluid .offset2 { + margin-left: 19.14893617%; + *margin-left: 19.04255319%; +} +.row-fluid .offset2:first-child { + margin-left: 17.0212766%; + *margin-left: 16.91489362%; +} +.row-fluid .offset1 { + margin-left: 10.63829787%; + *margin-left: 10.53191489%; +} +.row-fluid .offset1:first-child { + margin-left: 8.5106383%; + *margin-left: 8.40425532%; +} +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} +.container:before, +.container:after { + display: table; + content: ""; + line-height: 0; +} +.container:after { + clear: both; +} +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} +.container-fluid:before, +.container-fluid:after { + display: table; + content: ""; + line-height: 0; +} +.container-fluid:after { + clear: both; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} +small { + font-size: 85%; +} +strong { + font-weight: bold; +} +em { + font-style: italic; +} +cite { + font-style: normal; +} +.muted { + color: #999999; +} +a.muted:hover, +a.muted:focus { + color: #808080; +} +.text-warning { + color: #c09853; +} +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; +} +.text-error { + color: #b94a48; +} +a.text-error:hover, +a.text-error:focus { + color: #953b39; +} +.text-info { + color: #3a87ad; +} +a.text-info:hover, +a.text-info:focus { + color: #2d6987; +} +.text-success { + color: #468847; +} +a.text-success:hover, +a.text-success:focus { + color: #356635; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} +h1, +h2, +h3 { + line-height: 40px; +} +h1 { + font-size: 38.5px; +} +h2 { + font-size: 31.5px; +} +h3 { + font-size: 24.5px; +} +h4 { + font-size: 17.5px; +} +h5 { + font-size: 14px; +} +h6 { + font-size: 11.9px; +} +h1 small { + font-size: 24.5px; +} +h2 small { + font-size: 17.5px; +} +h3 small { + font-size: 14px; +} +h4 small { + font-size: 14px; +} +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} +li { + line-height: 20px; +} +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + *zoom: 1; + padding-left: 5px; + padding-right: 5px; +} +dl { + margin-bottom: 20px; +} +dt, +dd { + line-height: 20px; +} +dt { + font-weight: bold; +} +dd { + margin-left: 10px; +} +.dl-horizontal { + *zoom: 1; +} +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + content: ""; + line-height: 0; +} +.dl-horizontal:after { + clear: both; +} +.dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.dl-horizontal dd { + margin-left: 180px; +} +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} +blockquote p { + margin-bottom: 0; + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} +blockquote small:before { + content: '\2014 \00A0'; +} +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} +blockquote.pull-right small:before { + content: ''; +} +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; + white-space: nowrap; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +pre.prettyprint { + margin-bottom: 20px; +} +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +form { + margin: 0 0 20px; +} +fieldset { + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +legend small { + font-size: 15px; + color: #999999; +} +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} +label { + display: block; + margin-bottom: 5px; +} +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + vertical-align: middle; +} +input, +textarea, +.uneditable-input { + width: 206px; +} +textarea { + height: auto; +} +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear .2s, box-shadow linear .2s; + -moz-transition: border linear .2s, box-shadow linear .2s; + -o-transition: border linear .2s, box-shadow linear .2s; + transition: border linear .2s, box-shadow linear .2s; +} +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); + -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + *margin-top: 0; + /* IE7 */ + margin-top: 1px \9; + /* IE8-9 */ + line-height: normal; +} +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + line-height: 30px; +} +select { + width: 220px; + border: 1px solid #cccccc; + background-color: #ffffff; +} +select[multiple], +select[size] { + height: auto; +} +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.uneditable-input, +.uneditable-textarea { + color: #999999; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + cursor: not-allowed; +} +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} +.uneditable-textarea { + width: auto; + height: auto; +} +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} +.input-mini { + width: 60px; +} +.input-small { + width: 90px; +} +.input-medium { + width: 150px; +} +.input-large { + width: 210px; +} +.input-xlarge { + width: 270px; +} +.input-xxlarge { + width: 530px; +} +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} +input, +textarea, +.uneditable-input { + margin-left: 0; +} +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} +.controls-row { + *zoom: 1; +} +.controls-row:before, +.controls-row:after { + display: table; + content: ""; + line-height: 0; +} +.controls-row:after { + clear: both; +} +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} +.form-actions:before, +.form-actions:after { + display: table; + content: ""; + line-height: 0; +} +.form-actions:after { + clear: both; +} +.help-block, +.help-inline { + color: #595959; +} +.help-block { + display: block; + margin-bottom: 10px; +} +.help-inline { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + *zoom: 1; + vertical-align: middle; + padding-left: 5px; +} +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + vertical-align: middle; + font-size: 0; + white-space: nowrap; +} +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} +/* Allow for input prepend/append in search forms */ +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + *zoom: 1; + margin-bottom: 0; + vertical-align: middle; +} +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} +.control-group { + margin-bottom: 10px; +} +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + content: ""; + line-height: 0; +} +.form-horizontal .control-group:after { + clear: both; +} +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} +.form-horizontal .controls:first-child { + *padding-left: 180px; +} +.form-horizontal .help-block { + margin-bottom: 0; +} +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} +.form-horizontal .form-actions { + padding-left: 180px; +} +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} +.table { + width: 100%; + margin-bottom: 20px; +} +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} +.table th { + font-weight: bold; +} +.table thead th { + vertical-align: bottom; +} +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} +.table tbody + tbody { + border-top: 2px solid #dddddd; +} +.table .table { + background-color: #ffffff; +} +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; +} +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; +} +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; + border-bottom-left-radius: 0; +} +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; + border-bottom-right-radius: 0; +} +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; +} +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; +} +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} +.table tbody tr.success > td { + background-color: #dff0d8; +} +.table tbody tr.error > td { + background-color: #f2dede; +} +.table tbody tr.warning > td { + background-color: #fcf8e3; +} +.table tbody tr.info > td { + background-color: #d9edf7; +} +.table-hover tbody tr.success:hover > td { + background-color: #d0e9c6; +} +.table-hover tbody tr.error:hover > td { + background-color: #ebcccc; +} +.table-hover tbody tr.warning:hover > td { + background-color: #faf2cc; +} +.table-hover tbody tr.info:hover > td { + background-color: #c4e3f3; +} +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; + margin-top: 1px; +} +/* White icons with optional class, or on hover/focus/active states of certain elements */ +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} +.icon-glass { + background-position: 0 0; +} +.icon-music { + background-position: -24px 0; +} +.icon-search { + background-position: -48px 0; +} +.icon-envelope { + background-position: -72px 0; +} +.icon-heart { + background-position: -96px 0; +} +.icon-star { + background-position: -120px 0; +} +.icon-star-empty { + background-position: -144px 0; +} +.icon-user { + background-position: -168px 0; +} +.icon-film { + background-position: -192px 0; +} +.icon-th-large { + background-position: -216px 0; +} +.icon-th { + background-position: -240px 0; +} +.icon-th-list { + background-position: -264px 0; +} +.icon-ok { + background-position: -288px 0; +} +.icon-remove { + background-position: -312px 0; +} +.icon-zoom-in { + background-position: -336px 0; +} +.icon-zoom-out { + background-position: -360px 0; +} +.icon-off { + background-position: -384px 0; +} +.icon-signal { + background-position: -408px 0; +} +.icon-cog { + background-position: -432px 0; +} +.icon-trash { + background-position: -456px 0; +} +.icon-home { + background-position: 0 -24px; +} +.icon-file { + background-position: -24px -24px; +} +.icon-time { + background-position: -48px -24px; +} +.icon-road { + background-position: -72px -24px; +} +.icon-download-alt { + background-position: -96px -24px; +} +.icon-download { + background-position: -120px -24px; +} +.icon-upload { + background-position: -144px -24px; +} +.icon-inbox { + background-position: -168px -24px; +} +.icon-play-circle { + background-position: -192px -24px; +} +.icon-repeat { + background-position: -216px -24px; +} +.icon-refresh { + background-position: -240px -24px; +} +.icon-list-alt { + background-position: -264px -24px; +} +.icon-lock { + background-position: -287px -24px; +} +.icon-flag { + background-position: -312px -24px; +} +.icon-headphones { + background-position: -336px -24px; +} +.icon-volume-off { + background-position: -360px -24px; +} +.icon-volume-down { + background-position: -384px -24px; +} +.icon-volume-up { + background-position: -408px -24px; +} +.icon-qrcode { + background-position: -432px -24px; +} +.icon-barcode { + background-position: -456px -24px; +} +.icon-tag { + background-position: 0 -48px; +} +.icon-tags { + background-position: -25px -48px; +} +.icon-book { + background-position: -48px -48px; +} +.icon-bookmark { + background-position: -72px -48px; +} +.icon-print { + background-position: -96px -48px; +} +.icon-camera { + background-position: -120px -48px; +} +.icon-font { + background-position: -144px -48px; +} +.icon-bold { + background-position: -167px -48px; +} +.icon-italic { + background-position: -192px -48px; +} +.icon-text-height { + background-position: -216px -48px; +} +.icon-text-width { + background-position: -240px -48px; +} +.icon-align-left { + background-position: -264px -48px; +} +.icon-align-center { + background-position: -288px -48px; +} +.icon-align-right { + background-position: -312px -48px; +} +.icon-align-justify { + background-position: -336px -48px; +} +.icon-list { + background-position: -360px -48px; +} +.icon-indent-left { + background-position: -384px -48px; +} +.icon-indent-right { + background-position: -408px -48px; +} +.icon-facetime-video { + background-position: -432px -48px; +} +.icon-picture { + background-position: -456px -48px; +} +.icon-pencil { + background-position: 0 -72px; +} +.icon-map-marker { + background-position: -24px -72px; +} +.icon-adjust { + background-position: -48px -72px; +} +.icon-tint { + background-position: -72px -72px; +} +.icon-edit { + background-position: -96px -72px; +} +.icon-share { + background-position: -120px -72px; +} +.icon-check { + background-position: -144px -72px; +} +.icon-move { + background-position: -168px -72px; +} +.icon-step-backward { + background-position: -192px -72px; +} +.icon-fast-backward { + background-position: -216px -72px; +} +.icon-backward { + background-position: -240px -72px; +} +.icon-play { + background-position: -264px -72px; +} +.icon-pause { + background-position: -288px -72px; +} +.icon-stop { + background-position: -312px -72px; +} +.icon-forward { + background-position: -336px -72px; +} +.icon-fast-forward { + background-position: -360px -72px; +} +.icon-step-forward { + background-position: -384px -72px; +} +.icon-eject { + background-position: -408px -72px; +} +.icon-chevron-left { + background-position: -432px -72px; +} +.icon-chevron-right { + background-position: -456px -72px; +} +.icon-plus-sign { + background-position: 0 -96px; +} +.icon-minus-sign { + background-position: -24px -96px; +} +.icon-remove-sign { + background-position: -48px -96px; +} +.icon-ok-sign { + background-position: -72px -96px; +} +.icon-question-sign { + background-position: -96px -96px; +} +.icon-info-sign { + background-position: -120px -96px; +} +.icon-screenshot { + background-position: -144px -96px; +} +.icon-remove-circle { + background-position: -168px -96px; +} +.icon-ok-circle { + background-position: -192px -96px; +} +.icon-ban-circle { + background-position: -216px -96px; +} +.icon-arrow-left { + background-position: -240px -96px; +} +.icon-arrow-right { + background-position: -264px -96px; +} +.icon-arrow-up { + background-position: -289px -96px; +} +.icon-arrow-down { + background-position: -312px -96px; +} +.icon-share-alt { + background-position: -336px -96px; +} +.icon-resize-full { + background-position: -360px -96px; +} +.icon-resize-small { + background-position: -384px -96px; +} +.icon-plus { + background-position: -408px -96px; +} +.icon-minus { + background-position: -433px -96px; +} +.icon-asterisk { + background-position: -456px -96px; +} +.icon-exclamation-sign { + background-position: 0 -120px; +} +.icon-gift { + background-position: -24px -120px; +} +.icon-leaf { + background-position: -48px -120px; +} +.icon-fire { + background-position: -72px -120px; +} +.icon-eye-open { + background-position: -96px -120px; +} +.icon-eye-close { + background-position: -120px -120px; +} +.icon-warning-sign { + background-position: -144px -120px; +} +.icon-plane { + background-position: -168px -120px; +} +.icon-calendar { + background-position: -192px -120px; +} +.icon-random { + background-position: -216px -120px; + width: 16px; +} +.icon-comment { + background-position: -240px -120px; +} +.icon-magnet { + background-position: -264px -120px; +} +.icon-chevron-up { + background-position: -288px -120px; +} +.icon-chevron-down { + background-position: -313px -119px; +} +.icon-retweet { + background-position: -336px -120px; +} +.icon-shopping-cart { + background-position: -360px -120px; +} +.icon-folder-close { + background-position: -384px -120px; + width: 16px; +} +.icon-folder-open { + background-position: -408px -120px; + width: 16px; +} +.icon-resize-vertical { + background-position: -432px -119px; +} +.icon-resize-horizontal { + background-position: -456px -118px; +} +.icon-hdd { + background-position: 0 -144px; +} +.icon-bullhorn { + background-position: -24px -144px; +} +.icon-bell { + background-position: -48px -144px; +} +.icon-certificate { + background-position: -72px -144px; +} +.icon-thumbs-up { + background-position: -96px -144px; +} +.icon-thumbs-down { + background-position: -120px -144px; +} +.icon-hand-right { + background-position: -144px -144px; +} +.icon-hand-left { + background-position: -168px -144px; +} +.icon-hand-up { + background-position: -192px -144px; +} +.icon-hand-down { + background-position: -216px -144px; +} +.icon-circle-arrow-right { + background-position: -240px -144px; +} +.icon-circle-arrow-left { + background-position: -264px -144px; +} +.icon-circle-arrow-up { + background-position: -288px -144px; +} +.icon-circle-arrow-down { + background-position: -312px -144px; +} +.icon-globe { + background-position: -336px -144px; +} +.icon-wrench { + background-position: -360px -144px; +} +.icon-tasks { + background-position: -384px -144px; +} +.icon-filter { + background-position: -408px -144px; +} +.icon-briefcase { + background-position: -432px -144px; +} +.icon-fullscreen { + background-position: -456px -144px; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle { + *margin-bottom: -3px; +} +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + text-decoration: none; + color: #ffffff; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #333333; + text-decoration: none; + outline: 0; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: default; +} +.open { + *z-index: 1000; +} +.open > .dropdown-menu { + display: block; +} +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +.dropdown-submenu { + position: relative; +} +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} +.dropdown-submenu > a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #cccccc; + margin-top: 5px; + margin-right: -10px; +} +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} +.dropdown-submenu.pull-left { + float: none; +} +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} +.dropdown .dropdown-menu .nav-header { + padding-left: 20px; + padding-right: 20px; +} +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} +.collapse.in { + height: auto; +} +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.btn { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + *zoom: 1; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + line-height: 20px; + text-align: center; + vertical-align: middle; + cursor: pointer; + color: #333333; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #e6e6e6; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border: 1px solid #bbbbbb; + *border: 0; + border-bottom-color: #a2a2a2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *margin-left: .3em; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); +} +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} +.btn:active, +.btn.active { + background-color: #cccccc \9; +} +.btn:first-child { + *margin-left: 0; +} +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); +} +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} +.btn-mini { + padding: 1px 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #0044cc; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #f89406; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #bd362f; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #51a351; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #2f96b4; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #222222; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn-link { + border-color: transparent; + cursor: pointer; + color: #0088cc; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.btn-link:hover, +.btn-link:focus { + color: #005580; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} +.btn-group { + position: relative; + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + *zoom: 1; + font-size: 0; + vertical-align: middle; + white-space: nowrap; + *margin-left: .3em; +} +.btn-group:first-child { + *margin-left: 0; +} +.btn-group + .btn-group { + margin-left: 5px; +} +.btn-toolbar { + font-size: 0; + margin-top: 10px; + margin-bottom: 10px; +} +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.btn-group > .btn + .btn { + margin-left: -1px; +} +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} +.btn-group > .btn-mini { + font-size: 10.5px; +} +.btn-group > .btn-small { + font-size: 11.9px; +} +.btn-group > .btn-large { + font-size: 17.5px; +} +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 6px; + -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; +} +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 6px; +} +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + *padding-top: 5px; + *padding-bottom: 5px; +} +.btn-group > .btn-mini + .dropdown-toggle { + padding-left: 5px; + padding-right: 5px; + *padding-top: 2px; + *padding-bottom: 2px; +} +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} +.btn-group > .btn-large + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; + *padding-top: 7px; + *padding-bottom: 7px; +} +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); +} +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} +.btn .caret { + margin-top: 8px; + margin-left: 0; +} +.btn-large .caret { + margin-top: 6px; +} +.btn-large .caret { + border-left-width: 5px; + border-right-width: 5px; + border-top-width: 5px; +} +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} +.dropup .btn-large .caret { + border-bottom-width: 5px; +} +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + *zoom: 1; +} +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.btn-group-vertical > .btn + .btn { + margin-left: 0; + margin-top: -1px; +} +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.alert, +.alert h4 { + color: #c09853; +} +.alert h4 { + margin: 0; +} +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #468847; +} +.alert-success h4 { + color: #468847; +} +.alert-danger, +.alert-error { + background-color: #f2dede; + border-color: #eed3d7; + color: #b94a48; +} +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #3a87ad; +} +.alert-info h4 { + color: #3a87ad; +} +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} +.alert-block p + p { + margin-top: 5px; +} +.nav { + margin-left: 0; + margin-bottom: 20px; + list-style: none; +} +.nav > li > a { + display: block; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.nav > li > a > img { + max-width: none; +} +.nav > .pull-right { + float: right; +} +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} +.nav li + .nav-header { + margin-top: 9px; +} +.nav-list { + padding-left: 15px; + padding-right: 15px; + margin-bottom: 0; +} +.nav-list > li > a, +.nav-list .nav-header { + margin-left: -15px; + margin-right: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +.nav-list > li > a { + padding: 3px 15px; +} +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} +.nav-tabs, +.nav-pills { + *zoom: 1; +} +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + content: ""; + line-height: 0; +} +.nav-tabs:after, +.nav-pills:after { + clear: both; +} +.nav-tabs > li, +.nav-pills > li { + float: left; +} +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + margin-bottom: -1px; +} +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #dddddd; +} +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #0088cc; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li > a { + margin-right: 0; +} +.nav-tabs.nav-stacked { + border-bottom: 0; +} +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; +} +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + border-color: #ddd; + z-index: 2; +} +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.nav .dropdown-toggle .caret { + border-top-color: #0088cc; + border-bottom-color: #0088cc; + margin-top: 6px; +} +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} +/* move down carets for tabs */ +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} +.tabbable { + *zoom: 1; +} +.tabbable:before, +.tabbable:after { + display: table; + content: ""; + line-height: 0; +} +.tabbable:after { + clear: both; +} +.tab-content { + overflow: auto; +} +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} +.tab-content > .active, +.pill-content > .active { + display: block; +} +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-bottom-color: transparent; + border-top-color: #ddd; +} +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} +.nav > .disabled > a { + color: #999999; +} +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + cursor: default; +} +.navbar { + overflow: visible; + margin-bottom: 20px; + *position: relative; + *z-index: 2; +} +.navbar-inner { + min-height: 40px; + padding-left: 20px; + padding-right: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + *zoom: 1; +} +.navbar-inner:before, +.navbar-inner:after { + display: table; + content: ""; + line-height: 0; +} +.navbar-inner:after { + clear: both; +} +.navbar .container { + width: auto; +} +.nav-collapse.collapse { + height: auto; + overflow: visible; +} +.navbar .brand { + float: left; + display: block; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} +.navbar-link { + color: #777777; +} +.navbar-link:hover, +.navbar-link:focus { + color: #333333; +} +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-left: 1px solid #f2f2f2; + border-right: 1px solid #ffffff; +} +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} +.navbar-form:before, +.navbar-form:after { + display: table; + content: ""; + line-height: 0; +} +.navbar-form:after { + clear: both; +} +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} +.navbar-search .search-query { + margin-bottom: 0; + padding: 4px 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} +.navbar-static-top { + position: static; + margin-bottom: 0; +} +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-left: 0; + padding-right: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} +.navbar-fixed-top { + top: 0; +} +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1); + -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1); + box-shadow: 0 1px 10px rgba(0,0,0,.1); +} +.navbar-fixed-bottom { + bottom: 0; +} +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1); + -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1); + box-shadow: 0 -1px 10px rgba(0,0,0,.1); +} +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} +.navbar .nav > li { + float: left; +} +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + background-color: transparent; + color: #333333; + text-decoration: none; +} +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #e5e5e5; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); + box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); +} +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} +.navbar .nav > li > .dropdown-menu:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 9px; +} +.navbar .nav > li > .dropdown-menu:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 10px; +} +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + border-top: 7px solid #ccc; + border-top-color: rgba(0, 0, 0, 0.2); + border-bottom: 0; + bottom: -7px; + top: auto; +} +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + border-top: 6px solid #ffffff; + border-bottom: 0; + bottom: -6px; + top: auto; +} +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + background-color: #e5e5e5; + color: #555555; +} +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + left: auto; + right: 0; +} +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + left: auto; + right: 12px; +} +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + left: auto; + right: 13px; +} +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + left: auto; + right: 100%; + margin-left: 0; + margin-right: -1px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); + border-color: #252525; +} +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} +.navbar-inverse .brand { + color: #999999; +} +.navbar-inverse .navbar-text { + color: #999999; +} +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + background-color: transparent; + color: #ffffff; +} +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} +.navbar-inverse .navbar-link { + color: #999999; +} +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} +.navbar-inverse .divider-vertical { + border-left-color: #111111; + border-right-color: #222222; +} +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + background-color: #111111; + color: #ffffff; +} +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + outline: 0; +} +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #040404; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + *zoom: 1; + text-shadow: 0 1px 0 #ffffff; +} +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} +.breadcrumb > .active { + color: #999999; +} +.pagination { + margin: 20px 0; +} +.pagination ul { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + *zoom: 1; + margin-left: 0; + margin-bottom: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} +.pagination ul > li { + display: inline; +} +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + background-color: transparent; + cursor: default; +} +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} +.pagination-centered { + text-align: center; +} +.pagination-right { + text-align: right; +} +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-top-left-radius: 6px; + -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; +} +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 6px; +} +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-top-left-radius: 3px; + -moz-border-radius-topleft: 3px; + border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + border-bottom-left-radius: 3px; +} +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + -moz-border-radius-topright: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + -moz-border-radius-bottomright: 3px; + border-bottom-right-radius: 3px; +} +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 1px 6px; + font-size: 10.5px; +} +.pager { + margin: 20px 0; + list-style: none; + text-align: center; + *zoom: 1; +} +.pager:before, +.pager:after { + display: table; + content: ""; + line-height: 0; +} +.pager:after { + clear: both; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + background-color: #fff; + cursor: default; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + /* IE6-7 */ + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; + outline: none; +} +.modal.fade { + -webkit-transition: opacity .3s linear, top .3s ease-out; + -moz-transition: opacity .3s linear, top .3s ease-out; + -o-transition: opacity .3s linear, top .3s ease-out; + transition: opacity .3s linear, top .3s ease-out; + top: -25%; +} +.modal.fade.in { + top: 10%; +} +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} +.modal-header .close { + margin-top: 2px; +} +.modal-header h3 { + margin: 0; + line-height: 30px; +} +.modal-body { + position: relative; + overflow-y: auto; + max-height: 400px; + padding: 15px; +} +.modal-form { + margin-bottom: 0; +} +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + *zoom: 1; +} +.modal-footer:before, +.modal-footer:after { + display: table; + content: ""; + line-height: 0; +} +.modal-footer:after { + clear: both; +} +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.tooltip { + position: absolute; + z-index: 1030; + display: block; + visibility: visible; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} +.tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + background-color: #ffffff; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + white-space: normal; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.popover-title:empty { + display: none; +} +.popover-content { + padding: 9px 14px; +} +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover .arrow { + border-width: 11px; +} +.popover .arrow:after { + border-width: 10px; + content: ""; +} +.popover.top .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; +} +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #ffffff; +} +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); +} +.popover.right .arrow:after { + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #ffffff; +} +.popover.bottom .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; +} +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #ffffff; +} +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); +} +.popover.left .arrow:after { + right: 1px; + border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; +} +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} +.media, +.media .media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media-object { + display: block; +} +.media-heading { + margin: 0 0 5px; +} +.media > .pull-left { + margin-right: 10px; +} +.media > .pull-right { + margin-left: 10px; +} +.media-list { + margin-left: 0; + list-style: none; +} +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + vertical-align: baseline; + white-space: nowrap; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #999999; +} +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.badge { + padding-left: 9px; + padding-right: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} +.label:empty, +.badge:empty { + display: none; +} +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.label-important, +.badge-important { + background-color: #b94a48; +} +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} +.label-warning, +.badge-warning { + background-color: #f89406; +} +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} +.label-success, +.badge-success { + background-color: #468847; +} +.label-success[href], +.badge-success[href] { + background-color: #356635; +} +.label-info, +.badge-info { + background-color: #3a87ad; +} +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} +.label-inverse, +.badge-inverse { + background-color: #333333; +} +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} +.btn-mini .label, +.btn-mini .badge { + top: 0; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 100%; + color: #ffffff; + float: left; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); + box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); +} +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.accordion { + margin-bottom: 20px; +} +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.accordion-heading { + border-bottom: 0; +} +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} +.accordion-toggle { + cursor: pointer; +} +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} +.carousel-inner { + overflow: hidden; + width: 100%; + position: relative; +} +.carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} +.carousel-control.right { + left: auto; + right: 15px; +} +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} +.carousel-indicators .active { + background-color: #fff; +} +.carousel-caption { + position: absolute; + left: 0; + right: 0; + bottom: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} +.carousel-caption h4, +.carousel-caption p { + color: #ffffff; + line-height: 20px; +} +.carousel-caption h4 { + margin: 0 0 5px; +} +.carousel-caption p { + margin-bottom: 0; +} +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + color: inherit; + letter-spacing: -1px; +} +.hero-unit li { + line-height: 30px; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.hide { + display: none; +} +.show { + display: block; +} +.invisible { + visibility: hidden; +} +.affix { + position: fixed; +} +.tapmodo-logo { + display: block; + width: 103px; + height: 21px; + background-repeat: no-repeat; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGcAAAAVCAYAAABbq/AzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABUNJREFUeNrsWX9oU1cUvn0pkUDlSaDSEcgoRAqFN1IqhY79IRuFDUFRFEHp6LBYMhRBURREQSYbW5UOpaIoSkVpURDEYZlMWhiWDQNloigWgsFCoFCQBQphj3nu+C4cD/e+NCOTsnjgI+/d3nvfuef3uW0aHh5WjLJAHO8zhMdq+dRGCAhJwoR6T+OEDJ5vEb6rZXEzfjsIo4RPLXMWCPcJhwnzEXvlsIem1++V8w/1EtJ4fl7rYg+a/cOhGE2thJ2YE0Ts5bPnsIEV0kKI1WMjD5udg7VHURJKsjFzgbCFjcUxNmph9HPCdcIjhm9gBFLZ5u85zHlJ+BuGkrPw0o/vXkA02Eu4hz3GEHa1Ed7E2G+Y4zrvt4QpzL1LOERIRHjJE8KfhL8Iv2CPKOoknAUfj8BXv/ljE+Uc/bElCGcMwrOFtTOEvOUDaQjNRWuY4i8RdjvmFQhdbG61fTVdJAyx9+sOA1Is3PqW8a8J59l7N4TrO/j8DL9cMVMsV9voBmEXe9/jMF4FeX/hQdvaChf1ABjVRcBRCGstNtXMjBA2WQ6cF/mogrEZKF6JuKvnXiXcYX9rj1Cc+c5lwu/igN1VFFixhN6KmLNJeP2YUExZ8Dkq1h9higkRia5ZvmMoA1nGxPkM9REOeHD1UbhVAAv6CJXFLDxJh4lXhP2W8KM3XQ+GDJUw9rFgUM/5inASBy4B/OAuOkYYhNUuijBpI20UHxA2i/EfCKtEFZoSXtDJlKjPsFp4aJ9QHs/XWm77CF+Ks8nwm2Ce+CF45TLsb2aTslDQSXwghFd1RiT+WimHOO5y/6hEGjIrniP0sJzn8piSsHrFwpErx6bE3Bk8X4ORGj5T2CMmeMgvs+UwNE0osnLb5MC0J5iMI/H2Whg1tPgvFaOVfJopZh4HWVjm+iQzjgwbn69ztfVaCLGFhSJlCXWhMIC2Gr/R4XgueyKxmY/Ngimbl/xaxbKNUrUFXGHekBXzdyHElJfpOdpoXhCeMUVp77hdZ+XMMJ70+R/CY+6J3Flk75Ps+TjOPs56HEmTIoz+DFmN8DkeXElWZ2WLpSg0lnOODxaFkHWJOMAsLy8UOIUDtIsEH5V3Mswyl5CD6u05OjKcYO8B+EoxIxwSa06x3NqGs++I+MYDUQz1QVYJpoNTHqx3VihHWbQ+bWGK00+Ep5akXGHWNijCYgmCmINBbLV4sqEfkQsv4raiC3nAFXIX2W/oGFeO/HMGletji1DXQxactPw2iPPrCLMdZbGyhO+tKBxklXsVBVmhCXdr2rq/RxWhD7IOVdAY3PwyFlXr/GNI1AEEnnck3jSEUxbNbDmif5K9yLukTETEsN2UVEQLUY0SCNVvRYEmcfG5kighYrDscf731LyCeVuqEkZrpawI30pUqXFL2V0PSrIQGqgabvm9BjLEoujTOkTFtEO9fbGbEq2Ebynpux0hMMWKgxzmJcBDzNKb+eLqKN5oyjE3CVoJGyEs16XnNibk3Wz9TlZR9eF3AD1cDIrw8W6rOj9hPPDeJoAiB5DX9XVST7NqPGpFxWe8w0eFGCLkpDCnAAWZCkwXOgdFExrDmk6su2EpgAri1iBEldqG314UW3tRfCWByUZUTrWYz3PPhCiXFbP8aXZ3llHufyW42o4BKOMpK6MVqsIHjRbWbDcZvN/qgPUXWF7IsKusUPSCxltMKJpECAzgZWnWXqQtyishvJoK9D7WhRhvWcml9H9VNfks9PjwkhDPrayfCSDYWUvVZd7bEbJaWJjLQnlFppwA+/gi7LWK5tTcG2rFzb8RYADOuFkIlIcpJwAAAABJRU5ErkJggg==); + overflow: hidden; + text-indent: -99em; +} +.tapmodo-footer { + font-size: 10px; + color: #aaa; + line-height: 1.1; + border-top: 1px #eee solid; + padding: 22px 0 16px; + margin-top: 3.5em; +} +.tapmodo-footer .segment { + float: left; + margin-right: 1.5em; +} +.tapmodo-footer .segment a { + color: #999; + text-decoration: underline; +} +.tapmodo-footer .segment a:hover { + color: #888; + text-decoration: none; +} +.page-header { + margin-top: 4px; + padding-bottom: 0; + margin-left: -12px; + margin-right: -12px; +} +.page-header .breadcrumb { + font-size: 11px; + padding: 5px 12px; + margin: 0; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.page-header .breadcrumb li { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + *zoom: 1; + text-shadow: 0 1px 0 #ffffff; +} +.page-header .breadcrumb .divider { + padding: 0 5px; + color: #ccc; +} +.page-header .breadcrumb .active { + color: #999999; +} +.page-header h1 { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; + background-color: #f8f8f8; + background-color: #f9f9f9; + background-image: -moz-linear-gradient(top, #f5f5f5, #ffffff); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#ffffff)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #ffffff); + background-image: -o-linear-gradient(top, #f5f5f5, #ffffff); + background-image: linear-gradient(to bottom, #f5f5f5, #ffffff); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffffffff', GradientType=0); + margin: 0; + padding: 10px 12px; +} +.modal-body { + max-height: 60%; +} diff --git a/source/vendor/jcrop/demos/demo_files/pool.jpg b/source/vendor/jcrop/demos/demo_files/pool.jpg new file mode 100644 index 00000000..6b5a1903 Binary files /dev/null and b/source/vendor/jcrop/demos/demo_files/pool.jpg differ diff --git a/source/vendor/jcrop/demos/demo_files/sago.jpg b/source/vendor/jcrop/demos/demo_files/sago.jpg new file mode 100644 index 00000000..50b48bfa Binary files /dev/null and b/source/vendor/jcrop/demos/demo_files/sago.jpg differ diff --git a/source/vendor/jcrop/demos/demo_files/sagomod.jpg b/source/vendor/jcrop/demos/demo_files/sagomod.jpg new file mode 100644 index 00000000..654696c4 Binary files /dev/null and b/source/vendor/jcrop/demos/demo_files/sagomod.jpg differ diff --git a/source/vendor/jcrop/demos/demo_files/sagomod.png b/source/vendor/jcrop/demos/demo_files/sagomod.png new file mode 100644 index 00000000..970f4655 Binary files /dev/null and b/source/vendor/jcrop/demos/demo_files/sagomod.png differ diff --git a/source/vendor/jcrop/demos/non-image.html b/source/vendor/jcrop/demos/non-image.html new file mode 100644 index 00000000..2437c669 --- /dev/null +++ b/source/vendor/jcrop/demos/non-image.html @@ -0,0 +1,86 @@ + + + + Non-image Cropping | Jcrop Demo + + + + + + + + + + + + + +
+
+
+
+ + + +

+ + This is an example of attaching Jcrop to a target that is not an image. You are now cropping a paragraph tag. + +

+ +
+

+ Attaching Jcrop to a non-image element.
+ This is mostly useful to implement other interfaces, such as canvas or over an arbitrary div. +

+
+ + + + +
+ +
+
+
+
+ + + + diff --git a/source/vendor/jcrop/demos/styling.html b/source/vendor/jcrop/demos/styling.html new file mode 100644 index 00000000..cccd8882 --- /dev/null +++ b/source/vendor/jcrop/demos/styling.html @@ -0,0 +1,118 @@ + + + + CSS Styling Example | Jcrop Demo + + + + + + + + + + + + + +
+
+
+
+ + + + [Jcrop Example] + +
+
+ Manipulate classes +
+ + + +
+
+
+ +

+ Example styling tricks. Click the buttons above to change the appearance of Jcrop in real-time. +

+ + + + +
+ +
+
+
+
+ + + + diff --git a/source/vendor/jcrop/demos/tutorial1.html b/source/vendor/jcrop/demos/tutorial1.html new file mode 100644 index 00000000..bd2ea6b2 --- /dev/null +++ b/source/vendor/jcrop/demos/tutorial1.html @@ -0,0 +1,65 @@ + + + + Hello World | Jcrop Demo + + + + + + + + + + + + +
+
+
+
+ + + + [Jcrop Example] + +
+

+ This example demonstrates the default behavior of Jcrop.
+ Since no event handlers have been attached it only performs + the cropping behavior. +

+
+ + + +
+ +
+
+
+
+ + + + diff --git a/source/vendor/jcrop/demos/tutorial2.html b/source/vendor/jcrop/demos/tutorial2.html new file mode 100644 index 00000000..74950db8 --- /dev/null +++ b/source/vendor/jcrop/demos/tutorial2.html @@ -0,0 +1,123 @@ + + + + Basic Handler | Jcrop Demo + + + + + + + + + + + + +
+
+
+
+ + + + + [Jcrop Example] + + +
+ +
+ + + + + + +
+
+ +
+

+ An example with a basic event handler. Here we've tied + several form values together with a simple event handler invocation. + The result is that the form values are updated in real-time as + the selection is changed using Jcrop's onChange handler. +

+ +

+ That's how easily Jcrop can be integrated into a traditional web form! +

+
+ + + + +
+ +
+
+
+
+ + + + diff --git a/source/vendor/jcrop/demos/tutorial3.html b/source/vendor/jcrop/demos/tutorial3.html new file mode 100644 index 00000000..e2c6e57b --- /dev/null +++ b/source/vendor/jcrop/demos/tutorial3.html @@ -0,0 +1,150 @@ + + + + Aspect Ratio with Preview Pane | Jcrop Demo + + + + + + + + + + + + + +
+
+
+
+ + + + [Jcrop Example] + +
+
+ Preview +
+
+ +
+

+ An example implementing a preview pane. + Obviously the most visual demo, the preview pane is accomplished + entirely outside of Jcrop with a simple jQuery-flavored callback. + This type of interface could be useful for creating a thumbnail + or avatar. The onChange event handler is used to update the + view in the preview pane. +

+
+ + + +
+ +
+
+
+
+ + + + diff --git a/source/vendor/jcrop/demos/tutorial4.html b/source/vendor/jcrop/demos/tutorial4.html new file mode 100644 index 00000000..876893df --- /dev/null +++ b/source/vendor/jcrop/demos/tutorial4.html @@ -0,0 +1,227 @@ + + + + Animations + Transitions | Jcrop Demo + + + + + + + + + + + + + + +
+
+
+
+ + + + +
+
+ Jcrop Image + +
+ + +

+ Animation/Transitions. + Demonstration of animateTo API method and transitions for bgColor + and bgOpacity options. Color fading requires inclusion of John Resig's + jQuery Color + Animations plugin. If it is not included, colors will not fade. +

+
+ +
+
+ + +
+
+ + + +
+ +
+
+
+
+ + + + diff --git a/source/vendor/jcrop/demos/tutorial5.html b/source/vendor/jcrop/demos/tutorial5.html new file mode 100644 index 00000000..6cb80a07 --- /dev/null +++ b/source/vendor/jcrop/demos/tutorial5.html @@ -0,0 +1,268 @@ + + + + API Demo | Jcrop Demo + + + + + + + + + + + + + +
+
+
+
+ + + + [Jcrop Example] + +
+ + + + + + + + + +
+ +
+ Option Toggles +
+ + +
+
+ + + +
+
+ +
+ Change Image +
+ + + +
+
+ + + + + +
+ +
+
+
+
+ + + + diff --git a/source/vendor/jcrop/index.html b/source/vendor/jcrop/index.html new file mode 100644 index 00000000..8505576f --- /dev/null +++ b/source/vendor/jcrop/index.html @@ -0,0 +1,84 @@ + + + + Jcrop: the jQuery Image Cropping Plugin + + + + + + + +
+
+
+
+ + + + + + Jcrop + is the image cropping plugin for + jQuery.
+ You've successfully unpacked Jcrop. +
+ +

Static Demos

+ + + +

Live Demo

+ + + +

Jcrop Links

+ + + + +
+ +
+
+
+
+ + + diff --git a/source/vendor/jcrop/js/jquery.Jcrop.js b/source/vendor/jcrop/js/jquery.Jcrop.js new file mode 100644 index 00000000..41f80e63 --- /dev/null +++ b/source/vendor/jcrop/js/jquery.Jcrop.js @@ -0,0 +1,1694 @@ +/** + * jquery.Jcrop.js v0.9.15 + * jQuery Image Cropping Plugin - released under MIT License + * Author: Kelly Hallman + * http://github.com/tapmodo/Jcrop + * Copyright (c) 2008-2018 Tapmodo Interactive LLC {{{ + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * }}} + */ + +(function ($) { + + $.Jcrop = function (obj, opt) { + var options = $.extend({}, $.Jcrop.defaults), + docOffset, + _ua = navigator.userAgent.toLowerCase(), + is_msie = /msie/.test(_ua), + ie6mode = /msie [1-6]\./.test(_ua); + + // Internal Methods {{{ + function px(n) { + return Math.round(n) + 'px'; + } + function cssClass(cl) { + return options.baseClass + '-' + cl; + } + function supportsColorFade() { + return $.fx.step.hasOwnProperty('backgroundColor'); + } + function getPos(obj) //{{{ + { + var pos = $(obj).offset(); + return [pos.left, pos.top]; + } + //}}} + function mouseAbs(e) //{{{ + { + return [(e.pageX - docOffset[0]), (e.pageY - docOffset[1])]; + } + //}}} + function setOptions(opt) //{{{ + { + if (typeof(opt) !== 'object') opt = {}; + options = $.extend(options, opt); + + $.each(['onChange','onSelect','onRelease','onDblClick'],function(i,e) { + if (typeof(options[e]) !== 'function') options[e] = function () {}; + }); + } + //}}} + function startDragMode(mode, pos, touch) //{{{ + { + docOffset = getPos($img); + Tracker.setCursor(mode === 'move' ? mode : mode + '-resize'); + + if (mode === 'move') { + return Tracker.activateHandlers(createMover(pos), doneSelect, touch); + } + + var fc = Coords.getFixed(); + var opp = oppLockCorner(mode); + var opc = Coords.getCorner(oppLockCorner(opp)); + + Coords.setPressed(Coords.getCorner(opp)); + Coords.setCurrent(opc); + + Tracker.activateHandlers(dragmodeHandler(mode, fc), doneSelect, touch); + } + //}}} + function dragmodeHandler(mode, f) //{{{ + { + return function (pos) { + if (!options.aspectRatio) { + switch (mode) { + case 'e': + pos[1] = f.y2; + break; + case 'w': + pos[1] = f.y2; + break; + case 'n': + pos[0] = f.x2; + break; + case 's': + pos[0] = f.x2; + break; + } + } else { + switch (mode) { + case 'e': + pos[1] = f.y + 1; + break; + case 'w': + pos[1] = f.y + 1; + break; + case 'n': + pos[0] = f.x + 1; + break; + case 's': + pos[0] = f.x + 1; + break; + } + } + Coords.setCurrent(pos); + Selection.update(); + }; + } + //}}} + function createMover(pos) //{{{ + { + var lloc = pos; + KeyManager.watchKeys(); + + return function (pos) { + Coords.moveOffset([pos[0] - lloc[0], pos[1] - lloc[1]]); + lloc = pos; + + Selection.update(); + }; + } + //}}} + function oppLockCorner(ord) //{{{ + { + switch (ord) { + case 'n': + return 'sw'; + case 's': + return 'nw'; + case 'e': + return 'nw'; + case 'w': + return 'ne'; + case 'ne': + return 'sw'; + case 'nw': + return 'se'; + case 'se': + return 'nw'; + case 'sw': + return 'ne'; + } + } + //}}} + function createDragger(ord) //{{{ + { + return function (e) { + if (options.disabled) { + return false; + } + if ((ord === 'move') && !options.allowMove) { + return false; + } + + // Fix position of crop area when dragged the very first time. + // Necessary when crop image is in a hidden element when page is loaded. + docOffset = getPos($img); + + btndown = true; + startDragMode(ord, mouseAbs(e)); + e.stopPropagation(); + e.preventDefault(); + return false; + }; + } + //}}} + function presize($obj, w, h) //{{{ + { + var nw = $obj.width(), + nh = $obj.height(); + if ((nw > w) && w > 0) { + nw = w; + nh = (w / $obj.width()) * $obj.height(); + } + if ((nh > h) && h > 0) { + nh = h; + nw = (h / $obj.height()) * $obj.width(); + } + xscale = $obj.width() / nw; + yscale = $obj.height() / nh; + $obj.width(nw).height(nh); + } + //}}} + function unscale(c) //{{{ + { + return { + x: c.x * xscale, + y: c.y * yscale, + x2: c.x2 * xscale, + y2: c.y2 * yscale, + w: c.w * xscale, + h: c.h * yscale + }; + } + //}}} + function doneSelect(pos) //{{{ + { + var c = Coords.getFixed(); + if ((c.w > options.minSelect[0]) && (c.h > options.minSelect[1])) { + Selection.enableHandles(); + Selection.done(); + } else { + Selection.release(); + } + Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default'); + } + //}}} + function newSelection(e) //{{{ + { + if (options.disabled) { + return; + } + if (!options.allowSelect) { + return; + } + btndown = true; + docOffset = getPos($img); + Selection.disableHandles(); + Tracker.setCursor('crosshair'); + var pos = mouseAbs(e); + Coords.setPressed(pos); + Selection.update(); + Tracker.activateHandlers(selectDrag, doneSelect, e.type.substring(0,5)==='touch'); + KeyManager.watchKeys(); + + e.stopPropagation(); + e.preventDefault(); + return false; + } + //}}} + function selectDrag(pos) //{{{ + { + Coords.setCurrent(pos); + Selection.update(); + } + //}}} + function newTracker() //{{{ + { + var trk = $('
').addClass(cssClass('tracker')); + if (is_msie) { + trk.css({ + opacity: 0, + backgroundColor: 'white' + }); + } + return trk; + } + //}}} + + // }}} + // Initialization {{{ + // Sanitize some options {{{ + if (typeof(obj) !== 'object') { + obj = $(obj)[0]; + } + if (typeof(opt) !== 'object') { + opt = {}; + } + // }}} + setOptions(opt); + // Initialize some jQuery objects {{{ + // The values are SET on the image(s) for the interface + // If the original image has any of these set, they will be reset + // However, if you destroy() the Jcrop instance the original image's + // character in the DOM will be as you left it. + var img_css = { + border: 'none', + visibility: 'visible', + margin: 0, + padding: 0, + position: 'absolute', + top: 0, + left: 0 + }; + + var $origimg = $(obj), + img_mode = true; + + if (obj.tagName == 'IMG') { + // Fix size of crop image. + // Necessary when crop image is within a hidden element when page is loaded. + if ($origimg[0].width != 0 && $origimg[0].height != 0) { + // Obtain dimensions from contained img element. + $origimg.width($origimg[0].width); + $origimg.height($origimg[0].height); + } else { + // Obtain dimensions from temporary image in case the original is not loaded yet (e.g. IE 7.0). + var tempImage = new Image(); + tempImage.src = $origimg[0].src; + $origimg.width(tempImage.width); + $origimg.height(tempImage.height); + } + + var $img = $origimg.clone().removeAttr('id').css(img_css).show(); + + $img.width($origimg.width()); + $img.height($origimg.height()); + $origimg.after($img).hide(); + + } else { + $img = $origimg.css(img_css).show(); + img_mode = false; + if (options.shade === null) { options.shade = true; } + } + + presize($img, options.boxWidth, options.boxHeight); + + var boundx = $img.width(), + boundy = $img.height(), + + + $div = $('
').width(boundx).height(boundy).addClass(cssClass('holder')).css({ + position: 'relative', + backgroundColor: options.bgColor + }).insertAfter($origimg).append($img); + + if (options.addClass) { + $div.addClass(options.addClass); + } + + var $img2 = $('
'), + + $img_holder = $('
') + .width('100%').height('100%').css({ + zIndex: 310, + position: 'absolute', + overflow: 'hidden' + }), + + $hdl_holder = $('
') + .width('100%').height('100%').css('zIndex', 320), + + $sel = $('
') + .css({ + position: 'absolute', + zIndex: 600 + }).dblclick(function(){ + var c = Coords.getFixed(); + options.onDblClick.call(api,c); + }).insertBefore($img).append($img_holder, $hdl_holder); + + if (img_mode) { + + $img2 = $('') + .attr('src', $img.attr('src')).css(img_css).width(boundx).height(boundy), + + $img_holder.append($img2); + + } + + if (ie6mode) { + $sel.css({ + overflowY: 'hidden' + }); + } + + var bound = options.boundary; + var $trk = newTracker().width(boundx + (bound * 2)).height(boundy + (bound * 2)).css({ + position: 'absolute', + top: px(-bound), + left: px(-bound), + zIndex: 290 + }).mousedown(newSelection); + + /* }}} */ + // Set more variables {{{ + var bgcolor = options.bgColor, + bgopacity = options.bgOpacity, + xlimit, ylimit, xmin, ymin, xscale, yscale, enabled = true, + btndown, animating, shift_down; + + docOffset = getPos($img); + // }}} + // }}} + // Internal Modules {{{ + // Touch Module {{{ + var Touch = (function () { + // Touch support detection function adapted (under MIT License) + // from code by Jeffrey Sambells - http://github.com/iamamused/ + function hasTouchSupport() { + var support = {}, events = ['touchstart', 'touchmove', 'touchend'], + el = document.createElement('div'), i; + + try { + for(i=0; i x1 + ox) { + ox -= ox + x1; + } + if (0 > y1 + oy) { + oy -= oy + y1; + } + + if (boundy < y2 + oy) { + oy += boundy - (y2 + oy); + } + if (boundx < x2 + ox) { + ox += boundx - (x2 + ox); + } + + x1 += ox; + x2 += ox; + y1 += oy; + y2 += oy; + } + //}}} + function getCorner(ord) //{{{ + { + var c = getFixed(); + switch (ord) { + case 'ne': + return [c.x2, c.y]; + case 'nw': + return [c.x, c.y]; + case 'se': + return [c.x2, c.y2]; + case 'sw': + return [c.x, c.y2]; + } + } + //}}} + function getFixed() //{{{ + { + if (!options.aspectRatio) { + return getRect(); + } + // This function could use some optimization I think... + var aspect = options.aspectRatio, + min_x = options.minSize[0] / xscale, + + + //min_y = options.minSize[1]/yscale, + max_x = options.maxSize[0] / xscale, + max_y = options.maxSize[1] / yscale, + rw = x2 - x1, + rh = y2 - y1, + rwa = Math.abs(rw), + rha = Math.abs(rh), + real_ratio = rwa / rha, + xx, yy, w, h; + + if (max_x === 0) { + max_x = boundx * 10; + } + if (max_y === 0) { + max_y = boundy * 10; + } + if (real_ratio < aspect) { + yy = y2; + w = rha * aspect; + xx = rw < 0 ? x1 - w : w + x1; + + if (xx < 0) { + xx = 0; + h = Math.abs((xx - x1) / aspect); + yy = rh < 0 ? y1 - h : h + y1; + } else if (xx > boundx) { + xx = boundx; + h = Math.abs((xx - x1) / aspect); + yy = rh < 0 ? y1 - h : h + y1; + } + } else { + xx = x2; + h = rwa / aspect; + yy = rh < 0 ? y1 - h : y1 + h; + if (yy < 0) { + yy = 0; + w = Math.abs((yy - y1) * aspect); + xx = rw < 0 ? x1 - w : w + x1; + } else if (yy > boundy) { + yy = boundy; + w = Math.abs(yy - y1) * aspect; + xx = rw < 0 ? x1 - w : w + x1; + } + } + + // Magic %-) + if (xx > x1) { // right side + if (xx - x1 < min_x) { + xx = x1 + min_x; + } else if (xx - x1 > max_x) { + xx = x1 + max_x; + } + if (yy > y1) { + yy = y1 + (xx - x1) / aspect; + } else { + yy = y1 - (xx - x1) / aspect; + } + } else if (xx < x1) { // left side + if (x1 - xx < min_x) { + xx = x1 - min_x; + } else if (x1 - xx > max_x) { + xx = x1 - max_x; + } + if (yy > y1) { + yy = y1 + (x1 - xx) / aspect; + } else { + yy = y1 - (x1 - xx) / aspect; + } + } + + if (xx < 0) { + x1 -= xx; + xx = 0; + } else if (xx > boundx) { + x1 -= xx - boundx; + xx = boundx; + } + + if (yy < 0) { + y1 -= yy; + yy = 0; + } else if (yy > boundy) { + y1 -= yy - boundy; + yy = boundy; + } + + return makeObj(flipCoords(x1, y1, xx, yy)); + } + //}}} + function rebound(p) //{{{ + { + if (p[0] < 0) p[0] = 0; + if (p[1] < 0) p[1] = 0; + + if (p[0] > boundx) p[0] = boundx; + if (p[1] > boundy) p[1] = boundy; + + return [Math.round(p[0]), Math.round(p[1])]; + } + //}}} + function flipCoords(x1, y1, x2, y2) //{{{ + { + var xa = x1, + xb = x2, + ya = y1, + yb = y2; + if (x2 < x1) { + xa = x2; + xb = x1; + } + if (y2 < y1) { + ya = y2; + yb = y1; + } + return [xa, ya, xb, yb]; + } + //}}} + function getRect() //{{{ + { + var xsize = x2 - x1, + ysize = y2 - y1, + delta; + + if (xlimit && (Math.abs(xsize) > xlimit)) { + x2 = (xsize > 0) ? (x1 + xlimit) : (x1 - xlimit); + } + if (ylimit && (Math.abs(ysize) > ylimit)) { + y2 = (ysize > 0) ? (y1 + ylimit) : (y1 - ylimit); + } + + if (ymin / yscale && (Math.abs(ysize) < ymin / yscale)) { + y2 = (ysize > 0) ? (y1 + ymin / yscale) : (y1 - ymin / yscale); + } + if (xmin / xscale && (Math.abs(xsize) < xmin / xscale)) { + x2 = (xsize > 0) ? (x1 + xmin / xscale) : (x1 - xmin / xscale); + } + + if (x1 < 0) { + x2 -= x1; + x1 -= x1; + } + if (y1 < 0) { + y2 -= y1; + y1 -= y1; + } + if (x2 < 0) { + x1 -= x2; + x2 -= x2; + } + if (y2 < 0) { + y1 -= y2; + y2 -= y2; + } + if (x2 > boundx) { + delta = x2 - boundx; + x1 -= delta; + x2 -= delta; + } + if (y2 > boundy) { + delta = y2 - boundy; + y1 -= delta; + y2 -= delta; + } + if (x1 > boundx) { + delta = x1 - boundy; + y2 -= delta; + y1 -= delta; + } + if (y1 > boundy) { + delta = y1 - boundy; + y2 -= delta; + y1 -= delta; + } + + return makeObj(flipCoords(x1, y1, x2, y2)); + } + //}}} + function makeObj(a) //{{{ + { + return { + x: a[0], + y: a[1], + x2: a[2], + y2: a[3], + w: a[2] - a[0], + h: a[3] - a[1] + }; + } + //}}} + + return { + flipCoords: flipCoords, + setPressed: setPressed, + setCurrent: setCurrent, + getOffset: getOffset, + moveOffset: moveOffset, + getCorner: getCorner, + getFixed: getFixed + }; + }()); + + //}}} + // Shade Module {{{ + var Shade = (function() { + var enabled = false, + holder = $('
').css({ + position: 'absolute', + zIndex: 240, + opacity: 0 + }), + shades = { + top: createShade(), + left: createShade().height(boundy), + right: createShade().height(boundy), + bottom: createShade() + }; + + function resizeShades(w,h) { + shades.left.css({ height: px(h) }); + shades.right.css({ height: px(h) }); + } + function updateAuto() + { + return updateShade(Coords.getFixed()); + } + function updateShade(c) + { + shades.top.css({ + left: px(c.x), + width: px(c.w), + height: px(c.y) + }); + shades.bottom.css({ + top: px(c.y2), + left: px(c.x), + width: px(c.w), + height: px(boundy-c.y2) + }); + shades.right.css({ + left: px(c.x2), + width: px(boundx-c.x2) + }); + shades.left.css({ + width: px(c.x) + }); + } + function createShade() { + return $('
').css({ + position: 'absolute', + backgroundColor: options.shadeColor||options.bgColor + }).appendTo(holder); + } + function enableShade() { + if (!enabled) { + enabled = true; + holder.insertBefore($img); + updateAuto(); + Selection.setBgOpacity(1,0,1); + $img2.hide(); + + setBgColor(options.shadeColor||options.bgColor,1); + if (Selection.isAwake()) + { + setOpacity(options.bgOpacity,1); + } + else setOpacity(1,1); + } + } + function setBgColor(color,now) { + colorChangeMacro(getShades(),color,now); + } + function disableShade() { + if (enabled) { + holder.remove(); + $img2.show(); + enabled = false; + if (Selection.isAwake()) { + Selection.setBgOpacity(options.bgOpacity,1,1); + } else { + Selection.setBgOpacity(1,1,1); + Selection.disableHandles(); + } + colorChangeMacro($div,0,1); + } + } + function setOpacity(opacity,now) { + if (enabled) { + if (options.bgFade && !now) { + holder.animate({ + opacity: 1-opacity + },{ + queue: false, + duration: options.fadeTime + }); + } + else holder.css({opacity:1-opacity}); + } + } + function refreshAll() { + options.shade ? enableShade() : disableShade(); + if (Selection.isAwake()) setOpacity(options.bgOpacity); + } + function getShades() { + return holder.children(); + } + + return { + update: updateAuto, + updateRaw: updateShade, + getShades: getShades, + setBgColor: setBgColor, + enable: enableShade, + disable: disableShade, + resize: resizeShades, + refresh: refreshAll, + opacity: setOpacity + }; + }()); + // }}} + // Selection Module {{{ + var Selection = (function () { + var awake, + hdep = 370, + borders = {}, + handle = {}, + dragbar = {}, + seehandles = false; + + // Private Methods + function insertBorder(type) //{{{ + { + var jq = $('
').css({ + position: 'absolute', + opacity: options.borderOpacity + }).addClass(cssClass(type)); + $img_holder.append(jq); + return jq; + } + //}}} + function dragDiv(ord, zi) //{{{ + { + var jq = $('
').mousedown(createDragger(ord)).css({ + cursor: ord + '-resize', + position: 'absolute', + zIndex: zi + }).addClass('ord-'+ord); + + if (Touch.support) { + jq.bind('touchstart.jcrop', Touch.createDragger(ord)); + } + + $hdl_holder.append(jq); + return jq; + } + //}}} + function insertHandle(ord) //{{{ + { + var hs = options.handleSize, + + div = dragDiv(ord, hdep++).css({ + opacity: options.handleOpacity + }).addClass(cssClass('handle')); + + if (hs) { div.width(hs).height(hs); } + + return div; + } + //}}} + function insertDragbar(ord) //{{{ + { + return dragDiv(ord, hdep++).addClass('jcrop-dragbar'); + } + //}}} + function createDragbars(li) //{{{ + { + var i; + for (i = 0; i < li.length; i++) { + dragbar[li[i]] = insertDragbar(li[i]); + } + } + //}}} + function createBorders(li) //{{{ + { + var cl,i; + for (i = 0; i < li.length; i++) { + switch(li[i]){ + case'n': cl='hline'; break; + case's': cl='hline bottom'; break; + case'e': cl='vline right'; break; + case'w': cl='vline'; break; + } + borders[li[i]] = insertBorder(cl); + } + } + //}}} + function createHandles(li) //{{{ + { + var i; + for (i = 0; i < li.length; i++) { + handle[li[i]] = insertHandle(li[i]); + } + } + //}}} + function moveto(x, y) //{{{ + { + if (!options.shade) { + $img2.css({ + top: px(-y), + left: px(-x) + }); + } + $sel.css({ + top: px(y), + left: px(x) + }); + } + //}}} + function resize(w, h) //{{{ + { + $sel.width(Math.round(w)).height(Math.round(h)); + } + //}}} + function refresh() //{{{ + { + var c = Coords.getFixed(); + + Coords.setPressed([c.x, c.y]); + Coords.setCurrent([c.x2, c.y2]); + + updateVisible(); + } + //}}} + + // Internal Methods + function updateVisible(select) //{{{ + { + if (awake) { + return update(select); + } + } + //}}} + function update(select) //{{{ + { + var c = Coords.getFixed(); + + resize(c.w, c.h); + moveto(c.x, c.y); + if (options.shade) Shade.updateRaw(c); + + awake || show(); + + if (select) { + options.onSelect.call(api, unscale(c)); + } else { + options.onChange.call(api, unscale(c)); + } + } + //}}} + function setBgOpacity(opacity,force,now) //{{{ + { + if (!awake && !force) return; + if (options.bgFade && !now) { + $img.animate({ + opacity: opacity + },{ + queue: false, + duration: options.fadeTime + }); + } else { + $img.css('opacity', opacity); + } + } + //}}} + function show() //{{{ + { + $sel.show(); + + if (options.shade) Shade.opacity(bgopacity); + else setBgOpacity(bgopacity,true); + + awake = true; + } + //}}} + function release() //{{{ + { + disableHandles(); + $sel.hide(); + + if (options.shade) Shade.opacity(1); + else setBgOpacity(1); + + awake = false; + options.onRelease.call(api); + } + //}}} + function showHandles() //{{{ + { + if (seehandles) { + $hdl_holder.show(); + } + } + //}}} + function enableHandles() //{{{ + { + seehandles = true; + if (options.allowResize) { + $hdl_holder.show(); + return true; + } + } + //}}} + function disableHandles() //{{{ + { + seehandles = false; + $hdl_holder.hide(); + } + //}}} + function animMode(v) //{{{ + { + if (v) { + animating = true; + disableHandles(); + } else { + animating = false; + enableHandles(); + } + } + //}}} + function done() //{{{ + { + animMode(false); + refresh(); + } + //}}} + // Insert draggable elements {{{ + // Insert border divs for outline + + if (options.dragEdges && $.isArray(options.createDragbars)) + createDragbars(options.createDragbars); + + if ($.isArray(options.createHandles)) + createHandles(options.createHandles); + + if (options.drawBorders && $.isArray(options.createBorders)) + createBorders(options.createBorders); + + //}}} + + // This is a hack for iOS5 to support drag/move touch functionality + $(document).bind('touchstart.jcrop-ios',function(e) { + if ($(e.currentTarget).hasClass('jcrop-tracker')) e.stopPropagation(); + }); + + var $track = newTracker().mousedown(createDragger('move')).css({ + cursor: 'move', + position: 'absolute', + zIndex: 360 + }); + + if (Touch.support) { + $track.bind('touchstart.jcrop', Touch.createDragger('move')); + } + + $img_holder.append($track); + disableHandles(); + + return { + updateVisible: updateVisible, + update: update, + release: release, + refresh: refresh, + isAwake: function () { + return awake; + }, + setCursor: function (cursor) { + $track.css('cursor', cursor); + }, + enableHandles: enableHandles, + enableOnly: function () { + seehandles = true; + }, + showHandles: showHandles, + disableHandles: disableHandles, + animMode: animMode, + setBgOpacity: setBgOpacity, + done: done + }; + }()); + + //}}} + // Tracker Module {{{ + var Tracker = (function () { + var onMove = function () {}, + onDone = function () {}, + trackDoc = options.trackDocument; + + function toFront(touch) //{{{ + { + $trk.css({ + zIndex: 450 + }); + + if (touch) + $(document) + .bind('touchmove.jcrop', trackTouchMove) + .bind('touchend.jcrop', trackTouchEnd); + + else if (trackDoc) + $(document) + .bind('mousemove.jcrop',trackMove) + .bind('mouseup.jcrop',trackUp); + } + //}}} + function toBack() //{{{ + { + $trk.css({ + zIndex: 290 + }); + $(document).unbind('.jcrop'); + } + //}}} + function trackMove(e) //{{{ + { + onMove(mouseAbs(e)); + return false; + } + //}}} + function trackUp(e) //{{{ + { + e.preventDefault(); + e.stopPropagation(); + + if (btndown) { + btndown = false; + + onDone(mouseAbs(e)); + + if (Selection.isAwake()) { + options.onSelect.call(api, unscale(Coords.getFixed())); + } + + toBack(); + onMove = function () {}; + onDone = function () {}; + } + + return false; + } + //}}} + function activateHandlers(move, done, touch) //{{{ + { + btndown = true; + onMove = move; + onDone = done; + toFront(touch); + return false; + } + //}}} + function trackTouchMove(e) //{{{ + { + onMove(mouseAbs(Touch.cfilter(e))); + return false; + } + //}}} + function trackTouchEnd(e) //{{{ + { + return trackUp(Touch.cfilter(e)); + } + //}}} + function setCursor(t) //{{{ + { + $trk.css('cursor', t); + } + //}}} + + if (!trackDoc) { + $trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp); + } + + $img.before($trk); + return { + activateHandlers: activateHandlers, + setCursor: setCursor + }; + }()); + //}}} + // KeyManager Module {{{ + var KeyManager = (function () { + var $keymgr = $('').css({ + position: 'fixed', + left: '-120px', + width: '12px' + }).addClass('jcrop-keymgr'), + + $keywrap = $('
').css({ + position: 'absolute', + overflow: 'hidden' + }).append($keymgr); + + function watchKeys() //{{{ + { + if (options.keySupport) { + $keymgr.show(); + $keymgr.focus(); + } + } + //}}} + function onBlur(e) //{{{ + { + $keymgr.hide(); + } + //}}} + function doNudge(e, x, y) //{{{ + { + if (options.allowMove) { + Coords.moveOffset([x, y]); + Selection.updateVisible(true); + } + e.preventDefault(); + e.stopPropagation(); + } + //}}} + function parseKey(e) //{{{ + { + if (e.ctrlKey || e.metaKey) { + return true; + } + shift_down = e.shiftKey ? true : false; + var nudge = shift_down ? 10 : 1; + + switch (e.keyCode) { + case 37: + doNudge(e, -nudge, 0); + break; + case 39: + doNudge(e, nudge, 0); + break; + case 38: + doNudge(e, 0, -nudge); + break; + case 40: + doNudge(e, 0, nudge); + break; + case 27: + if (options.allowSelect) Selection.release(); + break; + case 9: + return true; + } + + return false; + } + //}}} + + if (options.keySupport) { + $keymgr.keydown(parseKey).blur(onBlur); + if (ie6mode || !options.fixedSupport) { + $keymgr.css({ + position: 'absolute', + left: '-20px' + }); + $keywrap.append($keymgr).insertBefore($img); + } else { + $keymgr.insertBefore($img); + } + } + + + return { + watchKeys: watchKeys + }; + }()); + //}}} + // }}} + // API methods {{{ + function setClass(cname) //{{{ + { + $div.removeClass().addClass(cssClass('holder')).addClass(cname); + } + //}}} + function animateTo(a, callback) //{{{ + { + var x1 = a[0] / xscale, + y1 = a[1] / yscale, + x2 = a[2] / xscale, + y2 = a[3] / yscale; + + if (animating) { + return; + } + + var animto = Coords.flipCoords(x1, y1, x2, y2), + c = Coords.getFixed(), + initcr = [c.x, c.y, c.x2, c.y2], + animat = initcr, + interv = options.animationDelay, + ix1 = animto[0] - initcr[0], + iy1 = animto[1] - initcr[1], + ix2 = animto[2] - initcr[2], + iy2 = animto[3] - initcr[3], + pcent = 0, + velocity = options.swingSpeed; + + x1 = animat[0]; + y1 = animat[1]; + x2 = animat[2]; + y2 = animat[3]; + + Selection.animMode(true); + var anim_timer; + + function queueAnimator() { + window.setTimeout(animator, interv); + } + var animator = (function () { + return function () { + pcent += (100 - pcent) / velocity; + + animat[0] = Math.round(x1 + ((pcent / 100) * ix1)); + animat[1] = Math.round(y1 + ((pcent / 100) * iy1)); + animat[2] = Math.round(x2 + ((pcent / 100) * ix2)); + animat[3] = Math.round(y2 + ((pcent / 100) * iy2)); + + if (pcent >= 99.8) { + pcent = 100; + } + if (pcent < 100) { + setSelectRaw(animat); + queueAnimator(); + } else { + Selection.done(); + Selection.animMode(false); + if (typeof(callback) === 'function') { + callback.call(api); + } + } + }; + }()); + queueAnimator(); + } + //}}} + function setSelect(rect) //{{{ + { + setSelectRaw([rect[0] / xscale, rect[1] / yscale, rect[2] / xscale, rect[3] / yscale]); + options.onSelect.call(api, unscale(Coords.getFixed())); + Selection.enableHandles(); + } + //}}} + function setSelectRaw(l) //{{{ + { + Coords.setPressed([l[0], l[1]]); + Coords.setCurrent([l[2], l[3]]); + Selection.update(); + } + //}}} + function tellSelect() //{{{ + { + return unscale(Coords.getFixed()); + } + //}}} + function tellScaled() //{{{ + { + return Coords.getFixed(); + } + //}}} + function setOptionsNew(opt) //{{{ + { + setOptions(opt); + interfaceUpdate(); + } + //}}} + function disableCrop() //{{{ + { + options.disabled = true; + Selection.disableHandles(); + Selection.setCursor('default'); + Tracker.setCursor('default'); + } + //}}} + function enableCrop() //{{{ + { + options.disabled = false; + interfaceUpdate(); + } + //}}} + function cancelCrop() //{{{ + { + Selection.done(); + Tracker.activateHandlers(null, null); + } + //}}} + function destroy() //{{{ + { + $div.remove(); + $origimg.show(); + $origimg.css('visibility','visible'); + $(obj).removeData('Jcrop'); + } + //}}} + function setImage(src, callback) //{{{ + { + Selection.release(); + disableCrop(); + var img = new Image(); + img.onload = function () { + var iw = img.width; + var ih = img.height; + var bw = options.boxWidth; + var bh = options.boxHeight; + $img.width(iw).height(ih); + $img.attr('src', src); + $img2.attr('src', src); + presize($img, bw, bh); + boundx = $img.width(); + boundy = $img.height(); + $img2.width(boundx).height(boundy); + $trk.width(boundx + (bound * 2)).height(boundy + (bound * 2)); + $div.width(boundx).height(boundy); + Shade.resize(boundx,boundy); + enableCrop(); + + if (typeof(callback) === 'function') { + callback.call(api); + } + }; + img.src = src; + } + //}}} + function colorChangeMacro($obj,color,now) { + var mycolor = color || options.bgColor; + if (options.bgFade && supportsColorFade() && options.fadeTime && !now) { + $obj.animate({ + backgroundColor: mycolor + }, { + queue: false, + duration: options.fadeTime + }); + } else { + $obj.css('backgroundColor', mycolor); + } + } + function interfaceUpdate(alt) //{{{ + // This method tweaks the interface based on options object. + // Called when options are changed and at end of initialization. + { + if (options.allowResize) { + if (alt) { + Selection.enableOnly(); + } else { + Selection.enableHandles(); + } + } else { + Selection.disableHandles(); + } + + Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default'); + Selection.setCursor(options.allowMove ? 'move' : 'default'); + + if (options.hasOwnProperty('trueSize')) { + xscale = options.trueSize[0] / boundx; + yscale = options.trueSize[1] / boundy; + } + + if (options.hasOwnProperty('setSelect')) { + setSelect(options.setSelect); + Selection.done(); + delete(options.setSelect); + } + + Shade.refresh(); + + if (options.bgColor != bgcolor) { + colorChangeMacro( + options.shade? Shade.getShades(): $div, + options.shade? + (options.shadeColor || options.bgColor): + options.bgColor + ); + bgcolor = options.bgColor; + } + + if (bgopacity != options.bgOpacity) { + bgopacity = options.bgOpacity; + if (options.shade) Shade.refresh(); + else Selection.setBgOpacity(bgopacity); + } + + xlimit = options.maxSize[0] || 0; + ylimit = options.maxSize[1] || 0; + xmin = options.minSize[0] || 0; + ymin = options.minSize[1] || 0; + + if (options.hasOwnProperty('outerImage')) { + $img.attr('src', options.outerImage); + delete(options.outerImage); + } + + Selection.refresh(); + } + //}}} + //}}} + + if (Touch.support) $trk.bind('touchstart.jcrop', Touch.newSelection); + + $hdl_holder.hide(); + interfaceUpdate(true); + + var api = { + setImage: setImage, + animateTo: animateTo, + setSelect: setSelect, + setOptions: setOptionsNew, + tellSelect: tellSelect, + tellScaled: tellScaled, + setClass: setClass, + + disable: disableCrop, + enable: enableCrop, + cancel: cancelCrop, + release: Selection.release, + destroy: destroy, + + focus: KeyManager.watchKeys, + + getBounds: function () { + return [boundx * xscale, boundy * yscale]; + }, + getWidgetSize: function () { + return [boundx, boundy]; + }, + getScaleFactor: function () { + return [xscale, yscale]; + }, + getOptions: function() { + // careful: internal values are returned + return options; + }, + + ui: { + holder: $div, + selection: $sel + } + }; + + if (is_msie) $div.bind('selectstart', function () { return false; }); + + $origimg.data('Jcrop', api); + return api; + }; + $.fn.Jcrop = function (options, callback) //{{{ + { + var api; + // Iterate over each object, attach Jcrop + this.each(function () { + // If we've already attached to this object + if ($(this).data('Jcrop')) { + // The API can be requested this way (undocumented) + if (options === 'api') return $(this).data('Jcrop'); + // Otherwise, we just reset the options... + else $(this).data('Jcrop').setOptions(options); + } + // If we haven't been attached, preload and attach + else { + if (this.tagName == 'IMG') + $.Jcrop.Loader(this,function(){ + $(this).css({display:'block',visibility:'hidden'}); + api = $.Jcrop(this, options); + if ($.isFunction(callback)) callback.call(api); + }); + else { + $(this).css({display:'block',visibility:'hidden'}); + api = $.Jcrop(this, options); + if ($.isFunction(callback)) callback.call(api); + } + } + }); + + // Return "this" so the object is chainable (jQuery-style) + return this; + }; + //}}} + // $.Jcrop.Loader - basic image loader {{{ + + $.Jcrop.Loader = function(imgobj,success,error){ + var $img = $(imgobj), img = $img[0]; + + function completeCheck(){ + if (img.complete) { + $img.unbind('.jcloader'); + if ($.isFunction(success)) success.call(img); + } + else window.setTimeout(completeCheck,50); + } + + $img + .bind('load.jcloader',completeCheck) + .bind('error.jcloader',function(e){ + $img.unbind('.jcloader'); + if ($.isFunction(error)) error.call(img); + }); + + if (img.complete && $.isFunction(success)){ + $img.unbind('.jcloader'); + success.call(img); + } + }; + + //}}} + // Global Defaults {{{ + $.Jcrop.defaults = { + + // Basic Settings + allowSelect: true, + allowMove: true, + allowResize: true, + + trackDocument: true, + + // Styling Options + baseClass: 'jcrop', + addClass: null, + bgColor: 'black', + bgOpacity: 0.6, + bgFade: false, + borderOpacity: 0.4, + handleOpacity: 0.5, + handleSize: null, + + aspectRatio: 0, + keySupport: true, + createHandles: ['n','s','e','w','nw','ne','se','sw'], + createDragbars: ['n','s','e','w'], + createBorders: ['n','s','e','w'], + drawBorders: true, + dragEdges: true, + fixedSupport: true, + touchSupport: null, + + shade: null, + + boxWidth: 0, + boxHeight: 0, + boundary: 2, + fadeTime: 400, + animationDelay: 20, + swingSpeed: 3, + + minSelect: [0, 0], + maxSize: [0, 0], + minSize: [0, 0], + + // Callbacks / Event Handlers + onChange: function () {}, + onSelect: function () {}, + onDblClick: function () {}, + onRelease: function () {} + }; + + // }}} +}(jQuery)); diff --git a/source/vendor/jcrop/js/jquery.Jcrop.min.js b/source/vendor/jcrop/js/jquery.Jcrop.min.js new file mode 100644 index 00000000..f7cebdb6 --- /dev/null +++ b/source/vendor/jcrop/js/jquery.Jcrop.min.js @@ -0,0 +1,7 @@ +/** + * jquery.Jcrop.min.js v0.9.15 (build:20180819) + * jQuery Image Cropping Plugin - released under MIT License + * Copyright (c) 2008-2018 Tapmodo Interactive LLC + * https://github.com/tapmodo/Jcrop + */ +!function($){$.Jcrop=function(obj,opt){function px(n){return Math.round(n)+"px"}function cssClass(cl){return options.baseClass+"-"+cl}function supportsColorFade(){return $.fx.step.hasOwnProperty("backgroundColor")}function getPos(obj){var pos=$(obj).offset();return[pos.left,pos.top]}function mouseAbs(e){return[e.pageX-docOffset[0],e.pageY-docOffset[1]]}function setOptions(opt){"object"!=typeof opt&&(opt={}),options=$.extend(options,opt),$.each(["onChange","onSelect","onRelease","onDblClick"],function(i,e){"function"!=typeof options[e]&&(options[e]=function(){})})}function startDragMode(mode,pos,touch){if(docOffset=getPos($img),Tracker.setCursor("move"===mode?mode:mode+"-resize"),"move"===mode)return Tracker.activateHandlers(createMover(pos),doneSelect,touch);var fc=Coords.getFixed(),opp=oppLockCorner(mode),opc=Coords.getCorner(oppLockCorner(opp));Coords.setPressed(Coords.getCorner(opp)),Coords.setCurrent(opc),Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect,touch)}function dragmodeHandler(mode,f){return function(pos){if(options.aspectRatio)switch(mode){case"e":pos[1]=f.y+1;break;case"w":pos[1]=f.y+1;break;case"n":pos[0]=f.x+1;break;case"s":pos[0]=f.x+1}else switch(mode){case"e":pos[1]=f.y2;break;case"w":pos[1]=f.y2;break;case"n":pos[0]=f.x2;break;case"s":pos[0]=f.x2}Coords.setCurrent(pos),Selection.update()}}function createMover(pos){var lloc=pos;return KeyManager.watchKeys(),function(pos){Coords.moveOffset([pos[0]-lloc[0],pos[1]-lloc[1]]),lloc=pos,Selection.update()}}function oppLockCorner(ord){switch(ord){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function createDragger(ord){return function(e){return options.disabled?!1:"move"!==ord||options.allowMove?(docOffset=getPos($img),btndown=!0,startDragMode(ord,mouseAbs(e)),e.stopPropagation(),e.preventDefault(),!1):!1}}function presize($obj,w,h){var nw=$obj.width(),nh=$obj.height();nw>w&&w>0&&(nw=w,nh=w/$obj.width()*$obj.height()),nh>h&&h>0&&(nh=h,nw=h/$obj.height()*$obj.width()),xscale=$obj.width()/nw,yscale=$obj.height()/nh,$obj.width(nw).height(nh)}function unscale(c){return{x:c.x*xscale,y:c.y*yscale,x2:c.x2*xscale,y2:c.y2*yscale,w:c.w*xscale,h:c.h*yscale}}function doneSelect(){var c=Coords.getFixed();c.w>options.minSelect[0]&&c.h>options.minSelect[1]?(Selection.enableHandles(),Selection.done()):Selection.release(),Tracker.setCursor(options.allowSelect?"crosshair":"default")}function newSelection(e){if(!options.disabled&&options.allowSelect){btndown=!0,docOffset=getPos($img),Selection.disableHandles(),Tracker.setCursor("crosshair");var pos=mouseAbs(e);return Coords.setPressed(pos),Selection.update(),Tracker.activateHandlers(selectDrag,doneSelect,"touch"===e.type.substring(0,5)),KeyManager.watchKeys(),e.stopPropagation(),e.preventDefault(),!1}}function selectDrag(pos){Coords.setCurrent(pos),Selection.update()}function newTracker(){var trk=$("
").addClass(cssClass("tracker"));return is_msie&&trk.css({opacity:0,backgroundColor:"white"}),trk}function setClass(cname){$div.removeClass().addClass(cssClass("holder")).addClass(cname)}function animateTo(a,callback){function queueAnimator(){window.setTimeout(animator,interv)}var x1=a[0]/xscale,y1=a[1]/yscale,x2=a[2]/xscale,y2=a[3]/yscale;if(!animating){var animto=Coords.flipCoords(x1,y1,x2,y2),c=Coords.getFixed(),initcr=[c.x,c.y,c.x2,c.y2],animat=initcr,interv=options.animationDelay,ix1=animto[0]-initcr[0],iy1=animto[1]-initcr[1],ix2=animto[2]-initcr[2],iy2=animto[3]-initcr[3],pcent=0,velocity=options.swingSpeed;x1=animat[0],y1=animat[1],x2=animat[2],y2=animat[3],Selection.animMode(!0);var animator=function(){return function(){pcent+=(100-pcent)/velocity,animat[0]=Math.round(x1+pcent/100*ix1),animat[1]=Math.round(y1+pcent/100*iy1),animat[2]=Math.round(x2+pcent/100*ix2),animat[3]=Math.round(y2+pcent/100*iy2),pcent>=99.8&&(pcent=100),100>pcent?(setSelectRaw(animat),queueAnimator()):(Selection.done(),Selection.animMode(!1),"function"==typeof callback&&callback.call(api))}}();queueAnimator()}}function setSelect(rect){setSelectRaw([rect[0]/xscale,rect[1]/yscale,rect[2]/xscale,rect[3]/yscale]),options.onSelect.call(api,unscale(Coords.getFixed())),Selection.enableHandles()}function setSelectRaw(l){Coords.setPressed([l[0],l[1]]),Coords.setCurrent([l[2],l[3]]),Selection.update()}function tellSelect(){return unscale(Coords.getFixed())}function tellScaled(){return Coords.getFixed()}function setOptionsNew(opt){setOptions(opt),interfaceUpdate()}function disableCrop(){options.disabled=!0,Selection.disableHandles(),Selection.setCursor("default"),Tracker.setCursor("default")}function enableCrop(){options.disabled=!1,interfaceUpdate()}function cancelCrop(){Selection.done(),Tracker.activateHandlers(null,null)}function destroy(){$div.remove(),$origimg.show(),$origimg.css("visibility","visible"),$(obj).removeData("Jcrop")}function setImage(src,callback){Selection.release(),disableCrop();var img=new Image;img.onload=function(){var iw=img.width,ih=img.height,bw=options.boxWidth,bh=options.boxHeight;$img.width(iw).height(ih),$img.attr("src",src),$img2.attr("src",src),presize($img,bw,bh),boundx=$img.width(),boundy=$img.height(),$img2.width(boundx).height(boundy),$trk.width(boundx+2*bound).height(boundy+2*bound),$div.width(boundx).height(boundy),Shade.resize(boundx,boundy),enableCrop(),"function"==typeof callback&&callback.call(api)},img.src=src}function colorChangeMacro($obj,color,now){var mycolor=color||options.bgColor;options.bgFade&&supportsColorFade()&&options.fadeTime&&!now?$obj.animate({backgroundColor:mycolor},{queue:!1,duration:options.fadeTime}):$obj.css("backgroundColor",mycolor)}function interfaceUpdate(alt){options.allowResize?alt?Selection.enableOnly():Selection.enableHandles():Selection.disableHandles(),Tracker.setCursor(options.allowSelect?"crosshair":"default"),Selection.setCursor(options.allowMove?"move":"default"),options.hasOwnProperty("trueSize")&&(xscale=options.trueSize[0]/boundx,yscale=options.trueSize[1]/boundy),options.hasOwnProperty("setSelect")&&(setSelect(options.setSelect),Selection.done(),delete options.setSelect),Shade.refresh(),options.bgColor!=bgcolor&&(colorChangeMacro(options.shade?Shade.getShades():$div,options.shade?options.shadeColor||options.bgColor:options.bgColor),bgcolor=options.bgColor),bgopacity!=options.bgOpacity&&(bgopacity=options.bgOpacity,options.shade?Shade.refresh():Selection.setBgOpacity(bgopacity)),xlimit=options.maxSize[0]||0,ylimit=options.maxSize[1]||0,xmin=options.minSize[0]||0,ymin=options.minSize[1]||0,options.hasOwnProperty("outerImage")&&($img.attr("src",options.outerImage),delete options.outerImage),Selection.refresh()}var docOffset,options=$.extend({},$.Jcrop.defaults),_ua=navigator.userAgent.toLowerCase(),is_msie=/msie/.test(_ua),ie6mode=/msie [1-6]\./.test(_ua);"object"!=typeof obj&&(obj=$(obj)[0]),"object"!=typeof opt&&(opt={}),setOptions(opt);var img_css={border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0},$origimg=$(obj),img_mode=!0;if("IMG"==obj.tagName){if(0!=$origimg[0].width&&0!=$origimg[0].height)$origimg.width($origimg[0].width),$origimg.height($origimg[0].height);else{var tempImage=new Image;tempImage.src=$origimg[0].src,$origimg.width(tempImage.width),$origimg.height(tempImage.height)}var $img=$origimg.clone().removeAttr("id").css(img_css).show();$img.width($origimg.width()),$img.height($origimg.height()),$origimg.after($img).hide()}else $img=$origimg.css(img_css).show(),img_mode=!1,null===options.shade&&(options.shade=!0);presize($img,options.boxWidth,options.boxHeight);var boundx=$img.width(),boundy=$img.height(),$div=$("
").width(boundx).height(boundy).addClass(cssClass("holder")).css({position:"relative",backgroundColor:options.bgColor}).insertAfter($origimg).append($img);options.addClass&&$div.addClass(options.addClass);var $img2=$("
"),$img_holder=$("
").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),$hdl_holder=$("
").width("100%").height("100%").css("zIndex",320),$sel=$("
").css({position:"absolute",zIndex:600}).dblclick(function(){var c=Coords.getFixed();options.onDblClick.call(api,c)}).insertBefore($img).append($img_holder,$hdl_holder);img_mode&&($img2=$("").attr("src",$img.attr("src")).css(img_css).width(boundx).height(boundy),$img_holder.append($img2)),ie6mode&&$sel.css({overflowY:"hidden"});var xlimit,ylimit,xmin,ymin,xscale,yscale,btndown,animating,shift_down,bound=options.boundary,$trk=newTracker().width(boundx+2*bound).height(boundy+2*bound).css({position:"absolute",top:px(-bound),left:px(-bound),zIndex:290}).mousedown(newSelection),bgcolor=options.bgColor,bgopacity=options.bgOpacity;docOffset=getPos($img);var Touch=function(){function hasTouchSupport(){var i,support={},events=["touchstart","touchmove","touchend"],el=document.createElement("div");try{for(i=0;ix1+ox&&(ox-=ox+x1),0>y1+oy&&(oy-=oy+y1),y2+oy>boundy&&(oy+=boundy-(y2+oy)),x2+ox>boundx&&(ox+=boundx-(x2+ox)),x1+=ox,x2+=ox,y1+=oy,y2+=oy}function getCorner(ord){var c=getFixed();switch(ord){case"ne":return[c.x2,c.y];case"nw":return[c.x,c.y];case"se":return[c.x2,c.y2];case"sw":return[c.x,c.y2]}}function getFixed(){if(!options.aspectRatio)return getRect();var xx,yy,w,h,aspect=options.aspectRatio,min_x=options.minSize[0]/xscale,max_x=options.maxSize[0]/xscale,max_y=options.maxSize[1]/yscale,rw=x2-x1,rh=y2-y1,rwa=Math.abs(rw),rha=Math.abs(rh),real_ratio=rwa/rha;return 0===max_x&&(max_x=10*boundx),0===max_y&&(max_y=10*boundy),aspect>real_ratio?(yy=y2,w=rha*aspect,xx=0>rw?x1-w:w+x1,0>xx?(xx=0,h=Math.abs((xx-x1)/aspect),yy=0>rh?y1-h:h+y1):xx>boundx&&(xx=boundx,h=Math.abs((xx-x1)/aspect),yy=0>rh?y1-h:h+y1)):(xx=x2,h=rwa/aspect,yy=0>rh?y1-h:y1+h,0>yy?(yy=0,w=Math.abs((yy-y1)*aspect),xx=0>rw?x1-w:w+x1):yy>boundy&&(yy=boundy,w=Math.abs(yy-y1)*aspect,xx=0>rw?x1-w:w+x1)),xx>x1?(min_x>xx-x1?xx=x1+min_x:xx-x1>max_x&&(xx=x1+max_x),yy=yy>y1?y1+(xx-x1)/aspect:y1-(xx-x1)/aspect):x1>xx&&(min_x>x1-xx?xx=x1-min_x:x1-xx>max_x&&(xx=x1-max_x),yy=yy>y1?y1+(x1-xx)/aspect:y1-(x1-xx)/aspect),0>xx?(x1-=xx,xx=0):xx>boundx&&(x1-=xx-boundx,xx=boundx),0>yy?(y1-=yy,yy=0):yy>boundy&&(y1-=yy-boundy,yy=boundy),makeObj(flipCoords(x1,y1,xx,yy))}function rebound(p){return p[0]<0&&(p[0]=0),p[1]<0&&(p[1]=0),p[0]>boundx&&(p[0]=boundx),p[1]>boundy&&(p[1]=boundy),[Math.round(p[0]),Math.round(p[1])]}function flipCoords(x1,y1,x2,y2){var xa=x1,xb=x2,ya=y1,yb=y2;return x1>x2&&(xa=x2,xb=x1),y1>y2&&(ya=y2,yb=y1),[xa,ya,xb,yb]}function getRect(){var delta,xsize=x2-x1,ysize=y2-y1;return xlimit&&Math.abs(xsize)>xlimit&&(x2=xsize>0?x1+xlimit:x1-xlimit),ylimit&&Math.abs(ysize)>ylimit&&(y2=ysize>0?y1+ylimit:y1-ylimit),ymin/yscale&&Math.abs(ysize)0?y1+ymin/yscale:y1-ymin/yscale),xmin/xscale&&Math.abs(xsize)0?x1+xmin/xscale:x1-xmin/xscale),0>x1&&(x2-=x1,x1-=x1),0>y1&&(y2-=y1,y1-=y1),0>x2&&(x1-=x2,x2-=x2),0>y2&&(y1-=y2,y2-=y2),x2>boundx&&(delta=x2-boundx,x1-=delta,x2-=delta),y2>boundy&&(delta=y2-boundy,y1-=delta,y2-=delta),x1>boundx&&(delta=x1-boundy,y2-=delta,y1-=delta),y1>boundy&&(delta=y1-boundy,y2-=delta,y1-=delta),makeObj(flipCoords(x1,y1,x2,y2))}function makeObj(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}var ox,oy,x1=0,y1=0,x2=0,y2=0;return{flipCoords:flipCoords,setPressed:setPressed,setCurrent:setCurrent,getOffset:getOffset,moveOffset:moveOffset,getCorner:getCorner,getFixed:getFixed}}(),Shade=function(){function resizeShades(w,h){shades.left.css({height:px(h)}),shades.right.css({height:px(h)})}function updateAuto(){return updateShade(Coords.getFixed())}function updateShade(c){shades.top.css({left:px(c.x),width:px(c.w),height:px(c.y)}),shades.bottom.css({top:px(c.y2),left:px(c.x),width:px(c.w),height:px(boundy-c.y2)}),shades.right.css({left:px(c.x2),width:px(boundx-c.x2)}),shades.left.css({width:px(c.x)})}function createShade(){return $("
").css({position:"absolute",backgroundColor:options.shadeColor||options.bgColor}).appendTo(holder)}function enableShade(){enabled||(enabled=!0,holder.insertBefore($img),updateAuto(),Selection.setBgOpacity(1,0,1),$img2.hide(),setBgColor(options.shadeColor||options.bgColor,1),Selection.isAwake()?setOpacity(options.bgOpacity,1):setOpacity(1,1))}function setBgColor(color,now){colorChangeMacro(getShades(),color,now)}function disableShade(){enabled&&(holder.remove(),$img2.show(),enabled=!1,Selection.isAwake()?Selection.setBgOpacity(options.bgOpacity,1,1):(Selection.setBgOpacity(1,1,1),Selection.disableHandles()),colorChangeMacro($div,0,1))}function setOpacity(opacity,now){enabled&&(options.bgFade&&!now?holder.animate({opacity:1-opacity},{queue:!1,duration:options.fadeTime}):holder.css({opacity:1-opacity}))}function refreshAll(){options.shade?enableShade():disableShade(),Selection.isAwake()&&setOpacity(options.bgOpacity)}function getShades(){return holder.children()}var enabled=!1,holder=$("
").css({position:"absolute",zIndex:240,opacity:0}),shades={top:createShade(),left:createShade().height(boundy),right:createShade().height(boundy),bottom:createShade()};return{update:updateAuto,updateRaw:updateShade,getShades:getShades,setBgColor:setBgColor,enable:enableShade,disable:disableShade,resize:resizeShades,refresh:refreshAll,opacity:setOpacity}}(),Selection=function(){function insertBorder(type){var jq=$("
").css({position:"absolute",opacity:options.borderOpacity}).addClass(cssClass(type));return $img_holder.append(jq),jq}function dragDiv(ord,zi){var jq=$("
").mousedown(createDragger(ord)).css({cursor:ord+"-resize",position:"absolute",zIndex:zi}).addClass("ord-"+ord);return Touch.support&&jq.bind("touchstart.jcrop",Touch.createDragger(ord)),$hdl_holder.append(jq),jq}function insertHandle(ord){var hs=options.handleSize,div=dragDiv(ord,hdep++).css({opacity:options.handleOpacity}).addClass(cssClass("handle"));return hs&&div.width(hs).height(hs),div}function insertDragbar(ord){return dragDiv(ord,hdep++).addClass("jcrop-dragbar")}function createDragbars(li){var i;for(i=0;i').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),$keywrap=$("
").css({position:"absolute",overflow:"hidden"}).append($keymgr);return options.keySupport&&($keymgr.keydown(parseKey).blur(onBlur),ie6mode||!options.fixedSupport?($keymgr.css({position:"absolute",left:"-20px"}),$keywrap.append($keymgr).insertBefore($img)):$keymgr.insertBefore($img)),{watchKeys:watchKeys}}();Touch.support&&$trk.bind("touchstart.jcrop",Touch.newSelection),$hdl_holder.hide(),interfaceUpdate(!0);var api={setImage:setImage,animateTo:animateTo,setSelect:setSelect,setOptions:setOptionsNew,tellSelect:tellSelect,tellScaled:tellScaled,setClass:setClass,disable:disableCrop,enable:enableCrop,cancel:cancelCrop,release:Selection.release,destroy:destroy,focus:KeyManager.watchKeys,getBounds:function(){return[boundx*xscale,boundy*yscale]},getWidgetSize:function(){return[boundx,boundy]},getScaleFactor:function(){return[xscale,yscale]},getOptions:function(){return options},ui:{holder:$div,selection:$sel}};return is_msie&&$div.bind("selectstart",function(){return!1}),$origimg.data("Jcrop",api),api},$.fn.Jcrop=function(options,callback){var api;return this.each(function(){if($(this).data("Jcrop")){if("api"===options)return $(this).data("Jcrop");$(this).data("Jcrop").setOptions(options)}else"IMG"==this.tagName?$.Jcrop.Loader(this,function(){$(this).css({display:"block",visibility:"hidden"}),api=$.Jcrop(this,options),$.isFunction(callback)&&callback.call(api)}):($(this).css({display:"block",visibility:"hidden"}),api=$.Jcrop(this,options),$.isFunction(callback)&&callback.call(api))}),this},$.Jcrop.Loader=function(imgobj,success,error){function completeCheck(){img.complete?($img.unbind(".jcloader"),$.isFunction(success)&&success.call(img)):window.setTimeout(completeCheck,50)}var $img=$(imgobj),img=$img[0];$img.bind("load.jcloader",completeCheck).bind("error.jcloader",function(){$img.unbind(".jcloader"),$.isFunction(error)&&error.call(img)}),img.complete&&$.isFunction(success)&&($img.unbind(".jcloader"),success.call(img))},$.Jcrop.defaults={allowSelect:!0,allowMove:!0,allowResize:!0,trackDocument:!0,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:.6,bgFade:!1,borderOpacity:.4,handleOpacity:.5,handleSize:null,aspectRatio:0,keySupport:!0,createHandles:["n","s","e","w","nw","ne","se","sw"],createDragbars:["n","s","e","w"],createBorders:["n","s","e","w"],drawBorders:!0,dragEdges:!0,fixedSupport:!0,touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}}}(jQuery); diff --git a/source/vendor/jcrop/js/jquery.color.js b/source/vendor/jcrop/js/jquery.color.js new file mode 100644 index 00000000..3ca61fb6 --- /dev/null +++ b/source/vendor/jcrop/js/jquery.color.js @@ -0,0 +1,661 @@ +/*! + * jQuery Color Animations v2.0pre + * http://jquery.org/ + * + * Copyright 2011 John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + */ + +(function( jQuery, undefined ){ + var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color outlineColor".split(" "), + + // plusequals test for += 100 -= 100 + rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, + // a set of RE's that can match strings and generate color tuples. + stringParsers = [{ + re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ], + execResult[ 3 ], + execResult[ 4 ] + ]; + } + }, { + re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + 2.55 * execResult[1], + 2.55 * execResult[2], + 2.55 * execResult[3], + execResult[ 4 ] + ]; + } + }, { + re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ], 16 ) + ]; + } + }, { + re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) + ]; + } + }, { + re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, + space: "hsla", + parse: function( execResult ) { + return [ + execResult[1], + execResult[2] / 100, + execResult[3] / 100, + execResult[4] + ]; + } + }], + + // jQuery.Color( ) + color = jQuery.Color = function( color, green, blue, alpha ) { + return new jQuery.Color.fn.parse( color, green, blue, alpha ); + }, + spaces = { + rgba: { + cache: "_rgba", + props: { + red: { + idx: 0, + type: "byte", + empty: true + }, + green: { + idx: 1, + type: "byte", + empty: true + }, + blue: { + idx: 2, + type: "byte", + empty: true + }, + alpha: { + idx: 3, + type: "percent", + def: 1 + } + } + }, + hsla: { + cache: "_hsla", + props: { + hue: { + idx: 0, + type: "degrees", + empty: true + }, + saturation: { + idx: 1, + type: "percent", + empty: true + }, + lightness: { + idx: 2, + type: "percent", + empty: true + } + } + } + }, + propTypes = { + "byte": { + floor: true, + min: 0, + max: 255 + }, + "percent": { + min: 0, + max: 1 + }, + "degrees": { + mod: 360, + floor: true + } + }, + rgbaspace = spaces.rgba.props, + support = color.support = {}, + + // colors = jQuery.Color.names + colors, + + // local aliases of functions called often + each = jQuery.each; + + spaces.hsla.props.alpha = rgbaspace.alpha; + + function clamp( value, prop, alwaysAllowEmpty ) { + var type = propTypes[ prop.type ] || {}, + allowEmpty = prop.empty || alwaysAllowEmpty; + + if ( allowEmpty && value == null ) { + return null; + } + if ( prop.def && value == null ) { + return prop.def; + } + if ( type.floor ) { + value = ~~value; + } else { + value = parseFloat( value ); + } + if ( value == null || isNaN( value ) ) { + return prop.def; + } + if ( type.mod ) { + value = value % type.mod; + // -10 -> 350 + return value < 0 ? type.mod + value : value; + } + + // for now all property types without mod have min and max + return type.min > value ? type.min : type.max < value ? type.max : value; + } + + function stringParse( string ) { + var inst = color(), + rgba = inst._rgba = []; + + string = string.toLowerCase(); + + each( stringParsers, function( i, parser ) { + var match = parser.re.exec( string ), + values = match && parser.parse( match ), + parsed, + spaceName = parser.space || "rgba", + cache = spaces[ spaceName ].cache; + + + if ( values ) { + parsed = inst[ spaceName ]( values ); + + // if this was an rgba parse the assignment might happen twice + // oh well.... + inst[ cache ] = parsed[ cache ]; + rgba = inst._rgba = parsed._rgba; + + // exit each( stringParsers ) here because we matched + return false; + } + }); + + // Found a stringParser that handled it + if ( rgba.length !== 0 ) { + + // if this came from a parsed string, force "transparent" when alpha is 0 + // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) + if ( Math.max.apply( Math, rgba ) === 0 ) { + jQuery.extend( rgba, colors.transparent ); + } + return inst; + } + + // named colors / default - filter back through parse function + if ( string = colors[ string ] ) { + return string; + } + } + + color.fn = color.prototype = { + constructor: color, + parse: function( red, green, blue, alpha ) { + if ( red === undefined ) { + this._rgba = [ null, null, null, null ]; + return this; + } + if ( red instanceof jQuery || red.nodeType ) { + red = red instanceof jQuery ? red.css( green ) : jQuery( red ).css( green ); + green = undefined; + } + + var inst = this, + type = jQuery.type( red ), + rgba = this._rgba = [], + source; + + // more than 1 argument specified - assume ( red, green, blue, alpha ) + if ( green !== undefined ) { + red = [ red, green, blue, alpha ]; + type = "array"; + } + + if ( type === "string" ) { + return this.parse( stringParse( red ) || colors._default ); + } + + if ( type === "array" ) { + each( rgbaspace, function( key, prop ) { + rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); + }); + return this; + } + + if ( type === "object" ) { + if ( red instanceof color ) { + each( spaces, function( spaceName, space ) { + if ( red[ space.cache ] ) { + inst[ space.cache ] = red[ space.cache ].slice(); + } + }); + } else { + each( spaces, function( spaceName, space ) { + each( space.props, function( key, prop ) { + var cache = space.cache; + + // if the cache doesn't exist, and we know how to convert + if ( !inst[ cache ] && space.to ) { + + // if the value was null, we don't need to copy it + // if the key was alpha, we don't need to copy it either + if ( red[ key ] == null || key === "alpha") { + return; + } + inst[ cache ] = space.to( inst._rgba ); + } + + // this is the only case where we allow nulls for ALL properties. + // call clamp with alwaysAllowEmpty + inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); + }); + }); + } + return this; + } + }, + is: function( compare ) { + var is = color( compare ), + same = true, + myself = this; + + each( spaces, function( _, space ) { + var isCache = is[ space.cache ], + localCache; + if (isCache) { + localCache = myself[ space.cache ] || space.to && space.to( myself._rgba ) || []; + each( space.props, function( _, prop ) { + if ( isCache[ prop.idx ] != null ) { + same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); + return same; + } + }); + } + return same; + }); + return same; + }, + _space: function() { + var used = [], + inst = this; + each( spaces, function( spaceName, space ) { + if ( inst[ space.cache ] ) { + used.push( spaceName ); + } + }); + return used.pop(); + }, + transition: function( other, distance ) { + var end = color( other ), + spaceName = end._space(), + space = spaces[ spaceName ], + start = this[ space.cache ] || space.to( this._rgba ), + result = start.slice(); + + end = end[ space.cache ]; + each( space.props, function( key, prop ) { + var index = prop.idx, + startValue = start[ index ], + endValue = end[ index ], + type = propTypes[ prop.type ] || {}; + + // if null, don't override start value + if ( endValue === null ) { + return; + } + // if null - use end + if ( startValue === null ) { + result[ index ] = endValue; + } else { + if ( type.mod ) { + if ( endValue - startValue > type.mod / 2 ) { + startValue += type.mod; + } else if ( startValue - endValue > type.mod / 2 ) { + startValue -= type.mod; + } + } + result[ prop.idx ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); + } + }); + return this[ spaceName ]( result ); + }, + blend: function( opaque ) { + // if we are already opaque - return ourself + if ( this._rgba[ 3 ] === 1 ) { + return this; + } + + var rgb = this._rgba.slice(), + a = rgb.pop(), + blend = color( opaque )._rgba; + + return color( jQuery.map( rgb, function( v, i ) { + return ( 1 - a ) * blend[ i ] + a * v; + })); + }, + toRgbaString: function() { + var prefix = "rgba(", + rgba = jQuery.map( this._rgba, function( v, i ) { + return v == null ? ( i > 2 ? 1 : 0 ) : v; + }); + + if ( rgba[ 3 ] === 1 ) { + rgba.pop(); + prefix = "rgb("; + } + + return prefix + rgba.join(",") + ")"; + }, + toHslaString: function() { + var prefix = "hsla(", + hsla = jQuery.map( this.hsla(), function( v, i ) { + if ( v == null ) { + v = i > 2 ? 1 : 0; + } + + // catch 1 and 2 + if ( i && i < 3 ) { + v = Math.round( v * 100 ) + "%"; + } + return v; + }); + + if ( hsla[ 3 ] === 1 ) { + hsla.pop(); + prefix = "hsl("; + } + return prefix + hsla.join(",") + ")"; + }, + toHexString: function( includeAlpha ) { + var rgba = this._rgba.slice(), + alpha = rgba.pop(); + + if ( includeAlpha ) { + rgba.push( ~~( alpha * 255 ) ); + } + + return "#" + jQuery.map( rgba, function( v, i ) { + + // default to 0 when nulls exist + v = ( v || 0 ).toString( 16 ); + return v.length === 1 ? "0" + v : v; + }).join(""); + }, + toString: function() { + return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); + } + }; + color.fn.parse.prototype = color.fn; + + // hsla conversions adapted from: + // http://www.google.com/codesearch/p#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/inspector/front-end/Color.js&d=7&l=193 + + function hue2rgb( p, q, h ) { + h = ( h + 1 ) % 1; + if ( h * 6 < 1 ) { + return p + (q - p) * 6 * h; + } + if ( h * 2 < 1) { + return q; + } + if ( h * 3 < 2 ) { + return p + (q - p) * ((2/3) - h) * 6; + } + return p; + } + + spaces.hsla.to = function ( rgba ) { + if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { + return [ null, null, null, rgba[ 3 ] ]; + } + var r = rgba[ 0 ] / 255, + g = rgba[ 1 ] / 255, + b = rgba[ 2 ] / 255, + a = rgba[ 3 ], + max = Math.max( r, g, b ), + min = Math.min( r, g, b ), + diff = max - min, + add = max + min, + l = add * 0.5, + h, s; + + if ( min === max ) { + h = 0; + } else if ( r === max ) { + h = ( 60 * ( g - b ) / diff ) + 360; + } else if ( g === max ) { + h = ( 60 * ( b - r ) / diff ) + 120; + } else { + h = ( 60 * ( r - g ) / diff ) + 240; + } + + if ( l === 0 || l === 1 ) { + s = l; + } else if ( l <= 0.5 ) { + s = diff / add; + } else { + s = diff / ( 2 - add ); + } + return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; + }; + + spaces.hsla.from = function ( hsla ) { + if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { + return [ null, null, null, hsla[ 3 ] ]; + } + var h = hsla[ 0 ] / 360, + s = hsla[ 1 ], + l = hsla[ 2 ], + a = hsla[ 3 ], + q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, + p = 2 * l - q, + r, g, b; + + return [ + Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), + Math.round( hue2rgb( p, q, h ) * 255 ), + Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), + a + ]; + }; + + + each( spaces, function( spaceName, space ) { + var props = space.props, + cache = space.cache, + to = space.to, + from = space.from; + + // makes rgba() and hsla() + color.fn[ spaceName ] = function( value ) { + + // generate a cache for this space if it doesn't exist + if ( to && !this[ cache ] ) { + this[ cache ] = to( this._rgba ); + } + if ( value === undefined ) { + return this[ cache ].slice(); + } + + var type = jQuery.type( value ), + arr = ( type === "array" || type === "object" ) ? value : arguments, + local = this[ cache ].slice(), + ret; + + each( props, function( key, prop ) { + var val = arr[ type === "object" ? key : prop.idx ]; + if ( val == null ) { + val = local[ prop.idx ]; + } + local[ prop.idx ] = clamp( val, prop ); + }); + + if ( from ) { + ret = color( from( local ) ); + ret[ cache ] = local; + return ret; + } else { + return color( local ); + } + }; + + // makes red() green() blue() alpha() hue() saturation() lightness() + each( props, function( key, prop ) { + // alpha is included in more than one space + if ( color.fn[ key ] ) { + return; + } + color.fn[ key ] = function( value ) { + var vtype = jQuery.type( value ), + fn = ( key === 'alpha' ? ( this._hsla ? 'hsla' : 'rgba' ) : spaceName ), + local = this[ fn ](), + cur = local[ prop.idx ], + match; + + if ( vtype === "undefined" ) { + return cur; + } + + if ( vtype === "function" ) { + value = value.call( this, cur ); + vtype = jQuery.type( value ); + } + if ( value == null && prop.empty ) { + return this; + } + if ( vtype === "string" ) { + match = rplusequals.exec( value ); + if ( match ) { + value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); + } + } + local[ prop.idx ] = value; + return this[ fn ]( local ); + }; + }); + }); + + // add .fx.step functions + each( stepHooks, function( i, hook ) { + jQuery.cssHooks[ hook ] = { + set: function( elem, value ) { + var parsed, backgroundColor, curElem; + + if ( jQuery.type( value ) !== 'string' || ( parsed = stringParse( value ) ) ) + { + value = color( parsed || value ); + if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { + curElem = hook === "backgroundColor" ? elem.parentNode : elem; + do { + backgroundColor = jQuery.curCSS( curElem, "backgroundColor" ); + } while ( + ( backgroundColor === "" || backgroundColor === "transparent" ) && + ( curElem = curElem.parentNode ) && + curElem.style + ); + + value = value.blend( backgroundColor && backgroundColor !== "transparent" ? + backgroundColor : + "_default" ); + } + + value = value.toRgbaString(); + } + elem.style[ hook ] = value; + } + }; + jQuery.fx.step[ hook ] = function( fx ) { + if ( !fx.colorInit ) { + fx.start = color( fx.elem, hook ); + fx.end = color( fx.end ); + fx.colorInit = true; + } + jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); + }; + }); + + // detect rgba support + jQuery(function() { + var div = document.createElement( "div" ), + div_style = div.style; + + div_style.cssText = "background-color:rgba(1,1,1,.5)"; + support.rgba = div_style.backgroundColor.indexOf( "rgba" ) > -1; + }); + + // Some named colors to work with + // From Interface by Stefan Petre + // http://interface.eyecon.ro/ + colors = jQuery.Color.names = { + aqua: "#00ffff", + azure: "#f0ffff", + beige: "#f5f5dc", + black: "#000000", + blue: "#0000ff", + brown: "#a52a2a", + cyan: "#00ffff", + darkblue: "#00008b", + darkcyan: "#008b8b", + darkgrey: "#a9a9a9", + darkgreen: "#006400", + darkkhaki: "#bdb76b", + darkmagenta: "#8b008b", + darkolivegreen: "#556b2f", + darkorange: "#ff8c00", + darkorchid: "#9932cc", + darkred: "#8b0000", + darksalmon: "#e9967a", + darkviolet: "#9400d3", + fuchsia: "#ff00ff", + gold: "#ffd700", + green: "#008000", + indigo: "#4b0082", + khaki: "#f0e68c", + lightblue: "#add8e6", + lightcyan: "#e0ffff", + lightgreen: "#90ee90", + lightgrey: "#d3d3d3", + lightpink: "#ffb6c1", + lightyellow: "#ffffe0", + lime: "#00ff00", + magenta: "#ff00ff", + maroon: "#800000", + navy: "#000080", + olive: "#808000", + orange: "#ffa500", + pink: "#ffc0cb", + purple: "#800080", + violet: "#800080", + red: "#ff0000", + silver: "#c0c0c0", + white: "#ffffff", + yellow: "#ffff00", + transparent: [ null, null, null, 0 ], + _default: "#ffffff" + }; +})( jQuery ); diff --git a/source/vendor/jcrop/js/jquery.min.js b/source/vendor/jcrop/js/jquery.min.js new file mode 100644 index 00000000..50d1b22f --- /dev/null +++ b/source/vendor/jcrop/js/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */(function(e,t){"use strict";function n(e){var t=e.length,n=st.type(e);return st.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e){var t=Tt[e]={};return st.each(e.match(lt)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(st.acceptData(e)){var o,a,s=st.expando,u="string"==typeof n,l=e.nodeType,c=l?st.cache:e,f=l?e[s]:e[s]&&s;if(f&&c[f]&&(i||c[f].data)||!u||r!==t)return f||(l?e[s]=f=K.pop()||st.guid++:f=s),c[f]||(c[f]={},l||(c[f].toJSON=st.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[f]=st.extend(c[f],n):c[f].data=st.extend(c[f].data,n)),o=c[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[st.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[st.camelCase(n)])):a=o,a}}function o(e,t,n){if(st.acceptData(e)){var r,i,o,a=e.nodeType,u=a?st.cache:e,l=a?e[st.expando]:st.expando;if(u[l]){if(t&&(r=n?u[l]:u[l].data)){st.isArray(t)?t=t.concat(st.map(t,st.camelCase)):t in r?t=[t]:(t=st.camelCase(t),t=t in r?[t]:t.split(" "));for(i=0,o=t.length;o>i;i++)delete r[t[i]];if(!(n?s:st.isEmptyObject)(r))return}(n||(delete u[l].data,s(u[l])))&&(a?st.cleanData([e],!0):st.support.deleteExpando||u!=u.window?delete u[l]:u[l]=null)}}}function a(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(Nt,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:wt.test(r)?st.parseJSON(r):r}catch(o){}st.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!st.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function f(e,t,n){if(t=t||0,st.isFunction(t))return st.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return st.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=st.grep(e,function(e){return 1===e.nodeType});if(Wt.test(t))return st.filter(t,r,!n);t=st.filter(t,r)}return st.grep(e,function(e){return st.inArray(e,t)>=0===n})}function p(e){var t=zt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function d(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function h(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function g(e){var t=nn.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function m(e,t){for(var n,r=0;null!=(n=e[r]);r++)st._data(n,"globalEval",!t||st._data(t[r],"globalEval"))}function y(e,t){if(1===t.nodeType&&st.hasData(e)){var n,r,i,o=st._data(e),a=st._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)st.event.add(t,n,s[n][r])}a.data&&(a.data=st.extend({},a.data))}}function v(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!st.support.noCloneEvent&&t[st.expando]){r=st._data(t);for(i in r.events)st.removeEvent(t,i,r.handle);t.removeAttribute(st.expando)}"script"===n&&t.text!==e.text?(h(t).text=e.text,g(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),st.support.html5Clone&&e.innerHTML&&!st.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Zt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function b(e,n){var r,i,o=0,a=e.getElementsByTagName!==t?e.getElementsByTagName(n||"*"):e.querySelectorAll!==t?e.querySelectorAll(n||"*"):t;if(!a)for(a=[],r=e.childNodes||e;null!=(i=r[o]);o++)!n||st.nodeName(i,n)?a.push(i):st.merge(a,b(i,n));return n===t||n&&st.nodeName(e,n)?st.merge([e],a):a}function x(e){Zt.test(e.type)&&(e.defaultChecked=e.checked)}function T(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Nn.length;i--;)if(t=Nn[i]+n,t in e)return t;return r}function w(e,t){return e=t||e,"none"===st.css(e,"display")||!st.contains(e.ownerDocument,e)}function N(e,t){for(var n,r=[],i=0,o=e.length;o>i;i++)n=e[i],n.style&&(r[i]=st._data(n,"olddisplay"),t?(r[i]||"none"!==n.style.display||(n.style.display=""),""===n.style.display&&w(n)&&(r[i]=st._data(n,"olddisplay",S(n.nodeName)))):r[i]||w(n)||st._data(n,"olddisplay",st.css(n,"display")));for(i=0;o>i;i++)n=e[i],n.style&&(t&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=t?r[i]||"":"none"));return e}function C(e,t,n){var r=mn.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function k(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=st.css(e,n+wn[o],!0,i)),r?("content"===n&&(a-=st.css(e,"padding"+wn[o],!0,i)),"margin"!==n&&(a-=st.css(e,"border"+wn[o]+"Width",!0,i))):(a+=st.css(e,"padding"+wn[o],!0,i),"padding"!==n&&(a+=st.css(e,"border"+wn[o]+"Width",!0,i)));return a}function E(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=ln(e),a=st.support.boxSizing&&"border-box"===st.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=un(e,t,o),(0>i||null==i)&&(i=e.style[t]),yn.test(i))return i;r=a&&(st.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+k(e,t,n||(a?"border":"content"),r,o)+"px"}function S(e){var t=V,n=bn[e];return n||(n=A(e,t),"none"!==n&&n||(cn=(cn||st("