From cc9f2fa712a968c74579c78a6ca7ff400413c2d8 Mon Sep 17 00:00:00 2001 From: Alexander Afanasyev Date: Mon, 18 Mar 2019 13:51:10 -0400 Subject: [PATCH] Update build environment --- .gitignore | 4 +- .waf-tools/boost.py | 356 +++++++++++++++++++-------- .waf-tools/default-compiler-flags.py | 194 ++++++++++----- waf | 19 +- wscript | 2 + 5 files changed, 398 insertions(+), 177 deletions(-) diff --git a/.gitignore b/.gitignore index 4ca1da7..2ca8e0e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ .waf-1* .waf3-1* +.waf-2* +.waf3-2* .DS* .lock* build/ -*.pyc \ No newline at end of file +*.pyc diff --git a/.waf-tools/boost.py b/.waf-tools/boost.py index 8c36b34..4b2ede5 100644 --- a/.waf-tools/boost.py +++ b/.waf-tools/boost.py @@ -30,15 +30,15 @@ When using this tool, the wscript will look like: Options are generated, in order to specify the location of boost includes/libraries. The `check_boost` configuration function allows to specify the used boost libraries. -It can also provide default arguments to the --boost-static and --boost-mt command-line arguments. +It can also provide default arguments to the --boost-mt command-line arguments. Everything will be packaged together in a BOOST component that you can use. When using MSVC, a lot of compilation flags need to match your BOOST build configuration: - you may have to add /EHsc to your CXXFLAGS or define boost::throw_exception if BOOST_NO_EXCEPTIONS is defined. Errors: C4530 - boost libraries will try to be smart and use the (pretty but often not useful) auto-linking feature of MSVC - So before calling `conf.check_boost` you might want to disabling by adding: - conf.env.DEFINES_BOOST += ['BOOST_ALL_NO_LIB'] + So before calling `conf.check_boost` you might want to disabling by adding + conf.env.DEFINES_BOOST += ['BOOST_ALL_NO_LIB'] Errors: - boost might also be compiled with /MT, which links the runtime statically. If you have problems with redefined symbols, @@ -52,27 +52,60 @@ import sys import re from waflib import Utils, Logs, Errors from waflib.Configure import conf +from waflib.TaskGen import feature, after_method + +BOOST_LIBS = ['/usr/lib', '/usr/local/lib', '/opt/local/lib', '/sw/lib', '/lib'] +BOOST_INCLUDES = ['/usr/include', '/usr/local/include', '/opt/local/include', '/sw/include'] -BOOST_LIBS = ['/usr/lib', '/usr/local/lib', '/opt/local/lib', '/sw/lib', '/lib', - '/usr/lib/x86_64-linux-gnu', '/usr/lib/i386-linux-gnu', - '/usr/local/ndn/lib', '/opt/ndn/lib'] -BOOST_INCLUDES = ['/usr/include', '/usr/local/include', '/opt/local/include', '/sw/include', - '/usr/local/ndn/include', '/opt/ndn/include'] BOOST_VERSION_FILE = 'boost/version.hpp' BOOST_VERSION_CODE = ''' #include #include int main() { std::cout << BOOST_LIB_VERSION << ":" << BOOST_VERSION << std::endl; } ''' -BOOST_SYSTEM_CODE = ''' + +BOOST_ERROR_CODE = ''' #include int main() { boost::system::error_code c; } ''' + +PTHREAD_CODE = ''' +#include +static void* f(void*) { return 0; } +int main() { + pthread_t th; + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_create(&th, &attr, &f, 0); + pthread_join(th, 0); + pthread_cleanup_push(0, 0); + pthread_cleanup_pop(0); + pthread_attr_destroy(&attr); +} +''' + BOOST_THREAD_CODE = ''' #include int main() { boost::thread t; } ''' +BOOST_LOG_CODE = ''' +#include +int main() { BOOST_LOG_TRIVIAL(info) << "boost_log is working"; } +''' + +BOOST_LOG_SETUP_CODE = ''' +#include +#include +#include +int main() { + using namespace boost::log; + add_common_attributes(); + add_console_log(std::clog, keywords::format = "%Message%"); + BOOST_LOG_TRIVIAL(info) << "boost_log_setup is working"; +} +''' + # toolsets from {boost_dir}/tools/build/v2/tools/common.jam PLATFORM = Utils.unversioned_sys_platform() detect_intel = lambda env: (PLATFORM == 'win32') and 'iw' or 'il' @@ -104,34 +137,37 @@ BOOST_TOOLSETS = { def options(opt): opt = opt.add_option_group('Boost Options') - opt.add_option('--boost-includes', type='string', default='', dest='boost_includes', - help='''path to the directory where the boost includes are, e.g., /path/to/boost_1_55_0/stage/include''') + help='''path to the directory where the boost includes are, + e.g., /path/to/boost_1_55_0/stage/include''') opt.add_option('--boost-libs', type='string', default='', dest='boost_libs', - help='''path to the directory where the boost libs are, e.g., /path/to/boost_1_55_0/stage/lib''') - opt.add_option('--boost-static', action='store_true', - default=False, dest='boost_static', - help='link with static boost libraries (.lib/.a)') + help='''path to the directory where the boost libs are, + e.g., path/to/boost_1_55_0/stage/lib''') opt.add_option('--boost-mt', action='store_true', default=False, dest='boost_mt', help='select multi-threaded libraries') opt.add_option('--boost-abi', type='string', default='', dest='boost_abi', - help='''select libraries with tags (dgsyp, d for debug), see doc Boost, Getting Started, chapter 6.1''') - opt.add_option('--boost-linkage_autodetect', action="store_true", dest='boost_linkage_autodetect', + help='''select libraries with tags (gd for debug, static is automatically added), + see doc Boost, Getting Started, chapter 6.1''') + opt.add_option('--boost-linkage_autodetect', action='store_true', dest='boost_linkage_autodetect', help="auto-detect boost linkage options (don't get used to it / might break other stuff)") opt.add_option('--boost-toolset', type='string', default='', dest='boost_toolset', - help='force a toolset e.g. msvc, vc90, gcc, mingw, mgw45 (default: auto)') + help='force a toolset e.g. msvc, vc90, \ + gcc, mingw, mgw45 (default: auto)') py_version = '%d%d' % (sys.version_info[0], sys.version_info[1]) opt.add_option('--boost-python', type='string', default=py_version, dest='boost_python', - help='select the lib python with this version (default: %s)' % py_version) + help='select the lib python with this version \ + (default: %s)' % py_version) @conf def __boost_get_version_file(self, d): + if not d: + return None dnode = self.root.find_dir(d) if dnode: return dnode.find_node(BOOST_VERSION_FILE) @@ -144,33 +180,30 @@ def boost_get_version(self, d): if node: try: txt = node.read() - except (OSError, IOError): - Logs.error("Could not read the file %r" % node.abspath()) + except EnvironmentError: + Logs.error('Could not read the file %r' % node.abspath()) else: - re_but1 = re.compile('^#define\\s+BOOST_LIB_VERSION\\s+"(.*)"', re.M) + re_but1 = re.compile('^#define\\s+BOOST_LIB_VERSION\\s+"(.+)"', re.M) m1 = re_but1.search(txt) - - re_but2 = re.compile('^#define\\s+BOOST_VERSION\\s+(\\d*)', re.M) + re_but2 = re.compile('^#define\\s+BOOST_VERSION\\s+(\\d+)', re.M) m2 = re_but2.search(txt) - if m1 and m2: return (m1.group(1), m2.group(1)) - - return self.check_cxx(fragment=BOOST_VERSION_CODE, includes=[d], execute=True, define_ret=True).split(":") + return self.check_cxx(fragment=BOOST_VERSION_CODE, includes=[d], execute=True, define_ret=True).split(':') @conf def boost_get_includes(self, *k, **kw): includes = k and k[0] or kw.get('includes', None) if includes and self.__boost_get_version_file(includes): return includes - for d in Utils.to_list(self.environ.get('INCLUDE', '')) + BOOST_INCLUDES: + for d in self.environ.get('INCLUDE', '').split(';') + BOOST_INCLUDES: if self.__boost_get_version_file(d): return d if includes: - self.end_msg('headers not found in %s' % includes) + self.end_msg('headers not found in %s' % includes, 'YELLOW') self.fatal('The configuration failed') else: - self.end_msg('headers not found, please provide a --boost-includes argument (see help)') + self.end_msg('headers not found, please provide a --boost-includes argument (see help)', 'YELLOW') self.fatal('The configuration failed') @@ -198,7 +231,9 @@ def __boost_get_libs_path(self, *k, **kw): path = self.root.find_dir(libs) files = path.ant_glob('*boost_*') if not libs or not files: - for d in Utils.to_list(self.environ.get('LIB', [])) + BOOST_LIBS: + for d in self.environ.get('LIB', '').split(';') + BOOST_LIBS: + if not d: + continue path = self.root.find_dir(d) if path: files = path.ant_glob('*boost_*') @@ -211,10 +246,10 @@ def __boost_get_libs_path(self, *k, **kw): break if not path: if libs: - self.end_msg('libs not found in %s' % libs) + self.end_msg('libs not found in %s' % libs, 'YELLOW') self.fatal('The configuration failed') else: - self.end_msg('libs not found, please provide a --boost-libs argument (see help)') + self.end_msg('libs not found, please provide a --boost-libs argument (see help)', 'YELLOW') self.fatal('The configuration failed') self.to_log('Found the boost path in %r with the libraries:' % path) @@ -229,15 +264,10 @@ def boost_get_libs(self, *k, **kw): according to the parameters ''' path, files = self.__boost_get_libs_path(**kw) - t = [] - if kw.get('mt', False): - t.append('mt') - if kw.get('abi', None): - t.append(kw['abi']) - tags = t and '(-%s)+' % '-'.join(t) or '' + files = sorted(files, key=lambda f: (len(f.name), f.name), reverse=True) toolset = self.boost_get_toolset(kw.get('toolset', '')) - toolset_pat = '(-%s[0-9]{0,3})+' % toolset - version = '(-%s)+' % self.env.BOOST_VERSION + toolset_pat = '(-%s[0-9]{0,3})' % toolset + version = '-%s' % self.env.BOOST_VERSION def find_lib(re_lib, files): for file in files: @@ -251,28 +281,109 @@ def boost_get_libs(self, *k, **kw): name = name[3:] return name[:name.rfind('.')] - libs = [] - for lib in Utils.to_list(k and k[0] or kw.get('lib', None)): - py = (lib == 'python') and '(-py%s)+' % kw['python'] or '' - # Trying libraries, from most strict match to least one - for pattern in ['boost_%s%s%s%s%s' % (lib, toolset_pat, tags, py, version), - 'boost_%s%s%s%s' % (lib, tags, py, version), - 'boost_%s%s%s' % (lib, tags, version), - # Give up trying to find the right version - 'boost_%s%s%s%s' % (lib, toolset_pat, tags, py), - 'boost_%s%s%s' % (lib, tags, py), - 'boost_%s%s' % (lib, tags)]: - self.to_log('Trying pattern %s' % pattern) - file = find_lib(re.compile(pattern), files) - if file: - libs.append(format_lib_name(file.name)) - break - else: - self.end_msg('lib %s not found in %s' % (lib, path.abspath())) - self.fatal('The configuration failed') + def match_libs(lib_names, is_static): + libs = [] + lib_names = Utils.to_list(lib_names) + if not lib_names: + return libs + t = [] + if kw.get('mt', False): + t.append('-mt') + if kw.get('abi', None): + t.append('%s%s' % (is_static and '-s' or '-', kw['abi'])) + elif is_static: + t.append('-s') + tags_pat = t and ''.join(t) or '' + ext = is_static and self.env.cxxstlib_PATTERN or self.env.cxxshlib_PATTERN + ext = ext.partition('%s')[2] # remove '%s' or 'lib%s' from PATTERN - return path.abspath(), libs + for lib in lib_names: + if lib == 'python': + # for instance, with python='27', + # accepts '-py27', '-py2', '27' and '2' + # but will reject '-py3', '-py26', '26' and '3' + tags = '({0})?((-py{2})|(-py{1}(?=[^0-9]))|({2})|({1}(?=[^0-9]))|(?=[^0-9])(?!-py))'.format(tags_pat, kw['python'][0], kw['python']) + else: + tags = tags_pat + # Trying libraries, from most strict match to least one + for pattern in ['boost_%s%s%s%s%s$' % (lib, toolset_pat, tags, version, ext), + 'boost_%s%s%s%s$' % (lib, tags, version, ext), + # Give up trying to find the right version + 'boost_%s%s%s%s$' % (lib, toolset_pat, tags, ext), + 'boost_%s%s%s$' % (lib, tags, ext), + 'boost_%s%s$' % (lib, ext), + 'boost_%s' % lib]: + self.to_log('Trying pattern %s' % pattern) + file = find_lib(re.compile(pattern), files) + if file: + libs.append(format_lib_name(file.name)) + break + else: + self.end_msg('lib %s not found in %s' % (lib, path.abspath()), 'YELLOW') + self.fatal('The configuration failed') + return libs + return path.abspath(), match_libs(kw.get('lib', None), False), match_libs(kw.get('stlib', None), True) + +@conf +def _check_pthread_flag(self, *k, **kw): + ''' + Computes which flags should be added to CXXFLAGS and LINKFLAGS to compile in multi-threading mode + + Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3, + boost/thread.hpp will trigger a #error if -pthread isn't used: + boost/config/requires_threads.hpp:47:5: #error "Compiler threading support + is not turned on. Please set the correct command line options for + threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)" + + Based on _BOOST_PTHREAD_FLAG(): https://github.com/tsuna/boost.m4/blob/master/build-aux/boost.m4 + ''' + + var = kw.get('uselib_store', 'BOOST') + + self.start_msg('Checking the flags needed to use pthreads') + + # The ordering *is* (sometimes) important. Some notes on the + # individual items follow: + # (none): in case threads are in libc; should be tried before -Kthread and + # other compiler flags to prevent continual compiler warnings + # -lpthreads: AIX (must check this before -lpthread) + # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) + # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) + # -llthread: LinuxThreads port on FreeBSD (also preferred to -pthread) + # -pthread: GNU Linux/GCC (kernel threads), BSD/GCC (userland threads) + # -pthreads: Solaris/GCC + # -mthreads: MinGW32/GCC, Lynx/GCC + # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it + # doesn't hurt to check since this sometimes defines pthreads too; + # also defines -D_REENTRANT) + # ... -mt is also the pthreads flag for HP/aCC + # -lpthread: GNU Linux, etc. + # --thread-safe: KAI C++ + if Utils.unversioned_sys_platform() == 'sunos': + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthreads/-mt/ + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + boost_pthread_flags = ['-pthreads', '-lpthread', '-mt', '-pthread'] + else: + boost_pthread_flags = ['', '-lpthreads', '-Kthread', '-kthread', '-llthread', '-pthread', + '-pthreads', '-mthreads', '-lpthread', '--thread-safe', '-mt'] + + for boost_pthread_flag in boost_pthread_flags: + try: + self.env.stash() + self.env['CXXFLAGS_%s' % var] += [boost_pthread_flag] + self.env['LINKFLAGS_%s' % var] += [boost_pthread_flag] + self.check_cxx(code=PTHREAD_CODE, msg=None, use=var, execute=False, quiet=True) + self.end_msg(boost_pthread_flag) + return + except self.errors.ConfigurationError: + self.env.revert() + self.end_msg('none') @conf def check_boost(self, *k, **kw): @@ -285,7 +396,10 @@ def check_boost(self, *k, **kw): if not self.env['CXX']: self.fatal('load a c++ compiler first, conf.load("compiler_cxx")') - params = {'lib': k and k[0] or kw.get('lib', None)} + params = { + 'lib': k and k[0] or kw.get('lib', None), + 'stlib': kw.get('stlib', None) + } for key, value in self.options.__dict__.items(): if not key.startswith('boost_'): continue @@ -294,48 +408,70 @@ def check_boost(self, *k, **kw): var = kw.get('uselib_store', 'BOOST') - self.start_msg('Checking boost includes') - self.env['INCLUDES_%s' % var] = inc = self.boost_get_includes(**params) - versions = self.boost_get_version(inc) - self.env.BOOST_VERSION = versions[0] - self.env.BOOST_VERSION_NUMBER = int(versions[1]) - self.end_msg("%d.%d.%d" % (int(versions[1]) / 100000, - int(versions[1]) / 100 % 1000, - int(versions[1]) % 100)) - if Logs.verbose: - Logs.pprint('CYAN', ' path : %s' % self.env['INCLUDES_%s' % var]) + if not self.env.DONE_FIND_BOOST_COMMON: + self.find_program('dpkg-architecture', var='DPKG_ARCHITECTURE', mandatory=False) + if self.env.DPKG_ARCHITECTURE: + deb_host_multiarch = self.cmd_and_log([self.env.DPKG_ARCHITECTURE[0], '-qDEB_HOST_MULTIARCH']) + BOOST_LIBS.insert(0, '/usr/lib/%s' % deb_host_multiarch.strip()) - if not params['lib']: + self.start_msg('Checking boost includes') + self.env['INCLUDES_%s' % var] = inc = self.boost_get_includes(**params) + versions = self.boost_get_version(inc) + self.env.BOOST_VERSION = versions[0] + self.env.BOOST_VERSION_NUMBER = int(versions[1]) + self.end_msg('%d.%d.%d' % (int(versions[1]) / 100000, + int(versions[1]) / 100 % 1000, + int(versions[1]) % 100)) + if Logs.verbose: + Logs.pprint('CYAN', ' path : %s' % self.env['INCLUDES_%s' % var]) + + self.env.DONE_FIND_BOOST_COMMON = True + + if not params['lib'] and not params['stlib']: return + if 'static' in kw or 'static' in params: + Logs.warn('boost: static parameter is deprecated, use stlib instead.') self.start_msg('Checking boost libs') - suffix = params.get('static', None) and 'ST' or '' - path, libs = self.boost_get_libs(**params) - self.env['%sLIBPATH_%s' % (suffix, var)] = [path] - self.env['%sLIB_%s' % (suffix, var)] = libs - self.end_msg('ok') + path, libs, stlibs = self.boost_get_libs(**params) + self.env['LIBPATH_%s' % var] = [path] + self.env['STLIBPATH_%s' % var] = [path] + self.env['LIB_%s' % var] = libs + self.env['STLIB_%s' % var] = stlibs + self.end_msg(' '.join(libs + stlibs)) if Logs.verbose: Logs.pprint('CYAN', ' path : %s' % path) - Logs.pprint('CYAN', ' libs : %s' % libs) + Logs.pprint('CYAN', ' shared libs : %s' % libs) + Logs.pprint('CYAN', ' static libs : %s' % stlibs) + def has_shlib(lib): + return params['lib'] and lib in params['lib'] + def has_stlib(lib): + return params['stlib'] and lib in params['stlib'] + def has_lib(lib): + return has_shlib(lib) or has_stlib(lib) + if has_lib('thread'): + # not inside try_link to make check visible in the output + self._check_pthread_flag(k, kw) def try_link(): - if 'system' in params['lib']: - self.check_cxx( - fragment=BOOST_SYSTEM_CODE, - use=var, - execute=False, - ) - if 'thread' in params['lib']: - self.check_cxx( - fragment=BOOST_THREAD_CODE, - use=var, - execute=False, - ) + if has_lib('system'): + self.check_cxx(fragment=BOOST_ERROR_CODE, use=var, execute=False) + if has_lib('thread'): + self.check_cxx(fragment=BOOST_THREAD_CODE, use=var, execute=False) + if has_lib('log') or has_lib('log_setup'): + if not has_lib('thread'): + self.env['DEFINES_%s' % var] += ['BOOST_LOG_NO_THREADS'] + if has_shlib('log') or has_shlib('log_setup'): + self.env['DEFINES_%s' % var] += ['BOOST_LOG_DYN_LINK'] + if has_lib('log_setup'): + self.check_cxx(fragment=BOOST_LOG_SETUP_CODE, use=var, execute=False) + else: + self.check_cxx(fragment=BOOST_LOG_CODE, use=var, execute=False) if params.get('linkage_autodetect', False): - self.start_msg("Attempting to detect boost linkage flags") + self.start_msg('Attempting to detect boost linkage flags') toolset = self.boost_get_toolset(kw.get('toolset', '')) - if toolset in ['vc']: + if toolset in ('vc',): # disable auto-linking feature, causing error LNK1181 # because the code wants to be linked against self.env['DEFINES_%s' % var] += ['BOOST_ALL_NO_LIB'] @@ -355,27 +491,43 @@ def check_boost(self, *k, **kw): # we attempt to play with some known-to-work CXXFLAGS combinations for cxxflags in (['/MD', '/EHsc'], []): self.env.stash() - self.env["CXXFLAGS_%s" % var] += cxxflags + self.env['CXXFLAGS_%s' % var] += cxxflags try: try_link() - self.end_msg("ok: winning cxxflags combination: %s" % (self.env["CXXFLAGS_%s" % var])) - e = None + self.end_msg('ok: winning cxxflags combination: %s' % (self.env['CXXFLAGS_%s' % var])) + exc = None break - except Errors.ConfigurationError as exc: + except Errors.ConfigurationError as e: self.env.revert() - e = exc + exc = e - if e is not None: - self.end_msg("Could not auto-detect boost linking flags combination, you may report it to boost.py author", ex=e) + if exc is not None: + self.end_msg('Could not auto-detect boost linking flags combination, you may report it to boost.py author', ex=exc) self.fatal('The configuration failed') else: - self.end_msg("Boost linkage flags auto-detection not implemented (needed ?) for this toolchain") + self.end_msg('Boost linkage flags auto-detection not implemented (needed ?) for this toolchain') self.fatal('The configuration failed') else: self.start_msg('Checking for boost linkage') try: try_link() except Errors.ConfigurationError as e: - self.end_msg("Could not link against boost libraries using supplied options") + self.end_msg('Could not link against boost libraries using supplied options', 'YELLOW') self.fatal('The configuration failed') self.end_msg('ok') + + +@feature('cxx') +@after_method('apply_link') +def install_boost(self): + if install_boost.done or not Utils.is_win32 or not self.bld.cmd.startswith('install'): + return + install_boost.done = True + inst_to = getattr(self, 'install_path', '${BINDIR}') + for lib in self.env.LIB_BOOST: + try: + file = self.bld.find_file(self.env.cxxshlib_PATTERN % lib, self.env.LIBPATH_BOOST) + self.bld.install_files(inst_to, self.bld.root.find_node(file)) + except: + continue +install_boost.done = False diff --git a/.waf-tools/default-compiler-flags.py b/.waf-tools/default-compiler-flags.py index 4460cc9..9e045c3 100644 --- a/.waf-tools/default-compiler-flags.py +++ b/.waf-tools/default-compiler-flags.py @@ -1,47 +1,69 @@ # -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- -from waflib import Logs, Configure, Utils +from waflib import Configure, Logs, Utils def options(opt): - opt.add_option('--debug', '--with-debug', action='store_true', default=False, dest='debug', - help='''Compile in debugging mode without optimizations (-O0 or -Og)''') + opt.add_option('--debug', '--with-debug', action='store_true', default=False, + help='Compile in debugging mode with minimal optimizations (-O0 or -Og)') def configure(conf): - cxx = conf.env['CXX_NAME'] # CXX_NAME represents generic name of the compiler + conf.start_msg('Checking C++ compiler version') + + cxx = conf.env.CXX_NAME # generic name of the compiler + ccver = tuple(int(i) for i in conf.env.CC_VERSION) + ccverstr = '.'.join(conf.env.CC_VERSION) + errmsg = '' + warnmsg = '' if cxx == 'gcc': - flags = GccFlags() + if ccver < (5, 3, 0): + errmsg = ('The version of gcc you are using is too old.\n' + 'The minimum supported gcc version is 5.3.0.') + conf.flags = GccFlags() elif cxx == 'clang': - flags = ClangFlags() + if ccver < (3, 6, 0): + errmsg = ('The version of clang you are using is too old.\n' + 'The minimum supported clang version is 3.6.0.') + conf.flags = ClangFlags() else: - flags = CompilerFlags() - Logs.warn('The code has not been yet tested with %s compiler' % cxx) + warnmsg = 'Note: %s compiler is unsupported' % cxx + conf.flags = CompilerFlags() - areCustomCxxflagsPresent = (len(conf.env.CXXFLAGS) > 0) + if errmsg: + conf.end_msg(ccverstr, color='RED') + conf.fatal(errmsg) + elif warnmsg: + conf.end_msg(ccverstr, color='YELLOW') + Logs.warn(warnmsg) + else: + conf.end_msg(ccverstr) - # General flags will alway be applied (e.g., selecting C++11 mode) - generalFlags = flags.getGeneralFlags(conf) + conf.areCustomCxxflagsPresent = (len(conf.env.CXXFLAGS) > 0) + + # General flags are always applied (e.g., selecting C++ language standard) + generalFlags = conf.flags.getGeneralFlags(conf) conf.add_supported_cxxflags(generalFlags['CXXFLAGS']) conf.add_supported_linkflags(generalFlags['LINKFLAGS']) conf.env.DEFINES += generalFlags['DEFINES'] - # Debug or optimization CXXFLAGS and LINKFLAGS will be applied only if the +@Configure.conf +def check_compiler_flags(conf): + # Debug or optimized CXXFLAGS and LINKFLAGS are applied only if the # corresponding environment variables are not set. - # DEFINES will be always applied + # DEFINES are always applied. if conf.options.debug: - extraFlags = flags.getDebugFlags(conf) - - if areCustomCxxflagsPresent: + extraFlags = conf.flags.getDebugFlags(conf) + if conf.areCustomCxxflagsPresent: missingFlags = [x for x in extraFlags['CXXFLAGS'] if x not in conf.env.CXXFLAGS] - if len(missingFlags) > 0: - Logs.warn("Selected debug mode, but CXXFLAGS is set to a custom value '%s'" - % " ".join(conf.env.CXXFLAGS)) - Logs.warn("Default flags '%s' are not activated" % " ".join(missingFlags)) + if missingFlags: + Logs.warn('Selected debug mode, but CXXFLAGS is set to a custom value "%s"' + % ' '.join(conf.env.CXXFLAGS)) + Logs.warn('Default flags "%s" will not be used' % ' '.join(missingFlags)) else: - extraFlags = flags.getOptimizedFlags(conf) + extraFlags = conf.flags.getOptimizedFlags(conf) - if not areCustomCxxflagsPresent: + if not conf.areCustomCxxflagsPresent: conf.add_supported_cxxflags(extraFlags['CXXFLAGS']) - conf.add_supported_cxxflags(extraFlags['LINKFLAGS']) + conf.add_supported_linkflags(extraFlags['LINKFLAGS']) conf.env.DEFINES += extraFlags['DEFINES'] @@ -56,12 +78,13 @@ def add_supported_cxxflags(self, cxxflags): self.start_msg('Checking supported CXXFLAGS') supportedFlags = [] - for flag in cxxflags: - if self.check_cxx(cxxflags=['-Werror', flag], mandatory=False): - supportedFlags += [flag] + for flags in cxxflags: + flags = Utils.to_list(flags) + if self.check_cxx(cxxflags=['-Werror'] + flags, mandatory=False): + supportedFlags += flags self.end_msg(' '.join(supportedFlags)) - self.env.CXXFLAGS = supportedFlags + self.env.CXXFLAGS + self.env.prepend_value('CXXFLAGS', supportedFlags) @Configure.conf def add_supported_linkflags(self, linkflags): @@ -74,79 +97,120 @@ def add_supported_linkflags(self, linkflags): self.start_msg('Checking supported LINKFLAGS') supportedFlags = [] - for flag in linkflags: - if self.check_cxx(linkflags=['-Werror', flag], mandatory=False): - supportedFlags += [flag] + for flags in linkflags: + flags = Utils.to_list(flags) + if self.check_cxx(linkflags=['-Werror'] + flags, mandatory=False): + supportedFlags += flags self.end_msg(' '.join(supportedFlags)) - self.env.LINKFLAGS = supportedFlags + self.env.LINKFLAGS + self.env.prepend_value('LINKFLAGS', supportedFlags) class CompilerFlags(object): + def getCompilerVersion(self, conf): + return tuple(int(i) for i in conf.env.CC_VERSION) + def getGeneralFlags(self, conf): - """Get dict {'CXXFLAGS':[...], LINKFLAGS:[...], DEFINES:[...]} that are always needed""" + """Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are always needed""" return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': []} def getDebugFlags(self, conf): - """Get tuple {CXXFLAGS, LINKFLAGS, DEFINES} that are needed in debug mode""" + """Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are needed only in debug mode""" return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': ['_DEBUG']} def getOptimizedFlags(self, conf): - """Get tuple {CXXFLAGS, LINKFLAGS, DEFINES} that are needed in optimized mode""" + """Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are needed only in optimized mode""" return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': ['NDEBUG']} class GccBasicFlags(CompilerFlags): - """This class defines base flags that work for gcc and clang compiler""" + """ + This class defines basic flags that work for both gcc and clang compilers + """ + def getGeneralFlags(self, conf): + flags = super(GccBasicFlags, self).getGeneralFlags(conf) + flags['CXXFLAGS'] += ['-std=c++14'] + if Utils.unversioned_sys_platform() == 'linux': + flags['LINKFLAGS'] += ['-fuse-ld=gold'] + elif Utils.unversioned_sys_platform() == 'freebsd': + flags['LINKFLAGS'] += ['-fuse-ld=lld'] + return flags + def getDebugFlags(self, conf): flags = super(GccBasicFlags, self).getDebugFlags(conf) - flags['CXXFLAGS'] += ['-Wall', - '-O0', + flags['CXXFLAGS'] += ['-O0', + '-Og', # gcc >= 4.8, clang >= 4.0 '-g3', + '-pedantic', + '-Wall', + '-Wextra', + '-Werror', + '-Wnon-virtual-dtor', + '-Wno-error=deprecated-declarations', # Bug #3795 '-Wno-error=maybe-uninitialized', # Bug #1615 - ] + '-Wno-unused-parameter', + ] + flags['LINKFLAGS'] += ['-Wl,-O1'] return flags def getOptimizedFlags(self, conf): flags = super(GccBasicFlags, self).getOptimizedFlags(conf) - flags['CXXFLAGS'] += ['-Wall', '-O2', '-g'] + flags['CXXFLAGS'] += ['-O2', + '-g', + '-pedantic', + '-Wall', + '-Wextra', + '-Wnon-virtual-dtor', + '-Wno-unused-parameter', + ] + flags['LINKFLAGS'] += ['-Wl,-O1'] return flags class GccFlags(GccBasicFlags): - def getGeneralFlags(self, conf): - flags = super(GccFlags, self).getGeneralFlags(conf) - version = tuple(int(i) for i in conf.env['CC_VERSION']) - if version < (4, 6, 0): - conf.fatal('The version of gcc you are using (%s) is too old.\n' % - '.'.join(conf.env['CC_VERSION']) + - 'The minimum supported gcc version is 4.6.0.') - elif version < (4, 7, 0): - flags['CXXFLAGS'] += ['-std=c++0x'] - else: - flags['CXXFLAGS'] += ['-std=c++11'] - if version < (4, 8, 0): - flags['DEFINES'] += ['_GLIBCXX_USE_NANOSLEEP'] # Bug #2499 - return flags - def getDebugFlags(self, conf): flags = super(GccFlags, self).getDebugFlags(conf) - flags['CXXFLAGS'] += ['-Og', # gcc >= 4.8 - '-fdiagnostics-color', # gcc >= 4.9 - ] + flags['CXXFLAGS'] += ['-fdiagnostics-color'] + return flags + + def getOptimizedFlags(self, conf): + flags = super(GccFlags, self).getOptimizedFlags(conf) + flags['CXXFLAGS'] += ['-fdiagnostics-color'] return flags class ClangFlags(GccBasicFlags): def getGeneralFlags(self, conf): flags = super(ClangFlags, self).getGeneralFlags(conf) - flags['CXXFLAGS'] += ['-std=c++11', - '-Wno-error=unneeded-internal-declaration', # Bug #1588 - '-Wno-error=deprecated-register', - ] - if Utils.unversioned_sys_platform() == "darwin": - flags['CXXFLAGS'] += ['-stdlib=libc++'] - flags['LINKFLAGS'] += ['-stdlib=libc++'] + if Utils.unversioned_sys_platform() == 'darwin' and self.getCompilerVersion(conf) >= (9, 0, 0): + # Bug #4296 + flags['CXXFLAGS'] += [['-isystem', '/usr/local/include'], # for Homebrew + ['-isystem', '/opt/local/include']] # for MacPorts + if Utils.unversioned_sys_platform() == 'freebsd': + flags['CXXFLAGS'] += [['-isystem', '/usr/local/include']] # Bug #4790 return flags def getDebugFlags(self, conf): flags = super(ClangFlags, self).getDebugFlags(conf) - flags['CXXFLAGS'] += ['-fcolor-diagnostics'] + flags['CXXFLAGS'] += ['-fcolor-diagnostics', + '-Wextra-semi', + '-Wundefined-func-template', + '-Wno-unused-local-typedef', # Bugs #2657 and #3209 + ] + version = self.getCompilerVersion(conf) + if version < (3, 9, 0) or (Utils.unversioned_sys_platform() == 'darwin' and version < (8, 1, 0)): + flags['CXXFLAGS'] += ['-Wno-unknown-pragmas'] + if version < (6, 0, 0): + flags['CXXFLAGS'] += ['-Wno-missing-braces'] # Bug #4721 + return flags + + def getOptimizedFlags(self, conf): + flags = super(ClangFlags, self).getOptimizedFlags(conf) + flags['CXXFLAGS'] += ['-fcolor-diagnostics', + '-Wextra-semi', + '-Wundefined-func-template', + '-Wno-unused-local-typedef', # Bugs #2657 and #3209 + ] + version = self.getCompilerVersion(conf) + if version < (3, 9, 0) or (Utils.unversioned_sys_platform() == 'darwin' and version < (8, 1, 0)): + flags['CXXFLAGS'] += ['-Wno-unknown-pragmas'] + if version < (6, 0, 0): + flags['CXXFLAGS'] += ['-Wno-missing-braces'] # Bug #4721 return flags diff --git a/waf b/waf index 2ca8c7b..20e9733 100755 --- a/waf +++ b/waf @@ -1,7 +1,7 @@ #!/usr/bin/env python -# encoding: ISO8859-1 -# Thomas Nagy, 2005-2015 - +# encoding: latin-1 +# Thomas Nagy, 2005-2018 +# """ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -32,12 +32,13 @@ POSSIBILITY OF SUCH DAMAGE. import os, sys, inspect -VERSION="1.8.5" -REVISION="d178df7a9bb732db109001d6b461550f" +VERSION="2.0.14" +REVISION="a8a9afc5d151494252697f8fa4ba3fbc" +GIT="353ffefa21e6f8795469d118d8059aa16ef49109" INSTALL='' -C1='#8' -C2='#.' -C3='#)' +C1='#.' +C2='#+' +C3='#&' cwd = os.getcwd() join = os.path.join @@ -164,5 +165,5 @@ if __name__ == '__main__': Scripting.waf_entry_point(cwd, VERSION, wafdir) #==> -#BZh91AY&SY&@"T#)a2Xa^k@#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)Dڱe_Zl2im[7]Z+٩.OݓZۏu\&}t+#)u{nG=:k[]WNm.[)_;wàm^ݰlZqO#)#)(#.#)|#)[k#)Jh#)=͠#8=i`oG#׹Nuh#)_wz:#.F#8trMRQRA@Hu).2[mGϪ5=0׽{. U; {iNۦͯܥ[Uc]zo}콫lz6UZ7G,׻|k>{}oOvl#)H==5q7{A#.)$S{]#8H(#.[waY jwyY;4^޺ȣgǷj;*m&lk;zy> +YP(Z/8fb}**g7{6xu{TK7}y0voc{kzk=2)zR{mݽCs;^}o5t=Ǻ-4[^ӟwg_#)/yo}^>>zH#)*#8],v#8LvJYz7צMugi2piPyϻ#)w-#):>۽ǝN{!:!mrFo}ZZz{Um>-oCާ7@UZ;u>ۑK[۷ӻ/wݾqo-W۟,/\,#)wۦg4V^:n_Av{[{ S}罇|D'}'pzom}_fw{o=7{gos) kЮ:wd>=piA]N#)6ǣF#8.#8L#)hk@f(V+Pi7]at^秽kgX:ovkOuݷS=wFs۽{޼AouWuF}mt۹wܾwozz}zHY]Z#8JW|%4#)#) #)ɄDIHh#.#.#)h4!44h&IS&h#)#)@#)#)H"b#)@CFBI&6i4& i#)#)#)#)I44S1&TO*~(1Bi@h=OP#)Q#)#)#)#)"HA#)@#)L 1h#8{%?Jm&餙@SCM4#)@L&$7dIzM4 0M#)#)#)#)oڗHhm\ͶL)oWtdF Yb xT(_~R;~hrMaD*j0IC=L2Ɵ?ew V@]>pR[d&Ed&2MU&7fYn1sud<+xJ0#)" 7],h̲or)phw ߃_=vrֻ#,a*ON\{zBEЀ^uE !BKIIي" H#8;\4qo5|\i-6ACŖd6&Лƣ1#8EhTM(=3FAHj]0_*ٱ(T0[Yx00Q!|S%6#8҉sMBzWM>Wد"{8̜҇eBS4DӶ^\fʲ *+ú$cb}e|xu=dDCOR%53}MAI#9-U3wc-'uJA~>omBKTW/BsǧZѽ)b;.϶nZHgJ,#ݰ@43TǖY oDLVi27cm삇%GZ8``֩V#dϕMX{U#84e6D/?&V#7 clWg[E0̦:bK>N7]88]p'Tnt1#.W U.́*+ :7NN!|t+jdX047S%l&/Z x%6f7lvU/$[#.5t]~yd6E@nr~Pfy&% (a60Тŋݕ{QAr@["Lį/ޞ?:Q?#.X7=uKYgutV튏#8GښV-X$碨>w(<ݨJ<kb{5|::6c#ӟ=Șhq~,`:rq 5ώ1.+֮4dߡZWG84Y.ϦLx(Ĉ|1i"]X Pe8`e#. O~˞Cs^mO1~m+|v5(#.ߨplD]LAFNB]r)V23-0OD:t4Zεjw vb`EE/DUHv&5JGIaL>s9`u3yu#8kRR->f+8y Gz?ugnǣ\ kP\{=6}njsH/jw}E;:wWR/Ҫޡòy"z8.;|.`d2+wY>|=ɷfQsƦͿ5(߯Rg4ذuI`CHjMx+cݿN,oO Mp!0xc',Hqd>ui!ROkZ֣r%0#4DFIm#H$?9ȊCL!}+X*txJ!\hUmmT;[GGb[L^ җͱkcم]Yz现>*}efkk+1+zDie|:y:ۃ5OVc$%TV`1hEbO]hēi Dxil筟%c)#8Qь{qú S.T#&L"vǎ]ZfK;]tЛP"b"F v^i jGBs՘cz̏~{y$x@4GZtX7[Y 처hݧ{fa{v{8<69yn}-kGd7Sg)lOKiFn};?DŽsOM6}(IgpAXT[.(}bj3CY+JDLH@tj2'2AUdݷEn\=uKպ)Jxrvsp"ƜO6v3$:I-wEL9-UNCQ*Pі\q&Qq_ݔ\[VDrY/0Tښ:UEKttYL'()oD/:=U#8lr^ V\t6*jd9}R!QfS{%ؘY>5슗IK?DCc "& 9z{cE!.7Na2Yx_ۯF7qӄ/WËk㶃9#S79T/Nl{W'RtJ*LKCA5vn\w8qϤo1%/]!*)7ٙ+ۦB @zB2vs̤82o+"*VS|vY|1PG%Fg {(۴<.wfB6mx匯ȟM[aP_;i;!:o*"tbx{!gu3\妚[ 3{nPs64=,|R]_&*9GP.ƇJ՞#.+U#8#8:OZݝYBryc~tγ,+q"4j7יU6+Xc&hQ~#5ha5T޻ݯ\hahoST$cXt"t5)"UJi^KSXSQ3WNf?#86!W Tb&! b\D>8<Qh,PM~Gw+UpWUYs30YkL 091ff%uȩ[Om)r\s)4讒o>OYӬ09=vz"{Sg\#8!InQliz=fGPhlHV _!ɟf3Y{EB1UE]O4{n`m҅DQѶ?fߥ؁0QA*>O}R31Qf?[ZP$*=o:"g[3M#D~jt\~C0REU"~&)B9\`#8h^oK}\1تl}~a2/ᳳ?<U,~#);3R!5X6~>g#.0ԵPSO}=01+XMѦ?FD͹\OIk7I]6H]w.GS[Yq]y~"o#8}3S>?ۥxD$!dħ%NE(R@qaäf#8x#.fwϞQ#8* T׺ޜdoA˖t3fj+~.`DwۋZmԶHN& zTaLtSe=?N $AҡI$L!OdMm]f0A V88l-GJYʶ^@vkޘ 469 ^vҟa4$t^<[#2Ļ\(6Qdc{@xn00P% s)^`0:3nm,S3LfP#۟/AgqW8'6YCD@lMmaD+1db{7pVCAMOb;XjqpKNÌVM3ǻi+j9j{\V,5jOc*ӽˬ&l3\'9ݮuۼMzq[kBO~9#3[9Vm2#8\~Je#.L3w5c\Tl5&ݗki'\#)u&_薤>R#gX#1=Pz\ 9hL|ڐ813#8w_ݮ \rm7%#8+7MWN4J%)Diϕ|ϻn̊c}k};A3,#œhwJ"082EET-4MI`!d`*LERB hu|&k|3L~>7wTinC,vrDҀհ'Hh׎\2ӻ%f‰7X-$KY>sDKC6EuVb5`Q΍o)#8f3#8-#*8-fZi{珆z\M?@m"zr5pKk~Pk]Iis?M_[ ư۾!hb:L'#)M%AL0&f@~=X \m>JU]'/Gh:Q;MԒɝg^/ݭt DcVAMݝ14##8( S5q fqqqym1#8j|W 7:3TQSw6rNq۸зn>xCKmg)"ɲZC|#39x9?M|n0EGnzb.l+D8w>mX#.؁jkz^=0'tu^w#LI۰Qb缽կ[v7X"f ⚠] j%Y6MQ(@Ģ a#8dT0?jTI!i*+cY,#.#.^j]^2B vq5zEk-TZ)Hd),7bVpՖC )Q-(A,T#$#.gǣz|qݤǾtzD8Wb3z9Hܶ"_a-}q#8ob/ ܼ ïOm,#.Q'CCaǿf݉mE2E1|bqv=oL"ΛnS`1;/ 9a ō" lblhJ/(ϞCdLVTJtܻFT0=Ygx驒j}gfj ްN_K6wCf3~R\g-r#t~`~9=GK 42-;x]hwJ@wk&aD%K_^' iE=z, ULT#.<O|Z1N&!NWaut^p` xN/#.hME6 l\,JhWcKMO|h0;&:T <(f#.Ct NtébGRZaC|֙QQLk+9taF%Qm lRɖEm/N>wJ4esכMjj9;/>t#.&#.d2'w9,$#D`Dϐ~x_b:AklYqR$EHR15y=6}m1\1)"hwkK%᷹pgfCoVCUɕi"1ED#uUb%Cߚ,0%=X#㾜|2{]>cXǸ#8A"[F|_EۑA@VLk qм{HѸ?o^{׮Qm$UѶjf(f(1IYjmҠ! >MCnÈ-G)dbs\ug?@S='&~#8#)6sm;q<<7xsv{k*cZK:Fe#IEMXP#.m}'7UhRfyt~qd>z7iuj1f1#Tz7e<۰ʎ&e~zNQ:}^XDF/QqZ H'G7xO["_(E><o6qh1w5u'Woʨbeyjίv^rVo1`]ol#86m(at_|>ȶly/F&uY=܅UH5F"Q .5-$)q׳"Ҵ?XfP+RGvga(Em,+z'\N_Oߝe+|Q=Ddj'j瞵^K14Ne7,X;DI $e4ҫ:iff#8+a v5G5}o򏁯T{q OvnE.;ZZU̘RR}3IiQ;n(]vI][!\Y-*ԴT0TK)j%HX'!bg}nhWwUu+oߞ"lQAbw3л7x~S__&w&$k|V[7+uuĊ,<𲏽2V6DEd#.x%ȅ[6!KWJ d[ȫUd"e %DjsL2SPN>C ʟ٫mme_[N4X{it5òa-/1q=LE3Nwt@F<ɯCB蠂!g~ۚuAN"8A+0שa0dVO.3 Bb"@lQ#8EB%#.]qe^(x`I{/ :HdERs#8~Vxګ #8" DrS aghp@tcO{*ɉ]y!ƭT9G{g#?vo|OƟ]v\WA},h}@C|<#lcUs 6Y,)aCMPۭ4P\\nћ*p&7x^%6ڽZ,~0[֨=7ixѾt5Q?dsU<,7IZWZ^fqS([&DOR*zipÆp njH`k14퓐FxBsul/X.kT2V,Au+4ADfm!N5>_CXߤ<̈R)1}K~ՅF"gM2kg5:ԡh)׳ h#8OYF 6ӰrbZru߆#.ɂI cgB15'@[d^\RkC.3˽XtÑ5f"= I8/޾ԛB|'D!عJq|A?4-v [ɛi̜:gwL㤦ia6F_K8Pd,XfDwJ_M-.߼GvIBc\^fnd! $6E2SFYc32ƢWC_˭zH9TZ-KKE_pɄ%$Q"Jc!5(jZv1=qI _FKVt|ZUUy&-FO(N˻_Mg'+)֟༗lمmO.N?jgrחMm2#.Dzϫ_= ϯ"mo6_T۶X=՛ɸa4\=53I*ܾM4©PWT[5=W7NZJNӣQݣ~e,lNQnT*NSUN.twnJ1!ThկW'.6ShvZ=%>^Sg-|)*EcGbc鰯56/ۏ~Yٛ?t_j//El66zhJ#Rk^o#89aL{ʮaT:s|瘅ok#8(LqjY_u6{ȼ) $Q+(~,}g9qMxy7F̓YSs`??nl dk?4HsϚx>Iv4ah\Cru2:>K4uP0'ͳ>j#sW0Ӄp.Iz놧?ffMcdfG 22~w+Vsg_ZaqCz5×'"#.w?O2LzlB,X)p}gʦ ;IO?(8lf?LdZ#.j`rdj0ʹ~G4ofsh-ŝa񉷬z鎵yGdSWCVz5}_hCw&:z wX@uc~IshTw{}wFɵhI)4xv̭=s~%0{Y*#eIR"e#,GM^06OO&O$c] =ttCAlpj= [vg2eQbtcdR0RgEd-R/SUJ֞IҺ1uWF7%G/hѦv4)uj)s P!ff)GEzNB#.˦ZC1/|Օfct}Z~z#.jMs;4TCe3j|[!0 :] ItC/eY9[1mZFe<ȠQ["s63#.X>i=5$[4*v ha2BV=jŦ%PӾkVY>!<_یΞ:{Qz춫* JOW!8y?=(0ŜϜ-ёGH|N~?u)W>;O8'SN>;=G&-24#.= l{EW$_>=6t>|-e|mqnow3Y=ቱKF$)+PO%_?9jjOOTWAX_7k3j%|+Js#u!O*DρG/|hN*q >xNk^tKxُ-߳fVz?ICo۞);׮綺Nd*礉Rh󷡢I#8(<>ޏN}~t5.IFՎ\'nQj̖6-b¨-VOҷM_>GﺊjtWW4zs#8O1 TZG#.O3ABЋ9I3lsHFXd)4 ciZ8op]J0F41Ä3c2z^-f6F "1ŕ$mi<ҖK*wҷ^o% TlH*V&hˋDže)'RWollxꦼYvO+:IN5FQ E#8(D0(#.0 rA,0Hq#RE(g KuCm 8#8H*ifAc\ԡIH™ۊX  \5q@aDT#.A;7[ fوL"" . O#݁En(QM9]IQC u2@V#93Pv[!mjJfZݼb! y{ᘢS#.YiOci=ՇW~oGGyn̖3{csm>wYu5Ut#.M#.TKᥡ#8>YV>HtۧnE&\~63Eoc192% x+y]F>NsdS&Wwwoo]\7ME}HT<՛o:miQ@,NY3pLz:44( @aGDN=Mr@GrܪVF#.a~>dI$wGMh3h 4. ŗ(Z,9L7nQ8-J3ӌvv.M1!0ʒP.)HS( V#)Q'Y޽*h$\L#;UJRM;Ke_;i]6'%,\٘L(=ױH2m}K #.N:qA<4zٍ#.lo2{zl,Uz3O"8=YZem6jM풭$E24ᣖ jzd^1NVhهjp҆BnD%=]}97/~φ=ykDX)Vk c#8Ȅ" 0}y:}{O;;>|&dEȞ&9%#8ߒh&bgPJ4L1 XjgLfK-g(y+4#@)IX+h4Ej,H65ˁwz8.4#[#8;wv4JGYX4Z4rj%i.ǴF-d#8d ̖0f9ȚptrݜhZ#@6!5#.%rQeh)P5ڔ4w*pEت%u±&vN.8iZ/grMqoHa%+(T*V(,#Pm4#.272N*  ӴXPOM:yDg;ɺ~4食{ iKҺ:]|)vAzG E.~U1G=^ݣE6JK؍ܶn.w;Wq&XŒm![f{M}p \IȸpIKb`XG#"DjސNPlJGh4!;Xf(@#8w7B5*Qk -TihBHҥ(n^!OLkz%4R,`M[&"#82f#Pg64?)잋FKcMۜ(h&Ѽq&EJ#scc31[TSөri񻃰4;FF61H6QF֓qB2W_`:er9pT UTN6gHdą9Lv8Q?"SUWjY9&NMIr0JjkCԈ*1}v,[tGlvzGi:N=L08 ȽHK󀔒llg0oS10H7Y JCbLDuvfa4^WL<*Q#.5]+T*R3+dhXCCajks%ałaqeVa`PbTA2묚c:Oi?iHnRV#.|Hkx.l!L Nۍ1vF)3NKpQY/؈a[ۇfL*7Glg0o&tĔkńfD#.s>hd7T:#.4BLИHHue `ٯvm&忋Ri ^>Q$X(A5#.E߅Adano# ^ [BPumgsgar!B$DcG]j`q'H]nq5vfh`nć|MPm&隥XjQ$!(C-nvM9G$Ëk$Uͳa@i%VrfODHӏXKBeqow o:{M1hZiL}0#.*25l 7r>Z./,Rݵ/\} H^'+DWSUsh"_C:z'fő%?X'Nϰ(.ewm&ܪ|>g0QG]Ug!$fŒ:F*)0ш?Ux<ƖəQ)Ub˿ $B93E5֞ʥuFP| {?ڻLsگm6<|{I\747b1YKc/5-#8tvghLFGɃ>f#8ѝr 6f ;~0,CvMlrU=6?Ǿe0R?xPf'^,nJ'Ъ!9тuEӋh)Y_Y ]X;hP!/(?HjTNIӍDZ4ƃ(7s<wj6(Kv(Qwg: Q*Z!|XyJ2UY5ZUqTsGӘ'M䳐a5,dRFYϏh`vxYXB1>|(4Fq1G,gk8㆒y6Ĕ`#.3ô4-SîEGJtr5%ohO Z:uQEԢC?2̶2p9yf4\* 1/uD;,qB*(yb*J+l|p8!;i<Ǟf>?)A]y&LS3m=@$A TZk8gc pŸ; Yzy>} LDe߁6z;?U8kmT i$OTkís@:!˃ w9}̼Pϥ_wT$ڋL*=%ϋi y;YzD>:L-K#8du #EԬCZE;xbS%mkZv\"9F#zǣB߬; L^ ;5Fd~&w[۳k{9sɦ 4s+iJB##.CG#)]ş?)1㍡#.?DԴ:΢b ?I2M8!~C2;:-=3;j1w=כrɢ0c;(ז^drL=) sd#.MNnպߍ7\q6]oͱܪd4[|eg#Je)ASmL,Ҍ죱XKȒۇ:)/ ,:BClWӸ.w͹ p,ljѣ}Ο '59 1Fݲ#8V$},JY_#ջ.Cu;]r[Y`3G!#80\W$g;X~?eHΑh-Ǘz>J/usC#.f^μQkGx؊1i7ylcFbxkRk}JݾZ#il9|TfxA#8q覜_BDg߱AXaaĝj/>\gKWvLCuqn ~φ3sf2N"^JHfökCSuw#8"bzQ'#8L(n9귆cp{I(Kڏ#.?y>{o>zd Mp\ገVC.΍2ۿvA#.9DZwyc|v|WtkrLe$jjΉxĴBU+mѶʶ|g#rB~D'n`:(r8(vQʉלT|SHpM\ SF$p> {ǖĿ3%W%KMKK-,V@xcTx)sDSa364&3l`{ofۉo5f9!}frfw"yfѸuFW쉆%V.*3F5#d_@sxI) 𻙦(~$m2+#uL)mm#.Škw8"ND^5-V%dd]F&E3S9A{YfhN5dNj9n^S#8ŷv"#)#g[9SKPWG#.e΄ҧHs¶zܼUAB/S7NLiԜӳKNuijjѨ[j6KG{@C!a5uP(a ǟ)3# &$ۉulao|VjrQ[<}]]a{uE],dQ GH)qOY#.ڈuOwI*-ٝ vN(-TPڬ>2/ˀǷżn oewJ+gz/'9|.Z/,4H5ѶlJF)8[M'm=5gi][a[\0Ue|8J"azK%찺O;6ܑ#gt(|E"6P/`V)Uw'sC-}.Vݣ*ѲJO:φTqb6Y|1os2N';sVgؒȦǃv}>g6DO;figuߠ(m_Uy}y|> ytӼ1#=ҰpΛ/U0x;w-WЮ9Z#81|S/ V~aE<:{(.U1c̈́kQC͝c'c^ܼw̳#Ox6ʯ5_E|[]rŇT٧<hNK8G~v]m.\I>( Sଡ଼o#8޸\SXzo=7^^WQΠW6꿒xYr59dzn {;8|0ZImyGttq|^9|WIٻߢc^\Mv7QFRl )Lє*WI]CvL"_$u#)q;]qI]M"D k#ۈucmYQ=+TJLLu#(8H_R5Y;nHm6Iw8A3WfLw57Ct-P.XVc]@I,G|y;hQ^{% .2ݍ#.8%iْoޯ~K;<]i:{j#xsoyRj9ݦ;t⿛At5j1ߵ4 v]sf1sՒ5tnxVθsޗx?wbmjM=O}ԪPw#8> we'~ѧ=`ߋH8itk/) |jKg܅_ADa)p) 'E#.XkSMmAyIׄ0^2}f6= N!*YE:ԷDn4x>;"NsϻpS,R]Ԑwr&,#8}WPWOYU/Ԓ#.n:lSK.?'+_>0j}MT+H1HFgsuƎ?_Or:-OM A~~=wZ%VI"&M!]6+In[u~릸BC1dM?Wn{MHgL]-<#8/%EI!U~50VMkX8RtRYD@#.ԸNWkF_(QzeyddAEbE kDfǎ4x5e0|{Ȯziv&Қ> M#.mB8*T g9!?3K]E`2_hP<yEpHTT\mԕaoBqB>**,)WGש]%/>Ee&vphr7\|b- a?X6Xhmр-ooKQ)5oSV?D+ 8É*HYL㞤9l3[oLK:thkQ@nMJk8O5mmzNĬ5q7egI #8)<'8u26F"۟{+=> QؿYޢz#m#8P <' #)J7[BYPagMY?4#.Ĩ'uGXA=PNRKm"I EGD7SDP#.T, R):#)rݰG囨 o.#.9oq>mԛrG9{sQ2-.zK E8׫ou=~tSmv,!EDf|#8`T|u*3v_-C_էn4sC0-"IjbJvP ?y{)C|i5k7%-w3xaPN$q#.u4{w~(7NݹEPJ]jVx\fBP`$m8&.c>Q=Ķh݁ tRHM:/1䥖cN"V3VXr]/:tݼw_l4M}z_8h‘(Æ-.k+5CޟSҚ#CS;/DTI,ikx 3JHRB %mh+d<"|Qܼ_ϺaYjui5F"cRha|}ogƆ+,A #cM16vc4B=_>4rZ9`\G;n6d3EBi[jI0lp\-qĠY-L|hNM@ȰQ?R\^Yd;) EuIs1gƃ4#.\>i7T= [ߣ*^͔|,ЁCeh3\t4e#h῜Ėl Ռx\ncs,<ӳR"\FUқ- Rǫ9/l܁4q;e7 C)!(҅k#S") S6,ٹƎ#.GbZ0!ws%uσ#8;ඈhlkhs\2.s%ֆ9@=(+?r{YK⾤vb3vrS}](O8K*,P&&Bho׶}o#80#,f>~ՍƉ&N]@hD#G "f$)T-W-lΚ4 @tıڝM4 dI"̞n}a[oeùOĹ.$t:ٓ#)U*xMq6=QBiEcOX mw:\h8&*z_ӍѼx]`nC=1ZKY52QYtf{;m"#Ɇ1d\:{;w#)YmlB(d"P`:Q3_=_F{¡~җ^CQC{Tե-6x!:ߙĨt4R(1}&X%|SkױerQ({_r%Q1Ń4"R슮Э´Pz32& BUxS"M6{XԠ, QRG>کPDw9xӺQ5$wHBaӽ$ [30q0r5cëA7Fh1I$$bho0G$??yy_4ݪziLgpbM0@vB?^{-$5a&Rvc̘vOE-E*D$ܶ[>M#.1~31̇TVe]Ԍ#Q)N<f:R1S1*^V?U6[ChRa",ũuy^۝`Գv~=L]5H}%'7 ]%MqkCy6'RiݦNBKA<0'Ғlwh}aV,!rCٓgf]-?']-#.G#.l9'Hs|IOBh7@ ЈXs@$,C.͆vZ7}`1N"i`tHTU,%O|A kB>~gN/^cNͥ2I`hʚy*} /\Ʌt#8,Yc\B>`Ccon2BSOjMŧxTTwRte@ J?;u{EuS9Wy#ɖrgChl=ߚ^O,s4tG DIڌJXPo irjY4щJfXFw^A:xHx#Gfk0?Q5͜X }O>@>拓M L{t:毃tѲŅEdF # ;[:9ֈTSP!ERXfn#)ws]4z݊nYW]]3wŐ #.P#8I7JR\+'ԔecC`=ǜA#8@ZNFN d6`:IC0KVS\p5+#8B#.Z{%j͊E0v!7s6sG6! O6 !yq#.V5f8OHe8fgSs}nhVT!]#)gy'Iv&&r#8$ɵn+mURicAX ]1"5ۘB$+4xAؐ)X.uA!{CZ9qz:2rB4#8p7v"`FS 鏧A$mT,-uRo/32U'ƾ6뚤a:s#.!|dRy.^k" u#.щ r(C!$ea]VRcITa`y<绖vEPNPN0;80GiP)@H S5a!r<{֬%Ktΐ.&32*:T"^#8#L(.0T[=wskZRc)R],^c x;t),ıq,JNLF+H{cLvTz0L5 'ʊ Dg:uqwӋ&LN#)}͏|"ER#=HBBLh}%9e4MvEǛ3fMtݝ=)@)|^gw]uѪ<Y& +!IP;2+ ,!ǚx!ͺP^E[#8Tr(fݍ$ȸ@|}s#.q#)}0BP!=Ko,q-SƊ6PEoD∋#a_i( i! Būm}(X5T%{/@O͙ZMc6E,95-;/c'KWB6Lc̞>(ՑH.ǥiT6 h8|#82"XALl$rAh2^ٙ\vwϚ T`E:1h|{*BjV'aS|zD%8d=Q~Qjϓ7 8t,#ٶ݂ =3Pb"m-@5F7qĨt8-c#.;;OO^)3Y/x7(MlmB7g=};&區GW9LuS#A6C;}geR; #.xpgK4*SKMuRY4hj+ ubaةERCB #.#&@{\֬&Af.}FTd/KLڛEvr::Ⴗ\|(I%sXW5-DM/ikdCãR#.^B1I& ȹSl OOhj? t&LYƔƱ $1B8cUR3Y_H ''=#9# Gb(!=",>gdUr}ePωK停RE[T;<ʡ<NAƈ ,ܛ+X6jgJn~Imy#nvޒv?BI}gx3|.J꽪W쯲~KߵW~#.)"I"76Q{mt9Q~^uxMw#OTXH]=" tAעjdIUoO5W3n}#8#)ޣ?/n?!5ePΞ^1+w^5\n/qaG2D:Se*ulD4Rel^1%'>#.'tߢW~7Of.pDٸf7?O>.Xyy]YL(s\0˖.\Mvԡi#8'y^8gߙ~*,_ᇜ"41Ћdᦈp,Sf^ՒΦcUߊmw=-c nE)ުz#)3=UxZUPv󝅕̀/L0]'tK0sB"o\y%#26.k}D{fh4#.wIFxdCɇaΔ;+!I$$-yzz#8tğKB E$X+F 0x|_ӣsRM2jo}_E-S! wN6Gy~Y v8:T?fQ"Ł˸Һ?МV@n*aO!SDJݥ5R|6̎A Gq[e#<'uۙMMi$SBMD~q,Xf7Œ^`f:.u}[WU37*P["꜌(##.z{"JQtLzn'|t;ݺ(7V?a3w%4"p1|ۚ3Om _\(guw;BP9s|+>NtyhykjO,aPm@la]v?Y?laC_4.SoӃf.P> xϻtW_N=z]#8}|3=^ȐhW0 ](kb޽^};NAK˝V=4u}Yn6B BH>{zG=_(b d$n?#>~gZ9կ(gI^ qtuٟ0kTDɑ m[+цCNd @$itwSwBIN~VO4s^a^S8_a5u2U?GN;{} ڍL_ߏ"Lu#!T9>_fdAE~N:´/LjD_gPl7ظf91n L7oD8ڭϹW[v#.#8._l&*so !Gٵizf#e7- lgd?R@kt2*gb4+ O/"̜<_xt!ԭ3Q~(#+$d,:*P85[+c'Ԧ!#.mq xP#.ᩄz?}GɻuzY̊&dA.-̙m=|_N_[KƄ3R#' #.40Fa:ҧ <mYF"Zh9H: DG7˞NHhц6)V\zu}/7MgOoTaMs*%C?nþ+׃:S+=`׫J,|nŝ:k=sb02:ha܊.#8XtE% Gv,,xYO8P'vޫ/3TdyKxx־^R;6&yImӼFlcQv0S.xb2'iTd!t!fkL{/Ws'h1%Vp:j7BP֩;?_y}NU:m̕1^-S9eRu۰.5ho#$ٗv}dvzܿK.TxE9pu#<ࣤ;%~.g˺<>g|2;'HU"u/MLsҼ~9y0dr^#.;Q|.k}4/c^#8D -Zy#V.Ո{ ӫ[Wͻzx_ut#oj{`z#:EQ5m:5A](OĈBitc/\ & ۬P=~ }\DB%zZka/H_-70(O}#,JN^ 2=St9C+\,#8EW%4Xw;V,94+i"ǩ|D9`yBUyvn}ciU(1l=(Agv#.YVw|mہa1 UcH#80n7Hؓ~A#pZ!rc}@ )К/#)+cc9&-'w2jc~7l$ =i_JsS-*ZQ(Qj(;y7P_]ai3gv0R{)Lrz #8@L6#8L38:ic$ɴ5LcQ\2aW1/V؈]=lOz)\A*_a$#.@)klUnAb#.ABZA ^ReZfFDyusVwWu<#Gc'oS|fwF=~VQ"T3uv4xl88}/yd30|e&͉X.#a({!s ` `6~+w;1Z`"n3 pt~s ƕsk  !KH1- LC-8`#.#2H$XǍC;#f tzwED#z WAz@9s\T)`{?^K5LQ?>}œ##)7he4dLߢG`K$Cr^DrƟ̂ʩ9=͛Ai8b$"HBrӱC+t0zGڼz0>_6Lo'dx:2.~ޜuǜP9SϜM%JӚ_\B ͏~N@s4jk|طӠ$:h 6;{/o}b@?߲7-/LRRHq'2]gT } ##.:@/ñz͛m7-o,Wte-90,# 0V.ƹ&fFtEs"vniϮ>[݅pQ"j':c#.7lit$v+!4?oѿf^^lb@@ ``:v#.6  IrAa:qi#2Ӵ|F-N@ H)`^ub-ٮxж~Þ~4v#$"#)}ȆCN_|yB4?t%kYr?u,Sd5F׵mgs؆qv7OJ*gc-b"qﺂaU󭬶ar =Ԕ37Sf,]#l9~,䎉F}zACC ] vs뉎́$K ;E:QCe"0Hi,î\$,0o5RÕ͆ßh@&5edžnoZncwW\y׏<vT#.5:?'f@'<=/=ᰰܧ5MUzOc]bKѽuucoS{ǁT/?OzlMB:$'BI%JzMͿA cM*1aa2M 0IS2G#e##ޡ˵4Ʀ#tņ%wxPyl*Gh9]/jQ2#-<v1^Β+ךIL*KlFͯzsetBt?°TɂH#Nzx(]ǬWhCgi2)+ʘB9YϚuN5exJLjxTϻ^iAټ6që2>LMUq#8uwfS9:! L/,o#8w5UL3m/0Cg*ٚ7gDrNs#8X<+>6my.#xx3Djџт26r׃ܳRb09#kWoKӹZiݓE_ctNQ8W3n<tQz Ӯ-IӐ-Ej,-[_QfH3ၙ@urolE+dEj|LO-2=d}fDJK Hݼ.%\',#.XS#)[y߼Kj^rF*j65=9ElIcA:nIĀ볜|Ԥ)p@}q/t.V;Qώmb[hd;j>lw7" Q4h #8*xBgNEY¬Սdq3A<zqYHS(ċ`-f4;X}sJ!L#.TP;!ѦX݄#xd6 hMpl#.ؤmZ(A{?v<\Dcl%n9[3b̏*nwf䘙'Zӷ2 *Ķ _B &jEL}5#]-Ɂ[|M~B)MYf*T$]Yؿ1n7xiue^l/diNcuA} }PE3j[.,YW5QIcw[ 668uK"nVE9;LX*[D]Pم$B V6EcvꝬB>)rȾ,*fhq*_ڨl~Zݵ2*4f#8<_S&hqEUDAPONwyMcL_#8Ry|X؅ʩ~R}F:~]}DJTUXQkfE,{#.f 3@y%IY EUW Hl$v#RĢ5(EAeIWsE۝ږI#[XA˷_wOyA3Ci#ϒWͩ("`iy0YBI!fu$"bv`Leyl(ia|8d}N#=BaSpxx@ĝhZGF7/sw0f,ѮJ !ut-T^/d''MOœiRft|_հX1B|4NȃVɸ#8COJvɛpee!I05:'K6(}o1qrCf5>Ձ Z,ISp0H0ΥII>%o>;ϐPU{fd vw\c"#.vlgbP"oϐT#.ö7+ y+]BCl z.˔wD$/榪(9 h;d@#.l ۸U2I:&-Q#)7Ρ;N-@7bT * -@C;Ҕz[f$`s$͙:Tݤ!f#.3؍~(~$@ޘ#o~H ڜ37@ "^HW]`@?yQHn9.L4GjW9KPr:7l|xbLQI/wɕ3+?kr6ecn:<:hClVIﯗ:RŘRws؝n#.Wv}GfGX¹v3#3!"8Xh>=^u5鞖Yϻ3R~ij@>aykj%E#s@37*#. BeDž<"h ,g6y;aHX5s1?Z:(5fhi2ޒN6z:J"tHXw;/>]}˒;cwoÈcƃk3ys,Xiu9r4#.QÙSWr,،2,:ߏ/M{c?!$*vqEP=Z:ϩbO6\`T0Gt Zlʚ#8aCeo~4v-D1 3EiAu$Xy>^-fjWI#. &>;GzN&%B1#89JӥaQH]hZSNSߍ,#8x1$D`5_.";w64.dC4M >"g}І߬>>B%RBS jn7S`drC7b,ux̪YH[UT"C4vaڃɱH~ojdheF{K=k9S XmR,9Yͭ&D ?dC*P!AQ4xGTBIc|nXGs]UW}bUniŬ5ŴFѕlɦ8\T|L*͌&cyc3!xefb.ǀI(ڨ*̨g,(R~*MM)e#.:Н#L WhgY_}=Ofc_>r[c$~hoUUnTWNjǡK`zsn v&%mC?z?WKɢ%!^2V _$Ay_e NAwyNR@7ch#~ YV#8&+C*a3L!OA疾O!2S4Q|dN\(.u#.ʠ6eB!UuΆ$DbJ+c#)N&_;~ P%$=0#) -px=ѾBѢ` >}.,#8!^ym_Y9|dX^4)?Dcs#.~vSn@>66/`00mF=A;x$h?xo#)ϥsِ & ۖGh$09#.NB+;oWWbZ"%o^oc<dPc|v03 P=s0ĀB:5(ڟ#)pb|>3kxvο#<+543 ;C5RҦ[ #.|!$pP-S0o/>f8q-W~1W-r-l4~VcYսLW:E-d2wᩞ`U~>r1O@:,yW< b58nٕ}#)855uMwJ`;$*vj9#zR@ ߅44ʽ֪'MjY|d30(]Kx7Z݌U7Fxv=F}!&"DO D>naBHzxc#8#"Hb'ڥڪʲ= wWOxzUۿ<@hvlasG*<}=y:n@*oRO\#"miey#.r 1ӍfDUH\BaAbDIhӱsԸGsXY#8AI@B ΖUVc(&[x1z#순Hnm|O|k,$[sU_Մ\uҝ'ɣsd9QQ7M106?YGlpLG'ats'"ؒBEmhB>.0TϞ?X~tC{l_UcEO{`cnR#8i 4&bGp!*M-ts ,.i]Y ضX5z_,@1)GB&aA3<~<@A6#.ZA݀>9P4#g3oaB@'f^:P;C@%{B!ldَLCJ#.ikߺ1Xj۪m 2#8B#.%RjxpA^5(;Ulh H15 ٻ:}tPq˵g͢0Z`36`!]:9dy4~vF#)hFm}"u TN7!oijz^iyyۆJg;?۸L qqi^T݃tAWt{JMi4$Q{sf k`-IŜBခF2^R#. ~a˩t8$ԔYC9@9 *8&A> PHzz}3Ezu= >\|Q!ü$?噝MiO`%u##87Ɔ$dTE$HEScDz썦_>!CcE2Hd>߳L@ȿOG5}̷z#8 BT(#.I?5{AE}Qy3ǯB-@B``2%jJȴ/ˮx9VJX,b8p 7<5 I)yUt`>to8 qN";}?MADgЏaNzU B!el Pkפ`;6@-;8°$Eqa!$s Hٰl=N߿^\P)R1gL=tL7r&3}~sq2mL7GQ ,lӦJ\*u^vxh B\"?L6hs'ea6,<;M!us}Z%/N3S-SZS;v:KzD]#83g.EQIXCHxSj*0?`x|! ;@!$ w߈$SRI1jMV #.9ODzi:T.p7#6|LLI`EU绳Û۩范QH=!Bl2ـD=nQ֞L8p;J_"XQ8K&4%e"E.]߉P^I#)?}A;oT$3=+>\@z+匨cN$mM$vv9u9$G;4l.:taA#) D1Xrjoג/0;\. Y4WuhZkF5vS!b#8CᄴԏX!({&Cj Hp "xPT6%z}qC A:2ASd[<é#.|3< fy-^>oH\s&#)plax,X@P,.1~_3HX\fЅ wWiAWi;'p>*^r!Aa&1CsNMv˾qz<^ 1OTMSgP4AͶl:02E$Rh={ab h̎x@7<]积vYK!KgBb #),Be[7nȀ`aa*;Xv6 *kw}_::̫I(!F%7W>g 47`\]o#)R`k8xIBI rT0ʌqdRE.hΣߏ^{?&(@}]nzhK T݌劮ō`5#q-:xK/I} ޘv̸5wgk&@VfzTRUxB!YnY;MizDXtYڢ?#^U$S_k/L "B ML\eyL<Մe`(O`e"EM`6M۶4"d%$ F +M3K+VhX+XahJ@ZTT2Bj(gWƒo=8#8I0\tI~0rG;ᑑ#8IK-V a&w*I1Q #.w raD o}@ Veɹﴊrq-l#)8*I>BZsA")Yo5;~#.~w~P3$L5NK I]pj~#.\w+eB#.3|_ q5E!hKdXiɩd0 |$jfqCy#)!#Ąo=]9xLyö[7ETT427wQqKJ&#b:blGW/1˸ߕcߘPyE(!GD@zݺ1 T P$k\ńW߅ 7d}(pw2D޿BNǯ#.#8mfLf0ob\=}v9L&KG<#)KHZ%&%8N 0A6?LI B6f@'P_2i+V2Ä;+t{vҎ*v\zf1}''3~orݰ7]dN%&`dG l_2>2M?r N<,ni;7C}xhh r[iFtΑTm t+Y-"r>D;&g)%2"͍l&"||)à!ZCak!jyUD,O3MmB''cl9ה fr&FF~!8ՋsMBMXr)~iҊ/{:OQ(#8h6Ԕ@3|jȧX4_ºoԬxrL[,Q#cPU<0K?7ߦ#0J5,\ְUBE?xm\cSv[ rxZ[ &.2<S7e&3ZKU#8SLGd>=xq_tfy.KH)^/>cYg/mN~lgΰsBne=XDd~lM]$%LɝO1iT:7>6y!`VݳiZˆ ,bĨ45%FN].i<ӏ-NN[pP]J{:#8#.¡]h~ȴt2UkV+#Pɉ?gy~3_U[2#.Zq KlxxCXPVH2/ΌkۢUǓ05on쏻fz6[FۗO9rEW<&sy`XUXפ߃g=brG"E>.qHXn:~sӱ(|kK)bWrdi|_NMO4Y4 [#49 —g \>>ִ|Dm'n騈vK_+.iߞ SنHD@#)A7&ĿEѺ#8Є(#87VpHn#.ȱ0;'6M<̮Nڕ9S9<U MvLE#.DyW#8gڟ1#8L_O+֖ѝ6e\Ze*#. "SlN46SL?LNg#.r 9FBfHK6G>4Ašoj~swꐀ\ aLi릘Z#)/;Y]#.$?(QSDD AijSYl?KqohK ӶCww-`~,mM9;L9edTR$#.m-E#$b0jyװ{[8x<'ɣ &#. Œk7Ei%h`-Ɔ ͈#8HkK^#\an#֣NnAo|x99FL#)#bB€B&U#U9FeG#I1 5000jҦCAI)u֘l#.=jawK.mÃ=;YU{(,,s t)ߧLbZ;u❒eͷDR}{;VYWQ/^zRh7qZwVwmd{S9ʁL*ZGvKJ3v[ ,ACU#8A}dR uizs%2,BJ-*{4NFUikG#.|'Tl\ݟk2VC' Z~;@$۩?;ˑc8#aⴹ4~KGn!T`Չ/N)#8z_k!A^yMaXgI*#.3F& aE1&* <0d&Bqص ((H1EϤh2d Z;W )c`J`6&vv ymV`ut8JB#`xM)0Su}&Is: }u.xu/Ck[6x<Ux4_q5q<898mj}"Aȣѥ6tҼ\xX#ǭquN+-7/YH?u\k97N0-l2[;ÿPd+Rp ;ę60<$`.{ACq@rm/*qjf4b,8 U_ _AC]U#.'j|z黤#.臹H#8jrӼ'D:6eA#8NRnR &D.3lZCH\= `{]n7 g|U9[9hQBTc0#.#.)E(Y+NM`+,lpH@cBRߛAy(0cI75&P*r39xR} ɥFǺw4/_gGBx4YPORRS3-b kō!dȘVE;RЁua-咚 eEF./>Iۅ3s)rYl!qM[aCmLX&jRj[Ȫ` Dy[جuuâפFr6#)F#)=}(1AcEA+rhn#87;ܱQsN=IAdG/֨R,8Fdm{UUk;9p,{gC>:nP.Q] .{=xӉե a#m&?E{e#.3#)y{Ð|:4 *xg4[Fc@7P+&$$uV>cd-Qw{9$3Bh$}LiPWtӶwJ9H(ϚGDآGAYMB."wJufP.HVűVb󢵑qdɧ;hچgvm&gSG&0Y$),@UŜ%B~Đ<\~`6 Tƒ#)`}׷>Y{#?PuYO?\yä*#80}j>O0*#0D)D T%.ܝԤL :Lõ9rB-e&wBk)6D x(s`P)pw&Ow-E"#.%*e ;Y!)'\gz?IQJBwm c^9{x.HÂSTVD0E9X@m (>)"&o>PM@ާ`tGA=26#) @#)=;E#)Lˇ9iRJ^&/<͆bو#)ԩ-M+5H!̀ke;<y%deG^`hpHEǏlXvP,CO-}gHK SͦB`>P]E˧M[v[@6Yat`O#)R@ 0$#.#)늫ETXEF0h$@Bu4d|u1¢6ԡ@Ī֠0k#.aM#D`CzȤ6VhQ&z뷏K=K\IiTj"!DCءB$'ۥbq/thZDixe*0u \azVCzֈmCT ŔeM SD$i#)yqa"4lXg2;5_Wӽ(QUwnW7*nt51r#.&"SeW/)O:PP"TM!#)7pN$};r$bJ̪icdUnm%sWiLh_r1"h@M?K|oCX2A #)1WAuΗ6AŹSM?0԰ μǑO HAOhO|!W##~ϯX9Qq!qI / )2›X-e4DS#8b|D(EBu<ۭVv=%?&'\ ?;ޘmjRPA;[*1ēR#*(|>>R77Sy#8z xIx8/Tᡃpm z9lc8V7{\`NQD6)vHq@aNc̰iF->YS~Mi$G{8_ns}=V'QW(;%\ٲ|>&j%oL'i ͼ2B.#(LC07Nn$\@2##8l"ȆbsHP=v܃0@_3Ū #.5@cXj#.TT6-8ɭm` U"mƙszsE#8P7#)6* M䕸aRVD0ņmV#8w$U@WRTTޝO <:dؾKvRUKgBaAL ٚl!۞^D#.HP 0>lX}|^!,d`3s=ѢVҲ C%b#) ߭ #.er7[-]suB% 6AZ7!8npL<|ͽ*Dk-H!i-|u%eܨ<.o3#2tDi\tLAZKo:;靃Zrz_@E[d($ݷ㥷7V a0z~G]-{iuS3!q[.̑$ VyӖɴNsB|:AOBHb"he#dq:SJUYʅoBsS%[` MÙF!"H5 =7Od DLonBA#8#X wTwom nϚ{uU{4=uLA*Vi~NHPEפ;!"ݝe+ ٙ`P 5l%F,A:bq74h+f`o[j)aV8Lo5mx#.$4Vw8 JWѢ Ί$Hq@Z%S3Ʀ*Tmr;@!8^NqJ>C|*js2$4})+cqd t:>;:ͱmEܹ;Lcg@&)An* 'n_.\'#.xOxzd1b#)T#8M6Qzp%#. .W t>\)L Yxj&nT mQh#8x˞e+gƋ3ء_;L"Ph#.Ef&:H-PBF *#8Px fP+ d`#bgvj6BEpPQfZY13" -o44cem2h! Bo|CTL=Tǘd^N \n H9fS &T]/5bs.!7v1=墷hT˜#.]Op]Q\m73#)őd!Dv&g[ eogH_Oal`9] E() BEQA$#8(E<$HEd CU:@N+uwmGC-zĩgzi'`Qi;HKv bbF10=5nw~QbBuaaLC! "qcJqS\`&`l){ 3b6و4ʶ;p@):8Iz #)ac}gBi͇tvKJB8ȱ֡R0lV3N' |bh0eV"P91|v3t -(Ȼ&3E2ךP# 25ZaX" 5f؍YSY^4VxV/,AZ%(a0҃5AmvU;`"N$\ڑśo;\*@ۣ; NmմgCo:yRF"+׎o/#/c}d YJ\G#{RsIWk/Ea[٢榬,kS}3YrCpJ@6IذjDeQ"És#)C;ah) !FRK#A-l IT#.leMihL`>j "e !ojPőCHKuim:}^ِ:y\bb*5.Rތgx&o2w'!Ё,t8r(Z%BC1&6f(ٲl2.'~y҃s,1ȷ#.]#8=dHI<"!hhE'(6_ZD#.K6"K#8(1_y<7xf;,B:M4*nQ bP-6(T0KlƘd+~p2b}a劰{]oY7li[cdI$*] z w[<$+2G8G]MN?#.旝$2Ί4·PYϜ[A*v,gHr-oAkܠrنQcJkzWADol!4E$ю{dɾaVj@XR \GG !#8 UAJ:D04&r28,=) ȎE$+o~5GfIǃwSsI.W )8?9r/,$U<,#"H|(~_k~ #M%WݼmrLkFƫƷ5Z6JbmM^*ūHD%.FDũ&աY[X7y۠JWZeOA|)#) @QH%2Pi!&dbe@[J"IMTdv鉒6iJUidȣ@-LM&_7v,TФI#j2J#.FRX"e-d&YAHdlf$2BF(rg#8x@4e GmFB:Sc1WC,UBv!C+"S?Wm`aL Qmbb@T$ffg1Mܝ]pAˡz9K^ZU84iO-zY>zYi/ϯ}6c"#)<^o[3e%"i-i*#.23ib&S Tj0̮gEV(ǐKIDJ疒Idl[;1g羍.0z~q"19{@ έ>;gG7" @dϜ6|opM]ǭΔDnG`+UW˺nԢ趵& zz`Θ |5 yKϝs[hM\bM%ӣWhi=D)xpWvEIChNMW|8|os@5}4|p^|ˑ&I^<6)؂~Yԓ2|&1cv=P IoTo~:_t|uH:!ј3Nem<8^*f,wKb{;\Б//N9ziNiT‘)IM)\icZRإu+ҔhDZobν34MF2/D9wa0fZaeDӫC%Ծpbf.8`S:!0Rt"gsOKWwX/V.LɉubcxZ,1'iغ(4,06LfK֝VKto-̸ۣD86PuZ:ݜ|gfݺ- Y[.V#e9#VP&.E^N$"dZ;CtݸdVsAm$33VM; l!=E&BW&u6lT;o#)X(wc1ENb#.u)$O-c::aAW!^;SI.2G" $&C6HF7-aލrn1X@F虰D&gLnِ4Ӫ(7|,66t떍bir4B2 ZgjUE9OM"mM8!$fhHhDㄱ-O5L,`.#.rr2WQ8cޠb,ӻs?OÒ7(Q9gѻX5f aI&]x-J6օ)hvXK#8F)#.0`]6]iC'(Mー-ӓ;Z7RIY^ݿm-\\MI0DT;#|"q{;^% Nfc4Z"f$p˻{{zQQ Xo#ci1qnF|8vaS!#)#%2y.:kEvn̙cZ&BQH2kKZg EնД̝,ԇ6Am:Z'{s`v*ސslٷhIo#)M{ 㨤푳.G(zƶ`E8M*!7y b&jr44`a`FS38.cG D 0zr]$y4.4I %2,V/%:6ڵ)&I5#.Ee9Xok@"h~;eB=kxlHh2hJt#)ĻR nDăAp4^آ<86Qv6q 9>$)(7}XP)6xقBlab(X.F(8"T.w2$ yg"&q17AZǏ#.奠i\αG/#8!lQ$#.M5#.&j23%X$AM<4l-Yٳ&P7fqG'jȦ 8'3.M@G.3S )Iy)-4mEgu-Ƈ/cc{4NɩbnÓ)a!(u+h5 YƇ6W29ZC[H苺!T94]FlyєU#.8dӫlL6C2rdјl2g'JסB5RA6F8&3'8$j"0 h8#. };|J#.,u&́!H "x'FTͻ2"s0pI)ƒgDv[dyiQ)Cl#4 z3 )}h@ޘ߀08Q!P򡱈D'PmX#8!pGaMLohjb Jur6 f$Y]x:(wo)8f71 UQ=#.0e]g#81Njv0~AXAڎd`@v8!Xjavc(#K@zrHS,Cm7cu#.G#.݃#.S;IYͮP]pQv9<;8R`udlIE*!R(0JA?NH4y-6l)L@})B/%~#)ozZ(nfdd"!> Ru#PP䀝 F)U#8 "%XF!܅pA!*AݖR22ypf0|Dsrx\7.9z>hwB,ꨝ15n,[yI+7ݺ㒵0.BHк4T<^PӍH#.Ļԫ@@Wgٰ4I~ؖbKLƒ-_B~ a &*l<;O}Al۰77aQHDq9r818D:s1c?"j]?7ENOɲ>#V'l-9mpXȂ$)[LQ\{-fC`0."DhǢ2N5.c֓JA̺L*!sݚFEi>&h߄,To,e=t| uUFJkclm)Z6h1053$ܛ&yf}[Onޞ2 t{6Ngju#_phl J P^ZSt2ᓐA$N>wQkv3Px܍D @Is0RDP&vaXF."CCZ%Y`i11Vv6`&[y1 |L F(XP4>#85TɅH>c:DK0Q${j5Gvmo6awti9 +q8iNɱdU+aY,0+\E BRb#.ʢXn WdKM+ff"*cmA 9 |8FY#)/ Z//z=(*`D,F[%Y@F$ r.[Y*%+ "qi'[u5(LpRXUBiD4ލ35or"0~k;G@p^zjb9mk2cK`CzL5aLᘘgiȉ砦:CaQ}\b Lb6N9pE&|Ħ{\bhs>ĊI$^(W!6$RkZ-JߚNaK;K;[(C9&@oR>\mpbqay:lUXʃ&YN "5&V3%:RK WNSf|oYV"3"cPHf9yۃ2D1 RSU"$JXru-(1WQC.ĘbTl#.05;уb2!D@&wB 0H9JÛb{rpdܼPlʧXMbmC7JTCK@@ɒ7H$60%mSc+$Ȇ.)s ]3lHqp\ZXE2h;EcQ^roX1X5 b!Dh{?abjB0Hj71QBǙRlUyƊ7[j)bS@ 4H!K< {F2w"[#.T' jҊ0R,RZ{uֵh+ӦEҢiZ#Ғ3b'Hy2DXHI Ș&Ud (ѮQTVRҋ f#89!TTKfhz!jl+d4TLQ-&ЊS FJR&leSdJcRm%IZSJ,K%51J5Zi-bHmbS`#.JRe&b2LɢmRQ3j IMYV,ɍS&=ZmYVZ[eeZm&kZRU)VV{5yTUyZ[)7̪TEre?qlrwX`I{m~ݸj ?nbs9`U!zLKKA7="B+o-e}7* C|܏$Th%~~6fλnŁk4ّkS~ ܁C-+qMI>&ddU"2u/CU,B5 #.V܌0KDg<#8j(0#)$iy>Q ~> "P&AdC[lfGzoUGS&ǐX4ʒ@F 6рo#)|S} %&e0#.Nv(4A{'4l-I!?d҆o,B o+o:.h\,DŭuCKFV.Y[x[2Ns亻mlB6R:Ƣl.hX߼Rf~`% Zҋ>2"2[roW `’cZRNRJA7+8R^+dj0#. %heYַ*LD{#.DdoUȕhf/a{SjfuelW4,Pe#8#\aEՑ;vöSQ/zhI`YIHRqMRY5šVjzVN6wXpE7CчwݾϠ#.&$bI *huu%bib5F-qARGO~#w2$<wP1%yR! #%4%к*3A{s^vxiֵ֩0ӰU&#CgƩvgn~Bn˷$ #804׿=6T3#0zN$XŠU=8Ԟ3D0i#rΓYƞDd`9AQȅ#8Ʀe=n(8UD}z !űo>yG P6qBH$(D9 F'#.&4~)|Yyuǽb@E9r{u{nozAOmn6SM @oo5ޜ,"};㫠ɔ.il1U#C@9ʔ&4;B{V&"tQتbNj`;C=/rZ lg{toϾrZ]A)9I<^#.uiݔ6pNea,+!X("E%0T2r8tgkq`$%ı&TRR#j#)UtLD-UHFLA[YB^4IT냐"cQB*R4[e <7&`!˫=f>_vg`GS[wRMq;4Ŗ^ )M3:yށbcZUQ@X,fYCQ0|D,1dYmXٶXSM6Jj+QF,IB)#)J,,PHL$';ƬUMWI|A0<4nG~č>9$Ȓ#82 Ӊ鶺E@dsLc(T(pBґ,)C= >ӑnC3sZ)6 N#8ƊD݀l>誐c#;-C2:DOhh`OӶ1Y$B2D$HE$ @#JO Q10Vw _GAa3oQ7m'#8* $h)"Mdoxױ@m`haQ FV}i?莟0{}Ak=xCӛerwVCuleXn4_;y8;;#)PTU|F#/v&ɂֆW!qMRlP1B$~pQ#):ϔ))NJ<ҥFMmRY骨؄#8#QI!f #)hB.j)Qチ-k!PQŦ"A XC}gk#.Nj')~w=Ì\)74j;ZX^SA`#8@; HbE-"m/쑔 {a=쵌RMІĦw"BNıCj:Mn򡖁B(wM8,{Y"#8fA)qPC ,V!5?vaB4Q1bUIໆY)3ƩU5~^ȱM+uS#8`&%Q#.D,ZKZܦI)Bd3m.(R@#8dP傒Z4E*bѐep`Xrz"Ur_#)#.cAƖqbijƴ!QHDɤ{DMm?$u,,fjm%&qX#8JZL3d#88,jLP-.GJ"&ݶdfLxc &1A1܃fs Pd]L\H#.#.TuoO+knx88PŅ{`Vyqh*mD) ) &]pS#) a"cx%FMNpK?T=R6d3-Pj3&؍㭵w%bRSLR?=ǴyCɛQ5#8c4KH(/ФR#)v1ޭdmkyEyɴJ\REUY54z hQ6!, @E#)\؋DАK'Ny=\ @Y0ijuz4\15B#)-Ețq#8 u)xpۻTN]Mv6S3W2΃D Ih“Vťb4O~6ޚCZ򗳭k&Ƶ2EBHi S4JinI$#)FM6CUI4i#)x,`?Ei.#)ؓ,C%@.$Xae XAHPqRe@#fGQh0,-xc-X^ Hl njBZ3l׶(!qXs}`z vEJ>{ۈ['Zw.@<=g$]t%3S1RkFM,ѥ4KI@-Dٽwy<8p)@@XrIiq#8?Cαq1/kOK~=1hR\֍ld䞡@bwW^TSUPm% Ri!2+R-Iё~yhJZsmM-e5!5VfSMi6lFmm#.-iekb2ߏU|( tZ"j# "qj-mv\ksl\ڋTVڣ[\ٵhV "uIտ0#.#.RD$d DB7ꄉX./.S7򲾝s(%P0<(rd 'R0[n]EnS#)y{t95}Px>a3/HbD$BlPn"*W/g;H3Cc94%r9hT 52HOcC%/K|7{mEWD̚m~9x>K:+o1,jHvQ!"((L&.Rj1 VFDELM68cKuKU<X 8(h4?k#)T4d; Bc$DoKG;b%ϩ\QH~ ҒAn$9hTn"a`$oI x&܅~~4f&}SstبS5bԱМ2#Q\J:Mo$hzH.$!Ae6K,$V!#8h,#)O!迍%7#)>%.=3Td բb|ED+MYwkKM:TSvN"bG px$SR.e> ?XJ>܃?*fƠ}e;&hrS2خ\үܤ6_Xn?vGI1$.dnmH#.CH\U0Ve gݍ5Yur.B;@Xi#80vXf*x ޒ%?Nt 4N묖8mÒiѪ?'7m/Mrs^b=rK:f;fWG=^‚[4o.EX$(#8JZ $x"TH`CZX7qA2>#b "R>!ye]L\ IX쾏GC |SH)4_t #.#D 7,es#dMO?6idq7od#)#{$˕X$c`V+&ݚkRVڍ,˩.mL**e@(~y<@ Bn뭌[MڊUU_Q uBdul@fF< /#8+%Acl/H(/2K&&(sv6$#*PT!xdq3H_w*XkBK/ WFt1pW7&CnQ2p`p!&ՠF#. E"!`@ .61 +RMy`'&[5 Gl#8;uyX@VFq>B .3EQ#.1hz % ^B #8ͩKFS5U)UVDm;s[Ԟ ~C6<.YhL0rܢ,<ֳVB뚑N=G/o.iG_^sUr)<+9`> xAv'׃D1w|p\}sPml#.VzNqpsNK8͢CesY]"s3BlS^&kR[W+#.r琂ԍ4FyNW͹$Tea$ {8ԃRH#. ը,\ںۭme+LVVƍҔ\]VbfXASO&0:(ugQ*{`Z[8Jf#b9l~U dҋM⑌mp22E5'os0Dgahd&!gpkUjZ.#oϕ@#.T1@-Fa8.Vt1"BPB*BTXH4wP+ axrf+6vq|z2W#.=n(鷜7%Kc'hs7Mlf;VE l_YMo{z_ecT.r07I52`PI!ņp׏IK]?/kk꘩Vs;C(J# DTd HRsBݥA#.D0,m [$Qg opֲ$mnAAeMCT&8\@]OveZ*~Dx9~]c-#8D5 R#)'jRLȶaG1wfP#8ΰE<5QLCpȡp6s.6CnᧂDFcLl/apwAhjJ^8,/##.2}9δ kpl4M8=#.dD;,B#8rFZMaSUKUߕs6qT\F/lxFPpD~+j}$mCFS6%lAgxlHi#.ne]?U~ D*}x3·ۤR5v>#8|.,;xφ}e' w#)DLǛnӭœ`$6x֫bE!RҢ H)P5&R#8v;u@U8KT.kr6qaFP CY#)' n0#G-#8_8rrO#87=(Be VTH2G艘Lv ú4#)$#)4m<8jpo[ (7$D(̠( 'xfJ!N1m3 ~Ӕc0琌fYQ[K0[VU!3!wKB~v[{m Boh!z>ǁk"KA,û E'rF}o3S" Bt~R-#.Rʅ@E"<$.*!BVVef$nd|v8l'FlgAm"M:@l>o'TL_MZct,~U904 OJoχ-l!7wvc!6bb5ZQ{caU8K˺+6-U#.KDea XE%KE,bH>eR%|ѧCڍ&!![VEFBRfm6&mƘ#.#)f%[2p$͒шcLK#8lJA#8 ȩMPũQ ZjbP$"d#X)uH7 [ [&}R9 H#.6 "ivYfUΑySu2M+<|^6ZcFmaIƥ B 6=o;o*jlSf֚[)%1B&̴Sb#.T;YNuۑnQ=^yo]P!yej R VDVTCJlƏ6UULF:h:=i #.R *rI#8z!B40}QGXHu$ a-CqMi[)#8d *YK"t1`b[BRLjx*0x:7XhƕmiP͐Q+<Ib#.V%F2}4DOlZærEƖ`ʲV8[ :-$"˱_@#.N4<$H0@CL0ֵ0v ʋJF7C`lF\*M$P `Ui$ JiQ,dJ.K15ab+ Nz6JO)gu?=>_t}lb5a>Cg#G "8>)4L[}}]]#.Pd$M@JhwQ*^'ʡy=*V$RP)v#.xȰbmYnjoikR%MMUlgD'nTWl &ôp΋F$tSHQ4"s9IusM깷+Lߙ{icEʎvͳE;}kp\gs#.o3Ȭ<щ|DsB`pjRKq+ҜcV4BCro?Ž{hath>,om_e8eh##Q}6V~v`{>p6@o6K|6Z2,#e[ ta&8\iQ)%׎KfV#.k%lZmnUݹTWW4fB͚#8h%RTEB)#8!k-E$EmP @!RZ{37GR0T!sGHDFU!RH@A!@#.1Z$7#8Bcu]g\׶ד4D$#8#8( |^{59T[ٵFVnmC(`̦űLmEmhhhJ̤ fRi*Uf$9 Add~AcZ#.&%[ͿM#^8\"?H)t/3ZZjTkIL[)Ej[~"V)O.MWu%nݤmvTmm+%nekMjii*#UvZh9v,|`9F$%*C(#)$d@$wu]؄@CZ'Yt.BN2_e0)+fthԷ |"9\42~,a`x\uf,X9#8ʤc#)1%@hi#8fVʠHi#.0xFN)=ˤqzg#Ll:nKKtyZYRCgG܊2Q„v6&%C`tFshu,^KEaXpA,.g4ö⠈#'O#82v}aD#)uL&M7#)B?yH4#.#ȷ $$sy4Nʇ]ޠA}Mmcj--j__k#4&XG*DD#8`gqI/9 1E@ kpꇪW `lhDX*&V*oJVޥ"#.5#.#){iH#FhCB#)aT]Q$#)F#"I%(BE[H1zkz4H;vmSpd9F1n߸ۼ_ (TD^$# t≄ۨ vM#ݧkU 5#.'ų CB;w̎6!HC83sEc3=ly_j6s[ К#)$X=~ _@M3U$d#8T@#8$F"B#86s;0#)#.*  (#! 6Q~/NIf3j0[PӍ%hd%#)5u0ʈc)֖hot֓huyGK;.mۤWKżm^(M5ֹfh]VZMNj5b2VO:2]w[+E5k;6-rHB,?@.#8.L&bnpd2-#.~Z4;Za%P`%|t'fB>_)7"`E "0XrmS^H޽En5Uh4/џ$@~vkomm%34t.TG"3,R0u{yXDLHIAHA$rDOI *×c`\]uK5fͷI}^o!gV-Rg^>Hg jS |I$b,#j]Uږ|ʞV)PndtơD>aD(/n> @$E1Bq?\r!;^U*@1 "YH #)^+Ϝ6:+ H"" !Gx2pnW߿_| E)I`WSZ*^Q#)QZM|+j)XaH[w]!.݅rYbL u~o $6/[#)򁋣\>5#. `_u#.#)#6T89|s4>'a06a#.:8\j#)l?kͅD,7#)Ւ02Mf#88H rl.ՕA&Q1"*I6*h̐ePL"Nja5UFެ1 #8cls'F(+I5vwrBdiiuc› 2!~4eLra.XJaVD6,^F"#)dꋸ8dĚŦѝ:nMp 7qR'bWl~ovc!Ң 9A08*2 CX&e8!3Q>F0@y儏#)=N>E?(pTkH[Ai*-&C͚M3윍b 21aY$Lp! HF 0cKOxn]NQ0bJ c*tAv$kOBPZ2[jg-{ zyQ )Oϰ;:#.I*r皣t,*#)l4A7H@ #8H#)TH ,ü)Y#8`udſC@ѥ?ݷg[_e$c$h5) OՐols'D5*>@ wCuIw3xR ;J&[Y[7[,ƜhafRΛf7gI%*Ua Rb02G"ms˾V*擢Wt]'#.>0 +@Vyo Z|(h}fDxhBv/qF#.(sUv_wtƸfT_ FLm9UT`HeKNA?1}5L[U$_oV1C`hNpeF1DV$X5i*Vm-0fPHg$"q;fE2aK( |ArbFp&`=\ypk0Јp +X/1r7ًLgdr>}p)jj.G~iNVʒ)3L01uWhHdA97R+6AR΢k8M#8)w.C%ϔ`p"#)2zQMVϐ#.?as't 2! Эo7lNsuiME i!XηփC!LjW#)o]"h"cg>;H>cJa#u#8T).%"Q#) # ̈́f 5E#R`R>^٭>8clx[ͦk΀ϴfm%!Uy,XwjwO¾&LP9[g̮r(O/ kk[3u۾9"oP4Ґȶ=zwjN{vG`'jZkvC-"P6sѶ,e0( #8,д (5qt;b6n>*#y1@#j+Ç"al6՗ @1 1I!se!.]K`f;Y0eɕby=ȐIhqA :qL:gKy"۰c)p*A:ޖh$ECʧ$~#)>6v޷6hJ+pZmy.pQS|Ɂ܇ꀛ#S}XObvK|'amᾆx 3 wg!y9yCH6=٢Y-6\(<4bϭ^5Y!AjLP_>KmZ#.9a3#.pfk,͆oOVa74q'~E5gT#)d_k[*]W^TߟO3ɵǨ(r|4Bt$iˋU(w!3LWuAlQg?/~@dJTl)s.@dF(52 VY @ ;Ē7K>(*f~فj~RCRh ȡ]MЬBz Pл 1J@.=<|ϦnIsOA7i@Pd7j+^ԸtZ]MWbcgK9̋wL\EZm⏔$s">zĦ;YVR#B_aFXTkm)śj$ f1k^m`Gou⇓!=G)KUD3#-$iIB)RJ3&#e32efA&5)SHRkm|=Vk̐tLJls9i.HLl#8 k"g:#yeB:Df(o0I=p+LjzH KD8)ءF3>SgvlgWbhWH.nHP!#.drp70eg(D\{xS:x)q6-lodA}P#.)!U%|H/O#.Zpm4a꓆cޢ֠pY"D:vJ֡H)?qDFC U n0CLp#I0T4#."Ih\a0I1Ĺwy i5Wgkح dXi#)VhQA xM P!Yqa ưRH( d5xےk9umW|#-q POup6ߙUb !Wö>`fUR2dR_ȽKP.h4,#.PN,2XDqfdY-bbE$ EKC[]ȥNzYq@+@y$lRTm&JZ44Md {I#82*eAnChD0jb\*:X ɕ7#x$Fn",T4@GJm-(HcqD)4(A_#.<ӹoZo(j7I4Bbml%b1y4#ʛ=M0#8ĤulQU#8q $8G#83(cQg%АlFD(aqHffA:Ε@qwT7HkS#%qd`C 5Lcg]jM$[4A!p.rw#G#).780ȋQT`hdS4̣"J(!&3o6j"kԚ^ݨ[$eR Y033b!#iXU$[#8QM4h YLiM {j'݌8L o&楦C81U0Թ4DBHH4z<{i@bȜ9B&E\43 ,f540C*51-eƷIͳǦ aͦ /5͐Z#. ѣHt\ۂ= s9iRQN5NMX8׵.7b"!gR f% #)\@cB(m*TPE"4lLPa0M.#)VprI#8g嬨*I0t5<+(--;(H cBؖ2[_-6ڨz{;,WE咭ñ'P#)vd$ u>o3F }Ƣ] ~8 na@d#(7[#.{(#.NAW"9g/*H'qHPԗ;BD ȷ=;g:؂WWK!iF0rEA=g5 (YM,Hʀ|*ɩm/#9w!@m)0д{,#."źqӲ޳ٻ'd&{]c40U.Uzqȗ1ĵ^"$sn'A&Ӊ֠g#8ԄHf-^\"e:cs'2Jv#8CThZd!X#pVݟ׆_ g#=8Ax>wV"7;(K{T5O#8(-ab.zT!dז{ c&#N+䝂d'av.0_E#)rt|vtٸ8R!]CQ#6Ԭzd}(o fTVJ\י{?ܤ#(FDL 'KI;C:@xe868MB3.\=p6L@Xr@'7'[6CY86q!un:q Ht2tg `~)DFMJC%»1lɰRpi[wBEar#CI/4#+Ft;uru8шGynPmb8rgJjMnuK̒#8&6k*;(v:&7&i9֟o`qk-u >ٰ ;O{KcOgy0I/˻<{u=^H:ˮ#8",y ˊGIan6#8&(#83;I Ĩ}OJUv"mI-8Mu_V2.s?G;PVϤ>O}k_?*Ao-C q :<. +]$r(Fr1jho.jjGHld۠,8#ɪވb0w"N8ã*dI\,w1ɨ%܇?> E#8.ޒMjޚf~fALE=ĵsףz?nq1%#D\]#8k#.6riFB bƆR,y<F@3H„oqtBa%#`۴}k*ɞTXu\7AĺF{-=ux^ qT98١>32ΒJN#8sj\) #8(@N0#.x3;v@gCBPבBIjbdvH#)ͷH#.kַ!07faZX¨L#8!T nOf'mםa.x7iRLrQ:AY.%\al1x181*8BxȄ(=Aw1'l%3燠~mA:pF{MIf~#JXNAg}g:9~p8&|zRA K/cw⺁\\#'%svvz;FaQ񜤖Nn5o`#8$#)sۙKv}'r'4óFC}HOyLQy|!Ι";e tW1>飣)JAzwq!}zwNU.Fɓmaaue"#.Yè ^#.`zގ~b] ;$N#.2{=B~[z`A5:չLrCM;=;"%K5\:xHԃ6"Txki]5ERV5A[;^3I{ܞ iΥ B k2MT?L$'~jny_2xS?RRxH#8zTaTkQ%r\*B@M?TyzH<{G"i2i#.N#8&)Tdu'SYݮ&nkHȟ+cNSQ 4'vdXMӑA[3l"Do#8]*TcPQ.8}U^RUІXUԹoW8zhq+#.HCQZm)n7u5uT$ aSKx(aIoI͐MR3,&i)ⶒ鰲+f@ S>.5"u0-0x8Sjp #.HM 42vbCt9)sK4(qtc@qi4[6ac|9Wc=0KU喝&lzH:f(6,6C:i#)s&IBEXU9qlbXLbHF.UD!!ϧ;m<`ɐ٢jQ#.4,VNmFK9ecd0cnMTq؃!6)#)0#8u`7E-͑C"[0达 $"-ts^Hώ9smc#+qnB3Qߖ16#8V^ķpXage#87wj>9m[7XS)HyY^bMP*MjG̈P8l|RlaڄDm.74V-kuojr>ɾub4p/Z$d(4Z.Ml{!1lO``8Ct:&z x Zҽi6k|3ppgKhg+cm6vr#.4B@TTxҺp(|)+@اhJ'BpDDa*d#)4_K#8Ԙ#./1[6>jQH2hbyQ*7p6lï$Z@dJm@v7:!f+s-#)t0@mgN&[%/ưbETcQ`dz]K-ui^OgwOtfi N@s%JЌųa&%JE-2QV,^1|63k2]|ĠP#)x;@q {gTU9΂1)ąc1+A v!8giej #8LgMOJnnb1SS1:hNj n{.x!hI^tNR{jɃNZ16?Pj9:`3ʌȣpo#8VmjUVPJm&Ԟ\jX#8$#.#.0`j,Raɀ$HP#.!F3'E_p\jU4mqdA"I $ !3~=<󩢃=X1#)#)$I] {GnN͑+|kYhb06cI#8J$%s$& ֺ\# B+.e#8(Gjq6'$xڹ娮meA,)@ȡ8pYP$6ڱ#) o&EPOOAy[F|pN}+,;K0&0th|bf{#.7gKdu].B qԒ8~7/\'US/KkˊAzL靚#.*@fL;~I*7X:% N3[n#8#8ȑe㚚 E]{V/f#8 Hء„ .;h}4{OaPk,a 2%ʔ$uqg/ԟAPN߽}_tҥm3ifSLf*jC*6mHlk[Rj#(#.!'q׻Uw'y#86;TP]f]#)iR[ MI@'č#'G`uC5#)S~@:E[I$:N'YC0k LCDpAsbй 3#.[1; aftQ+ŐKH<&6Û3H[Z%XU@qߢC}T7XqtN&s*:k}7 R›SRGFuTX0|#&MQa@ Ÿ%SJi(0C }_Mܔ R~ˁMG"iv=|Gmڒ#)[⠗z3o!3uCcP@2=iO#8&H*z h1J-uGa!0rj#.zx>Zݺ=^Zk"26L>F}Օ`V]e#8R3Fe!Kgg7sBwsCT@Y3w5$HE:oRѹ|}T4)k3AB s@*~hS()f2j&m[EEjKMڷW!n9uw_ó"I⯐ 6<x}ZXvAA~S0#.nt$b!T&LhMN^;,BʡAݴϢ8]ahﻠQ?x (Emڔa6eY@6]͵ge#8Q)7ۇ-[ō<$\d-)9jL}jy#.l^d)[Zl,#. JJIeR)%" JR7K`,(J0@+eH%8Ky{29ȬK;h+a0eY*wKH~) 1#.PNKج:2(D PH4V CjF@ƊCNŻ532JJݮshSQFƷ^#LA v6dh`6[e-Ji̵nA))AB3[Hq:`]2pWg7g0GǔUfaSD^cc"5AeXkۧgy dA @NvS\#8lfF0ҫ 3 *#8kN8L UH7פtVD¬U$!pf(}99߭mXoۜ [84&qû.|%iKҩ,B ?O/_:Wgw_?_?~?K?/po?nh@M5*"Y?{#.#_$#.k^Fe㻦L$`F0r5EPB MME8b.߿H"|4ܟ>!qG"Ub0 va1#)cWLo\,댹4 OKcCqPX hHI#)mx͍ @o|xvvs\f8E j3Vg]ouHA} zަ`wJc 6.#.jȡܴo{ǼTiYPU;-2ZIņ44mٮ35Yw7%a헚ѽm0C`aQqɭbYt᮷?o&db:4l68ue9#.65CYD.w1k##nW0DcF+Vm{ါSN/kb@|{3P3#vIXvxpİ*9ݚW`Ϊʊ6& ^]8v~2&[E8ɢ0Zv)#RqqN FH&p8Ղ =Ȃ$Kd#8H(1$πC~k$3@z/k|Cl %-:R[T ."Mwڞ/QOx0ԱF2(J,3Pl{gn%D$k _fsKhR$#.Q0;XNh%%6J+K#.ZR^7UxړbZ4[ [$cvS%*9#$P.#8 f< rFINq|Q*HbӼ(<}V!Ǻ! HN#]H o{\ބw'd0#)"lBDE7;vMA! J0$+!R #.h+" a#)H) 䝾vG⃊۹9Ч< 4,5,1-K&,J yI}#)IE2.fy "zVYu~?#8~2BS ie},쿒Ao_7Miݻ9[.nFC=o{CGd^{u6=k{㽦Smup#&#&#&' tz=<>OxKfuwcڏpviM#&4 u^#&]$((m(: $*=9IDt@#&j(U[=x"{=Z}ь^nUl능Gljuk]^&ﺮowNםTy}l۹[izǼo^uΪVgAH*H^==9WC;=nOwtvIͦ%{@#&BH4<ҊznΨ5}v>=C'-mk}1Kv#+|#&pw}\O{k=={NJu䵭'_],whmݦNvܸw7u;ort#+n;uﰭxRyPO7*tٯgl^_n%y1\ٽ}r<ǔ7FqSo/X#&]ևz=){(#&R**]Ov@a;#+]Ol#TUeB\1SqCu滙#&#+v#&Qwy^yYhYly`ϭ4-!ˮ\عwۏWm8x *vezv^my}|4ڴo1ϗ3#+{\9bitY4g P6k=@n>{Π]ʮ>-3zz9b#&@ ׶\5kSztt;9#.齽M^W{:7a}>eP=]59!ی@!ݣsyk K0gwh@'wzyO{݅PV7o#.v'=vfc#+ݚ%h;@IBJnۻw%ibz%I{= >B`ɦi8heqr۝ۻέvfͨܣū\nttoM#&#&#&&F4#!1iSe4hy @hmOC' MA#&##A1z7i<#&P#&#&#&#&#&  hiiSU='*=(z#&@#& h#&#&#&("x<4ш@&i4#&#&#&#&#&$#&@ FК4ȩ2ʞ&#&#&#&#&MDA#&!0!IbF6S=(ޤ=O=CG#&2#&#&:]ďSת $VtL$Q#&R Q#&ړ~:Xpx4JKOǜELL*xn㓙*_#{@C(D"-i#.%J6ѢwS}rNB~"'>eaR"#.pa\CMTW+ZkZɶ[m*֫{U#&%D@BVPHe$b P$qYP#+*IUm5kim-d(d(0#.Qil1E&D"XԥQM L&QmњK&DhD"jR@#+Rƀ4ŕ6IZ6(JYiM5!e6h& 31IFd#+)E i%aK-#JZ54V[kC6$2DPem-hRQS[jm6e3A5&%ȣdH"EEFIQ bTD)BDIb$mHA#+42"bHd4F"MdѨ*EdҚ`RdQI&TiHScDb()&ƲC6"LSC3`X,K+EJMAjJ()"JIR(, C%0&PI)5fƍa6MILB!-)IKbLYfQHْQ6fFLؙJ3df M1$"PlX $iJd%HLi& *i,hЄRK( j4mM4Q5,YŒ"h&H3 J6A! "1F4, &T̫1FKbQ2LBe#.h"0E$ld٤jf#)!IL%b#ERiL) eHY*lQfJRSE!2c&E6I#.DQbI6&HCHʍ4țAc0eLcH 2 )LR,!-f͍$Ɍ A"k#.D lf$FPjK,DтԦ#.-L4$̤0&Ȍ Fa#+ABi2&R`BjfF&RLȈ-K4YM#(K,DZhHb#.QaBSk]5H# Fmcb6Qe3ME*ICKHZlQjLe"`%Iȃ134dKcj) FM0bk1cBƤ2eI66UhVɖERY6lf35lX#[&YYMe%#j,SYbKHdAUCQFJ6(։&H"ыF6dUQH%ZdV[6[$XITլPLjZɢJm"$mjUcҩe*eT"5Y)jh؅$SYcCeYd+fH(eF$,Q, "D6BcjBTPj+$FɓIEbMdEeH2Bf(ZdFm6F6S2$1(Ff1fS"h,#&Fa)S,FBͨQ)$ hRE0MIXFXB bM,lJYJ2V0H؆5"jњ"4#+1RfQj4  2A&ĕ%I1cdd5lfɱM6b%#+(iDiS4@XbDB#+0D1l6(Y)XhQZ35#+$,FZ#.6K!D#+RTȋh5Q$BeE$Ԛ`Ɇ!a)CV6JiB4ILjb2EJ*cI"ɢ)BԢ̔ISbQ6Qd0,ҋdXִ66JdJ#+DDdj̘4қ3bb)jY5BI(i%bI,lh& "4ZYhj$Ze(Ml!TmIEE4&E23#1F#S6IIb5%K*ɭ61lj cc$UE2X61mIQ f-F+iQQJkJ3B6P4hDMY$Z,e&ZiLh6mXLTLIDbD4lSI6*ضŦj1eRɶ j4Չ(#FFJ(6I36YQj$Ēe$ȌFB-6f1/Ey//~oю%`S .) ŠѤ;7?תa2i*6\S4a%q8ģE G.)$$*ᱢqhI(R+|F"9,[s*l=_:YA;V-;brwx͍IHN(mcջfI«#.ƣ#1$vl1#+sɣwHLoywU{/Y=ןg5r ֡LD&hTƗ2J "E7n(WH{ruچ_V呕sIY AL^,0q޲wp1#Bw^M5zIlF1IvPx=1ZlE#.m#.EIlϏ1؞jxcԱ9;l#.Pa4WUuіwOesfIxM %kQ,3w,mFDE%#.)-ݭӓ_*$E#.d9 #b;St΍AIFy&,:l^I{;U`ek]S (TA@rɨ6m%~YB((b~) G^1Jj)>0q#&8#.3lf EsQ[D Y*7rƢj[cu6 _?Ow|tulZ6MoK~G@Cb|3ad`4L"#J8Ih\ "1YIJmC#Y6+wUдe$HalAHPŤ'mHC.IuVV7SJ]+)/N,8P8Vp(Wňd(F. HEPU'-b#K9!G F!}:+<#+t&XK|3D9z~`c!kUeJaс2<,""fF߫~.i1#Ӻ4AM\UN̳)EP#(D{N#+)|˻룀󲻒f(F(;.D##+ɦgvA8Ͻ5^]O&]AKk8ڏ#.RJ#.˜(>lNZֻ8(Q̊E }BuBl|=]#5d?9IgАO6繅QhX}G 둚F^LzG 9Ï<ԘtI҇\^WӖoxâDn$g esƴzG1a?N*FJݕiBL8#.MjfAvmbtqC69|^&#ZN]ed#DIkG6guTy7uvC#)94=Fj/nvfgɣ=u8Ծ8SGm~<^tM&6tvq Z̷ՅpkU呛m=."SxQ#&H-ܔv6y-zrRHO>#+z}:섒H0H uBdN>٢ܸ9¼S'ڋ*#ӗ7WkS/=CtT]8J6<ȁNr w{,&׮,cȶ_͚-w[9޼M?)o|c@7=RK*ɐ*V_kB#. ͥ#+}/֐A5}#+#clB׾>kuI_kQ_k[y'Q#.(3XnmU([V=l5ٕ[LP_-"{[eQ#.ѨjvYH!ު3KC9@ik&0fZFSm.v(J|g5/7kL+&*z/B>?|\ c9ŞTUSL~wCV&:)S7ΊD^jER,)9߃VnSь:ٿVoƉ2$L/WjPJC^kEX).Om8rfAt'¹lbm\S)\#.E?SkSRn(PbRfWIS ꑏ\TGXl +@$ 3HaP AmToݥbRhrJRi^WGv$3J}T{=YwͰ!~vxzYC p/ѻ)R"1zPEk\:'?٭<*#+:-<R唠MѕY\ׯdt(FΌnǻcMd_?u1-bLr_&3#.(:}6KD|!Y5H-)pkhz ^-u~9Ie1g&?#.]ɼ$c3Rz˕*ꐨk,XD컵}[q~淪41Sv馫Z`ܘJ%ׇT-V˂¤X#+4$~|ac?͖wcF%$WT%e\{9~(JShFO߇7•rJdOɝx82(5Bʪ8ҫ'dzKg`g˓}UN$ͿpyluƜXȘ8giֺ uP&NBBKN+U0D|ϵ2*ӯĒTGWЇC6:ЫNأ=tKbN[x6=V1KWhIZn z`z7;.U<]^Øs `8}4VSZT߽R)9:sIG# U Kdg~wz=x,Kgor4:ŒŘ*K+ҏf#.X?wLؕU1ȫ:=#+ΥY|Zڧ$>ݚ:b; ocbk%{% CMJ*Ϋ!#++W?+2(7Dfd7(Mp{TVa!~R펑ơ_:ĸp#*s[RTm3vO#x`{?p`IU,'@YqT. Afv2 b>6{p(}:CGqscgjFY(&ݍ\xZo@lXo3)vmf=PAi*/AA]٬w|`AlBgc WxQG5z})#+2¿3]:tg:``z%-Y#.֫S)E)g܉۳6=A>~֫.j=.w;Y˯bd1YI:,"%4WBGWE|i%43#'A(ƴhq;?j1B#.8wy$۷.L'Aiem.55I5F>}uReLJPĴYKAپx7=߻@};ϛAp׽_-_lx=ZQ>yCYd(9xr"pc#.7{`,Q)rH X1&IlS-.6-s0.0.( HHDyHE.^|nk5Z2_[7EDy+It!&E2:(;G B^:ի@X\0Yl}HI; 7[n}B8!._Mosf1nS<\Y{;zؘo';u}]/l1ha3 K^96s! &tz?m91%^?F:َ#+ 1Rmhxt@MY`(e􁿕5 ML_f,DdiAyظ G%\ϾZ.pՄ[F+*'iNQ(.Qv`\l9#&>ņPQѐZb4{#N]E3crĞ٧L^(.uM2y蕠^0v˜lvD<"rVsYvkAXmtmҡ=!h傥$BP|/oww*aWEr>KFPr@NkolK"/l0)}q:acDŅWb}o#&#&A[0#&Ag\CX)a?WL])]UGZY"E6I#o*9G(䟩:O5鶉u^__׬mD@{T#Gz/28Bn$(0{ّ2u$@v?`w}GwD;DA2!"\[Qo{k-Ȩ#.:&ͷjQjbuPE 'S#&#&|՜f*@S,E'^"#AsKٻ|nz8#&=/Z|={̣]@訉.qb7ЦZ>#+Y% 5Ät%;M#.PigfߊL#&Jv#&b1ޟe%`xFyp-쏿De:?/|#&#."H|wՈ\ޫ~4܉ dG%${ul<}T#.w#&X kȵxz˦f<`m#+c߇jNNr.ّ:;}%?z?~`0 5+Gunw?}(#.:.rA [Zn"lh ;zzg>l5 v#.}YLA:Ǟ5J1(Q&B$i[1!MҺ)(>ٌjń+sȄ#WEH;;e$ bŔ BT2. rܫpg_`E;uIsUJHLɝ5%U󐨎i7ư )@5V5_>,̕Ac:wgi1s"ˏ=%Sd2JPw>m يő䔫w4:,PѼ~˖93O~6Fpq+jfUF#+1x/WX3Ɂ00SfՒ`zklSgX[0v*6 -eϒുN9Ǖms"|;O$#IaiuL[#+:@Hc #+ ?GI,-K|xMCĭ޲Ɔ+gLynb _P;c'X4CLvP#.ɽ~ɮF5#Tjd.A8)5 $׻?Gv>p'-=H0:#'0Jgj%fܱMLYj#&˶$IwͿ#mp5U4Ѯӏ0Dj?#.oK0,&QZ$"6SdB"3uW6T^R#t(5 ꮚ'fșv%Nc?I緶1ՒPt;K_@:he;eXz3HKj6e}zCYP~ri¶#+sRdnAIsr㍇d#f+aðDba;]>= DS08F␻Bew8Qd,s,Š ҃ LkG=Z#+j?00^,ͅwT!$硵e o?#&cV#&YCA#.ˉE.7^Ex:PS=Q#&<% #.PƐ  5”@#sl͡Ih`燗 #&h:q#.E`Ai$Υ-J\ K$:)PUGe@N'aWy#.h);#+Bc}Rf{\xĸ$<+h:]"P(A#C K=ɧ;B2Z!(lNE fR4udQb=#:4x}ѹfuCBeP:ݼ!#+lBA:= h t!yfW9#uJ1 S#.]( G<\%usɍ")X:?(ت#.iF/x! C h|ƃ bM/uYd,x5o)e-W?C\bjz7 W}idd͔1-! !Y.DQQDT*v>;5We#{U XgpΆȎk`ި КI(\Pb0`C[! Mڗ$? C[.8TT)h7xɐ#.x!1o,5C*a t"|~<,dδУ< t2oZ:#.Aj(}C@cq3&k˿+Vpc괌`ߛ6hpdG4i*bƂ/ M 8Y:YZ*1M0%s0V[u,}M#BhCQ#+51b >FY{m#+E4a(2[C, &a+cuRƅDQ¤(iƦZNN[c#+^Y/ۭY\D!V Ҽ<)X,_C[ReH Gxcjk =rX"%F 8lMx/*'$\\m#+2!1M&F)dXU4IC"́'GZ,!86#+1(dʒn%и EiQHlm P0MZFRM##+V,Mf,LH8[puhƣR#+Dc0 ؐ1i%ن~/ghHS`d4K= 0Pc@hDssoSGrࡥp#3Ärphfďr\dܮ6r/ROH#NE3 T1ck~E,Jkа[WeDdK" XX#.GJ#+Pp#;-Nc  .Iۭ#+oQuyيxq= [n)ert³%GQe ~ŝkx'.SSmwF.IR7ɸ5]!Kn.,4>4}dHj*sQy?t1d0'g9+f!V?>wU@4sR'P aˆiOr[u(WNR#74$N-ƕ!Z.tnlݮc|m~#&:@yDɕi"1E#.Dd ~~r* q}Ol7TdU=أ>{p#.yhDPيUdyȪ'}vvzv|rieGY`IZ·% ͨG}~Mt5c%-Zd\ۦ[rtM"4YadvwTD@Y"@a4ۚ癵dITՇyپ;GOv3MYOo*zx#& %#&&G"ߊ¸{ >M~(,=ϗx9ᆑBf2PA`,gliւͪ )i瀰Tzr }៿x3s0u ?I*ҬQؽ/8ܔ_9B/r[CB$sWfR#.ep2a[C =%: @]_pzFcn6;75s::7>_\L7of<_~mkd F0OS|tpqrB;$ yv#+zF>uNc@L%M#+WQ*eR,1#};}~Lj8+YURqqVI[r؏({#&Az|(|{e#&NtP)w7MBv0yQᇹ;o HG"9?9QQlF{;ZmId& 3eK3FzvݨY5RhT ITKg_뷏ۯ7 nzˇ?,)|.J<>oh"II)R Wt/bkӍ}ܿC~X(DjrxO}Ov4ee%0##+"$,Dj)"s–~)4J:3#'$!B-A[Wz6صV"]TUS!_رP(ډ2i#+ݝ($*Rh!0VJ@-sg#+N=(>Do=~߾.E}+2Z^q2c.Q4ǜ?]> >R5|#&#+Iӟ8^0*fx~9*E,{l\Aȃ^޵pX.q_.'mϿEGΛr5m2#+y~8)]D#+m],9;t7WFp+P8=_-$?{`uz3xҗbUУMopÖp iwׅ!U`1"to"GGG?1 ?ώc>K!?̦=e>?AfwJe}#+zëq.#+˂dF׮zyz'f8#oВS%.IO+ۡ]RSb,}OM{%6HKL8b<[(nlfz׾nd>m6> qA:rNXsIU[_GٷLn`,-9[5v˺ZR;'DG7؃}f]w\(yļxFM4F5/b;ԋ3?kk_jY@rzxDPXck|G12_E:=wb]8}A6 F~G|Nɇ6#=qNMc;"0~(mEW]}:_-a%ob%}7dc0?o wiGo_i@ehƘ}2punC彾!#>$m#.(TH~Z>+|?ΌEͬv'{,~:8BKEݘv45_ |8}~ph>^8(vfĶ_|Ϟß͜>N0ZY+g|xINpTX||~VFpK":G0O?iߣend)~wYg*= f34<m_?)FFUŰG<^H2(nhPa!\#+!|b@#.P( 1^s?ZjyF#+oo53EͯvݏzDv_R}:h]ZWH]z9~APh<]-w ??o=#yx.[Sl&{w?f@_4c>[>5U~oջzo87 T{Vqҟ(څ=ZDq?g}jw#&UhI_Slg!PȉۈMDH"n#+Ǚvy;׈o?OHXn.-G3)ɒG;i(O0"y_!(N+~4hWU/4uFB<&gl7-'kml6C'в?\?-Ff\ڭ Y`#ŸQj 4#+*GGjQR7l@Fhs UiAY,gwCWw)2'0L0ZGb`SX ƣ#+2J`B#+YCCt!IՊ"ca>j0XIFOaFf#&fUI1KB{1Z8du߶["?fs΂PP}??%)% f䖆jJ-zBðQQ"/S?E@ӐQM H@bi71lXTQ&FCV6ƛfJPU(Z,g:?>q;eo_N36YXNs[7宺rW%[>߳ќ X׿x)+nv}~̤ lw~I\e[*k+=owT8XQSADzDT}m_^jAW\#&pjm8 m:|YG^pxYu.sWI`aha^#.ԷS?ɽF.n:M>MYK &Ey_XR>ΐh(h4R-DP9+:䧝Z!y;[Ua M\ H{ ~qa"k3@z)z?@2_;eԊ#.#.[7֫=cyozt7xLюRdF;5X^/D"l:<=t޼g&SM?PP9#\S1#_4Ԏ0f6T>qM4\˥AU$̪4#e $#yP9r} "o7@R%aϵ95I P#.EAqx>5ۨ,fɝg}d>YnK`G6Φ*IHK#.ק^0둀wn|#`WTVS-ZʨmJ8HKحOD::(%##[g/cY#.1~4:ˢ0H#6"e_+48b0D8H\ݺoE#h\ ũEs,aIfk*0d+Pdb$`pfaQ(EU=Gz"15"FcVգyaa6w69RFC4FQw2="6nV lrYbTVmӬ!ڴ]TJ5j&FUD!"$İIh-mcQzD[ѥm]#. Gjneɶ*=SFv>{뾛ώ#+zeuҁDoNМ#x̐8$tAb'Aݻp;O~5!pPL41i 0~BBGG4t79nP(;X'}᧛W Fgp{<#lQU?M*N0_;1ŘH^4D>,Y%ө Hȑ#u0UV:EA1ѢO^3[P6=&ӡC;B+z5#+%KD FcaBmnsjUZ*Aی{B|R)6lp9+l!5og]}qsrcN"xI<^.ߣEJ} >sgA"v KSKA12 -s)uw_3t:1L$>X#; kyB`\4=G|گ97x[ie4POvcl :L,s!!k¨:#qdؔ%]ƛonڍ29A,ǡ׋ ~#&K $ǓqgEw\5]zfcx}ۓrEJRcmV0xHoZGp.gh#i^n/|ƹ:4R#w,"4uMXAO}`PwU3{p26?سVbǴś'wyDe6Tp0;\ەmp١y#.63 #.|_am.6y:#lf=\?#.-9B,lڏ)3G4oԐ(4BLL{nز靯;ck[!rkRXۇ:L`wAjU4B*Nn'ut oȶ!rʍ(|6sJ#Pkq"Gglbkm;밣m:+&[TnqQ6]1qh5#+k[r+V;B'F)j9*e#+-\L1ftf,1+ #Щf9$l+].aZu `NM I4 ils}ncV5(|>Jʍw'&n1^uY&f+#u`7ȵqтRXkޛk .8jgWfy4]Ϳ-CyRcZT7"BQS3tү mloI!&3m&.Xw}^m̈́4ΛI3_e\ίCwd'25 Т7xڶ)JqK:2`; rY/g牆$ߗ'V/M9llqz uĵ#& mP0^p#+8N)>D#&z>#X8=|=rظ>\>] 2倹iߩSKē,My`ɟ@H\.3sø3Wc9M"cAY)2LDv#&Vf(x;?FVwjrR!S&'DG\'caO^pXs$]O'Vvd)w_a'~Ls¥h-#n-Xҡkйrg>J'CeuQ2A"H9b2I.97s}Ӽ#.\|PdɅR,0ɣ>rnݩnr^݊1|ǑCMM< Ԥk>5ɲt[0\5^Ӹ~V>"M f$GNsc5qL,/mTqr9{kw]}HC\r޳GrdKI‚H&<(((l/=aώjBBP/`Dqϗ׵t磚M,nfʙ`S{  h]QZg9sd#?/y#-/q/C_ kڛC ;pONܴh\%B[iӮO_Wǁxqxay0~)+SQ!Z^ehb!Juiڔ*t+}b^j~8y$*GV7ֲޙфm9[C3k9MNQpNH>D?R1ȱf\l.uȾJl,UؗЦwNIL=Ze[x܆mx[]ж#xq[QxI[}UOawf'DN#+-\҄<3z)aMQ|ѱݖF9#LߊZ66#.esP`'տA\e#$\Ƨ^Q1Enr[| KSkuEϓ k;Z/&FwSq[7N0la fBŚ`Ђ oQ@J(^MY`͊'m{W3y/YT ;?󻜥߅&o9շ1#s.-EDOm(0Π9dd,mtӷ7ͱgۘ+K8쪌G<)H戧)|9Pڌf| gn'jVرm%ݍ؋!b⢢8{̒K<͊;dM,m-!Og)wm0"TAܒp[%[nmozPk#Cc8*DDOyMpC{y (IV/냧ZE4hJ`^cPlR)9Etvwq d־[<3uSrc/+F!}۫`6 4KSX#HĹAjlLޞ?_~N8jIf.y [RVm#+pYVvK,nJ\/]V#.qWݦd9:l 8˜cdqMŹ5K'p"箜ȣs;9mFK"8(ͫ4rKg]PgQI ,:;R/*-ϏLtrM0z@_Q8{چ-. ًoot*DLL󪍼lm/^WHʎT\I^X۔3>t`ڳOFeat $ƾkib.W:#+>xӑD9yR6ZViT#.3Xq~82qnABZde'/"vSvغ1dIa(OQ9~T$#.]`{#.[2f6ĕ.׬qKBSD[NX#fa13K'gG{6]#.xz~M~^$L47e"خJрTXV3yM#.F7>˞a{m=tYg囋/]{(BZ (s'mxȌVf'Dv߽rl7GmM<2ڣJűUA/#/=/:-^>\6x6@N8M0ժ"I,vdcZ%U^7NL#*RaUo"E"!s!$|iPmmZk%[v-\)Et:F*hJW"t6b,M˰d 1;\,:^cȺfP#m#+S~365 L=Ǒ6]>^g-9AۘrlkAMQC=`lرkzgJ7#&ppfKYc`6LNeX|`v#ט;\ljTy̙91&{yqc_ pv)xQau3pN͍t>+yE`*0ONij 直JTI*xzԢjs8RZ\z1VUQ@o;S#+̆6O#.w\?ji6((tvB'샔v!Ƌ5R҂*PZ\OwCrK19y]$hӠVޮٖaUH$L#84aK%tXg %\U{GC-9D:"-pbC-,psx0l5fKeɶy #4iMF#1l_k橸]:-H$Us׀ģ"-]l1<ƺf|>oc{!L"Wa”9m7CK&b@#`N`[™ KGRz~ZGW~qr䚿#+T sY7nF(o-ѸFqkZ9d*tۿ5􃒞[r|o)#XW>z^x Uʃ0nNAwIg]7px7+w.Y/3Y ^3)#+u۹xj.׃#+.|WqO6)*%6iʟd C[\M*=Z WxKWcUb-[ 3=<66M1@{ݼf'kˊ=jA9W (Cȧӄ6@N+k SR%g*8:9b6d2EŁ%ऱn]+xc܁jb;5-/k#-z#+nND E-Ke # $+΄;;ipV=pM#C8034~/ή*ypIs>϶Ķ7{g2MJ?p%BQRB+׼g7d@9F+T 'Fjw/8o1nIɩ>8 M ~Cq_0יV?__N_>Rsr(#&`@)(Esl}|´pv&532@#.'Q_atqٯ#.W:[ZO+lJE6ɱ6Wטx18-#. }c7lp/o^ܚ8Itv>Ӈi̓E2(E`k! }"jxyөg#tWųe'2>I@ē)e /8*#&ޠ>F({ﰑ\!ܜ 0b #.:W#&HD@T)kqY~(+~d@6i&@:'w=rYG_;u_lC%.J1#.#.z9^ 3&3'cb1јU"`lIwt6.֐3\Slad"_==$>8Ɂđ?GTԽM ,OL#+rt,;A);Z+-4k_ԿOgU,#\8EQ/?c;P9=F&^.`ꈇ2P7hNT{F{ Ж;#&"!F#.)C_4:!4S6mP*#& yA J`f e+YĹF{|t:fe n]I0!arMh8%#&c"YҎ7`E@>Q `O-] ]v#&u7t،ğhiaE_0l|em.#&Ǭ] #h8XD\Kؑ ^xҜqDIuQljS+ +*z!H7ݐ3Mn1a/34k#.ɶ;GP46_#.TxR~kg쑝i#&!ޖFLr#&L7ĵB*@!&`(Mn83g9$=`g=Qg¹uC[3$˙@k$[sy!0#&*ﲡnS݆,7"9axhU+w9;x:\X$ eRfRUmcud(g:#+#iuaQ5l\UcRE>Ԩ$y p}Xu/V2<]wdaQ#Uq?r p`u8K<װ('E;Z w`0taǁ#+A*:HyfY6ĨUkcvvv׿s\KI@1 I{ݽv0аoۋ( #.&[n"WT[>mI /Tݑ)OྊY J|+몛$:Tφ|VY㶘-N6x3.TNQSk#+:.K#+&xťJ1߱}s$bnwu҂Vἥ_Fm?2_P|Yvo?蝻/1߼q"c5#+)[8)FL"c%IF;~*4QWlӕt8*lҋItt)pkZ{p8_%#.MS urې$ȍ;;/RRS@dQ#."B]KP%1# +[CB1ןUS?#+Z^{r!.VC1iJݻ&@mSLJ#&^,P'!Uy3$208ˁ׸~a{Vt A?#+[Uyᙀ?_JD׆0 ޶= W׳Bk\Kp#.RєʤAP*ᵞ(B_e H"U&9Fg߿S7!b|kDMzUM0}9sker'PFTӏwzf#e*a}c{u|k2z҈ 8~r݀>h;].8*Z0VAE> J!)t9<=O9'+t**#.MEXwydKX+DOyk0#.;?3#՞MXsB5=,D,p0$\؂awvpD@C|Kae(a@E9 EVv(0sY4-@J _D.`MM>pV SQIc#.H%# D`C@T!նl!FɢQv!dX#ÂD#.Eģ%HBl|tD3#.$O=E,Nj HXRrg*yd&5p?GyՋJ\81!g̀Co^!Bު>>g-GhBWz}wβJ[3MP}{-/2GG"~R&(`;"HwE&hn%}D>n 4N[b;'׽qWE;HC>uK8.jGՈ)Ђ4Vc#$zjʆњU=OqTd 0;6/\߮^`'N룸[)8gеcW5EﱖiaQX1ɡ{֕Ȅ1#&OfVx7;T ŚK"*Y3%1HEFieP^8{ #+huc`vD4̽[m!/|@`HgHE{K"Zi6QSxݚ#+MDIHS&&wc:nf! q6De2vh.g'A. H}ZЃ;A@VMg!`뭤@u*QQQFE#+uz/( T#&Tٽk@f`CnɒgC >Y$y]2XubCeM*y{ Xg#qNGȜP;ءʈ)KnkdcV:ʲZث\mjUڽ/:u*Rh^E#"RREKg:O#.Jj^ :^A#+G4CGXgb'2|p@6:$X}ɼ[" Ҿ3q-OV>7SAARDY0@:3['DS@ɴn,G`Ϡk"bw&r#+Vأj3BI5_2툌мhyɹkA>lPDIS0^k~N׸[֯{6Rb66wZ:och+_2R$*i`M9MVer ਋HUV;0 jJ2Y,Co(" 3*gczu۾ג1J2U2`aN{]5t?_[`k;vnf5C^4,HTa ?N9miϐm#&M;@4{6R<#&`rxҦbHo+4QRS"-@t:d.J@yJD\K#&Ǫ{^ODdZ`.L&o*Hٛ #.3mpu8&Q4Ux܂BOAĂ1FyJp껺RK]#+e+,Na)s+vd5=,C{F{1{F)}jq`P3hOSD!&Ec2. l1LFk#U@Tx29GM m%3g`}〭#+Vٍ=RI0#쟣cOcPcG ԘTdD6d$S[WO6#&ĢZjT E3kۻTu7ZƝvsWN N4QUjal 5߉A&FOijS0#+rf;l#&ݳ]\H܎H;?^4nX}!D.ʩb-b lhÇwovwrA9GËel씇6Qrl(AH a&%/Nyɕ X4Qu#+촖s dq= q#.PP`Ȣ *I t%^0\~m;C֎Vn{+uoON.{5m-o}単/JPhf|冖A"LL|#&>-ITCfo ̢JAP@)HP86ӽxﵟuֺ'4+A?z}9llbs #RM*Zh}ݔ1!%,gRpaw_0{u6LLw=]۞7Umb'*8T#.C!K'cƙqB2} 8$ZoVu%rbf(H9QM Z(EJ tɥ^f=qǑRJb)UF[(8?Uc@7N=@V!y׏kݴCCq'vInD5u4##+С-1g^*58;{#+]GJb<01u9QY< TGYBY%:s,E U-#(-'v42kxjLdK;n}'Bԇ<NB*g@p۰0 L50uMsGxnG'JUU;AJ6{:TECQz7t#+][\yoqle *P!H*2AHn޿=W|pop)--,?gO!Z#.|B7ҏAuts vpK7AW]!a_D _RVKYbY3~3+UVՕI:~XT0b/ل^k@+mؽp$@C*/~:&eB'_#S!c9O# (2i ]:k4oHf#(:q8ew#& J=`$`&q #+|~񿋪?ܵnbM $L3),(KОLAF<=^~SC=%T|q_t$#+$XȔ8rvÝVSu8P@N6؝D̋٧cSc色ڛb3ƥ (O:sto&u שd98:NΡw6ogQ3~}IPOEox>oC?̣UtU`wWL X,Y#&c <_>p|?okc9uY-og8'gW*"!\} r&0$IYcy/?.{kki&5nx@W4wq>6sz+(Շ!GN|ϥ %syQw!sEz#Ը#,-O`j19 ӍVkc#&#.}^vDW#=Fѱ y:ǗJ7i]/0ư:M3:oU+Yӳncby#+z5վ#&BHR=E#&'݉н0Xe5VcCJK(\#+H-x.n:nOL#&5SK 4+[6X?({=Tڨ.Uʌi_;!7FC;-!3gftᅧOXbU a#+&;gS>Ҿ+{ikVVZi%(}^C@SHAtgfM"4kmerf+2_W?wD*}}yFE߻V^~򯒨~~ߖ@gxu9 rE:dz`}|; WqXF#&*渪׸ U傷f؂89==A>@AJXB̰* ۏM2K+ܥtčgjk# qyCgrѤa }#.6XmtCAc^gf.,$9o<-NirJ^=wqA]l~S#.yu,Ϥ睴Vrr,rbw|CY(58qG^zg]nuOPc3N=| d9`g sI#&ّnPBQcKe7}wU㚗kiTxXz塭\0-7#&0MӀu@_vԪ #.2f J#i1~TRHPGCxmOTSjԤtƭS9Q>sa͝8ޝ~飅44)D_i؋]iv֩;;i-b)i|Q:p}b}uʩ~7>%aU4?;q(Rc~ə|sOelQog:S8P#.#.#{=S.xt%sէ#.1_l#+OWU\["l)hxs?ƃü$?Ï18ʮDraS#.9Q3yz[唵t|Qh~EMIڱq8\{S-v|&J @\Z&=QX氊db4opdW^ D]ѱ҆T3!w#. H9i?s$vucY,ssz΁ufܼrw߫ă2RVͩ_*n>ݸ"`b7tq~#&9_kwH?j%BX/Hvxd}ԹbTw(,Օwtrm09( },H3ޢ}9^=p}g95:ּ̀C}QA:E"( #.W- Fi8a#& L#. wxu` Er>"?Ϻ/?g=OCof 󏹶#Dohp KcIky`PsR+s8t%ڗ,m{.|=! S IL fDΩm&#.W^T*>ILŭ<"p"#G7,A'u6W#&U{p`7L\"8xv0P\Q:N?HAf4p,Kc\6Ì19Oպ~ig˭Ny ÒSMJiRTZ(W8X>#.OXBD;^>#5KM.25gu&^o1wijs;Agq~F=Tt.#ާuz36rtdh #&*к/G&d_&{av~Od;7I>,=y#.9!؏: rYȉfhZOb)0 Tt^En(e(%c*#̋ 4Վܤ}SX*akC(- #&l .#+z\Z{1y@#&U* 9P EۻId}i!OgP5}X8Q#. dguX]p4j#+q&yB/ByrY'G5 ^5 1ў6kWOvYPh箽׽CyQ{x#+w0LM^ 4 zFtp9߉HR~ (_gg~h֔`KOG?AlD<~t;)15[PX eȍV3O˞_Qm!ixQ~AťGSyWhszח/ {$~g6+o>4R@cH :G(y9De:S#+qwұh0"{-vımN5<$U6V_?g\tzEs#+`}{t?A:#&34l/"C.% )a}~G;ཡ| ݟWf]Q03[FĊ1DZZK ֧0#&2sDn`: ]j\ M`txN5\~h#$}+v7'gqNU{ pԨ g()dxsq#.Pt1(HHilm-z5]EKLL˖Ĩ(u#&ԤO*#3\F|vs(v$r#&N&$ᢁJm::' :O'(vۄ|^2 > dRkЪkS aYVWN$K ܄nGPiUwn&Y\MvRw=Sq\%OprA`<$qD#.PHT#+#.r*B.SfmA! *b-3c %㊀AbR;z[wGShm(sxuT4SW=$=kg׸YϗAO!|"1|AYJ̐Bi:#]4 ~5E@"Ȣ)QyjA M*O]=*,ˇssT#.^B֩7szHAfoXP]5?c ,)-MWx'&~1ӹWu~\D`Lyf#,o:SW'v[WfNk]]!c+|]3R|ש%a0@~2~sms):6Es*T!LE.lhWN01RHctx],e h&qe#&sHm֠ѝw8Y›=!heйB9A[sOunmldx+zfxfMeڻ[kuZ7s$ aMKPN'zH%N:>3M.7.3 pK-]@jX(vbhO=wՂ-o9W)ںV{qz&o%\er;he85⹽C7SpHSpٞ)gR( 1*0չ!MJ$wiX¢I.{?2ϖC?nЕo>Hu'l>._-z4ﵾb":8ؼ}Ӷ\9*gwKܤW(B-Br`{slc'P91kMEFzO(hgG))3HMbLQ:QA%9H30vx5j^$2}u)-Gx唄0 4-bm`N+bvV;Q/vn[iH\{UR&nF,8KEQHJׇ;% {/x=6b~IA؃}t}h8MpwmOh"Y#V,zc0#.S\##&Y)C/"3-jmk_L3ߞ%}#.G eۆ]zΊh›n;ut,W!zgǵi 8 ʿ0t<,#+Vxwϗڸ:1A^uD}[ 9PE[tH!5zU#.:Z ptL\DLmCFتs7 ~x0x`kEm͗d#.'xչw7#&-a巨!!Ȏ؍kd,5)n9h3V(k/"Ѡίۜfy-"ЇTqu=d+$ks%:w҄MG\$ _mQ:Jhmp:tps#&r[H#.Aw: Oizsc.x*sWi5JI@oT/Lb[)>XlL-uDo3r"r ;bzUKl4 A.ۀQmcQinY"18ؔ+n52xllO]WQ5#./ۮ~a׭p:@&: b%#.A`7`'_Np".@0ăFp#.SY\6#&^D8p~3QT[| h#+ 7???[N^-6d[=eEg)#+^-T#+%5,YppaVA\[_Y>35/$^{:shР$O>XQ+bA$(p#&(tA0Dtݔ(qN;SDԿƾ|}hw p;5#+#&|!n`hvq>)vlxϏ>9vyb2 7񭮖x3PX@?a L#.28~яs;9>#.[CpkU:ʥJT8#+x~χ뙒b?Bkdg#+4QRFG]K v6}a#]`ؔXpE",#&B 0z gx챼vne릥@ G!1֌/qTA2CYؗ :\ٴw3xuB:=zS>Jdd(I@`K]U!!S |=N`ny{Ca?:?j'ZU, .LH.-MF@6X\P5HA:IjH?Ɋ .Srsw[ShkqNxj;έ|_~l=o q~ 惋mD:B5kW^#+mPʀ:p`[/ Y=[9q RbU#.. }F/-$?ͷG2a,3O#&Ce~Pg=sv-YR8~ 57y#&jnV Dqؘ4E؀ah%BդiNxd :cMV6.IP<֝g08.cnM@efkZѵF6Z?oqVȨ7RY$Z7>7=v;֔ $_L0s8#VDu*Ƹ-aXFuyZcXK<j}uzgI?;޲GT%X{wR4U{šjelG]L'e6˯Xy~]4}3)d}k~""1,NRQ䴃$'!U!m#&-G;J*]xu)LSٞET]O~0cif7(om@831n%ҒI UX˳b=xax{#+M][zw<B2 m:`1sF`K6"KjqClO`!_I/#&?oxϑ$P/`0|Hzb>1뺫l"}_!~#+4ȯ>6S`dqC7K.RZ@#.Xb P .z:_}JT󊼋&Bx .t)̂@RG#.hLddhMv$+0#&j!Hs*Y:BNpSxZ3hwI#+g^IF@5HȇWO}}C.[~8 }0*I?Nk#.O{F]=M钓 $61l\K#+_-FvKKF2WYYY2'6C }Y$ #+㬳+CEH$LF&*e֦Yk5 #u u:00(E,nʸ"} h0vG âr%xSaA#&d$|Nݙ]}'=YvِLGR!im 4}E'BYf` RE&&I3B[\$M #.'FRSYۢe|eQ>y.JV9I=meYO~"KMz'Y#m)ٵ71I$I2E~znԦF% *ggi`}m}&:ϸ#+]qJ#.Ҍ' ?[K_h6?joy^[~ҩ*Ձ`sF[j#+U٩,^(YΕ74ނvD`Iw1gbPѸD O2!#+`L8M}#&(h ?Qp߂#@#&kwȷہ !V*Ou}>/A-zRϢ*%K~=}[~i=9>XC4׃"! 0w#[cq?A|ꜢcgޟqCwGS#WGpRC)@ϥv; hI+@;;JݳzB8[ $Rd3&_9;bP K36Z>@sOuAOC_,|G(I>>5{k#+#. KF>n{xy|#.>U_>oBV $:+CNd-=Q95~*4F+d=cs:5R'~bwW܎\k=u%`8& zr m{Jtc$=#Cz9p`829rqr1((`I !*ȅDF)(h&!~2s$qzp`'BS/Rq֡CJOg@1XCu;)NQȝwM@mr`%~wDԽ#&^QY>LV, VI#&`H:I"/#+ztJv4S#PQXJ#.d֍0b?7-7ڜ-kq#+!m^*)p>CThYEL#7m}5WZʄn2iEkvU(s_o|-zT?! Mp*3&jB!kQ,H\`t38v֤(ik#&ăAR:rHŠC@=Tr#Dr/W/8#&׭H*ޚ`$"=`P;=^=#.3huԏ;&\ĥE$!i>|1z{P=|<%Ɣ !WABFNaHbzWE/OMѳCqGf#. _€#+K!?G|3<@ŔQP|JUZ*1c8Pd'0*>Pd_xzӵA!]ݯLzi!qp0>vFEqsx]85G#&ܷ+[1 :oqb`f㊝ճPAސ6qFIxZd5S6X<0s9`1N#&]DQdNfH,{SoSw|>^EYߊ q#&(BӁqf˔\&:1`|U+$^Dyϴ|*Ȝ V,% @lW7i&f#G3i-1׮Kn9kb8eF2cU@*U'&*ҝ'C`-};q*9cvV]/w l0;MđWq'ų;p),MbQRduWǜ8::Ed֗ }- oP[8l#&xzm|m2GMa9*Tgzr77F$#yDa#& q7^ہC:!gvb˸ UUDg p9=γDaaA(Gq0ϳA}(ye]1o;/}`P>iwJNza+8$gq <.e(ޟW_ZrԪPMA1_ŬI<-ɖ} _7tçt|drSSI嵂1kQG}ySLE;:{83>P*Z#.iQʞQ-q")rH#& $ Kд7a`⁸fH#.0#&l8f$Ch1f$, UJoqW9#&X8,[HȏPT^ؼSǵ1 Ph+$l4/ͷc'uQq/C #&UE&Puj($![wf oy!urw5ZJ!؈3Ih}~!OT#yBֆ5k)`uͶl؁#&PXV4Q_?\=rwYz< |[0RZz,hDcAd_Y N>pρ@FR=GypLAπ?:9w*l`RHW? HuT<bHڇmITsɫp @79NPGYx`}B#&L7~#&JĀ#&Lu@ʸ|@LRa!#1/8UfSY*y #&?ߧa8RJӕ\xɰTP|\i0&T,P@X$XUa@{W_C]"XjqB-3πˬm$#b B$e~R#+o{OCyt}J?}+(FcH({NDLhd˦eyJwmayx*aKd>"#.+5t&cNHB:xjai*f)\a+*ymOYFg#+!S[1׈0~Pp@Uk&e(Yg3]]MKz#+d)$t[`;.n@?4b6kH`sx@`T?7~fl8=_!az'#S*0BA_Kԡ(I:*o>sN}N\׳ 2C*#+#.KEZUc ִRsA*-p Q_7r,jr4 vv\7|oַc%i{وb2#.-?DNy!heݢHX8Op>˸a1#&18F*5@')3-@$0ՄWX|#..zԡ-;PHN_(K]j?j 8#.`l҃MDixe\̒ك)|Hg5Obh22myl #_ްc"6nIf-gC?+;a1W#.aDk{"·\`a#+覗&6_uGsDž,2r{YqToe塋ko^'y=<)1V6D=41 ;'s#.&*;!y<9@ />9?ޣ&=]%!4vz0?!7@g}Vz#w_Fi~_#&hGY7ZBCV2hM#jٿ8q{ȠQ6P d=#+R(BlM,ϡæPbw,R?PWkT?1 =!dyE7OxD7򐣣$'r;Z9 `l#+`B#&s`$Jt,mi=Y,uUꛫ{v5n3X' d3X2؂݊6@㖕LoZh>e84j^-ʎ4ALg5kf} :)0L]C/dVE\ݱ#&+#E4.W! khl+xɳ|^*_(0{fR(8(bH,d}>:)7 Cp7swm':B&Y̼t\ݽM)*QhPڂHD'5I^en]j%Qˆ#+=VOmТ{E%t0ߣc3:&LP~O}l9pGAݝ0wCY!hjW?f"?4 hp|d "Gc}nި:Ȼ TmQ>~IW>Mr7spFzMJvKاg;8"WXwy$$ߑ hLq-9mbxۣKTd@/(( %7F/)Sy{Sߎgd} #.[ިȋ.vm|4mso^!Q{#.f{ XLy 8R";6C9*Vw,I횖{h}Ikdpud^1q<n2fC M6E@І6 cyz6vKAfBU@Tp`/(\BYǔLY?uy˸@x:L ==qמHE@*ԈSzj+^JyR#w=Ga#%R,#krauY#˜F z:&*`صI#+<5402FB>"*~||DZ#+(XȀHȧɏ<~?˫?!HW)[۷ 0TNwgߦfg_gN9ő&PD-R~_u??y?4ӆ%ꪬ?zXS#&Lٸ9ۜ H:˘v?M;3#..n(43?[<ǁMQ[qŃ[&unWx>t3~bZ;^CX&q[Л1#. #&Μl#&|Aߊҍ!T7dJh)IA_@d&@\ժQ)Pvd7mkl44m~,b0M2̢=t*<P9`O^l㦄--СxͰФ4ؒ\\MPsnj!UŒ:ίσp p3h5#&a0&b1"J5ih8>G3hһ鱻88 FeqWilj^*$#+j$J6<ݤt2<#K!'wv#.uN^nOCUMlw\e$lDu@"lAApieTA @h9C$@F{WvݛnyB#&sDAHzqpM#&0Zi&p#gN[ia=z+m6~WǬ8^H-ir,f?Y#+N·!0m"d$qCֽb!O"JxdG!bJcl4o3Oe%;1&@d2LKAJIs%0a4D*6=I@1<|u`x~Uu} 9J`6&vv q8BZ΢NbW`#s+9[fl@9#+gdڟ~zXUZ0TuBl2ɉ Qd.^fyΧkȤλ(u]v{<V/9᳭1əxOS! usvɄzI幯Mx4v};gi;vp۹BEu /9)z35C dhB4[-۳`lI@[1#+S8.}F 6G]3Pxp rr60Cw%C5vt2Cs%)!ߧ~{vX-E%,U$]=;7j̰SފQEAyxO#+6cF3H9}B}F#+ #.5Z,A" #+!.N=0!_H@&;]n7 Z)5ƈM=X8#+3cD8:ș퇡$MfǜANX0xV+xca ,A43c#+(=RCwo TM'~Zf:Ż{;jm&EWdsL#.4HquGcG}! iBY:B%J~FehuUvMXayV6T mdnXYgP4NϗpX( TPXTQ/ΚL=uڨ+"-R5(3:IlK#WWN$|na3ҪU45NI1PQ,F IPXITTUVmTT7ikR-Ev[U #"s3#.ps7eZ=8τ/#+sѲzw!~#F͇8CZ9XidBaj[lLms#+! #;}Sg{Z&ߪ,B@"bNlslyeˑe1>LF2ihM#.42Mp&L̜5WH~;CoBpL VgъP?ۈra֚(W&Rq$Hcas9+gL8#.^#+x%h"У #&n~.*&ͩ&wOcZҏь$g\Weӻ{ƚ p4ف %!߬)COq8]=i(" ?ZRfl!FR?j}0Zs0|D 2U)uoݦ,  @AyЀ_L i!hlcMgҗ#9 ߭Wps{!!%-z+Q`~5?HjR#+DQH <)7xoc\rB:j7HtQU&A@feQl@&H3B@!#r`DJA6nf  Cd ##&> >\/ G9'9$eՂ!X$Nݾ6˵zVBFKXsk(0.$nd"-oLhc#:͛_㘬;+ET<1H =&GPK"?U>I)L<&zk7 :WVםw캀mˏa(d88 `@tUB#&A!)#&"v@; ؈ Tkl[[_3mF#.o0C#&OGnVd;e(ijĪ bu XSHh "6,,7PPb`xJbǭ7{75ؔnIyuko7Lsd:u^r|mVV*l@(I~#&=.<R~'`{ Of#Is 22QG״4=1c.ʲ${|p@H)]L@}j1P$MfZ&_L~<ָ;F[!V浍?e4 geCE==r݀ %*c'/KGc80!lyW8&̆MudAd4{iSsM,).6˂AĆ=P5=<1Xz-kfvn)qC8}Fu'~1?0Xmj$]]XzN\@$!j=?8js@Q{ÿq۟ @~ޘpci\O&Nyy.9`UgİTQ¢UMJ>+zBUJ);:Art<(uA/g)@$PW! ,_5NH1bRHKG| ƑrK%IY~K$mg-gfHꊸxul owd!AK#)Qhx)P$$0[lhJ#fi&$bڱ4%%k#*4ٙPE #. #.zM&-ʓ8k#+;d@V(#&@8+}~-ƚh-!&߀#&dAOOG?XyAQYg/b*aڴ@@{1!BUCl9c&Nm(^(k G_՞wQO6Gh1ai'CA x<Lb_#.S U'3y`$(E -1DPwW ;vOa ~"T4I!-A%O'%8Gɫ괲:7U%v7ՁXX69xG3 E"^k @1@ɓ|ڿ3)S[`̛x=d1"w;i YY_A`e+#%KM_]#+)kc72)滛㖅`蘬7VvM^#.#&h#t΍qլGֺ}u˒8u՘Y{HۭT&# Ie;o}Bʺ<_fFW()мǮ2ܹc=p&-t#lAÐ{#.w;60nljm>ص;Qcn6#_{>疇BB?3NBob#٩Gs`KbsaӞ#&](!5oZ''nTBq€4:qVϬEJLU٫۫NVs!Mg̯n}{|\2'קG_tM;HEm -NHkgf8kӎch}\-}'Q~06B2`g5\Nzϗ'-n;ulK w6%9p vk FNƳ. ^@8iR:$];#+n#+˪i>Ә_CȡP79)בKDCgN"g3R)Y1٦eSuB{kv=G(pDA 0LzI=?;ӷN۴LuztG]:a ~ƶȢXZ FUAD^Uzˠ,^0yC9P+CI:욚~k"N(D;%OЎ|LyJVlp&Y?o^ioյyQ !Nn-jڠh@yʱ0K`jHns43d\I]MFښ[]/-P+#0+#.C-%4u۸\;uK(#&BX`m #+Z3 VelDSppSgu=#+oof(|RE"#.WK&m2'#&\PDHA6\ϵNZ@7٘LqE2LYX8>P6xgjӺݮ#"ӑBU&$DhZT"XRIP$$0@'@KMĶB`%QR#&(A`xbP`M,[hF'5o$(u_7C1˛/Ɂ{qCf}#&GWq5nLM,m&mUUO0zI+u/C<[;'c-=8qu#+݂Pnj4|QYd2W?v#&L,8fHZ?}fajgS$.vx|ޟ~PlHTt#+8fy#&..%E#.]NI6b($X=h,yC.,}_3bI ԚJZQ8L}D>(nNz tkn/|+tjن!i$NYK' ۃh#.fxԚJ)jcdOH {ʪvQxհIa:6tCUTS#&)7nAA /.!!hl5V6b_4lXX)sC n@d#+sV r ( HWóLHI\Ȱ$#&#.AЬ hm) `BFW#+#+0dL0PqgyűvaL7,d-%PgڷR4e6Veث(aKK =6[<.s/x(D#~iȻ7a ,_#.^Y6գ6=OofPNή|b3hE"=] }fdHӓ-#+{juD*Hk|.\1,`X#+<'PwCCVud}szĄjC( vq"`P*PCz{OH =NE\A-rd9'|=T#&hS7*UUzK"riqJ\Tb"U`bzeKLsשs*-DxD s/\y6u9כ۸/8B\ q#&2Q.t1'?]& qi(D˙:CJN9 M~[SkHAb#:4_hFDiǸj(vז ώ xUbiUNd022 %qHMI\uioi78p6k(ό`e%٠cɴf1W"JxŘxar@w)=zDRF:,nlC#.ak+1 4e#k FHB*4ٳF+hT(:P{p`utS[k4(Zj#.2Z!FN'1 Mc5!=15즣lme" iwyAєÆT=Ƙ,FJXºu#&ƭ$5ՏOH{%$/D3fKb&T ^P\aaOmf䀽iQ%d:A0h鍳Ů尐;cjl9Ż:""#+IUT!PH+#.X!JھVM˒rZE#cm'>X4_D$жzU4u(kL)jѹMF#.ta#.I&dl;:bcջ3ird'D2D܂l!2!L HR#+ph2[DnãIvt_,nLU# I^LƭΠst:D܍c8C43:W?#.)$8qÐ"%[$6@r .pH,I.gNg@hXCw:x,6#.dbQr2)Q"hD$EJj#.GH#x#&a4VDz \Qffy㮓tn~?,#+D7_V%!]ІoaKeprccH#+#.plvo?Rz)PlQ,D(Q#+"煠#+&3Ғ`â4!TbMD1I# XDHUߥ {[[(#&cH4hbӰk#.$@ hCLAS#+Gb^j#.㐴?c¨Y{ /NR@Iu `gxG?9&r-ժKxSs/⨌^q2Zv5#RLf\VV-k>NxA"vOb $VUsŷX֢Q֣[W+j#.HPкϖ\NCZcZH{$P`@3#y32g\D&Q$ əLҴ2JRiMQi3P~0 TM5(d(,k0ɭ&,LɉfH#.4"MDFY)PT%ңELFhL)l&%!MAALcJho_u`-Z>#asS]Q!TC8g 2D*KJ|`I-~3jb#+ޒyC#&9S]#&P?cː<半F 8h:$|LLO%d]+Jі0{;uIwU߆% MT0рB^rŔcLd&1Z#.26VJŊ#"2 HU>:u305@|&AߓQMOqMaYbE?="#+ v c|v#&7H `M>iֿrCxepdT'J_#1h3Yq<r B̟ZtO#+#.jQJA($I#&֘pIGlUc-Y/sqV}ǎDDf;*Ï12φrb3y Uwp^%'?r AiC3;?W?7;]T e(im4&7ގX8\M|76[Ũ%e 1mG^c.["^7L,1YCt-4'ѯ shcd" "=OD=2𒕇<:gFF#jv#.gifP[]tQ!OZhc%dd^]$@Mh{~Lqդٻ;q5@Bv UW]v>O@5vcRzҗ&YۯY鵗A9iU,FĠ;DyOFz3M+WR{AX#}0uRu7%a*Jk,wQ$UXa,Rd@<#+{;FD(kǚ+Ă"05AdtVkbo<#+{<:$UsJnm'Ƶ#o+2#+hm5E@SKM8%oS)2̗0ғӥsN24c4FвCѣQEMJ5)ֱ,K,y hw1mkyĭ)J jg|O5Y.N0]7KŅSc#&D'u/}aߋ7fKhzIY*4$^tpxyD!yT[ar6{P#Orghɒ5`VmjAٮē}9.F '1#+pcT 2=hbz;;i3Uj 8|#+pj`|$;tـr3.V:W<:0jF&N&_:Xx?vhF98t`Bkց=,Y?, ai(X \o !v;m&EEKb6&SM` I矙=;f "cc9ybLj-Y5ɜ^W7N#:$΀tmU lB7鶱@๭b#:(.$=JL%j5Sx 8$FgWFգi79[vBzv$cc9vn(}b8-])=7A֙Ս&1u*NDMlɠBe|j[nMlm͝]a6qas;}޲#.qs31\2:Xpr\k(pGSb)'BY쎆mnk-ff3}PsDCϏ58Q=N3.f(#.M,$k˙qIenTϟI1W i#\[eaG5UnQ[ZB9H4q:jn21 O)&PmV\[lf5,yULb0vB%93sKY){e݂\UHkέWUy6$zF{[a;;Qp喪p cVR`Q%>PI]Al|&"P&zH9/S@M@SbML`i44C*7bÒR6x[3JgH4H)(Tӕ>."qݢY^[nrm3Ձ2#+F@Dı{$;ڎq5bj#.r AROݝ7#+QcsJ"Z=$#&4û#.bz)|`lTu'CThB&Is>%zkj$Cw@082uCђta+HEL3 ,pty\)&#+7`kU6d4X^k0Zel5djfe24҂[%3j"3Z&p$BsRm$FZCjl ,WGd-05z9.F'6a CV^)њhՇ4W 48PO*Ubx\ (NbZ-1 4&pL*]L63L˔ͨpCd16Q{eTělZV)m!Yjqd&rp#+yƟq:[!͎ @:4cC#C8#+&';R`V#:N_#+VL_uĿ57#&ІӔ&QOIghd㠠+C:8ֈCQPOj|"ǭfac'%P'f2SI#+Q4.⹌&HR^(e)Er׋WTo5&g&Ԧ!#+G]¦BfkL#+)6ędcl$6m./Xm3oA8TX$GaJ9nfB8?7]2@#..׆uQC(Cb[8J)9 ,ZfH(cc34bln6G̽l]a+*P(6b$cвN|C`#&Dl<89#EƎpUC;MMBc &3Sǫ$.&C19ќd͡ufEZn.&ı#+CFh`dωPBI#PWTv[ 6.E9fDp12iDp9VcmV#&.sӬ`),5ә&B@%4 %eT#đb AP?IMPDT؉qґ#&#_G';(#.H#&+D ~r~@ԉ#&8M)?1""T@TX!f#&ʁuI%H;ٖ{L]?<,OzvʪL>%i?# u,ťkFw-Zmieom4/6c`Crӕ#q:lw H•ɬ3.1r#v[y-8!B@GV7נ EC@RCA# sCuXU#&(iT%%D#<#.@PwRʁ"` 4!;)EڠKarpÂZ\aLP_=n_,Wڤ kCkuݙsuvb%l"!H~C֠$(PY#+o?Ux !pPj(0Q{XQ1.s[q~#+>8yFؓŽ b@ң##&l#.pM(.,x -Fh2!M1XR0\-ibqrqHP0z+tPzXOʆ|)l![Z @QhWY&QDy/$Q0LHlX6mm&A$DܦH|^Zr.{p_CikE/lV n.rl9VW"ɽM2eZR,#+;Zmݛ$ .ƥZQWq٠8M$iLi[xR@eo$)FV;c d+.! r.p`p(q[&&IFcghtXJ 2& YKT"2 `LXѱe2B̴-6 +5ǵ\FܶӭT1,,B)U"B*IVnru?9wcBPkj\*ldMi6r@1ǔX%Lu]tyktMͺvM`+뻊Mk&Zvn̫ɱ![c]hTHJ)lԁԂ-[LI I6kcZjE3]K]+K)iZY5Tij-P`S4m*-JMn-2x+& t` 1#.*&khRJ"P#.!" 6|;{,ziRó 35{MNAߨDuYHHz> g/!Ň~zic`jbŸ@bQpQUN9*Gvw1KE8'-JTDBAjRVe@*2 m}kr%da{A#+ r0 lcjؓip& _ U5l-N]*MAw~ ʨD@B~g;G犀jD񝠫Sڭꗮj6=E(DLoYC-Y&5ݫ\m+Ki6QiM2e2R)e?*#.Z͡mmkT=qF5RPn۱" mm(iMjKXSF5*qUuK{I(նȒD-krKF*j[o<#.lMe¦6[-&vmbH']KTI|pzv"/'OD6TzBC 7 ~ms݋f͵11k%(ݤ"+ĺL:4ac(t_bȠ6hJC #+4$yNg2%{p`ۼćJ y#&T*D#^6j#+pNјER4}kDdXc1"$]zD}}^Fof.zyɁ3l(nؑe?B>eb\)VᲁnM#++"Rg#.UR`U әmd0Jީ"@խUՋR7fGHN b_jU%h "@'GLI3PiUE"@#&#&lj=>[#.X"RFD$ĝ\s^Xu\V*X@/q慡$A,7EvT*5I6M#&GP|9&Ƨj#Y#h˖nG5 GU*LC(6[><XnwP i( BXZ >ݛ2^}_WcMAp.E.#&$A@* GvɤCϪm̓*<HblO4%pw#%c#&donNE<)-%"iyHv].Jf./Cj( xvv~;Q"{β괯:$zN8cG>"vP:$!$D+gJ`(ƋSRI02h?c0TCfk0.m#&vC#.- 2СaؗܫU-*HSkr$FdU^9gw"KLm+sv#hYdȂL[\KuicB}"06#LLtcmVo*4d4I{۹KnHc,q5@kZJ92EMjBSI %1Aa! r# clKmryT\5'Q S!d۵Ljcxb0hbF40 0Ԕ1o8p<#+ݛ ( MaTO?0M |c7!"Hگ[s\,Y-]LeW5o嗮+XlTt,WUQ!JŊ&(7a BQf&ړVcDL@eh#&R=Rr4SD?kkaÜUMp*_#*\R#&݀ D ,e rIcQ-U{@=S  и~NJC7e鎌V$K _lPdqY h/,$UT5At66F;*4\T-'^z .A.Xr,sO/H)QP ,5s#&JMD绉rDMfMtμTp~ܱFY~љ'"ܘ8:243QO2t'Ξj}`qT>?#&o@HwmmBDa[(0%&K4kS[KRlkFF2$2ZY-[6EY%lb*Zmfk2,IkESjf&Vhjckl[I$R,CiGL"l65aB&b.8="ZQSmu95ZmZfm*.^Z 7z[#&5j!RZܢR[K|U__ĂB(ed$\JAQlU*ǛA< bL) q= u.)x>bw)Os1P$P)QW;3=i#+aخ'>B "6T#.܈%KtD#+Bxx Q;aϖ,3`$4#;ZpG\H: T#&=0~#+rpd`w.*}XXPȅo>7Ԫo"vCHLY"Wum9ZkZB.Q.haN #&lkg:$kAB#.PPv3V"!А$p-#+%QEn,MEʝ96|bz?!uY{(Ѳ?>ȧSHe 's$I1sLHLB^^syhr[ 9+S:~rt$!B4-yIMˍ˥TUcը|pR(aE!V ,YF"iIrZ8oBL$R4㔥2,-}:|wuL*v#.HLM_Wd3="DZlArSURpa-Pji!(0Mjqo:xlɞ!LBTQmAgJ&)=lr>F"uzCUI#&YḌ[!/ܲ+--#&zh=~WWWblv4Y(}ޗMS,SЩ [U۫ޫҘ%-n"0#+BITm,y(֞mo.Ks`~@6/  `@ l>Ո!1Z#g̕:64kR&ѓ=ۻz+.p1}b*eƤ^;WK}cr֖[3U"U6"i((DlBal҄֩@a#++(s!ˍD6j$B@6dp nՠF#+ cWn%ɲ8PԔ> C&f#4p(j/28)h d #.X@$G1%<9y;g` l}>ZXH (iJX#.lqj,!yDɔĮNh*| Fo+4Tk%lLlVƩHC܁d1#.*#&>l,-R2Aڝ,9Ǖ E͝TTUeՐ{ĥ8t8uǀSϘ:2t;lAyg?vk[MN_~k" /7|,5'3[MePaO)׏Y1wדCePT@L80MRa{k.8n$&Llb|1Fy7ðwd fF3Tbx#+VܩcΆ`eYSPOYR˽n|MtnuN]NqvAmPcg/|)"v{kwxMZ#Unkz~/AP<{!d%]SCKbĦCi4=ɍ3c9ZGMhfßԑdЬƦF0LI=&r~]TtHw@l1g>, 1#`„U*$%Bnu_מf/s5Db;ul{p=*vyD5CN7tC6aXB򜐤XtlX@GA`F#w#Ij"&dy#&CLx8R7ǁl #&B_aHsze4T(fIUY,AvSR諳̜87Ԋ#+PV/]Nh_鶴>9\b5$2FVNC5gS)uEՖv !yć T!n&̊16f&7Ch:qeb o=sw#+b#.ȹKG c+s#&Qw<ΓWv4UYM:gIP>2r_J0Oq%Fu=eC#&'o`!(S|ٗzо GDXwH\Ė.H(#+klL/H~HU30ֿE\!^HɠP؟;$];`RÖ$0>KP`H#+"$hˢ5877w29ۊz dUNI:.̎9\5+߮g-MAHfFn4ӑ5ebHAbjb6z3M&7axAӥgLeXdb;`1D$w~P i=RuD,˃S›1u7LL7&?fJ;Lrpp+f7\#+~oC:lK܃#3ŷZ$lрд%PZO2!b&"ui.NcОkP~2G0ݸFV> FW#&%yBr!LM"*a^ˎ TT>cM\a6 $4VƘ Vf8Oq!vƿ7"4<ِy(]#\*Ȗ꧟L*jFG6U&hr5*r3#&~G q˿M$RaBmf*3T̆>9ȥ5MRiELXBoy(0 u33]#.lrUTA|d}^D#"D:Eba>L"$juB_HU#+"tr$l?֩h(VPPp!?O=V3. :CxbFH!*EVT^}V1x05@a)* *#!5HE OU}/|ەJؘp#.4KL]ŠB?MָXL(*ǃ,lmJx}>~^Ǹ#+ 6oa#.'^CxͫC᩟n.UEfQY!L2UP`CMZYIAO8{cx5XPCpPiiHڙT4Z5 6,hB_{Lj7AeFo lIDF$AQ,ZJ0`28hJCZ2#."DG$Q11#C@ghk~ 'g"116 s}ɹfVt3i2)EwOfJivh<_"&ZLmeC,WyWZlFTLlbԒEldl̓#m]W&ܹ$n4Ĺ7M*ZF{͆M3PSIyqE:錇@PZ`4`h@4Euq"4o-`j[Z`0UkH[yIQMҁp&h\3 Pֆ`jql#.A!ZkdkܬD(G!cٙdXqw]emxi5Q2bCm#@20-6aMlT2VDVm&!#qm,d3-$z:׍^]Wg||c&vf\F o C+vHݍ ̃MN qT7v:V&&9kckR"5`il(AQavmLpY4jy8O),t#abY#Vnmm8lHjƚE`b1U%SgB ȑzG J|#+;, CYx@>GX([6O; 1s{xy{qҺ>4qbƨm#.1Y {Y#+Xy#+!M %(iD@*#+iR*#+ HѰA(!eLJsLI.%7{ΝG:/J>K2)9u)VEb?thdh#}rm5(kҌ?b2@dpE5"7md֌R3=L7\7M^O7ɫ:)eY)w#.O.[nQI!s366o*+x6&gqƎ):jڋ2f'OD@U6dI#.껖CT;ng~Coˠ4QX0v,h#.?rtDɏ.A7)g>\M546jߪAyODқ&ZlHni!vE]" \Ti#vj(e$J陦jθjRN"'yH#xH$=2((.d@DѰ~4vBuJ9"j(6ݛ[Ij*Ư:Wknmݹj)KiRqWwjũ6Rů+i7JmמoQV$`[BJhi~L[BsK9&-Z@4!21E#.BiUrDa p) ac WNk]&hh.Y-By͚c "#&|5T5Hꢛ(LJbةZck2hэ3T%D̘MF̛ fƶ-HH#&Ci邡>oѤܪ4TmI$"%s?|o_s>P(}"tc{-1aܿb@G!( 9L#.Xy J]?o-gݝu%-mTm&mkJW52#&ZhlC#.p#aQ#.#&a14HLA"#.b͋7dT!&d75B[%AsfrH #j` s#.+Qg_=zHn&Fq'#. <-~}!##GK8Kr }GֳߩAG"vQ6:k, mt}AlxW /)CpP#+Zbkf Ma3pW>*0ڬّ4&!QU0i(6tE*R0M,T dpL&`U~WN3wïXGw֩>ʛ&6#mѣ#&3U:sNE0}3=|J sUtUݬES#1 gn!Qjvp6|.;#+r#.Y! S=f;ɭ}Qci^yydeW#+(6%9"i$l&ʖ۴&EՁWIpmHyS&s:?%K9Y^`ҽZpؑ @ԑ,uZ("DڂFaQE(8 %" ?XPSD#.@ѶHΕ cuHJJIVk1[T1\arиKE$ok#&*Kr׊MbYP$Kh*dEaAUq'wjfdl1q PZ@1pux2+4i>8mvƓ75R^"*#+- HȈJRpC HkCnݡ.cGB?6*$#+V8R%_a΍67,)C#.a3MJVBCTBg[X? ta$#+N*[`QYT#&@"ăDUN!O(ҿiW^v[#PZsgS1f`-΋zm 9`#!*Y ssG^j)JŴBҗI~h5JL6"#c׻Rk+S\c.]d1BH#.1xm$"uG+6-hg'~F#+#U#.l+ݦv=Iz:i }A s'fh_ Qd*89nh 刲"#&HR@A'*}r@HwtT{fs:lo#&p)%z/(0 AX!`4k'o-[$#&t> *h/տN=%XXE֥~F/sf<<"-Q$H@P6~z0#&HhTvء[riL昵yI)}'2eyT tj͜;*ɤ͋3dsb#+X,S*[@3E\#+ԃQ#&0,fщ>Y;ӽ6(r~?msԋb۲J ۷`ESI87Sh,ࣙ]\="=Lois EQ$0#U90${"ߊ%G1L},jۄ {YƇh;34 3qh(]aLwTU5yT\@R& OKfZc&F*h;ddvg_VMn{C7F\FsDe&fRy4g:y޴l J#.X1=I7F>Gf;rngmh{:J@Xe_Q5xH#KK0:$7#+}y =CAѼpS46c8CgBub`^r{_]2"8nbF#+زňaf)#+DFG@#.#.K#製&#. Z#&#A̪:l %OY.YW^M/kང|#+i3bWBD`_&d2?=KE ZG=TJ"I YȣwMD&pldLVՓ#.*>JϹfj|P?C5FUUUUb/]bfCJI6HBX$D5'*jե7Y_ЄO}^M7f-}#.곇x *XL:8LycV;i5mv4$U*v/x<}+a"STg!y&`c,bCh(41 .Lΰ2>nzf%OnKwL(@@PmcZʄ;NxUPݞY-۱#'|4U(ZjyBd1>;A=\q ׯ Am#+ P.p'}#&ۃCɘV]OP߈] "$r=A>@?V#+H!"B"ȑYCizO~8#]31oDocAd:rvK6-<"b[EzNEÊ;;afc8vh<\ w[g3#&0ŗw4vęL1gҚ "EMl#+䬁1CHI$#.ˑ gD=|qQyQi-iG윎8_@R!|-`@;`#&bG ie l`'rA&@s#.n3q8^!` cW8?̬O)ՙڤk U#&i@s YCAy0 ]PN#+WIko߅4k3>Vg\6/~KэC)W;dBHF t*l2Tcd8G[v1H@2B33|ђӈɩZ@%sKK!7'ct΍mJA݈n2 ŠÌc*>8J b\Rg#+,ѷvaV #x !#`sV*\̉|+Np.4Єӧm #+w_ʤ{#BIg#EMY.1Zw&@*v㺌@E##.NmigL?]BF1$8xnxĨ/$| !7`r~U&b-[5jmVE,ۮx։$@aKso7ECD=u*)_?G|<3(͒#F`,A4%Q(F6&!&͓aJ 9q~CdٓU7؛om?$6Aah89Mm1cXsȊF*ܛbߦc~cޅ0im@@{jE#R5sQ!ѽLBV̆L_#+i5U9|QIPc&Aq6:ITk&"9M6{}ќA/ο q#+=aAMm`sƩ$_2:p5&a?r H-e*JViƔpMVƁA 7 MYrSrwKt,m!4Дlpc."-S#.Ead0 bD@P"!ۢG{ݶ;I2p*[m}Y&veFZb/#.a"jHl(4TQʌV\1HOYs4i~/Sւ0#.Tr!Au%\mpXoE+#+aV*@ܨtS43h\ fDhMV11!;ނ_ s"mQuDHe=64$҄a^JiS(&M9Q%SML(-V+$H#&"F#(#&vPmYHj=UBsugiPX+E"W^b#+3 @),R+#]]6](tt3֤(T 6kT,(:QL#+jMH~, Pjnk0qDGpu#..|-G=ٛZ\qIź߯P:[׳rHֱ8H Yb>$=Z#SeG:#+?`cٜwju,ktlŃ׮ߎΒ/KAs40Qu) U#.+N1rwP(m`5Xu:X%DSkmiXġw Tڤbh8aɇ1J5/m~6=#d>R-seUE_':Ʋ-\2&|&jC vXOŬ7'#\gM&Ƃ,"BCEu4nTBBZ]qY|~_Y- [-˻Xͮ[tՐ66mk&r\"6xUiXYwa:dj㞫̄қ=ab-"lAA +M[x.$@I;{vPpwU@_/(._b!Ƞq@5!H ѵblL-ormn-wntNN^4#.Z]Rw MM|eUcUki6@REA '=bDp"AowQvĂ$"0 #&,~*X3#&D?VQ*rRӏ+0qz< N$֭yB^՚*07ɫ'ȞzEx*v޾'#+'ӒKe!S#YusSU9Vj!~;/dS=Eh&OigWP!>#&샭^)L~nѤظ#+TYRHTwQlvr㵌`n=Ҭfޥsqv#&ӆuzfUjW(O*灙LHh`$q8ܝu=yw4D d)ULHuzz=ZjM.y~2 #+L>>~ٔ=խ-K(CtTl p,5қ Nn(䛊j%t;;kΣٹ;,KH#.lg3H(ma ˕SaCE8t\E^ZBH/A9j]1H#.`B%pX5`sVBZC/ yo#ߣ$aCV/JEAHGq{>yI|k디2Od>pjC(!ǷĹW*}b٬dH9f#mFrO9Rxd]0c$CSUY'ØE7,$. xmL1:-s6qefٍblC"q81Dlc#&~o#.']Ŵf+2 ڧ+]4Rw[A[i3}.ΰ^I'f7(Z|KW5N3Lu^OF%*1Q9JRZ9궖yOwf+}kSEs6$ lu_֜/"0Xjщ{_z2J"2ͦQ,1WZ%m]9NE,ʪ짮tDkʪ.IWln`nk9Tln.b;4eFW#+т MAɡ\u=~"$Eg8채 dӊ;dcNRiRgkzͅႆazFȎc&Ls)EܶySۑJ[_f7LWB\ 2Nqm7J$S0N+͗G=izp#.<=Qa Bv{vc4Yѳ)qGܓ̇sR&{)Rj3{#.8pQ G4U%5C4qz;@vD5@._ DB#+#.j 6lᶍ7\yu0x'y,P@` V(ScA7hP7 rIhdLC*#&@=*Ll#& "<Έ#+;N=.'qgP`pG-7ʜJ5)#& s^Zani Y;2.&9]|;ɯc}vu֜Q=7P.k1$XR@dYRs,"4=6⩶أ48J6[j$`F%O1z֯%\^.EP$)!"0HQUj-Z0lLYD M`501TEE#.A xyb39#&0s˶/#+'I j(/oxۑrlkKmZhhjUmU#+2nFfpP:X9>f۬x)o*1K+ud/io #+hHif-+W S51%Yx:`@,׌ǓA,Pd$)*2ʠ+ƞw$KȑB#+aDi6K)a.+M1@%rQSh)b)$Y/O[=(M , MBfv\jV p#.1{zjSLxk,f4 #+EZǦֵdƲ:kV=N8[+|2`!P\dCyg"48/6YC.(+mI%|kSrvnѦ²FN!#.A,TAj 8Ƙяv4!BmLNE rWZhE^̱j^:G`|򩨰a!HsCImڷE/&ɺMj)5RN)KIP*BHsP(vn$?#);UN걛ոJc-?Pa"do_k#.zk~w+]:c0ቑWy|Bs_J*5T#+_g?VdO#+F#&G6uaD&rkm. ?//uX(6Z\\gÌ o 0۳cUS#+IcxpC(6#.]/e#tE 3`t MG]zoQmy(jzƶ춒2/.ںoռW܆I#Ȉ~}^#+#e2cƐ-jV)lڱIFؒhŠl1 R4%4TF4FR%$)*SdR I0 6a$լU[7f ́Gs4C}(Ǖv홋m~sxBFn@!'{v8* HZ`mC`^F8.Cm݄Ķ1)!``1xʆ }еI(#ճhm+3i!!Fw`rªr5ZG$AmyTԁқ/Q ~Z5bT #+Q5m1?Um"BQWjUԩT,%w xDHAT}̋fn,[#.  B;#.-CLaѪƈ}N.J82V)#fJF(]ӖJ$ C(H[#&PFlj̵%bĘZn#+m]ۡ'g5kь-!`iLd߶fc4H]0VB zC״q>N&|P-ٖ*@ݮF5#.LF5D#+?߁X s'܌Ra#+ zmsG(4'xbHjF,clPUl!i0X&!8d$Hɀzr&#&31ҕ6▞z{)mû`W#&{HH4)\|1D#>Stղ| K#UCۖ s3*AjJbaYz#&Ċ#+r UrvK<߻G<X#IqGd^いaHFit@+i1Ћ:x֦SqFG(X͏i!"{zv'uIɵu9^ FTU*NGש?3G&E=@y{pq;!LQڱ6]^"- _1#+݃Rj93> чhOxEAdULq_#+Rb_kTCRGႠ#~f8&Fl%`:EgslԲ]4X`C$0[$z3t=pxG"{Cp~g_#&O!7~9r bQWIq睔zJ IrqJuN٬#$l#+=#+lWipϋ6)N!EU89YKd0Pp !K I ̉juV%"xQTNr$|rg&5I`$PIV\0H+y^Py@p,@2g#3c6cI:Lûzb#+l7I:NJֽ,r`n`đ#+Tp(6=2 @JdD˸Y&`ژ0:)IQ%cij &/MC|ȹ !4V(@2ByfkQcb#&FSQ?s/F~yvE2"97@1-$TLNIgl_NVqLɔ|e)1>}~Dr 4vkbxB9aYY0#.H2#& 2)R%`Q-Tik[Ҷ3ujVJT)k "usGlB!`Lɑ;:X#e\$=#.,dob9Έ#+a]V xD^PMLa\2s,'#+2NYѡW=RGScQLěI ݶi`.J@Z1cvL4f\yFD"b8dlaQ{Hi4h2\!A:Ne;mKL#`%lĖ;&v.]=˭`\btש" 5wʼnw'7q$[uL=hd4Z:}#pz8̫ <8%8g2٣ D5Ӛ,g V"T^)Py-؜5vO 9+̛OHvks CV^q5u֍@"e]9R̕*8iȊ!ȷ-mycD)ns]]ʁz#9 XE#.56ɛ ❷1ˁR.TNpFXw0r:^1#+25!>Tp8up&H X&=r("c^<9f~za@Xh( 5#&TTC>ߨ]#&'QX[Ev_.ꕝm+yC,#+D- әe7z-Fpmu͠Gq&`~˒@!|f]WVZ䪠Z 2KJR+ NpVaQPà=k4A6M2p#+*J;dw*D#.D*AYb[ZyZE4ɓ'k>#æ~vaAA k#. .)}l^Tp#+{󳵚Zcci7wt'}aWA*1߽%9q"cY`g,\y ^!Or:BU+'8X-C(69 0;Ũn;IZ0b#i`+q!T1Ȕ[;"e1 #!K$)GpV@@75fAhpiQ;ŊMK(4\UD7(b4j%B.$R,Q GtuuCM[U>t8 X! E25O'I;[b!pU+D2S#. R72hqZ((6' p)w2ӹ)coQ,$_4Ci3+$bE%,0yF9qlՌUjYT0GeS2m2n9PPQ0fIzW$5)3pf`age2#&WߓiU##.Gk8a4&t'rTDdQa~[uj)(kJBVIMj6݊2B B6/c *D$EAp`^p#&ۏ)#.T` 񭝦#+9gsk+ b "Ȭ!|CSEV o ?@b #&"jo<*xpv78k6 E7#&u&tʧ/s#.08)`-$)F6Pm ēaY.UZ((Gj$Lgt*uym^dv^eZniN.9V! hTua ,-kf?vpyy.jϧUGYg0ܚW#+H#uYoj?:PĪf+s_&9 C6(F@^!/MH]({o[u!"B4( M3M$A 鷢`nU6.#&ZifL/Q$Džةtr!;ćADd(ͦRiQP35REuވ%  )v?`l5i"PIA=@ "'" *T >"`\t}avԌV 戎>/$S6RMK-1)AY6EMi+Wt4a7D6O \q2Wnl;Cyn9hirXn[8 " >Dl:i{;&DTS#+{cL$ϾJ#Zp#VF撁%$ԴA#&7MW!jRCδFqR#+iL 57M'w G˹,:"lœqHmo$ʋMS+jXʸ[#&p$p) źt}V2te.jv`h#..PbP2f]hl~qSsިzPbB"Lp=YJQBŘZÃi~Bg:J,`AqȊC!yd Wrh@R#.(%BȐpВLvϞĺcxTNAO#&###&@ U6]{|oq;Hh+;AZ0?EGV @#"7sX#&wQOU׭0#.m%5?9/-T<Ч)#Af^##&(C&3#lDhK #+W0\+(j(ny%s\CxWiZNU6-n5KdOБMbAc_;U||=< ٞ$0O#?aO1^]aӠH2#&BHEbzjQh#.ifJͫx߃UAFblUJR5N%/xʫ#&-2)kY\]O#bCBrQ'Aj!2F)-eXXّV*e'wX BQ:@P"Q ۀi7a=I'zը7<~:aȩXGp ,ìGa#&ށ($^S!EW%`J2F] 'i0&7mA?:!ǻIK8=5(@&4P$P#.64HRkTRiI[NӖ# Ѷd#&AhDX=*Ȱ̲hcq'gv#}=q奥I$l5?/#&lXLa).QFwi.T i~BO&E[h+J;gxxK-{fXҎ7D囶 ɀQD(]C-n Twe7Y5UQo7u3*$EWv46M%L4Bh"%N#.Uut7-M֘E{j4SRezuo:ζ52k-w-XtI\Rn @1TZL}h%M kƪB5Hd>Ϸ)|Z6g$#.|rT6zi2њ)CImY`(^괨|g8\]n\=P$ztOV Ij$B{Lu #.T!džK wk.G" IR&N.αo [30S QrFq/ }z_{I5:kM/]l{߰g-J/F|9+.IcؓHNABR!*Fr8_2$r1+KxPt5x9[ 7$5i:[E!cq;iE#؝bk D uc4;d>ƽ!ȱ|* 4GX0iPhPEe믘W/W#:u`g8ځ6^HòPNlhs-_kQr_#.%dR{103#FOؒ娈gNدZ͵pC'P#+pi+^Dm];ӇG~ - h#+F![J^4:"#t#+S lYE%2D x%\pdlA9qњ4!ωXw$`4/^GC"W $FòB#&rDB,ub;4W[KJ}wQ'ׄBЀD@Nw lA#&koSR$v{b>~ }~݌#Zi{\UɊYU/_x]up^}u?_W~HꀏS(C>at1 2*?")AD\#+%:&+LK2!ZwI Pc6 S#&*êU՞ 4!zހ`#+J!n4ƷfGhlw0c 6D"U;R4p`MB;;tЯk4Bl`sO6e75m8ui+(X Lj Tu|^`ִ&w$$0CoϣV-9R6wsBm6vuaᝲoES|;6ULpGie#.bxE1\^C e#&ȃ2#+LϻLu)zׂ}vo N\-O@`6*ȜgWa#.h2Cyw}XѬLWzK0N6&>1'"a .I<)YpO~nc^ %UEsovs+F< fTPw\S!٨ #&r1j#+nBgibxEJ1r* * PqB@^K&?fd`勴ǍBL8Ckݙw:'8BQiH/5صfʪ6Tfi"ES_vo҄NQ;~cE2#&UTo0X" d{%2H0nH8/-oCuj.hgc}ܪ#F|Dǿ'#xlޯ|-d7#,g=6ϐ#9cq딝MIk#&@qMҝ}4JNiu(sƛTlpFEQW8U|.Z*iIhh^Ӄ͗ iho7exZ@湨}nmczWս-Rh U*N-n:yQ݇&q>0(/#+, H.#&m1t#. u;,\ ,„1)acMpc(!q~;".TdFm+TG7;QqljF#&#.?" ;tF)BLt}剳RkRy$REANgCH"~p<74t`Q>2}#.0<3 )o"WH-&@G#&H*B{l z=6x\#u) ~ʔp:Wo)|\.2`þG:v: ~Ybo1yl%xFDm9Wr9,Qxe_uْ/Y5r׿P`vd%bQMĂ$ voF$']j{\!}JT.p!< #<== diff --git a/wscript b/wscript index 8af4232..d6cdc73 100644 --- a/wscript +++ b/wscript @@ -61,6 +61,8 @@ def configure(conf): if 'gcc' in (conf.env.CXX_NAME, conf.env.CC_NAME): conf.env.append_value('SHLIB_MARKER', '-Wl,--no-as-needed') + conf.check_compiler_flags() + if conf.options.logging: conf.define('NS3_LOG_ENABLE', 1) conf.define('NS3_ASSERT_ENABLE', 1)