From ce1c973df461352d5b087fefd1b1f0c9879bb7d6 Mon Sep 17 00:00:00 2001 From: zkldi <20380519+zkldi@users.noreply.github.com> Date: Thu, 16 Dec 2021 16:18:40 +0000 Subject: [PATCH] Massive Documentation Improvements --- docs/docs/api/auth.md | 4 +- docs/docs/api/overview.md | 8 +- docs/docs/api/routes/admin.md | 201 +++++++++++++++--- docs/docs/api/routes/auth.md | 174 +++++++++++++-- docs/docs/api/routes/clients.md | 4 +- docs/docs/api/routes/config.md | 33 +++ docs/docs/api/routes/example.md | 15 +- docs/docs/api/routes/gpt.md | 16 +- docs/docs/api/routes/import.md | 102 ++++++++- docs/docs/api/routes/oauth2.md | 2 +- docs/docs/api/routes/search.md | 2 +- docs/docs/api/routes/sessions.md | 2 +- docs/docs/api/routes/status.md | 16 +- docs/docs/api/routes/user-gamept.md | 104 ++++++++- docs/docs/api/routes/user-integrations.md | 6 +- docs/docs/api/routes/users.md | 87 ++++++-- docs/docs/images/advanced-search.png | Bin 0 -> 74302 bytes docs/docs/images/basic-search.png | Bin 0 -> 94673 bytes docs/docs/images/title-search.png | Bin 0 -> 103697 bytes .../tachi-server/batch-manual/overview.md | 8 +- docs/docs/tachi-server/contributing.md | 2 +- docs/docs/tachi-server/documents/score.md | 45 ++-- docs/docs/tachi-server/documents/user-goal.md | 4 +- docs/docs/tachi-server/documents/user.md | 20 +- docs/docs/tachi-server/import/importing.md | 2 +- docs/docs/tachi-server/import/main.md | 2 +- docs/docs/tachi-server/structure/testing.md | 2 +- docs/docs/user/filter-directives.md | 30 ++- docs/docs/user/games.md | 15 +- docs/docs/user/lamps.md | 15 +- docs/docs/user/pbs-scores.md | 22 +- docs/docs/user/rules.md | 2 +- docs/docs/user/score-oddities.md | 31 +++ docs/docs/user/stats/esd.md | 4 + docs/docs/user/stats/tachi.md | 61 +++--- docs/mkdocs.yml | 1 + 36 files changed, 841 insertions(+), 201 deletions(-) create mode 100644 docs/docs/api/routes/config.md create mode 100644 docs/docs/images/advanced-search.png create mode 100644 docs/docs/images/basic-search.png create mode 100644 docs/docs/images/title-search.png diff --git a/docs/docs/api/auth.md b/docs/docs/api/auth.md index 7bac0da76..94e381d69 100644 --- a/docs/docs/api/auth.md +++ b/docs/docs/api/auth.md @@ -23,8 +23,8 @@ Where API_KEY is the api key you wish to use. The other way to authorise a request is with your session cookie. This **MUST NOT** be used by code, and is instead a way for logged-in users to interact with the API as themselves. -To use authentication in this way, simply make a request with your `ktchi_production_session` or -`btchi_production_session` cookie. +To use authentication in this way, simply make a request with your `Kamaitachi_SESSION` or +`Bokutachi_SESSION` cookie. The reason for this second authentication method is so that, when a user logs in, they can use the cookie they were set to also interact with the API. diff --git a/docs/docs/api/overview.md b/docs/docs/api/overview.md index d3287994e..f2209675d 100644 --- a/docs/docs/api/overview.md +++ b/docs/docs/api/overview.md @@ -68,7 +68,7 @@ As the name implies, the Success Response is returned on a successful request. | Property | Type | Description | | :: | :: | :: | | `success` | true | Always true for a successful response. | -| `description` | string | Information about what happened with the request. | +| `description` | String | Information about what happened with the request. | | `body` | Endpoint Dependent | Any data that the endpoint needs to return, such as a user's document from a profile request. | The HTTP Status Code for any Success Response will always be of 2XX form. @@ -80,10 +80,14 @@ As the name implies, the Failed Response is returned when a request fails. | Property | Type | Description | | :: | :: | :: | | `success` | false | Always false for a failed response. | -| `description` | string | Information about what went wrong with the request. | +| `description` | String | Information about what went wrong with the request. | The HTTP Status Code for any Failed Response will always be of either 4XX or 5XX form. +!!! warning + The `description` property is **NOT** intended for program usage. You should **NEVER** depend + on the output of `description`, as it may be changed at any time for any reason. + !!! note Any API request can fail for any reason. You should always account for the case where the request fails. diff --git a/docs/docs/api/routes/admin.md b/docs/docs/api/routes/admin.md index 8e9c07abf..9e12a2d8c 100644 --- a/docs/docs/api/routes/admin.md +++ b/docs/docs/api/routes/admin.md @@ -1,6 +1,7 @@ # Admin Endpoints -These endpoints are for adminstrator use. +These endpoints are for adminstrator use. As such, they all +require an `authLevel` of atleast 3. For more information, see the [UserDocument](/tachi-server/documents/user). ***** @@ -42,32 +43,6 @@ Empty Object. ***** -## Remove the isPrimary status from a chart - -This also uncalcs all score data for scores on the chart. - -`POST /api/v1/admin/deprimarify` - -### Permissions - -- Admin - -### Parameters - -| Property | Type | Description | -| :: | :: | :: | -| `chartID` | String | The chartID to deprimarify. | -| `game` | Game | The game this chart is on. | -| `songID` | Integer | Alternatively to chartID, you can specify this to deprimarify all charts on this songID. | - -### Response - -| Property | Type | Description | -| :: | :: | :: | -| `charts` | Array<ChartDocument> | The array of charts that were deprimarified | - -***** - ## Delete any Score This performs all the necessary checks to remove a score document aswell. @@ -88,3 +63,175 @@ This performs all the necessary checks to remove a score document aswell. Empty Object. +***** + +## Resynchronise all PBs that match the given query or users. + +`POST /api/v1/admin/resync-pbs` + +!!! info + This is intended to be used in the case that PBs fall out of + sync with what they should be. This could be due to a + database migration going awry, or anything else. + +### Permissions + +- Admin + +### Parameters + +| Property | Type | Description | +| :: | :: | :: | +| `userIDs` | Array<Integer> (Optional) | The list of userIDs to resynchronise PBs for. | +| `filters` | Mongo Query for the PBs Collection. (Optional) | A query to reduce the amount of PBs that get reprocessed. | + +### Response + +Empty Object. + +### Example + +#### Request +``` +POST /api/v1/admin/resync-pbs +``` + +```js +{ + "filter": { + "game": {$in: ["iidx","sdvx"]} + }, + "userIDs": [1,2,3,4] +} +``` + +#### Response + +Nothing. + +***** + +## Destroy a users GPT Profile and forces a leaderboard recalc. + +`POST /api/v1/admin/destroy-ugpt` + +!!! warning + This is intended to completely remove a users GPT profile. + You should use this **only** if a user has irrevocably screwed + their account. Preferably early on! + +### Permissions + +- Admin + +### Parameters + +| Property | Type | Description | +| :: | :: | :: | +| `userID` | Integer | The user part of the UGPT. | +| `game` | Game | The game part of the UGPT. | +| `playtype` | Playtype | The PT part of the UGPT. Must be for the above game. | + +### Response + +Empty Object. + +### Example + +#### Request +``` +POST /api/v1/admin/destroy-ugpt +``` + +```js +{ + "userID": 1, + "game": "iidx", + "playtype": "DP" +} +``` + +#### Response + +Empty Object. + +***** + +## Destroy a chart and all of its scores. + +`POST /api/v1/admin/destroy-chart` + +### Permissions + +- Admin + +### Parameters + +| Property | Type | Description | +| :: | :: | :: | +| `chartID` | String | The chartID you wish to destroy. | +| `game` | Game | The game this chart belongs to (Necessary for lookups). | + +### Response + +Empty Object. + +### Example + +#### Request +``` +POST /api/v1/admin/destroy-chart +``` +```js +{ + "chartID": "SomeChartID", + "game": "iidx" +} +``` + +#### Response + +Empty Object. + +***** + +## Perform a site recalc on this set of scores. + +`POST /api/v1/admin/recalc` + +### Permissions + +- Admin + +### Parameters + +| Property | Type | Description | +| :: | :: | :: | +| `
` | Mongo Query for scores | Filters the amount of scores recalced. If not provided, defaults to every score on the site. | + +### Response + +| Property | Type | Description | +| :: | :: | :: | +| `scoresRecalced` | Integer | The amount of scores recalced. | + +### Example + +#### Request +``` +POST /api/v1/admin/recalc +``` +```js +{ + "game": "iidx", + "scoreData.percent": {$gt: 90}, +} +``` + +#### Response + +```js +{ + "scoresRecalced": 174 +} +``` diff --git a/docs/docs/api/routes/auth.md b/docs/docs/api/routes/auth.md index 569840212..3f05bb5a2 100644 --- a/docs/docs/api/routes/auth.md +++ b/docs/docs/api/routes/auth.md @@ -9,7 +9,11 @@ These endpoints relate to internal authentication methods. Read the warning belo Furthermore, interacting with this programmatically is near-impossible because you need to complete a CAPTCHA. - This is documented for completeness' sake. + Nevertheless, This is documented for completeness' sake. + +!!! warning + All of these endpoints are aggressively rate limited. If you fire a bot at this, you will probably get + your IP blacklisted. Don't do that. ***** @@ -23,15 +27,21 @@ Logs a user in and returns a session cookie. | Property | Type | Description | | :: | :: | :: | -| `username` | string | The user's username. This is compared case-insensitively. -| `password` | string | The user's password. | -| `captcha` | string | | +| `username` | String | The user's username. This is compared case-insensitively. +| `!password` | String | The user's password. | +| `captcha` | String | Information about the captcha filled out by the user. We use a Google ReCaptcha instance. | + +!!! info + The `!` prefix is special in that anything with it is assumed to be private and is **always** + ignored by our request logger. + + Without it, we would log passwords! ### Response | Property | Type | Description | | :: | :: | :: | -| `userID` | integer | The ID of the user you authenticated as. | +| `userID` | Integer | The ID of the user you authenticated as. | | HTTP Header | Description | | :: | :: | @@ -48,7 +58,7 @@ POST /api/v1/auth/login ```json { "username": "zkldi", - "password": "my_password", + "!password": "my_password", "captcha": "herebedragons" } ``` @@ -70,19 +80,18 @@ POST /api/v1/auth/login | Property | Type | Description | | :: | :: | :: | -| `username` | string | A string between 3 and 20 characters. The first character must be A-Z, _ or -. The other 19 may be A-Z, 0-9, _ or -. | -| `password` | string | An 8 character or longer string. | -| `email` | string | | -| `inviteCode` (Kamaitachi Only) | string | If on Kamaitachi, this is the user's invitation code. | -| `captcha` | string | | +| `username` | String | A string between 3 and 20 characters. The first character must be A-Z, _ or -. The other 19 may be A-Z, 0-9, _ or -. | +| `!password` | String | An 8 character or longer string. | +| `email` | String | | +| `inviteCode` (Kamaitachi Only) | String (Undefined/Unused on Bokutachi) | If on Kamaitachi, this is the user's invitation code. | +| `captcha` | String | | ### Response | Property | Type | Description | | :: | :: | :: | -| `id` | integer | The newly-created user's ID. | -| `username` | string | The newly-created user's name. | +| `` | [UserDocument](/tachi-server/documents/user)| The newly-created user's User Document. | ### Example @@ -93,8 +102,8 @@ POST /api/v1/auth/register ```json { - "username": "newguy", - "password": "my_password", + "username": "newGuy", + "!password": "my_password", "captcha": "herebedragons", "email": "test@example.com" } @@ -105,10 +114,78 @@ POST /api/v1/auth/register ```json { "id": 2, - "username": "newguy" + "username": "newGuy", + "usernameLowercase": "newguy", + "socialMedia": { + "discord": null, + "twitter": null, + "github": null, + "steam": null, + "youtube": null, + "twitch": null + }, + "joinDate": 1639628634978, + "lastSeen": 1639628634978, + "about": "I'm a fairly nondescript person.", + "status": null, + "customPfpLocation": null, + "customBannerLocation": null, + "clan": null, + "badges": [], + "authLevel": 1 } ``` +***** + +## Verify an email from the code that was sent to it. + +`POST /api/v1/auth/verify-email` + +### Parameters + +| Property | Type | Description | +| :: | :: | :: | +| `code` | String | The Code that was sent to the users mailbox. | + +### Response + +Empty Object + +### Example + +#### Request +``` +{ + "code": "abcdef1234567890" +} +``` + +#### Response + +Empty Object. + +***** + +## Resend a verification email to the requesting user's email address. + +`POST /api/v1/auth/resend-verify-email` + +**Requires Self-Key Level Auth** + +### Parameters + +None, This endpoint reads the requesting user from their session. + +### Response + +Empty object. + +### Example + +N/A + + ***** ## Log Out. @@ -135,3 +212,68 @@ POST /api/v1/auth/logout #### Response Nothing. + +***** + +## Create a password reset code and send it to the provided email. + +`POST /api/v1/auth/forgot-password` + +!!! note + This endpoint sends the password reset code pretty-printed to the email, and is **NOT** + returned as part of the HTTP request. + +### Parameters + +| Property | Type | Description | +| :: | :: | :: | +| `email` | String | A user's email. If the email does not correspond to any accounts, 202 is returned anyway as a security measure. | + +### Response + +Empty Object. The endpoint immediately returns 202 to avoid giving away information about registered emails. + +### Example + +#### Request +```js +{ + "email": "zkldi.dev@gmail.com" +} +``` + +#### Response + +Although the request body returns nothing, `zkldi.dev@gmail.com` will have recieved an email with +a URL containing the password reset code. + +***** + +## Reset a user's password with a password reset code. + +`POST /api/v1/auth/reset-password` + +### Parameters + +| Property | Type | Description | +| :: | :: | :: | +| `code` | String | A password reset code. This is provided in a password reset email. | +| `!password` | String | The password to change to. | + +### Response + +Empty Object. + +### Example + +#### Request +```js +{ + "code": "1234567890abcdef", + "!password": "zkldi_is_so_cool", +} +``` + +#### Response + +Empty Object. diff --git a/docs/docs/api/routes/clients.md b/docs/docs/api/routes/clients.md index 44d125f88..651e75b6b 100644 --- a/docs/docs/api/routes/clients.md +++ b/docs/docs/api/routes/clients.md @@ -6,7 +6,7 @@ For a detailed explaination on how to use the OAuth2 flow, you can check [Using ***** -!!! warn +!!! warning All endpoints on this list require [Self Key](./user-integrations.md) level authentication. That is to say, it cannot be performed using Bearer tokens, and must be done by the user themselves. @@ -198,7 +198,7 @@ PATCH /api/v1/clients/some_client_id `POST /api/v1/clients/:clientID/reset-secret` -!!! warn +!!! warning This does **NOT** reset api keys created by this client as per OAuth2 spec. If you need that functionality, you will need to delete diff --git a/docs/docs/api/routes/config.md b/docs/docs/api/routes/config.md new file mode 100644 index 000000000..6a205c416 --- /dev/null +++ b/docs/docs/api/routes/config.md @@ -0,0 +1,33 @@ +# Config Endpoints + +These endpoints display certain properties about the Tachi [config file](../../tachi-server/setup/config.md). + +***** + +## Return the value of the BEATORAJA_QUEUE_SIZE + +`GET /api/v1/config/beatoraja-queue-size` + +**Bokutachi Only** + +### Response + +| Property | Type | Description | +| :: | :: | :: | +| `` | Integer | The value in `conf.json5` for BEATORAJA_QUEUE_SIZE. | + + +## Return the value of the USC_QUEUE_SIZE + +`GET /api/v1/config/usc-queue-size` + +**Bokutachi Only** + +### Response + +| Property | Type | Description | +| :: | :: | :: | +| `` | Integer | The value in `conf.json5` for USC_QUEUE_SIZE. | + + + diff --git a/docs/docs/api/routes/example.md b/docs/docs/api/routes/example.md index 6b95808fe..b758caa5b 100644 --- a/docs/docs/api/routes/example.md +++ b/docs/docs/api/routes/example.md @@ -1,6 +1,6 @@ # Example Endpoint -*Endpoints will be formatted like this.* +*Endpoints will be formatted like this. - These are not real endpoints!* ***** @@ -27,8 +27,8 @@ This endpoint greets the user. | Property | Type | Description | | :: | :: | :: | -| `name` | string | The name of the user to greet. | -| `birthday` (optional) | presence | Whether it is the user's birthday or not. | +| `name` | String | The name of the user to greet. | +| `birthday` (optional) | Presence | Whether it is the user's birthday or not. | Not providing required parameters will result in a 400 error. @@ -55,8 +55,8 @@ Not providing required parameters will result in a 400 error. | Property | Type | Description | | :: | :: | :: | -| `greeting` | string | A greeting for the user. | -| `wasBirthday` | boolean | Whether today is the users birthday or not. | +| `greeting` | String | A greeting for the user. | +| `wasBirthday` | Boolean | Whether today is the users birthday or not. | !!! info Since the above table corresponds to keys in the `body` @@ -67,7 +67,7 @@ Not providing required parameters will result in a 400 error. | Property | Type | Description | | :: | :: | :: | - | `` | string | The greeting. | + | `` | String | The greeting. | Corresponds to: ```json @@ -110,4 +110,5 @@ GET /greet?name=zkldi } ``` - This is omitted, because it's redundant all of the time. \ No newline at end of file + This is omitted, because it's redundant all of the time. -- That is to say, + You should never depend on parsing the content of `description`. \ No newline at end of file diff --git a/docs/docs/api/routes/gpt.md b/docs/docs/api/routes/gpt.md index 03a03d8e7..2d8282f49 100644 --- a/docs/docs/api/routes/gpt.md +++ b/docs/docs/api/routes/gpt.md @@ -65,8 +65,8 @@ GET /api/v1/games/iidx/SP | Property | Type | Description | | :: | :: | :: | -| `gameStats` | GameStats[] | The sorted statistics for the leaderboards. | -| `users` | UserDocument[] | All of the related users for the above statistics. | +| `gameStats` | Array<GameStats> | The sorted statistics for the leaderboards. | +| `users` | Array<[UserDocument](/tachi-server/documents/user)gt; | All of the related users for the above statistics. | ### Example @@ -258,7 +258,7 @@ GET /api/v1/games/iidx/SP/charts/some_chart_id Retrieve the tierlist information for this chart. If no tierlistID is provided, this falls back to the GPT's default. -!!! warn +!!! warning If the GPT has no default tierlist, then the server will return a 501. ### Parameters @@ -589,10 +589,10 @@ GET /api/v1/games/bms/7K/tableID/insane | Property | Type | Description | | :: | :: | :: | -| `pbs` | Array<PBScoreDocument> | The array of pbs part of the score leaderboard. | +| `pbs` | Array<PBDocument> | The array of pbs part of the score leaderboard. | | `songs` | Array<SongDocument> | The array of songs part of the PBs. | | `charts` | Array<ChartDocument> | The array of charts part of the PBs. | -| `users` | Array<UserDocument> | The array of users part of the PBs. | +| `users` | Array<[UserDocument](/tachi-server/documents/user)gt; | The array of users part of the PBs. | ***** @@ -655,7 +655,7 @@ GET /api/v1/games/bms/7K/player-distribution?class=stslDan | Property | Type | Description | | :: | :: | :: | -| `users` | Array<UserDocument> | Array of the users who achieved the courses. | +| `users` | Array<[UserDocument](/tachi-server/documents/user)gt; | Array of the users who achieved the courses. | | `classes` | Array<ClassAchievementDocument> | Data about the recently achieved classes. | ***** @@ -674,7 +674,7 @@ GET /api/v1/games/bms/7K/player-distribution?class=stslDan | Property | Type | Description | | :: | :: | :: | -| `scores` | Array<ScoreDocument> | The highlighted scores. | -| `users` | Array<UserDocument> | The users who own the scores. | +| `scores` | Array<[ScoreDocument](/tachi-server/documents/score)> | The highlighted scores. | +| `users` | Array<[UserDocument](/tachi-server/documents/user)gt; | The users who own the scores. | | `songs` | Array<SongDocument> | The songs the scores are on. | | `charts` | Array<ChartDocument> | The charts the scores are on. | diff --git a/docs/docs/api/routes/import.md b/docs/docs/api/routes/import.md index 7e70b9fb8..326cf0a35 100644 --- a/docs/docs/api/routes/import.md +++ b/docs/docs/api/routes/import.md @@ -6,8 +6,6 @@ ```POST /api/v1/import/file``` -**Kamaitachi Only**. - Perform a score import that depends on a file, such as a .csv import. ### Permissions @@ -22,8 +20,8 @@ appropriate way to send files. | Property | Type | Description | | :: | :: | :: | -| `importType` | string | The ImportType this import is for. This only accepts `file/` ImportTypes. | -| `scoreData` | file | The file to import scores from. | +| `importType` | String | The ImportType this import is for. This only accepts `file/` [ImportTypes](../../tachi-server/import/import-types.md). | +| `scoreData` | File | The file to import scores from. | | HTTP Header | Description | | :: | :: | @@ -32,13 +30,29 @@ appropriate way to send files. !!! info It's the responsibility of the API user to use the X-User-Intent header properly. It should only be used when the user - has explicitly requested this import (i.e. not an automated script). + has explicitly requested this import (i.e. not sent by an automated script). ### Response +**Implementation Dependent**. +There are two reponse scenarios for this endpoint, depending on whether the server uses an external score processor or not. + +#### External Score Processor Response + +If an external score processor is being used, **202** is returned as a status code, and you are given the following: + | Property | Type | Description | | :: | :: | :: | -| `` | ImportDocument | The Import Document created as a result of this import. | +| `url` | String | A URL to poll for information about this import, while it's being processed. | +| `importID` | String | The ID of the import currently being processed. | + +#### Internal Score Processor Response + +If score processing is not done externally, the following is returned: + +| Property | Type | Description | +| :: | :: | :: | +| `` | ImportDocument | The import document created as a result of this import. | ### Example @@ -84,6 +98,15 @@ scoreData={(-YdRNAH~+6v@)MEtBeDY+LQT7S$Txb2IS=Pu`!) |+KCjVnM+mWrMmtp49Fl26>{op{R;L~Wc#Vc z!txISW*}7l&xf4-m66^zGNU3`fB-H5+MUwF1H=e_GJJcV7?GM`aG8K+Nmn1b&l=a2 zlq$AM*P3unQKB}4ZLZ Dez!5N%2pcIE*Ig#(_($MK;r1@b_wl;AMxDUeF*iav$$Qd z-pn0#+-BgdZO*ru-mZ(Zg_9aMpY)PP56Jj@0d-8opW!cSs0YTUu5H_Q8ulF-uRgH{ ziQGy^1VzVwFsK5J }a-j%0-v` zozE?`T449WE38meR6*|5s2*85u`(3egD!JlaKo!ipN7hu8P7z`#>wQ!WMHmh4g5OT zJ54q%{MOOP_SrT-2%*HwmnNyRiG;4@)E!B6#e~Ua)vB=$2i}i0zx7c~Xri5^*LM8O zYt zfQnu_9`A9u6kZPEb$7 zK3Q2w^KL~n1MyXBh0;0)+Z3yjOqUcHh`kdDlq1l{94W0gE}u3IhP}xL(g!{Jy}I~I zbKhXd5oa|#jV*d_ l673}a0Ea9MM8c%Wr+?piq7@( zguutlC!q4IL&N;G%6zdop1r%pcjrQ>0I6o&^U(>YAgHa(9!{z=VCwuakaU{m?!*>F ztwmQv=)9>Uvx$alLq&X-=BAA+ZrZr>&oMTgFP{!I07=VarijR@_hMRgi)EHCCu`75 zb*QG%uPI2195bIjrM^f1qM_Y+%7jGfrd^+QnBPOx&YO9{`I)lM%TpJkOuD{4yT1eo zwQCK#sRl7JsqOD0I8EY8U)|IDSayx(?+bp@&EQir#bLV}F6<_?cyjb!?>HEX&e>+t z1G!rt=~51aqo1m?R >Zs{m8tq@0tWq*0}_RyFF@wu%(Pe+F^3tpn5 zWNr_QtG8eZH2d3vzQc9XlM{N!>)w0soVCA-8DYis9``wGd{iLX{X`fR@*hO=n(mX) zf3i_x{}?2H3vXbuxcogoC--0ff^N_JE|J)|^R*}bFNAH=MsZdi8bC-d@{ArH%VCFh zX*1TH^ZcihM}|6qHqf8(;(n;SarrZL^{0)FlHI>|{eNI|&o!tk%8K$LwgiOm>{uX2 z1(zI@oS!?L{|l^sH4s}C#63auj RS{&@-k z;r|q9TPr=SSyuEzdiq~r58 LY3d0(`T>!Y@4sRJUTzqa z$5GQ)Ib6PZ<3aG)bunETtYbog*%worwVUP0C?JF>^w_!`39`D7<8aM21MRj&t*DjO zmC~oOs3&)S_Ab5b<$tc3f%YWGJa&6+kX~u^|U~Et$*EKa2)ksM;{r;apNDSdya?mBCX05Z>e#rTm86Oc` ze)sLAih7sQ)m@XCwBp0k+gb|BbjH0TxK@REw=TH0t#;NoR@QOhx!u6v3t#uQ^foom z`OHAnP@T$iJ$?PLaK~O5G-oNjILXaq&zX{0C%Y#mWb(X1b_zDW+oH4I%i0n5`hz^* z+jJ*`rxR7t-k+?K@#sC#EAEahxILCKrW2+_E}VRw&Uz772%QJhi9&t1O?^L7w9LFl zt%`RkE?a;&J$>A-|BA%boX;t1tyX|x2D)Una!KW~o2u9+3?Ru5H6clo-k@6Mb(=`c z$<11}h?-k_c;!iWPTaz%MIY^~jj)-f9@k>LYiVdl=# -=}`?sp|{nT3`IT*SH>=V6~yy9k9q?qbK zR5>~EAWKKv%iEVesAABa^UBAc2Z`%VPU$snbMq!uw=S&Sn0Q%GZ+9Y<(rWZj9gEea zGr5P(hYU{*NJ?L{uAH%5;L!5!8o_%U;x#wJ?G?<3tkrR|z-a)02tJm`^eQz%-F=YU z&irsycf>EKu)R9<`FCq*J 8y)jTmzjthGvVrbX@FwswEN^Lot$^)%U2IfB+IZ0P2I?Z(yaa^ zCE3yYPVbh?g(EFnb)n!^Cl9wKS;D%lS@O{ZVAq;*&7$4xg~eC-W2r }TZg$7m7A83-;L?VcH(t0W=ReLSDy#=w zu%D {m8vr_)Apf6qRQ5oR24}zT4^9Mn2F{i8npw`hCQ6BC~e9 ziT1U7Zu{b )(%{97HXHT^jqR;a{E2Z@8-BkyV6>Z(PM3EH%H&nIKi?TgloE|3O;1Yt40iKTk_i9RbCx)o($rX1`)! HCMD^iSbDJJvxqX3%)~p>$~A(a#@(XS;Bf5d0iRWakR{3 zHa$b{i*L_{#zES&w@F5dgX6Y4TWh+f4QO0-%nVX49zuT?DKMRHm?c8#!JARZYd>ZA zkc|x2SVY;vbq98-7Pq+7Jxt;oybxFl PTtgV?qxE zc6aiSpY`8p%OZqx1YG>*5$o)rN;c!ir!1S9kuY Sa_E+b}P2;Md2 zrnuB=njc2UmwPk4v%Kj{3<^aolj;vGox4h_-<;Rq?pyavlLP#2&==?f)eKu5o9#|w zW5#RWF`zOgv?~g<`D7bz6-*8N(FuGR{CNpxx*kxYz@1$Q6Zl-0fkc5hzJ=}Ci?)-0 z{ 6NujnFKN{jX%a+@g99Vi=UAl9?S&amIuF$9JO6` <%#+2_GWQ$ijTE=JMgMd8q?6^?X=Vz>GQq z+0K^t$bgh>JENn*Rye8ltdaMDqd$if2G8i!Ow4ZWBhE=pxK&W$+_?{M%5cR0A#})j zjlaYd?)>zd+a{~#p<^1+s*R@^#^fgl)Z#3KxzfhuOzkYjziQEhhPpXjOvlc^@G?Nh zc@=$NuA8a7eq1GOPKXXXT6G*0?x$hmKJ?YNG|u~TH~34dK>&QU<<5I@Dy+B6XU8M2 zW+N{=KK{xKx@1ZOVj$d_sphIy;9m7#Pe<+uk;%7iZ7!CIXIUn^7O;L!hbR!_5sK`( zk;K!%hP_6WV&$ToWfM*Qcfm nCmlmNK3)AG539Fx~3LCI#JUR5zNn_1^w+%oEkAOA{>6U2!PN zmYqSR-e&bb0ZWT|_>9o7k;g(<>hf03A0d|*YntaDd?#G!F)cXK59`fZeKrrO0$p@2 z!bqz;+HK*GQ_;rI6g4F$N4~2A5{AVl9^Z+i$zB=WeZ88c`oS$#KUs2X*<{S zsiE#zc4JKHx;va}dd*wvsSZX?^a1xt zYbv!6Qz6^z8;!F=toE%2Jq{)b|JD4}No~Gq`VMGH7S%iYqq`v!_LGyqxJQ-a(x9ey z3t^Xj`6ZgIHBlN6*vgrWKWv_W<*;AkJ@(YXeGGTw^4(dAPwh?qP&PMd8~=H7e=E3~ z?#dfa+=c!Cu;KfKnG`pjj$)o?bk5cT%)L%WY!3irC#5RQsC#0Luh(;ws#*tLfVcFo zJPQ0 FvrL7`L5Do#RD$;D+O;R7LlbjntaBcVlC)o@*&dUC%nz}wXmGo z;#ak7EB3GI-syUs;$rG}pVUM0zo}5Fp6Q?}&kns3z9n``1_ITxZFG_*L7^7IZ)bvo zel?5>FI+_q;e6f=OPNsKcU+-8!@UGLJv!t*Dec=Y+>#ymisq-@VZXM}eRdPseCwL$ z&Z88(gZ_DoIw^t`kgk)C|3YT?($S@Ew2atua`oc0hC!u%do*J$wCM5;m?tD{W_w7i z%=0Vo4n0-C6-LvtHDFxy{y7qZ{3w2V&%QO{R+FaTTQcZ(8koaQN#ahP_O5FE_=YHG zXAxTWsH+O{;BlJPWR8B=jQX=(d(nHIy`D9ZQdSZW$-5y2RHe@MfN3+k9Tv*KuHqi> zglLjL7v<$&cK1hx5|J2uVgx08`=Ng*fj~ort?mo*mWdl3V=TiW)8P~m;Pc#IW@eti z$7j@z!g~ytG^g-t(I_4xfFsLYOV_59JxT5EU+WjlRcQycGqy-b1M8@?h~M5yJ6(FG zx-@BWa6nhnM?L}!?TZiWwRQc|o2)wi5ZR(ohX5&}gL-7NvEu1+QMVVaTR~Hx7tuPS z3|sU_>tlTe$ilI~JC$`IU}v~s^WCGvgpRRb!)SiN3DB7L_8|O%BsUfZSAznxAkWLr zxp`;PTPc<$c;~X)ig%iR!wfOKMo`7cLI!{NSVtO2u|}=8WOI~|2F~RjDT!9y3Pgnk zGOdROH+YY7mr*k)qePN3y6EuN$*g`M*q83ny-5;rqOXj&QhgO_kL$7-N9=g>UEp## zhA>7H$a5&=8SzavpsCtFI(0(`C|yexs-zJ)I3i z&U85_T-l7rxSP&Bx z%X(U7A2en-wZYB#vT^|<*{E$Psvm0Iw|=U0B(lAUu@;z-8C2M!y5!iWsJBIuK(Lw_ zBrX(6$Dedl6uEqIMmX`q)sFRknR?`5XyX$}n8&$Z%^eO{@{BSto$#}LwbuT7g|3II z37+whM5Z*s{rCaSF{Mv{z&;!c_o?BJfQiE>SHdCL`uE8+9|4Fpm%v=8lXo9@=2Mw& zo87V)Fk~Ldq{X`J2V_1V==EF{y-mC&3Mj(xRoO~klv Ee}-ofEL`R)OaJ$=B*pAn!n!#>aGtLMVXj z*(3BS@8;LXGepdadY&70Secl(Uhc2-_u>>NmLEPaxprj_8FU7`BQoVN+7ybX$}e>> zy@>^k(i5 wdN(#}v`zxNU)gD!cC&Xg3r?;n~%7wkdHz8_&?BwkE=@p5~?N zHJS{JBcQY%75`OM=`USNm?$yqj1#;wzu$}|INp2F>(Va>Yzzf?pC0W7HFz@kPVAnr zmNvAdRh|@rXQaTCO5lwiytbg1068XgOEOttmKb%Zz^)7srPw-XCwAMUH7Q7ZC{mCl zQ^Tppa0dEKEjoyU?@bJ;MXKfwmVy<#zoH={SyaVS!j+9@C2%dk(S>tHF)G1s>f+FL zscGG7RJ^9kb429+in-w%;>A%-TNpVMu6C1381wRh0qZU1IFo=3_HQ@g1nb3W_oghY z<)@SIiz*k)Xw!WjL!WPMwco+xRfK9Da=erEjv@dDIa &?gPQgW*} zq5ETGn%%JH3hqL<1B&3^7#B)l@6!j2!GuK)0)lcB*|+>>Js2|wMm(11v$cELPtRUM zw(Q!*>gJ XKv%WvG#`m^dnACS1#h28I$gP6UKK2;h`Uc zGuY#UMs?4fv2{fJd7#!Aa8ATizdV*j6^b{MEI7j#@FcTbe}3XLQFUPk2Lg(173Fv& zguq(y&1KJKbjtRxMJ o~Pu1tB+iUN(-Vsabq8xPd9lH=Vg<$p$ zqdB+g-J!PqA_k;P3&36W_gVt(ubZFV>@pHAeT1v&E|i-+=9<>*-i|{dsYDS~+6g*! zogNG8Kt08HEaO(x)*9>6CT)YxqF%xiE?`{hmIROo;we=nkECQ#$WgWv*8L1vDsf<1 zlW+n(a)*-yJ=^c+JeTqkv7XhE!bzJ*)T7h=v{s@jdbO|J(~rSeiY$jFfflPmJH51O zw}g@H!Z@}}^AiQZz&Qws&0M;xlUgavM0y4*)$0D>eRjKtH$y=lGK|NaP4>Ii+$x4! zuX%&D+a&3Qd+i9*z7r>P_8;ugU aF~ =XixhRbIEn8zsee6 z#;fuC9%hCj@l;_XeM4_|J#RX|dB~2okeX&ME%=1>gauDueb&ce- zH8!UD*|bq~ zju)W?drTR;s{10^vfJZIVa1>4B5dilVFV$?It*s! NnU`la=Aoe9T&83QZ-fp+_@DOSPlcU?%E;Hco&rsNa(SX1En+>A(LC{=n>vHg}J zRzXi6vtHG*EFFe)ae>R>7+&UUL=_IDm~;^!V6_0)DlTl+2O2!++jo(LSD`RycSR=G zjKXgxrtdhNICVE-(%n|ok7H FMvln)w@m})S!^#oiOCX^D% z9E+>dS&FrK76uRDi_$dQTc P9aa2$)?K9wxR? zxW1T1*L0ehc!wrCYO2UC)>D?}rf85w+BRIPt7pyJ`%8go9t^Kue*MH$n_R;8yyub) z)Ck3MnwD~y<@CJup8=ll&HgG%jTAiwzsvm6YQp{)9!rFrtQFr{`2AH5zNVfVQ{j|r zl0|o#8S2b6miP8gx;|W?OS)Kts`O^^@ZQm61CEcEbK%K;z4<7V9ce+#uL^X0v6gIt z8gBY*qBGPOki){TgB0}^E>fHK?Db8Vl+FZ1otxolEc>iHjrF`0kRG&o_{#hrxAULw zti@)ni*>)B(BXRbsb5V*g{pcN-BB5+WeUOP<38~0C302c5DFlUlikn(33ZjFb83sZ z#OUok-85>Tt(&s>(!L|djR^I5Dv#}6(EKws_I?Gtf{`qQAP#5cNY3qqU#6SR82P{h zvRXH}-1528cMCnWX3N|S4y& #_6xPv&qu25^m_aqdzEgi3CXx1Bv zwXSsS-WH7NoKP0&wIKxX-R$*|t!7Ru}G(82sD?cg#1A%v97_|+Lz|P-KVFc^YHR72z zSw -Dl9&qgRx2Hz5w%XbJnVm| zuBjRHfn1~z0$<-HJb1iVi3D5o6*iz;-9W$-TGCpO1~b9ZC0I0M`#Sy-D2ni%W$dxO zw|~Tgmxoi}royfc1L59pYR_eVT$*=vj^wJI9xwrFJSxi3NLxrEO~|N3fA^@fEECR5 zON!uw3LZFy(DCGHp|>4v^-kOHf%J8RM8{P5crc%R-y30EVz$p{c^vO{ZH^R+#Rm)` z0OpyTP4}|V%Z7kwP{K#*7pyBeY*R_}oQS!V{jHK7e?znH!#sxD%3nC3FF8#8&S&xi zT|wl&4Ud99r4RmAjr($O74vRo1nO_L54afrde}d{dM4;(gZtmB{{eXXZ#u}Cl%( -^}iKa_5gRyTogz(0Hpsny-zC&ut5-Lcz*e{k+T%tC^&FE7;faMvnw^*W( zE%l&=c=@hyu5i8nEH^g$`O3+P$jNf4yqJe|YkfOgFi?ia#X_@16Vc|I)3*q;pRs>= zY2Q*D_Jun|ltgRaP6LgqP5~U@%!aCWXZEFG;z^w)2>tg5l$4srTFXBsEb7`27m@{Y z2Nb 5;jcbbYnQRh!cpzXq(`7$*$ z0jW>%k*V jEITO9G3JQS)!dK>1Pnq-g-LAPq@D%ZUj z^X$8KJkFqnym~34E`8cdb2H IVEd~h=Neqp5yc7{a4XD%U|K#_q!~faSBP@088gpNVhLWD z@YA7*5fU{owvkDe&C L zG39`gJkDrzRu0K%ln_lFG@{C2As~H(YEuNHhD(}COyq6maozDo!;_9|qr93D&BQVt zt%zcq>^p#Dq|YYyg@lSQIVBa>$|i3(tp_b}ZGw$%-B&~zQcM${5H}p0Q0lGk(z(HI znkd`?x=a%v;`db5K4tgmXL4rxYZ9WA3F{)Yjh3p4BzCG!tX2dEwJT1qRRn)#9HLth z4hRztd_o>ELJY2)Q284;d#?xdF4YD{5Qg@T2Dy{Im*8VC6%F&1j{??&M6ifyD5+`c zNvOqk>%Vct;^TjC?B2BXjUyord`h$Jt@`qT0yC5VEg+;eqmhDAxW#8wb(sBw1w0mU zV*S&)j&h}CI4OxHR32Z x3?PYdd?trQ zQ{-6r^4rg~*8@;zWo|whTs*&^Sw8FMKvuxWJCCEsPvB#6k-<86eox=*lWX>3bsaM^ z4L9J~srD3#l^A;?z(^&)E(RERc%S%NK}4?Mk2SYOCV=!tEL#V;GA8|&<`x!6%v@0) zpC_0-ZVRZYQZig>ks8Jgc2HcVJOQhWo8Z^C(=#3<+p?vIZQ?yMNrIw*%+N?6*BCpR z%?RJPOVoSlmYD30Q9$Ec%;-r)uBJ%ApL!Vs*`Ec0w#Dz|!k!qo(4W``R5a^~^F)DU zfQ$mLs-h8d)w&+g%*v9^QMvj8_%a}YR!syPLd7cO@k2VPzi_z(J+NK>3u3gb-~f-; zHTtt6Y015wO}eIFj#kV|nF!+t@CeXtPA<$wHegA(4D^ly;w^cKZ!RbeeU2Tk>S(+O zdg!s;RPXh^(o1_DozQ>cgc~ZVe%la!630xz|JZv?!;F#Hw&rVr*oNV|MU+ml5cRdz zj`S`7h;#Hr!S@LcZwYq5&IIT%VRNAmCLdg@!IfCoI$FG!Ho{X9qP|Rx@*fC0OazvX zeT*!Z(*Wjbfuo(C)wgC^^9lVA7F5DV;=eSHjz4Csx+fO{hcMh9DQ=ggW_(|>Tvn1t zZ%~+=`Tr~d3av(y8X6SW^;XI4HWZy;VmtuGni04^VR?;Uy}6m|Z;0tYrWD*f6wVw& z^RdyczY6_)|MQW~j+Ac0Q8PjQv$zE9L`PIm$NggG+N8rIHXpy2VpQpq!ZXh?4Hf25 z%cxrwGTUh4-*moe;d{9pM7d_?dsQwshe&P6H@N)fSqVjE#?ihHVVMjeAUok6c(S+- z)b=qA8jby&yHBZaZe^ADpt;Y^9`xpt;qKz^y8TD5_jhUqX=41%_`c7dx^N#Pu+U({ zg|j=5VnF8H$@d4UF~YIyjg4iPz&|kxQC1&DUm`q}7(UV>{awPp-@Dy)JXlLiQe@lt zMjls&AtC%m%ZmKx&0z$D|IIc1e=#)T|I=E#5}+Z^9EpM!{}Z_JYzbu!vAEoRAg@yK zBc7O|*Tf?t(z^VCaG!U+e_}%N6YaH#oe4>Y-pVo`#{eDi83MwlG?XV?vg~;i{2!a< z|5Sj(|NU$6c@{kI$KAm)xr~NBL!6A NWvD{skF~{7YnhbM$4G8aOlXh+3-agX_}6$=-ajm2+1#KuO%+%=YPcl z$b8VCivByY;)MUkru+ud)~G74I$)9NQD$G7TBFDs+V4jcXC=qF-D2yh&$-!Wp `iBIJe@Mv2!{ZO`8@F-(DjJdS$b)-1qxUYo)(R(Sh;v(Z z4%us?(1}=HfzlUC%vxSeMt44SxRjcY0B!osIuFa6zvFNP{``{ob1Ye}@qRd@pi{1C zH9FzYjVYzSh^_U9&EpiQQHm7B{n_Xm;J_AJVdeyKO0B|KL6QBnsh5U{)8tLJ$E)oG z@8iG1-9-2s(DFGWq1}Ttl;G*OvN6CWpotuFSL-}hcCFB99|B2>)lbaMZ6B$O+(xZI zn?6mN$T}%efLTfYDsmNIRZ#(Qt|@X`wuCvynbiF=OML16{fhu@sQb@Pm?}h0^B(fL z!44PQP}~C}2Sk 3F?nrs~aICEVoW2l+PVte%Q}{9b75=pq^MCJ-#(I+~ z^_cpYWQMa%Dk>^W$llynj_uSz_NS!rv#?b-{(EAszW3ory(g+C^|7d{v0dYH<$ev#=I zGNNl#0{f9Ha~SCA95fh}@XYRdySanKDFOU%r?=6{Rv-aq<-y##ymN@^ ylM9(g>*G)|=B?R?d`jl>YY{VvGqvOM&&7um%|1$mOxQd4QF;RQ-K4^n1ir zjDwBG?fdb;a4N(^41czCxRcFTv?;6 k`g+Qlz^sy?Q2yqi zfT`(_K;L0^IFc!(f0~%vvAy1)#~Hk5O5Nk$pvzl+_SMee$X4{)Z^@YILA>$t2-cJq z=G3bG4b7k${=k5$>gF}TnD@wZfc#xA->CdB<4`{sSozy(Fpy^1%XPMyDuXnUOFH20 zXGRrl4Q06g;YV3T!UQ$kzolUDrii^Z*?Zcw@&_=@YOE5`53+aHp`|I%nC@eqaO_&U z=?it*jHP4%Z?wsTrtn#vyjoW|TGv$evF~zg+qVJ~b59v`&Z<_7;L$}0(z31lTim(| zY^U?hq`9laUW^!q+54m?Q~wN~ijVQz9?@}?((F)VDd%^TxYYy<$v$2WoQ;%*x@O{r z0Rfns`Mw@!r|mGhChr_Y6tSU|59b*si$-5%`1vC~Gu%Rr5~UWJ$+3dPTbAtiAu!#A zOATM%Z<=bFF@oSP)U$?*D|)CH2rIT5_{SkZ_i9({ZI}%E>MP45vsSWvETvZGmH!uO zZxt5D_k;~LE(sPaxVr^+4;I`Vf)fZjxCadq2<{Nv-95qGU4uJ=56;dn|8MtpFLvjd zi|(iUbX8ZK(_QtJ^u=?oddbZ>Hxnc)@?edQLtplzjPz|wazf8%#>R9X^TgAm%^)qj zOyBFpRuol&4ohx#oio*6Ivl1GJPR;M;jpSX54Zwj{LMA570)YpUp ?;{?zOavI }> zbkH$m0EM7nLtCmNE9P C?Q)x76_Vj~1;L=(qy!iXkR_kx-=xpXC-upGX7 zL^{SXZ;ZITlujJJ)Z5+?t@bClZHFS_Xkbylq*}rZKs}pK!k6g?idi>omVN*b$3$dG z$i3~dA*K->N&7?ze4d<_avW%L!pWZ9`m*H%kmuM_DWW}&-dWlshZG9=*4oGocQjvL z(uT#q|LUmX;K-6Lx!Y;US&3k%nkpg_lD)icbt^B_R(-5#!2--Cbs+?_weczmV)4m> zUBF1#GkniYETp65UPn$xFUpBSOof6H!5F|tjgvn59AiSo`Vy87*ZU*RKt?|6y@#da ziTLSIr2IKwLs|sSu8J*W*F#R5Zqw~eP*sZpiq}PnY6&$< jDm~Xn2e4I}Jhs z1MjO}sm_9Q#)`uZ6|^B37-5}HZvkShp5)6{ZQ)?dBLnFe;#yYv!V1xoNw!;M@EI+y zX6L#1XK5$yFwJMa-}Cc}wU;ZT66kGvOS@ueJ1!>9GjF8g=Lr~88hUPXcVy*ZI8@2T zEqw&eiz6d $S;X>`DIu*fF; T{j8J_#KDR^c)Rq8CiOTvA?zWcX_)9wv=3+0L733Gt z3Ab$96!UWnu}}M90&lM({0>ALMN((~&N#diBC?WG@W3JQ^^UpEO~smM(FFoNVy)Lc zDs-3eg4N$mc&5v#$pVh|Lm;Dfo5WYwH^&RL@8UUXYxh1~&Ly`~z1-YO2@@_Pk-w=} zb|Syk?e1Az)Q1V%`*L7uW%WiK8F*i7 bQPY2W}w=i-sr$Z$6GjY8_MJ8$JPio2U$shd+@)2t2;2 Z#^>{4I6xe4wf=Y~Uc2NA*f=c1NgMlX!{#3o?KQzewn-`d3<=l(EO{1(RsRQ( zXFH#d0WS&As;)yp+>mthFD%d{Gqth_5~aBJU4Fb9{QV lTd;schW2M7O!kn zG+EN>c5-QX2jt)K4K-cYiz83r*NOmIj)OF9*;fM;U<&5YJfe9QIhD5WGD6V}+K7cq zyitx%>htf|o^+=5yGI|A;y#lFK7qylB)2s26L9XhOlW5KTS08>t6R;|V{4~;>ZFDd@5 zeOXv3t9D5vPlr@}9z#I+POp_`!$!S{oJJ0oJl-5ma8ga$%in_zlcD4tVSWOcjoD8} z5Nrox+}+v|=k`3M4F_7wH@92~rk%Gx9`}qyp5-%)^-A_GvnJPNasH?>xs-{9;Bg%v zy{6MwWI8W?e(Al)>mP5J`*5+wEkOuazneLO_tKK~`k{F&>@%DOsU;Fl&`Y7-c&})> zoH=3-ejW=ejY;{SDi|jMs&baZ+dNaE#K4GBQ&-JyZFK2v9kI`Y`8-uE?!q%*zdG6J z`{>8qdYoZkZX+C=o~3LvMR-_Su^_@F(rW<5tW!-qE{vId&uMvadliYUTdx!Ew^F`t zwA`QuwuyIK8fwJn`BagSi>;Rbm&8Nx#blM@&1vyu`~dU*V`TZdpg10Iy--TM=%HED zb?<`)x=nijd9LB&N4f)+d5&4rMA=@*C^5H~>tDX?_v1Cy$Dg=R0cJkp)-R4B;kO>U z>(2{q8`CRfjk=mAg4$W~etTH)1c_HN*WfjWlZIs{I;ByY(@E;mbB$-s#Cz??)UTcu z!uXl^h=PYV>RPECCQT8CQc~-Mt}jYy2uPA>VM#=zvnpz5ZGVKj4?Z{hDQ|)^pzG*J zU@0v|!K-0ogX#r4=De7Djqvv8K5n|Oaop>OZBwNE1-$rr?#uxw{a4yVf|W+WGO^=l zCqBu>FAayEsf}i~WpL!k6c US4D3yZn|undKY8gJlY1AmkDUm~hD_GlQwSeg_XYPep +xB-E&iNtD)hFJ`P}B z)JD2iNpjZWdGbAHWXvZ4O=;+g>#0?J>1&eP+Q=YZ^94m`yhWk>uRqm{Gg9hYR?7Nd z7u}JbU?QcT*0=a<(P0C}`_Ux)ZnX;)1}k|vdbP0U`1eKnC;ZxqC+ `E|FZj_jlMb^P!sor3yqLz5hhR+Dxd^>&$nh5=9*n-br zU|ZX>T*&=8(k{4r*ZvC;V01RM%M(#r{Ph;F(VG95mOk~3C`41i>&rY!y62E)6gWB0 z(qhcd?$~RW;Y~nKW$SL;ty|uGS>pXbCLGy9HNORacy#}T^UORK8^z#BZa1+q3MvW^ zx=d(cw3N1Ct-~Cm?KD9wm5du*65;~Tk3?~=W6qf>iog?*bdWyNKFe>5y_34kpAdSM zYSi@Q2|3H!tP{7LEiMUvF27%jv0cotjmGFtDS`P-4wDrHu~0-UXYu~{v$zztf=9j2 zYb7SPL-)jmwyQiz^O0tCf~#6>{7c5$5bY_mw2U#mqTmd+-zJ?=m%Qysb@Q4*>1EJl z?mlKVnwgyh+_vfiDZ01&tc!#*Prp`cP}tt(&X=|umbH)oJc6U2-1Ily1;fWp@hyZJ zrq}v6tPfDNZNCh*N04&vWX`v?KWLzwEaNxDjO%sMhX1X1v#Bsd4R(n_bY5)m2Jg^% zZome3>W9tB+|27^08VXYZ?aDrEo!|hty6|6rftg@MY+LQ-WK=q>Yj<+5utDhN1;ih z&3M@<3Gaw3-vYirs%U5ngnacNWH}}-UL~bE0ZT{wyP1VD9W5=SkXthE=GVoZd$k)l z9loYp!%dMlmo1BW(sq!Q_0F1A8H~=*SiZo^y$CLwsqIYe#25)wMtJidiG+QZBa6hs z=_lTdey2NUVAFPVAsbKE>0Ag6Ku$OL0bRoAJ3bHxMLd{T`6q |}S!oh-}+ak}aehpaEr|v}7R+nA~6`d33)_(b>GX)*kUAkzrbXBhm z_SPBy$*Obec-fO|qh;sm^Q&!ayH@d5(tpL`9_{7ktT6v4wj2fBpwBen@&n%bx3?7x zQ#9P?t~?&LEx`# nB^iaA8>p;QAD6zed)4#$#;F z>X0FFj!zQ1Z1T`XS+wzU$}*xhED^_x5&V$%Hv1A7v?QWW5AtP2=kCSB#a}(L^vBA^ z-vDt(rXd$GMDLtZzJ<)`cj`yyw=O2%@&1ssPo6FI^Bpht(Iqo_=8ySkXL9zMtP%4) zqJcEt{02PlVeM8&bX)GktSOuMiSmr+0i w7C>TMrB3$t~g_y(R zvw-lKBtKvvdTv< cFGnecjt aB<*N z Yq!p53wUk>kKY<=SOQgAc`|XpD?` zHwVE>X*)K;Q||2Lo2BbH!+~YgxFYRpKEQm&b8TsKdgh*5)nvZrTCHw9K6w~9W1 bR39#k^p&X?SjF=ixyqR$m+ z{_SUt&R-aMU-^(VLOj2b6A`8w+^oIUG;*RvMcgjkHD{m$A;w1wG1O!0t=}INRzBO; zuY}-n_7i{b(o;>g7@F_7$#Z$AoQDtSt@goEE!n3y)U!oAQaU*!e#j!yS9clRr=Bxi zDIJcH$@E2U)MBbJq6B`bFF986v}K^bgSF`v(nSz${fV=`y7J(IW^^+F-XL?oD zMZ4pHYjQL6W+dHZhVn=pN>jNm#BttjI$m}5EO5bxOT5nF0<#F7Su(s)Y?cWF`@9d) zO!D@PAFYpd=>vm`sVN)lRb!UJ=l~Fmm~0Dv$BEx|$=G2HLg0udkh|${q1?2XXvLB+ z(d7=VUIM8T=j}D6>>j!-?>F+15H!iARB-j9x?D?=*)6KcE<%c6YU;`%Re4lut$q zOk{zKwerDizg8DNsP*%9ZW<0U@#u9W4| hc}vd-ck02Bf`%esVwG7fPny@9qF6xf2R^>_NPy-o>popm2Jhgz zHEXb&lwVt~i`{*^9* iL?iqB!U%XZ%5^OKAIcJ7X$=i8(YdEdL${qbRoeO%+GN7QC)m~@^W zSxWrN=x@#p6H~S1HRfyiiMSBg*vgI*-<{@AYt6X$p6q$_7Q|I~A7|bE#ZosgJ#xQi z1pU3nBRo~?O`Lj+P6&=_ZPUhq;a;-L+tQa;*U$R>8AKa7U5Pi(4J7m{U`}}7Rwk-H znpjMBmF#m+1(L&?-%x_**{CTT){VPGN>pS`W7qus8E| z9zI7Z`!+TE9TAGG4|`|n*L+~z2-B9$V DuVrLJ~2dq zoL-IT@e|zdw+n*=#_EjBtH?Q)tNYB-w iTkrZ%1-#kEZqezW44pu$!#!O3+N-{^}{W zV)-6IlYX%TZGFJdrc{~1sb!E7BY}OyskgFQ?tPnh%6s*CeEWH JPfCF75+_tUm01-H+IGZ1GL9If30|2urhIjHZT!tiX@K- z_!#5bRtb5ULP7;_KIlB-h8!7NBBUqDGK-#Yzr-yi(lY2?f8Ay}lukxhA|RJ3nAGTJ zy}eQi$ri`W2gICd%uWClC>|`}HF0T#3m%rkaRL!pH2E?BKb<`+WQTTS{ljXWckbwM z 9R zcJKv-@lURmLr3hP@2cC+jQ5xc>t@Lt9U%Q8wD>@r{rmp)n?p7#9sRiUtC9$rJETZt zN0J&8!V^aY@1M+oN=R!unXul7y;oj-0~fPbp_ESJ8cKTS^plv%Y$4(5IpnzKKYPZm z EMUe=2NTem$^*db5;^7ZIOt_7S`91J g`_CB5a?ti|=xJJa#sPJFCR~s{#LBi1RU0sqMWKz}}k)fwz&<=<;w=?>8V}=kf>uO`JBlFu03!KxMxf)=?qVOdUrNj^V0MQ z$1nUs-klF4=M>~|DPPs&aH|Zd>AISOz}e2^{fU#9tzAuc<0ii?@86D+v?Kc_>oSGt zhuhC_49Fh4AiKn!V?0_zWcH~brr?rT$Jy@wqX<#ddbv)`ymwt0d17jElFP!t`KP<9 z*R~g5=5fRnzdAB+U!2GnzaszAu*@0NF| ui74i{q1R%1J@9%In! zZ&VgzK^Lv& z3nkoBfCOG6PH0R}A)S7L)BW7lGU|^4QCRr1Z1(y4dxM z#%Bu=gVvQ1f3&%UY3Om#W1z!s`|Hn(Nm;A?DG(i;cCr-zc;u4=5`bPeD`C53+Ebw= zQ_1KWU;LCowc0RnpGajIc?kS29m{N6G<_Y1V=Et|DF|s&A_+{b1b&-n+hvrRZQJ-V ztt+MU56MQYb68nA(_jOEKe+oU+|Sxbso46B? zJy>Z1Vzx!0D%h~Kw*B8HBjPf0&5oNW+x#~yZ>(`gvYuk`@>)NXsu@U9r5e9l32%$u zE2wasQYG1nzyeR`2%_|rk7^zh5erwDHPd1@%j2ykf{C6oh!{eb-pU8O1i7|-na9RS zu_V~Zg8j2iZ!mUin#3vM5sbTq;IQ49Nlj}^(suvo+c7Ab-N*vXq>d~tM8_NFPP&Qy(AJQDQ0E9jw{bi2I9k5hEQdbxfAz8ux7?bW`Ie=eZeP~lxydf< z-a2*7P#2~&Sx`G%8yDEa)+X$uuaYfcQ=a;w0|Y>1vcV(JzR Z`k`QiNY}{S`V_&j $GaIUPu!NI*?(NbrB*FgsX7^3HyUcH0x zv7vj#k=vi1JF^-HS#;bA78}=p=jwZwLC+hn8vJdfMT2b<27WYko*GRraQC(9>;7x? zaw_XP7S|D3!eRAJ%iTxMv9<_j`lljzuL8+X=uc1ENy%sv!~O%q_=h)3U9;Xd%w5e| zyu{M}XxzK6^TP5f18g@boSuQ07%f{fBa`a-RPo2_JciJ6OJ>8Rj!3>|dFdxKy4Rm~ z4wtb~mKCn)e9pm`iE4&VthfE+Be5ueBkcz?V4XB&>s_MwF~^9<3WpoN{}Pk(29p!; z!BMi;Icsh2k?KV~6DDrs;)!oc6x`Lxt0Hr$+_CRH!Le%cYexN3fKeKe(>iG3@KNy{ zGQEPE3&+#})td$yrv;3a6Et&YC@zRCsrx4`$_{%!v|fk#;n^jK%>Ed0J2a-;+=(_b zYCVs&Lr3z|jvE`e%ja$s{7O<)*{wV|6K{6AvfRf_=+k<)ESd8oK4w?5(TL|^t@m*$ z_#W*&uch2rjKJuMw)Wgh{c00|v6U^V%L |KY-M42%apl#aG%_Vzb!J@(vH!!{K5%<1O(CY? z_p_&_;ZU1-`2`C!Y<<*t%pck485R-}wvOECym`LmWayW|#QAk1KhYaL)LKsET$JQF z;N;qDgzlWI_I;h-JvrO!%A1Nxx9uDNkop`|7w+U7kaLl?S^4-po1C3ibUt>AC#;>7 zJy$h2Vm|wT3zvbBL7eAqqJ=LG=yVyJ?k$A(`Zg^lJ=kBk80CKee@71KW#X~Dvam8M z|G#qq_-dQLYa9M)$T{PIT_cqKGHYUw7I|EuqjMWez7-RAa}GQ+G^!slvLK`FpM_0k zf66UCaH}_h=M#_uX0G}xZu}p^Y<}oTsA#$17C-oe3Lb%C zyT?F9aQ2raiYvZ !CbhgnbFWS8}7xUY3Wgsvxxr7hH&jD6qZ8Z_}XCxvUvTKC@k zYzrg4@jR!SVB?wia=U_k+tt#74j9%GPh@~*RALJ-$)^>^e83SHyr(aLdtUlaGkIHB zTc%naS?mLoee(xdyW%3na{hk)D}f~!qWn27tzkxcyDSJ%NumN-0%IV0_eN2?X?f}V z_79vKgX$yCMQKbK0}C;toqkV6rSL%Z)`a)KD<6S`WIbZ1V0o&R4hq0Op`10e)~usB z%*0SN!ly1Btv(q94-|X2-b@MyDV8B3@ypCvX{dnHu$%dt$`JunXrF1#6CoW{t{rtL zMMcf$cQy^XZ_|)5#PJHmxr2J9YTbN5UQYHb<0@jv4WEp>oeoDx7T(pu{Ng%}jnu!a zsd)CiCUSd=tJ-+*;t4)FHwOaZTow`qP+|Lk-{mEhCC@T`{q8Pmk}=Z6Wcm<^d3yGt z1KZK&-u#4t{&=)(hG?vPCLjCuIT~0XaDx${P05J9&%NdsA#m5bkCL2GW$whNUY_(7 z>uO_B 908@LQTU9@T(y!J5hnB`Gg47Fqv zg)Fnixv^c9S97m;>#FKC=khVpnr}orvwWp^((c9+gf1GID#^FWFGZW6Z;@dLjie(c z3kJ((eqSd1`C%oxFvEes*=jYsprNGq)F^VETY0TXLJo_6t3R-6e;%O^D1P{v@JlDt z^B6ZSqwZ5FO~SqcKC9?ODbShNx?!D?6Mw<=X%x$F-4A`{BiYx^ACb3I!JT2hFyW^r zSB6VXP#E7LS>JtQYOnx!Uti#leE8* zjekVf0}j}NS=@p#CC<6{oEpEGkqJgNWtZa2CReIrRt)YU07ev~(z-n!*wP3=9~12} zF4PlTuNOa9b>ZU{>;_VHV<;a}YjYWzeA7*Jnf4_CFwJ96>G0NE-uK-#;q`t*ey%Ss zOAekFII_++_Dx`22h~>?8o%?Y>!GiLuUh58Fsfo1xlPfSX(c)p^<5RVn4dov)ijwk zuu%H7K>FTaK|Qj^>B7<9xQBS>g9*&<8sRM7BdufR8TYOetCj;tF=W8UFBO%1j7nkG zQrmEOJJrrDo f 6ZUHjRWK%Oz^daj zr)k@D1|^O4&%}3r6x4Qz;po6Mhk$0jNdZ$SX5!f0EZ;Wu@rQ<(PD@glkh!;iSS7Cw zl#czUt|M(9h$74O1F;RK4cze=kM-@|?dIf5FRp!`cnYx!!91!jy<}r;!fIMOv!Y}& z$as0`t~`bt>s&%>Dy%MS9lcT+Gy?)k>m`%KBVo~Cs{7VeRqh^A2*;2DD4u)y%WFOL zM`6UiL@ S7;d_^ZPOtTNzH>k*QRjo>%Y7ccCCA> z<|~{E8#hjU+&&wXnZ7fQPAOu%+t@H8RpUbG>KDfo7kA`X|T~!2#M5+~9AKeF&g4 zdDpPT+z|vog*cl{poQ#i!On<*y;R>~zNDX^;Xw|81ev+q5)kVvvidWnyRug%CePxA z`ieZ$f{Jv*cEi~w-_mHUjM}$98&Vx+R^3HHF-x4ftaxyhIS0Z384pL@8pgU-ItAt; zks-6#Jj U$1HEn!=+E% @OkFkok>Z5mFtw?xhX>nG-nOYg& znk5|6_9v$cm9^+QrUY`aMB4m#r*CTn5MU0zxAnd D!auNX9S$cfSyh@z7ucrXk*_`Avt) zs(F}VxQF)DwyJ*D>!OCXvjHzOrsraFa`Kfhza_UBf{;q1Q_m0phR1z0(&EyVLm1wr zJg!ZwJp8*h{YoRNJ+n$JeM0|+VnU$z;RvsH!&;3t^1^94SQXU3z5m6Qbw*VG!U@dr z9QoC&>eN1T3+Em1B_YXRyli^II~V!cd2t{bDilVJRfwUJ(J>AUgIEQ#7ih%R$Px_> zNJ(^ZTYp4LBAw>JtzsSW@o;lh(P98(WAp_Kxi`H&nij8_E+guvKc~YNn|poPtHWe^ z{f?)Vh^?{Otidp{$V~tkd9_6^xa(X=F|#;6gEvSKDP|cy93GBDwY%v)5R8P+YT>M- zEuLj*zyr>8NzCfXd~Wyrk+DtoKRWU%^y|x*Cr7f^+Nzfi*Rw0RZ9a)x0RTJ=E{s_6 zMLZ1oi Vv{Sre2ouZPiYQyw{ zECSm&0gaD6q)zN$f|8n=+ApKDg8`x)_LRMH^57taDMZ_50MSq7 OKuY z3@O}e*eD{us=gYRKh-%wEh-CY8&0cQ`0P6Fu;%7DK{b2fDMdq^$uD$+@54+rJ2iNt z<_qE26hv{ VLz>+wam|AV!or~@0%7xk)G*wj@!v|d!5#3evPvCxv z;`VZ)Q>Z}$ypmjjiY4xjk#eG=x);2uFEG=Ok)1Y+?{0IdM=hrU&RW765$f cJcDa_>YZ#G1lNt}yHmsor^J0&}X>~!QpMrYOrhl69%YDVT|R=OJ; z@EQEmfADiF0OZJ7KkOe5n=+zhc41*XlCtg@Zn)FO@_*W%Wr_aXB%9%zr+;z1U(G2J znX6zL*|4}d4lCT&n5{c-l}}Nz{v^lXJ{oq7!cuw9Ha8irG#_KYKgVAqVxBUxmM3Y5 zH1U0>(||P1ddOYJZfok{dc_uWWs@pa(Eg+4 5w4j#Q+ROfmTJfJHi|MeanA#e{$zcRP3K$P3ABo zabu3<;^Zi`1OdMWh?6y8@kv;z;l#Rdy}3m1J*4Z;G46P*!Fm%cLb3A=ENdABsHK%W zI#dG_n?D(JQIeGn{E>kzxIO#%OjcRSPqn1PLR-f3a&18?7*&g(HYAB^Yu_Mqh_(n_ z1eA>p= 1zLAnO$;+IQ)oLtCRCf0Lyb&V!gErh@ zwZ6vl0j7?Jg`mP o-EMhh3a*QykzQl zRV?qRtG%m0+P*kXa||y*e7t0kv0wAnR sRNnrzMB#5`Fj|Z zM9|hEig?GN>*hp^_c~K0V&JsZaN*4Z4w%YBkz+U}NlA3+ywH5kZxQVGyW0&9Fo0C= zf%rAZ`j`q>RIU}QpFVyUcpRB1il3aFg$Gb8R_4vb={&V7_>(R(d!ach0~u%XtP2(4 z1 w}YNv`|Gb9a}Fn5EYn zCQR$7t;IuFPTrN5H-!`KTE226lV2RRl1w)z-xUX%x4YQ{#DDq3?mI~d`4PXnN~O2X z0?t;u+C4#!>;Zn2f_z788ct=fVaS&adCx%zsa>x|8&~ey%Ee!A4KR~^5DYbdtYPEd6Q&G2`xP|ia^w~GA|J}O9kt!6m11{2d=ec zdt2OetIQ(sc`=$YqyC+A`e)N?{=tX8BN7)c>E%2>KDc+WaoVTrc?RD%>O`oJ$ygnG zTk5C#XU&X&SC+GEYT^)LZkMwCSI%2=zht(!oz)`(vFl83DGHpRb{K%e?8c)?XNI2` zAeZ$Sks113RM;W_ON@W3@0j9X|7boqPC!0u{y@Mk5%^S{ujt#pW{KtrVkb`&szoAO zx4K8Hqg}9lPK&h^NdQ;!8yb3aG!+ajXj8vYZ>g^8I6jg;r6lW 4>R(PX&%w*{~iyfp(VED+X5esQVFpz#iSAco=^^l**u{m_^rr5*RA1u}6s z192!?G^+HR6L2Vc3Qg2ST4fcFmC64$NhB4_u9fhA`a4Htlp!$fgQM9|->lp**Q*~@ zI$ZJV5(S#YxVOEju{)F6o;!me&sK!905}?jZJY?04El?Xbq$53P;YkD{*ctsWK)0t zPWb+QO<7b6f9F{pR}wiVI YANk0G1Y5=%18Jb6zYHHG9tFTud2jZ$ zV_?cDrY>`A@JyltS29=j&>`#K7`xY=A*p-fElRW2(3T?~wAnOw$2~oZe_lsK%R?z9 zFwB{C`JD+?tV_<>-9cy*_%OU-z_gXk`04S201HP3Oa%vDEUI*05i#1v#qN4`73C63 z)A6x+LhA8gN=@)Uz!nNb`Wl%hLgM!vh$XOy8TCjWGs!&BkcZ7_)Xd%Pdy3mHf(raJ zaRpf{=gRm(w^aUsD+YSXJ-46yc4!eO08G{8(xjd9Z{zTQc*`8jJlrT3ok9vnA4TAX zgc35)`*@c2$J^s6Kb%v`IHSuI9awB3XdX{xcUnDAnUb@$fG0|Z7R{JNq@zRbBQm!$ zARU!4gbu=&!&y7#Rq{tGMfEymzxVr=JA%{UwRX;CW@j_%ey99la1(e!1U#hrv)5`Z z|FkbL`9?%be{8>A%&k-L&hd ZaL@9ox;tAj{#vU3OJJr}G?&2{IO z)aJNXv)R@PtGxVcOg<;{{-wzVua*xA3>>y3>>n4pASmA!xf(X+>u;s*bc2ZtI4TT& zwSA6M)m?zZHdL&U7`UI_V*R)o%CDn;`gE=AYF4Gg{RPLU;MF7AA3wKi?|YPf$&Vlp z8fi$8kB7dh>*ppDHJT2mgoOUWQaTr0$zN<%f=&kH|Ub`zF#$)vQmo@hph=8*YyE zj@7&!iFviIP7Z<0rme2`&+39Fr(>&1{j5BVzZz>HN7lk^6Zk^Ywt8ojrK3N-d#J(# z@Zk<=INXi(g?$e7E7}vz{*@6Wij3Y6V!-QMm7_CBH_n)4p*{xtzr;<$>hbP=r>e}< znurf s6)if!|aj9vw9uL3K?-%Tj?mWG947OYUx(M#K=$y@p7*B*niXWL+*| zpJkCU^&>hOy0DPa+JoR*V_1A$D_C?rY3lDp5w&Xg8!& z$DZL@>WjdX^&mSfl&ncpcW# z>aIBf_|U>;Vi$f75k8N#_S|I$d**qZuq=uJ#dkN}Vrh+0ejZ;-gm^PP#@4HhP7g9z zIinX1iNx>nLu!)d+LtTrWQ5(phZEk~{YjJeZDKe3k>SP%z)$bj_mM2#RCTaGL>xMH zoHCG+id!Wg@V@QHj3uv6Fbg?HD;DLmSl*+-*ZzW(wB2VK^bUGMp-?aC`oU-0sQ#~g z`fZnd<;zTD*2^5Q$ybcfVyYfQo|aCow1|oVBVUu~=snkhT3z@=DApm|X5sA0dw7}K z9wWV9daRFc>~`ywAiWnmyS6DnF@AT*CbXs$McX-T0b%B-h=k{#>KBbC;+tRXVhd6< z^>5j!jT_%IrxUf$C}^Y)Vz?e282=$2YjlQNNWe*35B=<(1_?CV5)nO&9Qi$0Ns)O- zvvMq+v~|PYlX2 !(F3ePmjipOJ7o%bH zPr73C+;bL;@g=s8IC5;y=6LJ~83aM^kxMJMvtR**oHOV8Um05V_Rs0`K8$7_ARet* zx8n-Ew4~uvEBnrVb=`-~e7~5)KG8+`{ yaT-}(Hm%mCfR+Yq2|RV-ZGjZ$H= zY#|6n>?g%%K@FRkpeI^Qy$?DDv89`k2Z%^35$ptt!kGKa~{ z#=P##zWf=>gF+0>hs;t&pRn>aMFk+Yhem>2A;TqsY|2{I$0Edo?ZSoO9L{e~3t@g* z2mduF7zxXU3)sQTBLznX%O6%~yb;MX7%Y{ma46uVC8slpS4RWDF@l1AMBMGkg9saM zfzNYz{Xz_StNJ^eE0A_W>f>nn x zmt4r+@u81t_Hnpx Y z#3( 553aq>BJrW9dY=dGkjxodmO!8hF|>V{hC+pgQP( zW!GH#EKi;`fIRYmMU&r?=i)49=ExT9PLC{{PEcBasie8DxHl#dgg62Rgfk0Rrd%Ii zb9l*lgnW-Kg(^v-Xkt9lYhI-2p{bbuK_On%j{TF7ozAwXgmIprmR=7`069t&;T#M9 zo8(`T$j@cS!@pBk9`=w15@)a-ihk$_>jx-c!h@OPGp}$$4romJB(7%LF5!Ue(ZRK| z#@VFKN!BGIyQUQz2M0?Bhko; #=B5rAM-JXh zyKi_`%G&tj>qFlG8aX0Y)TL)!`a6-MD`r(qdCX)8z{f=V$v0#$0U4#JsenlVTGk%O z69pFViYC&zyY`NsO=I!}1# IL02F>&gO(c-szI-baW+@|NK z(B`$2P$ddwpXs#>*A8~##fA;oqQkIwE7Lu5+?C&-`N_kBFKmo5-u4VZhehz>9l%=Y zF5oV3jrAkJ(Pm~QVvogbu>I?hgZq%FVoyg?M9fPoX#~_-V7%-~u-t$QvlIb7Ue)`j z&Rxy)@`xe3wgpH)r3|G{mDD*$&R)-HqMVds#BMd?iT!!2hR%HTH^HmWk63kQBdIC+ z3-{{xQ%%wgMsdyrfXj0b?bLrRbR dPajTDaIKxA#}9bzT?U`NN?WS8f=V3o%~ zbkAk8xetp3>wM=+OGu!b!^hzR_!j$%SQC&Jt;Yfj`G|>jSmO6Dau;-Omp*wP#B22g zr`@Tux$-EhE&8^FFgU{NT6e-)L5h;v0?Ej(Rn|ZME$@RfA5VW2p~x-+K5vAtq>ptV zpwN$ni#l=_2`e|xY(+;P1u9S_BX~4c7hqy)^w@>5+LOkssPZNX-wZBOSb9Sgu=7FW zRLf67Zq-!5FT!Sxe79EB0Se>ZB-^#T@W5rRkVL_cuNfUS1V7_F*4b))!c{LkKDD|E zHZXh*RK@Z5Y)ph?uZDo=%^%IZthInmE8MN-(Et01SXKR495}z<6yI1`8ta-Gbx#?p zM!m=TN>l@_Yz7r+`i-9L+$6QRvzdKh+*WGSs^#0V(JJh5SSG1j$@(D${S@B0-b8== z=x4{$%V ^uT^|#g~HKsSTW7aC`c;hyF9Xf`1C ^?Ul0nXKqpY-S(7GNy zdu%y1x+Jd)k{D=QXDfK+`?62BAb+zq0=9#V$=iB;KXh@KoqP4-!U9bfM<5PV*zIl9 z29W@!u*}ec^nCP1>8 vXK{m>*+jR< UyKzL6kAPXrh(- zNXC~9_?<9^lt|rXa0N9eM|Kk57nKzBOytxp(Zp1OmDtL%T1>0>8tf}vOxRP+j3Nn$ z4+N)7WifQgB_H4>nzdbD2kX$-f=MRrHn^c3`)gPPzK{vpV0G?8u{O4=9+6vgK?5?1 zV3jaTPaDp$b6CjzffUg?0zvze#yC}Bjmw{m>v(*J`vtpbu|1*&%bK@AJ)6g^e#MT{ zOYvvKaXUhA?o+%EGzuqEAECfH=7ay=Vh?CQ#japb{pC`fADH#?)cMUD`H3rv8Z6)^ z*MI5_kn^hv?;5>Lha=W98AKRJyUlF*50s_2X8Qw;Rw3s!da3t`Du|;3cNVmR7Z-9q zBp4Xxu_zq}>@Co=WXgVRMnQG&mbNp!swrRdn!f*y_3u%=fHJUrG!-Ho&(*||Dptwp zbK9O9degwpx(cFtykSRl1Om`Ls5JgvZaIA`VSZBTOSRD+#b)nm#tG#ZO5b cwvbLxGwlMjF?yBRBoG)3%dXKM>kzV}EHA+wqjM7lqJ{jF`IMBF=1sxjv z!p6r)3KgS13dSm*t|lqq(L2Dz(fytn9hzXpm1q;hY5RVa%Q&m^kXsA^K>m9=r~NQ9 zP%Elq@*n9OCA7!?uG64t6s*4yvNs}w`J1)Hdnu8KUerR#GT+rVEdt|l{kl=F(F-9= z;qmh2siON*R73ZFgE9UEHT?eW!5E%l^KkCF1vteoUXur1_gC?k=OZWQZ)kA;JF|-* zI^w@O#Q9^w{+;~|o`QW9>;Q{X@@K7@aI&I*3Y561j)B^@D(cMrkMS}*O=jQNVUpNS zb%_7F%gHX7e|$m}4P`nS`5)c?L>H_g^S?kEbQ8KxsQwE({@a8S!!n74Uhv;pm`C5M z|EI72_FX^zllT7)2~hrvOZ{&Y3D*A+>;DUxf0*{GYT{$r>q`*j|Dhp4GTfGovJqbJ z)ab>fdeiu%OhV`?_Ozyt>;pMlbEra=$i(fc-^#A+CR4fLzf#uD!G2FZ@-U+*cDmOm zbD3QU3%$47>z?ti#JDm4WBdOPUjJW2vZQ2*{D0>H{7-WK-^KHfWKQ;9H!5Zd9>!5C zwJUnGM-WPlYD_nV%J&Upw*MrS(}np@*bTVZ`SV=tgn;bZMM}lzJ)&UpDdv7x7@$<_ z741^OztHa=TmJa}^kl=7*boVj?|s5crL QeU(tEpG5 W4# z2lGGn;!X5vVZ}xhC*EysLD;OY;QL%GdF>PGL&Gss6MT=8f}1^tP91^CMUD&QdEEb| z=RuX&{S2-cbi$(iEZ$l{`UL!T-l!YtLcBHVz=1V{5nHJi1?Z2@S}OGMX{Ob?Fjx*0 z(XNy=@cs>E`}Qx6EK1A0sFU$&xV_WLebmbS`vcxe!&=c8E(EpYG>?u+MHlnyA>P1` zIF%W9gNk~)PukDvOa7I^|5(o?{ilcLMVGukfa56mHYkqJe( hC`;Z6747Ry=7&fokjOZO>I84BadHmo2+lJ89i(h4TclYk} z)2Y^%U=<|kU2S=#F O16mQ w;N?8ah*feu9@%(;N)41*P*6sP|aSSJ=scalEyeBdq*0p{LG7U`A@cp(b^ZT?3 zNy$jRKrlIGw!4A$YH&iYYvrnYrp|p@8L>}SN9XoV?*)hnOU|ur$R`wm!lqqiY`4(M zMo&3!RFO8p+ux-Uq1-C54tJx~K<6n$&Nn^vf#+(qopeKa-tO|=ihaJT=+i4L^symO zQ?wUvg_I8y5ZGUOcic4HjWdC-(Uhc9oPO9(AS_ctUz9ip`&(^-C1IpY!)@)=cTNh~ z_3I_bO+^kKc-v_37ORa&=0c8b4rd<@7@~+a^pFslt3A#`ewRIlqYL~(Md#MQxfrK^ z9;c8Mn%-yiWQrT9%Hr?-Nzmjn-p@%{MR&OI>$1d1utxp8$OG9m{iZt4q;d1B%>qSF z@&~@I9fj9s6X|WJzw%v5pd
0-=l z(m{jPS@*tVuI?L8chwhoDJ!3P>8dhOin?XpGNv2t%#D;UZ+nqL-yQiP#o&JZ82?GS zP(NX)9poQW9#)k1i6G4o0r>sss`VT5@S*quKU;LU>JM87C4(hZIHTvI=TQrT^BXYr z*F J3nW{mzqo((r)h3`{Jk(0&-ix=Ps{z{n2XfIf6yG^gExst_Yqjatb zOxBWKJVTSt5IdrgFCaRm`<*L8F7`Z`43#`2fCtUq_p6_ra81o*w^ui{i?K%CRJl3B z6IajE0t_5gmk~x=bJ@zir50}KbsciXo eV{{M*V1wvs(?qd{PV*({cXe?@62qoq7=bcv}=<0D%iUAv;k z)A`R4JOU% %2{kF9BMr`qqB`=RBQ7jzEMw!BgGgw4VyFZVQx5hSH%P7Ie*k;x41 zffH4!#f~@kD 3Oy+PChg@yWg|Om0Z}byWBIE8L1ev&!rCq=lJ-&at-D*w5lA z^ul*`5BMD@8S4guXU6-H2(GOCBe?wJ{07dOOSs#848MAofR1fJeqifFV<14iEWv-1 zfg;$C&4~R}O6{qy%3z#-01JLep-Eek_>UQ cv+XM9eEy+}se7uoXha^b?blT~BTPwQ0uIm9(xVKt=sbSS4Ye zL&_q9gdsG+<>dD;g}X|wy< Z r zS(mj5ubs_jVR+~<2D?~2y&~oB0nVHUD}tgu)meVzT>iy}Klk^A3B|XVe+|_5=uH3O zLc! ~Ok7Th&~B~$T}eApZo%&3rTsokxd(uR#va>Vcb zmV$lG<39uaBjz4i>)-fiRecV6K!}ldlz6%^`=xjv`Bt`rHiyc_wT#GRahgZ&e(Bg= zSMUDOsnSm$3e{&dI>^a2;;}L2&T3<>PVYHyMeat2Oe-@N6(+e4tE_&?py$*+e;nX1 zzxM&HDY<#xj~#C^SzTqK>;e~T^xt=ja3*1l@rsGBUHIGTs@DX@;oK8}3v&AJ4<41l z!90I&I$Su>0{##d8`dBIXXjz`ZkXD?QgRyxFuWEV^F Pn#td L9Bk*wnx|c%Ci!thsQzQ-)Od=e1C0p^92w=@^cCn z(phTtK89bR1hKe08f|K`P2zWOP6*ZI!B#)%0SL=ikkK^tCT&Is=?2S15?v#(X>i+} zH?Ya^fHVE&R_|$<<}Ut_k&ceak)y1vj HLyKL_|QKAUV@C85#+%TM7# 4MXfI8|T7GO$VV^twnu>%|3lSAqsGvS;S|zxKOZ2Ec9k{-nH%V_zLIS zy 8LTlnO328jdKbh=iK3Br%Egbk_OH({^Tok~c_S zOK)=UDH_asoaMRgecrmi>PUH>cYVx`vnzjfNDB}lQY(fAq|{~4#HyIi>*5Byr=A`) zEYsl6&IEbg$kt5$;kQr7L~P +={w&CpaWz_adcPtIO)I0 z1E8L@n|I$5M+)x1O*IR5pgirU56iF>qYAi8eEJZ3aZ>^@2-}xG)9185g9)Xsq*_od z4u=CwPgeq3ew 9M meKMXC?XRH(p9ec z#XO5_$Hw89bwLSeTyR_CjY5HMnMV%lj22dqFleM~s2IZUOa=?1<#O*rEoJn5DlzdG zuN$(ZW>`Gb`M7lLJ(`!eULE^m4$Jhin7_&tKR3cavIph0SmglGtO!`nd` uhVnR0Qj@t!by{Se1JXZwnt<`fL9b!<6|GtZ@EP`>Bm1 zOzBT%b@Pxow?NDRdSzT%?N|Ey#mH!+aF9uLD$nzL$++LycD^#xRlt)>3Wq6bJ@wk) zvAH+yyF^uLOcr3M#Rm!S70B#%U}i7d(L4x$K59~_zN#M#bk$x!S#B}98djFa+i?0C zpa538+f;Cpe13NvspZm3=5&{%xsp*d1iY{-&KPeFT9G#PFYtEZUxA&To%G5Zh9g`+ zYzEDlleD06duFoeud|-u(3y{HaDc{*)y&1D_(W^xhQaO5DHw#F#JPx6S}iFf=@oK1 zuPfL4z{0o7>UlDFtu^K`Z&RGN23h|)8?1sCp?p=JUZR>etI{=rn4^Yiz18ch@P&+# zuvK=~6MfK(d1c1&dq+}horwX`>sd8SQ}Pz`CE4yJw+gxYiKV=xJ9>4aC#fq;FE>oX z+F!&w*ZQ2)kTmw!7}1IZlfyalU>lLS>LOF@^mA5E$V*q7(HRf*H{rN(u;2N-zr&1g zinm?Ea-k-H!BZ0UmnFsdV04#VK4qwC@GU*kN+nWm()d}p9&V?|;PSxt`eil}ruwV3 znPVHcJ17CsB(M^1(p(hMvD2M`<{XY>bLJP6j*5d{%#*C)@?x$LjJAjA-j|a`pn!f- zTpK**3jz6~{<8N}^}^14Rvx8{PdgZsXp@#uK*?9f*@pd^)P}r_h84ajYz7^hn-Q+? z*D26;MxfSvYG$*tk6FDXL-HXvEhmRpwY}3e$~VytgpH3~5fC+etolk%5? AGc< z7~-5|OZCu;_=2uen#Cc0jZWpJuMA|`AWn3}D;Ji^Yx?Q5drZmil>oVYz-dV Z)msjpy+QVl(H7N2oe g<<{NhcoiQSWDnMEkyT830asHyquYp5#snk> zvMS`;pKso%x> %r4P zx4TkJPfhYK0CkW$jIiMSeBMoMp|KCrUiFT6|HPnUPv3r~7Mxz*Ru=?=kClHVJErTp z;<)koq)5CN3nZ$YmCI!>OqGB6*G9B+M$aRR)}xn)4CysXi#?AG@Qojt9y*uZKY3xk ze_}yTiH*HXb_rGh_c5%2eP{)>%u{cp8c95)f%ZM?Uwzwm#p|j}11J2)ob|mT5u_u{ z8hwRH)oG^LdFSp9FW>d&L s2IE)^X4a) zZWAODrKG)=C@*Udg MH&(9w?6tu^nzLf^~2Xz<5q zj2|Wg6k>PBtm{4uM{|L8OExW$lJE19q#d>M=1Wq!jIz@ocqXW{&58q}X$dYb5!G=Y z-hKSGz=xT*VPRGOF3!yuxt&gZrghrs+-jg%b%q7-l|aMi^a)KpUlQEYmfv{N%Kjd& zwoy%3j)jZD-MlZ_r!z`!2>_Zo!A;%4^)Ky_1CbQxkW|b1YBGO*QoXd~>Ye*`t0Q0L zQvKc8JR&v)lz{VkD;avV2#;-%2YjxL|Jcm&^Cd6)i3_esv3-f5WyG3%Yjt|1GySm3 zwa7~L@R*P-+JujJny$mxo)O~c#vEfyI*uUs{@}s-O)4~?vN>#8Pg6w8Ny~p8P~Y^k z%<{3$U+o<>`1O3;IY6PgxTbf~L9}vjWSHuK6(*taXJ=n_boOIzl4f?#PTa;tiZG(9 z9+gSlU^U+kq1S2b^qArM_Blvf-lp)O09hhCfbZgWXTS~n1_3g?FN;5`x*ZlPIhMmF zD^!_#sWmpGAL?u(1VW6bcn7_)QP6YiEvuKTuR$pbECnwp9~!^Jel_nd+GrJRezO!? zN)+c+<-<8?^0{PFuUVi}jvmkMi)@p1?4)bk9COUer}!g9$Pc=X>@zUs?JjLzy0@|4 z&e{w++4=i3ZS%S?jV|{c^i`Q!855jZnwUs2R`Ps;_jsr4T|w8a=+;4L<-n_)$;4p< zR9X Klo-|E-u`WEIDO3^}$LTKlsauConDc * z6Ny+$i_K MtHQiQ1hHUQqK=&>R zt-&|9GHwsy?#1IJAg5%Ly?n^^E`xJ)Vd<#l{!==lV5a8eJGm{g x%s^GlTn>rl65;FnFPXRIJK-=oSfIBVh%RlPw={k_*Ewoqike*VxaA^ zy{0^S#q@@470hT7LeH3gdL-#jD=H4T(WzW(zL@GOQnXlkD&!V7c?SniZG+RZffTGo z6!03KwzVQTXBc!X7K0#=7eYU$d9mBOBxasOppofzWxPFX2%o@vcDL~y*;iMd!#P$q zo7ttWa~gf}ImXz9c<{F*^RGRHzCwLS!rD~=mWbsbK8JacX@(S!+zyn`Ea?;YIS>|h z ?D?cMbuoGdgtu07?{w8jJN#q^chgx$9ZbIxw`8r!GHKnF|ALE@G%j&jN zhV)Vv!vo*pk$Ny!R{857IqG4MY-3t=GfVRycFQrx>7~9Qxpr5o-wXw3YoBx1#TK%0 z0RdTaP(^U0r=fi~85D351;5k_1>D GE( Wh#szQvvfbY!orisjPy81+cx7iws~JkkN6qwnxVro_u@AV zL8v+aJkoM8H8NSv*S|eCU=YuCBHXQBvq)8g;w483m|fTaNFAM3mqnM=_uBy{N4?B! z%O5f5o_^0T8nqNog=zcA&!00?k%nI;5~ykSWYU#D`Yv8wC+D1yk{{Mn!yvEK-dCJZ z>gwFaMxM3tUcL$grmw1dEqlHr_&(hyZ8jPNwfzp5#AF}Y0ONat{R!LOG_3{t)+z}8 zy3?cuy3rqU@1~KoPXL7!yUA~x1b#!@#*aGT+fClo%^Ko6g8mTMQPq^?{_c5MK(G{a z2aIn+-{UAU41ik7q=?{mUY<%f$fo_h^Y?ZUVgBT~Vrb`rl5@z*{V+qgIY7iCQH)J2 zf9}l*c-^#-K7V&5Tpwa+qy@e+cU7k55?5L|OgI;GUngFXdux8+o=@t&o+zvZh{j$r z7qVFGmKuk Mx>Z=3$ju;_Aj)OkB&FV8&l^2tW~=J-5x zu?ES;@}Zd)Y&$w;YMiA
B^u2;Rprs~z_WW!EF!LW0nze7JHoovn63Vo-pcuOAW3Sp&yzSBVL6E~ N977!r1 z4v9>obKz QR{>o9jk>ckOGXJ$+vK z0EOfM3htfjQ(;7%$kz0Fm~1S!XPwMoajQ#8KcQQiXehw<`ciYK(2(Z#Qpq*1PJ05< zLrt3Cu_2Xer%9Ox9Tnj?ZyNR`TjL_fQk=BXxj=_*%>Ve<`5X$Vv8zmrGL3t2WM}$9 z?nj!lk4ELQAaMM!un|Z!`{L9G=H+O-;sz7yv2|fX3DhhwI+I;CW4|rNoR2UNi&tYU z>vA_4&okPi=@BDnVvc84k$1|QbJuEzTdVd5Te2C@zG#k*MF (VO$AU@SB!soBC3b=br;nQQBqQE%<0 z)9$X^c(YSO71CV?{~m;{Ya2~`i~&M0a+h$~#+D<@_{m>!%B=NLcjA;(*)e%EzaJo< z&Z&G2sL eJ8Q<@S(JRGXxg6w=^Tx>WuTa#;1h_Mn{5*E z*1c43+9SSrF}{_h>>9zLoOo82r0LyST=aDL!`< f-yP8yVFGn@Gd(LqqIJ(e0j3Gko|J! zj<&8My+HN#6-ix^UiubkSjTva!>rTB*gGe#Kf*Rz2Ul+KVn-t`YsF={miKLu6d8gY zQ9Ck}5t65!*0CQ_eXx2QWS^96UUb+8Q79HfRUA30o!WaF_GVEZS ez{L_ZGQCLhG^ah1B4KlzI+D| zDKrnY7>G*zuNDA7&D**Baknep*u#xHKFgXQNs~|n4WB#Bnc{kIgai?$k1eXeGz2$z zlKs7}cAKR`CSI`HE;~OQwU92Zppa1B3z+MBi_-1W8&5s|(ZK(#%BIdR1xw1elFwGA zR1bi;4JPik54t@PtxbFyhde V%DvH~4datg=>$&2*tL_@fuD0ASgNSb{ zN>>tJbl(LmhZani#?bBWokScTgc04iLKe9Rv1yA!KW+Y1!$9I6S5#svaQCQt3Igq! zTBr5fFr%UMb}MoS9mp&G!OwEJ6Bb{9&W&0?67MIu(f1x2RZEC}^M7|WY9-rAHmg5e z$QK}Q(OX#4r^? F@1fhCAX|?UU57FV`Dz^jw*x`MRN?Q=^sa`^BCV zO*JP?43N`)Ep3!b^8DnCj%s~avq%t~ iUWZGj?yAnazSXhv`lFH|WQ@t{*s%B% zxqd5#PjqAJVZ-?1eq5>`ZEUu@QiVE1S7;BPkoI#yee#`Y!i@IhJdi5BdH>B)P%5Y? z%i8< zM^Y_LcHr=^Y`Eh+*G86oW;=LeImM82Whtuh@pFre+r5~Rt4EeJdTe9=k0 DFW8A5;|C@L;eD3JehI7e2WLij9l8IT}V< z)9h@a3a()3yk;UJJ{*T^Qz@I=13*Xz*PR~~m1H!*dh-g?rfYi+{6}ukrp i7`+Y}4VMc=70*u{{BC%0Y{nyPm;eQ5fB? zJBB5?vZ}of5BGj1Ju@i@=4^%yojR`Klks?9VWYnJtrZUkxxC} A zUpVMU9GK|g?^Y8pRg&?x9@uECO!R@ji5jn$g~UL_495)z=i$=!Aa>O8sl@${RYdXZ zyee@Gd&k@Io|xZtNW%SE$glt?RkI#12vtd_x)T-<+fBC($ogpv4WJHBKZ@0_Wzw^^ zseiq`(Pl_?sjs>8#hsPtZ?A_e`+|t^T~6y8@;0x2UCVW{q)eBaV|{u{L9jYEYsCaE zc9UL1FXT^E)FGi{e5J3?pGjN9Tnh)>WY-@4jYSuaf+Rl8m}C;*fFU05#)vPO_;OqX z{Iv%2e>X6%+7WTEL%+UU-Ian(oPhi1lk}3GjHr~O#+Lq{9H9O_9s5d^&Z$7>E=e0B zLL9^7c->i|dto6%20jnW0K8INA1$)3EHqFT^EowEz2D{-b{RAK>@qZZA0&^la4@L6 z;K!@sJ-5;@&4x8S0g?GRONxZ;B$fy3>_wrxX~>~{_9ElNUG){fLTuf2kaK< uVlAse^L-p^qpGjbm)+``P+SHaD=Wknf z;Y?uv{?Za-9F}7!@k@6uB)2;0J{>7CGq*s0Adj}W4RkGXB+^Ma9#g}I)<)9w8|`5S zS(MLCGTY=~FWI5&O5Pe#&n&&Hbx&*W@0SIveGd8byA&iwRR*5t1Gn8y!s?(UxH8#G z@1#iv_T70B)gnAEu4>O^H)QYepG6Q)N4Az$Vf2KJqiU^h!X_S6@g%%r*ALe1uiMt? zS>@s;&PKs{+#FKB#dPq!U$yQdYq%#Z)1S~P#<(*nGD#(_imoHm_0fgd6@n~Nc@rAf z+fqM_*mj!odMy2xloV|MIm!@N!nd=GM=KPwD_Q?WkDk#d(z2g)lZdh+t|`qJx?VLA zE&V!Ud^ky+f)Av0_1#(ieMONCdLAC18tsgDlh&eOUC;SC-fRHx_m$PMV22qzy+7fp zXR^yaF0@Igp8lpf_tmcBCw}qOi#zvr#a$U4M1jb*1a>f)zx(T5++ZoyIQPn{N*g8d z_ArS2;}|zH&C*7=)z Ny%Q&ZDE}l8EuA;kfko`yPCWI%``9 zCzO!!K{w9#1o^>m{~~%9Vjk&X>9{%b4G>)V0yC=PAO8W!*%~#vUP*j19X`dY*@b8X zZNq*5G4|j^B!_ti`>rl75`VQH2~3>8*pQL7fjSQ$bM?U$SFPFUmnT2nY5kI?c |o5>Naf<8lXjdE6@zlc}vauBzZW@`#Mq`cx^q6mj$= z58ii^C@fLUEJmEVyA)aJIs6B+Z6_eEBb==EILOUjJY*?fH0xG=K^4kG_M>gndMuv; zTVU;5bS-KkIH;h-uUUP6LwafqmPB>;lu(vE9hkE0(&sz*q^%Ag>$AOn3g&Tv@hzCX z+f6tQLXcgLB8i#9mV7*YSe}4eY~*+pK?`}V>vZF3JP!IYOy|PMlN%&p*p0Z1p{oPa zFHfC5K5P*Bk!8$Ik04EX+NdM6520`TNPM|=3!;Qfwc~*Onmc&I`MmYrP?h~teHxJr zk;1|anT_Wa8j#Z1iu{O|HvY1LsENKs!d{6kz53FHQIZ!~ez7gx2Z<_$fPs{<4@ {H{O0j4(=%% za ;OHC*VBH>S3{{3{%2QBkrrAp2jovH5G3TQKRAmT+GF4d z-yIYOEcO_{FoG(eM+|0KH?j`tv+txq>uNy@s1iNqOynUF&~nlbivXJT{GxFZ6d;;o zCLe1^gy-;g|M%w#Hd;Gf)xXR}V*aW7AiD0uTqwA@D!j2~+4lgnWQ`A@0g=^f;k?LS zmII0X_+vVq1kdxZ$xa%+CaP2}roC4yF25dS*HsbFS#m&rE!NQspB$mRmo*e;QoXXC zlR@--YJVdMheEd*kkja%@kuB%*p8o0u*rAM&j{!l-BQIP+Kbhjwfb9p-IN4;BC)!o ze1Fn?*V+XO9c$a_7p~F~uJ7>;7}MuY62LwDTLTY}x{H3n=NTKng%W6~PP#G64yyj0 zUnJ8!0S6Eq+DDm93|8xW0NmM;DkqxwsL1o#0@biCsEc8Nt}ds%aDJE`h*0~0aL%%6 zwRy3c2x>z=i^uJd1V9b(;w`x6M8ch>yI%{eK-=^~L^(iqWo tc!2Mp z;E|!CZ@I%{SFRq_t37>a%a*R6fcrvN1T}gQ?);KCE#QFF=-Y#)3VEdF%js?8htSer z9qfqS)}ZH};`Q)_Kgj|5+9z-*X{^-QeY79kXduQ|De{%s-J0~Rj(0WNo+l;YWh2)k z7%P?Bq67e}2Mss EuE3*00=~YOa!#Pzg$=)9oK)BJS%h$40`D2>bbhyZ zc9z^FnN1In98 ~D7;+wT@F??M|%pnS(xC^$I117Xj{l@ahx*%4w91a@?7 z4sUmZ=xQuaKmEu`iw}Whe)O;i>TQ<0taA67 #y^Na>3C9Bvu`g%SpqV5LXgXzZH_c6S`vQ3$NwXL91;hM0?4en6W{##Z91vy zO$^fjO(Iu81WB>+Vz_Z2B;G9Nr56yaVB8M_e|-E1*fs5s3?%0g+dWr3)db}oTf661 z!`^b?TwTLFo*u8_pahg8rM1NX)FX?aN<19*KPP_$>;2)zk-v0s8Ly>mykiTONLu~A zNB_38u;~EJPP!;$7G0Xv+S=9H$``Mx=9A295`N_`kbzh!`?>Jl$0Gm@Vj4jIGfcU# zbevXYqAbiuShtvH3 %(H(Tz1>2jYwy zP^7Sl`965&=F _P(+~Qas>*%<*yqMK~ z^~397>dK)jH?TNnI9Ir*cNY6ZR&r7%1E#wsNS?~2wM&(?ojf2#V=AR3G40F9r1f<* zo6lCei1aK-(pQSNU&;N++Pc)~R;lMX1{UccW=J24a9T!HQ$g&)(|K~^17!*ULXW!L z{hnt~zURxTFW#%u5rvu=X%h0h+fVM#Ox=|a+}XDiFCF>%Jk_Ov?9IrBBF42)^A#L_ zx4k_*cfn<4C(`SLY*0Xt@ID@U9>JJIodWC8wx{W^FB;8?gJ~LX!^mp=C>ZSAi7sAM zsNT`tEcL{dK5Vh4^AdAZ;xalz@tTU}Kh))FY@);Yg~)r!uO%n=8<~E1S63L!XNc{J z$1Bz201|i($YI$|85+5{9%))#tE@XFyf^@vfFzfagOQhZ6WCsL(T?!pNjIH4IrsRB z3M=W_#FDSEHr Wtskhlw_0fW0RwrpHuvY|Jpqga53h79=Vr -%1lT??`{>Pu1}@$Z>$_44IxsfVqJq=Y!8;u5^mq}jd~$}VO=EmOgcE;uwRO~- zDpA;wENF$d`p5BCJGHFdeIyqCsT4o}GYw?itYs~j6qE`Bk=U&_J9iLl@3f8nUe=A5 zsUG9nHb$Y-`${IJsV#%R&iiuI{6wN~ RFA}>~vaPFN1XN!W(UU*Gy47_0X$_W8rhRuc z>4M$Zpv)NKo?SoH(A2zkoP%Hw79^Xm;rg(@UwWa<5cr=K(vGeD^0yS#O*(&EBiLpa z2=iE#wA#C={_)XyheSM!h0*KBwQOnZ#(}S85MnFfL6&bm kg-J( z07QIFRqNCyg3!4v>{BE}6+Z*fQS;u2)?DlzEmfXz#+F%>PnUcuA&}XlIz}P>hv)ov zkY)2j{;o6nKhsTB=U(AVlaVjFhyiV!n7ZS?(g)=`>97bpri3gLQa!z9PyvYxhY!@x z53>=FL}@2zxqsW`u<&MTbj*cv6hGYDw9@KdkZ6|aU;O6)yx!IFSoIm8uG3Q%^<*WS zhK;VN``%x9ql61koW6Q5QT46V4*W}StieI>J;-%cwzK!O>i-Usp? &0R+jIA>fnxc_F;n3#5w})HlFuf! zlKtf-_k`G9o3WqvgJRuwQX3e)C^`OnXch9mhrVD{-=o6BkDm)=k}!{eu$g}N7jAxp zWFS%9$)i4bDl5p+_~=kI{0N~$0Y0X(((uza<{$kFM9mf&5dH(|Z7_YCPclfnpj+ZH zK!9jJ!j)%YA{5R$B5{K$uKz5>B)YviK*s1*`rk*V4WCE_H1(#3)8BpZK>hb=>0 N)V|zieI`9Yost? l#|1?}9X7%qa&b$stry(RCb~TC_Ah7c-jT#BS zcs0=WL~xOL`G+VAX!{>#tz0mT28xJ{HeCek8!pKbqm+nXGYUl5zs?J!bQ>8D&O*wl zLFh%#|G`j+6+W5`Gg|OzKDF0!;FEP~B9RoIWqbt8 hRmQ3(tGhN?T8jI>tI33alFT`0FGl1icY6X!J+f^C!MA6Li76v-lk!=0_H{}Z48 z%dFXZ%s?)$LP1D|=gb1xPhg!@KM9YF)u0$PG{tehDj>z}@Wm5g6!Z}j{|~cPqD|!L z^zNU|14<;U Agkbz!`r{eP^*e9R6ydo_4&kv zfIaNF$h5j`=I?kp(R5{>MZ`Z%Gkg1wK5p5k8Ztr&LOl8)qo6%*<`E8 9RY^ z>G!bZBV*|!bZfS6$ijqP^6UcrHW{1ao#d<@V$&iag4>oW&D!x6j4;V|7yk&M4VaSh zsPC)f>*Mc%WaZ;<$Qf!}9VU~?2kHFqKzmp9oln*n0VO_vy&(MF;HF;ObMo!3&DCfr z$Af;f_XF3NeZ(>73zX8fzSikb@@=SMJ0!l3;!@^pA72^mb{-AMX)Xjt-tsf9CSzYg zukW1Z39E^PN{+YUwb y(?etRpQ4`iA+`?n4o6MB|yiVpbXqmh3aNvO0keQi*a`C+UgF^8M z?`cCxzd5Lyh4)VFhZdW#`782qeXekz+h2B$lVyQu|JBLN$wCMMW%#G|do_uxp;EBi z%8$LKHy;i-NUU8J$q^juE2uUL5)mS}BuU)qGuw__MFus-J9XX$IsZ6S_+nL?PcOgn zW_$`0j$R!O5zb-F)w*~l#Kgs3ve934oc(G`uiOlZHMf6EDyCoexnO)%^{T1QB~66~ zREQJ5tTZ!m &PY zBZ&OJ&`bvKUEz*=@rTyEtDG$Q)-TR7Q@$}C#v;TMR%0; z7AdeYGkFcs!iawITD9}o-Nqx SISkkiJc)+X5lF zAL?VWs=9hThx5imA)6c~0!hnu3zzJ=yU3LC}^~Uy){sp^ +*ED)`Es>On= zp#g+KXT9VzUhh S2=mg@h^Bh$xN@ah#C zx!SAj*wwSU3fYSsCa-W{-Xm}9p_ZP4w0$Jj@UDLHMmoTJG#k(OX1_Hp-`7CTEn}?# zskgXm#EB`H6dsKHrR`0c6No9{1>Z?(b9;~VC^9qbp@6$=HYS3DP>(*th8+sIi`{CE z# 9lDIi1FRRaMq-z0vimy zsXWN}3w**#PS^yA1iIsiNy@EF3X_7aP~fE~bKqsQsYw {X?I=&*O1h6VY=sbO_|7|3H5cfG#3o>v 8LiwucD6$&0-COViu4B z1(2 mO8qdArWLBF9iVkdu&Fgp=4{ zEo5|E1&W*+@QKCYH4>eeLk61@YZ&0O1!_`41_9w)$((nh&z*Byd|}P{nVyx`!J&6X z*@7Cf{M&kNBgHGh0L4$E)?>^)h`fvlkQ5PAA;i13N6I&~jNGa@+|S-Iy Qv24m8WgJdOCR0+<0R7 z*6hb-LanN-vW*#L11frgtY=l6-XxDV12afZ*{b-v)XLQUg*;eOga|dQ2?F|^b*85c zZr0R)>O MTwG2H@_r{rSm zPCC0K9fO#RDfTZ$ddi(}Ph6JBRNH3h*s}aB&f%`8hy_hKY0c-2F6Jfvt1dX;@~x5? zvM42!VblcxNI^u%JjBSK9}V8PZ`WD5NK&4gNQB&UqlKK9Skr^%BS4-y=X?$N$a{Re zjcK<@26*|P9UX7)?&JMA>UwYSq&aqe&C&yUN{SqS%Lp$Ko(x!ajV4T6&iig=`Q>bo z`$E>6L-fZUG?m}-FJC1-MTfc8YNw)mSj*S W`hD8G;m-1pLH+vwqnV$+qbjtne}&z%=yH+t(s+HH6$ z{D(-L8$=vM+q+qFY#Vf}+ErfiruSNyCY}Hd#BKkUQUbls!UW^!N*#Zb!q-xHecXrr zI#9N |XJ}+N^Ht zUpYe6NxocaeTy`DS@DcKPXJ&Nwq^Z@6gA4MbZDK&_hP58#(2MZWX3jrq@Ct*A2MqD ze!ww>>ats;QLFR(9G&pXP1dnV-JbytuWP6dIii5J$dNG(f=eVG5p`TVKtRBSK7Y$x zGak#czKbFuBoZGwMyFXeX99h9T%Ovro>~(>3O_MJr~l;}#oaDhw|QE&02;AryM~P` zY~8O#_laWqSY`6e%Ir@le?{MU|8YYYqTaWOdkDVGi35BUQz0en)P@l5P3CyTQ3(~B zJyiOGCwYF&+=m3D5gJuv6icgnNxj)p6gnOdL|;wuhcqzU|4sgWI?9=ND@d!=G!-eM zu3tXY`P)~30OCIix>;+q2I&_TBvElmy`Ilv5zn$pMAm;Qj$snEzPW9(=kLlMz5ktD z8S^(EK5F5NOyicdfNx}(I}@@1)4h0mTXVy?Lk6C`qmOOYOuhchlq4&t3hoqFZRou5 z{ybuOhg?6_Ush$d(mw$Mh#ijGq=bwQIUu=-7Thg1KJC|Ks`TQFvL94W*D<>I6figI zi;9Jej>{uC7UFL_w$*t25!=|VGHY-lSoJ dn~&p^TghuR&UyF{+SXN3_w#ds)KS7KlewZG!b5D)gfyRy zgSFARD?t>#sC0PajHuf%^wtZjH9c}6FMq;CWMA2hw|?82TPqL>2;g^5NM;qMA{#-+ z4n7U6371nS!dLt}slde&|M@6Q!}{lJz^* J7`?vsuoyb| z=CXDlghPDec`Zu;-IJ=kupMUELQJS3-`I&|waiD#x)LBl)WNw)2qq2369uVy3sC$B zStoCCiNRA!Jm)k`Fk5j=-pn_jSZ{Wp<2n6Of0($TC-&G*$T?MX7Eu-2JUFi?)M0W6 z_ep;qY{l=@sO_1s#m9NH3&Fn}t4{A*zEyRH9sg!F+J@j?l)vide@qxMoA ni$(Hzr07H?}~jn6EW@))&UeKipi6`cMuX~}n%jW?#tt_c1k0s!zb5wH;c%Qe1> zm7Tis;uUWq2&-(tPTv)oK>Ld^|I&%Zg;t~mmP-T4%>u%ZRr{f8c^ywpKFxHceM-{N z09^EE-4$c;5;_le@K}@bxKl8DxZ0 E6n1$yJBngikR#?#%E~sbOJ*XE!$1w+q0OS$Z#AdxYw-dAMbFU^f$<447@=v zJ2~@lCBM?%PVt>T{tOVIvAupp`rpNHGaBTUhvkk