From 1a092e05c1153fcbf555fd2c6bd2fd40ce2c3820 Mon Sep 17 00:00:00 2001 From: emil Date: Thu, 14 May 2026 23:48:36 +0300 Subject: [PATCH] feat(dm): add dashboard with oauth, dice, initiative, open5e, notes --- .dockerignore | 1 - .env.example | 15 + .github/workflows/deploy.yml | 30 +- .sisyphus/boulder.json | 142 +- .sisyphus/evidence/f3-dm-screenshot.png | Bin 0 -> 39860 bytes .sisyphus/evidence/t16-health.json | 1 + .sisyphus/evidence/t17-responsive-desktop.png | Bin 0 -> 89814 bytes .sisyphus/evidence/t17-responsive-mobile.png | Bin 0 -> 84776 bytes .sisyphus/notepads/dm-dashboard/learnings.md | 523 ++++ .sisyphus/plans/dm-dashboard.md | 1310 ++++++++++ .../ses_1d87d3cbeffeX4fc7gsGUWO4uL.json | 11 + .../ses_1d89ad89affe987QEXPgCGcx4S.json | 10 + Dockerfile | 19 +- astro.config.mjs | 3 + docker-compose.yml | 41 + docs/OAUTH_SETUP.md | 166 ++ drizzle.config.ts | 10 + drizzle/0000_short_warpath.sql | 18 + drizzle/meta/0000_snapshot.json | 126 + drizzle/meta/_journal.json | 13 + package-lock.json | 2211 +++++++++++++++++ package.json | 16 +- playwright.config.ts | 32 + screenshot-dm-page.png | Bin 0 -> 73987 bytes screenshot-homepage.png | Bin 0 -> 345449 bytes src/components/dm/AuthPanel.astro | 50 + src/components/dm/DiceRoller.astro | 262 ++ src/components/dm/DmButton.astro | 51 + src/components/dm/DmCard.astro | 24 + src/components/dm/DmHeader.astro | 44 + src/components/dm/DmInput.astro | 60 + src/components/dm/InitiativeTracker.astro | 297 +++ src/components/dm/NotesPanel.astro | 77 + src/components/dm/Open5eReference.astro | 435 ++++ src/db/client.ts | 9 + src/db/migrate.ts | 21 + src/db/schema.ts | 18 + src/env.d.ts | 16 + src/i18n/dm-translations.ts | 16 + src/i18n/translations.ts | 4 + src/layouts/DmLayout.astro | 49 + src/lib/auth/jwt.ts | 38 + src/lib/auth/oauth.ts | 73 + src/lib/auth/session.ts | 32 + src/lib/client/auth-panel.ts | 31 + src/lib/client/dice.ts | 54 + src/lib/client/initiative.ts | 20 + src/lib/client/notes.ts | 13 + src/lib/client/open5e-ui.ts | 188 ++ src/lib/open5e/cache.ts | 37 + src/lib/open5e/client.ts | 131 + src/middleware/index.ts | 38 + src/pages/404.astro | 1 + src/pages/about.astro | 1 + src/pages/api/auth/callback/vk.ts | 119 + src/pages/api/auth/callback/yandex.ts | 120 + src/pages/api/auth/login/vk.ts | 37 + src/pages/api/auth/login/yandex.ts | 37 + src/pages/api/auth/logout.ts | 18 + src/pages/api/health.ts | 15 + src/pages/blog/[slug].astro | 1 + src/pages/blog/index.astro | 1 + src/pages/dm/index.astro | 90 + src/pages/generators/cards.astro | 1 + .../generators/category/[category].astro | 1 + src/pages/generators/coin.astro | 1 + src/pages/generators/colors.astro | 1 + src/pages/generators/country.astro | 1 + src/pages/generators/date.astro | 1 + src/pages/generators/dice.astro | 1 + src/pages/generators/emoji.astro | 1 + src/pages/generators/fontpair.astro | 1 + src/pages/generators/gradient.astro | 1 + src/pages/generators/hash.astro | 1 + src/pages/generators/letter.astro | 1 + src/pages/generators/list.astro | 1 + src/pages/generators/lorem.astro | 1 + src/pages/generators/lottery.astro | 1 + src/pages/generators/magic8ball.astro | 1 + src/pages/generators/meal.astro | 1 + src/pages/generators/names.astro | 1 + src/pages/generators/numbers.astro | 1 + src/pages/generators/palette.astro | 1 + src/pages/generators/password.astro | 1 + src/pages/generators/rps.astro | 1 + src/pages/generators/shuffler.astro | 1 + src/pages/generators/teams.astro | 1 + src/pages/generators/time.astro | 1 + src/pages/generators/uuid.astro | 1 + src/pages/generators/weighted.astro | 1 + src/pages/generators/wheel.astro | 1 + src/pages/generators/yesno.astro | 1 + src/pages/index.astro | 54 +- src/pages/privacy.astro | 1 + src/pages/rss.xml.ts | 2 + src/pages/ru/404.astro | 1 + src/pages/ru/about.astro | 1 + src/pages/ru/blog/[slug].astro | 1 + src/pages/ru/blog/index.astro | 1 + src/pages/ru/dm/index.astro | 90 + src/pages/ru/generators/cards.astro | 1 + .../ru/generators/category/[category].astro | 1 + src/pages/ru/generators/coin.astro | 1 + src/pages/ru/generators/colors.astro | 1 + src/pages/ru/generators/country.astro | 1 + src/pages/ru/generators/date.astro | 1 + src/pages/ru/generators/dice.astro | 1 + src/pages/ru/generators/emoji.astro | 1 + src/pages/ru/generators/fontpair.astro | 1 + src/pages/ru/generators/gradient.astro | 1 + src/pages/ru/generators/hash.astro | 1 + src/pages/ru/generators/letter.astro | 1 + src/pages/ru/generators/list.astro | 1 + src/pages/ru/generators/lorem.astro | 1 + src/pages/ru/generators/lottery.astro | 1 + src/pages/ru/generators/magic8ball.astro | 1 + src/pages/ru/generators/meal.astro | 1 + src/pages/ru/generators/names.astro | 1 + src/pages/ru/generators/numbers.astro | 1 + src/pages/ru/generators/palette.astro | 1 + src/pages/ru/generators/password.astro | 1 + src/pages/ru/generators/rps.astro | 1 + src/pages/ru/generators/shuffler.astro | 1 + src/pages/ru/generators/teams.astro | 1 + src/pages/ru/generators/time.astro | 1 + src/pages/ru/generators/uuid.astro | 1 + src/pages/ru/generators/weighted.astro | 1 + src/pages/ru/generators/wheel.astro | 1 + src/pages/ru/generators/yesno.astro | 1 + src/pages/ru/index.astro | 54 +- src/pages/ru/privacy.astro | 1 + src/pages/ru/rss.xml.ts | 2 + src/styles/dm-theme.css | 11 + src/types/pg.d.ts | 1 + tests/auth-ui.test.ts | 102 + tests/dice-roller.test.ts | 107 + tests/example.test.ts | 35 + tests/initiative-tracker.test.ts | 83 + tests/notes.test.ts | 29 + tests/open5e-client.test.ts | 327 +++ tests/open5e-ui.test.ts | 428 ++++ tests/setup.ts | 14 + tests/utils.ts | 44 + vitest.config.ts | 5 +- 144 files changed, 8643 insertions(+), 35 deletions(-) create mode 100644 .env.example create mode 100644 .sisyphus/evidence/f3-dm-screenshot.png create mode 100644 .sisyphus/evidence/t16-health.json create mode 100644 .sisyphus/evidence/t17-responsive-desktop.png create mode 100644 .sisyphus/evidence/t17-responsive-mobile.png create mode 100644 .sisyphus/notepads/dm-dashboard/learnings.md create mode 100644 .sisyphus/plans/dm-dashboard.md create mode 100644 .sisyphus/run-continuation/ses_1d87d3cbeffeX4fc7gsGUWO4uL.json create mode 100644 .sisyphus/run-continuation/ses_1d89ad89affe987QEXPgCGcx4S.json create mode 100644 docker-compose.yml create mode 100644 docs/OAUTH_SETUP.md create mode 100644 drizzle.config.ts create mode 100644 drizzle/0000_short_warpath.sql create mode 100644 drizzle/meta/0000_snapshot.json create mode 100644 drizzle/meta/_journal.json create mode 100644 playwright.config.ts create mode 100644 screenshot-dm-page.png create mode 100644 screenshot-homepage.png create mode 100644 src/components/dm/AuthPanel.astro create mode 100644 src/components/dm/DiceRoller.astro create mode 100644 src/components/dm/DmButton.astro create mode 100644 src/components/dm/DmCard.astro create mode 100644 src/components/dm/DmHeader.astro create mode 100644 src/components/dm/DmInput.astro create mode 100644 src/components/dm/InitiativeTracker.astro create mode 100644 src/components/dm/NotesPanel.astro create mode 100644 src/components/dm/Open5eReference.astro create mode 100644 src/db/client.ts create mode 100644 src/db/migrate.ts create mode 100644 src/db/schema.ts create mode 100644 src/i18n/dm-translations.ts create mode 100644 src/layouts/DmLayout.astro create mode 100644 src/lib/auth/jwt.ts create mode 100644 src/lib/auth/oauth.ts create mode 100644 src/lib/auth/session.ts create mode 100644 src/lib/client/auth-panel.ts create mode 100644 src/lib/client/dice.ts create mode 100644 src/lib/client/initiative.ts create mode 100644 src/lib/client/notes.ts create mode 100644 src/lib/client/open5e-ui.ts create mode 100644 src/lib/open5e/cache.ts create mode 100644 src/lib/open5e/client.ts create mode 100644 src/middleware/index.ts create mode 100644 src/pages/api/auth/callback/vk.ts create mode 100644 src/pages/api/auth/callback/yandex.ts create mode 100644 src/pages/api/auth/login/vk.ts create mode 100644 src/pages/api/auth/login/yandex.ts create mode 100644 src/pages/api/auth/logout.ts create mode 100644 src/pages/api/health.ts create mode 100644 src/pages/dm/index.astro create mode 100644 src/pages/ru/dm/index.astro create mode 100644 src/styles/dm-theme.css create mode 100644 src/types/pg.d.ts create mode 100644 tests/auth-ui.test.ts create mode 100644 tests/dice-roller.test.ts create mode 100644 tests/example.test.ts create mode 100644 tests/initiative-tracker.test.ts create mode 100644 tests/notes.test.ts create mode 100644 tests/open5e-client.test.ts create mode 100644 tests/open5e-ui.test.ts create mode 100644 tests/setup.ts create mode 100644 tests/utils.ts diff --git a/.dockerignore b/.dockerignore index beed316..96ddfe5 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,4 @@ node_modules -dist .git .env *.log diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..e051eee --- /dev/null +++ b/.env.example @@ -0,0 +1,15 @@ +# OAuth - VK ID +# Register at https://id.vk.com/about/business/go/ +VK_CLIENT_ID= +VK_CLIENT_SECRET= + +# OAuth - Yandex +# Register at https://oauth.yandex.com/ +YANDEX_CLIENT_ID= +YANDEX_CLIENT_SECRET= + +# Database +DATABASE_URL=postgresql://dmuser:dmpass@localhost:5432/dmdashboard + +# JWT +JWT_SECRET=your-jwt-secret-min-32-chars diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c0aecbb..7046704 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -7,6 +7,24 @@ on: jobs: deploy: runs-on: ubuntu-latest + env: + DATABASE_URL: postgresql://postgres:postgres@localhost:5432/randify + NODE_ENV: test + services: + postgres: + image: postgres:16-alpine + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: randify + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 5432:5432 + steps: - uses: actions/checkout@v4 @@ -20,6 +38,9 @@ jobs: - run: npm run test - run: npm run build + - name: Run database migrations + run: npm run db:migrate + - name: Setup SSH key run: | mkdir -p ~/.ssh @@ -27,9 +48,14 @@ jobs: chmod 600 ~/.ssh/deploy_key ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts - - name: Deploy via rsync + - name: Deploy Node.js app run: | rsync -avz --delete \ -e "ssh -i ~/.ssh/deploy_key" \ - dist/ \ + dist/ package*.json docker-compose.yml Dockerfile \ ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:~/www/randify.pro/ + + - name: Restart app + run: | + ssh -i ~/.ssh/deploy_key ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} \ + "cd ~/www/randify.pro && docker compose down && docker compose up -d --build && sleep 5 && curl -sf http://localhost:4321/api/health || echo 'Health check skipped'" diff --git a/.sisyphus/boulder.json b/.sisyphus/boulder.json index 1d8d67f..08e8da8 100644 --- a/.sisyphus/boulder.json +++ b/.sisyphus/boulder.json @@ -1,6 +1,6 @@ { "schema_version": 2, - "active_work_id": "blog-typography-fix-c9cf9be1", + "active_work_id": "dm-dashboard-c3118dfa", "works": { "critical-refactor-f063daf0": { "work_id": "critical-refactor-f063daf0", @@ -300,33 +300,145 @@ "elapsed_ms": 44283 } } + }, + "dm-dashboard-c3118dfa": { + "work_id": "dm-dashboard-c3118dfa", + "active_plan": "/home/emil/Desktop/Coding/AI/Randify.pro/.sisyphus/plans/dm-dashboard.md", + "plan_name": "dm-dashboard", + "status": "completed", + "started_at": "2026-05-14T17:56:40.328Z", + "updated_at": "2026-05-14T20:09:11.770Z", + "session_ids": [ + "ses_1d89ad89affe987QEXPgCGcx4S" + ], + "session_origins": { + "ses_1d89ad89affe987QEXPgCGcx4S": "direct" + }, + "agent": "atlas", + "task_sessions": { + "final-wave:f1": { + "task_key": "final-wave:f1", + "task_label": "F1", + "task_title": "**Plan Compliance Audit** — `oracle`", + "session_id": "ses_1d7f26069ffeYjfNhmNuooCc3p", + "agent": "Sisyphus-Junior", + "category": "quick", + "started_at": "2026-05-14T18:05:29.120Z", + "status": "completed", + "updated_at": "2026-05-14T20:01:43.840Z", + "ended_at": "2026-05-14T20:01:43.840Z", + "elapsed_ms": 6974720 + }, + "final-wave:f2": { + "task_key": "final-wave:f2", + "task_label": "F2", + "task_title": "Code Quality Review (re-run after fixes)", + "session_id": "ses_1d7eaed87ffen4vuG6WyFcGh7b", + "agent": "Sisyphus-Junior", + "category": "unspecified-high", + "started_at": "2026-05-14T19:44:00.709Z", + "status": "completed", + "updated_at": "2026-05-14T20:07:46.967Z", + "ended_at": "2026-05-14T20:07:46.967Z", + "elapsed_ms": 1426258 + }, + "final-wave:f3": { + "task_key": "final-wave:f3", + "task_label": "F3", + "task_title": "Real Manual QA (re-run after fixes)", + "session_id": "ses_1d7eab36dffeC7MQ1w6VXEOAnr", + "agent": "Sisyphus-Junior", + "category": "unspecified-high", + "started_at": "2026-05-14T19:46:49.796Z", + "status": "completed", + "updated_at": "2026-05-14T20:07:53.184Z", + "ended_at": "2026-05-14T20:07:53.184Z", + "elapsed_ms": 1263388 + }, + "final-wave:f4": { + "task_key": "final-wave:f4", + "task_label": "F4", + "task_title": "Scope Fidelity Check", + "session_id": "ses_1d7fd7992ffe3wLZZY1Zj6CrLD", + "agent": "Sisyphus-Junior", + "category": "deep", + "updated_at": "2026-05-14T20:01:50.576Z", + "started_at": "2026-05-14T19:50:33.428Z", + "status": "completed", + "ended_at": "2026-05-14T20:01:50.576Z", + "elapsed_ms": 677148 + } + }, + "ended_at": "2026-05-14T20:09:11.770Z", + "elapsed_ms": 7951442 } }, - "active_plan": "/home/emil/Desktop/Coding/AI/Randify.pro/.sisyphus/plans/blog-typography-fix.md", - "started_at": "2026-05-14T10:23:17.171Z", - "status": "active", - "updated_at": "2026-05-14T10:25:36.103Z", + "active_plan": "/home/emil/Desktop/Coding/AI/Randify.pro/.sisyphus/plans/dm-dashboard.md", + "started_at": "2026-05-14T17:56:40.328Z", + "status": "completed", + "updated_at": "2026-05-14T20:09:11.770Z", "session_ids": [ - "ses_1da346c55ffe2yhgC2v7zqrilE" + "ses_1d89ad89affe987QEXPgCGcx4S" ], "session_origins": { - "ses_1da346c55ffe2yhgC2v7zqrilE": "direct" + "ses_1d89ad89affe987QEXPgCGcx4S": "direct" }, - "plan_name": "blog-typography-fix", + "plan_name": "dm-dashboard", "task_sessions": { "final-wave:f1": { "task_key": "final-wave:f1", "task_label": "F1", - "task_title": "Build + Visual Check", - "session_id": "ses_1d9fc2935ffesVSRCGlGP4wnCU", + "task_title": "**Plan Compliance Audit** — `oracle`", + "session_id": "ses_1d7f26069ffeYjfNhmNuooCc3p", "agent": "Sisyphus-Junior", "category": "quick", - "updated_at": "2026-05-14T10:25:36.103Z", - "started_at": "2026-05-14T10:24:51.820Z", + "started_at": "2026-05-14T18:05:29.120Z", "status": "completed", - "ended_at": "2026-05-14T10:25:36.103Z", - "elapsed_ms": 44283 + "updated_at": "2026-05-14T20:01:43.840Z", + "ended_at": "2026-05-14T20:01:43.840Z", + "elapsed_ms": 6974720 + }, + "final-wave:f2": { + "task_key": "final-wave:f2", + "task_label": "F2", + "task_title": "Code Quality Review (re-run after fixes)", + "session_id": "ses_1d7eaed87ffen4vuG6WyFcGh7b", + "agent": "Sisyphus-Junior", + "category": "unspecified-high", + "started_at": "2026-05-14T19:44:00.709Z", + "status": "completed", + "updated_at": "2026-05-14T20:07:46.967Z", + "ended_at": "2026-05-14T20:07:46.967Z", + "elapsed_ms": 1426258 + }, + "final-wave:f3": { + "task_key": "final-wave:f3", + "task_label": "F3", + "task_title": "Real Manual QA (re-run after fixes)", + "session_id": "ses_1d7eab36dffeC7MQ1w6VXEOAnr", + "agent": "Sisyphus-Junior", + "category": "unspecified-high", + "started_at": "2026-05-14T19:46:49.796Z", + "status": "completed", + "updated_at": "2026-05-14T20:07:53.184Z", + "ended_at": "2026-05-14T20:07:53.184Z", + "elapsed_ms": 1263388 + }, + "final-wave:f4": { + "task_key": "final-wave:f4", + "task_label": "F4", + "task_title": "Scope Fidelity Check", + "session_id": "ses_1d7fd7992ffe3wLZZY1Zj6CrLD", + "agent": "Sisyphus-Junior", + "category": "deep", + "updated_at": "2026-05-14T20:01:50.576Z", + "started_at": "2026-05-14T19:50:33.428Z", + "status": "completed", + "ended_at": "2026-05-14T20:01:50.576Z", + "elapsed_ms": 677148 } }, - "agent": "atlas" + "agent": "atlas", + "ended_at": "2026-05-14T20:09:11.770Z", + "elapsed_ms": 7951442 } \ No newline at end of file diff --git a/.sisyphus/evidence/f3-dm-screenshot.png b/.sisyphus/evidence/f3-dm-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..293118a86a45bc1aa33d2445716d534e56c61c34 GIT binary patch literal 39860 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 z�$J6A$S%6Yg#SQy?U_@NlK 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

