From d9153b13bb703a19a8ce94f68c915c5d613f87bb Mon Sep 17 00:00:00 2001 From: liubiren Date: Tue, 20 Oct 2026 20:52:18 +0800 Subject: [PATCH] 1 --- agent/application/application.py | 2 +- agent/application/pages/login.py | 4 +- agent/application/pages/task.py | 12 ++- agent/application/pages/workbench.py | 73 ++++++++++++++-- agent/application/states/auth.py | 94 ++++++++------------- agent/application/states/database.py | 2 +- agent/application/states/sidebar.py | 14 ++- agent/application/states/task.py | 84 ++++++++---------- agent/application/workshop/web_retrieve.py | 6 +- agent/assets/styles.css | 7 ++ agent/database.db | Bin 614400 -> 827392 bytes 11 files changed, 169 insertions(+), 129 deletions(-) diff --git a/agent/application/application.py b/agent/application/application.py index 7421924..ed75d9a 100644 --- a/agent/application/application.py +++ b/agent/application/application.py @@ -23,7 +23,7 @@ app = rx.App( } }) """ - ) + ) # 点击链接在新标签页打开 ], stylesheets=["/styles.css"], style={ diff --git a/agent/application/pages/login.py b/agent/application/pages/login.py index 6b918d7..2b889fd 100644 --- a/agent/application/pages/login.py +++ b/agent/application/pages/login.py @@ -61,8 +61,8 @@ def login_page() -> rx.Component: rx.button( rx.text( rx.cond( - AuthState.resend_captcha_code_countdown > 0, - f"{AuthState.resend_captcha_code_countdown} s", + AuthState.countdown > 0, + f"{AuthState.countdown} s", "获取验证码", ), line_height="16px", diff --git a/agent/application/pages/task.py b/agent/application/pages/task.py index b87bc70..6550b3a 100644 --- a/agent/application/pages/task.py +++ b/agent/application/pages/task.py @@ -587,8 +587,8 @@ def message_history() -> rx.Component: height="28px", width="100%", cursor="pointer", - # 点击事件:显示当前任务删除确认 - on_select=TaskState.toggle_task_delete_confirm( + # 点击事件:显示任务删除确认 + on_click=TaskState.toggle_task_delete_confirm_open( True ).stop_propagation, style={ @@ -652,9 +652,9 @@ def message_history() -> rx.Component: width="240px", padding="16px", ), - # 显示绑定:显示当前任务删除确认 - open=TaskState.is_task_delete_confirm_shown, - on_open_change=TaskState.toggle_task_delete_confirm, + # 显示绑定:显示任务删除确认 + open=TaskState.is_task_delete_confirm_open, + on_open_change=TaskState.toggle_task_delete_confirm_open, ), align_items="center", gap="4px", @@ -856,6 +856,4 @@ def task_page() -> rx.Component: # 渲染... width="100%", height="100%", - # 挂载事件:恢复任务状态 - on_mount=AuthState.resume_task_state, ) diff --git a/agent/application/pages/workbench.py b/agent/application/pages/workbench.py index 665f824..90fd0fc 100644 --- a/agent/application/pages/workbench.py +++ b/agent/application/pages/workbench.py @@ -159,13 +159,64 @@ def sidebar() -> rx.Component: rx.alert_dialog.root( rx.alert_dialog.trigger(rx.box(height="0", width="100%")), rx.alert_dialog.content( - rx.alert_dialog.title("确认退出登录?"), - rx.alert_dialog.description( - "退出登录不会丢失任何数据,你仍可以登录此账号。" + rx.vstack( + rx.text( + "确认退出登录?", + line_height="24px", + font_size="var(--prismui-font-size-3)", + font_weight="var(--prismui-font-weight-3)", + color="var(--prismui-color-1)", + margin_bottom="16px", + ), + rx.text( + "退出登录不会丢失任何数据,你仍可以登录此账号。", + line_height="20px", + color="var(--prismui-color-2)", + margin_bottom="24px", + ), + rx.hstack( + rx.spacer(), + rx.hstack( + rx.alert_dialog.cancel( + rx.button( + "取消", + style={ + "_hover": { + "background": "var(--prismui-background-color-9)" + } + }, + ) + ), + rx.alert_dialog.action( + rx.button( + "退出登录", + color="var(--prismui-color-9)", + width="80px", + background_color="var(--prismui-background-color-6)", + style={ + "_hover": { + "background": "var(--prismui-background-color-7)" + } + }, + ), + # 点击事件:退出登录 + on_click=AuthState.logout, + ), + ), + justify_content="space-between", + width="100%", + ), + gap="0", + width="100%", ), - rx.alert_dialog.cancel("取消"), - rx.alert_dialog.action("退出登录"), + width="480px", + padding="24px", + border_radius="var(--prismui-border-radius-7)", ), + # 打开绑定退出登录确认打开状态 + open=SidebarState.is_logout_confirm_open, + # 当打开状态变动时绑定切换退出登录确认打开状态 + on_open_change=SidebarState.toggle_logout_confirm_open, ), # 渲染系统图标和名称 rx.hstack( @@ -221,6 +272,7 @@ def sidebar() -> rx.Component: width="100%", background_color="var(--prismui-background-color-3)" ), rx.hstack( + # 渲染用户中心 rx.popover.root( rx.popover.trigger( rx.hstack( @@ -274,6 +326,7 @@ def sidebar() -> rx.Component: border_radius="var(--prismui-border-radius-3)", ), rx.vstack( + # 渲染退出登录 rx.popover.close( rx.hstack( rx.icon( @@ -290,12 +343,17 @@ def sidebar() -> rx.Component: padding="5px 8px", border_radius="var(--prismui-border-radius-3)", cursor="pointer", + # 点击事件:切换退出登录确认显示 + on_click=SidebarState.toggle_logout_confirm_open( + True + ).stop_propagation, style={ "_hover": { - "background": "var(--prismui-background-color-2)", + "background": "var(--prismui-background-color-9)", }, }, ), + width="100%", ), width="100%", padding="8px", @@ -308,6 +366,7 @@ def sidebar() -> rx.Component: background_color="var(--prismui-background-color-9)", ), ), + # 渲染消息中心 rx.tooltip( rx.box( rx.icon( @@ -376,4 +435,6 @@ def workbench() -> rx.Component: width="100%", height="100vh", ), + # 挂载事件:恢复认证状态 + on_mount=AuthState.resume, ) diff --git a/agent/application/states/auth.py b/agent/application/states/auth.py index b36ba17..e4212a1 100644 --- a/agent/application/states/auth.py +++ b/agent/application/states/auth.py @@ -6,14 +6,14 @@ from asyncio import sleep from email.header import Header from email.mime.text import MIMEText import re -from typing import AsyncGenerator, Optional +from typing import AsyncGenerator from aiosmtplib import SMTP, SMTPException import reflex as rx from reflex.event import EventCallback -from application.states.task import TaskState from application.states.database import DatabaseState +from application.states.task import TaskState # 验证码HTML模板 CAPTCHA_HTML_TEMPLATE = """ @@ -35,8 +35,8 @@ class AuthState(rx.State): captcha_code: str = "" # 验证码已发送 is_captcha_code_sent: bool = False - # 再次发送验证码倒计时 - resend_captcha_code_countdown: int = 0 + # 倒计时 + countdown: int = 0 # 协议同意状态 is_policies_agreed: bool = True # 错误信息 @@ -44,22 +44,6 @@ class AuthState(rx.State): # 登录中状态 is_logging_in: bool = False - # 设置悬停卡片打开状态 - is_settings_hover_card_open: bool = False - - # 数据库状态 - _db_state: Optional[DatabaseState] = None - - async def get_db_state(self) -> DatabaseState: - """ - 获取当前数据库状态 - :return: 当前数据库状态 - """ - # 若数据库状态为空则获取数据库状态,否则直接返回当前数据库状态 - if not self._db_state: - self._db_state = await self.get_state(DatabaseState) - return self._db_state - @rx.event def reset_error(self) -> None: """ @@ -112,34 +96,34 @@ class AuthState(rx.State): 邮箱为空或再次发送验证码倒计时大于0时禁用 :return: bool """ - return not self.email or self.resend_captcha_code_countdown > 0 + return not self.email or self.countdown > 0 @rx.event(background=True) - async def countdown_background(self) -> None: + async def background_countdown(self) -> None: """ - 倒计时(后台任务) + 后台运行倒计时 :return: None """ async with self: - self.resend_captcha_code_countdown = 59 + self.countdown = 59 - while self.resend_captcha_code_countdown > 0: + while self.countdown > 0: await sleep(1) async with self: - self.resend_captcha_code_countdown -= 1 + self.countdown -= 1 @rx.event(background=True) - async def send_captcha_code_background(self) -> None: + async def background_send_captcha_code(self) -> None: """ - 发送验证码(后台任务) + 后台运行发送验证码 :return: None """ async with self: - # 获取当前数据库状态 - db_state = await self.get_db_state() + # 获取数据库状态 + database_state = await self.get_state(DatabaseState) # 创建验证记录 - captcha_code = await db_state.create_captcha_record(email=self.email) + captcha_code = await database_state.create_captcha_record(email=self.email) # 构建验证码邮件 message = MIMEText( @@ -174,15 +158,16 @@ class AuthState(rx.State): if not self.validate_email(): return - if self.resend_captcha_code_countdown > 0: + # 若倒计时未结束则不允许再次发送验证码 + if self.countdown > 0: return # 标记验证码已发送 self.is_captcha_code_sent = True - # 同时触发发送验证码和倒计时后台事件 - yield type(self).send_captcha_code_background() - yield type(self).countdown_background() + # 并行处理:后台运行倒计时与后台运行发送验证码 + yield type(self).background_countdown() + yield type(self).background_send_captcha_code() @rx.event def set_captcha_code(self, captcha_code: str) -> None: @@ -202,14 +187,14 @@ class AuthState(rx.State): self.is_policies_agreed = not self.is_policies_agreed @rx.event - async def resume_task_state(self): + async def resume(self): """ - 恢复任务状态 + 恢复认证状态 """ # 获取任务状态 task_state = await self.get_state(TaskState) # 恢复任务状态 - await task_state.resume_task_state(user_id=self.user_id) + await task_state.resume(user_id=self.user_id) @rx.event async def login(self) -> None: @@ -238,11 +223,11 @@ class AuthState(rx.State): self.is_logging_in = True - # 获取当前数据库状态 - db_state = await self.get_db_state() + # 获取数据库状态 + database_state = await self.get_state(DatabaseState) # 核验验证码 - if not await db_state.verify_captcha_code( + if not await database_state.verify_captcha_code( email=self.email, captcha_code=self.captcha_code ): self.is_logging_in = False @@ -250,41 +235,32 @@ class AuthState(rx.State): return # 创建用户记录 - user_id = await db_state.create_user_record(email=self.email) + user_id = await database_state.create_user_record(email=self.email) # 获取任务状态 task_state = await self.get_state(TaskState) - # 恢复当前用户的任务状态 - await task_state.resume_task_state(user_id=user_id) + # 恢复任务状态 + await task_state.resume(user_id=user_id) self.user_id = user_id self.email = "" self.captcha_code = "" self.is_captcha_code_sent = False - self.resend_captcha_code_countdown = 0 + self.countdown = 0 self.is_policies_agreed = True self.error = "" self.is_logging_in = False - @rx.event - def set_settings_hover_card_open(self, is_settings_hover_card_open: bool) -> None: - """ - 设置设置悬停卡片打开 - :param is_settings_hover_card_open: 设置悬停卡片打开状态,True 表示打开,False 表示关闭 - :return: None - """ - self.is_settings_hover_card_open = is_settings_hover_card_open - @rx.event async def logout(self) -> None: """ 退出登录 :return: None """ - self.is_settings_hover_card_open = False # 设置设置悬停卡片关闭 - task_state = await self.get_state(TaskState) - task_state.user_id = "" - task_state.tasks = {} - task_state.task_id = "" self.user_id = "" + + # 获取任务状态 + task_state = await self.get_state(TaskState) + # 重置任务状态 + task_state.reset() diff --git a/agent/application/states/database.py b/agent/application/states/database.py index ab2f741..951f1dd 100644 --- a/agent/application/states/database.py +++ b/agent/application/states/database.py @@ -167,7 +167,7 @@ class DatabaseState(rx.State): """ 核验验证码 :param email: 邮箱 - :param code: 验证码 + :param captcha_code: 验证码 :return: 核验是否成功,True 表示核验成功,False 表示核验失败 """ async with rx.asession() as session: diff --git a/agent/application/states/sidebar.py b/agent/application/states/sidebar.py index 131fc23..c2df10e 100644 --- a/agent/application/states/sidebar.py +++ b/agent/application/states/sidebar.py @@ -15,6 +15,9 @@ class SidebarState(rx.State): # 选中的导航按钮,默认为创建任务 nav_button: str = "create_task" + # 退出登录确认打开状态 + is_logout_confirm_open: bool = False + @rx.event async def set_nav_button(self, nav_button: str): """ @@ -32,7 +35,7 @@ class SidebarState(rx.State): @rx.event async def set_task_id(self, task_id: str): """ - 将指定任务唯一标识设置为当前选中任务 + 将指定任务的唯一标识设置为当前选中任务的唯一标识 """ self.nav_button = "" @@ -40,3 +43,12 @@ class SidebarState(rx.State): task_state = await self.get_state(TaskState) # 将指定任务唯一标识设置为当前任务唯一标识 task_state.set_task_id(task_id) + + @rx.event + def toggle_logout_confirm_open(self, is_open: bool) -> None: + """ + 切换退出登录确认打开状态 + :param is_open: 退出登录确认打开状态 + :return: None + """ + self.is_logout_confirm_open = is_open diff --git a/agent/application/states/task.py b/agent/application/states/task.py index f062645..538d61c 100644 --- a/agent/application/states/task.py +++ b/agent/application/states/task.py @@ -51,26 +51,12 @@ class TaskState(rx.State): # 临时用户提示词 temporary_user_prompt: str = "" - # 当前任务删除确认显示 - is_task_delete_confirm_shown: bool = False - # 上一次任务删除确认显示日期时间 - last_task_delete_confirm_show_at: float = 0 + # 任务删除确认打开状态 + is_task_delete_confirm_open: bool = False + # 任务删除确认打开日期时间 + task_delete_confirm_open_at: float = 0 - # 当前数据库状态(私有变量) - # 私有变量:reflex 约定以 _ 开头的变量为私有变量,后端不序列化,前端不可使用 - _db_state: DatabaseState | None = None - - async def get_db_state(self) -> DatabaseState: - """ - 获取当前数据库状态 - :return: 当前数据库状态 - """ - # 若数据库状态为 None 则获取数据库状态,否则直接返回当前数据库状态 - if not self._db_state: - self._db_state = await self.get_state(DatabaseState) - return self._db_state - - async def resume_task_state(self, user_id: str) -> None: + async def resume(self, user_id: str) -> None: """ 恢复任务状态 :param user_id: 用户唯一标识 @@ -80,12 +66,11 @@ class TaskState(rx.State): if not self.user_id: return - # 获取当前数据库状态 - db_state = await self.get_db_state() + # 获取数据库状态 + database_state = await self.get_state(DatabaseState) # 查询当前用户的任务字典 - self.tasks = await db_state.read_tasks(self.user_id) + self.tasks = await database_state.read_tasks(self.user_id) - # 遍历所有任务若最后一条消息未审批则将该任务和该消息正在运行设置为是 for task in self.tasks.values(): # 最后一个消息 message = next(iter(reversed(task.messages.values())), None) @@ -157,20 +142,20 @@ class TaskState(rx.State): return f"更新于 {task.last_run_at.strftime("%Y-%m-%d %H:%M:%S")}" @rx.event - async def toggle_task_delete_confirm(self, is_shown: bool) -> None: + async def toggle_task_delete_confirm_open(self, is_open: bool) -> None: """ - 切换当前任务删除确认 - :param is_shown: 显示当前任务删除确认 + 切换任务删除确认打开状态 + :param is_open: 任务删除确认打开状态 :return: None """ # 当前日期时间 - now = datetime.now().timestamp() - # 根据当前时间与上一次任务删除确认显示日期时间间隔防抖 - if now - self.last_task_delete_confirm_show_at < 0.2: + current = datetime.now().timestamp() + # 根据当前时间与任务删除确认打开日期时间间隔防抖 + if current - self.task_delete_confirm_open_at < 0.2: return - self.is_task_delete_confirm_shown = is_shown - self.last_task_delete_confirm_show_at = now + self.is_task_delete_confirm_open = is_open + self.task_delete_confirm_open_at = current @rx.event async def delete_task(self) -> EventSpec | None: @@ -185,20 +170,20 @@ class TaskState(rx.State): if not task: return - # 获取当前数据库状态 - db_state = await self.get_db_state() + # 获取数据库状态 + database_state = await self.get_state(DatabaseState) # 更新任务记录 - await db_state.update_task_record(task.id, is_deleted=True) + await database_state.update_task_record(task.id, is_deleted=True) del self.tasks[task.id] - # 获取当前侧边栏状态 + # 获取侧边栏状态 sidebar_state = await self.get_state(SidebarState) # 将创建任务设置为导航按钮 sidebar_state.nav_button = "" # 将空设置为当前任务唯一标识 self.task_id = "" # 将任务删除确认显示设置为否 - self.is_task_delete_confirm_shown = False + self.is_task_delete_confirm_open = False return rx.toast.success("删除成功") @rx.event @@ -289,19 +274,18 @@ class TaskState(rx.State): """ from application.states import SidebarState - # 获取当前数据库状态 - db_state = await self.get_db_state() - - # 若当前任务唯一标识为空则创建任务 + # 获取数据库状态 + database_state = await self.get_state(DatabaseState) + # 若当前任务的唯一标识为空则创建任务 if not self.task_id: - # 获取当前侧边栏状态 + # 获取侧边栏状态 sidebar_state = await self.get_state(SidebarState) # 将空设置为导航按钮 sidebar_state.nav_button = "" # 创建任务记录再添加任务 self.tasks.update( - await db_state.create_task_record( + await database_state.create_task_record( self.user_id, self.temporary_user_prompt ) ) @@ -354,7 +338,7 @@ class TaskState(rx.State): task.awaiting_stream = True # 先创建消息记录再添加消息 task.messages.update( - await db_state.create_message_record( + await database_state.create_message_record( task_id=task.id, message=Message( type=MessageType.USER_PROMPT, @@ -368,7 +352,9 @@ class TaskState(rx.State): index_map_to_message_id: dict[int, str] = {} # 查询消息历史列表 - message_history = await db_state.read_message_history(task_id=self.task_id) + message_history = await database_state.read_message_history( + task_id=self.task_id + ) # 使用量 usage = task.usage @@ -644,7 +630,7 @@ class TaskState(rx.State): # 更新使用量 task.usage = result.usage # 更新任务记录 - await db_state.update_task_record( + await database_state.update_task_record( id=task.id, last_run_at=task.last_run_at, usage=task.usage, @@ -652,13 +638,13 @@ class TaskState(rx.State): ) # 创建运行记录 - await db_state.create_run_record( + await database_state.create_run_record( task_id=task.id, new_messages=result.new_messages(), ) # 批量创建消息记录 - await db_state.create_message_records( + await database_state.create_message_records( task_id=task.id, messages=messages, ) @@ -780,9 +766,9 @@ class TaskState(rx.State): # 设置工作流 task.workflow = workflow # 获取数据库状态 - db_state = await self.get_db_state() + database_state = await self.get_state(DatabaseState) # 更新任务记录 - await db_state.update_task_record( + await database_state.update_task_record( id=task.id, workflow=task.workflow, ) diff --git a/agent/application/workshop/web_retrieve.py b/agent/application/workshop/web_retrieve.py index ea0d3ed..b38dc88 100644 --- a/agent/application/workshop/web_retrieve.py +++ b/agent/application/workshop/web_retrieve.py @@ -178,7 +178,7 @@ instruction = """ 无需联网:基础常识、数学计算、代码编写与解释、用户已提供完整材料的分析任务、无时间依赖的静态问题。 【检索硬约束】 -1. 最多**2轮联网检索**,严禁发起第3轮。一轮定义:单次思考决策发起1条检索Query;**单次思考步骤,最多只能生成1条检索query,禁止同一思考周期并行发起多条联网检索调用**。必须串行执行:执行1次检索,拿到结果评估之后,才允许在后续思考中决定是否发起下一轮检索。不允许一步同时调用多次web_search。 +1. 最多**2轮联网检索**,严禁发起第3轮。一轮定义:单次思考决策发起1条检索Query;**单次思考步骤,最多只能生成1条检索query,禁止同一思考周期并行发起多条联网检索调用**。必须串行执行:执行1次检索,拿到结果评估之后,才允许在后续思考中决定是否发起下一轮检索。不允许一步同时调用多次web_retrieve。 2. 发起新一轮检索前,必须评估已获取的检索摘要,现有信息足以回答问题则立即停止调用工具。 3. 禁止仅改写同义词、做语义几乎等价的重复检索;若存在局部信息缺失,优先从已有结果中提取可用内容,不要直接发起新检索。 4. 默认只执行1次真实联网检索;拿到检索结果后评估证据,满足以下任意条件,必须停止检索: @@ -187,7 +187,7 @@ instruction = """ ✅仅在以下4种场景,才允许执行第2轮检索: ①第一轮无有效检索结果;②回答问题必需的关键事实完全缺失;③权威信源之间事实存在明显冲突;④第一轮检索结果严重偏题。 第二轮检索必须瞄准明确的信息缺口,禁止全盘复刻上一轮查询。 -> 重要:第二轮检索执行完成后,无论信息是否补齐,都必须终止检索,不再发起任何web_search调用。 +> 重要:第二轮检索执行完成后,无论信息是否补齐,都必须终止检索,不再发起任何web_retrieve调用。 ## 二、时间与Query规则 时效判断严格以运行时传入的当前日期、年份、时区为准,禁止依靠模型内置记忆猜测时间。 @@ -217,7 +217,7 @@ instruction = """ ## 六、引用规范 引用编号区分检索轮次:S1‑1、S1‑2 代表第1轮检索结果;S2‑1、S2‑2 代表第2轮检索结果。 只引用回答中实际用到的资料。 -引用格式:`[参考 S1‑1] https://xxx`,链接必须来源于 **web_search** 工具返回结果,禁止编造链接。 +引用格式:`[参考 S1‑1] https://xxx`,链接必须来源于 **web_retrieve** 工具返回结果,禁止编造链接。 ## 七、输出规则 简单事实类问题:优先给出结论,附带关键证据与来源,回答简洁,避免冗余。 diff --git a/agent/assets/styles.css b/agent/assets/styles.css index 603fc1b..fd0a28e 100644 --- a/agent/assets/styles.css +++ b/agent/assets/styles.css @@ -131,6 +131,12 @@ pre, pre code { color: var(--prismui-color-7) !important; } + +.rt-AlertDialogContent { + font-family: var(--prismui-font-family) !important; + font-size: var(--prismui-font-size-2) !important; +} + /* DropdownMenuItem */ .rt-DropdownMenuItem .rt-Text { font-family: var(--prismui-font-family); @@ -150,6 +156,7 @@ pre, pre code { font-family: var(--prismui-font-family); font-size: var(--prismui-font-size-2); color: var(--prismui-color-1); + white-space: nowrap; height: 32px; width: 68px; background-color: var(--prismui-background-color-1); diff --git a/agent/database.db b/agent/database.db index 5c996555df8a7475e05ba36b3c16dc66571229af..c8ea0d3460f568ef95cdb1ed450e1b2dbadd69ff 100644 GIT binary patch delta 153788 zcmeFa33yxAbuKE9;2>HSPC3Q1XZ z>aT}`I1eC2iie{_QluzR;!KGoz#&Qd-tFs6U)|pJeYgEOBr(o8K)>GWPWRrt_xdI8 zUwa>bAV`gtt@c%kOoBM)?6db;Yp=cLRrcdgmHpV<^2xhDvuV?&Kg53(_%Ee(r$h6Z zsqYW%`NZa}4{yr;!|e9#?`7}Y`cGRIw^ncc+SZ59+_P<~VBMU)>!Hn?_ZGN|OAdRA zpZnntbG$_b4u{oYbC`{0yTN2Mn2kDJA)#xx=GuA!z1YTxwIE@x_;>*mrR%fowm1DJ9?JoPw;xk{?U=2@h$~I*GY-{t@ zUuBEgo~^&P^~tSo%-pjrYirx@y>h>BttoG|rtNxYuO?}o*O+nUMh|T`-z^Cf&Y1bV zSN3AY*?+bv`+sHsQ}%z$j%5F9_WRj?ll>Rje})+cv$M6Sn>Cy1M<)HqXnX&_<5#=? zi%Iv>pXu7vOidd7(9(}o`jL{Fx_R^6Kz^F`g-u((xn(S?F8w|23n_i6DVhVD{;utw zZST$e-H{p1+_ukTp4H49c_6bX`zv30@nyI33y1ePUAye|)uCJllf~h~PJ|`tFtGvzng8{`poM8L1enEZO=6C(&Dy1 z65q?zJeih_k3*tcoB3qgR($*&aqs7~Po@#Ed_(-l=kak1KJIGE4*ZXY)qy84^u`09 z;sdu09973t@rPha>i;q0i`kD5U2nrQ9-_(K zPvd3NP+2reTAMQQNapVByHfDS|IxN(^7(tSpU$>r@5$bk{Y3U7*$-yllYJM4S=7w@ z*7OHk?6~U>D(=P4#fp3IbD@HUo2$4BKc_1;*IGy|L2D{4wIlEF1yuk$$M?}MxV#<1(VO_#+|syV|3&hj9|S+r^9OUIc)n9?z9=4 z*vW-wEO|5ET@>fB(a*7H=>w={oAL=D<&+xlML-G82P zA*DR!^%O%&s^%}}=8f7NnvN}+oo&DV)7|3Fzo4yY`-}hb_}tkqYd?`X_jfk!gISMc zzO?C$O+Vd~`9#M5lkr~0*^GBHzLBvr{nzP#mOh$ZCN_Ux`&;_EPTY0qu4nGLKkM(Z zew@{jbvWz!tnHis`{v)@+`ak8<}YsktxZ2oe=S{~o|5)oGyh2}d`|n&3(sjjvFY#A z#?y|ceLKyVmahG)RA=hel(2SMTdVz^)~d}){dwx;)W%d#N-(7*#h>!olzTN1&9bIl z^8<_7;I+GahPGe4w=+ePEk3qayKC-Wp40wkZCms`U5e&De&JsJ>mL4V+srTC`0z2<3rki5mq0? zHaA)*q+&FbvQIz*9>ZP_%Ttd4V=d1@ECkHo5$rh+gxt1RdaX3ofs+4=)jUp zZiCxt0UPr>yk>yYnrAd=w%|@d#UY)>{yY#cd1sN3Q)_-zgguxWId+&;}_x>Ha&w*_x@xC{g>T zcB9#2b$K;u>`oyjAUWJVJLcd8+D%rU!E40NJfqKT@t8GiQ^rLphtrCQT0Ow132ffy z_gURWx6kAAcr>XAuZPgZMWu}-B~1#yQ;5lDE-zkhw$q?_MAT-h#ROPcoj#3b?VuK? z856Z&^$@)vgPHRz7C#6t&!*Y5=1y!n0N>;=8C*`k*I;*AJPwz~3+nT2`i*+0IJkH7 z<2Bza(Bi)|{FgrWy@HIv!TYg6>3r<)^n z6LQBwI8+v1sFlUbQdw7czFzL^7ysmp_WlQ$CiSY(o@+GbnoKzklhJ51iue3VW4eF+ zC5ub^$^S^bUo`%6YP$H>sVRR>hl@C;({B#nw>3?(b<>uEcm2PaeodQZYui2B{&i2e zrd-I_x9^F&zjJqd1y|WA;?&=2_dFG;=#XnWuQ~m>w!NDR9;FF%ivQTEJvH~Ww3Lfk zVwNX;|J?T{(_Yg)g-cyA0@INc@#h~d(Cy!mh}!)-p4IL3mL7$Q`i|~JU9pdpRrNi(LvD z!@j(Oz8u{vK3|@$v`AOta~FFL<>;P2S}K0^+v%Sao~2=Rhw}^aOKCMne8svS9`%)! z<`)%WTE3E_1sLibHVL2Gdq`L4JEl8Yl6V(x@|BkGaq1oWf*r!6L6t5_H z%U4Vb_ZAi6Q;D0s!6N{6#Xk4pe7uq1@{W$Z1yd+~Cr9_C{I`6CI(nMDl7Ll!ao9@S z7^&dMVPB~a57Deji;m=b^#Dc5p`xRQ^WsZ=@hQADuSi!^=!<=~zi@xyOTJQFflse~ zl?3(}diYkvwv39i`*(<~7t%i?esF)f>g8fzX>q>qE#Ff+^x|{r+K0v2ne+#*3^(G5+`1H7t2M`j zm6+_`#-2aoE-pRrW`1EF_B;*zj`)+|OkDzC=w=IqWKq+qbtVU=C5L_W3JH2LKp2uZ} zsY)eNyTvU2@UJ!c?Iyd$X@oSG}Jf)s+*M?pH zqZ!-9PZ+fK`F(|@Ir;c`knG=kynCE)f9aUJARi>?e(IUsyWcOXPejD~Wepq^CZpV2 zYc|Q^u*y%OgVm9NcH$$8?feOOIwT*j4KFmvVwL#oUuYi|q;pf@g_id#LuMSHJ*t)6 zWZ(6{Vz<&h6`miHhQ^ilOOcUkDKPndS-E_=Khn}DEltrkH9@JZ9A7H6Q_^rvq%IgK zZ>`{k}Sd1g?q8<8d!@r@8^2;i%5C?uDKq}t0$ zT}?O`)N^`^%|C?s>%;TqQfFOweu>`K+#oHTjrMlXn1N|&X-ulBq|ddT^1xYqzRFN&gZLcns*OyZ+lgOF>+&vqAxI;=(%B}ut!z{p8c~9S_#6pTMNf}N zBP%=Q#yV-FO`Z%W7u%KgklcJi3I=v5bqiAM1uPR2i;FHw`)PSL^vkkdr9=E>Ss&oc z7M+YMeK=GP6v<;}q{V?r3(qwfw*u08HsrTFqFTDDi!KpM{l*TV}G{`5$ z@M3)&PU=(c|4+qD05|D-3&i#ea;mKXm z^08<+!Jd{8YK^v)OHG6N$l!&@3jVcAJ*O~(@WMbi)Ew=(EG?EvBMn%(e6lJWY`}ZN zp$=(sO6r}A_EamOw(xwJvOEM}gy);0ef^QiDS!m`6LOWxvB*G~+}0%3mI+E<8SavM z%hul2pvU5s%F{~u1$h!AJQfZO<5{_~O78BEj|V_fN~lJfuLuWE0-DnNyq@M%6U2+9 zx(fUQ76=6^l}h;~{$g7E&~Zq|m@c1pv`pxZtkmE@R?Y{dK&RB$p_iskD$SGOV09c& z;rZrpa2jt1Wyrk^QUL2Mmn+Uh%BrxFaFi1qFtOvOmF03JR1XXfOM!ZV$ixD@w3TQ! zGJ6J8DV=DfS1%0EGjmgtPz%EEiYQ}W&W%T31fA?{v1EXFbFrIFYEKLw*CYtanOhj5djemsxwRE72)zPzc=jHhp`QiZJEcJrW zFSaTb3pCKoD1Bfc*GI^%c@^K<;doRxV)L0Nd)DTI<8X zvr=F}86A#{fN68SB&Z4_4iSvWaZk{z8^JyXKZ>60m4;>`ElWgh`SGEf8H zSIsChA!0(IUTg>=Oj_eeMR-w^s%jO03b>5XigdOjymXQt13w808*D12XCAoG^Bai` zjCO(v(GxwB(qJXV=QI%Q8{``d)I>;P6iCqQoFEEpsg8Ee;-DfR;wwITLI&G^>dqCg z8n$(#ouO!V`_shdYA5CTZm80PZ}um)M`U;;m(VT4z8qd=gS9s9eCBugD?* zugJXN z@VP`Z4U0-cEn6V|xY#P4nS7eQW(2H$&G{w4r>xdQIEYtiQmX9NrWVE7X#rR~3X z7PuzzI31LxD(I90>*pjo3o!#{DzUowo27-zV5^apB}`C$60D%6DbjEj1L-4WjR3XM z4z{}rB+Nw|cr5KP@vDugTLjk^zVaoYzW5(&zu8wL2XcuUnb!4V}VJA#7AT2A$V=H zYY@_(bm{_R2QK{yk@01)F)n&ZfhK8gTn|AKyE0A$(fNVsnNv!G7@36_L|2YMk{}#5hJZsZ4&Zy7WWcY=*~jYi(aI&r8LFrPF@c>$Qjeet30!cJT5*of z$4?%dy{r6vF@RAcla=9RQXXl-oznn`G+rzB_RwqV&r8iAC zki$rV;EMHpv$8A`3!|9E=0Y#7% z^(3G3Kf1B|ag281@CTT2PT_l;vZS&DKGk#h69TT>4duPJLxn$Zix=Po)s6LS|F;9$z+vdB&}2};~z<85Im&G zC4wL(c08coMOt3(X>40);4~uBaPbZ$6p)&$X@S_SVnW3KDx_sm8eYOb(xm#z z^dJ#JYTbz3AT)uY;$9W|{1}mYFJk==JL$tLOe7T$%;f$WkYO%_yA9+!X5Cx0MeHwJ zD^qN2Q-T_?U;Jsk_I{xx@9kqb`9I7*e3TinN)EY;eS6;crtzJZziE8?l^=cG_{ys< z|LEnt*A$@00OE{>jz?=+VZtGUW8CtwIyq7x6U-pGXs^%uV`d$K*ed-rGexS!b>6-QxdfsPp!Lu40QV-t%mwM3`O!7hI~mv|qW zipdUIh>TA_#cmg-)*H%Tp;%-7N;Z&fVD$nTuY?)~82uU;=;a9*)4CnG79;7^Lr~#J z^GY zh&8G)ie#IC%hDvSL1~`mN02Hf)Xc;rcY%DNszT6o0eb-F6cIgRg=9k(*16 zRgp6boRx!D$^G+qB(Af?4MWQGa-?C3uL5ik0+!ND`<5Sa;43)51e^)@il1q6%PH(v z@NcDmHrhGO*)-=Zk;_m731F+oSj?7+wM)z6Qd74SXjCqcwLl4;B?fSEQkt7qM$0jp z(zP6(uYnz?Q-UFpZCR%o3Pm;ja>#(TyDje@!Mfz!7CmsmOY)I%!%kfI^yh4d*T~P#okoI43ORoB$m;@Y%r!fccc{2%#}K(1K^6%8*zd z86S{pPrw+iKJ3H;CVGO*K|*YYB(gF+)Ov2NRJtIPR&(G_k>t!@+jC-cA-OVhp{b7#5l&41b)SI6qlM0pq}! z1E)D4g+!l*VKOm}pCS_wCPzcF#Yh1Nyk*jI6(L}<36Ub0fPk}x{-`HukV#bKI1%`{ zBUN37-CZ4<`Pnh)T$PH5>`Z2&yPjpp1{~|k2n@wUbC^B60MRbYo*bK)H%LnEDzA#6^o6bwiis8ZlJ@JIiJG8ahw!%tb%Z{Nq8dA^4 zhG4{q3_vri=6qhySIyCZGY(c@zzBHZQz1$s+lK(_wR(a9_Bfs3LF1YR$DCAk5$=v$ z2-*tR2!;WvbI9@a^JS|HB2XXS?JDvnyJ=L6F<*)KNVQBPXE@><>wN)lXIxL^jqGfa zu%^Wzlu05Zw(dC3B5GMP_7!G~^*D|FfMN4pnh#;Xy4hkh8ZiKLp^ea*`P908K=eVZaY6ODCajlGcJH zf)f*$Vbg_S7iTT0JOdYLGq8<^oq!!fJm>-`%>oDs%05kN9+sSP?r8uU0h!Q3*+Bff z!)H>?`{yC55V?aFBnqb7FRBcmB2DYMWm7>FP9c-xb&yY?YOKnq+*ulvLpKmZA(=O? z=g`<9O6WKl-}+8rdqzf%^D{!~8H{$4*_<0@BBz=pp`}(Gp1HFy97%<+0Q8lOaBGAf zE(xfYAdB#PM|edfo8n?8nID>Fa4)HZy=D9xPAeR_Fm*$q0+QsOK1fJ()-Tsb&%=O% zqxp+_ zEs`ih&ovVFXV!a62d~9WQYvADA&g?_{E&nlNm_(?zavW}-$;2km&Yhx!h48`WQdnQ zNLRjZ4??&~espM$i6R`$PSYNuYNN^M+GBN@tWF0q`eLSguIli(NgdY*iFYygF@Oci zIlzUh=wK^^(F3?BH8o?8tMV1(0riW-+v1Xz$zXJmq?Py@$gWK9OnT4bu|p5|EhEV! z#)0+RTf!gG6Zm2w1~fr|86^0#7#Xg}d5V|-9M|iP5RRVUo00&c26n_){1bpRq-4^L z>d96!jyO{6D0Ou_2qC<*0wGBc7KuFrV*=pdlbgXQDnZvxP;(+n7b8pL@RnOUA#KaG z9b{f&$1+q7IAQq+>{UCtQ(P6~5paO}qRUy-D*5wav&?nZgLpmpMm(DXD^5&nnQ>KXFX)%?3xQ;8%xpxiP~6l9J@Ay z#YEVBA`!iO1f$dBcw&Fy6Dm@fLd~g+U*{YXcU=7jV3bFjoSBq6h2~t29w;u#h5l6} zh0Z`eCH`Jk1*Cu~u-U-v2q$57P1ORHXcyuF&;lL-CpGW@a}?wgKpN)(hJa|v#{~|R zI>Ib&24bY~%4n`QPAcWZ-0H2^*8}HB`sqGyF_MH{O-y+8b>;1F4&yDWTQ#OU5d|6$ z_=QcG=PN}xpCP~SkiVob|81k);<7qjIeFKKJ5co%iTYiB_P6_)yrGK@UyFD@$h9AmWP{Ji?cx(0Ftl4&`1u7n(>-~z@l$gROll1>}rv^Rzs zA&J*wLw>B7d5V;Lpk@tbFbOW#VxQ$Ab|oCVnBasq?S1XbFIb<46WacQ>7}nEZIbn@ z4Z>&KJOm{MB7CH&MV0FLAuE+FDz(+}nQl0sRXb9W51O6DxD7^#?G&;9Zgh-!G8!7- zkUmaPeVxtZjsCRYFc_V*L7*Ix_Q9gUNcDi7NP=?E)|*H!O5?aPv`AMeKoBuXO%fun z0&_eb1uPN?460r9DyJIhre|ah_ZYrOciXy+xI zb};U8sN;Ae(IXBOVv=QxINU%huv385!Azsy0MLO^S?HYL3yh!Mbjo)hXTn$+%xn;G zD7cM>P?Gusk19^ip;1Um+@%4jNvggCMNAK25TR|*HaPs0>eF%s3;uz1t+f-z1bKRZ zG})CN2#*|2LMJdwmO>Uf_Bg3*6?N=|Lp2DQiiyb$$xy}q;y6e=$$*AL*s7qt5>Oc$ zg}Ao_mWw2HJ=B3Yl=aktCSS48(U@(Nn zHhYf08b)<^a`={(%DZ8mPG@08uc@g?q78xiGR<37nR{nl7>3F)5{LOhw zTnfKY`J1mik#}(^8z<=#5$MLJxIJ;56s}6?S9+W-CrID|PPyADfq%9#`XMCnshRYL zw_hzg<9_iuz4r07S%QunGZGSwPVpaqH}wl^vjpjq&0<;25}ZSp;A30j=`JT&*?>*r zue|ABpL=0C?X8p>PJeMBHP4J{6sR|0^dLRY=r*`a@LpI<$jY`M>lSIZN$D>(Khhc< z4!^MBAG44qh={rh+5ep!7&$Bni*y07~E`QCi@;anZ3U)`!h78znX9=@;R zep!1TTjOO7Fn4%u+t{1T+F zu`gdKD)q5+x4irkZ?W%)yU_biu8uh+bZ?dD1ob5^!+t{fdF)S?vX|%x;-dvc#d=+l3JaQrKfkyDiFK>cV8eW~=xDLmhh#0OW=N{})FcL@ z~3$z<2-65k8ZEVas=ZIqMrnE2eg8Ck;a-3Tj>j0c(al`L7{>}F%>V9vyQbueG* z%qATU2Sf*ObnV{#!6FnJF_!^|~ zIxsdi3K18ZId`srz2oS_3U}}3^rlNDxD#XaTufLIx7%7t22q z)_CpW2}r8#hh-YA1%TT4jg6snc4IF{zrqzwm_6rb40S9M$kD;mwH{lj2TYTvhVB0x? zg)xT?5*wNS1k7DfxjU(PY`aQzO&AQk4wK)%!^!xG$wB-izJE9~*uP`{4i{aHjY)DU z^9;f#M9#tHInEcjLlE=e&MK%234CfZ1|}~^O|@8_oBojXW?~G)#s93eJbM*Jq9Y&? z>t%3anSYoLabRqDlaYSdMdQ!3_kZgq_dmTLk%@0Sx){h!ziR`#)3u{0Xnby^TOHZx zpn2Qy1;-b6Da(U1$O-@_8Fge_Aq$T@M0>yl3$MwWe=iu!0gdm6ttNvCqT_IcEoFl&vq&sU^o?%VgsX96#*)@Qg%$rbTW-cR|I_{Vi= zx?5DoU`-i=>#t&vlXFP7_R%{v3~qf5gRCrG!9Z6cu$m5QK^`kmz-3@=5ZIBkCU-oC z3ME{(IIT+48wu0G%}LX@NSMyb64uGmSy|VRq_0nq&dS<*Jz}(QbvZgKYpoQ0T|#tD z_~D9_&8V#DDF5HRtGj>0GD_*Z;w0bxA3UD6MZD{m={s&Djs1S{FMpo$z->xnkE;`8 zgZ?;D*eQcu_=r;2VYuk8+F7Ate7i0?0ds4sT5U-zYjuZl|3@l5v&y&+-X!C$dbnZ} zBe2?%1OmHqF|<4M^&gYIu3sKifTcVpc*x%h?v!^f?yzHwv4Hv~9pxsG?M zs&CYGX5B!ptANDNRh1cPDGv#Q#(I;*H*PT3RX{M;EiJxrgS9t=q@oM)bV7Bh_ITU=Q-dMNctgaZy@$-T^*CF zmEI6;aqSH(hHc#IExjS!;@TVG8!WvcP_E^zs=bi~^B=|G&W7N1j>pShwep5Ql|A9( z{s?l`uPbF;xV5D>5_8sJhGmA@9sOtzNGP64cICzz=|4;=u)Z!aB(oxgx z_7&ft+8Y9|(4l%6KSc2jsPTh$3UK@zDZr7nHW=ZG^*6E%qNOqQ-v7u2II>{&7uH9E ztWTI;TcB2r-b@Vlz|nD~pxUd~-_S!@jKz7~j`|xBfyFz*x^#Q$Zv=$fTYp1_u?on$ zZS^-K;r7c*X_8+WR1 z+^M>8b5%D!o{Ae(a6`B~6*pi5K-b!&svArm`*&A$BkNWc-B=N*3Mkjfvk>vUCMPi= z%Z!pyuT^t{d_jn;T&?DC&5|3axN+cSN^WFbq2flCT5uyPq29(Cq5I!Uy^X9`$%O1Vx}VjE)7e@c6hLt~@i8Oj$qmYEWUZ^R0Zi={?iAQac1HXMM>uUg@yM;UTHLh4+tM5;rTYaYcEXt|m#_p<#H=Xg)&;-iPD0z|y8vhOYT;iGO;mN<6E zhxHcgd~Z|t=E8%z{6arEOds_ND6!!yi7ghzBQ|OswPF9tJ%`+d=fOp4!0D3G*!8-DZklw74hfBF zqstvAp;3fR(t3Ka8z4V|=F}LwM6Wx9*3>2RvzY!uoesaD7%(h2!s>6(1P>M$9V<-+zQO($^myFfL17K-kT@z2QLL5a51oUp$!8;7?;Jtc+a4mtgKfLxl7UP-0#jWMuTrq71eD4Rv4wCWjbvfbSE!xQ={=M)~U>k&n!Q=EM;J&1&Q0-8yJBZffC?`{#?O55~5P&R1A;^xz?C*dBW`>tfFTpgn${z_zi6HagqNZk-27PNgWSOJ!^rbUZ}N zG$eidrY@fr>CW^0kTx#>tfmhi!%S$Uym9+ckarBMxgf$aDS*OieWcxvDx(_!9c{;V&g<9)^UA3uK8ROtpo^y2H zJe+^{=10 zjpeDv4%YDky5;zfqN-3l(Yt`Xw7}=)4eTk`8t~_b199MYz#)q&(lYk#d*W_K?8I>! z{H8oQaq_$dw;6rFJ$AFnV>g;TR+ra^s-9k_#cc4}asDj-t#-#3(EEv)3o6~Q%3nOc zsOgOgEl#or?(TjtHm=R!aQje6!R9p@&=$jIz+hHip3#S9?`BF5v`~%yBpvdjFVGV& zX7hg8ixpW}*DlY4@bV8|orewb(H7^?3Ads+51Z&UYx7WPo;8(uDAYr^p~^h`MYpIh z539=~pu%0ek@&}3n1|&iqUAzTXYi{P=3(on;a$OABr?nJqTd)G_)DPMb5&V6ve8p9_U{yk>t=(LisW z*X~CtAA`s1uo$dnrxC@0a5nnAKBLLvMaO_VRy1(0W}mqCwe1SYNbp#2jvP%8S28Z zzON{w##+AKuv$jN-EKlLgRssuv)iPY`D2>dzXQdLK>T4;GXYB4El|y98aJh!30!?k zE=BlJt7q}|y{zhkWG0I%XtbJ}Qqk5FGmWdmG8%9+Tx2Elsi+|cLD0V$?H1u7QBfi z98p*g^|>)AWqF7du~)e&Z`A|hKz(}@Hie6jO30%)HO6c|ji-15lG;wQ_5$6xaGL)a zsS&6lFvL5m=17%PF+SV_Lh%x26dUICLLmQWml zWj?Gceu<{Htkkz8tZg6);3b+B>CI>!TTkV%(IAd;lM|Xm?cu$msMKpqD;K}16gn%1 znP`Uu5rtZ#Xs6NyR*AJHDsf`dA85B+yXb3#_eN?y4V5j0K0ep4z^yrfQPuDjRduA8aj>=n0Spm za323u(={U+UPXdB*(K6sYpkX$wIMsXA}vDcU177QP8#h~n8w)tDY#t_#l*Dg`)bm(^p2aIK;-Jw3r%G{o!g^1MvUlDEu#ADs-7TQp$Gm z;m6Xm#IH7{ZrQMi1MT`4^TBU%5L}lSPfK;QbCwtIrSk*lBSQtv5U0h$KoXtsY9dtO zxd-j2CpkNyHLyQ9D-h84gDB~EKx&=Ac2du-P!MhoYN`der-Tf6f)-=f0;4Na*)GFatB zY6U3GpOt4ui3PE8im?J6ivbws!^?<)EyoU&I*Fj9aU7aGXelbypGUwj+70q0U}czh zqQeOaOgZmV$oT{w1}8*|jX3*~FV|AL!g1DPsC5ZV$7luBlT!5@N>h;VN`d+{B3P`|H|Nk;0=3hwtV+x=1g2SwZ%*`O7t*%hRN5MCg}B&* zg>&zlikEBZdxWewgaoyqyH#a?sDyx-bAJl$QMFV%y)o_tWKz>r`nxj#q4O*xuvm3> zKn!K1Z3)Hqc{fq2t4{T$*#$GJk{#$QU&c!9OE=GH9Wcx?KXpPu%OIy zw5(e>w?dT1o6Dl};L0Sx1*AmkE95~Dg0%oq4k+6-1)Y6Cw)K?ADrbpMHTI$9n_PEkN`=Kp`A9?le$5z>Rw(ARD z`I6(Mm(Yj|{o!7*hB-46LYkni)|iPI0dx^O;nW)zbFdTW_XX@rCf+%{$qLbp^cb zxn@%i+7UWkCRV^ZLoMJf{^pg;?c&e18BacGcY4i6v?nn*?GCTO>i63Xt~`g`;Pj#M zsKbax@Gf(#g7-Ddn9rvBw7=S<{S`t;{=3%j=kM%G-?y)Plst7N*g!o7lh5WhILuz3 z!DDpf8PJjs3vyUZK8H=zd?Eem2R3xziGOlNdw)Vx7p%#cW3jo64!d~IuQaBFrY^Bd z769q2_I}a$&#CFu)Mb0>s$o|1V)}ORdw-Sw2iN>92cZv1OsrRNMs~$(3_=}m;2aG+xTam#Wlb78w$0R~*U=oIz*akDP z4fb23-H7V#aC2I1UUE$CMud^-gx*l=zA>fy26b-I+l1SwbCb%AqZh{_`ELLSI)<-T z@Xk1|ff~ z`kWAv!t`KOcNUr_(K!<);P3*qCHmNu=a}w{GH%j_ah1bz8qn#CipdnNS{!n!S|@GuM|9bBs22*QYSkBxC9_X7ypT<+!pee5~4X zOj%yll^+#ruBt1)-IMP6(7N(R9#!+`_3Fy;2%Oh$c?3=!G_doc`*Udz&F#uec{V|j zTcfWnq+UA;hcq?6kJL3Q)GNC$&yZ)fJM8#jw<0_yDGJBzu;!T^Ua!G}2BK))>A|Nw zJNj+eJSMw2&+qb?oJmnQ4lBNQqP?fnBlhDh&tLr+B8yAgSfFxqzz#f3hEo>Qs@b*CtNtLX4szIeQQ zvCm7f?#GIXky~=42+`pl^a$0x{Lbo#F^J|SP1Mk^(`+=k(42ED0Nn?Sc}{t zDoY|y6EV+X!)>uj|KOv0Y( zv~woBI15h>zYR1y8oL@11M;OgG~!c7u*C*$Q0f|^mFJ?Jum?A=fuy#xA1sz*6ypBf zHPU=vw5tbR(b#pgdq;O?{FBDSyA3HB0((knSd_IzYyz=OQcoG(teeRF^T?c6NBSzMLCaHfd<^kzN)93j>=l~ zb7&T=(xaWza`!ApJ%jUCXiMkvtO*R5xYKkyk#$qVBlEHQ3AaP%>0b*R9QABov`)6A zcjXAWSBY8hIQ}C?fNaJza&j0D&}%eW)^9SJ@R)Ar>u#hey^-%JVr_5>u*Ikk?zi&Y zMY?Yz^+j8#iwWMQU6!ej_)~AVg6oO%a^AI;-i73bgE5Y2rLBOgw=Rz7oK2j!dH<-(M z{v!Ao^8(lM_>juw(|M1UqAi(TM;Rh)CvaAB6k`;ZB5?)LF)AY~V#!SI!+2KBn4xD_ z))zu~-r10EF($@YT#oL`MaO)?TRs31`6|dND{=e5U_C_`1!-DGk$A(>;nuJ;+MPB7 zO$@}%GgvS}z8^de*o>VOY|fN=##wGL@pNRj0Ak7Mass$KQgy)bS!-la08vdsO%aBE z^?kUsAs;|9>E$XU2B`ZMp6_6_6qv)Ke7mmgTu(DCDgmV31wNg?a`;sEskwNJaMons z`11>a!B|p{?pS{5A%YTrOt14Fb{{-QiFCA?kqkpez@DRp$bce>F7*{4Q3wbDh(QWP z1xQ&#?ul-%xAdr60Q!(+6a#mGyA%ful7GI67pk-3Fg)Ztd<5WR{hkwc_F?1%fdbW2 zk`miu*?j=^J9yymVPLcvcjf8a2O0f*3B<{9v42ONpe8}F{3k@&VLO1LijJX!HE@O0 znjfkgh^Imk21|>M;D97jE-LV`GrBatz-IvAmmoI^gufGa@|hS*M1qY6uWf*UVo0RM6U`hODz(>o3x&Cg>~03ny46>NXBw+wxS;ckUFB8i(`OyhD?U<(=_koW}F<6Iu-`i@%v(tSbcvjsbNIofA)3O)O&*jJ0j# z&A;G&XN6xAa3QtShL?JE@kY72IB(S9d#SB_{|*XE`%LOFpQq#Dj8A+Wuq}RP{|@3! zR~T%gvEcoJCm8BDai>^QUj72HJWcz^_9EA--!9r)^u`-67rge3&pTdx>BS?ZPN&@_ z{^YZ%+ds9#m}kv%Tdfv@*+-2~9dPP6eJshyX!3a6jy#j!CJv-z_)^Vgv-ra?P0n^R zPD=Z_#;kUSc+Yn?znN;sZOpMlAL5Rkd$&Dbt}!l1oRD99-(I&?G#n|Y6WkIiAXo9sr5>43>>GFk05qj3+_Lye!m zI7aylaH_}y)xcXgSRFry(CiAvyWP7#yT|>^PBL!v2IZDsrJ)7X{(fZ$ybs^U zK8xfMpAX&(k1YvTlY!`TZ=`|>?~7BHQM#3e=jRsQkaS|fqJeLqpHpm6Ey*tY8>yyW zYN`y+*HB0U#Dk&Z)cU-A8H4gtO}G=W8n_KIV4UFe2$BHNVKO`h0+NGNCyd~sq}Ng$ zNvIHN~*x#-!hXj^ZjW=tJ^tewIIhdZQsl2!C_ z@5S)KS?mZQa<*I!1f*(2mLMK$C_FzZO}0Y8$8%EEam3X?E6^jd58bKxq~Ni}vdL8y zJPRX>Qi0yr!AR4Hv~bdU1k=JQxg#7AF%&Q|dpf)*Qt$-^48SN#VaKE%&L@EPIx(Gy8O$r%9e{{Pjbr+t zTL4iUW}KGeLK2*OO0!TSRb7UyP+GVQU_~!<5|v1SQJ{tU6V-<%r^1Wf@(Bc)fUF4m z^7y6j(hL$-3FKW%SSAI#FaeCi5mUc9g+h_JAPFt7j5AD3PRY{)Qgu_}ED_p-y{1fs zIJ3mSde|~Sp9J&JVx$f;sh65&(e_CSfM|z#R9WJ3F+Jd48tUd>0`lG?$~0=yG5Q%7 zKyg8S2?4xPZ8f$tUV{K$!dC)l@KSx^xGET9+?@6d4OA`74P&wdMP&paY>?}y&w3o~ zJn9MU#ng2Q9Pr`L8N^EPSUd8J)s?}3CIuKa*wCbNM=O_bjUOghM{Fq2;XE7_J)DS$ z4$hf*RqBoX4%uoY@i1!W>e^#%}7Ou`3Z zDuxpIYFB6i}h<&rfx zCvFp$MASOXOTbxmdpIO#kOG0`ws1(!Acfn;A<5E;GiZ$lY<-YiH7x_yr2OotWKq0KtZl3bdR&9vPn?rYTKL@vl_Y zDI~v~^G}Px2vO5Qa%R#SxamYXIjm~<@k#Lu?EJXI1z8;|Hsx2jo(l%HC6R-XDUO(0 z-wC;McsE2&CYfH*3Wi(b);fHS^p;_DI33}HlE%&=7=k|@x7*babn_c^eGRB_xzpaw+`Y;c&Q7J)T3?@j(@qaMn2ia-vna= zu0hCDUkr0?|7@h8NjXnF1o0#Sb(PvF<@|~~I0i`@cbaqM-db1zaiRls;oy+mMAO!h z5Px5i5Xt3kh=@A5c2pi4gg#)x5EhJ}_E90%WOD<_AWhxzcuLASYQa0E=#Ym2Bu74Y!iWJJBvTEb45rr<^9EglPSR7P{7ZG14-uSDMcQzjAGWKOGK2ly3s; zArb2#lSU@WiQ{m=1p?FX62vkXyCFU3?5o4NqC(7fKvtys)6)2?&JnxrGMnU?NvUTk zHrZ~SQ@v(_t#XgiEH%+uKvq&a3As8~?6TSHj8rXSLz3cFRYx>=DWEeM*>$tgXfm0k z<#C`;fV3?Q^}^46UYa_|<6?7Rr0gZk%L^TNgVc0^HXG#pDWr=~L^=>14qm_uX;Jg_ zdJ3wYuY`c6lFORsnr2uV%6hr8A20?DASjj#s1%1TOioFSRZ`1^Ric6!7(nSlCJi$> zK>n+34KJSsQPS>8u!ggSxq*7Vx3Ds~@0>D=qzd&h$ec(fBB%QC)BIt+tJZ9)L$qls z)FKBeC4@$Z_CWUhBu(0=00fNj1h$rD{cZ&LLU=|d1%z)-^U8%&a(x*FCA&$eSshBx zcH3Q)<`v|_ikh*E2LvTJhkpoFMj;Bl+(0qJfFsG+lL59{gUI^PN1ErPWuUrRhDUy= z8yA=!K!U!GvM0vQK+W3E`bYl0>sGz_>D7BT2@SZkpeI-tl^{tl%%hah{3jm0p&IE_G_6sh; z)7A+G+a&|j-enPNEQo9jxvvE*wu@2*L4?6pxOwEM)AD41#ghibfydGw{Cp{_(eQQe`fcuCq2pZmWv z9?0WF%++6H^+Dx_5{#n-KN0#P)sIT`WcvVjCh{H{f!ckMQ?-1y7gVka7~v2+O~{Cu zMO~-3Y+*B)93)$aUoXpeP#6OjmCj8O3-5&?1xa)@Qb1Hrorl$e-T=B>YQm03%nWhU z)=t1xwb_K4v0q^ULe`Oj*reWbdZf)s%>YkzWPG0QM!B&Sg`sf>!JHN?uOS^-?ii!k zM;;$2;CRCN#>k`r%^VW|0#?mbazm5c3fJa3YgP}kB__z?!)_+5wlsks;6*SmNJty3 z?};ogV`jt}z*%vIUFd{y39s2-7^h;DsNP3DwWC+sbz#) z;2_@63*&54kgCps0#M6Ts_vJniKvkO%e*!fah}9y!ja1Xg-jIq@DdltN5tb~OaqL_ za1z4}Nq4a7z8&9WoEOsNA!zal)p3{qkK<5e617C2l%|Ixu-sceysc(#)xBg|CR(Tm0CH^xiwc@S535@Ock z1uIEDIIv6D=H!IP*cRm)K*B|KA*@w205gYT=R+VOaByyX1%ool2rYEDLv_+4uR~?E zjQ5&s-pn7$nm>_VS3{4;B8q$)`1{MWg0tSvyg~-Y(D~t1w{e{skNE+n)pe-3B%+p>Q z>VV)LV`H(sh8Za%6Y{BY>@~_dtGcN4)T4tta=d9BRkczFjvyL>V}bAw$yx4MCSJjw zp^Xkb?cxBInfSaOvMp*rfJ;PXFHov)@1)d7s)jUno}`MlcmRL|JjAvE?Skv1UZR_xdBk1<6-YxQ zIR^lM$THRfj;asq*%1Qh@%jsdEzZx7rHd|&Oy&U62G&+zoyaoG|EVBb|dtJ0O=&@Q_xpSvt^A;|RNQlA?9g z+LTOfpd`}<#0^zoZDyP$W-?&Fgou$Y*J2E1QP=xZ;UG?-SNt10f_G6*OJkpY$#6!$O&pYl`Gf zh@mXDPHDJEHl*6i@VF2m1%@JLs+8vA(gH%N%H^@M;pKj&v{qO!sBklf3dV%xksm7j zD5uRi(j+ZIl4!u53@rqTxxbAd8MFlFz52Lx@;|{;Kql+Z1Lw;0`mgVMeP5$D%+YIh>NxI4Twd z0YN<}JjjTjUY3^5>&cfoLRC)K#0bc7N+*1ROIOXu&j$N?B+<5HhZE#tX%SWs;;qth zEvfp1o2FfmwV@cPoQ`i!y0Wk$&!DKllH4=`GFt&Jj`X#cFv4@oA z8l05i#WYMzWsZZwxgHd_kEE`8@;`?|RbX~8nP(JgSX}D>Wblul@iBReQFr_$pf4!f zC>Rh%j`lp6ET}2V)JZBO1StTzEjx4ZePnh(X@uHP0plQXL~)vG3D*S4Dcd&6{lfxT zpxO|JQiduk!2PpiPhhviUx)#)_Y%hdR{=pl_m^7Fg+t}oX_1L0eWZR$svO53a?iB- z2lhP-XteaPM*5b{*8yw~7;nr*VkRc!{MFjQv1yj=m!+kXxX4Ah@O)cj8TwK3n}H9y znGJ}acyq4Yg!&m}WX-))E>CyKQ~lAYMLAf7Ib%|K3M;E^jaJu1&tH@qq0+a?9p@u0 zOLAAYEQ~iqdr#@1kHZ!SBUiMhRcW6lmA4jFsv)^nm zqItKl7n z;hvs9TOm!Hh|ZtA@~DxO1u`sOo&X47%)p$1*#!U}C=D+z0$K!igmz&fFrm}EBDC3{ zGS;3vsG!dEx+eP(%vHGRWIr5kH$rVPT7{1Yuh$DITOzewH(swKDp?({Rwao_@$(P6 z1P1^&ZGa{4SPh6C#D0Q3s^oN?caufr2R-9g6r-*pMVXlt1z8~eDpF=vs5C{KW;|Sp4leP_zpvSL73UT?-#!NC78gO{pkpc! zp;g%)!zeda#qs*Axb5#V?iV&jJ?5O`|6wqt2)9J<6u!i%M_(p{lY?o&4b2WuZv5xL zQ_M+0r(o<*#$(Ygv9LjtB`CGkf%rVQU0RAJ5v_={N(6!*UfnSxpzb!p+)eBZja!|-EK??qD z9+W0R&<7z9DZQs*qk!+aR<0jXx|XGpHX3YU2JyLYn_#(dOJvMvmv9oPMEr1^;oyE7 zM0YqPAg%AxnQ}x^PRe}{qtp;oNab?hIk|B{8m~!qzez2#=$%ZMl!>3zE z@-B+V(F1c#Hz+@Wq8f)cUQXwXwl5JeJ5&t$ZF8A@O)z=t7m+>#!T^;Kap zA`0~u6Q@&jtODW1RL7FCtr}|R=OP&j<3LYL%tHZ7sa90| zW>isY0#lB!oSy2hkyglGtd}ciV5R0@4=)Ln7{K*ATIWh7bZ9+FTFGT6xmg6$hTDgH z%?M6S7!yOmxk3s}-8j>h2tqVlZhZt$>JhCC^=6C%50`*_99B^K;g2H!IEL*JmPxmQ z8!dh)64_xU(6uWAdNQy<7NHQ=KG=z%;PKJO_5&|+V;$jxy%A zb`mrG$fHj)fSF(d&dpJpbZe&o`%f5A9vGOkd#05#FC&-+ESXjD5lE-yU$Mu_$Wg`6 zF3&FWq4??^RU1R=B2+A9Xsx9fXY!CTZx9rG`d3#&N(}e2V^Mt4dhW}`?u!m~=t07W zaRy{5WLv&?2B9FB5Ggtc6zZjj_O)w=tb>tNYsAU3kE=1#9Pp%2L+XIl64A^E%z(1l zKc~JG`k695fQ91&`$-!Y7^jeIygpJPbihqY_-0jMRFht9D`{KON)-$#fDVPx*Nr@` zvk*#QE0JmjAY?@@L5OWgz$#PhxxEO!d%P!FF-U4Acjd?V5EpbJEsfDoGgao45Q9@T zFZaQINS_hjlGx>&hlP>+b&)WqGMSi{hJ}TX@*oXNECS~f^G}1@04Bt9hG)Q#A!ZZ4 zSp_Ddk{E>pNCIdq(%wxo=sE`hubEGss*%>vZihxa4s|d|hG74_2onwgisVxIFOUp~ra2?zS#1)2ucf$L|R^6ip(+_3LBpYVR%M5zJf=U)@2y?;A}>bQ8F%}qApk@ zxnsz7Gc2F!C$@E-Trl_s*DwvS{I0ZzgdgN1eOpbBIkLy>@aOqVev98^aKgPx6=^3Jkn2U(}`)QiobakQuwEnElpi{=n;ICn(@Q0q+$^YUa zmx(Ok$XBGugYP$JwhLguAZ=O_B2E}ri1wXA(7#fBT4uR4dcM7+xoH?G`Q*sv{r|Q1 zrqOYo=bfj-O)?~TmF1+WlAi)(*0w0tudxVk*0;7@UGhv zrw=>cKl-#~%nv3|PR9NFLI2gGhgVD-y(Z2mQ{cl!l{y3juSjQ;5r@S@(t_E_vdtNZ z3Vj2s5~+g3(g8Fz1J0;PsMPt{45%eOW{vds$W${WNJ6n7E-(jl|nV zuGuf+wZtAkc@&|n-uu2i>Fa|P;hRgg-TCN<%hNyQ0a+- z)-mm{h{v60G8;RLxW=P!Vi32cEH9ILmG3RHf`^!i!RKoi6&$!AN6=Vj_RQt<{^9&o zsj$_@>J5wqjquu)sm7ispS5I!J!wz~7&i?{=9{M*F-qYhy>-Os&Wn>))IP6PRx$1L zC`7N5A5}_2H>csSzFZYPI-w^me@o0CpSbwD5A@#scN^h)ICp&{H~gONTnWQ=ro>f1Mjp>FlYBkB{}@BSAerIe$$Lk0*66wPp&q>N zEc+s-g=wjsDl5sW6MHv_`llI2rnrj7;!nn%Bn>35m!HK)e_=qkBc~+_1JYU^f?6fw z%ZMv6A8uaGTtAw*ZXK0X>B@*ro$}1>TWhN&=0Z9|H%41Qu+j`x{xCx$lTB^U;kJ_m z2)P1r#t6%cQ$6Xi9yTcot`2k2!nFw5t2}qboQh+W?e@a4d+20}p`5efcwTPfJ_KPt zdBB}q726_+wo9^1fqdxSjPU0O&$ScjG%0APFml?8V(MhMRgO~EDUO_ESpX9zZ~P+b=GGB%Ff)7F>H8`DL0_P~EEo}88XAAsr6to18p(kkcAPD>nIm^` z^JaTdAqdQ2&j^zJq@{@_)-Sr_31V#R#61=GOd=}V2yp;VP1y`J5!bp!CJ>;JHE9k{ zchv7km-%#&GJ|q)B-6fa{AMTpc*$gTS`>#gtz4B{<79WPOEx89OGCBQLD!Mxc9IS| zD?%1lk!PB@)qwur-a2e&Y0475bUAzSOuGB1n=laYL!BI`6?G{npwcp*2AesvXDoYS zIKScU`Z`vIJ1ndW7VPpSaZDF|Ps6;YAQ!l&;G;DrSUJ(at_lx4+;$Ax;_1rnh2e`2zeX)DuFh*!UB3|;hPaWVQtcNV- z+NK+tmn%NG?%U$RI=NeVGQ2Ny<&vECmPshqOA+DJNOLJ&)J}7?2&cYoEgZ3hk&}jO zzregq+zvbYP2%0Kc?WqsLCFb?BGKL6N@sZpMy3AD~>W8&h1&0c+Pj4Dwti9>G2!qL)!o13EUzqlV zstNNWt7R*tPi`TAjglP10-Vo+cfmRlZLu)Yz~oEC2YnOYuH&AXT(99q2P_gBfOxwnXRe5RV~Ww zTMtI>Vjo}?n25`C3gl!k+uf()f0-?e-P1B}`u|IeMk$P{&`yX&qlHko0qr^|8tNl+ zi}_m?uI7V}X%|1#_VeQV#7d-A)GInu7cVdPhzD3E(m6c!tI{KBMZOU0#T;|hb(CzBMg+MtQ?W`E2D9kiN! zZ^d9kX0U14x>hq%h2_P@fGKv<$cTFqOUT_^-t-DkrwvVshPN6L%wHi28t7+E&)0%L zw;EKubxk0HS~l3I4TcAd*=oT8bOxou;GzK^7mu|h>(@4dDX1W1Hej8PuYD_HEp@S# zGPuH?i35He=xt`ntV=dF`ay|fd>dLhCM&ykO8VBa0=u zLV7th-lt4K?P8x-ld^9TSFWcL-o7w%C?%DYS9aT1xdA>#m`g$dq~7kaw6*z?eZl1U z&QG$_JdOmX1YehgFL$OLj|~T~)0jyP5Pg~RbD`ULQ79}Zt3C~O+SiDT@5%$A%KcnI z4VGvGTefkP0c8!y4wsdId3x|3?SeVL=yae52E$PV%{2X!mAG_MBQ zvZb+sg``-7&I>Q}!q|z&QCzVXI`DhSWA%ZHr@q&d(Vhp%lLaR$%tB`=nGGlNSwoK< z)KmNVk|vnB)~DrR6#}0b)bsTvXB}%a(VK^7KmJ!1;!o>$Us7a7!PU%**SxGSa(41_ zME0<>WvqKsFZm3bp%=7MHf8IZ4Qm7m*#^60J5#o6FpDdfe^G~_#A0_Pm-IZ3TkA`o zKaQ^)09SiNP_(=lw!YkjW9dyD_K!vWMOmV(U6M+uc1hpblNs7%U+8sn%2l$Er8awu z{d=~*+3Q0Uj82Ud}le{ z+L{4fZeCX@*QGx6A3@yXoPWZcB*1Vs134-nrU<+5C~l}CZz9vpc_C1o1`$&LAK7BI3xY?hBb?cQrZw9P98C_P@*zDLeM4= zO}nG3jq+p8tV!_A23ht~AeM@LphN#Jl1T%G8gFP#`WsqP{qHUCrM~*kQ)SkYCEy*9 z5RY+dhfEI$76Yb+g8Hgbj=>?8gA<6x4eYwWQG@s+nz#@Ha8=RLSpsKaryiSluUyv^ z#qlC67MnUmesDLfaCej{JWa*U&iSY$=Mlme_p%ucA;c5RI&t4>ONqUYkM6<(LPHm- zO#>%|Sv0Y?AJtwnp=l6}ER_y>7kwrBvGZNf^kJ}3(13$mD=cY~A$9uU>dL!#pJjJC z^j3DGO|(bI1m6)x8nO+1d?5BTGRg-jIO@8TdUhT8DHbQ<0@eZ595F4k?lG6!L5QHN(l zh}$zq=z64&97y(M#X3w0RY~3|>XNH1O%C*k6c3mK@HLi6QG8u~L~xs)njAYv%$L-4 z+^pziNlN*(VTQtz;Q<_Ea|1C!1E9s?Ye++Mj-NU2HXGL`%$m zZArLlM^iG3*IGgfh&m9&t3gDx^a3`r`OYem8JKCQNva_Ulte1}E-#lTuBo%o`jwvX;OzkyFAPf|9>Fb4!6Z>~*G#h9oQ4+=sz!G3whPJ_U zTKest9(bfBa|D93;hp4pkzgU5#UxumfZO%uEv!@H5*D|wf(kMtGDLkt1e7_?v+t6I zI7+byhhL_1x0)C-YdbnpN23cOKuO=_l=ac~qDU<-5TPz3Eq?`S<&8#bU@>r<(^c=$ zqvtNCs|>X}Q7X)==}0qa0yT~4Ef?4V3fiMhh&W9MM)<-r&IJ~yF))wwew<_tiSlLT z@w#XrRs+RqwEhz@JZj-&y+4)!k~|T>XI590tii`7803{Un=BCFwW*){=O-&Z5eh|v zp-E8W!EiLy@#VQ-kw>d-EOI`$SmYmeK*z-)SyNjR2t^Ia>@)fA!>Paj5A$k2ABxAS zV$qtAzqU43;}63|>#t4lsU}equC5K#C8}X;oh}x6yln1**b`;%K7DCH3{KYXFQ{C< zaq*9!n%%hN>q<3SAN5zo>*DaJ)>Zjqp>WJ!9jK{E)W?E>>PXB`&HgL00>rnz|A<{r zG`u~tokd4Rf?(GX6~U~}gG~qo2B=Gjk!>)HlYpZMsxmtu7aA^Ro`zT=yP=4$HWXYI zhOZXfs8GQ0)#m-R?oW~0D&wzB;jjJcAU4_Pzg_i1AoLZ16R2?30pBhrxii|^0%<=+ylT^6pYtO^FAHC07~xz10)>QL$z z|9!3!=B6Ob{jVV!F}(ilmwq7Q`hR`XZUv6lXf^z_p-3IAfXBC{iVDL}G!l+fB}^+) zW8W{JxqTt^$Ky|a#M2l9TptQng~F2>E z^UGw1p3)~3>g398GPPs2LTw(s^-(b|m6f?GaFXFpUxU&2&+;yb>Mq*K{qruBl|3}p zCExG8`Dj^}%F6PbOXap45xv?ImUyfTOK|+y4#t^bSb8gI%_zf?Z=E%x3`_Mb7I6fd z%gA9^Dl7XI-o%EcH=##@IqT8!D+#@lHB{LPwGr97+%J%pZW$1E>Jo z-WDhF{ZM*X0OgPwBQ%G==0i?$)Ui~ay{VZNRPKH^$dQjd) z#G5+JS-g755heINi&u}UeHO1ik5?buI`@T#hgbiH>Jzo=2d9BoPsulD|14I$QzVkd zuPnr>&%1TVP`A{vuf>^i zzAaIY$2>hur25TS%Sn`x5ZV;s!n+~K-#=3Q>CLJ7o+m$S7J*a)OofH-ATAMxC6fNo zvFcyG3s!yE9bl^e5kS>rU|*HOBZQ}cwRclk7;b{Nw%$Yim&x&&8m`_lu^)MiVhA`` ze0ZSPrbBb?)+KAdd@R*ROB)59}Kbn1*vqKgjip8Z-Dh>McEt1s#MgH`^Kv; z%MDqEk*ZWGDnhp;G#|L-(}%0~D2$%+K`ro>gv`^{V@9i|%hF>#X$;WZ!vd=>o**a}QvF?#>WksbA0e8# zfJn>~N2aWH31390|+QR-z{g{k3Tvky!crCvblgAS*`^ik^Xq$ABj z)emKEYyx7+->rMr>Yp~MGSfx zaP_G_>Ur}0vrzR8%lB^}2f~zLb*qR6{xKufS6W^s`p1t{Z?i1mM`G=JW9`^J(*p2t zGSBnKQBvY?k8zh-sQP<>1}gzZ1L(*sRJ}q5%tF=ALe&c(f*{?`Le+1)rUKfC^I53+ zu15n^|0rSV1wj~=+ZltY7nJ&Mp&!_g_INBG2&UfHcOQIv-n?0?dH~xD6y7XW{VY~J zm97e>>?X&ekN=azs>dFG!i!gLDaxXab^iGA>aD9lWJqzZp%Qrfc=eVbJW`K6Q+V~3 z0M^eSUcF^g)Xx-Ny(NJ4Hbw#tp~sF_ZwX-i4C2*;Q0OAd&jen*C4luah*xjjFrf1@ zhF8DPK$C2{AaykY2`jwOMR@g++4+wQufFUa;p#hJMR%E69*R%u9@!JEfy@P%uR93) z0CNtu5}yTa5mwW#n_!J7>PJQ9QfFrG4nc(N>jAM>K`G3<7Q@w--3wa%$=w!|c{s6W z2(7*+W8DXR;sc=7mlc53BbN=Oh`^l81Xw-r?bb|!)q_=U!MtS*hsFGP&`gK9$F__p9uPEsuM|nG!TW~C>a0^C>E@)3kGMQ zb&`pd$qK-AeN9P_YwHbwd0VojDcM%(``X$zFd9HKf2+CiEpTG%V+}2U^%fNLuW4>= zZKwn5)%TsZK{L0(%pIJfQn)a)&^iJNb4PT@%0g%zmidj29p77D_P*C&|7^|rlizzT z@VOuhxCSbNXjOGRP**hpf2_Vb;0HderY=&Kh{bE-y14&#;rwS)&-`jZ`75dud0?Y# zqu#0T@jxrsD8tHP;rwnR*B$xHQ_rXV(_evLySmb&F;v$?BEd+YD!3vT3I@ZG>Of$r zp?r0!@5ye_7ATM{xzfVsF#>gKr|WWbIBOt7hf${gK(?nJ)HzK`2*FI|4~B)ih9`ih z@L`*b^FrUmr2{#`-YNtj&s$qFM>ngrV_aqhSp^tHjJ_A?SihML03&qBTm}J*+g>5M zVOVGk&4iXn$YHxINj#pM%%I3;t|KLT?wtB^+=q$YT726SIoopC`JKYM>5zm$Y<3P3 zTuHaKpm*-;OK%otJh?5XvrN07Mxy49fdIf<=E*_f%r7-j zdjzF&3nhcsgq_?_bqYtg44*o0Oo6yAe`=%!b$R;*=83VACJtVO;|n5B8S%ZN^is&~ zJ;O-L$8T&Aejfm(PC!%J1zU@}Hgyg3e90dJOPZ;)z$JyA@zPO)C!KGhqLD)@qZ^qa zEdiMF5b#p0t+ere0aG3VUdo#f0+@1-cqu7kJ(-G{JIlg*7KJM`7ivX(%?cPHfai8( zqmhb2>XsVu3dT=+B;!9m!6-*&L2}rvVEl~~jK1Gw!T6o&2u75x%l!X|!u4kG3}@jC zXWRf#RbzR-g36>Y6bTWAXUfmRKA@tNKFQPykP>{rnYKT;W@7m_cA~X{g6o z{5?2OY9c#l*Z>{uw7cv$bVo?cORwWw^ zLrQ%^%W99c*9d72yfB6wr`530tXq|Yi>5_}TA1b<8=21*;crtCnM&U`8{SGnzQSD1 z!WlLUK#zNK(h|dWAY6dfmdojZ%Os7v^@cLZUNS&^|2=X6 z>P?d={OpH|cBdH;){IaA+RcN3=bt&bxzaK?ppZh2Wqv@I6gGaKbvd;FF0l5<>q+IGyZu9|Ex)je|A3}9p7I8 z-Jf+Ye1BzSliB|4j%pY0%Jt_`{gss|(cdSUn{1}PRh1I&oBPDKpP1h<{{v5ad&h@9 z_}fdnUS9ux6Yv{&*$MbX{MFIAguf;rv?}prn7`_3AzBFq!ZoS?^RMT8(NJkv%Y5Z7 z7m32GkXf7VPiaFP)%ZsZv1Z@DS`~v=5yp)l#-K0!{f4?`!(AB@g2XkAFj3m16;L>@ zK_zc)iZ%LCT4E4m zX{eJ6WARl!Mi)DaZS4$VU5oju^+g%5*5C4#*ZtAkKP~rt{WZgVVg`{OOLJ|`YQr3A z0P|U73@c_D!bnU&Gk>}|Xls45FVUQAZTc++ZS9&h%`Fnb73t-WPsiSBZb)$Jn+?L0 zngo8op^aJc#T#P{tFa5~nk_m_dmDuL_ou>R-7GT?=c;MVw}sZbHOA^>IGokE)PDb@ zMLE@y)aw~2GkUr8fjo7X@0)a$Q*?zx)02nyHK6P68EL+2B%sq-hRtLvf=!AE29aO&d!J#XnZO3I#{ z|9btiNVAVVcjm{=qmW^V0L(zu!I(c*TNU%y)YrsAv8t+YB4E-Nsw^9S@3E4ddbmzM zlfF$>Hms}vP{~f?ccoz~D=STPS~fM)sqdY#cl>_8^Z(S({Bu6J@_{)|O+)U&c!~kx zA#t~Lx~ZvxM8AZ?-Dtj^{6oF3w52B3x^$;{;bdz}`5EtSlF7r0%(4=upIl{|f5!To zit04q>~Bss-Ao@1)2Utt9AgPmce$$Af{TcLTflSbJYkX*C%2ch3U_YCx=RvwsvVD%(|UVW5p z^-X2;nIUoLP4$k_hM$Ms)FC%rs_dqE*W`6-R{j*$mAv*Y7M7U_Lv3m|YkJJ4c56zS zWWQ>+SO6Y+cD=ZST_!K5M=-SOB_&KQb4lLp%9EOM2RRmnoTd(?sb!c&A3vw5LuqQk zSSW`|*JI{1btp}(2jMhjVDFRC)MYfacHPdtJ50g}5(>`~nlgz+*$q-&QAoAbS7crXpny10f{ID2Ju|`KyfBwpXP1j$WKj-9=Pq#q++>m@L znR@bD3qGFugTGwx`Ri~%2Iu8}_-~7!dLi{EUzvaV`q!VGb8~L0tZu>b>wkD*{=b=% zzvi_=^TOAcU!MQQlbuYMOt0C)*Mic&UG+c+p97l1D$7+%Ro{$K}QUf2J|0*W)^3pc*^2cH{TbLp< zX*64{OCPe)yd0~Uv74sZ{D~9n|5>vcOWHM?mm9m8A;fT&*vLaSoQ0=-nx->Ub0!=< zQ>L?pOGcbjGi5qgi|t&>be1uk(s)h{ytm-9sjt5CRGGD8Np@sMZV*dyAIXcH{^KL0 zD(-^dW8&bE@v(!M-of0_Gvv0Z!RtEhBn@=aIT&Z)BF}U{!*iZPQtfNbtjP4t%$Vibw^o=ZV7lzPxG45|S>n>u)M;G7ZzOgOxrMDbq%MbN1+9 zZt#SVyzkSj2A-Jua>J9KNj0B*>cgqO+4khKAdE>0ZTk2HdO*&xN!lGBJ5I|o;7lLrT3+tUdBwR}+Br?>82UT*qaG_G0#ss!||i!ZhM?3|~qt%74<_~Bj4kfCzbZ<(xZhjRlE z-3y02ea>t=oE^T+NM*ZF=+{d$4oZ1boJH=hG7d-*wyDxmc`BUgn|kr)!aAPWa5;DJ zs3=Xh_j8$*9=SGt>qffsLiWI68UEq-(17_lJ$g*&MTR%$PH)VdIhr2p*NyD2iXD^R%KYGnjx^F#E7I1gu(W8S*EaUI{eo%PVeGCv6 zbK~;zqLgi4e2uP%qh}zhf5YW?7cYl}1AA3+4NmRKc=PI|>u~7CmWFDpgO#h=RyWF2 zSDC3cYmc74j|>ZC53*9kY*6_l2eM9;3JQ_1S34#w_U_O@Zqj#796V&p z_`yTDD`!-G+pk0Pjtu7p2h9Xzu63pRx^*k+9^nCutO`*PpUyN(Z_RQ-e6sv0WJvGi zNN892YGsaWNpIQwx3~7Ya*=On4+1%R_&hi(6UPS9U1xJ+SjKFvES#Ua_on-S=Sa8xKT zryhlU&Qq1C|MsWzUYQ??1_PngPyX|h6(0}PMnkm~<-{A-tZiG-*8FC&skMArq$<_n zf4Xr_RVZb>@xDcKLws2H>XRQ&Reoi`7e5>d{9YikELgiN9Igydc@qt#`Ue;EK9m2x zD)skYc`Ew3`fwstTOaV(1(VnW!FbGHS5sB*kH%_3SPRM8+GusE@6+#F^w}bNqm-=? zFPl3z`^3}#@6#{N%~Ess7jpxhudV-(3BmQPaGcgre;_VpN!7`OKb8yz{I%7ISY36b zu09rsxHWeREh#q>|9t~7Efabm^5FH$xBBW#gn(Go+C)QhD{-Nfv6h55^hMKK7i(!< z>coWdF*rMbrhx+T3RlMxglP!u@Yz(kIk6kdj@-2*f3miLkdrr zc;$=S-ny!JZDT^CK;%2N&>$iJacbpCRlm85(&%L_`HTCt zyx7UK#D?KdjFs5bs&Tot<~0O#*EJBI)vclNuL@b%5{jdFapGr$O3f;3ZX&1_Zy*A; zZdI&}iwN)~hxzP2fwyHiHtf>nIL}G=l88At_7RgJP zB;r$_WRR4V{RWsLd23`^#z=PG>iaTA%E}5&k-Q~xXG0_vJ3EKE&_`-~NCw0mOpo-4 zb#JCe-ts7IcofRtJDMG8byyG6>?mP%n3*qObT~GLRnq7vD|@siN8aMF?r3rpS{x6{ z;PBcT);6)w#~@7JND>`-V_DfFHa7~b4QncMLpHA%8@8<>2El`y8j}o-a!ZwdH8hIf zX@=urm>5%A7?#(>FrxI~8yI)8FJ7EvVC3zKJDC@F{l`)lzp&sZk0{Qth&Y3s$Po^} znn2KB8%x&slSzODBDJAdO)!Ri6Q>ckQ@{Ao{I`D?uZvXICJ8ar*3{Mb!+|96f~pt~ z;2@9H1gfLKs+yt@1I9T`W@NPsAh1>iSTmIuZ}02r+zj)*|?a zY!MW@!tUKBumoz*)#|2c6JVx07!$TpKtMpv!h5j_mSYxJHQXv#}!Wp+#ulq8Ft)=Fj`|$G_IR z>UXNY{ln@Xwfywk-~QHjVzu9Be7!ariKKq<+jBquh4PwUB3K=d*7@rb)rhTREa;Dh z10jDr9El(pqw!=SDejyko}8NMTI0##V|Ao9weJ6U^5=6ye5ZaJJ{0?HLcwL>U}aTR zEx0LOzm0q!Nd5hPn1|m6F&mE{W5XbyV2*_RwLxs9Xfhg3)Wj25Pch@S`OKZ=cPf~E z`V*;7|H-`Xr#|qrxzEb*re6EZQ@{1vLmyP2VLqOE!9VW<*0QBb*WjqAT)DO`R@vIn z6cc}QWxQ$WORZmSTP4Z7UyQ9@^I}^=;>*EMq}KeSPX0kuyDBVT30`l6cp`3WaCeSQ zA&vr^`e2dj#IEq(K#5XSAhPPs#VfKW#?o7dSAdt0xq3FY{%HEf`pm^G4wiy`d*xVm zq))LF!v0{$Pd*%h9Pjg{(*WOp-PsMK3jWUV5es1T<9HxZK5>{3t{{d~!T-}+MsP%C z4xh{(=+WP@gYDxZJ>1*F?RY1`xNU+VQnrG%nbb*~dsWr)qaD=&if7{hKAef8SF>H6 z^2S9}dFajW*#Di_vngi{jbwIRSX4z~U*V7G&duY)@5z^$okN+e9qEDYi4j~vSMUb` zhIu%5akK5Vy>KIU8(^DWP)f#c?8sa`BOcSiYZb&!P+(O`0Zf6gR6h*?iSb(}>^Z`- znlnl!Ga8>fi3r2Bito837e+9xPK#QrY! zRb+Nvo7lgZ*NPW+a3B350wnI-k(0TrJ2P-cpV-IHO3q#TUVu-sBYV@<(9O)YlVpdC z4Q9^`yfLj01SQ5tdn?9Aw%I_>x7yREdn&|#V6bGyZ=6gIZO-l=z)PGtOsr^ou45;2 zLH8#P+|a1dqM!b(esM**&l=zvw3p}rEn<-MvphVvQDPXTJLiGamd_`y$e<3>+x3}U z$N2^ZnWO0Bgs|K-pWXyY(&5Y@VcFCH&vf5p>Tq0-j}7L=E=pYD$SwXUQ)A(%8yd}B zAfZbld5mfWQ#rA>KYjCZx{sF0XT^=FNW*a7y=C|9Kd`@tyzc+WbOMLMf1-jYAvnsM9u(S8(HjD~Bk9md! zd1aIiX0~)@+K(*EPZYArU5=TH>ls2Jiyr8%NDuD>#F9t*(x*Dp1MNQIC_nv~E?Q#1 z>EZLN9*c`}SFaIL^8Gl`yfXQQPu%x-Hb()5I!eGy7X78J-0k<$gO>>mOH2ESvmDmv z@B}s-Z*!KfqhIJO@I&VO2+iXuK<)lG)3qZ`!Nwcz2j8(5p#4F&^&>QHTPDf=Hkekias9IXlms%teYC(>5EV~oPpzGQ9dJu;z)OSk=17xTb5+Ur}#sW3M&icwC_Y3c3D)u7& zKoy1hBKF*eBNMa3XLX*uvro`V+KHU15-}A;OigU>l(mYD@F&KcwxmJ_JUj##BTlRmvO)3pcS)$!qTOut0ZFwk#w z%D(A7%FPwh_*;G2T$*Ty0-XiH!qJV#ojN<(nF{IR;8r%P_9J5*>?e{m(Y}3r_(TOu zmar~jl(D=+cXU{hVJO8!`ZAr@K~>5QA6vrz7=H3I7p-kbEJO8JvLqO-M(}_jHeFa0n90>E#ScKbXzh}pjpY@HC>TtH&Vh(CWk@=?Ay#Q z(japlIeSxo)|V5B)euB(@K%L{7?B4Wud*T+0J#(I*dk4osy5n}H_i*~eMOs1@ zri7wT>}C)A%3|bBcOXI;wcM3cg!FWznBv@p9q!1`LY7$i*oNHT1Fl)w4*FW;EkF$wQn(5hW4TUcQlaUmD*2cS{Bo-4U8M#W{&`1*O9r_nY(gR8%f51 zeIoSS;?$#&iz^UuB&2X$@(}Z*)yLT}vG+RTBHBerw2NiBz{YQ#l{2G5C@JkHp6~K* zVO6l$yRx1+x6=nx6FbI;LvvibX!e{uOt+G|iDct3jb`!EU`sTM9mhGnnRSib+d9PP zfFO}G#Y0{8KBv3ht?u3A`Z|$0%j}gdFnV32veIN)#_N60bbp1~3 z2dnL7`gSklqH_ApSd&LiW0*9=8cFx=bzt2Jrl8p_6YX5Mg@q~m+AQhpdwX>! za)`=49lOdF*QXQ-DLu9Fn;w~EGNn*dR6>)HaLC^D7ASFWmdnY$=^861-F5Ct-3bmzoTYfR4s z)FJYIDs*Afyv%M9J(C;EYF7c2yM2&5byk^7UD_gTSj(QDoN>N>X=2Nkbl+~BI%(U5 z0p<_QxeF;HPc^<;*^J=w-8h+Bzd_F;o^4MR)bFVK91jEC-fpCOFQ+?4(j5mf=a1>uXMsCx1|qur^DubAk#o!-ghX-cUnTdnP7#eoB4Ec#I>`ZQ# z^LcoiEopYiF^)3lX}_+eQVle%$g;l54q`p+h@$8vu)*Mr&sxEEEDZxxoh3tRV@8CrzLu&bgVB$ zqx1sNA5f4syt{CD6EqE(^RJvxY0JM=E3s9t1Dny>>|7di{<7;upEqhW8G1z;naZ-a z*HWGA!6mGzCd?YC4TJ@wwYH`v7!DQS63VGz7FLB<;q&UAqSxq_(I`fR>XK<#zK;{$ zI40R*eZ86XgDWySM=Z?U6)IO&=(@3mq2A`D#lJK}5yiCXXsFq$)7f$@I#k$U5vP5}n#4 zU2*ojnXCkR|81w{afDu?d5KBH;IKtRyF2kNyU-%*OZ2?4_RN(rLGmPX)0`A;1c*E; z+QVT^-YT+EvQg>k!BqPCne5@qk|&5Va`W=U!M!Y$%+1|wOyE*CO|%~th}08fD3hAq zDL|>W1t=98Qq0I}hcma%TDERST4Va=ZG-?zpR<-n>8>ITl*}!1tQblkxnl)`=ZGBD zYIRZOhE8QiHczzoq07+@QLl^z*DH&;b2GM3L9;9df>)SR%rQK>bL%&g)sg9y#16Gi z*^`*PqEZ^OLAJ4bdLqTxI%KS6-y4!`q+-t*cG@i?IE>nuKf-hzGeg_6*5LVE=Q&a> z)BPN(Hj9%O!s8>GSO9Edm6-xAJF;7b#h9(MnRHOnMk_Kn7tmqQsx{Go&KM|8ny%TR z6Z^)*4S}t*dqnQve<9N)fo4|$b+ z*Vf_l!(uwE`^eSCReTs7d&D-Z)2H!8;1-djX|#d#pmkYSv!2b`08Vk4ZRSZvZe&y^ z7VV^V6#;GsS4 z_+5|@RRN2Yu=GTX;M~l#sN_BlZjlvyGi!RCYLKLCU)-44GrnA;{f;tPs#4Tf*q0@ zvLqo@Hj!R03MB)Fg45TVJ3@bxgt4qwl0xtzJQ zV+E5d%R#+i&Q{L*rua?$jpHNdxJmxJCt%=m8{>yS<>c7V$7L$P<^6gvr3Y@M`#Yvm z@@k`1p{nY@3fzilcr}q=-d+_W&KXYIYSre6v4VELcbIsEfd$7i%jhX$?jACz#c0Pn zfC9X5g&LGA>`As&yeV}%<5pDfI$;mWV8E(JGnY7q3^wtQJwr?+vy-`WL;iG~;}0rT z;p7`*ld+gsf1H-#bkS{Y>A{HarGi+Bh#oM*hIZ!q4iM^LuZS!A6p^Am_?^?6-b?pl zr!)22FEZ%jOEU791waU4nR+C&Mf|4XR;4U2UMSOhg9w4={LUP*4xr_EhgAnh2bZn0 zkXP{)1Z?aqvp{;%8*kId+=Y(x%}YGjEJZG&|K=cZCrF>9TQt3^dtv(EDgNYokIEl> z*d`&@!cQmSR$nLrA_G%12kFss!Vl2Dd7;l__alh*8VO{6bk>0V3d2Ppy0%=?Nwa7; zq`(*CP(gUX8)eF|IlpMN{^41)fl$|Ojt*&i*BFD7J=iWRRs+WtlIL&oHxIFzrB%!s zTCvQ=;5AM&xBa{c)TNiG^U0m=g6NP1Z_~lg>Ol6;;5($Ds=~)4q*fNP~@D@KScyUeQbky0PEI=I=kfP!%cZ4PWq1 z);%^uiPd}V7$U~@52_6$yYB(0F10Fm=snUN^SFNFf%M2rhf&NYUWsUAlp!(<(aL z(c_S2i!5`Fo81)s$f7}hc-#UDjg(Do{^k6S{QkfALFkp2|M|x z{FrFqOHMyI{M1>kUUmGy>ZwLum!H+cf~Je@nfmv?oc{$Y;tv{GX&dtq39pFlS|D-m z8nKYm))TNO(AS-1FN@XFQWgkKFH2pdY$o+9+0MI3t(m@GVi9V$R5u})PhVK(m79xg zZ}EY1`FM+E0xm_(_uf>pE4BnH)giY(nIkug&07?8@4MyImT1r8V?t{pnrQE!tW}&D zdyeo8%6@wD)rz8E3{0BDVhHR=EavrZ{m!yTutuUY(Li`HifGZ*ugXvIzbfZ)95V9n zYJe@%otP_~2zBG<#R+?1qj(`na%VD)F>XiMoH=wmE)vG|-?HyCpkr3DlohIM(nW5E zUOWc2KE;$zT8BlECrlw4^Uy7He%;yyxAqO7F;CSJZzxEQ<%)^Dz2l?BGDAEUIKGFF zRM#uqn+ify+AdwBY!(*fr1>Ji$f>gj;~6!AS}*OK9VtQqGf^n zd9wbjvJKNH)3d3-zEP(<2J|gt`;_r9)|M@njGtQ^33En9Qa^uY{->-q%Fvt=Q6~UW z6A4EnRGE<>8YT&e=ya%v-pM0R?m_bT{J!y#ZgJ3^Kqwv+CDMu!tM+{7Mob=)e6%Fo zdPjNkXyv0N1z4p7~a3zwm`Z%Yvb0frt+a z4CH`ib}C@HHeyDyQT@=7Tp=2T>|4JDiC-cSENJ zmDPjl4Ka|#C)seWKgSy;lvtx1;JtV6yH)6ZM_=$s+*Vv|<_ycE@Nn(d?8Jhh#29sh zQpLWG!n4#)eY&{IXr|(x6RiY48?MnloXnjU@P?@O4ca;aF{+}do}db4fzo0e%wC;R zhw#qowX3F~jd@%y`>jFT19_ho3hP&2fAw46^Si6o$DC>-)X6^qJi(X^!hlxPC5sw< zLiZx$g2uaR8%y?Jx{oXNGFrya(jjvFi)IRFmYOQ*vFq8}ytE*(OGam81QI=d`l=)j z_IG9W8n6WOm0qphVSDwkCo2fi7p$ucPVV%?gLe{emIYe)Be!_M+041<;|RdvojlEHRC4reW^0!Kg>()u!0dGm zB9YuNB&n9T_B&7T8;%Hhk6A)yFPPSFYvz&}g~6lviX<>Oy064zQXS9C|AYv==YRLR zuY9fM8~^+Vf$Cr=`n{K5ac$rNOU;Bi-_hp3qx1fbJB9DC*U437A*KGmU(flR<)j{F z_ME{*w8+ikTWl{6!R0ZGkj7mosSwCi$=dQrS@+>G3B*V|8C+>kLKh~TCUm)pPU+2- z06Q?c_UlbX<6_L#bZ=*VT~Cz_soO~QpC_U$iC_pv6@8ABn=-KnzRJgu*)wHg4*hUpt#nS$T~d0iN0!rLGJ2eZ zo+;gCFHOqlDbD6WWfSiq0Su~Fx=$`@N+ek`9JOgD*V~I6#KiyqRAiBMyl)Uf>2llDDnq4ECi}>I2`py0>OAyO_Vg!>PS(c ze^n?^RUe2X{h_)VZmExeG8Tx%{fT5KTobB`Cc!)F|M2`*QlI$+MWQxaNWNfqsoD@l z7+`|EFHQ~vYbBLR&W8vzf?rdz5*SySh4ZAX0ooa`yy9)bEz(Tou$^IHKmsZ5u1mJ9 zODd_Q9lB;+wR3K+mgt3ZKjg&F2PAe3J8 zSpaxBkYf%c8BYgR$pIK+fa1xPrdGRcOzXoP(6mgd%0zxLB$ zra^ZCwp7d#cryUjY;ZLN6$3CzFrs86oQF&r5-&uXP^SQo1~i-8W~$ZQ0g5-b$V@B+ zoeFN1Wy1B6C(x;n37Ml3DH+^c*MdXU(Fm#OFBCN~WjT5gNGq4H6s8sfCgy94wX94^ zPvq%_ROh!04lrnLHnN-<1X^eYMmcek0*Pfg6Uh%rbGsBO)7ztj%0V()Z3tkrTG{Zx z2o{^H7k?ut-$Ex8U)!oQOTI-vt^b+t%l1gIu;NB5bI!4KWirLU#%H}(1eK-RTOtZZNyc?vM zy9};aRjkp56ElPGYEmZA;H}w!X0j&@MN?~A%UVdWT9SzZxL_QN>5hFF(qGOWr;rBo z4F`d^IYtM8qL_pbR)i&{YmA|iaIb*p0#Bouo*B}1d(M&Rg!_lMBHt6dBReK@yghq` z%80Y#SFubQnR?-h+;^Zrd7U8wLo48;9xNbJm1~|W&$6G}36^Y8NxoXUnsnh6WCW@$ zJJ30J%XC38&eUsf_d6TExu$iVN%f_@Y|)z{-il3 zc+PMZmi{eSqV2J?K}=*GZ211GoeSGd5O5$6lyzikm81=mN_8zKR>ZG(N1ckp=@cB& zx%^yhItlczCu*<3eWt~f7kkIvbk$kM5lh-A4Gl)6q15}E`aHI!DL7@-PO3MhrQSkQ zl(#1)6`OKRU$;Q&NNFh#^Hi47Y+JzKR6J*q##LMa$rZZZw91XeW_$qRtJ69+W1pEd zNPU~kF*zTeiZBUUnF=s1|FYLQQF=2C1x22NtG1G%$LcXP=qiCUgTm}IU2xt^82aMY zFw55Mw2PRRFJHnR3Yig@TDs}_iB-y^2GessVNIt%6N-=hp1o2yUou^?Dd0wO<&LQ| zn%p@CM#XHt{Z=Pnz~udCYx$e(AJYpv{m1>D52OJZT)vLw<*$0b_kON&ZzdVY`vXZq z+)N9kL}Jsm<>eYgX<%KL>>#sW5yEbMkT(y=h{S1@O3Um^^hHY3y_1;gShnC3Ch^TG znfN9i=95$OS3rdC*_@7c}>IrgxPj!eW0gB{C7sX0?W*87l zFZMj*MHl(ftmWi9dCwg7IyE|E>&aPPT*t~nSD&iJRrJi0o|z z(ifWoMCZiUfm>eA18ul{?@*8tVNOh;^pZg}fd1=VR@m1tj-?>(4a z0`Si+GDUG(m&>vgp#{{+8PFCuchkGco;_%>oF;DVK$jt#7SIpfm$tIFcaV+ALlCSQ z7iBQn6b9%7)rZxf>j^bWrr&|A)o36s&|E|3Fm=w-hz_6PD249`q~wAq4J|Nu5_?!M4tniUo z0pgB=ewYZRd(Nm5XPIDihe}prs+=n-VpOb(=rIQmi&m2$MC2R2NR=VoVunmXgZGdw zK+!Ek40j?hqb}1G9eJ`XR~V|h>VJWtgTx z7MT(@dx6w*_J~R55{_m_cibbH;tb{DlQh~ePr1o&*Thy>_#-$}J^*v7*< z$8QfxBKr;HIqtOvNxv8GOoO=%|EE}_>9LW&!^&lqHVsoPM2!6N5N76BYA zr|dd~VU{EHMfstYK5V{}JuB7btWF8hno*#`dLzRrLvWrNF)=1&(U|l`q=OVZ8kz;2 zc$gKid??6ZCz^pU6fUXvq6;dFs{Gp}Gj@a!Og8YI9ZS8*F+8%sOi3;M(|I3V^>CD2 z*<}tsj|OSsQ+>-8JY&xH z4;G*Ash2;y;FAkgN#X%seNR;}J8fMav+5otJzdZAAISFfd;6U?2GN+dvK7rqqvwq7 z)8*x+(N=+Ayl1&6FL$BfH~>7dUj~Z0;L!tUS_coQROSphF+4s7>s}Y0P9b^te0eNZ zUlU5y*8s)`Pd+*1 zhai097ytF#H|OFTwQ&OZ;Nk>+$m=_Kk0J?P=%h-F$pyj$h$|14Wo4erli;qBk0jQ@w9^tlWP9u{Etn`?kF93odt%O3K*tLeNUQrK?cp# zxG-auW)aO4F3gZMv$!yw)+57(DVtUTi8Z6JFaStlK~9xH@*oK$EWv4IkXSQ<3RC8W zG{1@_y|8S`B$7!n%`$QQp{2XobgAIhxzAhEu*GH}VYbae!k|6RLc+LaX1?-1GYbhb z3klONUO+Eg6t0w6NEil1vd!_3c_3lfLJk~^l+;=?2nQo*FhF9>7#xhC!B{g02P0@O zmMJ~QA1LTEj~Na|3gRu^D;3@|0S7}F&ba0AD+v0+VFqUA#%pfF;C73WA zI_R%60tsUYCd>>%!cfd)0P<%F62=mm0?kzbIY`3 zB<(CDOdg{sUDremVpbposn{~WS&sn|M&4$jSj`kBj6lLzGl&Tz zkT7nZ?+jqV2qerW4Y3UI?_%IAFku`aIYlzI38{F{3LXL`jN}a4kmg=onAH3J2Ta$q zm@tM+Wfl`g5SeE&VGQQCd_>^Jxw#C=S~Sd|KKrUjBI{s$J~!EoCSvQ(Cf{Da0#$o32wbvfjcX3|0xUH zZ%s;|EY6?2GYHpnnBz~*uX|#C-Q^E`@JI85|GjMehu`=5>z}RZ$bJ2}KrjZ5N`2HH ztO6E=>Vbg2t}Yq#2dnENiAXe>4Aw_dfBx5VzL5Ich4Y_HJ@cyt<*yZ00{OI1(WjL^ zJ}t!YX)%Te6U3{AI=9%xvqwJj)bpwT^jC8}WNA^^9cw3ItJl2f)|JUW^0j5fIqs_M zx}`(NKUxQnW4i+_}g*x~og6AclJ78~k-!sm5Z>Lg4tTjs)z+-)kIdO^`2zp(>? zOyQv##J+<^{=`OI9K>PC^HD5ZYK_KkIsEKa?>^s;Gws{oaM;aFP7rXlkSS8w1%1^p zvy$0%n$K&}l!4tiCA2O5f?-OgJ}`8=7INhD#l8w<;pDaA6dl}0zhFSoDnr2MGbBr% z*vHT+{H>GpPcy8l*M%Z-ceELw2 zd_HkS26dR;u7{$ryx~_h|a|rtHDv;}U`nLRxu z6uuWvQp+L>sN0!*9M_hj3sZG>co<*4u-J4Tg_Pu=RMLTL0@aOqhSX#lUb4)V&P@A} zh53o{me~p!w;=%H?+VR5phrG9m(m06KDaP{`ZHa$GG)W(Sv?ksSGlX#;AZmuIMKW^ z`G!x*vmwlbre}*GHX0e=mfY?4Ao3w!j>ob1gj3lpexAUF<899Jb&6NjBhL?+^CRpQ z#vek;A4B^W2Lb2}_k-`*^!`KX6TP6vW;UJHtoZwfs}N}@q%@l^>porR3PP#Z+<94u zWDPLF3N3e=I5t3K>k7B{&j>pU!h^zUK)uXmK5!6n-G@&FN2}o31$qD8`b|6c%r2LA zDNrrw*9V2sS0EtzhbXgD%UlbiSm}0cu2R99?f{wsXM|1IEuwzY$;sFmikv|zj$4F~ z2h>#;xb_3Y`*Y$f@DOX+6~mL!J{+)*iXx(zBJgn*O;KsEQ{`2H48+>2=m!---3n&R z3GUr?hwefo?q)FuO^xC_1jFJ%%|3PG7{ z=Vp*NVAz5!_S*QZD--+rc($Ua2p+QsJ_T9VC$-Jg7x!!y!W&C(hS8p*Wuko~HwKc_ zwoErnh__HE{}<6J=gjYV;;Em_??SKq z19R4Yg!%mRmyUSN zgk&VZeAd?aYpbh6{_0pLR28j@)=|x?X2PF!&0lB<8lVfc=8G8+Juft0tAP6nDxMAS z=W9u>jI|^hnpO&kok0RzYVh6wKm0v`@Z(R6pFmoRHTvR>v4+*a5w4CUk^(Wej?Ya3 z(dIxETJ~Kn$)BtRaS^<|WUM8=$_LDgU?d7$T*BAdyc)HE&xzBhSAV=}Q4oWNq!2ZYAFiQ_I*%eP1mjK#iHvA2@6zICmsGWaxbJNOX3r$g=Lk6ZL>02j%IY@eyzHd~ntTgD70XDbY4kppDx=<*yBL`F# zzi8##B$s#(FQ0582gFP*Hr2_oHvqM3Y;E>|>$ET3FJhJ6mixZ`8aqxv2J0Ie1Qt;S z5rd=ZC1%ELrvW@%=DZd)-W?0MHs~XJ8@tP12`XIlwZ273)3H1(j4#vC14%)-j!o<0 z7Yp0Z<3hIiSm_xCz7F`xL!p{--}ta)Y6$wb*+yt(S(&{+!0@w|f};5ePGSp_QtA8M zWEG38dX zkS*3)>}@Zyp}X`9tYXY(P!44)t%}JqXYu{az(tx@*$|2}pml8>cY?TRc8qDOyR9po zp=5)tZDe8OF;f|TlZf*0K~oE0oC+XQy@;vo|HlrQYNVNpnWP1TrXXlCACC<()r**F zHM5Ll(L5kzs_YwEGTsF+wGc1Wa&;p)W{eI0hyhcbW-8vOB`3>c1xz(~sSKB*rCJXS zE;TO}1=(f_hUrOIsn%l!OU+}YmX#?|s&yBr)JoKgCkjD0%Uldj6cB`Y9(Bb7g(uAQ z{qE^i1i|S+;Iu~a2%Mn!fgyJiuNfAM&^XNka5nnh(LsLX_?zvP0R(+$_?w<)PX~T; zxW`heHXI?36Mi$_OsfR?rVYM%ckIncwj|x?>$YJx?|{1L0o}AHXf)tT?1IOJy6FMk z{C%6P?~bUO9?(rM=H`+|iMW}cq6YxnB=6SXZPHQ$wkfT5ur|$i9-K{JHtnyR|5iDd z3%aKLTM@FR4Xnw$m&VonE`Cwq^R$XdB;6y&)if5TVfEoaD%8frfix{l&9bsPA!@46 z6cfTRQ4J%tgQ$6*fSNKk)56nq;54o2;%OGZX_gm&X_}WBEKS>vP}hYZX_kd5eF7ku z$3HB>(X{Rcq?y+Y?tr5yj)m#KXif&vw7~uIRv|B0^1vXPWm92jmV(ff}JVLU(x1MJ^L4Y@gcxx{@wls&p$r+Oy2g{ xM+Tp{aA^KV9s+!(Jf{BP!)KO2&n!>LyB-60W*$2;51lE7sQKTHPk!*7{~z|}bO-5Z0#;|p}X6CHKBGfP!v)HSs@~Ac@~92k!?f} z0cmX@@~9)7_yEjmfEcmjsDs*sQc$!MX;b830D+1E5qT=as_{<2#2EfNne%1loIB@! z=euXlisrzI=IjmqRVM(TfmzR0?}3kL^A}|mM1sb`N>~K_hI6V^$>m1^ z`pW8lFrYUsAMaQ>N|6$YmGL-HRpUw#b{pfoq%I@i^7{)y{(?aMuwXds5Bh6m`Oc=5 zHIt01=LNT!Og@R!T1mR&Usy9MAMKXc6DzR;{&lH><7nO;<7hKg1Q z=rQ^dZKP9aK2@}{+NatEtwJkg$KlfS!gXGwjX)2iMwJ9TyyoE&(AaZYbVJq1usx0* zk6pbUT;Gv?Ct)K?dG~~yy?Wyomahl39#nhKVWS@0!gA17z&hfe-sqyI=y7_O9-^&` z)O&QG-3d+`s12G8stpbs^q(3Bl1v&$th$Z5haxQkWLl=#kAAZ zn)gv@CVLruyQrO<8_xZ({d=l^{jE!#ZMReo9bvE5O~>gWRGbuL&xx=;;_`lOI9Z~L zSISuOK7^^Hn69W z3uQ(|5guUFl;it~l_od{{0a{6Yxx;`jHmb<{+#QJE}^}+9#`NIxHor!+s$p{=5lfL z8d`uxq5kkH+z&UwMereT9kkj)d5oes_FDJG@d2zK@60rE1Gvt-(Eb22_K(3q+huw> zTae)#$CjNNiw9w@7^e*JQM}%4X#R}j0Kmq+1fFa*v}8i7ErCPwa^(n^2u=WHhf&oa9H+L|!3tNFnJXUKE?f263J^QcM$m5%vkM z3su5sVE})P|BBztC;5kY7yb>m;S^qsOR$^!oonZ|a?f)UI1l;@9Y*h>73gu4i;xD7 z!S`Ved;;b{0i5U&ElpjcmaF05tm!j-u^GXjFX9h`eA8ml`gpqab2&aOVlS6KM*AFm z!r($w2)w!|fOU1=p|#xoPF(n>LvN>iDh1mpqjF~<&h zwLQ{69=e}9SRYTb(!Jy+w30bw8?-vINeY?|CfEKy1I4OKC(GDKR-C}nT%?6JUCzw~(ht2I80x@Lp>&hkP-p&C(9+{lWyar>ywvmn