aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/build.xml16
-rwxr-xr-xphpBB/bin/phpbbcli.php2
-rw-r--r--phpBB/common.php2
-rw-r--r--phpBB/composer.json6
-rw-r--r--phpBB/composer.lock280
-rw-r--r--phpBB/config/default/container/services_twig.yml4
-rw-r--r--phpBB/config/installer/container/services.yml3
-rw-r--r--phpBB/includes/bbcode.php1
-rw-r--r--phpBB/includes/compatibility_globals.php2
-rw-r--r--phpBB/includes/functions_messenger.php1
-rw-r--r--phpBB/phpbb/di/container_builder.php8
-rw-r--r--phpBB/phpbb/di/extension/core.php8
-rw-r--r--phpBB/phpbb/install/helper/container_factory.php3
-rw-r--r--phpBB/phpbb/template/twig/environment.php21
-rw-r--r--tests/controller/common_helper_route.php3
-rw-r--r--tests/extension/metadata_manager_test.php3
-rw-r--r--tests/template/template_allfolder_test.php3
-rw-r--r--tests/template/template_events_test.php3
-rw-r--r--tests/template/template_includecss_test.php3
-rw-r--r--tests/template/template_test_case.php3
-rw-r--r--tests/template/template_test_case_with_tree.php3
-rw-r--r--tests/test_framework/phpbb_functional_test_case.php13
-rw-r--r--tests/test_framework/phpbb_ui_test_case.php13
23 files changed, 354 insertions, 50 deletions
diff --git a/build/build.xml b/build/build.xml
index 7a244e48d9..205286c236 100644
--- a/build/build.xml
+++ b/build/build.xml
@@ -443,6 +443,13 @@
<delete file="${dir}/vendor/symfony/http-kernel/README.md" />
<delete file="${dir}/vendor/symfony/http-kernel/phpunit.xml.dist" />
+ <delete dir="${dir}/vendor/symfony/proxy-manager-bridge/.git" />
+ <delete dir="${dir}/vendor/symfony/proxy-manager-bridge/Tests" />
+ <delete file="${dir}/vendor/symfony/proxy-manager-bridge/.gitignore" />
+ <delete file="${dir}/vendor/symfony/proxy-manager-bridge/CHANGELOG.md" />
+ <delete file="${dir}/vendor/symfony/proxy-manager-bridge/README.md" />
+ <delete file="${dir}/vendor/symfony/proxy-manager-bridge/phpunit.xml.dist" />
+
<delete dir="${dir}/vendor/symfony/routing/.git" />
<delete dir="${dir}/vendor/symfony/routing/Tests" />
<delete file="${dir}/vendor/symfony/routing/.gitignore" />
@@ -473,6 +480,15 @@
<delete file="${dir}/vendor/twig/twig/CHANGELOG" />
<delete file="${dir}/vendor/twig/twig/phpunit.xml.dist" />
<delete file="${dir}/vendor/twig/twig/README.rst" />
+
+ <delete file="${dir}/vendor/zendframework/zend-code/CONTRIBUTING.md" />
+ <delete file="${dir}/vendor/zendframework/zend-code/README.md" />
+
+ <delete file="${dir}/vendor/zendframework/zend-eventmanager/CONTRIBUTING.md" />
+ <delete file="${dir}/vendor/zendframework/zend-eventmanager/README.md" />
+
+ <delete file="${dir}/vendor/zendframework/zend-stdlib/CONTRIBUTING.md" />
+ <delete file="${dir}/vendor/zendframework/zend-stdlib/README.md" />
</target>
<target name="clean-diff-dir">
diff --git a/phpBB/bin/phpbbcli.php b/phpBB/bin/phpbbcli.php
index 72f1785931..804a7e09a0 100755
--- a/phpBB/bin/phpbbcli.php
+++ b/phpBB/bin/phpbbcli.php
@@ -68,6 +68,8 @@ $phpbb_container = $phpbb_container_builder->get_container();
$phpbb_container->get('request')->enable_super_globals();
require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx);
+register_compatibility_globals();
+
/* @var $user \phpbb\user */
$user = $phpbb_container->get('user');
$user->data['user_id'] = ANONYMOUS;
diff --git a/phpBB/common.php b/phpBB/common.php
index 31972fe521..d12966168b 100644
--- a/phpBB/common.php
+++ b/phpBB/common.php
@@ -134,6 +134,8 @@ $phpbb_class_loader_ext->set_cache($phpbb_container->get('cache.driver'));
require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx);
+register_compatibility_globals();
+
// Add own hook handler
require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
$phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('template', 'display')));
diff --git a/phpBB/composer.json b/phpBB/composer.json
index b0c9b57cb6..3fe1c90718 100644
--- a/phpBB/composer.json
+++ b/phpBB/composer.json
@@ -43,6 +43,7 @@
"symfony/finder": "2.8.*",
"symfony/http-foundation": "2.8.*",
"symfony/http-kernel": "2.8.*",
+ "symfony/proxy-manager-bridge": "2.8.*",
"symfony/routing": "2.8.*",
"symfony/twig-bridge": "2.8.*",
"symfony/yaml": "2.8.*",
@@ -64,5 +65,10 @@
"branch-alias": {
"dev-master": "3.2.x-dev"
}
+ },
+ "config": {
+ "platform": {
+ "php": "5.4"
+ }
}
}
diff --git a/phpBB/composer.lock b/phpBB/composer.lock
index 968447fd63..c6a0c3e854 100644
--- a/phpBB/composer.lock
+++ b/phpBB/composer.lock
@@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "9cbb41222e71eb86e0ef9118baafc691",
- "content-hash": "03a990fa2d088c89afe4824d2d53e873",
+ "hash": "b82925c74b2b12ce589973243a9fab68",
+ "content-hash": "fee6d87604f3053b51c0947ded841cfe",
"packages": [
{
"name": "bantu/ini-get-wrapper",
@@ -402,6 +402,69 @@
"time": "2015-08-21 11:40:30"
},
{
+ "name": "ocramius/proxy-manager",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Ocramius/ProxyManager.git",
+ "reference": "57e9272ec0e8deccf09421596e0e2252df440e11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/57e9272ec0e8deccf09421596e0e2252df440e11",
+ "reference": "57e9272ec0e8deccf09421596e0e2252df440e11",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "zendframework/zend-code": ">2.2.5,<3.0"
+ },
+ "require-dev": {
+ "ext-phar": "*",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "1.5.*"
+ },
+ "suggest": {
+ "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects",
+ "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)",
+ "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)",
+ "zendframework/zend-stdlib": "To use the hydrator proxy",
+ "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "ProxyManager\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies",
+ "homepage": "https://github.com/Ocramius/ProxyManager",
+ "keywords": [
+ "aop",
+ "lazy loading",
+ "proxy",
+ "proxy pattern",
+ "service proxies"
+ ],
+ "time": "2015-08-09 04:28:19"
+ },
+ {
"name": "paragonie/random_compat",
"version": "v1.2.2",
"source": {
@@ -1342,6 +1405,60 @@
"time": "2016-01-20 09:13:37"
},
{
+ "name": "symfony/proxy-manager-bridge",
+ "version": "v2.8.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/proxy-manager-bridge.git",
+ "reference": "713ed53cf1da3f41288c608d2d0ddb44d6b07304"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/713ed53cf1da3f41288c608d2d0ddb44d6b07304",
+ "reference": "713ed53cf1da3f41288c608d2d0ddb44d6b07304",
+ "shasum": ""
+ },
+ "require": {
+ "ocramius/proxy-manager": "~0.4|~1.0|~2.0",
+ "php": ">=5.3.9",
+ "symfony/dependency-injection": "~2.8|~3.0.0"
+ },
+ "require-dev": {
+ "symfony/config": "~2.3|~3.0.0"
+ },
+ "type": "symfony-bridge",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.8-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\ProxyManager\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony ProxyManager Bridge",
+ "homepage": "https://symfony.com",
+ "time": "2016-03-04 07:54:35"
+ },
+ {
"name": "symfony/routing",
"version": "v2.8.3",
"source": {
@@ -1606,6 +1723,160 @@
"templating"
],
"time": "2016-01-25 21:22:18"
+ },
+ {
+ "name": "zendframework/zend-code",
+ "version": "2.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/zendframework/zend-code.git",
+ "reference": "5d998f261ec2a55171c71da57a11622745680153"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/zendframework/zend-code/zipball/5d998f261ec2a55171c71da57a11622745680153",
+ "reference": "5d998f261ec2a55171c71da57a11622745680153",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.23",
+ "zendframework/zend-eventmanager": "~2.5"
+ },
+ "require-dev": {
+ "doctrine/common": ">=2.1",
+ "fabpot/php-cs-fixer": "1.7.*",
+ "phpunit/phpunit": "~4.0",
+ "zendframework/zend-stdlib": "~2.5",
+ "zendframework/zend-version": "~2.5"
+ },
+ "suggest": {
+ "doctrine/common": "Doctrine\\Common >=2.1 for annotation features",
+ "zendframework/zend-stdlib": "Zend\\Stdlib component"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev",
+ "dev-develop": "2.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Zend\\Code\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "provides facilities to generate arbitrary code using an object oriented interface",
+ "homepage": "https://github.com/zendframework/zend-code",
+ "keywords": [
+ "code",
+ "zf2"
+ ],
+ "time": "2015-06-03 15:31:59"
+ },
+ {
+ "name": "zendframework/zend-eventmanager",
+ "version": "2.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/zendframework/zend-eventmanager.git",
+ "reference": "d94a16039144936f107f906896349900fd634443"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/d94a16039144936f107f906896349900fd634443",
+ "reference": "d94a16039144936f107f906896349900fd634443",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.23",
+ "zendframework/zend-stdlib": "~2.5"
+ },
+ "require-dev": {
+ "fabpot/php-cs-fixer": "1.7.*",
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev",
+ "dev-develop": "2.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Zend\\EventManager\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "homepage": "https://github.com/zendframework/zend-eventmanager",
+ "keywords": [
+ "eventmanager",
+ "zf2"
+ ],
+ "time": "2015-06-03 15:32:01"
+ },
+ {
+ "name": "zendframework/zend-stdlib",
+ "version": "2.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/zendframework/zend-stdlib.git",
+ "reference": "cc8e90a60dd5d44b9730b77d07b97550091da1ae"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cc8e90a60dd5d44b9730b77d07b97550091da1ae",
+ "reference": "cc8e90a60dd5d44b9730b77d07b97550091da1ae",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.23"
+ },
+ "require-dev": {
+ "fabpot/php-cs-fixer": "1.7.*",
+ "phpunit/phpunit": "~4.0",
+ "zendframework/zend-config": "~2.5",
+ "zendframework/zend-eventmanager": "~2.5",
+ "zendframework/zend-filter": "~2.5",
+ "zendframework/zend-inputfilter": "~2.5",
+ "zendframework/zend-serializer": "~2.5",
+ "zendframework/zend-servicemanager": "~2.5"
+ },
+ "suggest": {
+ "zendframework/zend-eventmanager": "To support aggregate hydrator usage",
+ "zendframework/zend-filter": "To support naming strategy hydrator usage",
+ "zendframework/zend-serializer": "Zend\\Serializer component",
+ "zendframework/zend-servicemanager": "To support hydrator plugin manager usage"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev",
+ "dev-develop": "2.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Zend\\Stdlib\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "homepage": "https://github.com/zendframework/zend-stdlib",
+ "keywords": [
+ "stdlib",
+ "zf2"
+ ],
+ "time": "2015-06-03 15:32:03"
}
],
"packages-dev": [
@@ -3003,5 +3274,8 @@
"platform": {
"php": ">=5.4,<7.1"
},
- "platform-dev": []
+ "platform-dev": [],
+ "platform-overrides": {
+ "php": "5.4"
+ }
}
diff --git a/phpBB/config/default/container/services_twig.yml b/phpBB/config/default/container/services_twig.yml
index dc08d65e1a..3ca6d62c07 100644
--- a/phpBB/config/default/container/services_twig.yml
+++ b/phpBB/config/default/container/services_twig.yml
@@ -8,14 +8,16 @@ services:
- '@config'
- '@filesystem'
- '@path_helper'
- - '@service_container'
- '%core.template.cache_path%'
- '@ext.manager'
- '@template.twig.loader'
- []
+ calls:
+ - [setLexer, ['@template.twig.lexer']]
template.twig.lexer:
class: phpbb\template\twig\lexer
+ lazy: true
arguments:
- '@template.twig.environment'
diff --git a/phpBB/config/installer/container/services.yml b/phpBB/config/installer/container/services.yml
index 97fc1256fd..4c3ed3bfcb 100644
--- a/phpBB/config/installer/container/services.yml
+++ b/phpBB/config/installer/container/services.yml
@@ -81,11 +81,12 @@ services:
- '@config'
- '@filesystem'
- '@path_helper'
- - '@service_container'
- '%core.template.cache_path%'
- null
- '@template.twig.loader'
- []
+ calls:
+ - [setLexer, ['@template.twig.lexer']]
console.exception_subscriber:
class: phpbb\console\exception_subscriber
diff --git a/phpBB/includes/bbcode.php b/phpBB/includes/bbcode.php
index 4b2aa90ebc..e8492a82a3 100644
--- a/phpBB/includes/bbcode.php
+++ b/phpBB/includes/bbcode.php
@@ -154,7 +154,6 @@ class bbcode
$phpbb_container->get('config'),
$phpbb_container->get('filesystem'),
$phpbb_container->get('path_helper'),
- $phpbb_container,
$phpbb_container->getParameter('core.cache_dir'),
$phpbb_container->get('ext.manager'),
new \phpbb\template\twig\loader(
diff --git a/phpBB/includes/compatibility_globals.php b/phpBB/includes/compatibility_globals.php
index ae532c0f13..dc7a593693 100644
--- a/phpBB/includes/compatibility_globals.php
+++ b/phpBB/includes/compatibility_globals.php
@@ -75,5 +75,3 @@ function register_compatibility_globals()
/* @var $template \phpbb\template\template */
$template = $phpbb_container->get('template');
}
-
-register_compatibility_globals();
diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php
index f55b5e7ec3..3fa96afb29 100644
--- a/phpBB/includes/functions_messenger.php
+++ b/phpBB/includes/functions_messenger.php
@@ -639,7 +639,6 @@ class messenger
$phpbb_container->get('config'),
$phpbb_container->get('filesystem'),
$phpbb_container->get('path_helper'),
- $phpbb_container,
$phpbb_container->getParameter('core.cache_dir'),
$phpbb_container->get('ext.manager'),
new \phpbb\template\twig\loader(
diff --git a/phpBB/phpbb/di/container_builder.php b/phpBB/phpbb/di/container_builder.php
index b9284d04be..b6854673c2 100644
--- a/phpBB/phpbb/di/container_builder.php
+++ b/phpBB/phpbb/di/container_builder.php
@@ -14,6 +14,8 @@
namespace phpbb\di;
use phpbb\filesystem\filesystem;
+use Symfony\Bridge\ProxyManager\LazyProxy\Instantiator\RuntimeInstantiator;
+use Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\ProxyDumper;
use Symfony\Component\Config\ConfigCache;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -460,7 +462,10 @@ class container_builder
{
try
{
- $dumper = new PhpDumper($this->container);
+ $dumper = new PhpDumper($this->container);
+ $proxy_dumper = new ProxyDumper();
+ $dumper->setProxyDumper($proxy_dumper);
+
$cached_container_dump = $dumper->dump(array(
'class' => 'phpbb_cache_container',
'base_class' => 'Symfony\\Component\\DependencyInjection\\ContainerBuilder',
@@ -483,6 +488,7 @@ class container_builder
protected function create_container(array $extensions)
{
$container = new ContainerBuilder(new ParameterBag($this->get_core_parameters()));
+ $container->setProxyInstantiator(new RuntimeInstantiator());
$extensions_alias = array();
diff --git a/phpBB/phpbb/di/extension/core.php b/phpBB/phpbb/di/extension/core.php
index c48a80a558..29c0b0e44e 100644
--- a/phpBB/phpbb/di/extension/core.php
+++ b/phpBB/phpbb/di/extension/core.php
@@ -24,6 +24,8 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
*/
class core extends Extension
{
+ const TWIG_OPTIONS_POSITION = 6;
+
/**
* Config path
* @var string
@@ -71,7 +73,7 @@ class core extends Extension
// Set the Twig options if defined in the environment
$definition = $container->getDefinition('template.twig.environment');
- $twig_environment_options = $definition->getArgument(7);
+ $twig_environment_options = $definition->getArgument(static::TWIG_OPTIONS_POSITION);
if ($config['twig']['debug'])
{
$twig_environment_options['debug'] = true;
@@ -81,8 +83,8 @@ class core extends Extension
$twig_environment_options['auto_reload'] = true;
}
- // Replace the 8th argument, the options passed to the environment
- $definition->replaceArgument(7, $twig_environment_options);
+ // Replace the 7th argument, the options passed to the environment
+ $definition->replaceArgument(static::TWIG_OPTIONS_POSITION, $twig_environment_options);
if ($config['twig']['enable_debug_extension'])
{
diff --git a/phpBB/phpbb/install/helper/container_factory.php b/phpBB/phpbb/install/helper/container_factory.php
index 5cf4f8a283..9e372fecde 100644
--- a/phpBB/phpbb/install/helper/container_factory.php
+++ b/phpBB/phpbb/install/helper/container_factory.php
@@ -183,6 +183,9 @@ class container_factory
// Get compatibilty globals and constants
$this->update_helper->include_file('includes/compatibility_globals.' . $this->php_ext);
+
+ register_compatibility_globals();
+
$this->update_helper->include_file('includes/constants.' . $this->php_ext);
}
}
diff --git a/phpBB/phpbb/template/twig/environment.php b/phpBB/phpbb/template/twig/environment.php
index 56c85c8d71..179412a2e3 100644
--- a/phpBB/phpbb/template/twig/environment.php
+++ b/phpBB/phpbb/template/twig/environment.php
@@ -50,20 +50,18 @@ class environment extends \Twig_Environment
* @param \phpbb\config\config $phpbb_config The phpBB configuration
* @param \phpbb\filesystem\filesystem $filesystem
* @param \phpbb\path_helper $path_helper phpBB path helper
- * @param \Symfony\Component\DependencyInjection\ContainerInterface $container The dependency injection container
* @param string $cache_path The path to the cache directory
* @param \phpbb\extension\manager $extension_manager phpBB extension manager
* @param \Twig_LoaderInterface $loader Twig loader interface
* @param array $options Array of options to pass to Twig
*/
- public function __construct(\phpbb\config\config $phpbb_config, \phpbb\filesystem\filesystem $filesystem, \phpbb\path_helper $path_helper, \Symfony\Component\DependencyInjection\ContainerInterface $container, $cache_path, \phpbb\extension\manager $extension_manager = null, \Twig_LoaderInterface $loader = null, $options = array())
+ public function __construct(\phpbb\config\config $phpbb_config, \phpbb\filesystem\filesystem $filesystem, \phpbb\path_helper $path_helper, $cache_path, \phpbb\extension\manager $extension_manager = null, \Twig_LoaderInterface $loader = null, $options = array())
{
$this->phpbb_config = $phpbb_config;
$this->filesystem = $filesystem;
$this->phpbb_path_helper = $path_helper;
$this->extension_manager = $extension_manager;
- $this->container = $container;
$this->phpbb_root_path = $this->phpbb_path_helper->get_phpbb_root_path();
$this->web_root_path = $this->phpbb_path_helper->get_web_root_path();
@@ -77,25 +75,10 @@ class environment extends \Twig_Environment
'autoescape' => false,
), $options);
- return parent::__construct($loader, $options);
+ parent::__construct($loader, $options);
}
/**
- * {@inheritdoc}
- */
- public function getLexer()
- {
- if (null === $this->lexer)
- {
- $this->lexer = $this->container->get('template.twig.lexer');
- $this->lexer->set_environment($this);
- }
-
- return $this->lexer;
- }
-
-
- /**
* Get the list of enabled phpBB extensions
*
* Used in EVENT node
diff --git a/tests/controller/common_helper_route.php b/tests/controller/common_helper_route.php
index 9d3d81963b..367c15a667 100644
--- a/tests/controller/common_helper_route.php
+++ b/tests/controller/common_helper_route.php
@@ -111,7 +111,6 @@ abstract class phpbb_controller_common_helper_route extends phpbb_test_case
$this->config,
$this->filesystem,
$this->phpbb_path_helper,
- $container,
$cache_path,
null,
$loader,
@@ -123,7 +122,7 @@ abstract class phpbb_controller_common_helper_route extends phpbb_test_case
)
);
$this->template = new phpbb\template\twig\twig($this->phpbb_path_helper, $this->config, $context, $twig, $cache_path, $this->user, array(new \phpbb\template\twig\extension($context, $this->user)));
- $container->set('template.twig.lexer', new \phpbb\template\twig\lexer($twig));
+ $twig->setLexer(new \phpbb\template\twig\lexer($twig));
$this->extension_manager = new phpbb_mock_extension_manager(
dirname(__FILE__) . '/',
diff --git a/tests/extension/metadata_manager_test.php b/tests/extension/metadata_manager_test.php
index 53bd3d109b..19b99ee0ce 100644
--- a/tests/extension/metadata_manager_test.php
+++ b/tests/extension/metadata_manager_test.php
@@ -65,7 +65,6 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case
$this->config,
$filesystem,
$phpbb_path_helper,
- $container,
$cache_path,
null,
$loader,
@@ -112,7 +111,7 @@ class phpbb_extension_metadata_manager_test extends phpbb_database_test_case
$this->user = new \phpbb\user($lang, '\phpbb\datetime');
$this->template = new phpbb\template\twig\twig($phpbb_path_helper, $this->config, $context, $twig, $cache_path, $this->user, array(new \phpbb\template\twig\extension($context, $this->user)));
- $container->set('template.twig.lexer', new \phpbb\template\twig\lexer($twig));
+ $twig->setLexer(new \phpbb\template\twig\lexer($twig));
}
// Should fail from missing composer.json
diff --git a/tests/template/template_allfolder_test.php b/tests/template/template_allfolder_test.php
index 9a0f1f512e..9a0a42fabd 100644
--- a/tests/template/template_allfolder_test.php
+++ b/tests/template/template_allfolder_test.php
@@ -64,7 +64,6 @@ class phpbb_template_allfolder_test extends phpbb_template_template_test_case
$config,
$filesystem,
$path_helper,
- $container,
$cache_path,
$this->extension_manager,
$loader,
@@ -76,7 +75,7 @@ class phpbb_template_allfolder_test extends phpbb_template_template_test_case
)
);
$this->template = new \phpbb\template\twig\twig($path_helper, $config, $context, $twig, $cache_path, $this->user, array(new \phpbb\template\twig\extension($context, $this->user)), $this->extension_manager);
- $container->set('template.twig.lexer', new \phpbb\template\twig\lexer($twig));
+ $twig->setLexer(new \phpbb\template\twig\lexer($twig));
$this->template_path = $this->test_path . '/templates';
$this->ext_template_path = 'tests/extension/ext/vendor4/bar/styles/all/template';
diff --git a/tests/template/template_events_test.php b/tests/template/template_events_test.php
index 54e08652a1..e245c90aee 100644
--- a/tests/template/template_events_test.php
+++ b/tests/template/template_events_test.php
@@ -158,7 +158,6 @@ Zeta test event in all',
$config,
$filesystem,
$path_helper,
- $container,
$cache_path,
$this->extension_manager,
$loader,
@@ -170,7 +169,7 @@ Zeta test event in all',
)
);
$this->template = new \phpbb\template\twig\twig($path_helper, $config, $context, $twig, $cache_path, $this->user, array(new \phpbb\template\twig\extension($context, $this->user)), $this->extension_manager);
- $container->set('template.twig.lexer', new \phpbb\template\twig\lexer($twig));
+ $twig->setLexer(new \phpbb\template\twig\lexer($twig));
$this->template->set_custom_style(((!empty($style_names)) ? $style_names : 'silver'), array($this->template_path));
}
diff --git a/tests/template/template_includecss_test.php b/tests/template/template_includecss_test.php
index ac62e820ae..764652c9c2 100644
--- a/tests/template/template_includecss_test.php
+++ b/tests/template/template_includecss_test.php
@@ -50,7 +50,6 @@ class phpbb_template_template_includecss_test extends phpbb_template_template_te
$config,
$filesystem,
$this->phpbb_path_helper,
- $container,
$cache_path,
null,
$loader,
@@ -80,7 +79,7 @@ class phpbb_template_template_includecss_test extends phpbb_template_template_te
)
)
);
- $container->set('template.twig.lexer', new \phpbb\template\twig\lexer($twig));
+ $twig->setLexer(new \phpbb\template\twig\lexer($twig));
$this->template->set_custom_style('tests', array($this->template_path, $this->parent_template_path));
}
diff --git a/tests/template/template_test_case.php b/tests/template/template_test_case.php
index cda0623dcb..e52d3b76dd 100644
--- a/tests/template/template_test_case.php
+++ b/tests/template/template_test_case.php
@@ -102,7 +102,6 @@ class phpbb_template_template_test_case extends phpbb_test_case
$config,
$filesystem,
$path_helper,
- $container,
$cache_path,
null,
$loader,
@@ -114,7 +113,7 @@ class phpbb_template_template_test_case extends phpbb_test_case
)
);
$this->template = new phpbb\template\twig\twig($path_helper, $config, $context, $twig, $cache_path, $this->user, array(new \phpbb\template\twig\extension($context, $this->user)));
- $container->set('template.twig.lexer', new \phpbb\template\twig\lexer($twig));
+ $twig->setLexer(new \phpbb\template\twig\lexer($twig));
$this->template->set_custom_style('tests', $this->template_path);
}
diff --git a/tests/template/template_test_case_with_tree.php b/tests/template/template_test_case_with_tree.php
index bf5de6b85e..ff35d16120 100644
--- a/tests/template/template_test_case_with_tree.php
+++ b/tests/template/template_test_case_with_tree.php
@@ -45,7 +45,6 @@ class phpbb_template_template_test_case_with_tree extends phpbb_template_templat
$config,
$filesystem,
$this->phpbb_path_helper,
- $container,
$cache_path,
null,
$loader,
@@ -57,7 +56,7 @@ class phpbb_template_template_test_case_with_tree extends phpbb_template_templat
)
);
$this->template = new phpbb\template\twig\twig($this->phpbb_path_helper, $config, $context, $twig, $cache_path, $this->user, array(new \phpbb\template\twig\extension($context, $this->user)));
- $container->set('template.twig.lexer', new \phpbb\template\twig\lexer($twig));
+ $twig->setLexer(new \phpbb\template\twig\lexer($twig));
$this->template->set_custom_style('tests', array($this->template_path, $this->parent_template_path));
}
}
diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php
index d234642898..20b89aba4e 100644
--- a/tests/test_framework/phpbb_functional_test_case.php
+++ b/tests/test_framework/phpbb_functional_test_case.php
@@ -384,9 +384,18 @@ class phpbb_functional_test_case extends phpbb_test_case
@unlink($phpbb_root_path . 'cache/install_lock');
}
- global $phpbb_container, $cache, $phpbb_dispatcher, $request, $user, $auth, $db, $config, $phpbb_log, $symfony_request, $phpbb_filesystem, $phpbb_path_helper, $phpbb_extension_manager, $template;
+ global $phpbb_container;
$phpbb_container->reset();
- unset($phpbb_container, $cache, $phpbb_dispatcher, $request, $user, $auth, $db, $config, $phpbb_log, $symfony_request, $phpbb_filesystem, $phpbb_path_helper, $phpbb_extension_manager, $template);
+
+ $blacklist = ['phpbb_class_loader_mock', 'phpbb_class_loader_ext', 'phpbb_class_loader'];
+
+ foreach (array_keys($GLOBALS) as $key)
+ {
+ if (is_object($GLOBALS[$key]) && !in_array($key, $blacklist, true))
+ {
+ unset($GLOBALS[$key]);
+ }
+ }
}
public function install_ext($extension)
diff --git a/tests/test_framework/phpbb_ui_test_case.php b/tests/test_framework/phpbb_ui_test_case.php
index b5ac3a576b..c8ca2a9003 100644
--- a/tests/test_framework/phpbb_ui_test_case.php
+++ b/tests/test_framework/phpbb_ui_test_case.php
@@ -256,9 +256,18 @@ class phpbb_ui_test_case extends phpbb_test_case
@unlink($phpbb_root_path . 'cache/install_lock');
}
- global $phpbb_container, $cache, $phpbb_dispatcher, $request, $user, $auth, $db, $config, $phpbb_log, $symfony_request, $phpbb_filesystem, $phpbb_path_helper, $phpbb_extension_manager, $template;
+ global $phpbb_container;
$phpbb_container->reset();
- unset($phpbb_container, $cache, $phpbb_dispatcher, $request, $user, $auth, $db, $config, $phpbb_log, $symfony_request, $phpbb_filesystem, $phpbb_path_helper, $phpbb_extension_manager, $template);
+
+ $blacklist = ['phpbb_class_loader_mock', 'phpbb_class_loader_ext', 'phpbb_class_loader'];
+
+ foreach (array_keys($GLOBALS) as $key)
+ {
+ if (is_object($GLOBALS[$key]) && !in_array($key, $blacklist, true))
+ {
+ unset($GLOBALS[$key]);
+ }
+ }
}
static protected function get_db()
à51b#93喠*H |:I=L@R,d2R`-3n?(=gPwGa7wOz"v]ԺR34iiu,~tt ښ*RF.Ʌ7D;mڳb!NїKxG!qg{At)cs#+tZ:V  ZI^,ھY.V'a[ g̟m,ƽ覤 [cU^})kIPw? svmɯk: Z @9(W4ϱ: E9EbC^Nqcrz#&RԟCE*boTapºmȠvmTGXp/`LО69C a=uY ó/Cs 2x1]tǞ ˼\bT#A(N"+$>=ӅVrr!U?bxkVҶ 3gY2 6LrxSe]A-]$H,(8{h4I"DuޚA՞iY=S=J<,!3. xtO@-SېS>C­7BEHM#nvAqn"J_MQ;^x%afK !:hC`"l!v[+WiԄӳ쉓Uj!>G5m`gCkƄɧ|v@=GӠK !uD~y%YXAz`eܗL(U, n8+|Sx ذt`~NSB)@9!Uhof`A_Xټn|Y hCAU {Sntd=0qUQ MEO xpJ>؛A2+t $ߊM hMΙ0 Ū?vX8 G1Uew|)ՅRYJo!u6-Q~cJ&m]u@{ڳ5(.6&t*f?JgHxN-BZlw7vP[Mxn)̫H񮘓! a=7zIojho4J߫% AN~ez[ f, DPƉC~liNhe߼9SxN>&Oג2N 6ё0}R 0#KսqQKӈܧ7gA=_Fށ`42C-^h$C)? eBn%#KPai0%J"[L߂ ",MwP/kY&< ݌>6~1Texv..sǣvp S);w: O]fv0BˍRt^v {Ay*k!3}.0e!-͠gc$̏ p;Uҷ OӲ >¿*Kh.;>S\U+!oǬBʄ`߀QjHL%h_\E</\dyVX\oߤ^^J?":sF]N}Jp$WP$ҳkj[x8 ۜj{#Vm*ġqY ?F#$6}jӃZs'>Hă1D)R|~EZʋ ƃC(2#4M >$NsV߇:^8$1ޛRb8UB#8YQ/ H:σ粐џ7mICd00T\p6ZgLjsjnxJ̣g?},OPi"ȫVDPSzg6=fJ@ ~ZN]3:_h}u ܰ8Ub J+i5y[G@|p0>ADxbb0 T!@'jdz_?/r.nѕ?b8 6^2-Iy ۚۃ;TMP=?QD}5q=tm#GU`DdւS"'@W{GiesepY.:Msw"R;&hSkx<&3Cz_li >@ ʺuLu}/hU  蹭3}Zq +>:vޙ!-o'l̋r\CfAזy ![uD`fau!nqF{+NK&C*L>G'[)&P6 a`YxcfdϤK@R-Dċ{E#Kܜ야pƧ=4VKmNWK@uB6M-?>o+ lp. mDsi,-і+zbo( T➍):=e=J}~  Ǿ6q 9+rZkyPCց󤡌 7: o 98t"[#Rq>m>3i+ o7 ޚ,3?IV͚qđ˿t~9w؋lIʌ!>mu?! &5-l=uzZG}w<"!MiyӦUOZ=; ~89{+ؾe,!ay2niari=)L JwQ{.eSѶޞ}W6k즑Pu EXU߿. U %n# ]c^fiHM<kQ7YͳaRVxc^e>fV<'DrNWnݙ?1/¦AȫݛHa6$[dd jk^V uFJ2PNA6>܂,fʬ\4Pٔғi1Mn uh|-u:w*<`<]pi! .5qx/S`G>r9&G >$!=ECѧr޿ $&|ХxǪBif[Jޟ[_YN -1+-cl0DEy֫{IS^:dD+k_oSP-VG[ufĀn聪 Iگy@4epcз:m~7g7/=cX>w!-l.ܼOEhQGHJ'w &@[D(GH1"{q},׳L]k.l3IWkŵ !H;cD]/:ꁃEo௻zu\`($Ϝ\נֽfw|幗plG?FԮzHhyDnAal?&XhP/~OAyS@!ip~. x#NWr>[fd2!1*+WrG\͈*ф `g땭qME5Q(qH~!xzeI wn{Sd⧈`b| *__Kv AW&9v.ߤ?Z%'MxÆݘm@>WŁ7 @[OĹ\EBbZɐnӴ-15 [ 'ȪZm6\jt* SٹaG9M;m-h!azTB۲_\>$$QJx9*C\GȎ.IAƅ=6ko?3$喭QXH0I:I9>'dnAӣ"~7*jViyɆ]] =e%!Gkw^ ?"eImYg{ҽT ?\!AQU@|p:.տC[Le>^nq%gR'2hSgr5l{eSD)hjA+24!!+d@)+Y.#yAl ѯ>:CAB>s[}Pu>͞8 9V1ƋQTu[WzMƿgYv/yP>f|QQGjü@J;8hSNBjz$rf*YwtR\9?pH$4J מC82j5k8c_p qrW}բՕ3a[+L䙏]xACn܇rOUL1`&uω--ƫ ΐ4&8m]+KySՒ.ńS G篲L+9׶AE)"iNQȈ~ez~q-@Q {O#ppS=4(cPrhs5$@ĆoPEJK7 m~!g5g:2jE7$lVTOڑ̓Sx-W _y|ֱAqˆ[kؤn"DyxLLI*xn3NVCl@4zA0Czq k:'~\&٠&S99aw Byyt*[ <&>z*qm,glHh(!|!ssۊmw͹ K#~ M~*,dp}Yl7ӍdV\=bS?arυ)}*E'[ѬrRj#OMr%/_GDf:_B*1`"c- Ɏ G$vHv ]}̇%tpJf,;Vsk=I[$AozIO s |2K&p,C|U 1GwW>L-%ģL,b@jn+, MJui†9;_~4 P%.BY`*Cg.B6%$d0S=9PaI}g9KI5c@ 6ƌh40z'і9f,֤Xf=F뽘3@'+|?A^({JȫD] rϫ`퍕8JMॄe^ H=S3rU!5nhl`b|(#F=g5MծdXihvE +5V`9~gF'^tdFTW~<]AX2ChWboX#JQ.d?iVlje+-#Ǿ|\_| :Lݭonh(ʘ T0OL \~%2oy Hϰ>2UC{llQx/Mf<=2E m TwR\ն>O+?9nLݩ|Q}5xU '61Jn j e.ՈJ;t~mo>:>}>вx6;jzڻAqGslëɞq1kgqKBǿ0 ׆t{SI@>ߕs-kTdJ' dH6/ɱKMV5bpWoǘ`1Ij pɏ:!zWDI:.q ʇ>'$PL?VsD u*1k?j{ T! !K*YcJv( M@ darA3 -!r5ъ(X֫wm}9(Xw8ЍNzZ%b]\=#=o?_ޏ ;>Af2]"Y3:2) 7Gvxa!X6p섳 Y%/sP݀!gܼ +=\fŬrurvTзr~Gia:G>JQh+0ߢ-,Ji齨~{tY9%Ik+WW7M+! XJ*ۊ=>Tq~h~} ,UZA~ZC5>̽03OɍGÊƔ_6#:HGTϟ)̺$&Xc2RT~09!ri7G|$]|nU!iF^g)X'~#4{Ud PRZztCw֧F>IT&#E,|$kFrJX ij(HzU2U9ط^lw]v'"g_dS;2`m ']#NnՎ`ʎ@9Ϥ`Ck5)MTOj +%> 1ζAt}zgS\Oxe;=t &}@mX:#SՇ+oEwIֹtjVڡE6`-GH5;E%8֣Th.oY;m}`מ\Epʪ7;Zww4*:NTV$X;jO ݗypب'N@nfaG=Y܆]k}\x2`BR{.XIdH6. .MHOL v(~KEt'f˝A ۮM h.~\Si 9Õ&n:8dRlmdF PI(40ft:L' *R2!=I6kb|kU8K2PNPӆeK(+H5_sebpdw0jQ+}|HcF,/ ruJ۞?Fj}ѝvbE5Bߝԯ{^OX>w"Mt,eµa+e4p;!P|%'w,כ]K, 1Ā1: ;i a_C >9_aa;Ck@fiobÉzU:- ^}LXȽ9^]NնxD\n7~-~1gw[qk NODrv_OQ ۺPioL.wx\M% gkiZ+gH9V́ AA|K\[af[&rxAw7ͼ`em@G+\'P~Lwa:x;e`?{;E䳹r=J2{ME>Z 3{0v;} 4# Ľ?ӥ`9ҵy.z`%)`T[1 D_ Z#oovXnxav$ƽn6"&ä8,2j#L^*t)B Ux[\hRCJw-zgPp%p`w#Sy D3/v]+].z9jDDƱp@e[&-&c6,Xφk= "QZڗ(`Cyo$E:WJ*Fwpd N1i%MXnwtʴME`gk\5^,u^kCmƎ\zF(i}F+#Mj::WDZ-׹~8ߘol vF?28V2j[驉ӗ<~o`A"trgdb(vR@bO5NNѢ0)[g#{"ƴhߎފ;qc 2Zu!ϫieo)&#Ծ9u]$]}1B|Xꮋ 6i1f>]jȥIGX=f-H)FQSA*z ^"-L0wTKPW)h臮M&.qQǪD69̤zHe󙗢}*q 8DB0>VV!q,ҮiQ4mdUtN{a"^E]5J*(~w| o9y3!4oA/Jq\`".az=ZFhǿM]U8>\L}+rhQע@'{Eu #QcD$*Ƥgρ"4/j&ցlg7sn.&a$&!5GU :geKcaSi,F~KݒnmZ%Z𧚵XG 'ΐ×A=Wq*%2_ C.k$ߩdރ>f?SP1sP?Lzu.#wLǬr)a9[q DB>9 %F; -yu=xw9[&}-{`iѠwsSKX㥉~ DzQ0S[j2J|2/@#Iڂot,eS)S!@! L ΋CEuɽUz5qsi`(r2T%;rncPu bcLgȷX0wzW׊ II0X~dj!捔D!(\zj揥 "b;jP,0p%*kd>̒{**Dq_\M+UMt 4Fhci {|Kp8?Ls_CfCaq{&죑RgxOaM 6?>{z(+,"(G]+ ka%a CI\f Ϟ'S #d  Fh72Wi{NoR dsceFvnpY]dMFK/['ъ^A6\nX*Jp)HJִ:{jwP%̽:^ޒ)*agw?JHT+m^ PRЦP 7,Wcp)z9ou o`^U(N&(q.O+Y!51LEş-s"?LpAc ,r^0͔eo?v!KT=ֺ499ԇF"N@_O$U lUspz>`Ae:PIyM :[6R 0M* \ ņόǛX"_?m&w'@Jh&/87ryv?U(! U:l#JU8/=dK/ys^x2[+kۗ:Ն[Ԡ$Y5.%O@نLQ[N! M+j, ^,H{2nVN2Xew`v׳Pݫ&EjATNGilm~_xhz}[|{4EqO$\q : ؼ]L9A!>څa59AO/'S#.7 ڒF:|GY/ eؒ`<Ӫ`ۇo/i!`$sk#YIp7^5 DZ_[&EV\FwZJz!'{W ;m>ؤB;=ӓ"ia(j 0y(7;I"*YIYh-"<~OljewN8q$ghݥpCA%!Eݞp.j!؁ΘWYlQd֒j/M'rI%>[Fd2 Qrdl[oZAdtۤKS_Nܝ xXO+ZZJt_2F-;eD!1^ be)d=a{5;Z{2 yb[m0"@͛ۼ[+" E'2T*ſVH?>,/i'Cy5 ڠ[9Ä8jM.\>Ɗ_"[{j+JtQ~ڲf\5"H+_Ũ'k??%%D-2!h۰:2Sܿ^[ lrjGNT%9~;/>jPN~`dz# '5F3G(siݤIZ\i!bު#J!rT}նjAVy] #I7V<1u:|4\kSaGp$,ilx1*J햟+`ViN ^&ݕoQTaR푲a*_ -irOy 1  vf֔ⵅ>Ub^ls9J'XKף~E0jgK;e`@] L7"Oĺ}Lj 1M_;*q>Le,80Bx\Éf eAw IDşdDl-7'.\F y *|R@ C-Xwԇ`JȔ$o%Or8bR`A)WVA/X!?&0^Bx<포sb f]ijThU`}ȓ%EO '/\DeJKfzSpTERca !3r40UɎЛʽU(v6b4X{̙S=ؘ}e!bbJ Bdug"Xg2SD4M(,ZKl7/;õ'@2hW!gV+Թ1;[w8\@̇ 0T}7E'Ö 'v~:݂XESEn3yP$|#.,bV"/fz܆~+N/س"7 |ێ S埃g2;4l ̳k=B.K7]1y[ɑ(ߍ0b|yG窭ߍ_I3f߻;EB19Lj#6ZЫWUCˍt>Q45b<Re0(M޹Ѿ $8MN8)7 Ku-t [BXDpϾ%[4aM:&ʏRoY_^daԙd"~6yA%C阧ATcse7[)9Pҝj!%d/ 3Ӈ'~0̂Nx<4Ré-ׂeu@hX_Q\gy$FKF ^ȟ 䟥urVB%MRS=ӸY]yகL !JMu 0 s^"~ rׇܫ̍{)̦Vrq(9ڂ}rG K3T3־J05:tr'PKŸ#mkD8kSBe:^M^Vĥ~ `F؁s*=,J*Uހ串[^$A eq~騵K6Uh>5i!@!Ɉ`qkIQy6_nQ&A6( \ u$ƆM4au[<$U\Iy[-vrejzI[ DWžMW78NF{Nz 2dJJoK[EQ=$cbl](LH4!ï뉾P* tU=#!ymߔ# 1 ㏃i'~9mwgoﺡV A!%;{ qpWb5 ENJpPϖ(YzRJʭ<nS#aSB?C(rr7҆ Vl #6N^bݜX='<Z\ݪg.S.}y& S9O=s*e:EUpMAz{ERC8X #4s%C/ q(&P(u:e{9oGB ruyyzCsfI~_GP;{Qi̍ /!b#pƛ܈de*ز ic4{c0 1YzWE'@hT[R@Gc_.|\6Lj JW\ӣs'p[o:K, b`zD}%A7BN}/ ї G$*yڿL~G]W,B2UH478Bo? QBT! ' d8W<~e#+ka$d GSW*諓l,D%7i} TZ: `j46*&` (|.+S|lCPIM'ۈ[?Wc:Z 'R"&ӷ ۥ;S-R"cf|̛JcD8O-t邘~5z}N+) f;짤+-ďI}%C[{*UmMQCsV8+ՅmƐ843b#.%,at&8l8K!c:bGfynЋr-sifJ!cYR9́mAU5LFѱr?QzNԕmHMC] T'} xIjȘw{17@S RyJ  g1yPp7P#tU2@Ğwr([IFD:yxQ=6v@OxјQdӗN1~#k;g-bw:4O>rv4I=:QETS&BenLJlt|skSeM$<8wǚ3ټ4'w<|"[\3XkTswAh61`\jTt!d-b$MX:)p1j7S 0F ZU,SU*HF62)-ڽ<|{#1ߖI \*O}C ھͲ(&I*/1 U[G;PZh{&[!y*W'(Js.Dlop "vnAPNz^IsQ'WVlru 2ݯ-vDj9N.xy&)eڣ P^}N 4`|p_k i>kC)Ag՛ph9 򌝖т-rUqL]Tv鶲m|7 rr٠ ϞO1edbhaZ]\=lͫ9\oeӢ~:H"Y?L*\Cۏ,@+7O=&Ňkl;FfT+Du# 1M'X%T+x-Clvlǂ1j9 .aŤOX.̕FBu/ 72M0NRε0"#d-kŸ&wQ7~;do`Cx`lGӛgpԢ|ҁDEIS>z(T_ 䖁 O*vF"vhv T3^Q792_#Ĵ%/|B+@^o/~}wZ!3CR80NǼ:M]/͙qIBaZTѝюh{_6 T061 X Z 68^9rS=6p!dhjUv"Hm{,W| ӽ \m\-a %fu3b`x$OCrZ2Ċ8fʫ^/#MЦ 2c/ܸ!”q ̊ID\h ͬI#w:֍)M"K9REdζ*3#T .e$+9t*G;*nJB $IoC-U! ?KkYkXP $ޯK$5Xhܿ1]rqUwpGw/DF)n\a, H@tAbs?|:)M4',{l08x; @쳚]LʤރwtO35b*#ǾƗ}Cu6#TykQ>LWNJ} gPLpeяBhh\OZ",q% 0[fPtgR.gaOGu HOZ Ce~0~B"ڦ e/kcܦ,|sa7Lh^{\ omwN6 ]8pK^\q0T Ϊ}ğ0BY2N@@Ĉ^%൳J}JzgKc7,WmdH\|V6{¶1j'aU 19Ošcd@=!`@e!(ScMJ lwS@eN V9bq6U}5f/)nIgdr5 e_`5 n}(MPVUZ#gL׶wC*4x:;mp4ۖ7$KSB!{ IWj]= r 5)uttk H}b T1_Bn^ԀD,k/u'\6)K6Sj:xم \UbG rHSb VJ1O3,UJȣmu\W w0K<$b*Oo){_[=c7NF?o'ay«zJ{=GK].ʺ%lV@MoB(.ky!Oh߻l1ێ?_zd_.\aRUDNro(K;/lSN,W3;Yq+[Y-p(n _m"GOEf}\yc%H"N`[m6 |s$ŝN T&?}ɻ ч*PC)$-A:[,"N^|.T6¢&Y+TNw9[3t ESGXBi(79|5ɛ+M|Ylf\<8]ݱ{*fq*${Ss.tFf #h?'g6oth.A^~sj~qQNDfdW d*YW1G6) o5{:I8 $WS&~.%Cɯ+cr?炔~ uh_ noڞkW._U5%R!O>YNצ'Tߦ sayZiCeo+&ӨE&APC׺[dl (@#zu2y@:^~uUqD÷t.6LH2 vx!Vz/3Y ~:tu4qafvWx.T4_]f8/{:X\j@L%&E^,62mTزhmpY@a/i> gf9%(hzڦuH3qIqiTg3jVPhņ}eZ`O | &[!T_1iM\V&PM|LD| ԲѲ |ugKФ%5+ON[bY-wFҽex|ς!'6 y`ՏOl=kB<>{WqjDŽ (LG uF2#@Ե%MV| :c:Bs*U3߻+ tϱ0w7;OPY( >=)M@CkHG^R ^9@K^|cV"'PZt_qdLzXZO'T.<uXBƫVi k';&)$,WDzcFVB,r0I>jCv]3kGWHzD7J-7eO+}t<Tx^>0 "+oCNUoqeV TQJ~!ݺr{ ܭ(W'<OP͞h\Vq*dWr0g26_ExKy(ns jǰ#`7=}-4(k6X>0gk-1w3גR3}4 |($.BEڝblDF$^x417 cNh3ߢDjj&P]U:du$U ,3jhǴJg/+WR5 -z3 ߥh Mܶ`2:7G$y:PnqDN5sR^L޶ |'غd=bΩ%c*( )K:;aXdHGm?ŖZIY۱ZI{ dik)s0(vsOBIA4aO I$PrqcZ}znH&y|tchN|U}Xkm|ۢST9 '7^7Q3{/ PzjkPMTMx$0e (Ɗihڻ.:47lb~^E:h+Ao]VZFgw6 ̯#_dXYh$^R35D_ccQO;0Uxtt!nCիfB6~7:R6*^X~ Q'FK}Qs7l/f2%;QƲC:bmjp"ڃK9Smy6Lv, 1Zwyo Ip|amRʼnȝ}bF$-qVJ=BTJme?^6;~Kn ,#j}SrYݗk 9+ 0&Bz %@sd)jW9zWN&G%I]SJPdzeL݋2.apƀ\-F ĻDZClX@PG4!2nu8 8*L?c!ޚ-I/*wx\>ߊCEYzvq)s;fPZ8uH(RMv}3$OsGpZwîk w.VS#< "JY;h[s-mcS/G㳔ve b6%~^ָ>Bm?)e @VZ=* U%.)nաֹ_}o.A" ҸFǫo?J)n{ķMȚ:<ٶRr%&=>J1''*;6#NaKaƥ׳I!Ge$i/:CH$ꂷyp)N|)(IhISI8Xv+.}"ia?nn "0Qόy^j̢/ XDMcȖ-.FLs$n5%FkKץ\t;daLyG f0ZW60|Ȏ2vy_ Yn@yd0믩9Kᰇ1oAq]Zj8FlsiؖU=rF.O_䑧/:t.^P/3'H/5hL15䫾zy0WEa^Ye$ )},d엑;ޖ ?,z#J&*zSOnKBIS FpM_\?kkrZ*O==XG`sfv_N\~ޓ_@}< ˽{|s ջ wLhNvOpgRI 8`b:qCUXM*cyar<\'}K qhoTβ!]^W-BDv$rdv6(,m|vĎ2)HPO ݰCag$+R0C3s;q9Žu(INbM ٓ[edL7UWKn:.m"D4wD`gTҙ˺X/6WFxR`"o:Oa_[a/(!n~Θ``LRs@?TүUWqِrdLt'O ΀CM0EZfvA5f$w(c:)q^. V{0Ї$_-_JR> yxfp: [܍B˜fMa{mnIZra۪~F^kw'ڢAfُN:g 5݈TMS*noXx{$l&ha*яgFLv}y6Um!r̐#^7XfƎI}ٜ>(Qth1ΜE0CCޏN#E:AJw0$@u`uu6?"s#|XK}ɴ-f{HQ.7aO3>"S:Z!⑶,D=h2s<[k"7J&Eʿzfއeuu?n9zf{Hl{t4@@K %SfF%-37}2gMA:aqεZcqh@qS~9T&3WR\QTf}ZA>'_BD>BKD"W>j*ΪD9婙g+ ֜_:+n&U{ O@&z7 w(ta&H]sN0ϳ !Y|%ழ)/)J I4E:A>" moFXtHp_fz ?kP-ڪ#[BȎ3&L'kRzob|DD&):lݴy _fpӑP9=잤 ֭+M7 j^OHP$AqThdTAvWV%_AsBY|a_ eLgU?MO2 6:OXud"%;.F`)I!?=ܿ mFe Fؼweuz՚c3[ mns Q ;=->VLLwާѪ/羚 ] @ʜq%h.dSv";Dן+J$<7u&Ȏ<>"c-?%Dߋ"|a '0DVm/a~( u<imX#y$5+V@LWCd]>M2p}\R#L z&l5өQ=V:s>?Y KcX/}> M3 ]/09gFKMr"@z#t`H{z*dޣLB4_^vղ%[8 n:0uL36ci[[e*) {b2DEnB4=2[(:Qcn|+ܤhpD ; zXfH(1]#N.%X^ (|M0nfU?Ka&WM!aUȊKܑ g%QpK6/sV SV?2O|g<|zu|Uf7LdxMFL_s4 fY!;rS襟kW Iu8T{"5z}ijiݷBcHY0:G>>3HI.SH%G&QpX'lH_TP\#J (nPmѫeE4C! 9 oDg[ Bq5G.ۣl׀S`"^ = nC3E^ˏ^ݑjJ66AʚV}FͣƇ6[ #Z*]6f K=q⠅p0pl5j=2CO%b SBkhQgd2s #4D*^dI[@t0N7Pf gŒBзi"|H}cq("3Rym6WwV ,8t9IwѼ^XW2añ"ΐ#o8񬮐Xy؅sIV9h<&1G CUEGz@㺡z}CϽ \ mnQMz#-1|T&xt;8wSav*^XWYvhbĢ7GC6tx l4% bpA"izO;Yfc^& b$XJkŌ,7[$c%B᩟H+fَ su jZ8 5riX%HEl)N3u~X 'Ijmӎ@/TB.G4=4zpF@oCAv)rf UbF~ (Jq:ؾ%apKʠileO%J$N|NAC1K/ \DZ>g錅ы$9y߱'`(Nh> `*Il-x&'\yC{&〈SJmT_頒gÚۋ$ ]+~(3<>35-}^s-i/JL^+Oz]WqɘV{l>1ln{ʯY-E] borxr/O[Wr=!JrBU;?Ae/ M&qԊ^>1QS.ƭf_&2Bz@F_} !+8s<vۣLU9 Qt i\`kƅ(6Ҙwi>$e 5/}W-Ѭ/ǹ/Pen½F@Q=ֺBSynm v5CMX..$m>tM.XB3nj@ALB~YQKSNp.j5wYfmv_hWٷ)r{mxtt0j,G >j>D;z-x"crg`WJ]/ys ,> vw˅]>p>6TϷ,L/ƅJ m)@=9&}Rb\sOXF2u:c@P"Y\0 kИMOv9̢F濪mODz0{L|)OP/ Uk(p??5)g(407@L,!㙯~{yw~; Sh&͹hWQ-(^Du0~-zuw(N GAWM{bl_=f L]eri+1vl!@JY<|TQksa:2g/nsMU+,?e@.̣d2or+],ldłbhjEOhm4q$ڷp%0 חv/NRX0Eۆ72g~O8}<; eLD#(Z*qgѣ!BV;"y#Z{B+/ӡM`lc}s {TUqix~n@DF~E&;|Ŏ?+.F!CƎ|P$Sm?p8Ak/v 2iU`Ib+>m X9:^30 nflV֯d-o 넆_M/OH5O:y97r]寧[6>-HžvpvBӢ[ Րc7juFBeXi:`tѿc ؿM;]YWod}_A^T0B(r(#7zH9&TMҝ̾~Q^f dV@2r3QX 6M2M5܉4O+UcHeK4<J.k#{&騤Mkqk9" LcDBZq ~b<ŝoBFVCpbT/=~kR[tB-{veqD/Nu3[{mg+ !G{1(2鶰WDpX@ЕR U ɔ"e 5ZazF4,Jf&A2*ϮړeqCAT0{GVǵ;nN=hЄTUnwiG&< 4_Rر]bE*<`${# ={QO\J DU!|EP(p~%;KVN1m4 U:òJ.RܔHҳ׍ijb {Vwy]ل+\*Zrgfh)X6kTV4;Y&z@VzOiH棩: i" ,5n9g 8Yg !M;=7HrflIC a?TF&V/FƉ_Y:pyoCdP,X:WOJ!}VO{QaTI.\-„TqYC4*l1H]@)J6cSn|+qk=7$i/D!ҒN'95?<+9¸Խe(*Dg5thwasoO&;ӗ0ӻgLM'XZH =q|nN Մ&-xK kI(Ȕ`g˻E*5YPHR_@:sL. g]qX0gX~{iuT|&hd[]&)7i9WƔʈ|hk*< &^q4 ai_%fg )Y6aJҨ /ܓJeU:m^,;dPeZv *&4Q嶂/f֢S1 1+ }5LY Y(R-^燫! ڱ-Jz"jR:$κ].# SQMn~58Hl ?N&C tX AΏFީ#~WSǺ$m ~c&xhdqx31 QfKׄCtgc|gEWHwL҈WS%Fĺ[Yh^r)4 3ˍxA-q=Vzc.S5J+ԉɰ˩M+MhE?pwx}f2,#?ݓ1T́u V?ҨURAxɁӀ˕~}\'k;9n%iCPEњ-[74\}&cx!s'FW ֹfUNbOPF ׍Ə3Sy.kg:3l lq{W ˌS%6}v/Ԙ|:3Z 5 pTœ9C-?'i}FW|wW. .4Ajθmњ\l,4 6ugZf6sֿ5&/q -CM(mvX1gޓo]8qF ƅy2.'3z=^f,=2nؠP.n1gPJ1Dy?i#vEσ~0k[a{Le.}ڐqeptMaNv8 95&?E4%?T"i3TL12k-ɕ'h6_}Y~V LNMtžB0÷ L̽Uc E5]mߚj$WNX  [5S?$ƈ8Kfz  u4]rqvêIFM4gߪ 2% Xٛv2 M݁&Pwp m>ƕi+pip]PN\U 82Y|7E2*7^T-]qՆr=vםH_sU8{uꮅ\a.f&v,}dx;ff^x$NP6[[M 1d%egx2&x ŃjSޔ+Oи+͒ K^H]]mͼ1:%;BbEx pDz ~`IXwUƨ/d^RQ,I3d ;B!zASQZ^OuN[,ߊ,^0&g(SEkv 5tkd@\g2:0yC&Nwi ^ȑ"2瓊IʩOAx^8nLj$#hTT܄!}tB3nC) :3;L-&Ixo+)<,{ܸ[&N1Iͨ= `<*֧Ւtz|˩.YsNuoV5-mߎmn/1r ?3!ƃ4:tgʣމm8Z7`~fW'׀BN+^7IU-9_ Ey9 bs͟ %^٩z=7:E@Z /*lWL`:Pz wG_ލxZN Pey,TM~}p!5V8߄~T3HLKGx Wܖ{n:?M6̃ta-ёhKpb7"LYʒ +7m{FVAs{"7BD=m vorW[TSH uhK5Kȝd .*ƀ~$Qi(6E [|)xwUݐ2VVLyW}69W+y*髃vXg Yyw<+w,:~aSWhHBeW[e:TN4%Ң~5h| {2+n~- 6c1-aR!d*OuHw9(M>-'.]iChrԼ3O%󣔑u#O?XC^)wu"[ R k9%H0no(xJ}T+v|XU*]8򈑱.oW>9G װ`+i˪ "S.]5cC/63 si$Y ~Tv€"u-[wԎ!~ie&^@ SRhe'- ^5IF-vbw)HCH1K/x{E/1HSa╀ Rlq>HuHW~ n3#͞bUXԻP6}-{tw_ m pQ@z&ςM}pjeŜ"|6K^4t[!9%>m/=YWHӴxT;2g, y2pd`Rh>8;8PhKԥ0g>)y=ݱB"xd +xb*PcgbDMWY@GQֶ?C_UhURCctgv޶Ip+"=#X¼W3F.9@]d5C\xCYIQgtVtij+S+ʵ6v <]SmWdYwd}t 6G zoFX?>Lb%|;$jLm^eT/}11]O o'ĹfGGgwy1KQ`m~Gܑ¥u,D<1r KÈI:Gyx}Rvҭ,rd v8*}~I\eTvV}*א%0.$ۃ9Yi z"Q0nFɑ|ֱ&eQ LӀa鄥pzF7)2`DcUﰡrHOB2wpWժٺar'mXDvQ#i#E:؅玽^ԹE)Dp5`b3 :5uPWu/3+z(cFH1i*`nү|C^l݀4 U Xl&0`uFȭE& y /+~C/?]sUz<~rwء%jb\=!TJR m:G8bpO#\}6.m9oT=LtI|G jyIhޣX^ʁ[ *X"gL@4QXŚ^1cS;%!|A Ro5a@s M忀?F1}c{/'jL3ha(mA>3Ao_RV>I^C|s`EFr|,8 @&vnA y&}P%Zer5wmϡ@-8 ^H>0o+뼑#f:4qy5ep}Ը٩#xf3IKZrgrfE(RjWrxPb|ȧz+~bG,ڏcsRN&*h.2KA;qz/ҡx4gz{e*fA>jTmG4:Yٙ(=+5A)VyY^NoŹ1NN Fi⦈gEn?9%TC׳WͰDPȾ6>is %硅Ex)Mjf9xHFZ5i\I\߭}@߂ oNE :a85ǞF9(BaV{1FV25^QΡ+ΝTK|7%A#j0]f^-U@F*J,<<]O<7?vthT;2ަ$7hʰϧ,R= V\_:t!L'YnVnT,os\F1sf$eLE=mFU@u7^6Mߐ"QXw ҶX!l<fWn|]LU%')WYʶ9" xNŗ^< <^ĺ:$ +GnXmSc% Ol^\9Y^K`=`/8K?L"RNReCe}0Tedo/֟(J{M M`ju<)VbkH$Idam\Vd]ݤ-jMz-S/C9ۨA6D Сe ;(')U r;VZ\7ot meޙ 2Mدᘱ N,Ƹp#)+^|| g7jBمH9A@Ȧ( YSQJye:WTI1'fU5C' `L?ģq,e"2,uMOمآ-uj? :*P2OG&XD5pʽ]dWJkqn-QdtTKjڂʾ8Z+@T4'FRO #M-ic\F~4mLDoeSȉjU;.ȗP|Lo u ›gѮVZO2٥ƿ˔\5$}uDZ>2SC,J\Ԣ|eA@ =5=H"}KMTA$?{0h9꒤.3wO0Aq _q<#RS 5¢ͨfl 2EF[*9So"جs·]2b1ccd QrWooG jprG x`ߏI#L%2Gp귇uNwz}jQ7^=i8 #1'HRrnpJ,^v{iS7@Xa ׋,?PUv=C0%5Hw[ N[DNIsͷ}ʗv!X6+@*E`W7辅okm>u6B,gE; Oo2J.!{ *1E .bjTIb?J]}x Tz5>Jeƚd"0.<6ۑ'Ǝ^S0im&fOT8`>.sae컏nr`g3Bp]iq>]Q$\_,[Ii9y˿s>@2jLg;yLepLQCSktuPŧ Ueg E&q{,Djy4qgqXO6`ZSec0'ܖg:ŀ7k*LFyEx) Ւ_tDڑMbVѨx: U|r⟈ZvZ<aFV5VNyYpF. `NVT/Ӫl͛LC:fX5-HS!O2o,&)4coW3l(DMn^R8Gy(Q ϓ*tgH1|h'Mf$;%e3dn{;=|ۡCQ|d"hg !?}%R<5/1\'9#t8RlcuhҲtv,sĺڼc+D^ sh-qcW:lnʶ+Ӧ *R<(zK9WqyZo)/@֍m{y g?nI'+n.iljmSh\yc˒HMdsױՆS QRĨsD0w`9zj\@޴VQ8{Iz͠8J7FXГު<^eP?QA$?U wj<}VxeljL7¹ n~i1o{m^_;r䒻TFUϝ :;E]_unӶJ˳{]#<{zD W5Oz^8x%Ll%.PPeiQ_bk<^J q _[kFG=e:| }YVXgc;2vc\J@'﮻pTΰZr*%Цu[usd9qyy {}!\6Dz6%|A'c\L.<Į\SYq^dqm_:<\3XDD$d^6kn}5yqS1M,ZFk\$ |9W >kф+zfKkf>z5]!=CHs3;7z9l5MM :SbK "oϮtӾ ccwuwڣ٢#!ꁝJ7e*tHo\ B3Ed{ƿx=x!jdDylLq[UOE͛ tfک9^J*VW?c$e:R⹷g$:$"ƃ8f#C1rCq97~ B],-RhYRI> o"SC*s i U:2.6^Jˊȇdcy{0{OK#Ÿ=<{j&MJQu,F`JMpŃ ݀۴s1}m"+,]O0Lz9rIs~^TC@Z\תNy,Є@7|C5{$r m$aጐ2^^id& Qlς}eHZ8m°حRގgW2EP q[CxfR1\N?(^e, #Ç2i#[Q ~ZFKcO`1+N` i:q0Nj[rQݦob]ц袭og}l}1Dbq"0echdKKB t׆@cmѯ$w+p,Q:? DuxєǹfYvlixW(U!%-W70jpO'-©$4b|L{yB(Zti 3*ӪْrF VDf?PDKaASdA@iFzfe2(=\%(*'CbҔSV!㛢Ho{DWc9Cv:}5Vx߹Āpf!1+XucE'Tب^2lmm~Bf<^B؎?|ނ5d.Ll$,VZ/հ~Er!ZbYm1=V?j";;Xנ,zyE!w{agA}BrĦ"br ҥ3=a6y2N/Bt##(Zye|ˡR&#E`k/m!:6fI!%7ӿ%XQ,K:rN?-d)?>Qh(VR5(G]Fg 8T ?bpf `'=G"mn%`h+rFy˷'|f?sYe?TCKkQ~`#)q?JqM'W* \Z ^Ô}xaiO uC"v41βATXQĕ9tRh6l!y]gNh.Jtsa+l b! 䀵MzC~m\_BdvT =fQђ%XZ0XL{ÄMHg%?Km™-j=D)}ޤwmS픨L])w{Jߘ/ &8pac,oFyIEceN~4 ѳ]~=.#;"c'I^RR8@8zzr$_( &mPrrQCOk{|!6"*Ä c'kf0~XZڰ0;,hۛ"!eA32iz> 9_cꪺd1 4> /jL= *= cqMK61 [*z1 1&@OLa͡UI$VDM(WT0O!6pAf>Ҁ_MAQf"YXTHg5STXpBѷlEz y'EႫ&RM-2mDCPR[,̭Ex;*O-k;-th n#ȱ4v MauӜ+ZlKm]%;=seZS] s>tUu*@J/$#0}xuʓHOg9,g[]8ь9ⶐGaJL͹\Rj4r$}N{*?F0xtENԵWRwjOp S6 cߏUY+wK_-/G0bN&F P`]$=~eY<MFd$a@L!ǂ閶upr ϹbDеsfDCȧ^9#+.׸9r1H UxOP}q1oN6#Mm!*1S`} ցi蝔m3YԸC;>b NB@a"яp5-ة2Oc@(sG_\Lۿ"fMQ4oiD?)Vz;-.I$\HBߐ[fTNXd#;i*7 q σ.SŚ]d+U,ȩR̄~R] ݠeݎ Y#%5!)2QrxU}n%KJTG5hmr@EY{ZY5j.GvnD^rl WmhSOqހ^jN&_~>LLSoK( uqu.wKviIQLq'fk腔v ptcE>szO`1 kmlE{;ii0O>[iRnZt%s,C7S/,f?`CM[`YIJw% VOκQU _3,Ƨ`kæ %0?RҭAR=9C~6[c78KCh.ai~ctvɛ`䈿$F/ ˦G<0[NY2uwE)rdbv6JOb$(m,?̏ԓVkep>ijQfaq63EPNęy(-bf8O(=O=Or݁Ë;q*;.QPgKҁ2ƐF_;cpد&\ >\dc< 9CqeF7sf{rod;5g_+A,ū \z5,#@ j|TFqT/ieӇʩ=B/@E9VGPn@%";*x{jGkT5Vr9<լgB[G&\d& br| ݘ~;SD V1 @pXxu6GUd'"DM6|J09Βj>0gG䖁x^ W¤yiq+D™u3\2sҚ @;=0G$r儘8UyI`9g4yhw &. P*.|"Us[ }L__Jj]WA4 ̀ûΓc^+^@8_ JDXR넑DAmf9[znhZn?#YgT.=mK .>6/ۜ,wx:c2rHӐ{-*0Y}؜nk]b(/ڡ`#ȹv4oГ7L*9P [& IB, (Mtw̼&43.8\(8! {"ZT |oJH|.> ѢΏ梫"/޺1,!V" W'I_ V:jGUP'bn̈b<f% +ԽNpp:KS,.%ᆼ;Q2Zr%VA)le \u9-lj.]l%k5H3 l{$q+lNcC[-JܵbB[ FRB$(?#@r_+9Ѯ{S1Yl͹̱\mg]˸{=r +y]-A&J˗A 'ƅZjZt͟A6mZӌEi|rHn~;r(U!6vlaJb:o\mt'-۳BpE|&2Z-"=`x,"n34xyֿFgaԤ ,Ƒ FQ3{-_&sa^`٘051$c5+]P=8Lv7G`XzD᡺ Σum-Q8MtޠDzIS@$!HW,Xw9ʑ_|`^))*՝T`8!?I0kDykVbŦkArџ DʃGwNde(YwC0Pܧ*P_m ƄV1M>?,a˥T`E~tz ԡ>9"y djyc#sEl@ ^] ROʽP d fn7 ~"ׁmGm" byw_]6"P:e *xhUq]nE7zm+ML$p *(]J¹€>jß䉀,4Ha5Ś&#Є#y0s&sW$5[~+(&Rmdo,1%_P$1N*YUX~+ CJd=̿jOݬ3xw)E4f~PBa:3bQހVAV Hhq~Ov! ]"#u:jen6Llûl l6f"YHls8inkD dN2q64ezo Q5g)djrOUly F;EՆ/9#ᷙڌLQ"EkGKOkk hP×+97_ ``+p+'I=SDA?bJ-*-רU36:iayZE&pŕdtB"K\%H]w(' PГ W'Y哖3rEFG 15W|O⸹ێL,iM'4)!h9O!QTPyz{鯙s^h؝F\4~uq;/Gt?IT29YUQ]>Z?2~zF&zG 60Š;^kqBx1$ý ]qjdȒia4?)IJ`|ڮ1"ANw[-W>+ C2+L$zhh b9\ut:\"WB"wnVU4_ZvW2.x{ 82bVt돘c6"C̱\$"`4eP+up,GM8F?5Q1 R5{yD+Z$U-#IO/9KdTrf3 p*Q.W*ZN6t6,}S>5ןt+=ujᗆ2UU+< n9?|ۄuHzGI* ] .]؃^[o=ͺHWp/8w R~AHi65JXeue]/wQcc7ko$fo2tD;S1Vn6%Eo#BZ@ {3JJPuIJRco!Pj׺1Wzq}Pr(M{sz_ j*7~fp#6uk$nAOJ}!Ěm YMNB~fOx=B12x Yo>iĜWh,Il_3pb톣,ڡU(o R!5da1 "e<@~c@hgtp'$-wņ[3l} ]Pa ߫2!1ћ}+L/ j>v"*nv}~mwC90r|)_0?={Px=et< Izp?}Ѱ{N\+~f6Fts8upJ n o?^jHH;F :#do,hR}RA,^`pn4Kav.~@cy`X ʗ]?/AS *:KF4>G8-Od%OAPiInaTXcWVVRE-!i!W5>~O$e8<@93Fm-j& b#29닌x;~ 1mDƘhwOћi5u:'6+!JHpYLu)vlhuR/ JyTbuZ*MAq˝ymxh<!$iWAO/y:b"cY~m0~8 VQFI+@Z9@c)BwJi 0Ak7>Y$G-6 :vЎ:·Fm*=tFQUTPKR=fUP SQAJ#oVł(yN&Zb.DOf=9]TM>Jv YrC j|ۻT.C+ qE{aIl`TGB@0W94L8uTY.ӈuUvM"l LmĪ)MUn0Vɓӹ +>KLΛ3V Hh7ML(CvazJsn@fG9".zOepLS4cߙn$J|]a qpͮs*D U@yOYa#ܖ_iaaNzjMQzƻdfWp1+]Itx+۰khK2*WxUx&ͭ:,/R J!2W \~i+*D^>]^ \;xlx}a m.W$,^+{nN1h.lo/gR)}[?_-X Vm1p~!&T>NbAT/qrO#A!7NO9@Ϋ\MIVlܓ$ӯY/Ybwss^{؇.> }u#+#/ӁAp* XXcyoqp6/N`ͷneW+[z:_[#h8c]eA;0}M5Rܶ+AA磊Ltz2R ,nkb^ Ov$nW?-|tQ} 7`ҧ)J]4NZ,+uY'G#3=O 3x_ӬURH9<#~!U;! j#AF#-|q0uxB2o~(.Ӣ5ԢX8m-N̝lAy5~|5opa' Fmڿ3VsC#{Oޞ!cزT. qZw$dYFВ<@N{xs% sm-0Cǫ@v_igrҘ~H[GUTAv[ fj/L(;Qf5:kKY&19Ga 5P݉("W7~Q5x7. tgB< %UF!m4d[LBX:>D(db?zg䯶8Ab/ct^ŽZ:Pu兊 +lؚ9/{;C  *fJwNq{hCkDowu#č& O25TbFpo yj9l G쎳Mu-@r,x6rT Ve||X?5 0^8s+wD-X98Y@`|i|rن|::,SZVT(3LnװX|[hoO 7Ќ? =lu̳(F jPwMIIn7E{(j;">dhڊ}$WH4FPsn[n&g l{ۄ:EYb(~Fu_ &,UT((F'~U2†.XpHsG?|TD˷`mM{髮0IsSƿ_i -2m# _9uPgP򝛥)D29Lk!BhyaJ'LӕB9X]x+$xLy2 }l%SP$P H0TW3aJ]HId,eE&cH#Z@uv7ed|?BsHГ~]k @=JDDȳD05 YVo }1/MXAt(@s0 ֆ+@ƍvt>\eዞdrm]7z'ݛw'uh({nq1p?{T:9.{A⢼2ZA ?if_ Bt>7 3K紽Z^輡(;5}Ju tv ^ V>:ӂFkl uK GjtH9~P P0ºw[h3Ѕ5 Z=+ȒbÑQ[*S~),]!m8wgz J|Ɵ1O<'G,97|*}8&Iz8Lc,SRf99it+eJ8Ihog[9=bf=)j>d0O/ϋTKht5p|s=]20XUUDRғ#(nUYAGc*jv8`ߡg=(ղ%JL$Ds؋ĀFƍxJ6 C7صevHJ1ly5jሾi7V2CY?~15.W)SjeUŊ oߖs8Ϸ T͏Pa h"3uvFp%#ɬ>t(@\HF=]/L:Ԃ!{5zV9DzPץ2{+Že(8gOpMZ8Wҵ_rH{&6t]ۛ#D-\<6E*Lj i$ɳuͭE@ (EmWroD}sT[$3." :*meE>{Uɼ9$o^X"Wc&u9Kӏ0<Ш|XЕvLZ]@8U/&p8O@_6o$Ѷ51DOca}83t47JlyjaĨ,!u1īrYaY~٩U%Ō kI R_{[\@yƍ>wpSk3Q9 ؝D(bO yW1CfZ`E'oTq#8W;wj6HbpfO3 >BY|3aM vR?K 7{ڿOEp&zGpJGܴ^MWgnhY<4^GLuֈT`|JLm Et GfMy^Z-&4#=MhzK^d>r1dY `ڿv]3'G|jd} bJI2o}Ϳ 'Ll |!agW\֋aChc֬ nfѕ#ķ. *0JK$)h&K0 +SycO%OLâ1T AQɅ2ZEs'g2*6 O0Ws>m\=:q { 1B @ضҵ Ec3?lVo1,w9`tqTd8eCp۠QX'#WeVS P=sƷ\,%tŻ6o7ݺftt9eb(#mBIijc0$R!>>MbS9 Yu% Gw@) kb0BF Ϥ?ܠp_jɧv_Ǫ":79* .JNBKDax*cᢻ/o0K-pxYG*)O  fSHdŠ{phR]O+DU ki'z4_$ Xp@U-0e7{f*T=e1pBUYnIx NKkpe)$E[fgV~$ɎP #MJ m9N6W _丠#1 *$ 9pX=k #륰z `~Ȑ@_10H%3Gw0OT7>mut%zչ}8&C;zc@Qr`ڥ3; i@7䁤|KyIkga8VSorcID{$l6 ާCIa^)zDWMH*ƍCE%OjH4N] pcOn0Xz ??"^BPZ[AV== o27%w@ȍ嶶??O?7 ʋ?_ Ba7<F/Ts_GuV9ONxP4%5>{ YYt]-۳U- *:Pnr#2P8 ꖯԾ/S`8jM6Cep&t }O{VOb>`N$lj@7(Mڏ=Ǚ rnz-,} ƽشR6:ع@ixa7beO()V-ZoﮗET"9u.%k짴M:P~Xc~[I(,}6o"z]?x[cWzyb6Fªxq-PQpcRO# h,쨵5TEJڏ >W"Y\q\6ZH bu8}jpJfg'$+/uCHi6Q'zq"9P0>-d}o#BWeFD~F5IU~Vg F98[G Zʮl%H wϺO%QeFc' ܷW{Eb|H{5|KYkڑ?EW sbݎByvtɪgg4WY׼5S[!YYXÇT.{WaMA`gU2VdĢj/1KVUvl+%[qA :f\] 5_J%JR+͕M9B4 +8}.D'n&vhtD=0:eD6r3fмl 2M}ꈷ h?]x30cްW%yP]A\1!Ӌ7:jm۴_U1- NT.Oe3Q\،y[\sĜ0ոL7PwZ">fxpLA\DZ"N ?Ac~TXvFC1S䩭gacKd.M=nA(i':woy˴"yeDMEJN f_T[&V7vUzU+MKmysuQT{k @hb4'JIBclɲ1bIp]fxҕoJC6?^*gW=1KBw>RނlH%b湆 (PwZh Tib/ƒ _kw(TkD4EP抄(a$AY:c:Ok=8g@]27Qˠ~Z 񻃆ߜŚ]p45lNB$J47![#p>a`JA`kZnEyJgӸN>p+bS/lh Fl73т6y9 yb@ZVS WձEHbI> t0)U[^7\S+a\st!G5vA'Z~>DxW4\LzuC8*f27Z(u+CHxH| 9QMvն[bӛd`.ae5̂K1@Lds59$tS\3,;GsW#APT(oowbR&юȵ nH96vUWgg=BѷIDArH Sq9ϵw1QP3 mem#P^ vH KC?"EʸJX +ߧA Y)*)f޵TS2bqZsjm)[i5!rYB6!ߍ^Hb¬UMaC"{TôӲ:8N0#Ծ@&gQ~vN0ß)|-3WOZǞWru8S+[:$e쉾P%~"CHR!2rqJ7Ͷ|FhwS2ׄ8FB1C5v̬] jsJ[5rG*9Z^u3zi!W:}(gU-ЕMv. ްYJ4[;9>饯;u*r:?E8oqG@?g !4g\P&obqZVhHY>[NsӸG`G,e ;dut,2*wE{&3Z 풍ǖxl务qkUVu@1eXzD𖉼ӫiC` y 슮Eq!(ꘘ`Ov]WT|-w-xLp,y~*5iɕ5(l3c 4YG!h /Ҋ^%]wx4l/*tx l]#lӔQ8 rrSܺ0A %{𘮽x~t5-#yA"] aX<4q7L$z]^w"T\IiW՚E;S8lR@Ѩ$gDs=P%yD1G&wCdx.+[P-j4ם- 42Kvr 3:fӉ,OGP}+Ÿ`Su׻LwāC[>Kf'7Q# PXտ-J`$::)\exR17%5W5Q 2`̚+v;?JZ=jr44naGٸuCf_pt<04*ui_PA#K`g[̀rF9VTQJ3H1+Qh޳mPsj!kXXe>[{fĜ1ۚH 3,l.dJo_ 7(]0ȳ'@{tV>rړS1b]M “:+0euݍy&EѪ^zE.f722uOBɿ*pV0Z2<|y0 dSPWߪ_"E'D柷X7s9%-ϒ ٌL#ɯ&v 2_/ +W@lZO&,Lt@IQ}uhы*pR⥑'] W@\ q65%\6ENS X+Z`A6r]9Tj OY=atQ8⿂.붘'M9 r ;m=u3 ᝾e|ʵq} M6Y:ނvieA?],W4Mb]d:7c,\}jŁ 3D歎49vlUHflz]q#kRޘ*qɋr-V( ѳ4LoX`݊ -Vk!%hR5LݲUl\ rn}T!jߩugMd6?Dv,([0ttܥ&vȉIXd[|4)n0Xg#;mEײʓwf$YVCB80h&Im+a}Nȡ TV[׵Ti?6v(es:*,%&8o [uw~klѐY)1h^QsV@Xcc1̞@a\!C!Pηm]k8ǡ _A3kJە>g8B7=wB`Od㩔oXg#!,:X7xOxk O$&&7ph>Za?ɸEI9 cx !t¸S__t}9ǻwlxzN*%ߪ2u[-&a`5:OvwgAWkh)b ׄ!{`|WT]t|B;a1b07bg}tĵjFjJV]3 Hx`j)'ĥEL)B\1"0DK$ 󄀘BH!|X1`j N%wvBT6шX7fiӁh17noʇtc,:QbMB&(SN^7E =!ˎ@9)~5T]^>Hd+GN>'ܤ!xYdW{r25S,QCw(J ,AYjUrl[BpT*Nhxٌ|D8BL^ƣQLV|[Τ 5djs&W(g| I;rRaj^-T?u0[1NZo% Z EߜG+MBӿ]بEkK+S -3$S0}ċbְ3,^3@"PuNqX +,t)4 %?0h0ɽ_DiB ;d [dmc(*fqVp W4Sr);FՏ>-' +ʞ* S1r5ӻ&I$/ l&I>O.Dǣc{\A ȸ')ąNQ@C"|[te`Ugu?iW؊0~3p%Ƚ#o¦ oխgkcf2:뢞pۣ\pΗӟ$<A૿I#W?Ĕ|o𕏦ڛYd5a[Ngƒ0ܮ?%Ҷo8ےӱNax$ǁ|x1ti;Qp ?F⎐ Yv}:#g9]0Jfȏ8#t4&Yv#.XY:C ctj{9}$ffEo_ZA$ QjAJ>.dn$!/C x 10Zp&g:28ҿ,A #7}XOw1gGp`H$s7f̙1y]HWM[f-WLw9T燏ln3҃j"!]:e֗) *}3\S5, T2>=: -d4 VX$L[>-eHεߔ~9jj|x/=ML5m z`NYW8%M7 ͧdӅT>V|{m\U3 9omɝk3Jrpxg"aŴhq`0pr2Y> 4Y ~( soCL ;w+ۙ/d9yS+KPwZf!grŽvP#0^ni$ ODfW_t-+ـxI|gNEo[U'O hq}]I\>elGDe*U8rJc <>~Ŕ/W ,b˧ԉ)҆i{Q4)2(3֙D$ÄEIIPHhIUGΫ%L\ ̎\ײ.y7!cT._,='{mB2i@}ªcsWƻŊ:0چo@"k쐰xK@To.)O*S٪-m= ?lҠt(8pkp4>YlZnG&P l9uK 1#,β7F9n!C; һku8z{DP1DD ( Z L) {^`,#oWRFzwEȋa ruwlѸz6m4Se$p5hA 9$mQg!,SV HƔWFJР°CI] 2]V٫9Z,x@Dn2#˒= vM3} ɫ7te[78.MiP=Io`Pdμ`0]I5f:W}J^L_+|2?;+_5 i@lM"h=,eMXZiz JF ,.F褕`Ar,7#p?oQf^H+X2|AϦR {|Ո0{n!Q;ꄡf$"ǗG5ŝ c'yӴ n|U(è"QX~TӢ@>~XS7W(fOKH8Q\Iq 1sV8NڤkIs04떙u{t}&7Om)r2{ZZ#IRDы>TA\f)HER=&htMWq@VE8M;a)3AP_,/D*x,S)h@}Kl|R\o,7K Udh/.ʈq'kԲdd4qc5ŶwX%@ $@!\D#Шv`:W.a= ^\"ČP !]=5jA$j+4bס\Ji0]P[G3Kc-ϡ8]a>/dwE*SAO. Y09JMؙRyM=JZ.T$OMM}?| rd|%?,?;BGNJ@Y׺ٽ! 5O#bduV9{"0G3*N ɣ z.!6v;Cj?m?MلX }~ʣ${jmwrcDh,}AپTfgՆŝMyF]phzaR@nCјzrn 3|I"O^֭CD6$9Dq`i"R}VSh=C &aq=M+y[?bV_YF)M-6@|'XV|ޛnq'B,@CC>2dbY I4AXE1UiOp=*MRMҌOBcwN- 3㕨&s(RBߊܨ4dD ={m0Xb {\Đ:%X3|@d5sCK%<}fMx:'LZ?!Uq Rx@A,3k3upv J%N@zh$V,<+̲ Lˏ~{@8Ԉ[0e()֮a<&T W]^O{F!H6f7?%APqq,X<֫z(CsKeB9.Mʐ/ZV3wS?˹Ь!;zrPjIJ-v@e(!v!!pIة@|OYaX Ur, ˏW6śjJSVs/;J۔xG+yLQ/c 6 bU`΀KEgx>ǘ"t x<*яn8R f0NYFbl7T rHORWMs,oLV$*TL!tEU-;٫@3߰_ajD8 h^<'B ?q/ëi+DŽ 2zw\Vb=DetOɨ %Pi{ 8m#̃E`jE8xޔ5 Ks"ݔoGp=|K{fz/QdUi~%֠Cܞ?$!ˠyi£-i$7Ϭ֮{{W_9$(>7@[`$%4͈Kd=qRWpJƍaUExl+.8A-U1}ۘ>LTsu{o_"`z[!ˊEP/0yOSp_YIQI70@%w' kw$C@'X5qQ51-A ,lTCH4eo`VD?cB g?ϗBD\pOL,Ǔzdq̣;+eu3j+vl2 {"AF* SMbR%mTrD+ɏDRW7&zޘ_AT7n"Yz섗?3=VbSp{^ e0k{wɂQ%$ ?>)O!fSms`ɞS,1eb8Hi=GKdݳkTVvt)Ho'SըI}uNT G(xk[h{P܌:u'6N E W͈=BgVAZ m"(k 6(h5ܧ 뿜Xٙ&1&nwvF8r %KE !Gܘ$hB-, k' ,Hz9ʻaR=3U~=AVw$cqQ K]JĻAД3[`w0$2RtDR. 'j㉵>TqP̆3ҍr}Mip0]"=4` 5j@mn!WȕNbRp*1STļd_M}@>ؙM/#ze| q@5>~<2<-ѭ:*ERT[4M54=.\iYc! W]A老:Q2u&R0,nUS_L +'zܳw%66 )Pt+tҙ7VW~|PmE& faGtZj#]4;`F/<\M+Gzkg.e3'<=eHtCD/> *6`O@* JͱX[kz~^H,OqapR&z-}A9Ivf4σ\ֿQk 8ZH$6mX.qb QTŷ hX>L,##o& kT,=ou1y22;Šx>LфQ]W8+ȦA $}z$a 3R> t! veDQjcwr]׾Fhx!g}i\/⢕̰)RvǥZE%=.fi*ËR&RXqu)6[ӈ)<ܺRJUDv%Af,5=tMyg6{?LUKN9$T5{Оf)!L]YΘV?50¹$PA(##VWz%_/VDCZuFt=5qer>sABI] R*nǾŮҹ*RUsW뜛dzjakH]̱mBogU!Q's{U[Où oJ ѥV7`2DWFd1chHZ_PS YK0KLTnz.%Р#XE;]vN5++sX@!P }q `Z/"U V4 zP5#c|)sWOLR(92VL5CSܪTDS'T?MNn=cV]A"?a@V@?k #+3=Q*xX)vG9{y22dOWk?n2o>7lv8b &$ܑmۊH尘V-DԩtiLNⱰ* G`ܫzhk{3&!˖DJ;EO=KHwSj$p')CIqenB۷%zd|D's3,WFHdn@Y_nL I/!GPZ`L51- ÏJU GU1g8l!j:=8MKN=Ex 45Kxи|M!|O_'Kz ϡlC(!2=$8 vtX`^O0 ;~jB".(5w%OFHb : mRe2e I`E<|&T?^VKfcJeu߮;<ҠN$*-#U8D.x`2cW\DKWryKbaӮ,( .ͨۼY} vY*5n w>?4nD-ُ)'ꋞΜm^.: tފ&Q BM>4}wFH.o^GELA"p rtqظ_)7 Mo-H,pvKv#L+@:q/ i/郩U }wluxd0 ԯ НimlN/uH<8qAkޙGkԃ7Id*fs1'ȬM~/\3iHO*W׃O 'y@#^j:T4sd 䔕dwQv/$;L Hk=5 @K~g钵`gKZx;ޮ+ cn<>ҽ h:LUn;E۷Pek!Z$YILĎF#X!0\=Y̽>G01&fWҨ1;;EyÁ۔T4GYI͌.+ <'@!XzljjeڑacL`K4;iġφSr˿*t9D x_9>:v{ #(\4l1e "" 23ze\#6/rKQRI0}3ix5ʂS\kHCz^Rn80vպG_~vՄT.yJ㖕a@sGEt*pٓ5~^ 9ŽV>EZ<ƚr}eaBQk4\(jL|z Z-+G ?,:''p%2՘: }?%GU͗JeC,:"abMnVW*YEw;J:SL'[AEtSG. l8$*t=]=|6Cdּ4f ڤUXOkmc 6-i!ݱYL4aHirg ~it;RgKe|2R6ЭP mD/Nր Y4|VGl`pNн }Xi|U("YuCޚ0ivC߬c"~йs!Ӟ ;`;!~`[\YxJ>C|?H7$jIޏ*Yb&3wA W\fTg%p<(,PS1"0K s_@oKX3{,dkOK`$+++VOД6>x@Aa}Z<>_FDJJؙ⯧]ɫ%yy0>a&Gt5(S0NI6anAgSp=ɀ܅ՈLud=qCpW7c%$}~b7/śA V!(<%bwqJQ_"ٻ=jLC箒c1ҡ[ rex2#`f .C)Iw>zS-6Ú>>b?+lȋSŨ^ktCwGUO}f54c`~ңj(Ϸ0[^µQC]K P;,PdXDԜ=C^?KSż f'+j<_R?!׉%iԜ|]ˣWfttΥZ7Gȷ>%kb4듎.F=? )O*Nfn,l] ``3vĴgH m^*'ޫYddJ]R~ݱzy{+a ZMOfM0| FSU#tM7/7D˚0ff!EV8ͧ 2BSċb_3B8B) Isp*Ǹn MB>qBc T 6%! VDVeDaRvpk`S@ ,}_}ա:ϒA4]Jh(;.w枝ϪܖN$Ey1sfmV]85`Vy҇2Uj=}^+apўn<(Xo)__4Y4.!%i7 bfø#m8gkºLyӿ{gJW yPw{FHqCŴVa{fFeS˕JΜqrhӁ[kal )i?)c''"f^apQ sp$kdY\pXOsj B5BzcỲ @62iЛ 2~3a|_b? |w7ȹ^_oH4Co@[`?3Nf!VFe@HBK$K]Hoslÿ ud h kv_ɗ_]zC&MhSe@k ]ġ x<Vz'/&za6.YW@tP+Q-IICVq摇|szx5TuIw(tȴ4uIlbmu7Ekaz9a>_hd 3lӾ3[I 7h0o9G|)m6˽ )+%;X-.N(H'G/kדN`5BKb*j\ո`%m9Uy\hk eTUކĈ(үvPi6LtRZK.0?}W?а1nB[>,3wU-μ_.#ߗ/T 0>{*\la<0_0^FPS(\b+6Ď[|H?h(`!o< bў8̄ |NtGL'WRi9{~2̬}8a AFoS5}\:6N'+dQTiU^bA W81U}ہo#K93h9vm C!jb 2֔y ֏jՋ]Ny?%Q_?&rQѱ0ȼ n&i֙Vžccn>6'glL04ZWhivrS'y\mu',“ ̺|q'ۀ-Ģд<$ezҬtZ>^9Y#JV~?,dzk-yۆ0!A- 2 Mfg-A1otNcay46VƢ:Sdfe`81,z OeIx l.U+ JPF'vuXd3㲒Ӗ_{éi դkxn+/2b˃՝ .wc0I9xZ*MԵQ+ L{dV'=̄Lrs+vGrTItŒ8bGCS|?zݱ8`#&WvhW |ȱD25WDB; Wn_η^w,'YRT$YL^H4cm縱keFC3`y"1%8Z3,K{2!,~OJEHXG@sJp;mӘĐmߙSܵ_HR9^Ӑ>(7#qGz~oӫ=Xo8iK[~}hl(~VڸܱK Gi}`]vMTFCx/Dh0 $ w~79v̢z !V3OI Pќa1/* o[ms14z!wE"WK~=ֳ EP $mtQ^ou|kfm#*C58vѪ)6EtB|(۶ihZڤad;Riӆ#5n?}AGGv`ƴ k^ *0)O4!}<.wۚY.ʼc6,Kjme`cʬ1ұsMIyDφc7,dt>fj{$.om1߫!Iy_|#&\>8ߧ %UR,CHЩ~׫E|\#IK =J lDQ;Ȓ=#t*m!fq,50 }n[&KAoZ)K|Ud-N$nPE3їdЁutD-U|YU׎'|nqk '{3+$-5y ԁⰝy?&%u ~w|N#o$+ƎJ8|CkFvPA4Dб259䒽Ԑ3!ki*[" ɻW %PqG@FzsD"t~(K٦Ț. P+>5G*?f\#;C ?ddqn\d|,\MG{4>#\%`}3 pSx-uȎ޸>'$iT@ƭ1 Jz2riznWl\ =~X뱐-8o X&g 5P9²-L?13x!0$Ǧ8 ZxAgQ>ZPyi7+Aj+ɵ^}S,na.jF5?bPUÛ`"s9jЙu2)kuSڲuZD!gi ƺe4^ Hܥ[Yꜥj,?WViF_x_Xy!,7gד܂;0Qݠ{-"*~'Y0ZVHaEs}bR6?bnnqOPZ!,IN'z*E1w( P\w ) ~BH~s Sѩ{/PSGD_r`hE[bo;0%Yy+e,;C<ǻ3oNw?i;!O/P/zͦd\v3 `{iG0j6q Do@Bk'1KsbPh=zd^fQL12Gt/HCfƇBWV%VĬJLԶFA`^#S Wȱ^f$i|6 0(/g*C#ImJ#DYz=+I.NAl_D=>_MFWtNm.qpč#TK# øⰁ|Ϡ'!A5ZPy:V >x %8 3@ YFZchҏ,'d( Da-Hd6tCRfB>:{EuۑFI5'z0K`vK̓44ŶA$δ$ {+hc׊ߥCͰm!,wYZA8WR,aKI/Q1YFB`|2pjY75G9ٯ@삣&5MZdbR3Jҹ%qiY:q"kiP7Q*N H஗Œ4zkg^T˙G`RT!T~CT bg!3~ICvxx(i|SL30 ?(9Mx[wy.9xwo#JQS`9(Jc@cd]\}1| ҧpa m2(W5 LhAX,kb}T.ՃwZUɍ|]fZ{|gUS"|WzNQߙc6ҔF3k7J .HShLs;|zuEƴ[ wֺʤv*~_VT8 $ G9zI1bR}? 'ŵ$i-ZՓlrЎQCHzŠNjACP`_eN>Ά|}-224UG`N&dTT$Q$k )u0ލQW i*\@7~% xbXFpsaS D)$sc[GPnVȔ+7|؆/Gm}7al_4]> qYFj$zD) bi7aPFCA@gW"MߓX?slBL4#ʞ (k}V0YWٟIwj3"Gy:t³ڗӥ$vt?ﴉO&&nۮ(RP%1I47ᐲkE>=Uyv*[B#8?>bFƁr "޻h^zp msa?}BvzugY'g'T "JG/톐 G.ftqR NFf*Cɫ@8T@?qeoXfx ᫸ƞ9?uM.Q =`8荸H4<5@6zH,4 2(ZE&$OORC 9TT-k:9T)ɀiM}Yq̧rƂmXu<1/tgc!IA:Fv obq12ݱ,_5h?PK=,}B_:n3!P[ɷFT w4`Rx,˿R)Q4xnL˧sV3v[g<'& İ?,TMq:I$2NNW-Ց5ݞ_ςx۟Wj0 ɩ"CNLd dD1?Y0}K/#Jgj,` eݶW MP;k2PHIڻrim^Z3ߠc*7J1m ~ s"i-U9^Vhep6.ܘoâE+"8DcɊNw7 8U,oeƃpArp-1S*"?\PRB6Ӿl4]ll|@RCJeȢN'~*,s`z:hVDn$-M "}[v8pTL롈aǤU5:ꊢxq #|!}@'ǾL%nL;sN}f 4Jxy:2sOYˀˢqYGewM@EvQN AhzdΘﺷy{Rs l~Ԃi_c%*_G ޺a KWqhJS$GTt& ^ -&n1u29vk(bGSY{|48jC|ctɕ?nC1Z\[?J{4, >9xjw87ޜ&t(Xtߌ ύS `,L/(0ZCC]C{9=SxG! # f{Uk%MЊ 璉^q7E;RvpYc@dҪӔ:b){ӟIؠ] QRZhO]EQW`y'揽i;͋VZKb Z>,.5\mb}jLJ59)Y%6B;O)2oh ~ D1y+?$~&\;F!mgvJj%:dJtm;Z;{ώSҖx.{C+M 2fb&h%&J#z!9H o3XkhOşP+dTdR tʘ;V;O%\ %ЕOe=9+}FIԄIbck.8#pZ Jee#-?3gOx>0u0ʅaɅcۡuI]CM{u" _*Ocqk28cdRMb_?L^c(WpϜ2Oj _րmcgn/ Y |QR9Hڠ!}SΆ0Hb&Ս;VW5Bn#l@C#FuWc).s2xB[эS,0بЅ-H "Fn -b,0uܩj 3] g ^d[EVcqlƳ _`/鋉Nn[|s7Ls<9g -"7= u dߞ-fhE3aDf0EXV|IF IұЖVk A*;kdxS38zR-l 1p&[ P,ÅXT&H@긓QQSX1 ;^A`k 3wX|jdP+0O0)--CUYvEIthO?Cq];LCW*@f739ݾP5;FFjWlrSnU}>Ý rv(J;F0,ܩRpF9}.6|۳sqgF ԋ2V?V\b QR}Ӥ7jmk*_"̑abH.oQ*x {犷hX@6+>D]H'x8&0iOvcTwrւܟ 6i/9yr#I " Fn7ĸrYtAMa@Z[_ + O7#}G]ی zr|"=@Y D3"m=JF(sBN8P{ZaהG;U )M"NY!&xo'? #aLHZ+NFx$!-?Vqa -6n&kYe~LS߫Ϧc}dhRGRORDy{UF6~z߄bs%D:Sal  C8o!_(MA`r`8$2tu>G7B *(Jc"FX=a/,Rx(T ukU,԰&p,dD`s95O pkd!3 O Xf%Iaez LFs^&iue?4e:t|Yr[sT 効&a"=ԕv+ \3j֙&Sd)"U)zWDYbUDP `Ue?v(UFKi{:fN(S/ ቴ$"ME}Łe'"y2ir+b2ZҤ[/Q9d5~4ת+y|1#7(Hle\vU?k1띮@0r"w-h-A)5'["^3,ido(Gׄ#TPbsi%=#Țq/?T޻iN읚ݏ4\AV .:;Z~I n$q4Vhp9_)XIC?Y6 E[dGn.⚥_+Rr59V;0a%JAT~iWΉm13 ߅Kωͤj`xOHͽ.V6 U gj~Hq.ceM~\!T:IJ#1!zC}A|)RPo [Fh؃b>K>nePbSed5vxq8,Rvaݡ(F7:Ur=XܷC!:ϼZ&z`e5k I7O 2s.唵.}GgPpC>,N~MiO<3c,.cmAiv Q,Ҭ^F\299L$]^l3Uz;@Q}QŹ$X>2{ar8M RRjU /g}: %}fu)U$TC1 ꢒS8[ZХQ0Zy]o4qL~9QSK i$Eyi[ak>n{y'QQ Ct/`KeRbƜƶсK:]ݵwZI^fB7B%ID4:H* zz^t:E I>YD#鐾n<i 5qWTK5[LH{~jFzip0-S``:BL IBCɴɘ_3w"]Dff9.m:z|99/Qk DG-PcUҍh144t)V_vߺ1'_ڻ?w6.`y f:{&^|tPO5ۅ3$ZZ$`I~y?5&&8,>NvjMrq@3wf~Q͢jceQ=O!{49=PoDZ5Q9vZ̭Fd>aFU-GQS b\0 8w$p1E&.Bz YJKAK{J)MC 3ܺ]M:9 [a<OavLi{BZ(MHԫky=Xs6(/fԞg !4{UB=Aڠovz蔪z]] 3)Y9ճ #JHW3a1FW.CUě4pԸ Gަw1}"?T&Wg+)r}.{v>Sme&̃Z)CF7Tyu٢y8Ct^AHWؑp{Ei:9Et>X|5OG!d4{n¥ה eAsy|rɵ˷As7Yfq;~kCp0sADaiPA]1/b4F"$UaK4,yb@NlQK55RCCTmJɟ fCcn#^PgFV٫r<}MՐd{W/$co)b86G8wi]xP˕c=Rc g{y(`)Zv|Rb [~Te%%{ଏ0>[/PXKsձ~C=XwCjwVT @E]SU 2?ޕ)vfv{[ <9ةc+Ĺ>[{M.OZOx[~Nڜt{r]ufJZIZ2ZuJ ۷8~@=TI ;A(*vY{Y0I8e!gs8^!=kKFcpD[瞞w8j `ГUSW=xI @ n@6 OW ]V`ybm*d*N?vg0'+m{_Ys_nr&2E~UKLx 7IZ{@L:͛>TlP/Q]f_Zg}N nn+!M8{;6Ye?7 _Ȑig: qޥ;4lqrb_,߮u3NovZc9[a =]~&Lkƥ4ΤQ#{ga}WMF5ء!=m`b*Ԅ3|oץCIx+>0,]K;|y!55M2JX~.Ƞt et*,bJTb =ѥqX(ĸu# F70&Jv ˮԐqglzC$F5A^fSt"8r,9s{\r`"QPiFg.)(bOS/S~@7/%S/I TWQGxzkǒʾB!k3o+0%2mirOTqUn%nhR *mH)@hmfS7NFN0k$k<>ȊմERAPpIDK(o^G\Ð~ۄnh%pxDbJQRrZ!VncGNCG>VwZHkb49XenoLUVu'œfoAHyEF9SML~+x2&y\>@onF9,ۉuX|Gڋz [ٲ.tH&J|3׾5GĦ2uqkCdP%͡M(JP2yEPnTQ$O(]ƻl(wO 廏2?x(% 8nC(WXVn /f6$ 18/1KT`Yʵ:RDZTVԙH3d׈c-|Fr¬m̾~ T%Ix-66Kz"~Vsn0FAvZF;"GJQ 7*Oy~oI"RTfLv|?es\@[ͩ(qu@0(>Jl6^Y'-""ߣ>E"kP%/$Csy* D J.9G#V%\:Yb28={@Rc'gK,ZDk`AO>O\ʚԿE'f)Kh*z"1e+N,͛\?lsWA$,QIIHu0D@uY5 H0sK#EgdcGH6eN\V^M0묄!e6unXEF.[X8~Yӯ@E؝$r*7RExMJ-I 2 8Dkuz/Rqd>E,KQBS*=Y".y7Whm? 8P$^ޝ5] ߃Ty\:7nxp?G ~ŋl rqrknoOru[Ԧ gWG9W; LhWζ濞0<\CJpH?dηp,]52ZaZCJ=;h@sh"*&%D[UW Z) *k5 WmYs 5mw̌Oe5C3 4#*\ SqzS#ޒ_E<-z0(Ԍ<]k;S@Qq;bSGaZ| |)m2wDmxK$ȓBu/Ny[uK5_Ppkx';`h{.jjrPڛ>5mҒԥ$8Z&e]KUZĿ4C/0}@*ө=M4Wn){8,,gQ71s_qPQ ϽB+9//_ɛbp?@zr/;lkE9W-k#ud՟gr&M|d^67 w@`|D F䊎OO"GsK )EKQ t6M8&PMj?JJ6ؕ]iyK1*]=zy2cfo[>5sg^.3pG` <M8v5nh`5Ƞ2s_>ȟp>x ݁.YNN7Qdabm76%eݴ;WSW$fF*q0j2bQMi #ZW'Gޏ-Y*j ;'䉽'ڂ ?čK[%PyH}8EӯM?mh^ۣmȅ'jǍ=qtXxs pv)Vsyu&O{N&FBy3*yБ~K)/b⚡O_K]jh6Ā^BVlw:QUɍw 2[=@fNipF%Ș Y'+z鶉sCFv7!WHzvJNܖD=nbA@hQÀYPu(b3o򤃲YK2Wj=YEGF.w :[\+U\xyߟ9mZv-e)wRԥZMa=;~/$1_nIF$;Qlcw5tK@_H+L9G7ó5kօ'Յxj>e&wwHzc^rk{⇈! &(R^8Kjo+ ڗ3ϝ^6ѾA.pvW p"LRP1h\üA7botF_Sq!fU)\T#oIn qJE#nrh`c"k^# )E_\'e2<]} &vfLGR~p)Ix#Ϳ& B/ݗ#X1_$>++u{ߝŋ?Wq;$?UӇ_LhgPx:jC@82cMISq-3Ai2^[؞`@KY`;R<PEPcV1!.e7cgc$J40';@*٘FuVL2BKNJ9"'Lthyċ'w@ض-W@Dx :E6hpk 3,H%`)QU8r<\nf-al݀n='N|ä6CpA 4/XJg #؀ Un?$h"pTpk)Z3,7}G)') n~lޣ@R2wԘaA+v/m̌k!E8:6% 5.l'zL_q=ʈQSB=.V/&G_\ʟu vUE!\ЉEd=0}{wW6he$j$ۇVX>ʜ"RDw˽V"VAƼtؠg܏"ґ g?j yUձfmc9-2`ok]}E gQ P60O$OKB{Nav|5V煅8qxH'zҬcJlh>,15!Ϩ`L% 8l y`=Bk8|WMIOO6|AI}0@|"?fYvh"OJ w?ɗ@/{XA#0 xͪN2%mG0@m*H7 , }/W,J kJ.~kxٽtN#tuX #9BˢQeLz\zD=f!nxVGWB:T~b&HnX`ֺM)69䵆PTdچ }Bni^$pi; 0NHж{RȦ S^=54! #oT2i暁מ*k1)T(k:l_oZ/ cGPK wz:cij"kIggsI>KX57 l+96a-o,Ǣq;УήC GQFQ HD!Ő{ (˛,4(]'V'(dKcnudvQ׃H *3z9qu&E-R<h(:güvCXC^E;7HC65{xֈ;ȓv4xZD3Yh@e }|VJ=_pi)w 2r&|뻐?>_\'' wgTǖ!zwĬѯ>wse`Z[6]W~{Fz_9y*>&oLAO.,C:~l8 EΖ)({Bn$2p3KR HC\g'wY;q7x}aTⳮwǢ2u T<*@5|#1ϰ$4Ԟ %,d H{8xuf ^"U2"СMoଈ6L)cE,!^_W;Dz-L lS/Fujqʔ-aIWɶQ@JMWLgXg^â7͂kPo x5v h4%"I.ngh61yk%Ce@Js?]wȕv5WfH䠖5VPXBݺΖKŮEpa924\S& nM'+C)䷉&4(63 +TlpseՐ@n=ÞJ)סZDNg=8*baƯcۄԇC;RZ\ЕnEۉ,H @aU+W| #Ah#PIYU"r˥7 [` 6O QRJff1)H&@o_WXU, )BZ1 x ":*)cTHG#]:h$k BG0芳Uo(gϲx-YtMaiӼ/EŻjR8H\cv6Vz3b&gp6)c#T/coET6 p͟J܇CNFG B!nwH.J{]K!moMԜl>nM^s6Eja)#UQ]?We3/;5jSCS@x  k QTHʚd|Wq*8Q4<^XwTf .\72q5g!XUᗮ% Ŷ|ޣ6=IY&1Ѩ; ڔNugGo_Xyx݄Ҕ5'|1Bzܖ Cvo5A3qLFP`7]tD2X$#dd&E<,1m*f2a7F?7~Z P>eh]Wac6acyb_$ݡ~6}Ů2v/Ġ+^DʬBJFiDlY); d:>g#ٺr]"3,S pm%({ Ho3!14H6q [O=M͔gP&|5H #: 3k|šn,ytim%-x.EmSAP,<9d׎@P#~MgaHE늝S9NdVTԼu3_ZAMj9€T$ |9Wߘ:{*#v36C^tr`Rp5ܮBp[V#??#Y[AjKuLM)l{wsUV0^r BN,u S3,O>oLob;Dk?a@ʟF[# pܵYA~+rUa.C\T:Oig;7iV.QIp> RS|+EFOr fG"j`l&pViSlRo(LyygT  %* H8&s{YA(sY#fJnGN?Gѐ}^FKb36;U8E,UGEGc2jkК8r<zrA]qS<@}qI43f*\Ps]ej;\Lƙn5-,e{c\gYX)_Iߑ= Q$ILHvQ:/vT OضnLj Bd(hM8+XEHYkכe<$0etRF40&TOR9w ~ɒi;2fP^"vzۢP@kU{ 5,h&I{ʋU UxkdUeaS $`g9e̶s%&69;}TBkqh @ 0Bez [;#h`}F 9[Ԁ(\Ml!ypюkkpjy_i W2N[@e%K" 祾a7p& E8*0?ٜf.P*Q3S)D"f!KgjE6R-S5GY)^[?VIgb^^%! hAKiFM+sռQփv-t [Q\gsQdFsRރ=ԐgYz&$0c`lyKΪ!gl6ҡ/)W7`2R&H Mwٸ^j- 0`G?uM_Hak uPSԑU*;Nl4dQus`5 .h~_L, &4euR㵚 ّAV"8h@'y<#SX'Re-ֈNJbi,o@&^a%8ګ+gre!Z#ŠT^qT`zb鮶Kߐq7 w_ZTD2)q"D,MQdM[ Z+$X4J6cpRXX; yl7M̦).~9#+I3 $|Ӊ%L^y ?vCQյY~@x2ͷ#Fˢj;fhV~l1C$HeG<-&(yc/əw`zD7&;*۟9NpYD%#K򣵖\y5c ~_ DVzu+V3Kzd(?.=e`[%ʿʷe4$`щK[ec#o,5LdZ{`gA[ ^,x4͛E/T.O=ᯏ$q5j8#JW tf aǙ*7|R㒫o=ڝq$x'6/0YXQBw^+,f(l q'N0a}$ ~9[(΄V7+3Йd441xGle~N%$I9r }y-3*dK@S*p~UHEa? ʵ\˲Q ,*ٌ3sXK` e[Ԩu0w,v!c\s8d1d. tݣ'D/3oWJk$ @9rZFVg$ $z]i6t`ޔ0r! t՚r%ؓ#>jiQ j&rݖ |α75:V+ԁb""ͰrȒL U[¹˹U)brҩDJ =H-ɟw|U"Zp0u&+,rHW"탉4 +`fUvCKˆv;*7Uݠx5函hEJl9ia&\b3j@Ahz~3w̓5+"&ۢYyDB>4#7/FyTZrJ [P'Ჺ=܋.QYɢP3`l\u{JdQϔ/XA]ٷPv캽/Y^U8F4ba .#:k_ 43n8DneD=qɰAHq--V-n_i,VZgPqt9,SՅՙ z6QVi~r7SQOFyjP {_l@!|1#26;CWM2æ_ Vwם''r4ҍ ̈l瀲9>yBjyw݃Ns@vEW5w q;=dCI$y$Th-cd++3>uS39f@'ʼnɿWI%+d BKe-Qb!MDiK;BZ䛔vN`#9o .ݮ8Fݛd@7ǧ2(.d_U$; sԖ(x9L"N .©C%S"I)F͒˔-M_ 70d`kC+7":3Lv͹ G@Ng9k$m !@ZSu2N,1rH!S+-K `qrD.z[}%/grub*u 't2a4 hB߾Rʰ*2Ë ?KŁB+7Pa `d i)E0T[\wZ+vp <B@:M9XJ"V3[2sǬIQ Hic+qFb4<&Z`a鑍Mn,أ;p1g^H׬&OK'Xya8@K+aj)=@wcE8!QlLU 7!{1?^&1Q+N)=3̠HGKWA[Uw"P̛znkwnF*&>zHS^PpRfIJR<&qJBK;-jy^9CX,2/˕:98kzV왫j!ME}VRXJD 9qB1+scC/Xp^)dXǜ*e^0DlR;lS򲃴[9JIӮŒBPPNAsȲT(˃0ZwѝV~ gJqeGv-nWS;$g_+H&ID%ɿ չB`7؟!/8r ~3M<&EI5Fu󝉫c2yE!Af\j=@ϗ~d,N=ƫņYBAyKOHR]R ,2nn2Nb1IG\2MMgѸƙ+!70K8DWnK^duvk/Vz/%t8 ^ip&J> g_~?^Ԛ:%Jdwc geg8]}2!agi~j/VqS XI*viJ@.yǁe0WrS|3N(Ŏ7F8vfnX= T!>4 ,K!x 7\%qo->/-ne 7ÑEDo^ײzzqFb`G"`RW ĝ2WVۨx]9zU|h:pپ:GN. nh Pc9m|N85<4iEE5VEm#L %Rюb^n(\ɠa4K;OAy H.w4fG/FnܼɍxP˼pg ? d|ek7 Sq"cTm =4[z=WZ ^ ޓ{(A^CA\JGGҼ4) sq}/ReHަkB~zdC$R!İTn6޶g怌0=kh/f$&d ׫PI7A?RpRn\=6ȨhIC1|P:ʳB#3TBJs鏅.vAh+WD4Ţ*+U4曰4%]Kavh߁?W>~DP`w҅fQg\`O4S![N*M: Tn P$jjiH?p= ;"@\Qe64qshFY/ "K>KCZ Sڴ(Idmn펌BrgfRS"THuIqUl7VmH:aKG+% WWy/]OB,l/,*qϵJ kEo?4h;qj溜jrփ{\?ȍ`,EFjh[L}$UvP~ ȡ3vX*md,2KP@E grZ^/)Jn+b܊uUT.yE: 4]<$qhP7X4;Np騰GĿB8Gj K>}9.qgJזƈLv{Iehy8K _qd>HVT<\ZD&6K)*֘a|>jcى*rrj4@3JΆo«v>UI8'1{M[K_oǰJq1 muaXfq|Y=ܠ2֕BAۇ霉،I81lrfnOx> #%H`_De 78@& i _yW©儞@s篏3HKNZs`DT ,6Zuĵ} +,lO󉏇 +7ƂM Ywu00+BXcTEA3k98E,L$qXgZJ~Y-j+-Yb9YZѩ";~Ox7+!p vo0O$\0/(9#G)P[ l#{徛A'/7RZ39< &}/rșT‰vMq.ꐏ4@ ɓR0洔.W~)/w?qs+Tr>w׎vlףOgdkЏ~߅/("ϻ㐶;Y=@uW ,1kbv5aamaE=]&XQEw&.5XޗF3{L?v&l"Ys]n2deO(W|awbRr,9qaԆb6{ kVUNw2 y){O q7j.Wgq.αNêʧй/YeŬsGbr1qq^faCPph`s$hm^YV|m@J7O Ș)u5`Yݸ!B: 2F(f~܄{nK/T&|Pn 'ulf^=\5ZJQyҔ, [ : 1HVKNU˹%-=YRLߘ< '-|پD\J{_ h\d4,g`rSb#XAm᳕J)"Z8N|wS;o; {tj)H@7B-9KijG1u%(gg頾7)ēz^΄=z;4/?DXogYK[/qiq^Guڳ[5Q0oඤCneɎYΗRw(.U//FB$ם?d`׍ ^+޲6*\UKL1q^Ki6 SP;/7W⎞>-7p%M6N\[He@"?ljkYSv9\?[`_^C%40)NhDʢldV99#Eԯ-Q3!1H ' (1;*BB\'Ñ)؍,)Mҝ=z|!W'*[VVlnsʆ&<&ꭇM~t;EkÂGVmrӓ]O3=`#yqc_ޞBK^Vkם A"Q80q"h@?BdW·ko{&%}