commit e55831ab5c380c0d3f61594a15f526e01cfa0b9c Author: Bill Sun Date: Thu Jun 9 15:34:25 2022 +0800 fix gitw diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2c8d26 --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +*.log +*.pyc +*.tab +out +.idea +.svn +*.iml +/mo_sql_parsing.egg-info +/build +/dist +/mo-sql-parsing +vendor/ +._* +.DS_Store +.eggs +.vscode +out.k +k +*.so +*.pdf +test*.c* +*.csv +!test.csv +!moving_avg.csv +!nyctx100.csv +*.out +*.asm +!mmw.so +*.k +!header.k +!join.k +**/.vs +**/x64 +*.user +*.filters +*.tmp +*.bin +*.shm +server/packages/** +*.ipynb diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..df5936e --- /dev/null +++ b/LICENSE @@ -0,0 +1,363 @@ +Mozilla Public License, version 2.0 + +1. Definitions + +1.1. "Contributor" + + means each individual or legal entity that creates, contributes to the + creation of, or owns Covered Software. + +1.2. "Contributor Version" + + means the combination of the Contributions of others (if any) used by a + Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + + means Source Code Form to which the initial Contributor has attached the + notice in Exhibit A, the Executable Form of such Source Code Form, and + Modifications of such Source Code Form, in each case including portions + thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + a. that the initial Contributor has attached the notice described in + Exhibit B to the Covered Software; or + + b. that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the terms of + a Secondary License. + +1.6. "Executable Form" + + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + + means a work that combines Covered Software with other material, in a + separate file or files, that is not Covered Software. + +1.8. "License" + + means this document. + +1.9. "Licensable" + + means having the right to grant, to the maximum extent possible, whether + at the time of the initial grant or subsequently, any and all of the + rights conveyed by this License. + +1.10. "Modifications" + + means any of the following: + + a. any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered Software; or + + b. any new file in Source Code Form that contains any Covered Software. + +1.11. "Patent Claims" of a Contributor + + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the License, + by the making, using, selling, offering for sale, having made, import, + or transfer of either its Contributions or its Contributor Version. + +1.12. "Secondary License" + + means either the GNU General Public License, Version 2.0, the GNU Lesser + General Public License, Version 2.1, the GNU Affero General Public + License, Version 3.0, or any later versions of those licenses. + +1.13. "Source Code Form" + + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that controls, is + controlled by, or is under common control with You. For purposes of this + definition, "control" means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + +2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + a. under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + + b. under Patent Claims of such Contributor to make, use, sell, offer for + sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution + become effective for each Contribution on the date the Contributor first + distributes such Contribution. + +2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under + this License. No additional rights or licenses will be implied from the + distribution or licensing of Covered Software under this License. + Notwithstanding Section 2.1(b) above, no patent license is granted by a + Contributor: + + a. for any code that a Contributor has removed from Covered Software; or + + b. for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + + c. under Patent Claims infringed by Covered Software in the absence of + its Contributions. + + This License does not grant any rights in the trademarks, service marks, + or logos of any Contributor (except as may be necessary to comply with + the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to + distribute the Covered Software under a subsequent version of this + License (see Section 10.2) or under the terms of a Secondary License (if + permitted under the terms of Section 3.3). + +2.5. Representation + + Each Contributor represents that the Contributor believes its + Contributions are its original creation(s) or it has sufficient rights to + grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + + This License is not intended to limit any rights You have under + applicable copyright doctrines of fair use, fair dealing, or other + equivalents. + +2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in + Section 2.1. + + +3. Responsibilities + +3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under + the terms of this License. You must inform recipients that the Source + Code Form of the Covered Software is governed by the terms of this + License, and how they can obtain a copy of this License. You may not + attempt to alter or restrict the recipients' rights in the Source Code + Form. + +3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + + a. such Covered Software must also be made available in Source Code Form, + as described in Section 3.1, and You must inform recipients of the + Executable Form how they can obtain a copy of such Source Code Form by + reasonable means in a timely manner, at a charge no more than the cost + of distribution to the recipient; and + + b. You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter the + recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for + the Covered Software. If the Larger Work is a combination of Covered + Software with a work governed by one or more Secondary Licenses, and the + Covered Software is not Incompatible With Secondary Licenses, this + License permits You to additionally distribute such Covered Software + under the terms of such Secondary License(s), so that the recipient of + the Larger Work may, at their option, further distribute the Covered + Software under the terms of either this License or such Secondary + License(s). + +3.4. Notices + + You may not remove or alter the substance of any license notices + (including copyright notices, patent notices, disclaimers of warranty, or + limitations of liability) contained within the Source Code Form of the + Covered Software, except that You may alter any license notices to the + extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of Covered + Software. However, You may do so only on Your own behalf, and not on + behalf of any Contributor. You must make it absolutely clear that any + such warranty, support, indemnity, or liability obligation is offered by + You alone, and You hereby agree to indemnify every Contributor for any + liability incurred by such Contributor as a result of warranty, support, + indemnity or liability terms You offer. You may include additional + disclaimers of warranty and limitations of liability specific to any + jurisdiction. + +4. Inability to Comply Due to Statute or Regulation + + If it is impossible for You to comply with any of the terms of this License + with respect to some or all of the Covered Software due to statute, + judicial order, or regulation then You must: (a) comply with the terms of + this License to the maximum extent possible; and (b) describe the + limitations and the code they affect. Such description must be placed in a + text file included with all distributions of the Covered Software under + this License. Except to the extent prohibited by statute or regulation, + such description must be sufficiently detailed for a recipient of ordinary + skill to be able to understand it. + +5. Termination + +5.1. The rights granted under this License will terminate automatically if You + fail to comply with any of its terms. However, if You become compliant, + then the rights granted under this License from a particular Contributor + are reinstated (a) provisionally, unless and until such Contributor + explicitly and finally terminates Your grants, and (b) on an ongoing + basis, if such Contributor fails to notify You of the non-compliance by + some reasonable means prior to 60 days after You have come back into + compliance. Moreover, Your grants from a particular Contributor are + reinstated on an ongoing basis if such Contributor notifies You of the + non-compliance by some reasonable means, this is the first time You have + received notice of non-compliance with this License from such + Contributor, and You become compliant prior to 30 days after Your receipt + of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, + counter-claims, and cross-claims) alleging that a Contributor Version + directly or indirectly infringes any patent, then the rights granted to + You by any and all Contributors for the Covered Software under Section + 2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user + license agreements (excluding distributors and resellers) which have been + validly granted by You or Your distributors under this License prior to + termination shall survive termination. + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an "as is" basis, + without warranty of any kind, either expressed, implied, or statutory, + including, without limitation, warranties that the Covered Software is free + of defects, merchantable, fit for a particular purpose or non-infringing. + The entire risk as to the quality and performance of the Covered Software + is with You. Should any Covered Software prove defective in any respect, + You (not any Contributor) assume the cost of any necessary servicing, + repair, or correction. This disclaimer of warranty constitutes an essential + part of this License. No use of any Covered Software is authorized under + this License except under this disclaimer. + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including + negligence), contract, or otherwise, shall any Contributor, or anyone who + distributes Covered Software as permitted above, be liable to You for any + direct, indirect, special, incidental, or consequential damages of any + character including, without limitation, damages for lost profits, loss of + goodwill, work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses, even if such party shall have been + informed of the possibility of such damages. This limitation of liability + shall not apply to liability for death or personal injury resulting from + such party's negligence to the extent applicable law prohibits such + limitation. Some jurisdictions do not allow the exclusion or limitation of + incidental or consequential damages, so this exclusion and limitation may + not apply to You. + +8. Litigation + + Any litigation relating to this License may be brought only in the courts + of a jurisdiction where the defendant maintains its principal place of + business and such litigation shall be governed by laws of that + jurisdiction, without reference to its conflict-of-law provisions. Nothing + in this Section shall prevent a party's ability to bring cross-claims or + counter-claims. + +9. Miscellaneous + + This License represents the complete agreement concerning the subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. Any law or regulation which provides that + the language of a contract shall be construed against the drafter shall not + be used to construe this License against a Contributor. + + +10. Versions of the License + +10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section + 10.3, no one other than the license steward has the right to modify or + publish new versions of this License. Each version will be given a + distinguishing version number. + +10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version + of the License under which You originally received the Covered Software, + or under the terms of any subsequent version published by the license + steward. + +10.3. Modified Versions + + If you create software not governed by this License, and you want to + create a new license for such software, you may create and use a + modified version of this License if you rename the license and remove + any references to the name of the license steward (except to note that + such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary + Licenses If You choose to distribute Source Code Form that is + Incompatible With Secondary Licenses under the terms of this version of + the License, the notice described in Exhibit B of this License must be + attached. + +Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the + terms of the Mozilla Public License, v. + 2.0. If a copy of the MPL was not + distributed with this file, You can + obtain one at + http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular file, +then You may include the notice in a location (such as a LICENSE file in a +relevant directory) where a recipient would be likely to look for such a +notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice + + This Source Code Form is "Incompatible + With Secondary Licenses", as defined by + the Mozilla Public License, v. 2.0. + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9c10283 --- /dev/null +++ b/Makefile @@ -0,0 +1,15 @@ +OS_SUPPORT = + +ifeq ($(OS),Windows_NT) + OS_SUPPORT += server/winhelper.cpp +endif +$(info $(OS_SUPPORT)) + +server.bin: + g++ server/server.cpp $(OS_SUPPORT) --std=c++1z -O3 -march=native -o server.bin +server.so: + g++ server/server.cpp -shared $(OS_SUPPORT) --std=c++1z -O3 -march=native -o server.so +snippet: + g++ -shared -fPIC --std=c++1z out.cpp -O3 -march=native -o dll.so +clean: + rm *.shm -rf diff --git a/README.md b/README.md new file mode 100644 index 0000000..13077ce --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +# AQuery++ DB +## Introduction + +AQuery++ Database is a cross-platform, In-Memory Column-Store Database that incorporates compiled query execution. +Compiler frontend built on top of [mo-sql-parsing](https://github.com/klahnakoski/mo-sql-parsing). + +## Roadmap +- [x] SQL Parser -> AQuery Parser (Front End) +- [ ] AQuery-C++ Compiler (Back End) + - [x] Schema and Data Model + - [x] Data acquisition/output from/to csv file + - [x] Single table queries + - [x] Projections and Single Table Aggregations + - [x] Group by Aggregations + - [x] Filters + - [x] Order by + - [x] Assumption + - [x] Flatten + - [ ] Multi-table + - [ ] Join + - [ ] Subqueries +- [ ] -> Optimizing Compiler + +## TODO: +- [ ] C++ Meta-Programming: Elimilate template recursions as much as possible. +- [ ] IPC: Better ways to communicate between Interpreter (Python) and Executer (C++). + - [ ] Sockets? stdin/stdout capture? + +## Requirements +Recent version of Linux, Windows or MacOS, with recent C++ compiler that has C++17 (1z) support (e.g. gcc 6.0, MSVC 2017, clang 6.0), and python 3.6 or above. + +## Usage +`python3 prompt.py` will launch the interactive command prompt. The server binary will be autometically rebuilt and started. +#### Commands: +- ``: parse sql statement +- `f `: parse all sql statements in file +- `print`: printout parsed sql statements +- `exec`: execute last parsed statement(s) +- `r`: run the last generated code snippet +- `save `: save current code snippet. will use random filename if not specified. +- `exit`: quit the prompt +#### Example: + `f moving_avg.a`
+ `exec` diff --git a/aquery_parser/__init__.py b/aquery_parser/__init__.py new file mode 100644 index 0000000..ea4401c --- /dev/null +++ b/aquery_parser/__init__.py @@ -0,0 +1,88 @@ +# encoding: utf-8 +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Contact: Kyle Lahnakoski (kyle@lahnakoski.com) +# + +from __future__ import absolute_import, division, unicode_literals + +import json +from threading import Lock + +from aquery_parser.sql_parser import scrub +from aquery_parser.utils import ansi_string, simple_op, normal_op + +parse_locker = Lock() # ENSURE ONLY ONE PARSING AT A TIME +common_parser = None +mysql_parser = None +sqlserver_parser = None + +SQL_NULL = {"null": {}} + + +def parse(sql, null=SQL_NULL, calls=simple_op): + """ + :param sql: String of SQL + :param null: What value to use as NULL (default is the null function `{"null":{}}`) + :return: parse tree + """ + global common_parser + + with parse_locker: + if not common_parser: + common_parser = sql_parser.common_parser() + result = _parse(common_parser, sql, null, calls) + return result + + +def parse_mysql(sql, null=SQL_NULL, calls=simple_op): + """ + PARSE MySQL ASSUME DOUBLE QUOTED STRINGS ARE LITERALS + :param sql: String of SQL + :param null: What value to use as NULL (default is the null function `{"null":{}}`) + :return: parse tree + """ + global mysql_parser + + with parse_locker: + if not mysql_parser: + mysql_parser = sql_parser.mysql_parser() + return _parse(mysql_parser, sql, null, calls) + + +def parse_sqlserver(sql, null=SQL_NULL, calls=simple_op): + """ + PARSE MySQL ASSUME DOUBLE QUOTED STRINGS ARE LITERALS + :param sql: String of SQL + :param null: What value to use as NULL (default is the null function `{"null":{}}`) + :return: parse tree + """ + global sqlserver_parser + + with parse_locker: + if not sqlserver_parser: + sqlserver_parser = sql_parser.sqlserver_parser() + return _parse(sqlserver_parser, sql, null, calls) + + +parse_bigquery = parse_mysql + + +def _parse(parser, sql, null, calls): + utils.null_locations = [] + utils.scrub_op = calls + sql = sql.rstrip().rstrip(";") + parse_result = parser.parse_string(sql, parse_all=True) + output = scrub(parse_result) + for o, n in utils.null_locations: + o[n] = null + return output + + + +_ = json.dumps + +__all__ = ["parse", "format", "parse_mysql", "parse_bigquery", "normal_op", "simple_op"] diff --git a/aquery_parser/keywords.py b/aquery_parser/keywords.py new file mode 100644 index 0000000..c948a78 --- /dev/null +++ b/aquery_parser/keywords.py @@ -0,0 +1,403 @@ +# encoding: utf-8 +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Contact: Kyle Lahnakoski (kyle@lahnakoski.com) +# + +# SQL CONSTANTS +from mo_parsing import * + +from aquery_parser.utils import SQL_NULL, keyword + +NULL = keyword("null") / (lambda: SQL_NULL) +TRUE = keyword("true") / (lambda: True) +FALSE = keyword("false") / (lambda: False) +NOCASE = keyword("nocase") +ASC = keyword("asc") +DESC = keyword("desc") + +# SIMPLE KEYWORDS +AS = keyword("as").suppress() +ASSUMING = keyword("assuming") +ALL = keyword("all") +BY = keyword("by").suppress() +CAST = keyword("cast") +CONSTRAINT = keyword("constraint").suppress() +CREATE = keyword("create").suppress() +CROSS = keyword("cross") +DISTINCT = keyword("distinct") +EXCEPT = keyword("except") +FETCH = keyword("fetch").suppress() +FROM = keyword("from").suppress() +FULL = keyword("full") +FUNCTION = keyword("function").suppress() +GROUP = keyword("group").suppress() +HAVING = keyword("having").suppress() +INNER = keyword("inner") +INTERVAL = keyword("interval") +JOIN = keyword("join") +LEFT = keyword("left") +LIKE = keyword("like") +LIMIT = keyword("limit").suppress() +MINUS = keyword("minus") +OFFSET = keyword("offset").suppress() +ON = keyword("on").suppress() +ORDER = keyword("order").suppress() +OUTER = keyword("outer") +OVER = keyword("over").suppress() +PARTITION = keyword("partition").suppress() +# PERCENT = keyword("percent").suppress() +RIGHT = keyword("right") +RLIKE = keyword("rlike") +SELECT = keyword("select").suppress() +TABLE = keyword("table").suppress() +THEN = keyword("then").suppress() +TOP = keyword("top").suppress() +UNION = keyword("union") +INTERSECT = keyword("intersect") +USING = keyword("using").suppress() +WHEN = keyword("when").suppress() +WHERE = keyword("where").suppress() +WITH = keyword("with").suppress() +WITHIN = keyword("within").suppress() +PRIMARY = keyword("primary").suppress() +FOREIGN = keyword("foreign").suppress() +KEY = keyword("key").suppress() +UNIQUE = keyword("unique").suppress() +INDEX = keyword("index").suppress() +REFERENCES = keyword("references").suppress() +RECURSIVE = keyword("recursive").suppress() +VALUES = keyword("values").suppress() +WINDOW = keyword("window") +INTO = keyword("into").suppress() + +PRIMARY_KEY = Group(PRIMARY + KEY).set_parser_name("primary_key") +FOREIGN_KEY = Group(FOREIGN + KEY).set_parser_name("foreign_key") + +# SIMPLE OPERATORS +CONCAT = Literal("||").set_parser_name("concat") +MUL = Literal("*").set_parser_name("mul") +DIV = Literal("/").set_parser_name("div") +MOD = Literal("%").set_parser_name("mod") +NEG = Literal("-").set_parser_name("neg") +ADD = Literal("+").set_parser_name("add") +SUB = Literal("-").set_parser_name("sub") +BINARY_NOT = Literal("~").set_parser_name("binary_not") +BINARY_AND = Literal("&").set_parser_name("binary_and") +BINARY_OR = Literal("|").set_parser_name("binary_or") +GTE = Literal(">=").set_parser_name("gte") +LTE = Literal("<=").set_parser_name("lte") +LT = Literal("<").set_parser_name("lt") +GT = Literal(">").set_parser_name("gt") +EEQ = ( + # conservative equality https://github.com/klahnakoski/jx-sqlite/blob/dev/docs/Logical%20Equality.md#definitions + Literal("==") | Literal("=") +).set_parser_name("eq") +DEQ = ( + # decisive equality + # https://sparkbyexamples.com/apache-hive/hive-relational-arithmetic-logical-operators/ + Literal("<=>").set_parser_name("eq!") +) +IDF = ( + # decisive equality + # https://prestodb.io/docs/current/functions/comparison.html#is-distinct-from-and-is-not-distinct-from + keyword("is distinct from").set_parser_name("eq!") +) +INDF = ( + # decisive equality + # https://prestodb.io/docs/current/functions/comparison.html#is-distinct-from-and-is-not-distinct-from + keyword("is not distinct from").set_parser_name("ne!") +) +FASSIGN = Literal(":=").set_parser_name("fassign") # Assignment in UDFs +NEQ = (Literal("!=") | Literal("<>")).set_parser_name("neq") +LAMBDA = Literal("->").set_parser_name("lambda") + +AND = keyword("and") +BETWEEN = keyword("between") +CASE = keyword("case").suppress() +COLLATE = keyword("collate") +END = keyword("end") +ELSE = keyword("else").suppress() +IN = keyword("in") +IS = keyword("is") +NOT = keyword("not") +OR = keyword("or") +LATERAL = keyword("lateral") +VIEW = keyword("view") + +# COMPOUND KEYWORDS + + +joins = ( + ( + Optional(CROSS | OUTER | INNER | ((FULL | LEFT | RIGHT) + Optional(INNER | OUTER))) + + JOIN + + Optional(LATERAL) + ) + | LATERAL + VIEW + Optional(OUTER) +) / (lambda tokens: " ".join(tokens).lower()) + +UNION_ALL = (UNION + ALL).set_parser_name("union_all") +WITHIN_GROUP = Group(WITHIN + GROUP).set_parser_name("within_group") +SELECT_DISTINCT = Group(SELECT + DISTINCT).set_parser_name("select distinct") +PARTITION_BY = Group(PARTITION + BY).set_parser_name("partition by") +GROUP_BY = Group(GROUP + BY).set_parser_name("group by") +ORDER_BY = Group(ORDER + BY).set_parser_name("order by") + +# COMPOUND OPERATORS +AT_TIME_ZONE = Group(keyword("at") + keyword("time") + keyword("zone")) +NOT_BETWEEN = Group(NOT + BETWEEN).set_parser_name("not_between") +NOT_LIKE = Group(NOT + LIKE).set_parser_name("not_like") +NOT_RLIKE = Group(NOT + RLIKE).set_parser_name("not_rlike") +NOT_IN = Group(NOT + IN).set_parser_name("nin") +IS_NOT = Group(IS + NOT).set_parser_name("is_not") + +_SIMILAR = keyword("similar") +_TO = keyword("to") +SIMILAR_TO = Group(_SIMILAR + _TO).set_parser_name("similar_to") +NOT_SIMILAR_TO = Group(NOT + _SIMILAR + _TO).set_parser_name("not_similar_to") + +RESERVED = MatchFirst([ + # ONY INCLUDE SINGLE WORDS + ALL, + AND, + AS, + ASC, + ASSUMING, + BETWEEN, + BY, + CASE, + COLLATE, + CONSTRAINT, + CREATE, + CROSS, + DESC, + DISTINCT, + EXCEPT, + ELSE, + END, + FALSE, + FETCH, + FOREIGN, + FROM, + FULL, + FUNCTION, + GROUP_BY, + GROUP, + HAVING, + IN, + INDEX, + INNER, + INTERSECT, + INTERVAL, + IS_NOT, + IS, + JOIN, + KEY, + LATERAL, + LEFT, + LIKE, + LIMIT, + MINUS, + NOCASE, + NOT, + NULL, + OFFSET, + ON, + OR, + ORDER, + OUTER, + OVER, + PARTITION, + PRIMARY, + REFERENCES, + RIGHT, + RLIKE, + SELECT, + THEN, + TRUE, + UNION, + UNIQUE, + USING, + WHEN, + WHERE, + WINDOW, + WITH, + WITHIN, + INTO, +]) +L_INLINE = Literal("").suppress() +R_INLINE = Literal("").suppress() +LBRACE = Literal("{").suppress() +RBRACE = Literal("}").suppress() +LB = Literal("(").suppress() +RB = Literal(")").suppress() +EQ = Char("=").suppress() + +join_keywords = { + "join", + "full join", + "cross join", + "inner join", + "left join", + "right join", + "full outer join", + "right outer join", + "left outer join", +} + +precedence = { + # https://www.sqlite.org/lang_expr.html + "literal": -1, + "interval": 0, + "cast": 0, + "collate": 0, + "concat": 1, + "mul": 2, + "div": 1.5, + "mod": 2, + "neg": 3, + "add": 3, + "sub": 2.5, + "binary_not": 4, + "binary_and": 4, + "binary_or": 4, + "gte": 5, + "lte": 5, + "lt": 5, + "gt": 6, + "eq": 7, + "neq": 7, + "missing": 7, + "exists": 7, + "at_time_zone": 8, + "between": 8, + "not_between": 8, + "in": 8, + "nin": 8, + "is": 8, + "like": 8, + "not_like": 8, + "rlike": 8, + "not_rlike": 8, + "similar_to": 8, + "not_similar_to": 8, + "and": 10, + "or": 11, + "lambda": 12, + "join": 18, + "list": 18, + "function": 30, + "select": 30, + "from": 30, + "window": 35, + "union": 40, + "union_all": 40, + "except": 40, + "minus": 40, + "intersect": 40, + "order": 50, +} + +KNOWN_OPS = [ + COLLATE, + CONCAT, + MUL | DIV | MOD, + NEG, + ADD | SUB, + BINARY_NOT, + BINARY_AND, + BINARY_OR, + GTE | LTE | LT | GT, + EEQ | NEQ | DEQ | IDF | INDF, + AT_TIME_ZONE, + (BETWEEN, AND), + (NOT_BETWEEN, AND), + IN, + NOT_IN, + IS_NOT, + IS, + LIKE, + NOT_LIKE, + RLIKE, + NOT_RLIKE, + SIMILAR_TO, + NOT_SIMILAR_TO, + NOT, + AND, + OR, + LAMBDA, +] + +times = ["now", "today", "tomorrow", "eod"] + +durations = { + "microseconds": "microsecond", + "microsecond": "microsecond", + "microsecs": "microsecond", + "microsec": "microsecond", + "useconds": "microsecond", + "usecond": "microsecond", + "usecs": "microsecond", + "usec": "microsecond", + "us": "microsecond", + "milliseconds": "millisecond", + "millisecond": "millisecond", + "millisecon": "millisecond", + "mseconds": "millisecond", + "msecond": "millisecond", + "millisecs": "millisecond", + "millisec": "millisecond", + "msecs": "millisecond", + "msec": "millisecond", + "ms": "millisecond", + "seconds": "second", + "second": "second", + "secs": "second", + "sec": "second", + "s": "second", + "minutes": "minute", + "minute": "minute", + "mins": "minute", + "min": "minute", + "m": "minute", + "hours": "hour", + "hour": "hour", + "hrs": "hour", + "hr": "hour", + "h": "hour", + "days": "day", + "day": "day", + "d": "day", + "dayofweek": "dow", + "dow": "dow", + "weekday": "dow", + "weeks": "week", + "week": "week", + "w": "week", + "months": "month", + "month": "month", + "mons": "month", + "mon": "month", + "quarters": "quarter", + "quarter": "quarter", + "years": "year", + "year": "year", + "decades": "decade", + "decade": "decade", + "decs": "decade", + "dec": "decade", + "centuries": "century", + "century": "century", + "cents": "century", + "cent": "century", + "c": "century", + "millennia": "millennium", + "millennium": "millennium", + "mils": "millennium", + "mil": "millennium", + "epoch": "epoch", +} diff --git a/aquery_parser/sql_parser.py b/aquery_parser/sql_parser.py new file mode 100644 index 0000000..95f7beb --- /dev/null +++ b/aquery_parser/sql_parser.py @@ -0,0 +1,658 @@ +# encoding: utf-8 +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Contact: Kyle Lahnakoski (kyle@lahnakoski.com) +# + +from mo_parsing.helpers import restOfLine +from mo_parsing.infix import delimited_list +from mo_parsing.whitespaces import NO_WHITESPACE, Whitespace + +from aquery_parser.keywords import * +from aquery_parser.types import get_column_type, time_functions +from aquery_parser.utils import * +from aquery_parser.windows import window + +digit = Char("0123456789") +simple_ident = ( + Char(FIRST_IDENT_CHAR) + + Char(IDENT_CHAR)[...] # let's not support dashes in var_names. +) +simple_ident = Regex(simple_ident.__regex__()[1]) + + +def common_parser(): + combined_ident = Combine(delimited_list( + ansi_ident | mysql_backtick_ident | simple_ident, separator=".", combine=True, + )).set_parser_name("identifier") + + return parser(ansi_string | mysql_doublequote_string, combined_ident) + + +def mysql_parser(): + mysql_string = ansi_string | mysql_doublequote_string + mysql_ident = Combine(delimited_list( + mysql_backtick_ident | sqlserver_ident | simple_ident, + separator=".", + combine=True, + )).set_parser_name("mysql identifier") + + return parser(mysql_string, mysql_ident) + + +def sqlserver_parser(): + combined_ident = Combine(delimited_list( + ansi_ident + | mysql_backtick_ident + | sqlserver_ident + | Word(FIRST_IDENT_CHAR, IDENT_CHAR), + separator=".", + combine=True, + )).set_parser_name("identifier") + + return parser(ansi_string, combined_ident, sqlserver=True) + + +def parser(literal_string, ident, sqlserver=False): + with Whitespace() as engine: + engine.add_ignore(Literal("--") + restOfLine) + engine.add_ignore(Literal("#") + restOfLine) + engine.add_ignore(Literal("/*") + SkipTo("*/", include=True)) + + var_name = ~RESERVED + ident + + inline_kblock = (L_INLINE + SkipTo(R_INLINE, include=True))("c") + # EXPRESSIONS + expr = Forward() + column_type, column_definition, column_def_references = get_column_type( + expr, var_name, literal_string + ) + + # CASE + case = ( + CASE + + Group(ZeroOrMore( + (WHEN + expr("when") + THEN + expr("then")) / to_when_call + ))("case") + + Optional(ELSE + expr("else")) + + END + ) / to_case_call + + switch = ( + CASE + + expr("value") + + Group(ZeroOrMore( + (WHEN + expr("when") + THEN + expr("then")) / to_when_call + ))("case") + + Optional(ELSE + expr("else")) + + END + ) / to_switch_call + + cast = ( + Group(CAST("op") + LB + expr("params") + AS + column_type("params") + RB) + / to_json_call + ) + + trim = ( + Group( + keyword("trim").suppress() + + LB + + Optional( + (keyword("both") | keyword("trailing") | keyword("leading")) + / (lambda t: t[0].lower()) + )("direction") + + ( + assign("from", expr) + | expr("chars") + Optional(assign("from", expr)) + ) + + RB + ).set_parser_name("trim") + / to_trim_call + ) + + _standard_time_intervals = MatchFirst([ + keyword(d) / (lambda t: durations[t[0].lower()]) for d in durations.keys() + ]).set_parser_name("duration")("params") + + duration = ( + real_num | int_num | literal_string + )("params") + _standard_time_intervals + + interval = ( + INTERVAL + ("'" + delimited_list(duration) + "'" | duration) + ) / to_interval_call + + timestamp = ( + time_functions("op") + + ( + literal_string("params") + | MatchFirst([ + keyword(t) / (lambda t: t.lower()) for t in times + ])("params") + ) + ) / to_json_call + + extract = ( + keyword("extract")("op") + + LB + + (_standard_time_intervals | expr("params")) + + FROM + + expr("params") + + RB + ) / to_json_call + + alias = Optional(( + ( + AS + + (var_name("name") + Optional(LB + delimited_list(ident("col")) + RB)) + | ( + var_name("name") + + Optional( + (LB + delimited_list(ident("col")) + RB) + | (AS + delimited_list(var_name("col"))) + ) + ) + ) + / to_alias + )("name")) + + named_column = Group(Group(expr)("value") + alias) + + stack = ( + keyword("stack")("op") + + LB + + int_num("width") + + "," + + delimited_list(expr)("args") + + RB + ) / to_stack + + # ARRAY[foo], + # ARRAY < STRING > [foo, bar], INVALID + # ARRAY < STRING > [foo, bar], + create_array = ( + keyword("array")("op") + + Optional(LT.suppress() + column_type("type") + GT.suppress()) + + ( + LB + delimited_list(Group(expr))("args") + RB + | (Literal("[") + delimited_list(Group(expr))("args") + Literal("]")) + ) + ) + + if not sqlserver: + # SQL SERVER DOES NOT SUPPORT [] FOR ARRAY CONSTRUCTION (USED FOR IDENTIFIERS) + create_array = ( + Literal("[") + delimited_list(Group(expr))("args") + Literal("]") + | create_array + ) + + create_array = create_array / to_array + + create_map = ( + keyword("map") + + Literal("[") + + expr("keys") + + "," + + expr("values") + + Literal("]") + ) / to_map + + create_struct = ( + keyword("struct")("op") + + Optional( + LT.suppress() + delimited_list(column_type)("types") + GT.suppress() + ) + + LB + + delimited_list(Group((expr("value") + alias) / to_select_call))("args") + + RB + ).set_parser_name("create struct") / to_struct + + distinct = ( + DISTINCT("op") + delimited_list(named_column)("params") + ) / to_json_call + + query = Forward().set_parser_name("query") + + call_function = ( + ident("op") + + LB + + Optional(Group(query) | delimited_list(Group(expr)))("params") + + Optional( + (keyword("respect") | keyword("ignore"))("nulls") + + keyword("nulls").suppress() + ) + + RB + ).set_parser_name("call function") / to_json_call + + with NO_WHITESPACE: + + def scale(tokens): + return {"mul": [tokens[0], tokens[1]]} + + scale_function = ((real_num | int_num) + call_function) / scale + scale_ident = ((real_num | int_num) + ident) / scale + + compound = ( + NULL + | TRUE + | FALSE + | NOCASE + | interval + | timestamp + | extract + | case + | switch + | cast + | distinct + | trim + | stack + | create_array + | create_map + | create_struct + | (LB + Group(query) + RB) + | (LB + Group(delimited_list(expr)) / to_tuple_call + RB) + | literal_string.set_parser_name("string") + | hex_num.set_parser_name("hex") + | scale_function + | scale_ident + | real_num.set_parser_name("float") + | int_num.set_parser_name("int") + | call_function + | Combine(var_name + Optional(".*")) + ) + + sort_column = ( + expr("value").set_parser_name("sort1") + + Optional(DESC("sort") | ASC("sort")) + + Optional(assign("nulls", keyword("first") | keyword("last"))) + ) + + window_clause, over_clause = window(expr, var_name, sort_column) + + expr << ( + ( + Literal("*") + | infix_notation( + compound, + [ + ( + Literal("[").suppress() + expr + Literal("]").suppress(), + 1, + LEFT_ASSOC, + to_offset, + ), + ( + Literal(".").suppress() + simple_ident, + 1, + LEFT_ASSOC, + to_offset, + ), + (window_clause, 1, LEFT_ASSOC, to_window_mod), + ( + assign("filter", LB + WHERE + expr + RB), + 1, + LEFT_ASSOC, + to_window_mod, + ), + ] + + [ + ( + o, + 1 if o in unary_ops else (3 if isinstance(o, tuple) else 2), + unary_ops.get(o, LEFT_ASSOC), + to_lambda if o is LAMBDA else to_json_operator, + ) + for o in KNOWN_OPS + ], + ) + )("value").set_parser_name("expression") + ) + + select_column = ( + Group( + expr("value") + alias | Literal("*")("value") + ).set_parser_name("column") + / to_select_call + ) + + table_source = Forward() + + join = ( + Group(joins)("op") + + table_source("join") + + Optional((ON + expr("on")) | (USING + expr("using"))) + | ( + Group(WINDOW)("op") + + Group(var_name("name") + AS + over_clause("value"))("join") + ) + ) / to_join_call + + fassign = Group(var_name("var") + Suppress(FASSIGN) + expr("expr") + Suppress(";"))("assignment") + fassigns = fassign + ZeroOrMore(fassign, Whitespace(white=" \t")) + + fbody = (Optional(fassigns) + expr("ret")) + + udf = ( + FUNCTION + + var_name("fname") + + LB + + Optional(delimited_list(var_name)("params")) + + RB + + LBRACE + + fbody + + RBRACE + ) + + selection = ( + (SELECT + DISTINCT + ON + LB) + + delimited_list(select_column)("distinct_on") + + RB + + delimited_list(select_column)("select") + | SELECT + DISTINCT + delimited_list(select_column)("select_distinct") + | ( + SELECT + + Optional( + TOP + + expr("value") + + Optional(keyword("percent"))("percent") + + Optional(WITH + keyword("ties"))("ties") + )("top") + / to_top_clause + + delimited_list(select_column)("select") + ) + ) + + row = (LB + delimited_list(Group(expr)) + RB) / to_row + values = VALUES + delimited_list(row) / to_values + + unordered_sql = Group( + values + | selection + + Optional( + (FROM + delimited_list(table_source) + ZeroOrMore(join))("from") + + Optional(WHERE + expr("where")) + + Optional(GROUP_BY + delimited_list(Group(named_column))("groupby")) + + Optional(HAVING + expr("having")) + ) + ).set_parser_name("unordered sql") + + with NO_WHITESPACE: + + def mult(tokens): + amount = tokens["bytes"] + scale = tokens["scale"].lower() + return { + "bytes": amount + * {"b": 1, "k": 1_000, "m": 1_000_000, "g": 1_000_000_000}[scale] + } + + ts_bytes = ( + (real_num | int_num)("bytes") + Char("bBkKmMgG")("scale") + ) / mult + + tablesample = assign( + "tablesample", + LB + + ( + ( + keyword("bucket")("op") + + int_num("params") + + keyword("out of") + + int_num("params") + + Optional(ON + expr("on")) + ) + / to_json_call + | (real_num | int_num)("percent") + keyword("percent") + | int_num("rows") + keyword("rows") + | ts_bytes + ) + + RB, + ) + + assumption = Group((ASC|DESC) ("sort") + var_name("value")) + assumptions = (ASSUMING + Group(delimited_list(assumption))("assumptions")) + + table_source << Group( + ((LB + query + RB) | stack | call_function | var_name)("value") + + Optional(assumptions) + + Optional(flag("with ordinality")) + + Optional(tablesample) + + alias + ).set_parser_name("table_source") / to_table + + rows = Optional(keyword("row") | keyword("rows")) + limit = ( + Optional(assign("offset", expr) + rows) + & Optional( + FETCH + + Optional(keyword("first") | keyword("next")) + + expr("fetch") + + rows + + Optional(keyword("only")) + ) + & Optional(assign("limit", expr)) + ) + + outfile = Optional( + ( + INTO + + keyword("outfile").suppress() + + literal_string ("loc") + + Optional ( + keyword("fields") + + keyword("terminated") + + keyword("by") + + literal_string ("term") + ) + )("outfile") + ) + ordered_sql = ( + ( + (unordered_sql | (LB + query + RB)) + + ZeroOrMore( + Group( + (UNION | INTERSECT | EXCEPT | MINUS) + Optional(ALL | DISTINCT) + )("op") + + (unordered_sql | (LB + query + RB)) + ) + )("union") + + Optional(ORDER_BY + delimited_list(Group(sort_column))("orderby")) + + limit + + outfile + ).set_parser_name("ordered sql") / to_union_call + + with_expr = delimited_list(Group( + ( + (var_name("name") + Optional(LB + delimited_list(ident("col")) + RB)) + / to_alias + )("name") + + (AS + LB + (query | expr)("value") + RB) + )) + + query << ( + Optional(assign("with recursive", with_expr) | assign("with", with_expr)) + + Group(ordered_sql)("query") + ) / to_query + + ##################################################################### + # DML STATEMENTS + ##################################################################### + + # MySQL's index_type := Using + ( "BTREE" | "HASH" ) + index_type = Optional(assign("using", ident("index_type"))) + + index_column_names = LB + delimited_list(var_name("columns")) + RB + + column_def_delete = assign( + "on delete", + (keyword("cascade") | keyword("set null") | keyword("set default")), + ) + + table_def_foreign_key = FOREIGN_KEY + Optional( + Optional(var_name("index_name")) + + index_column_names + + column_def_references + + Optional(column_def_delete) + ) + + index_options = ZeroOrMore(var_name)("table_constraint_options") + + table_constraint_definition = Optional(CONSTRAINT + var_name("name")) + ( + assign("primary key", index_type + index_column_names + index_options) + | ( + Optional(flag("unique")) + + Optional(INDEX | KEY) + + Optional(var_name("name")) + + index_type + + index_column_names + + index_options + )("index") + | assign("check", LB + expr + RB) + | table_def_foreign_key("foreign_key") + ) + + table_element = ( + column_definition("columns") | table_constraint_definition("constraint") + ) + + create_table = ( + keyword("create") + + Optional(keyword("or") + flag("replace")) + + Optional(flag("temporary")) + + TABLE + + Optional((keyword("if not exists") / (lambda: False))("replace")) + + var_name("name") + + Optional(LB + delimited_list(table_element) + RB) + + ZeroOrMore( + assign("engine", EQ + var_name) + | assign("collate", EQ + var_name) + | assign("auto_increment", EQ + int_num) + | assign("comment", EQ + literal_string) + | assign("default character set", EQ + var_name) + | assign("default charset", EQ + var_name) + ) + + Optional(AS.suppress() + infix_notation(query, [])("query")) + )("create_table") + + create_view = ( + keyword("create") + + Optional(keyword("or") + flag("replace")) + + Optional(flag("temporary")) + + VIEW.suppress() + + Optional((keyword("if not exists") / (lambda: False))("replace")) + + var_name("name") + + AS + + query("query") + )("create_view") + + # CREATE INDEX a ON u USING btree (e); + create_index = ( + keyword("create index") + + Optional(keyword("or") + flag("replace"))(INDEX | KEY) + + Optional((keyword("if not exists") / (lambda: False))("replace")) + + var_name("name") + + ON + + var_name("table") + + index_type + + index_column_names + + index_options + )("create index") + + cache_options = Optional(( + keyword("options").suppress() + + LB + + Dict(delimited_list(Group( + literal_string / (lambda tokens: tokens[0]["literal"]) + + Optional(EQ) + + var_name + ))) + + RB + )("options")) + + create_cache = ( + keyword("cache").suppress() + + Optional(flag("lazy")) + + TABLE + + var_name("name") + + cache_options + + Optional(AS + query("query")) + )("cache") + + drop_table = ( + keyword("drop table") + Optional(flag("if exists")) + var_name("table") + )("drop") + + drop_view = ( + keyword("drop view") + Optional(flag("if exists")) + var_name("view") + )("drop") + + drop_index = ( + keyword("drop index") + Optional(flag("if exists")) + var_name("index") + )("drop") + + insert = ( + keyword("insert").suppress() + + ( + flag("overwrite") + keyword("table").suppress() + | keyword("into").suppress() + Optional(keyword("table").suppress()) + ) + + var_name("table") + + Optional(LB + delimited_list(var_name)("columns") + RB) + + Optional(flag("if exists")) + + (values | query)("query") + ) / to_insert_call + + update = ( + keyword("update")("op") + + var_name("params") + + assign("set", Dict(delimited_list(Group(var_name + EQ + expr)))) + + Optional(assign("where", expr)) + ) / to_json_call + + delete = ( + keyword("delete")("op") + + keyword("from").suppress() + + var_name("params") + + Optional(assign("where", expr)) + ) / to_json_call + + load = ( + keyword("load")("op") + + keyword("data").suppress() + + keyword("infile")("loc") + + literal_string ("file") + + INTO + + keyword("table").suppress() + + var_name ("table") + + Optional( + keyword("fields").suppress() + + keyword("terminated").suppress() + + keyword("by").suppress() + + literal_string ("term") + ) + ) ("load") + + + + sql_stmts = delimited_list( ( + query + | (insert | update | delete | load) + | (create_table | create_view | create_cache | create_index) + | (drop_table | drop_view | drop_index) + )("stmts"), ";") + + other_stmt = ( + inline_kblock + | udf + ) ("stmts") + + stmts = ZeroOrMore( + sql_stmts + |other_stmt + | keyword(";").suppress() # empty stmt + ) + + return stmts.finalize() diff --git a/aquery_parser/types.py b/aquery_parser/types.py new file mode 100644 index 0000000..acdd428 --- /dev/null +++ b/aquery_parser/types.py @@ -0,0 +1,223 @@ +# encoding: utf-8 +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Contact: Kyle Lahnakoski (kyle@lahnakoski.com) +# + + +# KNOWN TYPES +from mo_parsing import Forward, Group, Optional, MatchFirst, Literal, ZeroOrMore, export +from mo_parsing.infix import delimited_list, RIGHT_ASSOC, LEFT_ASSOC + +from aquery_parser.keywords import ( + RB, + LB, + NEG, + NOT, + BINARY_NOT, + NULL, + EQ, + KNOWN_OPS, + LT, + GT, +) +from aquery_parser.utils import ( + keyword, + to_json_call, + int_num, + ansi_string, + ansi_ident, + assign, + flag, +) + +_size = Optional(LB + int_num("params") + RB) +_sizes = Optional(LB + delimited_list(int_num("params")) + RB) + +simple_types = Forward() + +BIGINT = Group(keyword("bigint")("op") + Optional(_size)+Optional(flag("unsigned"))) / to_json_call +BOOL = Group(keyword("bool")("op")) / to_json_call +BOOLEAN = Group(keyword("boolean")("op")) / to_json_call +DOUBLE = Group(keyword("double")("op")) / to_json_call +FLOAT64 = Group(keyword("float64")("op")) / to_json_call +FLOAT = Group(keyword("float")("op")) / to_json_call +GEOMETRY = Group(keyword("geometry")("op")) / to_json_call +INTEGER = Group(keyword("integer")("op")) / to_json_call +INT = (keyword("int")("op") + _size) / to_json_call +INT32 = Group(keyword("int32")("op")) / to_json_call +INT64 = Group(keyword("int64")("op")) / to_json_call +REAL = Group(keyword("real")("op")) / to_json_call +TEXT = Group(keyword("text")("op")) / to_json_call +SMALLINT = Group(keyword("smallint")("op")) / to_json_call +STRING = Group(keyword("string")("op")) / to_json_call + +BLOB = (keyword("blob")("op") + _size) / to_json_call +BYTES = (keyword("bytes")("op") + _size) / to_json_call +CHAR = (keyword("char")("op") + _size) / to_json_call +NCHAR = (keyword("nchar")("op") + _size) / to_json_call +VARCHAR = (keyword("varchar")("op") + _size) / to_json_call +VARCHAR2 = (keyword("varchar2")("op") + _size) / to_json_call +VARBINARY = (keyword("varbinary")("op") + _size) / to_json_call +TINYINT = (keyword("tinyint")("op") + _size) / to_json_call +UUID = Group(keyword("uuid")("op")) / to_json_call + +DECIMAL = (keyword("decimal")("op") + _sizes) / to_json_call +DOUBLE_PRECISION = ( + Group((keyword("double precision") / (lambda: "double_precision"))("op")) + / to_json_call +) +NUMERIC = (keyword("numeric")("op") + _sizes) / to_json_call +NUMBER = (keyword("number")("op") + _sizes) / to_json_call + +MAP_TYPE = ( + keyword("map")("op") + LB + delimited_list(simple_types("params")) + RB +) / to_json_call +ARRAY_TYPE = (keyword("array")("op") + LB + simple_types("params") + RB) / to_json_call + +DATE = keyword("date") +DATETIME = keyword("datetime") +DATETIME_W_TIMEZONE = keyword("datetime with time zone") +TIME = keyword("time") +TIMESTAMP = keyword("timestamp") +TIMESTAMP_W_TIMEZONE = keyword("timestamp with time zone") +TIMESTAMPTZ = keyword("timestamptz") +TIMETZ = keyword("timetz") + +time_functions = DATE | DATETIME | TIME | TIMESTAMP | TIMESTAMPTZ | TIMETZ + +# KNOWNN TIME TYPES +_format = Optional((ansi_string | ansi_ident)("params")) + +DATE_TYPE = (DATE("op") + _format) / to_json_call +DATETIME_TYPE = (DATETIME("op") + _format) / to_json_call +DATETIME_W_TIMEZONE_TYPE = (DATETIME_W_TIMEZONE("op") + _format) / to_json_call +TIME_TYPE = (TIME("op") + _format) / to_json_call +TIMESTAMP_TYPE = (TIMESTAMP("op") + _format) / to_json_call +TIMESTAMP_W_TIMEZONE_TYPE = (TIMESTAMP_W_TIMEZONE("op") + _format) / to_json_call +TIMESTAMPTZ_TYPE = (TIMESTAMPTZ("op") + _format) / to_json_call +TIMETZ_TYPE = (TIMETZ("op") + _format) / to_json_call + +simple_types << MatchFirst([ + ARRAY_TYPE, + BIGINT, + BOOL, + BOOLEAN, + BLOB, + BYTES, + CHAR, + DATE_TYPE, + DATETIME_W_TIMEZONE_TYPE, + DATETIME_TYPE, + DECIMAL, + DOUBLE_PRECISION, + DOUBLE, + FLOAT64, + FLOAT, + GEOMETRY, + MAP_TYPE, + INTEGER, + INT, + INT32, + INT64, + NCHAR, + NUMBER, + NUMERIC, + REAL, + TEXT, + SMALLINT, + STRING, + TIME_TYPE, + TIMESTAMP_W_TIMEZONE_TYPE, + TIMESTAMP_TYPE, + TIMESTAMPTZ_TYPE, + TIMETZ_TYPE, + TINYINT, + UUID, + VARCHAR, + VARCHAR2, + VARBINARY, +]) + +CASTING = (Literal("::").suppress() + simple_types("params")).set_parser_name("cast") +KNOWN_OPS.insert(0, CASTING) + +unary_ops = { + NEG: RIGHT_ASSOC, + NOT: RIGHT_ASSOC, + BINARY_NOT: RIGHT_ASSOC, + CASTING: LEFT_ASSOC, +} + + +def get_column_type(expr, var_name, literal_string): + column_definition = Forward() + column_type = Forward().set_parser_name("column type") + + struct_type = ( + keyword("struct")("op") + + LT.suppress() + + Group(delimited_list(column_definition))("params") + + GT.suppress() + ) / to_json_call + + row_type = ( + keyword("row")("op") + + LB + + Group(delimited_list(column_definition))("params") + + RB + ) / to_json_call + + array_type = ( + keyword("array")("op") + + ( + ( + LT.suppress() + + Group(delimited_list(column_type))("params") + + GT.suppress() + ) + | (LB + Group(delimited_list(column_type))("params") + RB) + ) + ) / to_json_call + + column_type << (struct_type | row_type | array_type | simple_types) + + column_def_identity = ( + assign( + "generated", + (keyword("always") | keyword("by default") / (lambda: "by_default")), + ) + + keyword("as identity").suppress() + + Optional(assign("start with", int_num)) + + Optional(assign("increment by", int_num)) + ) + + column_def_references = assign( + "references", var_name("table") + LB + delimited_list(var_name)("columns") + RB, + ) + + column_options = ZeroOrMore( + ((NOT + NULL) / (lambda: False))("nullable") + | (NULL / (lambda t: True))("nullable") + | flag("unique") + | flag("auto_increment") + | assign("comment", literal_string) + | assign("collate", Optional(EQ) + var_name) + | flag("primary key") + | column_def_identity("identity") + | column_def_references + | assign("check", LB + expr + RB) + | assign("default", expr) + ).set_parser_name("column_options") + + column_definition << Group( + var_name("name") + (column_type | var_name)("type") + column_options + ).set_parser_name("column_definition") + + return column_type, column_definition, column_def_references + + +export("aquery_parser.utils", unary_ops) diff --git a/aquery_parser/utils.py b/aquery_parser/utils.py new file mode 100644 index 0000000..6aeaec5 --- /dev/null +++ b/aquery_parser/utils.py @@ -0,0 +1,618 @@ +# encoding: utf-8 +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Contact: Kyle Lahnakoski (kyle@lahnakoski.com) +# + +import ast + +from mo_dots import is_data, is_null, Data, from_data +from mo_future import text, number_types, binary_type, flatten +from mo_imports import expect +from mo_parsing import * +from mo_parsing.utils import is_number, listwrap + +unary_ops = expect("unary_ops") + + +class Call(object): + __slots__ = ["op", "args", "kwargs"] + + def __init__(self, op, args, kwargs): + self.op = op + self.args = args + self.kwargs = kwargs + + +IDENT_CHAR = Regex("[@_$0-9A-Za-zÀ-ÖØ-öø-ƿ]").expr.parser_config.include +FIRST_IDENT_CHAR = "".join(set(IDENT_CHAR) - set("0123456789")) +SQL_NULL = Call("null", [], {}) + +null_locations = [] + + +def keyword(keywords): + return And([ + Keyword(k, caseless=True) for k in keywords.split(" ") + ]).set_parser_name(keywords) / (lambda: keywords.replace(" ", "_")) + + +def flag(keywords): + """ + RETURN {keywords: True} + """ + return (keyword(keywords) / (lambda: True))(keywords.replace(" ", "_")) + + +def assign(key: str, value: ParserElement): + return keyword(key).suppress() + value(key.replace(" ", "_")) + + +def simple_op(op, args, kwargs): + if args is None: + kwargs[op] = {} + else: + kwargs[op] = args + return kwargs + + +def normal_op(op, args, kwargs): + output = Data(op=op) + args = listwrap(args) + if args and (not isinstance(args[0], dict) or args[0]): + output.args = args + if kwargs: + output.kwargs = kwargs + return from_data(output) + + +scrub_op = simple_op + + +def scrub(result): + if result is SQL_NULL: + return SQL_NULL + elif result == None: + return None + elif isinstance(result, text): + return result + elif isinstance(result, binary_type): + return result.decode("utf8") + elif isinstance(result, number_types): + return result + elif isinstance(result, Call): + kwargs = scrub(result.kwargs) + args = scrub(result.args) + if args is SQL_NULL: + null_locations.append((kwargs, result.op)) + return scrub_op(result.op, args, kwargs) + elif isinstance(result, dict) and not result: + return result + elif isinstance(result, list): + output = [rr for r in result for rr in [scrub(r)]] + + if not output: + return None + elif len(output) == 1: + return output[0] + else: + for i, v in enumerate(output): + if v is SQL_NULL: + null_locations.append((output, i)) + return output + else: + # ATTEMPT A DICT INTERPRETATION + try: + kv_pairs = list(result.items()) + except Exception as c: + print(c) + output = {k: vv for k, v in kv_pairs for vv in [scrub(v)] if not is_null(vv)} + if isinstance(result, dict) or output: + for k, v in output.items(): + if v is SQL_NULL: + null_locations.append((output, k)) + return output + return scrub(list(result)) + + +def _chunk(values, size): + acc = [] + for v in values: + acc.append(v) + if len(acc) == size: + yield acc + acc = [] + if acc: + yield acc + + +def to_lambda(tokens): + params, op, expr = list(tokens) + return Call("lambda", [expr], {"params": list(params)}) + + +def to_json_operator(tokens): + # ARRANGE INTO {op: params} FORMAT + length = len(tokens.tokens) + if length == 2: + if tokens.tokens[1].type.parser_name == "cast": + return Call("cast", list(tokens), {}) + # UNARY OPERATOR + op = tokens.tokens[0].type.parser_name + if op == "neg" and is_number(tokens[1]): + return -tokens[1] + return Call(op, [tokens[1]], {}) + elif length == 5: + # TRINARY OPERATOR + return Call( + tokens.tokens[1].type.parser_name, [tokens[0], tokens[2], tokens[4]], {} + ) + + op = tokens[1] + if not isinstance(op, text): + op = op.type.parser_name + op = binary_ops.get(op, op) + if op == "eq": + if tokens[2] is SQL_NULL: + return Call("missing", tokens[0], {}) + elif tokens[0] is SQL_NULL: + return Call("missing", tokens[2], {}) + elif op == "neq": + if tokens[2] is SQL_NULL: + return Call("exists", tokens[0], {}) + elif tokens[0] is SQL_NULL: + return Call("exists", tokens[2], {}) + elif op == "eq!": + if tokens[2] is SQL_NULL: + return Call("missing", tokens[0], {}) + elif tokens[0] is SQL_NULL: + return Call("missing", tokens[2], {}) + elif op == "ne!": + if tokens[2] is SQL_NULL: + return Call("exists", tokens[0], {}) + elif tokens[0] is SQL_NULL: + return Call("exists", tokens[2], {}) + elif op == "is": + if tokens[2] is SQL_NULL: + return Call("missing", tokens[0], {}) + else: + return Call("exists", tokens[0], {}) + elif op == "is_not": + if tokens[2] is SQL_NULL: + return Call("exists", tokens[0], {}) + else: + return Call("missing", tokens[0], {}) + + operands = [tokens[0], tokens[2]] + binary_op = Call(op, operands, {}) + + if op in {"add", "mul", "and", "or"}: + # ASSOCIATIVE OPERATORS + acc = [] + for operand in operands: + while isinstance(operand, ParseResults) and isinstance(operand.type, Group): + # PARENTHESES CAUSE EXTRA GROUP LAYERS + operand = operand[0] + if isinstance(operand, ParseResults) and isinstance( + operand.type, Forward + ): + operand = operand[0] + + if isinstance(operand, Call) and operand.op == op: + acc.extend(operand.args) + elif isinstance(operand, list): + acc.append(operand) + elif isinstance(operand, dict) and operand.get(op): + acc.extend(operand.get(op)) + else: + acc.append(operand) + binary_op = Call(op, acc, {}) + return binary_op + + +def to_offset(tokens): + expr, offset = tokens.tokens + return Call("get", [expr, offset], {}) + + +def to_window_mod(tokens): + expr, window = tokens.tokens + return Call("value", [expr], {**window}) + + +def to_tuple_call(tokens): + # IS THIS ONE VALUE IN (), OR MANY? + tokens = list(tokens) + if len(tokens) == 1: + return [tokens[0]] + if all(isinstance(r, number_types) for r in tokens): + return [tokens] + if all( + isinstance(r, number_types) or (is_data(r) and "literal" in r.keys()) + for r in tokens + ): + candidate = {"literal": [r["literal"] if is_data(r) else r for r in tokens]} + return candidate + + return [tokens] + + +binary_ops = { + "::": "cast", + "COLLATE": "collate", + "||": "concat", + "*": "mul", + "/": "div", + "%": "mod", + "+": "add", + "-": "sub", + "&": "binary_and", + "|": "binary_or", + "<": "lt", + "<=": "lte", + ">": "gt", + ">=": "gte", + "=": "eq", + "==": "eq", + "is distinct from": "eq!", # https://sparkbyexamples.com/apache-hive/hive-relational-arithmetic-logical-operators/ + "is_distinct_from": "eq!", + "is not distinct from": "ne!", + "is_not_distinct_from": "ne!", + "<=>": "eq!", # https://sparkbyexamples.com/apache-hive/hive-relational-arithmetic-logical-operators/ + "!=": "neq", + "<>": "neq", + "not in": "nin", + "in": "in", + "is_not": "neq", + "is": "eq", + "similar_to": "similar_to", + "like": "like", + "rlike": "rlike", + "not like": "not_like", + "not_like": "not_like", + "not rlike": "not_rlike", + "not_rlike": "not_rlike", + "not_simlilar_to": "not_similar_to", + "or": "or", + "and": "and", + "->": "lambda", + "union": "union", + "union_all": "union_all", + "union all": "union_all", + "except": "except", + "minus": "minus", + "intersect": "intersect", +} + +is_set_op = ("union", "union_all", "except", "minus", "intersect") + + +def to_trim_call(tokens): + frum = tokens["from"] + if not frum: + return Call("trim", [tokens["chars"]], {"direction": tokens["direction"]}) + return Call( + "trim", + [frum], + {"characters": tokens["chars"], "direction": tokens["direction"]}, + ) + + +def to_json_call(tokens): + # ARRANGE INTO {op: params} FORMAT + op = tokens["op"].lower() + op = binary_ops.get(op, op) + params = tokens["params"] + if isinstance(params, (dict, str, int, Call)): + args = [params] + else: + args = list(params) + + kwargs = {k: v for k, v in tokens.items() if k not in ("op", "params")} + + return ParseResults( + tokens.type, + tokens.start, + tokens.end, + [Call(op, args, kwargs)], + tokens.failures, + ) + + +def to_interval_call(tokens): + # ARRANGE INTO {interval: [amount, type]} FORMAT + params = tokens["params"] + if not params: + params = {} + if params.length() == 2: + return Call("interval", params, {}) + + return Call("add", [Call("interval", p, {}) for p in _chunk(params, size=2)], {}) + + +def to_case_call(tokens): + cases = list(tokens["case"]) + elze = tokens["else"] + if elze != None: + cases.append(elze) + return Call("case", cases, {}) + + +def to_switch_call(tokens): + # CONVERT TO CLASSIC CASE STATEMENT + value = tokens["value"] + acc = [] + for c in list(tokens["case"]): + acc.append(Call("when", [Call("eq", [value] + c.args, {})], c.kwargs)) + elze = tokens["else"] + if elze != None: + acc.append(elze) + return Call("case", acc, {}) + + +def to_when_call(tokens): + tok = tokens + return Call("when", [tok["when"]], {"then": tok["then"]}) + + +def to_join_call(tokens): + op = " ".join(tokens["op"]) + if tokens["join"]["name"]: + output = {op: { + "name": tokens["join"]["name"], + "value": tokens["join"]["value"], + }} + else: + output = {op: tokens["join"]} + + output["on"] = tokens["on"] + output["using"] = tokens["using"] + return output + + +def to_expression_call(tokens): + if set(tokens.keys()) & {"over", "within", "filter"}: + return + + return ParseResults( + tokens.type, + tokens.start, + tokens.end, + listwrap(tokens["value"]), + tokens.failures, + ) + + +def to_over(tokens): + if not tokens: + return {} + + +def to_alias(tokens): + cols = tokens["col"] + name = tokens["name"] + if cols: + return {name: cols} + return name + + +def to_top_clause(tokens): + value = tokens["value"] + if not value: + return None + + value = value.value() + if tokens["ties"]: + output = {} + output["ties"] = True + if tokens["percent"]: + output["percent"] = value + else: + output["value"] = value + return output + elif tokens["percent"]: + return {"percent": value} + else: + return [value] + + +def to_row(tokens): + columns = list(tokens) + if len(columns) > 1: + return {"select": [{"value": v[0]} for v in columns]} + else: + return {"select": {"value": columns[0]}} + + +def get_literal(value): + if isinstance(value, (int, float)): + return value + elif isinstance(value, Call): + return + elif value is SQL_NULL: + return value + elif "literal" in value: + return value["literal"] + + +def to_values(tokens): + rows = list(tokens) + if len(rows) > 1: + values = [ + [get_literal(s["value"]) for s in listwrap(row["select"])] for row in rows + ] + if all(flatten(values)): + return {"from": {"literal": values}} + return {"union_all": list(tokens)} + else: + return rows + + +def to_stack(tokens): + width = tokens["width"] + args = listwrap(tokens["args"]) + return Call("stack", args, {"width": width}) + + +def to_array(tokens): + types = list(tokens["type"]) + args = list(tokens["args"]) + output = Call("create_array", args, {}) + if types: + output = Call("cast", [output, Call("array", types, {})], {}) + return output + + +def to_map(tokens): + keys = tokens["keys"] + values = tokens["values"] + return Call("create_map", [keys, values], {}) + + +def to_struct(tokens): + types = list(tokens["types"]) + args = list(d for a in tokens["args"] for d in [a if a["name"] else a["value"]]) + + output = Call("create_struct", args, {}) + if types: + output = Call("cast", [output, Call("struct", types, {})], {}) + return output + + +def to_select_call(tokens): + expr = tokens["value"] + if expr == "*": + return ["*"] + try: + call = expr[0][0] + if call.op == "value": + return {"name": tokens["name"], "value": call.args, **call.kwargs} + except: + pass + + +def to_union_call(tokens): + unions = tokens["union"] + if isinstance(unions, dict): + return unions + elif unions.type.parser_name == "unordered sql": + output = {k: v for k, v in unions.items()} # REMOVE THE Group() + else: + unions = list(unions) + sources = [unions[i] for i in range(0, len(unions), 2)] + operators = ["_".join(unions[i]) for i in range(1, len(unions), 2)] + acc = sources[0] + last_union = None + for op, so in list(zip(operators, sources[1:])): + if op == last_union and "union" in op: + acc[op] = acc[op] + [so] + else: + acc = {op: [acc, so]} + last_union = op + + if not tokens["orderby"] and not tokens["offset"] and not tokens["limit"]: + return acc + else: + output = {"from": acc} + + output["orderby"] = tokens["orderby"] + output["limit"] = tokens["limit"] + output["offset"] = tokens["offset"] + output["fetch"] = tokens["fetch"] + output["outfile"] = tokens["outfile"] + return output + + +def to_insert_call(tokens): + options = { + k: v for k, v in tokens.items() if k not in ["columns", "table", "query"] + } + query = tokens["query"] + columns = tokens["columns"] + try: + values = query["from"]["literal"] + if values: + if columns: + data = [dict(zip(columns, row)) for row in values] + return Call("insert", [tokens["table"]], {"values": data, **options}) + else: + return Call("insert", [tokens["table"]], {"values": values, **options}) + except Exception: + pass + + return Call( + "insert", [tokens["table"]], {"columns": columns, "query": query, **options} + ) + + +def to_query(tokens): + output = tokens["query"][0] + try: + output["with"] = tokens["with"] + output["with_recursive"] = tokens["with_recursive"] + + return output + except Exception as cause: + return + + +def to_table(tokens): + output = dict(tokens) + if len(list(output.keys())) > 1: + return output + else: + return output["value"] + + +def unquote(tokens): + val = tokens[0] + if val.startswith("'") and val.endswith("'"): + val = "'" + val[1:-1].replace("''", "\\'") + "'" + elif val.startswith('"') and val.endswith('"'): + val = '"' + val[1:-1].replace('""', '\\"') + '"' + elif val.startswith("`") and val.endswith("`"): + val = '"' + val[1:-1].replace("``", "`").replace('"', '\\"') + '"' + elif val.startswith("[") and val.endswith("]"): + val = '"' + val[1:-1].replace("]]", "]").replace('"', '\\"') + '"' + elif val.startswith("+"): + val = val[1:] + un = ast.literal_eval(val).replace(".", "\\.") + return un + + +def to_string(tokens): + val = tokens[0] + val = "'" + val[1:-1].replace("''", "\\'") + "'" + return {"literal": ast.literal_eval(val)} + + +# NUMBERS +real_num = ( + Regex(r"[+-]?(\d+\.\d*|\.\d+)([eE][+-]?\d+)?").set_parser_name("float") + / (lambda t: float(t[0])) +) + + +def parse_int(tokens): + if "e" in tokens[0].lower(): + return int(float(tokens[0])) + else: + return int(tokens[0]) + + +int_num = Regex(r"[+-]?\d+([eE]\+?\d+)?").set_parser_name("int") / parse_int +hex_num = ( + Regex(r"0x[0-9a-fA-F]+").set_parser_name("hex") / (lambda t: {"hex": t[0][2:]}) +) + +# STRINGS +ansi_string = Regex(r"\'(\'\'|[^'])*\'") / to_string +mysql_doublequote_string = Regex(r'\"(\"\"|[^"])*\"') / to_string + +# BASIC IDENTIFIERS +ansi_ident = Regex(r'\"(\"\"|[^"])*\"') / unquote +mysql_backtick_ident = Regex(r"\`(\`\`|[^`])*\`") / unquote +sqlserver_ident = Regex(r"\[(\]\]|[^\]])*\]") / unquote diff --git a/aquery_parser/windows.py b/aquery_parser/windows.py new file mode 100644 index 0000000..defc2c4 --- /dev/null +++ b/aquery_parser/windows.py @@ -0,0 +1,107 @@ +# encoding: utf-8 +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Contact: Kyle Lahnakoski (kyle@lahnakoski.com) +# + +from __future__ import absolute_import, division, unicode_literals + +from mo_parsing.infix import delimited_list + +from aquery_parser.keywords import * +from aquery_parser.utils import * + + +# https://docs.microsoft.com/en-us/sql/t-sql/queries/select-over-clause-transact-sql?view=sql-server-ver15 + + +def _to_bound_call(tokens): + zero = tokens["zero"] + if zero: + return {"min": 0, "max": 0} + + direction = scrub(tokens["direction"]) + limit = scrub(tokens["limit"]) + if direction == "preceding": + if limit == "unbounded": + return {"max": 0} + elif is_data(limit): + return {"min": {"neg": limit}, "max": 0} + else: + return {"min": -limit, "max": 0} + else: # following + if limit == "unbounded": + return {"min": 0} + elif is_data(limit): + return {"min": {"neg": limit}, "max": 0} + else: + return {"min": 0, "max": limit} + + +def _to_between_call(tokens): + minn = scrub(tokens["min"]) + maxx = scrub(tokens["max"]) + + if maxx.get("max") == 0: + # following + return { + "min": minn.get("min"), + "max": maxx.get("min"), + } + elif minn.get("min") == 0: + # preceding + return {"min": minn.get("max"), "max": maxx.get("max")} + else: + return { + "min": minn.get("min"), + "max": maxx.get("max"), + } + + +UNBOUNDED = keyword("unbounded") +PRECEDING = keyword("preceding") +FOLLOWING = keyword("following") +CURRENT_ROW = keyword("current row") +ROWS = keyword("rows") +RANGE = keyword("range") + + +def window(expr, var_name, sort_column): + bound_row = ( + CURRENT_ROW("zero") + | (UNBOUNDED | int_num)("limit") + (PRECEDING | FOLLOWING)("direction") + ) / _to_bound_call + bound_expr = ( + CURRENT_ROW("zero") + | (UNBOUNDED | expr)("limit") + (PRECEDING | FOLLOWING)("direction") + ) / _to_bound_call + between_row = ( + BETWEEN + bound_row("min") + AND + bound_row("max") + ) / _to_between_call + between_expr = ( + BETWEEN + bound_expr("min") + AND + bound_expr("max") + ) / _to_between_call + + row_clause = (ROWS.suppress() + (between_row | bound_row)) | ( + RANGE.suppress() + (between_expr | bound_expr) + ) + + over_clause = ( + LB + + Optional(PARTITION_BY + delimited_list(Group(expr))("partitionby")) + + Optional(ORDER_BY + delimited_list(Group(sort_column))("orderby")) + + Optional(row_clause("range")) + + RB + ) + + window_clause = Optional(( + WITHIN_GROUP + + LB + + Optional(ORDER_BY + delimited_list(Group(sort_column))("orderby")) + + RB + )("within")) + ((OVER + (over_clause | var_name) / to_over)("over")) + + return window_clause, over_clause diff --git a/csv.h b/csv.h new file mode 100644 index 0000000..c5cb5bc --- /dev/null +++ b/csv.h @@ -0,0 +1,1273 @@ +// Copyright: (2012-2015) Ben Strasser +// License: BSD-3 +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +#ifndef CSV_H +#define CSV_H + +#include +#include +#include +#include +#include +#include +#include +#ifndef CSV_IO_NO_THREAD +#include +#include +#include +#endif +#include +#include +#include +#include +#include + +namespace io{ + //////////////////////////////////////////////////////////////////////////// + // LineReader // + //////////////////////////////////////////////////////////////////////////// + + namespace error{ + struct base : std::exception{ + virtual void format_error_message()const = 0; + + const char*what()const noexcept override{ + format_error_message(); + return error_message_buffer; + } + + mutable char error_message_buffer[512]; + }; + + const int max_file_name_length = 255; + + struct with_file_name{ + with_file_name(){ + std::memset(file_name, 0, sizeof(file_name)); + } + + void set_file_name(const char*file_name){ + if(file_name != nullptr){ + // This call to strncpy has parenthesis around it + // to silence the GCC -Wstringop-truncation warning + (strncpy(this->file_name, file_name, sizeof(this->file_name))); + this->file_name[sizeof(this->file_name)-1] = '\0'; + }else{ + this->file_name[0] = '\0'; + } + } + + char file_name[max_file_name_length+1]; + }; + + struct with_file_line{ + with_file_line(){ + file_line = -1; + } + + void set_file_line(int file_line){ + this->file_line = file_line; + } + + int file_line; + }; + + struct with_errno{ + with_errno(){ + errno_value = 0; + } + + void set_errno(int errno_value){ + this->errno_value = errno_value; + } + + int errno_value; + }; + + struct can_not_open_file : + base, + with_file_name, + with_errno{ + void format_error_message()const override{ + if(errno_value != 0) + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + "Can not open file \"%s\" because \"%s\"." + , file_name, std::strerror(errno_value)); + else + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + "Can not open file \"%s\"." + , file_name); + } + }; + + struct line_length_limit_exceeded : + base, + with_file_name, + with_file_line{ + void format_error_message()const override{ + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + "Line number %d in file \"%s\" exceeds the maximum length of 2^24-1." + , file_line, file_name); + } + }; + } + + class ByteSourceBase{ + public: + virtual int read(char*buffer, int size)=0; + virtual ~ByteSourceBase(){} + }; + + namespace detail{ + + class OwningStdIOByteSourceBase : public ByteSourceBase{ + public: + explicit OwningStdIOByteSourceBase(FILE*file):file(file){ + // Tell the std library that we want to do the buffering ourself. + std::setvbuf(file, 0, _IONBF, 0); + } + + int read(char*buffer, int size){ + return std::fread(buffer, 1, size, file); + } + + ~OwningStdIOByteSourceBase(){ + std::fclose(file); + } + + private: + FILE*file; + }; + + class NonOwningIStreamByteSource : public ByteSourceBase{ + public: + explicit NonOwningIStreamByteSource(std::istream&in):in(in){} + + int read(char*buffer, int size){ + in.read(buffer, size); + return in.gcount(); + } + + ~NonOwningIStreamByteSource(){} + + private: + std::istream∈ + }; + + class NonOwningStringByteSource : public ByteSourceBase{ + public: + NonOwningStringByteSource(const char*str, long long size):str(str), remaining_byte_count(size){} + + int read(char*buffer, int desired_byte_count){ + int to_copy_byte_count = desired_byte_count; + if(remaining_byte_count < to_copy_byte_count) + to_copy_byte_count = remaining_byte_count; + std::memcpy(buffer, str, to_copy_byte_count); + remaining_byte_count -= to_copy_byte_count; + str += to_copy_byte_count; + return to_copy_byte_count; + } + + ~NonOwningStringByteSource(){} + + private: + const char*str; + long long remaining_byte_count; + }; + + #ifndef CSV_IO_NO_THREAD + class AsynchronousReader{ + public: + void init(std::unique_ptrarg_byte_source){ + std::unique_lockguard(lock); + byte_source = std::move(arg_byte_source); + desired_byte_count = -1; + termination_requested = false; + worker = std::thread( + [&]{ + std::unique_lockguard(lock); + try{ + for(;;){ + read_requested_condition.wait( + guard, + [&]{ + return desired_byte_count != -1 || termination_requested; + } + ); + if(termination_requested) + return; + + read_byte_count = byte_source->read(buffer, desired_byte_count); + desired_byte_count = -1; + if(read_byte_count == 0) + break; + read_finished_condition.notify_one(); + } + }catch(...){ + read_error = std::current_exception(); + } + read_finished_condition.notify_one(); + } + ); + } + + bool is_valid()const{ + return byte_source != nullptr; + } + + void start_read(char*arg_buffer, int arg_desired_byte_count){ + std::unique_lockguard(lock); + buffer = arg_buffer; + desired_byte_count = arg_desired_byte_count; + read_byte_count = -1; + read_requested_condition.notify_one(); + } + + int finish_read(){ + std::unique_lockguard(lock); + read_finished_condition.wait( + guard, + [&]{ + return read_byte_count != -1 || read_error; + } + ); + if(read_error) + std::rethrow_exception(read_error); + else + return read_byte_count; + } + + ~AsynchronousReader(){ + if(byte_source != nullptr){ + { + std::unique_lockguard(lock); + termination_requested = true; + } + read_requested_condition.notify_one(); + worker.join(); + } + } + + private: + std::unique_ptrbyte_source; + + std::thread worker; + + bool termination_requested; + std::exception_ptr read_error; + char*buffer; + int desired_byte_count; + int read_byte_count; + + std::mutex lock; + std::condition_variable read_finished_condition; + std::condition_variable read_requested_condition; + }; + #endif + + class SynchronousReader{ + public: + void init(std::unique_ptrarg_byte_source){ + byte_source = std::move(arg_byte_source); + } + + bool is_valid()const{ + return byte_source != nullptr; + } + + void start_read(char*arg_buffer, int arg_desired_byte_count){ + buffer = arg_buffer; + desired_byte_count = arg_desired_byte_count; + } + + int finish_read(){ + return byte_source->read(buffer, desired_byte_count); + } + private: + std::unique_ptrbyte_source; + char*buffer; + int desired_byte_count; + }; + } + + class LineReader{ + private: + static const int block_len = 1<<20; + std::unique_ptrbuffer; // must be constructed before (and thus destructed after) the reader! + #ifdef CSV_IO_NO_THREAD + detail::SynchronousReader reader; + #else + detail::AsynchronousReader reader; + #endif + int data_begin; + int data_end; + + char file_name[error::max_file_name_length+1]; + unsigned file_line; + + static std::unique_ptr open_file(const char*file_name){ + // We open the file in binary mode as it makes no difference under *nix + // and under Windows we handle \r\n newlines ourself. + FILE*file = std::fopen(file_name, "rb"); + if(file == 0){ + int x = errno; // store errno as soon as possible, doing it after constructor call can fail. + error::can_not_open_file err; + err.set_errno(x); + err.set_file_name(file_name); + throw err; + } + return std::unique_ptr(new detail::OwningStdIOByteSourceBase(file)); + } + + void init(std::unique_ptrbyte_source){ + file_line = 0; + + buffer = std::unique_ptr(new char[3*block_len]); + data_begin = 0; + data_end = byte_source->read(buffer.get(), 2*block_len); + + // Ignore UTF-8 BOM + if(data_end >= 3 && buffer[0] == '\xEF' && buffer[1] == '\xBB' && buffer[2] == '\xBF') + data_begin = 3; + + if(data_end == 2*block_len){ + reader.init(std::move(byte_source)); + reader.start_read(buffer.get() + 2*block_len, block_len); + } + } + + public: + LineReader() = delete; + LineReader(const LineReader&) = delete; + LineReader&operator=(const LineReader&) = delete; + + explicit LineReader(const char*file_name){ + set_file_name(file_name); + init(open_file(file_name)); + } + + explicit LineReader(const std::string&file_name){ + set_file_name(file_name.c_str()); + init(open_file(file_name.c_str())); + } + + LineReader(const char*file_name, std::unique_ptrbyte_source){ + set_file_name(file_name); + init(std::move(byte_source)); + } + + LineReader(const std::string&file_name, std::unique_ptrbyte_source){ + set_file_name(file_name.c_str()); + init(std::move(byte_source)); + } + + LineReader(const char*file_name, const char*data_begin, const char*data_end){ + set_file_name(file_name); + init(std::unique_ptr(new detail::NonOwningStringByteSource(data_begin, data_end-data_begin))); + } + + LineReader(const std::string&file_name, const char*data_begin, const char*data_end){ + set_file_name(file_name.c_str()); + init(std::unique_ptr(new detail::NonOwningStringByteSource(data_begin, data_end-data_begin))); + } + + LineReader(const char*file_name, FILE*file){ + set_file_name(file_name); + init(std::unique_ptr(new detail::OwningStdIOByteSourceBase(file))); + } + + LineReader(const std::string&file_name, FILE*file){ + set_file_name(file_name.c_str()); + init(std::unique_ptr(new detail::OwningStdIOByteSourceBase(file))); + } + + LineReader(const char*file_name, std::istream&in){ + set_file_name(file_name); + init(std::unique_ptr(new detail::NonOwningIStreamByteSource(in))); + } + + LineReader(const std::string&file_name, std::istream&in){ + set_file_name(file_name.c_str()); + init(std::unique_ptr(new detail::NonOwningIStreamByteSource(in))); + } + + void set_file_name(const std::string&file_name){ + set_file_name(file_name.c_str()); + } + + void set_file_name(const char*file_name){ + if(file_name != nullptr){ + strncpy(this->file_name, file_name, sizeof(this->file_name)); + this->file_name[sizeof(this->file_name)-1] = '\0'; + }else{ + this->file_name[0] = '\0'; + } + } + + const char*get_truncated_file_name()const{ + return file_name; + } + + void set_file_line(unsigned file_line){ + this->file_line = file_line; + } + + unsigned get_file_line()const{ + return file_line; + } + + char*next_line(){ + if(data_begin == data_end) + return nullptr; + + ++file_line; + + assert(data_begin < data_end); + assert(data_end <= block_len*2); + + if(data_begin >= block_len){ + std::memcpy(buffer.get(), buffer.get()+block_len, block_len); + data_begin -= block_len; + data_end -= block_len; + if(reader.is_valid()) + { + data_end += reader.finish_read(); + std::memcpy(buffer.get()+block_len, buffer.get()+2*block_len, block_len); + reader.start_read(buffer.get() + 2*block_len, block_len); + } + } + + int line_end = data_begin; + while(line_end != data_end && buffer[line_end] != '\n'){ + ++line_end; + } + + if(line_end - data_begin + 1 > block_len){ + error::line_length_limit_exceeded err; + err.set_file_name(file_name); + err.set_file_line(file_line); + throw err; + } + + if(line_end != data_end && buffer[line_end] == '\n'){ + buffer[line_end] = '\0'; + }else{ + // some files are missing the newline at the end of the + // last line + ++data_end; + buffer[line_end] = '\0'; + } + + // handle windows \r\n-line breaks + if(line_end != data_begin && buffer[line_end-1] == '\r') + buffer[line_end-1] = '\0'; + + char*ret = buffer.get() + data_begin; + data_begin = line_end+1; + return ret; + } + }; + + + //////////////////////////////////////////////////////////////////////////// + // CSV // + //////////////////////////////////////////////////////////////////////////// + + namespace error{ + const int max_column_name_length = 63; + struct with_column_name{ + with_column_name(){ + std::memset(column_name, 0, max_column_name_length+1); + } + + void set_column_name(const char*column_name){ + if(column_name != nullptr){ + std::strncpy(this->column_name, column_name, max_column_name_length); + this->column_name[max_column_name_length] = '\0'; + }else{ + this->column_name[0] = '\0'; + } + } + + char column_name[max_column_name_length+1]; + }; + + + const int max_column_content_length = 63; + + struct with_column_content{ + with_column_content(){ + std::memset(column_content, 0, max_column_content_length+1); + } + + void set_column_content(const char*column_content){ + if(column_content != nullptr){ + std::strncpy(this->column_content, column_content, max_column_content_length); + this->column_content[max_column_content_length] = '\0'; + }else{ + this->column_content[0] = '\0'; + } + } + + char column_content[max_column_content_length+1]; + }; + + + struct extra_column_in_header : + base, + with_file_name, + with_column_name{ + void format_error_message()const override{ + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + R"(Extra column "%s" in header of file "%s".)" + , column_name, file_name); + } + }; + + struct missing_column_in_header : + base, + with_file_name, + with_column_name{ + void format_error_message()const override{ + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + R"(Missing column "%s" in header of file "%s".)" + , column_name, file_name); + } + }; + + struct duplicated_column_in_header : + base, + with_file_name, + with_column_name{ + void format_error_message()const override{ + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + R"(Duplicated column "%s" in header of file "%s".)" + , column_name, file_name); + } + }; + + struct header_missing : + base, + with_file_name{ + void format_error_message()const override{ + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + "Header missing in file \"%s\"." + , file_name); + } + }; + + struct too_few_columns : + base, + with_file_name, + with_file_line{ + void format_error_message()const override{ + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + "Too few columns in line %d in file \"%s\"." + , file_line, file_name); + } + }; + + struct too_many_columns : + base, + with_file_name, + with_file_line{ + void format_error_message()const override{ + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + "Too many columns in line %d in file \"%s\"." + , file_line, file_name); + } + }; + + struct escaped_string_not_closed : + base, + with_file_name, + with_file_line{ + void format_error_message()const override{ + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + "Escaped string was not closed in line %d in file \"%s\"." + , file_line, file_name); + } + }; + + struct integer_must_be_positive : + base, + with_file_name, + with_file_line, + with_column_name, + with_column_content{ + void format_error_message()const override{ + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + R"(The integer "%s" must be positive or 0 in column "%s" in file "%s" in line "%d".)" + , column_content, column_name, file_name, file_line); + } + }; + + struct no_digit : + base, + with_file_name, + with_file_line, + with_column_name, + with_column_content{ + void format_error_message()const override{ + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + R"(The integer "%s" contains an invalid digit in column "%s" in file "%s" in line "%d".)" + , column_content, column_name, file_name, file_line); + } + }; + + struct integer_overflow : + base, + with_file_name, + with_file_line, + with_column_name, + with_column_content{ + void format_error_message()const override{ + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + R"(The integer "%s" overflows in column "%s" in file "%s" in line "%d".)" + , column_content, column_name, file_name, file_line); + } + }; + + struct integer_underflow : + base, + with_file_name, + with_file_line, + with_column_name, + with_column_content{ + void format_error_message()const override{ + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + R"(The integer "%s" underflows in column "%s" in file "%s" in line "%d".)" + , column_content, column_name, file_name, file_line); + } + }; + + struct invalid_single_character : + base, + with_file_name, + with_file_line, + with_column_name, + with_column_content{ + void format_error_message()const override{ + std::snprintf(error_message_buffer, sizeof(error_message_buffer), + R"(The content "%s" of column "%s" in file "%s" in line "%d" is not a single character.)" + , column_content, column_name, file_name, file_line); + } + }; + } + + using ignore_column = unsigned int; + static const ignore_column ignore_no_column = 0; + static const ignore_column ignore_extra_column = 1; + static const ignore_column ignore_missing_column = 2; + + template + struct trim_chars{ + private: + constexpr static bool is_trim_char(char){ + return false; + } + + template + constexpr static bool is_trim_char(char c, char trim_char, OtherTrimChars...other_trim_chars){ + return c == trim_char || is_trim_char(c, other_trim_chars...); + } + + public: + static void trim(char*&str_begin, char*&str_end){ + while(str_begin != str_end && is_trim_char(*str_begin, trim_char_list...)) + ++str_begin; + while(str_begin != str_end && is_trim_char(*(str_end-1), trim_char_list...)) + --str_end; + *str_end = '\0'; + } + }; + + + struct no_comment{ + static bool is_comment(const char*){ + return false; + } + }; + + template + struct single_line_comment{ + private: + constexpr static bool is_comment_start_char(char){ + return false; + } + + template + constexpr static bool is_comment_start_char(char c, char comment_start_char, OtherCommentStartChars...other_comment_start_chars){ + return c == comment_start_char || is_comment_start_char(c, other_comment_start_chars...); + } + + public: + + static bool is_comment(const char*line){ + return is_comment_start_char(*line, comment_start_char_list...); + } + }; + + struct empty_line_comment{ + static bool is_comment(const char*line){ + if(*line == '\0') + return true; + while(*line == ' ' || *line == '\t'){ + ++line; + if(*line == 0) + return true; + } + return false; + } + }; + + template + struct single_and_empty_line_comment{ + static bool is_comment(const char*line){ + return single_line_comment::is_comment(line) || empty_line_comment::is_comment(line); + } + }; + + template + struct no_quote_escape{ + static const char*find_next_column_end(const char*col_begin){ + while(*col_begin != sep && *col_begin != '\0') + ++col_begin; + return col_begin; + } + + static void unescape(char*&, char*&){ + + } + }; + + template + struct double_quote_escape{ + static const char*find_next_column_end(const char*col_begin){ + while(*col_begin != sep && *col_begin != '\0') + if(*col_begin != quote) + ++col_begin; + else{ + do{ + ++col_begin; + while(*col_begin != quote){ + if(*col_begin == '\0') + throw error::escaped_string_not_closed(); + ++col_begin; + } + ++col_begin; + }while(*col_begin == quote); + } + return col_begin; + } + + static void unescape(char*&col_begin, char*&col_end){ + if(col_end - col_begin >= 2){ + if(*col_begin == quote && *(col_end-1) == quote){ + ++col_begin; + --col_end; + char*out = col_begin; + for(char*in = col_begin; in!=col_end; ++in){ + if(*in == quote && (in+1) != col_end && *(in+1) == quote){ + ++in; + } + *out = *in; + ++out; + } + col_end = out; + *col_end = '\0'; + } + } + + } + }; + + struct throw_on_overflow{ + template + static void on_overflow(T&){ + throw error::integer_overflow(); + } + + template + static void on_underflow(T&){ + throw error::integer_underflow(); + } + }; + + struct ignore_overflow{ + template + static void on_overflow(T&){} + + template + static void on_underflow(T&){} + }; + + struct set_to_max_on_overflow{ + template + static void on_overflow(T&x){ + // using (std::numeric_limits::max) instead of std::numeric_limits::max + // to make code including windows.h with its max macro happy + x = (std::numeric_limits::max)(); + } + + template + static void on_underflow(T&x){ + x = (std::numeric_limits::min)(); + } + }; + + + namespace detail{ + template + void chop_next_column( + char*&line, char*&col_begin, char*&col_end + ){ + assert(line != nullptr); + + col_begin = line; + // the col_begin + (... - col_begin) removes the constness + col_end = col_begin + (quote_policy::find_next_column_end(col_begin) - col_begin); + + if(*col_end == '\0'){ + line = nullptr; + }else{ + *col_end = '\0'; + line = col_end + 1; + } + } + + template + void parse_line( + char*line, + char**sorted_col, + const std::vector&col_order + ){ + for (int i : col_order) { + if(line == nullptr) + throw ::io::error::too_few_columns(); + char*col_begin, *col_end; + chop_next_column(line, col_begin, col_end); + + if (i != -1) { + trim_policy::trim(col_begin, col_end); + quote_policy::unescape(col_begin, col_end); + + sorted_col[i] = col_begin; + } + } + if(line != nullptr) + throw ::io::error::too_many_columns(); + } + + template + void parse_header_line( + char*line, + std::vector&col_order, + const std::string*col_name, + ignore_column ignore_policy + ){ + col_order.clear(); + + bool found[column_count]; + std::fill(found, found + column_count, false); + while(line){ + char*col_begin,*col_end; + chop_next_column(line, col_begin, col_end); + + trim_policy::trim(col_begin, col_end); + quote_policy::unescape(col_begin, col_end); + + for(unsigned i=0; i + void parse(char*col, char &x){ + if(!*col) + throw error::invalid_single_character(); + x = *col; + ++col; + if(*col) + throw error::invalid_single_character(); + } + + template + void parse(char*col, std::string&x){ + x = col; + } + + template + void parse(char*col, const char*&x){ + x = col; + } + + template + void parse(char*col, char*&x){ + x = col; + } + + template + void parse_unsigned_integer(const char*col, T&x){ + x = 0; + while(*col != '\0'){ + if('0' <= *col && *col <= '9'){ + T y = *col - '0'; + if(x > ((std::numeric_limits::max)()-y)/10){ + overflow_policy::on_overflow(x); + return; + } + x = 10*x+y; + }else + throw error::no_digit(); + ++col; + } + } + + templatevoid parse(char*col, unsigned char &x) + {parse_unsigned_integer(col, x);} + templatevoid parse(char*col, unsigned short &x) + {parse_unsigned_integer(col, x);} + templatevoid parse(char*col, unsigned int &x) + {parse_unsigned_integer(col, x);} + templatevoid parse(char*col, unsigned long &x) + {parse_unsigned_integer(col, x);} + templatevoid parse(char*col, unsigned long long &x) + {parse_unsigned_integer(col, x);} + + template + void parse_signed_integer(const char*col, T&x){ + if(*col == '-'){ + ++col; + + x = 0; + while(*col != '\0'){ + if('0' <= *col && *col <= '9'){ + T y = *col - '0'; + if(x < ((std::numeric_limits::min)()+y)/10){ + overflow_policy::on_underflow(x); + return; + } + x = 10*x-y; + }else + throw error::no_digit(); + ++col; + } + return; + }else if(*col == '+') + ++col; + parse_unsigned_integer(col, x); + } + + templatevoid parse(char*col, signed char &x) + {parse_signed_integer(col, x);} + templatevoid parse(char*col, signed short &x) + {parse_signed_integer(col, x);} + templatevoid parse(char*col, signed int &x) + {parse_signed_integer(col, x);} + templatevoid parse(char*col, signed long &x) + {parse_signed_integer(col, x);} + templatevoid parse(char*col, signed long long &x) + {parse_signed_integer(col, x);} + + template + void parse_float(const char*col, T&x){ + bool is_neg = false; + if(*col == '-'){ + is_neg = true; + ++col; + }else if(*col == '+') + ++col; + + x = 0; + while('0' <= *col && *col <= '9'){ + int y = *col - '0'; + x *= 10; + x += y; + ++col; + } + + if(*col == '.'|| *col == ','){ + ++col; + T pos = 1; + while('0' <= *col && *col <= '9'){ + pos /= 10; + int y = *col - '0'; + ++col; + x += y*pos; + } + } + + if(*col == 'e' || *col == 'E'){ + ++col; + int e; + + parse_signed_integer(col, e); + + if(e != 0){ + T base; + if(e < 0){ + base = T(0.1); + e = -e; + }else{ + base = T(10); + } + + while(e != 1){ + if((e & 1) == 0){ + base = base*base; + e >>= 1; + }else{ + x *= base; + --e; + } + } + x *= base; + } + }else{ + if(*col != '\0') + throw error::no_digit(); + } + + if(is_neg) + x = -x; + } + + template void parse(char*col, float&x) { parse_float(col, x); } + template void parse(char*col, double&x) { parse_float(col, x); } + template void parse(char*col, long double&x) { parse_float(col, x); } + + template + void parse(char*col, T&x){ + // Mute unused variable compiler warning + (void)col; + (void)x; + // GCC evalutes "false" when reading the template and + // "sizeof(T)!=sizeof(T)" only when instantiating it. This is why + // this strange construct is used. + static_assert(sizeof(T)!=sizeof(T), + "Can not parse this type. Only buildin integrals, floats, char, char*, const char* and std::string are supported"); + } + + } + + template, + class quote_policy = no_quote_escape<','>, + class overflow_policy = throw_on_overflow, + class comment_policy = no_comment + > + class CSVReader{ + private: + LineReader in; + + char*row[column_count]; + std::string column_names[column_count]; + + std::vectorcol_order; + + template + void set_column_names(std::string s, ColNames...cols){ + column_names[column_count-sizeof...(ColNames)-1] = std::move(s); + set_column_names(std::forward(cols)...); + } + + void set_column_names(){} + + + public: + CSVReader() = delete; + CSVReader(const CSVReader&) = delete; + CSVReader&operator=(const CSVReader&); + + template + explicit CSVReader(Args&&...args):in(std::forward(args)...){ + std::fill(row, row+column_count, nullptr); + col_order.resize(column_count); + for(unsigned i=0; i + void read_header(ignore_column ignore_policy, ColNames...cols){ + static_assert(sizeof...(ColNames)>=column_count, "not enough column names specified"); + static_assert(sizeof...(ColNames)<=column_count, "too many column names specified"); + try{ + set_column_names(std::forward(cols)...); + + char*line; + do{ + line = in.next_line(); + if(!line) + throw error::header_missing(); + }while(comment_policy::is_comment(line)); + + detail::parse_header_line + + (line, col_order, column_names, ignore_policy); + }catch(error::with_file_name&err){ + err.set_file_name(in.get_truncated_file_name()); + throw; + } + } + + template + void set_header(ColNames...cols){ + static_assert(sizeof...(ColNames)>=column_count, + "not enough column names specified"); + static_assert(sizeof...(ColNames)<=column_count, + "too many column names specified"); + set_column_names(std::forward(cols)...); + std::fill(row, row+column_count, nullptr); + col_order.resize(column_count); + for(unsigned i=0; i + void parse_helper(std::size_t r, T&t, ColType&...cols){ + if(row[r]){ + try{ + try{ + ::io::detail::parse(row[r], t); + }catch(error::with_column_content&err){ + err.set_column_content(row[r]); + throw; + } + }catch(error::with_column_name&err){ + err.set_column_name(column_names[r].c_str()); + throw; + } + } + parse_helper(r+1, cols...); + } + + + public: + template + bool read_row(ColType& ...cols){ + static_assert(sizeof...(ColType)>=column_count, + "not enough columns specified"); + static_assert(sizeof...(ColType)<=column_count, + "too many columns specified"); + try{ + try{ + + char*line; + do{ + line = in.next_line(); + if(!line) + return false; + }while(comment_policy::is_comment(line)); + + detail::parse_line + (line, row, col_order); + + parse_helper(0, cols...); + }catch(error::with_file_name&err){ + err.set_file_name(in.get_truncated_file_name()); + throw; + } + }catch(error::with_file_line&err){ + err.set_file_line(in.get_file_line()); + throw; + } + + return true; + } + }; +} +#endif + diff --git a/dbconn.py b/dbconn.py new file mode 100644 index 0000000..443fd23 --- /dev/null +++ b/dbconn.py @@ -0,0 +1,45 @@ +import mariadb + +class dbconn: + def __init__(self) -> None: + self.db = None + self.cur = None + def clear(self): + drop_all = f''' + SET FOREIGN_KEY_CHECKS = 0; + + SET @tables = NULL; + + SELECT GROUP_CONCAT('`', table_schema, '`.`', table_name, '`') INTO @tables + FROM information_schema.tables + WHERE table_schema = '{self.db.database}'; + + SET @tables = CONCAT('DROP TABLE ', @tables); + PREPARE stmt FROM @tables; + EXECUTE stmt; + DEALLOCATE PREPARE stmt; + SET FOREIGN_KEY_CHECKS = 1; + ''' + if self.db: + if not self.cur: + self.cur = self.db.cursor() + self.cur.execute(drop_all) + + def connect(self, ip, password = '0508', user = 'root', db = 'db', port = 3306): + try: + self.db = mariadb.connect( + user = user, + password = password, + host = ip, + port = port, + database = db + ) + self.cur = self.db.cursor() + + except mariadb.Error as e: + print(e) + self.db = None + self.cur = None + + def exec(self, sql, params = None): + self.cur.execute(sql) \ No newline at end of file diff --git a/docs/arch.ai b/docs/arch.ai new file mode 100644 index 0000000..c203c6a --- /dev/null +++ b/docs/arch.ai @@ -0,0 +1,5650 @@ +%PDF-1.6 % +1 0 obj <>/OCGs[6 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + arch + + + 2022-02-21T05:21:19-05:00 + 2022-02-21T05:21:19-05:00 + 2022-02-21T05:21:19-04:00 + Adobe Illustrator 26.0 (Windows) + + + + 256 + 200 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAyAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXlcX5pOv5q3WlSanbPoam402LSkMJu1vLOBLlrjiv73g/72H4vh5IKbnFV7eYfOsHkSD8w5dWEk UkEOpS+XVt4fqws5ir+ikoX6z6wif7ZkKl/2AMVTxfzLi9K1lksfTjuPMF55fdjNXgLMXJNz9jfl 9U+x25faNN1UgT8/dEk069vobe3uVi06fVbK3t76OadordkUx3caIfqkrCVWCnltXeoIxVNrn8zN TsGu7PVNB+q62I7SXS9PW69UXX165NqieqIgEeNwplAVuIPU4qj7381PJdn5qi0GfWNNSsFy91cP fQJ6FxbTQxC1kQnaR/Vc0LA/AdjvRV1l+anku881S6DBrGmvSC2e1uEvoH9e4uZpojaxoDvInpIa BifjGw2qqy/FXmFj+Zc035uy6GdTtW0aR5tKg0sND9ZS+toUuGuGC1lEb1lh+L4eSCm5xVF6H+aW s6zpOi3Fv5eWPUvMSST6VZS3qhDb26K0000ywsY1V5FVQEYmoNBuAqgLXzz5h0jzR5nl1OxafSYd R0i2uqXnMWLX9naR8beNk/eIJ5qvTh15UJqMVdH5985S65pNpYQwXUF55g1nTJ0uZhCfS08T+mit HbvRVWHmDuxI4nryCqI0789vK9015M7QfUIbG61K3ktrqO5uDDZuqOtxboAbeSQOGiUseQ7ggjFX eYfMXnxdd8oH9FR2k93fXSx6WmotwuI/0dO4F24gVU9NgHKhZNxtU0xVM9F/M+LVJbWNdOaIzaXq GozVlB9OXTLtLOW3FE+IGRmpJtsPs77KoCy/OBp4XvZdGMWlWeiWevareC4DNDHe20k8cMcfpqZX 5xcBuo77UoVU88jef7HzVJqFvCbX61p3oNN9Ru47+DhcqzR/vo1Qcx6bK602I6kb4qyvFXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FWMJ+XmhJoVnpKSTr9SvE1GK+DR/WWuVuDcs7vw4n1HZlccd1 YjbFUn1T8p/UtoLLSddu7LSLecXMehXCpdafyR/VRCg9C4MSyfEI/X4bDam2Kpgfyx0Q6wmoG8vT BFqEmrxaWZIjaLeTo6TScPT9Q+p6rEguRU7UqaqrT+WOnN5fvvLr6rqT6FeWrWMOntJAUtYTSggc w+p8AWi+oz0GKonUvKcuq+edK1y9jgFloMUx04qWaeS4uQFcyCiqscar8Iq1W+LamKpxLolrJr9t rjPILu1tLiyjQEemY7mSGVywpy5BrZab+O3gq6LRLWPX7nXFeQ3d1aW9lIhI9MR20k0qFRTlyLXL V38NvFVMMVYwn5eaHHodnpKSTr9RvU1KK/DILprlbg3LO78OJ9R2YOOO6kjbFVKP8ttIt9D0TS7K 9vbKXy9GYtM1OB4vrSoy8JFbnE8LhwByBjpsMVXT/lzo9xbapBcXd3M2sXOn3d7OzxeoZdMFuIiK RhRz+qKZNt6tTjtRVo/lxo6/V3t7u8trq11W61qC7jeL1FnvmkNxHR42QxMszJQryp+1XfFV9j+X uk2the6Qbq7ufL95BLaroczRG1hinJLLCVjWcUqQvKRuI6UxVuy8hW8F5pV3c6vqOoy6LNJNp/1t 4GCiS3ktjG3pwxllCSk1J5VAqxxVB/8AKrNDS2tYba+v7R7UX8f1iCWNZJINTuDdXEEhMbDh6lOJ UBhQfFWpxVEaX+WnluwsLywPrXdnf6XZaLdQ3DKQ1tYRSQxn4FQh2WY8iO9KAYqnGg6LPpMDwy6r e6pyI4PfNCzIqigVTDFDUe7VY9ziqZ4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FUuvNQv01BbKztopmMRmd5pmhAHLiAOMUtfwxVAJ5lmkneBH0pp40eV4l1Il1jicxyOVFvU KjqVY9iKYqst/NhuNOGp28+kTacxYLex6nygJRSzASCAp8KqSd+gxVMHuvMCIzvZ2SooLMzXkgAA 3JJNtiq71/Mf/LDZ/wDSXL/2TYq71/Mf/LDZ/wDSXL/2TYq71/Mf/LDZ/wDSXL/2TYq71/Mf/LDZ /wDSXL/2TYq71/Mf/LDZ/wDSXL/2TYq3YX99LfXFneW8UEkEUMytDM0wYTNItDyjipT0vfriqYYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUt/6aT/oz/5m4qxuX8qtHF3d 39veXCX9ws6RPKIpIolnuheen6apGXRZgxozVIZgWO1G1Sqf8gfJM/BH9YQwWkdpAQVeXaOSGaaV phMjySxyKvLgCoRQtOK0VVW/IvyktzcXdvLMty552ayJbPDbus63EfCNYo2ZY2QRgM9fS/dghaUV Z/YWi2VjbWaMzpbRJCrvuzCNQoJ9zTFVfFXYq7FXYql0H/KR33/MHaf8nbnFUxxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kpb/00n/Rn/zNxVhEHn38x7e+vY7/AMpvc2Yu 2isLiBJ4mMJnuI0LIi3nL4LdW5t6a/GlQqHniqEP5t+dykFs3ka4t9Uvba5uLS2aWd/7gFQrf6LH v6lCwJUBCpDFmVCqjIvO/wCYc3mK3gGhelo9ybco7Wd4ZByult543mYxLHRBJcK7xqOHFSvJsVek Yq7FXYq7FXYql0H/ACkd9/zB2n/J25xVMcVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdirsVdiqW/8ATSf9Gf8AzNxVMsVcQSCAaHscVeU2Olfmnd6Mkfl7zRYGSGFILq+W7OpLJfRu PrErevazGIypT90r8I9wFNQyqqWqaP8AnN6pjuvNFnZWcOpWi2V1PJHCbmFTUpSCCI+pJXi6MaO2 yqiirlVWfRvzRt9H09fMfnLT7fW31ALYyhza280jWsqW9uqRJamaR7l1YxvzUhfsNupCquq6D+cs moW1rb+bbSGP6xJN6DmBbi4tYZY2HHjZApRaK9OQBapJVgiqoW60D8+F02aPUPNumo9zbtao0XG0 pdTzFYWjm+qSMrUdUFBU9Fox5hV6zErrEiuauFAY9akDfFUBB/ykd9/zB2n/ACducVTHFXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlv/TSf9Gf/ADNxVMsVcQCCD0OxxV53 qH5HeV9RsYLG+v7+e2tbSHT7VWNoGjtrZ+cKK4tw9E6bn4ti3JgrBVC/9C/+U2uriSS8vFga8gvL S3gMMIhFvukPJYyzRq1eA24LstDyLKr4PyA8nW+h2+kW97qMSW19FqUd4JIGuDLAhSJWd4WVo05F gpXZsVWQf84++UIoo4/0hqUhiilhilZ7X1FWaEW7fGLcMaRj4AdkO6BTviqtpn5C+StN1LStQtZb sT6T6Zi5m3f1GhuPrKPKzQF+YPwclZW4fDWlcVekYql0H/KR33/MHaf8nbnFUxxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KvPNd/OXS9C83XWgalp1z6UMttbW93bBpmkluY1l3i4pREV9yrsfFRVaq oaz/AD78r3mvw6Nb6bqUk8rxRGVY4XjElwE9ECSOV42RjIF5huNadVPLFUVH+cuiT2NhqcFs0em3 tvNdKb2VLS5dYZ2tylvFJWORgycn5yoqIQzNStFUKPz88rm2nuf0Vqvow2wvFb07b95EblLT4B9Y 6+q52amyk/y1VUrr/nIbydbT31vJp+pG40yH19RiVLUmBRKsDB/9IpySVwpAJ/mFV+LFWc+UfMae Y9Ag1hLc2qXDzosJkSUgQzvCDziLRty9Pl8DFd9iRviqYXuo6fYxiS9uYrWNjRWmdYwT4AsRXFUG NfSX/eKxvLwdSyReitOxD3Rt1cH/ACScVQd3p2s6lMk0kEOnuqlVmW5uXk4k14vHAbUHf/iw0xVT XydM5D3Gt6iGr8UdtcSxREeFJHnkH/IzCqOh8sadCCFmv2r1L6hfP/xKY0+jAqr+gLH/AH7ef9Jt 5/1VxV36Asf9+3n/AEm3n/VXFUq8zeU7u70S6i0TUrzT9XCF7G5+t3LoJV3VZEeRlKP9ltum43xV R8o6fcXOlLDrktwNdtD6WorFd3cacyAysi/WJPhZGBqG616EEAqnf6Asf9+3n/Sbef8AVXArTeXr BlIMt5Qim19eA/eJcVQ8PlaC1leaxv762llVUldrhrssqFiorei5pTmelMVV/q/mKH+6vbe5Rfsp PAySN/rSxvwH0RfRirv0jrEP+9OlNJ35WU0cyge/rfVW/wCBU4q4eZdGBC3E5smOwW8R7Wp8FMwQ P/sScVSvzrcecUhsJfLFu94vqVuorea1gkZTx4fvLtJYxFQsX4qX6BepIVYtaa//AM5BP6TXPlnS o+QT1IxOPhJugr/GLhultU/Z+1vv9jFVObXP+cgqySQ+XtPLRRgRQs0SJLJIISeRF47KsP70cq/H t8A6hVMtX1r86E1rVI9J0GxfSLUE6bNOyGW6LemoXa7T0+BZ3LOo5ABaKfixVCG9/OuCKCb6l9bu jEx9FVsEt/UNzdVFyhuVkH7j6t6foznj8ZcyEcWVdfeYfzwt9XjgTQbGewub64hgliQs0drEpeB5 mN4qr63QvQcOP2GLquKpl+Wt/wDm5PJcQeetMtbWCOJWtruGSNpZJmclkZIXdOKKeINB0/aJxVne KuxV2KuxV2KuxV2KqV1d2tpA1xdTJbwJ9uWVgiCppuzEAYqlw1q8u6jS7CSVO11dVtYD8gytM3sR HxP82Krv0VqVxvqGouU729mv1WMjtV6vPX3WRfliqIstH0uycyWtrHHMwo9xTlM4/wAuVqu/+yJx VGYq7FXYq7FXYq7FXYqldmyy+YtTlTdI4LW2d67CVDNKyfMJOh+nFU0xV2KuxV2KuxVxAIIIqDsQ cVStvLekq5ktI2sJTuXs2a3BPXk6IRHIf9dTirRh8xWv9zcQ6lGP913Q9Cbfv60KmM07D0R/rYq3 H5hs1lWC/jk024chUS6AVHY9Akyl4WJ/lD8vbFU0xV2KuxV2KuxV2KuxV2KuxVxIAqdgMVSj9L3e onhoiI8HRtUmBNv139FVKtOfcEJ/lEgriqraaBZw3CXdyz3+oJXjeXJDMlevpKAscW237tRXvXFU yxV2KuxV2KuxV2KuxV2KuxVK7zVZZbltN0ukt6u1xORyhtQRWstCKvQ1WMbnatF3xVF6dYQWFolt CWYAszyOau7uSzu52qzMSTiqJxV2KuxV2KuxV2KuxV2KrZYoponilRZInBV43AZWB2IIOxGKpS2j XdgfU0SYRRjrpk5JtSPCMgM9ufDhVB/IcVRWm6tDes8LI1tfQgG4spaCRAejClVdGp8LqSD06ggK o7FXYq7FXYq7FXYq07oiM7sFRQSzE0AA3JJOKpFHFJ5hInuAU0L/AHRZkUN2O0s3/FLfsx/tDduv EKp8AAAAKAbADFXYq7FXYq7FXYq7FXYq7FUJf6tYWAUXEtJZK+jboDJNJTr6cSBnb3oMVQXp61qn 99y0qwPWFGBvJAeoeRCyQj/jGWbuGU4qmVnZWtlbJbWsSwwJXii+JNST3JJ3JO5OKq2KuxV2KuxV 2KuxV2KuxV2KuxV2KpdrGkm8WO5tmEOqWnJrG5NaAn7UclN2ikoA6/SPiCkKojTL5b+whu1RojIv 7yF6c45FPGSNqbckcFT7jFUTirsVdirsVdiqUaqo1HUItH62qoLrU1/miLFYYSP5ZXRi3iqFTs2K pvirsVdirsVdirsVdirsVS2bzDp4laC056hdISrQWgEpVh+zI9RFGf8AjI64qpmDX77++mXS7c/7 rtqTXDCm3KV19NPdVRvZ8VSfzj5O1C78r31h5WuRpet3bQk6o0s6TMIpVdhJcxk3BqgKj4vbpirG rny3+fogv3tfM2nm+uZYzatIgWGCBXueSLH9Uf4uMkG53PEgnarKppe6D+cH6NvILDzLbfXHm52V 1PFCSkQFwojYJahDyrbMTxJr6lDTiMVSjVPKv5932mTWP+JrCCSb0CLyEtFJGYox6nD07VDSWYlq ctlULuGairOPJ9n5ttLG6j8z3kV7dNdSPZSRFW4WpVPTjdlgtQXVuVTw+nFU+xV2KuxV2KuxV2Ku xV2KuxV2KpX5adZNKE6f3VxcXU8LdmimuZJI3Hs6MGHzxVNMVdirsVdirsVSLy1qmmaleaxc2V1F dD6yiconWTiiQIqqSpIHxh2A98VT3FXYq7FXYq7FUvuPMGkwzNbrP9YukPF7a2VriVT/AJaRBynz agxVS+teYbo0t7OPT4jT97eMJZAe/wC4gbiR7+sPlirv8PxznlqdzNqNaVhkIS3614+hHwR1r/vz mffFUyhhhgiSGGNYoYwFjjQBVUDoABsBiq/FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq4kAEk0A 3JOKpLqFw+rSy6TYyEQK3p6pdpUcFI+KCNh/u1waEj7A32bjVVOIoo4o0iiQRxRgKiKAFVQKAADo Biq7FXYqkunXnmO90+1vAtmguYo5ghMpIEihqV9q4qp3es3tnd21neX2l215ekiztppWjkmIIBES MQz0LD7PjiqrJfavGCZLjTkCypAxZ3FJZCoSM1P225rRepqPHFUv8veWdS0I6n9RSyjXVL6XUZwB IP306qH6e6Yqj7TUNVvPW+p3OnXP1aVre49F3k9OaOnON+JPF1rup3GKoj/nZP8Alz/5K4qhLLVr ++kmjsrzTLqS2IW4SGVpGjLCqhwpPGvauKt3I83y1S0uNOi41WZmSWRlJAIoOSgGhr8VfliqAudE 1oW8s+oTR6mIkZzHcSSCJgoJ4tDEIoW/2SHCqeabd6YsFvawGC3k9ON1soyilBKrOoEYpQH03ptv xPgcCouG6tpo3khmSSONnjd0YMFeNirqSOhVgQw7HFUul1O7uLuCLS2t5oJrcXS3DMzI6MwCFDHs QRvWuKr/APnZP+XP/kriqHvtR1TT4Vmv7rTbSFnWNZZ5HjUu5oqhnIHJj0GKt/X9WpEfrGnUnUPC eb/GrFVVl3+IFpFAI8R44qsk1TUYnZJLvTEdZktmVpGBE8oDRxEE/bcMCq9TUYqiv+dk/wCXP/kr iqEn1a/t76CwnvNMivroE21o8rLNIB1KRk8mpTsMVRJfzCHCFrLmwLKtZakCgJA9qjFV3/Oyf8uf /JXFVOPVbq2u5otWa2gt4rf6y1yrFERVajczJQADrWuKpg17ZqYw08YM0jQw1dRzlXkWjXfdh6bV A32Phiqy8v4LZWVpE+selJNFAWAd1iA5lV6kLyWpHSoxVLTqGtRab+kbqWwtbVIfrE80rSIkcYXm zO7UUBR1JxVUtbrW7u3jubWawntplDxTRNI6Op3DKy1BB9sVXySeYI1DSNYopKqCxkA5MQqjfuWI AxVQ/SepfpD9G/W9N/SJj9YWXqN63pVp6np15ca7VpTFUh87aNrPmPSbnTptcttK061YSavLZyGO dRGqzKrzPzWFeNHaq7im4HUqnOjrqVvptlbWM+nzW5gV7WRCaSxAL+9X0gqENzBJUU398VRcs2vx KGlexjVmVAWMgBZyFVd+5JoMCoeHVr+a+ksIbzTJb6Fec1okrNKi148mjB5AV23GKt6hf+YLOyu7 kiyka0hed4gZAxVVZh8uXAgHFUX5a/5RzSv+YO3/AOTS4qlHnT8vdK82mL6/d3VukcLwNFb+hxkV pobheYmim+xNaxuKUBpRgykjFWLXH/OPPlCZbZf0jqKR2vpERg2TLIYoreIGdXtXEwb6nG7K9V5V NMVWp/zjt5Q+uw3kuq6xNNBMLhS1xCtXEpmozRwo1PUJbr1JPXfFU2v/AMmPKuoatJqV9cXtwZZZ Zms2kiFpSeaKeSL0FiVODvAOQIq1WLEseWKt6H+THlPRtZs9Xt5r2a6slAiFxMsiFws4MjApXmWu 5HqCPi3FN6qq/l78q9L0ex0u0/SeoTR6U0sttDHcNawCS4V/XpHb+mxV5JWdfUd2Torcagqpv5Q8 o2nli0urO0uJ7mCeZJUa5keaVQlvFBR5ZGZnP7mvYAUUCijFU11P/jm3f/GGT/iJxV5z578veQVt dL13zhq89hp8r6bH9WIiNpLPZiaWBZQYJX4sssoerhSOu+KsD8u+Q/yT1fWLDTdP1PW2eS5vYrNb hYjbPcWqwyzo8c1uy7xsgCSJx+EqRy2JV7dpGmW+lX1lplsWa3sNLitoWkILlIWCKWIAFaLvtgVP cVSnzP5bsvMWmjT7yWSKESpKXhEfOqGtA0iSca9CUo1OhGKsEtv+cefJsD3Mi3+pF7qzhsHblarx it2haMoEt0Ab/Rlqe+9e1FUx1z8mPL+sxpDdajepbRz2t2trGlgIPXs7ZbRH9JrVko0SLyjp6f8A KoxVCS/kN5ZE/wBZttQvo50t7m3t1kaJ4ka69es5VEikaWM3khjcyVU/TVVPLX8ttNtNTlurS9ur S1lsYNNa0tmWImC3iMSKbgD114CjJ6TIQ3IkmtAqu0f8t9L0jW7LVLO9vZDaWy2xhu7me6DCOMxo R6rsE+FmLKq0JoRxoeSrLcVY/rukW+s3V9pNy8kVvf6ZJbyyRFRIqyOVJQsHWortVTirx7WfL/5I S6+bafXtUuvMba3LHcy26otwNQuGWMrKy20cYjSSLmij4a8yAVDUKst/LjyR5Ht/L9r5o8s3d9cW 50y6tIFvvS9QLJJzlWU+kkoZJIuIUP6Y3Kj4uRCs9utIt9Z8pvpNy8kVvf2X1eWSIqJFWSLiShYO tRXaqnFWIr+R3lY6rNqc09xJdMYngl/dFkkjeGVpyJEkj9aSSD4mRFXgeHGgGKoTTv8AnHjyTYrW O81KS4LwubuSaH1uMFeEXNYVpH9n4R/IlKcRiqcXP5SaHcadJppv7yKxmSJZraJLFI3eBeCS8Bbc Ffht8ACg0YKHAbFVCw/JTyrZalc6hFc3jz3Ud3E6SG3aLjexRwycovR4SnjCprKGLHd+RxVKL/8A 5x18pXVzYXC6hfJLaiRLuSQ28z3SS+qWaUvEazVm+GUglQNqGjBVE6Z+QXlW0k025uL27ub7TZI5 45B6EcJmjeB+XoCJl+L6qoYmrEE8mLUYKp1bflfpscGqwSalf/V9Y1BtVuYbab6qBcGZZFdJIgtw D6cSRt+94mnIKrGoVcfJdloGn+Zry0ubmZNQspecd1NLcOrqbmZuMkrueH+kUVe1CdyxOKsf876X 5f1Xyt5YsdU8wWvl24ayd7O8uQa/7zJG/pyGaCNGX1VJr8RFePHc4VSuPTtPuAl5H+bQRJZoLuJf rjopt1Dl4mjlvCR6xKliOPGhChVNAqun8raXd3N9cW35kiHVNKtYLe/1CKdq288kVvZvJLW69IGY 2Tfu235tViWCYqgn07TrjXrHSYPzVD+YLe1WygmkMjzNJ68Bfgy3UcDPI0PDgVZ2LMGL8QFVTjyf oQlsZ9F0rzzd3gn+rXViGjvA0MFtBC0gEks/M+qLyGTiHVAaDgV5JiqK/wCVQ+ZqQKvna9gVr1rv UjALqOS5iZYEWD1vrjTKES3Kq7O7AN47kKjdP/LLzTZ3ml3DedtQuFsRGLqGY3DLchL03T8wbkgF 429GpDfD4j4cVeh4qhtT/wCObd/8YZP+InFWFw3fmXVLuHR9X8oW9x5dFmHjup5obpJpOITiY2Wk XwM32gag08cKpzb6Ra210Lu38rWcN0JXnFxH9XWT1pQFkk5hA3N1UBm6mmBUTZz3kvmNvrNr9WpZ /D+8V6/vf8nFXjHlLQdJtLdjp35qLZafazJ69pLBLpZLSvHdozRzXMFRLBGaSCP94GduTdiqdXun 6TFotv5Vn/M2OC4LTwXM3qSB5LeSOKUKeV2Vi9NIeCyAiOjMnHmxJVS6T8uNOtZb/Ul/NGG0mvpJ vTufUokUvrCWoLXtXeL6vw/eM1ADX4hUKplPp0J0a90CL83Fi1SG5tGm1OSes8PpQPC8H+9aLyla JnZe1DyUt8eBUZbeXdAsL7WpNT/MKK5j1Swu7OyjurxjNaW+orFLGUknu5ahETkjKqlg1SxAWiqA 07Q3k1xLmf8AMu2l06O5t7iCzXUZLjkIrlmEIV7lUCSF4/t+o4YhA1FHIqq+T9WsNB84Wdrfefo9 a01NOuR9ZudQjZZJWkWdDw+u3BIjijl/eSRLTpzYFVUK9FT8wfIzPMn6fsEaAyLL6lxHGAYi6ybu VHwei/LwAr0xVpdRe81iC80U2uo2s9jzS4FxSJk9XZo3ijnDg4qpzeXY5rg3M3lrRpLlpUnaZ3DO ZYmZ45CxtK80aRirdQSfHFUqubjzjpt3NpGm+WLCLy4LNna5t7kQRwyuX5AJ6IMlR8RCxj/WOFUv /MCLRvT8s3N/5ltvL08EY+qtd28dyrcprTlJF6rKkUqEIgmoSgckU3OBUisfLc+nSaWJfzTvr+SK 9VrlkMtwtysM1vGLV+E8yRfvLpA3dhIOVQtcKqNl5ZhWOzml/NhluIwtykss7x3H1OdLa6jR0ubx 2UPFZSSNzXcOxoFUqQqlqfljTBpX6Pg/M2zTVY7j9JtJLeMjPM0dqbeaTleTMeP1XmpkWRPj+FFA XCqaWHka51qeGPQvzQub20sZlk1SG2u5bmZ0aRwI2mivKw8409OvH7SFloxaoVHz/lN5vNmkVv56 vUuham1e9kW6eQubiSZZqpeREsizGNVkLKB26UVdZfk9qVtJ5ogHmCY6d5hS+dIB6gjhub92PqGA OAxhQ8Qwcc67heCnFWV+T/LWsaM962pavPqnrLbQ2wmlkkVEt4AjyBZCxV55md3+Jv2RyIAoqmfm X/lHNV/5g7j/AJNNirAPNN75GtdM8qN5qs1nH6KufqMzXH1dg0kEFvLAgaSGNmmjuDu7gIFLbCpB VhN3rH5Mf6Tp+i+VLy+1PVIbSwmtfrj25kglFsYYfVW5kegDRpwjUkBSGAjqcVTk+dvyfeK90yXQ 9UntL4Q2dzBP6kySR22otDCqRSXDOEjnkZhxUAL8PXimKpXH5s/IrQru1vbLy/eLcTwKGWKcyMtr p0MV1BJ6a3UkbHlbRqK/FyRw/wBlxirIB+Yn5beVZJL7TdF1BrldNj1RmDBvTtdRFuFV1muGZADH CnBUPAL8A41xVEv/AM5J+RUtPrRs9RaMpG4WNbSRyJk5pRI7lmP8rbfA2z8TgVlnkT8xdL84m/jt LWe0uNOYC4huDESA808Kf3buVats3JWAp74qyzFUNqf/ABzbv/jDJ/xE4q7TP+Obaf8AGGP/AIiM VROKpb/00n/Rn/zNxV4pqXm/8k4LLUUtfLNzLFpA+pScJY7a1kmt2nljt5JPrQEgk9F5eTKwY0ry l4phVE65P+RserSaFqPl+7kdDbQyxJcMYT9XVbeH9z9bV3aNWoB6XqFKuAVPIqoW88z/AJI6rpVj aTeWLy5iuppZLS2upBG4N29pcXMpdrosg/eq3JiF+BgCAfiVdc+cfyXuLSOe+0DVGS4t5EkVLp3j SO0DXH1cgXi8VDyH04yo/ZPEL6ZxV6bqn5c+SfNAtNXubORLsvHe215FNLFPGxSBaqyPRS0VtGhK 7ilVIb4sCrX/ACd/LaRY1fRUZYoRbKDNcGsIuDdem37z4l9Y8vir4dMVU4/yV/LOK1htYdHMMMHr +kIrq7jIF3GsU45JMGIkRACCcVV1/KL8vVQIulsIxCbb0xdXfAwsSxjK+rxK82L0p9r4vtb4qmun 6dZ6frn1azj9KE28s3Cpb457lppDViT8UjscVTvFUNqf/HNu/wDjDJ/xE4qwTzxrXlTSrXRrnX7U Ttbafc31i/1hoGaWxFtOLdEDIJWkZVcKa/3daHCrA9N88/kzpdzaaPF5Y1HT43ubW9tYUdnla6vQ koMqR3D809OGCUgPIvTkquACq3P5o/Km0toNWudA1Oae+9UaRDb3Bnjhi0wHTQ0c1tPwi4xwRs8i sx+JSHbiOKqB01/JF5c+cJbvy/ILWztptKsrN757W3Ftp08LXUMlyl3OySSSXEbPxQKwX9pmYMqn Hl38zfy00TUIYNH0C7s9SltpmmSO55RCHSYLmGKOSszMW4Wx4o8ddwxqVxVlWufnp5f0zRJtWFsZ UNjb39jatcQLNcCe7ktWUBGlUekYgznkSvKjBSCMCqsX56+U5L6xsEs75rzUrkWdnEotX5ysIDUM lwyenS5H7yvE8W4k/DyVZp5b1+18waJa6xaRTQ2t4GaBLlPTlKK5VXKVNA4Xktd6EVodsVb8y/8A KOar/wAwdx/yabFWLXk/nWHS/Kr+X7WS7shbQ/pGKCS0jev+jhC5ugaxLF6xZY+LseIDp1xVJYdc /wCcgHSC7m8v2UUhivEl05GgdRIkMTWkjSG8BrJP6g4q1FXrvRsVb8teefzW1bzFNYtoummysfWT VHjnQtb3AjlMFv6kdzcB2MiIJPgUrU1UbMVWtf1T8/HFs2jaVbAwzQyTRuLWH14vQZpY35Xl3xBm +E8CCooVdqniqibnVfzyaztZ4tJs471UH1uyUQmIyH6u3wzPecuP9+D8AI2UctpMVTvyInnAXl8N f0Wx0y1igtYdKls444pGjRWLxSKk9yFWN2+FA3Famhb7WKswxV2KobU/+Obd/wDGGT/iJxV2mf8A HNtP+MMf/ERiqJxVLf8AppP+jP8A5m4qmWKqbW1u08dw0SNcRKyRTFQXVZCpdVbqA3Ba+NBiqpir sVdirsVdirsVS3/ppP8Aoz/5m4qmWKobU/8Ajm3f/GGT/iJxVjOt3vnOzt9Ik8u2DahC9nIlzEDb 0SY+h6Eriea1ZlVBL8KSCpoDT7QVYvq+vf8AOQbRMuneXbKOWP0JI2L25ErcYmlibnefu05eqOYB YigAU/HiqpJqv5+tJcTpo1okkVnbSW1lzt/q0l0X4XEJl+sNORwm9XlRBWPgK15OqmEet/nSdduo JNAsl0RJGFteK0bTsnrKE/dG8UN+6qWJZKHop48XVS6DXv8AnIE31q0vl2xW0ntna8XlCTbTRtMq rGBe1laRRE27Kv7PJd2CqKOp/nPaJbf6Db3LS6VYLKbhEZV1aScR3IP1WXkqLHJ6jbcPgoriuKqr 6v8AnXN5kubL9Aaanl03Jih1CV1aRrU3CrzaFbmpP1YsT0qe37JVRHku+/NqTWVtPMOh6ZpHl+GG sLWbeo9eI4QALMQnDlQtwIPE0oCMVZZ5l/5RzVf+YO4/5NNirS+WPLSqFXSbNVUUVRbxAADsPhxV v/DXlz/q1Wf/AEjxf804q7/DXlz/AKtVn/0jxf8ANOKu/wANeXP+rVZ/9I8X/NOKu/w15c/6tVn/ ANI8X/NOKsU1r8tpm8y2esaHNb21moJ1PRp4Ynt7kqB6YRnimMFdw5jHvStalU6sbTyncT/VJtIt rPUAORs57eFXIHVoyAUlUd2Qmneh2wKmP+GvLn/Vqs/+keL/AJpxVo+WfLZBB0qzIOxBt4v+acVT FVVFCqAqqKKo2AA6ADFW8VQt5pOlXrrJeWcFy6AqjzRpIQDuQCwNMVUP8NeXP+rVZ/8ASPF/zTir v8NeXP8Aq1Wf/SPF/wA04q7/AA15c/6tVn/0jxf804q7/DXlz/q1Wf8A0jxf804q7/DXlz/q1Wf/ AEjxf804q7/DXlz/AKtVn/0jxf8ANOKu/wANeXP+rVZ/9I8X/NOKu/w15c/6tVn/ANI8X/NOKq9n pOlWTtJZ2cFs7gK7wxpGSBuASoFcVRWKtMqupVgGVhRlO4IPUEYqlw8s+WwABpVmANgBbxf804q0 3l3y0ilm0yyVVFWYwRAADqSeOKpR9R0jUvg0TSLI252OqzW0Zgp/xQgCtN7MKJ/lHphVH6f5M8t2 cLJ9RhuZHYvLNPFG7sx6mgUIg/yUUKOwwKiv8NeXP+rVZ/8ASPF/zTirv8NeXP8Aq1Wf/SPF/wA0 4q7/AA15c/6tVn/0jxf804q7/DXlz/q1Wf8A0jxf804q03ljy0ylW0mzZWFGU28RBB7H4cVTLFXY q7FXYq7FXYqoX1hZ30HoXcKzR1DqG6q6/ZdWG6svZhuO2KpeYNc06n1V/wBKWg629wwS5Vf+K5vs yU7CShPUyYqibHWrC7mNsGMN6o5PZTj051A2LcD9pa7c1qp7HFUdirsVdirsVdirsVdirsVdirsV dirsVdiriQBU7AYqlJ1+O5JTR4v0k9aGdGCWqkfzXFGB8CIw7A9QMVcuhNdMJdamF8wIZLQLwtEI NR+6qfUIIB5SFt91C4qm2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Koe90+xvohFeQJPGDyUO ASrDoynqrDsw3GKoH9GatZium3xljHS0v+Uwp/Kk4ImWp/af1PlirY1ue3PHUtPntqVAmhU3ULU3 qGhBkUe8ka4qjbLUdPv4zLZXMV1GDQvC6yAHwJUnFURirsVdirsVdirsVdirsVQN3ruk2sxgluVa 6AqbSIGaeh7iGIPIR/scVUPr+tXZpZWItojT/Sr5qGh/aS3jLO23Z2jOKu/w/Fc/Fq876kdj6EgC WoPXaBfhYV3Hq8yPHFU1AAAAFANgBirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir sVQd7o2lXsglurSKSdRRJyoEq/6kgo6/QcVUP0HJHUWmpXlsp3KmRbkE/O6Wd/uYYq70PMifZvLS YDor20iMR7uszCvyTFWxP5k72Nn8/rcv/ZNirvruuDZtMUsOpS4Ur9BZUP3jFXfXNfY0TTYlHczX PH7vTilxVxl8yt8ItrKH/iw3EstP9h6MVf8AgsVa+pa/J8M2pxxp/Na2wjk6+M0lyv8AwuKtf4et ZN72e5viftCeZhGw8Ggi9KBh80xVHWllZ2cPo2cEdtDUn04UWNanqaKAMVVsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirEPMHknWtR19tSsNebTLeZbRbiCKK X1W+qGcik0dxD8LfWq8WRl5KvIMtVKrHI/yg83G4tLm4893j3VqHVbhI5xJwku47ho19S7lUJwh9 PdSxH2mZQExVb/yp/wAzWsQuLDzXMNXUXRN4wuVeSS5ito1ZpHubivFrQMRIsi/FRVSikKvTNNs2 stOtbNp5LlraGOE3MzF5ZDGoXnIxqWZqVJPfFURirsVdirsVdirsVdirsVdirsVdirsVdir/AP/Z + + + + uuid:6fa046c4-f32f-45b3-a44d-cd3f9455d51d + xmp.did:3c7434d6-1aa0-a04a-9351-9b0816c5f592 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:c9914b06-205d-4060-b620-fae57f2f5102 + xmp.did:526773d2-a98f-654f-bf01-cbbe9b3a6f9d + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + + + + saved + xmp.iid:3c7434d6-1aa0-a04a-9351-9b0816c5f592 + 2022-02-21T05:21:14-05:00 + Adobe Illustrator 26.0 (Windows) + / + + + + Document + Print + Adobe Illustrator + False + False + 1 + + 612.000000 + 792.000000 + Points + + + + + MyriadPro-Regular + Myriad Pro + Regular + Open Type + Version 2.106;PS 2.000;hotconv 1.0.70;makeotf.lib2.5.58329 + False + MyriadPro-Regular.otf + + + + + + Black + + + + + + Default Swatch Group + 0 + + + + White + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 0.000000 + + + Black + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + CMYK Red + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + CMYK Yellow + CMYK + PROCESS + 0.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Green + CMYK + PROCESS + 100.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Cyan + CMYK + PROCESS + 100.000000 + 0.000000 + 0.000000 + 0.000000 + + + CMYK Blue + CMYK + PROCESS + 100.000000 + 100.000000 + 0.000000 + 0.000000 + + + CMYK Magenta + CMYK + PROCESS + 0.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=15 M=100 Y=90 K=10 + CMYK + PROCESS + 15.000000 + 100.000000 + 90.000000 + 10.000000 + + + C=0 M=90 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 90.000000 + 85.000000 + 0.000000 + + + C=0 M=80 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 80.000000 + 95.000000 + 0.000000 + + + C=0 M=50 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 50.000000 + 100.000000 + 0.000000 + + + C=0 M=35 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 35.000000 + 85.000000 + 0.000000 + + + C=5 M=0 Y=90 K=0 + CMYK + PROCESS + 5.000000 + 0.000000 + 90.000000 + 0.000000 + + + C=20 M=0 Y=100 K=0 + CMYK + PROCESS + 20.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=50 M=0 Y=100 K=0 + CMYK + PROCESS + 50.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=75 M=0 Y=100 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=85 M=10 Y=100 K=10 + CMYK + PROCESS + 85.000000 + 10.000000 + 100.000000 + 10.000000 + + + C=90 M=30 Y=95 K=30 + CMYK + PROCESS + 90.000000 + 30.000000 + 95.000000 + 30.000000 + + + C=75 M=0 Y=75 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 75.000000 + 0.000000 + + + C=80 M=10 Y=45 K=0 + CMYK + PROCESS + 80.000000 + 10.000000 + 45.000000 + 0.000000 + + + C=70 M=15 Y=0 K=0 + CMYK + PROCESS + 70.000000 + 15.000000 + 0.000000 + 0.000000 + + + C=85 M=50 Y=0 K=0 + CMYK + PROCESS + 85.000000 + 50.000000 + 0.000000 + 0.000000 + + + C=100 M=95 Y=5 K=0 + CMYK + PROCESS + 100.000000 + 95.000000 + 5.000000 + 0.000000 + + + C=100 M=100 Y=25 K=25 + CMYK + PROCESS + 100.000000 + 100.000000 + 25.000000 + 25.000000 + + + C=75 M=100 Y=0 K=0 + CMYK + PROCESS + 75.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=50 M=100 Y=0 K=0 + CMYK + PROCESS + 50.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=35 M=100 Y=35 K=10 + CMYK + PROCESS + 35.000000 + 100.000000 + 35.000000 + 10.000000 + + + C=10 M=100 Y=50 K=0 + CMYK + PROCESS + 10.000000 + 100.000000 + 50.000000 + 0.000000 + + + C=0 M=95 Y=20 K=0 + CMYK + PROCESS + 0.000000 + 95.000000 + 20.000000 + 0.000000 + + + C=25 M=25 Y=40 K=0 + CMYK + PROCESS + 25.000000 + 25.000000 + 40.000000 + 0.000000 + + + C=40 M=45 Y=50 K=5 + CMYK + PROCESS + 40.000000 + 45.000000 + 50.000000 + 5.000000 + + + C=50 M=50 Y=60 K=25 + CMYK + PROCESS + 50.000000 + 50.000000 + 60.000000 + 25.000000 + + + C=55 M=60 Y=65 K=40 + CMYK + PROCESS + 55.000000 + 60.000000 + 65.000000 + 40.000000 + + + C=25 M=40 Y=65 K=0 + CMYK + PROCESS + 25.000000 + 40.000000 + 65.000000 + 0.000000 + + + C=30 M=50 Y=75 K=10 + CMYK + PROCESS + 30.000000 + 50.000000 + 75.000000 + 10.000000 + + + C=35 M=60 Y=80 K=25 + CMYK + PROCESS + 35.000000 + 60.000000 + 80.000000 + 25.000000 + + + C=40 M=65 Y=90 K=35 + CMYK + PROCESS + 40.000000 + 65.000000 + 90.000000 + 35.000000 + + + C=40 M=70 Y=100 K=50 + CMYK + PROCESS + 40.000000 + 70.000000 + 100.000000 + 50.000000 + + + C=50 M=70 Y=80 K=70 + CMYK + PROCESS + 50.000000 + 70.000000 + 80.000000 + 70.000000 + + + + + + Grays + 1 + + + + C=0 M=0 Y=0 K=100 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + C=0 M=0 Y=0 K=90 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 89.999400 + + + C=0 M=0 Y=0 K=80 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 79.998800 + + + C=0 M=0 Y=0 K=70 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 69.999700 + + + C=0 M=0 Y=0 K=60 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 59.999100 + + + C=0 M=0 Y=0 K=50 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 50.000000 + + + C=0 M=0 Y=0 K=40 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 39.999400 + + + C=0 M=0 Y=0 K=30 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 29.998800 + + + C=0 M=0 Y=0 K=20 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 19.999700 + + + C=0 M=0 Y=0 K=10 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 9.999100 + + + C=0 M=0 Y=0 K=5 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 4.998800 + + + + + + Brights + 1 + + + + C=0 M=100 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + C=0 M=75 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 75.000000 + 100.000000 + 0.000000 + + + C=0 M=10 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 10.000000 + 95.000000 + 0.000000 + + + C=85 M=10 Y=100 K=0 + CMYK + PROCESS + 85.000000 + 10.000000 + 100.000000 + 0.000000 + + + C=100 M=90 Y=0 K=0 + CMYK + PROCESS + 100.000000 + 90.000000 + 0.000000 + 0.000000 + + + C=60 M=90 Y=0 K=0 + CMYK + PROCESS + 60.000000 + 90.000000 + 0.003100 + 0.003100 + + + + + + + Adobe PDF library 16.03 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 8 0 obj <>/Resources<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 13 0 R/TrimBox[0.0 0.0 612.0 792.0]/Type/Page>> endobj 9 0 obj <>stream +HWr7+-B7phǥ[!]9ĩE%||8ߧ."@`0 ]M6T5,`LIkL>lz:VBYAR)]xj]nz7k$SO"ڐJE[_j(pFS,y_HGu!+Ow)T^CE|Rey +uغ,pȶD~osU Yqhp.1VHT&cXhd8Ny&fv.,k{PU`Spu2 y܌7ػx9%e!fˇ3G _gS&IQJśw5)7uI|8SFȼpsWޞ25oj% aA@Df87mk6i .[p- f*[K϶lBbj< +i$;ak,gOO(y܏6yݞ +\,~[sZ/ͦæFN>/YSTXT bVFe"bJ~[sgψɱ]˗z[uTma "-*-{_@~.19dvJ` Jjv5yBLHIoػu^+!}PZ#4Z|VjޓZx Vx`yA QVґ$nm!fR!p$E9UF1|}: G~mK(E쾢 +h6 *1L_؃.A‰TqIJ B Gp !zh,4L6%rF)G®؂6 jp4WBejq[qkXe'taF̳YA&P#Mc%9hH^:RG>stream +8;Z\7>8"gr#WrZRnb?Fg1%>DKK)J9=CaWr?b,PT0j;`CZi;-9nYYn5_![uZA^TM$k +%.3B[C"4,npGgI+nC.Mj%Ua:T\V?e +2rp;*QXfoRH/*T-8eb#N74^:a`"B:eF3BE,#[_YDo!p.\!%"g.04j^D\2`2\;i7Vd +cBQOV0Qqm9F5_2_GjK7Sm-!!+,Yj&\GbR"@F.uEHQ#4K7_917@RrQUb-2'^H4l%-C +i(uHHW"MgJFe[$gNtY6CcB7e"Kfe%A4FN4K.eXVl0tt;%Ra43s[FXD8mG/qFW"n4F +r3@=>EHb5E'?I,[NP.];*>aaeR(^Go'^%jW2rS1 +endstream endobj 14 0 obj [/Indexed/DeviceRGB 255 15 0 R] endobj 15 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 6 0 obj <> endobj 16 0 obj [/View/Design] endobj 17 0 obj <>>> endobj 5 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <>stream +H|T{P%d#qfu7p@Cj$<QѫX*QPTo<Ue<}Vz=νs͜91S k-[?wNULJJIpv);ÒDΨǏR>ܛ oZYa&8htyB"WH/vgnce…M#OتTkqjUbJQȝ$> DP+TZc3#IZ(*KFEs*\Q8j$DK8,IX| pAD/_$LtLHרj!;O\ p`8faq̆ؗ6b3|,DbAX:Vua-pDldOw`"`vUbW8ºZlX+U$JG@ТVmB@d~,x UҟSW*mQ'2BIs5=h*`=bum^$i:η!OaJ~Y|#uuE"yQh4ឬеHU7Q`]7K|xM|C{AYIBQY{@Y(@ 6z ۸"Vv)8z8Ǫ +RrO\~TVʰoX +߿WwU3sǻÚeR [D$EZRr/^#ԛBZD#{); OR#t׎Ls'? zW֬Ec_BgttQ!}1h LA4R! A0 I+Hc|o$fC7LٌPIPj*Y +b_JLٲmgh}|24{3 % VR/Z8oWcse%~f0=x#?֠iA(seGtGf\I4Ëclǀ]n7{ +l \ba*7CC;Gze1w +w%?e^fV :qސ?ӵR'*P@YmQmp]njwLAWj}׎6 +\{".1N[ėmnHI54.ėB_y93GIū¿q .?!fS  H h"iv븭9wk4k+.hfYY(]lUSW/ uIt:O5Wt _#L +̳GbQk:Ԟ Q EdfGo)U 9PaPhYolO( X  Dy% erxbK91ԐEuMԳk_2F ]C}s*SS\,J2 ,fkx2C'L4juFqXH8\ 9"`K +FcF\.42AQ#k?5s#PhZ a0t):cZDdW6^}Brwnzv:-j\+LDǫ7_r)K 2;l['Pc1_W&\ЬEHݐ#8(ѝZcRFaZKs4q4]AYpnʾEԀ :5 Sra +d#@C +hp*Cd41b[s~G⿗>9q_d +@_܂|KyumqdԒna -ٱV|<ůmHx< _(I?]mDwc7kloM+CB^3v/0QLm-V3*(G,/ޙ;rTi +iiCk*;A8Fj*yGrk 6'H r"@ΤN/)Ew1*y^ѻNjq|$벿,)3#91Bc-#ݺ2%yA ~5\6HMKC#zրU ++ .+ +Ўv8 A8:c]e cX/ӓ;YaT3}uݝH8K޽IYLZNs3W-t@\|l'4,O,K~@+G +@gkwB{Y"b3Iيg/pNVMl@obhsʐb7zm|^wxe;3i=~2ϧ8l־)e `21WN@>sx1r8K1#Ic1cB/)f Qzqh{HO؁15Tsڜ&j̎t5]k J U,U3'ƌEe !YZʔɷ<(r:4hL>ogÚR-mL8aJU^a;>YHfod4gQ$$73RY00)Zt]K2+2K"ә4=tGKfV7A赹LZ1B-xN"O`%R֞ |vR6)Q_4HrzX|%$N^B/(A;?chpnT4**KA+P58*@s1OBKEl"7f%jdEc,Bp<\H^} ΐӐyn1GE|Տ܋t\Pr d *r3BD.ݴF7pIن +.TJ,R*o5gj]k$ͩ' or\47 .;ťbHE|eS_rň}# +XQ/ҝarRgҳRw+F A} 3X38]u-.><7$:%LCaRՓ/COK +endstream endobj 12 0 obj <> endobj 11 0 obj [/ICCBased 20 0 R] endobj 20 0 obj <>stream +HuTKtKKJI,t(݋4K%ҹH4J#Ғ(H +wqyy~3̙g<3Y9El +@ ]!O-@\+BVKK :OX~WCaiHKL0qY `5ck +X]x= 8 XĿ׽>.f#aPn D^{y8  dp H st:Y׬cxc IV?S!:_9[YbQP~+rA +ShHht^ '0߅™kYXY9Yqqpl'WzEE$%D>,^|t*K)%/`\ҫ:&D [7dplDa5|mb4,yy{e5 3⚅,t+whlA   m k +xYUH&%Ȥ +qO'Mz3KT@v[NUnn^\o]abTrtlmE]e~U+jאZ:zaqi5};CS[\_ۆwCaQ1;>L$Lz}4:%8M7l̎Χ/}XT^]X>\Ym[n!ycskkƶʷ;v{pIs0Xݯ3s󝋒&$WWW*)!$$%!e$cHNOAKIMEq ƕ;KLw@YX;ؚ8^+DspfKOTCPpJ%D=++O%$*8IZ\Z^UK_wL"dx]}>9=;s_G8/̹N!Gz[<=2|B}PQzlH0Wc(Een|Pds::5&89yFT"od䳔i/ZK^&gd:fgQl kJХeJ*+篍kj5U[ZUh0|em6]B@`PpH?QM1Msψ*iϛ.Z [JYZ)X-]R޸Ѻپw?@?5 ǖ'vNg +W3gLC#u!MMMEvAms˔FVNA̝GLwA̬,llؿsݛnͽ+!B²" 'R&k?3?4+:6oT\ұڿ6VʝoF?LT;:>::>:;eqvx^sawݥʕ'_EFO\DKLtAnFF)F|ԭ6\`@z?m+F;LwiAhy͖)Mgw~_ @ZH_XA,"F)%/*9aZ:Q,\B^_AU񡒀2 +*'[j o5[uR1uh`fm$1xJgBdrltlyyEe$feg-g#`dGbwj0TOC9; ܨݿxz6zx8IP=A!.aAxۑϊ}bG-ޒēx`G/Ԝq_O?0"۬խЮ˯ǰı²µŶȷ͸ӹۺ 0@RfzƏǦȾ *GcЀџҿ'LsٛFsM6+1MZ:{T?~ò~i~L}~cbA~Dad~ty~W~O>~\/~|~`Cx}%H}1X}%z}K} {N}׋<_~7A~-ψ||Dz|+E|[s|z} ^}wO@}-~ċ {Gu{Dz{]Ĭ{f{Zx|[]|ϕM?}R<}Ǝz]YzHħz|z={LNw{\|=>|v|ېI8z/r z;bz'sMzd6zɬqv{D[{0> |;|yyaIy?yazYvzݮ[{^=c{ФI{R*y߄yfUy`VyyuKzZi{ <{z%zȎ~+~}͇}W0}3}HtЄ}Zk}=~zɇ}!~Єd*s}Y<9wpSwuuVrUW؈|;,뇔{RsѲ;:8q)PCV:4.8Ȅ2񡂡?Up Vu9S c bփR.ՁNn U388A/ͬδz6߆өn1T\e7݀tXT)$̯̕6;eCʷˆ imw3SƀV7M +\lGNػځNāa5tNzlߴS<H6*-N}o2ن N%է>w֣A}⇤\fXMݘ2, KԐ3g°[} +0e6M _1 ? 1ӣǾI^I|B̯dܪwLe1$: rW] 1S{z|diL g0\ U{[G{!{ ޔ`{&yE{xbie{Jr|/c5}~ +~:f#MKx+Ca|uI~.yW ώәߎ%¡唘[w!^T`^H*- 5GȨ瘎=Π4rv_ҍRGf,ދ̋|,ƕ{ Ҙtٕ^1Fő,;',#h%T,Qۥ{[s:9󅼓&^!Փa@!" y +.Jl6mHju,bU6+s hܸd-ʥ}wi-sun=0Ľi-_*)U_ˈb$na+;ϧT;ppA7C4.*Iߥa8Mm.ACi7\j|fiԫ)]ޭjʄU]3(í whJch-4x7h׿*P0H됎L랇ڡuÂ,{Bz}8vggҲd[!XTZZ.vlAg +{;Sm`vؿ`~?ga. +3Ì{L^WYe4]L7ok!wI~Ira^=C#Zh`Wu}p)"z7ff&3$FJ8Ҷ5m +uR_,^VS&aR~PfLL_Dw*`\-9]q  TI6)>u6 D`e͢/xqY%9ʜ;åOd\˾P&eRz;].R<oΡ]P{?: r̨\ʻb Ҥ3|m s؟W9oZt]RnÅ\cW#+nI&gyAjsN06HiD'@J+a5V~cRI̫vwtUc[3+?F|l(iU^+O?Rs1Hqil$Wþh=(RE +1BvџnF/ BsGMY9>ܖ3ȗqI ڣ5V_1ȣβiJiX0WVH[8g_/ +n3 ` 38A.|f|ј0I6bv%& ;Y㿜҄#dD.).p'3J12K[Duɥ$s8IƊ.z^48e!R6}vcMiozo0'=~i,3:?-?oS,9w#ROa; ?pB +֞IO ݟe#}ԯN$\l?], y,>&Рq]yh0AqK)ĝBFҍcH:-h-ǟcf)K9T127]qEjL<>h;|U +dpG +ƫ`&!8al`83>.qɂnA9 +; `HByg KB*k㰗2fF=#OM eT? +mTm_OBۊV<ɆF('n3uG~Ȯ#7Њ9[١`Ns.P..콤 'KnpF\? B>-`NWOOWBlfxW^b-_x&*/(j_=߆󑊢zF`LdE:SNʔ@S 03|TOKokto}bFz$4-,.m'j*J|)J6BP ^3ewܫpX.*,07xPڳ:2XOT21|"7=0ߴy}ĸB)H[Fs V+̯+Y(I(x&9JAI'tXmyG=X[8TK)2<TSRvxlȓGO|g/{>4/gRFȶ&A52 uЯ*B幃AuFǞѧuD)B,*?n` 'qQIzK֗4{B_g68#ʉ2.A$69!̒ub1&D3Qx" >ɏnνxVG&TۨÓ)sxd-5KxߣD&1±jdGjJ|J{Z ޲f6/vTp̄ub PmBU#gBg˷)-*E +ar>>Ƶrn[ɭF-IByѸP=ĶKUC wG D}"vN.p]]Q8uY{#qCv}sax_oyiNr( d8aw2CQ}V8UWO\g \yk@dcZt9$u +p-1z(=f) +vě92 w u煼ת#{P6+Dq3HIi%BCb!kc5&U ):X$܎[b2*@PkcӘdoTB_L1Uwi")=2#pI9,RO>T@>;bnDPuCfk^^\G~ oLRcHqܮ=-8^5Ońy*9:-\g8:T<?*C;[yX+I;lRL߭$DvYTQ6DyVmfy%/sIsmXP1Lռȭvow)QBb_LVwupeėO*|+](uHװ4WU.{ 4\m.QwR~MAiRz+%BKz?'{ k҉aa{H]sX}da~3_auQz VM\ĵv5I0LM)DŽp1:5,&4 %!$}ocޤA]R^xT◬M&/B:DwA24?cd&g]5b4a?iǐ Ĉ.OA 6vfvsd(5yTH/P=(a;zUs bWxDa)Eʼ $sgPJreY3w`cFo0|U[j5k.5J&eTor È´}I lpjC8c5J=g%Uo|L58E" +ِ[Ak]J͆VBM"{NrQihЦ@Y?6^߫ZWٯ]ذc؋hKSLj:>O ɲ.ݰQ{5mm<ٷ?^v"}ъw9O&vX7km[ ,70nΒ7|eP\I;-wgFN cIP#qWI ;NٶA)H~7i thl~~dzY Cx2>*c&mb{9f1X*L #> + V@g蒼]7n249=MK% ;,F\j 1klZi؊ΐ.|Q9а$_.!;̿lE,ɥDi}D3^a`Y5g{J=mɳy3CM'jM-iЦm n5? SJE+U~ ;q.tXd~~p*QeS%.Ћ"ưBsZ6-6[\d;^z4`;64藸ͱw;|+&AfLU3XTm)lF'l VɺgcGObbɜ9;v \CL, >B?KGCe"z -@EHILp<5'҉$>8#gL2m c1 c Fw)P+rkC qp/u8#!*g°Pa`vu@oH`"Ž:z_Q<,D>'ӅWP .`xW3|!6 +5 El[",0 e[Oz0~lUO+&xkPc|u$k.?{Qp""kr6isVa=~@W_ +.<7 +2#h?c~m'rE_xs6aG+K 14L^kUp^^_mS^dШ'>}5$:τ!E[bJx&n t(m;ZsF5uqX.ՂBqKP *l%{ٓ{'f';,TT,bhUq2Z3;}T9vwRR;GD + K*/@hUv$j!@ vyבm,W|-͢ ^ ~D_􆭍"ĉ#c禘*X/Ϝe>|XH;:)d9gƖ4aBQ4Ew,C +ۯBU#>SV$L-5gV ϯ*B#} npþtdU$Db&$^\^&Z"/˺+-}%Z:}9AYu rTlP0"~! ͚*@5K?߫Z-P=j>܈[O?)a5 +?WUsy5^(ge${Cm> "Gգ+$踿ϫ& Xw8?g,'ō="/xNM)'EFqrf CįQ9ZY$r!6m)4 V9kJ$# FьX٥Cp[ģ)CS;rFP#ImKGɺzj>>X9,ZL-jIbkȉ8˚?vtxPIO}_ay@:|Ve6ubd/e3<֭ztea'cLaM +lz&,f^_!?l2x2Xyń3D)\?ye ~4O+9$  +EVDTSؓ7X?MM!ԼuOtP Cbt;iްa@gW#@4c9.Do z2>M5i~u0 qswQ9ǸLt삟Mz)>kɝI;io"U)]$YL >$$T:gUo$UK,C`sCMAJMÄKC(g]ٮ9sUG0?L5QM%0Ol5&`Ƒ1,x'{k+mY}-Js#\d:i/NK\8HstQ#-ND).s*Zymnf\1l{(E=VGW9s:?wǟQZsC6A1ƃ6K@8OUY^`7j6@9?,yt4&}"T- +\Y&kVx녣391ٵqQ=beMq\`/nņ|2͌JkzDmͫIR4\~5NlօKɁZ]TC3l̅D3jSS)tWw$IX[wV +WTUw^PeUhWE^ؓ~Wchs sIg`wgs (5mr] B`7JfAaA3ƓG?{O[ ?xj/Z*7exXz Ά})C?`KcMՌ&)Y5J]q':]$؞]Yv x(ıH1eU>_0b?*񸨎b¤،D;Wxm]|N7U13*;.=>SÜj)CM>.eI1/QvН6Tkk+Ɯn\\FFV#Xde&~WE7"bju^I@j@bQ Wk8w_D ^z xZKA _`T}] +x}ЁM0S,rV+ KO&ƈ`;E{irf0F] w86f fm_8c3V<)r1p +hs|p!QP'Ղʛ2rӤej4Y r, r?4! Uq]f(*&umM+;1 +-c8CjL=L1TDJ7>)BH*cHY}~xI,{7WjWާʇhg_YovMKiN> QRǧ}AQj^G syJG"?txt,L>֍p_>Po$^<%}KDS4 +*S<ܖyd;éIJ~JMn>ȸcI6uɖژ䩊i77_5W2' 9t^}/8%wd0k)ͦF9kih3ShPBULzs'0$Y/L3ol|f ɪ\AW#siS-O^I+36xas @M +A hm45V-' ѵ1S+ ~*%~k˝ʉl * +lك=3_2~OgPs +Ccd[aے{<ХjA {! ߲ۓ;O'9+wEHE&JV?fiӺ j05瀶bhWZxo=ƺ 0zhK5mov (YOut;e=R*yMVn,$v:QڳE.yVl;svn,Wi.[@34SD_!MF>J柣ND @$Y~-CMu (+lBpБ^#$~2è /@̣6 3nh +;۪.3Fq3\َvZnZ"/vNFNJ2V{#ΚVse_쑮Ta8C¢!Η>FL\M{5eH~7;F AB?VY=۩Q i9J.sӿc%FVbdեiL`a)kD=W \ne>NX7Ƒ†2IYf-to7/~Uas[`W*v3_`~:kjR("E +* +e)DDIss,f_n6":hmh+]AqñQqSa9{~8|~bh6GZĠםN\h+(E30~kTMGβ1:zka'LG2>,gt X&@?e% +=@Ihs)HUOeX^m7R7~,, \jJԌfͬ8!*]JR:WR]Mɚ PZ;JN.8ɦ,[r*Α]MM"waX)Lbjd`>:?|:?u>^G$fa. +ʥ_S%ED8 J=ĕK{6r zGG Ui<Kg"^ q +I6vPWy^,uc/5@:ǹ+[N+li{P#^yv,ñ-NѳH⺣<֡gxV</nb6󴳜Ρ +nhB˾PoT(W##ĉTwZU} w-vT-9O᭺HIz) z9R'dI5aZGS˟agW=.P1ٜ y?2X)r4VaGXBe`9Q1͚@85$W?D}z2* +pt +;Br\ܕ'> -vCNeʔL-ʌqKHr 7I d<BgNelB^փRγF2AqCR&t7߄{" D9u)Cw1t}?"'[7o̩~1{>Ru* ʖdClutqf2[l~{S4>J$.nQnlP#x])By`r+wLH?VD:|iUG~ժ+&+Rb gP>}WԹkQǖ]WSkqwZ +DQdVd24KGMvU35KJ~4&jwJ*y;X߉˔O@5hw)񘴕o-9E:_̂o&6#V(ѽS-te$ פp}4%4mrnzhe4KX*KÃ29ʩ~'Ǥl|O5ÍB +;^j㛑Q`exH;J\*`l˴Khk +&tF|(8VǡܷR:ϳoG*UjSKknRgl ޅ-6&Nŗ7O4rGmO[du_TvY{ ̏Iy\aRKy&P7ݪJ)l"W5{K S_j0WSW;wixF1^lО伴^'1b%OAXhq)L7j}=9PX=n`ɗKX#CùA *7{ jWܴTByufכd=Af]F=_u*`q+_i݋\^`BaE|S&%Z a8+QgQ[IK-jIKr2Tcju=A ʧQ"7{ٮם*X|,Yzѽ}ƈf:jCo[>]x^hlhNrϳEDkcCǪ ת9c Ht<)}z!hE~DBӳ2S͆i{;ouIp??砃46ٺ^"1R<-65sjpCSjqi6dzھİ紈 41.$5EG9:=ob쾄 v#[xﯦAF+T(C@RQF772I$^a$Eq>.AEbiO0]ТK5ΫPÛG ZdJ*$d ^}E*֤>?Ƅ$dO _tl%$^7[KSECqz"$]*B]}W zT[Rk"n]EUYvFUW\B6-RB^Me2B4/wͺh4Ek5˖<1U[tD>Q!.kR涧7uJc>c +l/i^3;iڐ0sĀZnS +qW7Np:([568ViAFޜ~h9Pldüj2dO ++61--1Ewv =JCHW34܏&x8,&#Rc3Dvz6RSyu_N/nmكvT֥Y˼?RFװKzn9Q4gC^5l`P\ܲG&ޫ` 9PҞٲXr6 +V4,{a؄\tcY`]lǿԾar鴯؏=b!&Yb ^[\aYt$w +[R)i[{$7f"o Xp +zBz'hO|Ō4ǐ|-j +:}̴a%Tv5Y9QK d0 ?$ćH|#uD3 phrd@,@XmVKY@ou([8#!OM~.7SoJn%OG" +Ü3N|/'O-R_1Vh&׺ NPz8de 勊ZTH;XQ6}+'h_|ȋCcuHjBA,NOS{3 L`]1> A rxӴ*E^.ؐ`Q5 v{`=W6뼟\9avGOXc& v1w~0W:ʎ~f: 0/˵%m KRKAcR% P#CSߥfmD5oEx17B0<&Yd8"1wܡ5 TaaJ3p57A>+yIMcu Zd?Bk1x-rsV9sH6p]DGgO| y5S$aE`$Ls +[Ym ~u8p`6*I ߕ`S88sn9O3nXOE /7f^lbN[PBFO.9Z_.5>F S̉R'}ΪѬ`_dX|{dHXԾ3QlZe7PRqشO5OkZrx5u`aǂ:*`T), +DPQʮdߓJRk=H+ +*#u)h) )B6s9߹瞏HZGzGT"93hDͺ sr|b4y $TK "$I~$v(B#].qi?CN ~ޱ|ܷLcOnT~vxj̦5<.f\K<2p:CpSy,66>|zC +E +T)f/:X1}J+>_~Q;^ㆪvs&۸>.k7yZS:˩㜍rݖۜaKa!l.g57Kv0!;ڗfe %]"XT J3aժlwVj=v姠αe=bI/gH& :g,(y 27>aba88fVVqɌT0NɉB`( _"fo! t}Wg_0}HX 9,Qx=~Jٹx>ӱe9M2mFS)Vk-eZFF٥btg0O?Dǐ%7eyښ6WSCyeUS}l`a8i g"1лJ"|PKڝc,$+&PvꖴGBoj_t4I vqf熚(eC!b׼^SbYi1¨;2W`/7uh?4 +!z@#(T 6 ^!R S#>E/Sq9z_ /G%ӈ0C9[ۼ@(٩P ,}XTOkpQȫUG6 x2e,> -?ϭQެYz/T5FL^`tީ3\#̬D:,vw[mDW)TBZ`0Ֆ`3tBQ˟kks41y `\޸cV#z`XHhwA0چFTyqӵܫ*F˪%*/>9 +gS'"b'zL=N)cs*bR)W<#S 癛)K +&L\9WtW!Y17i*%wJ_ 閥nWJ!p-0T`:K6B+SzlL,~J#ZLHBEe߈Eq1 +ڸTD}bB;*OTCnՍl$OYQ0mz7o9NŻ|hDV[Ve֩b7YZÖHl~I)ܻJ5oOݑ%(,hZGҼmRd!/NEWutV57z;jjs^^lDǾ0-a_aL؁w44簍b^ppi&nX uƻ-݂ -cY4_g ?jGIfH %J҂[%ϩC6OzvWzoZtA$?z;ؼFT2/+0@@S<@>0bSuqw;j4S'/4sEթ(P[V^5ƊHkg/ۄw 0*֭ ajyB5TC J(_F4!m, RN ?S9 :״OfOV"յڇ1,V)S@._ +#Q`K|ͨ%cj/&\: [Ft^Z"q٤Jm뙊jMarח`VCg +w"~>< 8i}XT8dzQVY<p%HG/Û`rq;Nm~Ms\/Zh:(MXа^F.꜋.Ys}5`a((X0T+JS 4&~|iB!! !)$)ʰ WFY]E븎3x,˽}|dc +|i-0Ws +Q_GpRjy0׿tjT̎ԍD1څڍ›N:ka? 7ek_%]a;זF=9-b= &Mm0-vD'^j+/5(er^+EL F1$1KWE|fOFMKm::1`ڥfXЩM*i9 +l?+Lw?-Nx͈wɳ\C0瑃f sM;iđ`$O0z*RٹB9@"k5v~.lB?ug]ed8JAj͹um.DO^^v:y;ske+,L¶vŝҼخd_5Z;q#k> MU\J{l*͟ґ3Doy"UDcu#H)BPit/ v`_Sʝ{e5mpPpy=-2[m+v6*.WۿSǔ] +^DMk,2.#ɲ\!{^I4Ԉ.~çlDcBU\b"c jvJG|H`_2rHѥ tHHBaG :Bf{'9 +[jaЧe +&hz6Fdy?>gۑx&l$^:^nx-'-]O 5@S Uڏy]Tu _,zWPT|BJ,ɕ}`8ߴy?p7gˢu\JO(_vOUue4+Qbi?A.jCxyRJ駥Pt㸲rTfdd$ֺFR>PaL'v2M*׵T]`W*cD*hAe#"ɆKO9JKL2J( KgK3jԉfZnL5oM(_>FOӹGi}<@w#Ndhoo4Y ̾Fٸ2YAz$W֜5Copli\ 32l;a<;S?B>zprjsm1tZc̥{s/J{c*#3ހfϡneh->Bc9SJ"չO8'8ހ `yHϤu-*` x[c')Oy\x!QS9q*;$;d'=NY ,|ܶ34qT=ka%hs䬺UX7Fl[ o1apuxf9QGk4;e +˸7荇5xB:yZdͫ,`2?_a[0~9iY Fs3g Ë9u<,yx87 1Ja,O@/gO㔛94 |.]16'^@1'p:XtwL,jVQv@wl{έ̱\?R^UV\GI+9D03oyd[R<""" +.2}"!<4tH~(-r25DH@l"K濣,/S}"+~wF}V dRz,:w&?C~FqJ}JݢJirjzEgU#p]ZF%+[PjewVjlW7wR/*C%%jGx @EFH)&0_Օ|Xu +DRNXA\0JSH307͛73 CWc+U#r# aQOL4Eљ?s~{sIy?y>ҒLָKd-ޣJ1v*fH 6hz+~BO:IQqZUՍP[UD#BM >$ z|?^!J0W8N WzXfщ@'h< +%sdR۔e[$z,Z2H5[&Ht L UO 췯+52j&P6uRɮ! +a+rk!o4 `ܗP)f%VQTF(Z]s,TR|O)O?ho# ]6yл)OU,F٠E})gsٴGyҘp/kw~˖I'Y;TdgYU'I8@F* 8 $I+A2((+y8OϋWȗE {բbW"@}@C׌teYgvֈHofE`eagbN_4!/e%O;mhtWv6[iyFy4ʔat V] au #QYm3rM/q{~tjD 7fiɷ  . =[n`4qShBrx_5wԐ %nQ~x'G[ `+qb]Q2Ըi=UGn~ڋJ(Aݪd E7Kz +M]!} jnh-Cզ_魺a٭Dfrj6$-4nUZF)Zpux'@]U/ٳۿ3Ug`iU}ڰULWu+SU[;uXJPvOŀ{$KF,qQruH.}imfZh~atMBb0*iWC䶧jZmn[nKfi c+.&oV.&ʭ{5_s9dmIA. *s5: 1Ů m!|fl'6#N +Z>\oMkCZ8)*bEE@(27{I" $!0a=+vUZŁ`-xEJUǺ +~~7TSsV6i1=2J眆Jh@ Uu;7!0 +߽\醮%-;=.e/T7D$v{.ʫ|ZѮmcDֲ+-Cu_{>1H1]"D^nR ٺ:E3[h9 7TJOW+3 vœLimc @6'[c`Ǧ8v!bR{1_ӵuoPE2\@;4"mO m{ ߺE1dA}C=WB}[3']\PJG5VmnYG Xyahd'J[U~ vWۅWo]WnGnR9H7ѨAu 1vZm]lUrTVA +sj6lhm,My4A*0vJR? Ĵ>2C!*#q0MJ!:ŏCR|dFa?2݂ch3dBzSIt?%LmF[AxYGҏ0m;GY1űh%[sጒ@9 q_8G>r Wn)jodEzC.qJviN&If8bg + v|sd%:uTf&L0~p.(RU +; _)w%$/ t# +~#u`u[w.qsY_-*'̳ɩk/)2* i9$7fUzflc9}],툏WYCIkS-ty7>T! 26Kݲ m&cӣh' ..+upC6&@j5tdP0=I˂Ė +C{޶$tR:(ϭuOR4$=jluq1?פ9Si|cqF!_z^SK}`d%DT wV>;<'V=(5H%jWMV#9YD2֓p~~J }D]gNSsjJmn->,vg&SLl#>^i8ʞ%4'RJDhRN0hBA0(r0K+aMY|"EGE_R^v4/?m[˨yN`K/5[71[Gؒ' '铯RGhqꭁ]>iIX +5'\GB ćd^ux+[^%e ֪pxE + 6%!Itި@Ҿ#% :*h$r7שׁ55׈Ց'I+6*ЮwȰ%U#zD+Jt BaUؕ 6}uOr7dP Cu}FEua7RV"KST20 EN{^lkƕ$vW(,F7b ˢÞOy<"_).kh[n 9W?gڈ7yș*ӼuA@ OpIRrP($e[iVYR +n#(aFq&mq3%\g?%ӆM5XD3b$ʁW ƿ5&͔D4®KcᏊ . +1Zo +^`~¿`6z q aXǰ)Ӽ܄'84 n"Db.yC<K d},{*h +ڸh>wMv^ c8Iƻ(~j? +eoyl/Dl5Żרpy1ܣܵ^004{ .%CA22dWuQ>okL<5.ſȠiffh7S-|^TjX[wCY*sG^1Ve֗+˃L3 /2y{+.;CtJ } ->٫y6q< WxA_PZ? Q y1>yK\.!OqM +0Cl];Sk)=RZ@[ɷ5JBeǐ$Ni"0 -úR4H~9.☫|Dϸah-)r~"eoMK%4 _7"‘e +QD~0T.>"x*O>酧.Ey+HVy55RWsEk*PxEGB;(J X(8hiqmh^ 0`}_APWDLZ‹]<4zG֦`oyZR|u^gCF#nr)Va5ƪw9njyIt +xI1bIy>}-AگOShKFx6xqqQ +3SU\ka椚̩Di~ ?{>J3mtߐZt]YNju]ɒQYlZZsNѴѷW>Sݥ0Bj+7q҄fU7m :8^;#eտ+*,_CY3MSU*LX.jQȖg_IWJ5a"9R'C\y׳qH)VU-Z.\+Ѥ/aen/|F[?SPkr" +^Y>VH9 &yaIxQfd}+] +U.o.=q-y][viRgk*`/pLBu+A@[)&PYQ?im/K,Y*gu(i2`؀V"fJSs=RU@7+>dْsmY)w=U?ο3D qjv83׽} 1r@vy:{Eͩԡ.޸,珈~CH{ksv_l毁@"lOR."0Fl]]C˧Mfi nq˶Q{56ef e l[IuY_(i&;to 5kZ/ jjp~Ch⨿䦿iRs!G-֠5 +&wa7WAƫXUr8+}E)oVӃIÌ}qZlh<gw +A?=$6-ޡ|,)!<*ǘ*z!8߀ϸuPpD|Ŝe=sm4'ҢؽYaPOZ(vj?VGgxI=V-̹uMCJH_-C]B~2A\8*E8PTΔTo 9/whaߣby\'F,Ռo%wU/ժnM*T Ƌ{5NJԢT9L;y _fXD\uַA:x")V%V/*]1# )ԋ@X"SVӅ4u.f?Uչk%Nj;c~?]Pۺ˄WҌ=V듍1 +E ֻqd{q׉; +NYHdfttc #&vPtQjd1o ­R)ʽ@}<7 &8wyybH04͂@>o` ~M`Oi#T2"-!NSn\ z$SC%Q%;OzcT)!M.wf.Po1U=Bl1F#F0HD\u̞rڜ*ujQO5u8E$7:"І(UuANgulWYE*Z"cT\kTxlx)$8(YBIY`[}.Bb T$=U8Oŧ yP-x$]0_ +j(sOH|/=wKR` ptl>f*ӡuU<=Ts(&zpKA?sLo`N0Mq+~*m-~F7^5惬H]${|-Ҷ9Y&=X'Vu+^ϖEm +Y/0X cAdPc_X VRx6b|C6^FeC]o-F?f7Q3V>͝yFsy]ݯMF͊k^NնI#FZ.7ƆQfeϫCJn;AjB JFw +mԗ6t(I5beElXQ͌ i,)6QS 1zJezVBf ۹ʹ/ HQ89SnE%o-4NJ``,)~utyQN]vحp+e"xN6y*,7$'x\CQL[8.d@}CɏE)1D?@晹b$?7 + YM N| _Td'wa}0Z<9|3閗3~o=Y>l0Wb=P1jmE XR[louv:.C=;.a.BřS[nWJ3ǟN1='\Xr8۲:KXj6e g΀ap%z"K1.c1ɇzɭGTRiVBe-)K@iͬ!u@_`&2q up%P +SЧ|NWP !o-t_ nyV|ؤ賐e`HʏE=>\Tǀ|cҎkIST!%Gu,%[IR'+#T}m3\/df)`n2#\M(CQd6flqGv첵).Z&wITe{JQܕQE\m`p`Ҵ\z[v7OVo9ݜQ}$SSFMWdnyuя: *o[3 O FRJ0ոl+L+&oE+d- +@?^fEkoo\fyJ8zΰXmi  -Nw}OYpz&@>gݪHc. ]7Mz#fe"g\a@\qyºJc\3ܔ r'WQVE D|PLs\h_h#9Z-TdL>˼!WS/bniA3.1Fx@Ǡ3UNN^nPOZdtvWO&-8ךshveSȉ`wPU_cař=շ}m`<<$+UV66do88{ηzkG}ڻ<<7\jvg!5M!w&GmpfSgO3x? +wZsLRq/~lK]QV:om<Q' R]AMXyu ^ȩ $}! 9LHaH8hʡrTtD-*fY]]wuu[bgg޼ߛ"ȹ I7HR7HBHudt *Ჲ=eJtj| #TI/W?{ΝO^'`v'$^E=7ITF2˵7-^'Z"[x ;[U7,QyWrr9E6cy'I gIRm2ZQ +{0K,^H/>>G@l`T=FZnZH ѳ$m¯鵩KA3D;w7ŏw^J<`i$M_x8wU-,/h!pbP1|*k _U;N45jX_:]$ %ͫX+é Miwzz{7`fOE5FohX}fL}k%Jq_b_A54WK'h?:lTHmm. m&"X7rV7l̨b]r+ OpK[{0EuwrfӵFajCCPktMݻVw[FR(Y-VE8 P?)p>͛5 #TtF%3 qhk ;`LVOpZۓ. j&\Cʡ <*g!r)J;ȁ&xK0N\B&Գ$bԍ7fpt(0H23ӲG1d?ź +bVֆ|\[w+tjj?b7hwJCmm#b.^VBDRb8E]4J 7LGc.Xd/a&ڎ @顢zQuֈ4Tqi˽èb˕ 43~,ymoθ[0 +l} TCuLBt 2ZW>Eh@+[Řy0= +sU"r];û](̏{e E=ma^2'FKv~.Оm0Oj(esߺ Pk*!3IBЦs4{^|{6k\* }XYǠD=A %$hǹWǂORV UBꯪr+Ca6 Kԣe :Zڿu6&?W&k).]%],lb7MX][H"}WL)RIrfr?AƁY&I~_IB${XlZXE&|w#؆`_vߢfu3fm89?9 +̟NՎ`jz1*.@爎܋`oْJ_+-4α6@/DWEjE}HRDl;Y+ z/1Dѓ(z)oι&;.4aZ#gsbZ+XWi;<~n"( M'b6!G lP<^\nM8--aG+dyXP^s:0q \p3bWu.,R&rm#қs)lej(^ ,=/FV6fj;ex%Dk%!FW@ao2QTvs 5h0B{UHiGCOzL'pbIq+'_1Lv +QA%$[H~}{1fKٲ:HmWS +ëd}2w7 j< O7i2G;SWݒ!@YsZ~*PƐ6xQܡ/9i7cGHVf3R>K2jZxH"Z")vHD} @} YJ64T(P_(*C]miSJqOZgA(ny8}wν37;?߇*x"D6HaeZ +5K e +tE=H\ƒW8 72ym]Ly 1N<8͍@:> >6pӹ$.7$C$pA)hJewT*FmKg-lm*{{v\ܲsJa>3_*ݑہ>V5|WG_>RR_YL!RFjz S5fځO2< `}I\:XiZkRH*4[(xX$u|I9̺TkVzl_׼gC%*wXR nY)N.9+wZ[E9ľWJ%wp`Nj[.b|JOsdW,R~#* ĽyFdwCp*L(8OelL˞)A vfFʹ.Knd~A򥾺]Di(i]YʯJߟ?>w[侾7KK6w"!eDp5V* 3VEa{:KoEDcɾJ#oOU44lTjFk,>{S?ýSk>Su=|j}T +SU.nk.mcŮ)RxbT<TV*yÙ<+`RC;S^0-itp<ȗ2IZ_0ȡVVKHWol9=fd jb%}DCy{sI*{ZL1r`n}+D_*Uz3}i779_kjxL+u ;FxL.mmQ`sKzK#>&ޗxiBV^\s3_XX_رC+ҭj|S kϽ|j|[X +ΆBL.?\DCqߢ7nO(M&JOiݖw0IJLM,NCOYPoQRSTUVX Y#Z:[Q\f]x^_`abcdfgh#i3jBkRl^mgnqozpqrstuvwxyz{|}~ˀɁǂф{pdXL@3& ֜ȝ|jWE3 תū}kYG6$ڷȸ~kYG5"ŵƣǑ~lYD.оѧҐyaI1ڲۘ}bG,{W3qHvU3sIa)\ Z, +     !"#$%&'()*+,-./0123456789:;~<|=|>|?}@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`acdeefghijklmnopqrstuvwxyz{|z}o~dXMA5)ۈʉq`N=, +ٖɗmZH6%ؤʥwog`ZTOLIFEDEFHJNRW]cjr{ĄŊƐǖȝɥʭ˶̿*7DQ^kyކߔ ,8CNYcjnoldVD/h 2 +R e r xzzzyuph^RE7)4=@?:4 ,!#"#$$%&'()*+,-./|0p1d2Y3M4A566+7!89 ::;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{||}v~oiaZQH>5+! ؎͏Ðxpjc^YURPOOPRUY_fnx̰߱ 8Ql»!Ceª9^ɂʦ2TtҔӲ6Lat݇ޘߧoX\[VL=*b/fMq T + p_L7! }tfUA, !"#$%z&d'N(9)%**+,-./01y2g3U4D526"7889:;<=>?@}AoBbCUDIE~% ہ‚rW; ϊ}bG-ޒēx`G/Ԝq_O?0"۬խЮ˯ǰı²µŶȷ͸ӹۺ 0@RfzƏǦȾ *GcЀџҿ'LsٛFsM6+1MZ:{OX͙~ʹ~y~eL~j~Qc=9~|4~cl@~]̳~nf~C~لOiZ/gP8v}6q}0}>ϲ:}i^},~ ׉_LpK-~~,*~&E()D9vyowy=TS3wI!D)J%OBvwN64;>FVWm +S^Di*bPkpة?%"1#!ϼK`L<n-e2*+) X䥂C@v2l Q?(=0q MzǃIz7MEY; Y@K (-\U&>rI^2IMe;Ya"VN,S;o_%sD;fƎ.R?l ;0Dq>8zDKG)3o+&<4@n͗0EO94#ҐnW9 b_7}B2yːv/ąJH삻Ȧp$ȫވy;Æǘfo虔F¨LsI,KhW2!AjHE^τ _wdlXggΩr!jU)[%B\DCfp <_\?k,.wȲirJRݐ=>0+cvZ{HllLVAc۠ ^{6oCҏSمbȏ:sz 7jP@Q;[wg|z30Uq`!P-~|X3+z2lIђ:_p-FOJ*Yr(".O'qäfrCRJ'dc~h!€?`}WzBd;hѲGϲmT SAij9< +ߨ%@`8xLTqė=,Mk $hJdx_r̰gʱhtG,KytomVK0X?R=Џ ]ٛa`sʠ7g&Grŀ?>r&z`b>&z%sxbw&{~څ]"WR%c"zD zA rs!֝=jcf]rmANJl$ے#ؑ >wTfGFF699<׵.'SZ*˺#-Jl.ZZx%m*| o 2ӝ_TWK4eRsu33'jRFBWl| +Fgml0L1, y+Hu2f;[T0BE{:qntoT]okI, + LgV_R:Kϋ0dP?= vE̷փ(M4m\Tk׉o,H=Zw/EI-LQ[ 8F/g֖'$?[u~fghXjݚ- VImKՀ,%ibQ*e97WKMYiHtXTBUDw-49#iԗ/r]hGވ/ + +lD2 h‘%TTT*Fdw">GY?"[f r5ʊ4`TAo4H5rWS8Xy;$Yr'q vUPV&4m/5LJE:S7Hvy.. kPXAl` +,e: E$@BKr.!{A$A,CY[EA;| TJkU>41aƜdcT.Us R&BchR) + Pd;ʟHbl?1;_:i^mMh9Ӝ+,x+(‡j3=P6u>a}&b (0=.À<2&m%u9_~zL!S`(6͟>թVlW䨸m5ypg!2< PR%wC>ubvbF.0UK$K;؂P,!rA5%\v" +[2gwdxJ:_'Eښ_+^Cژ I! v,V72UJLNITUKɎIy/R+=+(֨v6!M @PB%R--3|4-)#ͯ w.ܘ<;b#;*>$eG +>3"و~AZ$xOUx f𜓜x;٥Q h X(Zx=`dš 8b†id, ϐ!enZ +b /޲І2P0~ +1baktT ?g)˧9 С`.ޓ`>'4\DRdPaxԗ?i|9,t Ĵq]"m-9OD'Ex>#Bz6Nk%tm6BDzVQGq,2O: y{iHcy[]vaZT5 ȨR 345N@qG!fYXr{3^M7HX1ey87ҙ;NP9tn/D=}*I:2s̋%G{7abTBm6ۺ4JZmI׶Fהz\FD*rEyք ̣V-8ˉi#7XmZLW:2 +$Iⷱd`U+z3 8"}Y\E^\Qܵ)<&uZ!FM)V"ڟ}&à/ ď 5 O546PW눤0 fGlEbdc 'ƪrӬ[{K("M/y%0=zFBx}{w6{Y50%,40R}ԓvTp>K@fR$7HU( /10f<,1BS>٨RI3#&&pa5j19#yTH9cI[էjU̟~? +7NzM`k|-kqJ}(Ҙ2SaӼGi ; b:`uǤayU}T 2Ftm̔%OpuDU0m~L-_:qWg0~huw-] NVrP =<]x;Y1iw@8,n\(zqb !$zB&5dn61Q& & CuЎy#c%$7]w'z\0Lk{8 ;fGS Fx¬P~Km%t3MccM(bCB$ _ J,@՜ %ӸZ;.6B)PT~~:_tHNITScΤ5_3bO6-[o 7$cn:zNqnE2~7\NT' "[fTT^2F&+c5r~ԕ(jl 48mWDC]X#<n_ T 45 C0 V~ m&AGA7w@w;Q8Q ?d9#1yʕq_eS]y|d*&6Q30J(WG>HN vAg+[o:y1ډGmUV'pJ{"M@3X|*oƙޞ%sfJ<ߔ[-0R'G i++qNPF\&XT~ykPx>–~u2LX'P MOW rة Z?qU\+w>-q}y/sRQQJ@737Ka[t̷E8X,Tp!PVK$`Κ׵bu~*LlBz-f{i8DbMp/ŲF_<`w[Uq. Y!'i7L' Rz$v]c-ީ%HY~ٕ 鞀ws{)Wa˹ԑ`{[z ϡZ& z +- U@uBP.8jz B{GtϤ1ޕq# ^o2N*`DZm錞c@QY@Oy`ŕ^ )H??s %J@f-H%{#}řPKn@u5w:=YX9(5#p 9#Av(~-"]Qb'䠡ya +'£ +vO@%7_*Z-r*~z Ց4!wBpG-q.a+c"wmqk=WfB +k^0>npu5㞃= m]0o-1:ǒ~%ui;pVO/a3;0oKܼL6Ed@ZU%{ ^ ͰyOVNHLmu?uMBEQ1\IُOui@L7Nk\dd[i|lRܰ3"rW^  +19~(VZQjsfb5~Nl, $LAE \Yv3k"*Ie.gj4uDk"*T~~g^ ~<|1cPx7kF84K(/AI\%HG;'6`kK +ZJAFqKq$5GT#.a;1 p't.t-SSUn;QY(sў*M8= +BHZ# GcDS{d',Utl=,}*vcr+](_1rØ@?A[KDlv'”o>=ԏ[?Q ôn!ܘeoiB]u3PzP'ߧ%44Qw L7@?;gSVjgohop7syR\7V%xL| 3n|2Q|-GotuV֘Gk}fd'̐yQ/;^+b#&~ي2(ɚpTֆ)$Dru:5zj,|~0T\~>*,6Y +]7E9!7;au*8Y?Ң#WfiA~\mB\$OwDhE16:_JqBR%*X3 !O:`Iok2+}Y'1%Y GPMJ{rK w_ L&N NyA'ճmﺾo4gz"v;L je %Ɯ{NS6U'*@djNcvo^=Bi 795l€Aⶫ627ICkyV_}B.I=YR2U^c~o\Ƙa3Ƹ2@eU*Tlmcӱ~ xnNU)o`Iχa]PFŚVTC&ϣ࿋Y=d]/..FBXs+$=}buM>RWm6Ŗ6ᢐFX 5x{v*j;zv<_~AVUJϐ^IjQxシuQo=lK_ՑEkZ\4sqU7vOa J?Q)4C^\k[{3y~M|J'g4Ay,$0( jHl:Q"V҉1X&e s)MZ(W |Ϲ\88&tcpҔa͔ CC GU$^fb|8u̸&A֍9ke7;㥦koAvՏ0o5y'M3q"y$[Y@SgÓ=ݎP1)L \!B;U!)/C$N$A³ueuU},3Y'/Jc .8_[ON-<"NawGm_+yj~P]ſ^\y X,r-|㒒ܳ<L^T},^eDR,nkqց%|r,!gJx=~p{"\eeEN;Þ=${q@Q_\?/иLe>u#Mp'Yn_e<q㼅Ra8pLB=(YK[l`BKB#4;c;HS^OA>Ʉx\+0lkOԼ`Fcfup.wlCnKJIi]&fXPAn1کFTKBoI!ӮZ f)~Xhy9 ݨOC5&|T2ӲnSLB5eD0:yP;(w9mΪnWhKu{`wk +kH>*ڲ1 wp5Q݌$;LvvJ1f3n*Tg@oO#9|}?V0M5.ۀz{" NK?C_$ P&B̆e>(qIu`|ob|_0l2WꂝsCܴLTIa?f(/+PIwB WhgšH EiŮ(G6 +"  +"(H2̙dfr $xZEP>ţC~EF:}< \{ +% rH6N$(߫Nᷘ_%1]2:$o-8ȥ I-qt;'kTjJW^}kfQUr\ulNkHn᫂H*Wd6M2 *{`V%VRoJJ`+"yO|s86Vy8 :+;9ɨ=.qqѝ=ɥ^ӏwldG;fH^2`zBȳ ŞO*{M2MoR0i:T~%$9ED~cj<}${.-+P]c=Vzpwz\S;!?C:GFIױqYŞ ݇>;]mS)yrEz_n˕aI"l|sGvmߵ_7e]֭>ГU)i:D΂G}V W5*{f? +($p\)9D$ZYr|(4D܁OHʳ ;ܫv۱jxLr_r ;Wi nV|Rudܦ;@YNl-QnJȲc/14C:'K&̕BOJ{ߴzfsW|F-q2 ?}Y[pXdY<\v+M{ir8~LJޯ vlL: ?@o[g`}>?UrǛI2Lk.}GpI8QRV%܂L0/PUE ?ɹTcۼfHs^QMC!)$ ; ej uIy W6#LMi9ĦͱP*HʘFg]mߝn+|X$Z6K'OQJq m(B~ljSuZ ťbhWP"z@UVJ΂\,<\HA 5Oaf΍C75O Uݮx7F>QL~:ʥ#][eTS2%c Æ~EWg9i%3W4ފ:}޼0_X|-ƣµVu8H{YF"qĔ-F95E!L/3zLw@"FRmOQ&[#ZO/xˤr~9T00bܬ 4Pߋb>_nMFY%MOaN$ʡ˖~ &($~>tBM%^i3ϐEf8UB '`-icIaͨ+ دR=ZȾŁ=5U#5HR>njky/s6H؃E oLyCG/?QE%FvMMz)=ZB.ϡƋ/•3O85&YKլ(ST eҝZVx'xaV4Ë*H]z~h~ i0d,K8CZy{jCF')b|xNJ>V{0e#|SE1b狛*_R"37Boξ(p3_<ݥ%-tɫBetƓpx HuRuɵ)H?mf@Iz͂qrgM_D|Ce +ӯ_wCՄYK/Ԩ 佨/Y0y̸7.]*ѳa !d[m9#{-;W[ U$mb?ci3ؘsq6ĂT t֠} dlv{Fyt/ټt̰KQ8 N"4ʻc'׸Ns6I ][#?wsb,4U_ f)Eď* uä6Go76ɵ{'CGa+RUA=@5_rgs1OUG*ʚO&Q͡4%nlc=%Z vY Zeਝ4? eC` _wvĦ10KB/*Brv4όwM 0r `$CܝGa6;g-N_&ɰ.` `0M/s\PMf`p3 $A7 i c(y jӍ 5!UiMSD-rBFL&^:OF-T4w T3c q]2Rd/3U\;?Up=@b +TYRJ3O)*+sWu.[L6ǼA. 귒hoN_=C|HW Gz}w\2h{?Ur_ס,[<4DmD〷C/Fl Mr_򑹾g"P\TMIiDw$=` IӐ }6.jYx^h}]"]l +8"ӽ΃ǐL"Hڝk:^֖Tm.^@1~qxTlU#U75:LE|4&W25exz*̖̆;M0do^lpmaIS7kD#'͊$"lL?bADINmEh 8Ԍ*"vұE݌5Z5 `z~x[MN&a|b(ǁ$ch |cq)M_Ɔw>bSО$  Dpz!G@o3a]PnN2);K4 U"p+q 7bLay$04iCc9(6>E3a{ R䏡0`?s07y9'`Lq`ScLr&MP.ڽ,_ru/F=܏=1ltŜ 9>1lם +KX_t+ =#ثL +uuWK̹ u)F@jR_$YuBśGbQl+$,o8qlg!) n2QήU>Ytw(^'Y! %GU9, &>YcwU Mj"Zo6VWF9=al mynqA/2AI̐i +qAN?!9NxlbO{eiYQ̶>SZ .&sbj?1_ǡPkٟx`дY!n6fVJ?ffon06l)7BuyMAѢ&m>>Nj#4J%&|E]ۊ:i2g0io*6zXh +҂3;1"2ҍ+O?KjaY|nMHpA/LsI5cu*ΐDx!W {|mpq%qehrYbBt M7uA- +w%5,x+ z!Ί}|%wpȩxeXx|Yy$M}yAz5{+=}5"6~{άq~p^Q~Md~*XŸ~,LU~S@~5 ~+f2T"P{pUIpf P[AE;Z1ٓ0U)Fj"0΂op~7f ![BPY_EE;T\1撠C)k"djpmfr=[M,1P\ǑES;`Ћ1')}"Ρmfni=pkqr^mtolVurX wtDyw'0|Yz>̾jqźjlr`ntpu0rnvgkbtgwWIv~yCtxz0b{x|bh|~j|l|^n|~pp|j\s}AVtu[}Bw}0z~l;fׇ i +9kDmh5})oviNqꂿUtXBEv=/yVǧeP{qgi卞|l{nohLp(TsuSAv@Z/ryX_dִ2f}}hƖMk/zmtLgdojT3rxAKuI/8xσ[c&5e[}gܞrQj.xylfoDSr d@u/x\ębp vdܫg%iwy3kyenbSq@to.wUad`RfWh-xkkemn)Rq\@?t@.wZtf4uhvjxxm0xyosekz.qR|{itP?|w-~zK'rp{sqԜu#svFtgwwtudxw*Qz%x?E{zb-}|Xpzr'zssj{@(t{vxv|cwy|Qy +}>z}-R|~H(oYpq݃^s=uPt;bvSPPx <>Ay-|0m{opzrt?s^auQOw+T=y>,{¹luSmoou{psGrlatqOvk?=txj,{ @k mܖnlprxqؔM`WsNuȌ=&x,zj׫4lgmomqq0_s*9N uI_|2so|u]}@vLO}xT;"~z-*|Ly(x*yyr z$y gWTaˢĮkTd@D\dPPp-HG&]30;sCg( 1DE*n6ܵaz*&>P3ĸg| ,X񦁓`S$>BG DǕu#i#܌-`xJ!wم:(`[HWeQ2UFD`|:Cd2~TvkdEeUb2̽p ʠ~[@QdF!7H$ #dLt!BOK*G-iCrB.UlmO> ,B2W<+367ߛ@ )۠&KO 0ޏO igm82=D 4FB[!AIb4~Z *fz\OtF&ӝN&3xF[Hjz&3n14bM zB! |+ +/hw{V\lsTjg?қ۟u 깮D}û.5ʺ(wM ұ=Ljeo(u\ yPXƢ8p2232"uh0 ;(3-ybݷ3WdsF@w ,8#!H*9)iF^ +P7Dg3I33D_)JQNdOm2ta':=J.۱ +s`d+uu- ǵiȵ\L +kw/i&G1|91:H^gW@-Eif?QF?/KvřMkz݈uN0:ӎ3BJ]PU@׊VVzDPC9>RTl{=EY^ScyjN96b~mwj[ Zl'd}[YގM:tU9WI-#d=sѣS IKuƷ6i/JO{s{c@6oPU,'9cV~M6IQ1WwoT+mlF0\Od?oi4M4MC%HfM[r0p[p|R’/Ld/_c8]׍ YpFKM(Ewo@jjI0/kad[H>|/ѓL |00SVRׂV2Cæav4x,'L82'7&n&CĿf]9-f]i{Ta4EeNٟή"V_ǔ3tf65ҷ, jP6Ex)ͻUSu@6M6dFVSˬGŦwƠuy@>.TȆVOdj?#驺sycA)w,zl<ـB*7ij,\P#;}}~r4fxO"ZhNMBe@(78,iA#FaN}qǖ*lf Zۋ M2HB-7߅,yY#p9|qeےNYƐ*M}"A튘6؈U,ۅ#||(qW,esY!MANJje6Ç,}#5tPcjOf=_`rhTkHm=op2s(Hv "zbtu5k#jl_-$nnSjpDHrB=tytn2ݑOv)yL |triIs ^ٟtSuSHt#v=_.x02y)B{! +}~st(o.w]^`cCcHlVf+;t)i0aldOȯ>tsw[-wnw\-_AMb0ke#SsShA!a7kO|o>#r -v0[Dn^aaShdL%rg{`j哟On-=rfv-vm3Zp]­ `܄cr f؝C` jRNnb=q-vBw~o`^q&ccrfBti quk_wInN1yq<{u8,-}pymjynlpptnRrp/qsr_;utMwv2>@?nC)HKс#Eu$%`^>[ +(?`~^x0_+OËv&"YD>s5x']~-if~>NF" P^OG# ǖ0<7ӆ7 :sXL!kݱrx{6Rt"+@q*7k1U誘Y}(~\H`J䞂\ +52[{F;Onݦ *C{2Hpuw0D(MHOB$vKѻX{'V' 5c + +sh]T4I DGãTD(2BNlz9eB_ ݫ.#JUbGɰ Pc36߅!3?o/˼ 4Ta1l-vKWZApɾ<>\Щހka8Z5$GdW#{{ߢ! e8l&Vlu4ʚ@ԸQWJ"쎛)9(6gf y'1?JL)b쭢l]4LkۘPpuﲹ)nCA Ŷ+2dEH'Hm&Y3uѷkѽӭ1n]_Z<ڮRvӛpjm9G݂#j}dA-uڠ +0\C"dhK>مٸ:IFq\BVhF'$[I&3BtK\ D'`;I ["%#N\I +|?a8+ş3"-Aש_ZZKO%u6`X{cͯw1 $+OM{'E],jz6+~ Qk a=_/E qbVk&S7fg\"&]KOÑ: %ijeB>%j:l=T1e~/ߪg I0^YV)<^ϑ% +զՏQS-WGpaθD8ߠ9D֑ՃXM' +UJ]I"mteuuE)-3`Ҍ SoO6Ju@$ZZǚ;oam>݄92)@m{>-V|WU>r$Ӳ]qّ¸zEYuɔ>GT@蚩\'}њG9mp.d.@L4c&,r;b ӂdlt3ݦ]Q<b-w Nk k bK%H@ j"W4sf|Aa{8c%J@bW\E':Ehsř=}9fǹTW !3ߔ% פԘ]YzĀ&XIkWdPيb]9gbIi $ O1wu_)xS$P)m/UI .mpsf5Uwl}oyh 4;=DUIKSDSjj:?2*w0P4o+G4O6jeu HW)ϛ=ݮȆs51 okaIӽ֒Wo0%>#}?V5N_r}%7 +Լ{!`D}K_4 +!Q\HҽzȔHN>uA-^Ჰbg%+k58W #wi+q0khcuTT[`5Z[`J &-v**cs0:-7o3G(Z!d  z Q}vx'E}aQ#*'viƷ|'in˵Y;eR{E1vikYT24o/;K |O c +Rr_T'UtKyγzaL= zs#k)|OĀ܇:axim&&^cŽoIѓ` +W82K/ױϬ˽^ipuO:JD:WtG<8YJ] + ՄyiZP-|xm4rQe`dZH ;4SX1̚`wpu>7 H2%Cd>zES?+&e{\Q>+) ^T9ZPFV+@l@ A B +r3L2$$x *,^-ڷ[]<**RInpdk ŻΫ :C>KXi<_TTՖqcs.JmZEŒ:^΄hsVIbm8tSX&^ a*Ɋn^m=A2s^mICca|k`K{"Y١:nf,ڱW x_n~ +!f睥# Aɧo(u +gįVg攷E)?n/ؠbdSu3QQIB`\C!d +P,2QC[Pһn`RXYU^',|Y5G4-},V{:T5zGFdx|4Zٲ u'ʦ"Ww[f^'0Xcx2rKJJDJmB|CÁ=55oc/hNL9'0jI. =$!_3s^>pX0]ScԹ`gi9Q?+,O|ekkC)6bf!),MjQZF_Y[-ۈfiv&mH!`5oIxudP#F +P&h_2nnmMsC?wOt[Pk+jnA ǐHځY*zל`L﵋TL01|w:44o(%j̨5YJ_|fyl00DO+/.5T"$8[g)T`MH?Ɠ\fިÕyL/\Zj@Ν(Wڢud>P"Yd'$$ʗVJ+W>pG[^Gڻ2|M 5kci{ZJbILFPCR7<]'wKÍQXb* +$f»~ ^̈́:)]}pA(+RXzE;b1t!9ݠBj` d> !L7gh%7nׅ _Qg1R2Ǽĸ:@n\KX)'WIC0hݤ!XL}4l5 Vh2,?bLb#(sÀytk]:ibP_"2S&F ߆*:/~5l6fݻ Ӡv(l1u;8qi7mL[@Wxlg Y<#nMDyYZOEX;/C<_IfGuROM++c7S +4ƊaZԃu Mߊ]>]o/m^&=Nh̕.g*>d_$ +]koj-]wz`g`@XRSZ^6uV^og~XQ 濮a%{s Tp4{HLydW)YU&R?FD/'gH7yOG +S0᪄g :po)-.XF:e*diG{.㯙nwn.tY<"`7dsSC!x$g:SX9Y%r_']4K . q cYv.㏢Mrm*ADbW냊M1Dqby9mT'buq7Or }yXK8`微.;~1K}wҭrB;ҏޒ &6 Rr*?j䆑lugICkM|vhZYHn8VzQ3N??֫zGP5|No(RGJ[5&Hs)qq}^&2n:zǰkFmP03;7Nsi+ZiӍ ^zs7Tm , zb@p22{96ʄ/= 4)c x +t&83B-(;^SedSy7yG^H@Es7<AQ|h[\jeZҎy1|i-M']|k!3h{&m5&[KiK%}UEk̀u hT[*FkkOZ e ev]G ؼ;GLW[d;oo3xY{OEk[@|l2섐^򒼗F6a 9uUQ[Em'*uWAw:^WfAw:Rc$DZ9-N7~c + +?;A34VfO 5*DvUe_Rqr_pMv]{қ[;f4( c5ڑGdxEjO-n +| g8 KٶŲ]{r3J(?ұqlu;S7qWA}ǰ=o +nxg|GCTpTaH͗O0U`llڤClt0jh~pڱY_,x',IUjn\[M zDBb<Ô]T7S0Co}2%sF͘MQ ś!7fSѕ&.!mFk(+O Oȏ@ W1fG 0JZ-#=qb>@@gIxFz|޴\E=Yg6atҺ*SY5T9vh  %2{}n}I90v zRf8kOʼjVo:*xH3_ 6WWx4\;5juK::i7rʶYAd~X:J1<;e +(;MsrlڪU[y5vw(k +-OlHWeG㐣݆L9sŠFp6i&xИp0C2}TxmCH#ѽZyڇm{+EAaWdVSy%ې8bש"SLL14$Bs&Bj&d@Y?O+82}-D^ݒD(PR{Ѭ.s!$4Pڣo\i(#u"D8 +:]C>6ڒ׶*m@1GQm lìOrusg# tk-ۤ^G) yۂ2b+PgDWB;T+4Qv{9輵;!f6~/ė|@r~EM$,<`2+oMҿ$ȵk뤆)<$\nnu|LX+z-]:r"Xꗺ.KW;–YFC :Aǔ+IU u+U>.+͋;SN@] LUXKx6 ͑8=*U4^qݗۥ>S韒+Ż eLsf v?m!'粈Yv0zْ2GwT1e{BHM, &fr(y)% P Ehl% +$EVDĶt o \~6-s//E 2<뤪t :mbpVn(Q7:ziZNl*3miИ` snX +U\Пbi0^Kc=!!{pwpyKH&Ș/UDg#M@1&yf_sIrŔ\ Bc7HexXltbu!hI +&) ֩ršbps;Cu GFq~~c6RbO'l"<͖z [T0}5y V|EWrф\2aAA0 /ɷW&aA +AK]מ q\kPU"Jѻ?W{j#'rG^$U)~VHDTup7eÊ⚊R"I^w0^+mOXiMi-T5ȝ'N]~{e r5Ճ-wA-VYF~UgBOJt8y0.{KO(vlJ uS0փyk^?6Wc+ +Cl]Eko%ݼ脦g}h0[[tVۃw,U^|}X?4:a<X s%هU)<@ZQ/[6 . 0A=fxIҗQl3\PBoJ]Դ\>[3?,ЛMOyIOi> '|2kxo6oy*Zo9XYifNP?1k𾠣 *_BupֲB[ 4Xφ}P73d"dٮ&<ăT>x4Y"GXF%Ngt2S 8.hpq܏#~2HleҢ(j =~n$ Y9PKC‰/q䢘&lrS1|8+ۺp5q Z(QӸAX!\$$$CsrL2$L%,*OQuOłBuUX뵊]xV~n,[|nC +-bY@X?(e92"կ)fm6@>_|Xȼ L N+VJ2v&ǂga:y*=>C,꽅zqwΣaVbP$Ԇ3H* +|tc^7CvfCUʆN\A X)MȊQrK{Fۏe"j%hCi24.$ҲɹDӮ?2]HMtaPZ+C9J*_r%QNH4r{W) |em}^e ٻ +.v_.e'T)V4(FoUgzf0=rƣ[(hGjKҢy}%]ʟ%(y쭬0L1sR1w^NJO7 نyoxõO`i0)¿6T@JJL#״C[!)9!w+@,&TQ0GU5a +5\1(-9]s41y3yʍ/ G䇫~IĴ41_35g%@.1N§ N̡Pi'74@rz8Z? i;f +cENOri@Du{A6.ѱ>1_:, Jf?/LCNN*E]٭!mq=p)ݍ +cFMH?b;t% 7r~L&3>ﰞ~6slD'9?6T­ϙ^ 5; +k[}gX0^hq$WKJm3qV/f̔&|}31sO[9"6ε6 9K+|dj8a&kɐ=9wUͩ?|0,lugzeU,}* e-^uGSoy77bC#Qşn[,( l^ 6!ʌ>":jbiq2$V1\$ǕwkGԣQ%[`ѐJ Ή `]+Y)u!*5(HIdaoElw17hYxЈrMyA39ScLYgBل*dlQ P/Džml)IR`i?ĞAY訌:et/ ysn琸M>dSG&HPe*p:vFӫ}9|%*CdڌTm ؍θSVkq~VQ< f +CB'LH? 6ǍZWzjxA|+cshi#a43 KZr?'H:m2AĽ eЭdcM^k^Cj#,@DL2I~tHGǫJ̀e W`_qZb +"pp߄CH I&d2L)xʪ*jXEtJJ]EZ_=@XY#>(UT#tgE UO4E]cDix`Ffw0b(U +Y]sAvjfhw@A,bx#iu+E_Xx˼U-EW'_@ce2b1( h^EN +`V[@-kbn_Pe:60lu-'\j|Dme;tHGD˪&աD!ߪ@M?B=rΕtSwo2Y!;DLž]򮆁˶Rf;˷-r0ۏ첸R}"?5#mk+3((.RxP{K$ ~?uX m(U$C[KIl9vL"F]C2q.OI61Qx 1iQZxle_)O&uZCj7$6} A~8zXmb|n^i>]fQBchJDj^ k]rou#Ih +8ЂTc1)üW+-*kxueI~PE:LR] &t-¬^*$M4-bB c鎳A9ZuKDۄT}pp;dzx0w + 7 ? rlJU/3BK3hf@jm1RזD*p֓2O(Vv +ndmMAO;1S`M-a6)N˛,_ +l[c.Hі%Ŗش+#]lcٶ$ s~&b~In^Y6-쪸ʟ/FRa` Ei|o$Գh:)=kZv6g|V'E;R^t\"ZW +YnN'⢒LiK[!6bjnf$=+ *.ӃKvIchP*%zډ,1-pGsD8DC7x&X8e!j5kL4Y &XqYLA)$]s_g^.[fx́{sHq  o݌ KFaa)1$PoגיDO̐Ńwq?0$װޮxYZN8$8 _ُ$`lcZ6ݐ?ȇY+0H5zቔkQ}Ö!~QQ2&P{BcH|7gz9^sylu^A ;RckU>)vQ 8:oVcsK68#7>^nNk_<w*>mڹ3"ΨŢl` D#ޣ7W-#hD:G"DxA4 >X( 6b-X>*'qkxOOX+{5| fP|~NEzEy?|S-2<3}=`[~#ltGPj_ _߷,cn$kaM=UlMQ"gɆ 5iЉ5M%7R%qvLSG[]]M vKsw>q| +7pL=#.[CjϨ^wUOlTvCe]j20uuFfձʪ:AƆ"E*S'_ +!Z:Qpt47rv윽Ys9{<Fr׃d+G1 F~ /bm1&&x, ^ LtZnDz4g?x7o߽06m3fB|=ksΛ 4|K5~Xp%&(*,.0<664^?|X@`PsB#b$ PX<1A͹O3l.O IrOS#?UBP' +BPT;} *~>22 +EOL_~[ g ,v,cy]zFl(}FVύPq㫪J6A$*H$Ρ`v0;f×9zL2ٞQC|QM5xzAR+Ԕ k*xGjsH%Ť^Vaݼr~Lȡ3h5$؋#2'$ +,FP].V!foDc&2`* _'ǹ{# ݰw%{2>aQ*X SV*5r1V/\2dL9x~dE ]0 +^z[AKmILŤSK``;m\ojc{.]w{]}A][UT5䄚T9"#֑$-QJ֙ +(R;7n^윆a:VVTST@e& +PkLlvw6ԷU8{`>5#8-Eʦhc5Ij ɱUx(EUu=XU=ux}{tjG +4a(=Gr(nËqZTivU肝 F7 :&|ؾĮȬ8CLNlG\nt{Bvx~T2?]ъ?:B': nAS+w."nG%PBRBz^MLpz&*T@ mHh؇Dc΢&ZT_Wj 5yI5LOї5m + һE/`v0;fˡp;ϙ־A}UlK8SQC#kדtYFUVErAF̾!b7E|{e wY쓌E8T@V4U4<7IIiA(R@: j:8vug*tE@EQ*r 럄B; !rIC@V@]_ӇQ5UW/)aY/-Ry%F2"  InK/i"tY{p8d|Q\Đxi'6ĩ/UUi5gԧyebLY(ke&\1q(h-Ev;wΛ6 !5kC(xH@m՝N&וy UFeaf5n\+#$,۾.wAڐ&T%_}ؗY6"s 9G&j ơR9aWLt~-m ANv$&! 2p0t{z$?5Z uTj]Ġ`9t& f,h؈!%gS$&T<6ncK /'z&bp`F*8b(@H3x!}': yo8IP&\P{C@Rt(ɓʌ*rH1𵐗&dx'McČ`$f>m|S~䃱ؕ$x0mq]Pe& i#eF6AWB~8QChiTɞ <|]z[u*nz!bg9Ԓr3lq Xr3" >4SPh=m@A8 {Ͼ+\Ǖ--F3a@4M6;ҩ'Z8JԐpjj6 DzQ0'չ=;Qv(X N#0-z#}2Ң>ƾ#Ahw8Vw5C/[r:mU5fYH7H)N6S PX'>}<5ӽe~y'NNdtOݗdjM Z̓x3YAdECM&-ڀjG ož>ْm\-u ZTS#%xG;Ѣ8]0^`#Hƺb~ںnA-9*ViTR8 +`'yM>aATm#GђZVZ˪ݐETD_l }mϒdo8zPc)VdjGT *:YϪ z*MSqKP}W7K۫Ov*om;Czzqt}JeVl|eryItV2j)kb腳h ?|lIlN^mzQr}\E+ݫl([Xp1ٔZ[m@_Xi䮠pvfy?q)?GZ3=@W =T2lvsdrڰP챢ށzE     q5YTp +yOCŻReb &l[Ghmb9M%>]8!p~{gkl’B42?ȩVnI6 +e%2G-8o QP6ncN/J/FQ&= }-9>#, +>nƙ,Π z,>3'ЏԍI6Mo$GWdosfܐT:jGyhKڻ)k[Leٓ#ceA>Vl oiEǪ2p˪lMe.{J~IT"Cvnc53}-"ÐhI'ِ,kHM"D[YjsUZCM:fD˂+)U +Naa␽Zfk@ 0,"IBLtrAlĐ  N9Vr:#Q1ha x!coDjԀE_dLqi&]8NLSNIS/)WKlƜ5==\[jTv]٨@(WKsm!fwO)iiLڤ?鑓#tɕOL=?ٯ9,o9̳t2UAP@C6-!d!@ BB6BĂQDkop94Mre9*ӍRMd0W:rB5*G1GRBd; ib"P'dh8^`B5yϕJ\ L΄*nW2b߭L)3t*E&' sdr* i@s?/=:Vh,~ߗ;{u15k}6EnA;xobhS$u,N%ɕ8j 'q/qO=`S)г ,Tרs=@o5-z$^˚Fk3(lUA?5(!4v(_uw1ff:w-}hXKvzqAOQ NϜ@:&z$B/ $Gc*8?z0;ߗ]/ZZV#sY]X&qzlKNCd P¶GFޜ=;èj!,z5ϥ+D`C^n"NJf90 2?}ɉ=yΝi*mJnL6M$_e A ($eEU Ȁӏ^9,>IoGs}YEHBWh֯յYTwL3rS1MOeS-)*d`[hh%؝jӣ͓\$|[XRK@-_JoЌ+כŋ8V"]?/&{d_$]B?,kʯ2xF5xun#s +[oyDs?{how1,8 fL?CVAyE% +K.?)-amU [5[ڜȺMtM0o?s}*Ϝ|-.̩ {JZVu (lIneC6%FQnj̍;\M{w 564q@p${{bKXQVx &\^fA{O򒻭m.B0b @ħ/d?4m/o +y0wA6kloz=vVtbd.RC{,DŽ4]@Г zӁ4#L#y,xK|}]XÿC>A𵲇i6pD1|܎,HψP(@c ii@Rq2[eaU^FR6Jz!` {v' fQm)0}^(6Rc$5 (r~P,y9wM:(^։gDHDϡyl"0A4t!5F5bl ”#@ +)ۚ+Ou`;\ mqׂZ4++'8bqu2ǬN Gt$ F7 G,)O '6bgSo/+WuQ.mlc`rj($oQM +0rIF?i#@I_S>8Z7gW-[ܫ J?&[1Ck\B"mф;[ + 7qD +$fØt;Sj͖%qzfg,;-^Q`-}"ҘGHv- 35Sl.J7oÉ@ 5pNgmwٱٙmu*ꊸ/#7H NH  @HB\$77!PxE.ov[O8bD>Π)Q6AY-aWjLGU-oF7k1Fj@3\=ۉ <'#Gޙ?uߎo qxeP IÉh1nzY=Wu Mզgԥ'(e]-gCGi.];^ɹ>~o[?) oOP^M!=aǠtRl69m^rU4\ O%%-,O]TB*s;?Mw+Pmv{ւC)#HܥO)ih\LC.!K'b1 HQs.w{ϟ/2Tp c6#s6"bI)i+˰exVz:;9 sYAnSKG?vOW{$a R*ը1o7l ˯WC^kh+qf7 :B|J+*u}B2#PCѦˋS%e*:g cCh܁li) +`Fm5{kï 5!>s^sUXt9UJ厓7YΆ-P7 $*gz0W]yl`\:XA>s97<5'&cE=ffӕDdyix M8ZH6."4Fm Iz9)d1 ź F+)mju@a7gDfFiUcԝRڊXxi>6|XG/@@+$kaQbќ0/nMҋ]%:c!רZTxY jq4Fּ]Xyw?=5a'v:u]㌵u=,"@n9 $$!+E@AHGBBpEA."(hA P뷙ӗ}Їw +oPEiԑ9qͩ[ q)Q<\Uh.gY}WS(35QEJYj)zS h/Pk<^~'?aS| A :8}F/R+|cha + 4Y^HjZU7 +[C1 ?w<}Aw{_Kyē]Pmp\+ؐ- TźˠRVYĐ[tX;-i(i7[9GPq4zg6@0=4kֈ\c-MANTij *A+7V |ZQ4fmld/ 5@ +ݽ#]w̋Usri07mN wˌ|!WQRQIc fWlerU:Gg&{ q? +n. |f0rg$u͚B869A$Vˊ:bVoi L,EUJ@!Og)Л@v4>4=A[+g $fy4"nv,9r1gJc:5J-AYL +:J匞Y*ϗȭy5Zg!W6@@6,GDOMBӆF`+٘^-+*uj/iuUcnC9K)7hsz 5]Nٰ;Td~>TJ4& *ow} u?zXcΑggS+~P2u.3MV&*1Z,_e%I#\iPpYRg/PphmsY}~'kGs4Tj`ޅX~>3en؈24"y 'ʸq~tZh/5kofصOa8s߸F_$@3q˰>'n9;7^^^=1.5?jD'_X,D,Qn?t/J\p &w!ב0؋gTStZ*j| D„=bCB3WYx{ot}5[,w$ 4LBA#oaQQ\xąʈ}IHNK ȇߠ Ke's}*_};v$p;$p\,1~ ?$ + + ! +9~|?}SRwp^@YH{VDrqQ"Ş'VpoTU$VdDױJtzt +*BM"{i1a=~oضR[ Q!q/eUV.yVH[(`IʪYL 1KWiE2c9rg0]DgQ])ܚd]ѯWiMU}:o@:vN?ćѱ@Fq?.[cT(y1oM70œh~8Jh.#lQDҭWF[3j;E#@O<~.;YKhk&qtd=rT}J+zPUX}Ψ9gTz<#8:<1)y/%O$yevUm:>Cn^!R$,@P18Qr .eFҺs&o|<#AD1@q47剜_NJ5yvAT8a@Â*2 +hc^3~13JEi颸r!:Aj$U^NMrs!&xt~8ۀ>4@sWѴm)9PV-kQŸiP8SYFR4c4Kl] IC4<Q zás!{2 ЅfNxfKH~JμΟuF^4܊prfJ@г:6BRBd +Am-[[ꍏm@Ch[kd+>~r`vS!CkBD+Y]d=a&JD;Dlw؛7c_so` + y툈z6tk4 6֗7Z *-Kآ&%ת#qfB׆cʡ2 GMTC?.X [ZH5:Wt6譥dUEFIҬŋ(ZǗkxZ,z0= >=P~?Y9=1y~4tV$aix%A!jLsLdEԶrV!tZQ<s`i ,{߸?xQ#/Ne`%zyx+UnGz)xVY'iNCV`k"|FyT&`y'_z>#n/F\Lz2Cs/)Tb%Ӌ\8yU B+|Ȫ/: {7Ӟ޸ho;A[,8N(V'O7* xUzjޝ;Wd(aCV%l`PPyp<}捑^gՕBkQG5wa…g7pkŭYlhd˿L^b/IİK(9w} ۿy7S[Zh=(L0~l.}-ZYn@."@P +gSDFd{W5d˸:n8 \o3K>^=ݻ_%%4$&8 j%| A +oմĶ^Ƿî:fԌ& 6-LzH| b?ӑu[}U +^^_b6QYU82Tݘi-434o'iͩZRn +ZoH͟sӹ?}W>ߪm7 +b#1en ?#s"*aQ{u5k ixtJK} +LjH +0}0:[gAM vtv3tљvZuծ]uC;rCDD @ !`BBHHBr;\BZPXnŋu ؇}f~/76ذQ @Bbh\Yuun^R! lQwLs6H-M{#RpRʒKʓ7k׌MrM'?gİkS!" q8@& xw3KsޖG!禼:􊑟 %X~H<齾vmWkaİu~AD +(Dh>F,AC~I)o|J"&xŭԤǮ03bgF}PM}3-z[6|ǓoK@C' 룐A PtD`#c{xʢHjl80bÀ!s'<jc/q/Ӄ@ | +8- QMxFeU>iHR|/1{.K<['-<+AIgPW7 K g + N H]iD/X"IYEMo( +g]Ytd_6]8|pR~ =)L}Uz{@ yf4HsRA:VPRX[CYqDu*ܹr. Y%3XlsZ~=*UN^i\U^,t{gP5y - AEr(ӣAeQq>IY`<<)`?5Y^2]b+0gnϪn]T_\Vc/=˚%>x[@A#I=,-B- g Vm<Ǿ_%߭PfZewJ-۸?{5# %SryUC ݠ>Ф'XʂRlFyCrsTI0%ŭҐǞ݌!Wi KFMvWZfC?]>jqF-VTyl?d^6b#Sl0bYKO̹4KftDuE5spx!DGSvWLv|j'mmcUZգ_E&Ѕmc~0 ֑ܙyWk:nv}þv sv$4y4A֏K磻2nuJUaDG222qwQ؃RpaWPgM/ uLnmXivu:3_0%yN䍡I/ɴQ:8nj %bP,|Tv@^@q;$8ΐBOGhOtP___r:!͆i`=li_(x1ra q#Ь$ $v@mdx8$ F{8 +;("a)^STS 7 +Ә>ɟAdL bc!3쨠bUom`kRS2i@1ȏlr>>^@=͚#K+ڴW+lc4`}_81CQ~u6hxF 0l? y;H !?)|$Y"3?iV徊H!fLSI̝Itx#{vMH!!M@0cr?H+e.%fNMcH͐/dLk V-I9wȫ_G 7^P6P%Ȩea-\`XL)jYFX| ך3"紒jro/&ꀣmjv;!NzA1 +1+d)VasYV.o*X0N?'Tg<'TZs{ZI=yw)=?S4О\ p|*N{?(ы +Q#eMeXqiJѳRSFz9XFRwOMnUzwOqKqOVgKx}E5qcu(:ʢ2 R^P)R @JHC"BE0 A\ gnև}99? ^!HyYz@-F*#1KcH9}b_Rh2/s/gf 97y7 HPa 0WRX3aA *v=A)%(j*5ybf?7 +@\MH@2 P7]APeB<*#q +r|h%x\N/bz|VViè- +5(n@ +^$k +$ub +wkd߁zf0]1>F)\d7KheRUr:[Dx%2Q5I%euaYI+tJ^%(G-il \~NSyU0.FyaM𔋵dCPq d&؜L,QdJ)BJ)dB֋$SC wNyߧ6Ʈ6/> +qJhMIlm"Y+q &WQ%+ŕm +Tbs@@ӞEoܭ-~b0䤶2'rą >UepKyBBc^3XVVIqUz1 >7O;AtzB;~ICțF-LZ,8GK(^4#J]cz9@YA}O_\;nzGPLh%%lƲ.I*\Y(ؼX%mK$ik ^-!Bs@i +?lu?ov9цwD%HS2{31| +n)c!5*!/Q)Hj&I A |sPsp3F>M/Gl|tĺκ>mw3ȭUNӑ98żbt,Bw2IjVs:L&9Z&9&^ MaݕɤvOeq'Ey+_hbh'GDzCȺB(kAzE*f5Ό0"4ӌ)ftPnjXo]+o?سB쨅手e36M$Po(u +v02`Ry=0^G/z*TN k㷩a#3 +sr%ۿ +Ve ˴?si1ߓAԇaqIw3SY*v5(Y51讆to40xQ9rl|Wӆus^Y~mKw|NQ^#Bqsғi1s̈9Zn0/GϷ`{|{cn[:6-2vk-oVZm-FC q4Fcqƴ(c j&Rߕ}L{#}9,Wϼ3 , S!VCfi}ؼþMGNK?z8O.{—`bc?[BD/b>bSPo93){J<#}Yw:W@F4 WAZY۾[hΪ8,v +]#xA7̀}@a zZ`C? O-"ܖ#>65ڷ;2"{+vM%\ -ypI^vq2_gQMg9=ǥ=Gg>(*(Ȏ;Hd%| ,심@EERVOU0l*wo{_;Ci zCg н|_H)Om;ݠ0ʃ]ʬ_Y4("65p`63q' ܭc~3!>G P~؎wr+ ..:rN@uᎅEc *lظ +zHMQ xzAԾDkW pN8t8@`s$@fka;PYln "b HQƺoc.᮳cً9 ܹ11?` v뀍5}wG!Bj/YD}鈿S ++5wqY.棇xcy/q14o(v7kHx AAn8x|A +e=1ı.${5pנq +&+0ȋ9 55l eԄJtJ{UK?Mj>"k>G>EOsE7ڙ+2k1`0)쉑KxP{ +]D#؄t +J2:xՙ&V"_8Cj71RuӲ +6YPsMҹ>jY,BOz;[Rd:MRhg75V]={__Зsbc kAENBv?k|?0j78H89PE +-aoPoꤜYB#k 5*a\pP&k, +E|>O<3KbXC㟡m+y~oߛ`b<&Uȥ\59颦lY€VɋTg*uũ 6cdJ3Ft@6cv`^GKq;}^] +h;c;H N]/eS  VUfRe $7eMZYWF0W-3|@oΗ l1a ؜um%]V;B=vB\pW-%\gKERSy*ʐU(E_0}&79 @͟ +S߮\tncuO:>hp{+!Z#9RM2Ǫ* KH)T*mN6M2յ4\DgB9_2?B p%MumwuL@#pBA^ ST::8iQimlY"YY9}^Pd9(R6 D)LI3 %8)|'r2$E9)yW ro?(}Sӑ) ֩ COǥ]%c7M5Y,iY!iFy-_RM-ϻR?{9,Rl|RRF$5tYqE7 )ɏ<ޑ)  Y4PSF5;/xWg-^f72.ԊU!AyW2*R/}8Bfzc%9gʥAgjĥ:NwJCrgECzu6Wzsmsw~a5eJmN qȈԪkRbWH:&*_V/+w_rDgfIkU[4Pe1vGO}MO@ٛK_omϕY' YwFHNM?x=G_sb:Uݔɬyɮ|ɭRAb/+զtU|J +WmR}mNW)6'|cDŽ6%ňw3\Heܩ%w_J{1 GV(d2*uTnVyxիE5.vmyN5ҏ.b< >oDrZc}[-U$rD$j {.TB2/^#.SjПS3gi{ݒ>'Oqb_B]\~gݑ&ft{w t\ ꨎltz9)z68D WoZ?u#ꇗT ,iCzҏNF<,iQL?ЛO`S,W}ueyUL+vS;3$~S' j#*eߩ]o^T,7Y+O;'=#e4@ӑ/rdbO,B&xȏYhuX#wvݗ +C3깢L!rL:{NFN&&%ST˴}P<4Mt +/fVwWkS%*4ҩǡ; Ra:6p`F~ 0cFnuF##G! +E$Ks@9]0D Te8v,`X` N70I>~ r>ę["fȱ2E>ރwf6uw r3W)˕ 0b +WS $x9[LkpXBA{c7$;C#@!MO/ X/AbAh)c52 +E0"Z+l xj=ir$5w« /Urc3\嬃hD1w!av%8?)b|Jؠs~S6$ o=OQ3MAdpm:f2ɷ@Hq$KˡS YeLT~Sz7I}t _(Âh#t! NuM5exuH،x1bCp = Ȣ{v)Ki5)Zޤw=@0A}N7PF,`Ȅݾr<`&OlX+m$9CiFg#Zd= ̠W5o*oQ+~(F{.0F0Lw$sD% lggEw:v/@2ڿ.bϰ=l.R-:{RUp#V$BB Y$9Y$0Baod(PW+^!,E^y>9/yw}qzP!qO( CT=gd W o#oŸ_F M"#Q/IѯȷP(7b5. 0w~B~`9PXT?9; @X\V?, !tǻ4̡Y%ԴjH#uz:~CCoX}:No\{5MU?ͯO+r3nwfB` 9HY}LpuD(09ZMF5M.t+y&A ?,'L2򤨈2% `uM%;Ěsy~QC| %'bzjb72zjRXMI\I-)'Kb mB\@ḨOH8Ww~rCsk 3s63Q64r6[!¶K&~˙F"D]?L 49.5%Y =7pH`1],Y1W|rTMOweC/0m|L"H +Qo\JhKٍU}_6HϵIӹ{n OO?|{e/ʏU{Pu''L٠KT2^fq OhgK ^\RQ?& +lLjwxѬw݂{"YMв֞\;Tw}˄ nʦD֤ctB5YN7)S92 C'NEEC,PGI1YR PJ[rY¹}'}K5Uv Y/Ηg1c|I'SCR(NYd*R!Z2_ɞ*!hTAc2px3H]}=@]_Y0^}gwt# cOU EttAVJNSrY&U+UJJE1HaU@5ikwxN|ҹk5zC'KԘ<^-j3$/K5u&-Qp5 J暒Qr4rn,Am@7dK[>Tluٰ}së otxՕ`ߦ*P'B2p5 (\R' G&w5\gZ׻^<|}WwVPr9꘩{.+a%R!(Pq9g83mRa. $rt >SWV:rk>WX}rKEGK 2؀9ZG@$Ub\TDc+شB-h.YK}6(E[%XӸ$.wBly; +OU+ڼGr꽳ݳҚ7y(n)(A=Ǯ52:ZVf$+̂J]#EOP)=@/q֯/qxpoӡrΟ}=K+3FNȺ :VMi ӒLC5vDS7<]~QmP.rF/Pm`C߽yݏ:6Žў%GVg  uDЏ fB)7^^Lu)6Z2>u䝆c Ъh](VED$ +*d/FI + Œb#ngT-.uGܷ0n +B39+r?%RC]9˻RzU.y;w;l`Wqy-g?cS_iy=*| BKZJO6>b)MSXT*4VUj^cu:ZvctWn`>ӳ~˴[9N;W/9'%j:f8#mϲLviTv:^֚ۖǔ.[Wd1uV#eߴj%?Pbv$k4mv!&2yҶ]7tG۝8 /t)]8IWN0׵^bvWrRsLyc?=*˷ /m $KQ TL eP`F80+c_ĴŦXJU$& U% J>=r25j"#C##KnD]=q=ɑgDGw>ѝW!p|!ݲ7=^Jp|Rq^>(9!Q( HaY1!;BG.;QȞX?2n )~c3:Q/H&à r"d(|!/1B?T`GMG b ֶj+}<Aw#` 'p3nI`ǃѴ(ȦG@=# :d Ry=[9}Ʀ߷ V|aStD}Hp GP''C>i>ԓ}<9S|P6%_z=P5uv1 ġP/r. ܙIH@Z^(%Q| DJ/&8X`a:$I!a xa;{K!Ȉra93aӡ@ +eqqu1Syn-\Hnlf裆XT?go"aHi9C +crY3aaH @FVҖECm<$ 1n&x k&i}V3 #~{Pi کaa5, >.A C+Ĺ!<20DC:oe@Xu QS|pS\(nD{;rPo,'!6@f A c8Lש( _6 hLj] +䛙āh'#NwY3a)X<,a&Fc42Q)mkD,Bg_ ܒZTO.P&6+%_e- / _'E}4pR4Bo`,L\jV[x~IvX%=!+9x-7+__)[T-=YsSn\V/*G5f. 9sPl8PY^X#*EP.r`i^|onI)k-筮EҗvElSecM셦Y֓~G>A^W֯;8"߇UcPwGs-}5bc)pڳS2$kw[4UՇ5wtO7T]Kzuᔦp?VM63rz\?Y Brs9z!p2;ik#|r[a[!g=,Ʈlׂw1XWef ƫVD)tL^Nn?Γ8rFJF7qxg3Pr|UO3& S5`їƽ}/0~_5t<᳷9h[C䙆xO$_TN r0󖻍\g'9YߎAZ-՘MOd%LM59U}v!5J@XĖ1fGyPdвp.O80v9f< smOvcb8fZp(%-$T,,5K34HDuQP"KٗdZN<9\vupdi}{>Q `>7ZNHM$RCÆGda+2ZB'pĂp2SHr] +j yhC_K^hyb5b=lО# pQ,[8XG*cE_ODNCVNš)i8GU;ۈ&_HfPHZ!I!q"EmB"~>"pg#!(Ohg3aNQ4NB8kC{-!v,t5J d @T~|p7c1?#HKAo*V"t@' @ P{}dY7` +b u: Z34b(@,i!֡%`D(0~N} G69?CL  [(B[= q.Ш=4Bqq%xg`]y=;{5x5,k 2)Blp'0\Wx@c2;U ._ QM;#tp[\6scc~pG{ÜʘT e0} 5alZ(~'gYb.cny8=לOO11v +{*D̿D[!އ-L쑾h hśH 1%:K谺8|H!rP6 ca=,(^%~wBx/[bE܋=!9a grܑN6C=ڵQTUnE/?%'bW/wsᓸےRȬCAIɃL;8bXɜ!|n>sZzs~Ē7 ѯ4[؝>sQSYr_?ߓߑǷKWҋayu!CNF +;ڢ0xǡؐ|Ѹ#i{KcmJqkjobMZ:Oo tgw%;y}w,p>zݭB/M6小\!8D߲^7ZՐUPq̸%5:=iszGRUgcefobEf +b,g":z_Jמ 獡#NvF:unrsԱLvSQpxWZy}&6K&w*簩2yCgu9Irr{A"rYLtފ#oserɁ`{&^ɛu6LfJSdSy:qMP\Tee`KBE~Cb2isjrqؤϷ&,%!T ; (]@{:!PRB( R'DD H*" qwPagȇ99ߒs9I$(BVK S%> ~"^=7y^as`&ETSYAʨcGq'y3좂s‚nÔ/.w-XOlDde1%PD _*s:bhqИvN~Vqt`~xv>ǵ6Ç_TSq4Һ"މDnW49z)p}8EGדrlD@`VFExߡ³JdT=bH2`#7>"ak{?~л>;0y&6)!3)l09l:`9e̒ (FPyyX햅#`\/X˜pQ<cr9Ut(PZ=/2*PmC|zu;+lrJ'&I̩ZgTn$VlDt_$ X' ڤEmۓJper7ujRzdYgg穾P3Qֵ]SNA&&t.C#I.^hz-;XO#v>c>N6nkRlrk}xg.+98=7Q; pa``4ݣARP.F}CycJO$ ]ㅾjQPpav:MaC/ao,lfʹ%?wHo, ןDY\$o4(^U5"kUfJglYsVXV^ R x_md-;]:fֳ{l`^`h>jd~rgc" t^hXx@@!`CӘJ*䣃t'w9O~[=>*~fnsK;jZ|[=8t#42B/kd@su:pPQD-JSь6t7t䌞[_Ce!S +"gf(`*`Tݍ=.ne4.OH"Q(D'P\ЈhCFG t}JaFK!k.:7ict5A=Ș0EƬ_lWXi?M12qJ$ވ:&$*eQyPEY+:긺 (# ~| G E 3N:8ͺ;8Oz@5!8&cǴ +|5;Gk :{nq#x9g 8fӸ/<.ou[@1?s!p@3 if o^9-j y;Rf5@nrv' tR/2}e_^S\?zqfLxÞ7$>hp ANAF\2r6hjіI,[t;RZq3~.Ӿg\^3E&$ߑN_%| +, @`iRkCٽV@8y5l 9H:ff +(wĬMқ\?'?z u:Lw~v{ S?xJ;oe;5CB"/oSlKlYk3)Nd;9ut3{ܟ1N|ʸI/WIs >@e@>AngkJXO]%i2Bӟ֯eǤ鎣2Մ!n 1!ktkk:K7J?(}\[0G}Eb=l AdHQ@[!Mڮ{W{zn4yX)(6~;aj<ⵠ*+6EI>9?nj3qf K10$H 0<_^ ꝉh4 ]\ܒ\w,_!5{omwrqqQ{/3=.iH}!徽jϾ&)id`Oˬc6'vMUE]sz=H٤[ ע/Kj{FܕXRgkܴ?ZWLdUE7pQ=’_DőEQoQ3C:~AW= 1%ޙhFIiV V\-[SOxgWVS{zTg*|$1ZpqXqU_-khbOc/scs^r⦅sx!!n꽫QZM}y6Tvnj +Ҁ' ;#=T>)2U>(I*ي.Q$]qWVS4)u߀`_vP@cMjM給`:IkOk[ +lZ +ϗΉ#j3I%iCibVvr/]$8)NIC5Cǝ/: ;/1n&K `ŏX4jFtM@- + aPBzVYaLYㅘk|kObX3ٱ~&6r6ȻOOG6ɠDW9i"ӽQEhƜ ,0b*e9,'aՖS3c3{DQ4H0)ځPqE! +<Q=0i` 4LOt=.a.ʰ"aDCE4TQDU8 cPf([ .Rn(ASxX9xG r09ACڗZ1Jj ֨IGբ8hJ*\'8(>M\'ot b`8dLT;YR6*q~uF.J=QrNި?(KGyR$%zQQţGC1 0Vg်Qf@e;b/CxbQި$D*,,  ]彂w9zЧ[0OE-z c LZ` +c16\0j +#ڭaMzo0|?@uDЧj*[>*/x}P~|ݣ|ݥBY0< }c% \*fS1wM\H tdrtqƽ7jCd n]7{G}^kNtiD/5D/4Dj=|f~Rc5uԙqIDQ⊈ȾCHrsH }; + +#xZʴiZԱuZ>sx9||񐊵n.5YMAJ"KA 5 *#pL6#-pͶz7ӦJWn]Rc&S٥";H+,%p jHVJbe)Qa^b(,D y)|Z)qn3כ X)a zmVoRG,K)kȫvٕɎ|3LV&V%XU?@Uw(1ſ!1Ő(ZeW0Wi x6}=A{a.'M6eKȞ&!>6!$.ݙ[+tOfUUFW#ȑWy{R"wypьÝs8>Zﵡ7"fi-hgMoKKiIuHl7Iz7QCi +n +\+k{'B>p6?7{qevCd]@?ߓv> eЛbw8Gv廝xw{S;|)W[E?r/~V迒g9jfjk`s@=aSN3w1_3"ܑН]QM^i@AH ,!!   aȢ ѶNjkkGfܵ"hE .qj3/s{{sfW/=4rl4:&eUԉU'br(PV_}P#>NW8,9u >K~i]ԅ܋/a坟ÝyDUD^Rj NOD{Z\oO#"V7ЊwXN)iQOͿjr˹jʺZ\25/$7'6}&o 7}״Gm:i=ic l:;wP^Ս Ϳ㌊|QMD[}fpNۊ<zǷ1tmk|cm_blԶݜǸv ?6OvwP;;ye*pALdRԩ3vΰOJuvuO*vt/v^^ٳK޳[s.=͐^cHzak=U>GhùwK[w@9(+JcԾ"_L+)qZ;@U=h̦E;ȇ#J$ëpKi +נZV7n7ˁp;8]~QBi8 c>H7'""zBJ*'T"}kC]dR!EBXd/48pܑ~p֑ ͎,xx5quoC('u"4c )d $L.9t?$\0Q ‚̷C|n Pݠ}f>g#Ѕf!8w + +W(|!g5q ̤+$a.9N )Br=H$$(H-@TPiwgpZwl!_t1 b v{ cbh01dU!$Ą Va8*Ĥ@= >re(>/}K _2AR]`O!tZ +WR`HR~E$bP +ev0CKq'@7' - r\>&@~ aأ+{X>߀8rɀ7(qVH pIj*$&9f̙!vh7z+bMDbGd*FU'9oTת+-Πӧ<S@?IH䓐0)IO0M_=_3[|5略3h5gx/4x57xk}10=c ֟.)~ HEnZ{4:ML5y$҇V'c0l{nj]^An}SwQDMЮ$M|[:A8n@,ҘHB>#/~|qĒ2U<}̷;u 3+ޣ&Op/Bh3Pxtp_t=ᙨ*рK_걺I& (NBQ(e(:\ Ź77ǽ#g={ U[Zm7SH!zʿE-!ƚ+ƛ9ji&"N}} {o7sY Rʳj)s\ΞMoBVkNŲZД!cR֐ȧ̻$VqSmDcYi@~<4VJ' s<0,bK%!dW"fŹbR~]ʀs> *SINf패';Q̨<Ѡs,AeԽ"xBBZuh)MְBXRȶ[ȯ)\.<9q]QMi$((H*"@V,f5@ !LK@(h5x92NGǶsȇ߹~z}c)̓*u96Ϝ e^*3WuZM?YP2r}mob ZfkVPa~RM|%Qz|Ǹ$~(ŵO%n +%ZnUSOPj8=G`ߡ_ҥhܟ)<fA%z)U#%ܫefeE䶉ò3. ҼMBZ P+ڰ¦9$P%+2-%&DqlZ`ߗ+ ks9l3k2"Z*?﯊"you@+a{6 }jKKKbA*huE!j iTo5&#YP>e~L`C&ZSXQr5\k޸qM>ʮSkMmeCJ)׻_V& *W"5QXN< @>Bsoh\!B-"y3$0T`½z5:<̶ɖøPFm[ÉZUGJ>EMʪ|oHY8T*Wy-$W6Ec-sFF*"odRJ,48X`f:` -ؼbt̡Bpק{+y~š@~,6<_ɮdUL2d tt[Z?tBɐ!䭐\oJީr1p {@0uָ]r]Ky뀨1dzX]ksTu +BV&*)LU*CqP|Ce¬Aȿ!mpLp~Wy z{ô1){˻O9w&)HWԖu㕧4K3!i03"Y3JJTϑ+ r|ȭ^:OuW) {hshF}p|f+iZ@՜#H1\%wc홗.:3.f$p㦥NNzj5y˟>?}?Oq$6nfDgpG p =I=@+B;D7xxK>ؼ04+6g|`rŁfڵCk3eO=IW_zFοC#fwv~Qir +os+ k cLV-&۞˲?f`;Dx; ejgA'зhv 7|fkg/] z ٿկ{x`),@ [ߙ@C 8`64f1ƳGm4c5ȵ4W+jv8N Z] _;{ z LpA8"4```"pP, RFC` +l¥zb'&jA'^R +4TxPQ HG</chm6F&Vjr +l&e +#n#D +eSNCCC@:*"=S,kP%;LQRBlt$js_%nsFΐـ޻9sG^xWSo-Tj}'润 MuyVMg/hF5DӠDdEa0$L!g*Si=j0DG3t9G.ߌzFZd-tm%mӅZ!?9rNGؠq;EQ=QGNZ (M4LfΙIJz{zX[3ح ټkqyVcW\YgCSǟ"8(s9~P~Tx>좸6xx!IM8JEo`iǒ7g`Yûl;x +ʩg[at5#}!UgєPp6i 6-)>$VG7yTE_UF?UcP=LxI ds0<Z@{-ΑR.¸j8]ECF.-D +ǣ_:N N&!Ƚ2~"RVws܏^ZqO%(ߓok"!dc@13E4wкXD]c[lظ ]lq|,úՙ3 +\+ֹM.}7מEIRN+g^3?*I1ބS8Ä́!9&1<&_b7r2Wi1_ì͍dIUTfgT6k^QIɷ<^3{{j϶:-畅w_u+7nJG騘=C<R}ZVry^).jpdI*/Wy`vs-q-[ 5gdBV.YMY2O(g6yK.omZ>a"^.#NzK\ g8@U+beV%y:Ewn_Bu.Ϩ<PD H)#LQA,"tІFpF RD *1XQp]f%'nf=G}s=WR*x-^nAIܐ84wQSQQ;aQP_B61xCTT0^,p̕_-]Qךnܔm^`UfWH+v)OmRIޒ)ܤ޹oEDBLH$ oA26.98]pfnt.*[;hQ]&8+e6lDzBY[Q+HouSEg|2R>H{-H#BK&E20\ߖpQ )qXt)*+4W֕V"ҭ &ۖg:J $\IN^vNWFv -h[i Q^R"K0T꺭bQ#U+,-}).$)" +&{d1pq5k7٨&+46r5 j:^q:(X̝),dEK9wkE5/snAph}OQQQF_,Õ2ڃJwfm4Յlț5{V5d7DbRd+>6)uSu墈&ކ.uCq~hН) +Sxgz7.^܃ZZi>5Pt:2e^iRuI*Knm7rKs=M2 JnHC{p OpCpC:=zW? +-4 ]@e*{磤ϖ)sg.VY97[pp֮(f):v!;ikw۪n{B.^R=lRMPzA]H-u̕IrbVύ>u4BcuGLBd.XPWvﰢqy7N}7{;s& 9:t}C@HĶQc$:2%@`u#BF6_s*ppqp5~'[-LjL.7h2h1=D[!b܍Y?.b/Qߪr#icؤ#7&s,17]Կ+_6dǁ\DU#c$&3+Y+&lU}'|2爦4SJM&-m):S]{ýqwx+}P2 +d.W)6ncmm,m +ib191 qBG|KV@E1aɂ:3jQ!9N,vP>'Sߨ־XԤN]O}&gI}D]\wa% R)i~=>BO͂82ٙ!.g.CX~خe6JlQ*\iTS@H.!y`b FdA@A 4 aJ"cD'( +(
Pϱ+߱}`:{uI ,c`#ց]{I|OdE?Xc{< +8b¯37*535.ClU4-B 8۰::paQpڱX'v1e| 2F9#a[ lA{̷Sɥ,s0\; +"_ h@ |9 fрW2:pb5 a|'&Gq b{̽D|^'Fa7BMhXt'=o) <_YؗڝW(5ܞdZnQcU!-[j!.z5{%-dp_jI:Pw1 d_hwWеL*D:臕fJ>Y)hץ(Sc +e&Ir2j}S_l_W- TC|)3I]':&ͺ(f^zLd/.XBVJ/)y+nd)˼hYh=w2٬ )vQ,yvi%)YaYYWCoadbτd`Π6AfҊ`u ؋M,hSbE nU/*H,X%%.ls>abAǐSN7=p w +%!9kųx)-vbE8{`u,= +*̃/ŖŔ fL7=[+"|WhW+BwK' ,:}mDss^R(shRX\)wPCTffU*'EL;mV1$bل-mWC_^!S~\[~ uI}q-v P߻`G)@N9@ΡKհSk +km N3<:fjm0ormڹ55K֤Uk|YxWWENѨQ?Jw0%wrf@Rɼe%ǘג3Ly)P@w_wOqץu*N:ڕyw[6~_U%1/;{xb ؅>K= c.Ul&׮VsǭX[-uMu^uY~%U4uyqx"*ʡvlC5ިxxŃJs`Vm\clTf3iwNl׶ݴMnc3w<>]لmqN +`TRiyFxs.q|r۵yyo띭}w8>9|nrolʖҵ-ˤe=UΧ䋜o)`"<#“QZ2\b$D+ mk ݾKvxr~Kqf(/]p6Q43` (; e /r*x> ].K< ^9e>gx:,fٌ M`tWDL+p`_+ǐ5|U"wxP w`EĄ+͸EQ"\!dAל8#P ܆Vk=!㼽ay4gTh֩ȑtG] ;z6& +,}sQD%IV%~pYJFii~Nu?V,'ZBsS` 9}yt{\T_b޼1zDw5Q]_Z|#x~sKn)$U9 48U*婄\C"⁒RX?"ZB =zOᨮFgyfG*˒V{3f{OBlMz 4eεFO >pZ`JUD/y:Ľr y̿_ # C{-4k-CF(^ԽfjppQ0f|7\^a3d{wUҕiM դ 0ь]}QNbWT.ŪUV^+1\"h:еg=Փp>j +-b oЫ*CH׵Gh(MAcj1:QLtwxBOg tZf݈kVߙ^b]jP!SXIsGN/l7O3y|-0?a LYB6b>@p-3(.7RFvsնD7ó2?YWyĪw6vXhŽ]ٖ eɳјJgg]ȳfPQ%L^`}a`aQ PD0÷Q )Fal7Ls:q&3sޜ0e \[%%I8ù s>pٴi +]ʞQK @ ?IoUWp㠻6DC{=7ff:47BsP u~ڪ`v? lo>mnVGA '&:n1ߒBӡC U(| YO"$=3!Q2 @ׄBz=HfX0IF)_u@wPlP ( PC2hM? tB"A +kSRsӚEs@a=2`8Ȩl3q}JCHb >$L$)^>8qZt^wK-uD'3Ÿ2q'vABpaRNH^ɛB~ CXHPCnnDOZu T 52^HF"$W셺=W3uЯGnj6{ΆF.f#W'~#{;֫e=֥?:CןdNvå_…VW.D.rah+i 8Jc=a} Xa2bak7lcwݿfwܳmЗH=_2p5YIr4'jqbjQ3o7>xDxG#G퍼y13K~{ԷofÆ_$TT.nTwR7\v43g7p$I42w7y Y<=Aߎ~m1[b~(h-hHh\`%li<?"ﻝAtWΰ)83Aq^aQYpZӀ4ۥWsN)LjK$4%Ygu 煵Dğ |1SPk_yd`ZT[0VFr2zeN +K<׭EhJ3y5YxS}k]|tDP%VHEfuIcQؘo1}c%殺9Us0clƐfӧveٷ͙.J[}FG]z%WPt!A|BT*˗$S^X`EаtP7)r>0Oc m@o6Sm9`ߨIvV8ת\+Urg̬-l/VʣBYNxBKdń3_ ܣگ逋"`~ǸCBGGAӢñG%8XrӜ+wcNg3de7 }|aQ$G}%@~HJQbB'Ry"es8Ba+z|tٰ֠iEU9H.%:!_YW˫mks{H=%Qi/dj )Բb-in({HWFG'5ԗ25e;8a\sI}iqp)2t|b +~VA `T;!V.J亻r'?$ +K߱!u="!{KsH_[p"$bP[*( b ݜB~xmuSv%2MYY^aS̃$0(8qKQ[Q&']%3ZZ:WtCY?֠ȺYwrpnvC}V}^8vw֕z&Vk}j15,(-aW¨/U V]uTz>+C4-(lA~*h7#};jdEqmim2Gi9%5\y볿_x,?:_/aa ճ`>GSʹ -]=m]]@^7^/dٿA0Xnb>/!W[cv 幷%ޮB:B:㦉fz~t.tV.=Q7![@$oGx(3͉OF"Ʋ9u5ctmim##?r>o<Y, Q}hPv ec@¤b=%F:ފ] gBgb=3) ΙmU?nqxkzq 7/ޜS'Xc@ +v>ʵ sH:D&u9_[sc>oχ`|mq2oTh3q6٬܍~Ivl?ᮝn9~Wc2 Ng9ឋ@e.,x p iq6.a]xj_Ǻ%,e%V/YUKʥ#LyFr6#Y,/<爯1E#T{'trcIICm׀759`w +ﮃ^ł_9}PV )x=χ_u1>FH}oM+@ lzx> չle D((`W% 1`A,H@Dņ(< C-O1D!ODQDĂg0;=;{9F 9PY0s C Yҿ#DHNb:D X +ACFr<(g3J,Z=X=OZ8 `] h%+"6!j&;@:5ͣ1n@hm +}k7jGK(]48Zw }0`W.e@~5Gn+jM :kRsG?:=@ON}DoG=b{}`]$7bu)bѽ5t?+f 5(F?C?b>`hUŗ`RwŮ`0o4H%$"H>)k xCxjth(m0k0QLɼLDcOWI%KrW߀|ExNyn@߅BV5ջ ]x)[,<:t6ᑬt7J+&BZ7pC]h2ehTsE9塡|(T7Tj +:U3PŸ@7QMVen)wr{q]yMWՌCkp^øZsƝ{=fKm`f9/c)QDy P+Kz?'\z?#qnU듸c>;sC V}ҮBܾUXfLXD%L3lw`φ1H6G[g\qǜqy,wy"y_sW8-q;-v\#,s:Jvv:;9:wlqfLm|N:h{u A!8bnqm* +[u_epKؐ**2,m7֛l1l5)0.7TJ6 W\:dk\^V2Yg`(vF#9. % }#cwJFscS[ŋ6-X f%YZ=_ڽXU9 ֥t'+mZ#PM88>(cEV~O8qT oDѺk6+Y"ʐ-ʑg{fzmS,maeye//L:}?>4sЬD}>͟Po ;`k@xry`A1Zѓ٣L2eit,ET-RBg}[~=h(1:ӑ (X2 d 3lj2|/N&I I?Wbиlqr1_5׸S3Xejf<.iSGCp" +80(ٯ[u^ȉ̘AȈҢ}QXqR9Ӥ'S E ]|j)ǻMk"-&1sT?pjPEq췍Ҽ3NZ,ҿqBj;(v<.@0wlpvL8!f)xy\ԨLȵ" uyGEuqwgfd`.誈i*e60 URUZb2XYK(nQ@M\)GO-hknQ999s{}b<31=uO\u]D1D[~:s[<ס='ˍykP0e P0I(HҜy2s&3.N#56CiuXShvNޠGGp>36o_kE QY|7jdYc?4bIQ4I\tl-4 6)1D")!ΐc/T+b۵ \z/NFŋ~>\3T`'ٔuy%&G,5E^rR!+ea򗤚a6IѶE +$}LR¤r'Vaܦ 7w 3wY`%Rf5Q|'&`_ԥ;I 2ۭ^8cGbt8Nşi kܭz a5_b[7 W`=.Z +׆]4T[]Mo:`+@. +L p? f' iA̓0 8 ׃S +{t{Ȁ>-fn)Eϖ:4@ro9tXr0y TO&`R3`Q19*hZ]nusp2Nm U{0C{2OAy +vP7A%PJ^uqW}@w&cN7sG80u +p>-*ka{l(H/xArA$upup}DwPA;6yDt3=S-iw8O.ձ]#Zr_`HD)PY^K:_KFn )kp9}5O= G; pKŦ@ ؋+p By:xyDM?} :[KWO21 F.~EG+#ɗK q_po-~#nT]:˪^nb +8K!N>C<O}'iǠd[[k;ϯEf\ wNrgũ!p/394L`""}*/@%Spk6\KÍ8†NQp: +jp2`9Nű yy9t>`:G}vm(/cH?5'Ip?P;2z4.c: 'i8ڍVW0.bfzWt[=h/ + n{h˸_E zyɓTb5 O7?OEOHhq`t Dg)`Cʘ!]Zv{*vkphsѦŭ!CΉׇ7OZ4gI{Y*w}? A/zPg&2S:Qh MP3}:5<@SnT6hZ4uuqUҠ%YVkNq+5WSHOQZ*HyYITꩤމ&8biޡ'H}1 +"'b{d86Gji`6D3-vv]m / %^^%^DR[- & +[v\^'_H {BWG7&3ҿ| )-F{lM16ͱhIbƤ2l}C<@,L\5G$jW3NpZzfyմyQG}*.*D=P̎NQ-xyO |JOi:D'mxZѬSQ7uOg x $>[TujZ*W+F^kSRΌUighUjP yj9n/L]ns!I!X2)!K CmJ,S,HNe'e%9ĕىeܬJiybLR^[(TĻ|~$A& \9 4{IF ǪXnZ㻨1b12h![\npI%\BZ_ +/7+)ەN}?&zAI(^s?dN~7_mSJ<ñ TMAeZ$Sa2s +[jfKS\q7K]*Ӵ'Ԥ1n},)F??2 J/W袙h!kS.s(N9]Q;yIq#IlĦ3Ein8U(1} +$pGn?cUk(b,% J,v-I.. Eu݊#ʘOʘA'GHotE,9g0@X3}9ݓT84ɬOOZqIP/y_,*ʷ8o{PzN-gߑn1>c ӧ#% iJ-,KRĦwIp^4;D!:gk{Re܋$$ӻ0 +Lg6)C8cl7FgaTV?x B\,Il|ଥҨղYeY&rM"<'"*WB[+XIYIoR٢M^s=\wD\C5`0D"83ƹBqfL7JHCvKCviH#iȆe!Ԧ.e.I +^ ̦{~F`8[֘B99c@"u(AxI$ %_2JF_Tf!شzS۴Ne*Kv +PrQ? +_H +\ la d5i!݉tOR r+ZJWޕeE9X 0e,sòb 3КB[m(xuQ!b#IY}XLa[8 l5N /xF6#n7LŖ-lڶ* joAe}u͏Dt##s*g16Jҿ< pnPBUNP6t>2 kgBCfQttR@Z| 01O'06 z? 'Q@86!=Õx-~ 0h兠V>xڸ\[ 9/G0+"<5`#Ha 8iAu#y㼖➼ ŜG;/"WX_B_-'{9ȍN2I{F(;޾^S@y\|N u'^5Mw6'݁t$jV; . ={\\ ry =f +0^-z~I8m|E&w͜>ɤDtح;DM"P2$ydIOK exJVғ;؀DW!-tUU񭸆2Gq?"G@ο\!/"o™89iͦ=zГQ3pkMrpqUFjFgъSm$3‘O"%Cpb.đh8!x ܒNuY"o$[ TY:Sf*/G|6Eр&E :=؝~@JDd j|<\5x]7\uK18 Ψ)ؐ<޷=||E>86pcQgvǡJ? +`>e TNXI(ћ`Pl67HCNI6ܒCHrCEIίx̲\fimc?p}a2lEa$&4lLY(6COBao/}\)A55J .{]8..]n r[ۊ(%*XԱmSӦi3δv!mӴt2M3Mil/2f9ߞ>f&mJ`OfO-'_Ʌɍˍ "ܱj}6p/{Vp\qz܊5)hF+" ӚjLjIMs"fÙ!v43gNsCܠ"\4wYSe}~@DPCܦ+;t/m"hUc*7'sMέdFNfXa젶 i{~0ק=hgnK.UEg_  yyBrpeCmnNSgcDǐނA}ۘ~#ۥ悺\noӝQ ~+BY_٤+Ш>BIN1@QD,60aL@ش æ4g"dGٌt*tUVG5U~B$Zʜ5!M^Z{&Mpݵ6W&dw*&]g] ] ++"\F5uWep2CiJi +zE{RpqbS#uEuSnCw}jwςb_c٘B5Y3xwZ. +וywy_sjJ`&FOy]7Gif-PO՟ +f"1j=d\?_T䴼n"[n~i~-J#0GLQ;;ZPŽ0wn)j2@eE~W9tYV2s܁wyu65WGyu7HJxZ)st~P@1лoA^nhRqp@P>CfdJ U!#:¤zq65qMMKr)=kJu.ӞF D5-ʞ[ +d!st#2ƶc8ia=R|+,a_؉pH0ç] M&)|II74eָLZqhcq=dLO ej=N'$$O`fbI"qH+FB3sH\3oFH28O1p#Mύ!Z-v87 dRLL=e\,'`f< )H\8شhlX|s/#~qxqo n=<9) Ch_$uh +ПfIH^6]p) D"\ށX"vŌu+XEJʕA|-p~I|gėPG@pS%gi9i%ҿL/וP1M}SQQB_CRJSNhHER !|dB29>eȲZfǚ550żmw\]繟њ@ҚCeSeSE؈xxu`E D994|Cݬ`@c\ 0^_o !(`$' NRp>ٜ69mV<Z[9ɭ u;yr)ɘ+ƫf0jRӢ P676 +}@R;Nl_lL:X;:8 u'F7yۀ܋ouQ`= PSy +*_6XAEl<sDw' L7;0x0ZSלV/R"ȭN'w97?=G3sǼBOٌ<݋*%_꺑aуBFqd$$o+%9V)6 *5 Gp-'.o Y]> C+"/NyYG(2ꬢ:lΧq&9[<`_Gz)s 1'#`uQ/Z)ʤN`uSJY1ks4r.f~/Ȣ!ӝ7:WGP3ٌV"uC.b,lN%3_gpqoZ躙Y<8I + ᧾dJQϟ0ԊhI>K\P\͜E140M\ts :k42JC斒e.F` J.$A"gѦV84%^:e^.R/NZ*4؉zzu uawc3vE= 2,wwȍ>6^X㴱;MI(M"pX2 ʏqPze6>WNbOr۱t?63/QmvU揱-xN,+? bIaJ.l?=*q|]?o쵘ݖѨ)nyfQ%*W`U56YQ1 ^GXmnzxj3%Gyg{GFhh:!m3;m}PcjQevlMv`7v9Xgka}9VoE{X^nA+'C %bY(zԿ=}bi}z5 56t38zc?*ð1ӱ#9JYXR<,u*BSPۓ C%(Cg( +<'bg$LCRimE/R. aǜ|+W㬰@=ծL?2ԡHWO,TcNiB:[H+~vHZENһ\b͡\l{Jza|7[ +Θ_!90IB|B\`/.> \/E(TL : <&JAigV29Rz)d>rIv!cv RC⎙!c1# !a ؐHĄ +ѡIBTh0=4W -mSL +'-kzaRYA#[]dK3f H0$h\FFhM04ᘮiBdx0%|09_#M273(Bj+7& +"0#2L*8y2T2E$\Ct2_ۮfFmo^R=|yߔ-}ԋRR-)>Ϝ"3*{$efEim4%wW^zQM ʶ&fPndXVL#1Z[W,2Z2cI>&6j!<@ۖh!Y>q4M`,e,x 9*#fT{RclO8MIE,%eF+amڭku!u +j[5Vm8պʭVU_Z-mߺC[[7䷦A-Vsy\۾HJ1eRl4^kЯBnfs nԢ:D~aj^)K`eổf+]M"ˁ샓4(-wZ^;ir) 㞓nwF[Zi&sMk.:⽏B8jijpkxju-HN~spRb]05g9#э܆AV +xE{M\0pvƎ4Gh 1.::6zIù:bQG, r/ֱ>[#>AVG%h8ٜh[mӝihml҉GccPϡ_ONIt=.9_9%tzuR glf13] &;Jw>%}iBPWf2PWIU̫8rf`Db405nt;xZj~yl ҧp>HKo[ȝkrf>7vߐ@a5쇃L  B,$B&'fѿHi5\Buz}M=żtC:~5V)@C(M44sћ 4棱XׯuSDg-:XsE]>c}X+]`F>/jh   M@'_\h(Ac{)ezO=lK59cnE鄩zj>^TPnBHȅ@B.@!B- !"BAQDTRuκεgzvvnݥ]9o|=y2|k1;nmmW׆p%f.Ōb^pe^wqbpGX}qQ,MB!R}[;q+67Dĕ8.n0np̆vr|'p"~b!MX‘8p1Slӛ+,ejwѽW6\ڔsxiXJ$+܂d'wc.#2-޺[b_77 I}O0vG1QݟP{WH{1jm }=]8c,Pxub'k&j~GIF(}Ls1.è( Qv 0 .E!qbz]BgNtW2)ZXKM於C~ʚ%X$|@5敏)pS=e勔Ǡd#$Jr#K*C@ZԂvenx:) -f$sSk48?&"fE9OO5_{Hcq2Kc^2F9)_<Ay)(ѡ]QVE9*(Mp+Фtl ;|Us^lcQQfU=|ƌsdL3NY)GQF@:,xphRRW€ + WzPW [jƙEsjN1Ǩ}|H@1jO'Pݛz49D&N7@9z_ЦG t|4j JQU*;,:7:?L>fԏ /1*Go6Gg!=GrO4\Q|̒մoѽ =?eiѬ_> Tx +`5\@mj#5uiBuc:NVefZq1^Tr*L#NKT֬`o+&&uh<͔zSy(CC xIe_3LVe(%dtSV@uʹ[hUIѶ +X6# D(ЯvB / ?02xmY/sd?q5iݧg&#?E^`!! rB*d lnFf2SH/!-|H }z+NRi2Bz'6@m W7Dd;灼i06@0{]1K%5edX+aXo/m` ƣP;612@:Xvp {KO"ޣbrϯ.˥*4q~d%dԳճ|$$;G؍=g~Iރs{Ecpnk*>'͓|]%5!qw4V BB%}lN:PBp$aIvg9s~DD$<Ɂ' =Q%_BfjDd{=YpN')|FLN3,19%]`aB.(}INPWʤ8xd8Du:1>J;돟Ч[o pp p&t;1({@}>np/p_b?'v5Q5M+[4[Rjcr}Ǯ{GﱷEsS{^ =9כ `.AFhC+qrCH_i!eWk2[EB ;ɳtUvZ+~~vuGMD]쟀F3A#bÎZ̙m e|??[#(FXI 5hHKS?(4HИ9hb4qR<_Zق5b.@dP+^?jFؤsbguC |h4)ڏ$/{;vk.rrkmOqR-Yۤk#ވ ?;@_e.hza}D Bc>رlÎر;ꔏ<-zUv5ZVJ*T)W x+>hv@Iy _bh4ICgV)B^fUllF-n~TTj{OĎ\봷hh{NC-U'5vk}?UV0īܐe-5LbCfaJh*w\*v:"*p~9.ϔbUnܜoGEچ{hsVDh_wTb-pMD(9IQ&1S9DqpŚjdt/ a44ztc-Mh`yн\g̣:0+*"EPEaeXT7( +.ǚb&Zq_c5֥1xXҨZMD? \{0t^>|߂3s1TG9y%41W1~PŌV1V$ٍ6es[2͔-WJ3-WAMJ`?fr1 6 k`T78bEqgO9+h`U9Kq&(%a,pFIJHc0'+ ?:cx#%S3=|K!1'tTN쉽/[P%5)J)Iq$[d-`.s\ŧ<+SJM2ZbSI Qg[)#Si)ZdQ5DJH5ʜ4LiK+Rm9-QtzƦoԘТKj0;1Ue +v~ۘ7m]Č~2g V|F2-cY1YVEg56@cehKoPxve +G +r+^eti)̇ ߶LUvyWMP*սj4ʳrUS99~nբf@ pWKXN/`^ @8)a3/ffl^˹-~**uv4{Wnuٕ-thFt2K` Py;Nn{7M.v77\ĵ7TN(WRjgpG˽_&h'?mM^!A918P~!0qGBAlp.|7ݾ\Gx`K:9:A$'1 +G f:GMhI ކ* ]{.CvyH8ZZg8 U|J}'|/Fk~Eo#v{n;tk`3?M—Nñ=]|m--M< W8/t?úB9sIm|y=C魇 +ЏF{ok:KkOB<u:=K[Dp\џDlAOЕp@F=+1ɤI *!q|@#q8մNjB)odJOXWGta(V2:h䳣:FGqK]k!*WmWxvjgvBm1<{/H.ΐ}"1++YO䱜LYvNATúuLM&آMG2ӤO<JpW0`6``6` +$&!IsM4I&kf]zd=Uuӎv6դQҺN:mkUv޷dz{>I}R/xW%^սŋ7Zʥc:\G&dQqXtS gb"㙏5;e2|+ +O =.V%?{ewV,Y ,de#l33a*pN79nek4y g((FsP;."7)R.JŎ].%Yˏg m K(dXѢV 2X4Lq턶GIPݦ2=Ke6ҿ7Q׾H_Ny5K/Ib$SCrM6MNJ)&X:@w8]eos[<7C_kҝ6GYyҾLh_Fͱ 3k6Tmqeioi⧣"D{(Uh:D,xlO}fۯ_\DVyFWf/k\2,'XL5v IM[aS4,d +48/QxKEDd'{VwQi> fѩ6n5zqmIޚNuk>VֶJTzx#f(-Q[仗G~C(7_eJ"(YRZ X;TvPљN3eՔ1[(80EQ`#.x O~S +U..HgI*1'k*j;ʃ(`KO>=&z(쭥z MIv Y =DFۤ~&~OF'dDwK렴ĔDPKINA? L!w("d U9@pA҆GI#ydGΈ$ ?KŻ$ }*wJkYEHM%ZcUVQ[cȘ06HD:)y$OyZ'$bcxMćOb_O7xG?#~<Ši1"ѡ5UIJQ٘U!}z I$m8Ms`/68e|/Hu^dD~@cL<0""2 +* 5"(Ȧ(( (8* ++˩₩1n&DQc%i[5ǦMjԨI44>99=Ǚg}T:++Hϖs''- ŏ;q?>Əq)S&ժt"_u~uyzYWz+TXGO~>/~طb-v7R(=zB>C,N)V|^)P+[]G9DFx!Ngu%yab Qh@#`52yi>ZUƏq@Vf*%cDuX;;M,$ǩW5Ġ1 +㱟LVUG$oV*V[rcգ_Ks4g [{/^g A' +hEc)hdc)E +ZV,""[.v._iswr# kG>>wpelwUSVw JhYG%Vu.ZꚢZL-q"|Y܊TVjZ֤y-*s?RwTcxJ1lD%G(1,V aAي /иrF,؈lCuR#~=;iAo m +1 +ǽl09C"J (EӸъQ)5UkTtFF[4b0dǼa1|`!vS\7ya&po +K#.M ̣>0dQvMvD}}GEepcĠ`Ԉ\Ƹ5qiFkUظ/MjzbNs5MSTk7IOsf`f{{K9YeIPfRIIHJWzrҒR%SJMJM]j%7)MG`A,W}́z@y>9JTqd2јTI)& +`ҧ)1ݮEXgޭX`>x7e8نV7m\30*ǔ.SR3(;[9%ʩVdLE(}t jK4l)w)We 7v2l {Emg6k|m~sn0(z8E BװH~Rr_&,K8p.+*.]tqíAaa= Gw1]_5 ͩPFs([\!k\>ZiJɩm*si-䱎jb`;6{[ Vf6SDEVFr{ 6xh$2.c}cc}ǹ}7TGKH1Ia1y5빑oz v^x2 + 3#jrK y36 Y+0;g6~K8N[ u?E\vih2@o!ނ18I59͌# </W/RK ե e_&*F;Djǒ7pjY`\ U +\eN>aFї2gl MVżuؠu <=w'-]U'mu}r uvxa}k}Ӹ_C<ω <74}tWE/JD3|t*Ш-6KANw}eE|y\Y"qyW(29?9<{=;BDzQDJ^Gt<ΐ))y|X5<\i0w|G'X4HG# |4J=ͫ O[;i$Nb''sqbױsqiRM6Z:umU]K+T(L\Mh B6&B Ć m0ډ3??~:w}~{cc/V0]b -|Q_75O op}$1s4WG + :kѡ\i5ϫ~j%?L FX0i*\ъvif/hGɋ*ɒ5Q&>d +eEi׸?-Ye,-5jԪJ-ЬyC =ij׌!ƔiM5a<NjĮ1]ר鞒ה0F,Yڬ^FzЧ}c~,lZsLf1;5mnДEami21˘F-Jn\U c>nzRqU Zju~?>./8l>Xz{f,3qږ)Q)&iU֦-,xwnm~LъksxUa +WާyEit-<3M2s36{f 5dw*nנݧG=9bVr\Ym(TO5wU:koÇgZI"r=I8ce^FːH_mUPY^g8[R&Au׎*X;EuTo͉[=?kh=Rioޡyd,}TckDָTߖۿG.Ljj7T2|[/iW?ճ@su~NB/ ]m|5j RC%w{jc@霑sE՝GT*^eٻހ_p7ά濏YjN~#?yJ +ZUVnTTeOLCS-isCO,| $[[&[=>Vy54ИVA:R#Շ}…rn1*bQe\HnUCe٢CFS]C;'Ḵ{Mb?9WY73hzϣ3N Aۄ%n໣RU_*KT>`RـUA6 j`#e )>s2/]_SIǴ0:tf|0^ B-'F)ՃRuPAED6$dLeHKɘJ 'w([*H^T^r*7C%~(cFgJ D H~hObl3ɘ*QIʤ&*Lժ ըT@aتuL.EL%*Pl܎3% Ce{ˇvLJmϳ?ݿ}" JH%:bv̠RѰ$H@phĈ`ּ>5&ym xyX{g(b5 s/w)1WΣ0JWAJc6ԔG1 #uơK?C"<˚eße.o-q3<{>Mzmx_ShB?ʹ |5[By=g®r'oϳ.0gK2{9 2{2r{ 8|oaׄnZr1xvfK04&{CYi>>椏 ~q>J%?A۹B>zƸ%9j]cF2ur9ACa?/~곟B;i8'U9@mcAg|FW(ćW$ ^~Ea{3ظ!'}q=/XRl $Ip.G&& ҝjKt>oKOlH1ӝS{7$ۘ~S M̫2ґZv>Ϫ@VOS;tF=ğI |ݞpOѩye \0]׹ i"'kL>RXf)'Z:%t,ev+-H|';!.'v5LqTa'&3iB/mt9.hXIdn9L?Ev( ,r5^qOCr1/$v9u&q'-[|c!.yds.3: +On1.̓ي +U2E|$E/"|,||\q7˺LOgTT2CeO8[S6[.R^/i8:4D# <4(GJ31yJ}P\M曓Tp$:`v [6 jV^?!=8-:qHCh(fSwԫMԡAS4>. Y2a ݩЃj +=!vA@{ql5[=0fO53\6;ܠICtgUaɚR{Xi Tkh79|uq 5D,P}JEnGBTaT,5VŶDٜ*e/Hy&)7U9]N%}Ik2*#\gsó֣T= W|$^h)Ub{ +Fʳ'+מle'I.;FY)LTc|Pr:#x>3zhL9eHc_#yVR!: qq)ˑLS,yJO-QZZRL#}R\ z@IGeǕ6|W<h5 ћȅL|}^d+ +W\QhŔX]tȑ_$4(c,J*t=TO\K%7MEF4 gR]AQg]wEЪ(* +-, +BmăD3iFUi;1&ͤNkNc̴L56i֣c,d?Y罾}FL+`WJQdv|dȕQ Jv\*C ~;+ιOcqX^8V±`>( *id_+;IFYIJdT'[y*u)ڋ'/ыp| <<_h&q;(@1τ;~$J ~dʼnJ**@0 :3"$ * !yURxP JlL_qÿ~Llu1JXbPt|R.Fz#ìCH Njų#aKgpK-/p +PH9ĜE̓}O?/Q_µEgKO F+k+:w%KF.(\/Qu`;ϰ-DMT\~vPBsy&1O _?f4`9VAZM.?Ppxs{Ez3r [d!m\@̳p}jΫ)$C7XlaX?X6N`LM6s6U|RMySpw+TQ"͡|ի^3uK a·A? XWY +q/O=r, w}qKCM~'q~g<>,O ڙzb/ku?#|agD:a/Caq0&Xku7F4(8!8G䠿&M sA ";`4"hu&x`x?NsfO8)w /:r΄;M6HhD9pɈH#88rpu\,b%% +~O +y.!MwAQj@|ν:+OQ8|H❧I~E?"sphBp;C->Un3o>$}|QX5=:7j ~{=Hj=k? +Ux3z]W]Rt+pk>\P\fFi3[GP'^uz|:z:~CE0-{/J'i : A ƸE+Zd$,%ض㷋\DKè!A6]Tyxscu9/pޏ#N[f|a +Gb]m;V]a;l/nvS<7v#dr EA+|2;17bۊtf.v#ʎ^DZ=B]F yBz}d%,ã%2vb\lQ*'a{:sυ.#U{~=7QBy5df'ީ~.=$8#`; ۓ=beد~ ?:CZEKo +rzSL9q,Ǭ`#vpFHo~:b&'2B". +8p@wtұkuԣj .3HxU32_ Vq G-*3VÑG&ȃceTY 1GT5Ii +De=G(\jycm+U5qr ?'L84^zJKXk'/SIF-6X3k,!K.l-HWMbHQuOzU&.UUfRqJL/tBEp |'6\p-^~w[62UcJӔjTM3Te|S**7WUV㖫hjͳUk}Eso*!=pm`cmzk.|q⛃SbUeMRŢ +MI*NS5[ֹ*ZS;IyW)7urR٩O+fL9p{HC +U |w*_ԖTRST:A575Kslʳ*VDEʞT5#}2.5-cD55,! ¿4`$|e}oJx  b I5AI*;œVYKfnVbUQyUۺuն]ﶹ]n9 d'y^z|*|̍W%Yety-Y*R OGrjU(Ek +&-V_vl4~PVg~”߬8Ki̥*PfYI(/TzT) jhQjE'Uo@ɾA%;Ċs2T\*>W?a;Rԃ|ǤJ pϊ|THپx&')ʨLiԪP*JnRbuDŚXFwlU|^U կ+|DUݬmo W +TP *1Q +<|.HF3ńٴF4P(NiO;JN3X3.kᡖ&lAĵ)0(41{$f[3K7E,^mfv)##ψvl/ dx:4z0^oQ&R1&J ȵ Ny=/亭Mԃ>!g}6blS|s>imd7yp.]6E,`c 5YQ>9fq/r9br9c/[yfg0% .mm,o:HCYk7f-Pl,`'&'ߡOQ!zt~"'(~sbϫ5*]Msv,!{_3hl<&Bh-TlDŽ0 ň2=r?F(8 +a:tPuVr4%-|4.F&1BJg蓳q\E?OAr3!pFpvR#<+;<au:Qx\(.A]6}fJ#+{^8i=syS~}=*:+G /P]Wiԟ%.~J~B.i\:ops0^/c_>Q\f +4G5t̻jL?~ʹy -JCxЙOEh47jvP}hũ߄3,ji0)(' +L5{ #u̼M`pEWhT՟W<~`;۹v0Ŵi%mx} %rǘ as9jj=7{L`e R5:%.Z;}Q`O#6Zm/u؞{݌VlEݥ Te е/iVқbX1\G.t욱k.l{]Z쇰V+#]Lb +Y:1~6ktv 5bׄE g?RX a2)snM?ӳٮ:e05&9(Fd}{\,XH.&=Fڍc~t!셱ۦv,n/f:z43UaKH}$A+oX&fp:9/:jQ6LC8JdRruaĉc;ǗN8NvlDZs:M$m״ K֭bBJAVSV1Dm0؀A h*h6&.ZQPG'e=:3Hì1V*f젗 c%Xz>A4lsGX 㰔gKH ;;Ѩ$:u42to>.& zg=;6%ʯc³x/U|8fwcniL".|5ը\nsL]:Yuv0-WxZ(m٣fA,ǔVr vM{RaG^{jSWKVZliDҸZJJ[;lWʺPɲ1%(n۬mjS" +ۧ:\G8N +6 +CC7]'caVDY]-vJ~%uJأjw)UԱ@ 1E(llVG!~*h<G +W^k[KBzNUy9-粼u7 ;\MZL3v@gi%r1O5m + ջ+rW]'OWT]HU+ީJ.Uq}\Kryr{oj'荓@.pm4$x#FE[תסץjWU DJ[զ~UT㟐ۿA |EFpJ偋rPOtk#Z!kR]'D~vy*婩&.W0#gGڅ2j<4)Gh/òRYcm݆]h44O#"YePP\u9rWɨUy}4t'[d"kdlUidJ%#DN *\d ԿEسA,$!=P ˀ91B4B6Lֺ"og4t@ mM@mݍ>T𚱮ib8d6cLll&qc|-0'3/<~w4\|tzFaɪ{Yנ6t-#Hb3ı8VjXCc1dOT +3oce}~z.hE75L\=5-Ch,I5$so%{sIFMı817v0&;XTVfH3׆A!s++z ))"ö[/:@ndwt/ ıv?~ޗ}S) +kyR{꣯s"!Rt{^sk^nh +Ƃz8K!Lt?I!q8feep#TxplCN.a0UXR|e>oH])a0K$SgX'0ٟq%=y2ղ1@ۏk#VR+{ @^y3xޔT'Y{.o?$ %KE&<{ŋsgW ml}y`}ò{ސ͚:Lm`VKs%O,~ccl:W {ś4썓dŧpO/yC/s /d"oGG,~~ͤyIKLWW^/}_%Կ,jg'ހ Ufyw?6sZ) +:2qӺ{Esxq~&̳gcۼ8m~v|;׉8iM鑶뵵)F=Cݠ$@cL ILHCC􏩈C$PP}~{<$% ݜ73 0(_fѯ=MgP^ O߰y ކ!$=~7V!Rd cse e:#h$>+xyK+Dgt*sB?Lm* у_u]S25t,v#Wȑq?>2S{R#aCdC/6k*< 3ϋJ\;-[Cw6Н@wY4:0 Gt7)T 2d V9-hm[=c0g!X=GG xl'[p3=ѲЄqQϰǦ![[-&v؉c'vة`;fL$GS\VY<:ށ(Na |ayjiȓ*ʝʕ3ݔ=$[愬epf(Hicc{SP2(:x$!(*n?/UK/w6$gGL*)r F%O9s* rg}-ckl@%!4 +AhߌM-]N9K-uma*$MG+],ljj@iCePPo)CН$PnNS!6J@e4U6]?MS'hu>[w4qu:@zJʱ{-hAz<2Lrr®Y~ΚE~A!ah66@A<0ǀfq&m&А ឦ ]` ta/)q ĮQaE{HYaNaV6 3]Qg6{9d7l[ Pb F +*e(P*SS +J/Pʥj-2 ʴ:ڱj 3Hm-ɞt;oel?V~YpYKbr5 c̉ջc,NY{&Μ&38]p~ᣴX,k:gHL6}?ѯ' v ?mI[-~x;gr!q68wsΕΒmQQ]·˨#rs[ 7c?}&{vdVĻH"8sIKi&xA;.Gd##h^e~WN0?HH3(qe3~VpNEj'[ٜ;nG<$H9X< WU~H<^W^ef\. euqDINۿ^p᳹ϏU6K<`,D$+5>>ɿJKb&>f- | +Ol.>IQAaM2z 2zQ{u΢k~8 p ޿z]uq-l$.%~u9Gem~~|?D~bz":'~BiUh +^VXe]SNڟ&hq48Zj%v؝lj~>^n.NC)u}v!~D_v<mv\pǝ;vd`IЈ"v;;eZu&v;#bl/"Vc(p< 4z"%kЙcp_/;muiG:ў؊ @ENA{;ӱ;arXeQÛ rW+b f8S a@䩾";=}ll>B~ *YoaT1v|*8=ط{Lcz\cQlz+۱ݍ>l`o6 ;s:>GNU QuCt~1lEоkپ Tc ~o~;@VdjYdg:YG-e:5c_ ;~σaWuMC,lr2ژT2c^y;u£)TE G7Y.wmkUh9WJ4fy$;B5ur%X| EΊ}ṗs&o/E̻,HK}ܥx#+iժDb񠂉jO˓˝lSMG;lqf܆i I|HbxSGdQh- ϻ|Iy"QX+3SD~ +& y24Xr5 9gϢ)K{caq+X³Yφ$/"\Cedj(fsI>'ݲ=&=#U0?;ӼMvū_nF5#\O&~mXflؒ! ||e6;A+h9/)>O&d\25 +r73D V:HJW xmǶAlcoC%K"K+>|pN+=`hiy׀)ޅ~F5}faX5 ZZ" +nUƱ3h:Z+neJ;=HYB6BIH@P !Ѻ/NT;նK2x:ɇ0p=!?}f^LRpφ`@Vr@G Aw"0<A!\ŜԪX<71 1 '#hGw_C0" 5m ṫ` ",B",BPGbP !BpS/ t3Ϟߧ"$/0` %:BrXa`F6;XApٕVb\r>i:_PK -:G/Ґ9c+.q|h"|X ~5.5uбFl 0a|x=u04.zE4)x C$Hl- yױ;'jn i\ W8tl-бk؎nA pNlEMlaY6{ר` +Y;y80_w97=Ecg@Ҁ= бQR$Ή {P1j` B΃Vݕ Yk`Õ(,7U +U+'F|` + ^EMB@n/+iQ'B/ paT/D;C!XB"0cr>Q88/l0݊M?xy~n07|cǎ0q)SMs^(d^^2l/WYn_zWl۾ܵ{"ވ־o|#G?>3L6ğ=w>1)BY"D-U5ڂ¢CiTSźƦffpvv]|nܼu}ŗ_o~OD%}y1<\'_ gK"0X8d$ D0QPp)#`@L6-F8n#mO@zH(=&c̾dݽz~x FEyy = % G X'$`(,K?W-=C o"[ ;=Qo;p0ȱ4Ï?!Idr -bXwAWM1 0 +z޻}_>xo=z;xɓOkMuDT__ba~CٖsJ:CR Z G#e&\WfHKi h0a@À 4 w|kfdKeUh_ݯAųs94HASe *g)AxӀ n_ToO*HSoTb.W]ޠZA Р%4(ײ3n膆>nE$YL!`*_mԝ/QsР 4y"ySIfuaƹgc,i0,5pCu~S9Ѡriȇ۝+]xWY"Z:ӸdM3^Dv 97V0N6CC4N۝#>1tdBG*@C'ie$5hͥotРUrS!\ʖrz$N:Ҡ#{脆ƒn#Hi КʷkJ +A˱)sNy6K"cwgI=q:E+6 Zg +Uo-/4CTРa;rV(ՕБu9'_4qbf՚ *ʶ̅ڸ|5ǢT۳,8Ȅ#Eƾt^鎗{<6XjwУ-VZzQQYkF}QLVנϋIh4X$&}49߻w?cW{YE˫}?Q +˱lpWDL|rV\`ƉмVmӰi4l6 m{Pdžg0|ǐ0aV]ց灡F!ʺ[Kn۹l{`?)`oh@lǧ"sf\޼-RtɌ)Nm-në= +5e'#1=0htHh#EAg"F Vh•Ibm0;;6 7`2>A :SvIQĢU]1W B% OXoL[n` `Q/c×hޫF'Jcs_+!DtU3(˗vjYy`xN+1™-x[VJf AƻC),ȗfjkۭTkëK/ck$fLGz(6lj;^i<)7m}Uɰw>&t%4aS&Hsĉe!e;l[԰0ݸ/WioƮOW}/>{cI_ᜲks,p!m,g9@Ov.Rgu6A$Ⱥ[5X=ښWǖͯslwrl$&";$&,aqJ'=ʲ[_vwMæaӰi7X?ښc˖9_ 0tJddD'%x:,&rA>'>\0EEh`NӽGWpkz^`x +Wc"R,Bq&<$Lci7_uA[=kV};Ǘ/ b$fǢ* ˱\PW@i.wEfx΁HmjiHW#-]`0(̩ IHL` HwEĴϙqrxsvB@E͌:yn8~ ^I3mfځ6MmҔK IJ qCwI֣yGﻭѾobKl˖%[^ p(t4uU}\?ɩk3Xb?<1{B1 )ʠ)u +e;5+jK״4Œ^S5x{z~q_=a8 ie/ŴxXj(Q@ӨʨVf =[rSPԤtuEhx{~ {/ͩ0/!=k[8P&ڪY V $7yMRULMogn`##4n%ubD@tPf*haTIȚ^ʸ,oe>OUq x -"8g3h.PԗMЬ] U,*WPW2M~K(d+\+x{ڍ^o_=NioYz!pg'ئb +Z(e^ik{dEDUۆa}B{_k_ӜB3sޔJ(6y +%<$iCPMAcqd"mnf:p~0HA\^0K Ì*QJ 82Eg`*)=P3؏6r[h/w`}o羣=\[u᣻nj:|ͶoZp7ȗ|ImKu:mlB%a50as5ޱwDGI^{Ivx\/$ٝh cD,IFIdB#mZ47"TՁ>m3V?1Yiޯ-:B}Ky/eN(^, +юd,A#$9Z6mtoJZmio=aqS5ݾ|OӂSacO0.v8hx'#TQ*LIHLʆt ޜYޖ~0˪a +аm=ć“!A)# xB1B 3QFg2R!@ R`, }owYr6[iì+auc71'R 9#lD}qNܱqZӝNUzuuk@zWEAAP I\Bx $F$@BȅpAEVԺ9;m-ʶ?*9M8bɢv:jh"(VV@ߠTei4EJtLpavwk}n䅜4~1+=n*(NU +<L;sYINiBx6 +_sZfFGܰZ)HB':!TUr_JDot$ H\$\VQ"Fa]|VaG ^j2#(Q6"*r*&!i"$]0 k A]0ݺ4!>DZр/rz[IV-9~`qL45z]ECmdULDD](ՀOICVt^DA$"C V[+{$SL:Q 1hG 5M|CF^kʇZx3UAPi/  n҄di=ۊ~i+zd%C6@>k\OX["d>Еq]iB6gx;iذ% +gd9 $*MM//uxUakfR2ȕ\o`*X( 0,OƤAq.<1*; O[T{j8lQƒ .3&Ba:A8/ W=hS g4IC΢/}ڐ:=kJ]* *8l]Kh-nH6j &_ciS 3Ҁir`xaؚDy]Mݧ 1M&o +Zr-s.j)kjTAAdGO۸7`pHGܤM$Հ!o?f*wm2~\?h2b۩z2lnʯK @1'TYY0FG)2UhӲ4`^2nK֬f{}Vm&pҁ-ZwZܥ5UUz(ԦMjJ m3GrA A%h4 `Z ЭlVy1>g~ |y؟~uG? ӷmHozޯ'|%:WS 8#^87Ѐ`SӏT]=r{L&u~C*gN{i%8 dp?3 x \aheeh jOy`~RMOU!KrUh>Du38lj,J0pzT~ޡ{&`jmյk˦t˸("R(HɼX&QoAqq˓2,ah6EeX=7eNަ ;63e0uOɧ4]jnH"QRĀvߌ帶la,/1 G#Œaܔ>ehi3~1k<ʞ1tȧiPQ'5D^LRMl)l8q(˛G| 0#xeX+)z 9Ys{xJ1?o'ud^H2kq2,9ʄq00|hahe>o옵fϘ+&;jpQNj$ +%h>鵐ifqfb5\Éߊys&``1k{ڦ4vTᢁ/AɩYL"2B5=+ v:̂*;\q`r!=\= ycʚqOZO:ᢉ/),duPbM97Fz\Wjz{Be7&H΋ ( un̬uyP>8Z?]'[E(fjY1)QUoh"^jN^l^$oGs4o-Ҁ28>u9Ƚyhlu^sKO3;(jzIyD. As\5KT1E7w>u>3mu *].NQ!iWcZDX ޲=7B^UtpQ+.hD2-hM;[l'Apd:d;,{OHgpj]<5jT:hCjJ +]QI%d@ [[ߎA;.}߆w[|pRB\G;A-٤}SKUT*K0)!D=eRoh`2xo.cxk{wt#;]ds=c?bv> k6`B:EM{MDZ"VE +Ӽgwo2oM{ ireӇŢ#3PS + }fj;8wym>3tE`uÅzAQlnwG6{xϫkE7]HH ~5_8ɯs뜀gq+>~?>].Lm`=acܜ>"ˑ~RJaiVUXaS/%(\bxa@ @Յ e nH\tzK?Y)ƶX f#fHvuqҨFą^DJ +a]XH:$?y.d_Y«ѶOo~~ZJ^]rrj[Eۛb.A\Ԓwͽ xYbN8ww`{-CplInF'LǬ/F>-/,zTB^O>{.V~1vtnYHI׽{Bc{C: >gώP:}$%_z^US~nˢeϪq%kҔIe?R˒6^L|,Oxri' ޥ^y/ >9}Ǿ+22AnB:@$dPɈğ?Ǐ۠d~u9;3'ܝd}/Ds;d~>O`?T.@WY4v,dG$xPt2\11 ЧO| @<(1>0nN\x??G )eUMuƥ6-k8b#S͢v횮馐J~Ү*`wo2`i(`!8):W@KD|Ъj){g3Wzǫqdq 1>, Ay-"8YhfNS%o_%B)X7oǶ;LyeT;- DA  p[ZT ͷ4zS>KkL7tDa 3fY`l^{j{~8 &x@ ?= +R7 +EUne2^dQDLr9I[M#D%@P؆~?VN8 o @A$o @ (pM@/6,qkًxդfu㍼*d %vk\Cn\ӂ9Xgh ?)lń(9 +R7DkPPqKf9T$Y?. c(w 5A3xی{6gsv` ;llHklԪa *,ђY.I38aOr791fkpoui6ٶ0 ( KJlK-Xo;_*%/K8 P*cK3\iaY< r|^|ǐk2L=>_USI;İ 6mNH OHT$+U=Td웒rl+Z3! 6?9(zI!73`zѯP^e-'ڜ2a@d#LҖ*1:HFמӼ(/J pEHy,pWt:;7 ^)m.3ȷ '=Zs&6qg +6q[ͷOG$$_py"!hgT6! !E f_+Rl.[buũ@36.}"~'>]W6SL + 1f񌒢Su<*qOhfuqi6gAm8%h?w=Oe4Ĕ=1a$P[k匭sH_g7)hv!oFVϷ0&96gtdul`5( _YT8PG]s߉5{4;~elH&{aL0Ejm<,P2|sszl e1- +?N٭s׏oPʝ~w8 JW14Gu'C0VЮ#ԫ%JFWV]R-fE`%la*2 +& 7Ym((C U5XB~dgr[7h~ }hč87w*A?:Lڞ64^or]҆Xѝ&jL/RiYvCA)Tu6Ae} +{48=?pkbPVg(3]BGiK{hnzicgXeTCP T!١} փNt[>59w#;vމ)/)+F $ev+Ӥ(󻒔.RPtSj]Τ +eGrJc(D 5f&P}j-~&swl&n.Yh)YQtвE~Nkbr[iWra;=VCjRic.TڄjP E &P)46_.K{OkVW<>D:Ewa>r:lHd(qm6r[uKT[|ks+AutpP.0Vhaf' ,լR:!]: sep1"@L)FK%tەYݑ@ 29!kZb.zۖ7.nޭY["B>ߝ1cEGC z)?"WWc{5: DUՄ/ +jDA?iW7lZ7ʷ;[%NJd&Dr'IY\hR60r-ʺ6WC`}UI$P,1oDAÖ/V:eņ-`,oY/ݱ)|! 1iTܽشDιt^73h0!-/]6(֣5~c#턉ӗR05nl:CLy! a1Q_sOq!)%5#03g!0̃T2^6:ע4C_XW L: ip='>sCa@Ci4kP z#T=saTؽ;`fVg  ;`xN@vvG! R\!pJCPy8Otغ.̾߄?m?.N8BpDt=~8+[Z!H[Ck#`X 0- - "dl2.b" >c @gaЫ\BXK&=ה%?}*_Ŗ͐iŢIbhX<" JFA0(&~> C e Cfpc/شLVbJ-?k.A7_"NDˊǣ%cƒ1;;AͲ^bYgT2Cb!,OK= yЫ7DvZC&3O&L%Hq1|4JYqZy->i':OJ|C> 1d#LĐ3ѫorٔTÛcM'M$cؚr]0IU=uf# ȮZT!΢<0ZOsjӞqkuQj-"eA` @XB$d%!@VI %$lj@AA VG;ߙuzݼ٦$DbRfw9WiQ^cUT-U3f5URmJ*0P 5ṗƝK@ޱ C? + ;61|3$-!xUF1x&(bJfX,tf(FނOg5p}o1(f|Sv/%V})$;͚F.MeםuEmvC'hQCݢYаsh],^trx77n97Lw@,Ddu,B %k{=eե:uS.uܥʐt*ڿB۷/7&V,tOmx} o*<^DAxbyލ0>P,8OkĸDT6.HO:{9F#OV{xAW~%=3ϭ/?ulmWۂ%/=J=:U|?HdeP2дpy7g3w{jd8⇃ȀX <&(Gdl1?Ƞʨ13?3vjjqBn8J:j`G'`21| ;7`&oPh1G a}C )ȁedD#O/6 P{]䈪F (䠀Kc.#KqgKhpu?ŀ׊@ؿtAC}"c_zAW;(v@ہ;\BPn  :w#-ya~ C'z6 UC_ + B 9t ;{p?*NN& n +nlw p?8_QC< +Lq;FVk)+>eRƜ%Y8ωgz4Q0kMa?M47q1콌!} Xu;1pC:b`!7Ey!%x„LiRK33oT-"֋2$+Ill2_;$'I$ʻ厐7Fz, \ GN-M"EǚT`R%~BL&6.dN(&pG~H988l' +]mE P7ȌE2&GrpI/9iγ"Szx2*}L|DjP'^81Nh~ʾ}8K ii1U vp9l Z$N0gy4x2L6AT'f=$7< Kl#&s)' /S՗@ A +N*1hb d| Q&O%xΗL(Ɠ+jU) QS4w75}M{Ҁ6D6%h'h ĈADA pm|("F-lTže 'Z88kaVmFwII7 +i~~~}FY;A2 Πq@PB ^WfΔT! sF.JsѯzJrИk8W\+e^_4 1b ,oB! APw}A"NUqSJxBrR9aC۴s%Ime]+nnYfSV)) !cHɽ_oCP% I/ ֔J zP*5aniԚ>Z*|a98fkz.7q{ʹ=O@dA (F0aDY0H R'uJP + ;-ִWSXmzNf+2~D]nt1k%~fo2 0~Py]܊?K +ՉLMeQkj\rU[kתKmVHaыLzqWb1CO@s0 +&߷uasQOԑLe-ZyUqR+ +Ygԕ[j2ZkkU6NQt.bA&b#VgL{BPz7CF7}V3GvHwVeU+mŲ.5[4my6kR-4UN#rH|jx>A2 91PRo<݂x.NW@Ʋ5΅ʃvz!0$lŜ KHH"N_Ԥy=Hzg04Ay,Ey٬,G} "}bg}OXeeK'!vD _0Yǩo"ȋąs^kJ86׍z99`t2~@2ȓCByvK߿靐E?)ԯ&X׺5\L^sv:F"ed? ƿK \⇻)t{]ue5yn4nq2ueI 1@&d tGeɍRR؞Z`nvb, S!O" +Hu rK}*e:.װ~vxcOѥ$Z"oieLMoʲ@[ F{^ ؙΜ.zD{@,D۵rZ ?8rD݁A bfL6lL0V;f`Kdp3% d 7 l+Gq@#[8ko G-x +,=j] bOrT!H4dT2-pSbj'tC>ZMISs?Ç k +LDFr$j@#H$C!ױAU&46Aw'(vGUNkp+o5SB!JbD}ӃP*CD}qIE3 aQ*qGt7Z#`&gV[VpV0wEJz@٦ }}/DІ.ݐr%`U 0j(6 +pUa/S 1f-u%o/&|E@j R|iA +~9_y" -c>CzϐBT0Bh2@EjpB e(;`uzP/R e@SWI-A+vw>o/e<{g@|˚]b={ǖ lMi24kp/70D'^' RʚBka~mg}#|%#3a&ϰ&5==-:+ZQԣuTD+ʅuBf! H,'$!Ҡ("e(U(Lx@e(λO}s7i /l>BG/`X/Ш[ DՄ.3#6'=0] 3ĉjқ:kci!i{JFӚ0#NI@Z +݀xr 9{"=qH{\v[laSBzYF +Hz1|`D>e1̦X 5Q5P7y7@?H @O< qzܻ,\>5F})b_d < y`ۣpnapE?tݦ,p89 ٹi$,~'<=E3ch/qǘcӬ*h䥄gx=?1x~M\!_;_[ 8> yȷ/5 Yt Ac|bIo#e\=;0 cÑ͢GV\_͘>؇:Cɹ>q%y?h] zjPo4L A f~ 'J8=leC5Q QI^M|or=񁬊@vܛ|ܛ,`:jp!ul,Ap#@䐏bv/f<#|`l \QރR܎V^N9OJtQ'i= +G,`Ow& iנ8 `ڹ} 3 ѻkJ&DD0 GMIT: wc;rjޑnct3:S ])lG en G `2w, oo~g1Ag[$KiPyRT'5kkCWlǷiYjl|(9Uѱrfr% 503o':M,s&[W8nR)UK]^6a֖ 6X~%dgEl|AWIg)E + b K1F|q B̳(V=1mxCY0;̂c&εk\,č `rlLjxcWʴ|Yu6NQaK:|a6.ݮX:ҝbMf*7CIC<\:W{}w/<صSS~ՍuquDPQT(bIl$$,D*0:ŒZ;NZ:nǵZP*2)UdK9}m^|^K.7VzaZjBK5}F_\c<\mzGiafӛ0ܻ=|j|4쳨Ǟ$MW?l{I]voqf"k[եm+UnzZh|:^Eh[m[?QIT"bŋxFR.p\T*m?;1te!WrΉDyjx,k#]!ԳQ>ňX&gk *Y>cȎcd%rQ)#5Ңq+QhG3bwF-!?&H#!EjZQq_qY_iRH #ܰ8΋ŊhM\ sp1nq9fG!~%d͠3Y /RLtFkӡ\Ob ICo2 : Ʃ:KayU4c&ϜBp,4? #G2_%dBR+>a.| sxF=qs@ ݄Y0)։AXISQ-~bOqp?;"s;TR4HH6•%t0 `Hp\"b4GvnM-13Vw_,Q1_@? `g]!gCzztPh +á.r=3'CM*${yCBEXtY m Rw26MV/z/钼vH?i3 lhS`¨DFf(Ь\_ܜvCrH1D%3O ;r,jߥh@aEvy7;S0 A1lz, +8HA6 MPnK|bH- z9DWUB𘂠z'~٨]BfoU A %@ǰlr2p`^cI<BW(w8 V)%$uWT5!zJ _6+_(ltrH e&f|U7h2}`t06 +cP2A J$7?OCj!L0lSAG~DuAYgV\7?QtR6?I:?K 94d0 \`Qr$TOCl6Vh%o eLpq__ӫڣI7?k~"-ցjWuDd !I 2 hQP(ThI ǭ{{̋yy~y$A'b*37EmJO%\OŚx4C  b'iݑ/f F}KF-%:v22vfAi:Oǡs=_H`0Z:*J?,m: 20% qqChmݨ6foT?'j݆49u NU<*А^ _b`406YAP24]f2e\w|D x~j&TxXp%=6s@4j rѐǓ +) [`bc1` i,p<f;/_ +|A;sT!5஘I 7X- eI$->CX?\Ij(cO3 4#76N0 Zd{߽\ml׷m#šC.9 !ƶ˜LV]Q[j6,KeDŽ =<Àd0 x9h@ZjKf{p?pjw˓S?+<ڕߡcSX8Z-PKj~!Bl0{R2Y:=,VGr=/mDP\s`z[k sBfjv,t^<{ j]7wZu@E מVET$xb%Rν)S $"B˸D5ŕhڷxHGz,߾ோ;^5YovYcS%]7+Îj~jrXUPPl,S.)Du2qrgH\&餢aH8, DO7"@@*,XSiy}-z.h umǟѨ1yHJ%e+f% b~jږʑ!K餈tXHFy1_d 9i9%FWa`FN֏oU6>\w1ҧ"6TU"Oe!<32%Q*f<%Ii#b|TȖ 8)GjD́dtm-,_tmkŃ]_t_w]|`eDAmLpfV"tnKR%q)yI㲇%dՈznLHK +B@ +6X֬6c7WG0}wv]:֋5-a9AZRNV +T#$Jđ%"\hrLǟ7J#rn<[%/sڥY-xg ~5=?Xt,S~gZxB/sI$4IŎ gj/C5z*4 F.!gCȚ0 -Em-xlۀl@З}pƁ}U7ܭ>"Ϳ{IŒ81k5Rji`MK vXQdbF0 v<[_o7l@陣UeEmz]~?hn/$%8vC2]$ow/4WԀWKկh!Ab;,å` +tYk24cGfMcݬ?Q }#ف!'Gz6⼆pq^o 7}:Y0y!`XNKg j,eUL9or^!p]/?4$BQ.X=㴞0&+Am;2]>0GzbL;Z hk ,A}kPdk-[me{Vg]1f=Ϝt{jx&{9:jo|}{׉ϾGt~;߁pF:0Yc>:̓|ޖy9ӡ7Fy:-p.]gQMy? q +.,* l!!!{ I 7kKGwKU#-X+:uA=zL[8 +B|潚|w]=hil*5{.]0wp3GN RqU"֘[>asbOn"){>G6bڸ-Gx}HY|HC4ЄaX(AQ> a@TNq Gq2͓$ߡ(2)*%`8z dE!; qL.}6D3e|4|Es262'aqh/Ȣhf3 2* (\GAi,; <As +Ru t:3ALd> 1y +J ' JCʀÄF KTaP-!DXK/ldAV'ɺ.g Ivg|[xbd=xM4d'ѡ`1IgB'^9pGCI<ے!ٟ +tNf@x&v.Ywg!>Y/yB t&xCȀ. &E [D(@/8nBܖ>BE<C!ρ ُQx /(#hPy#o1&BPPCUꓠ4 ʝ =GBH#3 KGR9 &'}HNJ1&QOn=[}KAݝ <Ϡ#4>(:qLT}å +A1(Iy -|v{8TgP^RWhʟk4Owyw:?.)4½a#*}P23L}*QhAd$?ҵj}jzoW ˦QӅQ9g0"7x&XśU@|e渱jGʰs)wtuV+neEc88ᑾx_~aKyrpf.l=tГ|{]Ċ:&N'ؐ=ա#1+mWU]GF&K_ +n[nZd(0[mmECSC-_zl/yAo"ؔ-Y#zY[|%+p2\+9TcqK?gK:-;,J/Y_8Z4h 8NJ),9yL~#d+ȷ.ͱLlK2ȟ9( vmpo]_JSMk{As_%Q{k7%γfGpYeM>'( dȾWOz4̣a[4;Yp؛=n[m .ѕ++ۗn)ztAGd9׉+eU|Yy+׾ʾݮ~.'0FfQC5&2%?1Ad袻[~mC?h9|{ɉǪ]]mK:j\]Etm_Wly8yƟ8H%CESf_˖889v!5dl!ҴeFiK4L^XYA@3AZ6]MDj+.;fw9&G7%ƞgTF.8M$, +%tIIlb樒I^֥N{:+vxof:4 kRe i"anH^lYXVt/#\Ԉ 5=/%z*"9z&,9j649j>$)j%=֓0{"_B4{YS.uEp@ +k%Y5_qOfKf|Pw .F +&BWLxYN\;.v% +#<{+UͤHߴzrLNM~jK +ODdg%222YI„)x䇑 ~d7*a:<:~7ǎ.DDaDrxY~nSћjᮽ&ʷmZ_s2P"wZ~ܙ *d 8ᇧOq#Rgy)~[& `A O_B'=q/n&yd,@؆%`mY`Yn`ug=w4{@7|I:H5 ?BHI t`{R"n>|bf/s/m!?삐OV"xF`'!,ɹ 0z}OX ҂Ag,7{Ɇ_g"D.ǃ +QvGlYMtBt"s+]*W5Fh+ !:i__#;?=G+b `>7ҁO=3@$fAb"h%[WWGmtp:f}6aי D @+5zq$X?r'j"Du"֕ +S g8@> JdHJ[Q+<: D3q,]bk,d;2{!8?Ds3듀UHXAPAK +},N&-*unH2 _x+lƴEwÆ؃Q7Q9/9}pŀw3Wq>&!?{ԯZ{d>@V#֊ArArUU=,7J$6^Z^%s^[%*7!q+C;Q 8/DN&A-d_Ɠ|Ň-֑{@w. …lٲt[R["WQT;KRgIO{[7c! qe#C1$WLhb- +#G4g _4egy?YH_κs[+▲%kҞ+o.J{IEeW@ܩj$>đ|)֑6UTN-g7G8/yZ\ИNn}%7,ܫQ=V!Jy27ңv[V-@g_Bidg'=6M%sz_e_- ~6K]nt^7 +r 9戞;O?O9$w&8|[ٮ]ٖ2h[ͩ㲦ԷƴwI dgQ@zlZhRjwZOkCf>VEuv$ٳ!}*$\KlWv#Ir8}`ZjMk귚}#ꆵVE}Ƹ|{[)!yDmH@6o<l&} ԭmݣFyN$,P}U.+*wWdS6g4e6d\Kٙ٫NQdsqYUDH$[G dΥ‘2VrG6O]m5n6;^.{vW6g?h䷙6 +[ ++eyU; jks?լ}0RiN0-1VU0.{$mJ l޲T͡ p<߽Vԫ{58xthWflYWf6nIY\#-lTWO0vZn|Z^03 iMqTU?(˷y{)L|28k݃(7x_h {YGՌF6Z +Ě*yeNfSkʦԒ4Sb:ST41L a&.&{S͠|>rǔmݭ%"J};uʍbBf\.1M),,ոLZ^ُĀ>ӐX:)(UƔLV&Bٜ3(CU沧iFuh:'ʿ۝j[W[Ģx=rzSS +nW&./fkIiViqUX٬5X9SY׺-CuyTe4\ѪuMBXEAaIXE@0qWzZD +REAPAܵEܗ#n=3v +cNUԞ,gg|~zy}?ѐf͂1=ŧoA4ӵV+ok2?mW{$QRYk+;.b}˶S"{qIyy%w,>{I@m˶\6E~у*!ݮ3FtmuM原Tյh'ly}OqOj# Ǭ;&a)*>K_X?+w᜜}md}=@V^`O2w  Y٧DN6 u1ֳ.3&sՒ"/jT6慮;TnuÛf=,=sӪo2/ UYeCswFRևD"_IUǧ M%S,\RU\,=㰽CQ>wݩy'G,iY5-yc\vSѬc{SkRNo / Æ/?R>*FGRGCo#zTFtb=tG_]ҡkT%^ 1MmDd+/d/>08g6;>'^:1U>>f6#9(TѰ臝Dw]۽j/qTyÈM{\]ۑފ_q3m,k |VS\1s6zڌ1יӣ vyŴ#>3D]!h`?Utr뮈ӖO}[8:>˼&<ت};hVFByCx]DFvAu:yDgD7#jnfʯӖ"kNkzżr =ZkCO]JOxVcz>Fȵ=U͊t2T8w(C@u752ω.4>/N͈V/y/eTFWfɯfOxdחa3/N׷!oc.܂M |{FD7$/!5Z!Dul+Xvv'_=7-)_3{p~jZxY4C +UClw~d5IJAlbY?hGXaD|K#Q;#JÎ7n:Z(3 +BHc?d`l.ATVK\_0l_Lj*P5˿C)EpVCԿ.4YEjE( "A% #@#r A("HM׫XVG+VWZ]gߝ/g|g]ך$i VcjD0!D +hzG[Cq n@=_\r}As}F} +ns[x +ϫAy9*Φ9|f9DY@DB(KD*׌F!.mz?2a4;Na1vk +ZC狰oR # ~H{/px*ٽ_ +LJjٰb׻ͷ=o:~y_#!|\qw| $|ÃQ>P@)wusW`Qn2#5hyR/ף5n3Q-߇/5uM  +N :!x\$hB6&P(APo8.S3)mOEHd`\iXf6iK'Ed Rtv阽';' :>|$l*@zg!U 4S V, =vS^jR +\g [ͨ.Ǭ="w99)xOHKU|%i t D0^y(ewE&:bh F 0$@@)=Į%Ωs?A şS~+[ovlLqɥgr"2.GRIZYEࡄc|;+#vl6Knsc$SA +j)0@7b-ǮȳCcSSfz3%쥓a㹱.#->J ;,3*o&e=d}06ߐp]PW%n 8r r`d0q-=-@Ѝ}M>*g./.qL'꒮O+IX") ]E7!=*nFgfONTF*=ERώ\>fP陕}z;D/*'Dˡ9a~5i(akRe +-D}/ +=˷Duz|o.5-Bg7߿f6x@ wqo]GSI:mu~nG߶a6޲z1hQoge!̩R^[.*KחkUM/+(L U~P^^Z6j`0pXWwT hu:yMt52-&bEKh}]m[UM6]e_Q*P+K+njQ@ɵgCe"y;B;9S w!!tC}fh@nj ՔUOguUMbW]CVm7ϐNԱu/ D{X[~|pL[V)DBwNc=fh rͲ]5gm[Gn˞YʆܠRzBNQH~T +Ș +Ht@ĖZYpـp{C |i/CC._-+aNn݉[S;mŴݭՌV"0G)js23^;B|3$toL>,u'{RFj+E^O?dr7 N07]X!@*Bw]Ad Bc _ݤt{+k/7ZT_ks76mDna-r[;~cx|D_|J>KˎEћԂEG->v8T)Nв@]n|;)T{s%35q0Ͷm@yW5;dd&GyS-<D6zvc_֍Yco,dYbjmt"\8\ۅHMkD Ds;^ ,4㹼~ocd 8= TxV{ .\;vhH5mL¯.CwC׏ma3>^gsX~G[BQ(e>*  MCraxayFc xGaw$xKp' l`3vog&_$*BM# |Ʉ@CBZ(( *.\,\ xH` X&c ࠇW!fpU3+l?D"\" Hų: Ix +C =q?/8T 籎簝'c??g5|M˾Erb(xS(b +DZDhĒT /j!8K"f5SdZm$=m2] +{ +-HEbfy"z} ];ҏ|!iү 9ꏨbD2wa1xd] ԠkyXzLVG'zB9 q h( F|?b2 ?ɜgfn3~_r +B,#dX,TzGPA}1a4{W#"f2ς友#; @vȨAKH?0q}5HpvE,UO ɯ)cI +n e@t 1W͈1Ҵʀ﫧4OmbEۄ?+[+M:VHiPv}>dj3q]3r57`g0o/iK9XߎM9#sdkQ5nBN y\8 <; ?QB+ y#p!uNxʶ [Ÿ] X&wg<%ݫ:0/<8S6|n:9@틼H뉸Axh|KD~F!ZS4.y} + +|&t3I l}#fr+Ȧ0k4f,9nD$s& J{jUwQ1k n$o<.x:rVȖQF"vIv$5 +Jst0k울 NeNEOU{JX( Z0D] +(ަi0E&pJהFߍyǷ ʣl2v2&%ݵI ť3ɵD K%)^U + +/ +Es +!Bh`/ {o. +c2{WTKEV}9{[I rU:]M/6 %}_7[͖7[|ĒC_dD[ :U7JHu!ܪ5*5LNe莖˜=jС&K<\YH)ʨ+d nQnz 1!Y*bRSv10x{J.7[$5; לvU< uSTbt<%7GEϒ׳dYa$8̯~Lđd"412D +Xp;O눠kXMaщԭq-5ǷUWFRW%TVzeRkYE;')O'̝{/!s[Y)(J"j& pk0hkZ1i8f .ZU*+{H˔Ԥj<|/_|b +.1]$[=gp{W#vVvYB{>bc'ٸQ9jU#'!@jYR.:S%񫚙'+|*'88|"*;R%S"h5[KLqf`34&w3T1Lz-#6-.Y(l5+ȼ&WdC#- n +Va#FpV#ZX+*_ͿE{Wp ``#6ფ!ly +@N{Ss\»JC:՞A=q;mAԣ͈zL(Auy{oq`w0@-vвuq1Q -q/xl#GN *v:s9>Վiq\r@ o/"s;ٿ}52GpsgN kdӻ iWRX0o39jUmW;'2w(tێLݒc} 9. ra ut 4|$@MH3v;b=IQ>as7[MΦ[sf +fjvg:`Kږ:duȎ1{\E+WwA'@?@ίXΟH m!f[Bਞ_l쫏^'1)i}g6Ky+wVn|8x8]Mh_ο-3'pC"HvY(9yѡY&/J9hZru3W/~,=A}ny;P gD.~gЗL{(m# a!: 5px7?ՙSa20 f`FP"JQ,X"q%Uc jtE=.Y{uƵG"%( +!;O}}'~$~0Ofh#v^R+uBW e{; F;m_ x(6Q}اD֍"j)]5GPps`|(|H?-"")bϏ߈5X/v~nH>6J-߳* .C4'DD8?( + + А:H>0ZArCOY +yJLX R`Ev%,M4/q-T{cDAD 38Ӆ㡽.Cw&]mqm{w'♯E^d֬QSzɫly]jyh'P=9]}GK4wV{Ju#qg|&xBSFӉПHD1v( Cjxm#TFtfNLPɮ+( }߆}fDTDDYaVePYM*X&FM0.59Ѵ1ihKs޼[ą3r { ʏ2hnڒ۪1Sb_ǯ*Ҫ=RDna_Y9sMF"",MB0R߯iPQt &VX) wj+\ټwIl徼Tʜl~Yv)(NBQj& +S(Xlaᮔ^;4>#80Pk=uL{Ӽ/xE}ZhBg./c$18%#p0U$MK]O=O>d(NGQb. +w`1JD}P:}'ih`A=hcZU4u kbMeՉV9iҊ~-FX_r'N>++D8E; +QB`4ԃs5ԃz{vH[Cje-ZEM+c-$u))Y$TzU7 Uxm];xs6pk +bJsS 5PH3@/*Ʌ.3rev.+k_ٶ0Ӥ{,wdh9(w辩KpBr_:lEX z.,^.Vô6T~GK5=Z)GvMw[n̳>\Q缮kD{xv;a="zNϤB 4MC rfh a]';m$gxF[bFl6_7 o7䴺)AU輺ɡQA5h8AzvV,Ns!eL83 Gx*NgLбB㐱Um +kpooȱ>^AwP~1?OH1Łi=3LL{յ3OǨޥzZtnT!ACӷyFsh"D3\p-Ds8I?DMy`%6U" lBgE b eJ2L^U++fMOe?Y-k7g]ew+bG)F)O+a5Xs\3 )ς@x+܊f֟btRk(j/˔? 'ODT up~ `$lF򙔱xV2eы,?xO{*PuAo_t?_#?%7j`X~|0^@0WANx絔Ahieޞ`og?hΓ|9g|Ht7B|{`'  zh%hp440ppX%B0H1Bo FʗRQ>= X=Q[LɅCy+)hEˉH #[!`|E~\BAYpS8RB7(ˉ +ro }bL x`B/Hb͇C<hƠ3̕A#z jAM,H`Z&)&5t>2L$U)}~D^ KK0hȠ ]̝ACo l`rI$! 2A%r|INeJvv :2hOZ1[•XB\RJj٨B: Bw,\'u}GEugqSFA"3u +DPAd230 ",BK5ZWcM=hbY-b'su߻}9(zy'V&q_ Nq%]ev^Hihde-r8hQA:'hE"[|}mqBLb?ǖ( zŨ-,rw( e}ow?$kxo%7WCgҋ_w?=߷{'+E;oKQܒ(['e8s21E3fNPxpz]8oW.Z ?Y̬ Y 0/2]7\ +g'\e +/p@w$@/#@oZP/^z~>+]}A&ݙ;U'Eb;w>3_q)0JƧ(:@38]z~@Iw}҆<4{~ެ>;ܛs\Z&Uٳg7'dY>=x5qχ&G<ޚ~f

#z}b!\ C a ZdC_E yN68=qh~y&sL?ݢ?`xOn>A]gwd-MwN6]V@A`Wal-pM9G2p:ҋ},b>H.p ,ݨ?$Ev/6߹r{Z6A[K:K7]`'QkԱO/&f~e%<疈JGT؃q=ѱ{#4=]7nmtۯ6lM%YK#٪w͡hOPc8O7cq>_'d$8,d_۝P=>Ұ;.AԵ$lSlEGtmMֈ6eY˩1sC9z:N(#5hWұ0e7gRYp" S'g67c{g7'upKJFu=1Ŭ-![ܪYĕ6/Yn"UVѩ6̥2+yy]7Li :Ƣ8н}I ڍ0۔)oS1ņ,؛m ;s䬞l/^g\Pu1$U)&uMCR.־:acE|sejkQ)Wjvţ3q$2 +ÍxAe Z!3|gVglnG^[΢ DY f itMuZ<ʾ$ɱHѩII'ܴI7r/Z52ĉȴI0.x82LcTe} +AO)tX6eiʟPj=VٵuZaIBC]U(ReS*,˶I+-K5;w01E]#.BdSc +PFF 9Pg?\Nay4;ʛfq+ Fuj,ĚqҘFYdNʊmLXŠKhLX9:RXU[<^H}ݍkW J8 +(8g6NZ`jNmzN?f`afnMPEESkٺn]6eyZ(*X +)JYYػہΞ;0}'MZB׋ǽ2-c$)nJjG%W?ō'=vpUB`J56<ցYki3d^S`gꪉ~E+߷bz + |NXc.tsȥձK,i)X,1$f=baoy-~KU^)5cFi(ޔmJצJGxiqoMnx$p̆; .X$lhIix^IUDnIcDܵZ"sVIdގ5^u+7r~v'l3`Jy*qEX[Qsl$S}Fna)kֹ9[V̭3ʮ؇-%$}0=5P-gťʁi\&TwWQXJ(W wݣwy2df3]/ӪKR\;-] lI6h )wHp8_\ɞ:P;`yVCNdQ7F׍j)3u{&կro7$1T(c1f`6ɝ.`2Wûùf6hXt$ G<gSFcwAUQ˴2-Z-~ˣQ;"ijro`R?PTY@Ƈ& cO!g|&_$#%;`?;}MCO"h-ݰ} `;+BgDi#3~n`k/b݅ F I'3@9=.ak[,m03Lv^NOй^6Am?tuނvU*3N5?evSO Hflo|oa1:w4;pPA7 -`s̟ɹ2;ك?e[V`'` x@7BdNqL9ćᇡ7\.,P.W/{rg̎ X>̽o,v$'ehB| CG{"$(C iJ0~OzJclr}jO][B 9 <9Sb(T/yf(ў:-TDA@'/R'yN[ߛ3?;nD$_}š-&¸P9U^x<~4^.0#;ߟi%G\ )PaI6Re١Ԫ֏ k괶MM6ѮAbN} :F9UrꧠǕiE`_PKufT :kA+i_ !7!q6Tt-? A$b@k"q$>ǫPZ%vٱDX}ب]ti;֨ڹS+D7Lj:##ݢ{-T3$88t%|t$ˉWӵ ki-Η=>wqڹ\wYsssy6%6{6&]jH`T$>5@| q4Ay@+#Wӝt[ZF⋴dډS5?gcb)+ )yLeKgMi4Hm5M'UvSUX*iIXgk{YjveVc5 Sհ|w cemyUWo5+ o" JbZE( K!@k@E(޸junkn۱vvt;ad?=s9s߰NJbMH k) ^ ك{x s%' 0!n%&,%^JR/5|ϹR3qS։ةPG2{4!xW!s΀e$ kg|¾Ct+J\V卵WI*9}V8=0MTL$[ƒۘI=!CCY=2/.H]r³ זDظTuYc繥ΕAt_fMMtfv<gTF0즎Їyj^]w!S[lϩ mn6gu4Caͤ&s>*Ie#YBCDHYCB>9Ήװ{^.p!g 0e b GP5&0z +ޝ,}`k~ I_Zȭusf털\;')Yh?P[xJ$  |s×jߢ7 A R7 +`LRʢܺKeM + "]`Ȭ3VVs͆v~YQaIH?+)/n(|+)1"4#Ucpу. {F[UQyнŜX[W]_]j6BJj9%m|cqP4*Ht+rޠ5~#0t`aB 8Y0O0{Ͳny\VQS +(2UXEj/-唞ה^dޗd3MD1AJ^W%fA=X4By#45Zѫ ޥ~E@C]S_kͭif!azSz;\Yu:\YHUITf"P _]AxkC?4 +`Cz'f,@w +;kW j0\Ž-nؾ$mˉuY [uMeW/ة)ZxM* u]xpNA{&q38;p;@57h~D@t[ۛ NDn^>pW BCȃz`uP y2cc}8ܻy3itu` cOx>>ޏ;x}~lFຕ@Cq \֥)bJr:ɣP-g< <ܗ\;JܖᦼUp8^E' 霽:'8^vMm -,U)Q٬jifM~/-߿-4˩ŸS۟*p-lQ犓|P:Ma(UOUϰfRn1MPm6MWf7 +l0Ԭ7m\keYb׭Vh %? Z+jslgXgzj~:J[EJ,6PnLW . )lڜk\]n^bԼfy\d\h,7W9aSs\ Nq+H +eu-??;w +WtX1QcJejtȴ* +OY4KTh;7h.?~vP}^P}n#~zБ]N-:3.mKvʺ{:+=TFiXCEqYZX, +SvfU6zY_L.4W:~Frǜ !{vziBЏdO%⹷7ubM7gjHwP,,ΏL떢u͌lsdvq);|a\NwYo _G=97Y#Y.{{3~,K`E=^&W{^VocvJ4yRp }بR=9$A_ٍCf =s c;eH~kZLtNr"}zpppc-4CJbe6%%ppj\&#}YI %)֘ꌉ!;_3T#R4b JIOde7 1P,,.V:,UHA@*`-k1Xb]QQD#UѱrԊ:k+ڙs@wŤ,F/(GFWύ8;jSxTQWc(a>_# }xk+$|dm8IZ%BN(If4-yYrR"!1ba\eLBUt|M,9"V6:p kv + A>0^舶Kgųf] ޹>-)9;r=$eѹ~Ȝ9aّʰ4$Khz: w=}lIV|(fYb.sFx <%!e3˦˂KQ~-'-Vy[M(Yc^IWؒSڎ]*lH!)6=g;ؖm^!I.I}*$BP# `hKWjlҪP3yU UeXxUYRzVnQyTWW+>j +a^c{s2|s@鎭WU[` |7q8P3kH̐ Y I{6+1n2w55w1lmxk:VXX\s;}FZ:K+* <moԪYG]׏[\?Mx,i+q1K6HVȆjdCLN2T+䃶^7τ={tW +MDofm]2 kPO  3CwǀPosc6.C}$NKE%q\[Hv l#z,za ˞u?0 &5M:0h`<c=F`ӒrXBz\U3X>"$d382;s `. 00(лв]:!e +mv0o E2 +N?!kvN}'5) i{M'܋HDrA..iT5/Z\/_\JyC2h/`pB/뭐yO33OW:赦;X_*8kx!v7\[cی@77,]N)KOgͣp4x0mځ=jz/ȏI~"r~T<</qC.נ(++7&F,(,ȲܖEvvrY˂+  ".!xCEh&Fmc6If:i:MSM[vڴ}z<_9y>|e >X6e7pmŕOK\@$ dXqu,xFVe +*U-])[kkݵMp={aj1drrr_w~ko7CfC $r"CkKGmoWkqKp/4 nRZ.GRZpP9E;}VC)g~֬(b}Bq}Lq==WΑHH둄CHW ׇG17r}G͛`!:)3aNi(-)>)wfi^Qg2z{88w}Hca kl!Mw07ߟWЧ>(U Qϊ귙.=CӞOQ[2 $<%b޿{?@ωlsc9ʅ49Lføv33 @fkזs5ތF~OF-L/jOJ[>})iNؕND"BWO_zp}b0L +&tRݱp@Gt>ի/`wg[]6^g@ێ֬@wV?Ӓt3Fݼ^wKZVw#ơ#"$9p7\G߷`=` +ci`@J0C1)Q0󊸞<+ߝ[ВrE 9{NÈaޒWޕ m'2H1D>O1wW9K(D}7 +A) iN3X&{m.,5V4 +ZE5=!8)Ae_HSGD瘃[xqz~\__z_ΒhlViI]lvcI>Yb9Jl5N-,+̃RaYLPZIXn6iH; \>b';(}-ügyQۼxQ}z ?jXxc^.=.vv)jdҐ0@+w(RV, Ư\2ZBm6^V{Nr1糨{{i'҈ߕ>j@k<ɃȣP]S!> kjX?7vy@E}eaOp}P, +(q]ՠƂADET,NPXh{,G$1qu]{Xۏ{@xgygΑڛ%_>`Q2l]f(2C/)멷4y赌A.| b38~Z9P rxë;<+"Q1ír\\p4éUp,2!9V3yLYǻH?RO VF*gS݀cju#`WDak261ZCcIڲ*K%\@]+!=bԝC݉Eݸr6ԯ_ȠAVh6#GdeYPV: S^ jO-Pwm.߃k=?CIl3Yw8ߕF6eل\dikbR5љ&+"CV!V`zmDQ7+|; R@.Wtll]> 7 Lb|II}g'&w!h!y6N(F{;Q׋]# DuOrLhv/C?[7lO 1yI#_ҐWhv<xռmּExD3=桍i<,`!Pqk6@kA? $#dYM6RDJvRK!u/+~xI!쨭PpW;H32$t䐍dur +.2i.'WG ƙ5H?2|B>N"u9RkC:k%2SVo>~CG7A8RWm! +GzjXjMf|tX@Tjds"@# ~I p'4q7F \hK_hZG9&ۇGx}Lԙ0&He%rM8O_ŠS 8tZ%#R9SThgG8A'5qU˲h%|:bN+qJ'98̃UYê +4jpHՀ&|W2cjAxQeNW^/'7~}6}pV7lGX3`?`8nsWu2:AC=84aT9F@YBz7ˈn.yJ\C;N;tQwðԹGT{$aL敃*|Tx{JHfKi +IA3!!Z=k, `;孁Pg} lʎcPR(bdl HVJ TX)Iy'e~LY֐՝FRK03Ov@ol=P4[Gas8OgHy!s!) !!9!5!U!쐣eOKC"#TțY?]8iG,=c~3XP7la(<`G`q8AZc"[eLeʳƕLFEq2ݸS^~EX(\(I< ԝn_>|r8nU =+LXcFie%-7e&2Lt\E)EjZL1S-0FlSϏ8gj1=6 ,Pe s :W|j +{Kھ>XX? +#e&5E\F3+Pydvf>6#hE ()Tm(O|ǧJx bca@OdFwƒ0XiQGdcNR̎LNNγ]mMV71.!Fh*a`+"}ccbuX2qH &̏(͍͎)K#"q4!SR4VhuGEyafav .D&葨((("0 ̌ (qh]\Q0.cMh4rZ=&Ic\kmm&A;8}}yIirjIjI4j{'JxU?3~F[6a>(ѠԦ*CPnH t$=WV^PVOW5MߡYgMYHc֋*^TZRES.qaQؑlZVudD9TfCi*LiPlJN]Y(_Yeƕjq&˸KΘqZqC&#CT ҏ}mf`69x%RuԘTfbK0ʬcQbBA>dbJxyhI%){rs~0AZy(R+‘R9HLT I\E4L6-U]ު^WY>J"r,JB2`y)PK8]LWA߳H^FB@̯}a瞂hĺ0ǝ"ĸ3ndX宖Ns/nO}M><<P{ + ~u@7hYGo ڥŠ$;Fc@G8;#\<өG] + <M hw=n];G;65+P`0^ہN``~ jCp(C!EAeaqC1}C"? 6je6րv1.Ao8]@8B{|a#hB>n~psynu󘈿+27ԝXg&Qs459=@{?0# pZM3lF{p3,?gyٟ!a{(pm>/д.d/`=fC70ԧ'J"H5K\~¿ƍ b^?EnD|B]k4RCIX= +(z%-BR&kOm?rw޸p0>&?62j4hGLAIþxq1GxPR*Ǎ+GsMԝPS20l<@?F-5Aո޸5ZxWXwq+0"<⢤MT8UKƱs qW\ %uW7hZpYӉQ\ňv ¸C8? ΍3n&<ĉIdGoN~:G ӊx0n11W&%atrF&0- _NI~GH) +^?`ST!|:lG0V#ӝ84ߛш3۱j웹 Cv`p>ݳ10v%%U'8V? _LHjȹ{<3&̬)8>'$r&cp{T`: 5cgP'vö~ak?|^ .l +>/څCք|/@܎FcyG92]ұcq6-.Rlw/# û º]bO~qui;X\/=R}F4XLk6c9 b r&G/Ė$W|ٱVW.jձ*]إ[/vI!-;*ޕb$7SjU=c;3Ҙ?ov$/޸ذ, +Xn}+Ra%=W.H Ƅ'NQ?RjjWr^\ Ekp4riӊ 2)I~<'yNGWJVRn0͐/BBl4ԉC6 rUe8T.j* w4eߓ(N*;STu˯lU' j^,^h71nFȘyP"\ֹ-B-΂d,NJ`/( +bAAdHyղ֯dۆ4fi,5L}2dZU%3_S11׫=W̽H;Xx:O#c㳪EpFIB81(rБ-6!Q"ګ{dwY>ey&& MCMZMZr4;ej\A+XEq 挄2r˲S/dSYlN)ݹINuVR55I4)I%)RCm|GiJ%i"ߋk$UNjr!ۥɕ,]]EBLHuW ]򲪣r|ը纯UUT +U+Wg`/*!mMVXE] k#ݳFz}IEDŽdAyZ8Z1~SIOrYSZU!ϸ\R㻤Ž@H55 IFJd$LEb<[ðu ⽉f`ׂX.omBw{P ޻bh'bh*6FU {'Za'|/^@,%#k& jU8"W-EĪdĢn+ºKuG|qXYĖ,$&niTUk_p +"$DԒPJ2UcLUjj:Jϕ:Gr#y<꒕Ȭ g*]FhI#tM#44B3`i M7-a *tfpY Sa*gC~mw@^dQbOE*<7Ps#)7Fay +믐 + +̟j_v;\y)`jcmAv3yf.fN5`={e!/b򥈥Rpq/R?- T@iڔʿ4A~kS>jmVҾU^#_WOjYQx?Vv&gR\)"K/ʥk%O<Xp1Pom$5qQ cXFTޕe) +SM4PIYhx>]B IϕR)51JjIb۶21 ocR P RCk(b Wovm7) + ĚzrjE oTK;$]++>v۽ c~ǏZZ}-ͥbbjW#0Gi%oFɺUh$/5?(G ~ŏc0$~b9EQ:_|F^}I;l 5wKa MchJV0E:\:Ǣt%B{ KuL/gds2y4]!T=AOI.?H+XMXPܥq>gA*KczM#c/v?>>~_zNo:ptp0JSjc &C0&51II1/gה_q0ބ10fXP+` -6ПPOls&\wV6= 0a&~j [Z=W^u_:Rtzme.4+k4xƠF +)O ίu/`@hȉ+f7r}!>w7%,gҹYn!Kktv> KP_ ٤4*3ZzCǪljjm3S/`R _Z- +N!Mhon6\[b6R\wϑc*=Vc=?jCZyF+n{>@NZ5/bF*#r#7i{YQǍԨ+ƌG(HyNd7xg{=Ê6Wvg"7*l.an ZЭ跔=Js'jvLbR53fg̈YaT2c?5b/ScSbM#I̯\%gˌ\}2|))enE1>=*U)@=Da)fn$[IcuhuX&L;by7q3qFzWhD{o͌ qڽ]iVK4+>B =5#>4`%ۆ)6ZSmD{d[1ѶИ`+UXj,m\Fλݳ 1g$b>ã0{ KHe K"I&L2IfLB&$$C!"ITBR, @!(}cVVc] +B_Hg3s9|/>X$E ҐcU8E5IsT@U-wdґ +G@2#Xa:Ŏ;BGYn;[ycq9.YK$_mqg.j]L,kc acSUU +TE<',ݩӣgFsQ3Lw[,q+'+yN+fNj?g8IK+MuJ,Ty]̈Qif3ȝ;KnEFk\mǽvo[Vr_\GF9ƱlMԀxꉧ,'r`fE8;J9SU3GK= qɔϛ\o@^o1Mfg<`9={4cVy+󱕒c}fCV?8+/n-xBRgT7\c_-or}'w*Q?_n0#b&w[I^+Z\xm&}$=o%PF0 7f|>xhA,BeVVQ2#*RzTVj|&)ԥ`- +V(!x lc 4o2cؒbی-͸"ۈ+c/bO~o&j`C5o(]k(FӜUʥWj֪"ͬFnԴnM=ɵ(zۚ\16&gJm<h|Pu<شZՃ4>\3 i7ѴxMmthJcuC2Mjӄ6ii|qkzCz[Qk`mD#hl#Yy&-)tS4s!&E:TKXܗ.S p8.jkaR3нAWe4ހRbc‡/L>e~>g|A`fNmh5@8 +q P`%:X>qBx_]}%~1%ޅ&V#7B%B70vޯեh>g^}~$%zEs`@}xËWbCaADA z,EL +Fe;{v0-[nrt#Lqjh8Чm>GulꖀiEP0'oeX׈?L0?gpjJU^lbPx;w@x#F7b;&"awQ\r㑗#G~-QXM7gQ;O-SQp2"G#q$*q`i9-2 v/kΘV#cak6X.#/a86`Cj~c>11_Cqy,$Ȱ31;VcJlYi$+6%90HAOPKL=PISA&ze?Z#tI %UoW9R2yWP~XaJy;RU496*pz9֧1ڌv d?}ѓݙCM7!Y'KG=2%|'>KL!rl/碗͙s1  ec [Do=9 V8PxWtS9ڕ{QNUy^ g#?¡3m>K,;&Ygɸl`\*cїyŸ_΂j +([ +OaZ p6¥jJ4 ꚰ>ªzB$a-@Sf4(cCO# 1.aV-EWQ|řh/΃D*.m^4aS$E0 u3J$a"?JE>Nśi^t!:Q%,r\pVhЬEv6VZk`n&AaԾ& EQH5咸Oͫz4KI='=駛qfܚ%piQ)CSU6UhԕêӣAgF&}F F@NZOIB[%*%qX'{j}񻋿UZLXj`-P:FC#j -1tBo Ag}Bcr:#w#K V5HA 5Їf$&"p|wHdꓰb | .&7P[M`븪oR#$32R$uHYjA\, iD"*cDAtH8MENLm]'{LwXǿ *pʐ%DqEׁ /BEyjMl`֓&8֪16Mn?H}~~=~_Y⦎%( )Dn(/WS:`ʖ@Φ%r2mKʡ|2LhLcx, W<$Rk3`\r2#s͡jgQ[ ٙek,3ƛvsZ+*Pb[嵅OΗg +S3`VjeSˌ[ۑCh(u:.:.Xn0g<̙+[F_sa +SyH1g`^.@Us$z 4fp'Eg  +m=E'{xK4bX94s퉮j#MCd;srÎ]ر;ر;h(|Ful]pwr߇ {)5՜ ݌>4Ap&B4hΏ{Hc_N`G#I#ůKuX4`;1'-cٮqux-tɞ%CR[1Y~ւ}8694.HbU(Mm™&>v ~fتnc8!;ݪu.4@W 9| -Mywt{>Sӆ#I? {YrU +nGL_M%݁{ց 0=&&OVۃAcYp drXw@0C̄9P eP`~aY̍;ټ' K==⭇܁uޔ_8 l4r9 scxƎi )>s]u ~˯| | \K68ش +/cHgi? ؂.c*Zkl7ң49Y}]ZZ9flAMOŢ:#WϚdDeo{g)Q~hAN^Z0UiEUUnE&herU|w+Wrm]w?<5nk0I!vßWÕ_n/*}cJ;U *4X;<1*J,{T\,POfӌov?)E]C)!*mU2a.mTAE5k)7Vy~7L9ɚ?^3kz7P2VkJ6Ҥ3J &=UjE7%gaz<+Ŗ7fn^ jzM9X=G(eJSF,BW(5x&k\A yOcB+%FXZ(.EQ6XU<+Ė|l%69i!]552{+w >4)l&MPjX&и /SJ +ج%E҈ CE#\ 06C9,{rhaVᮚɑJ쭉}5 5D㢒46jR'ktQ@#bjxFOCcNjH, Q-נ\ZZ#mPGjRRc<5>_b5&.R)qo%jd%ŧix|4,ޤ5^JأNh`'P-?<*?we1 $n "" 2,0QNHAA(MqZ5q4զM6mzĸ&ƚXa9}"ΡlX?m _fK1SU@Y(/ir'+; ,E&C2 2UZJRSdHPR>%RBNJO %$HrT#,g= 3 +boeȜ6RpeE+#=ItsjLJ26(\MG'qA;Nw(4bS:F @QU5IVcwU^56=VS5Y!r>><ekzP +)iluOy-P0yڇ>+7{4>]5o_pS$l7SO7=ϡ~z&j"9Ff3A(h ܚ4K}i~i<[dZ8ZL-P kygຈmlyh*^/|3Xs"kĚC 7IÚ%%m,1ϵxXE# C N01ҾCP"p8iFjz͚ 5Jc{Jj}?@?6f p뤰;YT':ppzybFcI7xZZ+ow^BmxBP\wFzw>{pbGs֏ ŜC9VM(gU8@xuq?Nx;AEquO/Nj[9WuqN ?%wŗ̺75f/NLN>V 1,vb{%Ө;[|;xR>prWJU}s_DщTMNΨ@Ə7𣋼:~ŏZu[8}D|E Bm'|.85go-/(t"шZ:s_lخ|l6bsll29=قldsۮ"G'#$:D b]Pr\l.`w,$ +ϓTVWUD̮r]9 ];A1B9 (hr4*Ѩf,Ry ZDd+G#r"pvrԾѿ+`ܵ^ Gk4:ıT-TiL\Yn0˰/2,3,31 $vcxKʭk7V괪*RRU~V.Q*Jc;R{;G: rq+YȦcn:JFd)ﱰG}VuWj폴~UeZr6f_T=/F|Tg"S8%S[K8]ͱlsrx[}嘽,Lr fÄce.vLg2=&> 1,wvi9Tk%?k5t2Y$Dq"nG9orj8`!E8\IL&1B(iK{SH9#3jJCq'_vDSyʝi%SK,'r %pj6iLU1݌2ьQfL4-0`tݙ2y_ d2LG_d}>'.zi{XdU˜jɌf*3Y&w/4i'p y-0ws_c=om)]Ɲo6t=&ezX✖.kߜ,ȔjٯZ͛ٗs J*fwa=V|En+x O=ūt?*%o^ΒVGaֺ"tQޓDY3%R=V +=xz1{GN]a92k=c`~53tRLrH[(m $`H#Ϸ\_!9 +}ue1ӿH4)$(~I$ =5XE_Z#_t ^}Wt,RT$k$S @:;I Th$9")Obp/ yvOL\Mb&&+#rrC|ǥĠp!ҮZjBVCq$Y!6BLaCSl aTdo1'"lgqHLݢէ9(Ji+"J_1uBp:ع DSbsMa}aܰnBywx fkf?T#VJ٭aH=Aa+\89JI_4)ҟMDZYXI׃(ORS_US[Ƕ\[U\=%=@vP5,O8"Y=%]6mzI0H_)K0l>.wR )ZL-vj5!/Cp'V54Xք,(z۩g C|D' z "9&5xZpT% -vz'57` BcㆎS}&Tyi0(:5 : HtRwKc)j<)^xrS긭Mz[95YiGcݲ9S OkI7e.5ӍB 2{2ceey(Kk]XXXv]`9DPEEE-}3Ѫ68ƨǚ&5UcըʹMG϶&iLL9l?qg~e}yG㣍 Y&FaV[O?r&4ݑ Cƹߢԩ~?pҪ 'Ki.g]l穋 LhݷS c)+C7`?vj $ur.{gxhV.37kznP7I7M;*D2f;y6U+6S|}.UXzM|;]jsrE5zH]< t9}" v@ Z3a,tS|=t}M>|\sOzO BVȆB}24FQG@Ǘ9 3ЕbA\Ru!u>}p?^0zݣ׽C.RC('~n>_~fb/%||% +x6Otk?Sn)qG>H^WBԟqsϨسu8Mhl6uF*ާVc%>V2e e摍ϯilJfSQM49αͷhf x%{Z1p"ơ4-6o,P +4jИTmnq_x y-5+8{wn}W0zh%KdhVWfvWc!޽LӺR8MI~Tc&X[Us<1=/gjjb(Gˋla5øph?YCif5iJ_&U}M (Q]HѸ8C5 TFU[UWo<=ߏ2pFqZ#-93#gjҔ>(BlQmp֘~+~e_UC,dlְڪ!T~q >O ИUEktI"2¡9*PJ4@);҃i Vgd(͑TG9du(9YgdrF wAF2:)SB}ځγ$:P^ ,g3_Yٲ5(ۢt%ggWk̮*\Jp5fuoQeEຬ(]EgS WgђL1P%PR]e`Yr#+sY<9Sg<);S2Ez7+;y*sIaSDn[X,4&rP ^pV,o4 P!2WdU薡PE#Q4NE +-ZE'̃>8dY]p9dj FEvǮ"!fRzD1j56$HӚ1ZsL5Gڴ4uSv~LLJ=}}}J,}Zҗe-=/kMي\!iZP[OhgJ(~ԏ0h.CM& lXoӈ`]~񣇋5顸{ ٽ ]k4N>brK $B])f:[`ki8`ogg~rr9H};¥{Ev$9P,z)YJ\BcU?t-=7L0cQq-)8ť|?ct$`]9sMxB@w~DŽ q` +a2B5XXQfezE|^&WT_?xNDH x&@QGՠoLNי1]e +?>Ǐ?Y>c2D|oI9d 88>//w@<)3̤NL ?>ď0՝?{wgROyN9%x%cd5^ \{%e3)/&.lخlln应wEVوvϓ:^<@G!.b(?hDcy2ĶuDڄ]?Sm+_qх*?J&v%} (nC +D:\fkmt*t3zs7]/Rk3ɰZ嶥jm\Lʤ"iʒUTZM8K[T`T}wj9ME$QnrvJˤ3i ƗR-gE)v8T:Lũ#5-u&0PiєA^MԬI_ ەO_ kx +G҂Ҋ. `+ܔ9"T0k#Qi*7eyG(AuY`w]`e]]6xM0xD⠉hhԦ:M4=$ΤvI۴;^37{y{wiJ>SMM,)O"t]-)n~]6pDo}=׿%؃ +M|!.oNP9M1#U3&_,UVSSE嶶i] u.XwzHb=xpgيlAS!|(^UEUY\QYM29m^a,-<ٗоY.e|9)-0pvӍ*-M0 &]*pĪ̑,Wi*-5,TRŮ:&5UW27j{/h*u]9rFc3e.KFB|P e;GYli*.RQyVe(S^&OF{f)ӡQ]FV>L+y>FG*^3T͑[|oF׸[SQ5SӨ|3kWo2|ەۯ4 \UZ FoTQ=Fh.& B +}/P06Fk[yoHCY2uLRz` XmJ-ocB2)f(= &rkxȧPPɡf%*!BCC݊S\bo+6znڌ5]0Pp]W>mĤX6&*%p¹J[4,p(.ܨ0/6&|f,4b96Dx5ƌ@=|mA{D'Rb45AC[R@pDT#EMaP<0iBSBca<}P{{$7eh6ugrј?v6ʜMncښ 0mx9c8GXfH⽓1[s)V)m)nql( ".ɣ=åM$wc:<_O&(ӧ &⩒iX tSK(kRˆpp [eg%yt2'9drcN/8&s-[ֳji'7UjCm^0}ƛnr ]"W4y&걙ztG7B=V6,Ԣ\1ovaM]QD:Ro ig3tt:~͍[`+<(f"$#I̯e'{5N1bhof=Cc@~ Wad 0*r޸ΞqM&:$fϼɀ$`8dA>ؠAd,-=qB~#M][}wuO|ʯ~g ryAXzEa N +n2.SY4yy]C4b9eh'{̻Ja,#tZ\S Z!}5}L>U3 xG;h^ms{V3]8 +Je|INS4hTO[}?#ĞIybZg)W*7eƻjArz}}Fwㄧ ShGV4\ԭ~b&Tb n_}ث ѫmM-v,ϵ'`| />g,ƒ8B-^T*G_L|7{٢mӉ9:w [iɨ Fܤ`< W;k,ExNT2yg?fۈ_FtA7 +Z9#9NZ֓I:Y' +\9yv2È?#KBh&t0UjgBF5׏p6XfƱZtR'e]o;v.p8qNlp9&MNv-mvJWrT+[v h5[@QZXA\1& +  +!:'}<_+Qˌ7ъFQ4$M,c]OxaYEVW^eN{{J;Q>!ctM:^FݏNtf6R;Iha:fmMEQڣ^C")RQXs< +uM!}*FjT tj"W5=dƲ7k 7,jpV7PE,+s_ܴb%4J{JCvJ.Ym\)Weʘ&+W*ߩd~ +Z4ZHAD˜*@#S4hтk"6P:MAZ]ƴwRIJfa X<1ٔ0974dnҀ9~sb}kIieF˜, WrFAeY*]YzJ9ZM `<ĉeȖ" X-V(b ֣.:c +7(hߡ} +Skj.7-}G\ܓ<:B %CYXc)O/;Qb-SOYrʫYVI6+^UrD~ǤZ[ث&xFNjr;^Ɋphƒ8$:j0.kQmRD5jq*P mZjj9Ffy|Bu|A5WU| qOPٍQ4` z=^0>Eü^P.Z\jvW]/ۧv5GT_?(g\.&9=A6Á23|43 #7964U_.4&ab1۸zsVW6t-ribAL"c+ǶDObIcN9TYPs46LJs;0c`w^@nwUf 5V1!a5&9f6Ԍn&لnތc+Z$_-xIL|1yyuz8c}:`?GgisyǼO& ٷ=0ۃ>9g4OdNi8)<|.[O+q8O^aX\ūÚRZ#u}g\"ӿ30+FHaW MqM7-:uqSu_qp?a`ә>^h^; s͌I.1_^ }C~w=ue|>r,!݆!ytVLX1K/W[e2c̦Z^ً@'~yy_=ͫ O8v?;NDZ%n;7zImvݺ6[E֪] Bҁ( ʠ*kT.T`@`m2sQS>w{y+8!hn X_8wp@7)82}]c^e?̫ +<߅o79|NFb-COoc\#Wp9/|^u¹|<~KhM^#80lO1|e.c_ރw&2؉_3/^P'=C%i/pZO~|1!} +"zARBLy,|>Osyx4c$csyy0;G{ W=hϳ<*wnY6e6NY]adZyN8K΋eT/·df }?edNaA{)tg"֣=Sqy9 ܯ3 +OTnawj~ m+'`6@;vahO0y$>f{;{n2ŵSϰހa<_֜B~c7EE]TK2/{]B?J5hgI8Zrs̜y)u&x"<参 ǃ-hQt1"Eo2KnB>@6X=GRff}6CKc@ ZbKI~hyYE6VhF~ , )Y}E SQiT]ILkiS;,>Dj+>V%%9ib"6N&!ˀXf2ez˪cU99Ty:;QޣeJZV2V˼jQAE-\RrU!u9Eqs mohn0*]7t ԵTiU)CjꔴXSҤZnicƄYEyj0*h|JTgX>E:'?'n݅=XK۳|ý49u_;-s)(WaQV+TѦhEJgάkpnr*[yZsrW^Ru pSngN5pwoc-u@[>C )VB.1WljtU(r+RW:긂 +ܫuonkUsJ5_#9ϫ}*s:Ļv|OA?tbqo&FxL +y,j+P[ZޠMyu7)6U>(g9|'e="|Ruޜp-ĺV|e:^$Z"s~|KwF@܁rҪ d%"#O Y_%xQgTxSJ}NBw3h&hڡ{Pa\a.UF|rFBt-:'kt,=2GWY!D.5Wi8{ 5سly Cc~;7zUSr cN1d5OQy|Lj78SEc*hct U +9?ހڣس^V>7CPǵIrag+Z +eʖʚpȒp1xiE%ɔL%I$1ILY( IpB'Po+h{$qh~\r߅uc H^"sʢ!Sʩ%) +S jV `V4NaRRRl֝Iّ]hϠņd6h3//LH/S/9t5Hu i࿏{vw #A<0sqsc,1|rl7mF1f#+>i<>]s 4y%lH*P_rsN0+8t&ܧH()^b)e`.ɐц?:񣛜M'х.;q+\̎ ')'/aS} 0Pc7!g y?QK9d% .5u!}0klVO)^ތ6)`{`5=0XI}ƏuaK}u\kWr@nzcyGY<D^%-ći 5M7a&X90Os6&j>괟d+V곟Xl!y}K؟6Sϟ!s=U|R</hr뭁H(!0 XBqaC*5?+8plI>| L}_cuM;9`ͅ9x7Z}k -Ǹ(dD\,FN?#'')3q˥|xCulb3׻Z>W]yD&Qp$ U\0!Vs%q@ϓs ,QTg~)!ĻeW9IнFsƺFA}pC&k@&0@>r0u-ys% kTmr YWIe{1܏-S׀CX5ȵG6(пјwUH}r:~\eM! s?ΣijOZ{$U1#1J ]v[>_mpmu })'hЗQ* 8fy +>=w$) t9Ïa|$љY;6f_)b 5خǶ&b{gbx O)5dt;mG/Q'*;)p XUf{&wѺИPn.NVjd ~E=Kx:\?דDtO`X >-`U2K@ +\gQQH/5?z ORz^Nl߰Ǩc~g;h$i= lYnl WP:l7`{'!n-n_%sŃtAzDwm_P|ت]>`tdJa7#u:IDQR-4,MGZYmbÛV͵ǐy,G1C,E'9 'F;5:KQL䥅L>f2H6lq~+93=\ssAOǾٚ5E^8BpDJ8jnV_D*P#ĸc7|8V3pw1wG6Q)pd‘GnRx੅M؟Ld4HR1è:g(UW^1DwAýxK#>6s13:mԐ`ˀ)𔰓U W\ᚈxC v~nw]Al}`hi`, Y̹ßI)&;U^U'4$yRTRLPij݊.V8uS_T(u)G9%RQ}_ι_m>@xV˻JP=Eՙa2åL2TYrEm5WEA{kߢ^y䶝UrF8Xʸ HjFJޗO4:Vđ,Y**U" 3X|WF\~96>>`b:ɧ20ہZyVJ)7WJI*vf*RRY N@9U*!k]S˵HNZe^+쮳9ALk=YHI;cQ5WR> BK?/M< +*ϗ'';A׃AA?L pew^g;n ,$$\ T +D8V^Bq2ZN6#2Ң >q;9oyn'[鐫%g+{ ]Il% +e VP!d"Z "8<<]LpUq-@ԉhܛ_! +c> ) $Uc֥ &Sa +(Hw#)<as29C>q-JFP .~1͵~L{ MHi 4 -JG ll+@5c`*o >40E70cۭ +W/pdK,1!a7fF3bll m B&xjG؄;@ |Ro.<)> ?:cm9&'4^6O/3JκsܺbCg\o3@jiy\g6^g8 9@/}o1DNQCbwD&AzkN# -:Ncnx_`='d62!'#FW?r&eRR;㚅ͬU[uv ~&v6IZFPI`%XEnE㮥>yl>7 ,f=F5\3KTh\5!%>擤!s`1kD- ^[csX|0>CMlFY} s$A n–Z5d||X`5?b ߝ%b&&ϰo_`aM<~H{xy71RX:8{WYIň%@#_&A%WL$u8xWXQ>8B>0uUJ &^pKd|G|FwUV3]6KD_PLpoFp*%U~/N )ڇGNvSO8jQv85mjd+~Ɵ9D!Mǧ);Lr+jOU,U*.V_ZUbRmP*Q!y7^'q~&>@^gUcS;Y))*wzT0TjĞb{*tT(Ѭj-JsHOU/Zl( "Tr O%*HV^SSSI++5W0*7BMJ3:eK1VmlxRS4Na\ɑJb1ǐ' A9J@!%7=A9$e(ϗP&#}cr?8ʫ +o6$,fwI6l~vIHBH&@J$ +$AkJJJRZjŢXZdZQt:0VvږaV;0/۽=s}o +|ӷCyd}Ke+{y3݌slP⼫`M2|ey*(!Uh+ت`>9ò7RN-F 6`|KZi +|A|lr :)wr(4KP +Q~RpBpNˆ/B׏܆hDѲ!|PNc%|a#hpJF0ߕKżbxLq㤸Sn~ǐ Ѐ (%]%\a8g|JHlHOq4di X65|ՆoexhE0W!Д./n{y೎Y|< scZlŏv0 :rEE0&u٦0k@3nIk%e o!ya|HsvB!'KA#KYd>`]*Y Ճr\tuL-1GlkKx_ o8I/9kA!h.\c 2ꄯMS~w9Xeqrđ&fNjn q/X6,ao=puV?&kyGC&g3dL(9!Qjgky?ۇG>-})wžk) +!#6ko,c\ɊA(fC~yCv&ړ{OK߹F*JyW=烀% qe#3pH\΀j<9y{@&/|N:gT "bc|'ku4Jg-_-__߃?[mrrz{ҿrGQ +-@t%"}v̨N|StLF8$P3\PEM/3y^b}"3ɹ#LV92l+C +3l3ԑ)eX%x?<>j* + +-tL4&qXsh^x_xONjqJtR{L(P&˽v+p^Z!3Ne8qY Squ sa(C2M~] +{mf{Lm5:'`6?)=|w|_APŎL籟.Li$_y=Bz?"kzDZ}p_!B%}'] J)(<5kn tb#BŅ9!:NwpCȎn$|_)nSV"xfO*xlyxH%k7xxSspd;I쯇o9r8+[@ +ԁ8cҕhC|E\ +;{Tn6ٻ4wX܍*ɝyyrgEo/(3?do%3$$`BH@ Ud(Q"EED +TPM(Ȗ-Z""Kw;=4s3_sg}ߖ6(M@rAk&Ь%vJ^ ; KgM@ úZ|u9I<9v,}l+팸 O8:C_ mk<b$J.!)A-A&.~OHtOHZsѴѪŭ$NVi%M["VxsRܢx:{u>4 gqYBzt}N}.ѽzDEģgq%+ġ~ŢNy}d8/aKbrg*bNE} +A3A "M~K[4[<~M [[%VA[rNj?]༆ey|1G@(h`*]S@K!M>b Gs)4 N_(| SC,u%7$ђ4ų `6уv-dwCaآļb1a11NSaȤϋ8!5F -ESw':{U!<\>y0?*>⎤3&C̙",\&57K?GӚ +4JC96g! -dSCI23!rm3A{Z"%I cfqdZ$-*<|6xcw!^"0Å("qkNƤ5!96"M%3 Cso#:24s4/%RLZJkM[f +ESjhrٓ\gRGB %xPEWjI],-VI^T0 GFZќ^IRkA#VN,c.'ZϕW:g/\hL1$iRUkkuRG[bNڱEAΚh˺نTIn}Rɻ@S3$( 4[f\" h /\4DSGwΆ݊+yލCF3gDv6gTT a[>u 4UFhF4B@?hI| baX_MbHДt%0>BS .z$f*|ըj@8:FF0'YPyH`pΪ4M LH9:KFf T{|jHh#OS4puddq'qm*i~RRB7 ೛%ljۛ ZoIq@>CRM}jP~D&%x8(D笚|9*Ŭvh֘Ws/wQqN2,AI5F(SB)RV$M׍luxUyd./(ǘn+ДЬB݆j>׍l[ {T38؂r99<cBvOUdN[`(Y9y +6izEqe-Z^Yqխ暶U_WݱSv7٫w8vC 1r17~¤Snco5{gκos~?.x?.|EO<䩥˖xz3ϮZ k^Z~Ɨ7ymn߱s[{o{>Og𑯎~}Ϝ=ϟ.\JJ]IYWQdg+/RKrR+kAݔ7) nƃe-ʅpa2b"NLUV܉w+3~ܘP~< y G+K<Ô+/b:&e+8fMy[sP>| T}<:I?().^J>\ͻ%~__b2lvǣaO G8#1<\|LҚ7?3' t뮶;f[mq&O6}ƽfϝ7 [xe+.j[ȤƟILiLT*Nhj~o'G~83gϞ;w?]pƶehbm֮-;zW_5a3Жj꩛sӲZdOG. 54PCC 54PCC w +u%^]/9 _ԏ-~kwe ܝVOѢ'~HPG VFծ=Ͽ1}C&|ww>/n{y /Mٵzo.Ѳ{_d'װ6Rk]/޳̾{ttp|gvzffgi;fiNд2/AoF)TLP. E["-)'-߶g/yޘᎀN"_ +)Uka"a>W~ՓĢ ?J!&vezzc-̣>$CkSFkCe\ )j3J-)|ʉ鱶d(;nZs>w'C71}fDmX4 >J6 3O;F.^hW}F]υ +{E"f(/c`4Ѭ7h^!}w>85KhʙHAΡ 5.-F\ |{Gq{im=/ZtUppdK*8+#KD0 +3{717@AoPa.57d0~DK2qH9yBCOmHLU1tՔl2"8dX2, K%e( %6@du= +םj^A\ˎ*$,!2.KGv[=ZP +$A=]+#zw^ XaF*bZ*SRD &^\4h`C͏@v~'x<\վAGi]8^@(WI<}IXA-edYÍDVa( e Zg:8QCHz,I^PQ%xI-02,탡2Ad jk.s[g-HQ$Xi}yJ&E|Ne2@ZFO AF# zw/؄9Ќވ0RYeJ($9J;C`M􂜇}0 P/69&Il됼:y*LYT~?W@lͥt%SYBfaC*Pn;ӑW_ހ}]M*'(bN)%O2qbzȅ)}^KgX $'mo N_u_q y[r=P"fUdVp=!:qܴ.K``ZJ s^9z5-&i *ઑ9u(I#ObDQHnƖP VKE2jVwn '\G&ǼԲ֠m0NJ\ɰuUH Z %4Y@" 5Pog1ip`䉳ߦq/g(MEɱZ,T"V $KM2TjA})Ï9;g/(Ė>Ȝf+Z5b m @92v~ jl̆q'G%7B#~̇ސt& n磛#XB. xю?S]1a^‹w>LpP8:H"Ol@H4@D E> Eߧh x 3{ =p~@bIb)y`o%65~) +}OztGr( yĆ_ x {L|@mT+5s7*Nȁ3GR]xڅ)|9x^d\ \dyb.pPdmkkm_"8'q*)c{&B?P|5 +b} \hXL35j1|%/h`?b!4У( ^@9 Sa6r%'Pb 5A(=)|FIS|F!'AcIn#V4jBkn    {C.bE aԞ=ag*"tVP*GhHLf)sUQ͚H%PY~5[y6V!zgkhpwK +Ly}\DM3 3]WdkijJ$#d=U$yA +7B-P%P_6`ׅ3$}N+5AIL62U`#%yWFSE E[V\Ks2[nh`ԱCbx. 蕽|Đ +Cű-NV>ߊ=jVy& ޠe=ή0ۯk@G +*h\̰O^LA m(U42fwO'pxa0|YPa47(t%1 Ο;\0^vwvgԟg oB l;e^cdUd ~Pb07(PfG?^;87rzĸ~_|)8Wх5SSrITdC!b@ As/=s߼tD[gnyQAA$LN'3 c8FBm}.)u#=g4b4~noUc[Q8ܾMYBy͇fBHOI8t8:K + |H{ȠLdT}ūoݸ\7gMӫ[e`Gp=ϡnO"@EdYs@\4yjlflV/o.=ٴBj:*n%}lNmg[SeJKn/T^P@QQQ@@PA/],YinmyRؽ +e[ +C>yE@)H;a#ssEfKϖ?,?_V3|~lEfAx8䌃XH?Br_({Jh3[^^0_S 3`p^AkOot7$磐dmÐА +P+6/ +f^ Gp1~)$T1|RB.玦TMI千.YoA777SCkCɦC ?#4wPO?Nfo0qZbNYLn~(VbOKmkZeu8MB ̵Օ??#Ȏ,kNDs:#:'>V\9Oe t̚R2'L掞8Nhmנ镡1!?mb#~GPqEfV 7UO$K.R+ \f9\cLu%uMXyߪoNhkGWF 5Ak(9ԁZ$)93Ε4RfiNb]6*MZInAӉW2v -&Ġڷ6[ɐiuL Ye>3YK@e6rU/"4 SjbMCb"5b@ ЇIUBEI*w:SW.+Է[i>9Eߔ+UKr7Se@p^*6A3x!Y!,!*y-vANEM&ACӫ cuԆnvC$e^X_/.bm[rĠyb g \)ƴ&} IQRVmz;hgyn46,bhغ ;WB;b>tv/KWt:A`jNmg\}CEŴ6NΠ7Ҥ}4E111t"/,1AaO\4FٴC AJd2ȫ(8Um3R HaD ذ$[n+A? + cSΙ# ͺvUD֜Zא )F/ +(F;Lj! +14! +rfס^w Y]1|6QHUU5gvŹ=utsԚSͳe׈2xRKFEMP81H|ZOgk15zq4`.dzXFPV(3Kd&Z/asbP+KVPBCǎOf{~4]=|RPIZ-` I-|M)z圾ЂxME os?߻IocA?c)ґ]쉗RtIZbAe򺣕EHE)B)2*AW8/1/o\#=s#ǒF#l{t%/NՓ % ʸtM~aB4|}MG 5 qtl^44ra8((>' ) 1tIDIz*5+ @};XpgӻG\^km'#!_ٴ_DTXrR,-s4A8K`qqY9UX[~M6®QUA۠]tw \ԮUGg<6`**9{".#u 7 '8́j');m{k&h ho''DX_A!NW1K)LY[FfZy on: L㆚ P 5ۗ@+@t =  򆶤YIVS~AƷST*e\W;^^'cF:/n΢wt@s[\d FPEt$H3>eOsJ0)/(kh@>Ӭn fvhN1{vgo'h9_ >u6EgZcin=aqWu7h4(N~ ="l'h0SFI721MGMl/ 4d`B mȠ84'<@sgV;5Q9Ts ny*rQ(FRiھ,&#{ZsJgK|ݶ ۷6@|ftgB&'=TeH[H}U{˚6˪Zs}I/S9K 'h߷ +T7P1!O I=;scPcƪQm%WY.(IM7ـ Ad|LgGX"nJVx+9J%rS}Zd5LV%THdHm/6%^AfdP] ={}-*[[|SJј*9(#6a"[R)|Υt9Xe*\of{{8 o@eЅ փos{Ȑ選 WtEi2ȕMe*icAfa<&ZOki*QCP:gZd`"/zn߽ʯ'mytSqф̚t^s4{g%wQ5g,lmEڬJgd୛ m?gz݋NP*|3I;! RʼnC䖸 5mkey_goMi#֊NǺ_ъbZԊ"( D K! ـ!!@BB "ua(nXQHU^h?ܿʪ@-g{~o٦w7iaݯ'^ EQG TŶȟEa|1Hx]&]-E"͚`^?eܡaWtLmqu~)~?;I _)OԄi_hY=A.3+ݑq+rnW-n/^2禰gl}'=$qϛ2 &[ftC2.L?+N +z*)ShSes s +)[+,vU%8Zyps T z;v6ُ.3 -#0l&. . x D ꞏ|ces`"5^Y{JOD'"E5 2p!8 ;Bq(7n\v{>F+,Uyv.5ก +.I- +vA@Dl 8p}!:.uXb,15(`ռbYȅK2Uw ׇ _ yC7^R@qX;o;w]8|6s\FV[a4,/Aqp[k=;\ȯ f+7@!H26:C6 pm mlO +8{q\ׁD!P@rԣag +BdIR&ԉqMYϢhc.ƓޜG{a87Nso5dX݋`J#o;A ccx⇿LNHVvL7(I sU g F3LcL.SITS󞞹's1{.bXܛ|mz^y3-9D^鮒d L4T ~m8d{嘳@_h[;V'(PJIki)%F'\WTonuwWIeU'z+fjol/c}I6K m+ΨU\f\VnFeoÅwE*I> fh:֥ݰ˧֚.n&(袔[1Z(>D$h $k+{*%KGuS[o{d<5mq|셽qj??gpzB9(RF/oeV[׃ZE-M]5rI@.i' 7crk]:_Szp؜q봋sd 2hD Ӌ>n_ҧʫW\[1(\Ax*P& e~Qaўw5rr,` )||dh2e"1!>LpW1CBzmM><\( WyPzѿdf--hxomP1^R#g¦iIIVD6)/D~R:.rЬ,N/TV ֭],[y +)u߃'/RBHoƒHgyQ0 +L=ED] +DI(>݂]+Q[W_M[f1-cC\ÿDa)5:6`5\,+E$Eq$rV7z߂jZ'W ۄpN%4X`E3@D߅P Y &( Nv /Wm FI,ˣF9"/*J~ ?*\8 'C| X d}51RL܁i k|s'Z8B$1"۳ uod8:;r8 8DC+D8CN@;)/S~l ZCDݑA5"*{&#Ud8p@>3Nl ]80 {`ma CVsX@s`5Qd3c&?.n)TC*בֿ$\)/]N`,w[V6/SW1F@g JUTC4$"1 Bg $*AHP ' `jAj9H7Z $d;A, Q^jC>Ak6*8$l(|g<59jCo_j@nEDioK 0W, `{kX3_*yBJZJEZ n $/F.D>y;5?5HoCIH>,1Sd{jC<, 5ujS h5<:y)!j@Ky4@ݿ4$ig>3MM$" q:y;*CaӇ,.1ҽ?'qL.\|Q&$NzEseP ONM%O_P@<Ґֻ<eh@!Z jYu&o5C\D.S^GU$ͅ`̐n1p=pS4\:9x Va dYˤ~Hg/$'gK'd= iN%  t=n?e5&S74!i HCJ9@ї^\Z;=z4C1O# + FI%>aOЀ~9x,&i<4А͛lG68`H7K +ANmtaLs)JM + + +.QY2%Y")u"bb] +q@$8@50Eڿp0̿bv9YCu7DrV,8dI6Rr<ĵH i(ߴ׵G>trÛV/,أO[C0L]5SI =V E fKt XBkUSjOL~Wi_  鶅 ^9k>=퓝#ۃ͑QqMzZA(VIXb>Yʙ,uIr- RzV]@j +齒B  dW'`#g! ƽßo=UǹC;|{Z#"[o]MIjRE6') oTWV(VX5֝U[++h(\Aj|l>m/^7K>fs,ؐ'NYJdXʮK2_f dzh F<ߪ!zA=P4;A%r@Esw]kЙM? _p8#,-:Ym+jQYņ<YK G*hez}I$jp^ixo\GJ9t[ivO=W{y{7QUmqYd +݄/4s +b)R$Ī8V}pKsةUu_8t#Tov4t_6=sꋈw]`X ҊsdU4a|S$$E#LMaT! LdN)σM~kcK_o}vvo8~,x8<⻘4j̒byƉ_Qy"Z4`k0mz{i4hހ&ǁqܵy 9O"n|@F 'gR> ݈6fYM\d2m&Vp73pp,gnWA8vx2 5c/OOp>D962{"1>m"S^gEYQϸĐ҂z6 +v|yl@jGr j`bCo+ o=]ޜ3a93WgC3"㧉1ԸkxI!/)uJTm sE7Cj?EXzf?l^s_);xًٳa'fKf`cfKʂCgy!$a~W}g{e(]P;# Q7la +8 +` xd( yBr&gp>;~`}juBR*G!lu))6<קix A;/CԞPH i =H1= bPz\Qoh<-^(eCUM-tZ':-"%,X8.λی-~^m灴\qJw֮ udO~q|2PG( ac>lpNj2[Ke8vGEłH "BH)$${$!H*(( X.l"(3{9W?p.Y{ofF0  dI_}Rb/Wx"xW]^ <|s8ųq0}<Nb8!cVx} sw[1,b]YHLelQuҬ`ZdY-IVQ¾guDY@< ␋ +_x:[9pˣ!5Q-e'& +㤞-Pq$FDk +(ܚ|9ǻenkxn1P` #|"Ȝ̍j]w{MEP[[L('1F:רgKjJPER+.4ŧ3M7XN-Kt_>kDP"ga^c'qqK>˞^=SgsוGŜ*OJ)*JS9ZSXW +tr]:ǐ,ȣ+*,4EC>UuӜХKe"[q`/j, +IgMk@76޺|tŦڳ1ѥ|~y +M_La˭LQM-àͥXL$}9UBȹn&;t$=)Y-0epD`anj{9vZkgoaGQudC g Kv1[F?!RS +zdH4%Y0aN8u)H d9s8g[lIJŴ\u]I㚚G1hhjsP+]ռ\}xn~sDr^G{TAPI =uz:ڬ5>tk7ͤ﾿Mw/uk zDs7u#)y)6YAO9e;푷T֦P{@!AsSwZCRs?U O>Rj&;ߨ}M[Z +W}^w76MUK,Ց=8RAbyڰsԁ ֫ uTqZV"D '(`A^Iyݿ20duQ琯UPi5w["I^OjfƵ<ɕawY9*y;zZ]k^wiT4لݔxwg 10dBVI۰ՙ!NG|=xa~iw\p7?W^)m,m*m+w4XƋk/ TA!GRpn .q.qst [q3c>VFn=RRL{ e"Ibw:C/8hΎCBh$3b\PpJx֮CyK2c~q_vdrT]ptInpF"Sp},t66!l"FMl I3Ff9X!AN{H+RƍQgSwy*wlHڨTG= cpsdX"[,G\Z $7@t6KH  +/im>MKH{ +D6XkBA2]d (["O@~bN{@i 9Z F?x9 ϙaciǩF9ݬۜ{1HH@?!i&Ri#g.Qi@sTnBz!<y1v> eJ ?Vެ#Cbhw/e=(}z,~L:%|HŞcdA@6}GnRŨj=˱j*n_J2}rcf32gҎ$MIٔqQ~7לG᜻ vfOJsE]Y*HPkPNaZnZweCI~T~%c"7*kHNT$Kc͢ܧEw/ sGxvt'g@B6$7ϰ&5oT#G:i)E edY$oH I؄ld)C@+R>}/Ç}07H^0iƟRO~O$,i,K0)QN|BȢ`z@`/A\$%%!5v_k]7t 7S.lt9nF f=ް|܁Uǵ6[B!ڐgiznT[$߮sڀxoʐ8dgWos0f3iApZ@bڢ2Mq? n.a~DX+"UP"  "d&R0 w~T]sJ/)h +k0x QbF-&*E jQQDkbaĠ8?R9Q_3kỵ@` ܦO_,Z_t86]aɿe?'#a dëcV[L:@?}b#o$`W{tC +5@; A_m@%kPkj~CfeK0Jjn@A((g4:I?|kXyI*x $%Rtfffjj3Q*jS$bZ\uab'q(\} Tp0zSs( 2A hBmT‰c4탱!]~^qD:M"!#M)Xag +'d&n,D#fa$ȋO0K!G>(B'j m6s+.\I9MD*9N` (7Fx!$fツ^kx]2_K,GT-t@B{,Z_]$$)\Na8XE= Ìzs\2Nl숄^ RMVBd2ePڠfV*`u}P\\cB瀿<JmQۂG0ց~Ӯ^ 7Pz<^O$B°7yi}>Ǎhc'|>B':8<WC𼍑2M0,؀oNXׂ䣮wvkʯHH|;čWH^: 4.x#=h1, -GrR:" `q'yq~=@$= &j ڐw c!o& 0 *r4bY0CFsȒ,!M[t=NU")3`^D`0~폰I𱤡-YI|89H  #D:#eDN3afȎ\E%+!_q U7xw܎ pN}!kH) +'c-uh&W؁/1("B`p7Yke9⬐˶ETxATGLroc?KO~K RSS?{i_c#:u6ᐼJUOjoSp +'r"Rqΐ1QcM#)'XkF/%mG{~B?d%KD.vX5u3Qi`slBE|q볢0H+z/}+K~?Hcd`v1n O ?dh=L-6kq=NƙLR +=d,GJfb *`[%ƶh>U^ذl`=>ԧٝG0odg>$nޤ__I\2s)pFn[lu4v?5c5vwֿ) eG+ ˙%5oDH:2p~LξɹΧ}⏰O2t.KC 7:y, TzdVG[ʾ=VF9Pis.)/w"`8P#~}bC:1J"n!ȼ=sSbMsF])c~.SPnrn(W%3ʓNcžQ[=T ,BBxyɮht9e5hp[Ԋ˓vja̭J9jsT}vi.|oC#$ +$Z-2dAC.q {'i:&C D,{ږ^;2(+r9gJ' +*GUYs[eu-FvAdOse}N6V i(&A;}_;c䰛p­s}Vt*YIVe˯W6嵨~[TsdJiujejekq@H[2YD,%!iAGF>s:jh[i~W#J:Q#gW *J-eٍŻuMj*UgirYB?uz@Q5B];sk:~#-4)A)ԡZ I - +*HDP]@?8*~Yѳ}ssv: {:,{~'ŠBzjZƲԨ3Y i%9ՙp0W(D/D)췉y@4!M?a{g6-—KR.~4qj4h^\:Y]_^+(.*N/gd)ŒԌ 񟱒@:mCySn~c+ǯx`q_8ΩZAd +ёTaiEfFajŜ¾#E%/KiG $I;8-88 w>\/~e*=3rpAO^?۶[cK8!)LjFU^Y\Q/?//[>_LRZbٛ$8I rԫ⾶oý؁{q{nvh䘽a^k]gOhV0qјĴdL^M0TWõO5Ki1oxU+q@6\ET)I}QFˣ{*޴!ݖ17ݶa LjiO$3#>$Mr,ȅ#q)MU2Cu6d7m\N ;~8I jTDfl\o,jo: {FeDzS{“zbb#; WקjHjNgv̦_ -8$t%diF4;$ݑFSh䑎T^Ŗ86_p& ׄ!q쁊D$߁!c`V761=/{5JqP)^^ >;JBf6gdtmB᱃F՜ACƾ,ǴPOhޝ6wBš(whñԉ9mb%~cPI _}8-ۤН /οQKrk{5.T@%uR=w1щXE_R^K>KC  />/iE%FoZgaAլ HkU-ɫV"WCW9FHՔ}B[Z~Z/9})gOrveNfB82GuRbE| |#5lYwT [`wi} ӣ}x={ɏPcMeC0cy^a[I2ކP_B-7:=P&\hΆ80dWPh' bpN't/}hc{6m@]Ĭ Pet7||ϔA$י T%OX黀 >]4.#`\5ƨ LϬ_9,P-R ,?S@5"Ib-adVp'EBP>0O]QM^[TzYuQ Ɛ9! I@ @ A@(rUZPE +*Ȱw;9]笇ظm@X  o#D/a$vla,|Fk~`We0;xۜ{!p .B i+n hkrx[6?nǹQ'q-[FÖ8āh=н0 D Aq1O#pR=%~h@m 3@ ҵ@ez$|e[IZ؀ ws*CfV=zG%v?&W0e 'waO"w6x   Æ9~/ϸnl$;C8 T7[ځ|فa䮛 N!F#{4i!U!_ٔ>oA%W;9-<þ$`ODfhl<%n|TQG wN::>r~u.;Zm`.W&<AȍԄȾD WA3JJb;D|IoKIyO%^H>J3*dS +4p1:?,y7s_pyP]yW~1GyFԦЎ'XGE6&Z,L( %;Hi{I 2+F,,jB&)&:Wn*J.eW{;i4IsȒVIT|(0g-$Z.UíN2 +TU% iC +nE>rSiT՟՟y z ߾C7u27ۉZ5/[|ٲ[WjʙN[QM*jmU-M-4cR<7U>42_%di> +35LA,ty ]lrxOgwۂ_;CO=aCAֶ2fS<֨ThX%B}0/D=$קUR:U)?RHӎ1thkuNf Gkf,ںkyWS:s-=hUR*S Y#0deIU+*"0$N%ǘq5@:g6t1f_Km^t?p#`:Ἇ7R4ԲwVW e2raS(hr+F$!ˬeHP<3Sd[X15@ cbfq݉Ř]K0W4t QrFVXY_aS֗pRK qb\&-O+=JA]4_8̗-,qi O +1P= f<^g̍Kv;φڻp;iSe #ݓ &ZJMr`:/2O_^*yNi7.*a^\W<ƴH=;af~.al̽s0W0}Wu8/l_t.ҳWl:j~IH (" ;BBB@aG(Vԩ#.uSw +,0EtVEq=c= bʎϼO;~|}&GPnj'Stbo~~́ՍҴ껥? eUe>6 S9Gg?2ɃVEnvK7rk. ^H +/usYq[[ 7sbMFuaӶ9Y k +U E┆u9&NMit tIn3 .3^9w^SǰVՑ|פЭ37\X%XQ"L{~:ܮԶʬymdmC9TeZl7$chI-if+ qA3$MScCV{n Э _}#/zq|εIJŕJ*-A#HOr{kJxBrA7좑ܭt~NZn2I##rߒwYQ۞7<{7ú{cDfknNS2KR2LH.$ &zrX艨Y? +^3C \?bY>.Ԉd#hݐky˰qooLlqd)jMlp-:2{-O)zIH8!J"HX>--t?x9g#0 ee:@i5 !e96̰p\C8hՇ" `Bʂ,R)!*Bk ;[s@\#/x7){4<ǃ.fqq!cBE1"ST,B%W"=U^jo3v+w)n࿡) +>HmW] f{!և‡ T\cMPCj1de6C!>Q DHhu«)5QʤL @JM 0&jTًH CָCR6 Qrq Zلq鄏 gLQغ|AACil2} fl)2HϠY_8!e+<8!vCKľāIp1\h"G$wH +.HpAFڕLw8(XahS-^dltf',rw6&`FQ4%oL::!Az;׈Qɛo%Cҹ7I{-GK+ D4ȝP*yLa5%B )mP1oL6Ɍ=~iޫԆ&7rGQo1IyCWW/dclLg)BCBt!ő,:飔c}!"LPƷ:̚ bϱMr6s_`kcN8MEqkKXܪ {H @ b B-@"D@D +A^VPֶ^u9ߞ3)1 ŌyD>$ < {>p}n0 1[ n32+$lw} b:XۯQ)GrU`0kq&LxO1 Q f#@O[ a#O}kTm=0}ډ}Bs"oףX}i$6hWѰV0+ +s~1e9XET2K^Q9A~E6fLH@S@V@((C^ +d!o5n3aNKǪ]/wt9Q~uqXN-Q1J8yj^NB03S?*?g$z$ {s羚P?llew]O~{GI=VkȉŔe&tir:NfQJ8Y9$Q)JRR^y:m<$HX|\^ԯsv-K.O}ݪ7rV>VANfgf1ӋjMOu^>/NPJԷ$?IIeH\@\k X +:G.5yionm>KWg(Kɔ4m#%']ƍϬfeiƴ$:7<-3.#%. lb$ zob0[=\&:7;/j;E W_v_U*є(ɧB-K^P•Djω^H;)ʋ*|˔|J d!"5.7 Eg0ri={vUM-ݥ :gv_cĄr5-4uFxb$[ܒ\A?LQGl2d=iv'poٻǩѕ7w6qiD>YP|]>&Q*4qw mWB-PA;?k#t{h5h0phUw-uHy^/;,1 +0idҌ,M6ɍOhoht#$1a-0 pF;0r]m3`fouw)^lw+{/J#E] J ˒B'Q:*(v#-3>xJ÷!a m̝`,߷A ,hrO-i~%s0ɇv9-t9(ax@!p`9 l ,n0aߌ@v;(ݎ[G%];1MοÞOʾ\O%(wƁfdlfGmrޟ~n^BL Ѿ"4 I\dLCpfbc!Ń5RlOh0P¡Ej9Nh8b#MN dBBgCbrDd9CVI;hdFo۸O@p꣞Sc>k ᳐ENCP@^ᆌE gސlB@|<:S!RԨ/Do/G [1|l hf;U:A=*$(j='os背f2N/d~~C]'^OaM)^Rq|m$ y$ rȋACrr]3CS2.TkyP~@ȏA~6dJ +|:a9z[ gBƄ>c8i80 :W=79>Эvc4ۂnAPAu,lȗQ!ѿ)^E*T'* d#d@G4LX( aaV4D{%1K튢|O"Ə y%~Gnwv?DsdڐT ߳`F5}E=z&L`dcn= +'\y0.+\2lZb憘gMOsN=ɪHӞK{*+y&O\0TAtLi/vNuĂ 7ucżsJ>?.\0s}Իym9,?-wnog\?]}oD|$u0R.`ḁS.͇=/4[/[$ɿ(*n)1wƎKNw=Rv<[7E)F$z".5,uL,Xo?T48˽oҐ17*fhiHRRF酒EMs-3ԧL4'L]c;ڣϳۋd)!J~r}EoY{|_y"űo2ksk._YB|Ʋ.͊c/5K9P|>wϹ%VKedZ n)J{4/#/x +b}_`߻FܽR|~vLU k,WTy|zߜ_);qc2i@Vs%dM}Q ỐOsڷYVp3? c> tF}i1\Ci`mrkU{*7iw<狹_(o3~n9h2m:oHXնf>L0?I8XUA)ғ`B(@( =jjA@P((2눸zQ 3{f{vV|>_NnMF*1&8xxot~ |NΌъXQuTY٭9.}|gWF>UVJoO&51/'&Tſ +NZ 4D#/C ++2TVkrRtLgve뢰%1Gz ;ryr)R~1)ܿ>YƪLa&KEļus->TC"{٘p#W7 ưnA:hO6zIw VzE':J 9U*%IeQ'Nt=h/L@ +TP![ ד`]tk 5]Rwҗ]&ok7BۣKq-IM79'LWBȎr0yL, +M1e?0Y~rD#CdUV&z 0_@]=hxVr⸁pD0`ƿޟ:esZdjJh*dAC1b)VO(P T{kn~x{oeFgC5='ݼios~)wC,D쏹k5t$9ǐ27zO17ml36E|blՋ6<ȕ~WNP0- 7HP5 #(^C}lgIqLO΅sd?8{ &`V`ǘ9f32g̠촋#:JR%n+Wq gC5(~/r!Z Ɯ% Ygf~,"/|&x6dtmGUnߣCnO6p`sY9P@ -HUY.B )RyLR7*71[hP),SOeNwen6sew,~^p\O;Cde.|-{2!aYb3V]5+ꊟJJMWӌV}(>o;6kb6ە/a+~*p<@k:> }Kې_|4kC:(r:k!T +5C^pZ>}w <H[_Hh \~:L:IvMQ" +ְD{P9Jڍrw2Iu|u &9+m8)@ g)kHE vȜ` dYTg;Av5&@ $$$6!)67,E*n8RA[EQ}k=ťӊ֭Uq3_ۙx;}srpig0 bɴA$ +ZH2E1ʴ JYec'6PT9I~(“Fp [83ؘǰ' hiCzu%icj&v&ON߃Ѓ`O B Jπ_.xzǂ6p0~b8A\4uxg3O>C|x\-,@0Yï {M;H3)W;=%wÔ/x0ȃ&|<BDd,H:τ(} Xict `)$- ?&^[?i >Th\H>D,Ku YB !2m@½V"i EknٓWB_ a5W\R'H#ݘZXc!F](#,2S֛CMʆd͔dpG#vg&W߉ڏux!px.S lH`8G!ք`gr{Qv4bgمD)t01&*4 _c3fE;v7{^u~%;4 sI\I>{7s~c +RV$4ePͦ24/-!E: >&ϵ|3So"j9O=w60G=/xߑI;vM +3 " D[1`@*&D3>+ߤL_$~YT|?V.z}nFs#b{=bwUywTyߥ7 Q> v&c a$7d;3,!7#ўL {g c NrPչ_Khȹ&v߅s1D <}Ip"Xˀ|ăs8Ép'4!ιtl2K %dsobɬ&?$3K/w)|*Ι=G :Pui㟈&LUw( dx CIb̀B R2 +{ƛ*WI5GneЌeJѢDNgN˽^w05@rp_Rhhɠj_Ȁ꘴?lww}Kop[b RH~6[EFVQlƯuNV+.Y*Ns:v(@Vo?,r=K%};;RC ˷W$VCؓ/M7&wУ(#Qo̩G06NX'3ZȖgaks&%C>_GT䷫I+&gRVRZfQ6Qmv>-"{9צU[^RZ*^Q$ސA.o9wGxS#VD5\j}\?!m,DPSO;!oQzR[3~:7SohUڻR]\Qo+/]%n.Y'k*ڤXUMYW0Y?U)aDm{gՕAP_&(TLf ֦CnAlMU``|wBmMIs2<;?n-_[])XSY/^],+oWԖ~*鏬(9]VrUQ.rՕT iiQohjl5M]_M:4:-p|澮PѶ[ZT.kzlXпBаliTW}" aQ(B @ؑm( ""PYdY(.Pjg: eLm 8ȢTEgǙ3=a>~s>9 +f?pfތ=!)B3&w7- :íT~!3߷1 ײ~\btqjZVWdx,ҬdX]~at,^}w:}.();x{Br%FeTA:']Hx uE:L8˄M|j2$Z%&EŹ;itK+L)(I:Z㟘75Qp|o~ ^BD&}8jh]π4\nAG byэWYoP|&lmM95qU;U.puVnTUy?? Ȫ=us5:r%j8Of.-lHa^ttz/Z}=b]Zfx;:ƞ͒G7(=:}B|BF:V7^:{Nx +۵W:?yO^T]ׇ^+F5);ǃѽAOﺴ4BU\ۘ{>ȔF|rT^^v=#}#mJ6'jEVH]r.;hHO2pl`)0?cWh-KjэcǚD&Zn*Q<ZG+2[2Q)'9O7^F;uߑ.> g_E̟d+?Āp{߆L3Npp~; ơwRL2,X +kmb>E !T*ք!>8^LI dlT,q*+N׶>~LW4Ӡg3s'|:Dx ꩻDa5`ɿ | 9_!(_SW"y֑vuc8aڽ԰ye=c\\tm2YYpO'-Ba -|P&(Pq%HђBW=iS `0F3 1 +Ә+{XY2kY|uS}.?@O߁2``Aa1 +5ZJTP+Л^4#h=up,08XKt0Ļ75LU$;x #0%uj}4d/K P@領F)AWJ) (t" EƖF;R!"Jh`8 AhyǵHsq'*.Zoω7r,ɖXD8(g?E,A660G \ QJ\ Y ?ψrȝ/j:YB(>\E t1QB0MƲ!Y 2Pͺ(EQK  gijoĨ;Kx,(RfBҜ0SD% ݂5%;_t߸Jkx(i ZG>b9 z }z3u< +qz:O|I~`V=.h` t "7N qQTM ֆAH$2Ī3l5c ~[>`-c5Sfe~ #Ɯ}Ƃٽ0L ƋBF cJjH}1@LIJQz#r߇zVM#ٳn'AF}xiۻnzЂL0X^W6!``U8ߐ4|3-5.!q1GQkG,7[޸VNa{rq&ՐΗB;_ y4F=֧#TX`̿6M{W"H7Bd]沼5_g.}ʎ{fk"f|*k1vWZ~޴b.#" t?>1>Kg O.Qx,ŀ^ `38xػ,|+>Iq峜DKm%8opks=}2f43J>}pIʡ^~3G 4@x{;W`2@_VBkcڝ"_!y٦9zw,;XýȒp>IdY>--\!BEݔjoBWhN(Ԏ}ɂWD+,z*2m;xBa"4hR~/C);ªțfc?]Y뫊]H[@Y1BVaߩSGB:j&Z4y/#g$H;$l61ױTW*H}$B%M\(/, + nOY xb - ;jp:DUʎ0\2ckY,ͦ&k\wUEbʊ:NFQ _r*(VP~[|(B0l5g>BU t]*щvutc%߱0Nkc,l 3R5n^Ԑb]P+uHd|&3e#30x=KvHU=ki;m_0ptn.>'n_Zm}W +>H[4@oƤ`GLspf=1Ze_LRs`6`a(nQ5 S≧3JӾU_zk;qolcoLc9a91 5Rk)C:{PWX\(nvW(hdDzs۵ DQ:8[3.O08ĵ}ݶYٶG1ֻ5]ƶD\"ΡKԼ +*/= 0"&\Bֿl!:!#ԑufq:': ;#;?:kXݵ&$F$W1h|~z=}?o ? n3b{˜XFӛ̊VsBs>)Kk ~ׅBy yV?Kv@x D? ŸBG0qLd0%c Mc{ xgu7v+{u+}u+5=Jp_A_F9\w`l7@0JttTa4F1ned8 Y8ebIeI 52@cs'?25P@` EԔP\ 1l1 l01LF>ba c/jwJRC,Hn!? ۞ Fz0EYf&\TOal>/r* QD('UDE +尢O\\DEM‘0Qn ƹ28_BX=&P3] ^"°O,ߨ[VeJڤRUUG/Tgs⧪+⇪n}Sq[{jVwF@/eP`}\zi=u\Ԏc|p<˘VtS~U*~QV@do}v5uv^ͥQw5y2FkHWɕ(az{tGh.R0#3{g$inuD;nݽov%n=N7coK;bOIǶˮޖ]}$7,5ƣSk<:OQ0-mH8&dհd'dXdYIgs3e]~õ5NW7HL4\rA׭][ަm}^9U3~fݐ{S"6&d2:HF'6Q7t̓МЏyTbq~t[]͙i{iBέ\ΥM8t2&}w }q_GRJEϺ4tKGtfmL,+zwNq›NxLdnG*/ZN~I[rMuG5}qIK@H &8L 5! !!!!B-D~AumγMzvqwHEӒԫ|90;Fzx5OռQQBgC$kP|sKMgZ;> .=w$e@q<;eb6tU!ŕFQ=.Q#U"tGr VMN|D#2fo+) ;i Dokvpa2v\wz`Ys:P{qG2ˬ6d:jH343!ZHXi\:!$;D0ut [8?^|WA ,9ai;d8У;^rji&F7Q*Vnbh +CJdCJ,K!).R.>H_RT +DQ!5({AW ie$J/wwT_ZIqae-Q(w=|kXhރk}twKfWvzoUk%ƜyTe7J| EueTam5-hftd֌W RUXz͏eDL5;hϴ`!@[+{} =L۪_9w^ܧHr+pڸVwU9)ECi6P3&4l6m&lbB&fBdk*=[\?ޅ;`@Iv0ʾd Qџ\ЛvPԓ}-bnV>h0-<m[8u{\r#?Z_#3M/eȐoewbp8S-]YrNaUy,"_M|Tn'UԐZ\&MaSހׯT%=Oz{U z9gIO1!E41C׹z. 銌hԯ-iw {=k aC,CRDNئC +GgsYg./1n_nߘ7wϰ_d8"i46[4X\3 嵄 37%_A_Kn^ ,Pisc ?\tN B`hDSEoOu̐&ʡ'Q <8H1&FTȅ?G|&^(=7ت.Dv6ltvS!{lOVԆ!aP~`*ZpӄqtL:R͠LCsR|I_EuqӱKO,^&?u-Ñ#w6N/►*♺2jw*vEME4ʈhn +ҵПƃL##Z3p'S2'2h,ď,Q ;mu\ݾU{w+igaˣlnsۧ.eqhWD>F` }lAmstl6+Bx4sPzd\yʔŊBb5e Λ]7w+w_cmBKI"KPUvv4 t6L睦y 4,B8,pc7p5aFrD{̔=jG|Ŗ6\!uSiz)kN>*ve]]q+aMLtX*b72):F[\B:qP?Y@PU/bT5?F37Y-gUYv|cVtbYk25X2}ۗiӾ-K;4NҌA^6 ru КHW?w|98/#j8g> ̛fM -KeKr?R|Z9E5.fo/u$F!@n ulJA@5@XYE#.`ǕxZjUlF2Z;sng.8g>>&u)1$~*2~DV]Y$ILLl'bopk9@[D;W"!+H^૫QMmG3ӭ>ȵNSWV:u.NLVH:.K$Mr"91{b7P.8EC`{Jm]inTśXVʳmʲ Y咢LSAFK^z:kQ;kiZ2E]\PUnZV=CU`QJV$YNM.)g')v'(ds8]ٚ&3&I*`Fga4g˨}=@W:Eh[+WV(DVerی"ԒJiRqì5Mh'*o{DZŜb'z|K}jpvAH{WALl:O^UniCan4:vfGɖiY6I55تzv++ETuQOL9DU0DR/i?WS (l BԶ۠rW~>oJn +㬖u1D mRUjNaug}Pw5n|5s U3b7%zCt}v=7[*J5PjfqoEz S:BL6ψiO3ڐk6V*Y%]ֺ)s`7΁-Zòf&^l'~L !߽PvK'^e.=ӑ#Af'OЏl=R-4+Y֕mYdbkufM_Osak%[F~mf6zP(hU((H"y5E/_fm7A|oi=3zj,}{=e{g7>=f>yz LwoTy#@D rH!O.tȇe|5r B<x GhfL{'0yZLA8 c< +0~2$o򏁜a?O@ ([@z0F=7 30z ׋z9cQ- 7ö́1j5򄌑+)?W $ïK(ۍ(0` +2=1 |f Lmo08qLJ8 ƍcGg 0H YG6.Yc \#'+q/?dyTSWK¾!/@ Z*,ʾHHXHԸТH݊8mک^ENw~NrOqw¢)^/  (sHlCbh&M+_<8 xKKO>Nctf' HbGZdAC6=|Gwѽ8}|K ߑgcr?F>c!SMA\=iOcOg#SbH5|'.5ԘhZz%BSE]3QDtNSEWG-M1fO u?Ax}aM>nۓO_)S 'zRC*}I d+d[}̛~?$'7$XW<.z60s;pv*f} τp-#k +,IK`btV`Y.u˻w52U&߽6]n|ѳMF<My~ozIfC޿Ʀ76# uAmaG-Ƽ\%9Zy%FjM0=favo}OOՀ)c>׬>~?l\Ȃ aha߿~}'l_o0'([wb+`50@hlFcYqeF9 3Йۨ(֑p< u}ֽK{BVq +nn ++ogY^G-=w[k [?0^c_t-ě:aqFbe=-V؝՜vkNo o ;(61'ǖg;͑ض9 +|/=7SЅt>LCO!l/5ѓc;)մ31bGں=[n[cm\L_&X'\=* 1X쁭! Bwa0$Ѱѡ 1&T,ҨCh-Mfٚޔ$7'V94%6ҫVovZC,nKCQQ}܈.K]¸c]"0Iiq' AR :Jm(sEM^ğPи(Ƭ Ų\+gjm܂RZW#P BUQVW-Su=#*x!Tc' jLޤQ8' •\CT" RFM.P1ha, 1(6-+Id,[MQPSV +;ej׻ȵe=nRq4ew8],X\iP%28Z2 XNvQSK髂X& Z:\Q-Qg9(J+FuiWIcn(YS üIwypB{a4ܷ 7XFU7(oE42 ÍbrkS,klEV^UM*U.$W4 *\ݢXq04k 3!A4(ADqpU֩Z +X+ +8"8KlUk+.D:Zu}_Z?y}r?hL1+'Ǫ$;LZ_3~Pec^:A?iÖ8g~&h;+Wƒ&^I>7AR9{u{d*`}¬4=f15x/j\jѫ;|v G X{EwϔLmn5l%$ ݓWoy?8lJeҁ529ega:__qڋQq=C89NwnXۚ]2xuj8QgCls4و<+al܃?/ b, q=0DGcr504/"~}Ts{re.r,EvܜGD7H}zQI;q-ri9Ѩ }>mmV ⭱5^tWtSYNq̟Xbߢm_6*m管;k莿+gs' v}8 .B- 8Dz 6PF mmmmdۤ}hͮnyc!xP:շn+9 +d ;H΢l@@ѺEA0[TV%=вdKƠE4++JDuIU>%Kſ+ +T Oﳿ&3{_3[_ wE .R.uCKɗ"ۡrAWY E ] ombj/e?fSXhf? rh^U?mwfpػ>pbP٭P؋!vI/3xG@S` +j'hjXU5@¨#񥤆5kxk ^]zB/Hf,d~Љٖ@ˀO&|P:t^;5o +@] a\:$dwXNR]% +RJ:RpUu~ߜ%Hx]/dϦ{̽j  ~O9^D.Ue纍.O<Otc BTPwk`w%襸MtlVGKf#d<3#Kwa5,Ն!]jr}va2v7Ἰ}[S-.R\ +@!nӀ\!Cu~a/ZlEY`<7"{n\$n q͸Ah?J ŀ2EyuŹf)4S6b*B:Ul| 2ۚ0#Zŭ i4UT$wT9Si̴MuڴWUb*PԅJc~ 2W :b\Qq}nE%󖱢2YQjPYl:e^Ɯ>iNs8ar8.hvO820|aj|tmGF8BF"xY;ը&(n1PO|3Bq"zQt8/ǃKGhE2 jĪ}Eb'{c\jl!B!$K@$6Ibر@ 8X$vl'Y&vL=i&I:Mm433{y9^+b?uUL$L(8/~?b.JϤTJ> FI l +|,Ki #ޖ_LAYB e"dDG_ŞvQe sIZOKB/yȝK3kFJ0}n3уL̽{T +rr\9fW 9eAEEr5 z!֜l=+;ŝ\2S cr0GY)kXP!JEBlkdJ'+RRD.0ԓy 5LG aŸ!5Gh@h@DЯ$a!0\̜/񨻍(#AḦ́˚Ͱy 4iӥr)uQL6WlzUDQs=\,+ {xw/\: >ulG<>G~=<𞍄r98 z1iVIEזƌ3SZPJ\ܞx"Y|RԡZoS'&>Ij){|K !hQ< 0*A-3^d hE0cJ!MaCqG_NU{ʭ.m#۩mv4BfFԤYJh,]KNi~ɦ[ڴ߮%'7؇1wޭF0w]żcX[kN&U&VfG TF4nQZjFn5r]FЮk/'Yt6~5F_EO,g50_.|\}DW1y+Zu/iВFEtUG9*=QYhc5T4sm&Z@bbR&# +ӏJ!@xU&K>zpu6͘79o=Flc 61]ASF4[˩ +ʪnX;恸Jqʟp|&]ՇȗIz"CG/_p3u8mx 8لǚyRHG"^mQlFY]gTֵL}qq:46ZGHX#*qe_k%xa>}g6ּ::1wvw ҠMζm֖Ljn=LnhG; +-Zeijg[nAYè>_b9Qe5^Rs|^b;Gxa}x&ּ+?1s [ܮhhw~{I6W*֕IvFVvǘ:˩ +zy{-ns[ +[gDdZ$E,,siJg|XHCBr<(ds r뀯hf'07!_R:WƊ2B_}(VM* 6U M Me0?;ϋgnse@@Ӏs%`-TMP^q7W;AT(ĉff>XxkU@c^_ c?\p/0Qz:Ue@+ n:ԤnZpC͐7݀3!/o)ca؉?DZڏCKswُM>0U﵀&Ѓ)yocܤQ}E.>o9G윸x~Q`:ϞWXx}ͼ{~⦆5i`M󞬉"CFQl`.~ <_ @]Q }Fi +ͦIٴ66*TL';1E;w<;A&W E8>UQ1=H?y,NxdJ<2uQ-R.iOeEBvWjz/+/ x=K{+~rK NX2Z*L-!Kel%]ϒ%#/X +|* +})v\UlSl}Mbc#?4esZ 4tU\q/Q]}IEcdOΔﰦ)[+ZW(7[sUͪ #s5oPtU]*60>kt&T Q?wQ=F*Nm %4N)h"/_WfWdkr6hvج o"nYo̠6ABmАc̿B$Q~<)p0EaWHiCxڰܰъ_({NV ^ +]dLk$d>=H(aAha^S}ZO#=vn4ݛjfWpj/s'Ϡ?FJ׀7GbCdr#H91Pf蛤^'Ygi3lz2 h8;8R}J_#6{܎~f췏l:lvژȉ醕1aRVtYFtbaʅ&-jiّ" )+G7Niq4%CrcG ;ғ=FYcP'pFnXoEF|O v"-6Q͠hfLΈIM=ߐe41zWCR[c@a [5{砚}>)8 +|`BV `)-,5!Z>ʔULM7]?1nݗbWq\>r{c ;ғm|/#Y.h=?goÌX<5/e GAkТ!#@ Az@TBt]OZa]-3umn~L _|?~i扫t$))2k89ǹ0ՒJT2k7gk[=LڃYSL^&3iH$%QS{ Krٻ>5`:d1UKkR$iAzc~97⚣[XVu'4i^ԛ4#uNpK J?sYIjeC?14LӱظP\!?kԜsr2\ VAZwmꔌ5I^Z Iz-Y/(bkی8(bq1;¬Ay¤c> xc&;b|G:1SYQ1#:As9|ҩw X=|}鄓2v q~ x́GO4=ˠ5½ +PBEE(z<(O=޷z]ɸ-w "N! t;< Ji7N}7PHI2$9CԿp;7qBƝIS0"@!tIeKo4pe" WX0/#tpL.#?o05w1cbzx;~~ 3 'MJpT,=/^`Q|9Y0y\t$o>r|O~|F!Dϵg/PdcE]cAnArKĂܑlX Y,?`/G|b‡hEE>{F)[6SDϣ̘.c x6o>&w -C}1<%ă=&YEyCp m49q42,&$ Ud=LZțNr qO?/ +z%qx:)$D-"d% d+APg?u1q +xk%w~AE?4tN"|G҉Xy8&>y;uvQ ?uR8ۃo>?pnA+r7Fx@qnT\9C41$[1jlf4h:Ӆ/u<;HT}Pem:X5$p 1$$"B"QmCToB +~ZC j]FҊ6\lU~\_qQBYOU"1J F* !zR}/&4w|kuWa\QƗ#.hVs|يs=1|Nw'#k"uqb  $?-2zp۸%Wb7;>ŹU8ӽz4Þ8ٳ'z^m8k:CO`kO]"_ǘ٧1-O$.E&꟏Q8ÑEOg`f_BfOr2lav lpxixm71Fd7w_AB> ' ]8\Q|L|4h9'6{6`ٮf:S-ڙLv.Yݤ]nnbkwrܺ!g5CV_>T-ÈG<&w銿6ZY=[|0,Ga_pҍ6 [tyجs0t%zmu:vMl*[/m[bJ,ѝ.ݒ6x,m!J? +O?$[FM|@380J]b^q!ވ,fM\2]WʶUqKiB}YHҤ_%o5OW̸񢔐O%RkL!jy{Io$('ClH&$%IfQmNpM$2BZ +P )Ҟs=n#ڌ2tŪh1hNMaf3sRNaC1,36 +K5e0j*` +G11E٫`Sg~+Ofz^b)K29sG1sӐc 7_k*ԘҐi:A/OL_LoWUPQ*L,Ch>rp:>iBzeE6l r1M4侍>'d[PJYҪ2 ܤW(6uy8ƓuE^W(6ҜN`g!XK- 5?OY=1#?ov` UyvΟ-R%(ZBe“LUQݭqZ>8,;9,?y™'ʝQxɷTd8GڳX@~*P`ڢQ3a6=$fb+ +rٲWZPėX}5 + .ka][׫m]NVM_jUTXE gܤ:![G-^]4:u&rDiי; ^Q%k}j_ooUwj,\ub3^wY Gr`C3}Qye1LȸfnowKlE~F/zGn)\)\*ܮ6,x2Js KtNRS*4~$'j+텒x|Q䋃7q2 t7畖Kr!Yw]Q{;TiޣTďQV"_ <3:S P4vNO~%npUFQ9FXҘlRir* J$?IRF*ErVe*IXPT!*E9!{:;)`Tҝui />aB0H1șldBLf(5\ZO N$I2Cp0]<^PU T$ +QSo&7h"i4L#UOs: {\?a0G!=p:c 066)a ~nL>\yTƟ3, +ʦ0 '-Dk$F5O465"eE 8Hpj%&*.TӨ(1> +&y{E +9^٬IθI&9]hBm^]u KY+ǢVwdX'!-'Y00g#YT:Gaf)r +/lV&TƜҘXe\*T%R=PC_7f1&yeVr dia=H>}BR8Ο,$}oɽX{c?&ؾc~RĬvywR@Դ`5GQk׋WI%0PCi4K+MA/@t Cc4b嘆HG;rX/usRغv)XHk}/q ;z8x@Mi3_pz"©G3*ViDhe +B*"r8*Ǣk$T͆U[U}VRS0\$1θلyY&7Vlc<.=c6$z =08WO] Թԩy$&ߓBwp_F;~v[.vB-ӎxJd"%"SB ԩN 5j{q|˿C?N?D_/b"Od +fRg>u p6Q)\s;SU[whWp}+\D ZBӅ9 H^!M?Ө3m&SǎXC56sjnݸX|8%:Uj- @oX ^zXHo2L77Z3X Ȧ +󸮥F5*phf,Nc'Y@*o1zuAS;hvcGbl ^;CQ T6`sQl +n?Jp!! "',Y<8}hHBmcj"G:rĦ lZDB4zT픊51n(T{GUHOic{WT^o}kd4hg7Pih2X8 PbxņiuBT#'Ib9/a2a"axFq-ENcEv:Y=k=ן@|U߶^pĦXcBIXcզQ74QZek!0}$-3-rPe*S,1mU,65*N*$Pf)盅"JCơqs5>}{`%v,iȵ2j/e[&IK-Ŗ兖 y%[a)-%yjťeyޙ{D K] qDpFf`fD +5.Kq-5zXTkĜ4mz5m<96ij4Iۓd1w= |zemA6G#ulI1kLslJFɄU&3-X,VUZMI[a(wcm<+1Vl y+6"SH"?7wg:xuH?6#<MXmE%4X2EZ +S,7{2 +ۼZ[b~^*6o]BeKa?LK^Ze}%s4kahEI٦*t۲mPj+KlbͫqֵRul:lsm/ԬkCzu]˸9Dq-빮l-#QW +eʔ$#JLHY"8Xr]+~)W$/U~Q)ʅpEy'<[!܃Yż1t7|ۊQBRu&T@j:\L5IRԀXݭRYVxO^YՐLܢߗuJ@o/K} J#Pdc:9pHG#KPX&.q5َ,Gjo2;uq.,q3l>P/^0GO4l^\NGV G3 +w><\$丌X]9bCJLWcqҦ6H&gltҥ^եOuo4gH꣰+y|'{X[rzTB^i$1qO➉ŞdyRaX,|!S$.TFO&ͽNkpoRrFIII>KB^ޠgS@-H zdW BVHX+' ; <)XTeʆUVU(ebNL,n{OKqޫ)ڸʐ6'.S8\>84ʕ] \n ~OFo }HYSs >Ź͚پSX[hbBڟ8tf`5 |?` 4HnX< S1?$0o.f0fi8Ycc 1Qu@fύC PD3I&s[1efƌhLoiqڪ3fL ((@Lс<؈ =x*)`|W ~KwQ{s+=o^[6 Q1LLjۢ0m,&MSX<`*30`1FkZن;aX"FԎG=a֐Qe۩BFT'%`^ v>ۣ0} ڣ1}t'i;w,ǠF ؂ h?[?CAzdݛX'$b_f1G Dqrº+RW,] Lz?]  |d8paD8vs 0CK77[7E. ̹3_oI}^3vi=EWGA a:-Dr:0 3G_l]BG>Z{#=`7ԧ__ DQԾI@!j{r aCя =aOpaȞߓ{G{]E Ybj٬5{#|Dc1=GO>g`|C x/y=dO4 rjbE 20*;o!"\>'ug_KH2kDT} ** EZnnhYDQA@B"2bM01rRV&NRV8ff\*5qܢo~T{=缤O~ld!Hu'3enDٍ^ӉYDdd"d3AvtS"oq?xW?" ~ 1 1tKlF3`'5ڨqssg#>mj O9z<&ȿ?eg7N&qdOT@EꬤF5j8s#5P{8g;V!}i_2:2G;C5ķQĝL%_AԌ3sӨCBjF%5jH-_'QB//} Moq~$7 /DÁc 9}r]*|=c\| urQDUԨF-5>V9wd4o鋫˴wi0Z"6;ٙ0eG'\;kBq5JN&gͣp y]U +Dh9YВSG|kwqlCyeÆo$O^17x Ұ,\p9bu,ǙU85|z6S 9G#qGF^Qߠ1] sh!ȓx吻|!+ȍpy~.)DpM1lt-C[ :jtmD6toO$xm}qoc<6WL7OfRߛ70L.Ot%wW􎝆|=^ }`M.Ůk:-ScJ O9Sylv M=D+4xB y4O3 : +]&s6L*gsf2ϴaR4{bW*UY[Q?kP7S+}]s_\uS^})ZO.;v{{bs%}4h1' >VlDoj|P[*BoηUX3P>G\=X6rޏb|Y,yP<\{-]~tS\ `*aRJ=ʔXLAҎ"eBY$,W ˔br+-]--YtI#e?!,CG߈.10vƲ1-Zָ. Uc6C}PUT:(PLy!E_H^X +1cx@k[Hb[fB+:q#1&.헥{Rh2q<3I+s#kvxa>Y=DlvBP&-~,"d%ĞXVjI 5bԴc1ZiCvZ3\o1\r{y{lb>Kz 4&Vq.]#4"!RhX0&>'dӀ~M}̽5G%]3G%>4G%VhdeT>` + 38E<gTJ&;iHbR48%LSh@jT6Q}Ҧ+:mҲ+3m),)tUShShdArCc#˰ Jsz2gکOzguStV_ٱ +ώS +˙МSPE9kS+c͹,2L/RXݲ|އB}0 f8*]A +, V@a Zƨe|,3mIU7"ue<-\GacFgWA+%r:!-;klql}Q3dcMW2UP +#[yL@^RE7_W?7Hq؃R)`+5okTg/S |!adg,@PՑXuw\ xº2s/)kS +܍>iޖloaHa1~R=Ci}_CP o,^Ç<OXI-A GhFoz<^ÒsdwT2GvNI8Eag0?:Ǚg +hrM@-H| -/:'֣?<ŕldllj֟%hMFg&9GEq\#dG(+t|+e`؛=vEHrsh@:st4CjQNFi-9c֋]DNg:ЙCGaoA:N:K(gJm5b>i-mP՝ U|ǴUl';cWC(NzM=~WO2|u{7W ?w1ԄZY?T}40VEq*  zM f*7h+;8WYEYy!GsC+-)%)a_ڸŵ7+x(0fl#Yik͊P- %,@=# ^+eOiJWZxR#2Q>_ +h- ZE%Hy!@$ $BТmN!Zҭ͵{3nu;֞vNZ!~>Ͻ`͊O= S&',V iw$uLs0^5K>[R)G{Z +6g-=Xaڌ +pŸQ ?|mX +o^:"YDX\f!U<ຒX`d?|lΞH)EkӰ:;9:rLh)GCN9u]Q-\ʰQjIY̡TP/*IT80Tf?گ>8b팣E5yhV-O j Q`e<y [v&*w _4#2]Y&H4cO79rZM;렂Ʊ _39j&c6.N:tpQæ_/'EYQZ' ̆wd%["G+ ?Xu ;i& }60(Ӱ9lT4 +a+,ƕ(5`1h(.z^ɊLC2iTVh#HEc[LyB~'Z$[s8ܦIpf +bLa5eXX0QRBq*[`4(0zOd:yc/"ɴfIJG=L+s3Y&Pa0JR si:K0PTf̊ʽЗ?]yX}"z\loTBe(me-rA/{"z`-]c,Mb{,KQhO|+UA[YJ*WC][:l1pYUD+~g9 ۀ}M.G}\fN*KqC0TGB_]"hj!&y5*P9P:+ZlW3 tu WH=*gDjUO!wIBFs/QwZǀ'Ɇ5y0(Ȑ_{8CAGL V;V߈Vx2oR/#{Z$y HDGqKU(=C$ s[*e^ Oo*2}QHGZ"țRڔM*,o6`YUHj"ѿK['?m$4CB$!s;ڹ'Zg[#cR3 Hi@R$bi,i]G[Xܪ ;u Fl 11man% ¼"EB̺1q}~ux@s `3]9 ;v#%L-[Jpmcr60%&^JI$"|HL8x˥^ȩI @@ \*""^b2T@W=j>gmt]36v[NvݦsT|?D~;K NH#H3i#ϑm%1|I1G,Cy|G3y~g_2)ѐ,O"ƯgFCldbOajWL#>[_0o69aOƒ #5 &$dP/:jTι_72~w1N.~vp:kߤ0ڍ>$%qαRgrragaoj^ԓ24jZ}\ q>)tvpgp//^_ğYopjG708=]O͙xԓ3I<87+]Jjbf@FRcn)C\vV{k4Wy? C~9wyD)B8%3/ DQU^jM]c:ut='ye&I-`SGch"x^Qy1H}^Y:9?"56qj66LubTZGKB<kW)hVub]X1eG;Kf ?6I:E1g ~s7ڧmFeV +5f4`Up>V.X6!QҌ%!X50<_EugxG|Lw +d*g> Iǚl)X>#"BTGP\,SEsajTϭCFTmCyTG@Y̋ Qo +O}؂ձ!|u iKd煕Q~X=u1cQl2jPkDe qN̏,Q⟠Hn (D +•>.SL >{Hh%kS'F$ $Ơ\*C4 z$d(OB܉(L\|2dp:F87`O9Ia0x'29gIigk譞>'B>e`H![BIFlp&9H*F^r%K))w"KyUȢ(S`n:ظv``볎>VG-}+Ǣ$t(#R#O +J٪\Rݰ#+F¤QsDyUd _Ads6x:ْ>(}T"O +:X5)hĄLm6KaLAn6tۑ? HcNAF?V'.w/Zd=F.V}0,9ԋa+`ԧ!Ð +}Bk\q=LH5|Q4@A4 " F'Aj?xK1#MQ2gLdL3a Yt +ZL ԙyH!RU2d"9k^>d{|~y0Bc{?wp$(^ J5ři h!Pۢf"Ֆ UlRHqCSyRHoԾsGBl$va3#{/u+9Tq/𹼜<\z1:EPyCYH΋D# +rGd $:m:!qAEk-b]g|A#% 9i?wQ{">9*VK!G%=B$A ;y @TQ `NQ#"7#xŠO!m9B!H@+9Κ~/;9_ +4s]QQXWeueߑE=-fQ(̸ `T 0q8QU bզAlVMM`L6{bCRc4how{ xmcb-fJM`PW`ŘՔhSE(4\ldZR[_yE`oجloCkiYΧ6B}3UXO|)uF(6VvЫ +dά<Ȇ3D$ͭlJabWS2mzAWڄf_0'xni]' )vba'luPC!d|R[Yp156v)40wIwvjQ:jXG .@Z.Z}-Kbna14,ttN_tb\KK34@ o/uahj!j6pENc$\bq'-%r?= kgY,zA&Z@q.IX4iÁ=9]lix3o'3#MF{- ~FK.wuNĐv>Q@$M1p2 u1(}\4׸7qț|m‘3}ldIƿ>_{[4Ү)yWP(]%| [6]?>FC#c61qF./l~ `0)`(bJzآ~d|isY;}/\pedZ AwH0Ŵ}k1˰_}- :55u]|gu N|OCx̹7T} c ضa{.0.S0I v͏C8 Zנ"ZIJa/`߈"ih~1/Ƕ \M?Ч<~b*-a8k7刦NƠABc")}gcfcߪ^N*ȎSD2P-T+nKK_ϡ1L4ʓIg#?EhXrc;YvO^Ö}51%;JUhi#:cFg1v՜\; keҧ.]:6k 8qW:Dy{+ePvw9] ƧimZqGiV9hsV8s\ +eJ]*TNuA2_T=z6k\FXᷔaw͆SUnZ=̣U9R%3EiI *4,\JhX|~C9>5fSvVfspN_FъpuQ7N :sh@ h;3bʹvK| ]9ʎ UVd21fF ֌=Vi)=MSf)kRb5)\c7+9Zh|qݚy};`sآ#;EXojz\kj|MV*%~&unS5Qr5.at_7W=hTbF&6jdѳm/uT@T@S2 0 ]`H䲨1 `y ^K$Zf*hY)=Zֶɶv:k%ִܓ?>y}}˚ƎL}%q4bb\9\0 -_EUG$+7ª\eGڔYQ5ʌ5EJTjl,5?NܛEra #NJ + q-z +)?zrX͎1*#&U,*-ήԸjYR)JNإ2%Șx~)S'FNm[q88GE9^2LTaJ3D)Ր KB JI,Pr\%ͪiV'4˸Q2ː.;?^b911AaaV٦0QG%#dɔ$cRf%*1D ɏȐRfřE[*| w)<@75؇~gא2jSHdd8̓d4*yS~NC@SKoޖt/*zXlȤ,bI&XP,cR4QE +*(M+NTV) +M-Ճ%4CJɧ䔼K>yC6&35‹JzYQ΅Zz-X҉oya+>J+)5I0=hD{&3SV$_VqOjlyʳ<˳:8e ,\~Zʹ4\SHl2y1!P&JOոJ? HyU%ʳ*UcQe{"n[FVKիUF.wZVmhȠF΅ǩzr@LI1Z(7T:B(GFe遺 : ;лX_mQg?ߎI~%g#=Rb|J cʥUÛйM\\k1>$mIgiໝSQ;vMG'$]0P`C@uQN w+ +}|7[ًO +FwJ]#y‘PRa#> eԥ8 t4v71qzjiW|?-/҃ +܏WO1xNA^SIAN$'gR,Yhmy׵u/`ͅ35b%Ұ>Z ҅\Opn!p8>c"5ec,ýKKf+ų`ߐoO!|z-Kp\uCѫ 7RnWosܦHv;; PeP hfh(MEyEևb7:󺮢gKp>5HCax$q`\,?Yu !yaMZ`{!`{9)E h̏Qh;:.iofp^'Ѻ7/}J3G~1`9U~ YKm@k6Ӣ?ڵzGOѺѩlS$8AQn<r_ w_pYX;|r"𓈏4-"el +ֱc X:V;؎t^*ׅ5h 9$ V,a߆};plՐZ| -]ɳ|kyF;lݘ؀m@an_L b -M&kk^5SWUv6ҤjTiViӤݴnUNC}>}}.Wy%z"Y/_{Ob> +ۻ3>wiJ>EOOUE79𓣛}!\+q~F6e;K 0"WҽMyޑ`HRsxx/Yڱ8]c~9Xze TtOҢQB|c29wxz8-RLSγhqyi'Ooi=lff1s c`4!F?јop4Vc:Wy,=|`oŔ>1 D`1*u`6ƎjLza"ΏnhF0pC LÒ{_CI"%M{MlbdK II%LTc,QcI%:0,APڀ!i H;0 EldcdsI^EwUtmDG{+3wLYfV 37C;1"##) /ՆCГք6tw`z?:GϘ2іyYwz ^ω?9B x6`uKlfiq'L) (R‚@v9NgѦUGޜ!4LE4?-xo s@Ïy uQD\, Nݿ{xmtMc[:oCxhdj2q@FV Z' +ܨ-ZKg1TΡRav+(7~@N<_&-7p%~X Rud h,LGz}jTpp2Ԣ؄ +c;E즣(3@y6uX-/>K%"Y=r`wps:T:&9&*Mp a7Qn.CŅRKlm$iXga]GQ"}opKcm*q-$ RG7u2VP֊&E&.wm  li&IX9㡭BS5uv۠T!ӆ^(Fp +Ho"!R䳈=%.p$[;xuwIE덂99r(ݬ«CׂL:|Hu!7 yI$lBr ҖHlI-_Y̷۴?77s, ijڥZ Qn Y8H!ůܟd2pAф;! !3 OqF_|g|AfY㼓#VA}FK=J} io{eD$ + B + +D !L`0!J{e7#bɽ6ɼ0Xa,L|qzJ] PSSm$;8D'!b8 +-,FI> d0 1y7ȹf{5"Iq[\9 N98|_%~ / .) ._\Z!,8 ]u'0B(5wN FO3朜>dPg\Ҥ}jCtrt\\ȯkK8D??8{=<<wrx\O &5y vh}q- t=! P Fj0ؔf/TdV [=v]Ku_}K7펝ץc+ XASZQvg+tB-l7?ckncgX>Ntho+|+{n* ^k踂?t\B{lum29wtt"w71pyG\Vx塿ۏa +]x: k %^i optDoq>!;p(cv;i w|-88,~>^rlWaد@Z=ZAXf8Z_m&:-D`kwp~ >szK?"'f)X~vcN^F[4Eт&tl2!'*,42"^q6Q{rר_\1a#bP Gcᨆc2pӜ.E(>;Fvf|¤n 3a#<H#8 +-F"t)rkKwմZ)eZTmjKU}*{lVEσF]W=x2undy>уnOun5W&h{j3T힫qCU1Bc=U9^= y.RJxh~Km**qtS>TgYB*ݨ|V {Sy+0w^s6|;:rT +?Oj_J#5ߤb*ꛪa}sTw+?\Co50hv++2*3䞲B#u jv}L$7TA* 2 (F588CB)7P9!_) t21RJq%ڕP +xwۜC^_IqD7g C"De(#<[JԈ +DNRRl٣Zw}L֘Kp(щCp`<9k6d>FBr<̨~J2(-*F)QJ+):C ׀r%j"ǭٴ]&gzWq2}61dZʧyo":*1CБTCd3F*'k\T%b.TLje΁kJJ%QC|`jK0~a||}XzfXd/,`0oJfJj_5 TE +WQ%+@3T.¤Vބ;@_Kڕ|VKH F7D`aLr_hvȣ<ȣ<iFF6wh es-**12eXI3b3Ism2Q"@zcn^NVN$)I&O/\T ypײ ~ h +x Nw 8 ^o7h:9ϚQL3xm\|pZ+>V4X9np 9 +%pb]79E|Fk.=tqߣp_ ~ @z! 8d +%8b&qO, 7G;[s}F7}#8>oDX׏xobE.!}F'W\G8?#} +y 7{//x8xB/?xxd!]ʥ?8 +Jqq`2ϓ9cʚv鷈uXi<^^G~_['228}@-1/i z]@"b#v91::f)d̲%8 )=`A}`7x#vL*%x[fEA>Nlb=Ӊe2į~xVav];aA-63ڧamFnf:iyZG1cW6!~>gbE,C %F3QVXn8ױwl=>t 3mIB6wh=X)p1b8{V e5YЕ(އq#%Y/>`ݍ.F($ p< +G + 68jȣZӴ<G UJ\ #J7á{6h^b{?v[!{8v +!J$D @2-Dʂ xPW`k,@9GY?[ԟ0G^m8rК.5~a_\0A O:YT W*N.gd m$VM{Mn+rޓ+}GXo|/DA]U9fy;kfTW5-hr,lSNCݚ;d\%X mh#aǕ~Iww[~8:ZڲE7*HFyb=41\ T3f(8NYɲGNWfd2"+Y&YMj:.,/>R+цhkknтҖQ|k9T(ƛm,S/My2̣d3[n\F)%fĬШW#^wh 8ӂ%mhY y>̠NSikTF.+_l# 0 3ΰl +(0.D4Dwq;hc9&٬i&VLlkXSi&=iZcܲUt=}kPqQE! 0ԩ,+7lFSNx1WUJ3nUK)rF7r+%.^nrn-d߂Y?=N#_<&0ҧzs+&OQA1#RVg&),3]Y +*հI2dPp<(0C9?(8/<39AM֪lTi&Sy?;pMgq$*rkPHnȐP`~˿̖qHA>+#C *B ܼg9G0s%\*(EYX'btTP%b_qq-OI,WWҍ1 %gحNՠ:iV4x i|U<}/!㤀A+ Р2|ˌ)h`yr\rYX +0嘵rCƠSW.jB豉4/Ɩd%ӛ BM +0wE=\.BD."c'1!Mdb61;-s8KpG`O+yɇK*a@ȡ3$x \ \5\t5\@5д!`u+-M_M;"88Lum6{&P\ U jbibh[6ҋP@/DG=lyC2D-\X:` +XX G} 35ã9p5XᲈXĢ.$ml||<[\ +nm 5ʡ]ֱ@!H]/Y@ & +VxҏVx£%RZq.|j&UL+q4+ZOX9HfF$|6K[w+(݋ < d۹xvzю(8r965]@:r;zgAK2>Ab{婋t} A===uh $߽V3u"o%9KɓFbvI9V#= u̐ǜc@E?eb(Ea.^zCU>_Z>QA\%!Կ_p55AGy1~ [/ g?>q&8Ǣ%Yzq]9@"g 57<Ǽ=f/΀w9Q|P5Xr*.S 8yP  q-M\׸p@E~_).: x~B>G"QUmpA0ҷx̯5c=U K+<.$;?1?R>@k?eέx +^?ni 53|5ezqA#_L +^.{8 3w𗿂8#=C=:n$2y?t,Y?8VrEr?أ8G:rXD^]M2m~A馲.= ݠ&救GZq+YȑLLV8DDRKX%_"6cvv'iP6Դl_+u:~G-rE.9ϢB1į DWc Ğ2 YNy: ߰Z_j%yWx=19v-{E'{Cf$Ilq1 BjrԑdkL76`0`n&&`CbH'@B(HB[Fi.K@%Ye (mfi6AZN]5mӺ}m6MӦM۪}ؤjڥ4G.S =z?y99『w f 8$7el{W('ߡܿ$xqÖ8 1Ua#f<ߦg3q;cX5#Df= MSw)h5졅p$v1iL.x +8K)gYBDim` $]v>NK<n'2LY%u )tY='e*\v/q~J M5+ɢmIښQ{rڒ˵9%M)aES՜USj61m"Z~D XR(j ?R/1~ +b:m:r"8+GS IږVQQU6`(VBZ7֫޸Qu6Mݪ5Ri3)yNU +VUX>T3SKH'bCطEȓ&K"L3TgU\Z_5ZjUm(hک_Qgͪ,mUb{Sg;>S#{Lo&Yg{(C$;I!Qk,ekͭ*[*m媰W^2GJ[SI39OQsWޜw6 %33IcuKZ~vlF9{IW3SNʜ.*8'"WH>涩 Gyv?ʬQ5` Q)-[J&RVj0vƟ^Dw;X҃][K> 'dMSfI,kr@ ʨVz(PRB=J +)1N0uR;HfbM ~f/w_ዾKax e"'q!a$|:xĞqbMG#a{i{sp mx AY2`͐ѐb: }0q8k]A(nbL4n"LvLavL"&i0bK4A<&?åC){1ǎJw ցJ9>c;cܘɋ9.?7FҳB_Hx| +:;_ U:G;0\|Hv,bb,R(2 $y{8G^~;?oسEi㗩WH*_%p p Ǎ' 67%X,e +2X&8ҫ>_{Ŵna"r܄*_a |n]M>gVcB~PW +Iʊt9c/ggTW6\ۏ_ݛ¸oo=^I/G!R6\{tƟ6%inmzK4IIKKEZ.E\1AAȠ ás)`e2q2&sӝYiOs~/<Yz,GG>ۇ;h +{mf5*c?,ks51#ꋚ b԰>_8?@}^Gnx7u6v̀/b@2(CAw6ڦq-gҿu7g8?R<7{{BGeER?.jK?wvT=:uч踂89,C%tz gz@{཮kz _>/߈M_p귪һܷtɜGG8qyqa6WqR6K'Hz0v]_p|ܟ>ݛ,::)tGsc88#8Zܬ}d/ _R@m!B#_y \b3e'"֯MzGek=:Bt5JR=pt±nѽ(\Sݰt*O.r?b̘C"f'Q~mmIG<4vPAo ɠy#ynsmEo + 8,OUB$P]*,Od_ 2\G{?vX-s^tSsd+\x +)c:h_P +~/k$?fOyF>OqmrѺ!.sSc>;\䱧"p᪇pMdptvZf^w@dG\ȝ +-a4uAL&cjHָA9ʂ͞*P}LHuª4Z59_'`K0\RE-U$Fp+mw_ղqlI&&cqjHNQ8:CjU`b+4$JUI +$5ȗ4VH%oUqOxBwU`BSDEOƮGm%#P1i(bPɨ!Ft94y4T*Rjܤbs +*HW5r[)\ʱ\zD $#F#ϯw泥8!7#kȍߚ +YJ-*RBK +UX):Jn[rm3/T}RcxGi3-»[1nŌsJnFS'R*U`cO۞<{r%r9|I );AY㕙>MNgҝ+*{^2^5MlkH=Sl-~@ Fy24+iSө̌\P +93*=+4L={l]< K7#L_O̔zvx75RxeXՅ|vꤖz P#6(e3Ǣ49\#L*Yek.{LddHO*sLIs#>|o #c`;3 mcHrSCn|Ĥ* Y|vY +ke,K)EmJ.+x U\Qy|;rȻ chiCG3#t27^RL%VJe,u) % VRYH 2*ۡXxK^n"/˴2K-pg]9]m jF_-CF2֓b$&@>*-JLx_b}^ SH~gCcc ~cUEp>4q*=NsaXFh11+)`bA MhPi`0MA C?Vj)x6{LzӐأVBV7q7 $K%l\xa0t\x ǸcBHuhcC걓zCON0yy@0"dF\1RkRivHMdM4pġӄ&45GoLLk.Khhh k\ni)![ 9<h#;?;: 6+Xy#tp 30hs1 ; 9tG7&4nrхU]Gy,AUEpܳ:^J<a<2h6ƺ gGI'M/uE賏FG.Y'ṿ; 1pa0p{Lߐ {%W@Ca!WқO c *r1@_RqpfLtLRl`ut^o$6hVӐq -8.sfp>rFqخR+_W.0Y āt0Rοgjs;pH}A#GGs"^@ aG>|Tp!X4T |pƲ~kg88K8G<N]zS'u/ >z:=E;N*ңn<7U#` :._ORܠԍp/h=k!G!^7YJgz\hDt*bn 6^ 489x,؋h2GM>:p6Nv4#ԥY EfUR0we mXu8# teDt2!Ue/Z"\B.j(fmV]O{ jȭ7\~t \χc9)2xYŮC-Z@泳R\ ,F}9(48ĵ5xW:EiU5YJϨ.&j$ +n1 BxS(fYjC(i>'{ogG;k}+l$n9C5rxxK;\p%'/\p k4\5hr#{#PN. +idgqedY1@3zMaL$?r2C&X5>ȡ1A.%jTPFgiD a!w+'tCV:7)5C)O( 1|!OwDt.Xm)1PANO!ǁ紆*dT^Ur .eGxGRZySbdSd{< =ZQ1]!2YQ,jLN\r,rNi 9~LSeLȄ*W*,qB=9  +NUHO]pwL,Xߕ|VLl)f9#'CNPEyLxl2{2yeLJUD0(-U3Ui0v|:ɮL1v +ͥB+tr)D]᥊y +ݸ~0)\*ָɽû{Xfmհ2V|ߵ=růĔTMT۩jEZWj^vqq*B˄ΆKZ[µo5c[_U`8,G bK^2ٓ:hh5i|1/jZVXA>ך_,N7Ѧ _\[=_iu`xD@yy_2%ʹx>r؏{Թr`jf>+Te$9 `cU: I ~%ٱ/袁/h _s)qqlK3[j ML_>7\;ֲc4QkTT((kx[w +ሕKk4U@{.J1P╢4 ŗqE`ƎUn\ɼEi]l'${.yǵ1Ja} !Ϛ:mfG3m4I3]4E35q^'$;i츎[u r@ +1T<ȸѹm a-߉MKvǀz(j-|BL9~3p.Q3 xԭGn߶dN;|ܛ}6'Ѷ$3'qR<%&4S|qJ~DzR>ދx/9f |ʸ'yj= kâٱ ]0!,ڣp~ӳq0rN<Qٗc;ޥ`|<\^\e>PF<?WOcq|xiorM_a{ u| =&RK忚6W$dv}*1?X߶i{#_\Y3Nmc} 6>|d)];__/9Գ +3%OlOI' 3d,mB=E;bW8{; +,g_^U*IltBtl x( $/g :{'iv6l`gv;8hûCQO)͠s'I=. \x)9)#+yJ9ۉxs'5ۆ Tx>)3tSI/ WB)t~-vk~ƻFvNZMsEp]z>Dk;ddI8,ybi|ENbWVf{crVրco5(Xe1/sSG j+GYvꎣ7b%8pTȊ*J3LJY–ٲ_h9 +ukTz.?.7i<%oD,!`R8\)`. .jȥHB@H1%폎@TXb/&f:.cK4#1wsb=8|LfҖxxCCxt $2N(mt 5&j0T?CpmG2aEh9K(U/0q&{@AkX = =Y&zfͺ uЭ>HV^iPfPwމЋlxH9,4ٲ5f` ,x808!qM٠)]I l"10BTI##P$Ccba܍2Sc5#&F&G;Τ-gҖH#D >[3F5b( Ab${izз9&l^}p"F;b2!{asE +D&x#8j$,byb!p,dLY]ّ!1CHlp\q .U%NLH-Rdch +^@D3Hvgxq|Dp*жhcHu}67jʌ +?R#3I3< PS,> ؞Eq\=-R'6;9IAzɆٜI6|XdA,@W־+Y?[ړC iBF-(ӊ -A[(oq@j ȡ^s8j$,AE$h~?Xhڊ>ǁ-•a0|!St+R)5D@*zmahCFnlV7qm͐pnyQњ+{O#Ok R>5y]Nbs0 ;P^84~EJcil)%dtUY#Wq€rFtGz](9dj_8`]భKJ7HKwsؗ1TT..(rۮѵ}4f>z{ϟࣵLAϻsƌzfzkfL(քC ~h?j}CJ3E%/c_TVJ*pT_xEy\_^Hڨ;Wi YA"ҭ[l!Iv^يR9$Vd2nqy>=/<y;s+Nw $ ӟmWy0\*c<0gלuN@B! +G[Yu?R|^rrH/坑,~$K]Kn`l=Z5[7q|gUnr"~F8ߛ-cY đ\ೖ-K1Es)`[>zyH]PF(볫ܤ;dqFV Lk-zPߔJK{wWy~P'C8d,ߴ. :J@7 dzqF@` V" 6X ##  ZeWŔԃN~a~qfu#E".lйy.?Xϊ ;m HK=`(tu4G!gn_:^!B@zhCLZ8l$@ ++ @ e!OAx C8~ⷎNs]=/I֣3ѡM*{q6ljK~!}9Ym!!_7Hlް(Qppj`0GXs,D`+/xGF@ҚSШ +s=t##URuMT?|zq+[:sMnִ䂹33o\P7.B *OEtO1o,N4GO\ٞ~pc݌)GR0XQAl(f4 M)h@<׹L"]NJYsr,'%hݹv + ݆/U)|JnPW +x kFEQ`0|=t[ 1x}fpc3A&ŽpJ ~ 7%1,۰PRND,^HU0uf>7웻ñ]zQZVq6 S d`0XA#GVJ[(9 +RWvHo^0x3 bx +p`+gQ(^1ױ>9ږ騬*^x#qb ,Y2aHwcVMOb/f=-ȁ/} - `=瀾}k) +4`" C!)p3:mu@XoQv ngn3w:s+*qBV- M$NreO{}v R` 83JyMO4)XZGyQj{DM {_πY ̸Ӻ|)weUefᨈ.A]]dciI~\w<8/t Pg+e >*7E`S# 3\GHpχHn aKS[K 5uk;mɶcVރ iEHD_+߾U\'9GVXJ¬9M<~̨փI+qijL9%A0pcF"((`77Q#'q h[:-H,n#*Z_YXO +=Vy!pLYzY*K;x2}{"w7er"Iw:GSy\V[<6'Rչn%:溬'5mDtbZL\&$ +ܾ~vן{}߻<%E&gINDHJ"NƄdD] Q!c@ +d *>7 8PW% \ h`3^l:93cM|;egA :܂8XJ[7XI|0|N7w[{EkvcJȬi%J-Q#u|FBѵ<~ԠVTw|_JvV{J,͓ɯ)l/` R|Vxfm 96pL1c3Y0ߜ,/NP[@Qt+eKTe9ۏ-p +Ȯ|BpW$ %IHO޿y:~0?_(gD,rE}KcШ+)J_*=I,?!4l=Å[Pծ=Ğ [ }g OZO$o!xL=5dbBC) Oմ>RIr\r"#;@V2[kclzi5a#*Xm?;62.#:ĉ֙Li_8L+ +endstream endobj 10 0 obj <> endobj 21 0 obj <> endobj 22 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 24.0 +%%AI8_CreatorVersion: 26.0.3 +%%For: (bill) () +%%Title: (Untitled-1) +%%CreationDate: 2/21/2022 5:21 AM +%%Canvassize: 16383 +%%BoundingBox: 7 -502 607 -39 +%%HiResBoundingBox: 7.0625 -501.5380859375 606.1875 -39.51611328125 +%%DocumentProcessColors: Black +%AI5_FileFormat 14.0 +%AI12_BuildNumber: 778 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%CMYKProcessColor: 1 1 1 1 ([Registration]) +%AI3_Cropmarks: 0 -792 612 0 +%AI3_TemplateBox: 306.5 -396.5 306.5 -396.5 +%AI3_TileBox: 0 -792 612 0 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 2 +%AI24_LargeCanvasScale: 1 +%AI9_ColorModel: 2 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI17_Begin_Content_if_version_gt:24 4 +%AI10_OpenToVie: -191.285714285714 4.75824175824164 1.26388888888889 0 8241.23076923077 8046.98901098901 1396 632 18 0 0 610 313 0 0 0 1 1 0 1 1 0 1 +%AI17_Alternate_Content +%AI9_OpenToView: -191.285714285714 4.75824175824164 1.26388888888889 1396 632 18 0 0 610 313 0 0 0 1 1 0 1 1 0 1 +%AI17_End_Versioned_Content +%AI5_OpenViewLayers: 7 +%AI17_Begin_Content_if_version_gt:24 4 +%AI17_Alternate_Content +%AI17_End_Versioned_Content +%%PageOrigin:0 -792 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 23 0 obj <>stream +%AI24_ZStandard_Data(/X^S .ڊ8pj#=qx{QNݛ6[*Ezq +( +E :ޯGruZ)/Rj'uY)"4Rd|T)HDK +H+Tk~QIIOs|b +m+%y2٥V_߸ʱ䯬,s[2X}yDXJf-tcSk/=eʈ˖ +u%KهRXR)g#=X(K/ct,3^ň4ADX(<@DxBDD +$ @Dj^)&VK·FdKOwCrU2 B`P,&K 9xr"G6hR&m[z]OY9E6X( Q ,X0OƝ?l@2yřbQłzbXdAcYV@S0*= 2CC8q Ihh(W S,h+ plWTNYfˮHR,Hh=bxV!)bA 3ł`s{HtUæX'5<gQ6W,geR, LS^R*C~Xڋ``(EbaqE&FyA(HbXbaq-chŢbV&Ţ m`(Q,S,qŢb1`;W~0`)Ԇb` O fp08Fr h0M5أ,,zs55uJ>1ɹ!ܝ C!W2Z7WHM/u!uTN6Ou-Cnc]lrbAFX`4?Gij7< aP,װbXW,mTVbbqcX44J0R`4`E=`\U@FP ZE3{,2+Ci8#"٧n"bbke'JK'#H|dCtn?7|e X )1  X40Srah4Ɣ\vP,Pdb1A"؋XsYjrĊjW\Up*1)Q,&pp 2 ,H|NI"-]e )aɴ+cRq!}bix0(gNb1 ƣ3?xVm65A :L&"b14Ge6f׫Ra0iLctf"C2$`h04 ÃazÏz=|?łh<`x<Gã1 І6P5 P ` ׀ ؐ 70 Fhx444T:) @t`xLD<4,4q 1wgW)s 0sXvKC;3+#5ԣQb+ ʪE՚j va4) F6q kT j1ƃP,8#81a1Fg3w{ F2yiYXG (e =Qz1`8C2 1C10 p0w0G9 Ghh< GP,XbA#C <AC&@@hCCP,,4DXXx)#W̔!C hSz$Wbe+jOR]v7/Ħt}HЪI,-V%>`M/Wm%v#-EG厜keqr.5gCeM)k:W.uBISTyXYLG˜Dwcje#4 +xg;;tT<%no>R,>)N9^ I2+Wvڑ/.bvu"KI%.!ViQyKXʻ#?<,G\S=cKfi+v6wyc'1VCW:KwHhKꚥGoXzGr<+>yWĴRv +ək#q$<C+sCSV) ?G+8%egVIʛ,h%~Z915@r$(`‚ ƃWxPA"B᐀<@P$HDDpxD,kt#Ac8xJ.ٱaTbK}OڠAi"](;DZgDtfLڀkL)%%I ={ dk HUϥ]yU׮ OAń)UK2G7i2FeKdML29 t1-KtXU\%dFc97]|Xu'B+wI +_gUqb!aHV*Y%AOV&Y!cDVR>zb֏ʱHb枽*h%wiY(Y4*sA$1JHeًv%tlZK뷩LDf"=Zj5+"4JTJh0h^yWw\1}cu_GhĖ_IQUkʎW,J sРOT0ipJ_ JV7&a٪Y2YR?zoxXJFx#]SI+10 KnTWJ^J|)Wsww*<~ǖ"l1cj+i5%{×/e98f 3!BLcbz r⣲br ӍHs?W?k~ⱜ'g +U_Ej]S]^c]2#UU,ݫWf5hD/++ٍίQ#rLQ eүS4xtu+B  +D@, Rf|9\s5G+8G.+6iEY*U,Ǭ^ ┺lB:*EY/.cU4rf$z̫i#{M{/Z{oo|PlS]<ޱŜg~9+V4^l(Ϩo!,L?8զt- RӶAlKuŮGUŦr;O] +lF +ߩ5VGW;D镮:DeS-9ZJ+F5fU7՚^z?pWY]0ؤ{Y,ۍ sh=].hwu_+Y}$ZNVwwՓ :e򡶬fz!icD2U ݺ 1MˉnuќN9zr1٨ +u}3NY2q*e ML{\6=2d0 jT0?hfNY*{;hǼ_oJe6*c^[EV]MbmЛy,p^"WRY1⡙OJKǃ>Tɢ*._2%MQaen;++M^a.Eg%KHk"P‰;k_M]r݀MA#~o%PR=+S=!|FؾftQE[–[{|5o**vM2T/WYWx=ó.ٝ7>|+nߡMȰ^oVٙbأ뺞&+bP=!ǵ 뉽 ӰC}QRoVzVV2Dt!)NM*7?_=DFͱzOX[eY'.z!fU*D#htXUzC7KڟFF{eblY䋬3>sfTIXk@.B{fOks6j>jϑ<%~uoDTkCwe\FI#+䳷|2G/F5̨/gEidE[ZRTTS7aϢ5o&BMLf-zbNI `<07WS}ӊϹ*TVKʈ4X[;,e%ʍgˣdV?-O;%^0k9V.msϘeo>6TcY{~e|Ս _w +3Κ뙿y15+')jmy;ܨ}% Nre*qZeV3rXao6:T^Ֆ3);5 QsfysΫfB&=_ެΛTYLb7th nODI3W,FFզ6SF˺> Uv +LYhfәțG5k"Ow +_LLvVCVΖcZ/^.|M>f&~i.6?4[:Vf1Z멦˜{`3uIC@glcj|d ]؝yA#B)tRcoqa ~7h + +Tײx4Uim! /++-TBQV5޷,4$*Y56yYa/-fD+˖vhdisJ$ YKsPZw2KfY<.`i2yBW4٘}ɬzY7bF]4\tإKZwRhBb.1V+Q!$Y +f\}hW7m)Ϩ$Uy/rs+T͋jbM%wV&]>r /ſ8B쬤AVC,tNaVJr ]R11_j=ˏ"x,T;]JfĺXN4 Uee ǚfbBdS,-^0'r/N9%Rf9 >8XH,:+ҭt7{]ų1n|&×uY!ߣf݆pK9Y>U;谮BC)ג~Jwlw^RS楩!eedȐ,O 8DE˲飢aɧԅfs;cfJ MnfdN)=0DO}3VFkOEDXrlF?*_DV(sزjotEOgJ\chԫHGEe:BHIG~$ÂG=MRly;H8EfC::twfMfQf:Xf$0F8n>dD#6N.Ph8y:)ef\έBיh\fx-ES+*y"*=?GUr% =ĹH+Z.ݦSCyDla5|\G6UQǡ&7$1"p +O%mQ-Pα>ˣX5 A,TfH^6 /UL:өm5D;a͠m'*e ͏[b$EZD͈΢a֘䤣d6'$": a%fVkHDn7/CDWq f+LϮDh ̺"f&}LL{8BX4Vl^Zn59V!&Qe &Mbey|;eXG;bm +UIԽ#ߺS9ũ4K>U8VV8Gƺ+DvΛ+'.z-M[ξ2_>;{19>#fm(MSټv>UHTkE׵ cM9s3ޕ +3o-Q7źئ9,vߙicTO[+Kc +X`Q!}7gIi/='#子6cQPX8X嶕۽f]KSC~}"<+QSk\z~fu檦Q˭uYo)eڏ9M8neCNh,i45<[*=9o%S~WVm޴DkhiN1">fŦIS3~[L|ܗJߣQXsL4JWJQ8/k;:"11 '1cM^#T:VT|Ek5?2OӦq5T +=YszC"d8*,:1RY~2Uҫ2sUYa*1 YUqQK +jx5,C.e*t4SZvK,X&.".=[ZyW雗W&.ۙl;//qlS擉ep|tNۑ,}\LG*4DtcPP1,?˓]A;2GW|^I3[.[*6.WTJZזiT-Xߔ\j=%1736B6.KMx,}"aD*\hH@&@py@2lS:@R3Δ9qŋʟsR 0L.EY +j  T:Kap8gbO΁;$&AQD)tL$ؑkfڪxJG%[gaOQ&[q^5f-8iuNaš:gFcԏh0`+'_EЅLƆcsYnkԥ| >nwaѓoiR&P!:ˉ:OM[q 4#JvX@XeaSI{Hx-X4 [.y4FZ<7̆ ޽<員> ~MsxuC8Rm_E?*EyFk54丩lecj +_:xsn l̥fn +"rlG \aoֆō CLe/4L \ݮM3~d#;5I83Evgr$&ǏEuەo2 + "SvI;*X7ZE% |_茨• rmTFЬ 8{=x} DJt/:(AtBxUܙc4͉"6^$y?ˆ6abhECP4ʨ*wONe][S(Qd3Ϊ+Z:^Q6:$_'~%CuT{5iWEkamn\+n.m Dwra=kS2PN[Vn1|  0`l.<5 AhbIGH~vn4VwzWߝ+^)\~S\\pEڌp'ro6D<Ѳ!ֈ|ɮ VctO}%Fɒ%ͅHsDJu FX}<l \Ԍ2✁o=-7Pv,\*Q,.q%j}М׺..q!(<)JjXFx U_G0?jq.R +Ky1kA(']dfjZv!;pH1)"B nST%B[9(D=)z$N.,8n镀GMox- CC` +h<2qS} +5f^I-50%_M)_O/l+kb*kxe +ϡu1wc%QLjNčQb(#vҷچ:bB2Ɖrf U{[Kof4ǓE Aб:|ȶU @v!r0=@ƔON#2 *wHڼuq*45AN1" +l A"T薭S&I(&UDNZ t^@hEL&"WA"%CD +k)%mI~Iȗ*"=-XEG̊rI5>WčxNVp(^B +QfHKDCg  zaK1!-& dẖ|#R78ԈF~ah7wu ?s`] =U^".1kv% "2v`R +5ϮOTBta ѹΟz2B mK4Gx&*+ԧwB\RQ72#"&IfQ.|́k*5R)B(xR"ltaađ(sk6\cʈk&5>h޾T[n虖bXL(ph$OMxEmLzc3EK NrS"&$K(KI>˯D?7'ʜJDAi KQ„SDD'k}źR~a"/eL[O$sFTfC(PTL9Q=' ",C +li6 "vviԎ ؽA;fm(hp~ TKDžp<(j+FXku#MQXZjʀPubqyCZE "\z1Tk 9_y~x@))5kea(v6,x]uSqYr'zɟeZWv`¨88sOB@B[p Eoܟ+La1X,FC/8 ~Ol;M=1mFg\I{^e!+eIͷXb"mw e% D1Bx$oF + Qjyxp1NBTN*0Qe1F}INF5pU5NUpKn59;ĝW=5 $a+|+,drI6IFч49QW~|G6eyWC> $>Ӈ7%;76h >#ꛘS 潸0WCٱ5M3c(f@11 Ȱ׃ k*}3(@)eO(LGޘUQ/!ĠB5%O 6Serh"gD-LĞ]) -xz)Dya'*+Kr)(@y;Pt+fha!UFڔbvPv\n)2 YEWO|*h7*(Noą{~*L,y-ºĨa@D}-}C/N\l"Oz˺hoVK@3Wh4 )5":#)EŚ!QTuӴ@%IG_T׋7 po`UnJTCLg鶉PUdK X 03T҄)Ms왚ָ5QJP e.C RvU5/ARÄ]AUq\ \6J ዌbބeib,ԨV*Lj,kғؖ,i2eLUqۍyoi4v ZU6ÉZh . ,xPE?t9^:lO'hurt&bN|S*cT\|qp_vK$*JJkVl{/c0\{TYz;9A.,d'ҥ&2h}r걛r֨},8M9VSnS+'w1ʱb?22}gq:>ܔ)WblmbCN4}CQl_\{䨮u h'vнm2NJȻvU΂*#1dʬjƙ]]ZVؗ"Ua?<j7v o /C3&^dԓ FE{0IߨhxR4$U_?cS9ߛ$*9hh $~C}.0 q;a/"ܩ֏sh(hϘ=h)@R,s Z$<Ƣ G5e5n>}|ۍ]T2bLV#,bi!~EtZuPlILU :GAXx . .B*_-<f 9@npnF^JVrB +[A]C0XXFFRtK"W|JО%430iݓ3;fd9z C)[^ύwl]CjޜTz-"t͇YwdO|߫Fou)TrU]ө$#:: &PDaw‚3}iQC xj]J*+7SnI]vХ>Ex2?8gXަ,P_5mއL 0JUGz"#6Tl1eCav-j5Y+:UWjOAPSEr JSJ&I`Y3_ZX&R~ld{/H᱑:ֲI:GRmm,0L[Џ8tASbMI(\AJ/N{ W| 9a=wJ 6xiEک/"(6&h";Ӈ +g@vh, NX%V>N(=bHS!!Ќ8L~NRG_uiTntBgt#t3y'tۡMՑm[ 54C2A>R2&[iLXjzƏ,P[2V aT՛ )y+ѰE| lo-dZ<}^ }2!cT'Z)ԥ+jc\m*9`C pdvaJjS<,n TR?{5Mk'!WM9`aTfY '!LٱP^rg*-nL + {eve5jJd7jX4Cb5Z H=̏ =ͧ뽊0d]*g=7 <5[8`/M_<;k@/A|:*;ʕ2oϫS"f 0͘ ^<i6$-Xa+i)1T^'),Ωfё݊%6kd*ap)d.0%xK%JRx7vh#aaԐfaG(_sf %֨d5R2.EᲆmT {LD'($)wc)ee qg9ʋ6㚶)"nuӢ8zmC柼DF񪩅@3 *אzctΝ7vվk9GGkdcM?c}u[s:NXsar&4\C?P2"mϙCΙ}YTMqz$ӝn Suabkj.ǹe1`@h,:"0q.B2acٔ z[- ;{Ƃ jR_ " =?OvyYh<'))!}pHpDzn}zJm3͉ m'蜅;@t m*;`+Fq=In0:V˂Xr)'=\ xh,7tKŻpI+@c <@"A?fB]I(J )%*{I5Gfj|gsdI'y\m_f.>@azS2RZT8}:\\?(ďuߍ԰~f%dh AIտ(_~ҰD~Ff  8EAbyo^92hEMnu7=Vy׎)|u}{ПW(P2֛H'tӀdD Ѵ'%N-@94 F϶Tb[ +nG *L׋r XED4$=4C\Oiѣ%?#4/e#y6p=aGSbՉ(b/1bN?o!7fl[Nlh?@x +?;v$}x{-e3Z~`КcJ5OFj#/bD&H >̉{?` W +z '⸰ ==[Zt_角Q9+\7A|zb +JsQJe"<WEn$9FD;Ob'UlUU'3Mk" D2ZU砷W^EWz<`9&Gxc{ 3ϱ̂,U+mk,:lƫb6K?Y~4b5+]aT{ґ8p!,eImnln4˚Sh9;em>Q%j-*hi)U=|-hDUh)lBg!`?RyXJ,ٗeCm!Hr^=R:F*D<ѐK!,?Kmanۨhg9 М.^0W&9Df +ep.&sb&2 +C D1ѷDI֥7&!%8 "9KHrw,@wjf#l“U%m(l F4$ݮFye47㋵^];zM!!7^RKMغܫԙ2>rnZkN!7c2 'P*F2n 9O3HiPoF%LqW!&:nr}\3Y8SYǁǰS +b:rim>ב;940)~ƉHs:r"MosȹiTab+QV y#*DHZQQxQ%"-;}HZKZb^ƀ"`@Y +{;nަώӱVz+GNm P6* RxbD֪Mo:.C*]Rr!5 +ЦN7R lKU(k/J@j}Pj ywsFPEe: g +YqKn@\!gBU Y]=0n8# ^Q߫<)‹xu4˥Nw;(6wE '㿀5ueFu;oLBGM%maVe]o\xpHC#3;S}9)]Le}iVoCfTsQ|*;Ggc1GY#Y"X67DzpZ?'k]>L5 d ۡdEn2`4\8nzp0j]nӃl#SVoa¢:[(2$|0vv}y<](\)a[ON쏏amjC +&8 wBoX¹*i3у% + cl2νL2]ʦc!֦c3'ly$HL"3 x޹P*1lE3oD)0Ȃ#ERL\!%N jmz@ar u]Jgi›  BfB!~wROPQWlQpɨ.O&Kq_FfJ]0O~IzCgǼYD@c^Q<|E\ւ@ykp}FRu{aE^}L}QrMtꗫC)uFFHQBnƨ OɄwDF2b^8v5$ir|hM= mf%*H֧a3Ɗ3ث + *>og+ A!Ԕ>PtjC< :#Ѩj#-"'o +Ot;+]yiϱTHNw*Ƃ9#p2<9xb$ ۛ#u iE:XqG,<*1R {z&`W(ӰY(=ԻqOJԭOAgnU! +DLt#s/Ǭ|{_uЊ/WLar-ٗkPև`5wߵjJ<U'4(_Nig3g%ZuS6Kx!Т +qNDŽB'εr0{8\vY7NT׶m<=Қk+q̯z(æ/5ޚbZ !5sj(6BܠN@E(vM_<__1a6&@̈,7ps7(1#BW^8vύP䋚VKK$t3>m}ҚʓtTҤ+K|*A]q ^'ɧ(@?%=[c) }{{#Ra:-4uM(%+|'սJOƧHx虪 !{)fk55w]'Y0Ӑ%(vOA9%@[a@ç<׋}}' ^Ae=ڮ58"3O,`3_^bKnz |l) [Ju~Sֈexa ԂC>a.Y*lìg%A`_chΔ^S(%L9̰wq= 1\D3*p"G )niQT,jt;v ;aW%5oE]{MgƂ[&Ȣ^1ȥ +'9 k틘&$raԪGso4x"F{ "!eh+]'@}JpmCJ-{PO!0"Q h kSiԅ=a;mEP.m8loR"s2>qZ ϰq&jЍG"!CKP1o|il=yf7ҚӾ~ck*C@Kg[`kHmxaOERFTA`Ҩ>L7(6hLg=N??KQto8ZӐ0O͕2pw~~bZ)(= ~] %q:e$Y!(<5vs`*=㣹= 5Ӵ +<?8U_$Ի*%S40?WT٧ ,UY>Yv l6 ]7T41u9Tt [&lnD;݃ByPGSnMWm(j_k1[=7͎{U;;% + <]bbtKйKņd<@\iL}קX%!Y07w/IP4l2%B8D7B Gw)\)@\|Y\'hקoTՎw%0,z7BAOz R.K)ZlZ"mV&{$:0i(̔E6?a:re+zD;w6nnf%~-LG +2sWx.TL $yQ) $,ƙ6K`L.~cRJy虪o+jV{\I6*H'`[ˇbȋ&m-;N6!T2i-@yd-|`.S\0e]XSآ!y<殔F1 (?1\)Pe(*(D]s3 񕘃ѱo'U3aֽ. ץ1bUXؙ#^uDb;ֺJK-+ÔS+MyYUvMF5h嶡s(/%fO)Q& +Jjlv6v;3bb?a<,(O''r評z6$\U1J3[VQ<s2C3lQ 0>{IZ`ž`ɳxgWyv=k?mG)YNnO&>#Y갃}}b Cb06=nS)9k,TXIs0KwZk- aPߠbŨ@`@&Ii*Ԩ&`uHD]*Rnjjno@2XR:X iXr +Q1E&+B/ĠZ~1ߘoNp^H lS"O+&ɖ%6pBڔ n]kHQFLȆʟ'"KkCцty40PլڎX2Ǔ ")84#FNc8(cg=38' 66m6n-L&9q"![\s (dR_މ +u= ?:?7lΧ*f=xqFm4‡um$ސnKYяB+nC?>,(Łc[Y!gg8i݆#Q+< +bPHW2IMK"a'\ri= ug7AMhʚ;MW8^aZtx:dVx~sDeC<`DϙuH:G˩3,9>(]Nq`]X+d{5g+b-G5y +ς$81EX&t$ٍ;ؤfV5`>t?EC7 V1.C NyTp ٷ~Q{_*\B/۫]Ff|0f 0P2s0,L#O ~9L8ӈr" NwDْ. +iO[t,e2+N&iZjq9F*5@-Lwc>QrЙ %``ykG4>H1JzvS%blM ` $#Ce_hػPH'A9E2c.) +DlT ;Ka)2afF+G.znuѫ0$*9BDsfVE2Nm࠴C9䞂7e/VzQBVƦ1{h<0=7@!5~@y9'*Nqce|ebnf泚#Kp?ީA7y?Wl=QHӵ(%΀ z_Gn9@v[k6^BeY O%tcQ%d-tv"V9A-8.nŵ.?CII!8y~jK~o^$bW| HDl<;z߾| +-]d܃mIو0c񔉺FmLRqEZG%ը9(d/f5wWw#Kl##28#T!$Uv~n}v o.uQXuKt˦8-J6r(S8j?i[¥Z r jM entē41Ѵ tMܨɴ(:~&>BwbY}5  2͝`,4:4/1F{> 1ZЯGb82`*: Ek"A d(I( wqo tx;Xn1Mg<玘 UL8Lc4Or]ECHiCE͘ESk8K.ߑ#?8`QbaѪ4cHmO)|6tJj-\5u<csPĉ卞LD\e5 mQ@žRz24c)" _tix|CvVO6L'=,~Z +O+XP +q_:ՀtlDz +Rr O\(Oq5deCd6pJ !x2f C.`{#ҁ$HU P2b o"Bԋ}W @v |Ac*qZIU[بo]L,O8Fk_ ,jyWr#J1@pKI +៘}ⓟdɁ5v= +؁°nyK[r*ldAULX JGQK|%8q+''sgպZ;{) zRnti]-y|# p`zjrTs.}X24y#޷%pҁEl%XHBxjuܹ2β^}lGeIϠ{F~2M4&9TBȼlG9& ʴcVU^tTI;sod^?K(E֤T!G矿rMfm"&ȨC1_Z]!̿.co RZ:hIHpF9]eTUQ% +KrLvb΀ VuD8'b9(Ibn}⇐~@ Y"x? Kl̈́$#h +TA>5=U;}W6?k[vU 6^?͹B+r"vNf~63_Sa|v6Jrٰ .xJO{FjP sGW2mT 6ӲY M" +aD\ %/|}G7nCϚyy^O42wݺ$@VWaʿɉ*۲xoq0YAVa}!!.%TNx\@L9ԯ75_\{U=&: W1;(BTu6,1*Ji[pDP%;Y Vӎ: "y:+SE}Ab\#"3Ӱx.iI8&4R!TĮs95V&UtT$ Fp2_FQjŠrj.6G]hMpKT̑qdz zѸJHb蝦,GZ5H ι#~T Fߡ2,Z JK)l=*.}3b1{3eqTS>kN/zd/c_ZL&b"K25%(z]~Pn2ٌjLQ +n6x FI}'ԈrԤyI𞊟i4 5&h>\AwNX MYW!E8s=cNgpO*EbQݿrkqCMVSe6 H-ʓ; U_{ȝA$63}ΌJ@Hة}.Qh0{p41Ϲ"-"'=vV.'w&l݊ϜBQ7$D^[ˁ~ p*벼RON-O%0hA]^Z^h!ҹҜ>߆ϱM&Iv.24xcih{Tp}nJC~t>.a:~OP`k <~-N}__x{k4w {& >%;ƹy ֯}r);qb!a_DmМ+YA`3$]tñVl-Ė2KQa]LDXZw?G-߾s#nG&3!I  +Y `]]/~o/gi !K,-'ܨ)rgRj׎sq,}l5rRyӈŏ7!WR&mITaiBHIJRR$`E xH T06 +6P@j "AA0Ph %A +pP2ʒ,XۣmR:^C!8\hKp8\P5ƉQ-X`"DX 4Akr@lFH-$FP3YIOY 'NXc'ZwbSO "LeBdq4AJqRb"bDDy4j$+ǰS5~Cq ;sAawsբ_o&8(% K܌QQiP۲ ) +vJeVƄԆ +U9  ULDJfꀢːF !C*EU-j.3,WA]kuELj/ +-Pz)@B}UX-QXJjU}ɗQKZs6/_/J5'fJ7DG TOd=JC)gp +1YL_];8?hB؏C$8qFIPC'mTQDRqhUͣhkH< 0` ;D;"g.2čcXnjG +O]ES`hyًB\STp%=XZGP,(j\8N%0?h}F +.jpC26MEc +~7HR RÙ%2NCO1~R@sqP)?sP&E,L=ܪH":(Ic }ZCyN;CDF?!Dhdg1wl''g!GغTΠАLp B`O|AV>zB?Uf6ފ_xXM^11 +scK pXGʇp, پt/)"21A*e&F%)3ZB%-*/RCZݑXg 2`[k Lytmj$h%Q=W&jHW} Oͫ'/r(}ݓ +˧cH^Y|*Kq^˫%(ӑH#H%M*drfb"'m,BqM+4CUgHrqQH"5Z4$gI066/wT6}'VjN_e7k;=rzLpMG*$gST=Cco5ZW<%P k p^$SUD˦=OA%!ҠNюƒL_t3+]bϣZƎqӲl/C'aձi()R&ARF=5QƥΘ"Yihip+-ѹP%XAwۃ!u*Nԁ~D1xsRS֭ m;WTH&VM'q !IafH <{ 5$2nKt]mLSvDk?鼖S<T[؃2M]Cd.~XrHQcV曋becD!0#mQxN"92)LJ +dNQPbhѻ]4(:4?2ѹX]B.SV[d.3.r^r:I1xYN*7 p0s*hXSh=3t$iɃbD2Sy$~`?22JFSFF.;K}ͺx|\r ac1$+4vi*{X$uf^ +uT8W̸j622(Ӻ^ x +amPX#FQl"h=Uʬ,gh'qt6)#ᔼDHAt-ixE{#%1L ? R.۔"N*(<o%ES#;qF:_mQMHҁkˎDۢEPlRkh!b-N*J\j$1 S'F+Fdxu@"xف9"EUp]ȅTJ9x\䟛I +jGn"PJ(rۑkJDJƃzu!9<!ش"l$mPyaELtf&DP+RvMc'h8%5/VmD pd2TJjN ^:|@s@_%a (1+>ɗωe +q}jpLpf>By0)A Qa2%ےxDӑʕ,6MɁט4#D,|e[1:vC#y$aژf$jB7LZF&TzUtDSeд0XD0=T1jՃ/Hb"T mZiݷ) 2栬QąA9YڄZ,zK$ꪬ\X~N L#ʔό!_8GRae|$e %rx^V|bf^QNf 78 A$"A(HbX#Y<#>%^Nq͢ 6B8Edbji47 +J7_2t 9jZE ]#J(˨F8?+UR q:DJqj̼DeQpӐ3ЦtJ)d>j aeZ@ 9-,] 0 `@\& @&0PppA L`@@Ho@)@!%@ 6 HH!@l XĐ` *#P@!@%@C휏ˁJH2e{.ʴ+JXϫ!;^;: Gؔk$nNybQWwQTEW_SOws=T'e\ꯓ'Gf?NDbG:aGHS|{,!ozvZf(VIg=l2U{ ++F,-oYo#V&p>bbuK1=2wIm%I ?Sssd/&9*7M9g#VO+1Dq4#[l(Hq5Y5^9<+1(U4R2*E OQ8/Q"iejWFt؟+Z*EbO[R4Cjx6" +"^!A1c& C%/(<ĻD#%H%B%*R9#S=v$ԚSfh!,SX65Q3Y +32*o )q&&y׼C*ĠmJlj?a$2 s9L?E|"vxD`\b@ʙ(aՄP<6-8SӁgt_8&-ꦪ6ާX),j9<ہy:3d7;ikՄH:PTm6%TIUAhzU"if(*5UY=ASNՆZ34Ь6E$s)nTr2m3L L>YQ ZQ9=n +!fan ì"STo=0Q(pSsw&wmWnyh#ZCj 'qxh52{*8?҇3R.$őcZBWJ5r-t)e"i##n4ŧHEsyy:Ա؟Ȋr +-u>C,5T4y<-!kM.F82D !(`aI"TGHڏ#C)!,aCfU4NmNTv#TK9gblILj |>h#PXV-DȎ8A,HFH/dmc+}`.0ٟqP9ũ0r;7L/ok*QQ%6R=)kjQ]5SᗥQL,B&j򸗺<UTȥԸT+VDRzDCD Wyj!a7ea+"1XNuXeDXUe8X%I&7OD4BO*s0ġP!C.',yI:MʖiݚO"^H4zXq3If +99OGDσhZL;wrFvFQEViT4^DD1: /amn"6j>yTZdchH너ȷ]RVQƫ(6~Vf}bFťaA Eo@U&ǣ$JRqG'+.׬P1.fh!/[Ӄ?1\KnZS-&x"E~P)4RG&T&L'irt0eNǵ\gTHJ_:H+TNTt`K9_>𘪾z#Η#H'2'j܃Utd:JSsv0ijjú' ~&߃5Zg",ΰxEq4^!˕Nixpjσ ZzHrZBRs-}"IԤ;بr]ѹM/,t2 ʈE3n?J $G#T͈;+6%EM4#O)J`òs%qwN[vS*oQTaшUm{ ؎`2*F+s %CշLEX4mhI!by"~,Ffa"!7)Ή5xМޠuedE,qr_(a>+QeU&8nZIQ+7 ʎ}& b$)ّnNo&>E sYGi/qcHoI.IBNF&r&GpA6R#T -߰~0)}5'fJ4T36C[W]2y#W)'R&Ԅȃ2!+x0j b{}UBh6"}߄׆7W0eVc^{N&퓯ʻx=KVScDscKE|p*2^N,\BNln1כӜ*T4$3I;WZh~JBʦ$֞?W޴/Uz6]jr^H *:ƿY"BE5qMDP]52D|q1|VU5ZSG|j5m: ɳL{kK(݈A8kťqF٧$q1O- +Qb56%D=ysdeN3/ źG}c6*$&"?Q5%$!<ٱ7;Ghrv(W~𫱞rHANoϻ7/xs5WlR4)¯&¯jiOMzB(II٢Sw$4qO\S6=qn*fӬM^hJ9M )OBS0Ed1zFNSOУ'رGy! cj"cjh(ƋSJMqUP$iMWt*t)K:"iE'bDF$> 7!7Y) ~b*QǐxS*ԛe(r +J|CSyȅDe"HȠeXT#8dQ.WEe,vq2Ob<̉p/e̚8 ,:A:Ğ0ɴCDrV)~u Ft`C#(}H>ʆfY}xLߚ]t"?Zl*|\SU +Kh7 +j[F&ZD_e8ORf +ךߧ;ח +)CX$}pM "\O.ClWMOq;)Q)Hs-/7%AީFIRi,a7# !پVg/oC9R33q_~"7K}CPG2y -m23M-KL]u2 /<&32e3]l g,2)(D&-u +L5M!=JQ41_]QK#o/7|i_'Gw"0#X. "H?%Gt'MiH}Usϸh$Zv {@ f6ZTqgjG!׃2IC4CA;aH`BZڌEc-]giebOc\.TK&'{OF= -Tݼ6aXdPMW;**OkjՔK|WNEԧH_ňجu|UuT$pTSekJ0"'Z?pCM`*,.HVXwߢ+WSi +kf Nhd3 +;o +K)v=o.@k며>jz +Ke.gOVXUWX;8áTau?YZ3UXt?G9 $5‘LVٟ0] rPM(,kN=*'U/ 3taϺ;i1)=e8a_Eº <.vwk#(VDPg(,|HdLiʵCa pHj~UD5WH +-EUd=4^ׄu=iA4)CT7/"2IȅXݷVF4GpvF,7봰<)r坴v{,dYb8SmMʈxh(j@`_XU彰$r|/,$cdmuf 5;8jS IQ +R!=4 `WEtnu$^XZ U0E4bX0,VOڡlaXHƨk~ +⃹.W+ԀaIR/< +ܱ& kl6Rn;úSͬ!E`X'aoayO3Ύωa ʋs6cXweaB,A_4cXsǰfK_Y0 kI ӵ +D4  `ߤ[ðXk +,z3xCI`5qn3 5BԌa{ߙf +`dDHaX ^;_0>r ]°|w \:c/BNGalİlt^cl|50aaUH 0m;aϐcX̮ ¼aIXED-IxUt"HʭG/+6A ^ikPMWt@QwXG2Oz ;,AP)2be0na DjÊŋgrf>"ЬIT[26GV>ZkZ%ZhyX(Bw :l&'V,\Zp)O<,UHaS+D/<da-˂ QY!K|5u  }WQxpKǹ>k'rX[|:/QT9, i o&vXPT}Xt0|X#\S6v{Xզ7Ƹe+ Ä lͽ;AEDt*(N~:9QlֺahƧ(hZgKlKP2{V5%,T]u' <ktbyVR*~The+S+x +hpٰafb+vE? +FoÚD:uFQju \Ba׼Rj5$ 0`tw +2Īª/bfdC,h/BPXytx_ +=Ċ+R+ĚU6@_jI"|rE4yP{UCFKj +z,u^] h2mݾnK^I:E,TKpf9?nfZFĪb5%b}zk0 xF굓|Ryq!a+d.Sc,B5ՇWGob(88hbI8,X -\&PoWC&Vk##"#ndE0=l\bM%IS]bIR;Ygb}&փ͊S'@mbeաQ;ZA=Xu2X~W8sb)WU-ӜU4.ފ9hŊ +sfvG+5̕FįO ++*i iŪ`XG6f^MW^F[Y37#*X:borKR_bQsnz); +^gb[TbsBrUG+ָ +nRGMJyԾuCIR5nm rWg^{v~*3oPk eX؂WlUo<3r_mFJ*+u,h'JqY0ZdVXDHv. X +l_wNJKgwb)ʫX*QT xRyuF=mBNSn(urn{Ek_2TN X`L73Tz+tv[,, %5Br@Ⴏlףou YY pD14R:dGڸXs(u. +b]ͮb> JI{Ld\#>1R ͰBQGqc1()b.ŵ B`b;$k*5|9M#Ti ed|*XòHa,2Eޒ^FmLg^+!z_XaH81#a, "W{, c!AC0Xn%0VE=X c)'1`6c=Dž+R4!b` M뱗̏sfFNCXhrH)'0x,w +g9ƒVylj.O٨;KjJ=0x}RjA3p' chxpqY޸0e?& ciR\yV 3B`+$='ԯwƬIF X]$CyËNÉ< c4?k:0kac%QԔ^nY +ڑAX?jAVEX@na,c*2G oi i +]``;`9Ga*c04' uH, :o^9 [cAv'9]3J /oX+A Ly+LRʫZ_sOw1)D1CcMonfNOndžk*Pb,jjeOpi0TJ#f^c93_c){UMwV+!v8b\c|X:%9uYcYN#f*53κ On8]5oEjŢCJ&-n4D5E+4հЀ+td8I=8 <ЃÐloFhH{3^m2kxV'ÅHz)f_q'?3o!cƺ"D;¢Jh.b= :NVM09N@c ԟvNwuXN=th,{F@bBX.ThLLc1/53plq2OO65@y7|B +GՋDς[;"ÚYv2p3X&0ƪZ_16{E-K%!"h3e(23VsFQ9XM52l=ζ@-7g #@h+3׌ v$ +9vãlH{VIvS2@fe}Dc5$Go$v.{#ޥ=|W巡HV*q7ƎEWctXPOpȉda &,BwApEb,C}Oe1:JyͲj Xw*FF}?cv+ w:e,%sц _9eg7v_;1tD*E_J1-c{*sXUI(cahƌeT]<ӲK _}a3V"XSVrk]z| kٚɆ-zݪ 'c鯳4"5KdH>ظPz:6A U8רc}bbPƵfp^ Px:~={-c)KCs2V_sïp!7Wj||nCkDߌe偒Xu_A9 gf(`umе +Y"(Azf#X)%^g"ҝQl9;J3X:c:cq +5ߞX?cmΕeOOT X☻^lBc Z2%Y[3嶿7c[Stc /+civ +[k H +Fp=yjbƒfX"οXcL8Q_K  Ռzզ֋YҙSdi{Ef=7}R~vbSF-S9te"` ̖3P= *Qmƺ4!یX{)*r3/筗mձ*S LアEqҊD$u[\]Ӕ5iX@ xD*5ggX0_HMn,5g$gvFb0ErJˋBރˢbt}S8*+Ng~KŬ&.7JXrD,߮g6Rb+tɚygbMw=2'tܨ BYػXmX,Ppr],mdZ M/􅦚XOۇR.uJ[p檋c crn&bhy߲ +CxϻXs;b |#Xi_U>exqTt<obQ],VoGR XP  ݈ FƺX c'V],l#R+/Zڱ4E`g06[A50hb3- 4\_Gm ?1p=PD~@_'Cz=YLbHG+~)c9meЧ@2̌ +*װ5C+Oo(LG( bS}HazK磅Z3([ @UvFi%RvDFKt5I:B0al;͵.|Kk;nwf́%cf O-2.廊iu@uO }E%Ww"S`{FNYo@ N=W1ʍ=>9z?WP +4"m6g#]!Daw[@F5 7" 6p3P  ȲptT`h OSev2UuK)`.RBI]UP RHUXjw +6s4;Mv]$- 1\yy*MU +jZNPK:H~Oe\sjf@T͎(6a N,({>{!Ar&2 Z0b`./ސpW'O0 \s3u;}'m NnQmFE"0#00+NY'(}tP{ƀzQE&"hPY]c)n<ʯ;xXպBڪ\Pe?:Dz7dxq(qԧ MzH:XĮ̀m:KsP>GR$67^TѾVYFu='Iڑ  B,:PUnK 51J2 =\(DlKNbaUCHjr$!ۘJO?tn7dlށ 6JD={j4 E`@`V ৄMz m0iA$!.ɇɔ*Ga v0sL):A-}ZD5L=踋xLsη)-ֶ ,X]bʬ1XyivĀmVR_nڄ}؅RLb@Y%ϸ/XB}Q4,$Oq2XB2 pOO2YqRm3[Q`>OL;oC+_1t% _4ײs*'{*Tl!IA\1ܮK I;MSs8@~XJM(Nkl XxA&`[N8ȍOgw ހq7^Ό֡60\!}Vc_ijR퀩L +mrf/?f.p8".r$T]0p:QӱíOz,,"NDB((+g'Ys)nժvVzcj9^kyM`g!.w\-TR/Jw8̕YJ2rlHjt2m5 +H|DW!%+{6+؊,u:(; \ Z4TkØy,;%:l!CP9X).*<!ZYl,˩1$LUuq# Mhx`\pD"_kh̟x,ҼՀP D*]ֽ ;rlNŇg+wc/5GBS'R]j(zd@]Je,\AK`{ cM"o/u|vy" +l,eY~3+/;2wWB-x/v-jXd'S ʩ}l~r{0#6VԊ7gԁ ^Ud + Pl[p5YP5&!̉ KS=L!:zvg׃Kz×xAB.h%Phe/o'a#QJ +8a@rln@bRW4uMj?a1 ^v'SZ="̊I 'Oe17f6`сN\F?eV +yh1쪵bwi#/p5 +xu9_B}JvU55byJlP7mp0H5|+Hi 6ODKrkLb*,s's0>&ɤYVus=Ǹ<'ՓC  +vS|lP̆șpՇTx!(4j[#;O8ؖτO+Ge-O 8, +zj-: 8iOK@:WW؏!>J$<6&x3R%>XMrSh&Pֈ ڽZdj;G|8Q$aaUH$w'hB\tɞbNK+n p^O,e%Z/Ї&("Na|Ì/*P- +yàv..IO8(^1)p.L- J)ܢNU*T#E1''7zOopԅ{rZrB ֳX#aICH>Wc \jޝ$C^0(v#ԪHhB҉O\50BJA+DE0|6EH`ao5䅠Zvv Zq}F0xp!#EU X됫(U!Tde"z͈b*yNz/X<7L8[/#*tK!mr$3m7R5+Cw (EzKJ| gP#ߦ5\+zn[t3>d/_`1"%K8fSB;+TP?͑7~g8:EHT y4 ,V|pzX;ӕu9#@16(5s'c0TLq$Ft2*D=:M*Y;ز^M+PAp0 E,,46c%ь\y E88{ +A)=| lOֲzneNͲ67K[?mvms36 ,9{J\4h3%e4.eBT:ҥ`7f$Q0V+\Z@ouE@ڲSAԪ}0ZEZhe d;mkѦ́o1񤗮 c0z&mך^84P LZ"dlL)UZ bʂD2Kf(?b4`F"~/$DqBLM8!lSWx`PٻEcV{| YkRBG2&?kDfJ +R%c tG(wA7 ( Ց TW,A^}3c{S@z +D>9Uue=@mjް /Ki ׭udCfq `#Dm9JLV$ A.kIx6#BQݴEy _%f+l(̢V$h4VȈY<34Rbx6έ@Ы!NCno(R{)kF{ԠQnaUu_1 cC-e ^! Vx`%,hh,X_ ewtQZzB/[ܴ}eb yiнr9l~UfZqf&Tc/X@m t6LOufcQ $匬]Bb0ĤK#qXPov K۠52ZXۋPg +9;w슙ȣ-8rNس-- - EO)SR'ڂEG#5ڼfZczG-wਣn j%qZ*EШ"-;xYrЮЈpU+~383٘qI2vOeJECjTbѺB̠LlE|]s%(}%S7?ͦyxIXRe*4)M^_.“7Ĺ;W:fƚ~?qC-O^Ԕ8Y6-9Hy +Fb<ҤIMV6_e&tX.,L)NTw:$%(jQ% (+gkޚQ-vJBan1[$gOr$AҲ %D]Jl^ɲO((|. +ɏ 0[y;$rv)8 4,NL[KSJ 8B&O( ± ||Bv"+nW;t aſ@SY14E= + Bn-<Ͳ LuO;].dJ~`丸"0\n٪M/>²uvQtuЌpy78Zc 6=t'9Eo-g"yi㰟i'@VỞ`׵F숪I$wdRF]B+#fPjL O*Ϡ @@VMx%] G[S߳s,o$8uTn{mw~!j8$-ot|}ZvŮ;S͢-<#Fbˮl-_4O>!qc˟)G6;pi>X8`kNyrS [zfm#EG }G3Ɯɭ8bb&NgSݫ9EL0.>YsoH~:kVUN^djʒp+uYI=M/@`%͆)~a 9<{+v*Vb6<NIm8~S+ܳ{CuGwC(-h䓘`HD_ +E>)\ԙ8,z(oPK]l'E !%?٦0_4gb Ə}s}'AO)AbFs0bdΊl 9cx@g$~#=5{r ٺ3ibx:}\|[BwzMf~͢_j0ňh8~Hy0`5> +圞phXKf:d^Ob,-r]I dȾګgw8.Pphn8]g186͢\?WwVB# 9]~4F`rn(1uay* Hig=|j3mɌEe,p@+E<3 +GHHl=r MZcd:2"roHAaf%x <(sD#GJb7~ulf~"w( +cnqhz +j> NB@/w YɵT`hD |i1(>[g̒A%ZDu"eDcZL0Qy$0$jgFS{uhyiVT`BU]vu'0I,MSR#e9Y48kԚkEܙhDhI_槇GUaX|n%poH=pے!(T.43;q5 %/ͬ䚼[c>YM"`Q|N~<)lt5D?Z8Nm |ST$(RQ|4@;FtF^4iL~@ŵ]D#Q +US)|2S']pB=}FTHCu =~е}&L9*'0AVHXݞW{,Wm0T5^uWpW﹆Ed"nrnw!'Ʌ@oeFH<3S 1Akɑic6YڮfjM ͌K4 -9KAYJE!P.fȫ,6ǕH @0!\ &מ)I1Y(Dd;{ i_]B6X΋n!K*F4N!>V!vK!ynlq(pߋl.U_.-qaTjFK9+cu.XNȬDp">Y^P[Un}3<+v<7=YI|\[sl`^lœb,s`5/˵_qEؖʁrVs[=%fDgǽMjVgrHIo4P! v<]IdHU:\SNʪ&h3{pfv[}?p;ϵcCT]R]A`l(,Z̟z%ڙwSf(4̦JS{R\"D2./@XAZJW7_CYQQ^~ mCt8(E3 {ͬ^^&CDПn:U9uM v^F<5=CVueoA+\Jd?G\*Dn&$fa.)epg葇FR9tQp?. :fɞ Y9usi= Y„\Zf9Fq2WQwOAzfoګ)C3 3Bv}TXSʸh\fF9c*M !rBRUQŎarxr'\),q"o;x`u)#,1T?a%>q;UP݆r8TեTϭzÅ/ӆb-s.}i, [.[nM*~֛.*0O@Nnk:ߔwp=kɏ(.P TJJ;xXC`1xOMi&AadQN3(*HY RO +xuPs@iapv=ڹakYȘغLZ:19gcCe{("ޮGKMʕk!Bv >. +0 U˿vHupbA\4j}$uO6,7DfeVII\97 B7sDbAw<z\<5E>C%N<p[zɨ&FBJ鱕- p(+6;}q +y 480CXk_$<-Ifn+S|'efbؘyOz9&Q#.wg-.g+Z!WWix,4 …d%;N%$u4&=?0ь(7 t1dPE!pFy2Vzg +p_|XG`5(MHK)P@`#SݮNєG;u]'J7r!u 8yAX&]Y=>t_:"cuy\ )i9v\pcN]3btC#a> +Ҙm#7Kk6xkf]2_HVF)BVA<֘?I1Ҁ ~` Ţ.ZxHe ~?գzV“& iט;PW (NK4,64cD b4>{[ g&C&uhYCQqCnu/]64ʂSU f!*߭о:ՃԦŀahjCâR8NXUAvr擬= + dr.rJ֠[&Y[_g?`ٻԨl58(N+G )%[qn3 9W}:̨Vbl!;VDs0KqL?/Yq^I8P` SxJ +U5iL`įs >(/T1b oWsO\Ero 'y'&`2'Rbz0󮨱B SA F25/b`ficyqn+3qnЯ7U=8}tW!QՉbF0øXX=.V~N +;MP Ld}0[/Kie`> ]/#qmܐBJg<3[S"}A%!b?V7@J =9Y?sV}gCF"1RU]拍x$f*|3G1i@P\훊nXI+a;Uy{K6%lML ^WfJC_`)V[o[ȱe}'<ă%&x~%c@)Ё  \8Q[g?BĆS̹߃~eq0E.w$+D( 9[ze^|5/@(LETαioLA'9׊3~մ MK _p5ZHh}M?4s[ sDoddU%wq*j|,0O `oZ*>ٴS؍NidN[HveުwDْf +QKVjIۿ~/֣[:ԋ u;/|C/\Jg{kԚ]g/br̞S@VLtJYTUi ʕn?O6I1U8aC/KgfF/|wѮ&kLvrOsBdνrdg7sL*S`b$#LwqLd|q+Ӓ$R61%z%7Jl/La9?Cldʡ&t m;e}=Feteͳ3ZGOPs5SVa\TPYQuEg]&ڤ_e)` ,cjw_sl\+ɿLypu\].Ltk>j \a{$7W]kYY0Ux6][[jT r !9Ǫ\d%Ո_#$RC~z#7=c04[w,LD% IQ~ L1+:}W!f-e]:Pr u{;{3Wћ"0GTû~Ed1㩠R)pJ.Q!D5 +frq:+zLt8fvQȳw+ pya7 Y%k3R~@7Wt7GxXc%5p5kWiiFgH0jF ôEhj0 2ޞ`Т,tklJKe9m&)j G뺃aܸu㶛;"klŒ71)[)z #W,0C +`a%'p{:>`(" 5dSgX&lVZ;Z?AooaJ"n7ݏM)#Z`AlwEŠKQ[t'y߫FJy ~}<2B# + +0 ś@gR?Nݕ+md(}ʺ"=Ow,J6 bE ֨ C*ջ\ըS"Px9 O#=(RH5T(Lb~eE%*H9jv8ZXr&, z F*ퟴȪU@0 ?Gka [/!%yT0B$k +)O +c&uzYAKLlsc7oGyZ$ PHV[XZ` 8YQrNH$$$<Vd y ƋC,Y^ +$lÍJeaF^!7(Ev0+%-M ,/UX$zJRy`WLyuV-dt~\cS 0#:U^:䮯A\\ukhȯfh`HJQ>'V$;i"\4Ac|S¸Ys4 zBa +У'8E@XA|-6 } r^ĵ}9 f;!Pث9 7"76qtD"EM!Ŭ1zfפ:Ö&L8 S8.6ŋRPի2[?R+&Ry7 -5'[zeտ+~RX? QYguRX]~) &l?Q+KlhAq_𛞰d[* s7'\I!^OG7->*8GOjS~> +j|TR>aOIN$NY۱Gw@a=bln*uR;:C-a{*5:e$aΝuN4匿/z_8 \p,aB)t@ͦ y\m/2-Imgӑ,yÙZc@Phj'5+{ϴ(ik(~ͧmt8Pw`BM|nQe[ߵT4;?H8r6v˃<69FGLٔrɛXƪ;Z:<k!CU?%0k^1C&䦋CC/ :O:Ҧ/kE,=a.Vh erf>k[Q/ax2`Aƹw!AEv#9@ne*OZ6a6}egSf^oK\.zB~.'0ⵌɪM @@4@Zm8j ;֐WblQDQ]ZB8 +`4f9~ \Qr*:-W.I8/ߴ-qrP<>_ґL0,6˖7k񡡸X&b<)ii}jfHH? `; ,s g /YBW> ai)3$nRJސg6ꢷlKYB `"6_gJX" +U*k7!0 y*EZU WGŨsV̯]gbaBZp(uR[#Fj ou7* +V VD*Q5EP7tSgqwe@ILX`>m`$p_kƁ +$OCӳ A-`r/(E I9Fb퀎m)٘Ml9Z~2G^Rdubb@U m/6KVHm!Od"|JAԫǡ҈ЅLVWʋWB'C|#yIxŏٕ"Ʃ>kH:h>:~@ˬ.$|T{7FI 5. @]@ +\ Џ. .wj]rkX*0!.P..˧ ~ +њ.)o2(: $3c +|CUemq??e+% +'RѧNȧpM =V*]ɅEG> +endstream endobj 24 0 obj <>stream +>ci,WjLrˆBp6Ѧx'z=$^ZN6dvh/rr+˧/˃"Í梊sT~c&[t6'!\$ahHF>5Ok>5yah'MDUhp^G'psV/+|%|H +!tmhTa&>G IAS RJVW|0 +,=B[=BIH(Eۂf6$"8 =\h3!|q|#a 6$俭 +OI*FI 1F͈B; CQPmlC]%Nɖ#{a܉6M;*td/t!`5H{OvCiP4Zvl8gHزT4;NXs|ő؊ёDiZ7 +9Ru(?Jgzc;s$$J;*5VS@4GB?N?4c\\TX`h#h<*J>CTr$bt?z4 ADvWbdT4gpPc,5 qV](޼iKITCdƪ%)-JFtt4Dxo4U#QIr`><ȱ̷C"W.Nf[% +;Lό;N_( (J$JuSIa&zdU>M6x"2rAto@@P>Wj"}%Yrӆ2pJm4l @΃|(d(xybU:U J8/BcSZSgYn_ro*O}/vaؒ "*@z\87F-=: uRVjCGKGEW2TɁCW[7KkJZD,,p-r$yn$1 :450!H @a~]' ]E0DWyh^Zɖ8g-ġ|Zυ5FFb0X3|(.8p=fM=FA>.;;53UP2+u.AeZ84 MtUZ  KNRG/8;o=>F:w@:iV'[MfȘ+JiPZ$A7 +m*5@`>ћƇ^I6"(D]rBd@D>xj Ua<1tNFi0\4ԂĂSh+{/ l AbxCE A q7>b`MdNNC6."Ɂo[^ rXCNN[S{!Ua6C\lʉ 9? +0PDKOP^6L(> 8FkՋHPnpa`:Wop0&Qҷ[gKnH`X%z2xBE[ Щ^]LJw!\D9^|-R4गg[xV})e3Ry o,>lHR j4JQ (z/?Wȑ9[Ò)X!A 'Y]G'rEwK2]e _RоXU<eKvrwFҽ(hM-:~s'TOdWO56SAEi$8VLGY" D:s(dw&\}@9KhvJ'%cjBmGuTͥlz_u*%ˢDɉ:BwF$FJ =2wLZ/39#'UKҢB-}ㅤ?rP' +-"#T5J#{ Xe`^`jjV/lOe:/ )z= +B*MntybN=dJVzG@VGneZ6AB`θHO\I' E%Z݆!`f뗜O} jk hXΔQ1W.Ұx`+ +~.QB~OPt9"!He4SsXfwdCTJ oQkbQ JsOdU8o[㙟 U 2%2ygC:GmLI=mECv=٨#9L0 kb ,)6~?st2]φB %p1Z8B>'~v~Ӡ$#BOSQ+P}Ey+2@S⿄۳- ů!◨_Ԡn-!qem>þb< !G5hCaU;Zzk_n/G"-U9'~< [/M^\XP I7-G1qxz0UP;o>oS/}~oh_Ogm09op7ܓi5bTV#okP +y.[98?s/3\+R'Ms{?tw+l}xs}-)HMN&SUS P;khmK.2ҭ<جv /1F[}Ɋw1RtPt?Cg w> ԺjJ qj&Myb8Su0t D,9hmJp? ߈|>ym_Q`?I-0qhbLET@{87P$9FEt%}(h阉X ғ -nu CFn?Ơ~x/wY}Lo11[q*T`f[#^m +V"#r`N46Ow+$"hiDX~;Mv1H_NyDĒ5 w +N@>*hz/P>c)DL$+}Z>0O Vi;9:`I a+^.DaAb yWkl5@`h7e68 c;KZ*~B{`3)jblӾ^juB6\#4@`] +uIxIG@&V \tvEJ\a#4bme;dXcS#"\@=-TCQCP6Z͂/F n0r:uv0j<,>79+#'F-&6l$7Q夔VvE; +>Nhf&:9tP8^]^Z #Vt'l쪈m?YyQ .9m*#!ݵa)D8} +)q2 UrU9zH"jgY%寰4(6S<"F8.Kmok0z; V@/pVy\ 謮AUm"I{lyNC߭FwOI2^./@{N/qB)Xr@Cds̠d4fZ-Nh$"B +RAWw08Tº@Y Ef~5/κ0i[tnLՔf H{i'VHM!S^ua'B↋]6h̓{B[Ptx&pQBB_M>0V c +^p%& Tۣ^!bC:hB~@}ĥ:<)'(q8>xՋvc 4!_a7jr cRҷs@Yہm'd^` nиR?;4'Xzyj"|jsȣld d % 692"/ +I*ZP=idGPy Nȉv G/皓+VOJ%Sut뙋j+?f*@YX C钢"LSv بNZ6s'{YQXК"#} pʢ]jJ 7 ε..M0EmGl(<~!A+VH&,7z5aK(V4@kKtYvaHyy*XL!3opkl#PxEnK"}Mrnr2EѬ]Z +ŀ 7jBbM +GC@(j,ZQ +QP!A#ƴT[<2s[| +'M~~{?;tGzgCE?`2yX)2}J|)]"D*',K~EZ K?1o5:'c.4WDߋ$A~%?d?%*j0r3>CEayMbG{G3I*/@#_tOzy$\_.JT}Vo_łäaKa#Uy'@(bP<0VZ>9)vjK,3~L.oQ} >sд]}RSiB5L1&`;Vio@\> D. iP^WzN1n7s{ 788IIpxp Q<Z:U0XSXL$`ceVUXZr;Bx.?:uQQy[\0ZAŚAH"C/ 9 =߿h*^@)AZcWxLt2RD\5D|C4 hY}mIiD[E(<ܕ2H uɷr#~0ؼb4^n!I2 <m^L\)i3[2UZĈL1u6&z(8DnA:=O0lc[){7,2x",Lʜ >wR0MhM;S5Պڥrxh;A36 ^v +c`7HD(%<݁ 1lvֵDy'eqدIZ)Xo-QF R$MAʦlvy,;C#2wl`JOȨ9F-y,~ZlNInVV6t)y`Y8MO* \we~r1?c^8NpPsS'YT');l 0-⿎8~g}]毇.8q^+XhN>H+TgAb + i]TE]5QQWa4[*'c#"KUpLpAmPg8bqvMG-԰(>)osCpOhx3(蠍bP:ȁ`xy8TQ4#(hr0J0$ȈJ 03H 3ۙ$C=!Zؾvis5ozvƲu{q +5~CiLPؘstQ!*jC63$iFD2<%cL1)>$s&4 :J.lpZ2T|{TT*fs$JE".hݮ m"r" +J%FP C`$!r[ +D)=`jOYLYUz©| PӪZPOpGI'69ޅUD tٓce͂%yl?'nNz&%ԎE~"1>XŽ?@^Bsk\hZvN(̩çEF5oeIL"j fkVI/XFj2bYb[OD+O>&&Zk:W\4/5nNk781 +Fŧ2f2')MRFS:ŪR  քgSSlErO{1 $p\^E!+a0g%.pDja Pe喿Y~$"1* (@|مo€FĪm0m*p .[ߕ„&~Cs01!BsXʉ  J9oc~9,r "Bb4Pz\h +(H4ᠡ.{:X' +Q7:/Yf52* ;>:qc. ,"V""lz:Б4ԋS-.\&4/ڃa!FЗ1F1xwD*  $̉4(EύY[J3Dqb3޴+&?i+|).l{/Fl}UL;7|=hp}uc^EHb +Cl K-KXC-A!>(X셖C!q1Z"Z7hbŲ:<&(`ʀnF f"Qdπ󬁃̭^4z_|ysINC$5cDPh+LVO!lA!:/ۧ*H;QxЀgp^c +)rƁ|ZRB$lDm?'0$5l%o2+(HBsPcH -*pDm4HĨzhK(є-5!T\2Ef.NCe#yy!i"iM|XL+UFN",EJ8?dkUHnˋK/aez4 $BAxIwi Z&lЙЛޟ/c"|KYT\M`# h.L ;VWU!ScÂ|)z0ك+[ag~J ?qM*s,yttCe4@ [@PŃ7ڽ6E4{%6j啚H5i3yY;Orj(HQ J?A fF43TIACE0㌄ Z$&駵IӢ!3Q\Qᠣ4sSteU=Y J߷~gyhpY"6YIHorvBB Qp9✖b%yv*bD}:RZ9^@Raۀ4> n Yͭ" Y ؍(_O@Dfv)3!. @uI]$ \$ "6!Y-VmOkz +xB 6y +X2W;xZp5J3b2X\%n%3PzzBhXꃸ܇Dn$iG6-ipGjޱ~'&.oT>^Iq>=*s$9WRAV :@!$.7@'.Abo,ea,)GoQB rGo^ '"2Lb1EHy3PرJ+pvdgd"ņյ˧UD28骊Ifj7 y2l%Ԋ$Tމ; +M=G*Orf<9t蹅 +.A{  pZ'K,T OA7P\* 7Y[#!CZ$&#/ A+M6&puaN`.P_hm~{/`0jl`VpC<`5-CYcUMŠ5 4@#Y0 #h/ g<0cEN#ؒ:8.)|5Ы ,}+W)"7{ р~"` Pyf P=!1cZ AbrXt|!!6~)q &oe򥜫V lY*x^ʠ&FQy1&A׷-F̴SA2V%1R zmh]hdwR/c:!um`H`(o\לHtKJdᾼCٗ%X^TLmVsS;ԪJ7Z&ڰՃ*iÅ][g,\WǤ0.dhi jF&S +(N\HG=*Bv> w,r\sƑp*h Ş̌y=2 ,[dҺwPޘS[(UZ%K'}O,ԯss AG0(Bvl:xIKm/4̱@R$Gu<# 2cRxAj)ƒ/{(II]BNedL!JCJi(D@AoYc[M6c.~PNw +ԏJbdPy(M\DY>2&G:Kfb (s*aGu7ZGo22j :~E{ÜLkM;5@@VRr;BbWvhcV*A6w:_f>/$D_jMUU4@ ~ucbw(dw!tk K WR'PGTnH7<=~+6NApRtJz}BWV}}6O\9W kS+6ceα.bπ1g-K|B,ϐ$\9If,4UЙTB| +pƨmbIγ1-MWD&@[$%#,pu- |}P{y. + Z6r\Bq,& 6G)A! ӼgTZ,V)hmT PbR9F +{^`/֯' +{55 dG;g9j4@tӆ4fNz5Ve*( 3&HT E}Z.a<؟#_חoҽ1*::I?@"KB'Tv +J3[)JE S]):Jdk"*h' fY=|k{=-^3^?+aL:~@Ucڰt鸬 +#ܘF!U7yr>_?R"`_ =`_\ث\s0`_.wUj'k@)1IA_SgAVPP*Xi@E'ȎZTϨWGQ/!;z z5S{}𥾞$_/8}Z p_iy8% ٣0ʪ۴ܔ+_ !O`yӫP׿%ןs0y-R| }=` +`?S_O0_O#o :]/4@@2 e7,;2|Īt%_8 '@s=tހ]?(I~儺AO_?HC__?5 Em-#zM `D%5r>eWr*TI_M?[HR#25}O; ) xCPrt^lz6-z1&Yg:7m +yzhVi*!e|}Ced 4 +[k|ZTp\=쯈cqܕX%ԜoDxDP ˣ> +/t#J7 BWJ+$b.Ξ/U؆n7Ӻ$&]Ip[RC ~ȳ2 +T\0{mB >^Ф5 Ч(ޖ,8oPn_uA`c_`6qiGAFUHP)(͝(/f+6DU9qQGiD"Z?l-XN'O"=c.ґ +lb(K(d PE=A+ ඕc&7I&m;`ilp(9d +K3FcQA3RM(=ohEypɣH<JOz vNFŚp!"6|V5rc WVh̃|J!Dt}iCؐ9$Mo_m B=ږQ LsG[2!x  سDp8V<$3c}/WC IuQdag=.lp\#Ij֊耀0-79(yd۲"C{U>0L%T,T`I"1fR,ė2k&Q +Lz MU3 0LW`ץ%bRšH=7Ga[p st/rRD# ļE ڞulTqbStwD0dgSLYu)*VEkl煖lb$:>ϹC"Q{(q@7\J-GP=EJ 0:(K_Q)%{6=f2~6'p gTf|0RPE>^ +R$)>BIBR>xٜk gj+惟PP*RU e0[c476k<|XS/n<:t7!Xb TKP8LEH+g@ʊgZ$U {&%ĻQ*(a=\دT .]w}ӪG}3K+4QX=Dи$DQNw1ge'Nrʄ20)4M5&,G{XUOwؿ '؟Jg+MWԃ 8X]j7R $|SMVRQYIus25S0j'ŤEP,:0is:,+<أy(]Kᱠ{cQ|Qi6 (8BMMGYXR p)e ͂47S<9wp-hGdGX=kֈ. '##4o +Gw7qk0DGG (d$E1 #lTjLW~K\$ EWy+A$ +Z1SG] CDjnˋ6TVHSbjb?i<@R~4|}A apL<9BOQPɜ"Z"8u/LWe~dEAŒkT/O#+ UE{gg +~z|}%Qc<ͣ tJp +c:\)GBnU ̻Ri#U=%֠y^.`ORua?,ž~#Ya_aYma(wc4ۂ<> +Y&1'ABm:8dJ2:F9%gl._דP # ؾax؋2a;Y#C   护iX) pwKX#$}7-y«=}}}a:M` `v _ϩpgV^/_s ׹餯W)Äb$CȂR ׹ΠIi;,e;tޭh .+bLVDR}+ h~PI[r!)!uXW&4C /a I-ζ`U-݆Bǧl&żHc}]6`Y!^ژWClIEhb<,ZxBX& + #~aL{{f"`h7/S8S 8F^QuΓ."@@py؀Emb^HC jW5:7à ,h=2|=WeQr;xs`qqh "]"g >*'@P?;$b7g(R):|U4%HrwPpA@VI*@@EHr>* J6 R;(5ޗi ++}Jb0KV NàI#-R6Fċ+r q:xDx ɢ`à y!h2*$x1@зZRLaAW}`%),\8 vW{D</4¸ 6!HGD0,eq;1uP]0| hCj +%} э=( pL!2F?ݢ]A1:=Cl;ճa0n\dKt kE^#YH3/¾aoHB!P:83)I#;$xGxXw4|vZ&Vä%!jҺ3{ =|3="}:71 O7%3C) Y$BbG=OU +S5Dv3M{ECW$0ْR3RnK\+(:Pj+C?( *Se%d *MH8<>l Xu{kiy.a7kjV+Q-` SςT_c̾4e4xc@;QbFC E 5 + 햩diaA ֨T=TCbḧˎO#n_N(9[y =X#1)gȱ<܈&&`W4J%P<eONBdor=g¾Q[`X}~HC ̤<2ݨ+ZCNHAd06R5sj/|jB2 T"2M%\9T^LHȾ4ٌ=${m"a5):5NNB@5H%1 n2&\#G[ !"&D(lT\TObyjV"&{҂1Cۻ  8+) vTDlb*c>AiQGJ>;CVk""p_L%P-μ"{)C ُ?o d[(By[˜Rh@I.:=|(_? 夆A[Bj٨X.''{CGAV{}Vžy06س k@ d\~f4%ⴟl,ڳ'12WNFeگ;*[?cR"$w'؇@7ZLYoa, L5I: ]'5XX> 4 YFUhZH +`' eh(tx5Zf*eK343Ƿ=ׯ\{M{dj2a+HxM5Z) SoKBOi<#2`[͖T$Za("({}l^{^+^e`EN_ XOJLEB)vHsWA0,I039 *Ap);8E<޴$=}C}:z}^`ǣ)T(^=*,1M,}dP P>xhZ"Ӣu(`F؇RMؿ[*ĎK`V.  ԄByH2=Ic!NFCzbz*xsu3`;y{xM;NػU_L52\qx}ʅ^ULO"ٍَ("b1TV8{B.%]E/ 9 ^QvPs=Ţh}[|X5bkqBeZ4i$9^0Ͷ BJy$R҅/8@6,D^pO4[P#Jj,Ps)e(}Lo#//- Dž.dz@`WXAʨSsםHG!=C 2޼\,(GV2csNd's啑:n2spB%Z2|l2 ܁LՀUy7(Zs>zG xj҇jl\jJl_?y1Rg]Xt\̣KahHR҇1z ^P*Is#+Pݍ\ +_n((~ +zDj0(Z>/HJ|"*hJeO@F'ʹyojRe%Fbp{:&]\x!;n .N5 <:4YFD`>!; ԑLR/oe9`ƂԄ2\΄PAbƩOO*亠u!]hP.TCji"R9j8Vc0 <=34c,]+]k"{'6y[NpHM< +;+Mv<BHiA^e^6ˉF۲Vxx P:ZC5qIIxfцSk o??oIkh(5@108T$F^iyi!PMbe0gR!CeS{ St@0#SҰ"2osgtRV,pa<*HEB@"TFT$4De؟EÝqyH] FtqM'_!ȇSH!F@Sq S^`d^(f^9G Wұ&m:E=J/g((br=HN'4@t &xSqJPlӝcoo؛3 h+)ޘx\2^[}ݥ8>Ys.DQl+CZ< +kdѼWm>$a+IN8ByS؅kBXl8NBCu ͠`(h:eH7ubJgjZoEB.i/P7VrzeW2@6_&͎"t,90~jF C= T@NBVɞPB}Q}aen$Rl4 +ItY+!83u2 +X4`@dDDzXS~IM:'{I=[ ɞco<Ğaodq hOLԆOԨ_Ur0p`XD=cJcKd[ؗا^6IRX>Ax( +hlPY&$9`C 9Eժ% c/2IiUPՋ{l(=`/`a +њGa Q4@$*:8GM$A8ϴlS  e8k b@bc\~6y  K+* f!9]IR"ңdޥF1P9SQNKJ+hb/`3ѱ?Oأ[3j{+4= ЭJJ+߈ 7E DAHϣQƬ @ABdf+Ĩ=-JŀoQ>dɒk7 \6/X>iqz̒0|;0Cq>=jexU6kƌ"Bgg[_TD$݊7(C$SHKƼxF P&aυF-+@J]m+;W*GB()ATLXt6a>dZR屖2Hy*W),?t==J̐D`}b/rb/IGBBg lF@!^'E!5pAK%.yR4E%L,eeƅy?m Q,ed9+&/+"dnQE(fTx<\R H?yPD0ΚT[ٟO=n /,&Ry{:a] y{: +ZI4{Ӕi4#s{O~b/ F^!8c K"9΢e}A Fd4lXf@Qwb+%*}/%}pPXǑYQ0G=hGA(a +.4|R9=YQ}I"0 + rYhpql@y|@%)5LKۤ}e_,c$D +i>ArHFl"B>O3]wSD4QT:|eާٛ6IGI7 @knAũ<%E55V`V"Jվ!f=߹qqZ" @PܔwYe\bAAc,pI jEKʥ(i2ǘ+ȾL l9C`JQ%7 +rQQ?Hُ8O|aه,cϐUH*ɫ'frB 䮨F6FɄTORПCW qZl旊0rg +>Q+SC9Qt&$I]֒F{ƳDF|e<AT 4 +%P ܔՠ•x#"{O,"{D*C4%' +{w}^<㱓."1ɴ!RNc)kOe k^ED5 =R6-f=KٶZ c9%N M2G񒀷@5@@4@@4@ $C <$UxT8tsaT$,#d9OQjN)1.ڞ#,v{ۏ}IF! %_ +{b_` X%F\>8=>>q> +}5h-Z\:ι(q/vTB 7?Ͳx(tQ9 I 0Dʊ %ۇ91 +`5"4ٱ96`v y!6`=;:[&2c2DzRhD `Q򈵟6f wLI +8t2s~g0F弁>(*n(xE ^/oW4 '#LJi֔~9YN=A(- =:4bO +#7ek^o]!`zntN`9yf=>F Ka]5@N , +S^KᴸĶ5N GsL1B̢FKIUXUKedBM9W)I${  + sU{lBQ6eXu`}7Bmt|b ,ʲT{OبLGyU1=la ByMk{]W#^/~5{čҍbu +c|HH~ c;Q5l%Meٻk"o6j j6Vh g!6TeeQ&rw*r hHL='G,VԲ/աU볦ecڅi't(*UjS[NI Ns i!t,nPMLn:-SZw'M\4pJ4{=b}+c? ~!>[ K`^ +ubpA=jq7^ q:P=gEw*:GHZ[){N@I7lk}CCV;ַnWA!7b˽܅ G$  '%5@` aF\ tRZJ@LF?0\ 7"nBD2 we߆vJujj(4y\ +(Mo@t eT5 jFjC$`Y%~Ii O@'4>*0>?*C&wLZ&+wɐ&]P:$R^mjtoW kڴO7: 7 Nb.,b3)U$wK(tf4wLe-i@ݿT}UA2{B}*O}楌Mkf"Y{%.L4ѱ*X$B/ZHA,'U[(E4L8T,ogFݘ{^0Ȑe4_Ic4#945@T>H: Ar.(jVs\@d2 ˻\ږ! I1{yg%do7 ЁաCۜ)<ԩbɰ j=$*"D2]܇Re;f,"U*"8K^~d>i*19b5xrF'zK/xT[rK#ڇاb~Fét!l|%sZϨSʍf ;=$eeQlBdj3yZaٳٳ&Pbo    uT j.vR~)i<;l :,Gwq8 (p&J@&b&ٷt'CK+=B)}W^ls +ie5^ _3Gɬ:}fs`p0 +i-j `&|Ȅ&} ( +xp֤^ȓabR:ek!"4x8jhԅ9ٲ@!@{ƒsBzOTyY'>h+REUBG5Z#~[a[̾\/BaIn+s/5 'ǜ hU^!脧8eUڡO橮OP0i>&{XюJ$Bl[| ֡ !h (KWTf@\;>?d_2'-5w–T66TAE+DC_#hF2׬Z1}?'vǍHJ5cHERAe1IcOXD CjBm !DMI:Ʌk=g"uRb fŁO:ΪDe(^Vi`'WPp3th4 ~2;}ujJT( GY/e%NTdZlqzIf%تk3(n5'S@"> T3-^eoothHX"sg+.ű;ÐPrвX +]RdQt:*1y1S<VG? G[:&"L1lB GKstW}N3*5@5}xAZw ; n% Pr S&!Ckc&#bGt4@@+VG˞=Il yR̆g.,Ftdr3VUY|V"`W[i!{!{ dCFxqb8 EؔnÎ栞:1'^(!%C䶅:e^1HyqA&58ֻPkR}jrX4B[KQT= 4̄%K {FNhBT0$WQs5-IX%;Qq:kcNv+=& +`(F? hYHI=,2!} +c筍2}_JH GD)‡BMW@D9mɆgh ͼ24@!c %}Zʞ nΉACVLäMB R=JOԤCN@>ReYZcw,%DT]JXmņ+ + A6+Џ@D"=NSfUwk'*gF;5@@4@@4@@4@@ D᥁b`H +!>(PPb@B 8 P1vAB>.S@bqU:VQLIbKd0r ժda?@0s(:a +(X,U|lֱӱhy)aCSʺ'{ADƖxo#>=Pmt\ObQ0`mà:no;t@@y.eێ\XII/U_H7\VpBOm@ditEsL@&M Ym/MX}Y*O5ohibD%\(K|,px]1ق1W]@;:{٠)hRxeG(xf:V @URIV$pUKV!H+X>XJ oCh; UQ& +;"HCkK1,pGՋBπRʕ3aUvzMeeo+xçe5qTFekj$TF[WV#շE:D8unMhsREշ==z"J"ܜy $xv1(g79y fhǧc"T.'+35{0";mbU.O첽5j;ZouN"S4je0s* x]P$9J"E=KoI`1jO{ò'B=R {`Qɰۂrq;Uƈ! r1aշ) @p?շ jpKI%]$mo;sO}1۩sXGmVHb+bLt$>zY9uOnx"RT`rkpk^0owY WGdLKJ>+s~2jW HV"qY1] |Łxh&`'dRfUB l[MHFZt}'Ë y f]Tư0^]A_r8k&-jcW] ԧ7WT]&Oi;շnIry6o;ۅO\P-'շ>#z =0gqbAR\mWvuՅDA+Hրzg/=MoSkqN {v @M ÿI{Ek??U8" :A5*pe!RI1詥0|sz@lpP`W^a`ZUaŰa~ 0ĀV%p g%-'SVo87.RRԁDg|#.9 ~V3A^}lE*iQq*hnQk?YuVU b<0DX%֎%^\?ïGm]Q:Tߦ)V3 aSҷEJXT9#H@sz\]UhUow烥lBB? +LZV+4`Pa:AcD\"ʙ.U D1p[]|\DEjZ +A8h+^sYEg')\18']|re@ˊ8hj'J;8WBVh!â|e'0ĚRĈ"@NLjā^^ĸs8WI.=el{}qP@+*ВҤ\ {  BQJH Iv$94WO@KEXHga&UG pn2+ih%NlXU§'MHMl J \FV&u%%Qdhʒ< +l&$0NJ1:KĽƭ߁hl֎/#]bKyAewU OajN"X+QZpTLQ%wTձWsUq S3eJQVĘWڛp(dE?tU"HwIO-`( U|QJ!"%>[Ya+ 2|QrKteRB*rۺrܨDHuUWVȀo;0D]@ҭzb7z]I)շ%6ع8a߆O)|񒾭}x!o뜂>3շvlfo po+o񩾍/OmG?sfPc߆7[}i̶Gxij/'[b.y +.[\l?{ ,q&O]af"mI撁}[ޫo29JkKc|;&^UN:4L-Wg#ɍ8ђjճr^,).o +E4F^ aaʾ%~H.U4*)[dy/޷3)HJuihU cK/I5-~4$xP +-О\#'Jx!b%s1- >04/c RV}0ڶh#H;wL2wmRc`3]b߆)eј5i="*mD/t)a`鄯ӲES۬\esd G }9v/a"ticfZ4LGZa4t?TS? lQv=+ ΦL./IRl0 +U@lh2mB4Hz0Мϫ1KU X &bgrm)^3UBTdIVg4T3O!@4mQ$D*jGk d",rLnqA6jy͋T03|̥JPVñbhws莧(Uour3K zzY6Uat޸c%P~9zf;*K(bF/QZ7N6bfaM>ftz~8*SG0e *Y-Z+Ã?3WJ_:Z{uZbbH+ct6 W-һ&P_:jOY&\~ˋV\"dF)z*.bjUGBKW@يXU $3sf~Cl}Os3kNM| +0c>PqrHsѼ2kDEK"QaG]%,r"cG`,JnhړyLFMl(6 E?A-VЦ }@Y B+zrD$ۥ<p ~ P.7 XAp#bE`'Ge: B_ Eq;^A橤פU21#zfuOgZW 8k㔛(;\n P 1^BRUL0ދl9'&C{~27ܱ1^LiR Q^ux dQ,:Y4`)cbvrf616L`^{8 ,%6C |r_5r:} ۸@ 8a߻A8U>6hH%ӡ[kPWWȿJ#S5Cbàނ'򦦑@wm +z &]h4Rg2&)RڸQ|PLR%|G5G FK5*o||×5f"k,рЖ F'd/?ͣF5FM +%oi0wAW?d y2<@/GAʢ'L(bև ; 5ٯ> T,P3tʙVO4hL + ΂SlAo" 7@ 7fԂT }-Fh! =$YVf9DlUrAP>PfEh{NfdZem@\8p*bЀyDVHD +"5׻瀹D//lZb{bԭVsm;4ƻ#"TDmzMc6:w'=]X2NKy,|W,pطt tXoF +^"|,.-ņDrAAMB]c tX(Ƒ^c>z.2]8D} fRVx -< 7`RȲ4R5\,-Jz * +چLo gIfТ E5wdA|! +,Q T$@ZR p%Xoa 1P6p[;M30̝e!!su#ȭ^\*D//G^ STze#5g(P1-CϷX2"t` +,/ $ @<6s#CxʄdHw\'<ꥉ,J5߀Eұ^uLE %iZoYhMm@@vО[:@k/0{iPFrC!@fx˴Wlrkr1M}msa$^UZ*vϷUQ-ڕP*4.;Pa-!o1طm`}[S(yh\,ܕڀo}A:_:NDO@~B}ѿ5`o {8CCd *֐UR%+#qd]l$L W>.,)L O /!TTUT[(g(/\XB̬B|!]COzBzUee~܌Y6WXšԅ8Up0 CRCVdzm nX/f4h qzJEz-b}~X@XOeGWs +3Ysu I6*$Y?J6X/AG>`!XaaRuA>ECЯ- ADZzd!7AX>wA_!AUXS# +%<ֳ.TXyAOLB- +[JPO>(O׃OЫ'Oo'Y*KNwNcNs~q}^ĐhA_A=a X?p1%Q|X?փ-^N`~/ߣ1{|^_9~T~+Y{p}~/hA7ƈ/P>&Xf`?'֋GЃ*]6GME6he?B @X3\C#4u֌HӸ{QMJbI6CFT:JIddԛʹB| dŜg}n zawH(-hjF;F?bJ5"M{SQF&+u{H/wvV*.r-X!Jfw^JE"Hl *f +q hkAGH hsG߮;[wGw&Tezy 8v[yCg'!QS~_Yy/2sSV CT)Lch5@@r(FfPS$AND;1g +8Z`k(Q avBtU: BDU+G yļ^@N@!!`.t]AjHk;7 +$]/tF{x wAR]B* 9gIN4)rdRR~4J&1&oTN|Q *X?9#?QBїnɩ,r%=Ny"8C2x&6!؋biI,ۓTȑjQ.=!`0T," 4eT"h`Д0iǀa:҈7*1RFX:;E f 4/"%P?3Hɬh@B(*`h:%Ci!I^*Ѿ ˻3F].a7и7(\BY0f[a'a\TUa Cӹ$Ѕ6%>\'aFŻ㵥Jtv\ # Ag32 _w +oPDD + '"]hFD,jacVztmrHBA_zq Xxڠ)C%}eZ1K6\-. ?$/fؑ$k :K@>a1kۊ!DO{ߴ2dqRȧm)emPq ּF(!z3#y+ =/&P(4 d5PJpQ'w@  [ʭEpv@gLwfFX8SC\xt i2pk@s"ELhj@0ͧG/}Z!i0=ǹзF*^ Ww $UC.*FEERl1ZV`9l!`ڄ< $DI^/oXv0mGN hd딞 _Z|i#8p4phgKab1UpA tsGn|KJN(ppѪz6DEԱ봂HOOZt*yXԑ̓ 缞Y-D*Q: LD1r=Up'CO4X-6X{$[2*'$*aPdG`#H^9RB,f:7:$h# Bĭe)uƄBSUb.,oeDkZۣNLJ Ah 68}=%y}^[/h&CQ8E^8RXRI҃"\!9(6C[Mh&%ϸVIṡ.7 /nsRG(1[?HD2ePI&P^D$ 7:X>j>ŮrPu . zj +MauG:fiS*tFqWR;jYR-WW+a1|D0Yho18D&)P6mW$yDfŢǗr1 k L1if{c_/'S(JeFi@贁B/] ˋ݌¤T0NSEte70w/y /_Mc4@`RtgF :j:5|kR$j +0B+m*h,BB2F` co +ͻFAMfj^n?<"x6,*$ +*S+t~ + *vc^4>Bq\߂ܭGT5bӉg2{)i^ZS3ZoS\\gg'&GGUwjjTZҥP= >ȳ@IJ)`R˜< ep:׉|SbS QFʬL'J{;E,xS>ZG\A$>¯\oG[?H[&ZY# +$6 E(ZSt0RؖTj&TCU>J 2GVk3IJlu, m`gl =$mCl}͙[?t}ZƬ/'TVsHV9u`j$DZdhǣ!P͋ToF=OiZ>owm/pTX3 P2LCI*rժKժJũ󝇰TX_Xg}'Y/U֙; gU2z/e=i=#kn@hZ_kR _m֟5@d?,NJCkUl +`c}&ƱR`*>m%>D^CD7#XjA`ž`#`֯wfg}޳>DYfYZXo*N]4_2gz (J%W qzӣa}#֯#֏<"o"SqsCz}`f`= +^SYIYWA0HfꡀBIЇtϸAApq=izMz ്?4>D <6J ,z 3zSLzAf== xW36֛[$S=/uu`m Y9sHP\峵 KkݙsH1DE*~:KI伬4;/\݄b1^ƞ!|* t4#&nK?"kZ[wP0o5.{RJ]lqkHj*[5F.Qu^` +JEQ"n y1Yi@`s'{4T-8l gR/ѢG$۾W +6$@ r@) 3:a^ãW%UD yc!(e %8:_qQ"",rJO7%T17g|UM0+|S!QoJRU9WF,0\BC05@@eWsФ1 'E*˅"|ĤRk_WG3 fz6K,BL|jcD-'AEzєBh#VPWb #`kIX +.1¼x~cUA)Z8YeR"=>-NB%FK@#he ,tBfxuUnj_ bi#%:eoERm0.`\EgRN^wQBjln ]R~uG!e LD vMzX&iS W!v$$|e-arH9t3h8 "4'Ɉ w F#3ވq0H ,Y#)t4$I-!WQvCtH $ 1I7w9IV99C8rV3d h=7' -1F3h/A7L0n`pLjGMm8HQ: JWEKK:P.)r:dYKϤHbKpu3@`xRkzOsӟ 1's2l0gżӏ\ Hްm d \HQ(Gj ae80REa/RC:ݧG|<~=zMI +E@"(`IPs += +KcP +<Ál7|2 +6'75ˣG I'(*8@^1vEfUgQ#aHY#~vlnG!hN32l(QpSIf/CyQ uu r5# YI.8j݅2Gzr* rQa=&{zYqfDh h4@a@& ؊Pޢsl r~.FGX%1$< PA^c0h,, ͨ$X2Ȩ`2wkF_ +8% +PJ-ʁD@ u]GIcNd5"BT6xQ(Y0؋L+.u}_f[OGV2J*է4Owh`G%rtfÿ`[,"c-Ici@Nl: +z*$)įj;?_/¨__q)>gA֟ENGcaeŅ /#$F⚉T=0{mEqT +!aӑ[2G (8e}WyR,01=ůvdG^\O֫r*:XнOgt=S"H"Bl4@`rloG;~='?WkQGPj0qIcKV%o'e]35^^1KGNl=U:.X +KWGb@ ݩP*9FCzxjp@ yj*~Z$FY!hfl)ӭg\zwPPT%)q9W RZZK3>^\OBzN]wn?ԚM&wPs.y|S +7!m"=r$Z<(IiTcb mFa3*X'NKhՆG-[I+[h^~l\o%Td7)(e[aSSFPub V(IW郫/[kIHFIlH/ 1lzE/jmnm}ez]zCvZnD+ Lbj+5#7}¬GL`֫0Gz!6iqsDXoX>fUXRXfRX)o?I/!u_d&j޴^479j=h}!zܲuiY/`hzFj!eӕQ5D^>[Z[$;0l\$oAln _ ]+)p9S%MQm\KnO z6"4*ѵ)mpYQ7npsipjߺo]{GmXe AF ᡓb"ǹoSy65yAGeXX=.68Va6:O9VhArLc* +,D+0$*d =S>MW~nZ%>2<]tH~V^x~ +W] U4@ŹO֙fxZ0/GX!+RIepdJJo eᔍZX֕Q N +HU2UP*VчXH\Lm߉.Re\%e31]^@!PI 9,*c9Ei4je;jVX&U^`.\#k&!<@<`oUMȼ  !g,I'rI.Ysɼm +C(ׯ{QL O)睔7^Kh9%(믐a~K^qMڄd?UN%( :$7I"'$+2KlLf&u3*>tGX^T TŢ #&@"x)R0;fƼ*2-igvdF{`t=Y"= A"/N4@`J0AhRǺ98TQvL * SK Q#@,ͼ[`@7YBaN $]t慳 Sj߉-+ +IջhR&q}Tr؇˦W #$X rX"* QYhíYW9ՅP2B24_ +R, +0q(  tvq;fx.K+Z>5g@׺Zi`6P]!8Yr,C[U>m&IeGE+$7PXa"̹7DyPN$O*\Y~^vףBhwknG L!<s/%A{%QzH^sQO +djH)zORE6*RIh@T}$POL:|4ͭ'-*w,%,r3H7$J@x}ށꥂbO2haqxh_^%"x/"FpYujP*B (tE0&+.AL4 +0+t(Jʴiꋡ_7/@..30 1zgt\vQjNF*d %E PR)gD75yU"OE{q ?"G Vzt}}\"Nj` !+pb;gA :> :HWh\* +\օqF@2Kp-K{`w+WȐOzY ÑDDR 2"PI}7c]Z!}oSerJh>=XH $o<8j /FBk:_C&OT^\J%{)9qiC,& )5C< +v3M\~+1,WWӧR҄ gth<n"ABHi_#ai_oZF'[Za +&^@=ae)T6MPIdev i lXm2;&i +Ԧ'A](cZ9UYT+x6e{K$|'Dg /FW,Q0Sυ)EQp){;pVCW蘗yRɎk9R印;t91~("#Z7|=_asЍO3ӿz T&|Na<$%UKjG\ܨÃXT<]_(:,}חJ__;J+#wC5@`U B6LSaѲ +uJKsHF`5I–cQ~ZwbxBWk? *"®;MϡG-j֬9h^dVC9NU|Viņ/,Olp u ֟c7gU~5ZqF#".-GYl[TV)U"~R7sWU@񫈡?zPcU~@"#+w ֓`Pa3feֻ4r=bk\443z HאboO4b??wXWzYzz9kjZ2Z~4l}mxUϰj, i=fuN~Z6LrF4|L~Z6^3OYcLYOHYg})~lZ*ZidZoh#Z>Z5^Z:砺4NZd7D$Y/G@8&n7VpoiQ@~-tV4"ݮ[5Pe/%\BԠ$U˗BǻE=ǖzy?$_9yzvLI/1>V.|HN>*||rwSݗpnx`U%mc[ݲg{ʏc}dUݴVbϤ~mDSh5MIڦ$&Y9n3>E4&<ҫ64q9WwsSAIWTV}0T>GpuμABwf1 4ɗ|,Jڌc7r>Orn>뜰:w87-TUW,(UutH֛_7Ebq<'D" 3ЄDb}~_B>B)V+߷G1GIM!rM %{FU5E$a,Xhsunl sdܧ4NuV&$G@&0!d( +#W>rrLK +< `22&dL1+dY5ZϟHZE\ѸCNnE^܇Il ] +"BSk!5qĄ@҃"\Ŭ|t,**3/$; [j(J!XAo6s{7{Xv+{Qz=,1_FH֞!/GH0 [=hp݂q^zࡤh]I;Hd8d@m TWi,-WBA +Y'aEe _5@438!1' @p&/kto:8Scֈf0EAX&Zvtާ.3(IX~_,ŽBp +^Z)/K$Ry(V\Ĭy㍶hKbn7>fȆ/r:?D\EeaiEˢ@әD$Fs Pĥo, +5@5#E!`aF`PBcpV_ YxtQh%ssՙ +$""K0( pd??_6hu ]\v *J6 qQa;tL$N9=~=<@țʮD* :9XV4K7c&Bk@B 6:d7lCBB#ߍa$*㵇42 7jCHF{h?6`0ׇ@Xl K|h(-v 4yLVbR U8IWxxsBTB0zjZF OA4"4@JaޖF 8ZG,I3TK>^OFk@#.8d7B4MȰ<1Z}Ig`'{+tA Lj{J\# EwD_`,ڝE<ڍrH:0~O05y(W` KΨ́ 8MFi +O rH%//r6O\!DZI͕x+q+DW ]P7ExYyP +iݕ|0;n9~EAb]gY".>TI8z z +n=w5.#c'w tQk=9MVNvIJSq86Rآlց4ųGU={3t cP!WFÈ wð` yb+(t_kͷU4آmQIuP@AJ|&D* Q}ރ|d~޽?H"wAhPgDU4@sM4B`\BX !(# _QECJA k5 ekIط,䯗(#bzLFsZ㼕!|Uӹ aIP=Q*>J-Jnx)bԄFel4@pjTq2![iISק1Ei5[,3~@B l(E^mJXiuԨ&V)AHRu0cKE0e5^/I^H^_cF&:}w=É$T$E + {7I4IoyjC Y q)lnѧ%!^zR^~`]?]<^'^'S׃HqW7#׃>0x + YZ1Je1<#[w.[|xm%\HʄytM[AWsuDALJ* b&j)Oka[_ WwokbY{G:d5gj ׅ]ZzUs>Yq =]2Үz឴[O*Ce + +ւxZ Ŷx#ǭP6UZ[ﭗ'R'h<[N[ף@.c8#Zo-!׫B㢴hmP B h.i=}x//-&QWn=$o`z}l֟0WRW\zIJs bѢ 2 k}Z? 9Zֻ֓>##,g+5ËpISzcu6oҸhmm[{ZW*oę#9HaukaiPa(/GDF|Hupʹ!NXv5zJLa[ cuAGO禡+J΂RX{qYU% }7ޛ0FitXAo[u]844@@hTRgQ<c4:j>M{^JKr׹6s*l5@W5w |ysv9^qFqC.O^S81NEu'GJQ1O Q;Ft=x5Kݶ-5Vԓ C#K; ,JC@j(>_=FRBsc,H^\QU}JC 9Y%YO*b'dl5@ j=@>hgKV]0J6[qUasN$ RՅ&rX]wLaOc! AVWf̞ q5 P-J3Gmh07*1>VCX-uMKJn +Qƈ|XZ☰,JA74M; |B+ hҬFK9"j@Zlyz!#kW KN}Fn0AΖ_:^tP#RmxXK @"}$~&E( ՒZEdAVj`׃^- +!ackaW*c&!:E?PM>afCt3(\lL brWU`R+O%{U{ni׃+r ?nQt[>YR$94ڔ/攕o*ZäRe@*j(%֡6~`?`?cG[{Zpu;61U> aBCi`.'=pSױ`N]ߺ=?[zb z +j?p$W$7K +'o 8Ros= ^sQom1דJ6otO G|$wGYW/Sk}8u=t8t=J~\?i6[GC>W%Y ~[c8zD+z  x_ESkCzHl3h+]_ `"^ ^?y0\![[sj\NUc +' D ©&zzz +֓osZYpj,®;S ٩z%md5@G,D~巆o~e"'fSlaX8ʓb`T 1Y/U /eE^Ի]X0 Klf{1|\2ՀcJPHcj`|)nj>4'<4S;uJV AHGj\wt Gg[+b4kN3 !ԡDH׆m&D;37K/)/fq|:+)C eE4Uχnưjl:L&*o 2݄$ӡcbP$$n Hw¯cdvaJ\cFFDvWegM0Kܘ#kirM2  ͖~g58LSgd@h\_bb)f#^ >b(K,9$ۈV 8A e=P13#sQ;?AvS ZN㊏i5;~%}jO^Tyuy̒Pgi] 3{턃B +/04@i8AQ!\UIvj:Ft +$?ǷhJq5e컽#t 0F }Z%i;2ЎDoڵB +v? ղ-fe.DGtHZ>v 8VXu(i@Jx/-j)ؓJcEA)*-U<[kLK"wqE(q8$BvcR=ʢ]<f-3<EUT$yzR8@d" +c0;^/8n(4^2LGc4; 9MM_ ( ]lh6T--GR8S&FKhXPe20Q)l!a!Y;qQrin%z +a>>-bI`rı8Wipʂkt),\ xxŽL?)  q>Z79\^jPg:pV<4@`b!=Jm, QlJͺȀQ"焑Eur\ 2F&{PA !cP3$~e?bB z[KNcɤ#d}KPbׂʔq'["I][JS=jr2 -#4(žODzJUG\ 4,$$wmAcm=Uǫ +smuZ LfK4r@>83&žղ'*V*bWZ'/dطJ-YoٔIJ5Cpl*fӖu˗a6s]>ry fpx.%Iz,8)(+ZKW(G,4@<ցPPdMӣ{S9|]piFqU]&+? /<GdG{ܫ^Ւb؛@O"E؇)دXwZl͢]\qL> @Nf >CKzA҈%>NN.H醑W%V-#&8ɳ؏BB5'د@wNzW2'BA}]q=NcC:H^S#AJաD操{yIPPާ@.̮*É*$m"I {怽@}}j{&wNtHBJqh:(d1y4d'ܦ`N$UAřқRIVJtu$!+>4X"_4@ ^A>\`}ܰ\?>Tz]w=::> +C((LcUnDZ"t&&MAH,u-/#Ez$a%{s={F#FQ5Ѹ Yl&q:n1 +* + +1&{"bpbåt{Q?_ĩg1kOf5F5@`" a$۾,"4D|]AXn*1 $QD1Onm`^B[PS~P=al1h&l!E$L)5@E-Zeyfw*3yyO'Fg-P gs YmqF)DaܨEV5zٝW131 + +(LhqIDJ AGL7ĔIPj!a`G}y ܊ls3N@ގfdUhk qdQ4GNo$u&A<̶x_my Ca e}Z~d t0'8e`l-jvT(&?Z7͕; +K0ԛKX`ԩ`ؙIX"&CB1ܜ8_YEʢ4 Ei@hx@(IB"/8IXatVv!8MZ.U庪=I I+ H>XUkuf 3K dB}e0B N + Jǰۗ_XjW'kW~Wl>bHuY] G̒jR :LVEGx) srJ}yltDu.\Jd\R +r 3daϖgݖYth:B`6 +uV~e-]jUQnP(AÐ'70LjM|B,txW4꫐c*K݆HnK3Zx.5@KAmu5W_uySTvLN WSYH3 ʌ/W7(ȇE, @plxªV80 +zEcܘ Z hk5&@bWttIԺ=kGU~k۠KN /uC@45yhy "#PBLܣnQ0NaD^WpxЅ.xC4$((xXԛOH +U:q8*щ==Ęщ0 +L3;pYhTxEVc;.!4W1Ygg j,V $6ʅR7vzyQaXrK̲ƻYN̪~G<> "5@0  +b PN?N*^Ձ,Rj_xH6':jAgpD%o5@Sܵ>sZ?/.K`r2FYTObFV$nN&\ 77աCF! $49  M‹5 +=(PQhAУAhfEr4,)>R<m p6a$"ßAxT+hU]'?f|R6'Akky=R*?S]I7;:^i0I d +f)T N@29B@؆] "HR2bd.DFE͡ +UlA٪J"/4)?FUorQ -cWf*,FJ7AٸIQ˵Ia#7 C\8hH|A1b1:2C; Uce]HY^HE4wx\'@b*,\Oftیa;g4hq2u7Tq D֍Z p2C\cuj!bQo*BgC$2(aԒG:vX*^ +3+=hyMq׾*c0UeyXO0QDBnMHQ1<"=%?9(=(Jk ' O310EFT6 XeMx%x*W4媸 Ų! id<04\LNh*=-ᒂu/& ^^74̴u H78Qpox c(sM1k **p~L:/QD.C+u f&5u!ЎvFN ɬGbh5FEkrez "@S A}v\CY\ Gxx>4:G6ܳo.ص™9+%߸~CA. #K8o|`twCV+ CZٽG4gO#yQA M=^B~HBT/<+խy|%n=U^5VG& GCIXI[mD"ʠP;K/13~A:oCОQI[u󡯹 hv*|\Ey;Qv\B喗")*VzĸT6Hnlt<h|,WBnUྙtfR ^00$E(@Fj8T7ߩ(޳iܴҘg'Yd!hL'i&; D,fh4uV:䀂!卨/%UV}, !0-&.fa V2LFcؕ&2v2TiLG;h،΅۰VD&Sq:ˤṄPq1P̕f@(v jBixTdRV9X[qq'\$o,s ;;zN#4@a?!<U 7$ʐ. C +5;2hb^Vni#j˵i9Y,W)\Ń愃])J ۈvvWBG-~azF>4~&o!gI+ ˑ4hk$ّH$xJZ@vK{3][`;1OD.H8JgG5@[2bbe֨,dHpKtRI̍ơI: UdJEvP%=9B+bZJ4;Ҍ*y@Y[.-52+41!%za(6DdPXذʐ_Y#RY>"<*ӳLLD,TfNL|0,]m\-9LܬWaDP33ς@R} ڮ?MG Q GH`'@ DiDGԋDCG!D&NSS7vQYZ#Mz.ŷNE֮KQXK%X^%A '6DNc(u=姾tz'k?jS(N8bP z6K#h,Z4Id? +n#SQF$Q(x.EI|G"ZiU +k[\>KBy6_ +kHeoN.,/jLXB6ƛ3"O*yGMU'Ej9 +/U_'5+Lɾ06pF4ܣWk/8BW5*5E1Ӫ-HR' AxHTU5 F3.ct 3%&48N^yQ CvI;F4-e)^JjSRЈsM({0IX=E7u%&74Mn..e+N-]YZ} ҶIhᐶᑬO;W y#H4k%_9?/DC)Qb YYc> +O0@;~<#{evJ* (HB]a7dǀ9΁@`wKQ%XRA޴y%҄ + `p6vE*̊gdEC_Ϫ|F{ƥ̄ZTr҂oUѩQ֢!19AGaGojBIh@,@Ul% O"dc\I\)D^C{Q">!(%,L~;Ce~ Ad/A /yBwJ$ExC?p@l?4BC{d/9q=W-,t&A9=h))!bPAhM ϙsyӨ0Q7*"msgwPeHAvA&,QD #àqH(sAO9 +C6, fvq?$MP-v%*4 ^x4xh +m\l-3ac/~w, ^I\TF̀NCQfPJQK4"hBzgҺe֜RqTXfKbl8 6fm0ۀ!ACZv>36Q +F! +닌}̊p 7b|){Q&&gdK , .; 1P +ɧG, [eA8lCDDY Ƃ`˔ rOF;ܒ +€tRi&J.:Z`ޭ؍a$G~x>S9~B +,pt_3ëp*8ş;ImUVj*$$QpX‡bPR9a⢜$U1.Zҁ10):J72Uf^j5xd,6-"tt)9XV +d+ pu48u#${H3a.>Rh 2$āa{.ǛJ1O$84@G< ;auF$b^T)Du&硐[tRR)pX 0w`9lS!wRn\' #dTDQpXw*.$,+DH'NC2eΰFҹ'MZ@AZ*]-/ LC[GfD  +k=6K)<QX$XvKJ*! Rd^/2 QN@ IxJtPERq`Z`u Hx.ꡅ`JǠ.cG6iEzu4dv^i.3҄Ckc.~CX_CnzU(RIا V*&YNRofONYG8.P`u8.ᜐ꥖G*]Bo%B9$*eq|,`}:IgSu9N%af2O@-Ca#>8͇iG5 +Vt8*`NBJُcJ}{Xd$r]^GB {4e|b/͗փ3A~܆#Mg 5ό8 tGĝK=>mU[o9(kd8K ߊ7)#?pRʝ1( zB#R@g8׈RA)Q 3@$[BLB`ab:aZrL!mO ,*NS`B!x }*6A0/^^>stream +> !z~ zE@ԕ#a|1ő(ӇB)_Q5.Y9%r7Oz6ޟD@ mxJF­.S(Þ2 uFDX⺶?~B!h5Sz ߊ5+cܙh{X&lyYÍ2MƖBml>6 kK I :fa2 +Y&!:=vW`*dTnt`x20w쐣b(bQ.IaT4A`Y%[2 %GNG}J[eˠ\0]NQz]cx.uV'[Li\fb ~UamPp<(E9ܕ +E4@@Pԯ٨DB>>WB}Cŧn񌕡+Ca)>"A` 3FMf'-AF.UPE5@~ĺ}eKe pbHR Q- RGt7 +D7vX4ySl}IŖ?Sw=(7NhY-F)ڧ2pu5Tv90-+v+1&@&PE({e# `* \Z:!TTpiȆ^$y5 geu"+hRlX\$;{7ҹcӫ={2vNw݅fk"),Qc  $~ %? \.Ҏj*tꑊK8'<<^ l41JGJzfO!' owr+F:#6"8 ;4j#kV* h3뎾 L eԐHr}u#*Zc.X4^4ROp @@iI5|uTW cCƢ(o=R[MEQ IܐVB{>-GP -+ﱈ`v(. 9|S2kd֢0Vt{LCt,,р[B򭊦+7\]ԫr WAep!@H +VL +QdXJ'?`xbU'PɷƤ>(Z.u5@[m%"6m;qEuzz۸$䬆z/;ãRf Bg\ +IMOB]I2m$ {Ed_4\{ŵ;{M,"×L/ 6jj*5;JR`.(!wd3{B+3􉄲uզNjYؗ2@vH`=ЮD1Eԑ:鲡G>͙0*o$1hٲ¸PCs]/}4]zA +APKv5CRe~[kIP/BSZQu!HJmsE^\xq̜o N6N1h͂`: 4"x4D$ZUiIk FIU+BKK쁥3I*MEg6T? Χ1*p!R\>Ës2Eq$6TpnDxHv95*hȢ!%̂*H颀8FV&l )$w xr͡%Y0O5 M3*I/"l?Vx@vj U< K}o`mӫ [ʅF(8Ft,p, %RQ|BGn*w] "CEXE30:*^cFhZi9fDt[!(;pŤb%;3DDCZ%JAc ŴB D_n΁+bE@‘g^F! +QРS*s1 bu8\`z&y$)ySD0`MtX+N%2 ە? :~97jGz{󣼰1nD@$4t:PYiHg;p4@aO> =~Ѧi rI'E \4,tb^B "<0Dj74KsL0ܘx\;FA4NAgq*2rw,T` +a#Z*&i Z/R]^>7izչB"'=IE +z-uW8niO:aJ])p{ĈaѓukTN/_̇5m||G|7)!/OϾ/r߫%o{ BLЛlka3srZ V̤PQab"#~{%qի%c:5M:?x.[ +%͸n."-? +܋T=Q:CؤuMxJlk+$*#A_7.{jcD߮AGGV \4!2M"(h"~#SM695i`^5Mc"rXٕaxIR&,i86 Pxt6 èRBBbH#68ۉv:9h:L_b.(z/NOn6EY&E( +LpBs?q7pAy;w[›/,м,܄X:*}uiJ(^?u3xIyW߹6(0?!}0C +ݱR*4HlxvKx^@2\T]RvV/dլD-$.inglJH e^TY"ʩ +1Ӄ_.TA* kdH*DZ9HM Ԙ 1ݔ'җLCDHW*U(<UBzʤZ Փw;]UhL<6BX]hTyvuA[xc9%բAX4j 0f=AzjhUӏՠUl84. ,V-~K+-'̚qAA9.Ѫ5@qRaL!C. +K_6Q:)DEr0<ڄf$d|{QMA~nX|^,vq|[֗qf(lP28XmIF͞2=[7Kn"U4ȅA^]^Lb,v= GKτ5@ hƕGvN$WTHN/#9Kx9=E*%Ium+BLCgd /k<6 +/Bxz>j ;)Ad^꜀]q@yBR`[rR +T0wr1IhL `:ppZu@qJtH14fbgT!$8OgI9a03+83h*Vգ q*t)i4`qh] +GDGfPlPEXm +GCG.JS|P$b5r5 +2:A7 RF3^+'ki u'kK]h' `9hR]HY@&#CPyؤADrY=]'G53̤QR'C'3&kqY`3kN Z9}=Z7Bp8q-Bwt@b3]*$07cdZ\:{4rq`Ȩ"s#_ l|rXDnʬ9zyfi D$6y4@אJ@7K$V>|zeyeyj˃\b#[DJ-S%rhT`䩑HNBOhI<K*bס+ T$[_´6h9~VÇƤhֳ /܇$;Ef.XID&K6x(dJ/蜉* SQ}: 郻,ԣuɬ^ &͏8iG(fΪϸP!?$%Qc,So=X^*i}@D:-$v;#]+ Stx.답bF$P#4so0D2$4hNxn *ծk9lV{V}4@ۗZ3Pַ1 8ppr*TV̘*S 2)K[XFP =8q6n9 pbMԥ ylQq3yL!&F҈+-HlgꮵX Ϳz>%d}K@z |8 sѰ)Kt(^Oi?(vT+g(n +QE"3w!F d⑶e+(^BQ(T+ŕ7Tf-F/hTYZOv$M6[Z Y֋N +ꓪ<8j i RMeO4n2HPSSe?^C,+aqLX.Yvma^kYk$oXʸ=i#)T)b` +=J +tCz*g,T8KW `݉\Vp>҈ֵDIAoZA%}zXZlhֿZ/P<"5@`g։/+ CASj Lkq~o6d<=l +=9A[?{'c|"_wyNX=P*JT +Z Wnx֓34@TսՅGI ?(^Vxx/(QGŃl \OMa!/i-~/D}P=/~.KK9>xLq'/8.6m\W ?߹F.`9-/^~^w^|g_|߻*.>eb=Ro +Soi.Q.`:]<9]{]<.>t.^ۼ.?.Խ.~ϸ.^"r//!OVNj!y}m)+6+VD\<⹠%]DS0u#RFs*qeW-x-R8D3yD<hoAۍ*?Ol]'uLW+xhk6,!40_pLi9{/Ɵ,8\L9^ZMkշDJ%P9E+` q'L,n+5Eɑ-%nղ{ټ۷UE^ +l`-*!g.OliFGàV"S *D4qisks,p u(!]^]iNj py*Q>Y[*9B%6σZ%* !C]nr,-$T㙍~0BPnj)ԿYk:,匆IY +#Y>1y(9dF5{S31 l>e |uyDbƥ :]z!De炞KXFbFh3Z_GnzcJ0, Dt<2( ̸LTDP$)R^ 2R-6.(J) oh6Ga1tn}2:xtϛZ%bdqFWɕ ٭IQ7ħ=gQQ ,.gxRZ`Y)Ě͂dkс M/.D5 +w_MДDG1QJ.h@E27[cs\N:P:PL;'@ʄihwB aZ槵tt'k`"T E +@՘G9ԠJ)jtoAnģz)({B#RQ,y6v8Q= TsjHUi5{̜ľhjsK2} `ƭI;Ї3N1)Ҥ/d~z:1*x/V4ʨ^0TkI^7uw)hلa_+~V=R A2700dƊA*B'ͼPzZ ܪ?DDB#I,BiG &("S/ DCBp$ :\^Yr}{]%Z +Fg:8 /Xa>$:+ۓXu:Wy3oIM8B#782h,P*П#Rg*voq%VQz: 7$!<%%L.!Q@ ]d"$8z2v\ѕ=UNs'.I P%5f :e8Dփ8>>A3$&#@xhi%'V'14]8ux'觝i7P!:GET*Q"F{zZ{Ԛ@ iB'hMJ쩀 )U)RJaF$wXIZRԥ\9d.E!$F HH*dΉaDyIygy"'_jT46-dZmo]"DDƙF 0, /Z"anhpvx {`CZG1I4#dL@HAKRyݔLi͡=<$ !jej(  { klY4NKQ{ V~T$-Ry/ȵ.% \Cqh)he;:U4Jt،'hxVu H;uN9P8^!0"Z,k)(zSZ="YB4B4 v)C(ً[ƼAmNH'h8:Wܥ+y>lYG@pk$v$'PdsS(PP cr"Vl[l඾s^ˤ>CY3L5GRg t#J!  Hb# +iHRCJdPT{)dfħqtZSP8hN+?ah;i=h}#} &aLH :AlP!kx&ٺ4eJ#*oEaViGgC\h5jKd8-Tf(dzY0AֻPE(;J"7[,ޠ/ҁ3ʔQ7jMbR1|E IrU"+Ń,E&Uz_]o M1mbqzZz1 zU3eR>{nUۖCH)()L %Vpa +( )CS)))Rz) +z +zB!MDsR)AG>O X?t?-`o"@pn>VB,EZI}iޥA~_<~ϑxGJso9'H$4AI z8% |b}GzXA7huk|"6߷!z,ŇՋ`?^|zWiN[Pś{.o^/>8_3HڊT!>$?>^+!}v}djů$_E<̍?ƿg'9*9Z 5 +Rv'g3h$vʱw47zysACkJ3lUJNnR_XwQoe퍿p=Tɖå衑qWj/>#TDǁD9ԺWa„UTCNdFx䢱r:g-bg\ Sȓ +A}DKii#T}oIۨlBEp;(< %!$5$*4/>0 aP^62.Zk""5]̵~1=!Rx/t[͎[[ŋȄ7!7'. +|#dS,L4$q8dy uWh&V' %-g)t>2UVޑ6 Baͥ2n2x'KGHX1vE`D,D  :$ 8Z $Hpee4e恣)?T)GGbM9U{-W,qnfԆ,Q'ZoEBKFH=(+BsiB kD;Sn!l8SN\2*Tqy5iY8oEpKD^PF 4 +rJ0ʃt +'[¨&ci۪usZW4g (Pi4VC:}.?6C.s u_ctRHpy:Y.<&{'<\jkNKFH ++դtiR2/&a?UU`MhOh;jZVB\ ..|MB.T)X2HM۲663e1 gfܰn *ΊP%G +U}}CcrԈ). +hgArsz1+golRF*=4t]\ ׅËeQKˉrTnGvM׾T+=7Q 8!cj3\#Ū@0J߈0/1Z.8{ʬ +7zk};__Ba 8I 6Q̏OFqwa aSZVٺ?Ju`a +T#)ji!#]5dDt4@qJđN82VS!Yd%%1P1ݙAJR|^_FPvLք[wYU(88$NhWn6FCx1)>o>RŦ~J :;شVwg҆ÍEASr) ( \XZdH],ڄ\*hD$sŸ=G!шc.`+' ғ섨/3EixNvz'#G0Xn#g*V-TDy-wFѠ]11 +~DGQl&%%9תHħތ'G*:#΁𶼃(| .2°(ށrF,<,&Hv%aIU +De拤$$G-<0HGGcDz_߽$tŀݭ Ad%lCl^{mW>l(Od DBnA!ݐZˋ)2mu,>Y>,\HXKh#QJUJh[) OfC$&UܫJ1 ҂$!Fwv< 8ZX8"r\2D]" cT\&ՠ .A7F4 ÛمIu(s!> +*ԕLŒX, +td؊lČATRk@:iխ.$^B]Cp*T9-J>IDsDSrEc_]oVI< {84j>4Rk@!C2G{1ZR)c "fQ%}H +&2әUCn:A)bmz4\>˥/oћ z 8tUtFCbn+AW0,'dpH {PȔ$EHاι\"RÎpSƏE#@#6 Vd3.Lw=~rQn}(H'(gD<>YJ3$fd.&%Sh:n.=ijN`!`gxY?g>RC!Ɠ#~VNwSXm,OA|]0s=|;ZRYΠF*4 lL8 t@>s=^]U [#Q$BFC*)|70 +T JA1'dOz'.ַfZO"Y>HX_eÿLB?i\jZW= +YzXZ<3P!kh#%^XmDg#.s\nz֕p k.tf+RtK2숷RQh YِdqFE%˒%:֐01dR6pJԊ +$ٶaZB,o[aWA@hXXSjtJdD xM"RcQS$"d1(mA>*ߌ,(@ j;sJa챚F+YW%!3J 8o"9<G!#pY(H(WTE,5@ 2νE}xT d"ȌTy`-s pyrbgШ:T{FB*AfFHR31od#nIyPPgTk*Rnv 'Vf{Wv:n~$\܃\ (.U]S`C;oGe0 filLE\c9xUH?JšD:]uGTJ"M$7‡wYt=7kʒň45daZLa dNlAf p7JH<!ih +ogxbэ ]4y&`P|83*h!(|j4Cg F%~x@RmºĎ2;4@A IC.E)hnC2\w]r>)9$])<4"3%e˵fW\=M8 DA5Ic\=QaQ+6W)03~Ҧl֡*ØRAR ]mmR[%fˁbZi7 +i@MR0 +Z$P}A1B=kM͞:t +Wyn +O"ء-0G`AiMDEPa -fG"H(<>_,4ZVQ βX&?^q6r 5\\@a ;04JfP ⡘0s q"9JUϯV(<%)%zPt ߄EWIB*Sz8f7aFڝ|ǜ),Ldc$d +Ř*X.*-XFE϶KL-4@}TJ2iPRH+S( Nd9Q' U [y< mDߕ[L;DDV&ѴAN9Q$tPBmzLYR(TUC~T +^4Ѭx,6[jL53tk#ˋK P´UıJaV [K+%| n ]ÿ'x,EbZ5֝^񜰕?yiO;G.!CqEhY* +Xa{<&IeM~Єx?rA;_cN~ W+ÃYd--fw($+(Ђ -< Z$64@` oG"oGvI|YGAA:7$; i0Si` d{h^l Qv: R*wR8mȣYt<-Ю$'*ώe ch֘0qX|萣$'vJf:F( +Ns,V:F7zu +u p6; fYtu=תy +~zցuP]FDp* %|EC 9x2jU1lҗ&E= 9xru 1􋎃#)׋v5G"`WrPdɥhOTn\x~RYmp,!nhOXi,;]S.zWb"b"$" ֟/VBȄCF(_, +D +s˄"?b-Sda-혾rD=HG|N8HJAT)F#Jc<7dy@'=Bynu";(W󇗨M{vN$B #xp\|*ht8{$Wa ,n `UCAABl[Av : wCUf(ěe s tLL6򠫵@P^fɼj>!ғf( 1K"Iuu=4*$悾F vdpS5'r6|aσ] FX:xq jp(iJ/12֫P#1x.[Y$F搬4,RG16*ej,\ 3ֆ ֆҽ;%7P!;n&6 s&@'n-"9"UtH Oo"Л|AÒՈNP-څCAׂݿ6XExlaƏF%bhL!K> *YM&bcgT^zquLt :)J$K +56 bfC!t%\D!K*a  \AX,/ڻUfQXP^qD@%?XuIn +`(Ҍ6(.aMI˗yrnY", +Q0Z)_3M34@`ؑf1w B("+AJWh|Pn%4n@c'a!l`A"ZI@yBSL5**IHEnaC(6$s_G8 Eֿs|F+hf@EaiIS $rE֡vK B#d;{2["-30*V)3;˕(,V$fq"i4=2B`d Ɋj|%<\TCf,ۀ^b`9*,FBAQl@p K[\Lf3@Pc\HsQ9.͢QM2b\D%f+6$x/R]/,Ue). 0@ 2q p,D!ͨ)ʫSYK+ƥF"pf)|˫A=0@JdDaP"% ~69yKlEpWR¯qᐴc9+i]x:G!ȜICĐND! PNJDy99FI(4Pu] uH + UI*bƅꐘXU0 C[.{';vxz`笲êCcX?!^HE=Ҕ"K@ާUI%x6et]ɨ0a'xZIE^698VUPD!AdBI^42"{ZÍ]3Byy#Ѥ`92K R; u:K/.dfF2$2|zso)N='S #T{cFn1/zQ{BOObmq90R"K /!]n4U.JB84@%{bC4D.ApkAN RsX+J +ʃ?Uf>+=^l:YOYV.gQ9#9E U'UZ0%$Fji!}+-ظy>=t_ՈSa݆6zARR2طy|G#O5i7C}щP~Wm߯A~F*|?%PҦh|4q?6?E_ؔ;!ʓ/v;1{iRtN'Ys*7J04syP\!{U~$D?o`c@~RBgLXpKD?J?"2pЯIu}F1^6%=)qRPa尔k2 :+#Y  (D]?T2]@'n9Ϙ_!f=s 3c~U_+5@7*.BJ-sX\h>FE wT +bL3@><-8Yx)2HSU?e4@ 6FsQPh(drn) 22ϲrY,0})drWufQJڠs]$0 m|o( v*q>lZON{,BTe$PIMV5@`"X!RS]; +^ˎ4-90{;؎jȜf8, +š'4@@;E'& JZ&| Hҵ&޵&+cÚii5YOVV"0˦[GrLmEM3Fr0Y3 h|[k%pf;V*&yap6ףQ`\b Whi ueI/mSa^*t_GpE#ӖxSLf,/^5@D=Lf zxf@X9̀ե/JA;ra;r[ +f>E܁^`ӱQǬ% < +Ae~P6huw?&lXH.jơ{v"tyxTT:l1U8ppYs`rczz/PÂae +tjΰ2QHŠYێQTLJ)~c;xG<ٱÈp\c'm'(vt\( t]T tN j`r?EId~ 5_u"Q9D=7'TQcUgCV˒6}Fp0mL< ͎gF28i)A[8ܔLc/F5#LJTLڒ,D/UN/iqӡ{Nf* +;JT9"ċp"R7%g,P p@}#p( xޢV|dPQ 'փjMrTgY>XD/pb}F.,6^.IQ#+,Ch[j1f,LA~$abFJMQ̰7{N:9idl{f"$>n\Ez=GT*z3 +!]k4R¤HPo>8ʼn7(Uw.<4@gDvmB<ؓ{akНuuA#M)!=~&*CBg2ol +IcЕB4J-qzxRHb/zJ RE䓩zFÐLer(1egم}RR5f +[^sFX|* pLԋ΋&(],LLQ6Mل^6o9G:c9?@F+E:,IՇ앪Ьlչ=|qNerHLEua6wgpslwwZWڬ<9yFmgWƃx4@@ٜ$9#>V&(rRBC +L>ŋq^rm +wt"-'JԲ)|~Td4@hV.wx>ܞ{`w1xGsD8kd #qBJMFpSQO:)u!NNܥŏ0-dt2!\15  BlH$싍_ĝUXKr_-żc˜y%S_Q:s6IFkY:U8<V\q x>hKmb?o)o o&aT&Bg82O Y(z$ejƪhH/"WB~.xdx$Op4" +#L +|Tf&& ` Aiz-7iyᵶ.?Um?pov#\?U9oi_`38Y/sj\.a7]!5@ɔi\]| ׊dԟFB̐Eo~?oIo0KO%$g/MDWqU'OlgʧL_M!{瓰/C +b`e.$K(+7! ۄL-OF-;K?)j`Џ? Q"44@=.[HqB7d!%Մ K̇Fԓ ! \tנF5|y@p~t75}~ZU8K)ߔ O  +TZRkG[w ΙˀTjxnM-nAϫ/*K.b](3xz[0 +¯b90 ]i3u2 D0[zPL q@SU湻qAK9fv2osIȿ<NA5@8h:(\%u*T{jwJ񊹾~eu .[l,ֳ6C@TچhSW@IE6&SM)7zj2d%ߔ)4 .*0"A\ѪR's;QNJG'pAC V+L^mpz} &l2gMPuaV1P· osn8A-'c2|X'(&Z0vE˖ȑ\=6fq֬V$We3/=8XYf!Ym|>.ME@+0lQ:!=r +j%@PW?M~ C̩E)^y w\7= a:,hUg dvɊG MBx#)bHRm~ΠrC 0|#"hG2oiQv2īW@؁zuu[Xj- 'Ȣ[sf2g%LP=BpR:QXSF @Ԫu vy"D҂|Jx %4 jOuuq\Ӂ!)M[ݠ{,l QI @>wg'H)Z2è\϶Sm s`/& 1.P Ƀc 3ΆR(T0H:1c˯ˡNe +d3;>,}9?!!Zcd7 U ИWĪȨSMX}>LHʳΛ{ShXϦ$R n P r%1$| =$_jB0 0" ņ.@N$9eaAippqJA4(܄E&ރzJTIRx&k .\ܫX}- cAD8&,LS!N@b*P4@2,P)Y]X0*h9UG) +ó#"r0MXHlVHyBA}D{ QS_caYin,w_qp&}vX}hDDs|r D)W-7\$%d8iqbg+%RW[S-0 g1ܚxaT^ ÎJz(?i#R20'6aѠT2@DD&byv h6wZQ%h )ѭN4xj_wx  H …NFwlF Έs0u/7BRD#FbIH $z\)@YZKɭ|zUhբ@&eYCa a_ZS.8MH+<*+ F2,D L.;S`YkF)x]d ֭\U%?S3P4O,30<#i`'lr 8vĪXiΏЯ*[8F1^2wYz^DIJo՗Θk ͰX3g ޵䍬6l9ev@Kb(#pNSGH&#}E&I)\@љ*J/%[ϗ/#t_yxd_Q/Db9*E +FKBNFѮ:eRΏj9+MYC"D $%" B:%|I~ 9RK(ɄW ZpgGiL3UPB]Z(*V ({ RI4; ֆ.- yJIyF9CmH}T߯tv+hy@r,|{LvU5N\#F+[w7zhT)HF7ihW>HFl + +_ +b߳z^?[5r?5r__3hztIՊ()WBH8}P5@@MTҧ?i;~M7,_P'\MJ~OඟUjm؟y0Oia? NgDd7l xuD!.V(V>OAgaͰ{~?g)_E\?֯V++foWs&͹gk5p ~ z} jDUEb"8|CzEAQQHb0үۓul"IIĤ_~\?,),fI;/YF!q~ +*nC +G{AAȴ(EW2&( PS ғV?I0[xYЇWgHL\?C /;"Do,vd>ثp2 PGἡ\N [ +J)TsZ `Ƭ+#hIBhۛZ OW4Y6K@*dyewl L& 8f{4ZSaBFPzۨ-۾z-$_6\)\ةWF-_4 j h Rcr.6rNe9.XM\dr.5,ҩ]-SRhvʏ6v-6sW> C6HN5@58 +2;CBA΄&L'#6WA2fH+80V+HJv&AimҸJe—GƩ 3Nf$P} iLNY"*DHf@\Lj [4"0&${22|4٘ς83h)Ig% !U-0kML@'/-Za@ MF%iA*}x" +3YfE*)qVQH>LҳP$V4L;*nŀbю/UqN:JѴjqHvBU>0TmFPd>0V,sd)6n5/ͮ5SšI2IIaT<_t8?%U(K/YMzv +jJlwZO.fC۶N.iPu5@.xN.lW=+>{Wl\h-1_Z0 yKMjT(ݥOѥDK[ҥSH5@@uTwe:eU9ˊ&n ۾Wժ %MA+T'v; <_,0> +d |kF%)PQ*+W{J FD컲ZP~e\ +6dlˮTKVj.V %¦L H+,J= rir 'I!=)J(< Axnz׉-zs>!"YE*geS*g;e'piu ܣUjtJYxF+9W(:,3buPi3tqg4=FfI]sEa\BNWYP- TD|#dCVh36,upKd/+ ЋRبm+* cP#޽8%G$.2'f0ZߓF>Wevdz}"c u NRGe==} &?b+yQ[,@` +F @˴bWoCôuH9w8( fqO^ ⼺vljMZH} Fm vhZP3L,  $5(9{UE:6Iq IЩ$'DTi NŅ*(q;0-cQa#NGNZF.E6|lIbzo6*RRqj :tB/c;*4gNTC|p?M`yXxY7G`Aj(V1 G- X/)PZ^x*;iQ?}3~6?;;% vkA0ؚӅcӼYz8LH#Z#ewY$YT?RRcF /gkVò?ԈQ@q1‡&0^Ԑ#s\ɠLUfr֯7w<a1JnDQ +Ǔ+(4\$8 I1_BPZv:rtB^QcBQt{ÖQZ]Z\9f$ lAMbUYid*4@`3 G +$,2S`nvBcCb8 X(FqT8"+YHH;9ԙiW4@`^PfeF-edޣGmZ2Bbc| #UYu0 8lSwoS +DV# UPSdhˁIrB,i0ͼȠ髠ѥMA]ZYC}mx^;=(|CeP{ !Z=p]!"yC cAAۈ(Hy|0Yxh ++/`:iȺ]_zFJH, 0!uW(2xf +GqF-vaBVٛ[w3f7!C=1FPTԢO23~}4 x!O Z`z$aPm%.wBQgxF:m2P=F{AdJIZ9l:g8݊[拟GƋO#֢b4K:D,,Bj^% 3 턌I1kA]6̈9.psX 휺4'pnPG"dLQeU؈z~΄.}.^E \|kzѨ1l- g$Yh~+k !\-t^a?\q,""#k0.U\V7\0c$eL L^VLuV9 }v^V_<* +}43:l(.kW^_ + =l2 rbI>Kwˆi"y3Ve kS403[dCGsy'\\CBVE(=S. UI̘3át'av님*5|r-`ɍ (oq*?Q'4?%5?rX|=*% ,O zF$! 3 'sv -Q!*z:.zC܊#ҪQbj^EC 0él ؛E(85x 6 ZtY:j8eN-[w_%&J! @*l"/{&"Fx]o]g?")iB(Sӂ4LL$ P:"e&$IMH )$ID)2).Z/R$#T3&C$2ς /)PրiϞT/D[A:Z\1>πMdMx>z;B[ +S[`A'AʩNLtyr,Eyr#dnd&7&3E|3YzhD ŪUtU+ |kSnRI[ +KiwcwQAbhOiB̭ucAў\oN"LK$,4xiY,^zq(y)+!y8)*ժFֈJ po?f Ϻ+BޢHG]n.)`S_?J@rwas:*10CTj8],+ס#,d7UjV$Ba%2ڶ j Ƥ^I& +@5@mƶd\]Xi̩ +!x6 1&i,rœztb5a[(ׄ|OXs[ǐmLUTr:Ea Hzm$ MT1#`F l&#T+H[MjDIVeᜑH*TpARc@Owawawan!8>Re; 3D"|Q9@cSb  Hȣ̝| " +=J zEa9@v#Ehy  a@|yt/27sUC " " " "ћ1xvDhn[/C^n92)30YZZˤ:<^@aTYt K$~Sj XEI3th*9 ES>0\C,[CX &'>_6\}p0yC/rnz< 8hg`ewVb*(hQp;"n7A1icaMt@#ˢ$"?`r(<`2rhY-?ك}BAk=H<x oQ\"(%YSaG/m~ak#n2qdɬ\Z3- -~"Np֙C%#ZQXt}T<6ݩmC09X"C*N +RIXlJ}רx 9D1I[I0A{)1a$ + ''NOtJOt㕛ĆբXPA3 +7ѺٺJI.wjOG FH)wJgɹ)lpP$A*0)hh`X3Z0l3*;B0BB +|w^p"Bp(RkU:.U 2̗5Up^äJD"I,Cqa+!LI(4'-#!54bCe'i5Nj>|x!ptb7ȧk"E!SCPhrK{@<>mFj8VXyh0 CՐ8)a,Snv"TbVw:k TS "1))4@`H =DxG1+1(V40Bgkh@{o\qv ptbH :>D9i<XEgE9G8t6 :(g^uB(HTpu]vB //ؼo9H6=G`#mD3}6j?w(r* "zG H5ΤK"/^J5}e0Ei!O}5ZB1-z޲r#( /J#ꥐӚ6 {eJ1%a)IbB%2A̪ +(px/BPk?Q,.PR^|TBEꓟ79 >YZY#~@my;< qoe*,&w)pz +ÁdsI󉖨:.^dtޒ)Q`pp֏^w "ԇ@T`O:% +vJ0-LRa٠wFQ"T8~|j1(E ]Xb[jю$) d.{44_,wh7Fi4v}i,r*hz/hKBLm*;Evԙ7CRN4.dN X]x;4lupze4@A"Ki#BƱ,cfCR2tw Zt(yIaĪkȪcz]&^@< (+0>]qp +ZŐuwHrOxO f Gdmz$/236bUPZvG?jLc`>j{/s 4)V\$hbTSI$vZI<\$bC= -$BBb1=0B9(/IJC(4AM«dTa i`4֩8v}tJNH;Ŏ e##?ꩍ⃡ 6rkhFkЦZR (x,զJ@¦ "Qc_fta0FVӁZWb 1%6׻7CLԈ}ո}jvjީL""qJ A: B晪('xT_WSZQ*0l 7E*j$o̗SVa ^"sHQ+1pnu6\Qv4SbmL6Х! Q{dȆxGBA˒ +{UI$UFܣ1bQꔧm|7z%ޅ4@@H |$FY1#8 ;`ʇ2Ƕ*> XRKk)RǠaEMbv6Hj""rJl0)Q.]&`>Oq9ڌQ.^(n?Wlz/WfF4XnjO +a}`lx)CWZ+/P@N35e75@ `cF.EhDEхgtSJiɷ2R]Ɔ#SZMdEDEĂz$ =&7%r)PPA@)YJ}HXzu:&L7l,`(-ܦhjpUYBcY^zg)+l!n5@abyY ^Cwz,kz970zC玻cx- mHh6pV"&ʻjNi\JB[bO rZm){M, 8O_PB>يhYFo@Qp6]-:J7{y8FJpQ}+q#*qWk{7!~_d' DBO?wv`t r茅$Rt=e!U BEs'5:2^.ؾX'+Q"EB5@͍dHBl4dЉi i+yb/8 I1NdX!?'^xʋIOCsM#'M8KvUKD#)}K!1ߙrv6B9  )Ejt7Dͧ'0F0S4{i^L`v865afew/Ύ6!xmdy]GZXTrD".;YhݰlU~wͷ :GVQ)4x8(a("X٢xG L~^P*J&[,8¾Sߡ +-F ҁlbKjӚO2y4]Fbz˄LiʲR +YC9+ǀ*zdnidRi)i?G0ho֒?4X'C|yRGSN_9s Du~:Ue1 ٫NAk`BTH}qR V ]U(R)?) ڔeҔ_qTBT*6ʿzO1ԑJPg&4@@f7H5OZ&u'$gqE!321w}Vh 24?أ2+`gz hmwN5d+ʑJ",/=z@F eS@!U_/1{O1iR_c◄H7(G+݊>[IӭB2gQ064ERS^6EY},vnA1}/t$ƻH)//S&}L`'@w!EF 2ďW8^㥡~8Y}1+P G}o6ph=q۔qoFTs?pL ]}F +p_p~A+ud.Ún^JtEN-axQUp9 I041bC9n7)mߴ m?bmϕ_ Zj}l_{xt7yYJ9<8 ˽6;P&,A5eM += qNh /~60"Y>KsݾLEe}ʄݺq0E>dG̣X-%8mD#y>-$(2ҡP +es9$3K bCyx{J "n!5@@V[ aX*ʵ)7Qו sD,IaC5@кPA 6k;Cb]I5C1a$K̫5KV*DXZˌd^\He}G5Ljh4@&ʭ;6@͍Zrņֵ72MbPUʤL]t6l̥֒p`,q95) X…"vUKCkATCMbT( m&[%rK-Cή%h(b/Y)4W򙢪Aat7bVNAUp,%!b_683me"MA`Lȅ[ #!z *L GHTE$ [ +BKY 07F'T–pCH@.Y Ix6؝<^Nj +Ҧ#1x&ぼX(:- # j(kClB?xr9#iRe{1LeENxz66_Ɯ 0Qϡa+,&.'h=Z\_Hb $ᣤ""lPcq: \F-(RuVQ0W}DXKM$tgo9/ydA n +b?ˆuXaCM,E:B 'w*w9k59p$uD2NW"I$+t9aT9,pΊQѯ3XJ1b߷db 2S ω"W7JO2El#'K$ HvyG$= +cGPS" ىqA3?ŎQDQͺiLVz~jz:~arjEr ѧ4ML"%s)t,)ab+Nى*|,jjMWhLj:Zԍ5Kk!l`V*g"qM W[ +4[Q=w*4F 3uzn*0vN VҊVuyݦ^-"ImioRɮ<AsvnA2Ed s  ;)"%uH!M +Iâ(U"cw[wK 3_BaL8]:a0+1gD^p'z,h=w|Y RʦCGgO" WDDh JCH{aqм/m܍⣸ЌQZ7,^"A5kh"gߊ[!"x8*O ;JVrc$\DH;&5 jLCUuu`6 6 +yD(R %=eQ@`°B [g -"Bt|h tjKi+hB@.ņQ놂ٶ1 ZzBڸME&D!Jtx+2g]^¸zQȈrݐQ;~q$I` +(.sH="2E` < bo#xwɔÂZ2=(_o6 )6s*w&M+DHtEd^铱 S}+hR-ht^V] q;S)1.cxZOmJ8k3sΉ0ns8,6Hċijlj刐H<~:5|nJm)8WV*!4<2Sw} Itҧ59T 1N@ + +*Œvߤ&2ܯq 9Zp?0gu*ؤdCGH-(R Z&t˹~c{~H]{bq5[?䂭P:hS5h-$]vxW)SLpQ $ +܁~/_sDW> [35R7;i3->o&֩lwNHwmnrBLg8mL9 j7m,0t󗯃1|`֙ߴMYkڵF!\Ϫ#Amڕ!6hBt?p?$1K,L~ @<Y9#ANf?c*_E$?׈@Ț((ǧviV aM6ak)2g176% FF#ώ_įH("A{H>9.:‰\]%CQ!".Ez]2@}{^bwg9tW2qtia3wFل)05L)HMb6W0{#tſg1lD}IT?Cl74 M(7?MA%Od[³)Z,&ઍ,(cNS0r[LZ& s AT.nRyT'wypy_}3}t F7gKnku +udI:{2b&r]ʳ:Ր0T1Q}P>oiHR%n8-.tgiR>#-y E- +}R\Pg }.vp<5ݷ'd_6SP>M P +X-3\qrp/2+XQcd2,B}D[=2DY 82g=47/"/g/4~n* pj<H%{U5nrnSB[c#Z с! +Ct iiiu}tG_v`ĩ/K1!ej8YJWY檦$Z 4V-me4x V n;#SE5m,K.5W/`:Oԥݠx ~(da6/A/ c A6;/U寧=VS ŕq݃iZ NX"ui̇h'zhqrEX;kX hu  wĵ1XT0Z(MTY7q%$QePj0{h{hbnkEn!8 :ȩKs4Gk}HnP&GR%Y!5谉CaX0lT f5ȄݡAb%ƑS) n󺀸:eejmZ8 ]*1j(̶ʩJW+l-f86*s>y}J uM5Z4(JH ɡׅik༏\=GϾS.ހփΓ0K`. +ep(BI>UF`{WVLrͣ>RRϟk>(ʤ1x::,"L(nOY?98=d1xcXp5sz(V D]],x ayRsBʇUP n;b1 #Tao&I5ӄ4]4T"a(AB)*$̷19 Zk +zh.Tƛ›UM@c7+A\K\~ޒ֐;g"4 G$rT*ۘS01b`3S[3}0'w&4ztU#&H#je|:VaZd wʃؾԦMZQ2 Q1:L r :k +d)z\n.7G72|\,+ j^JUꕭҪՍGĂnZfN>V~eczxckdx5948xl _v$K +AfDW#g?g!gˈFĮLj:Zj{_p/j1IsF!h@rqAuE$TH#(%6``ؐ$+BF TXgDM9d1’ٚbV^T K/x8~@|lA\VY}3(L*Y\%"՛VWRD[cB p-7LV^Eh@[#>&싏7Xҝ'OBdFt8 ʮ1J%:{460NA؛nP^SX ۋb.sZ7=p ?`x"\y},D a_|ntU +'Y!pҭ5Ԩ'Խ +fbN o`.C&Cxƽ Mh[ +WQh`pw[ r _`a@=\$fȷGHKy/eC@p-,2ah!Dgh^  9cq9֡#oSњN%ȡE"4\H`x,Q4@|`=ՐuUњqΠWfzl#(JAX4k`&!TcѵG1ۏQtYW]D&ˉOcaBo#S +%_  gHo3d0e 5 Ki` aN$@|Q_afVQW qFgvJ%>|~g~!:s#w[.A +^|^'wTs?7~>fH2„ q9҄4a +\(01r=Q%b1$^𾋃{_+VI }} ` +}wx8 &u(g$WQCQ*3DcOF&tOR]kht c)6բ FFjkji:6#I ˜0<63aǤ‚8 < s=,vLuP]BmN(?$t|l/$ϵ8>e>  3WB(or*{V8yD^CNa/Pl~peyL2] &B#R  PH(ka>O} ˶F|s +04MX=x:oI#HDπ +pTzPTz1TCT@Sۡڟ*jU +:ƈIG($Jr3Wfܥ +Y 9ʆ=O%ڧr# G&ZYVET{|U{qxzѦQCH%Q0%^0:"Jcd$'y1$"G/ISj^(y6 U353!8-]eV; Das*BQT00&h.d>rEDip p2%8r-DNR-L#vܝ>?93C'>" Uj85 vJ:jCꊾ7MS +c/,^D\0 rl -)dkR($eRٲ:u9* iS%z D͸JQ +Ǻ5&{e ]6ŐU4~i(C "cW,ƒ 7ʎ.OꢒhpRl\q2(wYKNHV[>|$]EzZ3a`M!= za-E8qEU@lhT0\xpyL3ṙ'AET`CɃ6q$bH3XV hi&al[K&{{9Vr@"\Ftϳp/r5o˃g0jbcå; +=^eBɌ\S"D&ؒKJ9tZPAPI42VIb avOvޯ'o:gX .flD~90(3ꠗR *71POItݨ̺m+B + (ٓ A$a\E ġp0t~tptwMV Fb)͊ +鸄|5Cy18VX^XlDnؐB}0:gL{ch+`RIHJ((܌QA3Fhq|ED0]\!7v+2NzM[!{!:\|y Jn leu 0\*"fLP6n"%!JVpπk@ՋVD03To05 Hj99B"aAyHcwxfV  Lmn]Tdp{74س-hW/c$0/Aǭcu+JN99PEɦ!^ށ|m%vE +v +0(<ҀGж8 l3Td^ [G+*U!Sz:! 03ǼE}xylFcD*yQV܊İoWsF= #bnA{²rܡ^}|ꄜѼJd$/B ~9|$gcþMZ'k(^(˂ ]u]J2V@YNtѴD-vi$qdn3Ǒ:")ARl(fGj+,Q6.Cb,0s;Ov읎P6 77jtTǒK? C-N4x!6XnlI-''4/fFeM(`Nv2xߍy%Fy>.ٸ0$H2dOd`#G~ /0r"$dŤ, |E CorXE#<죀W-9by?p_#1_n~R~+<+p$071((%mEih+ _~؏ >1I*cUT;GdK82n%ub#8nYH ZwQ9P(S*+e;oӓF]6N'/`ny0-[Znjoq.TQ*a(<&r~9d9*/8A#$8/o1J̡`UT^}V#t:v^\Z]2E9P~f.JBqQ~ΫܔДEGQsL]a*T&N!Hy_|lA\g'D\J?.j+i=:+DUQQsi9^pgP7Xefhj" b|{fFp_r) :Cз$qe+ Z*?(jV 'q%H'sDVF)ѿ^b^+ϭ+0X{^X]m&.7IKFH:Wz~}AFGmq|wNC4pĐդn_q&n +H[ Z [ pyp(D VW6D$Z I45o<6ճ(:eo![fai +ɚ4޻Xx2!y;J'ZWMT(YyD[=ID[PJ^vloBcھ֪H)bm\jP䟗@ ^V;ހ|p_UG3ؒ؉8R$A3߲K/m&f[K(Ω?1c|;?G*F&b)VKQ¹jq vq4@`U ҈)1/'i0p1gaY\@1z/ +_ % cܦb1iUlHC/ + d1h W 0842L y'ziXTǃ# flJWyC N%th,jM7ƖK;qDjn~G1X Ud2jmBh$Ҏ"p݁z :2د ?F0p$YY>as(![!K$b) SJcd?FlCG2HB+A"֧(4ICiH˫ pHwG_.FQܱXP(޸. !&V|VH(a]PŽiS׊=Wl>F i|DͲYv'4Y RV _L&a%hT8GȒ:UܕAT7u|{_c1Pt+z:~cDiE ű,Xj@ 2cr2"}f;yy'zifgt7?Pz*q>]p"2YOon{iP%%YF07L kdP|&n/WOئs'JFcbO>%М7P14T8SlUYQd#`"pZҵ +Ң}>3/%|,4;Iz/ +űNL(MDH)&8]R/T4ũ|Y s V+[)N ȶ(Z ]M#\ J<.^ =+=:G {)MH`(Va:DK$A%I2ZFXZǪ: +:A-C/Є|aWot!NkeEzٲM\!ȋ" +dVy1@0JPUXO Ph+ VuϤt'OC@KE϶`8 i'd刴CjـmGJpfY'&"$Ū"I(̹ + j}B>. ؔYܐ,|㮼Y!:!QG83!`wK\%YfQ_f>V~Yͼ"AEeQza%0HP?9L&L\㓱I#,iJHNΐwBY=P.塀/݂u[zgcUaUb9CB`=ZAPFtu&aXu,AcVTrV"]^źr +*%:6.Z!1-”t| oWn-бS$~;LCZȏjFT XL<0 N˂O vϧեO ZD62>$/5KLx:="ha+v,&Z R,#慴GpBFMF=ՖuVF6^iF :r+0edw4@~8?g4kϹnr **?I0%ؙ=<2AEH}g\ B~Dvr8c~CUN!?iR(Ǥ&aWEFcM*OTBS>OAZؒ6rQh B`Lj:#~ZΈEOĿĿv_/7#OMu%:NE?栎_KFu <~GbH4e9f A9NMTv*4.C]IeB0xX\qB\4c`sF?Aҙ,c^+jT)"20ci/o<'h>T HVΑqPi,2[7zfB:;g\;臘B"w:(:(nl~y2g 20P00boz'H-@CxrWfkdStIBQeLQ5@$08*%聳&OFP;[`s5*Zp+ւ%>5cQ3 89VqyJv}Lp̀&Z׍&L"(IA_eKW 27\:P#M՟YLq&X/\S0gjh5pYin) >ejts!JԪ +2tj\}Yu)(vty: Q[G|4" v* JYPTl^iP74Ezh]<Ǧ!m's GbH$N+dz^#K$R1]bG >KGd ¯$_jFX8ehR9rbP%:Ό]j'Bdpg2vJt%pߡ^\84@ UK`H a@M 0!*|+Gd<H S3GtvEGBxdyU[\DE? DJHPkow wẏu:ރxu߷<4_6 `cհ0A(\tc}' PSC/KA;jX=!~P+122=>)% KbIb`aġLN$k"TT.%xary~Yi ᇻ^4%m)MJ;|fPAv&opƥXq7OeQ1TI+Q[+"&D+- +jL(Z'oc49w |/EWng}mJQĝyRYʢ_P 5zv!`ڐ qܮݸ,aq2J$NRC~NR<'2IÆ%rL?$,"gׄjmPٰGr+t:| +(aGk +`#ĭ$7dh647F+Tҵ0Wcj&wgC+ +iht[5+"+dS'V!n$1JyClBqO%PDJŔECI`sv i Н*\驨_W,5#UuP',\v(0E;ADA/@.C`GTh>AŞBY+@W;0ZyLZ$ 4^J`TIqTIK^I[qO_UCRFuM*wwje]3, Ev{9GkGDΙ'ѧ#O4ړCr#3xnW//*]dnj]EP%j&a"Bd]iwb۹H, 5܏@X9EWY2䭨dt"i̊J&ap"4q$Jg3<_L;$RF:Z "`{SDB$n4@`/e&(!)\kcXw9P DRLM-F̖2)l:UmYcH4@sj$hek>8- +֡)HSf$U> &?=hupmE1M7豊 +Ѩ#S(h(L3:ܐd+ +$  `z| !aQܻtjWrLW ۣJL!: :XG4'XF#M'w>BYDžby;Y3#31H<dqmqrv`\+*l!(uB&yYH bX&ѱEkF3%o9l!A ËɸWX˷.B,q! D$f80ݙvS4?ww+ycB<^m꜎=j;}:ۃx&@lBP"Q" HKKӚLE=y&JЬE Q̦EkS~̼Fr#P\BXeP1EƯ>"%iM 镩ɨS{K+aExXQWME|R/a)5FĩhSe9QC\BNi+J jo +JΊth:`-M]ZJN/ܘmOIrJlU(blDRpk<6i:f‿VRs/M ͩ??u[&8ElI  A4(^e#A@a>wPݹ܏R62)"/{[E=-:`?cF\R4@@aprTc$o +3zR_t ~n5+Wϸ~l?Bd믔D]\V\ ed5&p!kSP?FM鞎,(2~-lfB_ Z, +m~B?O>`wdF'c"]@ 0hc \D  X-5y=%%s%H2)e_Bwt_0w92*L>&H1?옿uRS_i "ґh ať']L#XeAaKU cqZPF,' +Y?9,N˿_Gp(?W?u].?\.Nqr [K(DpY"jBp@dp!dV81 fp)3HOcH?B ҌGgD37N {jgB@61+IW֍4>OiPA5I<.VIߜJ=1%dc_E K<"6 W5@n0f 񋑅B.~$f_rOޓA0Y&t7ml!F|] R%9≙ I4hʢbnNco!7."?D?x0lliA9И@ezbY33Y2 TW6Yܰ(|(ZCPyÑ /k{P'XCiMs{`YWJ QA3%`2 +OTK`0ƫwiҺQ^9(@Wm N9]CqpH94Qp"rd SXr/mׅB+GJ*la!l*gmSx"-6MfG9Fjp[oGم(7_^듹=S.y2M2dx B sMCS{9X5LerӅCEC +*€ Xp 8tXmMpAԩw_'G/qvEvfuzE}53|J|~A7w ,Ta9$K=CHA$" ࠠ0d3Hc,j@N8r A !8p[m=F^:KϋR[jkM+&qXF Z ee-.3T  :觬YH|ʋL]z!"2 rIWm % r[1a + +`zٿ KBzĨck2nfB?PI<fM8N3{};VNjN-n%x[4O15Cn?vms/ϠEahNdQ2vuKII ȫ֦㹑7 8]l1%YRtu!AXaUn;ס*;ֹ4^}[w*8wmtX2S}[ :x&շ٧ }1^e~aih^ Am[Î:לּT]V3aArK)]$Y8U)JY 66b = 6ګllF +2-HRcMݴ8Lշd;@\;pkīRd^a{>b|O9C;bqci çչ]Xxj N, +GlIlb&Zr؆c2PzLrUS0T+)PeHEP&a-o8‹LT&,z&X,Z϶ޯx}ؾUA _ti +(Ul' 8o/Nɰb_6@ן0@g&W7AX( Μhn%QAĪ;[EC Yop";-cFc{0 4T 硉W=L .ML0]CO9OhTLFq١FR/%n`'IƨyL[s@`t<3d608Y,7K*hZE`̉?YoکPJYF/6xa%^XUAc +"2ūEnGHuF/]Mks<)Ll;:oCg/md7a[ʐ7b)˓Q\U:# +2;B3 ۾|R'Z:YL%~yX'vh[y;?3KKUM14N, dHm v1h+ ` !ޖvw0X`KT61YV/3Br+m?'c6xKfOUC?Ʋ2z 0@4#5N}VX uI%V m' #(JNqnB{o8AvԠҷykު[`\y_}ۇe mGE͐Om\rCTWúaN,EM ɿ,jRq0^$+{*_h@-L#,d;&wt5tӶNJXKc{s԰$D%фA5 24e84{&K+МP5V r-.CL7Mhz_>mV& wxtMA`8@gPR^U*_hxJdd:6芃[}*Gz,Lmǀ8JoB \. +d}002g@EFo[+o;u`8g]}[{9 eԯmdocN` mnXIʂbZ䘑A |JyXt<}F=^!IԋV{P!6 n:V 3ϱ2,Ɛ3LGrN]`/,V nAx sU=ɞ8Re"5ךM9Q X0 +Ņ+*`v98_쑽0h@# +fP)SĄNGAF_}a1NHu 9%LY6DbbJ 9uWM-^ 0T!?`=i4[ +T!b12oK"DwivS®z;@9B⬾my շwM6SQo&2MG2&FC4ǘ} M92:L0j]pzf\"^TOz /qiaEBBDfeZo)%v4bF Z"V!bZ 貀ճtP{ɔe!M"iZ&t7rLSOh2zu5dn:3adm9d~zzj| + 5Ex##W,3۪^ofE\4AF_qk!/G:a}걾xtxݭM< ;^zط]pAZ kߖ',Ҟ*KY:S}0 pJĚC4FY_ݡ<_ 1.mc^ ˰sj ઱l>3<,4ȁ7xy 2}@ 4[E@GUF{3-q +XMS$`pѯu1Қ҄Kn4Yu6FhahIҵwQH&"TETLObF.c]x PFbW^C:Z.~!cc$# g2un\mhWäo+\ľ-?Tn\ҷyFjj<4=h/> ?>[z8U1 =PRi䆛*>m[B '|J6`^2!4 9XokFGTV#'˼*8GjS4 X0J0x`uΙx*|*t6Uf8<[#h ]Ő +5H fGK2\c8x;!yE^F k1xiUHQ2HJ 4'}[r<ٸ)!)T6QXKMm380|(MCz\ubTbչ `I*!έԖNML6rsV*F'x=(rimY(ZUoXpf ,n_,kvW_ !fk:^ DHR[mt-껕*j- mȌ:r,Nio{8xLط> +e9(af@lafEsʠ$pݍAy#ֱ6ZL0$0bZ{[H#Kh }hsźҷɼ + 'UbCTt +pTߖmPr&yF R÷97F̖x U9X4w8&;cb /z:Dmpc&zRmn X&ƾͬXΥ5gj#И{eUMϷKv|̕y5MuL4Cz{}ٵsBBݯjf6er/LS ws,7譡VN/In(m8oW6쁯B6Q7|!E=JMCIEKaE{u +~!cV0hCD(Z:ݎD)`zH *hé-}%!}Ƞb.!ˀw1DQ$x/G=J%b(:M Ag5(#CV*U^U9`Ѡu͢,r@A(_.),0+kFkʾ(vJ`A72ϣfp ڌrRT}[) +Zۤ@dJ[}۸GB0ANQl&+KQ^S.0tD!OSTJlQ=/b=Q@ _wU̸CTCՒiuqQA\* Ds/(SԁQXZÃq@h?Zc QFPRtejke9CYL#5O_!}UDmImcQ}NEKG\ +:Sm8 ?R}OB6E*@㌹"y4Vi ^T7UA; ' C^wm9T9 +ة6N@9õƅLAT|! i6Rh pR@>stream +JU(ATTWGT\p LMoF'iDw0?̹> tP(Duc;(09VIH cN10-׽hW=6rJ jVUU1f E}5sJʃjO&`7C+PVohJ QQ! + φkK}]qߴqp?Abo~.T1U2ϼ< 4w7+J|wyHH +c)gPz ~o)U,\@D۟  >*?KCZdwūV}>Ch5 z7 g[NaQ~l +R!Sa9E>x3ذaΔZ +AaK &׌,l}ol[?7.hphBh0ՙk^fڽa8, ]&mU)J8`z/:"\v@6E- Ql୤({A[rj%n +O4C3I0L;lia3EͶ1IѬ 3}^iaҮ 2W&zN* RezRvH_ ?I,AC3 +8!LdhU 64lx. @ H3 6\VbWW)M]]MRL/"ў㎟&z|>҅}Gle=`mYJzJ:pfFH +Bi "l+;lƍ¹R 0&i4G+JIHy"^ 'ni1]2mH(_!zZC$E2\R-Q#8mICU}LgrpM*a#4 \T$,鑮^zx~%~>> 5@m³RazP6 1} 1dHXKAM 9Wݔʾn fF C.QiLpWY}3f2"4,p: x(S (2nxCnHΝ5FwdHD%~-e+Ҙ4+E:Sθ_a2v`QeGO|,⊡"F-# G@AGl >"^`A0’ g4c{ 9\1r122Xeb<1 \[ YF%b|P()0dSJm ̋Wc1NG9Fر,e۵VT|tWo )THUUKkEYe0XYIu0z +F9tqzPaD@&VDf4]@ ~ vbVFdAsZEz//C =$ɠZ/y:E Uj`=}پ F"#9P)h +jkb]]|%5$7{1V2~ PbNRP;4];kC1(MpvWeUTu^",Ӥ乸gM.6W8,aژɴ8\x{b(,tM4(!t$ 1y%"c@IϠH0,/ΰC`PeUyLz@Ã$GRdd`}F؅&*ɪD'QDFұ&* ȖYâ/e`Ӓ|Ɖ&E1TR8"h~"70D?RAO` J&Y%CA23^c[-#o*9D7DwWn.?ǐ 2Mi~F`S60^5Zsb#.R4qVY+KU3OM#tb%s8HM@C@$Y ]CG e˩_?&?gx('jD"'cRhb'oP~9_gAzhRP T ~e;L-8/? rн0G#;fK3@_ &G"FB^+N~?X+/n_7_x?G쇿9Z ?;8߼aM49֤v(ND:Ե\,J`fumpLlˤT|?|IoV߿T/sJgտ/ﻊl}3ξg $Ciz ;pγz4H 9Ʉ34Subլ] (0l"a?*r̓pߞO%oV},) ߝsX˓~ߵ9|11@nZ&1xJ;. ֺ8d8a"w n"'C_٪Kh}<{߄/oY,ۯ[m>l +]xUX`RiK rJj1 πT C%YyW}4N   +&q/oQCP%P?w_6@u_IH:GN3Ĥ6t$!m\̳s$gS(d ll0Z:EGg/b+yx 3FHwҮ.i؁ײB}vp/Q:7as2uH*TLH(n +ڝ`# wcKqi@nWPhn 5ZbG½" 04) +^ +[}p_so(7:wk)k +cغ`&8 n 8p q#];;FTt!ŒI\6T NF ֖)CKDǡ0" tB}MMD?LaIޟ(i;qBez [ݛ"p߉q:v/gT'gJ|[wsz>ey"]@㜚L A1!QRwY$a; +.Z? ?OտAB^ D zsk{3w=$pg.2ϬtR5i@PNhꭈ;H GY4e]0>GM0uJߡ. AmGbx}+)c-i{.2#:J⚅.a!{ʉ9!K*C\ 5f\CGڗڼpG6W\EWTZSW8A) QDR&9UB¼l3tz Z >jUtnkK6˵ +X(yS&u/:}Ic0v}OF2. pG<9@e)/S."dFO,ial:R]= %¯.$^6P涫#6 {R"̼9~'1\﷔4 ?yM~^Z +ܲ"t:{y?%D}`V"|]4#d:#d(Ea$} \9CWPKPnze!}# LcA*>WDU:!_ffvHyR,Kjq_hwse9 ?%I7'|>j":}I}ahx.s٠Ҥ%̞,o$Z,ujO2)5&5ѯjue߇Uythv(N``&~ɢDNY Ơ:}o/䧠SooDaWEL#3c:;%¾=y‰6zfṨ}ߠ lh^`l|?qߣ^ *Lq$̈d0+jՍX3Mm`Ѭ}OWNm^&8r?F4t)mV DN+BNعSre;? bZAiCym뺤NmTg0al{9r\x!vnWcP=厤YEE˧lV,dSb{ט-,[ÔC8R`>$ D(q̦In|"r1f,B![=; t$? 6j bJ:KyJ@n^N-,_O +qBl>䧠+( NS8}YEKԄP!óSMR8EwԘy["wڳ#kۉ Ti&i,>hm<*l,RMҷG)Yt;T!H7Hlj.'Ld /YRbl +=/K/SVŋ R\]@h 8'w$&#=)t u^!{l?؃̇Hk4=0Έ䷙i`ilM4dHI +o%EOܾiT{̗ZA~5Lٗ,`J0.E''ADy*c !st V +N_~jŸuҁj 2 a[/9Dp,KJp(Fi*yGQ2 ׄQG#D ( FZɔ)nlJyMtRŔF4Qm'Xx'ԜdTY=iw{4I:iDQc6OA. (-wAtAtA8NOwA˻F]@]@@i]@`Z<    :l[7#O~17lvc9q?#} +(_Syۦ|?FSJu"OOAۧpn&XH!1ZSeuApggLh#CB| ٣N21}X~AxjxMލ?rx1=x.*?0)lt:D~cE 汫&EO릠^8&Vvǣ"5龌u_HuϙtW5 +Wt}fuǰkY_tO*%QI(6B0Dݢ^df*{ZK RN\c$; ǎȔ4(3]}k~O@}TG~\4 I}GM}Wu^;na#a\lR|gB990,46i:HqM' /DU2 _RcHV掱gb蘜XtIlP(?Y/4*z0RԧuK y踌iLqW.v]i8F͈vv fl +ݮk%b{WOPӑ ѡߌ4D# lp? )>]@D6V>?"_ŧrǞ sth耓S尰6$&t~hzB66zծG6Om1nÆ?[f*mh. X񇦓BPCAEDhz@yEYMP9Rg*gh8]@) y6(>U5,aJQ۷ Cs?u o?y|g3h0Gi!|z @Tk /Rkx= +3hHιX| po@C)dia*C8`X|;:Q$ bhz&\ߋDnZRr{| pDSrNA4]tpo}NoGRM(W`ybNz+4AgP(-At5u537|kЗG!iDA]d [F&塕&t?jEӈ\Г7RGv'])!A:<%1˜. x#˘{IL8@Ţ]@r.%%}vtSF}L. _b=$&rN)J6F)>`H $K f'ՄTNtA8۠  m< FSf 2b((NVh/tz~eѢm`IxNXRz"lmƆ:*P|ޠO ,b (`^M-`U $e+qQuz0w +Rڙ= +z(etbz@?. XXmzhexEٶ&FKs>`pg`!駠rA>+fZǠS +ƊFA {GXA:"u#Иܺc +UPU|h&宁F1f]@2 h`\'iyt)dZvd:t8br-囥;DT<%W`T醛(!L'B]wF,5.BU5Xu1&hߌQPT&iݱT|F#:C !CũXɠGJ&8Z\qBX[-XÎOJ%R0_+hVLMtQO2B"\C0T0C +2@Z4a_ +~W1$[|0^jeoŠ +wAbJ{>x"ێr(PcVh6L6z$X2躻'z]xc\&ݚeu.3񕙺_N鳹U[6ݦkPd-]e1KyLEuEzOݯخ-[8v=*W1Uh+u&kpSJM GFٮSttYi{c,S*:f@fͳt@n*SmJ7Wmos\1 pR&LW̔rz5tSs0@*`E5vW59UusY&.ΫL=_5۵)S @OvUhٵj7U̹õe:V>lo])~up]]S456+{m^͹5%fG[ez f(Lz:y g|nĩ]:PSӪf=)eG֌\մp0k@|@lV;.;0Z5{XѴwYj^к 0W&N+89Zvش zˮVk9ilњ|^QkJ"sN sJ1v p`\i:U{Y# 9u>z5}?vZON:VssUX=)69tQ@vjQUM`eu>#iN0S9u* u:Ǥtw +[,rwutYnӫ}{F~F؍eeݎ]s_kvKa|&UslN(szm {o,;XLk΀};uZt ͺ Aܥ"-^hi^ľk]s\v7sp`4ޜVu.Ի,;%]瘀nвs,0}wj^7tt>bLݯSw>U>`nGV*Uf-g!`|zWՎs@|ߤ4'ηZP6fhPݮs<l0q@Fytf9&`ijĩ a/tH`5. X mXꀙV Y';ߓgBhRI!ćO0SÍV$+nNǡ"VN4; F),H$]fAQ/L[6q*lBA" +N"σNmrN)#b79%NDxhǭ]:*oWS#\0X/ +>5Ҙ@A_Q JElxó)h-3U=\n7AÀ!l^7;S2T^<Pm BU>#񅩄2`170X^ OwC:7<;cISqRLPnCkbBB!#($#Y*{~K+!Q$z3BxNȍ!]/tɪTgy%`0[hcQy"B`ƦYiHbdbB0+w  +OfP&q2 A&6ud %(NL +Uy`&ߎ̶)jYȸ~+R}: $UFdESJ?rkGH@ġa6}{\t|FڀRdjA[tAaH?{z|Q_҉@qK|0@q +.zlL?N/?VeSB +B(GA/B~/p4ߍUjɻ@dVShn6ۃld+;j-05T8c"R9p%uhVL1#7VPsR*#*c}}j8.m&eFk„!ˏ'?&x2/V`B ~dd)"c*VeF1*ar(QV +vP UÊ>>}8,&]@0hd,\C0 ,:W㧠%8[\Yl#A.(Z=c)脇2}RbѼjR +%}l;RsJK,U3Xl!Y(UM_>N5*K}iQ4 qte5?o(jsZRF_NrQ!4~I;'dz@ $CtA Ac2Xl5"vBմ5dUHr1PW=细=Q nhw-t5u +(dwLZrA51,:'ϹPR|qW4>3Jm:o |R5'q󭷁ew3Rlx$Dx5C[kJSG$UxEq+ &_!jBR^uXBHխx{+}o$dU1*`cXaHԑ,aio9&{j dF*9KV˽"R>ws%*FETxNȎHӐ;PpJaYWN-8NU[pYQV: wN' !r ӑA#C^ӳpt,2!+'=;SR%#HD-"|BcYr5 _d@ҜJ]FLvA])Ė[#ﭣ7DR2?V֙9TJ.&A)^9]2Nr*v0 +U9䤲0󣛮5ܥʱ^a @Jg˜f [XN$Db JeaO]$kF:2M*<,\pW PR=V")ɻD!ӓOjŪ Dw)U]tT8FuFP-0iXZH'C4CA݄S㋜S߱¹5XD9,4ơnR^` +l9@\zX(]5Biu)>bi-miA-::rխ:p$lTH+:"5k9JeJ+.ƿRQ@ު=*ev / +nID]؋To 6eh<笤4wafMXY Ht@Ti!ק+UN8V 18UIY/.TF*R};& J0vq 4:ɖc ÃYtA"\QT|+p/IXy]*Bȴ zX/:fiP޺XEoW-2 1Ÿ%F +O4֡FBp+z'$sARحp-;lKNIK뎗V&oVP  +Q`"Ӈ^j'G9-)RHp;+w'+:vP}fS;/;~. O;~ <Ժc9M+TjrA%OC~(C ,*_օv#и#)AsP9? -Wjݱi'uuFvǶԺㆂ&0 z ޱ1L4C][(!ũ bjn(hOPT/_lxt>u(Ew,Zw<:jEljJa70)N,ͩف +T$ +]*bFGSASrCAPS:QЙP+B$dž90>!(ׁEgvB'zjB'Z +11p5XFc5/qCAP2:B+sJ/iJ/i0'jR0'ʗ̉-,ccgvsla1E/yR84. B AÃ=JqOT2WiLu 2D H(NP6JQxz")Z|&Ne0i 3*K)K0BZwg+(/4i( jjyZwt[-2-T +bq:=N4=纁Hb9h na6hUȿZ-j2|gg};ZvuBUC ̥ H*AE9Zst\)*ijx%ѯ2ޘW4vvuGIKFƷ\~tŇȈ dp>湷N3gPhfv ?LwxFNWCЋmUc*i :HTS/Y_FIqhjt"~g,UV8lPz39#lA1: \kQG[%XϿҒ)B;B2rBA^B'K u3ԫ2m?5uD# +:b('eR*=Elx+n5錋\ᎌC 1V6g6,~R'^Zk~S1ݓ [rn #UP 2!Y͌lj6XRX2V|jZY-eif$uc< z@O <$!Y +v@PGC $E:3wO֮a9|e:c8^Jd'}['*yځ[%'.v5zV +@UMQ3Eo5b cl56R&2dX + u#S 9Fq,2N|.+L;dE9JyNXB,.~tbq)V ?mkeSXmnF +YK=1O[iY?9NߘSgSLӡ#*K2'Cmz2I1 +SSIvMBΥFJ Ț'PfiFl)mNAڜ6N-eH3F"icUgkP<${@c;ܞs{:Ŕ4J~{nF_4Jh~(HhTX2,Ю@AFw@AXmFeYaOTɠ3w?t޵ '6vu=yI$du%;Jd {. $xV ܪKRvw cGvLjK/]#/Ky324s䵷}+4wdǔ쎐vA@v P;FwA !W  +UMQǣccFsh?ɼI{>^ 1WbՊ6k4$C9ehf.yWS]@emD uv8+ +Ad Q!- aRq4DA! B4C2[S0H鴘"P4"D8H(0"(Ƀp  A !jIc ja]haeƥ~h:nЇ6[^΍dR{T+h.A_@ǏrK8OpCݝjG)vleuf.pw4P6yr/N,Zt7}h[X,'?7 ;/iب^{CzZp8'p{\RǼm%c:#e>i Y^yRpƼܮDRoU %  .9F_pD$3r:,쬬|u{$|[Uߍ_)Ip|q8d0u>K?4ѓQە.@WEVS}'YR!0 ц>kf6]>yMT{X oX^'`%Mz!8v@:h q-+y RInh@JZc*|E^Y>HV0 @wۉ&I8>՘c@~okx7~j6 {F˲m;v I+ojygxk'@f 5b-6hk:Nꑭ(hv#XC V{ry&}*[IRMh>Kf\.z2z "WdBsTSCd URHH *$4?zDO + ܉`r3/AD .>Io\~, +Ե0 hoNJQ^l,17=Xhw]1f25Y 'J'32kvc,mRrN8Q]Rю%M& WS+>r%n"vz12̮$"6.JД5ʚȆh"b}e嵝w(6])vr?S!Du@Y%DS2Q9G3t} 67+<Ί \4Xu"6K + FͿ3|Wk߸XYF7;th`'h0$>zDf!0,L2KJ4eD6ΗTɘt#bIIQH_YR +5/hzCS)Yc&n}IE(Z9,d5A 4E#/ڃI. *=c@BB30J #5FKZ~O_ |n̦Q,ǜd$\a)"Lo'ePx@2a`,6\W?bjUN\@E0G&D=#""/e lȉzRt-*jTKM!SWESl95pgUzrmڮL@Lc5%&T:q݃i'϶GTKCQy +蕋bUsrFcDS,v' g~&5'!ty5W '\$WщI\=(ISpGԴb$<L>@e4)i> stsM +U 6Ќ2I.EƤ:cEMj "XøNIv ̏Ӄ(s-"ĺ6C(Rk"8 vY?rTa]iaע*LeoVH4e6+AUb1* C̷se+E4X)5 o\ +z8x,h=_ޕն7lKgpi%CmF2YZA~ħY A}qtg{*U#|S &أP3HGT>XC$3oE;PpFNt,`BY:4BUGr>2(Q;&!I*oACC^vK"O+\*DfS@fbNq׭ҀR3QmRd!5ۯ@`eXXڃϱ,6I+fŨd?Ks9C2O{2٣O5D=)owk#)?0H \۷ Ɔ[7.#96*e/&6a+!vjп?FFcEL(֑PU]G$ bPQ9^!LO@$:~h?$$ #NH Ii-7X 'P.jB@i"<sDx]u;KT/Pnr/0vw^ɿA)ڔ,4R^|?yGw~0lKӀs7Ka[! vMWsLxROf^~Y!S)|E^wWt2Kbۡ{::6!7%7`e62Ҿ?膏I6I9{)SirpTlR:D~ԃT.fqO7Z)TLﭠjo6="Aysg'~3_}3 ѥE*ݦWeIG\~ӟ8)u\N9q$U2Dԛ˒ \!!ω(TQ;IZ f[r 77Of307қ6ؔ7\V%Jt^˵^?fw9h e(7!55UaNۤTԓf-9 [a&hU@eW 1bQ AL0`Ǡ; KhZO9 ⮀EFL\$8O`GvY +kH)}ǔ +e,]kMl *jAX5_COpJ#+-XoF'o <rǞR$N5I}dXC F}:z%&Os)}t؆7t`^V~\1pBX} x .bNTT~Z\lKS#}ȍc#ۺOZ;~6ya-Eb/u!sەaeV@ECM[H7ЄI?WNdBqeG=8p4~7(0>GU 0^n)_>o ~w7=k'$+XJkP-,[']5N( +0iKm9&oC8pYIĕ `9\_9Ҿ7ŝ)*鸐BN f:4a;ltJ#Mܭ>.>^>S/y=14j>#vb}ģ=i{Mo.%zH lJb HdUj(gdŹjud"RStK0oik&rzݘ?e>A! F8ZKHWvJ(&=l?3]3H&X18xn/ODTV`? FݙF۸0 +^9h D/S=ajӊ-RUH"Gb_ +黊n%arotIL͞+р)%F;\^ðJ݁N|4Tk'N=~lPH;6t2IXmhEjx#:('r7|2o׆PG%܆]+Cd zS= u;>49k.žsK +-iҗ\>ϧ|;9^0WJmb;\YY''EvTkOD?3ISHzi(xRS 'm 06OM"x+҇"ɲZ|H aXN5%LmӦs0)=pOC:MY +opI%v\kY>׺kZPA}Scsv=o4v=i:۽טWxs]-i̻S-Qbp|bAl fu`gD99-|28|rي/P: RgDq|pdKA+&ڲf:t86g6LzCՎAX^9_<$ M&ݵvkd&KdH`z|tiH6暠/eBj36 +SN+G}T5f 2]uI%3l"Ӂn+)e'V#"ӷr\*gaeuA%bRKk.®$fDv[O{68F,=OM^n`(Tk/1n`n+qV=nLZQb3vd'"D-#`~~:ţEu/jB ",nM2 4S֊.-sCP|D,Gro]~&AC=w"-0f7g;^pl`SrygDY?Q yR,|hL9< +U#iē8o4Xy.SOZk^B߬G:B>|u"**YKh< ^O9G40,°/!23 ͷ7 +ա~%I X.̭Yr(VM90;y2Y<{oQOQ`bF9ih^ͪ~MI.9ݥk}̯ȫ&0jt_Brj\D4X`K% &4YA3r. 1uK\sT])H8p!ޭoc1u!Bc ʗs@:N*!7M96L}1JԁuZeSw8WOuоDxXCSg s~n v|!ܜQ=jn3|]#]n>5bNg]ԷzGu접S#! -ɸ[]ʖ7/[<2q c;ST0U $mw4; 6ـՕWK㎁:n5Zv5ejLmH sFWҌ?NY4r, +fOǧt.P{2<>GE/%Ċ{n<aeLk\񳔓4}g4d#,&MY2%4]m,v^H8aBQ3ual\^ZY7u}pt~Rj(, +0VC@ tCN#bPUGz z>$Z+$J@Ճ@A,砇!`Y2˜Lwe{tąݠ9TH`>J+ KFXt _t)s(׵H1h~h(-hؑ)Ff KI_M>~y8 +-h}mE"vi&|Uz1:ˤW`TZdU37;/k@I&>P7pȠ3%Y$ iQ.4k9yf M`+ek@vੲok rLT`g +Z0M6+"oT~sCi[!axۢM#B>M|62TXG|A^QݽAºcZ5-aťS>!(8Dj I8@C <ܔ=CF&eȚ 诐8M4ۧ Sc N'Za1Y$,Ԇ0kF yn@fBj |yWm!7l,)>mS_i_yꗦM0TH`絥&<5/9zQh>ΟNZ^F暚+7:4{F;h2(GeL/SڌeRs⠥(b;[{n`9W3Id%sť٭P9S8"_|-etS]2 , m'_HLRލ50ҶYO+l%hq\uz o ,yu +$crDAiUɔ}#{/)` ׈jԤk)e3Ŷ4&޽ɵCpnhѐPQgOШj:H+\Ějpej-T#!>fBNOg?ҫk{)FfRFG)(X{<IWehHm)]q>^{᜔P GX!NN*<c.H3&` +g]3CMC^"qG͘5o7 ׌,E( @ю?N§ZO= +.]h%yLl"f2175@X 5Y*LG+xF3&XC! +$:ɜOL-A1W:;ÈFƹF@'Ddbt\A=0`$\٘+^-@1~ەAW*H wQOuviԽPlh3Hh8p_;S$׾DAxDrh,>rمY|ͥ^6^@?$kC.+W_=o6+DؼZZf{I-BiZ?Fߋ“պ1~oh{x?G^pļ;7ZV 5c{g9l۳WcoY4vWK;V@[i  y/nc7 p\I)MLer , 蒎%j V|z&߃Ec/AP[ XG#DϯޢW=+[FXx\`ړTh!DuØVdL uDLqUlz`&=r瘁RORߣaX +elb`IL}r?ثn05ELּ!qU8Fp`Kٛ4gxE(+-65JwVzOCMddsl׆NH@eO om֣Iny[Q,Z=WU6"effT 9Uxj3*h/E} +o,;!_f9}zFq`b>YY?ze둤Y6o拓q/v: rhcsx z$䁖]95МeTTK1ȂRў}_ת,*.ZxIޠ!HSԥBٺ.za< +$GZ +(&z _3R1z.}0QDlհP@Ԫ)/R@$`EB~s#sjhI/$8jR^1<ʘX%Uf|Vud!h@ܗ.QRGha`+)5ڸ”=$lmHxBbGmpҎ+zٍQBDD0NW$ÅtiF59q#S4iUۘM E!FeÊ> <E߂5\  L>CO.ϊ %g-͈SR"u4̢"tb :hz_[QbЎI,zISSgLmOl, 吋!ߕ#NWǭ=(r rqU4%;Q,lEزV/#Ki``FbY=,ʩOG`E^{yazFID&MHr:WȔ$ WHp71DAsSָsV8a>XlwQz+Z{tߧfH3鬏?3r< +,DI`)!SB50eL3&^3CML+υAd ]#WGB=@DZ.+Ƹ>ƙADt˥lɍ.a{p#A̗gN# +4D5 8h\)}ZCރ)؋NUrSZGnBhAHu|jԪr{=8xGbMj?%8#6hco郰f 9!(kX ԫL` Dl͵q0QzPb!q/%)),./0c/Y&IfcZQts+W3R;&C~]]Qfa3*By~PJk}^׼4$+ +:TA":!gr\e*zHitRD>'*TwGۙ/l.5/jMeпjV[| b)V=Y!^&[0';B ! +펴p%KPzUvJRj8$>IҧhQ}E^q}M@Y4}N;nS 6A$}[Tb}ws6b65շoNJ؉lzsk ?uǔ["ӷ;1Sc +o[7PJEoӰ:L' +.3rJ u+u.ir0{ж6%gt<>e؀!ȱG>R^E,Շ6hSVRU X*=ei^n0^֣R/D͢3<p.),d:onr]e8D`#vTNgY.#(=dB}),] Q͌^l91gAX/e֬70{)Md%xJ 0ҍe$I~8F fB$ ǼxfB`~-%hc26vٯ(en}Ä +3\ |8o vLw?br,ˆnoĘf1mr=&/ڕӧIdc%'v +s%0=wlu뱪D^xz;@N$g:ƞS:勤7Kt+Dje-L\ݽ3b*" ~ 売PDnC~\qv~{QX>qXxEdvF*?i D Nz2w A1g oBw)!J #"cD?I6ٵDd>]]h%r+̍P?pQE o6HX9 Jfit@QG|#iTtxQN'3{V69NJo6"RFdSM:Y %1J /%3ЉVM#Bh@ c4x'&!#*(A6* +) 4 l4,W7P_?K&$pa = ްDURFya/APAZ5y)]p14>A20 +,r}V<K! +Ŭ̬E,=THXBp\x!픩\ރ݋Nd^UqQ$Fsa[* *<5J́h.EC0!01@'R˼#zDC-.C7U|A>[1aC:X'@X4oT.# -qd-ה# 6 W +(DDdv*(  ^ j@F܅y(22^ h`UsJcT3`33"Bv1A C n,%]pc ې za'? +*PC7x z]3Y*.T峭4w7GnWl#LFZBVdC܈Qn=p 9([0qx<3B2X!gMp$*&J L^2@61< 3A +]#f CC#?F2^Ē͈+|L6M_j(/( lHWnff }nf\:.Ub4aԮV N71-$1JBh:X}\}n99grΣ}fVIs '1 k[&>O$IWȯ&]A,V<x]g.ty[nC~ 4*} %uR@K&K2kR5Oa<~Àhji̺: #iuq娕SSVl.kN$nƌmܷ|%U,C/lvzd<9ƪԲQ;zf/>8Cl-Px9&?dt]Ҩ]WѬTY;lXxi4? FbNnxof]䷩.Ƕ"YyH@w7 1~/0:(q ~140Y*>?3f%% +5P%8^){"J&+Kq _lo>"Jj&#p' ϳ|\qhr{CPs6ᡝWK(a)fm$F9SGB=`)]$1ZoNbyh TU19|q&_=Շފ1(]&nD~FRг| __P0GF5{bjK@yM +o߫X01 :C񋢑2artL奃iy U\=@IAJL1F%H(p G]P$ @qK6\txeAzQ:x P'0-_}B P>c%s1#hHV .:]R<ÜCŬ"BA{8}usPpLc33>CHmA8U GrMBF5Th">D+1A52"Bx1 Ȝ0J͗ +dJdH!CP`"/ms4a +GpDc:1u$H,Y00rGzWz/]W_=Wڪ7XNqБP7Rpša! ?z#X1([.78yifH嵆,N/sa GByro~/;6rR R*J& |ܒAɹ\h(U!U+ZnˇYc GB!LMz}yvρyF1thL!̬$1Zމt\@OɊCu#'+݄%J*)Cȁ['zLC8_l񇤦z-"4'4Fh3nHS6֑PIۂQ t]afA'/ZQnFWzЍ^7)q\n)dVqi6ʼjy0cvR)nRA\AJ͠D`6z,lD"]A4ݠ@-[KKEgz{Jp\q1W1صiT/@bpxR7YE}'6^jq3B= lX]h:.\H(ȉgFn80 +}v/:q8]^[X:=gSVOg`g# ф)?Q%K͝'}f`4/O|-(:[;Yq$݋bsIWq|xdFPF_X*ئpk'2B x2!8HM3sg +W4jT@&w/bts!c +v5YV +!Ee*>$$;tJR"EA1z`c@̊тН@tB#û5 |5B{H,4c|c CHt}T C3 ƨ!c 1 +>t _"#`|A44 +F~/KUd LfȠ@>j C1 GBP͐C95WjӂNimX.}9jD,j6 *$Aj{M:ɸĜMdV$&K +^WٽhE|v/*or6Y[GP8c%Bd M{* i &^Qf"(]LHHh?UEP H~YnMqks+fCX5wb+P ksxIB +H_* EmqS7W|kt3Gp: \<L0m3.hB!YX7h@c7O.vp`Yl롡n/Vf)&{(I$Y *Df/Vs=`$H$0H"` 2+I$3PZ,wPYЄ"\؄f.<%N P Ą*\,2(tQH(4& HB-] yA  t;#x9hQ9H@Tn'4ڮ@\ ?6}. 1BQ7,(FVe6%D [Ō8įI~"yX65s)h2lÍR-Cd2̀Y3j]`eta.:9GtqjY^'0{)zPńK~b{p^4B205d+NB.N+ + HZȦȚH|>Jc% _op\N]"钍t/t[#9R]{PNEE FHc+ +~ʻ= djߑ&9.X\# E%ty.m'kyđjQL"rۗ,wMGb;tz"Ŝ9PÃ)т\q9P|iblko@U906H(pqI,]nOASS#>a@J٨1!isBV39V<#v1>"nJ`x4Q`H9Y  +J]#x_~."u.݈9ƑP@,)"|Xhl̼<>Mre"! n@P4 + r[>a4hsniP lvrqqw΋uN(&p'`xl. r\:ut\b7jɹG NWFp)L|Gn]Œn l,C(WM$.#钟WB熋tOd-%Zp\tɯnB-EVv St/q9]H(TqC.% GB!+SҨGy+ ,5dXxQ}H;9 'i GǏ +d&?}=˷aA>rv/a[hMN +`ޒM04F͒hTo*C@AoBtF~)@KYihe*JI %D{Ѭެu sC:}b"ܔYB*)@#c F ?n3j.W*D|j +K9KM0V_> b BSPPbN_ ])٘ir|u`@?KlP(]|"4^Zi-&tUa]5 f@p8 LƲ pll0k+BP` 3֭&c" _ X/M+Z!mlh]1VZgc܂6C6.eY,o͊XkkHn6: +?c{em!ao۱b;, ҭ c+tlmӗ,~6宗j7X[n.nk1n~YWa!~U͡Տs=h=b+ί)]+}k}~"WE֍qڊꊭk5x-޿7EmEw?LiSL.}1[ԞgZWE}]k7hM_o}?k3k.Uo?͙f]EwAfQuEJ5x b4aS]] o+*m-[*GBQk6g7?{k1;ZZ57ŭnQ?w5+f ߕ^] +h/Yj1{޶Z1 ׊)-ƶj,bw-Zc݆m~EP[|m fM]ZWJߊEy;W"}.bu~ڊ]Wqx׊ϵڍ.Hfq't+j\^6c5uXM(Vj6hȘZַ[qM(jWٍ40aVS-s$ ݿRfk1kvMki~fN(\oo{59lE뿥=hjTԸߍŋkޫq5;~-fbjo;Wq㺫t*WAn}Ӎ﮺n;c϶VbuMQi֊Zk\WHkM(\Nߵ{k L۽Euwb]W..b*V[cz߭>EZך-8[^)]E34~ѿfJ5S}Zlx;oWp]گb٭:띩?\1Zk*ޯ⵿?ƕRQߺySJYÅ_uӚPvSߛZm};bP|J_e:g]à YHH(0WE޿;5)^u-kz]P9TAɄQQtTsP\.r4V_XBѠ8ߋmՔ\_moڻźq14zs8/z{k_Ō?Vۚ+SUEU׷^k[E:{~)gw[Oq7+V|Vꮫ֭͏q՘үnZE E-vkV^Å{ow>Z^޷wBA#H(\oNcѿzLsZ4LS1Ɵ:ů.oi}?꺟[\u˶^XˆW8p J]z;Cc6|gV쩆Z]-ŭV[6Bۆ~s+Rօb{՞Y!0Vj~+k؍y|ki-^¬]6l\C.1[۵Y[֋}_6װ^bgM(h;0%YuZP *+X5TţP$IS +!T%  +E9\tZ8jNH(H #a A! CR|:Oy O)! iHE7ҊIPA .ⱌiiuà㤹ZqwO%CG7 |V06mx$QLkzx_2ij Rh㗀z9ȻG (bq|TdA&OLp.XKޞ)LVshE +i GkH$GS՚dj1r:1l6a,{alE߈|1KNEB &?a7dtӄ7y& )i#S S.X{ud3p݅ @GU[3("B)A +IDiA?طހxդ8(yy?ش8FTwI8[v=|uN&Zݤ=w0VUuhHo6Q.`q^6zj'͜(=8VHi836xmv}xldB<:ޠ^}o16E=JC#] NC>\(d6Q SB! M:EiJWHD/7[(5"ӞYc<:зPbiw09aJ8籍9+[j4Fv]{nybu8nmjϮٹ^su7=EFJsSk:tU:tPחy0[ E8J1dsXqݻS +>]B7HbI.Ic14?e({$ziA'-]m|]tvScңxcMe-JgHtz9K{wߵ}F.Ԯ|[]UQֆ\0Cʢ*!8aφ3\Ucw=>UZ@A~MH10PM@|=W$ JAnR5@ `XU*E#,_F|*\cT%ˆoj%2<=ce}.Q#.O.!a@/8 42V}3Plic Xix,`\ uqSŭ*Ri9^]x g5i>^^"9*pDimwUjWgKÛqXQYbS6݀d]AFyY1 ]DǛ[S;ˋ`G(? _T Pݘ}c{ QUb _Bl=[c(Xdh;0 "$d iè6uD=XxyJ= ĤDñBHYܬOOm?r-6E55 k`D$lLxŦ[ЎTc3 {m^; QyL߱ 筷E]xHΊ0>yd'<n7@ߟ+0va +T +0d5e/ɧOƆpJ5t=~j#la˴xl/-ba3s&z-! 6X$}*fٍ#+A~j bqbvr`"CSZ>:28 T:x1*L~l0k4فPaKv@jc ǫӃIhvSD%P e}w'qb!]d;1e]m}p2;%CAϦe64zYe]~;!JcK~'B 2d^vKB{zzhɂO].* Lb?  /BxSl#ܤG^6{\J .c̰Gg03'^">7;\5ĩK@, 'J,Y#LYںKEĦ|&8nWS,b0@ [d,Uvۢvb*6v*7#&SDsBG/??``:7ArBD^~|ӟn2Eh<JV6sLr0W + .ZsOC[P~p^\J|L$H)b5׾:lAt{nT[߼ 78y`qThwB=Dl9Yf"cQҨ3"kU0˃@d=PhP!sU *ki^Υr7$1 PTGr,J*b)T[![J8CyZfFc{wp)[%Rmb,|ɠ8S^(N``U9sNd8 A: +PMtoωF!IMW_~NV!Ah! 5F`Ǐ݋}iF7Bj왩o;aՏ/\?s 'E9Ȍ"CSLN4D6 rsBγM"N9.N6?cc$L(`܀. +pH6o͹^L\R9 Tˆ}"`pc*ՠx(d>#L,SE +@S_04}9f,:tVH[styUz"Y*5`9F)'٧SpDe] %8֞Q^AqP5ge#EmzZ+WE6=/̂(؅DR2ʎrl,2XQ"P5KW\ʃ+$[~bs*KB3oDjk$|5&mS5(̢`5Ò>q%Vwk\hժ~ UQ>,"ֽ +ʚ'6++eɇWY6- Ug{wVX$46.zA=8mp fQ5gtD*2a!w.Jq,Hnr##d R@=TL-R?\Z-߁Zlkj RJ_({] Ñl%[+3 Q=.usy=T1s-*JMf{zo8*bv1=4.D7pT&] A4.s:|3= +$un@du c 4|];WtP +h'д6rVwh\4S]8++stf 4XW/T8c">Bt4$jA>Yĉb4~wqQE'3'~FF*tfpiOgcI~}57S `.k i 4 +`Dr 8Z/qJ#YIOZۖf%9m2Lv*csI5Jy+Ϧ1A6NnH%]~k%;lvtPҤ +&M(ZbxD$@ٓ'y-RVZLeRNDFn4 +q#l!Lmĸ6Aʜ~T* +RxغJl!>Aey{0DĪz1}"_eh d']Wc D%ו4FM&U/⇅Zޥ8sdlaft58׬j̲V^ J-d\pI)I<->^oE0^YuV +8]ՏA2q|BP)cKDMxVxȡMVlieKyI>/_]BX`BE{|- +5%-R>md\=N> fٓiU@!<>"} )i8]@oc}oi^7*WO|_U\d!cX8ɽPM@ʦղkP}XSZvӛ9ε{iֆ+y-q)SFF܈4Y*MAsw;hNvTepiϪ[HdP?35!mGqFVljU-Nl|;#gjyV7o٠CoT:!Up#J5+/ct 6PZNn7٪oU-]I811d4W(>cNL`!!ZbMgkpJaD`6R/d.ٜM)9jes?3ԄrF: +h$ 8of8xsd߅ g1回Xi ',ATF X}GY7Qk,QUžgraBO(pWEFP`+b%m+4&Su Vj ,WoOz<HSl!>X9PTbF5  0߃:TDiG2` A@.w t7%hi"`jٶr4*|9K]=U(-Zxqp4U&Xp6@#N f&Z7lk.tڔ&WQH>cUA?Ű[w$J:qHhUǛůlٱ&9 猪="#A4l` +,riӮNGoux).5ˌBJud `q 55wR[(g8o2Mf7#!FuZgh:o9qe'Z]198$P}GzQdr|=+ȻJb%>2SхMvG;|j0Ԧ$9L`n'uAVPPl0!/}#5S0c>3>%qD!H +5-Lx2)WPȋk0nDYi9cxfc]ć~68VuxKܞ+"{>JyaCa$Yл^ _w0j: <$ w'dqt|b#4=)hR{ +C?*Uur=7SH#+?9(٢eo uU h ыC'Obob8RM +$ +fYPAyyqS*@SYNPi̥D ++ },ca-ewWECmh%ejFhtY8u@Ò_יob^tECH~pzG/[X68ZXMY6K[G2 gytچ56 @А6rriM0`Dwl@ +恴HDv`VP3qvh;0I'9A!n,5*`y %gՍNn!k:I`( ƈ=z,`dx#Ěg Eγ X[IQk?KZ *IM _Od69DA@+#Z,bW&e3SIHjwZ:p" vlB796ho}zDYjJoTb)Sө̚kjeQu#HtJ٠MpAWeܫ[B:.-rHjpjbjX]&܏C#΋T)I@'H\-- +endstream endobj 27 0 obj <>stream + yS`x6@W`>U^aCeA'!q +?\! +u^w_ٝ~b.jW&6cqb%G뙌pF MPw7AEN\n@)ފL[qxzN⼠4w[(C[QZ4Gj2Au[gqWqf&M^774& kSd|#cޜm-&kwI̿[tXMX*/g=(;e/(W^]PE]d pQ ą%ҙ&2mI@cV_cQўԪZC)-aޡg8^i0olЙeCN^qP愘K&$Gnr Mcej QKVj)`,H:&:;&T4 E:2e-Վ Ф x@dfs +00ܤQ;] Uu"GϠTv/BMG!ſ*G&,X(v($$f_"''@K߄B*P5!{>w|z&<:+h+"}#jads+726 c;C-aI''&h O +`XƄ7oF` +ϸ;a/A }S6 q|"ͽw{I4CxJy{F~#XtHjKT-_HB' X,f û :֐Y˂c6c2E')W~SbNE*2 =: mH$3<)#TG&ՀpQ&^D]zzewO+bГx;MCUz|]r㯀'2|v4x& +<9JppqOnj[5 ?BM~'(}谠r{ECfVhvlc!CxK}l̸<@Nl;xH;u[븍 R qz5P}YlChrJ4x@<fg4;iƀY0½klkĵ\&3N|Ȣ(z=h>'L4ə'197_U6̱/X̊:2߲3G $3ʡGҘC0P#s@<7|G+"EȾDfÇ8۹&nx;0j3[ 0F 5:c.d=M>"aL>6ȏR)\uT&71ݣ 7Gy_wbڔ/>i|+ҁnTAPtbs'4 +3R.4#T +1gݯ9Yj'5 a\eb6[ЇG`9p]U`rR%;CS-[961ޢ,PVg\Vft/M ЛEI(H-kОPQ)Q: f/+숝qFCGX޼,Wrh|^;9htMV +uB-/zu8>(3LІNaP=fI̟8 ꪈ7c_v eˑwi(C>BK9!>M`E+́ 6hVOkye)<NV|_xfg`2ܙd_7p  +X4d#\ "h?m%ZÐsUH>n.[B%0A6):9NG:X,ꑑxtGDV +D87FqSQ?Tn@jO@%M&:̜`K@3L;+3񻼘<* %4b$Jx46Ix9rc6èy~-Eq@Љ\`tiUGN +GNr^Mu=gVp5>n]$2U 2^,'ճ~1R:cZ|Rb)nqjZqUcwAiqSiO&yĺ4ĥ32>H5~Pȴ(#@zL6 +s?'nΡѽQ@W5]߉F]_dz +^XF<,M\JB:&"ae+ڒloz Qi'Z +QQ mMt?&.[ /·EmS}^;7Ҁy]MO޿@ HN7@O/P $٘yydɟ*p.vnsy }l,oT,[qY@WPL(zF\*v/E"gUg.<7%x-*YCq#Rff@C%ԕX( 췼ͩ,/,ɚD/jVZ˽U݊u?vLJt.GJH5`op7[%p3bE.L׽ +T N-BC~ts.0`wFmf 6W{#^#(M@B +La@5W ( Ś6@|E2$UeLL +fS.m::|bN>M+5Zz$f2=c+s% /0;cY(;< +_x܂MKQ7 +. -j H^=i±WS] qDGN#"b0>~rqp'jq- +cH͠^\ 0tb6M0UUaȜue\Lv#XgvXej$j?:Hbop?Ԯ0止 n,R\'nMf(:jt+%Cr11I'n =H/ v%ԗlwoT/p?[I f>P:zoq4"x|*!h.e,zxǔ9RwoephHpHi3T{E,;dFFi2y_Ar6Cn=Ioq(Wv:G*Ciƺ &@{O\ Z^M{F۸5n>äNvoP8g*J"&8 j%Hv 0rz{eUwM[cx¼L42.)P/QUm%)C~m#`&JM LtU-E锭|!3Ifwξ +>ߟXfFZM! IƩ)F.q2")~MceIH4@ dE= xjzɰSu$+Z3OnjP[(ܬJh-BMvc=IZޚTCKRfrMBt#T;v" ȱ,RT7@$ESI)>zZo)61.;ͮj<ldb]xD4NKK}gF6[7A2 41q2@݄ꋭU2Xr&+'3_%j4R(VZ`',_|DquQYp SsPÑ`pChhh];x3]p<_aכ‹!faFsW>ԗh +_Q)6νعߤD>f  {ic:_}8JrTIgu1R_]Z3=_"9ѫ `Ly++JN=+O8莽uAEú9١& +l+7n I$|Owu!aU4? +W:sN?~x^7A<ח#5s M72yIHvM!+Pn|* s`1i +LӌU%- '&\3Jo%D0.ǵ3(1ka+X u.0L!WvJeA諄f0cR _%ܲEmQ-ֆ:!q/?2v63tbzj.]wH5նva7P?z D $I :Sdy6-rl3TxR*wOayc3sh}TF_e Y])JNça7K9bT}g&J!hzѱHzåB\cП'0e?bY܈O +Sڇ$*w_|Wy}7%24|b[ > HiCfId]QV 3apMbʬyh!0*&p3N^pZ O6 + M9tCTG_+Þ2X|# +]c"ÃmI,E ) zUq}@^rc#"x$i6ݍĪ[l5rZNC w6WH{V_~ @^ ;9z#+ G( H،fJխ$ߺG| ;`Ȩ?HrJumVΪtѨ}9m'}&85 q# Nx8ZHt`~r[[ľdm Ku$?רB +o!,p:5 Zh@/Z;ޏI/OBaZ&2V}?]up~Nh1"mWwL:IX#Է cczŝo Urϕ:ZRSܪȆ!vvpQusǕ4qZ:y!1oyό:0HovA Rmϟ>?I [GvY3creбA,JA樈 Gζ&7 sOϟ5v'yؕmDAtsK?rtKڀ_I&/H 庉ٸ`Ժ<|~]y2cB +!%/ 4X #E$j熠|ugZij Y&&' 陏L=L3gḄ\8iHXwFOo>LՆPs(x&hh>̉Vh6BNipFm.v$#WfxGûQ ٪^e93(72[%X1|8ZR$fGY.7`%i 2znB0"PV°0dva PJpjUu5<t 1@@CQrJ$ Q.jg.)G}ʸnqQqZC9=b"t3=]Q/th1h.3#:2$.) sN2(ak8I<m8ӥv%SZ{jg#FDfXivZZ;_7AlVzwcbq2*Ec5݌og 54YùuD`,Jѳў\Q;ZZY;W$SV!]mo) +g:SLiZs݃M5\gQ)a8EҞEM؝ekB$竚XHs&b(G)#]UoXIX\Fc.rz +]4ʭʼB'$d3O3ڛAHJ{N$oq }Ny#jNE^ПI +14M54=ǜg$F +`Ijs.i7d7*HR'5Z[!]̣8MGN1*Θt#4!4.II+^CKC2ĈWQN>>~W3dmOIdyUDwkY4TQwEWc4Xkz"Ybů+8ުDs FcU-n3}=b:ihy&501CdkyqwE~%"UxxT/6(.G[U!'R{%5E-RE^_,OQtㅝ*Nl#鎨-l'ݩ#q ƣZdA jkB*ևZŋ:B'W;CqދLJI(Ć*Jɧ GuU䚝2Q$MCӋ%^y"jmRF"ECZg}:k,1.kMD8d@M!ڋ>چ㲝ݹxH׈BanFEb. G.q:2A%^E% _ %և o~f.Pew+&V Lo.2~7^CNKLCQ_Ơ<qU..GL`ZDKZt5񲙪c%pfG=9G3o^:㑙0~L e w{>d"!5IޚԌB5]Wb=DJ6{l|LL*MPCtf):᪔͆b im/Ei؄͌Vdd8E 3A&\&i$wD6"C-_N ydkB 9B^ iA5D _Wz?%O٩S62Mc3b^ґGՑJsN1jG-e 㪂Ԏ(Q⛢nBaKM#E0bʥf9-ĸ%s!!rMD"Q8"]t#Qkf3$}BhЦ52cu\8 mxD' OP00P\!9Q$h붢5ȶZu' "b#{Kmc 1/},j]P M^DͧaG7LDe&{0H-\9m,}j/$Fҍj3F +z+6 t ..]Qs锘KZӷ!bA4Qi.ݡt +M,8$D )-0ɼ:zJh#ڪRQ!NB(DJQsBB?UFUbt94hwh.ɯK`Ut΂I^ND "ֹ:ɂ(D}DQXASL|ʐ)Ƀ rgrdl? *jJI#H-q"-o9+ġ3JM+l9R#֫i [4avr$hwѺ?ZEKpdn'ts}67YѕDToCGIbDEu*Y3,cH*4=مURJ[J )U#!]"զJ-\))N;tQ=Tk1BBH3hg訒`fSdEJRY_LBӢx#&Щ4qaIą5/5U$"FANL-(Έ p9YV2)oK.ųL;EE!C3'FS!NI3=Q"ЃEWC#7ޠ͋NQkJ) ?OPuc%wj zf}9[[s+7nˍqRX#2(k@OGI)d]6J+}'3;iۙV"J"7Q}D\{GNh–h4ai?Ry|sTM]e袗YeDߪ GrVfb з5 +}~tfHS#-j_2Cɐֺ O!ЬQzrOPhYԪԡS ns15͞G=CCAH=٧s'ԓ:>%D!daC]}Bz6S<DqY dQ*9KզFMԛTq#jR,Zd!sߦu&R1UKsVjտO9C1Hb-h  hY} CSd:W ZG܊DЃnk\%U\HSh*PZ \Ee.(! ##$TBt$#Y-K\D)-  )}"!5ٞ0e)&Ǚf(*u,O˂譒U7 IBsѮUj͔>Eo܄?I3"d%إy)LPƢNdC"6r+AT{KO yի戒[c]&q& *ӃhQQ^vdJ ;DD-qXZx +Qɴ) O/0b*BTa ('""mh8*^8m]J}va:. Ҍ| q4V"h%rNg4春zZi7#1(3|<8YpX'YEY3^fuc\R2 mFDFAd<XncAD-M&7e!W#,^%_$I曵FctQdcPU-j݂(<:.bGޠ_bNg5dԎ*e wf>OFIj=e5 B\` 2C040HD@fR0@qu)8 K!3RP)Dz' 7j%bp  )t)쌂HP PEAQHBQ"C3V +f +xˠYbP@b{ඁW7 4?6 #;9(`l3 +sks3pGnN;- .tD:s¡X= &LNu60ۄkM6K5A HM(p)&uM8+?̈́Io`-v7fz#T$bF YKȖ%J7p% LC9[VY@YUJ@ZQ T KV@iY +[tݩ>6}.K)ow!FATYOL%Qie Aˠv2h|YBj(@%pnm2KD @c0-KHMe =AVV}]pe ݦ,A OpoW hS oSB^U@'&NBIPB^U +H7$JH|UHx*0]H8$@:6H ހJ惍s@@< GG,-606#ނ])9/ƪ~&M$~ĞB@ =sbL`+t0 Z^rForUqEO>Ag' rOw;X>E밶|\$mɖ@"帉%dvJ9G=G=:g)b*LjQ?3TCD\!x`Tю[Tԩ$ԕ;@ToT]J+)q?cKGxS-*.1B8& x@7BhORK@0f^5xJ#$p@;W(d09 7 "`@egRU/KJ4[ï@0݅"/u2.BIV d2܈Tu#̕I!D WVvTc .Z "m|f;T: {_`*BaB (܅;Z@<-eD3"$,!"\t@&{b2,CX6C]!,\6l{he ͡1ޱ!pB$Vd? +N[B.eBxHί8[;⁠D*X AHP5! +: e@XQK hr‹y FuYu@(2J3eY rZz?ͭ~0CyU5m<[h[>dʄC@֍2{P2?X遱mm`yT@F'12B +~ mܗB:xNdj;N;)0;p/<5,EL V;N Fҁ6At`, L`r:`\I57)[ۤ |_Q\ l% LR-ƵcA7B "m )em@ +6 m6&t5:P`kP-(5] D;UA`[ +5Hp^rh{4PZ4A4$g,c p< T=3XMco2 -V*Id#p A c hAܝ-R A"A0$`4av)[=]`~vK"yAA (fw@OvZI]p |" 8Cm_O佌ĸ092XE?ců:u'[`Čik CXv,X<&U`;E3,b,SW Z+Mv[CPBVT +PU<ꭂPiD> +TkX +ܫl% p_AP^h HUP#HsI45+9* H"Snש iP*?N5FOO +EsA9QT !JJT`F# ?Qh!*NT`\iʳ+*pG]TK3*pde@! +*,D&@UTUBk +n#ETP*DPAZP`mPdح0u~&6pJRc~ A((W$$W(3w8fXk( AՔA4?I^^;6emzHM,/^(8`q^M9q=bEI7 q{7٪C_|-w.@8q{6hZ#wg@@ݭ@kO6;5&OU BPq~&C)Q҃1x4> @q>/#ug`\N-q*aX42I|"m8f H\ x@𺻑5NR.TI$6BzF=dm/NSL獁H3Hӄ3hE`;=]nE'H9¢#OQC7lfSa08T)Jf0<pк`WNMȓ!U*~@wM0Dm582Nݿ/@l$ε)gL3uaSD<ʺ8 8nMy 4aXGt| 9(26 Fh.>A4.b:+en#H@dw.VL?~aZ3}!NBtZW=;~ ++-&%"&ZaNcI |Mꉣ٧$3oZ}.haǴC{.ϫa#u: 3RQ ov ;2`߬3hl3侼PIYza˄%(:{ezJٱ:300 $LJ=|!LsǬkJ1*dD0 PaM£aJ AD53 l"}#B, 4;VLx@¡\c؏h]X@7tba3%֕S +҅-V?@vmqlyB!$y)) WP%?P-c We(eJv**oksP 7 CEhR*Ì0Lu$)()M>Hͬk),~afb) ,5PcvpC0c])%LB'BֻG:Cx0@%Zx.wiW(6ay Kzt#!cYwh@X<o% ?j8#8Kj;3Qs`ua6Y`nP߸k(f&|)VÀL]GM8d``9*~G7#&JBD"mTP0oƑt|0B_^b%Ht?w2fUqPݑ~Ҷhʱ\n^_SqQM/gD$ppg07+/GnHz0T!W.ㄅ"H=@MPf +*CZ^ ̠%S[N5Fm:w~@Ga6Ժ6VYpR%!NaZXy$==!ʁQwCEcuM l{4H)}cJUWPs.k+_.ˁ 1K3/dRs@N=&0oTLb1ڲ NQ"Q͈M洬Xs#ɪ , wЍ|(,I14]_`QH7>ԳbP%.ЊXkvR/ o՘Ybk~,Fp0YE軺ˁV.pucTah؈]{4]9#ljZ3oh+= ͰW] Ev+}67͜o[mͨBh+@E(O} alC]=.Qi>[ "KK<EHJ3 |MQ68ܯ}龀DR*Bߍ\Z!bf/`%ɳ~_w-gQU1"g/=aT,{RX~xXLZԟ +?~&NA VQ"l~ \+Pru' +QA$ӛLxMH5Ax7yPSBCҲʡFQ['.㻪I&b頽@%pG@b8a +1 $ʹcMUgB( p8"~KM7X,1v|]͂1mIH-'j +*X [)8ح@ +|$DFTw?|PmR3?#o~P;ӀRɨON/Q=L>\cp,|Bf9)pAoX4>0xCyGm` +6tv*%<){ ,-hs(,KByEɗOUOsۡtk%[6'02 o=n%ՠV*@53+FL`E7nK@oY(ͼ %b^/Sl-FU); 5=R@qs-m% XPH͙!xFҺB6ݾLf1O~7?" VO;*+pkz/D`>,s]ow*3 $6!Vչ3^/_)n I(@ALд\'>T I4k%Zcmu;ꢕ|a7u | +b4/舛̋$'hZ.I^_o)A n;@eb*@z`%\u3F#KE,&T$ZDXgeX43(p@G +y-x݀4 jtj+/9Fb ( Є5`%0Lp;^&1uPIG Ӡe _G"k+46lq5Aޞ{ bN* Ε z v:qB+z<+I L>]0iH+nGYWJ`Jy*`i 8K-TQ?Q +V{)`P +H(jov^t'>yPeN@ f579%*z v5)TIa%}sãc.L@-&UZ1n1"iGbʸ=5D.wK9P̺[+'g +ئWSղ+bI=%1H24y UM`HjB\Au$ LdzP_+0cxfbKםV<0gNHܥGiSz8_m萨<{T|1Pxv.7]\lxVmĐϖEoz lh$Y0sn܊)3e*=5فa 5] #c/g8 +damXS}Hfy#P'<(H,hۼ$I%2b:|~raˊ?<řBT-yw;9@E6 PP!7;"ohRrZFtBG-9ٓSZEHH%'+9FkDr jh5 Z0S0#bG(mDz@J{qfvƏBD7^b2\ws+jX}"z`DZ[ju9S?9TwVΎYF<D#qq*c7G"|/ +T0|5-^ +L$@=!^~ ;pU=b71Wy71׻I@Y M5 =bmU 6VA"Cxɭd'EKb31`k%m!Q7m[D`"F%J'%ϝS գ*(  (켉\k>e+I Wr;"N()ځfmQi7@!=-^HD`t[c82TG:闳,}Ki8!jCpk#3\p-n>J,8.Yj.3o Q,z_2ł8f4|zP9bWoF.yp[ q(!qImSX0d\dkKͿY &V R\@&|.^V`SC$ٲ @f'<)W J>kTG1Eهq +JrK^MF b! +9×Llq`6mk h/$1KKTEʶ{$u)@>pz2ZB`yGMҜaʑ`&ZQnʨ +)6ƞ7 NOpr` Mk. &זLPuq ;7tʽyE`h T`W6o8l^x '];u?Y= +~1r2ZJ,昳FGSp '` "Q &qPKOEA&ztTcuQUb2`"8}q@[ӎ1m -Ava wVglB5֢?O6钦ȉ//-Yy簾DܦV1]*C`g™GF,28Ճ_9]y}'4!(wTƶvH8jǨRi3RPO)l~L [FQcV~( KaQ9 k:ʔ_rl Pox$~d,7kUfj٨˼&UCg `vu y:N1Mփ? >:ar +_S%>H uA?WSxt6A V>OIbjthxw1+~x C'X+`g"}7.FVxVOJKyVgbPR]1D,h%Ԕ|5Lʱhۑ3sſIZ rdG]3ϧpZ +Fĥ#Gq_ +?2XЮ,VY69 b3S;SQO2 TBPM݁X-nJPş<'m>fOPRjNV/%)bc,`'1_K`^R}K{|-SL'hNP @hSHw+0Ju/-D1[sd_h3(|_Gm<À CTJ`,~kQ8M/OȍޤT^F{Eu@T_W8nVL+v<o"o}ٝ/Z &_.vcdOSCKX$*o1O;ק􈂒>yŞ A3VxWxd9Dks0TC#t+-TٸV,y'&YCM?IXg$уUH.<Ш_›O+~tphJArY)!f(Npdi(Hʉl'0nU%ΪmS՟irWU2BҲ9pTGGc #!U~(F~PL<265b5gpX=WH=8nЈ_bVz7?Z&jMVw(R_!aCQ{{V[Ϗ^/bfV66rpot\V^ha,~4A5JYpdBXU/XLatِx#xFb3A?# ?d&#x_^L;μV?hWre Z+)D$&dV?!0_; @>wocW~C^p+(ޭ:X{̏dYr :d)# y*7!ȼMAf[BgAPʮ?;OZLJ6E5D2K-d`Ѿ&5![ΟRKo!FƎIJ,zlb1kzҟ]Xrv Q?T1FZ zeb1QB5y]-_ƸfEB))"8dYN鿔⡪q~ i3OIҟeC7ʋOȿl\XwyӨ?v4ȉX'V eJu6Ac hK .pzEum[U\;әJmU Op jk]O +ҿ׮W|Ί!ZfNYZ=I0TrU?Υ_WPDIZ`ewJA]\q M&9LWeOs\ҿA3F(r5M9 谩͞JV qܢhzڠ±ӖՊNz7};{5?`8X-UtZY&ZIH] /,a~7~+Oy{NJvG%"Le_rxNZDœ)ϰ d)0`D~ret h D*f%i]W.'<*܃?AHpT;)W 0ҳ^3m!2!ΗLFgI9QFWL%Fk줟*44\zxRv"pOܼ42+VʲMU~ٗ:AQkn{2V:#*@x胆^>: G l^(dɌNy~קgQwҫ-K@QW(>ɯ`4ȌZG~$_O Y oQ~X$o2e?"G,ſ5O%ע8 tҘ hv#~CBSD E:(zfp]w7j}uQ&VQY__tP%`z7mR - '8َLHJ'G?ϤHƬ~_0FQ}ڸ׬%'֦dž,Qx$O$7仪ϓ:zoo1^.؂oJ5V}|*g}cK~ +v RW y>lH_M77g|){a<*=D}EaM/S/Yѧ(sa Y^9W&*BG @`f2T3@D!>rvqƾLg22x8jo29o=r(]u\|g-96|7/%i +f0|xSN 9IG1kS ѓn+LkCs z'T(|h. W5BooHR1mb S Y;UР||5Lx`5'pS_+K~c#an#^*Ĺ\_pU:o?HSA{C(jZ$/ۂ|2{P fE>^ pLHAPS1{K6iV5^zG7tgyE Q: yF$ǜk|Fo_?ʩwߠe^|q$͔W]_`1/bzxrD(&~|/h jW)a:fï#CMXɺ0`zR*A%^WN97ݵ f$ Y\o֨ZOC4H(:(yߌflLЩ931JeVC->T@R4S?x~O5&ސjRFSºI,n2/{2'Ɉ<]Uw{?FiƜ[%;c YlyIeÿO;]ZGKbRDLk*^d `O4ECON::.=sEp׋{gO`_i^.|뢭ܟMg}AIJ5NDi 0#q?PAN =;Asp:O"*)$Vu{6ɠ)q2#LU,50"ֻ44%lBcM V_2ՖS]=N 3NF + ة(Hz,\a^ v&3h^@8Dlp|`\z)ywĊ^׻ d1N7g=Ѱ.f!Ge~=dzQnY7pM> =4JzmDE^"tY4oW?%A%:0 kabtMGZ[e2Y_ְ0r6I}oOU}>߈~PzlBiʐlk;?uj^?yQr)'l׏)Ah^Wm*]H_m[z7@$ه%1uH\HQs+[L+I73' ]>K6Ƽ~_h-E!=2@,eQIczBh!|lAw=aU+gmz DuT:T /iLvd6bg$b4yau:{s3I̹Bw\sVQv@m-N:8sfF<)Ņ'юw_-;%_5!'wa*} ^|C7WVVcC;LP0w|A%6xn@J5ŘӿSA~CITN#uh_ZO)؜#Pw$;#Tǐl +005/;tqcJB~g8-m0.?ꊴ_w6]_{ɝ߁٢OdLqwc x@ɯpXNGJ@f?A޵:c+}AGxگ:|Za੶}xN +Ӡ̴%-eiA7wL#-'|&֬$ {F N{x6K< +(L@S ^ć_t\_Q¥ +^PlQ^2#@(dD2B ;h4w`4SiMHB_KL6qW=UcdhSe"p4S^Aox@D)1< +M.[O\Q"@'a WDK6M/>IY|˝ׄ#"dl^B$"LOB ?)s|6ӾqSݟą;ǾkCZGV{g=wG1@VX4L9ɼ @PP;%²mNvbz`=>QݤdPk_b^x;#u,B|GZ}iIK8.Jȡu63g Ju0RPLvlO㼚U2%qFg"wf&WϺ T %Awxv8=5D3w}.tB  *(w.θ$_wtI)<3d*N] PIHXBCu`g~<ÈH 'w(9QξLPR2 8VP!x@NL_lq_U(YhZ[YRR>}HGg *# wP:T[ƴ&agT*DnD>[Es!´Ag35)MLq}>3?8<@- c91LQ7Tx@p'ڨ3S$&oJc`NPst94'TryMa +LG݂"0M;.= T&VTϺ/_7zJصw$:{lGG"fkO X==J@qm_i(QdvE9$g5l 0a S=h3XԎO0O8O!l[ Qh\ߏ +a<>LU3ǞV,f[s.qvۧOqlށ3R?,wl t/dACՏG:OOr#?`/q~&^³,,Ya)hNdTػ^씇DKaQ>0K$y!$cʞ«щlJ-rБM +g΀('@B>L/NHE5;/|vƲA m\T-#ID`Q%螙U:e"gmo:WI$,X-FBa%YL⨙M6UU u7(Tr[q\6C o +aޒ[Q!VJ4Q7J-Z#TS(KBa?4piձp5(e4c}B +jj'~qRHV3S&@h 5UjxUv % )JG>~%oR6MJy4:Qk7)@#Mg*˱$-:8fҤ( ^A,`:B7}Cy:D%]8L +e6c]5Ѓ"?%MYMPY~`3^k3_3 +ЁT#y,O" )Bh_dOhДoNJۈx&HBP&6qP%6q"ԃ^-.,.ФBebEiiĭT ûם$g6"A\Q~#Hȡ[f ݎO͏c@2cX(eQ섅y;LEGX+z'1`Q3,4Z5P6C2=y =Mp)԰ҡyaSO'ZXHPjf`Pa襮l$a!60& XH)E\N,t$B_xBZ2WLg6I^.%u;A]xd6nj2ɩ\#!DLRsGc&RCB$Pn\"Y|7yڳB4h<;#c@v$Q6؝#UcH/1@K.\uzOٻh G6׻!AfU^3 .TD$ +=)ىhFheMaU6EC򣁧]5~N;r-. ȥzS'u[4~BU,Oyb_#Azy^h@ܒQn+ndڷ :Rt |o:1 OڟD@sAwQ?=N.fb,ւ6*?}LAUǟ2;*]"n +#{sץ|jִ9:$jclG?y nypViin#!e4#f̜EO9p_G1 B2q4pk Gq@l5Æ$_@~"ucpڬM +j M"pYZxDAhG3pU}>7*4Rrp+/Lq%` L݌,7*Iv=IeUá~Jd+. +gL5Nr$Ԥk+t4`hNzDwsD [^/I!pqDQ˰5 Qʠt9VQs~ՀW΢ۙM`=>a(?\$E0ǽ-ǀ[QӶuEA+꜏7[luS4Xj9jo3~{}RWfQr_n{E7#'S9uE ~h]Qfh]QEq#TQi5PtE +t kal*(eDV||4(.Q#*g w\3 s_<=͢M(u]Ea-}ʢj*SJG0k(CR¦ړGdTh6 Ud3JsH+7q% h>z%(ș׉dASƝ#Ŏג2m>zQ;"fRl%Gd=Œ*5YعB CJ^r %PiY %RZ%^HpAK` Sc]]#>ե>z KkUZ-uIݛ28jYsjե{mV3J?Hb%GIpԯY%1.ݥE]mJeˀxC Ɛ" d Ȼa1% BSD#AJ} @D] -Bϕ֎)RЇyIiHR_*qA.мd`RT%k)[OLm!&/ػt)ouzH .XSy,-uH}Cj:ݼ&CR!ŗ +ڶ.:P:ͻMDj7>z'z@Zb"uZ£j"u (L(/ ht/yVQ*8t/-nIO"qf D{)fݥ]f/J*߼^e!]S.M@j-R +mKT'X T" XI"H8}`e@N`KfQ7HRjw{QZLb# eRRh@ +Gu3 M$I<"`~Z{T] %;{=%N`Ly$U/Yr(/d~/1IԗjANV*`&e}|%Kwsőɑ#nhP|3…k}I8J'!>`@v)vvtZHX]G +rLG\z 1#%`jFCĞM_M2g{Y*n50#ӗE9|\p`!ݿ׉2TRoOijg`d8SrMjS1&;]x{zطR,1V bP)-tV!I``LÈR +.ܙJ|nk OK}O&Ui:6]KӞö4]oj +u S'.IiRسL`Λ&#O){m*y|SY1{jMƦ+ʼnclE)rGUrj.hb* +Xgp x1% ;y@NCp3D9xR~ amIT`. N$9N$8l-SC Q BJ=;i9|œ:9qi.u:Vϯ5M^r|g:mX+Qv[}+vNN wɚ-}ƑBvHĠ"iXAym⫬ZM VDEv"Dž 9m>4O.p2WE]Zj3eV¯Z@vEdİG0=-dœdT󧿵tb/t<~ΙvdDpr+~Nk~"* 75KacT%Ёڜ0osG˾z.&&|@PUj 4 \PĀlXLGb莠wg?soB3a2K% "C?*Bc1@! ŃTLB،Hvl4tjgчPn@3d ^7L7F}ʙ S՛zO^@Mc ^~WT\$^Ć=AZv8}!J-L9d8#7i +5T!\M@Pۛl*}Mer=şDP3`bf9,sUA- +wV%e >=\}JWNAP9aݖɿ h+H +K:''7%PE>3>+(UȔ1=ٸ/mgHQJbD(ZXS&I MûT$Vz5s#<gl@ j&?44E[D*=`J +_A7R+I TbgzJ DPWܔ Jiᶻ+W| 3L(2}mhwކTTR[E }MeQ $fw23s;U,g +YΜ1g0*^!ȗ3KɔhO!uD4uga*a8'4+7JqU3@!ֽHNYAnR)'')2絛T6ݻ;Dl˜URj N&Hˇ)SFZ"c,;RI:cx,3L^eا遟M_J{bcb*F +*߸7N C_um@i +:N"S$>%+%S`F=2xQ-2u.YNE_y1D6@#S˷C> U5S%hI|JH|i[TQgIUsq\aƣóJYuS 3}yHw[aiw{/ +RJҿVƄKT )W{qӻyG1O<0 VzQnUNuWm>F]!c%/7Gîoa‹|)0mY*Db~V;GŧOH׫*UjKrVuV;CP !Dh"WW8'úm?Yfͽ"` ZB=nWբ0^g/w5Q2KQJWګ=Rp^]_t KVl4n.r]P_'_ȹ;J.HK$FXp\XfVd$X DP6g8jh+zȷ +U}n2Oq"lT$v)6۠,y',2&b +C^\Xis5y 0bl K2?@x`j!q7cz)*.llƏX@Áso8*d\ΕԊ,N{3=?jk-ң$Yc:5d^n`U%$vo 0L%hrku[1S }뎪Y UO,MyXR7ɏ8շ[.B~$VسK '@uF(aᇸnʼJUU q> 2U{^P[o/;8]1#b`J~,HтB{^Ng@^KD +AprQFdh+'i*Xʙ|Je=ǘCCT(Ս #5 dFJ/|GgDZ,XC}'P9ԛP{j@509ǣCH)< Fbѽ^B4-XL5_#nA n],l= GsFi2ОZf`a`:o`c "}{I0zb@9p*nL)#[X ]ʂ5U@ׄoCX"w yCѺ̙#rmR C,nߕ S`mEW൘3־?xuU-X\E,ҎRX>ь=-ɩa9@ق%ػEgȶ^$KEc +-"S VE飒A|$3!Κ5I+H𭽺bHK\%.:j L_bAzᩂ<*mRs #`cEoXM,4 )HZ]M%XP)VX4u,`E J;n6W%XsNrbGJ<.}w6@'19[͒E$r p +d`Dq{"&%=o oM?9Ыm ֯6+k&`w#jB%QܴJ,)q y8g:WŰ83y(rv ,Yz%X_B-Mz+ו~sh/lk.|HU\>)<[5:茍bf7`AHj>E"QCJ7 _ҍRJiQU$(RiU,F#iO!X s~ժ%W74DZl37YKѫD8k'V{2͈MK0J +" +FتsU䊧ճ,'[GwXEt:@s)7>xE}Z2/BUC]} 5uPF+"X`T V'gcn"X;of`VƢ @Wj X@R*q֩0Si۾Sˌ'g;.JXu^>`*Q%H|"ЁuI7]TRX^qf7|n̕jښ@Sz+X5 +^4^ibf3;XCPم?aUIT ̱%\UL_s`9!2Ҟx0>}Ѷ_fi0/JtWD0%4MѮ[x5b?̩` LַF , +(CtzRL46k԰~^ΜZD& ֘?سxf]kY-&S/x+6: ,1hxK$N%l~Tt_+*:N %U3VKs +4Q ,Q ``зJwS˪ ,!m^BjMPů}%~ch}>Kȃ]Ő^+\[_4YOebzg`|[fM]%4B +G? +BYoh̥:Xrt5[ܯG-do  N B8bϭdz6Lb/ڇYsOҥP)/)a|q +tva{g 'N>5Vjn9$АQ`u_{+Y +B -!LVn'h'~hηQ`-^->> X%ʊL?$:p`@YI`(T{E%"=0-I 0D]B)m23|EA@ "՗h [uCV)8ZWO³uZ((/Z歹`ˍ% aᬨZn +u!ֈ`J_% 9XiW4r5h +vlֺ+W"ᢈ#֜?bǩUw| f-u`ݽ [ʤ_ԃ&dQl? +r`KEV0Dj+#GKK-.cFV` te"30 a#1R8X7.Fx>f0 +{Oa4a#фBA0GHRvX(45)xTS0!cHa8O5',x}l6/#+8Af0bR-|3"HiaO41R(&fV&  +T$ !!Jnsy)F#C1ڮ]\DTmF']).h/}/SՊ/'tR%ϰ}d {e΄ !D-ܬB?xг29)z#Rmqؒ2}ԗ@GJ*cFB?!'D]C`%$Ah[f@Sk# + $!X3b˾&E&bPB5Fs=l pj?W?}vrBn2G(`Je1)ߌrjRݩ/\TJ#-Lj/a̦ +&BJQ80BU|X^YY;h';0Rpk3*!*ssc'΋VtfY{RyO"1%/QrjE,a79-ےCiLa>5' R}$$O^1[ڱzXqDMt:_*A:SۯȀ7g z l?{oN[؎yr1@~*4lW2𯖦$c]iC}9_SN~)hd"C`f( `5&[ !q&cZP? b6VJt_':pvN/ht@͜3}P1 s /c EV=z(N3!)U(Fb^p +p03@v%< +qi4Ҡ3VnxںQDyr#q~h"iў(gs˛􌲔y)8äc&md梨*gA;S?WgIp94a``\g" rsLv+XB}Ɲg\cof"U~3_pU1 +IlabԕG?3 & h`,XX!#7eÜ! 0QAzPsƕ<49a= H,gG2aEK9&ȹ&WMK03L ̈́3܆;͵Ce+i|gITiaKHW +G#Ć9{Щ}I|(9ϖoC픻3ب*}1gTꮦy+":sP'₎H劊HĜo $}+3͎m{92gL_NZ1F?mbBڗ!sdcP5[da|ˀ$(c9`x9c^L4k6t9,A.3DUm7υ+t]p.gΪ9F +[8a.`Mp E[2()].\^lx Te3 Wl,JgEyy PmKy8sFk #m\ZLJrF;j)/g0GetëFr&E Yh&b8e!疦@*1/yRr *]bD(dDNsF\3C?8Ü޳P+H6~9d#}(nĴy9E{d~5Aiovq 3d'd\/ 6*C19iFfm9({ +pm +(亜im@t.g[ sCɒ] ^ts9CJ*Deb3x7p.gI؅L1 +iYvFo{)Bd=ї33ڞ.qe5UIufHGeJV=|zqHmӡ1yE̡F(g8 +6Ġ6c-6B}E 1[)!Q=' -ҥU"C?)g˰Bvn>5wE%gJ0Hs(ӎs(;9cla̬'gxD<{+ш9XXO7,䌂Hl)FЯ›'g&= V63iB +mUwɉL +X _ `$7LݫQ͈(J4{ ilrU%eXmjZ}rFwȳOpná39& _aMnr0WrƩE sG͈D: f1ZyJp`B9!B= ZkU ,mYx af-Z$*gU`8Bcce.Xd5"9krFW 9^C=4ܿWXBm6Why: ܁(y%Ȥr%THQnvY 3"nXT'XR(Sؚ:ښ9s-BԦ@X`|LHE[gpL3[ΘpVcbjp= 8Á#CZPtP˝0s˶*%:bYEю^hu"ZΘtp<3|eebe9#6M:~t|k[¿ uy)Њx3 ^"]-g8o(^7ʖ =EE>e7q+Ÿ2jKa8ȗfXB³ N/Ay'3XOWΨ ^Rެ7y7 pCzH*5[9IXE,Z׽ (wŖpȇ+g`d'\&涡`TH;!׆ϊm8GSЫl^V%T>Y4yS*g Xȵ.g+ltڠyTh#G.gؽ̤/ךrƀG1rA>YmxNX4sH2xnfQӾyPr6<WMIr n@ z=f +xy]\`Mb&U*vrcOKar Z01j!`eR9#SbHWpJZrIWfYH?KV^7!$@׿N( t +#O24?৾|WP!ƚ$4"_3\c^Yd_)ڞKӃd_[w9#l#=Qi_m<ٖa03m}BL/پ:%rrd0duYn +ϳd/Y&зt.%r[SNǚ˲k=jȰ} $t9.Msm} Dx(x6ir ýg0&kh_Rϓy*\6 } 7 T1:)noz~9*<OXa@3H^J'^0htXەYhI +l#Ș4]Mmcy-E C_0+wɓ2e9Âax ȭ`w17(Czv yw"tM>c:Hiנ079]1\AmktFЮ!H>(ȷv1wJn/3Pe{>א`'ۗ6GD$xp-g|R_ D3sjL]"W>~A"„i+g3;UBX(z\qOQIrFJxoSk*g(^V9C43 DoJm`mr\&;&,IW"DŽ` &Q9CCPs("~:mo3JIkhrݫgqǒ*-gy)NTΈ{c43T!h[|} ++wWq6p #o5WrxWJjPCrD@^va``)c;,W sEzc9#3ZS=PY W {F2o.6f${r^GwL-rԭB + W+hL匫E_pW\36/aP0Tdd-?9c;[Pt R43mH.~C.]QPo$? K5sm/R 'Iή4E 9,TCXD .RUI+sE8fn>g"_5zP S 'gȃ}va*M,MO?@~̜-@)Xm0~(=Έ܉'n:5 5q 7!D"OJ8%R)˘WyaI}9ÀHrїh1Hv㌴08JMYi h`$XXLgT̑`3D?c֒c҆@iXU֎U!{ k3=1NE6Jj>8^ǯ)R C ;Ks3t+y]22hфO%Wc8 3(2r5&%N!Q߶]}SBDч?ު۪Nvȝo"3%W*v3 0/ 29":"[ T/z'aCF^v⯜Eav׷^CEBQ .ȄvyP9crHBF3xo]DsrBC9H!3a$3W$Dc*Ct 玛m ͊)9cc̀L ?Szݶ`A3R1T%>9dOqUNleZ0@9#I8.[ȧG\}b#.KH!ie8AJҲI!Pr(4P{1嗜!UUGPb[.t/M*}1yX +-rɣ!`d*]7JrD-d*IO LRAaRb%ґWu(E# +9q:Xd X+An#gk dMou?>e$0rh˿B(9cA$͆ D?B]|`Wm 'g#vyT79#e3 }pû4аM,{ qqT[;.9C\rW"By7hZoSCa "}xvY25 +ݹ: %g^kyYЪ󌜱iM%*;HaU- +U :U3Mջ [#gJ08˃DžD`谾b +"V< 9#gEN 9Ȓg E8Y9Dڞ@nU~Ќp k):9WYB*_TN Ɏ@R{~ ܷogWhWE(jH-$xB@ )_q~1Du,%g`.P<Ψ佖VPgTW[Pc31@%\r15xc~!)s +b7E}zP|3T'Pe1f +y!gU 3@۞ +C>w t7-VqP')gT$\gd=r+/UI$8QC!R^cp 8?;5}3  "pIxo¿+8Q% + kCkS]qB8 -A&FRL*m3|AY.,E[B6682”a{keLK]6d}sbfo2̞3Έx?_<dY53XNWl2gh%2E:,ΨWhD -}LVvSuwȤqk"]zSZpq_8;8Ҙa(yf@Kv}j9 &ueK~g8Eq6r@4w:G:{ tf̊qFam+tlkrjرcQ9ufhz8JGXQ' _**N> g,qy1;"g8rd9#);"gYir_lKΐ>wq65O9c LEt闲59 O~g]l;8xHH;9 EV2098mhuzMHppo.017.rʩLK4) QDUxE/km-m wFNsa{<-gnfr3"]| qL(3;q )z1ޗ9. Ds 8 -՜"}e7# k+t_*a>dҠ;P0I~ߋ#0C]=Pp3жS4@꫆ ̒qLrO \MdmGP[*ԼXBZcco !:8C:68sngh4Y32nRja@ ^ŵ0|:[rJ%P$oڃ[P°6+^2GU~3rxRm[QB r6sz_R(mF56A5aX̴[)]̀A8؇%PY2 ؝9Vnۓ]2)D\ +uo[ +xq9pq.J'9@!= +gtK0H1032̷XąAvi'i¯ɳo|qR[ 嗠wg(L'g\Kw1$\\Pp k3&ru#b9ק,0La4"Jl3 >Uq.QR\*MT[) ڼǮ/3,"=<:0#= \yM-m(%00lzJb38J:DP&wQ Z=WB_,7Jl>Y[:e9~&0D`x0d |[LtE`@r…a0?< +g,qk<(. @Ų}*IqX *Έ#xyIB6%lS4M@o3TIrDn*5`*SAp]Q ahn8 +R*5nZfl VM"k枊%L&x0XjJreK93ne%hx0xI6J]5> gg Ec'm7{O5g TAMk2>p_:d^X4q_sop&ֵg8`R i0CCű9L 2.&xZ_3TGR 93!8OeU C p4rLhZǾdU.vt,vq8C4-8Cpo=VRZB' G`[4N0o%W?쉍i {σ=tY}+_(? ݠYw2n=ghZ#\gu%dM>$gD)_/.:w*3xB|@$ΨEg /$MN58PDG8zxc}?!p `;'<.@Li8#C#*W_XZу4 PY0//l(j_ߞmP<c4r(^t}+G3SC{/:gMr/*@.8#ʽ!8#7OdgSV&Ulp2abOӎ8gh#7GDqčHA$\xJ0m "KV1$:oEf8#>+-+ +Yf(9ɱ72_e|i/2pr 5&j„"P򬲐o/A7#*K7|U)q.l@h4M +f^GґT4g}3zltcwVH|3<|X'!5pR&Rt(IKdߌ8I0KzloWp1$g~3&zN[(]%l4 ~3 #0w9ֺ \3fMV0ǭo08cd[Ϝ=7G8j9J2TP3t9چKUi2?m$A8C{!C!Ng'mnV` n坡zbó:Q)/0u 5]Rq>F__gZ0@cHnD.]𞑴 3kHC/.Y$oß[UW6ΐf2Da`-38?:8c(Z ̕ >IpdQ7 Qզ/h8:ˬ^ǝf cvGzKJ} Se#6FXég fAJxGX''"H%3,=^ɣg1S{61kh3 ` MQvgB.W<𽫌qpvHU!uʚʔn $pFWGmf=xWȌ%>aX ͡' Dc5?4ubqFP<Ճ1G|gnR ;s 8`|9w[S1# +Dc^`1&00PUޒqE y1J2cy" +uLW MVpžHD}|ј a&/6&|/V{QX{a؋w&KL7 1W ih-:eLQdɱOxvewQ"yO,ɘ5/>0DodJ(ګ|r7Om6E`}S +~H-iuS@)k_!U.2s,3ZhYpelut/s{ya&5 d0f33d^fi i&լԒ6fScof(B miP9?Y΢5WifkuW; خ%g|-ܲa??kwQ>yMjh Cq$ybn̋}MB #>Z*M‘g^̗45q:f Cj+xY +yh^KŻu/l/N+ᅪA|04 `dž<,jR;?)yS/pj{ HVHe˫!`-GY;֖[[YxTFx H," \; /5%bxq/|56ڄ7Y[9ݤ8c{o-98h=SFg-1؆Ok[+95[cd> c_+zċĵuԹI`)kd`GKbZ]ܚtv5iEMۅq.p~]tm]L˜E{(|vD7DB?C;J\$őnr'.yI.NZa :Pq q\s r- +.lsB0E-6-oo\JBp\[D*@YJ0@T\|Hٶ5{Htf 5k:Tbk1] Ym- +ZHZ+^VqxZ[jvO-L5tx{EZ]3~CUZJ5C (okB?w YdbzHPD}3ZaYP,2P"HBQVYd( u-E/d,ʿk*$Cf?ױkXXw++=W`ؠesk;<+E lQ׮Yڽ +"Y,Zn[aV|M^Pqטob|҈] +_^[Vzvl9_oAx-Vk. k3}``+̯V1ppCFg, ap{bH'pg +q}D#Δ<_rO|Sq»,.D0 Q3N wK'vqW)nq n|r"w ''09MWNnxދ)Ϊrv\nx=t60'7 dq9JcD^ [6Iumb2tBpFW (+2窚Ct*kNfsVos8u.ϩ$=sЉsb1+X+tiatc.: %sbg891Bz *NTU:c8N MM:oBDd/m"km‡f&&fMtCjBaP4~424!u Mg b=*fbҝJ w.Q|3Qio҆gEL M7{U3AO'GLyUxs&PigNGL4NҦϦsu`3o΄S+v8olT΄*Bs&hMs\))fS- ' e.L@u\( +L@L7)oȄ/4 ʒLm| +21H믬O 旟.]ۑ u/8 VuɜDGkuwn]x56a뷇 D&yvDv5;0edJ^Zyd%3܎E2mwݯ[o3r%"y3#ם)~ӤN\w ܣ=If8--1$vGhCwKUxN2QsT,8 &ݻgւ1zݖQ2Srw޻-,nť^ N>POH`Q z%$}H&,fwW0!eyG:,/Â^Urypw4aDqAWm:K /]&_%8%PwBztG/+[;[6ID{p"·/J3~Vp%{os|H=3}o'2dVP5"d'=p/yzy];; +p>|*?t>t>(Jav5ۈv'wþF6â7ݗxwﳷ | w?Ga/C'՜a~ߦ^u+tr&WǷ_>'oܖ.j%ɣRf_/IY'響mHqJ_@iYcY;R36nsB{{T x|`ES +~ )`s[alF{|i> cyHW/H>T5Y=$o +t{m`{7j=0r1W*P6)0 +^% d7\EEIDpCz9S/+l:Z-;FyhU yª0тB6[<|Sf]$V`&5 J;svwZu;; +"e + +LP;쀃ڲ; `\?F WZuًalJ!b:|oDq0ngсsiVFE}c -HFn7l^*Ֆn`Ŗº>'7t>S0 ] M[~pl!۵(T^K,"ᄜ ?-00Y`lHcCbA LװװA=l =k@ja.B2VI`@]F,Șjf*FjȖbɺRn: \r2Ď*@NS)Z %vTs] |"H D + @NJ4W +^}_y%+pC+\CZ!!c@ ^]1pu5PRN%!rV ZIv +t:W_Հ(eY jSLG:kA5W`PQK mRjb,SQBZYToYRkJ EU+j7*8Y"ԐzT(N)< zQknLQȁC-5v{nUK=B۱ + Z+L >\PiM'3s YU~t<=@4鸣4[ӀXLa( BG*0Gjk4,G4hih8;B& \@߅>@J x@x\+CtA TZ3H3Lv3 +D ׄ  Wu'k˰l_@^W/ +PpMdd~;h@dEWz ?v x0@Dnl .bc@5$rC3Y S1Ű_bB ,PÞa0SP4 8uE$`x`V/ZR;a`h=`5ЪBg_d +@Z`Zg@f 5 ,j_Hf/3P sח(f`6 vС ۴e`c(3PoY@/5eN$GcuYx:2^H.20{>vY &@0 TU 6P?g =` #f54,K + Y E{3蔘80 -e[ +`"->NcO20 ҊbF,@ gy`?6@PN +_4PvDb4/]a +W(ǭ +% + +ZRV,V0s^MUpȬ]Li ڸTB9ó'h`Q!iuTpE * 0'x +>M!` ) rR LAL"߇D}o׏FmEQ>(ve.f'`JIJ'Wkf6z )  "ZFhٱl  >stream +?7ݻs?W k1n_z}sswss9܄p[n]}ܺەa}_x{/ons {ᘿ0 o\?i7&a06?߷'x]ܤpn~_ðñpsw1oݽcߖ0naxq,}8vI;ݛvw+[{[׻0/>[v/ػǾw>޲[>vnʟp1o_w}v&rs._n1,Ǿucٍwy+_巷v y..m~anInyܺe]޺ۻma ocw۾xw}}$Qnܺ1{aw~X==ۘsw7o}w~w.o=~w}ݼF~]]znuׅ=~ ucοM s|\.[oo>q, r޷10˟xطuI+oǝ;v?ׅs}.ns{o~.~~{7w.X[/ߕ}cno wyñ=k|{woxq[؍;漕 p op+q{qmpﰗe9ޟuxû1oc;{ݷ?cv2?c?wwsXc|r[ywy|˝raƭ9w_ߺ&5s_ny^vm7/rv7e}vwݿsay˹-~ְ-{.}߿ݿ{­;/6oc\6qoc9nÞ󶻱w;[n^~>~o+noƞ>[~[I7 }+ w7{m8m{ocv^p㮡 0|$ȉ@ ?~y+w9»}_*خ=ܤ~]$ LTp$PkHpcJٕdwsXn܅we /w]powI/!zbpC*82fT-`q%fd$fFf`CcmQMQ@FH-JZsh:Ffpɚkj8R# È7>!Z=9" Oh +.`pbP@#"XI)$0ZC3ZyxJhlEӷ HERA臝 +s+V[b5Ff#2!54$'h) z?GO)f=p)jR#)^ƺX[!znH!AQZIЙ[bŏ*)&XB' +`h,_dħ>j Ȥe(eWdAΎ# +Gb\bepZ[^e7NI uKG R9~P91'VeuO`TƵt$Sskq +CJYs+NW7K^{@cDzj:&v5 ".\ g.aVOVHϙزvՔ39Z6d6S;Z=u(iᔮSo%9-􆖬W^t-DpLfvU\K8rC*+WȄcZ--Q1:؈t(CNpXcEFؚZn85$MKҴ-9^WYpzS3V[b(U5>6 + QĶQF܎V>xZ)bFS |4 dv㩡e׎wFY,p@E $9`~h 9RЊRĂQYN7$E-=93/%%2άk.y}i.#]U/ =_`ɪ 14,!HA%N& ;V4\X "p`i!Ə/9̊s*IVQZG)'N"TCG^dhmz,KKHo)zX 0$k7 9MD ""23\cZclHՖ#Rg=cDZo+*j"*²14)ADpj +WvDj +WvW؊Tny nT)fz@HAM!Fy:J*YYڰ +3+N}fARS6"uer(oYZz2rzg;Eza}C3=.' fQ B*2h1ai"@XV;D;5.j$q6 +$:0 CKFYR5G4x8JCNQRGJ IH"V_hCG}nsm8 /R"npˍ$0$(`HO695v#\D +FLfF`"T=TSCHA'Xmy.0kHŠ29ЎXa$*5PdVT)q@*`&ZCKU#6# -82%6W!. @ 'MF$ Hp7?Zh4A$=+h:BA +FZ#41$5Ti2q4 uEnHZEc^e !104OYԊSVmi̊0*JU LA5G)*6bAjcDҩ%'XfC`qԒ:AJKy=Z^M.Vnǹc^7 >iSד5ΐ*ZcdF+n=Y®)]{< +Lʲ-6%[1iZ8xIљTlW(5,\Ʊ;Djb5vC+ˬh*,/e]dZFD5+85c׼i^_99rcgZqs3ΰݑ :H 9HU BP3CNݱ)'v`!=AQ3P$( #TBN_TR>HNP nx8%25a + 4ޱ)em;5FvĎuU%&׮HxĪkWY:Z +"%5P"HaO5!v$ $4n57UT@@ҁ` )14$(Vp&X#/92=PĎxx3HAR;rڐSc1њK '1a rv1Bם2 ++X 4Ui71gXфN +E8=Ċ^sJD")T%uISStͫLIVwn( +!Yy!.#8̘ۑtYc$gNr~hhHM*cҿ^ⷤOiI %ip!I&XMِVّ^(\ELIh #VgL8g~WJ8V;RA,iա!94%Ͳ-.~K\Yrh(-8[3eUt$u3Nm9gͪ)*$(QՑSgi!5jǑ ::rÙC^m:eέ-"Z7K"DXEKx=Ȏ'+ ijS#ZSuvZq +闘PӋmG!AȪgsn9(*tI! @" 99$Ęx hmCHMS4l Iz@gnFҖ.XEy =7A5VtJ+'̐8S*aݦF,# HtGfr(XHZDQDG6!r )DBN`V,54p#kv@YёkG͇8b0#V/)A9|H7z@70!DŽ$\9؆tBh,UAK܎p^t-b #.1',adEiVP! +G8uk(my5pZA쎤pV1KF% ޱ`F+xbV`LݺTD  +K0eS|[Rb)Ě3"0Cb$8_q?@%[Zw=%-(^Is3ҳ +3JU7TZYxJWiuݘW`OII g[ְ? +ȤdvS-% bҰ[boaե#Vq<F5KRYu%afݔ5L ݱ!*dC* +XA㈈J RW$rC9;:vGXpFJQXE8&S\hCiŹ!r|4ĊSoe 0$CK7Kbq<E6 !,\c3%XI3w!vE)Vl^- U+'bE<3~\ ņ:Gܐ0L +EdDhnG3 +\p$ + +B.E]fI%27ihCzZ1}Qdj8І4tz<_$/L +DBx$I hZ|<!!-YpC :EG65^!θqNSit+kjC -Oc' +/X-B/VG !TݐaN8nFKwt-t1a{|l '8rF혲30&tg)K:#hiV-< +Sduؐi[7cB&H̆.%fpcZa,i/tg̖3lYVX-iY +ÇYpa9bTdV|Rq"TBK8lMj$EX2rRy\)ee93Vy~̫릴p 41gVe ˢ)eMXZb9Yb9Qʾ.ew;'KI cZJwKPss%-5R)8܏Ze#RQ!TDP94OfS 99M۲锖vK ر![p : i-HWb#2CGL*.!]DČfQTU Ѥ22#)EKYj wlEڅf$ "42;B5f!pj +3#-2!6W5ÎPMQz0:4rBi!TFKlX3(a@FSH +2=v@Xxڐҁs#xV*H|XȜ py!)+@^bE <놤ez8j EI|H/ 5؎94L"IHMeݔY';EP XFO'\A(mIĊQQji=Q +A_dHR "VFN*,!uK\Er,<2+b'T3;FulǪWT&lκs@f) +1-~KQ(Y喰voځOg ‘-ii9kj#;Z7!jJF[#-CNGP :DM$XgKgOS`r:eTy}ݚt~dedȹkZYeS[7USA@5SҭR1ir^ig:9;3gNY +@6$%Yy%ZBhP +/z +Sbm8%-+!Kj^LٖXuy [9>!.Uc$TEzLbXTm9rk*I!rSebep:ȎFװɧ):Dj=YܱXoh-1![F̌x77354@ LH  p"fh r.JUDq=WbHQ*"eS+% `Ad0 +Fif:UK^kjk &vb!zf!H08sKlXȌQ" !X%eBL耔( q 5_nc>XIZbDh9.FO +V|4U2d!!$XCFpfH(iAF.HP\DO-#K iF 0Ja#Bt $!RFL0 +JUĈ3LXe +zVє$} 2jFgf׼rӼvLf&pAU\BʋHqG!(uy0Ҋ1ksb|Jؠ%A%=NTxJW\n骚-]g7,otng8Dkm*ܱNW\95pn%/!G35 ސr@X%-fѣv%FܐO )au;c431)IՔʖJnbCNB}P5Ĉ8yT?yF230UeJE)\:fXZZR~LIK(Rba)bH)in ԓxz)*c Ip -"uCBe;J}嵆VАLlYĎ3ͬX5"zjDa%QwpŚ\bS#1DNP)\p٠C,B6jE(H1AǓSCGSJk8ĘQ6 |`1@,hzc\1^ IB[Қ +J;AOvFȉÎgP lx<1zhnD(΋ +a41HBrEM(^G tpyLHj +B(P tÍpAgH=RW"]"# ؐm@~T + iJUiLN Hސ *!"1D&n :0!-CVOTZqhH@ + ![ +ocMc BxG)M+@KC!(65rΡ)3ڹ1!s2~Aygiա%7M[Zy5[w@zx?1x4.zB 6r*RA h*/T6{@#օ2s3VYUFvOTmIlKל)pѬe%kd %W)K-E~,pe%=Scfݲ9kZE|`)^E)wW$2~ՠ-zCCZSV 9IRYUQU g=%(H2!qi561ƴKY[shU#V[^*LiM͜W33cfefy%皎ݱ%kғ$tLVUfF~(Lxwnr  +d&Fb%ycv Qy^ꁕEtٱcn ֘[%&td''x)JI#21-\7$]4^q >%+OTlZSRG i嘲@>%,Яy9(e}I˖e%-Z1$jSVpd9'Z +-i9~HIhӌeOәNIYYQQʦ|DlgxJ:Ia0zW#=!RD󀑜ЊO&p)1iIv +lΫMZɱS3>s<&SB6!(Y}~9v]9DJ(np#odM)esf}>%DG* %v@q5:f +qơ)gM9IBNY50!"GF|>ԃ<#H9)%*S B؛\CBL|8vêJ']0;NS6db4ݠf`cdC;N}xt +188ԆrEOI_2'1:ԂQ\g2s /~XcRҪ1ExkGtB89Z".2LJBEM'^FVݐLwxUNX a-3.qf&xJ%/"+В O&`FOS !Zwc6^~Vn&bCO +@VhDO*hG1"`V7& : +EŁ%$U8$)G|B)+g܆shA*Ǔ07RZGHtrC.k@>+OǔQR953$fԈoi :3~Q6^vy!ǒnǏќri!Y]dR{f[^qhH PJ"Ť} tr(YSTG+hWim4o&H:hIxkǼr¶JGpM,ǴoפY+x4xU܄Hffƨ S,$5雏8`-!# +,$E,xCN{>eO3j[^E*] 9]H!DeSRg1Tu¼VU8ܒ%`GPݔ~|JQ@f-0FoHRkpf9B 2XƼȐ 9lJ+HÌj|PidtVhYP: ]!ܑtV !03$)N׌ +-)5 +LS +.4'umfnFјZmIiJ BeBP :rF+M8Ź g XvBj$5/eGJ +GLBa&I|lgȊҕůK`@ +H'-KLĤ4K i5(0z8z#d8*\#V<&,"0Y:A' 5 !:׈@!Egli,)+RWbA艫(Ɍ sDm!:8Lc;vDz Na=!B[*^<2 7#q~D2)!䥆#Nq<%z:kb_`FjUUz?JXp As1ab?q^Kj 8-|T2SD@TntLY贮:kxAEmimq!:4eus*ZMZ[3tAzFe"dFxJQ=>'SҺ])$'i>;ĆN\s~\yxLY(U݌4 Ip˫Ϗ𪁫P(3 &mr1e;QʾX1]#j*QTD3 lYxJY=ͺ fMc3+zt Iᒞ1b ZVa5,P/\Q.(NhͰFW5+z،U( 9N?JVo8VW$ +)+ hx 1 +FQZHϘY +UHƱ!jpĪ99(GHP27) ʺg 98P@EPUtR݆ 7;lpI8ĎsItA Vf,c`GIJH3GP*/$̬8hJږs^MXT&S@@c麔@$)$4j F &I%@!防=%@N+ k=K+~@(]Ֆt){5=@$ē~F)VSd-1ZQCK:fcV=&03Ay[+5EsZKP/2㬪93J"M7p`ܐz)N.)GY3ϒG `k * i,┃ 1-k?%=>'ֶKVqЙV8~,bk6!݄,՘)Ӫ-7#2`IgMmHݱ%iIY3-M!Be"REI?R!d>'!56i4PZY1!X'X03BKz<;RH3TD_8&S혖p kX.iCev9 Jek.J`5CIL @T^DPAȻbH ++Hձ0uPeIP K1pB8zCCF:DQҔċGۄCkH!v;钵Wxf 8&Q+N3 9eD +BbfD3^y>$3ZWb5z"QFMz@;TcC1VݐYzZŭI;z!15$i:eUK;_&!˱CDB%3T$|0!M88>W0!#[ )(/M16(lgk +,X&E3%A؈ѝn D=K5зkhŨIGM0esjH*8p%AWbIY"y Eg՞nMl,]bD,8s')`0C0PRD,<[XL Fy!6l 'ű7]tcn:[~9۶X +Y27 n[x֜'ۃ%Dg*!|?K[g+v?6Wz# 5=\Ǘ$ AuZOe"uPA섲vB@})wx0R$٭[4ARa8ݱOݴF4m Y" Cف[hy? OE|Tg=W:ĎVF -8z#Q(6!i@ YhI=eKZQ&Eo Y^wIV*<>#~ o)0(R + +ZCjk}.y&11ϧԊͦnœrܘF1\w1}Pp4NHCXTpE1x,6X +&d3!Vy}XcÒ +{R ' +e($E{=Oep}Ft㈍~;AJU΁JΊ'D~^x?<.]uݙn*nwg`{m6f?|]h>l{"ԔB{p 7܇bN(&czYFes}ZqB+YZT6+2jbH~g!VrBJaX&:Qdm@揎]U +.f."gz!5oN￷֩e1ώ}thE<-T9jQAط[0 *j_LmNYO:sxfֱ1R 0H{)-n?>sr"w[9xLBn3:G$fdm}icTapZV!QtQy1yx;y*Éh%>M^2*V\M44Bf +wKfQ$f>ĉ_)`/l/glR Aҧ-_ LRB +}Dfєu H}vhG]j,o<t[Dh5BuXCRCjcݾ8ؼ0lWԲ/"kt +>-Iu}H6Ӗh9t"毿F4qim]l ZzRnhsꬴb9Pi=7WNoq*ߑ$]=Ԋc/=ԡ$$"ڸAwRА8RtMx7@^ +ot@v<)B_@u譖t|Щm31ۤ#0ohMAd5gq[R$kbj}Fټ;HY|4DU"%lV3O@|i&ᾙ | LXJ@<^UzJ 9hvg=c^'js1fJ%vB ow7O,`Ѱntj7RQC }U+iٵG+m|}K+*? + pSԊ[4E[(r*BBmS>g44 Œv "-X\Ʊ.qE\QT!zSn*B!RW16!L|`Phe>&Z2Od׫nYD%icۦkÈdU&PƑbA-.0> G.fYgKqZ!,"J?.;d~}z# E7b0jƾZ. EAN$c0}$Jejp 8%dp!8NXm$M |""2 j;e 쏇7M%F(ɲ(Dİv9 o +bIhQ}[y;sV=rJQ?d? 6O !],Em0 Ld1ǧLt7mNqI7oɰO:DD`3:58rcE0! [s}QƒaQ$S:v0xhKWzR)󿥐o?S!IB6ZZP\V #{& 1aKg!!^Ȃz]+x<nM2D<3sJ[2* 3u|\ _+Ҝ 3+!GI :r$-<ѮXC3;E}x~rdѵ0D`֕)ƴ B=d^Yc:wޠYG(s'{??gو%c mfB nGk5h$(N-vg5 g]p+$:CzQ݋ՃBPwȄfInPuHxeEx_FOXp^#\ +2Oyѻy^0V_epA@*1@ ͸~o ٟ?>*sX%B pLD9M>zY : تK[%{QPA"Z#{6iI6yZԟKK()JϹ96Šg_ޘdvFau?(yw􊂧 + +0>Uղע أ XnSFԘT/U"UIS0CxW/7䮤0wN| nm2"+B|W,2jKEU(ō&K>dnf0{e Bl}7&Q +XjQVs FBgAe 20 #27wCs{p7(q:^3; qCeQq-VP + t˒d6l^JlP B&:ȋ{֫D!%mnHSj32#TnvmCp\a[Q:9`Eww/^"n%I # yekA/8X6z<܌oք[<V KH6u(oCע!PG/ a_9v^~:%- (ex4o9Jû~*G"-aUi=mG)0\LC474<%y +XۣXTM< +J) $wףwmNehb|־;j+XMlU]`cXF&K(9u_B. c/{X|*^vIc'kQ6B.=u`6<ɦäi^ks +Y?+h>K)bM}J. 0]o;e{w|oN#@(W'jwLf2bm:c< S=t̒~hŦ[|\bTkj46 2>ҾqZ6~8NQho x/ƢdUhf&sU<}[ "4P1BR_*uن"hnl%ۋwRA\_"t@AxY?_6e +o*rTgl"+@Jೄ{I2]A^ﮧVtN+NzY̊όwD]OSk| 4p:,U8۲\ +:3ݾ +xeVX$:B3`JZZTuِ|`(wMuDcFcV̄&4DT;F7K}w1- +ˤ~֍15X6V[=TSSI?n6aߚoiJQ6U@]rkL#ǸU!HB<*ӧF-p6[MX2X4-XRKXH 5@PԶ}ߦEB9PcZ` R`>S!v= +8Ӣncxxd d)VIl3JWcN>@ܩtdN=WLS±Ae_h|3n^RLYQ);jF\qMG|ްH +U($::z`"Rn~6EGwR(Q)^~~^c0dK n-6XKQgfEb?/o1X֊1X/JcD_%+IcYֶb/Db2mt4JF(QhEU(B\ն[qsr0npp4 lCU7f4;ɫbOܞ42ψ-pPqh#[DȣdrmA+Ӹ +N:'($|{= $ڂw3r6i)Μ Wtnjw̟}qw{}e(d +0kAsd7 4 aiz"OMԬ| + c|;/ &*.t+8RlL2Lܴ?Z"&)v@;+ݶ&Ug!eV朦Ѫp)d&Z K<`OUutrG8琽}=~9$əgm3[R\_<BVfmo#x5 |nRDqQA;a6z0dOe"yC< ė g9߳`X4'Dw*x|"-~cMӌ\XPGz1yS0˙+:u&/ fB4ֵbQnÆCvNkh#&aVLk 6.4}]:|Xq6iKt).3|gQJ߉Vb6*]=^LXY8kG38+RroRp7k 7R' ׽&vY0 ]NUj]㡗޲EE )./Ǐ (cxRd(  'tqTT!B'~q5IVKO}k&.!JwTT\ily^WIˉij.7=S}2#)jC*cWq벏3i])S݂L)<}}j K5UJF =~F7){~FcqmY uy:3+wpOI4uJd-fI;MLBEɞAho?183ش-_ Ė4.ketQGB`w/le<ƒ )-8A0۵섻/pZ,uzwF ;xgjúYy1GxoySȓI\>DCiEiOӧ juW`Q<&U˜V<- S\L@dVI/t + iXydCeRp V +Ǡڇ^st&x*Lx4DL]xܟZNxΧfP驥m)@8j!590 7TEmqA%iVr NȐIBNHS|ZkftHqP~ v2&cT#55P>M1%#lx=7g6Px^-D3fCJ3ZYN#ZX y{;i1#kuUZGXeMJxE. %C e/O'1xh#[:W ztl߶w=} v:]*> +c z#1*jD=E,}%TϮ6kGE%LZWiVQ|4.DRawHX!]ZW <'y\5C_y }_![-' t HHv 'h#KpPu~ኦv2w%ԗ1\R"{bA21G¦u;擦Y:g a3hAᶬ#i2u6L~j}u!' N~msNܘol.yk'Oԣe(3jF%EWqpYZ i6U {b.ܸUX6 q !V.`Un>+(D!OK^Wۗ i"`lXY'sʤ_XU<%lpG.8 uc!ixP[Ai`CZ})l_QY(+ t: t}?xSx)Џ@q/fHHZn!A9#-P{6SS'&*2;i ߠiu2b`(yzjv5<֭HHZu)na+~:n}AW 4y+H {''.@'US2L3T&um|WG*c,,jgt"PWGvh()s9=hzƧETB] + 0++R=ZtT-j/) ł|'vI=ak=A{.On/ERX K/ TGV{SqƑOƥK;) I+1k_T2pqfGo' +¢w-TRVƱr.%2:8OHYsrQM2|HIÂ}? 51I`ZJB>IRYl*^*nr/;cu~bB/ I?9?c"MΠiEBroS=H +B]x!+c+s"N5H71Z1,Ej}@;4/x`}|=a"ՓvO(x//aߔMpF&"FS>HJ"(m<ȐPtF`_V 4d6oDrpYߞ'h.TmaO;J:[$D1Pv|%DC*`U5Gk=!q,JLFE@%lЄs]{"P8H~Y1"Ī<g 8A 4JEM $"6Ϻrʏ+uw׮ʟFİǧͩMd-tu#ܠЃg4~"RCZ{``Y%PSq El:i2)/ޝZ2МxuF`wƆκjj2㰇2&k$@ֲ&U/S,~®I[ߐ OTwm>zyRQYC=zϐeYDV j3dّ-d dyy0cj2'ggl|bΐ 28ĤQ*~) ЊP{3dReX7din2rOgvF>)Y*Ibge3-tF>p[S+OPF)fv5~u%tvaRY׮2JebqQ=Y)k* Ԕ צlQC*U6rP^VƓu+-N\ U29AiEٖ#XVD"Z x2++yvqhk$5Fc)KGPG}.JNVȝdQvݝQ/w\2fKL5⍲ 2VBȴ$O3XST6'=W]h ~g4TwinY Se.;)3fWTeSA(rK`Vj2(O;\Ep|d4<9ƒeP-{.%^293gf˨cv>wqi9kZ OAcƮM4ڭhKhV\G&ѲG۽<*-43t zx A,^/+6۬Ȭpc]_#J;x/gv- Z|LgAe[)S`ڑUC0|m1Uۚ`&(kgTxsttڵ4^ +쵐:^zwF^3dU1ΨޛX;#[&/ZZvk ׼3g -\(_{ o!wF4u_{*կHX*9z.+ 631̄x< Ԫ2\@Qw'l5&ɳβ`k!fqqq+L/G/*۬`3 +VX *v`6<؞lwxg} G =ergz~Mwi|`in`{rg4Ɲ;6▜v3:7[v{fysg}}l0`KaSPwUټ:c=6Mܮl0WlE|67B[aw2GŴ!fAjAk׶HcۨmҰmnn3n[[ pwIăSy{'\+; +a39\z3C"Ôt +3š})H3j mWMi+nr_qI3=.n#r67A9T\f5 +O&`!}g r3±ri;9qEs\m1{s0 >P>윮w1[V,ܝQQ@ }-p9ι)zwn+VgͩDtg3RFsgTM&3QgwT;#NP" uvFCWaDE.tqavLM7a~0jaZ?] bQSPd-Hȟt !,wtj;];NMКM.Ýq5ɝVuvc`:@ԝ~ĝrg0L[]yg.%k5t.ȾI}G01HT'~:l_Q5C ΡSS$UK Tz&ZLR$= +]RO +mvȸ3J$wgK;vfi,I%Rgf,og(pgY l EwLI2:f 9` lSԕJBJbQwFKUbn:pq%uANN;=v?9u+`۝!zQݎvGv.ug( 0Յy#  ͐-pJ0Sy;/ͷw$7w 3v$~!ynP AsGCh $ԥxd JAzB(mI EvxFT|w]<\\;`=Θywn~;|qHRlݰ^uLYlg2k4a?7Z]'jo/! LuF|7@T(3ytFO#e'M}:#7g̣1ﰌ +>d^*J!uF :#(;:#a-c!"zW2:#/p :#o^^^?Oqd3.UdsYX͸D{m57(XC;C{!:6̮)$>qvFgZﱇ/W"yt0o ;=;I+|"/K+Έ0z'>w \Ev"W| "E3u1?VeghuW |fCD ˧kR[3\рS"@ڞ +v ]@W-Ԛ3X˜r:׺9#f K3EJU]PpVb(gR2 ++."}3ZK̪E+3 +.3*Չ j\ʔ3`5Z6M{3&3t ZSΠm;ohAЦf + 4n cT9>/,jbxX\ @"'U%&s1 ,m@A.hK /pMР'IcvX@M3J =mQ B3#dp9#~K00T-gL#: lTK.gE7V2>cpk]Γ l`h+"^ΨAZ%FVky%e? iœq~CI20rF))ᖁÑ/3@-gǻ ]Έ"+g9ޘKJlD[/a%匿!W3~mc9f`6C()6f]ȁ㙜ћi1;`2t)+^+T%g<^NP +kDj@ ~ Q"K1v#g0vyU)gzD}Z +hwq +q` (4hܞDޙƑ6_u+BGa g4 2aԫƍǶJ 9#LAH_39㕦a%3Gθ~x,o3"3Vi`GI@.Y& ic^Rk8TL7n ;9Cn`NB*eX3к +7t#5 3d9CW匹I)gD- +79z[#H.T`z* u-79#l@y$gHJ8W@Y TH#Ki13!% -CݙZӔ{rFe'gxoۧk ĖYX,#q;($g?Bl6rA&7Guuo,#if/(~3L p `ŁT#qxg0CSИ8Pη880a!Pxy;q3jmwn͓? 3~8R.S3 ql9r uzEpH 9Lΐ˒3s`G΁7rƖ39V2jE2Mծ86Uh>hf3`q2!EiQ9%$g8o~8tS qs͕YQ͐3cMgqr1N>V5(r3vgD`g*qFjR9("NMT&4g/u.`emRqF+^[j X'=C)]FO@1}w}8WJ)y=TuY3333JHyQGFG7\-zJ.úT.J<Y0:I@:hhD~\\\ZgeȑkMv0L(2)Z5f܊ۢBѕXPP얊(),H|Aj}Kd8IQb|*qB]XdU5_5CcX/$3^~*K~C(F>]*IF^O**1J̓4UUk|*֩1&$NKvgEFz/daحlo"JYڨ.:P<% >GYW>ԊɆpٲKfajƬ$~7 ' tHMBBa .48 \(K)U|YE&5]iJJc.v}?^FzDXIZl\ @ "@ +@QB$d; LnZs./*nxTFJi0rDr&2਀0@^ H!& dF-P(y9>Qh!/ىt=vzkهZ,p *@b@ (D8@pX3$piEsf逇\*ax^LUcՙx%%MAב܏4Qp[*n +ihOzZ@!bpPxh9`eƁ'I(52B>FYnOYP+&Ԋy/4^ 6%ǠnTPS %40LJ +8f0(Px0 #3A a١2[7('bgz|p:GZz@8*<\>^ Ā#:8D\H@ T`@b'za`:v@ ` Z>9Yˆu`j$Ҩ8LBYl< Lภ \Cć|I :03< "/ nD}EX'9Eը?:H2 o EMPZZ(#Y:`S›gғz&" C TԈ KJ ۂw U"}AAQj tc6!<Zà &T'9BA jf% cbA@ `qb8"`B80A$$BB HP +p1[nQy=rnG*{/ĝӕ@N@'d@LJDŽ80` cC4Ѐ"ࠠA $ 8(@Dž +(8D! !Mͨ4HTM ߺJ`l0Y+"%2dFb ,p

p$p4188aB  ppD +!" R!Uv|&5^WLL̔CD  &p\` "184h@ :pTP&d A"BbWL*<",^_ռn~6qQg Jp@ aH0 +p4Lc8&`G"860#Ƈ/'(FrC ~O C/I(y H Ee밓v,:@BH 0p  8P` pa!/>.d   AxaԥBR'>&]kR<h$EeHn&`p<0" 0p< D(n8N(A1p"#XDzPL2E "HDNNecPeEW|OQ@ + &GP@ fp\pA +$qB (X8::h +ha2УS|>GNq3W\n`'/r8"p8@80Cxࠠ6DpL ‡x 珖ȶ)bb@j{k<@sT 6 +@HY"xHI.z +8"ǁJ4.YD +^-ߛٵx-Q^j0R?by഼!Rad2$HA lp/fpBFO唇 E+:\r`l"-4C4cXR ]T3)OEpX,pQ\Gр J1b *(>%C,yEA+_+X Ul ^in&OlT\'F^قT2|pD0A "|0`2EG 28XaH%N Sm@JXcH1-,xxBM)NJ6JXFCR*X +M+2<`d@%N 1L +`x*[ '=ie-=@o=ja!7\˞EWJkvEM\'{.^mÝ0!|Oh2Yi+XܚZweߴ׬5Ur'WSlǠ-hK]*sAjpra|%#xe#fAH.BbWsSWET$y'90KfB۝4Nj2+1zD8M4;zJ\l/Ҫ(V[iӕ,7+ZsIj[ VlX'۲ *5*cwS3佌ůMER# +ZiQZ<ܺ>魡e," r w}p@@L H%VyQVI_)[r?h&}лƍ2I ψCʕ rK!&SlbbN]`0VjG.X?jnAinBg*mV/| ilhlaG|Ě#}ue tjjQVn.Ngx|b\k#M |ǙE,Cs_g*3᫂`voqnGRk/Mf,Kd7[z+bH5GPI2`RGWj,ѭ6W̊?Ć{Q,|Sp!hВԦ0sujÔٔ$C!>`^e߃,Vc0\f=1KFɢF%鷔X[ ֒C[k!K'3dW+ AR(X,?GTaolO +>;(7^ +1DkfL zбJ!*0 bKk$EUڈ*9QtW}qEp*΋݌V>FAVBK9DTQ,Ϣ_^v#ډߒ|&նg\j%-7K 0Go4[wRp "<?bg  Rď* X絔5^Un%Lzӫn@jz#ɭ !ڊ Z 2lrljyRs|2#AJm]kQ=Mb; +OTZp=ԱvbZpb `dv u"$U/j"/ h~.ѭ4+Y̊U^Oڞ[1\ Xt̤qKA理hI8McZ`#nd |D* r +̓0{Aq3e;, uGRXbj^&RC\a 8Zaw@'3 :Khp+!Mi}pFFfҺ[﹦v짱j,.-hp!t'.8)/ 4~3ʇ*QP ,N'ؚ'/881G*޷fAH@{:p1|r1br`D* bi +2[3myΑUgYb5HbKBAb Qr,"zCqRW"vJXt@)2:JA+ 5Eq 8EE&2J$GI^ SjD 8߱cm_!G/7v.PqM/Zt.Wm^h(~Xn'I0+ΗbԈر?w]o)L4eŚ!TO 4x6G#J-b*H?8ExrZe ᶸ"dU Y-;xٚ)`)bi/eG<0W/eg#CKu.`NjBCBY~qVi#d`p3[foJ#sÈaԲ(+Og$JpV}LBĐ B W]EMo.̯4*qKMX%_%u?ceMA MƇ]Gݡ\[uRYhX111 h6W/ЉN; ځJNrjC%? +2> I'cņA 885ܗct $ZaGech/,Ii3il [,7+6Wɱ\Nolu +7&W^ V_ 9f@Iy9R`"% " P^ fv&KoXPE`PDP$wQZݗ\qiI^e!'iAgiBxWUo`W&_Vi +`Xif@ 1-]y VHX 06 M ;Up>)sE{c#&"-[&X [J+ewQ +mj OY% uޓKP7Dt)18r?Xk/M/7+)+V (ZyIZb=B86$.@I2= ,Nd +5Ks8IbSsFrUR+m$p$Pt 9Jd`^` tPf԰Wy -͖+b($8$ ,2t#M)2W-PX/4_iA[yW*Ӱ#!Pp& +:Do4qᑻ2N;yGh;NB1?*C g.z+Wjt(Sg10{HlO 5R `e \5G*5fX>fdགྷX7#Z򉟖9z'>NR#EV%,R^ lƮ7o! E0~pUO-m~%UNW:հ[;Ƈ,hS.4M.Yn/ZeBXŶbVWaG>Gu&bs㙖ۮd_*"rEJS벯naD/735D6Dp fMva^D-N0"wU  IK8#X&ceps$@fSZ&NJm=9,r?h~7H9h;pSo23es¬WoiBx冢7va)-T[ybTU lcx2{0@CFbcaJ{Lg>Eϒ2]Xx%Pivx+B'3+H+ +PY2!M!F V Sw^u2^Β{@.V[_\o =B]`\*YmttHBF]l<3~X]r3s\(?i 5Sd%x$vJmd7:xN/$!0J-cYqRK1BQ!4\院@t%G/$2)$*N{&:&$ +6KcrΊTu\ъ8}OP=0ʞJv/4\qoI5̵\(v4W>Do*Oic)u¼Je*POĎ-\wӏ B/#Ӫ{J(>,X ~E/L /b'~S_w ['3cU7bqb?k?#a}+ Jb0@0b8f(ǰ= -W'\)Ȯ7')׉'/ ØF"d֑6(F(B8>LFUkpt$~Wl*]CŞy(G9rNn q6w݊75+ajRy9V,x&xc`=;$]'b˻z5<1ij~L+ ˟ } +5Id ,lrzGc2\y̪Yy4k'oBMRBE.LHr9&0}A6W?Wg:nzenA_` '$ih({plCDq)NCT(=L­=SixB:[q:T)&8֧)z._OT-d&;/\y͸2W88!+QX2(Fɐ/IJsn%Av.m n;l3KLNt{VѴ1Mu J$r0G8 RqݒV78sMgT)u74g9>dx(~\mE bhq쪿zM>asN(ر%K?ci9˷\3N7t0r>'iFSWP(Ɛϼ:vc$!|op;]tT\uSSfcm= X:Nx̎ +茆ݐv:Lێcx0:9' :yi~T9sA;KZl#u>~B~huNZhpg4|jH٠B!vM9=;Fl,4`p;J4(nevH3):=(ڦ 'Ii>PڦVn0ulu4CNvƩDC>oI۸\:yV?Ivo>E@;Fciuqm-źҸ=G헐"%%Q[Pw".Ab?-7ԝe밌5texOT0s s-ע,}Q\F.6IX1K U߻r '|e {F-~EYuFfBu׭F5 a<{ҼwZ1nb=2&D_f r=Gb O_-il?bm?Pڦ;Vvnyu~p,`NgTmP +;Nu+ u1,/uWa}SIR10O3Zp3rDշ,|"t(%Y:&4\DgvUl{G2*R.Ôc6yY(3; |Yנ^85Nw"JQlh s|'Fs| Wm0n(d5[V84zcmit&C61N1 s!04 W9] # p:bB\ӲD\K@r" 8 U'ԍu9O:VC۰ifg9s-cLǹ r;vڮۡ-O'j:lDeDrWƕێa~*p̺[ Z5ٟbGlDo9t]!s~+N|hMsX&zYi0d'ԝx^t44?z qlH?*z'up8,NHvcEAs:'=8Q+Nt5Nt7=Z3˞Ӊ=OwIf#Y-oߔ 3EX\V.H{vc-f쎸g6zcrj\TX]q*Zl44@`P0p܆JQ׌E] F㻏9vCGIv lњ'}ͥ"9\Y]L(YS7F!5VCcu^Gs&0okYQkQ=N9?jadrE?Ҙ\VQ ^sY,W;n-7$Jz5jdvǴ3tF)3FuG\:oљݗ m NKfSݴvM2zf)M(% X:K)zנW:p*y 8g+j4hgSWQ'[kRl8n͎xa<uok#xvLN%#mѽ8k8]ֱ:.mBX T3+ +1U8Iv|ۭr0HM '2^ϡꆶtٜYVW fvZkZ?ٲE[n/ct@]yݲ;Ns1I7ʪq笊p9Pt[?o|q@*zϋX-мFT8=[|LRW#AА3zz&dLR*W2X]+(Fjf?RJV7ipc6WUn˅m8u}fDf4s:-7u\UCRv)vx=c͒m0m;WbZ\Nx_7lgNI$5D|=T1XeϽ$~!ۯSJ20Fe52qz5ߨKJp)H3*v^Uϑ64\K%C3_]XfɖCR4j3_ 0_xU^7 +z$5NLϑ٪?X8 \,wlsQܮ%&Fykp,n7q:9N7k-Xѳaiuc +aY |ْ9q1|bOј^5|5YyMNh`h6g7yJQYӱ:-nKqŒEs:Tn5tAPٍ.N +UЙ 5e5!YtjFC{-3u8gwҸafΞS]tzvI׈BgKFiug71m^5TVJFOPnUDfv˅~t:lnhK&WR$;~bcO|4r=;GKK):TNcRZ&%Kq}/i8^nlRxr-cT] +3NvZNUY}=[eSos3H:vC5cF#ɇΨ[f$vpP,8vBƱ +43MCnU4kZt77M>"DýqJnm!m:]94N'l$He]}pkN@dsԭn(fo4PG=ϖhKF#iJ츑[Ng9f7-!%DFg95v+Qk u.z +Yg0Hu-uq?ZnFYи3=WBlO!+"&NpDǽ(qXf9nEΗ[6bDoЭzeIvF}-Y v~:7ҸꎛjsNZGEmh>4MUZayTwo'f4rakZNU$x;NѺ,L2fG`bE eT;vŦb,p!5%(xޏOUlM%!Rڎ-$^3 "+@|0U2?2?+Pir0REu,)~@`<ٰ3s GZQm;2ms]m9S4P$qzQk1˥vOH<(eƢv" +!6܁ zNQn(0X Hf]1Zpj]l105d'^-} ~a#ƨ5םoi Ъ04@|`pV%v&/ +t vK.]LWm"=(5Jdh~jl Zab(00inU EKj$zW;Kƿ0*h" UR+FqE2ƒg-icxA3>p#`r]x!b}Qбl9C-;0),MRb=pwcv*PWac E[nv+^KRzDfa 2~>gaj:S[ ,ZB v + V^'*2=Ce4^]uMAb*r~4eGK[!..۩8@bK+bI[ĹubFR0n0ũ)"z'h dzĻjsXm.KD A h7( +^ ) ܚUBҚ7 -E $+TV~2]X?BJsf F,ВWX]4zXlݚ8݊:Lcf #{0QR91lj SJ0^k?ϔo ^h,_MA:aR_|OVݦ>|SglþXO/K0^e)vKXv $\ᔆ RzK9čYM g|d4Wt7<*dSli;еWxɆA@!eԢ4O +KN gѣ25p'ï!P`U'~Ze1Ht駌Cmo:`XEvԒ/N.Cȧ5` H|1t9M~ PZBŒ)* +W-Hm͒ըV2a`Q?у57 YÍQÍĸV\@p/Ͱ~9֓dn%,&h)IPf0MGx3LWĂT#2cXbx&5>(͐Z#Z֗й:lG*~<((0"rm T|('U-8Sc"[NZy !A$ +fdSYtU83ղ`Rh&lE(n; +z>h6_ٲ[4-5 (֐nwچ1je`~WTs~v"'+iQZ1rw`~OC +-Ω=#8#V-t$@N5(]conE@,T]=Ug7_ye)ei(fvrA$U=~<йRIv1V$pإA PD"{R36CzD8g=z ة:4FJ6GXVUqn?Z/6:^6ڋRlmZf >|\`t9$A^$IcD!S"/KfehHl3%u:DB5ܮ"3\gQ;Te0Ѱ5rj%arNQ`[4I[ +2rIzԭ_܊գ\qlVxܯن;BpjiVy+7U-9BbRX|0`fe?ɲ.3Z[Z8J,pcjxbs霂u?\f FyUD=|`k,b^Ԅ\ ,1;"L'lc5h羌`ՙ 50Bg%. +<$d2]l+J% 0!T ^@' ;EgX["b{b +.BWZ,eUMuvު(j|5\'' !)  +$Ea&h< +HInfh]%=r@/QIˍX5{`ul?fy^On~}#8koz5ܳی{{%2[ +7MfcAbb7\T[cnLSl͒[Eه0l%Yd/|D 9__j,,2ּeEFĒC?9dTjACh!vϑvevWf1?Pw?9^qamG +n0V-aT_:;R-,5Tˆ V_|Ry#\z-ۇq4և构}Ϲ3=A`i v v.J6(v!68yVRu9zO7@Q@Rm] ,ڰ$%XSNoJJCr}/8SN + ƫ+o,'n-FϐAJ*Or7O+&H((\v<;IXA>iu HM(`ήh͟vyϺ3!l? +F6ҸS?A1ۤ8 5+@c +(C X]}+A+9O3 {cq~ha֚ +aB͒JB Zە R`O/E>}|oړ~ftT-{y5]^U[f xj(m|4ga~T^j.,5R!.*LNbdI&3bV~ERiAi*04bUnpv(K" w\ј<{0|DOԼx0TzQC_8]u[0)-X)[ n pKi\(.g~D(S_d?2,F$5 $%%No17;Sd`DECa Lϩp +-$v3 6*v"AdZd{UL%=TFHvjAejf˵ K ~WZh2Q:HbeHU14k+ymٹP:vsq~4'OCMK"8?|qlza>k?T[^s)CoE"57SC240ί=Ʌy-ԇJ8\@4f -K~oH^b&[fQcGpB +qvt] Mujn}Gn+=夊t,zBzO$Q:Btk{(EOR7$9BXU`TV3-%PFV=,(qzѭYܟ~('+?+:)CF2pR7YT;=tko8dulbYP;`΀K: լFw+r~1emZ,p@E`LQ ^ՀqhBJHOS[EFf +8Hd0Yk+ڟĦ[5iUDbl1/lv^ulRnjž@`~RċD' Z*Yq8 SZ횯A%IρL`l!E: !3^rUB:.Vpc!|R; koe&G*a2;QJ0FUfj8Nu+Ko~EDo@ɽӼ* Aj,jXmݚVF {ZUCsc\J{?'γu,Қ?߻ͳAI2O+3S z[PԊha"(&§ 4) >-Eʅ~5Ѱ&,ض( UsiWrqr?nȎsQ3N16J + +bkȩvo:0gܖ̭X/u@$:uAb@BDM `D&r,WXk5-{ Uni+H}8]HNWԆ q|mWgV3>snc}  Px(/v'Rg^|h^d%|Qd.ЯrD擮hoE*C(VLw"5^1z'qjȹB`=W1 n?;h>BF{źI4c4`lmQs:@cewuO*; ϕ +Pp(H 6A*k1baXfPb LPo%Y~Q cqR+Q~(ԌYT MÎ`0DQRu ~U2'5Y`h.m0@ `$oYKr8֋oH]2;_v2Vi"AGj/m(v-}/>g^g [ɒDMK-wlI:'"w:@>"mi&^9ϯ(~R )}y*r)Oalj`7%܂9͑M|hղY[x݊}L{)΢geFf8ESS5/ l- 2<UR&679b#&480')*W`I:?ʐ-$"t -,n3Uf)Ug*XiJ+?-J[ +fpV|i]BkID>M?f|:[fd80a0ΰͫ0"At)F!E;. +;Gp@H]z/ 6>bp^fGMDVZ6%-ܳ볎c!"aY 3_+H90{N4|r)xU;1rb8*]'(YrABZyzf|.NT cH˭:G v|)5]Ơ^J̎JhR[i]Ե]Tuv?UyelT `a :ܰTZ+"+Yv4HvaW^*2i=$ AbMh9b_܂߈װ}E٥BemIA"> b %(1Y tFˆ%p\0Pt 8Dn9Ot4J3fpJ@s;'s64NIy!4v1ٮ\M OƪH0 +'Q%IpAj'\!x\.U#-j ]u,Tfƭ55YJaZ4b72 +2Kchr>y$4n0h (9.;4VJ\!H-c6ɬÎcs3d\`i 8(QR,-ٟݏ/qR"K^d[ 4$<:CJuC[=0U&Ăײ[6&d @Dǀe G=bIp|zL\#縭x2ByTq;eZߒcc;p@v#%D9c84U8滆ږ{bՌOqe6/R}2Lq>@0ڎjrD?p%Pbhy=G. Nf,>=(^̇\֬?h7`7õn;,MGYL[IQ?Ȃ['=glHMYw<>dy,$5;P5_#4?ѳe9~(5TJժ+|A[63!?)Rbi15ҮT$923)XXb<«ɒ'DU~i=ϑ ^^ҔW6\XVk~9ZsXe`Lb|+Jpt ׂlWnaQzj#A3Sq\v $$i @ +,X[)Od<׹nm)jBM +pfEXQqu|H=զ~Աff=wTLdW)]_EQjN*Zx:Ndddpfl"ɬ4d)2,,z)4 5Eq=2D3WU y9'Ϭ6N,I=v-aE{`p[Xp @&/5!j#ELDU_aBsq:;yj8*M+5 k-0p'ï6Ic`tjA]yR:1EH(8 ?^lp/VsfWێ@a+V/ `~n#Rg/Vl%̫U=BN\2`:- GX\lK.ﳕ%s|ݲ\_P+ȕB%㟈rRY !!zaV>(BJRKN*8AwgĦ8-狌y/9ujJsG Ę6[[AݚUxJ,4SVmmc| +RmXΫ$nG?crU-k[sZ{b:VlpNw99J9u[޶+kzOL0X/~Gjtλ4N_hSEo8# wz֯(vי{~{*jT./RƩ 0Ke9h>ˆ˩z0]o*[v=%Y~0 ]X7𸢟\u/妆t9NTGPѓbZuDZR b?Z +ZxJc1Yh:ұ['Y\ro)jkh!Y r(2Xc6Q0U cf~cDjmگIk w>X-45Wj&zBD=(И[sG316B?+4e c $Z |vq,z&J8VͅY6Ʃ  4(,<]ňgcv<˰>CKPyO.u25c3!z :S C`ђ5A7Z+)HMQ\ +y97]bcQFY+—tNѣD1v0ح'zK ZTf\4̰ s;^Ƌz22_]h$hp L| rLTq:۩~.NH %g`&gJH(7)*o2Yu3Kc51ZqL:&7\ѪuYzMʬdxnP]SИ\'yWal*zRh j%YZ1vm+slW29؜NSbXEV{3)jI,BqjIj4t`k0N&4+g|ί,:]l!q)uǡT =X`4]w`~'2 8OrgRybiH,倶dvl|,33ho[ mf" bX}EI#>k XsCٕfR3r$}& &OAOAd6^^l?8m)hWV}P>ݮ-H!I0 S?{+DHmEkYÊu_n!̫$WlW4j{ WLT+KޡZ QrD*Ю{MJZAn({߲Y&Tlg'rԀQ3$瓑N"puR.Vys 7Wvɲa'YSi!/0 yU[\JRփ֭[(Obmڠ[7}zՐ|hI(;nٖa18w,t;UYzޯ(w GJ~۩ߜg*2?PkT W6ĂA?>O~f,203f&#V79# mX!(&BN kQw͘%5ɐ*郹D>v,WʟVD#7|O"bu >+Oj8x-fՎ\GKm8s#GoEK-E DfYn]]l zGm2>d=*ƫ5G;JRܟjrKEg*5JNĊM>g4Fau;\k+~n[n)I^n>]x% [N㥆kd>L3v^6 ,֩ 5[XY6>n%, +2lEvq]DtR&sr7 J);$z 5Pc XlH߭Z=Y7'l uꦀ2@ZV^o2p[TV4v{2Z=R<T`|)mϝy&euA2kJ+J($tfUoQĢ4oo>3`Ǭݮ! S31nc}/:?JvsAJKf[H0xj?'ݶ@6,:1P0,5 3OcvTG%OEk RK ōvg'bo'˯zWEMV "竐'!q3lGY0k9Ps˅ur^J쿘Uhy*JYDɵVыR0>%IӋ fO4_AVJO]^يߖ2a~p"*r)ҊB]tV ,zE´B+qf<ެ@Uv܊cfWyݔ^ulgYzPuƙXz+dwr%ۇլl7I2[jzdˏgtW>i~M^' .Ԇ͠\&:vN +endstream endobj 29 0 obj <>stream +R7i50"Κ\Rm5 *8Ė3*k!O 3Ba&Y3RMcGiР/M E9vg?Mç q1-[|{@r8`P-VTR Iyy3IcJ6yroc5fݶF@m}VѼ$UFp]*yIi@hL/|ZhL(HAR@/3ǒ*G "Y[bl=Ru=UIj#[7%exDJEaj{* S.g,.On*X#yfÁn:!j*zV_ +Vb4ToC6u|,V8i~M`8{dEx1:v#ȦfM ˖cU6YJR@T]l7$@@{!bJoH9cZ *4&B\h)g7OqQBL՛pdpnh~!v7.#P0=Md3̰ s,BOP"4#4Nzj}e0Ig)SĂL95wуUk0] W^T["T!ɭ\ >H'p + ޒ-Z( 0GW(} +ޒ#gZ$bVRr<']=B|j-:ˮ:WPS:E(N&%aZ%UAc'(˔YfO3/U%I=6ņ"y)3@)zs Qw!7/ +'E(4>=Pf]"+31-[r1T x0$_tan)z>5V +8 4'.{95NCNYQ~6HTpf{.$ś{=/Cv4tLgLEkEORTX?@k"!/ CMSyCjx4Bn$ɉZ+QTBF,DNN9z(G }V >gbHp Zfy~sb!& PPa~kLU *vyϴ6L4Zp0hdmU~bZC=2{kJ!ZCQDf́ILa;F^&-Bk1Qf^$yQ"cDQ4Ɖ 8w1F +/D3Ck 8An \>KsEa ĆQ/;$8' 4[A*R +m+E)V`x=Ri^Z(tf"G%hV~ 7bD%i:=^z DT,1 D6E V"179WmhFHWcbq+T̹\2&G ע2IhnM|Uˉ:{j~YVێmפ* V\c!B~j !zʩ:v÷$'ٮA:r"f4ipJ3!2K\ wiĠabsX)*8s1~`~ %D=Uf6ϲ~HU]`u R[*z9#AePe&g NbBÑ,~UiMH}PZO cfAf* هQ j`U +H7Nrk\  {GAT$XEO@"( .tvYXk2Yl,˯7? +C)LaN` ,<<}϶4 N;Msco VAȵA"KM=MRbl.%TxӤB4GybK /(Sb@Xj0Ti2Xn|ITEq*A܂#9-r?&ɮai8pDRHm| w@U|d!)4+6f#%Dž0rq1xu-Er]˭E9${C"V עUvOC0-VRMfڕs* Af_\o(Rej\(x72ы7c5YJz]l\ɭ3}MW3ߦi07b֫LE*gox^vˬ8' eh+8<y ,Rg/tЀѱ]6nSj[TjYyV]'~Od}IGqVo\h?l5N2^)@~iYߛ1KDiEwb] Pf >[h3_g,X]e1Q.2JGJ@Z4oGk[Yu1m`\Oq~iԼǁ%Ȱ wmYCV[?Tdfɂv6`4wa,pHk'& .S-%=)aaUy٣Xo住VhViЗ+N̑ъSR[i,`&x2hT-z~OCq}UX\Я*WKK"uNa(rpŬ,'?+ꤳ8lV_ar绕N(ۂCx=e|1UJLna=qE`T2zXeSx Uϧ +,PS {EjB`p.F&5ƿ(y/65~a%MtwX6\a@"希R"f!h;dGp5XQE),&uYiͲ}dfRnML첰0Yf +#KgWVwz8A!Gǚ +J"`E!qX-au:mעfzbi(Ic +%e2W/9 +%ω+kdxZRN/&'(#&*$&)-kW5 RjqqE4luH et]ڎx.1+A3DK)hfɈ+#;)pIE.YuB3lYԫbXObo\pQ}6L4yQ +  +P`ٔQmژ)e*%%% (Nݲ<(XͦV+Zo+5nj*Q)D@d ~^>aCD0$hIb8H!^N"\VPXX .^tx͉eB7*TYd%Մcc)H١`4z6Ypu3$%-''VKhˢdFyz8Xa7gEo_&)/O V֓I*Y`TB *PX٤(S/qBZURZbVmytSl(P%DFbSK-,7Sp JMpcF*Py>`1M, +Ftº2 +S";̌R} +_S ^LpB@؆(qvJdQ@E!( j1 ! e}'# RӑAZfU!ZkɫeMzQZ/13|0lcJ઀ + LAN8a0G|bfL;IO%=Ml~]xǦgDHVܣ+O +# +@;F `MJ@0++"4\aŜ\bksLVVY-Z,rJBreѩ-2 iS ̊W=#.p@Z68S$ <2hc$tiM)Ġ $(@ÄO"8&:iDpF;ɻgJKQF]DdbԴsTU(ή]qKU U. 4Qh@p^%0p`@ pSX + +ZA pb0|Dwд~UOVbzk6)B⒡2 +QJypB[@;TpP@u<4Pe#S;#D$0VQƂP: +ˌMI2&4%dlq+8T&< `olXqAFx&J8W<|<kƽ$awF֓ + BJ&a-Vyvb^NZA) l-I%XP6#k[c"I& 1)"*j=eȽo+ٲNȲ JK]8Ք񋪊&mcEQ6% zIl骔r5UBS@ bXJBepa\W!WQ)OL#]"sW 6ꪟ\1\CbM;xm5iѸx~+4fD޷,^=9yGI2lmrz z'njg)TEp7iLru5ߦAc&F +^mJSb'q*\t"=Lxi*kQk2yFw-Me.#9_DWwc2 xV(sL +:/X:AGPҤӗɛݚqr 6Mk0SEW̬QֹE K]h1k#t>u͇>beQ7&"[aFOOnF!NKjE/.[SvTtoz)L!/Uɜ]z%2ɱzևU۠Kg}VraPX ։ "yF[&5lǑzF]sl݅S4B +Q PwNc}!xMIe,f MRTENlTiޤİY DZb9QL`ƨ)hE_9ݦo'~U,47`B*P?[&N?^+PF_$wXk~#2*燒^Qc)hj䵜 +t.׭6ew!$ &W̐SXH+,5-IE&Cb'ݧunZr^L Y%ØĜ[Qe漾(ȍQX\r-oZe~4ץ[PP.e3גY KV*Za~I}_|ɍZ2r^JMWo*Ump)+C9Y{9Lo^糌xgfՒ"w+Z*iPPoNd)ȪJ)L +Ldfۊ)AF2ӍGR+-%~ˮ\L="; ݮnP 59ڔ-STXYS1(,^э>bd=@\0.=N! JbbjWm3^vnMCpлB侰ƉrI{Ag .r،mFJQZ }l9NCV+ݯBbT{Eajlg{S6RŭEbimbj=G=[ueeFԒN컓ѺĢhBNjgfAP]k٥/7g9r,y}WSZ #%027.mM]p8'˂Li'/=Gfjglά>꼵S}&JpC$A t..YTlkW +DVZbO~?B HXmlY~Dam-Now֛Z3^ ޫ0`ľ -9J-z͸}2]rBZL|=j9']q?i{'f՚^c%7>6lv%B;ZFJ0Um&^۩͚[4v㩊Em7e C25 +i[Z i=q=UD[߆n@]DƷݠݳ ~KbxWJ -?S\j,xջEf$z3pmGrl7.G Mȍۘp+N~ŝ[ZH]J_f4Hk]H:?3*#R]ak^!]) t]9g +~s:U~9zj&x^hY3Oo9i |iA)۟R|Hx,E|b89\M+NeNFk7/.t~ *On=Po4lob{:Un'/Ruˊ1w_*M(Ǭ +T+-P_5@&MU;nl %纏PKDNp:$CKĆiRRa;TMIq$ZtA$+u +kS2SRpٱ 6 Jak=ذ LVSbx v^e]g-OoK7L'ۅ6슱ߵdPXl=^jJl~ ˁ&)Z*ԝ1Y-Ҕ;HEkQzHbx"Ւ9˫1=K%v&imM@t)Ӥy sH-/wMGJ~{ii`k E*m-ĕVrk-{ϓ.2Pp4Wk~*vCqr4tau 7LMfV=2[D*PY!s}NMZIt kK1R> 3|9v8r_fܟHmvfWu~˅ } +fY|Yopzin+3SKjzZ(|Tc*JۈkͅͲZP0PO {W/[+$EWieqO^W|,>Pil\E5_a4RgH8U[L"zXt`lT%ՀB[p$1Z{2͂XʚX}%`琢%z xAlډ^Ҽ#Uk# KԂ߈ݯ}3ݓ 6ΓmǢ4eb< k ꬤk6`qM۵ B`o\i  "sV2`$w#vrA?n:mw='g,e%\:=WB6HZ`CR@ˆ b,S[d@6(Mߺ ZrL@9'1;-\1 +FHODU*C5/PN~ E*#/^+T,r1%/\`$fzp[Vt`: %l*:Ag(m"+5,v 5pG~L* U0 F .C#ۃ" $E8SrQC0R@Ư)"U.C 6Se?g`P艬e*ӑfU9'zYd(_& ईtStWͦe&¬!'(9f)%kjuaGA{ +[(!L%"yuAPKNaV$ *XezamW 2>P~|d(H.Sd*ΰhNZl+Rc@~KXIxQWazwn5TVS:{tvA"#qN 6Q]*+nG NcAPdҺu"7_ꈽf4|sZptA\2;lnuM?3FksA}=S-F^1l((ۿg ÷6cfk]lf|HV x$zAz`L6ʁ!,I d"2? q&"Yf1P̐^P3y>3i9~Pv:Ld3ծ &+=ߒ(̆0Gl! 'T{$ +5vmao%HeWG~ Babnal(-Cs !W,P] +jFHr_a12I~G[l+Ϭ3Ul9*=Xh"|Se*LiUY +qv,NiWۉ>{jn'r~ͯ~՘V6ߙewvQhi}||R>ef1C^léLLM%KVH,L[rDNau= +$Cc|SK-R>:afHxYgPU^%"M*4C+5' )R/-$}X QYgh+H0(Nltbm2'6s[w\< yρ>iNDZ0*)A~h޼ #G؋J9e3QOQvJ{q~3/{Z~"h֊"+@Xu :[Zt< 9 24C d@D )J b +!FӋa'}4EӀ ">(d0@:I Dϕ,^+F& `Md  o $`CX #[D /1l2 O0V-Uz- R|r͒@DaRT7UGw*b}VےY4C?cVYǰl'z +b,4Az8qY$#N( ddz~ FgBRÎ<~L̲>TۆrtMBq"9]WЙ4EڅÂӄRg Y1uR6}nԚ/M aIla%̯4h؍EP=̊Cҋ4 euKQfͫo+̦;Q=p΢ [q۠ղPPԞ5Q[vu(a^I`v0:MRcD!,)Rp=Xbe2z/Fh;zAE}#T_SXPDdK>PLwbP +#PhP1"肅)Z },.ZNnx$68`E׻LjBF+LTq1E+~٦HҶ @HkVc(wIjO[=.'o!iheb5H|],4­4-sRFp[Sibv4O07 +R_3YdO?g6طGϋ $j + ?"\eѰU $ʯ_7.z|:ZDj'f#uýn!{Uǹ}`'?5cFݲnU\W[FE }RBfvOY~9SqD)fOAB_ٹ "-#=I`{=WmLq2Nf s8Nv,#%aa}2M繦17Xrj`k-~au_toXeYke^@BƂvѺ1ߌQƲږsI)1ye~5v˒81@ɪwMwxI.uj "g+-ۍsAp't /j4[v6\rreXb,ұӪYQy$E R ߂UC+j'ךqK-Vڇ-6&6Mw2 S#ރM1J]Z']1c7rn5PjB +.N`xP&OjmEWM2^[e`,`EI֧0w?Bgq"CMmogѭF w5WNr=3E)Ƈn"CsZS@Np9Pqȕ$oc6z2X*ZiƋq* J_GdӥQy3^R,Aȇ7;{A@0{irl;#87-#-Hc=2 ,Njf/ssJϠI@AZ[*̆1 +{wfp7Ks-'dEe^pi~ Ҽ_U1tv>c>Z0f)7g3}V1 ؛ W ۻLBnHkn8mӑyq;P%^5<|`7j˽聭聱,pE91TxS\Ȭ4 m?Ɏc)$?s:h s;ŽeAAۉ/6xDϙr1vZd҂ճg-G^a>+bz[n [OQ0=OƙHp);Zޏ w9WkrF\,w jtXm܆]\ OgͲMw~Qik q#Fp?EϪmCMY7YnE ku9TU0u!A.78Td.4'9/,WfW3nvP,.e R7#,pE*ܮz- Zg LA`| ^: +~%Yqxϴ +bn`eL x'8)Jk<,7Nê N4\ZئQ|)8yO_iί}cS \әr$zC V[#tƎQ9Zuޯq߂|6 CZ}-6.TfjffP,A,#nG)=v/I2_(!4wy43uijqUN-5=7čNuf%=1SZv'[F*̎Gj<{ 옜U{W[I{RjW2.糍,qZ#$e ؠ>fg/f׭hMձ1w݋^9.MѪ koKS$Apg鶛!uozs}pNC=_hRᒵ${ҵ궛!ß$ژq\Z Iz]`!~w}r;0nqȩ:3bDa`i"pߑ] ˖"5& ggp*"%QND9MDyj֧)Wn8_Lx*SJu4rK3!cSXIAvP2P]Z g?ϹcAt +UPqr0}M]8'yO$Եj/}hby/"4o85n|Q\T{z5 !]< زU,0:,˥ɺcJsuB֋w+1m$%Ftߤ,v۬|`Z`Q4]}K/ahyh+AKPDfICE U NXHwL`< Ƴl8Eɘ &)~SoWnc[V) Rf0ί_hmZu=Cam3to$?2?Dh ~8Uhn!G.{Ñ-Zk)~Wj0zJ= r>Ñ"t6P~@ݷny'8In^uKR ?% Ԫ]2+Ja`6% yU{еϕ1ð7Ǚz\zb)nr{3!"fJdE*h}%^n#p.ΰ7MDq'Ge ~/~^;1ZMפe|(Ci8 t~c%ͣ-KdVs&܆ ?2Ʃy<6\Pꎻq0~ Yjk9a5-wf؎Q ceӄωtaH Kt&F[wwP|N2NX]F*+Qm$N L!J 'Л'RrP@t<HKck1zo+v\Cgn]S`{Ϝ.e4'v>~-]~By]!|:̳dXzՅTuǁ db7솴JA5]/yI,'.] ږbu4O;JޓBTd~Ns̯PTdQ@۱:n=G)į[-HR4:ZuTϽg{`>gdc}0 +9t@?7Og*MCLTًߗoMĭe$B[b$Nr/M1?gIVIR̭9~;Q r@-777N=%ȵ4g: b:ߛXEp0묂3%:π8}ӀbqIfBWFINڒmxZ!V"DI*;Ic4Pt:121ba#E_1v*x۔#Uh-Y()E<4]n4V\O3^mMwM`sjS/s;#21NE)ݪ>[I)݆̒c衞lDOf~P+ +R i&E`}Bi:DQ;(2D +3[ ,P 4^VC,o3q^Gj4!ݯfs=SnG%7Qz@n=jZϓ"G:̮[..%С^5r)֧eU(8U/2 )~R_7k~ *2Cq:V^XEә,o&]e)ޓzXÎm%adJr?\2K?d7ַ] s7A%C /QA*:VB@澳;bl(vcbr\ @oi|Q6s=W2$Y̧Fs>DOXzHeϱ:r*v^璀u@g>c"$4tU , j@~C\d;r9ճ ׳]rg>#2 !(IpKw!ղH>cpTF~놛bqC>q:.=$YR􀝡 |P^e anDbsh;?"$=~c>[s[Gk8eYOVyeO&BG~!i EHKc6ZuͲW19N_+q.w^"J[Hh leh }ScV̍5߇~rO:FI · -[md1PZeI~Uu\ */ЫmF0/))Ishmطzj;R')~}Ai̅+F~Mp8в&;k'dNUF,zߓ,x"t^b`7ڈˬ%ņC Ln<*μwM|癢8P->h-[dzGӖM&3JD@GxIel-[DH*T 5I +8G"m{EzS^8m?9}1ttρ4UT&cVs.J2%,e^ϭauС*[^x01:^yp0~{=Aa(Q(;e߯2:f=Si~SBnst5c5x]w/ Es(Ld~Mv֣ĪĺFl٭ŏ !|h'%x +:nrN(YOn繆4Ng-?;PPZ:=O]c7Dx'[Neu}~Fg/mo5Kr& +=ZlhV+-0|ߗ Si&݉e!k86Of)x[n=^w/[[k ( '͚xM3܉Q/EQQDY;Q[6=߷zO4 '.aq;/z;d7 W92= [ +$;ѳ񪮃YBaAѻC dډ =ICo `o ^gFve>H- YGkM'*ߑniou/6Qj=[m%/y9^or 6g dbn1XixOs,Ԍ?j{k^D>V,4Mf~OU^c+H-%Z N_,-2*!9V 3Y*Tn.F1 +D|TcJ +@V}̸ d4v`kzHfZ+F2Gå4yQ4ˡx @eH{x;0O,f5J.e׻SHB,^7˴ }CL\(3FJSatRCLef7is[l [SĠvf@{73 g;rw ;b~ )2 $E#Nn T6Ȉ)`u^U sӉ h%cVq~8.%9˛YO#50W_C-buE*9_1}Ÿ/m7쐂(v \by(=Vkd5 [Ry6AռҞ݈Ru&İ;J1?NsÆ)Z1Y8ͳ9#Ukق+x1(g/x_~9NJ(r+v3RrBCaaFbKuAzHn8oZN +8@$?0v9s*𹶱\]x3}qt:ugsD{˷_Fp0Y]IR=J3\yK:5T3:Mw1:fFZ^'JnR)~{s-7~QtwRu4ItdU3Jr^d8Γ|(j5>Dvn(eÍvhMSƱ~Xl^4 N踯Sh-S]m7/ނ 9%)&Kւ'>E3֚ +/s9rH;EœT|3R!4Yl=Xf2I2?Yu)븤cj(Z8Kί,K|0 [}P 򈝣t)v#)(hv90Oڈ2\FŢ6 LR,~`'=]`n~ChLY +ra]ixSc?N0΢k 72k9/G'-@漌"Pw0oSuV"g F I @m^bp2Xh"B775[l-v*t(3^HmAK,OSAҷ0La@X)Ъ9 BEUKׁpc%-NT!u ]9d6bIrk Buց*{v&yALBIEX~E[WEͳbV4>9>.HBw ~W1^eøaVR,8!0^0BVe%Ҫ +>Jvs,Eq\"Tq0+AS m%тn]m$6Irza=ۉ/5$zOVta2eAflv z$0Y}HIz &u7Oou_rCA$v[ƬD(p4րd{nCUf+%RL`Ob`SkI~"5 9* +#0$/)W]gJ~+rm(O4%Sd?7g`e %iĎTڎi Xȑ,jDVڋ^!MہY2`0-"p( Y^IRoa,Ԑt\םms(3B/mu&`v쐸/z$x$Duɪ{>4qeY|#Ϣٲen8?,U{L3y%.ZrK Z4X 5i=ޕ*1eEpC>^"Xь ygggOed5#:{vx_l'1v!uVnJw6|c!fA  $S0`y4}_~y{Y~*K/^E @w$UO#H06hNGlfz +nW֓ } +QL?|(Ŧ\j8JKafedhBsV,ŐJ~նu] +a!dXHt?7]xKjb'z9X=.T3)ZMy𚑚(#ςDq:O.K)ͯBRc,(obkyP+Xl0_n%Hۍ׹((zXg(nf tfx{sQ|w c^g*GpA UZG Iӑztwb;!tCb$ WUVBaM' yOFE"$XUs޽MիƧfJAbGV"n(8c zA&)}st jr3rf e*z+Ȫ2(rnG_rޫ~L@`zTKrD]e6tX ].S*eǙ*0= V}i;HKMz#/J[G1jGW]j-cgAR`@>CQsk# [+SUR9)u,ju^e5çYn5>/w pbt?$'SԎ"#1z^Zbn5ϱV$uG%ÁYS(/;rlSmu*-'9u+qGE˅ `,i:%!QwGnKb{. bڈ +N 54apz~+xFao+Uf)o# M\v=Rh.0,20Pm 1Sr^\]j<82!djۀrĮ g,ޜ^2x]2emn9e-"eqVM#5؅V cyIڀd&Ir p%%8p'I70.=KiYpULut0P/"3H/Xd&~S +5Hp)D *Nd'pA{k D .W*ϡIg-E!%~% eX2r N/ 8B + T!ů^FyI2Z"ΩfY" ˏ:Seh .ۂK + aRUR:#5 ۓء]2r֡Fk͆i7d%"6`qvKʮ5gMw E*(~IЁ"aVs[6] GZ9L_kfc la 2r Lω&˭wI_voȭ/ ɃְcXucv"pCUAiB$6Ď3Xh1Ұj{r;Q~#/{qZcRK1b,x\l<{NpJDEY;z]k ><_e}p9J2N2@F^|v0e&3|Wc!t)\B!Ai "h9bMɆa7#؛#F2Wb]yMvJאE蹏·U0DE!Hfr 1/%ɰ6"8!)>AmD oEʬtG)n9TTNU#zG BI >8=|_l)Fp9W_v=Nc#~OXA P&Zxh#f#b#l<'.DL7|6B@1^Z@h9EՁ EiadbDNSم +Z^Na}ҏ +,8!s#{XZs󆰢DȐ[u +қi@)%r̢F?9$1,- q*7038ay*;JYPֆ ( H bg=dQQ:[gwf)/UPV pLs%BBF(аt-b妁-{11`3O{of% +F@AfVDR,0["PQ  + P404-da2b-4a24-9c64-4b13b70fd7c9(8d164180-d04d-45a3-8d39-deecbfdc5c06-7834610775776877548l460237lh +WQ48 qI_^"aaTFIQ=mPN-=:u{0`'*6/%ej}Qmn%OBjEpZ0+~]F4d8bed7e99-581b-4ed0-be5d-3ecfc7a74f2eb16bcfec-f6ca-4114-8b1c-e82243383f2794.4355773672b?:p zF QR @jh.$3<,RMP^Ah :H$ԡQ=C¨@"5$5!h`yLqQ=j> +tb1e06cfc-2e6a-4d26-bda4-a560b2266e1198ad9584-ea08-4334-b68b-0584c48.382084.689738353050273.54962977584^ Fp0ODh[v:/8Q$|K>&lxFܨ[Ed R: څQj8V(hL]ZlpBp4pimlJm*k-<AUxh6"wJj]O8&a "EM@҄ MT4hI _(nyL** tRl*((Q2ÿ́TD1J&Fɤ], B 0ON&!-L*e>+*UHh L$M0__XH| D3B*DB%>J(#Dd<*LP@GIfF25PA¼40JxJ⢢nc@bb@C˔ e>6M8. +:BD 4@=ҚGm-N=ڃݧ-eg N3mp༊q伨9IݙJ:5?os-Vl;MϯGS_u")q>4J*h܃ӌln뼈ј/BFD1hLRorf4 )HmZk@)0~7@&̫ &2P 8xU7I@Jigb)Ncb;n*ū#,rMmjHM iWi׳֭;^[P&ESyGG9=z-V睝?k9;c|Nb퇱jsVZZ1;f4""a8-\р1#vbF#0^Obb_hD|ZRK{BaUӉ3oK=eg4"&+);g7qgjSb gN㸑+Z$IA +Hp`($ +Y~@($B0 @ P D0Ebx,1sdBxEozzK׾ˑ5ZO}LUkU~(j=]_w8WĦxd2=d52~=@SU^=WZKNz,]bF0}RPAi&}($ ;ȣ_wO9Bt7sGYlwIk'<=Rr:%s'IHrl+&1$9vhwlQhTzt#Z)jh!P֐pE4FjwMHAK\h>2ȄL퍅K1.f;SmYmfXh&p-c1$~/Cuc(L{%Y"2࿇L`y2wlEɺp.[>*~MVl4?IqKz4e7b:|FO "K-C>>,aB^;R|+[Y*\>S蹦"IDd } 52~;ִh(-FO k;`J Y`;\vuPI[KTIuL[zn)F#5#FoT|Bs_I՗R>vab`GєpT8ʱ3;e-|0S2RG0GM1h%1Rr /o=REjώ4i]Ww.Mk}Xn'\n|25+>+=<~;)9m&׀k.[9;bd⓻#@_vP$U<'$7)ًJXn&L%V('Y v=WJ<)ih<)rw*-:"߸M )!ǣ0aL²X-D HxE'-m_`S')?!~S|8'f~fQsGYXzԒC!*d.r'xz~F>D&J];6c1?2~\#$Րg iON$n WfzAnkK.X؅@iWEU^;x.b~A?)2ǔ/׿GAQ'>D3Z}3We=H헒*|'fpX{MN× Ӣg߲D_ı_yh`x.&HķV1{Cʑ Z Ox~_,)8x',7%5 "$ +fJ:(`(CͯKKQ=1'xPjM60\sɱ*F5u8o*e 5c:2P}J8U6~p([-jv8bnYe81z_H{(@&HvWla]4U'GԎESRMl Lfhu-\2?J(c)k-/آQph< 9cZ^Q?KN C :MXrk-v_vOAqX$ˬ&$*~8<u;QӚ{ oWbڍPSW5\Ykl~0m-Tp +cAs2(g΁e-tZ̲sAgd rsjшw&ISk}tEՁf7LTp>kRF,lWA{ݕyVvlL)T`ԗp`/Y_zͷTϻB&ey5,kqvI}|O9 +\~oi}^$LLe:xU +KN n,+b/E/Z]{]wmس5Koo,[$L:3$HEX2joC䶱4o7bX%juP[[51D<nkA,=Qt&U,nhXBjUŠTW`C"jt*A&H59KBX-:҉ٸm8zޙ՜-=`+ FnVO@Z V&P lA6uYXr )T&"q[`'XIvo)56j!xgpO5PVzj^Xm58 JjCVq΄_5@8o=luI]@Z$yswW `s3^ (h6  v=l +{vZ zg堒z&:-%5 Ԓ{K'{N$%b=jTl7 + P]j]/{$*tRLz=Z/].,|We <ÃO\#{"RϨ L79=Hk:X\ { jX;byv\vXlu.a +(֛v$Bq%0ϻsGO/DTMҜ$;F *ؚ&v\0 F DdKKҳ)^:cX޷X#7bm$FX]BV>qdNc9mk2.2o##ŞVPR/[\2c\gszgu.?ef=7j1c⤼.K&kt+ԞÑp6܋[ +bCaCO-|t*6~/;4NyAS^œ0Fwڵ5"S `.m-X*̅OэH/$ֹݯpCjF*Nbo5i%*~f0d:aMducnyh +´:~귂s$[La^T⊟yè u/ Ph`Fߍ%df.hP}24&z'.>#@VͣLo䍼[vo'ѫ'Otȧ*z͓OaDb3 k3'8ڗ Ta rifW$,K^g[`C%0zTݬڊt$@cm@" zBzraFq~E; wťQm:.Yɞ\UZ?\J^nix=sTjZpeМk[*w678p+(%&KNUR{lk +Ml4ب`;'v5'"%`OD-8!$j ut F4!<+Cg`#فXAsj6u!o:aӢ6 8`o;ءAyfUweuTw֪8R,bռhTS{51yOn?V'n"*a7{V/Uu-$n@5iݳBK?\+4TziYkSܳM5hx8H@1C6*z3DП/ PO@NV1M!@2{bx>ufJE>Bc%"p#Ƅ#) wj)(zG%^sw9yO l >+,^ "-KLV"L߰ d8 9-$GcJs#HUqU9*ACiNI}!y95]X&M$4תׯΆ]*"oP+2pA&Y]"7AB_v ԗ3)5PY2kܳ6J2n;零BiS69wfi9n9v +h=ro?ǯ` "d@ A_>sVX[23 +76|Qn*\PaK*^d&A`[x悸z}GE%jյWH␑Cer0ItfrTʶĒ`ёȺ(Q(xTiBLI(ĹM#9GEiЗ +r4lZUX iAlU&=v eY#BE0p!$YY +dTNn@j?xO)Hݓ'NS*S_j\F)IذNQ[zgN5v*58ڴץ[Rd"C(\J_nAAQvxP00ν^<׋r(3֧+IaT4F_J \9چEk5Xc)u.RnMYኈ($` ;Z$zݲ7 oCzfD"  ^:6g!VKrھ_)Soa3ƳxJ>S}~2(2l'{lxY,5zc8kcmgWgJ#k7\mGڮiuΑZw[罶> oi+eZIW^{mFϲ-q[L:M#+{FL VVn +ed[%Ws|i˦.ie[aeQ[w8o|,:GYdg5:l/:>3ϞF m2}Hm3ʯr>%GY/?(%^YNɯyrSfV^6Z;u^#3ܪ6R䎷m<~;Jh__s*_FNl3i?\ K56a%Sv[G~OWFJeoneVR-Ko+JZgџs/ >/FR;VohٝR-#[Jw|UZZ:#T)`,hHJq8Q*|GaKLcw '7%{|-;;MY(! R,C]PK6]R)·Bj,^3R(/py^N[WZ3{+gO6z??Y$T:]]Jv+;Wq{m^uUFeҁo>8YN˓ke˱i[>Ƕm+[ZHm}!Ov)[~[o]Δܳ^]m_cΕ/N~qڶ{ccJEšT6IH?TJ6ފ^-W>"7\m~Jh^nMeFj)RqUJIt}KʔyK {QWtJmzQFRF(Kf,_}z;M}[u}w7'vR{\wﻷilkamlcR}z-YqO򷬵wҞqgmj;Jc{އX?V\vQ)yK=|eJa֞Dݛ?v$LJ6G0R wfmat><: /|_rW9G{ұPRZ6[txҐR@vS*'|"D S gWuN*?z?5SKl/w׾==z+|>fhaƫm)QrNJE4)uk{2r"qqλ>-DyFw)R2牽SJy#CJeT-V(#}m)rbE6,JeR9mו}_E|?Jt2(S[߷Ml=e9{Wq2G~|:f;}ՎvcqH;v_?'?~M>mG~>UkJk[Gf )}~sgsc"0\גxDj]) bTh[ "0RyJ>L5WL4YyU[`[kl)Sf{R#իNZmùRJEBJev?~T黹C|Dz6a(^&#|21R1h~OI~￧:ߣ燡T^) UY^7uPRhl}?P*1Cgq8s^-Uzb@ȸZxu)&Kt^fd.^$DZ]"-1 +|իx{2@ƭd'DRj2YN*ɮR#z՞dRIBO)WksFR*ISR*62=Rp,'?u' 7Z7|m?jksK\eSZ{uv&gϧQwJ3֩7gr:ґ46ΓIt&SN:VT:mYl+kmwZ-eﷷW[:GZyk﯍~[N{m_{ZkO魔Z糥4rȔ2ێVzg떧X3wڏnp?{巴δoR9i䖑P?/_/a?L)2Z +߽*?~6xrڮL7ޮONᥳևo۝ٿ'/ mB Y®Q~s aSk{:g9!ɯ:-.uoR\];m֩>R*){~O&ڛߔ>}RS(ԻYi^k볓 ++%[{wZY]Vu)^ߔY]_^sHi}֝~>wmJrVI'ZRHtwNΖ>;;M㽗RghcK[)׍MW{>׆,V>߼=|L翯_J3>}Z8)MNtjpORF{)GI)SՎ>Vz)}JSLeGJϕ߬OZ8B;mGͯB 6Ni?ێV++|zg)ϝ^h;>'VZ/|Oadgk;2sՒM mX2]?g!˭]V*_KoԝR䊜,AzΞ MpB)k+RJMpJ k/l.۪(_lf;ݥUFn;K9d)eY!w];wtvvvmR圓'tfvJ+ufs))L7o7Sԙ^/ݳgwww^%W=9}zGwwykl?}''ݥөO:'gkw]i>ٹd,y28sru>O;[nWڶLN=rm>NhN8vv8gvimd;gw;o{'yK8;sɵޟq;>Bnݣnɷzǒ)SkO:i-kC9s;={ήgqZ^M~ +63Jzћuzћ^Y+ϲ)}>*T8{[gC2p8Jcp<!2B9d44ZnX`Jq@1QX\qI*nBcGEGijȪn( S 1 `a#1Rt˱5x(ᅋ z%,4GdM 2 \JIxX+ׁIt P1\(MbC +4BP0*bbq $) (D@-B`X>Z,J@LT\MXbT€FvT<(%/kLtGЕF\ƃSi$ˢìaYL$"+=p$4qg+SDi般 ]oxT R0a> (悢4&@ +Z-s0GFQqJ8xHUpP6$: B7W`ՑQBC0蠚ȤPX.L@c" ⚘ЊVQ,%&A`hpLR\dEiD/j0QlAATЅRPPH`I}TφGq耸 ['N`#.dd&Џv>ٸض %2̜B<xJ@#4రpT nh 4>LhR朖B(x⾀ eg1 SUigp>R`G^uP*3d +0!159 +p*&(D6(NB,&p0I+ z8$`jB htĕفGb#0Q`X,Je0D!$X"8 +,(XLGȧBf`u$.JBA$!.MDPE(@H 0JeL +&B7du$0 +:! l: 6bXN?9Jcb:,ł!%X,#K9D= E``, +#X,b\( 3!X,bB`XfbP* Pp`@X, 08 +=^ÈJ1!dnF} %DxC/, +qo?iy +OYd^7CZ'׵F4b)-q'2JID^)ѣq3NVz2UkQf:y:udL֩v)Փhwe֢,fZ#+q'2nb.XłJ+N加b.XG4q4)8d-lLpקe%^\ku&j2,W`rm) 84'z@&ٔ(dLե^J=ztFf שRւJkʼnidǝp'եjOzq`: В<)ڜe+ɸ{'jWydJN8ZZ167zyZV#Z2'dػW=~O[/N\).D3> t ڂ#i 1EWq]J&Ի ʼnVqVۼf.EfT:b+5{2.D2yFfW*CvҢ:!$յW+FDZUK6HRsqXMcq"FV7c5kgq-u1Wjpf 5{R-Y+`ui$KpK3ea&Kf/ |Q2Yڲ*;U6!?O^S=uqO`%C]( EY܊Pd)&XlJ +/\Bi6k8%*W,SZwZk^)Rz X_iWSzO5'K?5'95e&5%j::ѓ~}MR7g5VszjFOj:o%kBO^Iɚ{D)ڋI$W8#_'T\q-qXT%FTi@]2}кZAtHZɸ y{Yn<{oeiʼnZLBJ>ﵲjoWQ>hFٯVd"bJ ^*eh)Lvh`WʓȐA۸^-t`wJ%fQy+RYjzudM6dIzbD<ʔJTfLb0XV^$#Ti*=Yj`DJo6ৱ`q'GDV@K -٬,@Dke7ĝI^X3*l.IHւRTiX-Z-q>+Gm2)<gA"Md(8YmL&#)‹FzzZTV+ҋ;fM8kIt]K"#f՚>62uy&5 N/H . X8p LZaA5j0QL@A dH ]ZjPq AЅR!T/lau5 zNH(a}819tHB 1R!`,$ #"c:B5ĩV j>uŅR i0bSMN&3Ҋ.JHqQ{KsDHdL r"=&4oym# @bt +@#  +0HQ!<| b3ЅRX,!J04 1TR!IjUD*]BcBaC>! 4 +x00B.1c؊ҢE"sTJ((:,D [rPA}6$Ml)!h(6XɀOԤH 3՟ɀTdJ&J#@aKt`X6B/;܃G@ dNTu2}N +*:zpP y04>+.0K8>[<@ h υR(u,ч cq!|" +@ A&IP"+6d&&F0n`xLb)a<.%TdUDkB4-ؐ`u +B")e Kê9ml*SY%R  +5BBx@B@PlPp-  O,xX@JqTP,Oغ $!.46 ZFMHH" )Sǁ+D[ V +YR)5Z iR @ŅRu DQű28% +JlhA&PG>'̓3B&OZ6CB&B.&"`$W\ptH\sT6PHnC@MDad<8 rRta䦀CDh 6"P Ct, +5E6{ВX ͧTHȄ^( + U0Q|W𢆏hfx" +> +x4-`BQ\2DAz,xxd(Z0h qXc IMLBšvpTh( +DD`T00D+@8:W!ql& \.$RJ@cD@cEc2QtPpuddcrTN"jMDU0 3yBks F .>2P  pp@t#&ptV$QX{jífcuT*Fi,&#؄TJ}f@ +dDA!B@-8`F@N@0  tt84PӇKO/φ+DNôIx +?JF%X(ШхwgBu%°PPzY )L(i@D$ wQZ,K!DF*p<"{ +qD"8*@Bl>. 1( W'1jd$L0 EDFP/\t>$%g#&!MXl.&ˣ$)"&0<AP*cĐh-$4 +Zb> ʹ 6BCB60 ezlLLBG".AD:QX1HH +yT,1 +hI!&A@pjBH   A& <>XP$S- %1\{Z-P*)@Y>S`X,&c2X+ HbH &C$7D#.<\Hȍ%Ui J19P*%ӈHcЌ 4b"(Xܝ@cⳒ +n;5ɍ@K-H05\h8"(؊EJ0h}4?2$G xjP*4T0N &&d#aDHbhUf8' Nt ̉ e2} )ٰO@RQXjjBP*+Z‚^Ħ$T4:p`z 1xabp;-_&2 sD3gmKw?97JAo`ڨ<LxYm?` FѨaU}gShRi%Sg ;3+DiW?EhNH FJ)1M;@Ts O]ͻh "F?; 7V^†_' \T$UM~;V97Pd &kQWCx}/X$?Uc%o9XĤB_wCaA!QjɻM eѫ@\xR{IFw̐L;T OڒgxYIĨ})O03j$&Luf Pe"љu\߁p@P;X˪4e#ڸ!Q:CewƆFX1Vr; +S5!ΒT_l?c3s3S~2$pX9b n@B<:3,PJl +N%?Y9F80́4*3Z%E- &Ƒk&u64{A71bb43riW8mgc |pJOPng!A->FK[qPd;E@=6?嚱oN@??$hX2lߺ췘fDd&!vHv''UmC0#JVAЉ*z_!j#-&D b? K0v[R-5roH \ nh BACyr/foU p{/sA|/2rC<=OǡΈ{STpd=ؽmЇqgE|UPA\ <#9'Rm;Òrt'0/:KxC?7FX5J8`/hL@>Fe< ^Ey [,Z9̌UTyjNI.հ +ɹi®v.b~F# (2['(i-~b@6 O9kL]Qe:jT]rɖPOL + PE7ÆyCA tFqRXMɭh} +kl)>Y'#ѧ=n,G'fhtrbT}dVugee?TW +hbDzX}X%!ok=Dwʈ%垤b(Ā51-2ݮ#Z#,ET1Vſz -Zb'2+7ӣ}-887W W*čMK y2S)~čVD53 G ">m2R { +.j$C˭e'zШc&~f!~êh%ۗx`BÅ\`%!wF$JDk+ɕE@92^M+ѕx>볬lJfGoEv"jn0xNQn.OZA[ W +ǧaQCě;Jp0 wd,iWIx<)/4͊ + T +oJ' GQԊb9ƫ$.,R9ucfS\-c϶5R!Uy.ښ*բ%>v{N[F7o >ǵG\<*vCſ:&f S`WY bB +HʣpY?ѣDaje~J T/n{ۇlc0vl8xpT+t^3oTx&T"o49m]c?P`{! ~\ +|Τ:[\xA_t-Uu\fԍ, H:n0$t.'(GTD.^5%"fv"gSfQa^2="c7Q4tyu72b%7w DE=%"]wf̚w5WG}8ap+\+ ?J%7CMQ:K „_Wݔыp ̤8Gj# s0U);AG焍n27dXiERy癩,`?öF & 3^务ڕl4>Jez Q^71\ 8=F|c`#c1iYTiA[##-|m), O7Ѥ؎b.AB".o|Xrc/V2pH|j ~*}I380ߵ[>p&P<7b'kh,-j_C&uH.&sF5_%sA#l v( +-@lܸf`FRTCZ!4M=ܡ}52N#ka +DBfu+Õr2 Bz23 z(ϷLI +fbn3N 32#g?HFW;kR{~6LIb o_# &AR1NN7˔q z +eY n26 T=:eWVbY< ?: ѳ<8u5cO叩U]~Vڗ +hPS3\h\AܫY.6U3,w:1L$x j6 = MXTu U)+X<\P&ˬLBb*S b#{(O=RJq"ٷ3 6gYSxr 8mՂ< JG˕!à'n;g5nƞki0Pg8,)%뺃$Ip8ϣe^Z 6\n}'i*,$xq X XPLB5/•!i"į씳NO#;ާkȒ.Iu܂8jv]r*rLsSBS28= 7#Т\F&# : Wv4yI؃W.k `0R.IJn[nl\9GL̂ +u[NMjJh,ɂ瘕2eQJOꜱy{qX{0XjgB?2Py!9oX:qpb\!tw'.8w`sP^+I$ +Y UJ!ٯBs‹ftq'zv +2F +cq?ss6O u8]}$t +9-C@ ֭YP&aP9Vh((Nx=[O#i~lǺ/M=bQ+j{gKqI2 ~&LU";J ᒰ`K_UaB<(1|@RzWjYr A$@K2lIpεL>+}x]0r` \M##53OXwdRY,|5S.RlC0e2gVHb 2n|q5 YZױP=d>7cIKh"L%.g&5H P;Jb[t'9`2ra,ԕ[,B^ hT<\+oEɧLgA*.1:C!fSzYf# ifJ +0̦džɽw$D=[EAkh~syCVv7 !ۀm# T"קsUk=-r[\n"o7JlzD8S̒AS 2p yvPsb8Š#4k M5f%R~&/O %@ u2.fY앧זfM=2|0Rٍ~%A[z֮BiPdfhqM%SeDڷo%O嬫M$TCXŃ(1 q¦+Ξ{u3,&H R ML@5o{c7ۖ/&)C^ l.. Α)L\}uB_~E~tWwSH6v 5<\2zAU% Gv{o0CqC@}}^ 8NLkT( &d.T3c= 2Ѯ?pᶮYZzOSW(c&(a.Lv:vFzh ')<ēO1M֒')B6hŏ8ju2&z?*i0!}SUK'96< J t*D1|f;;"#^_W:HڱT({N_ A),G??`4~1%ņPxӝr YMXz0^~\r@AkĹٌ*I}Rь.nV'#J _N]h옌 럃5muU2lJy͏KJO }./h56 f\,d.dfW~bɨO4kD^CDM]@f=-b+w@Λقn^GdV}C>lF25=ClL:S7 Y0G@`9+P9egb4ȶ0M[ A"卝5G{蒬w\g5Au&0gAgr&]B8Y;MͪM1upȘ5eH@'0scRFSEc +-(36r3ö'9fF[e6{vo`'OT|ʣ )T*.Rߖ8eMZYT[92U.S).zӉ=8KjҝѼU亸dnœD-W!lۏW75:S vnPUhf$c,bo#iEG䊤b#x\2'P v(q5soG¥!NH6NTDz=6n!p&B^`؂@ + \\@1)U58m$6={TԘ~ x n=DAFw.Efw~C bMs˲HW @Շ]Ra =[Mrz#a(83.n*2pT֝ Y6[q7޸au#|#x5 =&!@]N^9m6ݿkJVL"6)01υgy;؇b1ݴOMՕ;{fA=JiVZh' &J &ӤQ5&?f!i#/ɫxʐ&.2¾h!_Ɣ^.[BGsHsQ'g7⇦aFe1J%C:Nt(CƔU/{V+РL!JJuNTӇ2n9ˮU-1UO:jMi?2-Y%ayÐ RU)54Ƒq6ȷB"gHq<8<(q)8/ TXh(X``UZY96l2'tܵ܈" +s +PVv7wAk]X˅q[ +я1ni( BZ0aČlN/:S{ e:U @rR*hdjs%8-gXPϗ1@++6'>T;lA \e_Qgb{[` 8aƍ{bu-t!\` 2S}/Qv# ^Z|$f: ( fo +V2\> x%CAS ڢKWG^_ cZ8 1㡀 0-gR/"mY\]C}3z0ֆsB['m?sQLz ,i8es{?^h9|p6/u5'#,B+a@AyD/Hmlb9^0lg,½-6KڙVsQjA.*5*TU.L  sNAۆ:yBw<' +G?K<=UOi&,(B^[v6h 0S@c=>j:Fs:<91v,J0i5Mf[^ܼǿĬȯX?pGC Kyocͭcl; +wB1A4U$FM/&7Ir<rlPgKZt"c*oøJ:a:[dp͑+r%c\zz@QWx7.W~^.FY( 2;0dE]8^ +֚SY%߉djJgW + BzoJX<يqI8C-ô@9I鼥6o}2إH'IÖGܰÂ(6&:̼0+G%7—⧔kGI"uk2kw[ +}L0_s J?zrc1:;'$K1y =vJT݃iNJw׌طU,Y54E 2|xAK@#8h͕NBsvz{!TR$޳0|tjP7qoT5g[$rCiJ!D!cK[-68 @PGS!!u؆8P3%?P4NBu`ҕP>#n5љD#a~H\@N P8f) 9-25a_s|&`ʘ +6^i#Z/r` 0>fAkaN( ;{tiGè?3F@T pI=-9C]QqUlh#lCoH})Ο?m4GqEO\@' XwƃQԳT5QGoxg}yk&u ,vvI])aWD86+>z|2FW;vNfg7'1E XJb'Uq$%4^kx#Zxp':eqr Du&$bjXOnNNX2RĠBh"Z:#R[3ҭߝYy2qj[j2[e%cgKg:~UڱVL!JEYPwQxB]sRIjANc/.WVe/bf={.)AfӔF{3Q/# [DW=DA_{2T4'H.z;C\e66<_w'LIZ ߵ3# +8:SVX 2*:ڿP͠D{Px da0׸Y8>TӔ/ Xڰ nyK`ɛz㲪R4"/=gf QE杋q8F I[I$ʌqA ը"7 Yb)Bvp++m rȓM +uw1U0gߨm/x P۽Fq&IZi)GΙ[^`]w8-'H^'l,rԦ Tm]ځktu8R@B% Dy? Ў>R6:ƽ!د]Ui 8rBKmDŖa(ahP˿fcRK-ukЦ9)"-H3Fjoi4ޓWݐ?X@љNͺsX}Mi+]hz~: +IB굽dq8*,*I*a34/FeHY'Z~š\m^dS!|du^QRI l b xW-P"pSwq@bK1ErZ~P`ۭ!N_${bTpD&GwĖ>5 (8.TA.IHa( +5,9[)Dd +6.o3l{]YќPXXzw@:&g㻟m,S=,]pMTٮVç +˶F,oy_ +JTu;6*DNЉe~Qo -ŽPKem5Bk-*pVњe"\ggTD:U.fg\ miisZeW3o9@ūC'f}e32 p`JQH2Ət+u6L2G*F9Kع0_&U41>0(6\D TY2/˜TPPȥ#uۼ1ا`׺!g?F]0aR m_Drs>V8FUT+33v* )ݠr72x:lcOeӔ;t'P$|~Lqu}"Pg91f)cdX7DD@QvaHҋC`'y R#uO~`>stream +Mru*w/9cߋ+,dl> fcfU[Ul^iiqƏ?ꂩXPnhL;3lR :G|s"ީV@2"#(Zy#ֹWKηVx]5N,=0?onf !33ñ4PU],at(srDn|E: Zq1?LUn7.2PLZ:.bE,W$CEP =q%!tm@@@~){Xd˹%\3/u<ȇv&AѢHY II[N*fnPF6JVe 5-ѢѠyԣK=]^Imz&ig:ȻiaQOzsa@yxӉ|*>B)]A;9x?~AYxQ8k,^(?@Vؽ8TcЄF*(+<~dЎYz=K"qB/zԎi[6O~}k_[ GXY\xPG$h\[[,YMr_(k&oT[C^*SC;esۗߐ-KlkxZW R>W3$pbnA Ptl[78 vx[6l-m{g8k? b~>-0F Hʺ1Iۆ+7TaP17eLȋhz"BQڢJ#p#C9׵m%ζH`3LWL{BDju'*Iz5]! \eM,b{ϗ˕fj0' Litl rs +i- j/:a5%?D#zZpF Wz.UR8S<#Y),q8ߨ@#A8U@YxA3j50.M +#jRx'l[1-2U=ƒS,H7bJ6++T98 +?N7\CTْj$sa68ecc%8Y֮YKįƌ&֕`V\ /`SOoD54zc3(m KhlK,$oJ!eh@0sŃlUqxI71Z r/]0 #iƛ]%ܧ8JCnJ9UI,\ Ǖ8zn}yGG  ogJ?Ilog!bELYΨMz7Cqp7t:<'`j(Z W ʉ'L?R[N#g{=2[ GRMjST<7xX9%͠HXF G&ZQQ\s"s(vߚ=6:%0L!rmD=;qdw)R77Dux֤I5Md0 Н &@d2X:@TsPQ͈3cb gnGBcEu5ըD1Q՗|j_L&?Q*~QIRHP[-t JEC+ͪ! +IT3U0Uw4xkwX/U!*|v@Y"%7Q-s̤YdCTUEms;h8_plTorLX(ZvSTVl65;8,xi ʰ=t9 f.V"o?ČbT&ϵ^>]DNIԥBSLS#x'{e\(Dn^L2/LB>#PR@wfu *Sqp_xj knI9C"]}OYx4]_)sWZ"bA.2)!\Ȥ+!Z9ӗ2d˒v%Jdpy3LU-z:΄b`n*AjF[6q(zSxŕ+7خP&gdXBU#DI!߳]Vn +du>KݼDɓV/5/;oPlơ y,]M`,ЛĤWl^|IY*͈tN4ĬjZ:o>+bUq, B굎m'-iHF# 5v%㛠 hW-GJk u(t+w{Dudj0-gUÃvZV9 +3 :lRPOԦ«}z,&_!LYn=|̬.ē΃mtjbOx  +9&]rO_,<̍GypBOܽ+]%gt͓QrÆy8FW&s[ Qlj$ŁGuy/tۧg8Ln+εXlk< X)1^1(' CT߁;woV-Y/-Vz=QWЮgZS !?4e'ޮy㓚&"̨AM$9Du^AlMRLؗdmy0egŽ>ׂw1YQ1d0P0CP3%#\4~H58^bLbu8mrEF[2[KҾYι<ގfpRo{!|0W]HDzYN5J-l"q6UjtUnK},F X>E)KPDEdrʽ>ll:Вf1,78ҧ8<+nѶ5z^Vw%!%rDv؃%^t~Rd3il?j+w2Klbrk@8rvQ~#o.pȬV|j%ixbZ^|#%n@U/0m3Y+x꒬f,hDz8q bݐ_DXC[98$U{Ko2v-t}IiuU +u4.kO6iXxnrk`hјݕ]u8:D]Đ3X S t.! +O:|r73]c#l&^2SGS2Yb}ŧYv(sgs^$4zWoo.SDY&J4NVr ̯dCdl(} +>蛯 _oxb˙/و*DwaԡL iC\Ƌ7 ć$l㷒bgHĊAC}DbNȥ@h@PgIOyډBG8)?ݟtl< L>$Sé ~i>t& aOmxxyE;Rƙ,<뀯%f'}Rˉ.#eW&k(1Cb=A3!H LvaD+AzWWM#Ӆ.K%{!r8d=wPV }v0^ٸsL%[]adz>٤2CzſBޅU T' kzxjTǼ!1`t6<*XlPcC$iè(T>F@ 4-: KPcdŃe|P<ܖ.Fȭҍ~9m P0Ǘti +>R :3$Ψ$Wa|hLuicTQbC%6WXbƆbh8,ӷCLf\(IU PE9C$^iOC>>9CÐiU*OqG.tz5fk1om@|`X &мx&eײ_U جt^\tzf2s&tDyu&$-=5NbȻPPӫ>l`BZ0FV$xXBR+D{/ 8:lv%yf< VWjCX^ZqUG1[TDM`[)%WTi^2\'wqc2];M%kϸu?p V{>@аpu~fy:$l/|JȼgZJ½`ӱiXK?Ud\ K/H4 Os1nvB>&B +I&+<WIر9 +ɢ\w w܀3,--WK1 gk`nTӚp $QIM +W`sK.}ȧf,`e7@M3MZ6t^k}:|$iBchu +u P sEdKEzhT:M f;bbf=xhTȍT)BOX4=9.X<%y. ]s~y]B]mOCdzˀTW-Sx4Gf_DjTlګ]C$swƀ*@5pe\T}kmqn2x!Z2S$broO5ϙmp舱B01zi-"4wj,/=*GM^M'D8?yfˀ?*/q(KG f!he{b] 't ̗1bm ]%2OC6Vu|^K-E)P:mZ.tukB:x) .o +Bk%,N)d{b3 DcLs}^ɗԨhT"p3EAG*D m!G傚h` YJ`n2=O' pÈv(OD/5*'a +K)E'+#%c^S|m\-Nm+JU쬞! 3<#N'}^n.];VNUTDjfR|w6G O 司JRBi7 ąJ^VѧH{$զ*n,&?lI$D>_=ˬ?NXxp&mWBLvi C1eSZm1׮_?w+]` +"r/\yeplHZ +e$wwrt(b/ʌ@?]u)=p)t טDP_U"'VU$eNZU8, խ޿~vsxz0 ,=s+Cq7XHru,=ȟ `r;8X; LI>^F9Vn %޹@BཌྷG!~JUҜ}nH~Q5CucR;kV`[!T\@觲& )B&⡘ RgaMu0CLqzIV2W\^RQ,ȮÅprgY@BO00i6%9q@'Ls҄3!wN(|Z7VYͷW TT@Ep@Vq-o],U< +ClGEŏ4)z/G^3~+.Fӭwep^ BRn%V_^v(ŞRQ/~J;Nnj!׹H#qVSk5/} +ʙP(TQ>lYmc +J#[mAYlmDE{)| QjmĴIZ:.*Y'Y)zJno:8E|ז] +Ry9P kEExmaVe3  ط6A+? uakb)_DGfM(.6Қ^s,"Efȅ@j%Ao\E΍FM]=KcDte{֡8ι74UrAT _M?ѵgt>m9 (p Հ+B)ޑ5#8FȅQ:KN\3Ps`K!ko[ @7HF>k3DM!{{o{ϳZCшDlHZh4A$>;cN )er{82/؋xd<yN-fk %Lܬ[5JP8+C_O"(˘osg +߬*lƅ8h) _ܮ|$`y2]27Nc2~h,UT?VE,abE j{6!A +y$ݚX$ LI@YZn}3):%6]\&싀S H~D6[` Ui__i3pa>z>w5'gkAlǢmZ~Z&N=}YvK1E-ua,`*4oscw*|n ]R \+#I<>Z20ˬ!xp]/' +?= c^ld;/^̌06UQo."]ɯ}WL-ԟpAX 䃾!+*8X=IMh(fڊO Ih7e*b RfS}'վS)葩ǴR O؛_(QUrgPŶɐD% /Z}>ɠ|ID=uU@ȴ]49P1"#F ֞Ux8WŞ kUyZgpɇVv߱)2Yϒ;Cr + 8 kE45 +KU+7zZ9B~ #HZkNA⻥$=E|yV@+ZZ8t%t IyL!nI^2(1,^u2}aDՊ mW-CBG&8o7d<Ə"bh6!EExCߕR4DEĆ"Åca #+TS kx]>ͺFr34_y'Cve$)LLY9Q׫ fvI?Y'MucQ$.DOr~xmvEe% +J5bd>W_W /LQAe7fϝt.L u/9`[%H.W):1jWbLj6{*bDŽq ~E~x"!KQkd̈́dƤeD/ R<(FwsijuAu8NUJdu$\d{j/T]ۥ+tLq5!\C,AvBqS#HsVԡuI +.ĞhaP1A?_! +o]c05aOJDUB_nb-0w!b?$CqR'QT4'/A L)vu0}Gܩj()^*=P?ʦ\/88&l獸cP/K>쿘*gZCVg蒦E}V9RDb+BЦUA A}QVֱ1[aL5pOWSJ͒Ϥ}"15QI(\͙.жCIj:mEY=_=(l6N|1H1E\CI넻Kwm-?8P`-A:hr]e3ٯHM$DVZ-؄xVG{ 屴PȂ[ٷ-:)ʪP'!i]\)Cd[TC$~й[`h8YEW,USYP0i8pG9wx ӧ+I2Hi-YQ1Z@=B*JXTt +E!y +Uzp5؛QJHfB#1D_fr6fyp.x}̞kS7ӝDFT-*,ħ4b)f}]?.hxq&KT8utndAS  OKS,,S-V/b©Mdjq{ |Ō;%+VEs8Yuɢf^4(g|(g)m5% +yNjUʵ-X +c@=H+5*2|AI_&."v-ez0, PNE!6!Lm{Ra/PV9"bٰ-!U+`%l~FP)rGJdJUaI=|-3PMdq} o.k]QEn$F!12 5ky T:~'* AhL`*Yzlӫ a:|KxΠ6/g}i3`B.FB K-@4*m9{]Z(@mdeHvdPH6?u$Yn嵒^᨝ +ɭ?sW( @ !^tPnhLKZkJ3U §3(=r8v1OZCp9u_XDX9?&S׻ȨT4WIlؒB>,2@җX/N!MnZ!Phd7#丅~rzӄGRSxG?%'irnzܡJfCɣqRSȥ1n3^nÇT(a}L'PMBikĀO`{ +A(Ւ.{ 01U˪/AgQ:DV+p0"!%I˻L&yoCV-}">N-݀2l  +ρnX%Rȴ>YoYS nLw-:Mfa q)8ݣɷ;GT&ea%Gf&E'a"yM6!Yf5JW^ ,݊B^%.uś2=o*>$FbD/*}zՂݻ@ɧz!R'Ny.?J=ϴ+b$]@QL ީR Jn^dwׅOZ7f6^^b9^w%FcvMnGI"kIUu'uSs.G0sh9P`%ʟ/!7I\J%p[8P)V9}xFڐDp7 )d(.Dfփi qZ舱BDF +^ɴG%=]IkIie@r,%`rVD|s%' 5Kl՛ >;tp;&9 SzB&k<[4a\N^7KN*4&zZĂ;'$gYRQSdm$Eh2`V&S\V2S WT]T, H1OD5MWpr2m!B^wcQ5&rIsQM͏f:! zZ( 9-ZK"0_zyͬd+ƊB8?gSBHpb:FjM.Tj!_v] +H4&X@`aцC)x,Eo6֜#>#@AG=8ƛˋ߷Ɠ"F:oipEP.9zY ĨA*v@CN:7T$iC@BHM,H`nhyZT~!9|  ncNh}j%\a(j&a}3&J>!7vC%xVIQQ`}5N*\ܐ'}Fڢ gKJΑ;R v_n _++'d[\xHҟ( +\Ao=eAQc9!%snjHjQzsW +j)}hg._\]ΤُXVHO@lX׊܆ˣʖhiɱOMu&Ҍľv"razs18Ri <ŽCS6O0dqq˘;6 +eOik=Er9"Ut"!(K^XJbW/(H?<^AwBTth@reYӇrBYsgp]I\Yik8,枇g#&V!HL QGNYUCRHw +E:&h"GyNⳛFu Ht(4Rr)l9<d2@py$#g9aPiJA0P>F+B ݨf=50Q7g)Drꁦg4/Gin>Zoj {0yw 5P?1᳜\k!pziU3lsfRM)hm:X@Ч'vƎD@ײA| =xz+$Ɯ,³%53籫Y/|TH& +qE =ЛX@X&ĮJtW<tlH$!E'E~%^՚:`J޾]. +3^o, @lؖ54މȌGZ;M!рل*f=> č Y\'j^p{/#iԌl1CE9~LP6u)\3Y AQfK&WP!H*23BJϡpV—,x-\& Ɋ%@X2[nMa[ _X}-@#RxM66`e)>'ND\y^9B `".D/ Y*[JAMŘ # LnVVl~4)+bAf~i5Jl\vB1 crArF4f? +>јd0(bϚ n"7t;r0VHDeGk4J*<ff\[͠砹bјw10-p>)ӌWj x|u[&} Y\f~Bt7j:~H+&hw9; 5h˽RRQ]bA`>=F7%񍪢Τ{.RlL:oBk|( -& *VTmvnl1u9euY$y[}>2g|خ%4t’K)t&ؖ! Nk[5jԒ,E&l53Y̓FϛR BZ2W;T́X@p(@=*A18dOIc/Zq>rL!Rc%ͿƍqG!e/F1neN‰}të K'kGjƕH<]fTfϕ#EXSE.:VXhn\'g2 '(*&0jM)x`*,^l!|9buslfփa儦X@ $ ٝSjF1$}B  +Syy990ґLǘ//K(3*B MENբ)+=?[37.@נZ`cBUWF-9m6vR;KBhI~izp +3!X@1m)/0\JK3 +chPZ9mgxZ5@!]OsJ8, +qjKQǧ6(qvg5RZFߙ>Vؒ)D19w |*Be|n ZUԕAWcT A^cOU,Lv M +7HBWw:h~2E){.T#^K^G\, :]5H5\{}|K.w{7Y(ŵv"]/axÅ2P;=!Ccߍ7X6RMd-}Hβ_e!1˩MeぇY{ 'QF@<v5bAbBA%p Djpt8+s/&o-t^wZֻ:A$ e#3_y!a)n%$SPH\ ih5ik]n0uJƊjpnh!J@ab~eN˖l%.@D+YX 4;X, t{}Ά[Mɢ B*PKĂxsCW] 1ɟYIdΎD f2V|E! .5 E|tŜBJ #VTEElƜ# s6J"ݢA]B~/TPkGa.cuJZ +5I7)jhX8s\nkISte9ѡnV{1\џk(-}@:1(D5V"`șijO4~m&m}U~7?UDb9ٱ DlV=@Y4!g3~V8wK'd?. GϏ~vhT+ToK邗L2 ILD5ef 2)ݭTĒm 3RZ| +zۡG0ŹJu;DYWL<wʙ.c5'< ;ٓ!SHY Qs*4?%&: Km4G7T, Ц5a?=ɨJȞD8 !a`` + Zg=ZkkZĨ&؂OKiD*Uo)X@0@ op~}ʐ-\Fp@%IW*xi1]ն~ɉZ/!/PH/`3X@$8z6ǣ 8On i|<anɀ s# +jǼQ8:s/fqQj, hY)[g Z?ApaNT;mBHB.V u_ttI(xѢGψ,޶bмyJUN˅"I64۵12E.μbfƤ|V2 vµ)r,P񗂻8 K+&6NQ/~01 gBNy{:SYۗP@j ^ȝnF] Hd[0V, x-AlKƚFuGZr 19AFFŷGyV ,\IHlp3GX@, (4Ɍ<4iS렴(il5229 + ӢhԸOH +Ep8>Fm4-\Wybmp ޜAyTNfpfZN#KJ]yg:gpfMc, A{HbŠ:VlӠD ۟=R +&OV4šugě.˚4)C, X+xX*FӈԢvÐ?Ř- >e5ZWL-Ka?^564`Q3, /7djE0 ^uU{e 7͓Wt yO*Sl%$0Ҍ*2X@Eʳk4X>ŜP;AKT %)+\%zFy3 vf X`8pq$%TӝDaO_\-"=E>l󊕴CQ9!(6F)Qc\)8l2pX͌Ecj+JK> ( &=kk({.F8I!|1 A(N߰B:ÛqxVq3 +=,-!F_4v eo> +1D0aX@O.j>C%=YT%jp6;tEAxƮtm@0;bLW;ӡI#L, >˯MKGU!0"b:e,G I(kC`ڨG4)Hu}L%,NG`;F7 +ؖ^ +;)7H|ɡQ9? )$H{M %La'(IIl&R0w 3 +51L4zc#eo^/sAh撶+4$nUi&! +ʊ1g ^)aAYI5){.#Z"(:#ȏOdnQQNZR`鲨Qvb RV @/ +VJR(r73,Z[T5:U}vV+;R3v]NJ%c[T z̭痌  }NH~&ȧ%9VƐB' eP +!a ;:ͩ^,I, (YR_"iv5>}7]׹3A2%66:$wod~:!SlR# R!cAƝ03+Jݡ9HXȌHjE%U@RDqs7){AZH-}@v?0I4~ LH ˡ oZᑟ Rj| 9PU6͗0Yݞr[4c!1x6kQc^k÷-S[IuaQ}5@.wIoum@ R[>$tTBAoу){;9;n*sPF Ӻj;5LVI@F=Kbu.O_h5DFcj +ñIZAIA?Xy)p5=H S8 RG4D5glzn)i,iP;·x@ y*"eomFC@*)2W;HZz{mqAq4D֣+x2DD&(H1QUZr +g4PxƮJ9%./ Q00ɟTz3Jst0ӭp-63qar8\b8V;:7arWvE-2Ui3a 2xJԳuA8KL gHQaLy@B};쇶FѱSTW6AMg0  "Ag]|>e-&q*\Jcw|h K]c" ȌX@P\NMqF{<˽K٪Ȅv'!#vB%;Rxtän!]Z{%шň,9٠Kdn¤+\xYU,IW\(=-|* >_RʤGOSqnT nYF27"і{ܱjYo3^Sbrr9XѩoJ?9-da՘6bZ~e!ur[1XU$8Xɥ)C3|VXk!+`zꤳX, 6OEɾ.`4D]]%hB)څg *UuR`*B6`bJOrr +}s*GtzHBDﵸ?Pny|;'PJ]猪V6g7\1& XRD:B$M%=a{gZV"?ݒX#$El VmwUZDx@p-Yd'}sg0W, xlSÄ鸵j U"jOhFmkRMJKeCAθDܜYM= JaXSuqࠖj4eӧw0r%ԥx_r1XSZA*,im 1Eqٷ6J`|zAsMϰj VYJ㶗@SI^vrV> +;ÁUu\dv@ď2"E/ƹa- R$z NTGYWg3UUS3v]#,Ф@rh$Ծ(r:.b~lz0? +0 U, $Hk(\nyonzu x2a(( +ヿyg61NQ3v]ۙyV\ 2!e$X@]$I|B7Օ3- u eo+N7F!qU>Emb8*T',E9^fb@W.X@Gu[+# +Arڰ\ Ppd9N~ǐlF[Q R~Tzቼ`ac)7, (ǰ;|VdB7o٪tsBL7j Ԟ2dh}N8|t֔vp(lOM 3( +({2L޼~23-q8ʚB HX.~$y-Guة Bj`c›`G OTbPE +. Bm61R R&8q,A-ќ`H;P/`hH|M|HS)t*~7Z?tɛDGay@WGժװ$K$~V@@w e ^H pX@@gA%0ޘRK k"7@,|@guz3cS,6o9(xTp鼰s|, ( Jvc_JGm'm{GHq~bݓs@6MzPFP)RJg^eʯy9%θ^a垗(q gNCl6S̤q⇗&N;H@Lw5G]ׄj]=ϫt0d#b.$*7*$fLt)ݖx+˫cH &u0UV~AC(4 }:*'C5JPei)*r#C8@xƮk3}φQnaJBRIk~7G! ;+ZfbF=cAFѡ 4چz0-&"3޽|AOҸka"e +Ǯk5eT~hty)jrh6_!@6xUv- +y?6!W[brBĐjRt@Ie5C"!1{r☱r[;1?|"eǮ ͈OŅI(JYG Ú'l]\pؔN#=qVa@\ ]gLrD:K ;Z.P,}m׶`qĮE[bC5=*H$ ͬ-c9s؁.:@E{bUz@*p[b +(VRd%=uP .01t9#X<8?RK]S޾2/؇>pȊza32sv9& o($QP}HhJnՏѭԐX@u}* *b'Ceioid ̤a8{fV35h$XC.s7Cd2!]o紾!̏RSk׶\7m]u>1a9!X@l?ʼ S>t7HXaj: VVYM"c\D ]Z.Go; 7Ѫ^E`` ^, A(O,q+qP~d M@}5o!3g fz-j)FdBkSo߿@Nw8{`go^\t +ҒFPbbQLWsIkgv~@xAWiSQ"WX@'ǭP.wZ Bg ,M ٸ Jx J\ۣ:Qks,5(Ev4Su %_DOɚl_pY_Ucc-I1?5S+X`MGTXO k/(]z Ğd3)szW: I2a YRyl2?Xz` +yNqYN`Abatvi/`Km޶o=,d iȖl?g;mX )Qa{io!hR04KQ:@e zkr/$ GސWjB W +bLjlB*4˭m&BgH 4!ʱvi5xh, ШRv%0P~ga$sG [#GQ 1@'VᷕQ{]\RYP՝)^ T8[S>W%gqh(FZbx\8Śv.5[!%ysgVⴋi":ev 8!/\`xsO#.R/I/Oaf ZoTu5^]WɄ6Zš\=Zbl +c*X@Jʣ?D<\dSK>tQ(^XD.e> 3&n+T*H.5]W W A| ? G=+nO+l j}R邹]:y xu37GsJ[Vx 6M<ʊ$j\-muTeǮ= 4C 30kS‰F9A5y0&0 Bޤ]5B4Zw "j.Z£&y!\}||K.WwB_r°k>({Ui-;"YD%dBR8##.%'lS&}3:d_$tsf KZ-t<"Gc-[MS3)7i&1 TFPF"xlKZuHӂ]qt=LpreN`'1@G6S?A4tzMҠEuOfڸCXa"X 6.tqqq-k%⌍=)-n)·XH%){AVop&K{H㐼~#DN (@ VDui#;놋^xXX@)z.7WrmO7~B,ۖ`T~{^ړ v]϶$d~ۡ 9E|VWIVؾR%o ,{ȉ40ŒrFyX@ _=T;6S 8Fw®+j{`7 uMH+Ik%1 JKM<\]tٌu(]nD) $sM (azέ1*5 aPxuIk\yP. Ra' @9P8v1I kWZ: \uFx_=.`(" q̘kQ)\6IZ/գuc/oYQ u|H6#rI^Ih ;=:,K0_ E@~Vbʤ⟻)+,J5/-!>;)4\V 1_*%ӕBԘ%yO|4Pؒê%GUay'Tʒ)24x3naХI'/LRXIF"ͬDybb:s8ÁjkX@Ђ^VLr2y7򸦦[g>r o1qr:θh:8eʌv7Ws-1!eF*E +Ir:3Lߗ'BzƆSJ3o"`VB1Dn0oi|qIs*U K0ŔĭTՂz!V]FM+/f +J aRI\-ط0,!5,5z]龹ìsTz^AFY.g }Yh8l*)dG2 jnJ >>Ym/*eCx9Tka9 Fط.P½FIϝZt.s~R],CZs +Vx)hǡ•.z)-\žRX@7.iqu3nx3p&=s(ҽGKbݗ_vgA .@o9MtGM;@cmLZ}W2YY}VIIkkED%örU5M.&߷qϝuTŠLOJee, 8i;ed 6nUep.Y[هnilx+ֆe4L +|Mj8 +v +Lj>q w}\8dZ܋2!A {vNtk^( 1Wnan֛e yO F;xsdgZDa +ܥ#0wfS41ecwU7hWbRږX/X@8_hB|UÒ朇fd05El=yx +VVdy18Nk3Ai+yד҂lMk$-?nwܻbȡR@NdtWA7hm`'>kz.l̅]Qe!âg? DkJ~DaEu|ɌuXi aĎIcCdG+@Tu4!ғaYp& u}gӥVOb, PwHj0TFa^[JP^6w]%},qy̮X2IAl`bӎOOn^b"r^^C.&rOE^;jw4h5+T +ަ6Tv'B ۆe# X@? +FܽGNJ0|R7aqe ǚd?ěh,șeNDą-->4uѢ, Nu=Mт;R\D9Jws"ۺ".HSW2.x<{Ce+b`XqO@hEa_< ʚ)xBH뛰&*=j1.hC͞LRd2 x0PWvx@] XpdBIS+) D'l 8'e>!e„]W}yotň#9'X@I3Yo3 Z5#sV *8 2|^PSvxěz&$%"!~{5ma!tr8Y !`8t 0&1 + +/(AbC=|x/ǀŽ 4Y+fqVStmd" ?'7eX@@K/Vj6 0 +@J =82I˯ >W;v)(fR"2E̾VG |徰ҐfU@$1j%alDNGUk +)赛$Z?ROLʪ@j= ٓ"wK[aawS{ uK>Ӛ(oB @LA{LbV.DVPmG@}uh2ҡnRB ߋW˄ > l[<erfgOQN^ꨗj]Xүd*{$ZJ({ccAat+U B!+*.VރCx#R-pAtjJoNjQE%֓F>./$5U߯cL蕃CsJ¨uyZMqu"2bj +և7XkƐ!e8(\W}9YG. OrQ85,;\ӚI|]ſnbHM9Vh|z Q ,Ny"ȇ^A0\0?$= Nspf4  +Ƙ$P \FqAAR{d y$nqqv +J!Aп"O0e"mX=|Dֲ.Of ފأI;p]ylor!ŹbC./&uQ0^<:e_ Эh`twmxmmZyӐɿU5W._Pu謁HQxC`b+oW (^Qêu>9lv'[mEznmU> \E12)TJf0-}Pȓ^, p Yc|E=|@fj, ,Q_ε(]eqL~1b@Sl"K~!9rzkN2HG)J=szT ?* Huj@#.ӣr7QrPlf\3hW +W_wW*f.~/$n*årT-C(^Jpw)wįe1yO}*nDfa1f], (h^!&WBuwqx.#c[Lj: +q^+4ux=y]ښE s4Nz ͆$ݨ].)_U\\M +.w +^ZPi_T 9MmMy'eU/'j`rnH>ljYĴbˈUweu7v@. 2PƣmLboRgSLHc +еIkʑ5Taqc3\P膬N *d#xD +#}&g(b݃B Q}u@|a, Xhf9VxkXFGiPlg8*apܖxE!/&9߽L΃.'J| J3/υCMȅ1a +ڿb~s!1X(M$E;Xҗʦx.4{ȅ3VʧbJ\, A˙@}̱GDߢ,_u(f=2c7Ҧ/I$>}ﱷ}G/d# = mEDT@v G2 8=95rHJKDH_u#gREm$X˫R H Żv&P&lD^g S4/T ˽h:{켵D$XlY.?GCx'&I}{}+PViTyܝ +[dRްA 2ԷdI"',cZs0/!C3f@[H )!MwY^PHJLųIɴW䄪BX@;'GB:z_^Pl?dϡrv#. +mEVk +Jֈ.CM X! ~w"7dИ;yH6''76ONVR[30&׷D\9UeR*r&"Txesj, (U,o!AUwK_)uaZ$JĢ\J^b͞l_\S9=oLrws`NȀsBR>;atiD{0FMB.j>Zb"8Uڜc<.ۙ&CY]c~w)|f +[Sܿ6Q.)QnLe J7bW:Z1h8e|Zx^(Yl6BDu6zyɈ|_n]`s.b'5, D }eH7jpf_H>o-"P=4/tOpcVM1C6MX( akn{euExlHEfmR$uc IL5)j_cKAQYn\_%s ( #Gx12GsN5M%&OnC 5[=!V5`XLzR`m9<$ؒ %|F؈#'zB\|`,RkU3ksut'&{E:-N-;R^ becGԼ1,F Sՠ\!W_b%扰Nfwt:û)y>}?x/&2fVь*MLNw/ Lұ8z`H̤{mi-7/Qa*.>J(zOSEs"Yr45NM7rUZ(ijN*tE7G]e(IHè]'5GnVfY0@U;F7Ҽ*|, +.ś2=9]QK};w=ZBGiv?<:85X@@yd6m&!#.0򼱽 p]`i#9{>+ {t +)CE/!]m@q~Ϣ%NO::+^`Xƒ +*?>H8/m$ʀS$(ԭӻ%h9? 298M|K KS}8k]J'p5pviw\wkEq o{|"F,W?DKwX xcB1t x5cq(+ $;ӽLGBoEC)MTUEDU1:M!6I]̫텲n0E匥L Q*s+>F<XݖszgDrfG) rܦl1vh"'YܯZE5M[Wd:шJJg%6f"9y 4XOn=@^pf, ?6llE1ʷϜY7R;z(V$j^ +O*DF%Ϲ6wђődyے@m*]( 㮴I؋S5qs>rm[ʩņIZb-qMhz;5os6X&uiU9l)Ng~Ȣ{ĘRu6_y0?rJoE;;`: _P\I/{Zh, R^*R^?Yë +\arrb|Ӎ3 F[ V!hqU +ۃM9 |Ⰰ`p~@Dx1BQ|=*}**h4]x#+6<Բ[\z9yuX1䛆O{8e14rT +ϸCKtwXA)3#I'I`Z“s i6r1h(] +aPB#:G`BOZjLD!l۔* )Kt.*^}Cz)}R +]6X_, pM56Qn1mYY39&4h qt,ԝ*7V{/õ163p%t| >!؁h6~&aIQ ¢d"%mئ p8kd2 +hq2Ӗ1K: b Ie(_ ?ܨ2.HTF[50LXS"߸5Τ`&hdED]*o̱)Wsbg˛QF)h~/Z|2)b!6qO46+1N[ՄHR3 2t{ çi_xfyk12IA;` -8{`jni, HAPr2<cHi\M&{BAsyG1WDTDKXP`mPٛ-Q)_ xV, ,ۻ oExN!3Z V \T"ɮL^E=;T:He1_UWP!m&pS(ҍ@'`JǛJ%|Zz}E 0 +}D*oKQWSeFG*@h ƌ;9"B! +6XB\P'$`MCEN; "#O;$!ƊSŜ"X jl:FWNe`qÊkLd$Za"E _ÂI[JÚ זlḄ1αm)#竨N̖0H L a~%kBpcEϰ`Ol&f~/ +=947%<\K5#tr+yg4>j\h˰/|R4aĕѾL̦X@~ܲx(z:J{U +%&7 vuSؐ2K1h  , , ,           .cw*W N"0IkW}ZD${wkKʹ3IJ T K0L [8 |ty:.M +-js " 3Uu(CD1ekiAEW R&>:wbHc(1N eoz5i"! + ++<7W`S <۹qG+5RӅDdi, LTi}idP -> w9"Ѵ +DŽ1QgJGhފ6tMuLN A< 9$MbmJ6yB({3+um="Up]RFn9/y##G{89\!*%vk8,/g;J'gl=@6ʈIEP612BK׶kaG.ln +N4Ƶzۢ_Wtm:R)WG]鑩b ؓV<ťd&E"qQvD](P]%bFc+>{gRDAqȂe(h\c׵T xۃ*CEt@4BC*֡dbcdM!qcoP, МXՈQjThV`c mvhhĉ|25T/3wzK$ +ن|' V/=B:!D ɝ;_~L~Q +>t6UkS Iijԑvc-(آcRMCn.uu j_?M {Ő^'-DiX@p1uԇ,S:*c5QCLEj""oVC,,@ѭ%14.4aEuj ٥#TS1e/룯Ζ:Ȑ)ﶩv"H ?tBjA aYU!tvXoayaekX| VZ308HGXvKQ6:mpqOLU;|b3$ _* aBE))\#aGὡn [B$D'Z TcR$#6YU받%4*W #W{LKdEH%& fǜ@YA&,@(_6遂"3!{,-pFrˠƙxlb XfeGLq0&FJCTpy$ ++ X'r7C,Z){7X<ha`q(V2̊(bF@5:9I@+F_$0K6iƏ~G8]\(0 m.V"˨2h6jn:=$%1(f+^ ܋ig2`6` |`AJX}ԤGDT$8^REcpJJlAwE` kFn2$%q#!OLa5^Ϫ7Mv:4*زDWĽ!1Mq.O$]Kj#_]?r6(xc$DNF-#$ 9t(liLe_6C!\5ZC.yё|9Q&9od7*ϸჷ6A\Z㖇r. *Gn>~^$5qPq=F}+*BH) ydY2ْ ֧u951!V5|NPTZoO`ê5u1g}Bs)tnUCjwTlH#`ϚTpFfȗ}tV)a JJ3r68Ł5RM$ ⦳;PkǑʬQR;Cw-drfDF-0F%MC*MI.v3D}hbqI͊D* d";7HPaWqPCꤊRA k'Oe oHI#yQW\v." *jGŽ/(۹1KoH]*H :lYJ<Ջe4bʞj#J uKtm+1dRlR#\XWX+gy;>Kz2 PGش%Ml'ad,x`Q`STRl#^JEH ;)Q|#/qB6o$*FAZ(5Iȩd>U8rV%(faR$/4lU]u(0*D3a蹨X@g$u]AC6#5SRHmu";h^9S4(I-1N@]tFd%ap$O [3^rŮΪIbm2X܈dMBf=R1N鼰(=%rYpK -r Xu0V\l h7R/2Y,RIrsPnØ蟢?*" mq2y} +9&0M!j3ฟS*ѩX@!zXKr".>J-(H6RDϹȠv Qk;bٌ*0o?, ɣX~QRr.I +Q~0V8:e!NWJ +84\4PV + =glY].ХĴjX@5z6B< +uo-3 pհb3ޮ`fNV'%̎WAgS_6eIF, %Yi|ۏVD`0mf -G$<$(j_촍7J3#3P<=Mw{!/% +$FzD-n^!NGv$er9Ӥ- S7 +ɤw`2;)/=(.S O6!R织nԌ)Q$:{ CTƨA;kR!{آ%> $LcR3cG<eKAWrקk83X@0@r|=U_uo &g${F^?:nWغk{@hRaC]jq/ d(YͮL%E{kuBU[^je9yK-}#f[PC+UQ0 >lþpX=F1Qe;1,_'/Rs%#;0d, +ˠ#}JEdP>44I$3hN:n0e15Y;'E)B`t\X FB\=HAS5+0p|@m{'8Lv `siEeT08&KN{V%{LtnuX@ /K'v6w1aѰ"!ϊNd/kR,+=]Z!>qMiB֜cU nŲT') S;>A h}6|AD}P^h%uY&f.c3Bo)` +#™& 8:7zM}:tP 8KLk0!N +*п2ԼLTwJZ&P#(`fkUQIH)i~^hUC\)+:T,bmF(ٞ&jW8FUVӇ)b\j]&- S\LCqssֺDd:W6axY]eT+W)O2tΠ‘pEz(O;O${޲~/i/B*D8KqųtÙ2Z N̮+9U|`?'}7C(zȴiJu탤Ғ #! RBdxWQׂ +G+ f@ԶcFI B~0Fu,9D\TLXG٫U +dgC˳y+$qA)թmĄ&}acb:6nlBA|K!.p*nne.|k &o NEoA|}:-P{&8e+OQ mխkDƝ ].{Pk@u&.1{J<]2|8 UN'"/;Dr}lFu nݜz|AS@h8ЯH1~UQqd&'SûJW_Hw2e]^Y-.]rFQD=D@!v3z7Yy2犣YUO6VfImqx)$c!h񋒸N;3oU>F288%\ŕݝDg&[H#e[SH7eϸ}*91ǨZ7O{Β" e-g3AD1?ۣ¸zVGATdޅ{CתۛM+\S,Aa_BJLN:8o'4uв/WUZX^, `Mol&z#WЮoeqYSci' P{Ռ 1DEZ[FH-T] qsUeM!]-RrІ +y)h`H"UoU'!|.dbe'j(Y?t +"|zGcN!{|hMC)[Ї`hCbznʨNySlߔ(ɐCܯf 1HAX 9 e炪Śe0y4jOqri塡`df31(bƪc̅}WjbjSxG 5Ld#aљQeI9!i?!_oH,*1RdՔG{<$df8bc +;R9Y]0b!B^<ʼnT,:.j`AUBRȤ9"f҂\*rOE7Dw9M) b2NN饥HH"yC-ʩ EwiOAgnHtv-sSđz䯦JRlbw4ܘSw6VR +YЏySRސWsJYS*LژELQR[ ry*l(/Gh֗zH=n}f5`CgaC'i1?HQr򚣛1({c^TA Bf((㭨@cAw딊7^ %X@kXRG| Z'gPt!s., ʹfrd5S*=#5nȳ4!G/gɐ%  @ laz(X&|BHrP"I[k]rQ5QE}p1rZ X7hT^Z^d\2ans6HoGXφPlD!lIE~'j 4%~ŗ\,DqpTYԑZx5* +Vl%;h*#* c92GFf}n" +1(D=PJ!L!uF |PIxX5}XiŤ 7AX3sBGkΑٍުH#$tK^163|!ms5n@K>Bn 69sy; !Wgk'.}z#\*X}ZajY`œy:TX w ޷!KEL`Vuq|D"s:klh ft ԇ1 vr(lDXeezHJ`6=$: !p>h #I-l_jEfY8ح/_qZБG-*DP91Rd +_Gy6:SlY , l "1(N(rwd?V&L| XknvRC]hq6,";5ѫ=RO  6yW_ >F6c4/:AxЂ'P_da1UBB@`>h!4+bbibC3*R +#$I;#7>lsC3wT |nxPkƳ5-Qf2Xߒm Tٴk7+ 2uy9}NKPlD (m 8DȦ;*l39U~!KF$w"@z@Į3F7Ϻu 5, dX@ ϶hDQbF@U `({-i|t\lMZWl$iG)<06hƳFp.YolDX@(BNu0Сʍj)8 Q2w#Z5v]Q)P"o3d}vG5e("`y7iE)xiaA{ p +v2ჾjMH  % N w +R~KnZ wj?.;~@X:$Ȁ1H ӰD"@#bH0$H?bi3kd'EBjtE1cz`4GBIS"PƵQz\!OJ +)n\ Fچ̀ 5ɱ }X@&h$&fW4lfǮN۔<$BjLtrZhO/DAfNRJ$Q/Όƈhx ^ )iBRb8uz\y4S~Ud0tt17ee6' mJE>3iumrFrJ!JAHPi@q5̨ +㌶f 0gIF[C .|91?>hd9 DKs}bN/4*ij9=v{y4azچvJorT'Q} yDOugt+U@W?;)SFڮ-]CCn|"7%R#]˜ +x^qS,e)I7)X+nmZt˦msq)CJbd9:|/& iH}Ōa"/R~y:VL.6ؤ6dHi)'k' xRUOrԿ1U, U8)g@i\n=U6ҍ8v$u  +?2-pt9n͚= m(W1/Q)1T41h}p\e/٩ E/1 +Q5qB.xn YR[\FcNFmb0kg0 9DkoDf͵VZuUcۛ@ܪ^D;>d(`vRBcABW@h7j˜SR95/eupK,~4Sk~@P2HP2 t6찣؋]=$r"BE^'(A +X@@qg}Y,ھ}XQjWځE(+hF T":..QP2.5@h$l1 + FB)-Ur65R^IjfN|Ue[fڢN|D)Mt٭Κ*"(=t<.W8w6K=pb ¿=Aico$ +\߇o%vP#r=eStmk͝䶢 t(LOcsvݼ?qo%pX@0iq4%9>D o@}9%72 Էa|Y-[bᵨM.3RC"h@pm&Ȍ18"bAWI`ˇ+살Y]jJl +Ső=OIFDrXK48)f[J|$XE&Z)ܦA=ty@>>#jf¯)U_LhĿL@-սQ[y1]I*;-T*L%dj +&˶L 0nx@!H +t "=qq Sۿ1S%ӳL%}bd[Dcj{ T +9Jk1־9DUr1+$J'α;=hʤs#(k5N5A_" ^x(|i/!X(Ő ":,TR}(C9yC36&&A$=hթLUd=R8MkL\Y#hp(L}vY4T"ıW@[, @l4|X2D\ɯB_:jzAQ}ɓ %m~k&J GU0$lOR |c0Y25j,h&0YP4:R&T-skz5HYTSeQ=Z.Bed>"}St(2"[>L,JqP8v]|mٽzgɸ[_zE SBXys4W a.H"  IIxȝFBNQlܰu#[]b[/\DT s.QQzޫim, H&rePԭ:f5h[M +d|hF TtukWT3F>D۩c_ee]>@l :DbmSs/R8< 'D{!b B8Y>NL+X(_e"Ӫ!HbHmbJ$Oӈ,TjӊDu|G^mb=BzB7hGt*xei/bdPK 0-faIi񉝈o4A%۩9|Ё)03¤+"Wë%$r>EXJ'wj0l= Ӭ\ N"W$U1ؔ6s~S:O|FO%v gm,DN?J6l&bW,J3h+=4}e8 "ƅ1ǧcpPB?ı:I_4(4 mа 5jz* Sb#>m +L5<j1@W]&{L PX2d2'W^Mf͡9O*DSc5_m&u\Dž]¡Q;V3=HJmJ!9~ӧj1&2m:*tfM*5 _b,f$lx2P%H#YjLbH416gAVffΟ!YMNb-InG 7>tv +oAoɮ&1ҫbAx n|~긆MACLeQ~Cm–Uք=*5fF=X@wY2-J|eV-YqlD?$+}fcm"`{M0 EKc ^M7f;1X= +q^!h8ނK<*fÈ[!Zi v\!KFrd 5;Ap;EF@R'>l)FP\*4k.!0E]a&'/Ytr'Z+e!(f{QuR)J.ci(TJsJ3`K+.gpu){raFFRRK*܍d-,NE]>]GJJCQ㈇rOEJ/unV4^DYqQf1Pƻ(Wwx Ԉ cZK 5&D ^h0+#BNVβ+X &sNiŚsT%5`D fL6k|$dy UՒO\ap0}  i3fA#eO׀ND P+7un]A)zV}qZw~y\aM8JeA +ChmOXNH6glH Ŗ4;!tTWdH "\09G*`, \ָF9)L$8nv[. m@ aS⑩E\0}BZ, HQd*sLӲ=Z-]2졢?boQ΍Pv@5'}TZz2穏u/ K!+u::SC4ΌXFodKԱ,Z}xI5rW*!3yHn9wWXH32$Gकűqʭ rEjX-ILD0tJI"*V TMZ=clb9 +G8vshs7dH'(Ps$H[HuV _%lUg64P0nS1'1gn< |B4/Ju58P(6 Wo(cT he6=cj1{`J] ánPJI#$H? ג,*=s5 F,Hh,^[x)RTTRH󁱀&v`) 7@ +CWQi]ڑk@+9bP-7JoGSCiZ#5^1Y0a,L ȲM,1WfF[I|Xk&W3v]ek./6D5Re*M^ :)!% EhY+H~f6Y({97TĔXhZ$؆|Uu2#DXEXY^C].:X@`P 6JiI<' ?}I94ϙd棇Z_` 1r;va1"¾xkN= +l'pCX`Q)*fVِ2s?R,X@0l%vܟ.6!Z37}bU,c1Iܡ<#jhtjYc,UBNVLчpb%UVAa%"u~Vطviјx+mQx%'qW(|wX9T.N:2t5[@R 蓳%@] H^ +]ȇhGS ZíJ`3gayk<[??~u +,ĨړdX@@uQz%#mX!$VgZhh1BVP+`g*?׬3_N{nRٙ.{N, PshPKeDj ZY"R(kɚgi]t#+:Q4^[:ш,ռF`  È$/l˸KrR֡tB +CӋkuf0t<MB LƤVcoa"hyP', H[ۜCɃP2bw}WeGX ԋx!W,6L&2dD* +X߆Hl@b6-܋(}XO(cZhNuݠniI|_3s?^CumnFV`v[bD=񠖼H pҶMF Ú֢{M|^4SXɆb#,;7+!i` yHS6AC&<{ .a" +, |E-w!PYN{*-\X>tK(Zc6xz8/B<Z^ d, ~&O]Q7;W|-ִSfae0 +=%RA0̖."{z&QkHb!BueRu |cZewtHq5O:A>$+" `Ēuea+qsȤF`V.3Mؠ BAMiϒr_]P<ת'#gHbLR2>)DXp(&0Po4BaK^, 薢YxX^K cxC}e>,Y꩗q;@dK1hy"˜qS7c1.,%WdsE{ᤚQiokEjDvt)Dc" xV< OS6̌, V47eځU ,xr-Z_x? ԿD30 zF[:^MH*TA&Tm6q>^3+<=kjOR1oֽb9 Ku DǂC؋2.~$d UZF5Zm}N$F], -XRҔ6"i|7ԛ,;+L<tc!at bO>F߹8O>tzt׳l.TtSNgS`UWG G#6Vg[R:'UwW͕~\F96lgD ;W@w%-bN~H{i_"j#`0Fkm 43o/MqY|:{XPf,9pޅĠbWTAz*ځL>XhE0Fذ'DԊ0V3Ul^E ̷J2Rtˬj !ǘps  D.z}aȢK%t6P]8y,'Ȉ̬d b"X!\'DTS$1؅67B埱@r@YA-(vxv-/ XR3!B#Kja(Ti(}S &܂pj5!/?iM,{=&{~YC\BF"ك>es@nabȡ$ܮNrѫ#p0Q-h5\G/]豸"(ƞ nQ=(T/rsy/og ӱ $r *7[ovJ~].} FO);kt5ظ[/{olA +Z#ba7dd+ s߈0+UՍߥz\xĉA(BkBQz`j=[e3%aVuUDzq %JC>9rn:#[JaqSmxxrK2pilU"y(j@2>![{|Eτ S]I wUi/⚁ZF"C?0Y1V*)Zdރ-҄"Vi7 L*^ɖܓZ , +K $IܺhZ#V\XixnO;Ly+اtH,lbRHKbXY>m!C^mvjp Rs`c'Orbz'Og!vR2[@PֆU M= F,)p i@msɹ-mk*׸|gTh!.f" H>NmauWø$Ii~Ufݛj/Y, aK~a0T6lI +ʕOIRb%=sXepP6Jլ|d1r^ފb.&GW׿Ki"  kk/^U:vU:' nx3tkWxb RȆEaW UxYHR{+bΥb|o VGHjET,MSB}+vTx3Y)lGT@FC5JX@ЈY}(aUc7GI&9+І T%!*FLt]* [A0i735uڈӠ`X5=Kzh]g“ȇ`yVKg_7%p@7b?ȸQvYdW:_r섛YqW`,2k( AZTA!2a&b݊@ҹWIOo`4I-32u=0  m:i;2&]~P~-j]u.],-E#Bkn%"2SNOg1bP NYu$i>mJm#PB_LKk :!b97,Ib hbkSE P-'1|7QXm@ga,yk*m@PmKqn.[A b^DS'+#=  Xmڗ9'%cp*VK'CgMU0z*tQiInbA%󘰏亄c0nT -xl>3bRLv>-iڸ!%:xWV~}4  +ڡؽ@/k=rTOq<\#!bo6Eru 8=VJ5 l36P,+nN*ٍevW.s$y`Ff`+]gELbRD(bCd͠ \U#U8"hv::HO:JQ9D\psFs:Fk$S1@a0cgyb(I*ٱFQ%xPmTyVt:?H4݄>6Ȓc\x`Qbڠmf +:/qΤ+)УDx,hVBH$XXFӻpjGrtENQM-Bh ąڇS/), 0S46KBԫ`1}lâĔ-PSR|EhCA)% 0nLi_rY#Bs +nj9𢰢s_*A yRLt^Z%}HN%F9H}i1l,IWyڰgvuvL4nJQ_cd`[ ͪ7°FBM% +Ou-p b@d˙ ~ҧ)|fꨔ |4G?(7"/Q)&=s5?dkdwf*qnYRc&uw~M7T*er@@*M5{eq>*{m@҆Co,X{p蘴|o6#m']D!03Y=oPY‘=\5Y26\& L{~Ejr7VM/ M8F Z@3@9s{H0e\ED:b1-:xR7HdJ$+V{E]ooUŭ!M5ȍ'=!CRh^8Pvtvҍ$>ݟ\SMD=Z,GQqSЊJ(C4' By),}7:t&(zx;!aO # @A%Ncy.m=deJ + H S~8ΧKwIb9wq/pJ>|T%2lXp&ővdÄ "f5C4j `^G߼ 'zJO Is~dub!9 qhMe^QSg݋Ijd"@\}H2*;`}`, (떕$|CA|uPO( Ezg }:)nhcy֢dENw)Q IucvP`* K&З"mTjЈ`'T?)I\Jli_|7*W.aH*hж1 +, YDvOU4В1Y-f1"[hK0$kr0Nb62I8s&J3 -НU;m FV61\K-m̤=Dm*^y!~6dGFuF* B8*۩MՆ5IEǙVWe, : 2uHXOf ;7@R5j\lǡrvsd5x|eNy`F397d{r pFT5c# ]n>:ye`| ?1Bh/FtEmwq˪=R^, h}ܙi "elx& v Efu*dl`FkZ1אytlfwr*pyGG$pH5ӅDIUj gH$l~j(b:Wԗ%o9B%dO$Eޏ]Z 3dG>GԪA8؎Sy1 b ?{pd.$\tӹiokZpmDt/PoliLJ#F!bA?0jbRY q +KߖOrXmQXrM!DhEԂ8&LdJ^0>d]dV-V=.\jJ0A +endstream endobj 31 0 obj <>stream +߼-(IdT(ŭ$hzmG3ǚMvv0񢇘 xGy[ +^c! K6RjYcNvfW>3z |.?Op +KYp>d2J;wa +.J&~XSEs4+cjۋ[FV=qʰqKIGɽЬ4j9ە  n(xE&qҁQ .sCF:ykJr׃eb 4jb8|p>͝ +nu.9Ӕ{" ׂ[ B^(;p)LЀ +W@Je+Y{Iyl)} +Sk$ TŠ*X@@TvˆyŒ=i\Bkq! Taj%4,)hdCyvɖClSk 2dmURوoX@0VkE_ QEߥrٓ>ODsy 2f1j'/϶Z+U?z T lǟ8_z5|cPz7<<2rF%! +Dn \_! saX$٭CtmG2/I$tqO{H%»8ݳP7ؑn(j OG#f]֑h#U:[, Qzx^lC,ij{%e/tjMXWZ;_ۍ cwbZq!ǹCh-[FE%8(cA`)6 ]ʯ5)YBSuc ,A$ I5Sm , 953Sk>F-%Du9"̾2-=p6-Jnؕt-e y̰$vO}H>[ZrX@]h y{F:Gc +d㵈a> ,½ȯV-`!jqCwV-]K c6<E݃e05Lř/aIAi:FzI*m}qIxL!v]{0W, Hbը&)^Rww$&"Dx{VrRxc>ˍW =8#?}G** uV8h +1_ZSq,WHnv˝TޅإZڵT^liQ3vwb + +1IQQM3D,cQӨxGU=?CD<l +#e:>cdz碢'bQoX@Pz M:4#PT* +z7}F&b=8gţjFF(J:DEj68ʭ$XJn, pdrŐlz]ac$ a}'ε`F$;;+䪋4e/+nuy`7ž@j DER;6<(XȬ|֬JbK3SfD`5uqQBL)NR}3iwUu{bXӄ>p֚ŽL5dl9P= b/htZ|*{DqTj\ aySCF,,r$V?KBm(sg,j[Otѕ-;"h|29ڑ_^(hl41c [;}G[i;D :D-聅GAW5M(. f,]2u V2, z<7Ep|-iw"T1ۥR`4LNƋ._/ý?⎁rCgمv@"&X@mO*I T}%nMjz>Z5 + 1Ahw "ZQu鋪ZrjVxt8_4ãT(~pÆ]5!o**K=D9|Zvx&blᷴ"¥FAZXŠ4ƤQF-bp(#&9n<|DE^96ڋž_D|>k&,$GT𛚖^7\OI.ݐa= +ĶZ{  +HX!{dXۺ7hdੜo1^si_&a`z0Oڀ-9R- T|"9i*jPOܾGDXmCnU' (Nlɑ:ɲXzR QB`z +c8Ri+DM^vl;hzA9 ۞- AY~ri5M?ʻl6#lQ +Y^5R{ T1Wn=}qi'|"=sˁڧX0lɾ*K3&} |r蝋7HLLHAxDrXFG*LY 1i驾јyۄpNBř%؀,4bqTbX@Pд"j+oQ|SW !ZV5uh?ȯX" +AJ MF~^둱n"X',ݙH8h=B?| Iý{"允 c2PZVޢw&rm{> +G-_QW7n +MRYɩ2 +sIZ LOXĺ4#KzͧjⱩ",`m +,q W8r>!X@ G{p6s1v}0F6$X ;T%Ttzl&҄cKFRz$Z_!WAh `pEϴhJ?ꆿz%.X>I™djrFJCTEEntpnD:- 4%w4> 8x0&-tpǔ(TiٕPs_3dkk-FCC vT *c>0a5lA? mp}븞G8|>dNj,IL7U)K,Q e3~64*a4L$2c9hIXNCPX@'?)=CQC\C۔6LPx76y bxk0_EP[xK7UXtLo9Ȥ'w6jL]KCQq], - Yl샌N+'UڷUE &&sF3j!>Db1yvܰ鵼GpƖ]jSf)cqKAUm=P㪇`؇" P=V4{dQcWҴj h8~`Ah=&<&x3C@)ܓpd"ČSqbDŤ,;Do{NM)9]NRJ Ppz++`vt#5] ܶ'i}= p+h̯!q7<&}DN|@I0>zȪUY /m?b!*:PHuruCzZ.U̇ĬcE֟hీN'9L{qB|4n޴WYШ1u[edc"rzͶ1Faƽ1#B8W yڒUh Qtkkq( ?/i2biԠV3X@“XYjKH7^+ @;XtYR `5Yue28E }$<K!1{ I v~ SPz"NTvJU6bGTP F|;< +ZY0L\e= XdL*Fۈ~q(>R~>j>93~7Yp +@q^xI81t.Wv LKSX@p~:6SuT(D)22,flb ~\T(w'qM] =[&y\B=bRJAڼ&S$ˉV%+r|J(lH^`XrExFbn\lp2VځI g, (=/z'*q/eLPƋ׶hatx_A%d;J5 9ᬯF% ILJO~B1jm(X@92z@VBaC,yXa;q#҉A%J>)Yͭ,e- $q%m!!0ీB( c*@&Ûd|DLPuw9?1}oDD YX^ z/:l#kMJQ-oƐVׅlcYZђE,c!8j[?o:HQ_Ã+iǁz=]ԮX@|2tޓC<]/Cj)̂kO!l}+ B Ljy YycuxP1AM/XΒێrġKXv>,pd~Fb50_74M̄ ER<ו.%΋`, 03<0\9diu>'N/OD +XalZ;qǎ2M,~0?; 7ZqItWWեlN#6a +f*␄"c40%8eIc(kHLjN4rֺAfZw +4Ȑq-E;(rtj +7!J-n9S 8.&/t)1ⷜ_d&bGk*]#"on[ƔPX@PwЈ`g=)=X3)xoIip2T Vw֑M~o:JJbA!b"3^.X baQtIrAi{<:u cf^'E*si4Mj|?qoX@Xe8OWmXo/h7xx8Ը:(PwbqE6]\bU_*߽e-K$s TI%U;eu/pѝ;- }rdPv2wըlNE׀zz; Dy(–(l_0!]J6M92HcdO|cҗP8 e3`X@0C&uƪ p,"jKjݖ@LJ;[^jzYONٛV{FUŚQp+]7%XЫ僛 %55k3Y gQa΅=obBmD&q+a5Kǻ~`X;q%UpIN8ðVK9a b~MqhL3_+jLCF2wA[cXكE:696;f'g=B }-}m².*;,- *(E-P `B2^D#5V4kTU +B ={03l؅i& Y^*X@z;Yɗv׼E v`OD7~YiYJA&5jy#L^:Cjb"k* VŊzHָ,<z~4]ʜ&G_h MiHu=Q9A'h:\:E7""٠)P[9a 5EcF8><׾HB8mt*b +=֙]djG JS&P +yl J詮Cм! iE5KK]$"t#XT X`,3 D/s!7=)b>qH=\~FT}u{,6ʡO06gCB= jYnx[|72P-Rb4:.Ř +*fqUӲ닪?h[P$CJpMlH2\smU&6| ̪;Y3ɏnS,+/ٌ$Oʺh)j +YU08Oߵ*)12EWq,fH!o,J1" 9)bP9{w<2M(@þvr/,rbr+1ˢBm@Si=`Bkآs@u [}6 +CVeEy^K_JE b[HtQ:q-7RD,z)ٚV ejˊuJ])Oljps([@b +N8)((!J$UQ9R.ɗH +WМyTU>t`I"(~Qt?e<w[l+(4*"sݨ~@#G*Y'@E :`=(1ޏvXk~e}RiM]@VY$q7brT,>ϤEЮlcU 9Dc  Le\Fk~^O&[&n/gȂ>;9*oe8Kp}ဴ}%tWo/ZMI?|W&X@PB7sbjnP8[fJנ^~y^ZEͭi}K+5}t:HF2f{C+F"aQ 1}@ ,9:?V+Ln0[WDrgd_,ZB< y|}{YTDWߔqX@f$τ ngIW,]*UZPH7J) <맑qn&_4YI?jc*CsyPr{$3pO{i,T CK#B,@{[Ϟ$#8VWe Ƿ2cA84H0# Rr4x%_Ȥ=tИ=VP95swQv\#^´ wԡT6X@0[x,U.R*1y#ޠ1"YpG!_'O +%Y !1<(OPX +7f+k8-9> Ğ / ui^Vk:H ;Dl{АEItz ȗyuf:$y~U&g[>ΧO+RaW4(RYM0Hge+{] $PӖVִZJa $vӎ,2 ٌEFIf~ [x7[/!c .'evGzLĀIsJy1ws"ݻemS:@O(4qk%UǀOХRWbLQf}KX@¤b pT.hU&ϓwөQ{Q?t sK`ҿQ/R g݄Q3 0xPK굖{1q, c&ClIE)F +fUl&M,81::.A> TǬAGǍ_qaD>'r[ +b aBRFA)MA|opz5PJ1AØ)QO*2%P̚o>a&h@7aJzoqO4 +y&V 5 0)( 8\RmcyN-Yep`r7Eȳ +³G txg*t3mA}T#jeN=  MnA1&,=8 F9aB!j=;jN6l[~em-x"  q6u+cZM-= n3s37N*^}E`Zqڬ]%UW`%̡  O/ǜ+p #y b2͂ybk\+=<;-kkftZŋ,s=Q&[&_=S +5?% +#RF˨doYI;?Iȵ=`[%) ap.bS&T\U 8b@i~t}•P;XF~' f ֹmL0}G8 5ߛt~ >+yCj^Wc3A܆ޝ"DV[WJDg3òb*jR4k39$P8™ qRs7³КbEf'kGx@~rd^)Si4m/a0M !oBﱣ쥴2L4[x +}u} l8 uyd1/i$0سT 6)8y`C*> +X7c!GMvҨ2e$ +Fr+طJWG[2a2 f H|O'Ψk`zu@2N@ +ibQտMJ%{2ŶLG *E*!9"z ,ɺhU n(2zC%L{z +}[ z:D) Xƽ[e9Wi @XA}XZ]&cGUH4{  Հh (ڊن:Y!b7eK`0gf!le S`M 4AmQwV%&!ZKSàV 獲ϊf{Xg(}9*[3w,bA`ePkbX)7 '\&>F7d1Tι\w([tka ٕEM֩r18)0w,DǢ q0Hv" :hvGE`vjmƝO/T Sb. +3uxń X@p'jz͒ ;;$ CϡڸU =(D߇̽!EUFʼn, HcDoCb?Ҳ3O(LC&H B y}8Z{tAoSr*H]H|%ojv&@-DG.TFSDS&1j"W 0aW23Q#{Q1A71*dd<|1|B:BxΞR&H:*U#Z)yr̈+)ƄTȱ^ K,7^JrεrXL>ha^f2G5̊mTHuph$_;JbY2KJpNqnKfpqB_ SʈlRZ'*keWId:@!Fx}H!c HJ=zVy/2OdM}1f4ӷj`dWC4J>cFN~q8 fAѨînTct;M>:2XO= Ï ,~頠:QeaJ́m i"ju1ȈRDK*umP iТ׎˕JBp6ՋФ3CPŴ頻%P3̈1 %Jl42&42Ѵjl{&o@AcC4~ +E{ +UY^CAx +yK?0ȅȧgb1p~~cBy8B5Pr|z {7[`Qɵw3H:Gqؿ_lMܓXa-0xz|[x? R&W*3 C%)>CXdQ(m<^M''!TuFe+w [YNxO +pOh, h}<\ѱ@ZoS Y=?Sa%uQh" e1 +Gط'I-!?ycACKDjX1ͭCx vCC"RK BA3Ċʉȫ28cSLOJ}D"տݻ k죭9w2ka[^z85 2֣8B2@zCaUa ^ @#߸Y$NRKޑ!.iTvDV;69AHz`d'|d8YTbKHͰ$@Aؼi, `! 8qP)Qlay9}x(/^WlJ!y6S~T2#p&<[^|꒡'(jx5Zh +nB^9ApxlT6)﮷!W !zNw%@)jT ], ,ZM!}^^8FugNI:Is_m?2SlȂJF@0ъP EN&>AiplV= c'v!R#/tz32gϰF\> ki0L9Q8R0&wEJвCWX@;-?Qэ8!1A8r#pe'MlƜvn]kA:CTw7oYL>/4=q;Lz! q׻3ί,j&<; %F˝MN@ +xPPK>K[ 0Zqe.y8l%ky1R_@P3S-S;~\/>ExwvK +5*ixCJ:&ʆ~o3eCq0b1 + 4x !z史>s*]!,& J4͐i+ࣣ$|O/&q+21O_~A~, @˃;pz69un]G5SD|^Jr\r>9uHS0.c`mM$a$y~)c5*-~ŹV , /o)/x);RYgvՐZ"F$jWZV <`AK'-k芒V.;V`.&~G}IwS;&;I0SǙy]ۋ]άPD]`WA98c)\4%Z:;lni?; CRwhi]a[/%Zw  nDe/Yf-gf$8hQTdΫ~Jqڷ[X@6f3b.ޚt;wf&6G+cܒb‰GJ},"ZZ-JoJ.cQr?;fqyFaNz+c"9U(1Ӵ6 `j渿҉>~/RerLZo[E0H{/TL l.ϝ:TwPB]"YTPj.pl||'O|:wΆI#r4Uelxc̦MWh*JßI.$7P]<͖6O{Rh-yeRcCy~bA;l=(*ԒP1HO&s7Je6 ;5=/ț@"|(qH<D)*(7-_{ٛO +0)7#xhBc̦gB>YL6Xy i39OSO~"~S~mBڿcȔ!'$STqQF h)v2]j,񰡔kA@g.DL[IX@QnЎ^j0V,4bJ2TP-%fLfD쉓ጃNfSTͥk4n.8&1vpGzdB"QH:E"M%b(U31hk@2wU9FK nh,ԹOe;v=4G, + g@wt8'а  @e&r2&܃ЄByEUG r6P00NS؆sЙZ9U3b2iB,EWDm~9;j?'Jao[@VYڲp=L*D-ZD,--.c + +0U*9hݒylA&KA&$#Sn [\M=#=Cq'1΀1lNɾLU +^2*ULΛdlXQ2`BGOFsFILK~J h /s澺 睍,'xg3@'ݼ枏r0L=䎍Ilz wpE(Kh-K!)Gj 5Cp1Ay;?rrPjL/lQ'!^Ѽ1bebtΓ|, $2͠_1,F7qaf]LBgsP, XΏ>VOEny)M̻֭^(ۘ3,S:S.u8aJicCc:3QŊIRD
ѪX@`ʐv ֔})\OL%=線dQ]EpTm?^I~"I!v1VP/> +㔡E\{™{"(K; c(, x#_ESzNגtB^? h &0c׬ācST 3_Rl&spl`Y1TŦVh0Nܯ11o< +c]ohE)˚ڒ p|GC[P7YX@oJO4?ƁI7RoO/rV4V8\nfJ= +\.ZMWk%NH +t#TAVֺO+V,rP#u҇v]9Ѳ]HH3cݖHcޮ_QZQ54.xTSL_uY~~Nnln?Xb j(ڻҥƚ麋]Ԍ1Hwy'#<!t`#?.v +)ZNqtzF/ACji|#SX O#IHF6aO \?"ܟOng{ш7(vS<Ϙ,?$)- `oRNr]lvv:@L;m$^O h=ܿ{t ~, uS.8$\(-h?צq1w!+>2N;FBy/OX@&I9 +tܿoW7`fyg 2ڷ+'y:wR\BO'P82\'m-<`_LZCţ +/ +>ef4Иvړ?}w)|T2 +=0zOp0 j`#y9l0e/D عƇn?8ȴiw=c,/X9K/2 eQ2}v&i +b +/g8Up*?R$nDIk P>Tr>6oiYcN>hOiD_zb*#d $r̦v4 rnN-|^ZxN.B, (r ߧL=tM$mVLN޼Vc} bCLE-)bIei9.L_>xRQxB0tLCKuH:u!OERjPBlۦbQJTBЗj]Tc<tW)B~8n%G/S*.~H~q?ȠšڶmUAN&=" +nN=0i PBI^Ph`J8Dߣ/~pd/5M+v,S<&1n%F/m$xhG|JK3 aҗO(uÛ F~~, {UmoZUY7OWNi&|B~Xߜ VL:L;~k-7TLTRkB@edAleG=X`%~Պ~mBPۺܹWo-HbU:f|<皷*&a^ntneLAT? V>V.f=0f(LsyLa 46Š;Pj3Br:ID)mKVN4VhA_Ψ0?2>}d,E}&dn>G-,5X@GĎdu1Zőy#o}pUX@RTayę} +N=h=@ zՅ2hAxi`\e0V 3UGpaպovȘhG3IFg# +qM}Q*Θ KDxL#%󅨿 KW0)b\(rI)J.Ґt_6`RG"GWK{:㭶Wۏơ3CrLE |<>i#/aPlpM yY4Y0%VItO 7_U0t"=tRX% %EՁKP(aDj03qq3*4ѻO,]>$, k&7!xފJR_CH +Q+]Lw|Rw(c|NȀ, Cg)pU, +=T~ol?hPs;~9Y-XJ)L +0ȥA: +!ᰟwMr|iF:‰x@yubAwFHlT_J: BRZd*jdc򒃜b2 L͘=T8wDo93A.Q훣YX檃ŖӆUL&55ٺ%ҌXMDT +}S0i"*gsW cZ[wv . +fy >7#[W"k JXͯkWT_pduC@Ɓ!ts? ]I9)[S۝7sX qcc\Gq14+|$c/?86%cA5y3L0ISqͽ&ٖ\oΘOF Ľ9I>Q a;&U芧n,x?ZWL$92Dyޓk;5ݮ&c"60, +Z8)E%A@}LϋoO?`6=wZ/ H*zD\U֩O6ܸ^8Pas&v, ppz(ak{E\~6oq?.Nxnc<9]hu0ܖK{5zE,ȾG2qY+Hc'E>juZMʲ/AS*EƜ63 +cא]0-ᰙP8pP'Oh\S"d.<΀xl ЬI?D_|*3p Rb:3ODggU0;`>m0Q"~tUoKK*12`hM=vG9PM?Q +@J0,Ͼm6LgsgC'5Q=L!pHX@!29j:'84ABl?c J^#XE9Gy9@EDJ,WwsR7!HŠO?ՍwE* cV3If( (T +Q!*a$U1ו;Vc, +mUwx?by{ +;Ƴ]X@*7#/` S+u*, .: XY81d\A܈OKi󓧹F_- L hvurZ(ŏq*)0)j1 zo7d<拤4'; }O79Eȃ!7Cz8$S̙0B="~x&h%P-)c~a[ӓF* h+n]N;zkzWbԏɎp2' E~, CR9BewVӾ*n7X@w6 o%.:'߇ITXqNm9'xD3.r(e^AKAԟ=n5(T*q)S), ~;$ !acDތW^8_)[#>df$: +cJmZIJTܟcwJ@oh"n}Op#<汀 z#2B, + A+p>}J#lb'Tfdd@3O#o3۲MM@PCT"F~Q-ZA_O<ɘ<4`p{PBc/}=)L>&oDT VlxsH QV9 X@pyX[{d}(?=kcU^SBg.#!axPÆ$:NX@m)k=>.*`/JV_H c2thHR8b:jX'Af`攻:N:%mAɡ5P4nU~J)r!<c\s3op%JЌt]t*+\X@````8kX_}Bo5Xʿj+N ]62X@@ Ns4DF@##]#?Hxwx0, էF'@K1FUv0mPb뱞:옰 qu{R?8Ha + + qvGϥjpL|g<s, H=[Ļtp؛YؖGnvX)p##B{Omr/zwa獬#ꓩA!BGZ♸|HtQF?EC +>ʒVtmPAH>Y!/<Cw"ڵzv0<$1s;kͨS$6 Zݜ([ +ǜ!>`w[?R=In;ǂm?USq9 +NK6Wh"o>8\p4/~|N/.8X-| +$6Ĝ`tܐˤ2VW=P/LRZV}"Bt-̹Nm5|,ɯ^ g`, eAQ ŰhjRL(W#wVq h'ƄyŒlҴF³C%_0 LN*ĪJD[aJNI +[RX1{2-&K ŸöQh"ZVDC" U, K8tЁ90J/M )~jS/yf#åDS\ (p..A%Y, ’.ٮCif, QYa8栃 WтB@vzjZ`~,d@ +.B" grV?fss*fX@@[V2c&73} Jy^ǐQ8YiD~\r]lG⺰Xqi?ҹX@[O~3ߒ&8-q,kpC6дAXtBzЖ>$. +x `k±¥'QY@$Kc +m(U4ް#mbKb?-0~ty6XP\^{A)b%1RM;ILP/ Ydۖb޹Sq&zDsha-y>`} 181`@>CV" oލH k!њ7=h)oP("Wpx| SbȒ.5 lAK#(?(q1fCO!0BrqP՞I +ГqǔNz FCŸS &z6<-RRL6ۡS<\RY1k`i+ot5j'`¹+TO;0hfG ތJawNx%Uށ=r;Z`Qd-~y\6S6sVH[A:ӏX +&K읕=Jˤ[zVɁpV*NˀbEx_pI*pcbu]UQ( ʐ0 K(:T-DHV zPz0՞ce +'f ;êI.D}OJC2f⻞hgJ/*NY`z~0+瑼-UI\tpne;Zob%dy%LJPrk!mdlGpf:e\\`Y0&)p7hQ( ~X]mDF& aZx+ }gz#x +uwt$`;@Hc"Djks HK%T 0:35hN, Hƽq<#}YQ1GbD +?Q"Q&a$.[UUjؕKWXkq%Jo)qYc29s:H"X/M,i}X ?5*1vt?j'Ujt'ZA3.ņ8ɩՐuxVƻQUIJq_,X@Ъ:ak 76c:,ڈ$VGŤپ mSgbZK#mRTtex {WqhiRP\X@Atʜ S!7pŒ³w'-,568vK> +}:VKR134$Si[>9of#xưÆ'3<1;I%^dž'y-3qeh) ԘaI{FoiyKlqX0X@ A f cWA6 #Gf%7xMt ʶ3\ơS܋(ޕF2Fg" \Ѯq)P5" 3ټLi1gԭ*9]9}$|K=X4Url{DꬥpD ia~"tkM/HQ"}l^+3<9_2Q.׽b;VvfNұP]5&?M-O!BC&nmb([ҳJ)Xj[:g@k1>0X.,T"HR, @wޔT% uttAኾYcI*PE"eA*}~ȩ*)n 7bkNH_4*]PaL"X@D8 +K?HV?AHІN xG:M8KXRSу>U߽2;DT ZI ~ + bc9hJ[]Ť*1BJtbBDI.eXjAx z8~eomɲCE+i`Pm1W~OpltX20HA*D}idMݷ ߤ5`O-PhTb_I󺔖FΏ`VAbK`ƊH/ ER }gbH-a`p,̿=\pw+ao-Zpajɢr*#0@᳘]2jAJVeV@b(Hu[\Q'#kY*lH*Z:Ң8$;DGemHHQZ?1ń-A[ VUXC:#q"jGA$qLꬾSBd (16'HУ[уPWe-U Ԅtqc08S,mU7OF>̓#f̲l\Rrɨ^!&W zil.Oj0 a[5Fp"nh\:!#Xkd+ӄm!X .buāBэ!I@,C |̶ +1w+PIUG +bBQLjAUߖŠ+qy#uX@ߨAjmF] i"FɓcWc(7U+2 ':VLw>l5ڇ3z-FŒ ǐkK1.g9ۋ +%6  ak-"j/ǭ$HzbrXNEw-~uHUyF+"OV, 1!,g5GuldF'xRXQQ3MKalæbXcuqFi3ʕƺ\gFtV`eNM֪o>Ac梲XHL249-4 LC-Sgk5&dpeI+ 2!X +ꘌpfl-7qJIVp!+uC71Iet.ս\䝄H@|,,qFqŨ/WVLBqu t ufe7x҉3([C*k2Wn9M%ٶ܂)l!4M.N~k +u0NC& Lr!).vweAFdYa7Q F:hjG + 7).O};+ "LǽtR"45o;L s$<d _ +hfRbh^=uKyO64^yrIDhD;s*6UP]~!EARJ䭪u_X@T(W_B0 7J,icJ?3ZRچ5ɣOC4efԩRė7mHE X狗 (;$K9z/|RW|u$H7MdZ(g@T+Y9#"#xR6R cjIAY+HQD$$b/17]"jRxL#P] J0sdX45%(B,c'8 +f UfV8XPs`261ANKN}!c/ʋ J5"ONyAa g; Rj0C' `OC:J,4ϥv*z7[n2kRUX9:f%ϗu|ܸ93  {=eR*ͤ10-GZbfeWg+gpo|ܲTI7Q乧vΘk ԪuZfIcMpְ`]q7|ǜ{۟DEYV!y + Z3>bFem(Soő6Gݟuv㐄[bUQR` 6sxm +L%l.)7rB.Q*ɮN'dtD)EJc3~-m{e(ɰ*^^] + iq]{Po<#YXHIFv+a;<8 ,D籁ZcB6a"lT'4Iö"GT^4Rx32JnAa緍Ѯ yƓKD͈TOSVdM9} VS,ͷc{"ư'"%{:owY$g>Z'@x9jnD5 #vVkUΰTE⡭d!JJEDC.X@`=H:n)s̐x4GXåؼ\-"牄XSQ]Ra# 7N}00jKX3 z LD §_ΩOcZWJ9#kZ4f,2E*)SRkK&VAdEi-tR[#J;QX@GPՒo6E6~ F7Nd[cYXQ:z>dbru,4ܐ2:+Yim U)ów~0 +ݒL8Qv !o&WQ|-tʉiLxGQTd[/ +w*P3?Γaf6c˃L%<>yZ3Ѹ'!]9d:zy Ԯa5xKCo~2I,:N2`_7* 8 ),(0u9p?@i?,iRD:D +B8&u+4B##6.i~8D $~[,y%=eEEV# g6ew46. U<z踌+ŸYGqe8dX@p:J1вd"Y"PnnS_粎Ʋ.b#ms$d綟1¦x[gRA6@6!+{7aגDh "E_c J/4cOJC "/0Du+Ɔ$#~DqAQVɽ``crQQp4̣mRɡk:|Uols*&,(/T\Nd#|2ΎreD\K+ E, U=.#e1hO`'S}eA92ciMjpHk<;ySXqžpT?S'8Ux®̠£H:6bqQw֥8(P-fgME|<} 7D(IS'̉`:!tX]a*Y.fN'oPj7,)Gg%PF[=l a_Q7i?LAa5 $=t?_jd=:Υ. uM5#D@%X ʘi@3_YϠ5Er5! 𸱀 iXNe_vbXSH5r`VE!ٓdd ~5Lx 0փZ+h-2, "[n" ,G!|>uf+}VTzCK+0Iݢ` (zY[)@64ߊ9 RY/z2tmsEU"^\?9 \'Zy1+{lKfP_/-H4fU o)"1n+_DDc=|+c|B"_ C>P{h~>7jl;UBj-ӢlX)IIJJ*L q@7}b1B'[b}pEaqXSxH^yy'>#/`[a"#>Ar#]u\!C97UZqv;/sc9TJ[UQ\ ڻQz pf'YlN qRLiF{ҤX@pw k׎LH1#rHQ 9[BHGBU" r蚬Zqsh5&=hUZnbЦɐj,r NX*h".I ͫMZ uaٴ56""pڻ+-x\M-XX f}b1?C]-kG48a9-L͙'=Ŭaڲ1ϪjZ}Y%sR u`:)ZibI@T]vw4Lqg Tfk&+~)JF~H[N;{gC9(#YR3S|!a֝:]9dsBI.A`鬻6Q=,(rXͬ`[| +PB, qo9q,K], U1  bā=yy]k\WM +Z #$P 9{T˪Q}QrpגZ@,H\ީ >NODwLyOzU{Kx*ϝSѨ\Z4 b-nf+m!vq'g{4zCbïQ9Q(o3[wHJXuǯ/ ,c5{VUilw(>U뀆}A_ʹc H R>}_DG,k|j=[~t L+D̥KšU&BKEjjeG(bǮw$.9[p CLdKx?G|a"2&iwHcZ'n& cǡ~LFBp“ĠBΤZX'bՁxVՠ!VE goTD\ Wc^KRS]vz'<-{n_k<.Ʌg5^o5jYWHґi*j5UU`tJdR2*O\w 1NXUZD'hHj$i,\ɚ`=4ndN ֈAZ[ERΪ֣Rt?%JRZC ^ЂI +fiI5۵:I*1ugz/SiX@{"C4uR2>'7E/W9qk\cdzN& +`tWyC93^H\ x³S GNSXq\HG‘Wai4_lԐrԇ'srISa(E#6宮kvv:/(-rliӉS%xA@   mU3HXV0>@<!`@!$H`F02` $}^7z{} {>{`Tv9"(v[b$VFBc<"T@+ǨcMJ Ce5㭟bq2R]ڙ+{hx{:^a]Wݨd-A`Wq=աU*ʔ. Dj%V`Á* Uf.L b?ToS҂˂Bw'68vL$rw6ƄhQu ,F:/)"&s +!1\PG|~%1! L '++^oK`b)aۊ'HP +!B&/z*!Kq[˪\BL=jOp&["bV%*Z9WL#?ȡS>8Q zR+ݏo1|UUue SJ _A23'\V,jVӥ?70ZZ%A\{Jaմk. ʭn{`y !lX4\`(P`E]Y+4a0JmfH̐0J$pUB^lӉs8+׷j 5uuͤk?ծPN 쮼kVՅ +2V"f_!VA+LP@4bnl;Ǚd.ݣ55YQDإiE .х1DpcoZAB|]0r!xIgCZ!1R: +MCv(Ba\_|W 4e{NrVkC". +NJj& gcu!ÀgJGeu{2V'b`%/?oU2p(Vw±!k- ]K,Wc(JUBkÿSUv^'KZM t(V,;hUQbB V)Z%`IR + eTjV5{1Фda' 09bMZ~2B!1GQ;Isns+#BHI9! cx`1lf^Ĕ}6gޫgfge[aFyfk1UnZ@GgK 8 9f5ڲ˝Op> 2E eH}H\`X|]K-G`aa&s%Z Pw!66BY݆P}Yau}gB?J!lE6*^ O!ta%tJ7" dC'XmE wPW!t6.$BOنP] . B9#'7W).q^ɤ5Kw?iI$׵ScLvGP50B,wyE XdJC_@f4#RGs_rɛ/4V]TTVBm\33[)2} ɁNyu\wr:aڰ[x@ԵGiհu=mՍAZ$b>q>4sAAz'NFQ2bP̊> ğPnű +.8,MKh#:A: +kp!+9Wb2س 5bc|ityX_L.|6?Y,{ioD C4PH.G@u4}$gѯ!WU /J)1N,_n@aOAR~Y + 1p)/nIDyءa4pBChe1~Jp`"R'>$!z +M.*OY +  ͆[%4qo}A} #y>nЯ8YD;LP!卅1 t`%M"䓟$fIdSi^<(]1O`>"X|EZ&W>NDwQb't8P=#Pp 9o<"7%YT()Q"dRI3jm;bJ̒I4i'&$2cLbzA$cळV$a}HaʩŠWC.y4VXy*2rGh9)UHOIqgvB(wzQ,4B=``,"Fd%f$҄2N U*<(Zo~hWXs9"jV>ĸ: Bv)!VdSd3@B˝o|"ϻ.0) ˨3hי~`AYC'ߟvt>kgm:Z {+.|`36_Q =:xaS?oRp}HX2bg/^~ V!c P4&TEʳE{M}7>Ls(NJ hWly'kj U̗M,zG#J_IńHPr>T>AQLt>h"BLg#"c>y~/pTY{ßArg+x'Ù:g[L#mzW>Jy]E9g$Ee5izrte[oD@O/(5bOBTԯ-718|J|1y' _]vB1ܥf +dJKXAqI|FޭEU i8.PlB(O^YI ;2= ҙ4qSۧ?pBg.h"D[![QlxbD-Gö\ӵ𖚮{abJl)iP܏A!It05 ԬPs`09}x0~lg| +y(3zo*YLJe7WIA8but@WC4.PpMD"lD T)_Uua{SkP[.D)A($3*Л@9&̦ј3w3tFDhDїxH%Ù0VTmcPK3*Z6q=<|<{e23Kk̸Ao ˟YH-dd>RVW3:D`ʸ'P )OoUY$V&>dA @(AU`̃OUCDFwyM[hҪל8{E@GQvOC@x;L1bW(:;bBDZћw,} ind ?73?l#\?Em,2z-SG=E$ƈlSF"}Z(DVV;4Kb?7E&pϡwyVOĆɠ ?2Il_7`N/ZYICE +#/ \ą2Q&ĪSI)/j +X F1rڅL5hAd?NAy3Q,iShGKč>C gaXie"}H~_:( (d"?1ُUmWΝ}ED}+jh}(WS|%mG90WS iUۛB?m—eYMc&A&|)'$'|C PNq/,fʾ*Q]szYgh"qeB&Jϡ5ȄYw, S$ ϔ 9CT5&O}j:U}iZPWO!,A#h5J5~>-VÑ:.2zs1!Q>)}JK>= ذTvO@;C2tI! S\>*wF{u#V-[*f|Z"ҷQKd1h2#O zuj_W U-ꡇj (Hva6 GDGW1ߙ.-(m5O `גދ, +eDn"o.KG:`=3Zi +oatg':i +JZUNeyzD$JV%|P +~U+F |a0 E8P%1-qԔ18Pު$AMJSvISg(&.`S)J4,\IV4!R/0>&P9'iPä nKEA(jYY`QP1ߡNO#1 h,!&%k?;,^G_6A3XH-2f&nW7BL:8 +F +N,SQoc4 ^;-a5G]G}܃I!)Έ W̧\Oi! ?I +*C՚3^ĊْGmFji;LD)Aw}i'fYPe=tR 2ڬ .4,S^nXut;xP! ,}lC^Y$+89 y8 tn-IM*TΧNDGI \M +SY3f@*i=އ6)9zqi.|) PL}XSԤ)ƈk2z/U NR89Yb` &wٸVvQ[[T n ݅=⛢ҭgR@ Ph0wpLWNp\GI:qjDžlxfVVO6>0qOŇqewaRiEQDexPKY.qho(-uz4cN&Bx4lZ#Rъk}Q"TKzj#GF%~xE'\ZWKYA 9b"30)As*\T@̄)5OF_٬gB #B m^y-GTGv*y|u@JyV۸qBk뒭j8[֢p8 :C$ y}H5|+ _ y'ptϣT +z1F>*C ++AVRNc +kiC&g8HQ t,>}Y +i0ÿ,t^@1e2@@|${_eHyIRQHyi%gpDǸ&\ސ5qzk>ikChpi^ϊOe +;Ro*! 3S +2h_OJ(Jͤ^qL1{0!mTeTTĪ!CN UJ M_gQiYJ -|P@>fc~>*p>!]g- ڏg{nIMT;9.A|Z<>LzJ?k>e4Ye?ah}"Q5G(?Q>sq۠]DќjKPf*r(MOُa +}Ģ} )ge__OGY}> _` X~>$Q9R`Xx<*z08i/}eQ$h3@4"/x==t}h_V\kpob셯ßᓵգ7/q+ x` ;`#Z ¥ @o#GVI!{b_lϛ9 \K$M$Hf\-Tk~}̓>]$"k-͡IH UP BWܻ w;=H>8u$aLC70KKzEQS,r|m~H? +L}pQ/PUWƣØQ-q48P/!§GJKAYzha8.ɢpsc@ p`TL䚱G%*mx\4A6JL,ˏLcB6pquXRBCrgS˦uE'#BV5 :6Z<=blXES $5S v<ʻ(ZWt:)3@@FDq~=z,@Pܯ.yI&&$\7P@"RI +S>1\MCuqDSbX^ҽ ;c!e9JsX3=XSoXp/"U`h3G?0Ĩu:68I\8WB8lVo[(HZqJi,V;j9Ay<.TDH{9HI,!0!`nؑl-Q.|$5+% 8;"}Fbzx/c7dL\Nl*|\8߲?>)T~Fd2|zp `*y>"PP 'aIg;鋒x/xc3 `9}D N:vƅ,x_k_KuN3@hDƒPKyI $P *c/$"N:%y^ jk/l|EzVVP9PsTWPё# 8R$Azd`Ӄ$%'XI!Gr76S,jd90ӥ&R8g#g!VCj+7dT&kmޏھvI(;etl`m~t^(Nmm S%|q'_)])T Sn2ΧR!wQS#Ǟ}kZqy)bX. I#p^gwwK K#OXQp+4٨SNl  +"0AedzeZ5^bwNTX$/~- e\)mg@ں#uq\XG+lP@'4Bfr> xMk0p> 6F: +!]ʪВ~%ꈯ;D6y~a/9&~HE-1":A" å%:[CRzgd=9AqGD27iEDq?<\TbZU3s?d .>E4>5$gsTv"mfVkk*xuJi/ HF*((ND#R`J`ش‰pP  O?KhR\\իIecbŇ g"G<~Aϛ]:| oc ?q7HDY*HhPDmBGVχ 6 4JJ-kK"juC+Tྩ3ιΜ)ˊjȂx(A^IK;ea2SV^Aj[iuD#VVZ}r=*|5|<#nORO1iIS/ɿ  i`:&JyOHU>"k TBE $gfuOH Ī>D0#>\ Dm6єÿ W9+-c3@&_Pe2zMQJqX1k=rק2 V)B> pyrϼ?!,| R iqE7m_tv;| +p>6. c1C_y4)W)Ӫ PLqNpH"V Gr`Ivk_b_:T + +?o2@hw۞̰} 3z0S&]'𜐦Vm +lܒ [@^8`-d<[@P' 4 +l +@Yʆߕ/w)>duu2|+=LGm*;Ij؈XBa͆ӣ R~eUE-| +R`> ?!>ؾY e_(O1wb0#ݗp7 _wn +~|Q-. {`~67pd ,&$d[qJNj %(P 74@T*iɹB,Y +H(9;Mbb_yvW +EDLҼ^ڒ2\?lV/?9=dOi~Ȇ׬S(e ++qϬ "&(dSrΝs=1Z/;~#mFyPpe `JI̗D¦FPB(hW4NSD.J z6N+]2QsVtWS|A)$ڛtcڒHb"&TZ.#e@wQqU\dm(qV.)vS!)+`8htYT Nɑݎf bW[R\Ҥ~xx|fDZs-Iɵ߶o.ͩ'A>LO"do*K$IB y0en0P)z@T( Ɗ7.Cp 4&;Q#Cl77ڰz#&3IG5k'n~cCTZ4 wSJO?\=b n4ZhUMեA .7$2'lJvruW8#iPK>bY} VUBza* QԷL*CPZ|w0@\N]†'"@2@ Qlj);xUb!3-^2'h0#5qסGYS΢Jf'Δ`ԣ¬Ҋ«mZRǪ- MlX} +ǦBrJ4vB)V6r:*SX q˅9 }2@`!BU{|3o_5^@QjUUQj'@xVH +roqǴp3@4ԭy% e/L"!Jq^$XDV#.VɽOH8ky9'>aLj Z#XUu-1q`+Ql!uzAfJy9l)e[|Yҕ%^=˦㚐%na$4 )Ǣ(~m"o 5FFA{ya0dzW^;j&cMNY +v6AGR*C [ kQ'C4UJ!Uy쾈>QSDb_#n|\k^z=ת!o3@`E&D}&ɉaLET\+Gpղy@oAH%6Aɴhybc ?@=I +^%[xwo$2χxR:7#-fأWFA$ SdQP4Z4E`Bʚt,!ҔPF,}،pXm?8DMXrZɎ @.[h4# 7g_fȃABdJ P̠0v _ȿtAkFG'C'*F$X=PqLuX ήYu} .C`M($ص+$P2@N[&>1dՠaBӋlR}[LDF~r?m?555ۚ]MI&L8$7b5P 3GHU "ai )X=U(%2UX {ưyat_{ Q&:AH"$}HBcMI +uZwԕ]f,5#r?tx2}#*&o\(oZ/'$ݐUUWd#9 +uKR&I?ʧ웢CUpb$ʋe34FBndy,B+ +GF'qejS_YV*G}ͧF|WovZQ ؋B(^%RXQ*ڲX\[E=1{+ĥ1q SV.YxĴp[(c">CuేB|EBayU gYVjK%mZ՞ߒ4-! "ɞԐP,+Czz򈟉tϲ&2Dz]ͨ5oDS!6 C<2hC 1бVWϜxi 7> CH=$/Bh])V +/:gUj~(U\"e`$tʨyk!B?wR1y4:?y&MQ8SeE@ j'nė803bI59q1}jd@”q0?Z&tɴӧڠ4yI]،X҂pX_oW烳+vCoÝj0B3~w|~=f +%"Z|JT: RXx$L0 ߢX?Js- ~$b% eٻ1_@;}w2 P$j5(d땢P9(cA ++ر*))*ǕՐD'iy+-s辺Uϙ=/W3 M!PĔ\q VBq(TpObʙzJLQ)"qa\ԊX_tIok-X` _G!=wgqd|4 +m.DSkTSSoRkQTfIz2Yu:TA3@$_˻A>q~`m8>~q"|2VBc"TT僱R&UlUܦTeDX%,ӊVGĪאScZS^p#?YV/z0JJzX*YU/SXF:5i%b&  Cihe>%GoR ?6ke/<|p~:rvp}Vbb'2@Ӂ$6N!CA4*hier +Fщf}D#Dk„Z'E5lֻO~k$'G[7gKiNz+tWiRTJP=|B0FE U  Ï%JHEIe@yt줱iNp"&Eq;.}j!Mwsh=<FpT(2@*)hOh *!-$WRN$ Ν3v=ny8ʑ2yna@cw{g@cKCfElh  +k_$٤/ eTllpS2wȱJ3\\,1^;vY5z_UpԅF{Nf:76y1ӤK̔L$Gʑ܆ +h~Qk\U%Pl=_ 4vpaQBWT`#6GduB^Is/Rg{lcSrr)'`]i̚R[Z7=ѭS[RSﻱ 5R ~^8/N# ' b^=bP=J&>#6 )u|xT +e`#8W(OI"\qPtj,3  Ӻ2Ի1ˁ?ˁt̢" t"wl8 #}A(*c^g7F3r$G_!W:D~BXJ8,V(~x/VX\4ZS6Vpז- 3fCi7㮤\'}|2I zV/[WY=WnH oApvө!1T,HғR^B!B H=rьjFdqō+c )ȆI yjLY̤9oH\ @5KjFQDʲ}Asno2 _U|a zd72 MN02:c"ujNP4(cH䒿[6e;L/Wgl . j1du9EE/*PT4gTD& /.ETB79.Ψ)9yxltׁp(N˟Q$47R*կL}}#~>"$ :kHKp= z<$C&iaةC1JV 9jBy*fJ]B pQ+dnJ 6Xfi~qZ޿W0?|rM7q]g UYaomAG4  yZ}r.cp<{Fex:2*;-4}x%^USL6z` DƆy]͎Ǻ!@2˟Z +N^9R. *"iAɢ-XVSUN?OolRJrS%⑺Kԓ@_QLIw$|0R)-C\SoRYD-DRBIdgYӮ*EZJE^rňoygy +EҰ&e;z, +ݍ 'ͪJ~b< P5yn(itUb퉃%+ BC +u"؇X45l8c&k1c 8I)Yhq5K, tğ@Z@68W@&}>a^ }k1l8!UACԦY#A|Wz(FӢ#k(34Y>=j^,ՠYzC"D##>;ˈ,j7.>Io45xgWi0irGq堔ID"F΄i,A5NNP+kP p'Z1KEd&߭>tau߾`G@|UvU6.[l',@2fcڌpɲwSĮ6pNE/ÇsާRRͤBm _E_PR|:( E0R#N YDGmN@#RRWʓѧRGeKAןF 9kv +U߉" +u7dȬBi͉ӱ7 E@ѣ02(ƈ@d 物Dq%,VI6r}o}K@9|8fp 9}r`LM"Jzm*3X=Hɠ +v=vZRxrϪ^eTbU2_Zp=,Np4Rp_"_ > rR# N`*2yyaU ~m0#|cuppvASdzRUfWAjDO܇8OLzޱvÒ}e}+X$OH\\<8" Zch<̜*&2?²G%SV9u6u;^]t~5oQ׊>xCnlk2yEFDĎ[zQy-iGӣ" +/O%$W-SeSF%VIu% su1m'ϝ;vT*c/je$&G?[RF LT*6 }2aHH&w 0Q;_9UQg6NN6s2UOS;v.?A7tIk iF*&Oᑉ$qd@'=B^-85?&N\sB:8'[Tfq +f@7Rv'Ytdeq$l3Z2/p&MbAz hʣ ,׃(U䛐$|) +geݓw)"5讞4?EWZ˟ +@E̿Ucݸ]-Mcq{8̑lDD9Y#'N9.؇_sEǬ U M)D5-O?{;ٱ\E ( YzU>rzAx3vwQ{b8. hp8^hB @n/b,F)Ӕc,)[EΕ:Rs&$fi6,zDf=iu6f/D:bVx4F-ĩɘwy42 jDݬ˩/g@.q[iDEFU TUnR1Y/V.\I`c;32z|5l v@sx +W0 ΝnPuQ9q$-t?q/}R)5LNXt"Xzzey!t L3W_ ™<@ vxJ11Nhzq$=?"Ur,} +gʼrc1RmI~XЦɑ?tQT!#X,. ky-\" -WC\ +b"E +I[ 9 +E؆@a*mniW6LT^$v7;%(|`d sFfr%>f$, QRZO ~Dx~CލWydwy F + +،%Wx:JnJ*⩠BgZG]4hܯ#4?Ҥ̓ص+\k`<$,Q&7..^e6q\zI! a- +E& +乼H`N Il %22@@@č_pB<(Oub"߸ RÞGH}Fu z+I:ravl0Bn} +iZwث&ofy37́`3g$8\ө.R ӯ2ϋ}.z?ZC /$Îx"ߜ2  +vKل.bi`šw/-pc0"\}+F5=PrTC^UY͛S'{yE>e~ێ,R)*-_!oU4:Ly],"* >E2$nҌHZ~x_G<8G0q?ꈘmGR]H_ݗ{}¹%\LFqJ3N=6cQ_/PإIB~41Xwgb然'W +qUZ;xFqLeGt ju'txT")GK'OofRR` + ݇#N !q8Ǔ"А'#Q@,$,$$Id2^2}9 "J;UiXo$QKۉ s :"zP Ԣ?Ԉ0QNA a0.B±D`DJ* zuN!HqhPY.Ѧ"  ᗀ}YUmRS$0F pEG!4DrdN^)E;S,@NO+PxHqNuF%B;nFCU  &OB(HH#YP"qXWTT!WƱu]S0l{Z2ǙC R6*㏨'ݐ[J^h?p_&?!3@ I%H.o}!/R)Iu&QȦK̖nhs3HGvBWHiG3pGf@0/MhG2'唗:;L)͆ ճ |.9QsQRwT!inw!뽪Z*D U}@*JAズh'wO% fN9quD=5(wk +1&}DxŢ\,^f![[1 Fܑr b!IEϻC%r Qd;%FD0RyRhT?;(:-Vc-Jއ( 3Z%m#kr݁ +>&-!KaMhᚑ=klyv֏҅6*\v&7=5yXH X5o u'm [XI2`Z7$6^wrSPH&8Vx }yֈ/qi.mp3-ݚ-{2-.b+§! 0(%^*y)wnz\p kCdA9'KI7. A[Qu?}_po_6cćNWr<KWLVXchǠ@`H^2ʅc(єba^!N<*}>B3"ok_"F[`N,8 ݑ:ݮ%Scx6NBi" cHJoTj;8H#e,#N<l&f=$*J3+"*](C7]$?II 0hj7R RźDnjd}ûy:ėx42٘FeEӐΊv (1 /d;\Q=hUBI`IaK@3(eDn$eYxk_,U)"IJ%0E&I)?eߗ䐩N$ˈ2M{~b"@_le:^߈(%-{2OjE"؊grˈݭ_\) ^ouu5]P&ל昦2)&TXTW<~rNhG9+CUk)啱3@—rJݧ*SpxQW] Y euPإi"PՀD2+V*f~6jRsYPpS,]ؓ-A2ܲ3݁`2cg@C;Cr?( L&lwGsBA%c+hre  +ǃ ]5K"B$CI.hMm"WpL˃Amkϊghw>8i?@;mZ@/\B7%t#FMHRɵi@y;\كԋS8:7}IwѪY1 I42@VPG€v+ U>DpQFZOH- J@daԋTvc#uwL }醻rJ(xh4ze ]H \TW0Hhf1'C(R G*tOB[Hc.g9 = ЈA!B4"ŰUSd7J\d$HBH3f8!#}6,_^ݓJ$Wn) tgYٺ\]s.葆HCOsRw4F3HxCOA|J:{Q_h^pbb%,c_TcNvD|kR^xqJ`28gT҂쎘A::\#^P{K(–58bnŽ;z(>l]OF/?U!gpst9UTZ[EF) g'+:PƃSm|V) K|nn"y.i <1`=A7fB{Q"W~!:?! BL>6C#cb<n-wȻbQ#,*u77,b>Bcͱ + "t8Fɵ? 2i?|Jȴ?|L79H̍rKeIv8aj`SR{VQ"Xߎ[ʫBH 8-Iu^2%)TNvjMPT<~ >5ʎ5:2ҥŲB  .Fw 4pgʃX$HxY>0MhL-:x:V47vFɨZ9(S{*  Pɭ2{§5w@51dd-(y,TȽ*eEwؼs9&s:>ƢfWdfVT+'JːK9lG0nPDaRmm%GkQXQ.Q"\e0.}^Z !'W~AzL@f{pBӊ&=rF;e=8p"vxz\R@ +pHZ! +g2%E-A&iOR]ry"AN F; )68aI83OΧ'5_  5qG`ݠCC:'Vb dR +2 U M |l- b n )b|g7 yx#8՟ p4㱀(U *PxP$DG-!m GJuR TxK}LGp I˖QI7`^z3I^)&Qzv!4j%ӁSP։TP,W(L(Ňjx#_BuEoUcp.8e ~?l_?.ӊ|SZ iAI!q\-i\K0vU8Hyl\E*Ei$)#8Vu?R ZBKTVޒxiUoCV UW(S >[as,. ˩ 9qT!Wy$o>wI +b6d5qǫgyWOrȯ^c_]¼zԫg\@cc?#RCdVz6^|vIٶ2@kOLb&W\}I)Dk.wmH> Grhy{~ɫ/WWZd˱2Kv-UY)eLu'u($u"K]B]}8GNWקWG/W*WO p~Q_}jy}װWJT1S{(U원*H+MF۽QnbtDTUDSCmGND(9,%0N;Ma1CJU υJel< )U>[t30; TB̩bT1RT +_X,U,I#x)@ M*!җM =Q/0YkQVXZ@08&S#}# bY +&Cmq9 z5^dr `ɰ|cP nD&D+/GܜBm }L>MR%?dH1se@P 90z9@h%a&ϰ 09 +⚪J52$#YM-t-')d(3~Fo6q\/?v|uȫÀsr&;qt: 9  pjQeTx#ҀCr5Q*r~pe4\lEq@q$eXGL2@`Kz3/420 -d%Xa)d&[%D|=a7U%?pT'-BWHD**U@A4u*9 \`#]Mǩ V¢QGl +ٕDyHJ)I HyArs*h2ʴR4UD#8W#P1%fc Yԝ - MEC!eP(P ZZ(D&~;hQHBa.ffQƉ*B88lVV鰣h5h\r-!uwf+ G$bp2@@łb=ĕ$!E*qD$Z$f݈QgK(+#0ב2˔o`D| HJ ZJj<5+Qǜ+ҳk',C\>|e{frݓIiZɕ!ې !Q̸!3@@ԄRlYqsXaPtd@ FY_φUFF4rCsd%pC"Bi +q噈hx:`tR!rSb3RsaA/22ONKHHJwLi5Kyci]茁jti?"duY8[b/]Mr4%o,g@,Z}5UEऑdkh #qh/_SXzIn +Q"%C95YPR'jޒ/3eTC=Bg@/Տ::QVV^V6(tvI^,*/ Ji@рQ]]6BU:|`c@H[8'ߒĺQ yAeǓbdo䚑iaPڏzR5[mHbMg(l `f +k7pÆέ[g+s܊aǑ2 +endstream endobj 32 0 obj <>stream +=&).'Nс(Ik2Hy}*jdQ6 7B&|o: 42s;}J4~LA}KAr)嚉nBWF;jĢww@> _H0Vy&i6t&ȶ: a;V#fS>ov+**iئg*)lBs+D \MfKy.LȖǫy$NecY5)>dz4j^m„/^NiDKTzYȒ1 efqt~>g5* ʕ߭  o}uh8x(B,@8T'ˠ>2 W7┚#D;\ QDi:l>X0%x?KƷ"z+ML+y2 ++ϫzOʂɄʫl2|8LG]e%$;`v "B4B${$Wd36d=6Y[ո{\R/>= Ft2"CٜTQzL>3J)9= %~~}0&]DԨ"%NTA)ِY۱Pr+ +eK 5V[Z2 `ܨ?]4N傆@D*"GnT^࡜*Y0$dY% ou fz&bW~PE2;kqJաAkd5ɔ}S%%XEVߠ>!(rOT*)e.=mr.D##tlEwH^ZΘ=ԝh! `Pa.< Z`k[4j] sUfxsLrja6|E01 JEh̸"TF5[&R?CiX>"Z|8Ka! L9‘HG6tB +W>_Ps3H0Lr̖z q+4NņفZn'gKy=^)rR3md(˘k%"F Di _{=,>nN*G7'#2.;C.!GC{y>ff (k +db\bu5щ*QqH:PHp ̩]' zZPP`U AMSJqUB}0%F=rZ֦;t4k0-2.Tb]TҚ3 {@eL8e@X@N[->I\&HH +X5BZ7ˬ<,h!(L"Mak<)w$h:>ƻ^_ETP+,PDe𫩤Hl"iYV6- +> "].ӻ)}cQ`J.c-K8O+gm 7O0ՂujX]@3@`y]=h*vSTj'"VV8"GիW W>U޾^= ^Pzz')ԫԫ0T; C}Z~`YV' Q__Vu-Ek-3}$^ȫ^/W\W/qW/o?իǫ'+W5=^ɯ__=^zyFg~ȟ7nva_`#VTT1Qlإ/U,vK+Im RԨb$ȨbHh&rp^ ` :P2lVpTMMv(K)@dTM= +rI!pGɁT:y +LK zP=?xWp]:(sm4V0NW׻A' Bv89Yq> %"!oT4L;42P0Yi!RKcMTW}LW54b +|(4()d@Djvh fXK6X;YRbnDޞg'W T}Μᴀ\Ľ +K9"̙*tV2(k,!zzFU%*N9):IYto$e{2@:%@dzr8a*ũ!R$b{;1  +4g!5gD vF *Á; (7B履 87 Գ1 `KÃa P5[!JDQ/&$NFIl: X9m"&綍lSP# ȈF63-`u .GgˀYCW(B 2Iţk#K"ЃHUJQ0Ipj(pN=.\EUԩZzʣC2םMG }`Tan% v_T +# +HmTB4a#bH1R8^`[(/\3ј` ` +TèX6/oHz^ >>2ŋ/t]'B9YH(fKj&k' >E5)NUA= 営G!xN6r:>TMj:X~5i/Ʉd 9$5;"IF|/"04Abp3v +gϘI r0,z[JjfP̊AOI]qciӭfc2ìY8ÿ9p3c9LZ a6@ =C +YN#SXL/)eJE`D^qs(C:? +p*bI}h>jT2z-O f82$v-n &lI,!JEóJ&\ 7~b6tU:~Dţ,#IA. f8Ahq' +v1`A(%2T=$r IPHk™U9q(Lf$8&gA-p8nXI{Z F e*ZHUw$N <-[G+~$.aqeq +r |ҸGhAF nSdD`&ڸwF$j`%9.SYq,:Eűx.Zn܂`4^3$NNU +al@Ho 3q3@(8](ȋ&(yr+tWWa<UBfDp>`"iB)7C!ϋNsW~z<DP<@B;dZ'.I.d^:hk zƧza0Hr ƳP86Ic!olH _X-aMLtFvh V9UH1"p]^s~Ϊx1ĕ5f1dc #xOZ fphtO ,&8>Rz-ƀ|! nM`, 0=Q̂r(J 3>93 2RBɏ\ VTjd [PosT^T.kal0ܲm:e[$;1Jo +f:ɀhDi)Jdi?18|u^ŋl/[C.W5 o1JwX%} _Csd1AjGi6c8pp'!.|3'K!yZrDŽ2EٌM*|~(A#"L[Lk@iBFC>k ͇/Dfsb1-Z$ +Ǽ_B 1mM:s&H!BO^UI_Р_p/ IC0sXE HʼvP +Z+'mD IpHNIcR݌}6$$o +s-g}2mzR.he2 hQ[P4V' ]p'M@ +/][lPc!Y pz4*QeR$}aY1:XAU^+m×*_`hP[g<  (8H K #Y w;}0tlͪr0vGYs=2 +6tx]'Ri>uG_Pj +|y^ ʫVGao8 Ŧ4c+^~,Y0saN7GV"J&)Ѐla)J+vQ4x~=^k,|Ծgx}/^1U ;WJ[>X"*UIb> pޢgӺ3-NfԠTpf-x&`⋡(jI}J_!q~t~caxÅH5.'`ZՅd}E?N[;Q[ƼZNކࢍ|8.ORv!4Ñ|3^(K@=2Vj1|a A +_q0L_\@+[pQdJ=R$n"&vul#7Fex<|L(x +*xH=eڥ KAGU6U4k2bi!b탍S:dP3_OI; 6 mOsﻝp3]?#s?A`PUV9T&"Gk eڅ%xJ٘ԓ9*G( JC:fƔF S?o!|Ü|'fѨ~fU}^zޒbd!hR8 AAt{p$v$5|.9y@xKS)M|The4fٗ컩I"])CKI2IHфF5blJ LkN +'E BlMW|GaSzU*J`DEco2zH:2m-2S?-!_EmEE!|$\2tdw\S(z[(WƔBՆ 7> ΘK .zYl=Sx瀧Y?rW$|]-}񂟚*~o1wD5Iݚ*| +t1|X^Hѳ>LjQ|[S+ +>$Ђ߅4E_ +<122;2n_kh>bu +F>VXL̲i(9/Ge`~ Q_'ߠ# cqO |~& ~C ?o0_m /F- =, +gZvB/FiM^(*cUGbˁ} ȁv`:*&%~"~aq> `?iab`># >ڂXAuoX cS\-SJS4b Kc F$z-K.ffy.'\+͠ޓ^[C%쬸{]&^u_ Spr7??XKm_Q f ffe 3,.V7 2@f?@E%:ppNX%y#<~9M؉r &i]IjzD4wukhkĩkxݐJXk )\!Oap.]uR*!u Lov(7Psh RoLX"ŇtonhTr}tbz9 OG5u'؁Z%u\&uH :6A^p˰Qpl!HQ22!HPŖY +AH,=#vE%cҩD+ڃĤxO5ohK```;|Gx4 j-ԧ9\WuyQWTf;@JyMAҜ-6*94TfI"2;:U3@`!`ĨA@CJԃ Y P,)HDĘA*"l)[1Q8Cv[)ƪ5N[XhiaQeJL^3f+QHB]EJU%Ux0ye[ E{ׄb +DSo,TrU1IbOo֬)r8gT=.#^7~b &m\DY.# +"iuS\X +\Zҙ]DK54 )rP0YC6^D=:àҫPrj +\4,Y5 8]"%g 2 eX;a0weF%`p!^`m89f7tJ ɢcy064);#<Ģj3-4n<  PSia?QSe\ S$ZOT(QUK/k8ig5zA1@KU< +BW HU[aA/225-i&-ixY0E25~WC3@@(.u1lyɤhKD4 WHrI"s+~&֩4`6xr7V>w lU6 ~ear0{c:8a:&(L,C`^W˯f]* &U1$ѨuDQpT'iUq.WQH+2^پǣIRA0(H=b?~Vd+ dTv +KӃNi<6)Mn9񺽳WB0ðj`Xɐ0n2@#Qgy*Qa%&EX%5|EjPcq %*K|%yǽ9yed)AM#BG"hWIbk>eB;oy<=9de)wuKGp>+8!O~J +_A)Q5)Q5;.z$Ot@ "$+Hs3A`FM}P-0Z٫neV䑅S3cYNLNu5BJG%J6d *pk? ` ^q `x83d_셉mX7Y``ԭ͌vX㠺'gY X)qrP g*@/w/cR$56(=_ёv>bB.0w#<*zTr'S4p^:t/!HBvxԝzϓ(aARpF- JEgj@,9`\Mױ_yX$nS :/Y15D'C %yR&<ъ?Om7HW*,Y8sa񆛣;I(F){0gez `}DiSbߌ>d3P_IhzT<^ S# O'kk؉\ΒjYuֹ|AE&S3>^ϸjԤhdACǡMg*@R:W¤t"/X Pt rW t}GԶ95?+S=tfF3|TUȭ5 wʧ[&yqf +YCc~N "ӨC%Sj9}`o^j9|zUädi_Hqg.YtQ.}*K;_8N tR#8tMO\Z@}Ua#2JLkThj&Q#Ղ=Hw93/kȾP?@D $zm:%QpM@8釡$WINqPN&UeK5Z}V +*XnALuo6O>GC9&~dqd\/ +fO`8OM)jTR ]PܣF(\\T]XJXfomz[P9oVۗ0wb[>Gzໝr7EY.[.粿pJn&|>8?PIDCiQHVIzjDbx[ U6:|0x bC/bʀ>C||?Q] 8ǕYp[_,Z( E1t|X"8)/ӋE E_0/$h$M+_ > + ^8 nh7[WXSBFK4ZqZœ#B7,U+U ZRTA?5?JYтo0.a|  2x|elg9 =0e$~t +3jrl]0 mQ0Yk"x!Rɡ31bzD:`{QؕY%sO|12A -XDP :Bk Bd7Ճ+"܉6nD +DMay܄6IKd$ |UNQ1+{V5ؔ&`Lȩ& BIT#qr9"S΁Њ#ݥP1!vJ{P}j!Itt +n paBsE2EU! 7*N<3PR3w$.j rI)OuWZ,SBx j4fV"WGn; +/YgE-B=lŠɶE." ~0/lU| jEBz4 -gѲ^1hNSQ?Bq0 87BkG F[Qò#ș>°1M&Ф%KI|8pk'YK՘լpe5 2NA$:rj:%T| TB)Fq+D)Fd-}&Hi$_[ &(BN"@qB#S^Fi[:pJdn#"aBɤBPS-~rŋyXжQ>2bC[@4s-RH*@& RmJO9"1<Iv̺ea{Y(l'ܜ8k_7/Yh (ȓzY+k8Xn swãҸL <*f-Gs:уLXCCxUE W DI8PIB6S閞W"=O}c9{} ?mO~/Ӕae3/Z ج1xZ<^ܒ@c5(\~]IY9l(}_>d)mT^<*Oe-vW6lH2]Jr2badRLJX͏{ ;(  ><[z lVr + 6GC(Cx^n55jT<]Y  N[ljN۠xD/sqMa]J7V/(4|ҾnDLr\L-DV=ɫ"Ԧ&SwHzn_2 +uHQ8 +E6B~@wٴ:_B.6ic0A B?J<("-Pp)J,R^jؙuEχN'F Z[ —\6w EMo&H; DMia>ԢY|FQ$sjpYW`XO:Z{ZmOd򦲿VݢQj>h> oA# fb׊, 2}TiVEfQ< ܚ_wEO1o#VB]QgͲ+;go 6[pW&F~ބ_8O+|JC&USU}r!fKuptZ#fgO3m)3(&4|nL >a5{#|Λ>E_Iw2&gq6%f_M_"$~ F:A^~rdDM{ 4 5ߤ+ϝ,gЃSỐUCdmiEB )p_vay06xC  >z}^c rU7;Vf~Ԧ࿸kK%|CB*N~ _܄2LO]'9sLgLgegm B +n(gQ0DJ`Hi/K8$u ~TP׊'39ݗ{{j뎰a?yT k'nݯͅ^Ʌ\U9]ݍD1!fP窪 dILezOMPh=zm"1(GC*nf_&pW8N>늒{g&@+ԑh۝.]SP Օ mz*yX甿g%>ȞXls6UQeh0r.(df;\d^ѫEAXREҺ&d@JwVk-ae"er= +gap^0$Y%%^0w 8{UK .$=NJ3+{N2}JEXA%9ڞM@9R;d@ ʋږ,p}B}B ]f]S&Ìx@hpJb1Q@p%/Be ,M$2ON8l{IB#Kv"Gf9Z*U+XRnz'T^X酕⳻KF9W^ ^ty.(*M1w=>9HWּfWTtE"josh?r4n,odg@͖`@ +Fi-;b>_!‰5%AĶÃY5sk B8Q;!*!NL}E&(`؟ߨyP +?'0wAԖheb9&^'u@ً\>m儻r(oIxN9B̬s0{XJőƫ!%l 0ma=#R$G>#K.Y+ Fʄ ;gPstvA!2e@3fbȘ$ΘX6i,3&*+! # +40ϴ m]I%I q%\$3@`hwbqV ?eB>an(Z|MHK0QO џ2ђMtpJh ތN|652ԭ-,z쌱`.rƆp&ֈzz9-2$CQa kULK Ǘ˲Zꌜ!TN)fw"JjB- +Tj**52j:ɒ9P~rXvik\D`O%:+ÃZl],CWwJw6VH6?v؍>2 E8O}"ϟp2M/{R-\Z5N4rHq l T3u<t?^,}W=`eI{_Q4ٽ[N\:^2@pc.fGiJcjaZWf_ +G-w"Oa 0{S 3ҧè (}d!}׶ oX"2>ҬaTӞB`(b$@v& JRX;HXVUMh_)`x&2q0TJv r#vO&wi3@HdG (MELwhw$'Q$XROz l91o8ńJ*05"'ϕ7ތ:tAVW>(+Œù}c[QKPkbaduLpMS)2P4 esmHEEfe@[sk!J3홧T{N(!c"B6^A'\#a⺷TwUSWS`2Rn8T.%!u"?'|SkDxUr0 H2&V"iƦrPhEt8TzRIkjP6P:|Pe<|KܾzKnĢ[yB`e,J4rp6ySU}q2 B|Kb̹;O2ϋjP00ńd^N!0/F=`>1>~ _c Rg)H.vN0% \B*xDIR/^%8}Hћ޽ 8-:tF_t6])Xj@&v:U>}+Vwѕu[BB.;vs,d `R *CM[E +F dNC:v:!۹E >[? AЊC'$% +Abi2g{蕏疩b@ @= *o#_BᷬS3@@*@2@s&pnKA9(# AnCTJ*2 +Q&uQWҸfr)6xDST AV=ڀl3@rs`ßv;؊I%JTo\ +(ȰFk)2@JmLBbZBGsBS%aytϿ>*ZY +4Breced'3q% DDfooDFh=֋SKPv`+'ÝM*]JG5JY}+2/%ᾓ p _xE7R>c"! H4$ Y q}TTŦtRi6U)EbZO+aC?fM@(o}c'#>MjF[x#01 "O8)q2K +&(TPLTʼzguHNCs!D'|1e[쿸9V("~v/ZxCfI}2EGśJ73D2$p+SXE-PPgͨm܄?( +U*N*Pւl=zL@Y ~K1 N. | * |#|G@,FA>h„_$ߗ8OdcF%f&i߆\]L/f܄.f'hURL -U@>UI_6 C ~ ~D||}^)8/jk}Hҳ|[!>ٟS쿏W'Cac,‹ | ͽ2I8C dN6|RX ">LF&ddžܸ(km" / 2 ƎfWS¦Pu6O^?|-r|0_Zqi + @O4Ge_ˆw(a}/EsGʕIR/j +[Z\,VT!.C9J.Ƅ0=I0#Ao6pl=*f%*9?6QNdBFqGf_ɓ_\`a (L70XATZU܄zÉC*WMtDŽJK+]1qŘk͕}0q0D2_l|uYJ +x-BBfâ`Q^3d497Vt DQT0@ӛd4~͔k@XR$uѨpkLxPCY^p.4b:UEJO_BE2i,:\ezrqi( P_( +NUAEGM+ws]SI;.P~DRNR VcE&≯PRubC t9QIL]-Wflq$ Ey +.tV Z˽bf Dw4Z Z43@/Rll=.H|U@>lZꋨL3|cJzJ-{)I'fމffjy01v1$}jZV"ґQp|*0}RpƷ 6s * (P&VQAw}9OayRE5EZ.;[Np5ʼnZy`KJ>UDjho(MrnpG|M!t(lI,wK3\Y]ƃ{_nO_O3b"/k긕 #*p~JT~rkrPLzIҫ:,eݰ-]op}@peG]F6Q@8Gժh v$qx|# /ȡJCbXB%j#Ŝ#jfJjpxun5]ږNOmQs0h#OrK쬾@e7Y({p+A!sa-\#' "@X#_D$~qYkYMc ǺPUZulX~]#Q6)"UؽĮ3Ln#dMT v1`8) RcFF +>DNPwO~@/ˣtt'rGu՟"cG0(E%E33m}RƢqE[eo' +ʎS ݅2\DM@Hd1RisOw@+|'.C0И$C'``>\!#<j9 TňzŐ!\*%!N!ml 0l[8(Ə2⌇Y@M" bc #H66iAumįd׊nS\85O Z7 >.Z{$7nW1niۍXUEu#z}PU}b2 &{k@0]Q)q(0$ͨV͞.,JƛH I#3ń)@AZ%r[<+c dJ{ya~2 8KՇ15(0](pU" jUJp4z)-JΝS/7VA/+"O6䊀^ɹ#M4uTƗ,y +cYG M$: +Ĕ +((;M(P(=! 5BDzE-ȡ8A8 Q"p |lDl|flȂDE#-;>,A󨉉⳰F;ogN&-"Aꞅ}P|AAPOs=Bj$ i:("$ϡ`BnW&cG lArD5'1')YBDV [BՔ9&3f6r]a ؘvPy^1MIuKݙ;#C- wEDuA$Ǥ @6> )h>"uk0ISPfE0rKQ#iX6a ͒W.ĉ3 M9bnc>p9"~_¥ HP(2Q؛tVfi"^zhm͛('9A'f@9G(w)-v>4Ũk•x~3: B"~Ws^GT%o90ۖP*AsS.3@n|KwIwbDSgx{(XQXGrZ?rf@ZP5h  D $AX\Ѫ9xh]5jzF:. u`P EC]&b}̇5wjPh(;5,էHj%I1H|h?fvV.DC"qC^=/+Cqxɒ< H=3kUO +E# ˇ +3f1 \:RWHxl~]8qĥPpj_ v@r#7F 7[Hp@zxW>^h25-)S̒<ǚpnչAT8HZ<"E$PEe:Pg0t4Pjv1Q1rKH@2Pf7`EYZԴ4p~> ghn9XRQGf Wtrc,3kIU +WM|ޙl +Ip'Q1gP +5UgUG +B]IFİcҊ3@el#z]Ob2CdpQDN(t"5"!DB Uj9ct*x-j+u8)M~QQTq*Uuc2GL4Ⅰ%D)lDl"\&cHYYdiw„bQG-a7p%"`[ {bUG}v.}',;0(YAGE#yZZWi!.2O?IZ(l^~YTZ*G)CT 0wUЈZfpEsע!ݢIPxQ> L82OO5^gDvF!=_@§K?<$ީ4UF +/U%:+:Ek,)֐AoM+2lg cDY~־5Eߟ< R>}$)vj%)obM1Lȥ(꜐6IX:191drb ]?=AH,!3p!g4n^I՗ Lca_[Jȉe@ȉ|b=O8z'Oq@X261գ513]S*|%ЫF =Qb"I@58Zo}ćV'JKʽ `6_Wb FL[m˸]!NOPb+υHI$vy$V#tGb1ۑ0 1V&;B p28u + @g}ʙԚ(jE"73Fᭀ"TW11̎bGPXGw#vꈑs:b:b #F,Fvч/b/$blnb1s( LCHᔡih {"B\@|>zeg)\ ^CV-Y0 +  +,Ex(҆*k$G +,sG +LՋ)0B&sl (&-dFH 3ع"^τҙPLAV̈ дSn''WO'8SΙP<8w#tKpB}z#&H\l>qzW ^ZԸ ᩖj@ N% 3@tFW{n zIhCړj7uIDY lB }xL0,>Bxڅ65(h!|/Ba{QYL5b𬩔čz'᜶ZB%Bp w. ~|jCUX+%Wi;tOw>!R +mЄ +7|y2(1m<>S1X֕Zu8N=AW[:t}u#!NDdI2q1B cT 3ZBFZڜϒzN5q hA\1t*d2@ SΤr2ļ! 0bUqy Tvx| * RJ1Acu]IT AP[!6Ȓy5.wr┵;%lBF"K*x**ӽD-34̽ӈ= V>IJ +P$Y !OzBQB(PXD5L8^c]A|Di4[UԎUUU0if@&Rf% jM DʩX(%Auu}GM¢ԧŇk{g.$ vkOH=gH{{P8,^3cv4Q$QcڡKaޓSTwNh v_L`e }=?eC޳mAnW'qckn/y]q4D^ |61UVM8GZͦZCV6]?dt|t bn".Me8|M_ͫB[,H9X? +n5m2Rn(͟ʹ|M ߎb*[6"{YkT5b{䆓"U_qW]4WD8Ge1V"@ZpNИm=†dt{3`l+ mЈ˗X^zq/kMG*]cŃPl0(2W4`ޘArafunzo-֎-VWZG b d*jaMZ2&Qm!npmkZO)3$8՘34y\Ɩ,/= 5uQQRgcFJ9O$.+ ²8 +>m z Nʒ"<(g̈́sj)bp uꣁ,b8^tpJAܟQ"*1|s)x}p3ʀS=_=#VX@$L`"&mɧSǧ6=>(&U*L 5.!J 3#e2q؈`*ra!Xɦ,2=&EI;WB!A(ܾq8 Ĺ0 P>o[Yi<"wxO_t^ua> z9c.԰ PYfiC!C)L+!; 6eƒ>Q*?e)4UpZG5Ei_ @@mnxbIX@nӃnzdYgf:;1-rڂNDd}呒5)U*c$Hk>R̸#!bcG<1io1UQ*I&1>TȄpMJ9yf" 1$LF$SoW dyD-&oqM!R#_Q@Q Z*Ӱ|Z EWgL}]P\1"8c)TrP/K3 $Ч!AQKF$EO.fRŀ;(V 3@@nQHwCxP)K䄋RsWP2 IJ8(x^!2DR +ρ< r$2ӠRښm].!&@@:i?!J[ +͢NR!z3y]I㒳ǘAÔ)@x/[jyL]J("dp!H8 +0k5k_9 }bJ-NE~٭E~ wf/B}Ϸr~xl5v_d,PK)qYPxgwscKK2rTe'SkD2X.jquVi*7R@騉C2"eLюyvԽ66|f=faKk{}+zeP>{9([*+&UzHt~Į`\Ǯ^}\}A',[H  T!M(ev.YK}SjdlX9Na~g0gpg`,ϊq?(J YxF! cr +(Y/No" ,fyvK&=Ή§)sK8 k^ygڍ'ktHc:ї Q!;-ķ,^O/PjA4iFG)<|h,81{tΣ߷gy +AAjQ D֝/T4:t`Q~'܎RlvSk~"43܌(q#(pC>8-5ڠ5^TZ LTzy^=-\IgoioIL*vj-pj-^TJMћX,y"yɓlTfQ &j'~N srwj,Dj'L,-I{_4Y^í}ƸW}ϘǨ9 ~W!\se:G)hLz[pG22DcYXRˢ5QAkkVlz 9ia~}g־kߢE;E/GWj߷oeL)RLdvRsRX'VRLSLSjSS}2J>@1b8rg"nXz&F J0jH&iI>2Q@= Z]bbbcubTЉeN '8'M#'E&VbhL̓&&fKIVѯJ=V{P&;AW&ΣmڇW"\Qd;~o`Q8 L۝RUb%Ub_bTb9)19K+%B%vRm%_ɓXeI?$6sY ȡik5J*u·4}*T@*P( +r7N,6ȌEB2@@ اHLro$+( $V $f9i$&#5;"҈͈q͈]@Md|$>b2\xg;kp2x x|Vmy< +9`|{H HSe9Y8/Sre&ԯ+b%D$DJ,E)"f(PX8K>@ =*+4)Gؤҵ<Ɋ4dndpg4v n6Y;4nx3pGkĘ";PMjSvn%@7sz-$B^!Kز^==S.5+ J xE&e  }![PNO6߼Y܉ zo)uT"z<&:%7vJOk./)npQ S2@>ha|1nΨ WZo9mAms8$t'q6s+Z םrB܁ˈq "҂dCDx.g =4IA꼨n 90 y{ (>(cT1Ll#8tKa9̝ +Щ慧ۼ.DغAMTPx +LG-zO +* +X&$!d' V xC|))HZqp;zVt pȠ!ICX7CAæ\=-XXC_Ƭ3.M+!Y S@EC!a +)Sd@?F +%EtjmIq1OPZ3p;?CS rP( :ŀL5j ܡM: +9 Tⲑ !m=D +U'9DF|D5Ff$0 Ӑ$(9>/+EeLD3@59lWC6h/iG](_ ͰDUps +aH7n"Ɋь)0!Ha|yf\@,I/V&:^^v{4 CqjJ!EƚR2i=ee*V +D5f/KWc€nF|[/ @zk76x/-nl)Kl$1$DzK V2Bgqɭ1$!H:*)+|϶tsDqFtıJxE9 hmύxbn17])hoVj>y&d-J8nK̊g[(ANK9PI$Z [%KS{ES9ijL=Cb6V#]4iQ槱Fj!A8}8 c/mPn<^67 @ՄS)%75 AB өєy'էsÜ@ŠIhH0B$N4Cuܣ‚ěZ'!a79k7bP5$LH9B/^G`gO,"Laakh cΐ/r*"5f@MxiZRe=j[#a}\rPM5 ;bYBi٭II\D7Tr u\&O<#*0B>0QJ=CĜ覣10S‘>nQWQoQ^bsX/N9]9kMe3@8=p8ctq6l1$:-+ ށap?Pp0 `*g0ASB[l:{S<ߗhЈ"H3@@ǻ1rY( L;[L WX*Wfn'ܒ\Aßx9=%ގ;~D5 Aá1b,-r*6빃M`ҷ'R2+ijnZQUR)ᮕK63a8AT"~py4 ͣ&G J"N:L0U,,ր'Q +qn`b'8Lu%EƑؤƊdžQ政EeɧX5`2[%s&idIIb^XMn+^Pna2@I<6G0s:5*S.U.s .\|T& lr\Ɍ @bFtKDe) # 4I[`'R.i/\*I)3\r gJA OvzLTHew"wO);3@̫rMsJibhTŐzAh獬V҉`2\I+U&'RR2dL#yJ"7$8Y^y˭|YAx 2Djk% +NՕ1Jĕ$h3.V0*Uv) <ݲK\$7DG&ĕ M9 +b\"0jB1+ݺ 6@bt4(#9"AJUo +:{i*4J'R$nyxnaT` )"@Xj~'\}> *8Vۺb7$C1e&Kk4*.m>-]α(NL'Dz<:3մYwN^ޔo8Z>^=.sE]aJTA`ʔ`ɬn:wmwrlFqHtp@O$tWk*?<$B0H?P $\ NN&UoWX^˫o˫"a]ݱ}Mwe8tw@:m4+yObI "DDpH!C)Tp Rk&VWNAA-J@eZ\ ;ė"*NІ@D Ӫ"rQ>;DsiR!ad2N\<;0Sa.rCSV'CZ*CYe*? IprFz4zv%BWHeăFoN%izPZMzi rop թpF"(|lPQ9J(H +h>k \(qo$ d% )5a^ńdD 94<#Jh6jB.L̿甦wWŪ;%T52@&UL,Y[&K|{=G}#} {Ja5(KkN5t +uV*$HmhъԲ<#;򠥃6UWֳKOK} }ؾOTؾDvZXޢZ#^;:^dgb TS g*Vz*FX)FbR̢S,;#P,+(!(B(V":Ӊq$'(saVJYRJ8XxDWYfChGgza*|XGQlRQ,e( +(Y(_'"@'ee|bxb +wb:0e@E1101Evd( +}}ԝJJD,ViI%3 fshL>&A|LL +L +ib_4/Tb#8KaHf&kf"Xn9 + `هQ3@ $DA~3̃NԄe&Ed=$2)R''8:$Fk8$V6$$]vvs@4$vf>YDJD`h'LXj45!h61,|u?NX@XC!JУ1\j !]K<23@DD@ J4hyg<`۔h"1['oc NV>,h&@[p TL֭ʁ)d@ݢ[InVǃA~47([X +}}onfgqh'Xa~oZM8"٘8 d>TUݞ^t%}p ?ӡ$CbjxwCe oyyko PAu!\e=x~$L0 ZghF@b\jd[ zF7=J~Kc(ѹ6UfcAaxx/GdӈdX8J}bI8j*^jx It`єdv,+ AqY4:B-Kb]ɳ"6DDP9ӆARKY] bHevђNeWy$BNp ;ĝA4q6RM }فɾjLQm"Z|AzẐ: +~A(6Q➴2hxiS z xwJN eﺖ>@mE<;ys_H2CU(]#Ecv&KI=Km2H[+S3@@ZBJUieJ&`% x*ԮD +6!a5+MlH,# }P'V#beOa>^{T8),Xf9Wt0Dhsq(5kss@"5R T|JͣyC1q2J$Re<R4k+#" PU|+캺qv7:TcMDeYl(vBLr%qoJj*z Y:k8N ƈŽ宓JAgb@P,11_ʍueZIZ?Dn05'zQzV=[;ɐqg}p*(\\ҍm@ڶ Ð:# Y ?VscI I%*#ԧ +S X[#K3nHM0&ݶnGf6[MLCwqI&͍iwB{^4hL˫^}p?7 ,1 >{gB\%Z:ftݶF=[TzMMFJAqD ɚuoe>hJ_[Cg4լ1)^qXL0zwND%riQ!(($t,۹zLԦ}QMK#`WEp$0rc9(*̂}9L TdWݏ##=.Bgx-.bsO$R^8!jR ug</_F htU>()e"KyJ۔Pa*D s|W& BJk!prQ@L[| ONZEym:WR1,{?Q +%wɍ/ؙPhKO2y=8^>i6}l،a$D8Ȣ!%GQ@]QvR;vO_g3@ I+;6%+lHUq 5C}Dt_^q31n(s,EZSG1 ^#' +xX37$ 1]EBcڝH2RPS4GxS"-6MW k1Z2iKY rS (Ge `gnUj̭TaVN MIDIVSЇ A4"ܔnF J_ ]q$ \mŮ\u%,ia"ĭs,[0 y)6\chBs>AŐ{< TkT_˲{߆OF^vW8A.A6#xdF B0ᖲT j_ZEدg=lr) +#HDZZtyRg1;cl'DBIxv~zFN=Ã* !9@#iz5Y?"0j2=rc_5د7m>*:JCq,mڑԓhb?-zBF7(EKV|IV!=TH[1'Q(t5GRJbW_;DTS~W +`;?@T$0$]$$9KQCH ҃Q&u JL#PS9u)ʱ +uZ(~>:=KAyV!ZBh)WA(^%z %|R_WoyAFiOL ‰+E,O}+) ̩Źx1ǧs#$/FX~wc"# +ǟVpDҠ_Ӗah˶ ˰TّNO m 2Acm Hw0վ 8eC4f8=̈́,FWͶ*KH<L*ƞ#WsࡠjfȌ5(d-Z/d~{^YP ʼ %27Oᛆ9V\ÉHC#9:Noh?R]; vxRd#T+pJoe@-X/S'nȾ2ժg>.@a%B*$5]#O #~0S'fGoK2ɼ(Uȟ͆xHY"PA40h4#|*VGDV5LD "N" "3se8iu##gn4jMIӒ8Kw[bro.mϵOL9OI"[2iýa0 Pb娰sr# +Lh#!9qe C"(+=ë)\MHY/u APdG[ZfZwL􈚙9Y*ZTb*S ]Qa1I61T{7E`a&zs=e':I%vo +P!Kmq׃O~+e d +wvI!V,zF3f%%Y UrA?qD?GeEnJ[I(ba!ЮR%;62@%2s*H u#4 ] rf$8sϗl3ezq#3RB16 +SD_)Y<,K"+8ɓKPT!mFp \0da坔32@me*N 6?o0W@ krh8XU/ĦT$g':퓭]4\4Јa3ß0'SD%4J1,+z%Z,$|¨G,W/m-Ic-H88C0; +YyqHx$**CsGdм&P\/)FJ}NK~񥣗2c uE6N:Nwa +R^|؈tƣ ;ʵo%dmM8H &^()'-b +JCVI yp ɃcX4Z +jݏj5]pЮ! XCʁaL3[RA b^vqw /&Ȫf>DQ7# Jf',6'#J9Wݡ2CoM*N* +ƪm5cuʬ^ s0HbRզ^KZx&pvēN`d)lzsql TVJIH%Ph8iIPT eLS1Y +Pa1JiMp~r l +i{3@8v<0m攉*kCzeF -YPJ ?05k =D8$d3ymagE $.FLi CA]I1Ur }%T £؁so:"- n| +zl{*u[ ž3@NZDʌ Ev+L,gPbxɢ0t'\Q`ԯbwOyWp3!}8J b[ؕk:&i*krE&"LzeH{YDo^8ғM«6)IA +Z{bwH4 UǙKk|34$X +}d¯X_>.~T~86ZiY5K,VyO.zOd^ɳq5B*HmVҧglCOKs)H~Ȩn'Z|o$ ]Mg'6LXH /kUUl15FEqϭyやfQI™Ǣ 9b1JHI Id'0YTS#_A_VN$eWlJe2_A/*\ĵY0JBaeNS6gW~r 0`%4^H=I4-x$'s:K\:$ =ɒY?*C+NA0+.]qΛ^Kdi/&}y r.I1$c81') +O @>FM[=CbR 9 ,ZgH4vTbŤ *ZO§xMQ%a;G9A<>ւxR-1rޒf0"̻fE;)~96bc3RάIx31B?Kyc""0&aPfRQ)zn1PjM ~w~mR$%ym8p(GyQ<ߓ+[BW +!BjGt 9B0LhC+oCIUOր~iH?]zWTOiE~>x5\ -",OHeUlX2Zi%P+GDnTQќ~oiOh߻'zAS2Շ!W)`J^ǽz|y.{9xT Մg%beB+x򾅰7g}Y{1=//8~8~o] ^0)>PwNWlWsĪО*FNKqLۄARbT1>3GU /*6Ϣ +yB6Ub)` g28DƯ:m/+x ߡRb>jiS׳mo#gC5I򞤘)j4ޏXES9Sl)s_bKRLa+LgTe!O (I22jm ҽ&/+4#&3]d̾g^iaykuCnD1CQPez( (F(gWT(+K{J-&>x!vsIt#2PW&sL=V4CJy1!/%bJEw H Ƕm+KTbOߛWkB.l*]6Y4FuY9@<^*Dh.N+@-d@\h +!$0\vtK k"o%:JlEdng[hY*EM,3@ sJID,06jf`O!(DR`NW$`g/:t4R(iȈMv8x_ex6.Bʃ̪ax':Cr(+S(u^d eHv Lzx/~K`tw+DbK?p"QQHT`LBla9Hy%i(l!F&NOM{TK*=*,ƗB/r0Tp&δ(Zd{;LD@1A/c΁&]([n`b[=,Q QdwlKm!%2L\򅙀8NwBqwbi݉W_m Z)Wڽ!Ah5+eJL8`4d`R12u"D9|%45PΑXWssr@NBCB]BRi@%Qx6t,1`FU 7dhJח/T'i\['EU(fdMR|}Az,^3Xk`=P1Q'o ')F^ā;usRپEhf2̤IbGv4tp} *K)MV zI"Kjk$3c-[;~+'E[eّ؜yn{- EBn70xȱ4.>kQfbXK[L%k9Rk942I}dU}F;3T Q$쬟eȠ./6l %ojTT`5}-;( `uMBu P"P[YHzVĀ7}*]ުBI@-a8F{; {q8V@ 8qm #PF]lFXbbX.1l߲],-*[:ZSkH{ o`/:JG>'Uh`/^wOMXa-wN!{)53dYa(N(mHHUuJ;R1DW`(w@oz:8Xт9Bb[Aj.g9y…Ҷ3Yg"KiC@ @B9>!F]F4LиkTX + `9a08Qj,䃊E')g E iHE2L6ES_"WqoJy[1fhs+X؄2xq+>Qz="xzP waA"&\N9 &T<$q XuĴb VW"R]/ǥEĭ,IA63nxp +mtaDcPD;.WM $dcXz!|1|ԙ!{f fL2w*"f f4J! \!#@3[LGLFW s)_(T$zGH/5Jc>@bxu.lM~ިm!A# +0H,AO6a~PvUo;((pT%UBdB&N33#'OͱDJ W,E @zl\2AҐ$,Zb!hrϐ GB&65Id%^5cUhO1)㖏gB|{Q_%VNTZ*~8t"ZGL(xiN$#N#A(7$wH2@ ń +>æv:Be%_䛏qZȶN it]~=q+,5 Fwt?*{Y9g[v>6#Dc$-=52zVO_4L r1vȇ[beN@'Q&͆ :I Imo/Y9Bf@dvL?S"F"ɧn樠m6qZʪ , +$Z>XS 8q02nk!ԮתU^!<''hGBƿT;HW F:u7 '#lM:kG| 53k yqdgHB6uuRmJ^ {%BKb!`-eAQa#xNN#&mUl$;㥵ĺ-6G|T68PM7 &Lpl{#gs; X'Bu&0J'j#Xr0 \0-XkSjN̡L>|^|H|XxBؤ1SShw)BC"p\Viq?,lAXʇþa a70|XB|X]>G>,0]d*5^ {1!`uB\FLQB0j@1զB)i"xS| ˨<{!(>K +=LW<Z!c0ݭM>3#&߇2@@]:,3[ӼE`|>reS4A&/7lF>1v!V[QwJmbzL\y&yyeToIARM*0uI8KAi:hڮMT@)"` pX%Y D$ˑ ++( )aa]Njђ`冰"h~bd0=`〉#:uA2՗ $ltGX&0 +9`39` +9`rlJJP\$xnZ|1%}RʉPĚArBD%310BBKce:ˆIbˆfZa¾a3Ca `rBfBm0F9`O3W]Y D^.S.?Hwj JoU03nԔoI{0b%7"+ xnFA5TE"Sh"Nωjҹ >5bJ  T2m~f6ۇT +FZ JKmmK?,ӧz\vdQͲ ȕEu +He)EY^-BB&-Bˬˬ(€d-j-jl44JE1!ƫ'0&QȠ-۷7#C+TON]''(d^6"vvf[|x>i;eh@6:N:rr,@@ +U)&1PB?e6=ƅ:~6\ju텥#+(~rWw` @:gUؔnJ/ )"6!ap?Rjԫ z'#dD +d0qe^,Rg;QÇw 52@I\#޼85f/}7ƑkYTӗ@}#t8ZHaM"fi s`aM3VF o 4X i;[7ƝMeh}+p/Oa9_IѲtIVݣoi[!V;zJ %)>OƉ[߰YQ%c)K '(l +J6*z}/.DNvXVİ0\pw|q#Xc2@ ZiDF0 +!FCQkFڣ9 s׺OmfT]2?%rB"I?%sph fC5Z)w݈F3#g""PK@`awW'*RćR?ҧISZ~%đ`EhePec!* ,:, \mUq!T@"cg5C o$2$I|JSpZrc_WJP(HB +p:$0T! +0q70ol梚a#YYc$E +4Y蝯i;PEaͨf % |"0!P0i-wXNPQ ˧uHģH ֓~aFDh*BBFYL*gE 9GPGŒzzNihOɮ#6ŝ)?  eIlml&7DՑBx1A + )6-Eh=s18ՋQqWFaةSt]Mw2hQZcp* IVI.ɕB6)3Q: &3KI!^tԄdijR"P17kR%shY-\HHd0S80$!Ȩ&XHg2yO,+1,͟I̦'K&"s5Za9ϙ.80S4»,UMTL@}Z(pf@ѡZ5=a-`ԆFVV}9 9ШA)Ɛr0QYDi|Ci(V{&0_N_O]ĄXCr53NN +[&A90Hbњ>j?ǽdP{@fT8$KG߻_%K䰖\UDqkW+*&* :*{xRf[r 4c+#F%6T%"ݐ'ipYHXhcߖoJTtVqGF|I+cpbBl.](_ h&IvSUXԲ*vIEmxT|8ksA{[s5]qbVsqU8+76=d@q)P`DְRBRF2zL<<ә4F7*N<;d| ȷXAtA2'-d5#hl\<=TR= ~xJan~h>F+C@ qYE26GBfE^&>jr]KSh!m߮)1|s=W0IlRfCQZ!T ps`#v yEL`"/sIUVwCuZd-1`A{ U(dv0^.Ҥ@H*wbÆ&}Qd2pgT$$SsJD)SdDI]Z9lG&WkeY_Bx3M!|ip#FPΗyQa=`Qf8AŹ侓*azb^.aדs1 +ǨTR@٤w NSuJ+oD ҎJΉW܄PB=4Ԓ^N/PyZ1Z~lWd7tmPVN"_- /X2=XyRNe4_hcXBtȠx.JMfd/R& ?X0[jxlC!7 ho ; +=$r%egJ;=6GO6"ݩDwd[y8iz.Ծ'foc‰mvbeb6N21&zwأc(h׊h>xK +u)-:>/2[$jONяGbE I [ #֞;!ڈ%<!kB VF&[U܎P<+0<}L~}BF_lA^?1DlD`D  +D, $L#QV}(Z ,Lu$0'&0TH` 1J1 Ȩd*!;A1)NkA<"ލ wBt8Ek@I KAY"Ob,Ds*}T!4 +bu;A,M+}Sxa#a6ay~X0|$0 +u"<.XxaG"Q}Hc\mm:rNaleaal0˫0)a& XaRaSaaaDaKaZd]q찁HTC0P&vX;>t$P<**.?T̃gs(<[ +hRo2@w[c#pZ +$6T݀+8RbZd&ΐN)Yy vYݨ{B  Lf6MfVxUV@96[{6[C ^ Q6aA`E +i*ԙfj6P@ۢPvƤ`VQL+LJă D2ƕ"T3R@-,.v Aj-EP֍PB>pD +S*3xl 8("C~oP; AãZMhT8ŏ9̈T=S[4MܱȠB*"p[Es[fm|0C8H/PBQSxEgW.y("x'NɧV:DK2 + +y0!UVIdY(hgpF#zGs7B-e Fc`pюup%=hL6rJG%kF§k.H +0;& hh7x!H/V0Z!^,B UTR%F4H^3 +_38A L%*5j OK*. Ik ~RNl: n1Yg4/YZыӪ==3S5}di% @ʈf0]b}/qB> mζ2ްQ8gg} ˥5::lATv5a f@^ fPqx!4@f a'"4WDIu dAI0!L7d4'l9LAVDB[Ib|Lg!"F,K7:j>5^IIگOEF^I9o6<\8)[g[DZcW5" rghdg +a #%SB$?Z℁Y )Q[WF`{ׄB"Oa +bR$LK! P YI4~BK-;"2<E= 4`\"XnrHrn5K<0!Ro$cI!;E8SYT@ShU$3UIQ5hE6ª/"ެOq +Pd4rNG+f_vkXBB"!l(䪹)ٿRDN漱ЦK)>S@'"Sa4 +*KZZC=):rX̢,\d0*gIj3Ρ*R{ "M1( +Vhdmfy?` h,ZŖJVT kV<(#lƁ(12k_ VԪpsIrq=ihЦL_ 8z݁l#ɮYj֐:jY8jYe!b~l7&XM$aĀtGo&=᪦K 4<\d,-s(8BJ;k$kVJc=y6[-%Ec.KNǡ@Sp(^hx +xq11*܈^t) +wfncTȄ$D ')!N!B@!"ڌ2ݪLL L"(՜9m+Q^/^oXTp (IXXB)%d#= /L.fЬ.zA$s-gVVoC{`X2@`DQX3aqKȘ,v<|B9bQLP!65;4iϪCfM HElJ$<XK ) ߙ/0bY[#6)pž)|1`ű7K]HN}g8eM@~މz V3|K2AIzzs.&'(}Rw*نl+-kSY[Y{A#+u<b(Yt]^^ŝYAԆqoRy2x# +<[aBУ5^-SZ!HŻΪ9ObO{`{enr+'7'6~v>>N,4{b31n۔<WN|h+>X@'-t8[caў$iĸ LQRDb\!&* HlfG# #60CgBV`T`XevidsE$q5i#-" ӊ9F.bF>т.b RE}DR +LTgc6@(Wk\UClqUʆ\+ņe;\\ךtD~!桔czi\O'tB̃؝sB ,!b!H; !FO zi$'PG:r@|{F ̈́fre? +.X^# 2U2.eHH s j>'÷b,ۃFi , $0hb1q%Db b  w VKm@0bgGX9ͅ[Mﶴκ%JHQP%L@WbKJfU.y^ETƇaUa#1aq0T?;Rxa3a0a,B,OiF +xi7M\e!GV骳 rV!`#DLS1x(0x,x<,WayH<Nz4O}eFjn}3`#~]{?ȁ[‘fCѥ s]ьT+%,d,5UrShR(X]xRSsLndC9;&Ooj etU➧Z$Hi{|8 %:Eh.( "imVQoy OX#Pר i(dC)A큒{sP3V`LLTIЁErr ĮIOSZm% B:0'o,5,鈆[(i'8=u-D,ABASpg ܥgY(-U_v&jЗ Q " `^>j\xnObC + 84Xͥ$@i2C20QIn + HP6'zO2@@K) OʓO@'_9}HyB@W5#B$™{$"h!U=4'aD6 +YҞh#u,3@Vght'!*L5rE_rMw׈XIZMI%@%$mA$4%'N,INhX](10`j EXP jUh+^ATDV4N/$q#HڥDdLth"vҍ, 7*!.wKUԦn v2 &( P'L/M!SWA!Avë.3Y)b^wRNA':j 4@7|`Ť{Kj$b^eP̜tħ4*Gu^:w"ۙȁ'bˌGSBcDALDq+'щ,/E) ̇M7QvKG/:t !(&>%׋(܌>A7IdqfU.vkf[ౕ^]y,4bn1(Էäg;d[A$תpT}hO^4/ w_ϳGݫ RB=tM: 1TXYcm^>,&fJ%yqR;$!^yM:/D[跦xR* Xm)b3TeXO ٷ5Ξ\J;'8ʓf:"N҈&!KE77vF2(яb'iPy0M79*.eYkg }'A%pF "?_V: +)6X`ŷSi- RWɵ:\LU<2mu/T/ԲdMpIPҐIHM*D*zipQw1I84V'XCQQf$5cݚSMT9YzXV$:XFH\Hc8:n>kU+9T&nXWbxi#&2; J,N61-C + +%va%PQJ4).1%.1(1S\XVJ"ͪ$G+)󈑐vHH;b"11~) Jǁm(;SgvT8A 5(7EXݒ#֚qXňa65T%p^Ĉ6È <"HDlE,US"i^ +X!)B R`Yj+0lP`.U'sj. ]Gpz T#ĖgĠQ匣A b V@Uf_v +l +][9MvJ3<hBlBk7!v*!{qV톘*>CO !ǫ`4-[h2LI8 +'%A^Khe%-8l$I +V&+ #XH=&iL;2 ,C |9A_$0,&>jɄ%0$b~> HnZѠC0286E4=pyTFJ&s3Ek 8{ +=!aYb"G,*1bX(.T XaNNtDj@cy3k 4&Q+:8/b$ 6=T'J`۾2q3@ " ˙xbx=,5v<s<"yX"0JaUa0SNywHyXyXOo3Ƴ)8D2>} 5L?KӼƉgu;"#Յ{EWjeq 3EI8+ IʅBԊcᒱ ]A3wwn+"b +fpepR3#EVi!_&-A%Bǡ?ad)33݃ZJmMRUaҬt A"VZ4+5Ki}Q \;`g .`./<4Lߦ`y!vPo#L@}_nD>>QB2Գ%/gǸw p I5& <hX%Γ.P J þ"%  6oc6D_8,簚mWZ7 ߬ts!&i +"L҂"0yUcrJ?h\ vH# GpX$$XBFۄCBp B ǡuÇ8lp47o8"t(txW_Uԇ#ˡy"0-Xr:XXtid0 Ҙ8jXX/\te87Bk)׻׳`;F` ɠ t1$t vwK!FXE`H b2)|,ทdI@H~a}J7"H':*ObTW^q YHOMS^%JW1{QʳEE2@ MoLO{E2 ez +I{Xy&f4QN+=*l&&P!|N vዂC K(Ud'AĽ f){$ңDNjµjՂM^'# ǰ"1F@ !HnP?}ԗzhG*<}#J@X,.|7d.&'$ Llb@bԈ|_=Efrhnrz\Kf{hB! 8X4KV{ %\ۥ(ӥ(q ̉ e!J]΅;}aPtGcj&2H&C';]*VEBJJsOݤCBnTS;`'!:P~B! uڠ ϗ "PғIE8ktBu˫vS@Ch%N7q}cڬO5MNS' :HNpy,d9tDiP|y +5$Mӕ[ΒM(hP@ӌk_I}ay1V6]s4KLv H>bs>l2o×MP%1Z\N kw( [6oښT:FȺ8kAC&i Q:%J$N-+\;Xeڿր ~>1? j>M#ptބ|)m&F7bK3@wHޔdpR*ԜCѨv,.,QKtk-8,X.J( n /e)c1Ef6t" #RL7N$3o7E}6'5'YLMsW"`Ta!]5ܯ^vKEab3@Lbiy\oE\-8/Q߼ҒQP1g!uu"ҍZ#YElw/XҵMׂvet] /֚$J6+!DF)N l34 f n:4rs4\RxUCyGы92;2@r*Q<\!1kTq&QESi{h*YIE.$),MS,ꚤ/(V0&h)%R۱8rW2nN:ZYA27XHY|1h#c`:%6Fzu b%@2ܐM 3@`yBQ삇p)Cv%n@nkMwqAس†}ם:T+w@3UQ/gD~3 WA":ZUlDEωqb%wbtT&ҕJ qC/oǹ Yp \0+Tl8 Ub].˵} +Yr9 K=ab1f01<).ͼf~٘Hb #1%@C#!-ɽJڍLyMw!29M}8<:ϝ"diQ4FL]F̠pXI#fWL#ƺJ#H9#?tXaP/b ILFGB#b"b^+"b(.ɃYJ $4t5 9gXGҼ4O ǥ6KW`d b+O% bhH X^*摨N)9((0TP`cIV`U`]L*0m$6@(@6a4Emh)tjӍ')ؒ * .#)f7Cl2Z6vb01R1B + ؞zCn![h!&:Ce ϧƲ fUi2i.W) 8i+dBI}<*1hb2@>FЋr.=2 ft:e@g +uw1A,qjCH`1hb1s[F@$K d(j)*(v +$>Ip&,&,KY6dv}Rk sLY4>LƖLHa7N|xO#L4ał $H@Itj Ij ކ U<^xϚ"T UdxTot›{.\M0%+=B h)0 +I@l%CI !~DUaT3# P"Lt0pe#j3h_:li) X2@0TĊGN; y;UjK6QڨZah/)ƺkJ[:'ЇHjHjHhƁe򸶩,i+pb' +prR n ic`.@8B<\+p*qv%t!J/Յ{0$aE'\qreqX[Aflju`iм}VϑW?/uxvJӽ8@,  /rSFpK B(R|॒PNVEHc1ޖYlr"tMY2]oKgbt7JU"@1p= <\B\,^}ZqhQ>Ec8M @06XDEh/?Bv(J1,[+Gr +A2OeElp ^=2MVgFW(|X!e)Vxay&(VmE95& tDI A,B{'ֆ„rPp8]m#X>ߓQl J=v%01Qj8*E]n{{@Y.FU 6G2=9 6å}jY\'G:9^TZ/'h +i&FU0DTT hQ%0ŅbFZa]ČuJBjuE]2NIvٌ$η+AuҤ?(nTT%Q&XUe{qb T%D#6*2Z8,tdE|e.>y-F!Z$c%[[$2)Ke5U9hn<1$H<0(4~Sm%TM(",ΑY3_ Xa[$pM^MS0Eb٣@/i ub"<1];1311C#wbf~'>ӜLHg8!P=P҆PCH7I/IA[&WZѰ f/O1$C{ +y HȜSNc4!x#)]/@2#PLFx$@ +:Z쏌d㐦N=Ǫ0Ԯ<"<]h&l8Vu4\J'' sf8]E@>C]Csy+c#ŗ83Cs2h$kN]0Pi N<tXtRntTE*mۻ"@"[eZ\vvX!mF%:ÖG ~hdu #K!8C|6ȬXO}>#<'@.B_<(8"_ zI 5_]aYf{( %Ғ$ըZװmܰ 9}[biBztGs" uTx.0F]>:r:bE12X`dtDqǧDo`Uy&$ܜkhm5^R`À+pA1hpF-4NEJlH94[Rfm)g 7A聜 7:I6]= 5٥ʠ2;Bi3uݼC[e'L: +;2@F%g,s+^|LbͪⱵ&c0~Eyqy@NKEti h]Ь Y'P%}dm+;6&2xQV1rYxS +H i%DAFŁ|$M$4U7T'$b&%}מ<m +q1,d^ԏ.qYapD{\!m S T$3@ :z/ ј gp Rj"Pi!rf Ɋ]jb'BEh% +kw _p8 e i$Ϭ%mat4l!6nn$rai;KE$TkR]YOViEA((՗xYS*q+ +AxdXrq% m7oo72i^Ju i\fKۈi|6E>:Yͮww9X&u;L4V,lĹ]5 +d }[簺ear11#<*'P6I~"]}205 O0Xnbpa ृ# !LFh-?/AL=AL֢M:+љ 2s]5o{v> Q*8K!{>h^dѡ";jI7̈"})Xaվ/'WO98.^vvŤԩaT$dW,:TX塚i;)^zi-ǫ'Q0}ݩdeLo#U $'<_(ZA)v$HsZR>LJu{SlƐQNyD-,G)—U/VeЂ8R}վb.&Y{IӀNfD?j3@|)F֩vP87՛6&db)Jh"%i_XbbEb "ӣ1mDŽk5[ԕPԌ# iWQjE"0GR#U$$sk &6uX"TLb ^E%X шA}b1#n戍s6b"Dʑrr{5D7?LW$TXhd"QF;n/ -"v2XDVDqXi*U.bFTa-bDr!bl!bBAHAMĶ2@8,<}^f E"]R>|1+ͬj*AB#]\XΫBQ()0>eP` PP`(\S`PS`x(S`sb. + +1EM +1%}EImȥ!<qK7%lY xS M"1͊A;&_0XƖ$$07$H.g`RxL 6Mg`gxnxйlx:<`\n\l۹H,CvpU7EKQk +5 +> Q*Z ɖqYAl/AOBE}ٌ3J_>`%*b +!j?y.΄UZZ۴ TP(AP +Ái (AOi@BqbgHtm=8hدIO@ʂ!2>,b)* +M:z &eyP8e^|fîϧySv)RU)Abll5 Sc^RC]Y%YdwIǦ{zl 1x8m댾߱zihhӎk#ƻ:E%6^֓Zd۳ ]"fn&7x{ BԆO2zwc11$ +k8s2+UX,\!$kZ2~F#O-˕+PXqaZyv@Y +kJYc,=2T*fِL²)0!Hf`}0j^2m*ρr!̓N#80Ů omE470DOX#u gX7=ECL߃MX4IbhRͽmds^h9s +bڳ#ȪgK'+}du@Twc3 !Atp,왺VR Yc}?D]Z!"1g Gp^ȧ|,)`} ` 5 hs&]E<1 _3c,]ȵ^~SugٳF&PHqd.dXDץCM347$π'ineUVI+0 ^SYk0$A'*H:1Ç`hUoO?U'KViUlG4/ywL4c5$> lL-(.g>stream +>@pJ(e-?u*Q{"B_B +# A=GBDc#Xk;뱈שkEX +-]?!B]y3v"48@WUB NCIȿEU.% BW"TFB*v¨?ek!M]H_p>/ZKڢ7x{` 't +or]@M6 3 >`Lhn ./nHH1 Ph0pcЁy[ 2Mf(rqft`,9(Wm%?Cs]R].|RUq gfoаǒjqBW./8Bzx/ + ,?Dn@78:H"f&`J+Qwi.&D%D1L]aո8(BWbtU!9AQ$1D2}`: Y(@hїTVM sI/J杰V|I dD?4o$l(q+P<Aⱬ%t,Qb%i'QːȞ LebYN^]|7gה L"cdJ`-L`(+ʨMy3eXD ͣZ( ˢ˯:m'Yu+ZRS@F TE[}Rh)KDa)hvG$k p> @t[֔^iM)C 7:hA}G OJRe "Bn()jwSlWVj(5 '{H,D[4O6)FN5$vp ź/t$#P!f&_T񃀛 ex;  +D1;Z`;?XoTB`(吜&Z%hLQK<-AmV$#ṇXX)Q6IUt< bNIYg 0C>d.!ZŰrs8U·#(J +H8ibk_5USFчT%+s jL;eD0B5 x[|'On >H$5(|ExNm\),V1H?tXDaT5(): ] `;@hG 801hVaġhTR-!yixjn>Edsγةp?"Nŗ\]^}hWw\XI\!rfb jڷ{+Qp(q?<0?s2Ts%Y)tfiģ$X2z +(u +qŝrXAچoh-X}M*gg@%ȵP%ztU/r`ʢvJ!lC|ERLkp#h](v"1qa= H=|R58 `/ =^j+뾎֛Us_ʭPCrw +ǁK1ĝV<\<*>j{1 ;ט j,P"&ۀ<᯷J($!ɠbU)Rh0_`V5Z + ‰աMPZQ`qP@el:%fLy6t˩ٕCYrA'.lfX]ӥG=55B(r Bb E ? SRxXYy^I@d.r(W;!@X+G\JfMĞEM\4#.AB: |1t ȗtBOP}\@t8d8~wז)+(uX]f(gh1}s;.,1goq: 2h0AHNؓkd +c!mr9C`^ѠKp@|*RJ+H]x*cV*y}-|-r_i+;pO:\W*QI[ՠ\ǎ%8(Ul4]*̚xnP%ފl!X!ފu Cf"T-ƩZ]>އE +Bm4 +ؖ J 6'Ueg)@VUëN!I`JIzI[oh}]uNS2˔A֫E˅CE||%Nލ Dpy).A p \ p.tժ!kA*O!R!5j/R B/_%so."+ۓYE*:l3&}+ymvr +Ҷjp,0\JXV, Ԑу"1DpL> e4*Ncz +,Ld3탐A -G@,S4k2 W5ߠW3,&Nbe%KX@@@vB=Q@`]E`'1G`xK`s"-*͌N`Zl@p`l e +0 +X0A&hW3&?륉jȜ#J?bln +0GfktV^,a8*{Խ`]cn:f*U4)C0%V4%y2DSЪkbzcb701./I +H,sUjJ?d^#P,##Fkx+/S'&(qeB1 ƫp+<(7}* v`ZջDNd,8Z1ӎ + SĸLBLՖ`,b1UŠ#E!-VS)aH9`!f4LI }#ľDh9tb1قE!b 2 &(P >4ĸ@ ƪZ<?ZvgRӁD dE`a^,~>lFKa%.$0aa'a nxX96ϓ۬N- \dy3maath>uoaFxn:AE2kdiƴmRNq""N$> +"z23@,vtXcvrͶa0D0Pww:L%w:Gt3ax;lf#sCMec5ĖC^)N\ rNC!_ey7"!QucF4 +0͌-`q =F,+,Naja|aVj08Lp&qax.a` +suH`8%=NH+:$] @"t@P6o6,8Lq9, 8laj<9d29 w;iΎ_0 haV.j-=le5e?6IqjwC<-*p ](+(eȆdžanˆ!~a/2ް|Ro&ٰŠaٰn&r G6 &E6 I7 PB~Z~Vf3{H/3";.ge Mu59Nb4,VtFpY}䆵q^07cv  x Eˀ05qjae6<% .skatV{A,dKwRb|PLrQAFAr# +mjݻ69i L6|45ޚѰh؋O10L*ya66Yd M [}֒-w KwaC2C(E' (cjOTVPQsu0A:/V {f"R []Q Xu0uUxaF6٪w$e oU*sP4.{a{Ifl fkɹĵUٵkfԵKY.|De 9׋[ϐ"c1y \\2bIPSL. \H7Y[$Fz5 O026|p$2_6ˮ%hRF]%70f&#ԔލX/X Q; \D6\bj6yfH*-+*M)6+3â6.04u.\j (qv);ܴW:|W:Fݫj2D# M<+y}1 +5kȚ!s3M.`4s+@쬘9Rc?{8.]$pEX(H١M+ǖj[QH+%؉g: к[\} 6wU7SE-.I`J9OU(d 9.RCQq^Qo\̉G, Oѱ4ǽ^|HiAiA`f 9 8<(3L;qFlELS 9 XPޤV%O`Ra* j0tK~~(?t_I7MVELVPU5 AC 1C*UM#*<,2=LkY EGz#ƍ%D 5KDҊR6^10 n PZ Tv4EGh 7PSDp. oۓ+8&u쟁kSqF +wFIhSD6SUUbV, *&1u gSF ,pXo& < Ccl2w3'`E,C#tkLuPNR_ + ̰25pg?^vTYSʰ{)%VV8+BBOp ֙63H0<@ q)Y( +AlS*T> 5>lYS>v c50^ :aHJ&DkhgYRA0Ha0|y&>l{9Ƃ[4 =ia)N!x0yXu>0;q3ek-lB-K#YaMcjMW_ѓ))n! e? -_&XvžYm1cXet!F{ Ć1ĆƆzlū.%15#BjLgTJGaixv~W# evwA`3fL钊W* E&Mtv,A"FKM>BhPR2Clj/L^^؊jV\:g8DL^i˰%0)&6ӅXπ;E6 , w &ʘfY:^f ڑ68-&V@z 6G閧4- @F" K:J /Y\ѕ6 o3xm ~/& vp 'pp&ft( kF }p:ZJ6/MӀ) )jB+ph7H<9ZeD~=(,;j*x@`8 SBmp0 D/+vgv1Z#) n[3\mcl-Xg,4_ 7!17SKypYL-VmZÁ FA\*%Zh鸒p^vmb`ueqS^1B>-Ѩv,T8$~N(r0WY%ě AO @EޟSB +T ~a(m T$vMk!AB>||ߧt|cC>||(^= ! !"D!Nx~*T!rj>Yb2"҂"D'5_ٔ&9Fs!ĉl\2qΑRWua~jxQ98!jppțBT#fP K|aL9[<&kj5>%1DD?,q6R9Ⱔ9" D&O1sr6,t `d + +XE@GAh#a)~4?ϏnŏiďaHFvI.k#Y-d GP5GދVQ%A'K;H<SC vuFgFF;cA([V =hx+(b fEISGH0$M $MB šYRI O!9A'?- :| JpİH5SUVz Ý 83.+Ҫ>ȃadQ^p7{ɏډؐ-tvE`FO<ރeTU@NQu\L*7q̋?X;Fw VwgigGD42vl"59z{h9G{SbԽԝk-5?z>U UK^-VɽZv`N a:z0Aj1+aMYZ:VZ: +k:lWKUm Dzp,᫅lcVDuS67Bm|Jyo؂N#Nm>&Sl,u4" J Ҳ^S ba5<(qUԦ57Ӷ!X#|` >a :ȸUnu-5W7qd۽ūJHOM)5x-\.%I${nO#$ayo 7×k䄰u@Ur|z ^YɦP&2) ᲏lbWנpT+RiPrD`;$y eCe+d+5Y䧮2. Adƫˡ}x$j.0 9&vЬ+KZț*>.$0r_Bbn~6Z7W4']k#e\57,ތ|VmkQ,+gt ^g\izp;,VG'G}yD Pj4qG 9NEIњ@lޱN>t`h{yg@ @7d>3Iw1.tU"%MJcuj|z :`Ȫ +$}7V0Z/ v9 XFQ؎9*_Χ% +m7x\@R,: +fQ)` lC +X;Ņ.`נ`|wFI +UNXxKI TX?Vd].thg:Dux +!VbCSt65YE +c11:M̱L+u-P&މ5N%|nƪ6&7|> aa0F0a0?,T>G >l%jm,v _#52V3nCyЧb_\"ڎ4D!pj8P"}px=L=CQ'Mb J% 咇e ø@+xXta%tk82p";FH 3mL{%s$BB(0,`7/eS;,iua/'0H!D |uG:,quX0rc{Pg Ol US-~O»=1|De5D*6hfR6ː[M϶xaTkT:b;@Y;LLkɌCQ:h.lZ >a:\F2~h3戨Ռ(E0:S2*MXM|_04"+9\!S-}'=՜_Vt` +Ɓe\v2JT!BapF +(Kg$SΠ/P>`ūW-_2<;S@lk/4êh lT F {N[̞ G$EX'{+W)]@4`S@li[TJ8Rir:^:qqNQ~o\ |v6fDюCu("F0Ɛ dÐn*&θSheT(Lΐ + +T)X!7.Py=mQ\AExqCx9!9q ?]}j uyHz6. Z@zEǝ 9{䖭B% \\#a hАoo|]z$6­!p/MCvxrpP\tۑ~8IzRG@OR%d ٸŧMHzl9X0yI =CD4d Z$-L)`"NCٶ+顽렮ðP{ĭNN| j@@C E +CN*~^/<"@rsyʦx:d`b%#51nB(UFB2i5H{ޱ=z c=Muϴg&=T1-E#\w'tVP1"FDFG6I54<a9irx(7c%2A(JZ ~%&:)l{wWgAe ȧ⫔-V2#&HuKp^1 [`TP*ɇ"Ay:%D楩 <#s_i2 eX/q5aJR'tZ4;' A)rW*q+D'Ebh m~$aVT C8/!e)) +*` pJ b4((#f8`AeHȐʮ}INLxˊifz,/ysIA~qVĎ\DDO-" 1 })2T NA0JE\zEKeSY2CA٭1. ѷ@AB^z @ +Jp.MQ%ZȕаV5 H +p80<f'B-7xU( DJ TU. .D)(>H~c +^m pJUOp h.@ *z $i_C7pOZfLkLH& +6hhBф A "fw +%x(>Vp-rM7SIUKYꭰYB"w0iqޝD7HDt_DtP݉8-BwYlb[i={EurVN넇¾[MZ暾NVTU.@Lh桋w̋$pW]` ED$FrE:+"6UrVZr gkb1Z@ >h=ͺ'$P|@Hq)y*aw/A; ^yB\Baʨ\eV^^YH!Y AۡmmfO%zw5lcRvcB)KN#c,$فʯ”lM-;| +;Y-mSeO"I=tkƉQc'WN+xCfp淥r+&8e4Z0&"H-,y;+FEtӭ3ya:Âv_O*Wb~O.U3!iӅ=݌;-o\+Ǯ8i.f_Ĉ@9sNwK=zPO G/3Gg䅆Ϝ +6(Dǁqk̃ IENVJo_#fY JbnLGچl&)!V @'ߐic.f+4VӀ"b> + .)n|%@PyMQ|%L +hS* (.jf*Q:V?ou||sr@"6ɽt9*j9?"%@n*|㪆I7E)tEp4.6eXթ*b +K*"+F;X5LjGtΝIFxR$lG!ჂG5mBMmhi' 'E|{ɮZEN}rz>RZ{{ \N.{%8A,L59 N2;@3Lz"|MKx>l\ض8[ +P̆%ʛPhQY=j)]!O39{kyJO̵EN _\N '󉕴߈-lm8*tb;bW/3 E`#O or<2CHgt|@yb+ $3CjJ +4KQel +cI329QgEDLUICx+3?wbbZ؋ՃX0Ybq/^.DW(PҐ\! @A@=Q1X4B,()Bũ!Fʤ!fi"|(Bl BBL~#' 2D.>=^baAe$ +FJX KQp UP~bf;,:H2(9` 0)Dh|MH]g/pt*4s:{(.3D_x'->&~1=|5B  + 'M5|@;Q\YkiJHT-U9oaJAP.P_8Z~Љ-b s:pʇM~Qy 7"V,D٤;*m%S1[B$:L@bIТohQS Rx4L%j&+aOW6 +e8l`#HAAB>#l( D,Px ^bY\PEaB+'M#F92`N=|dnrSNӀ/ ypVfc^*RTT;++V*bDZTp/!Tb=GR1*Cƌ'-#eP>xT_*4jdOOPm@Av ZFx5ˀȑS2!hðJW ;"hT.kƭj1UJrR r 7]x6N=+ g/!no +5Iqt ^ u]$V̯`2gHqW2Eg飼:̓"l:zƳRs +fN Kj;\" + ꕵTu}5,h^_-Smr 6`BPe.3*3oSk#7D+ +"hZѥ8ф;gg;$(u8L3y!\9%(8 ]WcWZOp^ +yXgupJ::QO:{mb̟/Ha";RaIFyO\AaL\.: rvsQE-"P |P*gBZ'p)e$}+1JSp5Olձ:q$ g3Qev, Z\t[WTF`A`69#e9D"Àfxi^rԅO&"˔jjܫvb3ф10L X*0`0 "n+QG f`$r#t:/ޛCDmc 0`/&4`0]`#`G cv2O>T.\Z20oq\W{P7ɨgQK#?Pke#?Y(6z4#LaщtNdb[W/UVJgIĒmtת-q`/6 h]Tb\e%6?J%аJ+i&&456hbhb*)1RbhlT!#a!1Fg҈¡-([lPnuQqHS$A$f0L#&k0#ޑ;Vp^A+"[3=!Tf>WY$x:PC"&bD2 DLhgF,FFl e#+Q؈m0؈QV9z"XY3,MƯdj 3'eh!wxdдv6 +Χ8p.)IJ!Oiq"V dpl2 L +2jZBsgtiKQla6/ĜƩO&/<[OwzT2]$O lB#+lNNjgp"TZ3ٲkdoagi-I9)B7.p,k,ks`N_̙ 9Bq.Ӽv\b[j*ZI1Q&ޏNâ(N\^b"PZm4n_ѭc1Ѝvm#XDX@v8mIa.w5 tv7u*7u;=_[ "x>Ҁ'_|uߌݮ0#4Os + GP|UpܢQ#+Iy$#hhU|Mt dtBHtͰ0u|6=x=EQ} X@X=م)jbq:kl7cRd3&ipd[  )OZ[>F>9BvxB+g⹪⸾.TO[ort +% +Pe׉*ghB 5*N>w/aiYsDqP8jFbnu ) AL:x݄ko);I +),Vp(4t FG Ra80Am'D$A,4ɮU:HjƐ*F}πztt HŬl&JR$JrK.P S)glCukN:\)T00i0T$z0߃- _DLp@xbQ4|RL0h&zN@ϒ[hMӂIː"uP;-w*ir Kkn %&*JGIX$'dC[*\|4WUm2P#T]2yq[>EDzŒQ7ƴJ0Sau zL&%tɦX}\XZRbAX+-JEN3+-ЧWyf W1]@|P,P RUCѦuJ HG5:HqNs9%.iC^iRG&MD:%6'!&-iKvIALj0# VGX!(b{mZKp7`5:X:,>Rt y RRn"-y:a+yN()rZ6Dehُ4.$$~R)o!'n0¯1.)qO6@! +Mj9ehҨirkFNzPj2x.0iJ@y* P2TpIY///fQ+r >YV8%{wZX(\v;$"X"K&s 56 +b"3a^ѹ.0plRfUhWdR-9?G6O?EEua ?Bɣ'.$SD26Ӂ1lB&EHGX2 XXY :¿8{JC'E#__Z}pt(D"$(.W٨<U>2"8|d?"&zV +p TJAcˬzQ %>i_. +,~SL.]7C.p "r»QTZ7Ԟ4oe 󗈍$4GI14+p8b1Jλ=թ:eJboBCw<,k~RWj?`\ht`'pk9x 68rk$4K;1wRJ,bJ30%`'U"2Aw'^Nb &LZiľ uep"n ü&U{ ²z*6G PoMJXd+ 'T(N +'앶/]%)2]i!&!cΈaIX#jcD$dRX]lY+`^\yGlAEǝ'YI6O.ua,$Yά/ 2H>^4Z,.`QO [3Y1yĐ9#EE] +JbVY,6\$ qX~pO+"#0 !r kc1'yS$^~z;N U+ zک{"?˜ PFtՁ&\V鏫FZ`Hx8]S,}{L^vV]f,N.О*f`#QL^jlYxȯ +䧔DCWK?^=@9sGw;"D{> XeŦ _rIyiʬoVc&BLh+M?i70_BSTmeb.u D2ê{l4 Ղz0UR޷i0 +W3U[!%nH()Q}M_Ow: Vk쥬AWdSK<P9_sDuՎ ܒ_,VR'8*5aL\pAP{~olʿP/ OR TeaˢUWFk4S,Lu)d @tCXL($tOYzqpDN#R LuR` a~"R~ AsI]4%̭ˑhKR,2*(kIgԃ3ÇҼ:aBx3Ca2PG +W|_[g)D 7݌|n `R=YW///Ȅ/7\b =3'G[ D0$Yם` J Umuv9uK>k(X_z +/ˌ%Fuh/f0L ].} +vyF2о$aZ͠/#?HF̹E<Pyj m9lmAR B\r$jjORկl6'FW9-V/%+!A23rp< x,%NU,' }{6GؒlQP`LԆBI`:Q9)űoކc}YĚ7;PjCeDu2u멊=\hL-rB8oZFD_tYU O5?3'1~. kg05Kޤx:$kDO,balWةL~TR< 4BtiGjr?%Lh!U]^,Oz`F ynXBXO߂LUf/,/Ikj|n%iݝ}]v`>Q&::W}~m(CέŴ$kM ՜̸TݪŬ/ȟt_<5+ce!-Os+IsJ^:xJ]kѺiDjJ GB2L1Q|(sIӏNNu!z`}FA%y%?b_8199Mα9G U$ >+ +Mqqip_1ݩ2_%L脣NXX?N͐7h1፿7sSZ)C5euzޚ(tPIt[SL/+y!ޒKK b)LpaR ,55ossƿJNx*lsY&w4`̒ +or+MUKZZx/i0ѫB-%ѫQp>^a׼A2."XxGZ8&]Sr +䭩Tu3H煼!+&YGESk& W@C2dZ,j;q,GnAsG\P˘`Q%!Qz±xLҀ5c-lI$ Dfdc ő7W& z>G]4 +R.E> Һ4jŅT Mʋia4FfeD^K# i#Z$A&]V0Ԙ)g$!ScMڜ;[*M{BNWO':*^|T%qsi{m\^,|%NBr&4+ 'ya\h>u4bpz Q'^EANa}]hp#:QʣjzƨAG.ǧW5H=h_*ˌ¤|pd鸚Az:J"_Ё/$c2롰bS4V S\ +7`j[15I)#LF\hwE+eB] u%7i *IXYt ~)Gr~X1i9 60P\\Zp9F{ +k( +/%lA}a=\-B RK섫|Zm홎rݚBpڿZ6?CLqp4h:sH!,| hT%ꢰ%w1[Wr.&`žKin BRᮢ^ LgF48~ʿQ\H"@< $[z%JE0 .)*I +ఠ 9r!Z`a/?"[=?CZvHB/>m$ED&!I -K$Sa&[z"iN) ~J᪌ EW=/ +*oߴؔE}ەU:.q+DJct1vI/1%BqvxY S$2RfO!hPjQebr) q,A9VE8tޔ]gCX Iξ=755ϊٙ$#Rw3̦Q}ȑPe*n>4@TRҔǠ|WFc[:ֶM,4<1?WY}R)VE m#SXmDIw %V "R~6t)F'#23F`hRFt@* I0vO}ٰE.9VT7RU N*ɻVՖX,=2HO_x \ Q#WP#w\#WF.} HwFh`;M:/pU踊F dMSDq}/w> Рd$C,Y";O[ؘwTz +׽q)ٌQ3Y<'Bo.jj5L#02Jo/F!KxFL̡#Yܹ[ci-hPľmL@8h!; aXGt o1SSjHWq.;o 4D~.,"M+Fo%xґ9dJ (Y8! 3ҾP-H9L$og:jhӔpJ{0?a':oH~0 )0"=Q 6>kR܌.4$CŤy9RUn!?C!`8Geȿ]F~G"QH5*䠓gF$6.GwV16Sl]&(F/ǻeHD>2)PgǗF+Lq L"A~ \ dz[Q:IrH(BGߥ]ӹ@eXub"bH2"5cD?Ð't:xj4U3vbT3~ȯw gVskc: R-A8!ZIwĘ" 0 dьeѾ JEWbN38-mH`}*=V9 +5fEr.|e\vGP\EUE}#(8*<:q;+; +hiZ+q^iA_i\B03 mFo^B.`;Q/AٰT~^[9|,ݨ3'+WB}%!i-^ .B^d ևAU6/:LuD]3 !͊$-Iya59#ڹi2z7F\@u+tކW M^)82#p1 +*3 PXRa*u:ƵA^JCYvg/aq;}C~ V4TsqX (cc VX"YFnhF!R,v w0u |\BDzH?Hc FD(*^* B&4!d @PLTa1rrW.'V„\lKEun;$2JM"D8[!?|`*#"MEǭP Sd8O1Y1UnV~0+f3 µ?2P.B(*|.;CJq&h҈tH*RF&eZė_DR{  Y˒* xr%JqiH!iOh*JϴpT +/KS_F4̏1]41a:ׄ@&L)Nwt`˗T@֧/lԝF?sdߏق !$+uWo&IOHO8E.EvY+0y4D.\Gl6s%w@y4elH!EN!BHgE*,xL9(yri} \0bhe'>+ĬQV=\&$3.]u&uHʩ$2 ,s +E#7 GG`<* p q(r=s*"BJ~x0,J'$5ٔ[/D>! >.:90p̂o%שDRo +,N +.Z6vlzSi+%*x,CSztP,f:U!uf6u3K 즌PN3/Nxzv4P7;jC:`_LTCS~lA=Nn>&|N:~Jz~H#2=|D`pQ3k7dA3'|BqTNS73G0#SOH\ʟZ3N>$~s)GC (o CÞ E&H$ZZj#<+bؼȏE"|8!q\ p.I2ӇO>Uz^QBuEI u<3et\ҰrBVM&Wk).7G,!3JnSR)2o(ãQ랥B$Nʘ?Uyyxm Cts;geQ$W])@{8V!@FU4jgTz  ^ȭ&˸ZYHqxPА!b<ɴ8rҀ쑽uj\z{Uޙwzd%1`>C^5,k8+cSG'lB* `'aTYhbw9CN)=>bImx$hVHr ϕ\Sk"$sGHH"3_8@KۥQf=zaL$p !bsⵁ DD0Yi"e,2HʏfD$0ZJHa$ d ykQE'cI yvxq +-6%2iH }P<6k%-eШ%+!k3aWl + gatZF²9#_h^ 1O8D /6Y .N'M~/D:Udd*?LZk{uMK +cޓ Z^Pz%Oۭ/Y[8ITulhuRb:?AhL9ږG#7򢶮E/9`fʥ98asbQ`"Gr#-@[9-ϿBs9]ō廂 :=Mbq&|^o&M@T[n@dl( j'EAg +M_ +sP +d9PΕd5C;s8D +> D&zb z +'*<* `d0+E$]%tJ}qݕLI:36d{iI$pCNc-ejG\z/f=z@8?/,\`N͢žEp0,i0`:~:.T:ۉQaG!-}Dy\R6N l81v>r۽.8-BbT'F>!*ȬXtT5=uqR#u%_<!`aW#Tikoax~co$]}Fc_83Ď*WoK2|2 '["1vUL ' 3#63| "9dU&)xէ(ZKC4MB\T1)BKD\<|$`\s`Ħ$&chd{Q! ;^iݥx +ϸRpbH B(VB2i#9FmWQn)L!N;t׬./!T Px(꠵wb(T3?boOd~.pe'wB_4b.Wo BĂwP"Fʈ ZI$U:1r#W*/oV% -9ywh(i"m'V%ըWըM)e=N{xY)q.\AY*E u!uƄZ3v&C5\ Uϩ$ 8'|. .9&áf1AK:":flvObYMnT̓ ۔DRO7ӪQu%/ʭ|5#W_JJ0k3ZK%*K\9 cR66˷<7ߧx9}$'|3BPeY򓣆m~gqj~:H[ ާNC:I<;"ߤWK?\l/3Bm^`b$XHJ/K &\l~.pzݭ^FB?G^X<%)IXM_սk Ç)GrqcϼSy xz`$1UDQhq93 !̏Wb?)G{aͯÍbٸ{{KZ2!R4KɄ/I!Nxd^~wds.Xh|+woK]멛4R7I>\`Ϩsd>{4Kۄ=О_^4ϓFT06/CIb~.*BR~E {Uevb-{0= 4Z0qP,AA4\.@!P2 emKb`W7du[]֣;UY,kIlP0=PccopGGM#w)nDV$0dA5"{6Bd>vl +.8"4  adf /.((T!?baSE;2g=\5E(I%#1)TCc&äB2#{. +{қRzg1RUݮ')h pt 6FS, SvVqȫPd>AаPԋm,EV\saMc߂xWQ.ia ^VEcz9'Q;LzQӻWMD;ՄnaNr\+-En.U p*WREj*kb3pS3C2eхk]fU h 6 %?t<s&CJ-5W8=9EqBO0eWlD+<*xb*rW^}vKͲqfVai,׉nfѬR 4T?9HR#s̈́*1ļ+peİeS|kKg>s "YA]"O!X@+х(L8?,<aO8ol"7d%^>vaCݽcr+ޢͭ-5_P(t2NNnQ #? G`Xܱ̐ a +!BMI?hԀJEFz. 9HçCJ~KEpCt?M/(tlZӶrZ-3.%p=76f@KJ:@z/I7\'hu;HQ"<(pο~Q]NFuA|IZfJʚuntj>u B5k)F3@Ϗ'})o~~)x1YհEI`$ވy}z,8pI2tF=G\-\ t~Zw_$b&U+ *9!Pn;s|қ 7( l.pZˋq>/x̯( 7S&plTmD &+F8A4$ak1gEQ7KY7}O_|3ryrBjG/BK'DT*0"hV!:ҨܨQ6Nm"I~'~C{xU#V Xu旍b".*WM'Yz~.pjBNJ:G'l] KؤKk9ރbAOexqz:s.Hyc5;Vq)b~ŗ$R_!ӲvV$qacN m.Dn<=U)qՍO'%`pǞjsB +!_ͥ@ +Ne~I=? p.,} + } QxJ'I Cb떧tjɷ)U> ߇רPcFT8k֎!R!2ID8B8+L.2ijNsp +C*8R{.xJ1d4>6#K>-x@+ƥv6u. rC|l9\\`zHJD b ?XLfw'es/$0^+b +n޷x:QDo(q]X-Bmߓշ +ϗW¯.1+vݍӾJ܍#+M/[4Ō͊zC\;΃7%jy9~ھ̹Η2`\FηyO!]ˠogA5ok\|IE.ݘHgEDP9V&I[ d%-gIh倓tF B4y!\KdGA,BuVҰ.e%JN_ "7F6ml?yc ]dymégT:ʰ1iYA*|".J +eRKm}ذDܱp&*ESy7G&YHluϥUsD³i S*(Џ3)d,+NUY؈4ٴfikG\:"|D#weiaofg6e)-j?j +F)^w&0/('䖥[FE^T\P]>, +s6 P*Ϥgcr CI" "y PհyPX'Xru!fvŧבWB>KFm4i,Ϣ3_;<5"(:r޷W$./]W5%k2w27"S=RꈚvZ +yyR:ԀgZ,A]D K +=jޔ.pWَI1GlB{P5R '`pLQVD:, .~{.`1 7 3KE)7JhOp6 i\pH|UcF;6l ZɊ4(k2/~{.P|+79uܙ:\FD 1I4uDBu2 +ds|QA% ddE)0ʒ4[?PK͈Q[i8Ic~]-v>^gD;e3m(,ʚ@6z.P%^na(M7M%Pw0YN#:-v}6l.Ii4m(eI\4x3 `6YpT QqDIG}^Glp,RepK +A%H]C ,̚4N)0|BAiR`*##xթr*^m +yZ['͝*YGנJ%LaYLkC:)ެO FFpmVգrxU% J6K Y?uV_</ NA\zjSlaا~٨N{RzF ֝?'/) 9D&KR ,.0Qp=.\ pt>ѨW]^]IfHaljp.P m +kX*(ĶT$$e[rѲ4i+|T"933g\]$S]5*B q8 P`BֺھoF/o=`]c@<W#|((L% +a|cYDf@(=twS-mf]K}.1q sbqfE'vMZF'@D@zQv,x4c4d(r|`d"1sx E2cD6 SfRm9_b7`c4nB֙Y/G0lm9KTTgɶ ͩ_G7m4'..̹.ڷN=60rVfd%51!(p ۢl*&zx}+n3 0N/37e9MgoPD]vPڲVSѽ>!>$.yOv#Uͦ0Gֵh  M +: ҫFvDmdrqD)3C]Ք=vu4'kCa8T>}?r>pXa Si4OpL@=;3 #38#r3dLxVbY*W1g8rvcRJ4p8ۇ uSF˃*Sn28% Mych?,WZa:UO5qOmc^h.T$'C|bYxrF l28˅D(`OKk Jpe %^ R Ơ[[H+q\rvX26%n fe[Bz˔ :K&5#-+:_4lE^xrK|+f͒"EUZWذ E*maY5:G*;\@*z>u녱q<.Hq>s nRD(!ҙmbaƆ57)yȑNS;)#  Xaq.\ p.B +/!JсDtPwP$PWVj^Ê67/K3ťiN*F@։[yذ.XgrQ[c.\7OYxt0errgNf*F"3SN%@N~@p7u9.ajB=?t%3 0FG[2c+ _ +ɋ>v6[/wa:\^?=IY%10f^U\vFB8\k0[@\ln4Fc-x%'90 z9͜ھIvucc4wtWh_;3뙏>bIUgOF9ͩMe6d' B΁ϾO|O>Ѱ%1,o=gbҨe5"Ip΃ғ9iĶ nԊnP>ۭ|`pY7Cǖ~єǢ N2Ѷ8xl焑P71!8I(4hUp݆*%čzR#Ng'VCL4JwHjcyHxK"P̉*s`QP);#($Oм4m@ X6(7%qWV7 +(5qO8(1zA&G F|T6d6_!;נc% KB~/PtPbq=UX#.Bʫa(3[..ɨrTUێڼh$UriX swtG;O2#yG1"16.Ck'ֈѦHU,vdc.mANm<`acGY5Uy, .)/749Bx,ԔvbݹJ[t8r ̿ 57ah4Y:%P7(e1{3رH +dМSr8[3xT~)4GƖ߼|5K%tJJ: ,-B(lNtX;D,~5X/Sa}0^ JJxj^;z k#XauLM/'qԁčkd7X4:f宄H'iG} E5k\ p.\ p.H7i❀DF& x,6acz> yN2WB$Wۓ#|Qѩ\ pq+։qQn8/9hH$y;zyf`¥҆ݴNl +% ѴХ@Ʉ6Ӛʋ#'6h#؃S+ٺBeY8BtE%Dlljx`%5#٤zQvиDѠlElgJT~SEUBsC/ i:nZ^B0 N(,/UpZFx . 2 Ԟ]iP|H@13!8 ntTNi;;9"YQ7DmeK/}]RG&Ua޲-1A2]J6"BOC7 +OxVh/o|_=ʌdAѮh}SZGՓtVsi LIQpyK;8:_#aQNASGsrfLߏ##u?F8t0ޜѬxuPf{hq)>!܄xq C0B DH%F73z)T]5v)6%܆ 륡0ǩIqt3AWZ\f}T9!|6SԣȄUcjգ`0rV >_M8Pw4YR|&W&r'=@eqBfɆ'9j60JY D"k{vF7(D Prf˗ }O*1alNX4DbvRT >(XqVTUlr_ FBt?Ks^r%/"t2迾 +iEB3z.Tꃷ%Ҕ(*/:Gtu)>Koim2@p_ٲֹ3^.o/3qBl_ϛP,ňWKQ\5P}|d}eq"owc}+~?pA[/}Ԇ> O!Gkl>|?_/V*i씴^VYX6W\Cw$Og?u쿅>}r䴿ֆ~qоG;h?S`;7\XQc6>FdD#omXr U2Pq^o7}?&IM$$o)>#d\]\3.AM;;w~i<}kڗ@3^ F+ff})Z׷}fGm*@>c_j/w - &>n򲯙WgU#d,g'0kb/W}Gk?'Ps>Y>u(dfS6G;)~Aط`+R$fJt8X,a⁰!fY#O"ʾj_R'6"zKJD&UnDU rBa Ԕ潌pu 0hq9t UȮ _w]XI- 媐i16Sh)$^_VM5"*al].h2AIz 1B+1bcj)H%Wu(";ʃت0뎹sHC!0!ν} }|XeAØDE;F Yh&,C@d `Z=adl>#M:2&&>}9 P2˾9#0R ~<.Y?% +v& )#Uo(CxdOq$uDȫ1\5yxgoDgUgwt3#(XdH:JC+Z;`ť؉5 /Ŀ+׎@iF(I\"'a?ս/j^ V=v! #F!++4`K6,JBNja+ћ\|.2#s Ri#|}tR + bR3t@+*VZ8Z2F@|E5"^'d l@f J.mX{; wR+܆ pF 5VCI%l~y?m돡5C7M+ߪzpa/bL. tqe'Ƣ{4tDqCu,ْ.)2sC[ B245ZuLkDbߡкBZ *]RjbTiaG2u'.ÒO +18H~.6Fi cv] nvb!fDcqK\!A, }!DRğU~! ~9cD׽ 5Om["vh TM8W;n:%<̟Z|4)0PW մ^i[Ibuv8?qב1 {};~Zmt>G!w*W85\@T_UV28*nzKIBF􈐊"F_L Nݧ]ْWdˢGH}E}C"Qö0{1}rdaZF)\J>$ T)/=Cj +i!i!N S}-*z{6a>̒jw ҳQaY['˻2ujO+oVyA8om4t5b}J>Qʾale?YM)Pwоfh҆8|NQ-C%ϾCk_Dy`1UG11͊fJ1xbmP]|.cZ|ңM$Ffeá`͂ 9EshfZP%FltE6!}QGVڟXLVw0$c0"/'.cym, [&z\ 6ș n:aC'<9Ǥ 5T<ИhCb"FOl'QyA(1.r`a?햶/79كzDGZ)^sdt pPd TS}%5B~(l\`B;GDf)ɤBPg$mFzz!}[l#2՗kdu}Ք2 G*ɾDז}͒)sΉ3և1oCē 1AXfA"C2HKH;وzЊS =xV Zˑ +Q!$(c= FP{4J>r.4ӪiދVg Evol%>0jKpkR sB@EۅB:BqnKIFϴEPZ$8@0JBY 4<ET<+̸H,X8; m\ܐG/76 4_ DOq%2DѲp n9Z8Tp +T*@&$cAH&@JbY y,@Ƭ%cSٓ! YMtR|@ y$CF1@dD(/YƪԬY{bby- l-P.=CQ +*8*ª@_w/Q>]\0VĽ`{>npxDw3'NB>AO< |fY7 rH qV)M MA3Yӹ@Ai("$ï9`L"];7~ !1c2<_ &( {W؎,7f& Σ-'{UJ18 Ԃb >Sa/UYnP{u; [x }#V][G X4ilʶJ"@{rShPFAD6x\`I%<#f |6w%F HGD0xRސ'RqZ*}61Ϧ+9Ǻy lȀQw!!E 4CM uN'VۚUg^eS42 > +54  s.a'*(Z$D<ګ:/UY%_ oq~&yl(8B;qaK\rC|'q5@7;aYF#`]9-N4<ؕ~)y?[ь Z$~vON~q.V6fi ZjyOKQaW4@P\ISg|NT:?倉`W}v#aP}vtH;q̔f֐S'va`X'Qi.};$Կǩdi(\kT||)6U~WТ +Er_ KlOXk~~Ψ 较qBnltqoƨqHC>6IJToxJu;jq%L܅,Nv[-BEӿ?RkN?.MTL>52@(-+BҜ,(U ┬QZ}i羈u߮2J#_}p4{_ѾWP|^} +~Ãt?oVI8^@ͩJաɯ !!}qOlJMa%۹(/x{}^zSdgȾ?TOHwߊ)~@}}2xC%̗vP0jͷ}Zo?j{,N}}%뾖Xt%_:[<Y:ܗ|.B8Pr‘Te}~m.Ow['#\ 72Q}N>K1u0RC]wdX-0hGĊwx}}3_^o&'i{珳o1mt' 2Q4&>%tc~nrq_pRm?rpq_K H%=|~mA7 *l?TYlSl?Ӓl _3EW!{bk"G@+}qCg? oE.(Tc^V%iYYv~~Wpsm&[>)l#Opw>A}Q9D:/ y҂ ҉$WOO Hեv M)g04P`pkdX0taøm44{ RzA-^Zth}^:΂gA\6z( =/%qr{[yN2;YJ~4 +<3$OO0t*l0T& j5B{cK$Si %3eFhX.p^ 4ag԰$th+%(`.=mbr$"xFx&*{U|p.R[ӈbZ!N(ey=6>ea"~ IB9D\ Dk[k45#xZ:|'pxuzBP(9BZӘ[c&[QSSB1/@]l;6#9MJU* v.\@t{f|I + y΁Q1N00utS{@%gVueSjBpc.lH^DT<x,9h5MbH Y ̓H1z'[DC`5՜9 6* &P5HQ랠sIؐũ鐂1y٭Mmb"f!GIS (<+&3Z0U'e'7A Nk퇆iR0p21@*+A^JV 9ʕ9NX݇N9EWUh@,1y^YQh"F,p$$1uF&b{Cٵv͇%0Ps'XK4tLG rZGf.L)8O4&-4C}ڳx1kqG'!b'oV&+M}Qdd9Y(i8o+/_w$YlG5i +NCꐖFA(l/EÐCy @gĖ)%Wp~iChEc7]EGI}}Xv#c2 fˠ-~C!%qcVB]Y5ZxeE(:ʌTz -ER +.Zh#1#-ʊchq'"UFR:΅ OYP6wRlG4MtiwS84q IvK񥊑1Zs!tR DZxd qáuTK &rW+"3O-yD 0:1!҆tC.S0RWN_K?||1F #Ќ ^Mpct-e abYGi8Dnrkp +4&wPB`JeY&m'eX;ͧ@#Tk3)W#Q&nN?c_В7 +鿿ᦑ #IqMב"EC`X胣eE"DK 2Ǟfa!UcZiR쒐3B~KPԀN+(1DFS [21;Wp/#O(j#8 ;EhS)[ $`EbIr_5ki (|rZ␓u-dʴE3f%Ϳ YC(W~P 6\ Vt8M"X.gTYRzKC/ +j| 4 c̡6^ u2Y' D ~,(*L)hE~FMHrPXɪVa)+RB`ei,TF낑|L@!LZ. ɒ8\`ZBϏxƐSb{h%8jsW`S~Ř!K$"DR-AT;J *.|/r0삱?\ŅO.,ҖPQp ٧CaLL:QKRaj*wȴ_*E!c5~'F3zS" s8;x[hu;j48zsl \=,DO>0R`gdbOUK}\B_aRg#+)}.rtwD9[=9vN*}J>9qfyuGIvDBA ] + Iԩq:TjT,,?,Sȟ-o?ܚȐʑ9sKPÆGJU!+/4ncRfn)b*BB V%RM}P:_?˖܄f%KO`ozho`#& l%%sY :TsǣвAKQԺ+JY# "J贀0Еiz68kό\+T}y#| Jȡa>&⅄z: {^b F80D#qU:2֍b["J5LGvލ_ߏG-/94&AMhS*9jD鞤BF2;^21M#>V* #(ZO#$~<p҂-"ևaV;fYcKF{_\$ Eb; Hzs ŠVVb}lȨ%cS6STk7A2q?Jၿfk+<}..^n#3AynGv=9U[1,FEi +Uge}x??mߗE!ހ?_͕k~i )~w̆3 nGr%8ru.Il.+/~ VR +>Ú +‚~?oo-KX*ߋt>އ^:.hI^,%dglR͕(/t_tߩ.o2@62||:EtoާԬ)'3>aƩ4.Į򜨒pqppp_,q,HZMC E+'zAא}x_ݧoEwOW_4q'*ŪOCm*_o#feISGA#WAVF=/#ݯ|/Z~H0{v،^oh>xxfMQs U +F!Ϟ)Gw~/OͩrzMou]_1l@Ŋ25"SA!dJeZۀ@p_%+79q}IK~³辈t8u?wutLp_㺸q5KzW+DOV֜^t^FT\B+qr#$Mjo X7,7? LS \ +`ǭ))R<;B +cŋl.(2 7/yh%9$Z^.@c_¡F D<ċhhp-]x?q_LCt"vJ,̈f".In .ʶM5F7b;,iro Zij*4p`2;?K J5 ?8)It\Qԑd4`'! #{<t60Ӄb+O{ Q%-`(\C#w*'HK sW3BYd[Yk *+⾤'o"<'X@#v@;(". vY`R"Q%$* > +_N@|uD=_i&Y-.#٠@ B&h4lIZn0\ +e2U#3fD`Xn^3%" e$ -!Zs|UU`x6o'+5&QRVUT+d׸!0ONd`0O%Y3ے"ES*g[$4cSI@jI$Lt'A ać^] rZ(ptQ%\.IqH,R@h3Ny9Bf%eQ&]J AG&:˚x|<9>>[G baTxxЦŌ$="DD~ +Ԫ`O/h}`82Ȝ@Y+4"p0r7ߘEZC21Qt>RJ[#RA%PFNWBqYM4EwQ5 3_ S9XYe5%a4v%"{ Q0H"lx*A~E!sMpe+\:cH. yU\,[HGSQasP5\]]w8g +^ +i E2# `OGC xNAO%ŧx๡JDHAJtg.} tD22p4 +0_Au?\QRCf1g^jAǣ@Є 5 +'1!)zV{rR +/W]5uuL-H +ME?S O;LL`bc`AK)s(|U:L.J$&lG!\ $+(.k=="sB#2JZ؍l:MTcTR_t4i4ws<%A''D1`la4gƞ'\I2IK  +MSzs])AF7ǁMjEba A];bd ?-0l eКB)#'J!ӻCƍ!ؔ"3^JR?3)@2M0g/8ZڿD +OUCKa >H2AN9N 1*i%%"e<+#0#N=FjJ/ Sw.>3FCd +Q-e8zQDRQ_)<5@m[:\Z3~7A9I},|'=-Ȳ~Pɧ9͔.}Bx4AsVd!6 +Z|:!&TbhY&~T\⿀sPlBVq*H aunN8J싌Z\@uC= L?9X8GX{N>ɼH;B;xb:}HYAB%As^-Qw%A9X# +/N`Xh&["j}oOKz}appq ?HY|_ߤHsI8xD CTUM3,5C#[e[J8}{ߴq} ߜLgPy_E`TDےM'7q_cPӴߕUi0v[([LJ׭Zza?:}_c45Cals(g闤%tX T. Vv궰\elM*(Jk!@QZQȑ@X +뢋96T~?Nw*7Jw9%>DOCy3ʨMa8al]@P+}A!BӻWQFAHG}M>`| 瑊i7!-Qq}x8V ^ΏY#=o%IRTio~ҫ!;rdLP% -L(*lhȲl" +ĩO,Қd6!*Z|O)^3mgijig㌶d:{ [&40$:;܂  MYevi+%(͵91 +9x!WdCJ#%E Qφ$pu"秺S:"<\{ЂܸW!XHS5x --U:3Dց}/FMoVݢg*fqgUi>{Nz B35HpXC gU+lLIw }TkI c2$<-aBfePv+K 0debvT[UavC488Ucp@<"TCZN:/xUjY <-r}ib˥^ +;ơ~ۧ'D+B`a<TAjtF}rp=4kZEw|lp-jRdXOkKJMMJ"Rq= 4r't?,2D\CCl6R/b +QS=z?@?5Co-ΒSp5$Ŧ!k'o=同RwÒ9IMLh]tHnVlq_8xlZL#;RP)>0L'n'rY*?j*C\ '%;Y&$G.D3a0% h&~1&dCi~y?z!{Lszo됷DB)F~+ Ϳ0OУTuo#~. vs% +M%IH" ݫHX r:BJ9;\X7], k.p38fm(.98$pOI,-?F0g,W A]i^Ck>HƒP Z Ǿ>Ek 2'@&Yo9{6SD!?Z*0 $Y"e&o6NQ@I!~.8C.D@42 MWu"_1ց WuMUOr'F\d_D^"ت +8o, #BZ'ᵥ W\I8\I_VdކmɄ`#ùٸ +ND eSh>RA2R)`$Gs@*eBP䕬!;y|_?>4 \%O ޫQ0P1C! p)νG3^*\!ʴ7aUOz0_ ^ O+8?/Lą|2zkSŖ~1f3Bjp!݉TbÝn0ѡGeGu>A LR* SMMZVHM%1XLu5h-~%2 MP봽-/OF8\H@Ak1\mmNuZ"B IgQR~*-iy墐_^%F+T( e6Xrk3L7rp:[AZdIM>~#؍h2;0tu{xU X&?ILz?/pgFz/͇DA Mp5n2 +VeͦU㯏KߌMy@f)jXjh7XtH +QoVC I 8:7Mxl|B(7Hr=}%q&h1"EGߨfJըPur 4?m.1 y%oNSɄ d٫Ejo] )惗P>҄*/$~+%E̡M %diJo,T4*nX}o)Rt7e_64J|VyfӪpsHs<22Nbb܏I 2ۢ 'PP +4רw$2;vk6f*A2!.9 x݄hI}RnxJK+3c4 0N H: @(ܥ׀PV vo&7;jĈK~J~|D*NVcgkk% wճچӬ5ӫ$ =@sSo)ԅ|B)r&IHV+GN J;$ipxzwX૿կTbI.ZD 1ZXK(Gϣȣ7DZ[}}y5>s7~6^}koG{_\B~?C6WѰ#]'UV{G7,HCG}_b}%}ug}o};}}?}oi} }ob{i\}Y|~O/3*6qA0Td *V.b?+0U`椡rLĭq^bȋr D( 0-@:ɉ(,Sb"I[*1wT)<)+)6X>dZ2Ÿ갥)z?@+8UJw2b +KCSh +}j ylZX!gSq)ة<)0%W` hJѧ6 Z +R >N(s ΉX2[q)>+q+C?oB&P3eH#p>8HQx صs\is4>3wm RMG/W'h`Dŭl.mKb`l y,I^ kXo6z^ҳBFfA q! ,AO'+ubW 6/{tq\n΄8pZw@Y0úyǘ/ۊ ChbPky̘RSBud3H| +]7FMgJ☒/yX. Ìg&bx(̎rjy5DQ$Hl +±y\s=D7)(*H^ފ.c,4ʖ2_Qdw8 +Qx(vgjUPh쌹سk:2<ă#3>, GlvVK"3)㑈#~(ScChixQ>~@\@\Q?.(+"fY<x%X QS\ZfL+͔8Ҭd@]>l'E+V=)8j/B4[RHqyN *l"h &l8.u"̡#'yLVxV0V6 h43r0vu&鬟F>O(Օ"Ώ'ǻ '$w4 &uSc(BZ6߉PhwtHM`5&٣kP,*Nt曶B/NԎwN1ڴ[_ݼm3CC{R qyKVз{oͰTr$IhM)~ӑRb}~nPh_peT/ TCTqZ1ޖ+ Nq.#g3t ܤºrVKTs쟾QrrV䳪)n!\n$JZpQ: +iA"['ʋ/=t+{"įSlm| +qo|j?iz+'+\d?e +AA+SX +ԒX7*WwvX^iXwɰgV؆j''WCTE +)1v'6?Z +~kgELbE]xIJ$z ^X DRLcRJT ٢Lq\ eru TrDX!vV?g=X>[{gxߣBA&ۑ M~?%OU-=)~^5\}\}zlz;LzmKZ__Z~#}_#}o\.}rxھ#moU#IT{[}AO'5|kSYثI$~ 0OWOt?H߻H߯" GߓGgx{UA Gw^FKFߣ?{#A[CI)4)BNU1V)bBbb(AjT ;TtDB˴ *I&@쫋aUBrՒ- C +V1+ؾ ~T,im +]]P&]J<<|^U^QOblI/_H%+F"2wRsx&nS SA}}:1FQ,JFZ`$lB,q5a=CG=:! G$ՌH!tuyy*<&S*_g6 $W !]aPo Pq;Ӡ #CKBQ(iʤkC];*m T"`礨gQOE&O ) +endstream endobj 34 0 obj <>stream +xarNCDP1d)EM&IhBxG}sVWft҉JԪʨjUe%(.$еHR)9Q Vqለ" brOn%vl\zp"6%,M},e6LPc#rW 5Ka\)UK*_RP +!HU]}IYU\p(qTU"EGpP0R$ӸI*WkfT1-k8 Xѡ HF2YHGc4 +EqRKM)UI  e$Y%c8f[N5ܡeG +DME2^Є#yl :S#Z.2ŴzS!' v= \ +JYeT\ VU֕+kkujiU %2sK?Z7A F,pS0 +lܪ<F/".LeaɓW&m.֣ٹoϔ;BnW6c5$}p|s7I %,+<B&!#K(H>iL/1Pˈ~1'RE.I [`1id }i WU\sދ"Q7Q7F(gn") JgB: 'Yl)[XԐicx!W49 ,fY?FG8:NK]1pzMtbY3e3q33I 5L|&+ٯdc,VQ9,/qh*d[}[\.ZSHL]%ȋ0,ǮԮʃYѥOW#ﴂB-BEa_bͺς<"=Vepx, wjKH/r<(/N7&..9S 4?\5v1KJ5h\mn&ts+ɹ*S([\)dZڬp۽ +l/3bĜ1X]>S>цfN2D'XN(뾣SiFڤIʡ" =׋q_eֶ}~*3\d[,`{|9MP# MK.|ȝ?> +JTt6^iTlжh:hvHhw`I3K]OUQ J):X_D<Ee<}>>/=>x(9Wh T3MJ,#IJ;zm$ND0A"r:k2N*{FG}no:wˊ \+z(r'^e඿R}yJ'݌Ipu3Dg$`DPQaAOH )o]x1Qk.OU7T/PRh5@im*;}>HiQW+b?›&g v:@:6 *2ܔ$ܰ+ &$Xj|Rp0R[\T֞+B8 =,} +p>do(OE(pxaR55))e`7,*CULWYZ;z{x7C7>'8@WPO!S2zL^=yUbTB˾jv *rEX\СV:}vN6շ?DWW_PD\E\}7zTϔgW_pW +giYf9c_=W}`t¨w~RF>/ߋ%7R~oP;ˆ)j۹z3]FNz}+ľﰯiIB\}kt~t7~/{O8n9b߳>IdV87Y@~WWWZ^ʔTLBn3bbA\ߠb"AVA.B$QP1EPNPMP1}TL-s ^fb 0:Be-*4d|th::$ $tclX@OU ?**҄YZ@ă4 *6& 5Bac[dq4SَjYBt7h`rF%CФʑ;!z#.*FrSsNiS=iܴ$ z7^Kf=+4Kf4qԂL@DiR'WKKDɫtR5#m5jẽp)˸sP9 SeC6#R 63茈(/ &] BH*qR, yOc@_}nA`0a7gurె di;D5XϢ<]9|pkpd;X,Pb'D$wNcf[vR7dSth>dI('Oy$TʠFR)بԏ͈Bvn|F= yڰeh4n{Z\gQeDrˮz 9hWMG8x DdKNhA`MrLP[UppQе4aDr@.)BDqI[f%D*Գigr+0;MOo> *٨^@OHE#qTm+B]GSJDj1Qà.kh^ aHʋ,|Q#|h%] b$T\Q K] p*K9K^!FlEErBiбЭжJG,Fi Xɺ}r{%>3_&T,m07 h a<+F*!\XkJ@lʚ\T6NpJh:Bp]GcwQHD  ą2u)f.[0-:S"(ǰԆ10z#a$UMCNC$t \#A*".șRx1hrJ8Վu#CA H*1'2R$&Z:Y⒩DdOW +c ;='Ӊ8er:$$ ED@X!FL*w,G5'x@^<8H3JWiPL.p;ZX^۴JSOrr۱7rI-j 4 $xEyj" 0A%DƅQ0jXKn;$sIZeb ]a]^MWfP\܋ḃ:/IQqsS A!D +Uh1ɂD#\!#5>j:LzE⋘>FPqk 2 #u6I~dR 'f պN cb} <صSX;OhѱsD}M]^ ՜m=[Y":udYzϡ  ΥSKD# Fr(yMIѓs_.CK*;m$/Do®pӛc&ei,=fqN|… ѹڈP.d>I|&M20ooR=d"9en&vZkWYL Ն ٘(F_W@ɻcw3A0'Vk:i<~pĀA $a){s#2cO!cC\EۥEe2,JڗSbTw<<382$}\!ن١MB'C%UhQO A2}BC 6LuYj}M*g#(TU),: ’8b؊SK'/#rj`yz!rrZȜ +,hmaŨUVhmn|x;s.;$J}o@ZąSKbK"u.(Abwf1T!t5)w)#U=5a-aŬM}C爤YT;T8Q6 O(Ɣufη ytR_7Yu?k<`B$.Wb7uq-SP5lp9~\x MsX؍j~%4)\.@_g6rd']&i[2];T#!'5i8LJ" {~mru) ='9 + /:3֢iqܰ)Y6Bc +[yQt f{H`RnMx'5(8<88d AVgW} 6SaHfmmZbD^ Zt<ɔz!l.`*Hd<&g~^qSG+:.=y Qnb(*xswPIX{}Es?`!sDi m/.8-uT 7<rEV~OGq5 >l_Ψ4@祲}+r-] +#.|IDPIF*KG킦VY^l7y?%&H/L  ,լӯ z3%;rvW_,TDjgںvbERt4=Y * R`TkM8[g{XZn"Wi\4^.dHC``FhJ4LeqhG;qOFهl;VOiYˤRy* #I#TE,r mk3~높#`d99({BɈ\0IM;)4EX[{$[Qn vI Cse +9($ +oz}:ѾiڏTebf~hi3ϴTdp&K0&wJ1GhBEOK\(~򲏹OX/ ™A̾'"8/bhDo~!h_[ц쳫!uq,H ĮZ̉]]yQ*OrY>"p>ׇ:nFv>`3 Eu +i}׾RFR>h^м~39z{_=ʯr_=_} +_z_~o/N/zy~1}6d?'*\>yWz\Շwz߻ kr%gpJ(R,mDr Շ2=ګ8 ~(ps^=Yݽ5+bt\j("WF(~R\wO\=+1qx-q1AuT4~ ^D)\=Qz^p5gիXՏ-}m31pb_BT\ si}@ - *qTT(,#qZ*MU-f\; T݇' \!ͼ# aV1GEʣvЭ3YNS = + 䄊;B ;X +YXawlۤ읓1޽*0`+R %pd#yD"QIe(Po$9KkV5.}YϞ \6! %apO7mwrsv=KOI.Ր CxwPF ;oj4# +Z x`/hVJ،8^RǔguGt7K P#8B: LOs-ɮ9kQpphP-+2c1Wb%RJD'ISgo<Τd %40)8Z +CoC%x-)j%ЈRx"2"(SBhPä: 9YOqOb.znUPe!Aj"&P(`/bE!a1x|FVXiIdžȠvȘ^GMy~u`]{gDt3mlú(59 +% pV  @Xe >a +33 + b^r uv$:jfmy9]Wk2D}DY19J C +}Ě/3fB&ۑI*U@DV2R3iմ @O8h +)'˒Aɺ + R0ȯ(H()j/HceS)6|LnR띓X"[ 8VQJZ_-q ay%Hnңٷ)p +m&W Ӱ! w%R<ūͶXڤkrsሹ 4%pxцyT먄Fqë4W,h0e4(dѠҠ"kPbA(eALTerZ!k8| !aC '5'N) +E o7Vǘh|C p3(Ʌ>]\wcV^d?boV}.nYit~ܔDn6S(=Zpe]+k#A;BHW&1dwXdX)A#EicZ@339-24[=a*4 %kEX `Na: 5&ӳ"RcEƺQƤur ^H oJ.?3 ~_B;Y-Pt6uw +q:Ѽ ~<(CbD@PXՠSO(,%#KL)-UQcc k\% M7eC簜5/:٣>)+V+*4nx~>IH;A(ۅۅpq!;A0[GIã~ʩ<%ER d,a^pF ,\s +G%a̧,9K?!.3*=3:TC+m@D\ +]2"d|=V28%|"Q7%}^,a>Q-4t3@л$ S +N $  +ew1|WU@^, +J%(!he(JPqP(A@R +Ky({(μb+WEwǀ\L{o/׌(u`ZCr`W3ēO#";#XEsh饣@z]'$c̈́@R(x [Z<} {ߌ܄:y1ffgȉa3 2@&a*<]5&$f=8vLPk.NpdChSg蘑 "_+ZliM ~> +Oa/ _0!,"4k +%SöqC`@9o7Ǧ:Ly{A5nܐ8'yg\dX]:rQf-ߚYswTDۯ:قraEW0}aY9js: {ժU6qp۱/k5إHR{ԡu:GLHNx(Y\3{*f2$hoS~[Q#%q:e^t^)ʣ#HpxDh+Q#A0IR:q47uoEP" +dlv_#-8qt\n*Z l<4c$#E(5 +r^,ӓ$#" I)_x?O\,P*A9J +&k`^ny}?.7,#" qkF5F:{HD$zg=U(ijFx$>@5ꬽʠsŢ/ieh_+U#*.[P$ Lу~Ȉh_.@Z+s>=Q~NFu6}Z!sc_y=^REB`Ā-@zzdӣ︿$we~owWۗ#YV$>Am,5?fJWEEJqrt$}@%B\0*`<#C5pM)mش/4X 773G&Ivm?CJl?rql?%O@/7%틌T gvt ި +\Ԕ+&Z\ IV(4zO}B>$#d_dgm'1AA9 g -BGbV`>ؗtXW3k:}Pg|Mþz10` +6>#ؼKy'˫M_%W?ZY^=[^__=z_})_ zD_6! S s$}Ѵ¾3O*u, Ә*8*&*}9 ) *f P=F7ȃL7m޹x/<>pɃÇDJpɋh*M0d0։;Eoe*FQ(T̴*֫d{ywV^:%*b^eI7x=0G 5.vO$n:7?y:nV޼ݜ{qŽM]u ȤвӒA8zf}#h y9RrJ$xȏ@`A1?-L##$ H)fr8QSp/R)'$Tz0VkE{Z^s4"87-N< l +z +>[@hAH5|00S*,HFQ0-#rP +}^gKUђ4MBU9_mg_ 5`OM* L)8:^`ѵXe6_bߤ(Fֵ ׇa8[lp@5Jܱ&"J;E(-5:(~*İ!ltk!.FP*ĥ AaӨ +DMk QHa)!2! ټ(IW@ +Bϩ/2bq6(X#rrڃv @ɚnӚF 6 +٬S!}:ŭ +irS3x'wC^+p d"d]yiw3j'IYIE*UdJ +䱸B'1,fCq9#p_CBLљ$hn$]U'P2D=+V9ibzV`;I@tJjRpSE.P'i&xF`Pa\J*7i!oK( CBYQ0IR:qt +7 r%8+jgd.u +vVEz#@ڜ9H,S>L1E2.8†ԩ&SU9ȐTs4"(*'XG+r,܉ƕ[:K*#&Y!H&Xow`>Gt8/ Зa9c4*kl6cl9CFʶ@q0mXamPXڱ&ONc.У`Ey.Lir e &L`}IH{L$vP)K#eKg m FcUFEo:ЉHMM<Г<֔B |j3MaVab.Z3L045}  g5gޯH4ֈ +K?e=A4Bh,@oS=8Up#KǨ_H1DБD2w> +czÑZjGEĄR0-F9:Dw3?b3Ig^_&7 A 17|mVlXɦCJF KdB\" EL{Vxjo2sʇbÐk,jS81/ zshyYNG7bhE:sC* CM +5*Q G WQhMtb;IJI'yTsSQ͠Aډ,"]RSހIK!{jϷ'I?N{`&\P#"1!T$>xDs7f;,fkY7l/3V(WDb{LQŴIw!,> #NM!Q`. rC3J{NAhh.tiNT} \> Kd$,6ڑ-8,!bheLi T>,\ KDYƎe !h +e֫Kܣf;B|.e )*8d:[| >z`OxӒ gr҅ :7!uȫ"]HgR39 :g,0iV-diԒyb6ȱYA'Nݟ#H\LI~) +,.)0!}B a<}Dtq T̤'Pj!Baը@jRnd51 HL;.ljo6^1Gq[g/'0V @=?)42:p'I!G`@ a0 #Cha p 2 +YJD( *B) 0 @v.H}X +`On`wR&B'.k-u%#[RJb.ȰWܚv޲) *llLd_\^v!ދP#YD*SV.kvg$6wh]j=o[@ 4I TaVL~2(PPU~#c,RSsܡ k|Êh̍3}.W18X =x%&D"@ĕ! |1F$L9 +"JBc6l,aB-P@JgmଋkD^OEдSXU4e7Hk^P9*zX_{'sS5#M + ͊bA(*y_m8D;u֠cL8P~@`vx04 A!p\1&߮[mz IS p *mvXvEڽ7+X]upT VE5vD`m0]U14(IEՅA%KjC6Kn"K ;%}/+pA r n v;̤:+hb[h)CTUtب\PYKgќNkEkPj +J +~p #z%HLTU|'Boad 29[YqδWqo-I~WB:Ԩ @ct'g(1nrq¸%} +;t(C LMNg/ +2fx u<`,iLR fCc\|#IڝC +lw rϚ6r!p'F+y/ߺ ++Mw;dim,Z_4" [@#:0?KM-0=U!kA&PXAd#0y͏r~[)CYD ?[ܗm[/:+;OȆT@4swUQH.rځ 6hvTY냢H}ne  SPubL&wK mi%Na)?qM]¶RCab8>yXɅ/QjdJQ߹ '}]@CTRZJJa7 D cׂ% ?+>Md¾Dl|JFͺ +fϕR8 +)a)8 B I-Kn\HF|3w&N:Vc(nWT@z~ JBߏE :ySDZ_HȎn: 页]恼@t)ޣ@%E>=I +͝ڄi;y=Om"W^8".W^8A q7?|{EC( z4$S15{隖L6Z8,ϫv 914$E?t (g h .҈cƥ]y脄%km(aʉŘ$%_wxvfLf$uba+{ 9(&s,z2[6jڈ`>k̸zJ'in +6 24e`S*&!,QQ#r'1ϫz}r +IJGt)m mg˛†ΰo[]r$E+HV_os.gr +_$EEVY@j\?LT + e_V + 0Z.:[:JVY@ ;z +Vʸ< 9@V*\>KQ+kHv]ʬ>qUx"$,`:g9j~c؍Iq86$b`SAvuRէR6TvfD(e% $(t,NɚavH!49֩0l: +FTG +nPOG6(BX`(*2~ *s%f$xſµ''Kɢ`&^ o!Ogc${m`#G*̀SP *30IS g<8WTw*_Q0eMj贕'c(pvV U(hJغ|-Ze͹t,*JSxZY\$>z_Kw@L,?FGc]EcNHrK=mWI]L9x^rB|iOR|턩v,eLxi\\v,("DPQ"|O@J`rS)`*3Z P`P}uj\ޡ55Q4O >*a=Yc;텣ZfՁPoK(蟺?6zp a dE +@{<ڏ[^O+:׻(^ 0Tx5Nq7 T GM$ߨVfō7@ܺZͪg5vs>Ԋq%Uf RFwtV.-z5ǻΊ@Z ˥AE[UkdmrRX]]yh AƇ u2'uCnlMrdtf2hHp(qu~oB{ +HLP_`A@ZNx p,9#Q"{:%uM4z6M;!k,l +Еzf +(Z8&9|ݮW!>#nC`1ReȄuxȂPOTPh\y\zGu.v%kegxIڊtxܧl2㢡Ouq.ռVz'뫺[d-N|Y]Xnuj Ŷq*~hΙEJHN-EO F{gJ20Bi$R$h:y݅(N$7 0EclQ{BW9IT_?ppϾz)hl1Ci&^LE"r2r̅P d +NR&5Tпt/6ڼ$ʠ3"?5Uϊ~!3c[>$:W<1q]i@0]1RIXz7Ji& 4KcRh2?GT2!2dׄ'h cRΏ/Yd~;t/;T.k'J.'xAy!^#Yu)b1im\u F'`8O4h@! H(%_ @ 応egS۔ДiKv?xIG_M?LzRo(As,GZyf 블:/wx`,i^L  i]Au=dll-[Mt:3|&;,A +YC)6,ja(3M6'i(p%MAR Y9_CǍjŗnѼA-BP ?ڗ+`RI&MfkăF mt. ZM6Dާ릝Tzk`TpHM/ OuqFƏd@@pup cxBF-pˊ32UBKl%R ơHLrYQ.GA0'7zƅ:~Cl\52zdAG [jI egKؤq Q-W* ԓ!2 _2b^By͙‹tHE:1%Mnn +V>BYd%v| ɏ"n}HIH/9&O saH6@4 +i Ui7$ @#Ffd3,֨"Zϔ$Z/ E-FYQo9qQ5ȊֈXXRa*i)|uy +$S@Q(Й]`j(t]"M*j<^Y['jm_Hfd3zJ5-:WF$1 ?Y8JHME20`*iQTtdl, #SiF=b?\JmMii2bajD+n@z 'XRmkz@:J*.X %s I䡕 9-s^N紜D&WRS8(ևDݗisQ]F_AW.W3-I@ZZ.K W\ȗCaB4SLb2ZZbSߐu2>IbɨP+^^:lj S%JVmL㥲R_A0ԲaŲFфFb +]JpR0 SN ;;x6@[bdNT۵$  b#bޖK)K2DJݖE$֝jKS9E|OCRek05d;&&LzlhCʝ[Ǐ2[twSc9G8B8.n\ @Ul&2OS~-ˎ8c1&S¯*tŤ2ӛA)d$ȅwuofk!xAc'ʨ6 CaXLF +_~O^ Ze$fE&fg&:7aC>hP+\d2?RK;av:eAe=]Rc{|>8GĊڡ@L0d)ilE!|j2}D:l>:bر5qAo̓|yDъF/Vd^@+AioГYR֌~W.#im +|?G$S`CQ4o Ə HHL9W&qfu-st6t,k@23WK VYhмZ5Zhp*gC 8FXm˓|@Y9L,*b%+ʰh%'ˀu´,g/&?u3xy2xM V3JEA烬ՕIQ"<,pSx=,FDZK>*+cx|aPtc8%3b^3]D0kUب9Q)aN @'BO10hu6 ՗DQgۛ{cÊf8e;cɍmr^tR͆;Vu_)GLkG<>,ԕB +ZfT3UYGI,iX''ΉwPЫNs}M(ԗ6xpd] ="wn:-1%zBP؎@o+Â:p FBBz +҂ +SfቼA>0 z`5FeSJu,!e5 "pd!DW["M|jK#QRHD +{x||puy\pK14@@pw?r fjP< Dѱ| K';|!6g1Iۖ "HHO-^4h a1\(g57Ei9N}-@)KN~ԬJH@3b^D27kB/pr\ ߠ 6gLKF0 [}1q,^GKZ-DMz|64# $J(/nB2W_CnnfxAUzy ~Q%[RތJN ʼnj7 (^FDd(q-(/W6'zd"yɔr 62Vڰh@ aX-MɦPcڎ4>vKCEpa5LkJ2_( WW֪|Ǫ&ĢGE '̷EJݙhd#@MSw]#5:eVT.Aqo CmFDF$'@ӚTǛ)M{~Ts۷vinU_['^d0G)(8Pv&LSƋhiM2F=9@p]NPH$VbI) 5!9.,AXLE#GPBUB/E +¢T* ]?WYh~w޸V[ jm7մ gS@P_LHn]@eW3΃*D6 +PW!![ )վXSp8S| b C\O.y͡`U~bA6F$Z$M@ n^o43uvhPzN5jy)OG-%{~I>i?'ٺ~Q f<@P-X]l4vfR@EClV( "ӽ0˟'< ֏6xk]{ߵUlr~ +gWÐ!YJkn7~erぃA ^,wT 2h;.EJ SH +o:N ӟzs&G80Η~_?m?nPB-\0LZ޵D &͚ +Go+ WJ𱝖Eϯ~~d??f9Z:poV$Ct~bs~ø9LҜDL/,-Nu nJAi#:2NV905|.P;qY!Š$X~ "B>晃>>8$~ԸlTjzK|`LE(3DhdoT&6B!50`NMEqWAeYA8#iIRNzȸ̗K#hG4# sz04EiBs*)-ѩTESهفH&DT(N;h;)yS mR;)ɨ-IJN*׊k TZZI{2B!LcqJ2uwH1H n_d`Mm >"  ?x)T Mjb*sUXMؕzTF*Md][u=NLYF5K_h߭AQ2x6㥳\PgfU"d'2I25 hRTm*),` + +_gȲZm:\ebrSxG k abb{rs;\.MeP sy|*R6bRºVDЊjfW*<,wƮaF]v}\RDX}̿($jq%Q07hDxePB LP5@ -;Q@+0p!Cyd҅' Gk1H[w="d"5~' +iUjڱ>ڻ-z5@ŵFokV\jS`GX%oJ>{%0Pr;>S6 -97>O\/aFV#0Kh)]:5']$3HMI.hjB/G@7&cnu/eyL.!hU2hg]Va1VAo\Ib1"(%x&F"ZҐhȴZ=pI:*C)^D!]D !<0It1rvQe2 pud7)WZ3r%JWqUQ,3EarbU 5 +B8M)1qF60,m녔RD۳#0qt" iP! FN9,*%Uw +BT&)`ϖ/*fhnջ|. +Neh0b,PElD4@`KRH*, ٛ/xdR²\豵 pD2;HNC&į}e&tBS]wh+y_C0w$Aݫ3@.{AQb!f5=9 &BX!E: tuK5*kI3}"ZVd r]tdݡK7><=r>TJs59vL$Pl\u XŹ{G9jjsʲ OE*F'a +&lj gW ]3JVQdD#R +tZ`P*U".ޒ+]Ftp +e*;,!0Oþ +&U +zEN9"$QQKF>S ?yC.@02垨Q#ɤKtM YBtK({׽7+X4{~ \|2B9eCo4KۢGxHMU5zeQ,'*%TZETDx X+ЯV^bxlx ݞ{ƋTIC| ܴ98I%Z::5(HB"~T `H8X Uݥο>vy{ ذ<%S*䜜!,<Z $6պ60OY%n%eCy͊ؒ 4ןR*{jd^/-yCSJj-d~`W1 wx1yϘ HTP?a M#%}4Lw[)*`#7n$  R?oi_*3 Vo!~Uor?Iq?I)FHbyٿ8 M& xE{QjwPw LppAn-ܯg Z~Y7rs84ضPU0x_?;?G(䐚<Q}ivM͓kmn_.~uߟ1jwESS>~ W\lJ B3I@_V$. +UޣArhTT`3刎rq[ߎo]Q UTP+~KS?=kN֕~Ȕ~mJq?Xw㳩\iqCOdBp)@\Zt[81췌 Fac!pF?vZU +I~@Oorr HM_Mq#aD`11d˶\7ozJuNL=ZU~b]|E>TJA*0f2+:_ {CXm'KZLWxL + +&DZHM,lB^R5@hZ&U&IT>b<`?+# $D Wfw6_UGKA )dNMl6m9ZrAZWeAQ>ONJ{:H-mЋ#Z +/IEz./1O,`\VT+L/I +)Clip渇2aTFU t!tR$9+ Pwh +'&v>]vRjm"Ep"wCqa¼j5]n +U*K*4N*VR09=婯ѩб:,_ʺo'%KVz$[_ӼvQnValD男5Fqɧb Lpt=`) 4B@Ip}asz0 L "AAQ # Q!(DYAK̐fϦ:®ڜl^ZS r̪uuQ[~D?#F_bk%#,,0Xbr$cZY!l>DP5@@` *6h*45ްڅڜA\kPXlyR(pKzޥDz3][ 0MvsLD +EC@5^Zf5 !.UH' 1ϳ|ĿAwX,\ ͧց +u] R-#EZp|3%phJ醃񈅞;G՚`YD flfG&`#̕#rpҨ84@@ҼT7e +ZlSm۩6CH3z7ljE +u{arC-rV,!n< `xVA8#8hO&қ $EQp /j!0C@R'+"D8|IIG"͜*P_   jB~ s ^~F~$Sʼn!ܞ, "t0"hz?SJQܶ4,`SB*;" 6i ӇH'PHh8dkuEFfVE4!iPfm̀%CIAIUe .,oUe`-WA,oR4@@eMҐc>\Fx:,6(3*yۍM&CP.żXHc3̴q5@;xO 2o "Z(ҡ>r1ZEר@۠xh9 SFh [M2*qI]L\ MbB#< P6lr3Bcic)I$wJ{;A $W~ ǵYT.DAL ڛؔR08W;$,s(p" mT$! Mz4*~PBhQaȖq4@]S @);jPkV"*L& +5+gAŻ3>WyroFº8IԍߺI4\`m*LJ?* ; ΘΠHdn1Qf!Q@1"xщ"[5QRFmQTρ8V+Y8\/'JhCTBdz]*9Ia8Xpؘ ld,X@S]~kq3*HO E)K +Q!R.4@@uȵیIzB7 sqx@Ǭ8W<"Y"IX8  *XD1 +pA{R$iRִ553ɻ»D,Nf88]kȎP"f dԪգ"PK7>wvCgE,8xz^`횷ʆk-{~XAxx0΀ =~\(OG +: 650Mdπ2;,?ɃE y!*2m%"A3Pe tUL4L",a^Ox&]75@r5XZ b0^=%/ $ [4,oK&MܯTܟ1+i?DQIcq;ڲy,@"¨p'gJΤ|_ܟToi!khTXLI5DlgA9p8(I'Naf-af Ua!q8 ~kY.aܩ +em^헣Y{o T;S(TPp'h'xW0g + Moȧk4@TD bx#ψ`_}4ԟ{&^WJ! I_Q4_J#5@@Q+|iD]^s-9Op%_v:: @JAcI6 +#֗Aƨ L6+ LC I4  Hἧms4iZC 25@Biar;bxe̳9 yUCNKir=}nV1q":gR\-jOB/'l{hlH|,8](phi  +ZTRRa!tI? nO=A94Ie]_ ($(UaemvYPFz%{ -SGfc69Ccp͈F! PBÚNZ Y1RAxC6=&Lp3֑ wVתϭmeL*x)d}^9vsW**(zzxAp|lH~] Œ | ~h7AU%T\|‡:S|K]1%NϦ.i11Y(poCCS҃".pBPȼP[_R 0CJ8BRnp0&!sqXĊ(} | sHD& e~s{"f- 6DENij< L3\ŝ;"Hݦ$Z:QAH @?pSA~G,@h%{J#+1%/d5T"PaɀTtu7!gNfPeઔKH1ǝ1:uC1; q>=!{2+J"W0A8(BJM +_A"Q-Cz48 _-NG/*p^*DPZB\¤&C7t/rA/G^KK%ԚkXNF=iD@4@Y0q WxEhE)BPل"J=;Ku^!댨KdrׅLE$/E¢*]?D+FfyJ#$݀h #xޤԞ\yuydy>y^s5sFgy oM +k_l?B1h7ǿuzd_F}Ή Bm4_׿6+j^\[fT|8, ^1'æ?{D~>^ `ʝuܟ9&h HΨuZrX}Q̱(F_~&?.ߟo C)?(`D_IRd0ퟐ(LޗeV塢ۈYU +9P!0B, @ `O֟sS$iJi4߲uB[OV?(9 d*^h +QjN |RjbPM_XZT׵g~sdZ'¯V֯G|w>E9kf^bZ(cBD#84-YT(xT,^$By|m3(G eeh, [Bzn%JzҶmimR8,[G:(e6K8ŭad@,x ?L^JWa'NrO$8@IcWqCR 5@`Fs 3AZS^Iy N + Xxpv^HVQŽ*QWq_}r\j@:ͦc}(Ҡ8LR<&'[W'lM~E  ȵ}LE02yIxJ |iؤ$&l+$ 6NgeOH)g$gvA{]^ ݣE8{RIHC+ FtIj Nںu v/(&:jD"u_105'oFV}.=R-@'`+ R b,w{[B`Q|@i1띡1V`^`VK,bd61ِbqObz|pLp]EYBkӂA#T#D +{hOW.!ۣrC>A:אWCj5@>uV9l;DZb Mƚ%ҋ08r;ÀswjYl4=ov>Sasё7A숒,$B])Eq%/$^3 {b: Cĉ =/; +OL=PI˟I%_kNV-dМQW0 q5029-#L}**jdė~`%i) P: N#AQ5@``5[ز4jcȆ}[cEVrԦSc>*uä!P %2f'#Kw_]17֢ٕA4bY<>jHITWfW!&#ɤ'% &>;vJ񁆑JsXL䤺n ⮋Xb|9RӇ*d6XK*S08]L*DZ 4RXDGi+&B[6Zfg?N3`w`tJ1˭p$4@@O‘8b-0DzQTV$S^\e%*8{Cؤ_/,h.B[ɂ0!Ph7] a M;W/˴ Qp6_" |!n;ZSg!k@& +yfjYH7TO@;h_.aߞߞѸ=l؆wӇbCdA B+ʭh&DUd1^?u4|2}7Cӓ-.!.J\ʱhyte.pA&ic#eSXȅ&0Mx +C4V,:s ?x 4L('C2(ID(| +MȞjC(t7ϵ&i@2.V +MC{593d~  i~RZd@-݂ƀ_C_f +4?X]!=MQR>3Z94&P' ˲ P: @4fW)KV}$[Hr}6U?2~ 9kaCm#gv|U ]I4 _@ZQs0b5MI/c.T`M t+`'jrw;Nx>cxY*O|&\yYJy+or߭Jt#>>,lԚ:>e:6>:u?Әa_|[D} `D$X"-Xmx)يnZ)j6~q VIDlƀ%iKoqrq}_iNwӀ\+0 F xNMpLMUL8AqLn5 ]?CDZa`5Dƶ4nqlmql2mm# ȈHlE  扌s8 ^N(DcD)XcBp1 7]TaN2 + ge!h2DR<ڴ](#NA:Į*ݠD:vW|ztic Y DT  %tw d%܅@z)9pT4ŘXB 23J,`yA&FgE-ѪէHQF  &ipdю%"UJMjNr#ќAqQIQdZeh 2T0dh>v' 9t7&etaK1߰ӆuR"gL#,Ⱦыi-G}f&et蘎I;>T4 ЎOQХ`(12ME7 ++Wn‚4ʳ~Rl4*Q5ӞAG͚AXà|5FeR Y8YTT~`1S>E~rŌ^ 7ħtUxYb$udniPݙW;,,&n,DlĠZa\8 D%(ӪK˙e`RBy> 5rXd zz˧U^E6>9XDQ ]sB)wosqBCi.G97V')95@ _SɝJZ ,h6im|J^V)rN襝lǐXDGoD!BtkOͬauecBBP"\RNK*w;5ZktcPƬ\dېUf|`tIBIetDМadtA{B3o +]4!)aKYO>#nrH3q+~]) |t1_ fs_fdm"^ J6qczits"(B1[Q|<|l%_?6 XTJ4Abe06|nHr{+0: +1IICXT[p(> +;9qpg7«74@@ZGBV@=P7x!w / 1P)jO U[1> +b4)  c$ q#F!Y9.(L'$K!(( y,Ϝ|}R2>-(ofTN#.Wҋ<.z4F b${P(A;-5/04'0z y/v3x8"IJymHLEag/17Oѿ I4xDuzBW@:+ c9Q[Bi@a)R, +JHԁ;+֯VN8mT=Q'$h>q0kѬDvc-{o`>_A`2_4AiKQ(P/7Y,x)C \[8>R$Ĵ-ۿOq1~ lĵ_z5 #HVkĹf)M{31(V~Ai~PK"'$L@yFѝePEm$Ctoh;w~ԅD%#џ8[M^89EY'7G|mr ,哧@PI4(N~ VNu,^UhfLO/˟44#h?Bs)?(B(?gZHIeNK bM8.gc_} +M"_S`\O'lx$Xr'%cbL$Iƿc< GLSZx8 +{@i{9q Nt u jΠBXvBfrXgEV3I__񓙊O!]LMĿ4_C\UR +&~/M0(1 dȀZA}Ȧ ,Bc/wTOm$a/4ӊï[7`4 -z_/ lPvո$fi)̒+xlo?KhR2 +~>_3z|]ۂtbQ,q +D`? ^~J0}2Kca rr9:TrUT 8P=72q +_+J.?̈ۖm~K1Q 6P8>c po+`8/N|Kѱ%HyY\5!R)Z^8)MUjM>\  *6[Z9A67waxaxS+"j5$ȵ<3Xi FErhEm2?9֓mYݷZ yFB̓P\*4ZY }ܡSڶ.qÈ^y05%# H88VVVDYj"S[ori2aB,h"PD3PR;Vq);2$w9UPJV#Ii[CCTŒ) FwGeb o2%ٱ,Kv;ϩjW1:[ 7 2Zmˬ~ϱnP}ȇ}-h6 6^ 8C8^UW&JT:2r5^JAJzGdLdyxYOЄdt; Jyjx9ԁƒ1GIɨ P0p(Bb/ੂ@>EadzC,bQGV XON2Y dy*'D~BSX0!Ꝋ bɳ9 ,Mm;Ÿj5x/|%0$bA*DD,?D+RnE A+._V?cHΓ4$nEYP0t +[9Wp͉=@ ʈ)P.AڲϒbXT8iEQ9 WaY($ј$Oz$2aS*Fwjɓ +'Jh!-E,HO>HAaj^+EW쿥*1چRj !K@ xuޅ!ĒcңS_#Mh@v~qlfAJ*]P Z*% ؝9SK@ep:HEQI.=QS KѪuЎԪӄ6loQ:jt6$,^ -9#BǚiÏ,1O"C՜?l5e5"$CgFO}LՖ+I #PVz,K՗)PF$j5Pt+BTh4 ʀQYr1LMw +-P $0k>$&>=XJ|*ߚz9WUK]5B5w[4T!Eb/{U~K3s- oE5 ȉV%_.` G012ug"3N%hNc(f#'˩'' '[t }|2yQ6̇޴GjW +Wb/%f7ygņ1  ]B%Λ>J]*ފmsp#/67L>~nIêl.i]PH}ur_lbC+U #LœKE@رu(N +SpHUzacđN QDEZIm%IޮxM$F[ @-qt%OCV.By4{W/.cLlfDˋa[ÐGV@=^ـwA3EO>4k9+Y zQIqw3c _+ WsS^f>0Z,JB#$'Gqhl 8tH^E"z`j+q!X^İ_%9 W0jy!uH 21ȫ-/xNzRV}:xa 輸6 +eI{H5Ỉ + >R|ueJBVdB,/輠t|0C îoowM9^Yy"V֜4E 44ѣW`$luxx-MrT#j% u^Er4Ļ悡`6p9v Hd`2(5UfA%TU>W}ouViov@Ӵ@wW__Vi F0G@Y:' +cR3dO2#]'EDHg׶LNz0-"Dސڽ!l -Az0)`$Oьc~cG1?b1Ç=N"APtP$a\524>-*}ɷkk2 8aBQ>)O+'t/% X \;&dk 4؅q`X"`&y{6BR5&xpFu1Hm1m3T7Heǯs?g/:㏐0#y:~N$/VwBOXB?xL s\^adĜLls|2.LFM +]wp9;)X + +K_ﴟ'~9_::c]p}1>L) E) ĦaiZr8(/j@;83,M_ +Z׈bׁ?԰&tǸZ[$Aâ0<`4@Y؍L}h< Ԁ +W EJ&iOLd%}Lmmm Zg`EmLuh:qj|h| Z'. O0YYGTCidghbn n +l"<\,&J2V)T,r8ԎDnT9frC 68&ƿm'j$I(( ú -a i +4O ,;Kw(zC}5aSEdC*sF2j9", I. b;M$ + 3 Ʌ7ڴlXl-lrr&R,tNv J rG蝮 }"}/QT |}H,lBPnkӮ (o=H}JhGJ&E&&&TѸC<u:bp*엹Iч WP ow3"xVX"#ŔF +u2`"Wz[#IJM&u* +2K[缄4J^ǫ1~!\z J[\7[{C"IiPPc)@Ƒ(˽2%1 5@ePfNq0 qhv5ʻ$;"4dITR]b漚n_Snҍw6 9M(ӆi2T"KVǓ%"KJr +Ӻf8sR.wGJNEJxI5@S ^=\MڵIKub&](WH,Ί]ͦS([%BVnZ'zg}+3Ng M݈'JL#KHdt\(j;Zz,$kUw5X 3ݵ Rp5@rzD 0D%N\bTKI:ϳU aϢ"^͠fPPȠ(A]:Bl:Ÿ/[RV ЩY:R슛lZO6)0f+E˹NRأh!`CHu^i(b+ Bڒ/&%xZNQ^6h9h 9&20h2QeUQ_xI3QR<YsK5iOh 7Mp += Ϋ`F,aHLYd%peGeɎIsv0{jDjg력DGL!VMME;tDBY0:؊9Xm)[K Ae?|/uۭ9W;i,%5t:+~rUW.]|I H@~4"z2c:j;ܩBsfUI?U'aq 6+u5lBLX4zsNxȆ,Yt]Q{y3Nkg*E֚*1H!n)vw2ƏXq\2sCX0K>3B,>w%F+V3 ʀVVl쑴ҹBGNL f"Bnw Xk:]aMf6jKV MfA+Ah,=Z~^)_=Ι2ĢV!#NwQmw_`]&%XkN=RnE؃V )W g !_NJ"\98=:QB<5* ݢ õ7!I̵Zȫg6&m͐^DP^/uƌBγJY.v)b FA3.rjB!y!Hn-(2Z(oEyWpCUV#CsIJ-N& +q|RL4ސ<EWhAuEq FҭS<1jBg.o&mzo0 no=d{걱% Hb|CnEMy#]Rc"_ +EC + pv[Q&TK/CsǞh HG:`KdTo"M&wk8TM%&h0\8P˿R9?y5?z$̤ wߏV-I?w1E~JGC~K{hO?80}B)8"`De Tٯv(-(2x% yƿOwH~W#/؄BGlG>Sk5_"SoG:/ s@V`sX1䎝;!4s.$B4,CEG$~4_c?$񟦑H-n$fb_Y>BDҵ5@RY 뱶P#]d S"[`۝J ?0L['o x0;&fe WFZ#å`:ubڴP9Hat`CN,FfBm 91Y V34^ve鋴dd kŕi׫QyKK+v|Rv桦|p*}Fi0: : uҔځ苑uɡ4/C9K50H!IlJVdyWõ=(ʏԦ!EVCd'Zuq񘌺&U@7k@N鑅4]#gTN$}j)'ehDrS\rǃI^QT}8%#g5@&iY8[0E/$Wċ*"C!$K9[ZVBƈ%Az?tNT!ܑX-ඃMA*`F`sUׯ01]#^dzhjOL7 t\T%͐G050<+^+r6\RŒΩ9=K +YtMTT( g{t#Hrf"7Q:ynza5lҝ X>˔] +E d $tB +|'1pF(tB~* +md2[qbiQ֨Ή}/ٺl';n`$]i |:7h"lb g0pw2@s+D;I+A#z_5  8CiB]ZubJtp_cj/ J_L^wâ`Tiiqk# P2dWǣ12%0e2Y,uȏDmANч ]֨y +ipvs`-fY eFlJpk9Ȋ1$X\e&~v\vaRlJ sQ¥J`"0BFXL"~w N[Pfkw /S#@ +q(Є ׈8xQeVPJA- +8m! g%|K9$hJ21!,]Eu}jMDctkS 0QٲX /i: +!@$NI Ҁ)D4S[|egh{9~ՁwɆ %DQ +O Y}vMAx"NeA,@P8nd;ݴ#HtT1u4Pj&cT8uu3!āS`0`N6H 919E7 +Jf:eTG O +MzpIupr7^nʌ `2UPcsQą@$F&o.&sL&}Psq+J?S>[ XԻllu/4X,a4@1!#:QrDb_DľK}͚ÒzrdrćHS1g %[Y[r2m|d"pד̈)Ei`ЈT 5. 30<ã>aNı6 DF6r!B-<<^^i;C5~Y0Jy/2yQ˪V>șWt^x Ĥ<;!JGi(>mR>H&uBAΊe J1_( eqdVIh@J4!Q6:/tt<$F)0 Lvg"/{1-Z#c"4^9ezk|)ć)[C2rRXuk}rg273eӼwה-Kx$liFmպWR˃x>ͩ">AAML# RQO4F?QDB̉ +M~^l%l.aOȰGȅdRNkzeԻzʤXE6Jf ϻ(7stpoth)p˥Q(.&L="(8HB~TtdWDPTy8#48X.[Yjl,s+Ѭ2,$Jwi}TkM|<GԳǿN7% Y/*uH +i~IrF3݋LP'X.u̗}?Y?_!M%)~_rY po^6.(^D酲WZ>EӐIV~e?`ٿ39~(e~ Y㢮?Qc믿Q(Կ.hІ.HP:ZC313څT}ؖ8$$K<[$U{\~ T+J>߃2_V qM*ZPA`ZѸp`g^| P/ՌSmĺ y\4n.\{DWQD緬T7~Џ7g2 GuG:$P]̝]?9 +AC-)M&WX`>c_n @=g~H?\;J[/2$Z5?. ŧ/nZϞ$YHK#4m~h󚂚&̣L Rt+$ ^N'ȝ/DĜ"?Dy"b"4?%gC־!??tixGbچC_.DJ$ք)%'OФBҞe\g( F@lߡia0~L1~3?)lT7lAy+:L`_sh, _9.f_V#&֒|#K|thʡHa]yÄϧ;Îc(2W:R=X_v!6xF}@rhw#X`UAV[KbI7g௢r -$g]^h^+)٣S,x='Q1[5Z3#4$ݠݝ-/RF|w`U7FCZ >0HRI*&cjZ# #dG{8+&TվT%/2E6; +^_|Tn3K{͹.yPi% eM' I) Hm/ QE'{M'(j%!"E"#\$Kir 7] sd" EMRO +RE5bQ|_N8fj@$!#sHْp|Ts>;7#!vX#e t-W(A/4-z7#O<> "s©ր_aOOO +$aE tM®NNT^2 wKN>$XcҺ( FFF猳,̔F*ʽxIxs`j’RV-m!:jmK@ +xL28$,igVh/ޒ*Į1j4^7YI4@ 8.wY>ĹX}sJ0pgS@ P9FI٥/KJzzO.5jja-+버]뇊SnpjpQc|5@ k&ȯC"xL6NN +!@r_x2HWK[A!AQ/RةNuR.(n C+jFTTԄ*T TQWT }ךLTulG!X;- 3]Kh3r#6x5@F@~x]xXk$/L9§Z«\>`[iH+xA)V ֚8k%塕pkpЖMiS #=t!,ALDOXh1b: F~~& W`Rj-i*',]=qf&+)Ek&l`y ^\%éWĠyMOS`-4-0M!f]4AaDP`2{Σ+!^#^G#f?Jxra]l$2ڠ X} JEhT^TNyrV- Hv'<$LB5UQ6ch P[#elơsHTtUxvP}/ t ) X=!V[2`@>v*d~ᯔ'H$tk敨X8H:{Q6CFVBh@_;LLx{eOK7TV6i1!DtV~;T38'6ivn,#ZYJx|(n,4'pY9q.LcFN"M 4B18(t4@;(_D2JIKMI稶 uDo]4TO$ N!^Ujlp?^@{.bVJ[o ] `3SbKyXj 1&BHo$vV+x=I f8g'Vm  P/CE@GP=oKǝq3K  +ᑊl+3'g/@"1E>Koh܌hH|^xKpzluzA^ b*Z̄ +H2* PBq Rn!CYd-1\iPuaJJ_Ǧeb9tOy8$+Px@ݒ>uy+q <Cǎ //dHz2F̌< +#or)q"wK4@`'l\'`cc(kj+oYqcu)iAeF$UMaI[]iyESI<$BoBe9.1if3EdٵksA<:\?t=od鳟 Hx'Jc7J2 vnPdžH!q_[~Ffb9X1m4Z$N|Pmũq@QUׯۀQ~ObR~ 3۪&aߨě }[iiĔW犨E?FϺ*WJ◄ϊ/c*;4n ,O?ƶ) +IMTz \W6A+  +O(&?d#Kil1tN6sUC̷̈́X&IhiQ#kD~'7e[B~|k~MP~T0, 6X؇ I [(2T"*[zaŦ?u߳Zu2c/@ zkERWZsg62ۇ%{mL ;ݧ3iyj:f+H] jyqܗJk6ܟn[T-q$1Zw-$6{{q2mryĂ7ʐ% Kq ,›MM.b3)|0dr5ݾ o(l?mWWF#Xg g*g$۳iپ?l_GfbFAwg~]cq44-90]}$5@4뫨t /7BMZ@Ҿ}bi_+ȕ=+5-%(VP,3S%)h & #u FܬFݜ Rtj +4@`!HڻtyR@8&[dw Nn7}0AȾ(rgBdV'/!ѐeg2O8(`xAXaw?O-b% 7X[C}x "5@%9 +*ZGe >h~%ȾXB_S)WR(C&3/]a %2nHnr u3J=- ڹ, 6C실9>c=] >Q`,Iq___2N_a S%\.Fnx,+6r 4@`QAho_HBϷFfPRo횻C#J N>NrwC4c}E *$E 02Eϛ /EㆻbSďЖ0.nBi߄䠀ê™>]ArHxId%o#.YkBx3t%>V$jXl ]pTQxm)8#kss)AS$$ҾE+n$ A&#l8p52p_;ʾn~ꎳy.*dSȼa6h#x PʐqOʳ +p0p#amXni%q]B`li/xx$è)I󰑃$S : E%FNIѨSPvjN;K*e&`Q]tt~gSC#ۀ'󗋷r3$V 'Gr +|5ՋCB)B.DŎ5NIĴrrlrdj|tXv8")Q7/Zr* +zzе?X>slX}Qn0i$9 +5Dt y 7"*|#*?_ͧ$ /NIV?d,`C2Q8CtZ6hmf^`ksfeԸQ[&AɌL( H4hKh, <HjTNa_ W8ekpktvv:\Ο1󸎪P"=}D0Q.z +XHW9_6gx +8AHcvf50fOB_,XgyT[1QUED ^/PdZ99H0⨞QRTQ*DQhth*9"/J/^ȃC^OߕMWӞ`NF +y:Fy0XRlTH-0RC2&"p9TЬW~T$-Jn +mQfH .i@rlϨ*%ضN!TVZof +e*ԯ(!,ⷑ[X^iv1?Z2y,j_LޯZ5LDi8sI}e60DB v)G3Qe=[؈B^ seDj3d#ɨ29~Z-E}A FB#a慻DG FBxuCυ+PBFb%P)ʟ6OFYva~4|_>QTemJP#WJYPIs211~uŌ_Ɵ={I3~k0m: !AzXj"ؒVj±{/[x1}gZ6]KymxBNsMECzĒ +Jƺ U8mLSⓁpg9NP_qFA' "ƈ m1aDV'XJGĐȳ 3Wi +>$5<>9pTQf(b<Xcm@6o'ዶcG4= +%vc^Ow`r~bvpjt KQF}b|o)+\0e<Ŧzx4 ѝƮ546NP> +q>Ewd +澁sU0~Krd1?Rt+F}  V/F _L7H,6Mp;sbuI_up),}L>Uo?K +"uo?U{/b)b+._KrMH$rTn9"r }IA\c$"(N APB_>~h?+*wF7ƍgٵۻM*} u-B9jw*O"WCkNde)TjL%Nc{A^R5+~+ +?kN1i,qnN+Hiٷ|X{PPv"9EDFAȇSah!+trgK#"`췪7.}G}Ք~Ea!WP{d_J.s d z,Rhhh{Eon(7t"a N?'<=>ZѲetb0 +W.?X"s]`T9q+dGnhCnϋ%A~.ˇaMt PT+Jc*xZ4\ ' / >l`0Ұ)'X08M]p>ɩu6CÔV zDQlN' {=Cm^N_E`A`҆EJANcM,!Ƕ*ha|_;럓,賏l +v= ++d.LXu >`hE$7VlVl;v m FpIxV=V==Ș v+yF*]ǃŬa#(U@H0n1azjb1Xʃ$U>2(r7ejb iLyTlܖmTÍحB< "xfnH >|'N #U|NT(yA$ս./JmZbkd4xx4LJFc(2ݦÝCy6jy,MBL PDZߞ\BejN6Llm +/I; SDYz(iQ5>c{о4hCAhssLx+BH2oOVE00ĠoPc#A9=* ܴH0P1c.e8DJ7r1Hn2 X}4P%bYB4cL0eճGf̳}Gjt9%*XKk-w 3   +!*^DC,G͸=eƝpd&N + Dȡĕ)*hMR׋lp:ǥt%׏ M, +ln8 H1 q04╣Xc7Q0j"ًW~l(G, +(jmn&7dl\p~.%IEt ~f\ن[+p|Te9Բ9,IG,ǁ  ';\$|HE0Cf[聯S)We8ev\GI9G9wJA/ D-!Rs7dKn Z )hI75TpJ<pJkPvSE.gAQY%(&t AܾU_6Du[+/!4֓,XӦ۔\>2leV4xaRhxT2}h6ZY$\UTߡ+T7|F+YE"b W{9n\upRCm/x:moG2몌\z "+YlYg +؊1[?m=EK8)Tmx~7_D OvܸXqbW:V9Uf1䰜fՠ/Qhok1߽pip\`cDǃאNf5HY0(čYKiA""|MkBi)Vxa]PºphB}`v/l^x \b`ZmN:"m o^ޜ޴Ճ ^INd%2B`P!ʟaUQi\70Jt~p]F: +HJhN^B嗷B/X~za}A0a3c _sGȑ J KYA@dtnK+ekfuQXQO+eG1cDFJ[ -[ql\ p &'P{hwz$[*k\.]fPtS^ehR|tGb|ZF'ϔ:j+KcU- + kp j hͦB#uk=:B^=:am'4k.-57r+!6g 8B`:CdE+J߁omsX&g gp:Q?m9xQ Am" Pg _B0(U +6v?UJkR_8iL~+b>R 0[heıey,:,0Um%WlR7vxjϿ4='pD.*?W+.uV qO+Yj{x9ϓʮ 'Zj%Jy;S?I^l/7 .oo.'~kTL0J +֩ BؾYVZ qNE_xfi jf>m?xhw]`Oj@.)XdơYU)èC,:Jp~\୤Ml YH+}0i?_GQ} ԾB " +|F`\RB$Ă!~E wtA. d55[* 4ŮHCKIhi@fDon"0s_958D֞`E _$sÑn)NNt$x(8Cu|ZQ +endstream endobj 7 0 obj [6 0 R] endobj 35 0 obj <> endobj xref +0 36 +0000000000 65535 f +0000000016 00000 n +0000000144 00000 n +0000056047 00000 n +0000000000 00000 f +0000059416 00000 n +0000059230 00000 n +0001223655 00000 n +0000056098 00000 n +0000056526 00000 n +0000453681 00000 n +0000063812 00000 n +0000063699 00000 n +0000058083 00000 n +0000058668 00000 n +0000058716 00000 n +0000059300 00000 n +0000059331 00000 n +0000059839 00000 n +0000060226 00000 n +0000063847 00000 n +0000453755 00000 n +0000454153 00000 n +0000455660 00000 n +0000521249 00000 n +0000586838 00000 n +0000652427 00000 n +0000698943 00000 n +0000764532 00000 n +0000830121 00000 n +0000895710 00000 n +0000961299 00000 n +0001026888 00000 n +0001092477 00000 n +0001158066 00000 n +0001223678 00000 n +trailer +<]>> +startxref +1223860 +%%EOF diff --git a/engine/__init__.py b/engine/__init__.py new file mode 100644 index 0000000..c335042 --- /dev/null +++ b/engine/__init__.py @@ -0,0 +1,12 @@ +from engine.ast import Context, ast_node +import engine.ddl, engine.projection + +def initialize(): + return Context() + +def generate(ast, cxt): + for k in ast.keys(): + if k in ast_node.types.keys(): + root = ast_node.types[k](None, ast, cxt) + +__all__ = ["initialize", "generate"] diff --git a/engine/ast.py b/engine/ast.py new file mode 100644 index 0000000..0abc0c2 --- /dev/null +++ b/engine/ast.py @@ -0,0 +1,369 @@ +from engine.utils import base62uuid +from copy import copy +# replace column info with this later. +class ColRef: + def __init__(self, cname, _ty, cobj, cnt, table:'TableInfo', name, id, compound = False): + self.cname = cname # column object location + self.cxt_name = None # column object in context + self.type = _ty + self.cobj = cobj + self.cnt = cnt + self.table = table + self.name = name + self.id = id # position in table + self.order_pending = None # order_pending + self.compound = compound # compound field (list as a field) + self.views = [] + self.aux_columns = [] # columns for temperary calculations + # e.g. order by, group by, filter by expressions + + self.__arr__ = (cname, _ty, cobj, cnt, table, name, id) + + def reference(self): + cxt = self.table.cxt + self.table.reference() + if self not in cxt.columns_in_context: + counter = 0 + base_name = self.table.table_name + '_' + self.name + if base_name in cxt.columns_in_context.values(): + while (f'{base_name}_{counter}') in cxt.columns_in_context.values(): + counter += 1 + base_name = f'{base_name}_{counter}' + self.cxt_name = base_name + cxt.columns_in_context[self] = base_name + # TODO: change this to cname; + cxt.emit(f'auto& {base_name} = *(ColRef<{self.type}> *)(&{self.table.cxt_name}->colrefs[{self.id}]);') + elif self.cxt_name is None: + self.cxt_name = cxt.columns_in_context[self] + + return self.cxt_name + + def __getitem__(self, key): + if type(key) is str: + return getattr(self, key) + else: + return self.__arr__[key] + + def __setitem__(self, key, value): + self.__arr__[key] = value + + def __str__(self): + return self.reference() + def __repr__(self): + return self.reference() + +class TableInfo: + + def __init__(self, table_name, cols, cxt:'Context'): + # statics + self.table_name = table_name + self.alias = set([table_name]) + self.columns_byname = dict() # column_name, type + self.columns = [] + self.cxt = cxt + self.cxt_name = None + self.views = set() + #keep track of temp vars + self.local_vars = dict() + self.rec = None + self.groupinfo = None + self.add_cols(cols) + # runtime + self.n_rows = 0 # number of cols + self.order = [] # assumptions + + cxt.tables_byname[self.table_name] = self # construct reverse map + def reference(self): + if self not in self.cxt.tables_in_context: + counter = 0 + base_name = self.table_name + if base_name in self.cxt.tables_in_context.values(): + while (f'{base_name}_{counter}') in self.cxt.tables_in_context.values(): + counter += 1 + base_name = f'{base_name}_{counter}' + self.cxt_name = base_name + self.cxt.tables_in_context[self] = base_name + + type_tags = '<' + for c in self.columns: + type_tags += c.type + ',' + if type_tags.endswith(','): + type_tags = type_tags[:-1] + type_tags += '>' + + self.cxt.emit(f'auto& {base_name} = *(TableInfo{type_tags} *)(cxt->tables["{self.table_name}"]);') + return self.cxt_name + def refer_all(self): + self.reference() + for c in self.columns: + c.reference() + def add_cols(self, cols, new = True): + for i, c in enumerate(cols): + self.add_col(c, new, i) + def add_col(self, c, new = True, i = 0): + _ty = c['type'] + if new: + cname =f'get<{i}>({self.table_name})' + _ty = _ty if type(c) is ColRef else list(_ty.keys())[0] + col_object = ColRef(cname, _ty, c, 1, self,c['name'], len(self.columns)) + else: + col_object = c + cname = c.cname + c.table = self + self.cxt.ccols_byname[cname] = col_object + self.columns_byname[c['name']] = col_object + self.columns.append(col_object) + def get_size(self): + size_tmp = 'tmp_sz_'+base62uuid(6) + self.cxt.emit(f'const auto& {size_tmp} = {self.columns[0].reference()}.size;') + return size_tmp + @property + def n_cols(self): + return len(self.columns) + + def materialize_orderbys(self): + view_stack = '' + stack_name = '' + for o in self.order: + o.materialize() + if len(view_stack) == 0: + view_stack = o.view.name + stack_name = view_stack + else: + view_stack = view_stack+'['+ o.view.name +']' + # TODO: Optimize by doing everything in a stmt + if len(view_stack) > 0: + if len(self.order) > 1: + self.cxt.emit(f'{stack_name}:{view_stack}') + for c in self.columns: + c.order_pending = stack_name + self.order[0].node.view = stack_name + self.order.clear() + + def get_col_d(self, col_name): + col = self.columns_byname[col_name] + if type(self.rec) is set: + self.rec.add(col) + return col + + def get_ccolname_d(self, col_name): + return self.get_col_d(col_name).cname + + def get_col(self, col_name): + self.materialize_orderbys() + col = self.get_col_d(col_name) + if type(col.order_pending) is str: + self.cxt.emit_no_flush(f'{col.cname}:{col.cname}[{col.order_pending}]') + col.order_pending = None + return col + def get_ccolname(self, col_name): + return self.get_col(col_name).cname + + def add_alias(self, alias): + # TODO: Scoping of alias should be constrainted in the query. + if alias in self.cxt.tables_byname.keys(): + print("Error: table alias already exists") + return + self.cxt.tables_byname[alias] = self + self.alias.add(alias) + + def parse_col_names(self, colExpr, materialize = True, raw = False): + # get_col = self.get_col if materialize else self.get_col_d + + parsedColExpr = colExpr.split('.') + ret = None + if len(parsedColExpr) <= 1: + ret = self.get_col_d(colExpr) + else: + datasource = self.cxt.tables_byname[parsedColExpr[0]] + if datasource is None: + raise ValueError(f'Table name/alias not defined{parsedColExpr[0]}') + else: + ret = datasource.parse_col_names(parsedColExpr[1], raw) + from engine.expr import index_expr + string = ret.reference() + index_expr + if self.groupinfo is not None and ret and ret in self.groupinfo.raw_groups: + string = f'get<{self.groupinfo.raw_groups.index(ret)}>({{y}})' + return string, ret if raw else string + +class View: + def __init__(self, context, table = None, tmp = True): + self.table: TableInfo = table + self.name = 'v'+base62uuid(7) + if type(table) is TableInfo: + table.views.add(self) + self.context = context + + def construct(self): + self.context.emit(f'{self.name}:()') + +class Context: + function_head = ''' + extern "C" int __DLLEXPORT__ dllmain(Context* cxt) { + using namespace std; + using namespace types; + + ''' + LOG_INFO = 'INFO' + LOG_ERROR = 'ERROR' + LOG_SILENT = 'SILENT' + def new(self): + self.tmp_names = set() + self.udf_map = dict() + self.headers = set(['\"./server/libaquery.h\"']) + self.finalized = False + # read header + self.ccode = '' + self.ccodelet = '' + with open('header.cxx', 'r') as outfile: + self.ccode = outfile.read() + # datasource will be availible after `from' clause is parsed + # and will be deactivated when the `from' is out of scope + self.datasource = None + self.ds_stack = [] + self.scans = [] + self.removing_scan = False + + def __init__(self): + self.tables:list[TableInfo] = [] + self.tables_byname = dict() + self.ccols_byname = dict() + self.gc_name = 'gc_' + base62uuid(4) + self.tmp_names = set() + self.udf_map = dict() + self.headers = set(['\"./server/libaquery.h\"']) + self.finalized = False + self.log_level = Context.LOG_SILENT + self.print = print + # read header + self.ccode = '' + self.ccodelet = '' + self.columns_in_context = dict() + self.tables_in_context = dict() + with open('header.cxx', 'r') as outfile: + self.ccode = outfile.read() + # datasource will be availible after `from' clause is parsed + # and will be deactivated when the `from' is out of scope + self.datasource = None + self.ds_stack = [] + self.scans = [] + self.removing_scan = False + def add_table(self, table_name, cols): + tbl = TableInfo(table_name, cols, self) + self.tables.append(tbl) + return tbl + + def gen_tmptable(self): + from engine.utils import base62uuid + return f't{base62uuid(7)}' + def reg_tmp(self, name, f): + self.tmp_names.add(name) + self.emit(f"{self.gc_name}.reg({{{name}, 0,0{'' if f is None else ',{f}'}}});") + + def define_tmp(self, typename, isPtr = True, f = None): + name = 'tmp_' + base62uuid() + if isPtr: + self.emit(f'auto* {name} = new {typename};') + self.reg_tmp(name, f) + else: + self.emit(f'auto {name} = {typename};') + return name + def emit(self, codelet): + self.ccode += self.ccodelet + codelet + '\n' + self.ccodelet = '' + def emit_no_flush(self, codelet): + self.ccode += codelet + '\n' + def emit_flush(self): + self.ccode += self.ccodelet + '\n' + self.ccodelet = '' + def emit_nonewline(self, codelet): + self.ccodelet += codelet + + def datsource_top(self): + if len(self.ds_stack) > 0: + return self.ds_stack[-1] + else: + return None + def datasource_pop(self): + if len(self.ds_stack) > 0: + self.ds_stack.pop() + return self.ds_stack[-1] + else: + return None + def datasource_push(self, ds): + if type(ds) is TableInfo: + self.ds_stack.append(ds) + return ds + else: + return None + def remove_scan(self, scan, str_scan): + self.emit(str_scan) + self.scans.remove(scan) + + def Info(self, msg): + if self.log_level.upper() == Context.LOG_INFO: + self.print(msg) + def Error(self, msg): + if self.log_level.upper() == Context.LOG_ERROR: + self.print(msg) + else: + self.Info(self, msg) + + + def finalize(self): + if not self.finalized: + headers = '' + for h in self.headers: + if h[0] != '"': + headers += '#include <' + h + '>\n' + else: + headers += '#include ' + h + '\n' + self.ccode = headers + self.function_head + self.ccode + 'return 0;\n}' + self.headers = set() + return self.ccode + def __str__(self): + self.finalize() + return self.ccode + def __repr__(self) -> str: + return self.__str__() + + +class ast_node: + types = dict() + header = [] + def __init__(self, parent:"ast_node", node, context:Context = None): + self.context = parent.context if context is None else context + self.parent = parent + self.datasource = None + self.init(node) + self.produce(node) + self.spawn(node) + self.consume(node) + + def emit(self, code): + self.context.emit(code) + def emit_no_ln(self, code): + self.context.emit_nonewline(code) + + name = 'null' + + # each ast node has 3 stages. + # `produce' generates info for child nodes + # `spawn' populates child nodes + # `consume' consumes info from child nodes and finalizes codegen + # For simple operators, there may not be need for some of these stages + def init(self, _): + pass + def produce(self, _): + pass + def spawn(self, _): + pass + def consume(self, _): + pass + +# include classes in module as first order operators +def include(objs): + import inspect + for _, cls in inspect.getmembers(objs): + if inspect.isclass(cls) and issubclass(cls, ast_node) and not cls.name.startswith('_'): + ast_node.types[cls.name] = cls \ No newline at end of file diff --git a/engine/ddl.py b/engine/ddl.py new file mode 100644 index 0000000..1d5a6da --- /dev/null +++ b/engine/ddl.py @@ -0,0 +1,128 @@ +# code-gen for data decl languages + +from engine.orderby import orderby +from engine.ast import ColRef, TableInfo, ast_node, Context, include +from engine.scan import scan +from engine.utils import base62uuid + +class create_table(ast_node): + name = 'create_table' + def __init__(self, parent: "ast_node", node, context: Context = None, cexprs = None, lineage = False): + self.cexprs = cexprs + self.lineage = lineage + super().__init__(parent, node, context) + def produce(self, node): + if type(node) is not TableInfo: + ct = node[self.name] + tbl = self.context.add_table(ct['name'], ct['columns']) + else: + tbl = node + + col_type_str = ','.join([c.type for c in tbl.columns]) + # create tables in c + self.emit(f"auto {tbl.table_name} = new TableInfo<{col_type_str}>(\"{tbl.table_name}\", {tbl.n_cols});") + self.emit("cxt->tables.insert({\"" + tbl.table_name + f"\", {tbl.table_name}"+"});") + self.context.tables_in_context[tbl] = tbl.table_name + tbl.cxt_name = tbl.table_name + tbl.refer_all() + # create an empty new table + if self.cexprs is None: + for c in tbl.columns: + self.emit(f'{c.cxt_name}.init("{c.name}");') + # create an output table + else: + # 1 to 1 lineage. + if len(self.context.scans) == 0: + if self.lineage: + order = 'order_' + base62uuid(6) + self.emit(f'auto {order} = {self.parent.datasource.cxt_name}->order_by<{orderby(self.parent, self.parent.assumptions).result()}>();') + self.lineage = '*' + order + else: + self.lineage = None + for i, c in enumerate(tbl.columns): + self.emit(f'{c.cxt_name}.init("{c.name}");') + self.emit(f"{c.cxt_name} = {self.cexprs[i](self.lineage)};") + self.lineage = None + self.parent.assumptions = None + else: + scanner:scan = self.context.scans[-1] + if self.lineage: + lineage_var = 'lineage_' + base62uuid(6) + counter_var = 'counter_' + base62uuid(6) + scanner.add(f'auto {lineage_var} = {self.datasource.cxt_name}->bind({tbl.cxt_name});', "init") + scanner.add(f'auto {counter_var} = 0;', "init") + scanner.add(f"{lineage_var}.emplace_back({counter_var}++);", "front") + self.lineage = f"{lineage_var}.rid" + for i, c in enumerate(tbl.columns): + scanner.add(f'{c.cxt_name}.init("{c.name}");', "init") + scanner.add(f"{c.cxt_name} = {self.cexprs[i](scanner.it_ver)};") + +class insert(ast_node): + name = 'insert' + def produce(self, node): + ct = node[self.name] + table:TableInfo = self.context.tables_byname[ct] + + values = node['query']['select'] + if len(values) != table.n_cols: + raise ValueError("Column Mismatch") + table.refer_all() + for i, s in enumerate(values): + if 'value' in s: + cname = table.columns[i].cxt_name + self.emit(f"{cname}.emplace_back({s['value']});") + else: + # subquery, dispatch to select astnode + pass + +class c(ast_node): + name='c' + def produce(self, node): + self.emit(node[self.name]) + +class load(ast_node): + name="load" + def produce(self, node): + self.context.headers.add('"csv.h"') + node = node[self.name] + table:TableInfo = self.context.tables_byname[node['table']] + table.refer_all() + csv_reader_name = 'csv_reader_' + base62uuid(6) + col_types = [c.type for c in table.columns] + col_tmp_names = ['tmp_'+base62uuid(8) for _ in range(len(table.columns))] + # col_type_str = ",".join(col_types) + col_names = ','.join([f'"{c.name}"' for c in table.columns]) + + self.emit(f'io::CSVReader<{len(col_types)}> {csv_reader_name}("{node["file"]["literal"]}");') + self.emit(f'{csv_reader_name}.read_header(io::ignore_extra_column, {col_names});') + for t, n in zip(col_types, col_tmp_names): + self.emit(f'{t} {n};') + self.emit(f'while({csv_reader_name}.read_row({",".join(col_tmp_names)})) {{ \n') + for i, c in enumerate(table.columns): + self.emit(f'{c.cxt_name}.emplace_back({col_tmp_names[i]});') + self.emit('}') + + +class outfile(ast_node): + name="_outfile" + def produce(self, node): + out_table:TableInfo = self.parent.out_table + filename = node['loc']['literal'] if 'loc' in node else node['literal'] + sep = ',' if 'term' not in node else node['term']['literal'] + file_pointer = 'fp_' + base62uuid(6) + self.emit(f'FILE* {file_pointer} = fopen("{filename}", "w");') + self.emit(f'{out_table.cxt_name}->printall("{sep}", "\\n", nullptr, {file_pointer});') + self.emit(f'fclose({file_pointer});') + # self.context.headers.add('fstream') + # cout_backup_buffer = 'stdout_' + base62uuid(4) + # ofstream = 'ofstream_' + base62uuid(6) + # self.emit(f'auto {cout_backup_buffer} = cout.rdbuf();') + # self.emit(f'auto {ofstream} = ofstream("{filename}");') + # self.emit(f'cout.rdbuf({ofstream}.rdbuf());') + # TODO: ADD STMTS. + # self.emit(f'cout.rdbuf({cout_backup_buffer});') + # self.emit(f'{ofstream}.close();') + + +import sys +include(sys.modules[__name__]) \ No newline at end of file diff --git a/engine/expr.py b/engine/expr.py new file mode 100644 index 0000000..dc71047 --- /dev/null +++ b/engine/expr.py @@ -0,0 +1,131 @@ +from engine.ast import ast_node, ColRef +start_expr = 'f"' +index_expr = '{\'\' if x is None and y is None else f\'[{x}]\'}' +end_expr = '"' + +class expr(ast_node): + name='expr' + builtin_func_maps = { + 'max': 'max', + 'min': 'min', + 'avg': 'avg', + 'sum': 'sum', + 'count' : 'count', + 'mins': ['mins', 'minw'], + 'maxs': ['maxs', 'maxw'], + 'avgs': ['avgs', 'avgw'], + 'sums': ['sums', 'sumw'], + } + + binary_ops = { + 'sub':'-', + 'add':'+', + 'mul':'*', + 'div':'/', + 'mod':'%', + 'and':'&&', + 'or':'||', + 'xor' : '^', + 'gt':'>', + 'lt':'<', + 'le':'<=', + 'gt':'>=' + } + + compound_ops = { + } + + unary_ops = { + 'neg' : '-', + 'not' : '!' + } + + coumpound_generating_ops = ['avgs', 'mins', 'maxs', 'sums'] + \ + list( binary_ops.keys()) + list(compound_ops.keys()) + list(unary_ops.keys() ) + + def __init__(self, parent, node, materialize_cols = True, abs_col = False): + self.materialize_cols = materialize_cols + self.raw_col = None + self.__abs = abs_col + self.inside_agg = False + if(type(parent) is expr): + self.inside_agg = parent.inside_agg + self.__abs = parent.__abs + ast_node.__init__(self, parent, node, None) + + def init(self, _): + from engine.projection import projection + parent = self.parent + self.isvector = parent.isvector if type(parent) is expr else False + self.is_compound = parent.is_compound if type(parent) is expr else False + if type(parent) in [projection, expr]: + self.datasource = parent.datasource + else: + self.datasource = self.context.datasource + self.udf_map = parent.context.udf_map + self._expr = '' + self.cexpr = None + self.func_maps = {**self.udf_map, **self.builtin_func_maps} + + def produce(self, node): + if type(node) is dict: + for key, val in node.items(): + if key in self.func_maps: + # TODO: distinguish between UDF agg functions and other UDF functions. + self.inside_agg = True + self.context.headers.add('"./server/aggregations.h"') + if type(val) is list and len(val) > 1: + cfunc = self.func_maps[key] + cfunc = cfunc[len(val) - 1] if type(cfunc) is list else cfunc + self._expr += f"{cfunc}(" + for i, p in enumerate(val): + self._expr += expr(self, p)._expr + (','if i {self.group_type};') + self.emit(f'unordered_map<{self.group_type}, vector_type, ' + f'transTypes<{self.group_type}, hasher>> {self.group};') + self.n_grps = len(node) + self.scanner = scan(self, self.datasource, expr.toCExpr(first_col)()+'.size') + self.scanner.add(f'{self.group}[forward_as_tuple({g_contents(self.scanner.it_ver)})].emplace_back({self.scanner.it_ver});') + + + def consume(self, _): + self.referenced = self.datasource.rec + self.datasource.rec = None + self.scanner.finalize() + + def deal_with_assumptions(self, assumption:assumption, out:TableInfo): + gscanner = scan(self, self.group) + val_var = 'val_'+base62uuid(7) + gscanner.add(f'auto &{val_var} = {gscanner.it_ver}.second;') + gscanner.add(f'{self.datasource.cxt_name}->order_by<{assumption.result()}>(&{val_var});') + gscanner.finalize() + + def finalize(self, cexprs, out:TableInfo): + gscanner = scan(self, self.group) + key_var = 'key_'+base62uuid(7) + val_var = 'val_'+base62uuid(7) + + gscanner.add(f'auto &{key_var} = {gscanner.it_ver}.first;') + gscanner.add(f'auto &{val_var} = {gscanner.it_ver}.second;') + gscanner.add(';\n'.join([f'{out.columns[i].reference()}.emplace_back({ce(x=val_var, y=key_var)})' for i, ce in enumerate(cexprs)])+';') + + gscanner.finalize() + + self.datasource.groupinfo = None \ No newline at end of file diff --git a/engine/join.py b/engine/join.py new file mode 100644 index 0000000..9aa462f --- /dev/null +++ b/engine/join.py @@ -0,0 +1,6 @@ +from engine.ast import ast_node + + +class join(ast_node): + name='join' + \ No newline at end of file diff --git a/engine/orderby.py b/engine/orderby.py new file mode 100644 index 0000000..99e4ab5 --- /dev/null +++ b/engine/orderby.py @@ -0,0 +1,65 @@ +from engine.ast import ColRef, TableInfo, View, ast_node, Context +from engine.utils import base62uuid, seps +from engine.expr import expr + +class order_item: + def __init__(self, name, node, order = True): + self.name = name + self.order = order + self.node = node + self.materialized = False + + def materialize(self): + if not self.materialized: + self.name = expr(self.node, self.name, False).cexpr + self.materialized = True + return ('' if self.order else '-') + f'({self.name})' + + def __str__(self): + return self.name + def __repr__(self): + return self.__str__() + +class orderby(ast_node): + name = '_orderby' + def __init__(self, parent: "ast_node", node, context: Context = None): + self.col_list = [] + super().__init__(parent, node, context) + def init(self, _): + self.datasource = self.parent.datasource + self.order = [] + self.view = '' + def produce(self, node): + if type(node) is not list: + node = [node] + for n in node: + order = not ('sort' in n and n['sort'] == 'desc') + col_id = self.datasource.columns_byname[n['value']].id + col_id = col_id if order else -col_id-1 + if col_id not in self.col_list: + self.col_list.append(col_id) + self.order.append(order_item(n['value'], self, order)) + + def merge(self, node): + self.produce(node) + + def finialize(self, references): + self.order = [ o for o in self.order if o.name in references ] + + def result(self, sep:str = ','): + return sep.join([f"{c}" for c in self.col_list]) + +class assumption(orderby): + name = '_assumption' + def __init__(self, parent: "ast_node", node, context: Context = None, exclude = []): + self.exclude = exclude + super().__init__(parent, node, context) + + def produce(self, node): + if type(node) is not list: + node = [node] + [n for n in node if n not in self.exclude] + return super().produce(node) + + def empty(self): + return len(self.col_list) == 0 \ No newline at end of file diff --git a/engine/projection.py b/engine/projection.py new file mode 100644 index 0000000..fa199ed --- /dev/null +++ b/engine/projection.py @@ -0,0 +1,180 @@ +from engine.ast import ColRef, TableInfo, ast_node, Context, include +from engine.groupby import groupby +from engine.join import join +from engine.expr import expr +from engine.orderby import assumption, orderby +from engine.scan import filter +from engine.utils import base62uuid, enlist, base62alp, has_other +from engine.ddl import create_table, outfile +import copy + +class projection(ast_node): + name='select' + def __init__(self, parent:ast_node, node, context:Context = None, outname = None, disp = True): + self.disp = disp + self.outname = outname + self.group_node = None + self.assumptions = None + self.where = None + ast_node.__init__(self, parent, node, context) + def init(self, _): + if self.outname is None: + self.outname = self.context.gen_tmptable() + + def produce(self, node): + p = node['select'] + self.projections = p if type(p) is list else [p] + self.context.Info(node) + + def spawn(self, node): + self.datasource = None + if 'from' in node: + from_clause = node['from'] + if type(from_clause) is list: + # from joins + join(self, from_clause) + elif type(from_clause) is dict: + if 'value' in from_clause: + value = from_clause['value'] + if type(value) is dict: + if 'select' in value: + # from subquery + projection(self, from_clause, disp = False) + else: + # TODO: from func over table + print(f'from func over table{node}') + elif type(value) is str: + self.datasource = self.context.tables_byname[value] + if 'name' in value: + self.datasource.add_alias(value['name']) + if 'assumptions' in from_clause: + self.assumptions = enlist(from_clause['assumptions']) + + elif type(from_clause) is str: + self.datasource = self.context.tables_byname[from_clause] + + if self.datasource is None: + raise ValueError('spawn error: from clause') + + if self.datasource is not None: + self.datasource_changed = True + self.prev_datasource = self.context.datasource + self.context.datasource = self.datasource + if 'where' in node: + self.where = filter(self, node['where'], True) + # self.datasource = filter(self, node['where'], True).output + # self.context.datasource = self.datasource + + if 'groupby' in node: + self.group_node = groupby(self, node['groupby']) + self.datasource = copy.copy(self.datasource) # shallow copy + self.datasource.groupinfo = self.group_node + else: + self.group_node = None + + def consume(self, node): + self.inv = True + disp_varname = 'd'+base62uuid(7) + has_groupby = self.group_node is not None + cexprs = [] + flatten = False + cols = [] + self.out_table = TableInfo('out_'+base62uuid(4), [], self.context) + if 'outfile' in node: + flatten = True + + new_names = [] + proj_raw_cols = [] + for i, proj in enumerate(self.projections): + cname = '' + compound = False + self.datasource.rec = set() + if type(proj) is dict: + if 'value' in proj: + e = proj['value'] + sname = expr(self, e) + if type(sname.raw_col) is ColRef: + proj_raw_cols.append(sname.raw_col) + sname = sname._expr + fname = expr.toCExpr(sname) # fastest access method at innermost context + absname = expr(self, e, abs_col=True)._expr # absolute name at function scope + # TODO: Make it single pass here. + compound = True # compound column + cexprs.append(fname) + cname = e if type(e) is str else ''.join([a if a in base62alp else '' for a in expr.toCExpr(absname)()]) + if 'name' in proj: # renaming column by AS keyword + cname = proj['name'] + new_names.append(cname) + elif type(proj) is str: + col = self.datasource.get_col_d(proj) + if type(col) is ColRef: + col.reference() + + compound = compound and has_groupby and has_other(self.datasource.rec, self.group_node.referenced) + self.datasource.rec = None + + typename = f'decays' + if not compound: + typename = f'value_type<{typename}>' + + cols.append(ColRef(cname, expr.toCExpr(typename)(), self.out_table, 0, None, cname, i, compound=compound)) + + self.out_table.add_cols(cols, False) + + lineage = None + + if has_groupby: + create_table(self, self.out_table) # creates empty out_table. + if self.assumptions is not None: + self.assumptions = assumption(self, self.assumptions, exclude=self.group_node.raw_groups) + if not self.assumptions.empty(): + self.group_node.deal_with_assumptions(self.assumptions, self.out_table) + self.assumptions = None + self.group_node.finalize(cexprs, self.out_table) + else: + # if all assumptions in projections, treat as orderby + lineage = self.assumptions is not None and has_other(self.assumptions, proj_raw_cols) + spawn = create_table(self, self.out_table, cexprs = cexprs, lineage = lineage) # create and populate out_table. + if lineage and type(spawn.lineage) is str: + lineage = spawn.lineage + self.assumptions = orderby(self, self.assumptions) # do not exclude proj_raw_cols + else: + lineage = None + if self.where is not None: + self.where.finalize() + + if type(lineage) is str: + order = 'order_' + base62uuid(6) + self.emit(f'auto {order} = {self.datasource.cxt_name}->order_by<{self.assumptions.result()}>({lineage});') + self.emit(f'{self.out_table.cxt_name}->materialize(*{order});') + self.assumptions = None + + if self.assumptions is not None: + orderby_node = orderby(self, self.assumptions) + else: + orderby_node = None + + if 'orderby' in node: + self.datasource = self.out_table + self.context.datasource = self.out_table # discard current ds + orderbys = node['orderby'] + orderby_node = orderby(self, orderbys) if orderby_node is None else orderby_node.merge(orderbys) + + if orderby_node is not None: + self.emit(f'auto {disp_varname} = {self.out_table.reference()}->order_by_view<{orderby_node.result()}>();') + else: + disp_varname = f'*{self.out_table.cxt_name}' + + if self.disp: + self.emit(f'print({disp_varname});') + + + if flatten: + outfile(self, node['outfile']) + + if self.datasource_changed: + self.context.datasource = self.prev_datasource + + +import sys +include(sys.modules[__name__]) \ No newline at end of file diff --git a/engine/scan.py b/engine/scan.py new file mode 100644 index 0000000..812165e --- /dev/null +++ b/engine/scan.py @@ -0,0 +1,99 @@ +from xmlrpc.client import Boolean +from engine.ast import ColRef, TableInfo, View, ast_node, Context +from engine.utils import base62uuid +from engine.expr import expr + +class scan(ast_node): + name = 'scan' + def __init__(self, parent: "ast_node", node, size = None, context: Context = None, const = False): + self.type = type + self.size = size + self.const = "const " if const else "" + super().__init__(parent, node, context) + def init(self, _): + self.datasource = self.context.datasource + self.initializers = '' + self.start = '' + self.front = '' + self.body = '' + self.end = '}' + self.mode = None + self.filters = [] + scan_vars = set(s.it_var for s in self.context.scans) + self.it_ver = 'i' + base62uuid(2) + while(self.it_ver in scan_vars): + self.it_ver = 'i' + base62uuid(6) + self.parent.context.scans.append(self) + def produce(self, node): + if type(node) is ColRef: + self.colref = node + if self.size is None: + self.mode = ["col", node.table] + self.start += f'for ({self.const}auto& {self.it_ver} : {node.reference()}) {{\n' + else: + self.mode = ["idx", node.table] + self.start += f"for (uint32_t {self.it_ver} = 0; {self.it_ver} < {node.reference()}.size; ++{self.it_ver}){{\\n" + elif type(node) is str: + self.mode = ["idx", None] + self.start+= f'for({self.const}auto& {self.it_ver} : {node}) {{\n' + else: + self.mode = ["idx", node] # Node is the TableInfo + self.start += f"for (uint32_t {self.it_ver} = 0; {self.it_ver} < {self.size}; ++{self.it_ver}){{\n" + + def add(self, stmt, position = "body"): + if position == "body": + self.body += stmt + '\n' + elif position == "init": + self.initializers += stmt + '\n' + else: + self.front += stmt + '\n' + + def finalize(self): + for f in self.filters: + self.start += f + self.end += '}' + self.context.remove_scan(self, self.initializers + self.start + self.front + self.body + self.end) + +class filter(ast_node): + name = 'filter' + def __init__(self, parent: "ast_node", node, materialize = False, context = None): + self.materialize = materialize + super().__init__(parent, node, context) + def init(self, _): + self.datasource = self.context.datasource + self.view = View(self.context, self.datasource) + self.value = None + + def spawn(self, node): + # TODO: deal with subqueries + self.modified_node = node + return super().spawn(node) + def __materialize__(self): + if self.materialize: + cols = [] if self.datasource is None else self.datasource.columns + self.output = TableInfo('tn'+base62uuid(6), cols, self.context) + self.output.construct() + if type(self.value) is View: # cond filtered on tables. + self.emit(f'{self.value.name}:&{self.value.name}') + for o, c in zip(self.output.columns,self.value.table.columns): + self.emit(f'{o.cname}:{c.cname}[{self.value.name}]') + elif self.value is not None: # cond is scalar + tmpVar = 't'+base62uuid(7) + self.emit(f'{tmpVar}:{self.value}') + for o, c in zip(self.output.columns, self.datasource.columns): + self.emit(f'{o.cname}:$[{tmpVar};{c.cname};()]') + + def finalize(self): + self.scanner.finalize() + def consume(self, _): + # TODO: optimizations after converting expr to cnf + self.scanner = None + for s in self.context.scans: + if self.datasource == s.mode[1]: + self.scanner = s + break + if self.scanner is None: + self.scanner = scan(self, self.datasource, self.datasource.get_size()) + self.expr = expr(self, self.modified_node) + self.scanner.filters.append(f'if ({self.expr.cexpr(self.scanner.it_ver)}) {{\n') + \ No newline at end of file diff --git a/engine/types.py b/engine/types.py new file mode 100644 index 0000000..3e18301 --- /dev/null +++ b/engine/types.py @@ -0,0 +1,34 @@ +from engine.ast import Context + + +class Types: + name = 'Any' + cname = 'void*' + ctype_name = "types::NONE" + def __init__(self, context:Context): + self.cxt = context + def cast_to(self, *_): + return self + def cast_from(self, *_): + return self + def __repr__(self) -> str: + return self.cname + +class String(Types): + name = 'String' + cname = 'const char*' + ctype_name = "types::ASTR" + def cast_from(self, ty, val, container = None): + if type(ty) is Int: + self.cxt.emit() + +class Int(Types): + name = "Int" + cname = "int" + ctype_name = "types::AINT" + +class Float(Types): + name = "Float" + cname = "float" + ctype_name = "types::AFLOAT" + \ No newline at end of file diff --git a/engine/utils.py b/engine/utils.py new file mode 100644 index 0000000..5a7c427 --- /dev/null +++ b/engine/utils.py @@ -0,0 +1,25 @@ +import uuid + +base62alp = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' + +def base62uuid(crop=8): + id = uuid.uuid4().int + ret = '' + + while id: + ret = base62alp[id % 62] + ret + id //= 62 + + return ret[:crop] if len(ret) else '0' + +def enlist(l): + return l if type(l) is list else [l] + +def seps(s, i, l): + return s if i < len(l) - 1 else '' + +def has_other(a, b): + for ai in a: + if ai not in b: + return True + return False \ No newline at end of file diff --git a/header.cxx b/header.cxx new file mode 100644 index 0000000..e69de29 diff --git a/index.html b/index.html new file mode 100644 index 0000000..a6260f2 --- /dev/null +++ b/index.html @@ -0,0 +1,19 @@ +Google




 

߼

© 2022 - ˽Ȩ -

\ No newline at end of file diff --git a/mmw.cpp b/mmw.cpp new file mode 100644 index 0000000..6ff7226 --- /dev/null +++ b/mmw.cpp @@ -0,0 +1,43 @@ +#include +#include + +using std::uint32_t; + +template +void running(void *array, uint32_t len, uint32_t w){ + T* arr = static_cast (array); + std::deque> cache; + for(int i = 0; i < len; ++i){ + if(!cache.empty() && cache.front().second == i-w) cache.pop_front(); + if constexpr(minmax) + while(!cache.empty() && cache.back().first>arr[i]) cache.pop_back(); + else + while(!cache.empty() && cache.back().first +inline void mm(void *array, uint32_t len, uint32_t w, bool mm){ + mm? running(array, len, w) : running(array, len, w); +} +extern "C" { + #include + + int mmw(void *array, unsigned long long misc[]){ + char _ty = misc[0]; + uint32_t len = misc[1]; + uint32_t w = misc[2]; + bool minmax = misc[3]-0x10000; + switch(_ty){ + case 'F': mm(array, len, w, minmax); break; + case 'C': case 'G': mm(array, len, w, minmax); break; + case 'H': mm(array, len, w, minmax); break; + case 'D': case 'I': mm(array, len, w, minmax); break; + case 'T': case 'J': mm(array, len, w, minmax); break; + case 'L': if(len == 0) break; + default: printf("nyi %c\n", _ty); + } + return 0; + } +} diff --git a/moving_avg.a b/moving_avg.a new file mode 100644 index 0000000..c0fb9a3 --- /dev/null +++ b/moving_avg.a @@ -0,0 +1,14 @@ +CREATE TABLE sale(Month INT, sales INT) + +LOAD DATA INFILE "moving_avg.csv" +INTO TABLE sale +FIELDS TERMINATED BY "\t" + +SELECT Month,avgs(3,sales) +FROM sale + ASSUMING ASC Month +INTO OUTFILE "moving_avg_output.csv" +FIELDS TERMINATED BY ";" + +select Month, mins(2,sales) from sale assuming desc Month group by sales +into outfile "flatten.csv" \ No newline at end of file diff --git a/moving_avg.csv b/moving_avg.csv new file mode 100644 index 0000000..6d3b55d --- /dev/null +++ b/moving_avg.csv @@ -0,0 +1,6 @@ +Month,sales +1,100 +4,140 +5,130 +3,140 +2,120 diff --git a/msc-plugin/lineage.hpp b/msc-plugin/lineage.hpp new file mode 100644 index 0000000..cb20820 --- /dev/null +++ b/msc-plugin/lineage.hpp @@ -0,0 +1,5 @@ +#pragma once +template +struct lineage { + +}; \ No newline at end of file diff --git a/msc-plugin/msc-plugin.vcxproj b/msc-plugin/msc-plugin.vcxproj new file mode 100644 index 0000000..fd13c4f --- /dev/null +++ b/msc-plugin/msc-plugin.vcxproj @@ -0,0 +1,188 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {8081fdaa-4d13-4b7a-adb2-8224af7f1c81} + Project1 + 10.0 + msc-plugin + + + + DynamicLibrary + true + v143 + Unicode + false + + + DynamicLibrary + false + v143 + true + Unicode + true + + + DynamicLibrary + true + v143 + Unicode + false + false + + + DynamicLibrary + false + v143 + true + Unicode + true + + + + + + + + + + + + + + + + + + + + + + dll.so + + + + dll.so + + + + dll.so + + + + dll.so + + + + Level3 + true + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpplatest + Guard + true + + + Console + DebugFull + $(ProjectDir)\..\dll.so + true + + + + + Level3 + true + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpplatest + + + Console + true + true + true + $(ProjectDir)\..\dll.so + + + + + Level3 + true + _ALLOW_RTCc_IN_STL;_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpplatest + Guard + true + ProgramDatabase + Disabled + false + true + false + + + Console + DebugFull + $(ProjectDir)\..\dll.so + true + + + + + Level3 + true + true + true + _CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpplatest + + + Console + true + true + true + $(ProjectDir)\..\dll.so + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/msvs-py/msvs-py.pyproj b/msvs-py/msvs-py.pyproj new file mode 100644 index 0000000..4230f8c --- /dev/null +++ b/msvs-py/msvs-py.pyproj @@ -0,0 +1,93 @@ + + + Debug + 2.0 + ccc243f5-663e-45b7-a6de-b2468c58b3a7 + . + ..\prompt.py + ..\msvs-py + .. + . + msvs-py + msvs-py + False + + + true + false + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nyctx100.csv b/nyctx100.csv new file mode 100644 index 0000000..d206dbd --- /dev/null +++ b/nyctx100.csv @@ -0,0 +1,99 @@ +VendorID,tpep_pickup_datetime,tpep_dropoff_datetime,passenger_count,trip_distance,RatecodeID,store_and_fwd_flag,PULocationID,DOLocationID,payment_type,fare_amount,extra,mta_tax,tip_amount,tolls_amount,improvement_surcharge,total_amount +1,1/9/2017 11:13,1/9/2017 11:25,1,3.3,1,N,263,161,1,12.5,0,0.5,2,0,0.3,15.3 +1,1/9/2017 11:32,1/9/2017 11:36,1,0.9,1,N,186,234,1,5,0,0.5,1.45,0,0.3,7.25 +1,1/9/2017 11:38,1/9/2017 11:42,1,1.1,1,N,164,161,1,5.5,0,0.5,1,0,0.3,7.3 +1,1/9/2017 11:52,1/9/2017 11:57,1,1.1,1,N,236,75,1,6,0,0.5,1.7,0,0.3,8.5 +2,1/1/2017 0:00,1/1/2017 0:00,1,0.02,2,N,249,234,2,52,0,0.5,0,0,0.3,52.8 +1,1/1/2017 0:00,1/1/2017 0:03,1,0.5,1,N,48,48,2,4,0.5,0.5,0,0,0.3,5.3 +2,1/1/2017 0:00,1/1/2017 0:39,4,7.75,1,N,186,36,1,22,0.5,0.5,4.66,0,0.3,27.96 +1,1/1/2017 0:00,1/1/2017 0:06,1,0.8,1,N,162,161,1,6,0.5,0.5,1.45,0,0.3,8.75 +1,1/1/2017 0:00,1/1/2017 0:08,2,0.9,1,N,48,50,1,7,0.5,0.5,0,0,0.3,8.3 +2,1/1/2017 0:00,1/1/2017 0:05,5,1.76,1,N,140,74,2,7,0.5,0.5,0,0,0.3,8.3 +2,1/1/2017 0:00,1/1/2017 0:15,1,8.47,1,N,138,262,1,24,0.5,0.5,7.71,5.54,0.3,38.55 +1,1/1/2017 0:00,1/1/2017 0:11,2,2.4,1,N,142,236,2,10.5,0.5,0.5,0,0,0.3,11.8 +1,1/1/2017 0:00,1/1/2017 0:23,2,12.6,5,N,161,265,1,60,0,0,10,0,0.3,70.3 +1,1/1/2017 0:00,1/1/2017 0:08,1,0.9,1,N,234,186,1,7,0.5,0.5,2.05,0,0.3,10.35 +2,1/1/2017 0:00,1/1/2017 0:09,4,2.43,1,N,141,107,1,9.5,0.5,0.5,2.7,0,0.3,13.5 +2,1/1/2017 0:00,1/1/2017 0:16,2,2.6,1,N,79,163,1,12.5,0.5,0.5,2.76,0,0.3,16.56 +2,1/1/2017 0:00,1/1/2017 0:18,5,4.25,1,N,148,36,2,16.5,0.5,0.5,0,0,0.3,17.8 +2,1/1/2017 0:00,1/1/2017 0:07,1,0.65,1,N,48,68,1,6.5,0.5,0.5,1.7,0,0.3,9.5 +2,1/1/2017 0:00,1/1/2017 0:34,1,3.42,1,N,230,148,1,22.5,0.5,0.5,0,0,0.3,23.8 +1,1/1/2017 0:00,1/1/2017 0:24,1,6.6,1,N,186,232,2,23,0.5,0.5,0,0,0.3,24.3 +1,1/1/2017 0:00,1/1/2017 0:02,1,0.5,1,N,36,37,2,4,0.5,0.5,0,0,0.3,5.3 +1,1/1/2017 0:00,1/1/2017 0:08,1,1.2,1,N,41,74,1,7.5,0.5,0.5,1.75,0,0.3,10.55 +1,1/1/2017 0:00,1/1/2017 0:12,1,1.7,1,N,125,45,2,9.5,0.5,0.5,0,0,0.3,10.8 +1,1/1/2017 0:00,1/1/2017 0:09,1,5.3,1,N,138,192,2,16,0.5,0.5,0,0,0.3,17.3 +1,1/1/2017 0:00,1/1/2017 0:01,2,0.2,1,N,143,143,2,3,0.5,0.5,0,0,0.3,4.3 +2,1/1/2017 0:00,1/1/2017 0:15,1,4.68,1,N,140,223,1,16.5,0.5,0.5,4.45,0,0.3,22.25 +2,1/1/2017 0:00,1/1/2017 0:12,1,1.9,1,N,68,48,1,10,0.5,0.5,0,0,0.3,11.3 +2,1/1/2017 0:00,1/1/2017 0:24,2,2.1,1,N,239,48,2,16,0.5,0.5,0,0,0.3,17.3 +2,1/1/2017 0:00,1/1/2017 0:13,1,2.75,1,N,233,114,1,11.5,0.5,0.5,2,0,0.3,14.8 +2,1/1/2017 0:00,1/1/2017 0:00,1,0,5,N,14,14,1,32.8,0,0.5,0,0,0.3,33.6 +2,1/1/2017 0:00,1/1/2017 0:10,5,1.53,1,N,239,48,2,6,0.5,0.5,0,0,0.3,7.3 +2,1/1/2017 0:00,1/1/2017 0:16,1,1.26,1,N,164,161,1,10.5,0.5,0.5,2.36,0,0.3,14.16 +1,1/1/2017 0:00,1/1/2017 0:07,1,1,1,N,256,255,2,6.5,0.5,0.5,0,0,0.3,7.8 +2,1/1/2017 0:00,1/1/2017 0:19,2,13.97,1,N,138,181,1,37.5,0.5,0.5,11.64,0,0.3,50.44 +1,1/1/2017 0:00,1/1/2017 0:04,1,0.7,1,N,237,43,2,5.5,0.5,0.5,0,0,0.3,6.8 +1,1/1/2017 0:00,1/1/2017 0:04,1,0.4,1,N,158,68,2,4.5,0.5,0.5,0,0,0.3,5.8 +2,1/1/2017 0:00,1/1/2017 0:20,4,1.85,1,N,229,68,2,13,0.5,0.5,0,0,0.3,14.3 +2,1/1/2017 0:00,1/1/2017 0:08,1,4.29,1,N,132,10,2,13.5,0.5,0.5,0,0,0.3,14.8 +1,1/1/2017 0:00,1/1/2017 0:09,1,4.4,1,N,170,87,1,14.5,0.5,0.5,3.15,0,0.3,18.95 +1,1/1/2017 0:00,1/1/2017 0:01,1,0.1,1,N,243,243,2,3,0.5,0.5,0,0,0.3,4.3 +2,1/1/2017 0:00,1/1/2017 0:03,1,0.24,1,N,161,161,1,4,0.5,0.5,1.06,0,0.3,6.36 +2,1/1/2017 0:00,1/1/2017 0:03,1,0.92,1,N,50,246,1,4.5,0.5,0.5,1.45,0,0.3,7.25 +1,1/1/2017 0:00,1/1/2017 0:18,1,1.1,1,N,237,161,2,12,0.5,0.5,0,0,0.3,13.3 +1,1/1/2017 0:00,1/1/2017 0:12,1,6.9,1,N,138,80,2,20,0.5,0.5,0,0,0.3,21.3 +2,1/1/2017 0:00,1/1/2017 0:04,5,0.6,1,N,238,238,2,5,0.5,0.5,0,0,0.3,6.3 +2,1/1/2017 0:00,1/1/2017 0:03,3,0.56,1,N,74,75,2,4.5,0.5,0.5,0,0,0.3,5.8 +1,1/1/2017 0:00,1/1/2017 0:06,1,0.9,1,N,113,249,1,6,0.5,0.5,2.15,0,0.3,9.45 +2,1/1/2017 0:00,1/1/2017 0:35,1,2.88,1,N,163,113,1,21.5,0.5,0.5,4.56,0,0.3,27.36 +1,1/1/2017 0:00,1/1/2017 0:24,2,3.9,1,N,129,179,2,19.5,0.5,0.5,0,0,0.3,20.8 +2,1/1/2017 0:00,1/1/2017 0:09,1,1.7,1,N,41,75,1,8.5,0.5,0.5,2.45,0,0.3,12.25 +1,1/1/2017 0:00,1/1/2017 0:06,3,0.7,1,N,229,161,1,6,0.5,0.5,1.45,0,0.3,8.75 +1,1/1/2017 0:00,1/1/2017 0:03,4,0.9,1,N,236,236,2,5,0.5,0.5,0,0,0.3,6.3 +2,1/1/2017 0:00,1/1/2017 0:06,1,0.79,1,N,163,237,1,6,0.5,0.5,1.82,0,0.3,9.12 +2,1/1/2017 0:00,1/1/2017 0:08,1,1.25,1,N,234,162,2,7.5,0.5,0.5,0,0,0.3,8.8 +2,1/1/2017 0:00,1/1/2017 0:08,5,2.05,1,N,113,233,1,8.5,0.5,0.5,1,0,0.3,10.8 +2,1/1/2017 0:00,1/1/2017 0:12,1,2.56,1,N,113,229,1,10.5,0.5,0.5,8.2,0,0.3,20 +2,1/1/2017 0:00,1/1/2017 0:11,1,0.1,1,N,264,264,2,8,0.5,0.5,0,0,0.3,9.3 +2,1/1/2017 0:00,1/1/2017 0:08,1,1.78,1,N,113,231,1,8,0.5,0.5,1.86,0,0.3,11.16 +1,1/1/2017 0:00,1/1/2017 0:31,2,10.5,1,N,138,230,2,35.5,0.5,0.5,0,5.54,0.3,42.34 +1,1/1/2017 0:00,1/1/2017 0:05,1,0.9,1,N,148,4,1,6,0.5,0.5,1.45,0,0.3,8.75 +2,1/1/2017 0:00,1/1/2017 0:09,1,1.97,1,N,74,168,2,9,0.5,0.5,0,0,0.3,10.3 +2,1/1/2017 0:00,1/1/2017 0:42,6,20.99,2,N,132,249,2,52,0,0.5,0,0,0.3,52.8 +1,1/1/2017 0:00,1/1/2017 0:02,1,0,1,N,249,249,3,3,0.5,0.5,0,0,0.3,4.3 +2,1/1/2017 0:00,1/1/2017 0:06,2,0.66,1,N,79,79,1,5.5,0.5,0.5,1.36,0,0.3,8.16 +1,1/1/2017 0:00,1/1/2017 0:12,1,3.6,1,N,263,7,2,13,0.5,0.5,0,0,0.3,14.3 +2,1/1/2017 0:00,1/1/2017 0:12,6,4.02,1,N,41,235,1,14,0.5,0.5,3.06,0,0.3,18.36 +2,1/1/2017 0:00,1/1/2017 0:07,2,2.66,1,N,148,233,1,10,0.5,0.5,2.26,0,0.3,13.56 +1,1/1/2017 0:00,1/1/2017 0:19,1,11.4,1,N,138,181,2,31.5,0.5,0.5,0,0,0.3,32.8 +2,1/1/2017 0:00,1/1/2017 0:15,1,6.59,1,N,143,42,2,20,0.5,0.5,0,0,0.3,21.3 +2,1/1/2017 0:00,1/1/2017 0:20,1,2.82,1,N,144,170,2,14,0.5,0.5,0,0,0.3,15.3 +2,1/1/2017 0:00,1/1/2017 0:07,1,1.09,1,N,129,129,2,7,0.5,0.5,0,0,0.3,8.3 +2,1/1/2017 0:00,1/1/2017 0:01,2,0.41,1,N,239,238,1,3.5,0.5,0.5,0.72,0,0.3,5.52 +1,1/1/2017 0:00,1/1/2017 0:13,2,2.1,1,Y,45,137,3,10.5,0.5,0.5,0,0,0.3,11.8 +1,1/1/2017 0:00,1/1/2017 0:03,1,2.2,1,N,137,137,2,3.5,0.5,0.5,0,0,0.3,4.8 +1,1/1/2017 0:00,1/1/2017 0:43,1,20.3,1,N,132,61,1,58,0.5,0.5,5,0,0.3,64.3 +1,1/1/2017 0:00,1/1/2017 0:12,1,2.8,1,N,239,229,1,11.5,0.5,0.5,1,0,0.3,13.8 +2,1/1/2017 0:00,1/1/2017 0:08,3,1.96,1,N,249,88,2,8.5,0.5,0.5,0,0,0.3,9.8 +1,1/1/2017 0:00,1/1/2017 0:01,1,0,1,N,138,138,3,2.5,0.5,0.5,0,0,0.3,3.8 +1,1/1/2017 0:00,1/1/2017 0:11,1,4.8,1,N,162,45,1,15.5,0.5,0.5,3.35,0,0.3,20.15 +2,1/1/2017 0:00,1/1/2017 0:13,2,4.69,1,N,262,90,2,16,0.5,0.5,0,0,0.3,17.3 +2,1/1/2017 0:00,1/1/2017 0:05,5,0.6,1,N,170,233,1,4.5,0.5,0.5,1.16,0,0.3,6.96 +2,1/1/2017 0:00,1/1/2017 0:04,5,0.93,1,N,239,142,1,4.5,0.5,0.5,15,0,0.3,20.8 +2,1/1/2017 0:00,1/1/2017 0:14,2,8.6,1,N,148,7,2,25,0.5,0.5,0,0,0.3,26.3 +2,1/1/2017 0:00,1/1/2017 0:07,5,1.17,1,N,158,90,1,6.5,0.5,0.5,2.34,0,0.3,10.14 +2,1/1/2017 0:00,1/1/2017 0:14,2,4.41,1,N,233,74,1,14.5,0.5,0.5,2,0,0.3,17.8 +1,1/1/2017 0:00,1/1/2017 0:05,1,0.9,1,N,106,106,2,6,0.5,0.5,0,0,0.3,7.3 +1,1/1/2017 0:00,1/1/2017 0:17,2,3,1,N,231,107,1,14,0.5,0.5,2,0,0.3,17.3 +1,1/1/2017 0:00,1/1/2017 0:10,1,1.2,1,N,113,137,2,8,0.5,0.5,0,0,0.3,9.3 +1,1/1/2017 0:00,1/1/2017 0:14,1,1.2,1,N,246,186,1,9.5,0.5,0.5,3.2,0,0.3,14 +1,1/1/2017 0:00,1/1/2017 0:21,1,5.9,1,N,162,129,1,20.5,0.5,0.5,4.35,0,0.3,26.15 +1,1/1/2017 0:00,1/1/2017 0:05,2,0.5,1,N,264,264,1,5,0.5,0.5,1.25,0,0.3,7.55 +2,1/1/2017 0:00,1/1/2017 0:23,1,6.58,1,N,186,152,1,23.5,0.5,0.5,7.44,0,0.3,32.24 +1,1/1/2017 0:01,1/1/2017 0:17,1,3.7,1,N,50,79,1,14,0.5,0.5,3.05,0,0.3,18.35 +2,1/1/2017 0:01,1/1/2017 0:23,1,5.91,1,N,125,37,1,21,0.5,0.5,4.46,0,0.3,26.76 +1,1/1/2017 0:01,1/1/2017 0:09,1,1.2,1,N,152,42,2,7.5,0.5,0.5,0,0,0.3,8.8 +1,1/1/2017 0:01,1/1/2017 0:05,2,1.2,1,N,137,162,1,6,0.5,0.5,1,0,0.3,8.3 +1,1/1/2017 0:01,1/1/2017 0:16,2,7.4,1,N,132,130,2,22.5,0.5,0.5,0,0,0.3,23.8 +2,1/1/2017 0:01,1/1/2017 0:08,6,0.87,1,N,107,107,1,6,0.5,0.5,5,0,0.3,12.3 diff --git a/out.cpp b/out.cpp new file mode 100644 index 0000000..2cb8e2b --- /dev/null +++ b/out.cpp @@ -0,0 +1,57 @@ +#include "./server/aggregations.h" +#include +#include "csv.h" +#include "./server/hasher.h" +#include "./server/libaquery.h" + + extern "C" int __DLLEXPORT__ dllmain(Context* cxt) { + using namespace std; + using namespace types; + + auto test = new TableInfo("test", 4); +cxt->tables.insert({"test", test}); +auto& test_a = *(ColRef *)(&test->colrefs[0]); +auto& test_b = *(ColRef *)(&test->colrefs[1]); +auto& test_c = *(ColRef *)(&test->colrefs[2]); +auto& test_d = *(ColRef *)(&test->colrefs[3]); +test_a.init("a"); +test_b.init("b"); +test_c.init("c"); +test_d.init("d"); +io::CSVReader<4> csv_reader_6pX2fy("test.csv"); +csv_reader_6pX2fy.read_header(io::ignore_extra_column, "a","b","c","d"); +int tmp_1E7DxvaO; +int tmp_5JwTTT4O; +int tmp_3gbplDAu; +int tmp_XK4BgA6z; +while(csv_reader_6pX2fy.read_row(tmp_1E7DxvaO,tmp_5JwTTT4O,tmp_3gbplDAu,tmp_XK4BgA6z)) { + +test_a.emplace_back(tmp_1E7DxvaO); +test_b.emplace_back(tmp_5JwTTT4O); +test_c.emplace_back(tmp_3gbplDAu); +test_d.emplace_back(tmp_XK4BgA6z); +} +typedef record record_type61iBrX3; +unordered_map, transTypes> g7sUysrP; +for (uint32_t i2I = 0; i2I < test_a.size; ++i2I){ +g7sUysrP[forward_as_tuple(test_a[i2I],test_b[i2I],test_d[i2I])].emplace_back(i2I); +} +auto out_1SHu = new TableInfo,value_type>,value_type>>("out_1SHu", 3); +cxt->tables.insert({"out_1SHu", out_1SHu}); +auto& out_1SHu_sumtestc = *(ColRef> *)(&out_1SHu->colrefs[0]); +auto& out_1SHu_b = *(ColRef>> *)(&out_1SHu->colrefs[1]); +auto& out_1SHu_d = *(ColRef>> *)(&out_1SHu->colrefs[2]); +out_1SHu_sumtestc.init("sumtestc"); +out_1SHu_b.init("b"); +out_1SHu_d.init("d"); +for(auto& i64 : g7sUysrP) { +auto &key_645kbJO = i64.first; +auto &val_1UnUa89 = i64.second; +out_1SHu_sumtestc.emplace_back(sum(test_c[val_1UnUa89])); +out_1SHu_b.emplace_back(get<1>(key_645kbJO)); +out_1SHu_d.emplace_back(get<2>(key_645kbJO)); +} +auto d6tAcglo = out_1SHu->order_by_view<-3,1>(); +print(d6tAcglo); +return 0; +} \ No newline at end of file diff --git a/out_attempt1.cpp b/out_attempt1.cpp new file mode 100644 index 0000000..de6ffb3 --- /dev/null +++ b/out_attempt1.cpp @@ -0,0 +1,60 @@ +#include "./server/libaquery.h" +#include +#include "./server/hasher.h" +#include "csv.h" +#include "./server/aggregations.h" + + extern "C" int __DLLEXPORT__ dllmain(Context* cxt) { + using namespace std; + using namespace types; + + auto sale = new TableInfo("sale", 2); +cxt->tables.insert({"sale", sale}); +auto& sale_Month = *(ColRef *)(&sale->colrefs[0]); +auto& sale_sales = *(ColRef *)(&sale->colrefs[1]); +sale_Month.init(); +sale_sales.init(); +io::CSVReader<2> csv_reader_53ychC("moving_avg.csv"); +csv_reader_53ychC.read_header(io::ignore_extra_column, "Month","sales"); +int tmp_7ttMnHd3; +int tmp_5nHjeAtP; +while(csv_reader_53ychC.read_row(tmp_7ttMnHd3,tmp_5nHjeAtP)) { + +sale_Month.emplace_back(tmp_7ttMnHd3); +sale_sales.emplace_back(tmp_5nHjeAtP); +} +auto out_3Xio = new TableInfo,decays>("out_3Xio", 2); +cxt->tables.insert({"out_3Xio", out_3Xio}); +auto& out_3Xio_Month = *(ColRef> *)(&out_3Xio->colrefs[0]); +auto& out_3Xio_avgsw3salesales = *(ColRef> *)(&out_3Xio->colrefs[1]); +out_3Xio_Month.init(); +out_3Xio_Month = sale_Month; +out_3Xio_avgsw3salesales.init(); +out_3Xio_avgsw3salesales = avgw(3,sale_sales); +// print(*out_3Xio); +FILE* fp_4nKGhD = fopen("moving_avg_output.csv", "w"); +out_3Xio->printall(",", "\n", nullptr, fp_4nKGhD); +fclose(fp_4nKGhD); +typedef record record_type1H2vDGL; +unordered_map, transTypes> g6Mjxfk5; +for (uint32_t i7u = 0; i7u < sale_sales.size; ++i7u){ +g6Mjxfk5[forward_as_tuple(sale_sales[i7u])].emplace_back(i7u); +} +auto out_2IU2 = new TableInfo,decays>("out_2IU2", 2); +cxt->tables.insert({"out_2IU2", out_2IU2}); +auto& out_2IU2_sales = *(ColRef> *)(&out_2IU2->colrefs[0]); +auto& out_2IU2_minsw2saleMonth = *(ColRef> *)(&out_2IU2->colrefs[1]); +out_2IU2_sales.init(); +out_2IU2_minsw2saleMonth.init(); +for(auto& i5J : g6Mjxfk5) { +auto &key_4jl5toH = i5J.first; +auto &val_VJGwVwH = i5J.second; +out_2IU2_sales.emplace_back(get<0>(key_4jl5toH)); +out_2IU2_minsw2saleMonth.emplace_back(minw(2,sale_Month[val_VJGwVwH])); +} +// print(*out_2IU2); +FILE* fp_18R4fY = fopen("flatten.csv", "w"); +out_2IU2->printall(",","\n", nullptr, fp_18R4fY); +fclose(fp_18R4fY); +return 0; +} \ No newline at end of file diff --git a/prompt.py b/prompt.py new file mode 100644 index 0000000..c94d931 --- /dev/null +++ b/prompt.py @@ -0,0 +1,289 @@ +import enum +import re +import time +import dbconn + +from mo_parsing import ParseException +import aquery_parser as parser +import engine +import reconstruct as xengine +import subprocess +import mmap +import sys +import os +from engine.utils import base62uuid +import atexit + +import threading +import ctypes + +class RunType(enum.Enum): + Threaded = 0 + IPC = 1 + +server_mode = RunType.Threaded + +server_bin = 'server.bin' if server_mode == RunType.IPC else 'server.so' + +try: + os.remove(server_bin) +except Exception as e: + print(type(e), e) + +nullstream = open(os.devnull, 'w') + +subprocess.call(['make', server_bin], stdout=nullstream) +cleanup = True + +def rm(): + global cleanup + if cleanup: + mm.seek(0,os.SEEK_SET) + mm.write(b'\x00\x00') + mm.flush() + + try: + time.sleep(.001) + server.kill() + time.sleep(.001) + server.terminate() + except OSError: + pass + + files = os.listdir('.') + for f in files: + if f.endswith('.shm'): + os.remove(f) + mm.close() + cleanup = False + nullstream.close() + +def init_ipc(): + global shm, server, basecmd, mm + shm = base62uuid() + if sys.platform != 'win32': + import readline + shm += '.shm' + basecmd = ['bash', '-c', 'rlwrap k'] + mm = None + if not os.path.isfile(shm): + # create initial file + with open(shm, "w+b") as handle: + handle.write(b'\x01\x00') # [running, new job] + handle.flush() + mm = mmap.mmap(handle.fileno(), 2, access=mmap.ACCESS_WRITE, offset=0) + if mm is None: + exit(1) + else: + basecmd = ['bash.exe', '-c', 'rlwrap ./k'] + mm = mmap.mmap(0, 2, shm) + mm.write(b'\x01\x00') + mm.flush() + server = subprocess.Popen(["./server.bin", shm]) + +import numpy as np + +c = lambda _ba: ctypes.cast((ctypes.c_char * len(_ba)).from_buffer(_ba), ctypes.c_char_p) + +class Config: + def __init__(self, nq = 0, mode = server_mode, n_bufs = 0, bf_szs = []) -> None: + self.int_size = 4 + self.n_attrib = 4 + self.buf = bytearray((self.n_attrib + n_bufs) * self.int_size) + self.np_buf = np.ndarray(shape=(self.n_attrib), buffer=self.buf, dtype=np.int32) + self.new_query = nq + self.server_mode = mode.value + self.running = 1 + self.n_buffers = n_bufs + + @property + def running(self): + return self.np_buf[0] + @running.setter + def running(self, rn): + self.np_buf[0] = rn + + @property + def new_query(self): + return self.np_buf[1] + @new_query.setter + def new_query(self, nq): + self.np_buf[1] = nq + + @property + def server_mode(self): + return self.np_buf[2] + @server_mode.setter + def server_mode(self, mode): + self.np_buf[2] = mode + + @property + def n_buffers(self): + return self.np_buf[3] + @n_buffers.setter + def n_buffers(self, n_bufs): + self.np_buf[3] = n_bufs + + def set_bufszs(self, buf_szs): + for i in range(min(len(buf_szs), self.n_buffers)): + self.np_buf[i+self.n_attrib] = buf_szs[i] + + @property + def c(self): + return c(self.buf) + +cfg = Config() +th = None + +def init_threaded(): + + if os.name == 'nt': + t = os.environ['PATH'].lower().split(';') + vars = re.compile('%.*%') + for e in t: + if(len(e) != 0): + if '%' in e: + try: + m_e = vars.findall(e) + for m in m_e: + e = e.replace(m, os.environ[m[1:-1]]) + # print(m, e) + except Exception: + continue + os.add_dll_directory(e) + + server_so = ctypes.CDLL('./'+server_bin) + global cfg, th + th = threading.Thread(target=server_so['main'], args=(-1, ctypes.POINTER(ctypes.c_char_p)(cfg.c)), daemon=True) + th.start() + +if server_mode == RunType.IPC: + atexit.register(rm) + init = init_ipc + set_ready = lambda : mm.seek(0,os.SEEK_SET) or mm.write(b'\x01\x01') + def __get_ready(): + mm.seek(0,os.SEEK_SET) + return mm.read(2)[1] + get_ready = __get_ready + server_status = lambda : server.poll() is not None +else: + init = init_threaded + rm = lambda: None + def __set_ready(): + global cfg + cfg.new_query = 1 + set_ready = __set_ready + get_ready = lambda:cfg.new_query + server_status = lambda : not th.is_alive() +init() + +test_parser = True + +# code to test parser +ws = re.compile(r'\s+') + +q = 'SELECT p.Name, v.Name FROM Production.Product p JOIN Purchasing.ProductVendor pv ON p.ProductID = pv.ProductID JOIN Purchasing.Vendor v ON pv.BusinessEntityID = v.BusinessEntityID WHERE ProductSubcategoryID = 15 ORDER BY v.Name;' + +res = parser.parse(q) + + +keep = True +cxt = engine.initialize() +cxt.Info(res) +while test_parser: + try: + if server_status(): + init() + while get_ready(): + time.sleep(.00001) + print("> ", end="") + q = input().lower() + if q == 'exec': + if not keep or cxt is None: + cxt = engine.initialize() + else: + cxt.new() + stmts_stmts = stmts['stmts'] + if type(stmts_stmts) is list: + for s in stmts_stmts: + engine.generate(s, cxt) + else: + engine.generate(stmts_stmts, cxt) + cxt.Info(cxt.ccode) + with open('out.cpp', 'wb') as outfile: + outfile.write((cxt.finalize()).encode('utf-8')) + if subprocess.call(['make', 'snippet'], stdout = nullstream) == 0: + set_ready() + continue + if q == 'xexec': + cxt = xengine.initialize() + stmts_stmts = stmts['stmts'] + if type(stmts_stmts) is list: + for s in stmts_stmts: + xengine.generate(s, cxt) + else: + xengine.generate(stmts_stmts, cxt) + print(cxt.sql) + continue + + elif q.startswith('log'): + qs = re.split(' |\t', q) + if len(qs) > 1: + cxt.log_level = qs[1] + else: + cxt.print(cxt.log_level) + continue + elif q == 'k': + subprocess.call(basecmd) + continue + elif q == 'print': + cxt.print(stmts) + continue + elif q == 'keep': + keep = not keep + continue + elif q == 'format' or q == 'fmt': + subprocess.call(['clang-format', 'out.cpp']) + elif q == 'exit': + break + elif q == 'r': + if subprocess.call(['make', 'snippet']) == 0: + set_ready() + continue + elif q == 'rr': + set_ready() + continue + elif q.startswith('save'): + filename = re.split(' |\t', q) + if (len(filename) > 1): + filename = filename[1] + else: + filename = f'out_{base62uuid(4)}.cpp' + with open(filename, 'wb') as outfile: + outfile.write((cxt.finalize()).encode('utf-8')) + continue + trimed = ws.sub(' ', q.lower()).split(' ') + if trimed[0].startswith('f'): + fn = 'stock.a' if len(trimed) <= 1 or len(trimed[1]) == 0 \ + else trimed[1] + + with open(fn, 'r') as file: + contents = file.read()#.lower() + stmts = parser.parse(contents) + continue + stmts = parser.parse(q) + cxt.Info(stmts) + except ParseException as e: + print(e) + continue + except (ValueError, FileNotFoundError) as e: + # rm() + # init() + print(e) + except (KeyboardInterrupt): + break + except (Exception) as e: + rm() + raise e + +rm() diff --git a/q.sql b/q.sql new file mode 100644 index 0000000..4a6921e --- /dev/null +++ b/q.sql @@ -0,0 +1,112 @@ +FUNCTION +execStrategy ( alloc , mavgday , mavgmonth , px ) { +buySignal := mavgday > mavgmonth ; +f := a + b ; +alloc * prd ( +CASE maxs ( buySignal ) +WHEN TRUE THEN +CASE buySignal +WHEN TRUE THEN 1 / px +ELSE px +END +ELSE 1 +END ) +} +FUNCTION covariance (x , y ) { +xmean := avg (x) ; +ymean := avg (y) ; +avg (( x - xmean ) * (y - ymean )) +} +FUNCTION sd ( x) { +sqrt ( covariance (x , x) ) +} +FUNCTION pairCorr (x , y ) { +covariance (x , y ) / ( sd (x) * sd (y )) +} + +` +p:5 +q:2 +phi:(p+1)?1. +theta:q?1. +"p q phi theta" +p +q +phi +theta +l:() +e:() + +` +L1:10?20 +Le1:10?2. +L2:3?20 +Le2:3?2. +"L1 Le1 L2 Le2" +L1 +Le1 +L2 +Le2 + +` +"Add L1, then predict" +l:l,L1 +e:e,Le1 +predict:(phi(0)) + (sum ({[x](phi(x+1)) * (l(((#l)-1)-x))}[!p])) - (sum ({[x](theta(x)) * (e(((#e)-1)-x))}[!q])) +predict + +` +"Add L2, then predict" +l:l,L2 +e:e,Le2 +predict:(phi(0)) + (sum ({[x](phi(x+1)) * (l(((#l)-1)-x))}[!p])) - (sum ({[x](theta(x)) * (e(((#e)-1)-x))}[!q])) +predict + + + +WITH +Target (Id , TradeDate , ClosePrice ) AS +( SELECT +Id , TradeDate , ClosePrice +FROM price +WHERE Id IN stock10 AND +TradeDate >= startYear10 AND +TradeDate <= startYear10 + 365 * 10), +weekly (Id , bucket , name , low , high , mean ) AS +( SELECT +Id , +timeBucket , +" weekly " , +min ( ClosePrice ) , +max ( ClosePrice ) , +avg ( ClosePrice ) +FROM Target +GROUP BY Id , getWeek ( TradeDate ) as +timeBucket ), +monthly ( Id , bucket , name , low , high , mean ) AS +( SELECT +Id , +timeBucket , +" monthly " , +min ( ClosePrice ) , +max ( ClosePrice ) , +avg ( ClosePrice ) +FROM Target +GROUP BY Id , getMonth ( TradeDate ) as +timeBucket ), +yearly (Id , bucket , name , low , high , mean ) AS +( SELECT +Id , +timeBucket , +" yearly " , +min ( ClosePrice ) , +max ( ClosePrice ) , +avg ( ClosePrice ) +FROM Target +GROUP BY Id , getYear ( TradeDate ) as +timeBucket ) +SELECT +Id , bucket , name , low , high , mean +FROM +CONCATENATE ( weekly , monthly , yearly ) +ASSUMING ASC Id , ASC name , ASC bucket diff --git a/q1.sql b/q1.sql new file mode 100644 index 0000000..360dc2f --- /dev/null +++ b/q1.sql @@ -0,0 +1,10 @@ +CREATE TABLE test(a INT, b INT, c INT, d INT) + +LOAD DATA INFILE "test.csv" +INTO TABLE test +FIELDS TERMINATED BY "," + +SELECT sum(c), b, d +FROM test +group by a,b,d +order by d DESC, b ASC diff --git a/reconstruct/__init__.py b/reconstruct/__init__.py new file mode 100644 index 0000000..e103251 --- /dev/null +++ b/reconstruct/__init__.py @@ -0,0 +1,11 @@ +from reconstruct.ast import Context, ast_node + +def initialize(): + return Context() + +def generate(ast, cxt): + for k in ast.keys(): + if k in ast_node.types.keys(): + ast_node.types[k](None, ast, cxt) + +__all__ = ["initialize", "generate"] diff --git a/reconstruct/ast.py b/reconstruct/ast.py new file mode 100644 index 0000000..b654710 --- /dev/null +++ b/reconstruct/ast.py @@ -0,0 +1,303 @@ +from engine.utils import enlist, base62uuid, base62alp +from reconstruct.storage import Context, TableInfo, ColRef + +class ast_node: + header = [] + types = dict() + first_order = False + + def __init__(self, parent:"ast_node", node, context:Context = None): + self.context = parent.context if context is None else context + self.parent = parent + self.sql = '' + self.datasource = None + self.init(node) + self.produce(node) + self.spawn(node) + self.consume(node) + + def emit(self, code): + self.context.emit(code) + def add(self, code): + self.sql += code + ' ' + + name = 'null' + + def init(self, _): + self.add(self.__class__.name.upper()) + def produce(self, _): + pass + def spawn(self, _): + pass + + def consume(self, _): + if self.parent is None: + self.emit(self.sql+';\n') + + +from reconstruct.expr import expr + + +class projection(ast_node): + name = 'projection' + first_order = 'select' + + def init(self, _): + pass + def produce(self, node): + p = node['select'] + self.projections = p if type(p) is list else [p] + self.add('SELECT') + + def spawn(self, node): + self.datasource = None # datasource is Join instead of TableInfo + if 'from' in node: + from_clause = node['from'] + self.datasource = join(self, from_clause) + if 'assumptions' in from_clause: + self.assumptions = enlist(from_clause['assumptions']) + + if self.datasource is not None: + self.datasource_changed = True + self.prev_datasource = self.context.datasource + self.context.datasource = self.datasource + + if 'where' in node: + self.where = filter(self, node['where']) + else: + self.where = None + + if 'groupby' in node: + self.group_node = groupby(self, node['groupby']) + else: + self.group_node = None + + def consume(self, node): + # deal with projections + self.out_table = TableInfo('out_'+base62uuid(4), [], self.context) + cols = [] + col_exprs = [] + for i, proj in enumerate(self.projections): + compound = False + self.datasource.rec = set() + name = '' + if type(proj) is dict: + + if 'value' in proj: + e = proj['value'] + name = expr(self, e).sql + disp_name = ''.join([a if a in base62alp else '' for a in name]) + compound = True # compound column + if 'name' in proj: # renaming column by AS keyword + name += ' ' + proj['name'] + col_exprs.append(name) + + elif type(proj) is str: + col = self.datasource.get_col(proj) + name = col.name + self.datasource.rec = None + # TODO: Type deduction in Python + cols.append(ColRef('unknown', self.out_table, None, disp_name, i, compound=compound)) + self.add(', '.join(col_exprs)) + + def finialize(astnode:ast_node): + if(astnode is not None): + self.add(astnode.sql) + self.add('FROM') + finialize(self.datasource) + finialize(self.where) + finialize(self.group_node) + if 'orderby' in node: + self.add(orderby(self, node['orderby']).sql) + if 'outfile' in node: + self.add(outfile(self, node['outfile']).sql) + if self.parent is None: + self.emit(self.sql+';\n') + else: + # TODO: subquery, name create tmp-table from subquery w/ alias as name + pass + + +class orderby(ast_node): + name = 'order by' + def produce(self, node): + if node is None: + self.sql = '' + return + elif type(node) is not list: + node = [node] + + o_list = [] + + for o in node: + o_str = expr(self, o['value']).sql + if 'sort' in o and f'{o["sort"]}'.lower() == 'desc': + o_str += ' ' + 'DESC' + o_list.append(o_str) + self.add(', '.join(o_list)) + + +class groupby(orderby): + name = 'group by' + + +class join(ast_node): + name = 'join' + def init(self, _): + self.joins:list = [] + self.tables = [] + self.tables_dir = dict() + # self.tmp_name = 'join_' + base62uuid(4) + # self.datasource = TableInfo(self.tmp_name, [], self.context) + def append(self, tbls, __alias = ''): + alias = lambda t : '(' + t + ') ' + __alias if len(__alias) else t + if type(tbls) is join: + self.joins.append(alias(tbls.__str__())) + self.tables += tbls.tables + self.tables_dir = {**self.tables_dir, **tbls.tables_dir} + + elif type(tbls) is TableInfo: + self.joins.append(alias(tbls.table_name)) + self.tables.append(tbls) + self.tables_dir[tbls.table_name] = tbls + for a in tbls.alias: + self.tables_dir[a] = tbls + + elif type(tbls) is projection: + self.joins.append(alias(tbls.finalize())) + + def produce(self, node): + if type(node) is list: + for d in node: + self.append(join(self, d).__str__()) + + elif type(node) is dict: + alias = '' + if 'value' in node: + table_name = node['value'] + tbl = None + if 'name' in node: + alias = node['name'] + if type(table_name) is dict: + if 'select' in table_name: + # TODO: subquery, create and register TableInfo in projection + tbl = projection(self, table_name).finalize() + else: + tbl = self.context.tables_byname[table_name] + if 'name' in node: + tbl.add_alias(node['name']) + + self.append(tbl, alias) + else: + keys = node.keys() + if keys[0].lower().endswith('join'): + j = join(self, node[keys[0]]) + tablename = f' {keys[0]} {j}' + if keys[1].lower() == 'on': + tablename += f' on {expr(self, node[keys[1]])}' + self.joins.append(tablename) + self.tables += j.tables + self.tables_dir = {**self.tables_dir, **j.tables_dir} + + elif type(node) is str: + self.append(self.context.tables_byname[node]) + + def get_cols(self, colExpr: str) -> ColRef: + for t in self.tables: + if colExpr in t.columns_byname: + return t.columns_byname[colExpr] + + def parse_col_names(self, colExpr:str) -> ColRef: + parsedColExpr = colExpr.split('.') + if len(parsedColExpr) <= 1: + return self.get_cols(colExpr) + else: + datasource = self.tables_dir[parsedColExpr[0]] + if datasource is None: + raise ValueError(f'Table name/alias not defined{parsedColExpr[0]}') + else: + return datasource.parse_col_names(parsedColExpr[1]) + + def consume(self, _): + self.sql = ', '.join(self.joins) + return super().consume(_) + def __str__(self): + return ', '.join(self.joins) + def __repr__(self): + return self.__str__() + + +class filter(ast_node): + name = 'where' + def produce(self, node): + self.add(expr(self, node).sql) + + +class create_table(ast_node): + name = 'create_table' + first_order = name + def init(self, node): + self.sql = 'CREATE TABLE ' + + def produce(self, node): + ct = node[self.name] + tbl = self.context.add_table(ct['name'], ct['columns']) + self.sql = f'CREATE TABLE {tbl.table_name}(' + columns = [] + for c in tbl.columns: + columns.append(f'{c.name} {c.type.upper()}') + self.sql += ', '.join(columns) + self.sql += ')' + + + +class insert(ast_node): + name = 'insert' + first_order = name + def produce(self, node): + values = node['query']['select'] + tbl = node['insert'] + self.sql = f'INSERT INTO {tbl} VALUES(' + # if len(values) != table.n_cols: + # raise ValueError("Column Mismatch") + list_values = [] + for i, s in enumerate(values): + if 'value' in s: + list_values.append(f"{s['value']}") + else: + # subquery, dispatch to select astnode + pass + self.sql += ', '.join(list_values) + ')' + + +class load(ast_node): + name="load" + first_order = name + def produce(self, node): + node = node['load'] + s1 = 'LOAD DATA INFILE ' + s2 = 'INTO TABLE ' + s3 = 'FIELDS TERMINATED BY ' + self.sql = f'{s1} \"{node["file"]["literal"]}\" {s2} {node["table"]}' + if 'term' in node: + self.sql += f' {s3} \"{node["term"]["literal"]}\"' + + +class outfile(ast_node): + name="_outfile" + def produce(self, node): + filename = node['loc']['literal'] if 'loc' in node else node['literal'] + self.sql = f'INTO OUTFILE "{filename}"' + if 'term' in node: + self.sql += f' FIELDS TERMINATED BY \"{node["term"]["literal"]}\"' + + +def include(objs): + import inspect + for _, cls in inspect.getmembers(objs): + if inspect.isclass(cls) and issubclass(cls, ast_node) and type(cls.first_order) is str: + ast_node.types[cls.first_order] = cls + + +import sys +include(sys.modules[__name__]) \ No newline at end of file diff --git a/reconstruct/expr.py b/reconstruct/expr.py new file mode 100644 index 0000000..4de2a24 --- /dev/null +++ b/reconstruct/expr.py @@ -0,0 +1,128 @@ +from reconstruct.ast import ast_node +from reconstruct.storage import ColRef, TableInfo + + +class expr(ast_node): + name='expr' + builtin_func_maps = { + 'max': 'MAX', + 'min': 'MIN', + 'avg': 'AVG', + 'sum': 'SUM', + 'count' : 'COUNT', + 'mins': ['mins', 'minw'], + 'maxs': ['maxs', 'maxw'], + 'avgs': ['avgs', 'avgw'], + 'sums': ['sums', 'sumw'], + } + + binary_ops = { + 'sub':'-', + 'add':'+', + 'mul':'*', + 'div':'/', + 'mod':'%', + 'and':' AND ', + 'or':' OR ', + 'xor' : ' XOR ', + 'gt':'>', + 'lt':'<', + 'le':'<=', + 'gt':'>=' + } + + compound_ops = { + } + + unary_ops = { + 'neg' : '-', + 'not' : ' NOT ' + } + + coumpound_generating_ops = ['avgs', 'mins', 'maxs', 'sums'] + \ + list(binary_ops.keys()) + list(compound_ops.keys()) + list(unary_ops.keys() ) + + def __init__(self, parent, node): + self.raw_col = None + self.inside_agg = False + if(type(parent) is expr): + self.inside_agg = parent.inside_agg + ast_node.__init__(self, parent, node, None) + + def init(self, _): + from engine.projection import projection + parent = self.parent + self.isvector = parent.isvector if type(parent) is expr else False + self.is_compound = parent.is_compound if type(parent) is expr else False + if type(parent) in [projection, expr]: + self.datasource = parent.datasource + else: + self.datasource = self.context.datasource + self.udf_map = parent.context.udf_map + self.func_maps = {**self.udf_map, **self.builtin_func_maps} + + def produce(self, node): + if type(node) is dict: + for key, val in node.items(): + if key in self.func_maps: + # TODO: distinguish between UDF agg functions and other UDF functions. + self.inside_agg = True + if type(val) is list and len(val) > 1: + cfunc = self.func_maps[key] + cfunc = cfunc[len(val) - 1] if type(cfunc) is list else cfunc + self.sql += f"{cfunc}(" + for i, p in enumerate(val): + self.sql += expr(self, p).sql + (',' if i < len(val) - 1 else '') + else: + funcname = self.func_maps[key] + funcname = funcname[0] if type(funcname) is list else funcname + self.sql += f"{funcname}(" + self.sql += expr(self, val).sql + self.sql += ')' + self.inside_agg = False + elif key in self.binary_ops: + l = expr(self, val[0]).sql + r = expr(self, val[1]).sql + self.sql += f'({l}{self.binary_ops[key]}{r})' + elif key in self.compound_ops: + x = [] + if type(val) is list: + for v in val: + x.append(expr(self, v).sql) + self.sql = self.compound_ops[key][1](x) + elif key in self.unary_ops: + self.sql += f'{self.unary_ops[key]}({expr(self, val).sql})' + else: + print(f'Undefined expr: {key}{val}') + + if key in self.coumpound_generating_ops and not self.is_compound: + self.is_compound = True + p = self.parent + while type(p) is expr and not p.is_compound: + p.is_compound = True + p = p.parent + + elif type(node) is str: + p = self.parent + while type(p) is expr and not p.isvector: + p.isvector = True + p = p.parent + + self.raw_col = self.datasource.parse_col_names(node) + self.raw_col = self.raw_col if type(self.raw_col) is ColRef else None + if self.raw_col is not None: + self.sql = self.raw_col.name + else: + self.sql = node + + elif type(node) is bool: + self.sql = '1' if node else '0' + else: + self.sql = f'{node}' + + def __str__(self): + return self.sql + def __repr__(self): + return self.__str__() + + \ No newline at end of file diff --git a/reconstruct/storage.py b/reconstruct/storage.py new file mode 100644 index 0000000..44ed001 --- /dev/null +++ b/reconstruct/storage.py @@ -0,0 +1,89 @@ +class ColRef: + def __init__(self, _ty, cobj, table:'TableInfo', name, id, compound = False): + self.type = _ty + self.cobj = cobj + self.table = table + self.name = name + self.alias = set() + self.id = id # position in table + self.compound = compound # compound field (list as a field) + # e.g. order by, group by, filter by expressions + + self.__arr__ = (_ty, cobj, table, name, id) + def __getitem__(self, key): + if type(key) is str: + return getattr(self, key) + else: + return self.__arr__[key] + + def __setitem__(self, key, value): + self.__arr__[key] = value + + +class TableInfo: + def __init__(self, table_name, cols, cxt:'Context'): + # statics + self.table_name = table_name + self.alias = set([table_name]) + self.columns_byname = dict() # column_name, type + self.columns = [] + self.cxt = cxt + # keep track of temp vars + self.rec = None + self.add_cols(cols) + # runtime + self.order = [] # assumptions + + cxt.tables_byname[self.table_name] = self # construct reverse map + + def add_cols(self, cols, new = True): + for i, c in enumerate(cols): + self.add_col(c, new, i) + def add_col(self, c, new = True, i = 0): + _ty = c['type'] + if new: + _ty = _ty if type(c) is ColRef else list(_ty.keys())[0] + col_object = ColRef(_ty, c, self, c['name'], len(self.columns)) + else: + col_object = c + c.table = self + self.columns_byname[c['name']] = col_object + self.columns.append(col_object) + + def add_alias(self, alias): + if alias in self.cxt.tables_byname.keys(): + print("Error: table alias already exists") + return + self.cxt.tables_byname[alias] = self + self.alias.add(alias) + def parse_col_names(self, colExpr) -> ColRef: + parsedColExpr = colExpr.split('.') + if len(parsedColExpr) <= 1: + return self.columns_byname[colExpr] + else: + datasource = self.cxt.tables_byname[parsedColExpr[0]] + if datasource is None: + raise ValueError(f'Table name/alias not defined{parsedColExpr[0]}') + else: + return datasource.parse_col_names(parsedColExpr[1]) + + +class Context: + def __init__(self): + self.sql = '' + self.tables_byname = dict() + self.col_byname = dict() + self.tables = [] + self.cols = [] + self.datasource = None + self.udf_map = dict() + + def emit(self, sql:str): + self.sql += sql + ' ' + + def add_table(self, table_name, cols): + tbl = TableInfo(table_name, cols, self) + self.tables.append(tbl) + return tbl + + \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..52da39d --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +mo-future +mo-dots==8.20.21357 +mo-parsing +mo-imports +readline; sys_platform != 'win32' \ No newline at end of file diff --git a/server.exe b/server.exe new file mode 100644 index 0000000..8658fd9 Binary files /dev/null and b/server.exe differ diff --git a/server/Makefile b/server/Makefile new file mode 100644 index 0000000..7acb78e --- /dev/null +++ b/server/Makefile @@ -0,0 +1,6 @@ +debug: + g++ -g3 -O0 server/server.cpp server/table.cpp -o a.out -Wall -Wextra -Wpedantic -lpthread + +test: + g++ --std=c++1z -g3 -O0 server.cpp table.cpp -o a.out -Wall -Wextra -Wpedantic -lpthread + diff --git a/server/aggregations.h b/server/aggregations.h new file mode 100644 index 0000000..a85adbd --- /dev/null +++ b/server/aggregations.h @@ -0,0 +1,158 @@ +#pragma once +#include "types.h" +#include +#include +#include +template class VT> +size_t count(const VT& v) { + return v.size; +} + +template +constexpr static inline size_t count(const T&) { return 1; } + +// TODO: Specializations for dt/str/none +template class VT> +types::GetLongType sum(const VT& v) { + types::GetLongType ret = 0; + for (const auto& _v : v) + ret += _v; + return ret; +} +template class VT> +types::GetFPType avg(const VT& v) { + return static_cast>( + sum(v) / static_cast(v.size)); +} +template class VT> +T max(const VT& v) { + T max_v = std::numeric_limits::min(); + for (const auto& _v : v) + max_v = max_v > _v ? max_v : _v; + return max_v; +} +template class VT> +T min(const VT& v) { + T min_v = std::numeric_limits::max(); + for (const auto& _v : v) + min_v = min_v < _v ? min_v : _v; + return min_v; +} +template class VT> +decayed_t mins(const VT& arr) { + const uint32_t& len = arr.size; + std::deque> cache; + decayed_t ret(len); + T min = std::numeric_limits::max(); + for (int i = 0; i < len; ++i) { + if (arr[i] < min) + min = arr[i]; + ret[i] = min; + } + return ret; +} +template class VT> +decayed_t maxs(const VT& arr) { + const uint32_t& len = arr.size; + decayed_t ret(len); + T max = std::numeric_limits::min(); + for (int i = 0; i < len; ++i) { + if (arr[i] > max) + max = arr[i]; + ret[i] = max; + } + return ret; +} + +template class VT> +decayed_t minw(uint32_t w, const VT& arr) { + const uint32_t& len = arr.size; + decayed_t ret{len}; + std::deque> cache; + for (int i = 0; i < len; ++i) { + if (!cache.empty() && cache.front().second == i - w) cache.pop_front(); + while (!cache.empty() && cache.back().first > arr[i]) cache.pop_back(); + cache.push_back({ arr[i], i }); + ret[i] = cache.front().first; + } + return ret; +} + +template class VT> +decayed_t maxw(uint32_t w, const VT& arr) { + const uint32_t& len = arr.size; + decayed_t ret(len); + std::deque> cache; + for (int i = 0; i < len; ++i) { + if (!cache.empty() && cache.front().second == i - w) cache.pop_front(); + while (!cache.empty() && cache.back().first > arr[i]) cache.pop_back(); + cache.push_back({ arr[i], i }); + arr[i] = cache.front().first; + } + return ret; +} + +template class VT> +decayed_t> sums(const VT& arr) { + const uint32_t& len = arr.size; + decayed_t> ret(len); + uint32_t i = 0; + if(len) ret[i++] = arr[0]; + for (; i < len; ++i) + ret[i] = ret[i-1] + arr[i]; + return ret; +} +template class VT> +decayed_t> avgs(const VT& arr) { + const uint32_t& len = arr.size; + typedef types::GetFPType FPType; + decayed_t ret(len); + uint32_t i = 0; + types::GetLongType s; + if(len) s = ret[i++] = arr[0]; + for (; i < len; ++i) + ret[i] = (s+=arr[i])/(FPType)(i+1); + return ret; +} +template class VT> +decayed_t> sumw(uint32_t w, const VT& arr) { + const uint32_t& len = arr.size; + decayed_t> ret(len); + uint32_t i = 0; + w = w > len ? len : w; + if(len) ret[i++] = arr[0]; + for (; i < w; ++i) + ret[i] = ret[i-1] + arr[i]; + for (; i < len; ++i) + ret[i] = ret[i-1] + arr[i] - arr[i-w]; + return ret; +} +template class VT> +decayed_t> avgw(uint32_t w, const VT& arr) { + typedef types::GetFPType FPType; + const uint32_t& len = arr.size; + decayed_t ret(len); + uint32_t i = 0; + types::GetLongType s{}; + w = w > len ? len : w; + if(len) s = ret[i++] = arr[0]; + for (; i < w; ++i) + ret[i] = (s += arr[i])/(FPType)(i+1); + for (; i < len; ++i) + ret[i] = ret[i-1] + (arr[i] - arr[i-w])/(FPType)w; + return ret; +} + +template constexpr inline T count(const T& v) { return 1; } +template constexpr inline T max(const T& v) { return v; } +template constexpr inline T min(const T& v) { return v; } +template constexpr inline T avg(const T& v) { return v; } +template constexpr inline T sum(const T& v) { return v; } +template constexpr inline T maxw(uint32_t, const T& v) { return v; } +template constexpr inline T minw(uint32_t, const T& v) { return v; } +template constexpr inline T avgw(uint32_t, const T& v) { return v; } +template constexpr inline T sumw(uint32_t, const T& v) { return v; } +template constexpr inline T maxs(const T& v) { return v; } +template constexpr inline T mins(const T& v) { return v; } +template constexpr inline T avgs(const T& v) { return v; } +template constexpr inline T sums(const T& v) { return v; } diff --git a/server/cpp.hint b/server/cpp.hint new file mode 100644 index 0000000..90950e7 --- /dev/null +++ b/server/cpp.hint @@ -0,0 +1,6 @@ +// Hint files help the Visual Studio IDE interpret Visual C++ identifiers +// such as names of functions and macros. +// For more information see https://go.microsoft.com/fwlink/?linkid=865984 +#define Ops(o) template vector_type::type> operator##o(const vector_type& r) { [[likely]] if (r.size == size) { return add(r); } else if (r.size == 1 || size == 1) { const bool lr = size == 1; const uint32_t& _size = lr ? r.size : size; const auto& _container = lr ? r.container : container; const auto& scalar = *(lr ? container : r.container); vector_type::type> ret(_size); for (int i = 0; i < _size; ++i) ret[i] = _container[i] o scalar; return ret; } } +#define Op(o, x) template vector_type::type> inline x(const vector_type& r) { vector_type::type> ret(size); for (int i = 0; i < size; ++i) ret[i] = container[i] o r[i]; return ret; } +#define _Make_Ops(M) M(+, add) M(-, minus) M(*, multi) M(/, div) M(%, mod) M(&, and) M(|, or) M(^, xor) diff --git a/server/gc.cpp b/server/gc.cpp new file mode 100644 index 0000000..e69de29 diff --git a/server/gc.hpp b/server/gc.hpp new file mode 100644 index 0000000..dfdccb9 --- /dev/null +++ b/server/gc.hpp @@ -0,0 +1,54 @@ +#pragma once +#include +#include +#include +#include +class GC { + template + using vector = std::vector; + template + using tuple = std::tuple; + size_t current_size, max_size, interval, forced_clean; + bool running, alive; +// ptr, dealloc, ref, sz + vector> q; + std::thread handle; + void gc() + { + + } + template + void reg(T* v, uint32_t ref, uint32_t sz, + void(*f)(void*) = [](void* v) {delete[] ((T*)v); }) { + current_size += sz; + if (current_size > max_size) + gc(); + q.push_back({ v, f, ref, sz }); + } + void daemon() { + using namespace std::chrono; + while (alive) { + if (running) { + gc(); + std::this_thread::sleep_for(microseconds(interval)); + } + else { + std::this_thread::sleep_for(10ms); + } + } + } + void start_deamon() { + handle = std::thread(&daemon); + alive = true; + } + void terminate_daemon() { + running = false; + alive = false; + using namespace std::chrono; + + if (handle.joinable()) { + std::this_thread::sleep_for(microseconds(1000 + std::max(static_cast(10000), interval))); + handle.join(); + } + } +}; \ No newline at end of file diff --git a/server/hasher.h b/server/hasher.h new file mode 100644 index 0000000..780d24c --- /dev/null +++ b/server/hasher.h @@ -0,0 +1,20 @@ +#pragma once + +#include +#include +template +struct hasher { + template typename std::enable_if< i == sizeof...(Types), + size_t>::type hashi(const std::tuple& record) const { + return 0; + } + + template typename std::enable_if< i < sizeof ...(Types), + size_t>::type hashi(const std::tuple& record) const { + using current_type = typename std::decay>::type>::type; + return std::hash()(std::get(record)) ^ hashi(record); + } + size_t operator()(const std::tuple& record) const { + return hashi(record); + } +}; diff --git a/server/io.h b/server/io.h new file mode 100644 index 0000000..43be108 --- /dev/null +++ b/server/io.h @@ -0,0 +1,15 @@ +#pragma once +#include "types.h" +#include +#include +template +std::string generate_printf_string(const char* sep = " ", const char* end = "\n") { + std::string str; + ((str += types::printf_str[types::Types>::getType()], str += sep), ...); + const auto trim = str.size() - strlen(sep); + if (trim > 0) + str.resize(trim); + str += end; + return str; +} + diff --git a/server/libaquery.h b/server/libaquery.h new file mode 100644 index 0000000..b40769c --- /dev/null +++ b/server/libaquery.h @@ -0,0 +1,48 @@ +#ifndef _AQUERY_H +#define _AQUERY_H + +#include "table.h" +#include + +enum Log_level { + LOG_INFO, + LOG_ERROR, + LOG_SILENT +}; + +struct Config{ + int running, new_query, server_mode, n_buffers; + int buffer_sizes[]; +}; + +struct Context{ + typedef int (*printf_type) (const char *format, ...); + std::unordered_map tables; + std::unordered_map cols; + + Config* cfg; + + int n_buffers, *sz_bufs; + void **buffers; + + Log_level log_level = LOG_SILENT; + printf_type print = printf; + template + void log(Types... args) { + if (log_level == LOG_INFO) + print(args...); + } + template + void err(Types... args) { + if (log_level <= LOG_ERROR) + print(args...); + } +}; + +#ifdef _WIN32 +#define __DLLEXPORT__ __declspec(dllexport) __stdcall +#else +#define __DLLEXPORT__ +#endif + +#endif \ No newline at end of file diff --git a/server/priority_vector.hpp b/server/priority_vector.hpp new file mode 100644 index 0000000..f1c7d6f --- /dev/null +++ b/server/priority_vector.hpp @@ -0,0 +1,19 @@ +#pragma once +#include "vector_type.hpp" +#include +#include +template +class priority_vector : public vector_type { + const Comparator comp; +public: + priority_vector(Comparator comp = std::less{}) : + comp(comp), vector_type(0) {} + void emplace_back(T val) { + vector_type::emplace_back(val); + std::push_heap(container, container + size, comp); + } + void pop_back() { + std::pop_heap(container, container + size, comp); + --size; + } +}; \ No newline at end of file diff --git a/server/server.cpp b/server/server.cpp new file mode 100644 index 0000000..a0bd36c --- /dev/null +++ b/server/server.cpp @@ -0,0 +1,135 @@ +#include "../csv.h" +#include +#include +//#include +#include + +#include "libaquery.h" +#ifdef _WIN32 +#include "winhelper.h" +#else +#include +#include +#include +struct SharedMemory +{ + int hFileMap; + void* pData; + SharedMemory(const char* fname) { + hFileMap = open(fname, O_RDWR, 0); + if (hFileMap != -1) + pData = mmap(NULL, 8, PROT_READ | PROT_WRITE, MAP_SHARED, hFileMap, 0); + else + pData = 0; + } + void FreeMemoryMap() { + + } +}; +#endif +struct thread_context{ + +}v; +void daemon(thread_context* c) { + +} +#include "aggregations.h" +typedef int (*code_snippet)(void*); +int test_main(); + +int dll_main(int argc, char** argv, Context* cxt){ + Config *cfg = reinterpret_cast(argv[0]); + + auto buf_szs = cfg->buffer_sizes; + void** buffers = (void**)malloc(sizeof(void*) * cfg->n_buffers); + for (int i = 0; i < cfg->n_buffers; i++) + buffers[i] = static_cast(argv[i + 1]); + + cxt->buffers = buffers; + cxt->cfg = cfg; + cxt->n_buffers = cfg->n_buffers; + cxt->sz_bufs = buf_szs; + + while(cfg->running){ + if (cfg->new_query) { + void* handle = dlopen("./dll.so", RTLD_LAZY); + code_snippet c = reinterpret_cast(dlsym(handle, "dllmain")); + c(cxt); + dlclose(handle); + cfg->new_query = 0; + } + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } + + return 0; +} + +extern "C" int __DLLEXPORT__ main(int argc, char** argv) { + Context* cxt = new Context(); + cxt->log("%d %s\n", argc, argv[1]); + + const char* shmname; + if (argc < 0) + return dll_main(argc, argv, cxt); + else if (argc <= 1) + return test_main(); + else + shmname = argv[1]; + SharedMemory shm = SharedMemory(shmname); + if (!shm.pData) + return 1; + bool &running = static_cast(shm.pData)[0], + &ready = static_cast(shm.pData)[1]; + using namespace std::chrono_literals; + cxt->log("running: %s\n", running? "true":"false"); + cxt->log("ready: %s\n", ready? "true":"false"); + while (running) { + std::this_thread::sleep_for(1ms); + if(ready){ + cxt->log("running: %s\n", running? "true":"false"); + cxt->log("ready: %s\n", ready? "true":"false"); + void* handle = dlopen("./dll.so", RTLD_LAZY); + cxt->log("handle: %lx\n", handle); + if (handle) { + cxt->log("inner\n"); + code_snippet c = reinterpret_cast(dlsym(handle, "dllmain")); + cxt->log("routine: %lx\n", c); + if (c) { + cxt->log("inner\n"); + cxt->err("return: %d\n", c(cxt)); + } + } + ready = false; + } + } + shm.FreeMemoryMap(); + return 0; +} +#include "utils.h" +int test_main() +{ + //vector_type t; + //t = 1; + //t.emplace_back(2); + //print(t); + //return 0; + Context* cxt = new Context(); + cxt->log_level = LOG_INFO; + puts(cpp_17 ?"true":"false"); + void* handle = dlopen("./dll.so", RTLD_LAZY); + cxt->log("handle: %llx\n", handle); + if (handle) { + cxt->log("inner\n"); + code_snippet c = reinterpret_cast(dlsym(handle, "dllmain")); + cxt->log("routine: %llx\n", c); + if (c) { + cxt->log("inner\n"); + cxt->log("return: %d\n", c(cxt)); + } + dlclose(handle); + } + //static_assert(std::is_same_v()), std::integer_sequence>, ""); + return 0; + std::unordered_map a; +} + diff --git a/server/server.sln b/server/server.sln new file mode 100644 index 0000000..d22be11 --- /dev/null +++ b/server/server.sln @@ -0,0 +1,62 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.2.32210.308 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server", "server.vcxproj", "{031352C2-AFBB-45AA-9518-DBC1F9EF2AF3}" + ProjectSection(ProjectDependencies) = postProject + {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81} = {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msc-plugin", "..\msc-plugin\msc-plugin.vcxproj", "{8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81}" +EndProject +Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "msvs-py", "..\msvs-py\msvs-py.pyproj", "{CCC243F5-663E-45B7-A6DE-B2468C58B3A7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {031352C2-AFBB-45AA-9518-DBC1F9EF2AF3}.Debug|Any CPU.ActiveCfg = Debug|x64 + {031352C2-AFBB-45AA-9518-DBC1F9EF2AF3}.Debug|Any CPU.Build.0 = Debug|x64 + {031352C2-AFBB-45AA-9518-DBC1F9EF2AF3}.Debug|x64.ActiveCfg = Debug|x64 + {031352C2-AFBB-45AA-9518-DBC1F9EF2AF3}.Debug|x64.Build.0 = Debug|x64 + {031352C2-AFBB-45AA-9518-DBC1F9EF2AF3}.Debug|x86.ActiveCfg = Debug|Win32 + {031352C2-AFBB-45AA-9518-DBC1F9EF2AF3}.Debug|x86.Build.0 = Debug|Win32 + {031352C2-AFBB-45AA-9518-DBC1F9EF2AF3}.Release|Any CPU.ActiveCfg = Release|x64 + {031352C2-AFBB-45AA-9518-DBC1F9EF2AF3}.Release|Any CPU.Build.0 = Release|x64 + {031352C2-AFBB-45AA-9518-DBC1F9EF2AF3}.Release|x64.ActiveCfg = Release|x64 + {031352C2-AFBB-45AA-9518-DBC1F9EF2AF3}.Release|x64.Build.0 = Release|x64 + {031352C2-AFBB-45AA-9518-DBC1F9EF2AF3}.Release|x86.ActiveCfg = Release|Win32 + {031352C2-AFBB-45AA-9518-DBC1F9EF2AF3}.Release|x86.Build.0 = Release|Win32 + {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81}.Debug|Any CPU.ActiveCfg = Debug|x64 + {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81}.Debug|Any CPU.Build.0 = Debug|x64 + {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81}.Debug|x64.ActiveCfg = Debug|x64 + {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81}.Debug|x64.Build.0 = Debug|x64 + {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81}.Debug|x86.ActiveCfg = Debug|Win32 + {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81}.Debug|x86.Build.0 = Debug|Win32 + {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81}.Release|Any CPU.ActiveCfg = Release|x64 + {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81}.Release|Any CPU.Build.0 = Release|x64 + {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81}.Release|x64.ActiveCfg = Release|x64 + {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81}.Release|x64.Build.0 = Release|x64 + {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81}.Release|x86.ActiveCfg = Release|Win32 + {8081FDAA-4D13-4B7A-ADB2-8224AF7F1C81}.Release|x86.Build.0 = Release|Win32 + {CCC243F5-663E-45B7-A6DE-B2468C58B3A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CCC243F5-663E-45B7-A6DE-B2468C58B3A7}.Debug|x64.ActiveCfg = Debug|Any CPU + {CCC243F5-663E-45B7-A6DE-B2468C58B3A7}.Debug|x86.ActiveCfg = Debug|Any CPU + {CCC243F5-663E-45B7-A6DE-B2468C58B3A7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CCC243F5-663E-45B7-A6DE-B2468C58B3A7}.Release|x64.ActiveCfg = Release|Any CPU + {CCC243F5-663E-45B7-A6DE-B2468C58B3A7}.Release|x86.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {572EA821-8162-4161-9AC2-464C79F08B47} + EndGlobalSection +EndGlobal diff --git a/server/server.vcxproj b/server/server.vcxproj new file mode 100644 index 0000000..405c667 --- /dev/null +++ b/server/server.vcxproj @@ -0,0 +1,188 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {031352c2-afbb-45aa-9518-dbc1f9ef2af3} + server + 10.0.19041.0 + + + + Application + true + v141 + Unicode + false + + + Application + false + v141 + true + Unicode + true + + + Application + true + v143 + Unicode + false + + + Application + false + v141 + true + Unicode + true + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + true + true + stdcpplatest + stdc17 + + + Console + true + + + + + Level3 + true + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + true + true + stdcpplatest + stdc17 + + + Console + true + true + true + + + + + Level3 + true + _CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + true + true + stdcpplatest + stdc17 + + + Console + true + + + + + Level3 + true + true + true + _CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + true + true + stdcpplatest + stdc17 + + + Console + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/server/table.cpp b/server/table.cpp new file mode 100644 index 0000000..c0ab579 --- /dev/null +++ b/server/table.cpp @@ -0,0 +1 @@ +#include "table.h" diff --git a/server/table.h b/server/table.h new file mode 100644 index 0000000..bea1954 --- /dev/null +++ b/server/table.h @@ -0,0 +1,481 @@ +// TODO: Replace `cout, printf` with sprintf&fputs and custom buffers + +#ifndef _TABLE_H +#define _TABLE_H + +#include "types.h" +#include "vector_type.hpp" +#include +#include +#include "io.h" +template +class vector_type; +template <> +class vector_type; + +#ifdef _MSC_VER +namespace types { + enum Type_t; + template + struct Types; + template + struct Coercion; +} +#endif +template +class ColView; +template +class ColRef : public vector_type<_Ty> +{ +public: + typedef ColRef<_Ty> Decayed_t; + const char* name; + types::Type_t ty = types::ERROR; + ColRef() : vector_type<_Ty>(0), name("") {} + ColRef(const uint32_t& size, const char* name = "") : vector_type<_Ty>(size), name(name) {} + ColRef(const char* name) : name(name) {} + void init(const char* name = "") { ty = types::Types<_Ty>::getType(); this->size = this->capacity = 0; this->container = 0; this->name = name; } + ColRef(const char* name, types::Type_t ty) : name(name), ty(ty) {} + using vector_type<_Ty>::operator[]; + using vector_type<_Ty>::operator=; + ColView<_Ty> operator [](const vector_type&idxs) const { + return ColView<_Ty>(*this, idxs); + } + + void out(uint32_t n = 4, const char* sep = " ") const { + n = n > this->size ? this->size : n; + std::cout << '('; + if (n > 0) + { + uint32_t i = 0; + for (; i < n - 1; ++i) + std::cout << this->operator[](i) << sep; + std::cout << this->operator[](i); + } + std::cout << ')'; + } + template + ColRef scast(); +}; + +template +class ColView { +public: + typedef ColRef<_Ty> Decayed_t; + const vector_type& idxs; + const ColRef<_Ty>& orig; + const uint32_t& size; + ColView(const ColRef<_Ty>& orig, const vector_type& idxs) : orig(orig), idxs(idxs), size(idxs.size) {} + ColView(const ColView<_Ty>& orig, const vector_type& idxs) : orig(orig.orig), idxs(idxs), size(idxs.size) { + for (uint32_t i = 0; i < size; ++i) + idxs[i] = orig.idxs[idxs[i]]; + } + _Ty& operator [](const uint32_t& i) const { + return orig[idxs[i]]; + } + struct Iterator_t { + const uint32_t* val; + const ColRef<_Ty>& orig; + constexpr Iterator_t(const uint32_t* val, const ColRef<_Ty>& orig) noexcept : val(val), orig(orig) {} + _Ty& operator*() { return orig[*val]; } + bool operator != (const Iterator_t& rhs) { return rhs.val != val; } + Iterator_t& operator++ () { + ++val; + return *this; + } + Iterator_t operator++ (int) { + Iterator_t tmp = *this; + ++val; + return tmp; + } + }; + Iterator_t begin() const { + return Iterator_t(idxs.begin(), orig); + } + Iterator_t end() const { + return Iterator_t(idxs.end(), orig); + } + void out(uint32_t n = 4, const char* sep = " ") const { + n = n > size ? size : n; + std::cout<<'('; + for (uint32_t i = 0; i < n; ++i) + std::cout << this->operator[](i)<< sep; + std::cout << ')'; + } + operator ColRef<_Ty>() { + auto ret = ColRef<_Ty>(size); + for (uint32_t i = 0; i < size; ++i) + ret[i] = orig[idxs[i]]; + return ret; + } +}; +template