aA=y*p%w$NT9 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

)r%i{0JC?;sT zbT;BfPl3c!tb}g4@hJkSEM5izmb6CzuSYY0PSEkH|j zq}dN-eN-?enkiEhO&amRi@@}Z+_ZT{uHV(DQrM_83Z$age`Qwh`X1XNz3sd|jE1*G zEpbg<#rAb3Jm%|52?U~q#whYdn+InL)m&<2rXEQ*Rtk0&h>TU_RmqvElM)no%-x8V z`|gKIL>ENf3=d3iu@~&`*cRv3i{G406J$Dm_Q+U#YG4!?7?UA>C|7*Ya7k8wc!sh3 z`Ntik2eqSJnL4gZhB#>SEOr@%GQStx5}#tl!AfkQreo~ap122J(MmE-8E?#@DWJ1) z@cX{Qd$KEvkg3c4F%hKGwdPl&$t2wnI1nrOR%mXOTdFXDngXYN+ov||OXJe8s_Y!z zdCyQbJFiCH_{0>saS(mvu7t4BL?YVK3o~?|M1R@E15B)53{~>e)IEp+ze@_^O^--P zx2OSGvVh`8_hT7x=j`HQ>Vw;ga4bhP6O|J8&V!rB9PaGe^QEz#x6AYYsX|yFs1=H@ z#4J4`e097iFj68%Hi-1QZ$mA|j(B8>65&S_R7L>;p-C=mfcaV}Yjt)O#K9D%ySbv5 zQ$Rh*d>w~b>wwfPq2ikhNj}$Z+{JT zp|Q47>{=ro{+l>}mPJ>8GrFJ2$@(S#b!4@4fUd7CgUKc~-M4US@{Dv_Og*h-9zn)79%9PN_G7;(hYHZ_h3WIa)DndCy5#a)$(Q&X>i?C!i$ zS|(*PjQ1RKnWo_hUkNBjIszy9oZ0H2=OyJD`hVA)y|3EPMKfyTF)s@A=1e=9ai`^C z;^Vz;0^Jp0iJ3}LTmKwGS&tOB5OXMkDcbaK3E^- zngNahPjXCOiDXH}qU-1~G*Xx4H#Ca`9A2Kq#DD}JDi|COKkQGHB_0{iI(ma%U7B6K z%b^^i)@~GijbJmfG43N@48(-|w{@UWue$=fe0ZlPDW`+? z#LCY=^4X=jw9d8UIJ@>=ccIDw^}X=NN0Wui0FBp`;a^m==>= zaSYL!RtQMMui@U?gr3bxExXKXhEr#^@&}Es9j_e~ic^JyotD^bL9}N#HJf{WU!X|1 zKVJtYY_r%b6$1l9y^26-eK{q1ntYTCQARpVia@!8+)(ko^qU*FTuYZ<3O}*zIf_7> zlQL6Zm^h4;DRL!D=YQW+!FW@SxylTz1(oQ$$&+eyyH81o5#hOpm6sFC_&$}_wMUbs zeyP8hQ#T`0{Dxw>EE#`ie;XgQ-r#}n%$3p54@rOWf)+by^CLa`!tm5sANS|6IN9)U zsZ6Q<7{)jdT0C7z7vI+4$Bys2xWesKHb`#~%Ey1aHOeL?OF)xD*%E|nP^5=Xz^9DW zC)qTbE+{CXEGT9uHazG=x_I);gCCCV=~_MfxW$j8w^$Z+9sTuBKLD1 zoEj0QhYs)3!TG~1H@jq_zsVamKvqFU$3G}1Mr6cu=ZCvULo%M*dh|=7H!nGsE!36e zmMJ)PZU1*K_~=j~s>WR6 z`ocz=uUif_=gD3Bg#JxmDGaY7X5J;<8Y-LiQ+Iaj*`u&C$L5f1_zWY#3$xCHqZe1t zUQSNFTnvGTXckF7eobBOsX@^dH!(5ZhBZ~VN92S@L9RD(n`P-c_sL~EkxBes<`>r8 zKd>(JfTdi;B)D5r!otxl@JC4728`{!oLTBC;3IJF@i&>=)e zS_i3%Last0^EUNqwsYhqd{YILc;>O^;31P@vCx~)i6!I@wAzNW;~hUN`+wmh>Gxwh z&oDG>#_6GwKXlFRBBNQFE?-|i-1QwO>lHg)+kI|Lc68ZZ&BiltU^F6USf}TU^L@ph z_IXjp!RmtjA6U;9QWW$>H8#FmSSa>|%UP{@w+H}C2g7dODMF=2|MqNUVrE9?y7L*zV+aud za+ez$oF=Eiy+1XywANNuV&md+WTv9HjHrsYf07+Q?SwtB>X3(3XzE8A&;JXDy}lsx z=;nLkH+05Ih^IA<|My{+{VRKLXwNYB zW2c_=0VJhU>s3yrT1Gg_SSy{_Ilh>+H3KFO2?>dw9;LK2L*OvRvBMS`TF&Ms@xy$v zRXD00)XtHFwe_dLw-wxFSmdOb`Tx$Q*EawH10w#R_yA}K`qvMF_hSUXU0RVO^d1IN zxpGB@@v`!yQGMC;id1yD`^x{KqkSGn{~)V%q5p=iKRZkwlFvyEKzzr4kHB-{&wo$w z|3molb0*S%PuBm{-827xga6Ib|N3=4ZJ(i_yl3W@b~ugbTq9f^B^)=GpWpvGFY7PQ z)$<^YKm#z_dH-ztLc-$?bq1g?fAf6x`-26aLs6x_@c2fP#NPb;UA`5Zx6i*vU;u%B z{^RfS=OxPXF>c1pWUc|MTr+Wb{?&YScG6R3bG92t!3PK4Vi9(5lwQUd)hqR4japhL zV>Llzj~fT7*uS3zt|Qi9PT8FyuPL|;y&jZydXU@XLL}%+&T*;|?*FHacNotA^DWFY z(`gKny5dT%YZko*oa6{hn)}7Q&0Q#;ag?2l69G8<2I#);htelcQuJ5Hub<2QF82b& z`1aQqjY+QvM%U7i<LVJGR<}ERaFiTx0NoI^Hox zDO^b(EWz5Tds*<(^}_1zPfF!S-e+Me4aphyB%R`)Ly>ZJItqwAOrnTHN~Ts=+v+|` zrSFoBP8OFojF8azIL=p15BVJctyYfPd>wtuQEn=0AreGWyTXbDCy~UpS;0huUsnl( zRQj~GjraPn)L4|dS%-!=1kx07p<=ixlvfKlJzQuAP^;xS(Lhqwrswn++28a`oBl4^Y)_-w#3ebh zMmn`t0c^{(A1xud#m+yIDyO>5XPqjORj5k$t6!zXTZ=6^*jR$lZbTDMH2O>yNR9Qx zk{!-YCE}}?Dv&by;O!}|>@DpqPm*s$rg=TJ%9OT|J1^p%8)WE%3>jC(|AAYW5d<6Tw; zde?EJ#WXCj zL_Zzgtnf_9a-;s*nn7wRp9xX%q8lGE?Wd>h}45*M7jydB2R33bNJO-Rl>buL1Q=d z)0NFP@U(%fPv3ba^FXA++^ZRDp>O-A^_k_bQtK8&zC>N(tngFSXOc0{Xe@4*jTB85 z<8#egcC91rPM&*7h}IHqo-C6zmLyt>$!`G@{19Y}f1?o&>Iw3Uzv31vEr;K+qOX;0 zl#;t>O7{Tx4RMqcYzcDh=GInZJ)s!|IP`RfP|fk8xbZ{v=e`tWqiw?3E%zcQ+`w8dCW6+z zI2HR3^VV-f)!%Os?tL9`>u(@MpNX2gmf-#>V=+0{53~^Mi9xH1-8+?fZ3FHLEHZyQ z09^;vh)T%N9jQA~O#SA!u?B5A(afELY4Ew~9K;nofKVp86`rQjxc7W4Qy!*ONR6&1 zYsA*oy9|SA@bK08CZ(zy;MT{}8~CCv@0YJ;3dY0_N8Ks{#XZhgfd+qvKW`PK35=#a zqz!Hq5JLGOLrA+~qU|+Ql!!81iA(ryrsDjg;As1D%oxe*iY&|`V z5&T&HJPq|?d+y!H{uJktd!)+zWrHDSO9gP@0h09 zz~uRzbEQQ+pf$WuI3--I2%7!QWZG)Mq;)$^%0ToD1}WcN`Rs*g)g8{Zv~YK@%7 z2503^Y4vk1_xU#cQd5}h#twXj&BRJ~z*Yz|pgEM`rGrf-W}B%JF#aO4I`}N%tUXsA z-NA8CvC+d3Puui-JCqOmSZ)Mij(xF4RxkcSwN|=Yg$0wEL@%^jQpaRqJ-&v-cgT^`uJ>V z5g?r6^Cv!)pD9Xy_QQ@vNH+Sv9Sf1+GYN`%)Sr?4`e0EzIZjST|3OLOW9fL&Uz`UD+2^ zOBjC{79Q$jbyafCn=_pRscT(!bv~X3nsvOHP7Q*6Hp(^p|J=65n+Rw^L&%jKRbH_Q zPIhCitZom!kx)8V0{?5tbg8hc)>`lF(U>{?}&w#>9IC|-H0u*-I>ZtLA~3j+1{HoI~CHLu^% z=yBkMLH+ihPA^4^50fg=osGMiAOna5fc*?^`{#439}Tgvlm16W=kupfAJa3wXOuu!~*8_ z_fHKYBLP0OMc`TvYcVlde*OZp30sLw$N`R}?@K6;{rqvoN>FSnG59qUk2)ix!Mn7N zfDuz|5R|&x6ET|gu%l|3Pz+F{030cwBSH$uC@3hJ3krl-HX1rd&fo2?Gob4$0K=2n zQ5+ixP90Up14fqJR&H7``D=%I|Wsi~j@IFH+zAs~hfxGi|4!If% z3wfXRoCvfHn3Et!+#mi_Wdc+&If>Sr{^B=JNQmpTwWctXhR(P|nwZ$&{XI!^>=p~- zm*=6;@=BPV!wM2=phR6F{f4=WR(0~lW&hisY#V(cC%Sz1SXihX8UWFt&9rSezP!Md zS5}^#nei)=d>+v!1O#$Y(&_$wtA}4OBZy7|@leT{fb$TZr7t8X=oDK_01V|D5WY+M zBkvrzTtO&HGD{bD2k*4c8K);E4D`42xkqLo>3?SOQwF$-2ErXR@zJG)l{yR~X@@K<^|}FP@+jo*fHQLZo(DV$C}-NS z-O_4BN;_%k=R0sezWDQ1f4Vfz8Mr@8vXhU^2bM%^CkL_uhnWL7?U~yl1)McUKS0S)?~qN=YDgY>A3JWy zAv_EePrW{?hrF4^KUgbiDt;IquPGpY647r|eFakkwOVk; z2RN#WCR8J#uy9eAfqO^$y~dcm*k~*Jy1)fGsws26m~~%MXZj{5g?@ilDWXGxzK0>H zdoxh2Jy6`l_ZeDcmWltRj}^i&F|Eb{thzZnH8ArYZSZL-&k=?kxispihXaQAV+0iB zLli@zA>2`<#<(QsAx%fAyF_kx7<38rW3697nn6>dS0k;rKl=iM&gh3bQ~HWcXieUL z@fA^jNL{&AP_)!#j4J~|PKem-Wvr#e3-`iN(uwSi{ROUWgi_WgD6i-y#=LIAk*=;e z%GT_N_oZ2Rgc5S`a;rwVVx_T#JJ1F(FiZ3Y3`8jAnw?$U%#QKgr1%IsjGaTCR%M@nCQ9Oys*xtNX4nq ziZGW~et$ItGki!-aDwjSJDk9kFq3;YhvvSi4Ai(U2%K0GVecPq8$~4MvCOn{nk*f> z#uxk~qNo}lhvmNEpjYCna80GuI#EGeKhf_FM6{6!g#|T!K}`LyLQcdKCmnjkm8{m` z?S=R);!N+FP3cSl7?9B1iL2i@aR}_np5flxK%!r5hvJ^zk#hpEFk#Sg`xJKV%!1|E^vrHf zYu_I6BQ3JZ<>Rt#KW=YVm&#eL_Jm#KPTQ#F*tR0(6d)Jz;D0;(Mbj!?@{Cc@{{C~l zFU;&s3O2s;ZPwQ}X9AHPU;#e0n}V{5_Ro=Rp4=cketXPvD)3G7HAM z+aex8U?x1P)zTMr!Ebk^wI4YN_vG-cPF6rjAl#_}fPDlhKG(-2L4lXU@vGlR*PH~tQzftbcq@&F%aN)g>^I!XIrG9)dS%X_@GQtk zVQo~@4_gl!!`@gbO1glEYVfk&?8B%%T;rJ1)qb0opOmm7UIu)YXG(l2Q~X;;XAgy_ zI2->^;c*9_P&743+|60{gL|{#7NUT}iENyOs)xoS&=G6u(%6-?glwYe=DN9TRBCjz zik<_@1TgO-?#E;(P`BT_D31mLgps>l9wcMzcY>ZET3BD$@sTqYN{u%KWGb2EdeuIiIS8<&vG&Ivp3K5b*E-OHg<;F#4wAlQL zNDeu5ra!c2e;LV^L+}-8sT)lP2m34eJgG!(_@?&H+h@qar)we&hE!l{1of{;_YG8A z$StVL?u`AJ!BT^;_Ufc+di&)Ko^|oKhNmL4F<4SqN#Ph@m&Zc&VvqD$^)w|Xhot2M-1P7AW_O69PR%gBCF_2n8cEbjQ?E~c#d=o5+SGfMrcq6 zmza33rCVOrh(=S@-PaKz8zuKM%W5oSoegeGDbC)ZC-u9j@?Eq@Khu?u_(v*n@&e2A zE3_hbq@#tX{E}Z}yOFX;{7SZJ4TY5ijRJa@nWM+Tr&ZLl%*dsB!BXo5stzo&Y(5E+ zsdg*#4+XZ*inbK#*)C?R96)JAEPJEAVY0tVw$%wvj&lcX7xWQbWW^ZQ>hEQ$X9#Y% z(r{H;R0fq|rctt(9c?`sIv*Hlvb(KH({R!E$Y;Bf3N7A^?k6D}eN!Ti8a?+Cktw8> zCuOa&KWoItY^gJ2@m(L4s&00sAQcq5LPhH_QK+QDd%*;CjxAC~psu!bg6k(;(ZNdn zJ|LP9J%E(P$+oDhM>}j!Zn`R!IX5Q+pT%PIEi_;h=|PiHNTtZhj8C!E0C5D3BjU5W zRmll6ELs8zzds885{Qh!vfp!PxP;$Ui7UUU>S$IiaqJH)j$RiG&7(&GQt#g?(RRp| zmfP5C$#(bP{3vD2h7{RRtBti>yM*K%1UAmWJ^Tf9?dbM|B!?jH)I zR9XKl9ZTGe^P`wZt|cQv6Q%pBQbb~V5ZQ?zN@dN<-Rc*9Ds7|R(jNPqx1b`M=Je3BOG3PcaIB)WFD{d zEay!bygH_=OJqZ%XRFgYjXc0YK7?%bTUCukcgBzhXoEk7NR<+Ch`=j})nrs-4!3*q z#~0=|t7m4IUkF}6jByv`4B@$gE?v zzHraWK$LvUloSJJnf1yv-Lm{(!0(E?>VZSd!)N_y_I#Ews)xEk-$`_@h2wBzGmJ9x zm$})1dzvc?iF9`bF8;;Z{8P%%`7X}%p!B=?mY}6aO*RH!-=!ff>WKR)NJ5Bur~H@? zjk`i)!$b;p+QZIwOPC(kgBJN^H3n9TL22W)=@#eQZJI!M=Y@DsC_mBD!R=a5v)}MW z#tA@tM1ejzl`Sh6bJw$^vc-Rg!1e3sKIROEx~JQvCC~Q=4-2#2gzTs>rH{$%!`Wxb zGxtY3iPGe4bhe|*eE&W3r!NLNCpftGFgQ|L>!ES7u{Pq4iqJhPm}eYH(*~=0U1Ke| z*0XGMoNfwr{0qpPBC}Vs_QaGu>5gaUL-`A*%J?GQ8v{+T+MGg z3kR%wvz}!F(W9-KwI-~c~nDCm=j3;$tn?(<0M zkl67)c81+SyzW(+?E1!<5iwo5WK$s{s~9pW7FP$$6A!v&(tA4YvA9mRD}I*`^agb# zShBW~5y_kT_`jx;=*!C1 zO9dRt0zN4_APyF;7Rfyl`iUsp-7XbJO{EVN2QC8`^Bfor8%Efa*2%7<&LeNK5!(CU z@ewBmJ0(XM`8L?=`O=1PU#oKXIGGzFLUt)Rq$#Tq-s#BMYaTUHak?;~_Lx5zC|^$r zx^hDIuv-spTsGBknu&^n2NLM;N5=?U;5_!*2d20?RZ}XTG^{?1d(%E#f1`+-L}`LZ zt%*d29*C0b^L%gRX)$t*Y27uIo4{P$gkB`Q;#Ur~O(H8m}m`!y!a~ z@2M;ryuT4Ln|JAwB)oBIR!gp@?!r|iJ9~1cRm}X|=URD-*lr05o)ntXsJL&Cl9+)* z;6rA*xp9@Yw6MG%wF8GoO95c)iKM;f(tJFKyvHYZQjaYppx*KzFnV0`^Qt+T%z48u z9nQta{Zsf*zq%&q}1Z0t=iaTYLJY9m!$ljK=hV!0v~QZSYYKY2-WZ%Rl+o>@Q;tMZ z^2hDs6%+fWNHwNk2j_%VL+!fVxC_yiN#HhdD%rHv*4;ComqxNK>10eTEgpTE$R-zA zcye6(CQ`v8Ev?uy(M?FDO+UBKuq%@jK>oC{ZH{N6$}2D1P`Z9Vh%A=o$Z=K(By8iz z%EpYoOKjnRLx7@4e(Nt6tn=@CPzI}s4P9batpUxzlAf*^t>2B;I zg5U2A-Yk$21|o!JUlb2K9GQS~Es?;wm##s$y)_I~7H8!##E|84K|=5tr$Kj<4;Z$w z)nwO>&m91+Vw2FqwgwwYv`%25V@dpW#j?+~e})Kf+ioecD`76=ob=`tQ}s8;a{a{K zC*rq-xg!wyc!DL%q`T;HE;T7!dZNZvXhRBwi^$2XMMiSayNte@o1K-;=mlI9T7?8; z0Ltk3z!sL~Hf&tRGEWeG@LTkja*s^w(&{esl zcQhOV7w#3f4Oo`&W|3FqCqWH}c%YT^d}Ii4L;{{Srvw?2L#hMM44s zf}F?~81_<@bIrd-DGi(?1EeWSgr$i zgLO`qI<_h9;%`AErMian8D)01-1UJEk{S%W*~f>EGxpDA zV<#&hS-ZRdE2uvz@Rokl);%?Eo#p4}Jh#bKDcyMEfL5`*Y1H~u9I+w$8ok(s!()QT z<#9H`Gdn)5B-2d&!X`V?3{6BW{@hwLFgqwuooOl?_hypGY4t&3Sl-B=gNC)_r-2AS z@49FCm81S%sfC1&(SQ*F9sL=Y{{z_4V#N?$bbdB*=>g5^N$Bkic>diTsdd694RWQs&9%n(8>!n4GL+bl`Qww7) zjIxITs`$;uBWq3z9}$s}p=cYr8y2pck4P*^I<-DU$p0{kp~5UBzpAA=0*Oi|oy=bb zcc@SZ3K~mEOUV?O;x8(^Z(Uzxe8oa1K}bfGFZ%)cDa-5@gvl8!!q0GFi z1}ZCMzFP?u^P@6J>4g4FLj@2DZ#CsI+io`&I5AA?;mk%@dK+(Q@Ei4?JGoBITQx)6 zA$285@v^GqnqmqEVccZ^2H1AX$jDrY3biXxpwG0h~pfnVW&CCvMO@59< zXJ+D9slHADAOtiNp~IU24n_I2Fdw|A9_P39qOXP%3KC+buRkc&vXz3)w$8SL?yz*P zj=BNpgp1*qS5XwtG><3oyLc?aq|=Mq0OFABr}{bvV$w8{IYcSv_~Pvf-}tX|=M5>E zFEl!{-1h}~)6yfP$9{dg+OD^L0~~ZXBOtgscryV2*zXGx3NC#0g>_g*{k5}RkCM{3 z**jYRt>nQUCUY>#ZuBT|{@>Vo%cwZEXlt|+;#hEpB)B^yXo3cJZy>ld?$AJ!V8Mf1 zfZ*=#PSD2P-CY{z73Z9LzxT%b_K&7U4a&BzJ=a`wWryoZcNejUT>}^*P>}wU#6&@J zjP;zg4fy9|3yZ$wKL`K*1V2)N9uNIM0G5x8jN#wDYExrue2I^KS5T@jI`qffRK9n; za*gm$+C}|6565KaD#q1HKBNm-ixe^WE)v@$c?uALbhnio6kYx(2iqwWcV`!LyO_tq zw7uEY=aYU8`qt6%66kS{2vz7{bxB!SSHa zTR`sNA83wpXJ>l-Qf+UUcOsIW79O2zT0-pNZM}r5_Z^O2;DL}vm%G?_l>{V*FlvJr z1L$tYf0Q$poMRVUVl+Ws-Xst{Dr(T~?)sUpvgZEU+Qgi+a$eK(q?{ZvyM6yGSP$GC zNZxXDLip-0*IxLb0Qi8H-|iOAWW@;B{{A7_Li&d#_w8uql(7b^Bhh2@lto@r@{J3h z0BRI!%5xmYZ{W^U)?~lle)f1k_{DU{DeFCP^U=69?1ugQ`dn?4kAa}I$NLc^)TAe% z&yUy~P+Hy@>Feto8HtlqKV>N~jj}K>uwLrO$wA7M^Y6m{*j5^utrXs;>$0CqQ%ZN< z@}5w5R<`MI{6Xw_Am#Dwf`{{F{EN+=ARVaVvWo~HzWn(SzIwdxAIi7tk`$TGmfZe0 zhE04HCUy4@W7*zC96Jd(VVJN9Q_Qd!ym4GEW_oeI_Tm$?3 zOsO-4489r~R%acm9!+Tf4(qWo{@0P_1yLkuc3p+c;c<)bpTLQ)RVhD}1Bn%8J(D*E zi61drlK+L_w?u_Eid0hTXBPY5);er@_BZt&M6r7}DTV&U>^*(`k(?FqXuQ*w0aixq zGhJQl4L%+Wq=Wy#0?>(uL%^Zrv8ye{ue*PZPvw{nDNoYcQF2nNpt=y#fKbH#7qI_B z#-Y5CR7~Mb+BfW!+&I7pa7hif*x6T4x6vmxEC9&OBd=zKT4;z84TQqlCm`znGG741`FlnBFzPOevy#esev;T3yvZn0g8<8_2x1`@2h*5QQdnaYT)~ zk!3M4KQBic*zufkL>N2axhxk=FdyM)p61B{@9r1GuM--Asuh3_Xx`rO=Ie2{nb^}jce zk%o*nOL;$`_-!+pFSo#ObAR8B2xSc~x3M@wPSkN(zOu(VSPXeZ7%UzupyXbJOh8a$ z0i8!S1Zo=p5Bfij8?X1Fo0ymf!c6xSh)drXuGW*=8sXATzUCGMu4mtVy_E}YYR_L; z+6W7)%or#`ZuY!ArXBC7KRCj|1g)A%rMy0UCM3?rc2u)ZIlhPlELqQirQorZP;B{L znxtk?u*x-mDaqn_Sn2$bdV$sKSF(3YZtUalQv2x@r%LB@g4fhx)SIei)OexE%?!$s zak4+!y#LOa1uDwjJJ6`G15$Sw-vur*=&1GNr1H&4a2IK}LK8m-@$FwFoD>9Ym;N;v zRHJcBTqgCrAz3y67hGA0I_mIf%j$=-+#bw&@431Y@v!KxD}6BsqQID;+fVD`KI$%1 z@t;h6j9;ucl1O&i+xc;7>+dPS@N3wS*Ri_d!VbX#btcNK))7V^Ei&131rHrNz)qq> zYw;o++(k`}lt?)O z3vzngjRWF_k9C4Sqi!K^r_LN{#zXO^x1gO@a5$tIxz@RzL||M3>b%FVJK%)gQs!cy;7Z3g=I8H)Xa>!1mnrK=?}wKD6O2YL=Ke*D(&H@ zg4raz%5Xd$@j0G$s?D`xiE$2gCdG&%>V+iD%-LktRii}t{0mZxqt7EwdbtPx$bQiwo z8*mBn(^dRsn=4X}A5+p7;F_ya#}Pk}$J4MH^l`tVXImrT<`DHwg&a+{+Qgc3X$8Fl zFK^KJsT=AHIz#O1WzU4OL#NvU4}1femEuLL);njPms7gI^y2iU_+LK4!{r+5=B{q> zhy(+RDTrr}fegYL0v=`lmcqwZH6F7~Q$)J`bINbsL>3Td9^sMvo#1E+ME|m7V)M@) z5vViBEBx7`r;Yj_#7Oo7ZFHXzU35g&3qzVev?#HC2BlMQIH`&Xj-*l2clNXfLmK>l zDwW2XTTIhc9N!UrRhWw&;fT~ah`w3Ky_+vfD@K1mBpkC_lg-u%HT~+u ziya_Z12~acQ>oAAjlY^|!M>JbvCw)Ozhnm>SRiC5RK{bE*?Epy-nQoO9#yUkT zJTI@0Pf5%#+-;7*A+71xM1(-cJbyF}u2I8GT9=Q?%13+Tg_Yv2-Lg<4|1sLc1Pk(% z8($L7oScZOyNb^olSDlBPa12r$EqX@(M+dcNc}aAi^cwIHCCXZpXVTQf2O@?*x^+! z=Nr^f?dRLWZ#e|Oi{Xtvz)3-5bdPC`X`%T~-WdAfvu$uC?` z@FiE)lSnBjzE`2k%Zs+4<|fjqE2v~;TkPpe?q1VIa+irrxh0wwY4vX5O z2U0@D-z5x?k(joIPbOb#2;3bj82s>6&Bpf5=Dws)IaR00 zJ*^T8hNG}BbgV#;)%qhb8UgOqM4N=po?lyFg>+9RoBknWRezYR*SukKluYj7VClEV z%T4zSU2Z&C=K22+9-NUmdRnpy{4!s+E53#mB4Bwh)XUq~(5 zJPB1!2<#}X>fRKAt6#KnDD;)=1PkAwt+UBQb5aH@dJgJVns&`2WeVXE?yRyL#+z zA#ih>{Ub2=sZoc_?qWj#%}5grkfcCh!3bt|#b|h$2Znx_(iNFCS_aVu+#EnB=IJLb zeovIC^+sHHI5vF#@&~Uhig}U&?s^$OT}9cLSC})hr*xB2i&*vkwB=<$Q*z!&ITyKh zaCgW)N5;Z@}w1><7h_MMq$dI(JepOkaw+YfpV(E6{M6c2$oIoSI2v z>#QXnKl_$ATvSjYjarJy?AgNIArtMyK+Wp!BJCK@KM|}9+1%E{26$b*kCWe%#DVCZ z3`2Y~Q~B4=&gyb@9gx;Zc7O>E7}w%7hw_v5uHq~*qSwW|qcEccLEh=NMj8?U(#0O- zAGj|b76Oc3?-Bd#|6J(3c#3T4=wjL2RogT*#wT&nxd0XbD8qY z4m-TN=5!nFhdT#kzpkx6r+OOM{HYKp=04~S%+CQY9;Toh%C68Wz?@Y zBx@UNxk0DUQ8cXfsI4>Qf){`mbiIOMn4;}4x0lmmy`e)+NHy0!GG z6E2iS2WPOV-6T(ER_PGt9{F_AS!gX@`!`NeP~Ng^*~k>Ioi zeQNckS=tJwg_#^SHN0~w;bB_ zWCe9(oGe4gFF`1Lz@Bgj{UdRa@y@UZo9!BO1 z`;VjTUoH!RfwJR4%s&nMekrFj*U zJgUc)J$|1BIfOvcqX zYn(z2E{G=ykNzZ+^2y0j!wUS~Hh!CZ{`(e>ThX>BFp6v*N728lN4nUTb9+Dn+5PSpr7AFJIl6Mn z_+-Flc(i2@j}=P!AEp7^_pT^6OI~$!6JT$)htU25(E(@iuK}&S*Jm%FuR$;H0Z;<} z%}1tFo#|SW-AL}B^A`i|db{6+n;$&4S|+H4I}Fvgm32}V8>qSVulVn8J7EtWkH+bx zggc1Y<{W6){;qGFr;vWM-MGyJ(nThP@m8!xUm5rscJDfsP}H-1vj9p9R~y#LAr6Szl^SkHTu_q{EeAwizC9QM0b zXo@lCyEVV`GPM|si(lpqvhf(I%N{mG`3Lbi-yVufNC;mJjR}t#`$aoWNJ~HrU9FZFh&gjBAEWUvVz--V+5AbPaxO_%WWO!y70kbHZt{t z%5trb(kCXY?1gjlEs*bEo6|i^Rqk9(0?5p_^&?K|qmvZ(zPn={3I9-bsHCW8s*+kW|FB%m%DpvH zH-Om~gm+@4-0qx?dxFg_YJKd9n}>LHU!f*l_BRgRMzM3i;?LjEqwUw3zLYroCD^N` z6{4ckUh0SL17ux}?aMEY#qxS0zMHIB$o4-#6~H!_vIv#TeAiCMNY0r1UTK0Jneq9( z;j=%KfcwY$#UuDDPl2NGU|8YYIUFV^K*_q*ju@gmt3MBwSLkdN-|W|@aM};7wddMn zUb`L$Oa9nT=uy2|;{#7?)o$CR$1QApD1CXL-EcB|=i9+)n6+p_SN8F&C^L1gEq#%! ze`5Sw>SBMr(0)eteZ3c{spifng+b!Nx4sKF``qA}pE?SLvA?#iJm>ZfC;Q{;P4^`= z51a>c!6sshdz@!Pm(FSx$KTs`X%Lx&=nsTe92}GBt#6*xkebdzOyvpLDCu@UyM3t& zW$G4>z)+s@i~YC0WnRH3^zYw5KbgMTgI;>f`Y8+*1+mbmT{b77uRlMoo_|XJ>m$fDMuZf35X6xGOY*ha z+J}k8&7XTd;IxP}Wt3JZ>U>lJPG%+AWT#xe$~uKH_Rb3qY-5Uz zoS#WSL8hkKLqs};Dhh4)#Se#lcbg858kDqj5hH}w*@$|9DMvN`disPGkFTWbp1EB= zmKEDyCWCbhOg6s);3F?Db#24MFIokKmvPJfVpRF16%~~2B#h*RKKyb90ORwau;A1D zSO!(Qwn4h0B9@${6e`GOJ{1`agdf$xEqKdho~ zZ!#HhHH|}8)IF}EY`e1?hS)@@tw)`Y4rjy;5B7d=K3lp+QE}+20Jmkh(W%^2ivyGw zoKuq7RII-dO*nv4^yV&Vg5VRA(xf2AVyGdRG(OwQx*OfugFw}^8psyOx@TS&c)TQM zc~U|}#W!*^CnBQn**DOzrkaY1@#PtSXlE7sXVulsb#X^KgsoEO6BegEM;a+tP499He#=7s+>E zu$t9>rO153F;F4$fhV}j&G74XRq#%4$NV8BTci!uFTKn`U>XxXaC5mEiC1de->Pp* ze}G=B3i?am&z%-qs)^>;Uoo+b1-F>c}r+J5;&P1>J7Ab zmkKeVZ(8VEEK5mV6n4{uLV9dFO9HK-u}UDH!pZTu~{JIiLW=urD-{hNx~(doQ)SEnrvI z!!BlPtgHLR8G@d3xuND{p>@|5xv5BcS7`bQr*^V^CccU@=N`0QpE`E@l`N>=HXgA9 zM^D!d$osH5hIom9J=~QBrz+(_87#O(?Frn(YX$RWl$nO5PeLceBRasdkuSjkIwa2LY`$K+{`YW_5b{XmZ?juD7$GkrlWQ+jc9$y-8BDB04 zdlxOC!l8YU-YSkZx*;o~yR(VwlzMuIVhP*jalF^|%u~97^${e@E1oIqs35Tik{d@5 zT5|j~N_Ylot`mqlmp2UkiTmp-C8ilftu^99d|-|FOLWRc)m5|%Ou{4EP92986iZHA zR_%?EiegJalqVkaWi~52{u}j@Soeqbf4Qh7{pRMQlHbf~5Bn`C98{Zwa|vH?-ts8X z?FI(fKYuEfIuy~qJn}gZpl6|CNsq|kOKOgGj|+)%`rY$$;NqsGdYW#9gaB*8-S#fp zFz3y9RoDc!8gWi|=9IeZvVD>ZSe#4hvmZl9R?`Gv#}ttfuD6CrwNh2zExEceonHLBRh`*3#&6TLf1nYcR*n|KY~e`($1YCgZ=f>9#2pesI4 z=6PEf%c;BAU_LK6w-;K*13}h#xI!%4PA&4HhSv0j=5aS8TpI3%2l55(I$>88^`<69 zt-FH{h{0Ry{#{%Ckb2qsTcX7wcSJqnwmr-Zq1i(ZdkD$C-wnHuhKE36p)bF&7!@w^ zEp4J){OGM-IE$pW2rVloKbWz;Jyf`u8U6S!c^L!}biR8vd^ex=mzd9uaA)>XFWuw> z_yWmat>4~)p3ZEMWn6C<8y4i`=VM~wkToyuO^5j)d_@@5@y9i;jzhN4YfXo##dxT= z4Pnu)Qmdl#+jL|k!9=Ca`e)i`LArJCdUYJ@dhu4D$}QiA?wS!};x^lSagWn>&Dd>d zSR8eX^)Sl2aDK|W8!0~h_hz>+yL9rxBkJz_mz{cGpzP05*$2ZW0BGo9V)P@+Kb64sjlwi6OHPa2w>$VA$P`jKw=iHxkuM81xF zA}#lyss7EFU_^lj#Df+ofD~8t1K5!P<@28-mO#{u4yP9fY#>2kr_h27X41%flcTFl zQ%~MUt}`5cckaw?344xy{B5tenaBh71at%jfy=`3(VoWL1MWPR@9lb%rWGH&XzEuT zX2cWv?yu|PtD1lKyRckLE`~HUgFruRoz79~Brn5WTd;rP^djOR8`72KlIHuq z$h+sDKj^s-vQQ*1q972Vm-Cdxywgo)O^wL%W|XP$G+yHV$X2IYpTpm-7j5^Ng{1q3 z(olCK16XJOtkH$DI#4+P6G{A{7XxI|o?9{VxgL(`^;%vrps2`+^;6j%%9}T#VJU}? zn&m2Ta)axA{B2}8$`P{MkO>A4{gua$s@4Lc(bpqP#_r)2e8ZSo!NKNaz==}z%hbl*Z$j1zo!<>tRilB zBQ7tWi;7bF93pKcTEkEDk&!`hCEHF4t+Xu5s?uhZa!GV=frt4EUo?~~{+2>IB5$1Z zOZXD&uMb0-{ih*_w~UvRfE}(aXGqd}R*rTnP@F3MKlFsSA|bqa*G07hjrbhG^r_qE zM8W3w9g*co;=a9}rmFGD`=`cz%U!KvD}A$jwd_QP zVL>gsv#o`Xs@+WgdFI~>Vp_=ivKLF)Umc&c;Nb(RGa%3rp84v^o(oiCp|!me^}~Dn zz9h4*R&qmix?c|-e9=s)vcntSwu~yfdW%QUXu_&MZEtHA7 znilX?auBZ5&_0!-#qDAv`K_3_kSm*6hmc5f;#U+QJttmru3D8){y6=(=_t3QRI{q; zgnb|YRCqxy9e~Jb&?Sb3^bft`ggJ-ND{nzqQ_TWXFu^RDcKW&DCj<@g#@Sd!#>at` zkGYxM{P$wIFPO9-==ZnhnD*AJmN{YvRdVK!*)-pN`?s-Pv6L|&OAy6IHPCoouskW3 za(Y8+t~YVL=gO0*?k=?Wc_f{2ocE1Cmw<<>+m9;i+mM9-(M-mXhP}DY7ZOHsDW%Kb zVb|F(Fo7Hy9`JVH_H1F`&%2Tu2FK`gJFAU4%lM5IT|wC1%nv}6|mIAo{kOY?QtS@ta?{ST~TXm;oeCS~!+?wC% zc=ouyv~d16dBig7lG^__c{~BN^uHx*{*$xiV@FOyV;ZHOK6u_Sz-=PajH?Ry85R^_ z!B}}t!nBN&HT7^6wZBjhJ?Ayhx`P*=0CgG*@ z?+-{^a&I_IElFaU?&Jq_qT-W3aAM=ca7rO%A%Pk~fu;MgJQIi(VB+U@tfHWh7-0ri z?uS!56-bW-D{BgJ8;qZ*?|TuE|4NH7%A(#;Iq2sxIQ1rqq296F|L`8#elf@#7Vgs< zS9dk+&t*txiJQo3-+mWnrDLodkUQG!nvmg$5IF1neYxQ2lF;#cKx@RL-Wn1)0ZtU~ z@L`&XR^QZ^|uol!u2 zY%BkM_+p2=UT0XdXpGrxePaY2jnsLOpX(bBsO9EArcRu#p;kS^-}8Ai?Hc3uonUo| z7)m_>d&7tDh){)CP6nN7z4I~}J@#sFjumR8NFy|_Ft29Ff|Mn~m%>c=T&yrN4{k@f zP&pQzSiV6-!OG!<8{z5nTOr>N+uM6-NHqVje?;m!jwVuP3>$BZXhg~2T(g!75U5_2 zq-?jSh4>60%SaCf=JP31tXtH2q|(yS2`yZhx*g6K+D{L2hbbc_s$3n#qEzF@RFawx zzbS+?IwPUX)T}*&{4>K^nac9_zc3XC8%|wY56VRQnCZFus4{E7iCs^>)v~Hhx7Fn2 zlyuIL$yn3EoF7_y4+1QRK+^yAK`*jbZ{EB?MMZx-?B`>uOefGK=hH{YOYG#|Zd~f{ z>YG>ug@@3{2Way%sp<}&R2rnFg-lZ_(TXk?vB4TT^U2CZt#ft?EE`h4*sN(VFe zes0xmYzkvuEUMI`<)U6iG=1cLNOllmG4^l=Lo+{n+PV52b+MZX* z&;z8RA}-YO^=R96tK|B;xEdbHRsL(cOym2cS^EKh9Vdhrm!ZXc6^-&Vg_*)ZUPo8@ zV56#8jIl|A>0<8|cZ&i-T=CjV_JkzV-F@@|+$gS2klX62@w)>+Vm zg-&D=xJh@qZAg@;YMo;bc4e5)*ISlu3DhBxyWR68O1jmye$M)1>o!`>@3A*8 zI+iVP9#sLXufQ#bRI&8j%*zRZy)t~M<@*&}#O7>h*=<|!K#x5t`OBfy(p=W6h`Y}71N0k` z?9-FJ$dTfHMPInwU{4R2PuH5MXZAtJwo)UJXM(D>fBd<4-Fa4p%5=g=yJ!fmeUPR6 z6DbeTr0I3c%1!1fe7H)Y(Q;m~g(K6X)N;F}D;SX$&SmY;Yx{FjDkR8$g29Q5HUt}k z5G$39p2%i-wRah70Rw&BCMXyT^U!P6KyZ@sn!`B)qs!Zs^|xGyo>ifOvd{q=Uq?@R z{&LA=^g}<+bMX^%5g{?BjV!1MMAvQKyX&>#5S_tHl5Rhacrt9=CEr<4s+L#2pH;J0 zGQZvs(OIK3Ql^Oe7ozLB?>$^*Cjt4HfHl5z|K$&4$r708m50oQg@qiVqm7R$ zeYfb{xaFbKa#w4AXf4D!3n^3~g69d~) z?`aXBxrixK-M_7%-+Vsf)0sOn0f-90&R5xDo9c`Iv{H2$Ofgzp5_+EU64l@DN<^yTg0fH-Nf3CCS6<8UM?vEgYxM+mCy{-5Ei)9^o9IIv|U+wro-a>YIYcLLj5vaoD8R|K;&&qM7lK^ z)K|E+zEsD>ppT?zW0`9(eFlvrM2YKM@4b{}kD}X>OgY2ZuV&Ck!>GN?6hdjCZ$8v5rvFZJoY;eKkq(%uOP- zJR~ABvwbwIR+L@zw}1kFD-eEsJ8P&^#1Il;OGpN$dEtAjs?xlZ{-#(u z-+6w*-?bwaNsS}%R6F_f@Txi=Dq5&*!AF?kW>I7#9)d;yQvX0!K7uETGl9@HoKvrvNk)wSIkdx}mi)q$W2t zfOW;<*fq$6h~@s;qn-gY#{$@$4Q+Rwu@u@+DTU60Id>Duzb~PoXr~g=9_tVDCX4)v zC3@NyCWnK#RTq9UW$0)mpGH~FcsV5UCwpUdCh~Pp>g#r*!Xl0_X7VACmL8LPzo3p9 z*L1&Ll53WO{FuPCNy*j3K`sp4!JkmS4hHKcai70rH}* z8;t&KI7AA<=Z?Su>AcfQU@T)Y*8!Ub)H-({OOU0oF}FH&kx17wug#^%y&<%=;i>YLzXTO2ZCCqS3`GF%usx&NwAg@$#clnXj%!Gw0^>$^FsLx1^ zcXM(J_J}^W<0t6JgxOjDo}2_;Xf0PcqK`8)gLHTIQiPVW661KveFw-$dgmoV&55WiG!-dlIKUcSox{exjVRD?Y?v#3l5J^-#}90lL*ZX!|!pr?o# z)ZH?H8`GG2^_#07{0I3`$i-!o(w+bF_=x}8)W8wlg^z^3a z+|jCEXQi7&w$Gm)-L;eJ9xHebvN7oV%S=PZlR5`jl!Td6TlW06k5HnSUi3a6^n(0} zu4cs+md+LSGtd)ZGY{GSpcVt-_KsmBLND&xy^SuOQyY7+T9%4zwGJn>gBxWRbD;MC z+gEOtv9`66m_U0H?jvsRyV-YHtw3OpSPTBY8<~ET)F7@oM9ax^1YY3wrg4ELX+93O z;sckoKM+F~?Dfxn=kvE;XSO}G$SX2#dS+I2@}6~FY@sP)kN0l^Nb!$7pqW}Ui^*Hw z{eQ54qKA=rjbn4Y{T<91mZTXCwUW(FBudLBv{cH~h=Q|jWZ%CK2K|!;Eh4WcXUJ;S zwH|t4W#y@r{jjX+sODMdz|oK|gsTAlGuluCbAw&{f-E<%x3MXX%k!#hTmv~+s4Bki zG>nwNjQF6C(qVXqxBM(ZfJ*Y}LqS%}pM_t^gutMybiF~46_=x{No=Lf+AC4&Y2uTm zj!VU`i!bo08%{9y4GhPUD&Q*6jZ+nZt831uhS|B~s=gTEJ86`IKy&|wW_UG6N)yah z8;VXeJoHV5dF&k^3gqCmn+uhRRovVUY|RVR7!}yIN=~v3%AOJIwvQ^<;Ok=0shB9}P10S!LHsMN8#5i$v^|WiC^H4OPl#!oo-`s2%^by;sU;7xSPj=DPLafm8}k zOyKRjb#$*pU-m(&| zX=S5^4CRUC3@hp?m^jrkJQ}$iQEG`s!`iyjJ5gs5__>%;fZ;lg7F+g&(}d7h&uOZ} zG0cDn1R6!*e~j5O4qSR?S#wWiFf~Bv7);?SMF(iJ7y<$OynCTy<(W03CwhZMi7hl0 ztoChd*O53#yr_LKJ154jU%>8h%6gIQxP`OHln<3)1_|A_(<+xU$&oVNy!gA)eRlTc zR+_)?(<{f5=$Wrad0kDS*S?-HnfCM@YPvx#7*Az(E)vjB(VIQWvZOvm|LnVO%L+Cv zWMUJ_hEE?e6Ua`3FD?$q$+X0ZEiVV~Gr4-A5+V~D!MTjmR?wCDMI2CrXoQbN{WV*Z zC0D+@#7f;awQ`%)#(eTTKJ;nNt8sscS%(m1 zb>KLqT7-$ElNudkTtJ4(K>r}j0G4x<`=edoxH#Fe8x8FuOv#p#Sna+dL0wqgO)ji_ z{5HF*O0dSQ?wKEXu4C`t>mnvs`5AIvMr~PIp&fb*41Q)yPj`_kUE~wF30-_1mI~YH ziI>$3mdtLD&4W>GJt=E#*kq{x%A(7CG+Pj~HL5?ZwyNsnM?17IoHoAiu#Oo}%6aI? zFRhAgvagZA~uHc&Sp)+5`j4ZrH3W9uPm9YN#HiYuIC?yHq>Iz4sY98il)=2|q z?0|lxG^<-~nU*Sn(g@aB+Q?`pG*%|Qkff#n7=!AMt1bf#4Gjke-@j0Gu1n+-(4kGO zp?~{<%@jin8mp{cs+mNouDs0ZJv?1W$X;p9GTg7Zaj2xc{6_eDK-mN_bTy=5W7l6b zW@WTIw%4e5f9@vrrWdvm`BDe(TKu3_Hi(JYCRSC-Qrt<0K&mdMK*)1Vil8qI**wp3 zW5?b&HQGADNZVszyWGQDCQN1aYa*+=<;>dNo}t411QAs3g6X6b#6rL&w-0^Y_^kTN&B!>r@@O;`mb?-t`cnV%8PsZ z|FhX;!izY%51exyZr>0@q?z}X&zcK#|CZ2v1 z-fiugAir_4IZQDZZmVDh z`(^>D8)9O9g-muVq8~gXwh*kxtxIJ2rd*ZerY3$6+e@uxNABPj5jlC#M-naWB;d^8 zP^C~-;V>mmGvRTuMK8!K%OVkTT{m&h8V=w0Of{8XClS3 zEQQ`6M`nCCD3Ubyh|{dnNHSn#%AH3>BP|@))QwYfDzg5GLdizTR`=J?oG5#N)xglT zKM81TJ7-8Az9=}R%RDG9Lqc_BdL<#wD1JLY451Zn_;a#n(+CK~o%{OOe}%J^MocU{ z05v_(QR(${LQPGrB#2j1(3H|+Vo)-k=*AVp2GiiswtGKD%B1^GaVe*c1)c_N&-D)~ z`v;tcGYML%-29pz58Gk|!SlX}DyKvSm35Nt{Q9yA>`#J}BZ}h`L0?&A1#)CaV)1hs zcUL5%KwUi(n(hT>!5SctRn9+KU=fg5y2NV{AdpRxM)y)wOe~B;O(G>4mLB}+%NIHf zo2aBfwjxY5XDq9#y0qJ{^{7FM0qwNI#56g0({2%mLOAT?cB-~8^Ml}nyU4}FoM?EX zL?sg|^d^+i*(i>Wm>cZ$CP^p%LdEhh1s#}6`5{&k96M)OfPt7^#vMZ}=yo)e>fsOQ zcDXg=z?ncGZd_miaQUudZE9xr7UV^n(Qr&>-8`uqS;8C>t*rOrjt%2aly;=@a#_C8 zw8r%pL_}hc=jjj2{e-#w#Rkp>XUWaZkw{+MkKm2rsUACzdq}aA?v(9=QuT$54Hxc# z>#=%>%2xwmzT6n)tokh{04P+yfo$(C!YVWR`YMy$*B$2@wd|XZzFIrV@g1u?nlTR; zhAjBcyu7&FUY0i15)jbu?BsQbh>CSpRB|FvW#53}2+NJP$;o9bEklr~FPb+8x!l=U zFRU*3J2Hjt&Q#j&awn)2k6V2u5lMhi^d9M%8N+ z_4fp;STcGM7M$FZoLW@Salylh4N|2JY^)87d~PjYHAc;|fF3?E&|8 zR(FMT$VU1Y?#sdt3^l-%Yq zNc4V&>34pP*}(}7IJ|8IbM<_(F}gP-l7B-Q|T`GVetH6@yoc9`hjN)8f9O zzv+r~pkx5+{JHh^eAt80A;H47d*5;igkwf3w#(ud%a`6|N1pvh16%-*FMap!Yk1$m zOfrsw$K}=HTFP#OZ$?T=<9YIVqTQ~}M|C|S1HJh)-hu1kA6y1L3@HFIed*B|hvcQvW zm0aPW&!walMML-|%4nC*uZqty2j6Jj`CqNqA_jELM?5WRon#5)kFSas^q~7DPyy0= zJ{6*rQqP+iYz5ED_{pH1kFn2Lp1TWx&Ps?wH=L&LSVxxO>Em79ItBS;tA+;xQ*<0k3&P0Dz`S(k7ZQiHVM* zKRWOW3lG4q!zl|rypSe=_Y<9reFHu4uK~zd`{V1PuC92IcI6`X$w-@iGEVDNE4S@c zCtuo``c$)jjU6C9xqkMwC(kVEvhVzRKjyxUDnBABW}37=kW@CbEfbCrQQ6eAKes@} zN6AM`pfqWvokB8v3*Qy&<26Y=W%p{yoX9LpXr@&nXRxFetl}Ae53^sCL9B22*d)`N zvHJUDGrn#%+LcK=UW45;C#5&07Z!eEva)(yQLL5FEVQ)JfiLo621aR|VwaH?*<4vg z<5po(y_~ZzW257pHZN%)Z1qa5w;xGL!nW_w!^XqiqxHLPvuB+)Nn{zHbKkWqm9}Wl zS8L6fowSCXFDm%4hMAq+cwvsye)%lW{cEk&_Ked;qjAZ?x+@6TLK&Z|x}^{vm7@wy zL*-4kzej6LMwnbMa-@h0I8JkfGMfQY^?l;*AUERW!1WsM#A4~^JQ@p3d&LOLb)0j< zA<$FlpT|ums*97b$&rg4*l!+}BJrfR<=57ZZNsihiw`Gu;le+cTw%_A+|BxR>+s7c zbO9!uqo;|5Hz(`KQ&Sy&euPgB6-G?*D`%HW0A+g6CFTN z_y29+4O-XXPMdEU8Bx#n>bTy0vt}JuambJnad+H(I;ff!CMTgApVa97-Ql{W6n&sw z)n$p(7SRmOmwzMI6a49DH#<4sHpSO`v$)y%?*)`$u;G^)H8Sl7k6n-5P3^{^B@zTf zjqoeT)xpEH0k@ZW!^ScD*iHx&_rk!I1lk|vh zr>NwLCWz52T}IE&UT3~?N$8+}*18N%(&*F^Rp)eTWK$Kr(R`V1K&HFh#^>(q zh(zb0(+|yGGB>o~b>6e-k>O>F`HRz_Vi1{l3cFTr!nZ^*tu17DC@iDDsWBY&*6pob zjafZ`fUwyU_NLCn33+lC#ojdS|EOV59vr&)F($_5We+ zEu-RUwlLui5kg3SK!5-VL~wVPybvIGfZ!UzX&f4dya5t|CAbqj1eb1Hg1a@^xVyVG zUp0B}%)RTIyVm@fHFJJ-AFWfTYS*r3Kl>@|KFXt3il>ZlZ@y8>3D854Yxmy1_4`H; zM3{CbFp0TCF;h=wo9u`Tn3wkLHsZR0?*pM{3MQ|aEppj9!J?X`>&6`4d&R$Ypj)tq z=|u*>9Ee z6m930%APhD%Spa<87m5pW|sjJ&D*aOZCR`~t=74PW>bk$Ro)GuNA`L z(yb9Y4L_MB%JSJhD&d2X!#5rVg?AVn*F@GL>Bt-QGv)&i#)dO|46;5Lwq>V%p$_{1 z*Q_TbWzpiEw)WKB`s&Jbx1$0k?d2O+V>4XTnysUzr-^#-y|2?Vd{U#Jfzf!!Q)bl{ZK4%Ow_CPRjRYtgO(j{uGpVVpmav;}(C_c#7O7F zbco9!q3*o1kt71k(Ra#+WukG9#w#wqD^<|JfCn!6PA?95L}@Aln{VQ4JUkFetbkkZ z<6FF6DV%!Lnol7l5gE5@;H8{X%LKa+%gEo-LF65`GGTv3wI*G=@g*Z8$rHV;Bpoxm zj;%|L-3qF*GJr}3? zz@VDH|JM)$o5OYK#Hgsi9sdk=8ANQ{T5P^wtF~&WOvxZ0>>kAgd6dV>_k-EG9)0G* zKxMl(g70$E(!)jN4GKKV!j!KAR2fK@^UH;-3>~434nGE zch{&^xH<%>Gr)AK$a%!9NRRG-fm=u@RN;UJI^Xl>uqTiMsN1KGTVv|Pg0TN3BGNr= z2*0h%O8R~iSRaVz6QExTc{0tfm+?%(+j$B|{LHp>18MF5G^h zu9JJ)lvn!GHa2gZS}xvwFrwh3kE)QfU4u+w78`~Tcvn<(NWNGr3CHoWSyABw{%l>y z&q4C^9YV;o2xgjBw-Bnv*c^`S&5&NT(_Z9$vHwFK9onO)`8mDBTB&J&2xK-;1Fyq- z3aGtLOz2@jsy+isAu0bOrywaN2t@Uj%N%g(o_E28D1@;1KJmhcg%)^c@LBbWbZf?+ z1D}ORL?kN0TInXl86P~J?KPIEr@>v|#enPhEmI%-gpN-jiM&bgt2q72n1R(R@h1ca z2On;4zXCzrl1y$*V|xnHr#Ghcu1fokBTl{$)S7Qf>XIh&oQuD)yzG!gy<7atpZDIBISg@HaJXh?re3Mk2l2aD7j9@-gcICR6N~A4KG=2Ew5cYd! z+!bYIE=ER~uC8TP01{F)gS+3p_2UDXzn&6L>L#Amviv)>ZkSvugzSC)MeiFqhB}!2~DiZ-E%h}&dm$t($mku z+ff2%Wwyy4a4eZS2>{1(mJm$;Z)rs)C{|8bsZJV;FyvEb0&rrpb}hV14c_Cs8rmSP zYHSwD{WOCBuAClQ^Z33lYn+6--Ql9#A+FwpNkuNP#GT{5V~Pt`SKWn$^u9h@sZ<7j z{?-{A`j9N-%Igf!p)zD`3S@Kfl(TuBK7A_dGcY=9r z@bD;iCA4Xp;ktrC?9qv6zm1ig_1JA41%(4BG&ecP?y2$G0=9`*%63Db1Xh#qT+WZxtiPD|BIQE$)4@GRA=PM<(te**A2uXJorKYAT zoM7DT7e6p-K|*e8dMK|KkU2~>uEY=GRYFtoG0T}i3@di#4A{VIrjF=2P5C?Wy%s1q z8Db-HHI2McRHMu5>JKf2{=81wy>Hzn`jfg_`c zYq;KuY&zpgAgf@@PRs5`)3Z?P-h^tN@P!`~#&b-(qpIa7)dsbDO| zpLuHC-B|+;?vI>c$Mn_})#*I(bHWeoNK&MbU*d~>d2NhImY2AC|Br@MWF-$-3#*mC z@6Q*%?>7O53|+6DaGQV#z&ZJU9Y6iE7j*|jVOusy@P!Ue9GCM~=D6x68UYJe%7i&nkamu27=LAIa&DGl?t zccv+rGSqDW(+TF{H6QzOy?pz8y1_nggR9#|Yx%vbK(d6;+F}ZUg#)@Wq%Kfu8Z;kB z9qb?WH~203kKz&dxs6%l`OoI9bamsaKkk1A5MbGa8JXA={K{;h0Waqu8#((4M47`fG5N`cEU0eQsK;#iqAfR0PTG4OADI1vTUIvB4 zL06gaC$y?LzX|R?dNl7KXo=VaZ0Q=vEr>kLLV#vE!+@#y{^`iipB;}M19j{mEQq@w zu%kM#QpxN=Owo+7;M(>pDy7kO?Koa`yM$U!P7Wmim#`vO2vAxW$iG}?6Bg!t_Uu>6 ztb>wL2n0ffAre{vlN|cs8EEX+2F&42{WKYoMg1iuIu(^dl@%z!h(}79n8fu9r>7gy zD*#1DDu7C08N7bo8*Nlk$>Kh74-)+}oL1>%(XsPgBKHqU0Ena2*#H7o?UIt*pc$TP5Tv$+ zMe6^sl^WbUgV}FXUVTvq!_g0Jay?M#<>i0LCoeDa(`;pIaX}1YRbzi8Qbx5sV1m?T zgO;nSs;^H@Mg|6t+poWW?~{E`m+?*eF(IYZ`no0Pm-23pALrhZxG{{4g&7s<>?sbn*JDC0z>d1-SMgrQIMOxLN;=ULlws(NA+lZ58yx3EV9MK};4U7hQ(Bre-v9h2Uyr%^g^40E0*fHN>zW zk#cwiNyEWmA1DMHs<|Q5;4rOGx+CDdh z7h58L(f3Yz-Hmn-#PI)VLHpdKdSX!H?lOH(^8H-X&=5(rD6{bR4|g;>dFoXQ+{P|i zFB#2IUrUdSG!95tEguuJU~HKp*o0^g4-NuIa+^poQ$pa3=xRi-3uI^4I;`?$7V2D7 zU$9OylFlcBcxQ2_gbT|y3LBrU=Q?YjoJJ-QT!Wl{>9_1Vy6p`EQ}Bl$MyO9u!?w|s zNGyo=%I`3B|42;7ihc(=Xx>AoC&9{h48*?U^Db za~)HH`F%SMaOlO^PrR~bpifdGd$qnmFGYkTdnN!31E{VWd8F5l=&a!HSqsGZQoVCzITWjVU+bn3pUkxOKt}d zkB6!_Y3}6d5g7;HX)O1zvcRq+gP1hpxwM#shhlEyawjQ-)_Iaf@)O&2KR%m{+?msW zPE>J9an)#jgcb?q`Rmji1e7xMG@vQ2X9db+k>Q$zoW3K|HSYbi*)~h0-AF{_5~{SX zCLj*gA0vg-`CMVMkZm5QU|f9Vt@!FZx@WnxjkR;)zFStLISkscp-il!sGgQt1W- zc3l-}0SdpqM^XKIAzVY1w$%iLw>EGghO@`ypj$)g9(?PHkX+1J-@oCpKo(H9pBkbR z6q=1U`|%DK8UA1a#Jm=KADDyt!QwYJGOlSz_pK?BDwGA%1t@ubH)HyCcoT9?iW!bT zJm9T>hDt)UtJc>UdF7V66%aPe;bB6mz6+|?)zNo9fAv@TsN=;fV31C}+e>la-Sg#g zIm3$_sFc#uC5|fO;2W|GlF^C$Q5w%CTp%_TA70792hIDC#VESp+}F+|P{!!+d$)_J zn6zgQ#i}0exoxE{lRY7#M^tM!vAXVyb6;D>UUH`}wMAB250w@H%U2BPC0CFtTtFYQ z>dduWoGEI*%V!&{ytbxp*7KkZP+J0)$QKsBo>yB_ikXl$sH;%ZE#>LMnFV;o)erNg zr@x2s9Dc0Km(eY^N{_!h3k$N_^0=5Cj3XJM^wS|{4DkUVrYZD_7tVw_Rf?H9gA2*Rdk z2leGX-->KZ>DufT`RNa;pEBB0mCo=kWafT^%%?KOoa5f_ z?VB9<>)ZJcdP3@6<+tA-UQ4WTQaeqdZ*#BV-a01pFpg!poNkkv`Q3LNavUw2o$yiY z8^$DLh+A5UYiLw@bGz-Z$fd3RU4L2-hc=!}FQytiY8-dy5I$R}jo;{HMR!K=GQ%$p zwkgg+F48$Z*mlRRw>F1#BZO`Z{`jhmIH3|P{vqIXNpUvSkzey5>12htFqbO9>>ioz z4gr!SNjr{GEy>Gp_$>3WOcH8)W&feY3Kd?pjvd3MHQG2?_vEc3%%(A=bKOYp-8@qI zaPx9%ws|@&$1zE^!r{;%f#-wgX5>Le?1h`tM#ot}pL54)PHQZF4;(%m&v@FAHPkv# zwph(}akyI&WWo|uOmew}PIZYOQAK5{zvPRIH>(}6^`I#x$r}yNzTEE8 zI6_<7Ry!a8df~>m{KRzblJ+d}o4urokn45R!JM?(HZ4;zJ>B=^IX-Ql4;drscFNT8W)ZN(UwE<_vV!%-N56%yS`x%d95T zFNMx4tG$kEjW@broI#d-kQJonv-3QMe}Rvj`{EAnYix z+9lO8w7vN8)M_{w_GBvJdGw}d2k6X-c*q)P&9hNCHKG-q%zH*d1+(oMOYDn>FM`mW{}WN;FNdYc?TAWj3CEn2oCr4sc1Q;{ZMbDmb@!QlFQuD?!_CBKGv^&@;gt% z(__6V^Lm7?fZu04MmN-ivZ~X%;YR^hkD23J)%Sw*$eCESvd& zJE6!3N8_1MRS#xLvDCb!6V+2j4T&}~xyIR==NbMw@o5(Hc`D+E{vr!+=J>H1Y8j=q ztzW&7brsk6xQl+hkyl=f>_S-z3 zqtBAO_R!)ld@D2@1zcHaLEk>uL*=|U34DO}=<@EARi4>*Ro8qhIx^D5oXJDOfx)D}_9ba@8K>~j>x{5A-pX%Mg4c_a zgbo+KudBhlpb0V-<(k^=%xqJZR8WUoS+$G{4_6N|_V3}dZ6-04mIhiwOg!pm%U!dW zSWM=`VL|sphf4U{G)G3BnKe+Cd(?d|g}*TcI-y;k?o<8Ie{h7Ol?t?YoX~c zVbf!_G+YC#2cfz=X<}KG(O-~EO%-RxrgL0FX>BK4e8E*^nM;D&)g1CP%pN$=vK9k! zLxOQRGVOW^voDry-)`6vcQ z*qw6oxIj)}vs^IPWZ;0-f!fG^3)ktbrObQnlsB*(gw7X#(FI}m!Xt9D8biR$aCYp3 zWtd91#!DILDc)C73&9Q(+tOkDt`P4w!`pbE&LFBSgDUDM0t7#c@|agC&9lA3g`MhD zJJZ>ysYJ5A*Sezf^&eylXGv6tHad)t(1!XvZlk~A-+cP^IFUt^Tqf!poR+HwW-m^} zW!=Mz2!DfU4NaT>fQTds5W?bRZr2r-7NVxBBEJ=)XIBC@PzZ&(@&zt+3!`)-ApGj;&5-_E}4A z8I#TGwNzC0v;oibo$6fr>3QlI-s6g0*!Cw*oj2xH`m1igV0$RRLlAqG3Aj>(9B8PesOe-bTd^*gNW`C0DzNc*)|UEbU#)K3UnG7VSGL>$&Eg zwbulC80P0YJ(4!`(O7u3<`|RRU9ybSU{R_#{gNZk6_i>!aXTLu;#~^3*q|os9@xb& z$ywO(Wl%`ErJh-V0fzae?s7^QE8sFxzb}T!o@R8-@Z5l5z*Qk--5sz2|9a>A?Hl$uwG`}k} zJ3uW~4d?lIT(sowFMssu(xE&VcI4I4>?VyE^6RSM%&xJyO#Imuhwx(2P{;dQz2rfS z@@tDqPZqXFOdjwmkI_l`!S!1rz0It;KcEahc@5V5&8_LJ!}(Yg`=i3?@q2&&?4sDZ z)XwXA)`5uSN?%y?)u0T&Z*s3!1oi#FdveIe)#^uqExX*=R4Q8R@HgYp94Zv z3ZKfd#pzUH<6%D`dqX}2Im6M%mAjZIHSN%kgu!F% z)5>6eja^lZ7>BA^U}53?dR>Fzw-hcybJTJd(-Zq&7`fZ&wK^a34m%s))7<(H-17l{ zOHucLZvmOa$T>Uk0ocHl62<5snxD|VHBae-%4 z<~43VFwbMpu)W!P7c5y1HuMXMsB&|KQ2hy*5+a=R4KL6lusUt*R4c#8$9t-i9U!L- zR!25;1rs{V>0Z4ahrQj!Sak=2ic}~Uz{So;H@vzLIOvW4?-z=bfJb8@1>ir^e+g?q zj@#4aCctzUA_h>F@MbxP_tBrKtLgv$$19|-l-J$o`e{0VQ~~hj#rlx;S|^8Zz*T>& z$~JK(vahd?l9Cbx${7e*y}9AZVY#5hO+WD97B)>;Yt2 z4O0e)x3!wOr?8t-AV4C>0|En;$(ca_CZpecB>?kjk9!w7qQ+3MOFahbHY0kh7&IWk zl)GYi*{7&Tl{E^K9$PohR(FxQ)sP*7Eh~k(R+mkQ0p@{!OX7`S#~^afvk4L&u8(^6A6 zF08JsTUwi&1GNLnt1{Q^)5tvi2QjyblmdnjAY+EVT8ofYrCPaB6%~S&l|n`_g~^aW zihpZo&BQOTF}Tpx=I;IfRzt!R>i~dpNDNfnG#TnOxQF2b5OSQ(h!^||2R1i^Z=uAc6?Eij zod0?HpGRMHd~ccFXii??ll^S#r3?74yv=ud3t3`YUWXrbh`7N`0_lYv=ZJbX+s@X^ zU~5{i(|j+_vnFe6`FjAMguIx33mg-obeWOuhT+7qNO$O0UO^6fBuxLjv0fVCb@nP3 z=p%S1*K^gJ&t^~Qnk^?8zK-pI;~N`O`&qkuFrn$91GmA#1zbpZdFSTfBy<6rhm~N> zT8yJgV3CfDe6Y>a3AY|JI@2Omaz9tdN^a6X zOO_2lpSOznYHO_xj-h0Jb5p0|rNP`x3Jcvw=0{Z*A2QUV35gnbQeuWMv7C=S0C}W+ z@m{;oRz# z+ItQk&#We4Lpd(fD-%>@xKYIG=)>k~7nu#Dc`m!77dMR}HkCOq-5q)YrY66?t>Dzr zLib28<)2ziCQ|7#^;Z_^)b6eJse-e9DP0~c%UxV_$W!RAPE;Y;td`>l6L%W>CV%Hl zc|L(#?DXWhRXI72MSka6PS(nLTv~~qkmvSTYW1g=8t8*h z7x|(W3p^TQ%|1Lm=mXiX(zA~x*>5VW#!^#grnM7Z9EBL`{P8!ry+}q zgU>G2xafn?AYCj>!){2y=Jv+vr8cHMLc5kBN=n`tO0&3aoC$f+G_$z06tkJZ5y5zI z1b&SX_@bqB%Eb%c^&*^T>d`Bdu%uN{zs8b?_NiR6nWU3`wo`j+-`uPWgsOlZ9}Rg) zUmMfb#f+R^@IlB%KKyg$hVyAURh~kXilW6AMV+$*jW8r-<<`zcM13W9hEDDIL6HCR zZY9mVdHhmV3tf~; zI&=EI{Y@%sZft5a!!jW^qr8pR!Rh!bcH$#v7L2_&d4*AG8C;f9)C@+k zgA5o>h1Kh4Og#yxy{?G9l+^8*7Rsq%*iCU&6e%E2{72XbNuBL@%^bET7*x3Y?n=`3xI8+F8sya= zc`T+pBZ@uj7kBr$rFV5|>8D7-AQ-9v$y?SF7qJQxMIYxYz8Q)Ht9;E(O|5ko++#va zMw0ZK)$YofNE}liNvFp9i50$|N802*eLse{n``RowKStrA$A?&$Ns@{VUV0$cao}X(n15|u0h7vjcQTfD%c#GpktKBr=Ln`%(Y%l$mVLj{2^ttq-wr$n3Z(X&Jk=htaKvM{i2twkBJXj>C~gHql(n26LlS0`zd%H zkl@Qy6KbY;5+RaV^Ng0+c4Jt*OsN6?^4OQCR0Ov5Wg&%&*GjiAfB6*)88@WUk~~ZX zIhx}hXJO6i<~59O{?e{l$(n0Fc;!4h1?7t`d^Waq=n-d@eX`tGGdELe)&A)8URL#N z_0dbz6kR5?3MyG97_N+y%4Z*wv&2iJvlx);3DvL<2uE}ihaw@mdD~^x_}Oq=gdWR)C+Ql z&GDVdxg_lZLz$t>VXw_>wntmNwD}i{$f;4&)t_0*U3IC*)9m5se)avuQABKitRkSA zCXLq~>}X6f<-QIlp=8S`xL51~+=cGgDIq_{(~HX3yd>*al?rV)1%YtD+;idvlSzfo zwWsCQRm0RJW=EnY3pG@lAmpC59hfUNvbR(;o2q18do`={fpUu4kQX?*lWv&I;Gqme5xk6jgnvib6F?yR5hQ8FVm?V>T+-S{ZRNHr zgrB2XX44c*moz?dCNUX1x254=R)410D#Rpf5j!!wqvK*R#onQ9>rn&U%3)!0y}USL zbXCeujd(Jqe2U(gyp|pYJMY!=5MPbO_B@`aJ(BTg@t@c_a2iMOk#4x3?`3N&%;#uV z&!DZT@(76DpP4QxIR&{(Sr==ppS9(Mgd09_8Pm9x)C_9!fdZ;MqFp1m&!Tp3zZ7Pv zS!~?p2kwfbJCjn)6VZP&meu#rwU%e&Cqu3cUq(g=oUB?Q)%exiu$JxovGgWCKTBVN z7?pr7*AFstRurs$;x&c3u=Cc}8$r$CJ9Wiwlb&bzH>JHQXn!{t|J-ZL_bgO8nH?C$QCzzUqL|qqltk)U$7G>l}$VHO^fF)7@)n#imR7c=;DIsFyTD)ko4y*mwrY z#YZjGsVq^HqLU@IswHn1V4i1(v3H=_TMPGmD!)_MwT*Z8Kc{1)Jbzhahg2^yIJxCi zr`dUkI`TT7Yhd!M;1%5XJw+ny>}c2GR(rg2mgprt?(RN36B~3yOPl9n^M3VAD4%7x zWUHko{~fW5%F`=;#=ON% z?0A)HYjA%ePXJxtphG#jP@`^O(#J;WweEYw7;A}Y?2KqTB+7Tc^qqTLKS5zBIa_D1 z4|RA~q+@-WGf=Qb5h7fpBv6YOrgU-dFsX%S7p%0Cc3W<(cj}W3lcbe3kf`AdR!efmL$AJfwo{KYQR8w14=i!Jo zoe*~m>$eJ@zn~l21Gm3=^tgK^RR#^v=0CE#c;RNYMgM5?{A7Ely*rr+b+H}UBLZKm z4lx&W9aeTd_RY6)nb$~9yjy3Re#gze5ACt}SE*~QNKl1f^;|X8Wi;*;`p9)9Di*!7 z+3J~kc_?%O3t)Jsy|@1{3PJNVxWPd0V%w@4q>gzm--0KDmRNUh&ZaeyGy}}%{%rph zsF8tq6HG+0`gO-5VG{BQi_b%hn#5=U^kBgE^Bx9wKmR0~J$MJgmDn(voWwJ{vi_^8 zAbU)k34A*fQwiYoup`TKMG{HzFofHGo(2KSF%&KNlKojt5$ycGfF$_@%%RUeG7CX@*8m1IF+mcLE*JS&)#aH2#T`s_A@1EI`1beR zTc04_*{8MFLxO|39zOf~)2Dbv=_v!H5IIl__o(#wX_23jV{M6R2G|p ziS`Rf*;6Pzr1t8w(E?7e-FB*k zXSPIym;B7lEx$b1a-Mq-%liOAFycN8YQ}<9BV@_<(@pOf=yZ&|O@aAJ|GuA}`R4}E zCT>5GMP_i@WM%PT-_$#U2)8la=m)@oF_rv&}SHy+-hJP=B)GH-5b#Q^arH39g zq~~~_MOayr;c&C*M*o8u%vb27*SD0ob_0T8BDH?wS^|tLEvJ5KTnIs3xN%-)ixFoN zUOfLtQC-YeiD}k>(tDGAfsjWh`?em$;41c8*rE1g)#{pR?P-X|3xqw+Db* zv~Av{%@27TTrU0uJir0IJMAFY(9rN1N+50U4b%{OgF@N8o9to0$G1VQ7~AgN1spcO zzEUJ*tn$Gew|6cD$0Yzd#?|p^O3nfcFChQ4l}L z{|dEo-4p|t*GWi_D}cv9gkPrOOuJqIZ&!UY>A%9bAIU!2mVw14qR<&(;AOmRlUHuA zgHBYJZEUtA>2sOOOD#o2m>s!~6+IeX)U;_@AV7{1!et%p4$%^&r+<~t=i_5KxJnT5 z)tKDIzWhTb@@=UOOC+dBV2<)_jB)D%(ndyMQqq%@57G!Bt_%hZKhr;4rMz6V7I^);%Aq-s;!D zK)gGI>P*0~1wE1qNUD0n9yV~kO8Usr)lW;$7P*$m)K|PaJTycN36yn-S$1$;z@@l) z3o7tsxBu2co%DT&-G)%U)@Me2JN~G8rO~A7CbYse{T+d5Zf!OFb2cXK%l75A0p){6 zQf+VPaMBLTIl8r2&tWmid_D(pc#&y1|^-{)a?C+2a0#tRZEZ`1%)C0r_`+3Zb7h?&H#APpkI6dLL4&61G` z$;mUa1T5~BcQ8if2a-)6HszOgcrH=vo;&nQskOr6U}7xDy2@@jN1BxTTS;N@T#0r+ z1;jIuG5}<_QV=phoaMRrz16cN;uSwbra2a9z`gH_VwM-)#%lQ6NJeF$Po$-100xVr z=y@dIupaO9Rz38u8|>hD*LNP11D<`B1D1EofC}KlF-8m^=Vn6Kuaz;dkuCTFUS;$l z_bGp>DVt?EueV=%VLP)?<7#>lp37_HqgRhD)H5wdaUX^=T zC@vC)4GrmjuRZFTTUz&sXvx6S@=!tkocTJpuZ~!zz$5?fo$KCIcXj+4$C*{V$~{VN_#4TrKa4$D^?|-$2xhr zcX{6Cwb^bRVqkw%(R4aV{w#7nXFy}q18pMa!m^dZ;norBTaDz|15&UY1CN~-=%y~( zGusvlArb2sX} z8)aF1r139$LHOb7uWr(V`~jm{?b?g+LcWj>`4wjtYx3G1P5ra)T~3UJ8fvdai~q~s zh&~;Qg{sKrDC_jw(&$D8+Pc2w(D8e)7AhI9&*Z;ZGpz|SR%sQw#hfzu6ewBQhNu^E z6vMi!PLkNvVk2G)dLD>b1(0P#Gyb<=Jm+1I#)wJIzS=}*I5i>=rbu;`5d4j5DnT*( z1x~1h7ToAHzNvp{^FVOyr0U}HS8csvVxbZ~ z^M+HmONL=%)o1VeR4R^4v$S5_f37yJ=T_8ve&UEP5}Es9^xwn0UIt=6XNOWGKFd?^ z3ZLd%Fq6co=R>>QHgrn?ZG`Agj=j^#?gGcszeL+35_j!C`hT-XK zTRfx*;tAi5^TiY^n>^l{ul0Ee?YMuJctSuNC5G}667~H3LEoF}Z(1v@&Diy(z0`g4 zxRcovE~=_HjsA9gX%mD@jZJt{z*j|jK48=uU%I4Y25SPKNlTxq&C6Hn)R7v2eE5F9 ze%$t`AVgnSOaX+<7)Q6Nwg_YTzT`$Kme;N-0=;TYxZ52Z5Z2B(6X%e7{kFhmia;bEW zLpBzhZErN%NzV!Nh~96T$mN;H1u1xdiVI>>_urav^k4G$AIH@{yWwr|26a2t5>cWn zyo=iE5KKFcFsR~#<#Bi_hi9aHQoL#-?A2iKt_vF0e;@Q}pv&Ngsuwc}OCQc>c%BaF zRFXutBcHW=&06qJNq_P_D*<@r`iTV8*kn7twsHa6fI~nr-gQ^{Ue~jIl7v`t|^C~aFP^7!77+u!e-*Nq&QJNL05BN*OG35d$VV(==|)6ta6IsG%7Q$6Kh*Q zL%J~u+t~9rLKLqqvp7``9ZnE z(jN9&*pR!Y-svMbw0%#l4prr8-&wKzC-c&X3-qYQTBzt{uZb$Osn*HhzJ8eVSv9^% ziy)BIJC6v9bfKUeOU%pVKiSFgY^!+^usH|dgBeVIb7f?BdV89tjuhVPHg z-tq5c^P=C2GYI7TC7q{~+kxKQZQ+fXJz)GS`I1^{@~~GSNp2%6do>3v#d8$I04-!J z?HLx#3uJ#xwAa>@a`N6jtT!E6aYBJFNp_Qc!!&egd~dr}xQIjY&7%=`?av09H-1Ji zt5&VhCvbON^}Z+j$_!des%LqRr{r>jy1HeO-ka$=>=M%+hTx5a|D zh@X1xjeNBpzpqkrHc)!#z#mb+w^SKr>ritr&^DF$J%}u8>hh?3C&qR!&^Qy4LCP=? zPC%UD?({v>UOgkht@!68%`oX>A)AcUoU;CPPUfkd)(n?s{%Y#H{Vol&IizZ;r5g5> zh*O5z=H&?T+vTcU%bH$t2SU{DDD-J|boKgS{LMsn;ZU8g!H)$@@|ji4@$}A*LM-Km zdxCqvE*3_G&-Pmz2t1h`BERdp0R6%1we>xWCGYhTrw%XGRp-5Nx7!-TxoxyNEOa}f z$RhIz`s%e#- zC7;y?%Ek|l>pstA(jQ%| znK3Pm7qQ(OX5+gveQSl)?ZCuw4_P!kZ``dHT1i`dI+!xFh%$$YpBIgHG04dH7jE|O zggP7`gFM?R9K|P8+<)+S9C|-Mu+#BrSwPM1D=S|Yd!7|Ge6bd`mN&VU+c~MNnn}!o zJ8Y>B81L43>bK*T4ffa<&W7K<(g_Ruf#Bx0cz<^5dg15>??QTxQgkYt<=cTPro}ao z$OFl^7BIISV^zqki}S-bwYaLCRo$g3r(tqn+2PJ$&dZ5!*`&d#xc0AXUcD+H5E*tb-Mn|)|7dJ zWivSw-aN@VvYFRU2Ais7m1II$$aOIFyjn4{zeUp}(Q%aj-czyrQEs`j!N>UGzO;>r zc2xb}s3r@d{!MgdNoBrOIcBu=uEVJBu|Fw%}(i$q)zIaMT5^8*9a>|~(>=KT zo40G%DwEo+NShxjd?`pgEf^C<-C7ns35sAa2$y*8kSsnxJe0&^FzVOq)2f43pSz7y z&7zt)pr>Kv=yS)A(J@KPC4)wUi+2g_rEMH}AXR-v7;h&bWA;feaicpvXs4r}Q-#Dh zSN_|r;JRd+SSDOX76!AJ@)fELs6wlL%?P#6pmAY^pFu=%^7Jd)R2D{P4%DuV_b9gE zU4Nuer($QPq9gwAFp;ZX{zywfU)21}uU_Hu&& zzzTIG)0SJz)^<~-zgD@0Zgtz7PjUHP?zm4FWV;4(gckoo4|)lqb4j(O6v7@~9=Z1+ zKciwFsW=1<=nWnZ)m|=~i0Me{q*U+ZRvXhy;5ll_9VMRj?G3Mn=ocOrdUYH(^O3NH z+*j}=t`se>vlW-;IV*o}y~zSCxC8YG743*z+-q_J0@1G$^sGR>{dASu*Dmc+E0>&& zahC=EY`!K6_(ec_q`j|6tZ&H^CN3HpE~e4tl7YwvYC3)f%5r^`H+h_tcx5yh#rW0V z0x8h7;e}3OxEf1QuT)nEITwE<+kCA~zaaZ1FSA~;0Nr0jp6(y4ZJ#G3T~$Hs|4L%> z=YDt+?lIlL`N`Bt+idt@1(nA}!zCB4e9Y{w^qF-_3tMz2Ebr`{)Ub31-FR9T<@+4PN@HzlQ-HFKj@*Vq6aP5aX98Jk`ay_W|}A)^eW zVC(2m_?9t)SsEtkQQr_gj02&h*bTK6d~ELce_aD=jRhOE;4 z{R8Aw$RC0ES}-Qxy~OdnJhO!X;#{{-1b2#m$lvsigCa;7OtHhG0-O4uV!e9#5)iBJ zR)T!#r|HT5fq_6=b^(NRoIgrfSy^5fT&uf&FBdz(uH&0O6smClemp*eQn?6)KuFzx zVcd16c$BpdNQF$Rs#}zH8LN^%1`obkyN4TI+wkI1T{P>cxpt?^uu|!0MT9CAr>UWQ z_3-lAowOWYeod8Zp1?BzgJH3-96WuBnl>zY0#W_S_ZTv1SAJfvM6MH}U$agK$xE%` zCfB*NIjmQbsz5s%+yd(I=e@l)SA;eU7Q}|VAjx5&Ubc%>?!fQ^=qSAUvbeiI2|&2; z<&_m>PJpPWevzZRw*9O;`Cy}a6aRUAammxd*l(KfG}5}x#c&oU=}%pKBa90X^%)PmEAo>|E zE#GHYLZtfK%-}%2fZSV|eu`I%8Spc_8Is-C1T07{e1L%16>)RgPZ`U!a)J>c8iYXA zsSjX1-VA?Gxp8*Jh@{|Cfii%tPGD83wAtdnY6%4Tb{4K6sZOL;H_h^A3 zWTn@kn56N?HJN4_t(EVjcS43WeMn!;WLeZYWIG-eTe~kuoPuky9s+EfVr6#$bVc^! zn>TOb1WIU(QYeY+NNp+1u^fpMDYUzt4xcFOyHO_mOXju6k98JYd)2CXzH?rONO8z= z{l$xMVUC5sYl|kQ;r#v`DwV1RlAy)8+iMw#t@$AkrE=XOx3Q_pl zIa0#2Q2$YcZY^(rHv&YdCnD@-az*IkKHNu`P8>3K6jm+Lj0%u3*uG7vuBc+((wzL< zg{bKlL>7&Y=fsgvH=9Bom)Zl+`-+oV#lnedWm|D7_IAZlOc6e9P*Mv;(kic- znZ-6Q7E-x>(w9!eHBRt)Q4flws44jV(7MiI+`tA8)gqPW*#`xU%gCSteFoMu+&In@ zctz{&1VNLQ+7J9j_M>B!A?}uBE?zW97K@?zG?r-6r&?ocOkejV1=WX~JX*|T?!?7a zi_o2Al;2OuGH*Q$d~;Gzx$^rvHn1Q%^M66AvT8|nOijzAQdMc`cRn`tC!ddD@KA^| zEx%^EyGz#j3VR|y{`XagWMT8rtC1ldOfq)`JX)bdrD zyncUQA30%40vBCYO-)7q#8bb-hZYwtq}cn}a9#chX1X4Zm6salSYg!jahoG0^Q-cD z(P_8=0pUKG96!^7czw09gFW0?z=}8#;R8lSz$-~{Sr55&C2cw%@&C2=o>5UfU7u)U z0!4zLqNElPP)RB|qa?{90+K;Qa?Y_)2_i{y&H_r7oTKENGcBpfnTDom=&8p4^W2%a z^R9R9x-%bUtvO%BQ>Uxy)Ty0!{kFQHKq+-4}DIOp~?*1Ew~bGI`gORq-com$xwuk%GNq*Zqx%Ci(fjU z=%$(?yXHU-!THC-wGN%V&&}+m^1@tEh7S7teSK09(`B->+@Z+#wV#8k>PO?~MLZs} zyDF{8KO#gJ&J;U_|LBFC@<{bMxKs!&@W(6&>;cZ>37nw~zlr3MZz(C+0C-BES|poT zSbX{V)xzZGcJhlWLSD)pVh-rSvk=s4ad)j4OFjQ5%0<#AYF#75wXQ?2!$&n{EhF>cXWC8vqyvR{J}S#3!|L-+rv6%`?tl27`d1#jM6)sqa)dIAz> z?-2m8PA4|F48*2ib8kC15uW^-l2YBVH|`d<_53$R6GT`w+nZ7o<*j!0n~$XVhtd*Q zHEkE{KX-{6na|j$wPIe@3ftD%+O4w=RyysO!>ntba!#F^XLI*= zV~@wK@m9-()LLoQt)?c_-7BlbY>qiWw`tnm=J&xi9aaeiwqR?c%!X8iM>Wp5t^7$U z?MNnF7j38Q(P?(ULA8L=eCuuYqbLWWa&yh&6Dx`@ec!)yPIfbYuE)oR{z}Wwmys)Zk>@y?tByW&RLr*`fi%3A5EplHa+=tT_LVyl{2Uyj`|6GT z3%RXlzU0PYeluakMj~Xh3=*v^KK_SQuA1F(e)VA*$gX5)Zd6A5l0cp7Ujc2*(aI$G zNmCE-Vj$s6r?;_2{cT)hnCDA*GselQ_vgf7Jc{wG&tQL``yHaMi3n z#T_7}Jib4AVPs*+sc0`IBosqWF&Y;pmzGyoDNB3I4GA1elSqzv-?b!7)k)DTs)qws zeTvI#Ze2znsK=6#r8)4^oU2Kk{FFhhAJ%DYZDmDPm>0{?aok5l9@`RU`2qspdK{L! z=~?*qa(8oIlyQy)@xCjX9?@cVHyB0|S2sNLYZ_D)$**cvuJrQ(P*_|BGr%tvgE&`Z zHS$)swn)K}Udl2UvSvcj@tP`-30@Ff1|78|We+_# zeqfGEfzbO3pq;*v_7oO>aAg7re9qfg&eao<#jYsyKGI`>uRYPwPd7I@o^kA_)36F) z4v;Z`bM@qrM`(!*15phbFn@$IIQeCU=)c7KrT%WbWh9lLA~bQ}5_tZw7;so&p|A(?HM~E7tO7_3BQ6E& znh^>>Re$*a%#gpY4gSSlxRigr`4y)tkcv5DaMa@;#yZYhjt@c6P|gf|&-|A!fE~2z z@qfDnkz;!P{5gmP0;L?_0?M?w-6RD-UlVhM0@UCA0L9E<7(P$=JRw zVln#fibtY)N=@^!(JY-oy}gH^?&nfZvn5pbto`J3eLTia55V2r{0B=d^hhEc8P6r6iC}3WPjBIPjukfB3N7nDbGnHv~k=m2BU? zFY)tnff2l1aQ!@BXa3+U-HHD9kkvnTz@sd ztZKNE`R70q`s;H9JC&I!?q= z_Aq=;?%Idqe72Un(vXIr%-7Ov(JYYeJDsvRE^}_L!;bt!myYdlV|nQUCWre2T>oD+ z|A3H-J5=alxB4=AF`kW@04wZ9r2(=CV0-wmRGegZzwPiF0p z=yheH73&U)$9f+ZBReL{#@H04zm9gwb4j@16W<)sEDb2b4h1h}Ct^#NbBAKkv3cv! z>p7nL(@7x~7rc^f>_@qsCL^in)EK=p;7Ilm&s}96cKLqJXpbF49}I&LP}yQHdvSaE zm>qt++{44oaIvWA z(;*|6ecx-h#&!5f$e5yu>S?oGJ!)AXP5dP$Q3O4rSYJ`H{yDn-$O?O^F!RaH6P*Li z3n001r(koc9He`a7t|hBb-Z7TPn&+V<+&dZpDwciDFPrRD;yjz6aDjz%+5C2N1GQj zM6tIvJ(CddwRh%pe1@;`QAij$TNw`)M+8u8K!!>4rH2vl9vwveP8gs`P3;%nv;gv zswR%yN&6w6m27e}WfpVJHv6s0jbLi!{oR_wc-!U2M-G{lPpk5)iU`#%Fjk(86JlND zDpR$G-E=9EBO_U&>s1xd*HI+ZD}qQ7_=&ttR+xmJL<@Tl`k=}|Wb*Fq!*+vuKAKW{ zlTWp4OCoQOwJS6Zezcly?Lv>+#Nb*fKi&5melmZSv`-X9wPm~2Iqwg8e+$pL>t~>) zp`j5m?Xujf7TJI7R6ms=CoLzJo1cF+yAv6Q~h>FDgxZM=pM`_Wsl zo!*fE(mG^oJj~w7=xkm{9lw6eWRSqkD4<#R{nemH;`Fy?_otfNuE^&Hk_3H$u{2Dv$%#u3kq7lZNj2*MPrQZVm_nXWewqkxysJs91Vl`VwvnHE(&gIz! zLWoc~z1hktiAV1xe0+5CH%kcRo!`8Kfg*X|`^(Z`MaZ7B?j9FVr( z05=e}Wj6&os@4Xl69L@*OAXw_VqAd##LJ7$Njuk4O)4w%w-!-&GlET)xR_h}iGbU7 zHvQ|d58??h?6_Z)*=b^84+UkO{_an^0v|}SPtF2L+ zVIS02W-br&ug;(N%{cj>*IpD=ZoJh;h`8H!iO5_&X5hNdu*|W)L;`GTG%0Hf5}-cc0A1t1%$QnM2C&k=dN%@fV9$Vu%&j^stK-+_Qif;Oa#s)mWj%PA;~#G%q*2 zj98X*aBz9WzGMlnAEPpn#FaM&$(HN5-}PSN#VvyPN-oDH!v6T67|Df%3*h&uXdL7_6LHi1K*yXP@Kbs?zQF%e!(f>K$dq< zd6{^7T_t#_a~cN$V@&Jkvi26-%ycgggDM?FC;gO67JTnBxi zE`nXBGc^2$=lrC3gVBBZbSf${Tyi)>1ZSJPzH%tMzPkGJ=g+_Z*)%AC`dyD`l`wh7 zruC!7{n!>O&i@=o5kny7)$3~2S%PkCn)d}6&Xh5#I{=&ZkAzHd8YdeC+ZzHKm+>nv zaoxs50ax~Hx;R8gNQj7tOJ83y{V6~1TV877tf4J?{tAtokOsTP#>b`n;(4Rq-ribu zEFiTLTq}tRSlljbNCpHKlUwI$bSm;?YaM@P#IWpbRf#1)vu)y}%#&%MB8D`8Bk<<^j1gXn#s!z;OGkFzE)u?KfSLyRwOWxf6Gmgp@KK^jo<_hcCVBEm9(i21Ez6PIX8OU-|5NW-YMqJ3!LC-fa5H#N~QUW zMJ5o)BMxwjv;oX``la`|F$ogYS>A%1=hvT$U|s&XaN*EDj9mbRI}+IKS6;;lX3UY} z+T23`*~a&L01*+e{v2L|ivSt{_az{3+?N2@*f=2WZc@`y#9#(M_5^b{0s~gm@W|}` z%NO9_+|=X*WtF)e~7qPVUC zadF4^q17kxQvgH^Y#%&%la0wqjY=GlF60Rp7)Wbi_)WoUX<#+uK}5XhT2F9I#m6l2rkPwpa;Ob%*W#I$yJaM1jh{bQ#Sqo-#$ay`Rt%v^P*b@+(d?MUR5wt5|>vx>LG;wQoO zJV2}H)mB&4ms`6UYAq5<#5a_7-&PlOeNsCPxOcyzosQ=X>k>;wv?yWi)Pc+({Zafn zR#xZwFZs!mp6^7b?n#1z;Vwpq#MmREZ2`CwKl_Zdmv8NhsiNuQt844zR6J3>$-#)3 z!)JIYZuSvj<)Ja#dMo;M`H1WF63idY30XrNL`RO64e!(E)ihDe+hP8>%O3 zN!z#?XI;OOr{S&83XFwny93T#l?)-OVR8|z8={%m6@<9)vID7`)=If0%xH|p5MF-C&W$oG9ai!>IU4bbH)pD5K-LaQH0yDWs%J_5lQ9&xc2OC`nw1r$?v*JRA3j zK_?m1A1;bAvj>1ZM-Ezbh|BQq?R^5yG#j!M{Q|@{DzDmvXrPdNi3F1qz@LR|l-3Yj zfQU{H((4sO3t}uyO}|3)w(kM7RM8{Sl#fmw{g4f!?|{Hp6mZL`LDCfo*ny%wxHHZQ zUf9EeWVpo`;(C7oyoaLz9_4tQ1$Bej5M)E=G2j6k9hZ#tqIoy)!Sqw;f8yX=A&}pq zfNsHc@AieiexYBaDY$J6`Qr2UNQWrPrE^XVc}E8XJ-A2-@y?wyUT+Eh@{Qjw{%;rm zcP;+2eX+q!M1(XkS-kO_|Eaf|8vF=gH4_Rda!$URRg9?S0D-mC1Ot{D#**sXfy(hp3B25Xq`?>VLl zV=>Djit_TZ4@|)bi#=>$<8ucE5dnYk$p#1S1+Vc3>-&nHd%9d)DnUU(|LVdiJNt28 zZ*NCOM-b%Rl@7G~LJ*Ikp`n_ZnmA+z&^^R!CO6kyTYqkc08*t+h*27u27j2~wsq4pxVlfTd72I6Pc3qZuN&H?ER%TS_}itpF1kxRIIJIyt!p zszUAz^}mARi7tQ7$S^WAEXOQ<|Ni{}8JD)(%rc#rWKSIO-5ml#cn`PVk8Cf>-ZVsHQIoJGuX)cpCrka%*cVfnNEZ z&TTMV7P{NR!*6^(c6I{3<;pqse<-B~9DwOVycA@mr8~OT!((F;LqlVu%9b-DeSOhY zRpJ&F4iYVy1bRF-&Y2%SGZRy}72Jc{;xUm5&*DsLtFN(QWL#X7+@g;UeOKq`$nYCU z$c)1IYOF+TY)q4;s1@i?A}`SekBzGOeFW=#c1rmAb=sOK5#@?yJ~(gyffRbs3Hc=# z6*(x8+*B1{Vq(8^K#<~g^_+=Lg@%OR??d|QkIkMtHTI1f`-MOIQ zU&BO2&5ng#meniwGVws9Bya>rZcwTfCAwOTaci+_Q8|CYho*jSxrQX7kCB#$w05-jM!HgiFE3rzBr+Y_tB%iT$* zod<26ZbQF+9d}%&K3bZhbw6B+>T;TPnsVqEh?O9>iWfFQYl|e=+0e0Zik!4?B zABplJROC2w0UpmB*ahYF+#4B_r#_zDP0b!g zGwLNQ<+W?5xJup{(vy6PAN}@$s#G@sTBR<|1;njrMn;$gZ_>L8_c+csy zwp>uT;4`1QJ2s14C#3gElKSVnEfLas>LGsTv?(UpPIUJJtc{kZ z&bT9tAO-&~#lCx0_vb9$imhgAJ-jvfbZIe~_;w#^f`~_vSwURFf{{7#u$am-0=Bu# zD2M4p`Oh6qUOvL2K3>jX$T$*oX{_+qtvi`u_q&@M@7k9`p}=ptx7_P_#(0@>Mfx@R zV3i!OPfZh3)5)zoDO#6}Y?T0d$n3W7^}D4**ycXyt2dmsdT)x}Hx3S3xSQ#D&W-<) zxM&*P8?S~50aXHtA5!uFT0IVP*^hD@U`Tc{6bmcv!?Ed?($W+E=F{k2#SM_u3F!Au zWHei%T9y4t_$~GrbxdD6S%$1pT_NX%mB!cf-~m9eAO9Qm%xlxw_y>@B0j?E=SM|mI zk*yGjxsMAuc4v(rz0ZwrDFC$V?`t{2S z{!xj9f;%YmOD@J|8wfuJioJHMh9bU;9r>&d;A9ps363hKBE znBUKzCO04(mz!jDoaX`{j^4Oc7AVNf@WS{F9LFwUXJ9a_9(tpy%E`?w2`Qu?V0W1d zAKO$Ijiq>{w~bS<8+vncWX-4Fj#fKi2_Um$O##~K>Oa9pbBs7wir&vujQ}kwHg*Eo zK#GQjOW!jy^K|POFN{COjj)mJLx`QN$EJYaW}%PR3D_NPGz80b^*Uw(2D(u=N~q=g z5eWFfK?e}yig`KA4a5gz$1^lCQu);r`!kF>5fPDv?n&9x05j3%6CJT;V)v^uGReXo z_kqzMBrh+YSjolrEiR7RaibAvRq@=Bl92v=B?GIXQVbvfdA9fZ;|eEZ5WC-re2~^b>Pq zMD5&BJ>q9vd4 z_;Fa6j_SO#v;53f9;8VLt&MyTx8UBI$1Y139OKRx{yUdY`BX}IlJk0~!j~&4ZW~%s zTbLFeNEsvUtL4kke%rQ}aug(KpzW2tRXBtr(-eb5kwpcQ8+Z*T?ZmZJE;N_Q5IFi? zdDfABkO_>~gZIL3FIS!KG41X-e#rJkon9}t^KIa0kC?h#p2V=X`3Z6$SB=v4fmq;V zIBE2#m<%X4^?&`HU9#gwn;0kQmPi!o`^IZKmaQm<-9%ri_lHp9f z{;U7ks)aI&;U>V=QeD>K{JU6Klti6tZ$?VWy?^dJWG~pj z{AT+LZ2Nzb1speH-Atk&xcj}#fUOQio_sPLO}}DNcUWq6as=%!(8cBy)Uizl_$2O( z6zGIUMLD+9`N_u}{3L+rv6sOHBJqPNvo~V`4}_TlvGUtBzivRD%7#E3%e&aB?~Bws z*;Zs`epu=>>=QnD@8RJwe9M=Z<}5TM!To4Pxq0Vlo4fH`6HiyCO!H34^Uv5NU7S7T zvI=mc-8Lh?90eF9xnQW^D91Y$+jZ6HwQrr1*tM%rQJS8rDk=^qo63O49P0UP!Q^jd zJn*BUG-G}oov(HB*1$l1_|_o}Z>rU{7+k~M%+&PIlb#J;XmVCnv>eXkb4kR$|E`J2 zgqh4)Ro#XU!M!WMsdM5ZiCN2GXVom@y-snPm`3C*hEB{^KG9Wb_?9bj?N$`@N>Nc! zFR#HnS6B3YAC>{bZ#g|zSy`zle7u52uHT=PLUhO8^1Pq6(uj{G^~BB1*<w%9}({Rx#^wW|rN3+uAyH zd~5urrKLR6JIGO8F@NHmh?=3d+72V-S4i08h_Q1dM=Wo5S}T`zI9(6U{KenR){KFi zK`fYBaj{+9$qW>`$OPA{c65l@_)V^eZon7jHI&((>ItQnN_Ih1>N8nQSI~Xmr_fEH zmDI6rY!ege>sXBhNs|5jq^*64C$4uy^csYh6YLuQG>R1$7mwv>o@^8=Vota1V5nwI zWo3BvpVuxf$MQTLcKs=h(35fXbji)=m&3j;IMdx{iQ48jDqMlTw8B~CIehJMBka)+om2KT>;DK8{h?%#@7~Ku+?Ka ziKsehT~|I9_to8FFTs6UypYHHu_tAAgAN{reKsi!)8 zy&f^Q)hn&(BttaD47I%t!%qEJ zVqdRVP#|ynU$e!fsl@z&V=2$lPuZNs<$B%YwO8liF-kRaSOS<7Nb(zI&q=iH~r6VrgI1AO%GM zO8cfy`KMI_NsL)?&BdZ;Cu(E)nri$8Ba>}mgnVoLk0#VlHKX~~w|P`m*-hNorKk^T z=N%LaSdV4(8%@#y+~Hw7oVCC`Yx7b(^Q_J=@Vx;2ufW1f}_+2r%F7-KVH$ctD_Nd|FkwOyYxc`$T^Km_< zi;r2AC0U@{OyN5b(Ju!ij`22^O}nm#ytrMnk|s@8>?;W$2s}k2vE4>ztQ*Gy+coJw zj1PP$JZpfOcnNJiMCV6++t#tdWcbHZIsxBL^`56yvh1}iLP85kZkeiTYKe}MvCBzr zHtj{Jo06IfH6)2gxUjDUKdl6G3Dsve#m!O1PJWw;^N=95o1 zqyW|Fq6cAb-n^+f7~E${c%t9rt&ByrxxrnG=62hXfgseq_K4esA$&2@C!g~0tuy7c zOs8I+_mekm9(xR@m@_lormMk9t?2 zQ%N`At4ktuu)~y$vD2UX=6EDmtvTuVY3DZq$w8)kd|D#ei~VgFY;0Ks8)-6>1db^; zacmw=VRI}zg5$`KFPoT{%$Y#fFiaxHvD+R6&9VyRCsH?`IaQNGJyEEgT<4Y4ljUxg z(-;Hcn~r}-V5r1kM$4RZdEupqkR=2{0%$mT8|}=>${e#A?wTHABVU^K+X5>vBQCl< z9c+tsVaKQu9w;oJRz9UJg4{BQu(;oU7g9#a{~9dCWCGRBGJ=*i4P7^F=n+(`HJ z5IopLqdQ4|Qsh-+rKa8w6hRbXS#^%&EDQ8K_DF!eM#SZ=zFRGIn@|07TOjJaPC@AE z>O=uGpg!Z1TtzyL7v5k>c1N!aoG@8|A_XKqoQq9+dp*S; zYKz{r6uqKqMx_VyGh!$`xh*E|6n%JEPNyze&2n>@kgdZ0aAWMn+rYT+-9?Fj*}A1D zDzOP_etVRk2xegMy_oOy>VrW=HXV$@!_+>Zqv6%8WUhC=+ZW}dwGU(IgLxkhFKSvI zJHDL)Y%#@QPCvh&r}?0K=5Xkn00o;n$8~QswI$`#w1>>=wRR2oM3mFO7SmSCVk6e{!p{Zem6Zt z_|BTO?Y`I%3^j+}B>HfM!>G<3H3ubVhGPEMu-Bo=`RqQZsHzGghYjWc|D%6ot{`8$ z#=2#UK^ZiWFZeUjUR6v2+t+imR1G)@#s*sJP7gmlnb7y6xm%iWL=(5VF~I?noBWuY+ad(`ZAck1n% zYM8jc_({BD(^cs46gY0Ix z^27u`5M7?z{ZW9k&#TVQr)m;y*F9HWHe2!w6LdKMrlWJL;2^)7T^drJ(4L^GQj13N zSWUkbt}ilG7c)>XHQldXikmF8Vy&ySU&wJl#z*C$l?@EE6%JE=RNj^dArAek)=VjR1IW>&mUWVrC)IOd*m=74*-`@wW`_D=gt25Q7-{Xf9^faqnq+U37cXwmX zj6MW>}H0g;9+3AUG*m}R#Pe}B3D-D+Cm2t zmYOzGS>bs68(njApi)<)WErm&k4p#x14AB(&B_?vCyJXJR9rASZRsyF9lPtJd38plK*& z(^5_cU(nQY7vFE!U;MuK9FVfl>^IBS$%R`h4kzQAO) zZc&K~NFN~zkrsdc21azkAt1nHx@}{A6!LJ|0C=q2FWg9K(64@BP2y2+m_@|9`dztM zas7n`^kZ-P>vB>)Eh`BOiRTSM5Dop9>> zpRAfX80%qo|G-QiSx|qWEQG=Ogn(!v)0U0M+SRS7f+rTsLl%BYUYd zt86}4_V(9I&k;t;X=|d#td-lB?%wsVwez*GanfJUPM@zr?`4+w%HOh*g#5aZ^6^8e z5rXgIi3$z0IYov#@i6{%cxP?G5hZVeUAjhc?jZjNp(BU9EG(4eAfo^>?&SoOqlaRgr1q)2+v(KIy> z#i%AMAaJr6F5(C@$r3?}*;B?{u!hy!o=4Z(vl472*M$H+C#U;;viXfdeR@X4vuO}0 ztOZ+n&GD@UYU9DpogHygr^NdGM6+O^GVTO=oFZe*#`66q-KeKd>90Z6ye$N`Yh>9f z{tP~u1~EEeGk=Yw2S7T$F&@ox3T2tGIC6Y=GS~N>Dt`J|-6MBB4%1;zIQERlD0#-S z>G8av8owv-s*=$KgRyE&cqwwOa z$5DK=Kz5O8 zI`_@DY?}-1eW4G&W>SH?vi}GrEt}~!^T2w+jN!ug}(yZ;jnVw9e#W9^$5-6ajG|}QCS%o zOG``T+|_j+CsK*8)YPDz&g%uAuMiPeTCaCx${jy1A(WAoZK`4g*sCt3Ujd(OgJS0j zr<#caH4b0z-dYlzn^)IPcw;Lk5uz~bO7SN$%NbAraVwh zaehW)9ZbozjxYBv`u|v}0qT_}i=bUoZzUp*syW8O%EURTX1}+ILH2g3r{#@OEsgJ+ zmgY3N>guu7(5BOhfzzQuFUaiP1D{*))zlomKq1PB){*roLJAULO{EHaq54 z;?^XUR(DL~qWS^*HM^zbse0_iv|bbAm)|oCnf%1k``UL@?u$}b6B+9XywD|7VZPJ| zoD3lz=I?;JAutf}O27lH`vN7fQAqE0v_;OZb`X+7WdDG(6qtxS!1$rFmrM*#oMEoX zl40W>9&9FoLPzN)dnZ-Bt*LGG_dZ?xd}Z?lIK`+Pnu-hq+CoGaD>1;Ik*AoPUk|Y# zw$0lN3qwZhdK$j{m6kR@p|!JHQgV>T{&H~bco|EUDY%?KC{{-7b`r?J2r>#DSWyC< zTbe16vS`C3>s0pTGWd|??~jR+uX$s)iu+O)Gww{*c3OW))tAz??JxwkCCLp;H%A|l zL0IfFkgmE>+aKB%BryL?j5wZq^XHG_-&6Iz##FTH)6+Hm{P-kn?z=6^Q*73M8a!Tn zoGDDrweTR;an?tB;hlJ^H@W&U1Ok`Jcpo2MZPT8>BshAfL#T9?SB@wb+T>^9j zSvbjt_XQ86AHfa=Xijc#7oHg<*f@??y|-4pMk6R9f(42)NRt=wrQyXwsY&1@j@q=9t*o*##@wsO{WQg<0tgP9+`s z?&BSE1u4iWc94q;jZ3R4kM`|DDi=TFr&1};t4lquH7tlC_bx8J5=8B4GwhDAa&~6yg`K>;Lm9T6YqLE6nJnko(mpf#c?OW$ttP0-#0^ZC5c!`OD zhQ{QOqKM<1Pk2)&W=*Z!!XRG+Gq)82!|YL6qCC~r?aJJCTUMo@9vH{%^|KS$(N9H> z!&WM*t3EvD3VZJeY-0G4holkpsFoZu|KBw(#W;=ELXMhy4(AUe{Q{1jZAU~#g7QW5 zsh63oG-^(3QNv1gtz zr6%~cB-!;!03Mh3#Lf9_vg_KfMR~f&(a}*I7yyGyKkgShV%HePY@g_Ox=1=YIy&d} ziHN{f2V3efOBQ()d?vMzZDN==j#;-J3R;7E*aU~sW9ZpV2N1S6E!{7#Vl@-$qe9f@ z?a1RYnyc1K(~~5`Jc+P0agq%Ph{wk28}D}b)p3N4d0848;}~`A(dzsC7pyZ z01KAT6TNB#e#IevIO+nt3L)f-31qaLotB9L( zM%9;n6m^?`N9)~0S$SHzyys#l4I#*I6>15KJQCOb&aG5szw{YD_{{yLM_tXkU2xa8 zC?TH1UAcvd@HRHhy1&DvR?>W&(`jH2aa0wchOxwksu9mF(~oeis};c5Sh?tVjNa-u zcHCWck)m}sm};T5=|}d}b63u|0WZY>V1_oHTQPf`PG!}u8C1H!9li4Hv>vEg(gri%!jty1M**J0Pz7K4`oy5}v#PSX+Et-0jDU ziyg_Z<;2UdlPS9a+SN~l!m~MQ1=U+>RnA5Od_S`~zf zgc?&%V0JBQQruDXPFL)el{>F4z-E-ZX0HO>d}y$UTdjshLSRQ;P(Aj9lXG~OCqhc# zhuUHPq&P56N0j^&)O8OB2UU(FAlTfRnxcJjfs2&mLl#E|eU1QmyjRrnzs>$NEA zd4`v&TkaP6Zhi;^J(SX0sqMP`bUct5Ae4mi>s(_P2+on;7+>Xmu3>69m!gb)nh+Z~ zk@d?4UjZC0h=vgD$9gs~WO7hG2Sg6!L z3`RS~>C_mKM*EPJwb<$mFR$Km8Z(L}>Ltc=jFh#;g_t1y>H_vxga0?gvHn-)Vq#!m mrdX`_94|;{gzohgU=dYty^1I;INKilZ8Itj^}P4fTFzI8~wB3GW6lIQxXrc+g> zQ?{4WR5bz zhP69!SlBA`!IYaECs^n4F7)&2kHTkayD?bz=ScFsM@f$ThPi@)LGXt+8&jF~nIuoX zzpos6!~R5f_nTzi!Ttd_7|Re;-3E%#2znf7wh01NS*GGmGT-h0`$YHjJMbJeF>x!= zCdBHRDDxZoB(9O4cSVR@UA8+A{u(R%>wGn&4mNelZcpmh z(fwew-9u7B0s{bGxgr5;^P0|A^62jG@9*~SHvxHj-v*DcOv6-#Tc1`&M9X1-^{*m|`m{7H7-`qb5cHYTl$*Lg`ft>V)I`$yzPUM@D6{ir z3;j(DqnNbhN3Ph3>Y108AXF4`^lLftJ~G}7L(rEaeB*|3j~?t;7JeNzaDN7?H12)L z$uAQJl>cCAsxH+P+S%E;GrX0OqHBTEx6^G?rT0PfIM{67FF7#HEbwJduPYUdHGGji z)-6JDEs?}-fm)KeNNCelgeADU&q$|rVqqT3*60?h$WI;irolxdOonOK=W4T0d85=J zNLZKOoS%BM)1P6B01O7(EG3?HDJP-s;X(p`@rk06nd41N#8#97`eFztMtb<6Clj2B zU?f-a1;cMD%0RQkk`FbA^F%k-$yzL%VP2|d{+2ergl(JV1)#8f7y7g@H$f5n+ z<-IZAU#)-tjy3>KBY{6#yMhUQoxZNWqNAizNXrRvK9Qjyu+0~rKKrz!c5lkaO3>4r zmY6M|TE3f`G2lWqRSD$J)fq913h#H^oGR6Z~K z6@^Q~gbz=0vrg>*Zdd^IssDiZQg0}1w>&weo&9^Sje)TN26BuQe~_=vtZKyv4z&Cp zCOA(Dl&0yDJ#U`q#Sh91{`#uix7V&{5gJk)jzhf?)At7{zR=e%T|O|mU>h@G5y|t6 z9QX3_5@a`E61z4@MNJK&``X1OGysopR2a#XzT(lP_7ZZU-(oGlJGX?Y#6CCW?^&pq z-FoF2sl8r12b+4&(9|X(U|2&5Il(tf8jB>(z`h@dG7hOO+wQR?i2i9u;2lBx=YDV zrCOVHH6TaSg4Ek=fYw3aI$g#YK^91K<^&4P*YwkPNk%k}Q=}!v7 zn~i*+qt}$9nM_`|_@h0tHthT_lx&3Q&BsytAE6!>q%tx=_c&t_;lF=9t=!9NZoWTW z%t(i!@7^f`nDW`XO*|N_41ssQ*e&>|c@p>c8ZuwSi}#?Wb$<%F1(kwTJ>)cCF8nHBI;&* zNyeVZX)fJc7vEGhY3c>2Z&bi>xA0*{DT#FsmYvXl|IY63Z+Lbea|3NzZEbErKk}!v zYAKb8f6qRq-9&C+YCmra?|ujM_wQe9?3XKe`c;fs#fL3YM*ZF#ZpInEKYf%52n=FG z-7|h-k3)|*3#ZoBs`;>8-`-|JKHAdyEcss(MkS9ih>4|nW2LsU5e0s>mCuHYuz57z!#O>u(gP7jfMF!w#&gXh_Ge4hoT6mLqQ#(b_5b)nS zv}68*%m^kik&-W8IER`~&N`n;U`t2(x$-xFAgRKL^s~;g_HzS!7{J}}g$7{7Tk7h^ z38^Q%<%@xbnXxB4Z}?hcA*y$kMv$wskI;!0b2o0l`JauT`Ep%KMH@1CxAVWn zr9w@UoN6OwEMsaq5&*Q@!ch8Y^7Ce{)N$=$Zd+F7*&uB`cXPJ$!NGy`b@F|eId=5< zbV5Rs6A1y&U{|9DJ#ie2jNRjDB_B!6Lj);_O?au^zU{QB3q~a^xJO8MV78KzMY!jo z{aiw3rlxJk!*(TTYDM{KJLZG4Y8b)dR6dH=b#Q`pEt_eWH|j7NcRamJtBw;{QgO*$Tf6Fa zU-r0kxEB`*T-qepL&FtJtzotYqoQ@K$RQe#_BeS_`)5VPjyhXiU0uI5ydt$w`}jNs zriw;0uJU{-pq9S6^Fu>hG92sxPq9CZt(B`>5JMxFcFZ}HQ-$Ay1c8ZW#@Ao=V}KtT zhp3p%>LrZ{saX0lg~N_?(9(pW9*i{+3+13FiMa2Wa~b!7!ynBr!+(gZ_69ZmSQu`h zD+F<9vOZcCYTwq=Gu)0wa(KrmduApfz53mzEzFqBq^y4*+&)?-E5jYy`@_={QvdgF zl#*Spr>Ez-%XD4FxO$q%O_^VL$5IIyw*Ty`KuWy{N=?IWcLd(q`A;cD@Op3uNgp6C z#5qdO@eai9bgJadqs5g`?t!_s=*>Mx?FROj!d-ly3_ z#mRHk1ZBwe-5vyB!2hYinV6nfkUzJtx$WW7npR8u{dXGwFWY?Sab*kU!vX&^g3~Db z_#5!W#eMsvD9F+EIXSQF|BxlvtyM>7PD@KCY=B_E#*v7KQRodFn7gc5H-Gwo$5FPR zw(;&~9^>Q)<+{|J?1=eyarp&Fe<8nztmEqgDIy}@`TP6qn5HG1mdzb;5&p$5^SK(< z(0DE`cFqtTYS-HWCq3f`9p~-X@to|g-XF$F^1B1Q(dFgz zBEDUA)V{$V+8ZrQOh$et8TW?UH7-+4C-!(yi^{X2^0BWtfOX5Dz~^-Nen}UdYoRsb zDfTa3>43Up2J054`h-0_`zs+h_A747`U~ZE==-x;9p8+=K@(~w-Xt%Ext`xWGvNhC z!yiMq-RQ$WHifLTYgCy85NtHs}}en;V&>%+iXz6XPvwnPg3}hFhF<+$eMM? zrUil252D@zrcDxVYK>3P&+`6(UH0-O{r)*Jcil5@Ze@Mck1Z}n!Gt17qEr%T91xZ+ zud5@3f1^p!@eqqDE~cja)vPSE>LXq^w(X1JM>Q$;Wz$3yeHy5gjLH4>e*a)lKtmPm z9U$0cT%{D6NlD6=P95-HwRz#UB*zd-t9u7UV^*ZnfRYx;(5$6z#PVMO(k)7I@L+9n zSk-WAbPkXTgjC>)bA!X-1qJ5#1OzeL4l**Vr|(?c>QodYQ_!(ymzn7vS*F);wGg1p z?$vVyAnY0y`Q}H0yTfn4YDS5FTJGQH=H`BcIgTPr#>vQn0=V%AUfrEGV+4g1Dw7`6C3)VNc@^=ibrgz3WiBR08Ra|J%%1*fOT+f z)zhTUBU-S->S5z@owOjhZ6jJF7e-HrL3A%JEy?6SaAdnt5B?0Wx`U=0IXOHJd+mco z`*EKr(k=Ao-5}SLdcCk!fKmjP#~05QyhWrCX>tG%~u&rq5787eIj#(4}_PCX9`PfE&HPv5Va%75rlwtJXqyd2u@>S74r zG&Lo6OyKf<2*It&LA9@A96nh&A(LyRalzd%Ej>R>aKB?}=;cric=HK5nv_ks!XPbZ z^#h5VX!)+iynCsp$!qGZ=--37i+>E^hyR`dyZ>l#0)d;&+KQbfA%GL1x883C7gb=D z&oa(zJw8UokYI4K!_UUo{CC3(*cjZOczJts$z~}n&soc=%}gPiyj0uqZPn~3B0|Fe z2?WVv7=30Y`R8nU zJ(l?ItbnIx?2B2jSZRM0eM?Wtjnq1RH0QI?@~?a^WWH2ttp#J)GOAyt#3I(K?j*LL zGhV<&)cI;0I0Li0ZP~qXn|rg2A00ma0o6`VABMd5Hs|c~Dd!$Dc~O~PnP?DE#&EfrCLh-tt#Xp?;GEf=L9O*;^z6TLpjW}7yLO{+p}(%l3J)5@mb^F zDdn6L><2QXUTyn-b0)To#V1hJ&2MX4Gcg#^%Ij~Tif#T{JLqQ|plJW^9jk=x6bu)M z%S~l|`c`dy;z8B&xve~Yi4~LOk&w7Ryzvz0N&X_U>CE4Zx;b=_cpEX_4SiDS%pXH1 z#&CKH8#_GB+=$$bR2>L)0XBut@GhHseqp}Mmp6WhI(QFC^AZL0>rS$|)l|LK zGJY%rvoC0RECwc6&4wme6*;N1r<&YzhbAbi#D$F`>Uc!1*LrDzv745>R`UBU<+#h? z@Zgq0z_-8Io}ZSyWjew>k-a&(pL6+Pq?*6PFvnXV7F*3PkS5D&1K@wl5G$g}8o#1- z?onXTl?|9@<-Y?erXbbQ&156uo{f?xC)rr2>iopE0W9zIr{LQO4EU5(t&DgH96v2x?k- zawpLY8cRVr^=>e^ztTX+zDllKcN_=%b|`!BDCMOwd*)mQ%kGiaBU7!V85y& zVEDt;@A2Y${?1^-}b1#dB^YoSur(nkS3RqDi(C zCZBkOG*fV;QyBT77|9$|e$|VCj~2A;ifK&hW`>oUQnKapTM=l6n%qP?Jgr$w1cMBGw1# zgU8`hR<8N%&>q>}j2pe)4pQc*JhC!ni9)NszOPXsCCiQsPSs-Eg1tO^dD8)XvPF~t z0XIbriX;yci`asxaC%~;6VWWWLlf!gztY$v{TY|G%Aa@C-9+uVY;Y}s{~S|LMD)evQPpb{TrNl(-vIOBDx4iU|G93tBz!U+c%Np| z0*9gZV2bUr5%|ux?`g{q4kamUaPLJ#b~PwvRPEXOmq1Krr}_-TD!FVooJnW$S0k764?f8nGQ)e*biasE6m=4<@oBcGsx@odZ*gvp zp!Xmq(tpMX%Z1@xe4=*(IdsG&@VB$RP}kW3rJehW3!LY`t?3;@HQUXeudasmLaLh zeoEy^ckbuzKw+DffO((vYybDvFFf)8OOa6(RW>~~NPa}-Rm`1xeBlLX3XZ_M+_D6H)jyAAbCfW0qG`LeN^)y+&y2pQy@{{6`JVY|;u zxP90aYVXaSURhaLTnrJ|U$W+_8iabN%paSVAOFUoCQ#C(;1?IA9zE<8j1b&<%f@Uh z@1pz47RWfNQ<$er3W9}Ao3%8X+pzNU>sOE1Di0HDM+&mEaVEl z&w>v}xL(XTu=7m-ZT!MITS@JMQGX;y5-6;qEdrmYWZy-$+)I?s=LPj>^e8&b{nqz( z(HsEK1f#B}5$0chQ(?UCb`l;><1nxLllHuV0;tev6%;ZvKmUk>6g4&JK#QX!kRG$e z>TD|ME%3ETIQ>~W2Hnp9d#Wp~X^>>Ll9G@BpO7YsWZ176k2G*wG{q&P_1KD-cf=(K z-l!GE-7@gWtY2RX7IJV(4M|84;wGUGHF2OaDsVM5-Ps*o+zK8W6-O>Wk?z&LK0cvg z3i;bXbSl9_u%AMw4O_SN?E>0sF2x*L3{Jhpm^Zi=Ln$TLJz)jU2nnKj#9_BKMSfON zW4GsY?Rp}-nadcBoADiSO}zumu>LRwS2pT^2ppd<=yzo^Rctc38AUDORdG7s4oUI} zWS9c0$<#p->_^x|WX==XF;DGRT6P+gh1etSB}UG#O&%`X!82;`)+V9V<={YU>*5_1 z@C9VrSkKw^yp^c;W?%-6zT`&(oRj7=3?^WLhSnMeA2$ApS3o`$Os9JzgPnK8`x48z zhGZEKc4C;&3@`NU9w@>LaoY^777XSWU{7DsZ*WUPbjl{cZ!P?;ETUUf!s@3h2*sl3 zk$oI-n)$fD{2OJ7goqvK3%{^P&G;Z@CLcvXUAd=Bu?-dcaGpZN zJLOw!FM5+2Hf^K6wm}9A0{n=IRV*wl994{Wf-`(B=fRkVtJ77Yzjcvg3a6*1^eQ0! zT#Vime_$22m-$}q-_H*0r69)Wfq8cqBkC1dnsw1Oy4SCN$Hqd7K5tRYu~0>T#f3^k z1_Ui;z($ljtb%(1>KfO^`dV?>75DB1%i}&dkk@+)lkq*nzN8vRL&r{bzI5idUw^UW zON03JYf39mc0Y3h0_(F_j-@q0yQdAGxC^yHTkC;{?2rKv#C zvk(A1z2{jPwaw(4YA5?bUxKmq z$>~x5dmkHrOOohceC43xtVtklo>Of<-J4t9C8Y(MPS{ov;%A6usu(@Cu8c=cQ?)+ z=>0b;w0?LrU6JOvm*)Pqdj(LX6)u}5CMIUr;@Ir?a=m6;qS<-RR;H@*c`4!IVv6HD zj{UmxxVTpCxs2!C;_dBiU0q#fW+q#@M|OERVN~@N6os5`@AJM8l;nNHu#Uf0k{LgO zld{6W{q)|od3n!ug~lcB@ssTX@83qegS8Hu7 zep@@M#Z0-!&^$3IVR64%`L^4H+Y5ejrDgXTv}M|#mIel2VMhjWCH&?!upbY259N1u zFh4w*FHwwjsU=c+$7bf!sBW1c56q+_v(K1k1!+P-VJiwm9b(b z@Oh87KnNedM6EEGPH3P1)oSgI=%TuMT!Z-5W-d<~;veE-3)u^hmi}#oIQTnnP*GIW zN&g%3u($dMSZ^_>2-){Fhlbhe7eD2gQQ%=bMhpHg7SMW)*oxX}i~5?9`|V&a0~RTC zd$J6FBv3hZDV#62g_M+(jDjkB-n7Q<({X$f@#2RE(Tq?DFgyYer>o7RBqWgxn5L>K zVzw$~xiRwtkYvv{l#9|0fXLyPXw z3AEqv=_!lRyxe4cnrhpFrMz>_zuxu-lNEaSFqM2B#O@_Sc{?Ob;TJ*d@~O_;mwAlp z!ACZ`69GxKsCuK}qot$kJ17nAd|_K1_=X*`@!DW^+!w)iYQ8B!b}D3K>$^X>^UpA9 zUE&sESzlaL&QKB#`A*l`uJFtp#EDJ zt^2~kVU*5~NkzF-;_KJ118;mD^PV4cS0mJfRxhKg9eu+tIBnN*A#+UL)o4^Ok}l4J zI)YS;YDrN?#Ng#W0&d+f)u$2bu88X|Tk6(N#T$CUcvKWadZxahRii9Tj!|@KF>7@? z5ni92wohQ1S=y6Y;PcV>n34)&FsfgD0r|q9%hY+FWxb@IZe(DB>3)9Ag_EVvU<&u_ zp#MoFUTius70J;3eTgN?N$DdQ1Du(;Oum#80pvJ0M&0CbjA`DmK(gR6k0JLB+~k;? z;-yoa`)S4f&%aniLmLqceh5hkTY>J!W&|iMuUyRR>};QX`r`Aj-Yy*CI;C^1aWeBK zYpy$Sn$(cVhtuXWMZS6i<{Cp%vxBKTb#?W=sQ4tKWJq5oh^hT^wp)17&CkoD3Z1G8 zE3;2Ad;=1A(iaAQ3FRyhBKL{I7hPS)Y z10=Nk`o)3M{fYU8B7G+KiU(WYj~pY)=3Dh zi&Q`%E_&`?K(+QEU+#mRY#e^60KFo~8B)A6yU4@NW0zj-kNR;J9O{|c(PeVkJy`X9 zh*NRJ3Wt5eN%$76{e2CBmH6C!&4=X43|1XJ7S_yDc5E!Hzu$+jus(2Qg0Qf@yej;^ zi$A)!h&`nsfo7a1BN7CEQlPzZI#MT&IvAIJ4JKUo?LJM($khDy?UzlEu=m^?3n3P~ zBYbFIXfF4y><_*c)M+Alh?I&%>@YNOEx4ln;cDY5>(lM7x}e zsaMBi0&4S1MN6Cz^*(l!c&;JnQq0jlo)7X2kBk%IbrMYiFIAY`vftCQCM31vEx{(@ zgKukcXoksSurSwykvcp#49BY^LV+A{@;=Mm>^T7}G#nNv80?EQ@4%Nw&m4c_##7n9 zeGCgyrnw@$L3e<$*B8YMg9Ns*2U-BnQubA1xwn}w%D&wc}E z&{syxww5TxdL;Sm8Qz6Xj+X(z52i&mbX*O<3}3r0r$*1uf0vx!@|nlRN)kya|pbsNmQ;KNBNC+ZdFTq${E zFEvKuZ8s6?=by)y&q5ln)~L$&IK`*GcR$g^sU)&Vq*~^)Tf<$izmZ;*5xX0Kq3_wZ zZZYUB%2+o~kb&39P(M9_kVtC1Ui5T#Io{xZC~*OgnU;cJ3)>`vn^ml74cI<_II(Xl|A0{!hooUqUVx{Y}_D9jh z)pY?fJXc+5`7J!$J}#Md$RC&OEw9O2eMUuq^kzfiQ~bh(&8J9S%=cd3R;yzy^m(hu zvj%*AiHxZ4fdRenLozo@D81t3@cHDC+n$?kuJ`YtImTiniH=mxe}J>(eDr( zEG(-Z^rRbNIB`wws3OIz38nR$e-J+qo!Vo7d0fk@4yJXMpm7D2J=|BD9Z#{m6#q{| z8p-QA=WWTsPn0dFv7d@<{hzix3zzf5H-_|Og%W{`J^eMZr34 zK70e$e2c{^3xVAIdEGx&_bg6(AUx6LTDdtEtK+lEy7shg@8kJIzs6_n5XMADesdu25RbcNiuBqnsWd|M>5aK-ok_CNe7kd4Q9^5JA9ex z4;S}m^P0sMTE7%wMou5WQ#0W(JVe!thHXnLWM=lwui2hhewc0{$n`S$}bFe zq`|zyDXyIJ@GR4-eKF_R^zrRr*3};5Fg~3gDCS)X06sbcplBE7m<7-TFj=WLE8fzj zoQ!WiW85IgsjshXLOu_yzWB%Qn^e1tU446})2xOwm!SPC{HC(NJvkgq3Bcq{ig^w{ z`zc&5%N%ynZ|Ft*4EM<^!Wgv!7hh`i1gA<#Zj9##NA$m6Xo^M)Mh-KLc*!}nzVaK> zNB1#OsNqDoCjXYSs2rN;ld@oK#-H5aW3n3`Sh%50x(!y}%^u|bST)o!MD!|ynDmYc zW7#rm5gUjTK_C*jo_QW9Qx6^b5?z!Wj*bXd{7R}ClJ)dUQs9d@obCu{F^}+fnUvp& zRUO1Oli`UkM$bLybAYcmBEuEe=CW1{hmF4|CGJv1K@~1f^Rhycp{!;6=4ZVmUHUhN)!>cm4uk_n$RBp#*WiQC>}5> zxlbt0Q!}ZO;W|*t^UQQ&=Vd{;@Elo+ zlZ<->L;?7+{+<*$fX@T#@a;XvT;-$!f?jWQ zDOOobED*@%C{-KV2pN8e+8yb*vyZH3+1lJQ=qW3x+Gr)>Uf^9E<$mQHGZCJM=l-+x z@I~BaujyXy-G05x3kLz#<{wIdI7-vhCVTrNE`__1%9p5S7#gj=O~pw_ACVZvCm&+__8$Tusa=fbx80jmsnz0 zNUxn6UHt`&BQe;^MzotDT?9u-usKe|4LRxLTk)ZC$U=zfC2Hi+ShR;vo=z6h>39F33 z;8HMRPbgHxk)HN~Jf(cS7WAz_OK3(Nwp$~ep-EG-%ei_xux06&Z+?0VLnDzY$PsZS zP5bp~yHBrWgJXRh_ph9Tm;=s=kLn@dc=fd`qHvbCJ%A{%lfE!?Be)*2;ytD%$mlW6 z)DEG{wMIV#YN{Nnl;+jGoyS~Ex@>M&&(r!`>|`5ANW{*QX0#&?g^>3F=PIp7MJGTM z+wH?$*xK-^ms7%-3dZ9?wVP|N^i!H( z{qsG2O30bxr@cxFP-HX3XS}<<{G)3in*=(PG`5ZPKKji#B}Bq^V+Yxb-vxfZm+$d> z?W*SKf!7j}xXqOUmzkxwP4w~~+6&||TDENOgY^#WRe5UT=vH{7Pdl802A^yO%`L+DE+hbuf!HBC!5pZq>cOaY?=n+3<}`xz%jczxh4J>i|{r zQsEP;si`cwVmVgwT*GWVF?2{`i0kOBE4FQGH*i4tSFc534&sW*v{mHe`Qx5a;uj}8 ztQZjg^4}ytS=CF~t@dpqsnf}7eFffrG5Y}5y>|A*g|U-etxr1YUxHVLoj_r_xtek9 z9)eKj!x9g}AfXkPgkz@XchcmG2!r4x;@%be>U z5&vn)K0SiNTUO;i+AX!APDN$W=tD{+_AapPUPXDgEci}x7>mth=kU*tkj;_(l5^o) zt-yh9pt8C<5*15;EEn2rJ#0GCq&DkeY7*WW!?nj(f8hGZ&Gx@ofSSj)mJk#Bd(@Km znf^l`$C>8VuwWOJWO3aYq2GlwxV*sr@HX{}FE%ycZO?)GdJ<`Qq40&Ly~AO$wSBX# z#W=^E{#sGJxQn-#)x+r(l?v_cr_=CGpPz zY@cXCH?7~FydWT$_4EC&LK4Cf1Rpx8fGG2kVHeEo@ft7O8q`@zhvT092Y^LpP6{L5 zzV^Ji2}$Rl@egmN9r#7?_D`DvNGNVIplnzUu8OL~TxF287}EU1g?Nt2D_^nkw5Aup zNGQ{7+jc@|9UJP|E83_NOy7LVQzhWn(A1<}7L%<2H0@Rp(!QGn%Xm4jZ-&6UZIPyI zhoQy8)UHD1pD$6x&xi4O#DJme>UxY{4_xKuowE{1X&DYxr=&5Lk`h%ka_?M^v*B=(C#!w7Dq(5Zxi6j6k6f}UDG?>qe>i?H)nBQ*PgFxnYHAQ_7;|y4~%D41{Aa>&Z&8vr!kQudCva)QFjx6P;|2p zPAHtc({HoOt1Q_#v!|V`zdIXBCL>ylZt5c{jm7zcd|s;EMB zC0A+u8^H%XTaQ1aZRjHx4uT))7c_z&i{x+HjQN3~p(Ud3;N;e~JBoCID=&O>f}6&+ z)Vvft|1*x|o=KcFR*`|B4p13>Xlb6oXa}^z`lSPyu%AzyFMS$um)=ej-kEKMcek%! zL_;#(^7TKy)V|2NCw}|YhGUKLTg$}GQ27EZ9lz9g{6Nn zZ#_DV)5}ZBtF5ossDu|2ElP?zwq)yslk0>^_Xggrr*4* zYWo3ieT{*^(u76FP6pA^tqnt3ASrQk&aC2+I_50n28wmqWA3v z4MxmKd5_LT+juD`mBzm1+lb+t6>mwKb_)S8B5e(R-&9i2W<9{?lf)n!9ECnhxR`A1apag5 z)PrqB6dB|E5PQLY$0hNR2Kat%0P#Smd=3J(x9{|`_F80?mlS8edd>|w{A8#aG|m)6 z#=dGnvScB_WRZE;v(}n{o{(k~;duZ7VIQ;h*&Y%;J-1*1|8bA*Ltu}B)!-l>=+DKz z?WP~dE0Eoc=?_|dsb@U>DiuLZ^l3(v{Z>mMTgvx20HI$UwW)EbOVeyAI0W<~lS`Ye z0pml~^C3;+slq(dIzv5m;2N#4jX(27=Iaf@|E_7~0*;E;rr~e$O?$L_7Edr&b0?%v zq>-nuWCx7))mm?B`O?bWv-J;MJZOY8R)oE*LywU5QF0VlI4z{zA*ZCX(5XBoQ&;k| z5NnNR7k;N9^0zdFVyn9VQ(keZXAA{5x>wDVbBZFL6Y3rH$#K?hVh+j$P3UAM2-;x> zI4DV6k>rwB%0B9bjj~D(K7shNym2D(2YKiY*|g%GH-Uw&A;wo?Ucqs7x{9BJMw zAf+_sZvM$j(e0&E!ut?Yp#VSQMwmOE{Vj@x8-nM9erGYPasB30`QY5qW*1Kism~}I z;{7>o_nByR*2gEeaCv1RMcF;;e2WR^XtHNGvuphQmaUMRM|%50)a3F?aV7uvey!uO zDEpPxg=ue~zm34kAodN505;Gu1PD6&6106(qfh#N-|I-Bsa(5WjK6_n5|$}ZuOP6* zTB%erbkJjeWkn)MD90<;2vuwbbrsjypC@9(yj{~$WYFZSY}ysfQIH3N{{a8OuBMN_5KGW zn`N+6{}gfBv6eFL)=>#AE4N~`cmntwVKx7Z2d-75UXY&62UyjkF`Yck6y zxx9D(p0B9m14nsO#@n(wc!AX?D@7j%^3bbe?&3p6CJX-7#ZQFVavXi{)2fHUmE8vZD)4E@ahkIF|X`?#3bl+wjnDU%z}8Sn&N$YZw|Yp5OcRs2u;3E5uiC z#WrhlA1C>Uqbm3lW?pQ`=q-7fZ7cq9)-{c7YwCnGy$2%x`VGg?I4I!jMQ092!$oC% zAb7?{!?5!dB1thQUS-;>u+HvbMhdQ3Iyy)7@7(6Vp5K3B7jmZueQ(D%zA(Is>kK3^ z{(PuIK3C00`T1GFst1P~F0JQL+W0G2p*?-2&C5fwQS)W0O-t)m5O*`N1TkEdT@?@cDJpRUp02LEs zgz>TI(UkW4CZ$4=BZqa4>&q`|TD}ke{#|qz5r9*D7`IT-xqab*zxrqF8tW5O@^Tp`_n^nkNeE>!?2r9P{egPFlx{~yxcl{UPi7um! zG6kh{h14oAl96k@dTxvR#BdAk77+W1{@1K?A>e#*Az<`D`E zkKCQp(V48;O=gi+hx#Xz1|Ahw><^Ch`3;dWxRSDlj>_&v~l^xU+Q;9;B9bJ~1_It4dZ^WAh4laZ{L*`9*_HGigHWH~|zArk7E_(>L z-V8*^k|-Eo%NHL4w^kW_RGrErq(&R#pRd-gVGEerhU>;=dxy4LsfIVT5D*^s8T2*v zSkKA5)K#a&Y`Y5eY&mC7-RBIJGqkZQw5~eDw3qB}G8?$teo@&xiVL0Wy6)?dcwDeW0egvmZ*Y>-LA@UpQ=zo&ch+~tdSaUIlnZg#L2apVZDR~baF_}mF4Hr zkBUn@UV_t60&U_e-lyA1yZZBMXb!VYck^Z{1=YFSKz8|C%4cp|HesOkXGQT50+I4-|IzZX`32bs`xXugRloHF!TX_|jNxIF> zx*T)?W?8gMepx=(s<+c$iXiejG#TBK@T6N0TQ!2eNNw7 z2^r!33h-IuVo($^tJ_q|m)h~8DTaG|hQ_W}e+FH=0&9h2p83USM3z?<=@cWGcrZI` zr54uZtW)^jV#U7b*3Fs;Y?`j0Txh;`On`Ab#(aS{7ZA?O2B zP-cM@Ft$$7^{!iGm29XZN*^_9Mt}Ta0M+>b%`Vu#npTQTWY}tIxNd4s9ngjO!t_vU zduu{xsyhMO54W2=b10q`SLGjifVInJhG9urgXC|@$|GFkHf$1p2ViskW<(v(Rfp-u zqhPJxTN-}fHyF>_IY@NeX10M!Ae`Yjt`n`$dwGO*>Ipe`2b=^B-^Gxg&F};WzQlS( z;jVx8gEYB`l?4k9T64m+R-L`+KA0}Fwvu!eCudX6QTF&ZMxt)Lct9Fz30+{vlUSB+ zJ^z+Aj0KT@g4JPnd0q2yfB_* z6mept;Z z+~Awvh}y{TFNnqUg9!_MAM2?DB+Z}h3$2z!jyN|rclUi4oo!*g+-ha4u>x$zu|b!o zZe`r3ym5GhgxxAxXul+x92st$u-?t9KorW?)>dhNxWUOZ4J%az_uqN!0c~m-h?7E8 zOw7yT^AF7LS2Z3$B8&jPn)Tlrm|cUy|6lQU?1AF(H-JdWsEjjKiVrdIZ+ zz0YjiOG`-;Z|<(oH*lVJ-lg`Gs^nii{?Ta$ju|znmXcz;M>a(_{}`sFsQc4txRl=G z%W?F~%u&K|dt%~0;f(3dJ!XEFcapplPmOQcNr{)JR#yHO3#ck>ZYF4CYuJvC9=3@( zn~QUOdYe8zFhC`o5&v6$IXm0t|sp>G!LH4;Etd z>v87OU)G?;pd*>!j&v1JEflVYvqr{Rvh!?<`G87 zkW*2yM%QYE{9nv{WmFyAw&lSgSn%Ku!Gk-51b26LclY4#PO#wa?oQAg+z;;VPM`0) z_r8AP-S@`m(fz0Yp4wHlOU_zz&b`(wBPWyQKXP5ZC6?m@g@_oE&|uDL&`5#)67PzucEgw9SkWo)s+P%^xxM({;vjU$e{)@qs9gS^beE!5Bl zK8Q=o?6{^7(9x7L=OleBwp;tTHK(eZpl6@w7bjexIWJl{@JXQ*wid$fFq}Da6mLV! ztU%21Pa!AsqQO4KnDZoIdY-Y9jD~M*(nYL{_+rC%dY*?fV2F@&xc;kg8=7l5QtEN3 z;?lweUx4B^G~wX+Uh1v7`^VYjnI@L5-o5u>vETGioD>pbQ2YjxLa6I=D@cept#x3qAY z^xmH>?ha{VyQE?&s;ImaHs1+=%JN^S3UOtbss?SEBk1n&d1EW$CfxSIBtdI>k_GEc zfw4thnoTY)|~BV-peiaxF9+ZjTyOa1)S4ZZz#d-Jv1)P099!mFgn zr+hDap(d{t8#@&hNnrqpOd;Bp)yl}(_I(leJ+5S)d$U(zZ^3~9-=KN)%O@l+ZMPs2 z7JlTF&fzl88_v%(cAu@JrlJthlvVU`LP#iV5fXOv@Ii9YA8gYZEz&Fxv9| z<22m(Qmhp#AKAR6yS5G)MkMqY1l(Z?zZOdv9TE!oUW0oS((zI^|MnIW@xo-8^y?r< zf8JfyS;$#4L!L$@Ll-9iKOv>hhFfD%-w|zMr~#?#@Uk*?Pj?BJ4@aS$MW2-Ft+Z|+ z=JuPMmVrO*Wo#6r@ZqT68exVb@jQ3<8AOKV=HrFJ z<0EU?>Q1q7>-U#VWUL^Lsb`{djj_rV#C6OLYZa5yvg_E(uPgIa9Q$R+?Mkgh(l1G0 zBCubvIxkEz(H*b~H0Lxx%ts6OCtRS?m<_Mm!+fSz`|mT;13tSjglM=1My=NYENAeF zs)Rnxzi08y8TXL5Y#}iEs7YD*#WkLUAeso(6Yn;r&)#%~7Uia$H~bl7N5ZJ+WL05} zDV7{R8mt~+x=IN#^YiPxYcZ5^k#C0%78Z$wKtIDUpw+4DSL&(;;3sF3S<>;9N{rqx zEAff!_AX}|u-CD!IPCcfgi5g6rfG8sEkyeB$4#eH0q4tAT|Wa8NFWq|@`?lKq63vN zF-Z3qaBv7*S42jb0r;)An}XKtZ*f@NbA00P!F&|eM+vb<0d?gHG1CuiPAm;Pj65wx z1uFeleK6!hMDRf*2G2$a+rz1;a!G^Z9!>T$ng#|HRbcyvIEq$tw6!K*Xo*p+vB>h- zlQm9b8=JEwz4=19IgsM=H{0+Scq+1h-ziheu)r^Q%3J$a12Z{n6hzO1DB_xgv6cd~ zrwAzNBieJS-ild{rocl)UYVMS=LH1JBvIt6QzRHU%Yo8T<(_VMe zoX@luy-afy$^3K;Aa3UgpRwMx<$#)kvE`To#CZ4sd897Le#~9dK_4!WFUf)$# zm{-tIK*r6xW(jNUplKOa_Yj!TRZws^xE(}cR#-6=Wjj`Eww!$Wd48%`wz&S#o3;?0 zG9Dd$gfU*GL9~s;_qq~c^o4v_E1uyaUqFu=y3YBBaZSl4750W%>{OiQigi3ryg+3) z?ERclJPL%^u$%D$hC}ve%W?Lw_#gEk%%Ibew)chfC&{?5JORO!;JVr`-MJ$9g4#Dn z6=C7RdsEj1nXXhYjlL{v@a-z1#WP!@E1Q*{ROd0V8$|3R^$0=s1=8mN1lE<-qzl88 z^)N>%Oj@_i@ruj&6l5=*>MD|*P`%_N%Hk#X1(y9LABBq%!-kk5wUSTt6TKxU>}ctk zK7zot20C5^y^_*a8=32t#aTI>urA8i7|>RKD4hEeSEHMMF*Qcs7+b@{QD@)ar}7-(&br%V?V5l#=ao z8Saby{NMRV&(vPN)jZy(G^Bkr2B*0`)dY-%kRe8!Mny3*K1MJqyW*X!7+9EigpycT znHtu_>b(q|a#A|*N{(sWMg($clQ!317p@y1HaeTJNnBhti^h(SC|0iQB0uezX=@s7jhx=chsRb# zRXBtJogv{ zz#AEps!2FR|0r*aba@9pYqiA3@du`4%33*7&%n(iNd0fSE$Kgj9d zD`i)xM0CAtbb)q(C-mG(G&6z<6IjKqE#JDxDJiuD_bk|pJh%vK_4LZW(@HgEy%cGi zR`)CFX6scEx1>9h7Tw&TwYhk$&<)=-w{3X~^%huIEH-M$Vk!23xRm~M7|p~CD_$&FmDAIe7#CdDdU8ZR znfRLBjOi0^i4A5QZEi-ax+x3|jsJw>_~`!9b#(v-W5R!@t8Bc<7t7*0Bbu^1uYL`o zC75nIV6D2NT}w8&C$WXSF>JR|+x9-zIjptk;c2a}ukPUyo(zvta-xkkVAoDwwb>bH zQm3(cDr-tKRqP<{<@^Q=&>u?Vj$Ldd+qWJ{Gp=LAwyG61O66vS)%k=*NQ9n>UBJjc z!!hLsmD%}eVbJp@x5^zl6qrxe?i#lt)@wZGm6vBt-3!$RZip0^6b6??#HKn=+~?yi zK>lO&Jo9J#F76kZ=+#?fTu$zsvmXr9GdgLzoJauy-wvIZPu3}%(Xg5J;&*Cpal)eM z{YQBq+9&sai8L&AkhuQVfByZG=`W7%C^Fg9WQr0hmJf{c3XqD?vEtAbajOOsseA7& zRp|X0bk{8DX8pV4Hx7<$obZ7W{>xirOLHzeFYo56f3UX`{`9J;lkOxIKE5b8Dr90; z`+69`jt=k4jH5+c@E#pbV$!8)Ai6iB*yxd%SH;o~zm0!NTy%Q6+ zu9Nq`ZC5aHjN!^Luos9P-!|-P|u`ut)$?F_Ub=9!NLdoF7EWpQLo;2xud;*kKww%b+PuCJ{yzQI;x`1^VaNe^V#&?CF^R0P2feMyf<$r6l_QKq;Zr^SQpkv~SHO zBI1J$+*HIUXVfL2l29z3nF?2=g@c8)el?~C0P2V0>#x$Ji^MTW&>vBeY37c44frW+ z7pqt$ev0PfQn?)m$Nnv8Sp5W5&RC!U0357>PJV%b{WSd^p(_Yi2b+SS2;^rps`}Ys`I-iX%4T;{Y%uD7id*K%!-u|TpltB2WI~`sYXq2O%vEF3;=M2EtN|P57eEVaWri7Bu7MPhX4TfAL~z;!R9Ek3CqDN^|_mu zENS55q~vxC4;Zs}@V!CmdJ?HcPu&OjVgR^;mKIqcAQnY<*!Zl6e__Vx}9bzzm& z$$zd`w3jJ3Ic^r<(OF|GEw_*l)pij1YBxBgb9VCvfsI#qrTE^450DOBCc?N=MM7Ts za{qT+jt?|l{xS>pGjW!bK0z4xEUH;KOpS zDLpnBG%R!j2@oOjz}mL@tla^u+QQt*5{D8gPc@XeHqAZ-4)h%aAU6QP|$((tUSaUMDMV51V2lo z=3sLzWW+p}5b@XTNvbe331|a*_4Q5`IyhVcC3xN9>`r;tDgK>6h(!vOd1WM#DgfV3 zI6T~ga;x(o21Sgl!jAj*>jF7euiKF^aOnymIgVJi1F2f#wOobol8O1~nQvFn`&#B` zPErC4Jw18ql40)IH34aGC#tv!6gUjOrdBQb2q_u!PSh+tGb}IkG#p-<)-=#+zo`-n z9-rZFEoR-SFd$RzQeypHqN>zgSMQIJiTH?MQv1zACEdDI*90k4r5THmcZMqu|EP=O zx*r?{TXSm!IedInt@npjjMi~t!=f>mk2%G2EevDS;wQX)+>4VgM#GgO5={t}P>D3W8!iYvQ2y4=x8MSyOtwN@cA}lu|9J zNUbHH1yJCr1L0p#v1u)@pxNX=ayP&y5)$w;WR0Jy(6I-kSD}hJ@zJg&e`my(g`btu zU<{e&p}DN`A)g#ZCd1%YOD-+NaZ#wB8wLl@WGYTl{mh_{ZbgQI1nF)xG7Ag53j4^M zIA4l}8Ze&R{B;hunZE;uhH3UEU!2~urA^c7mn9`7^+ZP{O+|Y#>bFWRJ^4RhwuSqC z+jFgUb*VxFdREgWB7V}T7A)R`{K&-k^hs4$Hvs%{!tR1AS)ifbkx`k9b6_$%-RgBtxzN@M6=9~v&v$X`YWWWRbxmod(d;6tdUpv9QOF&4IOG8~fJyfJG5dPoO zb|Ze;*h~qs4(z?TMFva7_Ql@|6%B_c z1|uJc9S2OX<$GXpvSjHsg@-qOP;hwFDladstw99N1N3oRCth6&Mx($cf34bb;85ri zN^(<)*9xnCYmb9!72&H{Z3rm3gX}p;^Gk*R=o=WNj*eSIApijSqF=$eKNnjb7XT=M zQU0s!9s)eVU-SR_pW%(Ey9Bz!)awZC*tEG8*RJ)T!Iy&twz8yWCW?f*%u%oc`|?&8 zH8TX>nv8-k%pa?V>8}nZa354fSQcCvWrC~3-1AC+dcM$7w-@jIxSUF~N^85JMw2mm zgXzMx9Wl=vC*^Vnu{a@h)}dris`1YjjS zuG}NqzrFh~DDAYG%GCk~6KU{xn}CtC_Akxh*?;{Bx22N}M2ZA%78$?W(VXjRWRglN z`O!8@M{{~BaZ}{&u?GR4n>bhql7W;_~bi8hgHC zq6(w_iyc*7y;EOI+vi z$WE7sf3JCt?I(}sd@QFo#=_8{NeHFnxHMasG!V!_gBX}NR47{4F4yTf%ub`Wc6DNQ ztDfS$@OJkYT9sDB`fDJx24~n1S3Mrz)wW0E^D9WEd&Ji@;`&p26p<&vISimDo~v=V zfa7H>X61Hxm_sb;)}75pq!l(Dq3fI7M2)aSe#&@hezGFlS@@ygZTD1HlHT0Bz2|xT zyI0Lz+|=I5?>(e3R)=Rhx1m}F!kh`Y)h_<{=r+0TR5k9oID_yi_lv{RlxPwFz!ZFG zMennARjr$IijBI&w$Iz=b;HiEW8=VcWR^f)86i(8Q9Id&?9uAkOuP(;K!TFv?rJ;y zm+@=cW?>lS#S}|VC;NfgjPwdCcN&Io6{j5Y~A19&ti<+a87;b{4zl4SZ?=5 zi|~pI#Qf^Zv0%{pY4Y~Xa&&#gYncSlWp&oYY&-iA*x=)LoR zx%sZ#W{l6h-^epZ(rsOE{mHjSk`FX6ky#C&!6z4r)$!`kIb6biPkf%NA%z6+@8r@j zkzYAfLsdO8fx35d)nx{Y9pnsz$?5FvM4CpJ>G?y9(WbeLy44&fBXnCsrYMm$aKjsU z$xTg?!#3!?tIHH8GYp=$#E-Xl_21XmJYrX`Fq<4}Xl~o#s?*qP7CBuQ&dd#dc-|^E zNB@Ea_}g&3@)!LW4LrwP{qmX1X(0rto4B6A?Cj{x6ghh=#(%~bt%(VB3ran_zgXzH zc>A$WyxMx~xBjLdYk(x7li_9_v6lDt*qMr=s?i`aoAH#-MEHU`CcbkQ$|2{|nAd%v z_da6dPs0t^(Es_~R8Vv}t5tlvuElrYd_T#2U)exE^{J$og~@G|yS#UPN-)YcWn*^5 z_x{Dnt(v{V>W|M+_51Y^W_+pOL$_CV^EwEqOvD~W!0WQGmbf0EnA&x}5SX0H4A`*W z+sv}IZs|z9uQy&M$UhgpULj#0aAu(^x@{vXV}yL=M=%oqBwb@}|d zpxXH&Y<1^-+2u>|xUbf1`+9u;XA7do1!yU;LO#{cyQHM=0UNFk1=X8LJkI8+6|<)n zFaYT3Gk8-Ox{eq|J#Tlg=Fon>554+o4A3WKez)31Zb+GHHVlny>%QGrI)B?+%KtJB z1wj1JZj;`d=eixy?GD8aDKqEQ{IhH&~iM77}gaHoQI!4kL$l$>J|B#-3Hg}DWjDVA@zoa=Eo+Cd&1q%r!;7hE!h5z;E zuPE}k+RU(lhnv0Ij;#bSaG4W-L-rna5{WF$N<2I~0s>{)*_6euiQ9oC$P>~Eg5;|Hm z*bASORH3tT+96NK)iPSgYIlh_!G@N3F(N!%;^4#@Xt`NG4cIW+$PFkiHH0{f4F7rg`YGhlhN%}wRg4~Mty`7UzV!K6mWKl6HP zkVpxVkdAF$+4L#i9zJ$>;jjUm9AJLP7GK}ou&pe{2i82>NT8T8gWHAaKRNRtpXHL! z)|RlOBt=c^fwhL700>UA)sl%b$0Tl}dvDwT{T@VUK#hLS#L~l7Uj6=9Px%}GKmsQL zQDF%4A05c1%CK!x06-M0n-DCV&`JTwYqvB1InK!7 zslc|~$>#GIg?PTXon6&q?Zt2gk=FcvANT52xy@zC)*t+HoJOnS7hymRpqFZ-LeTBl zI(ZYO$fn&yD>t3Lj`;rdF`ZL(({vO``}yMBPG&ogO;>3!KQxnY)jqhq&Tb9crV2XP z&+CHoe1*iSqox7bN{uup;vU45@rD8Lm*CPe!Q4mTyFNf2YkqrDv-n0)K0;^tP2dOc zGBxxvsQk?PtTkIFcFVM?WJJ(KfCuZ<{YV?tq)EtY9rTu7&B>qE@kb>+vwo&8$l{*= zr^bQ11{48G7JfpKhl`|joPXe~&qOkHY!3bLGzqw7U~+ON#rsAka$5j<=!5K}{jE&~PUr1oXSdw7w#yj9*mX9|k;SCX-jKG_?{tAY;E#&zy&~6O51I`a z(a@*d?7fUTTxs-GsWL8?qo2&FFCD+`I?rEe*IDTWqTE_qhi~i+_(YUst}A9I_xb>? zz0o5bUS2=T_}+WsVQEOCWVCV`$wS@m^(9aZ5n;$UR%+eYS3peuy9No=T01zHe1{CllLs7wFycn6?&}_sg7?@8&88nXp2^JH^iD>b`sV&*X!T+S9HctP5kPPCsNhC&D7KnsXpZ2CyiUWPx|>y;L{KmG`KYd4_GOEyUS1T5QYl>oeLF#Hy?*3B=!MgLQ?T=RC=hsD&eqDmm8jJvA(H#l zeJc0+Bs6?PHq#STbe?PxrG92K z3NVn3L{_HEr*2oNil9!05yiD|lZ%&bg+hPi7ikq6^R(6w0>wq>c(#-T?}(XI=n)bh zo{Nk!&0-RdF~vU>uQv$vMlyUv_%qKt_`yX@;!MHX2H}?yixNi46JlIPWmCuJ?v`Hp zcp8|IL{U3&N<=}LLzcV27T|HSaDz|09;MrG@~e)BNgS-kN#d7$&Q&)-+v^D8_wygc z>)fH4+;)$IUb@e7WhN_U>X}*&E$NLPP_H&r*OHz?K^C!p?&(8l=}`icV^ zChrc_Za6xv+_+$4!4t2ebj}D*`@Lp9YcB1q4g%*{j|)$7mzMg)FVqfG*l_$TA2HXkhKsQUR9CY1AY^=}vyb3Hw3`KyZf45$)Cg_%xAWYW%0s4W4 z8~%4Z{uT?Z5w7XRRikHrF3o*(|9(_T(3bWY{&QbbL?%)Z9P1a)WM5;?uVY$`x0~)p zWJR!gs#6Cli7)ht8{z%#RD!jOK`>Xo)@ly}!^fy@Z+{~530Z8sfV}UksZICs2Y()R ze~c4nR;12b8aRq!EbP2tEWl!hkR1rr{w8g^A|D>5@O&;j+F}0ja2Eux;GrOPco{3n zo9TH0gKJ%8Ek6(()^aoN>+`GYsqf|2hx&=MUMxn0&6roR7VB?37J?E95AT+Rj`G~A z_In%cSmLD(>Sfy2&j(U-^3Ggp_I|F8^xdt-mJoc9e<1r*ltTtF@G?3?jZ9P1Lhoso zt(K`>?_M4zSp{QkuhYJzypitVcDg#<%r@{5VWhjP#l$inCX?RIKQ|59xnJF%vh#v~ z@V8kUB69VHTlN{*t|z_G*jGV&JkE(RTuKH}j~1BAQcHwf)b@cKcx>k5Ej?NJ1%)Mf z1*R1i7}{v5bdn=oep~2qJ}f>nRM2RL$IT!H<5(EZ)Mzu_irO#A!gq5y-uv=%B>>=H zx|=O(CZ^Dg^Od;o@=+$y7L;)mS~3m<%KT8=a7-^0V1vsWB6=#eeZN6oqb z2a#{<&y^$dMeaR!U$l$%rpi)6JICSi0L%!1X8d8nZ9kDWhveu zEW#2cztQ)xfQy}m0Y-_XmeDxNV9hlJUt>F9i5^s~x^=YZ#E0LS#A34qk1JiUt*~fY zxA!*p-qDHu-Qr7$)U;{`SkJn> z6>$hBuq9(RrFQ#AucmnT#fJaxC;Y|xcC*@_dMr{zc0O!TmTObZy-?wnW(ulvb)Nph z%J!@V{@_iy-uqFCd$z#0!Ptq1fGr0j8<|ZSe!(Un8V}p)CAY()5Si(3~mais%ss&s+sULa&#PHl$0FCDBUP8^58DYM+FJs59?4qizSF~TrJkEAZOvbX62;j&k{=8 zM%G^Hswy<3Wp=?da@%$n9bVl=hC8gkc zccy1Xn{3IE%E0iDYa!nqn#3;En&~Eh9lA4E-R;`Z$ac>vbeFQ?n^ihgNS0(%n6sNQ zHjadkJVqDmhn7@-`$NynKuT;$TXkvZTIejo>L6cK)xi=p#zg!C^u8C>aypojV+MQ1 zb(QzK8m+xM1h<9tV{T#om>w9M?^k1X_S*JP#@!^gaH_tje$v9u9Z-_31@zD?<+Mwa@5Oduu@NWpC{Vh8`ylp zkLhftCXR(hXcb>tT4r6=AbX}m=}@R}RefE46QSfk{;d|{WN@y~nl<2l5j zr+DHq5$?NFzwdN0_ZIMb3B7fzi}u36sE!lI19tfHs*TlZkXZ4k%~-phF)=yMU41!` z>y=H-h{$N|%F^c}7~7ENcAGqVY>#0;vM&|de}aLrk2VGLMrvgpDs{cDC7{smjfD+@ z-JU_)$j9g3GtTBLC5%~Z=N6P2a_B6Z@$w#rf0^zy^iRaC<^@AAvM)kNl(T+sLE2_g z)X-WbaT%uZ7?}X;lZ=G0$6emlC=BrWm3;qCr11Y*;WQEGHu#zk1lzf#OLHXt{xzd> zY4xGMzd*GdXgMco(w!xt)9H%XVhPXqGm_bkI==t%BfKz+MzLb)AM@FVRni40kTE@W zCdsECKk_;|6&pSO3Zg^#DW75(E!m%sl; zJX!&8+*@Jo*MA%x)fe}rrN?j;2#i?$psml58E7Yb3|y`K=K#bF>*U@nUF-O^wJghm z{Oy3|=IUhlGp)bQi5{$=pmN=iHg`i9t>m<-eR7 z1^t|EP6gMK=#9xZO%+emw#v^Q7l2BF+2!SxmAqsL zE;pyciO9*D!FDfeD|%RO))m|9pxqWd!qb65xSo?AlpkU>&;)vnHaX1FbSb4<_b*q} zyi`^47e7r|Zo0QT8z{2tj`LTadXWt(&A2u_Nawo`9%bf8X`uPO>%2c#BDK5nR zlMOXhiM>hZzIO~Um6kNu++9N!;&u%6&RzW#F*$hIXp0hbEi4;!bF8MzO+J$w49R3V zb4!ywZ4_(0SYxwLrB%IV{~phwDy=&C;l6Q}NZ(h=Yw10ca>Z&{Da~xp{m^NwX2I71 zo?5yE+o5B2tiWAEJpG48`=6nv_DWi!yt$wLkfeNp)!Pt#g&M%H%h2Ufkeo-R!4M2o zHCrRd=XTl|6HPtWR4>mEEe8!^9-T`CPE1S-ULsR9XX+QaE=Kj@L$NINn7e%=PyEdG zdF10s+qgTOtl`&?!7xgs;rMdo=3m9@3W3QM9rK82Zl}z@CyAb$Y?NdtXXK>T`R2p= zszF&8K{r_jI?u(ZR6aaJvA9lCdEe#WyM2wHmGmT6w|O)x@VdmxyZPxlH#1h=&uxJ5 zMrLr}2f%FxLzK+Tx+mofMZX{mbZ>GXF>{%`w!4lYcvjtNHPlhXcC}YlzooIXx#X9OR?0VfsDnf%IHmQWJHWfBo7?F3vXOzh9lW@6s# zf_xr{M$T7oy6DMUZaLz4>b{j`pI21drm!j7SbwZ)d^Lc!X_)P+8ZZFS*r3R+)icLL z_e_L4FW7`W;ash1HSEZDCUCDtXQf@zRMc3u>9c#LV`J5*BwjW~IkHxBtUB9fMrel6 z!2n)!{C5w*E$d{5*W3BZKt#C&?9O9boxc+l!aovJ{+y*ced^n{WEXqz*9;?-Y}VTT zN^b|~UG`P}^|$zXvS6zyki&5Bf+d45(fEJLHQ=f$1=?M*ctJ-k;a`BlI?%LkbJZGT z6<%8q(@(lDsOzA0U5l?h=sO|Mu#AVNr*%ZbGFG8u9rEBD_lU@OJ{~w)G8c$9A^-L3 z7e~5_UFA~Pxg*lQ^J|M`%OYakUnw5(t6BZ2ljr7GuKZ12t553SuJ^?{Yv}LrYi4<*f$zL-GKs2My&ekO)v>D01PYVe>5slHk$+7;Z)qMSH_YQ=Y$KG^chcFpfvg!4 zCv9SH!_<^NgLmE*LJfIIo7bNQ+@jVZ6?+?4Tu`VI}N;9d7 z%a|J5egg(5!NV#w|H3DxW&hX)8(28g3T)mk4iICkG3xu*!_O#n1r+`TUxo!Pd!QY) z>^B{-=ucga|DIX8C7gUjy$UQUbKBlxakTooeXQ2PUlVG5zb{zDOM6EA@7~{kSYx)d zj(!=$e|O*5Sf{Q+$MgO07v=y~ca1(D9jwGsU*9|jBP_h1HRgkovU$~R=DeofuV`z% zypcQ{JL%^GaJnwt?EF+7oNR2?TKhUWyT>$!zB7(WtBq>vtd?Z>bFcbX$NmeR9ImYW z7XT4wKZs%1?dyePmAh$usbLCs3y>==sBk~3Di*MDempdxxuSYb}FN>wgaKDZy4LJU$$;Cc0sl{H6`$Q@= zqprAST2a+h*;b$sC~R0;99dFwsun@nq>fXyI9HA^9@Y-N61CH}?ZgFP@yOVhXJPh; z-=nP_Fo+Uph8KJax3zwLJ}2UhRAy{d6)*XINwJj15o(}%Ua26w7%a}V+(MgD-4rWe zUR!!$4woSCamJEukxjofENt1SP(93~l#w2Jtgswm(Lb{^>dRh6IhlNas2u;(N%NE0 zb8Y>>#xeJU@63NB?*I$PqA!noq35j@Ye(>CZ*zCIIeyop%~hXSQjSapv>9Nl+i+XI zxa!g9Z*J+*_TOMe@W&UmX@V^Nu#%Lfn9H{m9&ANV5k7SPBq@kj&3U|7j7JsZQ>e5T z8Lpo5)F=u5B)Ex|@gmImGEIWhGf8LC$jGQI(?hi?Wzql@0fB6YV01yaTH^Q3b4w;N zh1G8Gw7ot6HsbxYC!Z;GMB79Cw`M2(960;pf06nWlc30EfQag>hJ?GoR%p39Tj8O0+# zuy3bnDdu+3cghx3$mv`hE-fMF{hKNO+vp9Bf@fVxe2jb&nm1ML|KMlRjZmKlmuUY^ zjht@}*o+;rW)6<+{|HqR%Dn!HKVO~uIOzg6hpJDu`>YzV1%3DC8?|~=zO&AuAOG*INgfw(cXyIdkSQdb6kqHm?Cer+xokCgwfBNG*^O6% zp-PO1ltn9vX3aw&Ap_#Ie&DA`vX`i$YQ*lvH1@0X59-FLeCN>P^5;3QZt`K|_fDk2 z^f9-MD~J)*qQDMCMn#=DyotnNiiy$|u7V><+px!G(j7-eK^fM8{ZFYe!{(GxgO9(H zhi5sC|C|{ab;V(A-^LnU@YBjlW{b8!?64V&MisYY#9whdNHl*)q>(P~`0rpnk>?7) z8oy>Rv>#zm&sl}6TI=hw_c!{{+Wp_!7XRP0dH)JLhosaQJtvn_ce=nlh zu)_>rOHtIn1Tk-J;?N6EH!<#har{iAa9qzy4vo~0N?59TCtenTC`A#ds#M!IZ#Q*S z`naPnF!qTT_GcNVtDX5<|0%9z&C^Yyh|__Cv6>;V1_{yN|0K;g3%Wm53J& zouKEvxrm_efSR)S&iz_SJh-p&$|Q0O?6tI{nD%ax*gI|*TG9R9lvKcF5H1W!>;ebi zwQm~z7@!Z4cVyl5Wxk)37k~69KQ#gR$3r;p`O-L}j}eG7gfT=+dXk?r-0H5o)NUVI zkjLotXh7VLh^G6Gyyum%LnxQoJ@S})h%^WPMY~K%{lF6G2qfVwx4#BM%+RL83c9-{W>C{>on7LmkiWbVWW#_M<9D=5M1MD3RY?>tB{vl zBM`wuE*Z($5d%WW%_1ijzhr3?yzEpfsl?}MruSb(i5Ic565>l444~)U60;yu^(JLi zP5TNKE=qn?F~!E0|ZXt)tW`IH5e6N5`HaXmk_|%f#&a-EK9) zMRpgvE=RoQQW9b4DXz}AEDEZ=@y{l=Bs${4!=`moUE>pWz>hk8izCq4p{=aFF{}39 zcNS4yj10opHw<6~wFJSXW<^|jCO7;j0cl)}YfS8B+tY8Xp|N8{Vy01VZZ&6_FIy)S z4fto${r!qrHY#RajiksHU-Q^ZzaEJr z?hEPUxK$K;FZz%~q+X3a<^gYpRk2Il@^!K;6SNL#iF^Mrok zbw0%vgad%BWW;yov^;`6vF1-#yZJ40n5hXF2}w=N`HiRIgGr1iM0Tp%x-oFFruKiP zmxvaH74Qp8RIyapA%b#_C>3abSCSzL3vPym-UZlA=T7-)z%)Jw+ISQuG)3kxed zdyBe0DK>S~)+tH(k`Vk$3y4lSMP{Lh8WRuyc=c+?!cp`b%c<$AF1d${Khw7uSeaai zrDI7b#94;MAyI>X@ev)D^3K4DhtASi*mzIo*a+(3W#eHyljXaDmPhb--W&Qp0So{e zN!ITHWsI)-MI5|@ra2@th6GVi@uGgl9JsHdn&HJ}{=64O7;8eJqGck|NuppbJ*$%B zHBQHSd^S8CWx=SABhl>}syO{e$dtmwMlK<>``Xl2r#D`1aY=)Q^F$UXc5KBc@Kfu^ zyttxh4p$7qKNvE4D(BNOE-r2@`dkYq^W}%|0<;NS9w`#ctB*vVj@0CAbAm!+{pClW zCdOe+uU~~BITS~EJYj$1vh0(2#CoT&M%eUogCA5GT4ev&XxA`4m>Wp4&2(y3Ho|fR zdpJ=bS?%bcx3=={=*NzKBXjXnvl6Uha5~EDasvOm&QSgbR`(B7++(b=fgYTT*ulrN z??G>bt_z(7_GXSR|Ata7UZo+3*bx+ohgmikETs9ZjRDg#o^d_L;E08{K*3t&!%tK9oaW*xzy+*7OZ4BhfC1!-=Tv7~ zCi9@LKi$AMK;79v41ogHo`jGPr=!z{;gr4UYy3inNaSk&f)!3AHrlsd74ssstbH7? zcAGjj-1P|>fC2+jewfc7vbFZQ5#bZyBw~=apM!6sb~MOyXaaZF(`U&>0($Z`NU2W_ zGts%$kDxn(U^Xrrp{tf#LfVS{fJ+^~#Xdv|-vAr(7c#+i3^N~R?x;2>f5Ai-hZpVz zeA@?gyfY=W|<+OVb z8$}tR##>;p1tPJT{{##T(!n<&)#Tb=rjt(&xX8l%Be(KX>2H30oXPA((xLh&BhA|N z*)D0pWrZt4D6EgqC!I$k|63L7nkZtnl&T4Q)n_(7`k>G@rrG)CQ5DtvCs_Bqu9!0* z(|Szd?YB;xj3ceW51D5y0XQG&_hflN1$FI>`8c9$pZj{-wka2{l(&*~6Z;x;rj4pq z3F(z4NN^x~Z~fF8*URrg?S3zs7IkZ`Xx#9DIhm&X#=0$-Dj^@~K@HbUNnc?Vkw3%B z5kb*d3i_P)2dE-mySHpEoURIcUoLmk?K}+EF}SU=XJC8SZjj6c2cUwU8)Ug>6k5kP z*J}B_+Y+l@uTymeX<*VFsM#7}>h^jKU=t~I8MTk7+ul$S0=pkC>+xD5_F8Y0LoQ;v zeZ?Zwq}IV=opqlnd@r)pitBX|18zcd%-j^4UK~c_*^{uY)Oy!D=KP_|C)cl6^I0oZ zAooQ8Jf5pW@3<~6l~VZiBlx>X&b($<$&GSRF}n$ zR^nBec#wYFKY68?4qkhA9>61`x+2eKm-_9$p4~kr6004swbqT=3t!^m(v0;7zAjoy zDA_EzQGYnvnKALl_?Q!)ozlYgzgTxC9RbcXto&8r&tgySux4fB?bW z-GY07;O_43Q^~!z=gyk`x_hnp{t-B-b57M;_3r)H_6>Q|FdupUeo=@?QGR2CK7Eu; zx2Ca;K~9@{=!4)UA8YroZ1^dX9@5po+|uIbZI`LZT4CF^_W2gR15g-;R$L=y&f)&P z)#GvH#HS@f$ZFgME6J<)to!pFe=^ck##8tJv_>vVDO5O052^7|NBG?x7n)Au%z)U6 zVnH$!_kP+dt!69EL#l@*)s(ultrjZc&^70~+0>32xixO3^7X#51;>|hk6wcI2kV(1 z6RW6TLyar#63YtDecS{pcZ|=;WG0p?=v14(RnNla~2p6ba$8*PLNV) zq6>@Ez)T=+v-Na~ZEi;$E)-pq(%h_z@2{qh(%l~`D>@CI3v2GWvL`kX(TN9bUg$Z* zxzGEuy_a#4K7#p~?zTo2N&lJ=+il!0|m{-ZBenV{`%fwR3+NawOIB=o84 z#>}pxK8TDszckB+Tt&aDy%%#2Q(@@2A?sX3wTde|`zzA9Tg<)n@99uY{Ql**+VOBz^Q zL_8f|c0V$uV7;es*B^DCne3p3{AL%eXHbut(Q@YzGMJ{5AMIl+8f(r^FlDm{SVc!o zC>V$2=XB1^E>h`=GGup^Y1YzG@#LS)O4AcDUe}m|2GezekISi^9UTc3d9vNU;_H1ehnkN7WeMI7~MbeKTd^j+n&jyv3I z8Nov5&@cRGC_JQ~EizB%ssGBR8UriddUh&9c(@o(e8U5P;;z*NQl*>V3wn`**cuhxL1G{%I!Ks1Ya1$jLOAcj# zHiUioJUdp5RbvCLaX0MG3pPP*$>J&f1cPN1Ol54vnWaLquzr8~YhDzHK$m$%8zVz@ zPF9?1$Kq7YS#EPL8<`)qzYKKK z_jRrkx$ieCQ;$EgiK-dKc@^Z7iRI z7D=Se7j+SKO7V`ZjgL}ck8-+hdBXfAD*Wf);*zmCdNTstaXUx2X|>>0xzpVR{o6TXMAW@v& z&_rfNS^fL~GicB1@Y0renoT=9?h}4_oTQ>RYGHY2;EF#Y#M(Cng%p`i<|y`)VWT%e z*&yT~H(1A#UAFS+>z%?YB%+?fZ^m~TjYhVBEB?v5-?YF3aAjvjRg^Kg!}@Wk^%9FG zX;EPlAQ?vp3Kuo@{Dc$szi-8#54@(z`$kxx%;68R`Ar^|k^Jm+65e^Rt6Q)xR$HGWLXQ!o&PD5* zAK=BOr=}-RabO@!eXurKiDB-;9asiL zn5^wDq$*@1qucllOK==G|;E3V$)m4pB^*IoO;?gfWm>!V`(->bVxEnAH z+fv*YOqrLD>BKtv6cEGw@`q4;4*=F|z#;M#=};etfmd{N_yNjNTi%+bySdS)m+sT1w&3}?1K*b2YCfnYwoqQYJ$haeK6>>~n=WBX4u3T~$xkPuA zC~%d_1R(#S%;?C-ks!Tsy|8YVL=E1rQrof%)h%$9@js+I7%lxsLJl=`&klK`m%+F) ztg`7bN&^HZLw2Dh4o&Ms4D9C5&lxghJ6$g}!I_P~B)f?v@y0j%BAUCqH=2+tCg&Ni zluHwC5fYiObnsL__Hx_d;lT}a%73&@jv&jhn2eBv5;BdNMu|%mi^8sq?BfFzU`jh9 zEMMlhV8!rxm4=i7V-lhn9R;)nwDQdtq9%KncVkZ;($F#5{NSK)^*U1&wlo=`L47w> zIqyOmq-G>zD-12x?L}WGFdF0nESd)4)YlXDZTD0R`=AY7XW_HADo+dQXi6mU8wSB4djvtJStMWOb30(d zs@A%HHu4P`q6sv1M;t`3>o({q??%tk-;M0ij>`Q-4P6M9;TY^?cLyd z@*n|6ESi@87t3#;NJcQwe=uYu1HE1F;0i>${P-thuN_xJ|hVBbGE^9PtOS zn@3FcbYF0L_jxS)DTu;f=g0BhWz6+K*oX(RxJLk#3W&4nHC>tl}4${ z3Ipo$>K?<+Kx7up81Y1Sj|&(JkU$9nw}-`HhVP0KQ~(aeLc`fUSU(Io2>k!uSHs zaXNBy?IXS&m+#(_^ZG6kWc<`KFn_crH zShHB}+EsCMT<(kLd3oUl+@&tQ6PR=wbwvfcCR+^S$4a85^*s%#3ByIR)*#vXu;O- zdpl~tu~OPXWs=D)Tuw3{8@yC3m@jj6ejjJK^0=r`|4oo_PhsfTETl9p$QHd84Q}a4 z(!nITVHB^E1FQf6G|DY&5gf5=Z zYw}P;5C;s*aClyg{S>BUw;cp1g=Q95m}VefDGV64HxXHGR1oOY-w^k8)MCf)7pRLg zs3)UMhT7i$&(Gi=qE=>|d<0BEdfh?_%#DUlcE~s&wJ!O&t`pp$;CCIMs`KxQzNtHp zOt5v(pk;zRNBP}4l`K1mZQx&U*=F;x=AICq=gXRkRYY4bRia5 z_n3Fx$R9vjC8L+z3xF$??cZnVIX@YBdU>N%f8|~^ZL+Ou-RlIdd>57T5|f$%4+hL8 zf8H$cU(^PyHKC725)pu(ssAw_D@Vsj4TT#?S&HN&-k+b$Jw4ER=?)DsvF`2qcJ~to z;Lpj~Y*TkjKrVONzd+~!OgTXlZAFnLn-w870f0v}1^nteV1*rvIgvI1);!(2Z>KLt z8{<<#77x=uc`NU;!P_$mHhxvWCZ{2*^i~KV+?#CWXxsI_MqTmAQMgPNMa`UwmHlxgm^y=dya9@yvz* z4r1>wZUDTS)=!4q2r|X2cQXM9wKlw2VM_#SAJ_|ZQYbER2FRtrq!ODp-g}9^bc;&Y9uKLHKphR9Nf@QH+$ zw&ZLLe@HBgNG_w5jx9xo`8#9L@#nWLUs3nRg&UMN*l=XCMVucT_fNT!2P<~ngVWO~ zK}ZPw@ay9o3Px&n+yv4ycd@_oJ>HV$zDuy+Mr1xNr}giZ?V=?<{MwqYoz}j#RzJ7G zHD*@nd%ya8A21KLl746HwP|G`(_)n+plaDpMG)Hh} zY4Xrds)K@A#;zlK@-la)XgJkWztm{5si&)(Kn&r#v?ZMMPF9BXx$$+KA2Au>6H5BW z4%Ousj@h8sT%Yzt%Qw&HO*W>r?=-V$_9i*ViUS z-MDO6@c6h<%qZKc)e-xGu_(y z_K8h-*<1{TzKN|t)kPCSGC~vY_{X6NpR@eDB!}75)4X|?$T32=Jo;%~ZjSA%M%FoA zMNS3e0QBz?D{L~FMmp+mi}jvs2p)W#b+s7;Dd=X$wR$(zGcepj3-a5$yxE0^%m!gZ z0SL{d)io@cC-jG_ZG9=(j{|r76J;g?`OzO2rqRAa+q!%+8(GJ=S4l%3i+la@c0Yhu z7+dFk8{?C9P;XX($oI5g>Xx)(?rf`Qj#qlQrK-!DPhfQ$)%vpm%m{b5A1RvUdkU75 zi_vOn%<9|JT}{KY34!Zvt>W>Ii*_2;$=cWb(l-w!e!cN%=_oY6anLD3)I{UNKoi|b z-o*)85Ido2$cNUWmx;I363(07PA=_pARR=IEu;pmna5YPzmo^k3X=%Fg@|f6JD#=P z6qPBy4~7Sg!ocYm#nv6ScP0Z4&Rw`x59t7*lP|zjVo=#12~fsJ#eZ#N{afs;3;qw% zmHvBfk;C`{^x&=;GBgy;Fw=3J%byv@lK`745NMR7n6obg0yRNoWvx1LDd_5YUF3eGR*>nY zORDxLZ?nUK7qvVN_w&<9k_-cOZZsC052sdvfx1vHhPJrpupJP?r^dQ2KaEVuN^mnBa2MfsJ4!9eZ3g<`hW@{ zAcNtQYhw~um=Or|asC2?YFBYX169uM_1)b%n1R0@5fu<)41|kq3RwKJC`3X+5+(&+ z9WyX}@Qt?=1_TQKb>IjjVf`r|gU58>fyxsOI#af1gGTgEsR#^p{FnU{C29TzA5DN^ z9SR(z#<0FCeG?IKE(=`U|H<6j{}1l>-+sNBY9qDiC-(dCcoY^aK#47Dh*x7eX5YJ* z6F22Ho71xmtfL7WsK^VKm>?&}DdayR`~SMXNA~0MrM*OYe|uruvI=~4^xeXNABjq= zBb)-0QbpR<=pYcLUKS0klSPzpH4O>bU|#M5$viQM)7IlPz^>+;T3A$2aCz4hWDDan zE}b?Hb(WWXL2ez*E=*SbfHC_%foaptBqNARX1tdGcUfKWHFmN#{pjfdm)2J;iTG&{)Aga3ScHjLvfg$vHXps z-bn!IzdMowmi@al)ipG4Y68p}@riLL;l$NHr)nF??(-Th+YHG^xa?eKlS%mZgTT6; znRQQMm843zhXP~wLC#}p^LiHgryfbeEy4JxP8jIy111+DmhLy-^$Tk*BbMn)VGaa| zxY!c3FO96dBZBu)`$fsltE56mBcpD`YA*e2()m!G647g+(yHxHa;GW~8B9QW-f4}6 zyv1$u3kAdP!#=RZKvlO1qE1cay1bt^B+LXzry299b6tq{q-O9lalsUj84+mJXbqNf z44jadme`WUd36-QLN|~1olEmjnCZgH=Y#x^hQ9y3CcdPRa;e>4r3Bb(KBIqU09QsUv={s z-W}LHN8-d6FOd|N8q`>uysUQIZDW})bV$s|tbf@c>9Nr^x$v`pH_rrOc>8tl*`fVT zrA$0d90x_Y>R}T^n3G)ZbUiU_C3T1V2)CIBcMeQ6O9$!Iuv9EY!Q}ydW@(0O};>|5X8ri<(6zP z{Iziwf4Hg+tYw9tCP2RgP;S$UOG}u4krF^i=*0*;r(pbW(XCYmgZ?)+286r04!%SB z4fN^@tGa&?1>l_#!PzO6%VOdF9C6DQV81|!kn9wg+1Akir3e$#2Q7UaT9^(2Goqcv786Z`dk5s*Yy8+Np9Mpj%h9{%wF zvB#2TX@p!hjm06W@Scd#i8!HDiM)Zv6cY+%F~^IU4pg&a&&|O_Tt`u3_5FI0*Vn*x z02uW#a<@;V4>_)=ET`g7w*^v4;ru_wH|#vtk0LfI_o0gFjS~P9TpZpdxtJRdH!rDgsTd5Ho zn}MY&!NHGqEk1)!pV%wE>m0N`AC8%UweOXZ2w`$6WSowxm%JW~#31=7$X6mZdA_7~ zbzIio#8*VS5BZvy4)#56>7pwsv9n3IhwP&m6Jx0mQE%oMCNppicf52+_P>`@ zOTZ9fOKyZWl@O_HUarF=9}h~}R)ZSFu-|NA%Y+Gpyx=}vN)N^9;CbHY_P+{vrLJZB z0qv-qEVYrz?9w$b;1XS4Q~Sk0HGX3wqCw1gV#awP$1M2uw^(+P_)W~x6%@g1h}WGE zrCC_+B6u-jxU9zILWpkNrl_EJ=(!lvV6F=v)i1G%{Y~gKOx#@=B}&ok-(RnWrgh@bj3NcsM_b`j$9KZ`Pijty?otfkXxun|rg*A(Z{-X_;xr9g% z38@H;9&yi>YGGo-brfHS6Nv;>zP4d*u3|!Hw;ooDcJSKAy(O9Dp<%cgMJ6WsUV-v< z86&9eslhtwYTqsi4jm#yKc4CnlU*=5sxmQ^`efy3Ow|>yoEZ2$w?*$;TC(horiM(I z3JxvdPxcQjv?Kk9gBvJ+c_;vuYu?PI5;_!TWkYi9ZNk{!pzA!?_^1<9*lynGRS=@b#-WEo_Jk+GeA`KtrDB)==Xal&Zk>*&SveP zI#Bl~cz+|DfcaNcW|55#VU-n^t~jP@g$9BLgPsr zALD4o$PJDRsN#%NFzPQr4;jH{%`y(> zAx^Nb&EzDQ1My`Cjp>*zG3B-)9B_1-aXVYL^P#xlg6WMnmFWg2CbzvL+Y1@@M;Fey zMhD+0?|mG%n8N+&8vC?@#Mx*ya=!y%0pF?=KQ*y>UuKRm?eFBZlbx+XZqu@dZJ2Oa z`tsZ(B;rm0>zuzUvTFAtG*M8j1lwvR>v<7m-cxWyuypdWc$D2BS*kg6pt^cBM;%vk z+4IILug`gz0mY0V$ji#ENi8V3=eT@f$@QN9KK6cRoI6{c*x)QTkWqAZ%do98Vp*(Z{@>|ep#>DH3 zTyK+^lt!wQ>I2TIkqywg&N_7dwAr7{wif)4De+GXE9~<3I*k+^tI>sqNJUD_u;)K% zeu5Vq|a=hvrYZ{SCX zisaFTM@A+{as#10fSS}$4k+8wx_}s*l?X4!raVBZQ$CBJvX|N@U}QP|e-aHKOE4sj zEfmscz5X$n=66@i4G22aDb89zjUlG@XZ+CrKTX8HqlSNbi->8}>dR1#>`ZJzz1Yi= zEwM|@$n3ZrI0NR!f}rzQ4Gr&S+pyl-2|i@+A@*{l=5v`->~|>1>1kw^bc6I3th84k6Nvk^_XF!tzO=1|wO7cGxr2fc({i07XUawK@By?O_pR0ld zz+P{?P!S8?!M=aLjv7j;mX3^xn}R%=k9+$I3T5cPP5{37N4<2SM6Ka6g8;^V4NeT~Sz;fF_L;{r=Qz zVm%rPhgw~&NRdC52@?mpO3QS zyjB%y0=shFb;cI?QN`&sK^0MXNFC^g9`V}#trucDMyWl?%6R6c{_1}(ZaqE8ey7^y z-V0iX-5q+8x~&)A4rGvAIBh(RJozD}^)0NVPD%@L+MGssY?&NT$sccJtm03v7 zME`#F?r%HP`)+7=il?nK9$rqpKcgUVIM@c!)Aro9SUO~TX8^I|svG7Ek4K&LFlKVE zinW`-B+KRat2#N*QPqmJ1Odg`f3v+ z!QPN>CzadF_}USS@bmqLl9XL{_~^IGYDzpZDa}dj(|{+mmUVaDSU8>r)A}hA>Al_3zY+2j)vVs`lkEDH;0>+kFfkky%+4Aac z*DJ&y0)Q$ygwcj7FL7pQQ0+MV;?vKU`NIl~gQlC$Rn3-)3sZS`PF3*KB=h4aTZqx# zn0|@8yk3T_=MC}b^LBb(yYnmGs*F7RCCr-g_WYEn*N+@P>uS4a9@4|n(43MHu!uzd zP+!IL3vnJ|P6=luSq-jut8lOqL&k5lUHpuaiofs@B!zgCQl$^{{6Q~R# zfLS78a2659iNOOoVBot}D)_|*3F3)?K9*W_u-ry1iD+zr1+}@NqQb^NoD7>U02EKO zQ8J^qDp1+pNldF7FV`z{Qh&lY3*Y|a(Z#9spR{V{MpB^f;ck}N=IRbGY3R5EB9~Jt z4^euWnUSYvZRNEkS7coGpRdrjb6a`reWig)oVnll&Vmz z7=!(Avsl854*C2keuyhcG6;B>?jZt?LbQ9gQG@Dt{wP>ji%ZnXr7L=w@qhJ`0Ylp? zEJ^^Xb_~WJ6B2w)U4sCB4Fw4q6Zt8seV!axM-?!zq4x_1ga>OaPsg_czx(=MoEN%RG8X#h5{ruPcbHeu zIHeQbPgY^Vf50frq#kP}2n;3<=_lb#;*t zL>hb!P{Z112J^)QBL;{l`G}EdMl;|v!GWvR8`a?~bN=j^E660qpdUmtLr(|80&-K? ze~KuJQd?Oj*7Q;v2%|Cep!fBL7PGsy}{1P|9`doASNDG7RbO&DZruLCQT z>6=J$N+S^7K*pR4hcC?x*Z`;MtSc%eB61e0hUr#b2Yy+e9X6K2ITenP`V z?-~Kmg-ZbgnJ7g$A3cN{7|5j;p#!%xNjYT%_=wi;M^paWU|OJRIP!r3=pwk~@8VPW zopXnlNt5QRG|5svoOpkK>&TVj-8`{i45fk%4WW_)4hr$ZO;jlr1y+OAzvL1iyuiP% z7-B$T(bfqB@A>+Y0>uDlK!&1?4W_--u7J^RU^@KX8A0S9ctOoTiE24LIM#xhzlRqm zDqK_(9UGfG$r+f?7bO}skOh2rW@(r$0b=u#%O zE&yZ%-Uh;#c3r@NCpVB_wCUj!yMESEL$}4wR5Ue!H^Yv;K>feO@*4528Rkx!{_&Om z?$mn^-0i-!00(AY4 zOT1~@be|Tbg$rnsZ~NAx6?F;3;Xxd}KrEr<K>+*~Jfyhq1{qv7sb7jj__}!oT*EYa_N&PQGvyQ@n1@N&j{__)Kd4*P1U2bOElZ1&ks+QgCPPdChX^v_uS`=mm zZ(5R~e_;VvLwnZmc<%a{-)Ig6q_cN$Pus4N>q`Z_>Q46FBb|8|UdOim8h!Hi(%mg# zAe17ucx3ch8~GCoh-~`~ykS((j}$&i2Lr=65!+brdB>vh#eE`6w|rAwrf(Z6I4B6} zvcOtXh8R8~ItFp4I(3lzMzym2WtmnL#ys7JhkUDi@p;?ABYOnVh)JlC@9h?@@duQ- z#e2CAv!)Q!)(_LGyp6&Wsq9tAV4B7PIrkSgF!&tHWqoAO)^BevQrC;4J2ua10EdRs zWbRFNDT zLSum_Ty@TG9oO%+md?QiFCoi!OBq+=*d`7Z?u$zwDALKV)lm0)rdVFom=~|68s?to zf2iYr#2Pdtf|5>Y`3*`^muGMrQ7PBPEii&EutOCu3VOK!}&Zr zv?6;rva$w!U<$DEYo-5ilCI3>Cx~AoV3f)uba|V8JBgSKZeuQAWM`tcdv@0mOWVIv zmHt!6tvLkIP<=Z0vleRm4ihE83;jNgcD(N}4Mkn}6@M02zDv{P*U5#YTrahGlstI~ zme3uvsJ`6h0fxlDcCtr#8eBfMubiBmn;T;ao$&Op$xlpu;RJWQkH3%jZ>7aUb77=V zrHTkDOBkChUH#m%qjR;PWz(ck=K&sv@(rBSi z=gByKIV&WUc{JbEo)3oKpjJEpjX%wHs#g<<5SabmMf*zOx%L25;Xl*WfeNLkXB!yl0&L#_T?oT{b5qU@!@!0C4N;H=;oD>T zQeT&O@-k!k`&_~jWc#T}0K1dzpynTe2H<|k|9A>2{zt33YE4hC`i6rKYJ$?y@dm_u zKvN5oq)-Z@Tp|DnSyG8tSG}o{1k3RSE5@Fi#H)U-`#?bS0LiZ6iXmRA=W%2}Og*sg zth76F34J>6R*5{4f=?f4?o=~f{NuIk_*?CPr!au#!SU;6%~|h}*a^1DMje*e{w5Fr zVcB^9ujb0pJrC)Kg&du%PCe!qHEAE{ZV{kK4~$kaugf&IGFkh45ewL%A+GY70y`%} zbLot(=&m=8cAu2nySw7V7{7L!&V4* z)qil3pxVnWdpkQ|H22z-ym%_i)a?!avcqf0X@oHmBZt`?&BSE_foJh;+48QoFPty# zrzlY&IuNkzXd*lldWS|h#Kn*z?xZyPYtUtodo^)RH@daHPSAl;eM_DUTL>WvqAa@C zh5I}hl3oh=5+so=%uwZgL3jN|xF0>)Z&8Cb`ZTe}e>F%@TR`_|OU;UUMDVukJWiw# zcVAX{oW9dW88;yMt-a_u+pAPv0|%l3a~UEH7i*&U4JR>iC)I*(g3CHM!A&)IK8OO_ z$d8qY7kwzp(s5;Mm@n4#Xk>UcrnvwGO3vv`_8X5I5eiMX?+^zfTvZcj zM>>>=ZlIjD5@AVn@HFn}GPO%Jeva0W)EfC+h@!R%)kIUV4iSt$O&S(5@c#HtUHz{3ac!3i>*gP6VsNzv&a# zlsR;L@S5bw_YNdd_?s3E7IAYFZRBXEK3^E>-xKq+HNclE18W#19VD7$%1PzadXinJ z4S8~UMBd$r(Yg4|)jj-a7io`s+!?A&yYcw8qTnYRi4JD-EK&}i7fJJuHb@Vu%7~5^ ztE_4#3txOji@69FfhdC-8X5(EX_qe9rL(hew~%i<$%V$}5UKhoZR*S3fPwnolk;zF zo<@w}?2`q&R`angtStn_JAWR?;cnvx5f5jutA4pX0^!Gc<53QGlk3;;z73NJ3}TO8 ze-gZfV%{-~h`414THn!u7y`CDq!}U+Ky-a=>=GtVMvmJcpgG8Ca;>#*7=|xi`qL@( z^<^Xh$-Md2zRmtvw? zFVvf$^_unFX-aPIjsualFyQ7JA7(Z$(Z9~JOu4-@MwT*92gif`LvBscgsw>Vr%v~`7fo;E%1a~UoMn*^hi!H8$}(@3fw`Bt3>0i0J^t&$D-*I=+gNDv3Ms)ggYYs|Yq zXkd^F92+}%JMB9`2#{r9=xOniGK7rg`BC;_>W!x@j;+lfl zgc@oZME*5)Qr~;52sviZaX1G_6oU}>phgij)vXv+%0m8$A#)yMW=h4 zwzme3zG|&|Nw+fw*xQhGnI`^5kI#2PWhp^FC zn{eU!f!p@FGc{V2v<^n%VZ&gh!|`EJY!qZ#Hct*eI@mA_LUrw^Na3=o>*MlwuSMlN zXY)ffvUMbs7EnZQxr1)S&CSpnp zkNCFdOm;ch;{zKCinBIeqbozZ`;ayu9)OCFme9gWY@~ykH~GuKq)U3DgoFh6ZynQp zI&ARjlsyV|Zi}ZLiQu)C@lA*w)G8y8-tE6jCE_f)cOxJI12tx6C(ph!nzV%c(j6q; zDc64a#MlKc_U}>&1O02L-!Jh6-rM5AFh=nL*neQDrieeHGM9g!uA>);VT)I`eqVS0 ziA}&@yPTC(8I`)jp@o4cp1gDbvA!AsF3W?9pNddeTYa)5+w${XII&?LpHASTpp?*x z+G}742NjoauZolmcxIr)1uPPu<_bU8P~s_CQesu&J`HtwJSy2n$|pcOf*3H4ATAzy zLx?PZyc{~SL~wsHt~65mV4FfxA$x0*VX5Ye+)qvlc{F$Q9S+UmbX*p3x8zA)UgI`e zGvNhR7_)cxxPzQq;=4)-l*EF|>3A3>$5mA9#b&i&jdknZt>e})m5QzV_$(yB3mZ3y z1JQFlq$PG&TbI5h>SpSJsU0JHWy6$Q10c)ORO z;`zjm)R*TUdl%gQ3Cq{OD{)#L zWhAL5@TjNWc+60}fhGY$9;*11cnGxBASP^l`zY+QoI(`aM#j(H`SWoU!rM{h_R*D4 zal{By!`&6~@K;C)?ugV*L1jBCVG%e^>pg#kQalo1q!V%=qO}AFl5TR#yC-=^#Dv zRHM#ELe%%|gD0(M@M6R}$^$Xmjac?0>e&>%!MMeylsv%9J7q%(Q1(Y;>>o@OyiEDa z#_zkb2*XMlv#EssJziAcOv`^mU$Jz?v>wQ!W@C=ERi&gLkz@{q^>+0XOsu(1cogV4 z#5*z^+HBOJOCa?2oV^{rvBN~HR~zpmCVM$lbJ_s5Aue%m>DlN^a3@;CSx4m*rzlbV z2hu+g!45Tsq43T zHtp&{qQo-e{KSY&2nxmvqx(WFLiiz4wxLD-j^sOgcHGN!{uY;Y- zm5oOCVM`5SZtFxS3fQFqtNDFv`tM=lNbS>;;VvNr{6GXk><6AGr5r{O zsGqM@KO~dw3e#<9s$e6%sqs6BRJ`7(;&rxsuVVXp{K2h7Oij?;UC|LsRYxKANyRPV z+ehv%alt#ZeGdUz3d@HqDuC)WMUn1{T=@6nqLjgq5Cu(#*2uNrMC6mUVnQ)=X;QA~ z)NWmRiTRuAFxfDSDf{8F6Opsolo%U38+#%tTi{w8YkE5LG+A6D5?ZnUo)%!sShWm{ z#JuS5`mFo;^Z6j`l<6@t4q7L?x5iovulu`3K~Yr5Re@+Rg;HcT?Q&Ps>N~Y^ET7|8 zoSA(#?<$+MZF0`Er^Q#gv3niV>h>l`CPanFW-T^F8SjX!-*O0r)SjqlQ1J!97&pI} zh*x@g`b1^d;)J+j7XG zWejs7dHHLgc#*Z0X_19#GAf~zR{_aaDB*#D`)Xqf-z9`FZeYgcAK4Z-b-(uheiJe_ z_T1`f;BJ?#T;GL_@B-%@?wW&Y?OSvkduz{5 z5Z&R?ak_QlAD))vhTy42)JzBruV2uEJfmBW5*-58mH;3vQjWsBVoWPy19+X=cPmcM zs+$9t%TCYCosK;o$Wm#WdHXWHW%T8`Lq6rSTpH(FLD}L0K*K*MjxMjRIXGQbNDja5 zg7A1wCs}Q@KPW3jkbuP+-JXkkEs1^<#h8-|v+$*P{Mfu&< zmoNHoy*fpWLKQ%cM0``#F!E}3#%T+s$mnOPAnH&-)X4D)(X)9Kk9Y((Wfg zGlf#ru}t-CV=>g9+^>%wb47^lx09S==*|_X+Wb3*k!s*!M7=tebU9^1{PtxkvDG(+ zp`e^t%yvT;|FYYRWkZC3hRXJzQEE1P58F;^I6=nIKQYK{bh1(DKL60r(R6)Q3tH&Q zH&%1(*CI16Q77B$H~HZ}eH8&8u~H?ZSexr1i(jd*qzKKmW~sqxFQf$oO(<+ems75m z7p~o(Z@aZa^+ZW`J~SX`I*aGqpgYT#G6&9G);TgNXl^1;n_)C_Hh{)^dY&ICy(cf0 zhkFRx)XTR;jds5lh|KQdudVq$F)dAVJKUvQ$Er-FYl@33=&?Qgc2ZmAVxh%ZA!lRt z`;zb^sQ?$Q=5zE|R}@Sid#U-YgZ%1AFm zLdvC7wR!+BwRg)!)FCT99T4XA>LuO;h43MG>xtP*njVMX z*>t+Z!=Ajn;>z<;gOeo6p|P?aMZ#>RIG?6Mn!8XUE-ouCmW-1geKZ|QE~d_^pdAqt z`J^D}0@dknJNjbS81Dhup|>ATP2P{yYjs&FP4oP(uD+>aze^=_lxCyRFAFv5Xb6`z z6&|}c;!lSryrL=ih>4BdT&oB)Y0XM#pH77Z0B1)mVNT6=d6Zf*E2GrV$vO85hO?`9 z6(~MjFtg6(`2CSxR}VX^|E>Pp$yU{v81rN-+ZGKqm}Z`ex3lJ{X>6}=xxXH&AzMbP z`xf{w9U)%Dp+yB3AVHLfpmvNS(>HrTS7hX95Dg!yac;=3zc{d3LS+li4{g^7AHiu+ zqM4!=wq)d|ju>B;wq{HTdobVh-w+M<;C~!E?g-tn6KCo#oBcyC}D8>v>P5J>eqA0cbh*=XS z*&i)Od7YJ~gy^3d+4$Qp@*>eln2xTr>0iZ(DvbVy8cA7Z*B=dL)qKy|ZV5ECJ|f27 z$V>(_L&BZFD6!#o*P1`SE%tlPJ({&zy(XFwKGw7;@?O0Ym(0d5qigN`QTG$n&~EE+ z2pNVnR9QKhoe{Egbaj&-JpHFKT0fis+(!HwD|?=!JRd1lejZ+0Wj7|NnJb8MW>x$(7bfb`UpUky#~;S$Ua%IRK+Plc^4xqP&+H($zPJJZKcj!-G(kJILIJ17yG zy15Qhc4(mcWTh{<5HddIre|kBE)%4?C*5?~FGkLssZ(B3X?^YF>9EM=^3!RAAamH! z*hyI?vmrYntQnLdgZ-uQ?wijbS$jdw-U9MYoSkHepxn1s*XL#tCVqikOnj0m4dbz( zHve&@UvpVjECUY@ckXm_)s3qJqA^IiI3?H9AI`YF`I4?bJUo1uE);_nPb(QviB+yM=0LqKb@%EJ@KTU} z_$&C0d%L#*^HBea7k71e&I>=;y0re=V(TkGNM53UL&@fI8v^M{%+yX3ZP1(g660Qa zhv}0=!=vy@zO((S+3fbqUi<09_p>o>B&*Y!avrk{?c!1GX4BzR8Dn$x`-gX!TJwU) zLodR{?c1ww1GOv z)ZE%Rjhx~PzmY%C5UcJ!3CNR%~b&71SaoJHgKDYA)7LCVI zOcwjfh#{cdrpOE{IwFGG<)BC@mBHfYM6`wSBT(++3!>ZvAAgNPRh1&72i}E_<jgW?eYtv{In?X&WQD0Iquu6vhE zsUbJWTx$x!TqY5s0m2&^pQ^pMJX@s6>K+}r>;1CJRpkeM2pb|n19a(gKQd*@~nIV-pfc9UK0P%6-L@VrV`lG9OD3jig%Nsa1X9w$LH%g` z!syB1XAFF__wS7WYqkFVe~P{^KY8a(JSj`SJs!9?%0|6pz(^$Ng12kBMVOy(a8%T9 za=Q%;9t|rw#yJo3Ej|}#q<2X7{WdK=5PA-#}1t#I5JLBQWsg;m)_X$CocNAP!XxE zAL)M{ga4d}|GRl(o(+Ia;_a^xrTIqoSY=0FmK8n2MG5N z`aXXlBwUB>8`;>{l(nTv0tt(i2kt~j&`HVVENpGZ_N!3pGG^I^l z6m%Otu)}k=cG7<0IH93#kA_>9iAssD#0=C~uRC=<+9%eMw6WN%$u}F4mcXNBpG_Ybee%>ZKs`Lmp3(C3@_1nw8^05FbYOY> z*5+=D#6(p@qqi~k=T`NtMO<%W;z6mLF$h#}n0xS8UT!6F6()?x=;J6!Bc z9_NOg-g%3^=W{??BTnGD{?6>_94|WA7o71S&H2_nn}xh?z-}X<5>gnYS`#GG%rj$u zbgv{ck%tS_;1GE3ghno2gY<}HB}b)^OE^7C#@#yzyamaYZ>n%Nl;;=OZJ(){s#zTm zYM4dgdrB+NLtUII&(BMD<=z($tW;V&Ga3y|BUhy36;R)J&w_6u>uS0{J321Kg$;ZT zTg!#KGlLx?uUgyZlXaYvr2Sbv{7KIP^&nXuHlzI)Ci7RcskJ8f#c%7qJ78JAiAhl- zP55^}&qg45$9l`dMl@I7)x(tGV;EqfBAxH6w%bkH;w@ zw;A2YPr}=+N60g;HmP(PGdN@U6}bS8hsnbBMr^Z^Ol|xb5W~sDvw3}PoymrqbOhB+ z4{JH8%4)FOE{Ziox_?NVE%Cwq!Cm({xBB`ChZ5Z^pOl5*?!a88%0u~F`To|TF5`A8 zzqBIS=F#@rw-&x9s3eyOG_7C21|!5tj-_(tJ=8#_ptHOVSwu@Ku^XRByYalg61p2NmiYRD zS$P|}T+e%`E)(9G-

tPK>5B0P^(I1VJoRv5uDF)F!5s)#97T3)6zSU*5sIZHG+n zGIdLB#%HiVEf$Yn_ao-XMqDH7<>@eKt(1Xx*T+K&A#zb_cMRk=Q5g&=>AVWEuUTgk z63r1~jRapVCd*~;Xv(PsAd;7qnca-l>V&9xdW~KBfID}0{guWp8V;;3q?%jbrvrEO z_{1{n#q8@aKUKBngdpRnsw4OLn;1cDf1mdciIYyi21Qs7TF7L7zDjOo4BU z{=tTJS_a<^rC6ITDZB~9q^@SP?x+dr_6cEOVrA}5YiTRE9>(Y8RrK)7M4Mb#&E%T^ zG-Q>IrIIoNFBAhmWjVv}IHvn)!-@tl8p*}2%%)Y=xP0l z$XGWU^QpIRS66&Wq-G;(w$h?8E!Oq`7Q6l9ho$d*&quyT(czNCh@&Ez8TPRAP>Pm7 z=%8~wOX^Da1aY6SergrgwtPD;H&g#eVWM)hWHq~~6P1x!?#ZbZWxKLThtI+M=zfdm zy^+yD+m>KfOifdCB_$b}==!9A#c`Qp5mPG~PvW@1s)SgImU%SuC{>DIt|Z%Ls`v{+ zb@++LLe=xPe{y7$%?g$PCM&O#W!~}nji_7;8EqC_ThR#38yMNd?6d`BTbt3=QZcYv z%RZg@46IvKk((KgYT<6#GZ7L0fzZ^JYM5WUgcTWU#tT-$>>@a{CAK6$By^M2&!DI*fhDi zJS^V2Wb=`5D$>pAW$n)nMO1@ceIGe(u4cT-e&&NVo>IPFdqAUYP*H$zK2J!8y!yX;`d7qS5y5wPU*UB*UoQZqTYDEI-UZPi*XLstu;mw(lKf zhIvx?m6husuDoEaVhCY731~fYwlI45BQ}}u{{@^p=;Uh4uPn3(CLB;%^?3wE7g!Y2 zt*FPRmdfgRufAJ9Mnjv@8gemHJ{O@TlrlI-V_)q%Fd2@%f3k0~C-=H=JyxXCzUi}L zs?lswrc*HisZThrdr;3c5g+vAqdo0-mK0lzZehgVzj9krNoWE|^+krO@gy1)#Ca;9i)j2JZkUTH(l6iMjC!+EMT*a|HVh^M zu&^-0ofHxT1D4M^xop~wtei@-detcbsn?Z8B0rYO%I)?Sls|nofTKxHIxZTMq*sSG zDd4$iJA3yZX%?k}2VV2hBph7A=4Iud$msQW8(@!@uS>YXOQK2iVSC>S%1g{AuAewM zU)f9t$xVLcYyFDguezL9$Kj*~-h99HfC7W*9t^>pp5OC0K#7PqeI6Kli)A82$#p@a zlE8WrLJxK2`sUp99WWC$^UZ173}FdQPaOve_X_1^Hmbm0B#ZY!*${R^-xFBFi>XjN z=m$diPbOmN!D1a;Sw_FFfyspbYt{Kr>0k0!lDC<)N99(AdAoMb+n+wfrQr}R?Ybe; zY47^)yW`I{>!ot!@K2&$yR~lVUa^^vzCyxRG^LObdJ$g>{K{pQwo4qHn(Xmdme*R~ z++d%MT(Ie4eBooW@xw=ke`)kK){D&@{u;vHt19X#=X{!RvnMWi^WJNz^)zyxbQ!NH zne}TMjB=~FM5OEGef95an>}~tNV<5B#ZsEKzj^3a#C5xtU1*4G#X={~pcLU6`isrV zCws=7_^IBSSxNl#2U9D&w^ys`_kqLOEQ2Sf<-8)a;I#AFUCs!6e#Dkx@Y10JWN>#h zg@;a9K9jPK%U+O=RV1_JLLSv=?Wlu6U;qVs`k^yc>CbyJlatco3Pr6g3FH%9?A(Es z%bfyCHqY~iL)&KVwYZw5uxjv%oPB+~<_BkDCJ)Ev-(ReD??5R(^CCRk}+ij_}DP7#}&`@5EN_&*oE0)|Ia+=Ol>Awb`Eif%RPKB_>=o zhN{W7sAlldQf8gXx6Cg*B&Xp};?0@SPMzn$x9h`lWwW|ZO`ZCkw4a04GLIESQCCBC+mCyAY z$i~pm2ZoTqL$fNVKIwqNOwUi%)c#?0_r@pVwOd;{@LJVbfq1p@Ab>h~IX z5jnit5jCX)hL}z@0@I0{pVM5uf3G7G)ZQ5j)X-R*=k>>wRc9Fy$cYs+x475IrhV7l zk%AuAW4fG$a@}reOd5_1CvY>1?04-N(=%ft+7%6=u)QY#O7L>o^gUF4VWZ2qQ-`p& zvHDwr!{o!b3n!tgtmR>Qd>t=OY>SDx{?yceU;$AX-&b~|Ok40~b4HhIXpPr%xCv72 zmbG>2>942uKJR>y_!bR+1Gl7@xKxBuA|5~hYmoix*JOy$&`z_g!rNGUu5!DH;Zjoz zevP)OKiP%z&%khAT+=OQEhHBiR9v#1f)sQ!u2lLCLwU8iyMXk~Qy>G&G!T!+cGe>t z5=qAYos&;krZ7LE^ikuIVvThZT|jTIchIU$HTG&0RIWbsUL|is=4^YDBpRC?{JOp(&E4oCAD8RHq*6rb&P=1H#RoM$}ajm zoH}5}~lTh6i1S zcW(&qmVpJc^&ds1A%THsHa3X`1)fL%=(p@Q@TQM^pgTCY^Bm#;5B3L`h?2l2IQkGo zG`6@n2=~ZIBOMSFEE&K-o+7p{=%FG+q3SdRT;fhna43WoHz`{dNc6@~Pp=^}vrU>! zk|^e#KOE_@%KAzYAW$(`W63g1OFL|O@x|EzMF`%f=*Ncgz#98Jp#7g>|NjS(`@cMh ze*sQ#d)j9lZSeEZq83JH0bPNX$35@K7ArI0R9Q#?93yPP_xzjJ5LW0`0lErZZLNPQWoo&k>mDl9^|3~x zVgV3XzftVrH`(4q{U9k?Mk z9%+!4WVdvCzD$3l66!Ua?r7sX+hdk{IEUiedO5TWEEIUsh2L3u-drC`%?w15+^!sp zz;-LI)kbu$wi=IDF_m^l(7a}s7fEwS27uIhclsx2z2>Dkgsm%2Pbncxo22;H-K$Lv z_4gylPFJn>%DYrEuW>VP$8fb;Y0IjQznWc0g>ymU^LQF&Yx`FUV{N2J6b4soAXmpJ z()pL`yvAPc30|4fHEP3+w4s{yBQswwFXQl4*q^6D_^5xoDA?#)@b)!ahFgF_FQExm zwY#5HKHK?Hi2MO8VPE?ILzzff2Rw6&*VZglX1!7_YTM#^)AEzfmO`BJq*sM8zFL?M zJnXJUE3UM{@&ksYIXC;!_|(&hYAVQ4Ws)SHcZQ_ZT_!(y4WRB`k14xqn*6+>&K1H4 z+l#+NYs)qswDo1INXBuMgLvgSy{-<~OLl9%)exLIzHZJi(+`k>%kcU`3M9Rnz(jiu zyWq*kJ0=xK20}eE)CCwyq-k(Z!^Sep#x1XU`8p#R1M4FY_>ujv?sbZ%y1+nGd5evv z<9XnIskIH=z6mv;(68|SdV>o(*u;*8RJj%ny#`~Lq1bF zDJGy#Kbh@zM;AJ~8+LXOsd%h+Aikv9;UJE8BQLbS%!mg zc6!ShYP!z$7gBP~aaO1$fwzN7#Fr&xTIqrt71-v8!BjHQ{Cxb?*Y~-*G?_xt`TEzv z0o&r(_FhX`(!m9qTAMwZJddQ()A>{4@sbi%CG-7`c~sPgb6sQFvNpds-z~TlK^lod zC6lYXJ$54E_r}JG_QoXw?v(w{#Dk?e)32d)!Ur zzFg*!0H;XIE`u)^d<09=6%(^;mi_89y_bm|RWM zeRNG}M)h4*6=lx>KObKhVI=hOd1XhF$q}MuiY_IRkGU@ftFfm;b9+Tn7|h0pUPhb+ zyk1*1RKz&qGp9|b@f=r*HW5w7Jr7L*oeUJe8_3{vQcRtN>fspC%B@!0S(x)@9*$zz4(zV>r+Z1Z-O>yh$UW}nQ z*nFq8$s1=@jK_~2=QjujJr5VkDP<~-*NWLS-PhPOyejM;UqTeK^73?lRY9Bd!QxP@ z@hZB3H%}Zk#QAn=^Y?y5#r7q(e>{H$M7`#U!YKP9)7wXZsR!JCjM{N+qWqe@tmbl4 zQVHr#Z*}r|l-K!0h#s-s@2gT8k|vrrw4i5_V+-urEvZoaseyQ^reH*B>hu3%EdzeQ8i-24dHOO zFahje!&APMl|TEFK{ht{%nFypR&YvbcW2;m;UHIATB4!3p+TT<5`N()q<|<*Tt>!C z9316zfzGrcoWh*}Cqt4Zt1fw3Q#g(EUw9>UPLD9~?Cr}ncIQp=0cWq5p`rb#sI2hh zQWXS3#n>vB;&>G)L^*jpH?=GUVl3(g)U#6knQ~U75_8k(BQ~c?XIhS;!VI?%4sA4o zbASy61$TaaUj#n5>2T}`IEBVH+_*C()1zv_Gn+TcX=0J*$F=tM0RVWnBN($;qmbfmuM;zMj;8aqeH1sneKA9x>=_%4z_XXslR_@;6~F;!w(lo|Si$ zjBq@HfC3-ZU%&iIM^!zBgb2Y8JXGTV=Dvs^m{z{{Hx5w^jWS>d9pH@P{w0gjV+yAP8TP6d$actr4_k;L-nY`R?BUSU6C!m6#_Eue^ofza zq&A&mJ1Q+-6**a7QBCakMtl)3BXbGc>3MnH*~h2Ck?$?sH5VML+0q)+&uLLezwS@QJs1(OY) zV<>P2-EUP{I089Vf@nW~-=JX#hY?oU-`+hIP88R_&+OMwn=PBHFj1K;-~ ziPI!9j36n#0v<4u5fTCsvB=OLnw}(x3$UwQ9bhjSZf3z_A}{_WdwBk^dJ>*v=yM(Y zmU3n=(#nnJ?6@r|X| z(NoU07_)OH!%TSE#5h!AQ;s6#8QA5tyZnN5?&(kA~^{jB4|4T1tfVvzYU= zcf2Lc1g2ei5vp1pTQLd(m8~j;IsQc3W%<&BIoml-*RM%L=yWl8Z4AE^Eh(q!U3MJy zRt+vD*^PmG)7j`7Zzp@-gY5tCP_f?9KeLln9}UGt6Y@`Q;4?7ZmEUg^bW3z;>h#B? zK%TjD7+Ej7@BO>5@a9h2p6}_rdJ@{w4?#?&-y_i^Q7&vL%NJp;9V^75m>7>uZ3TJ1 zQf3J_o7-xSA4Czd(OOct$mJiOj6!M?s~OSqDmY-7H6bI9`P1gbU#(PCl;BS&-yBSR&Hz=mHHnUFqAnDSC+Io{wQMUfD^GX>|1BF!52G=UW20g!BI(=asBFwwuS~i zq2sZAXFl0O&IRhTxA%Ao%3Gke%zAw!k%;_mig)QOJL6z-J?`3yIA%-3Ka=#*H*ZBE z#;1tDk?9}r$8wG0Aqz^~3t>23?9us^qFM?|-UZzRpK`ij3?|_PS@py0bVtxtnKWKZ zofG9Ylw{}4$LI&|OBg@}N`7LdvR9n)DXtZE*YDs6nm^m@*8Iv~>39d5qoX8xNj5AU zouIl69i*CerDL@?RCaNps%b6Ey@`^MlWT>gRq(A(Vy&?73c!2qMQ18h`TaPv*gtzO zy8>sQnW%YdFO;-myk&Z}iU8SA_nBH5+^f$lzdu@cO_@Z@s3)_nuru~okoJRtT9RSI zANQ~Bn~f^MGSK@p&*dK06JnLfR_CK-z1&6TV!OYtwk$7>#sqa~WE*u?_g9)d%WJOV zHa@h@&0$I%x&@8;j0hVUW%#-X8cH26%HchYa50A8NG?WjMZWg+K1i^{xM+F`vT&1o zch^s{dZf*^5i024`%;}*nA1abA@n?5gx2&j6vTa~E+XI)DS+d&Ozb9|@S1vyZyO(1 z9Ak4M*SLD5wHaM#*S0#SY36xXIQ)ah@MGx&T@q2q+li#=p?-uY9&8y4ILX{l;{Onf znR%LAO3;su|KY~X&PyA7kRRjB`Q|KYB=aAk%@^^x2i8_M^d2tI z*mCYq67dG;B@kurMfveR(zG>%59_fPJQ~WqT2nKcQBdj1?=rE}xg&T zB{-h>B9mGv1R1bS`uEWpLFoRI<;gf5Qwf$HU9S{AF+4`CO1GVMn3qZo1{Ur0&*pdc zMns}!!(IGlzy|ln5uv`#i2_+vhSHMDf$>_ZIE{+&N%DAYAm*3+C1c{nH zCq3`c)jf)tZm|);DESvAHhDc=MZ2+?G>+4JBF?W)(%;nUm&7od_P%dZ`bcYeH1BP_ zWwUUMAInclsn&Gz<6)qp`BGN^odDqp>Pvdwm>*F0bA3*0xcT!gQbMP&)~BLF_vA}# zWwKjY2F@Rt3%Oi8W=5i{%+KqFrv{@y>5(6(j0q=;ZbbWJUIXe=L7e0hIf^~TWu9aK zkH4C%mEB6C+ zZS~K-a;>T=UbdeSY~p@|K1s$vs;)AD&riGCRk?RunK7Si?yoP?nRHD-DBHnNU5q#* zTQjC7)XOk~dEmfrh6Y9Geg$%k7}VW)I!vov;@z*PD~b3s3CRx4S7WK5T=MRFM$p-a z%kxq*NKOD$w-ZL?Hk+vJqA$7QAFqFJX1tmi?~^Mee9+15D0#VT_4%Or_;9BAc88zM zB(r9f6v#`NaX>%aG~4!AaqRVedXK*Hi8IG<{JY@g_m&Xq;dD3op`-Z}tH)pFG;>w2 z9+`-PV^XNN*mP~}s**;o50a%^6EKESell773AgJmiSV!aqo`D6p@!%JxcW`+^c@rj z{G{heo!za5DH))8tE_fl#Uswcw|`sLQe7Fu`Sx0hB^i zHW{X}(IUDq$D9uBB(+co-NfR(yKshl_+Va&XFh^QXUjyPRpkDfVpB;m$Zx8;e+G&o zu%{R_m59%$&B;p4$ZKQm5oIm8P))H=FI##H(aE7*0;^0I%eHO>Fe&woKffX=ke-o~ zmCUrYVPx#cCYngPH*pQp_4FYU&-B|G>Q<&L8C-7Ml@HbCb0WDOjL2(@7}s{l>%L2# zm{XK@>d^XKlLt#6k2>NgQVs8ttXvO)h-G*moj&n}{FEUzsd!wUdk#a*VbGwM#PC)) zEmRvAfw}a*lj<+uI1;t$s{X9javegvdrkjd{Z#$H&X<4NEF96hX4s3L1|K2Qd*`lG zi?5$D}|mfN4V*kvx~I6M+ES2MXG~57*8j4l|JiML zb=4E0M;EF41*Om*JF<-Etc#QivTqk_uVVO?g9m?C194K&Ty=7$OAucO{v+-Dn`8g^t1%^0ky)lg zqAPB+4H=&TS*8XDFSNJIBhgVZFqCCy2RGCjU>lX#JiIt2!^)ck&lXqF>6Xvd?K#uF z!NL0c`E$Xf1?*0BXTdv9akt#>69EBa9L3qt|E>U!e&?7v{PO&d{N1UQT^&4Ur-tZ` zs*lF$Bn{8##fAin*3{H^czM+=GGM=F$sxg%B8^p$G!b@k>dX?3X!F%qNpR6M>Gh4X zspN35h+IFIV^*8>omp}u8S`ya=Fub~phc(S?c_nBi_@@TP(6%fjT~OBJs5?xFio3N zQA=$(231tFsnZC6Pwle>ta8V{J@0Mn+ZuALQo}}Cw^DJn!yw@Cd~TeMSJ@r^I#K=? zn$`bA$ia&bK7^lA+QrANQRr<4Y7~(aUJz>&inN0e&2N-~WlQVozQl-&5LK$vWIr1Q zllYa>U{>`Tv*4h@m7di#$;;FZ!4Mud(^~k46(-7kKBz$I?-x@J|?clTb3C znpBqG-(6)Y-ka1oA}O;=%EMF8&`{aX@EyUgGbQDqcuiQi%Q-kaeDs>nnR4=yW^5kF z%T-WPGG#u+46sMXz@y?@U$0b7;=*dQ9z#)p*RoGj@{W&EDhT!UcXtOre~#;b>rKZ{ zMBrz3rk1UmrVuR|0f>S@eb#J|INP%>*~mz!*YW#TX*K~fOt5YM%DaQyn0{}I4<(0! zYREXPlul<=7~$R3NeJyHKjc!#44<{S~TRhx4XKb4zoxH|Vk3uvnd@BXDbt4nB~eollV3&`1=hCWi^r zsvp2aN2f-$lo1;S8(;*uearlT9;*C7_~XY)R8%T>J?hbzEuJh;0g=dWHLNTvD*A~~ zk9#L zNzF$IVquNnt1*BJrupat`~{Q6oT~J&`?lX5gu{;ou1vssOc9wCeGC|0j(&>M|Gu03 zl^lo4Bx7(`Q<}wGhFB7%Jzz|$vCg6hX`DgTb;+6}RTP2I9F-t=Wg_D-i2fn!?SCuR zMmwIz6r3b(dv+gRT#^Ek~NnpW@?e`=nE`*~!Gmls}vL)^gw1rvw!&Kbj*g zKJIvFP<7HbWa^vSfSlQq@o+swAm?ljXxeTs^fAU>u?^f zswA75NMOk zpMD_F;jS6gY8Fe=>@!!q+i%lL#EV^7Uiny+Ntc?ghz6rq>HR)Ac`=g{}s`&KE zm8V;Q?H3)?;=Loo(#GW1CTja-7@s=mnf{FCQStedljcz_olj)WK&hFXtv~!s;^X{9 zMt_1rgp@TYE&~)G!${JoIGiXM->;rJ+?btz_$VARxhof!0IEDO7V5Q}_)@Gt!=B=~ zVzd;iGN>qX+k~c;4S8w5^5YmhzE7!`_nVGZG+A1EXty=jefQ3?m~k;RW?}F~*gHVFsO7+(Rk#XQ8zVTHb9R}UqL-Xn zBvJ(f$E%@mOKTUZ^>CxSzVe0GOVn|I~A z;=W|uhvFN*;dZt6!y}yKZ`0U(8-3?95J{0-Z8ub9BxazoTP9AsWNAyoJ1d}FlJ&mC z8bZw9XW?GW5EB4_-ImYRfs|_*=u-S(>DB^B?L%bLST&DZ>#b>i-x_i3qvS9H6?CbK z94cvcd)9UF5barlX-z&P6|=cr%%r_zMn3-C6GQJfp;kDYsd=NLpCwK9vcFiv^!((u z7L%7_?Y8-I*u^ByHLqFb6dP{d+if*#kjX-X`*^s+XMZFG=(uJ;|5oh=L3*^bCH zf|#d@#eBXkqC3yf1K?i*L5@}NXE&v%9dCr~EUM!yfRy8v4%k=)!b8`9yW@>9* zWI!|^fa_$Raw z8}8+1l^oC@+B>PJm?#!U@Ui|4-SOG2*p?LIR-JH314tL?RS;A3jwvNEn7W8Q7{UF6 zr_>~Fss|mr6fj2I5WX(@z5dT|?&)js*Ls5uKUBxkQklF9AJ1%sZz!4pA@E^s+iYt4 zZ<+o`zf7hO?Z<}#mpV}w4MX_^!uz{p{wIe`15`x7i0Dw@+Y&-IAE&Z;{T9lz=v21r zf-zWM3>dZ<{&0^UagC=c)#FS&zdpb{7xx^DY_-8u>ncWxT#jIP<*Fw=eGmc9 z^?JEfP*AXuE}Q?P`GStkFrq&GV@Q`w6STY#no3Ifv=K*mXf0Lla~H|(%gUbTzPtK- zQ!#qDVe7db*|yB3E6tj5zoLE(yL{@-e7H^Ke>xO9qtQGr@ApAzH=tH6b3gAV=YKdQ z&R4Y16J*~TEzI=syglExHpZr;CF_T+9`oHbUHIbqcpqley`L8(vxMr*%9*d+4tn`C zmHKNcXL>7KLvfu7rLj|4*Uj8y4LE(hPcwW8tLUB!+=qkJpv@->>Crxl-wCb#jjo`} zUMDT3Mn*>bH*1|3)VBGg&H+z6PCG+jJ)eHj;E$8^O0YA+=QEM?aZQ)dw4dIWOSryQ z(EF$8m5W|_6bGe^2NixFA9a)H_rvRLG;;UI5Z7gDrTAg~r_EHNdq*RWkr6_bDl+NR zwP%S}Tu$wbE-o&g>2TSa<@(PvpRIF9$H&L>^YiPLYyF{y#GOBYMkU;?d*Sq4p1y9C z(R{StMw8FW?yF1Dt&ea!mmvd-70U7f`O}jR`VRkL(DEyKXPu=o*acP5R4s4T$ycoWXcQ>>Xs3)%ty-z!qwu7Q6d5c*@|kj~(rWa5TfK#n zpff832hnQ8<1qTUaZQUAX}Z!;7=@#-q$G@rUKtF}jXyKSb6b-DvsWK6#AK7QjE6Bq zT!MGbjk<>i-pNN`<8@r6ZS&ctd#kkFeA%VfT9kEjyEAW+ zthXdN=zH}C61!u>nfc&4&Cl0efeuL9%$HBgoT+bVX^B=jzAh*jDJr6X8U?K+)-85* zkzCa_5W}^gvgup{0G`3WX2W0F@rfC*-v+f(AXvSo-Jr!qb8`Tw%>HagH20H|>c;<0 z+XIgv(QSN~{|M`;ytkUcwuwxlxdKFITh#A5|E>UW{p~#9)M;c26JequwbukeD-)u* z75Y1vdc!2$(2rQpwV;tS~X=y`6Ejc}9L}@1;OKpG`iykc3QgDM|&{HG< z{xDonB@!VkcCxFwGrr{5+@n7RC;rGu@`{vI;GCWQ*yP+NMEln)Il{{=Q&>W%q$SrK4v*68{#S82EH%C|Ldas7n-ID zxJD|x`{?+%6QKW7{=4Iu-W-a{fWAMrUx!I*Mo&I@2Yg+qXO9uz*of0dbs4}$@ytVM z|B~}Uq&uwPSBG?REB$XPGj4paE-C{+2nYgjP`~lZ(~|M<)RrAN!*>wg6$C>@;H8%K!V7VF`7hDKC-+$64+1o_5Yb&+tg4JeQ zC8ijdr)sBhL}lU#qeXmMRt# z;vL`$k(z`?n+eF}ONI#;Ca^_Bn%|YxIM_3y_=NtWP8y{-5yBkj3iqaEaHHPNM%Mnq z?4nH(EE(}r#K3O1q|?X?iZc>=E@Ww>=9Ay^j65}?V2LpZ92|u7q!V< z`3MY~y66u8RWhQEu_O4U!^_@yhdj5P*yR>;76j)_I>fp3 zn;Db4vt=M)FEZ6fD#I(h|Lly6B_2RG6WwfIgV`<*8+7M<4o83=y6b&4IPziGKVS-g z{i0lBEZA&C4}k4Vyf+&Q`bJL=KqEfGLIMfR08lXN%!yETk2bDwf8YYl8q}UUPe(T+ z5v&1X^>(8LRywp<(HB1e{xR*uuO*h?N_Om=7xqd}hiM9c{Xc}7gZuG}sWNa(;h&Y0 zq7}2Da5wQ^=WUhj?7+VpYvCr{=&$G!np#@ea*yJ`$S;4bw}Ij$6PBzIg~*CMG2@0M zgVi-Pf5nu_X~hTj{nJS2D(L@k+bTe8Pp{G7rqrFHFYGK+O>nnuF$8jc_OZ(lP7v3T z#`Kx{N#vK9rd?j#Gm*<-zI+wL2;UT2Kp^|C^%5>W$W@6g$J)!U)dqoVydPfXj_X$@ z!7ZR@CEbC+qWHWiW|iumO{cEx%g`G2w7s-TxPV{h8G0`kntr`tC+|W{Ntq8BhWm=( z3PF5|&tF$oR>)=XYS1=e^l(S@zY8pX{rchOr%y;opF3{O1T6AOat!$^nq2S`C&3IQ zF|15F_!1d;IaRaZQ8Ad0a!6|aQh)}0e|t}D{9EBa#0iL~U-vJ$(#vZa8YD_>pjFdL;Ia@c_)%Cz+t)xAR$UWktZe0U$V*nAEmU z(!^J>fLX5@uNB>uy=Vb|lK2!9v}u$7{m@Lu)Nl6dw`nB(IaCcs7(riUi#1#nfKez3 zZ6Cb(w)!0{<0ZZL$m=98;2_abs*a}E3ecUX>iJA})iS;nBhZ;bo^qr+XFnuLbA2F~WBM zAC10ROxgxoFq;9of{U|iX4>+=v~6xaJO|8xj3{570!p{VtBSdZzy&weCwI;@YbUR@tTj|sQsYy@n2iJotU3RmE* zsW`8WS7=Z8>X>SBS4Cs*#>_-8X5OcV+396KcC#(6f7`&)hCXlmXsJapnLMTKA-mFqYQoMF*}<7w;w}72;I{K} zeyzJTvYlT=fAzNR?|EYjCQEjr7Vut(1 zbU=`+^6iBB@7TIYQgmnN5)1>{HH7936^}ifX98yxO-D6u zPmPTGyb}Hc3t%s#5X9oWynzNp+tRZ$g!(>2+)`r=ON72hjSLG@6}LH*qJI6dHu*%H9ewu#j&MPO2PvL#TYP(?whu1r=x zn|U|y#!jtrXqV4tGwP*QHA_0*FWwh+WiXL^Tg4f zlR7|JM^m@35gW_V#b%`)zq_^QZdOEKT9b&?P@7u}t6|FfhqGYHPZMC?U#`A3Vv^d} z%&)KU^2!qfZ_#+uERd6zUk`9k=4q%D{C*tQ{`LQ~ca~9Yz1zB{h0+#UT3U)jYPfsR zlv1oX1SuBW-7SPdp~Z{4yBBv-ytuoyIKf>)!d?BJefHV=+N1Pd2Uy8%%}|La0*(?vzS3-s=WB5w&Dey5db61*xaTE-mSA4NFQ!6M zsq5W@F|USnS>s*boZmEB%@Q8JNfn|PU0qYFCC@o$K};wME!{YQ564@=b9lw~zkT0a z6lcJ2Q%7H3Hw?LWVNR#Cs2%P4Kia-&-kp$>G^e}Y2hxq6FJa5u`mqgP2-`oydK2yn zB;qb*3(=O_{c;-D<4cQLwR-~yVXOW6oQ$2R{JR~B-UsO{pv--ZbD$G?u2RIa#jr}_ z31fYF{&wFZtIA1};$DKiK^13~;{o@i{6=-#ZRq8-hIr4E?V{E0LlL=9%5K0t>}yR? zEJ~Z=zK@*IDdIZOfX+gELT+u|#Td#KqK6i|cdds?Zwk|Qv|R&R&Q3nb4K2D172Pda zL-6mP(oyT6Cbl%2xjm5mIPI;cY^Bv<@5ZD?LpJdXU*Jx(E}X?P2-fYkeJiKl{3TP% zf?k_lsLv}IAfMw%t>3LNJ&zV7BnZeXCl$&L#)R{A3##uzVn7?MkSna@ER zl?${Z5bN+``$Tjbm^*qI=XJ+pVX=4NV6o!-YgWsDnPoImt9W_}Vq>K?H8sU=ldVRJ zMq@q562be$jynvTVZs~{Qajt*ba8#goX`RY?Y)=4(cNmryLH+yIT;&ETmn=Ml0wCj z-=NbjGq`xf#M++)y|uMv`-91t0#Xa01Ei@LmQSq*yqYXk->198=TKT*k& z(D-$~lVa6Mh{q?&e^}cr#dpUU z$Wh6iQ|dI}_@nYYz{cX68i#-$KYo30xfK7duo-IvCkaS__Bcn>@~@cmIA5t{ftbK% z_#_5+BQW;jl0laC6#&}M<4m|lqdl2-tiHWLTS_Nb5h>&TFpQVQwMb`A^^i+gjFe@J z0ZKzcxPN+tgco@dtBS{yx$^O;Gmo)+R@e|AS zg^HJYD_1&snv^q|-@*t8;yy?Y-xbo7#gbRrBY0+EZOJZmWyAuZDFlp3}7%wDPE2h4W<5^ zt>HrSE|wlCz1FQ{h9TW@AY}q6&8Ja-SdJQeWvUBiV*$pjHeCOWWI+{LOkW~T_>^@V zG~L3ol>Cjub~5|($S0Fo>wg1O^gCy;V*h&mNhImi^=M$avq_n;G{-CS}t0iwatOlb-u4$HR&`)&KdOPHnstZnL68=L^H}7LFzjm?w0yP~q@b@ld zBO`6yMbU=eYikqT7CQSppF1D54ZO*0ZAD*3-1C)s9SIaYK%jmPY`fGME1)7Hk=1IzLH6LP zhLl0r(syrDbLM{lctP;AAwXzP=%(5ZTaRfr~|; zQc#FQT1bRbx6gMRWdA8-P(C98jREv9tT)nmmKn={^+U`*u)gWHbi$7x-+Mn)MPlK8 z##2&Mq<3_0|HcXU-Bn4)4X|*(T5x+br{WPgT8pJ{{#A?K48BE5H?ZtZVl2LISzg2r$ z5zaIe%PD}1<@Z@x;-&o-@fcv42@m%HJqGRp)W2mgy4|+o)_>xz{Z~H&U!A58gzPER z^X=aRmAQq*?<`Gzq&*nuZCJSx~Np_7EF-PgRFYuO+UzGLnH7OE8!MEMQ%PRhoo zxLj)F*-(I&twDx(dg>REjL9Putl)lX`sJm0cpGko1Q3+XS(zr%>~5Q#TOKCft3rJUJB< zbLrn5u-zbZM>MyJwcPm`e&&ziXQ#eQ)b8K@3m1*4gSztB=~NDIOK{GwY33 zOvuo2ufrPjk2yk@KF{FC7B{gutjulWPY{57gEp!>sWl>p;~U-E*I$KZ#uwnnvenzR z#Xq#HA+n%!cVjSog{^@376r>k?f@Gd=2u=o=m=kO|4g$gN%R}%*~msQSSG5raxxNn7QyWDO6RY%kj9yqCC+){>8I7pKF>5uwo4Xj= zDYWU-T_xdz+rQuKNgi@&0H=z$EVhq1?ezO?92_ty2Wxb;D1fUGuxj@tFeeIJ$Nh@u z`e$lkdXM?jet(e7w8i!y1T=d{7zM6-%|dgMy^s#Q|nIel0hj$zS3 zADmP{)_Ry@umy)>cIWCiWG4C!-~UA?%@Hm;sJd+RRHpM^kB&j2L`oZ~-VbE22bxqC z7w$|mcxv2>Xck$bj8JABjZuv*;P%Mnk7;(Vr0tqtQH)efnpj!cvfNnTQ>YA&8Ch7* z5E3$WQtf7H^m=D8M6HtW^kp<>ZeWNCUO#}WSU%j?i@v-MLEU>2pSABS`ga^C?LXi^ zk)y|9i6@D;I{SCWV%DBH?P)?iYepymn4R`foiM@e9#447`e<7ek9p-jocZc!&oWo1 zza-wV_psox+tn<8(JqF2&ChPVwYd%sU=U9z2b%@OD}cj(#t3=U#lw{{gBf9cg5%=N zMWLf=qoyzY2u;{b-Nu_$Ib+rE>+9svxN+$Qeof3}4<-0F}YqlQkJB|rgNCRga1`iz_pQZFx)|ibJ z9P$YBHg5Uv*8aN|&@ochb>hzHm;8}TC`vHgD2c~3m?AsSajg5!{qb@ER@l~P$bk*? z34t6i>OdMf{k&etjCn!ZrC#w!oYz^yLc!ED?Y^v5tmvHPRFrsLiAKGXbfNNk#|tw$ z)X+uFf;%wgWaJiSJ*WQcvL`WJ5`HDYM-(gTtjpmt_gcF4aOVC>s^=zc(3^tIYuaXE zXeB?p$GR_#`AE(E!kkYT9{}Z^SI|D={#}K28ui$4==D#TA)$ts9|t{}AKLsZ+2(Ah z*ikrVh|4MSSf`r=Ck3DH4;u1?2qS!@RleIIyl0nDqq{jJhpVO_YZ1L|Ep~Nd_(g=> zMz88n|DHze-;kh#lx^D1W@yO@!C2$@%XAo9L(qK5&Aev*mib&j6bjs@&-c3G6R>{O zJSNIHVOI)!o?CRX>IWmi`x}-X@RmH+rkfX94MwLbWSY(N!wUH<)8#Zp;|Yo4`*bSb z_{$x9;D2*)=$Iqdcw3A%1Au%}d;_$*y9+C}K=AQ6ONfheY?lEZP?fx}idGsNe=P)o zic-#_KCfTDSC`=!L(_tf_Y!N4;?CGQx3OPlVShAK^}ot|WcF!K`Rcw&il%A?a)oMs zz)*&QZ=*;@P~5@Hugxr{>#4U*a7-H%^z$D^xl^|0LkS=?VQ< z7@|}Wz!=jtkFu_t{;N0$Szn{drqI>Z{dfOqT-z%E0rpVU_~9glgVsJ$Tw$rWlzwZi zkrXz+*8iekQ&qgInbah-Fz9e(!`^c~JzOQjI-h(xJepECp}DLW7z(X}VW~3u6aARZLR8~K~w!nwUmMib;Q7cf8$aK=M=#S zUk8lxHWuZtJr-KV<2;2^5A`iQS(V}L7g)bW50b3@GYjBw zSMa}2!T;<+06gP>@ijdB$6vMdOoL7!^v(+zG5aP3EKS_|&*&M|`u%}aW}ZShSFm!1 zKH?`S)&tyXO_rG6d<_l~-UrTPAdnM3_Ji9&@wJN{eRFf&faREkcl=IE$$$a-W=yXg zE*7?4cs$~I&DH~Esij5nC)O`9vz}0-0+b5^5K#T4auTW?lU|RqB zl>^XbO~d1tFlV)dgdE-BAbnO_H|5;s=90ofZdRMyKy^%htGKhHn+_!6_0@(ejxU+2 zoQKEM&rfVb68l&BU`ssE{OQ?ojX6h{vJS~)C^}(Afa+m);hCq3iYWv_RN2Y}l*FZ8 z=gfuzq}ee2tBqx-5e}(=h{)|z#5AS{(EZHbo7cg<*YsSYICCtXuh}>~f69kzoLlKkSMxavP@u@kjifiw_Ikf%z^atGRXk!wxnO1v zXny(!cliG&cF9sN9KE%*HJUi44ub-z*Dh;JzW>yZ3+%VDw8szcDf046sEp)r&I5{M zX)o~WrTP&P8d8v3oO&eI`9~)6 zP*0t@%H^@}9d(TFBeCH7SZ)9S=kLs-U#}6<{9x#D8XE!nV&yjoF;k6Mn=AeLc+9}Q zBROx%R_Eq~at>-o4d{ww%hNe*O^qfKJkpW9`-rO}lmJ5d7=C<}2-PN(b-ff1p%Ub6 z3vcxYWaD2rh;05olYsBN3kcZ3x#u8h!W*~2ecs}aZ%lt@J73Z~@BlhLe4cg?uK3Xu zb9&Bw;;LbrCFP-Oxk93z#^9DiYh9ENp4FCI4z<|ktDdf8*t%G|>FY4H%%Bpl!5(D+Z2NTdf-ZZ@_Hi)} zDi)t~%L^cM50arx2TA;d&P%q?I2{rW_{_Dx!cA%RYU?AUDdx&w)x2xx5$4*&xPu2U zjqOY^-=HLGr)GGMlDO#@z@Dhs{cs4Uf^YOKQm@vi^`Q_w=b5=$cubl8B}nRJY72`w zCVBc1#{Jig@G)xVv0P4oG_pl7B7v9gWgw&ESv1Eg;&QWjKgAAZ`^xo8^ewwY4F?Pb zy4BGe-HVQ5oI+z1=mwYeH#Q_KFLFveUhH10RrRy22B{)23vJ~(-jCnfJMQHwsg&tc z-vgvK961=xgy2is+|DZ){PRmuN+I*XWTwdL76Tp2=Mte3hI+*g3&Q6Zw5O%rSHD-+ z+%c!jTQz)~-4)l)kAx0~uwx>bQgv_kIM*+M2V8zQIo&48AJJkkkvQcCp7w6r5AyF@ zm#k=Da|IP}xonk}3@yRZ9WZUGWySa1;hr_LF24&^)yK;k&*MC;&Xwv%te7Jk(yQ?`ngX6T?it zF2#j)P6Es}+UKi;+F9*PKUPzBSeAu>7OK4orKQVT1Gpr^AgS99gm=5;Kaev`MpN=T zn0#x{$31$#leDo$WmMCHjnXLDZkEVO;0JbVAI$K08ox4peY8k5^`d3&dsR86|NQRY zcS4+{UhKc4#U)t(&0;lADSXG{<)0%!ZNxl!UwkYIFk{gdg_L7)q64D^|P7ew1;NSr6lg-nT z{x#qF6ZyAL3J!`pm>=4ZnJ;ne~$i#cG+#WR_i+$-S9kPsfHPQ;~qlQ3BYPA0A=7>5F*6 zXOvU%7wKyib-hEa9oU&@k zjP=-TE7;97+34Rja{vg%x?P!zG?{5SQv&-JaX?P~Su$ss)3$EYeX&|rpCWQSy2G~* z8`}&Z*HzzS^x@qHIS513v=+i_Hr+A{WUGv^Zd<5t8qm51i>F z1OR0r&|9uHuPLAhcMgP_m>#2(UsI`l_;)P;8t}prYkp~%TM?IAJr#|+jQgYcf&G5> zbFcH-?N<`ZSarGjJL+qvmOa5Qe6ZXc2VNw;xT1R6{`lDssfnR&BW$cUz-Id2yXIx$ zIgJIdvFy4s#Ad?EcAk-w0|#ny#z@th7EYiz_5U{+;ZNaIhYD|8Za}vhI+mb^8(;)6 z2po3Ht*T=h75S8UyW#z7`qGx=CCt%l+~%k8jrA*Gp6KiA-P%(Rn7jK{3(T|Mgp1;V zl9HjxP$~+8+TJ`afM@hbc`S%_(`*27e!EnQ{$AS+rZx?e%xxZ2R<@riEC?yo z#Kju46EM!71gL$UjeKu3>fH`U4-SB59`Myw+Ai(+`g&^0CRA7$cz=NqNz=RE6E4R4Qg2KY()t(i=KJK~tGh9LFkaEI?JJE#K4WJ-# z4PECRD+E!*6n1$ldeh1^c&+t%?$mB?Z|izr){}9Srt%*n)6>5tCKm3_fkhm<5=;0N z-72;BYQ52dXFLVB8r_e-NQP4b3;5%Ay&mH@x!kYJtRm>cZi=nspKC{^X|T&+HW!6> zyM(wn5>>PaYDcA6SCS$(Z%9tAne+Agnb}!oh?7HKZ0M9W*Z!;}eD?Ikh$!N6y@=nj zG>2zPAEK_lH+^U>Els#^S_DOx)?E;ZH`Ug(_WJDZo9%wCCSsjeJYH zX&+3{Vj-5Vv!6ZWoy(FrUOoM7RmR2INePVv_Cxjj) zkj&x|u!i>83qxWLF`ABI$j@$>4p9LyYipQ`_y8+PzBIW`g7H3b-c+~Mk)HW+nkr5I6=E{s~ z06~)QYO3CJHb_lIN-FzEdMM6!J>v^?)@X}ypJb7m@WG5}n&RH{RCX8SQ5{oMYZxdlYWR|Pof@rE)DluJl;;UA zDDp+VI?)%e-Lih4mK;pXvfFe%Ua$g!o!DL#XYmOfOfi z&a+}Nf5k0N6~OnTSFD%6jX>sq(6QjtuXYxOak}>iym~aCY8gBqrT?j zjitv=xhB1*s9cL%u8)`)IDthvQ&BNmI^l)3cMe;C3>MIBYu81Q9}6-p;sk%+^|uc0enTsmg#{!`k~&`^pgK3-nMfnY`vb#0F3?Rw4x z+30adRz{s^d%vmIeESpouPSpmcV%<;76;+#a+jVPIu>%j1D9*_O)|#R)yA)<)MyUP zCsfgPJN(t_W-^uqIVBTwa~_N*0f{S}wv$B&E}(YIR8v!(U^L3Exwtrp11eZlg!gye%Fm`|Pc!u6D?oY?=5*+W0!&{jIth0pln%?ixwwhxhNf z?|jhF(b-tZKF6ieG}|<5klUy^<`_E)3i{0qSe-}j+dm=;IfYo-S+tv2k0cxoq`>if zh4_E#qjoD}(yn^DB)+gkh6f$S(anavw6Gjg*?b?~@`BgGTq}tmv93_nRD*#>+Yn|P zuVxvnWp#~O=q^r1(i2}&$dR*^owb0(40aYg#0+&?$NJ??^3LPPCm_)DT7n5V)A0K z6PLCt*?VzuqD|AZk$Shl?6l@tN)C&bh*5Lak#wG~ywt`M02hZ4&56Eh+NrfgEX*#6 z=J{e8_1gtJTvE1Ow~F@MRz{23tuol1kyTnY^?nucqp^h!<5oMn`id5=S}&hCH(8s3 zQ}DNFENyMK?H`>;i{0cf9-#KMJm-OFKWsW4GMbtKJccvu($W{kJ~y9_kj*2%WjwU< znin9t%~^BrqCU=L3r}9sg&L)4%~)FWg1o$pPLV>YV)D)lQ*oi5RgOFsG!sQ|sh~zS z1{Y`jk;DrQSAX20bhXIb>g*xsO5-`fLCxI=IJJUrf#}1-??jE6xT!e2Aiw66v;=oy8i=h<6F|>9lUGAd=CD#+ zW#{}rt|@6Ot&J~;!G!w-7Kx;V?-B7qtTu<-k4uAtg0{3PyR$9LM}{}Rr`ayCivWIZ z9m~ST$@)ZT!Y63Ev&h*c_~eoQn;d=9xZ~x{J_hX_d+E@)!L_rBh2gg>mo7l-BvhVa z(PLXD4c-!UWe{H-NMgDl021W=^g*!tBVdLuU?|%atl!GjDyVJg{vul4xw%P-TJIO= zA`zP)Ls@HL+8+T`^L-I?R^daQOtE*I`4Wa@gB_hTic(6if*YFi_lu7?6cQpofbLse zPzqm8eV%Tlf7e$iV(jpE7bW)f9kPYwhb7{mz1@3Vp;*3`b z5`DUm1qnc(ucj;kuNVoyaj#iPMB# zQ6*SYCN{|Lg7#tQ<5^A`HCA^XTFnp$c%1Fj_ut|UlTUemhK4%I(LQ78YUNwn$&-g( zN#2qh@tROI4-IXunJ$2gVS!JXl~MmKKLzo7tgOznjV>ak@_e<6B!QeBjfsN-Zi5 zBOh}#pEOU78`YR5z@+-Z3{uEDPd+)FS>2})+3j~iKAo;QnI}VThxOA;7 zJw2VDv=vYrmp-Q2`F>F<f7 zV@i?)rrbQrh!EjQ?Ik^LXn=@k0m;F7lKLpv!g=f~!$UeHt&}Udf*{ef*l;ig;^^q8 zHc67QKtob_-lsU>Ct|w|MEh%K%2jI3Z%^ibdG@P^#yiF;Xj|)CT#$fKoA!xs&GM_PkwtXmqOO zRLkPbqtPq{FnY*&iY0T;&Z0?CaJ!@yBQFd98mg_OVxE&f&stmZMu7#ms#b&9Ffw!- zIdPMU6YD=CK=dB;ejf8Ir$*8_%H$kPTeM*0QpT4NGBlk$k#eb0`tT93pGD0issjnd zqe2&@xded~v!QW)D`>qI;(_r?3LBa=(09>yIzpzs;FQNVScZ?xsycydN?sSeUEJmc zG8emFzt@j{9Gi}YI-S8xtdG3n-<-ABty!h$s^(mcc5AIN1&7^BVS2J!z%b;zu)EfS zxPk5!Qip4(HLvsr!q1N7?9dTbWy8aY>!SJjic@0t_7O8y4qi+a+)AQ_MJgPoiVNLy zb6;nhTut1G#NFyHh<(gi$-V+=QSmsV(y~i5FmPp;@A|q+MT&o-{ULj%n`ZBW1k1AK z(qmp8*#_^FN9mxTL2tW}?;f6*KrqMohB;tbB)u(P9nb!!VdGyE0rw&}Yv&!hqZ!mM zE-r+QewKM8rR#lmyFSeG^Yz8X_VY$>F9F1jU(~N=^!2kqZolGMT8@D4eW@E{YxHUw zSPQ`8AJK%j ztf?!Xxx(g#FV%4n;+ywGM6p%2K9Bi))%P^sxrJ2R?BD?iv@{qUc&|BjudsN*lwH@O zkTLxC%Jz0&^81NXAVpYo8e;+CF{6!^aj@;8Gmt6ZU)gRTmX}oy4_Bz&evK3tv+X>M z0D=%;K$=bpas$kd99zS}y1y&^UKDb38VB90-rtSYQqy&rSz9R~3Je?2u=G_*Y zgIN*R9}=t}(t)R@dVhZ1{1T_LorJ-x>kC60Ev-2jHZ%+P=1VN`w$+nL6CKBuP(Bs8 zFD|DC?T9O6(NLp^Uc)(%6$rZ>P!!(LhNBHopMOIbF4oxKNoi?QvmT<1W7z3=CTRqN z-oxG0o|Ey45C<%dk_i((tr$Z>Ng-rl|;&bbFIRr015LO0h;P7W59mL6Wc0RI(! zy;78-aA^ugT`IsEhI!yZYgb+GnU#4c1+?mOK6+|T*nKPH$r39qE$FM!(46tPa{*l! zw2&1afDgpRHUu=yUhUMlWT9D&haUusyB0c?Gy>(U&5nJXl+wPFH-Tl%Nbhyo!|gJJ z1vC_o0v*@e70S2x?zaPwh4-s{$HzNjOMTYE%5{7d9o+*YKT6WlBY>=6gt@*$bV~;w z#S(|g$rI$}5(CDE8?D&FQC1!v5-w*`_{7YY%fSl^-p4Rtw|`0}f4Kp^fm&HzAFb7@ zLZW9(M_b|{j5*`<%t96RD*@^0=|D1<*^RJYxuRCj)z)pk`VFLG7mJ=Z*}^LE7S-e^ z{w*zAg#>x?ckc{TQ~)V6eN1Z!cXxMkCJScFVL!q|Puss9YqDFAS@DRO*s>VPa~aw@ z%LepKFc~6_Bi|^jatK=g2uy82y>21m0H#rjiNThlE)oY! z7{3s)LNb9-m~^srJLvPN>gta>Dih9Pcf41+;3UMF@TdmY{Xsx3P-Sdy$i=6zIv|HM(~?0>EUECoyypF$NGrMz?5XLv+x=LJ(4Qg?SpZ}87P(GL8h5{6TwP&d zU_}iZO;!-LZ$;Z%Jb@kofzH@HLh%RH#h+h7V$Ew9H4K;A)V?T!rlehsi@={%$_dQyiwyvWj-~B) zr%dAR7AQMql-Gol@P*6~~>|;WZ zMB_x6l7c3(Ryrv>j|&pS2Aaq66qKdz;Ns4z=h~M~PuG=low}s{2sS;~MKN$`VSl4G z)m?Nwb8kzBM~jYarJ-vUhwW+{1S{pOX1yznN_xhNxgda2L!J~K5-ILvlW8NOuaMl( zwQr)05pZ5p?!D;ETx~Iwk1Z}LsFi2eEW^mZR=((M7{bXPQ%7p#^c0()m)CXTxcdDB zzA={|Y>SsbQ8I|MaD-CW0)3K;*Ev~|RPe6cX{*F3X|H5q}s`jb6aV(`P@ zCB>324pF|$jEn;O?k`#Lh?ijJ!bf>vw4XeYcp%yd=zOOVR0F`Wu!%Kp7j6o+)YjVC zJgYRrIO?1EdT>r`oVCY_j4bXwm?FJY^&DOPguF%=0(Df`0ihaGG~d zTSl#4U!Qr1RigvqNVpQX&l0%BeVr{fN{>%#kiD$(WRh;4m+T6_{LvHMK(?4$y}{Ic z8Iw59(P0#Psl5TPp7W&*#W*_Ei-M=o9`Id!h5!s|Y4@z~OIjNES>B+qZ2Y%(6O?mn zZ&r2AwKX*j6oN*wUJ0lK%rc){8i!LEj^BSm5;yGZf}yaflLp#s=IgC{BG<-EG8m<& zs0LF65t*6Eh3w;YSv!?O^!>$-ONBeA9c@l?Ky+`7g_>AaLtYY$*0^ZXzkBK86sr*2 zDU~&QHuqBW#gm={I%M~0yhnUToJbMSW0NmBzCv4H&tFiWj&v%~@l-Z9M!k`tW3-Kk zQ0l+3XQ`A7Z$<^U$WuKfdMmG*m2WqC@K9BwVUSXGm)wFCcC`iHe4!*XQn^{9DkFpM z?B3B4lEabJ(Q$aDluB*REte$`iua(ZB`rT!;?uk8yg|>c0%uqiQ3?>Ikg(}WG}k*Z zmNwex*OII835yt`n7a-S0|i~Y+I;AO#TER)%tkKXmN{FyU89|3K}_2x&t_w}4h{G2 z;Ypnyo>4t*(I8vhG-gk%q62c8tIMz~y$|FluJw$oV^~5k-C<6Ix`n9K62?A!TO~BB zzP`uXI!eUrY=#c9b922>l<$4GTRY?XJd->K&H4ea5X0U*jWUie!L|SOmiUxXNiqP< zY7wo32thBuPvV6g0C~N9fetyw;59}aF@6@Ta9*?X73%Q`KS)Gc5AX1JK8 zf%(wh#QFk~#)wuo*eSf=sHNhcnOdU{dxj82cQD*Xq|ZG>UIS@%im(Vw5N4utR0ow! zI1sdWP7()u9pz!-ig^q>KldlWTz65FDO>v9suP0FXn;WX9~#b;n(xvFYDmXCuk5TZ z(CMK!k8YjTGq-GZSSD9(ueITb+|^t{=j6UOFnGeF@R;KltELmWJ}9_#bAIRKv!({2 z{_)@fu}nu$4KH2G?mBB-9smg?!xR5OVS62V>xaLWSH~^y6~P+_A4r{t;O34IF4a0P z`Z`Y^=;gP2@qdrJ{udGM|JzMyI2IPx&5h#KED!Jp?w`O98|z@1;llb|avN|3OIlq1 Ked#+r-~R*TDme=P literal 0 HcmV?d00001 diff --git a/.sisyphus/notepads/dm-dashboard/learnings.md b/.sisyphus/notepads/dm-dashboard/learnings.md new file mode 100644 index 0000000..15b0c77 --- /dev/null +++ b/.sisyphus/notepads/dm-dashboard/learnings.md @@ -0,0 +1,523 @@ +- 2026-05-14: T3 Testing Infrastructure completed + - vitest.config.ts updated: happy-dom env, globals, setupFiles, aliases @/* + - Installed: @testing-library/dom, happy-dom, @playwright/test + - Created: tests/setup.ts (crypto mock), tests/utils.ts (mock helpers), playwright.config.ts, tests/example.test.ts + - Scripts added: test:unit, test:ui + - All 56 tests pass (existing + new) + - Key pattern: Use happy-dom instead of jsdom for lighter weight; mock crypto.getRandomValues for deterministic dice tests +# DM Dashboard Design System — Wave 1 Learnings + +## Design System Foundation (2026-05-14) + +### Theme Architecture +- Created `src/styles/dm-theme.css` with `:root` CSS custom properties for orange accent (`#E87722`) +- Variables defined: `--accent`, `--accent-light`, `--accent-dark`, `--bg-primary`, `--bg-secondary`, `--bg-card`, `--text-primary`, `--text-secondary`, `--border-color` +- DM layout wraps `BaseLayout` and imports theme CSS; components use Tailwind arbitrary values like `bg-[var(--bg-card)]` + +### Component Patterns +- **DmButton**: Supports `primary` / `secondary` / `ghost` variants and `sm` / `md` / `lg` sizes. Uses `focus-visible:ring-[var(--accent)]` for accessible focus states. Disabled state handled with `disabled:` modifiers. +- **DmCard**: Simple container with configurable padding (`none` / `sm` / `md` / `lg`). Base style: `rounded-xl bg-[var(--bg-card)] border border-[var(--border-color)] shadow-lg shadow-black/20`. +- **DmInput**: Wraps label + input. Dark theme input: `bg-[var(--bg-secondary)] border-[var(--border-color)]` with orange focus ring. Supports `required` indicator. +- **DmHeader**: Flex header with logo icon (pen/edit SVG), title, and slot for actions. Uses `backdrop-blur-sm` for modern glass effect. +- **DmLayout**: Wraps `BaseLayout`, imports `dm-theme.css`, sets `bg-[var(--bg-primary)]` on wrapper div. + +### Tailwind v4 Conventions +- Project uses `@import "tailwindcss"` and `@theme` block in `BaseLayout.astro` global styles +- Existing accent color (`#534AB7`) defined via `--color-accent` in `@theme`; DM theme uses separate `:root` variables to avoid collision +- `focus-visible:` pattern used consistently across interactive elements (copied from existing GeneratorCard/ResultBox patterns) + +### Dark Theme Consistency +- Base dark palette: `bg-zinc-950` / `text-zinc-100` from existing site +- DM theme maps closely: `--bg-primary: #0f0f0f`, `--bg-secondary: #1a1a1a`, `--bg-card: #242424` +- Orange accent (`#E87722`) provides high contrast against dark backgrounds + +### Verification +- Build passes successfully (`npm run build` exits 0) +- Temporary test page confirmed all components render and compile correctly +- No existing components modified + +## Initiative Tracker Component (T9) — 2026-05-14 + +### TDD Cycle +- RED: Wrote `tests/initiative-tracker.test.ts` with 11 tests covering `sortByInitiative`, `getNextActiveIndex`, and `rollInitiative` — all failed initially due to missing module. +- GREEN: Created `src/lib/client/initiative.ts` with pure helper functions; all 11 tests pass. +- Refactor: No changes needed — functions are already minimal and pure. + +### Files Created +- `src/lib/client/initiative.ts` — pure helpers: `sortByInitiative`, `getNextActiveIndex`, `rollInitiative` +- `tests/initiative-tracker.test.ts` — 11 tests (sorting, cycling, edge cases, dice roll bounds) +- `src/components/dm/InitiativeTracker.astro` — full interactive component + +### Component Design +- Uses `DmButton` and `DmInput` for consistent DM theme styling +- Form layout: Name (5 cols) + Modifier (3 cols) + Roll d20 (2 cols) + Add (2 cols) +- Initiative can be entered manually or auto-rolled (d20 + modifier) +- List sorted descending by initiative with numbered badges +- Active combatant: orange border (`border-[var(--accent)]`) + orange background tint + orange numbered badge +- Delete per combatant (trash icon), Clear All, Next Turn buttons +- Data persisted in `sessionStorage` (resets on refresh — MVP scope) +- Empty state shown when no combatants + +### Key Patterns +- Client script imports from `@/lib/client/initiative` — Astro bundles TypeScript imports in ` diff --git a/src/components/dm/DmButton.astro b/src/components/dm/DmButton.astro new file mode 100644 index 0000000..4906109 --- /dev/null +++ b/src/components/dm/DmButton.astro @@ -0,0 +1,51 @@ +--- +export interface Props { + variant?: "primary" | "secondary" | "ghost"; + size?: "sm" | "md" | "lg"; + type?: "button" | "submit" | "reset"; + class?: string; + disabled?: boolean; + href?: string; +} + +const { + variant = "primary", + size = "md", + type = "button", + class: className = "", + disabled = false, + href, +} = Astro.props; + +const variantClasses: Record = { + primary: + "bg-[var(--accent)] text-white hover:bg-[var(--accent-light)] active:bg-[var(--accent-dark)] shadow-lg shadow-[var(--accent)]/25", + secondary: + "bg-[var(--bg-card)] text-[var(--text-primary)] border border-[var(--border-color)] hover:border-[var(--accent)] hover:text-[var(--accent)]", + ghost: + "bg-transparent text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-secondary)]", +}; + +const sizeClasses: Record = { + sm: "px-4 py-1.5 text-sm rounded-lg", + md: "px-6 py-2.5 text-base rounded-xl", + lg: "px-8 py-3 text-lg rounded-xl", +}; + +const baseClasses = + "inline-flex items-center justify-center font-semibold focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--bg-primary)] transition-colors duration-150 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed"; + +const classes = `${baseClasses} ${variantClasses[variant]} ${sizeClasses[size]} ${className}`; +--- + +{ + href ? ( + + + + ) : ( + + ) +} diff --git a/src/components/dm/DmCard.astro b/src/components/dm/DmCard.astro new file mode 100644 index 0000000..a97be41 --- /dev/null +++ b/src/components/dm/DmCard.astro @@ -0,0 +1,24 @@ +--- +export interface Props { + class?: string; + padding?: "none" | "sm" | "md" | "lg"; +} + +const { class: className = "", padding = "md" } = Astro.props; + +const paddingClasses: Record = { + none: "", + sm: "p-4", + md: "p-5", + lg: "p-6", +}; + +const baseClasses = + "rounded-xl bg-[var(--bg-card)] border border-[var(--border-color)] shadow-lg shadow-black/20"; + +const classes = `${baseClasses} ${paddingClasses[padding]} ${className}`; +--- + +

+ +
diff --git a/src/components/dm/DmHeader.astro b/src/components/dm/DmHeader.astro new file mode 100644 index 0000000..d953df5 --- /dev/null +++ b/src/components/dm/DmHeader.astro @@ -0,0 +1,44 @@ +--- +export interface Props { + title?: string; + class?: string; +} + +const { title = "DM Dashboard", class: className = "" } = Astro.props; +--- + +
+
+
+
+ + + {title} + +
+
+ +
+
+
+
diff --git a/src/components/dm/DmInput.astro b/src/components/dm/DmInput.astro new file mode 100644 index 0000000..df60d9e --- /dev/null +++ b/src/components/dm/DmInput.astro @@ -0,0 +1,60 @@ +--- +export interface Props { + id?: string; + name?: string; + type?: string; + value?: string | number; + placeholder?: string; + label?: string; + required?: boolean; + class?: string; + min?: number | string; + max?: number | string; + step?: number | string; +} + +const { + id, + name, + type = "text", + value, + placeholder, + label, + required = false, + class: className = "", + min, + max, + step, +} = Astro.props; + +const inputClasses = + "w-full bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded-lg px-3 py-2 text-[var(--text-primary)] text-base placeholder:text-[var(--text-secondary)] hover:border-[var(--text-secondary)] focus:outline-none focus:border-[var(--accent)] focus:ring-1 focus:ring-[var(--accent)] focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--bg-primary)] transition-colors"; + +const classes = `${inputClasses} ${className}`; +--- + +
+ { + label && ( + + ) + } + +
diff --git a/src/components/dm/InitiativeTracker.astro b/src/components/dm/InitiativeTracker.astro new file mode 100644 index 0000000..58dcf76 --- /dev/null +++ b/src/components/dm/InitiativeTracker.astro @@ -0,0 +1,297 @@ +--- +import DmButton from "./DmButton.astro"; +import DmInput from "./DmInput.astro"; +--- + +
+ +
+
+
+ +
+
+ +
+
+ + Roll d20 + +
+
+ + Add + +
+
+
+ + + Roll d20 + modifier, or enter total manually + +
+
+ + + + + +
+

+ No combatants yet. Add a name and roll initiative to begin. +

+
+
+ + diff --git a/src/components/dm/NotesPanel.astro b/src/components/dm/NotesPanel.astro new file mode 100644 index 0000000..8772eb0 --- /dev/null +++ b/src/components/dm/NotesPanel.astro @@ -0,0 +1,77 @@ +--- +import DmButton from './DmButton.astro'; +--- + +
+
+ + Saved + + 0 chars +
+ + + +
+ Clear +
+
+ + diff --git a/src/components/dm/Open5eReference.astro b/src/components/dm/Open5eReference.astro new file mode 100644 index 0000000..a86f5c3 --- /dev/null +++ b/src/components/dm/Open5eReference.astro @@ -0,0 +1,435 @@ +--- +import DmCard from "./DmCard.astro"; +import DmInput from "./DmInput.astro"; +import DmButton from "./DmButton.astro"; +--- + +
+ +
+ + +
+ + + +
+
+ +
+
+ +
+
+
+ + + + + + + + + + + +
+ + + + + + +
+ + diff --git a/src/db/client.ts b/src/db/client.ts new file mode 100644 index 0000000..761612f --- /dev/null +++ b/src/db/client.ts @@ -0,0 +1,9 @@ +import { drizzle } from 'drizzle-orm/node-postgres'; +import { Pool } from 'pg'; +import * as schema from './schema'; + +const pool = new Pool({ + connectionString: process.env.DATABASE_URL, +}); + +export const db = drizzle(pool, { schema }); diff --git a/src/db/migrate.ts b/src/db/migrate.ts new file mode 100644 index 0000000..e13c053 --- /dev/null +++ b/src/db/migrate.ts @@ -0,0 +1,21 @@ +import { drizzle } from 'drizzle-orm/node-postgres'; +import { migrate } from 'drizzle-orm/node-postgres/migrator'; +import { Pool } from 'pg'; + +const pool = new Pool({ + connectionString: process.env.DATABASE_URL, +}); + +const db = drizzle(pool); + +async function runMigrations() { + console.log('Running migrations...'); + await migrate(db, { migrationsFolder: './drizzle' }); + console.log('Migrations completed.'); + await pool.end(); +} + +runMigrations().catch((err) => { + console.error('Migration failed:', err); + process.exit(1); +}); diff --git a/src/db/schema.ts b/src/db/schema.ts new file mode 100644 index 0000000..c0a2ab7 --- /dev/null +++ b/src/db/schema.ts @@ -0,0 +1,18 @@ +import { pgTable, serial, varchar, timestamp, integer } from 'drizzle-orm/pg-core'; + +export const users = pgTable('users', { + id: serial('id').primaryKey(), + vkId: varchar('vk_id', { length: 255 }), + yandexId: varchar('yandex_id', { length: 255 }), + email: varchar('email', { length: 255 }), + name: varchar('name', { length: 255 }).notNull(), + avatar: varchar('avatar', { length: 500 }), + createdAt: timestamp('created_at').defaultNow().notNull(), +}); + +export const sessions = pgTable('sessions', { + id: serial('id').primaryKey(), + userId: integer('user_id').references(() => users.id).notNull(), + token: varchar('token', { length: 500 }).notNull(), + expiresAt: timestamp('expires_at').notNull(), +}); diff --git a/src/env.d.ts b/src/env.d.ts index e16c13c..2e8f658 100644 --- a/src/env.d.ts +++ b/src/env.d.ts @@ -1 +1,17 @@ /// + +interface User { + id: number; + vkId: string | null; + yandexId: string | null; + email: string | null; + name: string; + avatar: string | null; + createdAt: Date; +} + +declare namespace App { + interface Locals { + user: User | null; + } +} diff --git a/src/i18n/dm-translations.ts b/src/i18n/dm-translations.ts new file mode 100644 index 0000000..173666c --- /dev/null +++ b/src/i18n/dm-translations.ts @@ -0,0 +1,16 @@ +export const dmTranslations = { + title: "DM Dashboard", + subtitle: "Инструменты для мастера подземелий", + dice: "Кубики", + initiative: "Инициатива", + reference: "Справочник", + notes: "Заметки", + backToRandify: "← Назад к Randify", + footer: "Часть Randify — генераторов случайных значений", + anchorDice: "Кубики", + anchorInitiative: "Инициатива", + anchorReference: "Справочник", + anchorNotes: "Заметки", +} as const; + +export type DmT = typeof dmTranslations; diff --git a/src/i18n/translations.ts b/src/i18n/translations.ts index bb6d463..07bdda9 100644 --- a/src/i18n/translations.ts +++ b/src/i18n/translations.ts @@ -81,6 +81,8 @@ export const translations = { catDecisionMaking: "Decision Making", catCreative: "Creative", catUtility: "Utility", + dmDashboard: "DM Dashboard", + dmDashboardDesc: "Tools for dungeon masters — dice, initiative, reference, and notes.", notFoundTitle: "Page Not Found", notFoundMessage: @@ -192,6 +194,8 @@ export const translations = { catDecisionMaking: "Принятие решений", catCreative: "Творчество", catUtility: "Утилиты", + dmDashboard: "Для мастера", + dmDashboardDesc: "Инструменты для мастера подземелий — кубики, инициатива, справочник и заметки.", notFoundTitle: "Страница не найдена", notFoundMessage: diff --git a/src/layouts/DmLayout.astro b/src/layouts/DmLayout.astro new file mode 100644 index 0000000..cb17412 --- /dev/null +++ b/src/layouts/DmLayout.astro @@ -0,0 +1,49 @@ +--- +import BaseLayout from "./BaseLayout.astro"; +import DmHeader from "../components/dm/DmHeader.astro"; +import AuthPanel from "../components/dm/AuthPanel.astro"; +import { dmTranslations as T } from "../i18n/dm-translations"; +import "../styles/dm-theme.css"; + +interface Props { + title?: string; + description?: string; +} + +const { + title = T.title, + description = "Dungeon Master Dashboard", +} = Astro.props; +--- + + +
+ + + + + +
+ +
+ + +
+
diff --git a/src/lib/auth/jwt.ts b/src/lib/auth/jwt.ts new file mode 100644 index 0000000..80fb9a0 --- /dev/null +++ b/src/lib/auth/jwt.ts @@ -0,0 +1,38 @@ +import { SignJWT, jwtVerify } from 'jose'; +import type { APIContext } from 'astro'; + +const SECRET = new TextEncoder().encode(process.env.JWT_SECRET!); + +export async function createToken(userId: string): Promise { + return new SignJWT({ sub: userId }) + .setProtectedHeader({ alg: 'HS256' }) + .setIssuedAt() + .setExpirationTime('7d') + .sign(SECRET); +} + +export async function verifyToken(token: string): Promise<{ sub: string }> { + const { payload } = await jwtVerify(token, SECRET, { + clockTolerance: 60, + }); + if (!payload.sub || typeof payload.sub !== 'string') { + throw new Error('Invalid token payload'); + } + return { sub: payload.sub }; +} + +export function setAuthCookie(token: string, context: APIContext): void { + context.cookies.set('auth_token', token, { + httpOnly: true, + secure: true, + sameSite: 'strict', + maxAge: 60 * 60 * 24 * 7, + path: '/', + }); +} + +export function clearAuthCookie(context: APIContext): void { + context.cookies.delete('auth_token', { + path: '/', + }); +} diff --git a/src/lib/auth/oauth.ts b/src/lib/auth/oauth.ts new file mode 100644 index 0000000..9af5975 --- /dev/null +++ b/src/lib/auth/oauth.ts @@ -0,0 +1,73 @@ +import { SignJWT, jwtVerify } from 'jose'; + +const JWT_SECRET = new TextEncoder().encode(import.meta.env.JWT_SECRET || ''); + +export function generateCodeVerifier(): string { + const array = new Uint8Array(64); + crypto.getRandomValues(array); + return base64UrlEncode(array); +} + +export async function generateCodeChallenge(verifier: string): Promise { + const encoder = new TextEncoder(); + const data = encoder.encode(verifier); + const hash = await crypto.subtle.digest('SHA-256', data); + return base64UrlEncode(new Uint8Array(hash)); +} + +function base64UrlEncode(buffer: Uint8Array): string { + let binary = ''; + for (let i = 0; i < buffer.byteLength; i++) { + binary += String.fromCharCode(buffer[i]); + } + return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); +} + +export function generateState(): string { + const array = new Uint8Array(32); + crypto.getRandomValues(array); + return base64UrlEncode(array); +} + +export const vkOAuthConfig = { + clientId: import.meta.env.VK_CLIENT_ID || '', + clientSecret: import.meta.env.VK_CLIENT_SECRET || '', + authUrl: 'https://id.vk.com/oauth2/auth', + tokenUrl: 'https://id.vk.ru/oauth2/auth', + scope: 'email phone', +}; + +export const yandexOAuthConfig = { + clientId: import.meta.env.YANDEX_CLIENT_ID || '', + clientSecret: import.meta.env.YANDEX_CLIENT_SECRET || '', + authUrl: 'https://oauth.yandex.com/authorize', + tokenUrl: 'https://oauth.yandex.com/token', + scope: 'login:email login:info login:avatar', +}; + +export async function createSessionToken(userId: number): Promise { + return new SignJWT({ sub: String(userId) }) + .setProtectedHeader({ alg: 'HS256' }) + .setIssuedAt() + .setExpirationTime('7d') + .sign(JWT_SECRET); +} + +export async function verifySessionToken(token: string): Promise<{ userId: number } | null> { + try { + const { payload } = await jwtVerify(token, JWT_SECRET, { clockTolerance: 60 }); + if (!payload.sub) return null; + return { userId: Number(payload.sub) }; + } catch { + return null; + } +} + +export const COOKIE_NAME = 'session'; +export const VERIFIER_COOKIE_NAME = 'oauth_verifier'; + +export function getCookieValue(cookieHeader: string | null, name: string): string | null { + if (!cookieHeader) return null; + const match = cookieHeader.match(new RegExp(`(?:^|;\\s*)${name}=([^;]+)`)); + return match ? decodeURIComponent(match[1]) : null; +} diff --git a/src/lib/auth/session.ts b/src/lib/auth/session.ts new file mode 100644 index 0000000..38460ed --- /dev/null +++ b/src/lib/auth/session.ts @@ -0,0 +1,32 @@ +import { eq } from 'drizzle-orm'; +import { db } from '@/db/client'; +import { sessions } from '@/db/schema'; + +export async function createSession(userId: number, token: string) { + const expiresAt = new Date(); + expiresAt.setDate(expiresAt.getDate() + 7); + + await db.insert(sessions).values({ + userId, + token, + expiresAt, + }); +} + +export async function getSession(token: string) { + const result = await db + .select() + .from(sessions) + .where(eq(sessions.token, token)) + .limit(1); + + const session = result[0]; + if (!session) return null; + if (new Date() > session.expiresAt) return null; + + return session; +} + +export async function deleteSession(token: string) { + await db.delete(sessions).where(eq(sessions.token, token)); +} diff --git a/src/lib/client/auth-panel.ts b/src/lib/client/auth-panel.ts new file mode 100644 index 0000000..7127567 --- /dev/null +++ b/src/lib/client/auth-panel.ts @@ -0,0 +1,31 @@ +export interface AuthUser { + name: string; + avatar: string | null; +} + +export type AuthPanelState = + | { type: 'guest' } + | { type: 'authenticated'; user: AuthUser }; + +export function getAuthPanelState(user: AuthUser | null): AuthPanelState { + if (!user) { + return { type: 'guest' }; + } + return { type: 'authenticated', user }; +} + +export interface AuthPanelLink { + href: string; + label: string; + style: 'vk' | 'yandex' | 'logout'; +} + +export function getAuthLinks(state: AuthPanelState): AuthPanelLink[] { + if (state.type === 'guest') { + return [ + { href: '/api/auth/login/vk', label: 'Войти через VK', style: 'vk' }, + { href: '/api/auth/login/yandex', label: 'Войти через Яндекс', style: 'yandex' }, + ]; + } + return [{ href: '/api/auth/logout', label: 'Выйти', style: 'logout' }]; +} diff --git a/src/lib/client/dice.ts b/src/lib/client/dice.ts new file mode 100644 index 0000000..0e909d9 --- /dev/null +++ b/src/lib/client/dice.ts @@ -0,0 +1,54 @@ +import { randomInt } from "./random"; + +export interface DiceNotation { + count: number; + sides: number; + modifier: number; +} + +export interface DiceRollResult { + rolls: number[]; + total: number; + modifier: number; +} + +export function parseDiceNotation(notation: string): DiceNotation { + const trimmed = notation.trim().toLowerCase(); + if (!trimmed) { + throw new Error("Empty dice notation"); + } + + const match = trimmed.match(/^(\d*)\s*d\s*(\d+)\s*([+-]\s*\d+)?$/); + if (!match) { + throw new Error(`Invalid dice notation: ${notation}`); + } + + const count = match[1] === "" ? 1 : parseInt(match[1], 10); + const sides = parseInt(match[2], 10); + const modifier = match[3] ? parseInt(match[3].replace(/\s/g, ""), 10) : 0; + + if (count < 1 || sides < 1) { + throw new Error("Dice count and sides must be at least 1"); + } + + return { count, sides, modifier }; +} + +export function rollDice( + count: number, + sides: number, + modifier: number, +): DiceRollResult { + if (count < 1 || sides < 1) { + throw new Error("Dice count and sides must be at least 1"); + } + + const rolls: number[] = []; + for (let i = 0; i < count; i++) { + rolls.push(randomInt(1, sides)); + } + + const total = rolls.reduce((sum, roll) => sum + roll, 0) + modifier; + + return { rolls, total, modifier }; +} diff --git a/src/lib/client/initiative.ts b/src/lib/client/initiative.ts new file mode 100644 index 0000000..8158897 --- /dev/null +++ b/src/lib/client/initiative.ts @@ -0,0 +1,20 @@ +import { randomInt } from "./random"; + +export interface Combatant { + id: string; + name: string; + initiative: number; +} + +export function sortByInitiative(combatants: Combatant[]): Combatant[] { + return [...combatants].sort((a, b) => b.initiative - a.initiative); +} + +export function getNextActiveIndex(currentIndex: number, total: number): number { + if (total === 0) return 0; + return (currentIndex + 1) % total; +} + +export function rollInitiative(modifier: number = 0): number { + return randomInt(1, 20) + modifier; +} diff --git a/src/lib/client/notes.ts b/src/lib/client/notes.ts new file mode 100644 index 0000000..9e7dd9b --- /dev/null +++ b/src/lib/client/notes.ts @@ -0,0 +1,13 @@ +const STORAGE_KEY = 'dm-notes'; + +export function saveNotes(content: string): void { + localStorage.setItem(STORAGE_KEY, content); +} + +export function loadNotes(): string { + return localStorage.getItem(STORAGE_KEY) ?? ''; +} + +export function clearNotes(): void { + localStorage.removeItem(STORAGE_KEY); +} diff --git a/src/lib/client/open5e-ui.ts b/src/lib/client/open5e-ui.ts new file mode 100644 index 0000000..fadaa7f --- /dev/null +++ b/src/lib/client/open5e-ui.ts @@ -0,0 +1,188 @@ +import { + searchMonsters, + searchSpells, + getMonster, + getSpell, +} from "@/lib/open5e/client"; + +export type Tab = "monsters" | "spells"; + +export interface Open5eItem { + key: string; + name: string; +} + +export interface UIState { + tab: Tab; + query: string; + monsterCrFilter: string; + spellLevelFilter: string; + page: number; + pageSize: number; + results: Open5eItem[]; + totalPages: number; + loading: boolean; + error: string | null; + selectedItem: Open5eItem | null; +} + +export class Open5eUIManager { + state: UIState; + onUpdate?: (state: UIState) => void; + private debounceTimer: ReturnType | null = null; + + constructor(onUpdate?: (state: UIState) => void) { + this.onUpdate = onUpdate; + this.state = { + tab: "monsters", + query: "", + monsterCrFilter: "", + spellLevelFilter: "", + page: 1, + pageSize: 10, + results: [], + totalPages: 1, + loading: false, + error: null, + selectedItem: null, + }; + } + + private notify() { + this.onUpdate?.({ ...this.state }); + } + + async setTab(tab: Tab): Promise { + this.state.tab = tab; + this.state.page = 1; + this.state.selectedItem = null; + this.notify(); + await this.search(); + } + + setQuery(query: string): Promise { + this.state.query = query; + this.state.page = 1; + this.notify(); + return this.search(); + } + + setQueryDebounced(query: string): void { + this.state.query = query; + this.state.page = 1; + this.notify(); + if (this.debounceTimer) clearTimeout(this.debounceTimer); + this.debounceTimer = setTimeout(() => { + this.search(); + }, 300); + } + + setMonsterCrFilter(cr: string): void { + this.state.monsterCrFilter = cr; + this.state.page = 1; + this.notify(); + } + + setSpellLevelFilter(level: string): void { + this.state.spellLevelFilter = level; + this.state.page = 1; + this.notify(); + } + + async search(): Promise { + this.state.loading = true; + this.state.error = null; + this.notify(); + + try { + let results: Open5eItem[] = []; + if (this.state.tab === "monsters") { + const filters = this.state.monsterCrFilter + ? { challenge_rating_decimal: this.state.monsterCrFilter } + : undefined; + results = await searchMonsters(this.state.query, filters); + } else { + const filters = this.state.spellLevelFilter + ? { level: this.state.spellLevelFilter } + : undefined; + results = await searchSpells(this.state.query, filters); + } + this.state.results = results; + this.state.totalPages = Math.max( + 1, + Math.ceil(results.length / this.state.pageSize) + ); + } catch (err: unknown) { + this.state.error = err instanceof Error ? err.message : "Unknown error"; + this.state.results = []; + this.state.totalPages = 1; + } finally { + this.state.loading = false; + this.notify(); + } + } + + getPaginatedResults(): Open5eItem[] { + const start = (this.state.page - 1) * this.state.pageSize; + const end = start + this.state.pageSize; + return this.state.results.slice(start, end); + } + + nextPage(): void { + if (this.state.page < this.state.totalPages) { + this.state.page++; + this.notify(); + } + } + + prevPage(): void { + if (this.state.page > 1) { + this.state.page--; + this.notify(); + } + } + + async selectItem(key: string): Promise { + this.state.loading = true; + this.notify(); + try { + if (this.state.tab === "monsters") { + this.state.selectedItem = await getMonster(key); + } else { + this.state.selectedItem = await getSpell(key); + } + } catch (err: unknown) { + this.state.error = err instanceof Error ? err.message : "Failed to load details"; + } finally { + this.state.loading = false; + this.notify(); + } + } + + clearSelectedItem(): void { + this.state.selectedItem = null; + this.notify(); + } + + static formatCr(cr: string): string { + const crMap: Record = { + "0.125": "1/8", + "0.25": "1/4", + "0.5": "1/2", + "1.00": "1", + "2.00": "2", + "3.00": "3", + "5.00": "5", + "10.00": "10", + "15.00": "15", + "20.00": "20", + "30.00": "30", + }; + return crMap[cr] ?? String(parseFloat(cr)); + } + + static formatSpellLevel(level: number): string { + if (level === 0) return "Заговор"; + return `${level}-й уровень`; + } +} diff --git a/src/lib/open5e/cache.ts b/src/lib/open5e/cache.ts new file mode 100644 index 0000000..5db587b --- /dev/null +++ b/src/lib/open5e/cache.ts @@ -0,0 +1,37 @@ +const ONE_DAY_MS = 24 * 60 * 60 * 1000; + +interface CacheEntry { + data: T; + timestamp: number; +} + +export function getCached(key: string): T | null { + if (typeof localStorage === "undefined") return null; + try { + const raw = localStorage.getItem(key); + if (!raw) return null; + const entry: CacheEntry = JSON.parse(raw); + if (Date.now() - entry.timestamp > ONE_DAY_MS) { + localStorage.removeItem(key); + return null; + } + return entry.data; + } catch { + return null; + } +} + +function safeStorageSet(key: string, value: string): boolean { + try { + localStorage.setItem(key, value); + return true; + } catch { + return false; + } +} + +export function setCached(key: string, data: T): void { + if (typeof localStorage === "undefined") return; + const entry: CacheEntry = { data, timestamp: Date.now() }; + safeStorageSet(key, JSON.stringify(entry)); +} diff --git a/src/lib/open5e/client.ts b/src/lib/open5e/client.ts new file mode 100644 index 0000000..b95378d --- /dev/null +++ b/src/lib/open5e/client.ts @@ -0,0 +1,131 @@ +import { getCached, setCached } from "./cache"; + +const API_BASE = "https://api.open5e.com/v2"; + +export interface Monster { + name: string; + key: string; + challenge_rating_decimal: string; + type: string; + hit_points: number; + armor_class: number; +} + +export interface Spell { + name: string; + key: string; + level: number; + school: string; +} + +interface SearchFilters { + [key: string]: string; +} + +async function apiFetch(url: string): Promise { + const res = await fetch(url, { + headers: { Accept: "application/json" }, + }); + if (!res.ok) { + throw new Error(`${res.status}: ${res.statusText}`); + } + return res.json(); +} + +function buildUrl(endpoint: string, query?: string, filters?: SearchFilters): string { + const url = new URL(endpoint, API_BASE); + if (query) { + url.searchParams.set("name__icontains", query); + } + if (filters) { + for (const [key, value] of Object.entries(filters)) { + url.searchParams.set(key, value); + } + } + return url.toString(); +} + +export async function searchMonsters( + query: string, + filters?: SearchFilters +): Promise { + const cacheKey = `open5e:monsters:${query}`; + const cached = getCached(cacheKey); + if (cached) return cached; + + const url = buildUrl("/creatures/", query, filters); + const urlObj = new URL(url); + urlObj.searchParams.set( + "fields", + "name,key,challenge_rating_decimal,type,hit_points,armor_class" + ); + + try { + const data = await apiFetch<{ results: Monster[] }>(urlObj.toString()); + setCached(cacheKey, data.results); + return data.results; + } catch (err) { + const stale = getCached(cacheKey); + if (stale) return stale; + throw err; + } +} + +export async function getMonster(key: string): Promise { + const cacheKey = `open5e:monster:${key}`; + const cached = getCached(cacheKey); + if (cached) return cached; + + const url = `${API_BASE}/creatures/${key}/`; + + try { + const data = await apiFetch(url); + setCached(cacheKey, data); + return data; + } catch (err) { + const stale = getCached(cacheKey); + if (stale) return stale; + throw err; + } +} + +export async function searchSpells( + query: string, + filters?: SearchFilters +): Promise { + const cacheKey = `open5e:spells:${query}`; + const cached = getCached(cacheKey); + if (cached) return cached; + + const url = buildUrl("/spells/", query, filters); + const urlObj = new URL(url); + urlObj.searchParams.set("fields", "name,key,level,school"); + + try { + const data = await apiFetch<{ results: Spell[] }>(urlObj.toString()); + setCached(cacheKey, data.results); + return data.results; + } catch (err) { + const stale = getCached(cacheKey); + if (stale) return stale; + throw err; + } +} + +export async function getSpell(key: string): Promise { + const cacheKey = `open5e:spell:${key}`; + const cached = getCached(cacheKey); + if (cached) return cached; + + const url = `${API_BASE}/spells/${key}/`; + + try { + const data = await apiFetch(url); + setCached(cacheKey, data); + return data; + } catch (err) { + const stale = getCached(cacheKey); + if (stale) return stale; + throw err; + } +} diff --git a/src/middleware/index.ts b/src/middleware/index.ts new file mode 100644 index 0000000..7c1273f --- /dev/null +++ b/src/middleware/index.ts @@ -0,0 +1,38 @@ +import { defineMiddleware } from 'astro:middleware'; +import { verifyToken } from '@/lib/auth/jwt'; +import { getSession } from '@/lib/auth/session'; +import { db } from '@/db/client'; +import { users } from '@/db/schema'; +import { eq } from 'drizzle-orm'; + +export const onRequest = defineMiddleware(async (context, next) => { + context.locals.user = null; + + const token = context.cookies.get('auth_token')?.value; + if (!token) { + return next(); + } + + try { + await verifyToken(token); + const session = await getSession(token); + if (!session) { + return next(); + } + + const userResult = await db + .select() + .from(users) + .where(eq(users.id, session.userId)) + .limit(1); + + const user = userResult[0]; + if (user) { + context.locals.user = user; + } + } catch { + /* ignore invalid tokens */ + } + + return next(); +}); diff --git a/src/pages/404.astro b/src/pages/404.astro index 91cb6f9..d867580 100644 --- a/src/pages/404.astro +++ b/src/pages/404.astro @@ -18,6 +18,7 @@ const notFoundSchema = { inLanguage: lang, }; --- +export const prerender = true;