From 84b51ad85fe7b8bd659f8d7886a37da29c040877 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D0=B5=D0=BC?= Date: Tue, 4 Nov 2025 18:58:12 +0300 Subject: [PATCH] better --- .gitignore | 10 + README.md | 367 +++++++++++++ docs/img/browser_z2xVfQLybR.png | Bin 0 -> 25099 bytes docs/img/logo.png | Bin 0 -> 342075 bytes go.mod | 21 +- go.sum | 98 +++- observer/cmd/observer/main.go | 58 +- observer/config.yaml | 4 +- observer/internal/app/model.go | 1 + observer/internal/app/observer.go | 94 +++- observer/internal/app/worker.go | 126 +++++ observer/internal/http/handler.go | 120 ++++- observer/internal/http/middlewares.go | 19 + observer/internal/http/srv.go | 62 ++- observer/internal/http/websocketServer.go | 144 +++++ observer/static/app.js | 507 +++++++----------- observer/static/favicon.ico | Bin 0 -> 21527 bytes observer/static/templates/index.html | 70 +-- worker/cmd/worker/main.go | 17 +- worker/grpc/server.go | 22 +- worker/internal/app/job.go | 27 + worker/internal/app/playwright.go | 136 +++++ .../app/resource/playwright.config.js | 87 +++ worker/internal/app/run_linux.go | 7 + worker/internal/app/run_windows.go | 23 + worker/internal/app/worker.go | 113 +++- worker/internal/utils/logger.go | 33 ++ worker/proto/gen/worker.pb.go | 105 ++-- worker/proto/gen/worker_grpc.pb.go | 48 +- worker/proto/worker.proto | 17 +- 30 files changed, 1736 insertions(+), 600 deletions(-) create mode 100644 README.md create mode 100644 docs/img/browser_z2xVfQLybR.png create mode 100644 docs/img/logo.png create mode 100644 observer/internal/app/model.go create mode 100644 observer/internal/app/worker.go create mode 100644 observer/internal/http/websocketServer.go create mode 100644 observer/static/favicon.ico create mode 100644 worker/internal/app/job.go create mode 100644 worker/internal/app/playwright.go create mode 100644 worker/internal/app/resource/playwright.config.js create mode 100644 worker/internal/app/run_linux.go create mode 100644 worker/internal/app/run_windows.go create mode 100644 worker/internal/utils/logger.go diff --git a/.gitignore b/.gitignore index 76b4d63..6bbb112 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,8 @@ *.so *.dylib .idea +playwright +*.log # Test binary, built with `go test -c` *.test @@ -31,3 +33,11 @@ go.work.sum # Editor/IDE # .idea/ # .vscode/ + +# Playwright +node_modules/ +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ +/playwright/.auth/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..d3f1dc1 --- /dev/null +++ b/README.md @@ -0,0 +1,367 @@ +# 🐂 Ox — Нагрузочное тестирование 1С + +![logo.png](docs/img/logo.png) + +> Кроссплатформенный инструмент для нагрузочного тестирования веб-клиента 1С на базе Playwright + +## 📋 Содержание + +- [Введение](#введение) +- [Возможности и ограничения](#возможности-и-ограничения) +- [Установка](#установка) +- [Архитектура](#архитектура) +- [Быстрый старт](#быстрый-старт) +- [Создание тестовых сценариев](#создание-тестовых-сценариев) +- [Отладка и диагностика](#отладка-и-диагностика) +- [Документация](#документация) + +## 📖 Введение + +**Ox** — это открытоисходный инструмент для нагрузочного тестирования веб-клиента 1С. Он позволяет эмулировать действия пользователей и создавать нагрузку на тестируемую систему без необходимости глубокого понимания архитектуры Test Center 1C. + +Проект создан на базе [Playwright](https://playwright.dev/) и предоставляет простой и удобный способ записи и воспроизведения пользовательских сценариев с поддержкой множественных параллельных исполнителей. + +### Почему Ox? + +В экосистеме открытого ПО отсутствует достойная альтернатива Test Center 1C для нагрузочного тестирования. Хотя Ox не претендует на полную замену Test Center (который предоставляет больше функций и возможностей), он компенсирует это **простотой использования**: + +- ✅ Интуитивная запись сценариев (как встроенный менеджер тестирования в 1С) +- ✅ Не требует специальной квалификации от инженеров +- ✅ Удобная панель управления и распределённое выполнение тестов +- ✅ Автоматическая запись скриншотов и видео при сбоях + +## 🎯 Возможности и ограничения + +### ✅ Что поддерживает Ox + +- **Простая эксплуатация** — минимальная настройка и кривая обучения +- **Запись сценариев через UI** — как встроенный менеджер тестирования в 1С +- **Скриншоты и видео при ошибках** — автоматическая диагностика сбоев +- **Распределённое выполнение** — запуск множества worker'ов на разных машинах +- **Параллельные потоки** — настраиваемое количество одновременных тестов на worker'е +- **Панель управления** — веб-интерфейс для оркестрации и мониторинга +- **Выявление проблем** — логи worker'ов содержат подробную диагностику ошибок + +### ❌ Ограничения + +- **Только веб-клиент** — не поддерживает толстый клиент 1С +- **Упрощённый функционал** — по сравнению с Test Center 1C +- **Зависит от Playwright** — используются возможности и ограничения браузерной автоматизации + +## 💾 Установка + +### Вариант 1: Из готовых бинарников + +Скачайте последний релиз из [GitHub Releases](https://github.com/LazarenkoA/extensions-info/releases) + +### Вариант 2: Сборка из исходников + +**Требования:** +- [Go](https://go.dev/dl/) 1.21+ +- Make или аналогичный инструмент + +```bash +make build-backend +``` + +**Требования для worker'ов:** +- [Node.js](https://nodejs.org/en/download) 18+ +- Playwright установится автоматически при первом запуске worker'а + +## 🏗️ Архитектура + +Ox состоит из двух компонентов: + +### Worker + +- **Описание:** Рабочий процесс, запускаемый на ВМ, с которой идёт нагрузка +- **Функция:** Выполнение Playwright сценариев в несколько потоков +- **Масштабирование:** Можно запускать множество экземпляров worker'ов +- **Требования:** Node.js, доступ к тестируемому веб-сервису 1С + +### Observer + +- **Описание:** Центральный оркестратор и панель управления +- **Функция:** Управление worker'ами, распределение сценариев, сбор результатов +- **Экземпляры:** Должен быть ровно один экземпляр +- **Требования:** Сетевой доступ ко всем worker'ам по TCP + +## 🚀 Быстрый старт + +### Шаг 1: Запустить Worker + +На машине, с которой будет идти нагрузка: + +```bash +worker.exe -p 55556 +``` + +**Доступные флаги:** +- `-p, --port` — порт для прослушивания (по умолчанию 55556) +- `-h, --host` — адрес для прослушивания (по умолчанию 0.0.0.0) + +Можно запустить несколько экземпляров на разных портах: + +```bash +worker.exe -p 55556 & +worker.exe -p 55557 & +worker.exe -p 55558 & +``` + +### Шаг 2: Настроить Observer + +Отредактируйте конфиг [observer/config.yaml](observer/config.yaml): + +```yaml +workers: + - host: 192.168.1.10 + port: 55556 + - host: 192.168.1.11 + port: 55556 + - host: 192.168.1.11 + port: 55557 + +observer: + port: 8091 + listen: 0.0.0.0 +``` + +### Шаг 3: Запустить Observer + +```bash +observer.exe -c config.yaml +``` + +Observer запустит веб-сервер на `http://localhost:8091` + +### Шаг 4: Проверить статус Worker'ов + +Откройте в браузере `http://localhost:8091` и проверьте, что все worker'ы в статусе **READY**: + +![browser_z2xVfQLybR.png](docs/img/browser_z2xVfQLybR.png) + +#### Устранение проблем с подключением + +**Если worker'ы в статусе OFFLINE:** + +1. Проверьте сетевую доступность: + ```bash + telnet + # или + nc -zv + ``` + +2. Проверьте, что worker'ы запущены и слушают нужные порты: + ```bash + lsof -i : # macOS/Linux + netstat -ano | findstr : # Windows + ``` + +3. Проверьте firewall правила на машинах с worker'ами + +4. Убедитесь, что в конфиге Observer правильно указаны IP-адреса и порты + +## 📝 Создание тестовых сценариев + +### Запись сценария с помощью Codegen + +Используйте встроенный UI редактор Playwright: + +```bash +npx playwright codegen http://localhost/bsp/ru_RU/ +``` + +Откроется два окна: +- **Браузер** — для выполнения действий +- **Inspector** — для просмотра генерируемого кода + +Выполняйте действия в браузере, они автоматически записываются как код. + +### Пример сгенерированного сценария + +```javascript +import { test, expect } from '@playwright/test'; + +test('create_survey_template', async ({ page }) => { + // Переход на систему и авторизация + await page.goto('http://localhost/bsp/ru_RU/'); + await page.locator('#userName').fill('Администратор'); + await page.locator('#userName').press('Tab'); + await page.locator('#userPassword').fill('123'); + await page.locator('#userPassword').press('Enter'); + + // Ожидание загрузки интерфейса + await page.waitForLoadState('networkidle'); + + // Навигация по меню + await page.getByText('Анкетирование').click(); + await page.getByText('Шаблоны анкет').click(); + + // Создание нового шаблона + await page.locator('[id="form4_ФормаСоздать"]').click(); + + const templateName = randomString(); + await page.getByRole('textbox', { name: 'Наименование:' }) + .pressSequentially(templateName); + + await page.locator('[id="form5_Заголовок"] > .inputs') + .pressSequentially(randomString()); + + // Сохранение + await page.locator('[id="form5_ФормаЗаписатьИЗакрыть"]').click(); + + // Удаление созданного шаблона + await page.locator('[id="grid_form4_Список"]') + .getByText(templateName, { exact: true }) + .click({ button: 'right' }); + + await page.locator('#popupItem4') + .getByText('Пометить на удаление / Снять пометку') + .click(); + + await page.locator('#form6_Button0 a') + .filter({ hasText: 'Да' }) + .click(); +}); + +function randomString() { + return Math.random().toString(36).substring(2, 10); +} +``` + +### Рекомендации при редактировании сценариев + +1. **Используйте `.pressSequentially()` вместо `.fill()`** — для элементов с автодополнением и валидацией +2. **Добавляйте явные ожидания** — `await page.waitForLoadState('networkidle')` +3. **Используйте подробные селекторы** — избегайте селекторов, зависящих от порядка элементов +4. **Генерируйте уникальные данные** — используйте функции для создания случайных значений +5. **Обрабатывайте ошибки** — добавляйте проверки важных состояний + +Полная документация: [Playwright Documentation](https://playwright.dev/docs/intro) + +## 🧪 Проверка и отладка сценариев + +### Локальное тестирование в UI режиме + +После записи сценария проверьте его работу: + +```bash +cd playwright +npx playwright test ./tests/bsp.spec.js --project=chromium --ui +``` + +Откроется интерактивное окно, где можно: +- Запустить сценарий целиком или отдельные шаги +- Увидеть скриншот каждого шага +- Отследить выполнение с замедлением + +### Отладка в режиме Inspector'а + +```bash +PWDEBUG=1 npx playwright test ./tests/bsp.spec.js --project=chromium +``` + +Откроется Inspector для пошагового выполнения. + +### Просмотр отчётов + +После выполнения тестов на worker'е, результаты находятся в: + +``` +/playwright/playwright-report/index.html +``` + +Отчёт содержит: +- 📸 Скриншоты каждого шага +- 🎥 Видео выполнения (особенно полезно при ошибках) +- 📋 Список всех действий и их результатов +- ⏱️ Время выполнения каждого шага + +### Распространённые проблемы + +| Проблема | Решение | +|----------|---------| +| Элемент не найден | Проверьте селектор в DevTools браузера, используйте более специфичные селекторы | +| Timeout при ожидании | Увеличьте timeout: `await page.locator(...).click({ timeout: 30000 })` | +| Случайные падения | Добавьте явные ожидания загрузки: `await page.waitForLoadState('networkidle')` | +| Элемент скрыт за другим | Используйте scroll: `await page.locator(...).scrollIntoViewIfNeeded()` | +| Данные не совпадают при повторном запуске | Используйте генерацию уникальных данных для каждого прогона | + +## 📊 Управление тестами из Observer'а + +В веб-интерфейсе Observer'а вы можете: + +1. **Выбрать worker** — на котором запустится тест +2. **Установить параллелизм** — количество одновременных потоков +3. **Загрузить сценарий** — выбрать подготовленный скрипт Playwright +4. **Запустить тест** — начать выполнение +5. **Мониторить статус** — просматривать результаты в реальном времени + +### Интерпретация статусов + +- **READY** — worker подключен и готов к работе +- **RUNNING** — выполняется тест +- **ERROR** — тест завершился с ошибкой (см. логи) +- **OFFLINE** — worker недоступен (проверьте сетевое соединение) + +## 📚 Документация + +- [Playwright Documentation](https://playwright.dev/) +- [1C Web Client Documentation](https://its.1c.eu/db/v8314doc) +- [Структура проекта](docs/ARCHITECTURE.md) +- [Примеры сценариев](examples/) + +## 🐛 Диагностика проблем + +### Логи Worker'а + +При ошибке в тесте: + +```bash +tail -f /logs/worker.log +``` + +### Логи Observer'а + +```bash +tail -f /logs/observer.log +``` + +### Видео и скриншоты при сбое + +Находятся в: +``` +/playwright/playwright-report/index.html +``` + +Видео особенно полезно для понимания того, что произошло перед ошибкой. + +## 🤝 Контрибьютинг + +Приветствуются pull requests с: +- Исправлениями ошибок +- Новыми возможностями +- Улучшениями документации +- Примерами сценариев + +## 📄 Лицензия + +Проект распространяется под лицензией [укажите лицензию] + +## ❓ Часто задаваемые вопросы + +**Q: Можно ли использовать Ox для толстого клиента 1С?** +A: Нет, Ox поддерживает только веб-клиент. + +**Q: Сколько worker'ов можно запустить?** +A: Неограниченно, но рекомендуется учитывать ресурсы машин и лимиты браузеров. + +**Q: Как увеличить количество одновременных тестов?** +A: Используйте слайдер в Observer'е для настройки параллелизма на каждом worker'е. + +**Q: Нужна ли лицензия на Playwright?** +A: Нет, Playwright распространяется бесплатно и с открытыми исходниками. + +## 📞 Поддержка + +Для сообщений об ошибках и вопросов используйте [GitHub Issues](https://github.com/LazarenkoA/ox/issues) \ No newline at end of file diff --git a/docs/img/browser_z2xVfQLybR.png b/docs/img/browser_z2xVfQLybR.png new file mode 100644 index 0000000000000000000000000000000000000000..daeef76d5aa700f5aa0b1153c3bd55a72d3480ef GIT binary patch literal 25099 zcmeFZ2Q=Jk*e^OHh?eX~5G8~}bP_d0PehDhj2WFFQKE|yy+lco=*H+JG0G4lL~lX# zmJA|#L??P5hWj6~_qX?V&R5P__niBkdyciX&Ezf5`}F7cKCf304Ha4{W-1T}M5}uL zE))bhodE)oWSt=gKFP$RZUO%zae=BRfeN}==Yd~NTPdn5fSJIbrvAZKL*2{Lhcrc-&Xt~(zf*WP_r+zb1!C>=U zFwW{W0VR_&-kW<%Z9&kJ&!@|~F6MQKTiNpn|IKJ0%H6xo+V4g{yf5`Lk7lEE3#(kZ2BEMrAA5(u;pEQMOzsI7USM&vD^D& z$nBF1Zs5nK9VaAUBs*i{7Cj}?EoYB;8p%!I%h=qPt65#bO*ZW- z=X%T1Bi@ZO+5{a;X)3C2;2oGQ7q~aAn5XHC-93N{hixj&33^KL1RW^dM{3Z6b0{U- zwI>$kywsKv^bWSgBU{k<#h?}c%~#b}q^S*I^-|ulws85IC0Mm1!|{#^8k^W)oF9p1 zn*GH?=hP#;d2#f<5|V9ya+2ks<@(6g9tJC(8lfFWW47w26?VP{b)goh+O&rpQ|~vT zN8m;(H`Q|X*0;u=7bo}Wg4A|$Y|g0_M~p>N^a#n;+RYl)`yB~+mu}bg{M?rJGImJP zX3n-|l;=8U!*%&&|FO;D;6wzUMd(flRY#`g)S%-ftmiz5e+|DMqmS{@O3|#Hzabhi zoaY*mv*)Y}v71MX^V2J(wH8NVtB@!NT50}*r{}EYk{gO~#U3v3ITS3K-H?>6J8Y#_ z>&X?n)(`j$;4468(TY+WJj8y4O^@|dTh?t-`(O%CB#O8&!e~Q?@fY5&@={+rgf`c_ z3k~Ih&)fPoDYaH(V^#PwO#JgaBCZqi+)^pML+jRc)o-238ApWDbY=UT71Eb676fT zpZ z2jR~jFNHob7~`?_=Q%Jy2=4^r+S3+7AbYYIeZnjBRx&lUhH>P>l!N;BBW z`MRgNevUc(p>>HnuYP&2GbHGYH2YZBJ&dS6z}J0)`HXJwu1rZR4Q!E1*vC->C74C+ zP#^CSdG#rv|IGwc1ERjy8sXjhnj=NdFgJRg=|Mkr1{iQ4S+veai|B^jU4G9CU<5Bs zn)lH=O|T>r_Q^JUK5M!eKUUj`7&~>mTI;#nT(I8fKWoxsQSLgGWjJwzuao1SW$=kw zBKThv<~@t-He}sa>xbTsZQ8f7UoCm|F!V}DHJ)N8D1ty8?$*%cJRIZLHr_C(r*{J<$1L074sJceAJyY&vW}AX%N>bOIvOZbGbES8#>x9=$sIK^s&!BxVtc&(R)qam z_uHQyCi(bTl^;m%9n@W_Jql#qB{=N``W!xEoccro?l{H1n^Jc$w$eVzj(=Zwu!)xZBYMu_t8~~aeV`}gC#5e zeVsXkuluFiy*I1}T~5GvpM6o0D@J1ladq2qryTa(Dh%(`t)s?w;TB~FMI&8xvCkxJ zJCai4o>g8R!fnK^EI!AE_)YBFv|VxB%PeDcos5}wIJ2~6?6?b_d*wVJ%Mpa_jT<;L zB3~@HX+#iZ^6Bb1Ks)TSF;&YNEl1TOgrx2YV)41G&i$IN)q0SXExx*!g!~_zt&lO2 zyZ*vXRF>~f-+GaXMXN;w1L{ugMX%2Y6a4)OHKnSOX$L0f4-;?GS~D0!I*8wyg*^1m z)~uTO=iZjzj9hvBe8W%RMGB*kxZxf7^%UFhbVJko<3l1hV1hk+88ou9FPf&m2w#$r z*Bcy^kIb-o(ZSyOMg4j4Q*f{TgmX5{=$vp;A8teVaJ|!?*Ztnyel4x6-ci8CZ}Jd> z0&fMX%93$@cdzp5@uT9hY6Mj_(>EVoD%%5#V*JL!3V34ySLC_ni>t;2F0b5oaW6jz z7sHC>m+L0#?shP&^wh8Sd84OcCDkp4r2=)?BfJ?^gz2IxenT(RM}aL=V_zC-gsU+w zHmU;hvxrYJtL)S8H%Vh$8g<&1yO+|pc+x{V zs!}&zbJx6tS^!j`0jhlW^`%<*(^I#=*(CJsT4#ut34|{fccV;;~o+r*Rx5x+y_dI!L{+fg^_G!(g57z%Pbh@52_(uc$NOrtKq1MFS&uV z-SDs)reLkycLgr(sRozHrE5o=#kFVOX&~j(V|yFQ1D7FFhJ6UYp)jt{5ZIGks+=@D zaNbR-oED3hT6bx+I_x9%nqo{8=wIiwO#K0u&Q;L6hp~ey z_cc{bL$ELLuUMHGAWfVL+#+|88e>p;%^?w}f-KC4Eh{uf7=uR0U1nf_;Gsy3S%Mx> z@GXAxAGcbZb4&oK!e#b4GHjR_G`)z*@U+d0NLC*s8$eGZ43LP{!V1Qfikhe9<-D(XXkLMIPUXIH=8qvV^uQqi!DnDx*F$qw)D%xRmJ?`zX#hrTa)JSJ*1b(g`ZL?J zoO0INkJ`EkH{p*b_@0enL6^Js8(;Y+9*Tmm>HAhI_8^aBeHfwww-Dh7cTdI}}M z9S_fMrQ8RmfwP?|4os|dnqqYCT9d&FS+m%*EwmvDwA3gw5;UV0uqw*fUG+6zN&_cm zQNvoxA_l+l)3IaKl!*b-*ofwP3mcpgB>c=R-we%m@_a!9n1}A&J+i(VaA`8-zBAZ> zN?D$_4m(E$RM~|A>v3gBDxUW*nG3+&j!YLJ_0Huwa+lc{Aoc63gJpO?K6i6T!HDj1 z<+Ev?uiwN!iD8xU%wruN;!;=9crz7$O^jVuRm096C6%&h-l05jx8Vw4$M16NaDz4a z%@5}DZFPvLmb_mgtEfBD=g_+@mau)OwLP5I&Ygz1OV;5;4!d;~bL#?MJS}|!3A!g3 zce*&;E0J>gD^*Ttae4!1dpsq5cfk6ba;%QRUU9lj3SdH8qc0>qg}pz?%bZk+-fZUdVUdBK|uur6@j z@-DrV5>s({ASu8SaN2n^J%j_UK-`WK_<&E~-DU!0hR6|M+7)l zNtDy{kVBliCPV=aup?H>umG1#3v#5o`r<+Sn){Vzd`d zX5CwVAe);n_S7cZ6)P`HhX=AQ+|M_{KB^jt-{58WKskePg5@QDue^VjU0nMtyA+Tk zUm3mEwORDK^5|KD?ZUJC(;!eXv?ad}OSe$is2O*GTPXUfN>3=87@(iv++S}+I=@`K zes?`g-9*R69`&xdGn^GzM8Tk+pMNVa80xMiKa*Jz6$GFo_p2T?cWo5CNpQ4V_aito z9JJN~=`pT=O`rEEC3-pDui588pc!|8iYf=Sj* zmvCB}DwXhw7DJ%WY!t9Uf9HzDqfxE(z`nQcjxH)#FpJK9PcOawwm}Z~$jIzAf0IxK zkl(&!Wd&x~!j6|P2av2tGKpe3B0$k9o>UK3(E;|>Hx=b4X6OM%#Z39G|Fs51k~U^{ z#l#f|S)0@tQ7!6#CpzIc*X_gyS}UqGl3Q&3-td({)))5*e^c(|ez5B);$VP!;9w}E zJzEevzoFaK8Di_KTH`KGZX?hapY!2nOWt`qOD-bt#cck$d=OWZsYb=3t7>+q?4pJ~ zU)R!QoJ^f@;;c}#Suvw!sF&uLx9v(~!#W!Jy%6WUf{A3l>G#y!C;FkN-h3+<1cE*7 ziysv6^Fnp%6@s(67UN>91dunirOi91o-z$q0%e9#yypAY)i)uJZko+N6C@nblJ_RF z-8>&zhChP-ri3nwiV^EG^wEHdUvn*#skpF>dTXrzQqG6RFeZ!N8^zw1=1H>@(i41N ztP%A!X6T(VP5YbFk>xNXbMZZ-7E!RUxeVX+wd}OEs-AHMUjXz`yO%t2J!Fd?T{zQc zgwni@eIspOAt_<=rt?W2_iqhIpPKt%Kh~MrW}ofV6sljEE-h}kVC!W=)328}X{aet z3~dMJ&=+lV^;8FJ4Bg>xPpevl@BPr;8j%~6(nMHQ{qj|jJxu*o^JT<@{TfsLj6G_2 zdpX9vW=DU*6QppRHtm*5;x~7-jp%~=l&26II4<1BjA0gjmxF~S%R*cf@?m0`@$x~x zoafHfBVVumk)5|A6}b(zBp{7jGnrB%_I_o_GVl4J1?i3&skNV3)Wox9ZVkNd%8xCg zvw5EXeLtN2mdPM|dl%kwRD9{K$w5JBH{NPWzHjn~@YV=!<}I#vP0t>cf;|vD^U^Fp z3~>t7`gS5_7Tk+R;;M75LaWo0E3JTP9Qle~OCksvo_|rhJk8g!9qYgKwtBn!Xm@2X zWxRE72B0X{{a1N~h}#&LNwnfBH0KJNTMv(TmMSo>7`gz?X%s#PtG-MLuIKh(Cq(G} zhz&_wshuZ_Ip=pom@CC|Mwz-L9pF>^+lR3SN>2~R&V>S?Wu))b=FZrLdHzfb4l>yL z>LgTJZ3D|~7a99wgG9#{jB~l0AB%la%lbUQX@8{^ zIA6FtziP-WQN1o|#Ez!t8U>?ggnEq=>c9&zuibp^&>LZ0HG#(-+%wtymS=J!q{Vni z90b}4yCiidu|KS=O8TlYHHKecK6Zva+vCyW@I3Wn{`J-6!;0W+<3u=G2rAjfCRrm2 zP5*S(Eyn#XN(+M%Im!rQX-^645qlXH7)FCbmDDO9l7%RPiyC~ z`}MaS+s9h`IJ^;_J?Avpmts=JYECzNnxX(wCdzF?hWv)5gNW+wNOsKG@sBDd+Gb1d z+^6LOok*YY`f`;T+q?*DLl(R)#*)HqAW10f9@3l+ILO4u zwN(=e_u99l9ZAl!txV3{*s+b&4Y{tQ9qJ=Civ83mdYhWd^|VquvRAWhhi}X4wVYEo zD}*Yl4`%~Z2i_-0(cB;KG+U7!^wzgdSxu!m`rvNMs~6IOqbAZQw_@vImH$(B6`$d0 zR&}v^u3&Ls-Hx39vVN|=zN&utq@-We*1Y`mzyOQnLkdu496t2>=3bsTOb%sqad5OoDQ|}q$_fFo0n)G1OfM2%rbFmFJ zmWo@tW?jyX0$pn*CpL|bLF%-ky@Rl%ew(Sk&;g{N>}0VLZ38P&YChhWp*ZhH4u|fA zO_n-fYfAdVgH`XMohm;bs>a?4voH7+MvH95%s%c%hh7qa{Z;$hdsuiz!R|&g+WV@E z-^5d?7N;3Jy)TUp(RwICXh(6?0s0Wabl3BtFPE7RhQ}P@bQrT~-grAQ@2mU= z=ts2mMr8sSGW~=0P|Z!rqubvf0v7Wzm`{D&Z~wBmZ1u&|i~j9<^3%rjPvyMe4%7qG z*;y<5%7Yg-dUx>Jo#Ti7TQwAUvyL&n>_fVhlvaNf9Qb0sFpTVcg1Ho~12I&glr~L9 zH?dofo)`9qW^cmiSbXB7UC^;oG1+v2`2+1yJs(LyCkAv9TSNquD518XXRz`bezgdGMp|wZ~Qtmn)OY6X=;>t|c@T z_F*3{B8nBC$I2ejGi`n%e{?%JLM_v}pyHeh!Pa86k@0>nUb$)Dqmg$mjTauw zRH1SgfdX9D z>O#xJpwZVJC3G5BsY@VSQ*Kp0yw4ywK%KK79NARUf;W}m@>*8E&_Wf{=*&@8b| zDS6PWq3W*#cBDifiKyv&@DXS}AbwuzZJS++d|~1#d`8jl53ilB@yFT~wv;;fp0g;2 z$_l3z(e)w!{W_jWidw)S*Nsn)8}%C1F%oskzKdToN=a8Y^FeO^7xld9$bDg?qIaox zUt0g8nMKY(I-6EnwM@@`I_p|RdZmH(3wkf5RHlGj;oaGimv%;S!Ix$bf)#JuK5?=Y?X+zdm#lH)^cw8 z=E?TQDGmCTelETS-Kq|X^dm<7C%u)NT&nLag^UCjC5$;|lj}y`9pNw z?5#(cd$xd?B;C-RbG5MUiYe*AOR*19)5Q#`%wN4pVt%}pwxO1zX5qKH+sD;Jn%BeC z$2HIUNf@Q*EgT(~sOmN(<=onf>iE+8b{_+G@qQr*g!W<6lY}QgCQ-yH<61mkF&wF|7d(x4tU10)}cnz8p)W9@~lNpFNgT1>`n{6qqOwFTA zT>H(<3mB(iq{!TSN2ay)ZX%c~x;d%IwS=|QB7iMw>kWVs=*#0QTo2UGX7Ej>KJlZ!+RyoNneZoHqcS)yqT$@2yBw`&^DXe+c1>T z)lq7&zh-9ef(e&B3pQ$_dr*Lz5usa0XS129{I99j7x!^1pa|N|!Il9e_oU`s#R@+f zyRh(87(4+Zh|kETyups-dP^?ty}ejn=kC4poZ0!k+`BwyO7UOoYVB$~aMs*)>j5qi z^A*%|VHbUPNkrejI4Kg)`s0~EgIa0bK`BPNh*(XIt>itg6kR%ab#^pj`=Z+0R@n@2 z6J#nCVldygL$?59lJb0)Uo*ul^}e{cg$_K9KtIeE?)wL;PdQ%itM(Ahu#1IY^lS#J z;b+$@mECNxuf{H5EX=G4SrmM~Tn6-`Sdx;sU>gH~a%du8I!d&+?TgF&3ASEOa`i1b zf$Qumgz5xH%+Idi1x-rvM+9-_vAA}wugz+u9qUr)x}=?8s+IkVHQcay+mH`no-Mae z7Q<83)ZHkiVt(MlRyL!Vd?zdPPM6%H>p=Y@H9dO4M$sEE@DL<+lB_r>v43D~+vKe; zy1@C>R6<^AmCo53nR2rV=Xo*_J>L}U5Z*<%)ht4%a&4E23IF)q{=&PskdX_(%{ybx zK3!M}jt$V#uW8uHuqD{yy%nI)R%0~g5p8JUL`SU|*dkh}>nzfS@c4M39cCJ`7 zFmyTEPHw@C9w#?c~VkwR8?B$8*7Mv0!!=UB7xO(R#VQ z7VBA#%t}GlN$Vb#e>fZy?%;4w_@|OzAN;iGAk%GK(3sTYL~E&HxnTM? z8LEYfYN)vSKA%0hJ`G$=7uoA1TEpK_ilW-S^Un8xiQNEw^{Z_z=t47#%m<1x>MWHt zH^p0i$176M)YlJ_GwmNeN28*FAlz&eRts3b+~zkmj|U3-?9v#EJ>q?KI<9 zf9DjGph#WJA55ZBW4;+*+#h9q{40%l3n*y1hC!S_RKvn_6qL+YTd#P8Ma{*>{=-Ra zs$de9R(tn)iC{!5SI#-{Z#JD>M`ugFcb*X1_VT7Ey6_27OnB4rAgp%7QqkUMIt(pU zTl$?wN4kg(bOlSy`Yk&VT#vFo*L{_+5q;|X0;o9KSzI>if&_sK53H6WYQ7<>*_Lun zjx(vMbJnsIcX>f-yi^_Uf@&-MvG(>dO8MK0zBK`B;(0G*)>~q_T_we;>gH(IGOt^P9u?^XeWwE`(-dMJm7>BZRlcb>4uv^w~7c~$Zg0FWCOx`CB z-_9(28uI4SZGMr|(i66*78FGnoO^T{r0+U4r!S)1)t69o3!0wp->fme+N=}yL29{l zuoE1Pf&lWNdUh4&q5$FK$k^5-?;>pajcCnCfH7owsab&owxOPXd@ra5cq21Dkh=?L z;nnLORe_2X_uza#zxX|MtNhsW+-1tmAJ|T+gU=(HD=n8T9Nt~C&{w@M>r1Neja9Z( zJ*(Sr-q)g20QyG+Gf+m`*mbQHP$cQMP0)eK!fkp#*`B+X+DD$p3{M#<2!tV*Q0l|j zTH_J%zyCiQ&mHj@l0jT8HND&!%y;U#bnE$1a2X`iG6UzBT%f4DsTA%@o zOi(8Sc{*>#502%hJn<37j`t0)aQ8^T!7b)1WXp^W>O3``mCH)N(;sONhOMLlL1 zi#O>g%L5Ghk8iV2$OC+|>(;;dEQs(Xml`E9epCU+S3@67gtdiQh&*&9_>H3Jj`L5x zHfpl8H7pw&H7KJC^K+a#GtK_MjT@v}_ zPQb#G=NdP*DskERYFGhZ1Gx401h(?-_JCWSosgUk@5^BAO7F9hvJ`1-S@C&08L~Pi zXPMG`Fjs7RH@&Fpx_W!RXq&>C?--sqHV>B1#F^GM`!wPILG9 zCf0vGLKlCw4r+mSL7LLb&AtkL$5)T}RZD^-HSVeB!~1m(Z2pmdk>GK)XHmYMRW_^W zro^}{U?ph<+l4})bW0l@SjSHdUOOYMV-(0I*ZqzIyi=^l_#*IG_E^l$Sf6?eN*LMj z++n4r%=M|~BeQT#=&=&DeMh7gLHltuz%uJ^lD_eZGUP{FyXdwDC#YF;#-8Hi({Kbr+m1dyirVJ?OzTnl-}4er&t zkU4)JK$-Pb)K?4kx>_Eriv%Q4FZ?On0Jm@}bYC3gsz$O9@Q-mBD#@&uU4ikQe5XFL z-X82YZK+Xs;=Td!UbZ5h7&mC;%`jq@#czsy0&WFfgxhQtJxgG;`yEw5k!M~M0p`Nf zKc!4g59CsD?c|mw0Iop96@fLNMs46+{)|3%<^&x84t3>Y>07)Y_Z#>GsXpQ2M;8P` zB?m+(E&!t~PK!!@|6P56uBZx`qx+B$vSZku4^nsf(F{4uv1I_r{Z9EIM{vg83*eNKi1}l zr^Zn7o23K*1#eB#9KUvfb1`n)Wnx*rt%`lGWqnQMC~|gLs%+P1n6{@aX~JcthGVCI z`kP^yw%^{Y6MI@)mE!?aNTBvb(iCciZ1J?opvAI#;K%n>#>>8V+Pw}HU_{Rt%ufd1 zl7-v%dtmZ)TUVyw=hOY}PFjiMWDQEGPYEgt$e*%L%I_17g=Eq0w51@bc<|-i8KxGj zL0hKqEm=|p4ddP9gXvz)Ddgy|#e9WkD?hvMb@pl}?~s8_hJ0B3F2rPwRD)N~-V@Ib zknJDMZtPK-T(YmZUJo42MKXTzxkEJKa8Gmn9ZPAO{_L1g#KGPLpjlRO>g?9YX3Dy^ z@TQM$TtVgNIW>Pjr8vy&(;5zc&uxy1)e(E=iBrPfigUu6j?|@l#-7XXdZxP4a_#Yz z!(9Z8$d$Sb(m_Ox+iQ|Jqa)uux8ZJIr7_q#woC%%IDmq?UrvSczhT_1QUY?SG5&l`tm?ri#c_zwg@v1zB7Tg>wB6p{u!F2u=e z*&6J`SFeBNULU!fG996-Ev^Uuj!;f%nxDh|T3>O2XcyX?%Sz1~2$`_P4;BfcYVY&xT(^0b{{Mf>xW_?io2v+3KWZYB7Sn<=yAYUT*vzkKB@;O~Z-aLK z&Kc02IeE&@Z0}w*?UI_o3zmiJhis?M%C5p_b@18V(~|Xlh~gz{x5;)*K!J@B$59zSACu4dPzt)6$cMp{@WG^;TE4=aYQ{I-PuO_i`hvm zX+Pk;5uixT313>y9jVnoHQwDh%$R7pfNAiKc+Qp_MSYi)JmCeq<;RxSzy}^_r;hF= zvsbSLC-+ZoK0!Oyw^OG?efi$Vos10Zzbw47e?5uguMorq+{HSv>#M5hgz|52#Zp~t z`Y{10y|23dmmFqkzThj9auj2-XZiBSH=e-0TZWjTUt|_V&iDp0%4V%!nbmx>!mD?) zi4}DHelP99&y}N}YC9o^!nGc0_pG&xWlbXY@?>z0!dVxYNE(wKE)jlqR1`HONgSTr z+Y6!pwh^56d=xgcQo+~;rH|9u+hKy#?c!>dtH!v4*sH61tL`OF6EK}D>%Ih!0kVNq z`-rxy=Zu6$7rO;DZu(mc4AO7EkEO^f_RCTld$HbeyF0EFF1eTS>m6!(fjK+gJMF&T zX3+@ipyv2rmWta^1n#3}qmW|e=yDMqC8TD_cHn~>$Pw>f%llJmX1nX8s=EfV@w*(? z4!b0}CeN6R_dbD*Snl2QNc-WtBxg^6wn7^;c{;MAUktBCOsH8*mcux zqq#ihyT>sfUY&)~Eak-Zk~VK9P0fz=P~y{sz@?(G#%i7nD_wbQQ_NPC;mSz_8&I_|MyZKD3w~yt0+YvlY%hS|LNv{ z9R9uz{`g+C;p=;Pa^Ux=l=d@!aTZ`@v{5TDy)y_;VPyjHP7v~Z=ZNXaeG5<%T&svg zLUoV(m1tx+rQ?D8vF_?U7%YcYr32_s@nARpOr;s zc{DK%4ZHQEQtWb*x+Dqc(`jpIOn=8e5=~Clc5tph#zpafh5a{oB5p}Z6VufV82Mv4 zOK0Od$UnOU(o>B(!MTDNN{!)Zd_WEy-SG7SdOl|^{S+vGMhZ+Q>bT3xD%#covJ}dp z_%l!aCY6c=Qf;8MqwnN~^8e6+hj)vsZ#9PT{>CqQsGd`$m|H5Zx*8ymfcyoS-l~~A z+q(AumT!hiVE}SwU@3&kNU;LD7?yo}fVkdhaNGR*=chpF0e^paOuX*PH^Dnq5?=bI zpIZ~6l1=~QGH8*thbY$P5lP%3+grGgPVZ@w?#2UHH0rwGc9DYFS7~9Ec+YxibmFm?mA)-v+&Ua*fzLU{J|>Y$iLfdpC$R39%UhFv{pD zB^@Hb3DR)lIB9wz7DvY|G(S!=2LA6h2>l=q^1{s#*)v{|eSM*129F#Sq>$fJ85I6F z%Oy2eDa?Yc&?1+^r1~42O?sGLH*Vq+wL|Hs zC8n15KC{b3vvOsV>#f`EMw_mC_>33qQA*hT$EcaEh*rfh@Ab=0i|Ru+b-z25FUP7) zf2lHwBs8|{$XvZs$;ZkLy25C5hKTd(6Vs*p(bND6jftpVaB&~G)@5vnw%!*lI*P%z z2MA`zniN}Lf9=dsukWeAcfYdf20~oFY`?cyJU3$ZEBm?qXG)!kC*CveDER@y!o(*! zh0E$9t7i6wODtaFExhO2pN+Y=-&d5aU6zyD{dVP62^n??U(1>q7FM^+E3#RjOSn;@ zA?sJcTKWh}qpv*yc*KeyO2lfq6%6Df#~wF9AY-ACh652-&u9KP<1X1V!b-VT;<5)E zc!}nVdy8eKR6gA9jO;73kKJU>=X;)Q(*t+*oRZzCyu1=qKWowI<6`)At79BhCoInJ zb>I|ey%k7auJT7AZHCSQwUg}7>l6S)p9B|ZtgVPDHB7ief)Jar6%HJyjm?Oevplus@axaF(IQc zKCe+<;FK2h!k_QXa2W5DxI-h&6|iGHxGo}KkMdEI0!#}i=sekN68C(aR~ru}_g8!% ziJTm{&V|epYt$mHEgSW|XHBA?8P-B3fDq(4@td0^OF@9F3mZf7?^5=+n8K;fVcVZI zCE2HPzVOYK(errfS0|=yM6E2icp%SSZhVf)clf!dPYqdKk@p{+H&S1pMyJBg=^%H` zFT~9VMzlU#h>>$y@Bxz3FWVMUo3|GT)`|?E$lF4vfo_pk`LJO*C8GR}$|I2?`bzyO zo*s|C%4a0LP4$MKt>vlqoYJvA{An_XQ0F+8{gNf4m0HO=HLkH?_L1G40o%gR;Eb`< zyiAlSy{8PuVt<1^yclIVz2;Au9p?)I6}279&$_3nRmvPahewX-5^Lb~ZsOVC#i@;V zI_P^~y9qy%09nenKN}!RV@u57**!cWsqebBUljIJ_#Kb^p_rSzUT)g7An@>_Ze3w6 zcN%5Dx4@+bA8KJ_j|zG^BB;Lb0qNfQ!x-D{SLJ7SFyf3hb*rG+>o#F3T61>vR@apg zq=>I81p2$^kG&EMhf2N!h@1rU^9cvPMNu$j_Tt9lobOle)b6MZIt~Qg)4Qd7wx3-x z2!4}BR``y_{IJ9(@7%=N?l3ORTb0~f{_7&U`=HA?c}}t=S)}Yv$`9^m{1~=;zU4=w z5!0Vk)FM{u7OkZ=FN(6lsdNmd3#&}dEI(NV*6vYr{u0g-wnhS)dUdRLR9k|xk$@3_ z0z81EB^Dx1!4Cp`xqmF4Kk=kC;;St4h~x1@&+W`{f);U?|M9ys^BQB(ar>rI;QvvB zc(mgyVb42_1%nv#ktCO`+UrxSrW2V@i8I`p$=_~nW)%jtJvk0d3KCJs_9$e)rqeO+ zRzE)Y70F?rH}#{5NDwl)1KciWGNNf-4K0D5AV#^B=^i>M1LNgwL>5<&TWqD6F(Y$r>MaqE~o z)+;w5Pq`sVC-j5G^{0T8$5$`M{J!{v$usG-C$2v7vN?Jv5*g5ZB4w%U+A4piZ29*- zU)Dr9%}A%Kou+-;%c3-Q1A;4##eapR73_OQhm^U6XjWuX$(64%CExqBN8f*`U~#JY zhF6^A(-{xa9QKolY<@~Vccm4q@CdMYo{WHGmXA&;M{Q%Tim#H8B57HrhFL_n)NcHH z6AHf{Sx+dcJa}{Z3`}CKRmZWD{Au!eCQZ=R1#bFWV6=uu?5mc%KSwoFB`x*ncqvC&ht2Jd=6&um zzWnzoQAeq&i?e&D0EGGEB<26y@TRz?JeOCL%^z+8Gi&{!ru3TrL2#XJb|57qx_U}a z6!M=N{h@s|n>?xSLwt)ae;{0jK&zuKY=Ela!*ztNygMZ^ak%)8m zul^n{iWLvDWJA1f1+M|>J_QtIfI7x^Qft3UIHBk?{}s>Qv|E|jGIz<;8vKLBHxn4M z?ukZVb#l+@ydR$a#D1W)?Ty>1=%P32z4D)*Orz71!f~p0J^vT`X}&->A)$pLGwN8X zN@EEFiN`zqlM^!`xnDac^Wa{A{jN-6i_TJWGmq0b_4?C1eH55~^Do8oy|oze@PAkG z&*moa$LBy_*DG0BxCuF*ztAHicO~pZ71q0}zlkM!`jl|;HvtA6J$sy9KNJyuaLlMP zI%{HbdcJV--jiC{-!d(baB;*f2B6S_WjpF81Df(`A;F*L^u2^4UX|N!>CdTzxjuE zAab$qTF3x^?8=yP0V+hSNUmJpXy`jWDqt9Q0^v-{E&=~JE^z8K0l+9A3u3Yx={{4E zMU*}L-%a)pfDW5uVgKFNaIAFNsvqm}ze&hs5Yl*Njl_EDf5PJD>Zt%jBs!=6K#l4D z?s)$lk^T>x<$oiUe_yx%$OoLjiSzjnj7L%r&GP^1=@J?8!;F%dE$fF`Ph4kR5d7Z1 z>pIQ47v{(?ivM}<*`ffy%&q15^<>HWz za(JFFVECJodc69#{&LS(SpKQr>FfsA-N3yKb4`3VslS2MY*nVp@qwoF5n-nNA{E*I z6rg-mb^Y#Al?Co+>k|^|>ED6cXz}mf7et+yEf~{~499)^vDw+5n_#$_=OZv>&0HAB3g+GY46?4J3J& zPMpLnc@JXoMeqeH71GmuEVqifj_$f14z>Q<$whs|4ch0k$3P@eUwv_WKekGR9FaejFS(sy+pL-yn^rVT=I4+ zSQbc=<|mFr&kyT_?-S!2SK=MQsTdq%frPpGgGkFc1;X#qhOJ=nEBqw1)5oJBSvTBr zX%dPJ$c6RzPf2&bdHyrs01!`6}hvG4JdWLKn4!g=fUBB<2A9l@giiYOO) z6A4MNYA;m1990j%b5au4A5i~5zCYgrFl${U@gBrg!CsUy1rhYq>Dbh+eq;Lg9)>0) z5oE+z%s5-8)`*Ct69MwX;mVr--YA>TsxIiFFel8gBAd;rS zGmqx5jo1#41-WH+i@SB_y7b7fPwL%xnq`-IL#=j1+OSrxf;OjWDQ0Mj`hunRY^tYR z^GzG*i;vyhDH)R*5UG=OmTS%^&|RoR7a(TDX>%xs_2<9G%(Syx_mbIRjr7&gG|mLh^RR)_}PJB71~tKCz#L1}3-bgXgr zpn!MA$Vbmk=elU5c)!aQ*zQ(#(@31nCHCq9{e2ueMi+Tc2i&{lyrUeoQOv;j;2MnM za$m*c)U=X#5&x10iN%}-G$7g=*300PWU(G?!#=s=$HfH|!iKH=y)yV-``jfrn~96BE#MryL4OkLr`MPR;HYkg>L$ z`bjQ^dmDq77&S8flqDo12t5r76SJSNcB9s{*|+TeplClZf}(9?aJ@@KWuB&gnAuiH z=DTl`S}Bw;z?U9{Pek^~m}2z$t|SXHpJIbK>yX36Hy zHA+NRa{++92S0>+D{#2=WqU7-i1p~Q^lf($-(~~sV=1TfluKyR#MmtjA4&APwN>ko zg!K*NXF8nel1-142Koc{c z#K}Avkvg#ux#DC6xp=hZQ2ea5_>4H!{Zqi?=X6xo%9Qj$dlCLuXpiX*JfZszWyr_3 z!Rrarr`PKRd~wYHaW}DA3e3dGv5@=x;G9dH{s*UyH;!i%JD!{<6AQ7G^jH1nJ5kg+ zd0!IDlcuk6g}oEUZGXHpGubg+F)!$BEcclc`uz;1o@BCc!DwdW4~riw46`zMEM>J$ zei*?O5Zn`lPWk7sjnnO|zz+|ACr{@F@DX7M{!<;LgN>DCyFKTs&Am3IEC%D|K3Kd2 z7!92E3kC4p?sD1qY}J;@9)57PV?ft2_Oj$S+-t;V%t&)@NOF2nZQx>A)nuh1=VG24 z=YG!(fCtylarH?qA23#I6{JM9*t(6b9P+aJe~@m-g5R z*%Y{eu}6*X@Eg+yzB0W25dWhdZngc&`SIx^WR1?SLo-BauhW_H^;z2#t~*sI zWwwavkJBQXFDX+S!&7T(Q*mm|Af;~UdC`U{!Pwt# z@>@qoY8^h$z4cc(blz>RWIPf(=7r54^e`J->=*GFldydZ{5YY^wS?V?kNDner41);as|qfvpWkWY4Z@Efj6bY z%#2-RS5_o}zd~5r`ougI5ZxV0cnSjegEE>BQu^0C?;y-l^Fp56gmq4go=8XpoG;_e z&vvU=NWGUA<&5LL{hpS&@s8FpgJWP%L|qDKQbY`&r)B%%4+0yAv+#|DB^l{n*^S`*7(|MI&svaOdBN(HBRP_3KAx^>U zyafXo;{ydAgxw9{(%y})2=^KjD7aW0Of}G}c4I5qE6nS?=dXfy!J+jBE&dF-Ya4Nr zj!`5k5vXUVf{5xY2}LuQ1p{=Nj?YLqUKvfVfdupTmm;-vw3N15tJ5t~sUW&zmuTU- zV?Ttu26nC;T+}4v->3*+isTF7=^32ePdg+t<1b33dW6pok|LV-R7P;CjFe zzEB2@)bt#TSZ|xRfDUDUW39-WW3P~q3Fax0A;6ftMy@ec=JVqd4Niw>mFVB6SIa4U z3?+-xzXkA9!;nodk0-;++~l1|ME=z26C;3)U?)SkBBeHXVYyDwhPN2p1MV%oWI9Z? zuLaX@E4?3+a#1cn2CbOF7a3KWcXN0MX8!m(kGTd zo~O#(dG2SXzFAT;Z+%ZY{UIg2Ux+4BZDxZWc-+NosifS~pBg{#m!#XgD8(JTP)1Ki zC1nowr@L-((^jCa}XU(h!#mFNGl-vl9*kKQO2A}fN``hTjs_P->vJnZC_8>2Ou zT4uS8iln%bh!tKkNffaZi8RclMyc$k*-~k#Wi*Y7w;@zaK}JkOvy{d3Gp4JScc2h; zyVy)=x@nggkts=S&I?)XXZH`7;U_-t<=o!)obU4-p6>(KKQulS%qh0Ul*kEI=T(8^ zt1F7IC<#;9Q$BI>tOprbusoquFk#JwE9SgBJI=WK<%i(z?429-&QQI@TYniS${6(H zRdT$M;>Pvqc_a?eeioSo%x)azsbt+ta~G{Rc>`7vtYrmH+q5{oGE=WcgD_JYfqO2= zIC)l`9J}H2bbUim1CMx>w3L=xImPgN?bb4p`BYSAD!!D2e-*%4qwknd45u8JY6u5O zh?W;agiJ9Boq*r*mILzcD0iqN7@U&bdzdns%PE4UKy(9BnbG;mgyxh-(hiThyGypA zHB;tTNh2)KUg{;qWR!*zMZDkW$x>9{r>8a5+%e}Kx$7@G9az1l;*KB0^}K0DtBTxsR)z&GW)Lm4qnUs5P&N(&r>-(-E zxRs6K&D8-bc7D3}Ae9n|j%hwNc+*s@Y$DR0l`_S}59)NLEpBh<7pOte-&1jSW>1MMZ7(0r5&a0!U~MswQJ(r58A*PgU(wT!5Ecs+uW8v^5SNM19kk@v$U zdrgTcktr-wvHz%>qq>tA1mTa`NSwp$G{Y0m*{sDLkh5Stf*k5PE}TtW%~f0ix7-V? z;$bbHgJzRP(k4QFSgmGg9b0YZ!+_ww!oU*lN0{@m z5tAhF2pFCii~qqJ1QaN-y|F}(qQEkndPTpu;4f8h2}3FPp(Cw;q%LAW}6A%;woC`AD;<7b!)@0l7LT+0X&>xc(P7=pG) zu18usd~wc?JSGG$gXFeS3TeE zJNl*V!iBX8r(~sXF&hH?pSV#LHYSV310%HHvk?N!59kap-X{?ht6$R82Q! zaf6^0zl5OFupdN^i2ehZqsF28h1>*P8g;G6^Gw5=u5_xgfd;dmSkB_#dgNi$-*8%0 z&@_apL#gII63}mN%5w!Pj(ull-svov3Ai8_yUu<#+9ySQYY!hLbI4h_$qr^!TN_DZ+g`(Ss`q9Awy2&-me*WM@O%97%$o} z#&b84sg)amCNJMNbk&CDp(|;vvTljO>D;PO{T{T3g#Iow$<63%T-?_va#hfg! znCgv&_@S@DXVI29X3$1QaPfuFgqSOUXpTd|jFQLm>b&Ul&@v4~dGWIOL?eq2nY?QU z|5z76c4E69(r>5r*%}!^hGZN%@V;HAw=;Y6H=uV7JOcTNsg5I1Ic@$j*6Ow37!pc0 z20ppoy6c{c?n!LlfsMwvi!ZCpeq_4GPaVM?GHwB5Qa>SbIr`C|jE_Oo1_K#x*uUjO zP;p*Vc_%d0mwW{zj^-Vid;}1@W{s@2qJ)z9s|!CXaTWT7oh3FVmnDkJ0rxwTsG~V~ zHMxMV^Es*{L46XCzQ(b2m6KKftcvPzv4Sce12!txf>76e>1D(AU`BvL<<`^+8hHDe zuWzSijC9_U*cgE=$ed9BEbcRUL5qd={mR=t#A`1>QfghN3#d!D^Hwdn8K{5brtGja zjAc7yKu>A~na>425e*QkD~y0z%pi_fz{%p7b-B&d0efuiW3KGRVGy`{?3dIkTKmxP$LO7 zK6oa3r5Ez;GEPI}hLDuH=?UlK#+I9dvaCIT*aCQ)i9@JehZdW=zxaiHt77+KR4a>* z0`=M1A{d}ub~yS{jt|8mgzHOR?s^?#3iMhA7;QoUpr!V R-E4z;5P%Qzt;X$5{T=uef3N@m literal 0 HcmV?d00001 diff --git a/docs/img/logo.png b/docs/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2ede73708108dd920a9cd7527e240a3d29ac4a93 GIT binary patch literal 342075 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%0Df{hKpfE=K% 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%0D%< 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 z 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%0Dvh}c5>GdL0YioIzb$=Ag9Z|oZ^Sua%-HhXG zo*Z}4?NbCDJWDqPgv4}eg~uc6buzB^1@_Oj0P)l#QvXNNxd$@&|L>sUE$36rA;-m<^J&e_=iT4?^ZWg^ ze{JsV^?E+9>v~-J2!C?o^{-tH9)K=c+`6z}TFu^5o~fNn;+Dv<$?UF~*eS@W_(_9( zXV?4ZU(z!>v-)`B8k=(Cw{A2wP4M--zE$(@;&+wX+O6dtV$bTq)<-COv@H#!$Goy% z=NhYe_`$E7@H1Asnsk3Tf6+azd}jULijRFbFYYgU|Ev*pYJS~H543vYn!{&(=^V4q zvyF$s4`w~7q-9Q&G$Cf_Zx@duJkUhoD9#5E$mv347jz3D7ZG~QVAz?P);A=p7i4Sa zdeyw-SgfqrQK2~WrgET;7;yn@Acvm_EAlx@xfdlY*bG%WO3!*8mipla@U?!m-GTgMWA{sWk$yM(ex8+n{*YIh5?-0#o8xq15@knG@$A`D%(Dhp zC>E~~iYD76VqnU%*RXZ-Wp!YyNkw_p;ogui@%fV<$G-NILFdc9ToF|b-h@w-@s@0z zHKfK^NH;w>6<_AiC?@220$GXQ%A=K*yM`Mt5^-g(Tk~NHItwgNdiNd0y%v;i0DOfhV;m>HH_zuTUmW*JvcI|( z0pfl@=wPh^O@Sa_;#~n5!+Lk5z2ism-k1`>fm}zoPKWpGr*oGU+=BW;Q>l{SVY0W; z)l7Ap-SYR^w`8+?(@cB-3ffqp8~W&!rT)Vg@Tl+@YeH0&LMNyxF;v6S(2wZmYCfp3^!^NiR`b~`W zLaG^gUZ3(bc=(txFqt17F!uRHf)Lc$HFECf-S-W65`84oJj(u>@+`u`0SeFNL&i_$ zvM;26SC4`7N%%r}>nIf1J{dV7RcMa-yZVZ@AhRuDU6Xq3cGf$YncSUjZ-Lu+kbU!W ze7r`)Z-Z@hm_X48pEP>#j7z#2QaxvN4@@ncuRPs)03{7tF&otN6+VqR?okiv5G3(@;k^G!m!)4u<@3HY4506~J9_;zJW@=O7lV&q281+^Z;*RM5i*nJ5~&i%mnWL0~s>U;j19q>M`OzR&Q zTM61E4wd*awX*&&tPTE6vpL3qbNB?Yx4ZFnhk4VhYs|YB#t;3SC$Yh>>F%gwVzpW2 zib1r@%DOFm%QOixmjzZrev;iO))xp^709Pw--Nf(CzFC9C{A45I*Hn`PY=si9K1p- z^{N}}DXwyAaNDXesZ?&P(vHeDdfQ7?TB!ZYn9hdQ*5-QBzpJkcZKE&XgAJ|Aqw)fa z(p-o5Z2hSZoxH)_JBAx^YOgN5y6}Z55x$Dryhd8%_N*{{?3c43)uT$EB%kOY)XoQo z2Li{>e6bi?U_9wUc%M3bs`%6e<`wJxc6u9g7ELoTf8}2SU#Ah&-{ihTjs>!A+u!3L3You6dY z=FW+N7R@lvZ0Sk; z?OyFemxqpcq(hEcvZu2pN!+n(#xHdf`#k=OX``97r-wjsbpjt;i`$v+=iUy|HQ$T)oUem6suv7Lcl~&n z`ylOmHh0s^DcCF|S{kw-CIs%HVG?}L-S72uA$dFdaU>xzzG9LloIE}`J6V=SU9iI$ z%8yyh*H7C_4>cl_hK5qIB$2#f>_sX}t+1l9Y*#wmIKr#Ov*j=a30lsj;usAj+0SP{ zoDq0eliCLOEuAN=Hb7;{Ds3>p4bz471R+P3*tS*u|DqioxEyDx$M zwvuyeFbF(vBr7n5z)PtDi(w$^Jg?s_(#jrr^pfg-gM3C#vq{ApzG1n3^lFitrG$(hcn98#mzsnNcbM5p)GEl z^7>xs)b{wGZl88~*FI4cam(|n{HJrsbL8#v^9)&?5fMB> z!R8_jV(EA!TIMFZV?}29`bv=9xNhrkQ8p&6{-(lBc2h-Oe!)B7xIUPqo@AoXmH~9~ z>&>H6kWTYkO)gmviwnD8-X~RsJ;(RsyisklII|3Yrf`NXIG-k~3r~i{b^OA`0~0gw z1C@Mo1S-}|-*+WHiQU=nQD+3jdDa+^@rC!+vKT&=MCffVs43k&FeL_rjrFS@u0&i@ zpDr9wPdp}xf(nq8e9_#Lc}sA0F0N#6cr;gd50rsd96mQy*DM;D*TYVLYp!L~Dhlk(eO1^}n1--#d{N-WT%{;XwZdRVchj@ZqL~em* ziZ;|=h29$Z4a?0BoF?(aXeulVi-1)cZiC>5hv1qZMaBt8XHiC<#W?t$^S2C|MXV|6 z@-TZqp(9#1_`P%hD^$xwVxqi2XiOo~*Bww=MgrsTr|aDD%$DK}e^}4@m33WDbwB=m z{#E7M(aO=jgm))99=k?sB*vMP_jvs=C=wlAC_U-e6-KKvqpEk;xb4$%1#3qD&Rl=6vVeX-2Y}A~-lT z-C|u$dG#`9M9FE%X=JmDXV%ntLYVKiqO0((_QOHsARcE^w_q)69y0rE!hv#c#urw! zjlcF((S^o{va5_7-q5@a|qbAfePBV^Q7%)9%-Sn2J#7@5U0QGYJArn`pUnznU zmrJQCHWe|~YEn<^s5Eo>MY8Cl98-7;e}q#24fy5A?B@A<@Lv#^`evf+XmJsC*fg0; zLdy*PaQnj&SKFYVREiILahM>cEzicJ)_cmAvb&c&1$Q~{7E(U_E${&+6{B7_N?&ec zGC3<`v10wg(4t;nLCig`1gCj$j*ZCA!svsv-AI?dg3Fq@d9p_znp$*=D9JAljRlvN zLw(B4kavMTl;D`b4Tb&MGo|>)6~rNGE1{38=q#bF^N=ohzK@4mM!L^&UT#w~uHT_a$7T>G?ST&OE{h{Q)j5)YcTM^>4CEh-87=14e}zxv05{ z0D&U1z`#(e>Exy9e!&{lBTc_?N8i(z1v>_dYe~o9s#N5AwsPkPam)FV3sRBwx?}@m>BSSL`82qU8_vlhtJn0yq5@RZH zqDFj@S-hoSWQpV!(|efK%Kk4##2Hi2in|4BKm=X4E&nZ$IMFEzwQ_Mod5>*)NJ;6u z`?}CmryAh$RLAbf0UPb4CHVm)M@QlHB|FnDlUZ_Ni{Wm~+QHFo_xCBsMK1QSCiBge zDX*B`7L|_GkpJETN7UXb4p-+BW{z?q*10x-?N@y`U9l=97TZC5{)Kb@JW<7T9~PXa zac_Dl>z$qO*QA@e!w|r*-sS>RCP^guu_b6H)<-jV^cuqlH&GbAFA1)Z9Boz3)$Bg$ zZ4Z%~RGdrwb8+x@SL4VU6TMIimx^0WtCCOBFP~L7!w5*(jdY-Nir_lS+g19DMjXLy+BLucYf8QWhr)ZO zaVZ3u7Wq6#7@Ic24PLy&FaVBJ4-o=Wh)mN+2gO`Vl>umMsRGwciY$2>l3%m_D)`=< z;T`#6mkr}wIAdI~)=}YD0b#(%VG{ll^dx(o9`^zc9UNOadIcY0eJC089D?qhtS+8D zMwbk@eA`%)k@$9G7x&cVXQ>X%Ur=voo9Glk65|!KqO;&DLY}kijM3@2D}z4ioSt#(!v38lLkNv=SD`?4Y)sxKWmFhAa$pk6BksDEY{_CL$;> z2xZ{_m)ASIB@#myeQ(ok5ZsY|39nqzrqX`-Q{0q5Zsdl?W76EYl?I_ zmp*oKOua1>WgLys{l1Qx-x%AY?l>{%wB_8o%#T4)uk2lfP4x#{`lzY)9KX0*hTaj`9xk zuDdf9hp#UI$CuyTtB7%=rT#eC4z2#K|02kv66G{m@nu^rA+@?<{^RmAz@)j9-7k7K zeqQzF#}T8vD3>QMjEI=EZ~@C1XF{JT1sm7oMNUM89x-T9R)0UkZ_WC~7IoQ_(RBye z+^U$8kv-X?-3Hv9;bxP*--_hKyfg|A#YEmzud0v?aCgQvc*@*~ixo%(F7-6G@w@4r zd9Wn*2E@OUZvCc}$gTfRVJ+L9w8@nIheYV4NBYk9R&g`F8Mxh>N-6y7tB-<5-#q(~ z`P=Z9gi-;0xuRxF9fhOOK%Q=y?x+y>)%wSKLascsv7?_eGX;Exx|>9F7Iuo>D=NFJ z8hqy+Q`{KPQSNqlS}H-D&Uf(7;T6p<;Rao{9OSIJM1?PNVq_B9maWF&-WzZO@Ph}# zMEfaKsJXdTd*5To3a+D{bJ(z>+i#nbYKvUYJ8eC4-dWc{J5Uv|qb~L>+_OXN!9mC=2xzBsMl@Wx~D(8wR2 zTY%rmWAn;OPclx<4<1dk=wavSIPl;M*h|;=FNb6W^50F;vffRY=1IUBC#Qg>pONOp zUR7i9eJOq-#EIwS7#dnweHVk4J2A2#acSx9G1TCuY2Y=oAUIJ~Bf<7BP0?N`ZE!B# zO4W7Ti{!*2))@vcX$p2I}}WnNOwu%k2A1 z?@CA6#CVB&RS`jk=4^zmSFWTnA42$%6FDR4fk|k$p&S2%f-6N!Kh?Z{dXzN};ii!i zt=-L#AaOAiZCm6{7;6rXs$BhF@{97)YR)5N9m+Yb&3AG-cie0JOr$f0)Qs~_S`ERy zQ#d#&>@8?X$3MV+@afy->48KbnUYTpOOY|ew(Y=85DJ!-g)@ck11i|wS76|(mSik; zoHqvAfdCA9`Iv&TDa0GRm^gYOU(=snlBlfKmD__>(o8H3X$PQMk$3=su4q|O64 za9Jwl%|dhYMFs|rGq%bh8~rNfvwYco0jWTdOrnpHQE39 zU+f@S{>@`bu5OBDxPj+_CBPnv9@D*k>CC7fP4@Lua{MakdeaLs!V$s~CTTI6#`AygY zJqdhDq#{`fXckde{-(~Hxg@=S-S!T6rfRtTeE$_W0+_e}{9*ayZ`*nQ7gPG5__+|m zpPxrMVd-ach|kbX+Ei=Mv2zhTJ9s1GQi3Gq_%k7=aT?m9!oEn9g^3LQi3{a#+QFg- z3OLa=4~g!UQ3jZ)y;)epRT)_sE>+M+0NAB_@LLxt*UAX81Ig3EQ356mzUT}SEd8pK zTOQ%%AKHe#qOHFc=GK0!7abcXEngqZK4dF zS&XL&u2;@%qzw9;PEk+txO=DEUXc{OkWJBTnzUG14&|K5Iwnnov2(0?cs#^o?zMo6 zZ{xOI2JdUvwRc*DM;nKO@TztvX2z5AKWo2S8x1h=wM500)w|tm+Q827bLxJ(bVk4S z&~C>)%J6s8_QK?qQR1a-uhaWBZBw!|be@PX^65XgPh211d^X!^K}FIl4c9a3G+DG_ z6Tv1^=95e#%f>?ww%V?bWWMVR5_qbrc|UoXPnRAbb7H92tDI5%*IIVk!G$qP*2;xf z7U5+z^=-;;@^I%?t#AB8agFcS`sY)nHcmc~M?7}$sKSxG8@>e_r(AxK^e5N#(Qj={ zGqA)g;bmj>HA%ewG$r0_5p5kQXmNBdPM=A}VB;HD{oqsZ-Y-QIEDXw-eVyTG!XGSLsaJtcp2_W;(LXg|xQwc^u| zjL(1}js+N4byoL98Y@m??0{@}Id1T7K6Usemb1=%1kT&@!KEbq2AHpU)p^dS0!IOa zOsIMbzfp{*noe4bnxuykeou9rpv|6n6qnSWUL7voN|$}5gqgHb=v+Lk4*ScNtP1%D z62zDfs_GsNzdq#urz0q9sE5pJEfu+DRwBzx=R+}h(7Tv2z}qSjmnw2qw4K=5uD+s$ z)iYxap3#v9ED{XZt*L}I$`BC7(ah2#s($IC=&%Q7+=De;Jh6X*^}fpXjkrw0;Jl?v z(ra)O(w`)EprO%d0K}O)k9`8W@FLmfqwl(AJA>c2CL$2pViL1_-x24q@QH+oiKQWq zBNes)%n_0H`tWqz!A2pQ!ORb=0R2NkQ*qFwO$)LC&92%*NkcF&ik| zjg`r#)qf`@RvH<3?$raiM~d-6@{D7KEv|XhZSoXK7J0WbJcCGY^mu19=KgE1-tgI) z6>i8Qex2GXZ$r1|xO^K%_1Cd_-|9u4EZ?R1IZ{dA+TdZi#ohq&CgV0cy@&4C#l{(; z>=U;ly<*^<=Iw)X`>wz+#;`}a7I$Ak_P|QD#QQKCh)m{|S{uw@42e^qaEEh^?oCsh zba1_%$#A>3%be0>6bgqjHiag=Tj&nLF*wR@J1EI)u6RR6qDXIFbmHw{7#5&CZ*> z@0L)HFHTY+R>@FTxWKJpUnh(OUUOe$m_065^^S}%36P87p>tEdH=Lzzr~)YWI`oau znrqN>`_NgZsjtk_)@GEb)Y;Kf+eWin$~WrV@$ziBqc^KKEsEMHCir*Q0dD%1dr2#^ zo1Nnd-#c^N{UKT=z`abx)}h1a3di43(7L@_&#FEB%BXI(u_}5nO8HKtALG2^Upxna#Td#}( z7I8|b&`zh4k>P`NY*){tk^W3R2RezUuEHf}q~6c6dEbio8GQZ#6Mca)C_WH#U9u)L z+5WR}ZX_4VR^H@##_4IV=sowp5tJV8E7D8wxj2EXHPB3WZptS$IH1w5vT&px+!qMj zS{{v2rxc6KJB@xf2{~zkPu+jL+$)iJ@*E~?M|j7gJIB3C@vRVeGh)>8sf42ylc%a!*TZH?B%Z3s{h<=p~jxG98T12$G}gy+nUKu$dy z*E&;kq&g)U!+dE}f$t-HKlC-Q1Ft1TiwCnPn~5MI1pF63Vi4jT;xxT9ksW2`1blCJ z0~)k@Vq>YtHRUHxzsGX6e&ng;%M6NTeDf6d4Od55knoA`*Kps4k?cBblP9`GWzi1) za{@&n>fFKCAAd2Gas3)IR=7!HG6GCgFPj4Mg&yZwp5Bdfq}p1RV)aYrKClNP(buV~ zY0bW@?W^=dCd*F-S@aBfZ*sUE>yOAwjP)Dgo+q+GtIQ>jN(T16>h&#BtvDD=N?e{O_FS+El{nK4?uiTPJ}v%Tm>sz~>00`lf2_{Rdf}Xi>qicaO+f$s`;qa;IZm;Mww%p9|r&Li(Pee^>$2&5%t7`tvQ8OxgB@n$NJ z_rxFIOHY4yYZ!~?WDlMO;!7G8I! ztFF5Cb-R7X4^@mA$HLj9ovt+NXYq=&)Jam)IS6ojtco?z4zCz{e0t9sa@~xL;=be3 zB75lXSIX=x+q%}4R2;8jEyEX(7=@HGo>p!#+oabO6P#5vV{0l>T*P*iM4`j2$Z56= zYsI(x&wb*mQIse)_|zftx2VoVQMdqrGmJ;^KzYR-ol;I6=n&|z7`%6uS<89p`% z1v6KCzV75h;M!ODSPTU0!x(oHfd=z$BmI+_<2le5%;7B$9q*;o`kU$tL{MkN53U0! zC$dD-!Utt_&oxxgdNB_z{b>V-Kpf7{Kvp0mbDWYp%Q*0X7$)m=eHkQ)j^-qiIsGBm z?>2c#4bP)5-YaCfzLjW9Uaw{s_8XZxD?YN33s2v4$TrRT$Qx<-ZAK@e&|yu&puC|- zXj1EyY5P-#L|$45zuhr`5m&jAN;!RtpaGYWloP4*}Q`s&W7UCMiQrPMDM znTXLAV&5}dUJA~~X$9j}LJF3->lx>UY_9UW^GzIxjMwC% z6fE6EOQYZ5E+EA!?ethEOF((|D3hY6FHZi44-{D4h( zluWsPmA2V2;Y?GVlseJd8t_*rhr^h64}O>RP(p)3=<;nZneSiYR_CJpSsfLKgdoM4K<`{0fLVjHCt5u87qp@^TH{F2 zd0*sQ{m^n<_-5xnqIrfh8DBxEA~Xywa}&i*2pELLhP)+O0a-vfE|DmNhK5S_0&bjr zfB_6#xa}7lzWW)#qGmT;o$S2*C@k!yWfd`VPG;9BYvOKAPLrom76;ppKS+83_60}W zUCQ1&wDHHAQ>$OpUVMjm{rP#C8icw2g|5A&SHOu2(Ulb`Yrb(JT9jO_c`2RQlYI&M z1l`98?7Jp=kIhhYsq}A9HQa%qan;3|^nTV87pIh3kb=8$2K?Rhkq2%v$a3+Yc_aiXxtVS`F+JIG{tN zrzYH7Om(0ISCY5K^ezl0?$a4fb!)IudTDqixU@`fQ%^u^si0si@Ofnlyb|m3=qP=Y zo7~mza*!Wi)$-=pro^Gh7#}?yo*8=|YZFm2I>ODH<`&e^l%)HloY>`FT+G4y$Uke#M(XBcD_4UB&gq4~k2w zUnLkjoDvZ9{z;*XPFclO95!OGdL47wEN)-3 z=e=+2XJXPk;VKr{kL0`2_KFiZ-ilmx7-UZG$P96MRUF4#&X7H^a6TY+tM(OrHFZBR zgCvk--t;VNpd>=zTQyZ0zVAHP-2K0tCJMda4|YCvKTW-oxhGtEF`3TIr-UtM)qVc2 zABi&imYSO{Si=1#CA&^$FVN@m1s=Ks>dU#--+(pkom-H2OY}`*Mp<2`R;X67!lAmC z$kco>R-P?L=dlIz%Q@kxyfm3NJlb?3yC060p?P&yqp%&r!GH&#ioOII3)sG%YmQLt zu~fu#4)(5TKw|sijswY!B{*_Mc-{_D=NI12k_WImXBX+VV4Kuth z!S!6%PCJ8As$M#CAIE}{%WSp<5nru;t)&vd0=yd%*<>_dFQpq`HLlUR@LHjN5R<2^ z-r>9c_p?r%cUu3lyVmyv^=`u*+eKPw64GwpDGf||#Lmyh>20Bpq^Xtoba){a`}`jN zeqo_v96k=iV%WUR1|R$!wlVkYnx^XkvyyDw0l0R}SfM7|84F>F>5aX5Ko|K^NcAp- zUfEiT9abnB#kwGMC{6e_*7V{C9;CthK#c2mkdPwws+=hV} zn^%Wj%rY4Mh`Mc{>9?U1racS!_ux+^t>V{Xk#~2f4+rv1#=~ zJh$)|oCTIN;wUb}Zoyeg!^E#hyc~UE~umzXw7TWZb9MH?1Y( zWM8l?zFL%P)jH?dPXBGoC@@p>=@{Pds|3x{!siKW9FRd|(+ZG`a5M8Md!T%XvEWV;$^_nzi>#@; z#mFT|u9HV+me(R1^R2AK#h;J_O65((RH+BpD>`3@vBsp{$r6VKg3-g86V1Ws7dYM( z3MbOP;$1S;MO;mnwO2WdUbIHoFEQ<%>dzg@i|A3@QS*OrJbHG8R{vCZv6CT|wp(+_ z#GL-C?~$N?Q`(`EakY0andj#BW}yJZ@4Cx%!3VxNvCJVxS2p~NL=Q)&DX??+Jt$gz zUsBL%opp#S^rN?gJuLU$?z6gL{qd%N`t%@ELOzvJafK8PX;Ck5uiS9W#q#m(s^N-i z$cp|Iueik~ku?2?lT2Apl}0RzGyMFMY6ZU_FY|^6-${dZkfxXU1M!{sVe5bT%~P;) z1k1e07!V7OvTum*?9p3Yl^mbELolh{82Bx2DFYOb_UklIu)syYs+!M|lxEb&|-|4R@os&|ngUPN8OcK%R(n6DexCln0yNjJQ~A=W7V0sH<;p2Fz3JFh4=?@bWf z#(yyum5sIaw;!te;miVlBXHc>TIc#MYM4Ktb(ed<$x>HO$v&!!x#L>g>lFl;#A1Be zhK@FQRw|Pr_6=n}ALc7}BAS{!1x& zi&JMq_-^bF-{sC_(`e=6CFP$4j#~-(ZfCs(`E~DzHkr@Jd*5gyhB{~Ebl*!SJchsF z6~%0vmi#vgM))3bhi48E9vVy`uyV4<`8lFdqMFli-kPHbWv@%CAN3yI^4iN>D}cJZ zG^QdN0eCNGk0QHwHaxlEEH_uURzH!#IJzLbq;zCG^V;r@sS(M?+fKMu(N+ZH85j#A za*C|7Pr$3t#cGa`Mn8@am~pi0r!XA6pXrv6ygQz|3Cyw@d`)G_%;+r@aBF*k5V&9~ zz5#DG`qQ6}b%v3kpqk3zFM%s#_yk%SCi^o!#h)uw@JORWlWCP-_1yFBh>gSVw>QVi zH(v!|9Ajr4=1I*eOtZ?uKW*lnS2wiX%uIisdG0JZzSsWzdK*8-xJUW;`L*wmlTVNR zm~Th1p1+8V&%WC^}-@UZi{qRL?9 zbb%?9STRj?3lyZe$#d{Xn(_sIvD?;GWyumWmU?nBivPV@QbVMVP;SDQK#X}E}-Md6GJKNNteIQI6g}ni4gx*K;lRe;Y8to?9y^pc3eE&8K5lR zA!;WpwxcBP9Ao35Yx7}SDC4juR&PFbtxzHs-3*~(JLoig(AF5Dn_?ckz9(ZLl#Yj~ z%Uvx2$99sdNNHfcL%^2I9)I%%7;$FT;rgT};Q#x37_symgwz2y@69Jgi7jkC$F>)wI9 zjql3$fRB_~K-E+FCs?a!TIDsOC2hh{kNN_AVNW;<*+`rna-65f6W`--GLRdB<`p)f zNWdwM4kOgv=&UJje}>`?*nHp%7~PZFQWfKr)4}#VIA6&=Tywr@3XE^P2UG@4v9FMS zxQTeQWIvoQ6gy7FvHNmZ%%LQtxE~BwUQqZh|B{y zS<~x^D5I$Jrg>3g%?5xB3a~o0vS&Y9&91tm7##|KGDd{QJrXKu=}EVac0mOj+~=Q8 z9Ee=~dec~Co7g2e(?fiyT~I&9Exx)tJm_(dFrm@WnCcU zW$^uthAZ~J$>4g2n7sKa(36_$F!khJ^QTkyTZ;M$+Eg!Ghzz%}o*BDgIuh{Qr7kt% zon*z0`(`w_pQQ$V?T6}^FI39 zUU?NMaGW8YploPVDsQ%Ei^X;88Jci&m~T!j0SO{cTsFM|mph<<&yrT-*o6$L*p?A3 zZuckQJE4(Nrmrm`q@Nv)2}1 zm>d!!Qylqm#kdf;q4=&;_(48AzDN?+({S_jOG`uDGOH4#5ip=l_~w8l0f7&D7bCFx z!aZV|DCDNtt)}2AsA*Is=^4gK}zL)}VbFU zsjUfpYgpJJf6VMN4EITv5%I~314M4q(2x%0@2W`!dH2hwFCGzTx5mX?uOO>V8dk?N zY_%}k`g5XVc02vShMAqo-O5IBVBOIAwI@fop7|MKC|Dm5nhXbH!}}mEpcJ&oFwSUR zOn0iolVob36v$?^w^G!G=r^z&u3(;Rq?i*ScI#$U?k3M7B-w6AJ_-RdiERz;r#DZ< zon#cIo_e*;{P{r>hQ@h|pktx~No=CZR?aMaKa`C=8GQ(vnlJOMVE&NN8hhvSFTeDa zxs^Qha>7EGv-2a45x;R~x308X5s+d1hAK7#=#bkA$%AB^Q~KFfQcPlu)XF zwtK`Gjy`b1k3@Sv-`8TnRG6V}!{03pYG-*`NTo-}{CfZArooQYEa)EEy}A6J%2Q@7 zAYJRy++|s^5xW90ha!ha7GKaN)!YyU3?@#xWW7J5uL33A># z%hw%Z2|ho0M^`sUqIS}gs8dHQr-DNcGD;?ng)?JxJc!4IfkIwYN18C6p6@kEm%`$rR1 zQh=Lgy}maTi@?8WevY%`jNihmYv;EUm`T|-MDFRt=n`k(qO0#OK<}#}Bc-oSNCR3U;$Kw5TKPKCn^BTP}>l%?u5P zlGg@c42y?IM#$voV^q-lPo8kt11`+gQYW*+>%he0SIv_GLvn|m=!{}vqU^SQ9(@u% z(rOJ)QV~nVksUh4@90*tcXBnOa8qDQcuH$0^h`J8Tl?btIzhy!{mV*8=?%zq$Gp8*AS;8AJ%O8F0Xq@3SuU&rNmlod79;H7hG)f zMJxN(`omX)l3y5}&(-L0CYt`uzO{>ie8^91UK#S9cXNDuVL^FX6%v6RK;2YqNt}?~ zd9x=LbeAD?R$0O6S;j@#NmeoD^V|GS=iNXrYJIBzX8pjUyT6@vSD63PH`83Bt7?OZ ze7sD$<=*0N+v(X{=6=y#Pc*9ahx`u;!t|7Xkb~mcj~(Z03Kf7Vag98Y&R1jnlV+X% zqGwLMdj0&>EPt2X>kq*%2WMx_P`BlD>co4N4`9WUFg9?Fw5{ zVv@n)erh)6og__Y8^7_`s`yQ$CDPtteGOE;S_y5Ref*c^0L?8YdAE%+%-`G?KH(Ic zc+b-9v-Rzb^v-Wfbt$8#n-!T@d% zffUp+Nh>Sn-85)0O(Hha3Wvsr_$w$kXzqEBlN1`75ijKbwu1ahohw!(CviPXWXX8% zc~GNIZU4%K2Xf0wbHE4MW^)km7;Dw{*Ro_!OwPZ9t1ohE-D7a?Sk^F_uT_`?=4_oI zf*te-S*Z~*+U>tKSW|y~KI9{hF{xGAlM~qC=qN!Tvx3ljtp{(CJD1V2rW z-O+!{4N8q_h7Zzgf9q=Wt&!e)#BFhdmNaYqRj&TIQVA(LLDaU}s-Yr%>f%LnVC*?} zIe97B=XcMG50rf{=%zJ`86Pq0iT;KcUvWz7I`W@0#D$=hmvbEs#u;wH z8t#M%oY1d6VeKgYnS||!u3NMQ_*0AX&$PrBaCbA4cUA8}5^(=8XU>7~*fc_*wxqnW z=uwl2N%6?b;BO|U*@4#vA|ZZj;FklU%Kow2lO7wB`y6F^+b=VIUkAlfslU&<%UOUu z#r?<)@%jM8e0{}L8VE--%XRp@i9LXu=E5IbWJg}dE_;sOU-1C=d+=a4OF3@>EV=Wl zJXfZyE}@7?!5n4(7RsF=(Qc*znFYj>mV4%*)|eJUP>SY+iYIr=5o|&)a*}kYuV0oY z*+@LHktov>MhU0zm#x%1GlX--pdt|_E?&u+fA))P0I!xUFbpW)rs&5Mj@c|GLR#Dm zrY`5jRd^C7(RMB#4t_ww2?8$$K_{`H;4N{-?Db}WUR2AQ4qHrH?l|~-qD6;+`N(e# z;TWrLIMpE${3VN77zjp$*_=>$8yNKlmv!R`7);f3{TUcznNxTL4AvzXd?3Um?S`xf z9&}NytOm(iUsmII(?qvdLnXB{PJoB*V#Ic$xjbc*PYz?(I=q?}Bhu z$B|lD+KBD6V>J|c0Tja~92D7^$`iCOg%8q{*awoxSo5=?UolZ==@%K8k#9qC3rC6N zYQo95jtgP}=(5c}XpNa^H}p^JTa(_UmK8dq4oh&yX7X3;r^o>gt}f_^-!(h*we+jV z0Q!ZP=U>+wBwT%P{*r$U|A^`t&y|{5xSZy{m?GAF`Uw5 zTP8x@Gm$fdbphJ3cuj3)gs*5^;m2Z>7k1?F4e0LZK{di&_hM?`yRkDGBBdKn*+u@X zry>|bYb}v0YGWEJ+c#c?4_D}TSz^~T4U%eQ@eYH&mJjUWM&FA91rZ{Xiq+aE)5z9~ z$d*TTYN|z0d<0XlnU>^GJO3KhOaT&E=&J~+;z1f!9)}YTcEaWTsOYye7&XFWc>9n~ z)oM^AkfokE)9zk+E}88eoWWdT3_=^9PR2@(ZEXi>(Fs|7RkU@fV)u638|ksIQJ~JM zqFTUo*xM|8R5^uHHG;QPfTlL@%ty3B+xMrUw50Eu7{&X=am9Y!F9}ZzMwD(gJlf=1%bGr3B*)-h4^$4B!yfk==CE0jtX{49TD{?=H_PQ z-phHIo6DCr=z%ORn+e?5*m86N!3-lyu<3b$gVC5N&t5w_5pm{#~w4ocoYl{ZyvHOKK=6_x)> z5-3k9Rvd8pCHQA@$Q1-i)h4@I?xfXTV4R*g-6^Xype#^^XKKEjinYQ+*t|Z4Wk2!PMS0gU`dr*+%EnlVWyvKWlCaRh%60#+I~^G&T}X*EcA! zd0JqfuNWPe0@C4(Kp%~x!Z$F5PBXgDle7A36%jPEKe@)0gi80L1`w9fAh_Zy$jHWY zfZy{D+%Ixd{$*z@g6MxCE$rjSUHYm0wH>i#6Aq>gNlW|L%cE}%X`glzhb1eU@U6>) zb_Dbr$lK>|MS0t9p9@#Be2K6Sb5R2(Q4zwi9|T7%GYxYpX+q^c89x8tKn-=gMO-J< zeY;JOY2SdwmCiwf4-L5hdG~(@@XA`uX~Jc6pd?_1vIPH@1S?Je_JZoED1JIimNq{W ziEM$}DL8=$P#tEJ+Y-oCknq7A5-3B~0<~DM7~y_D$&=WF!LG-~E2PT!spwkZGf@EoMQ#B3bQ{Oxa8&xD?XWw?Ee|l>(2@(L5e5jHf-7i{n?}aHe4}v2PH6rU zYZAll7}m1RIkfl_n*6-U)cYF){!P(qjSLkXmiR7LzojR`rn&6X7JMO&yu9rf;CrpKC-m+f5s$gFvUYD;ujhRl|AC|i z(qoVX)ClzfL6977c}$6R(Qx1{Afbf#Drp7hM#6-y2-U8OH-?r{9W(u zU$XR6DiI=6El2e~&O>9F5s%0{fO3iQMwhrh2Y7n5towe;tP!KtR_0#+X63NF=83;0 zgamVL>n2oy{uwWPE|phNH0uix#fQ|xEu&4{`eIo|288C$NgS8+i_*nZr%}&w7Y|p@ z<}0{Z4&YJS`1p>cJQFr>T;|j|vd?_E>z=;Row+yJ_bH;^NvKA!Q8v*YUE-Hy^v|#F z@q0|Cy$0=}OFe}dU%wfu^l;6l{br7FjN{tuz<_D39Ol#ck+c4J*uh~3IqwPm2*x4&{GNkm~RV6BmV9!?jRU={Fx9G#0lQ~w{wyQ1qzxggBZn0<{&Yj*BHS45!=L?g7aXg>JE71#kDB}Z3da$Nby%#X`Rg);{>#E!_NRb&xTFHq^^` z;W19XM#-WSy}6yn;?bG~AI%gj9D_aw!{-A>_W?~gGO!E`S7`eF?!Kb`-{Pvd&bjE1 ze_0UN8UGAgCtRWWj#~Eu{6Z?DqoE#pbEN^F1Xp`|fffsj5-rb*Zw#pJ(PT_;F2lOsdPAd9-2Tb_Id}Aav@;7rs?=|~SuP3eD+3CN@ zhxOW4;W9#u8F#mpmG_?`b-eIebTE|t`COD&>X-9fZM2Eb5&+rpw15!bXcK0Rc8BJO zbACsW6kr+Y$V~-_cM9`_z@c)(?Q^W(pOtg@uQA^VLV$CV@ef7!{Eqcj+)Aet``50G zD10YQkfOvrqv@>o^3qSauS|0Nadn(COx&)#*(#MEoo?Dh_cRI#(3I;{^xF^QFyRb=jfJeXtCI z4E+vy%R<8!Q=@e{D!iiUo;hW@5d8ELB}n|*Yw$FONlI%Np< ze4ZW`G~`x>h4%N8BaQ$op})dx zbHl`TQqxI>fIs3aw%4~3&YXn(!Y?N@zyOH5q*GYTE2W*886OeOCgUKry~OH?JMx7h zB{0Fe2Y;`IXeLJi^hm%x3d}guE7&tL>$nr#Kw(7}a(^X@JaShxFyUC(o%O?B?2x3D zzo<<;y!lyrC86;YeSSt(*@{>;If&y*QQ;{BfKxcxi6{!sfnsNahI==TFYxb2n&G~?jgfrvs$su0-8w+SkQJLO@2@@v@dzuh*Op>z>uKq7Wf-VsQO zS7<0MN@~Q|B&x(|3ed&83wDYCaT+vOFzJ%Z_L}0#lT1Vi+06JPzFYd82A@@T)AjZe zr^{aAR_f!|R__?bi|PlSY+n_jx%S(AoCvN6!)5$EvLC#4uPK5z=zl@I`@vU7WBXC2 z#lIehS+D96k4Xc7la41>{|sBdYJL1x=F#R`%FR;)r}kzI>kVkR7yeMj-zeJthi`x< zI-~}MgxwQ-O@q-)$Pw#7_=A^s=J3{mLR(TCI{5GD7HAFt_d487C`)D}#sNu1Csb4| z@XPmO3%4#r)U`w7234Oa)veuaEh#+kI)2LFWIDA^Aa@se0}GS9BElV|-aoQ_Fa}aCk^VV^qZ-$NaxYFIbmOFoHG=18=3z-1q?59l4hKg#84&HW&IWUB} z{WC1i1lQOOXLfwKc-hs~l+=P}Y_?zdZvM%x8pEQ*Ti+1EWSHEc%ZqwXG)fQ`ir+dZ zO^!e&>z6Z_5w@b6rk%_ZDD+2n=P8FLm59S+JE$yuH?D+!681&DwjFmzvC-Z(ZA=T3 zloq|^lCTmDRXoFni>Pfd;yy2FuhK|Ahq0a98u~(dm=+l?nDmr=m47g2!UQ-ZVpo~UY7r6@ltZe)yxFZL7CE4gUUxVo&>esu;Vjv%e*x`3w`Ix=+4wq#LHk@J}cPhla zFkjucjT<`%pE3l*RK}Qz%olVKiF59#q~7d@I`lkdsJh|fkrqo5YXV$9XF_Cpi(#@7 zuYT42&&>5Mr77uarr!kJyiQs)2vcL+_c)O(+R?Q0DQE^>(bZ?#3QTU-GJS6+S(_pr zcC&ZM-Xtd;*59c1X2lWw$>2poJU#4Muqc)Npakaw4Nz!LPD8=4BQq^s(0XA2+5(D^ zii8Chztfurmr8(hB^6G_Nu(vWfF12=@;I!>>RoF78 z2}>c}Q3LX(+|mSzaCXSLCNr}N^oOgtOf&E5)L*!l$;22g;s;o z(m9?xkc2rbrcEVThxA~7-4mQou)35xML1q2wtB^T5m$a_b5u{!OXkmfN-LrLQ`MyQ$ZFg1Vk@IHRck%B_D9^G zw^&y-FUf5QX#eXdlYg84M(smUMZ%LFE?Se?mTItw8sJrXVBfNI!N#@A|ClEN(69d zY~Rr>#H|Wd!k&}ztEdcI3UvGgZk<5vMNq`Sjz&+u#Fo_SUO6M`X~z{HoE=tx{Vt-L z+6TY41wX$oW3jNhNQP4Qo3G$BbQkYCeih2M}Pf?4b$5q3?)D$rga>0C`58;^>iw5x)Tuw`7N#96~>_wGuYTS|XU6Pp>0 zhB7Z&>}x#r=l-o@Kp7Hk0ehlwR4ERV`*Cke2@FyT+>l~~n`=2HsyImQ5(7Z0m(t!@ zLbI2so#I6A9E>%A$Vc*l@-Rp3oe&b0iSzwB->#XD`7|R!p&K3BaANDDj7*Z^fo$^m znnpWdF@zp~$N)a#lATp84^&8Pq|{^YJz*URZ7i-{)icJhnV7s9%jN1?>C_!+bZ&0v zD`DBWtd9Qx z{fWc@hmcLh4do^Ueff3;AECBp`ZXi_?{1-ikCwsl4<^Qs>z&Ua_x9PBZW;T4s^xgb zK;-178sGI6m$|(B5ApmZjBFoofM;kIci(SjwR^ohJ%PWoK6z?Uy($B44u@msioz$j z4{&Amb2B2D^Fq_nEKw<} zs$6)(eA-Z>%L@{H%DmIp8=yY8V<8IB(SRQeV6(TMF*6Ha+VU=8W8*diAlj;DzdZ?X zA|R+JZ2i&mtxj+P$8;&pOfS>@L4RhECMbk66#B%zj322IT%qzaADDjnmvquPo=A2) zW#rfa{W`FKWcw%Iu{~vJtn%%MedgoQE%Y7{(TVk5Iymu* z);WmcZ9}l1B;Bc2pXWKMth8@ zOKgDB9K-5dAv!hIw> zxJ+4-5E64Sp2`Op&;F=i0&i6Be6@fRjkzG;U)429+6_So{t9?|Wd0~!z`*|HEqFeJ zmq?wMC03gkj#z0wP-UVI#vNtmm1H)jWfH=>=-Xiz<+@SHx3+_Z{HFv`fMS`>d%?aA z#HpTnd<%p~FSLmC%z3e{Mtr$x@a&K}f?1%DOHk?E&%}FI59R zl6G0VeX$Xhfl#Fx9DZ}+^(u=!{Wms0yt~D6((hVAT}Fjc09!a0{@ppRMzFG4DJVA_ zK-S!BiU>pUCAq;iV8h@j=cgIv$#IVEJawA=PVA?G$Yxv}PcXe*Z7+X{7 z>z~|rZ!krwCNW_?#`*}%Z*7gZPuU3$jsjW$1%0uDKEO6=#ad0+b(1eQ%;_~XTJEog zm2|VJwho)=PLys!@7NJ*f=yiq!Vy5Dt9n&|N+HlJJrnXR0u^sAT!1q-pj&TX+cMnUUIgglIyXk{tH&#C~(MxI*@aJ8BrnkP5odWoKIDxRkaon_nqU@An)Zr%a>>hIE8yYIn?RN*VIZrdOon~Z89qz z@FB>xsbiJ0OeAN4gq0R=8W@A1YYg{`D$M4Ayaxa|Nr&D#hs9IhhT5Uu8d%JZ-#}yl zX=QX3rEwQ1ICQXOpIHVX*m%<;lt@S%INAliVViDqnxlig$w1y>7uo4cf8qM^2kxTn zkHj1}6w{BOz3wptnS*G0cE1nReZrhpE7Zuj>BfGJm&f@crL$nkeK1e>zzEDwB}C1q zW*cg4S&?j1I6U6_YrpLZW+2Ysb&mK`;y|gG-^pYHt`{W2*CORCn*UHhB={V-_Rxs zN@%L5_cWOf`MizZv`JyJLzzn|9cMh3Hc|{lSFt6b13VyXKxqqbCF^0T%Zi9qr>v`X zyyIQd4{}bamT*A^69=amD~lURKNW{c8};?CeLPe zf`3+{H^^hVSNBN+zo}j18DhB7j;V3$usAiKT`hg~$2vYVX&3Fl{ULut;XXoRwd@r( zomhiBX^5Hkz`}8#j@xP_i#=g^297c7y>R$@qr+wLH{@a9VGTE@zrq<4=2)|7dH-&V zksApSY-W7KfMdqw37dHb@uLKwB@|Jk5(7)a-9^%#OX6ND7oqz|i-i!?wfcoXMm4SG z;r;t7B^O%|a_M|MYV8W_ge&X)jDVh?6IA3WKUS&6Y)0OUohQW2TNhuF*3dlv8ZK81 z>uw>;MJ{(%2nFGImWaAErLC3YF1G2l2>@X0G#+mkT37Lr9wi0@7J0B)R8+VKf?6a^N4D)e|6I)Yh;g+}8y4B#v zq&pcI2uWr+^S4-8j=+^;g$aA~=}u7k<;o)~ZzmD2e}4bs+Pt@#x~h+EZZvcT&hz~{ z+1@+t#4~3kFt1B|W*p&}?Bf&*T&?BtRj{l)*rvA%7vsd+8why1$IYULjgRr&Tn9Kb z#e_<+h8p{^e`x^k4Hmly0`#6J;#6im?kmvt1>)Tzlq?+w()*YL)BQ%%K9c@G?8eI? z9F?DwEA#dcO5|~jlk(XfFLdwK+?FQ%IPkF$dO~{D5imAll*cbBQ^E#P;jg z&h~Ffoml4v*J~-IuuY)5qr;xQ1Kk!qr^*n=jyHPm<46COsG$6CdAQVVpZBFfdp)(au5Jga zmeO@zBAa#B^ik-lb+*fZ3F;aQR3u+exdAf=&z}i1+=>4` zckC~!1THECR(65jmH6H^XX$hB)Gka5{P~AdhTjXU+8b_u2+1~TPyP~xE`*b-_ndxY z0$tvX>lleuCy)=x2eAJvxrQfi#db|k0wJ0kV&4!{SS^Mk6W|vE+hB|l+#*n6T=fxcYUcFX`UBFPVDQ3Ck0qRj9@I)F=&ZEXcG*S>B&R+;T2 zAYo3FX2_dbm1jM%8E}zctiPg&(&i-^6!yu1J)goK+UzJR#^He{1rx(=_%bYbiM>gs zr<2?8Wz^-dmKHe3O$>>GQx4lK_sQpFxNXurTt5zoh3<9H3(Cpp*1q0sc~rabX>oM( zOY;L8)o?<*j9AG9EQ2g&omN}ip_^xD-6^UesNX)_`0Gy9gyC%mt%W%7x3i5>F@E)$OCu;emQ{3g{K!F1M&`V?HdjD@S2WmRpSp*lB7^f8IQ3=A#tK+uP3Cxc4I=E+>2u**vK zaq=&O67aH`d8;HZT65>YZZ}fj_+!(#v_OSPC@m&eu69VWQ@^V0wRA*+d1swDihM@j zwg@aO%+BZ;Z7aXrM%hN{nDn{~5lia_r*8(i6x}h+NAI_BH6-Jl(`U!tE965x+_83q)d!&-1&{q!nuN*^tGA z$tuCV*^V*@nMIfSDuRJk?Es_F9i~7LjR;dwo)#NRM#e4^KoHLN03jPE7#X~sjA=9f zI{r9QE{1=(7g6J|-o7g!DZrLz^%}EJZNUk8PkKlklk1sDmNLi5DFcq3a6LFp zA_utUQhRSAj-v>{%_}aPCHvR4<5FuDeunZrkA#FW2%TmSd5z<`l+8a<%d+NX0=Y~6 z2BWVw>P_Rg@^QLp6+vTw*}}MKO}{oB5UPdee>mxHzj-aKPkmwk!T7sR1mu~`WUj6J zGGZKb>`4D~tl$3I_QN@Emxiei1m2kukFrMYAPJkd-n5Dk7B2Q5sD=2w>xRreb9>>@ z2*6bCz-$p`8L%?_b3?Xn&k+~Pb{PZInR-{JY!zWKKY%rc}Ni29aO)sxtmFU&OzR zLK5^%>Y?(l@(bl>`Dn+FrAGtmI4_wcI*hYyV@-9f@&2T6z=`_EE6a~JmTdb7B`-iq ztpRz~Dg?WQATw}DrXCkLQsx6MTdr6+1U*u`%PN@sDVtqv(JIuUm20%(TN9==!2}>5 zeuF48cTwo$KJX|DVi<#TzV6ctfR*dIm5q^_;3m98fBqBo>2<)WrNglj`S^I-QZ;TL zt{O=6@M47hRIZo!x{R>2PrfII&*hu%r-VrDr7T(6Zb}aVA}fCgGzRx3^S#9T6gI<# z))4s*-47^52^uG_gdR?2MA=i?2)ussD9)JxWLmk;CjhD=y^||JSQK#$NxpES;0!WeqMgfRq+D&0d297O&Y~c?L&LqmY{AD&E98w@!!TW)1?hQi! zG#)^1oRbm(6q2Y!%0rsVPtu#V!8(Nb~a9cGT`Ix$O<~+O61eaA%iwEvde~}VWi^FEy~u$D)KyG zgf2Mu{Su}wA$ui(c4=~4kKizE>l%^v?ADHo)CV7(U^NLlGYCSU%xC=tx%*BY_0pUA zv)DrLlTFa~xKyV1!dXb|99(2%PQ7G+PN6hrU>nhQl$Jfk{)#O(pXJL=!Mx_HXbnnk z94{F#0Fy&%2cqF$JK&e-5my?n~`0t-D(ZBYFoI0v>EyaReHb|7sp)$JqUWQHry(`vO1OkANub_x3Ps zcCxd%+Z1tE+2f3)@LIW(T;&=iv}r~=>hi08+FKWAuIp2%`~p7gOppPLK^sco=Poex zo?kf}6`HWK6k9-{vx?*uN`{I&j8y8zc42^aOq1SJ7CR~`%B4TZE($6e^_{?PFT)vM zOwpNhsB6=*s9|ph8qIH~AUf&bKN<948N=yUeTmDE-*DQiK)> z+6|E(gAG#B^MF(C*$d5om#IK#8-o%@${4)I%)skrcXsTP-=y4^$yWv2ps`E57|tzd zd-lD0^eC*k=<9JH`cBkAI7t~ZMGys;PY{Wa6#A~s+(rvY?}37vu}uYC>#qFSdFdN0 z>K9%3Y^D}a=EU$^xeZvOJ_D8d33i?A2}wnz8ZKZ zo|@|(yhIv4KT%~wmb+@*dW()N4wq{LtQn>|XCKN(2mH`C4-LdqO3?49x1wG&eR|rS zIlL{a$`HVd0EJX|bh`YUh}htm6}%7E;w6h@{&XD1FLjW#?$u!6*uu3Hu>bzA^3urg zVwOtJ!t_>s5bjf-HQp>TMrNE6J&Vsw3in%uzlF{B7+Jk_)>8vWSeMkV+;}_Nvn=8; zckxQ|F1+27puEqq=8{ImJ-|h7ibQ*r2^Pu9K=s5ghu)He;H^sExWN5G32&yvT=~-Y ztNg?zQ3{E$`=@yxSzORY2*)FyZ2D4j?oO6@>{oWc4tHR80L;Y>$Dd-!9uPZm+UOek zD{0%(<4e22gkdRSj!sPN}zjECleie7mX&+(IwdTl*V%~2GZth1@M`) zmQ=BuX>By36Cu2%2yH5@`>wqcxO{SuEnL!`)Ih~K8<0g%)>wt;<1@01;>If>PUdaK zfWi9^KhXxF68;3e2d-l8(+ZkReMd59Yw~?7fLED(k`Q5Iz3e4_UpWYLyx46C@uoqk zY=?NM0bt)di|9Rfgf|Y%=JzEOzwr2YYM`j~3dS_^ezvt#`-n^sRR)8Wtc+}gh>FlM3>9QUw}-A;R6sLUE73Z;Xy zi1mn0mNR198CI=%e_s)>Bn(V}(tcw7v4x;ZJ^&XmgRC3>=Suh&Y?LuVRZ)UHuSL7F z_+=lN1e*$w9Ih>*D0xZS^(G0K{1K*!mGAz>tNk}Nq~T%mRevbBr`xTH_e_8lGGca$ z)WEc}=ricD=#v-vMD1_oxR=12xi`W-tn^CFDlLnrR;t?~9qm&|x_3Q7P11bu&rh!# z)MqdKRXSV~^s}NqV&~?Z?T4;E*t*-O=e&~k-S;3`rJMW-H3rbv7Y+K`ZW`CFp*`aL zTqS;gkHhK-IwP`ExUY&oa7ktLvz6*WeCjJGnfy4rb1lSq(4m;qn^*h}aurU)G>;eg_6_9(RB1s)yM)A)n`^veMv0 zx({t;Qw^%6Ghe98&4@?bIG%Xs?*&vrV)By;4cp>FD+0_STt5k|9i=^g)yR9{f1Cf^ zF9AW|nGNv~`Og|Fp2Iu$Fg_qD)1X49i}n5=JU6H4gd&_9yw@Mg&TQ5?(+UBwer9Nyxi{=G?j21wpd6Mx9gm#7BmMgwxqSBkVmEMs z9&D%ny{v|;=l4@3)ILwt+6zX}T9PQt=CK{{T(oqJzh>jH#Hi`+%3=e97AE)Ft+mvm zf3mt>FLccBnYgZxEz?&4V4RuizWw|6ulVmKsi-g8_^4UcDU;PDGn2bF>-0H*;-MDq?>NkDiC zib@xl6JbpF%LyPU53HO!ntvO9t${jZSvZ->}G_7wqwkUD&G1VW&_hL<#0XjGQfV9OqHm+EUpK z41@*&Qrl6q^l1ylG)}plYFglGGus!DPFNn5UP*xgh_u5peX2F!YFlKx%!mv+h3di}M@|2%i98);PTZ=z1@4Giw%~umg5uo}foqy4;l0YI%QW zcX!xuQv4P+2qF8m_Zzq12eB{DaB7*ptP7WpD)^w0W7V|4RjazGR5e<|#pvyES8Qc5 zpKmJ-`8RL=ure+p+g+u{&4cLOKR9M@-_5^vr1^>J1CN`9)`f|xKJ~*L2j=gWNq3%& ztu9+m&s_PAv*q2r#>X23V{_~heN6THKA&Qx|qxrC3Q!n!M zunVSduUhx){sYQMR>u>=$rr1TUCOU>4+mq;EyJ*URFgvoqm$=CIHe&)6w6VR2p9dF zb@CrQTss@IY^1&wi6c-@OF!G`K&7}zO(OU!`BKDMUS?+ULh3eMnl9qMfxJ7q8EpUK zM2(h9cBr)u5FnGbW&(hF5|SPkP@d9W5F{e-K-{aqcMKPd`{nc(+)Tfz@K}Fi#WCMQ z)99UrZ`wUI2(L>p*Ce{bC~ZV1`(B5ktAC?i{qXJmFSBDY@>rkLD^BM(&D<#W+<#d z$4MWX4+#b%5#7Y+D2HZmz8usb#xH~B5i3{jp&dR^;2S7S3JtqTu<-$VDALGO*gnz} zF&e$huGAp3L&mlsraWzVOZCtjUMUJaauKkGMTx%fFJwjD7?~$k5vVLo^sIRyTm+~% zEF^dA&dOZ?4Xy!q@HBlMlnK-4a{;b-h!~tnfnj4Ls{b-_M`j}W2FHbgw$a0Gr2`4h z#zu*W!LiKgjli6fGN4LuYB_|;%K)~RnF*MhCg*@PZf;guZEBL-GO^QzivzFU_N@#0 z`7?E6$Jq0?M~_CHcdbq-qUsxBCg$Gs)MG>f3rVrUSjXqNJD^OkBPXEH!vwqjFsUo; zxM0Bf9y|Q|*n441{Y7_a|4{X@5y+0PkFOW^`KqjByk!5~g=aum(c1?}){-%O%Y)AopXeQuehbLA$O@N*&CY%+Q>Ve!wn{g zwe9LppwGh|oB-JOz>vis5E$Kn`8`({Q3k;WgWZRd0sJj=ejlZARsn$ap-2P(_A(B@ z!!ASRDl7mlr#rGU4Ji9&4h{ARgwB)%dOmB}_8OtIl>oTC@8`ZbCN+v49P0$8NbeP| zWEh3u^9vzFR1CjC>Nmpu0s#ELFdJx_FONaQdIYgwJTW}OJYqUh4*(i1%w}@OnTCL_ z2-moL$)&@xBjwh10z}MPC!3=k*QRWH8jKFxu$gH|vLNg_vBDtW$4pcM13&iV1sKIF zZLAxWnYLp7I~l=VyP}}VA@N$}Zm0FUh0OEQ=GQC67;S9{c*HVAU>>}Mu=w!%rzki%h4Br+vaG?;;nQf zk$3f&cQ5>8QtY*!3++590Fykt^V{Ns!M7ZDDBNkhZ#G&NV@KDMZ-0tpC2k_H7mJ7HjL+i*5gO_=+8U%K z&^l{KLq>1;)9~Em6L*z{-15kcTv_X}7)xSdvWrYhVVR;88q|CYds!{uzvF%jc@8P| zo9s97r_ENpsef=*o@{{l`ol(xpo66aGh8;^iC1Yj_+)~Mm}1%e$$Wpubc6kO&3yoEvB3BW3qr`~AyhdXsYzhuvKN{~(}Tt>@(bFdVad@U&V;(!wAycanSr#X}3a0XY%)H$yjuh+=+hWgYcR^BeG9dj8Ah)t7SL?L47F zfxucd+qX+UUQAZ|^I*WlU`>a_W7~uF>W4BKDU-^!%4GaO3UksWYcU?~p>1@mvb;kaG&K ztw#IwRQ?z2b;aW4jWVX#TfcSX5w8V-wnKT;zQF&C`F#Dz#dYSPd#vs)9%)OzpRC6& z{SbAhFtoDb@mL&~=~MEY2^OhCJ7JW}GCpu5*GN69FO({UmJ{|*Vq zQGqS+cp6kxD*fOI{SM*OXZXPh!bvq+M^ISlG!QzzkVaJYlJ~P-Voo7xu3s?yo;#vur<|OM3U~4MZlO2|5=h$kCIqLLz(llZ?a#Oi{b{RpXe?xcL zQQio6A@h!nZLD5>g;jQc`F;AX6Lm*z9g z$z?O1g;b$87jZ)rNTRuNs65c}E(}w76l-%3EBH$k6T2CG*zK@Y3xzjNJYYUuc|T{v z{%*^E)mXBGj_%~%zP0w}UFnd;`h&M13z7L6gSiBP!kaJ4yWB!*5jW>oNd>t=S_fagHS1z!2Kz`EcQrH^8xTT z>!-WoFY(k)!{(?ugkst&Ogc7H*R(LseY$0}IRWrT1=q{$r4f)r0Fy=R#r~y$$m@kF zVeVN{b+i2?xaS4)Q(iJ}FUdzYIWV>}_A&K%y56PcW@grcmo#Uj`dRgX&7nPeW|D^^ zv;Zddr6!yFkrRFkw~r`{hr@UIlvM!e-3zgxz6rIACoNeQQ-Js<9YGI(%d&du1Brw9Qau^0IQI-~pxaiw% zQQg|7B6b{jdI-=JyF-~cDOSrnETODSVHp-A`TZJQOh2dy#$EV}`-U5$ln@fA(i!O$ z-pp|<6-VDYGav^X&*wx}?3%4b*Cdv((yzm;7aZL|z|e|$p4~lts_QoTjPz$aAsJsW zB6O0cJFyLtDt>HeIvSux|gVqe<&I?O1 zF>;qrmtgan?jhf>IE!4_!**z=X!X0OSETGxNZP^*PtjgQUG~wh(qdi3#t6?In?+i* zd4f3b2Ui(53>(3i3ENXU^;Wi*XPT`H7&Um*pr_I^W+LoBj7NBmzd?UPf0wK7yuX?J z1L@p}yFu|sZ-KT1bt3k$4s49rn{0Z5_ZQAJF>O1{RhYs=;P0#jM~Osw0ytd%V7q)4 zT8lVSr*Cne7w(W=-KAgMbZHxz9#n8S_GR}{3XYLf&U`6NkPBx9H6i2%kxcM<0es2+ z-)WR%gU>eJbG5xMyQ_8DaF}%!o9@x*ZR#WuPT3is!jk0mJlvcR!7#CczMKeJB+7&p z3D+iy8k#^1q%r+A_LLZ)7v|!4OWFwzGsgybPQI)=HH}%#&)`fbMd`{)IR(Vc&PlZ?9N8|JUrT4!0CfQ z(93v{ARKG;<@lSm*iBkazIO3uCHg^JFK0CgdsToLU`n*Osmjox2%jQaLlny}tp7~$ zOm(;^fj>hoz%~=HD?L{5feA}O+&?KbkJq0(s#K2>EM7*%T*+Or@(tv7`oYGUsMcB6 zjj^w5lx6y~&nmGWzCIeL5N;~3DdF%R;_lp0oo@!WjZ7Fkls;y;1e@TSo&3YfJfwNj z_lRV*0Osl2$Dw7b?aeH^R977f{u+A^T8VTh#5^(E84Yk3YN)2jvU^{iXXUCCU&Jf8sMI)FD3L(iyiVmhUbJ&lOkLX?Xs zcDAxt890F@>qE(6szB4m7P4}MB&X}08guN+{q$A0p*+e^ml&q}S+$F-?pL!h(O!m&v^Awz*)?HkGL5fY|7juO;7l605o+|O6~6cNN2G}=*!!`vQv=FDLU2%Hm>G` zAvx6+=eU-lQa68S&4Wtwdxi42!HDmAuiRq7=MT!KAD44LW_k5!b3fHWIlp&O|$qWaqpFK+z?ZTB1FwqWmoqfbj|(w_M_z%P~z z=FA{(&NEj({v5#jg>6Uyrwdk4Fwp?$@+!b{)pBV);EmZKu&Iy!xBV$z*A)H)=$0oS z6+y(j)#K4V*ODOkPP+U(6~v03hTa(7S&(>O_f0pTE7cG!dC|2upy`0V((4z=9)cC? zYcVzHiK^2hYwyL>{b&fv`!6KHJB0d0DfL(1U1T&7<6IN+`l^0>L(P~*l6raGCz*rc z`jv@lpU+SFFeP)U2VOk%V@iCgjw?M1L7BsE<{ndTJ4Wz6GneQ=TiiOZ=S-%D`}=y# z`RGAjP>UBBj@LUxfmQsdr^;&TLau5mi z{Z0!R!xMI&%zUbk+UV`kCyDMq6}-n2Gq2bt2E&(&rdM}_EUhOiJfj^|v;tG-zUk#g zd0-DKEx4RGvDV|iloQ0-1Uo#8Mrv8zafNiIEZS!`YtCF8j6TgfdT$v#4zYFQMB#}8 zPT5iWC#yW(!T+X2w7TGyUA8a8ydXiA-4-J4x4WgrZ;FsW*1tDx}+5`3dL-p{nQ){lQFE;xA z{XR{XtYPl;c=f;_??OInzQg=PwnhKL2%Xbw-q!nhq8Uh0AAr61-Cm^EeN=?PB;sq- zr{0Uz%7OKTIc0`=)P|z6uCV^ll2qIBgL!MEl^$<$nO|(eL0khrDh0OJA-sBMTp#Q_ z;rGzuJDdCFk&G&x?;0^K6}~o}!xIzeW&jZ$6oj9c6^wq?0C@gf;WJ+ZmM1}Qn+>G{ z^yvBNF3}<(*u&wyaT4!t46FGRtn;wi?~dT@g%M4|pdRRKA*n zxEZsoXJpsqpCvsZeyM)H<2Aox+C>}1_tZwOy5iBeo4y4WBdKP-@W*NNdJSn<88HR# z_S2q^ey6T^TfOUaXb|sOR+*Ohyvx2m4-MC^&e@?Iy!tyjTC_1|n%}~HKtFLwtEM)Z ztA=g}qI_lj4Dpb6AQbVwM+gBpEZBI6sam+T?rjBA{@9|bWwc3dD~aHzHu$2;niKG9 zH3m?Z>&U-CTM6zK^2Rlx^!^)O&*oTHrr0k7ku*b;;d#cCj?vgOz2JT~?8`}YEJS?0 zVtAes0vMY^jhsMkq90J8e(?k@-`nH?1(xe^A@Y~(88Rjd-9d#`2uyj4}YWP#Ny z!kyH)U%z6D93nCMOG+5OKqgBU2+G1fm}F$0SoOHC$y&01e1p6k7maSJOh7FTd&mn? zH%lug)&4}iJJ8GJRH!;BpnGAn(c&a_T}$Lm+1~G>y)2OI;}%M@;iekymwkwdCB!zOeMe4A!^3o1 zGNgwZ2E~zvQ1jTPDS^-YAv|G;_NLA`f4|;XCZ?(lku-Q*aR&OR6eFTNS9rhxCriK{ ziV<{t*q@D&zmp|8NXI4#Y!LIZVp{wP7`HvDOqq~aJz;Kp*pWkpDWS*g8zb&Kv5j2x&u-b~_y2uf4>+m|7;QhMFb0zRg~t|#1;f`t8GG=* z^KL%)gmDw*95 zH5`3{EJ~ueu0E0(QTeEBO{RyMY6>=oz-A6$&D?eC#8P@+@BFA4U&K@aEJvpimHIZWE>hE<1zR6lOnLO@UdIc~cT z`)rLfT6}9AQg&J?T`QpOyxFeSO?rPQ-{uh#V)@kMrWNEVx;#NVZXUC>7?plATDc`m zR+1##JeIZUXvx947s1a9*x=Rf!`-R=XyMWG6N8)-9ziAUx{iB2A_HKusJc&b^-lt} zs>vd3!jh+W7>45b%8#Z4ss+D|!*x!u4?I{Cq6l!+0efgA(w8164C;EH-D4bMLf4<6y~{UrxXy+_QTq`(ooJf>=kv zj7S1Pzof6CuBhp(plQdiP8>ff>pemhC6GD-XeTCk@&O^7OGz2LPWrJX)6g(RMWtq2 z)rgsgn&+B_BNHB%L8oeNrHFmeQ-1fY$Y(F?PU%_7GHpm`Dxb2?R4PeKr3ht`O0rCmY%_B!l}e1ls4SDR zB+FzEV-J&)g}!m-+d9WV4vu@*XcqGDKDwp z!p~0LaGSleow}{&R^$}~NDK@^w1spo)9TPfi(Wt9xaH6x|E4A59-nE)hTBrq&eQDq zA%AGsn@~$Ph4}CZx5h(!m-YFc_>7LOdBeb3o3Qow_UYEACn$%+*IYq#VP?sq;$>iW zLLfuU|J633Q3zY^a)$X5Jo*R9fcAEj2zl%rQY?DXW4qG^V$MT6;!V}r_m z{V2(Cy?gzT!=wnUtX`PZWj@P4Q(IJZFYN8cL;mKTbx9wOtap8MEIBlI<1UrsMZZT6 zybs?N{^H>`T2hhQD$kMkZgF9gk_{P6p7Y!6r4y%uQHWpRiSMYRhj4IGwWO4Dz~nY; zCX=TRY_B5;Nvud;URx)LC!7kC!RITmuH=V22k9`r8Cina(e%F%CoN{pP9P3`zJo8W z)pql862R#TR+!5YH7Ttq=f^dk1^R~C;-~EjJhHCvvt($(M zL+gZyKG7C8(IY6}!pkCzt?D=Yt6jCpsG^ly+5)#!hC=gt5%(MZRv3Y?<0}VxWyq5E z53A#pE=mq$p#*Vupf~Tb4u;e+h>C7QLkmt?^;9=RH!NA64M{^7nEN1CUO4pn9Ij_U z52CL43cc{de-u%Shuc5vab@W!e% zH)JuHr*`RMG$geDgPUE;h&-CF5Xe)11N^| z8iK`uaFYq7^=+6cwBIr7E!9`J-vw#+VBJi<)6O{L;e3eIOcKqHW9t`}_nq)uM}Ew`AMmc3b|$ac!J0qzg)ManHV$~_iSxiFg| zE{4msZ1pkLun2w#v(og5|De12#fmRquU1?>*ywm0^qB6(xxQSywch0A zEVD%WPzmrN!b|&FDdVu$iR3e@(*K}tQ?U0*T1&d0Y<+y^-sN&PwI|1v=I#&0a%DbE zoszkGYsBM>6RPCJ(lp*mtvmU@$A88sUAXhk|1IsXzCZ5~0qz2n=E^KwrJ_G$$-&~1 znh13}9SiAC#lS7E(AaOZ(myp@5IUCopB~{}kIlus*A>k1Gae)ca_O8We-qy z%Bo2CjFe=Zp)k?TA(O#njjKgRi~DtM6~JU92?_B>br|cM3t#wYtA-S5D0`HH_Z;-= zX_A9Qw1eKRFH#n^=XYGXaf4_4lCO-s9rp%9lk2 z%%v6|VH3)@c<$_cZ3o#{S!&!FsoLLMP17f7t?Wze9gtSJyK%;=I!RBu+-Jf&*>4Sj z7f(;1j{Yiku1_GoR9N|%F}PQ}&*t!}qUC?aBQltRitubjrNQ?7`BCphvWr>qE15e< z$d|W1_2b#t=7*Cf{Gy*p_>X605z>4y$hPGKvFcQIg8!756UJI4jLo;^be0?pq-tjq zy%M^o`*#j6>?c>0cnHVgA^o}Pl&Q;+^DY|)4vTL2c`3=?wM+ARXFg&v;0e<1da)*H zR}i0Oif&VXRhZT}Q?;uNbpj{?h_sws;z~%eUgs*SIPM8LP^CeT$~{qG9a(C%`k7PO zVF8JSiU{az=3-u^Y=x5|WXy0;4UyK8e4Ab3`t!MY?>&>jV=GSk5O416%sW78DI}g; zly%g_$|LR)$B%*e{4&Vi^oAICkzWZi6NWhvly|7yiDx~f1N@L>r+<1*xa>QLKx{AAOEm9 z;jbkWV|7ioIfeDsSh{#fVCXlw?SB2zExOaZ2i&<~lY?l;a!oKDG-C$~1J62US`98e z1x~2w3_$Vb$)4P)Z-j9S(2b@L*Tk~s9{;Wj4-2mHAoSfS!a3nultmhf!C58(F%3vh zjaGuY;coyDv$Ent0^*+#vzJ8*{D&Q$%1bgYO}A|{T~b6gI75Th zsu)oI!Z57`NR8U?g1;Un4T>@Ljf((tKfu;xDht9oZInL=Qt`ogyUwHXjwe4uWNjzX zG6gtnEs+^2w;bYULJE#;5S=%e*#M0o>mW%i0v2NcBYG3n-Q0 zz}2}{*e#c0y#arbY6tppd_Xv}sg%yVs$A1lY+94;2 zrl4wrdNG^}#bl7VXJrNo^wG)6%BvTuwi^$wtJ|>(YJ!_5V;w9M0$CobbsN!J{}&Ms z&XRu|M}K)2_N6sEapj7+fy_s>b#-UM_{Wh+x6OV%Q2lT)+$GMCm`4AyFDYC={aYB_ zv)8}%yk6NUpv>~KO}QgdFR9cqzjJ;u3@S2qDK$2&CId}i8pGa45Jkf|l@FEI+23D~ zXoR znb(fgE2&Y}s4Th-A3&DWt&b;2jkfDyT1)DRFBBxtZDvnwa6X#nyC8UCm9ANM1KI&9 z-yYwq8j3uGtpc9A!VazO^DBkS%ue*}gP12BdyK^^lC0l&l!FxtZ{Ct{jsIrJBEt@b zL=@W9#vBngWGQcz{q0$Fs_#8z(KG4PLV6_@r$NgTJCtb+qSZuTO4l#4M+}A3r5pkx>HVHq(!z3y2ISTogBXp)W>qEP zKh`4?SNA*+pzQ4*F8;fTNdI?Gp2?IP2lIQ?o{^#BS4anxxeo9j%O}|Ry8X;u@Iy_ zD=%W$n;KXuEy??G z70L}?HO!3;8Xu$yHS*?vDH;&`b>1NlHIB}0@;)9mw`hVyHca1(jE!}87Zw(?;&zy` zxxJz~Wq(WNFl}W3*d=zC$4{pQO0cQ(hIn83?|rmaJ+vn!a9TJ6tOA_}KV3Caggmli zk))_pc?3hPDJp?34&+A?Nfrp8N)2fEIVBAs{`=S?W!0K7bchQJ1jGu?~PQe?x(5)O$0`=ysL&Z zUcmu+9Kx1*m=GgRByNEAqP6r-BpSYQkG!!3B1Pb1fn_cZ3;ofcP z{~G{pzi`&O;G5H)`3Tk%9yTMnsXNTn|-UTbT@6X*D^?Jpn0i{HSEZA zP`Ns$dkUq-Ve?L1UEMy;VsNL18zG1?zT3povhH4C)j#<%Q+i;vBjPbWJKFr2=mGTS zc9G{joyQX7g9W6!Yd+JWX;E+!Zd}*f-;UT!?Q!A$r<3GBuO?W7BCVp&No6h|G!YQi zyep|3JNqi0A-0#o#LT4ptHh78ulzLH45>w;uC#M{0HXpn`xQui;2$$--<>*ZE@uKc zi7966&Z4;>a2*B6tT!%`FEZLG*XqQ1~XM zJxJG|?iBPK+QMBUubl-!8RJH|o#Vpb_>{ij+Z$cQc@XrZZ63fW7$d?vP zxLRCQq|Avwa11=x!KPd%iA^j_^IzX@jtX>Bukdj+wU9<7ZT2p3sWtVZG$(}sq!ADoY|Q^?|= zkFBUpz#kb}eneNk`%0XKRx+P;qG?=or>k54gq901i{yEP*apoxcNVAUC4`&|<$?B@2c?~`AmK`6>{rKP}6*{@b2Tr z=37qK1o{D+L)n#k2H%Mhz7+K8~E`D^;resgVu{XWds7LDyLSF`d`o7)u zu_SF(hn{w=1#H4w5g3AiP3ZF8;caNm1Yvep!VCWjH*;k%kb}1kmd)A9K6(f}AG+xz z9NU;=t=pUL2-N%`sn4N1*e8`8ZVZ0v*eA6Cz?8mym;Gs$!P*FWq1yI(H5Y1q>DV`t zVG5%KgYXWSKxr5ZhY_fQdx(Y?aLjLmKAQrb2PumDSz)x<#GyiW|CPT|BZdxFp{SB> zxRQgf!QkWq!3qyZ!vfhl7?$TnEEbrZ&D)v{zo9^VxRr8=O2HnYmS4n^7@}#K_ovVL z9qyl;mQ?lfYPbBScC(6AHgkWPE%(kmo>hNM6-*v?6-;DvyR7NgKcFZ*z$S*emsS@Pqy;1H?@1B3AU(%0ibS5fHIt`9 zT`B#HSvtC0dvG9a{(bcKL|%OGGU05wR->xy6me-va`NauMSz?S2&5We*M}Er|2%n_ z*p79NIK$R$AzwJl>J_T3rjL^^9+dnRYt=j6?u>^2ozC#yEAg48uj?7vSy3Z(_fK74 z-}W7umQM*paact$(=l_@L?1DT5I>PMZ_bI>j`}W)6}!MC=tS#*yh{U@6OE;q zKgx2`BG#B0I{9r{3__DZFjhom5?hS;!oAMDEZS+N2OCW_S*M z3t=VMrs#!U3ko34rv9D#yXTi4GJ`#Uzv5<#;5s4|Ve81#xj1=pk^E16iiLmc>SUiy z%QVaLtS_8YKhY=f{1wF6i=X0P*%r5qHB+u_f$$#zkXxfcePAAgm21O8-bkzejTGoF zCfRDA{&Y9|!oHBaH<__HM9=DpX|2$)dEU?M06Xn{pz3+OWl*l(tGC+@^zH>TtEEme^vXlO&^PD(ggt$UI;i#AHHGNFt8tMz< zM=;F5u7)i2FGRY3oNcABaKu}tEeNc(W4s#Q6YW*bI-SBc8Z&^!PQY~iv8#Vk`o3|D z#h>BIuNr@Y!B5CVbr=m;)Du|#oDN-Iqm@c|=QL#kD)ZX7r{N}l24M-$F6sDc zgC+PulNP=$a(3RTmhHoX)A!^~X16yKAsvP*Z`ap-i)5L#^oq#y=B+&&Y(NkC+3qfBDhF8 znuVOnlrVS^;EPYDknPAhL}JPz~?9YlT?C*AdaQNpy7c=47l z)jMl)CzyTLIjp(SLFw&=%*A0-#D*gHAcH!QY0McUk_H~dd#b72k?i{yK6EVM%IR~j z)RtB`Ra~0+!q+-^t~aPp0Oh&U#7PaxahivTD8{?sTX*)~6(1qPCm7OO{7bVOAHX^a<-&5N72|6i z+_Ld@g2v82r}XFntNp`bYEh#?aZ81snP_GQzAq>zv{NYjN}Nr1~yl!qGxO%kmkrN9aZ5K;|@Il-vn!A`3C?rE~jJ zLMmQ(DvH5Uu2&Nj<7`+t$^04-0>o%V*+=(~7`fuqb}*mPLl77$h`b0vN-QNx-XrQ4 z$Gi%*WAX?P9%i4DK)}-glwlf-}{w~@vEXu{Ow@W z6DS{n{QM1FGnsdbCLENG;3a^VFL0sdh-am#ELX*UKsM|`h3~Yw#LDmY{b^JiPja!p zh$$r%B*?$fU+m{_e1?^VlypzaQ{0vC7cu-z6HjllCszG-?;GWfEp=O<48~R(Z%PsW z-hHREYRB%)n&p4ih{84RWh=Iris8n-MovDU5#pd^u-b_F0Z1Ae6%{^_sZ65E++Q-x zkpBUb^lQP1K!kKR6%f1X(*i;7(B^OUc|%9S&&e)Qa+TZ3^X3`oOuw=sfuStF4ew;$jKj$TWOP2HuVKh5T_OK3m?*4viZ>o+!p7tR5Myu(&ZwF%L>XLNf z7nXmEMLQkV(TwdMOI_6@Pb_oh3S+v7c%Lun-0ff*3%qPdpJA*$eNz`?B@s-LS31nA z+<93M;D7FX>~LQux7GAT!N(snK%Ys>Ia$LD@(O_LMTJk2HB_KvLL=EbY%Y@fH0jiL zNyVy4U(Mr|{Dy@3Xwjwu^<;@Te|2+dt%KUwlHV1foof6S;u~hSpeO%KNE1Cl-Rr-~ zPdA!OAzTMptk>_|_d*Mbk3S4w6wknw)f&tmc_%3ZCGx8+S)8Ib3C;^cD|UD|hZ^ke zNGhCLe5vWOYRS=rM8|@z;|nV@Tid-@39FKAYf+NSsesn=tV=$`rXRRMf&7oDsda?u zDb1^v5xbJ^Q~qc~BHI{RyCQf=vsav|VyPwM7ORe9ix52zGby}ONbw1n%yhnSQ%FNS+QBbWLszn zsdi9)S9Vrn3l;|x^My6_3H~;00!5iT1N(XLAey>=klVEVeXs24DJF48+8^7-^B%Ps zvu#1Ha~=^KIgy;TP5G)yxu{092rIR+Pv{ez9J;ye{OTK@j^BKBS#7MfEbn~ESZ20v zTF!_!a&4hBYX+GHJ9mMt>7RuhYS!nXib;;V!gyF5ykO?#+BRV%$ElNQ7xMtj$6pBo zbwWG_2_Xs=^RrgeVmP8`&@|%l9jsL-v0GXyc2%NZvN5(`V3gEL0`F%Wb3y+BT>4K* zc(b)6ft>RJo2@*9=9RI~Gk2z4!LnwsXaU@et^T+QTJN5!-mdnK!wqK?7@pex05$Er z78uo6{;UY#XeuVx-=v+I3QhCBVAi$nfu?oZfpAjrLqY{5I3#@!*{`OGhxpXL-;#Uq zjWvEdH2mYriR!{$+ z5}3Y&TfX-T9`b7H_d(wpcNcbY-Q_vJV|o2$p64Wbi*kDke(eL+3jPaa-;yT}R+0SQ zsNH?JU2^Jp%(wDpyTMZyxVA828lS`T!8-R$M&!|Kxt@~CIQKjM-XlJWtl7+K!Al%&6kFE9`#o8@-P8wY zt}|U1-@z!IMe@<5m`n38Zn}?-kA$=>itZV?%*W7=8jT7nnkhGV_2gW^<`LVPX)9L^5;t zC5^9r_kG-T%&A^)xJgS1(TOdxio2xxb+j7sto+6U^y|eRxL%2!Bv+n_(@U=tB?#In zOy|~wMcH*n_df7htI=3iLOuG%ja!BN{|mY>P{dtD?0N0yU;Bu;l*S5@gU3QELKeC@ z7h~F&_Is4Z&W1pzj_JO~S~xf!mRWdg;wD`@zbMm7G2!7$gk&KUt#+-K;0T(sH=2D~ zvd^s-g~;pxXMP=KEnZP{OOGPGIDs>8essu%&`3dMWv%Gb=+EU+zl$8F4QQRh|o%2!&p?qIOxMp&&g1O zY-~jAyzhY(LzMyC9MX-YDa-Y*ucj>m_z??w1LTkThPTc`W^fUBj$r|LP^s zgLkucR4}oA+@zWAsgcpG@kmq^xSDo#;%KFzUi6kZ>}kX zLR9IO~8u1%nBlqu|0KO1m`RB3NLiswD7cMJc!%X-r3 zNTITYxdv_jp;vGMs_U8)BoaHKVQ(c1Nmo`g#|&}$uwtBV==9WsP+yt|s^Hov9=a6m z3pE8heqbYYEywSU*GNsL2?I7A;B;3wG?Km)_N-sH?XB#)Ffo< z*3dM-19?yhdemx%w(@v)-UeIp*AHR=EakNX+D;CB(fmB`a4h|QD7Lg?T1i}Plw2E_Mca`TO<>)Txrqm(1yO+pDt|kb z(1&IubdsUPoyubT<75gD;r`KYS%;tnu7UK0ag%45{qi<$yQpNYS1!q!1?bdt2>E>* zy1J%Y`GckMxU#|I{1A$f5`h8ffT*522=v0lg&|wc)heuNxtgAt8nyo6umbDV8WXE) zP4@hHm$z<5^V%&MXej|a(}endYI37>S$Bi!ucXXw-rnGo-GCH5gKi>yJbG>$^9pU0 zE&NtL`x93xY?zE7qGY#p)-)mwyU?~6zJ7vdKC)Y+Pyd3r2yVeTD&n1G-S+`s#eG(3 zy|<#XTDJIUfu?Gy$l_v4U84t=jUG!*)T3n3Duywm~x`~;W zq`sfC-?)PoXI|7MSM~e27Df#pDM$gzU z-tPjtNXl3859*e$A{Jq{kaHvb?r+w#HmNUup6Hm4^fO}_g4}z2^OxQ#GBQwGJ_O>3NN6^=1hy) zKA%A+E?@oy=ZGwOB5y;Uz$4Z%lkV1=%R2Tp7RZlGzM!i05tfgH$t6gMwcle6J{%bJ z!_T#E!7eB`zipV~cPdtPslSYyu+0`BugafEjtx5E?|X<(Cy20_at;=oGukLN4uT?#_HvUho;z?>mi* z=B0}Tg2yFir{*SB;Fu`=4aqZ8n{SLObewW-4|II!I+=PG-AzI}Ws}<)k+Q{91z)_0 z;9ctkrAr)CndhJQ-2@gKKN3Iq@;t2U_GRCu&7t`W9z(LQ*86#5_AyV1Wu@+0#apBo z1mg@TM3n3GSJK!Nz_ajdaDh#3Um9&vbQFIq=HtS>bsOCaoGfEYSq#sEvZBgDu|XHi zTTNmmArwK^J|#}A0m8tE&LOJ<1 z>;<*+?JLGP^IE%4Dz^fQqxGRsw23Q_Dz zFNHJpEQaN30gY<^H(^ppTn}bjy~cDTE~;J7sAhhIeWpcmj#8#bOVpR>x}G$eiEuV; zq~Y&C{t%}0M@!^WZwop&Jf8pOq4#m~3kov!>@~UR65e*KY86^qh#ni3iWc{=p2l_# zuD+=T3;i|neq`iE{gJsl#b*yjU5NhSG1)w~`$Fa=Ds}pRXGiF94L#4y7W1X$n><47 zm}3q02e{PrY4b)BZwpdv=w5HIYUmrH7XWi4u9R-;@#KK>kA@H4$I_`~l!p(^uMp{} z%@2sGNyd*`t4>i5vkw5q!pq>|Db?G}-?yAHl5YxY!azFUQ?l5BNc_`Gun_xQR6y~2 z;mNS4QrkhRumb>Ft~PFm_pm>&dcJl4kJhkP*!L=FeuBSE5Vn$3V5DV3DefAq`V3?~fFWQ08AIw@48r#9ITiBKtuHuB~LWxwqU!>xaYNw}i={7TCmDB};#p z?1C0ci{A_M;s^1~^DkV6YsnO5G`Cdhf-3^0&Iv(oclvpsl}AG{!=zjuwuFWIM&;>H zZuq%Q6y`k6<`zr)#3f@jqBo*V;-L;k^L{seFT+-ToaO;`^NO%>@Igb1IHgzSqL$1( zLY=w**`6D3`iJ;+l4kjAo#mC*#!bhv#%_F~ygOz$eIq1OvqY^&*MPJstn=n+`HVSPQ; z1J=%e;Nxn;M`oM*Q~WK$^TQ894NAd_lM*2W75+cQbsk{p z|D`Ki)XO!^eT+*-a8T64+ax0?ejRdt`OseWYe<8gr?#VBAzLSr@Mx+##Z}ygv-rznDLmlCls)ScI5V1ot z1P%`t^Kup2Q6Uo;g$K)3<_hk;PU#`#yMrr^AKB+N%Z%Sr;|lJttdDi$>$=I}?=}?t zIh?>!?o_QvrT)eolK((+(PQ%A&R@aeB}b!8EaOi+$KQh32_LL4_`8-MmI|}#IXi$T zO#7g`BY5DJ#9NvzD3pY(=j@svKMKt;Of0J({bmeFIxlr?vpN9v6 zTJQtbU)D#Jg3dhJ;cqN&MUK)3yss>tD#rJK9wO-bMd*EH6dXL-1F-;9Gem>HGen;` z6BG~Ha=W3$?s&4WR4@QIA_sylBKS39dO(xXR@x4IIZL*qzyS#Mf51DnyDD8|xi}Z( zJc)>_?ZkIvo>Nwh<>Gs2SzNqtf2NSl?4hMaeCo3LhWjb+r#U}B8Vq-MOMI*<>`O%R zB6TsK{D;JQphaXUhvz?K2(H&?6Pn%$=1Q+&Tg&>K zgw{`3xAeSLzt>hKZ2=lv3P(Z~uDZH?q$W*?OL%os)V&|5iuZ{IKj zwThS~ICj`~Zc**$v}TO807rOK6#g#sftiARPl7fV_GZB%1jYFJ9iz>LOD}OhH?V{8 zsa>=z$`7WkB#R$r13(#&ZzS zf#$24aI+p?sK~2fv9yQ5lG3r^%CNpTE3pfsvmJ=>6tD>rpV3f)EN2sble_bPyM3-DS}J#RY&J>?o*gM(SPxS^6Sm0j#=zI*NckB;6^e@ zR}mhezg+MJT~-&vDu#T2B@oKvL0Hrf=gMmj1|CpY%nuA;K-ojp4mCLs8(P{_M7HH7 z_a`1H25e|>iuJ`cdY&enksAjGpAG#-{esxr$n;;8p>pH&MSsM_GplZ>z(SMIbKK?3 z#ohl5kxC=uf}7&&PtQ!6u4jTyv}#!%TB=p`B+O-1>ao~E+w!St zlks1lSU7myB3#=Q)f@ji+u7bSn|>?}83&i!pe(kV9p6RjzNm9myI9agi26R?bqN`n z2|6NZpYMn2D|b{1nMWx?Qa8HORWbkwBI@|Y^>kkEF@wsUKlRKG2Lu<}WAWYF7C^Wv zUiV7IuYGG_KK|5C|M|Gh=qaR@K!_(CVyVX45UefexBQ5pM^6e)^{y1)PQI&od}Q}{ zK(f4mi)r^}4oJU^WB7&Iq~MQIS{%s?Nfdiix>0mxU5B^gi>+q9wgNRFu3^#9jCJVC=FY($53T8QNBw zw&JyCj*D1ZB2eQVNgmM#(;(tT($K+oZfKAu@NCHZ{R!o^5?e{S(6!nXteus=YGP>1 z+QkP?Qi>VP7)iv)HRW$A>Ay-AZG!0`otD}r)x-NSEF-+r=uK{xP>bMNg&uq^5*lNA zCrzR(m~aa>_Z?3bhEqAVvK0Ex7b}s`n+E6gv=F~)k@8fUUQ|cGjst7;M@Uf1UMasz z;+hgjNl7C;^Mea{EmL(jL~ca;z}91fbH^sW6I@PBEOE8D`u&3T2))G}_vvWXnqhB7m-sgxZCq>P%o?fDswwBLhmta}xN^9lae0X+EbfA2OAfS(4EN5Yaxez#apWBl|FHsAjl{$@phM-hs&6nGL62aBA+wi@JJ+ny(+$?m?yt3+ zFNcW3M6fC0X}W)e(0be(?DpJXdvyO*?7@6}TB4}A<9eIF0ca+LkGk`L)Gfc2E-sOt zf7=D+;B_r&KhLj8_u}I+)gSAwIlNMEj#})^wjbF%oOMdE`Ffc=bH0$0Dt48W%w6Ml z(`KKX0f|95eu?*k4jap&#$N|f6!X8r77t4c&OY0H&T|-**7=2>eK)&X*~c{eX(0?y zxJuQoM$ydipRNku2cOobp7CrjM!HtQ)v8-@euUf=}b z(u9mxd8X%~CU3mgTj$fFYX8!k9Ig$C+fSgeJOSxBd@jC87Z8n?ww4rpO%wb{(pR$6 z+|suua_B^0jntTZM@alK z;q4f}>dh7fF*$bkuGRz~@QfK7uFSydkLOQxyl7c+WmS^eL&PoQf!a;tDvrW_kw}sS z85ispU$1eG3RSJqrwOzFDtT;bZ6*6A?DtPbpI__4Q2$pOm)&lG^n|OW7jlkuu3d7p zxpM5v6FkA9>*80Z#Tcu=L(!u)1Rm=R&(M;4`EO?)%j&Pg@EEDvQrJZbZoTtBR)md& z?OJScfc;@g*=As;SX(B%SRf?VS9J6heDj-EyO$9LDZlSU2V!$TTM?^cq;w$;LY^p~ z=?fxPJSe^{*@Y2i0#_shBi-s3q;(S2y^n(j&6zI~RSCn08orik&6Cd2f0gDttjiF) z>tN;h0kMm6P^v4S5n#(fIAmx1?57A`)zr*)=ewPJ<1>&e+2ocs8tMPxTm(&&}rYccw;ps*+ZOi-TQN&^6=q0^ih>Q%gA87Oky;5p1_3VuT#z@B zIoNEZ!VYR4CK*7F(w66|NCylQALJe)SLJ)a{v;FQDdo2fd>=?C!v$jF0%{>`>XCmL zVpDeeOGC}j8#mUABamWCet$CCB&XG688Al&FW^Vlr9{lz5dQvKrk=p=6U~imfW-O# z`{y7>o!jqz1#z@mTU*nPMt_LgE9mn%@mkLVIkz#x=)7uz6(PNIMfaCYjB{1lEOPmW zSQyD!&k*>2!A3GybcO2IWl-rSc>FEq%4eM~6e-U~!^X`s`Ge-W8C%_>o?cgVB&^A$ zXkrb^pFwf({1uZDoDIx3BnTu>l2e>EL)FY4odk^l=f5Wg`5rLaH*4fm5*#Up&)7HmB(Mw0kd@D9B=~3pw zGx_Y^fA5$VX$KSyZM%Comj+%q;!oK`jkgB>2JN*{i>pak^7UJ{b>Z!5Y)vm(pm!bl!IP}}XY&QfjskO<8; zN5xXF0V`D4{G#gNy(4lg!Aa4^EPo#ej&I0z$Xg0XxtNyB!40i`z6&FxII;h>c!+>e zXh8?qBJRnPSCNsCSJr4}Ig~XFN2u;y@vcUTBHEz+#`%5VZS&&t)8j&Bt#&acI=I6n zl&4d)u&dFE9^qnt&I0HJpfTURjo){Bq;AsC0aFf-e+;d!F?5H$jXBe$$3x+-x z7qBTx#2h;godZII4*gTera)J18)I__;lA0$l}D7LdT3+Rna9-Yi;v{FjW zS`%6`5`-UCXS0!<6%~;xOPp4mqz)$(nJth+aKN>?!GchEV`VPS$R?~5s);glJL|0m z-O3N7k>6phXm-%7qO%#`)xVb)$@4GKe&F~ZaF8u6hBU%1JP1WQA|5qBOrpHrevI>P@r zYGX#{3k_jiz0MGAKm>4k(xoTukD1Thj7ZY-|DgW#@z=o(+cZ9D<0==8@WV|$e)g)3 zT2+e=M=CkRmy6_I+`bNIHKXoz*e3LbKYgG!@*&Z&G{#MAOK}xlN?~Pk4HXGf$K7U0 znd-qe|B;&g=M*OY%X{GfOcfmj)afZY5t|Yc)JAx(^Ey?s@}VZ3^JxOA>|23Zx$_|m zYqvf|m=B4K?g?_#ti{v3TPqDi9r*i_T?|h;6Hz+hOerD!_Jk-7gZ5Ifxvr^>@$Y!i zO;-4VJ?qHyK$S-XBi{ZSJ_GUVD`FGJGQ(z#w1TD9oF{(0QB`qwzNR{@iXtBZmfYhY zr4@Gx^pm@a!D8BPFq{HkVI7*bp4QBqA4>8kSokE3&sXZru*xKimN zD&pY^EsG6mouT7;vbZibmXX0kHLqnCK_r5amibfk2E|HdOeix z7^D0Np!i;V4F=JkG`b5e^pfZdmnyjtL zdh;z0BbDaRXLjXJP`A}t429>#y%K&f2ah7@_aKB&rC;~OUq9F1GPeDRms(W${Q3)N z%WC^F4{<37r{w!i7^0=vQ)nWJhKkNiPg_e<&FlAlAInq`|3j77Xj5^;pUrbIh-VJmOrra==zXtXhsNDKc*b4X&9PS?hQXGzEj{_Wgm^#uCZt?K#cioazSFd;i6k#^DC z5q>{AJixzB7D+Mgas*qPi}idk|7>CN$j6HJ;&2jinW1e*$xw=8=$7M1~ z5dVq6Zkwq>Sq;9F*<;6x^nr9%@4$-G)mUT-6ceM-8zhjLkOmqr#i!G+5&w|Nch{2R z^E7}XY#)*2>gzf+0C5sve@$%e;Vc?x_S1C%taMeo)d2Y$zD4yG#;?oCs7pM`7 zW3t!-F|~PXe)hF$h$%vCDQI8pQ)MZ)Aee!{hv%kTnBc|#%RQk0jbKj{z`6K z2azUT|MM5cb4kMYeAP+)#{Amg@9e7!kkkDio3Jf*|bl7E|rVxp!s8rRJ`MFW;2^y7#E!O)t_Vb0*EYvoUS z*ctp9?gwOSHoleu&Kc-i^A%s~J@#gpG;aLcI5>mv#<~uUg?@u@T?ZL>zWd;8?mD)e zVZ4`Fw*-<}Q=9KuyBn~lI?ipxBw7+BFLO6Ja~2;v`3^6t#ZNTN=|Y})uWW+VdvdFP zRnNrY`B<_|pM6lo)2)jJZ-b&442h-g>`Sa=cu=|IiHC0nQr^YyKwDSNb&?AX6L(*Y zIBn&+R_8uTa>MyApF&E#EV0~nm1qG^#+q$$!=>5)^FzYKfV&V-^99mtNjK$(NOU>( zye*#yV3u)>o*%CYQP-;R)$qwn?nD1Il>XL*H(s0b;ANXgz{9y5Q-~{NI}3bXCURk? zj{wDRjI?5)1zi*I4_LF~$r;77+H2Gy+$0zg967c}-!oh7&Uv}#ie%e}C34Nj{4_w$mtY>K;d{poD(GC}_^(LI(yi&W%J0)ZW;Pql5lbKX95`mg zns*0;tqV~LtUZ8n5CT}7>Lk)P82l_AIHlAfS-RRL^RvK)qs#voWhm(WW^AXFT)#0f z(DKJYbUx%eINXm{iaeD~bXi6!HCCf&n>pF4{d9~WCui+Q$NnrV%~os6)coRkFrhre zwEz$JJb*-QBj+ltHFAofoSBu`!+)a0(QmKMZ=Q$RGbOh!Do!sXN#;?bsv&4#LURNJ zn5bO&H#b_ND^58>75tZ%p%ly{{YkReYX9~ z>wY;9?78ClZ4wLr_m5>WmHP!uXaebbn4j<574;{1Eo!!Mh3&!v(*z3g;I0|(jgUq= z)_0){ktO2sbIPm0>#p<}2OR0u@+4&0k$!)(w+e zA98Y-8Ac*4ezMZf^%fk;-VdJ}6$Wjdf^y#c>yn1V69^WHTa}|W^usiuBaOhi`j~$n zrSr{Cj85*Ae3;*VD4t!iV@)&u=<@Xw31A7(2dJYVrLJdd2=7(9t57$>*)d)tACyj#r09WIr+=p3dhV+@EuFbP=63P zX{z|e$bSGBTU?vF=$62ZzYIyXKQMIV$O_3Bn923yv+AR4(5@dHfB_$VH&$RROkNvS zka0%(L$xjQU>uB56`-*@^CswEvJC@~hlS?~uYtH2I#A&kPS~tKD4TZc$uK5f&mxD6 zk!`Am&OPFXrmG9S;tQa^YUdfX-Yma}*)iPb4^TJcR%Ru@_8Bdw)^q&;3_i`va=(oL zOAwt9^e=&c2^kZ#BvKdkW9uYGHmDU>oBn<=@c1nK6UI>zIbH2JvIE3jw@D1XSo>ku zaPk2-YtY$?g~7hZuwdGjBY2lK<8Q+4%b^J#hag!bP0k%gY*2xvGj0UKxnNf52Y9yh zVMaoE!SK`V z-l>Wdd^P;s9wMmbefm#!SPrvf4zeuWCpFIN6eKja5nnU@xNMY~WEWCSTNO=9|6kYX!Db1xdfcZ|O1XU?fDfmj~uANij54Z11Cdz{Z z8O-uln{Ityqb2$$lB93Vh;B-4m}M?}%UoqG*T;pD^yGb-QykJ3pjC4US6$b94!EfhtGZ^1Cst3Q)SYzFT{of$AVWqx(b?mEyy=(o#2Nn!i>71i$H?*Qdh<<#V zcjsQ;T;!j?YjOmrcxb3BR(KylTg)7+N-12KkC?1&VwV0V{GN_#>Md4>iqy_5KCjsN zh;`%|<<#{2pI5KUkAbmLh3Y*5!_D*^-4&wh4ORd0Dw`KF+Gd@4Qq(x-%lV;4_J^B{L^M}p||6;hW0-q_A z<9i-20mbTPQnm`?;Qf1J_6IlRhb&gE8OCST9~ekU?=HEo-&AjM_Qd(D<$G^tyA_Q3 zbW|*80Yh3OwClg-zm@i!A!6S#8BlkyEiZ#8pzZ^;E$JTN zBO9NP892|JQNS?f&K<-Ip~$7kYT+-C{0`TDt^)90^2aFGtH1VR=e*Y{h1G!8yk-Wd ze}RA0H0n}01ucb$Zo>L{bJQvrJl*|B-C8lIydhaeB%aZ^Em`|Is*O0?vTB>E^P+m= zB+ZX3$0%IsRyebVX*~#v6@}8H!yb`tGLtrHqWU>VJBT~JVaj3R)O6lnlT?x|lVK{n z{T>wM4XB{eDX<9*dgVra)bFq~_L*Ts4WDNRoT$hY#A%@|5OhK63d};t>cEK{*(GvD zd&Cb92@znG-emQg&iC zf8ZBeqlneD5M50b1CiD2ZIRzaGk+}OpQ*`q1YcSWw8Gr zkT2oV)uj>>+%=;&%eR`Ke{Wi}Ur!D0@>_7sas1}1`Pt~p$&~RNy%oid{hpJr6NiE; z1O8nf4VzpF1M|o3uq!g-Hv;bIS`=8kWn`$mD@4?vCFH-zYXtCk@BpT7?pKbxz_cR+ zO&MrWXhL5M>w|hepF6X4FsJPh>B0c?6 zq<`^Ag73S7f?;JiF0V}(yyNWpdj8x&@7DVSLy4on{=EKBC2sGoM04D%t>|ZbAOt}v zU91aX6)Z%O?8)!8|-hlMIlVNDyxH-s-?pQ*zq3R;}DehwWY{>F! z(@Mn*?$Oc9BzZLtW6+b2rwajsPrk?;S1%}D(>Cjh0xVTy(|uWHVRI{_=bLzu008XF z5)9ysoEpqLW|;Siu2tL)vs_xL?>$d?4-yp8#vw_9J+wFJH+};yp(NxQ?=nZb$eweP z-G#fh+A?$OD-#g!He^vAv+jMfpCMh+niG@3e&Ak(Gvk&c4%|^LiU{PeYPtF%$0AYI z;cGRsu@~W~bToe%S}Y1(18Nk$Y&OTv9Mgq&a(8(*y3r$1Sd;OG4H^ZbkK}j9$C;=d z_d_?>bE|HTsu=X^yocT9nHj@weafS0P>YhmA`KKqd?^BZpsvd5COnItgGgnjc8~EB&fBMc1?2 z-6PtaMFoPSyID%;x7lQhl@-s$dG=CAf)!`ThVkq&Le279=^h=h(ZF|9kfo;b+_hjw z&x86JnE|jF2hnfvkKd0vw2>PmGKn#Pi08RLHqR@AL9-iqXsNr&_V28%SWTpDv2HBI%M#HQeG&_=HxVBpT_-t@ z7&a@5L!UEzfCO*MwcFX|Pr`+h0}hK7{Ub5g{4rL&Fz(_BAi#M_v@(5)nmjOsv*V_G zz_Un(Gos(Kj}TS!Nh1S{u>poL)xxm^_pDE~j-w#YKN4>FJBOU49M6w0r+mCw2pE?S zE-o&HP5MJoo4C!UGZvHGqkpgC7DAgkD_O3BT|=t*2Kzqk7-2m7I)dR>33Yj&+3t-A z(oA6CO2!Ubtb~5vD0ihoQ#j08ym8ls&gd60UIk#Q@Qu*v`6gBB!!_uP{_U>46P6?F z2SPX82tEY}^`#-(cj!9Il_K3~{#o|`+C0-g(uMVW_!kW?zd)+gfC^r#4m1TK7ZlUVcG?}pbm zoVT0_``Ivdh@jdTEw7^bqe9R&1RIOUDijv?qsT341;Ueru9T(FQ;eG&;SU zM>V2sMY2=rthRL4vo548H8ViznP-{J2rcW$eu}uDJ+u2yZu0jv=rZP}Xp~P^zLXE5 zWVW0cNh#TBFlLZou*>H5-MC9y1l|vi{+Xs|>z{$f(^E|nVT1mNrHdoI8Dfm7*4>~G zHWv$Qumr=&pircc$lt%YE_{b;h}X;fRRCpI;6=yx>*pI%v?T+G? zzoFS#cISV#G&`hZ9Xa9&jh0qxbP&5JrgkpzZ6@a@Icfx984EbH?$u`r}KvlJyD@ zEj7MBPe74{$`&r&)A2!x3$@Tp{8Vo5V|D2 zV%runTYLeAapztV6fuX361D+(fDs!)H08!V>@t9^Z0hH`bD>PT$x?jks^4#D8~#l# z7kblkuC$47T605q0wIeP_!AiEbT=TRQzCk2;}=_M*=ew=#n+Y^E83`>9z%46#3FZk zMcCM}pO3{~9Z}XMEyTu0BS2j%R_tZI+W?BL1Na4nw+BXnbcHP-;za=zk`ZNF{6>Hv zA9D&)iq&QgQM@sw=Hbw4=H<}`_|$B7F2%PO`v$gL*$Rc!c7q~EHhPRLC;0tzcWys4 z00s=`8Ttrku!U-&w_|vG7%dk1I%7A4Q}0qADXq7!UiVAVa8osYvMW#g-mK&CLt78b zJIk^fGvWsPEtWnS#yjdyTC{9; z4NcCpOU|`)LPiIxW&bMFB*ho}@Kpe@RZbKb9VK5MC$t;#oSY(0Jp0`BkUM?v==RI) za!#V+IO&(xCy0IGs%Hi*i4!Z{?0tU&8ebhvnp2`)@34IcPj;U>ln+|ll?89LH#vG# zm1iCgehpcvwd)U)qlD>s)tJ6z%2=u`?AJ$2BOmhjy|g9~S~H1achB`%T~W|4FepE& zAFB5=$7bEVRUf$NCD=TY$aoTHplRFv9=Wj9Um*DlE_nVRattZ>v8hxuVff@WRC~Az zd>!xM!^sJ8R9F#n^-Q#S3y#mWY;^W~$K0-?0(TcbrZuU7Cp;Au2l`~+Uas!YaYM#9Krf@44RarIG-G1(xTVGyLMdfn_e<(~J<8h2R~KHcZ&5T~>lS ze8WN!d&!2A+#H;mZ53hhe9))Skcv8q2AULI7Xo?{od6vsy#!B~KW$L@&#*cN)L%Xo z>OWIf-gmhyN+0Iz8MfSm@N8djh>BL^j?y*u(pvo*<59Y~fTBCA+tdp#CVBDw5pGj1 z%ixU=0X)5Rab|F8VprTta1xi^JaY}Qbq=<+2s@1fTr4Y?tD=tC%f!F)hCUBCHHdvB zqEq&OA#$E5`ZzT%aq8?Pp)+y~RP3!ekzR#pbpElUNlDl zOWI+|B5Bb-=-sCppfwkAtGLfdaqJ&9c1g6IC&2B7UMU4f*8A++j{Hi5Z#KhO~z8G#oJ}1yhT#lvPy&U+aQ$u7(NY~XKzA~NHFjk4Aof2St}Z{c&~xo0Q)>Qzv1Vm zxD1i-;z(P@j#DAdZ1rf!Iz;q_KY+%``_|U{p@M@%&9^fHB7XL6&UIyv)Z@Q9&j#`I2%S*t@$b_)<7K%`jJ{V~uQn+Ww?*ZxVZVftgbMhr5MueZO9_ z(Zz5pk)=lz+&$T5^NNIH$Y@(kFERu!cyEh1jMcc)i7~wlIF_e#8uMa^K30#GyO85x^KO?J996?J3g2dvjf=(8 zhmo`GwMRq~?v}~XvC%)O*B)1_o%{z5D#u%m0zId-PL>Mv_;8|uqcU0hdKV<)zqZH6 zN)>wcV79MvvS9GEFrql2J+it(bc?Tr%*ID^e8|zk7bOofI|f1`&)MQ*khvCVi;G@> zW3$!!8#S~)f6Zag?r3(-&t$W!!1KY7j~*-O~_i<@jf%>SpCKGARrPUOZrkP z^c$0?AqFBY%62O=@^JTS=aaIFDMmB1t^Y%*=qi z61rNgK@HoMX9>e^`B`Lm>xu9JGsk+)>{-~`Xuz_z!ggx}JfUQNK!umZ&N;1tgFZN&gNoYGq(1-wOT-5QzWG(z_DS*A2D|p<&VxhlD%w10JEsI0y^L{k&L?Up z-04$veea;hnLIU)J}k;Q-cqJ-S-w`ug6+YsRkGCuZa|Xh&o@glk9KHvp2j9Z&c^kf2_#4JUF_$h+R?Ggm{y7 zqQbN>HNK|6_d;#Fn@-_o!@zeswJcm3?ov||cIvm94<-Bj%w%ZBK>t3d*}s=^0-taw z^QJSf$qNt{PdoZ*RP;V>ZdkcP%}S@x&DH*J zF8fz;seRrD`he=cg5r;h(A*`^5#ZEoI8S^vWN&XzxkotpUtYXna*ExRVl0~2yf3yS z-p~9=2CQmw()-W-tXcWs-G%Y{lDAOhR4PiPfc)48?iZ@2lc#jKc{t~B^vM;_ z%!!D0kvzZ=!~d7DI6LUyIFim;v=fBnN1ZELxwf{4P_^nE&K;e71g{b}3vY(`gJ||` z*b5HkK+og`$pGncTxPmRv*?XMU`xb-CMI~*>aHrX3eh!>Y3H=_E-YrJAeDfizKyxh zdUy=p{VQffKa;Fu+gt@m3Add(Wa>A(>r5HPi7NonzieaEBC&+WTY~ZcJrEmaLajNm+-rw z5V>rV0XmHjfGZ%|-%1eaxoW(QRYr)5A%GzK*t{% zFTs>KA(+U-^}ToJbz;s?&Wk{3D0*wsNQzWul!<>t+3fOZ_tni{B}1{y%*>f6YSdN| z8;#>%tW|&j*AOmj-AM5OyzkHL>=rd|_cAlZFYudRIcNe}xxG+Im>~p5Z>y|qDxd zZJE~d2Vl!uC?6vM7&t&%Qm(f04j^Z-11N*+82-w%hTw1*Q1;`8!jHv=RIFO~jzyJ` z!BK4*p2su%E&YVsX1(jWdeFN_64J`kq1dRsQzGFeux9WepwXbUbsNfXu*M=xNYnz| zwL=S%l22^~St*G9c*7s2`(bMET%-^&a@y<^K&;FqyGCrKoyGwJHgAqQugWe1Z*GK+ z4lBF|JEz4>PBGN);=QRbf~E0+NMWt4XN!mMoKSDRaKWKbFPEvFP<87oerQ=9cLA9a zRYVg45po1q0Hc*1BE8}#a(_ub4UovY_Hr}yz~7Y3qL3~6_ctV}> zwgJ1EX*|H@M&BA>{c*3M{;wii>CY6D#|m5?WG8sl!Zu66%%9?5q6-S!=N}YB@*nl# zS;*_h&p#1Va?-Dst@th~&UUhLSg1_2^^NearP3AomO%X<9lSHp>)X9vmo-OUY7Tc% zb57cy1cx65Js2E9Lh_^^mz5dN?!(VI8GEdvnj}dWI$+1p6}P5 zimQ0Vq2&w3ALkzp{_;Ado^kfRNl2DDimaWe(;?m-B>lYDYJNV9zUSy5!)4<%_BOswf>SIdt$u{QkPXs#Jmw zKNFF5_&(LFE}^y=x~eTaHL5g#OIS=f$XkMzk~|Q%BmU4KYrb*P%hGFd5p`1uLUrU< z?8|wFNcfmu1%M0(izYYRfk7W&B4&SsaH0dBMAC>P?h^#f+c#{}Z0e=u8FSVWWA(6KmM<6LN?z10!8kA^m!cc)X%~_~#E<3Jai!%61I4;x_Mn44K=jH=Tp!hup z)=jVFV-m1c*l3z6Zsm$Vn{ys8K!>r{Ri`%Ij?QIK;Tpg-^*A_qt4o08^)X=)1(~(fby;}E89?EUsnQ35k-=%evrAMxrTXAdo(-fZ!VQrq+ECg zl*v;8(YDrJNIvvOOFiJU@4K#<1{`@MFaR>k5Kg0g&`;@zO{pzDE04RNV(+{!21g6` zs(udHz?K~SAoN;88sMJ@@|Jx=itk=kasrG-U3# z{77Oop^JZbAD-Xmp$?_zF34~|1Q^xgrS=+Rf!g7QT$qcdK+@%hs3;$iP8V99md=E( z6wdi@VucJY+79l8EyQG9PMPuG2|g0ikw+nF3vv4**mPlV{-Y%V&j*MS%OCwmLVmaZ z#`l%*_$q=v%m)3e6{;D6JJT|*9`iAjbGaQy>-)*WZUPJ69Y@m zf*+yp;tdEcaHWmkAbP0N;fl{v@#;~dT{`P${t=uNZwQ8hCxaAUr~t`68;Ra&NU8jo z>GtAWB)m)7lA);81(-qvPRE^ZiMrFp+#my}xp%k#rDMoPP`g)>0Yll5D-OzBH_j;Q z&J8M<677h0&8`UGyD`y-->j>&hKq<>0(VY~$COQiF!9BuK6n|``l|GxrJJAxp1he+ zg9@V%SynwO`^+UWgo0#gi_4B?_XM~wc*(+y3hO@vEIFd){MpIXrvBlRZ$NB=Fy;yr{c-vpuds}yU znEvtBa{DW0i(;J(#Ve+gy#0U({^z#G^e}`TWnA&kT+VCn(B3y-t~WFb%Kjw>)Z2Fz zH=X8A#x*!L`@B3_N`z7RR!N&foz#Qiz)nsjJtlNBF?1)<>N-n3OhCH%dj4W z%vQtW0e2O*IZHg`CJ!>!t+|#;dSi(t=#jJY*27!$}}tJY~n} z`diE*a$Lq9!K=YVn?xW((?=xI>PK-qs6Zn;B&*8#)bZ?74TisK7UgEV4N5{yMYdKr zezfA`6;V+Xd@{wWd;}tcTOYlxN6DoPx$snq0SeGDq@@$+zaZ+kG{C-)2%5(t2WeaK z>IgpMm;DTZ^E$a*5{EBEBug_9ZXbb6qUWIEAap{b{8qcWaOl76D3Q|Pi={}MZA+oh;#}3UxVUG($Tir~yt|$$|5{V5b-GE)RRE#w1)_cA zJ023!KXiP5SOr3MXLX!u4dxY2e;|+F^PJLeyPFgBpb6>DL|H|e^EQ19KGe?UFUK8r zab6rkeb!Qs%YQ`L&{*Q>wqK`2>P3(Idn*2qghv_U|4G0CqQdp8*Y=k^&YhmX35)-_ zAjxudSbh?8T3J*9e&Rr?LkSX}>kytc1ik`}uCkRYuTqAaoeeU2+6_~O!N4D%17aWQ zEFPf(X_%t^&iw3D*MXXf+Ei^NM-%?dRGse1JT#_T{JGO+KVej_)AI^?+N^Ff%1*r9 zNX5kUuzXTLY_R1~Z%y}ny)DK^y{+ubTC2n}*N6CPh92j-31NQoi?+&~kBr`!!iN|g z#%jT^>Zfes{T8=npW~UtPmpB=4P7XH=M&EAy?(=jxK;CM@%CepXE}<7i7LMFKf{lO z4i}9KHqYIQd^)G$g4n<`s$(EOUK#xhs#u=>@M3&wD-~DM*tP;6CIj;X zQYx&AAo1!}PA$KrF;zg^Ms14TQ!ySx{HVR_!|0Q5XUi4}1;sQS>A)Gswe5rzwx7@$ z|DQX~fpc29rg2H_5j4M+=$OqJ{^-AWyep7#q(gpWOS)PiajO8Rw0YA zl!

sJMSlN`wV8Rn8^mj%G6w10kv99TL2o1lt$#E3npDZ^HBsHB_%twq9Q?e!tYN ziVB$KM8Def#n!48dGH51j^)76lu-bd(jhYv2d-I~E)vDL4hNGTf z?U%#xw-3Wzb(6LvT5j#^)boB9DH&vS?)*7`$OydXQLC6^du?k>c6j&BWUHs;v3B#j zcH$MboqAV^yY}mSPL_)Z%W>Ejk-Av9Cvlh*1g5J_sK1EY2VfAFGObz4W09|WcNEsb z<~HVKx&IDYMF-gdeCV0~e4cnlH!KLkjw1aN&PWUP)&e9}k6YrKIYjG5d(>HJc%x=k(g%ZW)SNS7D4x?y(oVzCJN$|sLar+Rl-&3Eep`(1qJP9$2}skO zd7mdgGRGnzYaGd}S48Ib5^l<4oP_%`u|^E_MUB$#)J=uQx2+aUCG~%i`nf)9UIjxfr3IoF752v3|h{^xQ$q+Bcu5c zfQ-ZRvI;X9PX;2cR191`j{b3MP?f#65A=_A3d)Rz!Odu(sSph$J7#m5gR*$9*oN#e zj){NL8s+Mf+|BGU#h<*oZ-hTe>@)eH164jQ;!$7=EsltjkVpIl&SU{*-k7yyC={E9 z_Y$x5-BC?AU5<-9b>=tSj}$uZF3`;uI^=tMGBW7Le7itC&)t?+y!tdB{Q|u1{83=$ zyc2kM2-|G01h>B)L20M*H`I&AeFgpkV_B42UnqrwQ4^HBT;GrBnS|q>!$?Qy{k2!7aUT3rL~t7SnGQax$hL|Eyv=(}10b*P zP=Ib#z}Je-q+t8cISAOolruYS;-v*4e=RBZm>K|dcWrQkf20ksS$ALHAaVuf-hIQx z>(|!M3$W!P&@$jI&Bwn71}_F^KCxm1TNO)|qRo;rl^T;?+*@)0^h(b7kqImtj|75K za`+|A{A`SuegYUWtbtfnd4# z=NsXuHZ zLfzN{b=}^wCa0wy*0Y(pyUECsKJe96x+4gpd*R~pyCevwe19JNbVVA=F7<6$$?Uo& zG{^hbKAV7gPv@t3acLJIq^{PXw0lGo@^8yhh{V5v=kImmrO)C{&L7)bUf^)Q2w&r{ zA%_=BTv_fOxCELvtxvlcR@wcFve^CcHVxE@GuZk5a-Y~zy;P9hPDCu2H;1QQtlbY| zqhUmhPz&7r1JdE-fY^tcLTr29>dDvjJ?Im9|1A@G*(BB>Qr8C6$QwdBq^yVuA_RKl|I z7i5~~te>y}`mC9Jwwj4qfHCJnPGp_#&V&3;+jwc3 zdv?W_IVv0s8vt=#)}4_xQ1e&njJRTPk*&=LmwHXu=-m@mUlEO?M*eMhCJl>dS)l=@ z4(W{e%(g?_+j6v(NSA>@$L%-P;fI0Ni&rh05Y9dSy@1aA&_C+{w9Y#bxQBrQC~9;? zs1uKPiXKfH6j}^{Q?Z>}KV^q;wjwV%2$LHPibMq~$n{|5 z>%9c-RI+bQ=+~r0{ozWhM6&T~DLJ$_Zt)P3d65OS+%!faggp+Td+ea-%0cBz`=vos zHnkQXgr!r5XHE3=FOguXIDjO2B57+Wzj7@)9z3Li+31m0g3?DfE?+&c#P%2dJy1Z) zNn)KS*fJH$D242-cx1@KvKADJq^4ZZuph$kx>+5n@@HKE0VA=Kc zFJ@{8;Uh}lliLjpb(H8s>@Qz9E50*wznRKXj0v%M+oLcNO>F-3K`|%s6C1;baby4K zq+~f!`h--sb6#(O8T+HQc-)pU#S_PcQ)=oLKy#~4HA^An4*6Kbr>U!~wjTCD!BCFZ z;5PRwXDpiD6lOO@=DJ|vq++Bgl0xu&cU3-UW%Xdg7GmMg)U(M6bHj0aU>t*MS!L?~eL$CS(H{ zh5Rn~&Ru2?;`O_OLzM8RMOUzEutj_$qIvQdt9~S`nZG<-GLq}@X{(~gcc!|0PHfFOf;_u&jr?GEMNmk z#u*zHmE}kk{?dxJ;ewVb7PHWJ=>>LoQ_z>i?BQ0KjC@#p^c9RXhpMGKSie&7whgzyf%=ZLb ztIQ4s8@7ATX-g)@rAecM%@(`S=R0v@%a12b#qAM($u~7qkfrC!jJh2?H|8L;s~5X@ ze!s-Iwg+GSZ9Uoj;zg$?D>$`O;vBe={RPGZaT@53yH$UNo1|w!w>GX6h%b4hdyV2k zEyc;tJLG}b{xpQYN}OxJuPrEFln{e38C2q;bawmLvMe!j{&XKPe5VrrQ!<}6i&pI5 zoRA4$bci-wyyc?MwWq0!9&9fa?^9CINy4GJ&Hcd4ZaWeFI$6Hgw8ltVLqe)U{XI!cXOc>bIgVj#|Gbgr_GEU82~cxAVUsQ&@5H9 z`QLdW4YF)K;<@P^M&eCHCnd>f8JBu|6YdvAujPV6`^F2I8GPR<=~kP{D_s;UtyNX- zw#TPbx|0hIvH_bSysu3UwCDdg2!MCVhPZh(-wR3$E^UKToDs8PQY%E(!w=%^NBRbD zZ&+ykD11KnXoVcMq#Fw-D=_q;Jxt$pS&^*gpug}mKnH>?`;uiG zzH|Ng`Vn*+J!)yNZmnmpI{6sv4=f$T0_|_K`So1i=9pL%@(7mwHX|H>C~!fd2f__> z(?Pv|_hy4-PD)jLlU|qian(__E=g7@E1!{Y^D zA|rpP4!*pO1Eikc+oJ^tQ~<7L-7ZHg8ldkTfj)$DKIY*|)-PabE#Gaf5W;M+oLsn9 z9s*bLSJg7vV)j9a$9KLT=HIdX(mt34>QMLg$?Fe)?*S;prk7P;D>SXrEc2j1#t&My z1WLAdj`f_o3|W@z?vAereO!Ts&oI*ng~B5EvU>#y&^JWs)9x&NTrx3iDMj54LOr4_ zdRfwHo9{gtnw5j)SBs8w4}jW7d4a#27J+tP2LXkr?G0NrBgOPylnUDP$&UrQPoCSE zFAS3A&!lhj_V!U{W^|*uSlZM)Y;^SOP7IkImah8W1@N{3xS= z5P8t7t0xb?1{$_}b_(xC??UdvG8*2DZs>9V_SYb{r6iMn0$DBSU{A1yxzCjGPkB}M zKrT8t9)v8y?n^Edzqns$_q$y-&L`v7^>SCt^`b+5^v}(2TyI>t4QfRRr=LxAmUk`+ z3y4G!y#v2_k%9xhUpU;o~kV=INjqV=^xpswra!8y1BwQEry2A8mAMMPo zrknU3#0_J9H4eBylZPM35`F0o2UTBGO<(*fcmo--N}#)MaP1Vbpqjo9A4G7i zmlm1U1YgVQ^}iLDq8@;|WqSce=zqKvCWJLUwp+Fk*R9vqv4A81u!kz_n^AtgaP&ox zMbcY-zGb`z0!p!o6`hn^>i+!96{)cFP!v7=!Lj{})Xp4j3F}%i{X@1opz@@#6rl3+tv%YhKL&PEJ z8t^C24fL+JH)b6o2%sW1H0#6hur5Hv6OHrB!?-YKk*&~_C+x0{8roQYiRzS>F!BBs z>3VyDj)8tfb}F01?@S!FZNHc(kt z2pFZA2RP^Zl~-S8-Q7y-tBc6BAJa<=F_A12GppH3=Vc;r7hZ-5M}DomxI%#3^h|Mx zDBNNCNki0^FEcfOB3FsFfra@Z#}iz%?k(q$d(ar-O}?Kr;goHB~W|ZP9tgoa=&# z1WaFa4RVp|FWTi9$Ue)exM1Wa`hGPBH-ED)<~J+az|W~hd<%2ETWs8V!XJP@YC`8- z0quVn@(W+qs**qk(u>Wc5;&#yJd8G2`3*D+@l%uLj4Bqu=?fvwR7{#Kj)G+*eFg@H z0NzfGP;u=`RCUzrZsxY;!eEo<#EPg#EGYwFZfQT&h5DQG+&uMijo2y>yYXth&)aE9 z-!MTe@o?ok9=$o_d~4=yOJm1(;DIc8{AwoBlR;&~Lf3aH|Bc)|;n^4X2en`C$KzVy|e&sPYQe0QP~=a`FUg_A!g_sK`ysFn23_2VGA%zi9A8B%pFmkuDTo)^Io4eR-W3$Wu zt?%!DPUlpo(mCFHzuxcH`}KT2oCW2{T*`yN z1K-$IUAq(nd)oK!^zXqu*Oj3(rJ?ejBP(gHyq`X#JDh>C1nQ+)-++%ub3gPooO8tf z)r(!77gM-@pK;#-oq;Pi%sV-eG%QxFQa_s+Eh`gf16fQ8eqr1kv9R+1wg|DpUAV_he&%Qv4#n~=?EhdPY7%=f+R(9nviiDl`4bQOls92VHHUBKc$)koNy~=A z@9sMv+VJgIb;#HgkHLa)A3+~k5OxbUiZ@x(snr+T&{@t{$g!Artt52fWJj3L?v9^D zeiaqSq3f)w@FED&H*?aWR>v}O4r+^7SSh}$@FbhWCFt;_+9njBGXad}T5pkt6L@b! zO=LT97Qvdz$tKK6ZTSKG(9%s&fbi!JWO#p%JDojb^|c%j%z$kj7fyW@wGSpZprGQd zk(ArE7c=^KKMsUe>15wH4Ky^l4}nPV3EiiO_=W9N*d>kQczK@mNMrV?M?q>R9DcX4dIWvQH-a`s5+eHrhG6r z#0KScBTBV<+lB^)_aW99sOqMJ#N1rt)CtYi$XB_o4)sR}k9TsV;gxo)%%$##7~0S{RSgX8h}Ocz2Y|#-%i4(+U0I~!KFQP04;L-KhA{bLl8%7eYZWGv#?e;pXAQO6e^I48OB>k_b7E1Z35H-2SOFv;$J}fd*hL{lMy0nr{YP5Y{PZ9^v;5 z4NhwChH$?;i5sS-mXjss)7FlnsyL0vv9`=^mgt~&^Y+m?1)+C!{i*_-?F^`nQv#N8 zM=989zr&N#0{^cbBKVHDxO(Cj%!W9+xJwBrQgogz>$RlEkbI?cq_#J?!2qe5@UYw>b zqe}23WBbo_V=N$Zr=ppOAg`{-w-{LjC}e{Z=|4zw+?bzZfLFKFhZAsomJ!yN+1d%X z-D3ZLy8zI+0$f{UV?TH9h1%hWQBG}bjPz(n+Q?Fxu)7`lf(+1ov#T!&X_)wIP9BIr z>hby{EET5n3PJu)H**5NKxV5xU)1BD4*;gUv|(=5J1BSx_UBEUJo#r=--Xj<6$T|HF(ZeGa4NbT}zgK%B)(O{FGwQkDH4av*5{48E9 zdh*`8wmipu6f&tpQwJ3u>74`nV|e|^BUj7u*SE~Vx4teI*XpBm8WmZ&T59S4R3gev zM%YgvVtj0sC(@{Z_rIb2{=R65pty6+gE<&oExG;b%~gDL^8V#8xDWP|w}!3Ui6%J! z$JO60oBXCY&L2J&8Z~R)JAJ zZ*>5Fq*f7Q|1cN#QMw7c)0U&x(IvmkXuDv(5cKIT|G)5|{e-!i+Y4ow2eJ)fhZrXg z%El|VOPyCnk@F}a;iIl1!p+@HVl z;H64rq+I3p8?Vz-VztC+V~$OmmH|g2G3$)XMEKc{{2uZ*L}-B|J+J!FE4VU>V`C=W z)Hl;LdqVXGE_w&Us`{95s+N^Ct~0g6mf_Axem}!Xzo7$PF06k|7{G=5L5U9NYgvI~ ztQ|$=FX=v3RwURzFQK_}HDW?-Kp3L91_3Jm8C-Ii?$NJ$R3Ye*lQE?L8s@8x_bm*#-!DLi)REeK8+EXC0)!za@#;KYC# zD~u1v7`W_;kzeH>(Y?@@fvx*EXQcwIT9zol^^$=*(>9X(KnfRpZi(Lv2k}cJL=ldS zuOPLOxiPDXW(gB3pShv&!(-`VUUMfYJGt<+yKzwZ5JpFs*IlnY175gB{nxzcZL@?f z43P@X2qhVw<3dX6a{%!3jWq=Bd)eKFQ`>r@%2KwP&v@&${M#aSF+oT=*t;t^7MsqmW5B5>a{Lf6Nr}@F9 zgVEC8C7v9m$X(7T|EW5epXN7}sVB|whRJS@MHCu8enyT?!k!^qtPJysObehxOJFkr z5=P^O*Mx2sxW1@rElS*Rk2yU3X!PDrP0Sp0N(rjGdV39oGg7Z|UDsxy3ve*Ga0Wmd z1`Bw8`l#H1Z|QGrk9!aS>TY@`%a$l8WBZ!crov@#?n#7Z_>{z+H0zrBMNlFBk#W|M zdI~VphhWm3xjg@LcPru$8jI&IUgei@FF_`!Kx4%76g=Lxt*kFVM%@>@KJDYc);RP1 z`30$%5#h1vO`N<*QfB>KXb)Qfci9&*n4RM;tW9YwVZm>#_4Qws&kqMl^*>~BUuj?U-T5khNPUP;93fh^l;d$q=| z!<;?5=tW^#DDvOY;^efuWc^xqt_fD>_kDQrVR!rLy;K7SI~6NVZ4WPOnAn zF|IyR8uB*O3ac6*a`4Tbf@AXsTeY*=%~K_H9m;%b5SnRPDUlTD3qsz@&56duY56sDlBS90M-s%mIvxFw>~}qC^6jhLOfg zNDXb`hXI-mx)t6U<&dGl$&XQef5Tj|g6A*r6{tx1aitQC0|Umcn*UgZxn5Ti&Qdf$ zD(CY;)7jIM^*F?P_a2h#xmI++3IU?2sd>2o`9gL!hpMsG(L1D1CiEzrEUOk@%8B2H znp1Ze6!bm|Afm_K3*EAt)1N2G&TIYH5^*Jxp2&h07#~j2NI`~PT>K49^1u6n7t&?N znfcKvgMC^f^+Lw(aWSvY zfJZqSwVL^&fcviQ4o%5c4Q4*8!yU6b zvGsl&Q5A9&&p~$0ndO56@!eA?l{N4bKV7EIn!5ui< zLqoOD;=V^aZmu2AJ{K-4xmJTBNjSO`?T;QPHO}pfx$vCkbWKarEI5U$?%nQdQTkf; z(7r&{hP}u3B1JMuWe9%=3wC%Vj?B2l>3feKfRM^-TPfkrV9?CUq7?}#^nlcKgv6o= zXumr1+_Xx~ zF{!p?zJ~TChYIYF7b(|VKt`nwzb5GV`vNleUXBGPzXJSmgwt9&kJ!9+LsYgOz)UO8}80JkcRMmU3CPEXp!YP#DE z(skJ>&>21dm+uvh>a2wz{RJR8kq%(D1f_k(1`ppa1k42R!>;l^B6mY(i|F-t?o}rs z(+cB@c;s*J7WlZUpn?wYtDrdJ?>hDH-1lMLL;3s*JmG~^I1TcmP>`lJ$@c__LW5ji z8t_nYbZRT{8Uz}o7z%Pv+(E5SAZky!MQu?90Nq?@lPi_&!E2y${T}`A3~DSnadZ9R zR<>Etjo}5ZCxl6-Po3H&2g;zzwsDb@C{|Wj$>5$o)iYytuSZ^CXts=0@`HwcGyX1^ z;KRL=kCQ-ihuT=7%2paLr<#4hzjqO)A!kW4pDQmBpUM+Is?+6&nu0YBN0p!w*h;hfYdAw-l;zF}E=9Ipk*DUshSU*FH~Z zyGBp4e~;Iw zJP|$qJwpZDL3A^&>M_#?0#vM+-dC?2=PBF~#MT~dfp?8a=Hfc4c$UiFZ)1FfN6`}& z{LqL(P4#|dwE+T_`j*UA&?Q}kE<#aBXC#uT^XF{*_um6w5%SkxQ{_+UBQv34l$ z(|>z0m9hY^L7?uNiU$srUzypXGl`}RR9*t%OM=zESJbV2RfGQuSeXcV96|V1$68oC zdnV?wOfKd6nO1L=&Yp>;hl&p+SfBHLB$#%l8{dCxw5=z+a8pENPIJOxqN`y3i=`^_ zJpV=pQynuq{2_Xe4$2m)gJU8Gn9Y=joBA4%aURQ6j7xXk@&Q{eOqFji%x&v&z}SK? zF~EQaU4|dX@fpJC3*I9xs`LiDtbYl0Y=QT>aMO5-eEDqdjM62{0;H2nCv+07VYtm> zI{ajz3)e4l41`WJ0mxc)pMO@gi#gG6_uJRUb5V)`tX}R^X=uxsRQbCnh5QrduZ6m; zm?3ipnVs8RFNf#oa$*>6c>-sCZAPr~81-4A>w9=#;X4S&Rj3R0%Yz;DEtt6a9aKdj z;w`~}{v-nGD=g=ktiaElS;vx3PDromjhihB8jP#g3x?_3b^pG9-%TA}GpSaK0K_;q zRPKL4u8JHv_qcTPS)rFzvZ{}uRYp_Ta_}Vm!tu}2UphNC0Edj(1qrOTzXbXIea;1S znHOCKol!0K6AZG_@csv!)}&q&1e8t~?eMjpxh@0$F{&agySQ;D(MR})1o4_}uQBiP($R;=ZHs93u5mFGuWDSB=vvmHl-u2o)V4@Iyx3 zRiO1Z(OOsSP~}<@IUM2-Q>qC>*-2zcSsr znFEB^60Ch5#OT)}JzUkMse>nHz$Kn5>Xd-Hy|3Mt(nc*7YGeG1UStK!j5i)u?$l!G zrk2)o?N80C1wY=RhR{S95@J_B1qf`f(m`9PV6f!q80!SI?z{GpN0 zJ8Q+?^g86vmq7O3sHTheUjLOhcjCO1Qrq#Ziowd$G;P%lzn9gsyfaOG?HW16tv0H#J!v#9#<@N5`^K5QQ>9dYX+2)ktAwr*^f@xV@TDt@H z@xX=(p2nJsfMA1J0GOZJ^abC7kqp#0|bmsKiowR)HTxgs=mzmDiOmxxfnaE*M}Ux`M95m1h9N(M!t~Tlkpw)XZTn8R(VE zF(IZO1x!-1@J4*#wlxvuSVQrUIxBk_uis5yWz1t2T{xmU2tbG|v=b=z%tv*I)joq? zgHwxyD^X!fqU~|;rmq>8)6>t9GMBwCZW8g0r%moRDtkwRcfLg*jP6YNp%}I}+)@PR z-$pJ)Lz?#?s*)H^A=t(bOK+&me16kv#aIyzpi;drnzTT@o87MMd&Rrg)##nE?FRY= zqixjg$_YXonR^L+kP;n&W}z_Nyx17yl!F>ZmNw%RJjFWM(4usEKk`9iCHWDaJAXPrbNu$| zT=mkid)LRe#SG0%?ze5N&704(tVYQn`r!zTcivll-#^rN z9Md7pFEnqSYr1P-jMbN897VJ?04)^mh z5@?q^}Ba(n0EA@K>DsR-o6iWrBswD5f;f5qVs$!K4?>{c+K117K$ z5XO5h-tsire;aq}5#3F-42m#l$NIDtOcFLl*cPwPc}yin!UVFoaREih(D*yHcbqw| zmzin)2>syMc9r{0GG4=85RzQ41_-UC)Hi)eR64Tn#Gga8i=8>5G{2CT%+BHEQsX`E z9>>Pdt8R-&FDIK>W>;gE2t32OR z|H^X@sNaK+g!!^eRfj5DV7TErN7U5zlNcsX$)pniUg0LJM*2fJGmJ)~k!RuHn7r#^ zc9S-UuqEWHs5s^3Q%A}1qo8NrGHd{12B zpda`m6I7SFpzG9^ya7h~Qh6e;HZHxwF+E^Zb|RuZCR)45@gwg)LM`mT8V%Mslp}XggOxeB2QSk%>n zt*U$pqJt`|G^>7Mv4aIw#H}AOY18S03Tb)g4G^pddE^3&6Dm*Y&)ZzyfqKx(=nMFo|+}yXy7!7 zQdj;^_h0zet!G=7oItKOD8akX3hixA8M(z5ckeSb zcTsHQ&mG@T$PRLxf#H3K6fpJC6bU&X}=XT{qt3!H`G!3A+3mKp6p^ZYYKQx?>#T9`om5%q^<%1L?0sxi!=`E%;}(8(-HePFQaJi}mwj zM|Skm9H#&IpRdEq79oF>D>V~G*m=6&W(NJk$)iDp_1wi|TkyUTRPxSP>7wzsp2Ug% z(mm}KQS*{p?2U)!_osNsZvWLikmX{x*yreWf5O3w^L62h=CXG>v$@P`tNy_~&|(~o zlwkTS!IoJb9W7$AZI9XdQ!G!OpNzD_gYgA9m(U3!NZp^nlks#Wft}dD=!AB+GM~x7 zq=DogFgbJPyvEp?vs~X+t$um~+b@^K>}6a+b})SR2##`oFm}Nr0l^c$5WTAzfRP75 zOX|1~<5+aVg*(Sn|MU)ijBfHYtc7YU4B>lnt|31}7h}>0KV(6-^O^my(g)y0I0xw^ zY)DGLg5Rit5Tqm}H}^O|?WjE%Yr$2n0$2bm3TRiM@%Orv!IQfiU3ja^qD#3+U7?Ed zL;3G;MAW_J|Enugp8n$hKL49}Ww^EL=;6GolCNJ9iO(eh4~ZFh^>!>A3<{170fnRp zk;R=ga<7}qw|w1~n*^@$dW~P%BO(nU*Z(%dyT5(BeEwFTRd!8TW}gU=(K%UU+9wjn ze4PeDV~4S_24DJ28Q+{YYJ;3wh)?ZLN6ZiUu~+J-gZLUfS8fFIJtS1ajObI#g8BmN z7PJp@myi%(izY%RNK__OVl_NG?Sieje=ai3`W0^BB0cmJxrb`WJpbXs-Bs_k_gWI5 zdXC;KYpHv%vh>=Kf6$yaDm%{Jhltg?p>#imbatw#(IDb$(Am$GFydr@)q!sLB@QV2^J1p@zL+$2h--`YEn@OK;8xy-w8JE-M@X^{8EzK6Wa zLZ;}4*8|+P)8_J!B0`I$U6LC6>o_Eqvj_m(oJ8;QC9Qa7mFx1_a4 z;%;-9zO7)-V{3Ez#ptu}`WuWIU%m#G=1_eZ8{SFsX1yp_mr3Lo@)R*zm^d))WxHFU zw~!i@7Ul}H&dCz`QmBRr5_B3M+yid%xISGQfI*7E-v;ga*ax^4)P)IfG{dd1@x+<* zA2+crRr4V7mg~g@$@AI9h*YXAJ6C$IYj}}RzWyD6aIW5D;Azw};c-moV)#b39Os0& z4j()@u`9-aa}lG16M}>UYA4`@)EAH$>0@mmvwa3yMEC*Wh8=?XBmL2KJd@liE@jnO z2+j-gf^0mh`D^Q%#$&ZZ7EIlgm%n8sxp=ojfBS7TW_wbL%hvcJ4Y_lbl7j6Zq4|sb zr}e43)YhA@5|mQG{sH#+e0-^rke>ao|GH3 zHzv+mSR9OzFTj>i7v=gMKFP<;AU6HDm=#_OzZ`w0N4Dwc)`Ra8TN7ucUnZ*715?0W zYU&&U<@~qH;>ny0LEs`764>ZQADIJVRi=wDr|V}4&j79T^sKO^l>6-izTZ~xncfc~ zg95hpyuwMvFpDi*TZj#bbn@z_xv2e&1KglZTliKeAIQSSC?G@fCp0?1%$|_zCM&>I zT=U-jIdL#Hs{Z)?z2H5|?*M#;%D^Q+Sf2%eV4zojDpwcr+DV{*devsRwrtGF8%He1 zFuRPR5ZSMIQF!hCX!xm^&NCp=}Qj0-JFvN`+~Y8X(x)5 z`t!pk^DnmE>h)6El<&q@MkfBbD>0@2Xz^uPOqi1r(hn<}zVxliJi_@$kgwSocar)|I za}F$g4~}Ei7WURL<`4KS5NoHd1g}l5R`bDm6_ZVBb_gpbu<&f$J8)-`74hEr^NcJP z)`DZ|@Rf05T&;=V#~ znB_Nq-v3s?$@3B8^}jb>r^au>8AsHk2NcTi^G{!2SgE0;j;zR;GXv|J(DA*_^5b7( zG6@?d+|q-?K1Gv`1*Voc-ZVICb1)hmQJEFqQ`T!|O1L&zs*f3vXk^^>fS zAGn4ouW$zJ)@7^ospY;8LXBn#L-pCROVf)Sbsa4s?U>JJfv4#-CVnFM*J6bGhzfh+xmD=M-0ovknSlhIJgt-C_3q2LD9CR$%>N4-LP5U#Bv2uq?NCz9#+1fp9Iz ze_lWOMZj@aj821^uz{86eVmj(4$Ro=xMSmS0W(vbBM+k!(ojR_ImmO;ZQBO<`W9Tt zcF3cO#PDK@9`aa9kPFn7y25{msX(V?SJE>$VW~pU4}p=vER+bt5wCvsttoiJJOQ;{ z=baV9wJ=mb)0R+sQepkZaIcJSsF*U@SOco|esXWuy;57==F~pWA>) z^}2riJ1DC++z%XL26ZeL5p5el_qp(Fkf&Lf0J0$3m}Oj75Yv$b(J{rvjqCfi-fIR{ zc6m~cwM0Aq==>PhOxp} zU{pJT3tMZNEhPF0h}^0fgW(?6^+=cH46b)7JPwf*q5-{}watfvV_Ixgi#YfAlt$k{`+f;Nw6O(@edGb^i|t^Qz>?I0y*Za0Ube>iPy zyiZ)5^=4H|7?(O`IYjEf-gL|Yu1bl&wXer=K}5&8w`BZ{K+6@HwsfS=($>LdDM{(A zC)_4z{KtiQ+1^m*H^PN&g)UGa$ukf5nTs?Wf*&wcXKk_P;kKYU_uYt}uKPVXFox@V zEJ<(U719TUl{|U#lS5PX{>8oYcbL&LlgY?{*>pe{tK!NB@byWuxev7vAv8HqDptHV z^lpszI`gbyU!p1Gp7^kU9X7TVFQ^awzJ8d04BYDE_)krz<)(mM#;-}Q6hT>+P8LM9 zWefNIuHh@WftCO|awE(r^gqs3h1)se2GiZ}irg;g>zb~zeX&!g60&YF_F>Wxh1sN< zefEM~cyAwm1ron0yKTZ1%&?P$ZMzBi5PG%rGZ!&WM%ZC>1z{KssYGX`M6~T~M z5yk;gj}+XEL7Sc>C@!%_chzx@{0)*vK30xQBMVg9hSYrcZcS)AK+j>w zl_l~h$Aku^K8lG?kuRcmVNrMJZxczUMmpYX6c1qP6@Lprq9(}p0X1s=jyDe zED$;zKIbY>00(^c$}!3BuVgQBpvRG?vIjmXqks;ap`UG2pMZNuJb2ifvzVNv!kH5C>u`1eECNMiUfsFtAnqr+l$nOhkD&bo#_@5m8vJu<2hy!PM!0?bfv~@&iwU|9$s&ibDBmvNWr^xRJkgiPwL_ z(~3nRj46BH?T`7rS6#e%gZ@-}J^sNQht{3`Mm;E@td7qm&M2+48$pmQHxaMN_grcP zvz-X?>VMXN8dD6n@%`qranzU`z#}JjMr}x=0-Hy+YP|KcFRVb zjH76*;5+p-ZWkP&vu4Ljr%9{%r3Po$aO+93r1Ixgl69jM(5Hal57^{pPlA;XwN+zm zYaOc5uRwcX%QhLn?-OX4ff00Q%`?oS=#^7TSJlSz#wl;BSma5vcD+5biqXiE8G~TU zu7+nFUGPF*U~g=pZfqbPPP629vX#MWD1Yba1|^A!E0ye2QFPZ{lU22*FK-4<7Kl4m zKAK^tgfBoB>plncTU^f7BF|cmK=fx4lObPHjN$9C14pkDclcH3Q)bNk2ye>c-v- z&>R1q5>`@vVm0gaXzBT5N8to%k|fwcPzhT!jay!h2{hWtSN70$iSz|~8?ULUx48u#9mA_2B`CC7qe?JtqB z>LkJSY#ZFC>x2PmzIM||_@ zlO<{D)7;4AR`Z13{f@7@!e@Slj@foVa#PP94tnE24G12 zpucm<gMM2Qxgf0S)up08XYjiZ)MCpjGoM}?B z^o0Oimgg^Gj`>~~TqY~H_tcTen%5g{SH!Kj&%~17n2V_AAyG%P#D9IzG?Un6$_qX3 zUn`BAJn8?l%?@9`$s78qRybF6X@4^Cw0u=98V*O@_U@7L_8e6&bUZP%0ke$A)$&q@Uued_) zrAn3Cq{pwCIu3f5c(yEWB+vD?Z#k@pg%>MiLoU$WZkJlw6ViwRp5cLi2 z*$C61xwF4Af1kb})1(gPDn#vBIGQhd>Kk|~qY?+@o3;_jVaoeElR=m~GfCfd!q3=b z)WJ$c^w8-|_P2XPXCr@R>hHbTFO4%$^Hv}0Cp-L^!5MQlE%x6|R1_$geOGT8OYAOm zB6OvoX9j!xBD6^s2`#!aUJ~xFJ?hbOQ%?oAE>`4Id-TU)KRF{i$KsAPlr!ebDy`O1 zNLPm?9lKgyQ83fGMChAv9Zr+EtKc=9Sf3`y7CiiTw;S*T$T4)grQy^aVyr=lj58hQ zOI<9?=5|N8fU8LrJE)@RGUz~=!%Z=qdJ@wfF-{9QGbOsXC#C+-UhMMO zJA(6^_#9?8rxWo~*GN&np#K1n)tC=J6se4uG{j7z*&O4VIj3skWi~x8KnHD&d*3zD zd1%9-rgUnvM~3=KsdEyBgMT%-@y9x-9f~>k;+3AtX##NjsQ9?#@2_itS#IlNi)*V& z-y+)={uRu&Z60(T44p>cRH25)aZ5evV*@kFHRdBco{HX!>91`37r=ve%9Znx<~Gz=h!DiBR)s$wf2NpL#*_Lq?HM5= z67*D7&3W?=4$O6+vr{<*K9Ngn>Vspg;r2-)r9b1mFWUsxS3+NBkNj~Hit(_*<(iM#ll)uZQzx^uhh!8oo0);7acSGV`!|n_ z{9M=hynqNy@b91gdjkW<)YFPf|J3xWhK(@(Z;9mvEBkv9Xjxgc;U|`6Qvjd7L_7Lh zMpn)A6}#!{jP%C)L&OXzi>@sVeYv`>``*q2hSpF9ZquP*vDu^c_s2Nj@&E0`*UKjx z|2i=hucYt@k5F%qDwH`KUJz9fHhDqL%*pv1q!1r1^%-8jxo|(?a9?Arbo(UN5u_2C zi#_6HaXU?qWZpY1?4sLpAyx3X^nP`@+3!yk>srBdWG#9zaZCq9?g|?)G_C4Pxht{` z@1$qjKsbv^ft00D^x0+2e1}BE!tja<$U{HgmUK!u5D=M0NC3ukH~3nw0spX&legvj)R53=AfPVd0FlypW% z`hn5%+=KeL-2-|J|Jy2}vlQfd8S{LSc!)OyUV|S@nGDDDx{}%!TuD|>wI57*rX11$ zuwJd7x5_e%S&=z!O&GS}*oTHDG?kF)hq2?1*9{JmdG4H^4;;$F_;*#nzs%Z4@LENj zhH?6=$5G1D%|TD2-;ragUHAa@L!a;m8J5D(CDZU;MnDHb`Mve#RyYMu2YRdTW6E&t zY3jGCv8gNQmuiR6`Ov2^MoQZcV+{EEsdykZvU~8 z71@bt)E*K8A@C6(51_5<2dJ&2v0`-Q#KhJ+dIL@2mKpDZ|3mu-K}fj3=oaMDk}mz4 zPy>h`i-Dq~?DdtmXeRER)nHd@S>~RJS{1DH@HU!CtKQys@%7Z};8G=NHYRC`4FCLp zFTF?=Pyg%xF4}0R5x8Jpf^lDeuU9kJxgsKOKt{O6ok&hH^iTPvYuBf{%tZE|w{nB@ z99%ute*RtA-;Hge5;KDj!)`6*Nr*I)IO(FNjzufH*SfxYy_MqpfKo^(1I_hj=Vd6ZeJ;iE-2 zT^J6T0fXmD1kec>vdg(EVX5>-z6Op|Fa4?d@bvt|b|41Psgg8{qg0WON}EXE6TjJX z=H(t?=)s~R4BpRP+Uj?{?Fg&sanW?#N(txEMEcy*3XsxC*EAz)j{+%~pzMM@k-jl% zd-}4hNNG*WbNZdmlc37%AzyW@t)%V{1~U$&UWHvWDq860&McpIVHj)`b{P?!jmS&7 zd(wI4tzal%6ytRF-0KNfVLCew^a_j@>6_2 zkE3zbn0+kCXNHhZ4V}*7TqZHB{de}PDhksuz7Tq!ER9&wPdJO`_;J11RZ9Z|uFZAF z`ibC@R)#TX<5^^So&ZJNSELo{4*-8GU5Wd)?3DT)5Oc~Z_!smJ@1SSQcnN+Xpd>^t zKz_h`3y-b#^NLYA{0dCnic;IXbFkX=?0QTn+G#C;Bhgv^j+d@AE(^MtfI-+AfOlF) zrD3db{fEsz&3XxXgvRwJFeORw6T-6200w~h3kV6A;5>m}}tqHcZS=wlos6yru@=fWu+5TiZ^Ke(ln`+ibq4Wt2OjIkWl|J$CJTS^Yd&^FFEMd~^qbJ!OBg1melEueb_o046t`Zg zgf2;^B_b#Gg^wrJ$-vB5+wcA{ZlTePaLtZ9!uDs}%wWT}1#SK26g~vg*bsDLkhLakU+vH^0 zm^ez+e!@HG_?(F^<`rZBQpuu-gnMOtL^KH@@21YS_D4+6N>-8H9PIJ z`_I2$3041Bm-4D$^pR23`TIK!jTT;x$LbCAYh}%S9=vljK?>k;j3-`3zsj7VxLvIL zS)zcuL>gK8WN8y>WYTvG#ozrsIh2u}P(K*-lBg_l+f`ylQ?>7es1~sk82${gP{{t? z6M-Z3?U?$OsD_7~dXWooJE0J3G#|q0S^TxIRZ)&j08MH_ESHregK2 zlR+<}Hr;s?ds<#n{M>;p;v3FvOHL9I-SF`7-h;2yk4o;Bo1gL|_))_aOQ_-K6RrEt zGHHvC{|-MWzIt^r(V0*&neAS*rXt6zDEEukwQYOE~JiNuti$4o*R@Wj*qjANM2S9qA^mmqiYY z_n)2E@zzEtA2B&^JF_UwxwGc-MX)%+;x-CiNsC3YOnyrteWfymT;f`#r9j*Af^U;0Zbnrv)wzrEeP%gw{*hRrz z%Kl%m~NStBzO;!HS&86zx65f29@5`qT zmrB<a(US!`w%QDdWEsFjH7Q~*-Bj*({3XbT4RTe#_V~=8wX`JSVhE`stRd$ z<(4x~6=Js?T~P7kx5ytS1y5<)b9V?RCboAV-@bZ^VdGu`I{Zf7NR?T)XhSbLHY{uKL5Coy}%VB>8*&EN} zg%w~JyA-YVd}ME}#3y%*Ncs`g2Jey97rVcN%xspCkqP8;LqQh7b&Rm&mn3x6esO;r z!^QT8z+uDc)>B{pQU{SqKH-#2%?BODd?1HlWKkb@jqvR+YO|2pA@>3nZfBkg%}j=o zF$n^39DoAO{b1l?V5>uz%vRh)MW7Cp6}k)a7E^<&WWn?BEbq}Y^m`6z4C0KzrtG^0 zHC49YyKt8ZXUYVZ>dxs)_YAKUnW;b^<8}o0x!<8=cSF2o&w{t*0P48#X7dw#>r{m*(w=Qb#@P*s; zzF)-Oz#(5Gu&sWZ>M&%QKwjjFqej-7Xwa{Q4Ty&Hopm{i)>$c94~-DVi5qWlhJAjs zJ5Ju!rUgAY3Z%aWHN6~?cdFG5O~?!Gni|zQNurLF#~_40M#oiIEP+cNH4jqKh&D*AC+rj zA=%?O)Awj4_E4@ABbP*txRR0Z-6-a9?1a3${KZFf3uVKt=4tIq9;$5`Td^CTba!02 zf9dJ3JysE?^$inWDO|j7Z>i_g(DdNQ&56<_y&PY~*w4C+o8PG!wUz2;bYtC1GF3~% zBmgKWB6F63MUt%GtaM17B8_=P~M>RW$_`IlwwTlTM>JK$aO<3@ZCwffL!ZMW0* z@;=)K6NM?0X}ou+tf8zPndGkU!;qv-^^o3RhZaS>MVt;U-)#5KoFY~Z~tM3%E~7iw#v`4khu*@D~!eNrEfC|n|5RT^_R z@y!_%?tpP5g9JdaHe%42&nNx|sH^beXH4dnv?dmUr^JA{vtAc7Ka|a%Oj}I zIMk2qUd{?rYbcEUMKmaBU1t6{>Y<$AO)vFT^dda-rawe!u!FX4cWeJ%{e8SJU<+h} zN)%Q2?{l}dxdz%Rp1C93*d`&OXYciaI3`rssb>?o{Qp>b z_jsoN|NoyTyd6s+VM)=!A*YQxqN-s`nR(uMr{rH_-M?RNU?|q^KSUq!P%dJ2)F9h% zTFXD<%QzF8?f~XY`;kWc#-OpQePGPFm`O{CqomeT>8~=LQksl>ueqGd3)@$*Hu=Tj z3Txj>h1pvDzDGCi=87J-#rdenU^E{G73s!CUt@L*x2S&hw+IPYj+d+tXy5-rVoXfJ z_f!?Mp(N7uxZm-@ljjyy1x(Zmh0|Z{*Mf#3yE&8txd(H>_QU-fH?u)p#?h1$GjJN@dA(YLHi$$Q#N2G6F2*CLyS zh+GDCp4_z~NmRSn*i?`OFKEO?P;t{=Z*KDoRRgUsgxmb?@A8{S)kq=yCm2CaHcv zl7!*iy`Uv3&nCrRcI26GQ+85kuSy&q!m$Twsl13FS`p6>J%v9FI@qd#ZnkBOjC@_^ zX{<|+6HNV8xkc3k(=&?=@#mQ5*{?FwoMgGbIRH|D(~&#=y}ljC4#iKSLOBf<{(sf? z`i}4$Q$CuoY}t%Qax0nAieob4jQy2^Y8rwUxQAs=$I5L=UqT>mOCBly2bpR>K2f(Z}xZ zhA+3he)ogStsJkY~RL|NJv}6m30gRF5GMx zPz#J?o|GCdN-~gWl$j05c=Z7EWbi-X=LTpjHGdYYx-U zP>7RyeK2@g_wfY7_4qtP?T^9ob#MjqC+cE8Ha|Q;DeqNSqB0 zd`T(RmSA#F`ILY86XcEiG8lSr)5d;uXoz{nicvrbIUwuX3DrVDt2NzLN$>Z(XNZs^ zi5F%kKJESWA46tpUuJ(LvW0hz__UTu_Q~c;Wo9L}ql}G>FD4yarAI0qK1Poe=3hb@ z9Q@QBucsj^=VV?4t~Xf;dW8GnYk=WAIne(iO3H~he}7<2JAhrwb31@)eaN(i|s}b3}2wEz5TkZ)}BZ*xRc9^GnM(%N zLmlac&v*LVI|AK?K+$qfR-7}kIdeHUD9C}M;kvlv!wUH6qHAh^sej6^pp$}J2BrP4 zk+boOx@1&3TFQx&UnV`gOzc`3wiKquxGpz3?hxI$qVbPl;u`3`ga-tt8a{@TPqe;w z4qHZeC3KM-`0mE#IvM5mkF%Z^758~@--Ckd+CC(H0JGEZr$s=6;YI`SG9mxu;oQ#? zNM=Og$i}%1ha)-YLeN2sag*%n0uJFuR!EV58h#duo{7 z*_@XL&sa-%#+SjwB`+Iyo`9|yE$>MRpgM~V0Y|#V!YS!Y8S`kRR1%;zJUt^|r6N4t zX;XqxN%1A=f7vkdm9>3r)~=#!BVpy@G?ZyAzTumy>O`?pImA0|+}UiaP0N3Mt?Zj78f$p_HU{GuMY_D3*sh9PskFLgUxuy#F^z70%SlNVGUv{d0F(Bs}q)QEK5j z#xvWIuzjpNY81wD$1js7UQDOH>zBCSSsxv9 zUSvGU<1Jup3(ou_(r9MFSo8Sxa^H(RiQq^3DLs~kN(*eUkht(lu-5MNLNxff@y1NO zm5mD84@`|sZxb^Ud9G1iFVDXCGF(Nq^NsPl?gZ9Nrr-08g_DWle?hDDrQ#c&U5O}b zb+0_Zm!UMp7@_*mAc2>el$p<)uRaw*Xi}G+%Uk@eY~DaBJk|Z1KV!TxU~p;NI`jJP z$JqzKodPp4oi=00ceH%!>G*JK>`StNq~-i)tZa5|#VS3qj))Pls0 zRjW4|)YD*9zam+V%Gi1B`P**A4@HarMEB>fB@*^@Q;-sIc=@Q1qpNgX#KYDLS~s#j zr=&d{kpDI4(zTMX;uC8R-DDAXftbk%Sd$L8b7qyF#e88Pf+M&avxo)R98)oV1aor3 zO`g+HpJBUTrnOs((&D8fSf~Al>J296;5eecsb(>~oUiN8dTQcm)gx^Osb)8g!cUvd z{c#zm@s-IU)IZb>HQb}3)Ud8FH=XzXost*0EhHJIrOC)^x>@W6phBhkY}k@-HlzHI!$iZ z7X@g0aukf}u8;cfS`~-sJw3|1`?G$t+i+)UX{(-_bOx%;Lcm&NI%;7KWVlhv%T@OH z_2BO8OW01)@*%Q`fTNA2rP87C2Z9UHd;jX*kn!H~aO#P|6y`F4KNUV*n=%Su-o)jn zkFu0c^%-TyKZy+(5FRS+H0NIM7qxIIPN+tEtxF?U^@aL`k+$7bgFdNGaGmu)Q{ zM(f3keYtcouE+Jli&Uz6(a)P3dLi%kt9`HJq$s_>$aH&n7FvHTuy>&zvuc$=Uv74~ zi(hUsV-*H>ic*ht`F-~}O|?px@83AY+m7}adwDK&_dAA1`BLrc5X3rEsc+-JL@&|Bqz=s%$7@}s?10SQEDW; zww#GsiXoW~NQ@+J;8hwt-!nNe9ibDa^g~6@>B7Omh{hVbv3n%j)-?gj=VOO1AcZ|l z@cT{r+cfBvrf)|LXlrUQx3x2AS6&-i{ld>|Y9X)tPS~R)Ed#tnB>YZnnHL3YS)bbZ$@Apv&l~?NB zwA$-+UVO)#E6-UFhI#+&e5x$waLcK$g>~j`ro%-&%b@uRpEJO2lalPct*$PEvVBHA zpD(|_m3j!CC~fmrUB6y-%&@c?8n=e1;OWxyQ1_=l%^=#nRdxOC2>ysKIQf z0u?+Loau?P|3e|f&d5J({$H7gS7Vd*ful&vrkwlke_$w=J)iJj1ay2ABg`^X1g49asJxr@t6KtQ@7gh@Qu) zLX~0O&pKr?dHzMF9~*PrP(vxY-pd8%TY+3n@T!rB1{(ISae`69%^O7uhXS}(be;6tV!E^z+L7SQ*X$_w+p&sx%>T?W zp3>&FuT#7u}~mhu>3aJmy6(s|mSI z;#CR`uR@U&p--qmHEUM8=ojTcoWG)`+*RYymy&C0iE=&EkTrKz;p#xMx5`D__vxw_ zwBJ*$+-EZrhnQLAM{4IlKCaBe&o9f1Bn%plr?l=r+M)B*Gs}L$&t)I`(cTwKg2tuE zutTqk?u>_cs@saC{CIf3!tRNH17obXk^05M*}K7?kDsI1Ll_~4+M}dlbG<)L@@|PR zB+EQB{>EwOAi>rO|nlaZo&dNcGEAaS63_Vm8M-P|pSeF()PxPR-$3ZKYwLh`X!X?g6Q7JrE@sN>5-V%<4L-)r8l0~0jvY1r zVab^(T+Edp7Dp^7PLYo|F~36XHPYVBt8ix$xHTE#^SH09T&zuVL48H(FB>af)|Na3NhZrbh+!Q(QHN3`F3`g7&c0jlz_t!j*56*v!l zj&lYAIS|IJ;iQ3M(W0~=!3knFG(rjaFf0Av`uZ$yZ=(a=uwryYB10%E*6MZFZ!eMQ!N$3i6Gu2z;+3l2R1G8}ns=}^2WNr?*zsOT*VdyYpDY*;Pgb zeb%NE!@HIRiqM&8GA(BXlkzvB43bo-Nl4ol8Vg%B(%oZEkNqr6Wuj0oP?Tr zFQ=HOCel2XDH&02Z|8rp&duAdAy%~WqNrBff^Pon1Hl2?>4`PJK_ux%1S_+_XBR}^ z!*ly)N1fvC86P42@aGt#ckyR5Hj7xVYU2wZpN7&uu640N0a$lNhF)A{XWqL0x5n98 zuTjWDzAYyeHEX+PPUd~!xWV&~8oziadFcNr2B_}##B_OXp@G0V$I$Z!PAPdDg%}{& z^5=9`Md;k)#iq3EYYINS4&bLxf27=79*`FM;`zn%pU|C|UEYi`a~&4Z)xR`pIeuo< z!hyn_Cwzq0Ap`_Oo9->2uvELglbg~Rak@y&Sl9E-7kRb)F1a0dgGhh1?kU|3bw%z> z`zW-YNg^lMFsl{qJ&M3PwvoZ?V*-aH>R%Em^}C&?ER8W7o3ZCF)xRHk+U#nRi3`fb z#yCS_FO_PV(N)jKZw$YI~FoeRhEdeuttO@dJ2`(vcE#K|&QC&O6hy%w^G4x}u1P z$j|lKiJV+e13CN252Gt&A#P5!Jb8SZyfT7IC!;e-f4b< z8J>zP=6yJmHUdc-c4>DZCNLU#@Ew>JTVaB@qw|gD8WX^slEC=hvBfK1_KMYbylX!+ zM*--Y0i0Cugn{Gsv1UVVPAX+?X)C{j#fveP!v^6u4aAMMrMow7o%fqt{heZvSlUJ3 z5|q2*0z*CwL3f2>01p7=x8(bdhCGCQ1~gzp z)vFN>WZ2I#q=A$TgI@2RxKX zr^OBXn?7tn4~W}Dd>D?8UQj|*rKs-b41(}N{6(^tuI^Mp&K2hrN`dNW9KV=Z%*H4kS>arYdcw3 z&h>wJ5RR05REl-f>w9*0v|av8xX+E(hy;g(C?~!WLD=*Pc^{Z5N)s^Y5eGT*--O`E zU6halX`j3L3}O`<-8cQ1r8voe1w!N~<5tPj5uA@?p6vv75qd}R3AG}kPp3fQmn}F2 zR-953?yfSeW;q^Unw-C!OpKbwpn#>V-{u-Hi*_Cg-Ib?Pdz#<2;W*qRbQQO2u@s@$ zA6CnmV4miMKS2!B+>HhDV=IpZbmW<9KZ+os%Jk0E(nkOG+$_eHNwcmKz9kVunc1*1 z%||le!O$YPdx6L$S}nH*Y+#W~rsWnv3bQS+ugZJeSO)kH&{bO^v3{5K-?a?WhsbNN zJab>6|4k>t`)Lc?oggu7(I=vUx;=?H$gpVGJ^0i8!2&#H%5;UhM+C^8Ke2=ee3EVB zMbj*DzEQEdwl7Y9t$lodcf$VyTrR*@Mrdm|!=GHwCI6HRsq}^`f@yvem-(Y=4 zF>At{q*R{~uLwO&^oZzgN$*!cA9XM)xU>j6727NdnUCtt*$@Q2ygNHMGC`` z0ot(syMdfXR7=$f!f!29kUNg8eR_IT~b~tEU5)n zN=T7svI&4=N;;+fI=BZ`4)zNb9&Aq7=ssxL?FV3*HNm+`=_t*~QGi-X3%^20*OAu< zpa*QNFuTYm@zH0dd$k)j@>96SQbKp9_KqvLDJkdPt#O;xO^G-x*K;6zimTz4g2kU*@&(y6(?9(Kp=q+rD#+yeK&gGK=%4s0QiIGu$ibDw3VeFJDijU1Ev! z@HO|UIW-75{)07uT)NIMTgMXT0Tg}+{N6jvS>z#GoY87%)mq-jjf1?>62 zhUiQ1YFHxLi+e|79d_C$nUH}E`fJAW&@Aj%R^3euiD-{pRe^wn8jq(q7_i->W|{4sr!vm;LE z;Kt)PYyC_0@%}|WA$dDU9rg&~Cn5f@nK9^~hpQd~w!hJcXv8<4E^*+bwn{W4K(d?t!b$|Nf+XDuwLDjA8-swOdVx z!bG&}=%Jt2+D=}oL3av!tYX)3Bm8!G@7j*=pCqo?nLPz6WQ1ReBI2-G+{}wjZv1_j zdgfHqE{Nl%efe8hCbT7hHY>q*{y_PQ^QHizD|&cCRC?(TE{Bb4ql^n!wV~pLjk5?{ zBUhBGzO-KapP-fWbIND2s|NR8g*U81H+vxbv^rf5QWLr5OizycYUl};)vi|r)U>E^OqTRyU4*AK3xF0^?R3BYz$rz zB&T0Qh3r7p&xX|h4xHFJES}tL+UjME3vX*WMW4;fRh(6XnOP+g>s@R;#ft7dLNu@Z z{0K=zB@;eKKf2{^b~fGlY-}2~9mg@mFT%Gxsd++w@AxKzd)&E=n%S6mSQ_zf%FfcJ z7}2CeZxO_o zd^~zxZuoZQz|)r7nByx^-T{DT==3_4>$qF~ix)q%w6rGvfk)&;%6V*SAhlqUusxmT z0Gd034K4SAld82QyO-W@Kb?a0q1_N#fI`llVCQx~itW#>SUZiMe0gHNQZXnN3%e4sl;- zlhL>6`El*n&|?EgsRvEBfen^boBl4b6TCi(eY|-!cL z5?l|pu}c9DO&08$ugl%xB@LyRZzoP6rNOU(F`Gn#@kMPpV9f(P(n68&>}GGC!n;t9 zbd&YTde`)Ux56K+#TWhWXJ8AVEhHNqnnRlKVgOCQP&}P9xS7q##`nomnvubphLN@4 z+g|P{Ank|igWi7WtawF2_;}{)NmDrWdshH!f_6#SQ3G6GlA%wr`;&ZvpxG-(Tc87J zU`9rz&$HB_Pw>rT;@&H9!+VkN0x0`uN*G};3T{n~FrQ0Ju_9?xUwuD(a63BI!^xCY zD(_Kkk)IxIUTzamby1Qv+tkXFKS7Tl%N=Itkfehb$NjWnX|_vR7RA`Ag)DY?{pLkp zzAZBr)T7KMaXojj*PfY`nukVo1Bs#~@$LBzC5s&Lj^X5x-*hvvM;2?E2h4Q07b+qW zA>`={ppK&+-PS(7&F)V^cYa_f&#Ht(p1Sm`$i7?{TFdw!CH*2@s!68;7cNGIV`iY! zNFy&E3G&1J&aZ@>F4(3rYfzd%;&I+NWlCoT{jw!41@(OG7%t!EeV~&49Q1%)&~ICH z^wD0aR{2V9&9bH0Aj8DvEhAVCmIHl|+S(lm__9hgw$oG4Wag?l)i+{}%p7CqT9?O_ z&*qt{*qNN5o_^6EgF#t2iB79N*9eaYQG}NFj-Z{ulGyg`(=V7YR+g3yVq$`0<(qG? z&p+)!P^*T(0%X5;&%`y+aVz_Y%zfdA%1irXs;v4iPG}w+9yI59ntg9JcX^td{q7Vs z9WZBXt;pD6I|^1F(yyHE0hqe7PqrFd#cag#ul#H$JN>5)%6(Hxc=j-KXQfqC1GRXv z;3e@x2y%gN0LM&EN%XmmR>THrVgIj)TPl5rT8m!#M{gHQ zLA1660YqO!$5Nd%|Fd+f{-?d{sS`bp`9ywoN;qgcH6_%jEHLPKkl9Pv-DTMu?@@+3 z_O!7kBWJ!hI`%KjXae$--`@=x1pk51qp>$keIc(0gKyt0_-D|_2mdiibCI^hmXeG2>x z(fMd!03b4s5MCAObt!qr<0+Vz&H#JsZ_5ywUd6?=V_7Dwj~e(9zAHzI=dpK(v)$g2 zje5lV?yy{nbZ2RzlJTQJ+UpTp@yV)D2X@__SC&Mnoh#xeGw|VGS6Fa-i}8u`vg-OHYz{Ihy4!waXIKBB+O3A z2UD$}hLE+Xd$Txx^{mgsiSAoZ8DWF4!*6u3Gkv&Qn;LSO* zAz)W0aI)#jayO@D5!6qEDq?yORv0y-_dRmDP8?pz;)m7<2FSAAH1 z+xHD3WU(}}Dpg5==^p0^z&E~^R2Z1rU}bba%wqFDc?fzboF_qY%0fG>*n06+BWfO< z57RIEz1{`2881F*cx3+Z0GwOOtC&ZJTlH%$N_DQ$B4wcLM zn%Dd2NSe*#WT#~~lwI$(f299e^U~Rk3+7f#zy#ET1-3(faVF8LI9lf4Jpao^oOkk^ z-=*e0r{SD>yNh!3Z!|#e)jfG5LpJKSxyJt9Du~(Bsn+q`zQzDXW|gMm z0QklF{O=6Zjk+t5LzYpomBhQ8`6zYlANXdGkMWrOh!R5K0P}~%_ftwAjxQUsJQ7}5 zvMfqCq%&D}yx%_L%XWwMx8j1jEm_DdScSt`do25u`3Gyz-;|(ZF;pCdqdpn6(O_(D z4$yeV-ZXjBOZPw%uZh!HKL-lP<8c_@rN5=@OD@V={?Dhf9)->F`{AS94d=z6zivgMuLG-EXU zF78Lj_DULL7q(z)@%P!b{-wqhinkdIxj0Dd}F6-Ms zR^kOs7%^v^Bw=LY2a{OmZK13DYE)!G#O*QwSAcbe%&k5v9iem+pN%rz zz@sVL{0*a__AjsC89!0xYhD_Ap>}4kcqRpKHa?RY4_W)4Hf*fp1Yk8f_SvCXE^$BN zbogKPp_1EED;X#Ge)F56&&nSEOVMyI9C39~Uuh*veb{kTUs|6JX!Xk?abA@>cZ`Je z`~0}7yx(&^ATl(_R7$*xko$`G`-fEQ!4959cll0Uk3TP6`oSTbBxNx;0})&07{<+d z%w4(ZX@a;gm&t(I@AGSucusD7wf|q;##uZy0K98C#tyHap|fcB8h?N>9PEbFNDBP&D&)FPE|$k^nG{e`@mqYLXe#p;ROskvXt3}gpp@aL`SRKSGp++C zf{ah=HScftpGLl@j-?Ev?VWiK_^0Z3SOy>N9m=|_eKjB*?eSbj$rCaKRsspKl9}wM zqF1qiOHpBK4F4hb>d+4^$t3=!w*_#@D@S`cUt=aE+5KF{8nOcUC9~T`TwL)V7fCGZ z7m&DLS^J#B1OVp25EBRW?PV`UM(Q+g!1*Wj~ z%g(+eB9qrk+9u4~|6764iBkhYqJp@oXCiOkF2r8BA~y9PI=s(VW_83R@Mf>OT5Uvn zu3X?{gGcJQ{$yKv3$ z>qEQ9`K7vr7j1fXbp%rCwl5&oaXh9$%%1{%QU_vKZOUvq0(8i2@>z%4fTp~$8}@k1 zy@r){dNSktv)c|K)2A|5b|wwR6t_>c4+(etp_DcZpvDN-*HVKPiGL|ZLX>`?X_4ok z_K%wQ%44PLTInCPj9OBt)V8ecbrKD<6;pqFU#5(r(W3rWjMMdqrR|T*=x}I?$gUx z&1xvagi^$9)K%y>JW|!BC3V4C-N+1#`3DURQivK18U@Y}b2`8wjO_m~HGBp6dc&f7 z`%^GLYki5$fVGs?Unr;I=;ecC_9+jNSqkBmJ4%ySUs@hVUPw5E*sqZzH5O6bbA)}V z%&!)($?IyD8T9Sjo#ri% zQOb)q_0{Y8v>Qz#_75aCGcE z5do19b&OHnhj;aU-3NR$qVE5-G8od}mf~ufAh~S1ady@h7^8kxIF&N3B}WVU`#^2C zS*+;b{-@}n@6vLLrE%_Rq@Zh~fvPbuEr&1946D1-g8Sy}xLeD!Q83^w^{;e{- zzvT8gKz3ODJ;poQ9iQ`RUTM#d9|)v`lFQdya_7<2+=}uvJ_h-4ZxOBtWSjnrTV-EI zxf7}us+hk~KzKTG0pM5H9E(VYGadFamr5-i3IG2BGl(>xFsu zw!Z5FE%OB1mjqedX-Q61td9dY1w2Lc+@2na7It8T*yWN3OM|Y$%eeQ}iVtA(U?iQ{ z74>#XHp&2>L7_oEY>fdDC>nrl^Dvw*h=KjuC)MMrAz~XAz?i$u8+0b3Rgl>Nd43Kx z>ldygJoT6@f~AkJ#IekE);$--yCGmes?s{30Vtw>zDloz{m{rM={NbQ2_0O*%;vNy zTs!tI?Hqz+9AE;u^?idQDzV1?VHoXq`BYYxBb& z2tTst>#2q8?)&Y=zr>8-H8lq?Gk{B@cgv5v!)&_0^`-3M=wDmJluegreXBx+N12S^ zNdse7KMs-48cki&=8hHRhVsSjDC{+tg%0z-2merD_Zof)rc2M+d6#bM6bTke>k2g=+Tyer(2y#&p-tsSzt#_Ci&c#=4T0s3jDo8XQ*3XZVe(Lw0 zN0zA?fQ+AzOpj(@>BdBRj= zZGHaV9;i_qzkN>Urswp;iX(qEd|L!LFu&Otv#V;Gkoo>##bdYUIz_|dwI9?wyeHGnt4WF8@`51)jM-H>lY6xhsfbGE?2d~)@FBqt47BOq| z#)U>weiX=W1uELNI~RB?`ovcVo4?N1heNMF{5g>Ms?3C!4x-)^`Ubk(dTHFv>%?hs z1-v%oO^V{y5oB{U;Qf;%US|)7{A%UyQc@@pJvqTdi`^Mu@CKCh_t=|1c-P4(I~JD< z5B^I;>=5t0QLQQ^9NO-MuaW`5vE{tLekovUfyFVPSX9AQDnhaz@7WmQU5&5s{r1M# zvIHASEm01i$xg-VINOwhu2O*Ue$JL7umWr(XozqW(F_Mb^Y~kk5p*@8)eojfmo4F5 zg*|Sz^meNekCh1u3yWJsj(DDwxJX5}E(f0Z)7-B(Nbswu2) z7(epN&dlxuNqW@jV|kOmmETx=drlRs_fJuIFOirB&B<5MMD_8+G*CC@AfuusM4?=Zh6;6#&ggvd(EuYoZIQiTl@zmVR)?e|k(tlqI{SC$oAh;cjA0jJi zJPkY&p=0(7aFQhL`{ei1F8G%7vG>l!C8GmkWShSF3+A*Tr<6F477gz9%x&a28GXfMAw;YpRd3C7}%3`Jj z5%ws2fu1&%vPqOkMvsNDu!PkY%p9OIWy*pkR}HAlGj>ucar zkmo26lYj6R&=J3^c9`Gmb>}YYg{~K^5NkkZ8NOSA{95)YZZ=92J>-+Mz3j{n-KqLt zbyvh~?F*4V(4rg1>X+lO)MtRR6AS+5{3)HVe1_PWnIRSB`0}d8>nX|S0{#0v>hQIv zfirMv9oMpy?^Th861S^YlV9k5kkrr`aF*+~c9X5LclZi6j#edC#(n)tA8NeEaNRVR z=RX83jY0gUllT=oo)yrK&gbk|pwWB%5Z68O(-T}1UM(utogG_uh1*YpI^wICY4{vh z1E5QTl?mt!&>KPAL9>dhXrBMlGXEt>9L6}uVod1dtuC~_33uWxIgKw5x1N89a5yvQ zFV~_t>wRbZsIUI7q8Cvcv)7Xd!X)3Lia*;mv<33-ENoBI#Y!mJv0KUQz{R1_12dE7 zk!Zbx*p~S0=&yP#KT~m(8|qB)?DXCiu+0i2aR2ct&Iav-^2}K8V9=+9rn{z`1gsAI zx^OHZ3H8&o5kR=6>0lc8Gl?h@ojEaYjq+(@@?ASIynnDyLlc)=Hunm$SuO5TzWX3@ z8_kBZ22&6xLzFgWxVw4&=5m21WAAF$jUKR5^k$?dbb_fK>XE2QUxo_<79doM4p3T! zJlxO>%|J(2!ke>1HIRSWV%`8cNh}Y8kabc9J}a%ft7ujcl5xBu{ewTS$#xx7w3Vk# zxye6~lM^N?aHhM1`WogGE5om6=k5>p6}nr@r_;Xt#^K@v$YryAaE{^sb;CaqEIl^f z7F1AAg?eS66l-B$?bir0pLFH9pVt^KL3&>^G522*6jpDn@IO}Qbl;`JCtxkkSL{Z?-TQJ1Ak8Mcsa9r$3ceKU%)3OQyob_v zO@6jR^~LRg0>vI~uKV9kq8=n*Law6qzL|+v=D8Ua9d5#sLvl6n{1JJT@cwvl>3G57 z_LjQWKTR%y%ocvM&SWrSaNuY@GsDG0p#jz8Vy>?sxywHDIMHTOF>cvnGw>j3jo z*{UhQG9b~I=l9mA zUp4#_JlWz``80d%$`d8{K-+7~ivfd8uLHg=x7B@;miI)z9k)HRy^!GXVfKHNFhodCHCo?B%fd_q-2!=9;@qHes;M3tZxH;a_t`d6+DYb#O*`#;fTf4y1) z3IaevBppC>NOO7_k2m+_e^kmSMjANAc)ZkV$J?%%d5pWyq=rw&!T0c3d=Nbn4s>%B zKp9Av#*<$CXw8*I8_2DLFL<^N*xp|nlsq^!pk{Vl_~@FisxJ*xQJE$*kNyMmx6*{K z`}Ola5+8jv0IZGyuyH_8oVr2w&f^rZ+<~ztTjw013|ofoLmzyyb)Dk}OmVPG zMev;8(Ud1O+`H}a6W~~@+&N4dWpAa+Z>R{>-;84ycWLZEQ*;zjD!f*hTr9K)eSzC< z9`Tq85qCo6!)HV33D znF4ip= zUquAsoV1R&hV)ru&yPGSSrJFSh@V@kL4KX%S0nW|hM61Zwtae&pyS{gZX!1qEcS8^ zYKR=ITSR}uW%EC76Xl#N+*xoN$Z*1<&b$?5kE_>#E<*aa!vumQc`Z$WsXbvyEz z+DW02u&X-kUzF~iR~>Aospb4YsnNW+mFnwI&vNpee_8_u7rSW-03>JbeB$-Ntita6 zcqcn(H-~xXvhE#f(q2gYk+v^`M+1zN6_ee}w(%PsX~x-**|6zxpqcH{`ENeD*G!{h z*Pi$xd`b}W9@-6c%I4Id?68}k_dW6FR@5&)35hf5`D|-)gQ`$aDC?uCqv!CV+%APa z#Jv6X;Q@K~lrm8F%$XlgHMTBTirVSUz|6PwwbT31Q&nD{_}%j=alC~~txsZN51hG* z9h0yC>X{3k@x^5L%r7GQulOxoyd_(jPxWN=o54EF1_i2t&Bftd!0FnUrKW`x-Fr5K0bCAkHa-#&9YFz8C!K|H`Q4;#PR!;f3H{s0tBdpo&wEmn?y zbJh*ZAibkb_HT2YQQx|BSwMy!iYxBA!13oEn8%$?X~g-2yaUgkPqf))=di_DV!SX* z8})=Cm=uE%ywMOo4=9jw|Gxrxnf!F-D{LXZwl#K;7D&SGORdDa^N>mRs-{pk@G~~1S#_Ua0G5@9$_Kq5YWaO#IvkwOz$K(`+m)mPa~g;DG#S=x@Z&wu!in+;ywk_D78x_+&Z~FN zbgz01+iHqyn)LXqFYRN4=co|+VIslSLI8DYx5U1x1G%()0Hii-<)FtSY23D9On$S z9lP!0##7{$$hFvGXV3s&f_)OV}6gZ&?@u^-R3sz`as%~y6j_|s@2 z^1RV^h4IA$>(}r;Z7b03eahJE=BD0nRO31HBl%FOj_LYgo|glJLxT|ma|Vp#F;`}~ zFoU&Mg(-JmTX?ISmr%|qKA)cS-!pP`j4JAO zN3SR;NF8Vsedtz()WouDLg(BDVR*uPNQU!{3n zO%+N#pO^3N8Kq|0c6Mbx-SVyMyzDB9+tD&N(0kn$^5LrVWRuQjx(-`IzJC$D<35;$0zEmsF5xbZ?nr5@B6?R!i{ z@v}SjZi7iPK!#}iy81dgdZG16oWc6zJ%QFs&z2R8M0`I>Q(I!i^&Q5aV8*ZK#OV8* z4b)!TD^w0Xp+7$MoH}m+UI#=3n;w@I4Wtv}4&RwqfVq6qV!ZTRQ+t}}p`sZ-0{Ks<gl zGS=$(ID`D#T#LeB+9>pp$Nij8>W)~0EKF!8fI(PVC~orfMcpN>uq#Rzc1<|WoTC`y zCq(&>Pi6K|8`NJnmjrY`urp6^pkV(ckH;&{>227`pL!Dh@|_Gh(h_0?N9_?2oPOF_ zVf7|QkGP-teW*iXNj@4jR~Dtx3a_6n(n)#?*-d~Fqt>G_>@6$BN4&Z~Y#Q2usw>X$ z=k@3Jq!!lbH+O*HGuOmvezPQzk(pnARPT*>knR6|(DL-!u0P5$kZu+&AHnJc828*^ zB{-+SALaZ;SM##YOM*IFaLPV|5l0EnsczHC@0PN!%iXBd2~<#85Fb#Je&kau2AGGR zy-RyGrmFTC6pbTrbD3x^L&rnGJpyJw0Sg5#gls%70sHs2<4d?ZbKpcZO=&I?ndGPu z9zHQ}oFOzPaQtc`G5wHte`ni3o?FeQB=e@I;Ni;7&$n$uZTh2kClZCmk6N1G^3?}> z1B#mJUD6%{Y9^VvQr{LIGAc(|{G!fH2ga3fM{o{qCpY`f$ijWE7T4)oXUBfGX`0p1 z*QFRm2$00VtO(Jr^jbT3VrLOT6oZhdE}`V`i|Jufvnq3eOo=Vm=R2onsfYkj4Br z_<*2d>0)Ry3=a2`EAkX;4iBY`@xE+_u2Y9k{AzXBAT8{lNtP{N&8`IL!ct73r2wEBa7pxfO2+EgUX7$Db zB$=)0mi;NhQ?NFdl~>J&^+SMtPtloEuz%xb{T1(C%nZ^4OuB}Qf3|lWIG|_waJE}4 zBa_z}`s~GHxGJ*Q58=yuS%h%MBTVuFMUKPYk&c^6UfmhYTeX;xS92oo%0CL;FQ5%G z{qvU)3YZ;_ZQz`WvA*G>+H?dd1Ba+q3T3h+AW*YXtpq7cJ3+If5rihSfS`q$yFdYS`{Ky z^~2J5)xmhno^r-QvL*WFZGJ#dG9|Nay?(xjRx+`Tn#My;Kl14N0 zfPcn$&yD(H+OL&upWX_rhkBJ=4!SdIE5UVkAg#Q}sel|d8w^rUhO(;#uTt0|%@2P z2d;Nk085j*J#I@X9!ZJZ{14qf0!=|@Lsqto=F*-yLKIO|^s4oa->IL-s6Mx+ zFNyGRg<#0mgtd_AIe^wsfxiuI4wZx5BEkRL*-%hpFz%z|e1zNnA4lgM5B2}RaiSvQ zD&Hu{5hZ0rh>Rm4iK~>&CCN(m?A$2|*^$j9NZ(s>kjsWd)izxQu~&b9nv6^T5WRdkQj z8T#+t>E+PvS7P=u4=6}@H=kE~nWMuNmLf34&~>q|)SXWyg!1)9az#kV9HR>!p zc(2=V+fGKfDDRud7($oOi)z5x-~gL^hfBZ8f@5glk15*LZ&gGdS?wQOba~0%x_NUs zR21Zx#6vk>GGWd#+Rn>m~YKe3q^cQ}N1Svh$nyY7C{3)Z`)N2)~K2N~4wLC)zFCMG-QDQBn;bT_E3a zdEhacH?`~Xe1(R;r|!}eWs>o@Fjg8$o@fL>F>T-L&gbGVLlQJK3Xq|)Wk``K5czxl z#dSx3bs(%dx!RnGn4$mvS6}sPur=Z>3tTPgJJ8a5KDa+X>_OG&&FKj06Rzt zjl(6vEEmro1jUN#C~&FFsOJhx*2=lB>O4r6m5yIJA!q3EaRTClL^GZ0^omJgX_-!H znP}_bn3WaOWQ;RO5mB&+_W2hfT35r>{w3T_$NEA8>Q3?gBx_42jeuOK(Gd+Rc61Qg zqJDHu8Fj`OLQui&BqDwKS?%o%_(LuKsB%kw1BeddNfr?1)V2}l)z;)w@Pio($!Hf+3gNJt2q6hGH;#*oh?0QvnC9Et{u+$)9(M8<(hpNPMC~1}~5E0o+K#5>f&u)_YY_2RgGe2&a6kQoM& zK1&*Id-Pr#_56%D$!u3MN}b>JPhQBmVxgbztCvi7rRSLcvPRPRv5Z2H*U@wkLDIuZD3l8`RJrRN!%(ctN0sinRWNV< zWuSc=a1ux!EX~%argwqQD5&;qir+G5q^QfH(RRTR(5Uoy;6- zt0^YTK19*Xp*=9dv$@oxyP*abMR>#MC!E6F&Aq|xptqb4qgh_=4C-)t_m0d6T$w?T zSvuJ~15C2)&|7ng)UiV-`22v`!~PW_An_F%3k%Mrwsi?kFW#~d$5ps5T2>{2yLb8) zT*wMmQ)TVwektT4mS~#e2IS`Hpn!Og6ZKZRX@%_6J*ot-YEuqcJf^%#Y#Hn-ot@1w z|2e1^CK_0Gh!cXTseoUeg#FdO=OL9_l&KrtaAc?wSR15}9OJNTI`0jH)WRV{C=7Ui z>L4N0s##Hed|+cq3Q_KP2i5!XDZV5L-SUC*sGOLB;rXG`QDmknsY`k?t8y|{T+To+ zwiy49M2SWY^yFXIIj(=k$cDp1bMv-i20O`Fn{7GtgWrS;zq^NK2zM)M_1yDRu{V}7 zyS+O>2OkRe->L=;cOa{%-$Au4d7B>Y{>Q^kCbKFN<#NDh<<(wh#kEJck#>5jTiML787LUr?n9)r46RrgUCkdej-wYl$c)eD>>95nW{;&`j556cM7TztNno zzk8B>)m9LNa2($8rKdO(42jbw-2aUaB!RwMf)KD|6rXaB*OV(qv$ZCtPPOE{rcU@t3>wF^gr^vyCqI?YPCk!J;5L zcjujBA5->RAV?4XG6usz?aGccn^jV*-POsE3RF9r5n0v+TroES8Uxxc`U(=A3Nsb~ z!*;{OqG>5evIL|D6)=n$o9ed1**CPK2)8f-%D*k{4*@IBNnvow$}cSxs!Fxd*e%Y7 zBc+}!XI-L~1mfb<!dHIq7h_s>mlf1;i6hsdPMFORyv z6j~C*zyGN_8U|Z6H#G^r*!1x9KBwYiCUYzUKcvJv06#3;#|B~BEUg0F(2aYh+wMnm zOc5Da&84tpw~!;&bi><|BGgy?XAJRY>>%6jPRwNy)r4_GHbris3>I|u15QzcesTfG z12sA_wFAqLgu*6CSYIPfUUZmX$@I=*iU(=fJJEA0yt?&}N_uk}jaTO~XotBmZ@|{b zDGh$%PfVS439l_}#wex;DWfqw9t-SgYX^jb6g8Y6+uhkRH6;aHLYB}-n##5hW^(K7+-ph|l%7Uw#ZceD zaZgy>qZ(A-_po_B2$#$8;F6jgQ+A7I#1ARdAeE&|47^*~?$mo$IlogA!Lf>V-VHmP zOWE7`P8?9a1tH?>vgi%tvDu5^AG-Ag02aA1uK~*Q3`*&KRU109{rpg3$EmNI!`)~+ zdZDBjCEakq3bg;y^MP>Wd7ReJEg!do!o70li?{I@z-Lk+L^08uoxg*74*k&W5<{w6 zVo4*@q6+6fhF;Wjsax=ooh9dnJ(^T(*H#F^gX$C@haR!_Slr#K!uq-dkEXo@cx5g% zzXgFjeEU^^gv0XhYnNrg4?ETzTdU!4myj5_X1lc3*7LY>He9dcvRy#=M!(uZn#Lz% zQH{*I98-Lkw>Dk+Eqfq|ZCp)|AfXhJ38RQo5c|oM9&XIN;r~MhN(rsrTYB|5Btf;g zd^(g(O}JXU^Kq;NhTq0(<*XlYr*n<8J$+u6tn9BU?(ePstI_WQj6s6dJ*r^JHXh}X zL%@C~hbbJw7vz$xL#DsET3&E(r~dqgUOI@_G*kUk9o#qAB75w_+&rVug|_UcPQJT7 zpB=}bPQ6)9*yf<;YmXeeU2M~KTJ0ZtDA)MPOXQ!;VbP|-&p)Q zO5g!cD+D)Ia5@^*o%;xHS_!gyx<*;~1RkXntPgyNP{y$S z3pU6Aq^~MK2HI713%IpifAnT^XD40%HTl{NH2*cGIFzhBZ}1?6mY;-?CKZsLSpu{J z#lKjBF|**|_X04*X9g8Mr@%unW8Q_h$-a23QOG;RPW#&k9AN_+4z19s zeKyU_Od1da71ikN_?(BqJ8X?~JK!AXX}a)+&KqC@k4@%pO{K1zWcGMivBnz;ubi$z z-wWDWqwm3;$yXo<^_J{J^u@|Jjity2706)H3P zh*0mZ{4f_^yM>$k7D<()E~$K%+WigHKVQh`d<;EY7IEzdx#Xh@nWGZX(T(2gLJ^!8 ztyrSdejE!wdP2jC5CUo*?Uz*sSA^pq9fxHM zJ5kX8E}N9Dg!a301$G%p5ZeS{BXExdU4l)aVEcn0MjJ^Tyf&7 zJ3yvsGiGk?1%-x&zqNU;nJ#vh4M4Pca%#Q*!4idBx|Pw>CT19<+#<@$dxp2^_Wj}} z^&|E0InswnFP$}m23q=WFNxjo`y6rj@R5vI`jpB^)2t9I9oYksOxG#lq^GxEbh@rA zAT5P>!u8ui22DG*kXy9H>#UXC4q!Zg!qXtHHuV06!xG$LfPN=G(i+k?x9Fs@Hb=7j zy;OS%xkZz>RbjZ-Vh8`uvZ_u2*ugrN1O#6zsc%;wvC>MwSNwXX;D zB_lqn&c2Sb{?pWS1rPw{N&e9nJ0y0aCwXL;=eg4I(fj@Ob2KoI`>w8 z)mSjjODd9=&&np5?TKLA@XcoPS($NXdS6$^-l`hBBCM@4pm4_`OER&rRB7cwv6Nsq z+$XRXU(u`Ie%F#YfAIpCi>5{f%5HclpzuCG!$yXPu5Tw8S%%08ToJs6X+id}!QaAh zV2pCIKDd!lz@5F4mMWD2z9eS{&pc(b_~YTyTj43qO-%sKcRBNu=+dAP*UzN4RUS*{ zG5&j8(?EQ3WkdpTn6NK^JQ&#@28&fGe)MKvwUvJ2zl0t7?Mnjm`~SQa>{CPMQ*D(c#Pa z)d{Oz+9$asFXxAfcJqA5KVVS(D=T9Qv9W`R*pq3x zF^^U={#{9Zo>vrQs;UIs)qXXsE5rB9gL|Cw>%*7iiwVAO(lqwWb(ipM#}@gv`?iyO zKk}o>T--5NqZG*zu);YZy6#NKXkgy{@}HNPH}G=Y^6?|?cO1H#=e`RxOKbS(swY6~ zuOJK?@}1)1e%XMRcHO}O($@8X>~r_OuBM#*_J*nJD`qVg2>uOM0GiHa1kv*u9p5+q$)o%7Ut-WjyjM;-`wRA$D{buzou(L>+229zi0>I ztm)+$8p>*Q+&k*PMrgZEuT=@`(8Dz+v{crm_635sc*}BRY0itJ+|t-Pgm!hI@BRBR5#ubzmtUcF9h51 ziUL>E7h|S=S?rd%3gR$-8!KX87q6X>xszt}@GFt}bMf(+;`QZjTH>8mntUSPMyLz$ zRwac(UHvQIUc^-FZmyB!tW*#ex>rm3Yw5#(RgA?Ef%upkTOpopVUo|g=v-@17^p(8)iA3rr4T}j)x;n%P(ngQrc0^&hqOOUoqAwS1-oZ|$` z;E_j-!%v}jp%Q*=wB6UCk${_+1@B|L!tqCpPo)<>vOYHa7LM5$EWWh*v_Z(vOFnxj zAYK3`_HbUV8(3%j(2xXMm1dS`=-R+E&O1{?GK>Zb-;#2*!wNG!rJ;9}+;AF^nD$lm zp$PC)YGC??^@zb#1#ni`(cVWU3fBd`XE)7q@m>2E9?p$r|H?`c8d?n(lK1Rf^8(ON z_g<EKH&lpOCi-?Y+p?;w2zRlRo$=>I3l4=+KMcB&fzk#vi(7CRRc5~Aw9 zPROhZbdA;s1ZvQ4!j=Den{DgwHalhil5Co8ZAf*1_~IyYCJ^59u>-$h9p^g|Zt}8v zblPS4=4@F~^;`tXRPl2!QkN}MGxyy9`BdJ1S;ALk%7h}y=O zfLEjEYSgAe0E+Er@V?Lh(7RNP1w((6RH*uF87JZH;SU<6+}6#h;|K8s^yM#G$0!))N{(xR70l zuJrE?6cxxVa3!Sx7sNT=mrGAbn(Ee4DQAWqd0JeNQ0dC!kF7g8@A>WvpTEbnxV7!t zB^zcp%AL90hnXVhhxr2ojWy%Bx!AIx;BBK(R)IlEiBuancRP+3|0h!&~a zNGvnB@MoHfgce{;xesFifi2u^p?@=NY~G7xqH(8O&}sxT)|d~zV`K@v<1{>qHsWx| zLMG(5qjQRfBpOyQdx}BP1BqVuYB|n(-kU4hW0R$s3OH*mbf6A^+mpPA{SKh&hevH* znpgkrwPqZt@^yzZcbh;Tb|kMoIwA+g--4+(M)E`9NC&5Zd{T;6>nWUH@p{%rj{y zohQ1!22*|uW^AQDV1DHmMA24AEg8gL?klcz$;fu>0j3<&R=H)_;&+Zd{g9e9#_WG@ zNlAkA08y=?6Am+GjaHkD;~KAF40Syq0BH#88IZrps#SlqR>O-ghnMXX9S$9xk&w7p zw}OMzQT+kEDwgpVyDSm3<%gpy<@lWGJi{t1$tuxtkr>ii?-8-pawvtp(DO~M9YkOE z*18U!G8~z2Itjc=aLqbl;nW4T#X(VrKX1)*^MfWBh1A9m+I^7Hw7GS}Km)3q78kJi zQnB%28|F;^(-uGzH9W(Mdn<|hkW(h@nszV_7-<%W?>ZNT(RKW&-*JGF(ppK(HY#_d z`|64DjPm|j^k=**j+VeNAO_;e4dReyiEUaxjidrq}(`y8ZV-%vpO-v_oCC0~{) zRB3($R0M@2wEsy+m(p~zgmZ>mI`mpF7wTmO)G`frdE(F!T$d8t9W+wT*`lvL_^#Zt zPjDEjB*?>-+fh6PDuELf6ZzvH@+aFvIDDkvHRp2uTi}VzA~9fU z0-2t#<#@5mmsLU9YO2!+x#2PKk~R;e71Cr;dwe6wO)@i2DK}!xYu>ON9u@zo<}c0= zFOXImX7rarWj?MGfEqt&tU(3fWry8t*Bl}}w8Y(D^d$)}mx9lpH`#aS{lYo-CE-R= zRtC3i7N6oUGHFdx}WwEJ6uwLU^2UeXG`R;ES=D zyh-P;&5n^qUg31ZSkro9*fieeAm{(59BPk*jE4}1Dn+^V&X3=I$^B999@}bC_}`Yi z;5ebXj_(rV?LG@g)w6k~z0e&3d3gcHPtvU<;wGBzd#;V?rxf@*CK_OtSg+TmxdKq<~az6I}^+6?m+Zl*xQB2 zpEo-bhIbTj>|}G?$}(}5jWt|(3nF=>fKYDDu6vEGa7^M70%vaWBV^6~oo|1L<*-BZ z?d{s_7Mww4OBjFDgDis#p5nk5-J%RV(j@t7}elOgrH^6$97r_`-K@ zR;{Qj@NQ9D0>hlNj9&1~7Bw+hOm@|rI$>4q$tfVMBhev275A&EPwvDQlxa^%b-a_5 zIKj>q%r4T!nPqz|Fj)*0?KVVVNfxs}m8jHw>QE>6s_m;lYAs(@w-G^%6}uT!9bQIZ z>r`0s&L8KU)7rfg_o`)jk?iGX#wq<-**^rFCCoiIr1+wG0b}3Rwzis^Vlf1sF=}PK?Qc@nyfZFuilK%Ti=% z=A#P`AF3mq3%qAYHLEIaOu~#KY7lA2ryd;M)CbHlz0uVUSRabsF}_pBFrav>h({j@ zYkvX`!3#FUHi-#m|GH97S~IOSktK1)-gQ?m!b7f>`R_Kl_~Q(G2W01*Dc{g)Vi3w1 z)6=zh&Fzv(3m}lCi}eY2cQ=e|dvP2ja^)+})PBpny~mB1bYsq-My)xw3hHXynXpji zZc?O|^x|;SY!dP_OV0>R@XH?N73|R=cb`! zck)TIN-EKQP#iW~xhtA9V-RkYn7);Z8z=1^1D^$4JRlL|Hx01K_K{>a60kPe&9!tg z>rfq%0NK)>9*&m>`1oveAeF{Zm2zAhW}n$ z%+Rj2`Z^`f?HD(Gc8=_W^0OuGKhnpLu}nGSZWvs|q>#VoS>#DD{PfWr^0x3^_*5K) z7jPO1+k}gHt_y8 zv+viLlw?kq2b{A#FB2FoUZV1bkvU>&z6sWRjYM#_UpJ)sME03L?ak#xgVT(0NPJ`a z+@jn3CT0@k$jqbj_E?hR+L%`!63dzA=#lUobxGz1{lA@d3Ty~-fcfpRO7Om<(*w|F zUip(bB(!3tPkBxC>rU?ecHf;4 zKR~F_u%ui=uiTB`JKYmR8~l%%vzz|PS#}0l2(&?e=tul6QeSRZK zjc^jeP~$vAkNi_ufnK_t?KVvE%@A)m^vXphA=qW;@_DYzQ}m!*x4#0GuBSPw-@B+ z0%^VC><{#$xe1_?+{ zXHWE&XFpPF%gR~VHuv^P%tEZsCH(EKfx0BwwkI9mU^kGxBV8wV)IFy^qCM$40NVPc z1-)zRy!msFFO)Vb;!=`pU!|q|+SPBMkRHGpeJ_Ez6dv$;tQKCfaV&OWK%(eYT&A9{aDmkpYw&-!Mts;_cJ>EZF2f7!|9P7<{fb6$wL8G19X}K%(@W{mY}pmwQgGE)bl^&XknG0j0WBjUU%ZCNK-( zq)J)=h!P@5t2@**7vap7#&l;Cqi*ow6JOeb5LvV0viKWFmjLOYXjnp}2^eWaoummh zTG;H55KAv$6sNoG);TpWenyc>X>%qGt-m7d*&K)Unn05_I1a>!!uf8+?7a`!iSY}k z>)^lUe6Z@ku!iMBFjW%Tjbbjl4OCj&h@yoJJLAmC2n#CK5xt!(@GGxIteC+Rv(>rH z%4ShJ>tn$-q2AQ3%2+$Dtq`9Ix;6Ii{pj-oI1h@!mGhZlmSq^XiFMpAsicYTGD1QGBc? z^Jr%#S@zQOyLkaKnZpI^NIW*ieW{&C{2ow+VbfsK5L>ZT+dBQ8z0lBOV`Q?wEa;oO zIoC$Dj;m=I-{StYo3@tpRc@vOkW26apqvd-mj``)n4_d+B*3pjBcwDEwwM6RUXPqA z6-2q*1FrlE-Y`vmN7)^8FGO~)Mj;fKW{Y-vZo@!X4_I9lkH#DT_-yRK2q6<_u`ZWV zN+@F#Ow%gS4L3rIfQ4AnHz&!6Vv6$`Kc!yfXh>=`(O2?n? zyq=!z)xrO%+mMY1{M=}5rit+{lHXhfxYX*>%sfz_vJ6;ZEljb7asC3^$EuH@Kh9Us z?{D_2!a1dS599fqD(C==`x`M+`2;5U##`VAMDCYVn<-3q}C&_{wetekB1a;C+Rbu{}u^Pc*@Dl57O^$wVO?#4VjyH`=Wn-4=A zd|2P9eG08T0SEuc?9nlwWczcw4K6&MX~M?zz6DjS zhog+Sj*D5%aH5w=X+=v|_y5p&3(v@J;u~*sUAV0c{=)j+)1sk5I5%=J1%N>4E8vD> z>YM~~f2Y5Oofsx5GVUZb-@Jd1ni$+;y8Q=99$+5aZL=k>tk$c|c~r$tWPa6Zbr!`2 zP?SZIt?iTTQU_UN{FgTedDznA<2(e^pMQ#wyT|zxZFg09?hlneNTB4xWs|( zhKv8u5s=Xu`m23~-jAe&(8Bf9xaou0JJ6f0ytm(2bvR?1wvuJL68dSuQNdnn_RS#8 zl1r0kwq9muam43-xA z0Tt%9VAD1+$SBB1X|<)4Q1o*U1BXcdV!L0xWEdcCtrC_8DmMf^y}QGy8-4bCoSfPJ z*__sXbWVVib=nSM(`9?{8+`P!#(%Io8-?*M+=_H!P^@m7W65rIYxv)99eZM_v2kZ7 z#>ZnRq72lDtQ+9VfU=v2T?C{`k{3{iEj+JuTYJu?V2tR)EF-bp%)PdMe)R|X>x*TX zUse*IaW4Omxg9>y<)X5k3FLRs8EE8iLkOPzP})6~1d05HQ@Fy;51` zVhAy%UGF`C0zRD0lV}6)-KGu{V8ufy;7vFk1)!$`0t1(G_y@hI@iC?hk2OB4kz=W* zVCtTeXTbWPtsC>y?A{?zPMfU)c*(H)_Da7Dc5bXg8Ot+f(x8Q)kb@fSrxK=Xnnn9V zMuy3GVxm#JVea3@U`e7@JD-Maos`#6$HP3IhW?8*_QV!xG0U{EG;`$eAjQ^Zc=cow)V=xFw&kjM{7e)q^-{!y_k5ZyOO=GA2gh^p_- z`-GZgi4UlVy%JF=keveZhRimnp-*?FHy{O4-I}uQUE=O*x9=BpeDj%bdDqYwQ?Ju* zC+u;YNic_8$$XXk<_6TMdi|4x#%23QhA>4ueoI$1QYGms~7 zzk!rW7_6q4GY!b$In1jNX+U)>UPFN;ivo4tH^_fCzE{rBLsT%$$OAuM(Tt+zRU+sh zUP%H46d6{#P|*y|efx|H*D;GubW6B&BPtclFO*;+^2%Lr8`N^;82j`Ii?S=vZe zb&`L}z26-4xuP_G{J!5T;&`DB=lMd4(sf3`3aW@c3~A~G=_dzX-4;?yCl`E(+{(y; zJn@Z00n-V(C{h}P+9^aAwAvp$sJ+1G?;VI3KseyUG#0WmgfAm%KJ4%r3J_6OM(fm4AG+n{TJk~-S~kc~!?YtcdL4mE?DVr4hD<$CbfQ?d{SoH)`e zoY>b^_aP&(yiks=5v?;CE6;lQo6Gle_bX{-En<-7_31VDY?HonxFX_ONW5=~B14e| zBrk3wp^{%*xaGCtR?WgZD}`{CuId&wK$qe_%2eP`09Pg1A^>ADYPVVPHv@RA62Mol zBx_Kec>lJLS-{;~cO_YkHtwuHn~V;0t&909iVmK~m6`N%%5=&ZeFt4%m5&qi+*kBraVEfLFIe#|8&0}eeUHe2$ z%FTNb9$Ko}-JTZr+Sm(@-m0YLZC!KVT)d73<)@q{A|Gb_SJLPRAMWVYgX|L_Dk=b( zOv~n%;Ql$LHo1s7gb2nJL4J_WT;&1aM>IWp8pVw6{=#V;Pq+iw$XSG~cCShujR&P@ zYj zc2}^Wm?=biwOry}1fGE?FuuEiUOp`8@%|~_4eF$|QeVNF6|@Mi0n)M|CAigjeTn5y z4kwTas(+WC^}OsTsS7|xq0Pl5r`x1d4`IL0?y~^ z9J}}u%(MS~aNXfcT5R7f+*u@7oaPirgEXIl{EnvA>!i9koI~nw6l}da(A$e0*KnO3 zure<5ebiF;r7|EALqGP4Kjc1)%DSS6Y?g*tL;GUMr5kT=1sFi_+WVCRE$KIMdE%yn zVHrRVk}Ft7)#J@11X5VD%_I#8l8pT?B?I>422%&-#Qh zisylyIUcuOW9Os>)15(W=|D%gHG~Ih{{dm7VU0vM8biG6w5xSB)ru1npifm5dbPJ0 zZJvhjN}%Df@|~U%or_+NM39TdGTlyl04(J?-^|#9to>~&FF+u>C}Xkl(QJFd4Z5by zao;J>)4URLv#raP`9gIiW5Mdrm!3-7(sd7S@Avuf=+F)jC1dbJtj-M&bIQT9GBW!> zz!08bjM`hO{Q&%Vz)UO{&!8fi>dIwROEG%Skvpg2>^lNV*E>{cF9a?<5$rG9fyXel zO2oDx6UbaT8ZBN<=j&Iav-KG3_L4w-bKRKr|3j9hC;{ccuIq2h`F`O39enwyzLW39 zFo&v&^qT`U<}{$jT3ejvdx2d;z=E;OT@v9e|? zJcD$lj#9vT02nJBV7hhh^ymri6-=46%QcAejp_4Aqi|5*2NF7>=#C5kx*go{YG%QD zC-636y&O_aeGZsQCCp_`@*ZqYn%vzGaxrE|(`JHA?W3rzn;VFw{m?0mzoG8+c{^Rc zmkpBcsV*#M`FQdg$0tpX=1SBPv`fvJtAlUTyL)8ssUkL+jN^ab&Xblo9_=elvQjIB zA>YMP_F9??RNYp>a$^Zk-EZz|UsKn+#eC?@Sc?R6i++6!9ZRUp+ZnA(IasbL9gBGt z-%gMSGBpa0gY0GV8w0K(_!A0nr4SrPICilGFQPP(pntXDR3h@lMW?!_?fj|8JGlyN z$@>jWU9bMQzz#1Tr8iR2xQ06X)>lS~wdOiTV(VzI)f<)8&C!LXdjJJ#;qXRf_RibT zM;ceVUrMuw0SSeMjs{wEWd+J0vT;`dItok}_dqDAHqWqSpcB-QAreMwfGeMQ@zy8h-FK7U%#TQZk zrfQwb?>++C&c2mOHdxL8mM-LtXutnvcFTzJoXO6(oIRr~kzjMJmRnTBj_Qna47;Ms zv5rr9DyK^#e2%Y}l4ja(zec^cM4XaA1X|o2Bs@mIu72)y2_(8DAvst(&n|x};G5f6CbS3c1~2S8BB{dBh`)j9GZfP;T% zJk1;LMjdUHWNbLwercSX86|y>f&uRcTg^vHOZ>=iPYK@Jy$1Q)#;J!>R#s_=S#bdcN65hOsa!ls( zP8Y@?x?(qJyVChk+NQ*co;pp*{Ha!Gk7xJD?XyDuw_g9cwy*lvJABC}i@m)!jUqs` ztmO#D2@YKjr+4}HwY@*?c^%u+EjgNU>qRd|-`PT(s12>z!8-hqHafukL7UK-q91Zu=66ywGAxF&ryk zf<(zCpV^&EW|BUvP1Sniov^=lPOcx94bnE!2L9_K8Z2XZMOVYyl19#S94miea5B+a zbE%&D2bs7xJtVribq;o??uB*cD@Z z7W)kg_iNrfqzK-9;`dU579oHeMe-S`G}YWd%)aH!$XgZR;|ygYa|Z4F;K|FovJPQx`DM? zMalwu2|n&cEY33mQ0A4=omOYRT#{6Mr`?A9@5_)@N)?3`0wepBNtL|9!qZdba2aC{1#pd-@xHHh>fAu(Z-%w?t#V=6{)@=7!VwA*#pp%alR|X-xlB~P# z4Q*W>t$3J^9DlC{)u7?(T)-47rLTl&$sQqQY&7s2F?qt#Ym)IZ=!{V&7Ll_(5aQC% z-zzJbo~LE*eA5ty6-~!03%&uOAB!*A2R0fdkxwK}&+#$%HNsF&4oRXP6m zzV}95^4ETA)Go!8(fVNxTT9HkQj%dEh%%ZZ;ZR#KK#XH^i&cij=Bhm2C+y9ANB+p) zcj~q@>yPZiI$PHDlcv*>^!+1jv8tqH4IB9(JH1C>$u(N9PhIUy7KYtzKlw!*Jc>$+SX3J z-jvMVA2yI#3HbN=bGHZ~T%yj!W2e=YFNwZh2lOVlgY2zzTsT@lLEm(w1pd?dl_F>q zUS_3)yg^)@=Z66U2$op^JZRd#87rm&!G(DnYom5NH>g_bylN{uQM zw$!I=W0+6;;G@~D0`44UQYI5qQ`-F(@IEJ5%w&=+`(yfbpxla9fYHfz*-G^i&yn+8 z%);y@!o2EMZB8P{dC{N0As-@ve5$uu?sW;0+vAqo($@ZJbIWMFV`*jsP%iO`aFv?w+BplLRyoNi;Xz&X>F2I6tUjrp ztB}Pm=qV_X>S`w9|ED(ed~6)Wg)|5XWY5~mFx}xdpA8|FfXVLv>aIX^)SWzh=^s=S zxR^_Hqz|q9#bkN`uYp4}%Jk!Fs?rssQ(KqLF?E%xrvl8B`CJFjsfrC$GXNFXWCTl3 zAi4mxd8&l{y}kTs4qKG zjM3N+d@ukL%5Z4%VSXP%B|uwT=>@RGQR3=D=CFMcP?|~z`(Rvb)-K+xkE*!C&GwN{ zRuq#Q=cPNR*Q#a1bxchdzAHGpOG)0;FnJ>v)SrNg|L2^X2rCReF0Uk^$I&k;^8CJL zRDjFU;!j2ggQt`892b`KorDn-VgcCKvxGuS-Dy{91d5ScXVK|n|2-DDWAE|du<2>3 zTfPc)#J9sYB^~lvz_sYaz(#1BxqGy%PudEm738d?)uTr%o%f=-=`c#y5+Db9WG@|L zE2#qqmMn5ie}}&vZ!|g6HeF zUkA0EkLsaL+`M!`<4bN>OqhA{FZO`XI_sRwEurlOeK*=hiZoJaIGFrR6qESS{ zc#Gku6e&1fEWwyMs+C4sHzc6}{Jl5bnfO!V`z?Tby=QK-YW(?zYEzesmC9`3>@ccu zt`karyW$#P4K%DFy@c0b3{ekmiCp!JNWU3{Y1Vgdb|r_)Vu)QnS5}u_I`pDDKsPW& zjjo_*h$(Y_*OhLy-k6JqoHk>q1t!Awu}cr7WeKlHi%73y%W^R%qObYCb|XnKl=WW9 znvPym?E#95b;~-Cd4vbRrb!wR&^S=_T)IP)zz!zi%Z1fGU`0atIeE1|1^abs*ma)u z>J0#`s-KuavYj@LO?237Q@ro-37bvDY`GPvm1mZ=3_>M*!5iy@JT~^Qy|T)R+dJwX zvsLW}MnU_Nvnkj^9rfsal~TvAt6{B$O^O=(X&@kWDD5W=1wQwEH*rdrZ*P|dQ)WlstEf|+L(@6A^ogo(-gvP ziLzfzZ`~CBA4lgN&-DLCaot?Lh3>9dQt5_-5Vqu7%59Y*xhzRqa!a|+rig@Axh5>R zC70zo!bWbP$o(?RZ5U=YcE9~T-`_v>@Ob#cWBcrVIj?h`r+GNaq16M#AHDH5{vDEI zLYSbJftdy)qU%DS2M1r4dB1NxQ?H_X_GFfYS>oF)EOU@PKVM!3`8bAv4(f<_rNqze!JbaIoL~8s2-wC7kV$?!xFz6I6T{O}gaufM; z1Q8B?bVx2$O|!!iD4f`HD6L#SS>Cn=A~E*B-#0%?+=gCqbyn4XLjpljM7Cb(~7z zo(mj;0VpL1iy~`(rt5eq-J5yan z-Oh+lka*BOP2BY!NKtOaHHubyh&sl*z&Aawu^^5xRLM?kvfia$qjNJk>2!07w1rF# zeLZnmK1a0_x;0p>V&Dzn1xB1s`k7g|{hwV;-|J#VUE5&1NE7-bM36zTe)gXTEhKQ8 z*RW=5Z@e>hI24<43f?;&Kj-|IA>SNYo1pvf7lp-sdh=L!Jh;cYK|*#UXl7{sHuQ~C z`|(tqFfsHry2pg+UU3YYVY=MVUI;r3blvd+{b_|srUtbO*qL!1C*-DyL0Ggm&jHk` zDXcT4*a!b6GJv3n1~V!%F$UnXO_v_WW$UtT+T|Dmg7->Q5b3s1ocr)32#uv^Tf9vhv z-P=GaBPTv-6$jfmP01W6ac4Rl$B zxo<=OmHi(mh7S)L9)a{t2C^fTe!SjKKDzTz_w{UFNeKnP<`;_|Y4hy8YbH+S*ivcv zma}Wy1N$?(He?gS_I@DWI4E@|TkwihW&f2`9-tPmGkT_k-LB0`lvo_nW8 z)-YpunMKtpl#!>G4Iovy7e2@{lRag#xr1Ig*crSH@)zL-w8hil^}p3oR<#R+u_x_A z!4l;3++EV~uclq{_6J^k{r9EObVO1pA-ueJ3N&mulbf(NwZ#h>9f| zcpA%%e-+sowaeUyYHZvFv|lA9$tr{VDeDsP$G1_ohpW#5sEznSLRT=Qpr6Ef7i%2a zcKkE^;NB>8K7A=P;l|79)U;Q5wgquYr$o&uaktJS9i?Jw#tq{d|N2Tz5rYyN-rnF{ zw9n4S+yLe5QK@G1z3pu?6sCz1In}&B%?83JK@w16M=NZ_%UiS8mRHS4Le6Q5?h^7K z#VF)vY@{N&vmZ#abY>=h*6#TLU5WKK0dp%9OPLy+eh8xOF>mBL(6{n% zh`fpWJPtJCzUV(=CG2i!6?ki12c7BduWc>(R`a{4D{1uPvCS6AX3r{j{?Sapm41uA zQGFN=%lNmYU{dZ#Ppg57%x3e{AKcoO!R%-mv(wPSe(1RKh)6L!^Kp`_fJof4yY3V!BJMKcX z9DYsDybpXCnC}((%WU&Zvw4v(NdvNlWw%Nd^_hwoF7j>-X zRc8}R>h}opTmtrzjnN-Y|ILI7336tpZ>z6-oG_hR~p>5;c(u5Fd5rA6(*txbK`Uizh;QwN>D zT5d7tIXl(yT0JEz`tK3ewx>3aqAXRE4}0dN_eCEB>%Ts!QLqc7te?~N*Rs|9;<{R* z-}@MfMk45+la^IGWnQX!{5vB1h)ZrLIAa0?=4EW}90^B1tc#Y{IzJf+mV0`xC_uV2*3=C1-a{F(_USuN-bJQ= zmDYFHwOvY=-`T3JA*a-g^UrDCt#=dCS9>u2dvx#pMfIw^m4|`i-*!bw-G{BC0Hryj z9UA|v4cBL=3#~6Svpg^tiBI%r;qC-=WmE*V%bcCL*7n%SbEcW$ogtYMpg6l<<6a(S zU&dvVi0FJZADMSr>sxY|>xmY>_ofdTy8rGN)z}`}?vZe#UvdV@eIBtFyE{EyOWVfe z>;2w=pL-QL4ZsqcjR@&5+8$+ex@2CCf_R#IjjX@9{!3c!ss-ws@a9(FZ7Fa{X6f^E zgc>2CujD&(=vvC8Bdk5}tB)*9w4dzq+%j2%^Mw|p3*a^2uTMgkqsZ4_Z0z;(+CUEt zVQA``c#PrXBXJ!$iRvV1Ii7HWz}k6um3JC{L(0=~S|0%h4_lS9M=6kV4&CX?!mSb8 z0hJK+3@f03Cjb8p)Wom{1v4Pd)ieE)@W7+2(KFvCNEQiuTya-aS|M!=caU=3mz0~A z-Zmzr^{C65U7yX}UVV0{5jfA!t8d%$$eMp#`&nv~jxOsLyy;7h+2`LMUuIhU+xlZg z0`wgfB4cT(S#v>tZ1c6H%au3YPlh{Y(V3fKyn+~%EdC;Vs{M@`%laZzqQ=$qgq~eQ zoA=89iE}d{6>{XRFD%H>mBb)V-Q9C@U`5HD4Mb zLm3FZQDDr&|3)((UhN6U0L|ZN|5kA$Ln2^NO~%bG^jLM|Es;Ubwi{)yrS>--y;qHj zESPKo3F#*Ec39Y0k6$CEz_o?87rzmT{e=#jZ`q=-$E7tsNI6B-L!_80#0l9;JMvtR6#B>M%~{Jdr_FEL+8$2}@afzNLE9hWWK z81(NZuuQru*J|vNlafZ2@jXcgZ<%FXDEPYaWTxS*ffPte9YP;{av^W~YN@vSk{*86 z8chDlc~xk(a+~{J9@flu+=GbeR`XXI>nw)&pId)bu}$5)tKd*#-rE;3<6B)r@23!k z#to0j?ETI1awYZ9#g~uKU!Du(AE{EuHD-* z_v((cymKzu$K!m6M=ZJ1EHeBdOIR*!v{`$HW2?5WJZ!K#sN``koUV}nXDqD%F*dW2 z_I`g+;s2!pz?K7j<4C?1Ar42N`rJ9A96f#1S20Ih*iLM2+n!FsTOn7mL%O?86Ys z&ph0Oj6eX&w>Q@y;t$DK^960_n#09|laWtv)+}jzQDDVG;J0s~>v}q2Q$3b=DGCNj z0ZdP^QWwXY(iDbco;EtO%S*vd_rE>@K)pN-+_30;)-uGxY5QmK2~EcehN14m|1#;z z+d4RoSW)@TJ{D{}&+m7z%Uz&?UO93*?cmjBK;u?tK580xuM`F&E{}{W_`D?C7`cF@ zJ7s(Nw&S1k=`;W%$Jkf1!*Xo9>Kt?MzoQ&bx0j|JHA?~v3BBRQ)MeA>r=E8kZ}AkR z?w#KKt}(%Ll{CfI^{)(+n>&3Y^un=FM1$nZw9k`NwJ8xRc$S3cRx5lFuk~Y~7pQxJ zDMIatUL4{he_0ceVXgFf%w4>G&gD@6wOtorlK~EGOO7>ARhMSPSvAWrtgnR&$x%zlD@NZZq)xYeJSbj62#Q5oCU>8l|8 z86OS+;gejDWrXY=<-%4CK zZQL?0?S zi+`WM%r&%VZApO6KlaV+!NAkHGXZIK#N7Epw7@u`+%##}Fd32uDc_XFQk)k*R-w$a zXk#3<P3-=rfe@X)M#7GScN7`b>DW*H{Wva9IPg3_;J`4%$-w zTQha%qqUF6xer#2I#WIBCR&_HykQ^@uMK!Yg5XwuD87mArc!u#ntw=$Qko7-Qepxn z7QWVuLVDw99?1(4ur|Am{S)&5u1*k_uj-VK-X)af0fWp-nCD zp^Bj8vQ+lHyO=Q^}-IpRxlC8k~p41wmpBG71a;<-TJ5whb~Ji-gmNeCPszxK22aH zTA)R=z3S&$9E(^M^F}6VqBR=8lHTiZI=d|C{GjL+s5@s5-zvq(?ukxKqc5u8UHrNC z#odqrsvnh9JRo&K*uog`Clabq0pC!Uv`WTBSwsI;ULgzGnYwEea^Qh)TCUlz|;14Br6_n(AIyjN;`C!S}%2uujkNsPB;pVK}HQ@lK^L8b+ay5xJK-KdS=UuJ^YF9Ap*X?LM zKq#_YE)`4me-&G?^Yk9q0hJH1ubliWXrS@X8@U9{&yi;HfqB zwge!-e5Yi0ZVOG^3rYI6|YLS$bMkgqwCjEnjvs-DUJFBYIG_Fi=yX*zmn%f=|N4^VG*PR@_2?w_;Rse5 z!UH*>;b(bOCGU^SU8%V8VWa4p=6l%tg_G7zPQPLI zCswfuq4*$R=186;m@z|s5M7Pxi_Nke-ppMr8U}xSykSUmYlX;{0VUdl{y-5>RxF`S zrz=GTP){(7w8vlrN7BZ$Aq?~@INtBrap#ketlBi1Doq!BqbE7A{jX&R>0bG$rBzce zel>Q2Ag015xLDV%z>Tc_mNk_75*i>6_CLfpvkV59cDkD~9UUF(kH5rp=~`T{lH2v{ z;j^dDp6pt0BURqjzxG(&e84N4a|Y4@Nju=%uL+6w%fhy6W^Ovg6f=@lmNlA+ZU^rK zNKcuZKIZXWWiSPhTx@tYsraeq_gn*efGqf((t{dPm#>camCPV^aw2c7_1{GO0DY&e z`=w{?2O2UotCM^H0$LH22%f(d(xY_M$?i7i^&g%x?~lPmfai-v!BX#klb4oFwx~U} zF1SIct?wQ;wEW!$aqv#5gW~*bmeqiiBsQoQw-$<8X2hebJdmO`fgjnuni8GKT!bgHQ!qRSuiX;HRcIV9e&`(7@ zmV=bP_Ov`e_oXkV!4lF{eQRy4>RJ!_)xx<5uzhz4AGB2Iz>MSI z#58i8MeQ0WI=3IvvjRCGbe$Uj{|B&&{{VC?99?j9+GKj(*qJN#_xI%|cVjHglkh-e<9TTEeTWCHDUhEYHz5Ff3qx;$9$3e$n%5x>CPqz9?F%%sZJ z>l&{32ft#^I21=b88$<*JRwyZuJu(ZL5J?AJsgNft=We5g*}^8ZuvViKfk@Wu`RXb z=?TZvgY(bB{~oTMl~ywPW}4%DNGZ3}#Goi|->avy`-Jc>_hyD=oVmYXEf&ZAo}?tj z=66?=#0E`08~vdzAYK3l_!MX3$IsQc9n`Rq4}reBPW}3^u(~^TSCdDdHa$;A(4o*} zDEJE%uQV7VC5)dxBA&%xxFj@eZfQ|J-lv%~yyy89VSe&E@|M0E9Z%4EaDP>p*m1PL z0L+)#R&ou2j&3)&+S5{Z%%wh-uV&iJh6v+zZmF0i_lue0aLXyko#}R_6!}%;pvHFj zNNP*c)3zXMe`g}{!U;^EToK0Y!e62H6Y-hg>M=)YODAToz+7sI!#Uy6n|F8!iCoC!&XQv72_YylyGk0Ao@^{t7s4Q+B zC8!tg6wf9?5PNm$i=uw<%}e-yJ2gy~x5o$isDE!mJvr_!-1sqif4M>ALmjDv_$*&w z5_y(%Gp=E^&Ry{}KV~(&7}8B@A&uforb|U;!py*{MQ$t`@nGix^sEww8LkJ5^wuUb zwePE1&aVd4n8eC^)dthHAXlYoSl&@9->afkp4^)rfXuW^ZuFW(vg!9U(<<*viMoNc1F{i{~vp$oT><%U91RX(@ZNJOK%i5d(l_pdToZWTxik(e`Dlc1% z-2O1?j*Uw-rR-@s#^9K`iGD|7IRzlolOR*Ob(pA-@Mn?`9Jf(vVgw;1Zd4LClsEw; zba|)hS=P$v+K~!oIGyB4r1#kAo^nxxYpjYz}+X!nFeUn5J;&c6kx!yZp9-X9fsg8^qnT zBdI$%h*#aQy)9`6i9PC^Egs(@wzgC62`t3pyuy$bm)uak9|T1<`gju;f;!EmT5wVReiCT)OxzY?ZapSg=H zi^R|GhxcKAoXY0iKt03D$BGD3qEQxklx>U?O=gH}dO5T5ZrhH6Kjr4VntL~^`&J{U zK5#Wg&q!fiu))T4rpP+D?@W;OjrQZ!LvCb8EWi^6)Yxl{fxgKRpW^T+G1!-ccU8&d zUTtUg9F$^@D{gp1apwjcUXkbiw7*T%Q?U@%?(UVBjdn8$A0H*Q-{KP6Z_@>z*J(x& zV<*Vn@uhIRu~zxLcXRDbsrxT1(!&K#zNsEH+ms=y%ZWi=)=#jK`8UZ2V8Yp*XWz;g zZ&_T#-Kgl$LuEg~emE^cnKrG62ovynUsUVPoevrpCl zJbwD|J3FRC}6_V;ILx@VnR5ivJTpNzaaf6Xt47EgSnO>>%cV4iC=t5?VAC z#)lN6{9~!06)Br~vpI_t^zc+lkPLflObH+o8VkBntc{S3PoxB+5Q*xZ_7hYu;+tMZ zAM&|`zBx(^jXt# zhd$N$_hUUEM1>~!v8q|!v#_gKSK%KyMhx2m(I0d*X`TmzySSv!rB zl9zX8N-;Zzv39^{T>f|7R?3*@z1q2=--2b56XpQ-ELCYEeC*IqeM+hLwm4Id#WxG8 z4-=T;M3w!Z(-3CBL&KD6bU&NuINsu}9Oyj#=ISF7?hd>WOX~i6&|8P?xS?&kxV5Ku zZMrUavIQ+{T7e$1Gvt)M&@wt7ax?_kf^3W-=&PaV_;{&652Z^@zPJ`L`PkE*(dzbh z&a0z`5035ljM{+t>J9c(%SZiQ@{a0m*T*%#IA1G}edztIf2AY#!l6Fa=$#{SCswwRE& zjzY@7$9r6W1zg4;x^Z_gLO^oioTZtFi@pjcVsD~ls`l-aVmW-;+hNpMsuA)>{4nN`UGDVQR>ZvN|omg@qz;psx{uq zm?=KD!D!>GDBa<(S#vl9Ht0o8A`I!^a9eQ!jy#ZJymUXWEAd58|uXAp5mu!*@=J*h|W0t|I)H+#-Nv4L3o~#)??iT04N-wL;3| zyR&OLyH%&1>lQSUipHC8FCgegdrKn1s8T-T-jD+{2fR*A#Emc>jC(pFHSS$CtBrvJ zHk+Z5R1EJ>OA>Aw+R*iq3wGo^6#vXRZEFd8ZU=7#zV0l3_s3p+&uI1G_^;4W zD{7({G@|2L>yjkl`So1?C|TdgUd{$+2FWZXY+00=_z|cOoE@f|#@{n=3-Y#pQf@$B zT|Fm+g18n{mZ&~Z6QI3go$6%ri7=Ax9o5sG4vKR7kp^Q@$n1)5zr=mYB+K_6-8t~; zq*>50+j_NRjY0D_L$Q<#o!_5mGPS=vh%Fi%%2PB0*1v)(Rox3aLM9y%6)O9tV_y#j znU@Q;SH~8}+|W*Sj!*jg5T0JcVrJFm5gOV4>PJ$}zn(d2z2W)Da)34PdiJ`GN{?eY zi@m-@r!jE^A!K#^jejNXpz$Qw@nVtIsBEx*P>@vpq>scNFE8Bsx_g!?7y^N;L)7zc z(ZB)SLCbD{j>f@rG9MObV^dS4RiNdt=Wp{Tm}cB9&;9 zgqpmxcH@o7XyZ9z%V>vn_!nLe!}BFG%2+Lun_peHqO%Xn9Y)|J@(*MmIHeB#D?Gv~1>qtS0IyLwY;v?AM zLM}f2CV)p>-v(?8Q|4nJM@|HYdy>rJN+kcV*J+pLyuS7LVV2ZeyVCeP%@bxSoa&zAl(<4) zv#@@1@P!noO*xF&TkTq&-^BSnI1q&etylVYTe$>O>#iIuBq z@R`ssp&>a{8aR6G9(M>ljIzlcODn#Xs`ii^x7j$kv(;pAIjN$|_4An9$hw3iXguFL za$`@k{3y(}wxOZbY1eD;mVq5Tu`*bGJ>(`pjutOmd3{W_$3kmQ4j+kFVw_vJQ!LL z$sQI}DMM&|Z=P|-&L?SYNf)k`vBMt;V$ObcOGV1jg3_-{Pc=$$SR)Y;p7`dSFVVc# z-culkxlYFOJlMqav0_f>Bel{ zEgV^@M&9Kah`f0%o9JZ7T*s`sB|>@=rv(Y95p=94LsiLX!+u_ZeNUa-bY1cCaPSd* z+kI96iZObhja*z46=#*E1Pi!nkdQ+%i{ng8WKLppR;9Pc7GlF`WrNA@a z0%FLya%ds4E^4c``l9u!4k?Z#QrBrAg;3dkNoRDnf<;gPk{vF>5C&YSdfM2%h}TAh z=TcCJP+wbzEw$KC3>oun3pFWct2N6@5eZ6AW6j#2Ub(p(M^JU+Qro8jgDHKrILISI zlaPKdxMesaOkjWv=ca%t24)@n5=d|Jwv&m}+fq$+Pv5cBHoEEy?5);&nse2Hf7{zS zhZiA!$#rGp4ae%!NaML)B(=siO*rHO9Eg*~*ExRHgfSf>(zTVC$MSD#+B`jVF~EQQ zSJ7cxB{{XJp}7L%p{yOiE7Tyndlh{Sh10nCm=p?W>ImGgFf*qlYWajxB5efY;VQ`u z(wub12)EE>mPG8HxsX@x(uy$>pyfk*_-3>n-`Ksk#oN?*K@GPFP$s_vSkCP8P<`>i zpK5?7$1bwv+-EOD?D^OD+OL-S&@I_NA{;awtuFb?{i-{pUXn(wL~a-*YagwENa;0) z|8dhfTgr45=8Fbdk?=$*Yt&!lGalv}>LlfJqxLcN?S|}=rQkuFf?p%xI#+}!1MQ~+ zWx-%L?`Z`JL6(=#ox>(tP8o_if~mxboPuY-NsRjKKc zPsr3h4^qMP((Yv(cX4q!Y;t&QtJ)MwEvh?&MbSf$SCIEUJqUfj9xjFvT7(MXPN_O6 zdF|;;OX+Pv^^@j}Iu-Q*?SCR$X^rc+0wV4zh5g3Tt7E+QIpvoD2Pwl|)S86$0fh;Q zP;lxqEW(?L23o1r-aW55lBTk~)<>{GC;3ufZ4L~j(C|jgfmUJkIy2Ug5x~V3(NFZR`51o&0@FB=N zCS(v`sFBr?VsW6*TM#aC&Gq8XzOBN{lUj<`4)!w4d40*%!+6zr&LB`q zf@xD(Dtc?uC-82c@2cP~*zuUhJ-+f_pP<7g=@T`PUXrqz1XpgUzNSx4pWT_R3y9K&+UTGW1e?82h{ zz@8a{#$A0RQI9|i8h64^f_N?C>{lF(=*Ve_`9W0n3hV z-Eh9z<{m84w_+%QOq<^6&~Iafct#pwmI!UPM5_qa#DbOytf0&JhJ-2e_rNGM$Y1mw zTr8%L&Sdp0lT2wY?#QikISM-NN&GQWC zY~N=SoGj7nGyX2qf37df9dHJxv&aRT8D@Sotp;Ns0-QGMWu9+!w1Z+qp#{1c(-TY3X&1AMv ziNW**L&6RSw}lk6H=wS0ZU=FDx1^3TUZ8_|6As*j5;9GJWe2EEhkw)CEN^7#VU22n zF#FDAsvplzBpMAnYLD(-iNqwjKhhhN5;%JlZ+2lg$$Kw3YpG9N>qv(-252Vs=Tg64 zD*|)ldfsOKb=dMeU$P&5!*pXGc5~v|rMlJ**8HR{&x7*{*@@+m@DVD;i@Z~}u5p^= z!;aa>oLja&eR60{89bP!;dCKlK)-s#Qckncst8)~aP0A8`Y@ylBtDtFS@zr|D{%DH z>vLM0+Jg#N%hsy-ROM5OSk^DCVQ%zcL=$iboMFuVGdFZh($Sy&duAI9set7!7(M|u z#=W8r@d6}ROo?sm_uM}5L-;Iwp~}v;PmG9*VxoY;@tS@4ji(HDwN!HgN(b7jYUJ+{ zd;}MlQ6DzuYlMeU1tUQBpq{7`v)RacB^a3p&4KbFa!gOd0DTmAKk7tnE$07@AQ@qA z7=^-c9&?<1^B=)(-D=IX+kj?T1KI@0SG)sb0iB#9jjo;5ta8x+fD6+CF*O>=qye2p zm*6eD*U7|4<9}Ogqgo_rL8H{3fY8uaG|^kXrx3opcl|YT-dt zbCnR-igo9ff#jLVNL(Xx1iE1NSyl})y45Qxcqd{}zOg)7dIBYK-O&4LJdy?<{cAfA zz4SP$P9NV*b`)?1+kfz(<9?jCNCr7z$TS z(+ukD=zbu}{caAen0)`V;rB8iv6?^R0%sH7k56tQ+Gj!|x||)xyvGi0ot@q?h_*AE z-65f796EvL?*h}I0=DLW9irJAUyt~E8q+@15`147`(4G?U2)m-_sL_m{n~m#-QTWA zZz+<^xF7F0o`&7_6$MA-FIs*Qy|n3hpDnsBnj+dcem!kocdviZ%evXf0ToW0*^*b) zO5HwvDpW8|q|JT8uMTO>VLN0+1ToRMYqB2q!c^VXu{LDgw8HxJOvA%p)zq&dzpRNn z10|4Hky#1Q2kkRbB{HdeT#|L)S*(PzBDF-(M`ykI{2GPjn`RJs^fyy)GB{WDlh^4_}c z?r|8klK~g9wI%TV3YCwo#9zf)D8C@%B4I&Kp4>zZ>V9}!9NnFHOoxnR1%sRTEv#Sd zASz5)xuge_8Vq_Q_FZ;KlmQgcm5nC*b{)~I&MZi@6zt>E8y_hzPKW9Q(=z9Vr*&(2 z|2TGO9Hw^TZ9kvIzbQg(7M5b9=;03>U(`S!iEvEEx!e)t_5pA+Li`dd{JDB=di?Ez ze~if@bS8@y5((l=`I*LXxPe&FN`8X;Sx)q{x7oF0xNEuO^ze&J(uAn9?~t?jkxprE zYi>2xE-1%IT*8Euq7L}25O^5IZBY8Pv}5??yx8_MEf|?ZgTMvf5jBDV{m#50cd=Gl z7{)CDxzi<7P3UIT|D`WMY~g zJ@E0|)O2|aO1zU0&1aYG7AOJYb>1x#Okk9gsp@0PNLhWARd>bR zitKlo%v^Q55jGp~$tK`oO1zs9^;~17c zbhW>5_+z=imH7UBUSKK6t_^a^?0Q6pR!8A>$25(n+WtQGTTKo_pC5R~`WyioLRF#L zl8~wjqO-*>S_klEqFBz4{xssn1jcFc4`m>g>)E>HgbcrU=e+QkL+US zG3<_y7V{u{pEd5HT2uWbqBDr;Nxf(xnZ0@y&HwSm5(R!Nq_$b6@^j8ibwB<-TP;#+ zDHa^5w+^FUYaq+-BjsW4E{?Vv5*128myb7%_3VY+t)Cb`)##)GMJ|p)IVLs=eWti* z7~jY^ImQ1$EGgmO9Fg%IR)}@JgkE_L%Xy9v<0uU5kp_QBCfC;%0Ba|sFlh5BWXM&z zZ7427-xJ6n(|&prMAnn%>lm}ZWVncMeM;=vJ53>Ovns>?GVZOPE70}mQVLl2&zCT6 zQ4)`FZiv^|Oonf};zBP{VN#q&VgXW7#xQY?>V`KW$-H52VvhCEI3x+&yf28?{y zEdBWAx;Fvu_pDZ+Mi`kF_!x_N$ERk!x51YMUi-< zS~vavf#ZJqFY?#MzhI6H(WpZU;PH@B0w3Pg?VGs5 zL7H4PwLx6GkXe&;pYJ|bs@dCp=!7AeAcKV$16Li>Z(>~}Fb}&MriFsy``HZkW+mKf z8OU~yM_Mo|88U9m!Dzw|hW8F7%`^bvx6cDY)t(c~v0y2P*!8JdPm3VmwZ|s>PDBY} zwiFBqm1${dip0m<74fj+51Pn?xY4a6iDZL#c??ZACYPMw3r;NV=1WgiAHvHhF?-Io zON~dqqZiY2L?*vbdE(E^nOCzT%Sj73W_-wU%rGYRtFhRm*9J}mOn+8b`!^(M2mgN) z!2N^?TIGYGX3YIT^}xi4+z=iudrHOGrz9y8JKu3h1=i!QXB$>9=3a98=*|cO$0#$Ca(s>$}EJV*Wq$VR2GI>Z~a zoGUm9sq&K|dvWD%fCn7#skC%a$7*XPX0?%0jXIgh}b6+7?DC2>9p7B5h(-ba`Ar8{9 zq6};CkGa{^Y5Icyd(v5vt#EZtt#62iWvjvG_hfn&W(LY>OV<9yV(^E`or(#|kW%q) z51}&|h7;>Hq(B=O!C5Tg>_-PtZ4N4zH3Y?39-4A5_W zDH##7a00oL+r)eV7qZ@qT#$kukuwYtxPQ7gHa#f^5_cf6Kv7HZ+C*7zc3lE|9LN$V z^7STcDsz7ObWiWrxc<-ee$ObY~VREeHSc zuNtj|%nxbPYYBR=bor9>7B4R^MPi@Duf_}BqH8Bx>gK2xI&Ln-*x%3w-%lgJZ3&Ug zsiwF!I3c}5ihG$Xa+t~F0CYu)=v3XCyKWyb((gc;C_mEgX>zvDaWN`Y^pUL)(``YWn(6`Fi(zVmrnL>ma z^6gkl0T(wMCF^D+=tPSr7(~dr=O_s!2X>tioVhQZKgEBr3R%!6d311G;{A9#Pg9c? z98uoL#9$Rrqv)TNVpgR-{sbyD_T}K)!?}l0Z>Vw!_L1TRdBi1SNc`2%5`}?Y6TM}6 zVP@ng&$&i4%JZVz@O#)7g_Xm8)!Y)he|m&sQ3!TDp0 zuT2X^X8oFTU5_`kdi(D=wgrBQDKjwpzTjo1E~(zYb{}itRvhtY-_X$O%1YNeZ>n-MsSdZLh)wb!&3^=fiW)t_nfSC?OwLK??xnwfH2Tz26W2x^Tw_~$yOSF_zK!(IZrVU z$y|nEkwp<%Rbnf@6-*mj;Kkh+oFq^aXCu!ezd^Cx9bN1wdW)iQ0Vzi)H;0Dz*ZYct z>(KeLJ0;M-=gmydN7pte)BVI$!l&nB_o9LoGKYV`qmo_%b?lJkhInaY6PIh;9?&|J z{_c%M3|5SjjDXt&X5|D)j8BgmOG%;ihpN)hfjXs$2HcisS5DII{P^{z1c?}3a;|GG zIdcLOzZm->tZ1qYvEQfeHI8u$G}@UPq#3_#zu^Jae$Z`CP1Swt$m#OCkmVIgpm&4+ z9Ekq$;pGDE1CjiFMKoX(l5FCnpGAx%F`RQpYL{m|KD5j)&`>>M#kv@`uKgthT{M)m zduzs%J47EgbdgB)#2sqBNE#FOQgFQ1?8>AA#$cjA)^ShgK zGt4I#;q7(COt|7%F*e(1bGKwBO6vOZg$j9tm~fu9V3|dkQVRcrAzJ0kI!(EWcEEa@ zD+TcpeGZr8DW#21#+M6O-+@Ob#~$!tLqUH4vx4|TnL_UmmxUBRCN`h2Ca?CYq^3l{ zTN}=h`gX=yZHQ0^Li~H`wiKXy4?5HY*RyU>B@KUCB3HeVp}b9JF(yA3o7l>OR9rRokFp|6{K4-~w*1H8g^e~H@g#1r2O zwoEe~qlL+5^Iw7l*?!N&yhYR#VqHaZ{h|K`CR4fV6bz@sRoctn_hN#{D*Jg;Makje zpg*1eAf=gb`>QRsrodg$qWQr7d~|ts{ZX?A6)yy#b3e+!o9n!p&lAbZNzcxnwzWB( zEgR;WB^b^Au#kEOdG@QA++S&GC#l{_V^@4w_-BeHbbD+6 zvRfE^azy@=$2N(V#r3xaA!dA*Kxz(_XfY0urO&1k@?jeoCOQ#B^9T=6A2CmgKM|@V z;R^Ua?Wm_6^dAxnIpWBGFSJ!@Zk@##!iW~SK+mg)E2 z?mjl+p2_`{G$wY=VL^yw70vnxCiW9bNb^2KsWv@AA~ccqH;6OFa28e}zlu&_1nSg6 zzqH+V`9(+v6mVI_u}sDvcU2V?L0v#`%=?=0(UJP-j!aE@Zk`W!*}D4c1%hZ?)*<= zqy=!|G3)QO3nL3LVFz2*RF&lB?l?BT34C22$Wfntth^|9Nqa|6c!OiZHn~>?#w?vTZ^jf ziox4#jcpcLg6tqfTp^->>(2BkaO*ZlSShKW2_8EWg3e4ck-kL`BGHp$GqIZivBeQF z@_QVqv&Pk$RA2>gPT12YHGfhaD$@rl+ul!ltYfPu$91RC<<;+fSo}u;b%tvle)E4k zoqIgf{~Pxml9W@aq+;nLIY&jo1J%m`u^_w{s({Xz-RAW@9Xe-J+I%LPT<#HOhb+>YX*RO=9%vaD}yDD zm)5+BsDP?MRh;rJN0>JSd}|gXfZX;TUYNKc21Hes^ac#bYhEcLnn#D$Cz- zsiC*MRO9NUoP9Y{wcQ7SJ==%;9}S3H(N6%4`bWp#f^Em@H?s>%Wa)U0{n=V#mv)Sq zjPd3e-J~J2y{)eAaE+VbVqJdF_{ZVC(G&a0)hYYofROMyZm9k9268lf7(sDf@)h=j zK82;g{>g1sJek^nRA)Wg-Po>wX^UmhPhyGmH}P;k@dKtG zK7~nx3_*OFS7w(^i!V>^Iti(D!H3XFvDGWRop+m3vRi3+V;Sud6*r>3qeOb=)F zn>kgF8olnjrmA=#6tC|^V_uFJ`lY1coYVNbt7`I`c2iou{>|<*d9Rno;}4s|zdZnL zebu)!x;O1kvROlB((?7nm6j#vW5VZsff>-@@;^EV`ckt?cvrxd2mFAo>nB4FZX$6z z5lNA(m)$lK5g*EuEcwpEn}S%OEN3yd04jg!&!R5jo?;I=pl)yolk3Nk{~UE(*oge# zGDC4P4JTCg9=-l#eMMiY$Jz&Zsw2t9ewTIkN`gsDXHF}8#cz0b=h|4dV$W^Ua!>E8 zG52_oi_!r5w5#Jyg4e>D=rfbfQmE`^UHtNX(szcR1u>mi0_l9vzhLY*tjc8*AcgEc zP#@_-FR0ZwJ``urU|km#zueBiWnwgNR|&c_fH*7iB-Ns`fw5 zmmc_BnDC~=N2F2F43d2z?;|bMU=(h#l#0tzobtz=38)+VNW(XGi0mp-wUz_TN!}26oXIoteT1VzOZ6{NOwEX{*cp4b$++pPk%s#=Pft!x zEW9Y?QSW#-F|hz_AO#V6 zk_@E(V)AC+YhC}Cdk|`@GKqfua4Sty3*=8rA+e+WOO9{bmY?fcZKQ$W=*Zugv^Hre z(>^9Gtp~4u67sDfVI^G558J(QNAIJDxz-*(5+M$$b4P;j3OSc2)k7Y>CS^^xuloG7 z??;~5&F`hyjIxj_tWr}ZU<<%fD3iC5;&DxRO91U=~oo03wLx!s0^IQ($%Tvf$TT|15+jC=>_ zmsIAHF0WCkxJ0;+JuO!+RH`c5{M^d0cKt)WHBNaijl+o*>AEnsl&g^$PCEXZ7Z>sqMcdN_8ho0RH&bdGXTRb%xfGqavO%iHUz`Va4DS7$>ugK zFB(;~H_tAtao(>{Dqd-g$6AblL5b&$oMTJY*SoBKu1^Vt7LA5vjbAd0G$Vz^?Born zZq;f&Cms?}n#(ZWRIPc0sK8Njb}k=zhoZ}7uD?cP=tw+>`NXY|t)%^sWW^%eDcU%4 z6_PdloS1$ueeXv0?P&4ldmx}m+}bDNcg28HK=Qk!%Ci+W7ya+D*3~v8YyvNlnt}44OC|UHUZn z4Xeb7H2N|AsM18Gl=bE)^SH4i?4zIfPZp#E zUlgv)=C$Da$lachOz80Az}QZl&3jU-iDT49z}Ntcy}YGn`BjD3Fx7v%eWf3O-diRf zhUP-1L1t9I(<%$3GdU&bPOUce7OTIv6N*!wo)i-L*?CNmX(Jy#k3RUr`5E~E$+I*eSQv2&Pz0-gJTw} zYl!O*k`%Cts#!3TB!$@Ti2?u+EG?=UD-hT+$2A5 zWyg%o&~p>?t#|amH?jGiCCH3&kU~bY+q$^AI4@LFT2{Apd7SrygAQ|17m{qh@3))t zsmNJ$19zLQ>r`*20$vtTk6t1K8LP(50iAxDaZvn8as#wQen4&&&x7>TwlcP2T76{< z5ZlqCBm5aB>xJtv^X^Bknqz&gBbvN*i{LBu+2M!g!^M*Ai;BR01p=wj)_fYf{EgR0~>&WsY0yc8c z;)mV9OmL!bXBUIie5&U$T*3~5<#MZJCGsuG{qmMlK#=VTo-@V?6L_g2V+>Wakw}07 zlLJ6ZZq07j%a3Cma#(x1!lhr?sOYNE%XJ2xwYMNP!@qG=Dx4c23X}<&djymF%Ks4e z!#UN`g&*(&m>eh&(bu!40he*4j`S?o?r2{Dj^*J{k9|0yK1m$cm5~om{2eh4Z!Oap zWB%_Ptj4VvV}6d-#UO5_SKgU^9CMO2Sp?dJPORbtHQ(4484W%Oq;pRQ9RFr(jn}{k zIZ1=mm)b~Txtv%U#y)5*8zYwA;qH>}TdvMMq#=j~9b+CB-aj<+1XfSm6d7j_6FW*3 z*tFZDP8)}_UX!{xAk?=y$<|OpgR-CP!7>L2rO$8 zbPpY!&$WLfhRI4G!l58t<kOOX;ko;s^oa(laCZ3x_6?^HhQ3Cnwfy>+I4=UuO^Qb+mw zSUQew=jnIq4frve0~a>}+KjA*d7s=3w(5%&;JIvW@?gHv_V(M)G96#xp#s8_~;rbyI;z{Wkdu3mk_EEV{JX79H zD}|8;rV^|}5=@C35p-W!`)oPd6i6z9_gbAK-@&49xFAe1t_W7As6bSAXnmvT3V=i* z$X*a_sQ(Tn{F2q8e9r^upKz4C(xEU|SXo7W>=KIGh~QQ7nFMGdtiF5Z5-znEZR&d} zYQsNsxbp(Ge9$NhDx4?zFO2CWMh{$g%?M5C8w=DI)E=_4AhT~s)R#0n>3fd0T7%~x zOt>#(Bc22QnH+q;LL~&b!YFx)tNN_-je&88yhHf5=#@N4AVV4_HEYPK>6hRUYs)2K zn_u=m?u>JrU&%I|5qq3Qm6pQfA5a65ve-}za8Ef=bUUdXHN4^O6;N;dC~@3@n{JuB2B!DZBJ?<%d@?H?*hMj`{6L$@v^EZ0v;I%Y z>ly8x542|_O>xIT?jEZn>>90qX+duUrx!S=bw2ay(%Yv}7vQ80)F52J#E{_`U_f?e}FhvfN_F zZkwI9Rk2DD4@OGUET`AE>Rwfy?@2aR4mjL+A_bMbC}~x0S+X8MGt7&PC%F+?*u=N3 zE1Oa{vwbKRE+1M|>dq*RD=SoN(31c>^4pSfL9CO+(LH=`T zGHLk(_E7$Ji;lFq2GPyQ=Hi2LMbfI4kIw4$g{7BIt8}@18Mi7{^K=VuB6G5rk^|N} z{4;fqa%^wMgJCd1>{ zOBZFc6G_dstQXzM+74ILzuOrWsg2dyHKeET5$lxx6ujam@eLkal=p$(_7JCX?>Ypm z>2&(pwoAzVSM>lc1vLF=CVj($ajO|g&EfDfwxu`_*srr%@TJ+7YIiQ?pEErhcNliT3){R7q{Sx#nQ2V%&RP)RxuB6E}&?*8z7$Q^9Tu-av6O)S2M; zp2d8%0r_O{cFOsY5q~X?x}BmpiO{uy%yW?EQ~PgHhatwIh%ss zx1%hMSpMt@>z{bmMyG4-?fe^$u>-JFzhT0+2e{?=*?;}6okV7eeUC9`2c9KJ!|i;` z2+Qw5^sH)=5*N_$!m5q}^!%C-;VCkAJwjL}%ghhyLl}7fEPJg(WDp>+2b328pH1BS z3bV}7mIitX5>dO$6Db_lxl5?-*Mjc7 znkS(KcERZm-?AM2MZJ1N8WWB=0LH}JO;zkN(}!vv5Rxg>e$qinHed`jAHr^w{+2YZ&gdFNgEcwKqugm$9LwB58S@PC3R#b`WSa9weS(PZ{X4sF#aS0m$`; zxgXRvTpyIK!@ksL8&v3_IyweJW9{evZSLzkk?KhVqo;u>cbQ}kQ@yE{CAlUEL0TRP9M1d2zcI*T z6|i(Thlu;palkg)VOH0~`0d-Z?NsqI{ODe_U^K?1qM6L4|#|xt>bG9obE;?-WXW47dGj&pCszAn$^($i z!tVf~U--U?H(!)MWyC22{dUoo#+%qJ&XZo+fdp8H{u(y(bhNZ9NTBc}2pf!Z%$v!E z%lmK(z_hVq!ItKdlc&IPijUm=IJS5WlnRp%N+@$`5pA!80n*T^m1P2V(D2jpMFSJ+ zvK@OFR`15^fE)G365%K)MY>5xLZ=j=xdu-lSirXlVVz@mWI8i#; z0_uob*JCqr1M}$K4IRxLb6Qnf%4JVgdCp<~h|A>tv=fs@C!0mi(&42V5sVIUHIW-Q z9-StNZ4qFeE8X)C_Q0O`X!~UMn4MYa>nTA?g!)^=llgT>Evb*u z`S)^ZlfJoA7%XsvaH@9euC35)a}z4FnIAj>pTslT*+aWsl7G`Oz@KG-N0Ps$t^ckN zG5UI&{`i5l9w@Vicyan%e0=`-4e>pYe;sIk3K8P`BQw*xUiN7cE+w|p=>|o%5-Dlr z*WVNYtKnb=|E}StMC7|d`cNJ1QqrhYob@I4OZ#XYbaE3u7V@{l6x%*bJvcLYrW!r# zX|MZ)-{kHPl8c9K&+2}r&3W}A^3_(9p<^&5XwOMV#QdGrl?N2(dY1~0Z5@7e&H=Lh z@k-e9nFbth52j;)oA!)9HzB-BKfUT=TuHQ+s{C5E=+ar3lf6ge>Bi2TCC1H!y;yqk z+^cueKGL#Qh@G)>Jr6RM_hHKNtn3Nwsn$~v;J^|lh-Iq>eSz^K9XgcG9(KIYz%5133fj3PNJcQ{BAB67D$gYGAUq@KR(a0Uia-a?H_78O z?=RNKfTN3^xs>1$+vF(|ACZ*8P-x+AEhJ=Q>j+Z)ICITpPg@E>eo_2}wNC14@cgdL zl8NKbl@JXCJrsHU=S8V8zo>ytcoww6HwvTb1#f;xhSxF#e4dkW1YiD06 zkrxMD^LezQ${Kjfx+(5n!V&NyEH_Miowv)N+p9-DmZ07o{tL6JlbXX;=EW3a&N$3T zN6=ndpF+ArCA`HS^DS!)cL)@n>+ehZ9)bk;BGm4O|7eQ0cyy+qdtRm94Kq zI6n1_$#08XVUs~o5L_uDNlEub@d5b4kJYb1RzH2;>TFu>zmz`ly{xxNdX|!WG>$%ICD+d2w`|z4{YKQB7<{ z$#NzpGo$68e5i_E^PZIYy)-&g;pa-&#;b4q_UhI*)9c2bWsUI!4-jG^Hv~gxQcGOC zDLheSwCi0u;HfQ2Gh060-uEP31&l3icS~1Y>|p?DM^Pcox;?PJk#6)+WGH} zs=%X9NWIUz-ZvaH*o-mfxv++oW-dDDm&t!Zv>eV#-Q^XnDH%2YK;s&0nAS_4xYrOy zo&nGh9l@ez0;wa&9KSt*!GS@<#m6Qa;SD@zvV4boX56+nRx=Uq!5r=k)vgDl-s^ znx6Xssm%x}<}OIw#EzX03`sK5`tNx93VuRG1q&<^$NY&{eFu$SUSjo3=d@z((ms_f z?O(t8+n1?{qd6D4qIBE(`V7QUZzC^{Hu@KrF1^xT%^!WLiW!Iq!8jaz%XG4eE*VOV-Esn(vuvIn|{HgTa=l z7vv_uk92a1jVGGud)llH`|mP0HwWw*2eXzYnp5{yW=d(ah^|P$zX5O!#u<#YV(G)q zP7}a4M+1C)X3$^u&j7v&+{2c0XI%`ZFcjWhM1V^P!n zPT%cR(*lhonW)9YD3X|R{!u|0T%Kp7qiV6y_Ik=q47?Jwg-E5aYE1SVg9Y$rGI)=Ci)>2+B57+TRtD_M{BWLR@ht_j9Gp(& zyk)1@$E;Qme^v6h0ZNi3&M&|9vjNXRLou{d+XuddBJY1|HY6ImpSanp}9*Ywlg0~;g4+VutT49*^8#g!KdL}f{wT!HU<6|{P8sr#c3b*j=ALxT`ignULgX z-)p_rT=x>VzOjcqa(~4@tAZbHMQaLb%R+aRx$WI-uxU(ym!aZXO}aQ;F_QgVF*Vwh z_lw!`+{o{AQPA5}luOc5+lTT#$Y#6@o(d^~{3bK7#qd(nZ3Wn{i{Fb6R%t(j-V>fW zrpH~!71i@Qt-5{JbOUQe>R1Dw~PD7 z>-Vsu9znyO0U88Xi#NP0U_fTp@3ZwMRe?*TGh8~8m-YEP<|j|?4!INx&t$7&eA56( z1}r`UioC(KV*XwY9|AN`GJYsY5^ssKmCTVAvpTgmY-gC)%G&TV4|FpCoBTDTgOMb)Z$g*#E^?X&S!ax576pM&aeEbRa#{d*E&VYkuD<)3WNKsED>` zlOwPRhRa8d9qzDm9Ze=`2?{*py6#&jmxKy;`wa@(qZ5&_=}d}GPq$adJ}SZOTxQ0v z(lF&cjz&>m7=;p)@1|zSgyyTZpkRdImiPO}DMPRNNKK%MVhO*~FA0Z+ zhHhGPmsFqDoO%9S`&%Mb>@4SL_@QZnAz5&w0xYLz-Zy&$^mMemTYWtJ2|TTyj2Lyq%(4Ustm*{y+mS^=`FXP zmG#8F=lnr{dNIoulWDT~cIq*_q>0~FBZ+%0C=)baxKV6{hzdrUB^`eX>2TS0@*_GH zKBp^X6lQc|Cl7?&yClTnaFf7oA_u&uis(5r#5dM(4YSNN$S(7ZC}U)P((d_0SH?wB zL?{TAhUXVGRG~k)37o{s0L|>0^@|@|TarJ<=Yg}_f;!eAcuj$OW}+G9{(<;b?+=;nzE2#uf6;?-C_0Z=|`}$9<6OtjX4^M{6i{YaTVNgDJ!3NF^uCX zJzaf(1b?;1R$uYLI8eO%8wURjak~?K>*R2IzI=d!^B3E+*OV>al`;=KIwd2XmsqX> zZt8KW{96tOi(!cC_<#+kU8Pz9`1BVS!5Kih)S_m5kaNMPWgvcHmUs}KOSMj?bq5Kq z@g*V0)T7)1W+>1EurIY#e%igaYp~QbVtbO{)IypQ)7utizcUVuBVM{!65EaElz_(@ zBd6i^W|U7?jzn(wtU*hg2k!t*pz=o~QDeg?(qfr@$#`f<7lFlXifge|Fu#mj*S2Bt zK4xyxZLj&WCWuTZuS7PgjxH?3Q; zkul4zZY4F1XSo69((eTH2obdnV76{YGeDBvW1?z!Q=WYcqb0UfS)pwj;V4fRiY#ll4Xs7`t~F_7ULf`4UiV=RohYq*?8?^$8V*^S7|Av z_xp1)a(ed~j)$(FV>6aSkhzAHhg`pFQq!PTlOrjpo0Ii@J3SR{}~_1=%?-)Mj6= z?p-=eQ=9j`9-Jb$54^jZW=$5Fe)ea#Gh%Ml#7aLCVWZUB{z|n+lJw#0%3iyZ`ZL2^}5jtf6>Uii#$ZK z_-NWL>`1rhaEokTXG?OMOLZN#BchGeL0SMb_avT0KqhtdJy#@%G4n@Iv+G2t1o4u* z>q4rm^Y}9cEL)?;TU7(V6tuRss-Pt<=#3;%KfKKo>KGM%e2p1#M)W7zG@>TZuc2H= z_xDk!&muqIdJzb}p93M7GjHXL<8;G@`Db>|F{m9QlVpdfQ$A;g1p)rQsFe`IM;Hd1 zV76~f_?E>Oq7adLM_-Nuiz++BBuPkeRr{^*EqHUL!k1s^*V2zHUX{eqa`*w_)4mr* zXgKZdJ2=pI8nBxAiy9*6WlgueCu9@U-GSM@wSjgJ{cx9`-EYIj`)k;%kux>uU#HrC zt=@L?W7Ao8-xiHSgO`(50%F7CR3P)?lM%ZU^^cvcjJ$4N-eO-#zi6K}fAz-KEL=!y zsL=(w4+_wi2Xkicyi5@OS^ch;%*D^N-<`F7zBm2l-EsGO?NbN#W<4KG&Na78Hjz|l zCF~*2h7!Z(8gM%V-}}ac+;6cCi*?nyEYg&3uwUcw_=6eq&vh7~!E3&kiXKWrk-bN& zSJoHxK3YT55=2QJO-BO1%}egVa6Ho$x#8ccT?d`Q6}Sh~ykT(9oPEZuhrhY;zq0G| zi4BrU$Fuc(fewP1)#{t@_Dg(C6Y};|9I*sK50zd)mBuNZRs^i3UF12B%%hwD>H9SE z0cpd{w=m2_>4(4F*;plBjUX_jyZ3W`^a_WJZp+HlLJRfNQ`pH+Sood-TdeUwUBr0M z24w=+JK;mo9GuPEy_HQ}%;QIy$@&+sgLmZ%qgGC1K~mTmRIjLQbXBS>6`KL*i7;lM zIQpSeU$%8Ej>}qqMkWEzd>pmOO$_L(fY)Jh&7uZInl?(*Z%Vu)8Z5o)l9qQYdZ(eX ziJxP?+uoYSiw^dmLu0uxhore`ozuQcTSH`;VNFoFW znwS1oV$jf0!zq>drD`$G%F^L;SzJ6Y?S4;(0lqaFwiQ>7*-vVhzmxRS|8RZcO(5I1 zEBefqVtIJRz$8@KKZTztM?J!v7xtq&;4J8N&Zp5$$K55y-`LVwvMCS>h*inRN3YDo zS4`4`S?1ItxP+X0^kEJ z-O;94q(F?_5j3(@i74Yi&ihMGP{Sj1%(n0Q4Nl=#1ozs_Md(wp*nG#(BRhkuIxVw0 zrJF_ZlKY|$9CoWJr{_ElUL!=+U9yC#8Dp2+HWvZ=TEBbVi&1G(-UHodJP^s%{NCfu z3Act6`yD--6WcEe=v;ZnKcDa%)N@g0;Mhspi+Bs4XQQ0ftWR_{20o6dPDLBy`(VN{ zWN|r?RuXdLA^rp!hs%WWR*D@1(QSu09Z()jR&@5_3x4l77R7~|fh02Wj`6iYz{74o zrf|>YHsR73VB$FE@f4wzi3x!u$QVOq!5Ai@)feN9!M7%z#S5WylYGg+u(=_$cYMw@ zbSN%+wSmK5v(?`yf%?B+7%8V;2c4=DX3sa{D?BZ_z!dEs84T=mnht|7g}-r|S>7cy~~yj8ZvQPn1t)1>$eQ0h&^ zrnFWfJ1a7r9dK_o^K^G^0qo1NidG1(Qc{Y!rIY{F zF|8IBB5&~v**T%Fd;@^#kz~vIWi1KTCo$)xkI#JH@3`b6&R;88fJpS{fnXj!!yf(3 zZo|JO;oymgk;xlhkKNX5H7cx6iD41bH{%IH`w^AvENq6TEcOmX9>{5yWXi2X2H;M& zmj?cmF1%o=XZ%wO;EjS`?vMj@o_x84#J&TtB>qN%6W{*oAy#j5SRXELa&F=Od(6t- zb$*9(#6P3c19u;!9sS2L=9Sax^7h%+07M0Kdge((x3A1JsWr4@h#OO`Gt!eq9+@7u z+`OZ?N&Im9N&^0lF0=6rV5u0J-^< zLLx2#6gYbrttoGNKjcstePvlI+=-Eu67pujjZ@J(dHLkNlWRC1>$?b(S6El5TXCGTie|L!^Qf!r?Li2ok;VMQPTRIpP2{u(;g?{@i?Z^6)`{9?69Z@5uF z$_s(^wu-#0wXWia|Opv@o1fumDb7Q z;RpTn)$1d=z6TxK{=UI(@eRhtahOEc`eab^Bk0(}sDJm+Z$HCok09GMdhDPlYumE2 z?6qvrAJ9*NX*z2q?mb(fV<(=7lN~mzqf-p?4NDk@`!F49;MK`roXs_BZCfVP10KGL zIJRFe;NhAiJg?-;;-5bIcuLx=)q?h9#i(87cC~K7RR`{spSAVx?6n+X9v9u)azmmN zMe9w#YCC%5U#r(z@A+PG>7DNDXCdES?fo)75!jesglyI(gT zzTln0?U)Ca^Op1*7NX{Aa?!>w9@-7<+DgCo8eGTlR43ogz}uV`kkFfye%M)P?v??5 z*@Pa%QJCGOwg!Ej_kv%_a>-uHH*UTUNEiwocGB11KD=Y0%l*LO_?R;@`+vvj)c-q9 ztIaDI9Wna*dZ`}14f+oh?er`9-)c|>U)=X8kB$)H06T42!O>{z?ajeH8c|*P<535P zJ7(Ubh{Rrvfs%lZtYOB!rK#Lcz(oJCuuxO5LjWAS-0*H#ld)ffa&ojnZJ(|DsNy&xZ2j8r`= z%UB8k(@G1N(E*E;gX^upHnNB8Kb4Ypfi*gTPY~&wK!h`g!mE}ek%#Kb;mcSq`SZ5K z<$iQ8FjXVI5}Xqj0>#`p8dgT2Ckc)!5 z;;{tm&X}v(*#4%gM{=yWE!L<;e2*Heo*S4F^JgXgs}bg`!BvG;Nv1)Vwp08u@7lnB zSSK!Wfp37QEM7BuNFYUOY6347#g#=qs`)d|oB=O3Ly>XmP^sxycNx(!KE;x%wt;f` z@YM~M+k#cuQ&+rp3qA^{ZA_2+X8SY8w)OIti_ne<&NS?0!2S9G?3my!jC$@JWJzK) zOD@81B7J35!O;9Z7u8Rhps0Tv)VBYoNUE~v1C{t{zlt8i>d$a z7{rErj4ZCjo2~fg*&d2hYYOF&3he!-`q>whhIK8Ubjo#r8Q|tQ8vreq9>z(|nXPmv z9qPe4q~}Wp=Pm%;L!MD=+&S7gKnS>*4ZZH(#{DSSZlgV5BDazcAAMAWG2|Q-W|Amy zA$}rEI14wy(LJTNx~YJsSm-OoPW*raaB{cAeB{9DN16F?rkD%_=PVxx^ilqU<*XChasnyiN+Z7A%cQr6bE$s(h(1r^$R@Q5QZnY=q~PEsPPJECN(I4c~; z%mS7r`uNjIqV?$OIMh#qFQj6sE!waw0~6LFg%Os0Nu{iPO451Ha3w2<78aCv)k7KE;I<;c_;k#_<`(h^GH z4k(&;7VxmVuyPq+ke~zliD1O5OLIQub4}BsU^`)yzhl$9k zmL$kN%03G{OVFi6iOiT-LOmjH&fDK_(DRD9^3BCTK7wLq{x6#O{J&_n78t4lB&>;V z-D-P3I{T1^;h^)2?8^%#-p!HP$^Cz>rDT;o+l=QvatYq#0W%}0&yVky-}EA8Y0 z)GQz7l%RlPWsI0+uOm*T$b~=Vb>OQf;$-JPOZ>gwC&-vX10(rPovWD; z9^l14yWCF#a3kcLqlIlHV@BV&wQk4|;SV^+3)4xZAb!an8_BPDF-k4wUU%&!{^$f| zW4kb^Mh)B=9##}0WpiM{!gKMRaLx_fPFC~QF$Pptake*a?ea3*1jNEuzmVB zrBDDpMhMg5?20642|sa;AvGD0>P{OyZNNsPoX!Xm3KQdv*#}XV3fNg%wT*$L2T1F$NefA@lPS4teEgNjD^x~o>aj%|YaMQt!q9%M13hf9=hfI=ZvT*}clo3l%udWF!i zlH+8|6g0>22J)T!0?E`xIo|%%2h5KgZa=Lc{oZ&=lBnr3G%xGj7HnaS#8{pv*Wi@I zc9N>H{Jqfxt?~CACeliF9YZTeA#*;ynkw4isud!)fe6<_;|X{GXb5N_ z4iO2mG9*u{2Uxz!a(>B9eTq<`7lqhe98SfX>Npfq*-R$t?^#<7UHkt}9d(h8kG5JE z&&BJXV*?2Hc}C-&He0Q$gL6}jdk9B&+jq2Bp9NYqwT_q{&rEu({@JZ}r!tUy^!!bo zP4nl6C5Ee>Og_B5ePX!d-{_YY#w^v>82%JlLwW$Y;3rRrdUI1_?~mwsGh8OAsZ}10c?9aS8(V>A%C6|oGs}CJ4$UILR9v# z-hny;Cj)+Fajpn-ggV#p6{n)*@3HtAbl&R-aiV>{3b1NBQ7DFi&-T z4S;?T86ejgR18jr0$WD?GDgEBV|xtA3}L1*#aso(HK~4mxRu3f?~M1R=`;oui5*!R}1hp3%7sqkrlEt$lai3U+M2p z@@(WZOnyVS4;Rv3(=Bm9RiS}-!Yw7l-mZA=z@=n{ox zEq33rcJSdLI8#;HDJqxwRRSA~X$b&OFokEBlW=h(ROS|)HOM_D&qo3xF2IAhgYT+i zOZo)#-Ui+IH2-o@4SaMiJEs8b?HS%pKgGRZ0M3a zXZ2L;R4ixryK%qC7oV+i1^7*sA<@r&fbs^ee2}#RLQ@)iUjvP&MsC-?4&kN18=PBT z4}@$MmqG4r7aBq`X0)H{OxydpJ476F?0UeAiG7C}puJ^+b_?Fbtlkp~2v)yyeU}ha z18iosh$m=j8IG6E&(w%A=dX$Rv##5AtaKn)XHh<+hb3q)a1`K2cNh7~0=XC91Q!c% zI*EWI#9%QYI+~d>Ey*8P-tqfx^!WP0DlTiHH%cG^P zb<%V7$L;I8-72E5)NZ&A(=*EtsnR@PU$hx7c@*64JvS8Mg$zkLTx9fX_i)3&tlDO% z^rTj$2ZM6@9XDm@RDlGl=>4F!K4_>5FYC)&lRQ$*c3!RjWB%p8sDsyfs~zKyS;%bA z=OL*uS!gU1V}@g3b=Q+lllJ07&U<%$kX9jkfjkT-LYL0nKPY6ZONF$-IaB2#X9+fg zTRw#21aU&SW|&Y=M>jx)F-u|&W-U))*1AuP?JJ&}JSesfW4VgGC06lmpxeOT9I!Wt zfI2ty7@mgR#Y>Z2kOSl~Oh>T)^j%gS}f6qlTKVhKZtM!|W zwz`S5=V>2CYU%2Z_K#{KRUbt^KKM(sJoeb$cUr^zDvaw?455)~vJ${G>7feez&D^qvKJXc+o#I%N3ikYg;`0i+ z3cAk^JU=&n569W0KQWp3dX~pG`AiA1WG5(cyv;5YL?QPNgmNNUh>vSz-}izuOSdnvCQb|ZCr?DyBNn({_id7Cv z4$E10Y~(P9SdI(jJYx(S!)AxyOWpV9dtJZla$WcX^V<9MdOe?y=i{KC+qtTwFy`4s zT2wKaNKdHgp-%nmDfwN@&i>yX8z3x|Txs8sdm^j%VyW0QQWA8WtLwGrD)KX;PU=YC z$i&C}MrF6uBEIG2Jv~z%4E(3eHm)WMl-Ft~B{xn9@0i+DA;Z?-tRJVu4)wH#)doFT zJ!#iUGTpeaJP!zGn&T@w>(TmzbJLfr=W5DC3$q;sy|DT`w7u|^(0b8#7cd#`gdI^z zUnypKGQQ-%nAuw*Df8;nw>j6>ono5sUtvRrHvTdJQAHY%>nX9|$Dd!(N+x(hlKeOW zELY)&a8J5W^+E40Z(#Bi+KpW|q~Q@^Y;!Pv(G%vOcEYc` z{AoTh5TSc(Ny_)yRBe>_S_7mX()r(P?_5*p?!+RG+eQWb&DYaHh8$+EI-Kp>*RyEN zp>&$g&PnRoZ{d)!5R^5=zSuU zv*#z2LF8TGGFL&1C=aruc5Re)nROBpqU3PkkBP< zsdPne4WM+CSzTV#xbeA^z5Q*f#kM$De^iKuW|vcpiZ{G0rR;d<;*1wRlf|+OSK@kD zEc2Rm4HIr!C1flW^FWwvnaYiWp}!^vtC9cz!T`0$q=`c0!`=}o0Mn4|3~5`VZ)9&R z=rXdFZCpB?8+5gA%4&k+&|n^#k+66x-L2I0`W>>zKkb$Q&uLeXi`*(@j_F3Zwc~;p z*q*oYBVz%G*N)-=_HV}*-FqS$CcH?TyMEIt*|h%UY#%Z4pV&uH?TPd}Jr@*kD=Wow zk5`PXPlkc$HWGLF0W=dtx@=EcJ8Ga4a0S7I0t~z2nuetsn^Zx(v(4vX+bO zqYl%A014haOvsl>j$kN(+Y#=zLDhRF%1neJ1W z#-u_plfx}VTSexD_d^1Nws6=UL})g@e6d$}i`mA?74GmGd(AtKEH#8zc)w%p^{J6jPiNoqGU$4YOsmxcYbZOb50{nFDPV$-Imd`DVI3X;_@8a%{7w zg!@U$4F+Obv-N}nr|wF;>-U4j&AUfpMD5&oxlEb11tLI11vYlMEdB+AS{ge~;Mys8 zYn%v+iwrgjsW3~UE9yF+;xM;bS*6BK9Iiqp6Yw1bYFp-icEph(5Nrv41eG%bt4tbd9)GmsdUMcft5&&wqFQ zqiE@){b#ZzJ^BwwiCr+Z&2`1qZIuC8D%VNdZytZ>y}a$y7}!V-DFzohY{FmkG_Mtg zhT_iI)__tyYXL}`jFnv_{g#565HkmzR}&{|fDeDYtKew`P#_YA965zjEjAk}i;c2P zI!p6yApI3Kw|in9iBuXsDHfD0jqKgr23y2)u`7M3fP=Nov*J|gF&F^bt}GDQkXD`e z1Ga_KybznxE!G02wiGhRg*HeS&=aQ z==@TQJnSiuT&#EqaQxlE>@KJi_gcK12HUTiSHEyvbNQqOHSYw_pL+=2=m5csdrd=~ z+FJLs$2jJK>$l(Sx5{P$Cr|kDylUOME6~YJpb5GVbV@PVRQB8M2&tn_Jfro`i>Iew zQ+$4mIQ=vCEx>XVud*r@pW7Jpua`FJxuqBu^!62nPGWr!e8ji;b$x{2Qp*$(aU8De zNjZCUQ%4fI4CamK96C6} zstD<{GoOGp`T>2v15wGX)q~9rcmZ5e$uJ@B4f@~uyKBYp&hL{*d@nW3Pg2BcRp#Vl z^Rw;udyX2_e378hciujg9DBKsd7Wfyl>0npOVHP{F8Vi5H^;f~HnGBeGJA?a3r24T} z+xlsLvplQvM?feD%a`X=Rfb{VfKlVm8T640Z2XOPg6G_KOJ&Rw2Z0_p1FeqsM!TZ# zymvI_n_p={Tf@|_A=I|TuR`v@i&W_vjpgD?gKQy|-#k~a?l)qbaqL7oe(cZQ+zo7C z@46e@zG&$cd{$kp_UOitT^IU0B>Ws6>J_YX#~U7Nv&lW~DM+8u{m!#Ent3l^`;*0S zNPi0f6bl)-SCX5hN?D-lOXD?RS2Cb3Zmvo>b|1eyvf0qBbW5yM58bwu`ja)`GOh%c%~d*6dbo z)rAvcjBLSFUnYexuu`^?!T0U&hf})<`e+QSi!|R$ER;ofbDUA-kX|KmYBM`Nr;NoK z_)}0G{BQDGH2!fRC z5RklOw(3vWz&It}4`-&SG#9Gg<53pyjnZt_SV$fk#MTJbLiR>69r&q=#v#zx<_Y8b z%-Pd@I2>>i6&mb*RLFERo?CSqBPtV9SEiCM#eg*fuon%;7}H;T&Scm-^s)-niBPuE z!IG7>6Q(){omZijJXaxmu|xozAi1h&HS`w00Y6`KDz=!ma-V&RUMIfmPqk$GACJQ+ zgyAS8AKf9s=(L(sXeqOhsY!acH@)dvd%m|yk{5v38dmi`Jih0Wgq{2O;%!K(g+d#6 zNb-`z4N&f!qAoBE=SeS!C)%>-JBtvli0j2PfAM}t#x6snzf*IBV2syL%aNcR_>1?3 zFe|Mv7#g6F@ija*pN&~o8f@Ua8VBXMeW+BnI@6n7#7QZQT8@r_W{VqFsbYJ?wIzeo zh3?_nb6zn z&Dk`f9^t8iw0}YTn{_KTRR!5dYIb!#ur)VH1HQ^WX`J1fCg{G9nJMqFww$$`4vHG& z`nGl!xu<5q=C}yRBhElB{LPC_2^BR!rrH?VzAXSJVN_PD z!0$-1Dzy=GXV~3vVUCkCw}E70b#v8HvG`t5B@!@Bo-R zoVo)$5ZGZ=Vpqts5w%pEFXX}*X2LENbs|@&yxIY~4a>oKeMJ$)>j{Z|W3By^iYxLC zgofqOIc0v#Tt|unER5;F@R){siIrcQ@n(CVsAwxFBX{v>1%QN*zzn4uq(=)BNz9W3 zD!eKVtG9Z{K+`xz``-vC=&$A<5CKpf6XBXY`<4h#;I$01^cNJYN*95OSOM(ZqtNOwN&> zCXWJm)T9S}8y~V2P2tFp<$75!U{q_5$93ayya^ff0eoYkJwXyQpRjUnl8^eFrk`!|`?}a~6dZN_SrPL%F)G_8G zahDoq`~mejLOP$Ai!Wc+&v#K{(ON%198F5B^9MybD!h)l#Ir4g0}HDAgPy$(r&j5ptq z+SaG)!1)Ln52!o5Y`8d|IHU$?C7bTd3b%wCv+Y+;J8v=BFkdKj3PiQ`pRUtxI$CV> z&JiWI+6lW2iIbLkv^TGB5ziv~Ug#;o$7$y15!TEF?>xa|pzjag1X`t&+1cTHAjwMC zux=c6ei}a)GDdEmjq+ehfBxwto=wLVF>czfIs-WI12!4U9ay;#5ioG&J-8Vz8sCp9 z!qQW|ne3@gfbCl^UfDA3AKk4S|Gmf$9}!TDJk7j4@SSew3poPjl2cQfY#22U?Zb27 z=tDKo=?AA8C`H^%ru*0cc)Rb&^$IQAwze3osYd=RnfCvdY?q@W`{h6oW_|5ynAWwI z6ghxUixz%)v`SMB;6T*PtK`J?T@mGe?kY)3ds8ts%J4^gOR&%9W8WV`K+n(tTYyp((! zoL^9lT)KgJ$g*2yujE#Pu(Y|puGdD4H2b2NzGg9`Jh%LIac zk`x{BC{Pqkk4lgJxpm$TmxfjSUcR}TD@*uQ1@T>4@vX6PXB_sY&m7FfZ_)?}`lnCp zhDy(9b=B7Qi?`Hb>Wy?_u5nz$g5IkpEIJ2`ZY5j1_u%ay>pBMQz_z_LYc;=;A5p0t zcI3I`<5+fOqMz$1W3L$lj;#BUqFYMr7grPDB9JReCe(yME^y5W@f?i}tqQ$(n(sYj zPoTr)*Mz}k*y%*SHiGxkMPv3CNq9QwrAwABDkTGSc+rGIXb^ApV2;B>!RZIwg%bSu z=YQp5%3xmhLnK9@Na}Lu^|QKACv1feXV$%|{sAqHxFE<1ZWDHIXhh!@dH~P8kQPLq zut@QN%L1`{?%A0nc$ljYDDdWnh%nlkSU^8y+kY2w2nhZ>$&_1`jnsd8YuC`@AQdqe zQgZsaps%lNitl3;-A1E)h>l@vm?3W`KHY_Jc(wiQ1I3#;8bUY2vUI~W#A`4|16C%@ z&?;};4c~GL&W=td()^NPk3@Fu*ZwF>$3qVSR8NiAznluQAUh2^pe8B=s@dHZnOj96 z$EazKgAYr|0ap_hKx}!4=O!EDydzRC>?)L|<{7^(TyhH9=(PF)i;Y z)eVQGgrhW6sl(Ghjnel2n$YNIX-%3{>+A#g0V_3Sb zJF3%LC3Ueru;`P)#V2y z;mf~gCShD69&u9j4ocMbPlxoli*xEvhZH@`p<%^8L-rE zTJfyn&Ed|dY!&0bgl_$;k`S(+MIN*@UDc9oDtmovHgFl5G6IM3CuZpn?}vfx<2{t- zgK@0ssk+ksx)#R>X{sjsvmAPPe%!CsuS-)O*6K0k%P(6Tte0heM7PW4yt$YKRHAiOXxcfq` zi)W3B5Uob-u*XgtSN=F!`Fn?*NFSX2-5DVz2yAZ{CHpcq%Q_(O#(dq+nCs$t&AlO4 zn$2AMzA+3gG^m93y^Ho#d9#=Z`DS_0sOiX1&`Z$DYF?*0OqGTAk2rGvNf4cYisZqj z_PH`cOKXy`pn9|2xDm3oTI_;~C@>(NF-jTITg~1){uGD4Wyf7`3P0?|HxC~= z;k=M#KaL{)=K3Y*g^r`?WzN4Tlevhb-i8b9_Z z0pNJa5tW;1f7!~vAW3%g9N1P0mk{lcZn87Y`0Mefx~)OrD-gf*ftk64fqqLks)I7D z@-Q8HAo$kxWK!{ca8uVc1XqRjOfKk&f3)t7tV>(#?qrq>d^%B{m5r;lt{ zGaV9pJTh~YwvC?x@I_#ueTFD%kZEJf5%vG!-ckb>HdSEjuk4}GXy8oO!f{<}H>Zxr zYk{(~5ec1wh3hEFG4YldxVwpH*2e{Fe^#_X^D?T5v?2`BEg%%#%Tq_#-ki;?>v#IoI z`2!ov$o{$Z|6>qt5xLCJS)1(B6dn(Ymd3oy4Khx5by)3Vj-RwtQLU7p?62NABcV1} z5%bbt0o328JdcYoKW`Z?zU*Tmc+)i5u{>^vm{1uEcF+MC0JL)XkBc*@pg6SQ8$0MOe);t^{oZ7l#HdAn-!0^n58Rqnu7bjdoNG4T9RIf6^VxL42^SR zdm4WV2ShkMlpbM4^U?RC@iyn|Oy{FPh$}H6U2gIRi8P%zB_8tX`pgtAgdUtPxB!W* z02D#kV{(DuW5n|6jcX26SAMRhX)AW%WGX8L%YRKu7S1<0d3`a^C4>oHwPHUCK5xl~ zZ)ki$og*D@#RCI%%92d_N>$8YV@e!4ry1)760GGBbXY8fYg*L{>6A9}#hybDgY{6B zs|0Ib+GdrG-LUKvZ$Rkd{m`_O)PKSFk$Z&ae-_xZG9<)VMXO&_m4>x7<;^ zuVSXUK|)C~79B<%6Pd0-A7<+*(Jrt6zS@7D|8C{kx|QkRQ%)e}Wdha>u2HzM0uRd}P1T=b1}^SF_SD z2Nmy=)htiQTXY}&}!4xv2jR0vs*}B}1=b)5(>dJ7d~fP3lUOKxuQ_&ps${c^J+X{yF5g)< zqx+r*3Rc%ug)zACv`Qs>XcomZwMT^(Mr+EgIT2r(c6K{LeBX166b~w!FgtVZ5IGq2 zZRzzk<0Jfc=zc}bQ3Th#D|h@K*&K#K$Gs!F?Q9~0@77X`&Tbau=(0DpXJ$Qnsr_(a z{%%tjJA~e#!>D70&Rwjk>z?(=<%roHY5EMEqhF3V6=pH8Qoym#7_G*fn+l6?o{vD@ z4(~*__oSi)yoo@42*!z- zGmP22bI#j1Pe1~sZT3vyv%$vLq>7tEWjy^~uMc+2y`X}}4FhfNu+bdS@fAuIT8}FH zsQ7IfJ!es0_ou>;|5K7)joP@Z^wa!_%u#i<=9%#TWL3hIEi;d9<9aGYWxAfi(<#x# zKBSxC&QmeO7?@ErD0wa6K>kI=Q;ixC?CFtav?VU^?2v)@RfBCJ2Dh&=#7is(7c?1Q zb{A5H&yJ3f9z`xKYfIP}kC9s=q#b~|+6oMt`ADXjvB!f&h593a%0d~%H5E#?Ah(A- zK_|M6xw2u8qjQP9g5ycB(({(DhWb;uuHkr~ps{AUPvbR)(jvmR>Dx~9C0%cY8@J9` z@!i9njX5SCh1FiLqzvO`q9?i)a#JPMl?e-76NdvG+hQX5%eBhsBeZ9Ux2cEnGA0CX_v|aJZXOXORmHN&5(+77Y+$8Nx*I~_!@9fJcSe!X1i}#}XEtJUO zL$W%k2uNyYG`F%crN|*sFK;Ij7V1Ge*TEa61WdfZtrUeyVd(clEIrXynpekQO z!?THZ8U)eQh>?}fQP{oNlcDdXyt(*pl3tkg@?uAfOv`~EJd@Bghkmjk{g3ObO zDLo)YbO!xEwXPx4ien<^M#o`C{YGg<%w*~bm+IgfukIcw*rWt}m>1^$AO(j1A_W__ zxGg7Pr#ml^Q_UQz?LNY_qnCKpZZ{Lj3F=ld&6ebEBa6|0QnWZz|NfWw^Zvm6MDVRL z-oj`3^{RV?UH_WEqWM-i0Vs3qYJ=vW9T4DqrI^#6+pIF$Jj z%QX*{KU~e$46R(c-2ueu?2DYLvHh>oC9;+~2^W+MsjjiGX@vJ$sJbx+``3?^3&Ky~ zz-5nX&a-BF#G%QAEJu#_k_wPx?QDF!=J$?D&OGe`o#XSiWh5iUUNfO(DYy?}PwRm1 ze$g7$sKLxQd z#{nfh*QU5*+)?{jz2al{R8C2i^Tt0RstgUw9C0(?2@ zJG79Y;8X$v#bBnhO-}-H%O>WMq8CX#GHc>Z5mveKQ~j8#C?CC3d^2<}Mz#eMo6!P$ zhD#TPABDY>1!!NM@$K+j;U(cNGq^Beuz6Oh)0-c%ef4mL*m)XVhjNTc z_TB56h5EtGrH<_lvIY@JtX!ip1Rp2s4?6T_*!12q4}{uKXXY3>{l|3aw^%X>S9 zNOo*RTMm0fwnpQ1Ok2#6?-W(8@swXpMtTX?;-8#>9{u@{{9vy%JBUfGEEBNZ}U#{zGchtf^j=eqd{qa@26INCQXz z*5|>PiF$FPU$+#wJ`PVmw|uMmhF8lr2?Ie(bIrgV*_9v0B?VRyYe^xQ)#z1D`3SL6(YUW2-zm58DrCXNJ2H z-smVK?*e|z)VZ6hN;bBqHfDg?tfw`s!JAL-GiM$_TZ5>NRK6DkIQ|u}FjGL>A}nK- z2(ar{s2dKau6V3^GwOJYn1Z3cQgSbFc%g)ceG_2lFjnzmcl65s1by)KX`p*IxI*c; zB9{)OFC&{%b`41VmJNvg@1z=LBRB?ymHi{vaVd%y7>{y-9;c_f<&>Efay0lwrJV^d zKqxGBcCKJi7VQP&<`L>{94{3D4vj%1Tf8ADCbLA%?jF9uG{379y2iYFp5!;$GuW$C zpFotlYnwKFS#hfk=ew{M3tl2Q0|suKdl&>h+{zBUN7|be--nB)lv0;JuzW(*h2~|_ z{A}*V&zaZbu-19uR4|N`4KSJF5>F8%}95vV;OnLRG*O8$s^Y8RHzu$e?E&rVo59ES;kr5F` zk3SOq+--{Y&O<#A~>c^xeP8_TW_IqCaALi01f^&IP|c!r3#ue#zLy+mK{O zh9?K)&&-_X>;yjDJmiWcf`L8)LPNgU>?|89TC$(&f%XFVvXu9Vo*?T`bsSa+glAHh zN25X}ig=Wnv4MkIMXc-^VZuI$VfxiS2)5>LGj*^cSNE2k=bw@|cj&-to!S15M^;vc zGtzAvO1l0E)UEAY?sUI_i_9sr`?e^LrUyU6S`XM9=Xi%|R41X2yyZexbe0+Z-`uLk z9`H_dl&+}MtxhkM@CsnQ+?(8hPqNV=ua6$8MOKSVJSR>#t}b>a!e1*<$n=uQ^PJ~n zvH%kuvM_#MP&!>>&nyRaPMt0sZ?0?D>+;2&eqE#$$a#=>40zd^A=OXH`dQl}Z!pyu zMH<97ph&C!UaCWiJ`BcwdRx3O>eXw37AwV5<|B^vO5<%YHF5{QsOF~8@4nLK!pOa_ zFMs;VLm~6S+wLm4|JaxPNVO;B?}wo_T|u|ZkT!t|=5M#qf0%0czC1`X9*dZs53FfR zQONN!tWh(eF3%GJOZT@%X0VW4d~*dCmsmK3z47G)vpYJ(G16V`?vdf}>dNGl_g@n+ zUQ*}6mJDhg%1#okWH0g;Qi!&#DXkXr#ZwA;ITOAEe}a2;S`T zoB{3)W){hk|4@N8-H{i847ta{aq%2nv?JGT^#XIls;;Qup1#I-uA3oa^!_Tl#cw(~ z4jl(O$Ip!LrcGn{vN@NA>mucXn!Nffs2*bo<;@))68@-aPhiR}p2hq=7`@_7&{5`!{?5RQ zlRY)ytYZzJT6$plzH2QTaz)&K)RII!T2ccXM% z?uQ?EEC=wz?Cayk`v9V5lH*0R(yf#jH+*3x?B~940g4n>8R0g6nwe?hW2`#Zi&%NW zzgHcR8el3HBvB`2S188#G1@~<=wBctdNP6Mw5r}}_gDgM-Irf?;vHe9AN`8Vy>4}= zuHk};+ovC%a<@5_@8+6|$w^LQEpr|?AEn_+R%g}pii35Mg zR%-J8eYC=K{f8bhQo7QG;3dC@_|SIe>d#A1P1#qyC<?eE& z!MfK+&8a%*mk;=9s8aNu1jFp@iL(8*r&fWuo0}pG6VyFLcUrFcjzupX5ncrT=of`- z-g%TsSW5+W=roqP0_OWC{Q;wt_NOnX-PgSn^=B7}9lo>s0&@NOip^Jx4RoXpXt1t( z?ZXL5z9JqAvUpCJU0zhAl8K9WI;X5Fp9O|vCV*VjFi_ebS={5Ae&3Y%C6cl+$56b;_EAthbkVZvP)P~hz3X(mU;j!xXJKj9}wz=WtT0UQ8o!%Vld4~ z=z0LiqEmVaZ`K_{IT1jciuMI{iKb@b3rIxPVyPw|e3wN4>rOnsNT7mFBA$gSbq_WA z;d$fmA=>6d+u-BBAv~YEiZ&m<{1LqlMz!V{UR@XzlRURtXQcC^IpUpHP(Z@vv#q+! zG=#XGKCFwdMI;p~_7qr1^hr`g*E5r0Mn4QCuJ*Se5=h1Ae|>;`@7sNP^@B-R2u)%5 zV?n+!b%m!iH-xv^194Y)1cuS9~i}54MUNE=Z&*-YxdQ=o2X#EWrc39H4tBUc!_Sa zd)D|9^E#WsgfA!_D(ojEdcIMv>8?4ZkC+ixcTrazU=%;rj-!SY^-FpE_w%w&f~nk6$mkdZl~uU6r{v>=m?^ zpoWekm9dmEE2bWW>3%EIXR-qPtgC-_-nDa$?ha|qL!+?@7mM>=S_173?X3mdF8ubg#)X`QJRi^s z_D2HbR}D288K?y2mrCnhgU+8>=q`si2zUnp2loT*FkTu?(n;D^x>R#OhnI zF(iLhZ!3 z%MDkP{)au(-ak=<|060#iW9hKPGG#EgOqVN%?b*@-$wwSYFjMg&D3ur^PW=TOM=2M zQ)0Vya|M>tug*<2&oS{+x@b%Ke4zmYKfqLn!X_Z_Udlkf{uZZ<{J+e zHndY{>Aomd31HrPGUqq!mNbChEqsDj4#9BBu-xlf{j#lHZys;vN-dsw6-Jm zwiX+Grm+!T@m5YQHt2^vl-UAnJ^IQkO{xWq(DzlOT(jBW!*QRf(`8Uf$eEq4t4a&l zhFzh~D&;gsq`(8kH3y_jrYGNAa0IO(xCGk+O9c54o@wfuU5{+S^8`ug2>Wv!eBV$n zwv43`YT;=uJR@-Ds0!s!)~H(`%*8dcVyPqjtkv?2C;Pmbk#89H1)(%0ZBjG%l&t!C zwsgI)m)HyAQR+MnL7N~LIjl%w-|_O*D`A3&eJqghCzMB+@GWEE{jtWsxwjyi^4|`r z_OHusaiH?pP?NZn+JA79_^Hn(n9l=@iFnWFMn`g%s#L{~ej~>hg9%><3-Z`~Hl!rs zd{|KZ6{O88Ug?2+RxYLm6A*KFVY%~`qHi8P*^!My)dxQJKXMZ7zqiHce77)nOG|-C zcs_@uTT41*VlBB(U64M-kJQy*%GTW>EbJ>y3S#3E#$4+FbN|GuBmdnJh4)N_8ygbm z$A$B~#(+Tdy)kTP(aQs=oPwA9>Y-v0&3REgoi7L9xt6|8+x*5mTVkB1Iyrmzt+ z2{L1ma^i{W#xJ{YKM5WUAG2QVb8|saaZ_GtK+tjb&hAPV^f4GVRf)vCyqG3T%?Xbs zcPW`UZ5(xg>gvj zM8(K>!@d2uuX(SqZ1XYimoY(Ha%1$wT(hv`dF{5CXZ6cUSz18g`1 zOWBQ2GCjc|bDL|P3Fw>@ZovpdPY~Zxm!CYaq7t&ewe%8m)qstqfG{|Fo_0spk{#zG zWU3^;O08N0#=P~VtDDfBLMWwX3VPA%n%9H3Pvt_s-Pz#^P4Z*-QPte0C_Hn3;;Ls* zVLO@vy6u2H1W}a`W!33a)rbRtA4Oj1#?yx83j<>jaTqtgJ*QmI8JtXvgJk1)*N;y9 z<~;m(D_!>Y(4XBZU$xW3+ToS4&c4~+AHzQE?$4k>_{K; zPzEc2W(8vMaxC!FE3=a)z736`KMb+tn{!3@7y2XX`Ui5Vm+$U-U&(zPC^dK{u}b0H zMWg|3f?{!Qj^VBJ(2?t$Vd2W(j_7*#%ffcXO26%9!!f3g+flr;B)qXW_|k<|3xShy!&BO(ss);{ywO=Qdw<^U;*}U1#Oj z{?CME)374>%2&?2EruzQ;z6hS{5^50AvvD|+H5{%V_5H_7?%==e&$CLgOigcKoaO+ z&_|8I&Q*QM(|k$icoi8uD{#-Hw_7%A2)0Kqxs~{lVcsF<;X?KdPVg?A-ZeINV=rz| z^O8Uw-6PF%X_g16c2vL)gPuyZczOeO{@0;1f<$=Ll`D??m4VD*XA~XGp8M6Xoq1py zK+iJ@?Oibneb>mMEd5O_;i{p5{fGuJ353uH6W=-tGSFcw#oCf(Hxb^#{RzgCGna}4 zSL*P98?IJ8n&ifG5&Ce_1Lba{xL8Uq&;EM7@Tcv+`@e%-W@SQCsP6d5tR=gk6e6YF zmunLcn$=JemB;yf|L1*&iM|nQZPk|pZ=dnDlS^AXRQg+Bjj-0e@&%dj!@kHb$#AMp zbt85P6aj--{OGyJ!0%K-s$_(s5kK5J=DxQNBl(E!d$tjDs z{aTFXgUt!767VW%$wudTTW|?dYcUPaZMBT53s+N?$^@C!sl6*st)O%cu?agoNGCR8 z7QMYRK%5`5mUV(Q4;M0}yU+Un=~TSe($m(e^`9crN;dN&n|D(xZkBYl+I&c`hmGzF zP7C?0n;fOYSo5YC$1l!ocMWTa?o+L?Sx6I%(+2o*->~1_&dZ?zkPx#xcmR&mtNqIA zIO{EN7w8GQ&^zIS>-*CL7yC>&y#hK`kCQBDs3&jAcI14-vTpMJ4r*3rp3g8;y~=@o z?N$vL%;=@bV?>J{MU}mmF6m&dq+Oix4P#a z`i!t-c=G)iG)LuZFv9Ln;l$vG=hlYKAgUS3%x2{xZVy3RQC#d>0O~q^`;8B7{GC4e z=f6ht7hts<_h>n~PF?@h4VB(j%e`IY3EymVjf(Y&)(ONmOuOP{hm0Hx;bFilt+J}W zp!{GlO)3EQY_u7}gG)Lom1?^n`&hlD-oek*mnxWF@39@*q!Du`zVi$;jhyqtU(Ygu zeJJ-iB*64m@TIN!#^=#b;OzD!k?koLEl){M9Q)H}-iXkv4~Ip!=1bFuk_XR6bn+-{ z_q5<|`6HMVKO0&YF@CPTg6_$vPNaR$FhM&-#Aj=u8|;XKSr0k~c>0R{Sw}|_m7Se3 zG9q^1r!ruZWIa@`@HV0}<}V<`nZ|$_qtNFcMo065$o~{EbeIs@S}Q@2SU8=Y}>u0v?u?rE2N#Oro7R znwnQW$>xUyJ&mohlA(sesY993R;k-}FUsK4!&w)?JRNSovSDy854;l>fxx{l>n6k@AkzU4=o z+v`55L`TfJ{i>8!pZKTa$>{xoxW}EIsmxi#&aDOhhExzP@TN zb%Sf}Vb?R3n~tiAu`3I8ETkVDwBBezlXg!h`?puCtVbUXgrX&;!N zL~*O%IWN=pU8Osh2Hc#^y(fIc(8=s2rHxz8wQkVT1ZmYSTnp_P*DWicFpF;?OKOcP?+_~4h@7XhR{;u z>m5cBBz7Aq#LQCEz`XmPxcBhW?K0WSPrj_GgICoYeW*_pk?-BiM}N|~ zApB5EFH=?X7o$I5ixehraHVb~_)ForcO>{Ssd(|!tbXApDOGok?BmL9yPwE7em!=5+0pl#H+1Emu=18A;KC{F8lmn`O=` zjQum>ZV}?N?LtLFRhErr_KcvL7PWeR2v$b~de|Xu)piaNk0u(RmyF3vDTR(LhBnEf z13|xpQ1$btb}s>Wki+N_{vY%KGB5qJ_#tarQWe?lStcny}XiSi7ox>I@C%{{bo zM$#qGZ*-rZnRDWg-UBiZr!qyZ!gVvN3jD@=51#F;htPR4TSC9IK|05AZY^-bgbzC0 zKCT0SaK)qxvq15eSJp7MMM^g@pTHGk)PNDd7dPa4MUVBTmKDD;VE8gG%K35^Q zajpJfZu}`R_JMRRn@<^n;-~*nxtZuU^%F~O^kbFpDTbYZ4j{URSb2gaUlZ9@!@oq| zwJ!^Ogl*%*>qEP*0Ih4c8O1S7E8}i8#!?ba>`7C#PnJ68OAsXYA9L>@`9!w4$rhe@?p|)=St@M06U2| z5FB1dX8I74(3sngRVPx@@YVQxby;8cWclSjNUhSSM=kH@z0ZY;<0 zky@|u%;&{4__gPPOTtI=b}GhFB#uCKe`em%(-~*-U$UM(n2LxXl4k$Se8T6 zF}&FeMQ`^n!aZ$IN|2<-700ZR5~8Xkf5tSk?h^W-_xm%uv+AmHOYcz~4bhhp5Yz?p z5-Kf389|X&&b2oL8JaDKId#>{2)?x+Wq^CUDNc<}G@O!sFX&h~)?u)K@5E$H{v>vr zPC3B#4DJ2}v}t}*4$yk=-wPD-BGwPJjO|`!a2VPOoMpAj&hJ>t?!g${hBd&Y$Lo%TL@rp)jQOlZ?Nz_C#!&7fi3K-*nC9 zZ~@lM^w-usk^B7w-e$gIlcAfPyoFU!u!o!jS7a3gAE-at@h`J>c=dh&wT{*E!&u4m zLO+f@j7m#|jcQz>x+3Z43};2VkGJd~Sh++#_5A{6F3)10uf87rg$S+MjS91+x+-Eh z$6Ew%QOB@himY(+N_3(Qs*%*Vs;=aKh}TnkmeRQTOn4S}x#nB>o92yFDym&iv|c(-M}Ijb5fZ@` zsDX=!xvi>Z6s!|O6f6Ad_#(ye$yj5m{>wXpNNYJi{x#u6OGDbcxWTvAH=iAhy(gGd zfi=Ev*z32$B05~^E$e=Spvi&5lM%c@eT1RklE+<9@kxZZ0kv7tkHmN{miv&cMn*lxb@O;&;MRiX)Q=#?OdU$TPj&>Bp{b~NLsJ&J{uL?2rNS6FJoejRQg z&wsn>2O}`IpuY`gL#A|uOil?`6*lES=z%jRd=EZuF=gD2_zD!X+;VK|fKjy_AV^UG=*MPyCpPrGv5>k-SlmNPpGcr>sLSEh+-MEWwfZu(Bj+TlAf zzbUt?;#Ber- z6x^KX#ccW@D2DVU_S8Oaodr+KV505G=Pz2s>@SD^)cpQAC=%{Pq zsJLQO(TOyU*5!Un~v#n%XljIC9FmI9C+-~Eac3y)VAU+9s>Am4=M8D7pAK?uaJxxq!wD-k|I5Wm?2e^6P5$s zu)XkY>C2QSh0U+v;e2#w;RU2C(VJ5o(bzmZk2EDL6ahDdB)H>C@#R#p8WeuNx1b5! zKyl5o7nZ}X61pqa#q|<9kdJj}1TY~bB`S1mGH985PvC_O1crIv#8m_|d_j5a0-!lq zIj|7-o5PjmPUAm1Z~v5A^H#j*J`@xA_UijaQ?C>8;+Wv=l+0T%(%NJcz(-#V76QSN zz2n_F1)eR4iJf{+ekR>IYeOD#;M=SUY;q2T@zb|jEw@$nYfE6bcVSA`u17V&{YuhO z_{r_D9hKVp%fH4@`-gdhPQsvazDD&WXy#jo)*j2BVLOrzZ!$|vpIT8PS#-FtdR8=G z&Q0&Y&#fs6fG!zM*+JWz;$Pwoag`JG%B1MM9MkJsTdWOdtC$o&<2PFmRUW=_g@TJH zKO0pBcnAWz_!l;Ls8wbo7ZDr=g|hr9MnLT@Hc2aIQ-a3v#VWDK<_0T9iUoH=*I9Xe ztBp(DI*HvbEE=07xaFb;)7=M?1SCJFpRUPgl&@W(_)=S>oEyev1>9$>ULqkFd573$ z=lKKd=RIxK?%a)OvnJIyx1|T}&-TL3Ucw`UjkiZ1mX%vrw^phS)b0WZ{wI7CZ;cAJ zEE+86tdGPodsRCrEz@!MZ$Il#;L=@!O%Sa&>fH z$B_IpFxDLC&m@haz+_5YzbJo$1hak~IeTrQww6^Ja0W<3u!Dm}YsE3gfK&$)ex^pU zFJF_`?j@~uZ6DB3uv>cv-f)xGmr+k|qJRW*o9=u{(CJ;V+KlA7{xm!YZx=C@JNg5n z57mk0u0uv1_<2MrLY|nubl>2sI|Yb^x=iM&dN?7r2bTaGExw_#5Z2_TsJ>wUc@Z8% z*XyzDEPQ8zQs|o2!*vuVPLjTnJ-`Q|i0>fj*hbUvKeaT0U_#V`lFLuajiYDKMR=B; z3A|15CeRrApb$kP2-l^E7taHE`po7C+|RSR1cd-I3k~PblnEhx|HEbe(7$D#Dro|J zCR}aDe`5dkQo6qRu+r-4VAVX`n|UU4y|yI%h2&AQPm@`|uDhWq;;_f3JT{rf-!szT z0P2N$EY5vnGkLjJ#igLOc9g2b56v9oe==Gnw&?D*?9W6Rm^>zQ6B97-#y?xbHrr(N z%u(G~L$EDec6S3X8`4G=A50;L3Ky22#cdW~<5lhX$}%+V-SuE5@#l5O0d4W=wV->l z7bq+>9&*)MFsPrxC%}2R^dY%rNngrvM;%3C0#p>g&YUXeTH1 z>IF(?caZnxh=L&_u2JRm3-*3ucOB~`_8Dbz!3<5v%gg)xu*^qPFo-f%&Qnp+A^ff( zG{xYdc8HBj+;8v)Bgt_W0gFFK;qh-8FvETLP)gZEsd$}})C`Z`ekLwCMLS4KIv?Uq zIlF(6T{zSnPEWcHN)I81PENSJ#=^~PSeEKbay#G~G2;QWE}9?b>~ZZ|aLu#q?jjyF zfgM&vx(HhtXrGA*f2MUogsZuD^m`OfLc?zwlus#=8bW>_BLR<~Rry zO3_1RHZT{^|FdK=>@6n`-d-h41&O}%{-GoqESVwE7j1xNgyoV5J)or7 z3R$K8{ATAxKrD2l#JIfoW(13_Lk0TB%T|1wsZgK>7h+pm1=RVNOeBxX-wTyuk6#3G zKgYOt^s5XV4LkVt7rYaVMd6am8Ly=*HYzW@u-Pfq9Typ-6+$2M_{}Fr$N&&VyhW${ z?==vqaOuzW>D-zG_5#NTHbrLGI-NePc=j5}x%1G|z*UnyKp=^A-}pWQ8qT!B02-voEh0Ouh3B))eJ{KtOPTc)F?>DBBECCFI0 zwcydg$HZ}@6-m(qd9gWx8joi9%r4xx>^m9IJ-bj>j=>|WJwB@K?Lfu}bkD3>THUUB za}xV833`Csh+`?>W|}4EV3dhjF~6Wd_;Y2R4&iz){9w=QlAxW1@fbXxD{5mQ@ z-B0W^4!vq}#1=U0psHkiHq5Yxm`z|YXa#H5O!*NRVIIQvHoY@>7jqjkd+`e=b)8Y- zc3rwNpUmLi6cFDV^?3-s&f*!0>c-b+-&u-s!*|12HexPh$3ib+#s)u}kB&t}1tC@tf5j}+7N70;*lM68&1tx|4&BmZexaClfij}vgJ91#e z);ry?_s;lQ6VdODNPaqwhXXJDIaSW9|HTa$3FMMF_*HIEs`%^-paV%|o9uT@3Ir8lR|LPhoCJRM}gL<>0S4K9rio<3i zqqiM$TCd@J;?>6Vss0db(+`YzAZgt3&Mx?z?Z5x;dDDL+OVFwvd0Qr>tXlZIXRYnf z`t(jI{*Nf1h8G=Kzf~wic8s5*rHcG6YaN=QZKC&ha=^}5VGx48lbf=pvvN%ITMer9 z`BuB$fSaq5Px{|S@t*p0k;`2b3k(x-9iwv@qYZB5CVyqc)&J#MS47?dOZ)GQb1x%su2*pzuh z!a@c5KzLI6gx<}QWhcB>7@*&3%a&{@siAKD#2>9udJw-^W#(d!)#*eTgVoiQ&+nM4*vH=Y^@p7jtsCM$3o2Dywy&Qj?25XA@oB&1(K(ON2=nMYVqDh55g z6-_rt8(b~Zs;yPNQs3nK{zYvu8Gr>2wNx0FrZ2z7=?R0N+oRLcP6P=FXvy-_$@8mI zX?$QT?8*1ta($Hw`~4qXvOl54Y{r{ycn5Qg*v%b>Czc$6=0vS@4`D3J5%6yoIC5K# zhP~;^rKfJ{7)l)dB+2c6c%xk(!1SuvyS#Nx%C#A9Hh1aVV?Y1kg)9Q?Ub;e-U~>Pi z2`B3}Px&_mHyiVbDjp`ze%=D#*}V0i)@lF2If|`BK@E8i+BN@h-e7KIF)NtOVjZcS zi|Z_n5t|>KoMYARj@`!)EW?^_Zg%j;5SnG!!Qw3zbXj1k7}r6aSWC6#PB~bIbAyKC0y|z*eH3 zm^>}Oc8Lh=BhB^5tGVb-xJc{aBs||eBPO&0FA)+h1j;M859Sd1G}0FrR@_3;$Z*C? zG-NmM7A$3R$@8cw(sh8bsL=Kb(E!~P;+bDTDAIPLdwM^f027q)5jauVaIKb8={uJL zEzOdxktjf*2V+Db72E1aWUm*^;aLuUIe|G-NNW}@*NK?z&>#YeSfRY<*E*|GjhYt^ z;;MIAZUL@(M{QO!HkrLd_ujOya3gsd23RAo$x`$hLC24WHUWdA;&J;s1gYeejIO6v2>sq34Zi)=4i9uqRNGfNi zyic$ZV@MqY*k1Bkx;l9C?en1VmP@ZSNS4$Q)J|IEl+a(JwT&S`?Zp#5D;%$jPsJNw0j7s|Hq{Xf8Q1NSWEw+@UUeDbdf$i^5S%2o~2Lwa=&3R2X z&!@#AD>}BEtlzK4hu_=N8sGZleDmPK?h`~iFFHBU;WCk?%U4V^U89waL=QHNGk$^LG z0=woxJhLD0U`2G}tnn-$ReX~Fy3?ka{S-%ou$u>uLA$Tgyt!-U=)_VuG~)p}Krj}+ zgG}zO5DPzWe6UuU(iKY4wF*u3qIGVw#TY?xy!e!(kD}ET*36)m%K?Sz)rGvsZ1j)& zTx2U#R$nwmm1 zO%{5V;D@1#?z*K+qbn$SOLm|^3JD>;IAOkvy6&|qKUoVnVzNY+hhA`PG@Q-;Y4R}L zzm0OZ_=(&uWBcyOEsT5p3`P63!a0+oH`4ja(MQAH!O(QP$9)#l9F9u#i6_(CxiN`w zqXiCsV+Rm>O?IKg{D;CEA*CEYxfr)y{GOu$M*)pf$()p>SzF<3*bek@;1}APkmv!{ zh%U_bqtGvwk}DR4JdGVCIBt|L)lSZMmZ^^X`DkGXYDqvcbQCdyJ?-tv9Q-(bX9{|q zb_anu-WG1Asc1UA92jPH!t{jce(~bl##4nm?=&@^DcfS8o@(zGF(#M%q<>|aXahKe zfD?^hF~DmK0T)0_jhPX`^SK z3ePc4PJ}%zN3wPKjgcbJJ%V5uA)a)spF;L01uU#sQhqo;1SG#$NAD7O%%KX}r!Het zfnUf5WZYQKb;dr(27W%I93}P;?OY^Y7F!}m@l~8G?92;xY&wsREfE(o7Ei;JzOx~p zyhPtYHYQGD>?41CgE1L@5H>P-2;FOmeHv?{f2^}kD)@4+pGeSMYe=jA8Ez^aW4t7# zCJetxMVpR?S^v zEVmh4VItIrK1E3N{Ml3g{I{p%!AU>_{Nud7WQFGnq2GKxM=jds1Bmqp98d(>c*!#DxODS4qyJOEwdl8#R%a`l`@1I419Bvmr4cA6sO)pjIw`UW8X>Xc=bCO8&RG!H= zVkft)dIm9%$Za$*Dat4-X5U=yZX1Axnn%SbVMd7F#E?k?m=C?jTF@M<9fjIg=JHM8 ziD{(Y=~F-eKM1*9>bwN}_X6|bP-2RW$Y^hjFf`3?6G}j!XlwwU4Mn!&9030=o>^RU zurU+UW;Qj-`^Iw$4aTL*R$r_bT5n-Slx$pNESULh1Qy_?kr$5SDm1^fBW7l2*7i!*QaGl?Lo`e8^sN7^U3mcOJMR+)`pL*)vtd+WK6qTKzrB zZnG^v{F9PCF?n~Fr3~Alx$iv~UvBwegj8__%FPq#$rOuwvjg9PgS=Z$Z_-8!>7O&9 zZXN@OpG*{*G2kk!nFC#_AB6V8z|YpCQ0W7c#DAF!7J%eovfp-NwcJtS4gbEv#D23h zG*?ILf!AS|ijEn?z9i!ZlibTOQ~ktx7%1?`BKIkCe(EFEKDJlhGh}$PAB{SSN&)qW zb5urj-OeRhnwfCc60b_Zm@O099Ou->VahWJ9u^ffG*Ts8h$q%WrXI3-b%`Q*So2P; z>#E1BcUv^uq^logqw{ZXM2cz1nFoJi#DS0h!U&&M3RNh92fMfhTfehd8#PZA-dQ^K z#b6?{8{(O!nbPO^st;lvx4LG^bIlLCXx^v)YxLJhgiee|eyXC*o|jJFVFAC`Yc{E7vW zdIiKc#5vrnr%MdMKoXO9c!*c+m!r#FGd0S;T)z37Cd}j2?-Cr)EO-`IzeO8XT;>(V z$wS0!GUu{}EfmnG-Fencv1rXhfpyCC_Hlu;*b=fuC&Fr^XiF&W7@myh6n8inl7`TR zctA%3=21iJ@k5enQ`b;SgRUlI__w>dc~c3>dp#tAySD?or&Wu|CB(MTHg~Q^*&{Vq zKUk!ta4rMG;v2LU@kg;0JXNL;GYWSuuxhDHZ&bL)m&DHyS(+b_vfj>V!K=L zpb%ct*y-#)-7!t_-{z-oBl0&M%*r2pG&QI-iDg)#SGw+3_|W)uL*H$Cpw(>R9HG(8 z;i*&KimO*B;uwQTpI7X~n5H6UFnuy*V)9X=T3QF0Q-Vx+7!HGTiAcDR*i$0LCaX7` z6Om83iuD!|{6S@rRi4$KiF6cIGW2a!+lZT?IC)-U>sS$Tjm0n z)fn?-nxSNTxqG&b)%wUhEZ;mShs?>ERbVqO&Dn+K5a*1K{H*pcuj6h*2p5V%w06}f zKPWb~4jiLk3g|IU9LY;Wv5~cSu@9SQsSb7R7A)96Rr~>x0NM-cLH6j5e){l;JLlTT zybkpP!HrDCeQuI&Gth*soE!T7qH`mmF$di9i|o9*C*mdOf!eAlE5NhSan$$?Rp_AG zwD%X3&|%k#YKEYR>W9hlpWf}CW^o=a2)iIjyii1-A;dZOMuO5GrjE3VyXZ~%a~Z6H zMXPk%TPN0S)J0$n`76;WJ0eovSV{ns-ako*vFDRsFY+2M_-?KUESF93)F754&bVz+ zOEB;VoH6H%Fg8l_D~3$k9#_|Li;k6F9$FQO9abQ}D%&rr%G9 zcQ_jFywK2h=e3#5O9H7oj=e(E}lgK16o&rK-eQvn4W^+S=O;1AHJ3I)iJb+U!}`eHXqJBtZ`+E zx-Mg~$5nj(KIq=Jo&PdxxouQs8|r4V$zpML(#DdYQ4FO*6i*Oj(Jo^LAj8};#8(`X z7VSjx$_;5Sp*!S`-2IIt5)EoW_=FXtPz8?SBPo!b$UN+6?h&UCJ^ayWuR}C^nFnbG zXJr=Hxly@+<7#tyLN989IDa1Ba6(kf%H(t7Hw5gvM@#1gC9)BgqpbG!fMw-ip$6jD zSz|ta6mUUW_1%JzltKLAO}HDE@xGVK4!;-brX+*u+YX%=9*qY zBft0K!GCINeh|ct$ZenyTE>h!Uj0*5-KGDns&^#-0TQ~R+`1}ywDq&vm9vTW&7OWb zHW4_&k3P%(Y2h@Nyz3!MCHiMwU@0{#aY0H?C>w5=08XFYrqmYcL+gBrscyTo(tYKVla0&ET%C|E>T62)1+_-dIkJi z_8$wEJ881T-cWpx#XV-ZXKEO%U_bMvk@&9xSCv|y)81PMu1%kgmZ!QB6mh=@;d;)0 z=z8ZnNMi6Ggfk(hWATb=B5(R(?=DKv>VT)wG$$sm&x{%v!}^sXN{)VKwdpHjd>c}r z`*dI8GvExKrSP6_%6Kkuby}D$YTS8NnHqfXTGZyIHxarDh9ik6+PD8Zr+v5hp3=)jcar*0|ZWSuKPaz^J$jWx?g_g|slhe^?X@G_+O z&e6cm_xQeyIg}z|q?k;;E%t>fh#u@gXvsV~JJ1%#Ax!C{q^P-&%Q2kM$^Jd1Xe*hT zr4+|_ZW-u@y=lKu60>&Zu!Myl14NT7Grwe236T2WXR%S|kw8Q=)}=0?ovPl3;^H|- z#t@Y1IJKb9pId~xPp?rH|KXio zpTemj3E8eclyyQxzgNCt#_c`ug&*Z~uk2{yR8;l#+cf|hZ~tMhd7iJQ^T$o{Y47rU z#4)(1FY|5oW%BO8aN}zRa*R1`kcXTMayhf-G&`l-vFAW%pL_&EGf$LCI`xp|FGU31*V7eI(#s>CGmg>}jOQlU_I(+~glcP`g)E^>WQWs=TikE~BU{t#p& zo8Gxna+7`72Yo8>rw1s&bAQJDVcu{2=X8kqtq#$EJ=n$j<^v=01!5mhDM?{f{3)%> zx?aD=?P&9WK~+qZGKQO};ctWMMpJ@N14}-y)#7Ygd9~;%rr;pP`917TfDMuhYxC8| z>c9rEs**)O*JY8@agnv5ILltr6d1iSdh}^|lzrmOtb^cwA>CaZXzIN_DJe;#XiSyS zfMp?3_6#r&yrC+P4kG59q7f7HXUdLLAEM&NC)@%5hz6hxdIQXYj>1wn(>ct$=}V#D+U6jiXGfzy^p!Pg7^@vq3%ot$9ML_=o&4^Vw5Euv z_+0h$EouO(63jqO~_6CbDdxU;KWAVnY?pUGb?Tkw_u0i> zxxP8v*_SbGw~@{5-{vW5WO;^9UzL09ZrW+sD$qQoE;bOqF(EIykC_C`ItsX#px@}Y zPVkj1{IV5!Hfhu2x?N=he*Uuz&>5C1koq5BMsTkvvYkzje#XFqyQ~;=fW(Ghw!c%ETxH;_}L6py}%I~&3Z!+S;6)k zFo$*5aM`Wnwm1_jpmtDrV=D(tX1ZBjz!33c>zZGDqg=v<2B7cQ_@NYna1R|^P(EyA zf|HiuEfpizS3ly6{QeF5hUdmH-xt8yq;S7KFn_}BKkRa!7XT$e2VJ!8T+u4OVfJXf z@>1K2Am@!vr#-j9ttY@lY^q)RrY7(6TVkefivEJ=o@-n22GK_JUYVTUAe&I_9U3{z zufND`eyZa(hqR%lJj*9qiINu)+-)UIx@xc>Wpz5$gBVXUuL~he_>!M9|C=;IRGxeDXDF=gzoB4t9G&uoS7GySl@zhS?`_!Nw z{5*0O@-o!cth78n)1uOsX>|N$(~+ zsEK!6874VCb8eweyPj@egF*&k&O@Wd01KC)AE;!%$>VqVR7RaRJ<* zchB~7E;O^XzIISJullXomUUu_o9q@|mcQ(yU#Z_`7ZBH>QC=T-^PEr9DGIN9(iy^x z#%*hOGjXX=!G;>jiQs)wXpRR&Tu>lBHV$tnlaK!^^{n?gxGjn*2V@D6+epu{)?2T& z$X6bCxKqW{Lfu%aHY-J5P%xopmrU0Gf>dA%+jT=jX_lw3fQ_q#^3i?-+gl5#?E#0l!`QNy+-d zg#>2U9%5qMn@|_TEtLHwTu};S(>#;DFsr5oY&IZU!q-PQo)C z18`56{&N|NnbTt{r}3RrmFkv5CQNh!xeS?@yIvF4LT_U~h3L6jogCkh7P$Svg9*AS z{n(^WIBhId(n$+$Pf@#5E9Yscf~>GM6s?rybwsJS^PCRb(h84GwnvnLy1OFwctl*{1dEsz)DAVNgpXf#7Iv;9!#FI)0fb+%$gU4c=Wv z&>reh7y_zz2X(!Vom0u-!_RRtbl{Mw9WcwHCNHvTa|B;`@0;1=NpDdQ)D(*=>_^@r zjstaUA+Zz;2J{W~!~7*2nj-s{t2iUFju&>4@h$t8N4_^C$JLU%R+^EvP?fWkGUm`-=z zH-4($DzT9Yi6Lw3R44i~QY-}e|8_2ZG5^)J^xvO#njT~Mo7wEO(%X+*9s5-=Px;QS z&AS?wH|a%AC^kO-db4dHE>)j!G`5;;K^GJ{m`pwC<^+PbBh);(s{}6|%chdN>Q2#%~5=H)=`Y-k-y*>1oj}Yic^NQb`-xe z$rp_w24Vu{1Sk$t(0T_d5oJcy*LDM=8&wFRd6Obw00;(hh6$o$p}3oHB;qOj?k_CU zN^HDQ3L~m!1RCu7y8!Eb{_p^~|672ci)hi>9?4tlN~SD+jvhO(`;2|PrTeH7Uh-0CZW}@%vA|4gY-5%i2Mr~n`DI1 zVU;5B1rE7`vJ!6plyH_qvA#|7K*#ZN&zp@eLMK8$*L4u=?}RWnO4cff#_^bWQZe|8 zs>4Jn$|}OzxYvpzslpo{3l6)Ld&0plNPv#m0DZ4Q&i{2wybJgbX+GwCM2dh7d^QaB zYW)K#O14=mO>?QCx{yri$AS18BGY_O^1PV|QH^tsGl2~^XS&08^&WK;IAs&7nvMo`JK|~Jkz)L?CJhvdq1RXdY*SpbvZ}}T8ch|j_ zxnJy2=>ol$k(r|R7CsRlPVM&FMag_Eatf#QgV-<_|==D50Y)^BK8yM(jD4$84)aJrm0j5dUT6TBHH51*;VcLV z)GjwMi9h=8K(_lhb&Qw>OU7+ULOh#5VfH{bAiszV`u#2^d`Dd%38e z72g)k3Sj@89=|MjmxIgOGGm-iYdU*{(y#ck-RuRa7)ZbwJcrMSCYD zg@`XZqHX;NW}mz%Q-h_bYfTqLV<_;OSaj`git6$IZW>lG*h7?e+wdhlK1#CsQKeLB znfkT#Y}>jmLC#O?q5S6dpgd*O+s>!UK2#dbB1M_kb?v@$8V$@-{awthLr34?F37Lx zI}V_eVx2X${1Xd$-o6-G-}y8-pcVdbHDi_Y6UO;Naneep=$(mLX$|6WbVG#S$>AM6 zup?@jHPLb^%-=XQG{G97ru*eI;|i3f@>Ha~5NtQt)2XgqkM9^t2^=AoZP8Vme4FQU zVtlQ?(GXz^%*tixd=tQrELF$nB8*vQHLqPxJ3u^aG`YrTQc5EN*x%{@Mo0Kn(Amd; zZd?uy=ZlOgkbB?w=Txz&Z3Sq`o7mu;>bt%W$clUeJQLr}6z)|ndSrjJdi7+Z5?!ij zV1A(|%i}JzEDrk36$iltPmEJN6ws_hU-!DTMW9#o=;Ay*G*MSl6uwzuGLWHvV=!{> zfp>-Rwu+|S?%Z{8?(e1Oa9K)aesvtF3^wrP*e15Fm-w@Y z`_&?_$2(dR7A<2Mn}%99v5!6zX^(mK*?>bMXWcxfQheb%(u$rn5&q%E=GPh0^xsR> zYhlrU#^UGm?D?Kg+xV6-u_#4L6WU4|vhg0kpcze+2Sn^w!Jg;GBip>Bi%P*Tr~B;M z3)}#%3@X5gL!I;5I0$?7zI8JMSdH-!bEt6=x%G@E-UJ~Ky}}jZ8SqdCBSk1vbdG3T zRx7;wf;ucXSbW2mvQT_{7HkRyTiz0nexV%17|(dF9-pk<f#cGzd*wM(QyI#Z%7&Y+YI1w zANcst68vBwVIG1ybPq0q?giBnt>8_?>4=p--_1o?IvO!5dVt@^IbAt5W5wJog1efs z3$^b8PEUr}q*N509rm;ktOkv%pqtut!Y)yN?h-b{3b+VP=U0$qVY~g@_Kn53KkohnzjS@Vb)VPKOx5e`OPoZ2N?U$fjszD1nZKO3biWoC_Ur>Mkn z=h8L6?JtGK5`z`=Q{ml>uBfPut!fi*J zYXz7u-bNP2PdJ&K9!1ilS&n5WTECNy=|$WDiW_pgw(-8xo?9}!cH&YCcaikRgt8MM z^ItLDxSOyA24Md0uPR3Daq|8!eR<>8ghMu)l`QuI-xS`foKMNyj!cpMlI1()@pOAz zR+2{Dd zK%**Rk8ZW-HGV!xPrM)4u8vMUhtq=XO1SJ&5WYJ29`OAaQHpT47UE%UY6=SnIO$|w z16X%@CoH-3k(aVq4#Z=cGbOks&N))VfHa$TeLfbXol%PSDv(b2JR>SV4My^F{1$W@s&we>~s$$Vtu1kd=yBr^B@0eO2 z41Tj!oa^T)v~H7gKT%dEKnNNefn&tfExK-SZ*ggf^@Et(oM&Si*Zi0rOKOI#^hnk0Blys~gxWH*cKCn)^059I5JCa-K>I}MDKf_r$H z&)QX53|ndk!&Om@{OWoR#9Icdew3);Uw&1P-m!rG z#+gMQax`@NP|q1f&9A7glUh21_d8i;eAxl&nx*hcAP=x2kfS5UogtK|KUhWMjtR)^ z6y8(lc0>`<1Iah24ICtwqtEoAy5L!(HFkNuIQ4-f%PKZ`+G9DVjBr%*3jY<1op9ZD z;$v#?Fwr^LU;IJ3^Nnnl)_6Gz7q1cxXKsU*zT}IIYF@Bp3(#ldH^S|)ZX?S}+l-G( z_Tf$w`YK5J3A^P_NTWCvG|zKZm%`tG-yUl?Q-!}4Gu(08)mLs1pLgALT4GlzG>F^> z?G=|HVX`YMxOo?OE_?>B$RB?f93$?xu!w@6`{2df~^K zBbxE^)Wg0>hN5TpQtjkydwNVi4DGu$&E|RCu#!oi+68CODJ&|~k8dI%BmaOfUfTbz zoS)|4HzHy;B`P_Q`K->z?8ND{#_zAwP|X*{Yu6`dotUwhp@lp?XDBbNcB%uR1|!fR zg|L*uhSWYq{X|{)O|TR6>?J2};nyA9sBPf^R?Y1~{KGKs z62!*ijF;cT4$vF+Us(a{#dqD5d4lUIMzO>!c#Ew$cpF-!`T7;M0s4aBsE^MmkSte? zm`Bw5jMC%_KjaJgArF?FP}7WYBYU!fNuG5O+>Q{a$ETLhJ}h z><&-C?w|9a{mKcKq#=dEFHN!)5R2tU)!DI9aQBKijh@_d#=&3dXJwbpCF1r7#q@bk#+c)mmMKR^Xqf6dqkHkk6)a-6ozC$1pm@{=g4VKY|W3Q{& z!PsUJ8K%7|AVN#N?$8cn|1qbQO6_nrJFT`d^YkWji*5z&PBY@1=Vs-MchBsDaTYJ` z%3f7@3A(^i)|)}99&}ky>r*22=*J_3*c{ikhrWBkeh4QnU2?J1RMzo>j7rF;0&}aA z-D3Gnh9F$DA*}m70G^MmJW}`#8MDth-0-NeLB;?*n=38^znxLOj=J5sMRQHz7!p${ zEN!>Erx;%J8}@McuGQ?t_PO(4A=b(4?5BFQI&$j3tgr9{jn8$U@g!M90AJu{5QBB8 zQ8lSJ{~OaDV!tk8-cYmoyWBQM4*8dWb>s3|?ap~LJjAchb?bVzhW7Y6xA+rtEILk$ zjrFKPhU^Wf<9=HhtySJn!cjt=xUNh7DXF9~B}G82!_60iW8!0-e~u;b+JBuNiPz`Y zyrDJzpy2Jm(3t{qTxGduk@{*INnWjDfsUlSR)k`Ag<9eyjC(HNGWxfb9fAGlIo&U0 zA?;!Io8Pe7Sj7YaZh2$ZM>eHoR zK^5;1tF_f+|KVg4*d{@Y?>_)*cv)q@F9iH>EJf^C_%?5uETT*vz7KQe+u`X_9DFZ% z2{?y4SbPm`1>uBfU1Gm}+8=+a1*SmmC73S?KY1Ac+s{Vmg?eUk_-yXN+XbY=v7dfC z%-_I+)W8nATPNaVc?5uM{;w4hfAD`+NcTs7i}M@B-!SLNS>W3xr|r4+x@O+-#i91t zU#cgcFWDNjtx)b_OvjZ>lj@_Bnu^X8_%;7jaj>QHF;9x{o!P@HRsyXgeS?)LI&b^E!!Y>c%6af zRSGgJE)cj}4>v_R3GEn?o;YjssS&;99^}~Z8T@eAJ~SOu^TJYg^Q=_Ve3DZ*kXKxX z8W*&{LCAnE-o7iGSF_imT5`iBBg)_bQto{zMb#4yQo1jyANp`HtM`ewB>SIgsX)7; z9Va_i+PliNNI^7+ha8{&vk?+etN%S{m=(=nf-IapdbGm1OhS+pj8myjXkOu?8X~g8 zlQx2feBs#+Hv2L(zCJD23wx%|u=71=SI=JjdaO`mRcQa$6d7)mlUA}XW@kPyU{XUB zAfAq0t{0$bcU$Rc?5FM zM^2j!E}Rt;z~i)HFgQXB;lHxi2Firzx7RkqPR>!@D{P`>3!CDxEIYLzuoTU&@XDUB zgN|s%vyYrZ}LTrWav`xpOGEy>x)Kp=Nuyjc0bb}MOE?lQTt$epKnEA8|f+& z)FyO#si%;MWyqV%D(S0qQoH5mKgQu4=4ElI5#eI)OiKt=ejhh|cEO$^4lVI%aoXWz zA+4N{dvv|-O}=mxwPC!iL0L8L1-EdmMF@1?T=a>`*ZQx*YW(kq$NfY>AAcus(X_!* zNAY6bR=duA8q@3Wje){=%T4ks5n9gXcK0n$9>jdk)G#)8H3#*=l2cZ}UPr{- zThPn?@K4dP=if~%qs(^8jBdndLcTxscYJ&e`C#`GXFM1-zsb`bvH_c7Mf=b+Z-yS2 ziES_udvNY&ODY4~PbVpz-ZF?$1J0-;8Dph7WtgeO)b;#lFWDYUWHI8#CE**Woltz> zOD8;DY6cbd1k}#PaOhy{-GTdit6eWKq`Hd1mPvjj3$?RYx?Og_uVHjf?}Al}2QVW1 zo5fV${$Hq)0p|8X2kP)Ur-i5I_8tR#7dqV&)EP6x zOx$aDs-SxVdI#!dG%jmBUAN@H=U={}aWAh5m_@E-)?6D+)b9-<@(a|Z zM&ISWPf#sw|Ek@j)K5U{Mat(NoM=q*+oe^AT$`d{?IBrWIdrs~bioh`&4h4kwQGXJ zGEAaeV%9|`W^5WqR=(01D!)V_H34QAx6vLaV*6Aw;GE}GraT3viM4Td2 zofa@nW_=axIXS2g-wEO{;Y(;b^objBLx{6hkFPvvXo6BE)+D*lFKmyfZQd$b>B6#lG0&OsDLoXb{xPqRmVg?YqemYMss##Mwp$@j&)o;vND$LaRN-2+# zt6V-1QQ~?QCoDXruNkS%8svQyp-E*Y%g%@%11y~z7hvdh2W$V|XrRZxe=xTYcAF$H zgW&N?Q~tw*+rG5=^J-Q%T!@_r&_>dN+QxZr(>U|4n-fp%Gr0M4-05WZ#y@keV6T?} zsaNm%=`uKNaw#p^ry=ph$rDz_mM%qhjM2m)$)TF7m$$;Hm=kdln!D7uvo}5Qhl~nI z>NNlNvzDXt$97FR^&?iLI;dkeyyCU<(C>I%7m>!O|x~Q z6Oktp`HPxr_1}>JGTSptc3lORuqlCEkSK_q&Qd%?bzSAs@49kzKXDS(C$+H2VnhYX zF8r?YT|p)%-VYpa-nZ9Xs6(D>rgF2VBFu(w&IN4 zxjy+i3)p9?>9Yo&eLQIpUVXTiRU*l(jM-xd)gSLJKC24YS#95f5iDWMjs%< zcWslybNiMr5k(;$@RP(H$`rKlYb|E(+7a|C1CPNGg=5)umAVa4ZsI0eHgz1r)?za2 zhBHY64M?LXZ7ZL3rtcccfeK$)LH*#nUNMc=9u;3}15^w1MkZL~hUBZCG}jd_HSM3i zFBL5~{47#+0v? zCO^5)rIc5!x=r>X^_X%1b)?rzYMat4-lcirn8CIq547>Xa%=suZPAQ>5Dwh?z5ry@ zG(!OZ);b_V5jw(4Age{##~}zxu>Ac>0`mcmAGW&8i17eTv~0w~r{<9>qbeh-Et^&> zNBRcV>iLGh6>c+DfZ$mc#>BlouvznoXu+opsdHM6)=S1g>IBbm)N^In&?fdxDy@t%t|Lzw zaN*qGQ&*rguL(Oc<=bKp7oeWWx=@`b-!r`?VY^j;zL zGvHkdqqTu2XSGeKI_^rCN$0K$5MVDu2;_cyq+-3uQT(yB6Fx#@1lu?kc+hHGA8REk zuNy{}lbEo(As2P-u+$c{9mRfWc5;`3#^c(-S&IO6K&&I&1ag4JFI(UM|*ke#W`l9KQhiB=wCa%ltmNkhr0|F>T&9c;lLZDOvu{#4>V(_Z80*-;mn1z9mVQoKfyD zVyL&MmMeBoEg*GVXnVSd75r@6?kH}5`(F14dy5%vf$n&*?4})r$OYO~)7e^j&QHhu zk)K7!^FD2IlzA!WmVGWfnCF#&0Ci?S*r(n`*mpKO|N7^Z&J}zwqzKuTsHkdPCn)s) zsa_6_S%Oyp5;%n5)3NTrDaXKO;ZEj)M8nRzu_dM8HV)$g@C`m>;T)gHQ;Wy|Th3Pt z#3&RvyEDMwzBx`zgS~X)7+V;;)JtMC>@5+cEl1H(22->!KheBazW)2QFEQ=d-=EbK zEKQbEok%**1`=eF^~R4s_tj=iUrcLJP4k)*Ph0siK`qvOton%Yt+E`8=u)jISQn4C zoFM9 zjzvbj$zLdizN%cn&&|Uidwmm73baH>U7!ykb75Bw>5?HASPl#&z{4f}dOi#&Mteg1(q# z`0KGL?2P3+dEM_#NcmsG_Rg_b;jj7a21s!2H$AUcz@muRXr3F~A!{uz{q%U+>m#rd zZ z3fO6Q2^Du_K!^fJw3%X7b`(o|u$MhA8ld&8NaHep(>D@|`Fw|WAx)vWT$Hq+MG9A; zt$pI#KkfOWLqhCq;*6}mp4jx(^$?Ia2lxTR(SeQ)zX40R+7X^))jRQya)S@jJjkIh zAIIs$f3ICr(Z;2DKkEMaFn*K7GP~U>;n9`)Y|??PPh`{;g;gk zHTZ>d)m?n!MabN!er#fcb6?HRx~;?@_o|seJj83hr$Pj+(b^#?Uh*jX0)n`32GWVW zW*c#M%QjsM7a|hW1hozk2VOhCDKL}2ueTZrGd7;3pyB;#mHjbQ>oh%n-6DeFZUXg_ z(D2s?^Y?kw#PA=?k9|bLo@68deSpbGCIA3r$GfD}RdR1c$bZp##VUCjvOs3GxYHR! z(gt>8L;Bk;ajV(zc(yj+M#vYv@&?Mk$E>As2YZyiT$h8WJyjr`BnYPwY*G)1 z@hTM>s13KodI=WQ7Wy&Zf}^`SE68D%V&?>V`L=?@&b{jgDMek+m`)gwtUUwIs1Tgx zm~U|}c4`{3412{7eu_-JN<^`ySg!;?{2*ZRI@xbFmDPYN!tC)Qm>GD>D!9(d3QB9n z!iTTRxf~%aCy6tIvBSSdn%MEM|H)^iW8ljhuu8?eEeE6d!HRaj#zxGPm7>S>;q>E$ z@2pa@E(gNMwpFF|b|kXeR_%N<@@Ye;d=VYMC(w8&IHGiZ@SIu7B{k!XSAnC zDVdD|mkM@D&)mw(WepqX8$sKON0+Nvr=;dV?}G(sLfq}m)rxi1%dPZJuLDXqYpP6& zUfCKqdKbx=#0HoHehQHB0VCLNWYfyVu}1OoTeqfqZ}C^+cH)n>Tpqpa)kB@I)3d1R zR`o%7I#^2i(IchNxC5Q)aM}l5rf-nrorQT#fV1qYx805Vu%c(b`{Vv$(8>XKzB;M> zVq|MYQyl}>iLGN6883hZgy0pQ`IPI1VQUx1ebC|P(N{0ARm2A?p2l4stXtB8+9o7B z3%+r4JC3EpsE}gIot}wUkDe6Pd0ts$2ko;pq(9||M~~3MWK|gpr>9h7#|9om`a~-B zyPBB*vzP0;T}>-jc;cj$SMImhO1=W+KMZE>_x?gc_zAmU^l>r|F}fd}d{6b^;{qL@ zi>B|3Q^aJa)Wd?KRAr$)jvQS~a>sP{yW+WhhV1$^yk3gLHH1{Ntfcg5YAwF+bsj`w z{b?KF88iO-;*13=@`P$L@vR#maDue6;HIA`*~a|{I{HYmV{|XyJZf6o500pv)=#El z%1C7b-}(16z%;Id?xS;_aEUbqG2=GlAF)yJT#n_S6IP?KCdT#lVf!i>pIRFXdl_hX z_^0?N#ysP!v4PK1(Or3Ha$hV%3mUt2+CBdxUWThz678Jw#OLUJ8Zd2M37b}TcWntJ z0{J0>{Kw6etata%HRT}L>-lSA* z2-aC@2l`Tk>4E!46;t=c&n*of{}j!H%+-Y?z5h&#<#nb6?mxlFP_&eGZg=7|2y6uh zFvYrU`Ao`$mrUVNK*8rB*3g-QIWV+ME z%uY7#GFD?4^oi=E8PkRuT6s#~dexFoU8}p7Z_B0#40NteghXCDFTZ?l`RsG8HC4v9 zhHER|@GB?&bg$z{f2Yw7W(Db&XmwG8n123MN(tG@Z|;ZcDI{rD{rpvKQ+%VfeK_4ZEnB!9Q*bP4szXr8 zrDK%%wn!LF*N{WR<^bWlv(Rl7#ruw&z+NMjNZj5nq5xO|8Fg3gQ}fSMYxfNV$bb4$ zeHoB3Q`b0H-3h^bB5$R{+mxn6ZQL zoi-#EEttdXy7c-lv3j448xG4s+e1GTn~kIsx=H^fDlYKfvab=9KVjSt;d-iRmz^X( zIQ;TWJKBp$)|rj{Zu>+K00s1NmYt-w7@!3>rCITpIEQlbfq*ZBWq1 z{=xB96TA@S%tA7-SK&ZzRK(9(A-8Y3ohnru-aO?|AQ&Ja3{V>r_d3q40$`jX1oF_c zrC}!zE)=BD5NE%xeV5Uqe@fKN+l<=(8qPL?=8p zrK@q16@S_rs^gw1YG5gIwBXDE9k2MULj$+hU+B34>BYvv_dB**X%-EPORMbk^d+u= zldEQ}{gLxlA(|AmpT|9NA!O@VyYi`ij>4eBQAdsqtriG?hCjQ6>0(Nj*?JS771d3? z?RLD7x+r=@epTg=m5&_sNDHRz5r#_n&F`M3>`>kW4*Vn;FA^AJb6VOm0;n%Dv^+m} zOzTg-Yk)lo5Itpkt99$?{ilcGZdy>c3mp{4y#~E_autn-&u=l^9(SsF;JAN)*@eAh zX*VN06XTSN{Q1Rp30s3^1Y`Q2N>a2^7q1}E?t_(rE8jCe;!c}rGJaNEIluIwD+!y} z)IjqkY7qDS@Cf;o$G&)eaL2YC%H~S{T&UYo!g?a(*j(fP1`*WsA2aY1LNE#W^;;FD z5BrNnym=cb9D8GO?&Y;m(zc?c-UE>l+eB&Q3@Qfuepcj3;o z($_7h2S2{=HA%2PTt_W7;t3UB0)afn9ft&&D{RKG3!q zN`Kp52gn;0yhH-G&JL#6y>c490Pvi^H}8zCStGWgmU^-L_V1V>U-|pFY6OEa{s0za z0l)|GoLFWyvovyHmuBwt;`=Gfaj!|L=`K@(18lIOsOxxyz!1BOyhrt zoPcFN5!{cu;RrFafAf7SxaP696)Ha+XLYf|_XrsGnb8Mz#Vi@|6?qUfsGfd{Ro85m*ttB`?OXOR zy6t{IBZAC1toFm}1lV!{IbeP1B2m~!yV1l&k^@!0$cnwqz&@R~&F=(Qx`+caAHYahz2`eL@fv;UO6?VLK?au{&nlSlJzypgt+u%(@-0+II$}mnwTI>@;*h- zzxw>2wQgaY_#ui9=>cCx*!x>TzIY&bk7{EQVrofk_9E*|y&Kg}8C|cQhqIlbT+Uef!ZTWg@TnG67bc4n*l^p(TUGBs zj%<<4&MX!fARo-z!iOQpG5cvV6ax^?O3pzYfb%Wgo*@;Y97Cddh#2i}mcm?SsSte1 zO(}cv++D#5iGtC`y26J@px=kG=X+PCxi5qOl|<*Fm{WqrP1mvAoq$KWv@#GA+o5Ib zp@rdA2;fK?;d<8$T?_IJJS zSS{yFVmtAPgF2*n%bpCO1-=ba%ySFNg^$61(7@gE>p;TsF>8KZ&uW!Y;s@9Gl^GY( z)o(!g3l8j7f0p0hC1ESS5&%&mTE;=LYl!JwU#Nb@fR?{e>1bh9h?>Ktw>3W^?TWLm zGl|-`>!#8d?8aVO)R(T`iu*cFI((@gvje!WA^cN#-NIV_p~Fl#x%kUOFki{~@L&~V zToq6vS`d>sff}y?_TV4oXpeLq!7HF)&cwfDxCzfUWKh_&^ztQLjILn-?3K3F!)WfM zD)<4RC0m$y4XE(tg#P@v5kySW=9?kAlgtaNmOM^$^sIhMcRbyVZ%apxYRzM|VTDtI z(p8<$zstwIzvUxZ8$)+Lz}Zv$de&M7mlu8ebV~8@=%XXe5Nmzu7aHgnbLVgtR-+UC zFuJU@0r|1jQXs+~Xh{}dR^X2+WnJ#^;64zjxPxtwr*R)LQ*pBRF7QnhEd)fK#Te4h zdjdkn#RUCKTJi=*c-sfuZslbL+HY`p2sJmAC3pqY82V2e72L4&@LU8|Vg}rM^4E5F ztZX5QtBDPeH=PyQ(VYS4H27-8g1XPYWeaTxp~jvg!hDk`vpGV<;cGHBIz=_N8KEDi zFmtCezpVXm$tj6{LDP{Rm?+^_tOQVOD=Rf8rXG=yz8xdGO4!b5STExFA3-rsFD2*l zicfSCef#*A&J7@F84ME8$>z1#dU})Zof>3=Lu_d7FzXUo~SF z399ktF*$s7QPIx2kT`6<8=iZfue|gen~tr8O+Lp&!ekLz0I($l?;rdDq-DqV0hsMl zY`zRYwdzG+G%0KM>M3p?Xs|J$M+6JU!5vrT^u%fgUY2Y5?s0j7RJ`skKf>qgF@*v& zb_h}NyL;063zW_q<%?ICSb5LAo_iXDnSg3HzI@-je=1VfzUaAzbiMwF?XLRd%y?N& z_N|BTmbkO!Q)j~gdPcQlMfJ|Y%bST|t0(x`&E<>);#nngCG)bHi+(%kRZ8#+K&oQ% zejn;W&_BNB!^bCNA9|gX7Wyhb5I75i{Kp+^!p4wE;(TI!LyP6$RMx_|a~C5~jGKG_ zdOkt)A|-(w@QIGQJ^T0X_O#!uIo1FQ@6T~!W)3sdtuk|)Pg|V9rBYG9Z(PlL`@9Y| z#&%U5cmu6YSt?^RP%R_8h2IuUgx$yk#-C?Vl6M6GM7FAXxjul&q!;i)WfYw*gr_J< z!~0_y>_Ay4)|&#%!?)#8EFSXHQFfrepY+ z*y8aKHP?y3UU4uKRPi3mI>N404_pUU`jc4=!y6oJyen4;|J{l}&!Gx6t&6(V2u`3o zXqiDyx&UM>h{MiXT&`or3J*r@gk)6QugZ?9;|}Mmf!_u43UGOZh1319likZ3#;ct& zspugMgY3 z@}gcc&k8_r2BK4Lo+Oaa+-LkYeAA9~gN{t$Djw5Twf5`tk$Ldr??Xu-YNZs*72g=W zb^m&s=iaH*%k2+~bqXIRjTcXu9!@ecXt6rihAgrCN4i#@PQN(mFaW)?6myhr;0ZE! zZSSH4`AI0|B~$1Faf=V7Iz#NdW+eSa)Z`RN3%mzpotExf96Dx*uD(kCsW()#2%M)k zq7FKKo(>#C^l*6B6-?2eI~0%Td_NwO_YKVSV5V$$-mUX6(-X6f+7`YvM6)7P!eQ?ARjyUmog$_ulTBKx3;Ki{bv1)+M-A_t_a8Rq`iT0~! zNc&e&S0RHgc^`h+J=ALS=~Z*tPio^TP}yf=N~F&wXcPzA?lJgbEuVqrgJ?az0Y+9B znZDxM025YA{wT)vq$e|t&vBOTrf=|NBn4jNZIFQ9Z?PwG6Z}n2f zu!Ms7`>zkE7*NAg)*X%hEL1~32{!#SmoqQlAY;-q-S$q^9=AU?_lzM|AV&yPA@3+zU_;XR>IMzkLMD|L(Stc}@i5uJ+el=i{9(Vgg` zU#0-*wkBmyHj29H?jhkH^eHdIA(~Nwv5yf2v8{^QZW;2hM&Cvm+t8?nmz!__wOlfUf!(%%8^1Pb9 z9V!7uF_6AsqxsD3L^4$J?I`Jh1`+r&3@i_X{Yq(`Q+%fi1JBBaTCx_f9u#jqM88{m ztgps1z5{k>+|bSLa<9JiJJmD#p3rp^9$W3#oX)fX<`?jFVB$ zJj>U|-`_l}T_aMn-T(5`-AJ*ho+Wp!?KahW+&Z7hPngn;Smr~wNGr@!$Vawll_*WzPTf#j z%dTv7;*_MTcqn_lS-O?l6d*t2`p~RJ>QNJZi-eg)Vm+KB+WMhF@Phr?BbyP3^@%in zJ?B%jD3_wYrQ%8zw!wI3a=8`mX(Jlyc=FV)>Xq%aH{QcJRBZom@8#%9^8fui_hKh# zTT@a*=ihRVewfCs6FFtew;3d=djQ$+VZt5}0BwWn)P$(Lu>E||UYEsAKAFx^BY2&` zJhLP{tW$ix>gDcIO;n!&O~C7#S|qijIbHDeTaqx%!0rSV2Tysji{6e9cCMU{`!6yH z&&KK!><+-yK!#OC#Asm!mbJf7;0qZ<6?(Z3=Gk+?8%#N&QGh=?d5m+Rm5b+HfK-vJ zT`&OeU5ZJkbv@W#Oln)aLQR2L2}Hx>Lhn;nSC7 z3V({$h`^V~!tt(Dz?tHTp1Se7JEJD7a(>66=s#U)S*?(KBntd<#IqthG@0%FD$n~j z8rz2-@|OA(o%!Eu`|!wfm>x~MwfbPwrY^<1Vu9eoeWKkm?VIa~M3c<{xd)~}z7H2J z<8!T4fHDT5;LSax1D>C7`P#Zsp^eTP)+ggOrIUKE@UKzkxDAR3(=RJt&6ujY5rj5O zK_g3il7Ue!!(L@5o6Agd>q7dGgLSO^>hU2^KhhpXIBLPo?-_BOv>`y?Im4oE9S48B zbaScbzoTv-zz<{O91$XDR7#BEbJ;tDb130mya&LUY$xB8`MX%ZZp*9?_U{5X=DMDf z>GGCqrWjSb_LVjfa)hIX`nDC?fjvL$NbPkzWfMf2Hws`J0E~CFKzgms=_X&!2if3F$1v48VHIB1=knDZcpj zScCX0oD2{3B#%pDUUUkvf|=b-;i2fhq%i}|VfA{F~F{`5n8k2fRK#MlnPIuR19 zLpYSS_UMhS)c$RMra=4iL%16j+4!W7`PATedOHFVo|17q{B$#4^+PXC!?0Fe`&Po< zwmDT4{OiJ=m+!2^|Hs_I`Zd?&wKTrq!D&*IRigK*FNkXJu7b;}WE32!6qzu{;&X7NJ z^?UAx%2mdVw@I8}?q^I7mW*CKSeWiHQONg&@R{Ga-%|{ee@tY6b~32R9b2ooOiD&A z;N__+xtuA@MxgGCHD-%*43L9xs`wRS;mL=0$EeBpmG@Y<$UAKT56|vhgF1n)=bwK7 zrp~)T5;M+m_rjHRj@WyR>UXBCr6!!D)Xsm2++G->7H|9Ec<^e%B~FQY(ik2TuyS9W(mBubFe z?L(6Tx|f}UgTki`(MI8!emlQFP$^ka;c`nIjE24`n~I2>CC4BJNs+rB0`MU>aL-e*D@gw z&G%x5dE#aEq&Ka?FBg2`-zZm5`4CSs-K-}Ns}$;GkaZ9i-|{tmwegnyAn>bNu=z)D zadzVke?DR1xptxOCm3)+Z}c}4!t1W%2Ac;OHR_ke#l@|r<4?@lk}-eTR+j zt;S|v|IA#>4q5lQ{%2;$WXgE@)=Aw<2N%M+8{SC|%NGJ<{fV!&1(Z1Mo>)xfmz$+BklhaVv$9pwo?DPw2})-NIR+{uU4F7dsO&L9YQLZ*H*~d18y~0B{ae3LG#q2;tFQ zL`ylEj$)P=4^934sl2xTY52$+NxV|LneEn|p!W>&judJ_$a#>j)+1e-E>(4*?Q!sk zw60pb!Y;bb`{p!WF%ZmuSZ^WKdXhMhaD@)Nc$C?=tIw60D$e)O=DYZvu;DKf9FO~t z8;;6u@P(FFtRz`jROe*M619P30vC-Dst@u>*IHg z*98pcAGSXf5+)yH-)c}e;Dx;|Xn^jWybai8JNk%9_v2*t0!&y&!oDjLSs)@HRO?(% zCGs`IX^Tb)67re9Y=ohr#Ribn8;$g~pkEMy8-QE{o!CQ&@8lgDuVaq!6jWX`n{D-* zLH`uyCErcm;MsZZ)O%;GF^wls7;I#^h(c&l0bVz4jmdM`$scg;c!ALpBQS{ENwbjl z9Y!`l<^&Uqe}66hnsQUb1PkK)J3xyIsho&~KJRIkEb=ZOXlGgZqC&Sk*K{4md1~n1l;*eUK|lcTrW|cFc59V%Ek)zX@EoycdHonfEpGwHf@ z;ODgqj};tKislG>JjG2L>F1@LNMhFHZKBV%wY9$D_P}+8bnd%pPpMV5#iX3DlXv2z zbcMcs`Sq4WBz{vVshv6pj~72JIo`|PVQNaOgF5sfZ@?zIF{R>jHC~BR!wazzr`^oV zH;hF=DQj=*^~k!v79QDAOTjDJu5!0^p4fW`IFXe7jhI{E01xL*se}HF`l2Y1T z_+?S)@7edhzbs-n!M38?{pQq3<>)z;KG+*ltJ~)!%K@xxlfeT@b`*tvb0?TvXG{zc zlQQ*=Vdr;72c|{yv_HA<(c>tPk#`foMN0)qz!gB{n>YMED<`}C+4aM&uKd`PB9c`- zoZs9PooKB>eyqB)o^OFOZOy1{hsy^y9^G=Zqe|9}=5bV}+8Owb?IpK~*6fV#!g;X4 zIKHa&B%L7e4|06RMdG+}!^!Sd%p~hAfKU8gqZ2dORiStou ztm&8Bkg!JeFXgmz6)!cU07jm$6eK_ki6n#Tm~@c zqqKqCx{y7=q%I8b@x94!r}5zia+l}49Ly(w3js!NZTb5W{fp!*3`&|=Y<=gvb<4_9 zgSurcaue>bTG`sgE4}m5dUD;8uHhBUJZmcS{m>?n0Hen-Jy_eL^a>@y?sFTviZep8 za3-h_yUQ8Z*yHEePM8ur9R>KxevnD0O&t{igIDu*6Vd~)QXp4+h*1VnD$lTeSY1pK zi47)A5dFDE2YLm2Ae-(p=dubmhK72aGd@pAV4E!M@fDkn=KL;m*NyN0Ic0DYA%s-OL0-!b*uM5r55UwhYJi@+=`1+vk!4^%i;3+Cc7~r)R*LrB+Ewh^t3@t zMWjw&&z0FynS`?-=uo*K(z)w)n1D}ifFFJJ_Jr$dz~^~<{qK=0aX;RvU~iN_+Bc3~=?17yxB zg8ypurp)4Ut!j zr{FzA;ZR%!n>2&;GuLYLHsfpbuC1iElMnt`8A8l>@j}+k`{EEiAnQJ$Sx^S?ba$D^ z1>rAC&A#V%7Vq;s=;9x0-f(h4!GRIuy2^eBtz^Wzc5>9ZlY8zJCBd}9WTb3-;&fD= zmZ(3xnVz1}gKN#wj?*mKd6C-w8X60A2G`j*ox=2lfH~_U{Ex*3CDC@}AI}OWyH#sf z83np9-3E~6nTvn)nl^xY6qnT!`ety)Dcje@|E6zAPuQn+K&LQ3G~mx@x?V=9?_~MhtmybO>ZAntuCs&nuwxU`>*&XV+OakYUEqO){sT`MzcDUgo&#Z#g)&M%7-6{JB; zye6u7aw6;3?*d45e&|R;4toGYzGvrZz=@gp0KhmnnYgZ`{M@M%pTh=G5N*k0XUam& zTi4OkUe*LaVijHv>~N!AYw>djeev2DT3DboA<`UIBjeA0NlMhp@%k4O4LY!Hp`l;~|oCr@# zfgE&V<9`_Ym&K>xQ4SWbx(^WKp0EnRz+NMwx%5v{=tSNCMy;C{OVAz&ZDa!MNJx1_ zNT&-XNqpQq+#?y`n2y;AKSePp>UYDufyH2m$BOlNdXLA`>^+j{$eq_7=f*e)g~M1D zHk`!B%K}Fb0Xrju;((S+RPTQHseF*7Jd0 zcq_kj)r~%YEmq-Beg{kHU;Xtbzn3f{`~=~-uTx%j8KFphDUDMtIc--qHk~bRJ6kSa2 zM>;D`4dU{5T}ZL6O>TqdAfi(D`ij&#cYB&VSm##yCdx|Etu(k{Nkgt~tNF$PMX2E! zY=6qC^_(*Q2WY7gXggxd!ZR-#NVBbAGj6OEhd&bOQsQl}w549J@r0 z&V$RBHpUu*BHe;9aw@fSpwq*LJuqXaNhkc(@TaMyWpsVxwR*eouW#c84Li?WUK>Ey zq+Nf`nJGFW!t3Tu#s&U$=IhkXYgQs+jvLMiqnS_h;vd;HD8=X4y%6Uh&~NKE9kwp{ z@|e}TlN-CFL+{&r4|G3vcY(PV&!BVLD}V?31>P<#AhMNGZ!^z@Bw^2D)qa3G9uo27 znSUuf%4X;@=8aH;#(h+EV0ghYxTy0ptUqM|C~fK%?#<#|wYrj>j<8~3NOTp9-p~YA ziUXK_yg)tg*$>WH!!YU|Xvd!hLGLeqNOpV?xw0j*!^mXTdgvB9xpoiUf`vQKh}wXt z{ndL%R>g5kk$T6&ll!3-v+82pNKAQEQobbgMDN~D)a{rdDX)|N%7y0kO)n{`9}6in z-;zAXJDm1&uexp@sQ5q_!~(HvQ>DCsqwvXdQ*KdZZ=oZF>a*>Thh1AhY}A%1!KH4I zr>!!@&r%&tt>kvB+p$eYy*c+6Rai&b_j!VTjy{0b8~=Lx#ZRGEQ*uT*_({_hZ2`Bo zh+u6pv-+H6YB5Fep3^Y>!m3;fjFP8x((smk!k;wtMSQ+LumA?n{?6X~|FUxvnP$Ro z^V{4+4^@nOlU7wbf4pr@%o!~;RPn1ZN}96qKsH9a9b$RsiW;eA{2&K<+gf$bMR;OX zJu5ZMepU0HSRJ(H5}!b@PcH|tlay&^cm})|OqUsG`oy4<@>%=i&xPro!V!ygCYFTz`;BBIW~lQU>Tgpf&stvr&gjaQe)zG*5cjVi`-TsZZ}HpE)w z;hJxS`~v@{6(amu=|+BL-q$8k(I4ByjwwLRGG!%vPY~rz^WJLpat47&0D9NlTxjaF&mt7S;2N7;12~;TC zl-Yq>O}2g|7pwfE^iR5T3MZmx&l1l5t^59D+-~B1Oo{e-QwG8HR@Hs$upAci<&s2+ z%yn5)6K~OH@Z}kC45b`%jp!-%2fq-ni((WzqHKI zB-VRQC*3B(U(Q23-hAiRt@=qJGqArX^c$Z!AP@Rdc-7nLrewPIS`(|U5d8g5EcW%t zQ!Bh(O?Mqv?M~DESc=muL(c+Xv+7kLKZ>rwF&Ka@6n8wH+8t@S8g+x@OJC(G>Lu>cAXIV^pXzyzcw z?AQk6q|Ze5->#8SVr%8zNpRIG4p9xSaR!ka>em4Gr{gYA5S=st^QCQ>(+pl#6E6J< zu#9SR7@@l5Ddep9mD+$ejjT=d0GXXZoqB+q17|{}yj0t4LqcKFp;`$37tU_&Jz9;4 zrY5Nr(row(EJ3fhI=37fznZl-3jnPC?W_=yNVD|91B4R@mB6+jN$iHA^0v)C34G-@WLW*VA41 zq;H32tUBR**4HCC_j0esjn6GNEM0wK+xJtn8X@i1O6483-vmzR0aS@EKGOMR1^j9d z+Tgy`z!t0$fuat;b`8l!&_k=-^ok`-?4J8c1G~!y8A*b^Jf1HS*Q@C8c)Zpj%L#KZ zy4qnyDUX->p@YUD3(IyW5Ki=g=kjQKQIzY^C)iemu$zp20-`yvx()s4AJ}prxocN% zeB28Mh7>$dI|EkllpPCLow2_^T+rbQe=l7l*Z=y6UAY;X5SO(pTIP-hRO2wLUKV=b zu+(9-FNK%p3mr--QJckTd?}JkS%;yAe60!>NJ$!64M@d&MYpIg(&2eD zei-YsRgcO&v4i{yhK^#YMKLjkU%R^;6pH~c|G*-u(w&zT4~EJ>ud(USsIn%7S5~(l z{-UrPuFUaNk;E^4=aT`!u}?3dPNa49z=?(LoFWWl4}302XkAO?Qi zB6Aq#q*^G<%4%uT+zHh@0iYion?ZIP`~k(5BnNHXW{KhguG{sOzm8VokM~^NdDd$D z-0yI8FzuWo0HQy5IR^lHYY0VWWhWteKYVW%HUM+}3_(z`9mRUJ(i9)rUcO-Mn9lFG z)&0k&q)_)7WY@3N!If>J;`~*i#b!Dn6c*Ip?h%O|?*(h}>RWH?wM*D~^B|ts%nz!3 zYCQOk3cVd@%-SAb&+KUl&?OUgF0WV1wzcsQN9;Y^cD2UuvPh8gwjE2R$Yq0d+WA zIIGR`H0p(ntHyItPleyO`rk+cqyQNO09RZf3S#->=hDy}R|ivy0MsK?u(*;+<66=u z2z+#V#S(3n^fB^JUHF^IqrMrx`e9c$=ol>&zFa#N??+T#f6meLU$S*ZdZxN{ky@aF zlcKbF1{QIeZx+z%mFRFTJ}4;KORd~HZ|Sl?7kaoAO?JkojLjEW+6!+QA;%4RQQ#U4 zGInDI+DD4^JsqKuf9_J7yO@UDzjwW+r6dth}o$9JveZWf>*Bm-cQo5g^rhX-)sb=0kas}0dJ?hcW zw7?h%`TcMN{xyw?eGnJWFo@UXeCLOgK^I6{SsQE9@A{p0Ff+5QgKGDzu^6;f43y@dDZ+RQ-0t=8meLH@J(l;9_VyF=6nG80 z;C)kx_CgAeAS&H~2K)q@*x8Ca?3}31pAQi6xBHA9&8dLgIpff-Vmj;cb)e=+05l#9 zFV)*h0<2CU{`G^F2MS5;3d186%qv%L$jQ}$uwF~}}`PpEe5kS3Biaal=BBAm! zfZy=Ltzl1Hcd)t_HGK5YCs70U)2Fmg&aRfq_?IaEnPklln%D!b%SVjkzNy4?DaUP&QV|BFl>!zqe3K_rE(G=@{)OPU+_7%aWt<@wuz&CRdDL zfl7Jta=3Sfu!kbIL*18~!Sy?xO3^I$LpwiqG&RTeV#Euej4u3=a~PE(t$aYCx@}5f z2Aulplo+5#s*X*8aC1!5`*j!vR^b z`rqcQp40a;WH%H*)qVw~h$mMrw`MIzJ}bJ|`*V6saz?z@tmHA(qpZ=^vmb8QWS!~- zXJ6z$U*K|05*pFR;qt5z$Us%c>N>M z?fMnn>lksBTb(l{CX#$NsXunF|`5Hh4kg=8Y>FLZ^47+3v^?@c)Uus2Ph{00Q|On-*8tNTI|jE@UmU=^Y~ype|m zb-=ID3+qAl%qQCOr%%mDSV+dOB-TrChkVyEwt=wnuPYp(BzPtKbu)VCh~wLWnwT13 zd}riet{DJhqAY%+4CiQ^SdLm=ad25k&h3#6Stngr%lL-ZaJWOhq)B{|*)&1r>#LJ| zpQ*ZSt(Q*x%W2~s36Eq^?}gt<40!{H9!9hlYO)VDjdJ$d#15qx4~f&5(vM%Vbe z1A9L&y(Vq~+pp;A<-^@LtwyUX2`@##^df59F_{D0!Fd#&9CIpr^<4P0?CNxiiekY0 zLo?wyY$?Au7{qxHBj3PNI0!tgzNs{EeyTn6_bb2t5ARK`B*7ybFBCNWgc4ec(~+N9op2ViQ?b1OouNdG3{cG?!8LM8{D z#0Id=O?C-q;ULKYK904Aw>%E%M@;Ij!`fqWSQM5MpNI*c@%n)+!NJ=#mCCVd!UIjf z^*xn{3}B2m)v|>^EtP(P4_LUegw!=a+&Pi8R6ItQb@E*{saH_g#)A+ zOTk_};j|!^gO(qJXbpo?^k}YV>&)+`3JC~t)P;L&o&ePOS=}~Q5;C!OpbizPPV=eUVSOMPVFM{ z$6+Pb$u#rdNrNuU8=E)!PbLsApj&E04BTH%Z0cJNl77}oSC_AF<43L*s8Sy>Q9+7! zp>=`$Yn^i75D^~Km$< zEfHKmPU?;%lKKhlZSlZXlf-CzP8!yJL7I7WpyN4D)y|#qHDy2%K-MA<4<8K}&3;RD zl)ay}qoi#0bY$8 zZF4HNZ!eB4={j6~a>Iq4!8GWt4e-{`vo=IXr*@vq2x+B@^w7oIorUKx8KiQC$Jdvv zf!#n*!l$-aZ!d?m#H;jNvNt=7c>$qc%KbO2mo0}a7p7sa@|*?Pd4F(1QRWam zL_WB0Vln`Heqs}SgBdrNf{?#2Q_?E{Jy-=uv@M5Iv5BOg=yrAC@hz9G7&G?&uW0dv zscVY@u@?`>wQp?!Fj3aio~=5jxf-wDRrus6pVq zXY+5A@su}4f9<+1vpJd52uYZ%8<*L8dJ1X=e#^cC&1(0@li-d%#0D{_D-h_VTM^0N#wmj^!>6P(z<6)ChTOaqeWon&>#Nw66^?^B;b=vy%Mx%Qc zUw4-vDIyy7nrnT&r5_FDMzgEM9SVx7Rc=#h=%ql z&CN5OVB7;pF?@Gu)KCG?y&I;LGbk(PH+QkA8tb1$QM!pyGs44_l$i>F6TeJ|;%Rr^ z1MBe(PF8z`*}^k=`6nwE>R}+=ue0Rezb$CspFp;c%sua?NGr$QVupXcUaA{?=N)rC zxj3MdksqRS$;+|5Qmyd7-s@%7qfnE%A}G~c(59Mh&HX&`?G|a9w`v)MQ&B-fcZ_C% zBla7QlP1HLjis)4B6>Dh3|2@XOYsYoA0$-(jGr}PO%YDoXggLHz+4Z%WMnv0R|!r7 zCoZ_ny%5B{t;PR8s=hoP>h^mdsk8`DAsS0rQlY32BV=E)@5Yks$y&A*{tHKHI?{g?}Jb z6i$R)TnkmB@ZyWt&0#{@bHMSpZFf^*60wCPIhQfT$Y9lux&OB4c!3$4A9H6XWuh~= zHT?wzzpRJp9BVDVG`1x9spM|jN9PCSqc@0@^z;itcldP29*`RK8pkdpsmXZd7sf(B zjXguyK_heDm;);B08xlCnM<~tVhA(XkKaBqCd%$rkp_}Oza*2J0fv?hJSQ+gytyml z^vZu%k069anJely?p=hH%>imdQ6&MLB8>mvjMLk{@qY#&VTc>;ob)CQ!Pdqm`n-n8 zO7_InW!G1yQLi6lpF3yBmeT}G2>Vn3<=f3=uiH$yb&GcDmoY`J=3p7Fv;vWd23n!2 z+53;K7bNMiwp_RLIA{O-pCBZ_R!DGVAXYNp9)Wo zKA0M?*c|^w{wed%N|w-$EOUt|U9uqTd+PmzgNj=v@0#Pptr0N5ojMZoSrDJ!q($lhTqpKdvTGRHFF{pk_ZE2X68E5*`&kb|DdZW=qx(mT8Qf z*#Q*3d&(~~l8HMX;-~>?yq^15w-@tz-3^KS4f$V)4X+mf`wU>+3)KF?!9lGL%Vmis z?px;%?+(0wAovz+@~Q%sZp^e{2Eoj&lfb*8lDF>`#QxlpX2YMa_nCo>sxNB@`^uyKo9 z2>O7INfFa{G39;R>y+2Bq;&YL@W}T773#BW-j<7a4qsd|N>-<20^f>`%g%~YTR`R2 zX97d5#=$J)Qc+231AjtxOCt#AIGn(thlwsyZ!f?2T^Y*d+E1rJJ9{j#OxuQuvIW zis<(`G#24H1MG!sLpUWC4Y8u@N<03v2Qw=e-k`Bc5ME~&_)kT)WgN-oyO&&>0&=wg z>g8+g1&j6DK`>jUE&Y-s-2|93v0G|jl)`-XmLLPkeFVeI2Y4U4Kl!yPtRGp|snkqH zL_uq#sC%!BUq_gh5%K$N=KrNqCl0gxBMDui#G-ued^={R`pWvPWD!bICS};fHzrI| zwo~V;s%TDuu%V6oD;tSCL;Ww;RCTgP?AnD<+$^b&e$Q>&gz<)zR5MI=%(cGO-YT`H ziLn7(=?Bab5;y?On+z;!qfL*4HQ|SLR~>AzP^nWSR!xVJg~ptgA6ifamTk-dX>T{` zcpb%bCj@4ixdE0O#-esfC6aKU1h~u$V*G_uK!b#hmQG;)da8HDAs8c z)me4`n0JSkuI-k9J&?`A8$Kuf>0e-lyQmGBd>YvhHpEpXL4I1dulUn}_59#E zFH*7E9(w{2m}rx^Stx1w_-Gulnpp{+pSFhm@hLxU{woLy#2*wF^9SsjucCO|K*8_z zYaodyhVQfIsT;jBc2NX4mrk7ygrc#p4eV1?x}!L&l#ZZnQh0GKL zaye^M>fQ1iHRt6&$lnaeTFLQn2I}7i=+Nz%uj=%!YMT-b0ZHTUv2eZA=SQxasB%xB zfLSBFlxw%C`dw;HB(X4SX$5?mwI)io7O}Sig7{)~59l{%3AMp=#IoZ=a zDB&)8KArS9==(})I+C=L&jf_PmM)vZO^OsM-N&ZqgSY`6^th1`Y=D{j^*M=#bdcLj zM7GdI!D+_{rnD9?;G~Ud-0(EHs;X|$wLl0jI!Z4&JiyCfi46!OgmzAt^i1u_CVDW$ zg^T5iHqlO>`^%XC@0F6hKM+EF@djbBmyg~FdKa&33s7$lZ{?8630n);(60ZaTfl|G zR+H&Nz@4L23P0h=M-y?zZzEqkN#$#qL=4mhrX_Xt#cxH7uv5-)n}I{#+^9@9tFI$I z;NrECsQrTxHm$dD^O_~TwyoNoIEXLdAegIlBMn!=RO<^SqPO@O_R@#h>4`(+MhE8E zZ+eGWdVgGJTw?jn`%WR8oWdBRt`rI&0X|g|%9%KTTIQZ8_7@L)cLB5;FO6kIYDyFbO*%XK_PrOp0cQjpH9}@ zLfk>0t&-14ghGeTq>mkwR`LKsOj9x85HCGnZL(Z#zkC6ak4OR2z^Lml9##Pow@MNdMhmj7+kMa%#d10fciV!ITKWVsNz71xxlF2O zcg6qoX<$zp;8W^4-Trgu9zZn>dssuX4-3dUUewi;ycgL8w9Zgcd2(v)=g2v`n#-XK zp2Ag_BP@;B<@JB5Guz8Q;rE|-#t4$9Yj^OJH1czcUvJskK_)$1^{A|VGM=>4zTI80 z6`>(~M^qxy@P!wsr|%pVbw2w!0&4!$LMF~!FmylFk>}(5yKP!Nw5#dk}#k{)*`0? ztRw7A0y8A!2roKe3j>I-gE!8!(FZnyq5!^~Pdl+H5&xTo{<~-KBl{U42d&g>T#idLjN%Q1* z@lx;<=v$J!K4Gdq{`}z98t^ov3!jN(i@mHf`S3gv4ThU&Sin?|+*S?%mT%L}p$LkX z9ONp?Ph4YGFoUCf04}>eaxe4Mo`ht`{k=SJu|2I8rpML8v{KuBI&*g`kFlbX!7SVB zHe^cNv8ekq<`s|sw_^jBX8Z&(AALCta%yl;dnPt`P4W4?u^y8P*-c(C{p;Z#sy5Ci z?_taF{Nk>?6$kfO!ZAtFtoCnZ{Ie4+x6+@;>KDBi`?W{nl!bGj; zvk!$9V~;U*rgnF98*UtkEAVYcQ@+8hK&90%=ej*Le7Wk3zfpLKGv5h-D8eXWXs>kJ z23C2CTt0+(Yy)rvn0F<~Qp9&dU}op&isK$FUHzC{*{^@-yicJ11u%rl_w~*{zH>-1 z^FJ@>HbV=u*bM8JXia9{EW6c{KzyINw;9_ z-qxBSFit(Yaw83ds^pOYiAyIJi@X7(x-$!X>~{OBgI9*n7ZRoNH!8uX%m)|((mp)9 z8#UI4*dCs2-FC}MR~jGQ02AhNV4i77$jiAlbjwFX(1IjZs@HSR0x4EF@Hd)ee__h* z&jiEG_i~tfb4QbXZaajVMmw8fc5J>ZrFi3*mmZa;J*-TBI~#fiN3p71Rns#u!j-Bb?q=L;stv zKRylWs^j=^3gEqKt;2BEvhlDMSvFl)1FoqW6-@dSzdh3B%+nMgEG}r4PMuAcC z^JS+cMoKo#r6hWrz=FSdxUdFAu@%(%~wt5JthB{q>tK$j^)W)oBlbh{d z&uMAWa8f5nz}_ITNnn1kkmQAm1IIY_;|RtaS`8w{H-HnF5EOBAXlM(2de^({h5>n zD0(7)$jp6gzFe_X&L7ReCz8%7t#Iqo5nL$gPS(d8>u2qjRmIFssLSwUj?Hp<+p=18 zH#y62`cwjKjjam&J&hp&1AR|?iSbaFY;3v}jbvZ|!W;$kcrG}`sa&5IN;O+z$ehjO z`y)ksD|QVR5}n94_G9=JMu_iLrU(?#ghF zrD|y!XYEhO{w%qnB&-pxP{>yr5U$RPmnc{41xD^EpIJYRa~gK%0PElJ%w&y2JPTV1 zbr96@vAQ`sFv+yPebb)aEcdwt;IqA6F0Tv0I7ulL+tX{AmR-#Nx_cIchAdP=8+Ytz z84OcQ>juOQBuV4KHvuBg3Yldven`JRULmnZhb#`O?Y!Ho`i=f~mE-^X;F8q zwI>HXDD{FE0neMpe~o(PHi{sp4l@{9pFL%xeG+G<>A4i8C#e0T@{E+7k5p}up17$* z#ifcR8~Ue!*@*0WO_O1ln7(QyseS|)wXe^YZr4iRlpGii$lLm-exvef#vE9H807TR z8dk{!3V<-d>T8U9;Y+~fZ`j8E6X}?|aesUGr^|wUIDg^%w;Gq5BcP{hs3D%x1L`$NhxchTVozQjacpKg+A|+_$*?c0_v=r^}jB z5Z}S<`jtI9nY+i#Sj<@LrbmvZXlNf5sAaLgtp3YdxiS6-s#I8#^VL?g3mZbOp>8-p zQSy{BY%S+)Vf+mCQ8hTtSEld-Fv&kWzZ@P4Ky-72t=GE%A~^x*?7?hz^$VA)iMYoP z>DP7}0fvPeMb%N)fNIPo?@A-1K3Hb>PlWux2;(0+3}aO5uCr!YbE*G2a_=&WHXb8Z zE>@2ueUA=3A3|X_a?NSF#_IlRAdS6A7H(qjxsRZ#Zw-~0e*7co%!=zm+MkVbwfRFi zgh@%To) zX>FJl43s#Xv>q|&%zh~6_DKe(K*vuAN^zKJC-<5cp@Es>qq#J_`b8XoPv+eQp!)JCjT2K{WDbR^vSI`pk~CSp#R zN9C$3+cUe9r&+X;wA$^EffXu@llJLDb|r^%QyuhcKe#QFS}raxc-PyDw`Ua(w7PIU zmTBFrhF-+1a{(&q7SL*j62LHKE~7I;u@-ld5%z+eJyL}Cg2`aWsMB{QlIMsXlwoC_ zCfM>tl8_xT#B+*4r>|kaM&ps4A>p@j>E`rOB}L~+%v!P|=-gL2S6N>3w)Jc<(hsHr z*7GCe$-|rH8}T>c_?u_i?3maPAyh!YT_;8@M8hkHljCe&GOw9Fe;jMa?1^uQE)_Z) zfkVAY!`c$p+=Nij_c%eH^VKdwIG!Uu3MkP*CG(#t+d=}{RI{UTldB8f>|9@>UHG@> z`3{tsQLZ(K%Y98}T7I!cB&Xihzl;!K;}*YN;)EbJP(1h#y%88|h6yA2ZtK6c1?La1 zfb2@14i(znOLLk-%+);_wI*~-At7r;M1vsT*ibF)TsJKQhE__%Fswk;vae|_xJuPE z`cC_~Sx|<3)UQZoqAq z_u~T&zXX2RlyAVXYAS2I@y<>fe{g-Qw8;}L_e&uBBGNlOAeYlR+w*vmPu2BU5^NxgOD4kl(-KW#2q?y zl1kao+@y?N(h44+H^Acu7BOTZ4BJBMXn|S5vOUW*Hx%i?45tT}^3Cd7%}WKEv^fN% zFc}I93Tj&3i{IA4d5&r;7yLOi?fuiQ0Ya$V?45rOfDS&pJa+$ON>!RWznIv;giC!_ zt8Y6b{d5kz<#549T>7E>;g?pFA4+4cEO!x=q^}hcMp`~p-1_G{yz8`Vh?FO}sQ#5( z_ewFo@`Jy57VmwdD}&Lkfjr*mS7O}T>S#F18hN~BWscHHrEKCDK6rcjFUFR3*NO+l1a(D1HVN*Z ze>4<|n}d%MJqVCA;uM`)%Lt|WP!Xiz+HGr^%*-s)zSiI90i_j!92y<)SA-&Aols@j z*SD?%2ZZB);ZK}K1qcz`7K`GCQ*1w0Xm14a_3)=ZGYZMSB?;=hsCy+q6s6^Eh?1JOs?&tt<&hX<8%9G&U?Azulx6sQ4lgY7^)`L z!;$*+q2{#@ZjT&dv7^tbwL#ML_xXlN{2wbe+Chqv$85Y$WN}1ip05bK)dBMfR4H5; zZzYG5V7hgiWWNYz6R--N1ihYm2D^$vP)UUJWy1Kj9V~;$P{WdINRYWz0@9MHiJ{O& z2WTx${vLX*>dO^mz*m~eFPWQOt3-mujZRgNtQ6Z7& z)~3Kup2WtDiGE7mvOkT;*xDF*Yw?Rw>5vqOMr7dtYYrd8(w7O~CK#Q1g*Z1*sygRG z!%!gh$ZZS}vkl2LKi|ADScU9FwlLlCK1`>s7GzY(a3CzSv3TUq{YTAw`U%+jp2zwN zf0#r@WGvptBu>QTM$#L8ktcEipKPwik?vntfH1$z1(d2q1hG~K>q(a?Uog{e6dh=D zPVl-O`6M>u{2*5dD(fx(S-z@4F4KjqO0r7kzxKY|UCUa1E18aC!|_NgYf#h%AjpEdImO zeN&`#Fb`n#XVFkEIC}L=x2R}I!nc=dJ~U~^dHw4P*_I&MEgbpy7nTQbeib#A5*Kx$ zlVxW43jc8!;MWkQ373dT3~8Ia1ZgHEa^i@_$D0MiasOC8tx&!*A=f<0BIqb*H2$4x zQAfI?#zN{%73>Px%N4Rg*%OBc*Q4u{dF;NQQmmnQvXc;Tfgxr9sW-WGlp6~?NdoZO z&7WHVLVMD=Q3icSxu74tUQ}|r(*@N^DW8L6fCcHz;48MsS+L9+g*ig!B=si2k)bfO zyz4?I^y^Kl$t?`6mUiKCZY89!4uV*tNS3U`E-(E14Mxwt!iHp8TUofCrYUW?`PTxk!Q}blbAkN5P^ffwXl#g$PXH=)wY_2~O5>T-Ac!#$Y zpM@jbmLJo@Pb^~wYST1m)taAHkds!9?*~N3hmqF{Rv&@Cqp&Sh3QpzaQScNzdEe2ubON2BQ*$2s9xv?H!@uDh(ml8t zBaOjx%4r9eaYCyn7DUeE`OWwLwKc>$Xd23Y{RrfRrHY^?Y!Oiv480|10y6jm9 zvkp_Uj3E}1eL1+8ussU6`q@HF zVkY1E!hZ#y@5x45ZENZ5NmGqbq# z{)os!r#h~|qS3QomFH&W91z+Kq~S!RSI=IXyZSS1kvAo=&4Ce7b4Y)LBeHC+h!J0h ztf{4A<~!AB#9AHyK!ZvB^W4)}#GRJQj^}m305Z1ak`_6+;!$|vflk2NzA#rBZoL^M z+e)X=o9VS_3-9RGhhGBj4-=}8swB_OZV|tqDFON7zbO->J2`4Ds4_i43;=q##IF2f zmULCVO}tKQQrGf;;Ntr@#m{|OoVqIC19j`PYx>dZlNE=S;r>D^$*1*-Hk`odqBR6w z#_9yGS70@xs!(wL`W!0PfkvSg-7%bEYzsDpoWp|Tb)G!zqc@n|2xZnXT9A%NG;@S8 zRl%1J!O^Lh)w$YjBoetVf+JJKbO(|`Y|CbKopRTI5BiM;BNo4@XVsvK)oH&L?6a<| zA>tTV@M)j!_-%L4;?Cf^u0-z4yvxqF&qqW}r}@BqbgO^V9P$Gfw)imF#B#*1eY{LC zVrQqNo({RyC5QYjuK1RMfWW)9sDOw?>H|b8p5o^-L454}9=H4Ud5sPBh4Ze7u>V?^SjKp)5sG$w?Zsctf8J~Y*#ghf{0^>j90hOv);c%2 zUYqu{pTwA^m2N8SzsVq;NA>$R&;0sf5qOe(tx_jH-HCob@5CCtph88*bVQ1j@)?e^ zE0jMKtnd!LdacZhty%X_wk|ua&`RuJOs3{)k8Ifn*Jj|>SHZ0}c6w#$?VrgN-DMs=fz6o!1AX^^*6F%HP!VwrE{T*$54FUKa1kH_{ z6}t9oryaS?sB$1+E!l90^3 z%R1Hju@u#oz>Et9ep0&tT*ao_t9(cUIuXFDY`qVm4QgnsD%NG$_4@H1j6_Z!7j=Do z=#5+npReI7C&fKY7X6%$d8uZqC(ZR)gR~Q4`Hy@H%S7q+hOxiyOd(L7m&A)K}({{`i)makgX6-701t-6ZsAy6J$YOAxD z{OAcRz_Kiu;%&z*%`tkmhPv zO~75NCi3uO)et1O^8;i~ZsMq8C=h4i+0AsMFYL}ele$qkWhe|50tLk3_U&LA_3w8i zjW@D=I&@M@ou*C3z;IlUoHUK1mlj84lnk0`iRQ%_rs@rgzgSK`#R`6Mxgd$E#d@<; zr*>Qibo0ozXH956_LvW$o$xsXbA+6HpD}>-t(vxJLt8I+GE)SswjZ@ITuU^^Kja%z()u9VKgJIHjN2{un9O|_dAEgSd@YM&dY}D8kw`OH! zp3x+jg{M z*XaTJ>n1=qpz{$0dU)M8?++eKn^!#ceW%JFqV{}l(MJ4QtVK|7(~5c!Jbn8DxJCDj zPsz1wSI>xWOR?QqF@34*luo~s*%BQ_xt){?Pse@vBMh8N6n&Ye0<7G6P?74paDwbbs7*37MVEQB+u z>$On8)*;}o?+}td8ROBtZ!CFH|Ff0_n$ym+rn8c|BGLR>JnA1eyXY(P&d&qXZTd`I zk`{G~w4wast;nt$ueh3NMB1*#z>iOfoi7Zr5-)=0V|A0-+orns+eXihhIT1Nh130* z4C=t7&R`1oJmz|?_|nGuc2Lbf>O@`DJ4N#OGxHz10~d;e(>*Zr>CujlP!bz>o2r2sBMcy<-83uwW+pPYuhS-3@EWrv<1bV6W z)&T>)o+5@-R|~k45e0i-+@wiq%|6*j-wTHUc_og~t|koGJY{L9olpu9{0DoyPfA~zrZ_*)C(hji4!5BfOPQRWIpe`Mgr_-&=AIFgz z^Nm--F0hHuWj|iTiUGAplK^*oY~?+^K91+y@zG*otDuvjo9x=Rh1h;_r-WfU3QRw8 z|E(Vm<_z2dX@2Ae{;65F#nrM`x8+13{bz2-B~#}@Oh=YG-7 zPWgF%)t@{~^w+bjI0Mpo^76K0q5#-bKw8@j>0X*5Bj70B^&?Oz2#Snj zgmTySLTF?`&?-B-{tkrMgR4vYuc_aXxD|=#Q;)vO^4ayH)4}iq_W6efMjf1!tt$B3Flt$dxnyy1Ulm{YRJmn~MBxnSMd!xa7^@m#kqK zcMluL>o~quI>Fl^#6S7QvixIFi=rJUY42y``@6!rNe_Yh2!%xJZM~E#4d5!nE|00apK$dM*pt(>&~ULaxeAb1j<`dWc$x*cKH>U#2u-T9E}x2Pz`Q zhLH%_+a% zgy_G}4sKmRP$}BJ6JTY^YAi14w3W0Wvo?}tMop++E;E&%GMk*8W5 zlYxQ)*^~j@Q;eFVLduXCvT(kb-mgNkbn-O{N^#-;Az>cE|2r9YJ!-h#UWCBK@Js< z-r4}Q29Qv~Lezwlao2)9neGd_^~CX(sIC)zz&oNquyhQ7{zbq@dr`1XNISBSc5pbr z|4%I&{1-?MGu&PJ;^FLY`S7tDlAq*`^T)Ydu|DfIb8X)3rB=N$yPts!vIcVvvoYMv zt{|dO>u4ZH$m<~bgnb8K*t*TyvkPI-0hN~2Ie(xtmwtpYIe~nmfEOI%%hK`vWU&~tQXgL?<6s(G! zTP<8gI2GEr-Jg}sm+g6PU8j_rr>;DA6MkmWhfJi*eJ|wx?9{fRNq5OJtJ;5l_?!PW z27vDwUE6cb-SIB<0lww>2Q;@;F`q>ECuOIRJG^fe7MvHSdt2zN-|*!YK@%0?B27zi z&FdH{k*wUcQXSVAA~?kW60Nup1SscTRXa!-3HKM4UD_I_o9<$F0Hfce1m?p4_=Pz+ ziAf%oz;gI8-zy1PJfPX5G-bgh;G7kWNgh`WDA$cJ!q}pc1JS5epo-cpRSLC$bubj^ zq@C?u*G44E??_4I0ti7k30gxM&Q((e z9emEx^$hwx6Hbq!U5)znID*==E{jWs(mjpgSjeKchP<}9V@0$smZxRmW;&pD z--(VKTZnDIRHxm+ByaD%)2aKDfZqP=MQ$Fx`z2)1v+Q)`NyCF#if!AFYh!-rV@U|@ zT5Yi@6e0jc!hTUfKwA!m z05|LM)0JMI{OUuoMl{keYslFH=)RTmO)`~8rP7esfkK=bKcrWTx8E%mfGo5ybMwA! zmeY!er+6ZV2&w}?e_#URcoiGqK84CPvFm3PAEQFkHInAX0xdjW8;MPN2EqZ9X`^cv z;*VOx(IY39CPOoHY70!>RF+O9QK@t^xe^-6 zfbNaF4Xj}(LuE1RA+U(}m;busmw#PFfO3pd-IJju%QnGW?^wHHt0X6xwWM&L?w%{C zmx}jjyVOuHW9<8IU(A)~UY^=81k=u*yqpwX4FpU3sEm*(3~uI5j18SiB<<13EwgLP zqV<}t@Xip0k3xW6PspAob&Iy{Nob|UtLoT3ak_YTn`pI(Bfl9?DxngamE-=r^M4^Y ze6XBi@hhK_Lw3O$(g(*Co>++qyS@x;NIkTaCwLLVn2bhCaRZ%&jsvmXQb%H-v_-ypmJ-T%{Sf$+Ag0%I? zy*knd&927r%XPCzham>Tl%-6bY|p>u6TR?sGnQ{D1^^cWLrzYSQT(YIv3%O+Bz?!C z`NVWtq!UH4=Nn@NdxX|fqg|$0PKp@*!`3Y)B2lGe@h!EAOvesax~_Q)3AAN+z{}c) z81zCcBd(JUPyLuT$cUe;+oVwZYir@~DoC{MZ60l*lRs1L#+m{U6Z_ZbZwK#O)er-; zbz)Q7fTZ8>fK63#?<%qmH3Tv;bLs#e|8&!cLtaDU_F@CfegD~_{^F~6huBhWo&=7P zOG=jlhomlRu&@LgK&!QHzV_td`2>K1-RhvrEG**+gFFYKU;v&2doX%zM$9QY>>TLw z*zE<+)Wbk22C?flkao|k=5_Pin-R161?UCOK8O#f=?V236%O6o+}yNPGaA2DpsYY; zRB_#S3Twp;QoWEfBco(JwI58>WY?96LO_@tikLhqn=_NqVdvdR1qkO(=s5T zOs#ue%)}rN3E}8b{)24U=;#{%ii;&x2e7tEOo7IF|aF8`^Al#e-bW zbN5ApiFAai9`%;i(Ui|ApE*R>Cwec|i#)s8T6&Ltg7}FoW`d}h6l)s+wK$y07R|#Z z$F9L$$2=%|Flzt%JC4!issdl#MfNl1V8UK?Fwa)36}UilcEZT zB&PR>H9p6b^M1(Wr9)A|GT(HbT*;I@Gy;En3IAnYR#fcxm-;gSMTgW{E8_Svi$zz| zM;g#i-T_>W6#~`3F76+`ut%{!}-pv&;oR+7o{> zPL`SLpEgH}fE^whe()y!$Wy_}inc4B7f!01?J~nARGnW04YG3#X4fQF>P?K!=6MP3#`X zB!)yO!+cY3gaFh|{D<-i3!et{D4}NUIdee`3L002k*%0>|3wbExhfVH0(Ep5jyi>*EG?ioc}scY1F8! zJJZuh5i3ItvQtt9_K}=k}K+-F2$E8lZWOf<@6xFO(WKGCYGOUQ&{A6`JZO-Jnw?Un|{(Iokcl6-Y`7zxG05 zCzi{Dh|QrMirlNbAKBZQMq#Cup?dNVR%q?1Y^Zy7by;OH-%9DAo=(IEMFIvjmV#gi269F zbB?`r>|;mZAzDcj&pFyA zUZ_}|mK7!0 z8e!X;G(S4c_c)at#B?4LbrwR|o(akQ)&q_Pyz%sJOa#yu-lNdTkCY(o`dZ=4i3Vqk zipt4vK)ov&tYp7P8@m=detNRvkJeus~6$CtaHR# zCqcV{?*Tl)!f(xCTUavW!-`abd~{nhhpsf+JO1tP^JVEVGkKRM?(BVovlb&~K~3U{ zq0kVADWY3qL}2!cI-ODBro9jf#uOxfZ!krPmnewzu-|7jRo6d|z?MxZEUW@^yIp3Q zXPcgX>S}cER>twu+PXY^9G4t$ro#RL=VSOaBb<(km=%J>((^>WC5T3IIA2lk0EI`1 zI5$qeF+4bv7l#4B3oZ-%|FJ4eNgx5+G~7Ck3?zEn2kDkq2IK_>ns9>{8%b1gJ~JiH@ZbfRRzOxwmYCd0 zYhy-Ah3+ZR$$~N%nx>Y)J39+Wv>3wpJUw|(zL1+u12+`L$e^3HzTc$?<}~;3atI~tOwfWK;_HGRV!U^dai}mySI@!wN9c=-K?YTVkQrVs0*b4 zb45Vq;RO`xp`B43b1>YTQ!;l-&Zk$bRZ&%WJfFYrHrEox#njn9C)SH`0qe8?9OpXl zs5qj-=s=)AKw#5X0+dlWO^MrYoDMm@_>*bmbrhJ;=gZk{HG50*Ud4DmA%(tF_fm5m zJNwl;+fMRnzh;G{PmRlqD;q^%*Rf=Tj@HyXIy#`r)4uquMcL*wBb4#(m5LSnBlZ^wC{(${P9DWrUvRsDN^&Q!x?g%TR1n_L^L51w<%=2SZ__dB^FgpnOQa?l#A0 zE-(&-Zi}ERCcglBsqvvEf!|H;`e4eb%QK;o`JiXFwaYeK_!kL5eo>(?O^zvF?{fut z*WmCQB3Jky-B@ojd3^Ox>a;HOr|;)D6a?9!ZunD9H;W%xR+@pq#b@U_GsB8yGk+@p_EE&YBLFSfI;*sfw9Uu-qz_l_nFi2o9|4`p@ALq&xny!dR7 zG>_rLQ^Dzr)=%jvGlIKIVgmJMsXc=0MR&YnPb(I0lC{-BOwZEyvX&9l>GceqYH%~% z9BBP0-!8G#dKcGKH@s3F=!d9<5b6VkO=wjNGU@{u&0~#_ z<#=M}I{gxry59==q?NNp#O#h12uCn$;gSFBw%~ccW+r5%Y+49wyh<$(@{L!H-}fXl zgMaHu;9I`Uk(X269XRr|By;aFVA&cr@L+Wgc|f?+GtN6NnK5y--#fclV0khjd9mV! z;){s35ak+y(a9w%O-BN8AO8c*uD@+2)-tM0I9TP6E3(!CkT*xVh#|McgxE(Ohr0t; z%yV(*_<96lmdlUVRoI|p!J%#Gd_579cWHknayz_ZfASOokArsElh@XCkX;wEl-^Zp zpOII0sFrOOQdSfQNSa{12ft@4X3j6q&4$*^R4Ui!bj%gEwm894vbtl={7_qKQs_UM z%zc>e{=<$lU*sn8ZolFICVl@I=vpD3LA?I++0Xv{Y?4=Z!%1Kp_5y)I;vF0a>x{I-QP4vAN9*AUdo0~!>M#_4bP zX@C{V(^LoxS@1lBM4Je+TNRk)Vh%Tg1=|9rsUcm8ZQ9r^s%4w@^K>gX_7_CPWl$pU z-l|E+ty!)I7mAu^iIRiTfdLFU-i%HS0boTRJdxTHP~&&$_?KwDXwrR_ihqLC)@)br z{V`g*TLt6$Mk^E6M?qTNHNG7QH|z0EsN(r{kd<`v_^~ptm?r(p*~uOJ<(dMwB`#_u zZGZQ2r4Yt>Ma%U<%)S{PvlBX3 z$`|{732emsW^){R(pnhY%$UiO116pEDL@BC_a%RWG3%`C%G-qO(BX zY%YgUBE9%tIWc7*Il%bjUyCcmq*)jH`h{t8Z*(PCK2$1A^J-@m&goRJmq;{ z)>0whpvh~*Ecel83DNInklY$Z4%HFvLU*t_*5yEbzh*^?U)^1z^sE*RA@FHYYL&vm z-tdxyMbGmr9L~m%fA=Uc79*hjzU_bPTzH2^^v@Un3@Y4Z3)?VX{hIWe>q(oogeQA~ z;$zJU$l4wDC*E!D3Yr#48@64q8cVW#6rN-d9|sJLHq2!X>9+X!uv74ezP|I58d38XLZ?xyO=$gL9;uA}! zRFJa>22^OQ9O;A_r+4{A(V<`Yd0wZLfVeK3EsSg)0b>+Z@$!c$>dS zY+LDh6~OGIOtk$?4!-=I(Qy3g0bMND><=@zXqSXmhz;*9x>jY5{T7E5Ty{-#Q2c*f zeRn+7|NH(i(jnD3D0>qsp^$xyV?<^~A;+j}LdZG?$sXB~Y+0eQ6Gw>bx0OOpWgH`p zbsWxd&iTDmpYI>Pf90Wbp5wl+`@XLGdfp5v30y^_lzm;Hb${eeH5}_ zMdPF{5IaZefM&n@_{<(hc2Y#4s{Z?wnI#|U49I3Jis=Z-)t+_;6;2{(;lO0mY zP!|x6o%&Eik5U zp7;{s-y(2b@pg_4{zWaCYXRt#2f2jJ6eypJyIZg?CHW1gb&|hfbD#_MZx?EkfRTn} zlRGvD4F6YHe*GQ>0ozYzmt44o{qb(Sp15jvJ4_P{sYkSc>#e92asm0s7(qMYp?Q@kN*L!#w5N6&aF`0B*VsDjj+!cwo z!w{y`?iF(^->d!ZlcGiTKe9tNQY_IO=z)!+i#F+Xt7v%?pdYO1)~>_h7q0A-BG3bk zH3Tc(vlowb*6l_FKqLmV_>27Dt8(utgZq8S7y^zkJ&zvTv-%ARs?N(F>PBFhP5XkX)Z4tye2yk=yTDyaKvyoGSq6HD9_OV45B=0linx2A0fw|^x z1e+IYzq6-wjSeDaGvN+uUZpxx)+i2P8|wTu?h0V|BgvLj-$)^UC6>pA=Riz^MLmp_ zlSe%9%_z&(N&oaoDwkzlqyH5$`|mlop7l{Y8oAM~rLl@tX`t?7@y@h`6sxvrSP1YX zvhIiBgZ`uL-)G0aY%Lt6DE;Qxr+i(H2sWNxln$vj;w>wv&L&K*<44KPq77@eic{^F zJ>=oMd%%0-Dj^NF}3MXsY{q zGocv`vqWWPpTA+Quc2SLc0wR6eDF-)Y}6u39zOcDYjMeDl{TQ%Z)fi?_?rf)6URte?&XbivHk0<@7x`sk_5nnJ$l39n zTr8H7`1nrBNSza)jhkFA_j|osw?|Z+0p`p2`+RW3aUrqEN+)qnm1XeU7NKoQ@Fy<_m|weQ`D`Nm6%NOQjBd+qC_<3JJO zE|+>~_h{pDN)-8Xsr4`A@Lfuq#mw>LHtP~+gzbKrCZUyqOp>R}1ru64Mgwn;#-u_! z0Qj!r8t^(6#H^`D2NAk@Dk?%9no8SA`%uH<@Inr!HobJeyNs?Q^TxD`I@rL`+#&bU z=566~z2c2Jei+M=hU>XfE%r^3^!6t;ue-iO4^$YrPn+hHB^ej;vEP&faJqkXq;0R8OSKks7HxGe9Bh zrGlj4Otdu9Dc9@&$Rak){}P437ygK$A~f#B_yk(=()L!;gxo9EuCy23fuFwR{>V+a z>{IF(!K!uR?83db3+qsTzh7&XM{~7?=qgwyt|5_^V6q)+y33za0cl#@G&;K)SygA} z)YlA{Z2}Y^rQP;45=a$lneKp*G9PRl7|lVC6JVtnYt(ndqtWb_D9=#k=1pfbvYI+` zl=2`fj7p(YQts`ee$mF0h%pf9Ap+VyFn|tm*obN2?_E0Xbp~?e{~0oC6%Ok4>#$K< zXhyN@JZ2S53CXmJX9LkQ(ZGib?`asCn)!Lea&^i?YKM=+nF(77h3BrY3PeFPBx6pM zHg@~kYA4OjcQ)!Y4ovB34}L2qJ0zof&db>^MUg3`iYj^#+6eHo03Q85=PM9e@yXK{ zhwQ=P^x&dKPBywI@MYTbG@rr?$u@Gl4Tl>CxmrD&z|>J~`Nbd>mkE9IRC}Ha?N7Rs>lTK0`8g0k+*6h908W52 zzO?~uQX?>#?@hBtDiN(JQ-e(s*`bi9#1H2fW_AhB3-B=rN*(1BY(Ml*+07gGxBU|+ zVoaSZ7c#yMt>6j-ty%52@I3u*d;lJ4wqHG1F&6*ev2Oy)8&knA(iXx^e7tT8fjU7h zx_29DeC2#Cyns-=76tsPJF#XR&7b+^RRMr&ErArPgs#Q?N2vgYdM*N5U{g+DZ;?R0 zoh36~(7z81*r5>xYXlcS)w9MvYnp2}U&nv9GyyGMNuxdjb`^@$(8UN&be3NwR%XyX$m zo`8C8qkBpeonpf;(x?|9e44yT0yss;2dQqPQ4k77zA{g&wwGUYk5WcynVC>GWpLlXmUoskV>uznn4S%@zTBqBOzyFxPe0 zb|^shX)x0`@ok@^%u*>!)L+>Y;}pj~@KE7jOJU*h1R_}QQ|GZzE>c0HG^5jcv)Mw8 z=0BD;TGtAl4@qpM-R4R2d4RM&cQ#nn`i2ek+a*TZK18xphS|P8S3;a-tjuN-M%S$e z=$d|efze^S-3pBA7*`I|Am1~*98LDd+i+uQjq%T40WFI&fP9vwQ~Z9Uo}vO$Ml==} z0h~h5!>Uo3g6C2z*XyL9OvZ*I9GV*lR_^Jvfw{d??@*xz1t$Udz1VR2_@D(^3y=%1 zPXmh6fDu4`w>j)h&?PJYVhaLh1jbC)($4R`Lpe08$$gfwbU30ox-hH9-H?VUn=I`V zNt6m*p5|uH_*1BG+8*8fd3@omay5>ealY$m%a1fF#%TPgCfHkw{-VB9dQ;n#oa7n)-dL$J zC28}(9C7spA8%>L~YvVvc? zhbe#{c*i>ub4@^x+|d> z;7rEW-AmacZanN5Y{AZ#|C00$&7>+HXXMtBEriE$3z4^*U4`^%XBUPK+xunp!TQyA z2?*V<2MHX)JF?H6F3ayY9xB!8i076RalNzdFXQ^=R%)%)IU!!Pe==;HK zmgX55skQ0eQ3EOxDVHJHLsHay#}>{J1!khXVsX;*RI?L53&;`7diyHapp17)8w-dJ z$UKC6j!@JR7lJ1>qz26CcV3p{^tPcsk`en%q|i00Jmf{sqq$t) z0&O@H`T3{$v%G-xV1T%xus?5R!1Ef_oDAOZo_@7*R3k%er?md=Bks1rF(!o2Rk;Ae zDjRd5G;nCNWs z4{i}Jp(e3Df#L^W@7_FeeMws+iZd6MZE#`c5S~^#Z|*e<)EBQZb@f54r4Ln$MWAUk z{pxVdQWL-JcLL#%)Nsvb%=CBmuymqfKxg-saNwAfC6=+OTQ~~r5DA8KgNi{{a+YQu z)EcEg0HJ=Hr2*40<9JO$rP6)zsqNOyyI}fd+GSh6_wd4SL2*BS;VkB5uJ5e08Yb1O z7D2r3o}shR^ij_s;!~*Q2Ki5*Xmv1HB2qJ|aPtnJ1Y4(})gGG4EM4{}f-JiM4nGE& z?jsox;kAv|(D)FY?VOv%Uo^fH=Nb{N#1kPd-*@hLfQ|74 z8l~ot7yjNZY<`0{CiGM`_{4CWW8dto)NY5kV1t`2mm%v~>IV*T#kv24qM%d8)tO*> znxNF7^l)ET=6n!N`VPyBnZs#fRjT_^QM&uDv5T1Lc7NCX(9Ctf3stGmyh$FNxxu*+ zmSN-`S`+#4j$f_;4eRaHO>cyqnA=Ci`Hpo=rM!JzH(l^R?53n~ z(y|Gop^uwU#w799EwyNAgzoa8P_0q^?fOqbrjk!zRw#wXx)bka>i(Da*%GhCZ9Jwr zg||BQh`K&1arrRR+-ntA5Ef9@h9b)m2|?5iN+VL{G)FlvFq-7oyFDhOFLCgjiscVG zgi*^-D~#TMR)jX?kM?mBthRAW4Qe|g%?u2*j37ucIVP_@upgSn>zG~cQ#P;d^URVW zf&Au`g>DU`VV?~7#1hL;Il_#ZdSJl_PIU)3ghdp>Y7!1-tTY1kN5;m&8O1?4shT-U zU$&j_B^)OAZWvYVT(d^7mGK|5|upw@||cL+}yN|mSr zs2u4RrJzn->A5A@u z;kFKcai(ohK2_B_!|<~BA&-`sa9U^C1s+u;rQFjUExvP_NqU#8gxNOS+cRxSzHp@$ zi84%49EHxvZddO2@fe!jd4a%wIV5h637wskC_+uYwSdV*;&B09${iyZLis}(pGv@6 z=k^2!$Y=NRID$`SH)Tni2e~Q@Tt&n-TAz6u>`gD}t(Sm|tF)+d^&CFQs_CMeN+iz) z>VL%pfE6WWRZcsjYSQ|he-<@gAZQV04T_^wDh6x1kxK4&*p#Ly=@GG3ec9)qUSrnc zMJHSUbQNC~V*nX5M!$BU`snD0r?0P1K~1d}A{5ZZ8-OhrpODCZguC&b{!eB7>vvzw zF`YSbZt1C1SeeIlVCZqyDufaUPor;D&ObCa7|kvWgO`|!!Dk6 zP`p}9#%`A>JRhKIN)d zxftggUSV(R2xjYp-y0%XVZXPDnWr3Oze=+fUD0rpM>-TQa zXkHj{4-10OLs(OVFX>MG_hg=o> z3#ol+dlFO%c{BS`xHr~}3BWo@+V0{yx6E?h>oGLI3!2l`4`!l$vY540xd0n>t!(Rl z4A8D{;V5}wQyQK1d$^{wfvb`0Mo}{V##ui$9r!adxI}BeKY0e7b>hJnK;AaPUjZ~# z0;ny#>;sCpnzQd=<}WWz$U5-!og$?Kq1W7`v*F@dbg2p%tOm3c*f8w}uAZVW$5cc zpP%Yg8TJ%xknN28Z*M}6BZ)1-=iLhN5!yZ`|$ zYk+Moz?84I_$)9O8IP*70h8@>f#m$))9iC0qtHJsj;aL&({YRA(jYr>!(b7pMn*fk z`H`^XrVSU`DnUKAR9Zn6U|?~4fUJKhg1lgo&CAESgNRfbz}sHe|VR~5pTSNt-(!qO}oq(lcYy-@3p`n zDNi}ya@VSbM&BXpTE(7R_p+@hj_6jE`YiAKLAe*ebOeBgHgMijXB&9#t}X#a!vnKW zLA|e+_*GNTEUFG9gWJ9Jz9#Lcx2pWl)?C2LD;6WImiwz;ybJjK^(wkQZdy4oj2EZu z^G9k+b0k&}TfK>^k7h>6MUS~RayKx0C9WBZUtX|oRVFpF) zH)wI{WoKvSdMLlJ1JCY!>Uq^-v%Zrp=3;SIxp$Voo`O!9jT)l0%UfqvqW7DXY+B`d zszcG}Jc1+HJxD_MXzLcT-q8f$u zX3+eo0HN@;x0h?j#6&9MqRW}-H9agM%=y#{zb5lG3R^0v-Q0`2yFPQ2fTXWsE+t4c ztfX!PJn4tOSxJ?+Tkl9vpH(U+hrlSW4cJ>934O`v*Zm4*E;%WQQ%?8shgT{_#_ChI z>T!>s1Udd`ys!O0cm6qH{eE^^T04uR=EBtrn~L9PPvqPN#esc520G7mdQ8xp?1F#^ zh1;We4zXAr+OJZS_Pp6`=0^yMh24x#-m_mkhSI?Jj>!$zYup{(()P`>Klk?7%Ggx! zmBzi_zSZ&uj;Tl{jPX{*+#lgCVfdZjVJ^%V88`WsxRgip?o9d&V!DK({w{SsI0%+n zlYAEBdi!EOAa73PbV=nc17I`o}2o1M(FeIFA*_NU&TMF!5*sQI8|7kp)MUa zJ8W-sV5eXbL7|Yg7b!m;w`qWfKWCM(#Bb53MzVpTqVhO}*84sBMPL>H_4-U^3t!#- z2yqzL##^clUpc@NqtesU-S$#AWlr#Trlbx=eLuX-t3IsZlw=F4S@fg1A=&JXo!E}Z z{oRy7D`D`?v`xNn`4Y4edV-XCmAR15ibb$TPayunbC0{}chSiR{J9>5hEOr}#3;zP z-PIYlE#r`dYtGV6Uvx>+3nG)*sF|kuV!-tiIIY*ASQwL26WYBiXKKwLw+Ge z66|dB?<`i3xItj(RdzNB5S`!&c)a}^FWye|RN6GIw=9qct>H4vbfuHWs%Of3N+Y1` zmuCJ>tYX!|q1Dc6tRb_^me-8&%j}D0y9+&*{R2R{LFI^Zd#>LOK;d(PQ3L`encs$< z-P(1lFtf$P@2E%bGwsbg>Z@Gyhs*ri|K9>Dc5Jqx%r{|-3S1oJ*ZF8cJqqEDw541D zG*OUhzv2v9A-RhL;S-NXpr%Qh>p3RECP~3^T%IVIR5p-+Ij^LIsE0gv;=*lVw%$mq zFlr#m7KNk4jgs^a5y+ps{L?Zol@pv*2{s}pBDWOxj&j0~V~R#V?GclY@*iKk5|i*6 zuBi$PKve zvzr>@vvJUZRP|PrcVsFwDPdTf-X%7ouM34}JsaN6)QWaYgx;v`Ygjo=)`S@Xy?p&j zol7~3)r9ZBWgkW#Hix($JpM6q4r>{@D14Squvjl_AAk4-%PtwL{W6NY>%AmBcFFR* z^`rECUB7{^+hvpD*+fc%%jL_-xjwITpG6ze>i6zf0O$4i$TI$&k+4e6CjVz6Lc^g+ zFCx%OBXg#v*GSdTY&S zr$;Sd=hsFcSRX9={O)-shk8P&O?gp{@WZu7W59#=OnnA7bMCr7LS z%29(Egk>BJ-EY3~Jm~K#{rEd%Ik0sOv*UJH%O6_(d&Fz#e)4EJlx;ox(2S{fJ5-*y zrvR}ow(#nUFhApGtI3*VG(n&9LG%k_x?ld%3}!$JobxIdE7Wkc8HnTuV$_4|9}327 zXH^ftW-6KvA2Ut~7?j2Ezd^7fHN6Xt$vISX1t zi6te%h1wmlY&_nq$xTtP?ZeRku|Ig{{$HaIzx$7|DIcD_s*m}Y=hLKoGMYy4^ygNj zBEMM|gjFG1Q3_sat(gt{VEV(QTq{jpv0ePDVk3`!b-xjT^B#`5yoz(lbWddk{A!3L z=R9&aqr%mpZ4s*c|n8cAyr9mxOc?Nl5xV zPPp0&?q|o;skSa(b+dT$D3L>$FZh55cUX<=89DBykpGch`djaDqz6i>Z8S_%D_oAW zEnGhP3QxGgzUXy}DhfB$=;V7|l90TAe@c9^Nze6uyi?L64fS}s{70DdZExx@`bFQv zJh3#yLF@Gi1xv9X(jKYf4{$*`%;M5GV{_dif$_Aj-#TDl;v6y8FHOrks-N%eIl%&E zamlY!QeVF zpr%{jxA0-0MRf9aK-=2Ak4S%h5>k9EBcf8g6c>}}PPH%YHm_Z{bNG8j2DcUZK|JN) z8iG8WpYTWAwDDK|?`N}n8bh`|JXLpi<6BZWM|3QR2AjJp`0A5{&{JsT(qsEVHX2j8 zAElxb=3?<&5lx;cU{@o?vJ1UsmNhQ@G7fdqQrmOB#z*5);Qkwn)a@jFAi z%o$fB^wiBUnUt`%Mh2cISr5x_>0zkXbUI7>?H}(D%19%Rv1GMHN`9ZzLm5DqT)*50gd97AQ;HDj$+}3N`mm+J@ zchXA~@BC+B^_Cptpx&RjvCnZ9_J|IBU^mM7a}N1o!>~@Mm_~?3^wgS0-ja)PSVuO` zCF#EP$)DqB{*Um=JzR_<@8y{XtaqYoh1h45t*9g5&yUB`Yd7xxkt{ZI|Mlhaa;J2i zZP$1_6CnV(0_x{!9p?@rihgf$&=;@kZ>-UAK(%w_yP40dH`crdbUIh>f7rK>^1;UY z&F*x1hjC~^Z_+$3yYNnRt7C;U1*2ZH>KnLE29P%NHvMJVwRy2eeUX!<-PRkY)cchM z3VuEx4eHQ+dmNFQCI5W@gM8A-s)RBW!YuN^4-m(mt&is((OIu{xEMg6-@>_ z3?k$?#u+AVOEbSvT&?MV5kqIO=nQL$Ew8{hPsUs_DZ^|~(rJl&Lt=QE6>3%$=eJI( zH?Gstf2;ErA}!KYaB$>|_F_>RQ{S}AgCD;`V<0C>Gal$JJh=5z+V-AW@-&)XejJWr_gp8r z&Jxw$Df*i0)3B;nDrvj#of2-`S4id%icoyAtEl#~($3;o!O^Pv?>@|K-$9cmw%<*E zu-JK=yu0hybNi(LvC#&dZ#*H(9pKheH2Cw)qR&?eajOywV%ur2zZcyjpVUQK?AkU#IE?enBnf8;S z5I}oPyGwCxlkKZeQcQ@upp|fMY}-HrOsm%)D{@fmj4b(g26+Fi>ZOjO6EG3jL1bOw z1UJ97K8?f~dk7$mE#>RGv77zyjllRPH_>BqQs@LcVeAz{o|0+l;7`X{5`&;H7Rs!# z9GS=YVi-Cy8t~Oa{$MKxHYfGT2RPdM2-K+!o!$o_kqSJ*)6_Q)%< zM9O6xBKwIp@8uzIh++zdpm}*>Y@xbk%P@ihie?jBIz}^_IHYHu1dU*|O+UlQH+MwY0`iXX3bL!;)59JQ7wA@>? zHC0Sd!RTCF$L1GXPIbsu-8u!U3EbPYr0{N`(8-U;&B|V&W^e_BkW*?lt1%=Sz|?J-N2CZg3XUcDt*PDpj$KoH1F$ zmVnXrgC!LC(sz9x?AlhuStOWE{wojf6X-*vT5&^(pWx(zB2lffySvH43j-smUA-m{ z`M40}iB%j=d@kcd;}}k_dA?WnK65t%NSNh`H0_7(0?L5*KR7Y_5BM|z;>JxWz{rwl zJHrBjt6%0Y>$-h4XKkBS?yJ3!;p4W+s6Ml2h3sp4*ncf{fcJW&m?=Nj@@{OvUJ znVM#uR1U^sws&E>3w-UrZ0}IMgrM?(mcv`lCIuxWTDqJ8q>=CylIbP+@%48EKzgb* zF|Z-m9*QIDfIh<0MQI1=uQ;~^nC*T#zT6`l;nXL`u6{vXhrqbe-5pHWK2GCvx!%=C zxB&fc1*gTxg$1XK?+RFJC{$1NzI5}QePJ_rm5-kJX@%v4GUut*V%P+_MEN2dUU)m* z>q}G{J&j;glvT&?rap0y9?N`{O>S z@-uXw|KO&_Nu5H*^78UoFL4w9R!Dk|T}+r6yo zS86gi?R$rM9ALj%Vwvc4UpO5R>&UtaBQLwWRkutNS%rHg&E{mqoctR~fBqslVa_I* znFe`ew(cD~3!_#fM2)SJfQF}y`B^X1t3>LFW#-THKcT4QYV`LMremOGtnl|<=bPm3 z*3@O?csm9X1#UA%mz*B)(_xVIXcCZ!6=|IFy&0>e3Dwb{5!K|NJ++pt9(;HRE!IeErSA-m7$NyNodM7yj+KWq@hIgyLSr z8Gwp9geMy4^gtKI7or43Jbr=tnXg1TZ~#+3oq47r!Xm&Zo!MH*Rc1Ofo@JgJ_^{W> zY$W8e?Vwg)mdo|#HElfEz+OW9zGfmlBlJ04Ksrz#bVEKKGE4j>{-O3q7Luvme~-yQ z31Ulf2SZJTg{QOH2NF$4)_gRAU<+Nwr`Elh*Jw0%WloTTjm(8jI!T9Szh$C`Q*C^l zZMim1}h}iCwSrKHy5*#_*lrT8osU*gV_($L*;uFxRKJPlJ#TG z1D~x+jAomP1IENL0qn>U?&!#7_2}}GXP_H; z-7^2pi)v$PfOwxO9)hb2Lhq65adpYg7~@%tlHKdj4RU+H2A6{I-^>}L`Om1YWtU2M z$39RVx)a6`&GQGGC?i}R_cQ3hG+XKwdLF8dkFn894zB-s}pw|Fn%EB-U{ zZ2~`etKbn8VMgzLl#25Quu|XdW?*~PNFZ&Lr}8G9fMvN@h2@5I^7`ZlxZq^oMXoz6 zHy7iSw11PnHRH)sJbDdQeCT8|0Jc37ZRy!%P``Uv#b`3M%KQ@##wK(vKl^<<*B?p#$? zbz8c!tRhzYg<$yda@b;g7A~gzf~V0 z$+Oj_5?qY8^m$Pn44-XPE3y*rE`#i-x!J9LpIX-+kG9!qwfShyd3>}LZU+G~RvhJv zp9p>kH9%)Dh@!uxs)s?4kkz&rY9mF6mZ`IyV0Y43m@nu+F#K9_6ZE)Y5d25)w%hWH zdi&V-kMFwO0XyZLt+Eh2S31dAuSiKFmJuvj^jex}dI9`4^WK#*J66qbdzp7;`jBs< z<&Nn1K8}w=#|GR3ldGEMtcz|aRcqNyx5cN=9**Ke-hSix`AO=?k3t#;1}YX1TeiS+ z$=?&y0SBbEZDy@lfHh*sP6RNc$1nT&I%dYGjH)MQ7%~6c+hUB(C6C{VzP2o{3`6*h z_?5||TEDwf!OOlFX?uaWh>WJCHPK9smCgGh%#Y+iALL&@B&`FBu5#rsk+R#eHB=Y! zTxE$OX=bnI@Qi+O=-K5$S@k!I=CL(AJ7#0$Up(@cHrDa7hK3yqMrZo*dXbsfypKa6 z2+S>g;H+x&1D^|u3&D_nC0V+{s$IQGs=*Zi=6W2N>!e|i6lNJ;zK>?PB^ClML3UsP2}u4!OuN{_;{ern z>VLi()H*5RgCOEW0dpEuaaveK;tW_;U6br<2p6yD3zFs1woX1*b4BDr%#$R`qD+=L zz~;y%2$s*~ip2^$CO#gxl^=N)b7tuumql>8Aqp( zN%v>naoAkjzG|FzQh>t)6Og7r?Bz4JglI)THF?UQMHR=d^heLJp$Yuwj;)UP*#F(H z<)iBbWYWVANnew$)0hgs&a!-mmEl~3>|3oII(BR5hVJ`=x(;(Eo_TGe1in^V?o9 z>X|wi*yb)Nayse@0OmK{C?klFONLKP;|nu#AImo_jt!A;B^@XM&7Zk}+PoJp!uC3R zmGv92;SToTDTzyF0^)#UWl^%K56u&GX6b2yQZG0QDvEoEQ?&`*yhh1WzVm03+5T;^ zM8VMw<4=RsBP)o$Ty89w4dfN)p(P@)VzuJNHmqZL9!?)+lBDq3oL%Em^=pRb7pegd zH==z<{H)Zf3!>jC@vB$!!7%0sgxue-OZ(;%j9eB&XaQ$3f|J7_ET*yREEG^>XbwLg zH`=m&4C~gv;qU)ug;b4e@*glU@UX$)avxgNRr{Tw*H?GdO%M>E)x1}#ez1YwxV8K@ zTsi$OTxFa+T1NE{j<$^T5*gu8p$!*f5w;PI-O1t`v>fbyvK0&3Nmpkrf8$+@GAP0R z?_Ek0_NPB*63^wo{q99}dA4BNHA)>ynE))tS=P$BMv)`J+;PRY@+M%eiP*un=Kb2Ho)mX*lEhBA}0y;Q57)n`4fO})6L5cf*t^+ug78p$gZd6GZ$ zA?5jk!a6{^intjiTS~;XX5G_am$*>lYvP*u{`H53BVEf{BWM_6YPHzcE!9h!ih4tp z%Ary<)k#nQ^l#?}ei-8|KaS{5@zi4ABLa7$gB*eo6SE1YS5Q{&-WPY^5K>@IT!@9p zgJq_UE=v}RMuA)pxy3ru~W!( zR0c;LNX+S`SxMg!1y$7(Aiy{KXYSGYjZ+OuYD~^OY@o}ER+Fh$0bCsV(Oh7>iO)e# zV%Yc5)RUZ6E++{=ovv?(5^5V0`DglkzO+&)BpT3yf@AJ0Mbkzlon^wc6#L~TJ4>-+ zzi!_NK~?Yi^|!KUf}*51FDwq#cs%O#YNork0PwitLOHJ@6+EOj-6sDS&ZvC(TLA~z z0_#?FVEJ(m9Qg`u@tXP6_VpL1;q<^-^5_C%!N-tk7IlOQ zz{Ue4!*0tz>qMW0q`FYkYXKF@sv7Xp;Lt*@JCTs^u0$aNxzw(S&YB?FOf&fHN1auv=w z3`-%0U4Pt%k`{XWtv$jwxyajtEErg!+ob$~$w{4}t6QrABhk|Acv^zz8v!2;p{`)5@GpHs8)CxGX$S&~dT@AN?63t^%I(P_r%0Vd%J{NLyq zn1`*9He#$faJTVq0Eo@*)_4gx!tU%WDK)ui0u!97BPQ0Z%UYhYCEm@m5i_PD zlCwt{vIw`w*xVnx4t*UDb1P!}7E)fGaj9(SU zCD&b*< zB5ej1cVaM3Cn1Go@8jZ8>jY5A>Nyh3^fG}-HK z-I^UFwFVreXwdiE#t`zZIqCs9qkXKz>NvxS{X=@j;?z9^UPie~nyy>iKhXTBu(8F7-kre8@M4XY zDvdj$cPCB?w%UW~IHtZq$9*4pA<-2S)n3sx_>2#K7;3V}F=ZZa#76}5_Xi%42?0gBUcfya2qirPu6ITH@qxxrhLM%6hRzVu%$ut_NRB>X}efk z*y!~I;>DSz>EKZKTP0ICq#ync1df21(U*vpC(G%^e@?3}L&2n!RPkY$l&cE?QD-Of zlw|~%xsULH=x_g)j^|&iM!}o%Gn>VQE-LoBtdIzRXP&2U0gXmfWBw~f7eu2&+J9@N z`Ewtx%2?7p^hukfTx>pbUT){LExMt4Ok4OQs)B05~7$d za&|?HUkqI(X~V%!mW{^%%Fl`{qVF^lJl;N z%r&z)z;VQJ?*360&`t+pNi*X=Lg5tUdmR$g-QTV!ru%sD2s)>NqCY-Ux-V$V!d=Hd zXIXp3+WeZyaQk*&R`}-ZkV^A9-X&8D0qK<#1;;!ijew2PI#>e~2gD$+mkiJ2TjSu3#{s>twKuK4}w5^bdp-fLKZWIp~);JKjF+(*5rBhdUl zE9^Jg;H7dTZ2!b)rZI|`9`1W)gcT0H3>7>ro=5YV2kqWR*t;uqXNT`wpj+09rVfNs zK85!?iCt5DnQN6LIx1~_PJ;I*&@+08MjhuQ&nJHeewt6CkLoZnT{PYMElV2E#UX)r zinrX(fK`R)oibLpY24}ejW}c!ZP+|*$`j;hj}1KJKLaR8MQrD&r(D&auiK|q$v9*t zEc~AIG?N`y|2ap059^qiu!24EJEKumv76aWCzi?9ZS%?Hp3AwV)^#w&R`%=OdDi$p zIt#{sKKY*ARH79^m%4f#Mz2@H;kz*-2XLA7_18M#FTZ{`{bl9dbRlQtWHP`6Ourj|Lh0EU-r9qqakM5?&}rRQE;hnh%PsGhoCJxU` zCm(k>0M#l?RVy)ywAprY^zc1dc!3__NJ(kAmd^;2CXY-Epsa ztdYZ&zBml%b-IPkay@NNb(saoY@ql(2Rw}=B>y7HHTNMB$+Vp4eK^9u4}{8r?N-E5 zqwlC`5-}~3s8&W3tNtbQvO~)jr4&SeSuwuQ2nvDhzr4&9SL{imoTrJR6~DmtaSkC~ z2nNLPns+gSQ9uFPf`~p&e{<*m?W<(aK`L+b2BWWm7pJEB@t~2N>{>3=IpxY%sn!4V zMHB%(yD;p=GzE})=LFTkW_%byfC3qCCp=iug~dZ?Ywxy2r>6`5?)6(-WiHs76#ID! z{hJ$zn6?tYtq*yt973<_+Nof~(N~#uiJyhO(fsNR$#;eP7Kf3Yazl_wCAe&0a;z_9 z(qUqee9(vj)Jrk}Sk@i$ty8$|xj(>hBkpgTW;X3QwTyit>4kEhZCi3>A}~j|iFG+H zQQJNq%0@mc1e`TENo9BInirCsdZj%8h(!CKcI-09D7gt3 zRN!mfhEO{BkI3Y!JlLisW7P1eMHlWjZ9xEM1J&(@I&!>G=EuHUgadmaZOB^O|JF?3 zzr&@JJ(u-UhjF*`??$J@!W`*yz2+Q(Q=d6%M#@qp*D_MGn(y=I-gNpn*01^)YlB!H zId?oT-Sp`n^ErqnW};$JPt2CE-keBtxrO$s{uvk=s=}`ren?aW>g2B(sLRx`Y2V;dBy8!AG&cJnF0{gR*~y{P(U_Wx?v}KBa9-fe;&*f zodJ2v?^%qC=|BV@>An<_#${(NbdoA@O-inN!26AwGxi~&-v_TA1KMWQe@V!OvaF0S zIIHR#-S9m!_f{#Gu81pQE}1O~A|O~?Xvy_+Kk0>46-}jJxo3{=Ter#8>_>7Oao|{* zI~;dFu2b9INSYNwK1Z_yv=jKbA}Hgz%5C{4~-wiRuJH;&b#> zg))AH6F#hq{jI@TYyM9{gToN`eRfqAR#rHq5$#%F;52}wlbz(&tTW=c!hp-r$N8G| z#9i(5L848ol4k=-j_s6@Q8LhzR)B@jqjv*Cxp=SvOPr&~2;12U89thYQE{h4zz~j` z%voi>0K1)`ARJlZ(z%F?MnZYRhf5cy3H|%cruSxGWwOc$wWFe#Wkn#-0e|Cv8$65& zo=zF}4qGXK#DkYBKIVuCK%yO1ge+Kcs*7F$jDhWGHMt!R&)%zA?1 zxnrEdf^dy1*n?%hfk;Tc6N!L)1RM_c!%WKK zJQ4dHylL*-k~`XUql#L9PqGCVM)msJdhkO1Z9UBGAI$)eyBwM66b}03!maqF{O}{7gYuX~My2N01FzE3?>dDmT@RDKB&q&gy>PJ8#g!*#4 zqo1A^)CTY{H^Q-=-%{!VW&Vy?zS%DutC48`Lh@{FNP;IorgA z{8H&SdohL&1sVqA2_1qBD_s405j0>YUC0wb;8B;ro+O@){5WuCdC|D$}Lg$sKp9f_Q zvAy!=mb(38{q?sffSv$=HX}A?vH$~bZvP*-vGp0&78OKWkEJx=Vx{nPnzH}^Jj?rw z?^|M--FxvY+bpRKL3+Kx3c#_?|F_ZTo7s&w%F3U{w$Br6VO_f&->R7un@<)HZy0}U zX=4Q3L?7thmtd9e23?6%kxaD}U`PN-@-w|C(IAtGmU4hP;N|5(k`*RV~R!5rUd@@*z2&1f)S_Rb3{i2*{7YuXf7Fv0}=g z#gdOxNJC$42DpU_|M@n6Bs`yuGYB;--R(gHF2=pN`m~~;3$2e#}^?(|-J>8Q2DM<4$%^6i~uS6%}lm-^+H5V?XAwe5Y2Z^xNc{pgwrkOK%tvuryZNx792&=rr|EuZBEA7y z+4V1WX3pE!QfZV_Fbb-zbOJzDp>`W!Y@%PVe$4IRUkUys^2O%99{TnAlz+9}-JR>! zEpitELYcE`QLjDpCf8}T+=d2CPxmn|JWj^$v>`>#tvp@4n+~fGek;Usx9{5$udw8$ zT4O-q>B7L~Gga!{=LW^v#pQOqVnFf1W79Fyb50=X(XBa*Qh303kXo1{P+@Lldf~%-sa&>_YLh6RpPA78aZ@KRCWbr;#lJ#vJAQ@u8xntVm2_ zwOyW&r=k$?k(Wihxs!BN6A|B@jn6r9l z#Ia5h?$gl#LbugipWCpz*MtAezfw?aNlq1D zDB(`hgPRvuXPEBPTnK14cRe{{^^hc#Z{y7_N8IJU!fxcn&gvP1dl{@^Dtlw^8_Y&F z@%&{am5#_V<+aWrM!=1)Wraxh)8=AJ#%K4UWcIN9k^D^}#oRTnAKx~D<|C@^-Q-j; zEm^20Fa>lf>8KSDhm;Qr{=ImtnEpM@tdboMo6rdZYTWXmhygI06SUh4_RhSF{&UR0 zM7)_uLinvF{OI#Q!ghnymM4C0SnHZbhN%XqaFMrj?=yA2-AQM-@d^TzuRtqL{rC_?!P*To&LX|ZKqG!LmvhzU~j~W zH598&tO}mJa3$>`3~o12;S4-dBVALd!VSx|Nm0rF zGZ_?mkWr?>mCE~i?VR*Y^{~#&nHM=AE66cR)}!K*%O}aW{yEa9U(G71q$hHhET#eT z5E{gj*dY>tGzXMMgE>RMTiMTl^6THt&HdlzzJR25_`FV0eoT8pZHBRct!u!a1#@W7 z#s>A!dfI>cVqy76%d}Ue`ZvJdH~LDW-yo34++?41?CHrZf3E{ASG||}08hLO=faRC zUjnG{PS$p!Ylj}o<$hWI#!zwc&S_TtcNu1#qEjpOC}e#(dq7r!$_{}%y04j+^e8mz zNY}!l2MnGg$@mcd1?~R-P@ewn*H#@Fq8CbTN5nh*%9&CxSw_%sUY6|PEz)njWpijP zrwrh~B?XOyG+8QrkCkQQg`=`hFNBz6t8vpU}yMe$IU<;A8b{4$j9 z@z18^t-l#o<^R`tr#5^k4EpL)3@8T2Sm8JqH%$*te{7cY0r%VbVr~J~Q-VP|_X|(I zb+@|h(QQKrtC%tR7ZYa>GfW+{V5T}@t zIhpShQXPiab#0WY)#?XWy@g8F50!yV_P4V)4z3}|y#JoYc0ork0WdJxU-!?^%XXa& z^a^wZ=zGzFRV>G4y|yRe@|QjL#FgDk(@hKb7AI(m9oMS6wQ8H_%KJl3KINFg1VX&+Ekf8H9X-4K!D4=oFaeEUhj{LoYwgLR9_O13E0)`QB zg}CxFO{oAJ$#$FZa-?%ahK>70({lDQYvULi`uJBg%rWnM<6t@A18TRDJ688J4Mjix zv~v+bLBMsEnGA4uOx(BfieN)sUiRGmJmdi2#Q1;##EGP?%w5_1OkH`_X#_jW`%<>`7~|sS+5D#Ik4?Yw^5aEeIrHALHe#QZVB;11mja(OTI9SQN<$s=g z&_GiQc&a5x=mdzJcp?Mfqw&xM1&!;oQsXS+1BpONxoIUk!r1B^F#PR1&kiwrWy`-N z$Zz4I^<#{j(`R2ZX8bHPb^g1O%XlYI8|Y&5y#ucPo}!g`mcqC%}DC&0J~{ z-4w%%ZW>cw9a_%4AO&<#LNOk+NFVh5 zcE6ygmREAk!tN2{Pa84u`scq&4FQ4Q+yDY)ZRe)xW?~0{ej}(wmXVw{(Hy=YDGvjc~kQ!k7A=nUX*t(hZuD`uZpQLgf}Qrqx`$_zh89->5H{iVOo<-_0-ya;n) zmMF6^**{1Xca9i(!q}dvCwMUqP_QyPPa_~bwJIS1&Vp%#O-4kdo%%JL>)fJbuJH}= zyOwYb|*we6gH6D_l{ga~q&w z)G`U{*RbryYxx^8@~Ak-0wR`I7q3{ZXmidSC00P4-`v0CUbRpqsB6-#9AhkaZJg$L zC2O(H+3^yo%B~ zt=!9%Nb)TeFuQFjk68N(Ck>zlti>=zdvv~ zf6OYIHo3xRyLi?;-4y%~Er&|>m7ea%;bp&6;pOhh?Hn+=N|Bx>Gk|bAtR)*SlXbx` zZP>($6jab#K*7j=ap0{A_;Q0@E_b$O;dx&m8POcb$1iVi}Zctw%GT(_loX< zMkOY$e=n#Bvmkq;H?%I{tVu_lRt${gb%m3R*H&7Ja-w7CrY#v;^mpfKl22~{aYi8! zN}X_}GD)Gsu_|iW(#b1OHfgPo=E9#i0nw|Lh^)&cPzW4g{p-Y=7ppgeO!F>2Wl@k3 zH3ym;eVtMa%UNBL{j3!=*zQ0yo&oAepCGWpw-HZZA3+SX45uJ8Ko3BjFr9^FE}&Wt zntrZ#j!01!lXHpG)o@qd97;Z^~E>1RqmKZ3v> z=h-HhLZ(;)V&yq6Pqd3@bAAK_A`gi$0gZS#!%u-7im{&PfRnTyuR%F8Y&_X8sYP4l zNqh!NLb;ifT0#6k`3Rq;Mge!WhSpv$Y=)Vi**HOO@X%y0sX(tcmsw4(F_s_xKOWR!~kz?)F-HStU%1%%m$0-`py>?uJ2zDjG6|nAvtl` z3Wc_`*VE`gLVL|<3@R|1@C@ZhVBz5rfKxqymNoG&dDl6LP2gWQr$9E!vq2#7 zYFT(ZvQN(X0|3p5%`1!CkIJq_S{EDQrgn2)X=-`QB}QbC({DTSdGcR2*B*l6A5h^GGP9pHPQ%OnzQZ>Skp4y4Q&Q;i&D88K)HL%nrXh z*&3_e*-1HcEhX6Q+7i%!X43xM{)$5noWMV70&lUXylTAK*3XJ7LLTqFW1B*1W=Zw=8j^mBw7FJr1O6CQ}`!Y2czss zp_wl8-f2_mI-IWI3TlWt%>Xk=vC~@tE=Bt!LzQ0zvBeI2h9}tTg5;Ho?UJl{08uym z;~6aXpn{Xu{;@TfPZ}-%xZVlb?%*3#2ZU$F)K=wK$#P`{GylwFf^5K%Oy@@s(aKi!IZ~Zi0<^kkh&pyY6a%$C;iD>`~t?6H>0C)Y?rsy3|ck}daj;Hx|JN2 zbylRWbIh3>v^qO(u{hE=XT%d!L?-D~b|SI`?*oQV=rGFf(2%KOcs+xe5;BpQ#iJy( zrXhoS{@o96-<@TyzscgwPbtvjkq4ebZ)2$Q;*?>&!`zpSZQ-YZLWbBSI`PEFn{066 z=X|hM6&h6TZb`!u3B@SNvB_x!*m*vXT99HsIT>N`=A3X`Tt5+kc(KJ1G$GDO#^=sI zr?l#P#+BWK+*?DR&(s{RW+L5j{EoiomOXf9q_7NfVn3G&_@yUSe>;zxfne2^28$zu^6^W@5@%GGF z0dP~Vs7H$jcw#~O^8G)_P38X5yZw1&lngiXL5RB8K#Zi zW!3Tk4{^pR)_FidLK>06(e}y3ZgUKBp)Cg9w*BU$^oSPWz=?HIFAa}aF}X!(VL~rP z?r`b;K#yXUr{6c@Kv3=}1&&Y4F~bycFkx@3H}f936$z5;bqy21ZE>Exz@R7Bcltvj z8#tCz-Bf(11eS^mf)_}$oM612#>6jR0;-F!`DNYVa9y2&rY_ho!c-h2#Ly7qmyTI@ zby$+|Y$p)^j5P9`p061}IQ)i13vG*h2|lV2R&rR}3!3(k!eBew(T;H|j=MkF5MM5r zrb&8Y?jZ8#km4sn?(9{>_4m@FF3;ll!ka_P{sL%2|J8_i`=ltDd_^Z!ci{l6kpMEQ zVE5cr(5A|v{N2x-&6G-`@%XfHjg0`5Xw;`usBXl#v-U8JEY=kpvQrVP9?jkLo-+8M zaiQw>$Z8qg`yp&?Ey^)zx8d+UQhbV{l;5F4ihJvrrVF@}?fc=;uhAQuHptBVg?+#? z-Eqw4eprWHPh4N!yGcN(lUVV+2CxjYez^x&K$5CDEvb}49Eoq#aT8^agwoXUj)Y*0 zsLlUgU4ateT7TQ&?i`9xd$3`jseb^#XImK$Vgt%@Gz~g8G$Dg8!5Y;Ynve)681y6U zWy8^*i&aQJJl0r{qdYbkdvf{lQ|_9J>q)zs#{OU@DcvuAF|U&yPluAHix15z?oSxZ zU`NOu4uR^99^{yUiKj%Bdh!cC28h@4=kHch_?36aA!3@E5zlnMgy)NOe5dX7I}}Mt zyyJUKF(q+jL5>`1No`OBJk5K!_d1=I!X@rJfq^8Ukd6mT*L=`r25maX!Kops8}=Mi z&k~1nWKPEO1NCNz5BV!1)YtFt&W-;6&Rs^3muVH0IxW9WycoTH@s#tMFSUB=sWzsM z)250QJ)p&06@cZvS+y|R;0Wx#jEtXyz&$4cdgnx!BeEVHU{go$mFx_(9<~5ZakF|H z_p8E3i+{iG_9Y z$leoJs(($UpWzT|CR6u=2Y}XlFw*NneC9sjF+?CswIOCE$@rd4(mp1Rz`>khsi9mi z`YN0 zna1_8_4Na__=%sAr4hz?#;u*-wgZi?qT`irytuCXh&+SHS`Z>rZjL>icS}@aH>bKK zcLM%MHzUHs$du_rz{g^*Itl#<>Cu_-c}=>c^tllhyAg;4RHt0Yb>4e#~)E*b+;??8XgwO&w=?|^o{eIgCl0MIO|EA?vG-(+)v`7eW- z7gI}_@rlro8^-k5S3}u6wr>f54KB$I2y?4zN#8h8DiPa~RZG^IkY0L`XxW;}dJLwy zC@S^Pl|%w@`moxr$CfA+yPrex=;eF9PqY_y zTt_f=;|?Anzb&$j>;Yw2)<;w##j=KsCpIfudQUj6yj=cf45){9Ac^hMha;0%tm8E# z^=Owgg+N%=VB%_wdK}vjkEnaxE?)qzI)9ytL;O`bahTdnC|8CB)|6rw_ol~2S zmnBVqg+Kfxt<7pY%bB|rlR8%zxJh7QjXR!CQ)bfNx!(l@yvw~0FdA=u`$ zPKl++sK=EVOT`aWQ?mpC>=Xv4DXio?;;ITPCS0=SEwgB zAS}$b=RL`Y2C&gcgwgYx-ghj*I#3%Oe@5w%Fqj!~9VU(!#jJ*>Brn8sR>|n+$t%i) zFXIva5j5=8$y5K3;Q8{CX# ziguyu{7ZBa{}sR6q8!Oq)G2Y*h4+-+uSPd-!kpFMAM0oNKfAbHnJ8z!<7Qc=t8)GB zX;0EU$JwmYX5jZA>qYVi%eq!X-=S}IJIY9Mk*&*4KeolZ%%q^j{*)*^6g&@(g2&oe zRAhWVry0Pw3{Gk(JSib44 zsb#C+AT*VH^p)uDKn?AHJgC@j>#t5P-vB%f-H7`;)%czna)aNGQ<HmpY&37766aiR-SCBR0K~U=Nmy~(&pMS#;y+L~=a55LZ&$k~+ zb!2JGXj~BB`0`feqd8+LEYWW9h7y=>B8ly;q`cs-h`Rq zh1gP@9ettB?>Bv)w7kpfYLJeM5Aku0E;45;H6vSn@z%J9Z?9zOF<&eD+#hlaFuA!h z+lZV|C9FKE2_wsb?@_s{m(4bLmPy_gQ2yU|BlP(;D#2)J7&Fo5TSeiIA-ZL+zI^7V zZoj0xON4>5mW?Y^L@>W1xYXDlEPT0fw2eOM`Trp8jyR6%h6~@j+Q|V@LNPJT)4z6? zxngfWgN>SsxqNTXdS_4qp7BjHt-rhTS?^>f(EaWx)wq3w(}P;UyHa2oR3_ zz2V0z#fU$kha37+-6bM^i#)Lq47q_|p$Pzd1C^M)N^^&G6CUu^X4t&5B30SVwua{c zF4W|C%jdUht)lrp*j2nv88@cw#9}ppI}x45GN`x`O}0QQq0eJRL{n_^dvHD|CUtj` z6(AfBDi9LN-fLPPqkO+ev$r0tcz$vdg#&b)0ITs8vJuUbohM{n|AO81^-Uw_?Kwn; z$RjGi-{Kc&-s-)<*nM{MaE%YUe@rR@T$}!L*$U)E9k`=6myAfC%ADG`K+J{<5a~O5 zG?!z8+i9!6`(9v^gq8s#puO zTcJDO9hWY|u(3Fo6V(AtcxR~70%Ulv+x&UOx~;&iH)BAF^_K%;S$QQ@Oo(>C0$twY z^N{)y(8ajcsYEwkQJ9=?FI;_yRRbQQ_LY3MOIm`|CjhM;Z>lLH)Gj4fnLUB2?YVJ9 zun7u4vfsB*Ef4{fsft5)0KK+W1VB>VL=l*NY>DH2Hg%z(C(fXc4KK>nXZvGy0n^=QuBMgEY`mkaL`%N;%m7b?y_Q&4kWre>kSP40X75M zrXPIDKpLA)J0%J zJ78dKI33%$IczvWPU$nQ4b4ZIsQ$gziX?|ug*T!%urri5gRVVTw8MTa$O&L=M_l{M z^lkeOY6-l=q!OBd-=dEJ$KbYj<~{Um1YbOR!(AGDp<4%4Zt`rSH?@DFS4SqJ?;K5? z&SevoBDR4v=FGKFLT~)G+wx`#5ZdrZtqy=uZveUf9^hAWevq<8p;Bkt@~yDXizyX2 z|DpZ4YfLO0>DnKXh$oxbu1dzl6vRk;XY9Ljjl(;mIaeLR8m*@Xzi@c~o-Q#S83T)Y z&u-=Y{VAisbx0UJgZ}a$DSx9zq7|_+z813a>aJjnE#LC?#-Zg@?FOxXRj0+oF81VM zakvkaE37`{VgK&7*qvSM*Yitg6w(fXD?>hd{^`$l51DHzg`^q2$>-aM*mOlK%}S5C zw{9sLYSD zvL$E=J#F?O`w!W^i>8sFHK!|8RSSdMlLnUNi?Dqe)EXv3nJ>D^I<1r4aAT>p)X3Ld?3X@dRD_8;8o3yk^IYgx<5Gd$gRNJA=Ti7o z+zZ2C;`dAt_x=QBVAOIj#i6wei5q*sY>H$-{zM+F@~r`XA$Lu8b6D)`20@dF>yEUmDKU9LzOK*UDEhF|KkT`$WT%P_6Uy+3&?@MqAjAk3WQ;_ z<}A-IGB%!8W2gLLfl~a9kgGw|H;-E6kIn_aR3G@LKaAYvlHhD^c_Hh=NBh8t?{bae zOh?mbVmRv1z<4ezLLuG%EruN1;-bo<@I9$9&o0nKD3Z`XAy0XAhEF>nz^=;Z>^wdx+`B*S|k} zbrl_o?L8g_t$FK^1hR5Z zHEr{rc2xB0=!nAZuH+gWRy(%XhFlw{K{6$lxhwS|^{A~iJU@c3LHCjf={HHr2yw0~ zh{AiOjsBk|=-QZ{JI#m;sSdwi1FAS9G5(dr^}W_LL25HHL$`H>Z)pr!i{0_3>QI}h zt^_k|FEuqx8LKoqPZ@vFy83N7OHo}B87#L@d~An z!lx+a!~qVACxv*vlOOY^n`+j((7sgN!v)e(y2e6yrfH7K0%_j+OTVHf%O2lsX(L(l z8bWW(RiL>ejQ(v*E%I<@Yya-?vVqf_=#R%-Fu$)#jw5)Yx4-IHJ_w_nqo*%*DYqCf z_-I2o%eHR8DnIZx!a(9cEzD3Ev}#4!P=*{Fovj~5t{?elCU|k3IH4C&(Xg_? zWM}$>FpMBBEUBOPd@+GtjmAVZ+@y9X20r^o{uNNL5qprpoi zY^|IyW(2)3_jK;1lt5~D^;;taFXbW0v;|5C&mkAft@T_;W}8p6%o#ucJItu}a0lnhV{xP68bHp4u7O|E8g6F(Frc`7p|-o$`5s|HSe6 z`_t=7txfwEUBoCGo=D-TmDqs${^Bq0xo6Thgw0|~z$-R?vY*lfWHL^Q%Y@#eMRCQ4 zP&`^191X#mk%jOZQL=lSjpl|$Sz3{%{4QDMX<89Bg`njO>58J4HeTzcO;yTwrSP|% zHds%Lit~mpokFSP`D;AqaamuwS5*#X2?J7)paY(|-t?Q8%aQCYA;8k)-m@9$kAtv*4 zZH#(<^Y7gTjy(O}as4pwh&>E!f4C13{?K4|yAcbcox0u)&+fX&$}lFY{)3T)D(L;- zQnd9p>c^aE$n)+8R04dPl`(#LXaP_A_Q&}#@S=;JKAayBRFOgmQ9_nu$K3f) z9n}0GSLL6mRaH!ENJs(NiSCp-iF_DDo@70vj6h#CRQfR8QvwY*dPBN8vw5hiw6t?r zNKVf$>FT4HsIHA-sD>0S^vl}H=8ldh{V|*Edwb;$e`Ac3T0Qjd!v6dtMLlAwC4cb= z`#sV2ip%npu}7872M7KxBvG#}w>I9yzm15u6z_*4FeuZ9H#Y@kA$|%m0#=m>u zHnr6lL=|V8`2D9=zv@k4EJL)qiEYnmIGFuOyt5A(hqEV*HX|Tp5gpQ}297+y34|zv z$VFl`kTv-Zjd#aPI9RPB)GdtP{T#enBqw?tIU{AXP8j?>d9-tfP1FybsKc16{Yw_p zY$rL~vb8?Gn=bjoJ?s=l`CehXgFH|ZXAll6+N?KhiG@OCC0dxNgMVC}UD zc!NleAJeG+rRHUJ;Y$_9x64mNFf0e@XxEPG-KQ3)_{J=wo)%a}dwf)uGX8OL3s+z8 zC*k%As!*0n%p86rd%HAYw=(tKt#c~3Z%Jmo<`Q6-=m;pk8{J=T!C*pF#;8dWn&8S&eXs{>C!NSWVU zx3wW(-+66re#fH5<5ns!dV6oYJ=@I`{zvoQm8_r}3Uu8chc`?lCTza;jZLK5RyN|G zK9q3Ev0;6W!TehNiZ!2x?e(tKnoC*iG;b_);;RguhCSuaG~c%ntqv5E`8zE4EW@Xeb%_N%$s$8P(lWz zJl2_ApC-?A2eEP~dw&1w-l3pZ3V+9o7vp+isyBwXWNiJfd!qEc!|7*Tbq;aM)rRlA zSNbYb8^hcC*1p}GII`t`o`ZC=x;cimu@#@aVD?ffaqNa*$_4N&C?ud*^zrUq{gkupFrTQr`#5 zXW{JI@(Uj$oG*#G{;a7y*s%41fyu zS@?8lL8l6>8cs8qCgUAOLEpW0+^I;zE&%9Ae!KTtB88sAokc&-wlPHsAzNx*-6-}MWp$tHoH=>wDmr-d#%YiH!?ok`{R;Y3k3IC+ zBAs&Q-)++4FNwNQ@qllv;@IRf&JuaV8Y;WXJQZFZC4XQY0g0?oBmQ(CTJ)=y={8u1 ogl*1Z51xd&(jJfhfcnvhCi2da=*%xD9t3>!wQp+GXgEdv57i$yp#T5? literal 0 HcmV?d00001 diff --git a/go.mod b/go.mod index 2243767..cf7924b 100644 --- a/go.mod +++ b/go.mod @@ -5,21 +5,36 @@ go 1.25.0 require ( github.com/alecthomas/kingpin/v2 v2.4.0 github.com/creasty/defaults v1.8.0 + github.com/gorilla/mux v1.8.1 + github.com/gorilla/websocket v1.5.3 github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 github.com/pkg/errors v0.9.1 + github.com/samber/lo v1.52.0 + github.com/sourcegraph/conc v0.3.0 google.golang.org/grpc v1.76.0 google.golang.org/protobuf v1.36.6 gopkg.in/yaml.v3 v3.0.1 ) require ( + atomicgo.dev/cursor v0.2.0 // indirect + atomicgo.dev/keyboard v0.2.9 // indirect + atomicgo.dev/schedule v0.1.0 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect - github.com/gorilla/mux v1.8.1 // indirect - github.com/rs/cors v1.11.1 // indirect - github.com/samber/lo v1.52.0 // indirect + github.com/containerd/console v1.0.5 // indirect + github.com/gookit/color v1.5.4 // indirect + github.com/hashicorp/errwrap v1.0.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/lithammer/fuzzysearch v1.1.8 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/pterm/pterm v0.12.82 // indirect + github.com/rivo/uniseg v0.4.7 // indirect github.com/xhit/go-str2duration/v2 v2.1.0 // indirect + github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect golang.org/x/net v0.42.0 // indirect golang.org/x/sys v0.34.0 // indirect + golang.org/x/term v0.33.0 // indirect golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b // indirect + gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect ) diff --git a/go.sum b/go.sum index bd493b3..c797824 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,30 @@ +atomicgo.dev/cursor v0.2.0 h1:H6XN5alUJ52FZZUkI7AlJbUc1aW38GWZalpYRPpoPOw= +atomicgo.dev/cursor v0.2.0/go.mod h1:Lr4ZJB3U7DfPPOkbH7/6TOtJ4vFGHlgj1nc+n900IpU= +atomicgo.dev/keyboard v0.2.9 h1:tOsIid3nlPLZ3lwgG8KZMp/SFmr7P0ssEN5JUsm78K8= +atomicgo.dev/keyboard v0.2.9/go.mod h1:BC4w9g00XkxH/f1HXhW2sXmJFOCWbKn9xrOunSFtExQ= +atomicgo.dev/schedule v0.1.0 h1:nTthAbhZS5YZmgYbb2+DH8uQIZcTlIrd4eYr3UQxEjs= +atomicgo.dev/schedule v0.1.0/go.mod h1:xeUa3oAkiuHYh8bKiQBRojqAMq3PXXbJujjb0hw8pEU= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/MarvinJWendt/testza v0.1.0/go.mod h1:7AxNvlfeHP7Z/hDQ5JtE3OKYT3XFUeLCDE2DQninSqs= +github.com/MarvinJWendt/testza v0.2.1/go.mod h1:God7bhG8n6uQxwdScay+gjm9/LnO4D3kkcZX4hv9Rp8= +github.com/MarvinJWendt/testza v0.2.8/go.mod h1:nwIcjmr0Zz+Rcwfh3/4UhBp7ePKVhuBExvZqnKYWlII= +github.com/MarvinJWendt/testza v0.2.10/go.mod h1:pd+VWsoGUiFtq+hRKSU1Bktnn+DMCSrDrXDpX2bG66k= +github.com/MarvinJWendt/testza v0.2.12/go.mod h1:JOIegYyV7rX+7VZ9r77L/eH6CfJHHzXjB69adAhzZkI= +github.com/MarvinJWendt/testza v0.3.0/go.mod h1:eFcL4I0idjtIx8P9C6KkAuLgATNKpX4/2oUqKc6bF2c= +github.com/MarvinJWendt/testza v0.4.2/go.mod h1:mSdhXiKH8sg/gQehJ63bINcCKp7RtYewEjXsvsVUPbE= github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY= github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/atomicgo/cursor v0.0.1/go.mod h1:cBON2QmmrysudxNBFthvMtN32r3jxVRIvzkUiF/RuIk= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= +github.com/containerd/console v1.0.5 h1:R0ymNeydRqH2DmakFNdmjR2k0t7UPuiOV/N/27/qqsc= +github.com/containerd/console v1.0.5/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/creasty/defaults v1.8.0 h1:z27FJxCAa0JKt3utc0sCImAEb+spPucmKoOdLHvHYKk= github.com/creasty/defaults v1.8.0/go.mod h1:iGzKe6pbEHnpMPtfDXZEr0NVxWnPTjb1bbDy08fPzYM= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -37,18 +54,37 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQHCoQ= +github.com/gookit/color v1.5.0/go.mod h1:43aQb+Zerm/BWh2GnrgOQm7ffz7tvQXEKV6BFMl7wAo= +github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= +github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.0.10/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= +github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lithammer/fuzzysearch v1.1.8 h1:/HIuJnjHuXS8bKaiTMeeDlW2/AyIWk2brx1V8LFgLN4= +github.com/lithammer/fuzzysearch v1.1.8/go.mod h1:IdqeyBClc3FFqSzYq/MXESsS4S0FsZ5ajtkr5xPLts4= +github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -56,23 +92,43 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= -github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/pterm/pterm v0.12.27/go.mod h1:PhQ89w4i95rhgE+xedAoqous6K9X+r6aSOI2eFF7DZI= +github.com/pterm/pterm v0.12.29/go.mod h1:WI3qxgvoQFFGKGjGnJR849gU0TsEOvKn5Q8LlY1U7lg= +github.com/pterm/pterm v0.12.30/go.mod h1:MOqLIyMOgmTDz9yorcYbcw+HsgoZo3BQfg2wtl3HEFE= +github.com/pterm/pterm v0.12.31/go.mod h1:32ZAWZVXD7ZfG0s8qqHXePte42kdz8ECtRyEejaWgXU= +github.com/pterm/pterm v0.12.33/go.mod h1:x+h2uL+n7CP/rel9+bImHD5lF3nM9vJj80k9ybiiTTE= +github.com/pterm/pterm v0.12.36/go.mod h1:NjiL09hFhT/vWjQHSj1athJpx6H8cjpHXNAK5bUw8T8= +github.com/pterm/pterm v0.12.40/go.mod h1:ffwPLwlbXxP+rxT0GsgDTzS3y3rmpAO1NMjUkGTYf8s= +github.com/pterm/pterm v0.12.82 h1:+D9wYhCaeaK0FIQoZtqbNQuNpe2lB2tajKKsTd5paVQ= +github.com/pterm/pterm v0.12.82/go.mod h1:TyuyrPjnxfwP+ccJdBTeWHtd/e0ybQHkOS/TakajZCw= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/samber/lo v1.52.0 h1:Rvi+3BFHES3A8meP33VPAxiBZX/Aws5RxrschYGjomw= github.com/samber/lo v1.52.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= +github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= @@ -92,6 +148,7 @@ go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -99,6 +156,8 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -107,6 +166,9 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -115,16 +177,38 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= +golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -136,6 +220,8 @@ golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -159,9 +245,13 @@ google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94U google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/observer/cmd/observer/main.go b/observer/cmd/observer/main.go index 4206712..91aab38 100644 --- a/observer/cmd/observer/main.go +++ b/observer/cmd/observer/main.go @@ -3,12 +3,9 @@ package main import ( "context" "github.com/alecthomas/kingpin/v2" - "google.golang.org/grpc" - "google.golang.org/grpc/backoff" - "google.golang.org/grpc/credentials/insecure" + "load_testing/observer/internal/app" "load_testing/observer/internal/config" "load_testing/observer/internal/http" - "load_testing/worker/proto/gen" "log" "os" "os/signal" @@ -35,61 +32,24 @@ func main() { ctx, cancel := context.WithCancel(context.Background()) go shutdown(cancel) - go grpcStart(ctx, cfg.Workers) go func() { time.Sleep(time.Millisecond * 300) //utils.OpenBrowser(fmt.Sprintf("http://localhost:%d", cfg.Port)) }() - srv, err := http.NewHTTP(cfg.Port, cfg.Workers) - if err != nil { - log.Fatal(err) - } + srv := http.NewHTTP(cfg.Port) + observ := app.NewObserver(srv, cfg.Workers) + err = srv.InitRouts(observ) + check(err) - err = srv.Run(ctx) - if err != nil { - log.Fatal(err) - } + go observ.Run(ctx) + check(srv.Run(ctx)) } -func grpcStart(ctx context.Context, workers []config.WorkerConfig) { - params := grpc.ConnectParams{ - Backoff: backoff.Config{ - BaseDelay: 1 * time.Second, - Multiplier: 1.6, - MaxDelay: 10 * time.Second, - }, - MinConnectTimeout: 5 * time.Second, - } - - withTransport := grpc.WithTransportCredentials(insecure.NewCredentials()) - conn, err := grpc.NewClient(":63546", withTransport, grpc.WithConnectParams(params)) +func check(err error) { if err != nil { - log.Println(err) - return - } - defer conn.Close() - - client := gen.NewWorkerClient(conn) - - for { - stream, err := client.Health(context.Background(), &gen.Empty{}) - if err != nil { - log.Println(err) - time.Sleep(time.Second) - continue - } - - for { - msg, err := stream.Recv() - if err == nil { - log.Println(msg.Status) - } else { - log.Println("ERROR:", err) - break - } - } + log.Fatal(err) } } diff --git a/observer/config.yaml b/observer/config.yaml index bb3a2a5..e1559a2 100644 --- a/observer/config.yaml +++ b/observer/config.yaml @@ -1,5 +1,5 @@ -app_port: 8090 +app_port: 8091 workers: - - addr: "127.0.0.1:55555" + #- addr: "127.0.0.1:55555" - addr: "127.0.0.1:55556" - addr: "127.0.0.1:55557" diff --git a/observer/internal/app/model.go b/observer/internal/app/model.go new file mode 100644 index 0000000..4879f7a --- /dev/null +++ b/observer/internal/app/model.go @@ -0,0 +1 @@ +package app diff --git a/observer/internal/app/observer.go b/observer/internal/app/observer.go index 5d721f2..4f3cbcb 100644 --- a/observer/internal/app/observer.go +++ b/observer/internal/app/observer.go @@ -1,12 +1,100 @@ package app +import ( + "context" + "github.com/samber/lo" + "github.com/sourcegraph/conc" + "load_testing/observer/internal/config" + "load_testing/worker/proto/gen" + "log" +) + +type state string + +const ( + stateReady state = "ready" + stateRunning state = "running" + stateOffline state = "offline" + stateError state = "error" +) + +type WS interface { + WriteWSMessage(msg string) error +} + +type WorkerStatus struct { + workerID int + status gen.WorkerStatus +} + type observer struct { + workers []*Worker } -func NewObserver() *observer { - return &observer{} +func NewObserver(ws WS, workersConf []config.WorkerConfig) *observer { + workers := lo.Map(workersConf, func(item config.WorkerConfig, index int) *Worker { + return &Worker{ + Id: index + 1, + ParallelTests: 1, + Addr: item.Addr, + Status: stateOffline, + ws: ws, + } + }) + + return &observer{ + workers: workers, + } } -func (o *observer) Run() { +func (o *observer) Run(ctx context.Context) { + statusMap := map[gen.WorkerStatus]state{ + gen.WorkerStatus_STATE_READY: stateReady, + gen.WorkerStatus_STATE_RUNNING: stateRunning, + gen.WorkerStatus_STATE_ERROR: stateError, + } + log.Printf("observer starting. Workers - %d", len(o.workers)) + + chanStatus := make(chan WorkerStatus) + var wg conc.WaitGroup + + for _, worker := range o.workers { + wg.Go(func() { + worker.grpcStart(ctx, chanStatus) + }) + } + + go func() { + for state := range chanStatus { + for _, worker := range o.workers { + if worker.Id == state.workerID { + newState := stateOffline + if v, ok := statusMap[state.status]; ok { + newState = v + } + + worker.ChangeState(newState) + } + } + } + }() + + wg.Wait() + close(chanStatus) +} + +func (o *observer) Workers() []*Worker { + return o.workers +} + +func (o *observer) WorkerByID(id int) *Worker { + w, ok := lo.Find(o.workers, func(item *Worker) bool { + return item.Id == id + }) + if !ok { + return nil + } + + return w } diff --git a/observer/internal/app/worker.go b/observer/internal/app/worker.go new file mode 100644 index 0000000..b06b53d --- /dev/null +++ b/observer/internal/app/worker.go @@ -0,0 +1,126 @@ +package app + +import ( + "context" + "encoding/json" + "fmt" + "github.com/pkg/errors" + "google.golang.org/grpc" + "google.golang.org/grpc/backoff" + "google.golang.org/grpc/credentials/insecure" + "load_testing/worker/proto/gen" + "log" + "sync" + "time" +) + +type Worker struct { + Id int `json:"id"` + Addr string `json:"addr"` + Status state `json:"status"` + Script string `json:"script"` + ParallelTests int `json:"parallel_tests"` + ws WS `json:"-"` + client gen.WorkerClient `json:"-"` + mx sync.Mutex `json:"-"` +} + +func (w *Worker) ChangeState(newState state) { + w.mx.Lock() + defer w.mx.Unlock() + + w.Status = newState + + data, _ := json.Marshal(w) + if err := w.ws.WriteWSMessage(string(data)); err != nil { + log.Println("WriteWSMessage error:", err) + } +} + +func (w *Worker) Start(testCount int32) error { + w.mx.Lock() + + if w.Status != stateReady && w.Status != stateError { + w.mx.Unlock() + return fmt.Errorf("incorrect worker status. Current state is %s", w.Status) + } + w.mx.Unlock() + + w.ChangeState(stateRunning) + + go func() { + _, err := w.client.Start(context.Background(), &gen.StartResp{TestCount: testCount}) + if err != nil { + log.Println("start error", err) + } + }() + + return nil +} + +func (w *Worker) Stop() error { + _, err := w.client.Stop(context.Background(), &gen.Empty{}) + return err +} + +func (w *Worker) SetTestScript(script string) error { + w.Script = script + _, err := w.client.SetTestScript(context.Background(), &gen.SetTestScriptReq{Script: script}) + return err +} + +func (w *Worker) grpcStart(ctx context.Context, chanStatus chan<- WorkerStatus) { + params := grpc.ConnectParams{ + Backoff: backoff.Config{ + BaseDelay: 1 * time.Second, + Multiplier: 1.6, + MaxDelay: 10 * time.Second, + }, + MinConnectTimeout: 5 * time.Second, + } + + log.Printf("start GRPC worker %s", w.Addr) + + withTransport := grpc.WithTransportCredentials(insecure.NewCredentials()) + conn, err := grpc.NewClient(w.Addr, withTransport, grpc.WithConnectParams(params)) + if err != nil { + log.Println(errors.Wrap(err, "grpc newClient").Error()) + return + } + defer conn.Close() + + w.client = gen.NewWorkerClient(conn) + w.grpcKeepalive(ctx, w.client, chanStatus) +} + +func (w *Worker) grpcKeepalive(ctx context.Context, client gen.WorkerClient, chanStatus chan<- WorkerStatus) { + for { + stream, err := client.ObserverChangeState(ctx, &gen.Empty{}) + if err != nil { + log.Println("GRPC error:", err) + } else { + chanStatus <- WorkerStatus{workerID: w.Id, status: gen.WorkerStatus_STATE_READY} + w.readStream(stream, w.Id, chanStatus) + } + + chanStatus <- WorkerStatus{workerID: w.Id, status: -1} + select { + case <-ctx.Done(): + log.Println("GRPC: Context done") + return + case <-time.After(time.Second * 3): + } + } +} + +func (w *Worker) readStream(stream grpc.ServerStreamingClient[gen.StatusInfo], workerId int, chanStatus chan<- WorkerStatus) { + for { + msg, err := stream.Recv() + if err == nil { + chanStatus <- WorkerStatus{workerID: workerId, status: msg.Status} + } else { + log.Println("stream ERROR:", err) + break + } + } +} diff --git a/observer/internal/http/handler.go b/observer/internal/http/handler.go index b8a5dd4..e89f976 100644 --- a/observer/internal/http/handler.go +++ b/observer/internal/http/handler.go @@ -1,44 +1,114 @@ package http import ( + "context" "encoding/json" - "github.com/samber/lo" + "fmt" + "github.com/gorilla/mux" + "github.com/pkg/errors" "html/template" + "io" "load_testing/observer" - "load_testing/observer/internal/config" "net/http" + "strconv" ) -func (h *HttpSrv) workers(w http.ResponseWriter, r *http.Request) { - workers := lo.Map(h.workersConf, func(item config.WorkerConfig, index int) WorkerDTO { - return WorkerDTO{ - Id: index + 1, - Addr: item.Addr, - Status: "ready", - Online: true, +func (h *HttpSrv) workers(workers IObserver) func(w http.ResponseWriter, r *http.Request) { + return func(w http.ResponseWriter, r *http.Request) { + data, err := json.Marshal(workers.Workers()) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return } - }) - data, err := json.Marshal(workers) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - _, _ = w.Write(data) + _, _ = w.Write(data) + } +} + +func (h *HttpSrv) workerStart(workers IObserver) func(w http.ResponseWriter, r *http.Request) { + return func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + idStr := vars["id"] + testCountStr := r.URL.Query().Get("testCount") + id, _ := strconv.Atoi(idStr) + testCount, _ := strconv.Atoi(testCountStr) + + if worker := workers.WorkerByID(id); worker != nil { + if err := worker.Start(int32(max(testCount, 1))); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + } else { + http.Error(w, fmt.Sprintf("worker not found by ID: %s", idStr), http.StatusInternalServerError) + } + } +} + +func (h *HttpSrv) workerStop(workers IObserver) func(w http.ResponseWriter, r *http.Request) { + return func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + idStr := vars["id"] + id, _ := strconv.Atoi(vars["id"]) + + if worker := workers.WorkerByID(id); worker != nil { + if err := worker.Stop(); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + } else { + http.Error(w, fmt.Sprintf("worker not found by ID: %s", idStr), http.StatusInternalServerError) + } + } } func (h *HttpSrv) openWS(w http.ResponseWriter, r *http.Request) { + h.mx.Lock() + defer h.mx.Unlock() -} - -func (h *HttpSrv) index(w http.ResponseWriter, r *http.Request) { - data := map[string]any{ - "Workers": h.workersConf, + if h.ws != nil && !h.ws.closed.Load() { + return } - tmpl := template.Must(template.ParseFS(observer.StaticFS, "static/templates/index.html")) - - if err := tmpl.Execute(w, data); err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) + h.ws = NewWSServer(context.Background()) + err := h.ws.Upgrade(w, r, nil) + if err != nil { + http.Error(w, errors.Wrap(err, "ws open").Error(), http.StatusInternalServerError) + return + } +} + +func (h *HttpSrv) index(workers IObserver) func(w http.ResponseWriter, r *http.Request) { + return func(w http.ResponseWriter, r *http.Request) { + data := map[string]any{ + "Workers": workers.Workers(), + } + + tmpl := template.Must(template.ParseFS(observer.StaticFS, "static/templates/index.html")) + + if err := tmpl.Execute(w, data); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + } +} + +func (h *HttpSrv) setScript(workers IObserver) func(w http.ResponseWriter, r *http.Request) { + return func(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodPost { + http.Error(w, "method not allowed", http.StatusInternalServerError) + return + } + + data, _ := io.ReadAll(r.Body) + defer r.Body.Close() + + vars := mux.Vars(r) + idStr := vars["id"] + id, _ := strconv.Atoi(idStr) + + if worker := workers.WorkerByID(id); worker != nil { + if err := worker.SetTestScript(string(data)); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + } else { + http.Error(w, fmt.Sprintf("worker not found by ID: %s", idStr), http.StatusInternalServerError) + } } } diff --git a/observer/internal/http/middlewares.go b/observer/internal/http/middlewares.go index 39841db..bfd47e9 100644 --- a/observer/internal/http/middlewares.go +++ b/observer/internal/http/middlewares.go @@ -32,6 +32,11 @@ func loggingMiddleware(logger *slog.Logger) func(next http.Handler) http.Handler return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.URL.String() == "/api/v1/ws" { // исключение для ws + next.ServeHTTP(w, r) + return + } + start := time.Now() logger.DebugContext(r.Context(), fmt.Sprintf("HTTP request started (method: %s, url: %s)", r.Method, r.URL.String())) @@ -61,3 +66,17 @@ func (lw *loggingResponseWriter) WriteHeader(statusCode int) { lw.status = statusCode lw.ResponseWriter.WriteHeader(statusCode) } + +func sendWorkersStatus(workers IObserver) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + next.ServeHTTP(w, r) + + // после первого подключения ws отправляем статус по workers + for _, worker := range workers.Workers() { + worker.ChangeState(worker.Status) + } + }) + } +} diff --git a/observer/internal/http/srv.go b/observer/internal/http/srv.go index d6c2be7..d2fd9be 100644 --- a/observer/internal/http/srv.go +++ b/observer/internal/http/srv.go @@ -7,53 +7,64 @@ import ( "github.com/pkg/errors" "io/fs" "load_testing/observer" - "load_testing/observer/internal/config" + "load_testing/observer/internal/app" "log" "log/slog" "net/http" + "sync" "time" ) -type HttpSrv struct { - port int - workersConf []config.WorkerConfig - logger *slog.Logger - httpServ *http.Server +type IObserver interface { + Workers() []*app.Worker + WorkerByID(id int) *app.Worker } -func NewHTTP(port int, workers []config.WorkerConfig) (*HttpSrv, error) { - mux := mux.NewRouter() +type HttpSrv struct { + port int + logger *slog.Logger + httpServ *http.Server + ws *WSServer + mx sync.Mutex + router *mux.Router +} + +func NewHTTP(port int) *HttpSrv { + router := mux.NewRouter() resp := &HttpSrv{ - port: port, - workersConf: workers, - logger: slog.Default(), + port: port, + router: router, + logger: slog.Default(), httpServ: &http.Server{ Addr: fmt.Sprintf(":%d", port), - Handler: mux, + Handler: router, ReadHeaderTimeout: 2 * time.Second, }, } - return resp, resp.initRouts(mux) + return resp } -func (h *HttpSrv) initRouts(mux *mux.Router) error { +func (h *HttpSrv) InitRouts(workers IObserver) error { staticFS, err := fs.Sub(observer.StaticFS, "static") if err != nil { return err } - mux.Use(loggingMiddleware(h.logger)) - mux.Use(enableCORS) + h.router.Use(loggingMiddleware(h.logger)) + h.router.Use(enableCORS) // Отдаём статику (CSS/JS) - mux.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.FS(staticFS)))) - mux.HandleFunc("/", h.index) + h.router.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.FS(staticFS)))) + h.router.HandleFunc("/", h.index(workers)) - v1 := mux.PathPrefix("/api/v1").Subrouter() - v1.HandleFunc("/workers", h.workers) - v1.HandleFunc("/ws", h.openWS) + v1 := h.router.PathPrefix("/api/v1").Subrouter() + v1.HandleFunc("/workers", h.workers(workers)) + v1.HandleFunc("/workers/{id}/start", h.workerStart(workers)) + v1.HandleFunc("/workers/{id}/stop", h.workerStop(workers)) + v1.HandleFunc("/workers/{id}/set_script", h.setScript(workers)) + v1.Handle("/ws", sendWorkersStatus(workers)(http.HandlerFunc(h.openWS))) return nil } @@ -67,10 +78,17 @@ func (h *HttpSrv) Run(ctx context.Context) error { h.httpServ.Shutdown(sdCtx) }() - log.Printf("observer starting on port %d. Workers - %d", h.port, len(h.workersConf)) + log.Printf("http starting on port %d", h.port) if err := h.httpServ.ListenAndServe(); !errors.Is(err, http.ErrServerClosed) { return err } return nil } + +func (h *HttpSrv) WriteWSMessage(msg string) error { + if h.ws != nil && !h.ws.closed.Load() { + return h.ws.WriteMsg(msg) + } + return nil +} diff --git a/observer/internal/http/websocketServer.go b/observer/internal/http/websocketServer.go new file mode 100644 index 0000000..6cc04d9 --- /dev/null +++ b/observer/internal/http/websocketServer.go @@ -0,0 +1,144 @@ +package http + +import ( + "context" + "log" + "net/http" + "sync" + "sync/atomic" + "time" + + "github.com/gorilla/websocket" + "github.com/pkg/errors" +) + +type WSServer struct { + upgrader *websocket.Upgrader + conn *websocket.Conn + ctx context.Context + close context.CancelFunc + fail atomic.Int32 + lastMsg time.Time + mx sync.RWMutex + writeMx sync.Mutex + closed atomic.Bool +} + +const ( + failCount = 2 +) + +func NewWSServer(pctx context.Context) *WSServer { + upgrader := &websocket.Upgrader{ + CheckOrigin: func(r *http.Request) bool { + return true + }, + } + + log.Println("WS: new ws conn") + + ctx, cancel := context.WithCancel(pctx) + srv := &WSServer{ + upgrader: upgrader, + ctx: ctx, + close: cancel, + } + + return srv +} + +func (ws *WSServer) Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header) error { + var err error + + ws.conn, err = ws.upgrader.Upgrade(w, r, responseHeader) + if err == nil { + go ws.readMsg() + } + + return err +} + +func (ws *WSServer) Close() { + if ws.closed.CompareAndSwap(false, true) { + ws.conn.Close() + ws.close() + } +} + +func (ws *WSServer) readMsg() { + msgChan := make(chan struct{}) + defer close(msgChan) + + // контроль сообщений + go func(msg <-chan struct{}) { + for { + select { + case <-ws.ctx.Done(): + log.Println("WS: context done") + ws.Close() + return + case <-time.Tick(time.Second * 10): + // если не получаем сообщения 10 секунд, закрываем конект (фронт переоткроет). Пинги должны приходить раз в 5 сек. + + ws.mx.RLock() + if time.Since(ws.lastMsg).Seconds() >= 10 { + if count := ws.fail.Add(1); count >= failCount { + log.Println("WS: forcibly closing the ws connection") + ws.Close() + } + } + ws.mx.RUnlock() + case <-msg: + ws.mx.Lock() + ws.lastMsg = time.Now() + ws.mx.Unlock() + } + } + }(msgChan) + + for { + select { + case <-ws.ctx.Done(): + log.Println("WS: context done") + return + default: + } + + msgType, _, err := ws.conn.ReadMessage() + if err != nil { + log.Println(errors.Wrap(err, "ws read error")) + ws.Close() + break + } + + if msgType == -1 { // разрыв сокета + ws.Close() + log.Println("websocket closed") + break + } + + msgChan <- struct{}{} + } + +} + +func (ws *WSServer) WriteMsg(data string) error { + ws.writeMx.Lock() + defer ws.writeMx.Unlock() + + if ws.conn == nil { + return errors.New("ws connection not initialized") + } + + err := ws.conn.WriteMessage(websocket.TextMessage, []byte(data)) + return err +} + +func (ws *WSServer) WriteByteMsg(data []byte) error { + if ws.conn == nil { + return errors.New("ws connection not initialized") + } + + err := ws.conn.WriteMessage(websocket.BinaryMessage, data) + return err +} diff --git a/observer/static/app.js b/observer/static/app.js index e802849..8c05732 100644 --- a/observer/static/app.js +++ b/observer/static/app.js @@ -3,41 +3,42 @@ let workers = []; let testRunning = false; let testStartTime = null; let timerInterval = null; -let back_api = "http://localhost:8090/api/v1" +let back_api = "http://localhost:8091/api/v1" // Initialize the application function init() { + const ws = openWSConn([]); + getWorkers(() => { - renderWorkers(); + renderWorkers(ws); populateWorkerSelects(); setupEventListeners(); - updateGlobalMetrics(); - updateGlobalStatus(); - updateTotalCapacity(); }); } // Render worker cards -function renderWorkers() { +function renderWorkers(ws) { const workersGrid = document.getElementById('workersGrid'); workersGrid.innerHTML = ''; workers.forEach(worker => { - const card = createWorkerCard(worker); + const card = createWorkerCard(worker, ws); workersGrid.appendChild(card); + + updateWorkerStatus(worker) + updateButton(worker) + updateLastHeartbeat(worker) }); } // Create a worker card element -function createWorkerCard(worker) { +function createWorkerCard(worker, ws) { const card = document.createElement('div'); card.className = `worker-card status-${worker.status}`; card.dataset.workerId = worker.id; - const statusText = worker?.status?.charAt(0).toUpperCase() + worker?.status?.slice(1); const isRunning = worker?.status === 'running'; const parallelValueClass = worker?.parallel_tests > 500 ? 'parallel-value warning' : 'parallel-value'; - const progressPercent = isRunning && worker?.parallel_tests > 0 ? (worker?.active_parallel / worker?.parallel_tests * 100) : 0; card.innerHTML = `

-
+
- ${statusText} + ${worker.status}
Last Heartbeat: - ${worker.last_heartbeat} +
@@ -68,18 +69,18 @@ function createWorkerCard(worker) { Parallel Tests ${isRunning ? ` -
- - - - - Stop worker to adjust settings -
+ + + + + + + ` : ''}
- -
${worker.parallel_tests}
- + +
${worker.parallel_tests}
+
${worker.parallel_tests > 500 ? `
@@ -91,47 +92,22 @@ function createWorkerCard(worker) { High load warning
` : ''} - ${isRunning ? ` -
-
- Active Virtual Users - ${worker.active_parallel}/${worker.parallel_tests} -
-
-
-
-
- ` : ''} -
-
-
Req/s
-
${worker?.metrics?.requests_per_sec}
-
-
-
Avg RT
-
${worker?.metrics?.avg_response_time}ms
-
-
-
Errors
-
${worker?.metrics?.error_rate}%
-
-
- - -
`; + // подписываемся на сообщение в ws по текущему воркеру + if (ws !== undefined) { + ws((m) => { + if (m?.id === worker.id) { + updateWorkerStatus(m) + updateButton(m) + updateLastHeartbeat(m) + } + }) + } + return card; } +function updateLastHeartbeat(worker) { + const now = new Date(); + const pad = n => n.toString().padStart(2, '0'); + + const lastHeartbeat = document.getElementById(`last_heartbeat-${worker.id}`); + if (lastHeartbeat) { + lastHeartbeat.textContent = `${pad(now.getDate())}-${pad(now.getMonth())}-${now.getFullYear()} ${pad(now.getHours())}:${pad(now.getMinutes())}` + } +} + +function updateButton(worker) { + const buttonConfig = document.getElementById(`button-config-${worker.id}`); + const buttonStop = document.getElementById(`button-stop-${worker.id}`); + const buttonStart = document.getElementById(`button-start-${worker.id}`); + + if (buttonConfig) { + buttonConfig.disabled = worker.status !== "ready" && worker.status !== "error" + } + if (buttonStop) { + buttonStop.disabled = worker.status !== "running" + } + if (buttonStart) { + buttonStart.disabled = worker.status !== "ready" && worker.status !== "error" + } + + // глобальные кнопки + const allStart = document.getElementById(`startAllBtn`); + const allStop = document.getElementById(`stopAllBtn`); + if(allStart) { + allStart.disabled = !workers.some(w => w.status === "ready" || w.status === "error") + } + if(allStop) { + allStop.disabled = !workers.some(w => w.status === "running") + } +} + +function updateWorkerStatus(worker) { + const workerElem = document.getElementById(`worker-state-${worker.id}`); + if (workerElem) { + workerElem.textContent = worker.status; + workerElem.className = `worker-status-badge status-${worker.status}` + + const span = document.createElement('span'); + span.className = `status-dot status-${worker.status}`; + workerElem.prepend(span); + + document.querySelectorAll(`div[class^="worker-card"][data-worker-id="${worker.id}"]`).forEach(e => { + e.setAttribute('class', ''); + e.classList.add(`worker-card`); + e.classList.add(`status-${worker.status}`); + }) + + + workers.forEach(w => { + if (w.id === worker.id) { + w.status = worker.status + } + } ) + } +} + // Populate worker selects and checkboxes function populateWorkerSelects() { const workerSelect = document.getElementById('workerSelect'); @@ -155,10 +203,6 @@ function populateWorkerSelects() { const option = document.createElement('option'); option.value = worker.id; option.textContent = `Worker ${worker.id} (${worker.addr})`; - if (!worker.online) { - option.disabled = true; - option.textContent += ' - Offline'; - } workerSelect.appendChild(option); }); @@ -168,7 +212,7 @@ function populateWorkerSelects() { const checkboxDiv = document.createElement('div'); checkboxDiv.className = 'worker-checkbox'; checkboxDiv.innerHTML = ` - + `; workersChecklist.appendChild(checkboxDiv); @@ -191,20 +235,14 @@ function setupEventListeners() { document.querySelectorAll('.tab-btn').forEach(btn => { btn.addEventListener('click', (e) => switchTab(e.target.dataset.tab)); }); - - // Config tab switching - // document.querySelectorAll('.config-tab-btn').forEach(btn => { - // btn.addEventListener('click', (e) => switchConfigTab(e.target.dataset.configTab)); + + // // Preset buttons + // document.querySelectorAll('.preset-btn').forEach(btn => { + // btn.addEventListener('click', (e) => { + // const presetValue = parseInt(e.currentTarget.dataset.preset); + // }); // }); - - // Preset buttons - document.querySelectorAll('.preset-btn').forEach(btn => { - btn.addEventListener('click', (e) => { - const presetValue = parseInt(e.currentTarget.dataset.preset); - applyPreset(presetValue); - }); - }); - + // // Apply to all button document.getElementById('applyToAllBtn').addEventListener('click', applyToAll); @@ -267,19 +305,10 @@ function toggleParallelConfigSection() { toggleBtn.classList.toggle('collapsed'); } -// // Switch config tabs -// function switchConfigTab(tab) { -// document.querySelectorAll('.config-tab-btn').forEach(btn => btn.classList.remove('active')); -// document.querySelectorAll('.config-tab-content').forEach(content => content.classList.remove('active')); -// -// document.querySelector(`[data-config-tab="${tab}"]`).classList.add('active'); -// document.getElementById(`${tab}Tab`).classList.add('active'); -// } - // Adjust parallel tests for a worker function adjustParallelTests(workerId, action) { const worker = workers.find(w => w.id === workerId); - if (!worker || !worker.online || worker.status === 'running') return; + if (!worker || worker.status !== 'ready') return; const increment = action === 'increment' ? 1 : -1; const newValue = worker.parallel_tests + increment; @@ -290,9 +319,9 @@ function adjustParallelTests(workerId, action) { } worker.parallel_tests = newValue; - renderWorkers(); - updateTotalCapacity(); - + const elem = document.getElementById(`parallel_tests-${worker.id}`); + if (elem) elem.textContent = newValue + const card = document.querySelector(`[data-worker-id="${workerId}"]`); card.style.animation = 'none'; setTimeout(() => { @@ -300,26 +329,6 @@ function adjustParallelTests(workerId, action) { }, 10); } -// Apply preset to all workers -function applyPreset(value) { - const onlineWorkers = workers.filter(w => w.online).length; - - showModal( - 'Apply Preset', - `Set ${value} parallel tests for all ${onlineWorkers} online worker(s)?`, - () => { - workers.forEach(worker => { - if (worker.online) { - worker.parallel_tests = value; - } - }); - renderWorkers(); - updateTotalCapacity(); - showNotification(`Preset applied: ${value} parallel tests per worker`, 'success'); - } - ); -} - // Apply custom value to all workers function applyToAll() { const input = document.getElementById('batchParallelInput'); @@ -329,40 +338,16 @@ function applyToAll() { showNotification('Please enter a value between 1 and 1000!', 'error'); return; } - - const onlineWorkers = workers.filter(w => w.online).length; - - // showModal( - // 'Apply to All Workers', - // `Set ${value} parallel tests for all ${onlineWorkers} online worker(s)?`, - // () => { - // workers.forEach(worker => { - // if (worker.online) { - // worker.parallel_tests = value; - // } - // }); - // renderWorkers(); - // updateTotalCapacity(); - // showNotification(`Applied ${value} parallel tests to all online workers`, 'success'); - // } - // ); workers.forEach(worker => { - if (worker.online) { + if (worker.status === "ready") { worker.parallel_tests = value; } }); renderWorkers(); - //updateTotalCapacity(); showNotification(`Applied ${value} parallel tests to all online workers`, 'success'); } -// Update total capacity display -// function updateTotalCapacity() { -// const totalCapacity = workers.reduce((sum, w) => sum + w.parallel_tests, 0); -// document.getElementById('totalCapacity').textContent = totalCapacity; -// } - // Switch tabs function switchTab(tab) { document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active')); @@ -378,96 +363,39 @@ function startAllWorkers() { const stopBtn = document.getElementById('stopAllBtn'); startBtn.disabled = true; - startBtn.classList.add('loading'); - setTimeout(() => { - workers.forEach(worker => { - if (worker.online && worker.status === 'ready') { - worker.status = 'running'; - if (worker?.metrics?.requests_per_sec === 0) { - worker.metrics.requests_per_sec = Math.floor(Math.random() * 150) + 100; - worker.metrics.avg_response_time = Math.floor(Math.random() * 50) + 30; - worker.metrics.error_rate = (Math.random() * 1).toFixed(1); - } - } - }); - - testRunning = true; - testStartTime = Date.now(); - startTimer(); - - renderWorkers(); - updateGlobalStatus(); - updateGlobalMetrics(); - updateTotalCapacity(); - - startBtn.classList.remove('loading'); - stopBtn.disabled = false; - - showNotification('All workers started successfully!', 'success'); - }, 1500); + workers.forEach(worker => { + if (worker.status === 'ready' || worker.status === 'error') { + startWorker(worker.id) + } + }); + showNotification('All workers started successfully!', 'success'); } // Stop all workers function stopAllWorkers() { - const startBtn = document.getElementById('startAllBtn'); + //const startBtn = document.getElementById('startAllBtn'); const stopBtn = document.getElementById('stopAllBtn'); stopBtn.disabled = true; - stopBtn.classList.add('loading'); - setTimeout(() => { - workers.forEach(worker => { - if (worker.status === 'running') { - worker.status = 'ready'; - } - }); - - testRunning = false; - stopTimer(); - - renderWorkers(); - updateGlobalStatus(); - updateGlobalMetrics(); - updateTotalCapacity(); - - stopBtn.classList.remove('loading'); - startBtn.disabled = false; - - showNotification('All workers stopped!', 'warning'); - }, 1000); + workers.forEach(worker => { + if (worker.status === 'running') { + stopWorker(worker.id) + } + }); + showNotification('All workers stopped!', 'warning'); } // Start individual worker function startWorker(workerId) { const worker = workers.find(w => w.id === workerId); - if (!worker || !worker.online) return; + if (!worker) return; - const button = document.querySelector(`.start-worker[data-worker-id="${workerId}"]`); - button.disabled = true; - button.classList.add('loading'); + const buttonStart = document.getElementById(`button-start-${worker.id}`); + buttonStart.disabled = true - setTimeout(() => { - worker.status = 'running'; - worker.metrics.requests_per_sec = Math.floor(Math.random() * 150) + 100; - worker.metrics.avg_response_time = Math.floor(Math.random() * 50) + 30; - worker.metrics.error_rate = (Math.random() * 1).toFixed(1); - // Simulate active parallel tests (80-100% of configured) - worker.active_parallel = Math.floor(worker.parallel_tests * (0.8 + Math.random() * 0.2)); - - if (!testRunning) { - testRunning = true; - testStartTime = Date.now(); - startTimer(); - } - - renderWorkers(); - updateGlobalStatus(); - updateGlobalMetrics(); - updateTotalCapacity(); - - showNotification(`Worker ${workerId} started!`, 'success'); - }, 800); + fetch(`${back_api}/workers/${workerId}/start?testCount=${worker.parallel_tests}`).then(r => buttonStart.disabled = false ) } // Stop individual worker @@ -475,27 +403,7 @@ function stopWorker(workerId) { const worker = workers.find(w => w.id === workerId); if (!worker) return; - const button = document.querySelector(`.stop-worker[data-worker-id="${workerId}"]`); - button.disabled = true; - button.classList.add('loading'); - - setTimeout(() => { - worker.status = 'ready'; - - // Check if any workers are still running - const anyRunning = workers.some(w => w.status === 'running'); - if (!anyRunning) { - testRunning = false; - stopTimer(); - } - - renderWorkers(); - updateGlobalStatus(); - updateGlobalMetrics(); - updateTotalCapacity(); - - showNotification(`Worker ${workerId} stopped!`, 'warning'); - }, 800); + fetch(`${back_api}/workers/${workerId}/stop`).then(r => {} ) } // Configure worker @@ -516,13 +424,16 @@ function configureWorker(workerId) { toggleScriptSection(); } + const scriptElem = document.getElementById('individualScript'); + if(scriptElem) scriptElem.textContent = worker.script; + showNotification(`Ready to configure Worker ${workerId}`, 'info'); } // Deploy script to individual worker function deployIndividualScript() { const workerSelect = document.getElementById('workerSelect'); - const script = document.getElementById('individualScript').value; + const script = document.getElementById('individualScript')?.value; const workerId = parseInt(workerSelect.value); if (!workerId) { @@ -536,14 +447,12 @@ function deployIndividualScript() { } const worker = workers.find(w => w.id === workerId); - const scriptName = `Script_${Date.now()}`; - showModal( - 'Deploy Script', + showModal('Deploy Script', `Deploy script to Worker ${workerId} (${worker.addr})?`, () => { - worker.script_name = scriptName; - renderWorkers(); + worker.script = script; + setScript(worker.id, script); showNotification(`Script deployed to Worker ${workerId}!`, 'success'); } ); @@ -564,91 +473,18 @@ function deployBatchScript() { return; } - const scriptName = `Batch_Script_${Date.now()}`; const workerIds = Array.from(selectedCheckboxes).map(cb => parseInt(cb.value)); - showModal( - 'Deploy Script', - `Deploy script to ${workerIds.length} worker(s)?`, - () => { - workerIds.forEach(id => { - const worker = workers.find(w => w.id === id); - if (worker) { - worker.script_name = scriptName; - } - }); - renderWorkers(); - showNotification(`Script deployed to ${workerIds.length} worker(s)!`, 'success'); - } - ); -} + showModal('Deploy Script',`Deploy script to ${workerIds.length} worker(s)?`, () => { + workers.forEach(w => { + if(workerIds.some(id => w.id === id)) { + w.script = script; + setScript(w.id, script) + } + }) + }); -// Update global status -function updateGlobalStatus() { - const globalStatus = document.getElementById('globalStatus'); - const runningCount = workers.filter(w => w.status === 'running').length; - - if (testRunning && runningCount > 0) { - globalStatus.innerHTML = ` - - Test Running (${runningCount} active) - `; - } else { - globalStatus.innerHTML = ` - - System Ready - `; - } - - // Update master buttons - const hasReadyWorkers = workers.some(w => w.online && w.status === 'ready'); - const hasRunningWorkers = workers.some(w => w.status === 'running'); - - document.getElementById('startAllBtn').disabled = !hasReadyWorkers || testRunning; - document.getElementById('stopAllBtn').disabled = !hasRunningWorkers; -} - -// Update global metrics -function updateGlobalMetrics() { - const runningWorkers = workers.filter(w => w.status === 'running'); - - const totalRequests = runningWorkers.reduce((sum, w) => sum + w.metrics.requests_per_sec, 0); - const avgResponseTime = runningWorkers.length > 0 - ? Math.round(runningWorkers.reduce((sum, w) => sum + w?.metrics?.avg_response_time, 0) / runningWorkers.length) - : 0; - const avgErrorRate = runningWorkers.length > 0 - ? (runningWorkers.reduce((sum, w) => sum + parseFloat(w?.metrics?.error_rate), 0) / runningWorkers.length).toFixed(1) - : 0; - - document.getElementById('totalRequests').textContent = totalRequests; - document.getElementById('avgResponseTime').textContent = `${avgResponseTime} ms`; - document.getElementById('errorRate').textContent = `${avgErrorRate}%`; -} - -// Timer functions -function startTimer() { - if (timerInterval) return; - - timerInterval = setInterval(() => { - if (!testStartTime) return; - - const elapsed = Date.now() - testStartTime; - const hours = Math.floor(elapsed / 3600000); - const minutes = Math.floor((elapsed % 3600000) / 60000); - const seconds = Math.floor((elapsed % 60000) / 1000); - - const timeString = `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`; - document.getElementById('testDuration').textContent = timeString; - }, 1000); -} - -function stopTimer() { - if (timerInterval) { - clearInterval(timerInterval); - timerInterval = null; - document.getElementById('testDuration').textContent = '00:00:00'; - testStartTime = null; - } + showNotification(`Script deployed to ${workerIds.length} worker(s)!`, 'success'); } // Modal functions @@ -678,15 +514,58 @@ function showNotification(message, type) { console.log(`[${type.toUpperCase()}] ${message}`); } -function request(method) { - -} - function getWorkers(f) { fetch(`${back_api}/workers`). then(resp => resp.json()). then(w => { workers.push(...w); f() }) } +function openWSConn(listeners) { + const ws = new WebSocket(`${back_api}/ws`); + + ws.onopen = () => { + console.log("✅ WS connected"); + + // запускаем keepalive + let heartbeatRef = setInterval(() => { + if (ws.readyState === WebSocket.OPEN) { + ws.send(JSON.stringify({ type: "ping" })); + return + } + + if (ws.readyState === WebSocket.CLOSED) { + console.log("🔌 write to closed WS"); + clearInterval(heartbeatRef); // очистим старый + setTimeout(() => openWSConn(listeners), 100) + } + }, 5_000); // каждые 5 сек + }; + + ws.onmessage = (event) => { + try { + listeners.forEach((h) => h(JSON.parse(event.data))); // уведомляем подписчиков + } catch (e) { + console.error("Invalid WS message"); + } + }; + + ws.onerror = (err) => { + setTimeout(() => openWSConn(listeners), 5_000) + console.error("❌ WS error", err); + }; + + return (f) => { + listeners.push(f) + } +} + +function setScript(workerId, script) { + fetch(`${back_api}/workers/${workerId}/set_script`, { + method: 'POST', + body: script + }).then(w => {}) +} + + // Initialize on page load document.addEventListener('DOMContentLoaded', init); \ No newline at end of file diff --git a/observer/static/favicon.ico b/observer/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c795498c0f68d7ea600c70af93313a0d457068f8 GIT binary patch literal 21527 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 Load Testing Control Panel + @@ -12,10 +13,6 @@

Панель управление нагрузочным тестом

-
- - -
@@ -23,7 +20,7 @@ {{ len .Workers }}
-
-
+
diff --git a/worker/cmd/worker/main.go b/worker/cmd/worker/main.go index 2900ad4..759138b 100644 --- a/worker/cmd/worker/main.go +++ b/worker/cmd/worker/main.go @@ -4,12 +4,15 @@ package main import ( "context" "github.com/alecthomas/kingpin/v2" + "github.com/pterm/pterm" "load_testing/worker/grpc" "load_testing/worker/internal/app" + "load_testing/worker/internal/utils" "log" "os" "os/signal" "syscall" + "time" ) //go:generate protoc --proto_path=../../proto --go_out=../../proto --go-grpc_out=../../proto worker.proto @@ -35,9 +38,17 @@ func main() { ctx, cancel := context.WithCancel(context.Background()) go shutdown(cancel) - err := grpc.NewGRPCServer(ctx, port, app.NewWorker()) + worker := app.NewWorker() + if err := worker.Init(ctx); err != nil { + pterm.Fatal.WithFatal(true).Println(err.Error()) + } + + time.AfterFunc(time.Second, func() { + pterm.Info.Printf("worker запущен на порту %d", port) + }) + err := grpc.NewGRPCServer(ctx, port, worker) if err != nil { - log.Fatal(err) + pterm.Fatal.WithFatal(true).Println(err.Error()) } } @@ -47,6 +58,6 @@ func shutdown(cancel context.CancelFunc) { signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) <-sigs - log.Println("shutting down") + utils.Logger().Info("shutting down") cancel() } diff --git a/worker/grpc/server.go b/worker/grpc/server.go index e51e87c..7cf5bcf 100644 --- a/worker/grpc/server.go +++ b/worker/grpc/server.go @@ -5,8 +5,9 @@ import ( "fmt" grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/recovery" "google.golang.org/grpc" + "load_testing/worker/internal/utils" "load_testing/worker/proto/gen" - "log" + "log/slog" "net" ) @@ -17,7 +18,9 @@ func NewGRPCServer(ctx context.Context, port int, worker gen.WorkerServer) error } actualAddr := listener.Addr().String() // ip:port - srv := grpc.NewServer(grpc.ChainStreamInterceptor(grpc_recovery.StreamServerInterceptor())) + logger := utils.Logger().With("name", "grpc") + + srv := grpc.NewServer(grpc.ChainUnaryInterceptor(logInterceptor(logger)), grpc.ChainStreamInterceptor(grpc_recovery.StreamServerInterceptor())) gen.RegisterWorkerServer(srv, worker) go func() { @@ -25,6 +28,19 @@ func NewGRPCServer(ctx context.Context, port int, worker gen.WorkerServer) error srv.Stop() }() - log.Println("сервер запущен на", actualAddr) + logger.InfoContext(ctx, fmt.Sprintf("сервер запущен на %s", actualAddr)) return srv.Serve(listener) } + +func logInterceptor(logger *slog.Logger) func(ctx context.Context, req any, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp any, err error) { + return func(ctx context.Context, req any, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp any, err error) { + _, err = handler(ctx, req) + if err != nil { + logger.ErrorContext(ctx, "grpc error", "error", err) + } else { + logger.InfoContext(ctx, fmt.Sprintf("grpc method %s", info.FullMethod)) + } + + return + } +} diff --git a/worker/internal/app/job.go b/worker/internal/app/job.go new file mode 100644 index 0000000..89f54d5 --- /dev/null +++ b/worker/internal/app/job.go @@ -0,0 +1,27 @@ +package app + +import ( + "context" + "fmt" + "github.com/hashicorp/go-multierror" + "github.com/sourcegraph/conc" +) + +func (w *Worker) startJob(ctx context.Context, testCount int32) error { + w.logger.InfoContext(ctx, fmt.Sprintf("start worker, test count %d", testCount)) + + err := new(multierror.Error) + var wg conc.WaitGroup + for range testCount { + wg.Go(func() { + if e := w.runTest(ctx, w.playwrightDir); e != nil { + err = multierror.Append(err, e) + return + } + w.logger.InfoContext(ctx, "test is pass") + }) + } + + wg.Wait() + return err.ErrorOrNil() +} diff --git a/worker/internal/app/playwright.go b/worker/internal/app/playwright.go new file mode 100644 index 0000000..c75d8ba --- /dev/null +++ b/worker/internal/app/playwright.go @@ -0,0 +1,136 @@ +package app + +import ( + "context" + "embed" + "fmt" + "github.com/pkg/errors" + "os" + "os/exec" + "path/filepath" + "regexp" + "strings" +) + +//go:embed resource/* +var staticFS embed.FS + +func (w *Worker) runTest(ctx context.Context, playwrightDir string) error { + w.logger.InfoContext(ctx, "exec run playwright test") + + if strings.TrimSpace(w.script) == "" { + return errors.New("script not filled ") + } + + f, err := os.CreateTemp(filepath.Join(playwrightDir, "tests"), "*.spec.js") + if err != nil { + return errors.Wrap(err, "create temp error") + } + _, _ = f.WriteString(w.script) + _ = f.Close() + defer os.Remove(f.Name()) + + _, file := filepath.Split(f.Name()) + cmd := exec.CommandContext(ctx, "npx", "playwright", "test", "tests/"+file, "--project", "chromium") + cmd.Dir = playwrightDir + cmd.Env = append(os.Environ(), "PLAYWRIGHT_HTML_OPEN=never") // что б не открывался отчет в браузере + + _, err = w.cmdRun(ctx, cmd) + return err +} + +func (w *Worker) checkInstall(ctx context.Context) (error, bool) { + cmd := exec.CommandContext(ctx, "npx", "playwright", "test", "--version") + + out, err := w.cmdRun(ctx, cmd) + if err != nil { + return err, false + } + + var re = regexp.MustCompile(`(?m)Version[\s]+[\d\.]+`) + return nil, re.Match(out) +} + +func (w *Worker) install(ctx context.Context) error { + w.logger.InfoContext(ctx, "exec install playwright") + + cmd := exec.CommandContext(ctx, "npx", "playwright", "install") + + _, err := w.cmdRun(ctx, cmd) + if err != nil { + return err + } + + return nil +} + +func (w *Worker) create(ctx context.Context, rootDir string) error { + w.logger.InfoContext(ctx, "exec create-playwright") + + if err := os.Mkdir(rootDir, os.ModeDir); err != nil { + return err + } + + cmd := exec.CommandContext(ctx, "npx", "create-playwright@latest", "--quiet", "--lang", "js", "--install-deps", "--gha") + cmd.Dir = rootDir + + _, err := w.cmdRun(ctx, cmd) + if err != nil { + return err + } + + // Заменяем playwright.config.js на свой + if err := replacePlaywrightConfig(rootDir); err != nil { + return fmt.Errorf("failed to replace config: %w", err) + } + + return nil +} + +func replacePlaywrightConfig(rootDir string) error { + data, err := staticFS.ReadFile("resource/playwright.config.js") + if err != nil { + return err + } + + targetPath := filepath.Join(rootDir, "playwright.config.js") + return os.WriteFile(targetPath, data, 0o644) +} +func (w *Worker) cmdRun(ctx context.Context, cmd *exec.Cmd) ([]byte, error) { + w.stopProcess(ctx, cmd) + + //stdout, err := cmd.StdoutPipe() + //if err != nil { + // return errors.Wrap(err, "stdout pipe error") + //} + // + //if err := cmd.Start(); err != nil { + // return errors.Wrap(err, "command start error") + //} + // + //go func() { + // scanner := bufio.NewScanner(stdout) + // for scanner.Scan() { + // fmt.Println(scanner.Text()) + // } + //}() + // + //if err := cmd.Wait(); err != nil { + // return errors.Wrap(err, "the test failed with an error") + //} + + out, err := cmd.CombinedOutput() + if err != nil { + w.logger.ErrorContext(ctx, "run process error", "playwright error", string(out)) + return out, errors.Wrap(err, "the test failed with an error") + } + + return out, nil +} + +// npx create-playwright@latest --quiet --lang=js --install-deps --gha +// npx playwright install +// npx playwright uninstall --all +// npx playwright --version +// npx playwright codegen http://localhost/bsp +// npx playwright test ./tests/bsp.spec.js --project=chromium --ui diff --git a/worker/internal/app/resource/playwright.config.js b/worker/internal/app/resource/playwright.config.js new file mode 100644 index 0000000..9135f81 --- /dev/null +++ b/worker/internal/app/resource/playwright.config.js @@ -0,0 +1,87 @@ +// @ts-check +import { defineConfig, devices } from '@playwright/test'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// import dotenv from 'dotenv'; +// import path from 'path'; +// dotenv.config({ path: path.resolve(__dirname, '.env') }); + +/** + * @see https://playwright.dev/docs/test-configuration + */ +export default defineConfig({ + testDir: './tests', + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: [['html', { outputFolder: 'playwright-report', open: 'never' }]], + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('')`. */ + // baseURL: 'http://localhost:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + // Делать скриншот при падении теста + + screenshot: 'only-on-failure', + // или: 'on' — для каждого теста + video: 'retain-on-failure', // можно и видео + + trace: 'on-first-retry', + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + + { + name: 'webkit', + use: { ...devices['Desktop Safari'] }, + }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ], + + /* Run your local dev server before starting the tests */ + // webServer: { + // command: 'npm run start', + // url: 'http://localhost:3000', + // reuseExistingServer: !process.env.CI, + // }, +}); + diff --git a/worker/internal/app/run_linux.go b/worker/internal/app/run_linux.go new file mode 100644 index 0000000..d2a1cb9 --- /dev/null +++ b/worker/internal/app/run_linux.go @@ -0,0 +1,7 @@ +package app + +import "context" + +func stopProcess(ctx context.Context) { + +} diff --git a/worker/internal/app/run_windows.go b/worker/internal/app/run_windows.go new file mode 100644 index 0000000..c4c34b0 --- /dev/null +++ b/worker/internal/app/run_windows.go @@ -0,0 +1,23 @@ +package app + +import ( + "context" + "golang.org/x/sys/windows" + "os/exec" + "syscall" +) + +// в windows отмена контекста не сразу останавливает процесс, поэтому написана такая функция +func (w *Worker) stopProcess(ctx context.Context, cmd *exec.Cmd) { + cmd.SysProcAttr = &syscall.SysProcAttr{ + CreationFlags: syscall.CREATE_NEW_PROCESS_GROUP, + } + + go func() { + <-ctx.Done() + w.logger.WarnContext(ctx, "context canceled -> terminating process group") + + // Отправляем Ctrl-Break всей группе процессов + _ = windows.GenerateConsoleCtrlEvent(syscall.CTRL_BREAK_EVENT, uint32(cmd.Process.Pid)) + }() +} diff --git a/worker/internal/app/worker.go b/worker/internal/app/worker.go index 26ccb2d..fc72e8d 100644 --- a/worker/internal/app/worker.go +++ b/worker/internal/app/worker.go @@ -2,43 +2,112 @@ package app import ( "context" + "github.com/pkg/errors" + "github.com/pterm/pterm" "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" + "load_testing/worker/internal/utils" "load_testing/worker/proto/gen" - "log" - "time" + "log/slog" + "os" + "path/filepath" ) type Worker struct { gen.UnsafeWorkerServer + + state chan gen.WorkerStatus + cancelJob context.CancelFunc + playwrightDir string + script string + logger *slog.Logger } func NewWorker() *Worker { - return &Worker{} + return &Worker{ + state: make(chan gen.WorkerStatus, 1), + cancelJob: func() {}, + logger: utils.Logger().With("name", "worker"), + } } -func (w *Worker) SetTestScript(context.Context, *gen.SetTestScriptReq) (*gen.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetTestScript not implemented") -} -func (w *Worker) Start(context.Context, *gen.Empty) (*gen.StartResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method Start not implemented") -} -func (w *Worker) Stop(context.Context, *gen.Empty) (*gen.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Stop not implemented") -} -func (w *Worker) Health(_ *gen.Empty, stream grpc.ServerStreamingServer[gen.HealthResp]) error { - for { - err := stream.Send(&gen.HealthResp{ - Status: gen.WorkerStatus_READY, - }) +func (w *Worker) Init(ctx context.Context) error { + utils.Logger().Info("init worker") - if err != nil { - log.Println("ERROR:", err) + multi := pterm.DefaultMultiPrinter + multi.Start() + + spinner, _ := pterm.DefaultSpinner.WithWriter(multi.NewWriter()).Start("Установка playwright") + if err := w.install(ctx); err != nil { + spinner.Fail(err.Error()) + return err + } + spinner.Success("playwright установлен") + + dir, _ := os.Getwd() + w.playwrightDir = filepath.Join(dir, "playwright") + if !dirExists(w.playwrightDir) { + spinner, _ := pterm.DefaultSpinner.WithWriter(multi.NewWriter()).Start("Подготовка playwright") + if err := w.create(ctx, w.playwrightDir); err != nil { + spinner.Fail(err.Error()) return err } - time.Sleep(time.Second) + spinner.Success("playwright подготовлен") + } + + multi.Stop() + + return nil +} + +func dirExists(path string) bool { + _, err := os.Stat(path) + return err == nil +} + +func (w *Worker) SetTestScript(_ context.Context, req *gen.SetTestScriptReq) (*gen.Empty, error) { + w.script = req.Script + + return new(gen.Empty), nil +} + +func (w *Worker) Start(ctxParent context.Context, resp *gen.StartResp) (_ *gen.Empty, err error) { + defer func() { + if err != nil { + w.logger.ErrorContext(ctxParent, errors.Wrap(err, "start error").Error()) + w.state <- gen.WorkerStatus_STATE_ERROR + } else { + w.state <- gen.WorkerStatus_STATE_READY + } + }() + + w.state <- gen.WorkerStatus_STATE_RUNNING + + ctx, cancel := context.WithCancel(ctxParent) + w.cancelJob = cancel + + if err := w.startJob(ctx, resp.TestCount); err != nil { + return nil, err + } + + return new(gen.Empty), nil +} + +func (w *Worker) Stop(context.Context, *gen.Empty) (*gen.Empty, error) { + w.cancelJob() + return new(gen.Empty), nil +} + +func (w *Worker) ObserverChangeState(_ *gen.Empty, stream grpc.ServerStreamingServer[gen.StatusInfo]) error { + for state := range w.state { + err := stream.Send(&gen.StatusInfo{ + Status: state, + }) + + if err != nil { + w.logger.Error(errors.Wrap(err, "stream send error").Error()) + return err + } } return nil diff --git a/worker/internal/utils/logger.go b/worker/internal/utils/logger.go new file mode 100644 index 0000000..680f25f --- /dev/null +++ b/worker/internal/utils/logger.go @@ -0,0 +1,33 @@ +package utils + +import ( + "fmt" + "gopkg.in/natefinch/lumberjack.v2" + "log/slog" + "os" + "path/filepath" + "time" +) + +var ( + logger *slog.Logger +) + +func init() { + logDir, _ := os.Getwd() + rotator := &lumberjack.Logger{ + Filename: filepath.Join(logDir, fmt.Sprintf("%s.log", time.Now().Format("2006-01-02 15-04-05"))), // путь к файлу + MaxSize: 10, // мегабайты до ротации + MaxBackups: 5, // сколько файлов хранить + MaxAge: 30, // дней до удаления старых + Compress: true, // gzip старые логи + } + + logger = slog.New(slog.NewJSONHandler(rotator, &slog.HandlerOptions{ + Level: slog.LevelDebug, + })) +} + +func Logger() *slog.Logger { + return logger +} diff --git a/worker/proto/gen/worker.pb.go b/worker/proto/gen/worker.pb.go index 4afa489..c699952 100644 --- a/worker/proto/gen/worker.pb.go +++ b/worker/proto/gen/worker.pb.go @@ -24,22 +24,25 @@ const ( type WorkerStatus int32 const ( - WorkerStatus_READY WorkerStatus = 0 - WorkerStatus_DONE WorkerStatus = 1 - WorkerStatus_ERROR WorkerStatus = 2 + WorkerStatus_STATE_UNSPECIFIED WorkerStatus = 0 + WorkerStatus_STATE_READY WorkerStatus = 1 + WorkerStatus_STATE_RUNNING WorkerStatus = 2 + WorkerStatus_STATE_ERROR WorkerStatus = 3 ) // Enum value maps for WorkerStatus. var ( WorkerStatus_name = map[int32]string{ - 0: "READY", - 1: "DONE", - 2: "ERROR", + 0: "STATE_UNSPECIFIED", + 1: "STATE_READY", + 2: "STATE_RUNNING", + 3: "STATE_ERROR", } WorkerStatus_value = map[string]int32{ - "READY": 0, - "DONE": 1, - "ERROR": 2, + "STATE_UNSPECIFIED": 0, + "STATE_READY": 1, + "STATE_RUNNING": 2, + "STATE_ERROR": 3, } ) @@ -70,27 +73,27 @@ func (WorkerStatus) EnumDescriptor() ([]byte, []int) { return file_worker_proto_rawDescGZIP(), []int{0} } -type HealthResp struct { +type StatusInfo struct { state protoimpl.MessageState `protogen:"open.v1"` Status WorkerStatus `protobuf:"varint,4,opt,name=status,proto3,enum=WorkerStatus" json:"status,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *HealthResp) Reset() { - *x = HealthResp{} +func (x *StatusInfo) Reset() { + *x = StatusInfo{} mi := &file_worker_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *HealthResp) String() string { +func (x *StatusInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*HealthResp) ProtoMessage() {} +func (*StatusInfo) ProtoMessage() {} -func (x *HealthResp) ProtoReflect() protoreflect.Message { +func (x *StatusInfo) ProtoReflect() protoreflect.Message { mi := &file_worker_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -102,23 +105,21 @@ func (x *HealthResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use HealthResp.ProtoReflect.Descriptor instead. -func (*HealthResp) Descriptor() ([]byte, []int) { +// Deprecated: Use StatusInfo.ProtoReflect.Descriptor instead. +func (*StatusInfo) Descriptor() ([]byte, []int) { return file_worker_proto_rawDescGZIP(), []int{0} } -func (x *HealthResp) GetStatus() WorkerStatus { +func (x *StatusInfo) GetStatus() WorkerStatus { if x != nil { return x.Status } - return WorkerStatus_READY + return WorkerStatus_STATE_UNSPECIFIED } type StartResp struct { state protoimpl.MessageState `protogen:"open.v1"` - Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` - Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip,omitempty"` - Port int32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"` + TestCount int32 `protobuf:"varint,4,opt,name=test_count,json=testCount,proto3" json:"test_count,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -153,23 +154,9 @@ func (*StartResp) Descriptor() ([]byte, []int) { return file_worker_proto_rawDescGZIP(), []int{1} } -func (x *StartResp) GetHost() string { +func (x *StartResp) GetTestCount() int32 { if x != nil { - return x.Host - } - return "" -} - -func (x *StartResp) GetIp() string { - if x != nil { - return x.Ip - } - return "" -} - -func (x *StartResp) GetPort() int32 { - if x != nil { - return x.Port + return x.TestCount } return 0 } @@ -260,25 +247,25 @@ const file_worker_proto_rawDesc = "" + "\n" + "\fworker.proto\"3\n" + "\n" + - "HealthResp\x12%\n" + - "\x06status\x18\x04 \x01(\x0e2\r.WorkerStatusR\x06status\"C\n" + - "\tStartResp\x12\x12\n" + - "\x04host\x18\x01 \x01(\tR\x04host\x12\x0e\n" + - "\x02ip\x18\x02 \x01(\tR\x02ip\x12\x12\n" + - "\x04port\x18\x03 \x01(\x05R\x04port\"*\n" + + "StatusInfo\x12%\n" + + "\x06status\x18\x04 \x01(\x0e2\r.WorkerStatusR\x06status\"*\n" + + "\tStartResp\x12\x1d\n" + + "\n" + + "test_count\x18\x04 \x01(\x05R\ttestCount\"*\n" + "\x10SetTestScriptReq\x12\x16\n" + "\x06script\x18\x01 \x01(\tR\x06script\"\a\n" + - "\x05Empty*.\n" + - "\fWorkerStatus\x12\t\n" + - "\x05READY\x10\x00\x12\b\n" + - "\x04DONE\x10\x01\x12\t\n" + - "\x05ERROR\x10\x022\x92\x01\n" + + "\x05Empty*Z\n" + + "\fWorkerStatus\x12\x15\n" + + "\x11STATE_UNSPECIFIED\x10\x00\x12\x0f\n" + + "\vSTATE_READY\x10\x01\x12\x11\n" + + "\rSTATE_RUNNING\x10\x02\x12\x0f\n" + + "\vSTATE_ERROR\x10\x032\x9f\x01\n" + "\x06Worker\x12,\n" + "\rSetTestScript\x12\x11.SetTestScriptReq\x1a\x06.Empty\"\x00\x12\x1d\n" + - "\x05Start\x12\x06.Empty\x1a\n" + - ".StartResp\"\x00\x12\x18\n" + - "\x04Stop\x12\x06.Empty\x1a\x06.Empty\"\x00\x12!\n" + - "\x06Health\x12\x06.Empty\x1a\v.HealthResp\"\x000\x01B\aZ\x05./genb\x06proto3" + "\x05Start\x12\n" + + ".StartResp\x1a\x06.Empty\"\x00\x12\x18\n" + + "\x04Stop\x12\x06.Empty\x1a\x06.Empty\"\x00\x12.\n" + + "\x13ObserverChangeState\x12\x06.Empty\x1a\v.StatusInfo\"\x000\x01B\aZ\x05./genb\x06proto3" var ( file_worker_proto_rawDescOnce sync.Once @@ -296,21 +283,21 @@ var file_worker_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_worker_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_worker_proto_goTypes = []any{ (WorkerStatus)(0), // 0: WorkerStatus - (*HealthResp)(nil), // 1: HealthResp + (*StatusInfo)(nil), // 1: StatusInfo (*StartResp)(nil), // 2: StartResp (*SetTestScriptReq)(nil), // 3: SetTestScriptReq (*Empty)(nil), // 4: Empty } var file_worker_proto_depIdxs = []int32{ - 0, // 0: HealthResp.status:type_name -> WorkerStatus + 0, // 0: StatusInfo.status:type_name -> WorkerStatus 3, // 1: Worker.SetTestScript:input_type -> SetTestScriptReq - 4, // 2: Worker.Start:input_type -> Empty + 2, // 2: Worker.Start:input_type -> StartResp 4, // 3: Worker.Stop:input_type -> Empty - 4, // 4: Worker.Health:input_type -> Empty + 4, // 4: Worker.ObserverChangeState:input_type -> Empty 4, // 5: Worker.SetTestScript:output_type -> Empty - 2, // 6: Worker.Start:output_type -> StartResp + 4, // 6: Worker.Start:output_type -> Empty 4, // 7: Worker.Stop:output_type -> Empty - 1, // 8: Worker.Health:output_type -> HealthResp + 1, // 8: Worker.ObserverChangeState:output_type -> StatusInfo 5, // [5:9] is the sub-list for method output_type 1, // [1:5] is the sub-list for method input_type 1, // [1:1] is the sub-list for extension type_name diff --git a/worker/proto/gen/worker_grpc.pb.go b/worker/proto/gen/worker_grpc.pb.go index bccdc3b..b5c6e1b 100644 --- a/worker/proto/gen/worker_grpc.pb.go +++ b/worker/proto/gen/worker_grpc.pb.go @@ -19,10 +19,10 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - Worker_SetTestScript_FullMethodName = "/Worker/SetTestScript" - Worker_Start_FullMethodName = "/Worker/Start" - Worker_Stop_FullMethodName = "/Worker/Stop" - Worker_Health_FullMethodName = "/Worker/Health" + Worker_SetTestScript_FullMethodName = "/Worker/SetTestScript" + Worker_Start_FullMethodName = "/Worker/Start" + Worker_Stop_FullMethodName = "/Worker/Stop" + Worker_ObserverChangeState_FullMethodName = "/Worker/ObserverChangeState" ) // WorkerClient is the client API for Worker service. @@ -30,9 +30,9 @@ const ( // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type WorkerClient interface { SetTestScript(ctx context.Context, in *SetTestScriptReq, opts ...grpc.CallOption) (*Empty, error) - Start(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StartResp, error) + Start(ctx context.Context, in *StartResp, opts ...grpc.CallOption) (*Empty, error) Stop(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) - Health(ctx context.Context, in *Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[HealthResp], error) + ObserverChangeState(ctx context.Context, in *Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[StatusInfo], error) } type workerClient struct { @@ -53,9 +53,9 @@ func (c *workerClient) SetTestScript(ctx context.Context, in *SetTestScriptReq, return out, nil } -func (c *workerClient) Start(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StartResp, error) { +func (c *workerClient) Start(ctx context.Context, in *StartResp, opts ...grpc.CallOption) (*Empty, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StartResp) + out := new(Empty) err := c.cc.Invoke(ctx, Worker_Start_FullMethodName, in, out, cOpts...) if err != nil { return nil, err @@ -73,13 +73,13 @@ func (c *workerClient) Stop(ctx context.Context, in *Empty, opts ...grpc.CallOpt return out, nil } -func (c *workerClient) Health(ctx context.Context, in *Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[HealthResp], error) { +func (c *workerClient) ObserverChangeState(ctx context.Context, in *Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[StatusInfo], error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - stream, err := c.cc.NewStream(ctx, &Worker_ServiceDesc.Streams[0], Worker_Health_FullMethodName, cOpts...) + stream, err := c.cc.NewStream(ctx, &Worker_ServiceDesc.Streams[0], Worker_ObserverChangeState_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &grpc.GenericClientStream[Empty, HealthResp]{ClientStream: stream} + x := &grpc.GenericClientStream[Empty, StatusInfo]{ClientStream: stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -90,16 +90,16 @@ func (c *workerClient) Health(ctx context.Context, in *Empty, opts ...grpc.CallO } // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. -type Worker_HealthClient = grpc.ServerStreamingClient[HealthResp] +type Worker_ObserverChangeStateClient = grpc.ServerStreamingClient[StatusInfo] // WorkerServer is the server API for Worker service. // All implementations must embed UnimplementedWorkerServer // for forward compatibility. type WorkerServer interface { SetTestScript(context.Context, *SetTestScriptReq) (*Empty, error) - Start(context.Context, *Empty) (*StartResp, error) + Start(context.Context, *StartResp) (*Empty, error) Stop(context.Context, *Empty) (*Empty, error) - Health(*Empty, grpc.ServerStreamingServer[HealthResp]) error + ObserverChangeState(*Empty, grpc.ServerStreamingServer[StatusInfo]) error mustEmbedUnimplementedWorkerServer() } @@ -113,14 +113,14 @@ type UnimplementedWorkerServer struct{} func (UnimplementedWorkerServer) SetTestScript(context.Context, *SetTestScriptReq) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method SetTestScript not implemented") } -func (UnimplementedWorkerServer) Start(context.Context, *Empty) (*StartResp, error) { +func (UnimplementedWorkerServer) Start(context.Context, *StartResp) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method Start not implemented") } func (UnimplementedWorkerServer) Stop(context.Context, *Empty) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method Stop not implemented") } -func (UnimplementedWorkerServer) Health(*Empty, grpc.ServerStreamingServer[HealthResp]) error { - return status.Errorf(codes.Unimplemented, "method Health not implemented") +func (UnimplementedWorkerServer) ObserverChangeState(*Empty, grpc.ServerStreamingServer[StatusInfo]) error { + return status.Errorf(codes.Unimplemented, "method ObserverChangeState not implemented") } func (UnimplementedWorkerServer) mustEmbedUnimplementedWorkerServer() {} func (UnimplementedWorkerServer) testEmbeddedByValue() {} @@ -162,7 +162,7 @@ func _Worker_SetTestScript_Handler(srv interface{}, ctx context.Context, dec fun } func _Worker_Start_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Empty) + in := new(StartResp) if err := dec(in); err != nil { return nil, err } @@ -174,7 +174,7 @@ func _Worker_Start_Handler(srv interface{}, ctx context.Context, dec func(interf FullMethod: Worker_Start_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkerServer).Start(ctx, req.(*Empty)) + return srv.(WorkerServer).Start(ctx, req.(*StartResp)) } return interceptor(ctx, in, info, handler) } @@ -197,16 +197,16 @@ func _Worker_Stop_Handler(srv interface{}, ctx context.Context, dec func(interfa return interceptor(ctx, in, info, handler) } -func _Worker_Health_Handler(srv interface{}, stream grpc.ServerStream) error { +func _Worker_ObserverChangeState_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(Empty) if err := stream.RecvMsg(m); err != nil { return err } - return srv.(WorkerServer).Health(m, &grpc.GenericServerStream[Empty, HealthResp]{ServerStream: stream}) + return srv.(WorkerServer).ObserverChangeState(m, &grpc.GenericServerStream[Empty, StatusInfo]{ServerStream: stream}) } // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. -type Worker_HealthServer = grpc.ServerStreamingServer[HealthResp] +type Worker_ObserverChangeStateServer = grpc.ServerStreamingServer[StatusInfo] // Worker_ServiceDesc is the grpc.ServiceDesc for Worker service. // It's only intended for direct use with grpc.RegisterService, @@ -230,8 +230,8 @@ var Worker_ServiceDesc = grpc.ServiceDesc{ }, Streams: []grpc.StreamDesc{ { - StreamName: "Health", - Handler: _Worker_Health_Handler, + StreamName: "ObserverChangeState", + Handler: _Worker_ObserverChangeState_Handler, ServerStreams: true, }, }, diff --git a/worker/proto/worker.proto b/worker/proto/worker.proto index 3b16c31..eaf7e66 100644 --- a/worker/proto/worker.proto +++ b/worker/proto/worker.proto @@ -4,19 +4,17 @@ option go_package = "./gen"; service Worker { rpc SetTestScript(SetTestScriptReq) returns(Empty) {} - rpc Start(Empty) returns(StartResp) {} + rpc Start(StartResp) returns(Empty) {} rpc Stop(Empty) returns(Empty) {} - rpc Health(Empty) returns(stream HealthResp) {} + rpc ObserverChangeState(Empty) returns(stream StatusInfo) {} } -message HealthResp { +message StatusInfo { WorkerStatus status = 4; } message StartResp { - string host = 1; - string ip = 2; - int32 port = 3; + int32 test_count = 4; } message SetTestScriptReq { @@ -27,8 +25,9 @@ message Empty { } enum WorkerStatus { - READY = 0; - DONE = 1; - ERROR = 2; + STATE_UNSPECIFIED = 0; + STATE_READY = 1; + STATE_RUNNING = 2; + STATE_ERROR = 3; }