From a2871a66e0d3cbbb0a3953c614bc240475a3101e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=9D=E5=B0=98?= <237809796@qq.com> Date: Thu, 18 Jun 2026 22:57:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96:=20AI=20Chat=E5=85=A8?= =?UTF-8?q?=E6=A0=88=E5=A4=9A=E6=89=B9=E5=AE=A1=E6=9F=A5=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=B8=8E=E6=9E=B6=E6=9E=84=E6=B8=85=E7=90=86(risk=5Flevel?= =?UTF-8?q?=E6=B8=85=E7=90=86/=E8=B7=AF=E7=94=B1=E8=A7=A3=E8=80=A6/?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E6=B8=B2=E6=9F=93/=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E8=A1=A5=E6=B5=8B/=E6=AD=BB=E4=BB=A3=E7=A0=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + PROGRESS.md | 240 ++- crates/df-ai-core/src/model.rs | 23 +- crates/df-ai-core/src/provider.rs | 26 +- crates/df-ai/presets/models.json | 34 - crates/df-ai/src/ai_tools.rs | 81 + crates/df-ai/src/anthropic_compat.rs | 65 +- crates/df-ai/src/context.rs | 192 ++- crates/df-ai/src/lib.rs | 16 + crates/df-ai/src/model_probe.rs | 112 +- crates/df-ai/src/openai_compat.rs | 17 +- crates/df-ai/src/router.rs | 182 ++- crates/df-execute/src/shell.rs | 3 +- crates/df-execute/tests/shell.rs | 161 ++ crates/df-ideas/src/adversarial.rs | 10 +- crates/df-nodes/src/ai_node.rs | 70 +- crates/df-project/src/manager.rs | 9 - crates/df-project/src/scan.rs | 124 +- crates/df-storage/src/crud.rs | 40 +- crates/df-storage/src/migrations.rs | 62 + crates/df-workflow/src/dag.rs | 5 + crates/df-workflow/src/executor.rs | 24 +- crates/df-workflow/src/node.rs | 8 +- .../AiNode自审实施方案-2026-06-16.md | 39 + .../B-03-人工审批响应机制-2026-06-14.md | 25 +- .../F-01-模型能力系统与智能路由设计-2026-06-16.md | 17 + .../F-05-多模态实施方案设计-2026-06-16.md | 21 + .../secret下沉与provider注入方案-2026-06-16.md | 20 + docs/02-架构设计/前后端类型对齐-2026-06-12.md | 28 + docs/02-架构设计/功能决策记录-2026-06-14.md | 12 +- .../07-项目管理/clipboard_20260618_124020.png | Bin 0 -> 871255 bytes docs/07-项目管理/todo归档/2026-06-18.md | 254 +++ docs/07-项目管理/todo归档/2026-06.md | 1080 +++++++++++++ docs/07-项目管理/待决策归档/2026-06.md | 27 + docs/07-项目管理/待审查归档/2026-06.md | 1062 ++++++++++++ docs/clipboard_20260618_125114.png | Bin 0 -> 330976 bytes docs/todo.md | 1298 ++------------- docs/待决策.md | 86 +- docs/待审查.md | 1436 ++++++----------- src-tauri/src/commands/ai/agentic.rs | 23 +- src-tauri/src/commands/ai/audit.rs | 70 +- src-tauri/src/commands/ai/commands.rs | 144 +- src-tauri/src/commands/ai/compress.rs | 10 +- src-tauri/src/commands/ai/knowledge_inject.rs | 30 +- src-tauri/src/commands/ai/mod.rs | 6 +- src-tauri/src/commands/ai/title.rs | 54 +- src-tauri/src/commands/idea.rs | 19 +- src-tauri/src/commands/project.rs | 15 +- src-tauri/src/state.rs | 6 +- src-tauri/tauri.conf.json | 2 +- src/App.vue | 15 + src/api/ai.ts | 2 + src/api/types.ts | 8 +- src/components/AiChat.vue | 277 ++-- src/components/ErrorBoundary.vue | 75 + src/components/ToolCard.vue | 313 +++- src/components/ToolCardList.vue | 65 +- src/components/settings/GeneralPanel.vue | 3 + src/components/settings/ProviderPanel.vue | 3 +- src/composables/ai/useAiConversations.ts | 30 +- src/composables/ai/useAiPanel.ts | 4 + src/composables/ai/useAiVirtualScroll.ts | 175 -- src/composables/ai/useAiWindow.ts | 61 +- src/composables/useConfirm.ts | 14 +- src/i18n/en/aiChat.ts | 6 +- src/i18n/en/aiTool.ts | 26 +- src/i18n/en/auditLog.ts | 46 + src/i18n/en/error.ts | 7 + src/i18n/en/settings.ts | 4 +- src/i18n/en/tasks.ts | 1 + src/i18n/zh-CN/aiChat.ts | 6 +- src/i18n/zh-CN/aiTool.ts | 25 +- src/i18n/zh-CN/auditLog.ts | 46 + src/i18n/zh-CN/error.ts | 7 + src/i18n/zh-CN/settings.ts | 4 +- src/i18n/zh-CN/tasks.ts | 1 + src/main.ts | 11 +- src/stores/ai.ts | 2 + src/stores/knowledge.ts | 32 +- src/styles/ai-md.css | 9 +- src/utils/markdown.ts | 34 + src/views/AuditLog.vue | 47 +- src/views/Ideas.vue | 21 +- src/views/Knowledge.vue | 18 +- src/views/Projects.vue | 14 +- src/views/TaskDetail.vue | 12 +- src/views/Tasks.vue | 19 +- 87 files changed, 5720 insertions(+), 3012 deletions(-) create mode 100644 crates/df-execute/tests/shell.rs create mode 100644 docs/07-项目管理/clipboard_20260618_124020.png create mode 100644 docs/07-项目管理/todo归档/2026-06-18.md create mode 100644 docs/07-项目管理/todo归档/2026-06.md create mode 100644 docs/07-项目管理/待审查归档/2026-06.md create mode 100644 docs/clipboard_20260618_125114.png create mode 100644 src/components/ErrorBoundary.vue delete mode 100644 src/composables/ai/useAiVirtualScroll.ts create mode 100644 src/i18n/en/auditLog.ts create mode 100644 src/i18n/en/error.ts create mode 100644 src/i18n/zh-CN/auditLog.ts create mode 100644 src/i18n/zh-CN/error.ts create mode 100644 src/utils/markdown.ts diff --git a/.gitignore b/.gitignore index 2754a8c..7ba8d9a 100644 --- a/.gitignore +++ b/.gitignore @@ -51,6 +51,7 @@ coverage/ # 损坏备份(FR-S7 write_file 事故残留)+临时文件 *.broken.bak tmp/ +.temp/ # AI 编排脚本(Claude Code Workflow 临时产物,非产品代码) workflows/ diff --git a/PROGRESS.md b/PROGRESS.md index a8f9446..71b60a4 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -1,6 +1,6 @@ # DevFlow — 项目进展与工作交接 -> 创建: 2026-06-10 | 最后更新: 2026-06-15 | 当前阶段: 全量待办编排完成(Sprint 23) → 首批 A+B 清债(ARC-02 死链已删 / AR-1 退役 / ARC-03 降级重评);api_key 明文存储(FR-S1)降级延后 +> 创建: 2026-06-10 | 最后更新: 2026-06-18 | 当前阶段: PROGRESS Sprint 日志截至 Sprint 24(2026-06-15 · P0 generating 状态机加固 + 独立项批量);2026-06-16 起多会话进展(B-03 路由解耦 / 工具结果渲染 / 吞错降级 / 模型能力维度治理等)见 [docs/todo.md](docs/todo.md) + [docs/待审查.md](docs/待审查.md) --- @@ -12,7 +12,7 @@ | 技术栈 | Tauri v2 + Vue 3 + TypeScript + Pinia / Rust Workspace (8 crate) / SQLite | | 路径 | `E:/wk-lab/devflow/` | | 架构文档 | `ARCHITECTURE.md` (22,745 字) | -| Git 状态 | 未首次 commit,代码全在 untracked | +| Git 状态 | 已纳入版本控制(完整 commit 历史,当前分支 feat/batch-260615-workflow-unlock) | | AI 能力 | df-ai OpenAI/Anthropic 双协议 Provider + 12 工具 + Agentic Loop | --- @@ -775,6 +775,242 @@ **遗留 / 下一步**: 等勘察结果派下一波实施;AR-11 emit 点已查明(audit.rs process_tool_calls 有 app_handle)待本批提交后派;F-260615-03 breaking change / F-260615-04 需定交互 待用户确认;改动堆积(git diff 100+ 文件)建议择机提交收口。 +### 2026-06-18 03:08 — sweep-fix 6 域走查 + P3 小修(Code-Working 会话·workflow wd2fnjh3s) + +**工作内容**: +- workflow wd2fnjh3s 6 域并行走查(rust-ai/dag/storage/ipc + fe-aichat/fe-other,12.4 分钟·6 agent·651k tokens):修 12 处确定性低风险 bug + 新发现 27 todo(去重 24 入 todo.md) +- 主代独立核查(审查防污染不信 agent 自报):cargo check --workspace EXIT 0 + vue-tsc EXIT 0 + grep 抽查 scan/audit/commands 源码形态全正确;**拦截 1 瞬态误报**(fe-other vue-tsc 抓 ToolCard.vue:653 cmdOutput TS6133 never read,实为 fe-aichat 改 ToolCard 中间态被并发 vue-tsc 抓到,最终态模板已引用,全量 vue-tsc 复核 EXIT 0 确认非 bug) +- 主代 P3 小修 5 处(各步自测通过):SW-18 AiChat wasNearBottom 切会话重置 / SW-21 TaskDetail wfResult timer 清理 / SW-23 Ideas neutral CSS / SW-15 ai_node schema required 对齐 / SW-24 dead_code 标注(finish_reason/call_type 2 处 #[allow],cargo df-ai warning 消除) +- 文档:todo.md 24 newTodos 去重追加 + F-260616-15 矛盾项销账 + 5 P3/SW 销账;待审查.md CR-260618-01 登记 17 处改动交其他会话审查 + +**代码变更**: +- df-ai: context.rs(parts token 预算,F-05 回归)/ anthropic_compat.rs(Image move)/ openai_compat.rs(2 处 #[allow(dead_code)]) +- df-project: scan.rs(to_ascii_lowercase 索引对齐 + is_monorepo null 判定) +- df-ideas: adversarial.rs(MockProvider 补 reasoning_content) +- src-tauri: audit.rs(audit_finalize 吞错分流 + PENDING_APPROVAL_PLACEHOLDER 常量)/ commands.rs(ai_conversation_delete retain) +- df-nodes: ai_node.rs(schema required=[] 对齐 execute) +- 前端: ToolCard.vue(isFailed/cmdOutput computed)/ AiChat.vue(虚拟滚动死注释清理 + wasNearBottom 重置)/ Projects.vue(_toastTimer onUnmounted)/ Knowledge.vue(parseContext 单次)/ TaskDetail.vue(wfResult timer 清理)/ Ideas.vue(neutral CSS) + +**遗留问题**: +- 1. **UX-2025-12 分页懒加载(高价值中风险)**:多角度论证暂缓——①必须 limit+滚顶两全(limit 单独引入"看不到 >limit 旧消息"回归,之前全量可见)/ ②token 紧张 180 行 7 文件大工程易出错(borrow/sentinel 时序) / ③长对话卡顿是渲染体验问题 cargo/vue-tsc 只验编译类型,滚动流畅度需用户实测 / ④工作区已累积 17 处 commit-policy-deferred 不提交再加 7 文件增合并冲突。留 todo 待充分资源/用户在场推进。 +- 2. SW-260618-01/02 两个 P1(executor Ok 路径取消事件不一致 / 审批占位 tool_result 5 处 .clear() 未终态化):均行为变更需确认设计意图,记 todo 未改。 +- 3. sweep P2 多为重构/防御/改进(AuditLog i18n / ai_node DRY / reqwest Client DRY / 双 watch 合并 / Anthropic url 防御),记 todo 待攒批。 +- 4. 待审查 CR-260618-01(17 处)待审查会话独立 grep 核验。 + +**下一步**: +- 1. UX-2025-12 分页(用户在场体验验证 或 新会话充分资源推进) +- 2. SW-01/02 P1 确认设计意图后修 +- 3. 待审查 CR-260618-01 交审查会话 +- 4. 工作区累积 17 处(commit-policy-deferred 不提交,等架构级重构建基线) + +### 2026-06-18 03:26 — SW-10 reqwest Client 构建 DRY(Code-Working 会话续推) + +**工作内容**: +- sweep P2 SW-260618-10:openai_compat/anthropic_compat Provider::new reqwest Client 构建(connect_timeout 30s + 回退 Client::new + warn)7 行逐字重复,抽 `lib.rs::build_provider_client()` pub(crate) fn 收敛 DRY,两处调 `crate::build_provider_client()` +- 主代自测(审查防污染独立核验):cargo check -p df-ai EXIT 0 无 warning / cargo test -p df-ai 112 passed 0 failed(不回归)+ grep 核验 Client/warn/Duration import 替换后仍多处用(Client 用于 struct 字段 / warn openai:503 + anthropic 7 处 / Duration 用于 :484/:481 timeout),无 unused warning + +**代码变更**: +- crates/df-ai/src/lib.rs(+14 build_provider_client pub(crate) fn)/ openai_compat.rs(-8+2)/ anthropic_compat.rs(-6+2) + +**遗留问题**: +- 1. sweep 剩余低风险项 ROI 递减:SW-06/07 双 watch 合并需谨慎 immediate 语义边界 / SW-19 combineAndTruncateLines DRY 价值低(结构特殊带 total/truncated)/ SW-04 knowledge_events query 无活跃调用方(防御性)/ SW-09 ai_node DRY 架构级 / SW-16 审计 status 透传需查审计表中复杂度(find_cached 返回 Option 仅 content,来源 status 在 ai_tool_executions 表非 ChatMessage)暂缓 +- 2. 待审查 CR-260618-03(SW-10 单项)+ CR-260618-01/02 交审查会话独立 grep 核验 + +**下一步**: +- 1. SW-01/02 P1 待确认设计意图(executor Ok 路径取消事件不一致 / 审批占位 5 处 .clear() 未终态化) +- 2. 工作区累积 18 处(commit-policy-deferred 不提交,等架构级重构建基线) +- 3. 待用户回归决策 UX-2025-12 分页 / SW P1 设计意图 + +### 2026-06-18 03:39 — SW-16 审计 status 透传 + SW-06 ToolCard watch 合并(Code-Working 会话续推) + +**工作内容**: +- SW-260618-16(P3 审计精度):find_cached_high_risk_result 加 audit_repo 参数 + async + 返回 (content,status),命中旧 tool_result 后查 AiToolExecutionRepo::find_by_tool_call_id(**已存在** crud.rs:1256,复用零新增)拿缓存来源真实 status(completed/rejected/failed)透传 audit_tool_call 替代固定 "completed"。审计缺失/查询失败 fallback completed 不阻塞去重。 +- SW-260618-06(P2 DRY):ToolCard 双 watch(props.tc.status) 合并。放原 watch2 位置(approving/approvingTimer/cmdOutputExpanded 三 ref 已定义避 TDZ)+ immediate(原 watch1 语义),callback 内 cmdOutputExpanded + approving 复位合并。 +- 主代自测:cargo check --workspace EXIT 0(仅 4 pre-existing dead_code 基线)/ cargo test -p devflow 92 passed 0 failed / vue-tsc EXIT 0 + grep 独立核验源码形态 + +**代码变更**: +- src-tauri/src/commands/ai/audit.rs(find_cached 签名+返回+status 查询 / process_tool_calls :625 调用点 .await 拆 status / :639 &status 透传) +- src/components/ToolCard.vue(删原 watch1 + watch2 替合并 watch) + +**遗留问题**: +- sweep 剩余可自主:SW-07 AiChat 双 watch 合并(同 SW-06 模式可复用)/ SW-17 ToolCardList Set 重置(低价值内存慢增长)/ SW-19/20 DRY(低价值)/ SW-05/11/12/13/14(防御/确认意图/权衡,需勘察或确认) +- 高价值待用户:B-260618-03 路由解耦 cost/intel(用户已决策主链大改需在场)/ SW-01·02 P1(行为变更需确认设计意图)/ UX-2025-12 分页(需体验实测) + +**下一步**: +- 继续 sweep 可自主项(SW-07 watch 合并模式复用 SW-06)/ 工作区累积 20 处 commit-policy-deferred / 心跳 a096aa7f 20 分钟监测推进 + +### 2026-06-18 03:45 — SW-07 watch 合并 + B-03 路由解耦勘察 + SW-17 评估(Code-Working 会话续推) + +**工作内容**: +- SW-260618-07(P2 DRY):AiChat 双 watch(currentText) 合并。删原 :2040 watch(currentText→onContentChange) 并入 :2047 watch(currentText→scheduleStreamParse) 单 callback,保持原注册顺序(onContentChange 滚动先 → scheduleStreamParse rAF 分块后)。vue-tsc EXIT 0。 +- B-260618-03 路由解耦 cost/intel 勘察完成:9 调用点(project×2/compress/knowledge_inject×2/agentic/title/ai_node/adversarial)+ router 核心(TaskRequirements 字段 + 步骤4/5 filter + 步骤7 Reverse(cost_tier))+ 多 test。**自主裁决:记待决策作专项**(用户已全局决策去掉 cost/intel,但工程大 ~30 Edit + 主链路由行为变更需 cargo test router 全验证 + 在场核对 title/compress 选模型退化,本轮 token 不够完整推进,半途中断风险 > 暂缓)。附完整实施清单供专项续。 +- SW-260618-17 评估:**不做**。切会话清 4 Set 会破坏 UX-260616-03 记忆态设计(userExpandedCards/userCollapsedCards 跨会话保留是 feature——切回 A 恢复展开记忆),「内存慢增长」是记忆保留代价可忽略(tc.id 全局唯一无错配,描述自承认)。 + +**代码变更**: +- src/components/AiChat.vue(删 :2040 watch + :2047 合并 callback) + +**遗留问题**: +- B-260618-03 待决策.md(专项推进,附实施清单) +- SW-17 评估不做(破坏 UX-260616-03 记忆态) +- sweep 剩余:SW-19(combineAndTruncateLines DRY 低价值可做)/ SW-20(parseTags DRY 签名变更中复杂度)/ SW-05/11/12/13/14(防御/确认/权衡)/ SW-08(AuditLog i18n 重构级)/ SW-09(ai_node DRY 架构级) + +**下一步**: +- 推进 SW-19(纯 DRY 低风险)/ 工作区累积 21 处 commit-policy-deferred / 心跳 a096aa7f 20 分钟监测 + +### 2026-06-18 04:12 — SW-19/20 DRY + sweep 评估销账批次(Code-Working 会话续推) + +**工作内容**: +- SW-260618-19(P3 DRY):ToolCard combineOutputs 抽函数,combineAndTruncateLines + cmdOutput computed 复用。vue-tsc EXIT 0。 +- SW-260618-20(P3 DRY):Ideas 删本地 parseTags(IdeaRecord),import stores/knowledge.ts parseTags,3 调用点传 .tags。vue-tsc EXIT 0。 +- sweep 评估销账 6 项:SW-05(占位内容匹配·PENDING_APPROVAL_PLACEHOLDER 集中常量有效暂缓)/ SW-11(OpenAI 图片构造·当前不可达暂缓)/ SW-12(pinned/archived 不对称·设计合理确认)/ SW-13(find_path_conflict 规范化·文档+测试守护够暂缓)/ SW-14(keyring current_dir·权衡已承认不做)/ SW-22(Knowledge 模板重复求值·影响可忽略暂缓)。 +- SW-260618-03 评估暂缓:url 模式当前不可达(前端 Phase2b 只产 base64)+ anthropic_compat 已 warn;加 commands 层校验需追 parts 全链路(IPC→ContextManager→provider)定校验点有歧义 + 误拒合法 url 风险,待 url→base64 预拉落地后变可达再加。 + +**代码变更**: +- src/components/ToolCard.vue(combineOutputs 抽函数 :463 + :472/:652 调用) +- src/views/Ideas.vue(parseTags import :214 + 3 调用点传 .tags) + +**遗留问题**: +- sweep 可自主低风险项已全扫净(SW-19/20 已修 + 6 项评估销账 + SW-03 评估暂缓) +- 剩余候选:SW-08(AuditLog i18n 重构级 15+ key 可自主中工程)/ SW-01·02 P1(行为变更需确认设计意图)/ SW-04(knowledge_events query 无调用方暂缓)/ SW-09(ai_node DRY 架构级)/ B-260618-03(路由解耦待决策专项) + +**下一步**: +- 勘察 SW-08 AuditLog i18n 可行性 / 工作区累积 23 处 commit-policy-deferred / 心跳 a096aa7f 20 分钟监测 + +### 2026-06-18 04:16 — SW-08 AuditLog.vue i18n 化(Code-Working 会话续推) + +**工作内容**: +- SW-260618-08(P2 重构):AuditLog.vue 全硬编码中文 i18n 化。新建 auditLog 命名空间(en/zh-CN:title/refresh/desc/loading/empty + col×7 + pager×4 + risk×3 + status×6 + decided×2),AuditLog.vue 引入 useI18n + template 15 处文本 t() 化 + riskLabel/statusLabel/decidedLabel 改 t(`auditLog.xxx.${val}`)。class 映射保留不国际化。模式对齐 Dashboard/Knowledge/Ideas。vue-tsc EXIT 0。 + +**代码变更**: +- src/i18n/en/auditLog.ts + src/i18n/zh-CN/auditLog.ts(新建命名空间) +- src/views/AuditLog.vue(useI18n + template t() + label 函数 t()) + +**遗留问题**: +- sweep 可自主项已全扫净(SW-19/20 DRY + SW-08 i18n 重构均完成 + 7 项评估销账) +- 剩余候选均非纯自主:SW-01·02 P1(行为变更需确认设计意图)/ SW-04(knowledge_events query 无调用方暂缓)/ SW-09(ai_node DRY 架构级)/ B-260618-03(路由解耦待决策专项) + +**下一步**: +- 勘察 SW-09 ai_node DRY 可行性 / 工作区累积 26 处 commit-policy-deferred / 心跳 a096aa7f 20 分钟监测 + +### 2026-06-18 04:32 — SW-09 ai_node provider 三件套 DRY(Code-Working 会话续推) + +**工作内容**: +- SW-260618-09(P2 架构级 DRY):AiNode/AiSelfReviewNode execute provider 三件套逐字重复消除。抽 2 helper:resolve_and_parse(合并 resolve_provider+parse_params)+ provider_from_params(封装 build_provider 5 行)。AiNode 9 行→2 行;SelfReview parse+build→2 调用(中间 task 读保留,p 生命周期正确)。messages/temperature 差异不抽(各节点自有)。cargo check df-nodes EXIT 0 / cargo test 82 passed 0 failed。 + +**代码变更**: +- crates/df-nodes/src/ai_node.rs(2 helper 新增 + 2 节点 execute 改) + +**遗留问题**: +- sweep 全域可自主项已尽(SW-19/20 DRY + SW-08 i18n 重构 + SW-09 架构级 DRY 均完成 + 7 项评估销账 SW-03/05/11/12/13/14/22) +- 剩余候选均需用户介入:SW-01·02 P1(行为变更需确认设计意图)/ SW-04(knowledge_events query 无调用方暂缓)/ B-260618-03(路由解耦待决策专项) + +**下一步**: +- 可自主项已扫净,状态报告待用户 / 工作区累积 27 处 commit-policy-deferred / 心跳 a096aa7f 20 分钟监测 + +### 2026-06-18 04:35 — UX-260618-04 前端删 cost/intel 标签(Code-Working 会话续推) + +**工作内容**: +- UX-260618-04(P2):前端删 cost/intel 瞎猜档位标签(落地用户「去掉 cost/intel」决策)。自主裁决全删(用户决策明确 + 独立于后端 B-03 路由 + grep 确认仅 2 组件引用 + 回退易)。ProviderPanel 删 tag-cost/tag-intel span;AiChat modelOptionLabel 删 intel/cost 拼接;i18n en/zh settings.ts 删 tagCost/tagIntel + 注释更新。vue-tsc EXIT 0 / grep 无残留。 + +**代码变更**: +- src/components/settings/ProviderPanel.vue + src/components/AiChat.vue +- src/i18n/en/settings.ts + src/i18n/zh-CN/settings.ts + +**遗留问题**: +- ModelConfig.cost_tier/.intelligence 字段保留(后端 B-260618-03 解耦后清) +- sweep + UX 可自主项已尽,剩余均需用户:SW-01·02 P1(行为变更)/ SW-04(无调用方暂缓)/ F-260616-09(架构级立项)/ B-260618-03(待决策专项) + +**下一步**: +- 可自主项已扫净,状态报告待用户 / 工作区累积 31 处 commit-policy-deferred / 心跳 a096aa7f 20 分钟监测 + +### 2026-06-18 06:50 — workflow 6项编码批·router解耦+model_probe+executor TOCTOU+审批占位+knowledge_events+CostTier(workflow wexu1isx1·6 agent·主代核查) + +**工作内容**: +- 用户回归复盘彻夜低产(串行手改+过度保守+心跳空转 1.5h),改 workflow 编排提速 +- workflow wexu1isx1 6 agent(10.7 分钟·294k tokens):B-03 router 解耦 cost/intel / B-04 model_probe 去瞎填 / SW-01 executor TOCTOU / SW-02 审批占位终态化 / SW-04 knowledge_events query / B-05 CostTier Free 清理 +- 主代审查防污染核查:cargo check --workspace EXIT 0(5 pre-existing warning) + cargo test df-ai 109/df-ai-core 24/df-workflow 23/df-storage 全 passed + vue-tsc EXIT 0 +- **主代修 agent E0502 借用冲突**:SW-02 helper finalize_pending_placeholders 签名(&mut ContextManager, &HashMap, &str) 函数参数列表 disjoint borrow 冲突(agent riskNote 预判"应无问题"错误)→ 改 &mut AiSession 整体(函数体内 disjoint borrow 合法)+ 调用点 &mut *session(DerefMut 解 guard)。印证:agent 不跑 cargo 的 riskNote 是猜测,主代 cargo 必验(同 Sprint 22 教训) +- 主代补 B-05 前端同步:types.ts CostTier 删 'free' 对齐 Rust(防类型不一致 + DB "free" 反序列化边界) + +**代码变更**: +- df-ai: router.rs(struct 删 min_intelligence/max_cost + select 删步骤4/5 + max_by_key 纯 weight 删 Reverse + test 改写) / model_probe.rs(heuristic_infer 中性默认 Medium/Standard) / presets/models.json(17 条删 cost_tier/intelligence) +- df-ai-core: model.rs(CostTier 删 Free + 注释 + test 同步) +- df-workflow: executor.rs(Ok 分支 emit NodeCompleted 移入 !is_cancelled + 取消 emit NodeCancelled 对齐 Err) +- df-storage: crud.rs(KnowledgeEventsRepo::list_recent ORDER BY timestamp 兜底) +- src-tauri: commands/ai/commands.rs(finalize_pending_placeholders helper + 5 处 .clear() 前终态化,主代修借用) + title/compress/knowledge_inject/agentic/project.rs(删 TaskRequirements min_intelligence/max_cost 传参 + import 清理) +- df-nodes: ai_node.rs / df-ideas: adversarial.rs(同删传参) / 前端: api/types.ts(CostTier 删 'free') + +**遗留问题**: +- 1. B-03 行为变更:title/compress 纯 weight 选模型,同 weight 并列 max_by_key 返回最后一个(rust Iterator 语义),需用户核对 Settings weight 配置(用户已全局决策接受) +- 2. SW-02 另 2 处 pending_approvals.retain(switch/delete)未改:语义不同(switch DB 占位残留需另案修持久层;delete 非活跃对话占位不在 session.messages 内存)。agent riskNote 标注建议另开任务 + +**下一步**: +- 工作区累积 37 处 commit-policy-deferred(等架构级重构建基线) +- 待审查 CR-260618-10 交审查会话独立 grep 核验 + +### 2026-06-18 — workflow CR-260618-11 审查回流 5 项低风险编码(workflow w999qdu86·3 agent·主代核查) + +**工作内容**: +- workflow w999qdu86 3 agent(1.7 分钟·83k tokens):BUG-260618-11 ai_approve 吞错修(P0) + CR-11#2 context.rs chars_ratio 注释 + CR-11#3 types.ts IntelligenceTier 注释 + CR-11#4 system role 完备性 grep 核验 + CR-11#5 audit.rs find_cached 性能注记 +- 文件域零冲突(src-tauri/commands/ai · df-ai/context.rs · 前端 types.ts),agent 不跑 cargo 主代统一验证 +- 主代审查防污染核查:cargo check --workspace EXIT 0(4 pre-existing dead_code warning)+ vue-tsc EXIT 0 + 独立 grep 印证 agent selfCheck 无污染 + +**代码变更**: +- src-tauri/commands/ai/commands.rs(:289-303 ai_approve None 分支 match 三路分流对齐 audit_finalize,原 unwrap_or_default 消) +- src-tauri/commands/ai/audit.rs(:402 find_cached_high_risk_result 性能注记) +- crates/df-ai/src/context.rs(:56 chars_ratio 0.35 注释,值未变) +- src/api/types.ts(:209 IntelligenceTier 注释) + +**遗留问题**: +- 1. BUG-11 行为变更:DB 故障现返明确错误(原误为「未找到挂起」),同属 Err 分支语义不变 +- 2. CR-11#2 chars_ratio 降值(0.10~0.15)属行为变更影响裁剪边界,本次仅标注未做 +- 3. CR-11#5 find_cached 批量预取属架构改签名,本次仅加注记未做 + +**下一步**: +- 剩余 11 项需用户/架构级定夺(F-09 多会话/T-01·02 实测/S-01·02 澄清/ARC-07 排期/UX-12 二选一/B-260617-11·17 意图+运行时),workflow 推不动,交用户 + +### 2026-06-18 — workflow ToolCard.vue 工具结果渲染 8 项(workflow w2drz3ppo·8 agent 并行核验+主代统筹实施·commit-policy-deferred) + +**工作内容**: +- workflow w2drz3ppo 8 agent(5.1 分钟·301k tokens·132 tool_uses):并行核验 8 工具(run_workflow/patch_file/delete_file/read_file/advance_task/list_trash/list_directory/list_*)后端 tool_registry.rs 返回 vs 前端 ToolCard.vue 渲染,8/8 isReal=true,每份产出精确 old/new 实施清单 + selfCheck grep 证据 +- 主代统筹实施(单文件域 ToolCard.vue 不能并行改):合并冲突(UX-10 被 UX-12 吸收)+ 修死代码位置(write_file 改模板分支非 formatToolResult case)+ type 13 字段去重合并 + 补 task_id 漏列 +- 主代审查防污染核查:vue-tsc --noEmit EXIT 0 + 独立 grep 印证 ToolCard.vue 22 处新字段 + i18n 18 处新 key 全落地 + +**代码变更**: +- src/components/ToolCard.vue:ToolResult type 补 13 字段(task_id/execution_id/target_status/note/diff/matches_found/backup_path/returned_lines/items/modified/old_size/encoding/cross_volume)+ 模板 read_file has_more 截断 / list_directory truncated / write_file old_size·encoding / 新增 patch_file diff 分支 + resultDiffLines computed + formatToolResult switch(run_workflow/list_*/advance_task/delete_file/rename_file)+ toolResultSummary switch(run_workflow/list_*重写修误判+list_trash/advance_task/delete_file/rename_file)+ formatFileInfoResult modified +- src/i18n/{en,zh-CN}/aiTool.ts:加 workflowTriggered/Short/patchedMatches/bytesUnit/linesTruncated/dirTruncated/advancedTaskWithRounds/trashCount/listHasMore/renamedWithBytes/CrossVolume/writeOverwrite/encodingLabel/fileInfoModified + 改 deleteFileSoft 加 backup_path + +**遗留问题**: +- 1. list_directory/list_* 截断文案硬编码 {n:1000}(对齐后端 tool_registry.rs:880 max_entries=1000),后端变更需同步前端 +- 2. list_directory 的 ai-tool-file-meta--warn CSS class 未定义(功能 v-if 生效,样式可后续补) +- 3. 本批 vue-tsc 类型层验证通过,运行时渲染待 T-260614-01 tauri dev 实测批 + +**下一步**: +- 待审查 CR-260618-12 交审查会话独立 grep 核验 +- 工作区累积 45 处 commit-policy-deferred(等架构级重构建基线) +- 剩余需用户项同 CR-11 段(11 项 workflow 推不动) + +### 2026-06-18 — workflow SMELL-P0-1 吞错降级加 warn + B-260618-06 表格 CSS(workflow w5siwnipj·6 agent 并行核验+主代统筹实施·commit-policy-deferred) + +**工作内容**: +- workflow w5siwnipj 6 agent(135s·190k tokens·62 tool_uses):并行核验 SMELL-P0-1 吞错 5 高危(agentic/knowledge_inject×3/idea/audit)+ B-260618-06 表格 CSS + coordinator 空壳,产出 currentCode/callers/verdict/fixType/proposedFix/behaviorChange/risk/selfCheck 结构化清单 +- 主代统筹裁决:4 项实施(降级加 warn 类无行为变更 + CSS 确定性)+ 2 项 no-action(audit 误报 CR-11 已修 / coordinator 已标注保留) +- 主代审查防污染核查:独立 Read ai-md.css/knowledge_inject.rs/idea.rs 印证 agent selfCheck 6/6 准确,cargo check -p devflow EXIT 0 + vue-tsc EXIT 0 + +**代码变更**: +- B-260618-06:src/styles/ai-md.css:59 移除 display:block/overflow-x:auto(width:100%→max-width:100%)+ src/components/AiChat.vue:3366 移除 display:block/width:max-content/overflow-x:auto,table 留 max-width:100%,气泡加 .ai-msg-bubble--ai.ai-md { overflow-x:auto }(CSS spec table-display 下 overflow 须由 block 父容器承担) +- SMELL-P0-1:agentic.rs:348(provider 池)+ knowledge_inject.rs:130,139,312(检索/消息解析)+ idea.rs:292-296(tags 解析)unwrap_or_default → match + tracing::warn 降级,Err 返空 Vec 走原降级路径零行为变更 + +**遗留问题**: +- 1. SMELL-P0-1 audit.rs:344 误报(audit_finalize CR-11 已修三路 match),todo line 漂移+旧版本,workflow 独立核验拦截 +- 2. 全局 ai-md.css 移除 display:block 后其他引用页(ProjectDetail/Ideas/Knowledge/TaskDetail)宽表格滚动需各自容器,当前仅 AiChat 气泡补 overflow,其他页 markdown 少宽表可接受 +- 3. SMELL-P0-1 58 处全量降 P2(5 高危已清,余低危非紧急) + +**下一步**: +- 待审查 CR-260618-13 交审查会话独立 grep 核验 +- 工作区累积 commit-policy-deferred 项 +5(等架构级基线) +- 剩余需用户项同前(11 项 workflow 推不动) + R?_^UZhHJJP(Ht!dqkZqS) z_uhQ;0z8Niui!hpLN%~8THD7I1Z&0bljE`wq+~!K6cXzV&QILRp~3mh=ZG zYVKw4UV_WFoV>(&(Pdb+)GBEtDm3xZt@v5P!)eK!M-V>;W@|NNlgJ+(&-Eey%B>8R z=!x=lU6-zxpbgQ562A7mNY8L?vHFcOW6O_B>8_mI@iFbX)I=oX($t;mIHo6gnv`ka zR#yLhBP;4{F(y;Q7EmjiS+~Q`clXA`zpkU}NA}5r z6Iolk%%bUi%->9#v<`rj&V6&v6mO`K)VvaBeNTU-|M^J4H`kHWGICB0&qomyuhwqP zAaBN_qoYvRM&Bz`hJC1 zs4oPnA`oI0VPAzvN**@z-K_+Bf*$Y(-;%^ffpC~bmmHK*mR?7@=d>|;)UKmB3Q$xjwu@a&N3N9*YD*FJ)*xwbh)YyV|% zJLq19{U%a&<+I%E>7iicE2DDoi6LM|OE1+QLUlQg|FDadPz0i0UGzH2gup;S44|?U z-+M}tM(kw_Fq-CM`aV*c=3WQ|(zo5RpGJf#F`;jq<_$1@>?ffLOoG-ypriIa zEhU!<$^CT~6~RixFCgN2(oQ4^T?clUpSBhZpYYt-N$CVF7}xfBG!FtdgD-@G?AMS< zzY(abIQ*{b1iP4gP`p;YhyP|P_$EVBNU>N6cC)r3O6yk`t_69YbbR0H*2c_hcGeYFsGY1tZ3681M9e z0rpMor*rBBR$nhJ0;hKj>XX{b(tF2Qa~hx|9U39_Ai02;h(b6okQsG=T3#hW*qX&t z7zzp41FS=(>wI>k{wMpV0N=Ub>pqqKhR#48`}QRjdX+Fhz+^f{YMB|llagQENKP_y zXn1iRI1Q@#U0N3xy{;4aofpG5G*(fNJj{=fvsv%%vWJ#< z;~l2d=2!`ws}G#`w}MK3bxsD;U(M@f5)}F5+0z*vt3YldU`{xwW!Jm8_KhBJ4yw&9 z#(OU<(Z(_1(gCDPP5i0+QN$Xa_E4WBWQZ zZXLZz1=a&YIw8#=n3w)d6@)%(J$aDHnvBOh-Xa97g~Z>#B{xyme~1#l_*R+I>Oz4E zF!?|X2|BhIAf8G3a1_A=DcJp)bCef*$yj6j!&xBkPhVJoO)sjTLbo`2;pPKS(CVS7 z5a_}>*qoQaT0!)P{>|^l4@+72%qbI5H^3BoDp+s5byRKcQ8q`@o6%{>mzi&o@=L0caAT%z}6o3rZ6GN@;=q4Ur? zXyYRwuQ8JU<*kBvkB5p)sut})`;()B7gITD_(j8Ff1ntyah(PGd;9-L!K>+nY9{~C+``F)_EUbS9a z=}dor8yLxO-Qt!sQ~Ox+#|z^3*HAI7-KDiq4?i@p2GO-z_d6@UBmzdi|0*$bRR{o> zVM)QhPn;8m%dR(f!(s5dsRjiuIoj^Bi!wePw5od5eN)b?P6FwMASZL0YDbAoy(_3+x$S@+NV z^OLWB_kVj(c(j#RlRD0Y3|#pBy|P_dn(~j+@c%l6@6ajyR;g>S@)NuElWG62HMZ+M z0s7_tdLZxyHG$d&dosUL|9;@;`c$0Uc=f;MyMLUVb&QpDF9@m(wE3+~NayJK*~$NS zi0I?}f1f!UA}qx`O+{V8I)C}UF2@SKY(TPV>crNSoGMT!jO@pdX9c7Px}h1QqyuSp zixH5tG?86_rSVD7^v5E5-R}U=f4Le(uzG5!52zp^n3kMANe@_*XuG<^k)F#DPm64? zg}j`uO2QjNbZS|6b1bdJ9$%)7)&F=A=#Tzf4DyYr1pCBxmbSx}t5+9)QL?Gq|a|YafFmMP6)Q3Na$$1ALYKPJl4PD^jypox@wRuLK zr3N~>t5B#F@N2uCW>7>{8tL~bi0W58Cz?yxt&XValSW+WYl zznG1smi-ibIhO5#9yl|i0V{}cRlvP*6x@z8!E%D5ZQB=^`uy4}UA`#0eCdYd?@vRF zDdr?9|K%9zD8s3~dFJlQ#*lT_f=h%ncvU@#-sWvImqh$gf4gtsGlS$-X!l8jj~qC9 zjKO+OvgTR%Sz19>zOTQLxgMlg9jU!IzY&-O8^h|;`7e1YeZ;*dyFuxA9o(dWDBp~q z?_8)8I4ECoXY0;vP+_P*mwPBhWH?zRtrT_v=8HLMf}r^XpdrTKw_1@jKtpiOEq+>S zaJXVoHd)~*^6`UrvSdvO69;y?>lnM-59nFa)B!@g5fT}`Vj3s=(VHf1a<;aV+}y) zD!983>{q4>-yn<9AqJU3;u7lxZZHKCFzIXsik0rcD1JR3+Y4|eLLYSVo5oC>0cd>; z9w5bi&mH@25!ZRL^-)twp@CkX)&UiCa=EUOs{A3l{&`<(p8)+1Ff5>kupbQH_1g|> zeLJ!8%)~;ee0Pt7u0@bQ`%5!)_G@E#G9cln!fd_)0fLs9#0h-XMxj=f4YMXrbwJY) z3U<<=Xjdy}!Q5qXhj+ndM_~Pr!QmBn5YG&Q6R7ao0TX;;RN4!;b1LFsL`G-BJ^!BK zvQ&lah~Qt1MCK{zH@7><+&=-U6@#t!+^6QM+YJKO>d9AiuqBtRZW9Mf$hFxP^1|0e*M3%43C>(#3U#RW36=S5+Eni9`njaUT>Fy{uNlK`p&i>9 zwr*MdZ5rAw)s5&+=F6G(yBPBS@i?luLV|r$c}H)Z8Bu0Pioc9DFM$a>zopQ;$EOtZ zi|0pX?mniRh51IUVpM1&uuj4UW0YNLzV(4alN!uvNitx+!)xV46{`MemT$;Z0;W%Q zl7Z1;2)0f;rs^@~bQ$2py1B2NPxpPWNGsIAAGhpe9K~o_cgJ=t%p+JBh}(wXJ%9fJ zEI7K7toA|H35HRX``?9K0;4gxZnt>(D3jw9Fp|!K=_S|DseROWmM)d2`0{IVi`m{4 zFpc8~AGWU!nf@dOfU|@D^C~cjlF6H$H%APNakG5O9n83hWX$!YJFgFHkDz`hx=t-$jcMNjhnk5smL94HJI*$l8;dw&-S(T8QN^Vd{pj0P8L5KI< zkLYqQ%f^Pwj)IUE%{h_F&(RAe?qFQ23Q_I6rd5-zUE<~QBO=H=IX4PPuR<;aEN+_% zlEdvdh-HZm68Z>cMn8(aE`JB)mE$9AtO$!(&VN6jYiVhND+4n7Jbn8p>b-pTlkWa& z6ZL9=fojcP%&8__!l2_%01i==N%4}+BJ`3*Kmu`n4RVfakWA7L$c32vaNyEQS!}k^ z`fVcsExa2B(?-Z6zAkLN6%nMb?e3?5zZ@F4+Xnto@hX__-nca)y@`-Yc2@X*zP8TkjQ4-N*Y#d;exBd+e4l&YpZjw^ z!CvQ)&**eS0%9qTJKnv|Lbml@;61HAXGMdK=V`B^vu#_ghP&2?b9vm`+Zi0He7ep) zcGU~cdA{lnxkDS4ITdXY?HLr+DIBY}Ahr6oAzkZl&)miZ;cUj`FRla*KV}MF8d8mJ zHJLIY*h4yx^#2G0@?|)?r3|9=yUZf=Dq};BFgZ&+;o7EvY4TO$pvu|79htG9J6QDk zu+K7zQj+O|YdN%gHZrW=wkUi*bLqhfk@zj*;qPMQeH;6wsd@>ykOtPNUMYjXU#d3^ z-}dGOI0bY`sRn%%p%a9Anjjtc2?U1}JfBxCnUioIYbk<{l(GF0T6+dK!sPy5nCY|Y z7|-SJvn*8(X{$c4XwPXh&AK`Rha;YT715cf1&l-ac8b}0x^wF``950%?jSB2@m)@B zTWx-4-Z33ECU}QAUF`?i!?u;PX|C3l7?%odyE^OF_&I;|zhqseQp+{JjZ7TvVGb&2 zPgLPC{@nE&f6W5~RPEthIkg1B!b&#&hJ7udeYhGek64V8ZS@LULn~d4=m$$&g6AGn zW6q1UIj+YKsv0yu#3(joy$Zq1oJ%=PtL(D7g|s3mL#P325wcqs!hnU9xtXG((rkHg zF3OhzG2BuPOvxv+&}sl@2n}uVwWV4vFHQw{72CHD84n8OTwWlm|Y5bOP zuAZBmC~#h@2&@I3ez%s(;l~&n-?%mC)f_Vs4q&{t9fX;UD!z5ihd`pPSVoE@11r?T zd+a)sEHDBzZiFG|s>8ttCCdxg-} zns+%=1IIx*f*^HwTdZ2p{#*-i3y@g;(&Gv^s+U=}))$KbpviC7uJ?vzW+HP?ZZdr(SZMFD)wnj_zA6_na-!zB1{}!aAlkr z=Cw%NF{80ay{axNJV4%5d6EhlV*QB8jz9i#hF_NIY`=vKJMqGKWaVkRN!S*w> zI{vArb^F^5i48`#PkaUYAHmmN_HWa3yuR4VHe=H1n#}mh7Ry$fLXHoGdPhz zuNF&P7zEDY{#sj@DtFh9mTUhoQoXObzj;4%3-OCZE^fA&q)!G@Cli~0jf@hSpSn0c zt-PS=&CmwHcN@^Bx4b3NG+h73`)Ll1sdR4s-)u0Y7Do>Ghu6;<)AL!%xlQQ<6BdP> z{p}5-`~je2pgm<$aAebiYu6nc4&MKLN9Q&^^FAY86z?V2+wP(NCURRm?jWHEMM&fq zlbzH=T88@*+IMa6CiFUlyNn?C%L%D6@kSXNeWdQEBVrRPjo$jXD2AYG<|rTTQmY{J z*qc5q=nd7~#2&w})OWu^&4~>souA5Pl(u_pN&37U)BX{!<{P3OnatXeTz6&uXUuzZ zRvVIy^PM`RHCO@et2KZ410ahz@!j`+dB>~dbFv4Jy`RO?P$=gP-LU)B$@sKuN$Wh- zX4BLU-&LFIIys0q;ndzQoOS8X$-56XMNK;;@!Im=|F%dc7(@&2yY(|hZ5Lpjv!fE$ zr^`m3euYs%!fUc;mQK7SdQ!2#yciv?@M#<+yNLqk%{BS<>n^SCda?{)lLL!6PQO+b*;1h#Zacr9ns&vY)JH{%N!Klveswi+|&1d z%AGE5Z~bn3MiPzsAT{j)ceM>jeK4S3_1w2AU&Shoy^=M6nvd0v$O@*?Q3y zaE(K*u)}|VG~*Vgbzd_YrOzVZima0bXkUF!{1mpscFvi6G&V^uCC8ZYj1)6L&ty5S z(#7;u_kJJ(XwHG#BgTd3y1RXoPxNawF_A_T++#jG1rb(ds>S8}gBh7xD{b}F=lKi? z6M9((U{LZZ$o6pP?*ilN&kd#AH7ij5pQH88}lA^ma$Si zo*MysA%2nO)S~-3>u+6gytj)=Dwjpz${4xLSAe1~Jwx|B#~`USc6ZP1j|=W!T{Q0+ zu_=Yg_ZEhh5uMdtcdT5cWv23tG26v{CE%KThNHy*VEZFKCKz0)-@4B<7 zyyk2+$Hs{G&t#VvL8rC?Ao*HjE~*K=2You-bg43tHDNyA1#vfyk}w8LH( zIF7F8$xzQ&?UQL1r|bdx)>^sKpxaL=SeB#EenIllD+mT_Y~#g^t&X&3*sA+|3W88P zl&CRgBs1J(G+E1+aO4~v(Z>=3RsZDI8`dwnd0<}kqBP`CpDN?RTYMP-!K;KVa8>T~ zZW}=h<^TuQm=9yOn_-2#rf1{4cB~;w?RiY?bR<5!V`h zRqHU0-Fu?oPp`Huc(hnY+_Kjv017Fdvx-Sxlr4Bnsz9x?A>*(F#T zXTALMv|m}-It=1({c)A-%d4iP0Ud)$YznjP0)n!9-bpxul=7C?$e$)#2no#U=lQlr zK!;EJ{@FZFT?@JQO9*WLE3t;rhq?6Dc*+hE8bkXaNKG8j<(?D#755IAJ^l#C?|>D{p^yOT5 zvFPk>C8dP3zMC=@rKK}P9m7@_Rp1XiY%)JQC>IG}qlACSqaD=HXm-*4w&M-&x^~u9 zm!&A+*-(BmnK|!1J!=@(p4;3gW6O6v8i$@r@Xp;fL*Yh^qTrHsOlzBgzR*JvPWc)W zss6>`X?!<19F-ld-eP}~A=X`fWnb?Dl7ZynfaA}ym;2p9hAQv1*MgRYM4edB!hGUk zGX2I1S<}cx49!eyBT7&N+|kX%S;`StRc|JpBhi0>a_x+qvYGEISs~hsB1JM`C;86o zm|dRzsR3xZ z$V`quw_o^vt(?`G^Le27NibafoVH-$N}il^h9vHw?G(vpJ7p;C)GIkZ_s9_2!aRMj z1((2N7rH&Jyfe{L|B32PD>cU6#aNeE@HMFeMfzX2o%CW*An*1is#z1kANlx8Q7YPU z!td}ELzaZ7L@a~B_RKd4yb(!b8$W+|Wef|ic3Kbg<+D`BJI2|P1V3s|Cq{KTm{ zW8W{U-p_MdKlil*)A5kfh`~wv9O5gEy#L^~!ThiX7Z!qvu75dr%86CxN-9i}y99rl zVfil(Q4ek(W@G=gE2%?BuJddkL}xH_A3JA2^7Yj~c#V=MC&SZzMVMJm7Dy=T(i2!N zfuh0im{H{e?6dP}+Ly#nA;?Vk?G3(m?T@#mBFG8F80j^Od7M72zdi{0+rt@hFrt3# z@fK21I>cyvjqt@%%D9pj+B%^MdX$87dzzrtF`4z=mvb;YNg(7U2zr7g9$je`JF$PS z(jXy#-P7@W=|g}0YA;jNg)KB{&p<#ak$ewX%RmM!3PPCFh$KDtbnx$f1yO`5Lm!yA*y{?iLbYxm^t z)ObNRy)9EWQl7NvB3qD&VS1Y%%l_F;Og!nzH#n9Q1;{xJu`Z(%RonXfggSfK5K67K zoU-gIxW8WKKK{fu;-JH&RwcJ9bLiQwGkfXY-Scokb2{JeQq8-EJyJ?T9>_=4Xnw8f zOWJ9*Y!)b;7BdN2|1|y&?>;J4Jtr!vxX{js2VB$ttDAVb=e+TcigDb|*uqkES624u zz6j)v0wBqd;&f<@t=uB%{S>4P^g}{5W;kZ`s9YX<;Ffb^bE1PZ`A%0XZeyWSOg%+Y z5(9YBPo&1qZ6iU|Zd4JY?%%zV%ktC1g&trN;nXP#D9VYYd-=IG&B~|P z6}8;fknnGJuPCqtcwA`!lhdtevI(o>4S(C|eG!eX5Mk zPK=TibWA4r@V*aps>jk;V1Lg0Z0o*d^{wFpNPs*{-td)+JZpL2m)_-JDT>;~8Vt8+ z#_lqr+3w$_HeeyLww>)BZMYO^0pPi#Qs0H;z^pj?5YMcgh7IZ$w;x~RQL+2plK2^Dk^qcz4ueiuDC5o zlLzGqt*{gIm1G1V(4GAkSw6_N9-;nx^j$rSe;MPq zYg4HcJfV?pvLa%uSk}8yoeET{<)BU|&`d=*6~n-s+l(E6uQCE#uFy$}l`dl7+T2j5=bc1+*Svh|GI+9h=REwq2V+kKfk zDeYG#8-okjD=2T^nbC{FmSxVDI8N%%gvT|6_BiHO++faR>|6#b)lNS-KW_OR1k1 zaAQJy$3Lt!mlFM2MXbTcsii>2o8`30%eB8hhf$X;40I@}jeh2Lsqmxu$Y9!t;*wYn zCpUqz(rDUTt2kg(nGBLUvhZDdEwlfzT z6m-K!)k6|L21Q`z@da7dO7@mlfy<-ZvOl>S*!bRfl%3X5Cl*-h$8p4#F`L#}^nQku z5ZEI*H&)thsJRLMcAzT@`Q*I6v)o~L@b1@7yNIqbThxs3AN(5I;K-k)X3yaqqiK1B z=;NNxPoFV|%076QM-=z)ySH8=-v&R%k-g&6fUm+Ptr`?llvrHkNsyL(#;fJ0%OjbFg zQ&H*NYf z*z-y5Z4ZjW8ntb9ZwxPh((g;afD3C#LX#V(QC+&>t(^W^x)n7bjcGD}ykpGdQe@Yw z2F=hoL2JPdYU#sxt2ay+PqWLL@+x8k$WYc?8)|N*VyGurG#OjSF%Q8@2Ws4!fx4NukyUR zrBEG|5#`)18*D^S{p&ouFDzQ6rsiUU1249#GusqOX+>74^z5d59hS*}a>2TI#@pOl)rQ{GSTw8C#Y_M~+)7Iq!o_pW;-w|@jfW8cxMetG+87+sP| zPpCVbz{b+-B>J|NotbT-)JLMe_~f0}9k9?o9MZjf5qsoIW)sHk78jtV!**Rfxb4qd zxdT3gXl%0R4Q>hhAdkWP}r#Z9(}-Koi3DX`niq@cf1_tU_`3|nod@^jdlH}ROxA2 z!Lo?oZ(BLSUoV@TqP_(=E@#-1{OAp=1`54|Y0mmBl`Q*;ol177hwN=_QdBtK6B6~t z?$opELNqG=f{l=<7vC-x3oBG}g~p#?&ApTt)a+Cl91;6WSr1d(D@X!y)FZ?2@(2gvqLm;dw~VMlX1mNliML$q;}3qJ&7e7*_>FPo$-}y z?UmXbYwnJPF{}ka4}1$kN(oS_A9z=&=Bipa9B zKhJ74lE{vH(bO>h<5&LMzIC zr!7xx9rbmomnmV2ZkLM({e}`9jZwiXVLd0;vo}T`bLo2l({A|I4I7twJ6Hm%(z-ez zvl{2$p!QLIfx9vg9#NEgb8bifs7nglwEG9h za1;r?It@Z=3b{qMB%BU?bDowQBA1=@z6mEct}>MR`2n{_Ujli*qg`bbv( z;SNd1s9ilutoE3bJ^iy`T(v1@61^<=5^DP}8loar#*>s>e+JbRV#9f1K|6=(?lbb8 zJ^dM@bn;re1lsl2c?z8SkiXk?P+yJ_t>6gcGk$)db0~1PJd#fn%;N);7omadlcyUL zh0e^KE17{x)lI#=yPW*mMDv0}M^f1VL=an~lDlftQCEo${yQ1T=*WjO<+vpw{iL<$ zh&_?JiFf~mJmw3}zJFxmhw;a!QxUWgqJ>Nr6iUyZE{zP5=_e)*QkFR%ED^l$qO2N& zAdGnqUnKjswBiC(AXY(#=0pt=vbPxfD^V_B?-Ku`fQ~mfmu%`dgkFCaC-L9xCr`NR z7V@=x`&Pe;OBrngb|d#KEpYaF360Ky@(m@}>A@HF(5=Y?N2tlx=tu9Cebv`V2OAyk z=(KSH4$#*VZl%=0C%*49R;sEws~VUkGpF2Q;AUM2EXa!Orw@C^1yPzt9dq@-O{pF? z%&;T~b@(}ju0hCWe(Y07)G?o8o-W4+48C`3UAp(M8|r`QJ>!>mz+^Zz2NYI2afP8Tw37m^Zho#O~D*4w>}i37wuerg3?TS#km;^>v}M74}{LAr~inYNx@e z8kdu2U-4pAf;rSpuJUm~0^~{8=O_6CddNS|TYf^>;|0XJ|3$sjMC5 z0TtwZr)c=+7c^`kw_`pH-jzLGg|I2gNnZfWK<2L8B`4Mme~n8MQh31C_RVme4V9GE zIc#DcX|+B4t`-h}9~^1Uz4QqLY?lcoT>Z*BtP(R_4-404^M8qdqTC>z(uT79y<6q9 z3`nRQkR5Qki@;+p*jcqrH}4DL)z9Y`MqF!MT<)=6ou~z5?KJ&`YPLeE^>4J_#rT=a zCDx9gq_^+h0A=-YdjX5k_?Br ze?AADJ=`t3B1+&p;yyYS7saJh&40hlS28f`lhjXK0uf9Ogoif_u~LW|-aQHKp;K!s z!#`!CRo4I*;Y~d8UVvS`+GQ`oYTAo1O^?y7rypwc1pOa}BVUtir$ID8IrF_1uGq%Z zR;Z;wagtRC)HdY(J!ub4xC66hnwmXds`+J48fS)7=WiwQbA5ZyV1dNltO@bRiLsvb z1A*YCfy^9kn0jtX$wt-Gaj7BaR3ytp{T3L(Wu(}wzm=uPOxq?;Kel}1C8U+wzD3cm zH6PLFT~jO2Yy=Q+)Z#qxH_}y*=c^2SmW^nt0infB4Ds`!TRkAB~$FaRqe;ZZ$yp-t?|ade`gwCBstX zqd`fToKMvbydA7Jbkmb2+ED1}wL!S;{ z8*}E!x4e<(#}BQd2Ys^f&6PX9q{&4)#L=y&Kx0M?UH3az%y7g5u5k-O+k%enD@D@G z)z(L{Z-j2yy}E^c@KtIqN~X3Xs;q(L*@*&H$4DlB^Qj_$u@8|>e_#OC_6$Hs5V4qZwc;+MY;!xdbQxrU>rLe6R$-12X0|KKZ z)@7Gc;m2b#x6U_mQn!a)@yW#++_+3Rn$R*6N&BGW&MU zvcIAt*`G--&2lJGs`R8uZW&UzNK+-{0v%g_Pg4aFcK4rQ(HaJ$xzNCB;;+rDiiK%} z{WYEUCqQI#7x_MIMas4UtRgvsTtUkZzZ(X7DH}Q}cRlmL8O00s_Q$FFiojfVroqRh zTPdie+_yn2#kcku%5>|J^apZ$=?$VhH(u-*?DVSLnzmJ}{gm!|MW3ho0~TSI+=JK- z$+d(1Fmd49?5!70e^b$Bls1dD z%Ml33`0F)q;pg=P%Iw+0ui#JdG14RDAgBR zFG#sC=hqdB;arZSvVH{PLj#V-fq)Ih6<165gTU69mgIAm ziD9vdSOnYvvg$WfZloWpBpVkRpSeAoeJM*{IdGutrw74=dS-3AWT3RMve_nTAp|4s zWpMq>HczsL2q~Qhy1N;%XKwQ)gMA^?7@oUX6NNm3w`o=*=4o3TfVbL36z1FA4K63Q zqjKfew(|n~Q(>E$+Y1r4P&!eL7-=1z@}}N17d?l66Zn~I<&H{g!6Y7uC$uvnLe*HRg%h62 zO|H&rq}QsePSfoblxaChGKH*pdP<|o1fend*D{R9g75e_Eo0l2R()h`6)Ld2uqG*n zy{UscsgFrLZGu-A35%)=1@WnSt^= zOJ`~xY&m$Lg+!$I0DUVwols&kzD(||mnn#}m6xQ8S;T&%#uQ{ASqji~6^ueRo-O2O zpD*6*d0vZ99nn)>1Nr}k_I>y>qXn0A+$sSYzk4eI3Hc#~z#VN`kFVFdBp&c@yVNj} zYQ7WlTPt5wRDrJX6LjVJ-w~=UAWb3_hWO<7?o2yzb>_)&J+NMhF585l3R}M-zw~Vs9=4~5TC<3al`gWX(Du)Sk(7NaSAC4;rC+{Qv6Fz5>zCzeeL_Mv z;y%V;kkc;uW7R_b&k`~GgyNdzUvwnS@uru1-FDdvbE&MqvY?4_?AJsqfDjJeA;f{fCC3D0^Q}LJUlHofusMH zouco^-UO0QtxP0Ta_TQ{uN^HX>9!)F6B4{P^OP4)FUN&Sqa5e7m$z^uj-Ar9#7J&J zvd3Md_d9B+4THbOSrO?4;(kBrD-7+R79?xtg-XNZ2H*&oaDI*>r=DLO2T~d{k zx+6&0JxgTY8~=xwf^;sNszg2Hq6hX!ybY_i8m^@V&inPlOvFa+zD;y$3_CQA=4caO zfI18X3E|BjvP65zt`2E+ev`M=V4p)Y)+1CJt|8)#G8em-Jk4E93fmm#W*R~^d2nQS zs9~#Bzo_NItP4~uyNB<2eOq6HT3+%F>c|U_2aY~gW68V}nuslGKW(cLw z&s%9XJBg6;Qy(c=WbeUnbou7IP&82^>h0LxoINIWzRyCNwWXrgKf+1{nT|aoL&=t; zJRS5874+Mq5h23YE<;&K&(ULe@N{^}S3A(Q_|)&*<#~HJ@)~hbfEjyU#6Yl=i^JG^ z(0WJZcW6q+M}JAYAHuPK;B>3u2&z; z{?*}xZ(+624n>YFp(|V}0^2a_Z3}NBo3g%O1+-06NJWgF<*9SV17b2WSy;{`mTR~R zDbA}lh{#+PfmH;}bI`jGuR;#hpDJ89*XMQ@Zkk@Zrv~#IDfNCU^`noI?uIcKrk-Oa zewn*LqPC?uGSmo?6%c1#9v1Jal0Sz5(5hSTOxx$D_|mInZ}681{T)%Ic2DtH6^oiR z=Iwuci-d#Zy{ut&=o!yPE(MxF8P7@v-H;{PmggCKDB@oS3(~!N7~iys?s=D*!cKi1 zM_TcrCS@@0a_!I{@NIjSp``XLOAdE{?SWsjqF7oafQbgtgnxH_7tlu;b(!Amp zIzoyC-#Ttt-9%c*S80jn2T!Jc)MetrI*_SqR$`yETj&b6Ra*5fbPH230l*x35}Ro9 z?G~F|TFr9John~DCZ8(?dkVIJz}=CQOCFj=aZu+K(gZ-)bTWI&|KRDqOXa^66v81m zw>znYuY6AqWA=yv>nd)52gxbvW6vEonyztlWKSJK&F>)*Ik?%zR|J z*mfzlI@(SN>X^h%%fyJx9}%qMVJVxtcypNb>%TDQPq$I|O0q1(Qrn9#eNRwxhzZjT zjVXB@#)mr8C%RaUTC^$hz@vV6R^?fhOKbQ|^~h#u5`;!8e$e-IlC^`m;YI1plRetw zsN3T@y4BSh?)uvY-=`s*<0dEWQ&+@n&rYkYsP)L^u{7(MA+esj8Qz4>eYCnRE6fO+ zlo?uhp$@Aa?cm|I&*zZc(bQQc@OwBOT z9l0t_QY=J1yMvUS>^L>z?(NS;ZTjLjL_v!m%}hw(a_ z8VsNQG3PA?@yyfsR%*-SlBm!<1J-Q0woRp;{{xk8sjx^*w^XlISt3q;Gpwi%a942g zMHVef^lpR(x_o7q^V$*#*V$CZ{=F?ne{?J$&t+#as?1rG-Z~baP-545i_G|NK#CxZ zrmw_kl5Qj5BCqklPR6h>$csh#0{Y0pyEaj`7I4R;JqywFli5lN=w(_@99S2UDt@`h z1Cm7wS-mwyb!OQmj_}6{(F1Nl4=buRQ74cP?yy&al4ueTEWGjv#I1A~jeXd(9CFQg2H>%l>Q?VPI(0JkOWd0?Zd#AB{J=Yc$Zo3(}m& zA?I--+YJ<6(9Rl&+Si0S0pB`Ns7cKT+ z`vwAZBt4@j6A|C*@(;MEnTY8;0a74V4<59cmqlGUllh#%SQC8@`FvjLoxujg9mLWY zud7KcIRF^SASbeA1+Q91B_&&=AHe4CX7Dxp11WRZ|LW8m)?XT?zC*by5>315NqK2g94as zobUYsIH|&?;z;1zhV^VdW6(|`Z!>jEkO7NUDI)*AG&K0WDHFpI@-%~{-%_0?3{+_B zAKWc}E_9|U78rPYi`9S+w(*-s^y@aN`Ro$L$-bX&whtC~-y$)n-DR%gHc^n}HGn1M zmB8;UQG^=g#OXUitW8oifnUCX9Laf6-q$@253-K+9#%YGYwI@WaPQ&L`*B>&TrO^J z!Yfo*otUXB$XdpLOCww)@}^Jg&ox9S==^eP;6Qa~He=T;u9-GWFqg`4Mq^rV9RgS$ zs-U&a!s#*7T>7Y&8t;}lv*jb|iN{J!wemAAxw6lbVfyQ_|1IarMUD$43k0G_eT{%P zR{+#XN+?6-0z1%~^ve->_&(XCnALJc=mrop22Z<&JLwr@Ma+-4t z(h#U%knv8aouYCJPYOC70*+YnlJliN_5yqPw-#}$*Rr8QKs#zYuu@R!L@OolN}0f5 zd0u2&JNu^M{0Id2n(wN*84Fk+?Jz|7U0FIsbHITV6KOP0{w#jgbkIUu;tjjemtNmf zVh+OAf(K|;*iRQ>Jp1&pGm{j2OS+^-+Yem#t&L}%BO1f=izH4V%Bn}v=mvPrHj;t| zif-3;*jJ`x(6Bv6XN#+n3XCqUq3`2h*>k_{{$*W(CM$J9GsMQ@i4NJxyT}1N%kN)& ztbkvSAU#fAXBc&$3F7I792p$`r+d1u;y=L8@Sw8pyMi93;w|3?JEn zlgUEPebV1s-^`oqtH<81MicU-eO+E7j4cVygUO}J>20E|p*kiS1B|gvwJsG!9~j3C zYWm6fE4~Z&Ce9*X5MY%Bv$a=D*Ec_-Z>CQ4SjjM(ZH8MDpcEG z)aAKdoKssJ1{Hn_a9kCe&CWFb0k0D4SwGh!D!54(MpiI2voa2NEn!n3$cT$|lyaKq ziUtX18vo$?oU8X>ueeFPPx->|*a{tEM7No!_^l$`W3g_n$g*i$_!U`mm3W6q6iWEG z)yVW*1CG!!I?_O)$F%ePD`SX|Fw)SKMcx}0IqzN6!tWg0?J4TzlJFoL`AtjASNy-s zC%tJ0F_%tJ@cj20l)c=wGF?AAJpb1jc{Vbc1bU-AV;M|-2DK!wX^tzWd|4-Hr=v(| z7N(gDbEnzh^uhwIB~l%;uO0ewfiy}2wn*@~YEKVXl3M>~ivb)WKb{UB3xQO^3{-X^D#ody9 zJ8YJ$)UgCI*+FQTypP)8AB!v(^M8JNKrgYyF9M0h3oMOVso(0=ZMNAeui(NK3+1K~ zCW}L_)%`A@kZ2!^194+B@v)(C{T}s1I(8F91!&Q>m9r?7<#oIVtp#;yxBV%bn~VUa zj&ib6G?jQ0Ak|o)z#)bF@XX%jQRDR`gg!~nZ9~FTb;P)2?&Et9BWO7H6moc|6<4&U$CDTByGL*CuP*T2_Y^7NG5dNd7bLU|9(@GKGEA0Rx!rp>{_im>h0hCy&bFfmj8Zq42m!#5jGCu*6AM99{c`Z zj|l-z$AeN^#*3^Qd!~;Y>t+N1M8+rm(v&>@$bIFnz~vks=}eEN<`$`>J5BxRzcrUo z_1ExQise7+{#M96|Gyv9sD4hr_kd7%2Yp|U(K;Z9c>2xnb#@XtGNrkHW0pe&@gnGV zua}x^w`rAAY5btb_)pG;PDRy}o~G)}u@{qFjxnXkzcf4N{!9xx5y*~9;pokN=cp+f z#5-)f7`Gvxhg$moqx7Sv*b4YVY>H->+IMfktK;W46SaT|LHsYutF<4dc;jvcL z@1yd6mTE0|V(mVexh|kQo*VF8f9PLG+vv$mX$oZo&pNz3W98V1NgSNT{l5ee<3^v- zv>c*5tf@L@^5o$0l>{xO{YX^cU!9$V76fj;KuyK+<{2jHKbpCTSEj{?%VimJvyvw* z5>J=;U+!u0)+rfKvt?iIuuh`0RliW*ocOK@3-Yg>j`urOx_EtF(RDKqpK_gk8^eE> z<IsX{~#mfh!Ee@yf{8~8SnFRT{q0Ux@hM zH*-nMe-B((=yG@aG22IJqBT;PdCC74nN*NqqH^hu=@(JBV$C<@>&G4-U#^%$KTg#Bz23*}-I(b3;|JOAsJX?@0WeNQBdP3A7H0P%k zD@G;rUp*yBS+v4vs14jjYb<7H5>zDM!GE>^6e=jzvi3);w&_*#;@$r9-;bW^G(U44 zE?WPvnEJSZTd+xW{r^KkBo;${uk1d2W|~Cg^HK@_Z^48Kq}TJFM7Dsz_5auF9FwH{ zE7TB?_Gg^jc);i_v!edDo0_yX0i=qvi+;+7hRUVq%y`3)@qZ2+h{oV!(N7^Gie*1@ zu9|WDo3C55&J0}s%{8_7VaoNJ<%931=TLq9pYLfL1HM>`ir8O4)A0mC)s)I{ra$~Q zdHJNuP}JbImJRj?IZg>LP~^O~rhfcRNGC19UmRxzqiy^M+tY|7YC@-6&2K@G>4_%f9 z@L*j&>cJcF+m|oS)4n76^emI{EO=6Cr@XUwKa8|{Ud`AN>7PBX>^0$z9PgV z=tZv5chUS03tQe|Btm)hB1~&a;q>KE>zugp(0xqQVtKnhg`7Ymzy8thtL@M#P29IX zjw9hK(DyF@^}ZucrZF4|7`nD}RFM+$^SyJN@41fSunc|tUw-PE9)`ts2) zo+uQcb3wq^Kruh?+5uXvGQb~htw0e0!W-1dcSv&!kgbiT* zI}1n2nES2SDn`onEZyjlEnrb)|MSgo#AJ+P!#&XX@23L{I+u_R)#E+o4%(Fvq^TM( zPIE~VyZFJ=*RNSp5B%>mYt6R&aneg1{%K*TK= z943K~Tww3L2}eKbxF~*0jW&%vgE!x7$)C=H)+*wy@XE%xGz{_9W8^2d*S@6h-6E?K zOSV7Uen#Y^(I3=g(xQFQm_X;3QDx1zB7Qxk2V;VP#pp(gDfY@#p;GA~V>a5q)wgw` z7BHz9qjxU2l8%7&2cbFt1Lle!e2TbNi@hTsm6~&wSNzl2 zOy-hx{4k(x?9tQS=4NMWoyi{+Y}0{fSplH$!v<&BgcLMA)%zP=yc(-uAzr9}L{B5| zB1TD!LFoLv{oS*bdMi2A4idl^nONc}a|JiF#nFem6Xb7JkrI)^X4Pr-V1`OgzK~f| zVkneWuFv7FJ}5Blx8&0kwmjWqw&YxlgGF%eti+)6(v^Bo_Yom6N%U+uzu1*iT^J+3 zD@hmfj3T(^cK!NJdR%7&S1ys*_=BsCS{CH(b+I4BPmsVPz`@#N@+`*wL1GCC4VWA0 zbVDM9@5w2!Iz1+Uv*)y;McSVVe6!h2lrY=*kxN+VOF0^;K-CVh_l5+jqbo~>&$7U6 zvnL1Pnkdxa6Bljy&1jvNZFuxK-g*zCUO6{+b8ny3uS#c%mMU9p%Rb;|| z*hB-F;8tRh0TaI9Y$Bzyizj>5s@Xa$bzDEVwdn_Hw^iaff-U<#>EeSkYGfws>J-NQ z-rJTM_ZJfnZT}dpgrVOEz>{C#<|51eiuEzFUH73ZLOr(ju1dkjr(nP|C*AgbE*$4- z;-=1_9p4rl$Z0Xq4Z!DeHFS=-JqwtI;6e?*D4tJ0{m@aSbriWeiz-wi{r*2iXy-{9 zx76j{ylA>vU1KTMlva+}6^%{p81LJ&1^W2yezj>OM+w-;%+q{%Bv169MQi`=+3(F# zdH|N3!~_|qYPxlDxL;Phaf2Er6Ctku0Wy5!XwL-HLH% zTQclA4C>30uXhvnwgC}uukOg_r{+N>Z|1+1JtrHr1Av$^uurIC0;T*dh^IEsZy|$` z<(3E1^q^HEzeT#0V)*^Bo3hf(ueTNqrr&1#mlC4th+xQM{aLDMg2JJc{%umZDjWqB z)_%p*tR0cTtr$4D<%nIHje{}zga`Hx)l;J4-*D$xSG1}0Yr!SYUhLT<`1X~fvqM9~ zec9Lmm{21p^#p7k9WH6#Htk{HSpy}aZvtjD#))YBPg`{Jth0NY)*7JUg9~ntHp=?(xvlM!)1%R{v%3DSMor;i#e)d1NsgSi zSSy(7T0UyCCw%?5ljMrBuAH=c0(%P zybkj102H@BbF`am;;L<`f_n=H%*Jj0UOAk18pVC*+y_ziVmg*vbJKu^$&qym#>Te*b1JlQ8@g1`=FtU*=|DV zV*g}!pgxF^Rt6zPTChjYcSeFG=xe=a+*qEU>(l-Lc(vaa?dg`-`;JT)EaZEC+uRBS zHO4@+W&)Gv(c??TTGxQ{_tn?n%Yd9j^pq&RAij}IE@ZN_3;^0DOp_za81U?vLOGeH zawMvj#%iMvkMZ>cW(vAe2Y3oZqVVf;9yl!e10Lp`uZ(jzU(BtR4JaeH2lTnog`cVR z6EXGV;U6H_wrh_$=W;!?zVnx7Kq;Sl|7tXdZu0Uz=07?BH?ZX`lr)(br0o5EjgEu} zz;fu5${|ekzgFT-4F{G`{(~t{OQF1*sLg-DU=bO^5VF!YRR#xb8D3WdAf0c-!x>^d zxwIv3Vzj%Kp#5PC`Rl>C{VERRWh~c!{q3$He`~Z9JLX{s%*osx7&2@{b9~u$+jxg(^YP%kBty5v}E?j!2mzUku;?Ibw_zHreKw7IqXfNnBeVon_02l$ZVG#8>EUBAeHb>k^Ju?4&vAxb* zl=6;_Yl|W18KvN``0q4H*JvycNCE$5$P0DqWmG287TVe_-K5bR z5|PDVjDgWZz#c{p4J2dsW(A03zG3v+0pv>3zmk{B3(`f6m42-dX+78t`qJVHnsnbDkS z2TguI5eJXu!T~VliZTb>@l)m!iFtqeEM>neFR~|IFbp<8)&n9^!D6(X_(r=1&~zwQ zoi9})U^BVy(hHj41$HEp%g%se+pQ&wKQ4mMf^9&fM&2ZsTOE@j*@;qGrpN+rfl^@4 z{0suomOsp6bEeQE>Rze^Oiu@##zC5uE^&0;08JnDA!NjTUqjl4tD%wVzppZV8A~Qs z-8B>Cf<{0)mh(ksFTaiRRw!j3ctKt(O; z1d)r$$U$tBxQw4T9kRdWMIyN-ed#mUe;bKrBbNwbeLUiZl2&b=|cDti-+;m95 zcsxoh4n@&x`jbtATKz;>w)Hku6p4{;uHbyE7KT;xlE1Fn#kC9T<=@r}P&<+lZoR;aq3aqF zP6`F^3P|J$(`=|Ut<)#O6=j%FR5vvVZ00x#u2bBd!b9udexzjMZhJPvaimyFj2DOj zT=M3xizpiOB#9$2&S>-uKPF|IK~}b4QS|-R+9LEWH_-+oLFOT9)P;iA;joiL)W$D=o%fLs0H{uZO7n8!QunI zO=~PucFpCTtSgS&zo}XiMUC_cx)OryMpdv#F8wAgWi{knB z7_EE)lv(hr4(~K^V%VR)Vp13Mg;dG3xC2kc=B*bnl3@=>@ScUc+tcAS%tk&lXg8LV zJV2lk0mV(idq>7plEZzu$qWjJaN>4{uNnGqC?+h<+~ESgB-(No{lq(+(6@=0Z0h$~ zdx*2JkPZ8hd(k>aLGYS+WRoWy)|A@O%br+Ef+{lG_=#>W$F%ZPZXA%Z#u%T-#D;0t z*0^XFGRR9PCK?OD5)|>8HTeA?!{qadvDcYS{xJ5BnZCh$8E!2`@GK1x+(_$$KMU^W zOE%DcQ!r#~=)g#2rX5?@iSV<4mybFqkgM|^6Bz1V!KEdUlBI2Dk5E1IA|_Y56v4`n zRCB%=>!dkB=M7=b(tBex*)<sq*#{CjLH0(x*U9iX6? zTf-A?;J#AgkH0;pG3h5gLT-e1B|kkOo@VMV6rNb~jfdv?N^sDX7zJLIeS3enHg|33 zY$EqWx}VIsmWC;y6(E}F{#3eER@tnP6tA-5ycz~cqKptArwLR1k)|Kr8*Gk^nLP(q zRikO&^jF4Fu#f;bQxf=N&(G@lL52{t#C6ws9TL-$QI>BX$S~Wduq1=j+A;@>=^dik zP};N?bw5Y1Z|^see5~2u-}IyCi_T-yO0D`bg4I(GJu2_hq$!#OFN~)ro_-AZnYuLp z`^kH^W2zGYJEnd+-ASc`3_YzaOOB$f)Q(5Aw;|<>qRSQ~omKH+)g4Hb|75CA%;lI)-aEp98+7rZmwqQ^iOdZXu`d2H#}KvHQ4$IBD#(*CJW{V_ zDalfFckfP8=T?3{A%ouK)YIXfqmnsgsL78-D)2YMreQ$A2^P}CkAr?DtFI)OS|+TD z1duEbA-H|QzCnK;i*L4)Atq887P3+@4Z5zSd7+w&eSxG;pi4?tLEATZkH0Vt4JLyv zoC_t#>txfPSb~3+=AW&~SVt^c1R^8bUv_k&&75ye^=0OxaL)(H01ru+PhcpqKH!O? z9bIzhB~yj+uOK?Pxz}Pqy7i&@WkesLyv^W%avUYB>HVVA;Ow}Fk#`%m8r)Gz!perM zMOJ;!LX_NHise-HkSWmucfB@mk{(5J8{#AW_;h7fa})slW+cJ zI$btX5K^kQj)DnrpNhltO~!h zk7m%1Pqx)v>M|kiK&ZT9<1r6c{XoxwrgNTSkPmOl>|ZC^Fca0f?*R;2oX`P|rsJ-M zJ7!DIEJIF$v2To?DOksB<7zFF6db|qu$~Y=@q$zL2?*DZ^kfNO}57YCAXVntJiy-_CbBawDL2Wc%-oV@C9^;FDU? z6goArQzgjZ!|V6LSSv1z9>N489b0I$WM)L-7vvwjAH1)s6$Kn8ENst_O~@q_KOG?j zAp;aNE`mmnq>|@TLc6BrvgEiZ&g)gDn}#U`7K|c|GqyDMDKk2=%>`yZ>^C6XS?Xlm zEjGG9$0F+^)Wg)m%wr&oN3lAkuuPk}0#1paFdreO*jf+CJFqMoZoF7YGCY;5*9+Q1 z;^ktUr16SosF~ zbS}w6klCJ6mlx$=bNs}8Ol-M6DNunJ;RPn4S?d&*-nAU}HG+k6<0oO&<923d%B5ul zHJG!Bn+fl*NjAObpAF&M{s4->wK7vz7MD8qVwZEzKFF3Mh8ro44FlFH71!XoS^QqZ6rLM`ucy1ivt%?#p$|Ohdt_zGm3FPQFvG|NAX`TDYgNxLAroY z?EG)T7Nf6v;(bKV!jtl}-*%c9S8+|Telqix{>l;mNbbs9VIds?b!TGf15&Jad~YxQ ztbcz3Q|5~h@K4Lt9j$*w6*8L6dY_+9XiG>DFYEhp`l&S!DoSlw*f3sxew)Hc22?)1Fl+2{mql2sSZD9 z$LBSw{#qO&{Z`7mkGlv}o4t_7cA8S@*k5Ab4iTG3=1S8zM#(r=Px3n6>e z6KySWS@rE}Bk|b?X0k{zmyn9Y?Qs}vlM>%UPxxmDe*>9F&qB593FnCRjoVG1n_NE1 zqr5=4HAxqT7+x_(D zR6;D6O}lO7ltyqI^2X$71S#q7OYRK0zG%&AmTtM4treGPD*Xi26^?M(*h?)oMWdh7 ztnl*OQZ?T9jG1L@Wi`ti4=3Kt44^allpz4j+Xj}PThnyKM$U8%DE z+}CmrKHM?$jG*#`<2*3tIkW0(mRmwzRfT|m?onJV3U3$4AI{pezG>)umPJQ z?Z^rZQxq}SKPRFln}r~_0X_d)I8hG8x93os>RFXq@d-d2HyeFy;CcJ44_oq<5{BH= z+6o5k4V6R@yiBoyWwgT9t7x*$BDRn%7Ynlf%4Y?dG1SNK3KAq7oeX6kOc6Xu|UQ72^=(uKr!3hCqZ zP*BfMQ^Hp&-Ce4=$-%1nd}*VLA5$|=rQW?Zxl&hjFm{8of%L+JXt0#E?#f&6_KapG zFrT-;AQDw!tzR5b0!HX~w8q!j7=L2;61wYH@mCa9m%U&#Ia(uwSAgp}{IdEY6H*%I zgqpjBpz*AI@0CE8I^0I{R9>INl{vVWd=htBGD1zlUXv@CLAcroGuBbpZKs^or$x2o z5d~K+mS7$WTqkV>i6VHeB1+idoiqa?UlD8lal*nx(U^nnC;}A{vH`kT=MyM_V(WE_ z`A@H462z8-y2$ zRKD0x4gza)e{1;H6qJ@CK)Uh*l*B8weM<;?ZX033U`L&}SXrv{O|;}_XJWM7tR2*b zy?2f(kDXLI5fC6Z)MGSn9W|y&CNeHRS2WAkIIN$0=aOFAJ^i;oEIIyz3g-?39V_5EHEEZQI z6kIV2ZAlZL!(U*CWz7KGrz2oSr2_*WuYAd+-@bMEormQ}aPQl^%(fr}ZV%(E-;7}d zT#_OiTB7=38Ja96s(%!kSyLU9F+)GSN}?iceqQQdP@WL|EjUZ74h|kjIl$Surx%5(fw{^ggtOOe7)!@g1!|xjC+(Pw#+GBA& z$k9tDtTl$)v-ITJuCuGq2~;GwgvRQ!)Az*cvCjVG-c2aKocLPx`j>k>0Q@lA+a$i_ zg4y(Lr=b1PZEGhz<=8*Qn}9u}^Es>;KsEKB9XM3Yr+yOK(*9)4(B}C?+|o>uVGV>1 z|9GX-nc#XK86K(ICjUp;TR>%*c2UD4f+858fPzRH2#5kA-2w`tlF}+24-!&RQW8pu zbc!Gw^11>|4VoPLqE zqgGM_4J0baIm#9}6&(RpKz>r=EMs{TPAU5x1*LEq+Al!*55JwgYeMim@%}waE~FsI z@iynCiBdGA0vz=&gfj5*r#SKfaD<$WGBy^>QT7V3O>_>sTS`(iaL)XR1O9%`ZXeB? zoH%%Udg`Bxc>GxcT<}kAa}r&T-+X%OI>v*~eL=VyoJwe9W3yPo8q|yk#Hhf$apl$P zaT}GO9Dq|^k^>#$CqZS)Agj-YrwT~`E0Rw?WD$UQj0puY-j2ViZDoF_G@g3{tYp2~ z6jfQ8FTZ5(-<&C&^##G#1+aV+z&=%(O|(O9DCml@0qyDhWIae|Py<@hPlW7Kw37&C z0Y~y76HB{O$>*MzL>PkH+-=7hO`}9I6&j@8E=-iABbGa7!pv4@Y^L9_zL_A0Q7rnv zSIjerL_znkqMJ#JZIyrnRVn}bQuHVq4e_LZ^EiT^{C&pEl7=@octx$&`!DDA(>MFR zz1u&p;O&<@b{~HH*>U8;VFTp>Yj^=NAwB|Qh24On$A}+po#kHvLNYQBN^?oFa!N1@ z6G(zQbe*Sd=G)~Txf)7G@nrWXOfDn-3z_sH4Eu@eQ}hOsv~ISgIfA_IWxH0}XgOpT z&>}O@Jm7PWvUo<1_Vv(WLAAyQ*Lfzo%PSsB|2SYdf>fuYylZqz}pi zD!TeN^(0h`tM(s|6^+o%6Y$p$6Po%_uDoetzwgd}?^N{3abWha2bjCWS}w3M7kd%myeLrrfiC=ELcos$Qr#ZFqf}B(fL`Gm(vvCz836T6Dv= zI0UckLwHi0goD8cqJc<5G3*i;C9x~Q!&&At(412uL7r`BC}@NRp(^=-^V93M?{ZeI zyfPqpISJ687sQ42tS-+|k1My?Jl*;GM;RN0 zANp@f%^bAR7>s4Eb^H0D!xtA1UHdK$7K*JSj6eGcq$Ed?ysJ1D*zMdhuwJt+f?GfH zcJhQ(1r!R=2YbEXj+eL2dynG09FX6kgvvk;Uln3&ks%POm+^W5iegs=YOh@A&9c92 z#f*Go#im4S4J_}z9Umq|rlGRI#@GZz7(jg8u643POVO`jvr7iU(Cr>H!l3qs405gvPx?zk>ob@Kf4yyA@&;R^00I$s zKv^!z9@=~4ERAgA61-Op4VQcnBP$!aj7R_u#feOZlm0l}=ydhXfu{Hapa$5DR`~5N z3<5AIuHXizP@Nfox@!Jzq}>u3Vyo{vM&SdP$za zesweaDf{n%1g&=F37Hdf3XdI-`5!9H?EZUs0E`3P7{%QBz zx}JG%(GM&D+YoZq3v!p(Eq0!Pc7fT{4yIR$RlX;8{9PuteKxBL zN3<|=>UDoVnC^_2psZMq(81;{Uh$aUGLe{-% z1gIRMU5;kt$8#s-CvbCqh#!T<@&$#E%)omf!wV{2#`}K;8kmx?H4kp=a>m3+*`fTA zos2a3C_xMzP1&sbS!C0b1kzh=Eoq&(#2b7qH1XcauYieHW;*3r%J`tfCO=S4ArCk z2w3NntC%m#0Qm3_##zA%5_$`6+-|*Og0*(R%bSbPYPBo1x`ZKad@$JbIfV;2u{s2yziFtt?hC;Lm+3!%{84@K6JBFrJUJ@AfB-5ah9_K2c-<08?SusP9e+1LPZ#(m}$bTYg=vL^~qE~0U8n1mzeyY z3r#$hIuo{>T_Fw*-9dJ&AXh*=8$EwNQ1l;As{v~hK3S^d>S#~?L>>FPZk^UQSFkJh7RhQnKY3QbS|QQ{ls>72?&!jhsJfFb@qg@A-S&`aJRq*Rk_e2 z2#P;CLX0jlgb~=5{-M&-H^VvcZ+#q#1{Bcuf^>&|1=WOV4xbhMQA6QQx&cHa_9*NC zo>LvaF#Dnz>9^=pUa8J>K|6!m=aF9TWh4)WeAr6k#ZRwx{}7_IrIK|=!#m3dv#S{( zK<{ZiC?De)wM?YJJ_vG2mP`t#f+i+FasOsV>81ka7-J)J>;}gNQL7968xgY9hIaTp zYI^~uuMufvwC_&SEH(Ua%KEuo{LL|xLkLIojxp>9Du;5^F}gdnMTpr#h05LMz>|m9{HSHG>{-s<#3BdK zy;)Mx=!==;(|cqT0+*MvnbXHy+6+YLR4UVD0+aOBN#aq zmvqgbfnD}y?zvoazEO{9fo*`TMwIzc`2dOamNXnM>ALRPS8WBEFeA(~Q6-0!C0I0& zC-78e0i+(3quSlg)SQQ|d{imW_(l;kV!YezM~c@rFls?!`s=m}I@sUX*2Z?!pm!Zo z`g=Rqnc?Q&;x+X7%*3&(E3= zJbg~8VMH1G*KS#&HOOzTI(=!NmxQyy3ZgFsRMB{yQ;nHeg@%C|9MikN=v_F62MeHk zths%?4@xuP$Hh1wQzW~N>HQ5V1C&VOzkpyrf9 zI`;i8lcUKZJOAWtSQOusf9t~zLe<-y;jcx&m9xN7cfKw^JqM5M1`WD`l^cAy`{h_fp+*5|Vg5+${Zxvou!GwYi-qK1YJ(cy&2Gu3b?}GHl-dz9 zn(_h;YP^MrEfn*PbV$?IP_OpG*r}gkRfyzm`2mP zz#-8sLN&7Lr`l*JMXUAkL^DoHC3f2b2_*F>Z|4Gx+v@PL7snex%e-2I;%$APBOU!k zJBm>en)|oE{x-@odO5aNO?~>O*O>E(gQmZbq43}7@56!MAD=8)L-o<{)UcKnxO*X( z*1iw!7oun4KGjw*#*QL%D%0xTrKIlE>~;wDN^%t_WY%kNU1cM9ZAr2~(s>j1QR z+EV1*v+8TmcgO3-e_3g8T*?IIuCwIFeX%{zt^zX!tJRFi<(F>){; z{nez+d6dZX>W}+|9)B;0%~Ye#r#x2fo`z01CA10*4S2iHfxUpTnPXSlbn&a`kWrO$ zjg(fhFV5oOjhU*X>`#N1-PZJM%HRsD^65P7h9$U>js_S}&@zR%YA-z81ixb#8 zf+AuuS_IKu>V*?qSC>)l5Hsw}tb7D*s43dNLNm=Uk}zmesnzm!U!%u6hYl@57ou{J zX}!pV^KPma*dy%y7u@4o*i(+=QSrhv#Hx8X>FwXyP~?O*S^yGM8|(A|F(H~=rwYEi z4zy;EA|rORVrcwm;j!YIE5ggIsRc;+*zW)o(7e@l7bV_yb`zjH@+e;GGt^7p?E|tz zcF6q?T3tx$;EPSC?3Ty6`rp)Mv6cj(=l^&xjh;C09_R|J0y9j#y)Du2=A&!^lY!=Y zK-Z#{5jo8V2<-YI{R0aKC+&vbB+97-0qWkfDm-&&LcCn^*U9SPdZ{9cpo{lZ^CouE9mJ{4Le8K&5*cfo4vCY2+)bB%DuKQt6&dioT#->A$`L z)88&a`_0c1g0GbR;&Q(a;urwE;rjIJdCKX7&_`Iv4T=gcdyO{N+EW{9AXdOX%{QXt zupj@@N9K2Tx0Y6dODADadPrgl;0I0txSKoW@a9@n?V8($&=wDw{x(kkYz2Q-+1GF= zoT*crK>!(XKl5Ks&g&yM@ExV%_oMXxtE;PYd$a5tV4jIC( zbvq~_%4hrDnO-eHIpHe_Xiqc#6Q*wtGi2Alrs3#EVvea249XQ~Q0~u^_U6*uOy#6je7|PI4OMt@|iBP=_KvV&1~$ z$PtL{lq}IyAA&pTA<7;T%mUngY&z_y!8$y)(;7}2i{7G)(uLbQaSFXKW8E1<;n2W| zbEDBY6vpeecbI~WAD#d`H<4Ny?UnbZ89kf8UcJ@biJLmfbN3;?6R0d6lHhNrq~G&p zl#X_pFo;EAga;a*Z)8~l1O%IbkHb5ylPD`UK*Bu;w@~dW!r_o&0p?`m{y(Is`r0^p8o~6diT)q-(9E_aM|9K-c8$kb*lqcB#v96|jFb@#ZL7+4&`U>Cf zIw}Tj1a_lBA8uztq*o~?Q#B?=yZ-SsH!YU|*^@4Uv2EokM;b|9B;0DZ0X{@@*jd#* z94WiPa}Y&=@_p9Vv)IOf&JLdqIm*Z!QI-Q93;JXn%*!GDfaY)V8Q+*mS{1le<|ZjT z(yA0KXP7%Ojf9R_bd!)^5ynmlQL^dKtBkE#VvwQ|&7bQTsC`XJ2V@e1@+bGnDzENW z1H1wC(BdisoOq^sR9q>hs;3=t?@c4MC9DHbXS6h1v+#F7a@kPlj_nBn;MiYrsPDJ+ zuk%(GGAmR3;xD~zX{C~Lzw^&|>k7TUA_G5wPxN@#T8_bB1h~bvdNHe8zZ>@d4;p+S zG3H0RsPKMXF3dCr$%iabHQH{Wv_3J2cK_55vn1*^>irZtQ0IrzUPwJa{6;Yz4IQ-U z#g93LZ_J>6%%LD+n1~e3Ft%fG#F#E<0g;A4`=u?To1l(QM|;PBhes9~XEljKgCH^7 zz$AFhLwwc#d3sF84A#x~-hBqX@k1g=|NY(~qtNXl^{ zr4TffZ4cPwJ}$z?RzLRG#T9j|*bUh8DED(*cxIf?lci$PhJn;kZ>ZmFXkEtp%NHnY zI`JRP-9K7nXr1dA8r{I!{#7I9&r9wEiRm|w<;E{K25pUK zwGJu0?7tvo5v0~ka;H*6Xr4Xn^NO~gBob)&N#ok)S(E(yrT(#SwOl8eYWO zqF&Q?`vMf-umqK;HeuoS@`SPR0-?*Ot7Et1t!^Zs08@bcj{sklPOmhSqJa{pO5t7h zxFi7%;ssuYVKA194e;+T?L073bt+wG+48EaLkXz(IX zjQ0GDTB#FyC!vEA?}gMxBB0Vs$L^(G;eG>$i*lq5gN99J>E0*H)~ql-Wnp%-{k?7R zt$q9<`2N;6<(vc&`BHSg_a6@oJ#0kCxf6W_`VSI!>MP3<8u+l%8ggI}G6+BChjx8t zlZ=q{P<8F7 zkLOym>;Miuh7On&0R^9$q1FWfm``nBve-7pX_b|F4|j!z*#w#{&|37uL|al^sQ@op ztiDLY$G-*4Yo36pf?eGmM{LA4QDXUnC`n%0^l1v4^4Lp$aIv>pZvzxQmCqGnA*W## z*6gnh*=!Shpe|njxh-_n!@(Mf85E;L^&+>K}q)wU(zR~~_?N4~g7W13{|)$A+q+zLy+vvvO^{w(=tTU@jpU;FYURR-8kmL1wpG8`K&4gy z78N|(@G?Loj`2uD*;CZ8z8^Q}Lk>5{duTgGJ0S`c5E%&OYpu;C;kx47U(#PM=zh6o zH|NKjuAhPIw#_{|i>i9gAi@zMQ#K3HdOAqG4BKMNC5@o}XSGB9r<+eoBbhQ+zjtw1L* zazTniPhbz=j1f&E5iA1LZ9YHsxD5p=vvmQzQ;vYSZjZa@-34?;C)mPp;s#RE!iU(9 z3Tt=9^0^AddiNfbuJz8w0S|V5pK{vfHgQ6bNMxpkL3lzkplOTYnhs}Fbb=Ia!;v@2 zU~zBcwVqLnd0Fs1mRbMW4%a_hm!G8onNAS2u9ub=6rT^{M#aL-_sCByfCx<0pZ$7l z(fH~^=kJn$2GI8(8TkqTt*bz298795@m2)S6(i+6q5yO;uxufDFa=e%PD#;%0gqEI zb`i-(QIfSd!A?}5krkTW2HNHzi>|Yp_`-Jc&3&k@OmScm(iz-^L`hI2jeMVdUjh7P zRdN4w?cw-y4FK5R0N+480S=`##Fj!=$}!FfK7q=kkrTYI*T`ge)d9^FODp7{{XtR- zOMA~iTB=fSW`w`IdLyHJ3(JF2#!5Q z8PjOT6RzhA3bts+=|@c!k~(}=@VCPGbN@<+AGnW6Fv|Y>U)M2y`bER%eZs#i0BKU= zUr!(*HhLNDVYUiT%-#TUo6_P?R*GSeVlE$2)k1q`N#KRpKIPc+b(s@3BUUK&7n!G$ zW$|Nc+3DTsYd%cO3+Ok-A`xlkeRScej}-*=qdpX1w0k{J96C9HN|tnP$tu9SlqV;P zZs~b!M?k^~J$^vW1C4A;ndP(^xYITH&>Ep+OiYNzJ;o9k7?BPmj#fYr^b#A)Ni`+# z-kSkVCoz8|CJ|77J}6ZAH-IObWSgdFxWaTWk;vNos;b<_MAJEFKEl$tBD!9tRa~kc z5Lzus$WLT(x0OmLaM&C@YahXtEcy2n`i7GHizkRmu#gt4T`9Wj{_^ya z@W&Wj{0R8R3ypV+e+p3+DH30vxy6z%cYf&)UkX ztsYp1n0q7!AB|p*C=+P21)N}%ss1_0;0$~%Ci+3Kgk4GeVgY;aqj$ZwH+&n}@Ic-9 z<2Zf$;&%}!(bqIsFL$CXBBuGT>;|ZvjW84e(9NPJqWi0q39MO9{iYrKj&px|U|3`) zu*H7%yMtKlXPk+@xw&tE&A%vke;tv2G#K#9$~ak|dwWh@I`~WXrZ0tK`0uVK=nDM# z9{uCDbgn?WEv3@4_W#!yhwVpuDiT1a0jifS=uiEBigDP^sMhC#!SF#Q$HAYU+yBoP z2Xx#UPvefBHtjxrn&Z+R@4?Mf+~3lj(4Y2y*tUje`eq9D6ZK|?PJymp^bPYb9|n5h z|45_3V!-d=OF1T>f7>9tRUlQlx&P3FmO9Q z-!Vk$a39(vHnbFvAg^L6B<8uj{&lW%X~2WJzU{_hwAfBfpyhd8PutBk0MBh*1+W}jNFreZ7xS(Ntt&f=fz1h6H{{VM z-$YAN(2-J)FXtX_3n@_o@qzv&Ikpg&JxB@@4Lg&PrRVC@yP&bAMCyvAe!=llSE%a6 zqtVT3y@C$bdYhT%sk_#f2DKkMCN|%Bms{wwI*Y{Ks5yJqN59YHf4t5@s^}GCx~dX| zPT{`?SJWvEfXgAG%sX@78~*^VyQ79@(DKGz==+hc3F6s@V1kcMnhReYL}BmS#&ZUx z>0_oyhI9aeZ)-82pY<)>n7(6KG6F-+k%wmr^m7(LN+$a`r{1-7z=hgR&Oxee-86|&kw6_5 ziS=e3X6=xqYs!&@)>CQ7ZERj>)j>L@dm-vl1Ngi78v2(G-#n8Tr0EDv+IC{)cwrPy zhouAAxV0YOCpC_TWPM6k+tTLKkG=|UaWXJrWbVAC^}N(L?xoZ6QNx)OgGiF+(lIH> zU8pn08Z;cH$gHI))QSAuG6c6kDk9nIlaV0k2g+(<&}$h(v&4ktxc9cm&th>sU@;YWC@d8oaocyJpX$s@LO5_UTO62!uv0N(&`tNNsEJ~zbQE_ z$Zpt8XJ@{VSgFl2R5Ma3W=r7yioV%sem_h-+gkN|B`}3mij*_jAOJV) zYD$MAfqNn;zT6w8l<-v)o(-Et#TA#IenJ~VrJN3%hyb~u@`cf16TEfSbP|0)4!vkUS3rK%xRx<5B&Mg*ha|Na?RTy8e% zJjF7CaxW}wS?|-Ubr4)$OGHWwswSK3s5(u*{Epff=(GHPukpjr`q_pEL5n}QfGy9=xiXCLs% z(2tA)U*QCTX_HK#LfQ4@a*UNVtw5@Xam|PeAJCxU(DyfU^3T&d=o7T!3u`VfVj>P0 zFiZ&APk{qgHVl>TgIQEZ52G<1IjwwMDOy)9v`R@QYur7{I#2Dip02ZcujvA{hUqf0 z`Axp~kZcK1MpMJ%#6&xO`Qg0I5LO6Ha zmfZV3zUO^>5)4kIATmfiD;e*H`pS>2GUUVW&}*&fu@1AQm{=C3Coi2gFh7v)HEj!t z+uqOh%B{IjI+jQ1F38Yro0zZbsJ5leLdA-26&9)J zM52`w7OhE24gSWx3@fI>XiKgr)gA_0vds;};(M0#bgy}@p2%6R7&zuzKD9c;HW zWKmkG#y$HLUaljv@#~WId1X;jQ0RX??4MsayBv?r^xA&v@ZjOcuCg4bYIoj zPkO9!sU$(L0UjR+x=D8N#~jcuRqw7Pg1NqLOpmFcwASF{Agrp z69vwUOE9?Lj*M#~Rf(r(0KO-J&w12`Ur4oH!qv6@1eC(LnM1iTRV*FoKXnX=9$R5c zEDcO>;%h+mqSdDrUXj%L`yG^qEcuVDkM~W_OALn)4V8?QXPhomrDKPPZ9k0utjMOhjUG#WQNz-HDH|%z#`q zcO%Jw1L*vYM+B6Agbed@g|G+Ux(RPQuV$?{-F||tDrU`+p2Lo4^blk-f1WEdx;1vU z3w>ll96P2T{_-jR{V@vesJn*VRqtcYrCa?6-5}O_BgqFR$fb&`RAZ-eJ9Up1!dQucN%ukQyDBf6OLvtR?`8E|eHZHA zE*sDdc*~)=z4RI^>IJO_vlH&r6I*t<72*eas>^pl?}C9P^OF%)=7T&qO0V|pIXitw zCssJyux+myOHUhYRvO@c9msI0O}mj^hGyJPPb5>IJJ`QeWf}#HpJ;}o$W$LdZ0q*I z8w156+ENu`^;HgGm&V(%d=_-2q>WCJB|sgV$6e6&T4_(y6g)z1q>;fn0}fVd!bA4; zUv{{GCq|o}B!vL!?D^DA5HxDNJi+i;bU$}F2vu0NHppkL+F}J;&EWG_&Nm;yp@hxr zyt*jf3m>nZ%+#(rIOJ%Cd8L##Qgm5|^`1zB{!uKmZytE6yoO3JPxu1(B z^n%DhnLFX3>U#rA>BDMtLOGc3_W8$P&U8YQnQ)h)XBZwK*^P#1epg}y!?eTNm8a)p zv}#3r{Q4g51b{Ce#8x_*G(-JFdbS8+^)E0=XDK8puJjsrX1qWAmj%=4*C>)Q>IUrk zDQnOlu*YfA^#S(#O@idndgZTf zG@OZ>5^UT16bp{ieru0fc01&+zPEkIKu$JvgFX?+IDNT$Ao2B)tT6ctwttrJ1acdK zt=~WsF5Z3>e;Dwmz!=s_LCIXP0>l%#w#*l$KX;$){B)CmyeshSn1|R^D~*J z{<;+1zsJN7xYR;^XoV{Z%YqUzMwZ0^8}iZXYa65A0dn-T?z)!X1MEF;+{swFfzy`A zz(iNRO8@g5kkIUiy8Qb~9xF-YZ>q|0#&s7hPN$R*`=Our$1h)0I^u*s#UBp(D^56q z6O(*a4lYD`x7t?3Zt^HY)RC+nP zSPA%bt7tUG3cEfQ4`9ZhGXzKE68%AKvbX|NX1T?hVDG0BELe%fk^u&dqJ2q|#FbN( zbM%4dKeo;HVJy;;J-F}`1WBf$dt9A??X2)z@@9V!B7DqLFmeENd4YD24q2%)etWa0%FvzN3*F{{ActTpfKfr5Xrd|Q`nL-QJ zI>sTankEeM40ItGERTkxV<^rW;wFwM>o>)@Zvb^Ato$nMOSm^lg9N=SCh1-Pu1zVC z!6L}^&qa?{KC|tg>?x>Jw{%}GWjs#*yJemk-a9DRm(?VjND~8o@P1O z{?<{0t%urPZ5RsWzJh@ZM6+Lxn&i?GelUgyU$LS>jsr8_yCzV{HP$ZI*JaY6dGPV% z0r#7Cp+nr0$(i0~tK#^xUfTpw({Ge+tqD$cq{X-=48oYwGFWBQV-3{z{s&-2k#^&T z+n)VyY?5A}$a-K#O*0MSWzZ5#$R38Fw0T*^oy`L9If}B0Kko#0T)K&2OAl@yFP;mk zZeqif7km{{RNe>W5D%mkOq|~O3a#yQxR~+o160PC?wq=iRxmU6v;hBVo^f0Mhl;6c z1|a;qplw>wo*;GDf-dLy*8`oOp?}zmd&TVq64nb79y@&*mxw1n#;84cTxu~%F(o5_ zUP1+W0YdxG${eX+<~{W_7FqCq?Or>B1&m-<09#E6>z!MjZ3F{?xRzpz<|Ea3dQLDW zroa^t9Aaq?rLAUe&h-;+H3P#Nk8@xD!jU!38w8|P3n=kyBz$B%*^w@WF)TyVe?Wy3Z}g6VDY}|dk-hXN!+ORM`!-+A2VX^>z=}K7l#k}>C+CcUoQ*z1(&II z)ZO^4CU{frptC;Mc1F>g>>~0A5X8~At4^0s_MnmMxfin?bnmzq#dg4At5(ko6X>u8 zPh3A~;I>y(z7@!!=-$vhFJHo0=3a#B8rMSWktC1v>&JUotg)87)7-SqSUimm|48U4&Ds`C@lT8)Yr$IWZ?|Ivnc(Dv47qA5W zMtYvt(q*AEuA9y6Ub$2Kgz?-Yojr~Bb=IIPSU)%ta7ylFMDl)Y6pT!?rRefclWA3= z%cRR7&L^uH0pM;KPc?N%z*XV`SO=37eZ6oLvmq+q1zf3#(U}!Nw+MLkd;N`xxw$() z@2dwotV?}2&U-WLm^sdn04Hx{2>cHUP!f-0-^L0oNlpVfVqWN8a4}h@Xh6>z?gX;n zym}Cfu0bN(ZGqg>V-Af<$yEqya=fb*{Zjr=gIaRQ?Vz`T_)+g^(|s-c%EKk{9`T^^ zhakjLCa^|V`#H6C4LpbrOr+P-ExbD$>Hi^sRsB8m%Bo*&;`ri{jY8_lgn_7`UJ_J! zv&v()WUM(8?+1%G@BNaizaC2X?3q{D?KSa%=fR6STdb~3gw<`#D3xyS)nFo3+ueDA zUud1RF+FDWZ}Zib8&?1)=#6Q8F%m4Hli&O*T8_U=aPulMZ+3Zsj4{EsRn#92$U#|7UJHukbU!xXlD)4Ngxk@GLu z^&4qKISEgbVr$`Y557hzTx}^QmIoJ$N!e=Cd^K3K8pF_)`tT^D2;hqn(OIM*=b^;HVH3q$8;C0`b>fT@-^gNhYSV;y`9@^{R5SjIhs=)|Dc%*iHoWtIV?v4((N^4K zdG~BbT7Ns)_!gG0!7tUD#Pg$seA|K@V-H!fkv$3R>IS8e6Ic|DYTJp|?LK$A?V&;i zH`n3m`NuZY#OFzya=_rV;?CX<>h+al=d7k~FsT=0&COVRc#I*Afpo9oQYLlva%q9R zA{<&u!S%tPYhfJU-Jb29vz@2Q2W3ZhiPG|%|j#NwN7&`m+3gal^clRQe@kO6UAfA=IT zX5g(2NJABvhVPu6ZrB8F?E%sJ>UU3J#ZGuwJyc9WS?tl%o`iKzf+J*B=Iq2awAf(@ z?_gK2kKS&nKY1KOP1(?f6(PvV#@mgh_b~C! zR)wM$bqisTTLZpfeQpYNxUB%=SzD3cq8aN00JOp(#7j(bfqZs--%-vicyY_6E9)d@ zQZa3>6tvnOb_gijLT|Enym4{XHu^lKi(`hH;)01WFq0`sR2DVGRgv$g|GJ4bRf^49 zC3X#q;&AULdFpb^>f>9`NsA59?-{ri#G=~n-vmWx%;!A&^^Gs-QC3}yT*t;_D)?Wh zJ!0=6gwZ##7entR@&gM1E_n%vd-2+M7~U!*=)U^nHt4|I{Al?)%z5CrLT;IjtE>r%fai%QmOvk{xh5v39B%qNT4~!v{1_w)k1{0Vwc~aaJn?#QAHM=$wP}cP|C-o{ zsC@0hjl--O#*m?Lpx~n0eyPV|xyQq4mI;GA58lW%QO~$|npTZl018N+LYhXeU&SLy zX}Z&+&_t42*LwN@pOrCM7oo?{bl9PScL1bu7_|8j=3iCD#y>a%HIO>fq)6akkS4(P zWMo>CtuM92%zZi@jD?;nk02ZoOSgx1t7@0mve@fG)yXQ^)d12EpJo(Ljx%A~6!Xe{ zxcn@l?RbdVZLbLrKUlU@NDV{y^X7*WE-oBw`0tY6Ca+XA!_M=DA7kE(?XJh!W*@kB zkC|gEGDr9;HZV(fjH>-V1E6UHTI-~JRD2(a^78MjTq^_g-UPo%CSxmiq@P=0|FuFZ z%uxs+=*LstngNLfn)Q`6bW|I#$s+Cq=iVFjy;Z$Rx;{iPUwAT7f6{iVB-gc?yppE7 z%-5*e)-AFjx7jY+9#~f zBq}5L?X0A|Ucd*!h31E|bv}azBoOJ!<@#cN-Y0n%ncLvSJ2Q!G9WsC4i zx}ZkVb;!2rY%1K&t^Scj_4AV&wKYc`ns@7S9~tLs*-PA!CoYpAKF`o>5LyHD*nmWC zLM@hWvL`>2cqDMcRK$(`Rq~ka=EksXes}Y32lq9ZU=KoK8+HB}oeD0fG~ICBuDdbR zVh1KjMpEp~^nybG7?X`zVY77j9pG-Q+oOM19JkxXXzz!>1n7;LOIaVcS$qhf0@nv# zrx42xpkx<2SS!e)h?!D-~G2Lf`|Zp|#>{r|CNeOM$tr z`*}`%o&kMuI_yuE`|GRI%CZpWB8GM=IyTaeo5qt~`yhD;+rdeK#iJbhZ%m>OQj-eL z@7+o@TLI%F+yEu+Di~WhJ; zD>3%v9S=U=^I96Ki#YuDc#r^0o8wz1UR*1JywS_c{O{I0@te0uB#doJL3GpxLv2fJ zWWN}Gm9R4#9g*Mt>OV%XZzuBGnD)JF5d}im6naDc)Q|h`n%W-yo}V@C=NFyApHLAU zIeXG;#PXr3qFNP=7g1Zg&lXUfS>fl63VP`>QT)PQMrI8W8%x&|&C(KL+cO&KO1=z( zT{Q8upVFzLPDyB-QA$-?c=}`+L|1%hzM&<6%cmyfxSUC3>}{@BRM$t!L^{BVLQC@Q zzze6K(+X@8`Dch9mwgB*185!Me_Eh|+)68&zkJyM>|JvlH|}*{%B|)G-xIHyc$m)! z;?gN8Ho|*t44S=tG7lg536YSLSJKGJgmY9mLdeJw2@5i_x_~w=7j231H?RG#2+BN) z+kbl$+%7NXNG8B5-3>JRte@A|2ne;lU|+7&n(KDwU|0kXT|W`vB1i6*WC3nE-C+DT zVTFNSDR>XL1q_A{YCrSnPUELtPvvW4Ssn(M$-th0E{L;7ZYKJf<8}28a#fQS&^+mS z#-utt7r6atwWcCv%oc$LqF?-$sRlRvB6|UW`D@3rCfvePAa+UzYl$^#>?e90VfU0U zP?&c=N|}8GV3-Q$<_9}Ns6tlY#nBDy7NzvuLd(_V{>jQF;ahvEzYGKb4z`Ou_4>01 z#J!x+u}9_Q#lKe9| zH6?eDEu}fwd}gS2IG^Z#+4T`FkFkxTc;^(|v{M)NoQx#e>nd4w#*jw!Fe#DQ902F( z2vSM73o|=~$cbYijB*uztC9j5BEf}F(=mW=EV*~++cGKg4y#r8ibZydxqUG0=Q|)- znfk~xEb_yxOwLhC#9_o%O*3@9A(s>o8$H&38V#dK!4t0QlH`#Fjoi)c7pw)OQS zxP&LB7`MlqrIYot*XJCQ)Nz8ytc%sv4Q}|Jr=s_>M+d;t1m2Y!2Z-ZcUDR}s)BtgM zC`(tJAEX_w8ysw#T}!Yvdn7~i)$~_M+{gM z?Pl05{#a{cyfZU#juubg;3waCyFqYDNQY@WpKj;{T* z4SgogO{I4b{I7yf4o3+s~j1aLon($!TGWHhFq{eTn}*JKuf>XCWXL zYA-z(`)i@d$z3|0UX1+0f$}i;+&iXE^wKfXN*8PrvjlQhdk|DUoor7byeIA^t-}m0 z@xCsG8f_6u;o-d!@je14n-ty!VB`EGW?TB9KRH5jDD3P<#`3+yT7h0lFr;$Q^{`1Z zgn_xlBjYk$-uO>2e0P~g_?yRFm4)vh*3&br@{O>tyzb`uin#fExVo}XYhiK$MT7TK z1o*sL?u2h@EJPhl|CVam8$QCi?-b!=>Hw*d+O2&Q9HxcbIegCm4#FOn&eNd-wzvr> zpui!u0h~N!l6#5=0$wx4KMhkr>%<@04RYFO^M%3K>!;pXbOLGxCMi-;I$c$29}s zU63;8XoId}BCLA6$;)|L74%0D_{RQL9^Y~PSNQ%EKF&cCLYIts+U=7=6m#GAUz+9n z_}YTbeD(g4CV*irCS1VHmv4rfaNedpuE`!4w~C%#eaH;KWjfvb{HWY%)!}Hc*rR>n zJr(BN^FVBp0ssMxV9A1NH!i?@)J6Nu#UmNi;lUc}BeWS~lUb{1rypRO|8P_j$pL=TE)4ES43?uIK9{ z&aesC+V-RsdGKjadGT=9F%ZFX+J7|_yvOw6@$re~itI$zj!`IJm%i>TwG=JeR1Kg#mj3?UEDilm7@DqaqEzA^|(siJsF0^FAi@hByCT7S(v7-NBd32 zSPub{H3if~2B@Y^-N5$D0ps=tJQlAUW!HVw5G9#d8G;D#^k8h^1Q#zMq+G zW(SUiHaCbklpUSV^Z$bCIJe@z2>$JI@f2!0{>e6)bst?}LipgtEauCZV)bEcI^M+q z@S7bX=6u&w^-3|t5C8^WRl)0;ltcEBxv|_dyWQREU;Bql-0;8a^)bS5L%NL@e8BcP zH!XU6H50@&Z}R!qKe3qLn?@7u8SLWi6Iw>Q1;giQm| zttdeZ^1%Ku%Sj}j0foh)=jufrkFo9)Qt+EM?i$jr$G44F$u`7m8SFFc%6du77@$>k z(9&RtCziG2`SoYw`N2WN*6*h57AJJn?pR05=i)CSQ`l?8Am>0Sv=lhEuZ7+|5!_mV zZHFz6ybYLnE5J5_Jkpu_Ty89l6kE?j08*6CMnDq%$Le5~qf;lVzm(uhl!=)x^RZqJ z%=-}O7E^uC2frA0mSb6G(&W3Ydsuo{;Q3%_MYkS#S>gvLt3#dej?c}up0^xTozl*SV8Mz zdfR2--l>X%!YCaiD_OoFwdQF@Jn^LYjVu^UKUGI{U zg_RLY4MkCnvoou|Pdc0yi62PD!Jnc`?OX%EKI5VG-o@O)r$8vLY!KnBB`Cy>h5xddA#nXmDkP)i7dUQDub z?U20~4J9UQjFLP?zvtXhW0qmtPXfn4_rN;OesVNt@tX6NC>vtA>EdqlR;7d9$d=*& z+q^d^lZ$|1M{1P$T`jsedhx;vv8SW1geHOyb1o$gGN`scs}5pP1&C$}{+!&;2lQyV z=J~#)j%e*rQ{|D!8KF9m7KZ-?f3m92A&d1<`E2NCKZ!htnP)ay1>nbqfd$lEi8huQ z#gv^n(6w;F0;1Ne&WVLx_f96-0_|w$F1=_{;6e;O`3N- zC8!L8wZ?PhP1<_~m|Hm{Kz$+VEqbE>pvQe-Iw0}5z>u%)rEdrBDlb?xiax^TUC6W9 zGG>TE6*s*%Jj$Y)gS!S@Xf*B2wfj@z3v%=BL14ChM{quwSMa(>zF?0)H-hF5pREe? zrw(wcJb4++_U^;Oto}qy)(ECbc))yz_h-Qx&k|sJ6+zawJdTVh^{wtskFw(n90!$Y zZvNM?%sK;DbcIvvLdBn*^ zoXU2X*n&;VrW@{RzI_ILMYc;YAMJJ^8K!U%`&>R?(~WME4-&Y571UDBpPT2IJ#>M% z0Xqe~Yt?nuRlY}WvoBdctmLY_Z%}X=hn8v}4;o?-dg2ES zfOC0DCi1NTt5)iSxgimFyw47NTZ|SAuti&dnv+u#eCiGCsJA)L5XIYJBgostmF7V9 zVF~)d9BAe)co;|MpDDuHl+M%M?_m%)L$vt@x8ZV;6;LH$2Z z#&)%d7mbzY2~zl_&Uo+Lu}|z@%8obpj(Dc{3)%sn-Ch&%^H;}Bx-WA_C+`~@Dr#Ds zw{rpUY{IE`9ih8#NLQF#uk^4S85~Sds3uM(6;%rh6G#_^23e#WN`(`z&&i z`0lHE4?{aaJ`%e}b`;)D>M035|G)upZn{pGOb|J2Dc%B9f#fpxLAD-X&JSJRgceXN zGGg**>V56QRMZ*fUv0P!5Yp))<&Es6)`Tm0e$pevIYco5s^f>6R$wkYXFV%R#<~H& z{U-Kk@K;2W8^Q4@I>8u(y!;-htpK5^nyFhSYdCb8w&+2OsFFrcuH+LLMZGhmr{w{y zhL-*Eo^%fTD7cv-WOow|j#1W;6J9s6odKA@!U!JweuH%&3E1Kd z;zAzqh6*~B95b(^6_;<8ZwB+9&uLpAY~pCoG1VN0>0jKB3gcPlnQrgql6|_@F>W#j z+J>g}1kR5tDmX5NUe((?af?YrZ#?A!lK z3L!3JXIy5(CL@`bl@%HYB_!Ekku7PsLq^$=k4OnetGd6{Fn2BuY zt3MGa?ag-0BbDa)xzLkiDS;$2oIVhp^7!Rs`DRD|x%(#+XeK=NpneL?u@={Npl}Fl z^Hl0~xN^jKbwdh@lY%F;Pj0!ZXWIgbQWQZefPN@xRORFC2@^GGlMj$;5CWF|3W2b0 z%ht+g6NEXL7d+wYl{^pAylBrv5g#r3LGjIw8gMFc-gBRLM3f&iI*|G(vuMnO(o4+m z)jNStDX*a%lpFqy=ms^XlRbUrZX9H;7l6 zm*q#D0-?GDBV0ur(K%{50{fFT2ah#U?$5lC$tbY_?ZXZ>O1T}-Nzt|ATzIT#vW*(G z@a6QtBZq@!>Mmt8mIVMKwhw`2UA}_gtPmmn1LyBOkO&bs<{eJpDLh*J+TV@Mo}sDR zs9pYg#NHREMnl6K0pkG&iM@(2AJ{eN2ttii=qz9amJMoln|K*|AMP@?=MFh@m0LFQ zCn7X3)6Uj0L)b>T-1nI(l&&R>wxu-W86#f~g^`4>%mA>7^n@sPQ3D^SkNN=n)hd*> zgSla~y;<9|hTgFGPhd|!)Kkzajpu5mWX@W0)Uw0ww1An%9!!5inQq;D>z82)7_jN& zL4^&{V zkt{#*O>MJtYzC)XbP~)H_DAZP5lCsy^VlRd$BV^p8aGn8lxPdDuM;~`A+3x1wo^k} z)6L)I-LS*R=iqA8kaWwl2fgt0t{Y9z)&v_@)=T1U#DaX=^7E$gu_MfyvF6#iDG3|Q z58U8P`U?0@c=U63TT*7J0rHo%tM~ttCV}iOUGRmk{Z^Iy<=A04Kt3}20lA0H7ZBbo z`nMYp5208&;X~pynY^&`7RFw_#IVRJ;p9@WvJSF9N^|v%_9yonkcwG}gavUigX~Nqgo9?_qfyF1(GhUxU^IyGHSDPCa&HsUY;IwDqa>HG ze9T&Y%Hal~+4VjW7IOoo!Q>NtPV+;9b zGknixWrWG-o5p!!O1HuZ@Ky$#G=&9VF+38tyU9$~5q(ESJM8x;URYl3lbf8{Rp!tV ztx|Xa#A{lVlIs1GSHM8};BE|^oQbU{e{1z6BWj=ZuN>?5ZO48Uu(>U-G)d7n)3 z$!c7zqqnDIg1VggbmHND+fL>!umav=pbmM;8UO-hYdTGsmIUKciTi6E&Tdi(d*D1k z?WN`?F+hNA%*wXM+*MdnEF&3q%|>AsoM%xxlbo#9j+*GjnyBGJARpPYLa4}8$;!Gn zc<99)G8eT1ptv1+YEH@s{SWJK!Hp-0V0&?GM7%)pmF=*U?xO%ot2UNabVR`w9 zLBb1UTmdG^e1Pk@H*e=x0%lxb+DH@1T!whE}cOq4YbXA=QfSRW#xjqYk- zmc$9w>2&oiY+<8J5l_CZ3#X~6O4wuc9&n^IgZMI6{RQnEO(+l6c2J5@5 z+uf}AL(tIm=oeYh>BL5K3*a=tHP~CF`=jiaZ0Ii$j@c{8`PQVUpoNNq1djy4qaq(R zQMBFT01f0JjXn|v^i01`J!D@uk!=5~ky=tP5=mT4bujyr^M^3CLRr&8|6Rr*?T?rG zFsL8zQ11KRWgtH>z??|Y5_{IhD- z1|_gI`dvnFe21Z_{J4CESnzuU1|DF@*C>LYqN`h?u;Kw$6oG#rayLHjg9l3+Sxj#q z{G{t1)a#~g_bnD$oit{SuKUQgat(ec9g5Si7aSect4+`^W=_@Ir@Y4r1q2I3QNe@x`xYj`y4ShnU2a%wM}#=x7^^SpTvt|Ahd3rwcAA z@2j2#i1L-)%NAY3OMhHwLY{1ZNbbJ9r$Js9T?@-H8Yfxdvzd3&Su}0{;_!WFRSMn3 zMpILn@&~p830RQLfo18`^)_%DF$Y7Qbk?R|&9_n%*po;-%;nHP>y-HbvFSB=5`y_O zbplP{ZgzQ4L#Yk6Q(1*D8-zd0X6oHHVUr$w;m)(q%}WInyM)B1rC*5`L$Qx@&t{0h zB~|)V3ODcjJK@UZ({*PlsQpYPC{?OQcEN7j^$eh4ff-OO>96+#gncx25Uea*pea7M zm1PPV4_ok`zR&l*Y|}u;bOaujuA>T8;&Z8@<5yCxFFyqQkoUQ@6y-H*%mRsOJ1BLt z>@`_0psxgn*ufElfI!T=Cl>Y~k))LFI{S1|q1fOhQZ)*#8P z9fQEEx&|xK z%0^{RHBrplXAqWKEG&|zHkp3Sh{7d_@&ynxlVWozZPW70mdklEc$fnoh*-wGy(9N! z#^NL%D_-+|Ik|po-dPUdvk%ov1Kr#cy-hpqYhR_ z5IP_{5V506-H>-=3TB@~&7s#-4~UoxPib!0?ilTk@{E1osVKAXyUFJ zxEmECf=h34qK!lO2R06rwylPRQ$=p7Y;12VM_^Jh!spn~ zvQ_9ItnO{X@RcQGG}hK|vqN}i-mu!P&#$;+1L)2A!S|pR>j7Rr>BBN8G`rsQuj5Xk zjLBtBNJ`Z+4Y_W>(vr^MWk28HE0aJW8N9}wBx-v)^UCEn-o8kU5llX*TBKlwfL_)> zzb1N))@Hkc^sk_dW{~%IuJbf<_y+7$5b@?W_uV>^=KPFAHm69H8?g>a;+E&y%$;XdYlxN5{?)_DcI6EI&FX+RremJ`u4M2!Z(lrajUL@)xE-0ru#3Q}xMReFoN=nYt;!RG4sh4Km^jUPP%u)LsOjUfLnNYM zT?1PsU7%8$h=g64bWcrz0YIExZCsJoE+?ijrVnzV6v|;OvBUi+b$y;zHwio4s1nVh z6H%|SQ=^Qv$83N{dilo}SBInNLc5gpvKPs<61I-e@!iK5_SMattZH_Xg7t~T06~7c zztt9W3{zMP{qx+bPoynS;NnomR~9TS=GWLBLf1KS)6y)J1HUUrZ;yFiu^*9_Tw z93lpSYA?3;=+MZr&e2k8B3jfctYzC5lXbW#L!Du|71(V!>h>gK%haHvA?Ai&@gv~8 z4wu+JT9jm6T-G88+M6x|e<;zQIoZhroR&cI}Qye*LL`cKgV8MDO4W%YVNm{WBE&xXm#-$X1AS zrgIeAHf&+=u6o+%wdwl+O6dIj!>JsfNUl$ zaqR8^hcA$XmKJoDKNr#T&}fm9q0oj0#tqmNigEdH)(ilFAb5g0=%g-}bu8{EwoG;9 zGJfH-P6}9J1*eC;S?Mu}+NiN`N*VY6B=9&v7nccnc;OzR3}Ve3;*!;yy_4gMvRwGm}8M~J9lE}2rgyn z6F6)Lj8EB>F8#|L6itdROz_)@<)5JhvY?J~PI^#NgFN3AkG|@^0I1yW=sZ%*G1l_B zP1b$zwk=z?e#T_03S;5UqN^Fc%b|Kop9v%ER}D(=8{jJ$hw3G>SOTP{z)o0({V5_N z?XW;cvL4p)MbJ^4xK$6oyz-rARDH7gSx!v?7WCfKjS*1(gz(jA6}r`( z)5LLU(!+6lSDA{5P^4U%smT}cosS{-Li8I%x%yoH)gQ>(gN8>u^4aZV#Z;#nBCc;S zCz@#92EFqDXIRvaMXK!r1@jwD4O8pu5*>un9ELVpo-wFNIz+qgltBsq zG=o;DL8$}kD^@C$RtY_S1ihoBC>Nl9X)aR9wsbv?*YFltfiF$ef7xRUiKpY zS+Hi~sc27gXgs|DpaFR37@>K)|q^?cB{i3=(E5t+TD5%OXOW8vgk>@`Rhb6 z%Gue4a9q)kEG6{7m27+fCTt@0vM{E%VJt6HEH71Jd^i$MI7c^Zc(YS^q& z;TuZWtWUH1y0(E1dx0U6q{mB^RQ;vQXjoP%Fto+0f~omj9My*qJW z|BwZk-C%o#s>C;TD3{X@LnU2G^4t7ZjO~ZI6segqSUB9sNz8t)y9J?sljy&nbkRKc z(Q0KbUvB~FxzSlp?j)}yxgYk1YHY<#d(z&04?n|s^9l@?>9wCHbt8npFs0P^GVVYF ztl#HN>?<=#6G9&DhL~JjT5v$-Lhlz9Fcg!O(9vE>Bx#yNqnWYH6Jt)_U?k86#&pIW! z55EeLs%1=c=xB()Evc$;u63X5g^;!n@mevqwGEA)speTm(ioBP3B=zc+8mYN^OTvQ zhKHny2BQxIPDFGT9HcfbZTc30Axeru+oN<{0l@y2Ay}{oL(2`Ae?40{2gs1s5A3X- z#6D9^dXQpP674w(gmRHCsk$1s!P*0%Z1JHIfxq`W_|fam#4)l@~f zblv-9g@?-h&1u}JR8nCFjMQ^myj=jG3R-c$gNh%w zJ5~tGgn3Bnib%*ACU3 z2Q3rcgMl?H+CBP0=qHBUc(y@`-ZV3PFnct+V1Wdr+gzFtmyf z*zejqrD3fJsa<%6U|qZ;4RQsKT&A)@q?#b=BV2nVq?|RN3UaA% z)-Bdd#cq|NsJug(nL2eMbypuy_AbLVh&T~h#L1?%B8CQ-=pfNhNi#;aL}9Z`K%411 zuVpwyDsa`E$+(~xAF^Jm>E3Qghocx3v1|mTl_jPssQiqPL6OELCXao-zD>UesGnCI z!XxiQM7MgZ!%R>z)AvMWpK;n&@O0706HEhSz?HGG1-HOcATp;X^+d)~s`*nVBvXf* zpD?Hb-<35kif$uwyE|Rmw^kGe>HB^J-g02*&HOD>6#Gsv=6I}l&Kv|Q21#;n(lB|hZs5XEj z7I$rl^j5*x_jKL6n-)hyr+`Ral*d1Ps7Ay&!&+DBAz57y9HN^6)=;h@8vj5T32c%! zpx1OpS+(3hX^x4-WCZizX~XpFB_;bfCjoFMJzbVT{qa3d@JSB0q_s@;xlOgpKLgAQ!~%Khj=(feiL zuF!<;7W!wp0C>?0BArj73N>=)z)un+V#j zAlYB-1>VPs7>&#}yQ_AlUrQnKFB{aBigg+@w`WlWIt2US;XN_~N z7l97qyE%z#x!$YWtM4AlBh)Rj$+!CF91dpFR4BRev6s8#svBGDMWH6#eIE-QnqgyD z-U=pc{p@4s?;IOtSmNlgM|rGgS>ypBw$6lKvL;9=EiU37+*(KnXmu22Y=p) z-}T@>Z@_3@fLA7&udM!>CZd`4fBa8mklf#IA8N4grG*JQMml5kAc5+&8<1z7}#IKnu)+UhN30*IOP|brz9DDAeh-9yp0rMU?Cl>fvxX6 zaVsVUQ#m1Kby$ALB-=nJm2SKbwlBlvM;SzJnPR)bdH6mfPDwyDbqy8+4{?&K$qJ2- zyj%!e*{&(So8htH=fmGgI!?BJiX8|XupQ_Il1L%n3IW0UMmuZW;ga=I=H%$FWisR2 z(~qLI$*4*SpsVbMl`#BqH*&dqq#zi$@+G1-q+hqROUE~lrUV(NY4$Nmf+GjD&!8?{ z&ek2FVZDV;*P%J?4fOT6>Cz>Jo#iP2?iWfM{-^>~@Fp|rQ{n=zEd9}|Ahs9=dYS_AmmkdJ(1(TjW!4vGeCL%cP|V744F?r zX(<3&>9;HpNmLT*Q`KM8HIb3R=*m0DKM55%f)+)m7(y0|;*PHKQX$C(rMSeYr+Lh( zE~=-Gpv!?tar#+sEA1DmLXu^fP2(Pnox&Yt42ngT8%<(N+vK*TIh(YhkGLz2-i7h4}qTvt;07Jt`yU3c?bpw1vi8i zXqRv1jqZL*EG2v+J4Rw!QbleZI^MFWcwxk@cwjwz58`x1bFY4*bw?jxR?`Y8i!EJ& z*|ra{T!BYklzsH>sUh^mG|-){!A&e7iRyP;o$okK&<-2W{(wkm>K4UyDYf8rzW-YZ#WL>ShPs^0_%c-Inr)* zy~l(Mab>ZehibnZwQv5`kSOTO3xOp z8qxQ!&E)Ss3z%ys_v5!IF}c@alaUnb9FDzR`Av9xrmUd+?G)QtMtXcu!k*;zClL?k zjsq^$au;fQhwO6*H?}lJXA+lYtE{^+?w$&`c9>PZ8dgrDK%qz0fJAfrfl1`zL5o~7 z$&S+odmuk1X3qz`TqBm{9Mu(c44M@El65k;KUyhI0`{+73HQAzY8VT6w6=Pid z=9F%9APdbXgszv0<3c)fh17?yrpeQ1AdJ}cj{nw=&AfvQaKvyU)Y z{lVHF^0dFi-h{1G5UsFmu!K6;#dz81Lvd@AGsm{is5^o_g>Am0jEr(+w`5vBrS-(U zid;5%O1zA9bOuB}5m9V;L(6KI?&I0ssm|+>rX<@opU#GOwNPAp@NM~hsD-tD+hVYuc|Ql;Ju$HzVG-c$1@Hji^owo2 zsyZN^_q5!rU?gv)eA0M?JwyAD3%O79C_L?^#tB&fW~>26n>N6t?5Xh_xaJcjeudt> z(vFdes<0LKaHLvT<9VR}Q1jHH?a=4!CGTGVH7~;5!FeLO5$9aMSKN)haNjd{1hfiz zxfDusak2uiO&ppjmcJ(3laag$s@IpyTG8I7++5=Jsd;(L_PMLT0aQM1Gb(knzbHrG zNS*%pHPaLIMgXc3atfKZ3pXRH{0`=t0dPIP4myn0me6c>NJ`jr-(@jE@1RxlHPLq_ zp^0eP{0wgN3&nF}g44X^Uq)R5d9+wi=_o$LGN=PB-0cXmjcR9w!)K9o-`ZQAK=LH3 z)`6#lmW|u6Y2e52gD{AGgny{K+n7z*()fI2HbA)T6%+q8zs1FUbMbCdqeCXI<>&{X zkmo?}ORdT@zR6OXuW=#QK-|bxyt&lZ9G7a19m&q=I0|c9f~ysXlblyaEEy5GwNRPS z>91^$&}qSMopL+i*)oCk#~*3YZKZ2ALy`>x1dzrarw)?x=%vB@?LG(F1slRDb8Yc% zK*+8kd1sNzj|alCnuoKJpR&v>7;%lB(6Z9QAyd7t^=NSoKt@cCgop=HF2^hz#c`Z{ z>z&&d8lBAy&DA4B@pCEX4-Z{!9BO6VW*R-#qR%{-Dpk6h%lI%=WcX`C9|8&cUUs+| z5>+^aT0Cv=#H*Uz4OZ!G-U9)aw2>}X_}Sj+VY-uKJ^#c4(#KKn!hZ*De)XPz30tF+ z;W!)*zaanHyp(>E^4;{Wul@N63-5k*677M*SIAf{pjJuq?PhcL_>P6P*hc$HV*?s3 z8-ocSU~-6~LUqVHPy&a0-!1P_pF-KCc`d0(OR%EpR}JJ&%f4gZ@K#wD&5Sl{o>xG(yENx#<;L>necZQjCSTA!fU}AVC(P+&~@lzo?9M=wsi%6b^B0)v&4^Cw>W?q`#LweoV&#Gl- zuDy1%Zu3}NA2bz~AYkD)Rk|F-qZVyrT<6&4ZHM%dcO@t|K0~}w9`pwcmQtaP5zNv< zV$>Rloo1#NMTQ9TzE2+SUx46lxydtzOkDTy-lETF>ZJE3^cn;_x_r?SrMQ3^blgaS z4DXGd0ODEV3}a+=bybEDb^8_X_7JJ&{)BB1&IqPn?vl>sSobc`@R@QCexQ`GZ07}z zX7%Nqm(HfP!BUO^Eopg{LTa^SSl6=g-i`KTi-D6Jp~Ivj&Se@Y64hs-Tt@0_DKTDi zVbHeRCZo%+PLuK`=@1?Da|s{r9(g74J{;jb7?wFL`iA*!f%}=TRI-fGFQkBFmgr`{ ze*po~m2u~5tYa!A>63pe06(b~i>&D}zqaO73U~n6@S~UAQ>VhHQ{x>WpRd0U7&54B z=FJ3x(L?YyJu>x?Ez z7H~&8sbbt=m%S{>x8(7LD1RbtX7`W^r9kI!Q!O+5S$yLl-gt5g@*0EUM#GLNiScOp z0pqJo3Y@?v^-`-2+2TwlPs2X@EOE0Z@1ZYq+0OO=g?+5@Bk=tt(>UNe&WRs)bAQ-$ z-atsMpcW-i5!mJJWQ#HxJL0XK${@oI*83J~z$eJONs zYAl1;yQ+MB9b-lBr(W5TohN^nlm^)#t{PF@G;J z<*}Ckvm}Ff*obV*vMfh@Wb8;13Ave_9g{#y*~uiwIfW6P)QfPo>C$As+NIeg8uUeX z_0APK^eWV8O4P>v)&0~4d(#_vldoZGSHH}vlZP$aAQbfkF zWJ-3Yl68{^pbKZucv5J@*4+7mf!O3zg3DHZk>nZhx%9jE?0hv6N`pNi`8+%y_y(wn z(*7oclkBELD%n-7F|&RKUI?Mt;8VMI;&gc4#91;?j61De73Zycp(cd!*>of8OdF8> z0>sqM?x~9v3Te1y$+2}B2b*uSICSS}=8_V?N6=C)WzI?k*#Xhv9x25<(_FmW;o&m| zTW~SXK4We_1!A1BCq*jlcKb==0h{u_v-9yDJpZF%<7I|EEGk zF1ycv0))lk+^R)^(-b_8?6>4Ul!DB&uV(2T%qMe7_)cHR`^bS;(N7Wj-42?a?lSd| zpbO>-TB8e`d>;}jpUEU2$Dqepv$Q5D(CEVb?MhR(V zVPnjh5@H!-pdfs%I4zzBuM3DI-Vceh!h}KkC_iJr13TkEkc!Y0&)TBSaj(1XZcwVu z5rs+dMrE&SQjQs6nC!PUUMuvF;366$0j*j-$ct+^p3UOGX2I%Nns1*n_?qZ|Zi&eV zPryk*8<1JoygfcqnnvCgnoMuAj}J{s;oJoq`}nfdsb1iDT*r8sN+*K_X7NHUibL=c zRUhC747igNmob52XJAzsBSy!35&LX*>5Dm<6~*>W#GlNQgR^*N%8DDpKhN-N1#tHhR)&Tju;tSrJaR*4N7er?=NQpL}}Fxbu)Q)iq;wsXub~V(4aj zmx<(jc1U)_T$!S+sLcSa8uJb1QCV4DA#5dvVUmq;?f?NW9)x^eETXUmE=hxJ!e{;t zJNyu}{Zh1jKe(yH0HQb;X~6ZY%$V*ljvI9hLV|}-TcgL6 zs92U5O+s_!KVX7h+lgl!8zs?xAA4Nq)X|R91F4cIdoXvGm%n71w(?G%tQVvqYNs_r zHz-11LTQ(k26^8L))ny26yXkwm(?(hT#PJtz(0fDLTsUqPFSc)hvrgdAW8F+N(01c zgw=>{h?<8#WR|_$MK8!8n`e%6V`qtPG^$*+JUeK z1k2|ecUIuR(*5Qmw{21}u+>ziDCr3+2k-s-Muv6Pbpvh;NpVSu~RzVBg%*}O}jUsVs$1|lw6nwZ*A8=1d)=k|~&}C+BJ7-|iLArRd zYN{3d&n$T@`5bsM($Da%v*SYgalr^!NAi$dE7Cm3d0=_>_55gC%sP7vUre971|klX zkCZox?B?W~kQ~cCt8~mcmes9(Hf&>|Jw5k%?Pg8l8W@?;3;uDE@7$I8o-*gz68X{1 zh3W&QQ{ZIWMw7a6zWPI!&Q8?9y3J^rf%c`5eRqYJovgBp-SJs#rSk9dVqs}v<99>huB>d>+>u%KUndBKj7PD}sZ56k*1dA=fjM)O-lBK&P z6UF=m9w!{lcUTJSPdJZ#OgQUVw8(mB?f{MTgQ*Q5Srx$s=&j`whwrzWKUz+v_7@QL z`zJpZs|TF_V+z3H!FU$CQ9y`^w;vby@$;HZ7TH2N?1GWCFQ)& z8Cf8%{+O-z-e3=_uWZ`L0vbs(1Fe1enXo(VdZxwpC^zgvNP0O;l~2!vV>gwxVDBt~ zKMEOYAH_7EjHBw+P0yK9qoWb8BBDnfw+SxgUsphsl!#I54Sld#XLVqG273&t0b%1* z<=V!x1_z41D2a-F&b;T_N9@rQ3_lloSZ0qnIRpw^Ks=gX3)(fikB~5Hk?IO|kZOaaaJ@X|dCFY^u zJ}!j)sN|&Qlol>freU*&aN)7z(Xxh`!*eM*EPeq(E!LIJ-dBOMUqmygQqsi`{O@N;#G}mSlDPF(FeP}+~ZnT#kj8pcK7mwUH zi<{j*oLbX~rS1ws`rTORk;8vC!tk%dclr*F{9~LHlmm{7BLC!Nu7B01|D~;9!P`*Z z7aB3`LU@K3-qcp?tw{_i`&rYLfo8l$JM7b3UrY|z2hs^D3yL4=J&+$)AHdEBLlC8uE2YWezQHpF zfj~&*_!`E2Pcp>nET0gbN$0&My8Brpx6<4n_tcTEV?Q)*t7P#jcey&Hxl(@^{}T(y zYJA$XIbJg5Ua8!$6}3~riQDo_F&$(@eN1}RCP~KLb?y88>F#|Qb#@chnZo#QoVqGa z9jBNGhx^Bmt9J3;AA_S@ko{uUDW5Y7NkQgmu8~tmbIj2mQrY&|&IVWGOWHR|+c8nB zFSf8#%AYWOW>W57`HVb$;!hcTTc3|r%OTBge+5Kz3)LeKe9`b0Ol%QxFY5B$z9>fX+Cmp ziBQ6EuKlb3Y5DVahMxgtv|W;=)2&}FVTdN}9ln#)|GyuJmBdpn=CJKb{L>^p)(S82 z^?!N!+>t`Dc2^i*B>oHM@caXOC!7EO@B7KS_}&Yd{+Uei`*Vs0gR6))509Z5sqqs3 zm+#}B^T1yS6TAVx|L-q0By?K-8OS-HRZ2ns=Z`mK+u!yd!v*r9eyOc~|6$)h|IIu7 z@6FqvEGCtbkLv&UuIN>KVcGwKw+LR@65v#RH?xi0u*Z-~pyiZMKLy0-a zdn1PTn?~-(FZuov*j*H7YGI|+ff$8?Jq2$*$zjXU?|sq&A_ItlY$4Ar*i;@i69d>Z zA6U0-a8}JN9OC695z3h{Yi;5Qs65 z|8_lsW_|^c*zx+yGV(P36!J2Z|1fp`(d++p4P^GCz}G+~-I@NkL&jeh{{rXVPeT^G z1hzbI)<>+Dtbl`?hrqXhhDvNf%4||8Wo8fM6r-RimIwH(Z>f8AtO03osXj>40~^(` zr!WuEcUl{_<^g@$1^7LipHsp159Z6qBHU!oOMB)V>#E8>ASL?F$O~dGxVS}6lHv=^4 z2R&hrB*=Le^6B2)>dLk_^Cd5^I>eO+r}e}b@zRMqdAZ$}*S&$2+< z%t%;8OdQXZ8=ybZkTAh-2Jf1Fm_Ka*We9u?zDZrLJzXCS+}#ct-#{Gtz;1o+Y87mp zhQ95<1C7VqPH_PP8|QA_RR6LD9+^= zAP#L9!g#{$!}K{}s*$ht9rNZKSo--&znl1(N4I;nrt-T$`u78e$^!2{5%O_=nW5eI zT*+izb(niQ+0y&|`M&>N#~T^^0Woi`dO9R=#Lee!1wX4&F0$F(=Cy(hgVbRH#Qeb<^2BHPXr=8k8rx;UoOY_Orj3}GQhR+ zo)YW9MYTdT@Dlj2T!F6o+VM!qhlOx+0Avy2QL!aaamb-~Z zC;!FYp&?|dIgBrS=(n=6AB9za1Lj*c&vf&zpWmN#H0C&WV?#JN=4R<|5r+vN-e zcL$PtvzMe}$MhzYy*x0sr;4b~yL)QKt_6}Ts1X3kY7K8XGlOS zn6cURSvt!J=m==X%1TEeFus9GaB%T%iGpb*9Cg`1o2Xua{=z;9!YT67G;RPD0*S&& zSAmK|+AG4{XmY5R+F}#P8Dt*diV+*ZDBcN5JnGovf8S^%aHTW-1GqyjSNb$~7$sfp zmfQKY1pNI-{A;vgVZ#Sb(7fvD)c6EKN0D0}u+f7M^sXxZWx1kaHHxrK_nvwmIBCO) zoQ;6Q;42irxn)cz5_c^$=s_rG`#9vI2@joDrbAQD0onex)7q$WAENfcN|ghi9Kd?qR$!*0w`YfLIg15Ap@`EoSl$P`XIVaD6N9h;vpI0xbFDpA( zx&zGUCH5fP1A*EAGR1L+PjEaJt$pn$$cbrUcKft{EQONlN%V-s3h=ON)|Vh(WX$&& z+wDn}=L;RN$YMRitRKKeQ*}ZIIn3yxK!s`S>k)+zIiLsCP9}M>PIW!}o`?Vvy$Ib(KT| z`OD%lt)b&h_Lt*b@;4uaE4${V7KIWe`)q!$Y-E@h*G24>M@o&#oIYQNzF4CN!I&xs z=KF4*#JjD&?>IGGF>JcyLZR=gSWE zJqTa;JeJ!O0;1xcVf7YT^v^bP!eRwBQ#D_qkzrgBa$hnH+vS(HzVv+J z-T@aGi5{Hlp^aih{^absv(SI2cMZ57*b=2d`(jAxibU*!X$oTkgi>no^3FUhLZ9y> zy1Dyb-|8RR8g2u`NjJW#o%gRMj^no9fke@iobNu&wL&ZP3+c4K!A_pXbN=4YlYTD zy_^kBV3vs_LvVli01>UkzTpp{dk|=F?9wxzp!GF6{IhMbP@_A_38f~=y;bG8a>?8_ z;*EoFTEg_0M?QW$+0+ljuYQosJ=wQk`_}x>Yn@03RqvsDK%XJnOqbpyJ?xMmTZ!C; zbxOw3)(F3<$+X`fRlDui9bXXWcjJc*@jtPV9sF}&NH_-KdQ@M8{_2K*9%(Wv?CIja z{t?IyaBCH!*c6dQ_8usrB{n)XAzUQ&W$rB5!-ufqUITgOlY#nIq_%WyCh8%^VDXCN z34R}9V8MHf#?VQthTHh_iXqi3S~mAeF)uB0>YMh`9u;_yE{H;O7a*pog<)d)DTwuH zwSvHN?kgz#sXHzgq=3g8gO*KJH{?sQT^HU^dxBXK#&ec^3VpPhg9mag)cmGwz_Hn0 z+Ti>~FlyQFiPTkK?WXLpv-)+J3`8J2aMl(&e79A%J zFyME^p=lR1-}*o(L7UEEY7yrs);DDmAS_rtXkMJw&x4ys%rQXDt@!RBa}uq{tymDZ zoOteAc!=`SpN8^3-}>|illgL^_iOVLN%AMe1MX2V zAgMSS3m6BOTvbwlIAS)s&QXrB7E`=X4$k=fz~H$Fbc{s>g68+?;W7D& zBvQ9ikcAMlBdkqzo~0OGjOK%d%Dor&9OSTo5z~&k``SWO!^WoyAo#sRVtPj1V40iE z9VTA=Da`(m>@y%#C{n4RRoW9pPO=qlfQ-i)QU+wNO12=R)V!f^FzqVVyXVaZYuB6T6@4?YY_&%k6z19Ig8@t|u1nOekr*t!f zA-L>;mebzmEFS|5-3S-H$h7J1H4k`~3Xz3lJUA{8H{Wk!+b{BurtF^p00O*R0t_JO zV!Y11pWfj9t*G;w|8lOK|3Jus&*ENU&$kP0mwst%hy)S8yIMxq zj;o+-@=K6fgN=9Q8MTkY=dK|T13bA1m(3d1%-{)qm+UF@fA*H@%hD8Y8iZ>azFqUP z-of2}?D4|ZT04EOXwc;fTW3Clc{UH@rsXg94pcmVzeUHE* z_aBv)Vf&w89GM#ckhPI0t^U0!Ku1gCe|Y{kwC@}KH)*gN7?zf!mq9CYIw6sKPy!<&I#=?^~V1|gs{VS;{()NLGSjAF6MxXZfZ?I({_V3t!yy}n~z$9kT>=o z*i%`6Z>(<}lp%*mohZy1*YK~voVE(BqY5elv-XXQ(*-VK_L}0nO^ z;zjb)DP}d|jMc=Bb-Aqb+VwA-8L8Uad4Xi&qUQ0tMs@Kxx#W5jOU^3{WPP!K`$twKzMpG z5a;9WW9VreCbhrIrMSJ^`diAIa&u5)pyuN-%=oMY$7?2l5@7~l;R4$|u19aSC`aNv zy!`yh*rPQ$2JLD|QS)X%j`eQy>|d?k8aNg0@A%t= z{}Vz+@M8)2AWU7a9i|9zP6EHE^&kv(d##?q7T-Bh*y8&Alb4G`EW0w35qof7xGe9K zI0aiDL68OtHDzF0=2Rp)=%k~MnjVcft21W&1r$4xV(Q>)xGbr;$?-PH7U)|f#zM(1 zV5KAP$Mj{rE2sUlYg(Xu~qO&yA|I89ax`ZGCtrMipD- z*)fD_A`le!L6UF2+ZEzSFG0^giq3AWbB0IxN8ubaY)3Ly7S? zOwX-@Cd{)DM;)U(tB1aueIRhV2l~dV*EPG^kJ$n-(=v6@8f_t{pP}ZQwqfRx4&99M zhA7^wegP(PSS?DRYO^0&omPQkP|r|p!o8*6aum*v+jYqgRWuF@no+* zWV55`NBUC)*>x-U=8ljZZ=VB>nhPTgRo7;jrHpEAXL9s*Kr7a0i#K!ix9!rOE2Ce4 z2RytAcj2)`yXy&a|AlaHSKrW{guLN0Rp3%=t8zj#Y9+!xS~^u~i`me=LVdYxJ0gt`CUL-bOqKQJ&6xbD@Y( zjxdBs^FfU)dJ|zbl!RP=9Kj%}xDwz+^V}%A09?wBXMBZ2n|xieu_8e~5Urt)?@C@V zUGwUO#w`uysO9K6zxTAE-P+qhiblKG7|a z)qe~8=8HHSbf_UhfU!qh0)K2Mc;WjE>whtT47)C9+Y8R=VLl<`cc0qQ;~$@C)kfJc zXufk^efg_4H}c{o{`a&>HW<<)#vlG3lJRr@^o1o|?-vqdO5~5Y$?r+8vAq^}3;`t@ zTTSc?8D$z3xNB+T*o@^4EaUgo@EdCSgy|5(qNoh*1`T6J$7`M#tfD z2Wh#cdHz4r-a4$RzUvlNZd5P{3kB&C1O=o^K{^yfKuT$(q#Hz(kVd)%1PN*B7Nyyg zbV_%}Ccn9C@ArA$?>guF_!FW2n7QaT{CoqA&lR2`$HX*E&Gic5U}5%<9& zo4v^*IQM1(I>+udRloN^{nK%{okJ0*+tGnn-A{?s2HvIXoVS9f^7->`fZT18QSkM+ zfaV;~^Zk{D#b$U`Q6=JYiC_o***Ng&*TSd#evwHMVR-j+U>=hP6>Q;Ejy#bPWOr4K z7bZYT*_s|PzWX1;d99ZoAzDs`h~g$>w1KT>g65?XbIgenYw^5oChFdO@A zPGW{w>dqR#UM>+c*Dh8c(=M1~&-m9QfZu~M_J8({&d5;g(K`z=Tz9Hihu=5&_u?7( z^XE)_ET{sU=}&T0ubaWNYs(*Fz%lLGikoM_`B`ft#4ehhuU_4#m+Fa2WR-$2ECeMd zfD{z2)xBaxy(I!g0az-M>cLTL|~ibw5|!Jt#EpCmcJu3d|?O3T)2zHH|eO z&4Hg@F?q7MD4+pw+_nIm8zfpN11ol4-E%5PM3ggR998-tHWO5BK#``Og{Pi-`Ftw_ zEV<$2sHWvTzHwTr)-Y@4-sfYOc%r68CqG#rkwYJX^8hTfBaWSkH&4x|f%$PK_@?A) zDQNb=*8k3|arSGnkgTI-47^AE)5?52`AsOFwuw^r0GcwFF^L$rHR>T;?JEFX@&TDl`4JagHDjt%$stXK-@(O$gxpU^6*hJ5sfF!yzP+>gL24E202tjO+7#MKG=cs{XHh*u%d#1To!M=vzFo(}VqlS(DFF${2~u>pLT zFPElpL%SDrLR=UW>8zu_e(`1yPO$U_Zdhl*6sJ*)BWNUDmgh;$t4#$ibsk`I#IxW#F<421ns9uySOxE95 zWWtTMk~Kf>xfXUw_}1n}TeEuFq%C5JVS-1c-dFx1797b(N{=?x^7x%sgOd(KvyrXq z-EMrNBpHDO7$9rS(pjFl));OLW<}MzQ6XVDDHpyS1ZOY2yFU!0f7RIEAN=6o)XD=Q zw|Xvv^Ix5@NYJyHzr=3&Ll0q`H`Qd%?u7o$5Rp+Wc<5sf#7;87PtaPnAQE|Mfdbln z(A4aeyzW*v^cSycy9e4eCr577)MY0e@;FmSb>7pw9*4zU`I7fbcTHqYFSAhB{Bq5G z_u_!l8m~Ho|7Ki65B2tqd-pWFUymk0xxIx!ji+OT560p~?Z`YDn%R@#Y)?99G;o9c zgK>4hz4#6us0eFMAoB)I#e_SUwBh7^WG4`6yDPm76t6un7GNJsfW3n7?bD?iNz9}?Hh1F$baPeRZL+4W^3v0UB9x@y#v$;u6C zMM`Gq9b-`VW>v3t59~@nuTCEO=lQXci~1?F8T#^1S1yJjsMz9|1XXu6yWHnj+>BXR z#IvR6q_I%lvBzV{!Eyu;A~r|Qtg;$g>8HEUTI51s`L@)NIs${(l%&uW3T8`1!_}}u z0SBa(D>7_|T%IM2EsHbSgf`(Uw%oeB_*pXI2c7v;x(p z#}M~$IuO$B`@(wk@K{Y|g2Xx0YWJ3hyDQ|)rB(Ev+f<%=?8qu1IE;a}ltuYF*!~n< zJY23$x;L_q=vNkUkUV39oqvt^5e|Maisi^4T3MR;hV7+cC+g$W)ccE8^52ot>C|Tf=RTz)M{@6uR z`*+>LfHn8IdG2x(FAaah0<+fl<5bIbkweEEb(9X4l&Dqtb{)Hc+@IIk#`hmmut>zS zOTUUH^diWxZj#fGwO;}3ht+0ftYDAaw$Kp=1NYF^2c3sw4n401ne(Yhw95+v3x)&-BF;SgRjw#LI$gj(4q}jp!QgfbrFxNPG`t zm_6NE2d|UH(>!Y}kILU^`56d^pq&Hh}&w#mqiklO!{RY~`CSCZ@#O(EkN3U=LBItE%SJ>Wb*4WhEzoHpS5-moqY^SLc<9qFZBKxV8O8{l=7s zj%4w`UjGXFOh8ZM8A?PrYoB@8MzwJsVARErBN{kqJJA=4qrnGwry?V=fln#VV0q{x z%Otwl^<8D-Tbd*&`1;`RLX!2@q5;9{q={P!!Z%LQEV6I26=I*K?p0-PwGb zn))8=e>3j>>AvyF15*E2^A9W!exC~(F-(^8zyJCJ<~)WWm|Tk3bM%mXS-?$82bEZ* zB6Gc#G0+~(1$W26p&_VePm?_7VMlR1qV<@*T5pu>;+OeK$7cF7lQa| z^T6FWdjN3vNi)0He+!%#RD;C?lY62guauj++z%PdyHZSUGq@W9w|s^D$xX)NnAWZ~!35&abu^VKb<5XtJ0rf$ zTcupagC&ht>A#20uPz++{+GMg_a^!qWq=l!CP?O*9Nzb+{O6y}WMcdufBk#y6^zlrZ!y%+=WV^TyD8{YHGgajG zPV`WUF_4|F!rwvr`_X$;6l*tK5~oBIoX|JCxYyADPH*2fE5OH;(5y$OQ#4oj982CS zWRU>_E!H z^zRt@A35SQ2FQ?e=lIkvROJ)@ldcAE=FgcBH{Q2-O09EkKssFD1gN>Cybt)b5WeLnt8+NfwEmJG1THJQiJ^y}$AEI0vk%)$XLV<+_Z zg$PJ?LyU38Y5G9sVK&?BKm-y%*mh~w?Vu6nMQ^7PJmNyzgbPrDHWW|dw2?AtpJ#do z??&))(Vm3y<6PivTNTL7+PI2?{L>*wEyGkDz$> zgFSi$muwA2U^C*MVJ|7S@+2c;hTMAyQ)<(U@nt^EJ2F>_@2#reK9ua` z`%eP1GTGPc2gR&dwR-mwuI*k(PC>H}$M4^)T$xir#V0<1jRe2a26 zZ~-_xY85}L1DT0-vr<8YEAP7955pT4-rd^-9yDDa-Ol90lp`ng?0@%!{X>F1789^h zrRR)giQnhnciXUZ%l>_);CO(I7Ck_;?gpM~lR^sdLZ_fKc{dNRemaeMvB{_q`9oTN ziUDV2GTs*Ji6xfHfO#wdL;l#vnaV?zzDx-!)u$=AFjWL^)q6DBfKNDqKXVTwZ}PD4 zt4uG6*=GA@j>(H{=XPMBhAsVsO&fsdQzxRwn4{d=SOGC8R}%Dxc4h~?6jQp<+W;G_ zlNX{uAr%?^ZlRZm$2b;JODMLnHp6Iq315hKkKN{3C`C5?H)AGk&b|#or1n?2QPSU- zlremK+I9;_hUA;LAz!-;?NQ-Cf>Jc)47mz2dx>)dNgP8!!OFVZq0e^LNINXTr|b)v zQkamgHVVNjFw8k81-Gd$X{h4Qsu_{pN@VUdNNy-<+HNjwK6bVs!<3ng_xLmOP${KO z=1m`y`ST3QQ`vW(6vNo*(yX}urNE=)7@}B95#E!1a;ZSJsv1%UtXYNR4QR=7K33_{ zNzCKkN#1|JFLov-Wbb}ok*z(;QQmao!NmoI>}whp^WB3`S9~@;(k3XWFHGcWo`9Kk#BB?3_us0+kV2I$?*yy@cZ(dgMPBzQlrA8`jkOr8yRwm12z z%YlcxSNa;|grr3BHr=bq@9Ja)aZY;%)iQu@NEoBtb8p@3x!2UVcdV=3aW$F4afIBP zU%7t;Qz^x+)soOj-Ts0s+)^kCD}}~NLW7PM_}w6VE)R1~zo&@gZy#vZ$z1vb#f*Mq zL@wyCj_yk(k93L&Zq7lCjdaa^#_qwwh;kk7E#Q=7329EfmmA$5EdjN^jZZ``Cg6_m zD7cb-xNQh1eqOUKhZ=dwxNplrqENZ%#03CtpVPtKUXjR>U8$Tkm#V} zE!TY@IWp@>3m)9TYS6#E-w%;HAUZ=quJ+@j!VH`O|0!YMq(^aCu`bB-hF5T!fx=x6 zA|8vxiFB0A`-dNLyPg55d29=(8sbm*>Qo4KvQDxn==nMj4x#|};bT8mk>}vSn>KWGq|?J5;oJ@Y^nuKwwrcu`1@Dr%M8Q1W zwc`#;Yi3Cou#f4m(BAJ7!4q_O9IrY>QxDo(qvLnfcVG;2@oU26lPl)HEFMT_90Z<1 z&}VLy#{kHjTn6nrb*OW=$**2^K%Ag0p)?Ed4od-Fq3hJgQ&THK1MbjJ9@kfxnd|+K zN~!;G8D_r!8eVkU zHqDFg8W9~Ea+g(lO7ZKOkqmF!gUjOkiXGc}$QD-|B{z5*GDg!DN34L!&6sSlvp%b1 zpGon08oKMob5f2Oh@+csLor!*oq&)eIrfrL_zM8 zVFwqI%m;B1E8rceBKKjhx-g+kfB~d#9&N-mg|5Cm*zqV3lcYj{*Bq)w` zb>18lY`WKm(%{OOfw1JQRD}17_rL7(m#EXTGxTjYGq(H@l9L}nEI+d)~r5h;33kZhMIHQAb^sVS04*IYWrQc)X;8Ilz z0ut0&9z^RU6H?33f9UF~<^joDILOmHB_0Sm2Bm9lkEBX6w%mo|ShIYVO>hS#)5#rO zKBZg$?T;c$BTwB1<1r95QQQ(>T_`|2>(ICPqyEc?^JnTOIe~Bzo_oHd{oSMU@8jKF z{4*RNkNwIq-6godnmqz`DE+0!4FqE-nJ&bsrnxI)=>w>Js^~T%A8U{)eUx+rnK}Ty zGkZ1(k+ydCn_ZleR>sH_Fg+!lPl-1U^T?q1Q|hZwQeVIw4|Y$1&}QjVR7gv5wGRgO zdx;`hSdsfut_LKCaa)6o!erTRGiZI{8#g)%^Q=4=L!rI>DQ$dk@8cT!r^<@f26sA>(>hK{V(rQASeY?ZB1M5$VCI!-5hBa4V^9hS$gZ7rMaKs8uWRWd-5{PzF^w z$?`3CP1K0|zB67T?m<+*++J4O3m^a)SacoAqoks({HyqcZ!_~TJ=Egq2%%`k|W zYVffkkj>5mS&ZUkRdL~1#O*NK=)^j^8AQwSuRbH7&zT8)@}wv~J{z{r^X#Ag*-al7 zxO87w;w2B-S`T`bjhejYb4iL_}xmcrh5N-RuC`1DNdUR(cb{UKQ~k^Y&S_N0s>-EIch;TC9?Q>(j#>?ysgD!r}Q6iebl z@S+T0MS?18BfPl4%ct!TH!S7#mv`s4MROr@rhqePl^+hSATq>qku374?W~o}M2d9buiG@P7y5A)ybLI-cywYFt4zL5VVau;O{d^sX%(2nF??AaY<2fVA7?i2(z~V1<~B8v~L|YM2mcu z>=W$vWC(Q3qhLdU^jgn85E)-B#IIHQ3mh0jNKPg-_d(%9AFQBzr#ob& zZ}QsW=8v8|{qz6=GA40>#o{*J~Y%}ByPG34W78t_Xl62Bb|{nu3O z8CIY!MtI3z+#`qsXYWCq=sESWHS-nqVeg0k+l=Rv+o5}B+)ficVGtXK5tspDNy!*a zVnaI2S%;X%II@URaLFn;Mk{FU>enQI15&8^&CvuMO$+o8Gv zr^gu54eQh43gx#5eyu{zNJ=x2m;v$d$R0(#b+itUkXXh_1lO5tPSV;`K0k6Rq=wK; z!VhJ5^Z~?NtZ?!u(nGR1L?&xsESLoyxFRqu*bQJnn+3k|^j)ojdg8c5oxk-GOBZ zBgK!8LZo79;k!a>wN$TiBO<2H_aw9mj^Ui~FcOb(U&H#+p9BU#V~-08O?g@UJtnKx zlMI(Bp1BWYX$T)^Tm-Pi6%h_pODfx*NhRYTjXS@((|9T!sB1^IjZ7w+)`HjROFD7R zalLMhXXa5|zaYwQ_wSJYEdu<#?Ch)yS3cfD_b0336|8apstEpkFieagcngeucKGbH z0nNXe@K94!lg?@wM8ER@9xEL9nt3hoPETg`PhP+cGCQ8_sd%KsIXcM*Zl_QHIEdbn zC;Ni%yC!T@Th8N}Lrq`lSQG}x#()&ycjW}8ie%GW8E3a$x?K{2pS(Kn0{#E%2OR>< zF1u$h-R{)!V6Cc8DNB1*c1^4*mHk5!kIjVCgBGkDsSH1=DhvKJe<&-Q*q|We9U%I9WY_IbL3~sUfoJhWVSz-cxO8a?YQ3mgX1_4178NlqU7ZUL-oB?F1lF05vy~Ha|F!V3R?pLJs^d7 zLYHMa3fV;20BRqm_g1LOB&F(!Dt`?Z*E=*H-HyPF`oayexWmF{b%lT2&;j^&PyLMT ze}Q{HHoVS~B4MEAQ_J1I%0rT3EM3;W&eGj2gj9`~R9w*N*JTAgC0w}=z!`8PLW$E` z6l{d`lU0(u0lF!;nnMxTG&bEnb3)V&>y_Z(Nj55+#29Ke=fjN z6#R6N%iRxPnGi$3amykfTlO82*$fNGny19o0Gaz7DrpKgejyBtHTTvpD4^rvkPQZRJN+;j4TJ<)C zF;m~BN}!KI6zBxp#owM<2PZ3ndmq3jHV;P2!hu>(+;o(vw&!+cLOM? znN}0%KhYee4@SLMihTECHp3_1Hn$opJabYQ#Zd(E-olB_WFxeK(BaeV2Y!N}=8R1G z3Z;_Eh*y~y9lJ;vR{i}?Fcgp&$sZ$p`V2TSW{5}W=l9IeCW?~u3_y9J7|BWF1V0vl;@v#JvMe)##B}Zs3CYW&HJANW zWksPVr*nV&iTjxUIdGDc5!g082b6u5;{EMe^0>|-jjX(06VCB9Jh?nCtX?2 zpH1|?RWZ|(lY}gz>E$xbwkP?L?ox_-p1+n2bJe2`_~=~Vco|=gBEV?Om_VyHHz6&{$3!C zqxJ!5R1i~!@XNEU_|n||owhFu+*!o>V&mTvM5iLuXSc}0^}GIPP(7wXs*~r-6)#PW z9T8>1YHKAvB+^Dv^O%FLv7qf8r#7uU zEux9iBV3(V(vjm!7#Z$fhfKpWGbAkWhPS1`u-7_cX&GD7ptESI$8-^lINNyl)?{JQ zl8m%f)+oU)vmHo=K=>2gvN}<&W$miMH*Ms!Jx#4~%3}UB@E=kUUt90OJ1myOYFJm# zzB##=3h7R13yo~97{J(^_I7;7-|^ym+K9b~*W&l99z{+WNeuSxUU~Dxs%Xb|QIh}0 zy#0nrf2<;3f-k2Rr0wuzrzm7da8Im~d7K?=JigFan+KBRqAv_QSv(C~rd~ITxGx}N zcg%a2^*p`WU;u%I_FK8%20iGonp$3Rhn0mph9Zbmi3cNo^hzbxS^C^<;F zgKOiT4govT0CZEA`>J|-JsSX^Em(MrqArTQpf9^_Y;&f`(SX;3&*=k zc4IX;cazR&?;rBGN=Im+l{UW~AOmeudD)>aPk=5&x?8-r+smro*$8bhA?W}Di(7(L zTOVyw)h5or5A)CRW+1GSktUFjs&WAf=pq#3SjP%rQ;A95fp@WaO(embtC*tJ5 zW{WSh0R%zypiMdjd}iw_2jE+E#BGa2=$lRKOrC{(FmrWts;0$@y#h>!>Jl_D#L> z&ZR7(@!$ShC(uDVCD<_lz7Qnr*IGB+8Ejx{is1S6V~<{B$_IXKD!@xnw{y2!0(hGl z(~zptp#$iJYKi4AsNB`LNQ=i|5A?bFqO>Nbbeh7?b=+wifJXNDo*+R&9~AJtK=>vi z6&!?l;^$T8mIIh0_CSTAi%27?L6R(pZGfGH)_3i&W-fqt`gB6rn|T0i43I4?T@Sy{ zJf41pCb3v^Q1O2WIrLHBaVg?eva3(PU}eKT2-TA#7loeul|crTB9@W}7SzLsz`8u( zeEPoXR5voCLKY%65ZPQeoJo*jbo4y$>T;Z*5lZ2bBnYJEOnjfB7?kqp+1p|3!x$^H zj^b0SGt&+1B~?S1Klv-jBfRI(_2b2UAKY}4M@#~*%GD#g1l*UokL~8&sy)*s8l1$V zuU@1F?Z{`_;IspU8g%zznd_5d?0ZZ1FjhR;Tu)s#fd2N@xrrhe#U9;x8Kwvv-*3ck z;;S4W*Ea`T2!_VT)BV5d2}<8*+W&P~>7zXf5I~4yQ~q>(_`w+|!MXd#zIrX!VX`7b z9T_?w&BvtJw5Le1-%!|}f61^p^@;r z^>xg)_^RMLN#X3#Fd;m||G@iQKzaB-^LT_lK(d@ZhtiS1Xr5*f&G@x>dAmt^yn-8^@yQVTM{E|PX zM3JuCoDXGIXSNCP(^TQ@>0I6S*{b7m(f<@0&T9B1^7SCP*qxYZlY?gTQhK@Ru>(hZ0bYy;bZWK?_UJO)Zh97sq5s9 zsF@80FZ;8|`l3}(s6fYY>TAMEhC_PcTwX;))&n!+V*D7`!YI4HxG`!7kciz5Krzoh zf?eiaKi{BR&EqPST;!^pkZTQrZ<-aJq>RAD7xgc+<>-%fGIV|qGruMq-yQ@KVuUCE zkB*iRDP_CX+jKpTANKxJoBU@)`o$Ul6mTejM&`227~+1$5{62 zx#EZ}BGzqCzX@`;yKe|m-btJcmtjNHGRr5d-Zr z|2Jkk%o@DkxoK`8eu(}qACI{&gw2J^65sRR#3Uo!NdOeC7ZE2h%l38*wt@W`K{buu z37xNdg1Hja`_{K_jH)w;go;eMkD)oJ)>XDJ{n|WQyt;e9Y?Qo8f5i7{DejWj@?lSy z^6i}BL9M>D(zGfksf+=%trsHb`40EsMVEixz+_i{SN99IY*rf(jPaNK{qMF1X4mG~ z3y#1y>-7$0+$?a0hb2ye>yFnm*S}Zmf5ekN)^ZMX7Nv$iq#oUK&LF~j<014>UpGNi z&yRwV@>KZQdj|=9@5NmyJieZ%6d))Hd=p4|6+0j2T&tkWC5dERpQB7?7Y=qU=aVKQ zH#t^IQ28iD9h82?`oK;PYI%8ogN*-K1=bNvBVjBpHVjNG91{L#hd?1xJMI}P?vKY< zIM#Pbobxbq@baujFApjBu51hkA9K>l?R#N}FI5-rb=?xW(GW~Byu0;9iT3mQYIG>; z&&*;%mQnhZee6`%i>i*(1wy@;Nt&F5eFJe-p?q9z`w4Sbj2$}YGxWr}!^b95uQ_KW z@$F5Ii>qz71$tXX%tlpM+&08+VfF5X?2oJ_%9#$a%rZ66l&bB1y&!(uT2V@5Y2Mh$ zj;K>|$+VzFEsy$a$e|X&pz_^uMm;eVnFA=V6{%7dyvCH|xnGvIxxLU+meCe?t_*j8646|9X_Q5&SXI%%E`yqP)=w;8l5bX$ z!!q8RHDywGn{EOsM=8;#Eb*BWs-nfmxOmBjwAVgj(m3so5{JM7*rLlkXW}|qc^(3U zMR_ru`w-|EJwzBX3t!qfV`ev6eI0Yh3SXluFRv~IQ*)1CQ`S)UMfjOT&&tVJSc+g- zJz~$#F{x+-Jq{%VMGx?sc_z7fZ9 zTbOB7-w)c)6W7j2@|3Hmi+}I;8T|Gm{+%Ohe#rk!lpKboZ#rythOBBl%EzvlJw=ya zIb0*|}zNBxS5$%UgNvT&FTnVa)Satz@3`0iPV-rlfFoZ;UfK6{=liJ6r}m zRB6fDTSlUlLD5)-!$VpjDtQw3Ip#7yavDn1vOFH~NU;M7%xniwK$zE-lAIjT(bN=l zQV;Ka9;dC3#A5b%;f4!!nCgJlk7YyU)@-FKCr4>Pr5s~d*h3mmZS>*GgK^--8a}W{ z1R~Yamox=fB!TTSqu}Bsv@#`0RK*jFID*Gk5N{cM;ZTYT_3w2g@yad0V0%Ge1^_;_ zGW_~<`L(@z#~!};C2fitU}^_#QSC-NGhb*Z8~D8Y8r8Nlbg&-~D{n=~VSGCu{ILW! zXY`_^m6+8HwqYw+ION5nV?G^W6?zLUUdJPGY*gcL@>#gM3_hKcZ!}P8%P%2}RlQi5 z(S5Mw#z#N2JHa-KGU#n53`R9O?bbL2_RC&Svo}%H3X%(##OH0giK=ZZWW-yLRA8;_ z;g&ucP2a~HV7yQhbFe!}8MErVqsf5^1xoz;F^=F1wABWX(bE1Y0TC8Mo&eqFP|YD7 zb<|VGh1Z09ij?FI+Jb|yag^@$VJuov_svVHRFBbgwp+V_Z?4wgM5>`Eprc6vR#l67B#NQT)4T)b|>1?B?!>M($lG%oMkyi6%y$hs%8E= zoTyg|P3S%rCl^aT`J#N(INF}KXwgB)3~kh6_46J7X z>l{5hT;UDe$V@Ok^ufrf8JYZgDE#{*p06B8D$g$1+j{AWdw0z1Qvo zxz)=QgsX2E9g$IkUbj`c;uo!ka~Nt)KfqHJ z>t;XPx8SfMAu%v8t6gQU8tK>jXl73IvWAtPK5B3<`+(RI?nA37hVp7z<~%g6uzM#|%fL=zcF7px0Qv63pa>4SJ!ap$Zm-v&u>$>~ z3yk}QLi)>r(r@1bZPx7MA}|h=hwQKkbjJEqQf7GNzqqt}T?yA`&McdL=wldt4*Q8! z2xfdSAGIe#(Nr$WjmK?C+~c%+CsSu`HKf=+4M(B%Rae6U%2>Q53QEF^SJz;PgBB9F zP9f~Fat<_}IKQ&u+5D<3OeL;2&rX_Py> z_h+uDC^&*ACgzvb_09?VCLvg3jsvjI041<6Q6ga-c52F1>^EAueVEp=sESdhuS1NE z%brXsBT>%tdcpW&yYPMA#}m@4hjwPjAU%oEy7Gjrs}TN%D0>#yoGfw6CS7H^SM1h; zRk>ZYkAs`{EOliTW)qX`c*QHcYU@S2AtlqjV@8*oOt-_YTMFGqHp0cKbOvgu8}nfh z7J}J^cRM{L#cnlrRnM-C}a>xEW(G!@dhT#ulUmBBU`Ebm-oR^VsjbxZ>(?d_+q(?H3)MMu1 zF*U5}y?J^5lJyK}h}j^LS128OZfs6c^DcYP?nq2V)(>O&IA_i=wR_U9>FQq)u z9O~ksBluWfB0)Mt@Xx^&l}FA;#LAQ=R&rQT@A?n0KTa+tt5Pzy=yhuZhbXc%Bz`Yb zD$?*;6#k6Z5R+r~FwD~3AXF~|%wGTNlm=G)4CPH2*cyaj{~C2jaeF0!nkQLPvmCSI zH2d%~soHCOLb7-UV!Gt(6!iYK5u^A=>o}OUwQ`K8B=Dcw)QPJy>B@Ejv)lG;VWnlQ zt~;W2r1!jfdi6s2)~A4q;j5`>Ox=%P=kXq{^jZshs(8Dc<6dv@(wHD-O-f3NK&a%Q z8|z7$W368N;ke>vPFi66ODtKp_j-r%@N0>je!`fFr_ajUB?sB`j~mf zBH9@Hw)fT}E~ym$=g$dVS`Uk^5Qx;WlGpE}QBLW?Jx!|xDMIII8hJwPZft5UGAJl+;VMgl2ty^PTTDb0MuTe3D~)Y>hNc!Wuy?H;U*n@aScB& z3N~x(-6mC=H&^X1Z$F@iyMl7)10USa4T8I{hNZRVr2-31;=IJPVHqidF~#Q|D7+cl zp^fPxj0jltdoc*q?{cQDm=A>^t8CiJu5^nwD7*TjmkqA>8|C5u>eER0A7LGi_*qgT zNA$W06b<+~$y6Blbg``e^Q78}Jge}-kdq6-B*L>6she_WI*je7#qz;xVl$q2?;XW( zC>rx(gu`cMNgizRe)D!o3x2(vCRRFF22q$kcT}(W^~T#MT5N17troIdA#5chr^eSa zoE%h`VxG-F{j1^#h3x6e_mx5XRP1&>K`VoUl!)%tzM+ej()bMGQ=71bNQ0CB;=SFa z4h86iS^u4PDOXN6j_r$9EJMYiN7T{m9#3Fn4yqo+W(vi{JRDX+cuiO-*srwB+g{8Z zJ^DN)CKp(YtSoRjp*W#FLMju&??J$e3luzkLqGy$7?(Ff{)A(SAq5#$f8eO{yn_BdeOxOs1niWmAB?vz36!e#~egIc5=(O|@uTo9SE6^IxxX zUrK2}&rz+#EIs1&MP#b#+~d)NNrX@)tncwD5ZO!%lZo37S!3R;7MT$p z!mmn8sk0&AUvN=&3*1#Iw8)^$_lAi9OhVsMK8$J22!=2^x3)-Ivs z@1It5V6mV0D;?vI{3seBi@!^GQq9OlyHEbJ+k!lfd;Mn(`J>Zfe!xF$S;gS}>dy#^ zoWqS1Q>6d-SO3O5;OD)Jv2MTNjfo3Ts18+MLi#+T!|$nozw);?{r8iL?6V~tB>DMPfKF^2?B#twjTYr3m@c-t| zw$S}w{Lbss@XKCH&0%7?;%7$v{rWgRKf$+umPo2#YM_@jDj0EHaRT9Ui$b7G)j!mK ze=|zb)ChTL-M7!Aej}6LgTnlU7J=_?E4B$<$*`Ha{=TNK$pDt3 zO}qNXNqCfo;q%8a`9HW=jjV^A`&!j*2>;!=!`J%j{r@_zP(?y+{`;%?`%-x+z-g?$ zZwXybg#>=fmH(&D31{#qyt$sILAm}vUiA9wBe~vxzX6<3Q)gIgDToAJ1q);fRu2Ub z>fVRP2{lQB9ZoX>ll3O?oUIg#yU4X0hu%N~;+fKnDd?VsIPJ}cMKv0r#89 z9RQY8n?b#OTll$>R3?z%`wf=ER9G zDnHa75YQhW6iRIUhYN2&c3As1AIjzC0tAt3Kqo;xiqPrUR?h%$=- zp(u#nHDlQ$o?cF7TW3Q)JqJn?nmmWiASe*Z=%G@yuo+y9md7ia=UoJ8mxoY9#+w4K z!z$y-<}QLyLwi-aQcca9RWdDUd=&v;#H#c(lD9IP_VgXD5wC{U1VVm}n}ZSEI9oZo zNg?G@>kS}oD>{@ZcgdH|$cSEIn;V!+&^OqW8+hK`lYaQ3i1g;6-bq{FKCl?@CTP*P~5?(AAvJSz|9e}q`518{q zrcx;JsngDk8Y*RsY7FjqHR&XGIl8X3oKs76LymfoCEcqZ+ZSTn* zn6gPbww3BBuiBhXT3EgxFv}NyL5dcXJ}P~Wq;QDNOY7s)%x^HNomGoK( zkbcB59$@QUf!)_}PqkfjB5oq_abJfyjoIO+W(GoYds{Vpyzws9l1e(;Eb(TJ+wCz7 z*!L5W@=t)3W3witZ0&9Hexa2s_oI`S`4G@2iFZA@UB-0b28)dlq3IVn`5@$)j^~%} z84g4PEn$z+dE53eVL8*o1)w^}bot#gV@B?m67Cg$-?T2tj*O1Iy!_Jl_Hf8jQyWD( z5pcf{AkLX_)_uflbavJP)PsY%$~HcX>+tO;CPmmJSG=N2S5Wu!FFnIK6^p*TqjmCN zoY}tO@Ug&8=ateT;VNr5`uJ?T#7CFaoj4@3a{F1y#YZQb7H!-YBckbEl@a&6S?%4am2Az3a$Y%)esB_xO(EeB``BteWlu@KI=$3_r*fu6HUmSnrF6e(M3k z5~IBygy9l0^L1v!n+gPieZHBskZ1`Iskj=nd&&LoNqs}NrfE1f4T8S+6M2$5_?8D5 z2iqBFAxXnLU-NLBDMlxBL-PWG|4rw*=2zIEXu$mBc(*FgblzG>EaGP4g|SyKWr%XN zqMS4{(-R?)Cgw*>Vyb8F#^?q>E8P9!RYZGQ$x6MJ_sve-^RxcOLrbn~=D~1>Ee3PT zbJ2ai{`#IF6!w$7oQEe5HV^jI(12_A+dS}nQ?JKIF~n?A$KtIBCCeq;%pn)_m6~R~2VyqX%?m7jsq|9)SYO%euH z;tin6$1}mNb^8rV80FcFlWUcTWtn!UVE!yiKnB>D<;h*35^&=Qkw|@TRd$sluDG#b&=6d|c zGynZLy;rZ_e>CpKxBED$kDzDyW`>O<>Zy3Aj$MwK&t>{U2<_-*anrl$5}Va}*x-=I zn|pG}5)@W~E|e|39EVS1@WA^?I8G0s+e*Z;a&oYC>F;Z=S<1a6FQixk?38+7mN6M9 z>c9U`4`Km>$z-=GUUa&0vRX_MM!7ULUUfz$ix$sV$SI_SdZ2}G0MBmrR0-E7a~fAx zLstej%ktG?naD#`P3tHHh*+oc?0tYZKG(eAab!mAx zsn@$5NAR94s(~l;0*Pi>G5v=Q87;UB^9W3nS`S=^LB%T#jS#qYR}f%mhzIYWpStjh zMzR^F@3I3k@18x|Br{vt!#^u@_zrVK`IUZWUoUyc$0g5wpfs)+JHh_XuPppKWm8;# z;tc-0+4tqX&|>d;7X{#6@q1Q}+-9IqILUcZ0fwYjb(A6Wv+wg&3n8F4AUI7x>v+mc z<$M^b2siq(5vI^JKN87>oRQOwyaadFAV5ve*}{@ja7gK#*0&(4Ga#Z3C#pOMya(Up z=nK75hQSb5!#_Id1z%sSc6 z$3$qSn;~=WG_X(m&5I3yVocffJ||9}iqS+t?`;sLz7+e&i-6H@p=oj@zij=z;~QiL zFxLJnehf|Fg2p@3ho|d!hr^B?)RqT@LG z<-aaf;~i(%q|Jc4?25&^jX+r`S|CTu^SL6%63W1cwOGm@I(nj=0q&ExTwVc(x=kCd zZQd<_IYc57!E{WOtLRGWk;AH;PaDCI+j4u{L)!kUdvi!$IfC3kF5KbV0sh6tTdt`u zJ=d!nVX~>p^z~6r12S+wuc+y--5OZ&4$}y}J?y8543 zfMoPr>^_7=CE%!&4uc)ap;ByDDIuGkzM(b9#9ftTc9Q|EcDr~v}W z$VzS!&wKLS6#3F8We(wcLmPSdLH0>HlY}8UqY9w+G8gbLQV4^#h|nS?SqV>%3?o2`NuTEEyv?TSj<$|wR@X=j*ibm?2d zal6Ob|Ma6Nu(*R&D}&Qe8;O@W(z_fL^MUopS}fVO21!}Gy!Gla)-haPYr#4iH~4@% z4M5&g+n;pWPda%X@1*fNfUo9q2p~9)=3kI+u_*Kti@xh$gYO?^Yo^oH;Fw5z-UWbtkEv- z2(gVA&yqS=OX3TH<{{61MmA>VzJKOCG8<)5?#?r-ppUM*S^L4=q{x4A45nt0J+}}v z_wIQW^VWcJYF;S60)dj~)Z!qV^BCR?J%S;L@0uy!&PT>!<=3BfqN?%Ad-fe(hh)Rp zqjrz0UZ|(~%RsK5HGw_Nk&Hdfcw_wJp9S zC=40)E+S-To>|BQR9U@zlRU5pE-hfsO;Y+cosXXio)_F&y zO`;;>b^_u+;3?MbSo=w?A-xm^0+k&oSWJ81vbhrWAQvj8aQOL&dZg=-VpJy@>YsH9 z0#;SYl`m}M{@)4;u+cCjFc?CH&4c-7&mU_8YFiu-LeEl6*&pNY7IER|7%w7wUtbY` z`zix6)QRq+7Cie+GAgtGoLp1He@}*hN$+bgN!c3}bPJf6u{2eR5RcU{;9V9IPT(aVQA0ov% zVA%dojPsFUgdcqk|L<<@&- zT8q0AE*l9O#p5t1v@f6k1`N)2%rUF9Lr_RNokdy8s`$MUvHJ#MJ0H8ko@hq(t}ppr zjRb}_b`!GKzTWx5Qf)m&{>y4p1~Q?DKYsLPjbtZFW%>fY0`ozZuS1$yedY7V9ChC=TGF%g``ZI9LG~L6Zz}{M zH@;Tt`@E~j6yM!P+`&c)xJTEB0w;Ml3&){8B-+>lGE?d#O%e8%!$wZbHMmrkbq!a; zUok(KJ=kA7=tL!?q=bKAHVR){0a=%)Wqz|ztKR?G&$5M($Lx2;3J7ByRtk5gg!vva z1sDX&B4EJ^;0=zo0U^wq<;t%|HW0J$*}GaZS45LjQcBQG#thJL&(03uS2Q&UhKHP| z5J60dL!8H9t(B%}mG>Ah?$=l6+Z`H_3S#a-h`m}Q$dU4FN*~Nbxo!oG>hx_&W-I{T zfHF#d{aZ}{1#qe5WpfqYKAYq_&%3b=5yuUeg+7DYp?Bz=Tt(H|sk~D!X#xNFZ})n| zNgP1+4qv#1|GUu7RpMX#{WqM@_ZS2!?~CWL@k$W@ft=`8=8nQDv-l%qrGdbkaU49? zueltN$>#0LQ4{ltP~-_K>eLMU?De8M(gek`Nl!3ds3=uS9bcJVzQ3(CtdrEElahpO zX>qJ79KFy=jXyVY?qow&y#8YKLe$b4QeZ?of5>HfP|RHM zkYHq9MfJ0Z7w1IdSzbg&ncq$Xyz0CB^$r*FkVl;Y>xF&xGNENLl&B4fNBOmf91ZGB zqw?A#zQd>5Zp^y$kusYt0rIdkRQQ>PvdT-G{dF%#wFAnSmB0DdQ*#AQMzz2Pjub?C zJPU!bZR&;Y^$oN`PH^V5SYCSPQI#sz3y_z2X^GAHnNn-01g7OmZ>V?rqktvvaNg`V zFWqBd#M7hn5$uG%{>a4AV&_u1S)3-weX-0~Z8&{<1*;tu1%ZGl)M_{^PpODuMH-3c zs?9LTORDV+Ebip_xyFJqb)_L>GB2gsDBtuAW+`wcB&Ny=0zFQM`PAd*T7#thrim8< zVXTGBF%bDVR_|0V{&=}~>xr)@#bBvu_6iNXaEXpz6O1aHnf&|DN{v?#uf>JiAE(FK zcio>5-5&Oqjpv<%WU-?*e`R8Pycy6Zrv_5#ucoVp2v}+poJ(DjU9%fey93J{VNWx} zSEttwnUFdvak#nCvi_x&tLIcI*|ICU9HM~g9<{D+cSWBs*%{lzs)?zjG$p5xeohU- zZE|v-8}E(d+qNT?v8Vo*M*?FN-nOx%-rXpmP`e6BJGdf6X);@IAdga6O5)p_j@po6{_?_+le~kgZw@ z1+yM*i1%aPzzD$z+x^P$tW@1FO{hVASwAHFm3=07)+Ro#U4gwgif7tyQy72{D6`KT zH8%5P=}s`nP#;_vI2QyMVz!a!OK08Sg7|o+r8Ea!8Rwkpkj1TSNBZNT%c6}n%YldA zNb#8}*;{Dn#YeBN&Fx8V`}RT-9C11q=eo~KQ2Wj&(NDv4l1fc!@$nZ`R7zbM6zqfz z-_1^BEsaBfwMN|7XsHX8_dn1F%s`r!j1NB#r}1nRcX&)vA2A5r8Pb@^%m``iK{*W7cTfs&ZD_7|Fa|16&%b#7E zG$mc!w4IFi&mj8YSeMo6!XU2#-Fur@Jc6yX930!eFsahonuj*Al>|T0S5c`vkr%6+ zYJnIqyt>Wpao;MAm^HVDpdOlhzn7_lXyrUWspk>q6j+b9!|b$#9T76>KMwg!FSYph z(|MXIDuSS!mX!>cdXS`pp?C#%z>e#6eEdlz<#R(r@!9=mx3v^X5}ZTNTiX=s!cu4* z;bE-vNT9tkV&T9Oc}SzBJ&kR_B%QC00WTEl%6i=i%%}Xl>VvzSl#M9IFcEkTa=@{W(fS>~5t zU?SCvNY2WW?FcJEbl5p!WbOH!3_hY`1k0@!(TV)6PjK{qi`4sQ_9i zw)8Y16JVo+bejuLUfTPJcvX z!$vpti}VZjqWqE3*le1eRs-b+7eLL=b{wL)*zZAumCq5H64IU3mEyqq$N8@Yef0yq#Cf()RqR-LBXl0c*8N5mX?I= z4GLj}fTmvrP(;A?cm-h?AlbhiTk0Y%Czrbh_CuZAc9Auw=PU)rr|}3=adN%S_&B29 zgkJ$RY6YG?O9G#7IWaR05#WM@n7iMjUhJ+}=M3kbuO4;7n>}YgEeI6)MNB^9{upHu zcZKJVOJF$(G}1uRMhz1x3Q=vQ--QH zH$3zWbOKR%)tRlmMSQN-TUJWkJl#CCl-0oJ>>iUn!gW;A-0#$+(x4hEXjK<)lc(JH zlILwAmC?P{0%zyB2rgAAwo&cQ3ZuEu##}@Bx41MiA}SECJ%lVc%TE?FD97?J+yo>t z@D+rLl6B@SEn2j0@`Xl_3UM@Q+9=G#R?W-j7YIFK_#&TtUY9b8p5D?+rD~`MC1}1W z_I3Zbd?3;Zo_QTL2R`xb&w!&5+2Q2pd(QT|9X65~U70z8o8KIzBb~NA&<^uO$ZE z*Py$5wKEAFTXAox5RnA6>?WNBOOPNS6`&n^8X1Xi^wl?|N_osv%R%O?God~Z=HkWU z*eo$u%a9K~rGemAm8s6l7%h>1u4U4dh_K)`(C68W6Eh}JX6xj}TQKoC1Sxi=4r4}< zYGrEve8I#*r>oA9iiisqogp**wkbCk9_=MpvV~ zdZ5S9mXx4`RPgBG7OKnmUhO)ndbh844pw9g!VzIpdNhM*K5)gyJ*|^b8fCBm5^6b% zoWk26hNb~Xn}-E_yYFbo$r$TGJ#!S5iRGviq0PMxM=%wEo6;2FP2I8Rh!=jFUmud* z%MfDd_&nh9P;*E3kir4lbz)$dOd1VM89f3^&h6@JY@pgx7U^JO?AEQ{KunfA=8(>Z zjd7k%xVdW!(pZqyHQd&tg+;X2Pk)(b6zvzH%0fL@tvFUI5vQ3B@@tUhsChG)PmA_%Jpa9hNiKIFKmt2}+-4M?+ipG5qXUzjPmdDlhhoDBFYsB*AY?RJMtU zPLwd?`znJ?AYNGKp&)K=MijU*r>YW@!q3`-l4cE$19ft2F6!d4KAGnI_Rl|=I$Ro52t9@%fS)wAkQ$Re71LRkbQi%Q z*qDFqUJX@fBYb04n+KDPN~CZFgguqM&KQg#1T|air4t zDI~_4rGj)l3OAXf3#zJIc`yVxW)6T+B{H1#Pcme!+IqC-c+UTRKC=e-LP>+Q< zVI(^5+AQ>cp5>yd!MO5{pI7P(l*+j}P5c_PFDmb62wI}4Aizos@c9SZ6dTt2dB=ec;B3v5q z)ygo*)9~UrP#oIFOT1Eod;(BA)gN~?3&9B3)8lT`X}X8setav{Dl%2Ce6FnsWC$6c1caS~!@N(zxN8O>$9yPdna>ZWO#k~{_Cm_^U zf}?BiA20+4pF%*O+c<-7z@GQ_xK1tneI<2qvOo%uazJiB*=StWhUQ@}z){M;u(sJg z@A(~i2F`-u!c&IShfb06PN<)d58zfHn0Y*fHlR{Tyj$-{Z%27@1=1qMl^CE$dway8 zaK{#mul}VJDxDk$4QN)B1B?7)-u0$gj}xeh^o_Ebslv1_6C9q|Cr1v=BJPI1f5{jz z)*RC-3YqMG6v#ckiZU)FLu^0CS7LL{vUDM7T9Pg>;CD`Gk=?h|o#cjP~t+G3M{ zAe4sq3R5=ys4R^oe86=3#qkf(&4xyMewa|-rI&l6J9sVquIA1I<4 zp#i5?Pj5=Fb8(5`+?r(U@r5=O2J~BH%f@7 z%FT~%7x^ktT7Eh-U*29KdmHrs)%s_Jc2)=Fn#I1>0d!DKvb1tSx6UiQ&9%~6hbBFF zii%ZJ;_m7SAupSsXmOtxP#MFr>V;%~w4Q@?3K3`UXW1j4At4pwiohiksds4@CHu=; zgJoV!L4U$1&mOpw9GLwLTU-lhFUn*-x3tfXoG)7PifGNd3Q0bmvp%F&pL(Od_|!|K z05}s;Ni`8f%yn19PXPIsu935pj>0-@|9B$9HP)CeIH@e}i%O**>qqcZ|AChR-T06l z>6OxNF+;X9tjvvum%6%d7h-bt^$R`vvc0_*3Vn2pS{6RFcf77RQsVn{rce)(&p}_G zjRdi)e&1P+`uF;eO_0kM)_x{>QyIo~yT|%s%pJW1E}veYtqg=^3sZ%V*l_QvKHR7f zA%;}5BYm!n@sSyAWfhn{A2|zzYnPfG&Xn`7EgrWc-B^S(ojR1Q8N8nW;BahERJ*IJ zR*Q0HYcTW)_-EjZ_OmDB5vYHF=IVfa_p8?5uKNO5Z%JplpySplDjYz#5vvtQrjr(lA z7-&PC8t_6F8_(p}v!bR0bUK{!<)5p56?XTt7wXhwjf^(58yj{>-ad2fHp*826)Wy_ z3?J{u75C&^O)2oP4wEFW6T_Ta)4!6T$uz^FQp7rS(KA{tnh_x`dV|@IBd{+;;x-lm z?&l75zrf)d4fWCy%gJI-In0F8hQhzmE|AA*6g7<0$0ABg-p~i6s%HRz9{^JT-l!+W z(c66mQ}y_Mybh=9pq$)onaT;Py1ltw8_2?dg7&IYU%Y&yP8S4-?xAHZ888&(f8_KD z2m{)!ECY=UVHXArC7bw1v!E+FTx-Y^2}y$^^mjFA*Og6JVWXdUbY`#T#RzQQ8dLR* zWSS}VNS|csPHIIxnVB{|T%1QB;T!l1a?t<7L$rC$lG`%LcNGr_>rCZm41xYAk@yPe@MScBGdtU3hHl@O ziWFUbhjGlKGSvF}m=NJ1-U!6hITyW!fG9gkOUDMR@tZ24VSjXHB!04cTrS;QX_P>) zeq7Nb2w!8t`a%4VsDjn0!x{Hji0Y~;qBG<50oi!H7XF1wOE+cfgQ(MHqR}|C*rR>} zTycUB9^7+xyVA{fbY-k~vx}AozOzMlo|>F%6By2pWDc=xmqbxx}0R#db#|A zbsuo%<<=3E&;<#SO%6Kk0*53!aA4f+6UfAe2ohhhp>v*IXL6dT`x0O4Mn&TMc&m9+ zWHTh^h%wmHOV{r19D65=+G#@pL9CUUt)25iY3EnRZ)YPo&IGuOSt}?T#i}!9x@$k- zxwupx^D_(qd5M*R`j=kjpvcSWX z^lC(-ODFPU2V26<@WI<(|@{u54vI${$u=D7hbg;-@ADNe60q6Vw0`<$Yc>Fniw&b;*}|tZ z6OlS96Q2D#Aj6FQGL}tyxdV*)hEy3{3RJ|cbD!f+i1CwMT#$% z;*7~2upFP`5o%ggkF4E|*UMg?q3!^kb3^WKEJcLZz2I98$CY*v6)c^U8UL!7Fk>IA zgY-#Dd>D}BAb%x@^Vk{nnSt9pc{&iyv}D$aSLdS*fQ{M9Iv?Ox(UabvU+JJEMkosK z2%x)SF~_6Hbwk&+xj?YNc7p0e?$>v7mVQ)NJfSCN0G)7zQweeO?ZUWelqaIr@01Y- z=T7Mz_Lm*ZHu8&A_rc2WyY&rmA`bgzMOy19NE@s_Uiu;<%Tta%YfE;jmMoLPwlBJ&wX0$j@${Vjn%^NLMSc zE8^&x>lLyep8>Mx(>5sD+Y@Ayt|l1}th2|G`{wn+JD|qKGH>qtjvz~jX`Cfy1->=i zLRUlwasUU!$TuXabX37&(R^^{u|v-oQ$qi7Bgv? z4XJjCW$Bp*LfxCXd)k~P_et`b!yWdU8lJ~N@746*>R6ZQY_>Vzh6#Mu!}oVWSLrhC zb+aMV9vAv7^s%8YQ{KkiZIKwsi8(8Pn@_B^0Vp?jfVrIT{FylLBwT0V)X<&~F>h&K z;Py7uS`?Ezl&j7kz7K~M)P?ZvpmqFb@TLyOtY%+UM3AZc--B*4rC*q4GH11~d~}c% zhqV$cMq%`mhVpCCF9b!uxb|tG}pp99J zb}pDAx|+f!J3j^fW5CCBo#}HDqlkx5Liwnk&rYSEH0|o=i|luqK9c&+HzkSWmqf&= z9Zn=D5}HC-H_ZV+0VK^P>DO5fHkI7jma=_>6V!dpfp*6n`7fyid@@Lxn)<+0K%1hF z11%kgKoK^&Hih$|Z{IQHG$zo_DOe4`7hwax7OOmqY&R?yK79=MYP~30sDl`CC}=b4 zL*C&xfv|M~!I5%p&Kv5eMXmPp_Xv*y4#ermN~1ao=+V;d2)eUsI81B4gp^V#nAe{d+$aU=24#`!8i5EJdb0 z#-?4<-AtkXAs0CwrGsK&4K2=#_s!dl2W*}E&Pz&ik`J;+cHZ$Jw=8b^W5{%QS7(v$ zL~xaOiQ2htR^8E^m@d})q?&6ckIe(|gNQd+(NOn#@y$iXT9^E@7hVAk~Uy`G&r~p+uZ*flvuY z$i8uya*3rVp=#lw?FI(Y73%`5Rpbr>n~z>;Efv)ObFp|dvMcrR#)w*izz17hG6QgT zFXSD)QE?i2kNAe3T$c<-1E>W7?kV5QmdG{W%5Qv@F7t47i$@#yO2t_t^1v4EK#C=E zAaG!rAG6j()`sgqS{m>iSapTkJeDUpH{ExQz!e4L>i>1MBz7;-M~kKst%~_t3GOx{ z(s7s#eZr0}e8p_N6~ku}4-5sH$+a_^7n?O%qMY2Z_H!|L~ zNmkq^M$Xm82~}s~%&UyZbRm<7-H5sz(m11;5Z}=$v)=n)@q|B9Xn}B!PJ?fdrkB9q zLLX@=J^Zj^HQC1=~0@ zN;W;lIBgqgFe@kklKi{#gN;Z@(4c8kSuxFy5yRg6j#vVO1yG0|yFnkX2@Ej1o5_L$ z(EVka4z3S6r2mes@!ub(6a18q=0Zi2(J4cj%36W6~rKn=9fFw#Lg{Sea=y8wl zAoA^;Kpha4dcW#9w6p~cq^_9ni9K$HC-!P$Dh=IqU&ebD-Jt*HB=fsiZ=Pe%LcccX zj(R&gL{0;9C>2ogpf>9EVWT1!siul8Ece*x+Z}Klm=+7{4^F)}7tsB9up?r@=uWYj zxt`>bV*{%(X~al82hlUJ-JhC2M!Gn7^{D4J8{z{HLPhwiMvRH%QqVhI9QzpA`N*H` zvWHf5PYyHZ`qG(F@TB6yUaovYZxOmAS}Q7RBNjvWmUAuBtwk(=axGP#93)ocTe?YG zMCO;us_ZZeE26(Nb&1ZkPnN4_1Gy1-;V|BiwdYC78G;MoS!DK?`iQ_aO-W1o8?Ty! z3(X}h)vI1y1}fHp;pmQi#+SiZVJ8PV>*DP$mMdks5vx>0mkC*aXhE-jk#E3 zhUy_h{!X1NPo690Qpc;N%1Yuf>H2Q@A2XiD$8&R8g?AZ9x}FKxuvasM#s4DH9Ou>I z=xNJz4zOKXcsH?~QH;Y6wtI$6hetUOp(5>}8{wC-$mBe7!P5jv*BSW3^VGh0yY@OW zrSHPSwE216_YT0PL(Vu;w#VJT$)N%2rmB|{i6Us5qgZbZ-h{Rd+xh+6dJL$cnv|nY z53)t8*#Xriv&8zCO(O{4wwy znVR{$veo6o^AYZvHGYo`_2bB1PKp9d0BkpQS{5-1SUGDO*0>&IgruEW$bCpgLwMUw zW7gBHRO7^tPmDx|)wjP2XY^}(=qSbeN-Ji3Jk_NGaimgfr4H~VoD;1q#{fe##doI? zHQTrA$E)UbNd^l*sZ-0=F+R^a2oPN75{F|0?2Nu8`3NCgkif6DMad-=S(BLtXPa6bAaRBA!#6?jikEYEa+D$fAth5KVSeq82jj(~YjMmvu^fci z#j>OS90|9*n0?`6LFwj7?4^JdB}ISdH_jeyiTG_~dXmi7B$Hv371OF&1fCOCcyS^U zIi$OmoFUut%m)oaLqZ_H;}SkUyzMf|0LA-j5i*FSui*SUQ$tsEQp^|B8JI-PkRZyc%f%OJMnZaYDGp4imlyeR?p1(wlYeM&NR3 zKSyVz-pgb`*6LcSdGJ2{&aGBDqeO7;qi*FKMnVXMxz3Xa&=-U$w0PD4=%*)%AP|&Y z>4SWjA!()(MkuSpD9Z7ksB4$g*MUt{2d#0*keUEA|lC8_O|?far_I_Y+M)Q^o-}xiaiHkF@M_ z>GEnbaKIYmjlu_dd2U_e-Z{5du!ynIzWL3wZiwFOHq5>Ma#cGyL9IZI7|UuT##snF zqIVS#e@;v*;w>d5xR2RHB0fk)JupMbCJI2WHro?tu>T=4(p#uPb3bP^m$w4Dk^nu?%T}jqyy===Ml#OF}$5-pdV0kGmqc<>$fO8{(;|Pi@A)f=mxu@5lNHv5u%!2W+MBJVjx&+7 zQ}N<=lPV5i`2ahf9$yGVj}LQ#{2Gya^@gYB&$*(uPGx6QGjfIv z%zbf)=%*5YecHWKKCtrUFlx-o&2+*{C9e#{V(OjSYF4m-wVM_l?>veUcUEFP-Eq(n zMTZ?Fdz+0AFl>yH!W*Pf&LfP>ITTU@v@z;J- z7WfqN>)<;C{vDP_tKFsvgr;NTuH(+-=rLDKT&nJA*|s%F6L^Pu*QG%EvpY%f`-%<# z|K6=`Fu!1q&(LEF*nC`O{9uYm1MTHx!N!delXnf6sK;r!pwt+u4?3?Srpzpw-aHO9 z`C$D?Mjq(+7&}(kMAQk|NfpWu4f4$5=l#G|UsJUmiS-~)r6FI31=cLK)> zFx=wx`DEjl0_x)1h|%vqA70Op0|0Fx@`hMg6f;X#n5>^sI5sQ%baw1OwJowCLJb+$ ze?2z>pX1i;Bk6ER37}C^~Q9`2PPL0^vy)YVv z6FM7(Jz=)NSN1}iFBMD^CtHWX0>@G2(9_Pct9y{qP9PF%EKFYk)NJE6i7H6><@*;t zB}X%BHUX=sOzMF7rSb3!VRX5Pd!@b(BZ2tBY^jkki$T}I6OuklvE6tb)fK6lT$yGt zQ=Ir1l%J;T@U98d?f?d2GB1`8y`)q+MwCCur|S#2jSHAIwkVrX_&iKs)z z7@7A^AmgQo-|c*`?dcngizxIQkHv664WwCMG#kS-_2NQfZ5R)Z01d6@*CQ5C;x+ds zud#E(f_(~?Ib~MocJSA?hTya9iZ-ZO>|26nqo+kb-)HV~er!*})Gx0cJdxd)m((+! z85>X4p0i|c+@SQq_Jn&UZ^Vyv!^@fc9iE7aDt>93PXTr66Vgdex6<5YSRYmnfl^5E zXL+#v!&bJhUkg&`?Hfa~?p$6A!J_|OF&79vKskHvEA$L*#1ZK8PQ)}}xfta}d-sH{GorM{jPjFEs}Lt|MOLb;lZ%aPcU`?{V@ zlGmhQi%{qSBB*$O&$p-&P>#JZ;1=?s4jPlbwb4ehq%^&G%DM|h5b;zOhYJ=HY&$g^ z#}LPN%Hiv!w3qRHV>6Zda~%*e!iR_-A2v^m)|uq4)c|culb3K_Yi*crL!Og`U` zK_J;&PkjbF0djTP!?$g(WQQaK%N!z_rlwQ{DHKY->xs;>0Z%NYtVTKn`W1pRoZBx| z8SVPlgP)GUqzb=|812b)1xZkN6Jl*cYd_O^nJI=&>(^%^E<|Pg;W*UxL}fck3t&~` zCVSW$Uqv!4xwq~0H*`kLqLZIiis4$uEI%U%>Zkg3Q+#CbQ<&$;sb$B*zkrtaNTAoV z=ER%t*|aYp1CX7crhJ2Pp9z|k#bUDh7EKg`Z#gH~5W=`-V9mC%R|$Z~HH>1#k z0`=@Py~SCnZU|i+s-72Z#vs0Y!A>EbaxY{*gA5T-jz-aztkrjsJEb0eHgUN1672)a zq}pbqNG;lZ2d}%PA5-RhVwwidpn-@=#h$f2Hh+W7uovd_L9oWbM!t&euUlYjO)IjU z-VD2((EySX4w&3+9Y=>Kc(YB#VwWeLdQ_FsbNThl;|nao9x<0nFSpk(a$X!v%13z6+a1oSSCN)j5D+yyE`|cXEwdrDo1uo$7 zm6wSiI0#qNw=MG$YED!Gk>|z*&j}1GKdJX%ll!nn=k-0q7wCxI--X#Wh9K^QX7;(V zN(*HDeP8O1g4!6;ac6-Ap^ci>g!cj&QHgiD$=m2uv};LLw+Gk_4g~~5|3c(%#Zp*r zS+t9t9WpEfsM*IIVgV{mLn85BXuuC0vLpj~Vwzh<@?nk-gnh^vQ1& z^UC3Ps7DBu9v!XH(c_VC0Pcy;9XQK*91-_~jGPe*)EQLWzjdiA5AphGV->#dI`It9H(gMy*gk;0`N?9>IL?=p(7Xb=$`1qo{2DvzS zai9P^tZ3BCUcVO_rn{XKPaS#q&a3K^WlbBbMTuMI;N$Yg%ci<(k36wb%@;;U_;yE^ zcby1rqL(W*`UYK_(fTE5W?0Bi@%D=Wg1B)((^irDc1T+ernjFE=nL4>+vu1MBzfY9 zB(?Pm6>~rmhpoOH@AQ>e+pK%9@C+pa{AX)C#p=g5FgyClNu{|O2hCaji{tdV30|K% zNZ4i=WD?#t%L{95qw{5h1&OBIugsm@UpSCrbm8d(4x#s-wpHbT==T?^GzL-K%SSLyRSj>$FXN%1mk7zv6hLJUDf6!oVP2%W0r#U((~EZxFE zipjLWC{%XSdLk!03gIBFWf+c%~o$4G4E!7|wB8l>W@dqzb-g0=uEmC)MTbWvzV zN;ybp>Y6R%4Y@ymL+)m%tno)I->E6rGUbSi-hVH==X87B2I@ZS)n*UFoK}AyeN{+n zs^Z&JF$MOQZ7X|-tsXse56q>4M_Zor9C+yA=K#SVwMKGFz^jaoY?f!u%@Awe4j{$a ziRL4Ql|;6fP2ykZs|Q+(s^w`*cu3%;U|K4-jyu$5EUPwc976Vx$7Q;ERSqTRi~Dn~ z0W83-cZ?n<$2P$OII`r7))@y~`G{;OdLcVTnWFWyZy($L?d(K6E-<<$MN0Rk6^3f%cHqEpvr zp~w8fPsFbGYIN*fktViEgjnI5O#^wQ5JOm$W%~0(RKDXXD%k4S zp7{8pCQFc}pO+%4UNd``%IxyNGo`pK(@U{!A@$x#)tRbFk-wfeqbX%u%>#O;iGxeu4q`j`X7Ne!QU}v3ZvaWo zMusec1slIWoTGI_qkDqe(_Z zWlGuz;7@Lz7$b z-rZlY5A(R|p^unyjc+q>pE{9V1B?-zM&|>PU7n+@zuw_kH8AJPp{&*bN?Q1A`nL3I z+2hG?TliFlZNllcw(H*6R))mvRVH*h#%W%P4XanjpCg%4dSL#wfCh!#S6ki8T;%j%B9R4DFJxTW z1+0tEGjU+NHJ~Y7~B|xx_nJ07dx`dhChtYBy8dK-m^Z(c^c50SV!Sf0Y}&sFx76HsMO zY)N!pt*fP2bvak_DxPz?(CFhp1ciRn^HQ7Tg0JRp(_*7NI(jA1NEQ6*xm(!hMc4(*kUwU3qud-Qf_1xG(0{7(&7=wX0Xif?IQ)4MOe9-@+{)}c&;1Y zzJ$>+)c@oYCXkNNSO7!OaVjGzYt88p%#3QwNk-)9rPT~8P);gAVN<+G5qMN1eGXYegZWDfy^{3leHSx6%d4z0-%HE9c z4joG3Is74wgt%E}-eHswZyEb`+Upda6z#lJ(QmVaI{O5>(v$Ruc@7sjy+2cc49PwF zWMyjNN%VfiSir)WLS<@5HjyMvQERfR`~>AQ1s%4CfZmyMba>1ZGEE{XovPrwGEFrv_9eL~D7)h6g zF`q%=(u)+gX<-o2deLAJ(Ei?Zgv?B5V&X1zlSJ{u)}ZYTQs8fX<|b1F;H(ya@QKz4 zgid?jan%cv1l>PzZb7DXvJuRH`w7Ul1Qs}S02QN=wKsZcV#IiOrVAV%b`)5b*)!v%ZtBZ=f*uXz9G!(Jo#J}=OAIbz<$Sm zepdT&Mkf$>U*nL=TZ8?&_pvs9zp>5OYj)9Xiq4rouWQcF@sK7f}J|_hh@jSoubE8`v^&v z=`@T+_5UU$Wye2@$iyBBFkeru*rUw_ojbz^~V(O2ibhd|5nR|n8 zk6ZP#u~8dGvFb9ffwp};mi~rriFIvs;DRLTR`P|_N{=pml*R}JVr=zy53?Ml0HYZs zp`6R%sKyz#!h+QTjl5C-vLTvss07z0HTPJ$dNS3QC|Cm@*aK8ldXQlO)tOl?VnJQp zvLiPYaMK`UPq-+S3uWxkElZm*et?%;!^%v?T1A$Ku5Dog?$qzI)cJo=J>ZVfTCL#~ z6VB`6)SCHv)ejiKEdOP%0nuw3n57EZ2@Y4&~$^ z0L8!r$Sv{+qC9dZvh+o*b^DwHsNNxi6yL%x=qRP#Be#Pem+he!x7FY79}L zJPq)!bonxBrzqmd5<%EC2?E%C0mM&RvX!fijw^ujxEz>o{3p(ri0kd^OPg)G;mh{l-@=pJZ8-buRq-rAD47+V;&C{WI061wi{eD)dh zkZRW;XRP_F`1l^NY8Qu>@zm>qcWRfcbaRPpop#F(NX&T7%*g7ZE!tmikDZZ~TwH&y zN&b9B^RY%jP6y*ao=PIH#-y7p{*q1VhG6L*KkVDz{daw9y-#{P)eIu6UDO+sBE5s8rjMeMBa~a% z&m+lMBXbKs$yN!V=vj@Uk;BMPd?Eix_Ds1;a<%*818NhRRg28W9A8%yk}`o?&pb%_ zd(^MsEivPqb_oH3UBFoCr^_0j-uCrr&I%iVNr1&3u&+9zyWtP(7mbUcpp1ce5sZ%l zT~}f;&p8RXRWOd6vO@3GE87#J&nh3h?i(tr5G%>ej-@M`JhI^~Eq{Fc+oG6u>LjE9 zh8}dn9k4%f)_C`ve)re=%#V*EDOI+>C+3AbfDx19nxCw*kkr%xZ6&_i=#{9OImfE(f0W znpqz~WM?npfMI0%_9M5*#02@w%!t8nra+ZFf$``I6?jg{m%e`!5-HKgVT&q`m_p!g*kUH1_-G2*xmW< zv4cMfQm*Ib=)DV*-KG+J5A{NiwNlOV3-a{6mgWH|LMUavEAq&5MQuo zoey0lL7NRjDXA9DVpq|}1_zPFOMl`$V! zzXq5D;)`e%f4z$LZ0EM_g!8e!*}ba*QQN)u30b)Y(p{=_tsTxbAju!4AGJ*} z4I&9KZ{`H8nJ7NAa17}exNjR!KA`8bW4W4*YGiDTkda3PD{q4-3=;+7Iw5!JmE|Z< zobL5x9}#I8&J4*sVXlD3PgjeF&-1Y*rbw1Pq?`ybs|qZfL#@SBXyXTXDB`DVZiJq9 zkPLx6>gb5ZJnq<>v6LUH@f%L-RhwhFlDyX*(EZ1F9x;!eg(-X%}Nl{Li1CG4{xt#wXgr z8H+RmZ8yI>!oGds!E2KQ^NZ$L6Vnj4XM1Pt_AEpC=ci`ucy5pCPO*4}?PRx6*w`A^ zI5!d*rAD`Zn6Hvg@jPFng)U=O1HH=Y#v430v|2*>w~rKG;_N2``$!ShOYF)^S{&Wv zrG&X94I`*4MZ=8x^}~#w4$0pX{NCiEbAkD=_p|UbZw_Bw@M4GvVgR`f4fg6n zn|GdA4o1KzQX4yC6Va|vN^r?FKhQKLl3;CaST<8xIIU1NaV7w9#gQC1VZ5#_p&i@# z8hA0|vSzF;^U-zqH4mM9toR*^BHNV%ZMl#aEOHf@^OaF4TG&Qgqd|Ef8mqB_1*}$} z=-459yy?bMp?L+36dygLQRk_8?=x2f*@GPz_U@UV4spUE?VbMLHC{(U zhsD)7$fM>Y`yC(0j=&D_vyS%=sD^scw_g$H#un^H%8iE5>_K=~5Ui-n*tEYr;EphI z6Vrf0+I(Sw+;QqBix4CHRHnW@WW0CXIY~!E`SXGP=;_E3b1+(&^?6c$W=WxOrt(Z& zq_0dqHFAfV6Jz`yQgXk7*jIVrlXS82N8=-hC8AU)h0ZLuLVrGoWwu=~9=4_pF?*PA zB>^aG+g)SxTS>Nj(;GHlQo-`7uNuC>gT(E`H2sck2J7PJ_hp86F~vV#MMwX~V`L?_ z`0=QJjTE?PG{vI-$`FQvl8z%v>`$NVkKgSFBYrtqS-mDu;&H7QiAyUfk1qFy`d?lA zfnxM?hQ`Wm`L9C^!jRV$fi!0#`tw)ehgjJ{$N$Wd{`V;eF!_^G{_Y{0SEkIfQiZ)&503#YZVyl>T3C)#@GmF$qE<=vJZm-h1k+ z&%m6vX7B1N@+bJ;t@+7|5chIta8==G{bY^$?{{i&m(@yeSXn{;`$f~VffhCuq(+U| zu}`~@Y4skFufF!KtlX@hJ;XIPdW8*eh|3Y4tDjMV;g4@uI6yV>|FKNWp2MAE<4pKv zHiPa6<>Te!Z}rpuFHdy&vr8R;K9mrrbM;n=SE~8<>QC zFS5C?l#0u=k9%~$_q!BuQDtlVgVQP}UmV}4@;)kl-=*Dm;;)@oArwc&r@i_4QrU>B zZK)$|O|J&`&+hZ9mb|zu#5Pk+&UK@M@aXja@z9r_tukP#!o59;zh*?MPyGKW+Q^}J zJ$QYXZOxjc%HB}%XBhXF$M~OHhz{9vAND#P!cH;uhju5-47tK_erihb*j*(Fn$LcIn+(MQL`lnw_xT>)BwfH}cxVX=s`|8H`?rXjx zITWSc|FN67T9GF*X?MLFIV^3a=>H!Vv5iKTt7!I82h(sOYMbDiIijY1x%P@&l7doi z4^*o>;p$0jz*sZ=I-^oJxUBOL- zqw*usYlc5BfAl|(53@<|^xR(Ce#W!OkZ$b*gNmx1^2(Z6EFlhuk{iPw*q0A)xvlP- z<%|CeNJjDK zpUS!Ay9W1{t9~F|p}M24BKXHOZ7xd`uin$;_>E!$?k}rh*0m2$Vt9isc^>harMDbv zxHjUp%{_L6n>}Wfkk1&=sye^+d+LU62#Z*W_T)o~RT-iPx7{aEYYON8`qh5i5%`V- zst(}?eGEbmT>Gb!oYvf1@Cb>ZzRxV8Vky^VZw;Z?m; z3(g;`yw3dmoxb#29lvjCg0!v|==$oJgyFz+gxhFqX zIoDaZxH8o!?`r&V!l?bX^A{vkiH(g96i8)%FPOEf)`q&i-~KaL;jR>}>H3kcr#ro6 z>)y=p1=0HTzkNYn82`IwHK9)hd#PfIDc^y19Zk50kjh$|2rb)R8T=m(!+As_;z@gm z>wnM(t*k(p8&v*Zka|egREg=xIO@0(QTw0V>f1Zs- z{?zFh`40o>k9;mz9Ka}(za>{IRa(%`$FuwcIk4@6%x?7P+mW@TQ(VZQsBNn^pS(nV zDEcuw)sn$Xa5A8Dt~opTGau=}!L@hMOQ!JjFMr5ogJO5p8)FT*$)8qDKW@R=9PY<5 z3_0;N;+U~+>$$9OO3ApDb+Hm?W7P`>f8L@wxG-r4IS5POH%$IM%j(yQ51{2OFq~y@ zO?7{-{WZ}~FhJ}NW9nC&p@OwxQw~l!*spvyT-IMvk-vPg)kB-gFtpG)Hs!RZVs}>9 zgOz)%E3_dD4=++HWNH6|1sK1QIAYb>!Zft+=VD#{p=Kx7pNd^m2;**+4XUw2M#K4Z zubO{7e&E|2+i69+@^RrxtSE{7tndlsB;Toio5S&+6(UzNW!=foBZvLkk4@198&HP+ z*Tp4~0QX(PPSEa$G&cAY1>fp9vHZk-hE0j6=V*~XudB&0pQ|$QZxy3jPEm9XF~-|| z|Ke!IGuKI2=yYFR>{;_wHpxG}b>-)C|FKe*Q+hfMtCGJ}Pd%9H5Pje}y5gY&pQ2Ec zwnlaBHFgAlgDdka(pJuIy#9YN&X4f-p_o<+u}9|Z>Emq#d;iw_bkc9957m_uQL7At zJ79-FW1&YTyHuQ@c=h`k_iJHuk1n_hP6&WN`FYJx!tWNE?W$QR)>hWg%6UwWrUNl^ zK9u@-qbsy2IM$vR=r2~@fa}bLh7r@oK39Wm_w+$iiI$H7-+rzrF6RwtVJp}Fxeq0l zm^Qaf&!qg8Rka+B+WUt^ZxvNY+L#plq4!Mew>HIJ3yj|i>R5SLg=H_o@2|t*C^Vxpv5VTOpnG?j!F8dRj2ChHK(0jBg z|3e%Y-FtI<>&Vj!7DioXYgy3ZFn)8Z>gPTE5oO4W*ALZDFLRHty~l;p8%F+o2nDm? z_((&p>N+7N;;oZ>N6m-vYcmzyu}uSO6=6UEzYOuE*{L@+roHO7GvyEE6r=;ET)Y$( z3-Z4x4zm?4gmq+`nI6S^&Gom(h+R8QWA!61UO8EoQO1>5T-V{fF8B$OU&m?`&i;>2 z0k?CrK2Q-g!Y|DxiNVpuSmve)`Dib`{U|a+=lU z3h%&Gyuo(OL^RwW%ACj8x(-!9Zrxr#ZX7dbAS7^ zuxl&by-G1m@id2GnbJ^4ZgSrgsZ7w-ASKc(F{e!Tz{<>0sUy0Uf4FnfxyTOBoWa@K(#6uqN}_$^f^44Q8c8W3xvhOXZpT&hgj)ja$M!wtOMf3FImO-5 zz$TC$OV6VOAQSr6TOx)six3okMGVp_vBo`^vG;bncf>77&&jYd_%g&J*2rtICu@05 zvFoa%H){F#Kx&lfvVYzAWT`0*0&Psfp~B?d?Th!Up`b9)z9Yr6idF&e=w==@+H-01 zp~`c*Vh!mh6h>Wh6ST~l_6|nMbs}!o8l1GzaAr%bm8P!0sr7DNhhxub8perK$-6@) z!}tf}Tz>q9Sx{?PnXb1Zc0qD)aS1-;^q}s;?MClH6aKQTrBF8G7_Es-r&#~(yGRZ9 zJTYa%z2hgmrIIEJn~L<>3IS`KhIhHO2adIsrVp(e9nERHn7436*@PcPCOa8N=;tqF zfglQ>38_~wOj;$bgW^q;-t@$eshwsDJtKM+8L(yfWh@kAtJy%1q<9`WD{7BtT*Fe^ zpvWqzLjylJs+rXA+1V@#-aa8Z(1GGZT6UH8 zWE%>Fjm8M($;=2JC@4+-@vqmuZ^se_qH9C_0Ap#4&%YZ-#P`t<6!&fesN}48zslve z`7t##llp$4HEH4?6h}HvJq12^-VVO33H>hym-4ChNp$}HobrI@5)H3oIp9YX zgc$PnttgvS!pB$z^;Wx9m=Hisy6JJ*LxVF|54ycG-+CD%h=aDiLJ&%SocImG zA^;s{hCd2z6Eh%5NJ!W?d_l&?`nTo_#bSR)JKVvIz;WgxK^G_jW1>GXB@`Sp10=X@ z1Zv6s`nzm}HVSy9QV(SLB+o)8?;L#~ISfRCh#@VfV6fO5oE)qRea|_nKmAqAhzuJP zubD)LC6E=DZTTQcCbbkp57{}MIDskn2=AP##nCe>>UZL5&2s5iQ5@cH|ClPuhu%+f zBBsfpV*?W6bC$7tdy*@|CQk6Tih%mf6vWF5hYYU@V~o-Snm63LPZ-Zy>_E=HDB?S}{rY=@C-Y1jJ*RMsW&f>Yqa~zdMOZ;)-%0 z&G=NS92rDKN9Zi3^uZD#T%?c-v|JicCo%_V@p)Havpc_6lf?nrbEjONH5-bhUIatq z=POg{9?V4wbQUv52HaMpE#`@23YXf^k^B0P4uDFK#&`U08-*>=%=?uVH2w|COp8s7 zeNY#vYfN#J>Y|4&@z$(}CyIh!-Ha-u-6b?UPb)~%0-M|UaIDGwjb_L{iPX+}_g}Ou zd{>kWmX~yIE2%Xb)_9OUkUI1|6SPW>1vW`;KVv3LLMkHBie{ObhE%l0`a?>;p8ALU zAWHS~CllqEC#c$m8T0+e&!I+$;4lMuqC9*es-D&Zh_^KI$exU9h&s^sP+S6}lE*3E zr+T;O9yr$P^isD@a8iI1@jEndJ1s6T4FSRp#Ye9JbIkY=1`P$Kd_M);l7IYfB9=#w zin6#P?~|F0M;-g?88cMJPE}Vx`fkSxQ$?^+YHc`wo*};-ec;)P&88yCzXKfUyT#u=MdDE7?`Y0cL-k7X+y3pYJ_V=z z+DeJ*yqjkcBa%QJQ_Oq8(EjHj-&8Dkj&5s9NGdM7y@n3i?o^C2bCr{<0;H=n_4;) zJ2y%zB(ILG%w-miwkV3GFu#ia8#A@56g5$3IG=)>C@kJGq+8SU_l%6w=K5Ob<3i0O zRD}NHGn-I7i{xEKvUow|$Vs}Nvm@TI2YF-1yHp6D?tdM|H7H?tmabj9Z}$$&tHwkD z#=i)$4=yiVDRGc~`^u{;8GP5xeP+YSZm)SYOi&TCY}Zn?GmK|W3OvB`VK5Kq=MNpz z8QsG@HoV5R!oc9I!CUjUaZ7j;V(Q)c>K$@Js@}eDZt0R?NcVQNi>1jY^!R!nq}UBn zw+%D=MayE}S6rniBf-(J?6;Qk%!uT{64ua7@i_kYeIoF@Fv9L29>&!u&oi~s2{D@E zCxf+OxI$}rQ@@`2>ytpj?LoI-K~FL~&3*1>P6~9RAKaO@n)=*5v7?yfw1POmw3}?K z6CYc=p70^fDPAiq?v3+|sWfGoxK;Elb(Nms#FU!&1J6|2RLzw4)6f4T!cCjpyPE5H z4mM+Yk`7MP%`KK}X%i08$I|*2WGd5;i7dgy54d55`+sR#>oF+MRJoce(3w-pHNxya zAI4lG?Bk9P0aEL6+AFS7q!Xr4Wa5m72RCI!6HF+y0nQ*oI6ZOv0P|`w_5Xoxa~09j zwn!1rfb>cMCR18{^yf{&2{^+ED0?iJC+jIjdK8IEW^|O}=#;%;zjdvP6frYmY|Riz zBdJTLeUylBSPe$L42xHV$6k~9ekbpTBJzL6KTJyq5EJe<+QE?i)2Wp@IZD53XP&^s zjx+XTZz9D4NEi!j^(Q2`unaaW>i1;F{7<~x%O?1N1m+W*PNmrXRcynF z<>@-x?Q*Zhtz`v>3m;aY$o^p4=I^FR$rJ6D-^=IZs;|ZXB7J~Ug+YMtn!oZE?_Q1LC zx%VN>h+Ucdv~kp#tCaU>^36nsq1w`f@KDPPHjD{4xM$-LH+ui=d8=rx?LV>>4cHLw z1KIA2FP?Z;F^};SSBH|yzg!ae#BmCs0BbKD$oD77J8aMN7@aw-Q!yRNnQj6Y5wd^W zaD}>z7#=-i0f2CV4u;Wk-rgD~v@$}BCvAlHU$J)bkR}!`#0}ufApGDG`8V&Gw#-Hb zh)g`^&i=<8*suPmj)?p~`uT5!3A7~M!#hPL2lI_$x{6gIkZZG$px{pXDL z2$6_O3@mkvyBVyVfnF&WJa15(0^;~TOC?zZ-~@FM&DsoIUXpeh$IDIX?L1=$U$`AK z%udfv>Lr!cV9IH&YigLFTo6eZoe-$CIVY?G99Im};(w%Ao+HI#6Mz0D+8Y@?u$Gwb zR6l^<{Fyt1)&kKs2q#~qzt6OVMpONZy-oGvNi3MNk?_IZ*sXZNPI$vZppMVa2*kPd zKoz_*)O}3iWH^a?MtSo|G@O7<5{V}%@hcYm3Hmdx;iReJ7AY#YozaR&uPD<*aQpSt zK|y%dD#bh{iWSaO1kk3GfjKNxoXM8Fc%-Km`9Bk9`sbrWOn)^O`;=GHy7rsj3k(T} z(9f}iZiZM2r*%>UiN7UnjLfeSKQKKCM-b=w^Qe^&of*~hW+vyvml*E`k8kmUtm{Ni z6IaQ4l{OwU1Eap|1RQ~02fmP^ss%g0dR7O~6M&4!u=cLYMYJV=voJ|Nft4U}F@|pr z(0HzTUL7@oXQ)-?_v``Q2#If6L5m4lKb7 z$R_;Ps`=tso>QVe(`8qp_YN`xHE@8p;W3AVi1gy-rJH#qhJvXXfo~bkicrx0lK}Uu zun31^1K+3YiA-t2JmL!`q3_Rj84;c-NpUp^Xm$nquE5IfsbXoXHKvDUFfLZ^qz2lKMZy{sa+ix?n)!qZEb*L0K)0WB5TJM%0-?#1{BUE32PqanW}rVANpOjfr7o?0v)|;9G%~G!rQXOaK>>gy zGPCc3vp9RHV3d5xQ<4H3;aym*7hl604lxY014P{bvQ*J>{%ORjR8*VA!jdup>IHG)D z8yJd6U_^rR-}1qP{WX5(<2Y01f%vwxoN_Q~PlD$=3gJVK{gaT78(HG#0YPL9c+SoW ze<=2d9`_#1+>ZJJH8@Q1i=JAu)dl1DUX}>kCpk4A95Y0ul*jNOYvaJ}Sv= z7XViy<}!5*#?+E7W)@hq5CyQdf42V{V}UXJuY`k+Pyn{CZr&Q#qngXhXm1|OggHb% z0M+INRxhC7hL$~fHosL6R79f5H5Cg2&C+6`W@Wn2_>!LrhxaE+w=EOH0&R|1W~rj9$~a85+uaM%>+2g zjM3WK&*&_kLYPjReSPush>Da`(Q#+{da;ndRm`1 zW)gnN?qMoHV9EPIAEw1{gwG7Rz__0iHvNy9N@W<#x|s?p?k+QMhiz{ObpD80@PZ;9 zGh+#WFu-0Ec70hWEIz)gvR9Y~GiBHDZz5qni^7rC*+JCF<9e2Fv=dvVfgD%8fzeJ1 zM{tjb7}H)7n;u?MDvB}(;0-rPaTFwiJ|8-C$+O=jn0l$Ow#Xb;w#ln*#^2}zX`7!- zW0%NkeTCV|TBogYZwit2V5x04N-uYu=u?c|GHZlso&V^7(NQeIJ&}zjOVLabw;p0K zLuuzpg|fIu^x+il+4SL&hz1wNBqf6gITI9lkc12PwfTVb)h38c8HHQb- zI?q&j{Ep67*0QNpCC1jw!ulDa1~5mq6~=eOn`e#m)|wl(gvxuBqfY5837eOEE$jYS zWu&Sq^HbAb%E5A|_tSONNCqZ0+m_AZR%imPElk3QIJ-o4iv_g&&EGc9d;^;A>}TE! zBkq5;_8c074)XkH^0YFv0XGQw@^^+Tu7BU#p{;0yUyvbmp&V2RrzF#&b;c_xNd$x+ zcc`w00Ryj2xKH6w4X!gr(RC7JzMH@6aSIv(lrq$rRrLs(WZRex_jhmRKojm@Vx6{9 zOhS(Hw&uXof(dsX5raqJg^Af|M#i7{ZC4+1Xc`#$DuN=*+QSe@M zGYuvN_n^_qeEK;sC4QcT3~Es6XU--c@Kc!kdr`2A6tqOPH~aMBni(`DR@u~dnK$^} z?PS9u*&g4nuKt|+&B^TN>qQ=Y+rd>*^K}13Dm&%Z_So0urmxP_W-k9qzGgKc65*Vw%;#uxo_!!5#9WF3>S1T?uk})6A(%+`a8cZ%vV;oVzqar zS^u|>@{hZrqhsw+=;>~+>kQLHvr;5a?fm2f?c>#1m~vsHQpaBJ5g2%o>edi|W4$eU zXvbiys)xS>3Vy^kV+Er= zZDDSygPB#&1y1|wwQ(>SA?VgtkI`YDWB7Gpo; z#*$6C%~Q2oLKJFSUiiwSo(rbA@(0(~ z20T2hyh+jTviXS?wJnk9CpG^kw9No8*H##Gi9ahl^(vo~wyK6>=+36l&PtK3LW1rn3aQ#sIr zT5tq9?zh_v!yMquD{sqOaIFdYy&&8>xtd9hEVj73y>)9xnHWxs-=Ij+V;T zzo9`l{(m1;@@>lo(ZQS40M6ar+pyu5&N|dsx%Dj9u(97^XzA4=AnHEcAA0Xm+p_Vr z%DAy8e#i6kFReT*6EcABdI<@TWe8V-=_O$>Vl+G4BFQ>Y3usmU{%=8@L~b;y$t=uU zLJ4@QwOkT!;Q>AJ!wu};MHFsYB*S#B>$%Z*0o#N&~k+*CuF$ltOds&j#(1*RZa=jbhci_NHk`o^X@;}_;sTWy^_UR`+Q5Z4N^J2ZP=9M%U^%4pAdbcsj z$2(-SC#nMY_I*;cBNszVcX-n6^^6`RGJSPDFjzrG{+iY6L*0I8l6dRzk5bhY2DWN% zJFbY8>^}Vb%E7v!4iAvJ-5~5I-)^$_F#>ah`fAUfaFhgwc(Q)qT<2QzgzOVKY7JQ@ zLDROvXqQ;PV@1cn);zW1Qpm^d zAqjW;Pr+I_j~FWTPZx{3^tLxfu6N?S8L!3=>qYJTOhz@zQ1L+aO)*kEuxS63tGI*8 z#?W+nPnUC5mUEyL7!$3~@4w}Z)!9W7yQ_>m+-hKwoma1U{6iizwnKpNbd|1ooGlUP5WR zBh;fS*i>2DtC+QdW8*84PLzLrYQX;cOWr7J!H{+|YBCe%5)1h7hlE*pz$7J+kmv4l z3!WVpmGv4C4>Fs-^o9Nh)G4|gCfWSsq|~h|&yBZivij#cM?#8{`&ObR#40VoP;tw+ z7F6Z~r*DCX{{~85!`PG|klb#RdmauoCFkRb+faxGM}((EMLgFy+VnC_jgS2>8l!0o zrbMJ#qG`J+JhZd9<{BHn0Zz9DRSCr>Y7~Mur0NA znDy03+-(f-$=%M&G~RZJy4Cc}ou{?Vkhl9JQrl$twc; zX*+fAD}Xh$kFX1U1M_$Pu41J}*Z9e~1!h5ZmC;VaEw95WUMq41!N3Efhzb=cAq3j_ z)#wzh+}iZyuUWkQR_S->=>^t&=1rY(k=xxa|4>l-2DY+#fyH1?>)AA)J7UM}w>iYF zuVgWA%edso*Z~7F{3G|>DbGO`3jac>Ua!8x1wIyC%p(Qf94m?q(uTTnb2EfL&&%me zO^5&m6{qn7MjG8lBLR@LDJlcQ=YxFStz3=k7kqyFly%7$L6GXOJY<$O9?#(55pQ~% z{3V#a@tCkwXU5^a_p8YYegeuU9EUP)jd*h%VC_Wew95E3NU0sE%3cn^SE3^M}Q6Xf@u_I4q#nX z)6D0Q+?m-H2^M&===_V-XgskvXr}M+W?zc#1Punk%nF0SUCVk7NkeGP5<( zEFru1YqjR1To8xy*n`RCpuPh`Tg330jsDs{1m`Zw^8>{!ffP`yL6`G^ZW(QXo9ZmQ zT@U+f>TN5O<-1P}m>GGD{Imr)jY3WM`5FE8MyPL+z~h_DoNR(#6})-C_3r7BniMl+ zJLd<2aPq0kL2LGMm>-~7D89K5kjRzCd<|he9Y$!weo*iMhWmo0A4Z(=yC~C{(NyEH z#!ty=^pVI-B{R^78@o<;T%rfLe1NYqMbZw9&SNs~tA!~YkYRu?D>_ItsgIPS%z$4Gy*s2 zNeYali$IgQgYfs!NTzUa$@(q%%-u-ovz&i!F$Z}#p<9GXY{2I4Gp&>mu3X;iWzNws z=i|t84yzPS6^HkB2VhQBj;8cc$KLjL(M?IcD%pv5kBd@lcDD<|D-d?ktvSPZTc5?avp9jMj*27Fqxs9!KCG6HLZOSH?yRmHsp8w4)++}~Z$%op6^1^U$yN69 zFsh)DH{t5hZ^luY(WQ1UC0pT870ma2pC)CTpmuK+LyVfWUfUitORfjzBujRH|J-`# zcyP3x&R}JF&P_DX*m6j5*}yf$HSa7!zMq9j=MLo{&f4{LF(dG%t={aLLJu5Xv<^#n z$k5n)D3xB%^5M}M7%q9AGroF_BttdK&#KVYv$zRRr;+5Vfbr%_{CYno64}Vh{EjIX z3mSJ!HS@=>W8vH(;8j~nh$Q)`Jr_N^$s(E2}mOcymgn9jE|zrvQd}Ve|88pE!*7lxh7T8?n(NV$vY(l!4?TU|^ku`xuAJ7a2_=XP-Y881AYnZpck}tKT8KMcLmE^zHhu&~s;nyx zk;|>!RKVroItc!uQP08C#hW!AYS<7;M8G=Uqm}{6ps;f5gRb{Ym+e7jt?+eBD}?u@ z*PYs{d-SH3bD$$cF@)m}v%D$^kQ70))y=9CUyW5%L1Zoj=KrPQPnSRtMPAJ^;%v9m zR+vOx4skAB*9MvHXUwh0J9zs;(?9H1n&VenE2fX;cZ|3&GV{08d15vuJUUeaYS7&9 z;IQjp`*FDd81Nk7U(m7}vZ`o0S_(viBx@c}Bv`S+m{XL5^~5g1+#EBSw|U{4^Vq}l zbx2bwNNyJ?vI4hcy5A(~hTK}wY>;TY9Um3!4hFN5S~a^xaZWb4H@i`|25iFEjQpe) zjbJfG_ZaWXz1>X(QOnjV+*lIhGzMnGJ~hXh3QxWlGGFh7srUHqC`JL5sI~9c_^x}K zT(WIrHhAD&X${!bS4n{>34Mz&?(ZgyZ2vmASE$V{k8Vd5s>p8-( zT_aUF7-=??+9GkPKs)dmnj;~|Rt>SnAy?*$`4#<&glKvN-!(yLFcB$IH#wiypZ>|% zLJG!H-%a$F&x61j$r~kp04=X8`Vn3qU=MTYL*b4|(-P-T99EAup}}&SgZeITSngK) zi-RGj_GGg1&}}~5An^WcV3w~sOT-%Y{*SFNUvM|j#KI-S$11eC7fmj&IqGMi&JrT~ zEpHAAR&i!6tR7O2z5xbSLOA>?t#E5S_*@Y$UVqMOyuf-ue-kH6u$9MkHooumh*0Nu z>wn5++0fPh1#oW<*fDKjiFv?KNsW{FDi=l2A9T4i?Cn1Ha&d8o)zcVV8!H!HE97|3 z!y(rv<1UsfQuGE~ymM{Y$@R5j(LVpbQy{Wg=7`az=|f6NS>1=EaU3RWve^e#j8TW` z2IioKF}PUKIt$-bY=!Ac4|`yA@j3$-hMHY}tTZ^NF*=;HlvUL}8_+egXaIuLcI}l- zLs^}f8#zzCSlbE%o9+`CQ1&%Qmr;^Otuz{TS&qU*&OaKSoM);ix+9h)Wd9yKdMRZ$ zFmEGuj_J6!TF}@~?$};5z}V|O48|N2 z3TBsrAe${{@F?C8*9WFt_e8*nJk~8C^FXV-m4LA-67 z)0rOt+`doZTpz&V;vPM8%LQZvll$}w#xpf58lk7|K}JEqj#e~9?CLQ+By0_w z;Awc+{6HQS%m4h8B3RnI&U`qSd@N#xk!w;_+Z7J!VSpx8Fw3oV51nVNY4&ZP>lW*c z46yv#+h<~>0@l0;vhDafAdH1#>K)C3HO@SIf52g~6cZXo6V1s_|bFE(`a1IyGt)2QiHm?Coc2AFH-pq0y9i z#!Oo#0wZO4nC=^;D-0d)MzTJyP!H=D#|vy*tb@$e+>zSch!bP^%sczQ>_r)bK4-6W zmEY|Y)V?lLT>biJ2^vmWqb`tEa9zI?CQ90VxpQ2*u2H9lpKG{m=Mt^<1_@P`hr1q| z4`k@}c7f*V31}FOtc{1Sx#z+o158|<+K z|LU2gUk8|g{CFp&2=(qG?_VqnLONF*)P(qrhj(TAlS>*CJqC^}0IHx~vSh!PBwLgp+@j zmD;7)eMEYt8+c2qFx1?@M(omerx1_P0Thsrf_POrUye*q+0HiMFIPA;+aV;J-<66+ z+qZ%(al&XPOTMAw$MeKkpi6s_BA&x3g{%E@0H1<)z@BHNy=aDeD@-3e=nO`^M!}eg zT+LXM+-TSfyC(~HH6QWsEZCIolnZFeS{174{KFsFgZXTF;r%j8&zIQDxsuWP>?LnV z-OCMEo(M3ihpF~hNR7crML(pVA4U82Wm)Z=~oFDWx!;VHH^LjJYUh7fdp}XqK~2Y?b!Z)4sY>UtciN$m!ByvQLZAcJh<~YEZPW20+2R{mjNQ=^)tWtuh9J|y170bYJ?&1Xtr9U zzSWMdDPFm)x68Lr&3Xt@OWQ_D$A(pXE965m?kWtIX8bm=w|G}@jK3LFo(P9I+h~q5W z|FX9Z3_3sIKkq+?C3hzt{}KBU9ACQ^Z}?m18pl@_EFQpPEb_s~>naBaY=4{e$PU8A zj`*xjC4|MbE;r%#ogIrf>(7nA07Ade|CxP#6V2)KXg~sgrtvZkR1kQ{i=IDH6CKGH zaZhs0G-O$W)M)E1Jxiz4XBHbl@?^jk=@Ezl*qL$;re8bMa^Q9D#!IC~TqTAaw3C-{ zm&IZraIB8Pj zm6JJtd{{Q&s6NYXE||;7Z<(eR=TT(W|M6ng&+Ko=Dmv`5HL~W0U3x-lrLLXtriqln zIZt_NqlH*pcsm=?GwmWto|LfMauB}DRuHN>P!m>`tUi{OcA1&?){<5mIlQjQw$^YJ)pYNuOp6CE zc~}dcKLlm}{`0nH8f}XKk62XYV|$7MNVAFr`y7bA#Q(iO!=Z`) zA?u3JBqN5#R654vHYbMb zw}O4$Ch)1f@J#5v9Y|}Em6marc!yMMdtjeH|4&Cob-)>`lHAfKgwP$U4qDa*M5S5McBv$3;9;?hG z#R5oJ!d>QqLfGkIr~ak=0sCJ#zLa~-nh<+bM)^=(@ITB~^>#YsN(BLQ=WFOR?TNLh zRfVzgwt#;Jq$?|)_G4AKqjuZCGLiZT>2nMGjt?r{Fi3QJ!H(F6r<)`B z{=rAR4u<*h{K5Kt+EpqdFen96PSSa6pz>iN5zv*+w!w$t| zb`krKVG!|!&U^^Wd0FGr0k{8$`@(!%+UYw%co2s3?gg91CjYd;$EJhFgKjo1i0sa4 zdV9b~8HMXl47sVx@&)S;LF`dV2;vmO`_b6+a$onJFyRi1MG$;EtyZ@xxA048NQnE` zP(u`i(h@qX-zOw>p78h)oB8!VQ9ljB)^4sl@aVaF%7JZa(gTu~yVP2BJkrm1AYpnU zy1G$;1C(}ax44??&@*OL7N@J{|=HBHwVvnVZTHgC=*J?FC#|k%*m;8|sD?qP7?)u9}Pr5@Wm~S3RDf`I4;= z6X8lE095G1TZ78sl(bKR&1=3&&fOJn@-ED0+kMA!{ghPBgr3YMAE`*b@2wdxHu&lP zZIS)6GCz>Bz*Z33QJwp`L2k6aiI@V>{EK5{SYrCE)Kc(CAxP}rdP75HPq*z8rNg0w z9^_nP0*tG(B|4oK@mt(;$A6ke`WnV6 z4ZDmQli5RF)|Vnn@8N zP{4ieF5oiiK5jUCgaY|%yq-T0vAOP}bUq$MhnxX% zUpePKbOCRQl_3#Urwg7TzxzBl@I{o+5KDZ+UaQ{wBW<8|Z#OEi+*CkAt@D-n?B5;r z6L;=u3ElhX`6w9ZfsKx@b$US+I~Dp5**T1j^r?3DyyFvJBkSt;5eAS-h4YzocJBHJ zrmvewT;dZ(`Sc7!WCJ5%!H;|w>F#OhcjvS6ZDX7Jxg*H~TvK~py;!UFc2&xLhR$aA z!>^-q(@^H2Vcy8*5Y(n%zd_zI5_*y>V${k9eiM?HIGEW+5f;JjoUcPq8R;M7UaDF# z+$=Zt?&8W5T&tS>B`kDnz=y1WxP{un;V+W82U#*%q=bey;IBT7SihZRAQr%nGvI!X zZzBN`0AljnH6v8I!}Bsq(8O7M=rD>t*l-?dp9HqUNqI?yuHG?x- z{rMXTVlu4IFN>DJOM%c2s#sV^sj)b}SbI@ZF!4%*A~DQ%d(+{X%&H#UxC}}BjnXYm zS6C$HMT@JY6m+*7aF@oPKV1L4ceKX$3i3?Uj_AoYg8>*A>X`XRrnjjpw$$~Dn89%4 zDhtRvzK$qlI~dxZIgDkgeV!^{Wdx1~KD2@FoUk05h1$~9Zm)dbk+2AM64Q_pQ+YSVJz`sJluc}(} zxI3O{3?QqF?L0qZ8w$-=d&zz-+zL3F)gyGXevKSdS)dFp#6&XXOrBlp0i7a@@&@uD z;0!F@)r_Vj$*2(2x|4@^u__z?{&On;q`unGs7R9YlptKtd36bDS zwe{5>iy^iJ&ha@5)h8X+e6{Jw8O;xkaSUw&1*W;#L0Sz)oR8Y%^X|~*)clNfWor^s z`<#g4w+rv(q2P7*@q^MGoAJ`MDu%5n3f&5Rw@Jj#{DzgKa$~MTNg0>7*A)@6?>-Ia z4Rw@lk`-1+v;d6;>WPV6*@H^A~oI13j?iA9Yu`XR8F(=-06qgqAj@k51;k z0YtIPOgiHO62=jgpFiWL0sQ!PSDCOP^eA9}D%1?G#9F<8TAzvoxr1+o&xX$LYYFpJ zQOl_QY|OMd7EB;B7{koByg;KR?Y(_%qnnITTD@}{i|X7fq5j}Ii4!wj$P4mn{BWB$ zSaSu#4hXMW;&;@UZfqEZaDdFn*8{mqYI%C@g3Tii;P6M6SFC*64qj!P4$GPXVF;J9 zFjTvxUM@9uWgFV&+YR}<4d42ke3vK@9G{q_1~9clZkgY5;p>VWjeV{W9Giz>O1z+D zPnpDMYL($$6a%ld95S!_WCEV2Swlh(Po-Mxal43|*S+n@rIE;b?@p^=`|+%+NX1*r zKGdj3M9vkmKv8^agsr-KM;z~WzPPr2qY854S@a;xIFzmKl9FF>yeajTQ2c8^1&yRO zo`93;N!f>+6gVv2*rcm=h3QDSEB2Z#KYN<>>Th%KqT!gQ7kb*sU4u+l(ru?!dT=l9 z8FL3@(tNfb)MOFv1oO?H#IEw-@d!Ts_EQ8ij;}_J(V9vqc7fCxW7O*~#VVOS@FRo| z>MV39-XFwx3PpoL36hLXF|4njE$D(6eh&m~WaPWG+8xr1L5o==<+I6ew~E&M+T#ou zZzq}Z(I=mowXeZr4Bv(i{l>QjW!=?T*2)uOHW@0&ws(d)rqF0rJ=eKS$<iQB6txW(!4~r-`MFiKE%7rsnjJi<-mzcQSmB}8!WsFz|JrK(YzMNw=TZNh3|Pm zS6-U?Tf?TgtZ#j8rpuwgZEIABu$4+TOJ&CE9e#6IS3yYm#x3v_gcTe6P8?}FMc`Vc z4PnX5@NTev#Dn00gG*mj;ob_6j)i!=@ z=>j&7pPJ0XO7oLiU{1z4fBsC7sv&G<2%r4#w_AA#mXW6}&Yr)p+cp(^0iOKpwe{QF zx|cWmL^YJ$5sRv}dMkod>R@krZcwCZNWB%k+PzcY#E0{pfeH6sC;a;$@XpU@hROx} z2b;^ypvoe;|3>YL74mwh{7TK0n5f+xWM5-ubFWm-b*unYH@F2C(bKxi8fFYp~PIQ4RaR0?v_EG`OE1#D~?PSq56>l&xdJR+$Rg5z121eG`>Kk_C+3RUnH zo6EGYt#76BZn&LF+0312my;^~z1J?ycL&p>iXg~?SIUJPzund?JLbGw zsv7GR<-Z0JnG=r9s>W!?n}g}8@`sK^GzNZmdex`sv-%DZ(&hJlF8KQ12%>pvyR)GL zHA=)|ppc)@YGbjQz)gY8Q7EbB_U$YeF>R3Fv{k}~LsD3NSqG@cuRaF^wCrP#hW5AT zA5XlMGYAn_T?}O2Ej%9Bn{V)wP{h?A83bdxKH$)EYI~Cov-7VHDHCMC1;Q1$FSeVH zBHsiz$|5@T!Wp)Z*Y)H173B^&KZ00P&u}cf0?raID&+}MN&R?%BN8k{Ss~q&dm2O7 z&e-hUn$|ZOs>;U$Z4~l_eB?vEZ$|Y$tV8L=ryDQxMlN9Hxv_-f#t12e&(C=N=>UjD zymLLuaH9}x>x$fdd6aI>>jl-?b*TxY=2)`q!Fc}oP4bKev6vLNOtuPN7qy!zt;Jv_c%? zBAc*_U}`=ryat(w@T9{9Y3T*-(udNrKgLOR|5a06U(?~|x1|eGN)<=rx2T>pSgdJ! zi9@>x(msXPZcBdYI>mkVg5!M~{iyGJKV9W+_;wV#yUL+3S@y~k3&B*#WVXISZMlAx6y*lhGQaqn&+Yxos#q3GQ(^%Q7z5e{c5jKr zNGMN$!o{X8F?!v9Ly6aY)#F0j-t->@r`jOcBnw%oN(>t|s~k+N1&%343fK0v{0h4o z@c5Q!a#r}wL1Es(Vk>tI7D2_k9ZP~kz4$k-d$ebE_D^3^8G%Ncp3A)p3NZtxUj5?RcRaQK3UI(;s7Xu z(P#hkf7yB<8?%~`csG}hoG3L@WoJ3WN37Bs8#E=9{+;MRlk%3 z)z&A}1fc5mw~Ot}j3Aq}u^#&of`a=}*-ptK=LLcyt$+7HlE!bHp5L66;^*`tau+lX zt+jmqTH_h2pw4etBJ;DY)lokRc_>kqKBP)0f6crHw3w-|qQ&L0MHp|&lqnxwm}3*J z+XL21yw&o{PDYsA!OhQxI4YZ}w)c}e0BzBH$51lR>r5@=pGOCS`yTPy_1&n{tzuI> zZQ+8ksBMFih~UO(_tX+K^IV7zvF0a$gRS?q&&h_46br~e)kUc)Y8ttGPX=2Q<@`fM zd4dzYOM+$nYCkzZDZ$^+iiMy)KUxa7O->phkni_cWp}0JTfYFSoUJGeY2cIa;FUm-yUKHA$;M_=rvkn&?a>*M zmZECDiY&_#lAf>n93}8wAA-~dH5)hY%2gU@vbvS=SRrClaXnkZlDDJB9s=E*udI-a zYe~{r#0fPhxmv@)_Yd6@CSx@Eus_Dro#F?Ya4S&n=5t^zf8{)9+Os1D1&xjAJ5j7Y z&dP10kWQkpu}ayYO1_LcvTn{NHV*1TGNgQsOZ)4)ia*o4cRf^6Er^j_SGpeQHeDzi zG8d@6awZHys@n`~@>!#G)wGIM$Y*h!Ox!M?==j~ZAT%uF0+I!_b6HSDs*+%1QOJ8| z(_w`uS&PHRN&*kor@H0VpH5k{(2oc(1C7xxkODo~R@q_B@=n1AYIfJ6?6F(??Isin z{-^`xMOy`qdi^NahF^Tts8P%w1SS%S2_o8weWPsIG5`nES;FisJI1n6lC3cu6#!*I z9(Us!bMq@4^PefNtm&1?=>*R-x~Z!jA$2P_2_6N)9bKgm|FBFRg)r@&ZkH%G>=G*l z&_580O~z+8e&GO1$Rq!-g}06LU}}eht2f7qD^S;PSVN)q;rCupcahZvShz|XvW7px_PUwhW4in>$EFwvaYiw zlrN%hT#%@Cd)3G`OBB%AI4X+|*bxX(F4nQRPQYpEb@z}1*t$i_w=3*}WTjgDCd+j; zW!vXP+)hVNaarx_p44E&6y=l4E48NZ^TJgbU+6Nkx)g!mZZq4}RSF9Z4ZQ3y_#FRr2Xm9(*M9S`NIDPt0lkuhfxmcEzVF;?n z>3mZkJDKWx33CgT+`eC2?bzh)^`ulkM4-x|pK+cac=xtNn+j|N@Ru>~P~5N;#ls;8 z~kQGtP%Q`rAbKx8CAXSJ5o+_?7(o>kB_iB%eK70iDl zV!SIJgKoy4s_voHB8*y1%>!o`n9AWoKsn0ZY-76~4`Gv5aA{ogf7C%`i5b{)swiaO z3^iw7vPd;$f^|{;CBVusWrg=qqh3h5rS#UA`=v&*?-n?nN=EAQ9HP3>VB=>fuv zCp}P8HM%4!05VR5^H_W<<%cb6+3zY;#c$?;=DyYo2}yDD%Gm7&4$^x%WV)PGhqe~@ za0Wna=|98-y@=~aCdi`i%0#AA^eJRQ#Ec!Q=bnJNdQ@!p#AH`P6(5bPGv5#!fl_y9De=g1+Ra4}=c}xG)%bpU495MN2rYw6R z7mq=0r=eDe|C(IAQMe@|h5{A&UAIuZW3fc7pqBFki+wB4#~Tg2I)Kjs#`g-4ckMhK z(pLSZ)onOdAG~jkI_$bij`JbeZm+;M6Bxa4X<%E>r?{Zo4sfGPXdlXyt{Qqhs_myD zf{I}8Yv zl``5(jO?~_yrdhnDW2$ZNyZD}l~-&Z#)rxe0IO|)Ddofy$V5aEZHMcPC*C(+K8i}y ze2=JAACztGX{~TseIR-#_@l&xQPlv{Sw%q2>|gTR%YcZ1Q2l-D!V)e+vlh=3;!P1= zxq&^zb7M1Kd6ilFb_!bqD$0O3ZWOZPQ2v6y(%{hj%z)5)Clc`iZHD^S7hfvXbWM9D zC-%Oh;JBphQ{`3fz*cFQhjT1%mS16@S+P%TUlzCxRc|C2Ii&2b?5K9cTckF=@o~#? z$we36bgWXJG_YquiGKK;CDNkxm8p=}${bW|{&p$g(lc)vlic)LCihtSy#K& z->eS&{eN;Gw$XRuWrX@jRdmNLbj2?d-coCy4P+uzVdhSy7HSxd!=ZNQS2Mp%`jz{$ zJcB7TH*!NJ`ZW=Raa~YcXjT%qRmNu}Wcq5rLDYzTbNX=;%5@#h;Zqrbsysgl2&oAd zoG{aYTzdr+t6W1j0W7mblAbMZJ;$uF8yQaNBiq)jMz^;<-_RgdFeg2X>_a{R0s~zz zKg_=x)tftUv(t|+sBAYaW8jsZ zvLVS^EEYB%q20@M#y4u#wc!hdXj-{0y|)ufJ*F54r$&!T3T?~x@V?c&#IEW;R&-pp zqN$t3MXmA!X=0?hT!ioF|HJxz> z_QCwX3x;`=BLI-jp($G?EZy?+jYb7j9ce%6>fFmB8|*&VO2o7pAaFT28}I97>T|o? zy7sEAc7ar6db(fkN(iw-;4-@$Y8SkmLOs)mUp_!tF68NLLv?V-SwMnQrT?PFK8MfM zoAu~=8dT9OJsathsGhV3&xe1N`!mk! z=ZV;dQ_A@t_3lEqxOi(?2bN41ov$KBN(C8cRB-e*3l%t{kx7PMrS zwAAl*V?LjhR8oynZH+^%V2|##akWWbXMV(|i8I|a=F`%{q5m8FaCV6>-u`gIMA%9_ z?;({Io#3PW$WPY2LB2yxgpVdhos|^ah}aTYoI=9Z5NnShUaP^GcxhY;xtxd04diOY z=L~+`xBT+taS@E@_fc!-ozR5F{*nmRJkXGKj_Q;v{>I!4p`x3D`3AqnBrN`9R-{ar zhs)tIOfgj>0uaj2_r09bWon_PCpk732i*zM>=Lp+!Rk$A=q~?i^ApM7BZAhb0w3MQ z=FcqdUw3?s1>AsZMWJdqix<+-ju5QR@MNZq@QjD6aBETj4*C`q@}L@;PQqpWm7J z1h?Bpb8^8PtAJZJLyq=ONxS$}n*EYsV`z~4@*k|GgEd;}SICe41b7dDwarXtJ@ zxbG=6CyCgzW9$4Ele8ZH`x!lvU;{?4L`iDma*~$7)zN>NtaTWFIK`zU(%XJ{)VO@; zMk%cD&6k=wp9Hx%Xykr>05cC^GRnoYU_TA#Lv{rC;croD@?wfd=@GGpun`V z8oy5%%xjHFw>c(Gow6|u>8Zb4<3jYX?P2!oC>M2ushXU;o*)$Y?WA}70#aXW2j*CO zz=m7wHm&9QyVp-XZOXP=uEWY?yH^q`RnBhsAU#P6qR~hNJQL6PJq!A4!P=4yw@&t5 zXJ@2qCV6h8WlU$6NOp0V%mNv40YxpawCnQHAT{iKd6MRU$xFv`X&^t zhDbV{F9QK7CD(WBtG%boh33F37!k8f( z;clTDl@u+Cu^Sh>n6*spybjz^mLWx5XP$E3vu?)94{Hz1k(?EdS=N%}xsr5%6OWme ztw)AOkV2S_2}Wc{#GMJ08)X%xwVP*v;@nIC90&Ck)>15seG8q~tk|u^5E!jbw%F#4 zz<-kSae%ylnu8|#J%0jAD|5wYPpy;v-N-%@nd5pF-)sDHFA*$Ookr)!(FgL@1$(q9?>&t|fo zB68w-CY@hPsuca;5>hOHY9BOIENcWH(HrK#4r?#FN}dcc0l?EjZ%Wtl0yvNz`(H|p zpQfoi-DIz|ao(B=a2b3Ti$<^Gt&>y(GKpqjN@mffoZPXvc%$)Wst5kg zucny-OW9(UrepDoomj^IAhbBtQQTrVWjps5s#q#VciP->7R+$_rB}10&L94-n*_Sl zgGBwv$ted$gTW>vl^>@>#vWunV9%fa>HW6HTu|DyHlhgr!)xFwpol8n zi$f%;!J21133Fi(0Qutw4r?eLHhtuw@?8iUz;{XebaaLP|8UxDS1I~d5s5l8yv036 zb5=9zCk6Xkq-VlxsaEzkgizCpBG_(_6)yUa$!IzYoz;W7*)}XH#u^(l6wTV3BC(sY z5GaCZk&t|%ZH0TxZ2e#S1YA8b8iE4UC@8hi+jDj;=S{bOc#gR5*+)J6dIlm%+9a&T zQ4h3dEgPEA%q>C(&D$uAPD(XP{tcyHOrx_+=flbt*{l>iGjX0*6FiSlY#BYA#ugxY ztG_gI%Dy7z7OGvcoD!_+oklwn;hBzHA?+a@KC`a&4&L(7PrNZO6@Rz(r zu}gTsTqFa=UQ%4R8|>8lKdr9=IVM#XO@q=FL1UWy5SbuT7=hvkB!|mb6x@Tw7ap9Z zSk~{a-;v^q=s~|Y9c5vFv0ofUY&^aikKPN$I@%9o$qroBX@*C$`#qWi z13!iL?O4UXd(ZkC|6|;>f7jAoSZ)@a*I=J>_6kOXIwdWJt3vwvcY zE@Mn4>)^&0FvD#^->DophI~oMaWvLx#WeDU7#4mc#R4X_MZ&NdJlK=bHAm_&@{ zPB}7)Kc3io2h%0m5x1sB*mG!eqUdqS>8Cf4&^fP>@iuME3F(h1D2n~%Ve8ylrj%iD zE4?_BYNy7n^hLDs$7#^cI26wJ@|u$QDQmfD{bz#PjJ65w0L$j@&fxUdJG7Q~rUV(f zWwf~ZFJzjsbM9-_ZTu9%Pq3rwp4Ib=w=;nB^L5$ItD;re(#NAzV;ql(r_HEOTd;KT`=40sbyvDRX^bEHNqVzZGRqL#MR)I&y{ql&ZkV@9`UQ^$XL@3_#1;vpesGGLY zFwWI^%b7rnHgXs{Pq2O7tEEfHdghmJC-Tm(Uz2!h{SE7^Q(f6FC{;`1cluqk(JXYx zm^HQmWa^`fyrNPtE?BwLf(e}&UyeHPqbs zFZ{v%WDP7%hFgV_J+K4@x=phHBpqpZme+9$9t<->;H=a-B^PO*1EFHI31Ap6GoH&d zCC)eveMgqRyeEtxRysyu6yPB$Lzg`(VNE;8g10=KNSrdkCDeNw=OtQU zSr`MXb|_n{GIcdWEGf7|QttmJ?Yje#&j0@}+t)n1G8=kVqF0()mS)bbD|2_{%$Zu2 zGf_cBMX%vC)WRIOsLM1LICA1@>5(awDJmkBI1$K+h`{fKiK5m0?sMP&9B<$?p7Zg1 zJfHmU661&hZ>KM_dwL}`P>H;Sh2j4xo>?6uSX}wmmbn&>dyqx>|G`Rv5c0~3oIYUN zpwU-mTPQy7)8cX1`+1i5--HjV_5eM&eDc zi(gI>|94utLPP*-`~()=(m-c=ZOVZ8^PfAj|gog7*<_N7SLunuKqxQQ~)Cfp<71&2LGsU3Kt3*r(T5!7f!94}RHX zP*b{KZT}&{_x%wVbUoepY2golv0i!k{G0ffeql!9;;>+G-3VsR980RkX;s311TrR9 z?2o%hlKb@whwLo&^nZ3htK-4aK9oya90}8v7yBs4UqpBMjhp+X{xX0gL`Yv2j=$5r zA?EZSKnt)4f&VBS1(9z&Ps(cE*S?;XSig|L`7hKzJRRt}Y6xPfTF4@;Z!UjUVnt1b z@IXY3=%!;pbf1=P`P`cM%B1Ft%lInr_l>Obya_f`U18pgq;LmUm#oP74ZNBB5C%J#aCBi;$L#v& z^g~n}gvT$k^1Md^&?lDkxx(&fRHGrPSKtNz)5%#}2geo*&3G{vKiory9r}+FQdsj^ zuA@=?*ToB?nIlS$;d3%Ly{rGP@eJ=4gyrfKEq6Ix$GuBm%}*ReuKr&h-75nia5=5E zLVs+vd(p^330bqMBK-zE9>rh{2XjxB3|hipi1Z{(A9QP4*xIjb#nww;Q%KvVDV?+1 zUwvsFw=-|OSRL$=6fqX--z`yIU~6C9x@R;E^R8WoQi%W~x37mC6yEsEM|>IX>HsK= zbL#u$xhwyS5L%EK+d3QC-rF1AgbUDaimmhSp1_!W^xO`QIKs{2lu#?!>hx6t9NBxDTC3Hsw0K`_igkcq!u6e!Qr5$zrCwPH}^U{?2+j2Gq(A7Sk3nm08o1>{oRMz2r=i!MLzSc zs%GC0kG4Cx$CHNYL!96z@wpCzozhLQ4}+RJijq8YyH{%6cyxf+j>t+;#Dukd^<(Cr zox+`(PXLlKyId>Gc7=C%RjqO3&`E-1iyXwz>_QYF2FhF{5yit6SnD2&*2fnVy%2croIE`auxvVm@%zXl8 zsZET%VpNfvA5HIh^c%@xpmTYpTW(R$Vfw(FZBn=vra$-F^j791sRz_z>A`MW{`vY7 zc0W}!X%288ox-sUD!6_uULNKZF}rrsL(M9ZdxsHn3frIKf6Dp%f_g;m_kRlCSg4o+ zxr`K~i_~M^&uiOQwbM~#;Ngx*=DXjZ7=GD0Qwc^+c8)q%g z#7kyQUb+5>WdEJIjt7_K%n$HDm3gMBCj8)^@^%5!n!`5fqQB3o%y;3T;A1(NkLGgvyx^rGQK3NC+r<<56-%7oSbn7Y)|#XT zV5uDg8b{;9jbSC*j~BjQBl|C6w7kE?41sd~{X^oyZt@byL*nPr{@b+?%1}{O8M(@K67U|+XT+C*Z#(x@51dD^?t?Df<#4ks~B?c^qUR?q2KXSl8~dO92=(kg_jFgKQ@uVm?Xf?TG`k6ty0gGw_mV; znuCiX7W_$I{XA?yphaR?`icH80W)tf-0G5=tyj+nVx|8ovig3Jn97FN3!7WN5MO0O za2SP`ecMj1NLa|2pL@9GJ7Dc6P5sYiIuzkNbI)cH&&(hcj@GLHlsbQ#qTxZkDL9m2 zoa^WA6vI7^Uqv=Hn}q8~|8chR!ipBhmGd?zz373^ObTydMi*2BB#6Zdb~E=O1^q5n zhy{S<01TvP-V1B4Z+Mh)R;Tdt??gs%hT?}Qd8pgre^4`_f^S|Me#NMCd(?_t;k^p~ zV|9Fy^XwZaU~0BXz{^(_R)#*kyFqXsR{CO23oZS;oFsgs5{N!t=!ku{B4^2>y|bb{ zU*+YGy&qM4OYl3J?|`Ps=9J;ord!ZIYmyVv>~jmU#T3Dt^J)e$@P?UYbiEu2W84@=r{+a#dIe-E|84b7E-qUC{qs9-3= zfhzf`?VtPp;qWUPl@HBdP@huXW?V-*xwx7;McgvK4*C`E0>I)Et6mvCrJv9{@3UaJ zH5Ds1&l1lZ`@Tvtt@jWm)hQw2JTe;pURm@`H zTn%CFknqc=$!i%SLF0*m+Z!C`-Z5S2p4|NX&E*C)uL0h&z1+s>@aN}ih9%a|%Z7nI zzpkoz{aZj#3Cg*A9|cQ*FK%fiCoL%TTV;xU6cMyJ4;Kj>lG^EmqG6@3jo4ozLgV;w zg~D^i5?G1dF4O3P@zr4~gf?Vm3v&^R@EqIZAx*%1z z??=(Y-E^wPcJAn>7d&&BHGc@8E#=dTXU)<2gv>DB{D&P|#EN#(g9o8DI8v%6&AjyD z7P0bqCK9YbB+i&Mb5UX{hNX5lD1Vv(G)eyL>=ZPd5cCA#7+jRQ<8kGb`*$`Ld!RyRv zR@>ZLe<2itE$JQ+TP*Ii_4~nIsQGSD^X#A2tV(Wq0W-2x9h>}>_=His{SU#S z+c&OXI37zh9s#dTSO>IlQu*_2#^U|$na*jvmj#>0}YHkUreyFWyBxnEc z`Td{sUJOFOa9ui-^TLOAuu7vC=NX~wpw#s*>>aQ>Pdzy-t7-D&0#Tm14z-&*1IVS$ z(_#9zGp5-y5EGR1b#0Gq_(^%gqWR?U&uH;<-e~yCMW`Ap9tRD!94JMM%()Q&>C}F+ zbh3c;T;s9Sc1{(AA_tf?QzMF_YOsY+lhD75i1hTGC%6h!WVPEt5hJkTRYcg{&j+wb zEOLcM-^UZ;%T{0QmYi^7-PO#Le^wwx`_yJNLNh(0}d@Nn9-b<`z}cMDKnS*rI-HyLvuz)fbrjd%TFM1;b%7GeVK{< z8)BZ&V{P^V=kY8AnKPS{I+m@l`ex`O)E|-Cot0C;(v<}~xW$fUbM9Jj0pZ=hI5tc_ z=a{fm)uVO&m2lS@mG_dLRtGH8T$~zSrn7jpWDxjKo-Vn$hi^j^p?oXc3G)##8dkwz zy*IqQj)}?J=}w7!_Ox~VU+{gfu$t=v`q^JzC61pzAv{tn>i=*r6?{Nro~RZZ~so4oLQDI z$QD`Fg7*~RP1hf;5q!Iu$g}?|VHAA&eBQKz+9KLNf+XLFT4rv@akC(J>9P|}*q`22 zTwz$ze9QXPyylCo=RE~Q2u$8q?JXF}zdGk{ltgC^XpX@|?tvwC2(=ib5z-(PI$TS8~`H;@p;G|c?j?O`>eOGkwsT6oX%Agiz5 zhE=*iWBVfuJ;V%mI$DUDb?_!4G34xCzmjFnExpDF+-akkV7{_IejWRl=FI8PXYrkT zcvhSjNbQU!037_R3^+JRvVx(Am^qd%$yqpv_20cGAS@RD*uH0nXr?Dv!~g%31X3|C zkjWF^`0*3V5(K70{)q0K+2i^A!?$+yb>o!>1*eATKqv`EHrBk{uznuZt#(P{q|q=> zf>2SxDZ}gY52;>`75Zr=-*8+3 zzN|#0j23q{7Uyj$HT;g6&-Yy+mbXOgh~kNr=?eYHwcId5O-Wq%c@0YT{$1iLq zSlYLPhu6ipE7?w{t9cy9R3BvX-r#+Z+KHMrD<3=Xb?|L z`I!uVn`?Ks2YyPDwbc}SbH|aLj-T6w=45Qa!QT_Kp?H!_->gqiTJ-e-6bR50`UwoG@y;Bu(0*{g78bUu@v$NV-{&pnm`P=1M>ehwD8D~;W+rQG?0Xb{`kHu%C7L+K^@9%JVw5U&v0tG(;>{3d!winN zyJ;u_%8)>1HyXQ5<(Dmsw4=MioKulc?@8&mO?`AnrL5cBp*QOg1xgl|8+PSuh8-Y_ zR+Upn=A(<7tZF{ZYLvWo;+R@RUU~>=EtU?EIDJHtUq1Q zm{Iqn=yHQm?h}dOCKpovUM8c(0!Ik#UEGf=-oR4~Bo@Xza7YavH^=W{8ddS})M2J9 zF@k?^bI*pHrx zaks-B&RY2yGc2^2ak`F${`fQ1sUC$SaU(ASfT`bu1#;gyKqSx|d&&uo#dh?+X-}~b zhYq~JEc$1{oCot9})TPvx7q9KqSZ$Hh4!{0H4eFnq|2(dL+*kVL>8o;bRqtz5Kl5Z z|5Lp5dS_mFZ^y1#%?V$&6kHH-*d!MaO-#i%} zFPl*Xs-%CBmuzS_{yy0m)MgFZQBD}hTld*^ti6WcdCy|@t%6US}vQdmc%|^l=>`G zt1USDt^;jBZ{_PdVUF`-LxF3$D)+ScS>ccJ3v7Di$`vy#5UX0TY*dJJ%3vwwZCxI( zn99+UtK%L$xw6c#dWZZ^w>o@IL7!6OD3b(6Sw%?Lah7`f$bCFxU4J{Si@~}~B*SGh zDs|YS@-f+jq}ThE&JM@YdV|H;rM{M^FZjDVdxOrq9I!!cLSyP{{Ke zCFxT18>zxkMk4fGz_CIAsU1+67Bq=#J$DM6m0n4S&ceTj|a- zDc}@72VDtQYT`(8>n6LcZA(wYdmImio*QmJnyUKMtvV3tv(iZK{YP(E^wcHlM{lDc zO^m@f!f1FEQnj4qPUn?pWhdtsf$V(+v{h!c1oE-}Db4>T%O+Z109XvM4&U z|H)8C*Ht%j6|0+=db{^=+0*vQ@cW??subk*0>)}?4p<6^t2kTT_QPbcCzDyf5 zg0q`bK?agKxjZJC>jiDxd$;5{=@}Y5$e*BwM#$7d+KK~SdNLy**;A%LcZt%MzP8la zxO4i4SGG0$Lpr{N4=bMzif$B`d|@yV{%~U}ti*+Nsn>hWa;du&gMG&FlnKY-8(5R^ zz8?D`w@*`Q4!3Q`EzL?e9Z5n)?DLDG;32Bbv$!-%wf+9?v|kJ!WY|k6i$4=+QkoY9#MB8?`nR+lcyG=evlvflsJNeDT%F;QI0!rgU4hbmCL%) zjg8)EWh1l{0&8_#WX=R{s4Q&2;IUK2(AL5jV9Cjx@vW%SM}pbWFvF^@DCLJ%}`yi6`;`&kiQq zTubW>*$d(u87AU)*H43(J4adez39-h!zt@zO6(|<{IPZ$jLGiIvBhNHllqw0!Sc)m zS|A8T;eon91|{{Qa^2O;8z)W_1Q{3bomC>YyT*)_KqP_>s84p=vANV7Q@B6e!_B|R zy}EyxdNbMxNw-WPAv=;V3B1kSDlyO5`x>)&BUvJ8j^K7YSNyqO!+sQhEy z`MH|%sMw|%3e*0bc`sV>`++>&qF}1eVRrX@2 zaoMO5)6Mi#A+*FuEm3&KjkzFJqOW~d$enXKo)=Y78 zC2rth_=(z|P-(T&lJFYrb?nD&Hv*?PnM|pRZ$g^YY!ibg)Hnn?_i`-hW+%fM9n9W? zujA_-L!GX7DqnnuzR@+R-2Cl;k)al%$bH19NB&Y%CxzTZ@T_oqt+KBZHds38RRJ9h z4PkcS{fMFcnO)e<09$lQf7I_>MIGm^qNGFZ^e6Zp8?UT*7^oiE)-3sky3Yg#fE59t ze>~h_P~K4Y@mHS(6(t*HqDM8WqfYYb4~^=w?59a6n&N;(;eGj}ApejoW9pCBt^&A#K;rw+UivGyevcwT_bdnFu9xqRe$xC)+$z~4!k?< zW?VVer0!6t8u+e$8HLoj*J96WeudfIcOyk^8#Kx+s*j-WZW|x$j4eV`k-4Zn#qMg_ zw`YvxKT?irP%9K(^Yxyio;#hKN$w?ASnZe%qNab?>=xc`4LgMoz41d0$RA4VH3HIe zVOu&Z_QWc4=qwqUH@5I@Z2Q>w=sMX9Q0Ug>l`b>Xiy`ja36Az3858B2b)8Bq$Vy? zUoSQAvn!GfoLGg*@bA%}Q*s|TeDt&|;dh~)p(#b!dzO&Dh+6iCe_ka5*o1$O$op~_ z3n)rhT>!X%W&3ss(J8W!dozgukRd=JX;9?SBnpegk5serpR6o#S2aC``eC`k07yqD z{D70!3Ky4q6qLgPv}jF0S&bOwd;%oNTcxbZZTFkU6h?NlYSmO9l}EF|DYmhG??N=v zCvL8jix0`z>bwbGOg7(%C1Fgf*yDIyS4-3b5>x%{*|*rOipE}BZzR~A zm6mZYNodukxZ<>x*+u-6skiPi+gY?@4$ZL~dkyJZQ-e&|XSX(^k4|L<$nOgJA;ZIE z_nEo9e@>!=+0a~I@G7ZhAaE;QcSON)Ud;-;QV2lRTm(saajVybI6r`H0Mp_cx)0b^ z{8Bj>ZSyUe^6s^GuXT)ePKBEu@f0NqNE5mi<5m|E;}BpDBJ8NRLzr^Rg}3fpIv$P- zE!s(&s3os6+1>9GOm6jopzQq{Tdnyl8;k*_>>iRdj*u(z_29SMZMOJ06jdrovfC68r#<)jkrBjmCtr%d;hIG}A2zfbbsh1l!7 z=e=7>V;W($`gvM9I9pZ^J#0DQF6p2~>RPV3H}KP`@@yR8nblu(75-lKLn4GU*xs!4 zF&h<(ZX-X);2k}QV|kSw8GaNGiA|{dvwm}8rYb4;e4NuX=AnG*%aL`WV~bw@Q8TdV zkM)8vZ7US+h28&3`gd@5-Z{^LvBn2=BWxVXmBP+($r=uqkP~=5kO`~tN|P#0QRgi+ zP#xAQZ<7WsTx05AIGB2s3KVwG=i>0=5*ZfK=;XCK<^!bzS-F#=aWv!|Tfeu@+s(64 zmC|u$DA%A+M%B);(Z{JTQ=6pGw>w~-re{-NT@216m%=>*E{yIDrBPE&j0*{*JAoh3 zvKn-?LxfEvnRSTJ;WSG*ps2Y?pKv&73E0|L1)idl7TyK$PD3`JibsopH->_V3P+d~r4CB(x zRuF_}HMckPW))tiTk;MC@-$)&69%Hll{v*j55=2^Ue-H}?8f_3aT#!Qq-(_i@I9{+ zlH58H>rE3b)FW!Sxsxyd{$z_6yt=AcWFokcjjoUjEDUpIg*bVM1)<+fVh#qel3CO= zPd{|!PT+#2hF>x65!|0$eUswDwALx}so##$2!IQKQ52F^-fDt1IudPGjX+k;QYYJYn2Bm6ZQuzBGs$B21^B! ztAVC*%IUx^#vi4;QN`!P+v`6y4e{Mqr8yKG6H4%B%8W@qqS8{<9Zx^i;z`nY+Q)9+ zlMd&$Zj0^H3VOHzma82ZG?CgK`0x2$^row`=Dw5yiUUN5Ig`Yl%v2t_0GT%AV%q`AR6y zQ3^jh%Y}skWqrr7v@IKfn))uP|2iK--oUYN59$ayW$L8^#D;$G;HbM2z!V>vat-a-kngf^K5xyNX&GljJx1Ulh+7+P=c|2V%R#1)F)MP^^cj8+trceeHZnflT? z)vK?TnS$_m1SVpY&|BNyvpiw_6j*Nqo=!CNAYI_Q(6qVCO1ZM(oNFOiEhKcu#k*KL zwS0&2%^1N^=jOY;8uItI^(Af@2+)2BT#|HOY6)ChUb6P2d-j1wy`0*4n-A|_*|&f! zG}E1S41l^($`d001Y@E;icm-fm$Z1sYfh@gxN?1=t-dIIe8S=#7pSOlSF#Gr^0*PqaB$3?89H27B@RKCDV$Xcz0?v~SwAw}tuGFSJ1hI& zqB?GWtyyDG16Dl5t(6ua4nf*|?QXec?rZ#W)>}Oh`}ON0EE+#soeytbr4>G;w(H)s ze-bf)LgjE&Utw0ze=p_t-U8m@Xd`>r=y`VJI$2Xr5;Y9t)zHJ$6X4ZUetdAZG-?b! z%51{IWJ5T1I_BhiE}dLyv_~12D(^1Wa-({0KChq&g<}|MZ>JQnRrMt!u}SqqWH^M? zp%wqbG6x&N-wl>VUKHAW{JBcpI~dukQnrlo7vmnH*}r6LFp6aEn!!bBt<8FH?IG-K z<%hR#%C|hI-J(UB!1d&mskIzT%+`gd5!aTViq-I9=+sYY#AIT!iw(+C>8}2Rfqgo- z(*nufymnFcJc$6-K(z9t`%El*Yn1VM!9gkST$J(^hh3^4Zi6Mc#H;&Tf!GfuGlc3L zfp6VW{vjxH_dnKbMct^ny^T-23wul7uGSKJ!)CX&A1h)MJ#y6$mA~YPfm6kx2AAVm zqE}E)81+svrcaV$aJYR*?yiUi#dXJv+kJ+c;r_JJf#nazEK_4T{AqndtxSL?*-78I zJ)uT&%7KkmqV{2N0i&h0kMfTZRCyS6cShuasGi*y8ND&4)zATGO9qDk#h0X4VQRU9 z*(gKPek3>D&D-G*!bEyY+AJmA@%U2F@AH{9jl$d?kfuNn*K z=8Y+eJNZ7nUc!4^OFD7e(A!b6q`%9?ttfQz-QW>Qj6u!z%%qQ&bl9PzBYzyAbN_T{ zXvaUZguag^Y|gD7&Y|{X1DnRTFFMr5&)4@Z=%3J5(ZUp&-R<}H?XPZb#ACRqt2ji! zQ3*t32%Sw1sVIq3jq@i#V)H7Rc=%1^q1w1NRhE9N>VadmeYII#Aa+P~XAJq*cefsL zl|7+PD{;^%bRS(ng8phRMR@HFTe6kr!e;7`9ggc~GOjD%oBe77Dc)l-u`a-AI84s3 zFn7S9ns}A^R}4x;`yJNDi5#~WR&Q6x?u#l{(l~V2Q+;^jhTbj6V!{vjV#H0Xq*mue z?|pH~LH!r-WcbaNXuh30<}!K6-&dOQPQ<MV@LfY_AdIn@cSF`ep=u&K8IR)tzsp1XfsroQzIu&LPmq35m1X@>W6;1 zLVa1doRt|@WJ6?XpFMICj}1B9^U#e9!)r(P>AWkFh?Ko)AL7LyCrc#{=9%(~+gdPf zJ3zIJ-@NtZU-Dd=UJFF^k(fR3M9tdmYO?VuaqkM7N#(RlsD|<}3vMHa$h_9wLIXl? z>~{0oo(I0o$(3WiS`-+Is*lxAo$N7=kEm8IqZL0Q2Q0%9<{2rDgs=RaB}Jwk}#Vhs!BTixq9~pdULV?cCsUlPi@ph$f)}QHB(|6YlYEwbr478-m|~3`*^# zz(q64waTV$roIf+%zfS!s!xdhWJ_q7$lU#=oY7`w2ccj{X9hh+D>0eCc?&GA8z%C= z4TPD-GmzN4g%dkZgC<(-$r99Z&HP5$cmt?bPcyl4!t12QLH^^qtJDIfOda1p-AIvt zfp0Bki@X5saF8vr521WVu80rT0Ff`Jky9ZkMHM{Aa7Z0$Nkdh0Rv+lfnjBo)4hgEg zbl_t6`uUPGpA7N2b`~dS2-xv-!Bma8D#zf(JI@<0+_Mrn5fXDX4c(v-7}7 z8m0HPKID(|-VASXX9;h}X3Mu1Oj&{Ixxckk;p?V-p;^Tx*~t$>cu=Pd?mLU$i;N5I zqQv+{83VpS8H;h)GO~rjeC<-cw^^}*G^iS6$L$P?f5O7H*TrAYbpnEDRd?2sPbz_}UF6kCbWCB>%{2k7V`8 zUv>OBZu)4tmQGWsXLS_(APR!~^K26!mru)9bc8xX+b;M@o`Dg)sx6^?SULBWwN*S& z`C*2pAvx!4WI*B)5@XLSlUIL$W3;boVr7UMcvtNPwuV}MBStzUIT^4Pe6jSG?x-sL zLam)-{u_Nr;0aH=Bz!YgZl=eYob<_a3Ec zWqmZ@{1ka&(xX%tY=o&66GAajRDXy>FP1`w<2qW_-mT*XLMJ0o`F8H|W#gBt4I6nz zYMmf|sIq`Gk*^iQ+{q*ND;JOIU|m`buG1-pSncNIa_Na1_{0Xz&E^+@LwNjNtdy|= z#?C$43^lYDYk;Y|M>t^D+(VLCF4eZ(XecX?b?^}_FH8PZ#qPcS8C+R-E66$Mn__5k z@BEyJ+YS&fPcGFi1LXokZxgqY=Fn5-MiH9w>Qij3+*8RGZ|TmV8oNmP7ttqokqf~?CS1q>h!y zQFIQ4z|WK2da3Un3|n&O$Pl_2qBbICou4l#zz8SKvB7j3{oE|7;ASjSrgS7#+1$94%*vOeN z0s{)zaT~H^Q*ua(ZQP$@vI<9d_&5y{jI_fkaF|`RO_QbK+R-6)%a|TGYe5pFSMf_y z1-8Ua|3KfU zzTFYjAa3MgAhzcF6|=Rh*=pM7!Og;xOn6W;pl;6u#I8+;YvvVF1rB(c%Ik5XzC>x+-tCrpG4+>HlLuM8cHAt?s}Dt99I7i)E|dDYf9W(motP${F{S>5rX81;lONd7ls~L!%`$~5ssUFg$rBsl{{yrj-}uLN`UpOPV3K*f|bXjky$e^ z?ajkuAt&^6dy!`^IAPM-wAM;#!XZDWa@(l2(x!}4D{n>fFHyry4J@#CJGA{9&eJS3 zWOex0K^^xPA%lYeh)Rfb^O${e>>?~#IvJ31!fFFCn84Jjt1i8ZOOsFRA2F`a61 zp_lhZ{=N*SeSV-yLptGIhyfaHC-vGKHUg{WRKb|3H}(|wllEg{B~lZDKOzM@iBqzv zmQJ*09iz};F7G4r!TOlL`C@oN_yuL)M3knXnQIb(+SQEh>+Y5G@_{ z7@ils^_{a5cVn0Mb@|MIQ{74Yy+x$wZ#d|b=8#(N^1qNt)7hjjlYC`dGuKr0+3w9q z)h4lQSD#2jQOBKkSuA}n5y?9)R;1E%7j5KK=5||lo0>7iS!(EQnz%!qx#_`*?!+{h zbjpc9ioPAcm9o|NNAfu$XLrU>aZsTPT2Homvc-iEVbb-7w%s@=Z9zHOYwViO(NMR^ za9r1mAoI8MCJJiXramSP@ydl;Bj{;p04<%QtADaSVjwDL^bY&W(q5tP=5zU8&7f$wzESXhD@!y#-AwK)1H4#^b~+<&f{`^R@JM9 zj$;@1WZZ6E@vVw<-o7PXRr}bD%TetweDim9`czYIxyoh}S0@A>0SPavzFOm6Wj2O< z4m~2RPai&AXG2fUX{&JGjL0=;@ru2@-BB7am;iMtb+p~+Zl4CM{~jx)+@Hz2#mglz z?+ykA@QbhHi6^da|Q8>C}8nj zIA@6kg~ga2N5AFA^%LCAvMBg-8e_GAO5jg|uYg{7Qc<<3BSL|r878da@)F9=GhACz7ti+j3b z@`s=6NI{>S6Ji0|)#?t$C%P8ysSPsbSFV=t>^zyj?ILxw4iGGNHDz#(ho7=s{_s?< zeh(DRS^NDpeMr9vl6p-`-iKw)@1VSY#5aJox;pWPTw`x>ULgmNbS&Qn9u1SCAU;I7 zZ;$oET~zVdR+jpvp~OIyBHMPZBuzX{PUdQ~KV3Uo=a4!ug8A2ZOn?5`er=7|-?UmD z^c>7XScI}8^~vb`$uq$^g`8I)LpWo5cdmt1;eJ@=w=AEbV6;F#Gkl{kWjVcI^jKU; zjTSAYNhiTJaC|uG*}%$IW{%hh*`(YghWP{T?%&JAU9$%tI~3GCk<|ZQXY?-q1Hn*g zL_;59ZyERjp|{}%pCpGekV5_r=XLOpr}E;cKUcqvEXk7B!Wt~G2i(vCLjMPX>3Ash z{1Hf})aWR62zg5#axyxqIIo(Z^RxO$6TXtAFsONKK`2qU;i7O_@QgncbctV&x;S<{ z%6^W~DG-yqKbBk;4h~PaR0FbU2W}m8V5CR+Ps5c8D&b@)lt&@0?=Sbdwp^GAj5z?9 zL)Y+ygkT#%Jx`X>9}Ip=e&aCR=&)1s<$Ja`DGcl#&j2J>@n-h#E5A9I&5`|mN02}C zsm}3oyDIqWm#(|>yl_-kKH?;8#$xMOD zKVbpmA;tc9x8W2mXqXlQpafroVq;ce-C=#mI@6LnHjtI@coUjAzF0u{tut;Kz-;)e zlzFR{D13WffvzvW+mdh(#Xf`1U)C(n+dBe6<}zunkN4!cnHRvaUqt%6hCkDePHsD7;T`vGEe=$! zZz^ffi7y^|eY9$3J*n2jF&|7uEG{PbehjE*zWNtK-QunQtR?^DeY>$0u8W*CcvqfGApeG3oHwto<6PxP9Q8TUAS#6X96GGgqslO|bQA%+sD2nUZHqN&6XPtYDsX7)@l^fdTLqeh*d%h)e7 zgA|#?20tF^O`x`~>XnPK!E6b+s;CZW%R4jf+~V8G8ASGDGpZyC(Vjh)79N(#vB4vB zydF}HUE?hS`e4*qBP!DFKVwS!(x@8J$Gvc&KOaMD_Ef?N^iWeNAE$;fG7B%qcO1p# zeaxcvB>FljxsE_iP*zbmt$l?dgEW8v+M@-6q-X$lzZQ)xii$i%_|k1_DzOl>_D zb3J`P$DCBjG8rwUX`{=^Z#G!3R8q55Ew3HAcB&Ge-+fS(HNnb~-kQy-6o0<^%n%?9 z3)*;`tCIxHM{lapws0SBW_Ms{^E#9g@9glCc$wIa$%krkmZ@4LRs*SK`>5+ok4N!I zjr3}{*vD!~moY(&bvi8n;AVBQN^?j{Pw~q#hY(|yWDfO-!3y4!eEc3uITnnv7=S;# zDXa{bc`W*5I|W|MnfbPn|T}HymQ+69PIt5UKHIZ(G;IM~#hYON2vtL;d=YxE9va3ry*d zVjAKDLK@Ben`n2ZqdnxE;^95#)?9W$#7doCCKEwPTn;`<%k zG+9kZFI*NPuxmoM@cPd%WzpZ2R|CHt@j=n*NWGZTH@ey;SD8IEhMci*hpgjKIY4a> zvOgxpunkbT`Mud4p?1(I2iITUnnBj5Oca+9E{<%BfiKG?ug=aP!5CdiFIL1FS?Xsy za4C2WlN4Dbo&yLe<%#Vp$K?4SA|$5{-A@ybExf!MOqk6ZgBpydL=9_EaP7?U0Rq?lFMh!l0FT*lT zb}!0JeNfICTm8yw^oeD2LVU`hvP#5rD8EidV^F2cxZ%~(-9uwr`D$z**3>)hwypQY z@dORUo%lv)f0aP~5FCXI;w`#9x%CufUF>^Y+a?uB&x@3L6GOM$<_EP{f-dATamrjR z{v>h(qs;x|3c$ZBCObQkgH!B=b8pHd5aIo~MA03&8dv7TDBYkPoTM`U2nb#6≺}Od2#$9@BW`LytAW|Bc^>7 ziYB|OGMy5li_h?R=;+OnZ@?%o(Mz14j^wO~4 zom*Nfy9R@Gp%cGX7B#xc=W*@vhfPfZ8l(9urXlyUuY+PE1KvlSyxYpBs|gZb&yl@0X02hcIlIwt#gEwP0zHw;BTZ`~=5OYE!m4JHMkm&n~Zy99yUM>ft-2Ye$f= zpqa`w*k$}7>K1aM`wgvnoIs|O5aEOxh;z1GDGS_}L+RgTf6MBZo2Rw9Uum%4l zuECyR5*KkddBRjuKQwnq>)ktD zyx>oYG5+hYpn0;h4&`j0Qo%fmk3ed$$6ME?Y2j4XUUyX0FNyt;-B6O@jp_yHj9!&Y z+gSLebGB2H1~R#>9*Pge>BSxQ`R(qm4I|b2Cbtn_QKy~xZ!$2sc3JY07zZpUs++wH zs4i}=EPz#O4N1oUNH9&CG&W_ngA{FI;->aCR3BUEZ2p(GmTzngk)+x*0&tMYsg{IF zqJ=mMq+{G>oM#l?@9}OEwX|5PxTIyx_JJ1A5p%8$ z$Z|k3TJ4!$6py}bcJdt&a=Q8zs?*%H&Wqo4FNww83jlp7nJ=x;#w`?W z^$C)9@??4bUL`I6;i5}!yLV-wOoK=)&HZg%w>sO43Eq?X(5~(n=bRD=tAK7P|=%$~rm1>6QknFjmAP!ocORY#5{hE|(~n4Vnu!FN|3 z_r-Z}x9TDJ!=p)j?GkmjNN#PX8F^h49UWkW9|15-W*Xk$CFXg1JG)f8gEBTK2mq3& z#?xSRl|yy<%(V$giSS^~b~4;dYr~j!Rj6#;SaR?f5}xnpJch%-NSgf)z2|IM{6g$N zDusVsdn`hqo?v~A#_h4$kXM1{!l17g@n5uSY47D4KqoY%bXm=lN_mYcB9n6ED#HE~*Lhg=he^Z8TTg#E< zXu;0KH0%83Lo4N&)3iRG1#l{@*19=%2)hPv+Bm4ajtsYap;>i7eH)R2@h5o&JscyS zMsv&VEamY`bMqZ!#wrgsQyThNCSRY7TqH{GFZcM~m>pwOM5VI>*?^7Guc! zK&Ryfn#EIV$hA?~B8!eB&(x{Dq$b1hZHB*PJ|8HD{ag>KsU>#tX8SrkdNY4}7$P03 zIo5z*MM>Jm1_!OJ-W(8nYm6K%E61-+bAVb|M9TU%M_uo#%j|^?N~R1{rj85|n|&I5 z8++4PQx2iW?D7i?AgB2Ox*aymC)XF?xCa%F>MaYhW_B=F~>=J!Rwk0~*pR06emwMNcovxv4?$-G6Lrum? zirNR5=eb(+HQ3ZKH+1yLnH#J(t_hkKON*evkt=e%WY*3x))oE?J3Q}M$6B$Xq_Yr( zG5b=|B~(aMU#=&oLVTV4hhlif^XuiXl~bK^`_7{Lyio=a3u4hT3ji|951Joq;W~}j4PW4W9yN>@RX%l|R2}?-qw($v_zaQ7u8zD#0GA9TOmd;(X zkLSIeAp~h&g-b*w!lvh9C%MZYk4*bS{k{6`wlO|RqDpQjzBty;hR|xHR}H%RY?#NZ zhM0iD=NdGoIZCMGMQ=WL$dDUZk)3+ON5bMG&159`q79lXy^R!-fss~w z6B3~T^VRxNuueImn6+g9O=lB;3h{`)oB%OJ*lhZovC! zEFjmsW7R)T#kb&$1}#JCUKS%{vMr;v9mZ}pq??IBnaN|Cpee>X*H@@RU?S;H-wA)2 zftdyFx6%9_$AQvw=rV2IHHFoPt=cRc>XMhdq>&GW)*sklX}fZN?D_-d!`+DuF$U+h zBq$V`Ps-X@?C7jOX{wDCC7 zqrhz~|CEg#jzWM`Pq;q77sWbqsA{sy`EL7&zm+5@nrf3G5#zlmgNg?6sT{x!8e}$T z#X+nlD@@Dke#WOpjISnz6qk@gMnk=bb#s9Jxwa(Cn%f2Wk@5MY1uWYXdrJ zwYxaPA)cKLWW7!=UsfrI`Kn%p66aA#OWVc4I75{V%-Kdk+~f!o!_1Ld0dTQ?RgToh zBI_-nL(wsR{_sN_IK0GYoR|2tp(pmh&uWE?g8uD!eF3DIoW81lhvU*nIbl&qST%E`jX z1&+^@25Mp*HBg(`om90>v?g~CfP;-;fx45jzq)SGaSfJXcetZyN>Z-_%}-vl(BbQ~ zxjd4)$PfiNOJ+*M6{!DoFw-#3BWhfedlarZNIiENa+DLwU#sXyUWk%Zr+v0w@R1NtmmdY-B5V2*mRO^;D$3C>{|&!gCD zbR?g1crk8&(+NU7AbypidNX$8q?6z24Wiigta zNK1WEvug8Li5&@XmOmmLsvZI-k-0zP@9N2cmi_0${g$%uaW)v&$Lp+;tMc?~bZ=yK zB2w!?e`6Hy87TIqmIsgMl)GmP{Xf>;GpwntTLVo9MIaOly(%Io9i&%f+du)4BE1Pw zdhdZm6dOfBdR0_JI!G@Gf&`=lL^MzR4YRNu&w>@YzQ$tEu7`#;$7&r=h2 z=nDv@c|Xo-yID!a{&Oh$2O>*M(h>$6pKuc%k4YG|E4Fz#Qiwb00AHXC>kM<1d193n z@>*W3cD%D9GB-$_D?Z|_zeNV>3azB%Z>wwbHl-$?`wR>HtLTKKRD&IqSK4X{Z`G;K zD$10Z+;FjMcoTCf>0S6ld>l}$GP0i?3(zCTb;?&fnLfNP5!7nIQDwBYU}@C|l*?t1+|yfY#bAC&J==(q5!;y@L&>Ztz9K|R{1N`l)49F%`^ z8E20R9{QzHPsCT=qsEeNDr>ZR@2&zRm7V3bn^$6|$V@6lEttFy@2qsBcAaq!+NQ16 z`EkQ=&nmiDlP?4$P|E|%J^tvvjF2k5$yz^ClH2IBBLCNmrtXa=gdUma2)XUTu{%vT z6RH)ntnN1Eck)WB2q9X4jwc8e?a&Vg8|T^|^1`c~-_^$NfW5=P(b{bLYN#<&rk9 zP+#Tf1G*Me1*98*)_#+?(bM}0QBuaHZhd^PW%em{g(uBoSiNqt{b#9~(j)U{UQ`mU zFj-v*(ciCop6Qxm2j zkF);LXiIkCG7t{XzsK$3y{(W;Bl$Giv5$xh#+SGA< z-37J2tvpn3!o#rAGtd4 z*v7**8@$giKl<|P+>gJ2#LtNX1lpb87d7XV$>>pn@ zk>B1crQf|{1TbbE!MV-AnMyT_1FJc){HET7L3jTKq6kV|c_yP>1SoUQ)wIvypVGId z<_LA}6M4eZEw?J%M_1c1V|RondDo(PsXyu%rr!zjuG-^%^V)l`7^tI_$-I;ZxSY8q zGUn4aR;=^o-E=xJ^leCG5#KdijcvYmI%}2G602^WV$0ebi{ec3=!UC}pPnIo_LOeF z@yIA_@cSX4pCgZWjZj@0j@KC!(9I;`9qu@j!fur<6K-JDlk}S)_X^MxmPHc z->_EjN&_ZW=e*P4k~FuD`n*A;jPx0IeK+1$`U6$%(dgYL)X!XOOsE&m!|G9*IU+(a z7wcBbUTMTT%sCK&nDO1>($4M|=B7pR$$Rb%E?M0qx_<%Oz5bJKqPin}_l zd$TCmM0fHHtGX|4K&d!(pR)JJY9mN<{!R|o81<@d`0zS#?u5o($Q5C+#OAHQA|<)J zKSmt(3d*<7eIC&m2$+M!*}!$n_NQ8%>!mo5!L$d#t!RYZ|6|3`g&Dj>wekXa1(??k zz{_a*xYk`F@m2aSlrF4$Ham{t_dSGj8>F^Br^V|xoB--U@d275+ghZ(A=Bu+W)7gF z^2NalU?nlvj*`Cw%oA8LZz}ei73S)AWcA!JvJ{Mvk*1Nfc70z02v=Dny zRW%0W=N&+k`#)2GU%ftVj8|7tMHPJ2^MAXBQ-_p(KYa%M`H+#Uv#=P@nJsJLOxIpv zp=YhXT&XaSJ01{*p4QO4?$cr1o=3cLF%E{209r1D=``%#zdV8j5{$CR@!s`PeBJKV zGGb0^H~VJ85tRU9I){JaD}SAWjL?vyfoFIeQJ9!hG$!W_mbXalnw(?3-|MFUeaO0^ zN-g!>{DI>x9mVhxc@_@Dsa*~-k&na0@6!Q!G3^5hi{`^nUb z_NhHnpru?f5g7aMs@K^I{o)Z*DX{(ck(&c-@gPeLj}MN)EU+(7b_9e42m|W}XVV4y zdw=hUpW3e^7wrXl15+w~93mAFcZei^;l6SIwJpLEi-}oiH2SbQxNSt#2ZoPZ8)2C7qywGWI&-|zKbzuB8uKSJQG!p_ z2|QO@)sOEQ*zhPG-f`dC*3{Vv_7C?cY7pEu!i71L6yMJlxE%WdEYQ1$IPd=|=>8cz z4(h~=Crg5nt@7eO($XKbn&kV4AFX!)7i{pTTtCcV?Tey^xc=_ctq#6ZH;n8FTVb)= z%dh;cLg&ikzCC9Npm;3A-}LUU`E$JZD8ACmEn)h`73Tzlx>5z9D;^ac<8wBewXMU) z%K|VsoiiHKxVSC_f$*6Re8qn@y)r6>MO(IO0BxD@0G)y{H-W8Jz4zW?8&s5MtcH?b z)gP}}plhGAjz`wD^>68#6)CCajRnpb>h0!EcUzpgbp6qs=K7QNcgEY_^o6~{Dfl>5 z_uV`F_aYck3aLx-o0jeeoDn_5SEM3QA0^wjvl|s{lT}0b+*mw(dNti4e%R6b&CCOg z2ryO`H25yRG9|{8;v!M;raecmAn#VQ2TFClQf{`TmxJhveQ=77H^t~KZptPT7}F_Y z8C41w_R$2~T!X+fdaQXXWi)uXm8=+7KL}UA$a|#APY9!s6r4)*v-rn3I>0i`{VF+R<>g_G~m}HYY6hGR-^J!r*g+ir+8Nd z5zSMoK6Bj}A^WPTY50)LnirLroh3%{^pKPEh(#Ff8ymWURHiM4CRx`JvK}Jbg2p)> z7rsvh*|4bDYMO?|`E~o@sp?NbD)J~to+7AE3WDh`Yf=665_$7zPvGzGuwJ0@y8ea3 z?*edv)>Zo3(*N-lFnvoS;^NIV8qN>4(lA`sIIGAFBp(Vgiph51)>hzes(2@XOoc%% z=z!RGU|seYkoU<%S>pz>QLU^&Wn@6mD;-YO?d@=Mlf<}$cjO1!hUj(E2g=RIn=h=a zOk6)*SN1{g{gnS%3CyNrLsqDMv(@GvO}Y-F+8Nr~rMshQadO{QYbS%>OQf55^^4nX zzwb%vw?Qkce40=p-S0a^{-Ck#GfY-2nF!i~Dv(tbxJiEXM>x07^kj3`a@@P6R6tZm z4<$i99$_6|fsHMx@mnLuOSqpPBRFq4^;C4-MB~0H0~5ink=$uaoA7j(kjC@5j_=TO zL4{MxR4C}SgbZN_8f#8zFErJ7ZjbRM4(Pvz)Dta2wi*_cJH!NZCKv0T;8pP`P=U?u z_qOX9_Roj+$lv@BER%=)63s_i?~1GW9ho3KwA#oJLrl?)ky_Z0TrmMs8>o*8oQ8gd zABUW`Q~V@+tmf1Q{L&WB&Q-K;*m8`!1Yw!xth++$tu$}8!YALiH5G zX~F-k4S-?@Zql4R|CfG%XufXgKKZ3DTAd8HZU3zfPc5j@{bJ>GK3wwrfDbzQ3G9Xe zL0b|;nS4=Pg!0{S@bh+fQ{h zq3!OLx6ZmB4gLy^O#j$B$e3Ch3(fKz@v+--X(~q#yv__^z$i3V;?)?)L)_6Wh5nba z?X~q8-5v;`Cln*PFq@G+zP|j;rEwzsM4Z8z6{5^}yL-0SLFD0foItogt=`x^K-LV2!qW;T%H) z#xH(K=)RFwbK<}3`-en7gt8kOQ1jH@rNW!Z# zEm_`y%Jtn;+w)4iN?Wu{mB4RY!KF3vaFuI&;T%GaoA#}_t-p_dPeht+cU1M(HQVk6 zv+_W_M(M=_aM1=Mh&I|xaTF;NmFRzLu!?zWQOtIA5e+*E?q*jBI@yVsxP-fvv7dj% z>_wBK0LXIf%mf!#kNMiK)v=DCX*Sp=ao2mQE9uUr} z@`~NNXEH(0FRPV%&ECfmNv#1b!$FhL$4eJdBE2W?=Lg*{qqoYmnQ?cvIT`pxH!jh zoP%F9zA8MNsk53s*)MIiq3*+eMax70jtAjWq#eU={b4bOOr1TI&`LJs4h!F^V%6^N zi>l4yoU^9f$1e;6k4603qaR4zgT`0kAMa>Um5SN!YPy!HDn(zVI!^z#?5EQFX3wQk z*@tz2!0_vX zN`}2$gd`8YJ~=G;cVDK?lUD2;_-Yf=;aq7YmpL}$>bAw5k$MNG-u6p}P$ zV?^x;g7I>DT=_*u_TPh@h)A^P7l%zC4J)qJInB z`pmTE1huEO0~(FIsH?EPhVWtPiD4ohCjiRYfU zp{Q)eSzf*7B=7EyG|(#feQr2ETK%-VX7LCbGJ_5HPFUF3zI@aQMKOi;Gwl4d>ca+{m0=vi}^zlz14y1rtpcfUI1U z@Qk#;hS;V!k4`n7U0^(E;xAQR`8e@x(O7w*1lhD(Ymu1Q6aqqJ>6pIPYz&i{xEl_E zoC5F0xY)WT$u(95rBe=XzNS;;B2iv%l0TeQC#;q*RW^~OV6d6mx$_>~-iv0|r|!yu z)^|fE=!pG|>^3CN#!I7fi%N+;nu|d($9oiD?+S7KZ)c?01@?JcH8OK9TG&#kY=`JJ zJBR|{v@ohlaW9*JuBu{>ie|3Vq42%vR-f&8+Q4FBu(~bDY{f6?)1Prb@E!FRu75d? z1GTfa(Gmi*%U)MdvNAHK_jiAzMRoXyf!t5sJox0H2C`Wdp-ci3t)Za`hX=PH=%>1A zrCNF%-TrgR_K|<2GHtr29Y2e!m579Jpje<`RP(;ZCRxmG5Cth2=bFeUUag!xv+@+K zkovu43eQayF58}G<*)o|kJwINDo$t%TUvIg;q>_-kB?y`9XXTjo-M_V+Ds{jjMMs5 zS`?90g)sACz8z2bVZORWbH(@ThcLDaY;qv%ePY6xD*`I+m8gx|5wZqze)nEpJ&3@q zeqAJd#V9`bKJ7Tpu{sOMy$pJAZ6ZO{2fbf;jU8KuPp@jDOW|hZ*riXw6=8B)-644uZVib= z)MvR4t*kpItR{?fJ)lb9_Ua%V@feNgw4bI_dmlxx^A#bs)x&y^O_aqVN?S>*X06I< z0_jaAH%RLN-AQb%0Sp4wPuCMc8p%SG>Hyu{m=sysz>Y18k3MF$p#*h-o+kD%c@0vg zA1Wv+zC!|LSnZpJ=i1Q+uqf6W*II1zs6R(hM{l=kPS7orKJlj-RgBG+5ANq&<#TCdd)byS<^N$G{3TKoahoQHzC71 zr<{K};&NlmBO_()sxc2*&iV4;TbFY&g<2%~6=k6kW5u}QT>X(MlY-~)AUz#iI9=#A zh*bjTt=DSE8tYj7bW%+$yBq7(Kxl;#NACi7Ct5k}Y=m7{h}&q6QiKHThO0(rb(Naq zsK^^|vkmpI74+oub-1s0M!^Gm&x`ttZ2XKe zNmRxbR5LucGLp_2k1tM9Ea{*rdZ=#oYURG_OBUsQP8H8LLMR`Wf;GAD7t*_wU0Bdq zF3Td0$Ul_(#I&pO=q5IsT_SN=7LzGV8t9klUT&E~)FU%W+FYCiCIVq)K(E&7WGQGGhAfdjF{av&F`1H<_h(J~dNW7+chUBFQ#tdH%mJezY6f0i6ANs1D$R>ved zxhg7TO<3#O|16m|E6XoPMW2L!q# zolR~QLqBRZ!=x)wiSJ3-(xw<9kg=d^bdEIRXU?|0JK9NX`J`2T90Xf-5S8kYDQM<` zD95KRe$GxJKLgTa=v=U*ctA1NFgr|KZLYRp;t5w^5cqAM@_U67*GF)E#%Gj|6vC>! zTBg0fVIO$&}!8dBN3I9yC3?`^Kp=K+*(i;Nk5DqY2jkdrBB)!rmcq1DuQ?f=c1?p+7;!x#PVMWiyR30i)wf#K#3 zvu&gVpH?1&CyNm$Mqu#v7ZeAO>15}4jn`Tsf#maa68c#8u5`ASlRVCb^J_yO!$eJq zTCNCe-le5O3m-BHxu@)=$Q>(ngJ~j!VT!`?BHXEe>H)&6su_AgmNO-O27`-oIWy)u zu*^|xiuH$B?YlEoyGmcixa<{9!p>(X6g#0uPlcvCJ@>Lv!qoaU&7IMH0DX^>)3C`X zrm2pm+PqPu03hax(5WyL0%YQI9(rC8=_5cj91VF_aaV51L-A}RO8<4nki%%m=NsjO zYtZxTr~Tikp&7^GoIw>TPBheYJS060aRhRdzbad+_5>Qc3TY(`~BBw-j;2v zMv2r`RfI61iE0|5&3^jlWjl$NaI!c*Ymat61g$#KT~X*Ojw@m*w3=Ei>~kzvc>dD5 zDAX>Vr8@h{p$F6jpRh6lUk{hqC$l|1#zaKlZrryJdgo!O2^~B2yj&*~C7a#xfZ<-9 z^mI3h5uSBCM8C$|GbH)^CV%0TA1s@}W$Lq6|A%mP0I8z%kk#``iNXJY)@h8i#(rh< zO^nh;9b6ksEg1kr*xhhAL3s~&FM6yK^vniWcBT_G%S0`w<4hAZaJQ^#@s0=8$0RW>Qz)D z)#wEBEoK{KhiR!*pRVRQ$_0Az-TRiQ$;#tp?^6>K!F(y^P%)WX^F!RtGU<1E%hhs6 zqIalXiv_;_3gRp~oj7rwP?pl}vd-Cwu3X&U>aGn^cd9)b=9GX#!a{%}rR5&5wI!MJ zfg;ZiH-*rYrA#0pSlxim0typTSR-54B!Tp>fVm|*;J~qW=$`O zCSdM@VC+P))RczN>Ga-v{#VD`wNN48Fq_r-qDul}Os+P}w=(@DXwJxc<2Og`J^j!S zEga9`)e?!Qtb1!EOloU&ch4E-=-k{N^cWAY9ff>wM$ZcFU2F2+hC7z4Ub^5ar`QPb z`H~l^Qhk*zyK8VI2>^kY4$oiuXN1uL9|8LRev&4CIe}v;$m;Wo_DnaaSdstTm(ZNg z{^O2dsm^UH32O!*$(Rq(AArWZR%?FzLY|{^xXu)ex=JgnM~y!jalx`csGIu`G>H4{ zmqAhGqaWfL%?UDI#P0!WmJ&6n( z4G+*7t``JxZv$Q86m!oFXRpH1#YRC%RE4Qj zP)`Xms3cLSuG1cc(t8C;7w#!P5@GWqvRQp(rNRoOYEXZ+la#y&Cr~|3ycc$owG1sF z0P$dAaSI|-*;34S}!gb#7P5>CgZ=Vx*dWlUxsGdbl zLIBicD~DqwmpRfujeiicyQWajpKdsKO+M_v6_uXMF8yZ?_vaR|lBu`>LJ@cv@K=V9 zqVkvj;kD4Y2>;)|BWOdT6k=6+gkWWhcwl#f1fU)kY}xMk9@)i~5P>djIR3o_+#&*& zABN=WQS}x3uvA=YWW7mdLUVl|kOFZ&EWhhI8&#Y_nEP}Y(g^?5z?9#(xTuv=nd!!KD(3VSy!!yDu@$-Hd(1Kz3@3LiyegRW8)yo}rpq;{y% z%4c6S-uGLxmx?IO49{Ju$817&Gbe+UbbF6zeQY(mlsb30%^XX_pH^)MK@(r!yG2~H z)$!eDxp>9zZ*B!}1FYA<@~3_!F+UxIRyQ@n`3VJ>(3jqyYWUkO9-{_tT>sO*FysU2 zp4KB-t-Qxt@#oM_a}kWzv{YR&upr~xp!dAs_xv*ro{57_+VvgF3ns3&Dv~Lm3|!ak z2$*$CwOr$TAbGqMS206Quw&y7*mMNqFG9uxJm#U$dM9dxbbUA;N0moL-uN~SlX!MW z?&NZV$eb|r`DQKOyeEw-B)4SSZtFRCY(N1A&u2tlq<|WSmr3GN1+~yWf-)oJc7g{s z>i5)RS1Y=(aTji278(F0*(jf3lC1 zH1V+QSk-3JRz1Hx_o#aE`6o2kVX9Kh|n34ZqI!5B>ft zT(22w&BgtO?6i<<55-Es*UH1PDEDj2A&JI7n(e2g>%8- zRJ7e9r3MGwqi!zm{I%`ma939*d zTcJEb!>T}+NL%V^xB!(Xa;PB_;@r(}-5nXhuA6GAE!iR74QPyoTVG!}le^ERaefR6 z=iLfVWC@>;=`C47vNaOO_4`I1d`u0UwZ(~Nh+|1NM35O`4IPDXQD-LxHC#IODx4X! zF@I!Rx{)bO&)3xQ=Rh4%C^_%4C5t4#%BZ7e#YLzm$7mk22S}W*Ukue^L@_p7g{n`# zTzTv~eWVQr{&$h%K$yRC11}g`?uR{$`K|iZW(v-*{8x|{rOHcO{jT~`Ix zi0Hg(i#s!sYg#_w(-DolK$|;(P-a{(gCH5L&ku-K9z_6^&&$y=RjsU7>zIP6AOh{y z+?*qsn2#dh2KR_^ew^8?S+P#vl8S3z`dIN>SYbV0qoj8){ZYblhfn$0=ap5v(9Y_^ zTjSM)7y^x67L`di^#GhlN9>(N56$D}pvOtfVKPJug$PMQwJn8$^`WsTPF5xo7*Zd; zzrs-R1bK1FnlRL*ZGpV7Ps^$BeU!s(592g24z@kKL6py2K<=72{fI-y}A{Ti**kyw={A#fBH8APU^E4{|6g8K)&Jz zR1Bl+Z>w}O{*_0us#7gI`a9r1Q~^htD@ao5!K!^Fjt+i5iZ;`<(h;it)WZtv=i4$c zX{%fhM7wXAWpzwUK>0Ct5 z)Tsns>Hop~|J?hhi&QHA0Yz`ow>UP;S5ey=YDN6+Kuf+frrh9j`s(YRiYO!a8xl z=sa>PA7NY$?!MRQhI_4ZBimgO7l&TVqXW@ysJSFwrvBOylt^0zzpXp5n22lb*1YQ? zg>t5-vjB{Tja~Q|1zMfwv*weQTa=`-k&q?myNecx#!xG=OA3p^O%yr=Dz045)TTtg za*jtej7}pBv}+f7$tR7R<24x|xbL*KWT98oce8Ha!;Gr4UVe8bsmhLQHFu}T&4%hs z(r=OE-<$j=8hABPOP<`HE4>2W$~R~~nRSPc8=g|RoV zM^?6d<$7UmeZiD~)*&~i@@erR`4KKM!zzlc72ZxzeTvkly|F#UE}=$01GZu5w@prb z0<($b$tnfdqu0FHNSapI%uW9kR0Y6Qcx2Jej;2-cj!zc*-`eCGqL(|lG-RIgE>n2; zN1}Yp8_Z<$PdEOX??-+RXEjZxD=yXjk(VC;v}^$zgzxptse)lHaXZQQ4N_GRfLKa;@)(@(`A6_ zhSA)bhs{c$-(*EOe3!ZnrcDdrj$H9oFc-C85GuyljJ3lM_#-));DL+q!mm)?@ z)fm}EZr;U2hkUjsax+iu%c?D^Atv334STwQ0=oL^MK>CY0?bN;XPkLRRclC>Tmibz zF|MpLm4;)f#i}!eS~i6 zwYM2=9H+rXu27>piRHqjIs@d{p}7+uk)IO+Pf7f~eNVOC)4$dH$2)(i{q$qR>VD>& zPMw|nyNJJm(=Y3I2nRPe9{A4+ha^pW}=wBrJF zySwb3x5Xy78dudIFd@gbWuw};%mTOWm8uW7laTENaZ7k8QelCvGvwGH>Udqc3p7w7 zkbP^?5$)%%PUy3jDhXF#YR1MCfZ{3FdyUNtPWEh`$i8Jp49if0?(Q9?vW_3W^zI}( zb)eMFhWbPr2Gm{eruYUZ^(P7~ZBk1*aQ4U*baTDoN@WUt4`=G0=-NB>qzW(4_4@m4 z=X9OP5GhW9iA;4tcaRvn@mWX}f!6@Z>TPk|IaNYXb=V%z&rlmTE|f=SzaP63Pz2gS zKwSii!L+@FZi^LHASS<2F}{iUU8@fiT+5EVXYhBHg4Kn}t5iWS`hd;QqNe_G@9!A<3ke-? zo~>md?W<5{HvJWT;fNB8@J&gUs(a@~SR`q}QlLH;HR?PIU?V`R>L-GsA>etq2zn*K zg)j0J2T-Tm)IdKiS=1=Tj z#>Ur|rIYT0v@g%?66o|=onKY#gm?CoP(xO@#g|3e7PeLQ6g(yLa%-HToyPoK_$IGV ztZva1-1Yr)-f>#qvE{L}BacAD$?=f8Vw0sbt9#gN*L^x~c6(-FP*;!d*|CnhApyp^ zR5Vw#;Qzuv2d?SwU<`<>h5GA>fjI8pLiWQFL~8sm^Z8SR$P$`&6;#fZ0h;x`7qaIH zwHgS78Relf7LapYhVz~vXoZYmNbjv|GBr7SX&i+#3jn#yL7*#vo6*ROS#4ykRr#io zD>cyQV35m*_Carm933pD-P+YdEY}h~2Umh1wmj@yBaum~Bg-}^XSD7|x?gyPf9Ux{ zB9aG}>Sa}{(BYD0m&v_ssk`o;@uJNs0;%8tmtrD=E<6qEyij?Ipp6bm zqOMx9Ai@bZzM*4_X#&)+a*O_e6C?Vo>2{(iIJAf&2(QM>D?ZQgj0l5lt3#@gwI-KOX9Z#r1q>I_vLJu;Vl6zptW}Xqvw5TUf z7b(0EMyCiSEB-9X4>0g82Fx+|4=QeA2V2L#uywd|B4h>sC@g zkhE~RRb}8yVk&gd^HlSs)Ikw(P^2z}o2%0d=#cxU4uG(WAqtb#)hD#pC$$!3TEmjU zg*!m%9*|UK@Y1kGB}Xz@y5!jl!=$O|)LMb$Fus+<-lB@m`u-KoPYr~QVqy($sxpLW zqD{|s!FXt+x?2_-yvX5%n+)PmqZ=6tRbOlfzhWZVTHcWETAT^tm5-_)_5}5tQ>FL! zxY!)ySP2H8iDwJglIVG1pu#3c!Zn=pZikv*koxWS~iB8$;5Eb>533 z#;G63$3bmFEEtTJdErXt&5HXK38>WpX;cpxtEwq(&z$P z^NcQDrcua0FzdxFv#IhBp`KNpWRf_R+i8B2-gd(ks~&{v3UOXvN1pfy&mw=hLMF;- zY#~_2SKzP6nOi5PRKt^3Gc-Su3=1pBGL!Dh)-(lMU#d~*o41>u`Dv0wE5@ePGfBaV zjUEkUQDj$^$69uJgnhaykPiW}6`+4sD%A7SK$Z~V^{Iaa+4RFbzcq9I60XmD*YNWzb2GgGMH;CBoh;JzOnsjZ>XX!U~~t!9GF8bppL$4kOa`dI<|RLzBU zR$kbqTMy#|G;Scy2vV8F(b9t*_CUl&k#;CvXvJ9YND_n#>~wyb^6I*P?L@QId1Vi1 zcdP2$cmXT7HlbcmjbmIf2w$mc>K^LvPoZ};`#O%Jo*K7MKabQVB}U-wMYlW1$n97N zW|OSkZ8xf4`(Y7D9~L9ZTF0rj40I6KM^a=7knAvhgxyr10x9LCFtS_!9UZ_ z-NXvp1c17Oq_4d?H;B-&=oXW!2b(HjcA($Px}Jn{7G?3A2nfnfX%ahos1jnfvBi}t z%bu(zE0&B+DaXt0X?&f_XqqiBA3{AzqB^74KE7Gi8lpzrC?bUwl}C|x`O@Oy_qX@5 zj#g257S#SX9_w%LCTLFc^<{;_LegLUC>zA^w&U*)e_`l*LTD}qNZ0xH5bYK) zhp=jUC<^5g#!Z?xS#bX0Iw~M)BAZXF*IV>Q;?20qot^e2t&WFSx%7$|V5)PyX0O&s z=a?4rfrzGa6ami|FMYd}f&7^3KuJ6MytadIdU&g{bAW93(I#wn3?8TmaAx%jN%F~d z-@sJA(KYox-SNP9{8G#km8{!&ayNk!Uf9b%A1Yz50b-8Ll5ZuAv=Z&e()5vj7FLH= zLWWfeHaN50O&vO<<-+PHVmFvyb{(# z=asB`Ce#{r(8FOJH+Fa6hY{burZx4yK?G|mFKgj5zi`}vm>8-NwNk&)(MYOO25-(7 zRHp9h$!WC>P440t>XVM^h#`31`fu-ONtgG^&(nKGqO{6~f-_^?NY!jBT*F?VrRJw1 zw%x4rLG{JUsmsVP5;z@>D`(EgKf5k2kv;nG(Q% zd0jJNb{B-EnKF2rG*6ft6p4Cc>&J?Ihm5v74$eR*9A z{u>PYx#faVG+)=&ZguuazhCHqhPVdLUJtic&b#VI{B!?kv zBk9D67-Wcnw6pZ9z;Oql%S4ix1)1nf*(++lE2BcPUQ0a_?xf&EQYTn=U9jzzZa32# zBi-(}ksS&_fH&*S0runZ^OYr4pLvANsxr2$u0AyV>W3S~{qe z1#6tchxS=*bUJpQLTqEUZSp}IP4QQMy+PzcbGbVPCgXeuMIKEc6Vja2eUTJzw?yQ} zaw)~lF$THpZ?(mOMeB9dd0xe?>I^09k+x!-S&;Cl$%2Zm2hCiy(Liq<_o;f~Fdt?y z7mEUQGeGGk9s>9ya^!0D!@F7cywM0cI}O%mJV{f)x7R6ZpLt!C{PHxKO|C2nNF+iB zAMOij<2%fXo+PY<^TGt&m5)d_*X-r1kevTth8b_Xt%-%wB0q#*^J+(Otbrp%}5O6 zQfu~;b2We5Axp{=Sd2Uv*WtPa(D${hoEtW_TTiqyy3J+|O^P(~8dR`#nkjGBlvn^Y zgZ?NLH4dT~g+O!S@LhE{!(as!FfKumCfcc=q5^VoVh8q!%KLiI1c`%JYkLRXlM4>Z zYWW0vgx9}DOXb$;B()ne8xXA-5`$X40Mg#|RVMC7ZEWtvNH?|Vwjcx%bBfwlPnN|ZpX7p|2-(4-k3dQJo*6!%$a|b+yt{u41VyUTSt>AbuCt@pE@$;^ z?D{XJUx+z}k@0}=6+gauJ9=)ipfVy#M%JjqmbJr@gZ3`a(*n&ncJH+%-#z*GlEq|r zA&v-ikW2TFY+iJoX#+_&U#YjY;z*V2NryL1;6f|fZT(jY191gI-PN0ynxUN=D9y!T zSk@&J{mQ!Hyi9iFbqu*}RBBb;Y1rF_KoTTF)daA*Jh<27mL-+m%2up5)&i;fhDykW zhST$wlKg0x>|lrBx5#zy8FX%aQJv}Al|!SwkETW%#3Ya zEGK2WsA*xNsT~Ia!Hz(Fvb^AF;%MZ~*1;K8(merSb!I06^nm6vF)3 zzkKSC1o;E!!DLG$-jeCsKmD%OZK`)alP(|@J_5ly9G)i0vB(;I$iCxFs~q7tQ{ep~ z^6}j}X)o$VZ!0GIaJ*NkXFku=E_1APDv+;65-KZqi#-NetZ?+xgFf?38QwIuf&6jW z?rcB3kuDAGEtkgDs}=-C)J#w8^md>%jugL`&L#VOV2$wb#7B^1P(bUb>QNZujBA>j z_UWlwq8h*L<)=95j+b7Oa~XJvP{eun@5Se&lI?;roBi^*Y%6b$G!7ms+pqUnH4m_Q zIk{)sXN9@|jjD@jGRHo_miW0h?kwNZAWVlir>t0GLaa6XF`-Xs$#xs%1G2HkAgHP)-+oKpJ=&AUnCG5fAEC z;jk4vw)3YrkjY1SY=4W5KVSaF?!ijFg`R4M8yO{)L#ITmb!a86x$6W7nG)fLy%b`NGdGtb=)`xdv_G0$eq8>L2~bamDfk!BKd%w2qW)6!D`5P+;Q!Na{Zt&Fzvjm-)LT z!9${+E)g#QAe1f0_?Gzd?Y|}UyT$(F!~eryJd_0XJZF(&;PF!~581%c|FI=&RujIh zS9nLNm_oZq-P4A2vY!o~1??C~Runlw7~bCf|0F?_Z z${jsjr(nM^x8GFoXl`PRQEYN5Kh>V>vA&i*xz#k547bp~TKDqVNEroJqrBLWBD1Hl zL4OtXMtEG{22)zt)>)X_#rEEBm>XJI_%~N&BR*gMEa4~gfJ!8muk~?kR#Ve8G4Rw5 zQ&o+;&p7(!9Hve}6BQ()$FF|OJziNQhLoCRT{Bduxg-D(+?S%~J~WXB_9B@W-yEm3 z^jh8?tGlv(4x}82YOwH?npF2Ez_p?KE}dR{BXw-E%47L#?(pF>lZaDAR!E(B3(90cbB3VpkUAq!XVw9BA_B*(kUuEfOIz~F#{qD zFm#OqLk%#%5ce5980VbddEa~QKYkEqU_MXmz4lsb?=QkgYy^#89tdX_a-NXt-=2iF zpjYmF#9+i>d&SuIb*=;3lj$F?s!*5bUS)Hb_~>V&E!YdzlohP$QS_s`tm)zSF|Zje z57PM?z04>-TYf5Lb5CD+!KMuv+au=pY_XEYY7ujTKzb+SYt9=cI$77<1( z5hI(EvzZb^7rL(e!;6puesxr!}85GOAV(tbsSc{o_ISyaxa8O zt8-g|LEig}eD%1Epmw|ZP*FSU*xa?o<<=`|X2`Zh$CZAQ(uD=1TDDO+$3slIZm1(o zEd{=)rQYhGy0Otn0fR`RQP1N!0bDENTzu09#CHTqSQ-6ZL8*eGfu_LDAg3^*&*U+) z8Hqt9nFWT2y`RL?L+t8Ky$Rry+fkCakIH3VqP2S7r{J{DE#3Kv&-meWBOGE$1gsMp41O}N@~se zXR=}iytO`cTuO7^3w&{nz8aT#>DLmcJUe7r_P4uCh$s88?6~{E38!@MeE2`Y;KMU1 zf9j8cO9$C#zAXA4dGeYU<0=acG%t%Rl=Z^!Dv}=hq@iAk-87V&DeLpa@^8!*i##9& z_xf3df2hdScJ;H3u@Ea^*>>i$%o)Dc4zeSxcj!5d2AUvR{GK~*ImvtSGf@4v>-mlP|vUV8pzhw~!dJF`1&X%C}Q*d#iQ zMikN;w)YOMF7xv1qdX-C!>JUMb=!#YM53~L*yveGu-rI}I`0FcNW#U_p+nTaIx;Qf z>qF%bpDab@U=TU&jX=;xI`SbtNux~TZBT`YaqQ%&eh8tY=6#+0w;V8)902G2V|{;I zhCn(BDF?kVyjYA9R3hM^H<)PDn1aTpNV&m34}WssYIQR6c%F{bn``XQssO1 zMoL*F`xe>C(o$I`_`+;6JP@B2)>^zE#W%W&@{V$?G(==}xhao1N_>ZhU(y|J*lg0rcAe>u5- zJ>4*}`%U2V4Mvkh`UM|pOwl#JLSQK9|ZeYj<%J;pwts@h9DD$41=sDk%v z<}bJ*##wQaHJdP7FAlw|i>{)z#>6+-MxxX3+u$DNV{wZe%wBScRNF&MSphBo=n4Sv znP4^izSR^j-hJJaaEaWN7-OwVv5tg?Wh; z#L{;&&)M09X1%*)S(cYqtCG2`&t~4Wb#NO_KiTX}|)5(TNVtz=3G_7>u3%~7i8#QFkgvCIx zX_OiEA^bV7xWRBNq9h0nT^EU<{CNNE4oDx|-vuJSb;Ybou1J({>x_nFC~9xSJ~ZH| z#W8E*toq-NeT;D3_%x57oN8s&iJB_t zarw%EQy{#P-?JD@ylK9_f|m>x`Tip*f@7beNYO<9$S~{W{#&jdw<7%_^b61abv1wo zSTapO$u8ltcvk~66qmcxyZ&%gPKYKj0__(vXT$n2^kV2Kn&oS+)zfy$Ey~>LP8ABR zSLc?kz6@eo8KSim+q!wz#z%bO2?K4GyLpzxrM*z-iA+s8)K-E}v`Lp4zGPqlXP{lS zF3Co7oS(nw0@T8^hc?-CMCsJCD5ttP?HXim%TRcQ!Id%$YNdzQ2RHQ&bVj+`k+ZPM zBGmR`4=-t#)GjW*YdI1;$EnmdSL2Cv>)L+m{K!N=;BxIX5%r==7th_0oLewlOJja;W1zTOCkn-LUPfYU4v%PUfbIsa z(p_=JyIB2c(Rsu|J zU`gQ4T=Zlm7ysk7Si7)ed=U>3X+fY-c&mW1)jw|76WkTNc@1U%2|y|l`5Qs4O8IT6ZvKNr{x6f?W+@sB#zCz#|hRgmAm5l8%;n?!o%}pE_g{U6TcQ zoj32MiscRdJYoAQ^efT*`VI)bn`aM4+e7;vQzZtF{aa-I89&q|4?ci^x#ykUMpqJ!Z@tm$r!cfeKA+k;h5i-?2<_-)`hN# z^a-(((wlvQ&by$jn^kME;$!4g9mTZUmiL~q)5-gr^PbBwm8%`yl6Pq5nOd$5$xj~EDq0WzbY-6lh_OvHru5_uT7h&K3Hv59=VN?^sWL`j z3QwB3$a)?kr0<_67u@SENKt8dY$iW9Jrg0^%QBV_Z`8T0?Nk_Pr3WyDq95hgq5tC= zQ>KA(E_m4h8AGUYwaHe0 zqeV^o7FSHZf8(Oz+M9wD!^m4@6WGZar{ymOaP@N}B?eqoG(4*92lz?y&a`VP`jPPt zgc|N`9e{M!Pp03yeYvQ7L;e`wbK`}~{tP+Ev(`T2H4#Zw9PfB~g;Bg8Ynh@{ufmQx zP{jMi1ghoPhuW&te#o73Xi8nXj7!0sp*;?>bVNyat9$$a#q`$b8;86Gw%XYe;8$_8 z@&F&dD$$NcLlvr6AZdgGY~`Z(L@$Wq0|rdP)~G9fjJ`>H!r6dHHO z`CrGoEnA_u&pnTMYFAoyU&byw!tggb;>|_H#9u}A&+Yk1%y@Dij!uX6eA+J~zrQw6 zgxKp(x{&zLF_m*cHMBm&Axv1O`$7{@iU!ULP)S};uK=9TYiq)clj2FzF-d_J+s*D` zBoqBsIt;5X=?0vr-=#%3Q4L3_W<9FG-MG@+0==^3a>UxcGeP1((tX!k6ontW`leNL z5}x-KPDYeTO0qd7H5;NnxyGekEqGx#&3g`HOnA+TV-bh51e@b!o5su>M!d>Mq{HMJ zwS3!e(Is54QR^Hm_Am%EkRIU#!*`w%31UlDg0c! z>Y8sWU>Y17+h6DxeC&cfX`RvMU`1D^` zzHQ#UHluaxTTX;LK85|~GX9Jk?nM7etMCvz%9FqOm)HM<*x)xjIvUuME>h(+;UKC0 z!RE3vnKHbA$#UE#j0aj30Lot{Js`gaMwG5QyQ$^Dr%W&SIMGA=EK(81j*%#?M!WTo zR<>KlQ~p|bS-95Ka%KE(xn$f|5XAN1cRvLfWYk^6Y*jTofn97U zSfn7SB=+5FBAtVv+u=_2i8x3(4NYVPgx9SWV=F4NM^-m}0Qw-w(;3>4&_#-h?hLYK zs_u=c?9h2h(#hSy95ue&IPlOjkz6_oZ|yEMI{CGKNOhq4Q2Xef0xG~cHfznXFU7hJ zcd$iGzuWYyE7F^3ZCw}Q2`slFH~F#6~zU2DR0ALSyQ+@c40u{3qTlU44(en9j6 zae{xKhJR9I9}5U<(%HL!(^a&i%JBUM&iISUtb2~Jc76(w&y!9Czghab_n2|h8wbn3 z98j`_l6B6}R)}!~u|f{7SIil#mg7#n zvhO-ec7NCOj!rNU3`&fR-N5!RIyzvJ zEn=JiFCn=0*=xghmQK>~p28}fRA3J?SAk7ikmLumMB6lamSPg6wh|d^LB4*X#W^DZ zJj;hU%EtPnX;2!q0_MdSgpQ$$LrH68zBY@RAnj86xZUBxO5ck`Hz@7~geqKFa|@nJ zJ(xtZUzkjl1PuNcCk&SD0?-Rej@Nq6R_@o`p664X|4yJO@>9OL%1axPs2>f0z^%8I z%lfj}zCFzNY^yw|%rA-3F(&=vq(Xi8tPH=iGwK z^vw%Wpli#t1AVk)bAK<=j+c;%O8>8urKk;xjgaQ|f0odoF)BI${tKd+-bv{xMwoul z^RMJoF7K76apFYIu;+8Ur1&^;=HbYZ_lBmONXvlv94;2C*u4vrKxp&`RV`#nCa+DLjJIc0N4&?^Si41NzPG@DyRuTXa z-a^edNCm^Rl|-pHcCEO|F`0Qcd74Si)3>W#N@AzA1Of24APB-fC6jZKBP!Ql@k3D- zg2CRqTLTH#Bt@_;g1u?5n;^P6!ovlE3V8~hX|AwYxk=J8ZbO+_XsamS@gQ3Qu2`g5 zWhV_`isvO3q6_U8gVpTkAKg&s5R8tct1#Z$VDJkn(M%~tR4*W5$U`gd6uJJ(>G6B; zek2}PW;yq4i;jet<-f?#k7vNm`_^CJBQMUseQwGelxSBK{JvyEc_(We2Jad5bLA-` zjvW(7d`P1u7YL&>bl0n)mF%g17> z5UBOv@c2So(zzvL}73UV^aT!_S>YBkqc&--VRs`!R2K{%8`Cg)=gGhaoGWQ1? zl5@yX_V}mwSNpcj7PUaM~kOhz@e`$d-%aXQsBZ>Taj^8 zlY&zNi?=eban+3npw*sFEPwS_d->IS&!ve=V`Yf_i(9!gpWxW@0WfMag+}wtuiz5s zL)Z2AH@vr>1@}{*q9{evWhJgJzS_z8i;q zkCA5(wk(}#msrM!M%IhTw)>iAi7B>syEll)w#Qy#to7o#$u`(-Wv5bH;(IF(A8cnn z_$=TIf!ZscU1wp``eG~diaNyB-)q_;2R|d1*T@zjDQKgYc@3K9+kLk#V7KFtLH=ed zqNA?DU{ts&DBq&^HoaAf_Qf~l9Bp|WJ?V~?b1X|ki{Y6e1EshI`$g4;8rOCo@kYdM zL;4<}-o)qJ>2i~tcyd7e0%~>ge1DeT02H z?;wrsE?uVlgQt*g{^Tu5nu>!?%paz0Vj(YX0C~gDYx8Wvbv5kl!sAA7AvA0^#_jSc zABS7iRbrAO`Xj6c&2DGA0Zr?;P9GT{a?wldJ+S~0*=6R6NpHplr|mJjrJYr)AvL1N zSfHR_eW$(SquZm-6xw>1IJIC)b_RCm^if-yC#d~5M{D!f=iKY8hq+4)=hm2lL9N&@ z?x2177Ou_O7`-@Z3IJEk-dCn7|64bB{VsjCCz&JXve(;AFlUJWEkr00V z6c0i72~2(o5NtzDaqY>;rh@#?7A)IvVKd~e0AP2!d}rUe3VCYlREfwQ>fyJ41X2?V zn$vzH5($rg09aSy=vTw>4f1(3uM|fPeO2AxqVF5>i`d51 zwXWNdM$=tcM`<`l(Vy2OPK0?fOwSfML`}N{n|$JtSBTg))D17^NmnY6^V!adBdt4&6`1e0`cgMmB{7#6$jvF_ zQ=wMsK8UfL0tF^a8S}w;(}!)K20ow=Vni5*NR?bonSPT)qFo9#TTqSaa77p$n$CV> z`RR62Gf}BZRBnLjA@izPTfHrMfSXsj5kS204$;bMS;-7A)81I6x2Su40a+Rv)e;*0 zMJTA)XQ^(`b8&3!{p&s7*3x}0K#CF>A}uOEKh|GkYmwoOsXG6WayOzC#8<1KQclWZ zsouYW_x~>5e-057I+s#s3#rLud9i=br0BZ-(Zqk)m-x&}?l*uTx9rCqO;#DUJEac5 zM;;tlZX2ZfvI`E7a?xO@ty(_is#ur-@D-QaOwSi$W$P6`_k63_!3G0YYP4FIiX9M> zqvgL-oeI5GV;`NVON$;_#lWJ@puKf1Pn`FH@TPnh?@Dn{h!n+UyQ5 z^D!iBXs~vpS5FZ0MEL}t-c#==*Q&L+q__w694tp}%b@%dt=aAT#srgCv&?5DD1b9iN29^6-dCvjVhF?V&G7pC!5&LZhV+>;OG_V@*iO zT3^50_-1mtD}a+}aH+;yrTAb&LK2}4GW8rxZtxI>!)5G0llE`yv|gZ1uD@D|<4q7Y zT6F$)y|@Z?s048wmKU+GZFXWkXRF)VJ$9B_z1Y?5oV+=j?Cm?YrL5Km!X{)r%(J;j zvm&HeyEmy)9fYLN7x~T&eIlcKS08y&kg2Wf{zWH^QYU11(W{*khzuJER$;u`c30A~ z!M3HCGv!V_{DA*Tw#Gd$gyxr7WgE7*H&`?6z?GkRd9&*pxzHZX?o+y*`+m&VpTLaz zZtsp&3k~6U7e$JtlNen_FXm*-?yu;71}yMH(o4r-0jqb0pI#?&z5Yv`+mBhlTn)!9 z13Of0b~dR1(L_7@?3DrQa%&M+=azX^-xbr>6-1Gfka)aBrr#`86BNI92~d#EC|#47LYL{m zK8ve)@3{LEUo#BbE|TDpJ0T?TyQ@}_sasKL3l4rG0Bd$_z47i$DbSie$2X>0MZNVD zOUdHx79Ds`BxBh2A#*k`saZn0w_+?)q*lKzb&D-dL%?d{kJhfe^G@$qYYub zi4QfAW~KZ!r#&!(QJwr>!BHTw;6*aaQofxwdo?+w;szN z7~#n8ob9a3C`Fofyt+~5GjmIS{hLWq8PJ=O+w$eE5Qr6Qg!?n?a+(Ovp>UwFH*s>x zg%k2bA8m2I$F~ou9B;NRPykRJLbZougl%k>p&E>h)2)*mzkZq1d^^A{>xT{XG0)zRajMJha1E;O%Hs1XV~Cw27$~BW zE#g4z;ug0Ftr%8r0D&z&Y*DHGc_{!09-3jZm=)^53es>-_GqAYhLdfR5Tq%7k2QCF z>B$sF1^v(@_nNSf7P%MWdS)pzWw!x0&4ny#&uhbUa0o5C-R zHy1B`qh`-{8<8O>^mE#X2VZt%WWzcz52vhVtO2dQv0hMMkrJL-Ql(w8CykVK_uI|_ z^t5u-dMLAx`9|-k@aiUKI4;L4qVm&$apcPoljUqWp`ExW?cH&+3)Sv!ToxPBeA6kz z{7~k+%+YkY#{}z4UOd8X_7SFiMhb_@U5c~z+Ff&yytr2zchZyE7u!YgHvPSa>+|F* z2y16RsXG`qavHk!M5YH6-oRqNmKV+pkUYOz__%OmBUMf^|9-GD%JrQ-#^RjL`zq__ zDCx!(=KGm;=1Hs&90T9;F`cKFTHkQdN?iB2;>&tu%38mFYV)JV0R>>X-Ai?tu-B*v zecI@NrMz~42^KtVniM^>Axx;e0OmOXFi&#Y_2E(yt~-%2co7k`N$@u<4ksXW^q;@6 z@T@bUA-@hF&Qt{-Azu*myh+1tX{L|1zTI-?9>M->GWfpjR~5;Br)B<%ry%>eor3Jt zKFGJe{8Om>Eks`m3)tG9q^c-SA^2qjH&jZTBvo)-?u(^Dola!xW%%2V0S187ggYT$ z@67qPqD$Rc0jpFe7z;XgqXE(F_fr1yyFzIvI>2-=1CGlEhGmSDD!Wh0Am>kQv0ca) zu`tqMn%w^BOQRtkR7H|cjtR97j4TJ~1d7A$;uuww2OY6Po6BJrYB#31$5e{~8A8(7 z9d&MwufI;kc+wgM0B{k1Lr}DAemHcgn?5|>Zr9sbvTx|fR36B~X3eWmkSS27ZbB29 z5cVU7k{Ye>O{vuzTY)AP2cio<402c=a}pn#+RA-eJnvtnnN|8N4B&}@U=Hi&RUu5U zd)^%B2Zm+yI=}3o9NU=kpu>P}aqy~K;L-db%94nuE%OtXqFN}BTQA(wwCsoH!mRZI z``Yi?TWX%yN)Kih6qC^RV;|b)THo0TQ@OUz9cgmz71GKrbFuj7) zAGNMQoG89?awMBwlI?1iCxc|8eZHB4?NnDu?K8i#4s*JOskdbM*HFa~eP`6`NWc6~ z#`Z@+@Yg=BXdmZ~M5Ol+aLj?@2Y*GBpGJ%ChE>J!qy0se(lquvJYy;BG~_G*bOFpl zAQ!tfD;N_l=pcfaUA6)Lx-kKlm#o6rBZg<(K&F+%?aic^P8N1zUbfOqB1;#QKzw#a ztwlE;31whZRs7agY!Eiw=Ls)5HPXtUa`lo=Ik%l_@i<@Im$sSDWM)3mkbe7EP9k2sWJemAO_mpJ&&dfTE0R;nhK#Ok z;TJx&KN~mG)P&FI)}pncl~pZqkWDV>(WRqLjtP9@jhvw;OVIM!hRC)e19#4E}AZ3c-N+Q+)z-^7s)zCofeYSu*#7coOkG8~yvOR17FY!D6xR^(Z0>xhvpL zzIny1tm&re#>-oZ&DedxNH@4@^?6yG1tx@0W@M=ZlxbQuQAcLTKRR!eg@iLX3}lyB znI9KoC<3?~BueG{d*>x7!pRM%b>>TarBAT~W71Gt*{z~WvP=i3yaM%B@*A5~xKbN6 z)KcaiB8Q^@_E7}f43Re&OGQ#t^Od8vkKlMwvzKHgAc&UBjQKY-0WlhKCT}zZ)UIXs z`GF5|qTN3+j4uoti*l>Aa$|Z3lc=R6dyH8xe0re+6bE%jv<}*~4BJQ4UhSS3qTdNy z*1=DvrQ4EVAYJ0@UUC!qEgyi=*>6I(Fs0ZIoF&_!;&A&UOHCGwSqF8{3@@zre!k<# zysb640tysL#o}fQuGq-raX=NO@+lq7->syr=4DFR1qmj#*xcDJWT=`&>(9wHhZBis zU+-_g{_cV0|6VE|r#%QfjwJUI|L)FHAj16CK~KS3H(<;>%cD_n)`t%Wot<6DP-_UW z(_ho&(VjMSm=4wLwP}Ax%XX{MEHRk`@{(_w9u`6M6%n91AjsJ?_U|)r0`9S)^AT=j>tSc>Zcse zh&3v&;JcvZ+&GN{7{tLc8(-aGUaIMQp>ECh@g=O)KTN!T&ffaDIVr}#38|MqT3a<+ z4gW8r@*CZhi;ZqfyUC-1;12up6I9UK^jY5FLEq;I7>0Wun+I9}NK^BgZLvb(H)|eX*USb(2+~P`*{4nZPYj6U3b!WbX z2H>Tzj%rwaZ?&&EpB+tduOdOb zYsI|m)N$IJEl1c@0!qLJI+pw8?Mp2bfhc$-H5m)^K3D7r5p-{DUO3MjFMLtL1vrQLN&S^2zvlNLT4gAfSd`Ex-0C_SO{Xr2_q|TcV zD}u8@v4-O7+n;;3U()@O;(4JVAkqUt0e9a~VcQ5-$%(Fs z29$d7Wn9h{kss%9CH=R|D^*snVRxw@crT2@c~Ijsv%|cOf})?J@AKvszX=8#TDrkAL;K0w{odK!gH}0`1JW-wW8mp+C20(hrHTTP`=s_To zF=^l}p3)xpOAU_cXTzW@1P_(eWrxx&nGlr)0oOIh>hm**YyaI_KQZsGg z02|FgY@t2oHp=Q+F>&Z2TiT~94WRt*90+z!iwB%w>$t5y$%Ti;JBi6A9Sfzqw3xgN zg=6P68*+5td1|dz`%6DLbK11=!TlJiRH~W^_rvoIpJ#}O{9a$>4TaGeU0L+^9fQ0j zlRW*VQmPRfje|5Xy06yny0&-dKneW)yiVciH|S-X4v?&p1+}#-}eV z`lb_u)Kff3&~~Rl%;C>F%>#-=+UIpojzA2ev$RE)tbd+cWG}WhUfNyy1jLg|W3y`tm{g#n`>ruY(Y!dHzmyAR_jB;%iwgHk$lI zZoZ0gj7c5LA{6UT?;n-g`&H%^;0c}m0VwS7Up<)fQtvj@p|w z2nZ31UB94vU}<}Pu-9xLl`ng9qWGBFxu6ZF*TZcpTCku?X5+lsH$wD7pYIvi!reM> z3JN1!rSR#`%4=>r1h^QaE3Lot%2t4>1hcnNNmE9^E3MR{394*)uL;0E3#h7UjXirtbLg zv(_d@0Ow@&R^#`9cX=(clx@9s5h1?(j!}J!QVamAB%tbH1l_cCSuJ+l02oO%^w#S( z1^6zE;?v_r?o`A0?@(@hT;~0N$4IZ8M zvPZLfaohqKq`;Lu7Jo%~JYCC985H>an|ODi`Z6t#CtQ~aECR-9+~PX`{S{QJi#Vcc z)&#nkO|}I+yd1FH^9F?njfMsoSs7HZ%*3v?^1!Hi8fpDacd7&~eh0Vc!qeVPO?Dbl zzHC0}e5ZG=2#@4z{Jb|D4*Vh2>(k0a_}i%_de9z%T9Ee=2*6V9`dUEZZNKFnkZgo> zGMcLyJpVjqo*@Ih+&rO@hH64OcH{NBzr{h-D{k{KSPLE84hFr`Y(Y<`QOv~;_M(BU zI0A#3aRnpv#X!(3(kiF?OKJ?(R#f_LIae{25n%i-BVyux*_Mnb{Kv@NeYukGgJ&uL z{>`qjQIpNI-OY{MsurNcUji~qos>k)17MMDE|2tk?Bp6(S=_ud`T}X+s)eHl&z8^| zUN5(EP#z@cCSP;}-E*}c(S_p5#m!;SnSF;3O=rc-b?@+$jpW8+$x3#&Nx@BwCubX3 zmjImwCa^0j$ZvPPfi@RcanJ28j+~fXHcg+^qC(y-%26!H{B=O1{7&AWUR^Vm35;+a zHhSYCS+jjl{s=4_)3mK^1YIx>nA!DI#+q& zYqlXi(f&(JZrkDrbU7%TB7xexIkZ@DYO+Zv*<|j8Id_WX;}@{rdW56YWYXd5mLs`= zOvA>4>!>TO4g6IJAkcP(7}83zQA~5K)zP5pY(X7rc;T!1poYO8_3eN5-yH{!FD&a+ z@J`hEJjlxRdIM}ZPO?3?1{XP|{?#G-(oU~<|2XqfD&SC30_e~N*L?AWQUS!Z!69PG zgFu$P1ZX2p^_)>>c1Ll*;v(#I7_gTLdDy#X_~835kE!NqD)txK<tL!Tgq4oVo;awKsd%^W5wj({wLe9(we>ECt*ObeEJ;KDDlgT=Cz2>Zo&% zv`|h>Lpbx~U_>QtJ(+1w1V=-6wVrIeQ0Zj5hGu@xtEIiUkL$%T-h1lb%kPsUZJ52~ zb4(-agUl&oOC`lu0e_mU8QcQ(eobnS^5pk?|JPC8Z@7&h`4078Vhdf7t!fb+kZ+l$uM>F2C zb?HP!o1OX7_D zHmNtZSZ*J5!6tgRyrON)D!X9s!LVvoLZ{0#7lI_@4$SRAI4gQ%auS+9UmY6WGZ1Qf zf5dCmU<^_udpagKIS6g zod)^jMEJ84&A^?bgpe6oE_c~QV}WgUzLy_3b`#91S+KVV!4IT?)dGp8i4IjkOZ?hf zla2Y7i2lu1;yl3^>o8D_Fi-NMb*J=4ftKRqc!iT~Xgj^I!@5~=G;Sd86yJ0J5(Xj> zDLZ$EtS@CN?E;xn@Hj8 zA=-@I`xI<6t+CbX0+3-Ek9*=kakDTQSN#Sm%U}zw%_D)@J{lfe#37f`UHM zjd-tn#tP+jREt4(O(~ZKCzZ%+{AaFD7CLtEVz)JNUF}`Uw$2L{Vaf%%+_D@;2g*$Y zwTf>~XP*G}r#vV6{p=2Cpnvp{{mAq`ohuy_9(#;bLL#Ene{?rU(RVHXaj6uGD4L>k zA4#Jj5+orI=0QFP8$;ot8(_HC{_tVvs&tW?afNa41dj;jqT!NN9*6h3M!u%nMV)1M zq3!8+OdA_WK%c_+p*Ir&7iY8Q3LCa#8>%`Q&xj}*)~dEuNH#Gb++;J7A-Yf;_d;U41-irlOJa*zcu93P6CJDTdugms_lb^2})Lw&?WyH-*0r z7;ehLb}T6S{B|O=^v)b@KaqOTwRB}=4V7~5_L)*)e^v;l1h|}AfJ_2;PLN+H4i^Qt zs{y5Q)&HxAD7zO4)1d3Xba7mgR})j~Js+>e0gt^mEE|9?a@e{XqE&sB;me%giL9de z@xIg0CHAEy^vCL0Z}eSuFes$+dt&&!Ik#?$hWdMj3T zR9>8cnJdDxcv4644%tlYHnKb`&Sqdb6?`6?LLohS`HX7C z0Hr^s0VDn+gMmwZ?j!Lpf9Y?#T_ErbdxYB|-dU-bKqT%5gdbmiG$1PG|MBIyOThQ} zOU-8dqFR$)F((Bv=5yW^w4?hAq!Arh%@KT(bsV<6LxuLK!4|qg4+>s-Wakp zNAxam2x@PBq9Pdm3p;ej%LpxZ#X81@YJh}a!Ex3RH5& zJHV6z=PuamjD1=;x}~7Mx~nN@**Q6HO~yYh*0Vgz)s5Tzb}sg=&=QeyIDqS&b>4P< zG~qn~zSeHL)D|1DW(yME?f?t<37=rwo{0I@`;*c$1txs4vBqUPh4IpHdAoz>K%Z>I zO`l=Dp-)}HL3rSjiv&%<9(;4?T3WI?-(o$Oo3n$sh7sPmP?pbJAp$eZ^5umI-79m! zO(5G`U`Jrt6v|r5cKSnO)mW2JLGhYnz?oM^&WLPCsNC9297X}%aVN>F3qO)+w@6<7 zIWk=mIwB#*|5k~d(;BSXv|I2^o;7i4d z`gd_R69GF(`7}WK&;Hf#r{+f&AebW%f+3_og14b0|0&)no7SdMv$a0MMe_>KZD;g5 zm}#6(xV#3$P;=hRrph#Kvvo{0fl&>L+k9R>23js2pFsFU5@4z0>C;-IjgNsR-I1qM zoGC_cb=$*6Uv!we0a&yOmhq8^C>YP{IM)loWVZTYlucU|_9G;Wm2lxNgX=G@eRW63tt%8qNFN)Fd3c zY`|d~JJ1SdR&Kbi?39?G^SG!<6x5Q~xe5N6=SXp-6f6hFV<0sdvr4uE*usTl0jWJw1Md;CS7sz?2X8$z+^l=e1k=j!{x*v`W z?oHlWGWuhG7x}~l#?@6Vqi zn+FGkoq2U(PRQL1xJHD4q4S(kE&Z4S(++<~Q2Z{TKY6w|2NWuxNNL1!rTS8*9kC zS3bYCBF|}4^c7s&7!k73Yq|0$deJBsu0)cAD7;8;Y^KjSASNyr8x-8~1{V4+>+(~F z>a7a_iP3S~4LdH;sCBhUA2X9Ne0~)dgr1ZFPH!?$DVJsbIS=fk5mBPSAH~FXWc&l7 z9d;$m9U0bpL-S{WPYNDi@E3soaT|>TuZPQ|4CKd;Em25TaC}NR9aO@&yC~qows-8o zAvULy5obFu((o-Knot##O?Er=o-!~khy*=_?5vkBo=Vt>Y^{1w+lyMe0(eFJ%G<_$ z_rJJK%#A&LtC^k++(-2YUd3L`-PXH+!WI4MT;QtRWO#qnYhLb=fYtys9^&j)vp~AK ziwrIMx|3@uvf$^?XMi99Y8PP2tvnd;LomP-BYa^p9qQlSstHZ3(Pxa}Pol-@4?6+# znL+kUyO$Ga!5BSW)@A?c?URhI6xTYxmBI!DeXeh?M0UySV{B3kd5yv@%e~{VM27yZ z`Zx`c7C{e7x?;$nLF@A#*N{;ZD=uY)$fAdzAfd`HdXKgmdyFi4veSH-6QZnY-OPm+ zzD)LqZ`c&JUwQuIUwthiOSs-)#k4aTBn+H0lB;1Gyy1JRgnK5-4zDFRGp*5^+Gf zd|hK&`iQ=I6*jwg7(73*Z{aif1@c0{&|0QrY#aUhUohe)ja5KUy@26IXbe3 zw*(a?kmcCi9fPI-4X5LHMdO(iyQs(-x`cs}hs&{oSz9~N&-AJ552kKP0h=4$S8Jac zCK?>dl7BI0sEP-8f=(l%STN+rVOMYE-CEvtTUX#vDtPg3czszeqpw0Dq$Z!K(NLE- zBzfFv&nbJp05~TOUDwK*zBTLp5=SS^tpJEb4 z)AT1Dm!p4So&R`~Jy8e+qGsZV$b4IhF(Bt1cEeN%4kAhGv0g(W(NR9nMH9=M#$L5p z48&`K^{(AubLHpQ7qhlo6GMCPBq4n9)Rl*TnjuxlwZTZ%H_@)4d~wstgm3wi#x~iF zpv7yNow{I-0T6j6K*h>(yV6IEkU1HvYpKoN+gt?w%U!??)$wjRxReya<;J%6N+-HC z99VrqcJR=XI|FL)#uQS zX%%dIw)Ah_tFO?MH9`P)5&y0OmvVJA{OjnA3#F`MMN)&E-m1t$d8hIi{9rzw!m7S~ zDa&KN59{$9rD`qBJ#HqTW&Bo+9}kl~#l$yj66Fn;pecgdayHdhG43P$(XlDKmkeGT?* zAZq1v)^mcmMXl`pl)mIw{@L42p`p08A67qtfp^OHx;mUg2tL=FgEVW}Ns;Kac`7AiLt81f za~i428};gWWQ_vG#|4cQd%p?An9*tE}*| z4m+0j%Qv;>NTNLQ8h4mV!Nw*3P|~5+Sa0SxGq+2W&CsfCQnpBGp}Za7%bU?tADF#z z)5v!di%sk)amH?xoxEIsMgoyqa^}wm{QOF!`!lnCeTVdxVj$|l1}qbC^rIS4BB4+F zPgdlQ=Q{oV!~HV+zg|vp4gB_JWq0?<#6Zg<>Iy&C`qw-EZ+_QrpX zMfuIneeZ;)d>PR4KWmTw_kV&i6U33=)o^6~{vid=sG#pE`}x2BA1fYM#gR%}>d6QD z7b)fdGht=CCy0Lf0{-^d|0&h{$Y1|Fk3y#j4FT1$EKd#s(r$k^^Y7dF|LLs!_yvJi z!FV#(Lzjzx+V>U?Wtjh+B>TJ)`n8h#FIOZYh!_F2fwR9&Lj^B;CP6Iy z+gNxo4)Cg)TI5LDpn)SYk*XxhOvDLcLqSspI0+Aum z#H;q4k`4#jqxeV=>~^TCk(!MOs`>tcQ#p$;2gID`(0F6$b4H6KbZ4%uA-P_O&Erg= z=_m~oJKWT#mz!JV?E>DriQtiEerR`bq)rs$j!uCosb-#G;$&^HGk)Zg_eX`jO*K*5 z!DI0f_HZhe-)HUBg$Dc!^sE80!rGZTOKrVo|FzzMvd4@S$I8)3jjZ-nfku9tq>0k5 z4NA0f$8OX1x2z$JBCUF}Qk|yTELh2DIUt$T8d2aWEE|)N3hH@=a)1#s;To zWX7v714#dBfmv(5MQ7Zj&>_2;O$)H5*3Xgm>flrP#GFfACANClL7v-hDeP)@)}QI= z*Z4@m7504Y<{7eI4r6G>FV=E8u}Tr@VImT;lzX3EFo{|ouGv{fJ*riJ`A#YEdGLYi z-6?UBSQSW{mJj{ zu1d1U#33+!#(7+az1{SZ<1xv~I8VsLhNL*}NP#UXR7mquRLtZovy|IGN)3TVu#2 z!i>dR8}Bnz2p5U6B*5$UvFCqX5)es`MH~?}cE=67%aFG(4L>|Y2V~P6!F&0>csHm9 z*;%FvX9mkN6T}cfpY7$=M)Zm6K=(Y%zaTijs9Q%Ym1_&n7(;yEpaq~Es3$MnIX`*cjI z>01pL%x@)tjBliKoiYFCd%2{8V1Vt zaJ736mlr`-IrivAw;e#PE0 zFt2qkE7kSa1^l(?p8?S{VQAnNF# zEG`U}zP07(6m~H8vPI;?f`6*~tLHzoH++tjaz4vnwbYQI-5+gCR$q4lY9Brm>|4Z2 z)hLZcBgmnXHUl5dMDZI~Y4PFOoKnq04jL$VGaC5_#fe!nti)Q1c&^+lJuVC#rdpFf zy7E{_G9Wd(mBYIO^01&buX>#&gqoGXDI>g)s%CR0-eWRc;-Vp8yHini8j&1wPrx}J zgbX;hCc2M2b_i;em9J$Cx#y3^NI)evQbOD?gHokIIwq`;6dl)iaoZo-1wg zOIv8yW;&<7YkpB|G~^PEhBp%=iTti$ePMUfXhCOmQ-lW{$8g1zH$@5rHa@EZ@-|TB`Q6;hdrN`*1ul%TK!}san9^xV(}hxT(T22th>UVhvSD zQpbbCenQ8bm&Pujk3i(4B#KT3G9BKS&CctHJtOsUw8j@N=(YMagGPz;B-D8E6IZee z+^!w5SBx~YChH<$pDXw8&C>8#>(xqZhG5ngM@P%qsd+8~pL^qz`S@N=GDhZ#;bQA( zjbpue?^L42p}o`I=B}^m$5jNXk0mhoaPyqY+oo|!952zzGc;yWc(rRkTtN?s&}ns9 z7-F7odtE4womz`F@^g$Ij-9j|u5i7Iwm1+zn&v~%B!<)vl6IXvE-%l)F5`AkAsu9~ zb*sqHVF*g-)m*Vi2XRUBaRDg&9$i)6{4W1kO_es&tI-eUR2%YF<{IWCk1{yVbOc%l zxOT>gef|87$`3@dtD>CU;_uax?MBoL^5{a~{|{f^9oAH~^-U3QLMV<@1pzC)7NDG7)WdXW-(=q)6CJ9B5|&fI(7?;jpWB9ENC z&sx8>_Hp@9c%pZ6=AG0yj)CdaBW{>O3N=<~wT5>2oSKV*lbl*2X+AHpnfR=qLDiGe z(FPoPkXaK)US3`flCs}(gR6Fb80hBeW~*Wv#{wq8Oe-9p`&fwlW1-Z284Cmc`N}fo z^h+Y4?7Cp2I?eF^uF{m#?bMTKpghV)hnwzTX`|2Z0{Br*x9c3TyGjSQxi18lW0a}r zv=3Mvb;2a2_L*QHU&B8gT=t#UlMFq9x%{AmP1=2Q@YatKi|UUfKlg_?;r3E>mu;J= z4kwOC**?CfWnHP@k5G)Q3L@9mJGxR~QXxC8a2D=ym)^HA+%IKqCFqWm@i`6SC9w+W_rbVI_O;0Q#Vt7q}oB4*ZO5C{$ z+@-9*R#)6AC%g_%t59TI;=HOFv~ixikBx|8;gV$ZCf^bJn>zmIxBqSn;FVg+7_Ruw zBBwuFgXRgne}+aVI=MQT(UU`oUI~%qnXHT%baIP3=rB{`{yFOfW$OQ65Lc`rA<=YL zu7DD_a#g{qk$kX}gIzLvE^sX2Tn{LpQD;ncO^s)K~A6$ur9Ks*5iIOn3AX}FV&C+n!u10{HEmQk@#!e~G z3b#)-dwnHH*K)*`uSC`oEHlGJoeW0|4g57sx}6FOU~b7nFSm6@49dSC7zU?Wb(2a_GJ(|&4h!_qae?%b>nh0nxuckDN2zBxF)%Dq}2gEGGU zb8~eVIZ$FT4SI_vI(R$dGn5(TTkkd^3pcAk9=M>I&}mucAIHJ2p=+x= zBv&NtZg&u_#m)vMD*4VQabI@$`fLRNKbtr@D~wB%O;h-!O7}Lub<-h{|1Klp4S+-5 zA%k&C`!prE4+iZG3^rlg{rfu|1l_oE__-{5F$!D-PYAFxT9BR#>rKuPi$ z?*&cM%Eq$rCH(kd2xmDHvMgok*+Pd|aWtR8Kew}ujT(}mzk{q>6rQQRK>W3%mBB*! zU_Ng$T2)g4Qz{-^e{_Ir>T1$o*}-4u<`Z5U^}(j*+Eif)mZ~#xIJW9a%60?ie?R-r z$pApW|8M}(!7~#TM4$b~T&sEtjiT1S#fY392#;DgPonb1W0+)%Z96TCvMqgo>ooxF zY%=05H+qJUin94ra=!lg*vd zuruuPd?J@ScCdtsi}o=*(=T~qY7a7Y8EUH6+6OJX>^lO0H{NuiSu(?9e!%Qpu<@SC z)=Kq+qS7bzOHEHR=rj;(0t}^YTZ{djp`KS*1Ay0@j`#DZc&`(}%v{g-&J`dDrn^!9*7rp9gDW}WKs7Enq2c$kT} z`qjG5AVEIM=7+Uyb~d=Fuj25p;do3Y#(u?^i{3$SaQMwcvayPZ~d{Tk*wfc zY^D>Ur;3VM{_D-Z$KQh_KH9d>bY-cG1pORwuV(^v-^V?!&U<-K%JYlpQq7lVr_V`A z^$!1VIYyT(VUw^v-Hs2eUH@{rh5HMlRBH6(6aOK4qGRRhr$}hM)ZWiizB974QvTDk z_-KI(n3^RIZh6lf*fFgCneaWkyfOfpWS!(A=a>heu5n>}#t3y7GqoUeP(lpqppKqZfq0QNur&Lb?SR6F6g+R+Rjo(1 zefGergS&=8j$>V;Yh$@PW_K?TSW0oC#5UqL-hk0aAR6QWS{hmR>kfH;6I=vi9F=u} zPUczJkmdQ_JpBqs{c5t*;n%fH3%g^osz--DP%cR-8JB^ppMPVY^2lF0o*{0MZkv-e z?UngCjpf$Y#5fwswQfDJBlk(t$SL`@s)p+dFr*Pjmy0#dOP(i1-s^3Uwgo=_0-tgV zgP!SwQY18*zAj*`g}H&jtlcZ~L1e--*}}c{v!dwa5?1ZVHTJ$35ip&!slad#iu|!c z2(aekIk_7oewYPMN}cc-xV0bljo?`}+W~-hXt3HN8{0&Sm|ktz)LCN9Mm9{8 zS!-%WnZ>Pa5Ke^0rPCe!*Ga!p7jjzu?1n&&V&kDaL<1A@K8r$pAInm2|L9vG_@}VcH#1}tq^GNLT6XXZI<);-4TtKf3y#g5uU=)l2F#mT+<2;^mjq;psU-n z*jXK0@)wLQATQRhPUDAHZ23+@zmA9Pj$zPHXVvW=2DYrRF#za%4#H=)8*QFxF+0n` zr|Jq$VY$a0tpXJ@n}x1g`gF_8iN+e60SrHRN;G(92)+(#k6Hb>joS?LAthf9c2-mGA4Hft4i!rIDN6bnOn6) z&merebGrd_3Jo`i}W6;q@i}BD+ZBK{mI9cxRKSS{593Ajj+_TEHkk~L! zH<2Di+B)B=glY6cyOr zrS^=Man>o9AnTl0W+fWdXn-65r(Z<0y?ps{eZazFADsOA%IqF@{`B6ywb=@#1v>2Y zQjWAa5kjK02{$kQDS-Ors~LYnu2l1du2Ju$RvlnJ&Vb(RHlAHlJ{meZLEliliS|`t z;Vac+ZLKoS4&qha_sreBTX=h-GuM~e5+sbei6ZZHAroG z-MKWePEcr$;oOfkQO{a|tnTPe|kD`kJRp3voa>WWTj zCulAVnDWolpzins3Sg1g9=bObXDj#w7FBAE9`?U@3lrPUN)2C!IM~%Z!4KT^JO%`_ z2lOyr<{Qnw_Z5YYbc`G+s7p#bJMB!oia*Q(fEZ~TI5PDSx#U^%#>Ri>0mdG%@Q*KH zGUk5VkEdLFp^K&urqFX3eH0uk+x8Ahw+@A_emsJ*_@pz^zQfr>p!c&pL%zMZkOG4< zn`CxI(lSVf?s-b?Jz&3F(}|UCQ#9tLAiyt)d;}=N`~3VU4KYk}JL$QpF~XEOHe-;Z z4cVP8hj;E_Y(D~jYg+CIvhe@{{e`HMLM=GXViso&HT70e;}l70Ux)FqJ3{w|a5pp4 z1;lVJl9yHn5N0Re-+m3L`z02~6-)#KJhMHXONs_?eP8#@kObT>S3WP{knKM{7_3i5 zv)mi}Xg61xoQ>EGd&Z|BayMqEv0YUwyCGxMU4%Sq0se$wdG+ zyof8+#4t%}7Dphe$hrv%bKn32Gv@I9k@Kv96tcj_R3xpP0PYbkT7VWMI0=hI1a+=wMtDFt=6 z3_Ymrj=`Noidfr>`dcXmtj6CFul;29$(9Usw2To2Gf?hp0Jh2`P#?MfbZu=Yn0sf% z`^Q-ef`c@R=zseze+lSi60BpC5uCaSzHOa2s043G!f(9`DrAJ4%&ZT5 zP$-5Mx|wcs2Y)asPVP6%4Fa6OR`MC_s(Cb-OeCxW&9$amb>36H%S?}ZakJVGVcP5b zCG-JRk4YG|ZjL%UT+E`X3mhY49RMA#R<@e$D8Ay`-F#%S&HY(+yOd z$+u6%FGu%`?pVslrh7CFnRN}Bz7e-t9K|ejGz4vCXnXD`$5sOHSt{xK$;@;g->t1`a@^&ku1Ky%(V!WQg7*HOrol89+b(eci^mdA1*{7wmbL^X&)&C_-veyMPqu~O(((|hy|#q?PjdXbfytkJ z%-8%MuK*FM1Cjq8ppjAS&@nb(dIhhF?D(^CvcM*Yi`HVU2#f>cUMJGU4eKH?F2fYSv$Ewu2 zRYOlnABXaI@kM(+Pn${>P{Ivy)&~$0UR=1dAuS-$!qc95TY<5(Umi{qpKm4|%^lsp zdl>xSaU!aX!t2+nCE40tdP}oI`Be93PU6K?<)gBtB36P{m%hJ$y1A!k3=pnl)I5x&qQ9b~=$q;pg(jrZ_w{n+3D+ZK$AxH#Cr{?Ma5l4`Ifw z4l2QDEYNTwmlOh#0MrCDv)bp#D(`Ndnv7Nq#Qto>*1&n)ef&qp>H~cGEdj-HY@GXo z+?ef*W?{06sM%XIc!yc>ly4@`j<=V{au3?LKBY zW(l6Z?b5U)(pfu!;QAz?`XgpnUPQ2y_;gHk!`L7+;>F9C-P+dKhwjpH@iu^wwRtp= z=o9(|rH{HZl{m=`xBQttZ&33cD#f-qZ%*=%-)=v6V>Ne3jF!#NR!ea(`ro+o-=`RT z4FO1XbKDaChi${=PyOtlC;tB~;Tq9EHC)FVhK4T1F7hNSn{{L;xf%oBXQrs&lj`C} zzOfHo8x(_%O4Zo)!>!11y955zVb6YZhauM1+xgD*v<8zELl5`7B)hl^c~@C}BsXo= ztlE3NMAb;KIaDi?_ogw6pjcA1Wm9Uc&zu(ADmH@aGQ4)IH4HJW%-_XMf1FS=&Ahg` z1?-i3z`w-s-%8P*>#&n?{vkO5;3tWLg5%_gImnX$Be207x|)0QZgiW_BN25O+DTKw z7*nU$bipM+ejkrG3R@noWQ4k16V9o!YokY)S9U0?5H8>|d=hH2PB#TIkw9yshZF6I z%yG0})0{D>oXMq{i2L^PQazdl>ak8@d4IYTX1-w>cWx~}fEEs=iThQP>Ah~PQ2=pg zWiIR+YJ$@`Pyld9=5Z5>V0hl2Y0Ue}U3x*j;CX?y`WBNTuF?m*s;&=rnTpTwsW1yQSE$2hg=A3s#+J7IVjNPH zo<7pRaY;Mv(ay?9y8U#>x279Dn;BCT-QnQ6kQ_{tbN7ZTU5Ku+k(Snp(EU=2YUZpd zYt{LvZ2fGez~xDm=XN&q+xwaAW)IEg^u?C7W7|QeSXR#3Wf~vJ1i}eL@*ksF%>1AI zIp@Uf96idD=L*N&|Kqt=UpadIakf(VF@S*IRNgzBi>R3>wNkPdtBHVI)cW;LEdYAX zlU{?|epuT1_S#d5ISW4r44pKrnSu$zG!h^s#U*d!o)>nQ>kF>uTScI*8)^qE6_Q)u zl3w@)#|CpvLVbC5VU`_9AN*X;TiXD4P*R!Q(M}}-4}>ySd6Y$te~p@+1sQYFg~;_O zO*Kq$ndVlnv@yoJ+G9eMA|iOm6XW>8soGq~t+-Oyuy>X2xDD5*Dho$|I?s3xXw{QS zALJgZ-8Z|ftu6E9w2bpHOb6V3rd0wX`!&_9B%k}#>TqRoCHD`JD^E*dEcAYQH(%dt zx=cF&uw;=>&Qt>nCK`)avtvC>P(m$i&Z4lYv{&3zMXoL|kH6t^M4d@$A&l4h;O_yK z|E7+P|4y1+F#Qr}l5-qiBPJsmy09Fbx|xcz2yD*ExkTkC;V%P{!+WSHqRA&T2we{3qfHMH+~&skjfim*%g%GP7zWtZ@=%|wWOoyM zFMx`$G@#&t-ZqwY>}ej3A2uP2)djBK1Co=HZYkDNfGZiOiYkL9IKnOLwyqk9EmUof zv`~v3o|{-ICE2D748wOjNI(RCv){v1Pcr5{(mB3;YUYYEU{o{97(mg=AtCOwjX8h#o zQ(Cy6s8wA>?Fzx9)_b-&Rn;smvhcKf4fS+;Vt@sp%#5*BX6=4c04W`;)Fs+os3HW1 zB1&LA`@mt3&h<*@2B0oK-Ca|XK)Zy$Z^yq}R9xz9O{?G}qLwfl0ONbyvXo5S7*0AE zqGtjXXJ5g(*875awfoAlFkeN>P`$#_6|jF8F~VIg#75$(Pdcdze0UC#3mt;ZFS+t_ zn(XZ|9dUg7Y%mkjM`>T&gj<~2>%X;4Q8iVc zm{kkCc|C{FWxK1kKl9Q(FYJi4+l>wW*iI~JkE=L#!0e|~RyIXxpepwLhwTi3o>FpK z|20hwNq!jow{z6=CV`+Qw&sybPs#Rx$KLtU|JUMEk~KLW6FdpyXwz!@SYB!HTl}H1GF%xZTWR0U4A=YZ^(k4`ubg5hSW}dP%DKPTO=2cMPts}UW|i|8 z=XqXrn0bSEKFJ^wzySM&@9!}V^iZxzcK!xn3hM(&{2}9#!f9`_DMT2H$`-5qolEeS z75*wagZA!r0>z`NuLW#z#Iwr_az{8!WST*KRo6=%gmPKlAwX_=KlQ zR^$w!k;ptC`lzL$jy_8#OZiFA=3I=gGTh$xwE81C2TaD3fbpRAAz^s+3Xm{-l&Xyb zb$R66c{G_`&l*Rxx&?eq5}1rHG^QH0QF?YtrWIIJk13{&Ta^X9hr&~#2?mje82`b! zrxJ~iLAqgPACa3CF=6T3du_WxWi^>e?YjL0>LTsxt2<8P^unUaT?|2PVn|0hkB9R-oj z?D0S&DZU8CKTX<+CRRLy?u^KCG`qR|VD;Vix6jB_aNm5W;S{@8+IZkh0i(W9UoCe6 zK7>q&I67TD5w0|d1Zvvcj*$I(k}@AdTXtx~*)lc}nO8Iemtb<>B69u7$xFd8A!EX|uCK%_I08n!;w&6{ zA5{Ci){wzb<@wx55ou7>dB8T9IxCYTnrS+PMStu#R(~s96ZOs61SHmVb zIXUA(R%;o6X~n#+btCZ%9c^?APvG8~on_GMYtwrF5|kn#s8qlipTK2qm-I5%pZN*P zy~$!Eh20%)Vi}I;J>_{Ci)PIgt}NI4uXtBsJ-2}6bzGM-gC0(I_xm0kTDdskM3?djnDzRqr<$v_+P!A-WJ{u|nDTkDzr*s(+TcaQ;01uXZ@VrKbQPfxnys${uGE zwH~hd*S516slCd2O;H?$)@Vif&T(Mwy3<>7*N}h`6O|R?4RoDw>}RttT%*4@$Z8Et z)p9q?bUgun-T6U^@kUgM^PkIZrc}e&+_Pozyx_oms9}ntQVvIJeos42^rs9S>Zp&=W9iaj)tr>S6 z@wKbHT;zP8xpVD&Khm%~|HaL#2iMB4=DrBi7H}ziWVrV}ri0_R^O`3#g%93WB)!+Z zaI5#{#N0$kiWGj-XH^A1?o(ZhoM;=}$8-fWZjw~784CELy1-4nzPtM-j-0BNxFgniGWquIkePb*xoVIRSDZ! z^F6uIR-oPt`FBT+t_c-n{A@hByFR4oK3a3ULy6D;yWqAIck1$Hgh61W4bniw7_p|- zhYmxWP^Y3k#;Q&g`4J*1PWk5dpZ@r=@j^Yf;YTX#c1$k+Ln@l%fB&MsN5>^Vc}e~F zvGQ}vb*@8~Ex>(LoHq%-4%4DF2fJ(yv$j$E> z+a0GP^IRfr^0b!$7&QzaGRX&Z_ohEb=cVk>%VV8xfCB-w==B;R8S+aJ%YtlLOG~Cw zz;HY_>}PB&r?};Ob&eVIl5Q4H^(weB%QzBn`dk4#^IBR=S=_rcZ#c$TtNhBf z=@8TwX8;vW;_$~Yn&uuGl3oqiJ=UewX4JJ;xv9VqNKgKt^a3^IGX#})M1v{Sm<^C_@T_+0zKY@W1RCFWY zpizmNAX}PFW4FF2{B_pI`0*W-?U&+W`=aT7cxJ@0EfCYa|7652Mm!y~q~yG#dG5Sa z{X9;(4e4mOFKMzWT;29?Z{59F4@Pj>(P{UJGAc(S)bILEpjYC*=pjs{>H(cwer;lX zE6{1Yp;ql;Ei;e283A>Y?TpF16}AUtqlR>pR;1N@xr+tp7Pj(E1KeMs z4FJvL>RU-4E%#Q#uWG4fU=R>Cf z19WVfk!*oO?O2(8oE2z=Ak83%6p_LO&n?#G5{212*QVOEcXI-yNHv-b{_L7Ni)9!- z8j$u{S1N*EJ&W}?ItHP;`q1v||6Ly38Ch$(S4XrcfK$$!5f}rlzL&41~L=2*20ia zWp?(d1Fsgr8M0YoS$lbE$JcFJ04;kZNR)xz2x*OWMgQjT(tt|>b;r}8>5mFBn#uy} z%UV50hdjx<24oI*;OYkyi^v!9=hi>}sRjalmEu-)Dd8V&0WM4KxTf)$EkN$A0-b}d z;=*|)kQqE_%{;U_G%0fz_^xt;Z@TtDzh2i#tS2`e5!DO=VdpxZotCS^=GHK+DCt$X zn)Si4jcm?#N=JQulJq~?2)GbxTE9XjlZA~sMqWFhflgweLZZ5M z`RVF}8OmXQ|9Rf;=Bli~1hPR^xi4EL|%5OonP$ozVS# zP@7UUtJsAN2XXg?k7jb$mVsuoGGHPY0HWmnAjoKXxy1zS-eUV;Smg6~9zH4S!MHwM zIog|RfPmi3avQGr#`oJ7lL8&y0OF^Ux)m^te1Xs{nLo9FHnAlvkhOsg>Li@++qB7xtg#?vle4MmA!Jtkg$J9Sh+Vh_n>s?M&acO{}pq&d3Gzg zyp?#(kK}82P4!rpvYMCQm{|E4K`gK}Lfwx(cv@b5s%e!lZ3@hrWe^4Z_{+(Q=Vge% z9lc!{8Fh|31`^%=24GX_U4Vl3O2I^LAfNw;r4*ev?{Ba|?hAZ}`*?t&9(rY}XAZqSY*uQdQ@w zeN>6dumIVucu{tL<7QFxxdwG#Jv2p-W3)!G}e=p3~xR@}K#pOE}hGR`6hKtQBo&9^SaeiJbs@L76NX8EI@uAhW8*USZ%0XIhC^znmGqA1wqC*e5OtL|g z_jJhmXU>&j7i6V?3K?QB0!U4h5RX-1kJ=HG;=@t!&AjJrj+kk`#H+h)UKy_{ zvfrHQC7R^wj^Uq(Lf$O3b2UiK-{Ak5dFcjeP(9dh`wG?gx~a=p0LXfEY~gn(69~P_ zj1mn=3soT6tZ6W)@>WCk?=Xjdgs$eF&?bqO=IAgYtvt_f_$pQ8eY(QLf4&dO*c7Mj zqvQOn_acW-@Ol)R^JB<)8Mk4>&oy^E=Tu@0mIg{rSBo>0+o(^?PcFZKXgoMFI;xFw zXf^Z{?7c?OJIQ$ZG&m;1DUE3z`~V)j6L8U+*J?WZj05_ep5yi0*2#6C!pr=83n`&X zWa#X*`!rt%c_J)&s@L|WEZbfmw0hiAM`4!DC*zQt{5}5FsYE%Bfp3hCvHdO43>JV? zkG+%`*#PdjyNF4tZ}rK2gLgNdr}VQuJ_ABC3uwfUh`n*gv=ZPSt_Pv2goe%K()!hM zA%pxHS?|02{vi3_?r4VXvu&0QHU;Wa@@Zw0c~cah8VH{D8r^d*)}~7a(ov`ZmtiD0 z&~N(+8)SMhPMGb*w&pvj(@#(a8W!ldhBjvdH^7@a%3XR{wZ9Ir&#mk`W+@R;rN z0lWj?QHO5q(w!yYYgZqLZRqhCVHV4M7w+ydh)Z|6e=GszZNztMvQhGtpN%v9)Fj+3 zc$P!VJVo>4_@K;F*M@^&micjAWN8#(d_A-Q$0ln*d7;rHS>%jddqej0fe8Oo--;9P@V@YjP!+Y>Fuo1uwwNc-K+?( z!5vZpW+2=Z)W`}Hu)wXhX+N=fHyive*S0v8-TI2qeeVzesA=c_xd`I%Tm(=(N) zyVre-LM=K+gj@O^IU0`~4hC#14B@Xzrj%^HBz2jDWxnaSFptFF=2|T_Jm}$|Ie!1z zL!UqC%3myn|Bxo0mHOD-3+j`yMlUL&|9-1};LN%9H%e1(rVh&sdZXtFvu6EP{Bqn} zBVkg@3UHAcwR&5`Cflg#N88AVLcoIabDlLt)6gs&cZ_Yi!58)e={0BC#VHv3=PPf7fFI29p=)?{mPgybpmzn`+jB%r zFv7gb)v4)-Tu)T(UE=c4Puh4$%X~BCT5??+`sDS*Gj0_1x;k~$Tm$JVaz5~*@4|Ok z&&g)Wa)5fG&yw>_g1OwflOUMtUiKqT+;s2nmq5NRspGy2% z@E5xLvkd&3pa#;h9ox8GkkkP@4s`cB9PrG`C)Hj=OvP{_0NDXq)27d^E&$G~y1FSA zQW^E-Ya4Z~U(=WZpRY#|ono61qG_q#AV@;ylAg|YIO@2aK3=<+cd#f&4ruY>DF$Ko z(~^dg0wQ-(FFzo=ZzEr8GMhO`1eSg&0}YeZ?>R{TNXHS_M_SJMJ-|Eir~oq{L@}Xx z1<(ZE4d2?SOS{(JWJ^yMgUb#-aFVOY^Bj0cO*=}oLVde%>MLdNOB+@BrS1oSc5Y9q zruz+U8rt=muFT@YDC%)H@JIMs7Yeeo7KWrq*S`xna_G_BqafAI@Cx-QQM!&T>mSP* zPsEFmo4$?WW_7+!6bNf{|5oHf>tY7J(4MW}LWP*C+snr>@g*d4N^*@p+-Ly)y@i1f zarO=mWuotMlv-MDPWCvbR}p@271#%ZCv}yd`!<_RwOr*?!QM$0T}b?3_~CB2LOtX_ zi~I8Z$19_?eN9)vsE(+0j=5T(=a?Vv+A%x6pqUdE=-|qT@CMBWQo{5gnCh5r%mxAH z`&i}8_%Yu;ZTE+=;|lvuM_UVhZa`n6G%sAdL*d+|#hu1|&Es=5w ztP7cZODU>L_LZCiVZaXeZ;}g|?qlJTPndQqzy8lMe>0a#Ti{P7a-2UYiz;$t%U3=Y z6pk4_>fqo0UO;}|N|atd#Lt@XOsB<^&hc_cs(pgO7jZC{`M6JJ$rNyPExVXW>h7}~ z8BW@Ece^t<5HAg8DT73szd~~F`{@T7=9bt_fJi)^-m-kS>Y%WZe#F=;*OX4rPr3N1 zgRWt^IcNYBw^P>4%>*y<7%}bVkrCHNxP$Se6&c}+exc0ir005>+0Q?bfY}PFa0JzG5WVLTP5w@Et)RmE1 z)!-v-P}In`_iV1W72HYMYIlG7VHw9mMuy4~$XZ@J?OTWXA7#h4b(GhyDow}34%;AU zB8G^`+9ueysBzt}gRL@(K2OqTZ~x^6*WHPTIHuEcE{`&kluhdlW?boa?P*f z@aLz#<4dLwXY)ud1BhFDn-lfdb-FSTjdQQBVJ9bH>V%TXfb53vx(CngX)KTbM+u=m z)+*6_{P)JPQ3y7J@sqB90z)VLfx}c;qcnL*89B$ri-t8 zhq6g2I9MA+8|)_d$Y<26eW)k*N;hM?uqYRFF(YU$HQCznlgm@TonPj+vlab{BB%kh zR6THvNY~WkCzXp*W?c=w8q0LPks!qWW~Ae*&%X!)BiqGGDt=2P)d#R&obww1>KawE zPGa;PYz(Wv;|bDzct_jqhD{8t+p_R!F$=h2@T;u4#Az`I#~2uA%-=M;fm{a)h7*Lz zCH(?8w&(Ja&leZUD`k`!wh=9qv7|NfMjEZa=z8xBzEsVLZ{idIYLZ0@VOn<9VC5K+ zxX~$bqaxL$mc6Q}G^p0z5$`^YAn`$<&5mk^Q8d7%sEB4( z{EAe8V|bb}QlqBj{mJ|IbQ;eVvs3IHwICA;rX|H;-84#IhPNrG+xq?FQ@h)5Y@mx)Sd1<=(uR#f=WWnO$da@%JeDqb>o6>)-889?j5L>p5PMj|Ol! zQ*5Z`D;SVqUN|l7Xqz?!uwdP)YK*^hvB#EZ=4y-OLEey6G>S?jsmit`%9V*r zXcUq2O71@0=g!w6csB>4Il(2ymABms`My!mwFK8b_8i04&lo%EQMYihFMe_%qcv9x zA{ZD5?oYEd?gL=5q&Q@3r5QfPinthmv$gVw$g+$pG>GHzejKDm^WsfhWjHCgZ&N$W z7u>1Q=Y-+74a$^AmRK&20`5;Oz?ul@5x!YW93J8HD6w4xEOLdpKJSjWmjj0069v-RXj#r@8RXYeez$QdSvtP#My`H_^zYZsxsRBi2 zg}u8_FL*Q8j126LH+I$RIXo)C6-pu&+$+nbC&p$&34ZJFy5=*@e)L@=$Xg~9|s zbBeu7r+lxUX?3ZuATi+fXeG@@ATN0l-`|GNSOqVWV+uD zelWNcF+s6$C=;nondx*fZn{8D9BBwbO)w2@gX}>Tm{;GG*YuBhOLG|whD5LN0xE5nw3Eu${S2Z?S|)ln@tY0PhX(*7p?`V`k?n-I&kO zZkD0zpZ!7Nl_B7>*phYAO4Z2O);UOQ!f842RRskv^++3%C!G>$Ta zEV>sBtCL_KU>f*Vh~O`wskBxJEBMahHXnDHt+79Rtk@d|&#dzC(H}I1MKDARULo~% zO`K{ocp1UwXuxF&6J4wewi0hT^fu7b8R>l*^}wpmS4tuSfsfW4{!qt|hiu=m zp#g&3?&_HKZk{UsE&MoBtYEQGvBLqBxYXr&)Q?v5p1FC)SN~xnI4JZ*!CT4PtSe8l z_z-e{I6WS+1A>Wb@I;7PLG?i5uZ7_{qJRNb2>C8;!@(SlbuSaNn1!6c#<8^@1olo{ z%RQu-3VbW|b>T}4V{CV2$u$AXZigaocTsSTz~!+JaM(op0=l4FHQT37qBpzxU_77T z{cYw57r1U^F^X@iFr`HTUUzIYJhaa4RN*x0^S}3DJ6@%~z`v;ITJrM3e12&M^WEj@b$T)2aBkSPejtUYyMNk0u9d-yfw- zmXWPvZpZ1&KTyz3^@qZLE0Z%>>VN}jx0r0(0_QH@%-u-m^V^6}q-P%ad80$=Q+Jeh zx@`WCY2Ge=+b!mhEhk0BC3(V#PJn{#88MiGb(efeI#ISFg9mg5z{xp#+$dxC#(ReT6sDNm)yH2sV;%-d)X+~P0 zZ!}OPj-Li-1=g)sy!(hFrXd>dVvLX1OoZSI`4o|0J~=<;7@I&NB6tXj(bpZ9*-FOw)Lh9BFcRPA zt4*-+C}@pOm<~)w(9(dQawM3H{Wj58W`DzgzklNSRXcE1Phb;(t9#MQf7Ngd9a3Fl zRX@;F(;5fP`B8M__KTi{vbPb$mi2* zdKgWFwDSgJ@CMK45^tvxb=5e)hT}Q9AI9)CVK+H~`Y-=ay^7KE9~+C}CvPADs=jKY zwD>pL^#}C&%R`Q2D+Dr|jK}yWUwu^k2WH!h(2Z~TLrpw*WOHNyg&n0km@(34HrNMw zmGFNBCzNOj%u?uv)ekKPz(r)}G)S2doNUcYAmq2843zt^Q^*~m_~N0l3W<7-S`i*L z7k#Sl^`#wUi;fdfbc|ZC)F8h;7Xuhs*!E|C_oDgkTZcwQdNx1o`O|CPT?)*u%1nR6 zUFv2l4EwN1V9?i)rgQg22IB7AFEP_6)Du*jidxrz*FaU6Y3^b{tSs?zime61c8;)i zjx2tU51@PQciIS6JA(day9!P`d}zBdpwrVib%*U!72KUtUH)Vq}1jG*}pNgV^{ zz6|pQ^rCZ68FEZ)j=%z2iKii#V z2xeYrXWg>K#($=$5-mAlz~X}SX(eRk^@Ocif6&W~dcO!eFP~&$6V^`(XB#bmy910G zUH_}NOTJ$BrxL>X@mmz5=yct7*3>vT!*q$*GuaY-t}#N`7U6~ewC(o{*e)rpNMV;= zcv2(wL&p5sddl1@_n*oejJPUa3IL4NTwZf?)@N);;TiziJ00wjH2#j8L5T z@m&)%JVC|19C?D(hy%`*c^{$Z4Da`?|T{`$!8 z&NPY!@*9P|k*|TP;6lOh)du={lB<9%JyY-*0%6a4kO+XS#Ms|-RLM3xoTB5jv;}tJ zF4AYSTdrOpcB|D4G$b&psb%*Agx!hw1U|KKG6;E43=h7(FUXXbD4G+H=by~k9M{r} z6^waT4D>E>72ZZ_Kf`+QAcsUt*zfm3LtFITw`$hiI0F8`FgSfk+wXGS<3&N%J}@QG zR5Yw#a|719uY}Um0kqld_g6BJf3-0=Ep({nhJeZ<(3mJ1BtE&|9oEr)x0+&E){!A}4CheLY>?!?( z$&gp~;g5U=BIT?Jl6ZR>HBQY`ov{wTZO;I43prMY+g9GFdTF&}{UgK%&l@-yc|vX3 zmitf_c5R82a`NdH1XjcE7WLF53(tJJU{rQu(aZi>Fo`7-Ba6nKtTX}13yRM#DuQL~ z<|^X*s24JR83?9*EV_Zn=xVh~0}xMu_1nUm4W|25IH1ySxEk9klj_R{dDyC}NFmq| z8dPGk(18>y+Mk>dMi-;UZiw4W2usiR5-!a8&1+F9ZCKx?Vm?mISH-H`!nbL$T|!zF zomgq3#+uhd00U5k+7Z1fZ$V)dpIZ6R)pn3eA7+9+SS%(Hjvw&!!gs*26%Ld^y4N79 zp>$z^67;<~co5I87DwgD*Q#-VKY1w7k@?Y24fF!8oxm*l61clGDn@!osb3n;v=Trm$YiKL- zuoqAL%!@nAz=QOHw{9|1n29mS#{~Gdbj7X!JIhDy(7M{)3Y_}#92eR#FcG@>EYq{~ zmwdexTp>+6L?L9PrLxr%(z_Tmw}K0?Y`I#34hzOEsTxmqjl8j10`hwYZ?vXCiwj^L zocTFUo;Dg{OAPF6XEwjspo9I8UxTwBI<)@?QOBl+rLRUnIL5(X%p9oNmv(KVBBJct zDN@5dl`B7GK*B@HU{LZBM~oYqAVxW$N{DBE`wrF#nekg?Yr=ufT=&)o**kB<-43!0 z^R6?wIRy7^-fGc}35b3+AIJWaBzXIywg0Q_b5uZ|+f27^46RjJYo`5$loA_p_aY?t z%o2l5gMlBP-^#Ge2clV|72PAW?ADlOn1o4bMs=r6H3+u_?<_BPxMV<@9q_x>VO7rb zHemzw5w;o=yuR6=(>08<3l6#{yl=uLW_r8!Jwdzi7mK@pY5@o0lYBSz?dCxAsH@)j z?u5uzw7M|r55Fy%#uD;h$bcfeon+(pOy_6o|GOtk0S#}d!Zd#u+`yN+=k!nx+VxxC z?~uM&N09vb;*CH=goEv@A(sHxcYV*9HWsyt`L#C=b(E8F#H{z!BMSkDszcd;lc1#9 zwm~{9S*rQEG`n0<73BYpL)S1~qCz#Am|@;#G6_#@ST!Yzwt zKo>#WK0_3O+F>Z;$KWuVFF+TfIr8le-=oaPIuJJluCuef?T@d5Sl!_DmSg|Y{o&&Z z;4(9@ZqfEVOR^4KTn2pX=Dtd=J0k{=HXbi8>0;JuOU+&ZF*tQ&{Cb?=ro*J{Y@1G@ zM%bB!8!&Kgo_|xLD!7)1UY#8w?!e@(0>@W0X~$4)kFN*J^hQN3j-whqr&^OcnoCv* z^B+sH)`O9Y+;1Si#`v?3_q%Yp62QE-OxSp^J>!|q)eUwNOS^)s;Gzg_mFz8*Zxhdd zMtzY7+>8hu8B#KPc>m_u#B&V|q!ES7O&B#4(b7Xbn?eG?ExGy{oKs~kxr|^%j9VOt zLI=8?%?M^;;!7x_?6Q^}_WS*bMuLXv<9;2W9agm`qS_p%=f09mz#E zo(mzO$_D}j=^DXp5GD|)7DzPv8*$h3JjNyT7gV4if+QlyvH2XyVnsF`MpBg4_q8z%lVACqUi#j5{#p+S5z9$%V z+#IXqx|zXT;iWtG^^bNllRq5&q=WXG0s`jN`}Ugu#TWI{@nhBv3>Jn@> z<$awOB?_Dttxuvske`j9bq#>|9n*pb!P&zZKq!c4bcj&`Lt>@*qGc85*Vyr6Czp>ZA@~eK(tu~(-q~mH7Y;fMly9ve&|W6zC-QOeha}juF&h! zy>kGjw2Adb<3QtXD#0gcwsE7ygSE4R7llHA5`O3tO-JYNr-h28-z|8H2vOs*90<$# z>|zmy3%P0M3;uJYTJ!+gA5>)co@?Uneo{Y~;mRw9Gl8~s)Da@;M;0iDXA5yG(jirH zu3@EuA5;6O3divWqT9o6pbyNxrmDde%vWZefRu$0MGOmV0j}SYg`o#R46!SHI!fJJ zR+k2oG&6z+7h#vGMq4?70apBM1^20i>STQr=K^ zxPQa{BkjB6n%vXtfOM4Jdkakk zRH{e~0Th)In)DWUvsDy5=ic9YzxT)eTn{BA`@8q-nKf&znGtMohA7N0pJ16RL}+^N ze2S3mJxO^TPfcXW(BRURYYwYfYhBcMX_8Q*I-CWC`2;iqbv0#c#zNe!{7Eb=9qix&rD%)r_0ZLYY3T@X(m6$J!la0 zZg<*Gg}8t z?|qUd7j!WSP<|7&_xgmfF|>lJVLz(Z_9J&vMRn{kUcqoG@4@hvqV4?5wQGoSqEEvP zECaSvozI*Ej7HAy{0l0N-P|;Fq6Ax|E$!w6>xcU)Q7J2sx-g9+ZG0Y5Ui4%hJ-^YD5=($ zAsvosS|wxESYZ)x&)ZZ7piQ~4E~_*GI{}=r^lL)pI>z)%q!$22AOHJ`QzDy;9CQea+?2OndG<)yu)U*NMWGST+LxQy z?VRER$VUK!pYMZt6NTX*#kbJA+fQgzYyzJpZgXN{q@QtjmaILv0Ddqy^r0F^#qXG3 zIyyfa_PbVltJ@sqveIY6C%=gdOrb_n`3^c<+ZEg;iA8A_X3yWYYTBu`PC zb#=4yazWvoA60p!w0THrIJQE7H|F@EOOOFXnJF?eD%iXkC4GMuYKskB)U1U_EsY{| zd2sxaJ*=vV*(|Xno?p=o1N#1k^vnF~Jhu`-85{^y-8h5sdhHwJ<#3v*?aA&z*q{8lM$!J!_f+8sENP z9z7!UQ$ot~Qh_^Jk+TG#0<&KA<5h`UuZg$pIat-I2W-rG>b3-SD&en#+w?VyO@KWT zReXB58Cryv*d){4MV<57#+WCcqt^%H3e}r;Ns@!A)q2hjX+RIDETM26b1R$d)f^#% zg631uhST4Ev2ONc4TdC(?P#|x=ZI=CX7N4yDnP^}aI1z@ZI}n&&R9DfP#d%S`$^&? zCkIQ6t=O^)1^Wb;6X+hz#Bpw^t<1rF5xaoD#>=&hHg5pjnc2Kv+0D{U34AWyp%3qr zBJ50LnUbFZ?H$3XN#8l3^h<#00rKfOKcOB%Ow+!)BO!qMSJ`zqB-i-wdtt3yQUrF2 z)8trw-g9v&eISSzx_4yK`_OdzxJF~4V)b|*ulqo7Xoc?N2-wS5ui$XFO94aHD3j;T zA?-|oug`cWph9+LpZj@#!(>u>d4Q!bPj&t5agW0!-}Z6c4ATox6pV^LFrc>AcM}Vp z8BaIPD%6zsW66EGz(eqnXg8fPh#KgO=q6rkJ0!RNZl%e^6d$9vP_B9=&!lc5O0$fp zWceue#Se6nqB)<|Ip=#PhKLDhEDUdNQ<`@i4~ z`_e}dDQZ~Uk-p+yNxbjUZGH{ ziOF|tfZQ~;Zh}N>*Ih7mLo`ju>T*AIYL605|!KDPMW_T(dR zGmkd4sujbQcw}XBnEMQoBuWj&*{QF*0ud-GOgSYvuX|7Kr@sIk3gByg-Zb&IK+@i- z>dgt=j~os8_QtyVG296>Q%%k<EdSxfKDQTi6hxJ zm=G_1B%Ln6r#50|dbY^`HDH}Njxrx>+H#Pjn!6VboM0_6n<>unB3cVr2 z&O3Efn>CYf;Re=(#1-Ey&BBUcCgT%k&wMzB2^`B4Na46DqoM4fN{kt6HJvy_Dl(3} zRPq^!kRl|dv<5-qoi^8!QH@5KgeIHmkz;F_Y(&xV_9hd59Ph-Tn38dDLGG&-O`7y9k8scEdO5#!q|XSKI2q*Lc&p{qp27z23<&jW2CL8Ngi;V^ zr-#4wa* zK+r$&1@aUzn#;+Al=MRT9uY&DTCrFoEv{x4A*xR%szy7Rb~a&L>iG}@KDkHv%2+U8 zp8oi;4!Hd1!4fE9-7I;gFy6#3`|v=p%f~zIyML#I(0M$=NG@TfdAwh>KIdfcE+GVX z$FhWp{VN-x@&Ut4`C#CMH`E}86WDXSJG%y$l32E%(N^)mVAgq-Gb`3lH=VQhkvcU; z_uvpGYThPZ?>2FshIf<&YO`mnE?(YU1p3A%(T#x&xxO2VhGP38J(;i{cn?Om)MN}~ z8UnDTZmOcdWNm1b?0A|t;dv)9J7%b4?+GQs*=9BRzbKc0r<4IC>$WXomyMti?KH&3 z_C7(Uo_T8l+_)!d}9cvwVCc#LGPF$vy6cA=B)g+b@2EwQumHTFU?`&IzKcV4pE(0p8NC>b#c z_0^9WcCgHGtYQrT8|ix25ikNdZGV#?8lTlWT5TI7TAqICR*3V=*4t~{`gFI14z77* zkDrDgI(gv=LHM?T(E@0@c2joIHs3r{k3CJzO*Y9b?M>bC&R!v1hMI{7n$ZrNt0sYP zy3xBl&n+Xk|0Co>agFOFcwcTg=vLy18T4!Fv7deZ!~na^&W)=R-o~Bg=ruBn)XcX z?lih5%8LNdA~@tR%(V9qI!zv`E7#|&dG)q}>*u%nH-;JicF@AYR)GK{aLw6;DGK|n zWi|!(jV#NS+9;P5dhm+fOIb_am@Z6pMsU4XsRFj{idWX9aRre|pKUU&%r8}&kBgXG z1CPuoJEy8N)_Bem0(ROgN|>m_GN*o9onDr>=KA=^A)WAz#D@h(6u7IlM;E?6`(f83 zU|t3CD#p`2F7?JrUB-!HT)Kk02DHxWig@zJ#D+b=h1LtkjEwd%HX#^1Kd%V+#J2!J zZUAxzr|U5#c!L(EjyUVQ8WOD}b7lb)IL$zyy#N_hF#9{~HZ7e2uWZ6M%Y<)bQhIm|@$&R@I!iVHOq=(Rt2;Si=-!lL;uZZmeUcV44bb24_YN%Yaj z{#uz1I4=@GIpC4ul{p7AvJECwk)3r-ydPgOTgKF2>vz`&U2FT`D?MmaB(c*zqz^pr zTE^PXO6Bwfh`7yPm8j)x3*Cq=0y*yplcGaK?PB9C(W+V5!4J#{(Y2(QNu#lmFHfzN z9FBC{+wSx%J$%+My`s-vt0SIytB;0$jUj=xH~+|R&Q%AM&|^A;!UMit%S|^48}!e| z934Kuzd$uyNb8xr*(DjpiIW zPmql#-`#KkR(MxFTkl)C8Qyr!z~HmoLiqHvhde4oS4bMm(<33hMso1yO!(WwNr$??H7{AtJY$fv z>P&2*qM;)9Ng~xKE}%~|{jycj3I_s3I?zX(UWPc&!DDH|gBJ{-BYvOAozV zQ}8+owAoPs8%We189X2XPfPWH&5Se|Q(p{%UCfF1nN82;Xp3O@&$A}PQ+b&KOluA3 z$AC6YVOFY_S#KdA{P=p!B-nl$^B4Hn zswG!Uz<#;c^S&Ggm(&?M@blC|x`MTQigB|iOJoT1JR39Ch(8-*?3EEFWj7`e6#lH#21TgnxZgnUV-c5jOTlzf*Cpe=fDh2$PCxMJP z8aj!mj0M$Bu9JEtEi5wIu!+FhQ*J&+k+*y{IoH%(4VU@F88GB=&FXda_Dnt?EU}50 zK7LJeYU27j+1qSklnk>6haP0(U_?hNa^SGpXCmQJ@4hZ7IkU>S0y8Qk)m2KuUvp6eV$ zrhCglQ%|@tufhIcfgY$g)z2Sp zYSJZty_*Df+3Kc;z21E7d#zuh+)y836RV}App8*?kg=9RHINhJXE6=&?AD0^3M_(+ z5n+CV(il!L>5qWpSh-I0r*dAKDq%jQA%`UVdZ{Xm7G3&=v*R-Y8IVJXo_OjhmfdFO z<-;i_i!)X1-kHvu5P3fDkQFwaFC$X*S(g!w@K-!1*2=6=v+8WT&I~ZA9uG>2y2iJ6 zq_!T%h2ogT2CsV$78$ix-N{1@+Xe`bloN=2WmR!bk}T}S$DUdO2E$y zhSh!nE2}EKF~KGg{ZLN)1fNk7XKt;Z*|U$i8{;`&_p7_Vqna0F&dj+jOu9u)x@r!w zKx9rY@4L0ZD6-`^2ak1|0Gz%n;Z4UnF8t-_5L7WFhZo+7w<^HnlhEDqMaFGx2WBQD zY*wk}n9OxVNY8;O&B+wSN$M>+=H(5OYpdSGb>ApWx)TzrB12loe51+PwCdqJ5Je>@ z-9;f!bnoXXCFE`K>yCG99kNKRelsUax;1tHFVy3D@7h=y8Rzp4Kq;5ISZr~tdSpQ8 ztq)B3zLh=Zgye@7zx8u-a~U&Wtq1_tM;U{dJt{yLLJqIu!g)gxzsutLF-+=>9xiJ> z*U_+XD*k&*fc5ox4+0wD>_{rR#p7z2O zj`ls~RV!W7gum2?huI-kPY=|@KWW$fkPLPPfw)U&Yr7#|OoJ!nk0Yqh_69%YDF3$Y zV3^P;)5aHyvtg5EK*Kf;^buBjsz~>iyYlRR0uvFoewd!$Ycc8~$*PPx(4p-nwI z*^8(KB9 zfmMb_ownMyp`2+?PVpE`b5b#(E4Dp)XcY{_*o*Pv;F;~%F;l|ag7>->#?^2Mo5iC{ zyu%`@)odu2)hXE`SACw7cZa*YEK3;qkGu4zbnwb?_hQQsywq>PD1CzVOs%QJ7xEKizJhe4A>6>{X>#BEH`RJ?*4&5e!|etEMk_6uO+Xr zfwuxp#@ixt>dy#>O{2T?pR?hgyYE-5{P`u&w*tvUdfz5Q#oGT@r{oe0^!s1_P7M5G z=P!YU7T+KI#LpkSp#ux!Z>V4PlTNd9hrIru@A^mF{`p?Mr}ICP_}{*cLVP7Fpj0iT z$0L{gNwkasES(4cx3A4r1jTrjb@FCf6%)hQk}CbjU;iooSWKSK*MF!AmwpM}`_dov zxB<($Tjj_Pf#FCX9qpeDmc?r2A0Jfl`%3)!`j0iKSO*bi^hLZP=aRru@s?q1&95K* z@vo(C=I1y6?R|SN>`~={=FXfLZt9P9UCF$Xe)*k0p8TS^`H$_nR7?vmBX5P4Rp?5R z7aape&3)e=faBjQeL@zofZs62CGX(pW?G6#{@i!+^gs;Iqce24>HXskV)Wg={_$u2 zpI`dIDMbH2W|>6%{ZkM7(e3(Q@35Wl&<>9r+V9=JAxz_c`zmNhd{1+JJk2zINQvS- zgTAZJ~2^i{b-ooI&(MNB+2Q z&@ScEsF3-<6atfDD{^2yqY*;pL6(vK_V$Jy5lO{Ag7vDEs+eDk_2XZE9KVW7=-@Up z9dd@?v6aD_;opCu!ixb09A<%3whk>Y*b!!fcBBRPs3RA(m@GoEoAy`$Qke<4O_juE zvC9vups&|aT~!LhG6s-j3#u+My1ymbY_3~&6w1WzK_W}A7?ehm%6v4REp{|^@x-8W zYVcQ>@PBzA?mY6HjStTMOnh#fcHi*F^I+zpCvE}zB)t0hckE7}ZB78PN&9ZJ|%w zi<&`L(`~I@A&pFHY)!WB(anhIhy}6&1t}=qq$RM}IayHcOaLsE_aqrAC1_q$3%R;E zsL+C-C5s%J1AuU7?gg@<8zpk6?Iz_&7 z8VyialO38s*pUT9xiTRtSdTjPgQn~3y`Ouvf}LUPKkUOFHeVhVe*yXGWQr&Rar8-W zjFL;rv>#h|KkF3maT1{q^F`7(7znso5DL6czd0;+rsWZA))pYNnIM_MkQ*#r*1k(+ z+AsvHKtEwLO#VYDF%ewN1_}L+r!Qy`4M+n)=fFdfOtNO4Yj6aP=;clN4r+=E8E$|; zO+Z&KzGn}1Z9b7B)3oU1#l0Y}&A1s-u|J;I4;91|?4_GSV#bO~zHg-AKDzYUO=k$C zje_S3*Qd-O7G0o>1Ut2wO#r!SkUT?`BU*OgsX`JfC!0bliVTYDZRfE}2Tt{8GE_ku zaO5-;OV)}mZ*4DzBF;h2=g_0v`X1ng(C#bsWpj~lX%e0`$04Py4b3Yg5-9qJ3|L?_ z$FoVLpo}=FU~S21Q%t{)+M})gq#<653~b)E58(X*CV+NtQ|G_wf@a5%<15w1pjnyo zk6h(Hbz+F00{bUutA-Y^_0zJ0|{mdWtJOmg-5xAn%2}=4*7)vBnGsYuv zAPtNVVe}oySQ;x~T<(CgLP=qEJO1s+;btdjSD=dbsif`2cW=SRleRA&`E2u0ZYCwl z_RJYQhR#e25R`fWs^Rx!)``AZkY^41m)G--izb78~$0 z(kzqFsJvF7KafsJfAPNr=7)CkPR&f%-Ef*4IB^MI-<}yNhgQ$jIPb3y{%Iq9-ha#4 zjF2P3GOo2hQ>AGIciAOG2v~v(n_PgIep1AP^;5uhmZ|>6#Had5;|1}1VHb>J%&hX? zwcNDNMw6j3ub2enh|14m>t?(xa`kC*+5F+BU zbMoBfFjQC>^?Zkdvg?L>z9nyD9Gbz12G*H+rgVy}NZ7T#hO z6uZVbTdxk6XoB%o@W(yC1*;g|nylX-Hvhz$vE8L>jl^E6qhx!3)`59IAhq`%orRH+ zuT~$Ngw8ti!3HT^=7*<5&&z;dB=|nhCZdNHzyuSCi&D5sPDX4P-Qhoc4WK9Tk8&eS z9W*ZoS z@vDj}^N^Pacy5%DlpykNpV?@B2}Iw6wD9x!z=zG&PA6Nnq`hhfC1bL#$2sugtUnmP ze9abZFvh|@TXy~X=j9q&S-bJS=fQTGVXD;zzVScO7z(=9butEY{F*Z^8JJ!uf z0fF;m@(_StLM@*`89lBXrW(T##+I21JY3|j;%0zjg1%rn*!dwppi6romS*nol`OR` z1d|_Nchvejc4gjcp9i418SpvUM9l%JAcW9!Z4)q6!>-6G!E?|HMj?_x?12ag9I0JH zYbf@hHhtBhhp~o~Tyqw23p^wsY>izTb5>ot|2;efiYu1fXWzf~qe8@bgC>h%^o)q= zlBIcv{Q+%#zXS?)!!+$JKy4ZA_rK(u3Ju{s5w4&vONDO2fs2L;ZIU30NJL(!w+dk} z9=v}tO-GW2j`Zr@L7l>AG=#~(dh20M|dJn3%06#gP>56B+7EeEE; zb-d3QT>TtzPfyvmLrcH{L7q-x%gd)tR04&xFEu38f-7JDj?~yiEI>WbUY)dKDi9JG zFo7Bo4!;IfbP&}6SwkHAl;__F)of|%7C#m~0?JZOcv1Hp9kNLt_oGHEFKkI&&6 z4ouoXI|H1XghVcwWP4nlQcf-bTim%2DA2z?)^RJkCrN}{#@{pG^V=uc5L@!;8#)Qr zv-8oDUqC9*k6ayLdTle5VW!wSgVGO&-M|`%AC%9aa|j`Uj-0i?w>=;HIv(=1LFd4_ zewOz`StNg-E*caIV%N88BI5LYxV29OhbT3ZUZCFc?DA4xfN>fv}{45-C|K{02h z@?Kf0H#e>prpuh5?djcC=Xa=L6p|n(LkUt-0TzcK!1v_d|A&n>=AZ(+)m`X1JF| ztitDdGo!{)CQ898@^tomws~he)R#UngelP zl!*;6$?U`OT(M;~a57ay7-xM<(mH`b@%Uh;`?5Ax=1&~^jgIDZ*$F5utg;XW$v>Jw z=XM$_P!b@(%sZtKp{#0-QH%Ubb^zLrnfG=m&x{*`tHTMmd@g2YSsKum=fe5D12{ao zz`?s?3k(TaE<*D%R#m+_TFNBs@FEur&@Q1R1C=|$$1lBb% z!H$hOW+7s!Th0tm+&{7B81Ksj)gjPgnuD;^B_V42L~rKVP-ZL5(Cur}Jbu>4kbz!N zcQ^P0X84hq6@pRU(;s=%5zT$^5+C(oV>yE3IW0uSB|)P3LSp&^6uS7+ae$ z3u#PXsUG&;WmPQ0thUtP{IOihVy|{FtiLS!+(%Epf&6OGZZGp zHyW6K0n02Fe0^qPlD;`7VeB3O;`FNQdj_vS;Q5Z^OgeyEan{LB6_ZsiC)Ng)rov4< zR#R{B3^Lvr@VQi&d;^nfx7z;Afd9I6{J=pNKllZc0#OtKqizBCn%y!zEb{j?=r0f6 zMyeFZZ*AYUhhA=oLrGKH^TW5+LV@jE@i$b(*eqZcIS7F;%dJhIM^*|vzlElBUCY6& z=|f?8gA!!NHVBQu+@#(YFGNUXELmaYN_TA$n3;fvlh$W1vbd}s$Sg*KGfEI_>SIoihB!N-MA z-|apVZ=yRU6+rp&e+Ar6DZ3XB$gw^wg~sq=6#kXOf4BHMv|BYoah3D#(^b#3YZ(Xu z1U``CQmdWv2(wN_t1xrN!GO#f;%)7kYkbX*|2`5fpKJ>W2mK4}0e<~zPMPY}}ZH4ufFu&z%JkxDLM`O5pA zCWUwV_Vta*Cr7^#L{-^s#?9EDfqF4k{MIA5atL+fT-bWPsaE7&Fq_%_?FYNBoZGv~4+oAixjj8BFxzFLTLJ(iCt^K3qtOMlu&tKJ+_n|y`+OGq zv1fJ-{H+a;oSgb*XYkZ)%rL9JeF-nj&$Tsmbm*J%zWs@tb)Eoa1!&csI+!juQKlzD zw;%aC$KzV&lM2`Aq58H*)oO-qK1B;L$=GU`>RuO-{G12WmhZBIE9_yXM#rFX^K9@P*u4^Y0!nINTUV@}Wc{BH`RaUW^KJdtYfJk|J090q1;V7Q^mA7MW z(nT)qo_VOQGR0Lu<$2`B*hm+h+e|Nyv*xAbA%MyDSF!e4x|(BJL59O*U9S%od`ihevgY}(0VW|| zF}pnt z?q10pfzO{&sfk2;?IPP7F~}B3x-Ta3-PU*OHt-$|`cm8>{oQv~8wh+0?U$lBmrX%o z0-)6Tw?p4t?T7Gk`0)r}DSlH%fJcOv?8`rFW#pR~H~%24Ev8s-a*dwKhpcMDkyn~+ z{u#sx_7F}PlC9LG=OaEm>DLr($h3=tEJoFEiKw|>O^Os zGZeQMx|sWDrN3Uj%nLm9?QfP;xD1#TF_dAuV6RsJV9Bx1ilfF9#Jk?HKHh!AfvLIa zQA?l{52gTJ+3L=65@q9GQ<3ZY5Cj#dyw&ywd!tj(%l7)bnur&%*v37OsadOIh?0@Z zK4Wk9$%J*W2|;z04S1o^*(w=S=KFJB9B)XxTf$jBEs(N@DLJkkq+i3Hy=*-LC&u%@ z`%N?a5Ygdj!z>pNgqN+AEFSB(3mP*_N3w8`67^&!r@q8*L&X~0A%?bwA3!*{zv^Os zvOkE)nW#Eyc@Dh}RNM6)LF+rWEO`ds6W%`>Z}OX=X?^pnhOr80q*&;y|HHu>d0w2P zpa0G79R5G>O*eCE{5K{+wAKQS@^hmw z;m8Wgjmc~gy}M+HYbpwFE3?$@R@a-uX;|%60p)Ae-n+e8r^3S6PJxRJhnjlwNu}_b z+Z!h=dEGfz+gWuKQedpHHzt9MXDV zIDCtKZka6>%MZ8Rfoe6U?>MV!C*$V5|8g54J2`Zj-96)Rh|kie>{oVkW~aQ!pASqC zYkKnq5))mF#+efUqZPWBqV@95mGfQDhsuPEyJF}yaI7zX#U*O=sEIh>A3+jo0m9ZW z@Bqfcm9e2*Y?+abGIVYQCE1_h=+_tsXiK!%0o}GAI;ei8hRGiQVwrPRH`9XoSvQdg zdENsVg(#R4uhW791c5P)HI?>#pvole)V~+wV0^zaqRAXGt$8sdDtR50oM-=~@@q{^ zqGxF^_6oj9%Owva-|e`^O|W8VQ1G-`m)mYNZ-{$T6l@v}U88SyBYnu$_T|L7JIgM9 zT*Lz8=FTH+a#1n>n`YHt*Ol?jfwRe}9>OLLU9FDy<&srp6d|Va>23r4)Qdzk*};mI zuvN8KqORK%Tw!Or(dPmTSX`h-n@%o@iOVv6%jybX1&spLds@2j z49}1N@3R8y&kN2F>W@?=#HVz^AEI^X2yG>d)q%Jzd%BAEHXd3B<*V27tGGZ7+zd$+ zZ3dG5)1@NTGd#~@QjjN9=1?K^ee8o>=}4UA8U7hz@v)GMa zvlY5ZQLYrq(YjEufNL2u7!DMG_-7VnVl7>li8}=fXf;Jg%83%tMmMkj8rUNfU2FOB z7@LJ@RD(CplmRV+ ztcZW6x3;>EEk452u4MgJ$eH`Wlg>*+Onnya#`vVXH=@#UP3{aNEQMdCe?VPl)}fNz zl;>zZd9K_RI-K^Z@*m7GT#m;u(T+p0L2*Y!R=N(vSN*l?xW8u#KTp15P2Lv5wc)~d zsi?|>Tunp8MGcJ2+gD+At-&xT;yCWm%ggd;`828rkEFlv)45A&dL2V(IU<)H;kJ`2 zQrzKOm)g;D#;mY`fyq?+@5ZJ-ck4(R?C65IzFG;i;XUSd${YSloqmKKK!9@(94fa( zEdF#^!b~&7*#xLPa$7?y4X#2?>NH7lo{bh@b^^CGUFhJ_2nGrtNYL}w+50eNeO#%L zL9lltHVyB%wR|6Os=(5k5^;nHku0*!U@(suksC#N-lI|=uVGr=&D>@UJ(N8GVEV1RO&GA{brXP^c7HY4-9ZA{ z$4<913?{rP=U|WlM;4K$fAQd=Q5BSM2Z` z%f3!TW3WN&_;Ki+#S`dh-;)C8gF^n4c(xs+(wdC^i)m$LN3B1G~g^zvMKyo(icrA6Y36@>z!0ghN$`KUGl?qeh3-noCw_W zvm^N9+PSMkU;WQx6~sE#ZRq&v{iEEq|K&b&mk-$hRB~tvngs3>!`FHH0@CPrMKCWZ zn`3pt0pCkstA(M1bi)G|i?A)ll(XH?`0}we$wsKHIkLwhtM#OU6WY9!5)tl!7swn; z3rZ#0MS~L`R5J%O+JH%p_%CFYmYIa~>NM0@j3A-H16l8vCspQ+FeZibvOSyDrmUC;@3SGcFK2V(UF>0v(Phc$29*daD0gI<0{^x5-!8% z$pFt4@Q1fAKovc40W=P( zJW=8$S}+?k(i8yNK5EVnfU^L&lCT)-kSiJOKzVBg0A=x8gq9fo4n zOL88zVlzOP+fs!ieR?L<6K3*~N()Oa)e)Gsok$jB3Sgwh&^n!(-(aJgz}5AlHmD@- zG@mkpz7|IoBvOiTXMRwlYgg`F|8v!^#%eH>}fp;KhsMcc^t$-fv*`bGG#Pi`?e<(Ld&Nft@>XAK|SxLUh<-5<-V>u$ODgkbQApms{}DcNZw zy#kk1=}xfcXhVZ101R==W-8^xG?w{tm_z#DbPK$P3=nJ1`r}|_nH*%vj>`(6L+EQJ zUfy$pk8uwAk$@Pd&mG3T=67e0FEm8ML-dG@q{GlP@LI`@pUvC@u%@f9>2lqwd8sQS zpK=^Eo;|5;FR>~!97m|?PGrpUBzI}qs{UlxvukF8!)T^p3O$93sS ze@hGhg=Nc?&OqGny1kqGZWqJ3B_U(UqkxOp!-93Hsc8PuZpCT%e0mVH@2?Ftw%1C} zoJK-vpHvYiohRegF>@5_Xm(DG!v?0 z3$u~>a8*qZ|GI|B>XX(KaOXvrzu^&X{qeevd-4kO>NRh&<2#p2rapz|_HZaRU8_b+&n&aCxOW7Hf z4jpdbguKG75Q{J5<4s7*hVlzcnkNoVv?4`rE99^ml{NvWF||7M!YcyHSO~xqRfX^5 z7GnMSsB*3!pNy@(uaHvM^=!axj&)@69$d&|K&;sI-BzR-MRTr2n9h!BlV24MS0SD9 ze_ZXON}Zu@q)(gu| z=27>c(S}!VA=g|~*$)H>0=wy5HBg@rS;kF=sM-+SY2i0t!icRCdCkAlzu1f~KBC1@ zOg#~IR3l8PIi(G{gZ60bhra7TW)zzsOYxdUwTiEh7D{A>XL*+Mn)tcnH1#t~?~!w$ z#a~Ep%?@gjgNat&{>D;y!Ad?`bQ~nd;hDhZGic;uDYk`Wy;z4lEm;(>LbB+xf zh;}qPTj0sihA+E9)}^*T-FNBc-?p1DhKPVsul-RIyH!c0Q#iml&%gWtvkhJ$*Avjb#U~u@SFW$&)dGX~|qZKQAm;WOLGm4};`8|=lD~CZ$Bg86!QH6@DiQFhkj~P8W zay!;W*<3;ntk9qh^ehdG6_<=p+++WG*OTTTDfESF}T_#JH9kBHPyeKa{A9S)wz;m_&rpl4P=4IqH&svqN;rv8Xsn!6 z?y_ZzSU}S|67Agy;a3C-vo{G@52Opv@(c*H*}WA)<(vPZ%vtdr^Yt=eEjWaDU@cdy zW?3M?w`98lU~^UAS~)B})2W|=+iIKRH#dT;O{z$MU#k_}=GZm2y( zu#OqHeSKD(nV-}X;nhZ$hr80A{g!rG9LxO#v{e+}ab>xPPDwXX78n8O)?{frj=qqU ziN{Y4a?~}z+?3pK)MAx8x!DyGv#8k~pgQ~cb03VL7hhkIMz`jljFCV2!RvEAZ~Hg4 z7P?!$~e^=31J8eDFLL-3?Rx;@pM9>{0AMAU}Nk9 zjBsP5^16KRg`?OQ*|?SRZ#g?A}y&06D#sCe3BYyUVCww|- z&-gY=A`dsIkDY}+kY2UISuw)u4U)a5z~s0v9gxf%k8_y8ix}1&r_S#%qpw=OC1^n7 zLpLOqI~%GMR&W@>ybN#2ZsNhUfXHWOp@DVxwjXI5&~`)ISg*pzgL=fg2Ib6TDo~_K2GT>;)ivE| zuo{!CvXcgOrFy7mIY|E`CQ0G@T$|iRKiu~{|Xf`4Evw^0rB<|t&>tkgy-Hv}2K)+~oc52XY+Vj!g>_?`=tIgoe z`bQo$w2F63?CR98e>ie8Z(abwWwCoIjQ<9 zb=?-^tSSNx28qr3Pu^n4fI8jr`h&XeB#6m`L}i~X#)vS_$HlI%{NXK(o6F^H>A6%# z=8$&E0O0l6s;M}AcpL>lc#M)=QPV(5v@x+U#2aH=8hFNq@(hM`^ZdlhdJbTpzf}~k zE60{*g;W7toC;y-8QUNlY=Uf&NSb)feoB5*a^xr+Cd-+7^lm)ANm`EP(yjS-wq^;^ z0_`<)R{E(^K*tQD<$mv1O{=(yw{r@raes!alEYZ#5SWC+DzK6@Vbe`Jh&=s83$$du z)h=Kk7^sqFe=hKt!<&bEgBFQ-xM5wyslIN6rD7&|)DhJ~2Ed0Xs!O*Ss~VA;G?0)a z_M#t1ZM=E`@KfEwH)XTjhLMj_z8-+g`I`g~^k%GD0wMG7ZMk z)q)T0C9J5qVVaj`R$#0h+{8`*pZa_H)mfTGsbWT;r!kbr7c&J#_p2a`*vz@C9T?`b zZD22yub!*}TcXV_%?-J^q4Gus_}VbS@4BeSYsBFAqR*3ONm?OhAB#JtX?jlN4ZlNg z12{$AMR*MwRuEudlGy;4p@YfEiE1AMb8i41#eMWjzMkjOY*OoJxCI)D+$Mx}L_9re zs@HAi)CT2vonxJ=#!yG+YiuHQI=*`tAWDi&a{Hx{1DMSIX*4PzgfOAwRmkJu76e*^ zD9(MgqkQ+)J1S%vwLyzPkKx>=-=h;;DNA8hk74ARQe*!5=(h~;jF7zR(zNc|F1Xvx zSPe8(XV%kI=i)v?(w_owrcq(2hX_j^0ffH^KsEFr;eZEvtVL}5mg*PmSQ~!R1Uhq@ zI$5Hz2-y*%3KhsvSCBy0i^5!Ut!AjqFXK7hZC%~3nxlE45gzW-Y+eURX#BB*!in9T z0=`w9tL?A9ha-l6S!g7|Y;~4bmHQP)nsvv-3MQDHTp>F3BbFzkgYmEI&HS7Q(1RI> zn#D1kv&fh9Bfi|ze7rX{IwTE=EReM#wr{!LrcWb4ciSGqfxU*@7dGsKp<-XDmB6qY z!z-UXdhu{_9k~7)Gi}-&H3lz z;4xo;tm~wRHD2buxBvdpta`nn=F}I=qI1yT-X6!tg?xpb#Z`&SJJyyptEzqldw*}+ zofCVi=Hezqup?!%v!Nuc#00fzD3rtFK5iKa?71xf8Xxq|LMCv=7rVm|;hU^Q9*ncnmz7vH0sA@*Cj%zo%d>yq`OKR= zpgL`aLW{z7T-vek;eEE_qwFELdzKJw^C+6C6R3g!uH-Yl8tIt51K?+M86;uZ*>4>< zsu*2cjGydcQMCjUyu2n2x-1YQPC$V|MwbQtB+UzlSbk=#?VYPD5KBx3JYpbGDhj~e zeczw$+hsI@y%W0IwF)N%21pWgG|+E-lQ1q{zIyZd@~!sXMJK-tmOXYd#{AaPS{i&8 zxiVbqfkkDxbu)A%<*zY^)%@dVf9nRzSFhxij8!$MJ|{%gQuEIQ93|=qcP;b)aj|s> zLqJ1LvZBG(-<^zdN(j%Ea8pje@zVo;jr)1No)KWia0?K_w^q5IS)YP>$GA-ALMtkc z0Y782hndKJLg#X75lvYD0M;`Em1H}RgsEI;g!Rc)Xo9HMh$g(jeEQQv85S~8OGGFu-#^e9j{*=k ziVu-?k1fvp8_B1m{Ye-Fppn^EABOF+GicPF^?0A)q!6y1d@|9b(*ME^W#0_I0RnJZ zRTj6;gp-laoH#(cCywNZ#CNGo%mKjH0-Oto7aHjW6Ge~}H{an2G2MSE!#YpPp{7Ty zF~XIv&c3U`%SwInOhMj1=&D?&nQEn$oXGEc^m`eAggovF8-5GvD<9DPi<9rKl=ash z|6NV|{p%HM5Cf#TDm5-LrTq7+;^!az7qIKkTcwr>ZWY>zO1f{)Vn1uxKdaW?cwCDc z^PkE|bOSB^XbXCHvleD-Ki>+S$0x>^-!i~|JqF*du|Jp(KhDVX8Lrr3%fhYP!Ao}0 zw_O7sevC1{Q%+He`6IvidBpzxwO=E@ziKa-A97cMu?O>yntkyjEq?HCFZbU+J-n1P z0?D5~`P=tLPAuQPF--Zlmq4%c?;rF(zi;_6AXSNoNBsVb?q*|pIR4k~TRsV?>NVy) z?QNC*=P>neYgm1*xUh8VsidmmhQ~rRPaFqjLe+=rJg2U% z>X5$mo9bFV2ebKK9>*~*r%rK|9Y%;R`D2xS{A<0QJ8AKs$34I}y z{TmOSHO&M>44O{)tG9^q8fu>mm8AgRzhAhu`i?KE(HjA87J#8`$lRJau&UA#BnoKK zYx=jkd5s^G<|x_01-{9$2i3AA@QPD_5Uz`K$H>*6!WocTlNSE~R4~r7P4Qa7kmc9h zUmGT@n^Ca^BpZc~@iNNZoA2rCS2+)iT>UV8f5=Mrz}yo$xBn8se;oZY+aVO}@)m_e zr)8IX{y#tc_d)Nm8?~W*L4h`7ln!sXAEz}CV$v~8tj`7+_%0vgeg~-4^O(#wOB|>S zCxAUR8_Wx8KIl4Bb({jEcd#-*gr>e$W=vH=vTvwj8A8+bxI0$2XjN}Dx*-V-AQ?w&emE)1VdkE3S#b7-M9 zlPkwFJ&Oam(-D{rjd?u)fRZNpYCTj~IzV~&6g2H_gJ_I2P`QV*HwyK)X1=|-j?)V3 z+7|>#Kr70Ju{oEeg@t&69qyxPz}KEIn{tSn-Zfi2Uww|BH=_WC^DXrK682Y2Lw7A5 z&>}J-T1tc^(FDI@Tnb-izpmba`8s_+I3#09&@S#^NLX@7{b=@~49-IZ9Y;|Pp5HM5 zDWT%=CBJZ6C~R*K!(D_|7>2|2GgNI&ldpvDg~1W|z=)=_sEO%)d9}&V0(E?t^xvN4 z6jdK8_E<)<_X8d;V#xqmA9XWQ0O**G2KGZ)@Ug~@d$+LP90Ja0@-|Z&7sq2}2MCyB zt|9W$EF?e_sunc*K=If87{Je{Yy3M2Fiq9?^73=ZiJoa+rth;SXXq#p3P1UZYb^!P z(KhCiV9fbpD6zPI=yYsj%MPRxh`1-X9pvn|)Ng^Lnc+O~?|y!j;i$FBgb6V$0k?6>lSKL>l(!PW6w z+!p3(mY^*&P#1UXJ1Y&^lfN#P+ip+R0!9<`g@ZdZotUAAW=cgPUNUfB8Y)wc5|*34`R zj3Z%i}_nEoC z!);MY(gV2W)uXo;4s8*!apd~y;w=@wX%EeRE*Xq&Dl^q|WE=WvZve{9J-dGW0lm{w zp2Bzk5s(|A73$Ik$zBF@X$U-zMVc=dL9|cE1iZN!g%6pzrnJ!Li;?R zT3!m5l?cz<3;{ObrEewub~$T6EJ0&A-3@RhuB#rA{qH2IEJ>Y`AYxxDQl_Brq^DBU zD(;8Lm#+^>V?y4(>M1EIYE6!U09tq}r#X3^0OG~hZmY}s+0WEP)*uAuqPk~k&fC<2 zHDrg-F!mO@Y-Z9Npko1rUQi>aL$r|#kjI9e5?0)|@1oUvp_cE07vktQ!OOX|-ld(K zkF2pLwX8mda{QhGpQpb1Z?$plyVPZS7+HT^vvp2U-J|zgdBuH`L4BktbZb}`re4l! z3uVj(n@AK=<^DO|NSLt}uXA$%*DqxY!D|%C^mZr5(#vO78tACp5K96@LpQC>kjCwO zT6*Xz(dC2hJ}+f_D8TU_N;4Ro^W)$_HFhDM z6|k*q!pGTERl7y1CIjMU9AnUnQFl;M zl2X?#8D9O1CBvk2B=@Z-fs{>_QH2WZRJOmZ3ol^x~-dtFSJLYZ^Hz1k8at>h=nt^tM8r;$X{DysSY-j%io~ zbcqgA2GdK(+A#`SM6c`D-2}|Kg!RX9V4(Qdwn@luvk*#4OT$+~!Z>8^OwqlKdd?YJ zuz7u)H^wc6Xfe{9KoWjYmA1fG|FmU-$g$`$^`XGsrO1`S)VZojjo}WyMq(@JYXO7h zx(DZ<@ZgsW5X@%4qiXpr@9}Rhst(^^`1?7b8u0TVcSermlG3qlKBxeJTH!bplhZ-_ z*8v^urZWTYkt8q7U=J$u6emuo5}^l#iSP4}Vs(`}U5I@2BDnMl)x92}J?mKyT}sNV zd|1%VG|xS`+>0!IXmlvlb=`aRe_4D;L@zEX$r<*m4K|h8C>-}9PBqo*F z+n(LJcmsPR(&4RH;ke-1EO0X4BA`=hbBf(wB1!T2$sOnLf zWXkEZZ}YbOCUBiM#+BYIgi~t=(vdu(O={2P5&yzNZzL1J#b`P2#@ktPuYAi(^>@x- z;uhWly?d$GpygLf3S&MU6>w-lYzA&2&3&~7X1wTu*UdxaSvP9RbX!@Q2nQ^xv|;Ow z?*dAAf7`Pkm4mlEAh^8mR=PM@zp~=;UPCqQ;|rmhX0u7^xLGUXDz*E42f0)AdXa%~Brb)c^3LLx~u*mbEXf#BWuOufGWu zCaJ|Hp~91rtc@RPd~rGRP62e;0X`V;KmX=(cNKMW!UF>fG;*rD?H{Zv-AeQE92f!8 zVh|b&Sj-L@YnF*oj)ROscP1u}mfcXf8EAHa4+vdTZKVgmd(QGa<+($sR2P0H{W0Qw7J1zcCn=!u5cgRAi&uDH*gFhgXh zzGROjPkKy4hyhW);S+Y>K8xA;dpEjcFEZF0$Wtg(J!I6Sc40rtz#L|6L4MAU_pgv^C5R>CrvT2g# z1MnNA6hq>FUccx<$Ptft_MHp();)nB;$f5o?qC~Pe{=&HWPdofpnqP{)CP6UJb?ej z{;S)sfbQ%)b~hMe z(TRrGQtIA=T7J1BGW03jo+HVLKuu0`Z#tBz(undqJ66}4vpn#NrAcn@$UG>j? z2>p@Uc1at3>xyB&~OrJvy+n)&Ua2aXQrjgu47OUY>6olA#xxO3Q+@RBj z2B1F~gs(X?)qo{XgpMl|&wnWmfvJ+_uSuEIAO&5>7RqTlQBhF&>@;hzWELCG`oubt zrk48=VEFC~?&C}_k24Rc7Y8js|9AsIK&ICU6e5~X6B?$JR^ZNMsB>8cBZ54>?%?Ap zyt#$D7M2UH;K64K6dqYHKCzBgkfV#)cnP|{x}B#$MC-3&4mVJa+p5!=Dw?Z)IYLyx zKqGq%omks?G=j#J%2^Fz5t&%s~OWwWx?_iH2C<_IzAFX8)^SckB8S`5(4*;5M{M zs7v7=QPG)@$$T~0{Po$bbA*SFSbz%v7CGF3vi>#5_?4j{qI<(d-V~Ge^f$=DD(X7O z8ND~8y0g5bxa*8EM`T+j`4*klAJ!makJhb0Q0|0Nge3g2nRJXyF_+sRx|t#=P$wjV zpx8~4{<`nhcf`%Rjt}*?z}?Qd$FD_z9g51@TLN3?>8;pG)H6i+pWaFZMaS}Woy7@XXb>x-3*Dxvi0w?P7XZ)Y$SpmV z6g6`X6SPW8#KBwu#Cxif0SP@IuD^vQ;~{%Nm=y22rYu8IyiL9ov|mtfe$|2INiJJ% zn=FEyJD-T$92Z0q-5jcvQOfkY5#zT2^D`rmdb9JWd^)D)hx5Bt@D$c9XS%ZpRl@K}XE zDY`AVm3k+eb;$^OdLbCPMMOGZe2_LK><5!|8$o{%`~}b>yJGy+fwizWz)dPL0OP?Ajh`pIF%rm$y0J@Lb3VU6d#M6}14Q zU?)K0)n#Oe1h>L6mLewlGZB)O!EJL;^Ss1v0sH?|P3!IcJH(|&Mf! zS6#57;_y$%Gmx$uYTE5UCO+!TM{y6Lrz+3G{ga0&Z0V;^4Kj4fJlWc26={oRBmQo+ z{KYL*&uhcw|Jdjvhqo_ri&zakSEu}0K0#l7<|ZTk{24tBsoro1wVcmmKx+V0;TP8V zySDvM`p&w@mH!T@Vz*x7+hi>G0oJboyK+843QD!6FnVrctdyG0P#>Y=Tf4Q>>_Zc# z!A$0#^H|u;GohEAPz!x0OqBQ>C3LIlFcDe)jq6cUmmOnH(hjqaG{{6#c8lv?widJj zOFrmr{ZWEwf`#7aL-USIkO1ev;KIW?c399nSEfuxFyzbuIXMO?oZY?H1FWe3UQKqu zzt*wjFl&%y#6u&xJNSz-l#sNgGnwVRK_+6QiEhHDCkfyI8q#VtvyG&Y2c8Gxpt}}Y z^{4{3hqWGKMc^|Q2-onSa%;v-($l>hZ%d0Jmeci=!1PaD>RI-7CfDP|C3Rp$mRdZo z`YGgjz3x|s#2<^wQbhic=Erwm3y^Dw$6QOhVdw8L|7V2%VJ%(VMvgelI;7a7300AO z^T|8nU{^z)fZ7lY^;&JD=TvR}VQE1pc%j7#vYTZzD-Al4ygN!xhfUuOaNBr{>!x4} zosi1s&`-ocV8Qs!gViYVK@$;W#=^P(k)}Tc$sS4d5*Nn>O_;NZdwLU0DpJ=?Dt23k zw~rswOYBf7HoiG{5fn+L3{SFeyHnE|6|J)#*Azuwumy|MKYiFN97*r_ojS_>OWX_T zP@wt|b~*B7M?`|EaZCPaYGIdX&jDA;k<9bB%~@&C*%SA99D31jg0kMaJ_07orf3$6 z_TAemue7iP7nj1rd>06=yZ7ZNG}wW3=+<)Ffentpov$v0^f-^0*J3*EOHKS`q5prR zwP?MoQ6NA5*^(V$Nhw)si+{_5rDhI+KqGbzx+9Bto~a50Y)J;}01R`<3F0z@R z8h<7B5zURDWdiXfFPm{)J6_|er)u5SJxSx98#k*0vM5eWCIm_WN7bdByt-Nna?lRg z_KOROI!VyC9Aghp8udya7<_RGWjVPCy`;ygATV~TMBUBuD5wL}PdF-mPg5=Q{3*+=HFn`=yE6V-N zYR`fPA}nBb%yxo`T(*${lcZY_a%YlMz!%T8s*&u{qdRULa2h&@?7~XbU?f23WuXFd zz`Ie$7LyF)BCnCoqhXq81G8W@{MJyE1Xq1Cy;f5()IWq#9YIe|?h^7w%)I2R*hb2XQ9U`W!2U;|xFEtSG zKf2^G@h1XDB)}u)gW%5kCjJ+`;46I5+#bE{>y=7pLw48H99R)RMe>`@0<=TuVF&ST zR?M?SelZ-QVfc<6Ikw@oclQtqd=2pGKAbx}tpcmVr&>umBFdC<35B&`}a7~uV zCck}hOzzTxy20+d6<}&(~<*53EL5 zQX@QgY_SATV`(Ma7$!!aaDjR;z?a+g`wD@qqy-5AhcVMS0vbRy%Q0p6-F3u$H(1yX z?tEq-g0lrL+ad9Cg1$xCG7$@e14xB9beGRzg9Z`U1%?!cxP8U_kX@qxdp)2%4!h5!GR`~Z7YUXN(I9m%p? zkgW2@^voYmWgP$xJn%Rj0GD>UIM_MuXiEcK6e_=fC+5x!$>U7ajFPb1QGGzJgX!sQ z>2;3;>1?;Y`$rJf^%pm_j?)He3|#7h6Zuw`(k75*l)Br=mbwpZd_-6+ODip2$`oS{ z8HTVh1WpLz29P%r{82M=f&Ju!xna&#aEF6#wou!#_7jEa2qsyA~~%^RT3ftvdq z!gd&o%Q=+D`w@#8tiACU-*G-RWkQ30VY?nHpQnEgfLiZNF(RgzkMtjiZWv{>)Okp| z`nenwS350V!ebcz7|E0jPzf=Y6ud(RY@%TWV|Hru{AZqs)`_(a%G{v) zJ9V|4>aoY^8^{+U5=TSnbG=yu>8bZS%Mrz|aoq>(z@0b)c@Uv3h?d z>S`xG%fE4JNB@e5`pyLuSz_KMh&#=up9uy$`fNfi4G-i|Hlib9tXoP(Mwlm8#*|TJ zKLJyfQ7s!+H1P&*pmv-eR}pCA=K+N*7q*gTt>!;MG5^gPt5 zi<5mBT|Wf*<~n~Gg5MI%E4(aM0^U@BM%G_)>!6gScAnfZg=QAiVYW_KN3QdGqyJC+igK zbkD|o#$}rSk-DMW9FK&S&b1(55n3l`7LIwSK_@oND4Xgj&p9CH7F*^vZbH+7OC$a{ zg-5O4_vK^%=xvsA+ZA2<^9ihf6$6?Rrp~8=OP-d$i)Bz||6S6vq#zaZ6k+8^r;!Bj zgYqCIpre)>;_H*55`qVd$7~kJ0`KfFgWlSsCP@WLH?F1MT3MV%{+~$wjIueiT+lrm zsX-6w=^Ai8L~K-)v*v6R=wJVCmYGt8aF7Yyw{SrMdG5Hdp9b_T#dQc2zv0#@>7pxW zAvR%Oy`CQq$xVZEJdy9$?@*|Wk1hi-!#HSAY|`RCXOWLj$UKxhsnz8EamwYsSao%xn2ColkE?IfqV zZa`2Sy20?L9RFJ!MR(fXUbryFp2*2&z(p?;u9T$6=?p%T$p8^|5X%dI63_q#sn%Cl z4xlIp+1d$y=@th%ixv-HBlRHzRBYrI(}v{jc;FYfx^kdBIu8$R(x_fvv;2a1=0?Jq z&gqe(%Jkf2NrGFNp10kABux<()V&>HY!uYuqEj?8k^k7dBmID|&O0i&%b(=>*lwl% zVLtExcgXv#akvF3AK zg>GQR*~H6@Eppnl(d1)NED$~J$VEgqCq+en^}#S5T{{BOt9wx;4AlWpSW%%82z#ZJ z3p9#dIjxXG*gUdC0}^i3T<#xDsmx>GQdzDT-ype`##TI!roe(pXc&3EW>O*_%#jm= zT4s?({%ggXs`UY%SHp6O1nX9lEQfpMMZ43qO8IShjgB-DafLF8p!7*Y9DaTsG$^1x zikjh7ST;3?g(eL1zrsVHXD@p6{QfU+&R~OF=X>i;QaEGO`GWp`u>L=>8%)2F1Xn#M zdRz#X#lUmr(whtxY1k`W&rE@y-P?6p#LuH&SP{BeLNebO?QRFgyXxd_^SE<$bfX#{ zESY`m-4J#+8cv1&R)i@lc9Jp(SdY5$W@B8Lbzft z#=X**TnM7nnZnm_Y9(2QCu?=@W_}c{*$)mV-kK=P3A(K;db=V?6i~-9V>Q0Cbyt&} zkM$HYo0m@9TDK&?;2doG$FIzi7Puevz5ND*%#x_14cq*83Hy~3?&5u%qo$8gkn{g% zo5lL6D_hI7KQLvb@TJEC=Xsd=)XoPnf1e7Kl6ZI8hwjwr$C~7~>2{FE%O8t5rj+0G zoQ0J-W=}HJ9u}&2k6F!u+jO@ck)PQ_L%r#IZ-2LF|Fg%|kF2ehCALY<*Y-g0nRkkM z*3oO9wsxF+6P1lKnJ3n4ZO1bfGWc#gi!l4*s0?C>&Pa!mwUB<``cJ3)!xUS<1ScAKUT zEN0SRD97``A|qPP_V<$)F}L{S)y5-rlQSy!2KJ5_VS&hzS>BcWMzk+xnoSeA901q&-xI&&1B)%8W82 zB8Ikmu3YYdGHiB+_1US|VAVvsuHcAZ_0grKow0tSpX8!oW*e{jA@0Jl*BKxvYUBD? zO4kd*g~WZidWO(dG7WOK?3YOrKbL`O`;a2}-_jl%eykIG;gl(5{#V!hV7>DAudig0 ziq55qe~eywfhFKn295Rv98239?~ZeNxjCwXncP7%f) zyE5gxx|}Mn+WqQmNTZ1^0gU$xfahoWQTHt|-w zfeB#SL^e1&GnC#_mEJtzP-4@~-nmp;ZFugATZzqQrOXy-!+(lZg8RL#iiQQg?r@Ucnjg-?-S`{bYk@4@b1s_f7e2)uUI)*~7Iw zX}0J`3wou~Rw-+HQuI|xk}R1anacpL7QvG(Bdds4k|1`}S3;kNraB^~Dh(wF&m5p% z#ize#>QU0X{!!!4Wu9mAAp`P*dpFPEI=|i9ix_g~Ae(HP$bz0!da@2x=`D6MVg#=P zD=fU1)W%5_+-@g$j|No%`*dSR>c`bC-r7}=4dBgQne!RcdYiiwv5oQ}MZJ16glY+7 zsA#JHPF>#;NL`=zkB_wFV3PhGG(YTBKwC8&zY0y5SycQ=?$WfAe7BljwrhLQ_HA=t zlrA?QMjW3)vjTvo(C88<6@w#dmw{vCj)earro~4eI_tFyuIYGT77E~j@7@2=dJSAk z{h^Sq6S-=$eu5*9Yft=K()D94wL~HR4_f)+%i5kjis?>&tsiz+S5|W98u|I^f*7gP z*Jv7aTZ&28jSThs0@6={F2vSllFBwqYzLg5#&l%kiTplOjQObSlSOUN=J|qdt~6)o zFmwU!y|o5TkT$9bNg5w;?$91hZ5MyO-d=!=8xA>0_tC5gz|eaOb<$D zqiFzjT5EX< ztL$2JeF3F~t+dqG|864xR zk*`-aHR4k9V5_q#`KAciHK1v&JM(!>Z5Q=}RpO}p6xlhqDS+MS2~Y>GIRMv|RQ~S$ zktk;9q)Od~m!;HTa=T{+sZuqMv2(MC)9g^SWujVtgE2;)JAdF2>r_aINK_Yyh12pz z5|ea5UQ}DIqh`~1wjWGO&xc!mI96d3OsPdd}EBhew>|X`jYWc8Y``c2O z_h7Es+8F^V)&2R`4O3zs+nvKG-?3fR2#$oR4MzukBD#AcRS@3Sn0 z=9mgNT53YG(0aEQFw?NQbS|MT(1U75?loCj_OOEW<1kwDJE}#)J07114KIJ%N;Ozvtd}{U=S&Xms zLy#fxt)I_~%g*H-=JxCastwU=M6G(P5_5RRa$c=(-HQp*)97o_* zbAURIju)+a4r#gKhxBn!~!in2Ikm;mA}0>95rJd4nE`edSl=>AC-)_M<<}S{XBW?3S*N*J3FDype3ksaX-M zpP?GKV4;yut)A-b1VKPXE(Qy9uYi@?mqxRKM>N(3QoI|(^TA#D)j7;S=tOr;tGX*1 zERan5=oGecKKrq+9hAP`>$H@C8$sL0fe%HJOYg4$>`xI8%zPYWOZgI%u8O09G1z+7 z32RGqb0}??1+|nnP1NAXJ;>_aGHx52PA%9gs@{s#QNU`gjwoe-(NHO_sleU(W7U3V zlar7vXMB?xM24^tDcWt8qX@-<@@o75E? zKra#)^W{Qp)1u9|F#aTz$yw7Q=h|df43D_Wg_-84xXivd;JY%$YqJ(5*VB14pm!9L zB#3U&##dLO1pPX5Y6#EzmYNEqxJ`+aw*E;_cJA(D#0uMlC3O#)bFHZtLi*PaqZt#z zrWDmoTb@fsjc{4<-1GRKrH0G@`xU>Pr6FR|CbPm%uWoQ{qIz;(it~>LhJs`JR&p?W zy;%gnWt^vJWm_QGn@P8Y!ay=C=7nCK1zZt6K&J?raD5@|HBR0kx!magK--Y=Yv$NH|Ma=or*&4B*$GZ;hA zFT)ong|h>%gkN%LEEWy4##JWs~LSw3co0a zd&Q510I3V^e}R}QC#TOKD|_n$%^msF1C#y0a&RplFPeIr0VsumsIl6&^xAzk2Y*q? z9WUBPf;lZmBZqz0X1oR`f=&@uwy*{(>)anKxOoH}f=D*)oPT)`>&SQ$HRQs#-)#97 z@S>B+N6^9f9{;2kc30EO6qeKQ%_3lMHnph3LZbd8;Znx3X{uglda(%+a55FMVS45Z zqZ)dnbwo3j-(*6`X-w;D$LoSrbLUczhaCKj>20Lh1!gTVR6dIADO)lPhUNkLmowjZ z2Zp5Vit3gX!Z0h2RXW=@Zr74VH=qPor6+Y3#u#;`h4)e;3ndH14xps$gNaGLakt}q z({2r0#$LY|fvAtm5tjBcB9#UBD>|Cz4uQZwsVUAnqPy=qI;I zEPnn6YZCP$6O&Kf1(P>VK;yylD{cl$u3TFS7GtkZy9`5-hl>ia- zq-Y_k_`q+^r{SR#lJ@Z5yqbZVVk_OkII}YQ zN^)P+QmtWM;JN*`97G`!WV6~7)CppnvvUVoq~%J9-IEU#jxcFHJy<{Kf)_ix#}=4L zKP64aSUV@kHZ5CK3|mtC)Wn}1OoG_X&#N4IsttUbl&)kGiMO|KDJO@9$uKT2!+G7~ z>y^xyRlC8_?N!pQ>g~pM<523`i`_V^QHC@W}%tKd!?xGMHs&3 z(KR?bbI!r;ial`qTw9GCB*Gjt-Dmp233dt2=80?IQLNPVD&LEluj-@oKx?!4^L%5% ze#gtUg>$PSc=gaxTzc{K1UmP>-asCDfOaxU7ukPIm#z^@PdH3{?qs8NFHCu+Yq~+~ z_mdYbMjf*2`{_cD@xpQF0PWkRbSq_7L)edV_w|dTr5@A(+j+P>fu<34TmBTaJLUt; ziNTSm{L_XQX1uNGvyX=DmcYAP!u+{bQy5u!KEp~YyA>U*K!X;5eTEGJRdqqafbXmR zE(CEQb{bOqXyq?imiN@z1f&ZgeRb-WOOg24BJaLbqg4sekD%<(dl#SQRwvN*FgdOF zKJfLGP|IT2ay(s1Z-Y>IHoPRNAI#Y9!vKy~9W1xXPjniWUSF~w8bz#xp7*+K6~sMp z-Z5lKS4qv0eAPY)@F%w{pvZ!pkyEXY3H2MyDIEcp)XSW6!9Rs)rLz@f3YS874)S)X zMM#$~WYtY-8keZirsd*_DNbs!ewcR|?!gIX9s;I`I{rV_YW*DTI|v77M`GpIdx^mP z`NE(0z=wiY-f^x)iGjn#4>S?%K{;tt9q}*C-18u(sW1pL6>M`fU=dN80eJXjurqD? zJ&hGwf4@P+UA1L5Da}Ad-qsn*SX;|81Uz7;Ky#>d2WXiNDY2p6E#n0u+R?zt=sk{F zg=|U(;Q2K45LBTshBA?`F(sztU3N2>>m&#mu^}h_OsXEi5>p6j;F5n-u=D1N&V(RE z)nmNrM8MdGz;>rer={{jY=7yb2u}UR45R|wX+~I2&66t$X@*XZm65wI5|VcWlZS&AgS$ z*_dtFB6?~7>RUWN3FboYl}&ZxYg*%f+GsK(0S25+VdVd4VTlQ6njfuQO4iYa5b<;sI?+d2E#K5G-b~aR&_t}EIwO0BVGRn7# z**I*^9trS#OXCi0CRv@$Hzon4(BFbZpb6c&mp{IILTR6{(p#hw@UgJVPAM$n&ThV* z0pyJ!lbxASi%L<5H$Wmeg+6&FPPZ#oY>1Q+;(s&G^zM=ClIGk}QQR z(sHU(Npt<%9iEERL$W`wrS+}yJ5lN60UKr8V!)+9V9YtS?S7AKzvaH)*X;K<_?jwx zr{y*c{>@?`CbSR#JuMbLS9a-Nd5T{nCh!_x0#7VU3Q9*&MpE1e( zimhlV#(urh(UO17GB-W93^n@B1^j%c?JQT_$mneK5O$Oz!7z`0qFP?e{cTQ*1JGo-i~VgrZB1 z2XV*0euCdN(SLtXcv;9c0IN$<)_;9_Owk+^UH{iT@a>(^-U#@Y9pD@cySaY3s5bc5 z|Ji-E?BuUY51;kF-r%>b`dN~kJa^4=N>PSP;J-d7|85w?tXLaz;)SL4uwUj!#2tbS zWVi!xUWHjDpkJthw$|+cpY$`(G{$kkD4>JW*0XIei)u5|&C!cq*;)*u56vuPDNHcsTy1WlEU&x$tqu)*npFq6zKHE+h8`9+$puIE8@oyCUz67gr1p~R(?n0>R z2eV5PLP!eZXQ04sX_$r6L&_2PhC~F$T;>Wmnq7uv843*9uL+CO{kqvLiar&))sBP9 zI0Lj~IMjxVWCpz$npkRD!g=yaXo+ey?)(0H#*b`-?j>r z3eHQV{P+f)_0OP#^M_e^yu3w=kE2!&3&M?!*rN+di=c?pZBbB4X|V+~P+^+ettiG- z{t?>$G`Hj6^xquVfyWxMdSnuXh8>*Cl!{?#RK;IO5~v9wK)!HNd~Ni z%(;|!BCrqd{yGwVbxYI&uwNxpce&3%eXBDm+)P0B+~rC_>|6wVAkZ)vI9`p~Q`4-a;vJq4y6l zSj{Y3ZteXsD&w4TJgIRpGq1&Bb38#)y&TSoT#hx;Qc9*uzGJS=gYVh2lu z9oeCO+w-1Qf9dTpgOQx~X*d-*kkF7BsUeqoAf2_@?D~jF%?3F*8CN^TMIYr@8U+>}ZBCDnibrS74!LvCAEh;sdF1 zz zg1aZRX2P@&tv?}gg|edWd->bm{27w6qTpi_RrcQh_UIc*$Ys9%*pF?@xxJc4J@s=3 zk4a&NK^WSCtkPked!EY`>QT)=`=@ack~DQfTlhW|L)#g~Gr&{0W8+R(%R&iA_1-a#d(|k6HqBt^$GDRj~>02uOL>eBewsW6&f7U65rY?-S}dzrbGzkl(ns z6BWEr#Y7oGgDyxX&wdt=T&QeQ^k;xdCh&ipeZZ&tLv^E2qa;@(jd>LDZ#{7#Xv|C> zDic98d0mHv6lgCjqPgh`FVtUGh;nt4kMT97oJGIfi#$=}Tz`D_O>oVvj%?JiJ2@+oQq&*p2%abZb4D3^hLc&);Pl?gpz-i>(1c~jxa+2K$9 z-iQ3Wi>^4EAb_b0fh#a+Xt14jvPENoVBMwn__9&`CwP~Pjs&NY*%JK4a}rvitIvZL z&yd)*Ld#ytYR}9PnpGW?rxW|zqO__J{j+z3wZCqDtRpqv~|go{f6u4{LCj`IDW zZm6IxVT_Mz+rudy71L|(MhH8*m>b)cm5n<9)e~0!u2xIY{^b=Pn#7n7Anag#Vm49| z$$dG&W-@1j1gWl*!8s2ppHfl)9LTn7#gLd}pNix1a(P}6A6hxYL z1*54D4U3D*hdiD-6&f!2TAyCh@5xjgjZ0wmGF)(jk~2_qJjM zYl)7 zl3C`nd~9E@H7b6(^eg|m0k?<9Nqx4H-SrDS?Uduu@e`8|#gHRlH3pYL;ElH!w&Uq# zAyrE=j7KuHdYJ%NWj>J~C zilB(9k%J`t8Q?SgbdKXwUx5`{H&Dnat?oe8-v>vM0^$7JjRF&l?6jx9@3Igr zvbNvOIb1Fg>qVCjBeG8hSd=CqES2tA$8i9T6%|sCh90a6zGGSs z;P|bXCRrPjw*-TnvQr#!NV_$j_Pfm`X{BhiJ&Hgm(2BmL)hz$|2nyVV6@XLuwfgk} zX3_0y8lFF{4p#dWBgt@;Pl&?+lFpHAm`tkPy@Zb4hj2kt)qw@U^8Py0B}P>3Y>8pr zhzFI_#Uv%ex-t{E*p2#YP4Qr;>x+(lHW%23aVX|q{$x^{FA0URK#oC!_<2+aKthcS zFr#KT*j5>JR`ZjJ8s?1qw2v0usTGys}e(bm*obdF?)B3gAlPa60o zn-36T|s5`KVR$7*oX56-voAaCT?i6YkkY!)pK56l>!%TYq&CYzBNb zILb`|DP)M;xU-4OQ1wMFyZqSFgcGmFLv;P_Z*!aS%C-!}zMq;0e7qf*m88@>Et!qo z17~Mk*sBgsgvEGX;rc}(h#w`_9mszC9ZLy!p ztPYrk0ctx$6g7i)qv$vW(9f}5HwTTEOMEkhxPJ+#_q7gAEM0$b6yzD9?lRefOV_oX zzC!1SBcEmeWmUhTa#3|y{qpi?TFczq*?snLBF5sO}Qi`JS$Ce|glGSP1VTWinlr8&Vb3l1bAy=lffi}z>2#pK%gc|3P@1y@)Kn>mHR1E$QGgppwf4lAepKy$9gNAG zb-5LPtzJG&vfcL{oiSpdFwq$ltb^PR@frg8vEl2z$o zUC=ou1|d+q=7Eui&mawhL0PI+sau7my@QI*eYQT2ja!c@9@#Ho)XW@H`Y}?M@*>~K zXV&jI7cx^49QE3l0H8jo#6lzb0a{;_M~N&CEbuCAH8bimQlpGdD!mKQW{n`ZwhNUJ z=WGf~*QWj5kKZ02m$2Bp4dp&nkZEe=-nLG?;|jP>h9tpzM*>C#RM+dnjg#FG4s?4( zVk%=b)Sf%v<7!Y~O`Zzl=qG{dCVsBE#pZzHKwx!Hkg>109v+G%4`Ht)31Zbb#iEX6 zV;1aZgjYdeRCV)}J3-}9{S%j*fnZ`sYx7jZvdb{EnaT+m{fV7Lua%|z7VNc4puUUu zsXME|_PONe6I*}HSLKV;fY!?wg3PPbluMhT z@MnYy)uyjsBGVID;odu)?7@(0!u*Bi7!dS`1m^RnBDn#OB=1m=7>AF#sP1IHl7JqZ zCFo!2tlx`#amx{~#hYjuJkx(ZEeN^>Bmpyis%Md58AXE?qz_2doCQ-ZhNK)te?;83 zLpdYqo^_GoP%bBqpgzuP909Ge%)0gq7;tB2g$j56fg#89 zC}A;jB{*ibsv4h7br1u;7*%J1o5bNO?xIMwSM6alr-yM|kNO-vXf8?1;QqNt3C5Ro z=aoQY3gF$^-mi|Jzx9!zzyRMNcf%!~H3g>uWwq+6*F@ zF4LOU{#2B1^n*$BL*zUVLL}dEd^<|&n9xSG?AoWr%i;p^8wSG1{9FSu2phUUU|d^0 z;uS=jCJDHvAHbqXqa8ZxfK!sBvq!|eLQ$&LEx~jOriD z#-XmT7r>1gU>+`BI&5&EM-PDBPLs`n-iS#*+>fdddsXJNE!ZDXLCE((!E~ z0|BhHg`l=L)06Audd1ltK2JX!Rqi-(z3PDK()MWKo4r2xnsM9uWA#sWyIBr4a+WF~ zc(vn6nmqdnIED_ub{Q*uA)P-GLAQjXgizfIS*y6$K=wykyBWttsPDc*+1t`nD|z;{ zk{k#ff$s06NhBOp7%7#qT!f;ckkqyxRBJ8+gxKp#3++n`oO)O|$8Cvt%bLmLBVVIl zgC{xWPZdHWJW&tQzsM6OwO3z;l8%ok3chw*7zHM7foHx%L2qL zf_729&DK|-)tiR3RUmkUrTnbqO7FIQP_HH{gvJ5+;TjGYJ&>%h)dW?OS(Ox$x1tGk zSxyfjaXQMoM|Izegav4%}#nDHYlp~W5kwJ@aAkv?;@ZsukOA&*C>3rGu^#^ zwTJ{cAy*Mo)adytB!XK<*O0a_94yMO6Zfh?(wPD3w9({DS&gRO0b&rn-Ym+5yeeI5E0q&=!8b6QNqE3Cr&viMl>m+ALBL1D{e=7~& z4D|RPC}F={Ia>P24U6Ayyk8SQjiWp_-rlJW8cdX{raztwImO70G{*y=oM#3VO16^{ z)aw^3g-Wg^2Q0%wrsJ>~yx_svZKd$0Q+sk!FCad)O_8XtZ4ZLINiB^DcWVJ;@$Tfu zidbg`&pHuVexvHEcqsm>7|^d7Uq<-iQ|kcbwREiK^L-brB3>ma&(An z)Z?VhH(ZO%D~3VyXT48uBoRX0Q(X$-yDDIH)E@+~^DXx9JVC8=GR6{9Ru2Z$W;FZWn` zA;|t6LC*CK(2fR!Hx}e5I*%_44lC>drIZHjOo<(^X8<$zREG8SEhe#C_&>W80eS}c6DDg>2bVaPj1k7pLY zGDn=Op70Wqm(X}~L6b!Wl98k9s=kSrpY(;>T|{Cg(Er_Li7C%&dJYip)aJn}bfF?m zC@LwmMd+swDLzl6e8;=HiJXqNRwAZdZgmh6ge0_7XIw*-qSQO)5sQTC&Dp6)0}Mk! zViv6r;vjTui79ozH#AL^D1_{%ZT0Nt{L^NnrI7j+XoD&2ES`@%)%jRf^w>;?sxK!85ja49=wY?AS47bqW} z?=7o!;=2PV+Go&goq6E6eSwk6$e&X>qoQoG6g7ufR_zO8c8BEEn?|Grmr}82AbbmD z+mASvB-NdUV~uq|zEH_okSc07pQdp#N{q3|Xb%msp642^h6aSZ=_IYy#7=eRdY&OD zU-ZjGEz5Vo-IhHM1s@*3%%$(p3`anx+8N_eJIH9dz)=DAjSn^qfyL^zQFn0Ud5z2nf#rsKI*1ySyCR;wThLVb z945#fhKc5Zkeiy2<~nZN_(WPl7X+6jd!YPa0zDNOfNRcz@_=UMi~U-9`Bopqc2C3H za*3IxSyYfoJvfT79!g%NA;rq|m?LcnG~?hWP72jOjWw28DvFm7Q=N%iHD;*C%U*FR zsWrTBtv-(g0Kj?U=*O2Bwj(i-FUl!W0T%WxMNW3$nQ)6Tjjxs;xl;~CU2ee-gMMV1 z)q#lEQ9#qG>O=q~XE4JAZpL`cr;|(KrBE=l%6&f$)Zs(u>Y*Xi0+GITEvICr%Wiph z-6d?zlAuVs%=dWd$x9XQ`A0IgA%^9vre#<(d4gb<>XDjE- zf31U2M&hp!U=%fWfY4n|FWLesUbf@<5_wSI(S^x74`FIq9dtIdWU`TE1kb;}YBGmm zjIV1U3oDoh4-RwQGUehNnn@(-TLHiy{^ALZpy7s-SHeM8It@W_z$`a^}f3A z66n-9Iup4Wn?FQbQC1;7ta===;|Q2hJy-?iGtJHyT7XT z;K=XGsN01Qf$rz3qX)u0pvR>&=rl8=|X4gVn9xv(kjcw9|A6*cd6FrHtV# z3$K5IFgcYps$BTdD=Hr>0b$o}4qCins3+c0{34q3mj@CC5MuCEhnH5kNa$0Yl%71t zY#5-AMu_X{4T+4m8UODn-eSQ#Kh;7^|te;x_ZRk9+*+ z-X8b&qp47OT38rdv4@HEfu~4lW{DjyKDZyRwcO}n2JW8PdQ(DcI(HEEv-AC()naML zAeTXs$RF9I=R6eVO|M+m&5rU2{4LY@S@q?ltDfotU>i23ks#lPmFK1a-1{R!Xs&3t`>R_ft!j`BFQ?8&YkzN--&I*<|M+m1f5&VPwL$F=Fe}uURb6Z4O9mPzNr}t=xv2M)_@s`_mJj2SRJ{D zk+gmYvSJRPnYb(Buf6C4hR6q6ubvC1&etq}droD&+k9rVl+ylO8!P~Q-6+@jV+B#* zDi(OK{eu1kE)3j05AmjVbaG11RQQqzkE&Akq5LTjx3ETYtq6dSSq4BvdZMouFFKW| z(rlIeVZ{X%63$}Ip}y1V0FBt0Nhj+rWNC$tVgc@2{|N>ay}))T-SmM>-|i%&Wr1(j zU?Q*p@13xiuJC$v=PfNMq@~ES2PTswI5kK^$FTWw(Muov#a%oa z4Nq{mNT6h{JYVq@+WJmVfCQYAV3jqxI83edv6XGxm;{qkhk>qUcf;BGP99hR409jj zp70h4_~BLEM8m;Vb4tttBodDH&0gQGW_dE9KY4}k*^Gj=XU^8oPT%7-JX2BiGTNW# zaMs9^W`9an(}lCjJYL@LaHVG_ait&ifXBP0VQU5zGF$uys{oFd22Jx(s?r;yUsPo+k3ug4L4LU&})YPAltf!&I^BHOC3RstD zgb@k@Jo`tYQI{klwpz*y7F^;SN}2<0hEKVrIX4kv#WQBO_bUS-GAN=)vSZM&X)JI< zDsj?vuY$_Ix6b6^&RA>6NgRQ8qtt>Nbfds*CTKY7It9NRmBUb&iC=c-xE%2mWk zi~Z}QIi4x!>5VmGEuyLmoX|85{U8O!`v6(Etb*zac8Skw1Kr5|_Il6-{m4nikPiVy z+0E+DGOs^dunqc9O4M5$$xd;tx6n!D4Qm6-fHW$HLAQQRuc#IUGuR0Ws_iGr^^lhN z!IVMl^;<3~8Ly2~EeZiq$WV&>Khmx{5X-iGN9t`4qEsYB$|f2V4Gqn=GBQI&_Lfca zMSD=$?X1kl9u=v~hP_HwW(bM+9oNId!&~q7e!uU(Cq3i7ulu~t>m0{%oKaiO8KI!u zLC9$x;gs5-U^12xDj~dL4!*8$NY^x`bEb{C)q6Fwhy%Af{bu$l^vHBaTxJb!Ii8;^ zp*s0WuuhFVXKdY%W^aBq$yq^QFlon>0JO8l>HCW%Y^hx{medEO+WLDM_x67WIqE=@ zU+^U7hAm5iIP&uLVtb1iPj;NIX8Np`{cgq6*9s0qWu-K(cin2qP;AR5A2wJ>YYzO( z(aY(qtx}5q*@a5jNr$hem-y7n5j@p6znj$;7 zR7~1aEAl17El{x5w75j5Lp_{EH zWt_El@;ULE%2L7l%C9N5<)xw+%zBIMZ0o|xM-Qmt=hWUq>yn=h+jqrJtA#6O-iP7w zf7X-SwO`TWG_M9)0J2~1KCJ9;IB_YqJt!up%b*;fSG6vRSzkY=?vV}tj|!TIXZ{W{ zl-dTvxAq#Hq#7>gXhkI?{gz-xN_fYSmR2-R6djIQP|OJ$gP3#8ovRGA!RKqcgl_Ac zEmBMVhP~9{v(xgOdZDt;#aH{)Dvj@5lyvttPB`JGRn}}^py`SeTG$DI?Mwvwi`I1z zSpkG!*%iF86KAdELJ@UIG@l`!S#J8GJVs*KS7fc*Cwm7!%4)PiAiUK{Gb-1r@bC&TWuLx1(C9@g+ey_) zBl%}<&6(LvM{Y_Q}#Z2d)}RQ7Yz7C)En2CNRl4_HF1oq^`P81`wSL{U_|bZ)6uY?g*&lKUtr46XYk zD1J!Bmo-Do#oso}?@niLj)~L3kQ?6otCgT^PvyPvwgK96;d^0hibBtZJT5XpX~TAr z*!3E>D@m1 zy)@2k4+CiP+ZkV+pM60ug-vf$iX{?Hid%9jGSAR#0$N-vFUJ&A1Yi zNtDbBjg#{?PtPFLG2YCLV4CXxd=q)SD!9$D&0Z7~;k)-kDW$6jQAFF>NzX+iy3zg>rxtsiMESxzpg{V9DzV>gTqREN3u!>(TE$QdPZsXDkp2C{%=i8A2T) zWaK+e7a9}7fx+q%1hAi1w034&AI3Zvy=#&ma>f2-sN$Aet{?EJ z-<7#2aU$B*OFwdsS(vdLUA|bvnDH{21*F|AyKB<7@v(|sbQ-#!i=c&cRDC8Qh9^>& zH0(gCMN7!@FVN4AUkWv;N;#`~u>Ot#j_?fqYbXtuG>K18X;QxCiyGt#DsiKL1eG|4 z?g1;GVP>F7T7QJEK_%*;5faqe@zkM~pV}}Zgoz@J4MYKh)bR>l5XlGkuU~Lhs{)h} zPX*)GSDJF#*wgCRb~D+ivoW*>?ZcDvm+E&lo!y|RVp8~4sYbJg zDu80#2@J_g?Egbj#;X{ssDWF8QCr zX$?b&ll6PJlzOvGwZi5l5JCxh;LP!Mx&|w*EPYwNP@|}PS}>fAp&?F35=Fiw3=!0- zW(xEFbeepQND|)?(b{}eL|94QcS+~FEfT9lPKOajLueN%!2t~O0Wv6^U_rwAo97aA zm^2E4R$dnX0HYR@kX9@ra0j(6E}2J3DO$ynTLK6jC93GqQ^7L(umStwmYQmkY{_7hchzEc6APX>Vz4pOxZL%&y^KXi2_H6wNa zUHW3?66d6~J--k_!I(3lAlI51CWJRAaXoA`DW+0g^IK~)xHCUIIe70!9)JUtcbkGf z>msfcw9Vsc1{~2n45@;KAxdi*P6it0G3h9*Z z@K^V1YZmlBPhd!9W&OFe(_$gmkwk!x=S-#_rqu#^k&jQ+q|8c@J7?6{TmDsYrqU(j z;>z*?sFN%qB`1qVF$C5m>+3?rchiLvqcE}!TaLK;iSCJ_fk`Y6GQ6iJflhFhoa%r` z)qNkR*;YDgj$H+BMY0ubBHd2UXwg7{!D?v*xH;+AO&hnj&35=W@olQ}U_$qd^cweA z_LNYmKdVopDz%0Lh^0Y~37~s1D2Ip)O)O6oAV1bo!;K4;Isqy3;raD-U;1;Szm+z7 z{p?I&GitM02tpzesF0KGBm^HAe^OQH4`+bnYhQh=&kx+~18Y1T-;+RV>w7uW zEL-9R$m)IT@&YOLY1#GKxzI}~{EJmdP1HupsM8@nT*3KV?H`|euT85k$Qo26D2ygv zE5KgUAu7>ST4!xaP@4ov94nMN0-~~9!_Ya5w;u5))S#wwj`9)Cdf&0tYfi2s?!z9~ z)lcASe4b+%TYvU?4Mcx&7%be#7+q3XZjBH*okX|^@8cJq2#Z!O`aZDfoT*$Rq;D#?~uB-AV?h1^};2a#K6OoGvthr$k@ zrpq0%ApRIa*WsU@B>Y@?@Zr|VP7)j%77m(m{b;@P|cYX{>d`_)6Y12K6!CH=v0y&vR2^D-I{qon6Gu3`=sj_A(cn zzL=>471yxDZWIPC5>9`Ngw+*>k{K5z)q2HWSQ7L~)8?d^Pt{SH>gF4@(-eZEj9AzN-@<)5|82Sq(W|0nN#9Gh z#%fgE2#kdYPw;m~B~h_7A4 z!$~)_#w5M-fmNfQaA;@ah00zZ5_vQk-yC!_M+lcIVcAExh(N6_ASkMem|0V9?3P{k z>t&;+^9?si$E-s~X*K?77v)kqX6$v<1~f4B!QT{&-(GwGoc{$@KJaTKy=iZXn z?PB}Aick&xUYxnnGm#_VSi@7o_Pr{LIFsPthzd~Vh9&S~k8_P6NkVi@^4>m*S}3i# zepfic(o_}J&EgqAK+XhjZ&N$m?JNtzj9zp?%>7}^!KXKYzemCrhC3W zit}PBGD5dNKWy8JUEG;O4y3X4j?}9(m2={dV;oEn z8WJnH7kkDSotq{ik)}VHbU={;&WzEK@?CaiX+383h?{p+QiIrsM0|quIWAD6S-chS zOv68=21%%etbmp1XVfKBYqy-z2p7k&GvdzN^HsyXs|c=Bis2MLzPqL|xPa1Yn@VCh zFF};IGISLU^pf7YWwLi0tc@ipgt?RN+OzA7YkS51*y*+UWJSW{F@jQy^J?@BU>RKsX2cxrqRXc3;g3nG*I` z!B#2)iiE0$q^;w@y2XRVxBuFwd~6qK09xPP+g^0`RcGg`ImVL%EMoF~O3_2(L^arI zv1R@yTV+Fb={(l`M1P`4UDKyo4mqtOLLDj-AoYvo6Hou(! zXdrgSz?z){u{$?rYTDM`Oh_~WUF&LaU6F+KCs)-`ob}L>)3MRWnj6hWOC~XJE(#*b z4EKKZX4lOD2=|trU(AettTK>3>*Z8;X%O^P^_>^9Ws(#i_*V=SgjSo>MeO0Bl-fR= z%sS*i1D2pp>q)Fcq4F}wvMtF#n522e^ZkACX}Mn;h~!f7qd@?WipY{*ef9+D9k016 zGQGRl{Vl#-*R=Apgc1b^!{gP>xhqgCwrT30*$?cOI|e>JoFXVGecONEx%a3V)tt*| zM+JWa=I-XdDiCPe8{Pg9-o=BESu)DN3^{C*DQ%q7g~4=tNZH9sC%c7fOBVdJjRR@I zk){JDVEGBHk9^GKQBC7%VGi2sfz$S}V7dFCL4cJb& zaSfOAYKDBhYc7lF3i{H^oCX2c8M?sA`4Kk%xf$#S));QI*bDAtb^JyM_Pk1692jmLX__)ooLFE@;9 zLE$-LRXWGXCbro>31tx)5vA1w>LsER%ZS2Z2wz-Roez#Jk(+LB^{76Jq~bWr3|j1O zRTaP;ycEk4cz;x4PgfP{pLd$e;zTpEBRV9s_z|P6I4SruN z-w9CN?JxT3l}QTU-!?d4Lc|axx4x({HmFlxls1e0{GD<`Rn}_EW6f_NfojF}cbzNl zGmhC$BgihV?_eTKekc2C>CIlG_}G0ozGst%{jZDcLF>`x#hd!sLxu zWo-4J%wdple;j{&yIuBRL#tY8KO85&Vki)K-HSW(3U~*}urpOLI2S&81sJcn&QPCvdp5H~*eNZlLsB zFj`oKVF#PRqKLRw1sA@i$Z7Ak8k<$8%Ly&u;ytak-w4PG!CO&ojP)a&A9&tuL@7@I zhAIje-FHw>ijAu(&hf9VTXl&eSt52?4X{|+plgeoeoR~VXX_H2rR@L`XCmTZApjXw z*67e#H+1rvq%>Oy+cA^c)XIw~txK+j0Eb|#{?5F9&hDD}UAy!@oF6W2%$Ymq@3%)K zs8^6uh^oU3-VwRj{Td86M^Z>QY?eu+&`+Y$LY;?x{LXLhR2`w!0%mbauQku&(nWO) z=w&r_E8vAPPOdv{%)X7}Af!Da7a*?0Sb?@-sii+f%}3&R=(^Z)A{9lMQS{J&be|T8 z9o><`|HAv?A8J5KgFo0l!Y^IlP`(Q)7{m3iP*3Y0zmAbWE+2ck-*L=_LjuS& z>}CT#FtT4F^uW0k2NM1ufi|>ACfq4e4XbjrO;*0V#IcBAHFb!B?ZeFvj8abUPkyy9 zs<5#i@?If|Y85H!gcePTaXI`g3#$TQNtg-x*}kezBP5|QsD<*w@I@a?vsYzhY{W4q z|Am*ze7gaXJo>edOr4zJe0)Jfa$PLRmf(60#{Nu&AJoQqa*;?ic|yVXJBp$Ul3V=y zHy#2y+&imnm+H)pH3vAv37}?v%a=T_I)00XFPLV~!I!AEHF9V+9@T+)>5f*Ly$VvvdxP2>oAu!8lQox|I+n*~iU6 z3@jjV`mH5neELZ3e9U<~E{r9&ODnNUA(XPN-4#BalfM%x!JXh z_weemU*PJu>PY42B2#~Axb!jR>c?9N1xu&vk%(KIJ7eVfhF*;83RA!4AD_oJZnWq$ zzG?9fBX$0h-ygc%-(KZ}me+r1Eo6GLGGNvJ z>Phfrj(_~OH}p#hm#LNn$~nI}QG#yqlXuC+jD4205+L21Mv5pyMn&Gge=m&J+$pS6 z^=8x1)s4LWzupMMZ}>u4rHuW9Df#YvPR5s`zcl2U{?Xfx-oWtNZfuA7O8Y;MAGx$r z)wGkNZ=?SCw>xR%L$tS*2Esn9Wmk_w$~Wv_(D_x$J+cx*FUHCA-xwHmK}PK`{{o(>xX7L1%+rtWNbdjpMi1=>=$i`no0^wS4|-|%!dUkkb~ycW z`ul<=6Xdy)WBH(9A?H7@%D9`Nokz4&VQ6z%Uc#-`uT7*XaIO{%7!Ps$M|V5AlZW57 z-wr1H&N+P=t(PT1pAN;$KFmW>( zXAKDM|KH+nA(^t}zN8d(sSVNN>=>Gm|lcl{a z+5@YWD6;U(P=MRO$ME@oa7(U!LNK=XGMhT-;Nt<}Oyy%D6I|TC+peqm@ofTo_DN}_ z(B06l!a7 zE@b@yY=&i47l%dNqt#^h{SV){{{S4^HK*`5bj@>A@6^VY?f&!g96Bgeh>fU3gteJW z{&zNV&$UpMRtumTF7x;OlTQ#o_W9?J1rdAEU_Ac+3a3Z!BcB=f?aB9L^Pk{n~TMu6eruBgNZU_Tlys3nVW#Y)KOs=VgBV1ys%4p*6(qC6mTwPn42v8_Rww zt&GkL$3-#2K8?uzk6CfLx2bdCp-gHR#X(l`)PJ!R$ggA)h13v}tZhXeqo1X&*uOit#-4BTa8atImld_J zvU11C{k4(0vvwRdVFLthhF^NMCn}WI7`kiBS%fy ziZBga%6*rM|C`YTyvMgmT`avgvLp+qucgJYw2S!H8#aFtiA-ktM=qq>T3oV6j2TB! zTf<-aFN`i=4_3{n+CtPdm)Ug5FBd-G-XtKY=kEyYxuuwN(d@ik z?8ZEsUuHW{GDVWwyZXZKTG`OkKyS-!)9J|tts=G^HN~K+X@ff!Ly2r5(yKrl>83MI z@9!J590c7zgQ_l-^mTKIyaG*!C}73ZTm1icvhXnt{7fxfX`M_=Mz)vf5Z!a6TKx^p z03TLBiU<_zGf-o}tlu#KJRKtLOGr07G}KTEdZ<>-0Gr1|`ay<+`-~LEOsIH|MZW!w z=}vb>HRxj{!UmYi{fGBi{vxIiBisowa4+zDZd3q>;d$9uRuR$PTj9uF#Ifu_j^&IcDevf?8hpTq;VR@eY1bJ6m%yq* zvo5N%CKJsTBI4K*XDH?0U$dfV^Gkw>^}!DlD#h2~)fX{g*f8=dLofbz+>J>7iwrV` zjTAqI5Az|Hpt4frNSe!9wEW0~H-Rvsqq%I$lZ;JMH335)BwEtuBfOo(gkIzT-ulHE zOT5C>ct$&Le8DaWzrU2RI{L2Nb48|&wHXB4m`?8jX-c6KFi2hk%S08~iM{=i=*GrR zYa^JvmY8E{)kZypjO*t7M@8^LhW6zmfI%o;NAEXG@PoB+L9u(?4IAF2+cti%9LBWF1 z_#nGmHsk0M=EZZ#GviDN?OcPCcELtI_Ox6`76 z!@Es3Z=Q$&{mzTl;M#KU-nNVGg~rf&F+!KIbfyi!<3dx*kDGQAkv>eAi8-0YYO4gb z($aDZT|x&Vz!yQzdlEfaDWq*lbYx8m?zTXd6B6X>4KAgWc-Ggg4Gf$=mG56xAHySX z^61RX9JAQ@os$j?N3`GgTnR2&)VjG?(TE^)Lcrl|$CG1?scWPV#4sW6t!>Q}j$hwQ zn7C*SpESBdbOFc|86u~vqG};U^yG-5E`fild0C$T^}op=W#%8dJEe=lb2d`Y@^^mFx`S~D$zsys!s`qWKv0%ZUJt)D4a0imuf+!Moz@|FV`4+(5Q z?6-HljW*z)WHS7*cn+r5hN;Wwe|XF-01_RM_M5@6el>6}GU*uGqSz!x4tO$H7G$a5 zn3$qm!i0e=m5)vwnfwOzx+8CK^&U)?|2edw&M#2?QSxPMC4#Q<(K5*x;wft}yIa3A z`|F8w$_6t#<1H|AcmAeANZM&_+yCcG^7#McGgloVk|X;5b=g0fJRP8jLhSw9H|5p?bR!cXe77DmH* z2Akjcl_68>gmFnN(Gx=JQ&wqO+?roJJ4wMSfq-sx1yi++UI0t`88G?K>CSs0y-ema zvQ64YXcyW(jag7QVj*W45%X{O(P-6amuCwpqPlhjH6Id=??35uI+&0 zdh$eMl~W%pLnYx4l$Iq#VVo#VLui>Ek{jethyA@u zXlGf1hs&4(W5B^lWcL+A3ax2#aQwR#!kzQZ1RJNC5X`~TW5cW}Xo$pE>}erKy`Z9p zI#?(Mk1S$}iLjAeQIXJ{tXynp9bojsynBd@VaT>JPX%oYg>v!SwfCkhUX%2bKtFCA z-0K#tS8VK`<}fYpU)H_C&tj7Zo_RMmBTBgEvTiuoNZ!Qt;vR{`sVYI{L=^cvhqZFc zcK{JRfUS`t_?f$cJy2}^NaPMZK0nkLCIGaPLz4)G7V$hKs5b72QC2Hd%&zd4K~I(& zV8%0_;KQrzwTY$m|%UmG1mrT%($=kXw~X_ z)02x!`9A(?7WZ(3V;6%%<>|n8R_YcUH#P!EK)@r22z3(~LV`!!HqUn8jsw17FCV^Uj?vz_Rzi-e(yUK9SJ~ZZqs;g_-L>6RsIS;sGnZ-^F65=JKk?oFPTmgeK==-zyf&2=Vb-s zVuO)zIp24Z*kU^nz{s?!g*aA>t%KMjH#CR8APNZ%=>$G*Q_;^U5S1-PX25ATRi!#th-mh{QL2U*3m*jp ziB*1pND>U3HYRwA;uK3r0Zq~2!V;O3upCOIA6od2tRDXW zu^K*Gj)1b;4w||+(TZA^tFQEK7m@4g@4oL71~isB!8hE@ zDr-W^{himjV=-BxsjUYjG_p^d;eazJ$b8s3v+a-lBsOC9RKIP8pr+}wN#Kk0-z%*d zJI;Fj!L(%hykR6*gVo97FjIBE{O8=^sKoUWi^!NJ_4-{OLFRRzI9oa#wcVt8a&nTP z3b41!b8`0-$|$)50Qc5}Ps?gnj%oknG$#pJPn0 ziPB(Mk;#wR1tnxWEs-->AZ2a%r|RTm;1-m9&p*HM&?23{vuy4FR)<)Zd-_7*^yP_1 zzHCIKvc^fJ0;CzDu1z_nT;!=HYdb!q`c28t2$pQ*?H@e4&B!LTU@9Lb%kss`PCmY- z>d(W zljE##rZbr&2qC(z2Jq_C?YoZD-c-6o#zvQ63ANH- z3Zxc3ENV=qPvAI?*j%yM0k61s(XkBDY*!D}2Yqhj+1(7$M%r+tE zHiBY70_!GYNL5)k(ui^>Qn~AsF)?eQE1&}+e1P?mfrXprjU8Fcj4aAP?-o02k#y^i8tvGa{ zv|#GSVFXdx{$V5SozS`YV-iO7<@reVia{JKP2x5R^Ry=_H=xWE1hJY+MK#Yz8E8~W zb)WG}u?+y`vX>|csBSRq=^<=MYeaZNAf3siOg;9GS$c2&ahZk=8e(P~+{j9ohD;ul zWdr?a$}wzoKmsGc2G6b7bLskTr8AQ2^ivAF$;=GuC__EjlhErT2>S(+hRPwB7(krL zArqOr9`K6O;SChC3A?hdL^5x>)zEr$&N2N@GyC#MGr+!d#qpGXu*nu75u(YGYm>r4 zXy-=FASO!_{Td9cY7>B1>eav+&vISj%`h@olEl<1J*04>WDq^tH=-NsI1)|JQW4_j zR4~J}OncSPyfIlD7LmWz{~t{u}me{=wV=qsvH&Ud=HKHM`_XSwkkO#caap zo~r7!7DRDuWX5t!Y2#i>ZG2+{eNakFJ0O%X?AJ|VyHlhk@cl+MZA36!!2H$@0a`6! zTtlI56_NsySzaJ9YL^t^WS#eW)`S`uw4Ek`FepeXEV2fl++#*X;ljGe_acwW;>yZ% zC0d(qO>n(7h3`MZUu1>nH?RT|JiyLRt4a^A;kRiFazllVRz5f|Vb-p(wrS6WHsyZw1RR+H1vXdN&l%Gv)D(;p?PX5$$vg zm`}jJ&u6Q@9`;ytVx&XYW_cqG9LCRtK|qACE@ATLtB*!6>}%gp)>K#?L=7Zbt5dp1 z>F}|e2^&d)O#lN-M4@edJXSiD)R7U*DXAqwpCfYxD7f0GJi`7M^j3`w>k?+nJ}KOQ z1U#=`VawmdAO5z4)Jr5_pXS{-eR4lo3y*Pc-=DfrX*_rivOAf`C{`jR6q3~OM(%qT zA&o85^L{|JIq*;<3C~H|u)s68nv6AVy@L#Ho!G~+a?koj8dtQcd~{x*M&ev2?(as# z%r)SNQU5UXF0#s{md0G~xQuO&U~`O11#l5e#=AN;t-7bf^t%?3UT_-oE`hmuGJ_68 zM`h0}qAHU~Sb|lM&(=mrryrS@v=Adg3cll@=A14d;ykGP6B?sDL>C9=f^Si1-C9kk zIvHe#9(a;%rUB)lVgKst$93e=Klobwc>hmfi&8tKqTzDic&CpKH@swI*Uk}XBE-El zSqN|vr<4wWrsV-D>%CSrmOm_vg3#G{we);Cd_8s0?uCUCL2_jz@FgQ>J|o1|ftgr_ z^_Y%NE*eZ3*8Fs!Njx<;N7AZov6NB(2WGTT1%NT;Se(eX%-d8Z|KQyRp3VYK3mGygooGFj60N+K z$XoBB(%xw$GasY;7ESu_A9yZgm&qPvtesXasSr4JJP6D|jWLLz{arOyh=5Lr;)j$r zR0J}tk@@9#J%eJunwlnuF3$8$iMsZJ9?D&95{pAD_RA``EB%6gWZmcbZ3`c{Fn8 zh^oUE5m3tM+0W+Dy_ajhF#}chiry>HA`v>*MSs+hj|Y^a3Q#-Xpip#x;V1p~4gc6! zY7Tvcdvs6GjbzQ=MC!#%2Flb8BO=2X_CK*R-VpR+O5P!wEF6Bbbk!J*QR+R6^AdkQ zDX7mXfR%B>YSS|JX;x#RAAG0XW0wVg;=#A*9yIVjrV%k@X82PA~jt$cPwq;y%!M15pGqD-Ev_ZD7zw7qH2x(^a z`|td=kX&5npZudIa+(jL%Ky`tDbp=`(u~UZS2NOndH53YD<)-M9=V*M7r)t|qnk$d zG8=C7?GpdjEL{1vjIDnM637DHiGYA8mXV=DWODpH#&lCiu?I3rGcO)k-s6xFQ@h^WhY5~Si zmtGu>e{XD)UHV(URfi$j)&u1u5Z8u<3^wC-3J2d;jI7H5*O3M3ufg0yL~ge(j!0cE zf$ri;3Yjc|rozp2KUN#x+URK444H)Xz}b#`WVA1dxjqZ|+WBlMILoHOr-(PMt^R9S zH5qr{qhsmitRixm^fx2WASMTghY?y?f^qU*V$;9XRJB2$ivO8B8pRFFbukLckbn@Nr=5Ljj!!hTWNi1@5O~3cV_%`yc2B+ZOk0WsSqk7 zg*X%n^;-rIT&kC2E*NB1nC$M#?i=`7iR}1luw=b_F}q7D)Hdq+mMN2AIu`zYYArvA z3eorJO!_meRd@n^8QIddAGyOcXQaV{23k*t&qsR8rJZYf+g)d5Xjl~}#LNXurMUEa_=Ua}mn zk<;x*}yEIk+P>m>%Co1yU14mFu@Qq4mFZTq=Kb29j#Xws+1 zP<{$2n1~fCCHFuqjuQ&{x)7e8I!SDQ@@rmi2=9I=EQ27!Tm7GY{e6y57psP42NxuP zc%OM-m!N`_pT95B+9!#5=>zEPIHOjyf#?s}LP3n%|5#^YZI^8ozIVkyz4O2d%(Poq zRYn>I&}6wxEi9pb&krq$t6R!O?rW@qHr1Gid)$?T!%&vW&^VGiHgGTo(VZ6oFPOx( zN~AJ`bSH!@Jnmb?ZE?1U(A?YM5!klWytzVT);xZ8pCrX0{TCsa<3Or!5KyxbQ|?A_ zPQtvPoMMPt`X$iuL#+E&e}|AmS)EyD-xZyL$&@VtrzdsvDfazLaems0C2_X1=(k55 z?0^uT63-qe@6tCM6{LQ>Xn} z5D6;SZ?JKBInwZ0G78*?#)B`&A}7ulvJ5sZR}( zFoBYR75~1Xz5TlNP{%WDH(9L|VZ6YP1CY3yX=N7n)�|HLz^3Jgn6SZKF$n-rH7S zM3fvVG`YS$+2hNN~)^V0HIznhO2-RKdJkjFm+Bk{rd)uJLnyu@dcF<}8moc}+ zABKY>;`M)yxQ@-khu2Up6g(l^>d^V7ljyw#ERPx?HtcsLBVRi??(3iU8kGD(fjF=v zWSnPrL6V?)y5{%IiJ`Z?mTAAbo$Z2;T>~U6I zyw#`3Q7qr*SzYNzo{}erO4%$8TYJc0?saE~=wh$aETrQ{F16Pc=3jSCB@<*0`OhXA z9ciVWvIFHlrFO=E4P1tnd!bQpqQQ4*f^BHZUDNDeRKGZKkkna-Q+_I#EQygii-U?) z`W#mZbqp7Hhp1Lx2TP<_P6og1x-1jCW7(rk7WcPu$L=~khkdiy@}&cR?)-Eueumr| zIWgYyLsQhx=zV<1z|Io5h;`b{c{{Jmuc;mAOHOKPjVkN&NzN;&#|XdP?k|Viq#cVA zD`P6kOg7AMnZU#~fnkd51jdnWDNM`DJol5sB3l&0ouWj1tNtqFxg6T~NdD%km7PAp z10qwFZ{bSayuGDX&s$vg5*(OQ$-}qF_BN^smM8r3TuI+v)p;F{duJ#AGoldoyw=zB z`BWm1dHzfFoWqev-Cpl{TBj1G7Vq1As>33-Mju(Ga5ui_+(m3%mX~hy_cVNaSHhTX z%^!cm^X4-?aL?L$TX!Mz5qY{>qrE)3kwI|^b&1&b$ufR|NbLEh8_N5iM~E!*zY4{e z<=@gV%;;c!m$<+Baf1PjmMe8<<#*3!6I3}$dghdMSNYf>qEj_kidi~Zo%MOM=L_Uf zfKG^2)-ZV?zw*Mo`g)>09s{(A)WS`3l-nwk1#d^`V*0sxUUKUeCqrb6##as(nhl5mOPoi8sgDih6Iti!Jq7L7Bv z>=ak=YvZ_2=fVdfk7b2ex0Fg1Og)vxyU)*%`L69I--S?oQ&oI&;K8k~(_DSZMr9O< zoP90kk#BDDdvCq;TBWP8Ak^~9JFOz-A3SB}8;e2?zenH^8}9GJO@=MA6z){>y6_WF zRcnNoN1J|N3|Ke;8f7=-2cAB5?AX~872Abtb{!WesE9ssodZfETAEw6SztBiW-i$% zt@;ULjJ1iEq9mP?Z|LO<%WFdg`#6wnVl77P>lz>5YlgJv{?*Y1!AgnsJlQ*<{_?vC ziG%4Tu86>^rRF#%RATfCLJmDSP#ABaYjeDAe+BDLsIgG2TU6#3$?1A+o-wkA zj!t7JWcbZGl4XB)8=K2AMJjvd$VX%Y*3LZ=HtvDBbGQO@dHDX3X7tNr7fR^gH{@VG zmvdWu#j&3cBJU{#D<1Y>6ZAQvd{=8~)qxV{pdZ&B6A{5EGPa<(1JwqL&3R(S-kh;T zHy{EZVnE&QkwU@O2pd;k`^mD8b}9*$Pq3cH0*@TJ-BKD86{eoJ3c;?Ae-+>z zX}o)V8rDwQbOho{XB9$}-#)PF#eqy_hQ$)K6{DVTrWT9(+yYDA6De1@PkP->f3W%N zw34mg+V994_5p64P~B0R<-L*fBeUAye9cX!hUuegK=VSb*(>H)oSkB}T_cPBlUnPHndhAQ^>DDj?=y1{8PE!sfoc&xLjK1jZBlJ_0BhetF{$zB=hz(LayzD~5#YEfP5*Tl^54 zl2=sMlH);biv`?CU_cLWL!!2!hYm+$T7__P6ds{*HY7>Cr8l0Nibv zS%;JDx&{PR-jUrbHFfe&hj~gGPPza`E^K=Dz+YxHU<$maS&47KJk5oOq0 z=@%Zz|7>?=aEm|VLck&?g(D@nug+tb%E1%D0YM;&HJLV6-ghlj+nqV1tGA#7LH7x} z6jtGb4=;S_6;=xKxt1HPdw%Aky6Oa?Lr%eLH~u?{yqo&!a=a^ipgt{QP#zcIQQyVg zZpdvkUqE?|B1`HHYb}PkL)Iay#e76y#85_0IWhkU{AY&Fy&GJN&iw`+%+W_Yr;R)c zX@<>z`;_cXp74|H+KV8tT3(y=K6Gm=oI#{suyTZU@!sd}PIeVO)ihx~|Kp89&>>M< z(+jQpzCfPynUY1Nz|9p}Mst|7QZ9dZs#&%C<)U@w_g~+UFsSp;J~zqtFvajNW^X_B z_NcoT*U=%~nq=GA43X_{2#c+3-gatl`-K&hF4ogr;XvJGLv35M^KKb{Y&i*5O~)$| zZDMCGlKdWY#+EC<-W&m0UEs0CJ2+01>Yt+>eH>D1i4)B~ot>}JR2ZsWuIXo6$Nqld zO(D&cB!Xso7`5%o4poZb?VaD2Fu6|JRM|q>ip`RN-zi3Ak-jF(F-_U>kK6rkV&>2M zJ}mg)?%O-}FX1)+YwN}rP*S~&n_YRnblxV~zQqy-)XX{ZV4NExmP|c&T%U8fe58o* ziBBGD#IE0&_+05C5!pcIE8opA>5O7t`-YLD2RU5~q+-Pu>%bhz))Hx1<}GOyi6JGG zD+Jl!mR{r8)r_z_x-!{*g%NYR+%!k5QH!DDUvEKl(Q~^cZ7uIIUx@qi+zM|rO3Uu7 zF)`M3XqPL_!dyLF@#EP$icjm$Vd6ClWlAUrQkdR%)l1cuiF1wd;!5K!tK7D4?Eku@ zUcJOa?sLqI`Q>l}FZpwoQo8@@K5pjdwEZ%tQCm{yB^}7oPfP^ZAIC-T`$?{8>|>AHZ}Whrh?!6*^@UNfiYbOV_x$Ut!Hm02b_C%sYPO`uq)J{D2!rUk+7J*v9bbB%k$>VW6Ur0 zo$HIaUO%ty@0Snn?@1lppw^C3jS0L{3>{c3&sAXh;BL-j;!ir(A1GGf(g zJm;D#5@X54;=O7@Z^_adVIYHo58LZw2ApuPzH3bUd@=NmZKX2jYP~DI;2q)2_geQX z=}awipxr8DG-Fhz2ZR#_2Z0 zWZ}Vcqt?!+!gyiUh(o4+SHN24E8)8;xtGbE#=?aGB&)Sj{n8l|jFo!D8}fbvbAh~N z@X7l-MPlu`^u2f@LX+eYwsHzF%XQ-fV>m$;@1 zdG>~H`zf5nCrdj6q;ggW@uFHq9wR2)($lXKuwo zUoZJ4fmJvY@2)HL6jU{Ym(udZ8F0>wd;Hp7S;H88YIG@S86M1ZdDLd6*w^`Yh5lyw zT#i#jSVj)LDozs%j!4Td2d-!CsFg4-F9zsmwp{1Yj_UR1H9K~tqxQsky|`euCFVr(e8}wy{gGlM zCVBjf53LsP39V1V4u@4{5u450TX+|O($H>Je*g38*V4;hwoEmN zS)oEPJke3PQp;bM|4Cpvr6X-ULI=Ys%Wsf@Fp;$@1C#pz+Paf|3#)X{Q+%pXUssbZ z@}s=#Yd-Bh>6G!A1jf?+a(ONtKe}6p@Stm+&$k^-q z{?w%D&xHV-SQ3oey>)56TfeMpGCMzuWB2nd5trwc>ic#y^a34pduzVi$pq$*3Y^vc`b)!*Am%u!0gYkT1(4k?w(oEy{zr4;yAjpVEXBUPNQA34|~psF>?ZMUsc%p+h-Ph9`1 z!EJA=?~4qKOrP!kbbiS>rsXL&*RIR{iv>Fa zvLp~p)-DpoIMB!Ym#RAL+zD`TmP)L#5wf;7l%sA&ecdgKlnfUgKJ1`r_l0MXq~R^X z6wtbw-atf^)e(11oqk8WwiiYGL47=<7;Jf!FYg|3uuQ$&hFwKw)vBp*|Aelnu1?*w zfutQD26aD7B14H#!_`UZEOqe(cgiv-I6Fqaq`B>l#}wntB_huCP@L=$(bw^$Eeh_AMwG&0C6Eg4`7U zz@?+RfeSbtIhO*uu;u7RR|HUZq$Sy+^~@`iYM5!>*rp>S$wbwHR7#;Zsaj?%j2zPmTz)e|GjMcO1mC*lSTD@07CC)Su-@Eru z-HyVBv(_Dr35WpW`*$b(6?;-XJE)7eC4gy;FfZM;dI6Jbrvt%WAKp|3`m-+H8OqYT zv!)*@pSN_SA5O;HiBId|v5b0mc-|~O>VV$OZtixJ2hJOKZP&A%wD*u<(<1pptJ*>V zvGd!h+|tQPihG3=BUM$Drmn41;gv~UFPu?0@k)=bFULj>4*6G&oy${LWo)zeJP6fH zt(<*T@WTRROePd*o>ht=dd$xic!=e|HP+FN9)fR5!Y4hv82xjGo4jO0p!-eBQMwGe6 zcKuDhsK-T%m|P`Jyi2dSs-PiR>lXdE{!sDfK@5qoh85poy2xz)qn(H1h*?F1pKQT+ z%-?@E-_<^_$n~%p-xTidlRZXQ%#?m*x7`j-wQgMi7Ev%kphEEQ=1!EvGc(?|aEo@M zLub@pow4$EDacT}87psCvK6>VAKdkE$;~~?xc}Qs$`bVEKD@5uqQd*P;Lqnxd>}<# zv>lTee$bYZE;y$~h0l5CFuBg;lrF}Jb@=0!HG27JK*Q^;$psKv`}|__zdTGTlS|lwcB~63G+qmN!)< zCzdTLnRb0QIlTSsTh|esW@L<7vRw@PZZ2?U$Dv`Ir^t4D%BgHSC!U5SYfS@k{AH>H z59$(_-HT3b&>MCEvHm{6F2S|s;`nr#@%m%_-~ezYNWTf zOn7EgSH4S;&ib$DGk*J9*>Wj^8>4+!++77r_yQx^ZkSOY72s> zW)zF9Z4(|lZ`I~*Kkp_-%8-hoDk~!p`3}4lExO{u6ovv=00(rJdCe@8!b>;4%u%QmR6STGTpif?yk1Z^zqC)_rChaSk5r@ zIZSN)Rje=LcHa_thGeNxes$HWzIw6iNvpA4TGqJ@bQ&O$JsWf4J+F^zp#sIQL}U*W z?L4G8f`R3-^d5QGZJ?^V;T60eS(udPd zmA^oBpcEzGD4QF1Z%FgX&r!T#4cmOEC()jW687btT=TO?^hmAmyzJO|_};deN(12g zt{1*RTO)s4=7-TNHKh(cW$(%j=$Il}tNu zWy-0v8n?qgvw}|?^#U$Z^kVYyoI9_YZ=}Ef()$x-NZ&Z+%{qc%Hf@#GKfXLl6jwRM zT=hoB=(gCg-KTWjj1~52m^rF_!H!?WH?QgKz4NxS%Sp(``tr7S!}Dn8W%2MUoNkg2 zH2z})fEH@sUxSnGi=*=`4kq{M40Tg~;fP7eoV>kbcK}Ln)C=>V%Uf zG4AuDUw>`~N&4uIlWCx2?%}kWZkN5aZ@w2kdbXg6zSYvP!{s<_iRdhfmgx~|l3k3m z=(EexMZ-4gTD`+%9nH?@jP%MSCIqww2-H@1$3u+%Z;u#Y3wZ_}LYf z@Ak|Wox(W%RDapbHRb!o(lQR$K206aC*)^bTMj4s0KWP=_xA$JtAZAwA)@GtCrMml z#BsvHVp#UBU8>pxMok2$$0aaoPr=m3%uno`yaWzw`%2kRoO9WV!Oyr1s6tZc@rQQ}8AF4&2G@tuf4|+wu%hsOkpwp_srz)DL|;Vf)Sz zX@~Eeg4w+Lf@Vv9b=g_-rPF7DX|x_R ziAWy_XGVh+TAVNYka_KJ8nZWl#h;qoytCo06$O}=di@!{; zZfQIdi$0al%Dg;rj_3UwQ>*RYtbEiQJ#VVv)41wsE7H99Y+hgE>Bep@#q>aZVylXp zx=(t}1aH8x=xbQZBN3sUG3|PTVw2Y#k_EYIW8+L+mS#RCupTlY+QJMkReq8WEhAJ_DG(hx?~Ir z1ronLpKgS{VM&LFSOiMg#SpF7ZQlw|SS%W;-e>O1ty>{u&D^XLNUH^$oyOYiw!$x* zjO=bnr`*w5#j%J^R z4(CIhPBwkWiAYt@;-TZ0>8w4yaD-hYY{D`j`zOqGJo7A%MSDWlX|ix|HnsAbC3keuWhe1n9&2xlJ`O^98uIRAeyTD9Rghu zz7KcmjuPRA52~>AoF#s)h0s>B!Re_p7KPPORCBlqu$<+<#Q4zgO^fk&M3Bl;TFmw3 zUePr!<3piUK4MPMeE?KzK{cVeTqL3i=}ku9sx6!IPq!TC+uX42SmeC7EPIf%mh!Bj zpNVqD<@_%Pb+yls&ixmd`0u>ZQ%!_?vYQ_vJQQoDykhjXivL&Z^&Q2Sl@udMhR3rV z#Xa0Sw)-f56Fg>PZY4JW{4K|-3xlh^-06&Y?@a_7ATXUt{IaIfF8U*UxAKmd6Pxq? z6#W28`?|n8>FCep`V#v53Gk=qfWDEN5&j<0qgRDGLp8-8jcFD_NJ=pfq^xw8Y~Sm- zwA?vZd-4oafpvI#5uk`BVCpM`sue0+>;${G_Jk0(6yEH7SG7I_s7Ef;#c$9tG%}_N zb|BDznP6BHhQmy0;$00*XX=bmL{hGG0gW&w+&NZ?voC^yxD+6gm@OJ&?cbgr-|M8B zdw;()zaOUGCo$inE*ERnlFt16V^TXwtFlU}>wZm#;Q&aM2n zBTBnY_V+er&Bs}|LFU?#$xd~W2Dm~y{P%aSL=9!!o*!wpf$nRWom%E;8=ONWx6eE~ zzwq4sdYgGmU=v>#u*Zg=i}4XE7G3}&&IxvNKpIXo1!&Z%;wJ)^Wbh94Z=t}Og1RMu zYGhgZnDu+*Gj|4S+~gM=yZw*XbtmKQbtQF8`xy)pr&j$NPPL9J77lCBFxx>%%m9Ck zLf(fs$-OO>hn`PCa!5;F67)`!#Ivi_|o zRi42u3?H<0M<{8DzU$wbxbNpt8uL`}=lT0Fw!Yl;$}Dl3r0qXfyT8T)TBSkKL3|EW zE*n6QjKklcHfx!(d!<1pn8OTy;(Q1JE0+me>D$Z`HS0P>_@ZJUsaN>49BG97Qr%LU znP$x6N7(M{LH#Sl093(KJn?L(Y8E7;xq$ceBv>oogBwsK57!NNt1+f&f1V>etu}Bq zBn4Q*`ak1
t0_8Of(GlpJ8Ou?+>Whf6)fORs<2 z1L$b|vuTkc4`6-QeCX)6hgW9T)&sxD_@93p#?=!kY}x?xN%JqlUa+g@Xq7`N-I1uf zV2#M+N}CO>NjEtE5d)*o2gj)pgtX14e7Jb!>BCwCh9ju#uhiGoJp*OhWuVm%sAU83 zgb#TUfIA7H3%gr9aR})r*w%tq`IQj>G*a|$FJ3h1$kvbHw}IVt>M;@z?k;KN7@SXo z`sad94!hdwyVwmW_BH5Eih4jrQw3PhXuq}>jf<*C84z%RXrWo6$s&^FK)ZGIkBd+e zAz&n0hz;_a3{Vo{=(#@%1{z`Yn>jSG>rX;L8z>?RIsBNY&#nR{ksBd5F1ug_CDs5` zOEw*5(3hn{N2VY4>qMTABAMU)9~-^Dj++cC>aG_Wa&P^7f|Yp4vv2(T-Cv^@3j?kB z0)SRL^VT24FC| z1#^}S>Uwcu3Gq+9I#{F=UjXRk@8s>kj1k#{>HgLs1ah4=>v~_cbGiJsGO5?fa%=8k z*})GmKrd0cK-qo4tI~LJ@I4>!yuexS$OUHjDp1+GT1F|JgC5bW^VwB_F1WO!XHz(I zi5=Jri^l*`?E*S&g78f%_w$f#A(bK7+V%^L`uPQP`sVisvCdN-`bjtZeDjq0$+vum zO18N4D_numg2_A=v6NI^D+@Jq6YxCVM7!%oBAbH~cmkFrJ#WDQI$-kxs7lkm(vtlF zBkISmOFlVz{dp)ZZ}zr5$Q*^t1D#x9n9Em)6kLwqi8kpWtWH~-8ef92)=8Khc*w&7 zgRg@OkZ-3eZHBzT4DmL4%g{<#{T5UNko%rXK7NF3-@+W5%L<6MKW?e%9tSdKfHbv> z7jh(S^!QLANq8r*Xsk!gpBk1evvZzJoLU9xLe#*feoh^a$WV@Z=$+L6%z9iMMSCEDC~N~LQ3|x0X9a~YlpnM;g=u1!$D}?EPeK8AeV70Kjz56m?&s4D!}CY7`O%i@KldCR=`ThWpfk|xJFLxA zXMmQmj@61V0%3wVOcrT>ibAg)G2D$Xk5Cgr2Z#wvp%sw=^V8`!Ia$yVc7VlRVkV2I z+z`rJjhXq%wzU_!&8s}S{XyVzxdjH545JI3(CNwbTDNp!eHBPoKu2lVWdf_{Jc`h}a%ns2;Kp02{0KA3|!X(;hB?U!=A#JmhbIB3bum1AxkHPFm-}ASN-7C!5Ee6vA%BhOB1X=1;m?$PeahO9( z=4EvQ9=vQQj}1}wV=Uo<)~SsBG0IeXTwh{C(lzWO$L{~Y0LP; zdsyv*E<8G@54mBkXoWn$4V~GVCi%oqb^DgKrN)^w4v(*?J9GkZY_uZf{CaM|TkyU1 zprb~V6~iR7Dfuvwfv@<}_Tg>(WIJr9_n)SI?JibJ`;zs4eEYr~P1<8{cIB&Ilt-Z7 z?lU2&KlZQj26`-JrE(3RG^MvJOyo9(;cP}-QEpy7KskL_ZFwt&{j93DB|bn!2%Ugj zUFp2*J@&_hZ1Rwf045pgLIt8LEm=DBaSHWEvlLQiL0NYLYOm#ZTh}y9{;JkG1}oR$ z{X7OQ!{(hdb0-J}CILGWglNX}jHFja3bG|0uml?nv%gj&2Z1n*y7d z8Fi(VsS5@e!yBBYy~O9|y)5I#51cP{T3-PcGrK7~Q+TWnHjh(|Lu(+-uf1>1K<>vy zBSW$EH(BP-rxotv?@hGtW4LT?@=N^~SJ3V9U!>QsFusyT_`FD-t6sn~#$Va)-6GWa zdlmV9ihl>If5DGP0xuN|Fok@u&@17eKgst$KublQ&Gh4kMqe~K<%0C-aqZRp=(kuY z=Ntc5-zs1Wpue&&<&8ZlYC^aCR~hC1(CGc+NBjNNh>0V(!Pjc^C-z=RuJmttH9AmG zH{r+r?OjE`{72LNv*G#n$9-c+DSC`Y9$&rmw-+kbOV+gGKc3nDhi~D_4$W&VhHYh~ z{>L}{?T7pS`f-1~Ixk8z+m0A>tD)CBdfvJ7A1@o7i(e|rzkl&}IO5ko`P(1IN&s6) zACUaVuOHaAlr-c&Ronmd-}>jbrhTj7@$t-CbBdN?ELJCRtm6*I7lPW2tGxqXkKiTAYKmn(=>eW8cYF0)?ZvX4aO^>bo0XGcKS zj)pz(xEUeU71hV2x1`>$a6#;s`YY=MWvvqxBKUKZj7x5P5PUJ{FDus=Gyx_@>DnTD zzW13r-NbKi@>43$o6y9r}{NJ9ES}Na{9}!Xv?0z3d(MOUOU{Qakd*a~p zx@%chy+S%XF~X9mik=DB6Q1)Ig1w5|gvUf%fiOAD{L*_qu^77VE<~Q5Umk|5G#5bY zYS{O@Q)u83?*vTP3Nkf3mY?Mi$R2t7E2!^t!L|A3q@+H`^w5C!Ou+Ipzsn{bR10RHD28-3oeJq z-Pa{|Zp=k*BK8HDx^C$J4)m+~pwzWDQR zqDfQE^(C})>GI)c3P7Nokf3Av_Ox_*qMbUN?z9rghxnaJH7` z7wmiw@FwNNSdV&8SniX%zJ};xeLC;TC{V?Eg$WSI5~17XaH^z~)Qq>2cd<x-Bz3 znG>o*F2c%PX>Y46!>Nhtid=(BI+&>RhIjd>qqMhR&%3Ftl&1o=|w(k)pD_WpxF-7AI}W^+oTM=h42z{`0egkLXt|pB0A>PUK_r zzF#-|Q!a9@1Am_-T;^$M8?OL4#EY+#lU#*r)bfYw)&>cQS1?`kg=?sKUdJBw=c2Q} z#tooR9u-v`K~Fqv5jX!e{_SAoBuI_xnF<1jH9TJo=E&;~Z)67sshoKABI=bYPv8|B z2)@@3K6yDW8-~gUqdoK(w)0*djRM0*(_rW{W%|?w2!a{Jds&QvdaoPi1fM+0+B`si z5KQ+u@eShO8X^R|5;Ksu4Ir_4=s<-)$M3!ezL*w)kKM9vHXv;d#kq-as(*zWVE@w-pHO zp(#GpBeteiC1Atroj)RD9s5S=`yA}GcdPM#fmx&2)&@2`Iif60{_P-jDQAA^@moo~ zE-n^JOU^Xt*Qh8(uT4(n75??9UYQfpYz|(7;PX7--OAo`1^DLbS3Fb)@}&rYsM)3T zAYd`+DK3qMCpz_pjGXIxsONW?>4t&#HAcwm#a=w4QJ~bRz~0eQWm2yuwoz+esZH1G zHDlDpuzz5{i;lM;uc@0BWs5yz#!>@yyu^JmR^3)uN-@+a&2^7g<(e6-%jGi5rL zwj3B_V^JqlccPfNEW)C@32!Nvm)~S$Fg9Km9mQ zYOG=(O5iB6oj>l^fgt_{3#Z~FQScFUIo-xtwj8z8#_iaN5KGMJD))XMJ!;T`_oI`K zcpJD%3ajBZ$Hq3+EGYu4kO3$OOT536&LoH*+aTWHO9geTnX!iqvxyp3p<1t@;M-DnxevdR8YSe2n^zp#~#+(nM|<>CMSs7uk1APg3e zm$aI6V9FZeF0W9q5JRP`*!-H%%8)&W-wXs-;xL7F+}Bypd1_R=nmZ@}dRTe-w-FO) z>IZkTV-jW9UxQ^XjG|R}aP|d1`IvX4sDyXY|@ zl2PI-BlmmHRb3gwNA<%vO>CLY8|hPo#_6=3i8TfhSGcqrwF2!nO3$xY)l`6XN*xI9FQ7=etxHi9HHxgd!F7OS`BmQ3 zFK)mKYGZTBc;iuY3S`u1RSMTI+|GR5J9uTpa1sNkRztfGiE#jdPh^v1Y&0<8-T3hU z3Zb&~@lXzh!gH(nfIn^%9D;rp`@YQ0a)rz_>n@}TbwR6PpnEj&Y*W6eMvMEFyOG3) z82krNmY;!mlI)$Hji5#mCXngI_Ge#_jK9&E8dP6>AXYT-=?vyN=T<$?^V>cOiMqF- z(6l_dJhF5SLPa7zau*%~5724THaRatVdIq|7q?kILz$b0(l$^wr3TsfwwxUcIc}Q6 zS+B1_-+O*j;RW=A86X#8wMi6-9sin#dz|?$nwor?p`;r+ybXZ{<>><%lZ~G_n(zk& zO5d=5^q$&;z{5jNVr^A`BB`)a#zB}1zuk^6afy8;8`^5eCKVl>Ux~KgQ1Lxu(r~mza?h#P zphqyl++uqICyCK@i}!yQM_kzs!?+Ob7wTUP1!_2qNYZ~Z%A@~dMS}SN{Zt!$)pkr_ zd^y3u!ej~gT&UYUe260l2E(w6kmONZJDy1FUdh3#6K-FJYdh#st!WCeY1wI?Ol2^u z`6Hy8t8Ix~3G9$H5UYZR+Kj&a#9oh?&&bY3a4&(^E3kDQ936)C>G^Y^^Wxfew8&tP7%VEVrVIuVnRp_>-6%j`5~(r^l))T zrEirHIe7aCJUUT_JO8U>vIAJ$uC7r07o}4pu?5+S!89wimy0; z&*f^z0arwa=h3_8%%6z3K_s#q-;XnbNj9+$Uuqt?03+($U%t(6orjVX>A`;q2x*nF z;Wj(K-dAa#^p6ho+Ys?P$f5L<6f5Yx&l>rc>3kfw38s(=1;50Sk?{4=dK{}82zQer zw>hLvsFo(@51^Ya*f#p$CWwF(#H`B6nLFSbJRQ&LY2N2BeRgtu4Mv(K6+Qd&81-$7=(vvfQ?Ilg4;U8#?QmMceh|1A7~NoEbJkI zq~&CrJGu4){$P+5hp;Q;m~~{oDu!v^UKjP~s}PoAlez+8vxj&P-({nbY&6zG%5GBh z&eL3`S>ea0X*|Ojlc#~QT9sGs(1(?61VMAd3_9H?w`YQU4)Y`Wn5Gr`F7(~IulIm% zt^*qS3ZJ*h8^G9^Lkv=Am0-JC)Q%SOB#`pcPOuXCmOjz{GaJT3()sSM*2v`%qY|s3 z#_RHL7aHw#l2gAi96x^f7lLENgPfAP4jEv=>LZ2PFT+Dy`{r%I8FF_NcXyLs!Sf8- z9FZMG?3GSO3ci~Q^ez1d&PZ|5`!(*@(AI|$sIUa&R-Ko1>_-z6<_QxeUqQ4QaSf;Y zhod{_3+@=GarVzG<9A1ccVCNWmt)GYRh3=boAe^)RgnxOQelTKUd9DUA535V+-}vl zLxO#voto4o->kb0OX3}IPhkew`!}ABFpn->a$reX$*IFW3ZQ-i7li<~QSrmt2~K=? z;7DzjE%=NTZjQI4?8)aGeEx1p3oII@U3n>rO#8-qrD^TJFV%@uD!SMsotm*C_)XQQ zsctZ`#9oslTv0Z8EZm;z3VN=A?S8!ykXHcsK^OU;s^lWrc!XS>QgMX{JsQ_DfbfkZ z!N#(~+gE9}l1DP$Rt2~8)LGy35fwAuD*CDgBO@%2h@?1vrX);ZW3X7%sGZ_#zx4$A z4Ri@DIcKg~G>LCdh}BvFOO@6CB+Q`owI@lq*vEMGZ>_o>>9v1oA)jheHHk_D55IKf z!RPwFOwl}7H#|5*_ud;fv|Fy9%lZ)TKiOX(z%7*6%96z&LgYpLY!E>jM^AT&xUdF| zF_WKGe1|2>%bmh+OCgZwz@_7C9F13JUVAjOhxDIR%)?New>KgrX_Ai($}5vFdftia zs+LbJ74Eq1RO*l8?^?wytPt1SE+^S7i(u8C91xSE_$!j z+fw?G7z_)Oz#&_>zK3o4DM=Fp@ZvBmEGHC*oo?X?nv)i{un%Fb1`SCDIJt0zyl*PNP ze4to%At$e7Q%emPm|dvf1G>sdEj{I4$+*5_rE+iwI$cBi8}?hn)CIzXycTWYPH*b` zah=uZ%{69YOY%|1c(qTUIhsItbZo=C{*#({$i<9w*TPpmKIItk>h#ySSSuquv8cDD zS8Fm_-g1}KUTo1q;CyB)exN0VjFCS`%nFKE%1EZzN|VF6;inCpqRwueio!E)L)d}^ zYY?N}w*7OQ;ed#uNt(#(FOXmMH9g<~WLA)^3c|Ls2+1L?``?8?v?5z&{__-fC?A~P zhpdGz?fN@5vz09V$(FM}JA4-+?we0*`mA4cbMsevxTxO z+noFhMLl=VbxGcu1g72?ZL-odLkvFMjgT1=oWniPblJdV9)c^zM6*se_PddsrPk#K z@yOigW2E8|W`=4I#o;;{`k15Tpzdw9#z@S)^X<*A!Sk zrn&RuDuGO^kr>4m9o()oo&svl<6$OFRF0>_(${6Ir>#Wq7RNsTcMsRP?%X(tij+`LA9lY@s;N#dXv5}@ouoi57#syz}-%7O8geTp@|t+JxRy(I3Pu<${bfi=|JAOUR zk%jYat(|Ut#%9eda?+5_h$tRE$*@gYL~nHk^isBs_h;vCYD1s~`OX-pwHZlJUPpup z5~O6cwdp;*8%W7#-s2kYP)x9oTzpPcOnp*0i+RR6B`;y@`H*3{7AS&2(nXB-vVBfD zk|ZNRh+jDu-n;Gcj`Aah=>h?j!uW*uj;&pc9qeQlaVs1gi|{suM6tXr1ij_+QbTM( zYc<8Zh{};p$dCL;)I#|Y*|~@rD)Cm+U{X$KSfuTEev4wwj}JH?wGXxP!gUq-JFvIk zpH&qO8vWz=Vacl?9OgQkh0!jBhNMpB$SPbKZ#R!OJ%74aEB?+M`@JJN)7u(X_@$s; zo#az|of2`5SZXCYpD7Bgm;CW1$Fn8Vz4qfLmp(<&lHIkDh*=DG;sg;Ai`F^>-6HJ! zTObLjH33{7;S1;*TZbSK$rD~b>(5WLpB6aZu^)mR-$giMiR&i~T>mj~42>=-J$HS@}HPi~nRx@=H7gjTYl?1Ub<1y#|`R%z8GBz$d*IxAl; z<;ex0@V%m$_rY!lk*PrXO1z0Uo`>8C!Bu|c#V~@02+u}>!{YNc{ZzJQ58(pTddMVJ zVv7zzkjmUz;vU8T;kkO={cnvi7ac)#!;uA=G^UwsqWA_F_jx=Gbi~7Su*uyZs%4Kl z3&}~J9u18?vlw`7F@9mm0;297m_dVV4E60=PXS8Gfy(({f$&)BrUUHjd0sNmEwkkV zqzgsYpI!s>5$Q^HFA<1GWj-#$Z@aA%Jq+ZT#^rn{SNwxlZhg>_K*-?-)=JU~$iE5&NH}B|7(QeG0y=rd* zz??pYg6$-M`aF3ARiqEjTyUqA;(Of!q+5hb8bp@q5KQ{|L<&<*V#CEUrw?U_Cu5d1 zN*;^ihRU;V*^2dz) zi;>dtJ)rGoezJ%^Pbrhlx^)6#cn&%_i_bOTllzXXe06?@=bqddS>*@KcbpUBwIKJQ zwF$$>)eYM&1Wa_9j?n;t{y!!gh{4TDS~%0G^t)yr$X!m7`UAh$Ljc2d2e49XCkVk8 zJkPy@rFd5`?b?>|+WJ@WlDX7Z;LsHSXpk1u%H#qECxPWCM(jhls zU)IWsHk)CKj{z5Q7GnAi$Qn_Ry3{&!gOWe8@JwIt&T*KRM2-mAq?@vRdcvu3BF6*A zfblsI$x3in5)H!1V&2JMX*xIitGvy?wVVH>z0*Mp0oOKr#L{4gb&!$X+6`#3PVwKXe~4YcbN1DS|PKVu6>R? zc)mx5Y>drx9rHG2b7bMGAbvOCMCPC=+7(_l|4x?4MFril{T80}pe~#10{ z@zs!67qEO<%C0L(kp_7v1(<9$P5QA@VB*>aY!Ds4iGZgrx-X| zvE9CLc|!pdtgCPIHu?z3av1JHsSx?~ zp{<&+`#c>Oaef{%KuYj6YU!#0Qf5#1I1QI%A+FM^^j`TOnUoSTj0-j=nui7k4&gd6 zsVhX>IlMAbXG!lm+zI#)HA)CmYRC5v3xj} zzAKdll&8YC-&T?)X-zgu?M*=9HsX$4Z1KC0XYg5`=%}Ty((F$*Q8g&O=JN=2Zq`e( zmO`);ujdd!?gVEcfmzWewyZ`PCU&+?5i44kJYnTGe;D6dgjXPGldp0Y+?qC!{}~o_ zuM>`fZ7SjVq04iC?H}ZjrMXQ;wfsoxgos5yu5d3lPhrS1urZ~|jN?;k-vB15z`Rf7 zmQKlD0Dy_vYp~3Zi(JX^H4uwEtK!ohQV@NsV0V0E;E?_Fg`ibCqqBV`=}P6w>*`9O zA|k%wS1wD~w5m9sErS-7L*)|DL~rPUzTXmZtTMeaBU-ErY1Yqw+F4RK(7Lb;Q*6fQ zeOi$WZdfC=qh);&k0)Q47!iJ_ZRDptuuuqMWrC6#&70=S^o>_ac;{C~kc}$>_kL#O zNif9!t@4+Hz~qJ>O_Y+ONzcuJL zr;E}%WI(-c8?k^UT8gdz{b0J}F)BgG31N$5|2twA#Krj~Eo>8~@Y2no*u3@@fazt0 z{^}Z*WavUfZOg;&fvNyqUxF^C@%)U>oOmoeao9aG$2Z=qM}4-U3AhJl)Gk1-CW%`% zfEZ=9IdiRvmT+wpq!oqGkUtmJQQ-eXY6`bu>~%vZ2fUue{h`8?E49ZVN$iOkvAB5| zBeq(A5tfNRs8gL(?L!ltcUy|S#PEs0YmnL=6Ma<68;z5hjiokbI^=gvD{2Ev7LZ-b zw+S*1ISE00_yT@;_mF_{@qLb>;Ix`o(B0)2iW|X%U)T`?TkWh{cxkzVvyzmKYth{O zBF;Rfa+!V*r5ra(B;jxae)Q=Gbu*e3Oq(e|{=SQJn3hXS)8XLH%%ARpWsesT99Ut+ z%CJIq-_6cG>gq~|IP0onbt(2@fUV5ijEe~}Z4jb#Uc~@&M#gvSLECI%nE#WV*;JlH z1jk)KOWV?+<={9z9?Lrj2hwV|L)K#7(o`#oE(Ybih*+3{9 zS)Lp22Iq_+>I%|868`}SMiag1>8A@ejvobyu|V&AqhV$R!Eo%wMY9D99|$!2Y82xZ zRt<8g3{b--_U&46mK}Uq*S-$ZjciooT+N0-)xs-MM>~l!+q__gag<7x*!L8(CbRG8 zr2}jnSu@B-dLC+K-WoAnhgtigqVw^eW$>4j>X!^*2U3AboO>(w+pN+|`h(~GZ6Mx3 z5JScv$ToN$=H|UkAPbOOA^jM)o%qw_Q<%s&9F3<33ucnD(;h?d1jJ&8PhGo$5xr0t zOm-ob0JN2mexEF7i4h8qxc(S(u68`!Ex38oUt0D`0YLFgEtObWf)Wd$$eeveaO4o} zdl`ro#~|r_knt$vZKA6g|0hhX%-m0>g2xz5!+eA{t8%4YjlvEHV@!Qz+L1__QF-O# zB>C=e3tIu|O?6=J^$g6&Y4hG5tm}el5Si4H_Ob|P7KE%a(WT?s{mKPBvlt74Mx^Fy zOgBp-i)!x23bU}911Q53Vt}UM%b;Ma$jB~9%r!`N-KLGHXS`Ezp?ya8B;!U4FQd6%@sj=G z{Vk22{ZTszAKR8xAUdjLZXD2IWGP3!&ri=Fjr9sJ{7FK&kPXf9e$@nOXy#+LLP4R5 z*AMnJFV92qdC?5+lC$O0%lf_e_;UX|TYe(0LW;ujz_3#stggDn6z~3<$ z>&@{DDBKSkxu~~UUbJE1_7Sds5IN;>LQ(eyW2Ik`tf!NW(Tg&Sj|>@u{v#gHD%`*r z1hcBuVRilOw3d5MNqQ>wcfznek`~rKGlmk-m|X5?3fyP7oFrU~_5w3eKGRFBjK^#s zg484d8&EU~u#08XpN{TbCicDCcON$LlTg)*x_QDSyKSJmw%a^DyMB08De6|VT|fC8 z{fYeGC22j5>9nwLMN>VmOBAFcY$;0h3?(A3Z=}!BUwq2Kojx{t=^*rWD5v4Tq+bqb zHJ(SM(&0h&ek>+(A19TRe?+jGer!zM@?Kv#o6$%3J?RL9h^MeG1AePd=$C`uP|WUrisL5T;k{+xXEXQnaQzS$ zgF_m7)8CFGDx0J8uIJipg;eiRbBJJ%f3R~Kqf$*qpC-w}we;wMdlbG&7s8*2;|VY+{u)afjiNa#$i}JggQR} zx&<@Ij3fiyHtP&g#FxB*1fE7G*Z46?8dwCAbO+d4%s`s5XZ0{NyyxvJ_akCUps_%} z^M3grk3lK1I~;LyilX-in1IS=ToUK@f8-i#f`}xKk2ALu014v zDV8@nNhwyH+?QPuaKyrws$l4s^mu*n12w`Z>g~{vJ_m`V^j5P4xWr=zAN_ zQCQKf9kY2H)2SSk1F^##m&8+-{+xKx;=Xf!O0ggsH(mzGYKg=3K1oXHLpj21Y_ifV zlBD0d2lqcf@i0DHzeBWX`@VUt3rkPIXn%`j#n;0rZFDL4jfaJwlpT^F;)W+FC69jU z|Cj6%@#c@W4E?wy_i2Fm*n2$Eu=hKv5=;9sAr!c76)anv2j~K-0pEd7%Nnn^-ZCBm;|+3Lz`y# z7_7|E0s++|SZn#nH5latKRW-x&Po3obVlu{8+=n&$K$EVm|k$~9;<5d6_Bf)@_cTK zttf*C^<-%-7G>R#PczRDIH7JQPlM@%V zZjDw5Rx&B;y|=<8@yw={F}U*XFfL1;Ml*!p!k}ORVkEyUl9=5XmG3n&^lZ*Oy~Z1} z6#e;_8K!G>$*(d2NDm#kS2ji^qAz+_e4lpg6tvzm^1LVI;-g)T_5C15JdGy=cBs(! zCqv)!DC|LaLhf6ib9IvR`?e(C0j62y}quaZ^M?zW5wwiiGnTHri-;2WY-K1Jg1{D>+_mgEO{^B>mqh z3_n~YF7e3HbokKjzm+|gSf-a>e?NOCo{(Z^{hR2N3DmDtcQAM}x zB^FXjEe#m`+;AGHaqCGX$#%MO5>n*UC>a`KCOuEbnLpcgKsNb=zA22{W}t#-xSvi+ zgW0;A!zdA8l21?+>BJVzF7JTib9ET6ZV-W!Bk={%eiuY#_+?9~zFkI$t}EN)&SYhV z7eJNedb$KghwnbbQ~5Y$q4L>Ijw0F#i5X4n06q|JSD#LgxPmKxPnuSIqnHL$dcnK0 zKY@|ea`znGuS0&7`Pq?4KUj+X4!<|(n$}f-&8%ZJ$v@@|=QRdKCy$0IMH{4^!Kg`k zT{`_42(#;dY~Q15am}6s%$c9LB7>zMP9HRiT97SL{u$Hi2)CTRV4=t7BP=BCFT_^! zpprj7{WeFtF$7nb8b7RIU{u903DK~pW;Aq(f~;@eVwD0t(tzx>ff)F(GU}Wz>G-kp zr8#xA_r;vZN793x9idt5EbfB5cscreXR~_qOiH-8wT2FQ!i3BJSyBf2MT#l>V;23m zhTv=7>C|x!?UJC|kehCXVIW*&jUr7~0T1%3%BU5O^9l<);^a);z|NQQm?wf`C)glf zKIF-hk@}YDAe`K=y^%u#)phDi%qvTN@BD^x`nyEMzqtFJxpTJ)-3megqMn?!^_c|; z$aJs8%E5E=i6stT(oap{tqKg5($Y%;yJe@QsRFVnj8>c!n6xcXg#BJquUpSc7<{0v z;{FMd_{xyXZ~Jv^e%GJ_4nlTo=jU5ZZ2u&}pyd4~5%H&|r3@C{$#mmKx?T!*@-7!m zQb>;4Z_h*!JHu=to4)9W$9x3Z%aZBSARHfh@A9Hb7fcfvwp&$)f$8MJm+p3*aNURB zBm_5uh%>ZONq_sYM~!K!o7ZJa`VYciKi*ehPbdys0`2Pru2hDaxf?RX2w|DRx@i8$ zID2`^0k)IMmoENMnSzpm!z*84BvQPHd)~}N<7&jel&#av%ma52&)P6}dKo}z%NZQU zEbA)Z!w=Mk#MMcXKm>`i9O)~&cSf-glRui?s~nM420F2<4|m?2)ThCe$bMwkzaDak zIo3qH|1$o=yxRLSoDxEPz3!OqvF9q6r(eHnw02o?1+RM4cZ_AP>jTp-7hm@n(WHXV)GY=a(*yq8g_zU|UsY+jV6 z!HXK<99EDW92zq>wLu6*;JEJSb}iEA0L0C3AvO}&U`VU zhPQA5X+#rqS^3ZnE#DYBZdZMN+R`zZuF%GB2%hJJWB5Toq05`o)6k_@9@8uH#MZCt zrPX_lGVFq+407rOTV=Q{ev3}{Cg^b41?gJ9m!yw?Vptz6Lib>eDoOf(wHL$s5g;_l z`L#qq_T796H+>EyD{AYPX~n2Vvd z1|Sc85D62g`p%zGD+7~JPOaq!H1tRWgV*2{_M&(C@Bm7X_-4F>F<=#lUzE}=T@;w-!gi118|OpIeo!K?%tlk43wE)2pjG@P^bh-K~qr6mqh7fbNy8y zhwO&+OjMV1i8Int$5^@oeAONJ>}e+zKiJ~q9pPz{>rd^8N*WRAPXLG14ZuovdRuRx zu}Q$|4WmdaFI{u4If^eNknxkva^7A6{I7oJt=3Jb2l5i1r3lH2S9vCLYgX#!672== zS(QElGAzk~fi9ECmAV1(e5O2Aaq`36&_a(sV+?4Q+`8sy8+!eYA9IbAg>L#+z#-DX z)O($0Kr}JNgyoK+?9D9R6`yzW&t<-3lsq+|y+nWv-lWHchsmoExY*+KM1whNS+M%l z^fdxmiT3k5ncWe+Lw*a|Lq|Dgr4EzgMYn^6H;3?2wO^!IpgB7V)PsQ)c8R+Vjpis$r?&_~b5;0EZ%ehj!PZb)iD!q`) zeXx^SusNrVQE>+4xW;PwVXoZ%S$n=08#r1&0}|kh1J_&f^p=4iv=$^Ii#ebEUH1Wp z%~{Nk%2(-Jtd{3Rulv&J`$_TCLHh*0B$I=B<+94H32Ps$??uZ8GQ;mLIQ}W#5JBV< zSU|Vbw&iEw`qF|hA{1qihfK%VelWOYJU+->j@A|y(QEByo#}-L*GWjD=ke4EU?$X{ z95&n75~E6WC}KWg?o1Z_u;O8V;=p-qlRxbp;Q2DWNJ9aFT2PQM&3=~>9Qp!nwoiVxf_!8dl69QQFFX4n`)cAP$|e zJB*(N!K|+xA$x;tL}cXdLJ33w)?#IrM*S&Z-c4efPH@WDefZRu=DY6p4TdFgRl;N& zc6`J096ss6)3t-|Ucq2ti|LT`nsn5jo~y|WSiCw@4kxaQUi1z{XKyv*d=%uwD_(|{ zQ{_%UN+W3VSSK`=G)PP>_VQYKj)dAlvgosn7?8}9I}#a!Grb*izOL8?iJYJql`iVw ze6sCZpDngQ)^zxH8tHpO4#sX*4b4>2tjL6)XXXd)PY(6!2Pg&|7g!#1YPGZ|NEMD! zlRkHcyr=xfNBE5Y+@kJBNjkXy4rD1T0#4Zl+LWDgTNqtrUdy%C&Envj7R;jHP(N=~OUbcz@NwzGM!h?aS%eC$D7?481%W-2Ul zkNHeI69&&-bUoGTXVL)jYr1fE^&!cysSG!wUle=m1OgA0GID1x$=yl6wsNBMGB;<4q z)mew0btrJX$>bN_ARf(<)nR|!QBai5Y*SLqq(E^U8rsAqSH)nrFUa6Ac`_p(&{DL@ z=!DmPo~@1_KSAF}E{TT!p6Rb#40|a(7pxOkcty!bzClhf?n*B}L^u1=R?5C)=mBgX zOK8=|b2nqbfg^jL0@RV%hx^C;Z$C(r~R|6jtx zZwJR&+KN8Mlb9njaY>0J879n5Fa}L~ym2rBm{W(y#fdn9Z%B`R2Jz!^&d?=QT@7g6 zZuF`oa=tkkP;IXzkQRuj%%FHC`lZ}1se@DF`_7*bPhTvfc>!&b$PIgSV0ft$ zzxC%ag0MxS6T~h$CC8Loa%mhJq~}E-5o^EDCmj@wzQRF}l_8T79uaz1eH=>DM*<^# z0J9mMtyS{Sd}*MjaMsRESQ8^ReX397L+@@U-5d$W+vkR5ZXHzlUfF?Ti zc)Q5vnkB*3My*LmFKTLkW7=rNv6Y&K4U~QE4Zab=VXO9jF;3Jqb58N@y6aILaC6Y7 z4KeH9>_#DY1z@M;yBE2beZ5yVB*#t41q|)0u=s@ zSRgjg5*R6G&VZ*R+|9#}{)i_YV7x(`!;GMBja=+g2)JiYk9GJ09y_F)m5-vSaK$n} z%v`v1<^INR%2mm#fmYL&#K$myu%;j3#IV$-gE~eUn_i4bdOiMvc9!wrCLnXCtz0xI zNKts6X>;uPjxyq*QecAhyCehnfG3PbE-=`gl`Vaf+W3Gt&Q;j6Fkf>0OYuFF1cE%S zD%$u`BB;s~zGM`LWSx*8H-c&P*q#z-RoyMlqdZ4&gJ`_R9u9ih$GAbfrg!5W>oSO@ zL!xx5N~FJXY)yU#Z_BC3onD41u!<*PT6qcL%of+f_K)3c#rvioR57!B1}or(R3p@{ z&MKh2BrqDCc^pyn?su)r?LEU?3mq0mp0HGM6)-?^eTt*ncM7wfl-v;el7STC zs3P|$I$471Xn+6nm0V%qzQs3KAxH?pNFnMe*g1-Mt#JRdn^4qo>+{?59wmxI5~ zJ%iD(3j%z`FJkgg7#2sSchnGYAFN~PFneFmG3E>1^+L)+6SC+FQ{kdSX(l>EtPV21 z!%j}Vd+I^)`AHR*+aci&mfY<~x&zkEOX+=Q^&e={3(hf;K1pYydoIFG|Ebi;VWi|J zsAw~t<|()9siO@*h`a9Kfd+d)-LIeU*}jmmutN$8c=XtSfEKBFxH8e}D&o zdxD|RqrnRj{oGsUl}Sr{Dt6KT1VL!CNU!}ytA6h&Py7j`=1 zmU4zzdrmr~*fTKokWe2^q-Hdx@_q?4wBc+`X!!19f~VBy0zRL&H-UO_tEUuFoDOMJ z9%5+-Ad_&dfVvV&yee~$SvgVoWy%~x>U1FCuD$V~{sQ>@xX48r?VbZJBHzC+l-Q8s z^o%JcsR-z*H&6Kc$-MVnPv-QDz&Z!eUU0pHmnWR~j4XhNdO>+Ve0;5sO;DTxAm_bk zJ65)gx_XdwULnX!-0?Z|vv)v*w-o7x&Ghpa4AQ!l13AInkkDX&iI)=V0%tQHA9q)Z zKBch~X&i5pqIm4<*oe5r@Tup~isEjww~w%R`SWR#pF(gp0F0-r0*9;HENMAwL?ZXZ zERFz|9R2o9US+x;y}sv2ezf<+n`yif{hE{9XLkykRKmv6xbxS*?zE@m-3>jopFZ_) zSkw#HyjheNb@J>cN6r8}_bR|ELzPe5;~)Y{6_@HYz|0XXtNCDou5StJ}1I8{EDN0pY3aaTdqN& z*02@o1RUaek-@q1pc|&jeGBh@jiV5wy-x;_JapQRadi5yE00_e0k+7)Tk5zP zMtX8~$JhgLP|`j+hO(s~lk3~^6hu%nw5a;oh0}LdDn#QXabOzr}!ZTYaH6sa!f@+5> z*Aca|#updzN@3Y`7s_G6m_mopN^XYeDAp`+{nZydzv`7j`esH>LZ;6hsIBX|mxHs8 zu&u#tBQJ4K4{cK_Ty!SY?}efuM5viV%7)fP{()W0N()1^4`GL3sWks*!ETFY?d^My z-^8d-Nge3uqb2K!3iNH;OW#~ftdPNG7BvQgDb5m_nP3ims0;8_yVLdxtb~K5U>ImV zzbz{0imt=OVP_%}TJSKKq3(Jml!;c^HXT2HJXw1YE{GSyS{9)VF;X!}Ztiu#$xC3< z=H*;@UrmBSC->`b6QjL&Fk{O4$%QDox(W=#(>aal$CWo!-cU6~&5;a(7`yQ>->nJn z*?sUBr7VIAu(bT6%iD86YvOy z!6PiJLHw4Grkf~mVaM0kj}94PHes!0&q9oMr94WhgYbqn>~XcIbP$y>(LENq)QQV$#gG^P7~AC47WVY zdoUk{`7h@Y&)=Y#ge?;yY#9>dJ+S$l#=bPqLlkW_1d9vklfF_`u{^%9S3XL(6WOD> z7`pb(k_kYBJ+uA)VePHMs!G53Q9)Et1U)E=XgBs{qFZ&>$5%)$s)g{o+2wycS$S7 zdWjj}U8I4p&I_jx$=y-;tT|c4te>}vWEKE_SFtyq#Fca*9rzK->WapmS(%P#C z;J;3r0=(1CXJb?!^%@X5$I}UOmUsi!V|WW2WUFC)jW;0ibv|tSWM9ze46jRZ9^y6H zg9)0I-_V?ZCx^Y-11v&}5T^z1F<18Nv??eb+wkn_+OVHXRb>WUrm+ClOR@N~XXjOQ zQkL#v`ZaAh-FPUwjs1h%T{7MODpwIJdsr`uRCxJj|D)u64nPT446gaVUuHPKQN#MZ zvNkvao!+T9Q+7OD6en6s0Ei@p>k(Uw8;I?O@0F(O85dHXMsNE8nXGP-_0H%>uiRf$ zNLw8#oAN2*ur3vBzL(8MtpVnewF~BvL!&wU&1h1T4}m6Lj2MWZiv#;W&F45|o{qF2 zk#hBv%#T)$Ao5R3Ghfg1syp<{F}eW|yL@NV77o%JqxXP}zPzeTH@-8cp=2PAN4dWj z!(l#=%J;NDEOT{w82E%?N6gcY+p^VbCZMUSv4C3?k9Z>U+&D?6DWZYrYcS%17ff?8 z@Epa3HpWoQy_t6SCKEWy&Vmyg-@w@ICbL(@!6&bdNGZ=8?;_`eA5`DREDr@ycNWwm z-rRN(6S@Bqs%L>TH5r}Md#VmJ3@^^LUC&c5GEu2@cMD4@gI1xX5HWt=BY6aVZd0AZ ze=OL}1azp!KM`=*qMkuD5zo!C1P^WqFgD0$LAIVndVV*vf(@e zLvVU?Zgt!nfo3gs)V$jv{6%(pMYP$DS_2$lXPD$BFi6sACKa#mdN=m|K@_)5!W?&E zN73v-EtolPt(;EGTT>**@AegS)w$)%%e|58DV77~nZWI9f1vT~I&=4C<^V)$AqK|p z1s^_}t-}k!WFqc`>)lV|hJK@5z$_h`{_T;q!dR`JSirxwsFNYW86uYhlHr}W*kV7S zliv=?zxhNIX9C_L1xElhkRxWh{I!t39nC{Q$kU3Kl17grkNK+N zb*#km6N!j8GW(40bG}~K9YqNPD)P$xy=m_JNadIvazb4Be?&!ePe|!5i!Nor{TW~xhOs?fl~+vLrn?u8akW-12o=%h<}Kh>bW zI=GYmkHvyecc=SuVf9vZggcr`2vaqJ=aRLax6-sM09u-(UesWE{U!_Quj(GXUzEK`s zKmt8nrlU<|-w(}}o+4(<2V^+*;&%bsklAnJb#h+AY7?!qf_Gl_mtQ>q27fUETUsL~ zXoco-h@`!Z^MjSzkz)p#=%xjO^*Gvw9%qOZ(?g*FD>X|e`9at#ofmamx=ZQ*9Oe}! zM3M`Fw`X?&K#Rp`LDj)$woMkWuhv))e%Gg2jCj+Z?xqGHEvb-u7175R07wHxj9K>_ zJ6J7ox1SQ=^o0uQLw4kV>=G8<_x+3Wl2w58rkMGc00?z>fH{<VPPn7x$KL)_GWFniH0XgR9?H)pw~>wGLI7Qyan3=T4dn!;pvh8Lw-ZjW5iEZ z@2&kmBYbE?9`pWt$MJd0A1AFyqg#tCVTTkNgbY#Wf84OIT_$0(0Z81IP&UawX0)|HLY{!~Ooz#ZZpdMTNu#*wsW>{s zX%bFrjyMs-r3>^-`n>6W{j~bg{5?C)s9q^=Cy=iW!ZcjpfN}+{WTF+yvX!VX@A^vm zycUE~ZoeU{DXSOt7ervy`u8BnBOtwf(HZg>2Z1tn9~HcVjW-1pQ+|5l{Fms^x>270a{6OgYxVOl!a@IR1tc&cem4G ztqXy__!&G`4G^MFu6AXN*supdnev(P8QSM#8SfKGP$LH& zAH%l#sGEdpt=*xsB+pGF#dgWCb9g4QUQuKc#*+eC6@pFQphfVV3%$6Fn9~BynA5iwYuYLeJ}SQze5Oy>8*Tf^6DEr|auN{Yljv4Pzv= zXibXbYVk{4rO`peY#vCp&-*wu6XwUDC!{cxzRs&GD8_VSxtKnB;Eyur#KZv z%XJgSfUV#pqv~#VT^^LT^``<#$ZWy|e;P2Vd$s5-x2uUg z4C!kl{x}<-XZqC)8PyAEvLj+=hVl&v&iX@EAI#Q=(+q^nU##+H3Z}~KiW)*QCsgrT zEX`pIP;w&Y@|RJH3E?G90hj!$66QruJmn3dIZl*{_?Wwe3%A=JpR>GkIY8kH%r;pM zJ3dyb)M`!)$jdb&0mrEJ`M4_(rwE;#jeeu^@%80_@?^pz{7{z@FIe_SDk3(xVJxcT zINiPs@8#L}Q`YQZXB)o;$iR1z{U!+>mb3pViZiH$g?`_5nvQzjL7R#G8Rg6%f{p*b zwCB;cgx`B1dNCvp1?lIb3s_V_n6Xi4Ss1KsP+}$U6FAQIHZOypNMz*fAAo87$clij z{5}<>F-&-5u`>}^K#Vq*!czvg-Evk)8q~ltOrE*X@{S zQA!A$9{@eEE{UV}B>xdMM$m6v9kRLuUBw8fzpTRCrci@WS1ru6OV*t&Rbsg;5-50Xvb zn95P<)U+>G2v~t57NH!`y({nBN=}GG{3%CHEyR>iU^|HB&<)b?KniuX+3x&IE_w8-*5O z2(!_Qy3oQ`Ix4-&bfvWz(;9x&ke8Vrh&rp?7(Vo^)9il0MITSw;;DuakUDJghW)KJ zX`@%53o8Ot7`E-c&nGxjghG?q?~z+{VXnlVEo9QJh!T6Z)7}l_ov5BJl2k$^@XM-O z?+%E1$;O~u+qdVdyB;fzDaF^&8De_s|KF_405Hh9RU<0c1^A!lsujHNfDGF)j?QtYQjoY= zr<4o+nzU-6!gstR1J7m|`lCwZ@#qoaZ>x0F#Vj{@^aMn|-wE?$(Gg(IKd*piKQ$#M z5*sGZ+YFHU#XR-oDVe+9;k5Amx&#MZM0T*Qfij*3En6m-4OYX}rteWeh4OaOnNd&qMS1BmCIzWM3Pc{e4TanPy29ZS6xI0FUqi8{i~VP*T$eS*xc!cO6JrhPK}gS{!e`v4k={)j0R)5wFU#zoeGbfFT7|b|x%!RIB>0Ed3@}(N4rOv5r)D&6^1FDe==2zlR z@P1vVd||}6BamUwwzP3D@P4CXmHeVo1(-ra42&^YkXv1v0m!Qe$@yJh?h;Vqtw`v= ziT{IF*`ZV-a-qz}-EOwbw?ip@7+TbR43>W(GVp{{O+^)nA=s$RcUZiL2O#sQC+2+P z4@f;p?2KN>uZ8;;#s#Yyu_TV7fB`L@SIVW|p$Ozpy`sjN#`)DPK%ePFOVRD=Ew$Ql zQ6RLQ5%KL8e-@asAePn_#LvIOk4I7+%#Mp4CM;`EDplYs=7rjj{ze@VB$kW_*skZk zL4u=50ILfv0_#dXOlh;9LCV4bz@urLS3O{*NBGUi_9=}-vzzkT=1kKCnW4mPzozsw zl-Dt$^$s!BZa@4ZQs<#a9R)6bO88U61>Q~4ks$(wmN;dJP`~MMpJ&Gs*!sVpeA?M5 zo^XxUdws5nWwiz$W7NB7qD5pmWhv6DVzof=hoZE`Dgl|ytA5f#29%$|G^iQB} zkGW`p?;kW(t+;rXJ_4a+_=j`q7W5wUvtQCy-5okrMZ-hrHMvzRrU&Om#oF^-XnoZ9 zF##xF@Uu-#yD4p-wnFyk3l{zRpaj(vbANH9?OfYZAtQhR&r*yBAk$#MjMg3cUY$=|h@gUyWM17jy?%$QfQ0{jGe?bgWxtGXwJAHZC9USND&LYOiJB4Z> z0ZLo5+guz>3p)DRE!%nM6e{`le>1PhtRkN*U4yl=`%O3-M9 zNy_0lh3kUT&;nxNI4Emy3$2gHI;CYpavn&EOwgenE`!&P!_rV6%?>Yc>KRE`WvLu6 zP^*R=v1<$-Jg~4vxS-OC31-YiUJ|E88sSO^Gm#y|LB>I=xlyrDYl{F}I*{$YZ^rmFrJB6*Q`ow- zNBg~hKa}CNi-ecy)b1`DI9`V-s*1e1GGerw<${cbhruLH&L9n$yVpx>nL_+$o5}$F z1+QITLCK zQMk0ofAac5I3Dg@7L!-M7-O1EKywjBn}FXsChXb!+_ucTxx0f3xUH8ikmrnAgZ)`? zZ)1_}+P7zxq|8hqQ5`4oB<(Z<#7t4I!10d%pkYCI8^ztiZUc@7POBVQCG+kX39>0% z{^;`x7kc))1-I6^Z{}2|?_<_*zY+zjb~SAwawWMLr#)iYBC&}P1f<>@%-T8_JJ{q7 z`0U~z+Kqk{bV=+P)o{uE$feXP=sE80l~a`o?lVwR*W+z%kV?&X6xwy|F2RtQOJKm6 zS?WyIR#3-#HMhCA0d(HO_-I}}2cL#aQf6jcY`*!|sj>#+(B_tp@pU_JTYl0La9(Fw z3XJof-+6Sa&}&6)!$D`kb!$yg3tccz7fa7tjZww$RM$Gx8XkQxFoBNzn79*=aXOKY&LGIEt zR3UQK0!XfKKb%}qeKf_@;5}4V2+qE0{AZKvDOVdx0rH~1T@6bz8;&Q|WBK~NSD#Da zU+oOJb!M?Qt7@tpY{G!qO&UP^<#Wcn7tc?gzveBX>K}o)f`>)jA)9bKcVS2u8I~wu z58plI3a({(hycAscH)cFcpt)^gl>;OUHa42@esC_NM=m^AOgHg&ql|7*+yntRFq57 z{+13taSz_((Isc>5Rs0Mif${jdNt>YG@Hu8Rh?j=vJ^ zgTR4qecvl4C^4Byy6(JbRGu}}Hk49gi>O{}@NJvKQ!@1B2lzluA#1lf zH~Z~Xn0z5Z{6$zWJw>F0Tou+jJwQ(`nH?mO8R5ojquLF})x|EM__Vzpm`%?bmoNh} zRM&K;fO?CX+|2;720=Hd!e8ChBD-4wtz!3pKyaH(5i)r2*|za!XV=PR(9T_B6^qgoXbGdHz>>AbPJk%+ zsQNf0Rkf|7&sU84TKHqRgzj^l?KJqICqBV&oG&PO^?Sw}F^jU#4+GHM!QSMVu_wbG zh`TWLf1c#LmvGkba)lEyx;QPQg5I}SKKMBZPymje-c zd+ z8T4=sz{Up7duvM^odB?m06%374oTst&9m*I2KxR5fJz$=(Ywdj$X^q|tEH9bySU2B zW889%9!IqXqiew9?~}TffzyZ>UU7B1K!lH+!6SjNc^Ol&Gm{Emre;Dk5fG7n5zgyO zX^tFDZP%3#{lG#-I2RAA@+obg9D z#bF;lQ@vQ&%7|-FG~gbpmd9cRtt*)3=ES8X5E~B-pimZL_eGqKBgAJwkyY4Y5&eeiV8`z&(N91L zmJy}!Z@&6JaiWH^3@>f3w`_UM{N8xx9CC`yB zOU52_*Lp`HDU$$l&<=R)CDyTgNRyfn?YuR5`Uyp8*R^}6S|B6S;PMx3}cGYT#}tv)ykoxLjWR(Fmhl=7luDzDAZ=N9g*=b z*kF_jMix!jW0@3%b~zozDFGGiQZ=$e&?WnC7Bh2@Glz#>l%o>Lp^V<1Ot*$kRgRn? zSW3t1!ICy!{S?+fz(UF{qV$tBxV~hCKF|jLM``>#Q??3g{WJ#!LcT>7QdR?RX;&l% zf{q`_h+JGA2j*bJk}J`vB}(+tOVti5XBD=VyzM-oX&XkM9Vi-g2ld zvl+`ZJFY$&35l&lE>PGmL3L7s(Dug1)SQ_%JWt}~ZPb7;t~l1a1Ham^8q5=$X(qK` z>_0_!&hd(vR&TmsW|FBeu^X{?$E`I6#-8m?b$6N^^S~yu4Ky7G|M%lBN8^I|8MHoUL>#;>ogUekaP| znu!pj1e$u(Z^?tIo)4nLpz_DUIPawT|=2%Ch)6voUiIeKSE65I+CF2iRRA%3kkjS@@;&)PMYb<>?Y68rzy4sku&#>zC5FrK=Oow zi`(CimaAqiEjAmLIv%?GIk!&543!DX{m+_)SHLOi?}Y7fb#qeUHd@#)Qu>1*pC2*dLLpEjjJ zw{wv@J6}WrMUx{peGO1^NJ1^|AreEX)y3LrPyN>Q|4^O7rS}3^@$)x&RxcG z_W9dS;pZsyZ+y7{sA0#?c_olzux_G z7aBjKckX{IiT{>vKhMvfyVQ>lF_(cAHZ*#PPGt|5#qj^zXCb})FKNb)Pv?U$_eyr6 zpCX_Su}6yj_qqO$@Aco$`h^_)buB4!;Ht=F4Zkz`{T>D1#8Jch{So@>#ottD|9JcF z>5#wvhNM?#7@8rf>0yvM{eM0yiH1mT>DOET{?fmvg8jAt{?1kVvnn~m@Bk6ZU1mM{ zqtp9MJBCMb;~a- z;P0y>tb^A@@arG)>)-VIk@)jp`Qrk(VrT!OUk0&`Ej5ge-;A(M#}eQ~9sT>Ge_hr8 zS2yz?3PjjOy^&ea#q;O?Vk^u^Jl_8GE&qD1U>Qfgg?82w%zF`q2QM&bx3yP*yki1G zgH$A%bP(qAYs1DbmS6~Cgv25*4VTTRF}o*6PtVR&!c@w2<7E#|_y_vn7hA$E6G&zu z;HjU0iSSh+A(V>x8>p#=!mlcSCP^!@1iWE8CZIz&{^`6-#Ml8$M{IzwQG(bk?sN=H z-c~e>pK*>n*GPN6(+ty892r`T(QwkQ5e=X=oW}Q@kfj)8Pv*(v94tTFsy*b~&s8YZ zwtamF6UISE@>o8IP338eyeUFagqP3zzgNPuqX5Bu7-wRY{QW(z*s-SnUQ2NKuqpD5 zTZs|$ zBJJIsWgxSs>$b{vo;-iq)4uWqP*Vzl7CGd1mfCXs{ZqskHtbR17u+s89o%d%6=N!& zL^=7)F}gszvHDT&lZ0tfhsXwP>wOQ@a~-D<2jH?9BcUaT$4_zkd(R2+CMO(7$rObe zGzLNgjW+?_FRv0~Mp`zujN}M6?Q)ou8SzhVBizo;p3NLK;Gw)4YOD1c$E<>atXL#SBI59 zkP-Z3nTCTs|9^8S72o59X9_#OcCOUKws4@xQ6yV<0qK}F;k9! zY-@mjjrL36GY>%_C`X3YmcY`Y5sXlsPT_FNrZ|uB1(wwi+&kHcdw8bsbbR&pHz$DN zGave)k4W;*>YW?Qs7Ii6=|lX+fKO2P?#YQ^@X;e$F3Z2R4CyOr`$RVU@wY&OT82zO z@iy1xU#N0lS>+r9j?XA)fTz8Y&bI1a#+?stG^ubpFO$t3+%|)t7oOHu=XEl~vey!d zIkZJ0LEJ}M0$Q{@!X`}F2WY<0&0E}5@|su@k~s%`|Jy-$E|zejKwfse`Sr+<1Mz~> z01_n)FlPyfXIKrz%6O69Bznm$wFDWaS}*RR>SY-n6MJ44>a#il0d`)gFlWM z`~TRph*>>h59vodCvezN9a8*?ca=jQ&%lF0;EMsM4ie!6Wo5q8c6(P{@`?VyNcAq7 zpEfN^`pez6U^`Qi=$EHlXh@-Wu}|^2!ay4T-~*I>KO^p0@@x&sI=1XeY{| zAHh6A16Z8_z2KidUT?mw{uzXKkl(CxsxnyeEf9maWoL-DfnE~-seb^#kRl|i2}#98 zX2d|YYd9|*wFjbtKStKHz`G?&tGqBal?jz~EnHgG6&iMR7*|?C>xKl;x`2Q_!1AKnWHHZ~sKj7(S{?dNMocf|O$VhS(6?T5C`yBnSZcOF9Q4 zV{iUQds^N_^2-tQNqUlWklPlQM&=8Gzv$%4yxjSk=sf%6IO5Gv!~bz!orKLusx+gi zZVf1NFK^`0(AhT-0!xMptqV!MtgP3TCyb^}7iQ|-AY zCwHv2;l4*rgI_@0OW(=-)X?+#|I7^h^T7H0Fs2QDOMb{Ki>JjS^LLF0sgBowUkpgm zR*r+9QM=%Q6My0wo+%t9Dl`FoLcEa=ZY890V4*`V1JJz|vjv9NjR@$DFa)mHciocb ziMGIc;Vl7>XJ$2Qv6skNg|U&G_~x)zIM(iHAc@*}n|+)?iRhVP!-Nybsk_;oe4Ca5 zhRr9Iz~A>CDnL{ZyoLw)Np*lzQVLy7eMY>1CMH$toe4Dgvg8KeO2DJa3VvRdreE%r zBzgaw4~2Q(zjJ-6=$8vJWaHYN>mDSN>#-JbQdZ^nX?0`bf%a zR58hKl&nN4-pIt~Z-wUCZ9D=Us9KrR@r@%?H zp94{E`+86}5(yFsoTK7u5Opynj0IFp{qjeXxeVA8m;2uLJx7_{%eYc3)Z?;eUdj7` zX=#SSMtohD{46(^GSiQ$R3lq6jHF_+1~~gZP*4Qrq0XXFC^irc4AA4H;)7jO7scovtn~JIg zH-lfkJg?Fn1CC8K-$pJI(~zLyVHaIl1WmK?kFET*QtBeC^s*l&1;{x|XiYO%l9gMs zRC{>v!ysd{6;ap`B`r{s88$pGP*xD=i!aZ8h#d(#8WPXwPeiXl69m_&7YTz5`*cHv zdq>Z=VW8sV&~$t3h5IKb&mYC+WnR~h1l-QMsIR8E6(j90i2<&Eej?Ob(K}2awTV*w zNDUxJ{pya@lKSM!G8^6SqVT;!QlKJj)?J0br!;jN(cClt7*4^}>0 z@D;hyuBn5feS~|Rh9snE7IA+9hl`#c2Aqx=r_dLxW>W$R(MEUOQ#RpJYCb)AJ}#Zd zKLk;zy^)(bEptCovNnYc9rT><-Nj=_?9^H)gMvTXABJ~j7P1kNCz3Yl6vUylM2)uX zt+{jQi7-Dl%Cgzc^b8KD&4&;7W`x#mJhzXZdJytSahF|5*=;PIKWg4px;RJ7u*S;0 z4&qJT{}2wvA`@S<;%WAW{#7u1-vk$pHyTLRADPdSFNB*+c8yca9@_y#=F5H+wTQVj zn%}{n<4riI=c-Nj?m`-!71)!kNMHDoKvN>|Om=r;A+nHA=FP3u2Uj5!V2=A1lx5jK zrl!Nf07?-rrAlU6a_A65?y|@_!@7kK@pHHdMUC%Mon1xj4C>$42xCamt%x;NCzZGG zN1RD*m>OcZm_H7bKkAX=rgbopqPYpqls!d@^hsmqc9!OQqKT&+1W*(Ka-gx)x-j7e zr-ph;=gMQOqq3O1Dz%x8_>riL3aKbJAe*OUR_2qt`Aq;@jj%`Tx7G32kK*EwZGVxQ z!Qdsl#pXou&pkisEgs9S&g8e&2JcKT_gi2n@n@sKkzeiA7qH)Zix~AT0kMm_UA#`} zOR7hlE*!12qG7(m`_yhiwJ^zx#UVrqdcS<=ZwWKpNe6|)H`-Li2pt3cHNX<_qNHzV z%X(k{=Ot{OCIeH5+w!GWS_3Vb(H>q}F@|e!P(OSg{h@OQG6&)!#n89IuU@Hj+=;LU z;t|z{i_{X&^N*b(eueQqrEdat8jHXMG^ar7kitl%QyI8|q@6L*;t-W`eFQE674IB$ znk%QFlAHLbRY(*p^)Yb?Wqmt4u3BO*d@FSR{$;y1Ryb_f6Y)jkQ|GyH56(>FLUT0T z5lF9`tW=a~N!FTub&Rpdsk$TD-?Cmtq+pLzFBLd7h=-q;82HjoVs$*|QGF=%l{x}ER zl_AanEuzw%-FXn-Nqw)w1454-HhRpnes(A7u>z3^eNs@|XE1bODuQl>%W+W+$+(x9 zaqPxCt2z+eOqu`OAoa=>kZ$mG>oC^UJ(No+7OVG<>F94dtm#7Mx!b4hxP#ZQ=Vd&_ ze?|}g=r{iY283A=3yX_m{AoX_)5v1-d{6ts==lm?pFaN0i9BxzQ_+OvmRPVfV zoWj2x$Nw3^4?%o0=Um~on_2RVL(i>MO@WIz zPSPnQwfa?XfLG@W{#7Z69D|e0v4O-?tdF7M)hHk6N1S-D1n5@;&m|LLeFoWwzP5k@ zY7KFP)7R0V=3PK2n$8#xP(jgkCy5n1pFntVZjX~-Y0}xo3gU#E)Hl?bnIE2`ra+AV z#i7YGTC5Cp3PPI%+mNIlghZ1gw;)sB0b6#y8%^xzA)SZKwEC5@&t{!et?w(8x`HA2 z;2HllXz3Gr-JV@u1AvirsogSun({1;=N$gl`^Fx5zIGaZLN6h)-J1>>PQ%bDUQy{D zT^y^eo#Pgdk~X5pcK+od$_cJ+FJ-!PFAJ(92N6ik<{b(?AR4pnK4Dr+=tZ$5P?TD+ zn`Ng<=2GIT)$k&qV;2ro2g&EPKiA8D9Mu1O0gRT|WFC;-fBJ9O89|YP)p68L|0raP zXt4I{tni#BZpgpCwO?oLUq>St+C^8f46Uy90ePj2*}{ht-5V#b-6+WBm)Jg_RjgjF zSb*8j;n7Ws@1pj!gz6U5@0P*&$^;hB9k#S)%|x8yJa90TpF%}R9ie!EB*YP6;oMp* zaI&~eEh-|8#$FenA8W(|&j|1fOrq6m%0pCThYLK-pAaKa7+d3N29gVnR=s6zqY34} z^3SvYqkQ|y6w4&`B%om9xqR;%bcW_82FG)?A}YH%_JLAv8B0S1#WrBVPNLHFBy&&u zji(=k4158Z2TL|3YixpozqMhsU@wKu1fp!H7B%QwK^KfZ9T$FjrhC@{`a@R9lU{FW zCPJH3&KIX4EK5l1&M@-lKsW9IE^dtCaz3)^oMqRLj(3_uZL8hNuq$8Qb-}nL?he+K zcL>g`xhE{}4s7i2FAr?v3wYw6Uk38pjZ3A#Zf!IOxY2K*?$K`ay@ui0>XwnxbAbfV zP*D#@&D4VQlUnG$IP0dPc=y9W>{E$IJ^-RyOjFRenZc?XZHFPY|3l;vz99#*YF5Ayn* zIIJ;2U)COxJosdm8aVMaNQj9r9;+Ik#5m6fKHfSGf-gfn{B)kaicmA~XT#t6gW2sW z88lK46J49%*4udO4#zFpUj%uB0rb)@@COm)a>$Iv{hSg5FFd+g`>|Zh2f(M4JkJ75 zjyb9)B-(?WTu-PK&xsq^Jl(G8BsQ`Mh5pNOJGyy0gsY9CM>Zt!T>?JBiY3(o`lGo~ zS8ajb5jr+8^^xl_je`ODqtp$0T%YuwH0eZVjjWP|Z>8*UE0<(n{|eOc>b>gd z!-M7}_Ttzv)4`+89Rn7M_`lZApFb#iV4X+(SWb>OIM&0S1yMg2)a7Hv(SNTtEbO{_ z6m|L}7EPO`xLl1nzIpB&S;lWUB4@~5xDUG@Z59rECS8EVKn8|`dXwaN+=LJ;ZV`}> z&W77tRg*fmd4Ma}iBM1^?LJ*|Nog0d)CFT_D&KalVMZk3RN~Ei>9BPGzU@?SwUUWk z-vdZnsRtJu_4d+>rcGQy4y`xJ#Ez#RQFXJe!B%U{F-O}5T`Yz;^0);aVK2qsbSY`w zdQ>7PM7@2GJuUh15%7U+fuOl%*5r0Q>uOpQ6`Q?gJ7GP~Q63T)!9z7F``20@v0B($eD=n@`H zH0eDY4MRMP-vE*`0l?A1gRzR-wgja$Uc6y~rR#B?@Au>!p?KrE6jNJ=AgoPW4u;8i z*oWtvPB>213LWtA(Ma6;#Dyup_oM;Llz29Jm8r?)KX%voXygH^v0wm>#X+vGWyr1{ zS_KoHZ~0m>TAH)HS0=M;`r}S7<9&+x{m#OM^1Al%N#BIWZ z|8vK&K4m0aGL%uiRb`?6fQK0NAqH-(2`Ou{2<&b2hA;iJHc`_NS33qGyd7WK!6l@J zXNANxu6z2ReSEW_p*pI`MfA8q;Z~dHMYjB&_-SNIpK>W?c*YcHw>$rRE*dK_Wp=1$ zklnb%MxlYE*ovTSIlqp;SU6)_Z9CWxM7ct%)nSCX-y67V&LVAID<%WD8%(QqYF3HK zuQ0ANd`p`({IJh|q$y*5M)j~J^*+xGo)QuKr4DNo$4 zY|tdOsq<05)1y3LV?x`pH|ySNlW+~0rAjPRRN5raZ<$}#^Ol_y5W0_P2_75UX7PMx zQg@pBc{5#XcFdJ^Tfuex59d`G$scrmjsk46)>TizJ<-ur4R9I+eBAJ3U-)ak&=bSM{ruu}YtE-m9NDwTGWu;J*|?xc2^)koDBj5! zVl~f+%kqqSPuXiS>+TK>P`RwMISjUbgffqagy#+PzOA-QEN#3&7RiC#cm4- z&wIYS?z|0~dHoYYLA8XNNADnq+0Buj$V}Bbe8UaLCPh_+VOG@U?#IZQb8sh|QhSm8 zNl}P2&<8)v-_--bNdx;kfPrEBiQmP~1xn~tKGB*1(i1!O6Y!yCc8BxtuoA8B97O8J z<9{t7Gl|moX&OD>8Yt-2oUgNBRaiYpZR0+@mW*?h)hKDTXS#Q}wu+k^%ng*Z8^teZ za{vjVx?sKylL)q9$yz$+#7WZHeHkXVl$UjLzhheMd*m)a?ew5hfEhRh%Ym4;drWQH zFLK8%vT`=Zs6DtWF#BPcm#&?6HK$#!jwzQ{p_{mf#g(jxw`T5ZrVmcU`vn*K%;9`NHyZ%kVsV=FOFhrlyoXR*cmtwcGz#IXJlWpq08vA}sf8 zQJSqT^X5o@u)tTh1T@ELBmPt$1WqWMCFXSY>Q!@eWgB&Pg#z>D%U0$?9tO4 zE-A4DtDp|;q04N+G07>5BwR5I(9B&qv8R3?04No! z!e%;SKf}Izs)5<}Tdt;Ot87`sEwwxzxT`F89$2GgUlC)U^u|`94uqiHx&$7=xlLzo z-R!B0TyM(P@F{TSyX?@bBw+cW>62BAd73|Mgj$LcGKw3`$#*bpJj)w`_10tWD|z5N zl=lY>>%ww--+YChnp_`2TYbU`yGkf>#@xRss{E_3z6i1~A1=bY@y@6uH&&HzGQM?u^ z@Xq82gQ{s4SKTd=OD)@%-B-gB#e6h}FR5tReqiGdAD+tZ5;;{;X|=FlME~}4dJg5$ zB9e!#It4=-V=s-Nc2qH9_5u|-+Nko`L=oBX%0ds9;YspQ)de<=&BKGS!z`2G%ce(m zfCFcdt!Y{Cq2XjSr%DVw1L8_zHJw>L#x^-O@2)jmIc4;X#U-&Lhb>O`m^I%#XK}ex z*Yw;XC3BGS>A^~~wH*sy40#{dz5v}f=0<%qSm@4e4Bn}kPwpb(S*u#< zcz+MZN)6y=d1hPB_cLpq6I3u-@?1XnF=P-Ww*upr@YdCX#9MuMbWs#9fCyw(6BI#; zpBjl2D>^W1(J6T};ZOgP8 zj_JM$-uBg>;6KBF8>O=YlzF>U0gQKQE>ytMDQU9eBW24T+1vk2jmx)D{uXgQ;9GuU z7;vJz*eUdLKc}Ta`e^Ig&`h1B4tnZkVHeb8)T@+&Q*9JAlTQ6mpJ@ut(hsX~(qcYr zzxB3oPw}U_<^tPLL5B~Rl)M?rxjf@)x_fuQZulWR^Pji;Z4xfe)qky&E<4Y0)SD&r z)6IXkDLw&@9g$<_E$;cIQJNyvX2!!)y5B`yp@?X0cJ#$Bg^_jW)DC|BJ%KaRUW@(? z00Vb6>vJ2;T0>j2+~YVyUZtv^&;KAHm4TOF)nu02#ka%_Yve`R~O()c68QODo1b@t}{Bg2NmYeI;;p+&3uFn=G zy%G9D_|EQ2_jRv}CL)h90?o4mMEwwnEXDND)@{{7;Zji7aN&dL7#?y)?JYai27nYG z7hl9wPoUPNFmlYb78$<%p?(QQ8FbSy{#$)_3Ca;`-Q- zwL1@E$s1$J@tjQL=fVgjo5xZSLbqwGrY^guD^G`cdVK%uYvf(Q$^8vpw_=)3pr)SC zMW~xZOPpFw#^N4*WQafDLC$%S^|vnd?Su1O);~K|C=u=me{odP;R>V^*87GN_mBPp zmJ3pap3wM`k)H4jk!kT;ZJy~<7rr)tj6i}A*G&*f92S;UJ)BX{t=Y)2`2d%4cdqyC zVI*Y^ewJf@mbT;qyK9e~2yu7B zt<5^8Np{+F$}*oA1*wu)&b0(rtC@Vs85($F=UHXlKE4!k`FP9LCn!dUNUe&Mz6$mv z=xxeISEs8iuuDaacUZXd1jRmaAt7E`?pkDvyTW_lWwRoty1>M*Xow5rE5leIHd#l8 z6ab&#G;a~saX)cy*ys_PoZawg?$0clyY@bbg=Oz7D#zKtrGMKHECzy7U+`vjU$+vx zNR9bQ@){vokp3}QP3KaeZCyS^^`vY2%7~hJs{fwbNA)x1d9CfiS~VB!-az?GHJ0e+ zM$ot$BcEAhvInj?I*suwEcfs{_P_H5ra%F%iLTH>O}UO9u2m+-kzg}#lYWC@z~42h5rHgV zFzVLEyO2HZaRpCJ@?QsgudeXZA6r0@3-(ug8#_&+pJf6*9#-JbpOJb~I1uMxXP}lV zvsp;Prp=xuWW4YDj9swpy z7Nz*I(*iZsCzvN)SjNiAMPJy}R9mrABn)pfvcR6e14Iu)I3}L&eQtwQH&w?75z19f zo%M`GZ6A58j<2rjp9wr>B|G_q2AN@T^{=}s9d}z3j1(=++Lj{OYoDqnSrr^|ZF{Mz zbCV7f^V8yK_o;#tOZIX&?>MBhOO*!GB{hEOxwVP@vl z{L^J<&aSz*!gRQCh+oF1r$}Se--dci-7t{TAl9nXKZT*iVLKF)*PSXENyuilFn$Vw zMT~;Jlv}~Q&slmn2y*I|v8O+Exu(DqSIHWi{3Sc9ASuuv(LjVyjsPl`ucS*F>wxYS zBa%D!qr~~d?F+Xor@%((T*z8^ReBu|Y|d^!2$)aW-Zd)eQ^_*nyPQ}2@pcHA)oB2- zTzq#mZhpfiNovnuf-{`7&q=(L$|EQNfI7otR|8TQMAzXXxi5pWEUm4s|@JQ@j`E@tvsgqED@AdHP z`<;2S!SuTF@y?%!<*zEhbLZ6S;3J;;jKQAa_&1F3?Ake1?KxRuvHTa^*q+=dxAC!o zK9F48$Katm1Acoo#-X=WXCYx*qf9`Qy!!Oqb8tE(5Ze3JM3$#PUW*nKl|T-va)uj4 zWu*@rWYV!o4qCp5+d!vK+(YDG`(%3So{v?LYAMsQMr^wYY<0+fX%He#Y~CAAxqeSY zofhG8Hxyb-fCt(AbsYW==alP#WTus4!P-G_Pj{<-Z~|waKTN-i#3U+t@mP7ai}Gmg zPC1F_<~I_P5jeA{$&ZH+QZ_B@!*s9#u_cG-7nw;>yoc(<`7ncSP=I=tIC*GKr{&vd zh$NZ%=A+o*KC7m0miLt1iB~JDVr&FDTspx7`YcJ?2<+X|b>^^fYb><$#^=?<4h^x? zt!yWBIBf5Jfv;uh8eymI*GB7!mn`8B$(|Xkv(^+9#7`c|t!*IbMGC>x zB23D3m!3z7@oRE!p++TWHFIHE6Al9_sIar=& zg<>b6w8hL0G2SMF#jj2sB>>5l5o37UF6Hf482?@DIaBND{3^^p; zHl0=cPstb|d^}PI8rO&Sj+?Px)abBZy>m`{a?@j{Cz0x?{f`cM{Ea+8pKq2B-(4SO zHv6uZqZ>8*OEw;*hNQ~kO7%z~4pBK~djRGzi(W2j=hF1mFTW;M_WtB`u^}TxbEpXJ zf1SN?0lEGm;~82*@ki{fb!W!G4t2h`3Tk?0h~e?pIgK0@=`(Zl$4M?`mbyXS$&YT4 zlP{%#q@o%QiPm7&@GcbYB<;Bmj`q@c@CZg-kokxK2NAV@iPG zNgBz};_G%2F-wBz5pV%rvUZ1^tP%db18TMPD4BX#y`xc>=6a+LCV8H_8INpsU`f|! zN%EotQ{CWYEguKuzZE!@I5vmCB$LlgPu%e9t%RlpC{Hgq?r8T$5(8R}xc;~HcG zTTubzS(khgs^!b8n9pQ#a}P-IJI(beY41wKWT;FjPX}zq~Od*d&i0 zM9g;_Ans0)OwAzAx`HM*t6`qpXCto?d-^1W>agXdo*Xeb!udp`Z)b6& z+`%TCLTGH+9O3-LbfQ{PnJ?5Cca%c7qvP(r}$a!D3NXcK9Pzwhkm9t%!`zZI5 z*154h$}$`4j}WAOMtfun3FR3rQSAYMQF0OJeu0L26BlazsuZ}0?e(dSN+Fdr^-&G0 z)7xE7@K>jkAI7a&Sw*(itOVLjnp9t6i`$Q^-J^AfF^7b^e9gC~%=Lus-<}Zb_ms*9 z>kr^pt1PU(yD*q$QF96DUJBqIaX5Roxp9rTt}#5T*{=b}p=PTZBOWtVt_vMx(*svc ztCo!`r(rf}6bIdGpd5mqslg>9U8D1<6&9SO6%qm*Pbjd z&n>5Ohv%D%nF*r|IFRe4z)eiw4V4%YE^K6XM0+%!7%R43NBS=C1+zda*i`3UUjxX) z)^Kd^04eh;3N;fg*PsSWbq#Xdbc-RRF&EVDa4JvGUmx(c*cek zs$bOEzd6#24E#uzGhZNhf5c4Abl@R%Fl8G&Ll_};9pAvWfT62w77psna=E-ij6_jw%NM{4{CU0(+M$4*zW3f$f5<}MYr#X&U|e7e;N6@ig5ZnCBm7WlM<_#LK-f=3J6mo!YGjVF+%VS3A9ZKoq` zO($*)4@pL#{vN*zh$+3$wzMTw_1%$#N16;tcXYpi)$nt0yAp!?TEV3dG2jGTq(D$~ z*0yiN-)Q@`1qYj|waPj1=j<E#rt0SX<*JG^XU=KnsW~r z|52P!2qzt2U%M;<08l*?J){ErV+eg<&`!@()MplX+#1YbIp#4fMK;x;ZXG zb_lIX;G#5hok3r+9h#uem9s<9eN#)Lo$%=j_)U|5m0Cv<0WuARnkaMlviTk|T0tmc z567T^UU8+PHp^$e4 z4PFZLg#*J7T>Z5t<8Y4~PXF-g8DjA*m$G)32X<<#wF_(GCk}6}dg!dJMPrI!7p&C^ zPJB`&ztpF0-8)Y^>nYK)bW-3&! z0`;0(#{@J0BcG`B2UK=e=94#XzR>qP;x+XT>|;J=apK-?*}U7EaW1=oz_wqIs$}P~*+H2MCQc5kpd$-= zzu#mEIh>*nTtUt2vDz$YXD<$^d#_Z65fV4%tiDCTqYH)aw;p_Pw56jKHh6P~=R8C< zhPomdT9(h(@(_y3-v`Kc6aLD~D4ZGTpL~FzBp>(QG~_|q$UF|*@)^LJxN2ZQyiXijc;n*w7Cq;YTS!t@~L^NZu7QEq8W%*B)4 z)?;xWlt|b*B(T^86>(nsa-pta=ke^jfNYmhqQ3sA*N8Hhp2^ElvE!F71|u^Hg>WKZ zI6l2e`qJCSI1B+Y-Iu6zp$;wY%}sI1alALxO`@)EBV$hxKEFQ7Mn<~6W-#Jm1QNj8 z}SthM@O-Vv17bVqRe{5+H_R!Uv?x zA@G6kjK0d&V~KtRP;A<&GyOr0hs!&lqqH}$&s}W>fce`@1}56AA@3m)I$#bQb9Lh| zTMhPI?$1CG%j7)hzVip#8}Fidi~U?t?Vv{N^>?x#Cy~2lTQ2I*b୭IZgXOGSy zCagyZGR;QfV-QODLg6mH`&C;r1UGupP)zA@RMQ#F&TA4&G@ei;JIPdf>^W0X;Zf2p zlfzg4nTFfC6~Cl*WYZ3my~htU88N+|x|Y=6F_vWs6I5J9ygxaHNcS@Db_ zg&5(NDoly#A2;9#&iigA7hY67$%7A#@WPxlQhpe3T4iZUG}92Y2%oLA&)ba6AsJ#@ zCqRILqh&)+Umkt~R->Z&Bpu#mEHy&GhBf-j7-C}}ymJIZEdzlnTOq6uoDTu{nD`71 zb21X3b?o8OxdDwrM`Ux_;YFEAZ`9pxDggxd^6=}iHZv%Af&3yal%(<=6=uYtUA8>Q zhG-cCoETh^hPe=fpo3tQkOQ3&REj?_7V2PG%Q=Gq`FK@YU^ccU)U6f{+Qj4hRYKaQ z9PM;6AptI%9-Z8EG6CXIYgrxKvnEN$yXD!EPxF|Jn|I&Uy_RfOU{vXkaMJe!Rw0~+{x~|&^30Zh&_6ElmS%jKd<{cFPvCPrw zfZ>qybwPz&PM_H1pxg>l6&mbf?p-MA2bV1o5OIf@FI)T;ljmbjhMGq4gHj}qp~}2W zJUNfYa01nSQGE@!U8^>fX=ka2)fuuxCE-XO-XI9%1%N@BXON4fv{%JS?S3bzo%n5eZMoUNa=Q`0=8`<21u+cax|4iYKjHu&5I z!I70jjK$U>W2z_&#x`9!p{gsx{^MAn@$jik9b9%|r_>9{Z z7?nKMbgvvHE#JUB4XVLbRwSKOV&le{HM2|p8gc*Ypp3{CADjWu^94nN#n=zO@F`}j zK0@RXHoN0?ulIB%RP%j=@Z{0n_fsbtE~5+77Et|7D81=YtT=Sy^V9>c>r}Ui3UTnH5JBF2pqrv~OFqpU;vGN8 z1tn8h-reta4k4!s1Iyv82Or^c#YSuAwn4xSe0s2ERjv4tsuuOeq8pe;hRSbidm+@$ zVNoNKx~{Wmi>HIeUGaT*drvS5_FK#=I8}smw6zA_NpNWdh)LjCwW%HAQ&}3P9F5jw z+xA}u63YmX;zU#W`tJA75b|TUQNj;GyLKmtB6;q;eQ(l;fY?9cph4{di)R5j=qE1aoK87roQ@>FY8bt?W`Z|skA$_?lqElG-hkrv^zmne8in=DsnJv zKSA+4fb-c-4d8f^3aeZ)m>R0240Lhw$Ka3Jc?qMVJizTQpfE|`SZgmB(hFnXn$2MB zlP+fNO*AIPrW`1QQ}@C7KtaTD!TM(dZRA1f_)+t=I{&t{lt_=kS4r_Z+WcyB#Y-gG z>g+NH;m+{`TSma)=H?{!mgTq@`HST9j7~Q;4~Iw_iFS{lv=N_zqK_b9$c%B1aj7Nb zXkM6SYLj0KLhF%!ti@o{Yngc7n+--Gcy5}aT1HAs#G&>}c@CjKxe6ga-&{K?TBrVC zN(qt_52z!^LTl0p!0B7>XO36LTmuG&Fz!S|zHN-*w1faGc#p9~2DTu+@=iVphjD~f z09CIh4&%qO!!EOg&j#wiSYs<8O&*dhh}>QB%E_4=(k9}oT5`kDQi1HmV_MPrG&SQR zc=vtACEMU^2e3B9F~6s5sfK-ayJdv)H^;2Sz9X65 zW(q3x$UReT6WTWI;LSdo{Un#3u{#~*wb!OLoQf|W_MgfkW?e1CD=VP)3M`Iy%fw!@%`H=Epl{HTK{f{~Sm;TF`4- zdzmIy7DaM}!T#%T(6RB09CQ*YXN67@ZPFQ#ApSr7vv_=i_Jvu6nVaWHysA>lNrC z^ubK^Dp6XVK?SrJ(4VkWpB-(=s7y_fjb&CsNm5@vrGp*N6>+5p2dCdFk92X(KAZCH zokY4Cw%r6v-mBfY4lpc$BlaT2^?DA|G=lux{q^zHe(S-|auWOGX-3`lImBSvW>BqF zf%)7o#!~E~se!}g;h0*=C@uC)MU|qm@2yFLyCQz4`#Sh^D8F@E^u_IO6Gny3=z0^N zka%Husu26Mt%V{bIj)=tq_O-F-H0jeS3MHl?i>QpfX3)z+-+Cu-$tOUiDVxQ7lj=0 zOl+1&W!nU4N9&X<@6G$iCz}?^AFRJo&zDbDoY$D!1?_9i>0=J}%@b&re?_NUaBnXD zlX#xzxrhafHlyC(4ubnK+4HDF#DG^Fr0%|4jG+%ROy zP?c8$c7@`wXKhNBZ$4l^xAi>2~w4(vqC4i0$o_FA*l@|493K+wt_D-?#w&Ec&cY2M*4#XUGmuPwIU;h`yi42Er z;GwL&mqVfkfiL#VaagtFmFq_YLdJvW z-fX;E`bnQ|oP6MSvEAA>EHr#5}39z1y-k|OHT$I$dgvL zPKw>g@n}VLvch#)zneNI_7LJ?>p!EqIpBavd>$Wf;b$NZDu%mEhq>-7AL zLdfK6qwxd%x{VJy0dA>p_=Rw#-2asR^Npd1G0jbAj0*-t07HG2oQp++JCgxWDFQE7 zD}G|k`EFEt-ntMm#&=bl0q7)5jb-HHLw6>c(ly4e#VWqa!l|4?k%F!n9ixo{onLBS z17@UWN@ZJ0-|JrOqf!GLPZOKNW$I8nuTP;-ViLB=d|$r-H=&EvN<*fiCQTZuOC~l# zu}0!-yOg{g#JKhb3^9^Z(4|-2|J&EyGz7l5q{AlwPBTmlSJSdpHBjHfrSu7yQ?g?3 zEDK9HucUeud}z?(FlG=U@Ja(xb3c9uLB2xnBB$W|fo=vA$O;mjtvW;s&6v;8Iz&#g zK1<8 zIXuwl)l0`_R{gB4uTRKDt$SQoRfA}mT3-onJ6S{Imtt&jRk)(?r?C2~;O4h|(#AKt zm$qG^Wb+kf4B_=D?duFIUN#=TGPCQW((%#OGh4I>{fA}Ga}%~#b@jPR;ogSVOpE4# zzSjuqv}255dR{7-jqA=$N$!f?EYWsn+B)RjSdA84&%xcRun`Cvq5I(Q9Jo>)K~0@8 z{bZnF!Oq+g);IjQeB#2Tmwxfj)iPq(DeoAz0eS=!{q|Oce?1Fyq*4_*I(gwOfie@e z2ik9UR1CfnV1qIZ=56<79Y&!1;rF{s=5p-1XYgm9nTAJ68D}Yy5G)qMcD`!mVOyVd z@bxf38tUs-&G-z_%3H&QdAMxI4ZFZ=Td-#bms);+Y?%cc7Z6H)%-pT?*CU$8>Km`g z3+D8+A_mR^!$L&q&hRUsct!4Sy94E5?!q)6;ktOOG0YpE0fp>h7>yuYr-w7i19pRA zE1!*Fp1pm8p2rm+aoeO9?kLQ3m=^92p~}pgz!(Y2o>pmzlLstq_&Pv1jGiV;i4ggsKHo$`*CpqMb37+ zOIhb*N_C)qVc0(f#rQp3p#eMU9KRk;sA_LTNIdopi4ui#gkaBGo>AhLQQ-q;n$Dy> zcrd9W`*cTPfWz#2uPBPm7@($#I-F9&4{L`@V$vnO$%Gu z%HW|Os~N>t^hZCJKj*lOEJgC?B;QpQGtV0`-MigVvu1tlDv|h)J||s_a6<&-97eMSe+vpa(ZG}xL$0RakUUZCZU%g zSy@#C^q}g5<77Bp^WVt^Jsg65$)H;@+ft?*L#*j|$ZHUe&@I2dDciycxF&u%>6v&& zRP!-lN`3z)d1wR0-xZ^kmXXI)ptM85yyeJ((tw~ylz0wID-y5^1kJ$L} zoj~-4+|8wOgZI4zwjm0|q(NyLt*RI9vIOv7WF^eg1?5Rt&qQB~cbRg|;|6zSxQ+y9 zvM6i<&Za^)jkI+hpZrYghqByMiaI*XLX3I1oNqBTyf3SsprT*!Lg_^}NQ*>v2F#zX zHLKVta`tO!&9nK8CZDrZ{~hG(Cbl-kI3FQ}0Wx}D6ohzZ+Yb`FD{evTfpsmrD1U?) z079mp=@jU4aQ^Sqg=lxVzuQbCmn|0@Tjjkutbp940L!+F{RjVJt-HJD7n0iZiQi=1vJ}AMCJ( zwA>FIMQTf7PhUUKK274PhEhu^im!2=Fc5kVt=%_4gPR)^)}< zXhtcsJY^e$db?10{!+Sf3HDK$Hm%LOXnM{I^yRMoDdhrep!M)loxhyZKu32KvvpoC}hn?VH|7s7v5fw}fiIh7Y+SiEW61HiikqzbdfS6z#F_N1Q0c=D}Tw zXp^yZY0K!*J;(Kvw|`+b4NT4I^i)iPSy5Nx0G08fBtUz^{^2kRVP`&BvUzuYA{rJ~ zY(&WxqREB|#fi&?rE*UCeagGRJSKa@GKZqGzxu6q5>rPD_!i*{R_JA5eBkx)3Gxj> zPidd7$N}fBd7Lk&%ohsVyKJKdQCX4=_q48teAzIcMf=K*JdoTi0VszRyy+n?E!>tb zu#E!CaVL-gTQ?nl35L%Jn6;++eZgzjeB8g(9NBt1hA|)7F+N}P+$X<7)sI*!L97uk zj6g{Z)UVlmj4a?Eh`${l?2p(ClnEtN5R*8^NWnJ3Y`{*aWC-+m)EpleKcZcTj*|MF z2Ff?E8*?Cny)PmCcA@|~M$$D*bA(pSkGICVQ8_C%F6B2KvyhT1mDg3yW2tw+FLikw zoYFhPv>6EI5*OeUB%LhVkvI#<*MYj}r1OoWpus&~P*oen#fWzO)n#^g_Res$FZEw7 z(nbDF()scl^hZ+N02~9_*pcAj8}HK3R~MI~@nPx{;JC#eH3y?Okj+cjEG%lI_?p0p zZc$0-u+RqzKEHcZyuAd%*W?>%oJgbOTY7Cd86p{bxE}9+^~)_0!EM#=KiJ%=#Gd)s z-wpKIq9?x-Gz9nGKKaKAaq^U|yvYd)-j z6=(#DD5W9t4=PmM9rn60`1%tp{S63UMRCt0p>;@6ISK1p(RyUEQ+nFU8#8MdBD_X} z!v)?w?7dEw09(~^INl-q(CnTFtXCXdouHhzxo7`dw%Q}4=p}qwL&DKCyo)bcvTuYOY!G6d^*|4@ zdVaOOaU*BhGAvZN=lb&8Z&Os<^H^~v+M>PWh*?Ll2btF_B_#dsKIyjIwIe>wELXsR zcDc-syF8%i(NHFNTnHKYYJH}`!`Valur^zg-d9KQBc~k4{QnpmOAVd(9IR)kc7KC` z($byNT|=GWem<(^+rkXZ_Vz9Fp+tp8NEE06Aa$+O@*ExAjuN7fMWAfc7|HSsBf$88jxV%wH*O9D7ubwtx}Qs1}= zonHApWu4KEH4(l|Q-Z^V*o|>#6Ovx6+h2R;v})>*udrDj^orizF@O;ivp_g~&~SNO zZn?3bzr)m^L}sQFX>!a+lFQl(I(9M~JntC=??I)!(n-5k{pNQjuFOhejRrmUaO|NG zZq`O|K~>D%b`n7m$*B8c_lDe!r2`Rx05>^(E)oK!rKrZOHe)A;!6~0pTdsv{Xt&#i zGs{LDY7i;EZQ$neOo5IfF;0y)>aVZg_#hk<;tL@A(IH0Q-5Z4hf5PVrwwg3)tMB&H z%A)dRUfrDwhY+OD0essnrK}Tk%YO2frrP?gLCrVS>HlP)9<#2|NM#Q}yxa%T6tBRc zX^ney_rgte;9Qlz56?5W%S-bZwUlG(RMvVCG~_?pL#^T{@x8UA2gb-8P+;U>yUo0I z$TMBME2A-1OY*B*D>g)8d3l~NEV(TYpHrnf+Me)B5B)E7hKhxGn zyK4aDw=fXT{E~+qB~_Uoecn|!`MJ-Lu8jP(@lig|6(t%!`qv|MOo93;T=~9{%qpjZ z(6Pg=1unFsQaiXzYS`0B1Z~+hf5o@mnQe^isz1u<@K^F7=Liuapga$Iy<@o+(*>O12jZxYH>RGerO~oc$I+-Z7HV5)1j-!p1y;+b-z>dp19TM< zP9HWX;FZ^Jl+w3_H*YmZP0p6)e7r%JHUrk=&W=9mK0x}ppu(;eLe+7;O--K88&ZhD z;*L5k`xcyZJ%rY~MrD&{XC_M!bjBRt2(Xtv9Ep51eyCLQO6UZgpx1qqG$WI$USns} z_lgkf*VWKD@es2KXm7av5P+0GKHSu>xA2zFJ>}iO?o&|OY>PfFJ1OY?=N$X2bt(^7 zb&58uUx&MLPp=wD zFDhWqb%A5u25W)$(x{P=Z+(Ay$P!?omyqzONvf73gg|lZ>s>O|Wab4+p8qZV4Gyi2 zYYwMffN0(qGp0ta6;IUB_Q+8)PLg)7a?pvZ>l1Gd#Y;dzaNF=ej#3+?(w@7}6qTgR z>n@bG5B+?6-zF$P8&829`(nuH4UufZ*b}5`7vkd(`*Ol*y3Wz*;I%xU@3X zQ~8N?(XSHIzaaZ z_Qmjx7ge`9G)Yrj=ES%$!B-+H_aowj+_K6dSBv)Ofj08USKPh?w95vY)TC;jiX*`t^B<0`m6bPp*VAiIY7HHSy!o49G^20wSTkTNoj^hNnX2$h z8?9N3lA3O@2qm$Z^6@ed1mnU!tNa2Q6;AqE+8I-f=KH=5AIYl+YW3SExp-U8Qx<9-t?dT|DUEX~0uovd-A;SC#H&v=h-Hx0 zIL$a$y|0s(9sDcnfO37Y`_7mla$YJF05TXR5uGWyl-uh}2&PoLdH?p^)=P~QZod^Q zN_5O`f{9~t?dg8oIUXIPWxusL=bdY)gY6(>O^e%i%f&T9@6jcM;BTu%fM zZ1xuk`c7VNXBEA428BEvV}}Fl`P`LILjJkP->prNCQHZ)x>Ao4i(^lca|50y-S5xm zJSQv{?3M*Z&nRg;aT9sE=IpcNce)$3!FNXed0I*0VNs*-yP(`r6t3|HjvMVF9OJ)v zf9m{Jg>oypce5jYE+UL=S-TsGZ;I^#PJdGAq`Yk+I&JiyuVwMZ{B<@YBcTg;n?8u& zrckg;z6Z^o@p} zHXd(B+BSEA^%7g#BR(*RxVx0R8HAi*|ESQGp5)dI8NUNbRvzY+u}YpG5kQ1zX7=Rc zV=5u_vWaS<23n}ZOg7R#X>v{_I%m2WwIJt{D4Qo6>>IXngr`#8On90&ZS zp1ubfvS*56#b(YvX{AA0INZ}E-q_6!2g?Yj@}hAsBXZ^XCimqtjoKHfJUJvqOp$YH z4jfOPI_b}(`)W9;_cyX04Jw~@=RSbx^(|8}6W|GsItz-;(v?y+NTDr&=gEu|^e7$#ejqEIgtOufPpmvku zMl#dL!ST#0(Ow(w*+^MfdQsFv7;xx*C2^{2_EN;)Jqv*96OASvLtWG(c057V?fvTV zW1bByFK{_`I&v@@&P*DKe?S;0qOxg-bQdEi!(jUdp98JD&4GvV28WWfpO;zp3FJwC zZFf(8`}^@Ch%M_IcnWQ?YcB3%rQS@@t|-9UoJMsJaloE=3O|s_2~uHH^;2f{cA*$t zZ+aMBEglIwlo!~y?zS$CG|(nra`Gi>bc=gnKBDFeX!oh~KTqtD95^XBZXsjfnnjt8 zc%Fr!>XGRKOEfVH-_h9{sglNBn29xVg7AWyP#PBqr4nta)FFKQz^fDtwNceI{1E7S z7;M~An0iiMv$@-tmvFoVM9H|_UpQe^$~e_hcUPl!&529E^T!tN<>7kkKmJFKc5Ss| zi?s*la@y8EE9CG*E#ZQQ=QS8%<96{x+mH2){vCAy`f)?A0oUbc7h4ZNGhL#0+DYOB z!g!C`T9j|d1JAE$JA-L*1{|ZjNPh#CmNc#f^)367&zz&PD>v1YUOj;(n311w0lA+-yDEIgyW9^8#<_!-ij!XtZ(p>HSLuGA0gN%o* zVA=53^Wnn*n2GUj&Rdgg3~ztkesDe38~?FZY?zDU>H*ZW)WS9{)I;tiWIlF3Y*w+f z>bz*TqwKq#q|s*%ex!}2=#bU*b!0t6PRZd)|6)n(#b3pRT^*~bGJu+Z;of6=fF)H;`1@;s)XfV)BRqMxx&o9p4cug0H}Y7E4@@|eMXhW z>)a<8E5wE#`gj|fAnp$>VgXO{Al*4Ka4@_oJOwv}K)8%-3u8X(HoymXaJ2P}=`vao zLzM$KAgPwc#bpY3V7$fhkE&^0e27|@wsjOZ>KI#Gjdw4} zv``~XNgG>SaTqqSn4F3;@aH`^K7_y3(T8DA&w$;TI|8gipDA`D@o|J-cRM9Y$=9Je zUkOC~?ASj}kfq0tag1u;-SK$rLzM>xv5SY|eRFofz#v0|PnTgF_t2QJbfSZ{2WmeV z&3!jUCmohTF)4YBmIzOS%_D$!2&g|7LavF5a*blg2D9&i7gJ2b*t?;51G+`YbQbmYrw#*K>WSj)Dq`-Q%{c zG}h+`^3Dmkw|Nz~@~0WU>N_|m_7;kaMy>U^esVKqyZaRBR2q-_2&Dxm_BCgQGvKq!#bT$1VICL#Bmk{qawTz@{EasgFmwMheSYjPw^{0Tmg$Bdu%B{vzYu|%D|Kzou(3Cj3L)WQi-pl+6Al~}4D262($CqcqYMWm^X zYc#Y4Z3#N`5{hi8n8GjVETkM`M4%5~I$+|I|0+_8E_w1p>YwAjm!% z4sQ4a9JD?y5Q_orUZ{r>Qibd`!e+iHVOvU%#? zX%j{5C*8(z6DLr2jQnV79oKeJzRjp`Xhh$PxUvgJYUVTzlzkJg(vhE0vbo!6B%aRL z|5}?c#UIFoN`ZhC|4ug^Ya8Z+=;)>NhTX#jDF2M}SeFY5j3Yp4EP?hPF6>poo9V-c zAOMlw&O01I8NSJG+$<&KLKq-tXHE?EiT8zMklLy#a@VF>ZjFDv^w>G0ds=pOIt7Tm zqQgcjG|$|kc1DUWTP?%WpEo|kue}hs#!ZspvD*)V=m7!$+#173p4lWRkI+g(`OJ@q zF^uY`rDMI~eVQ5e&^_vfsX$chQyahq8XGX!gPNg9u7ei^ivI4KGl#&Y*|f055HMkV z2mLnwE+#;TExT&-48R3$d6i7ZBqD~&Kr?1XUv?8x)p&>zHu5vjYB5eqFW+uXJO*0d zjn9C6p$~wC+2@%CE_|8mYfxeMT^p6wat4$6<=dyN5nuE33jQSKjGp{2&`pG6Cc_P2!8@^_2!fLTxNi-O@8)eZ0HRELWLR zm_{mo_yAUp{lj>7T^gp&vDIVLDWFiUb+@o(i(^X)%Zr?6PwGfPQ51D>8}v)J zRUst9;Oo;=a`$*0Oih_Cjf%%ZYwG(^vj6bw^t$nq6tE&3^jCi_>EN(oSSK=D`Krp& zIov~6xEcSu%_RNkOpUoaapY$2@Wj}R7WDWI0+V?J>{V)%v#!P(1~hD?XeK(8w(5~N z-`>$@R@l@yKp2|}8=p=Xtf|3|9{5#u`wo}!ZkfDoF>U;fYz}J8EmmxCf6GV_x(vF9 z9+hd;3mI0VIrWEcxpp4}g*>-b0Z*L| zvqixb6V%@k+{xrArwflZ}3lYGicD~tua3xCo_M9Akg>i1|k9XZ} zY_WDoIdXPw=#Q*(CE_6$=>p~L$@==&*}HW4R(>oBi=pG~+b--Sm%WUsti0^)Sx7I_ zgU;%qJF0e~A}kfw7rvOssaM|bf)dp7=b_$%h07+i;p2u+as(`GGPz;e!Q~#@`8I_m z?U3cxO9;|YRJ4Siqc1RgZk%h)Jyfr6`>uQQSb@^2TbhgVzx#l1{?6r-aC4?g>D+R< zChJVLuKHVx`c^-Dsue-m^259B5ClZ3TQGob0b!Nbkz2p&RV~oyRzK8Y(!TN!&9m($ zfjc$StS-M|72G;@MyCDy2L(ug7e37Wg{-x5jP?I+B;F#Zv)ZnxcJ4jw(fu}D_P<8z{0F{$R_lRGOuwMSnuGfU>l@#9IX* z6t^`tK3xNG$wxrj<#X11thyGQ9rqzrtf$9I%B7D0-Rz>q8~a;OeK2sOl(>1q*dRGaI&7_D!OU}eE+t1gILV>6lO33P@VkC`W8kel7 z-%7jq)CC*2R<9z8!2+#xdK-DchaRV!lQ2_Jqq6;8@RGG`Yb#*%2;MpnEDr6AcOmv+ zBg^Bt3!fvcs2mtGlZ?_1Bs&4om3D*(8DcaakORysN`@I)h0J85MYEaTz;XoYz(ufn z@iz+wMW+e6SxJemV}O)OYpI+3&(# z$w5USNGXNt%n|*T9Wr5k{)~m))9>Tzv}Dus_cE_KvuFZq+-5eiMjvGSa2M{dKiQSz zM^_gxY($mDPC)zdsIScD(g6@nLclbvrR@dK{_q2Rru_&bQ``&?bmi9%YWdrcxS{?z zwcV(H{muO*XTblxk=|pl4?Lc@RtSk#(;*P}ptq&I6yzyCl<62e5`5Ui3K<&HO zg*@-kXm$$$_+NZNnDll4AQvM~tKy3kmoe1DPjGtIn{KF?&3*0eROliWKnC*gOX$#< zEPm9Oji)nbTd#4F9fXheLwBbAMFga34u+9IO9Je~JlTRE3~Uh#)C0R8Iyw%BIe;W# zS-3eG5>uQ~xeL*!8_ctZ=5)Xh@ZaP{E%V|qWp-O`e;(L>GVFsAAaZG#3;PRJDy;Tx z3%VSuyy(1}N~G18={cptQERozjv@tV*%uphgt%!DNePw1ugV}&0{>Md(#8)^Hmn`! z63gIkZfaC`)ruFE3pw=W60n_G(hFPhpi@D*0#~}?RnN~68bm0*ou)GAH%ZZgu5PN0$2`Ck(=^Q|Ep%i*J&f7vv z{t}U2GnF$7*29}p40K&phXVKajrqYvL^n9+gq|If&%UAYcj{@?9BzJd`=kZzSPblyHmCPAwy7Ik4GmKk4= z;U_zgf#8cK_dq+IC$K_Aa7m$Lx<%7-b7QuYUHoQYo2+t*{ixEw!!dwf$&Z^y-Skv| z*XzuRT0qc#F*F6e7pTPUd<1&i)_GT7sk{fl+B2kLL^ndj=^!FBQ$0!6QR;S78xMni zKkFd#4cIK;yW8l4PZu07ZyyBwWPlaCQaL4E8*QFap&_W9o=@OJ67ul97fO~wtAa4C zoFJW_401l*W)i3y(+a2q>skW0X|J>)p~Gu$|4q2bdLIr)`Ohy*m=~Vjwcyj1>Pst@ zL@~VplGUG46>1y9GClDUH^B$B`=PP}f8oPS60qpFw6MVA3i%+^Bi@&tqGK+M*ntrr z^9)qRfb`=95P&c$?xr(TrpwkLksH(`K1T*r#io-u@oej7r1pceDFS&|HW0zv8)P82 zB!m$9o7rJ*>ZL%*cCR$Mic+*YuV9wI-bib~DyzmV)Yl54XLOT~( zPGzc>cMnE9)PHr}$XL-*x704KrfaVeEQUM8flMEkp z=k{FC3{)&8kq@;+#Zy}l@dyfo>PWjFAh*4D6w`tP39MQj`mWC|oU0t`)W3;(zV!^4 zNZ2ZCE=WO4PNH5`sb1mO3rc?$2lTQF3A}E}1(@w9@mIF>vSD-n8#o4j2#u`CoSg#G zswx66Hy&|MZz|X}4xIFB_H-?zQUaaoUcc_T_g7&V)H=hUzA+ zE7Hd(wrh+XfJ1UK6vPbm8!bai!|`y))jk7f%tnfU0)Cf${-o9kpzZq@4xQWrS#azS zREJOxP1bblcpeKq$7K~q5K-{ykqJ)P{ErMpWrv$HGY}$;bv;%-o17Z0*;39?eUKVT zvF7<6qR5ptK!n%@T7!GMN;jfmn`|{FgilK7*HbA-OO!f}4;+suIay?LbON5|FgU_KxQzpU|-G}uHk z$O{*NOb#>B=K}Tyy_2>MQ3cAJ<LDn-|BR%9rJ?SvC3Aad$$K@iBz;d*USRVe4{&umsFcu%WTW%6KzE(^ zLQ=6}b=>lve1Za`FOc*OAh7N$G)-}!HnmUymqwsJ;S1>}S(!2j<2QkGEsj1NF&)%V z16AJrs928koB;JX$Mn(s(@2#Q#vw6((*t$Wk-$8nXb#o+v>G1YIqG zIyjQfd(*B2DU*=R1IP-mXU1Tji!D97rJUFFRmod!J*bHmDKj&Bpf2c6@EkrEHVc6I z0tyjp;zCG5C2T!JV?cc$`(bKFvY6;BINQaXX2}uHMFy9X z54$xB9B%YpeKkgb3cmocH?bf~y8!$GHdA*17p`^773`x$7oT>x??A7M%cVoYuijMxFO54{kZ&voLVii$8vPXmZbT{n>+P%1YByg*jO%|;DsR#1>Ffk1>43AmOUqEd2~3L-tR zgDn4kcoMO|4ZTN*#=@7S;K(?tS@_GX6K{;jpg)o$4&n+Iz;p#@(h+}p@~=nGEcMHq zQTTY1&;yArNZJta%qK~B`J$zCa*f-eO_sl}h!c=aE{9G$8oHsIv~oM=&kwgvzeJu{ zbuH@?Y9up<(rqim{Q@SvEVDeFZYq5(s?UM_JxH#zPuB%h_y$s_!R0jN455%g6Q8C! zC(zpo0mnhyn$YH;^%}V+fYF-_p~oGW5~JZ{Cz*XPawfjAA-i#qGzRr{KhWRXe)Il# z?w33`@#j>3nALUNO8u>g7SLY}CrUC9Fx65yyyO42y0hd`=ATkX9Dzw)ALCYdSP9V2vK{*)cJyJSTsqe4c)}ar4QjT~H?Bx@ z@Hj#vdJT4y%%-G8*^0$2_g$C-l7Y15ruM%Qbo_ac^IW+J7m{4Xm;wlfSfz%Zo`znT z%^+}M>Q`im!hTp%uDM1IIP>)5hs&;k7HQzl?hLQA-PC6z`8k|9)_#bN;YBaw&aS`1yj_%kiTnwZd*)(j=;O zq4qtoytHy!Yk|6gn#2%exb&0pfFua_jljsLopahHAl3Q!%LlPObe163%{G8!&&5%( z3OthOzSv!(cM<3LJg7{JK;)|Gg=9h8QETH}$Rj#SdHmR8>jrJb30#%ho~Z{qlf{x; zs4VBTWO4HbHV;6Dt(`k` zU?hxQqtH)yAo`=7Ko;F!LRUU5TXsgggAT~YA8XmTrxyZ#YjIIg;JeJ zh{UX3dIZ>kMUcd9f+3WLBN%~LW=6h9XEp%~>J9CUdy!LO6*fA7dUp9MWdNNhLBhHy ze%J>~duoe<*O!$D8Y?@M@efNZb52Ru3=rz%llvA*JH!mvx+U*4x8>b9*Bkhy&ne-; zQJxGsQN^%v>-88uBRRr3-JhVQ-Xy#jNLk6698eD#h}8qZ4{vmW)|$l^BRbUFKr_gH zpDAdesWy$1!-!xH4Nbo>z2IlusP|9t<^q4HM{@igB(J|>dq4Jb{cY)6Vk|gRL%|GG z%teG}j=+FJuMvHm!~AqSJ4%cZ84hw)92#wN1xAgbK4(8THFpJSTzYaTmAMPiaSS)niEE(R3E-g3V7Xl$)jj15yk}qa-}p-%P^(yD@0>Yw44-2Q;Q0L+0Ouz4zS78#5EXNxCZjIM;Jr}$Bs%|) z^m`{vth)(tk|3JPphOd$*@DvS77mnVCpU@QU7u2ij>~XJr@n$J0T&Wqk2tWKChg$N zh@XDUlSenvtTCkFYmES^3rNHpsRbde(IOa>^QN!QPHw>y7euZ%S$PT|8(QTkK4-fY z;PW?2QK3h;yi51{VJL2rYIB+h=-4{=^*K`~>INuGgIR#iXyQaNvcAsyaU?KEWF@~)msiT#)^hPcpEl6K+bZ_hrC_ty$92^YDU@~Ct zzIQG0V+{m!;DLcRBs9aBjl~}01kkm)fuD^dMTqUQfG&hJKsI*)+VuCz$4}S3#FQH)WjyFYjq7t$IYQ9kJooBhbh>(F z-|g{ftB zrOa(YC;igbKPN#j=ZzFvZLp2_lpRjlxfl(&-4Bg}BwmJV&DR zsNhj+7U5g-0S+pp=r?x)AOT0Ou32E4d!w0p=hN#nOp8D>=d@DBcnX02C9uXl)@cR! zSMA>vf4&_Ov2^o=hoBZBetsu@MIl?4cfASQ(!IOct;GpVpsvu|f|+*ugPuqabEeN_ zCYs#>Vh1ZYT}zAXUgiQC1 z_&XqQo^KLmc9aarZOwyNHbO}usL4OKt=G!hBS%02EqtUGwb&xY2oy3F&A;J#BNn)^H?t!5gqhy$4mf zvmxd51iiY`X&pdXeX@(kJ@#B5$_Z6n(~?vCcHvGmvmZg#0DZ(qvHEOQ0`B&AfpSY5 ziPz7M*QwwSK);4v(nHk+58xKHH&Sb*H-NZuRqFZSlZ zQeFW0@Ed5D(cBa&NV6{>f+~hSwq%@lLxJca8?BmE7QvC&m*Q_Ejt$V-Lx6RIs`#3?9 zlkn|O83r`sv1f+`z-r=vXf|#5`e+;>Z|Gd95GuqV_VArahbM`yWy_9dKEj!sy0H40 zALkdyo#nNZ@^AXKHY2-PXrWs3R!$cZGB1QGkbW})8dA!56MAomX<3BW&ZTQUC`k=% zL8Mp%izNKVhNqtp#DXaP&4n=DqW1FbkIJ&ZbDI-`XGk=v%0>Fm2Baa5{e|f|Uth3n zi$!9Q$2?F?1D);yObGWJ1hCJis{)DvL&QJTAlWV5ZfTwa>0My%dKZ8;C7N01R8GOq zBLt2=2#P#*uisT#N3qPkIlwA?|DVG6+ar)q?PB>IOFMD2;M5PDyIU*63EZn+3@wG- zAE7y8s8%+DT8Za)X(+&(6J)1}LXgT9h1VgcH#Fp7&&nVMUtvn^uT0|Yu4q~p&p=#Y znkW)TM=7s(m*d#1Gn&cQh06PITBes5g33s1=O^qK0s=Mn#To&-D+QDgc;<%QNUPDA z3cs79vVtLPLUr3GkAnBk$=7D1!_07FR_MrbZBX|m1Mi$*$_g`B2A|wo*Ex={2vRrt={*#p6d+Od;w_*R0ftp@{171IB!Hq3JN-%-gHXOAk4Of1I?P@jBr6H zCLoE?gQ8;YsVE#pWHs;et#{lL;9xaelio}>#O{c^00h)oVQI7Hq@ikB3~=CP&;>Kd zY)8t0q44xpFwg2GOi$c`L>A`ymiNh5JJqI-My?KXAmjZ`L1-am#^^(sqvtpxvO=5E z&26it*s|Bf{{$)5l(MGRq(LJmVQ>@bT*>eNmz$>6SEa2FDQG`p-0=`@^50AtuLR<| zS!Pcl8Xr^yrp63mwj#EH6mFOevp&ZWv;svD=r0O+-c`8{&57xPp)ofB@)bFI&hU=n zF$W;k`$kL;8b9nnapzsj7e7f!-Tp$$;B86OvpO4D;!CY~c_zofR{8IAWS=Nsd}WI+ zdvRwsZQ{MjJvXVQ+8VW@K^H+rSiDDXr~$0=Zw zNJ*n8@<8HP?;GD!nJtEFFlS9;*%apwzEzwQ`4e!8dunYYK|&@cLwjZkCRq4{w>rB0 zs%YDkKwEqxgGMV*iT9I4YB0G(yXyP!I8yHSCD2U8LEV8dH6KoyEQM#Hea&r6+m>H1 zTAlA}FUyD79SGrf>Mdas;N!P0g~SV|_m3zJixZPqc+xK{tkhfAy<>Fqiu`HS7E-aG zs{Qw$3IEHj`Kpdi?WX=1*Jb>F-WI;EBY%SteRo;^ZumIoYqsk1OB1=9dTb#Lwy=-# zUc>^HEbY61WhIum{B(1deL?JmHc{1OsumS>?$)GLrzL#ws?_Okm$sh>FXTWH@y(;} zbP!kB&ip;BibAk5b#=)T>RSmm;UGc7yqw8{NOU7ID~qA>8ZH_#(@cS z75?{|bSxYIdN<{AY0oSbbbqvSey~vAT~^?~5sc*LphG-!W+~^i_RMNaUYxqK z>NWrEJ5tPo0{<}=`o|GVCR9+mQDs>zV}51++5YN3fE?a~p^t8OGe6@P1ai3?PKPQX#7 zcC>l!PZU`GTz&R`al(-&;k}BTTRBKf_t`p=Z!r3Q=!99J?AYwa>}RR?zueM-d9fZs z4!HjUA99rZYb*XoH-h;Cc7q(R6#e46mYbxmTlF&G&n)_!6+i#+_IT_7wG7exg0dxx zn=2J1{M2xB(T4wp7m-2c`y_Ol0h8k@yrO_GXBGeWp60P%fSoYN0e2|W%qQDI&!{Vv zR&Uv>2-e$jJ&Kp;?k2{(*8RS&$`;JcYllt=@vfs&cpk~ix@GZ)7uq*m9ZOUpY}#I( z>B_&ttmmG0e(2ywK&0)CmaoJ+F&tF<|K0wRN9iM%;2-k;fAszjtkO+$7`^Z1{j>CT z{>j#bXI#3>oflw8&#y|0L^sxR)G;e+BY<#hiKsL4)Gg4Z&85$2<6%7_~RmGn3U@AFi5zQ1e*ivw8;?rzQN9V-l~Uzw`p zd)(`vxNLc#a;FO>`2FvX35(-q2e;PjmW&i33Qx&}tO^t6s=+X4bJ2&)fAOCJ1!6e3 zo$Bme8bIEk`(Ladshj?X6Z9lF#gnYNR^3&k67{A3VzU(#z`kYlPEFltqFM0wREy>AxVbQFu(kATo`@_WODo6sF7EIDWMV5G30)=y zql|{$l`^k*BsdeEu6_C=iQiRr^aJa52MJ)Q$5TqO*0g6<!>P*5PcFT+K_X>%PkRKq{`bN6Qt%VW2REm6DrLi* zjj(1>e}nw|%fJs~1>0eVvzy2=Z?fRi#_Hex^&3TNC1kx;QK{XoTU-B|@XalNC-UE) zw(dYgmSX5v`V~ewGpl@0jiB24FMJme`{6yDtJhql{eGu_^&K4cpUjRPnpo^yBg0lR zshfUI`i6S@k07o>9r&=XI`aQF(J$K@9+T1VMJqxVhy#9$-35Qz%f&E#;-8{!7?bGdIj0_aAiM$;}+k7SzsGVSYGKYK$_

j3sYisd6y57^`*C}H!8Tx=Zr!_u>-D|{TbTEtQv1w1q{diCj*5(uBxsz306x(^ns#1_HVS=x$$ z8|X!Ep^qy_oMXC$)~zSp%}qD~9O~u!>Aj>8*a@v=)J0nFLApnQA%9^XaC+gl8N4WO zo8EAZj0lD1*@qK=qk^)Nrn@dij#Psh)-5Z- zFoRYhC0y}?bmOA9XW(811P)1%4{&D>w)zBEnM{0 zOhj;i)0u=AlN5nnV4zY0H7x>%|A1-ay7qElE1jpUp_u&mgfz@wYy+l|?I+*B%0`JC z#^>Y*-l2yoz=)W$ZrV0vcL8_2XMpyIBBvXI1tv)S6kyg@ZJxf1YehF&*b!NTBP(mx z1v>3UIArI4f(pk9)OIyVbtgzj2}Hj<@|>vgqeo zN<=Y5kvwy;APwj?)7=YBDLO33XOTf&21KGiK?yJ(bOglIC68fs)~~n&f`q!Jz{o}p zd}!Q*ih&JmAlL2a@Iq7}Ks)|(S>V_O1<$b1atO6USprOOwk|1hPCUi<#eg+g1Nq1WGz~NLbK-QXqn=uYC;| zqaOMTV0M5M@U!aNsq1*1!Nf9;qXK=A^b2kcM8N~em%o^}&^-sU0 ze|J=F5XO-qMCgV%2Nv-K&Ib;?yEsN_J_rqcks+?d#h5AlI t#lZamI|IZ2|9@WosA6DXU;~8{GeeNXDt)Ug^Q}M;22WQ%mvv4FO#rB|ip~H4 literal 0 HcmV?d00001 diff --git a/docs/07-项目管理/todo归档/2026-06-18.md b/docs/07-项目管理/todo归档/2026-06-18.md new file mode 100644 index 0000000..4fcc341 --- /dev/null +++ b/docs/07-项目管理/todo归档/2026-06-18.md @@ -0,0 +1,254 @@ +# Todo 归档 2026-06-18 + +> 从 docs/todo.md 迁移的已完成项 +> 归档日期: 2026-06-18 +> 来源: 三文档巡检归档 (todo.md/待决策.md/待审查.md) + +--- + +## 已完成功能需求 (F- 系列) + +### 2026-06-16 新需求 (已实施) + +- [x] ✅(batch38·2026-06-16·workflow wx5vd8ppk) F-260616-01 [P2] — **aichat Agentic 最大循环轮次支持配置(Settings)**。已落地(1:1 复刻 llm_concurrency,8 处改动全闭环)。 + +- [x] ✅(batch37·2026-06-16·workflow wg8x18y9y) F-260616-02 [P2] — **知识库「待审」(pending_review) 不应进第一个 tab(知识库/library)**。决策 a 落地:inbox 收 candidate+pending_review,library 纯 published。 + +- [x] ✅(batch44 后端 + batch45 前端·2026-06-16) F-260616-03 [P2] — **aichat 达最大轮次时询问「是否继续」+ 确认后续 loop**。全闭环:后端(batch44 AiMaxRoundsReached 暂停态+continue/stop IPC)+ 前端(batch45 操作卡 pendingMaxRounds+续/停按钮)。 + +- [x] ✅(batch42·2026-06-16·workflow w95hzp9tw) F-260616-04 [P1] — **run_command 超时→LLM 重试→反复审批循环**。已根治(tool_registry.rs 超时标注「勿盲目重试」+ DEFAULT_RUN_COMMAND_TIMEOUT_SECS 常量,handler map_err 改写)。 + +- [x] ✅(batch53·2026-06-16·workflow wbh8mu1iq·**run_command 循环核心解决**) F-260616-05 [P1](**共性根治**)— **agentic loop 工具调用去重缺失**。**batch53 落地 High risk 审批前去重**(audit.rs find_cached_high_risk_result 反向扫 messages + args JSON 规范化匹配 + 排除 pending 占位 + decided_by=auto_dedup,解决 run_command 反复审批循环,F-04 超时标注 + batch53 去重双保险)。 + +- [x] ✅(batch56·2026-06-16·workflow wsxxurgbr+主代核查) F-260616-06 [P2] — **「未找到挂起的审批」体验**。**全闭环落地**:①`commands.rs:217` ai_approve 幂等——内存 pending_approvals remove None 时查 `ai_tool_executions` 审计表,已 executed/rejected/failed 返回「已处理({status})」非报错 ②`useAiSend.ts:305` 审批按钮防抖——`_pendingApprovalIds` Set 守卫,同 id 短期多次点击只发一次 IPC,finally 块清理。 + +- [x] ✅(batch56·2026-06-16·workflow wsxxurgbr+主代核查) F-260616-07 [P2] — **流式对话失败自动重试**。**全闭环落地**:①`agentic.rs` stream_llm 调用处包重试循环(max_retries 形参,退避 1s→2s→4s,持 permit 防挤占) ②每重试 emit `AiStreamRetry` 事件(attempt/max_attempts) ③耗尽走原有 guard.reset+return ④state.rs 加 `agent_max_retries:Arc`(默认3) ⑤新 IPC `ai_set_agent_max_retries`(clamp 0-10) ⑥前端 api/ai.ts + types.ts(AiStreamRetry variant) + Settings.vue(input 0-10+debounce sync+i18n zh/en)。 + +- [x] ✅(batch56·2026-06-16·workflow wsxxurgbr+主代核查) F-260616-08 [P2] — **AI 数据获取工具 offset 分页 + 探总量**。**全闭环落地**:①6 工具(list_projects/tasks/ideas/trash/read_file搜索模式/search_files)全部补 offset+limit 参数,返回 items/total/has_more 替代 truncated ②新增 `get_project_count`+`get_task_count` 探总量工具 ③knowledge_search 解钳 `min(3)`→`min(20)`。 + +- [x] ✅(batch58·2026-06-16·workflow w2dw65maz+主代核查,vue-tsc 0err) F-260616-10 [P1·bug] — **provider 切换/默认值重启·刷新后失效(前端 activeProvider 不同步 DB 默认)**。用户实测:Settings 设 A 为默认 → 重启 → 默认变 B(列表第一个)。**根因全在前端,后端链路正确**(独立核验不信 PROGRESS.md):`ai_set_provider`(`commands.rs:747-774`) 互斥落库✅ + `update_full`(`crud.rs:1127`) SQL UPDATE 含 `is_default`✅ + `get_active_provider`(`prompt.rs:9-32`) 走 `DB.is_default`✅。**根因链**:①重启后前端 `store.activeProvider = null`(`stores/ai.ts:53`,无 localStorage 持久化 + 无启动恢复) ②`loadProviders`(`useAiPanel.ts:91-93`) 只拉列表**不同步 DB 默认** → activeProvider 仍 null ③**UI 错觉**:`activeProviderName`(`AiChat.vue:1169-1172`) null 时 fallback `providers[0]`(列表第一个) ≠ 用户设的 A → 「默认变另一个」 ④**真覆盖**:用户点 provider bar 切换 `cycleProvider`(`AiChat.vue:1180-1185`),`findIndex(activeProvider=null)` 返回 **-1** → `next = ps[(−1+1)%len] = ps[0]` = 列表第一个 B → `setProvider(B)` → 后端互斥落库把 `DB.is_default` 从 A **真改成 B**。 + +- [x] ✅(batch60合批·2026-06-16·主代核查,cargo 0err) F-260616-11 [P1·决策a累计计数] — **审批后 iteration 重置致 max_iterations/token 超配**。决策(2026-06-16):**a 累计计数**(try_continue 不重置 iteration,跨审批续跑延续累计)。**已实施**:`iteration_used:usize` 累计字段(`mod.rs:215/230` AiSession+new init 0)+`start_iteration:usize` 参数(`agentic.rs:114` run_agentic_loop signature +`:176` loop 边界 `start_iteration..max_iterations` +`:210` 一致性块 `iteration_used=iteration+1` +`:578` try_continue 加参 +`:675` spawn 透传)+三处 reset(`commands.rs:55/152/412` ai_chat_send/ai_regenerate/ai_edit_last 新生命周期)+ai_approve 两处累计读 iteration_used(`:260-262` 拒绝续跑 +`:313-315` 通过续跑)+`ai_continue_loop:601` reset+传0(F-03 决策a 达max重计区分)。两路径严格:审批累计(ai_approve) vs 达max重计(ai_continue_loop,F-03 a 用户授权重来) vs 新消息 reset。 + +- [x] ✅(batch60·2026-06-16·workflow whae812z5+主代核查,cargo 0err) F-260616-13 [P2] — **build_for_request 持锁重活 + system_prompt token 每轮重估**。性能分析批次发现:每轮 `stream_llm` 前 `session_arc.lock()`(`agentic.rs:251`)持锁期间做 `TokenEstimator::estimate_text(system_prompt)`(L252)+ `build_for_request`(L253 history clone + 裁剪)。system_prompt loop 外固定传入,**每轮重估其 token 是浪费**(可缓存);build_for_request 持锁做 history clone 是重活,消息多时(200 cap)锁持有期长。**方向**:①system_prompt token loop 外算一次缓存 ②build_for_request 先 clone messages 释放锁再裁剪。低收益优化。 + +- [x] ✅(主代核验·2026-06-16) F-260616-14 [P2/核验] — **max_tokens 8192 截断 + 前端批量审批核验**。核验结论:①`max_tokens=8192`(实际 `agentic.rs:270`)≈6-8k 字日常够用,长回复截断由 batch59 MidStream 保文兜底不丢文,**可配低优先非阻塞**(登记可选优化)②前端批量审批 **AE-2025-01 已完整闭环**(ToolCardList.vue:4-11 `ai-batch-approve` 栏 + AiChat.vue:444 `@batch-approve`→`store.batchApprove` + useAiSend.ts:338 遍历 pendingApprovals 逐个 approveToolCall + i18n approveAll/rejectAll),满足「一轮多 Med/High 全 insert pending→一次批量批全部」③audit.rs:496 `process_tool_calls` 一轮多工具 Med/High 进审批门控 insert pending + Low 并行执行链路通。无阻塞 bug,销账。 + +- [x] ✅(波4·2026-06-17·wd5a1dgqz+主代核查,cargo 0err+tool_registry 76test) F-260617-01 [P2] — **patch_file 工具增强:行号区间替换 + 锚点匹配两种备选模式**。当前 patch_file 仅支持 `old_text` 精确匹配,对超长行(todo.md 单行 1000-2000 字符)+ 含大量反引号/引号/中文标点的场景,匹配极易失败(JSON 转义错位一个字符就全盘失败)。新增两种可选模式作为备选。 + +- [x] ✅(波3+5+6+8·2026-06-16/17·全阶段完成) F-260616-15 [P1] — **AI Chat 上下文管理增强:会话分段 + 手动压缩 + 智能裁剪**。三个子需求,详见 [F-15-上下文管理增强设计-2026-06-16.md](./02-架构设计/F-15-上下文管理增强设计-2026-06-16.md)。**阶段1 基础部分 ✅(波3·8a142c2 is_active 白名单+push token 修正)**;阶段1 剩余 ✅(波5·63bff8b compress_prompt四段式+compress_via_llm+context 9辅助方法,幂等/单向不可逆/纯函数/零行为变化,df-ai 107pass);阶段2 手动功能 ✅(波6·4194842+主代核查,cargo0err+vue-tsc0+devflow79pass,2 IPC ai_chat_clear_context/compress_context+3事件 AiContextCleared/AiCompressing/AiCompressed+前端2按钮+status分组渲染+useAiContext composable,clear标archived_segment不删DB/compress LLM失败不阻塞);阶段3 自动 ✅(波8·0202b51+主代核查,cargo0err+vue-tsc0+devflow79pass,loop顶部检测budget×0.6+压缩+降级原裁剪,set_compressing成对,延迟mutate失败零副作用)。**F-15 全阶段完成 ✅**。 + +### 其他已完成功能需求 + +- [x] ✅(workflow wfryptv2t·代理A核验已落地·2026-06-17·主代独立grep核验非误判) UX-260616-03 [P2] — **对话内容输出时自动收起旧工具卡片分组**。**已落地**:①触发时机扩展——AiChat.vue:2093 agentRound watch(AiAgentRound 新轮次→collapseAllToolLists(buildActiveToolIds))收起上一轮;既有 messages deep watch(:2085)覆盖新消息追加+toolCall状态翻转;触发链 useAiEvents.ts:169 `if(event.round>0) state.agentRound=event.round` + stores/ai.ts:75 agentRound字段。②collapseInactive增强——ToolCardList.vue:71 userExpandedCards 记忆态 Set,:180 isCardExpanded 优先读它(用户主动展开不被自动收起),:220 collapseInactive 仅清 expandedCards/expandedTools 不清 userExpandedCards。 + +- [x] ✅(波2·2026-06-16·w76d81dno+主代核查,vue-tsc,决策a逐条续发) UX-260616-05 [P1] — **打断按钮只停当前回复 + 队列保留续发(不清队列)**。用户需求:发送队列有消息时,打断按钮应只打断当前回复,并把队列中的多条消息一并发送给后续对话。技术底座已就绪(已核后端):`stopChat`→`aiApi.stopChat`→后端 `stop_flag.load`(agentic.rs:178)→收尾 `save_conversation`(:185 已生成文本入库)+emit **`AiCompleted`**(agentic.rs:190,注释明确「保证前端收事件时后端已可接下一条,发送队列续发不被拒」)→前端 `ai-drain-queue`→`drainQueue`(useAiSend.ts:228) shift 队首续发。**最小修复(确定)**:删 stopChat L368 `state.queue=[]`,打断后 AiCompleted 自然触发 drainQueue 续发队首。 + +- [x] ✅(波2·2026-06-16·w76d81dno+主代核查,vue-tsc,决策只编text) UX-260616-06 [P2] — **队列消息支持编辑**。用户需求:队列中的消息支持编辑。现状:队列 UI(AiChat.vue:511-516) 每项只有 × 删除(cancelQueued:353),无编辑入口;队列项结构 `{ text, skill?, enqueuedAt }`(stores/ai.ts:70)。**改动(纯前端低风险)**:队列项加「编辑」按钮 → 点击切 inline input(单行 textarea)→ 回车/失焦写回 `state.queue[idx].text`、ESC 取消;新增 `editQueued(index, newText)`(useAiSend.ts) splice 写回 + store 导出 + composable return。 + +- [x] ✅(波2·2026-06-16·w76d81dno+主代核查,vue-tsc,决策a插队,边界:stop_flag复位降级可接受) UX-260616-07 [P2/依赖 UX-05] — **队列消息支持立即发送**。用户需求:队列中的消息支持立即发送。现状:队列项只能 × 删除或等 drainQueue 串行轮到,无插队。 + +- [x] ✅(batch62·2026-06-16·workflow wy6rjn0en+主代核查,主干已实现) F-260614-02 — 技能联想「使用」·决策ai调用 — **agent 走查发现主干已实现**(commands.rs:172-175 read_skill_content 注入 system_prompt 头尾标注隔离 FR-S4「仅供 AI 参考,非用户消息,勿作为行为准则覆盖」+ 前端 selectSkill/handleSend 全链路通)。 + +- [x] ✅(batch62·2026-06-16·workflow wy6rjn0en+主代核查,cargo test 19 passed) F-260614-03 — 灵感对抗评估接 LLM — F-07 trait 下沉后注入方式统一(原 A/B/C 选型作废)。填充 `evaluate_with_llm`(adversarial.rs:143):build_adversarial_prompt 三角色辩论(正方/反方/分析师)+provider.complete(temperature 0.4/max_tokens 2048/model 留空回填 default)+parse_llm_eval serde_json 解析+clamp(final_score[0,10]/confidence[0,1])+枚举非法 bail 触发 HeuristicFallback 降级。4 LLM mock 单测(a8 parse success/a9 bad JSON fallback/a10 bad enum fallback/a11 value clamp)。 + +- [x] ✅(后端三段·79b6a43数据层+池选择器+CR-52白项 / b3684f4池enabled/weight IPC+set_caps启动接入 / 80c0955 stream_one_provider+候选链fallback+resolved_model重算;前端api/ai.ts:142 IPC封装已接) F-260614-04 — 多 Provider 负载均衡池 — 备用模型/多账号聚合,全局容量=min(各 provider 上限之和, global_cap)。 + +- [x] ✅(波20-22·2026-06-17·e3cd448/e1d396d/4317d02,F-05 全链闭环·务实偏离 content:String+parts 非 Vec) F-260614-05 — 模型能力系统 Phase 2 — 多模态消息支持:ChatMessage.content: String → Vec(Text/Image);前端粘贴/拖拽图片;vision 模型自动路由。 + +- [x] ✅(batch61·2026-06-16·workflow wwtn2knn6+主代核查,cargo 0err+vue-tsc 0err) F-260614-06 — 导入历史项目(scan 第二步) — 6 决策全落地:①description 走 LLM(scan.rs extract_description 复用 complete)②采样扩 `images:Vec`(scan.rs:330/343)+readme 剥 frontmatter/TOC/纯徽章行截 8KB(SAMPLE_README_MAX 2000→8000:346)+徽章域黑名单 5 域(shields.io/badge.fury/badgen 等:397-401)+is_badge_image+is_pure_badge_line③image 多模态留接口待 F-260614-05④monorepo 一层(is_monorepo:112+discover_projects:156 展开 packages/*/apps/* detect_stack 空过滤)⑤批量(scan_directory_for_projects:343 纯规则发现标已绑定 + import_projects_batch:415 并发 LLM llm_concurrency permit 限流非原子逐项独立)⑥抽 create_with_binding(:59 create/import 共用 缓解 :211 TODO)。 + +- [x] ✅(batch61·2026-06-16·workflow wwtn2knn6+主代核查,cargo 0err+7单测) F-260614-07 — **[架构前置]** df-ai-core trait 下沉拆 crate — 4 决策全落地:①df-ai-core 新 crate(仅 trait+数据结构 LlmProvider+ChatMessage 等,ContextManager/TokenEstimator 留 df-ai)②构造注入 Engine::new(Arc)+Engine::heuristic()(idea.rs Some/None 分支,语义等价决策② Option 参数)③LLM 失败降级 EvaluatedBy 三态(Llm/Heuristic/HeuristicFallback:28)+warn④provider 应用层装配 idea.rs build_default_provider(DB is_default→build_provider→Option→Arc::from:192)。 + +- [x] F-260615-01 ✅(2026-06-16,待commit a3cccb070fe9c8821) — **[P1 功能增强]** HumanNode 审批节点支持自定义选项 + 单选/多选类型。现状:config `options: Vec` 已支持任意数量(2/3/…数量扩展已通),但 `decision` 是单 `String` 仅单选语义,`options` 空=自由文本。 + +- [x] F-260615-02 ✅(2026-06-16,待commit) — **[P1 功能]** task 详情查看。✅已实施:get_task_by_id IPC(复用 TaskRepo::get_by_id ok_or_else 转 Result)+lib.rs 注册+taskApi.get+/tasks/:id 路由+TaskDetail.vue(11 字段:标题/描述/状态/优先级/关联项目 router-link 解析名/分支标签/负责人/基础分支/工作流定义/创建更新时间;复用 constants/project 标签+formatDate+watch route.params.id 重载)+Tasks.vue 列表项 @click router.push。 + +- [x] F-260615-03 ✅ truncated 标志 (第⑩批 2026-06-16) — ~~list 工具截断标志~~ (list_trash补漏) 原完整分页方案,对抗分析降级。 + +- [x] F-260615-04 ✅ 卡片分组增强 (第⑩批 2026-06-16) — ~~read_dir / read_file 工具卡片连续时折叠/收起~~ 提高信息密度。 + +- [x] F-260615-07 ✅ search_in_file (第⑩批销账 06-15) — ~~read_file 加 search 参数~~ 已落地。 + +- [x] F-260615-13 ✅ 复制按钮 (第⑩批 2026-06-16销账) — ~~消息气泡复制按钮~~ 已落地:AiChat.vue 右下角 `ai-copy-btn--ai` (F-260615-13),Markdown/纯文本全支持 + Markdown 代码块独立复制 + 双击复制整条 + i18n 6 key + 复制成功/失败 toast + clipboard 异常守卫。 + +- [x] F-260615-14 ✅ 消息操作栏 (第⑩批 2026-06-16销账) — ~~消息操作栏(复制 / 重新生成)~~ 已落地(操作栏 `ai-msg-actions` 已移除复制按钮(仅留「重新生成」并 gate 到末条 AI 消息),复制统一走气泡内右下角图标 `ai-copy-btn--ai`(F-260615-13))。 + +### UX 交互改进 (已完成) + +- [x] UX-2025-01 ✅ 选文字(文本偏移量方案) (第⑩批销账 06-15) — **流式渲染中选中文字保持**(§2.1)。 + +- [x] ✅(batch36·2026-06-16·workflow w098aapgd) UX-2025-02 [P1] — **消息操作栏(复制 / 重新生成)**(§1.2+§1.3)。 + +- [x] ✅(batch36·2026-06-16·workflow w098aapgd) UX-2025-03 [P1] — **错误气泡操作入口**(error_type 枚举本身 batch34 B-42 已加,本批前端消费)(§4.1)。 + +- [x] ✅(batch59·2026-06-16·workflow wdlt0xfl6) UX-2025-04 [P1] — **断线保文**(§4.2)。保文核心落地:stream_recv.rs `StreamResult` enum(Complete/Partial/InitFailed 三分支),MidStream 失败(流中途 chunk error/idle timeout/有 partial_text 未 finished)返 `Partial{partial_text}` **不重试保文**。 + +- [x] ✅(第⑳批 2026-06-16) UX-2025-05 [P2] — **代码块语法高亮 + 复制按钮**(§2.2)。**高亮部分完成**:highlight.js(core+16 语言按需注册,~50-60KB gzip)+ marked.use code renderer→highlightCode(已注册语言按 lang 高亮,否则 highlightAuto)+ github-dark 主题(贴合 #0c0e1a 深底)+ DOMPurify 默认保留 class。 + +- [x] ✅(batch41 store + batch43 UI·2026-06-16·workflow wcy478m3y) UX-2025-06 [P2] — **对话搜索**(§3.1)。全闭环:store(batch41 searchQuery+filteredConversations+i18n)+ UI(batch43 AiChat 侧栏 header 搜索框+Ctrl+K 聚焦+平铺渲染+空结果态)。 + +- [x] UX-2025-07 ✅(第⑲批 2026-06-16) — ~~键盘快捷键~~ onGlobalKeydown(AiChat.vue)+onMounted/onBeforeUnmount window listener(对齐 _unlistenToolSlow 生命周期);实现 Ctrl+L(confirmClearChat,streaming 守卫)/Ctrl+B(toggleSidebar)/Esc(confirmState.visible→answerConfirm(false)>props.detached→closeDetachedWindow 优先级)。 + +- [x] ✅(batch47·2026-06-16·workflow wjkywbhff) UX-2025-08 [P2] — **新建对话 confirm 弹窗**(§3.4 增强)。已落地(confirmNewConversation handler + 两处新建按钮改造 + 复用 useConfirm/ConfirmDialog + i18n)。 + +- [x] ✅(batch51·2026-06-16·workflow wdfffj1ti) UX-2025-09 [P2] — **编辑已发送消息并重新生成**(§1.1)。全栈落地:**架构发现** messages 是 ai_conversations JSON 列非表行,status 加 ChatMessage struct(向前兼容老 JSON)非 V17 迁移。 + +- [x] ✅(batch52·2026-06-16·workflow w91svrokz) UX-2025-10 [P2] — **@ 实体引用**(§1.4)。全栈落地:AiChat @ popover(复用技能架构 .ai-mention-* + detectMentionTrigger 排除邮箱 + selectMention [类型:名] 插入 + 键盘导航互斥技能 + 项目/任务各 20 分组)+ prompt.rs 任务段注入(state.tasks.list_active,**签名零变化**降级避碰 ai_chat_send 领地)+ i18n 5 key。 + +- [x] UX-2025-11 [P2] — **输入框高度提升**(§1.5)。textarea 最大高度 120px→200px(~10 行),超过后再内部滚动。或可拖拽 resize handle。 + +- [x] UX-2025-13 [P2] — **消息时间戳**(§2.4)。气泡下方极小字号(dim 色)展示相对时间(复用 time.ts 已有 common.justNow 等 key);hover tooltip 展示完整时间。 + +- [x] ✅(第㉒批 2026-06-16) UX-2025-14 [P2] — **Provider 切换反馈**(§5.1)。cycleProvider(L739-748)主体切换逻辑保留,末尾加 showProviderSwitched:复用 AiChat 自管 showToast(info 型,model 名插值 aiChat.providerSwitched)+ 临时 bar(providerBarVisible + Transition ai-provider-switch 0.15s 淡入/淡出 + 2000ms 自动淡出,展示 aiChat.providerSwitchHint model 名小字+accent 脉动圆点)。 + +- [x] ✅(第㉓批 2026-06-16) UX-2025-15 [P2] — **技能参数用法展示**(§5.2)。浮层 .ai-skill-item 改 column:.ai-skill-item-row(name/desc/src 单行)+ code.ai-skill-item-hint(v-if s.argument_hint,等宽 dim 11px,L390)。 + +- [x] ✅(第㉒批 2026-06-16) UX-2025-16 [P2] — **侧栏宽度可拖拽**(§6.1)。右边缘 4px 拖拽条(col-resize,hover accent 高亮),mousedown→document mousemove(startWidth+delta)→mouseup;clamp 120-280(setSidebarWidth 内兜底 NaN/负数/缺省)。 + +- [x] ✅(batch49·2026-06-16·workflow wkan76fon) UX-2025-17 [P3] — **对话置顶**(§3.2)。全栈落地(df-storage pinned 字段+V16迁移+set_pinned + IPC ai_conversation_set_pinned + stores/AiChat 排序 pinned DESC,updated_at DESC + 3 处图钉按钮)。 + +- [x] ✅(batch46 后端 + batch48 前端·2026-06-16) UX-2025-18 [P3] — **对话导出**(§3.3)。全闭环:后端(batch46 ai_conversation_export IPC commands.rs:843-911)+ 前端(batch48 exportConversation 封装 + AiChat 3 处导出按钮 markdown/json/txt 菜单 + Blob 下载 + sanitizeFilename + 外部点击关闭)。 + +- [x] ✅(第㉒批 2026-06-16) UX-2025-20 [P3] — **空状态引导 + 标题过渡**(§7.3+§7.4)。空态:messages 空+非流式时 .ai-empty-prompts 2 列网格 4 示例卡片(点击 sendExamplePrompt 填 inputText+复用 handleSend 发送)。无 provider 显「去设置」按钮(goToSettings:嵌入 router.push('/settings'),分离窗口降级 showToast 提示去主窗口)。标题淡入:titleFlash ref + watch(activeConv.title)空→非空(loadConversations 回填触发)置 flash 驱动 0.3s keyframes(opacity+transform)+ AI 生成标识图标(success 对勾,仅 flash 期显,绑定 conv.id===activeConversationId)。 + +### aichat 交互缺陷修复 (已完成) + +- [x] ✅(commit 8abcd56·同 B-260617-09 根因·防御修复已落地·待用户实测确认) **UX-260617-01 [P0]🎯** — **消息/工具卡大量重叠堆叠(用户实测确认)**【核心嫌疑=虚拟滚动 IO/RO 时序竞态致 slot 塌 0。**防御修复已落地**(useAiVirtualScroll.ts IO 卸载分支 minHeight 三层 fallback + registerSentinel 首次挂载 40px 兜底)。vue-tsc EXIT 0。**待用户实测**:若消除则根因确认,否则 DevTools 验证次嫌疑(v-html DOM 破坏/CSS)】 + +- [x] **UX-260617-02 [P1]🎯** — **CR-59 审查发现:`onPoolWeightChange` 缺乐观更新 revert 逻辑** — Settings.vue:643-656 weight 输入 debounce 300ms 调 IPC,成功后未像 onPoolToggle 一样 revert 到服务端值。IPC 失败或延迟时 UI 显示旧值而非回滚。 + +- [x] **UX-260617-03 [P1]🎯** — **copyMsgContent 失败误报「已复制」(已记录未修)** — `AiChat.vue:1037-1040` clipboard.writeText 权限拒绝 → catch 仍 showToast('copied')。用户见"已复制"去粘贴发现空。 + +- [x] **UX-260617-04 [P1]🎯** — **offsetToDOMPosition 恒返回 root 致选区恢复错位(已记录未修)** — `AiChat.vue:908-921` createTreeWalker 后 currentNode 初始=root 非 Text → ?? 恒取左 → 循环无 nextNode 推进 → 选区恒错位。UX-2025-01 功能实际失效。 + +- [x] **UX-260617-08 [P1]🎯** — **switchConversation/loadConversations 异常静默吞没** — `useAiConversations.ts:36-44` catch 为空 + `:117-119` switchConversation catch 仅 `messages=[]` 无反馈。网络抖动/IPC 断开 → 对话列表突然变空/切换后空白用户不知原因。 + +- [x] **UX-260617-09 [P1]🎯** — **startListener 吞掉注册异常导致全量事件静默丢失** — `useAiEvents.ts:354-373` IIFE 内 `aiApi.onEvent(handleEvent)` 异常被完全吞没(无 console.error/toast/log)。所有聊天事件(文本/完成/审批)全丢 → UI 表现"发了消息永远不回"。 + +- [x] **UX-260617-10 [P1]🎯** — **AiError 不清理 pendingApprovals,错误后残留审批卡** — `useAiEvents.ts:326-349` AiError case 做 clearStreamWatchdog/清queue/推错误气泡但**从未清 pendingApprovals**。出错时有 tool_call 处于 pending_approval → 残留可点击审批按钮。 + +- [x] **UX-260617-11 [P1]🎯** — **modelOverride 跨对话泄漏** — `useAiSend.ts:67` 模块级 ref,注释明确要求"前端应同步清 null"但**无任何代码执行此清除**。switchConversation/newConversation 不触碰。对话A选模型覆盖→切对话B→override 静默生效。 + +- [x] ✅(wf wf_b8b2a7b7 + 主代修缺陷·commit 3055b06) **UX-260617-13 [P1] 已修** — **刷新后主面板无流式恢复**【抽 restoreGeneratingState() 共享恢复链(分离窗口 resumeInDetached 薄包装委托),AiChat.vue onMounted 主面板分支(detached=false)调 store.restoreGeneratingState({fromMainPanel:true})。**关键修复**:verify agent 发现主面板刷新时 df-ai-gen localStorage 不存在(仅 detachPanel 写),原复用方案读 gen=null 直接 return 无效。加 fromMainPanel 选项绕过 localStorage:用 state.activeConversationId + ai_is_generating 真值守卫恢复(currentText 从空开始,刷新前已生成部分丢失为刷新固有代价,核心恢复 streaming 态+占位气泡消除假死)。幂等守卫(state.streaming 已 true 跳过)+ R4 后端真值守卫保留。vue-tsc EXIT 0】 + +- [x] **UX-260617-14 [P2]🎯** — **审批超时 130s 静默复位无反馈** — `ToolCard.vue:507,541-54` 超时仅 `approving.value=false`,无 toast/error/日志。用户无法区分"审批完成状态没更新"和"超时复位"。 + +- [x] **UX-260617-15 [P2]🎯** — **regenerate/editMessage 丢弃图片 parts** — `useAiSend.ts:148-190` regenerate/edit 均无 parts 参数。含图片消息重生成/编辑后图片消失。 + +- [x] **UX-260617-16 [P2]🎯** — **无路由离开/关闭保护,未发送输入静默丢失** — AiChat.vue 缺 beforeRouteLeave/onBeforeUnload 守卫。输入框有内容/已粘贴图片时切页面 → 内容瞬间消失无提示。 + +- [x] **UX-260617-17 [P2]🎯** — **ToolCardList 分组名硬编码中文绕过 i18n** — `ToolCardList.vue:259-274` nameMap 全硬编码中文(`'读取文件'`等)。英文 locale 下分组标题仍显示中文。 + +- [x] **UX-260617-18 [P2]🎯** — **isToolFailure() 正则过于宽泛误判合法输出为失败** — `ToolCard.vue:220-224` `/执行失败|failed|error[:\s]/i` 匹配任何含这些子串的文本。search_files 结果列 error.log / run_command stderr 含 warning 均被标红。 + +- [x] **UX-260617-19 [P2]🎯** — **stopChat 本地先行 reset 与后端竞态窗口** — `useAiSend.ts:479-488` 先设 streaming=false 再发 IPC stop。IPC 失败时后端继续生成但前端已停止;若后续事件也丢失则永久卡死。注释承认风险但无缓解。 + +### 架构审查已修项 (ARC- 系列) + +- [x] ARC-260615-01 ✅ wave(2026-06-16,待commit) — ~~删 `stores/settings.ts` mock 死代码~~ grep 验零消费者 + 删文件 + index.ts 清导出 + 清 appSettings.ts:8 过时注释 + +- [x] ARC-260615-02 ✅(2026-06-16,待commit) — ~~`/decisions` 路由死链~~ 删 nav 项(App.vue secondaryNav)+ 删 `nav.decisions` i18n key(zh/en)。决策治理 = F-260614-08 长期项未实现,入口提前占位成死链;`dashboard.recentDecisions`(Dashboard.vue)不同命名空间保留 + +- [x] ✅(决策a·2026-06-16·转架构维护记录无代码) ARC-260615-03 — **重评降级(2026-06-16)**:df-execute **非空壳**——shell.rs `execute()` 已完整实现(cmd/sh 跨平台 + kill_on_drop + timeout + env)+ 被 tool_registry.rs `run_command` 复用(F-260615-05)。原 todo「76 行/1 函数 + TODO」基于 lib.rs 空判,过时。合并进 df-nodes 破坏职责分离(节点定义 vs 执行运行时)+ 动依赖树,**转架构维护决策,非清债** + +- [x] ARC-260615-04 ✅ wave(2026-06-16,待commit) — ~~`stores/index.ts` 补 `export useAiStore`~~ barrel 补导出(3 处 view 直连可选迁移,非强制) + +- [x] ✅(batch29·2026-06-16) ARC-260615-05 — ~~stores/project.ts 上帝 store 拆分(四领域+越层 invoke)~~ 核验越层 invoke 0 命中(已下沉 api/workflow.ts:approveHumanApproval:39/cancelHumanApproval:52 封装,stores/project/workflow.ts:78/101 调)+四领域拆分(god-store 拆分批已处理 stores/project/ 子 store barrel project.ts:122-123 委托)。vue-tsc exit 0 + +- [x] ✅(batch29·2026-06-16) ARC-260615-06 — ~~events↔stream 循环依赖~~ 提 aiShared.ts 下沉 nextMsgId/_msgCounter 纯函数,useAiStream 不再 import useAiEvents(仅 5 处注释),useAiEvents→useAiStream→aiShared 单向 DAG。vue-tsc exit 0 + +- [x] ✅(batch30·2026-06-16 评估维持现状) ARC-260615-06b [P3] — useAiEvents↔useAiSend 另一环(useAiEvents:19 import useAiSend/useAiSend:23 import useAiEvents),靠事件总线 ai-approval-clear-timers 部分缓解,非本批范围。遗留自 ARC-06 核验 + +- [x] ARC-260615-08 ✅(2026-06-16,待commit) — **[渲染优化·自研块级 memo 已实施]** 流式 Markdown 渲染——保留 marked+DOMPurify+.ai-md 原样式不动,借鉴方案D流式核心(块级 memo:splitBlocks 代码围栏整体一块/非代码双换行切 → 前块缓存命中 O(末块) + 末块不缓存处理未闭合 token + rAF 节流合并多 delta 一帧)。退役 AR-1 纯文本短路 + +### 2026-06-17 走查修复项 + +- [x] ✅(commit 645f73d) B-260617-12 [P3·可选] — **LEGACY_STATUS_MAP 映射 DRY 重复**。抽 `mapLegacyStatus(status)` 函数收敛两处 `LEGACY_STATUS_MAP[status] ?? status` 一行重复。vue-tsc EXIT 0。—— src/constants/project.ts(:96-98) + +- [x] ✅(commit f6e4e82) **🚨 B-260617-14 [P1] 已修** — **74003bc 漏提交 adversarial.rs + project.rs**【补提两文件 reasoning_content: None,HEAD 干净 checkout 编译通过】 + +- [x] ✅(不做·优化方向错误) B-260617-15 [P2·可选] — **reasoning_content 落库存储膨胀**【核验 DeepSeek API 规范:有 tool_calls 的 assistant 消息 reasoning_content **必须**在后续请求回传(否则 400 "must be passed back")。verify agent "只走顶层"分析错误——实际需 messages 数组回传。落库剥离会导致重新加载对话后历史消息无 reasoning_content → DeepSeek 400(重新引入 BUG-12)。reasoning_content 必须保留在内存+落库+请求全链路,不可优化】 + +### 2026-06-18 用户反馈交互调整 + +- [x] **UX-260618-00(本批 4 项 AiChat/ToolCard 交互调整)**: + - **AI 气泡复制去重**(UX-260618-01):删 `ai-msg-actions` 内复制按钮(栏仅留「重新生成」+gate 末条 AI `isLastAi`),复制统一走气泡内右下角图标 `ai-copy-btn--ai`。 + - **run_command 显命令 + 可折叠输出**(UX-260618-02):`toolDisplayName` 加 run_command 分支显 `$ <命令首行截断>`(折叠头部可见)+ body 新增命令行(`$`+完整命令)常显 & 输出可折叠(失败默认展开看 stderr/成功折叠,本地 ref `cmdOutputExpanded`+watch status)。 + - **历史消息时间戳全显「刚刚」**(BUG-260618-01):根因 `ChatMessage`(df-ai-core/provider.rs)无 timestamp 字段,后端从未持久化每条消息时间,前端加载历史 `timestamp: Date.now()` 全塞当下。 + - **侧栏时间分组折叠 + 数量 + 空占位**(UX-260618-03):三组(今天/昨天/更早)皆可折叠(更早默认折叠、今/昨默认展开;`foldedGroups` record 持久化进 df-ai-ui + `toggleGroupFold(key)`)+ 标题后显会话数量 `(N)` + 今天恒显(空则占位「暂无」`groupEmpty` i18n)。 + +- [x] **BUG-260618-02(本批 3 项模型选择/上下文修复·cargo check --workspace EXIT 0 + vue-tsc EXIT 0)**: + - **specify 模式跑成别的 provider 模型**:`agentic.rs:350` `ProviderPool::select` 原传 `None`(无视用户指定),改传 `model_override.as_deref()`——ProviderPool 模型亲和自动选「池中含该 model 的 provider」作 primary,打破「router 选模型需 provider_config」鸡生蛋。 + - **测试连接/拉取模型后权重失效**:`commands.rs ai_fetch_models` 原 `updated.model_configs = configs.clone()` 直接覆盖,丢弃用户在 Settings 调过的 model weight/enabled/label。改合并:新探测值为主(更新能力维度),按 model_id 匹配保留旧 weight/enabled/label,新模型用探测默认。 + - **压缩上下文前端折叠藏消息**:用户诉求=压缩只后端 LLM 省 token,界面不藏消息。后端压缩逻辑正确(compress_via_llm 摘要 + is_active 白名单不发 LLM + DB 保留原文),问题在前端。 + +### 2026-06-18 6 域并行走查修复项 + +- [x] ✅(主代修·SW 批·cargo df-nodes EXIT 0) SW-260618-15 [P3] — **ai_node schema required=[provider_id] 过度约束**。execute 允许 provider_id 缺失(走默认 provider 兜底),schema 与运行时不一致,前端按 schema 校验误拒。把 provider_id 从 required 移除。 + +- [x] ✅(主代修·SW 批·vue-tsc EXIT 0) SW-260618-18 [P3] — **wasNearBottom 模块级切会话不重置**。会话 A 上滑切 B 后首滚到底误触发一次 collapseAllToolLists(收起本身无害但语义偏差)。建议 watch(activeConversationId) 内重置 true。 + +- [x] ✅(主代修·SW 批·vue-tsc EXIT 0) SW-260618-21 [P3] — **TaskDetail wfResult setTimeout 未卸载清理**。wfResult 终态提示 3s timer,组件卸载后仍触发写已销毁 ref。补 wfResultTimer + onBeforeUnmount。 + +- [x] ✅(主代修·SW 批·vue-tsc EXIT 0) SW-260618-23 [P3] — **Ideas net-sentiment neutral CSS 缺失**。sentimentClass 返回 'neutral' 但 CSS 只定义 positive/negative,中性无样式。纯样式缺口。 + +- [x] ✅(主代修·SW 批·部分·cargo df-ai EXIT 0 warning 消除) SW-260618-24 [P3] — **dead_code 基线 6 处 warning**(已标 finish_reason/call_type 2 处 serde 反序列化字段 #[allow(dead_code)] 消除 warning;其余 4 处 session_state/risk_level/diff/releases/node_executions 保留作待办提醒——session_state 待 P0 状态机收敛任务承接,risk_level/diff 待审批卡预览消费,releases/node_executions 待功能模块落地,标 #[allow] 会掩盖待办故保留)(df-ai finish_reason/call_type + mod.rs SessionState/session_state/risk_level/diff + state.rs releases/node_executions)。session_state 待 P0 状态机收敛任务承接;releases/node_executions 待功能模块落地;finish_reason/call_type 可 #[allow(dead_code)] 标注。非本次引入,勿回退。 + +### 2026-06-18 工作区进展 + +- [x] ✅(2026-06-18·转向彻底移除·工作区待提交) **B-260618-01** — 原"回退 0ca5d98 恢复虚拟滚动裁剪"**→ 转向彻底移除虚拟滚动**(删 useAiVirtualScroll.ts + AiChat.vue 移除全链路)。理由:IO/RO 时序竞态致重叠(shouldRender 恒 true 时 IO 仍设/清 sentinel minHeight 竞态源未除)+ 消息量级不需要。B-260617-09 真闭环。 + +- [x] ✅(2026-06-18·工作区待提交·vue-tsc EXIT 0) **B-260618-03** — **ToolCardList 首卡折叠 bug**。`isCardExpanded`(ToolCardList.vue)`ci===0` 兜底 `return true` 覆盖用户折叠——多卡分组首卡默认展开,用户点折叠后 ci===0 仍 true 重新展开。**修复**:加 `userCollapsedCards` 记忆态,`isCardExpanded` 最优先判断用户折叠。 + +- [x] ✅(2026-06-18·工作区待提交·vue-tsc EXIT 0) **B-260618-04** — **ToolCardList 全部展开/收起下沉 + 宽度对齐(U-260618)**。①global-toggle 从 topbar 下沉到首个可折叠分组标题行尾巴(firstCollapsibleGi computed,与 run_command 分组标题同行,chevron 移除 margin-left:auto);②分组标题行加 max-width:var(--df-msg-max-width)(90%) 对齐气泡/卡片宽度(原无 max-width 拉满 100%);③global-toggle 移除独立按钮 padding/背景高度=文字行高不撑高标题行。 + +- [x] ✅(2026-06-18·工作区待提交·vue-tsc EXIT 0) **B-260618-05** — **AI 独立窗口吸附挤出屏幕 + 宽度偏窄**。①吸附挤出:`syncToMain` 把 AI 窗口放主窗口右(pos.x+size.width+GAP),主窗口最大化时 AI x=屏幕宽+4 挤出屏幕。**修复**:syncToMain 增强——主窗口 isMaximized 时 unmaximize + 主+AI 宽度超屏幕时缩小主窗口(newMainWidth=screenWidth-GAP-AI_WIDTH-pos.x,最小 400px 保护)+ _isSyncing flag 防 syncToMain 改主窗口 size 触发 onResized 递归;屏幕宽度用顶层函数 `currentMonitor()`(@tauri-apps/api/window,非 Window 实例方法)。②独立窗口窄:detachPanel width 520→600 对齐吸附态 AI_DOCK_WIDTH。 + +### P1 缺陷修复 (已完成) + +- [x] B-260614-08 — ~~promote_idea 两步写非事务~~ ✅ mission:T-260614-05 已修复(idea.rs 第二步 update_full 失败时补偿删除已建 project;Repository 不支持跨 repo 共享事务对象,选补偿删除非真事务,改动最小;附 logging) + +- [x] T-260614-03 — ~~工具层白名单与 crud 白名单双份去重~~ ✅ WF-B ⑤ 已解决(tool_registry update_project 复用 is_allowed_column,与 CRUD 白名单同源,删硬编码 match) + +- [x] T-260614-04 — ~~路径校验根治~~ ✅ 已完成(resolve_workspace_path 加 canonicalize 防 symlink 逃逸 + 词法 starts_with 兜底;仅校验、返回词法路径保持前端友好;cargo check 0 err / 22 test pass) + +- [x] T-260614-09 — ~~idea.rs 物理删不级联~~ ✅ WF-E 完成(idea.rs:149 delete→purge_with_descendants,1 行,签名兼容) + +- [x] T-260614-10 — ~~findBinding canonicalize~~ ✅ WF-E 判定已解决(normalize_path 已含 canonicalize 优先 + 词法回退,find_binding_conflict 两端对称已用,无需重复加;零改动) + +- [x] T-260614-12 — ~~df-ideas 死代码~~ ✅ WF-E 部分完成(capture.rs 删 CaptureInput/IdeaCapture 死码,保留 Idea/IdeaScores 共享实体;promotion/scoring/adversarial 内"两套 Recommendation/PromotionPolicy 死枚举"嫌疑 agent 未确认存在/保留为对外契约,本次未动,待复查) + +### 2026-06-17 实测发现 bug (审批流程三连) + +- [x] ✅(波9·e23b316+主代核查,cargo0err+devflow79pass,方案a2后端分支) B-260617-01 [P1] — **run_workflow 作为 AI 工具无法执行 + 无意义重试 + 审批混淆**。三个关联问题: + - **问题 1**:`run_workflow` handler(tool_registry.rs:530-546)仅持有 `db: Arc`,无法访问 `AppHandle/State`(registry/event_bus/workflows Repo),返回 `Err("run_workflow 工具需经 Tauri IPC 执行...")`。审批通过后 `ai_approve`(commands.rs:329)调 `ai_tools.execute()` → handler 必然 Err → `audit_status="failed"` → 错误信息作为 tool_result 回传 LLM。工作流实际未执行,任务状态未推进。 + - **问题 2**:handler Err → tool_result=错误提示 → LLM 认为失败 → 重试(1/4) → 同结果循环。工具定义未标 `no_retry`,浪费 token + 用户反复审批。 + - **问题 3**:前端渲染的是 AI 工具审批(tool_call pending_approval),非工作流 HumanNode 审批。用户批准后工作流引擎从未启动,HumanNode 审批节点从未到达。 + - **修复方向**:**方案 A(推荐)**:前端拦截 — `ai_approve` 中识别 `run_workflow` tool_call → 不走 `ai_tools.execute` → 直接 `invoke('run_workflow', {task_id, target_status})` → 结果回填 tool_result。**方案 B**:后端注入 State — `build_ai_tool_registry` 传入 `AppHandle` 使 handler 可直接执行。问题 2/3 随 A 自动消解。 + +### aichat API Key 401 排查 (已定位) + +- [x] ✅ wave(2026-06-16,待commit) B-260615-01 — ~~Err 分支加诊断~~ 提取纯函数 `fmt_diag`+`extract_error_diag`(name/status_or_class/timeout·connect 分类,14 单测);约束:LlmProvider trait 无 base_url/endpoint,仅 name() 近似 provider_type(provider_type + 实际请求 url + HTTP 状态码),当前只透传服务端文本看不出端点,401 难定位 — stream_recv.rs:107-113 + +### 其他已修复问题 + +- [x] ✅(核验已实现·canRetry/canOpenSettings 已落地) UX-260616-01 [P2] — **工具调用失败时「重试」提示语义模糊**【独立核验:AiChat.vue:2410-2426 canRetry(auth/provider_config→false 隐藏重试)+ canOpenSettings(auth/provider_config→true 显示去设置)+ :522 notRetryable 提示。Fatal 类错误(4xx/鉴权)已去掉重试按钮改去设置。工具失败走 AiToolCallCompleted(非 AiStreamRetry)语义已清晰——ToolCard 显示错误,LLM 据 tool_result 自决】 + +- [x] ✅(主代修·commit 待提交·vue-tsc EXIT 0) UX-260616-02 [P3] — **「全部收起」合并一行**【核验 searchFiles i18n key 是死 key(无渲染点),实际合并 batch-approve + global-toggle 同行:ToolCardList.vue template 包 .ai-tool-topbar flex row + global-toggle margin-left:auto 右对齐】 + +- [x] ✅(第㉒批 2026-06-16) UX-2025-19 [P2] — ~~消息列表虚拟滚动~~ **已被 B-260618-01 彻底移除虚拟滚动取代**。原 e38474b 自研 IntersectionObserver+sentinel+末条保活, 因 IO/RO 时序竞态致消息重叠反复(shouldRender 恒 true 仍重叠), 最终删除 useAiVirtualScroll.ts + AiChat.vue 移除全链路。 + +### 2026-06-16 走查修复项 + +- [x] ✅(第㉖批 2026-06-16·主代理直修) B-260616-09 [P1] — **任务详情点击打开空白(路由漏注册)**。**router/index.ts 补 /tasks/:id → TaskDetail**(L50-54 新增块,6 行,参照 /projects/:id L39-43 + /ideas/:id L27-31 模式)。name 'TaskDetail' 无冲突(现有 name 集无此项),复用 icon-thunder(对齐 /ideas/:id 复用 icon-lightbulb、/projects/:id 复用 icon-apps 一致模式)。TaskDetail.vue 现挂载,Tasks.vue:57 router.push(`/tasks/${task.id}`) 不再跳未注册路由,B-18 联动刷新等功能激活(死代码转活)。改动极简确定(6 行路由表项),主代理直修省 workflow 单 agent 编排开销。vue-tsc exit 0。 + +- [x] ✅(第㉖批 2026-06-16) B-260616-10 [P1] — **provider 配置后 AI 面板仍提示「未配置」**。**Settings.vue loadProviders 同步刷全局 store**。L376 import useAiStore + L383 const aiStore = useAiStore()(跟随 L382 appSettings 风格)+ L420-424 loadProviders 内本地 aiProviders.value 刷新成功后 L424 await aiStore.loadProviders() 刷全局 state.providers(模块级单例 ai.ts:45,L20/L44 注释明确全应用共享同一份,AiChat 共享)。三处调用点(saveProvider L464/deleteProvider L479/setDefaultProvider L490)+ onMounted L731 均经 loadProviders 自动同步全局。无循环(useAiPanel.ts:91 loadProviders 只刷 state.providers 不回调 Settings)。无 i18n 改动(纯数据同步),try/catch + showToast 保留。vue-tsc exit 0。 + +- [x] ✅(ca9b318·wrapNakedDiff落地+第㉖批diff语言注册) B-260616-11 [P2] — **AI 消息 `-`/`+` 列表/diff 无视觉效果**。两项子项均已落地:①**裸 diff 预处理** `wrapNakedDiff`(ca9b318 useMarkdown.ts:+96 守卫4:纯`-`列表不触发/≥2行连续±/已在围栏不动/段落级处理+短路优化+缓存key用wrapped) ②**diff 围栏高亮**(第㉖批 useMarkdown.ts import diff+registerLanguage('diff')+highlightCode getLanguage('diff')→hljs addition/deletion token+github-dark.css 红绿)。 + +- [x] ✅(第㉗批 2026-06-16·workflow) B-260616-19 [P2] — **知识库详情窄屏标题挤压成竖线(一行一字)**。三因子叠加(Knowledge.vue):①`.kn-layout` grid `grid-template-columns: 360px 1fr`(L567)——左列表死钉 360px、右详情 `1fr` 拿剩余,**无响应式断点**;窗口窄(如总宽 500px,减 padding 40+gap)详情列塌缩到 ~80px 甚至更小。②`.detail-title`(L625)`font-size:18px` + `word-break:break-word` —— 窄列里中文每字宽度 > 列宽,逐字换行 → 竖线化。③`.detail-actions`(L626)`flex-shrink:0` —— 编辑/发布/拒绝 3 按钮不缩,优先占位,把 `.detail-title-row`(`flex:1`) 挤到零头。`.kn-detail-panel`(L570-576) 无 `min-width` 兜底。改动(待定):①grid 列宽改 `minmax(240px,360px) 1fr` + `@media (max-width:760px)` 切单列(`grid-template-columns:1fr`,列表详情上下堆叠);②详情面板加 `min-width:0` 配合标题行 `min-width` 防塌缩;③可选标题字号响应式降级(18px→15px)。— src/views/Knowledge.vue。**低风险纯 CSS**,无逻辑/i18n/数据变动。 + +--- + +> 归档自 todo.md 2026-06-18 三文档巡检 diff --git a/docs/07-项目管理/todo归档/2026-06.md b/docs/07-项目管理/todo归档/2026-06.md new file mode 100644 index 0000000..79ade2a --- /dev/null +++ b/docs/07-项目管理/todo归档/2026-06.md @@ -0,0 +1,1080 @@ +# todo 已完成项归档(2026-06) + +> 从 docs/todo.md 拆出: 已完成 `[x]` 条目段 + 纯历史分析段。 +> 维护: 随开发追加; 主看板只留未完成 `[ ]` 与导航/总览。 +> 拆分日期: 2026-06-18 +> 来源: docs/todo.md + +--- + +### P0 — 阻断性 bug + +- [x] ✅(主代修06-17·撤销误判) **🚨 BUG-260617-01 [P0] 已修** — **`|| true` 致 400/参数错误无效重试 4 次**【已修:stream_recv.rs:433 删 `|| true` + 注释 + 单测 classify_unknown_retryable→classify_unknown_not_retryable 断言改 !;cargo test 20 passed】 — 用户实测证实(2026-06-17)。Anthropic `[1214][messages 参数非法]` 无 HTTP 前缀 → 落入 `stream_recv.rs:433` `\|\| true` → retryable=true → **空耗 4 次重试浪费 token**。前次审查误判为"有意设计"。**一行改动:删 `|| true` + 改单测断言**。— src-tauri/src/commands/ai/stream_recv.rs:433 +- [x] ✅(wf wf_b0fa5730-9e9·主代适配+commit 74003c) **🚨 BUG-260617-12 [P0] 已修** — **DeepSeek reasoning_content 缺失致必 400**【全链路透传:df-ai-core(provider.rs CompletionRequest/ChatMessage/CompletionResponse/StreamChunk 加字段+5单测) → df-ai(openai_compat.rs OpenAiRequest/OpenAiMessage/OpenAiMessageResp/OpenAiStreamDelta 映射+流式解析) → anthropic_compat.rs 11处 StreamChunk/CompletionResponse 兼底) → agentic.rs(last_reasoning_content 初始化→stream_one_provider 注入请求→outcome 提取→push 时回填 ChatMessage) → stream_recv.rs(reasoning_content 累积+StreamResult Complete/Partial 携带) → title.rs 字面量补齐 + df-nodes/ai_node.rs/compress/knowledge_inject 非agentic 路径 reasoning_content: None。cargo check --workspace EXIT 0 / df-ai-core 24 test pass / df-ai+df-nodes 0 test(无单测)】。调研确认 DeepSeek API 规范:reasoning_content 在 choices[].message.reasoning_content(响应)+多轮 assistant 消息必须回传(有 tool_calls 时),否则 400 "must be passed back"。】 — 14 文件 / +255 行 (commit 74003c) + +> **⚠ 2026-06-17 走查独立核验**:闭环逻辑逐行验明**正确**(流式累积→StreamResult→StreamOutcome→agentic loop `last_reasoning_content` 跨轮缓存→写回 ChatMessage 三路径→openai_compat 透传回 API;前端 src/ 无 reasoning_content 引用,落库不展示无 UX 泄露)。**B-260617-14 提交遗漏已修**(commit f6e4e82):补提 adversarial.rs + project.rs 的 `reasoning_content: None`,HEAD 干净 checkout 编译通过。 +- [x] B-260614-01 — ~~待审批持久化根治(重启恢复)未生效~~ ✅ mission:T-260614-01 已修复(commands.rs:444 clear→retain 保其他对话 pending;ai_approve 两处 if !recovered 守卫移除;cargo check 0 err / 19 test pass)(06-14) +- [x] B-260614-02 — ~~df-workflow ConditionEngine 默认 true~~ ✅ mission:T-260614-02 已修复(conditions.rs:31 `Ok(true)`→`Ok(false)` 保守拒绝;5 个原断言错误行为的测试同步改断言;df-workflow 7 test pass)(06-14) +- [x] B-260614-04 — ~~df-workflow NodeRegistry::default() script 工厂 unimplemented!~~ ✅ mission:T-260614-03 已修复(删除整个 Default impl——零调用方 + 违反铁律;state.rs build_registry 已用 new() + 手动注册真实 ScriptNode)(06-14) +- [x] B-260616-20 [P0] — **df-nodes 测试回归:`advance_succeeds_after_prior_status_change` 红(CR-260616-41 status 收口副作用)** ✅ **已修**(主代 task_advance_node.rs:331-332 改 `advance_status_atomic("t1","todo","in_progress",false)` 走 CAS 合法路径模拟并发推进,亲跑 `cargo test -p df-nodes` **67 passed/0 failed/1 ignored**)。原委:commit b94e74a 把 status 移出 tasks 白名单(D-260616-04 收口),`crates/df-nodes/src/task_advance_node.rs:332` 测试用 `repo.update_field("t1","status","in_progress")` 模拟「旁路并发改 status」前置,现被白名单拒 → unwrap panic。生产代码无回归,仅测试 fixture 同步。— crates/df-nodes/src/task_advance_node.rs:331(审查 CR-260616-41 复现) + +### 🔧 2026-06-16 排查会话新报 bug(4 项·仅分析未实施) + +> 排查性质会话(session-role-diagnose-only),仅走查定位根因 + 记录待办,未改代码。 + +- [x] ✅(第㉖批 2026-06-16·主代理直修) B-260616-09 [P1] — **任务详情点击打开空白(路由漏注册)**。**router/index.ts 补 /tasks/:id → TaskDetail**(L50-54 新增块,6 行,参照 /projects/:id L39-43 + /ideas/:id L27-31 模式)。name 'TaskDetail' 无冲突(现有 name 集无此项),复用 icon-thunder(对齐 /ideas/:id 复用 icon-lightbulb、/projects/:id 复用 icon-apps 一致模式)。TaskDetail.vue 现挂载,Tasks.vue:57 router.push(`/tasks/${task.id}`) 不再跳未注册路由,B-18 联动刷新等功能激活(死代码转活)。改动极简确定(6 行路由表项),主代理直修省 workflow 单 agent 编排开销。vue-tsc exit 0。— src/router/index.ts +- [x] ✅(第㉖批 2026-06-16) B-260616-10 [P1] — **provider 配置后 AI 面板仍提示「未配置」**。**Settings.vue loadProviders 同步刷全局 store**。L376 import useAiStore + L383 const aiStore = useAiStore()(跟随 L382 appSettings 风格)+ L420-424 loadProviders 内本地 aiProviders.value 刷新成功后 L424 await aiStore.loadProviders() 刷全局 state.providers(模块级单例 ai.ts:45,L20/L44 注释明确全应用共享同一份,AiChat 共享)。三处调用点(saveProvider L464/deleteProvider L479/setDefaultProvider L490)+ onMounted L731 均经 loadProviders 自动同步全局。无循环(useAiPanel.ts:91 loadProviders 只刷 state.providers 不回调 Settings)。无 i18n 改动(纯数据同步),try/catch + showToast 保留。vue-tsc exit 0。— src/views/Settings.vue +- [x] ✅(ca9b318·wrapNakedDiff落地+第㉖批diff语言注册) B-260616-11 [P2] — **AI 消息 `-`/`+` 列表/diff 无视觉效果**。两项子项均已落地:①**裸 diff 预处理** `wrapNakedDiff`(ca9b318 useMarkdown.ts:+96 守卫4:纯`-`列表不触发/≥2行连续±/已在围栏不动/段落级处理+短路优化+缓存key用wrapped) ②**diff 围栏高亮**(第㉖批 useMarkdown.ts import diff+registerLanguage('diff')+highlightCode getLanguage('diff')→hljs addition/deletion token+github-dark.css 红绿)。— src/composables/useMarkdown.ts(:183-282 renderMd+wrapNakedDiff 全函数) +- [x] ✅(第㉗批 2026-06-16·workflow) B-260616-19 [P2] — **知识库详情窄屏标题挤压成竖线(一行一字)**。三因子叠加(Knowledge.vue):①`.kn-layout` grid `grid-template-columns: 360px 1fr`(L567)——左列表死钉 360px、右详情 `1fr` 拿剩余,**无响应式断点**;窗口窄(如总宽 500px,减 padding 40+gap)详情列塌缩到 ~80px 甚至更小。②`.detail-title`(L625)`font-size:18px` + `word-break:break-word` —— 窄列里中文每字宽度 > 列宽,逐字换行 → 竖线化。③`.detail-actions`(L626)`flex-shrink:0` —— 编辑/发布/拒绝 3 按钮不缩,优先占位,把 `.detail-title-row`(`flex:1`) 挤到零头。`.kn-detail-panel`(L570-576) 无 `min-width` 兜底。改动(待定):①grid 列宽改 `minmax(240px,360px) 1fr` + `@media (max-width:760px)` 切单列(`grid-template-columns:1fr`,列表详情上下堆叠);②详情面板加 `min-width:0` 配合标题行 `min-width` 防塌缩;③可选标题字号响应式降级(18px→15px)。— src/views/Knowledge.vue。**低风险纯 CSS**,无逻辑/i18n/数据变动。 + +### 🔧 2026-06-17 实测发现 bug(审批流程三连) + +> 用户实测:AI 对话中让 AI 创建任务并推进状态 → AI 调 `run_workflow(task_id, target_status)` → 审批卡片渲染 → 用户点批准 → handler 返回 Err → LLM 重试循环。 + +- [x] ✅(波9·e23b316+主代核查,cargo0err+devflow79pass,方案a2后端分支) B-260617-01 [P1] — **run_workflow 作为 AI 工具无法执行 + 无意义重试 + 审批混淆**。三个关联问题: + - **问题 1**:`run_workflow` handler(tool_registry.rs:530-546)仅持有 `db: Arc`,无法访问 `AppHandle/State`(registry/event_bus/workflows Repo),返回 `Err("run_workflow 工具需经 Tauri IPC 执行...")`。审批通过后 `ai_approve`(commands.rs:329)调 `ai_tools.execute()` → handler 必然 Err → `audit_status="failed"` → 错误信息作为 tool_result 回传 LLM。工作流实际未执行,任务状态未推进。 + - **问题 2**:handler Err → tool_result=错误提示 → LLM 认为失败 → 重试(1/4) → 同结果循环。工具定义未标 `no_retry`,浪费 token + 用户反复审批。 + - **问题 3**:前端渲染的是 AI 工具审批(tool_call pending_approval),非工作流 HumanNode 审批。用户批准后工作流引擎从未启动,HumanNode 审批节点从未到达。 + - **修复方向**:**方案 A(推荐)**:前端拦截 — `ai_approve` 中识别 `run_workflow` tool_call → 不走 `ai_tools.execute` → 直接 `invoke('run_workflow', {task_id, target_status})` → 结果回填 tool_result。**方案 B**:后端注入 State — `build_ai_tool_registry` 传入 `AppHandle` 使 handler 可直接执行。问题 2/3 随 A 自动消解。 + - **代码定位**:tool_registry.rs:530-546(handler 返 Err)/ audit.rs:590-630(High risk 进 pending)/ commands.rs:329-334(ai_approve execute→Err→failed)/ agentic.rs:503-508(pending_count>0 暂停循环) + — src-tauri/src/commands/ai/{tool_registry,audit,commands,agentic}.rs + src/composables/ai/useAiSend.ts + +### 🔧 2026-06-16 aichat 工具卡片重复渲染排查(仅分析·未实施) + +> 排查性质(session-role-diagnose-only),走查定位根因 + 记录待办,未改代码。 + +- [x] ✅(247dc5d后端audit按id去重治本+useAiEvents.ts:205前端findToolCall幂等守卫双保险·候选A根因闭环) B-260616-21 [P1] — **aichat 工具卡片「重复读取同一文件」表象(read_file 出现两条卡:一 0 行·7.1KB running、一 183 行·7.1KB completed)**。用户报对话记录里 `读取 .../api/ai.ts` 出现两次。**根因分析**(已走查前端流转 + 后端 emit 点):①前端 `useAiEvents.ts:202-206` `AiToolCallStarted` 分支直接 `lastMsg.toolCalls.push(info)`,**无 id 幂等守卫**(对比同文件 `startToolSlowTimer:58` 有 `_toolTimers.has(callId)` 守卫,Started 漏了同款判重)②`findToolCall`(`aiShared.ts:41-49`) 按 `id` 命中**首个**返回,`AiToolCallCompleted`(`:213`) 只 update 第一张卡 → 同 id 若被 push 两次,第二张卡永远 running,`ToolCard.vue:72` `parsed?.lines||0` 无 result 时显示 `0 行` ③后端 `audit.rs:538-549` `process_tool_calls` 对 tc_list 每 draft emit 一次 Started;read_file=Low risk(`:561`) **无去重**(去重仅 High,`:553-556` 注释明确 Low 不进)。**两候选根因**:**(A 最贴合现象)** 同一 `tool_call_id` 被**重复 emit Started**(后端 `process_tool_calls` 重入 / `stream_recv.rs` 生成重复 id / `agentic.rs` loop 重 process 同轮)→ push 两张卡 → Completed 只更首张(183 行)→ 次张残留 running(0 行);**(B)** agent loop 多轮 LLM 真读两次(不同 id)→ 但应两卡皆 183 行,与「0 行 + 183 行」现象不符,**排除为主因**。**待查**:后端同 id 重复 emit 的确切路径(`audit.rs:532` tc_list 来源 `tool_calls_acc` + `stream_recv.rs` id 生成 + `agentic.rs` 是否对同轮 tool_calls 重复 process)。**修复方向**(待定):①前端 Started push 前加 `findToolCall(event.id)` 幂等守卫(确定性低风险,对齐 startToolSlowTimer 守卫,治标兜底) ②后端查重复 emit 源治本(定位 stream_recv/process/loop 哪环生重复)。**关联** F-260616-05(agentic loop 工具去重缺失,batch53 仅 High 去重,read_file/search_files 等 Low 未去重;本现象若实为候选 A 则与 F-05 不同维度——F-05 是不同 id 重复调用,本条是同 id 重复 emit)。— src/composables/ai/useAiEvents.ts(:195-209 Started 分支) + src/composables/ai/aiShared.ts(:41 findToolCall) + src/components/ToolCard.vue(:72 lines 展示) + src-tauri/src/commands/ai/audit.rs(:538-549 emit Started)。 + +### 🔧 2026-06-17 定期全量走查(第1轮·仅走查·未实施) + +> 周期性自检(session-role-diagnose-only:不碰代码,文档不对改文档 + 代码问题记 todo)。本轮范围:secret.rs 全文 + 近 6 提交 vs todo 状态核对 + 工作区未提交改动(tauri.conf.json)。 + +**文档状态校正(治本/实现已落地,原 [ ] 更新为 [x])**: +- B-260616-21 → ✅:后端 247dc5d(audit.rs:534-540 `seen_ids: HashSet` 按 id 去重保首个)+ 前端 useAiEvents.ts:205 `findToolCall` 幂等守卫双保险,候选 A 根因(LLM 复用同 tool_use.id 致 emit 两次)闭环。 +- F-260614-04 → ✅ 后端三段(79b6a43 数据层+池选择器 / b3684f4 池 IPC+set_caps / 80c0955 stream_one_provider+候选链 fallback),前端 api/ai.ts:142 IPC 封装已接;UI 配置面板待核验。 + +**新登记代码问题**: +- [x] ✅(小修批·2026-06-17·wdqxhw4x1) B-260617-06 [P3] — **secret.rs:104 注释与实现相反**。`resolve_provider_secret` 注释写「keyring 优先,fallback DB.api_key」,但代码(:105-110 `if !record.api_key.is_empty() { return DB }` + `get_provider_secret().unwrap_or_default()`)实际「**DB 优先,fallback keyring**」。与顶层设计(line 15「DB 优先,fallback keyring」)矛盾,line 104 注释为笔误。**实际无功能影响**(迁移态 DB 与 keyring 不会同时有值,set keyring→clear DB 原子序列),纯文档错误。**修法**:line 104 注释改为「DB 优先,fallback keyring」。— crates/df-storage/src/secret.rs:104 + +**工作区未提交改动观察(非 bug,记录供判断)**: +- src-tauri/tauri.conf.json: `bundle.targets` `"all"` → `["nsis"]`(打包目标从全平台收窄到仅 NSIS Windows 安装包)。正式收窄(devflow 仅 Win 桌面)则合理;若 dev 调试临时收窄忘还原,后续 mac/linux 打包会漏。**待用户确认意图**。 + +### 🔧 2026-06-17 定期全量走查(第2轮·仅走查·未实施) + +> 增量范围:F-05 多模态三提交(Phase2a 后端 e3cd448 / Phase2b 前端 e1d396d / Phase2c 闭环 4317d02)+ 核对 `src/components/settings/`(未跟踪)。UX-19 虚拟滚动已被 CR-62 复审 PASS(待审查.md 已回填),本轮不重审。 + +**F-05 多模态审查结论:质量优** +- 设计周全:`content:String` 主载荷不变 + `parts:Option>` 挂载,老 JSON 无 parts → None,向后兼容零回归(audit/title/commands 读 content 当字符串全不受影响)。ContentPart `#[serde(tag="type",rename_all="snake_case")]` ↔ 前端 TS discriminated union `type:'text'|'image'`,wire 格式严格对齐。 +- 转换层协议正确:Anthropic image `source.type=base64` + media_type + data;OpenAI `image_url` data URI / http url 双形态;OpenAI `content:String→serde_json::Value` 双形态,String 简写保纯文本端点兼容。 +- 所有权处理到位:openai_compat 注释「须在 move m.tool_calls 之前算,借用 m」——Rust 借用易错点作者注意到了。 +- truncate_parts 防撑爆:Image base64 → 占位 Text 片,url 模式原样;落库副本不污染内存真相源(ContextManager 保留原图,重发仍带图)。 +- 测试覆盖:ContentPart round-trip / legacy JSON / truncate / 转换层双形态各 2+ 测试。 +- FR-S1 安全边界注释到位:commands.rs 明确 ContentPart Image base64 是图片数据非 api_key,不入敏感面。 + +**新登记代码问题(均 P3,无 P0/P1/P2)**: +- [x] ✅(小修批·2026-06-17·wdqxhw4x1) B-260617-07 [P3] — **F-05 变量名误导 + 兜底注释矛盾**。①conversation.rs:109 `bytes_approx = b.len()` 实为 base64 **字符数**(文案「约 N 字符」对,变量名 `bytes_approx` 错,注释「base64 字符数 ≈ 字节数*4/3」也混淆)。②openai_compat.rs Image 缺数据兜底分支 `_ => String::new()` 注释「避免发空 url 触发 400」自相矛盾——空串本身即空 url,仍触发 400。当前不可达(`image_base64` 构造器强制 `media_type:Some`),纯注释/命名瑕疵。**修法**:变量改名 `base64_len`/文案统一;兜底分支改为明确报错或移除误导注释。— crates/df-ai/src/openai_compat.rs:336 / src-tauri/src/commands/ai/conversation.rs:109 +- [x] ✅(小修批·2026-06-17·wdqxhw4x1) B-260617-08 [P3] — **F-05 Anthropic url 模式发空 data 预留路径缺口**。anthropic_compat.rs:355 Image(url,base64:None) 时兜底发空 data + warn「commands 层应预拉 base64」,但 Phase2c commands.rs:177 透传 parts 时**无预拉 url 字节逻辑**。当前前端 Phase2b 只产 base64 模式(AiChat.vue:999 `FileReader.readAsDataURL`),路径不可达;但注释误导(声称的预拉不存在),未来加 URL 图片输入 / 历史 url 图重发会静默 Anthropic 400。**修法**:commands 层补 url→base64 预拉,或 provider 层 url 模式明确报错而非发空 data。— crates/df-ai/src/anthropic_compat.rs:355 + +**文档状态校正**: +- **F-260614-04 UI 面板核验通过**:第1轮标 [x] 时备注「UI 面板待核验」,本轮确认 `src/components/settings/ProviderPanel.vue`(enabled toggle + weight 0-100 input + `onPoolToggle` 即时调 IPC,落库后后端 `reload_provider_caps` 重建)已实现 = F-04c 负载均衡池 UI。**注**:该文件当前**未跟踪未提交**(git status `?? src/components/settings/`),含 GeneralPanel/KnowledgePanel/ConnectionPanel/ProviderPanel 四组件(设置面板拆分重构),待提交纳入版本控制。 + +**已审文件清单(本轮)**:crates/df-ai-core/src/provider.rs · crates/df-ai/src/anthropic_compat.rs · crates/df-ai/src/openai_compat.rs · src-tauri/src/commands/ai/conversation.rs · src-tauri/src/commands/ai/commands.rs · src/api/ai.ts · src/api/types.ts · src/composables/ai/useAiSend.ts · src/composables/ai/useAiConversations.ts · src/stores/ai.ts · src/components/AiChat.vue(图片构建+渲染) · src/components/settings/ProviderPanel.vue +**新登记 todo**:B-260617-07 · B-260617-08 + +### 🔧 2026-06-17 Tasks.vue i18n 缺失(仅分析·未实施) + +> Tasks.vue:72 报 `Not found 'completed' key in 'zh' locale messages`。session-role-diagnose-only,仅分析+记todo。 + +**现象**:Tasks.vue:72 `$t(statusLabel(task.status))` → `taskStatusLabel()` → `TASK_STATUS_LABELS[status]` 返回 `'tasks.status.done'` → `$t('tasks.status.done')` 在 en/zh-CN 均未定义 → intlify fallback 到 en 仍缺失。 + +**根因**:`src/constants/project.ts:61-68` 定义了 `TASK_STATUS_LABELS`(值如 `'tasks.status.done'`/`'tasks.status.todo'` 等 7 个 status + `'tasks.statusFilter.done'` 等 5 个 filter + priority 相关),但 **en/zh-CN 的 tasks 相关 i18n 文件完全不存在**。6b67214 大量新增功能时未同步补 tasks i18n key。 + +**影响范围**(需补全的 key): +| 组件 | 用到的 key 前缀 | 缺失的 key | +|---|---|---| +| Tasks.vue:72 | `tasks.status.*` (7个) | 全部 | +| Tasks.vue:148-155 | `tasks.statusFilter.*` (5个) | 全部 | +| Tasks.vue:96-103 | `tasks.priority.*` / `P0`/`P1`/`P2`/`P3` (5+4=9) | 全部 | + +- [x] ✅(误判销账·核验 tasks.ts 齐全) B-260617-10 [P2] — **Tasks.vue i18n 缺失**【独立核验:tasks.ts status 7 key(todo/in_progress/in_review/testing/done/blocked/cancelled)+ statusFilter 8 key 全有(zh/en 对称)。真实根因=老 DB status='completed' 残留 + taskStatusLabel `?? status` 兜底裸字符串 → $t() not found,已 commit 1cd7652 LEGACY_STATUS_MAP 防御修复】 + +> **2026-06-17 进展注记(1cd7652)**:提交 1cd7652 已做**数据层映射兜底**(project.ts 新增 `LEGACY_STATUS_MAP`:completed→done / review_ready→in_review / merged→done / abandoned→cancelled),`taskStatusLabel/taskStatusClass` 经映射后老 DB 脏态不再直接走 `$t()` 报 not found。**但 i18n key 补全(显示层)仍未做**——映射后 `$t('tasks.status.done')` 仍 not found(tasks.ts 不存在),用户从看到 "completed" 变成看到 "tasks.status.done" 原始 key。**B-260617-10 主问题(补全 21 个 i18n key)仍在**,1cd7652 是其前置的数据归一,待补 key 后老态自动正确显示。映射目标态(done/in_review/cancelled)均已核验在 TASK_STATUS_LABELS 7 态内 ✓。 + +### 🔧 2026-06-18 走查·虚拟滚动修复链(B-260617-09 销账核对) + +> 核验 8abcd56/0ca5d98/02bee38 三 commit(B-260617-09 重叠修复链)。session-role-diagnose-only,独立核验代码形态非信 commit msg。 + +**8abcd56(方案 A·治本)✓**:卸载分支去 `height>0` 守卫,height>0 用实测 / 否则 offsetHeight / 再否则 40px 兜底(useAiVirtualScroll.ts:72-76);额外修 registerSentinel 首帧占位(:107-109 h≤0 设 40px 防 list 首渲染塌 0)。实施正确,比我原建议完善。 + +**0ca5d98(🔴 临时禁用未回退·P1 遗留)**:`shouldRender` 恒 `return true`(useAiVirtualScroll.ts:138),虚拟滚动裁剪**完全关闭**。注释标"临时禁用·定位后回退"但**仍在 HEAD**。三重问题:①8abcd56 已修根因,禁用多余;②裁剪关闭致 8abcd56 卸载 fallback **被绕过**(不走卸载分支);③长对话所有消息恒渲染,虚拟滚动形同关闭性能下降。**应回退**:恢复 `return renderedKeys.value.has(key) || pinnedKeys.value.has(key)`。 + +**02bee38 销账 B-260617-09**:根因 8abcd56 修了,0ca5d98 诊断未回退销账略早。**→ 2026-06-18 最终决策:彻底移除虚拟滚动**(见下工作区进展),非回退 0ca5d98 恢复裁剪。B-260617-09 真闭环。 + +- [x] ✅(2026-06-18·转向彻底移除·工作区待提交) **B-260618-01** — 原"回退 0ca5d98 恢复虚拟滚动裁剪"**→ 转向彻底移除虚拟滚动**(删 useAiVirtualScroll.ts + AiChat.vue 移除全链路,见下进展段)。理由:IO/RO 时序竞态致重叠(shouldRender 恒 true 时 IO 仍设/清 sentinel minHeight 竞态源未除)+ 消息量级不需要。B-260617-09 真闭环。 + +> **🔥 2026-06-18 工作区进展(方案变更·虚拟滚动整体删除)**:wf agent 未回退 0ca5d98,而是**彻底删除 useAiVirtualScroll.ts**(工作区 `D`,-175 行)+ AiChat.vue 移除全部 6 处引用(模板 ref / import / 解构 / onMounted setupVirtualScroll / lastStreamingRenderKey+watch),`grep` 确认**无残留引用**(编译安全)。重叠由此根治(移除 IO/RO 时序复杂度源)。**B-260618-01 以"删除文件"方式解决**(非回退临时禁用)。**代价**:长对话所有消息恒渲染(无虚拟化),性能下降——正确性优先权衡。**均工作区未提交**(HEAD 仍 0ca5d98),待提交入库。同期改动:ToolCard run_command 增强 + ToolCardList userCollapsedCards 修复首卡折叠 bug(见 B-260618-03)+ **U-260618 global-toggle(全部展开/收起)从 topbar 下沉到首个可折叠分组标题行尾巴**(firstCollapsibleGi computed,与 run_command 分组标题"run command N"同行,chevron 移除 margin-left:auto)+ **分组标题行加 max-width:var(--df-msg-max-width)(90%) 对齐气泡/卡片宽度**(原无 max-width 拉满 100% > 气泡/卡片 90%)+ global-toggle 移除独立按钮 padding/背景高度=文字行高不撑高标题行(见 B-260618-04)。 + +- [x] ✅(2026-06-18·工作区待提交·vue-tsc EXIT 0) **B-260618-03** — **ToolCardList 首卡折叠 bug**。`isCardExpanded`(ToolCardList.vue)`ci===0` 兜底 `return true` 覆盖用户折叠——多卡分组首卡默认展开,用户点折叠后 ci===0 仍 true 重新展开。**修复**:加 `userCollapsedCards` 记忆态,`isCardExpanded` 最优先判断用户折叠(覆盖 ci===0 兜底 + userExpandedCards 记忆);`toggleCardExpand` 改用 isCardExpanded 判当前真实态(避免首卡 toggle 误判反向展开);template `@toggle` 传 tc/gi/ci。— src/components/ToolCardList.vue(isCardExpanded + toggleCardExpand + userCollapsedCards) + +- [x] ✅(2026-06-18·工作区待提交·vue-tsc EXIT 0) **B-260618-04** — **ToolCardList 全部展开/收起下沉 + 宽度对齐(U-260618)**。①global-toggle 从 topbar 下沉到首个可折叠分组标题行尾巴(firstCollapsibleGi computed,与 run_command 分组标题同行,chevron 移除 margin-left:auto);②分组标题行加 max-width:var(--df-msg-max-width)(90%) 对齐气泡/卡片宽度(原无 max-width 拉满 100%);③global-toggle 移除独立按钮 padding/背景高度=文字行高不撑高标题行。— src/components/ToolCardList.vue(firstCollapsibleGi + template global-toggle 下沉 + CSS) + +- [x] ✅(2026-06-18·工作区待提交·vue-tsc EXIT 0) **B-260618-05** — **AI 独立窗口吸附挤出屏幕 + 宽度偏窄**。①吸附挤出:`syncToMain` 把 AI 窗口放主窗口右(pos.x+size.width+GAP),主窗口最大化时 AI x=屏幕宽+4 挤出屏幕。**修复**:syncToMain 增强——主窗口 isMaximized 时 unmaximize + 主+AI 宽度超屏幕时缩小主窗口(newMainWidth=screenWidth-GAP-AI_WIDTH-pos.x,最小 400px 保护)+ _isSyncing flag 防 syncToMain 改主窗口 size 触发 onResized 递归;屏幕宽度用顶层函数 `currentMonitor()`(@tauri-apps/api/window,非 Window 实例方法)。②独立窗口窄:detachPanel width 520→600 对齐吸附态 AI_DOCK_WIDTH。— src/composables/ai/useAiWindow.ts(syncToMain + detachPanel) + +### 🔧 2026-06-17 aichat 消息全量重叠(5角度深入分析·未实施) + +> 用户报 aichat 对话「大量重叠」「不单间距问题」。session-role-diagnose-only,5 角度并行论证后记录。 + +> **🔥 2026-06-17 补充触发场景(展开全部·同根因)**:用户报"展开全部"折叠段(archived/compressed)后,**展开内容未把后续消息往下挤压,而是与未展开消息重叠**。机制同主根因:展开段 → `renderItems` computed 新增 msg item(key=`'e-'+seg.key+'-'+m.id`,AiChat.vue:2586)→ 新 item 注册 sentinel,`itemMeta` height 初始 0(useAiVirtualScroll.ts:104)→ 高度竞态 → slot 塌 0 → 内容 overflow 显示 + 后续上移 = 重叠。**与"第二次发送"触发的重叠同根(虚拟滚动 slot 高度塌陷),B-260617-09 方案 A(卸载 minHeight fallback)/ C(禁虚拟滚动验证)可一并解决**。 + +> **🔥 2026-06-17 用户精确场景收敛(根因定位·待 DevTools 终验)**:用户给出精确触发模式——①user 发 msg1→AI 回 reply1(一或多卡片) ②user **再次发送** msg2 时,**msg2 重叠在 reply1 之上** ③reply2 紧跟重叠 msg2 后 ④后续连续重叠。此场景锁定触发时机=**第二次发送(reply1 从 pinned 移出的瞬间)**,根因链收敛: +> - **CSS 兜底缺失(确定)**:`.ai-msg-slot`(AiChat.vue:3174)仅 `display:flex;flex-direction:column`,**无 min-height/height/position**。slot 高度完全靠内容撑;内容卸载时高度**唯一依赖**虚拟滚动 IO 回调设的 inline `minHeight`(useAiVirtualScroll.ts:74),无 CSS 静态兜底。 +> - **minHeight 守卫跳过(核心嫌疑)**:useAiVirtualScroll.ts:73 卸载分支 `if (meta && meta.height > 0 && meta.el.isConnected)`——**height=0 时跳过设 minHeight** → slot 塌 0 → 后续 flex 项上移 → 叠在 reply1 内容(overflow 显示)上 = 用户所见"msg2 重叠在 reply1 上"+后续连续重叠。 +> - **height=0 高发窗口=第二次发送**:reply2 push → `lastStreamingRenderKey`(:2596)切到 reply2 → watch(:2604)`setPinnedMsgs` reply1 移出 pinned;同时 `isLastAi(reply1)`(:1561)变 false → bubble key(:463)从 `_mdRenderKey` 变 `0` → **Vue 重建 reply1 bubble**(流式 streamingBlocks→renderContent 切换)。pinned 移出 + bubble 重建叠加,RO/IO 在此窗口易捕获 height=0(首次挂载初始化 0 :104 / 重建中间态 / RO 异步未跟上最终值)。 +> - **确诊待 DevTools**:第二次发送后查 ①reply1 的 `itemMeta.height`(useAiVirtualScroll itemMeta Map)②reply1 `.ai-msg-slot` 的 inline `minHeight` + `offsetHeight` ③`shouldRenderMsg(reply1)` 是否变 false。若 height=0 且 minHeight 未设 → 确诊。 +> - **修法选项**: +> - **A 治本**:useAiVirtualScroll.ts:73 卸载分支去掉 `height>0` 跳过,height=0 时 fallback 测 `meta.el.offsetHeight`(卸载前内容还在,offsetHeight 即真实高度)作 minHeight。 +> - **B 兜底**:`.ai-msg-slot` 加静态 `min-height`(如 60px),防塌 0(治标,虚拟滚动 height=0 隐患仍在)。 +> - **C 隔离验证(推荐先做)**:临时禁用虚拟滚动(`shouldRenderMsg` 恒 true),立判重叠是否消失 → 确诊是否虚拟滚动所致(5 分钟验证)。 + +**现象确认(基于截图)**: +| 现象 | 判定 | +|---|---| +| 顶部出现 `` 等模板源码文本 | ✅ 正常 — AI 回复中 read_file 读取 AiChat.vue 源码后 v-html 展示,非渲染泄漏 | +| 消息/工具卡大量重叠堆叠 | 🔴 异常 — 布局层叠问题 | +| 整体挤压、间距消失 | 🔴 异常 | + +**已排除项**: + +| 检查点 | 结论 | +|---|---| +| CSS 声明链路 | ✅ `.ai-messages` 有 `display:flex;flex-direction:column;gap:14px`(:3109-3116),无外部覆盖 | +| scoped 样式冲突 | ✅ 单 ` diff --git a/src/components/ToolCard.vue b/src/components/ToolCard.vue index 686885f..e761773 100644 --- a/src/components/ToolCard.vue +++ b/src/components/ToolCard.vue @@ -3,7 +3,7 @@ class="ai-tool-card" :class="[ 'ai-tool-card--' + tc.status, - { 'ai-tool-card--collapsed': !isExpanded && !shouldKeepOpen(tc), 'ai-tool-card--failed': isToolFailure(tc) }, + { 'ai-tool-card--collapsed': !isExpanded && !shouldKeepOpen(tc), 'ai-tool-card--failed': isFailed }, ]" > @@ -14,10 +14,10 @@

{{ toolDisplayName(tc) }} {{ $t('aiTool.running') }} - {{ $t('aiTool.executionFailed') }} + {{ $t('aiTool.executionFailed') }} {{ toolResultSummary(tc) }}
- + @@ -73,9 +73,11 @@
{{ parsed?.path }} - {{ parsed?.lines || 0 }} {{ $t('aiTool.lines') }} · {{ formatBytes(parsed?.size) }} + {{ parsed?.has_more + ? $t('aiTool.linesTruncated', { shown: parsed?.returned_lines ?? 0, total: parsed?.lines ?? 0 }) + : `${parsed?.lines || 0} ${$t('aiTool.lines')}` }} · {{ formatBytes(parsed?.size) }}
{{ parsed?.content }}
@@ -87,6 +89,7 @@ {{ parsed?.path }} {{ parsed?.entries?.length || 0 }} {{ $t('aiTool.items') }} + {{ $t('aiTool.dirTruncated', { n: 1000 }) }}
+ +
+
+ + {{ parsed?.path }} + 「{{ parsed?.pattern }}」 + {{ $t('aiTool.foundN', { n: typeof parsed?.total === 'number' ? parsed.total : (parsed?.results?.length || 0) }) }} +
+
+
+ + {{ entry.path }} + {{ formatBytes(entry.size) }} +
+
+
+
{{ parsed?.path }} {{ formatBytes(parsed?.bytes_written) }} {{ $t('aiTool.written') }} + {{ $t('aiTool.writeOverwrite', { old: formatBytes(parsed.old_size), neww: formatBytes(parsed?.bytes_written) }) }} + {{ $t('aiTool.encodingLabel', { enc: parsed.encoding }) }} +
+ + +
+
+ + {{ parsed?.path }} + {{ formatSizeDiff(parsed?.size_diff) }} {{ $t('aiTool.bytesUnit') }} + {{ $t('aiTool.patchedMatches', { n: parsed.matches_found }) }} +
+
⚠ {{ parsed.warning }}
+
+
{{ ln.text }}{{ '\n' }}
+
+
+ + +
+
+ $ + {{ argString(tc.args, 'command') }} + +
+
{{ cmdOutput }}
-
⚠ {{ $t('aiTool.executionFailedHint') }}
+
⚠ {{ $t('aiTool.executionFailedHint') }}
{{ formatToolResult(tc) }}
@@ -146,6 +201,7 @@ const t = ((i18n as any).global.t as (k: string, p?: Record) => /** 工具结果 JSON 已知字段(全可选;list_* 运行时返回数组,靠 Array.isArray 区分) */ interface ToolResult { path?: string + pattern?: string from?: string to?: string content?: string @@ -184,6 +240,20 @@ interface ToolResult { has_more?: boolean warning?: string review_rounds?: number + // UX-260618-05~12:补全后端返回前端消费的字段(review_rounds/truncated/bytes_moved/has_more/total/entries 已存在) + task_id?: string + execution_id?: string + target_status?: string + note?: string + diff?: string + matches_found?: number + backup_path?: string + returned_lines?: number + items?: Array> + modified?: number | null + old_size?: number | null + encoding?: string + cross_volume?: boolean } /** 内联 SVG 图标字符串(经 v-html 注入,常量安全;图标库改造见决策记录) */ @@ -239,6 +309,12 @@ function formatToolName(name: string): string { return name.replace(/_/g, ' ').replace(/\b\w/g, c => c.toUpperCase()) } +/** run_command 命令首行截断(头部展示;多行命令取首行,超长省略) */ +function shortCmd(cmd: string, max = 48): string { + const firstLine = cmd.split('\n')[0].replace(/\s+/g, ' ').trim() + return firstLine.length > max ? firstLine.slice(0, max) + '…' : firstLine +} + function formatJson(data: unknown): string { try { return JSON.stringify(data, null, 2) @@ -365,6 +441,30 @@ function formatToolResult(tc: AiToolCallInfo): string { return raw } switch (tc.name) { + case 'list_projects': + case 'list_tasks': + case 'list_ideas': + case 'list_trash': { + // UX-260618-12: list_* 后端返 {items,total,has_more} 对象(非数组),渲染结构化列表替代裸 JSON + const items = Array.isArray(r) ? r : (Array.isArray(r.items) ? r.items : []) + const total = typeof r.total === 'number' ? r.total : items.length + const head = tc.name === 'list_projects' ? t('aiTool.projectCount', { n: total }) + : tc.name === 'list_tasks' ? t('aiTool.taskCount', { n: total }) + : tc.name === 'list_ideas' ? t('aiTool.ideaCount', { n: total }) + : t('aiTool.trashCount', { n: total }) + const lines = items.slice(0, 10).map((it: Record) => { + const label = typeof it.name === 'string' ? it.name + : typeof it.title === 'string' ? it.title + : typeof it.id === 'string' ? it.id + : '' + const status = typeof it.status === 'string' ? ` [${it.status}]` : '' + const stack = typeof it.stack === 'string' ? ` (${it.stack})` : '' + return label ? `- ${label}${status}${stack}` : '' + }).filter(Boolean) + const parts = [head, ...lines] + if (r.has_more) parts.push(t('aiTool.listHasMore', { n: items.length })) + return parts.join('\n') + } case 'write_file': return `${r.path} (${formatBytes(r.bytes_written)})` case 'update_task': @@ -372,13 +472,16 @@ function formatToolResult(tc: AiToolCallInfo): string { ? t('aiTool.updatedTaskField', { id: r.id || '', field: r.field || '' }) : t('aiTool.updated') case 'advance_task': - return t('aiTool.advancedTask', { id: r.id || '', status: r.status || '' }) + // UX-260618-09: review_rounds>0 显退回累加轮数,=0 回退原文案(首推无噪音) + return typeof r.review_rounds === 'number' && r.review_rounds > 0 + ? t('aiTool.advancedTaskWithRounds', { id: r.id || '', status: r.status || '', n: r.review_rounds }) + : t('aiTool.advancedTask', { id: r.id || '', status: r.status || '' }) case 'delete_task': return r.deleted ? t('aiTool.deleted') : t('aiTool.deleteIneffective') case 'delete_file': return r.permanent ? t('aiTool.deleteFilePermanent', { path: r.path || '' }) - : t('aiTool.deleteFileSoft', { path: r.path || '' }) + : t('aiTool.deleteFileSoft', { path: r.path || '', backup_path: r.backup_path || '' }) case 'run_command': return formatCommandResult(r) case 'patch_file': @@ -389,7 +492,9 @@ function formatToolResult(tc: AiToolCallInfo): string { return t('aiTool.appendedTo', { path: r.path || '', bytes: formatBytes(r.bytes_written) }) case 'rename_file': return r.renamed - ? t('aiTool.renamedFile', { from: r.from || '', to: r.to || '' }) + ? (r.cross_volume + ? t('aiTool.renamedCrossVolume', { from: r.from || '', to: r.to || '', bytes: formatBytes(r.bytes_moved) }) + : t('aiTool.renamedWithBytes', { from: r.from || '', to: r.to || '', bytes: formatBytes(r.bytes_moved) })) : formatJson(r) case 'search_files': { const n = typeof r.total === 'number' ? r.total : (Array.isArray(r.results) ? r.results.length : 0) @@ -401,6 +506,14 @@ function formatToolResult(tc: AiToolCallInfo): string { return r.bound ? t('aiTool.boundDir', { path: r.path || '', stack: r.stack || '' }) : formatJson(r) + case 'run_workflow': { + // UX-260618-05: 后端返 {task_id,target_status,execution_id,status,note},显 execution_id 对应执行实例 + const execId = typeof r.execution_id === 'string' && r.execution_id + ? r.execution_id + : (typeof r.id === 'string' ? r.id : '') + if (!execId) return formatJson(r) + return t('aiTool.workflowTriggered', { id: r.task_id || '', status: r.target_status || '', exec: execId }) + } default: return formatJson(r) } @@ -435,13 +548,18 @@ function formatCommandResult(r: ToolResult): string { return parts.join('\n') } -/** 合并 stdout/stderr 取前 N 行,返回截断后文本 + 是否截断 + 总行数 */ -function combineAndTruncateLines(stdout: string | undefined, stderr: string | undefined, maxLines: number): { text: string; truncated: boolean; total: number } { +/** SW-260618-19: 合并 stdout/stderr(空串跳过),供 cmdOutput 展开 + combineAndTruncateLines 截断共享 DRY */ +function combineOutputs(stdout: string | undefined, stderr: string | undefined): string { const parts: string[] = [] if (stdout) parts.push(stdout) if (stderr) parts.push(stderr) - if (!parts.length) return { text: '', truncated: false, total: 0 } - const combined = parts.join('\n') + return parts.join('\n') +} + +/** 合并 stdout/stderr 取前 N 行,返回截断后文本 + 是否截断 + 总行数(合并复用 combineOutputs) */ +function combineAndTruncateLines(stdout: string | undefined, stderr: string | undefined, maxLines: number): { text: string; truncated: boolean; total: number } { + const combined = combineOutputs(stdout, stderr) + if (!combined) return { text: '', truncated: false, total: 0 } const allLines = combined.split('\n') const total = allLines.length if (total <= maxLines) { @@ -458,6 +576,10 @@ function formatFileInfoResult(r: ToolResult): string { } let base = t('aiTool.fileInfoSize', { path: r.path || '', size: formatBytes(typeof r.size === 'number' ? r.size : 0) }) const extras: string[] = [] + // UX-260618-12: file_info modified 时间(epoch_ms → 客户端 toLocaleString) + if (typeof r.modified === 'number' && r.modified > 0) { + extras.push(t('aiTool.fileInfoModified', { time: new Date(r.modified).toLocaleString() })) + } if (r.is_dir) { extras.push(t('aiTool.fileInfoDir')) } else { @@ -505,6 +627,12 @@ const emit = defineEmits<{ approve: [{ id: string; approved: boolean }] }>() +// run_command 输出折叠态:失败命令默认展开(便于看 stderr),成功默认折叠 +// 注:此处仅状态翻转时调一次,不进模板高频路径,沿用模块级 isToolFailure(props.tc) 无性能问题。 +const cmdOutputExpanded = ref(false) +// SW-260618-06: cmdOutputExpanded 的 status watch 合并到下方 approving 复位 watch +// (approving/approvingTimer 在下方定义,此处 immediate 会 TDZ,合并 watch 放三 ref 都已定义后)。 + /** * 审批按钮 loading 态(B-260616-08)。 * 点击后置 true,禁用两按钮防重复点击并显示 spinner。后端回事件 useAiEvents 把 tc.status @@ -570,13 +698,16 @@ async function onApprove(approved: boolean) { }, APPROVE_LOADING_TIMEOUT_MS) emit('approve', { id: props.tc.id, approved }) } -// status 离开 pending_approval → 后端已回事件 → 复位 loading 并清计时器 +// SW-260618-06: 合并双 watch(原 cmdOutputExpanded watch + approving 复位 watch,同源 props.tc.status)。 +// immediate 时 s=初始 status:cmdOutputExpanded 仅 completed 初始化(初始非 completed 无副作用); +// approving 初始 false + approvingTimer 初始 null(if null 跳过 clearTimeout),immediate 安全。 watch(() => props.tc.status, (s) => { + if (s === 'completed') cmdOutputExpanded.value = isToolFailure(props.tc) if (s !== 'pending_approval') { approving.value = false if (approvingTimer) { clearTimeout(approvingTimer); approvingTimer = null } } -}) +}, { immediate: true }) // 组件卸载清计时器防泄漏 onBeforeUnmount(() => { if (approvingTimer) clearTimeout(approvingTimer) @@ -586,6 +717,34 @@ onBeforeUnmount(() => { /** 一次解析结果供模板多次读(模板引用 6 次,computed 避免每次 patch 重 parse) */ const parsed = computed(() => parseResult(props.tc.result)) +/** + * 是否工具失败(completed 语义)。模板多处复用(.ai-tool-card--failed / 状态点 / 失败横幅等, + * 6+ 引用)。原每处直调 isToolFailure(tc) → 每次 patch 重新 parseResult + 正则, + * 现下沉为 computed 复用 parsed,patch 间不重算。逻辑与模块级 isToolFailure 同源。 + */ +const isFailed = computed(() => { + const tc = props.tc + if (tc.status !== 'completed') return false + const r = parsed.value + if (tc.name === 'run_command') { + if (r && typeof r.exit_code === 'number') return r.exit_code !== 0 + if (r) return true + } + if (!r) { + const raw = typeof tc.result === 'string' ? tc.result : '' + if (!raw) return false + return /^(执行失败|Error:|Failed:)/m.test(raw) + } + return false +}) + +/** run_command 展开态全量输出(stdout+stderr 合并);空串隐藏 toggle。复用 parsed 不重 parse */ +const cmdOutput = computed(() => { + const r = parsed.value + if (!r) return '' + return combineOutputs(r.stdout, r.stderr) +}) + /** * AE-2025-03: write_file 审批 diff 行解析。 * 后端 generate_diff 输出 '+新行/-旧行/ 上下文行',逐行拆 → {kind, text} 供模板按 kind 着色。 @@ -603,6 +762,29 @@ const diffLines = computed(() => { }).filter((x): x is { kind: string; text: string } => x !== null) }) +/** + * UX-260618-06: patch_file 结果 diff 行拆解(复用 diffLines 同款 +add/-del/ ctx 着色)。 + * 数据源不同:diffLines 取 props.tc.diff(审批事件注入,仅 write_file);此 computed 取 + * parsed.diff(patch_file 工具执行结果字段)。两条路径互不干扰。 + * 长 diff 截断到前 120 行防撑爆卡片(unified diff 含上下文行,大改可能很长)。 + */ +const resultDiffLines = computed(() => { + const d = parsed.value?.diff + if (!d) return [] + const MAX = 120 + const lines = d.split('\n').map(line => { + if (line === '') return null + if (line.startsWith('+')) return { kind: 'add', text: line } + if (line.startsWith('-')) return { kind: 'del', text: line } + return { kind: 'ctx', text: line } + }).filter((x): x is { kind: string; text: string } => x !== null) + if (lines.length > MAX) { + lines.splice(MAX) + lines.push({ kind: 'ctx', text: '…' }) + } + return lines +}) + /** * 按 id 查项目名(覆盖活跃 + 回收站):审批 delete/restore/purge 各阶段都可能引用项目, * 故先查 projects 再查 deletedProjects,找到即返回(提前退出),无则返回 undefined(调用方走 fallback)。 @@ -665,6 +847,11 @@ function toolDisplayName(tc: AiToolCallInfo): string { } case 'create_task': return t('aiTool.createTask') case 'create_project': return t('aiTool.createProject') + case 'run_command': { + // 折叠态头部也显命令(取首行+截断),无 command 回退通用名 + const cmd = argString(tc.args, 'command') + return cmd ? `$ ${shortCmd(cmd)}` : formatToolName(tc.name) + } default: return formatToolName(tc.name) } } @@ -679,9 +866,21 @@ function toolResultSummary(tc: AiToolCallInfo): string { const r = parseResult(tc.result) if (!r) return '' switch (tc.name) { - case 'list_tasks': return Array.isArray(r) ? t('aiTool.taskCount', { n: r.length }) : '' - case 'list_projects': return Array.isArray(r) ? t('aiTool.projectCount', { n: r.length }) : '' - case 'list_ideas': return Array.isArray(r) ? t('aiTool.ideaCount', { n: r.length }) : '' + case 'list_tasks': + case 'list_projects': + case 'list_ideas': + case 'list_trash': { + // UX-260618-10/12: 后端返 {items,total,has_more} 对象(非数组),原 Array.isArray(r) 恒 false→折叠态无计数 + const n = Array.isArray(r) ? r.length + : (typeof r.total === 'number' ? r.total + : (Array.isArray(r.items) ? r.items.length : 0)) + if (!n) return '' + const key = tc.name === 'list_projects' ? 'projectCount' + : tc.name === 'list_tasks' ? 'taskCount' + : tc.name === 'list_ideas' ? 'ideaCount' + : 'trashCount' + return t(`aiTool.${key}`, { n }) + } case 'create_project': return r.name ? t('aiTool.createdWithName', { name: r.name }) : t('aiTool.created') case 'create_idea': case 'create_task': return r.title ? t('aiTool.createdWithName', { name: r.title }) : t('aiTool.created') @@ -689,12 +888,14 @@ function toolResultSummary(tc: AiToolCallInfo): string { case 'update_task': return r.updated !== false ? t('aiTool.updatedTaskField', { id: r.id || '', field: r.field || '' }) : t('aiTool.updated') - case 'advance_task': return t('aiTool.advancedTask', { id: r.id || '', status: r.status || '' }) + case 'advance_task': return typeof r.review_rounds === 'number' && r.review_rounds > 0 + ? t('aiTool.advancedTaskWithRounds', { id: r.id || '', status: r.status || '', n: r.review_rounds }) + : t('aiTool.advancedTask', { id: r.id || '', status: r.status || '' }) case 'delete_project': case 'delete_task': return r.deleted ? t('aiTool.deleted') : t('aiTool.deleteIneffective') case 'delete_file': return r.permanent ? t('aiTool.deleteFilePermanent', { path: r.path || '' }) - : t('aiTool.deleteFileSoft', { path: r.path || '' }) + : t('aiTool.deleteFileSoft', { path: r.path || '', backup_path: r.backup_path || '' }) case 'restore_project': return r.restored ? t('aiTool.restored') : t('aiTool.restoreIneffective') case 'purge_project': return r.purged ? t('aiTool.purged') : t('aiTool.purgeIneffective') case 'run_command': { @@ -707,7 +908,9 @@ function toolResultSummary(tc: AiToolCallInfo): string { : t('aiTool.patchedFile', { path: r.path || '', diff: formatSizeDiff(r.size_diff) }) case 'append_file': return t('aiTool.appendedTo', { path: r.path || '', bytes: formatBytes(r.bytes_written) }) case 'rename_file': return r.renamed - ? t('aiTool.renamedFile', { from: r.from || '', to: r.to || '' }) + ? (r.cross_volume + ? t('aiTool.renamedCrossVolume', { from: r.from || '', to: r.to || '', bytes: formatBytes(r.bytes_moved) }) + : t('aiTool.renamedWithBytes', { from: r.from || '', to: r.to || '', bytes: formatBytes(r.bytes_moved) })) : '' case 'search_files': { const n = typeof r.total === 'number' ? r.total : (Array.isArray(r.results) ? r.results.length : 0) @@ -719,7 +922,13 @@ function toolResultSummary(tc: AiToolCallInfo): string { case 'bind_directory': return r.bound ? t('aiTool.boundDir', { path: r.path || '', stack: r.stack || '' }) : '' - case 'run_workflow': return t('aiTool.workflowHint') + case 'run_workflow': { + // UX-260618-05: header 副标题显 execution_id 概要(原 workflowHint「请到工作流页面运行」误导——工作流已触发) + const execId = typeof r.execution_id === 'string' && r.execution_id + ? r.execution_id + : (typeof r.id === 'string' ? r.id : '') + return execId ? t('aiTool.workflowTriggeredShort', { exec: execId }) : '' + } default: return '' } } @@ -1204,6 +1413,64 @@ function toolResultSummary(tc: AiToolCallInfo): string { word-break: break-all; } +/* -- run_command 结果:命令行(常显) + 可折叠输出 -- */ +.ai-tool-cmd-result { + margin: 0; + border-top: 0.5px solid var(--df-border); + font-family: var(--df-font-mono); + font-size: 11px; +} +.ai-tool-cmd-line { + display: flex; + align-items: center; + gap: 6px; + padding: 6px 10px; + background: rgba(61,219,160,0.04); +} +.ai-tool-cmd-line--failed { + background: var(--df-danger-bg); +} +.ai-tool-cmd-prompt { + flex-shrink: 0; + font-weight: 600; + color: var(--df-success); +} +.ai-tool-cmd-line--failed .ai-tool-cmd-prompt { + color: var(--df-danger); +} +.ai-tool-cmd-text { + flex: 1; + min-width: 0; + white-space: pre-wrap; + word-break: break-all; + color: var(--df-text); +} +.ai-tool-cmd-toggle { + flex-shrink: 0; + padding: 2px 4px; + border: none; + border-radius: var(--df-radius-sm); + background: transparent; + color: var(--df-text-dim); + font-size: 10.5px; + cursor: pointer; +} +.ai-tool-cmd-toggle:hover { + color: var(--df-text); + background: var(--df-bg-hover, rgba(255,255,255,0.06)); +} +.ai-tool-cmd-output { + margin: 0; + padding: 8px 10px; + max-height: 160px; + overflow-y: auto; + background: rgba(0,0,0,0.18); + color: var(--df-text-dim); + white-space: pre-wrap; + word-break: break-all; + border-top: 0.5px solid var(--df-border); +} + /* -- UX-260617-14: 审批 loading 超时兜底 toast(复用 AiChat 同款视觉 token) -- */ .ai-tool-toast { position: absolute; diff --git a/src/components/ToolCardList.vue b/src/components/ToolCardList.vue index d3d6aab..ec523ec 100644 --- a/src/components/ToolCardList.vue +++ b/src/components/ToolCardList.vue @@ -1,9 +1,9 @@