From f67683abdc93e1ea52e0a10bbfcc53def37c6aad Mon Sep 17 00:00:00 2001 From: Antigravity Bot Date: Sun, 30 Aug 2026 10:22:38 +0330 Subject: [PATCH] =?UTF-8?q?AI=20Update:=20=D8=B1=D9=88=DB=8C=20=D8=AD?= =?UTF-8?q?=D8=A7=D9=84=D8=AA=20=D9=87=D8=A7=DB=8C=20=20=D8=AA=D9=85=D8=A7?= =?UTF-8?q?=D9=85=DB=8C=20=D8=AD=D8=A7=D9=81=D8=B8=D9=87=20=D9=87=D8=A7?= =?UTF-8?q?=DB=8C=20=D9=85=D9=88=D8=AC=D9=88=D8=AF=20=D9=BE=D8=B1=D9=88?= =?UTF-8?q?=DA=98=D9=87=20=D9=87=D8=A7=DB=8C=20=DA=A9=D8=A7=D8=B1=D8=A8?= =?UTF-8?q?=D8=B1=D8=A7=D9=86=20=D8=B1=D9=88=20=D9=87=D9=85=D8=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bash_history | 6 + AGENTS.md | 7 + telegram-agy-bot/agy_engine.py | 8 +- telegram-agy-bot/bot.py | 167 +++++++++++--- telegram-agy-bot/bot_actions.py | 105 ++++++--- telegram-agy-bot/data/memory.db | Bin 28672 -> 32768 bytes telegram-agy-bot/memory_manager.py | 346 +++++++++++++++++++++-------- telegram-agy-bot/sessions.json | 22 +- uploads/photo_1788071446.jpg | Bin 0 -> 199085 bytes 9 files changed, 493 insertions(+), 168 deletions(-) create mode 100644 uploads/photo_1788071446.jpg diff --git a/.bash_history b/.bash_history index b8b80f4..e4e6329 100644 --- a/.bash_history +++ b/.bash_history @@ -84,3 +84,9 @@ apt install htop htop ذفخح btop +agyy +agy +ls +cd telegram-agy-bot/ +ls +agy diff --git a/AGENTS.md b/AGENTS.md index 4439c35..aaa0edf 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -36,5 +36,12 @@ ## Preferred Programming Language & Tech Stack (PHP) - ALWAYS use **PHP** (e.g. PHP 8.x, modern PHP, Laravel/Symfony/Slim or standalone PHP scripts/APIs) as the primary/default programming language and technology stack for all projects and backend services whenever feasible and applicable, unless the user explicitly requests another language or the nature of the task strictly requires a different technology. +## Memory & Instruction Precedence Hierarchy +- ALWAYS resolve conflicts and prioritize instructions according to the strict 3-tier hierarchy: + 1. **Tier 1 (Highest Authority):** Global System Rules & Memories (قوانین و دستورات عمومی سیستم) - Always strictly supersedes all private/user/project instructions. + 2. **Tier 2 (Intermediate Authority):** Active Project Memories & Decisions (دستورات و خاطرات اختصاصی هر پروژه) - Supersedes general user profile preferences when operating inside that project. + 3. **Tier 3 (Baseline Authority):** General User Personal Preferences (دستورات و ترجیحات کلی کاربر) - Applied when not overridden by project or global rules. + + diff --git a/telegram-agy-bot/agy_engine.py b/telegram-agy-bot/agy_engine.py index adf51b6..7f08edd 100644 --- a/telegram-agy-bot/agy_engine.py +++ b/telegram-agy-bot/agy_engine.py @@ -1326,10 +1326,14 @@ class AGYEngine: except Exception as ex: logger.warning(f"Failed to load bot actions instruction: {ex}") - # AI Long-Term Persistent Memory Instruction (Global + User Private) + # AI Long-Term Persistent Hierarchical Memory (Global + User + Active Project) try: from memory_manager import memory_manager - memory_instruction = memory_manager.format_memories_for_prompt(user_id=session.chat_id) + active_p_name = session.active_project or (session.current_project.name if session.current_project else None) + memory_instruction = memory_manager.format_memories_for_prompt( + user_id=session.chat_id, + project_name=active_p_name, + ) if memory_instruction: system_instructions.append(memory_instruction) except Exception as mex: diff --git a/telegram-agy-bot/bot.py b/telegram-agy-bot/bot.py index d3cd10b..fdbb6ea 100644 --- a/telegram-agy-bot/bot.py +++ b/telegram-agy-bot/bot.py @@ -1105,19 +1105,26 @@ def process_ai_schedule_actions(raw_text: str, chat_id: int, project_name: str, return processed_text, created_tasks -def build_memory_menu(chat_id: int, view_type: str = "private", page: int = 0) -> tuple[str, InlineKeyboardMarkup]: - """Builds interactive AI Long-Term Memory manager dashboard with tabs (private vs global), pagination, and deletion.""" +def build_memory_menu(chat_id: int, view_type: str = "project", page: int = 0) -> tuple[str, InlineKeyboardMarkup]: + """Builds interactive 3-tier AI Memory manager dashboard with tabs (project, user, global), pagination, and deletion.""" from memory_manager import memory_manager session = session_manager.get_or_create(chat_id) + curr_proj = session_manager.get_current_project(chat_id) is_fa = (session.language or "").lower() in ("fa", "farsi", "persian", "🇮🇷 persian / farsi (فارسی)") is_admin_user = settings.is_admin(chat_id) - view_type = "global" if view_type == "global" else "private" + proj_name = curr_proj.name if curr_proj else "default" - if view_type == "global": - memories = memory_manager.get_global_memories(limit=100) - else: + # Validate view_type + if view_type not in ("project", "user", "global"): + view_type = "project" if curr_proj else "user" + + if view_type == "project": + memories = memory_manager.get_project_memories(user_id=chat_id, project_name=proj_name, limit=100) + elif view_type == "user": memories = memory_manager.get_user_memories(user_id=chat_id, limit=100) + else: # global + memories = memory_manager.get_global_memories(limit=100) total_cnt = len(memories) page_size = 5 @@ -1125,19 +1132,29 @@ def build_memory_menu(chat_id: int, view_type: str = "private", page: int = 0) - page = max(0, min(page, max_pages - 1)) paged_memories = memories[page * page_size : (page + 1) * page_size] - stats = memory_manager.get_stats() + stats = memory_manager.get_stats(user_id=chat_id, project_name=proj_name) if is_fa: - tab_name = "🌐 خاطرات عمومی (کل سیستم)" if view_type == "global" else "👤 خاطرات خصوصی (اختصاصی شما)" + if view_type == "project": + tab_name = f"📁 خاطرات اختصاصی پروژه ({escape_html(proj_name)})" + tab_desc = "این خاطرات فقط هنگام فعالیت در همین پروژه به هوش مصنوعی تزریق می‌شوند." + elif view_type == "user": + tab_name = "👤 خاطرات شخصی من (سراسری)" + tab_desc = "این خاطرات مربوط به شخص شماست و در تمام پروژه‌ها اعمال می‌گردد." + else: + tab_name = "🌐 قوانین و خاطرات عمومی (کل سرور و کاربران)" + tab_desc = "این قوانین برای همه کاربران تزریق می‌شوند (ویرایش و حذف فقط توسط مدیر)." + header = ( - f"🧠 کنترل‌پنل حافظه هوشمند هوش مصنوعی (AI Long-Term Memory)\n\n" + f"🧠 کنترل‌پنل حافظه هوشمند ۳ لایه (AI Memory Dashboard)\n\n" f"• 📂 بخش فعال: {tab_name}\n" - f"• 📊 آمار کل: {stats['total_memories']} خاطره ({stats['global_memories']} عمومی | {stats['private_memories']} خصوصی)\n\n" + f"• ℹ️ {tab_desc}\n" + f"• 📊 آمار: {stats['current_project_memories']} پروژه | {stats['current_user_memories']} کاربر | {stats['global_memories']} عمومی\n\n" ) if not memories: body = ( f"ℹ️ در این بخش هنوز هیچ خاطره‌ای ثبت نشده است.\n\n" - f"💡 یادگیری خودکار: هوش مصنوعی به صورت خودکار در خلال گفتگوها، عادات، نام و نکات مهم شما را استخراج و ذخیره می‌کند." + f"💡 یادگیری خودکار: هوش مصنوعی در حین گفتگوها نکات مهم مربوط به این بخش را خودکار استخراج و ثبت می‌کند." ) else: body_lines = [f"لیست خاطرات (صفحه {page + 1} از {max_pages}):\n"] @@ -1149,16 +1166,26 @@ def build_memory_menu(chat_id: int, view_type: str = "private", page: int = 0) - ) body = "\n\n".join(body_lines) else: - tab_name = "🌐 Global System Memory" if view_type == "global" else "👤 Private User Memory" + if view_type == "project": + tab_name = f"📁 Project Memory ({escape_html(proj_name)})" + tab_desc = "Injected only when working in this project." + elif view_type == "user": + tab_name = "👤 User Profile Memory" + tab_desc = "Applies to you across all your projects." + else: + tab_name = "🌐 Global System Memory" + tab_desc = "Applies to all users (admin-managed)." + header = ( - f"🧠 AI Long-Term Memory Dashboard\n\n" + f"🧠 3-Tier AI Memory Dashboard\n\n" f"• 📂 Active Tab: {tab_name}\n" - f"• 📊 Stats: {stats['total_memories']} total ({stats['global_memories']} global | {stats['private_memories']} private)\n\n" + f"• ℹ️ {tab_desc}\n" + f"• 📊 Stats: {stats['current_project_memories']} project | {stats['current_user_memories']} user | {stats['global_memories']} global\n\n" ) if not memories: - body = "ℹ️ No memories recorded in this section yet.\n\n💡 The AI automatically extracts durable facts and preferences during conversations." + body = "ℹ️ No memories recorded in this section yet." else: - body_lines = [f"Memories list (Page {page + 1} of {max_pages}):\n"] + body_lines = [f"Memories (Page {page + 1} of {max_pages}):\n"] for idx, m in enumerate(paged_memories, start=page * page_size + 1): cat_badge = f"[{m.category}]" if m.category and m.category != "general" else "" body_lines.append( @@ -1172,20 +1199,23 @@ def build_memory_menu(chat_id: int, view_type: str = "private", page: int = 0) - # Build keyboard keyboard = [] - # 1. Tab buttons - tab_priv_text = "👤 خاطرات من (خصوصی) ✓" if view_type == "private" else "👤 خاطرات من (خصوصی)" - tab_glob_text = "🌐 خاطرات عمومی سیستم ✓" if view_type == "global" else "🌐 خاطرات عمومی سیستم" + # 1. 3 Tab buttons + t_proj = f"📁 پروژه ({proj_name[:10]}) ✓" if view_type == "project" else f"📁 پروژه ({proj_name[:10]})" + t_user = "👤 کاربر (من) ✓" if view_type == "user" else "👤 کاربر (من)" + t_glob = "🌐 عمومی ✓" if view_type == "global" else "🌐 عمومی" if not is_fa: - tab_priv_text = "👤 My Memory ✓" if view_type == "private" else "👤 My Memory" - tab_glob_text = "🌐 Global Memory ✓" if view_type == "global" else "🌐 Global Memory" + t_proj = f"📁 Project ✓" if view_type == "project" else f"📁 Project" + t_user = "👤 User ✓" if view_type == "user" else "👤 User" + t_glob = "🌐 Global ✓" if view_type == "global" else "🌐 Global" keyboard.append([ - InlineKeyboardButton(tab_priv_text, callback_data="mem_tab:private:0"), - InlineKeyboardButton(tab_glob_text, callback_data="mem_tab:global:0"), + InlineKeyboardButton(t_proj, callback_data="mem_tab:project:0"), + InlineKeyboardButton(t_user, callback_data="mem_tab:user:0"), + InlineKeyboardButton(t_glob, callback_data="mem_tab:global:0"), ]) - # 2. Item delete buttons (for paged memories) - can_delete_current = (view_type == "private") or (view_type == "global" and is_admin_user) + # 2. Item delete buttons + can_delete_current = (view_type in ("project", "user")) or (view_type == "global" and is_admin_user) if can_delete_current and paged_memories: del_row = [] for idx, m in enumerate(paged_memories, start=page * page_size + 1): @@ -1206,7 +1236,7 @@ def build_memory_menu(chat_id: int, view_type: str = "private", page: int = 0) - pag_row.append(InlineKeyboardButton("بعدی ➡️" if is_fa else "Next ➡️", callback_data=f"mem_tab:{view_type}:{page + 1}")) keyboard.append(pag_row) - # 4. Clear memory button (if applicable) + # 4. Clear memory button action_row = [] if can_delete_current and total_cnt > 0: clear_label = "🧹 پاکسازی این بخش" if is_fa else "🧹 Clear this section" @@ -3385,39 +3415,96 @@ async def usage_command(update: Update, context: ContextTypes.DEFAULT_TYPE): async def memory_command(update: Update, context: ContextTypes.DEFAULT_TYPE): chat_id = update.effective_chat.id session = session_manager.get_or_create(chat_id) + curr_proj = session_manager.get_current_project(chat_id) is_fa = (session.language or "").lower() in ("fa", "farsi", "persian", "🇮🇷 persian / farsi (فارسی)") is_admin_user = settings.is_admin(chat_id) + from memory_manager import memory_manager if not context.args: - text, markup = build_memory_menu(chat_id, view_type="private", page=0) + text, markup = build_memory_menu(chat_id, view_type="project" if curr_proj else "user", page=0) await update.message.reply_html(text, reply_markup=markup) return subcmd = context.args[0].lower().strip() - from memory_manager import memory_manager + + if subcmd in ("project", "proj", "p"): + text, markup = build_memory_menu(chat_id, view_type="project", page=0) + await update.message.reply_html(text, reply_markup=markup) + return + + if subcmd in ("user", "u", "me", "profile", "private"): + text, markup = build_memory_menu(chat_id, view_type="user", page=0) + await update.message.reply_html(text, reply_markup=markup) + return if subcmd in ("global", "g", "public", "system"): text, markup = build_memory_menu(chat_id, view_type="global", page=0) await update.message.reply_html(text, reply_markup=markup) return - if subcmd in ("private", "p", "my", "user"): - text, markup = build_memory_menu(chat_id, view_type="private", page=0) - await update.message.reply_html(text, reply_markup=markup) + # Add memory manually: /memory add | + if subcmd in ("add", "set", "save") and len(context.args) > 2: + target_type = context.args[1].lower().strip() + if target_type not in ("global", "user", "project"): + target_type = "user" + rest = " ".join(context.args[1:]).strip() + else: + rest = " ".join(context.args[2:]).strip() + + if target_type == "global" and not is_admin_user: + await update.message.reply_html("🚫 خطای دسترسی: فقط مدیر سیستم می‌تواند خاطره عمومی ثبت کند." if is_fa else "🚫 Access Denied.") + return + + if "|" in rest: + key_part, content_part = rest.split("|", 1) + else: + parts = rest.split(None, 1) + key_part = parts[0] + content_part = parts[1] if len(parts) > 1 else "" + + key_clean = key_part.strip().lower() + content_clean = content_part.strip() + if not key_clean or not content_clean: + await update.message.reply_html( + "💡 راهنمای افزودن دستی خاطره:\n/memory add [global|user|project] <key> | <محتوا>\n\nمثال:\n/memory add global default_php | همیشه از PHP مدرن استفاده شود" + if is_fa + else "💡 Usage: /memory add [global|user|project] <key> | <content>" + ) + return + + p_name = curr_proj.name if (curr_proj and target_type == "project") else "default" + item, is_created = memory_manager.save_or_update( + type_=target_type, + key=key_clean, + content=content_clean, + user_id=chat_id, + project_name=p_name if target_type == "project" else None, + category="rule" if target_type == "global" else "preference", + importance=5 if target_type == "global" else 3, + created_by=chat_id, + ) + msg = f"✅ خاطره با موفقیت ثبت شد:\n• 🏷️ بخش: {item.type}\n• 🔑 کلید: {escape_html(item.key)}\n• 📝 محتوا: {escape_html(item.content)}" if is_fa else f"✅ Memory saved: [{item.type}] {item.key}" + text, markup = build_memory_menu(chat_id, view_type=target_type, page=0) + await update.message.reply_html(f"{msg}\n\n{text}", reply_markup=markup) return if subcmd in ("clear", "clean", "purge"): - target_type = "global" if len(context.args) > 1 and context.args[1].lower() in ("global", "g") else "private" + target_type = context.args[1].lower() if len(context.args) > 1 else "project" + if target_type not in ("global", "user", "project"): + target_type = "project" if curr_proj else "user" + p_name = curr_proj.name if curr_proj else "default" try: - cnt = memory_manager.clear_memories(type_=target_type, user_id=chat_id, is_admin=is_admin_user) - type_label = "عمومی" if target_type == "global" else "خصوصی" + cnt = memory_manager.clear_memories( + type_=target_type, user_id=chat_id, project_name=p_name, is_admin=is_admin_user + ) + type_label = f"پروژه {p_name}" if target_type == "project" else ("عمومی" if target_type == "global" else "شخصی کاربر") msg = f"🧹 تعداد {cnt} خاطره {type_label} با موفقیت پاک‌سازی شد." if is_fa else f"🧹 {cnt} {target_type} memories cleared." except PermissionError: msg = "🚫 خطای دسترسی: فقط ادمین مجاز به پاک‌سازی خاطرات عمومی است." if is_fa else "🚫 Access denied." await update.message.reply_html(msg) return - text, markup = build_memory_menu(chat_id, view_type="private", page=0) + text, markup = build_memory_menu(chat_id, view_type="project" if curr_proj else "user", page=0) await update.message.reply_html(text, reply_markup=markup) @@ -4078,6 +4165,7 @@ async def callback_handler(update: Update, context: ContextTypes.DEFAULT_TYPE): session = session_manager.get_or_create(chat_id) curr_proj = session_manager.get_current_project(chat_id) is_fa = (session.language or "").lower() in ("fa", "farsi", "persian", "🇮🇷 persian / farsi (فارسی)") + is_admin_user = settings.is_admin(chat_id) or settings.is_admin(user_id) data = query.data if data == "btn_dashboard": @@ -5190,8 +5278,15 @@ async def callback_handler(update: Update, context: ContextTypes.DEFAULT_TYPE): elif data.startswith("mem_clear_do:"): v_type = data.split(":")[1] from memory_manager import memory_manager + curr_p = session_manager.get_current_project(chat_id) + p_name = curr_p.name if curr_p else "default" try: - cnt = memory_manager.clear_memories(type_=v_type, user_id=chat_id, is_admin=is_admin_user) + cnt = memory_manager.clear_memories( + type_=v_type, + user_id=chat_id, + project_name=p_name if v_type == "project" else None, + is_admin=is_admin_user, + ) await query.answer(f"🧹 تعداد {cnt} خاطره پاک شد." if is_fa else f"🧹 Cleared {cnt} memories.") except PermissionError: await query.answer("🚫 دسترسی غیرمجاز!" if is_fa else "🚫 Permission denied!", show_alert=True) diff --git a/telegram-agy-bot/bot_actions.py b/telegram-agy-bot/bot_actions.py index 81160cd..ac0f06e 100644 --- a/telegram-agy-bot/bot_actions.py +++ b/telegram-agy-bot/bot_actions.py @@ -1087,11 +1087,13 @@ async def execute_action( elif act in ("SAVE_MEMORY", "STORE_MEMORY", "SET_MEMORY", "ADD_MEMORY"): from memory_manager import memory_manager - mem_type = (attrs.get("type") or "private").lower().strip() + raw_type = (attrs.get("type") or "user").lower().strip() key = attrs.get("key") or attrs.get("slug") or attrs.get("name") content = attrs.get("content") or attrs.get("text") or attrs.get("value") or attrs.get("_default") category = (attrs.get("category") or "general").lower().strip() importance_raw = attrs.get("importance") or "1" + req_project = attrs.get("project") or attrs.get("proj") or current_project_name + try: importance = int(importance_raw) except Exception: @@ -1106,10 +1108,18 @@ async def execute_action( created_task, ) - # Security check: Non-admins cannot create global memories - if mem_type == "global" and not is_admin: - logger.warning("Non-admin user %s attempted to create global memory %s; downgraded to private.", chat_id, key) - mem_type = "private" + # Map types: 'project' -> project tier, 'user'/'private' -> user tier, 'global' -> rejected/downgraded for AI + if raw_type in ("project", "proj"): + mem_type = "project" + proj_name = req_project + elif raw_type == "global": + # Global memories are strictly bot-managed by Admin. AI cannot auto-save global memories. + logger.info("AI attempted global memory save for user %s; safely converting to user memory.", chat_id) + mem_type = "user" + proj_name = None + else: + mem_type = "user" + proj_name = None try: item, is_created = memory_manager.save_or_update( @@ -1117,21 +1127,28 @@ async def execute_action( key=key, content=content, user_id=chat_id, + project_name=proj_name, category=category, importance=importance, created_by=chat_id, ) - type_label = "🌐 عمومی (سیستم)" if item.is_global else "👤 خصوصی (شما)" + if item.is_project: + type_label = f"📁 پروژه اختصاصی ({escape_html(proj_name or '')})" + elif item.is_user: + type_label = "👤 کاربر (سراسری برای شما)" + else: + type_label = "🌐 عمومی (سیستم)" + badge = ( f"\n\n🧠 خاطره هوش مصنوعی ثبت شد:\n" - f"• 🏷️ نوع: {type_label}\n" + f"• 🏷️ بخش: {type_label}\n" f"• 🔑 کلید: {escape_html(item.key)}\n" f"• 📂 دسته: {escape_html(item.category)}\n" f"• 📝 محتوا: {escape_html(item.content)}" if is_fa else f"\n\n🧠 AI Memory Saved:\n" - f"• 🏷️ Type: {'Global' if item.is_global else 'Private'}\n" + f"• 🏷️ Scope: {'Project (' + str(proj_name) + ')' if item.is_project else 'User'} \n" f"• 🔑 Key: {escape_html(item.key)}\n" f"• 📂 Category: {escape_html(item.category)}\n" f"• 📝 Content: {escape_html(item.content)}" @@ -1146,11 +1163,12 @@ async def execute_action( elif act in ("UPDATE_MEMORY", "EDIT_MEMORY"): from memory_manager import memory_manager - mem_type = (attrs.get("type") or "private").lower().strip() + raw_type = (attrs.get("type") or "user").lower().strip() key = attrs.get("key") or attrs.get("slug") content = attrs.get("content") or attrs.get("text") or attrs.get("_default") category = attrs.get("category") importance_raw = attrs.get("importance") + req_project = attrs.get("project") or attrs.get("proj") or current_project_name if not key or not content: return ( @@ -1161,11 +1179,15 @@ async def execute_action( created_task, ) - if mem_type == "global" and not is_admin: - mem_type = "private" + if raw_type in ("project", "proj"): + mem_type = "project" + proj_name = req_project + else: + mem_type = "user" + proj_name = None try: - existing = memory_manager.get_by_key(type_=mem_type, key=key, user_id=chat_id) + existing = memory_manager.get_by_key(type_=mem_type, key=key, user_id=chat_id, project_name=proj_name) cat = category or (existing.category if existing else "general") imp = int(importance_raw) if importance_raw and importance_raw.isdigit() else (existing.importance if existing else 1) item, is_created = memory_manager.save_or_update( @@ -1173,20 +1195,21 @@ async def execute_action( key=key, content=content, user_id=chat_id, + project_name=proj_name, category=cat, importance=imp, created_by=chat_id, ) - type_label = "🌐 عمومی (سیستم)" if item.is_global else "👤 خصوصی (شما)" + type_label = f"📁 پروژه ({escape_html(proj_name or '')})" if item.is_project else "👤 کاربر (سراسری)" badge = ( f"\n\n🧠 خاطره هوش مصنوعی به‌روزرسانی شد:\n" - f"• 🏷️ نوع: {type_label}\n" + f"• 🏷️ بخش: {type_label}\n" f"• 🔑 کلید: {escape_html(item.key)}\n" f"• 📝 محتوای جدید: {escape_html(item.content)}" if is_fa else f"\n\n🧠 AI Memory Updated:\n" - f"• 🏷️ Type: {'Global' if item.is_global else 'Private'}\n" + f"• 🏷️ Scope: {type_label}\n" f"• 🔑 Key: {escape_html(item.key)}\n" f"• 📝 New Content: {escape_html(item.content)}" ) @@ -1202,13 +1225,19 @@ async def execute_action( mem_id_raw = attrs.get("id") key = attrs.get("key") or attrs.get("slug") or attrs.get("_default") - mem_type = (attrs.get("type") or "private").lower().strip() + raw_type = (attrs.get("type") or "user").lower().strip() + req_project = attrs.get("project") or attrs.get("proj") or current_project_name + + mem_type = "project" if raw_type in ("project", "proj") else "user" + proj_name = req_project if mem_type == "project" else None try: if mem_id_raw and mem_id_raw.isdigit(): ok = memory_manager.delete_by_id(int(mem_id_raw), user_id=chat_id, is_admin=is_admin) elif key: - ok = memory_manager.delete_by_key(type_=mem_type, key=key, user_id=chat_id, is_admin=is_admin) + ok = memory_manager.delete_by_key( + type_=mem_type, key=key, user_id=chat_id, project_name=proj_name, is_admin=is_admin + ) else: return "\n⚠️ لطفاً شناسه یا کلید خاطره جهت حذف را مشخص کنید." if is_fa else "\n⚠️ Please specify memory id or key to delete.", side_effects, created_task @@ -1217,7 +1246,7 @@ async def execute_action( else: badge = f"\n⚠️ خاطره‌ای با این مشخصات یافت نشد." if is_fa else f"\n⚠️ Memory not found." except PermissionError: - badge = "\n🚫 خطای دسترسی: ویرایش یا حذف خاطرات عمومی تنها توسط مدیر سیستم امکان‌پذیر است." if is_fa else "\n🚫 Access Denied: Only administrators can modify global memories." + badge = "\n🚫 خطای دسترسی: فقط مالک یا مدیر می‌تواند این خاطره را حذف کند." if is_fa else "\n🚫 Access Denied." except Exception as e: badge = f"\n⚠️ خطا در حذف خاطره: {escape_html(str(e))}" return badge, side_effects, created_task @@ -1228,18 +1257,36 @@ async def execute_action( elif act in ("CLEAR_MEMORY", "PURGE_MEMORY", "RESET_MEMORY"): from memory_manager import memory_manager - mem_type = (attrs.get("type") or "private").lower().strip() + raw_type = (attrs.get("type") or "user").lower().strip() + req_project = attrs.get("project") or attrs.get("proj") or current_project_name + + if raw_type in ("project", "proj"): + mem_type = "project" + proj_name = req_project + type_label = f"پروژه {proj_name}" + elif raw_type == "global": + if not is_admin: + return "\n🚫 خطای دسترسی: پاک‌سازی خاطرات عمومی تنها توسط مدیر امکان‌پذیر است." if is_fa else "\n🚫 Access Denied: Only admins can clear global memories.", side_effects, created_task + mem_type = "global" + proj_name = None + type_label = "عمومی سیستم" + else: + mem_type = "user" + proj_name = None + type_label = "شخصی کاربر" + try: - count = memory_manager.clear_memories(type_=mem_type, user_id=chat_id, is_admin=is_admin) - type_label = "عمومی" if mem_type == "global" else "خصوصی" + count = memory_manager.clear_memories( + type_=mem_type, user_id=chat_id, project_name=proj_name, is_admin=is_admin + ) badge = ( f"\n\n🧹 حافظه {type_label} پاک‌سازی شد ({count} مورد حذف گردید)." if is_fa else - f"\n\n🧹 {mem_type.capitalize()} memory cleared ({count} items purged)." + f"\n\n🧹 {type_label} memory cleared ({count} items purged)." ) except PermissionError: - badge = "\n🚫 خطای دسترسی: پاک‌سازی خاطرات عمومی تنها توسط مدیر امکان‌پذیر است." if is_fa else "\n🚫 Access Denied: Only admins can clear global memories." + badge = "\n🚫 خطای دسترسی: عملیات مجاز نیست." if is_fa else "\n🚫 Access Denied." except Exception as e: badge = f"\n⚠️ خطا در پاک‌سازی حافظه: {escape_html(str(e))}" return badge, side_effects, created_task @@ -1392,11 +1439,11 @@ def get_ai_bot_actions_instruction(lang: str = "fa") -> str: " [[GIT_INIT: project=\"\"]]\n\n" "17. Restart Telegram Bot Service:\n" " [[RESTART_BOT]]\n\n" - "18. Long-Term AI Memory Management:\n" - " [[SAVE_MEMORY: type=\"private|global\", key=\"\", category=\"\", content=\"\"]]\n" - " (Saves durable facts/preferences. type defaults to 'private'. Only admin can create 'global').\n" - " [[UPDATE_MEMORY: key=\"\", content=\"\"]]\n" - " [[DELETE_MEMORY: key=\"\"]]\n" - " [[CLEAR_MEMORY: type=\"private|global\"]]\n\n" + "18. Long-Term AI Memory Management (3-Tier: User & Project):\n" + " [[SAVE_MEMORY: type=\"user|project\", key=\"\", category=\"\", content=\"\"]]\n" + " (Use type='user' for personal user profile/habits, or type='project' for current project architecture/decisions. Global memory is read-only for AI).\n" + " [[UPDATE_MEMORY: type=\"user|project\", key=\"\", content=\"\"]]\n" + " [[DELETE_MEMORY: type=\"user|project\", key=\"\"]]\n" + " [[CLEAR_MEMORY: type=\"user|project\"]]\n\n" "Always explain to the user in a friendly and professional tone what actions have been performed." ) diff --git a/telegram-agy-bot/data/memory.db b/telegram-agy-bot/data/memory.db index 02e10dddf70200490d34264579aa18da6791b57c..4b1e539bab017ce342180a92efb477c1688063d5 100644 GIT binary patch literal 32768 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 Vq*}$PT!4}|f5!@3rD%>A-< diff --git a/telegram-agy-bot/memory_manager.py b/telegram-agy-bot/memory_manager.py index 01b4cd6..b34dfee 100644 --- a/telegram-agy-bot/memory_manager.py +++ b/telegram-agy-bot/memory_manager.py @@ -17,11 +17,12 @@ DB_PATH = DATA_DIR / "memory.db" @dataclass class MemoryItem: id: int - type: str # 'global' or 'private' - user_id: Optional[int] # None for global, chat_id for private - key: str - category: str # 'rule', 'preference', 'tech_stack', 'fact', 'workflow', 'general' - content: str + type: str # 'global', 'user', 'project' + user_id: Optional[int] = None # None for global, chat_id for user/project + project_name: Optional[str] = None # None for global/user, project_name for project + key: str = "" + category: str = "general" # 'rule', 'preference', 'tech_stack', 'fact', 'workflow', 'general' + content: str = "" importance: int = 1 created_by: Optional[int] = None created_at: float = field(default_factory=time.time) @@ -35,8 +36,12 @@ class MemoryItem: return self.type == "global" @property - def is_private(self) -> bool: - return self.type == "private" + def is_user(self) -> bool: + return self.type == "user" + + @property + def is_project(self) -> bool: + return self.type == "project" class MemoryManager: @@ -53,41 +58,81 @@ class MemoryManager: return conn def _init_db(self): - """Initializes tables and indexes if they do not exist.""" + """Initializes tables and indexes, migrating from old schema if needed.""" try: with self._get_connection() as conn: - conn.execute(""" - CREATE TABLE IF NOT EXISTS memories ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - type TEXT NOT NULL CHECK(type IN ('global', 'private')), - user_id INTEGER, - key TEXT NOT NULL, - category TEXT NOT NULL DEFAULT 'general', - content TEXT NOT NULL, - importance INTEGER NOT NULL DEFAULT 1, - created_by INTEGER, - created_at REAL NOT NULL, - updated_at REAL NOT NULL - ); - """) - # Partial unique indexes to properly handle NULL user_id for global memories + # Check if old memories table exists and needs migration + cur = conn.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='memories';") + table_exists = cur.fetchone() is not None + + if table_exists: + # Check columns in existing table + cur = conn.execute("PRAGMA table_info(memories);") + cols = [row["name"] for row in cur.fetchall()] + if "project_name" not in cols: + logger.info("Migrating memories table to support 3-tier hierarchy (adding project_name)...") + # Migrate table + conn.execute(""" + CREATE TABLE memories_new ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + type TEXT NOT NULL CHECK(type IN ('global', 'user', 'project', 'private')), + user_id INTEGER, + project_name TEXT, + key TEXT NOT NULL, + category TEXT NOT NULL DEFAULT 'general', + content TEXT NOT NULL, + importance INTEGER NOT NULL DEFAULT 1, + created_by INTEGER, + created_at REAL NOT NULL, + updated_at REAL NOT NULL + ); + """) + conn.execute(""" + INSERT INTO memories_new (id, type, user_id, project_name, key, category, content, importance, created_by, created_at, updated_at) + SELECT id, CASE WHEN type='private' THEN 'user' ELSE type END, user_id, NULL, key, category, content, importance, created_by, created_at, updated_at + FROM memories; + """) + conn.execute("DROP TABLE memories;") + conn.execute("ALTER TABLE memories_new RENAME TO memories;") + else: + conn.execute(""" + CREATE TABLE memories ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + type TEXT NOT NULL CHECK(type IN ('global', 'user', 'project', 'private')), + user_id INTEGER, + project_name TEXT, + key TEXT NOT NULL, + category TEXT NOT NULL DEFAULT 'general', + content TEXT NOT NULL, + importance INTEGER NOT NULL DEFAULT 1, + created_by INTEGER, + created_at REAL NOT NULL, + updated_at REAL NOT NULL + ); + """) + + # Create partial unique indexes for each tier conn.execute(""" CREATE UNIQUE INDEX IF NOT EXISTS idx_memories_global_key ON memories(type, key) WHERE type = 'global'; """) conn.execute(""" - CREATE UNIQUE INDEX IF NOT EXISTS idx_memories_private_key - ON memories(type, user_id, key) WHERE type = 'private'; + CREATE UNIQUE INDEX IF NOT EXISTS idx_memories_user_key + ON memories(type, user_id, key) WHERE type IN ('user', 'private'); """) conn.execute(""" - CREATE INDEX IF NOT EXISTS idx_memories_user_type - ON memories(type, user_id); + CREATE UNIQUE INDEX IF NOT EXISTS idx_memories_project_key + ON memories(type, user_id, project_name, key) WHERE type = 'project'; + """) + conn.execute(""" + CREATE INDEX IF NOT EXISTS idx_memories_lookup + ON memories(type, user_id, project_name); """) conn.execute(""" CREATE INDEX IF NOT EXISTS idx_memories_category ON memories(category); """) - logger.info("Memory database initialized successfully at %s", self.db_path) + logger.info("3-Tier Memory database initialized successfully at %s", self.db_path) except Exception as e: logger.error("Failed to initialize memory database: %s", e) raise @@ -98,22 +143,32 @@ class MemoryManager: key: str, content: str, user_id: Optional[int] = None, + project_name: Optional[str] = None, category: str = "general", importance: int = 1, created_by: Optional[int] = None, ) -> Tuple[MemoryItem, bool]: """ - Saves or updates a memory. + Saves or updates a memory in one of the 3 tiers (global, user, project). Returns: (MemoryItem, is_created: bool) """ type_ = type_.lower().strip() - if type_ not in ("global", "private"): - raise ValueError("Memory type must be 'global' or 'private'") + if type_ == "private": + type_ = "user" + if type_ not in ("global", "user", "project"): + raise ValueError("Memory type must be 'global', 'user', or 'project'") if type_ == "global": user_id = None - elif user_id is None: - raise ValueError("Private memory requires a valid user_id") + project_name = None + elif type_ == "user": + if user_id is None: + raise ValueError("User memory requires a valid user_id") + project_name = None + elif type_ == "project": + if user_id is None or not project_name: + raise ValueError("Project memory requires both user_id and project_name") + project_name = project_name.strip() key = key.strip().lower() if not key: @@ -128,17 +183,22 @@ class MemoryManager: now = time.time() with self._get_connection() as conn: - # Check if exists + # Check if existing item exists if type_ == "global": cur = conn.execute( "SELECT id, created_at, created_by FROM memories WHERE type = 'global' AND key = ?", (key,), ) - else: + elif type_ == "user": cur = conn.execute( - "SELECT id, created_at, created_by FROM memories WHERE type = 'private' AND user_id = ? AND key = ?", + "SELECT id, created_at, created_by FROM memories WHERE type IN ('user', 'private') AND user_id = ? AND key = ?", (user_id, key), ) + else: # project + cur = conn.execute( + "SELECT id, created_at, created_by FROM memories WHERE type = 'project' AND user_id = ? AND project_name = ? AND key = ?", + (user_id, project_name, key), + ) row = cur.fetchone() if row: @@ -148,10 +208,10 @@ class MemoryManager: conn.execute( """ UPDATE memories - SET category = ?, content = ?, importance = ?, updated_at = ? + SET type = ?, category = ?, content = ?, importance = ?, updated_at = ? WHERE id = ? """, - (category, content, importance, now, mem_id), + (type_, category, content, importance, now, mem_id), ) is_created = False created_at = orig_created_at @@ -159,10 +219,10 @@ class MemoryManager: else: cur = conn.execute( """ - INSERT INTO memories (type, user_id, key, category, content, importance, created_by, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) + INSERT INTO memories (type, user_id, project_name, key, category, content, importance, created_by, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """, - (type_, user_id, key, category, content, importance, created_by, now, now), + (type_, user_id, project_name, key, category, content, importance, created_by, now, now), ) mem_id = cur.lastrowid is_created = True @@ -173,6 +233,7 @@ class MemoryManager: id=mem_id, type=type_, user_id=user_id, + project_name=project_name, key=key, category=category, content=content, @@ -182,12 +243,13 @@ class MemoryManager: updated_at=now, ) logger.info( - "%s memory [id=%d, key=%s, type=%s, user=%s]", + "%s memory [id=%d, type=%s, key=%s, user=%s, proj=%s]", "Created" if is_created else "Updated", mem_id, - key, type_, + key, user_id, + project_name, ) return item, is_created @@ -199,17 +261,26 @@ class MemoryManager: return MemoryItem(**dict(row)) return None - def get_by_key(self, type_: str, key: str, user_id: Optional[int] = None) -> Optional[MemoryItem]: + def get_by_key( + self, type_: str, key: str, user_id: Optional[int] = None, project_name: Optional[str] = None + ) -> Optional[MemoryItem]: type_ = type_.lower().strip() + if type_ == "private": + type_ = "user" key = key.lower().strip() with self._get_connection() as conn: if type_ == "global": cur = conn.execute("SELECT * FROM memories WHERE type = 'global' AND key = ?", (key,)) - else: + elif type_ == "user": cur = conn.execute( - "SELECT * FROM memories WHERE type = 'private' AND user_id = ? AND key = ?", + "SELECT * FROM memories WHERE type IN ('user', 'private') AND user_id = ? AND key = ?", (user_id, key), ) + else: # project + cur = conn.execute( + "SELECT * FROM memories WHERE type = 'project' AND user_id = ? AND project_name = ? AND key = ?", + (user_id, project_name, key), + ) row = cur.fetchone() if row: return MemoryItem(**dict(row)) @@ -235,16 +306,32 @@ class MemoryManager: with self._get_connection() as conn: if category: cur = conn.execute( - "SELECT * FROM memories WHERE type = 'private' AND user_id = ? AND category = ? ORDER BY importance DESC, updated_at DESC LIMIT ?", + "SELECT * FROM memories WHERE type IN ('user', 'private') AND user_id = ? AND category = ? ORDER BY importance DESC, updated_at DESC LIMIT ?", (user_id, category.lower().strip(), limit), ) else: cur = conn.execute( - "SELECT * FROM memories WHERE type = 'private' AND user_id = ? ORDER BY importance DESC, updated_at DESC LIMIT ?", + "SELECT * FROM memories WHERE type IN ('user', 'private') AND user_id = ? ORDER BY importance DESC, updated_at DESC LIMIT ?", (user_id, limit), ) return [MemoryItem(**dict(r)) for r in cur.fetchall()] + def get_project_memories( + self, user_id: int, project_name: str, category: Optional[str] = None, limit: int = 100 + ) -> List[MemoryItem]: + with self._get_connection() as conn: + if category: + cur = conn.execute( + "SELECT * FROM memories WHERE type = 'project' AND user_id = ? AND project_name = ? AND category = ? ORDER BY importance DESC, updated_at DESC LIMIT ?", + (user_id, project_name, category.lower().strip(), limit), + ) + else: + cur = conn.execute( + "SELECT * FROM memories WHERE type = 'project' AND user_id = ? AND project_name = ? ORDER BY importance DESC, updated_at DESC LIMIT ?", + (user_id, project_name, limit), + ) + return [MemoryItem(**dict(r)) for r in cur.fetchall()] + def delete_by_id(self, memory_id: int, user_id: Optional[int] = None, is_admin: bool = False) -> bool: with self._get_connection() as conn: cur = conn.execute("SELECT * FROM memories WHERE id = ?", (memory_id,)) @@ -254,52 +341,86 @@ class MemoryManager: mem = MemoryItem(**dict(row)) if mem.type == "global" and not is_admin: raise PermissionError("Only administrators can delete global memories") - if mem.type == "private" and mem.user_id != user_id and not is_admin: - raise PermissionError("Cannot delete another user's private memory") + if mem.type in ("user", "project", "private") and mem.user_id != user_id and not is_admin: + raise PermissionError("Cannot delete another user's memory") conn.execute("DELETE FROM memories WHERE id = ?", (memory_id,)) logger.info("Deleted memory [id=%d, key=%s, type=%s]", memory_id, mem.key, mem.type) return True def delete_by_key( - self, type_: str, key: str, user_id: Optional[int] = None, is_admin: bool = False + self, + type_: str, + key: str, + user_id: Optional[int] = None, + project_name: Optional[str] = None, + is_admin: bool = False, ) -> bool: type_ = type_.lower().strip() + if type_ == "private": + type_ = "user" key = key.lower().strip() with self._get_connection() as conn: if type_ == "global": if not is_admin: raise PermissionError("Only administrators can delete global memories") cur = conn.execute("DELETE FROM memories WHERE type = 'global' AND key = ?", (key,)) - else: + elif type_ == "user": if user_id is None: return False cur = conn.execute( - "DELETE FROM memories WHERE type = 'private' AND user_id = ? AND key = ?", + "DELETE FROM memories WHERE type IN ('user', 'private') AND user_id = ? AND key = ?", (user_id, key), ) + else: # project + if user_id is None or not project_name: + return False + cur = conn.execute( + "DELETE FROM memories WHERE type = 'project' AND user_id = ? AND project_name = ? AND key = ?", + (user_id, project_name, key), + ) deleted = cur.rowcount > 0 if deleted: - logger.info("Deleted memory by key [key=%s, type=%s, user=%s]", key, type_, user_id) + logger.info("Deleted memory by key [key=%s, type=%s, user=%s, proj=%s]", key, type_, user_id, project_name) return deleted - def clear_memories(self, type_: str, user_id: Optional[int] = None, is_admin: bool = False) -> int: + def clear_memories( + self, + type_: str, + user_id: Optional[int] = None, + project_name: Optional[str] = None, + is_admin: bool = False, + ) -> int: type_ = type_.lower().strip() + if type_ == "private": + type_ = "user" with self._get_connection() as conn: if type_ == "global": if not is_admin: raise PermissionError("Only administrators can clear global memories") cur = conn.execute("DELETE FROM memories WHERE type = 'global'") - else: + elif type_ == "user": if user_id is None: return 0 - cur = conn.execute("DELETE FROM memories WHERE type = 'private' AND user_id = ?", (user_id,)) + cur = conn.execute("DELETE FROM memories WHERE type IN ('user', 'private') AND user_id = ?", (user_id,)) + else: # project + if user_id is None or not project_name: + return 0 + cur = conn.execute( + "DELETE FROM memories WHERE type = 'project' AND user_id = ? AND project_name = ?", + (user_id, project_name), + ) count = cur.rowcount - logger.info("Cleared %d %s memories for user %s", count, type_, user_id) + logger.info("Cleared %d %s memories for user %s (proj: %s)", count, type_, user_id, project_name) return count def search_memories( - self, query: str, user_id: Optional[int] = None, type_: Optional[str] = None, limit: int = 50 + self, + query: str, + user_id: Optional[int] = None, + project_name: Optional[str] = None, + type_: Optional[str] = None, + limit: int = 50, ) -> List[MemoryItem]: q = f"%{query.strip().lower()}%" with self._get_connection() as conn: @@ -312,24 +433,33 @@ class MemoryManager: """, (q, q, q, limit), ) - elif type_ == "private" and user_id is not None: + elif type_ == "user" and user_id is not None: cur = conn.execute( """ SELECT * FROM memories - WHERE type = 'private' AND user_id = ? AND (key LIKE ? OR content LIKE ? OR category LIKE ?) + WHERE type IN ('user', 'private') AND user_id = ? AND (key LIKE ? OR content LIKE ? OR category LIKE ?) ORDER BY importance DESC, updated_at DESC LIMIT ? """, (user_id, q, q, q, limit), ) + elif type_ == "project" and user_id is not None and project_name: + cur = conn.execute( + """ + SELECT * FROM memories + WHERE type = 'project' AND user_id = ? AND project_name = ? AND (key LIKE ? OR content LIKE ? OR category LIKE ?) + ORDER BY importance DESC, updated_at DESC LIMIT ? + """, + (user_id, project_name, q, q, q, limit), + ) elif user_id is not None: cur = conn.execute( """ SELECT * FROM memories - WHERE (type = 'global' OR (type = 'private' AND user_id = ?)) + WHERE (type = 'global' OR (type IN ('user', 'private') AND user_id = ?) OR (type = 'project' AND user_id = ? AND project_name = ?)) AND (key LIKE ? OR content LIKE ? OR category LIKE ?) - ORDER BY type DESC, importance DESC, updated_at DESC LIMIT ? + ORDER BY importance DESC, updated_at DESC LIMIT ? """, - (user_id, q, q, q, limit), + (user_id, user_id, project_name or "", q, q, q, limit), ) else: cur = conn.execute( @@ -342,66 +472,102 @@ class MemoryManager: ) return [MemoryItem(**dict(r)) for r in cur.fetchall()] - def format_memories_for_prompt(self, user_id: Optional[int] = None) -> Optional[str]: + def format_memories_for_prompt( + self, user_id: Optional[int] = None, project_name: Optional[str] = None + ) -> Optional[str]: """ - Formats all applicable memories (Global + User's Private) into a concise, token-efficient - system instruction block for the AI model. - Returns None if no memories are found. + Formats all 3 tiers of memories into a structured, concise instruction block for AI: + 1. 🌐 Global System Rules + 2. 👤 User Personal Preferences & Profile + 3. 📁 Active Project Specific Knowledge """ globals_list = self.get_global_memories(limit=50) - privates_list = self.get_user_memories(user_id=user_id, limit=50) if user_id else [] + users_list = self.get_user_memories(user_id=user_id, limit=50) if user_id else [] + projects_list = ( + self.get_project_memories(user_id=user_id, project_name=project_name, limit=50) + if user_id and project_name + else [] + ) - if not globals_list and not privates_list: + if not globals_list and not users_list and not projects_list: return None lines = [ - "[SYSTEM INSTRUCTION: AI PERSISTENT MEMORY & CONTINUOUS LEARNING]", - "You have access to persistent long-term memory containing verified system rules and user context.", - "Use this knowledge to maintain continuity and customize all your responses accordingly.\n" + "[SYSTEM INSTRUCTION: AI PERSISTENT HIERARCHICAL MEMORY & CONTINUOUS LEARNING]", + "You have access to persistent 3-tier long-term memory containing verified system rules, project context, and user profile.", + "Use this knowledge to maintain continuity and customize all your responses accordingly.\n", + "⚖️ STRICT PRECEDENCE HIERARCHY (سلسله‌مراتب قطعی اولویت و حل تعارض):", + "1. 🥇 Tier 1 (Highest Authority): Global System Rules ALWAYS strictly supersede all Project and User instructions.", + "2. 🥈 Tier 2 (Intermediate Authority): Active Project Knowledge & Rules ALWAYS supersede general User preferences inside this project.", + "3. 🥉 Tier 3 (Baseline Authority): User Personal Preferences apply across projects as defaults when not overridden by Project or Global rules.\n" ] if globals_list: - lines.append("🌐 GLOBAL SYSTEM MEMORY (قوانین و اطلاعات عمومی سیستم):") + lines.append("🌐 1. GLOBAL SYSTEM RULES & KNOWLEDGE (قوانین عمومی سیستم - بالاترین اولویت):") for m in globals_list: cat = f"[{m.category}]" if m.category and m.category != "general" else "" lines.append(f"• [key: {m.key}] {cat} {m.content}") lines.append("") - if privates_list: - lines.append(f"👤 USER PRIVATE MEMORY (خاطرات و ترجیحات اختصاصی این کاربر):") - for m in privates_list: + if projects_list: + lines.append(f"📁 2. ACTIVE PROJECT KNOWLEDGE [پروژه: {project_name}] (دانش و تصمیمات اختصاصی این پروژه - اولویت دوم):") + for m in projects_list: + cat = f"[{m.category}]" if m.category and m.category != "general" else "" + lines.append(f"• [key: {m.key}] {cat} {m.content}") + lines.append("") + + if users_list: + lines.append("👤 3. USER PERSONAL PROFILE & PREFERENCES (ترجیحات و مشخصات شخصی کاربر - اولویت پایه):") + for m in users_list: cat = f"[{m.category}]" if m.category and m.category != "general" else "" lines.append(f"• [key: {m.key}] {cat} {m.content}") lines.append("") lines.extend([ "🧠 AUTONOMOUS MEMORY MANAGEMENT RULES:", - "1. When the user shares important facts, personal preferences, coding conventions, or rules that should persist, output the action tag:", - ' [[SAVE_MEMORY: type="private|global", key="", category="preference|rule|tech_stack|fact", content=""]]', - "2. Note: Non-admin users can ONLY save 'private' memories. Only system administrators can set 'global' memories.", - "3. If a past memory is superseded or changed, update it with the same key or use [[UPDATE_MEMORY: key=\"\", content=\"\"]].", - "4. If the user explicitly asks to forget something, use [[DELETE_MEMORY: key=\"\"]].", + "1. When user shares durable facts, choose the appropriate tier:", + ' • User-level (developer habits, preferred tools, personal info): type="user"', + ' • Project-level (architecture, database schema, libraries, API designs, fixed bugs in this project): type="project"', + ' Action Tag: [[SAVE_MEMORY: type="user|project", key="", category="preference|rule|tech_stack|fact", content=""]]', + "2. Note: Global memory is read-only for AI and managed exclusively by system administrators via the Telegram Bot UI.", + "3. If past memory is superseded, update it: [[UPDATE_MEMORY: type=\"user|project\", key=\"\", content=\"\"]].", + "4. If user asks to forget something: [[DELETE_MEMORY: type=\"user|project\", key=\"\"]].", "5. Do NOT store temporary or trivial small-talk. Only store enduring and valuable knowledge." ]) return "\n".join(lines) - def get_stats(self) -> Dict[str, Any]: + def get_stats(self, user_id: Optional[int] = None, project_name: Optional[str] = None) -> Dict[str, Any]: with self._get_connection() as conn: cur = conn.execute("SELECT COUNT(*) as cnt FROM memories WHERE type = 'global'") global_count = cur.fetchone()["cnt"] - cur = conn.execute("SELECT COUNT(*) as cnt FROM memories WHERE type = 'private'") - private_count = cur.fetchone()["cnt"] - - cur = conn.execute("SELECT COUNT(DISTINCT user_id) as cnt FROM memories WHERE type = 'private'") + cur = conn.execute("SELECT COUNT(*) as cnt FROM memories WHERE type IN ('user', 'private')") user_count = cur.fetchone()["cnt"] + cur = conn.execute("SELECT COUNT(*) as cnt FROM memories WHERE type = 'project'") + project_count = cur.fetchone()["cnt"] + + cur = conn.execute("SELECT COUNT(DISTINCT user_id) as cnt FROM memories WHERE type IN ('user', 'project', 'private')") + users_with_mem = cur.fetchone()["cnt"] + + this_user_count = 0 + this_project_count = 0 + if user_id: + cur = conn.execute("SELECT COUNT(*) as cnt FROM memories WHERE type IN ('user', 'private') AND user_id = ?", (user_id,)) + this_user_count = cur.fetchone()["cnt"] + if project_name: + cur = conn.execute("SELECT COUNT(*) as cnt FROM memories WHERE type = 'project' AND user_id = ? AND project_name = ?", (user_id, project_name)) + this_project_count = cur.fetchone()["cnt"] + return { - "total_memories": global_count + private_count, + "total_memories": global_count + user_count + project_count, "global_memories": global_count, - "private_memories": private_count, - "users_with_memory": user_count, + "user_memories": user_count, + "project_memories": project_count, + "users_with_memory": users_with_mem, + "current_user_memories": this_user_count, + "current_project_memories": this_project_count, } diff --git a/telegram-agy-bot/sessions.json b/telegram-agy-bot/sessions.json index 8dae7dc..5cb7154 100644 --- a/telegram-agy-bot/sessions.json +++ b/telegram-agy-bot/sessions.json @@ -42,9 +42,9 @@ "model": "gemini-3.7-flash-auto", "effort": "high", "language": "fa", - "last_context_length": 63109, - "last_total_tokens": 721532, - "last_response": "# \ud83e\udde0 \u0646\u0642\u0634\u0647 \u0631\u0627\u0647 \u062c\u0627\u0645\u0639 \u0628\u0627\u0632\u0637\u0631\u0627\u062d\u06cc \u00ab\u0633\u06cc\u0633\u062a\u0645 \u062d\u0627\u0641\u0638\u0647 \u06f3 \u0644\u0627\u06cc\u0647 \u0647\u0648\u0634\u0645\u0646\u062f\u00bb (3-Tier AI Memory Architecture)\n\n\u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u06cc\u0627\u0632\u0645\u0646\u062f\u06cc\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u060c \u0633\u0627\u062e\u062a\u0627\u0631 \u062d\u0627\u0641\u0638\u0647 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0627\u0632 \u0645\u062f\u0644 \u062f\u0648\u06af\u0627\u0646\u0647 \u0628\u0647 **\u0645\u062f\u0644 \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628\u06cc \u06f3 \u0644\u0627\u06cc\u0647 (\u0639\u0645\u0648\u0645\u06cc\u060c \u0634\u062e\u0635\u06cc \u06a9\u0627\u0631\u0628\u0631\u060c \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u067e\u0631\u0648\u0698\u0647)** \u0627\u0631\u062a\u0642\u0627 \u0645\u06cc\u200c\u06cc\u0627\u0628\u062f. \n\n---\n\n## \ud83c\udfdb\ufe0f \u06f1. \u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u0627\u062a\u0631\u06cc\u0633 \u06f3 \u0644\u0627\u06cc\u0647 \u062d\u0627\u0641\u0638\u0647\n\n```\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 \ud83c\udf10 \u06f1. \u062d\u0627\u0641\u0638\u0647 \u0639\u0645\u0648\u0645\u06cc (Global) \u2502\n \u2502 \u2022 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0648 \u0633\u06cc\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0644 \u0633\u06cc\u0633\u062a\u0645 \u0648 \u0633\u0631\u0648\u0631 \u2502\n \u2502 \u2022 \u0641\u0642\u0637 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0628\u0627\u062a \u0648 \u0645\u062f\u06cc\u0631 \u0642\u0627\u0628\u0644 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u2502\n \u2502 \u2022 \u062a\u0632\u0631\u06cc\u0642 \u0628\u0647 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u062a\u0645\u0627\u0645 \u0633\u0634\u0646\u200c\u0647\u0627 \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502\n \u25bc\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 \ud83d\udc64 \u06f2. \u062d\u0627\u0641\u0638\u0647 \u06a9\u0627\u0631\u0628\u0631 (User) \u2502\n \u2502 \u2022 \u0639\u0644\u0627\u06cc\u0642 \u0634\u062e\u0635\u06cc\u060c \u0646\u0627\u0645\u060c \u0633\u0628\u06a9 \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u0648 \u0639\u0627\u062f\u0627\u062a \u2502\n \u2502 \u2022 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u0648\u0633\u0637 AI + \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062f\u0631 \u0631\u0628\u0627\u062a\u2502\n \u2502 \u2022 \u062a\u0632\u0631\u06cc\u0642 \u0628\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc\u0634 \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502\n \u25bc\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 \ud83d\udcc1 \u06f3. \u062d\u0627\u0641\u0638\u0647 \u067e\u0631\u0648\u0698\u0647 (Project) \u2502\n \u2502 \u2022 \u0645\u0639\u0645\u0627\u0631\u06cc \u067e\u0631\u0648\u0698\u0647\u060c \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u060c \u062a\u0635\u0645\u06cc\u0645\u0627\u062a \u0641\u0646\u06cc \u2502\n \u2502 \u2022 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u0648\u0633\u0637 AI + \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062f\u0631 \u0631\u0628\u0627\u062a\u2502\n \u2502 \u2022 \u062a\u0632\u0631\u06cc\u0642 \u0641\u0642\u0637 \u0647\u0646\u06af\u0627\u0645 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0647\u0645\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n| \u0644\u0627\u06cc\u0647 | \u062f\u0627\u0645\u0646\u0647 \u0627\u062b\u0631 (Scope) | \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u0648\u06cc\u0631\u0627\u06cc\u0634 | \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u062f\u0631 \u0686\u062a | \u0645\u062d\u0644 \u062a\u0632\u0631\u06cc\u0642 \u062f\u0631 \u067e\u0631\u0627\u0645\u067e\u062a |\n| :--- | :--- | :--- | :--- | :--- |\n| **\ud83c\udf10 \u06f1. \u0639\u0645\u0648\u0645\u06cc (Global)** | \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 | **\u0641\u0642\u0637 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0628\u0627\u062a \u062a\u0648\u0633\u0637 \u0627\u062f\u0645\u06cc\u0646** (\u062f\u0633\u062a\u06cc) | \u0641\u0642\u0637\u200c\u062e\u0648\u0627\u0646\u062f\u0646\u06cc (Read-Only) | \u062f\u0631 \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 |\n| **\ud83d\udc64 \u06f2. \u06a9\u0627\u0631\u0628\u0631 (User)** | \u06a9\u0627\u0631\u0628\u0631 \u062c\u0627\u0631\u06cc \u062f\u0631 \u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc\u0634 | **\u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0628\u0627\u062a + \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc** | \u062e\u0648\u0627\u0646\u062f\u0646 + \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0648 \u062b\u0628\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 | \u062f\u0631 \u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 |\n| **\ud83d\udcc1 \u06f3. \u067e\u0631\u0648\u0698\u0647 (Project)** | \u0641\u0642\u0637 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0641\u0639\u0627\u0644 \u06a9\u0627\u0631\u0628\u0631 | **\u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0628\u0627\u062a + \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc** | \u062e\u0648\u0627\u0646\u062f\u0646 + \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0648 \u062b\u0628\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 | \u0641\u0642\u0637 \u062f\u0631 \u0647\u0645\u0627\u0646 \u067e\u0631\u0648\u0698\u0647 \u0641\u0639\u0627\u0644 |\n\n---\n\n## \ud83d\udd04 \u06f2. \u062c\u0631\u06cc\u0627\u0646 \u062a\u0632\u0631\u06cc\u0642 \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628\u06cc (Prompt Hierarchy)\n\n\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u067e\u06cc\u0627\u0645\u06cc \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u067e\u0631\u0627\u0645\u067e\u062a \u0633\u06cc\u0633\u062a\u0645 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0632\u06cc\u0631 \u063a\u0646\u06cc\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f:\n\n```text\n[SYSTEM INSTRUCTION: AI PERSISTENT HIERARCHICAL MEMORY]\n\n\ud83c\udf10 \u06f1. GLOBAL SYSTEM RULES & KNOWLEDGE (\u0642\u0648\u0627\u0646\u06cc\u0646 \u0639\u0645\u0648\u0645\u06cc \u0633\u06cc\u0633\u062a\u0645):\n\u2022 [key: php_preference] \u0647\u0645\u06cc\u0634\u0647 \u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u0645\u06a9\u0627\u0646 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u0628\u0627 PHP \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0634\u0648\u0646\u062f.\n\n\ud83d\udc64 \u06f2. USER PERSONAL PREFERENCES & FACTS (\u062e\u0627\u0637\u0631\u0627\u062a \u0634\u062e\u0635\u06cc \u06a9\u0627\u0631\u0628\u0631):\n\u2022 [key: dev_experience] \u06a9\u0627\u0631\u0628\u0631 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0633\u0646\u06cc\u0648\u0631 \u0627\u0633\u062a \u0648 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062e\u0644\u0627\u0635\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u062f.\n\u2022 [key: preferred_ide] \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0645\u062d\u06cc\u0637 VSCode \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.\n\n\ud83d\udcc1 \u06f3. ACTIVE PROJECT KNOWLEDGE [\u067e\u0631\u0648\u0698\u0647: online-shop] (\u062e\u0627\u0637\u0631\u0627\u062a \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647):\n\u2022 [key: db_schema] \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0627\u0632 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 PostgreSQL \u0648 Redis Cache \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.\n\u2022 [key: api_convention] \u062a\u0645\u0627\u0645 \u062e\u0631\u0648\u062c\u06cc\u200c\u0647\u0627\u06cc REST API \u0628\u0627\u06cc\u062f \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f JSend \u0628\u0627\u0634\u0646\u062f.\n```\n\n---\n\n## \ud83c\udff7\ufe0f \u06f3. \u067e\u0631\u0648\u062a\u06a9\u0644 \u0627\u06a9\u0634\u0646\u200c\u062a\u06af\u200c\u0647\u0627\u06cc \u0627\u0631\u062a\u0642\u0627\u06cc\u0627\u0641\u062a\u0647 (AI Action Protocol)\n\n\u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0633\u062a\u0647 \u0628\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc \u0645\u06a9\u0627\u0644\u0645\u0647\u060c \u062e\u0627\u0637\u0631\u0647 \u0631\u0627 \u062f\u0631 \u0644\u0627\u06cc\u0647 \u0645\u0646\u0627\u0633\u0628 \u062b\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f:\n\n```text\n\u06f1. \u0630\u062e\u06cc\u0631\u0647 \u062e\u0627\u0637\u0631\u0647 \u06a9\u0627\u0631\u0628\u0631 \u06cc\u0627 \u067e\u0631\u0648\u0698\u0647:\n[[SAVE_MEMORY: type=\"user|project\", key=\"\", category=\"preference|rule|fact|tech_stack\", content=\"<\u0645\u062a\u0646 \u062e\u0644\u0627\u0635\u0647>\"]]\n\n\u06f2. \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062e\u0627\u0637\u0631\u0647:\n[[UPDATE_MEMORY: type=\"user|project\", key=\"\", content=\"<\u0645\u062a\u0646 \u062c\u062f\u06cc\u062f>\"]]\n\n\u06f3. \u062d\u0630\u0641 \u06cc\u06a9 \u062e\u0627\u0637\u0631\u0647:\n[[DELETE_MEMORY: type=\"user|project\", key=\"\"]]\n\n\u06f4. \u067e\u0627\u06a9\u200c\u0633\u0627\u0632\u06cc \u06cc\u06a9 \u0628\u062e\u0634:\n[[CLEAR_MEMORY: type=\"user|project\"]]\n```\n\n> \ud83d\udd12 **\u0642\u0627\u0639\u062f\u0647 \u0633\u0644\u0628 \u062f\u0633\u062a\u0631\u0633\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u0639\u0645\u0648\u0645\u06cc:** \u0627\u06af\u0631 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u062a\u06af `type=\"global\"` \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f\u060c \u0633\u06cc\u0633\u062a\u0645 \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062e\u0637\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 `type=\"user\"` \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0632\u06cc\u0631\u0627 \u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc **\u0635\u0631\u0641\u0627\u064b \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u0646\u0644 \u0631\u0628\u0627\u062a \u062a\u0644\u06af\u0631\u0627\u0645** \u062a\u0648\u0633\u0637 \u0645\u062f\u06cc\u0631 \u0642\u0627\u0628\u0644 \u0627\u06cc\u062c\u0627\u062f/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0647\u0633\u062a\u0646\u062f.\n\n---\n\n## \ud83d\uddfa\ufe0f \u06f4. \u0646\u0642\u0634\u0647 \u0631\u0627\u0647 \u0627\u062c\u0631\u0627\u06cc\u06cc \u0641\u0627\u0632 \u0628\u0647 \u0641\u0627\u0632 (Phased Roadmap)\n\n```mermaid\ngantt\n title \u0641\u0627\u0632\u0628\u0646\u062f\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062d\u0627\u0641\u0638\u0647 \u06f3 \u0644\u0627\u06cc\u0647\n dateFormat X\n axisFormat %d\n \n section \u0641\u0627\u0632 \u06f1: \u0628\u0627\u0632\u0637\u0631\u0627\u062d\u06cc \u0645\u062f\u0644 \u062f\u0627\u062f\u0647\n \u0627\u0631\u062a\u0642\u0627\u06cc \u0627\u0633\u06a9\u06cc\u0645\u0627 \u0648 \u0641\u06cc\u0644\u062f project_name \u062f\u0631 memory_manager :p1, 0, 1\n \n section \u0641\u0627\u0632 \u06f2: \u062a\u0632\u0631\u06cc\u0642 \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628\u06cc\n \u063a\u0646\u06cc\u200c\u0633\u0627\u0632\u06cc agy_engine \u0628\u0627 \u062a\u0641\u06a9\u06cc\u06a9 \u0639\u0645\u0648\u0645\u06cc/\u06a9\u0627\u0631\u0628\u0631/\u067e\u0631\u0648\u0698\u0647 :p2, 1, 2\n \n section \u0641\u0627\u0632 \u06f3: \u0627\u0631\u062a\u0642\u0627\u06cc \u0627\u06a9\u0634\u0646\u200c\u0647\u0627\n \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc bot_actions \u0628\u0627 \u0644\u0627\u06cc\u0647\u200c\u0647\u0627\u06cc user/project :p3, 2, 3\n \n section \u0641\u0627\u0632 \u06f4: \u0628\u0627\u0632\u0637\u0631\u0627\u062d\u06cc UI \u062a\u0644\u06af\u0631\u0627\u0645\n \u0637\u0631\u0627\u062d\u06cc \u0645\u0646\u0648\u06cc \u06f3 \u062a\u0628 \u062f\u0631 \u0631\u0628\u0627\u062a \u0648 \u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0633\u062a\u06cc :p4, 3, 4\n \n section \u0641\u0627\u0632 \u06f5: \u062a\u0633\u062a \u0648 \u0645\u0645\u06cc\u0632\u06cc \u0646\u0647\u0627\u06cc\u06cc\n \u062a\u0633\u062a \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u0633\u0648\u06cc\u06cc\u0686 \u067e\u0631\u0648\u0698\u0647\u060c \u0627\u06cc\u0632\u0648\u0644\u0627\u0633\u06cc\u0648\u0646 \u0648 \u067e\u0627\u06cc\u062f\u0627\u0631\u06cc :p5, 4, 5\n```\n\n---\n\n### \ud83d\udd39 \u0641\u0627\u0632 \u06f1: \u0628\u0627\u0632\u0637\u0631\u0627\u062d\u06cc \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0648 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 (`memory_manager.py`)\n1. **\u0627\u0631\u062a\u0642\u0627\u06cc \u0627\u0633\u06a9\u06cc\u0645\u0627 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 SQLite:**\n - \u0641\u06cc\u0644\u062f `type` \u0628\u0647 \u06f3 \u0645\u0642\u062f\u0627\u0631 `('global', 'user', 'project')` \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06cc\u0627\u0628\u062f.\n - \u0627\u0641\u0632\u0648\u062f\u0646 \u0633\u062a\u0648\u0646 `project_name TEXT` (\u0628\u0631\u0627\u06cc \u062e\u0627\u0637\u0631\u0627\u062a \u067e\u0631\u0648\u0698\u0647).\n - \u0633\u0627\u062e\u062a \u0627\u06cc\u0646\u062f\u06a9\u0633\u200c\u0647\u0627\u06cc \u0633\u0647\u200c\u06af\u0627\u0646\u0647 \u06cc\u06a9\u062a\u0627:\n - \u0639\u0645\u0648\u0645\u06cc: `(type, key)` \u0628\u0647 \u0627\u0632\u0627\u06cc `type = 'global'`\n - \u06a9\u0627\u0631\u0628\u0631: `(type, user_id, key)` \u0628\u0647 \u0627\u0632\u0627\u06cc `type = 'user'`\n - \u067e\u0631\u0648\u0698\u0647: `(type, user_id, project_name, key)` \u0628\u0647 \u0627\u0632\u0627\u06cc `type = 'project'`\n2. **\u0627\u0631\u062a\u0642\u0627\u06cc \u0645\u062a\u062f\u0647\u0627\u06cc CRUD:**\n - \u0627\u0641\u0632\u0648\u062f\u0646 \u0645\u062a\u062f\u0647\u0627\u06cc `get_project_memories(user_id, project_name)` \u0648 `get_user_memories(user_id)`.\n - \u0642\u0627\u0628\u0644\u06cc\u062a \u062d\u0630\u0641 \u0648 \u067e\u0627\u06a9\u200c\u0633\u0627\u0632\u06cc \u0645\u062c\u0632\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0644\u0627\u06cc\u0647.\n\n---\n\n### \ud83d\udd39 \u0641\u0627\u0632 \u06f2: \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062a\u0632\u0631\u06cc\u0642 \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628\u06cc \u062f\u0631 \u067e\u0627\u06cc\u067e\u200c\u0644\u0627\u06cc\u0646 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc (`agy_engine.py`)\n1. \u0648\u0627\u06a9\u0634\u06cc \u0647\u0645\u0632\u0645\u0627\u0646:\n - \u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc (Global)\n - \u062e\u0627\u0637\u0631\u0627\u062a \u0634\u062e\u0635\u06cc \u06a9\u0627\u0631\u0628\u0631 (User)\n - \u062e\u0627\u0637\u0631\u0627\u062a \u067e\u0631\u0648\u0698\u0647 \u0641\u0639\u0627\u0644 (`session.active_project`)\n2. \u062a\u0632\u0631\u06cc\u0642 \u062f\u0631 \u06f3 \u0628\u062e\u0634 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0648 \u0645\u0634\u062e\u0635 \u0628\u0627 \u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u062a\u0648\u06a9\u0646.\n3. \u062a\u0641\u0647\u06cc\u0645 \u0628\u0647 \u0645\u062f\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u06a9\u0647 \u062a\u0641\u0627\u0648\u062a \u062e\u0627\u0637\u0631\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0648 \u067e\u0631\u0648\u0698\u0647 \u0686\u06cc\u0633\u062a \u062a\u0627 \u0647\u0648\u0634\u0645\u0646\u062f\u0627\u0646\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u062f.\n\n---\n\n### \ud83d\udd39 \u0641\u0627\u0632 \u06f3: \u0627\u0631\u062a\u0642\u0627\u06cc \u0645\u0641\u0633\u0631 \u0627\u06a9\u0634\u0646\u200c\u062a\u06af\u200c\u0647\u0627 \u0648 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0627\u0645\u0646\u06cc\u062a\u06cc (`bot_actions.py`)\n1. \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u06a9\u0627\u0645\u0644 \u0627\u0632 `type=\"user\"` \u0648 `type=\"project\"`.\n2. \u0627\u062a\u0635\u0627\u0644 \u062e\u0648\u062f\u06a9\u0627\u0631 `project_name` \u062c\u0627\u0631\u06cc \u0628\u0647 \u0627\u06a9\u0634\u0646\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647.\n3. \u0645\u0633\u062f\u0648\u062f\u0633\u0627\u0632\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc \u062a\u0648\u0633\u0637 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0648 \u0647\u062f\u0627\u06cc\u062a \u0622\u0646 \u0641\u0642\u0637 \u0628\u0647 \u067e\u0646\u0644 \u0627\u062f\u0645\u06cc\u0646 \u062f\u0631 \u0631\u0628\u0627\u062a.\n\n---\n\n### \ud83d\udd39 \u0641\u0627\u0632 \u06f4: \u0628\u0627\u0632\u0637\u0631\u0627\u062d\u06cc \u06a9\u0646\u062a\u0631\u0644\u200c\u067e\u0646\u0644 \u062a\u0644\u06af\u0631\u0627\u0645 \u0648 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc (`bot.py`)\n1. **\u0637\u0631\u0627\u062d\u06cc \u0645\u0646\u0648\u06cc \u0634\u06cc\u0634\u0647\u200c\u0627\u06cc \u0628\u0627 \u06f3 \u062a\u0628 \u0645\u062c\u0632\u0627:**\n - `[\ud83d\udcc1 \u062e\u0627\u0637\u0631\u0627\u062a \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 ({project_name})]`\n - `[\ud83d\udc64 \u062e\u0627\u0637\u0631\u0627\u062a \u0645\u0646 (\u0633\u0631\u0627\u0633\u0631\u06cc)]`\n - `[\ud83c\udf10 \u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc \u0633\u06cc\u0633\u062a\u0645]` (\u0645\u0634\u0627\u0647\u062f\u0647 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 / \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648 \u062d\u0630\u0641 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0627\u062f\u0645\u06cc\u0646)\n2. \u0627\u0645\u06a9\u0627\u0646 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0633\u062a\u06cc:\n - \u062d\u0630\u0641 \u062a\u06a9\u06cc \u062e\u0627\u0637\u0631\u0627\u062a \u0628\u0627 \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u06cc \u0627\u06cc\u0646\u0644\u0627\u06cc\u0646 \u0634\u0645\u0627\u0631\u0647\u200c\u062f\u0627\u0631\n - \u067e\u0627\u06a9\u200c\u0633\u0627\u0632\u06cc \u0645\u062c\u0632\u0627\u06cc \u062e\u0627\u0637\u0631\u0627\u062a \u067e\u0631\u0648\u0698\u0647 \u06cc\u0627 \u062e\u0627\u0637\u0631\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\n - \u0627\u0641\u0632\u0648\u062f\u0646 \u062f\u0633\u062a\u06cc \u062e\u0627\u0637\u0631\u0647 \u0639\u0645\u0648\u0645\u06cc \u062a\u0648\u0633\u0637 \u0627\u062f\u0645\u06cc\u0646 \u062f\u0631 \u067e\u0646\u0644 \u0631\u0628\u0627\u062a\n3. \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0633\u0631\u06cc\u0639:\n - `/memory` (\u062f\u0627\u0634\u0628\u0648\u0631\u062f \u062a\u0639\u0627\u0645\u0644\u06cc)\n - `/memory project`\n - `/memory user`\n - `/memory global`\n\n---\n\n### \ud83d\udd39 \u0641\u0627\u0632 \u06f5: \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u062c\u0627\u0645\u0639 \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc\n1. \u062a\u0633\u062a \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u062e\u0648\u062f\u06a9\u0627\u0631: \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0646\u06a9\u062a\u0647 \u067e\u0631\u0648\u0698\u0647\u200c\u0627\u06cc \u0631\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0648 \u0646\u06a9\u062a\u0647 \u0634\u062e\u0635\u06cc \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061f\n2. \u062a\u0633\u062a \u0633\u0648\u06cc\u06cc\u0686 \u067e\u0631\u0648\u0698\u0647: \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u067e\u0631\u0648\u0698\u0647\u060c \u0641\u0642\u0637 \u062e\u0627\u0637\u0631\u0627\u062a \u0647\u0645\u0627\u0646 \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u062e\u0627\u0637\u0631\u0627\u062a \u067e\u0631\u0648\u0698\u0647 \u0642\u0628\u0644\u06cc \u0645\u062e\u0641\u06cc \u0645\u06cc\u200c\u0645\u0627\u0646\u062f.\n3. \u0645\u0645\u06cc\u0632\u06cc \u0639\u062f\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc \u062a\u0648\u0633\u0637 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0639\u0627\u062f\u06cc \u06cc\u0627 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u062f\u0631 \u0686\u062a.\n\n---\n\n## \ud83c\udfaf \u06af\u0627\u0645 \u0628\u0639\u062f\u06cc\n\u0622\u06cc\u0627 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u06cc\u0646 \u0646\u0642\u0634\u0647 \u0631\u0627\u0647 \u0645\u0648\u0627\u0641\u0642\u06cc\u062f \u062a\u0627 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0632 **\u0641\u0627\u0632 \u06f1 (\u0627\u0631\u062a\u0642\u0627\u06cc \u0627\u0633\u06a9\u06cc\u0645\u0627 \u0648 \u06a9\u0644\u0627\u0633 `memory_manager.py`)** \u0622\u063a\u0627\u0632 \u06a9\u0646\u06cc\u0645\u061f\n\n---\n\u2022 \u0646\u0627\u0645 \u067e\u0631\u0648\u0698\u0647: default\n\u2022 \u0622\u062f\u0631\u0633 \u0645\u062e\u0632\u0646: https://git.msa.artacloud.ir/root/default\n", + "last_context_length": 106524, + "last_total_tokens": 1635628, + "last_response": "\u0627\u0633\u06a9\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0648 \u062d\u0627\u0641\u0638\u0647\u200c\u0647\u0627 \u0622\u063a\u0627\u0632 \u0634\u062f.\n\ud83c\udfaf **\u0639\u0645\u0644\u06cc\u0627\u062a \u0627\u0633\u06a9\u0646\u060c \u0645\u0647\u0627\u062c\u0631\u062a \u0647\u0648\u0634\u0645\u0646\u062f \u062d\u0627\u0641\u0638\u0647\u200c\u0647\u0627\u060c \u067e\u0627\u06a9\u200c\u0633\u0627\u0632\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u0648 \u0627\u06cc\u0632\u0648\u0644\u0627\u0633\u06cc\u0648\u0646 \u0645\u0648\u062a\u0648\u0631 AGY \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06a9\u0627\u0645\u0644 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f!**\n\n---\n\n### \ud83d\udcca \u06f1. \u06af\u0632\u0627\u0631\u0634 \u0645\u0647\u0627\u062c\u0631\u062a \u062d\u0627\u0641\u0638\u0647\u200c\u0647\u0627 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u06f3 \u0644\u0627\u06cc\u0647 \u0631\u0628\u0627\u062a (`memory.db`)\n\n\u062a\u0645\u0627\u0645\u06cc \u062d\u0627\u0641\u0638\u0647\u200c\u0647\u0627\u06cc \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0648 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u062e\u0648\u0627\u0646\u062f\u0647 \u0648 \u062f\u0631 \u06f3 \u0644\u0627\u06cc\u0647 \u0645\u062c\u0632\u0627 \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0648 \u062b\u0628\u062a \u0634\u062f\u0646\u062f:\n\n#### \ud83c\udf10 \u0627\u0644\u0641) \u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc \u0633\u06cc\u0633\u062a\u0645 (Global Rules):\n- `precedence_hierarchy`: \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628 \u0642\u0637\u0639\u06cc \u0627\u0648\u0644\u0648\u06cc\u062a (\u06f1. \u0639\u0645\u0648\u0645\u06cc \u06f2. \u067e\u0631\u0648\u0698\u0647 \u06f3. \u06a9\u0627\u0631\u0628\u0631)\n- `php_preference`: \u0627\u0648\u0644\u0648\u06cc\u062a \u0642\u0637\u0639\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 PHP \u0645\u062f\u0631\u0646 \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u0648 \u0648\u0628\u200c\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\n- `server_domain_caddy`: \u0627\u062a\u0635\u0627\u0644 \u062f\u0627\u0645\u0646\u0647 `*.msa.artacloud.ir` \u0648 \u067e\u0631\u0648\u06a9\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633 \u0628\u0627 Caddy\n- `projects_directory_structure`: \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 (`/root/projects/{user_id}/{project_name}`)\n- `flash_auto_mode`: \u0628\u0627\u0632\u0628\u06cc\u0646\u06cc \u0646\u0647\u0627\u06cc\u06cc \u0648 \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u0628\u0627 \u0628\u0627\u0644\u0627\u062a\u0631\u06cc\u0646 \u0633\u0637\u062d \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0645\u062f\u0644\n\n#### \ud83d\udcc1 \u0628) \u062e\u0627\u0637\u0631\u0627\u062a \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 (Project Scope):\n- **\u067e\u0631\u0648\u0698\u0647 `copykar` (\u06a9\u0627\u0631\u0628\u0631 \u06f7\u06f8\u06f6\u06f4\u06f9\u06f6\u06f3\u06f4):**\n - \u0645\u0639\u0645\u0627\u0631\u06cc \u06a9\u0627\u0645\u0644 (Telethon Userbot\u060c \u0648\u0628 \u06a9\u0627\u0644\u06a9\u062a\u0648\u0631\u060c \u067e\u0627\u06cc\u067e\u200c\u0644\u0627\u06cc\u0646 AI \u0648 AGY Bridge \u067e\u0648\u0631\u062a \u06f8\u06f0\u06f8\u06f8\u060c PostgreSQL/Redis\u060c \u067e\u0631\u0648\u0645\u062a\u0626\u0648\u0633 \u067e\u0648\u0631\u062a \u06f8\u06f0\u06f0\u06f8 \u0648 \u06af\u0631\u0627\u0641\u0627\u0646\u0627)\n - \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u0627\u0631\u06cc (\u06a9\u0627\u062f\u0631 \u0627\u0633\u06a9\u06cc \u062a\u0635\u062d\u06cc\u062d \u0632\u0628\u0627\u0646\u060c \u0639\u062f\u0645 \u062f\u0631\u062c \u0646\u0627\u0645 \u0645\u062f\u0644\u200c\u0647\u0627\u06cc AI\u060c \u06a9\u0627\u0645\u06cc\u062a\u200c\u0647\u0627\u06cc \u062a\u06a9\u200c\u062a\u063a\u06cc\u06cc\u0631\u06cc)\n - \u0633\u0627\u062e\u062a\u0627\u0631 \u0647\u0627\u0628\u200c\u0647\u0627\u06cc \u06f5 \u06af\u0627\u0646\u0647 \u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a (`Copy`, `AI`, `Bots`, `System`, `Monitor`)\n - \u0633\u0627\u062e\u062a\u0627\u0631 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u067e\u0627\u06cc\u062f\u0627\u0631 \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc `./data/`\n- **\u067e\u0631\u0648\u0698\u0647 `myapp` (\u06a9\u0627\u0631\u0628\u0631 \u06f2\u06f3\u06f2\u06f8\u06f0\u06f1\u06f0\u06f8\u06f7):**\n - \u0645\u0639\u0645\u0627\u0631\u06cc \u0633\u0627\u0645\u0627\u0646\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0633\u0627\u0626\u0644 \u0634\u0647\u0631\u06cc \u0634\u0647\u0631\u0646\u06af\u0627\u0631 (PHP \u0628\u0627 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 `urban_issues.db` \u0648 \u0641\u0631\u0627\u0646\u062a\u200c\u0627\u0646\u062f SPA)\n - \u0633\u0627\u062e\u062a\u0627\u0631 \u0631\u0648\u062a\u0631 \u0645\u0631\u06a9\u0632\u06cc \u062f\u0631 `router.php` \u0648 \u0627\u0646\u062f\u067e\u0648\u06cc\u0646\u062a\u200c\u0647\u0627\u06cc `api.php`\n\n#### \ud83d\udc64 \u062c) \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0634\u062e\u0635\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 (User Profile):\n- \u0645\u0634\u062e\u0635\u0627\u062a\u060c \u0646\u0642\u0634 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0627\u0631\u0634\u062f\u060c \u062a\u0631\u062c\u06cc\u062d\u0627\u062a \u0627\u062f\u06cc\u062a\u0648\u0631 VSCode \u0648 \u0645\u0646\u0637\u0642\u0647 \u0632\u0645\u0627\u0646\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062c\u0627\u0631\u06cc.\n\n---\n\n### \ud83d\uddd1\ufe0f \u06f2. \u062d\u0630\u0641 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u062d\u0627\u0641\u0638\u0647 \u0627\u0632 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\n\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u062d\u0627\u0641\u0638\u0647 \u0627\u0632 \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u06cc\u0633\u06a9 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u062d\u0630\u0641 \u0634\u062f\u0646\u062f:\n- `\u2713` \u0641\u0627\u06cc\u0644 `/root/projects/78649634/copykar/AGENTS.md` (\u062d\u0630\u0641 \u0634\u062f)\n- `\u2713` \u0641\u0627\u06cc\u0644 `/root/projects/78649634/copykar/GEMINI.md` (\u062d\u0630\u0641 \u0634\u062f)\n\n---\n\n### \ud83d\udee1\ufe0f \u06f3. \u0639\u062f\u0645 \u062e\u0648\u0627\u0646\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u062a\u0648\u0633\u0637 AGY \u0648 \u062a\u0632\u0631\u06cc\u0642 \u0645\u0633\u062a\u0642\u06cc\u0645 \u067e\u0631\u0627\u0645\u067e\u062a\n- \u0628\u0627 \u062d\u0630\u0641 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0627\u0631\u06a9\u200c\u062f\u0627\u0648\u0646 \u0627\u0632 \u067e\u0648\u0634\u0647 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u060c \u0627\u0628\u0632\u0627\u0631 `agy` \u0647\u06cc\u0686 \u0641\u0627\u06cc\u0644 \u062d\u0627\u0641\u0638\u0647 \u0642\u062f\u06cc\u0645\u06cc \u06cc\u0627 \u0646\u0627\u0647\u0645\u0627\u0647\u0646\u06af\u06cc \u0631\u0627 \u0627\u0632 \u0631\u0648\u06cc \u062f\u06cc\u0633\u06a9 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f.\n- \u062a\u0645\u0627\u0645 \u062d\u0627\u0641\u0638\u0647\u200c\u0647\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0644\u062d\u0638\u0647\u200c\u0627\u06cc\u060c \u06a9\u0627\u0645\u0644\u0627\u064b \u062a\u0641\u06a9\u06cc\u06a9\u200c\u0634\u062f\u0647 \u0648 \u0628\u0631 \u0627\u0633\u0627\u0633 \u067e\u0631\u0648\u0698\u0647 \u0641\u0639\u0627\u0644 \u062a\u0648\u0633\u0637 \u067e\u0627\u06cc\u067e\u200c\u0644\u0627\u06cc\u0646 \u0631\u0628\u0627\u062a (`agy_engine.py`) \u062f\u0631 \u0642\u0627\u0644\u0628 \u0628\u0644\u0648\u06a9 \u0633\u06cc\u0633\u062a\u0645\u06cc \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628\u06cc \u0628\u0647 \u067e\u0631\u0627\u0645\u067e\u062a \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.\n\n---\n\n[[RESTART_BOT]]\n\n\u2022 \u0646\u0627\u0645 \u067e\u0631\u0648\u0698\u0647: default\n\u2022 \u0622\u062f\u0631\u0633 \u0645\u062e\u0632\u0646: https://git.msa.artacloud.ir/root/default\n", "created_at": 1787995349.975879, "description": "" }, @@ -71,19 +71,19 @@ } }, "turn_in_progress": false, - "last_prompt": "\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0645\u0647\u0645\n\u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc \u0641\u0642\u0637 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0628\u0627\u062a \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0648 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0628\u0627\u0634\u0646\u062f \u0648 \u0635\u0631\u0641\u0627 \u0627\u06cc\u0646 \u062e\u0627\u0637\u0631\u0627\u062a \u0647\u0645\u06cc\u0634\u0647 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u062f\u0631 \u0632\u0645\u0627\u0646 \u06af\u0641\u062a\u06af\u0648 \u062a\u0632\u0631\u06cc\u0642 \u0647\u0648\u0627\u0647\u0646\u062f \u0634\u062f\n\u062e\u0627\u0637\u0631\u0627\u062a \u062e\u0635\u0648\u0636\u06cc \u062f\u0648 \u062f\u0633\u062a\u0647 \u0634\u0648\u0646\u062f\n\u062e\u0627\u0637\u0631\u0627\u062a \u067e\u0631\u0648\u0698\u0647\n\u062e\u0627\u0637\u0631\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\n\u062d\u0627\u0644\u0627 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u062f \u0628\u0627 \u062a\u0639\u0627\u0645\u0644 \u0645\u0646\u0627\u0633\u0628 \u0628\u0627 \u0631\u0628\u0627\u0637 \u062f\u0631 \u062d\u06cc\u0646 \u06af\u0641\u062a \u0648 \u06af\u0648\n\u062e\u0627\u0637\u0631\u0627\u062a \u0631\u0627 \u0628\u0647 \u062f\u0648 \u062f\u0633\u062a\u0647 \u0645\u062e\u0635\u0648\u0635 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0645\u062e\u0635\u0648\u0635 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u062f \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0628\u0627\u062a \u0642\u0627\u0628\u0644 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648 \u062a\u0632\u0631\u06cc\u0642 \u0647\u0633\u062a\u0646\u062f\n\u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u0646\u0642\u0634\u0647 \u0631\u0627\u0647 \u0642\u0648\u06cc \u062f\u0631\u0633\u062a \u06a9\u0646 \u0648 \u0628\u0639\u062f \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u062f\u0647\u06cc\u0645", - "last_response": "# \ud83e\udde0 \u0646\u0642\u0634\u0647 \u0631\u0627\u0647 \u062c\u0627\u0645\u0639 \u0628\u0627\u0632\u0637\u0631\u0627\u062d\u06cc \u00ab\u0633\u06cc\u0633\u062a\u0645 \u062d\u0627\u0641\u0638\u0647 \u06f3 \u0644\u0627\u06cc\u0647 \u0647\u0648\u0634\u0645\u0646\u062f\u00bb (3-Tier AI Memory Architecture)\n\n\u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u06cc\u0627\u0632\u0645\u0646\u062f\u06cc\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u060c \u0633\u0627\u062e\u062a\u0627\u0631 \u062d\u0627\u0641\u0638\u0647 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0627\u0632 \u0645\u062f\u0644 \u062f\u0648\u06af\u0627\u0646\u0647 \u0628\u0647 **\u0645\u062f\u0644 \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628\u06cc \u06f3 \u0644\u0627\u06cc\u0647 (\u0639\u0645\u0648\u0645\u06cc\u060c \u0634\u062e\u0635\u06cc \u06a9\u0627\u0631\u0628\u0631\u060c \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u067e\u0631\u0648\u0698\u0647)** \u0627\u0631\u062a\u0642\u0627 \u0645\u06cc\u200c\u06cc\u0627\u0628\u062f. \n\n---\n\n## \ud83c\udfdb\ufe0f \u06f1. \u0633\u0627\u062e\u062a\u0627\u0631 \u0645\u0627\u062a\u0631\u06cc\u0633 \u06f3 \u0644\u0627\u06cc\u0647 \u062d\u0627\u0641\u0638\u0647\n\n```\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 \ud83c\udf10 \u06f1. \u062d\u0627\u0641\u0638\u0647 \u0639\u0645\u0648\u0645\u06cc (Global) \u2502\n \u2502 \u2022 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0648 \u0633\u06cc\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0644 \u0633\u06cc\u0633\u062a\u0645 \u0648 \u0633\u0631\u0648\u0631 \u2502\n \u2502 \u2022 \u0641\u0642\u0637 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0628\u0627\u062a \u0648 \u0645\u062f\u06cc\u0631 \u0642\u0627\u0628\u0644 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u2502\n \u2502 \u2022 \u062a\u0632\u0631\u06cc\u0642 \u0628\u0647 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u062a\u0645\u0627\u0645 \u0633\u0634\u0646\u200c\u0647\u0627 \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502\n \u25bc\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 \ud83d\udc64 \u06f2. \u062d\u0627\u0641\u0638\u0647 \u06a9\u0627\u0631\u0628\u0631 (User) \u2502\n \u2502 \u2022 \u0639\u0644\u0627\u06cc\u0642 \u0634\u062e\u0635\u06cc\u060c \u0646\u0627\u0645\u060c \u0633\u0628\u06a9 \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u0648 \u0639\u0627\u062f\u0627\u062a \u2502\n \u2502 \u2022 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u0648\u0633\u0637 AI + \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062f\u0631 \u0631\u0628\u0627\u062a\u2502\n \u2502 \u2022 \u062a\u0632\u0631\u06cc\u0642 \u0628\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc\u0634 \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502\n \u25bc\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 \ud83d\udcc1 \u06f3. \u062d\u0627\u0641\u0638\u0647 \u067e\u0631\u0648\u0698\u0647 (Project) \u2502\n \u2502 \u2022 \u0645\u0639\u0645\u0627\u0631\u06cc \u067e\u0631\u0648\u0698\u0647\u060c \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u060c \u062a\u0635\u0645\u06cc\u0645\u0627\u062a \u0641\u0646\u06cc \u2502\n \u2502 \u2022 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u0648\u0633\u0637 AI + \u0648\u06cc\u0631\u0627\u06cc\u0634 \u062f\u0631 \u0631\u0628\u0627\u062a\u2502\n \u2502 \u2022 \u062a\u0632\u0631\u06cc\u0642 \u0641\u0642\u0637 \u0647\u0646\u06af\u0627\u0645 \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0647\u0645\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n| \u0644\u0627\u06cc\u0647 | \u062f\u0627\u0645\u0646\u0647 \u0627\u062b\u0631 (Scope) | \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u0648\u06cc\u0631\u0627\u06cc\u0634 | \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u062f\u0631 \u0686\u062a | \u0645\u062d\u0644 \u062a\u0632\u0631\u06cc\u0642 \u062f\u0631 \u067e\u0631\u0627\u0645\u067e\u062a |\n| :--- | :--- | :--- | :--- | :--- |\n| **\ud83c\udf10 \u06f1. \u0639\u0645\u0648\u0645\u06cc (Global)** | \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 | **\u0641\u0642\u0637 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0628\u0627\u062a \u062a\u0648\u0633\u0637 \u0627\u062f\u0645\u06cc\u0646** (\u062f\u0633\u062a\u06cc) | \u0641\u0642\u0637\u200c\u062e\u0648\u0627\u0646\u062f\u0646\u06cc (Read-Only) | \u062f\u0631 \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 |\n| **\ud83d\udc64 \u06f2. \u06a9\u0627\u0631\u0628\u0631 (User)** | \u06a9\u0627\u0631\u0628\u0631 \u062c\u0627\u0631\u06cc \u062f\u0631 \u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc\u0634 | **\u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0628\u0627\u062a + \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc** | \u062e\u0648\u0627\u0646\u062f\u0646 + \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0648 \u062b\u0628\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 | \u062f\u0631 \u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 |\n| **\ud83d\udcc1 \u06f3. \u067e\u0631\u0648\u0698\u0647 (Project)** | \u0641\u0642\u0637 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0641\u0639\u0627\u0644 \u06a9\u0627\u0631\u0628\u0631 | **\u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0628\u0627\u062a + \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc** | \u062e\u0648\u0627\u0646\u062f\u0646 + \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0648 \u062b\u0628\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 | \u0641\u0642\u0637 \u062f\u0631 \u0647\u0645\u0627\u0646 \u067e\u0631\u0648\u0698\u0647 \u0641\u0639\u0627\u0644 |\n\n---\n\n## \ud83d\udd04 \u06f2. \u062c\u0631\u06cc\u0627\u0646 \u062a\u0632\u0631\u06cc\u0642 \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628\u06cc (Prompt Hierarchy)\n\n\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u067e\u06cc\u0627\u0645\u06cc \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u067e\u0631\u0627\u0645\u067e\u062a \u0633\u06cc\u0633\u062a\u0645 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0632\u06cc\u0631 \u063a\u0646\u06cc\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f:\n\n```text\n[SYSTEM INSTRUCTION: AI PERSISTENT HIERARCHICAL MEMORY]\n\n\ud83c\udf10 \u06f1. GLOBAL SYSTEM RULES & KNOWLEDGE (\u0642\u0648\u0627\u0646\u06cc\u0646 \u0639\u0645\u0648\u0645\u06cc \u0633\u06cc\u0633\u062a\u0645):\n\u2022 [key: php_preference] \u0647\u0645\u06cc\u0634\u0647 \u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u0645\u06a9\u0627\u0646 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u0628\u0627 PHP \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0634\u0648\u0646\u062f.\n\n\ud83d\udc64 \u06f2. USER PERSONAL PREFERENCES & FACTS (\u062e\u0627\u0637\u0631\u0627\u062a \u0634\u062e\u0635\u06cc \u06a9\u0627\u0631\u0628\u0631):\n\u2022 [key: dev_experience] \u06a9\u0627\u0631\u0628\u0631 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0633\u0646\u06cc\u0648\u0631 \u0627\u0633\u062a \u0648 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062e\u0644\u0627\u0635\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u062f.\n\u2022 [key: preferred_ide] \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0645\u062d\u06cc\u0637 VSCode \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.\n\n\ud83d\udcc1 \u06f3. ACTIVE PROJECT KNOWLEDGE [\u067e\u0631\u0648\u0698\u0647: online-shop] (\u062e\u0627\u0637\u0631\u0627\u062a \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647):\n\u2022 [key: db_schema] \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0627\u0632 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 PostgreSQL \u0648 Redis Cache \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.\n\u2022 [key: api_convention] \u062a\u0645\u0627\u0645 \u062e\u0631\u0648\u062c\u06cc\u200c\u0647\u0627\u06cc REST API \u0628\u0627\u06cc\u062f \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f JSend \u0628\u0627\u0634\u0646\u062f.\n```\n\n---\n\n## \ud83c\udff7\ufe0f \u06f3. \u067e\u0631\u0648\u062a\u06a9\u0644 \u0627\u06a9\u0634\u0646\u200c\u062a\u06af\u200c\u0647\u0627\u06cc \u0627\u0631\u062a\u0642\u0627\u06cc\u0627\u0641\u062a\u0647 (AI Action Protocol)\n\n\u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0633\u062a\u0647 \u0628\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc \u0645\u06a9\u0627\u0644\u0645\u0647\u060c \u062e\u0627\u0637\u0631\u0647 \u0631\u0627 \u062f\u0631 \u0644\u0627\u06cc\u0647 \u0645\u0646\u0627\u0633\u0628 \u062b\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f:\n\n```text\n\u06f1. \u0630\u062e\u06cc\u0631\u0647 \u062e\u0627\u0637\u0631\u0647 \u06a9\u0627\u0631\u0628\u0631 \u06cc\u0627 \u067e\u0631\u0648\u0698\u0647:\n[[SAVE_MEMORY: type=\"user|project\", key=\"\", category=\"preference|rule|fact|tech_stack\", content=\"<\u0645\u062a\u0646 \u062e\u0644\u0627\u0635\u0647>\"]]\n\n\u06f2. \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062e\u0627\u0637\u0631\u0647:\n[[UPDATE_MEMORY: type=\"user|project\", key=\"\", content=\"<\u0645\u062a\u0646 \u062c\u062f\u06cc\u062f>\"]]\n\n\u06f3. \u062d\u0630\u0641 \u06cc\u06a9 \u062e\u0627\u0637\u0631\u0647:\n[[DELETE_MEMORY: type=\"user|project\", key=\"\"]]\n\n\u06f4. \u067e\u0627\u06a9\u200c\u0633\u0627\u0632\u06cc \u06cc\u06a9 \u0628\u062e\u0634:\n[[CLEAR_MEMORY: type=\"user|project\"]]\n```\n\n> \ud83d\udd12 **\u0642\u0627\u0639\u062f\u0647 \u0633\u0644\u0628 \u062f\u0633\u062a\u0631\u0633\u06cc \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u0639\u0645\u0648\u0645\u06cc:** \u0627\u06af\u0631 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u062a\u06af `type=\"global\"` \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f\u060c \u0633\u06cc\u0633\u062a\u0645 \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062e\u0637\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 `type=\"user\"` \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0632\u06cc\u0631\u0627 \u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc **\u0635\u0631\u0641\u0627\u064b \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u0646\u0644 \u0631\u0628\u0627\u062a \u062a\u0644\u06af\u0631\u0627\u0645** \u062a\u0648\u0633\u0637 \u0645\u062f\u06cc\u0631 \u0642\u0627\u0628\u0644 \u0627\u06cc\u062c\u0627\u062f/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0647\u0633\u062a\u0646\u062f.\n\n---\n\n## \ud83d\uddfa\ufe0f \u06f4. \u0646\u0642\u0634\u0647 \u0631\u0627\u0647 \u0627\u062c\u0631\u0627\u06cc\u06cc \u0641\u0627\u0632 \u0628\u0647 \u0641\u0627\u0632 (Phased Roadmap)\n\n```mermaid\ngantt\n title \u0641\u0627\u0632\u0628\u0646\u062f\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062d\u0627\u0641\u0638\u0647 \u06f3 \u0644\u0627\u06cc\u0647\n dateFormat X\n axisFormat %d\n \n section \u0641\u0627\u0632 \u06f1: \u0628\u0627\u0632\u0637\u0631\u0627\u062d\u06cc \u0645\u062f\u0644 \u062f\u0627\u062f\u0647\n \u0627\u0631\u062a\u0642\u0627\u06cc \u0627\u0633\u06a9\u06cc\u0645\u0627 \u0648 \u0641\u06cc\u0644\u062f project_name \u062f\u0631 memory_manager :p1, 0, 1\n \n section \u0641\u0627\u0632 \u06f2: \u062a\u0632\u0631\u06cc\u0642 \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628\u06cc\n \u063a\u0646\u06cc\u200c\u0633\u0627\u0632\u06cc agy_engine \u0628\u0627 \u062a\u0641\u06a9\u06cc\u06a9 \u0639\u0645\u0648\u0645\u06cc/\u06a9\u0627\u0631\u0628\u0631/\u067e\u0631\u0648\u0698\u0647 :p2, 1, 2\n \n section \u0641\u0627\u0632 \u06f3: \u0627\u0631\u062a\u0642\u0627\u06cc \u0627\u06a9\u0634\u0646\u200c\u0647\u0627\n \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc bot_actions \u0628\u0627 \u0644\u0627\u06cc\u0647\u200c\u0647\u0627\u06cc user/project :p3, 2, 3\n \n section \u0641\u0627\u0632 \u06f4: \u0628\u0627\u0632\u0637\u0631\u0627\u062d\u06cc UI \u062a\u0644\u06af\u0631\u0627\u0645\n \u0637\u0631\u0627\u062d\u06cc \u0645\u0646\u0648\u06cc \u06f3 \u062a\u0628 \u062f\u0631 \u0631\u0628\u0627\u062a \u0648 \u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0633\u062a\u06cc :p4, 3, 4\n \n section \u0641\u0627\u0632 \u06f5: \u062a\u0633\u062a \u0648 \u0645\u0645\u06cc\u0632\u06cc \u0646\u0647\u0627\u06cc\u06cc\n \u062a\u0633\u062a \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u0633\u0648\u06cc\u06cc\u0686 \u067e\u0631\u0648\u0698\u0647\u060c \u0627\u06cc\u0632\u0648\u0644\u0627\u0633\u06cc\u0648\u0646 \u0648 \u067e\u0627\u06cc\u062f\u0627\u0631\u06cc :p5, 4, 5\n```\n\n---\n\n### \ud83d\udd39 \u0641\u0627\u0632 \u06f1: \u0628\u0627\u0632\u0637\u0631\u0627\u062d\u06cc \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0648 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 (`memory_manager.py`)\n1. **\u0627\u0631\u062a\u0642\u0627\u06cc \u0627\u0633\u06a9\u06cc\u0645\u0627 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 SQLite:**\n - \u0641\u06cc\u0644\u062f `type` \u0628\u0647 \u06f3 \u0645\u0642\u062f\u0627\u0631 `('global', 'user', 'project')` \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06cc\u0627\u0628\u062f.\n - \u0627\u0641\u0632\u0648\u062f\u0646 \u0633\u062a\u0648\u0646 `project_name TEXT` (\u0628\u0631\u0627\u06cc \u062e\u0627\u0637\u0631\u0627\u062a \u067e\u0631\u0648\u0698\u0647).\n - \u0633\u0627\u062e\u062a \u0627\u06cc\u0646\u062f\u06a9\u0633\u200c\u0647\u0627\u06cc \u0633\u0647\u200c\u06af\u0627\u0646\u0647 \u06cc\u06a9\u062a\u0627:\n - \u0639\u0645\u0648\u0645\u06cc: `(type, key)` \u0628\u0647 \u0627\u0632\u0627\u06cc `type = 'global'`\n - \u06a9\u0627\u0631\u0628\u0631: `(type, user_id, key)` \u0628\u0647 \u0627\u0632\u0627\u06cc `type = 'user'`\n - \u067e\u0631\u0648\u0698\u0647: `(type, user_id, project_name, key)` \u0628\u0647 \u0627\u0632\u0627\u06cc `type = 'project'`\n2. **\u0627\u0631\u062a\u0642\u0627\u06cc \u0645\u062a\u062f\u0647\u0627\u06cc CRUD:**\n - \u0627\u0641\u0632\u0648\u062f\u0646 \u0645\u062a\u062f\u0647\u0627\u06cc `get_project_memories(user_id, project_name)` \u0648 `get_user_memories(user_id)`.\n - \u0642\u0627\u0628\u0644\u06cc\u062a \u062d\u0630\u0641 \u0648 \u067e\u0627\u06a9\u200c\u0633\u0627\u0632\u06cc \u0645\u062c\u0632\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0644\u0627\u06cc\u0647.\n\n---\n\n### \ud83d\udd39 \u0641\u0627\u0632 \u06f2: \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062a\u0632\u0631\u06cc\u0642 \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628\u06cc \u062f\u0631 \u067e\u0627\u06cc\u067e\u200c\u0644\u0627\u06cc\u0646 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc (`agy_engine.py`)\n1. \u0648\u0627\u06a9\u0634\u06cc \u0647\u0645\u0632\u0645\u0627\u0646:\n - \u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc (Global)\n - \u062e\u0627\u0637\u0631\u0627\u062a \u0634\u062e\u0635\u06cc \u06a9\u0627\u0631\u0628\u0631 (User)\n - \u062e\u0627\u0637\u0631\u0627\u062a \u067e\u0631\u0648\u0698\u0647 \u0641\u0639\u0627\u0644 (`session.active_project`)\n2. \u062a\u0632\u0631\u06cc\u0642 \u062f\u0631 \u06f3 \u0628\u062e\u0634 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0648 \u0645\u0634\u062e\u0635 \u0628\u0627 \u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u062a\u0648\u06a9\u0646.\n3. \u062a\u0641\u0647\u06cc\u0645 \u0628\u0647 \u0645\u062f\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u06a9\u0647 \u062a\u0641\u0627\u0648\u062a \u062e\u0627\u0637\u0631\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0648 \u067e\u0631\u0648\u0698\u0647 \u0686\u06cc\u0633\u062a \u062a\u0627 \u0647\u0648\u0634\u0645\u0646\u062f\u0627\u0646\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u062f.\n\n---\n\n### \ud83d\udd39 \u0641\u0627\u0632 \u06f3: \u0627\u0631\u062a\u0642\u0627\u06cc \u0645\u0641\u0633\u0631 \u0627\u06a9\u0634\u0646\u200c\u062a\u06af\u200c\u0647\u0627 \u0648 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0627\u0645\u0646\u06cc\u062a\u06cc (`bot_actions.py`)\n1. \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u06a9\u0627\u0645\u0644 \u0627\u0632 `type=\"user\"` \u0648 `type=\"project\"`.\n2. \u0627\u062a\u0635\u0627\u0644 \u062e\u0648\u062f\u06a9\u0627\u0631 `project_name` \u062c\u0627\u0631\u06cc \u0628\u0647 \u0627\u06a9\u0634\u0646\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647.\n3. \u0645\u0633\u062f\u0648\u062f\u0633\u0627\u0632\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc \u062a\u0648\u0633\u0637 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0648 \u0647\u062f\u0627\u06cc\u062a \u0622\u0646 \u0641\u0642\u0637 \u0628\u0647 \u067e\u0646\u0644 \u0627\u062f\u0645\u06cc\u0646 \u062f\u0631 \u0631\u0628\u0627\u062a.\n\n---\n\n### \ud83d\udd39 \u0641\u0627\u0632 \u06f4: \u0628\u0627\u0632\u0637\u0631\u0627\u062d\u06cc \u06a9\u0646\u062a\u0631\u0644\u200c\u067e\u0646\u0644 \u062a\u0644\u06af\u0631\u0627\u0645 \u0648 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc (`bot.py`)\n1. **\u0637\u0631\u0627\u062d\u06cc \u0645\u0646\u0648\u06cc \u0634\u06cc\u0634\u0647\u200c\u0627\u06cc \u0628\u0627 \u06f3 \u062a\u0628 \u0645\u062c\u0632\u0627:**\n - `[\ud83d\udcc1 \u062e\u0627\u0637\u0631\u0627\u062a \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 ({project_name})]`\n - `[\ud83d\udc64 \u062e\u0627\u0637\u0631\u0627\u062a \u0645\u0646 (\u0633\u0631\u0627\u0633\u0631\u06cc)]`\n - `[\ud83c\udf10 \u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc \u0633\u06cc\u0633\u062a\u0645]` (\u0645\u0634\u0627\u0647\u062f\u0647 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 / \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648 \u062d\u0630\u0641 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0627\u062f\u0645\u06cc\u0646)\n2. \u0627\u0645\u06a9\u0627\u0646 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0633\u062a\u06cc:\n - \u062d\u0630\u0641 \u062a\u06a9\u06cc \u062e\u0627\u0637\u0631\u0627\u062a \u0628\u0627 \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u06cc \u0627\u06cc\u0646\u0644\u0627\u06cc\u0646 \u0634\u0645\u0627\u0631\u0647\u200c\u062f\u0627\u0631\n - \u067e\u0627\u06a9\u200c\u0633\u0627\u0632\u06cc \u0645\u062c\u0632\u0627\u06cc \u062e\u0627\u0637\u0631\u0627\u062a \u067e\u0631\u0648\u0698\u0647 \u06cc\u0627 \u062e\u0627\u0637\u0631\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\n - \u0627\u0641\u0632\u0648\u062f\u0646 \u062f\u0633\u062a\u06cc \u062e\u0627\u0637\u0631\u0647 \u0639\u0645\u0648\u0645\u06cc \u062a\u0648\u0633\u0637 \u0627\u062f\u0645\u06cc\u0646 \u062f\u0631 \u067e\u0646\u0644 \u0631\u0628\u0627\u062a\n3. \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0633\u0631\u06cc\u0639:\n - `/memory` (\u062f\u0627\u0634\u0628\u0648\u0631\u062f \u062a\u0639\u0627\u0645\u0644\u06cc)\n - `/memory project`\n - `/memory user`\n - `/memory global`\n\n---\n\n### \ud83d\udd39 \u0641\u0627\u0632 \u06f5: \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u062c\u0627\u0645\u0639 \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc\n1. \u062a\u0633\u062a \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u062e\u0648\u062f\u06a9\u0627\u0631: \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0646\u06a9\u062a\u0647 \u067e\u0631\u0648\u0698\u0647\u200c\u0627\u06cc \u0631\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0648 \u0646\u06a9\u062a\u0647 \u0634\u062e\u0635\u06cc \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061f\n2. \u062a\u0633\u062a \u0633\u0648\u06cc\u06cc\u0686 \u067e\u0631\u0648\u0698\u0647: \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u067e\u0631\u0648\u0698\u0647\u060c \u0641\u0642\u0637 \u062e\u0627\u0637\u0631\u0627\u062a \u0647\u0645\u0627\u0646 \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u062e\u0627\u0637\u0631\u0627\u062a \u067e\u0631\u0648\u0698\u0647 \u0642\u0628\u0644\u06cc \u0645\u062e\u0641\u06cc \u0645\u06cc\u200c\u0645\u0627\u0646\u062f.\n3. \u0645\u0645\u06cc\u0632\u06cc \u0639\u062f\u0645 \u062a\u063a\u06cc\u06cc\u0631 \u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc \u062a\u0648\u0633\u0637 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0639\u0627\u062f\u06cc \u06cc\u0627 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u062f\u0631 \u0686\u062a.\n\n---\n\n## \ud83c\udfaf \u06af\u0627\u0645 \u0628\u0639\u062f\u06cc\n\u0622\u06cc\u0627 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u06cc\u0646 \u0646\u0642\u0634\u0647 \u0631\u0627\u0647 \u0645\u0648\u0627\u0641\u0642\u06cc\u062f \u062a\u0627 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0632 **\u0641\u0627\u0632 \u06f1 (\u0627\u0631\u062a\u0642\u0627\u06cc \u0627\u0633\u06a9\u06cc\u0645\u0627 \u0648 \u06a9\u0644\u0627\u0633 `memory_manager.py`)** \u0622\u063a\u0627\u0632 \u06a9\u0646\u06cc\u0645\u061f\n\n---\n\u2022 \u0646\u0627\u0645 \u067e\u0631\u0648\u0698\u0647: default\n\u2022 \u0622\u062f\u0631\u0633 \u0645\u062e\u0632\u0646: https://git.msa.artacloud.ir/root/default\n", + "last_prompt": "\u0631\u0648\u06cc \u062d\u0627\u0644\u062a \u0647\u0627\u06cc\n \u062a\u0645\u0627\u0645\u06cc \u062d\u0627\u0641\u0638\u0647 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0648 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u062d\u0627\u0641\u0638\u0647 \u06a9\u0644\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0628\u062e\u0648\u0646\n\u0627\u06cc\u0646 \u062d\u0627\u0641\u0638\u0647 \u0647\u0627 \u0628\u0639\u062f \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc \u0628\u0627\u06cc\u062f \u0628\u0647 \u0646\u0633\u0628\u062a \u067e\u0631\u0648\u0698\u0647 \u0648 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u0631\u0628\u0627\u062a \u0645\u0646\u062a\u0642\u0644 \u0634\u0648\u0646\u062f\n\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u062d\u0627\u0641\u0638\u0647 \u0631\u0627 \u0627\u0632 \u0647\u0645\u0647 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627 \u062d\u0630\u0641 \u06a9\u0646\n\u062d\u0627\u0644\u0627 \u0647\u0631 \u0628\u0627\u06cc\u062f \u0648\u0642\u062a\u06cc agy \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u06a9\u0646\u06cc\u0645 \u0646\u0628\u0627\u06cc\u062f \u0647\u06cc\u0686\u06a9\u062f\u0627\u0645 \u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u0647\u0627 \u0631\u0627 \u0645\u0637\u0627\u0644\u0639\u0647 \u06a9\u0646\u062f", + "last_response": "\u0627\u0633\u06a9\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0648 \u062d\u0627\u0641\u0638\u0647\u200c\u0647\u0627 \u0622\u063a\u0627\u0632 \u0634\u062f.\n\ud83c\udfaf **\u0639\u0645\u0644\u06cc\u0627\u062a \u0627\u0633\u06a9\u0646\u060c \u0645\u0647\u0627\u062c\u0631\u062a \u0647\u0648\u0634\u0645\u0646\u062f \u062d\u0627\u0641\u0638\u0647\u200c\u0647\u0627\u060c \u067e\u0627\u06a9\u200c\u0633\u0627\u0632\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u0648 \u0627\u06cc\u0632\u0648\u0644\u0627\u0633\u06cc\u0648\u0646 \u0645\u0648\u062a\u0648\u0631 AGY \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06a9\u0627\u0645\u0644 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f!**\n\n---\n\n### \ud83d\udcca \u06f1. \u06af\u0632\u0627\u0631\u0634 \u0645\u0647\u0627\u062c\u0631\u062a \u062d\u0627\u0641\u0638\u0647\u200c\u0647\u0627 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u06f3 \u0644\u0627\u06cc\u0647 \u0631\u0628\u0627\u062a (`memory.db`)\n\n\u062a\u0645\u0627\u0645\u06cc \u062d\u0627\u0641\u0638\u0647\u200c\u0647\u0627\u06cc \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0648 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u062e\u0648\u0627\u0646\u062f\u0647 \u0648 \u062f\u0631 \u06f3 \u0644\u0627\u06cc\u0647 \u0645\u062c\u0632\u0627 \u062f\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0648 \u062b\u0628\u062a \u0634\u062f\u0646\u062f:\n\n#### \ud83c\udf10 \u0627\u0644\u0641) \u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc \u0633\u06cc\u0633\u062a\u0645 (Global Rules):\n- `precedence_hierarchy`: \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628 \u0642\u0637\u0639\u06cc \u0627\u0648\u0644\u0648\u06cc\u062a (\u06f1. \u0639\u0645\u0648\u0645\u06cc \u06f2. \u067e\u0631\u0648\u0698\u0647 \u06f3. \u06a9\u0627\u0631\u0628\u0631)\n- `php_preference`: \u0627\u0648\u0644\u0648\u06cc\u062a \u0642\u0637\u0639\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 PHP \u0645\u062f\u0631\u0646 \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0645 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u0648 \u0648\u0628\u200c\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\n- `server_domain_caddy`: \u0627\u062a\u0635\u0627\u0644 \u062f\u0627\u0645\u0646\u0647 `*.msa.artacloud.ir` \u0648 \u067e\u0631\u0648\u06a9\u0633\u06cc \u0645\u0639\u06a9\u0648\u0633 \u0628\u0627 Caddy\n- `projects_directory_structure`: \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 (`/root/projects/{user_id}/{project_name}`)\n- `flash_auto_mode`: \u0628\u0627\u0632\u0628\u06cc\u0646\u06cc \u0646\u0647\u0627\u06cc\u06cc \u0648 \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u0628\u0627 \u0628\u0627\u0644\u0627\u062a\u0631\u06cc\u0646 \u0633\u0637\u062d \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0645\u062f\u0644\n\n#### \ud83d\udcc1 \u0628) \u062e\u0627\u0637\u0631\u0627\u062a \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 (Project Scope):\n- **\u067e\u0631\u0648\u0698\u0647 `copykar` (\u06a9\u0627\u0631\u0628\u0631 \u06f7\u06f8\u06f6\u06f4\u06f9\u06f6\u06f3\u06f4):**\n - \u0645\u0639\u0645\u0627\u0631\u06cc \u06a9\u0627\u0645\u0644 (Telethon Userbot\u060c \u0648\u0628 \u06a9\u0627\u0644\u06a9\u062a\u0648\u0631\u060c \u067e\u0627\u06cc\u067e\u200c\u0644\u0627\u06cc\u0646 AI \u0648 AGY Bridge \u067e\u0648\u0631\u062a \u06f8\u06f0\u06f8\u06f8\u060c PostgreSQL/Redis\u060c \u067e\u0631\u0648\u0645\u062a\u0626\u0648\u0633 \u067e\u0648\u0631\u062a \u06f8\u06f0\u06f0\u06f8 \u0648 \u06af\u0631\u0627\u0641\u0627\u0646\u0627)\n - \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u0627\u0631\u06cc (\u06a9\u0627\u062f\u0631 \u0627\u0633\u06a9\u06cc \u062a\u0635\u062d\u06cc\u062d \u0632\u0628\u0627\u0646\u060c \u0639\u062f\u0645 \u062f\u0631\u062c \u0646\u0627\u0645 \u0645\u062f\u0644\u200c\u0647\u0627\u06cc AI\u060c \u06a9\u0627\u0645\u06cc\u062a\u200c\u0647\u0627\u06cc \u062a\u06a9\u200c\u062a\u063a\u06cc\u06cc\u0631\u06cc)\n - \u0633\u0627\u062e\u062a\u0627\u0631 \u0647\u0627\u0628\u200c\u0647\u0627\u06cc \u06f5 \u06af\u0627\u0646\u0647 \u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a (`Copy`, `AI`, `Bots`, `System`, `Monitor`)\n - \u0633\u0627\u062e\u062a\u0627\u0631 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u067e\u0627\u06cc\u062f\u0627\u0631 \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc `./data/`\n- **\u067e\u0631\u0648\u0698\u0647 `myapp` (\u06a9\u0627\u0631\u0628\u0631 \u06f2\u06f3\u06f2\u06f8\u06f0\u06f1\u06f0\u06f8\u06f7):**\n - \u0645\u0639\u0645\u0627\u0631\u06cc \u0633\u0627\u0645\u0627\u0646\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0633\u0627\u0626\u0644 \u0634\u0647\u0631\u06cc \u0634\u0647\u0631\u0646\u06af\u0627\u0631 (PHP \u0628\u0627 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 `urban_issues.db` \u0648 \u0641\u0631\u0627\u0646\u062a\u200c\u0627\u0646\u062f SPA)\n - \u0633\u0627\u062e\u062a\u0627\u0631 \u0631\u0648\u062a\u0631 \u0645\u0631\u06a9\u0632\u06cc \u062f\u0631 `router.php` \u0648 \u0627\u0646\u062f\u067e\u0648\u06cc\u0646\u062a\u200c\u0647\u0627\u06cc `api.php`\n\n#### \ud83d\udc64 \u062c) \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0634\u062e\u0635\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 (User Profile):\n- \u0645\u0634\u062e\u0635\u0627\u062a\u060c \u0646\u0642\u0634 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0627\u0631\u0634\u062f\u060c \u062a\u0631\u062c\u06cc\u062d\u0627\u062a \u0627\u062f\u06cc\u062a\u0648\u0631 VSCode \u0648 \u0645\u0646\u0637\u0642\u0647 \u0632\u0645\u0627\u0646\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062c\u0627\u0631\u06cc.\n\n---\n\n### \ud83d\uddd1\ufe0f \u06f2. \u062d\u0630\u0641 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u062d\u0627\u0641\u0638\u0647 \u0627\u0632 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\n\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u062d\u0627\u0641\u0638\u0647 \u0627\u0632 \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u06cc\u0633\u06a9 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u062d\u0630\u0641 \u0634\u062f\u0646\u062f:\n- `\u2713` \u0641\u0627\u06cc\u0644 `/root/projects/78649634/copykar/AGENTS.md` (\u062d\u0630\u0641 \u0634\u062f)\n- `\u2713` \u0641\u0627\u06cc\u0644 `/root/projects/78649634/copykar/GEMINI.md` (\u062d\u0630\u0641 \u0634\u062f)\n\n---\n\n### \ud83d\udee1\ufe0f \u06f3. \u0639\u062f\u0645 \u062e\u0648\u0627\u0646\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u062a\u0648\u0633\u0637 AGY \u0648 \u062a\u0632\u0631\u06cc\u0642 \u0645\u0633\u062a\u0642\u06cc\u0645 \u067e\u0631\u0627\u0645\u067e\u062a\n- \u0628\u0627 \u062d\u0630\u0641 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0627\u0631\u06a9\u200c\u062f\u0627\u0648\u0646 \u0627\u0632 \u067e\u0648\u0634\u0647 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u060c \u0627\u0628\u0632\u0627\u0631 `agy` \u0647\u06cc\u0686 \u0641\u0627\u06cc\u0644 \u062d\u0627\u0641\u0638\u0647 \u0642\u062f\u06cc\u0645\u06cc \u06cc\u0627 \u0646\u0627\u0647\u0645\u0627\u0647\u0646\u06af\u06cc \u0631\u0627 \u0627\u0632 \u0631\u0648\u06cc \u062f\u06cc\u0633\u06a9 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f.\n- \u062a\u0645\u0627\u0645 \u062d\u0627\u0641\u0638\u0647\u200c\u0647\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0644\u062d\u0638\u0647\u200c\u0627\u06cc\u060c \u06a9\u0627\u0645\u0644\u0627\u064b \u062a\u0641\u06a9\u06cc\u06a9\u200c\u0634\u062f\u0647 \u0648 \u0628\u0631 \u0627\u0633\u0627\u0633 \u067e\u0631\u0648\u0698\u0647 \u0641\u0639\u0627\u0644 \u062a\u0648\u0633\u0637 \u067e\u0627\u06cc\u067e\u200c\u0644\u0627\u06cc\u0646 \u0631\u0628\u0627\u062a (`agy_engine.py`) \u062f\u0631 \u0642\u0627\u0644\u0628 \u0628\u0644\u0648\u06a9 \u0633\u06cc\u0633\u062a\u0645\u06cc \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628\u06cc \u0628\u0647 \u067e\u0631\u0627\u0645\u067e\u062a \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.\n\n---\n\n[[RESTART_BOT]]\n\n\u2022 \u0646\u0627\u0645 \u067e\u0631\u0648\u0698\u0647: default\n\u2022 \u0622\u062f\u0631\u0633 \u0645\u062e\u0632\u0646: https://git.msa.artacloud.ir/root/default\n", "last_status_msg_id": null, "restart_pending": false, "last_delivered": true, - "last_update_time": 1788071082.6958604, + "last_update_time": 1788072755.8203554, "workspace": "/root", "conversation_id": "d54c0c8d-6424-40a4-84f4-7a9de60eac7b", "model": "gemini-3.7-flash-auto", "effort": "high", "language": "fa", - "last_context_length": 63109, - "last_total_tokens": 721532 + "last_context_length": 106524, + "last_total_tokens": 1635628 }, "232801087": { "chat_id": 232801087, @@ -179,9 +179,9 @@ } }, "turn_in_progress": false, - "last_prompt": "\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0645\u0647\u0645\n\u062e\u0627\u0637\u0631\u0627\u062a \u0639\u0645\u0648\u0645\u06cc \u0641\u0642\u0637 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0628\u0627\u062a \u0642\u0627\u06cc\u0644 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0628\u0627\u0634\u0646\u062f \u0627\u0646 \u0647\u0645 \u0641\u0642\u0637 \u0645\u062f\u06cc\u0631\u0627\u0646 \u0627\u0645\u06a9\u0627\u0646 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0631\u0627 \u062f\u0627\u0631\u0646\u062f\n\u062e\u0627\u0637\u0631\u0627\u062a \u062e\u0635\u0648\u0636\u06cc \u062f\u0648 \u062f\u0633\u062a\u0647 \u0634\u0648\u0646\u062f\n\u062e\u0627\u0637\u0631\u0627\u062a \u067e\u0631\u0648\u0698\u0647\n\u062e\u0627\u0637\u0631\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\n\u062d\u0627\u0644\u0627 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u062f \u0628\u0627 \u062a\u0639\u0627\u0645\u0644 \u0645\u0646\u0627\u0633\u0628 \u0628\u0627 \u0631\u0628\u0627\u0637 \u062f\u0631 \u062d\u06cc\u0646 \u06af\u0641\u062a \u0648 \u06af\u0648\n\u062e\u0627\u0637\u0631\u0627\u062a \u0631\u0627 \u0628\u0647 \u062f\u0648 \u062f\u0633\u062a\u0647 \u0645\u062e\u0635\u0648\u0635 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0648 \u0645\u062e\u0635\u0648\u0635 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u062f", - "last_response": "", - "last_status_msg_id": 1378, + "last_prompt": null, + "last_response": null, + "last_status_msg_id": null, "restart_pending": false, "last_delivered": true, "last_update_time": 1788070830.5784264, diff --git a/uploads/photo_1788071446.jpg b/uploads/photo_1788071446.jpg new file mode 100644 index 0000000000000000000000000000000000000000..57c4fd0572c109efadf450a3987ad2830afe82d8 GIT binary patch literal 199085 zcmbSz2S8KH((p-Wf+*br5|OTS5fBK7ih=^tq(dkXP-)UT#)=4nfYO_w^eWPuNQuZzRK1F3IVI->!}H}KoVGXpnHH z>sl89egokA)_=h*{(__LIFaas01eX4)|HeO2}rf0wY1mK2KRm7cMNidv>+wu0;&Gs z8Gu7F1f5-lAhPFwhFL^IP{|_*Ix_TU7mjn1%L$;75!~tD_>>)HH46xIXC?p0+{uqWX zLgZv*q%S!cIR!a61tkp?C4d9eH2Y}i4$#xn9iThNz;uL}f$=coK{}RWEQgOCWn*Kb zXJ$Xn&U*X^D;q0`35=YAf|7!gmWqm&m4S|d_5Tb%K0plnXdrS78H^KxGr-6gU_a_X z1z-@Ij3kJE0F0cBf)Y-(55%&8h@bFhEF9E=lIq70L`w#e(v#7H9^1Gxhmli{eyhPl zZAt!uTHysX=7iQgeieSkdwX9D$6g=^S9k#f{EKR*9>m%YNM}5r)E995Geo1 zS0v;<;|VU1h8QApk#s{=ooD!KGy;``fs{$%bbw$U!LzCTwG#HRdU*Nj$|^BxGiBke zkL8*L_#Kal@qgp#>mD0?bW7#S%qdb5F~DjmXY;#V*3a~%-Iwppp-e^!l2GsUh43vHdl z%|p<`Cwm=sL6J0o;K=Xac;x_c{KEV$yV#cOv?-G4Yc$2c=e#cR-2LskaU^bSf476Y ztet!V&L?)ke_D9{(UwWvQqNh3w<`56h6$oIgu4YkPup&Ct{a%R-&Gixf3wNQHt1OX zpio*QZRPH(l&4>0{kS*RXUE%i4A!rSI1aRYaF6nn)ZJVh*R-Cyo9s9m>@YoQYDdVq z7OCV+HYHZmp#gb@pcGCAG9kh)K_hc{*dd=4V>i2{;(3qW885mRtFj%g&EfQ| z8zpCspY3IHc&jlP65A~y6H@7Cx)oPxZJ_7CTy0(1*)7b&OKGeCLEsBuACO9j3|qtP zy}W<{6}M{08ENU;uBiN?iWKSdvyZo)75R8K$#TM5ZX}oRcq}Dw&eq2bm#|QjqyEkp zyPP{OwS+8k2#S{y8vIslyBkT!%ey>$Z`{#lP0jvo*tg2ubrtJ=x6QJ$o4)R!6R)0J zW~;u|es}&j|5ibrTMg@XX`D^b=&cr~AJEN>vaRrvZQNSfU3r;NlNgh8Hj_2Md6KvA zFCd1Q{^zuvVop)v9Z3+xL()Sbe!k&>lJs7tB7U?Rf_<1*&l|7Mp_DD_A-IKey5S|w z>_;#-po2VDCqw+?KtID6Nsn^gVy8D5iRK)kw55edw!K&Fc~#N{%>Se<|8|t{1OUE;U z4hal$Q939+T`yn~qqxzaR=!!_l;0#Fq?^u)QNRFp2wzXG@sJw;Bf)-_MT?+AK9ize zSgS09II*+BXio7>A$yx zEg-Q2K-M2R|B;vcdn4c28LQ=KI+VFON=1AUCV6{H4p)jmAN@%N2FKP4r&+tO0x=+o z?qbUbLYtljsBb7l%fnm5zu@zNhc^O&B_Ze=59$WKts&J(BR2$1!o}Wlv2iqh6njf+ z`+$uDJApjnyG69H1o$6;{|O1QeZX|8;B=5`3KM^Q3#Ih>XERc1s82kP8a&|x(TM^L z7x)~JG7zN!@scaOnpA-3F81z*El)4GF!_|L%XTA+3o8jScZ46Dm%GCbN((_0k5$b` zcj!jrUJLHwe_Uui86JhR-iOG>GvFAwkJk~OfjmJN6QxVT$2H|7K!)%|hp3Z{coMxw zb?{!ERk#qtWpB@AoB_J=u2cthe$>QTzQSC-CieX%UfR!8iyXhSL6>H=GSc7WXJ=Gh zaS$gpC0Ny1SS!1G?EUQe>fNbvqs=p(?$W_9baCN5x9Y>s+&$1wS>r{NtY9cyh1 z3`TwG@W;;z$S(0wR#g?gFdkEBDfj(MXq-5i>`SKV3{Sl9#V;VX7XN*bvMyyjQO-T? zdhYEM)M%bV;NSI)hitM(jA6yGv!m5;Y> z1FGWqn?!NKQe!IaUB-v$9j1HpC*zfHevjHz=I_3)boNasKB&Jqf&aRlubkziTjZUEP4Ym^!KFdoRKJ+U)k=Bho zO+(*4c-wPWE_yH!4Vw(Ljy9$vRqdwoNnBw_5B#;?;C$r~0IfaNmPv)ey+Ttqm!q&D=j!ti` z8k#Q65gNsuE|gXkiPp%HN7)d%YzrLFmI> z$)0(y0V!U)b!X}3^jwRVT(yu|>sYnJNa1w*Ft)EK$2#uzTAFZ;iF-`TyNd0FfgO#l zbNj;(rnxjA%R|4jh4KH!{kiY;~xi4_Vwl#IITaR_V4l7I?l%@S2}6$ z!;9RVYW8;Nkz{H9`uvroQ%uJzv){QgVt!+P+`X_x8B*89=9mR)>?U_kRIcECMU%aLbJ~ppUXLBY-4Cx&ZuXA6}2oU79tm8cGfk=Cgi{#QTs5fy8D5i!WV2 z;KA8Gg=U_AsmmV^@byAt90q}-je7qxjMAA*m;-{2wjM~xXG3c>k(?5U%sCa4#FE_? zaza7XODPehGdG89Ca2U)r!@b&l#mioKP%|F6R&m>Ped@yx!F|TB_1^E zmJgw7H$tr8qN>B6n#Na$;`)WhR+ZY1D{Zcr`)X^8z_;|;1;1^nw*_pCH_4|6=Sj7H zX9`{Jv|sp?c)ni*G47IvldKBibTJm`!DHL11Cqw$cY!rqWsMi9yIiQu>mW!=v9q=69KQ(&sr%R3>z9ZmW6zg6O3NZi<^gu8F1 zBWDK+3DVUIF5}3;td>CL!naf33~cP0SNTp1ERWv9t|1+)tT)#k+7B<=ZFZMzy7$PV z+!CahGLGfZ74;gN)7*6L<=NEJ$^6=Ge`fsB8MfTR<-yvoX6AJ3Oh%R)36Xed=j=BB zGk136)81rCyULv;+)ckDSNp*wlS-$-)i`5tyJap>T>jO{4=CMdd#T!T)$}F31f)}h z5=&*KyTkW9Bjn1YNFEcfUY^XyqYslvUGO(J{e}GpL{alfxFxYsZ8tT4{8quiI=WMW zb}kp?$1jL~C32n9YYdKzIT#s3)&0)Ja=I}kcT%(eW>IaYbLRXVXa1s|OrG^-WoQMt8X@Tt5A~3U??}wI3YkQnNF~f5*muEgE!ItVer_EI1y!%lH zZqR=C+mQNO8UGr}lLWALeTp>DP|9`wD@+~sQrI9YQQCS&IPiQzHTeLv|B>WS zkMrD9h|D+R=@-mi3W^W0o^H~X+p8H4D{%vRJal{Y3G+?rD5cljo6)8mFh+4iQP>G_ z>Ld_*)GcOqRnPoFinUXmSFfFGqimFTU!78A4l7nW?bISMwlLndI5j5ZJnr5_S601C z?e{L4*$g7-y|^rM#xEsUr%tO21rJP%d&~y)mhA>jCscN4&Q#yaH4sCW<(}EuD6_B7 zDJ}JBmNXpmd-QZi*tLzuZk5er@T-LP6%Td9ciFSiOI_Q${RY8#T~p=hUm`N`5LtTX zSM$V$wxx^gX0>{X00AtUa zW#V`qkDMoBn>q>usg>Kx|cNQ&e_XZ5%k@n1jnp8?RmbeMvKi$ z6BbXh0t;q5rn*M5%kH68lE_I%uy`lTvp#N+LR zvHWTDneDM*Z8PoMNw-j9UYP5M%d2#Vrtda3OxNcLkA-!!muHxTQljRR^E2!50AfOY z2M`0M{Qd(uw{PBP%#IKl4PkZ_wX4K8#54%?unB?ns2kXtAe1n{OwZ)w$T;?7pJ!J@ zzE-;exr5 zz{qYhzeiJW>{q(Wt_UabJDWDo{1e=bZfNbzHZ0lwK{v8DqnHplar%U08aOZQgaMi8 z3s9qf1vob(=OuV3-zpY6jV)zc>9WI+_LW~zr8jj{CcW9!6;MUrWCWlnjIv*8>R#DVI&JHIP0g)* zH!bv9cr4zvFn9NN3`Rc7GVU|2awHT91hsVxxlsXaBCYT}GzuvW=$P`}JPp zxoT4i^4`6yC`W!F%FxMP$L7vSlijt6U>A}7L}BZ;J#+r>Mpb*1+)~hX&3Rlrd)1*G zS1;LkMw9;8lkpju!;g5a@Dn|~R{Zl$ z1w1%cbHI8;J*xRnUkh~I9;i~~agAe4lTM>4arz)c$TJthg(Z=p^X~bjih_XkPllNg zF9eByLTsOoidEOWZDf9N6vvwrek_T^A;+rHTH&YP7W)LKoXB#1~=ZT5HW-qD|5aeAn`SSl+Uqj$TdYO^=@;g`#=3ez2Y zr2}kTjPtI?<#y}!#Fc2bxTKv~{}M3xw8*V9qs2vgtebT#T)h-!otE=j?FS^@dFxTRO~;)sz9WRZj7)B7&K}0oxE`xfIyPaQ zEA!ai#4A|OCQGd!d9)m5oic|LVDlWXU6oa}QEVLZb!I;<{cPgMP=jMxH>hEj4LMpt zZW9Q!oac)~L}jj{*-;Fs>Ic>yv0oD6pcx+M;6lHhA+J?{l?^&Q8NPkBZRk$=pv~2? z{=FNC765Po6@n8@GH6R*_BgM0Fq4}m%XrD$pn%BIrWu@~6(Gu${?maknxh~&B64)p z+WAaO!;;~$qpHD7j&^&U3}68>Y~NRZwV4MAb~Aw4bqE%<#~FeI^@bXbvB_DI9wnz= z7542X%0x{)f+SNjih7yeme@<*Xn^D*(~0jUF56}qu1@|;$0n{1NwV%{y~HFzs;&$z zPa#;*GmRuj((C;m0nqwLuPEf!l~4R|Wz~IAf=YQ(9A%iFiOFm-hp<6L%{H-0>{p#A z+lvCDxlnlNw^PH0t3CFP`f99SPk|=aJXZZ>I=d>lqU4N;1pCPzXW6P#UsvNV!E-}W zr!|XuU8zJm39;R3o!Zd_7w&qEz3>CwkM$OuCIfT}Ummk^VU zwi5?-5X3IeDvK0T?;bl(RMtzm4Sbol>l?gh*R=Opy-OYVl{czvcFHV(m1^gk(OX^* zB1g>I(Y-F)pF=EV>ReOD4ls_%yoZi1fB_m@7!Jqi6zL+j2y+%zOdmCv;OPEPL}m2O zW^CdK=bv?jXyZkM3W5VeN4-s~4caxh@_Xh34GKIYa-8_=Az&DNlDqB)VDcv($CP4f29VdhORA+M0)N&sm*Z^b9VL zmWwFiF{mAww;WuST<4#5AEGBsQ0R{ukgAtD-y2VAU?Bh2YriVaR^>0iAgb}}iF6|~ z&kN6QKr`^PrzT5^SN%~357Ir%2+okuj*}3sJVlE8#6?anFLXD{K}PG zNd%@k;N>yB?TRcroW7b`G~Ps5@1VksR+(5oeADAZP#{t6EgVp#V@OLiiOQUR&Illm z@*-POhoYQIn&{Z?B#S+1n$zOZmw+xM$=H{b zQ(N)O_MGb?LN_HSCJx+9_o;@L2b-o(0h=MW?h0#rc=XVVdG8TcCGA#(O0VJ^S1j|O z^^lUZUghTycrokFSQt}PC-CTTyY~nir(Ic^7V@p7;zCS69;^t(hZn?OYB&Chi@Y{6 zBhc$qV>DwYJ?5XVS^cTqKc%_N3<7Hhy2#i0p`i2(i?qqVW;f_CZ46+1Fr*3Rs-M@= zvgpcIAuzk<&4iU2xE}G)#iz=CQ@94U^a5YPKp6K`lC?C~D;K^-H0f~LR`^xHcwn9? ziF8j4iX8578a?ejRes!By0S^;IRf-B9I* zl!dYsyJojzo>h}FyBDx(t;A?-{F=WvLH^oY?bfyx5YHK zJb_BAb%TFEfejC7@Y24ynef6-H^f#4hy{64mu#Y4=T%Y?ZVdI;`kwhx{5|-hIlDV` zOg>9^TW+(s&-$$l-UiESS;m({TsS;MnM$<6qXi z4y^glcwgL`G51C>C_lOC(FRQPeGI8C{}Yh;zEWLW+qS_?4_+(CE9rG!Mg4$6%es%r zk|%+*r-pJ6Of)dCugjOH&X*@&`2?)APSVyY{7-!UC7v|5s%{#DD1z-eM1N~NUmj;N zX}9T@wfir$|L_3xcQUe-pS;=gMFxFBWfj80+&M73=ji`dnf_v(XHkjvdW3;3Ve|ND zsA>?OPcz*}{=Zhq3}=j;Z#D>cu|kwXukvA%uPlex#+WVTxuzmsR4l!8rV@h}5 ztH9s0WcP-gu;Nwc4riK@Lq>LgRNYjq*Jp|QH)qTh`E{YQ^P8MIXO*?)N==$lYcg8X zD_GkdZJE=S0_+LflFk*$gFm1dutHm(BAjLt+gBrzGq~b9tUoDJn$zwcceK~3iud*G z#=-T+=_6~b9z}^WsNe?)OCI~>LkNi}+l!{`A?#y%>{`8w3D{u#Gbwb7>*?+Fv}u_@ z=|z9jd}E_5Q`z7xe|92SR88JMOxq8L!Koc*n#f%lFI1e`QgtZNS%l+pT2;=$=CkT< zGIinDjt)WR@$;L@6-#22h)3h z^>C75S8^-c-X@Uy@}|La2{AoP=X?pTh^#)Ewta$R{f-|}W)U8YJMgpQzHD?jY{&NY zhVLPHciTln8LOoyf;3=))8cEs-kQ>SMGVn%pNFfiDe5-t-}?_X>_jYVa8z(veaBCl z7Jq_E+-TG=;S)1N=SOv`wG*hfUqBkuU{y0gG0E#mm>l=A{Pt@v0*vRQ#B=cgh2KQ~ ztGiCo^%Win;_DB%;wh5;M4b2khlOz?F|yeVqRKn{e04vahV`=iYTT_S?SJ>S|EWk6 zHWIB4nkNzAB-0M4zPB4T4CH-x{wc}dCV%85#~R_ zEmZISe-uKUQv?_-#Y_9UB8argW#Uvy$qbUc%meRvH|+ye%0HFm&$zvY z5$L%9zc-I7RSMPQ;x7=JZ3b@NAur^3yw2dfAPsb2T@SZdBek^r-k0j&P>#AOcB{+= zch|J#vm5c2)R6r9Nu)h8CahP-zNk}QgQ|k!^12G*P-f@tjGp<-#i^-BkH1vfH2j(8 z->_3dnVyVWpjo&>l+{tZ%y6@2!5i3b$`o!Q(C zj*xy=QEf=*ZGJT8CB5pidc7h$hT&aRdx%`(vC~AK(xmFQ_cvUPGsSJ}1(GN7f&+uA zL)e~arMtwua<;+oV70cI_kX#+kyOnu^7Ma$9KiG!lc5F zmdhS>7xyMdCZe2Cm0QS1s>%Tm`15H$9c8rR^9WT)`dbtHOF#fPO%|X5(T9;vm7P$4 z6!z_hF^DF?W{lnuB4Yb)Zwv_DV*+Qgj=rx#_2sjML4PQae_`|I!_N~e4D@}wko^EoUqR8Jrw(UKKfssGoTOBxjC}x!zx%}bV zZ)4>#UQfaWl`0bDojk-JRV`twqsWz$&RyHJ*wK6DlQ@-_c1|qyZqEgG z)562-rmfg7#3sq(*Mo*yVgfvVK&d{s1?xH)hbZDO&Y^c+#@ONWXxhhJ|Lg^sT)kP(8g9IB zU#|N?4f*$aKRppIP+^9+Y{ zdDFGrb0v|Ve?aaVrk%E%rh{qIGkQwtt0HVgxE8&hYH_8xx#Z2r*`;i+C?DrSdSsmG$uB%|>yf?)Y=f z6--%QtJyskO2+xJ{T>c(pQ@}nY_xoIjdG!($eW#~LTFOLF@iMnR1=7T~1kl#6j z^Ja_zAd(!MY<&*#fTMTh)EJ1o{yj{A(}F=%fpbs1$S(_)KGUD+0OOw`;GWrG5`QR+ zq;DV?P!+$KgFC0ib+E=q3L>$^?4u!1R$zi_fZ+%@f8d6l-$%{@J&9uA1mn}9LG)OCi)$YCgA;U(a4!Cag8aTgIWI<}Y|@0-)vRzqJUCkyZ$f-_Nc zm76tPf}5p1c(EIV*lc`R!jsvv#-o{YXGV)3s~8FeM^uc5tsOJDXQG~Xz0mub$~jAs zCN4?#nT5NYTYPQKerZa486Nh8X_JPSgK05i$IgXo<9|S+TT-pge#6aUO|c)`wgL*{ z=1UWbb5?v!Pq~idwAlvctBg<^x{3a5p|`>e6bt#Q%U?@4<4H}FHiK6^=e zI?vAyxF@}Z0euJ_VGyVkIph7S`#B(b@XP{-zgJY{hd9kFTAoUv6BS;oBI-jNDemb3 ziK?W){M2@U5Zd>gWWtfsfIB(q_7?ze9z2IX0q3p{!8y$ppnVOow6_~&Kzj-_pPy|% zMd}|+J~c=HgKO;RdQw^*fWtNS6fQ8HASj6x2nq*6HMsYlFyJ{oN&#lZ!B3iO($S#H zK1c0|}z;9nDDL;Pjdh43DK)yj4JL$D4m~N^dr>jOyB0~Bv8rU0Ao~E1?AYs4chDvPy}WX%|5sV=xPpTFk?e6^&d;Su)TpzH@ZHC-J_@1A~<%vdxeat#kGIz`u0LLHzLlSTX4)RBgm?WTNEI?^akpn}7vU)91W<@+-j+0Rlc2ip( zZu`=9Nj~&U6eH<*TU?D7u=P}B5E+-iI4~SC)30_s?LIZE!xrOuaAQK4=sTDmypR1ljfj;86U`-4-7>N4n z1vAADO^m!ecKe|byw7@P!RFmgd3XNXkYwEAgv|rojQq1FSralvSlcs+=*9w5b0YG4 zYqh7e9WlD#$XjP4=lD5^QO(>G+`2!d1T;EU*3{CqVsb#sesuc4jPOV*R#FXFK5ugT zfOWU$_c&yAiHv%3Uz*-bW=H}!x7;Dvf2)XdT*cwM(4t<+jDTGvny@iGE1QdItBTpq zF0n}TwiIM`@A}pjQKH%7w4>;>~eOmez#``EUYHdctL$CoS_Cwz#m)g9p-B~xyn-pX_HaO>K zvnx`9Zkg%(UOJrjdEpb=v&S{&Y-8%PhMUf29VTZg+9;cw@Mm|&Oyk{M=Jiesk`+ys zw;H??UG%^&NDGYxAnl1^uH|<98J^`vc53lhx-Mt*tf}1Wp|tqbi_u> z5z5o-XZOBRXFW*sca9aq258u{uh%GmqyU6;0Qc1*94krtLx_@PoSbJ81gq+F6>9;5d;d|3=P8aE zNDKr?4MpXi6yxh%`P7C(r64Sq<&j6Lbygi-3>rId{1WE?h{)918afRm`k|cXn*JdO zcGED!C@mPBF)ia%Y;QHFD}(TGNs!>nW$IhvIAYFwKdXy zG0()ETNh`UXOh~{ZEY4(tY9k@UTip)7V#_?7dv;*F7|-TGs<>JgH$yfj!&BUYcW)Bcr#+ECP1uf4mj6b;LAi^i~bzG%eH52(m7+BAI;`UbGD1l zm>}-AIy0GGZ!_YP^NKS#WMhGyoDY10_e@kvmh}Y91Wtt`A1Ont(^_(h3F?ZfoS{Qb z$NnjkR3-_j_fZvC#@z66sn0S8eW=Q3i91wW>_YAG`*p514LIJMm&WJI*tt3Pw(E6{ z-tl$dwp;fo3-H=iGS_OhD6UvIR$ql0p3!h+X!BIa4Nn-g2$7XH{2cD+pTOmiKCfE6 zv2(w(mI<9c)!98V!M#wh!d21d)K%4cP~Fx==UsVSX8&y=KE0f2IgyT{O51pME^<{h z-_s2a$JPrn{QDo2WInTQCzd(9@fly*5C|>>Vx(7KyaGfs(PN4am(Izn_wnJLIF8Ku z>tysMkxUo}LM6)t+k9Y`IxT6~g@N`P?HU|)1ZkuUHETL3{Q@H{gCE-gPorn*FJyv^ zZCx8k(j369W&+XRU51FfB+-YP?fJ6Due4?3a0dBvg_~Pjvl0ngXiI|d%)_riTwwkK zJ0Q+r6+9{mQUy!M_f9ez9oozPKVJ?6=rfd#x3Hk*J-3b>C6z$o%^7YqJp?hxdHToLM-_tY9~ z=}{A~e9}RQ66*A^r*h+CNwi2H-Xx2m#a-Kv_8aV_iV5UD& z>3MpXCu8bAG$M3htmOp(QTgJJR)%u}P83_vfK6i^3doSDl0mZvu#E%;a>4d$S{`2> zidy8fQaU|zlsc!WqiDpVKa&14!UTme!ANJ+A$Zl(ndffEE@S9#zYk= zIEX#@@`D3gg!Eey3xFsa*y+4z~ZTD&_#hGAL~yS1ObG;86dRTq!29S z&sZmKP=?34(sDn;S5amZ5R4zZ3xG`J*(W}I)h0O%pCSBIB{^*N4Spa^vVp(yslbP) z-;yg&=AL@Ga&ogWQ$Ck7c_`!3q-N8t>)T_OSU#V3%iMrPG;5)l^?Ml4kzC173VRWGiDl%H<0)P``A~uWxGrmwUivF6 zFK9%q3zY$lkhB*}&G8)A&QVvuB_>`AveTSWAVY%L&kp(wL3asT)9P8T)OkxLLSDl;BJAwl_L=m}VYI$rMV?yS_qs-d?%Y z?UugPwosM2)brytd~Kf2P0qQvC6*< zXzLrY*+&6vk(N995KM1W?*N&%A+PO;M9*Wp6DmW;v?W=^2l%DRH{Ogm$FnZ`UaLrc zI^v&rh_={ea9Q?SM!TzViTu4_3`C)h_@n%TL{@57i}#SY13Ko)I!!|}!jj|X@+N0mBlFe4c4f3Z|;N^C1Ee0YN^G24b zIwfRjo$zahmDJT!CEKB$qea;#?N%!;s!a%=8vVYkYa(f9--weDT6-ibuV+_gSZ>Qb z@YS_X_wm74May2(*{79C=GZs6g`s#G=aj*@e(jtAn=aVJ@erqxLlBwdvDJRZst^gG zDiO_=G>3Y(L7s-x(Hjy7(MhgLH5~?#*%P~wA}1!2zs%>Z2CB0fRoS1a{WuPe+3UJg zzZ;g{_L&v$pX$2o20_;e^Q|Skd>W97!6|pfZ&iM3s_5=Rk}=hl)1p=bx$#6p%|Nw^ zwesO1Z|dy9uWmND`4Xq7GgbTEq~Tp7=5Bj8Wbe?`U#r{{HCD6f`!@1T!@89Jh^RG? zss~Nd1+fSt@%y{;5pz7f#O?DkqX%HabMLs4x<0d8`H9-C``r90y`w)nho@3;e?FcY zQD(+=EhVt_=+bRl_Jr7kd^h9VQkU&9tgiLkrd*Z7s$r&OrWwU?#S#h(#4>v4yQ)~9 z*%yDX|EOIs>AsxWq#`!xd|fQ|YYkhdyD{;Da*`aXF42eZJ#);de=X9u%|8+->%746 zs1h+5h=*%DKuX4f{Q6f3bX6MGE3)MC)BS7*{G8uT;yqso!o*HdE+u`I^!nUaB){6c zB*mJ&O1lQp9uYKeY4sKsL0Rdyg>dSV#Qv|q?2Ao*#}EBlGvVbWEv5uKe4a!>em!7W zXfU7$CdR?ZOHHn-yf<2?nc+O7M!i6f!a715 z=|M2CrV%gj%x;wr3gQxHj^?9F;oj5GfQnRr#|HJ;LCVebs@WH%vJqJ$7MFETL}H^% zQCjLj)v6Z^66IUVZeU2Y`V$bhN4{zEn!1IXfiRK|0?RRbz;)2$BrngZO}h%b9<#Tw z1=J?kP=PLx2)GWJUv~Q3w#q;iDj<2R$?RvEKd&0=6Wqn5nQ@OLOiUCcBBwr~010Nz zj0p}GG9__?NK$uzKIMlswg3hr=BNnK%9pZ0?zykyuQ&Cl@Z*-d}l%8Q?rFZ zqlMthy(mbdX{N`Bq{*4dcxAb#)^B74_uo%F5K)b!iFzj>zMv)x{*^$K<2f^wbhUJ6 zqdm9v+FqV8u@~zxwlBAhKIqmKq?$3u@?@_TKa-VYB`4)bdqn(Go9g+=t8EWXga48N zAguk?x(N}Y?_`10DpO6!idy`VcCL3trF-ggMbxLuNhF%z+64k0T7jvULyz};#{+Iy z6SaiGf}odcGPm4g{7f^lxBb3fcoJ2>3FOO+1?jyU>t^9X4g?XB+h7wBd>-B45EEH6 zH{IY{Ruy}8Ig{lbyIt-EoLeWaPo5J z4Rd`c#%5+@GrZb)`(B=2M;^c6e4j)E(IB?HBR=Jmh80x}qiw33;zqP+M~PO|4&97w zDZcD3tAYFXqaPjZ!($7WSU7+gb?=nN`h-k{m<%Q?04%}6F$3P%dBJKqTCeXtc5cV~ zI_6i0Om0;8O4g;Q)F8)hzV89qTu{E6Z$>I0!zZh)mcUc`q`mK^6$T8%q+`#CA-xHWv4K^xdQV81@^*jKgfsfTG2S3e?GfiQ9 zr2tWr7SI^P&g{(}xI{nnk+#*yLyB+tf3yE}Kd&?%qBRN}i9HD7K zBaWE~8(o)s(_n6Sp9$G-lwcD`Gnt=jM7n_NnT(5%aFDRDI`U|s7>@J&Onh{J1>Jre zjx6+5Jpak+o_OqOl4Cxi{CPBvE}F5)iLt;aOTm9iEd_Sj3ly-z{xGlp4f$=7 zv3yp$b3O1;#up+Fuklqmgw^;vU`*xF2y_7MRwOG8n0=W)Z*MhGEJ%>2ReEl#mI-sD zj@lh?+cD%hTOn|5&pMm~)He5lktjuRsX)_KJ1}2o*}Yb0sXjdlN!zFD*#du0YWsf$ zAg&PR9mCbH`dIrn-JL8PU?&&o51=truP|~jh;b`}?OteaiI|j-o;n~~-?_JiFJPs# zQ9zz{&g^Hulj7i?fs+Vx0?XdYwgN|hM3C20Ks5Wn;i=%S0-a)FT40%!q|}lWuGin! zI)n$z!4#wE6a|y)iW?Q;8KI<4!jKpR+!K=s&dDs}J>kO?D4lPmLMkM9Ur9v<6|T*! zJs4xhXOnCq+piUulpf-4dPgwJ1#! z>xR4;)nxr>3pQ{)QXRF(igy`KuoAu{<)tDcA9%5Q{;b?kUaUW5%f;-KDB-SHQo-Sn zmYGM^?Of$3Q?kQ-w$fVflSnVe_?Ld3xT_>(`0may;n)qgqAbMvOck^9jzg7n`#@e< z&vM52O?2t!@1>E)@Z$aA6tQ26ubnpX+KoNgvbybV5$%!df9D+mmp)ZItekti44WyS z-?jEe9-a3^S-8PlcE>+9Z~v#&W$>RYLgYF{`dGJTvr(rM;CmB0^ZEpuCm}>LHKy)C z@r+>EL~G-OW@&3>zamkmljw8XCDJN$&Mii5HL^_p>9)_CVM>l|ASJ{I{+1D8`6cG8M%d1HGr8|x% zy>?K~9b7J9T-VM9L>8sAOvzreG5HL-k<$2LM#n&J{o=dAXKo`cCfFpe4Gg59K~tP{ z8T1D1r;LDq{qp{HZ7c8ayi`dKA>v@S|F?X8h)u}e`Q1d;rba&SdgH3H-InVMb5pc) zmYucU)enG@Fo59ok~Q@x6TIKWJ*dP;$utiedfN%6zRk?hh(>mk4%{Tu9QV47(Bhp&PS_x`8= zIfbh7K0r$vJzzQqoZ-B@7&t7r*w}zHAT{_T=`QP@BsqtF_=LdyY}EhdAO0m!f4lGI zGUeqnmO-eX(21s>PAkc^B>9-uw0*i~Pv-|^JKZ2me58?MS~{G<#Q=QFg5ZDQ&G@!} zwpAXd>PSjqP&d1J_VLZe(_$o7l)kxv_X>gKYXHd&1ze-`9~;yyRv|ruvabSn75x1| zr6bMyM90d5_YFsBqu-eQtqDjoG6Zp6venDD*dKeNiPQ>UOEn2Y8tWJgPzwqW`J+AM z59h_eLWWL>>%9cZ|7n}Q%+DF@-&lg-NIG7giLSa#qyPi7mILDF;HPI1iQh*B8@l_92Hw=E-FXehGQyJioclggH0T8=AJ6O3|Dn%D*o2% z`DvP;a$uyR>YhG^$pD@xH$*{B0pA~Z&0hQT_X>OIWwZS(TW34a0}VEPc+E%$R_W0> zW*6Q_oHo_TnXKtn_&tyjr^QW(0|DOR592+I%@YrlcC`E@b+GC)d@1cXgF;E;el;s; zR3`RVmH!DFThlMz_B?dnUaO@=^(x_($zQb(pD14`E^D6&QrRrgj|{P{y+LI54w1@3 znmajp(Y@X#RNo2SHA^DZ3!JRQdi^oJVdr5M=u=A)RZ=Vwb*{~8srRRhtYteYS<9B+nC|3}OXD8W7*3Qn#%33QcC&foBClahwqsKp#QpT4q z9Zh63`N_|N=NKcO#_7`rQtfb^!ZjSY%p-}c%8)R#Z+KKwgr*5LYN=dNn!FrW7sytt=6prj@<(5ecCV_tkH z9yEsMZ#{oKxBz<8A0Bc%`?+$_ymD%Jcw?6@0biuR9b6GU9Nzsj|I-iz)R3nVpTjo* zbgWuVC^ib+s3LrUe{676pok7SGarpbmmshnsD%X74E#4Sgpdh;6z=dHHKKS6SB2rG z1Ql@*p8Gxj`b-0^Uk6Y5H#T?%7tPAkWz)6D_z#`Mz3zR+4zS2!1naC?YZGV%B>W|N zboKs*O)dXB;Q9}W=zCQuONpH6w?RuoUG3PemZt|zE%g=9&h-|kfLiz|C~XBtEG0}s z->dO^|B>=PWYm5ocZ?Nt>=3++I=EM^@GmOrmQ(rp?t7xy-T<)T;R`{;e^F!Ms#d2# zgTL^4+FDvQhOl11L5Y`r_xns3`~))2Z*X|}6TW*fBgP*4=?j89Vzz9OA31zRr-_oH z5_`%6f35G}92rCe;plT7#p_slxZMl{gx}{!!sJS3dpA z5u=4O#-6A(sec6e0Tz8cfAJ0+@c-qWJ`RLe|BfP$8#%f(u3-H}ck^R>e14zG*kD{N z|Ll%YD%?=;`eg+t?1WQ;Xxzn))B9(uh<-ioZxNd(;nR~dpLH^9Is;q=?L4q=!>xjl zH0+Wok~TXQWg-|9)z5KXv#F_$efgX9A0Exq1?kJ*o5kdQrA=d3vsSo3HZJSje(zJq z@0%~rcBi%`xq9Nib6{Z^kQ513N*-mAk*soW8p`RVVEY zqncMR9n}>G02ZOz0`BmVZFxN#LEAwCcL-$xX= zS6Ev!8Ym?n-)!c!&FF1HeyA-6f7l(~s5aR0`95~3=c64;7DV>GqG<}o)8vpiR+6ya zsLBYp?{VvHK3Fz-k-U~6un11gZ(5SS+1F=RN=9nYdmz5QuE1}#Imbts%-(&%5njV?*=-gq zql1I&D?|wHzx_0`jN#kfK|B^@P&@l6s&WU@s4{#d$;G;|X=?dbcMgRC3}{}T=H-xX zqFr0%Kd-U2*L2=nId8EyZrcQV06!3Ttc*rj`zO`tVBcizH?oU$ur(dCC}7WoL-}_w`~~>=*sg(@k*L(z zih@gBx#zn~xQUCl3(sFsIp=BC^uFUiPba0@NB7QCSUGhhudWdde}Wnh?tN>qIU>`M z?RtG}6Ky9}w*@Hj&H-3D(eR?593rN-NcFDI>of0nR$T(4RvD&mI8Aztvr4;=5SI6e zNB3zEC!X>>OCM{2FPWbl;upC0j{!TfFZ5Ow0WcF`U2f0gYp@k~dQc2I zJNXq`IUj8g0F5~h@ArnyXQW&pk|Wy?wa$%NHwL6AMREPUXjY_m}#i~Ze51Nt`YcRIphshABIQu=)s^-ROjy( z0+OBUR$pG0HX!BcRdpkbb<$ZqOZ#H|o@fEt<9`R@IR7qqQ90Q=;TcT738Fvcf#3c^ z8uH&Fk0*J@Ka-va*1r;yzcEZt2{}*lkkWre4n8sN;{HwM{v~a3d7DNR$T`4JwkSpo z9JoGN$LPO6`uFu2oTC4?qx(DR|FW^*V?pt+{NO3|83Rqv6PW+b`L7Vof8bigp1&FJ z;Is}BJpHMxCn^%&w<&&}Ql?yv{D1gG zW!x|Se%Wc)kO{Bk>HjYz2+!ZgA)ulDUt5kC3eWXV_s^C;-96FS|I#wULr{U+9~OYa zgA6yHjEsZ?w>A9y`3rcaC;P*%v2k#b-*VvLQ?diOIJw`cz9*of7IUGYS4(D}E615L$`V*`&)dG`PM* zOL2u#bwLGn-JTlj#4?BRGjpX*fTLlU4!p3_yGFTyJYKr6fWn2?k={C3si`!7?6Idrlc@{a;C0FFLe<)NT`B=+_Ws$C=lpK4a;>^c zs@?AeS4$AMB5F3(NyJnd%IxVUitDm(8}4GLSt-v3AULW~K;k=u4hga!8bx0x&K
aU6c+}JeEfIxHt2ow-@I9(D5#t8Byf8pGt2KL`&NE*cftV~@;CnKdR^FbFe?QAvCx zR~eY_Ue^OaD;*$oSB2kwFS!kjieMTrHWvKw0Qy!No3f?98{^Zvx<1C8Dz0X$fg1!X zuUbowI7p40J}z6Mqd+eos?+?vq{Auf5o3_Qafed+uHJ)lj)RsTO;LpV%ehH0lgz$X z%x!w^=YpbFn?v!KG@B9)y-8E%`S@|ig9$iXx?^(SUAj}|>iqykf2pd?u>G3^A=;0~ zNFP!N2z!N8d`*BQ{!Z&1+4_DaQg9Ymc!Jv^- z$sGqk$u=G77-d6=z@${4Tom!n_Cb;m32nYkPn2yADQAz*SkLd1&D1bx#WZx9 ze&$!nb83#<;TPARlCf~*AVdV|4%LX!xjOAKcuG#xYKy0Ubxlnn-tMxW(%Q* z$t!kMvj9ivJFJ6Lv#Hoh*s_OXL<+p}1pL%7I-t*osYQbV^`1Y3tgu@r{-$M~L9Y^~ zt$Rg7-`UmCq8JCEOMRR<2HdLcyU$1^C5Jq-?X;y*FfJ3J+wf;oRkN^)oygE=6<2xt zKG^Q9ojb!5 zj*auIK56eEcRnmA$sdOPn&vt~WAAe6VPMJvm5y*-FL9hQoj8j0gzbes2!rl*+^BW3 zA4(T=lamwC>fM}msIdILksFaugB#pv3-oiOqIa?2eU8FD>p<(koSr~qqW2Oe z%fV+PfxPI}84!6ONj`>^C#}9%>G*)MUP-any082A@CcFLDRJk;JsU>`ED1eOLUwp; zz?N7#Cifp65j=`A`afg-o%Y`$nI(L;O!K2AUQV@#5VSS4Kwk zcm^9Y3pU2?b9)(&OfplX`KIVx#_D^6Lf}~lb%96*8_RuLo6Nf&DIsE0^m9gOAK1IzodAZCRW=i(o3cm{M;7Q+?c z!7G!W4YudzJhIia`?%+NAj=VqL8T%Fzws|hQw`ocBr{ZX8lQ4dl z;`%--K#C|C3$^kJcTnSyHb$ik@5sZ`jj+*p*$(8W{(Xv2iEKt_DABE{bUSw6G*QCf z^;DdGVxA+4k&t!lIg{z^B$rK^9yu4E7RzAptfbYDBk=VczLoqpI>AzY6VXa0hwLP( z?(I_cBFy}3W>mMNAk}HwrPAW%;1O+a$uK^2aVI3XK^2g=ZpJg!1QUJtmmVF|--`|h zx~PS-B^NExjXBCjrI@0@Tl2H9ZA z8JB&;P40dDvIEP~r)bY%d)pN|;Rxo%xRX)Nqcnzzv>VG;76ncj>aZD+{JbA^V%Cey zwM4}N5uo1@vD-^hF)Rn~<$@p1P|{L2ll`3l;uT$uvqerig)3z`g%YVSZf-{cF;NY2 zc|%)8VbimPD$?++@75{;15Vva75--;KlCKWob?))9BAt{dZi@$=4~Qe7|F$RWb-~j z?r$9H174Byj5{lYmaiJtkl5*63Y@DYXEV${kEt>&k&U%Xb3o;wXcNP2*Z)i#;_03T zB{1CG7&5%5EqHs}ETE9VVn(g8utVZ4m+vV)wV?o(t~0Hfq6iNp)gxiucpsr;u6AfH zx_F3B#2n{J?Pc%-kmVAxoUa+8gJ$~)dY~&F)CZL4>I}(T1K$Hm>W69sE=p{dI zeRisIHhX&@qFbTLRCwH@uJlr(F>TGLse8LdDNkiZ(Wib7?`+!nSD^`tBRi2q`)?(U zR%ojgDvq^7rS@&I-KK`P8lBN+bR7Hjt3y|U(Ih7$j#^sFrGrsA84S8$Jg5Jt&qI9v zqEF(j5qMFY#BL8ovdt08_9`DD!ea5+6YUhe-6|R=y$ZtFpE$4gD@$uo}_8J zZIQqXt{cA$iYqF8ug^iu89KA2qm<2&Zna&F7C0Sh>9`^TepMenL;-dqEw4HBZ3_h6w7n9|nONipWc9=*1m`f;8uUH2q(-<47 zHT~(bT}-lifC|e#iZu#58jL}cv5YgfTS?qRYPXj0>>waWD=j&~r1ZGmCcSgK?9r-Q z31gPtW~UZj{89BiiX-%ZGgzU$FCB3SBG+%zS89H6@2n%#15+llS=Vj+6vvyu10Hh-K;jM8VCAyChYkp!_^}AaV$BV zRQkUwZ(iZYEZL1QnaS>=GJ~xK8@1F+_{&6z6Y@ z(D#jKkG2A&tK!aWwlA9k6SFf2nP~4usilbT-N-6Z*8;3r`Y;k$wcnV{HEwa2)n^MP zAu>#Drhq6Ha%k14A#5a3`yBX2*-W}) z@)Ix}qF80{D_20=6vp)Ss>3o3@XJ<8*vv9adifdCpmLo3Jxdt-($trF*{|0R&(et= zSPv5OdUNfy^8oUwmc3bx%p}DJoo<#vQR^{g zvA7hhrcZ8fdO0vsc}dP0sdaQc|0{F_U8sAK68x;^Uy*TAUPuE z$OoeEKM2p+a0iOlX{GA}zLBM?=9xPQ@7CP{_v<~(^H1aWU+bn$#oFj_JGZu8>#E=J zf8HJacD8jeRNk_9O&C0m)6LdVVz8RxwR`Nmsrb>fxsJPP+Ug*xG>7-&QAy@yKj~*u zgoepd-SD-fs>IOv{v?bGK@=%Dyel9VWU&sBJC+&*d%028P3jJ` zFRO15qeJqOLl6n|(mT`yz^gp6P_)+kH&XGuI`+naF?uL@4ZjDXAq|zKx?kcXZwk#7 z!7i}kC1Uep=wib?gEC|A919?i^5==J|FCd1L7gKFacL9=CtBy5_C#H~s8_cr9Bm?#gyZvmNbJ@(;qd7|!|@Z@NxU z(jgMIuP}U{=`=x`Wd2<_lk)V!%!s1pV7ZlD`d3ye`|vT)uda$KX!;s-arlahiG9oB zqfQCXKGXZAB)jf>j7%KmUF6J%@tcSWe@gbtOcYVpr?w7GSP%HPuyyPcW;<^BrnQII z9~PM`NACnjh^ZC(?AGOeiXZjoUH&Zmsi4QA2=|w84ckZXk?B*LWlvd!7BFibgt)5! zCiHnDH=h1i)^V8;9&FCTh%~wLsN7ZYE?aa>LXBkkk~KxD3x0QFOWsUBF%%tto>8_M z7C?!4j1Ig{N*=a%>+>$%Gux8zu?flQEo1Z-`}kcKzucAUHYHBjxD8DP%`# zlQ>)8#{YbYECvXS2)3S&zug{&Ql3$)E0r$0^&;`$sL1CTq(ThzY8oM-kZH_AVV;p4 zo@MxyvX+E<D3uoP&+!3$OUG|MsiRd??v)9iAH2-$&1x+N^E8?4>kjil5;XeY zP|kdK34?K-r`S3Ju+v;Ub-b6^y!}<&oqxGnZy9;FkOv=N+-yVKwaDaiuJ;eZl!|sS z3SavdIx>d8@0rR#%*s))0a;|asp8zCswYci4pVoVj+WXzJpAgTabgUv*7Is?MG8`8YS$wv=PGnX2Nx>^l1U}Es zW@NwJDr>CZ+DNzh?Qz%Cyte2)L#fQzH#4>Ao#N|F{Hp4!7MGbOy%~up@xf|OsJcp} z7|zCkJU_Kg5sY8g;8XOX<1R!p0cIH}69cLWU#5!MDk;^qhxp7*bxk-H=T@Pq74FRz z$pe_MCmRlwVzOo+-m+LRub1C}Y2ub-lh=Y=ewiP7&feYqh>|&i9#oW>Dw1BaJg*5{ zuMX@oS9|MUfOiouMQ;h63UNBPpICy)twV^$% zPElpbBHs~3$B7tFh$n-NCyqFUBk)ou3mKe2nJ0Iq(s3f9c;iOK@mO`Pe_d~UK;Y}c z{js&`s;MyUGfcM>nnjE4*7LA>OcWq`IaLzrvw z4HdCzmIwK7;83n06H_*eR=qMdhu$6HNPvLa zv_%arC9Ox$R@^LB4UY8z$uP~P+^bJ6tjob*?@| zCpXHY*y1aJIFR)CAQQRC3N;RyLb3Eb(KK0%RJK$TXZ=lD3+vQwM*HpYf8UJsnXIU+ zJqS-8<*?RfDg2zz%$*?*FO5_><%)jJH&W=t!)Rtax^$l*38{?KzU;!R zZAA}wqTgWkk5L0rGiYD5mO@M^0_M?M)?>nonz^L6T0Ff!``9ojht#%bf&+Y(H8(zuaE!SD#`cR^KtE zct8Xbvsh%ZIt0BmBuSyn^l%F&-D83ev6K7{DNturZ@*-wdh0P)PSV)(f;F5Ec~>~K zdUEg{%OQJCKj^?!REJzsgw|awKtO~+-Ju|?ax--Bb<>=3o%77=fmFAYZ|RUI{D;PQ zPH$MvLnzJ~M{YTD5D#9oy8R-~4y*nW$e|3lCXsKI(??^KPMtzdteK-s=^fJbOgEI$S>J?PP;n>Gu^yBTH zSk$snuH&8I5Wb%hKOA8-D7k%c@O5j3Vgr3d!?Z|NEiO4?&jxEDIe28`ahO=2SpEpT zYe(R_9p^3Q#T&NHfe7gu##(nkUY#yBaReM|wPj%d*2FFCWadgLF0NnM@Df@qE3(BB zHrHLP%(bmZR(PoLbCeA3LT(?kQ#P4r{26 zn=3K-3N&S6mLLb8&CEoqfIt!L_f^A!wPCoF`TXt_#u9fIzK0c^P)OHIj()zRgrfMB z$J$MtoS;LOZo-7&DlFWi5?Y3?o6MXFaiZa)I)IuyGX<}6NWwVTHP&~ z4HM@K97zWd@f~v^Ir`tjxEBIF_Sk<1@N0#OFO~izX>f_{4QYC4x)|H18Ddbnyms`f zo5LKfQ(NO$!=+D+?TTA%(i33(MD`1%Ji}AUK|cMkl*KoY94~#NYp|zqA|Fs2A|FK7 z?=ay{XO9ybTV}B%$L}m157W8|x0d{vgJ*maJYY95!*hTxXr1TNgd4EN5l!0YBU!J# zcg|dNX1$$GL;GVPtI^TaqE)EgK?YNug2k;lt3(H5W#C9Zuz9=Q~`#g-I_nD>r?{yDfk$pA) z&O(YGt&TzN)pYJFK{-Jv;;SiXg%W-r*)tA0Z%2*S-XO@E?~S*aT)36asVg4m3LZyQ zTXw>t(PB96&&c_hxbj( zfry}9I)2$&(uN>x)$LT7H>vsjN@&WWkA$Svu!J+u7%f0gC1xeCob&_HjwfYplbc-} zIX%F~Essfxc#2>tStq)G@Y90ZEFK8=v)&+fU}9uggnebGTKX9goUSIbwV$CDdkiPNy{p`w z<^kf6Wul6#>>q@aY$Q9{s_dx`c7SCX$B}RPA&Nv6Zfz)P{2Sx~z?Q3*iUS8?mFxX)? zzt*<+?Ib1CZ*C?St4RW9gp@Ht8RLzzdVab&597q?MKi7wb)wwyGSLiar^#zG6@L)W7FaB{Dw{W#@fQkzPtX@=733_%_Yle)~wiVR`NXKNpthicI#nvn%R*(FL( zwzG^mZptoqp&QR^d3`Kb-FZa+6tD64J5&OGc8z6hCxNv9(2Pa9xfa-2R+R8~HvMCc zT%!P@L3dx3gjnQMy5f-rmIsqK^;Xd>@g5*v5wAF)ON(awI%~k-x0A1#w#zCaUVO_5tK!1+TQ#&}s zR?BBh-2I4`1P$jj?H3YnOa0Z-^vY(`N-F_Pzk#B_Cgcx-ZH&~hgYeO(Im3um_7OaR zOT;@##?rTXOq8srh^mJvv5Pw54ju#5N}5uIuu9#8cL6lCKch*GIIMY+uNBF1r{Z_; zA74ulIJ3v|V}b|XZwYil-9tq`fFfkM9JILosb*Ox&Xb8wyt7BvJX5_55;V@iwFBF8^`!F9`QAn# zziCCV5qsF_p|mG+_Jd~?d>L^dhm|v+V;E>+qI#?U*@3plMW@%`mx}La!$d($#fU|+ zAZ)jlS|4WD;Dgxh(|TX8lzjOk1ZBL?8ukKgW{c{3k2uI*n zs0+Mj#S%kK51XvN{x+!?6=?vSx!+m=(rtzJCt_^Q_qwPnqg9pwHoR;D#hT2}X}5oyl_koM^!qlOX0S7CzF>CW=UbE&X1S>6Ko7Trj4 zA2-5ba`Q`i-v)Q+BQjy)x@L zBlokQ?%REnA0 zV;kTuZdt#khof^LADk<7h92J5k$u|JHfZq6LHJh^WkV6JfoVN^>19h%^rVDgU;?^S z1#J!J6!vzQ8YYg>>w!`^WPt(cp^j8$2AD|xrsbrFfzuH;D1Q*@>eD6ErYVvYX{BW* zC=B7ta36kI>x_z&O3fKX&so`XnAcL^>fl}yoFr++j&RccV{1m8i*RHxt8=@M&SBJoEcwqryRn&wjS^ zc$`_Df77Po$}i&eL*c?o5_*eKTb7|f$s;@5G7l98v^~0>6l5OS8D_;j+ev1$aeJb8 zNz0oGSq)sW$YxDiDWzZJ<6cmaDJahmFJ^7)m9bnSPvLJFb@AGA63j+S@o#lfbylyl zi>0T}bq}Xx&p0_b$Tccw)F$62O&WxHQX2U+vX(JdQ-Mq2C>RpJlSNKp^InvwMyKl( zY9Xm%pOEbs`(e}p)3ZdUpDC3aoI#GQnhgVkb`YAYu#wUfM_ehMszbX$~eP_b;3M~y#W=Jm;0 zRe!}aoFjtMCV_J_lTBie(d9Gkgp<>Gc)SnA9y=Xo*kNFN>TO6-I)DJX@9Ybps5%p3gGTu*;&0~Jx79})YnOW>EDgm(! zCmA2GzLTE@cIJ5u4V2>^>IEd;mD9fdRrG9FjujckH+8o!9X}ooHLQ!?)T@aevKaN!MpyLW zi?U{ts4mm)fgZv{bZMo(Nu}mKZ;Zv! z?GFMaxmYtl0O})))(~$xpXxbqhOsQ?kXjd8Wu;Nd+?H$WWiZ8`0&=7P%X9F{+cl$U z5!(1vTW-il?J|Q=k<8zwxh+YAL|NUt#h3$n7}4Ho))uperONk}!GeCo0mi--IkQvC zC2-v7$So$IPSuv^pV*Bl(3F6gXyibc_%jh~gKqNQcz|!1ZpMc|!v%8v)&pQES9%2x z91?@MSaR9ei2dk*qU!SWLqEYJRI;+8&06`MFiudLC1_Vjz|7Yw!l-R=DC!xqSJa^z z6_b8!FlbXTVCW+v%d(C`2)A%@gMY{oWu%O?z&X&0pMiaF0K{%CiJPBV3p`77DJ5f6 z=5s0+cG_}MG$S!pC$VcEbSh(13>mGP=ORIpL|%3Hy09M2ACt|y&0GPUKD>E=a;wm< z@Cthb&ajO1v=YsF_-sOPv+u8Y5W{^PDFR)W;9b)=&R3*|W8iRykNv;?AoQ`2RdIVT zL`A3_=5NyP9#IP|6tDcjr|33LTI3WysCAx@xF|=P`t0AzlN;EIUaK)x2V(Adr z{1GMm;!XZfAkq7S0gGn$=PQF!yUg&n-(exdK7Pa?o~i><80>=#RoYRH2WTtE5fQ7P zeNLBRry5x-rJ=opA8nGf2_aK=O*kvp%$>_tIE|wW==(TihZq$5`=fa}t2j8{g|+Sn z8w}3qZ);&}ax?Ifit0R1n13o;y$FV*7(o}GJiA~ntyst)q06a92@@Jx(6yB^LfDn% zX6;px>1e?ihJN67q%t1|B zP%UHCr!(|DvMaaAwt_kZRSgfde$CNdBQy*#%^^!NR$eYkTvDsA%U+gGS6hY=Sjw^@ zG4bOU->_VkdFJQQ`K`bbfdh;j`ePH``J=%MbZD`nI%PZ0MaxVkr}}#h9Le8B*i|G9dwwg!829Giz9eN?vf9 zo1<2-jok|z11+vt3{5_H$fRygrR*$xpf@$Cn+qK&Z_LlPlWWuh2~K&2h&&Jj6Q1RK z2`Y}?&(TqgtX~MNxg3b@{#7iINNeY?ltGzOB~ByOm66Ytmpre0=?K(v?TL!l6ba05 zOFC1x&A<{EdDEaFMNi0zIH)2XeDE69XxLgr)tJ=w4SK6$;AS>yBH`zf0?}(OV4;apw<+F%P~(u6KtbJ z-IJHaeF0xZz9Oi@{u z7B(09cHpuuGR-b1`aKN`nyin6$w3+@ZzGS8)>b+su+;$9WOz-bZ%4U$MBfv5|Lsa3KbBX zHm%5We_cr#(;$D@VaQR*pzGzbMoASgip*a=c8RiOi%)xyVakD-)b(fhM?*_EcIU;* z&7-Rh9QWu}+gBrs=EqEy9f{zHjaHF$6N^b!a$+2@Z$tUImvWrx-K-*;aniC4x}!0m zH;Wk$tX#t;!O3p~7zRKrny#}A=V>z_VW@!ELra#*AhxRYK}zNLVD_FQWqI9@?{%{l z(3w;}laZ34%jJ+=mxPVpF_kt|AX+jU=7!{N)!=i!6NMh-RV!{ zkEbWq@KcQ>(dttPfEdHpj%& zDjA|myt&LVK=|jtNzv7O8w?k-5I-~}XxIQFi3**7+;t|F^vq5Ke)56VJn8oVxPa)+ z&Nh4t2-n*^c92ACR-=SsEYQ!RL}cv|L{DOW_`Ea!1Eo9;>uNZ%+5NCG1fwv#+Mx*N z*Jthzkj;jVJ-9rin;vl-bks5U%JKC?drmDI4BIo`#ADy;FzKZxvcviDmT9@qL$ie< z<>f(6c#ha13M(-IxEW1eJUj3siAwxOa$6z_Y#w?FhZ8Kb@lC0gn1gJM{hSJZ7~dt| zVDx?XrH;!(bM`s9`_w4HU;4^ot%RByh-f9oI8&6c9~f<`F6lWYr%}cjL^T&5+{JAN z`_A+iyy3)C4k+up#}#cLYI6K8&ox|W7$t*Mq=Bmp(+E=d`w6o5{r!!Xy4;ZMVa%rF zLe}`OsYf+(lBo#%Nz?e7y1JUeWP|Gs7Y`di&LLxqku}R~!c^K)BGhT|fS0gY*%(r7|z1Z{RGvlnn zn-x^d)2__HTO3L@`##9&Or+gH9aD5S^@!58dEFivwXy`!D0%eU^yDDw%Ud6jRdujZ8{2jl{cuz{qF!3RKhsCm=}QHLICk@`l{*&mm4+dTMsP>S zBwbzZ+;=zDDtc1*YTGFdF?2pWvQ8lK$WMK(0%D;x8P!g_!fS7lK5B}&ip;2(+!%&0 zf`1@1M>(v?E7*mXdpP%IT6@7`HBhxSB{YIEcMi>rGx2t#<-jNq_~Q_WpI!E%#Z(5D zg*1`q!{Wy}@#Jq(_LK*ZWrZoy=u+8Hdh(6h%xT@9i=}Thm^c0P`XI5#*9B`Fw2{+j zXuO$9Xft(Anc23b#|V4_B~mkn1y}{gz?NFywv`u??;p`!LWTU(6If3|fV9mF zkA)*}cOL+P?E^c$4_HQ;I8$?_jF(;b1OQ1DOq_L$9r`3Fw<3Ml?G9kCN34Wiei^?< zHTo2H02f8K$-%W3{!Rx_ez>0ITl0!*w5E+jQECyTx5I4XBlps}gh}aAH@8iG9ba#x z-~B=8z@Lx4{euv|Tu%EW(uQ7}HEn*nfj`T3LOm?{Y@KuGvHA}JGQ8G6b9g>@z&P;_ zf??1jVtJd)MU=`3H>l_9nXm4LTQj-BNyA&egLE-CfpwM#Iup&B-i!X`s+L0~fT4#A zNn*5>+zGD|9nzYAzPkq_WKzvb!5eR&sr~*3L0F&Do&D6_W?%{w3{;%i^M%x*(ZT2T zhgYhZO)O?~BpE>^ zKyHTg8=@2^y>J#tH;ZWXnL={dy6)X%^pv?=1RYnRf>j<@{-X35GW_pF6;6D59(mkr zxc%{F#$}6Me@JS*f-;)S>xq>2dyRU+R*g0^gOd5l<@{%(cHqW~TSZ%r+`hQi?GBCS z>TvrzHAP;KA}2~MeMMfyJ|dsF>2RD=Pd_4_eqJ-%fg5;79hYI1$jV^y^8L#H69yk= z+bRWn)RLdgU|lijkA7VIxR{E(8zrX&!le1HUcgie1`5lAo7y-_C3PeKj92E<;---R z%Q`?~1K~~!__Sq=bmRDv*E=~r*@(MiQRB>yjRN3XhEe|TAc0Ej4^wAlbRTcuNyoeE$D;UlJK*-)Ko8e z{9UBH)Rek|l&t%Gi4k8O=1Q-7Mr40{QRCP&wcr|w9{QWX5SuiqAj@p1bL}PT{4HI> zBv|^0bHOD!`a_ExxrFu!jESa11P~~7zSpAeI`Q)@K8-wzdIPSQ>(;_4N* z4hkW1kJBsc6(|+qi>i3}bcQQnAQnW5@=gd@jb{jld}g_*)izHjf8~ zylX7#+pe?pCW`P6`)+KsrWF5ercdRZH{&Q>iux%BMYz^30o|+Bk*4&lIKhcE^Y!X< zD(lVsSnd73B;QQwgiT&6R;Gx4%Trq2^7NnCKc6;W3puoC?Kt2b+Y)5Nmch^+bovqT zTE4I=^k(Vfo9fagyN}3S(b^y&lkvKWd%y8*PN;?srkcLK?1npZbw%7L`9|NVaL<&q z`7=k#VhJBHj$Ao&68~N*Go3eq5a@N?weI9fJ-Z`uicz064o$uKeJP(jmPJWjrDjPG zPD+zj?nL>kU?uHS;psCLPw_GNQodhHE{ZhuuR`*5nH`;{%= z?;t8pb?lI^MNZyB#nqzgt6E3;eE6fgc(z-lx)M%<5pr`IuNuDPv$%M-DVv0jAKY8* z5#92%>T+As=AyU9e48XY$Np>yn21-YACDV+cMUDi3`y1(kE=K1@-~U0VW%t>a`}H@ zy$fJ`V@JBi$FsI^VC}f+sxr<; zsAx*nrr;7gzhl8j~EWcsk0Kh?jdZ;H(PI&pJAIC41vPd>L^tlqZs4}!o}yKNT} zt-8_{a^}#(M^aa;*R^irKMa4ne}Ip*fx;WXALNlAJ?C6M9M9W!q))@)?3|aiD7%&` zA;POcS1Sm0!nJ1m2AEJ|HE0Z8%4^7KVcZ80HGkwE7vY-2bt!ybiDK$|v>mBiEPo9oQJDtMdtl?z z?SJa=Umll71UvWex3j12zDxUM5(@5~+{D9<}xCzYmc-Tqs z;B2Las3_=>OCOcaFLwcI79<}Y!s7#14CG~S^eKVXa>3uTr2X%T5F&}1wiKO zlz5TKXTKSG)OX)|%Q1`@Fp{1wUT94xcH$Emq;G&JRuN~mcLEB*9pNYHnH|*RItd7k zPQ=k-`|T46g{MpS-Cz02=x$SSR+4p%4QeZk;%KP8*B-2PHKZ_;14F4B{XLI|J~RmQ z3^}0U|KeF%b0sCS$aQI1TO**n$0pAiCYP7CYDPuOV5@{X^{~V>FWbn z%#NBS41$YMe<}F-AL`j>elwyQ>~--8q219T8#qma{Q9{Jz~fj69Yd*%T@k^!I{qZn z{`+#8$c6H;k)I&C#+ua>}A^7Z<)s0F9>mYZnsbOslNh%MOfGLh>)}<#=S`yWU{=Q3+STLS?KL*Lti%4*oT}DJox-rTQ80kdSIN;Z#96`H zzchjU+Ie?H;e8|SwY*r{(aOb0N;g)qgEGm@cKsM%d9Q0q7~_KTsVVKOX?KQT`_1Ub z5xx?(8B)y==(K?&UEVQqcnXQPUhEOAOAmAz61*A}%$L5Xy8WaLu+g5bJYgu-JEGub zWI2dv)SEU-MxkNRCRS#7Zl}mX+PcPS$}7(gn7!U%r9O6 z`M6^}8xruKs9jpgVPQDC*POR!ouf9hrUF2(l*~zHK2Q8@a)n$GY>1r zt+1>upry@gV3-%22-^47SFo8DrBH%6Jhi^dJRe#AzS+7LF{O&<&&rK+_L_%;0=n}1 zU@^aSAOeky0tBHnRc*GC^_Mlyy4XlK702M0A+hN@_G?s!a~Okmx7bxoya z_JE2cT0J3TCVI`aow@#0vQEEj4AbvO?UIxV_2%2N1k9^HpQR06x#JuGFF#?0eVxD_ z=2}k2x;L@21U$0gQlm|W>vrg)lYfO{1_mmKlKWkUOevC= z^4yEHJ^F#+xn{kyGMJlmwqfVgZJU-}O!wv6T}@V?9_nfml$4}Z;MWUBpIy?P^hHTd z47{W;t0uzIcR15ic&P4!ml~J@=^WA^sw9Oh>ttTmD`748ER+41}zkw4ki?xbhf?1o3lzkqFzU{#vIC#VKkuIKNMj+G!>HU zePIJQX=zRezIe zem@xvmrqinIM?yCy}=27ps0>%6qrfB%~@vvvy788aOV9&&wqu>%MD#SxHW?9~EH@<;E zs_m=M2fn9FyKYx7`3{ugBfL zYG7~dwt!NAr-|ujWUc~VIU}i{;EB}{e|kLrRf9VRd!sPNI^v$jI9<+c~iendFiRlV{k< z3iuF35d)4Pw*7ZMHiim;CB3|oC9c$Wou_H%1`m3(1i-Yxi@|uqr+5ojm^wzH^pPz! z8qX#JsMZx=n8MO~c+t(1Ib=#8ahx~Xf;KOH1+~{ta$lcsTHwnfN1`qu<@bSdR2UED zMdvNl6Q!Dm&EkikQA(AO=BTCqY)o&fdZ_^yM*LIF^B1p!Ge2^}px$}`?@MpWkW*JR zQ4?tg@c3~4`OJuf5t6qArVNhY8fSaGKjZa~Nc6?eXV01X!Y&9><|~0qmth?~|3}Zg zh6iM2LnuS9^wgra1#n&xNi$jXe@WO}6EDoi-diJr2@4D|)&l(J$1MCXNP|l0R7{H{NGQIr)SHm%c?9`K!C87bhPxV7(pM0;cCG6 zQ&ELWLpsNDv?(tsoIjy(V4FF`g&0S0-{{kz+{GPs;{%JOxtoZ=E2>QO$&$0_s3A~I zo;99$R`33g%#$0F7-78YHVHW-cz;c15z+~lqe5WW$ndu8VV0DjUPY&(xI8v$aEOZo za-2|{wQaL}`=gJfdyj!E3l#Ot551P{cxkEnkZU?9ITfSM%wSyzlcG`%vk7mH4iUb-u^L8F=G(7_yF zR{H@cRenDqtH4(yCaka?PdUhgwNT96q+Vv#rccc<+yRx4JBZPAj2#HgE!G!#!u}fQ z`&39Ylde)kVR>`t3hCDK`DlUj<~I}`jJRw%`S#B){a zsoxZ9O?({e6dmLYdmLS%8j{3sWa}IR`*>qQWSqV5kCs#zbIJ})`AIF3PAw+HQbi8Y zX7|nZ`lCj10Tp{^Z3hifBU4y8kdfk{$FDTHJ6A+xvXO4iP^&f%*+_gZ|0z2|o=&z@haxfq&Er=RB2 z46o9NQ7nhgnOo|}=W2*pk#Y`S?2z$Cp)m-rFcY}&D2O`LQ4^=lg(Mvq&V2XJ$eZn# zR71g+41SkWrEFHLHc}~33OowDB&Dz;l3sNlcDx!(y5;{PGnlLp4j`sQR*^ z-5Zew{VoY94u;)t2tp3Oo;F=Xn*UbR3tA#SuJpik+xLj>T`zNa%y%T~n3)6BrDB{K z{m8L4ojI}YC>HGIN+!a_w#wpi%Jn4T*WO{R-pJ^FMHiI#B79~nc6-X2T{Yy#h6;cS z0&z|Q9$w#%LlF_%My~j=>K`fzWzE~(FFNVH-m@}U^gsw3bsNPEu!iqz&`7I^2$~Y; zOi@Dfw`M>Xt$f(SI@Y7j6Hqfsgc550XoUoOLHhGq_-1iA$0}cI#NeEe&wf@Lc5`Ob zhQBQnVBoh+e2l9nzxJ6plYh!do7OpcaUp7UxZD*))>r&wPC0~S`lc8%M;7pml!=)F=dJ|gV-XDvkeHa* zlDL3$1xbQ&FVl2y0%TY72gFrK<#KCiiLyERksw>kHN8Q~>Hg>BjC5YJ%r_?cBmX?7D+_&$Sa zfuQAqxRDHuxI-5b=`g=WJj|y4D)Fqt;hQQBs(mEF zK~3Y5Z)Apw^8)A80FCKT(@2>7FQkE3(e5Oa$A1~mI(%lYAQQW|CiSEG)%kk%OtZZl|3zYKVW^nz!Sd0Z+pquprtE*U~iS=R^PeGwh%Ldj^o9F2* z%O{bT=`J5i^4^D$N;<0hir~o&4GW`C!Rp7e%$c1M&$o8CEq%GD8X<=m@Wm8Q+OL5f z9UAI0a&a+LPLR)m*a0nC`^eg&`XRr$Zi!^L z*gQUiDPMJ1N}uYF09F)^m*PH5w|3C$rm{&?Ue*Oe90Fd~Gn))Mfb|vHL;8kjMBzx+ zmGa{y$U)r2Hk)5DKrIm)H(>oUcYcZpjY@0!5q*VvG=|5xj&7B$0bYjIY0UfU0#^?ZTn~(9btZcg37q==j`#dHhH@pl*)n1zE z0{#Iiu3E-mgauZq!4A6n_=D!!w9I@>!ZEC?ILwUQmE}oi%%W@l;at{!bYoh|E-iaQ zF$ZnvxVQ!trK1A3A)0reN+Sw#zcosaR0W*-UukA7+4_$gQayYTmojE=dgq9wIUjAc z92~#gn{>PC-o25i^VObOKyJxBoJwr6a#ve?VzEgyRHK!|Nho!yq`X=RY$+yb%$30f z9kyU0G$lTMS!Q0k|mZg zHW#(SLcU5_e7qI+z=Er|^gF3vZ!DUymgp)@_o6EFy+f_XOxi)^Ys)BFcOi}#^&^VT zmWhvNgHg?#Fp(%_m)yNm7*U?@9qu6t*yXT1`gW-cIxlTW5FN@+64*)0gtabwjir5&@wu6wpoX z6VqV<37eC zgnaBRo}AmR0KQ}1w~dc*=oPkzw!|ug!e+dsp6VNHVMS&MB_xBIS@`PfIWaWmG0{!f z6@Yn3ncXf7awo&X%TwUrZ$6T)){MJ3cF%j2@0jo*Q`^dycNADhHvqvz-P}eVot8x6 z2B-oKv=_bHjCj_MZDn3ZrwKtpb+f6tYM>at855IbwOBzxjlJOs;m3KX*$91%;ouumM3y> zpbYRJiYxn~+8-_PC37eA+P+~Evyt&zBEb(=(&fiz+5f)w-@E#kwm>!u7%kxG^v@v! zvI?KFg}}JKD}LWWK-TO|B||i@oM}Leh1u65%=jzAEiCZYtg|yfp!-xyF9_@h@kHDS z`bB%T@wawQnG;~c2-T+sziXbBY5&@p0Wm(Y*!QTuS` zB0C`xgf43mBN;g#YIw?P=?+E=5(BXOJQ|)dCEouaV@YZ_uUZm)_4vM8|I(S~6gC=aJl5qmODdWto_ zOO!eZwmOx5&hd-j)fMFdBE zw$ANws51RJDSQ^QMnxQN!9sW=WhoZ_ye}yKGX6syzTh`w4r=~XWjJ&zBPN&=nV2?} z#2485b*yIj97BM#V4mke!Pxixy<#_>0F3yUWf3I{foYuE$#98r|BkYG8 zNji&Q(3k2dchqY!oFnSFT9^Qg=#rM*T!W?i(UH?_=D}drB~GKDS9PkLp{9EiG)lz_ zskUkPYFk6lf#D5~mIso#+Q|yB*;*=tU0$z0y~^~>$9>(Gslp{xv@qHKM!H5-K#&R1 zYqtamS?M@OwK*6A6l-f5AGct?lY*@rNQaWFXuM$QabC4tn0J{?eMo<>ZYbVPHDOpX zNPm`sv{61iisvupsHoI!t+R=YZD9ehy`u&S8N(Q z&1FyTsWM()O)6Kpu$8p=~bb4zH^IM&p|&b1S6} zSnv1zTChoKy6jrA>&ew{b7xh_u(h?Gp0@YOqFOzv#bUd$1d8G)A~aCW47wfaLIWChR1oPWLSTH03_rT{`0jNQ?LGF`qKq|1$qJN*Y8OS_l7`ET|vC+^G|eReME=y^VU>9dD$ zc_=me+Mxtseo4jq&C4oo?+hb^7aKp=AS>$GAXgW0d{q|#{#VZu-u^ppZ3Xw|r7BQu zZ4UhYqv+$5^9CbC)h`D6*YZC|fKE#OB*pG|>inNApDv9D#2No6|JCzv(wRT*yQgMVkd|KRXd0Gq}Z7JlNo?MVM*)xTNoQ=^-qUtRhTMu$Z{-3(za@cVCa!qaen zY1AW7_{R;N8oj|XNIHgytiduuO{);M!}2JcOrQj{qwAQ-GYny!zOCY|DXe;{W6Apx z3KV)^Mu%_oxR|N3fVO*Q_GK`>t&X^S0d4l64EC5u(BnCC)ho1hJpYq#nRv+)kQ0Nu zaCV z8(dM4+`|U>j55CvufcDUK(~|ibG=q}s6C>=h*2Sj0 z8A{8`xd~6X6}Jd|T|1f<+7lzPT|Rvdb*#cCY{(5IPQ-ZfcDs-;P?J)!K4lJ6pE6K~ z878eM%4QrbR(7_y{ox1B51nc+BlW-_w@>`TH61B?(YnJ9-%gF+QPSK?w3(g*Z2RCg z^s5nPg0OJTLz0rD%XU)A-V9TT7TYUHV)X-XTw?RZZL9CywZh z;oOKLQ;1xtT=5zW8?+6a%b{J}IqU_=9@gW2C3X$YGNzDwPNN<2lFP98TgjMYX|@yE zhk~(!>Fu29U0y!MV-{z2b$Mi0r5EZtl9WYJ3dY&;)Sqzk)MWZvy*AnhvUu%smO=g73bIkd|u&zLQG@*p-sAc<`)A(fICH{brt*Y`NS6G`bJXkDj;|IFdSpjXFe=TPOO#*xL^W{TCh;p5?U-0lFuT zsdu&>Iu<&`2W57MB09B+I&=E{`3HAQOr{@}|hNMNzx=8gS7QRF`$ zg%zB^6M+3Y*0k5NWN@rXF#J2J{S|2bM5}*}@f);CZp4HI07`@Zf%-29RRYW${??BX z?0v~UVCOe9K>Q)j|A{l<00_A_MSBCF!ks?kPoD(@jCljQ6^Rq=iu{n{Zx z1Q-x=!x}Pfd^i@mZG%uLc=?Yjggx}fhNQASy0_Vl7H3GZ04SEvP*+p-p94*l)j5%FIoOZR|7|*yS3(97ka-|Cl1J=E^9XoYp!a84YP%MAZo6$Dka7ISW1{{)0 ztvf6^JP%&gb^VY0qEFv#h@*_DNG~oX{3FB6Ziv zQ7K4nqd}BgTFc?j9W^)7${aLlY+Bv3ES+Xjl#J^)e%^qP7HD`MM?Z5mgA|Rnnt8j^ zbrd)5&dmj_pd)si8A@0KK`nmx^O>E+^#pmh3Meao_gx$TRwDT4GckN&;UXm#&)bc* z{j5fmYq8@YG30!?`-0);S`aWB3C{z7IMR7?8qZ`=lwVQAh*D?@U;o=}! ztt&>Wtfqo>Y$LA#E|F^h)kmwu2#0B?lOgT|FjQw4P*=eiRw>@mbsMbYnd+*`dE@9& z+P_c6{W&)!f4-PwXr6vgYaN>X=#7kTUBp@<7@bQnM?BUTUBK2NMS>y5JlfgoT%gJl zggSpII4450+S?h9MVHr=YBnS&W~o{zdYvg;E{(PJzKyoF8<7OecxxJDwAHlg~lzEB)D_}fW&#`3^t;(D+SJcUQMdULlMJ;aSi=@DrQ zSBMqmKzvOrF%JT{0^#K7uuk!gYz}|$b*+>W^?OqIY9itp^O1KF5^D9W&QWPeIQs9@ z4S8(wHw=G1GoUMqk3HGQO%3@L%SFFFV88Nob25M;Adnl!#u7UrFEb%|B%2n(1%Aqv zd-LMfeH5Z~4Q009avK}csLUvRjO}+qBjmu^@&ej2dHK+luZEnTv0W2A==e|tok>!{Uv_>XAyLUCHxl#0}%V4uo$TRL*``h z)uE*5`x_4bDaQUAgg<}6>%U|6ztR4Mr?7;7HO}Dh-P--DK=)fc^Q5!+hbHEKkST$6 z;x*=^!T&5I{sQ|y-39s#J%wZcA&6z5&hrG0Gkla z{$H@}B_?eEYJ1MS#kl?6$jdv^+b==r8u`}l_m`X;T3HRf@O<<1jU@rM&}BWF>4CzC ztjtdnUXlRvvd*V#43+wyR(5PqcHx+xs)Ik^gcs$dNVX1dU6H$HPex0F2;#CuBESQ$@o>`ED=MWl-X9`>s!tOyE>Qf)1_*nK+xWOP%Nv zmrw+}LEkQ@&_vt7dqZ55h?tqHQV{!T7w6XO=QB5_Lto3HX`;OR*d-eh(k;c#m{zGU zs!a*JfO^0DiNRy@2szrKKpe)t;T>{yB0fi8rRrR9RnW+W5GP>46ioXzO|nmT?);YY zwl%I<@Y+%k%%m*$fjXN#vR{8(`2`{4M#b&!xzLoM|O@sg$9O7J=Lg$K0`@<9zHy8_9;JFm7zx;rZU zqj#*`y(HXP-_^A&2Ol|goLDwy^Tb*3Xt(a~n+&>v@Dt&gCe7E`T!10L=v8G&lD@=% ztGriScz z$kZYGb#oK(fuw{hy}yxd+7~^BO~G0c7QFc@?RX++t)qMvyfCsi`GOg7w69#)t8Cg8 z4z=XP<>AQ5l_iLWXCK+d%F8E(>c=9cRV(I;dys zv8N;Y>p8Ua=hc-IRlJpiOw=VU*G}bg_(LQ$$eNO)GP>0XoHw}OTkPI6v54bYFWaRw z)WoF{*t{9EUnd#L$)obfBh}$=ZPS60%(~R_lPRXr77!;XRZxdEW~kJwj($CC>a>Hl zvn8TakvEH|E$EVh=W?l|A;UP(H0`|{_Nq1S0r~c!6nf%=^i+Tm5^H=B6|jVU9=ek> zgk_82{Rr8nvKq>Z+c4(kT|Rw{m7(f@_xy}h4e*ot)adyl2Tw$j@py~$@mU@?1TAqD zGW)G@fHSaXr*YH_Ao%_Pq$R-o{om)%e}}@qqusBje>VTKEg;hB1QPzY82U?h@KFS@-JpX;Qq-$5TGFs{5ZOM>!Gcqe@vKx3y|ukzyoHe@Xv7+3iMSy8 zznkX&m-}B39gD90A5s=Ezp!686gDz5i3vdVk1Xp1Yafmg1d3;}= zs!cpIr!Ni9dvt>=-34*`g)l!4#;Eu}eeii0Q>#^7bz8@nuZ1ne zo~LW+3j9uH12{f*;At3j?j!}yvubVzE$7(^MYdK~&Wmdb{@93Gu5CXpC__R@ISE>@ z;+QjlAH;N2?X2vY0Dk`j~Dzl731*GE;|CrO=NfLc}2q2L9m*T~wkSS~?0 zE@iZe9X6c&(!_=lh0H1_>WV+Vvb}N8cHY!zAwg^yw_-A{OnfB(Z8Cmp$41KqC5-VQ zLzB+BBn?_RUVtX)k{6O2%;Vwx<&H{EYb6D`rHWjgRnwD@aT4x`i!|MT?Zohq9;r+y zkXkd~$4MtE+ zWP0<4HTil0?zg9bu&2=mCq{RwJX^i%2E^+I8YlU8Q6K6}-l(U_&lJGg zmu-0OW$s$Knc0|Hz7XlK=*zLHhT7^|)UJt38?-Fo4;ssk64tQfWX7)|Q-e5j8N7~k ze~zUF zX(B`N9*^QWuxFGNuptLe-|>DV{O=PZbCT~N$dieRe8FY7Uzrz@D)>h)wr~-sC?D1O6Z ziJ?0gx*8Sdgh>R9bRBUrWU_W09JPndl<*)mX{`UeHrRE+SZwe*9E*Lf$2vR?Mcio( zJg+flO_Oa&0FGGRn?W$`AmM*6kz^GV%@(0qDQ5TfOqlfNGf8DFMHK~>SV{#a6zvgy zjnv3>iZlBgh1oZQV_OU>?7K${%LdK8E)i$&phZ<6G(ehzbP6C;Y)3Z`_KH!Qe53%nqvF6r~aeTn4-%aNx&|YvarDQT_oJdiSDUGETdTrdeg=k=cyt3jH z^SVs$=QAF%9B!!1TuL)-C>v2|2eWosN(VI$-ls(g%Mm^5GJItvL z|wjSfFNv1lL%U2xSnC-_o1bXqy>9bJXUXrZK#gcu^a+j zY2C4;k?9+qjBU&lwNapTy8f=P0eNjqGXj(mltaFvdi#6184rk!HWd#7hxBm^9R5#Ke#sHe_VLg!Qi(;~OSh#czUf6iCr)1yNBO zUyaO|cGTzc0;{G-E9Ezh(e$_ z3;xuP>;J1uf_lHs4^7QifO2;Q2sFrm1cVoS{u~1ODahbcjO3?4gGeut5#JIrK%k(~ zGrpIV)79hqNMy|vMIs>Y{VTrU%jeH|pFgncOu*bCyC{mJNbVVlYGq(++pozYH8-NG$=}YR0_o=2#~`VA}Bn<$0}_&mEWOM>n0>y zXq4N)7}K8IqFHSo2jdBJM^hpsWzREL*5+jUh(9~1q~1HSQy1bA z&o0BfW3`3VprTqKsW~)4E}c;A%=;Q^!t%a|CVLU3O59c`t}Xu}o)vq&Dte( z85arK2ZuVhpZ!=6aEXWF?C)`q3zHf47)2zhSC!Skp43ZaSV4PO(YoB zJ(9TZ^gQ>6bm*FzN#!^=ySt)-aok;k#=>fF&Om?8jXU(3CGkNi61B4RrQ+TMbyMl| zO1q=G)0Ta+(*5klyK@((4-SVdEAM)ng!X?VISeW=wGVJZ8O&lEiE`Uc{Coy~Rnn56 z=Fy$l;+ELtaY|p}yc(ZOW$x!s;g-%xZ!Yfz*|y@c6~+z(KeyWIUD*|>DLEdmo4$U1L3NRVe>807b6Fci zgmOxvYL!O2Y6Z`?jKr?ap;_$a{Ct-4Ir1?qN^WDndtKO}#GRo&6gfl_q`H=h9hOx@ zBpcEf9j`dALHJ#(M+ORCJ9MJCRv2Ea>h<;bgmQi~#g0Q2g141XM4?5v4vI8^9dHo! zG=qF6sfm**YeCI;H|Z9JZBdm%s`&};$Th-i$P5#T)X=Q_ikz^xNnBj%#8hzR0?cTW z(P9Y#L)Z(-3CW9=`)C+S7r#|EX&u6!Dcel?BsWCIukyk;!lfK#< zUnj17NKf3~Z!-qpana4qd5#QTI_gyYDh$BvoH7oVvLO$UqmZ-c9bY(sqA2&-5u%&W z0Z^Ff35A~l(OzFd{EGGZ8-)>(ApjVDFALx>pDv@E-YX)ekJeF;^2Gdq;4lE(yw7iH z?zZd?TRbMObLdw0%TKk?;@y#m0;XId@$3o1t&#<;KaNLCKw{Cp<6%jhxeI>^kRFD#v)O3)*bX{(*6buO_(?^y->BfdU~*-p8JZH;|> zgYYnfuueL<8m>S>o_z_QC-i@@T?2Eb$Qc+U@ zK++EuG8Qt{0KgROv7k0QPnQ_MY@R{qKp34acr>%Uwzn89m34g8I>#urtH<^l255rc ziN$4cigcHx!EN1uYRa4s|dU+Z8UFww9AkMn*T8+Z|_om&hAJ_pvQ#4xAu?Os_&by1ImvW>kv) z-?CZH_``!q+pY-#!|yf7fq6`h z@z;rrEPm>QZ5g8`M;@H6aN^gm-rF3a>vX8JZ&vd&O^9Ubl?~PyaI=WEcO+2Luji?> z7xV$JSa)1Xnbv2r!; zxTR7H#ufU(>jxy?mG&RyC%za6CRNR2*SJEx)vP%~C+Wu+)q72|B)om$nr?#MOEH}l zukSdiUF#?m+bSyK@rhbHJyMaHC^}oUr(yRprMizy%Ebl>3~i{?{aGk=YO*Vzm}{jA z?O+x@HaE*R>RZED<3PHK@1y(9c6a!=kG+Asf6rv=SZxkPjI1yXcDXUTqO`}c9e;5+ z(GQ8FlUB7!4h}e8$$4dw`1;!iCm0yFBk=$AVD0+ax>N zt-`KbtdHj~5kyfZxT$O0V$6P;*`?L&ClJeldG}9= zyPN?9Rao2k#I}=+3n*lNKeqn}iN@j^rD#xjV)!ZNcT93fULYpNQeOll zr$`1IR9O$-58rAub%8x}+v;@Y0>2v*S}O3~#rLzmS|^ILNx5i>V5Fb<$!U zl+>q%bo65#Y|7I4g(t4HP0}D8M3YG@tXxml%hnFpZsZsP?Fj?(vHcz!f3|LbV_i1$ zm8m~+*wiY@2?6ByPMl^q^Pt(9YBB260Lb=Pop;8Uv!lrmHD_C1mhLy13tEzzRy@P# z+vr1OtIl|3*VK3@YSiKCkF-G8a6?{bjC;9WF}1F@x+7G~ZaRvXXBp&|1fxToj%zqD z0;jw4Mb;DS>^)ZO=Xq{q7Bpd#a*F%Rk;sV8hgf|BJ9!B&(m$y;K7TOF3QPRv+8-Q# z!WHY!dT1S1bP)+z*2?hlih+lGSbnnKz5GY3%DE2pEe+`dhV~*tw(hDQ(>ha4JnYoe znX1ed!JJq~aziSDQS;=NYYGE517^3(-gaZSoS@0W1`+=*E@CM=`CAGCKRdvUw~R#u zhdpO`X+6Ea5XySr3N^)JHTl?&xMcoyba$RuP;x`^EAQL>Z|D^B{u;enjpt=w zT@I7Mt8-bsg5XE>QFM9z{2~K(cq&+p<1=tl)OfaqZ7&F`#aK8k93Jf|immjB&UNdB6DHg0i3a6eO1p?j1jNi^KofviMMl~9nk({QwyPDnB^wr$mJgde+OTE0raG_Gj(QK5s?5#5c< zqs@a)_jTmLr@kKlLpb@h048SxG@7N!`x2d6l!t)FK4#4nLRKbPVk8eY8X@m3m)FJE zr>gkn?wOZ-`p4y=EfGUOr_M$ONm$!#nxirXnsf zLnWDcn#3ztF$Y9sXQ#63^>{=l9BGJNY3yeEn0OD8MPJ5??i!hjfWyBCyoPzM+>N6? zJ7%_~(mw8vhp%cKhOfYaqqyQCfwvS)`eu@J|{g=5~1Ib~diJ;HX~Xp%H`T?8j! z95HyEn#;Tj@+3?xk{B_X=rzsYP{R=@`rPq7?`XY7yd`u8FSwPHlk z(KP`nh1Qeo?7^63+{$b><`@TlKcDHf)%G0|*~KhvHx`v&OAHQPh#1l=w36eo;}%X( zX!BGn0s%U>m0u%G+3cQaEE=3~eznG-_w0YT)X#Ik8OnJ_@iqA+7fmB!EsjXl4`-RJ z8a>`5FK}?@?XaV6LHH1d#OF>4Kf|st|LLgN7z^hDc@Erd{Kw6gUzChIU|@=mH0o>I zRtqj57P$-@&zoo{!S&^8?G^qZof*>t9qD<2)al6qiBJ=3!UBYhvd7S-o=yF8u=UAn zJ``!Vk`Z~zj0Qe?B9J%V3T!6g@Q>!O$X(#dmFexxx^%H6DpXC`#@SN6PTPWXUazWu z-yqzpwsxF_d^Zf=0(WT^A%Z@0&MT@bDA&`kMY$}Is98h(`q+rzHD&<$_@TQ2(=a+2 zuFBVM&embCY2V5!>2IfJYto`cIH@WZ)$c3Qf^ZlRxN0|lJ{zDU8ku9nHZmRiOrTEw zEZ=+O1d~5N)1HGcXscA{8bsbrv~1|5p~xmHf>Tsv&Zo+4Xfum|iIuLnsMB7t)yK(r_&j_1*pePFE9!NV~{?1$$CHA z8ha2953a*Y550boj}|T3eZEmg;Sj-f> z_qSN6-AU0=y|U<-3;;CRa&t_T2|ai@3WO1`*-N?7cjv;mGZ%#)rM=!(wT-PN-_}Gz z6k-J$%p2H{Gg=YBghuEwuVpzqe@|p&cgK;m&KPH-;P9&sMXZt`&UIqL&hD*q3$&ST zj&{?Jb=&uf!~GsZ=7^ab)OnfOnPS@AaeUHAYiRuq9dpgev}Zf3{#vL24QE;3oVpOq z@-W^Xo(awIE?#E`i~Gn+>5NMp`cyT$pRLqx7jJaO0>myUtf>Je9mcIfZiT;=@%(0N zdb*#rk=sKMKtK&Ay%rFPOFshFWk9x%p!Atc>^R5-;z&0+9`#V6?Zx63lxexOx6Cn2 zvVlEz@5zzG{m*7RU%6jodIJo1Rb^D|8tp9Y5spG2(9{Skzj0~7ww*h=E><&X$hZSD zD2vV7A-2E?0CDLPsh8SN6cV5acb^e*MSAC?l$+-_+FbOLk|sUe$hp2SLCAgEY&ZL)yPynhu%9V>?~x|-JWuEEk_zO=u^B5gbOM({lnAQ2 z^Tmka@Qp!tiG(NdZ}ZX@9!hq7U&%mEaA-y+1M$2S1BHJwd8Mxwo+PNbD#Y(zuVNfY zfhH$;y+Ez*VD3K_xq7W@UlkhED{HZMPnq29TewQC)SOt1xz7~SBhqZho{Y7Tc1L0T z^VyqGbYg<$LeMHJrVW}S+E$}$p2~X3gW`nXC74_a!?Ji&y;ZJwlYgo6+nUS68}v;5 z7n6CP-(i0~XHmDmxMg-3w0FDjX%oIGrTrY3MD>X(J$=_(_F&ekO)R{IRZFQ{yvc1E zeqg_-@#t32lEN|%O}Jgke?;A+&`}8?pRP{m^Q2Kho(OHxk4^Q@{-1fpuJ#MnSHO6c z=`f$C!8;08nIdv(CV?yt`3vWt(c-1&8?_C<( zvb6qpesspl%70+r;(Ke*h3xSj!&GnP4D5~%M80Y>Io~m>KEKTIVG)=_Of!MivuMT%40p}4zSv81@W6_?=d6pFhScMT4qI4$l@a47EX z-kZ<;-h2Q2o!^_}oFr%8?Cj2--O0=|&)AfO&n)}kcV*?uJCTWEEHAxGV@$ec&&h+p!Pe9F4Cz|8PNzk->M_35gb;K?(=&o;)zfU4c~+B4<8 zq2#o*NintmaonrmGK1+&vyjUqauzCVHrg$qFuOf2tkAuRV~##tg7caX;=EdW%cb!! zZQ0WmK2U&Mj|b0-j+OLjyQWDYJ_E`#0LzK#tKJ!;@e`icYS}w;A>K2o*Ufer5U2`$ zb+mV+q8-~dA~B24P~ma*==zw9srE*~J>&x0=?eO5?h@BUcej2q@D>(VEjAyIK#UL9 zB`(2kE*{~FnUw3H2qTrhZgbxm0^fTxk;Im!3B~;oJu(pPR4-h`)Lo{+;TeaL!=jvw zU$2is+iNuoc$kok<*$bm&J|!wd!J(J#)?YCo>6|4*JG9`)$kzu#5f7y`@ECTOpNK7Au+q^OEo_2 z_vnl=v;@8xPh~^?s?v+0L1+LG)^`n<4l0}X$=3$9&F;sLCBbQIx~8u3ZecDcWX|4i zaOvY*BacLFmqCeOO$(2qvYIHqsrz0L8?PX?^X+?(N$H8_rDlM^f1>?^)A7gA;+!Ds zo#szQkrvk^b>=OU@GA<>B3r(ZzuJ2xFig4N)ifzr48~Zg(K09)jQo6{S>*B$?n$mF z*7y0>-cu){@4N%i5MwfoJUD_Z{i)*b2+V%aB57gW6{`7IQ>K}jitFbPr)(sO#|Q=) zFi2ZNp2ijZFpJGWWw^w{AL-9Rh+^oueUo4Kxc`)SmA{ZZ7i~9+Q0}wL8ZpJ;GReab zwj=iJ37XHle(WX|P1Oy#xwol|u)gh^HF~X~s2%gkW!^L=DDz*p+lv ziYd{xc}apVIw>BfLcvA3MlV-cPsA|o$l3@uu(#C;ee55c1vaIVH|cu}n*vle#^Y)=J@<9h@Rdzrpmy#k@R@>R`rtaWND94;~iOB7UhbEZyn<{;41$8eV6{X>Ku7 zL6*~nbj=jdP!o2-FG`+#{h>-pfl}E&#@!AZ;}!Eo-{PDMy3K|yN9XVG&-iv@%@Zu+ z?{r6f)<-zMaMi8m#JE9+W)1PrNEhad%xIoUEG+#t4pkcDPzztv{95x)s<*=o#=#gS z|4+z~{}ECwa%k|@ciMH_z#m~ozDAxGe~+~mtKH>|%A@2(@>KpIbS3%n<9M~TjWLIx z$Mka48b81JL5Qk`mH)e)@_W(cqd}oIN@bfp$PQK}^CjtQ4oMf=J&Fi+p>T$Lbf{2K zFq>0B3EU3OVBk#Y$3GbK2CG_rP||1!fRwXB=#v0ukrd&y9B92GA>XN5^n)0;WJF`9 ziRM*2XBO$`F2&=|5%FvGl)$}fHnL~K%vDuT6ZNfPHLWAch33#yKs{6&vhCWalG6gm z+o9sgk+)qx*nWy-0e@(!>Q`DL7D7SN&_Yf6$8rm*;wpVi!JWc1UmoZCg+O9luwp2G z+Mp~CJ+zJw(*9G=)(fF{sY6r13+zH-__u7CasjZ=9!X^p->|8AU^2!-#oI6wySry_ zy^&2Ev{PBXj#{CUbE}wYz$GWHsRCIl&`VwA3&S8oj@S~Sbd`2_CXv|dwTR~qCoZD? z2ZyPUZ}d(uyq{bNYR-?p$c2(Cufp}Zuc={5l9hC1%6lfWw0u_sDd-xtEq?)Y?UsJ- zTn=nIR%hp|YbjKml;juJLuC@<3tFuR_=;9=kN3{H*f|O{c~uDH-fjIP~xDJIjwS_i4k{==WLKQT09^G`z13vha;9D zM-1S#rpd$&*?RQylc)NL1yX^{!Og^x*XdD9{QE|Yy}h;xwo8W2SlR-W+u#M60uo+k zNL!HRz;BCN4cm$vbgkTMDu?VJMp>gErT!a(TUq%(Z$y&EY9qE<~o{L4VT#9s#hJ?0^ls;Mb*jCY(#sA3_MkIVB-m7auf z7YOBBv`2M59r&l;wZF3}CQ$*}Hb4D?OSXTWKWC_=YqE?=-DAT^e-439N03Zn$R3-U zi6D)w%#td@)g6Fnx)RIlj>avC#wG!Kj*8~(RkA+4b7!voKs_vX@X;aKA9?gPm=4B6 zs@b+S7Y|-xxrF;zuL@ZeimdJTAZ%6*GLosNjZm%G_+3?ogfgV4l&YJKHtYm3?^6Yy4H;9AcU8;9W+0fyw^G@!EjNW9M z{%-CSm1o(m#3|J1NpW|*!+&~Yrv6} zE4~e_E49eT0ya2Nu;F0AS$|$EP6SYXX6|gY#`M`;FvVyld|Bb{=YLw#7~d>Ve9=(Y zP}GWiZ0Xlb#`r2?t!1Z0U6o6f?1d5tDPDZZR83i;sJ}DJd16=_ujpcuHs$kr)o4H$ zNX3aAo%Jt1=(Nl%6B0R#9cZIAn2zr#vdhVTRTpi-gk+tT`xpPUCv2&Ei(Jy#=g16x z@754gvJ9u*u++vV8k_h#)Lr*sCUXD#l)bMGlRO?jjaQ-h=VoW6A{GBUC!x;*G!+&vQG2WuC9;uZKn=h zuEzEDUhRtNmhoz9Dk8~6oQMmt>P9ONsKb>xIb)Jqs~j5V?tHVvWp)kfNWc0RljLg7 zVZ&VnuSA##gtrZJXi!?tF_;$Ctmx020!1XeI@ZsBh$SURi8k7bHgz~57x55cox;Pd zv2V>=K|4@)5$Br0e*Br@shzM$c-djyP|PyqopSIOYfh~-%_|n=xWCp}rk>velbo?Z zolj#v{mMdQmZroda~d)IN@f1ogL=Fgq$#VLgWt27y4^^16?4APRu5X&vQhrN)7a;( z*Iygu?D`I|=a>F!t1mdll5+X7W};R%Y}5VoLPu5YH}3_#*Yvf~D&URMLu)1bL6zIm zhoVgE-Yc`)Czwz017^m;11+ptX{I3oY>SvvKgFT0=Ei+EHfYxwwd4T^?UhMX?^!ok zj+gl3jgP0r*2=L$J=Ytex1i%nO+Liz%mMPAIA8Wu;4_OtHFXP%I(k1>bJM|?2tthW zSkbY`=p9!ohy?|w`I%*>d}wugW#*|WYn}>;*9dg~u*x#dIbs&WQxj!J6ZROa#MV8_ z8I#rfN(lEBP(TQ7VypaOi;NH8d6NSeW)OJQVBtyfA3ELIct5c-ZMkg(WACveQCXUrJ8*c&Q6U&#Qwo80Z+=FW!FWqN!V0ycG<*r9qR&k z@Wo6{v$4go2f%S3$lpT3tlS^&z1+4h4u!j|d&>QVjm44eUDKeWB7jgaKzr3OI7e1h zk?>e6P6Z|-E^)UuuFfS8fdGQ@f~UvTc#NkU%guF_#zzG_MR=tW776Byv&|zprptbQ z&^Hwl9ya(Kogwp}8?xjeBxo4`C_~KtLx!?oVN*I}2v>QnII`}iW!cPt z$`ix-vA$y$CC*8VO|xfMYFl&O0?1j{U}DIl1VSL`1&Q!k&uF!=HU6}$RK)g_uR?wz z%bk*1I#3d;Oo7#f?C0zalIWec*D#t=6EdXwRv9%+kQ}00WPYJIKg2XsbQk=V*!;@D z=19DxP0${tBuJXm#%tlWL?TwNpLR&<1DA1YSfIwE_iUaB86`Vz#uVs`8+xry*LL|& z*?5TLqTFZ`=Mtwas!D$!Vu1ox4!ADkh>TUW?}Os8JCo8rzD+NlBe-Ftpd3Q>YTDYl z`3nj`C9KCT!c_NfBjOg~%Sx9LwZ}4}Nq;wn#-FRtSS-*R<<|PI6kk<8`DOi<$(gY5 z4p$Xykt0yoBd+MIj*ZPJV@bkKRw5y%s|NZciOGnh1^cX!Y~g3YZ&pbi;~5zIx!)}W zeXEw}#I?ztSbV|u4fS^WzCZ03kHW)E^gT#6l zGf89TU{%3gN|!LDpI!^MN+Db1A4~lX5%X}{ErOv|_wV1%880PIcV;}|X%<`U193sw{(6|-l9ZKHxnD`|(yS^3JKGL&rOPhCgz`FCx5mEn3-CO3A4{vkv zW%^yWhx!-PhD>6%s)lI$zm`O`O1oI+s{F~I28zIwqC1U5oQgSmAx1bG-U1^v)idNr zMP(n(pZE)*)*abxo}pJUhTgyydQzzKt9q`(wqcwn)HJzW@ka;ijsrT~t>mX8D2Q?m zD#S7;-Y~B<+ijJzl(XKj`I6;*sh{!eR&Z{lq^fk$oFpO;t?JH;j=Mq;Y<>7{v`7{9 z|M4?Ee#@m;P+74};fxh~DswG!{O@nB=%m=b;|A(Fe|_E~rJW5J5{%TQGVf-$T?stj zJu;$d>uLL@b+Q#jt4p{>18SfG%?&&x3JRwK_P^q$uY?MaO%wZ4Hda?Q{k4E{n=;zO zDGEv>N?A-j5@!;LLtAoj48_Mm3(UK6^Hy)n>V^eF8X+@lvCNR5TgjR7)75?9F1gS4 z8pG+#Kc(v9;KAc^-*%v?g){2shBk%|)gJD&E{|$WFtVzs<4+#Do;3{3mob0temQ0{ zO!1s6uYUbPOlh8w$>f;b*mQ=muPMcN&(tz^GVN~R*(ty$r6ls6)vGAql{#J+@0I)~~@&p0ma*|}!GcOA-yaZ>EW zTETIsQd$1KGDie2{)R406obNj;^f(pbC*gUX4QFQI3Ah)0s;{fmU^2Rw0;=rUc0W- zc(NUv{#AK9`!h&A2;@a7syHUnC3+~?_>3}cP$=xs{!Nu7q$x8E(#M<>g)C#9CS zt%TgE_I;gY#5Wz*jp3JB@+V7Y_E1yqWbyWtoPWN&vMr^Y*Jn(RLuyqt{q_2 zJp>)|g-`6+DN%Q;9Qa7u`Bvz2TC54?9M(oj&^R_PR+;r5Dzhi|6#}f3{Wn!U7Ulc2X4A)?^MRNNvp(JpomQLe)`G zP0wW}dFdUKVe20h7FRKuSkO97j3o8x`uG4pnq|zcsFO3Hn}o?x`pF576`!1-?(1sK zw??VZ<1#c2NdP%%A|ZpP`K4~XfZdGi$0{>VXTDz0?=JYqh z4NuKH4ZB{6fmE28j}z3X;_86qz{S_uaqvAE-JmBwj-e4A|ENR7K{UtYxXEhb5P2hd zD8CMs2iV8X9*TFSHZtS_G+S>pxmZ{46l@tdH}gDbbR-u$`qqP%2<*)qXCtWTNW=1l z5~XpjR#HdD2WBpuz|)XdNb2007gkIwF{7R}e%k}3dwuGFRGFzewHTV&PfXJE?EW5T zu_Q~Q|9Zx!;8r~`-7PpJ)fSV>I4yZ{-L?NSz1W^jbksZ6DT=e3HxWg0Vq%1YfP6O# zd&g{BV^xe~NB8N3h|p%NaBGu}CRRAnm2f}FojEYpX-t?!DRI?)kA!m5{daeV=7NnL z1mmd;A|mE_b-+VDG*>3z0r&wjcSPvy9U`J?mz$-!2X9%J5e;h0_g*I|*=y#DcwUf60{)$VOZ6Et7Z7o+-%eIos4PQ?UA4x-7 z+JKl$RZ*i$vCMmInkWeG*Wb6lQcB@ByyhnG8O%IkwR;W?-8(CjQ56gJ)Hcp%0K16^ z#dAfmEs33&G_dWdDE&@e0R2@HI_Br3$x)w(qqCWi3!neN z1sUsx4LY;|R#Mx0xw(T~TX$dY5COc*x=M}+sc&29>lQ$Kib_@Yw$!EW1~<${KoQC7 z+AB7n;F3h6rWl*exUj3?Uz93f)7uJ7ws8H?Nx#%UDjEI&^%eA#r5+_GDCQJbm)@G5 zbKX}yYiQa83*=7wE`sFHE2x|3!q6b6)ULt z!`ZSTm-)$qzd);|sSV@uz#_IayHPaL(;t_*ZYzsWFe5irO&dDJu(n=YMy4);@^g79 zG&$0qPjcI%EsM+ub0x7aEJ$7YV2dW~dWi@uub^%&yQ)tQlV^+tSqrijRrl<^<+%?@`u(>>gUtL@}njWVBdkH80F zi>thYg1HC(925i+&w_r$Y4K>JEZ@0O9%(VTdu)l;-YrE&ER8K*-s6M^j9@TUVX(O~ zohIHNlsKZmjwQy+d`#9uxw5s7rzaQ5N)*3w) z#0uKw4O}27Npbpief|BNCXKl3L^vYaHz$q~RWp$}NM1LzPX~Jq9{Sn`*-{Tpk+t^S z;K`2F@quz|5i1Q+8j#yo4)yLQc||xS=T>2k?|&@~WJeanB^&)LG6YLEod!7wgssF- zY+vp3X4GHam&kbfQk)c}KS~r7C{g{PAWk_HAYl|VSNHuY5kZN?Sc?TFwK-*K9T#KM z&t|vEU5z6uGLoat>LjcWdGEbgz3X=F5xMB8AMSHB3cXP64X_@W4FvC|HrR|b$%M(l z_ds-4pJuZX?EJ&t+MOM??D=lCs!b8n-FWhT5s=L5{#fSP;}%72c=YEJj= zGhZv=QoJTpk^@GjGimGNU}@%IQLN%fA?hqGk-+->Y1h$E^`N_woVZaO$A3;2kV)rN zjqcM>hSAzFl{OlZskJ*ZIcl>~+fTNULdiL=f6NiQ!*RPn$_&T7bK5nD3YDkd9m zuqOB-tL$4`!V=>gb5;w^eT>&R3S1K0kE|Je1oLSJZGqjdKW*+zedUoBEn`Qr0}YLm zD9T6qW`OMS@fgpNWp}60^9a}ZUURAfp}bOfp~vCqU$hi`v%W5a)N=Rk?6CVB_4Ssx z{Ew9!$mmV$g@{#SW%~XWKbTK9L{V!cO?VpEl0DW9=dM37{|uQQdaHB z5b4}7^N$Z7jb-)kQvsiZs)7?6lRa9tinxS>*ZxeS`411`&Rlkz_W-DDE9Pz*7K8(? z9_ikg;&>dX>Puh-5jY)2OCZPATI9uJhuCSX-@#C27tMS~d9G)&4KB(_ z?Fbt<=e2M*KDf9M*QvT{D=XQ_DWk1YptYz0T#=i-@{!l>?dlpDNsU?1eEr+eR?k_Y zrLAq@b%P{XBndl9@&ki#UD{5WD{E%j@|$N)W1C&v9NPU6fsiNwlix%eU4;3%255Ga z`-(5JyNsjyl{GyWpiS(Z16+*o(^y}~33sL9Ju_U`I9JEGtCF$i6$Z z`)g{x+TYuW6O_e02-ZY@qN>89#f+PT!Q~{aDLO+g7X$b{+VcQeTYN}e33$StY5|y_ z*Oy_6OUmZ(^w6o{OsQoufz^GU{oR`}F(yYFZ@Ps}>ph&2N|x#op8y4SZPUnLV{FrGRLj_> zeyd7zN78mw^xS3o#>4|}y0CEqHer)oE+yZS$s(fhQO=@_@%BLI0xOT&i^(J`EnCRkPMfj0q@vRd;NdIGNe{pb8kglU3sqCB~;s zfwq-G3|7)0bs3QAOT3)j7jJA*{f24136!ZZY zJBVvuN~07O#?&X#!YaMiF~EOKO5W{5W-4jw>s-OnkG`g5Rj2Xhf9WX;m|ARf_ME`u zG*#8YRN~9R{EjEG1tY70$%haq7 z@(h??G)Kh&|A>yXtZEBk0p>3}0_=)7PhX4Jz8`IO_rq0qUmF(^(wp*qRxSHtM(-Fe zB1!cpN4{#uQw@Tj8RjnGWw(dn1H&q@qVDiVqnUZ`%+%9*kDkTDbSEZDQ=%_BNXj33(wH8NitdN2_`cS% zm|;QK~JKr;8G8}GMgG*1L7fN<*VnAJ<-(TF6SZ(~QR3syI zsg309s`+=yCb-TKNHmi@PS#P-ia29b=M=qd&@78nnM0#fSSc>a)awVB+_jD915g3N z7i#8@qy4Q2Kx>UN(U{C9vD`#x>YQE+g-fG2!d1$J?&1|`1+-R(n(ktcnN`Z~{RmmQ zXD!pIpxu>n{!RuVI?es(p&wuEkD}!pAQvRIvyxqEUCah$tB?`Vk@$q!1dZ5b7iNX( zd$tbPcS&7LV=wrjMXMdfVcBiOOdpxIswTUwH$+DoT3YVGp$bdkUK(R08`y4+lv!YR z&_wh|N8)IS&Z?eoDu0O#X=y{p9`Ev9o^Fb=Sq;YEkS~j^(2tP!W9v@e)G;-6-So)<}TYhf%Z8i3knEtHSWkDJ>52UJAeObtk zS-}q;&0-MwWwJi*>A9pO0J*2{yIy!-Fx(SUE5v%{nwR+xPCeW%JabL58wdUHW-9UO z7vJYG0wZ#WX)`+_|6$!(~y+$)SOmP)TxKR>cR>j1h$Xh&PUY_)#_lynl+-4>K7Q`CSMxk7djAOX?Ed=r zYI)!x8=Yc34ZT$ItP~H$kqWhP>MCU>6B*vnn2}wHzOYG7T>B!nC>Eg zq6zL&eH~>xa9~uZ6rA|m*6dqwX{*jOj!47d;u3JAcruAQ`|v@GcTwq~dAKV6W`Ah{>^J zAQacE)D=Z*;_i0PPfjlEQQ7ZKY3CrKN*^~YMD1mxxuS|~c8A0K&UpvV)3{vM!p7$O zz?)(9>{k8bJyyA!u(SB+wLqSUimlc?`RS}!EnfSdW_JoPrZV-ZiN$sONp>mJ8FYu@ zqTn^&iL`#gotA6wqKL!?CWW5$9~QnoWj6=>eQqXqDMlm~2ZN26n>Rxs1X<0a*WuF)~a7}qqX;B4dUhd!#b4^!vk zAeM&fJ0Ol!GtNs_7%clgbt&Q~cH13Xh@Q5iY3d&`j9iUxz030RsMS104ay_iI$UUciu?o6&SySG+SHtWd5pae*n915B=lSDDOW}ew zV8D@a9uIdZER8N~K}s=SxM59>b8`aFB#Te2jlnq1kC-J5RIc(q;YNy5%eQlkScFAT z@Ty|Rhb>YV{7VSJmgMSz?CA9;y$^2I(`uD84%SbCK@%TZw6fdS`o(uCia}oFt_;q0 zxRXU4>O0~WD;oP9b4jJW?G1N@_*O4jye^fbdfiL!M8tQu=E!}i*FZG<4$C6=xvwRO zX~78Yx|i&gKtz=Mf%o&=xvR=oPlV<1OecN(L6&1Q9bXIko=JGrBHfe7q<$Uz{s;G2 zGm`Grait)1B`Vva9fmy+eda_iVRsA|KiFdKvG0FH`p8`aSDm88RH4tR?K{= zT@gG(k-Cp^+Uw_!mpKuukm-oU@dFH+TFxqp;CqNboNWK9SFLG?%|!RwJyZM=O%KF~ zi5D#>Wc4a%{Np4Jke=-yeqFY6*mI&O&9CNaUvD&x)+Ow!C_{WYyBVrzgB`F~;=A0I zK<`Db0^N&v(4v|{ej9I8t~WR z!rAp|AJg+meYuqO)HPa1tQ^7T@G9#L_qYPyeT zuNbx%Hf&l7N~bYbrjGAxoCq6`vE+cA7SByIoEU3AA@9MfXd8L`(eWX^b*$q&8(ug{ z9`}LlYm70IWk4%`O$Z04_-|!~AQ106@IDs7f=%-*fB7aS>%k(^| zWNu`qyZZaS$v6IY;ebA8;n6$FGv*QW#Y@GW0b93PkN;-wlb9mS&o6j{_dH$&5dqbr z2V9(L8UmJ}cH)zxq0MtcE1dHKY@AWsF5MBU&Yc#mQ1s)`ie}WQQcv|kyOu~d*M362 zu&CYJDD?P7!jT`;c+M)DdhQN2%4>rCG3UzZ7?q9?!L{T9fC0w@#d`5iEPzXN>~PK0 z%$6Pt7CIiS=(R_Us&lIzF-s}XVpmhOK;x5kAJfRzu2v@Ag0pAb(l1fjt-?zM*tE=K z_}cAgn)iTKD>1Mv&oz^J{v{+k{rDT77mia5uGO?ut_IqHtn>J$2id%2X!Rps zG&6Qz5kI~uwbfF-6L(|vsls>6$}*eFWn#x2Pw)zSZ!xyPJXSOHqTcv*`dpbZn5l@3 z660p97Sw?;s>+b$EyBVwh{L-iLL+IXaoiSC?NDIhjIX>rhkU5?Wrf{6$nn68Q6OHhdj)G z?rk()BT$PaMwpBHkufbeE6(}8H-9>k$Cet+ZA*~;nMpB)ICY-n*XwQ`r|a>wO=5^l z-x7z69(Lo`b^nn#++`xH3L`bMtX8eobg!E?RtALlhNG9P>M0@!sfKVFXl+>9X}`87 z8|ZUo=i2ce8Yp`pzNBXNYv}bbcVOffKZT2crwnj;js85(fnryIg3a$&*;)3yumIwl z%{u+~;Z4`IxIU|OdiOEzP)4b}=nA}v1p}Lk@3TyJ{(yXuLD8Cr0nTeG-N08FDLIgt zwV5n%nG7>#oBa2WFd`t8ToBY!{ywo~KfXu5rpq;N{j-f2VQdMSl>pzPu{ ztt)@9uULihokmRjx;H!HLh_}q(P~i#>l>+hI*PcDRbBKh-mFY9@KTrFL4Cb4EWl)_ zpbNKVXlbn6jGS4fG=e{)5R|=fG8i^dM`aPAQ8+9tLDV>tI+KM~?FFAU=#^KepZ`|P zkg*01@tXM2xA=T)9A)>Urev}VX#`iGdwH~GVF#!5tfb7#0OS%@pTM$3Dl*>s}MN*K~EaM6x@ojL#>n;JL;F9reB$52-M0BSxXDgt) zu@fffye}CFgG86fGd&S0G1sNCD>`8Dwb;L43O%v)u-}`r9ho2Ji#H5}@H=WW#6oxk zwv$C+Z}od=Y7f8h=w>AdFu`pJ!mw`2K9~+)yg(WNZSy_wOOwcrQQ4l6M1Ecyo?($p z*dIUj_<*tTIg-%bidPArybPbbsL@b+WpoB?*CtwX_IFE4S69T?8@ zD8NGJOYItRBNkVDM`JUk7_U;CGvHz@ZZB1Y_(#cT)^F*>ZRl^$U@o%10Wg56PxILY zK&t(GKH4>8LC(fx&+S@|H6V^G%3>i$!||yE$m~86DAiQWH9(fM^lLi5<(`U-#^U|B zL=3d*^@)W(^RuANwraj-5uC5C&H1%PWa#jW9KeC`T&(^kjSIMAvsDx$N4Q|%@pZzo&v95^SS zXUt*LfP*|YkTo3$R!ge`9#Av=b^n~-Jubp!v zbN-X9z-t*gE1lehva^F89)Hsw>Dh$&X$E|Jo2K%BN5(;SqJT0s5%hp@CT73c8)0U)ZfEA0a9CF52J!^yFHQSLx8KO!< zYC?wPW6dnD8_x-lC4NOIcm#HRI)!r|sUcu4@n40F>2m$X;ApNqeF4&ecxb4Z62oTg zPX?_4|JTe5$}u1{U_@L=FCXCwFdCvIjdLaW^WnfbtorkrvYo%Bwj^Ha|IaI`UW=(; zrxMS!O7s8oE%SdDMYo6YMwLIY6xD529z7C8vtB4v4~C=S)zg2VUVFhRy8v|jgZokR zfarJd_AXCI6t@u-XU_|-NJfRQ-1wt=BZ|*QLLFmH`>Uw@RSovgJ`E%k|12>#?`-P4 zu*eBclq4tyHO8Nzb*_ZzL9@^C+MV46K#Klt4?vLGO5vi;JU`_WMm7wZ?)nez3iabj zo{(kVr&VrcOkLijU&!&Fms89lBp7$oLjBB8wN0|!DKt%Azt{Z-R~HKzTB^*p##I%@ zB#G90N87C4do*8t@r>ak^cb|~G(lbk_ZInF(-_U4_;AAA;!cV8RzgSC9Gl<19)GnQ zB4ASc$qtt3tI5+K+_H<@zVWzDace$@dtl`tOYDy7j;UFs-EpCjrn`FP{asBFw|!N3 zlNGOp7bauMB1iSu_5)n_Abk?>auf=?`SAbTyz8J1nF<+ho^>Q6x3zJ@5Yr`NBn~5n zt55f)NsI|^(3e}|t(({k8`TzEsCCIt^82gL@ej`YoyQfy9fe}u&W56&7VTn!^?lNy z|2hie;#U?YA;ycXkBy>`4>QLECkSD0+KuRiyTzEiGdIbtf}|Ins@Z*GiLu0ymF~rl2J?|$H_3B<_ztB#=a?dwG;Bfu^5^d_U z6HaIR21U7Yn8)saskkD32iF3QuL7?ri`uym_StS_LR_;r4=-HWpJ3x%a^IglEoJ}U z`Vt`*P>S6qEE>kV{Pgb$1)?^&cQpi zoz#=axRH6tv|?zk6!i!1mCS9`x8si|slUrovgdMlsm&~@>Hsbf-V*uH0Y3Y6gE21n z!YGd@NB!Ce9oG@6XL`}(bp7t?jrut6%4lA(TSN+sYZCJhEzwoN{FAOU9@;#aRRgC9 z>NdFRU(RN=)DHd{Ke!m;gwkWc1ZGK3JMd-0XZ}B`QtWL;&0bK~FWcf52qtyI6=F%h zxVRJgA$m|x$5u^FcHSo9IUP`m2_KembPm_7C~7k&0Yncq-$FjqnVn~> z+aeJR*1KDFW5$exuQmuZxz~7JXR_f$Prdb~I-R4FiVD5{I?ipWE>GgZdCrEu3;DVU z9CM{W;A0G%Jn}+#Ie=U$fojlExMypbf6K67jqFK%90g=*)JDrP7e|iM#qk#Y?_^#D zRWfffiH$s5v}}_t9wK6QAZC=^%FkHt9|byg@_<@|ntPb)20F3#obrY#8f=`4T|@@X zeY(GPTkQrmbg|>dWtEHOGQ)CK1Jj@(uuMp%D9g6ZU6Y0jUM9Xvt}1flM-BC+1x%*E zSHXX9kGv+LNp%?k)wl`6Ka#mg_1sbSlHR@*to0l;ySJ+RgQI`3>kniJfN2je_|01B zZl$TAK|xHLpW~R~&LAp^|EopN1Ujq7@8G_D;(^uEdlut5e3D1wU2Y;__`PIRV-0$4 z_;67AtimM!J^i>aVGo%SxZn4;1smR=&V=Oydx$gcQDE;|wcHxd?KdL-gCLI~TNn*{ zXkvdh$o*PYoI{du!_Qo(i54fUBIYiAv*3#v$9crHqYmqdNv8=kH8@oMLr(dso`)2? zzo)8$FX!&4k98M}hUO{nUJ{KiF&Yi3>sleg5dl?g>&v@vBW139-G-e~0)5^g#%Itmu2rk|GE%(A+A_aCB`M zcd9B_agR>b)rW|h@4@5tv2#ha-DHZH?ALzkH#5kF!OMYX(ktJF*0 zWh358{c{z4ofhh2f$)mM{I^R-wA4(FJRN$)u!KJbwlYjObbShzEWGF??*lOCktW$f zFg5xV}q0PFQG2N8~y($@hyW#+pPl|+ZMJbKH8wP&j(bS%b zLK&w`(J8ayp^QmQkF@Z>X1x%y=sch4BZyi#=8prKe{d1=canCWush9ML_2!K@%x%R z@53rtX5EP@vo#)~)V;238tlx%VvhLxr9wR`6@rY^gh#@IJ1r7hE%6PWUPYjyI5TbH=wuX;>C3t_)FKauI%@>7 zNVsagnXi`BTbIo;8IrZ*jwMi$$B932R62|kO}>KN?Qlt$VPOSzJ)ZjCH)?`MUJO#s zcr=All<=*36t9FLgz>odoTdme^B>3$)&(Hb<^s*r0^N~mTyOK*YgTBKddhPx(E1@mjGf%q7<8!^Ien6-(XQ?u6 z&n9ya1KD(oIBp?42WB3nZ(!{u0rrTLKgfGxQbX-B%YfYSj zPqsOvC!C$l2;8^>mXYT}%Lb{&G-Pr+?8od;5r&shv$S}Cofe<0arL5%l6ac}1c$oB z42ow~G=#s}-e68s9kT=jvU<@|w6y`E!rn>Fe{jm|!?$S)q~3?Ff2dRb++%7s{MQAG zuLH(>f4E5!PzRwRsOG6uQR|q1DE4ogoik78*%aK5h{%wqngFm)y=wa37S9JsG=Zvk zAx516-a>Am=s+y^lPU3nw7&;&XlHD792-XB92m2&j&QQ3SEVQ#^=d-Y(7HIvF%?vP z>Q#QRMLHwe8j1-UH~asLoB6+SW6VpyRmJmsyclD+BgP$CTK3LY`tb=avAIBhadB~L z;}D%GrX)6#(-o&uG1#CgC~Rdx)sg<2o3UY70hhqD5)bmm3cgMMpN)Khj$AbeI&YKs zn&bLZZwlWJb7zwP-NDLg+{DSNSa-5oTv~K<&MYEBx$2Yp$j@63<6lmF^sjpaK^t72%cyHy0~jX%!kXzh+EMvk%QS_-=bu;{_iH0d8>kE2xZ+9ox- zi1!DVbn?xkUy3kwhsN7?OR{jIC6T~Y?tpGxkGhDXv3f~kdyg=GgDzrHBFJs^O5bFa zE>!|Wamc7cb6SnRHM_hp+{@l(uHiUi4RHzpmjR{CM0{K1Y`UK5KVOgNCNGQ_UZ~*_ z;6d}YRDXimFu%NW$;2EH)~0*iYch8#rxN2{YWLgx?{LcRC0i+pa3p0{l5I3u*QNFf zy$BGj9yyWbb@_=I_S0k7SL63qNZl{34&rb)?e6qpk~D8!;B&HNjJM$?nn+9AI$UDn-Koc-^_USw&{@&Qs5I)~p zZd)+0Me+tF*l~?$Iq<_i6@ICb4n(B5)t_V_S*AilyBL}E#Uo7*s}qeK)rvlKy@-dU z-!o1-eoX@AxZ0|~su5fDjwc8%z`Won1Aa_<;d1N6ng9donk1>dlm}-kZx$Be=B(YF zy7g(bKeK7bIbXVMuhsp?BCpbQ&FC37G-9i%B6ec4;ZVsg94PmrT?|H^Dv?fM1k%xO zzQ5hWdpF}wXZrZ#2&j|n7CqBMJ0$;X6R(zGqZ>9OoK`trqrj*>1@qc|@>^9HcbgRV zS|-D{6S?THOp#Zd0*-MH>(L#)Rx(->Yl`V+(aGHsDH3CKPb{>56kv5F<&k`6eThpE zm5lyfxa_xXF@fmFe@H)Jr+~i?>gQd`+d%#>^QA9t=^{m*KO1mXuqR1^5c%&^g+FI< z?z$%Q4qfXHb`Hob@VZO-0rmWNT3tyJ>I0D{R(nxKAf9E4Q3;)cH)?)(vBE>NCc{}! z21)Y0-7MyEZ#)L`TI-QD_*4U1WzpC^sZw_0Q?jAJ{j=uw!E?tvzRFETx&_=tm#;8_ zIR=~O)QEwR)oqlqak9f%Q|UOmWnK9T2hLg#Vl84zvZN4u-z?cLJfer)Nu5QMQ-Y?b zvC929&!Hi2-_*Ws3b*K2{<+OrFLYB9G}s_tH&JZI1s$CCf4k73+#42l9lMKFNy28P zfvqboq)kSmpV(I}hjL|RX7JlOKP}8!5jy?i-I~XgDmURHj!n(JLw-kRDTVwUW?X0f z2=9jIV&MIOLmcT*1WgD|)OGCS!RX^{?=O~~4zij*^Y8b`-=P_?6N;fbz5-XH4MQGw zAf>m{K~oQXKPt#NJWSlWjMor4V!XfJUWZS_bN_hzvUI_I75GPGdpEQtMvL;1>pTr4wH21 z1s6cb`Big^E*VK{2+>8&Cl+~u?6z{c?!23av^{GPzO4Y5>+g&D zz)8=uy5B=2Vn}a*RlLAG77N&mT8GJV{B`aP{WVR;{Ky|@i`8Rx5fkQlM;o6xxXF!v zV1h38aopno%NlUNN=9(k6XqRjp7c#FZ*8jkIdIb~F#CMXVew@;UUjQt(GEb=VrQhL zOXH`$?Y_7*+lc;hnm)N7*zjPCF>XGZj`?!2gc@3eFnFPy*!goyK73E@nRVsDVESm$ zC+=+Xjn9vp^JHkOXchChHY6+j(P`{dJNj9|`r!93T*pA0nfHOXFghG?;4AlUCzu_L zig(J;S@-+dUgu+-OjcxJwLCNUROU55M4*h{Q}1Azg=Bld=}FwG=h~;K~JEui9Py0uXpf|FoD z10=y6g1fs8?(Xgy+#z^y4=}*sZoyp#2AAN$-O2k;@_y$#-#P!i|2b!^yVhOz*35Kw zRaaG4&(!SNUA3QQZ?$JG)3Px4oU*(|1$06OjlW>_;)nfpY+?iv`ZSatF4x|&vhhlh zS>_LK<1x`DvVUF*@9*D3l8{{(a`3?V@UdtjkC%UvbWxK4Nu0=r7Bm%N9Ms>1a@j3D z74nOKDYV}&rAikZ71)bK`nAtW;0O-(a%OLxixEa;GbCXUp|xC*SP-jsaLXbzdn-#2 zH5&Q#Ge3{n>|n@C^0^SIqY~OK6zL}9dBf(OqNNm)k7I0HOI3Lq(Q~i0DnFf^ ztrB<%C0L}qd^ev|V>4Ud{X?otsO&8;uEoRQe42~F=p+yJJWFZ7Vu9UXwK?HlR0c}b z#27bMUQ_9?d4{z2j-f}9rk&}MAX<9T*s*Z18y#F8pJqtVhb$G0&gqTkx?0e$XiY3r zUf3^(U+Fu7q7cnvI{YIam^x9PE3GyX?QE+LYm^UaM8n|UORR;0WyEJP2Os1j!ql;P zTUyxOfmIYd{76YKKTHp#J~}UtKuN+#NWkk^pXf}327;u1Dyu2No(?GL!GCjgGxeIL z-l~a!uF6$-BP?v|9V0QNxMuQ}_*wAFT`Y#*!q_8f4t=%$HaM7?71&mnXRI| zGTIB^Bh;0&mJHqR*5sZ$jzA*uJV|E7U5e^y9SV40hZSGin$w=x!^!1WJO8lU#x~DH zuqi()$CRYFL&Aii?iH&@vw1<$@J01d1g&0@#3k3%tVQ0JYmv5H;j#0`M-V&R(|?WA z5XG2qt)Dn&{cXxcxlo}6B^d!pFMIRrvydH+YGZo|_1Js1mT~#GQ8TY;n)M@OIJMH= zq=PZxITbl3#(_$=4~4;Pa}4}-2ZMqoN`fR1t{e`PmPKy7uHK|QGk6t=zhK6?2#o`X z=e*kSFQ6>nUDChu9e^}7PADwXsO$=|N$9#nKiE0z_QaNpZ};$>fMSMvD{=6RmEDgw)0v^d5|rDfPEcvt_5 z72^F1=AiGYoE*WoY}Kc7cYoP{or6@06Y2+HXy5RKB+!|Ci(4rg*5B5!bS1A|UkyQR zkPs=eI$P=?eUj>VnCDV-i$Ml$ALp0(RpehVY!Cf`83e}C?owLu0agz)&+vk7fiP1! ztG5Q*`R?{z9uopG?OoT^PFL^}f4)4X2 zWBP}zkB5EyQzVB8ee zeaO^;+}aM98<)kZu*5`uN!q+^pU%WEK-69Tlle;$fw_}`4pHt_jIqN36n~2@xYw!I zT5rdi=1AP9qXOj&Z=dLGypk#@m51KYxuzkj(k3DK_s3L20i{h0#7?+~lNaJ=%)M40 z&iPwI`+3Q@y|(^VcMQ}8l_~T2KjGG}z&~B{+V{9?>>uy$Y0ag8uv^24-^@8S{@h#< zxI}9(ik=_z<`m7^X7Dc`O=vBRKdeSO4ru94b_&)|4Hf*#Ctz>osqH@u(w7xdh^mF> zgaXF3IZFB4sF+A#Ht9>rS?+wB@N?0)@G%|0vMhoEM;{$MRnk)GibQA}8%8Jm1|&ufl4}zo8F4u4a?(yD0BzXzLt>#3M3paC~%QR1li=TBZ zj|G-JGI_1a<%)K#d|v{1_1Em?9^PdZdmgWwnytmlF_8tdF(h)2utaBrmq=QBcvG)x zBDGgtB)KcQ33)m+JhCsypg>2(aq|+lrWl6B_-9t(;dhh6fla5qkp6Z6|;k9f``u71>Bj)`|kPAt9+^p~1ZY=A3 zlxq*4%qmvZGTxwVD3B;;=Bjbh*S{~U8Z8s7BO4uEgK6EVLy7IzpI5vuF-h?$!FIsS z8oYiQg+I#jdS| z-1y}kYH|)*NF$U14HZ7@PsyuC^JbgpP!xa$)!Hw$)$Jiu`aZzUlGZZE5dz6#nbbNe zLGCoil2AjSePsyh@)aazr~439x>lh8?_1*%jzwr~kzEpthM1Y&0Z?fj=1#^$8Y>o}OzWH~2f zW$6Wx+#1VVq4hxq125wt#f78+*`OKm18z6;UaJI~+u$=QvK2vf>nY z`!aIEg$UnMAehaemEifHbg{U6F@rsVrsZz)U{W_h;Z)_JbV9yj=W3jz=w`?OK>wEY z?pFKBJ~1&~@-7sqj;HJuHZo8~G-A3-_~4R?#K4Z4EbQ!Fhp zcfZCr*Tg!Z$8mk&oU1}z8^pA9{n5;KZ6us1d2Taf4wv)7El?B6{mmk-w+oHm-L=I^ z!?Z{uI2~$Bt(u}p6{R~uFRLc;J{F|usw^Yl8&{@1p%nnCa1MKGdaxxh_F^jcoXl0W_v49@!M=#1dT?46m)G7xr$*!Hye9f; zWeL884My(-yBz6|gx1pU?9O~nC()@SV9&XQL=}ggx5Q%lq5PIn3us&^tGMfY_E$9pZ9Bb7L^POh=1;|4IGB;-$f zr9z24zy}!kn$b8v2}9nMo7xC)<`SdqMD5nckMIXX_dE&x0CZ|NJFE9$TyN-A&bD>p zdsY7=B@ANZ8?&k74=KeGb&d+_X}-ejAKZ(Bw3V8Y>2RB06;$DU0Hh@MsC*CE*mDjT z%CIG5Qi;u8F|(WS925XZp^~$`x97Z(Ev{q~!1tm9U+XIatU|J}aq}0U{z}Ccrnm3w z(WFVueiAL$HuJFrOx^27ZA}re`H?+uK>KwFLtNb8_sY5ixQwmtV*5&G;J^ZUE_Lb2qB*gW$WJ;6bedoN~(&UnHxVdxZYaq}mu9hiGzZ{1Uo>M_yCLlo632V^}c?MXG2qj2}z0 zBkb|ca?!at5`}KQyw6@~w~p{Me;1+J129YKRjr-|ZVjFKJ2An*${#x!uK( zzc2(hPH!PWI}pR7yqNWHbxO>IfvVSXPHVuU3$40Lt5)Vq;H|6WsMR~qyS3;Dkr}9ebV$7p2 zI_Ar)_!ifBqY^70o2KzNr#rYs<@IAVwr+S~OtC^Iir=H21r*)(3D`KJl6jo37f z0R^n7|D;HdEoW*q+o87cHFhX>B{vdkEv%d5*U-FFP%0$>>M2boEi9YtLqr>W?0$Qjs_tDBPSsb4zP~M3-?D1AAz# zw*B$+ent%*sat!Dzmyda3{UmYsv%a26qodN{pJ1`2&Gi0WXT|(7#p=(#~`z$FQFGD_ZZ^gtAi2c%7`Smg$_XV)M%>l-X%e&Px$}=rDVWJcNesUoQ{S z!96I)tO(Gx&F<+)Lyx=Esc~#x8h>*aFs`OlduHL(Wh8Ly@t$y8^Sn2wCH*z~Y%1U7 zKyF9vW#>8gHn&LJI{ymiY3|q3GRgEZ*^R|7x;l16UzoJa=o5#_9Ao92)^9n76VCt_ z&F?@`%(YLZ{DPD1SbSD@w+69}cb>wbJdjKX?_6p(FfH7u$ta&&gO0V(5?(a3j>@@xz6?SrKiQ^u7S|-5KEvr;<^ln~E>7(|YfKTGE450A1CW zdpvx`;IL&rD=(`+7uW37;w%Qsh^1}A^oSb;t5yz$UXghWQWNfP5k!M8DA4k~YYpL< z&cCrnv5)%`5^pJs*m&%I=+~JDZSn8gOb%i1k};qPPA(OeKX?TKem4~VT|7kLlgX6_ zn{7S1*7S0-Ivj>GW*I2zB&h)d6d4wgm=DK6C*+g2!snDrOelQVFqd+|U~ijH}btk%TkLX&ueS_y4s$Ah9SfV;o?HE4JyAo$V$X|@5c(S>I|+6Z3?5X z&S9ERM^~Q?)CVXF$!^|#C1(JzKZy>e?jbo4Z-=GQSbLXK0G+ROur`<6Vv;O`cB@|e zxI&}mDNU1)-Www&?!`cYjb-q)(tB-UolT|~8$$4i@@`=Cy5&MTqA(G7GBTYgxtT+; zu%3Q0vP;UsrBZRU(H5)K+_kRx%OY{nG7qRiYhI0(jEGU%Gg94F2RuQ5yuf)_HVr9) zOkzRQK_YhmOieO3?GjFf#I`TlSDr*Cy+i(1{5#gI=s-&lO&3e!FX$uQr3 zmNtM$jTf#`r+$4rNViccl^lYBXH*Q4`~FsfV|jcNJvft==sSx4(aaKgFJ*p-St)T;BDcxD0s-6>;@Bxt=B3i(G)j2(^?*OCi7Xaj#JT1c zrQ03r4Zt0@d3LJ{+G7oKgezR8^bo4x!&s1_?eXriJ+{$}2Z0L_Q)Apb4qaEtye~Ab zJ$l4ijoDqkE(DFQ0p9q_Q&VGyVyUU&1YUaZT_8+#GtjE7KPPtRIeZu3i*Ze z+dNKN*BokV*7T3vlD6*n@5J9h*Zy~MseO~i-(kr)&c(?JNPBj%zRiR>9r@am21YV(BaU_N3&m zNjXl}29dG?ShLN?GIP)qG1Q9L;L{_dF|Bw`kxIh{BZyEBL$-Og+!Lftb`tml%g%JS zz7Gn0{;@~20&riIJ*=TmY9PhgbE#W}c91vqu;90Gi0-1&lU_MP<4W7V@HJ3V^9YaQ zcAC9DV&NM6npuWf%7T!^6`JnUcPoihI=6($5b16=(*vx56^%Y9X}7@zKjSl?zF1Sn zIea)Ulx-zsw3`iq1=FXgM09}Ph#50$+xEF|4RfXv+$6cL5}6?YX)QgVNp+C=R!~NU z$eFgWgXPCMmDKrHxwFaJtm`R2zjzC+u?AJ+5=h#)qH(+8c$3u$?vHRUySN<{v*1wX z7^x4$%LVk#>{kxgXnbo)6hoOzJ!9GNc%UJNF-ZffkRD#;4LW+zAhmlL+*~?S8GJGS zr153-${Qo|_vD3BiAy|SBQsGDJqx4v4n9zxqiuHm)i{^+;^K;IdnWpq5EXqKyWTdd zVxwtftIVHhiVm`YbI{C3gb=K7lD1^|g_T&EUcq2E9mWiA&t`NDEUtkN;u;WiC*IEFasX4~=87 z^sE;+Vklc}sSz!_-r`((ugN%V=Rqm5OKL`Pm(Dq)tnBLVtd9IC<@7>7&XY1fFxsAn zR$!F+0#^-c?sZW^XltN1r&J#wVMU>7d`&^jq@nqgAdvTV-~cHfPo&tS&q35`noibN z%LcX(Y7GVj>n0EfG4cF!NE6U{+wQJ6TB#!YC zclFt69D3}>p;sQgDFtwt{LIV*H0pM4Jo>0uzHY$OhMax06QHTw7}n4tJoH4R6Q3bJ zte4)}-e|ZB-I-h8Opte*T-@l3wwpL^VfbxC{o90?-^xb!~ujuv6|$-Rq!R!E#VaT`px2OubhMyk&iE|!>rHFy*<{*)HOr#S}&&C6P@N(LlQA2Wga~-fetS`%D zM3-29p;;O{w@}PK^@(g+(Sx|g$5hCotpJIj0_DX+gBm}}3V26A_7Vhzoq9{9d*xi@fnZY{#oR*2@PD2pYm)NDl4n% zej8!0K#%@Y`1{1@=(@>&I$c%wC-=Xd|6Lp!)-ZVSH8fVt{{;KAzem3Ruswi|j8ngd z#}bFIf3ebr4wd$QN1JpfmVS?){|LGT{~SU8SSX#FO|zVUs>i_DZ(t$+52=f^Vx zx2kKqE9SslhJLB|7?TVj2F#t%FF4#WC+{`4`sHy# z6;}O?!@A*F@B#cce|R+s$YD_@t|M>37e{3Fp4WXHG)HxDc=Y_Wtp!zExJko99JaDy z?~_<3Y;y`ISj1On$z+8bpM9{e;Rrk->PF-JV$g*pwok?%KFcd<*5S)Vpu5q+Ru_WodQ@c**lc!G`A@>AIOmB%ocu!leNTfRBPSHJ*#x z6A?i^uKxmt#>A9Fe=tb;=PEIyHSj|y(mAfED$OA>mM|&%0itTwE)G}{>GYQk?VT7f?yrLl0a2t zV!N$3bwA2lu=)%fmq$|%e@^%weRh0|#IH`C)>5t(n>_VeB&-dei( zPB4T%eSzM_f9 zn`pS;iWY#Y4kGVv4@)APNUYO2RTAr9#bi~m-6*^rAZH0hc_M$o+%D*9fa?d`Y1_9@ zFFg*#;E8k-C7_$6C)gb|EeQV1{K9lZ{*Ay<#k?a_=jR1&14Pn5$yhHV4$yY3LIiyo@GCopb7lI?QqvnRBLerMJmHl;!t`uaK!_?BV| z=i0&}|)J`8@f(%&*Wa1PMaQ>9aU%G41cDQf=SO*P9SaJ)~lx}R6-Yo}mRJ$0ieyi&OEW@W7GC1c#-Lln}c4z95jvtiI zIN%z{cKnbt@|&k8S(nP-op!Oh$ITNiBobzN#7?1(0aOiMfowaP#!r{>f%EM&R*~2B z`}M6EbF)I2v>zH2S8Is$m4VXF`^(U|j$cW7@wGG3}}vfgGnU+W9?@!RqD-j!9~QrYnV+!(97+7)%$mY z9#Q!UZ=#7SzigplxfEx{BSJB5iRY?k#G3KfB0pxKP0m<#k(w}Pzv*naW!bZ;RU-7} z@^Meo)UPg#*k~&G7Wp+yxT~Fg`{zQV7vm|(e!{J=@kZj$2)Hmb!yXU1C+|Na>M2$lLtxJ(xIWSmAlsE9_{i|bZ39#^CbboKl#L7hv2 zoxB1u#Y~sYdT#)$RYGnLl^G*Wn7y(QcPTZ@!inR$Z*L{}GqRbwwlhP;$`GSUy!1#+ z4jxM)q$3R9nvk8$PTNU2Xk7x|T2D{o2!CSR8@OX1m=@}cD#>%Pgy##z#mH=ZlD@kY z0Zt^gcBh3?H)%eOT*TR7j-wPufPgQOo4ITmX-E|I|W~+*@!`H2)TBnM9U}J zAHqNn7u1v)p}qrY+nZ!1^okL|kRxZoj3TZmzbWIIa#SB1h(Al5 zJTgAXms28X&{L)lVY2qL5R;${o^Z0}6bSW7mqMJWB2Ii09P47Tx|O97&!t^xG_g96 zn?i#0J&Ng$a={Myqw3cUc|k|l$YUpZ4p*dmT)hR$z&NNHxawolq~Zr?;8-vbkVh!jVkVXqj zv*pm8;PPDrHHb>qZs3y^^_KqyL+~I-3t>1~Ax3M@(N)Q2_!0OYfz9EdPSBn-emH3ZTC= zt3T@3zeoNg{w?igOYnuHusEfm=*u{bBCt}C7<75~y6Dck@}8chTUmhE`8|SHfNSzWOII`)i0NUXqGf4X>m*((n_VhB%!o#YOAm zI*0bTi)LG+I@hZzH@BE0niZA`6035;(b-QbX9ZFpLHqztfgW`$-{_~_m!DOR=F1CU ztO62osB9zVBv^tn^B$@j)kw?|rIPJ6g34366x0Jw;;dR}+qI*{_d#7Bx;3h~?M21C2uwWPue!`bEpQptdWuLe4Uw^pGIm$6G&E`p;TN4q7Q zz=}9o4$x_4dEJZI1|lBwSDKDbaMRWkFuAvD7&fo!j14qK27=?R>km}SAFDuv5|Pny zaH(y!B~h*VCPeijgcEn#62CyaIO72Go}ou&ii@v-IDkvjOFE+;1?Pp#U*-qc@bhSB z`^-2WM@oZiE}0omMbYK$d0I+qbFxAy2iW<%znz*APm-!jeyDN_IR%)lk%CgB^We8A;Ptm?YnZnWeC>7>lH30EnoCr*oNFLaEy3sC#Ep3hA z2w^?5ITU_%i@n-UGasTKRLM%jM0;w=JQ zn(cS(mlAiXM%xPmo08o< zRRKNV1^Wkmj-yhG$BF>p2C(_?zc{FF1l^Ciy%s1?3+5fgXL>W;;Gj<(|}K^mIB(A55dQN465?F4i>gFS;i7m1*r*9=5E zlK+CilS*J+cibz}^u*#6{!Esh?c6PQ8dJ4ORoQmBRG^+*Io}!l7fiRzI?AxXlhqsd zZgAGf$#;gDgLPYdfYugHyb463wB+mg!O;?dIyy=ht0)sM_17!F?sPG*?}{F4yi$m* z=6SU5iWr5llDN)jAt;0r}=0WI_QpO za!kcNd;%#(rLI9IE)&r{lb)erUKvydtSfjV_vLIsOcESAtsf~8a!(B209ZyeWd7)3 zeWBQx35@TXb-H?g_b^yG=uL^y>lP7BMz26Tp)3PYcR>WrRlP6QCJBN1r;3oR%wNbq zBl~^bNJEx zrgk#m^I^l58u2VCfv+x>+}fW13+iz7BmJ-FzhDZx52_!jd4fM5+gMVgegrS5^m7+% zeYOYq5;+yP$;N?a-E%@q*jew-12@oCz*ekW@)+{_jm_z-@*KH=J z@)h8hR2D}-C%ZZ}k_}SlLQQIByOfMb8XHjQ<4Yew;K%ia6P!J&XM1=rrY-w|)sbHR zopDt^m)hde*9q;tf5Mt0`4YZ5Y1%{no<6_lF?B0a+h}YfFMQv4iyKXkYCBrZ?>B0M zSZ#UNs{}684p^}Pvnmu^^@YLm*1XJ$)i-bWv4=y}X~p?@F$G?bQpmsOD;6O432Pbw z$L4Kpso)A=xW5feDMG(u9~>&;V*s#%8Bk#`TEROZoG6UnnL2lb@M;<{EBHNXaJ^i< zSdYWnsRriJsP^au9a8XyW53>4XtQnz+5<9P64o3F?sC5hpgI>eN9qF^ z5?7)m#ZDC|`;_=reemEK4WT|`RUd>N)1e64xh|z&C6|FWlvhI*7DRa37_y9}WvIa7 z__A|=ae*e(n0-Qac;DR*+trOiLku8Eip_IeK~cW!eO<@bP}k{>3Ssd-3@PJlax?=c zf$JEdy;cB2ae_osYr#_eOQZAByfa$mcD)oHgi|N8vUjXO!&8e=Bc?&4TkI3C17(qD zJ6}5w+UmBDb-w`~H_rKQM=aee4awJlFMHY)-GWhqHW3X1%!{SU;Kr7&tnz}1@ZoG=? z-r@Yl*sM$4y2V3;4}|p|RA#HG-~SR(HVvBh6Fm}A;!0dN__BbFC0X*?Z!bCtwTkp0 z^Gm}Kqy5+kW^}^zL!3sJqe1H5Hn9KP-Wr~8K~S$RbV%D;y;;uyyjA>X%*|_sjnvbp zp#S#*)Q8QF-9&M^J0b-3t+LZS<{ZAu|1W@8C$;IWWC6YKKpDHBP zp+~Z*bpPj_0ny(%q!iVV8Gn_C19ZS;ss21Mu8vnE?z_3(XavKgDvsXDO(^82-y1J? zg_Z;MpRiV;xSprHVMvuGZ}o<-Ryw#W2A6i98r;l(-&8gHdChBt2K4G`*pGJHRVGbMUyxm z%WST(I#_f{k@kt{CTM7O4A%jXvn;N8_0k!jGMaWqk_fL&djhBdnjlK`xEKSZO=D@C zWVuOAK<_V@`qw}EPcG%Vn3zU<#=C9=b77E88q}23V=KZxxau2;Qq0QOnNK5MNUU+pDeyvnbh8*An}Xvo~H@0XKVh|I?F_#j#X=%a8G3c0+WAV=&k7V9fnh>sAYh5Y)Ru9jjVfPd z|4x}JJ=EZ!hM#f@V0&=*Vv4wyYVg(BU!{Cjzplkjk-oB1ju8M1X#Pp6Wpojz93uxm znfHSgh~?Q{of)%>je3c<<`4EW3fq^Gd7?T%A*LGRQeF#i zT)+~rf;8D48IxZ7l$1n%<)W(5DcfsCT*0ZnwKf^z;&)FZmXOet%`@i zw$k5NFU6&(&h;arNsvfw-wN;jo41%n!REoM>h+f0JmIz>&98-3V=j1|ckZzW>fARk zFTOK=)u8|Qs<@BPj_&J|gsBFRdu`Qa8MvM081>aMUoyQGKjZ?$xH999#At)y&Jp^8T^f8!`jv4791%;>|Zqt3oT4o2Z-fsGl4!BU{z!5WH9yw%u&K zUkUt9E#Bwvv~ck^MDJ0B@wKjm{7Plm1~R#h2g2gg$!&kW4(6RTq2&1bH!WsQ@V zqO-RqUaN8nyYMS!dkez%6GE4x-tO(n;@Iyn<$QGOy^^x9ySu$!j6$fwjm70xPQ^2? z;Q$ran(#`*hSp$awGS4RHINLtmDM3zd?Y-f2Rp(&!}lX=%G(~1mv`S$9D<2!JUpT= z2cC+O&z^Ow`zXU+bzf52G&tmUQg+tyf)%K&QIkEO3p^&6PovP@kRKx=Wu2#&7n%Ia zj*zzC?5DupeeT_}Qs6HNZb5L0nwPS>*ZyBH`d{L=t#8&a(CfFSnKUHXM4LnI-@1_J z5_qZUybd=oqT!#&?=i=zy^JA;=fz)`RhG7sa#1r%B*y-^OBdL3c&;Ru9!~nGqw^q! zN-Qo*((%m&9jU1a6?;X~Vg^K4$n7Kl=0>OOL)3=Xt3)huU!9(B6D9_BExfE12MRqe z{fJmo><{H*K|ywbgquBfiVn4CDqW>NanJ-N=)le2*$fOi5L0tm+_py^^6T7MaHB6! z8uJoG5&NrC0_;A!g$Wn+T$$MJsG2;R$gayc7hNZsS1$@}R3;1>MVq-j`P*oNar*G9~- z6M{**5-Nu=Ph;fiCL`ilIKilHM?KlkP}@sTw!Wa&`?jGFh*CW+$GqGl&9aer+jwR` zEO@I*LKcJ3;#eG1v#=N2=%Anc#WJW^Cxft{-zaQv%fMRufqFN#c;{l=i@BLTGSwb6 zjw={u{ONUgkXQ790z89^nEZfD$INC0&Ucreh&Cm}gmacGP)F zSTgHp5QXt>ADMgRDIXrmm`sY^gZA&1$mST6x}-Uox=`4w;}=TsHY0LaY%w17&TGbF zhMSmY#ZQaD!oHE&<)p(QFp_g`Il{{X=Bsz;i&mPdIBRU7j!S9o&zK+l1eaO;)#8h>D&-fI2MWWoZvW|ZJ^Jr2x6%LVb^U*xW5~jr zt&^>jeJoe+azCBFb$5!%+x5R08OfEuv`psD*qQq1%|4R0lK|oE+r}thoWQEQw3s1F zeMVNo$@zd;UQdRj@Yb}P%#^y9CmS15FTbq`CA)F&q#ZqDv&mCP4|WLDz@6nRJHZ`E z{-K?YKrePUV2H7yE_TmKuhoUD^a_K;kGP7`#rPg?&)hJ#V{_4y^FobW=3{dpDF%kr zjzqy@moS7}?YTnX-kvby$K{>_LLkTaK5hsN5MV43oNal(fe|tJQU87Ysa! z&)_?9s%v2w5iX?$C>H}W|L#~i^XK`gtq&>vjr{r)WUx|$9NXVrT@l>xGUd{l-jrOw znp6YdW-u*OC6mRv_QG<;XG_T~te#(Ht`Z3d6whsPi#e7Qual;?abUyqWTHGJ>LETX zOI&Nz)=QM1kj+jww0uSc!jXC^=RXdVcfKy;Rhuhht4#7Q9-}0vXk# zv6riN_^3od&f|dC?y09yxlA-Z1EM^=5@@&5F)T%>%w8^PyyV2@pXYo(E8s}tk$I=1 zm=yB?4!A%1*2ju7_6(%q?dMo*FIG+j0*~DBh?{g0wWKIa(Ntl-bIYtxHLyg(?}~=t z+*L0#*usQ3s07h{j?kZ@5v;WxvsTBXb-jYH7H!rp-p_M!w>i&W%uXRja(*UQnAB@^ zzIZ$^V)Xf5gy`hc=CV!v7YtSIjO)`WdNmf35A>M{`4h@Yww2K5@r2LB?}~2w*{fI{ zq5g+i=}o<)46m@&-|D7MV!5lR&^s~=+^Gj7s;s+C@`o}Kt-5fACgPX-3oYpwfoJu0 z8(Tc$rPc@Cju=Ed=In}bkqurEjPtS#>z6UN>ACIVemWkUhV07)jIbW_>*>@c5jU5C~UkL37%72M5{LDpx0YlBnWLhfm=la1N*~}8a1(0 z57e7|Z+#3Jjog$#vT|`rH0>!Jlj_PC>k*S2M%JkJAWKe>ZoI^o^zc49A*H+hh|joK z#1tn`r_99sq}&G=StcyLKZ&BQ5!IwNd1Qk!+}u*f(plKiMm|`t6OXxnm3h~w5j1M) zz&VIac+G#C`=uU>scO|$v0~=@_qS#1_Z(!&b{?>sS5ulN* z&Q!#xd@L%oEe-^tSvK2a^xOovL>t+IZzQ#n5|7-W6u2Wsf5F%bMU7BFpG(wOf;?NJ z;YDEUEGrC^?j^UlSh{7#AKyj5#B1}7Su=Y8t3T^XY8R^E%vU3;$_FV};0^_9d+_-J zBNy>2vUU2t^uMmfsZ>{PTq15)CI^z6jA8>G{C;WZknmfS^unO@YDvFGHY7_9DSe~# zn#kVojKdg!it(X08E}sU=OMGHGfKC%4V{Mj%RIw;Tndi$*2E?qVq45+ z$t)dUpGF|^$dRV9fE<3;4Vz)y5wVUGrhY~OX%@YV?45;>X`GyP?3TvGvP_zxC61yN zW(1_zN;E5&LX8dAU&W%fQC1f)YfD8N@nGlWBSma{j*(q{tH1ks#)0@c zq#$*}>x5*T2*TTNnd02>Y_P8WR_1lDYzi}0$2&LR5e}@|VJUTsTsKWMiM}mcUwc_L zq%Ml!OKlGa9)@w(kNJ6G6y3?nRw=tG<3hisNi;H~0$!&U_s>i)tR90y$mC@Y!k-zL zABVUQQ!5iNvvO(oh}=G;lg8rKi$WWg&#d(vOT$AhRPlqu-de8g6Z1XUb=TsJx=Ir4s zQrS#Eb%*t{=FCs@n39hn#kB}*Fyrfs2Au?>ENPVKF5G4v-N~Knd6xVoUv3V1I+)-6 zVnHw9=`L)~kVRL>zrW$;^+R>d$?#t;v&u>y_ggE4^8a4as19ZIpHn9?4ms)Y@$W*O zxIV(6uGAX3C(X_z+D5X3??#oLlbA+TMp+J9$r;-QY7=kADOeN$<#HJ@>Y3Oz@hh*KuoY!9@#r=r zZc>n?QJM9<9R0{4q+Vn!4OD%S9o1WIJxqBBZue4--=w>>I_TEBkv(cM%G$BmxRfnm zFv#Gpuf<qub3XUP7-v6k^h&JVG##=Z7vKey1ti)W1v zhUoxy$0KW_1?AreoSJ*i`R>QIYBF7bQczeE6QEow6gg+d^tP` zVst3NM6Rg~zMfcLzX;hX& z;ainT+Wc_y_z3AOSq*#^$ha{OC38!M+Q&7(@u%%h%7y_p*b^^x{sB`@myuylyw8A{ z$3Vbb^D||{Ou)ODr_iTR3$?9g${_Rt+JJJ-t-DO%<5>J>!FmaYK@ z+o#UXb@3kg@9*~hL-GG-V!GqrV<9@iaTdVtpeinSFW1mCtB*oInNZ^#^qtC<#*1Sc zQ{2p3c)c(JyKV0qC;X5~;)_>sIMPuex$uVjgArNz5pu#(Py$*{`e0h!8K-uk;RnOJ zb3Q6y7l!SML_O)9q@s|lv}|}+=KZqz)>W$3h0T4k3Qvi^hlkO*@o&ScI!ql%-BSo` zOejonU5D=?qr3d*OtOA<&|(Pk=g}==XK0|v*6Qn6IL%%MSOu&U-yH=X(-+C*YnR~cqG9;tWeiWyOd?d5?5{(*b5)-(c)iRyxz2F!qJT%zHy z`8=XX!@%nUx2vo>OHG+>7zE|l#Gjjbd|1Yb4@esQFf6 zyIhJuSiwm2uZ(Rw6qJPUtK(~0n`Pn>Li8Z!?2exo9=7vxeZ;R@nC+=b+WmgXAC`w5 z)RF5O5F&A!-o}2f)$6L8edhuYISQHeJ<0f4tC{q~PEI92aDuGDx!#Q<(J-})O8$h< zDZ8ay{=%&lo_F&stFPeC)|FV=*<$4^;VpIY#v0+pKp+JsMHvfMxGec+8#Ra z!&^##lC30lU%>SQPjjZX@g-ByL9_dmouNMQW{$#U0sQj6SbM9mxR#(%6nA&m0Kwf| zg1fux;1(pfyAST}gIfqrAh;6Sc2!y-us;YobNu|r~A!3tW{mBy1Ki%yQ;dn zJECluQAImg&kORg9)8Xavv;t|I1astsZxH)Ssim3KDI8zzNRG6U^LmNz17^|j>Rs9EfO=s2IqMLqkb&cx@0>BY~2v;X1RSUb?mr}v`7>GXxwVx!VwSQ=v+ z$vFIND*WV=6YmceVFt|gOgO_=^mS0>6Vw&eM~6~jM7Of1q3>Zs(urt&9|`42kOc{ zQ(!b;BTNtSTGbDCcnth<)}3+;;`0}IXM9x!%)2^8`J6f5m6h`nZ$CF{)l!>PJD#TsgZn@5n%>g>w+IcY2l^q_fqS>GwFe4l~iRjBJZ%< z4@9IN<&(QWjA-&F*^61UmqW6kt-xHB;YNszSrhtg11#Wltp;w zDbK+CZ?6qV9l77fG-A%c=%ItUM_9=pa4OXuMtmS5(6k|Kn^{6`<_8YwXmzzYfT<(B z*EFZzZzhH`xZCNk2a!Gz#*X-p%<%FxB@{f5E^Sr#4j`EO$n`}saTRP^&EUBk-!37j z0W+9!wr|?#RsV33M6RrW<360r(jY@$))`b=GuzoukW!3WI14ZF+FcTkLe$Cj-cJ<6r#zQ&c8~WtrFsAf@ZUK_>aaG|RMh2e9F!`~+J-W~T?gn=q#sn`O`Wou~7zWJ|o^$Bb}0@o3x zc9x{cv`4yuc9S~bCXcm?WlR$zF$+cepF0WT)`iFL&H;ahl*7tV3Zv_d=^rshrh_y)lJ(bny;t-nBA_`@b%VbG`e9HIusC|9icJs&PI(&6?!Dp>Twg2 z(Q6N1Ojzfwmx1r8y*{y@^lk=5ArWzG;yTyo8&>qGn=zESp79nDFobPfOgr`x!D$+E z`A3xnR>bd(ik4nSfC^6FIc^nOboFR6PCIXaxX1I7bc}d;Mgsxfx#TiJdzxLrU5sg1 zKaqJS^95H5V7})F($R5%V%k|(K#{rAy_M(t{FMe#s$Y+V2Z*!}6rHaz3x3+wACf_A zDWZO9NbSvnk|RqK!zb?z_7p@k@LnERvpWD9A20a)f9NombmybrHPnr&;+KY9 z{~u8e%{b#Lu}lV1|K)oJuGv2r^8x%9uPT(sHG+n-Q|l|`tss1Cp|8bgk!^`f*eYGl zrq~R|h}L&qPW2f@DON0!`+&MLmXLl`N=>v5OYl1-!&`r8 zo4NpZL_?n?E#a02vKJ5dQK#NwCkHy_@IW~vFUX{#4#xRI6uWerZsp`{(mAEs{Ovws z(D+nMiv#m1MPPl3aGhpFSd;Y6DYcIgts8l6T|oPLtO!?+q5Kv#ZQwC?_`;D23^Eck zbgNUNA(yMsX8#fSa2G(`X@GXxbo(OVPFDNInpE|X;eOf}K0p)~(Yt0<;_zPcjXg$- zXlrJaY{v%wCE#&er?Qrv@WblfhvRXW!ziVr0#uD*`z0LMuo#}}h)vH8jsc107Gk#9 zoEv87BHi47b;w8C?wx|K%a`2}M^U%NV^QhP(HLLtDHij@vqOrghU7Xoncu-d~b$F)Lt=KQ|V#lFfHQ7Bd3j(O-kJHq3i9<&l;_pJM4hzp+Vo>a=^^-G^0N;7#})qwXibD)02R7m{&D-+qERZ)|20t<@QXImCB7&5g(#qTU(gpK3Mx z8^}kgWPFhkm##n~1#{G+Mz_gQe-uP!8;03ZPaNV&=?;`135v%&8g!3~Q&uA>yf{($ z(fb4Odg&&iN`DYhTxSk=AIF>xBAZ87vl7~IS$5gvyEQ#Z!DbEjZ>n@7v+_BV(1lRC>LQaEJx^CqiG_N7GX&fJ8$D< zX0pJSUN~C!cY%sWmt~L4$jnSC{mRAHMF#f*v9-fR)(%f$e*z#6zkN1Dnt_Sy$eKXE zTPwc;5gnK83j;<%#h} z@WV#6=#z(^@_w%}VQZnUEH`qYXETX*v0vuUK*`6yFzL8j?(KNdDO#j?ch3uJUQZM( zHtHH&(4}F*3RaR#ICKBFEG{ErZR$YsT(TV+^=B;v93+^t6mp=3VR;?y&>28MfC@{J zb~m16P$tU*afs$UVslhbWGNUy*kK{Z_e8dF&A$!X(A=qZGo}+S-(#)_k&cVqQARTv zy7uH8ez`)YPa)l5tk_GiObc(5m(2c8b>q%MXY07p8XaCajdG53fIvaU}#?ab8%S`koJE*ijE#4973pm>pSLOW@a- z!RN=^9!kKqmW^KJOhVt1jdX<}#7XQa)eljojuyY!hT9;9p5_Gp1tqNXn-36V^1Jk9 z`WPPc{?fe-ncDCeCv2Vvj}rcC-bc}NzEY|eGC|fU80k6zMjAAHlNTQFMG1^j-Ssa`RU8wZ}LqiD z!=D#7G+cXKAo0hX_B_G@SeG@3h-R&I*S~>_gm!X_bpOH_H4JBKcaT0zE=0>eQ@I3O z4-AL4Ny-d}PKw#rS|t}Mpq(JLx`NNZ?6JqdYBM-vBbiMJWQM?+q4)5{-p(<7&a4tm z4QH4QA3l=5G>zB3${rYMId-K`j>tpe74JX54%AhSsWj(PBeYA?^ZB}Z*pM|MB-4=L zePIw$z5|{St@Ld3dkqByxmu7_3nUG5J60stM3zjZ2l;%t=wJOn4n{8vK_+U_H>Wn| z!{6uF9OwW&QVhTuRxbhk7aiG@oz_!gKP$yX4M;`Bo+M7@j9!$~Ce{0zGX~0W@UpO- zH_46x1J-K3!8rF1oGu`zJxCmc!sYi(j2w1(EV1W+5(LWoE=s*5q$Z_OEN(2INn>}R z{m)obUAl$A04xs|C7)Cx@WXWjgfAyM2&)(?l-?boJ*9DtM4k+jD;n>1cg;BH8>b+H zg`(02+L12ux#S)kOUH>w6au$mk1Kno1^Ldo+N_GYad=xN;c){!?QQ~@BFPP9$Dz%L zCGX^BLSEVJO2sD`A=`;>d9egvx_fb3TgjHs$K)#OpM*?4EfuF4s;Q+Y$Qz1~;&P-< zMidgwRj_6!iWFq#a5Se35c*{VwhMlg%SyDV|CIay6KcjgRD*8XG`P2?rfL*Ru)j4{ zU1VkCEXUBG3nbBL^t%s13H?!;oHs2`v#Spc;X2$=|8APOmO;5Q1FW zWKeSw>4QFSNXLgeoT#Nmq$%L#Z~7}Xw6VN3`hFf^WNy%!p9&zJ>mag&1J^xgD9K&n z(lqA}Cm!nUIjGzC%Rn1YQ6a-RF@-4hA=*<0Gj0EYmEvvvdX!`Jp?x{z_NP$bDI|x( zYV|0LfYm4nofCsxXz~*7RJhl`)F5YQ^e%n} z3b(U3`|i%&#yy0EP#)&$O{fBCP2kgPkun|3&i4U-VTOmQ#;1A|H13>vwZ8ek}Tdq7WMI|QF`OPz+<&1bZtV*;wBhixOU@&4X z;vbr0*#)YNOve$6G9QV+o{)`)^rNX6;4C{L@21GES}!<@O^R8ye-oa|bEZ|JqAC|- zm`?1ar1Fc{p9fWlHe^BseyIK441jC;v$5`16hR#+Cz7|u5t*oNj`Z7tWs8XCO5mK3|jbWRB;VYMzk=QYaf@mt`)$jY+h2Bg(q zbq8UA(Zm^&2Xxht$>F2-G2szGL3KHOnBg}gWx9pnQ2JXA+hDEn3HJyzGC~n=U|M;H z&XY%1{q^$D*ZkGP>=O{(S7NP(Jy*Sb6Fq;ZqiBY>G}x)iTUHiK3UkQ2Llbc0)VOfy z(N*zz*mlQ|VLFTu%eH##-fkNBIhzCYm2|in3*k-zA3D(gPOz74{QdQltaxkj_jyN$ zF5c3>0a4ENurAgRN@%MeW#cGwa7C=tOlDO}L!`pByzYSH=PL$>eG6F*RJ5$}okLob3t`ZCY8rSI6cJMZLE+P`vrpW41J-i1K<=_CT! zTVtqYH!nbsiNO@j!4U>j_A~xM^QSfitqY6NK3?T~Z9pR(WrLbz$h3dD0D?LcGFQy? zGqI{>vd{N@-q_~!Tx^^P)f`7UYpP_faf8rFX^MdqZ38kW20FDM8N)Wy6uz)+dyD}= zLJ10}6KfLla9}~63YK=0F-z&%Sp$}vqAib+wvUHQa!K|X$#=L6_3*u1`LJU;Ey(~d zyveTo&UWJp3wi}EQHACx(v;Q%(eFE{wj#Rw`(OJy>eR3ZAf-umKRR7s`h#|+`U>65 z4@=%V#+}V5Z6+($Obwo-FyHueC`jj0X*k~?!Zi0I@|Bdz7qNmyYESdX;*iKhsq=xz zpL>TyfFAqRx%PPV4HFIloaiF#t%fr55?IX>A$l~j)Kr6*o^DKY232MMKIwjL=Dqo& z6<+u^AqA-<;yHAh6PR~bHJ`z=I2ToMcxHUjz(QhNdd2mD^t)VY!|_S~^Qu0+8r9n< z^US*q)zdr9YY{iC-PHQvyx9x4PhU;r0I2%JeBY-;xCOIT9~IZYev#$DR;)Kb(NU>= z^o~Xp?mp6|{va^O?|u~N6D@8}Z%Ky5$jwaqh6v=wySO#5_~kUJ)-m10?lWBcmZVZr zUUlSMj1qutfSs^QeBOmx)$JE*)~jqH*cZO=q$?Hy8xFD_fkDk0hSEATs!LoZD7!LN zedGFdZd3q!@Mv#iqDZp#_yz@)70#P`)Qd4A{sqC05PJ08 z<@pLn6T7%fag<|r^ew(VPfqMm-(VP%*n1r(I=)b1Fy8bOctnhyHjk3yeX8Ez39NW> zfjwB=n;-JfI^Z!t%AZgt6BP1(H1+9fS~5OhV2jQH@i9H4_)i^Y$=$N$Q%XRTg+*d4 zz=6;ckB{-{^{N**vwRIz8qkF(pLjlNa?}^rt1bGGvQT*tjhpDuCWAPz*j3t^MH6E4 zNQ_fG;p(vS5e7>VZ1sEdVz$V6!=%ra_VRYwCATJSclrG0J7=kz(`7R|t z={lxQE82N&c$u?Og|gH}Cbfy~32^q%=b1G7Z{cH`-}9KeAH=2m88}3$BhBWA{Zy^D zq%!&o)33tQMl7bc=hg_?U9$se8CO*=AS>mH%5+3jqahya@Z%cG8INeZBK^S*{%oKX5ae%V{4pfOPM+e&c^HXN;D;iO2^S#OU#^5n^^FC90o za9RYz7iO79odQ+To+iS`%PA`Mi6vlNW?63L(JpYPH4bw2UPNMPm&;g76o9*&gb?ydv!zX|agL!Y5eNlOXvonX&rLZd`je*N3 z#l6@sDYczlb=dfnu`fratQ>{aweJPms67=CyVwTE8px7hS0ho$Xf`9xitDi^`VN!n z60|hJ3gC+#fU{&8HyCPj5sS6GGVXs=?XYI-r=$~6_D-NAwSumQ@IUZR&yF?=PMPGf z19UfX>5b&5LSUh>JkBRH(`7`!v}VvZ+vapvh$UyF&(CNt8#k{C;eHC}(UFmw!TNLn z;eF+AQ!oT8g`{kz@~QC+d&}T}gL40W5PrG5VEHoEHO^jHC2zi3k+AGElSVc=irdLN zE5HnFBfvG8ZY_<1QXBRTv%SIXmGg?hbj;02b+r;$p_{k%Czylyiq^$(%DackJDuOg ze;b+1^1XO0IDzKy3O?D_QJN<$k2io%_=oEfx?CB3wN96l7xzwHL5Q=Vi0h7#YD#3w zUo@C&M@eZZO(|dlt7OEPb3B-f7OC_|Z&N%hl(kia7O2E6kfK%~4LF#_L%r)UVSC@; zUZA{p-2CR~Gd&6>G`0{)5uO%Q8N!_$m7l2oMf3aYA+`d#N+tT@YJoJspq!I^!RDJ^ z*61>)=m$Z6TVo+qs^BJ<{?NFk1WI3pWDLNp3mjwE#7FljNIAWx*HtKTagpWF?2mrw za*?$r$N3&JCO~`FSaWdx;58;rdTq&xtjw^ffPLab*)4&o%jb!2X?qh zvfjf_96rEHSyt-1#T-&Gen}fDTi@2W4Vfk|=RA!X1z|_f+4q8wWg07oiPdXNCqaDn zDv_!4Y%*L8WDVFC62u}n@J^=Sj_c?|*k@il%A;D$iH#IQOgRWX)XsYr9;4Nf0($pN zVfwT}eLlLYL1AoEK7=hRZ&J%2>s?s0NUmL&bbwSMEeca&iq>e3UV5 zN7+w^r3nXGZBq8>;*BR!&~?*hNPTI8SQ5B8_vtqD)|~WM$l4;|4}Z?;YJ*wuQ7fxo z-V1q0m8~}G$j*IoS4R`>K=?4;O1KgrmUnu)`mke60MT10sG2S=yZ%!_sg&ynmK{f+;O$h$=W$) z0W7n`JAi}eMt{FY^J*3TbtOhzYR|Mvr{Pi zhbTaXJQXRN&x5m!pQ&Qr;NVm!aOo5DCviYcuxw@NBD28aMieLYKni3(aA9v$4zgq5 zK7}ggiawUU=xQ?~_?xH=ju^C&7%Jo-{&4S|zeWlk-a#rDWoLWaDbe~f=)k_7N2x%CRBR11qkafGMP2c>_HJ8NrBV0q zPO7>T0vSP>cioR8GM)Mhg7n-C(Gy{*vxQV|e4EG6{ail9>lb zF{=X;NrppVGb;rVTlD;d&A)fbGu7PbqHi9k*6ml^;;gku{FW?&cZfPVG{e%>^}vgS z*=Ir$5+wmi6I;dJBnA(8{nJ;<@_*mgrrT&Hin|w;2>+gEKVVXS4o5Lr68G(g|JooE zS_iMQbrk2Q{^9z5{$xmhx}4~Ti9dG|c-@W6iQ|P_4UW~oj8w%D)uoBGu{pQnS;>ad z`siYuvf^e^h$jt^D-yo+H{FG9&xJDXFkV+K3d%6yYh2%oKC4TYT`!oR)|-~T}8_9<2BB+FDs6Pjd7C0yIMJ+b6m35?Ij-79O%zeH) zjC|&jAX!Uefc-i1LF(r-U4xrJeA+KcdIDo1VO5=cuagCj<#5AnQ4GGWm3E5qCi75a zU5t0su-gVE7MKZbK5?t)71gHoOLsz4GZrE!v9oGgQC{GhNI`2|-v+{?9-nxa(T|+N zEjgoR;CEkh%D`)Ss^{pzUYu(%yoQpJ1Ot0x6)S^ueS@S>GwfMPC6LPk5qqP$GSSg8 ziG+EoHkJ^ZprP=H|$G z`<_^Zh^-b`{BJMk`#Po>u?jJe<~CsDutS#038DvC*cl?{{`p;GHhSd|1W~FJJ-p*Q z?8l)7HWwgWKF^JcTQj;kmpW?mkv%8O5EBkOE>bE61H5Bg{EoiR?2e05x@>Ck4PYhO z1_*cnzP}h|P06IO(qLARuPN39eBIG8DjP)1mrRsHYB^09`-oAh^>Hzv{xp5$`ZPX} zQ{HqmW6@PS<@Qoy3l=ROp<1D-q2r_TQIDv9K-2f5BZOAhF0grC_(qWeC#;XUU{o-z zuU7sdq7OIgU>K+B7(aekPCo2>h4A*=lj|6<>Zr_bM_#SrXd{9C>3%UHNm^_j37-!% zl`Hwh*gIF^7MLe)R6m@4cH5b!O$llZ%YGn=4)BGP1Ku$#BoWnP;q-WnVJAr4KA6uh zL5tJrpB$iCp3CS%#r>@Ww(dm{pinUutox45rA0)%5cL&~J-YU3RzrdVFQH8zLB8p* zcp~6;i5nVV7$p^!H@lyPQzp^P;x|zr(!B#H_~5t`U~X3=aIHLF^C~mJnsdpEC1AYQ z`SBBiNHv66hxMRnE(oPXki~>x>kVa|52ZUmofT$m8m6tGUQ|SdM2gG=TY_VofxL)P z`R1TQ6EA$}+kJkaXmE8*tDqLsmmMVGFX3>??%9`9C^9y>@roE{_;uo4%NuS}uh(S( z*&RQ|JqJqu@b&tY)zxFUOf@&I^k%)?AAd(;GGCKyQ1eKP^_& zuy~wU4dvCDPe55^`yk`m|Jm9xR+T zg?@I?jlsATN~MJO^=`i??S@!mGySrzc#-wFFzRY2PF?y4`82g|D1{{KJOIg#ofe-X zJ}*2kH6Ny69g=>~q^qf0Pk^h_+o8QFu?BeDgh;F`-dl^$-SiS1U1bGfby~Ba^~WJ- zt?`yYLji8&Sgk-H%VaOM2?RYYqmwu$p3yhy%5DOv=$nV zi0OrlQru5vzXQiw6Kj^l`4{7og%me~lK9lS5o_QEG8y)L%Dwp@BvZ^_5fUKWQIhnG zo1?#)#(v5lIt^a>_0;+|Xq*}WZ2hA63Onvn)i8Qs<;}qvbtnoNErD^K42)pR8p=TD zMz;ObcQh+5;_nHD0gZ^7WP=%sXx7dp;Jy5ctPmCtFj?n-V+yl*xXxSfs@ zzn64I1$rM1nR;6^)(Y3eswaZr;HdH~jGCwpTLT8{c{USpIlG-nmaC1xwocYYKPI21 zW9;|?uY_)Nt0n_a~K zOG=c@*`ODu^_J7$YhyTV%q>-gCMdlObWYr`MMPiCsNfjGoWw<6j1F{{v!NVMLOFr2 z?=EMq;-iDENTR8hmr(#KtKF=1x7o>C)F|;FQR_p1Q2au%IyLP6GeuC=@~Fv1H(nR6 zP0*v725cf3+;KzMfCHf!=TLEVIsgMb&dc5p*aJP2Rs`F<{-io>%e*&qjQoAKpC0$-%E ze}2hslN*CrDTp)Nt)G%+ndjROS;=m$*M#A6%!eQ*b&_ex3YJ9@h-4I(A#<350a+GMMASy6Dn}foK%_STDq581rTZN+uSL%|5 zqaAhrwF*uGVf|SjgzI7w#B9Zx39XvdJ;sAcllRY68%T|d?n6|Hi^mf}PnS_1d}+ar zNRU%6i#RN4?vv0u)kE3CjxPI1@zV95Z)L0dR{rX>k5t48;48}n>>0L^QtAjyycYiw zX;c;h7)pjqF9YPUO=JN}s+?HnyGbIOE~E-RrL|Wy{`jUM1K%Og1{fQ?-G}Q<|l8v38nWS=s_ClM0SZHHnH9J2SZJymQOVRbjvf_x4ee&#j!+8UW~6b zBc~611Dtl2fyQeg2tg0kfR^td`yg(@F{U1@M zzDr@hhA?^sVo_LL^e#Dt_)CDX6%TGortc>706(gDXnHcx5!cg6{<{aeMlcmoHiA+ke z|MVR)OP39Sb4qb2eg&9cOk^E_pyK%~pXkFp2Uf|yAR^c0zc4T=%z4nWbA*G`Q^QvF ziOThm-{8HawI_U}GW=A7;O*cxZTF>SA}&kl%uPs5=yVYbye4jLF*Gu15GCV1frh<6js0aun+; z##2LDo=Wom$dxjJ?#2JYG>BVVJ<>B4_BFy$>*?7gOPg)i+=Z$L*z1f=nGrFN*F;-R z&)oq{%_G6R7jj}{S(;kQ`A>&WkV$^Q0_3WhVwYQhI8&cb#P;g_w=j`k&9j`1jE-%| z(c$K;_lxgFO}U0&FGXe~6O=jb0=5rD83il01>qlJd&y<)OvYctuo<=Gv*^(;=_o>R@ zQ1MfLEWO;r>HY()8H#UJA~S@@1?JH9S`mq|r`2^mBHv}xH(ZNN6V@#!bwul&f!+5GZTbfEGlzoE z+4osZBIFXG!9DUik-%A1u(jufd3B`*8-?I8s`03nfBlkeev-ad z0nT}Y??lnHS$f)9@LAMz;MktJEAVyryb#;4kLb2tNe&Al-*6wx9|PmFR~FH~jnMRw zE49GBwRow1{4)!d$iY85rcoAwt5 zd5xlQw`<<#jLr8TRR_BcQwr;3+c0JK2jCWOorff;%jT+XOLrasOn|lf>wb06eP+?ZT#Qkuj zykAz5L7rZ3ybpDA=KkheG4csR|b2?m?(^Cs0Q({rpnKNuS%rxJ~pPZZx-n&ojyH~NUhpd_W z*7$z51e4vsBI}J(w}hE?s*~5;mnSX-`Rx<7iCqi8jEfEF7m9q)8iv_>gFe$aph`Z= zWF@bMI0K&T_~spBD&rk-syZ3Fz_0b?E53kwD!0sl9fpoo^S;1YEx%?-7Dk%Wt6c>e%O@!tEo8`ttd4wh#*kV`pQ*&W!z0nX)PHopc8SHvHwqW&crKANmswY^ zNzansNPnxwzDb4J0*x?7EAu1=ui9w%U%@RA?I7@!o%hLEmyaF69WUA49o#SO+B$z+ z3HX@M)YLBBq^*dG!*b(icf8dWOELGerMEG;ks5@|{2~5Zjx#r$Pjc@@T4GDE0E&@! zvp{j=6nsql(y64F2t|$6osFNFBh}K?;}x{%_F^x}&JzovV*MWL{vzPK*clG&O0|Q~ zh1jxd5ix`a{dl8JXfik?cI@=Ji>xph`3)H=NzmEq;8YSKDZ2-IoAU3=AoOKF-~rmf z5}$dd0j|0#?Rr|TDc;lj$GtE=BgM5tIH45%|4BdQ%Ri_F*1uI@RcGq#Wz<-A0iUyx z6-I-N0~l1i#>-z4tA3ld+&Sv^bAmM9)dlC}V2=_3H7PcV2AMRX((u$b5{K5D(Y+&s zCg_``gmnYWqD_KuJafps50+Cf#{35`?1-HBp(3Z5k1%}P#2g?$aC*>=!7S-lQs zQ(g}5-x%$=UL(7{vw$~BIQ~eUlSO9ba8LMN#G%rTrLYP9qpr5YeR_f(RtDgbHW*XY z;xCM_-eW=$5deF@TOy?+Bp+zTtIZ`*!(V#dUyfF67Am*&%$dlHNVshtY!hXK6zH5{ ztk4wT6ws*qZvGghN+eck9QP{)y%+b>WTLssf-jZlB2c^mDa!`(L5ht_YYTG*f@59f{>Q-m+{8GFq8U!2=Z|_bPfXcs@g>;&C@-ZcVFrwOO}_oWeCaO3ty3K z(JW1iiB}8b9)&C(CLT&N1~Qov$zYKswQ)!g0UMV5Al)I#XR16cf?USR=1!0XcU)BV zn`OMo>0Q$Db2I&-`^zfXnDphI?|bs|(0~j4VrI10+YA^F_aY4rJ@uUD+zMs8m2tpX z85_VecB%X$0Ffzdx}!8^oqGq~Et@`4r;?1v+gq`zcrG#z-=b++s`J)C$dY1W@?WW#S4X@KN@bB7VlQE+9%wn9Is~NZFHi8 zfY>b`3ol(VYfsH>*eSAQ=PWP^d6FS{>UzGyfd!jVg-_=EDJF{57+f-jfdO~OoO#16 ziQ4z-_p=5lse7+i2km|7>?FPKwTSK=mA{JMS>|(lw4wP)tWfI3;6&8vVj4ivz)||q z6f8VJv)14|ngP~JHfvag3*5IV_IQa`S~1~_eKnFL3Rqua7%#(328xFV{0f|v%P0Oq z&@ZgN<1L)rKLQ%H(0Lw1caqe1If`ligNSK%r`vju90898w`S$(*d;Fc3*NbG`~Cua zoUl5F#w6BoFHa>$&>C+#nY9dg#ZLH@imxpek_aX%M)ZH!)*pFy+OqHS2d-V~T+(l} zOeq0TBr+;H%{sbb_)6UJYr0XaJ^K{+j1~37+W~|JZ+YkUhpukw!wq#E&4<14BaH@qf6 z8!>Mi>EjO#vkpwcI%l!vwlzk-y*R%M^@SUCV2^w;I|Y;2+4JNzd83qyy7K27Ov0gpjRLe&4(_Uf|M4Mg*AufGhv zVQIEmUEMEdUGb$OI93)lc$0ZzEb_)`GQ9l#%RBYv-R`8tYgE&P(<*zgbwLo(;Z5RF zr1F?inH7&(IdODK1?%FI>8$~W5YRmGKlZnd#Rn2RDZF1Ai%@OOa=vwlRKK6_+0RUcC1SNhp5bTBp zt&fh#=*ReU8|G)v8Q(wJm)e{2Lf;Jq^}t_J+v{(^da<4L6Oxr|ttOt!snIv!fR*yR z`s%L4vb1mki~-yc9B%=uy_0L}KJlBV?{GV2H1RFut_>;mUxQ37)IBA7$$3D(VH3H6 zPgN0?ky&Hq=<=vM4UswIjt<9BVP&p~5vQHF;VP!~w=yzmcKAE5ET+(UCq7xcq)JR^ z2-_2zIj9Y|KRu{A#z0Nd*SUw?@jIT?Js*F^-SE1JMW_-{42YCKmPh$8 z@Q=;<7bg6Pib!8cwpyr90&26C|AiTP#fItWPyRpew>S0_QaK^W@~Bz-GXrr(XaACk zjqb-va;?T<{9ja{f(Tymyt876@CpY1i&p${Ogq_qj?MpmUCiQlSolW)hGJIy zgX#Vs7n1ljsi#l{Mgi(`s@YP#VIU>LkuYr1g(fk+!eQ3RKpCg2M#mh z?8gXoX)}k$H~Vr%H@Eg0nxJj50qPnEqDf>0cWb;c#8>DE`&Voi3Me0Oy76m+T~nbI zr^eO=9u%g;JLnEDH2il_UYkFQqNFcKuxw1j)bx&I`N z7tT4_$;_4Y!l^LPbKNE`Z{x{_RM*8Qo-n0M7@;^HNFTlS!{NEoPLLr%f?rQ&%{Wqh6 zWoR~m{{jBZ=U?{!H!uG(_aD)JnfssY{twarVQz~S_qT>eLg>s&Z1fAU!jR+b1JsV( zQDn;{$>wC3FgOZJ;2AY+y0v*sa=t&8=K4H)5K?r?IwaiKM>r~>AvDCyj>?uO3HTC}NeeAEk zC=;>n_mo(q>O^4EThNn4kZV=B_@3P_v~I3$Lsj*|u>5!8NH%Jh!<>fGE^tn!LWYWm zCYGZ-l|nYtgTgP}EU-l1fzWDpZ{J4X&h^OMhJhkW2PX;Pye27 z60#21Kl%kseLb>i7_19Tq1sygMY3Gy;m<$u6`us0Ue|ZSbtX#&!FXWOpUa4|@UB32mqM%IK}8uCgsvehcG&%& zjOaGHeNP@zk1t#(yy2kTB&sek)*1Hp6Sr!K8}QQUxL9V(7GP|7HOF?mKs4cZ-6#6s znC07fsK)cD#^`5%O?7aZs)eNirdr%1a@5AvZ)&4vcUU?=PD5IeAI=Y~k(fAqi1EnR}+X=x6&dmnR zF3;&frtY{?-v?4@WAT&>R91SXQ#*n4>xnlu9;T8Ota<}GMfuaRBaP+Yd!he@p{@J~ zP-a!CvOo-w(K1Fh|9_Z!?|`P3Enavh1PDDqr~*b1=@6tNLTJ)^6X{X}5kZOqB7`En zNfQ+5(gjpRK!ngldIt+C(u;+v$gzAAEXQ;1x%b`s-ap@DXZD(z^_#V(u9=;ky``m_ ztzVy*dlEd{%rkdknmxaqDSR-oLW3qR%fB(#o9&Hc_a6i$`zXzm4QO*ZMcRG7jXnXb zHJO@>`$sQGjEkg(bA*-q_U%{8qTbDoF(xdhehj0GP%U9FbMi1Ikc(=K9Hgb8Ia*Y= z5Xpk=yBBz8nVCr?L6qNen3G(~-mcpj)zfH1b#vEnVgCpJv&+{jpVh{iB0@c z(LA;!CWA9ndgk((pBj1CTvykQ7FM@+)r$tjl?>;;4Icec{Ve3(9|o819u3*CcXfDd zGMU~I`S#9=#216L#vI|YX|$DCFFgy^N7hxomy4L0gNNGq$g5T+O0{90^HrowkPI%zFKZv%c4Q;IGQw^>bu zF6+T*WGoa4zLKg=b5fIlXFpkl5a9R|OY|vzZ9(mdV<(Dpv!%G}HzYKD$d<2lVv>E( zn|z{H5#_vJPE~!@vtt_bYp9NF=vyaRx!jH|{`0Ztjr_Cw;m1ekycHCaKCa(@v7n@fu@f~E?4)(c)l&3@9 zBUwp0xj1ohWy|~S^EYd1ItMBU6y#&EFRMEqOnM5R<)rV+x!&qt_td#PxjypLg!E!+ za%OlROEj9SlE&2VdDHc4M8tB-2_FSshlym&fy4y~MFj`E@+R>iH+|Jt!Vlx`}d^X*_IU;bW!t236^2-w( z<41);D`@6cwAnX_x zgyWvrFyB>*eSMz{^unHF8)oRw;JiCNd`=__&OLhQ0BLcU6{XZYX?$&6Wt(<8bZ?}& zOdIiN&VoOD?86^jj~{*1n@A)pI&tDmuQXE??^i>nRVr!|^Lv>EUpNnyY|0aQ3bV)= z_tRIbk%9XYvZt_-oZ#2o#aXV)H`+Ia`^~qf#~NZFmx$C%xpDpqp8nlXAIU`t*2{TP zbb~G{vU;bBi~_lzbY>2UT{@NjNLD6_%Q1a`satN>U`weih00~t?uznmV%5lmuF(diS};TV zWzp)J7Z%Q~%nKV2J&z2{yMz(w(Vla>{lFW~WJj(VNuqWsnx*Jq@T2)-4;|P~+z zS6sR8B3;W#jdAUlWJQlnOXSm3U6x)JXU|9RRBPGVIM>xL^dqAzDtT&IIwp67Qi}?9 zb!3SbbvM^Zh}kBNGK{D+c5y6%i!G6qd11<+#?{O%>wJCdKe(r!#N5+3Zjs zHz*vjF=~70&*;e9Uu}zHmKHgomgvddg%7rn&0f6^MLS`(zlB7gE34+fmeEU%BR%b6p9;H z<=PtU;D^0$o-ygq^3oVTd)A*xN2{qi64hQo)aZfF)tE9l#FOaL&zP9yyPXz_@6295 z%;2Z*MID-GGWPXQOPj#qXI7B~L|cJB!#!`K>&^Ax8swp?|=v!ZFzmgGkI{^}J6=nX9d z9$bDS7=zH1?~9Wj+i@u}G$qx;^=)3gCw5D&r+HISxnhD`kmA-+gBkaokzAUhUSmUW zdxX;4V>PvC$y1-=S*_nlDCk^_FtXMC2GPguuW7e(Gg+7V>>eyb+-H2PHbIki)^p6S z?VirjGXBUEl*1|YVtsX;Jt@YM0B$Kz_y!g8riz#?zWzhZa%qay-QG|R@j(ez;&-en7RGkB^ws2a^MDceTTdEA|yTqEtFv89v~ zXYBZ%X@QABwpj6yM|VYGHCbo7d0tF=so)HG<&&|^O0g%N@a^m6O&kwKEKQFJcXh02 zTy|>l>0xe=43r;qUOme0Ai6o^7mpopd{}bR6Wbp}lOJMG;>ptd>>`V;+#88|-nnlU zZwyP3=(W%JOjjFzK6cYMSQz|>N-53J%T~h2VY+j2DAF2Jo|E(;=sbUVHMFqIm7qY% z?V})?6s|hBiz(pI+D9E{8{H^?d~ak;s&P7QKw^N5BBY?Lf};L{`MstBUoi>xR$+KY z{Tu|ZZ@g=^b@Y{6hR=n-9!kFb%}vC=>K{@W=zeqbRH1&@rB`m}D=J$<+WaxME7_N2 zZkOKgTk4OFGq*1oGCn-qVg4%SeO*rHWYX>D;T_MBoyV28GOxyEy}$dy(Wf=3=;J;G zc*7ROg?QDH2ebFyh#-vK)&&J_Ok1(=bTp_H+X}@MP7iH(&QlZ+TI_~@XMg?+-E(B=ibw(Z&rRebX@3EU-qqCzRBHyc8z8RAzK z)Ze@~@ijlizF54QcM>`ld4RS5t@j=Kp^-(QAt$-yG_?8qi9XKaD=u)%HM!VUhEMt@ zbjJ6=3fa@W8{77QXWm{?#!L9T@;Dk-&2jOvm9BPeOZRS~nbcxdz|e4&Gvk+_Z;%~3 z!@ZCgD_7gHuSd289`w9l=X&}@HX&kOA=-K?1oV~H{cCaxw0jLfUp$&BC6?gxlC^I; z5~Fvl8lO|fP<*Ia?{%H=;PIU?^7j;uzWNS9j*#NxG7}@@uz5Ad$AIk2#>?E?`ez#b z1`81`f$hnM3N6~ETw#6nZ&|2EYY%$SiSZ*F0()*}_6EB1TdQO+XDOTI3iCQ2iW9hU zf#(Y4-75}?l*(OC-gZs;3ymo;PMz6FT)oNqVxrKLiSKGWjP`HNq;MwYf6cV0c1P-Jc)q2?H%%oOON@oqXWJo8c6^2;A~Ne4#2 zyVlju`LR_Kme%#u%J)B8x2fojzCmVH_&ieRUVy*QW%DM%t+mxPo+?a?W9`$-*FjPd zyGbO4(|$_#=y%bcQZ`M6qD`_;PE^qF0u3bv0RZ-czz;+-+}M z@Ud45sVEx;W^{)F*VJ4tK5o7&mDY43e)$+;#WZgsRixm^N@2b&X9#<-aR5)``_SPv z@ct9`L-nKJISDS5H>C9Z7Qrv*#ft+X6?C}SLFREke}^ZbKGN+8z2JUv@U|2e%RiFt zN7+qN>aBaM$t%LHf1SvqR8`q&NqszMq!C6CprM*cxOu_fhulfS!^RdaBIHSX|Bv23!KOy6KdQj^ zw7<=MioQ4LpEXx_Z`7~8z>tuyOZjBAt|ZW)zw&cT?{KoE9B*fjTF>Bs4~43Su-zK_ zDu4REt!Vs%h*BvsyNQL8(EQHWSqs?rRtM`sTirujALQ^Aj&&uBe_tnF>)7x}DD=`eadUq+nf7 zb8J#ZWA1{7pD5YWt`_p5+Th{}*k+_{vJ9C6)z~VBdoI#92t4K7z@Uhb`0mX3F3MckQm>nMNjsPI$E`(y zca#s-*?YJnE$d@Q4;6}wus60Cy!3v>u`hYdiXO{$f=@PBG~WdmfU#ye<#*JD!}7FL zz;(8yp=hSGDr?h3p8gK6&z$;Xx#Tw7J(*S)U2H7243e%4FvJXJ^c_QEllZ?jw0y|k zmQ;ON8+xfxGl2=`6E@%4@}cyyrB)9evzcGUMKs5UmoQxDJcpGvzu^%|jWf62w9El}6f@*wSN{VC2HGxyG9O`WZd zk?F{}leA#x+6Z0_c+=`Cl~Tl)HlMPD_PAw<=Y3rxXr}ZV&qtlqVOTJ8$D*YQ6H(@3`i8~!GEC$>+Yv2O#b0P|v*vFi=&e5v(EHNb z`DfhKNomw0r5jn6OntZ9#QV;A>~PsbcHRd}aAlne!2p*voeO#N7~2~MUavpC8n<6? z;*wrBsaTl2B8{~b;nL%U3%knuES@4cxHT`sl0T^gS|#W&GyQSRXvs48?#S0Eu0=F* zVbcY}Ff=26HuR$g>XCk***0s7N%)871|h3QPk0t=WqR@w-Uj%OU4N*O{l$^7_y+v+ z^;0g>q22XTZTNjMtaYRlZcQlfLkyXISJN6EoKJw5@@VSQZJeCdtI4Wkq-8J7w~l;+ zC~Q+|bPu<__7D$2HI!by@uftnxS?8>HS~Dga-~4w@y)9_6(hw*y1l%a)AXBd^UBi` zRG*zvG@`=aE9_639H!A*JfiTtrFMeW_|n43h z++Z{&35{;PvlWPFUsC`0y1Gm2Lbkl^wMX@R`8&(v&+C-b#Nu6{4AsUJ@Hm&e5k7&0 zPaiYuSU)i)dq>vjiu$ZCf!nLt>nmT-1hDA`-??$>m}8YHWnJ3SZT!e}T8fIhbcO7` zIq_VT-U~h0HV0@PqJ6_UW9ZV~UCCKgTbh23S~D!!a!XnEyes8EUF9Tw8?z11uwZB< zpFL%0Xde{llQ2P!Ph&2sjj+^~|Ad&h*SO5}to4BJ$@}0x%@m*R!Zm~M?*R_MGM>PY}ix+NN72Oe5_H#da%<29W&8EmZ-mAID zlQdB!vK4;ZXO!LD86JoRkiV0dh)pOKH}g<>@|p6@`~xND2Q&F{p<~BaqRg$2Jz2q+ zJ=;1dn5_i4tTOpUMkTDvcVu2nQ22^&HYs$Sl#Kq;Z5}n0CiUg)%(G^4U-n+D;~fsW zhvdaHRHw6?Pdu_T+iDzV5_~}lM3awcSS0bMV-VRo=#z)dR_Dp_uPOgxQ zllK&-ZSHJ)|J%#fO|%7TK~k>eGhj0=9ejqneB$N4hnU{c$S1eCqW$z_Ij`(14_79`WEK>i0wF)v7e zm3lt?M(L4ogw(XWgt-fscd~K)sr{WB*;ql-61$m|_g%Q<&&R1;lq1GD_rt3=CXHVl zxY$MV)aQlI3$Oe9g;O^euLoCws4?C;9bM7PyGp+Y@;ei zH&;#{F{6-e@b{D1%X^9SmPyV;z@MMKKE|hBEdrj~N3R~8>}X0oe01{fpVyF;uAX10 zkLG5M7W)L>okj3@9XmE$!v4{Y>O~OlK?&-ET?9}aC?5>5?+_rnw2p3t97tq@$EH7} zT#ig$fpSx)%6Lk^mp6gdWp4>ZTyt?AGKVgLwbGfR1y&^c%Q-0myBX&Ce=LpuzP8$1 ztnqv8CDVor+e_@N*?wcbK_YXbi6iBSn85r+?d6Mlk-pTw)>|sGqQeg?zOT7{%NQqj z^yVi9kHZbATN%D=wVg&+_gHQw*!*Q-_?wU)YefzAwLlJr4O|`fQh%3Q{aYE%0;gi) zddoGgfVi&PtYw-%A1ldL{}w@|ySIG&UE6lz((Fg3qtA{He@FaMR{3STnykw&HMvip zdy#d_!KdrIi@Y^oiWr$TNMtQO|;&^!BPM%LVL4H{=;zUUDKH9xy8|xXR z#MrkzB5Po#%AKukNnoCjOdj1CI1%mBVG80}Ze^QHf`yz*wESI~aY@M;);f-s1C`z7 z^}?wW`iayyyY-2i5}|@ zR!*?#4Sg0k&frA0LRB8Q{183EUdeprfTNEkcz#eGJzWJzi#wXa1d$B_(7k4OBTD?CHK)^K9 zS~15|0h^c=mfIn>^ds-B_y~K$&=zN7>6=A*ecFKnFV|bzCVEOM$UB8)#0EM8r#%sN zeen9>4W$c@8$ZW)b98Ha>L*x6bCrJ$&^d(KTAh2{X;FIf)Cki)8@;4zO)BczVdgq{ zxn6}y@)I;?I~11dt3v#DQV#WG=0j{q=#Rp4pW1fN2lGcsQIft-JYBj4x{= zZNnwC?^@!+lY(VIQc-W>^Srf(TE@;oZbE6M+OdLxo-YGKUTlcA@NgaJeMoB_D?9x@ zk(YG0P-_U!KQw5u&y(Q>VrlM_mZyXJFhS?$10TOI+jTmN>c^+OBzG1NCC1mids_Y)bArnaq(S}$yX=kq(BvG0S-fs+ zwTK%;m~eYnxa1lBk)6~rmTNwbfb0$IoB(V5(qB*2A}SS5!kc*t2Qqk_#9)9$C)`Kjigi%dBD!gx`=! zsLI-!%|}JwL*eADn9lmJ7T$0Mw+tCuGqIUvU#!Z$7pDbz^rLn>I*VAs^1;T z9SMG|-5erb7`?PEr57?WYC;_QiI7j09i!>w7Y`}0MSJ8r9IRbF0R(Uvlh@*!hd#7Au1%*@OpPQBn28d5h4*@R9lWiGs zt+A8sNQjOv9=a>qgd>|dLks@nx*|2dhJzGR`spZ_b~LI|70dqIa(DZrG#d|`{l0Bq zbQLxDIkT_)wxg%Y?3uSI!F>oF3r=bLE&k8B_tzBre-jlq{>;Lp_G$XaKxq1jo%{a} z0?hZWHT;XkLCi}ZB5D|R`rzgfb=xFRMq$_QyZ_(y1s6B=3=S|Kx-Ckz8%ImVpV_6o z)LV3o9$sryqv;Qm}LHIGtT|wLm>rJv`k7vpT-4gna*{to&Fj< zHtqI>&IOPAB)ayP=3Ol`(?ksJ0sfnExwY&)K_Ik@{hwAr4 z<@hnG<*bg+l!~lhT}Gj#bRW*ruxO5og?kG7WNs<$GYKu}%e=|n^zusV5MsAq(GK6) z#C!{R=xI?-)Y}9#NgsKO}^}tHvY|mdv&IcD2-Z{rpm1|`of60?m$Anf!o%r z0ZNNu`*!24>_y&t5BN&H6jpTjFPaW%cP5DqQ+tn3kKK*-HWSag-SN@3N*Iz-VZN&Q z(!5yPW@dpuBlc=v+Qth`w$@w4(iT=WTh2TUYC5Ax|GuT;PTT+-L&cY=Ej{KD-BD*Pg9(z zs>P0*&g6L=x8Wg+AD%dUAunN)!LWV z^FTF|Q$%rvX~Qtz>-l?9%m%8QOPwxYi=}LlqC^n45&qumtRd3Mw4Ozeh^OB#Z+~VKhHo7wu3TG-y4oZGfpZC?BP20#4cQ>m(-WgyO zrSWRxvtH>(rhWU^KC5VDFwh5U9vd2Y{6t`Pz}IY7y*h@~z{ToCa`r}W%H{b>Png)? zU-GQXUYZ1cgMz8DVh=dw?J6TpO5ncXBgRkV?^^ZFV|{3cY_npb5*}4Yp022?R#;nN zv*^jJRTfamU^I(bmV0v8FyXG>org1ON61eG+)Ol#fegJT7G+H?m*2ZoDCS&MMR_s7 zkb}TSDdoDU9G6i(?iKESNn0RNkCD@sa-=n9$nvTbi(GnaxbKo&2Y7y%yxbSH550_1 zlxD^KI$066?*a>*9F;@q$2ThFY*V>J^T7WtD_=DYIOh6dKC~R@8{9S1n~_%US=)~8 zgDICWq%8%Dcb}Y+{G_dL`2cb zK+j*KtuZS$y!mRxSH;h8+i_gIuxS&Weu-}DJyYJg%Jh1!jZ{Ruw`6GPM-I0r>hn7 zU^aWtFOls14Z7{l&U3$QF{#YdtOs^9LI+b41-9b??_--*#w9L6)ia*>iUWN!iQ`xVvs=rRenqQ*SK;R) zpCQanJYT~dJ!{q_ELt(U`iiev?;GTDaSjfC+>$ONj+_1DGFxYcz9xXTzO*bQoF$9e zIvOmR6zUYBc7Er`{-N=6jf$}1$EWrWl^a!ahJK+-o(K1zR9Fhmd#}5?_1KEB#C6WB z`#0HAdB<_DySo1tLrmJCk=Ge>EMo^et}ngBPUx&z{NNXB4Uj$d_zu}dj#dqizVW*2 zKFTeBUmD&gC^dZA7~qOU72SKH1wk z+TQmyOj$zenJoLw8+pF_hjjWyr8v-DzCrtyzeZI`qaLS}?6Qr6KJ&}Sf*&#`ztGsqY;=C z7Iv9yUoDqShIe>vFe)VB7t?-fbjkzTu9t)h@aebGE%&@$uPkpnHt{PAhKr6;i?#>(tW zB_?UThe;=|R#Kibls&wZ7uH+m%~MT=aNf*p7}a{*=EKqh1~;oanZ3DX#azT>zS}Jh zQZ#j()HHLnLxZ?hC_*fiJmph^hW;1FInpS7pO=R$mv$_)3Y@Ri$=6N9R+rING4Gr5 z^XWM{Zl9NFCZSnXin_HFdeNN5{p)RS?rS$CcF8X%^`D!=;JP%EeWW_Jpp+R&!%re$ z3hBX|(tRb|%&>wP8TL@7?l8%g5EF!OpIa*vLbWFpa@&+?U^;msb(kWc(jq5iHxwlbAd2_3d zH&};F2@Dytk5o$(zgC@H9Ty85tsQVklI4oTemhM5n!uyipR?Miuy+lnB{$TszF7BS- z1JU6BkTV}hEHs`MnO0>!>N4eS)S&XSan>#0eRQs}%5Bbjk})qb0Q=;z;{Lk}O_;0>s`Veegj zDP->Wt+(stv3FOaD|%uI5)ZEm9`INdMQ$s{$tc;SCD7&k;i8 zC$Bk=ZJv<+q&xIgF!8EP9sNBy&%@*LSN2(!e=aY(Z<%qEKnKqUwuWeMj+BisZ(KFZ zv`8Sk6QvdQEO%%d?8t^ntxb%w&KOl3uWplk3cdeAVFj)!4w=XI-4(RsBa8j4lE}xy zY`3}1Kbe?cvPIJxJHN{zY1BT>^eWmNUyI!=mQNuXCJ}=8{4Xo@FGRq}UEKy9T#iZi zUecO0`^MEc-#9s)&K;rehKOiQUaC5o48I;`JG+q$hpFEG2+1C1B6W?Qu6*WqNH>lig>2DKC~wt}(rm zm635hhbHAKM)+2+$Wns$>-?7Js&i-Qj;9lrI;z7hux?V*BH+0bEJeHV8@-%bVSYQR zMhh78<1YJ})@jeCS~uz$hnriNYOh_s?T%u>dMc!J6w(W|ffvT<1gi{pYESS6NwCdu zJh{K7S7_q&jIrIsx3%fPg!#s*!L*(a)~Ia|MlY9(bcwgvxZ_BveFtT|equOl6+sb(sAc$HAb z1K#)J9)p|evpgjexlr{@i7+3sO%5itD$yjuum!FErhfR*k&8tiwce$^;%hYU%~}2# ze8Jaj;PgG%zT2l%`BCeA>Wja!Jm;%3@cJF`BLn*{r}ilE;JeTNiuhXw{~Gj{w|)Aj z2EQwmO!sL|l+(unx~GT4CN3WQp!Fv8Dc>ESW%tpPpTXZDf9h+W>vRKdG(4AaPpH*j zc49w+JoBIm!ZuU-YRJp+Vk^c?N0}qjTMCgE(BY$G>yve?u|*}V;R8YnqNTg7bmvy5 z$GS$SMi=^PJqkVcxjsMkOnSI3;m?3kT|$~ip`}5Zx-z&Y?e^GZ)x$3z+d$9TlWE%I zE^qNhHb)*GWR_P%;CwRYI6lrA$}aSkPT8C13i49(n}Zi9j7H5(>AH{1KM%hVqAPyu zL)uhBE}oiMqWo&n@RMiUl538I({gf6wzp_Yok|s*OrY%;Jw=85_dTSS>lpQgn&hu| zxC(7?I!5Ml2J*c9f*9rPkK|0kUX5=tee_Brb(R#@)B0{O0?B-MT8eOU^8oA8I&&0S zM7`jWTJH4%j=&t@683I8{`nCr`sZPF;k7}V@0{BEJn4(~Gb!G_DO-q2=Nr1dMl$@Ezh{t5KP#@|nKruufX# zG-^k(a=C0&P+_-2`<7pju+|PMw^B=|Mj@r644)`@m2ZZlxqFfHAMtYzlc5#{CNaS^ z&qKHJn*`UkWvTodYlO~tv~p6}caAnKz5s8b(mu&QUf475pb_%AgG5!}<4Gz0)9rai z^UNxl_NLZ2--2ovdj~_EjdjndCLWn)St`DgxPh1tvhoT6JL3~U8pWrY*m6e-0*uPl=;^>ORR32ige zk%tMButwJ)C7<@3K?T1Q+&Uu}vW$|`ge@@+sh-_Zo$G2GU4VAa40^C*>R#G+Y)B$~ z(t?~Xd)rgHauai}6CPtTPp_Q4 zxUks#!<)}wrsaysDmk2(-}Q>>M&~Cl$>Z+V3A~5iV<&L;8&7v=>(|@&zRg;7eCqL9 z$!=#&t{=R(X6gXVD#IVwuM^fq0uRZySnk%;2MPpNKECcMAFB;jWM&7p)5udBg&xSy zsS(w0q>HlAonFw!jOD}~HqqzEUflYUmon}yJuDpfm4jb)vFz|fEx97OvSH7qrzzWg zZS)pW{oy|TbV{^Qx%gg@m2{6)l1i~on;ERpzLJHm(=a)jvm{;h*ov2jm;np6NHmk(@a1Uoosmrz{y$ zC>W-YA|)GbxG&?jhl%#phTE?PD%uUH0LZ=_fGhPiZ?6hDK*;1g?R_E=#*kb(h{n-5n+amA2=v-_u zd_n3xeL8#~FOdF(>0&`A3dfN^*gmupaj0!UPi7+S#;SxcCpszVV7s{sHG*zQ%V(cH zUR<8*gvGvB(samCCzX1(r>pdr`6^p1#^wlY31y^i?+#UM-1KK}-gv#FpzUOqCv+bV zsY$Ygnw>bEOOM%VFM%!5CbKJ#hK`*)a=K}zuGb%5i5s(6MB5yzeBr`fn>b3Nr9A@f z`K7+3gBl&SpgW}C&dK^jlE6xLdrc-o5wQ`2C@IaTF<+~@+N*NV;U`NTdqF!W9l`fIwPOuMz=Z(IKX{) zGzvRmr?nCta~CK{Z!rpdJQ@s@_hBikaZ~({&nLZ_bNRgZNUCHD(vCVzVS5{1{KWC~ zgsA+{Ao=O!{gjEXEK998?}6Rb@(urd(VV;WFv+{C&{9(OQpKwL&DzfLr4R=u%A(5_ zFILw?Jr!d7MjxlyPl9`aV;)sC@AGq+ZJN4pJ#q8gOV1Y z*o*JdY!-+-V}PgZhioDnG3_^5KgqEvJ#cjF9Uy}r2Z-FGCj;t1Cd4BK_<_C%J`7yB$8}&WHGXu6`Gi z{$+5ZrQxf^N2Ru}i#v9}>{9)a`x>N)y$iYgWpE9ovHahs^?Y6Y^drx|%KNYLOgkGV zk!uxcT&|J&*{AUHrHpW{7=xE&R96Q2J{l}sEZICd3f6s}2YtVuY7CKhp_KJ5_kT@z zliT;mv3+PmxT;BJD1#B*VLS$c5ZK3XBqqZ@0|UYM zAzfv}ooN2NF8Ey>>^2gP#B)s3%C=%is4;j5;@)pjnXSTqr-L5{;XxQU4ERbK<005? zPoL)N{k6mJ(ozPr2{$rarh}Lc!$P*VOM>QIGuH?p2*(2tg69Db1!$5mp@;E{Dz}zf zE;MJ})IjWBHZmZlk$M3S2EOo9goK_ozJrs!AO909AaK>mAu%a}j)}6f-w#^(8Q)40yuu&@PMgJ14t+(F82udG=k$=^k_XQ}(8X;O zg~=0rLLaVR(haSsD~$Y!Q{`|30T>Joia?D8wQ|R>(7Mkaay~g5CEA>kOg<+ja`vkw zeMlfv3gH(Fj>SOaIuL0Z8J?wT8V6yV?N3S54~-@$Y!Vd0b+K4|Y7vju)!zorkI}Rj14I6Rv;hK%3f+sGr51*m4zmZqaDQh1 zI|U;NV|6?RsUA~UyMGXdEaFa(GUV8_r>zMP z+(hl?K>I!AKhb)`mipgifyYY2|7Vm90`pf{Kbshgd<-PHi3fcS0}1|67aot=qpT@u zFc1o5NDKs6tir(<&VwT%1PRuF&X}@Fr_35^s^X!6AUh>ERV=(9eof3v1#mO zA=x5?bz!5$G2tm&Wg*kMOZ4K@nylESD}0gVlH2F6IVP|@d6LHnCJqj5HQyI!l=o01 z7^Oih3J;O1A1i-zi;K(3p%wkqLolsE3Jg!)G1f6WQ5GvDcJ80+5Cc+GE)#&i z=MWe$mJs+o8sf|ZXVgEmGBu97h8i9Xrf*Oyz>$cK5Woo)3W4c}Jp#1wKh->3NB`d2 zTuz*Q4Zq=o`3QLU8Pp>T>`{v%RW0aIKrV#72fV*IDt{Fo3JqC8PRiY3W1l`+>j>G& z$)Zv7gQK(%WH;f3vP8o$f5U(x5NAYiKw!87M}h)6;UQ{!JTasXCiiP-*j{@#WMbhLKL8A9uiyK8sX$vzD}8g@oi54LH<6FtKAHxYjpl8Ba{0 z#p8Yn13^k+91_@02s9O$8ip7oI?$;>VSZU5eH1V%Xer!Y8U#_1s0kh+5A|~Qg{WxG zv!cI3oHdAj@>H~iYoZt-PPraaJj4YWOce)%qeXtA^mQadj|hg^_!Vg3sGpl~A1Ca` z&>`yfi8yPj@a6d($xAjAjz}iTRnt=l{fQ!qq@5=EKOH@mF&<*zI4B3&0g@#^!rtI) zjYs%Kn(F;5|4-h3cit;Ev5ZIr^Uq5Bcf5bb3yDiT7AB$&APnjMq0|4#`8&k}8BIHa zav`vnlM$ek{Z|f2UX39#0u7^RV9?s%K`3GbD8={AOAMg$Sf)MaZw($e7wvp|5< zWFDBBO1=s~4a>4fO~8wv*W6PbwDRx$kQn+84rQXdmkP{71pR;CUO#fwg*%{tiN*Z~ z0soN11&J{H@3M|VkP}1>pZNz1}A(mYm2wW{G8S#1~NqK z^Boxbdu@>53`v&2pi_f}doj?ygQ#$6hA@;D9$M?>k0irF7W!H+Z0Fxm5SR@Kzrt6HgEbV10o$9O2lml-nnL&v(mvKy z+X_uww2=qxO(Xw4e^>-q6q@J(wHSy~8jAuBppF>+A5dWa1G+;n6cj;<1Ksc#geJvN zMf@p78G%yX3lRy)WZ>%&{SkW@^*I7Cn*apCbs=;m0SOta6O-V|ysS8=LpH)hPwKlt zHC9HDAQ6BO2bT0;Mox5%~VVfEhyF;!h8Z>comunmr_-N7VT9jPk_8p5#MN zJJ^gH;t5z7L=ERIaLdmFD7*2|FDU*Zv_qs}1Ge0n?nt@O?rMVKZ2iRu>D~ehP#7>K zRUteMOTa-eJQ+$16cNaRI&u65P)ugwawCVN&~z0RCZ4Y}m8A|Dwhe#ON+zO!v)}Vw zNzsO)c*8xj!Z{>>K%DCURrHgG$ifcVvIYhR6auxk;1dT63Jm7BV45LO78;J@M*uu= zZv4#w6bb~95c~iHcDWrG5Maf?k+EnT5yb(+ffX{bw)4REmt(^b<$#JNVt+UiOaV$G z4FrHJ7=Z@?!C7w)#2;p=6(_;wcOSY-z~reYWZp%<-jHHQkW~W4s_g; z#Y}<&C>}ZmW>3bFA%WwFy8SpHSOgvd z3gmQ-gWK9`phj zf|x(Z8H)lmgaubhU|{76bc6OfBRGF|#GM{Q4I_uylmEzbFCIoLwdD^U;t7Vp;}CEd zkwhtDRYD_%43V${*lB(!4YRio2SX4-;V}>}^8_MSJM}pP0}f(<(Srbkau>D3xvqo= zQ*|UXb;6JzQbS-sJPZj?^l&H)&?MlCYNvL|DZhBkYM8@5-IT8IdB3_S&zN|>wjb!xaNXkw&sN;Eedd9VP?%HZp)*JjJ7d;W%^F6-?C@bc50Ul9b# zqNErIVv04dEHyPUlon;f_%5+@ToB)s{ToV&BnMmp1C9jL8N3GKfZF5t!aqG?^})W^ zCyWX~PXIwRi2Cpehdlit0YVhY9(y2@mEW-D-$dx}tC6!~nc-L;?h$u}+EmaQ?aP+4) zURDuE_o%~p83*XMC^kv4E|R4D)W}n4StK2^?+nS9NsZ*CL_84%_^k{90sFBkLs82D zRi;4?442HKz<`uOND}yaj#Oe3ivtt_v^q`-^t1ni69?770-b}Pb9gZF(4?SSq8a`z zhBP!FN9NL zTB)&Z)L0T~s2v$W?22d%-zJz{BhZ_JvOdQoO`;UqU<&J99FBBHHwPs*2NhJI8bfi%Y%nZiKc3=Zybc^A!IVl9x(jH z<^4p_1Cz~%hakZ`A_^kbJw$`b!$Fj3Ft2^GCh^E{VGew6lQ(7heh8pQhM=Ry5LbAr z^)cKY$_$Q&5a$vUUJprt79gTfueCS6LEEA`O+17om{}W+2z&e?()BA;E2NuBfFMyI zj9+|&14p3qq8TRbCc+G{{R*1{va{R}%Ru1fg={bx!XYL{7;3%H9=fr(3Sp}A5CKR- z4+4T8?4z}J@L(eg8v^S7#ZCPv7#OagItWOp9FK$>va1rAo*KzfluUcMu*gPBLGpMjR$ngO91f69^g%1V_8}4Uh+Ck*2 z4bfbyKK_s2po{ODl{^%`L4SmN;SGbU{Sxz?Accc2jUm!Fq6bz4$WkPvic$e&9z+U! zIC;j8?Kv^|huir{5KBf*fH3Z%fY?J7L12CY6WDpsI>5m!xQoC9w&$9FkAYZ{bm&8I z^j`@Oq^tXVaQospal-t%^5<(^fcZiNns~eb}fu`HgWxU zBt)~>C%H*0xtSnoLTqc|0S4wdUEas^O`ES|LF?aLMAR<}W7`$I+BuXTactVI{a)cy$hTb1seL&Edr1QMCg%!wx`{_*+7`Jb*dc z$7fIo=vfR33F3o7JK^WP98%4k4!fWytCs!J*5II$AS=HY-K>aS|FFdJtz)u>-rP>iBJ9$ zV10qKaOB`T5Op4~yejpNKJ-uB{xjZx<&T|AkiY=wMTx)Sf3^DO$vHa;^jvuSBf@v9 z55VC1aQ7Po>`4ZktE=U+-lLBFqmQG^_1~_wJ_Z44fx-bk#|e7!um^$g$WZ|%0g!*{ z=$--H2G9+Q0p@SG4cI4k0ssa^>&XRyg2exP|8<@R{S7n^f_v(sfI%9l!7Bm~Dme&5 z^Yjf8{^R}`DF6Dz$ey$R87@SwRBn5pKTYD!o|A)MXxL#?xc;uqP^ zlmQaRA_(bkSs-!%`8@Hb`Q;PHfP{bdf#@)w2oC`8Cy!?^0KNdym>3k~9PHv^YU;1d z-nb+|gO7oKfdCdN7#LBEJM9x&FC!zMEGNkJd=*^;-zfcFgvO@+GvFp6mFSQgqE8 zDs?H(9a9;Hi0OtM=ykvi*GMA+m4!+urvmq+zgd@}K$3-s3`vLvBX27tsKz01+Kn}` z(0u#I!t|mIHMp2ZBu9`0>fwX0Co;JuSb5+v&}&fe4JZGQgq~lq;l6K{Owad4!O?h2 zk!)q9P?0=dG?9I%4EKGSuL2Wxh%0jVHzxW|1#Xo^ zUQQ{JOxIROe?(f(L#TMNd<_klHuZ8wZ@Kay0PPA*dcbX^o2hDag zQ+Bt#{lX7|Ztb??sDo3BMID2+rnjOKk6|Juz!CqG;arN>4CcLp!v2Cbw;1w%lMp)A zNsHpZhL2c^irq*O7!V31)#N>6I2xI6x;+8$9Z>YT+{F1~g>@uub{jh+l}qJBxuiH9 zmY2vH$YAkqKKxnM!Nog)se@0#9B!-;Q~U6ZB7HPyT5)2KVW-W zGANuV(4i_y7sa5Q=$n}^=$qMOO0zIYx0)V@JWvEAc0g@=-c{|!zl#l|@niG$Pdpdj z=S<5-CfRsrYiHvUxyvTAHjjCrkeDgB01qjhS=T3MKO9`MiM6h)iZu|%Xh1EPC-_LM zY?e8ybV)nQ+O;3^E2^C8DlWvb+z%3KbD4c^P#wv^?@nSJ3@^6WXh&swcVKg(T@hnqzaEJ0WkD)H8_r!YIUnvB z|DMP=PSVY{PXHrqmCS25Flj)jE&-s|VJ?c6or@{rl&#CasPy90uCIXPu8%Y;6N9ri zt1t?1-xDdsI1Oi-75{bbpaUzgEu-BNr=6+4$92?%W!=ktpaYLSKZ-5=9yNAdXd+~_ z%M{Z>m3=|Bo%L+GkIWq3TouwH)9OQTQXRHLLHGJY;I=eA>`AmpOve~v}2c0 zCzxw-puBZ2d7vFn8ZM_E`zvhm6TbO@4~sBz!vjHEj{$8I6be0WSKK@oIaP=|imp#- zrEl?8=c5Uu&tlcIDPmAi|CD-m*x)zhyXo9xTF5qy9~RiP|5P>-;OE}3h~^O-ExD{1 zN+v@_2vw3`522+)=G@2LOAFiLu4HRwS)>6c3h8(w@Qq;GOyk&fL6%&=A zvAu!Ko&wnvy86L-T`6+yfyd!4Q$e2-UQB~WYl%mc9i6$jKEyET8`77lr4W_=6*+yz zI8iIrT!z+?f|Ho-`SoafS$7P^uaJSHMcRQ-9?WU~>@33CZzR!eSi&!*sC+PGzUgrh z8{l#iDxyn;&2fp7Ak60qdybvppwO%B9fa7+3wV^&qaegOwW%js*AuHjrzmzmwV=uk z%tnTPR0HlSuQZUMtAf@h%kUJM3VRN$Uk%*rc1I%m+ykt^6!2pK)f>vVEM!=ytpEo!M01b4!i8$vRgx|nsP zGPKoHy~@Zu+?dew@Cqud0!?IHjM@Be^?mVoKUzDEYul`g11tCHcd5^6II%FF^* zNhoPHlK#Dj1<^;DN2vJH3|cBU1)eO8(lB;h?kfsfwYCT(jI&kC*+!Wm#CO=)jRWDPEHA=l5km^$uD}8dknh6n&)LW%Dm;z-0(BwfD&pwpfBYX z3QKql)L0h)^?8i%XV@zCA~jYjk`)fu*Hjc6wkQO>co&9ZN-@ zAN{{R%=M$p`7wXO>vepezD(0oj=Rgck%OLTQlC~kud^y9uRdF$l(YGSBgOZD zihDAQ)GhI{tkh#jn4^xW4xDJ?LnMGzL$8V2?j}0Czs`zIv{lT*aRe_&uOrgiL-f_d z7r)N_CG-MuvcB)QZiUQ(D1T-|7-^s6UOMv!6y0WN%Sc?#KZwgLPd()fr3y^Hv>$xj%c2x2Pl2n&62N%2U) z5%R;{{zygAjFzN~Jx?bcq~%v?(N2mO> z+MNYa*K6>{dx&J ze<&Oyt*fMuwk6`y{#w}_e(A&TWUjhAWU)drbTk}su z*<>%+cp$6jiV^)_Rt+X>B2Vb{it3OL7Xwo8Wp8G*DxII zGY1Q%4hnWJ15{-j7ViXwb0#FT(b+N&{F4jrg%j!=NvOUee*G#%eq8v0c3}78gjZmg zR)%P=PJzs*WMtqB^5P|HJL<7cG=N?aTl?2&^^I%N5nh+3@X>z;e*~iBbaoJ3PEo9<|Hj(VvA+&BbQ~4NE)kKs4a7jG5 zE>o2@3rn3uqbH)Z0oG$)^Cu#VeZp2=t9(+*ZvyCkNG7&jms);C?}R<2fjp2zYy?QH zE#`DEx;SWftw!NQ`rb8fb$Z+9LkkVCO^0X74k+JuJf%p&T zGMUA7hdFV=2@bE{pf%Tx@wiDIS9WMQofeJVr?l_m%x+7btPaZ@;hoN?RUi|oWD^OIdIBRe;6}Jk@c`L# zxj@V}0k~;DyzRVR5c`9PgdY(y-dwBQH|R21pJBX;0dTs)afyd}ifyI-^0 zONqay58#D5=0MUM?65fc2It5uj@Z0_Y}O@|!3V%3+*n+5C47Uv<+Dp7NkHM96CjcZwS`nHRF;j(KR_=tPqb|bR~uh;k?^n~-J(D|IbX$r zeSoDcU(;PxJs*)^$0a^Xv43DUnONINFtvC$Xtr?nfSfze`}Ul!lHaXCN#3|=nrQx# z#z<;~?zVEQf8m@SlB09!yi?agIt^)P-V?ty>aOdhOYlnWnrIG*&DK{Kr?^a%$WFhTYylW zPRCfdl!h#;3#PdCY~*kBq-`pYPb(rD*YDaf(hAY3_oV#@q$W=xlamlXcE}Xoo@M4C zpRtNek64Yed?&LK)nJpsb52438x*oL{;0(o_p-sf2CU9v$?{INz$GAT>O8P_GCa4h zLpt@CLrZ1rA?yNw_-zMVrP4B10^3Q<#tOzG?UlM-&go;%y%7Z`($F9H2SY;o08Yf- zt>IImfa@;q#24wm9Kg}Rd1Lc|Jpwuwk5KAtVT)YMCFvHNPaf+=Js&T}$T|?&R%n)s zP#VlNbQif^M3!nraCVzSlLMu5L#5RYp(NDg%Q?54&#d|h7Wm?@17ic2 z)1+xlbRjv)N^0&WyNb^TNymxY5cV2D{j9kA16W)UH&|w#S#RVMbr1qwX zGG$>G1HwvGD9XEAfIB11-LwKp5w9bwd*Fg7^iqFp470jl zB$S7!B_dS!3iDCO`4|!ywjA^{h|S^eu;ikWz_e14QsQvQL`qS};)Q+1rq>aV6u_35 zzzwpsn&cvV`MM6qcD6y?zQ;7R*04e?UuHaJ><*FsX=sBzRti;fT@o!-=VDU#`WeCo z)58l5uA0zZ7iB!N#A&v!#}G@2wHDgE&Vt4B5hal{FG*s8HhTKW-=IUj@aY7UjM?4V zPodkmTsn4=kEqg%*SydU41tln*6>4&+BpgCRm5}i{s&}CZ(-D{xPrn_b4Av4s)H5{ zdaAu!qEF$?>V{a6=`k#V>V}gkl(cjZx~|_KjM)(FKF*pl5xQ$O@2j;eS>G+cRTS05 z))Q02Yic*^x^sWwmd;x^F| zy?ngyl+?W;>r#Ar)Kb#%9Boj{ZuBs2Hz^uKxJW7KwMYCLsc8C|;0LDTUuz!>*HZLU zwkw28yY4c7w6N$kzUxWy?krF~_v=}M=*P5%9CQm$Jp0VYvjRD{L#b4Eupr~?**y=4 zXokPV3rmehQ{YOOQgK<9G(|l3&%&A?3G1eycYw^|^{Ayri95~|-1c!^bFCL6o4MIy z#pbq)#AZ++AIML0hOVo8Mn+a@@oHUrj4jlI97l#~txa2t@RZ?U;b<)B6S{u;cMBW z_qSxyAJuJsgYrl3&v|#{a-5GZAE*xr!Zo58Wfn4T=i|BsGgjf_qGm;`HoxKBr5y70 z6G|Pj5-&>xyZ{&a@DbAJ%Q?S@?{MC$#s$xOwO}k#QhE8MjTJrJkGRxdmf-3OZwqZT zAHk)F`GJKeYAc=eJe>gT=a>jYiw`dlC-=k4F>4UdFXP+A>nObr6wpcdJbNe@!g6*> z*ca-UdEq{{jyYK3t4}a-Rq*V)yVuA)vKtW zcdd0zzhc<^5z%H%s$sH)>%%zLocY=YL&m3GCk$>q7pmZs7w932v)f?S++)c@;;){l zEwpqEC247wzxak5Ax)eERB*+Z5VHx4IpV1SWNL0dFdgLeq&%`xXD8JcQ_jVd6M42m zV3(ojDcjl6Jurr0Jbj#?-%H*Ke*AXM-zX(FE%o!h;)dA9gzUH{sfku5i90%?XQKwy z^$0hB@IFc{$J!&`qL({&nZdTIpPCQi5-#HrnEoSXzc$ERScAAke+Dkt~l|*YG zOfy<4DNubSaAcMwqGO*zo*yEelmd5iUGt<#?OSw&O=baKIv4{RWR5h$_jofMfjjTE zbwhT-his;tF=rv#U`HG(MJ%ZBFY_b0bIK4c>d?!8h~joMx2t^NI?B-)d*qoJOmur> z4`Ds7rNm4!y<}pSxOOfFCp_V(BMa@`Yo2dCHi7$+jFFe3*MgsmUyjkm>}2df7U#Mt zi3&@OX*e+6Sq4^O$;Z;}A#v#f-6fV`5b&=R~r4 zjo0iS`^e^8ZIqQf2_zn#y%RrIdj4`PJO}jT_cS-SxMhu5wz}0=*`dh@>D@f)=qeLJT%=(~c~%lYUS*QbB<+@C0P{h%r8!1!(sN`x_>9*-IA zqUVPl87qPw={v6(tKG($U_J>cAOvo8KB2-0k?oX>&LW$N6r8b-QoR zyv|_v9(o8NkEsN9sY-!^6SR;Gz9jGwe^4a1?l>hjG0sI!FE*`!;^T4bJJi=+HgcD$ z=E5-~uL}q33f-S)^lIhiBV%Dt5fV{j^$HgR9H+1d`}50nQ0L8^qz%(cm{C-0PBW`! zaEO+R=RZ2Hrmip^m$s?~#`|J3(Vu;!Qz0F%3xH_k94DCD;ak^Tk@hcK|4LlKO^jXP z2`g~;TBpSr`Gd!|M=HdCOq~fU-Cy`o!n8W&H|Wb8E-p?HgZdLFL`Q3BY2^P4QlEYS z6h3@>t|GR%*K}DF$Wc*IkxD)Po;G7+q^JDnq#5}tZ8p&O>agYm?L9EzM7lS9Tl*U% zja|e#nsUy2gwJzrKWrx8ic9f$qSzt=jzTq8M<$CoZQAcC_0Nt@O3w2Z|2;$ce2GLgBSDQl9`Pr9=>NFa2X%5IILL(IBOTaD3U=op%Y<=cpX_h zpS54hkQ&~er_tSW#4_(|2QlsB|(V+x%dz%?uUwMK)0)4wgCBDS0YvX zx>A{sYg7H6!K|Ftq_3FlSiN~uBy)>l0ztKBUvTblvakIf{ER#1TE|Ygl zVdM{-C_K#o>pM|^FO5v5e*uHOejpWl+WgLvsWBjMfsD5`I9Hj+ouOgo4%J(Y9r&x+ zF$L=P6>EODlyXMbWCLvij9l-(PGpeaP z^dVR`0(TX^*b3%#7!;$8rZ+Z#;uSOgQ*AG8Q7Q#!7X1VOEmLs;FazvlPrBs4>}~-0 zkkf&He`=Wj@KK)PFPT2WpE4EbB?U_BU^bQZ8c+>0yZYgToYvje;DqNp^Hn;$ngYwK z&d;%1Kr>dIMmQ#2LWgll3eZHZ)(!c_hIF_*QNtjvsP^c^Q}u0b{`fZa;k(Mn`0w!h z#-XCB;3Dv@{O6=5_N7@Y3QhS)MTxbOL9&8EMTv$0zlt`IT z%T-|!!~Q(QAYH6^-b>vZ>fZYu4MzXOnCJCn!ZYeOK~6E#lsI|buX0RRYrJ23X- z`ww`yI2JAJh?&>@TSMuq9evYhB;s~}ksip`#M70fkFFxTzpgdJbJPFkgSmh&o&bjj zQVkIdr;9xlD3Ns3DhA=(8|3N93hZUPse0m`nd{X68J_ecIAkSZhZ)+BG;&d4;&u2G z5i!Sg-fRR|z_5=@keDo$mpQOXe5dIS&R6V2#h)@^r#b0(#Esdl$y+{cDf(+*VT#>m6R1}2BkwY>vf6X^9F_QpD z{7X=}RfWVg%1#t{>ZBTI@uwS{Oev7Q z-Hyg4$hj+jp{eBm%8CS>@u#qJ=?L8XTdGM$RK#&P{u<&xu*`FuK|Cw{k9iT3O>ZqDfO~& zcWg3E<+_^u1+dt6M z6fhGo0e|j-g@J{Ghx^BRH?T^NNx`9xA#V1DJU9t@!Y)>K+f_UezR00sn@3KTZV z(k@mT0=j2@k%+Ddh#r@Bx;(U^{;@gyI6BF9XOdcDy`qA)Kzm<9Uy^|s@&A$V1 zmft%wujscocw3#0ZDo%B=WqXxJXHMSUlIPN4E{!Dv7&I6;!a>tEi|{0Tx+Lb``BURqlPf7|qSit+rT}2(7Bg+r-X* z?j#;smOw8(ZG;gck(Od93&N|O<8VE8mTLGyF{!;aAu&M(bUw(Mar1F#ZP;Wl2jR#F zaoT^x%M}*dJg;D}?%teYo24kboBoVyqEraL%mN8SvLE|7wyrDZWN;BAvs@6C^pZfip zp3X9d-j^IFAB9md#zr_63BUKz_Cw9U6{(#8C-5=}Y`zNZf~s$1J5K9?TOWG_Tvf#L zv3?ngIT-Jz7q<_+6sm>mCnmIJFNYa=i)Z@gm%hHfUPe@Eq<%OfK5VS;+POU!92^Pz z9x(i2G7%6JO|!z#Gg7r8C@2ZMtgkN)TBO~=`So_`wnxXOjW$5`H0zrA-Rx(T!ph2* z`Gnl3#$coQB(DN$#E!Dp^7@kM3+c&sf&M#+cSi!ItKJm>1$U5D4Wh{BmAjb||gc26r@tli}xGW6a;^u3cj6wzjfMv`=L2_2kJidYH88rW4JpK+OdcBv-B$kk~XT3RvQE3=c+!T zy8b%jMYfKYF0q0yZJ1Wa=L^zD& zK(OOmuwh!F0oAPJHpG7l{~cL2_MVxDvSLJS|HG@4E-%URA4Y z|1|o;{elBPvqdZXTJulGn!B>ppeNk3}xt?IH zAWKG`;9?`M;W6n?I#_C4>2zbuyMAI1oP9T`CZXHjK|Us76)?|Sso4u& zNDo0^guI1Dn%ifZ#0{6jC>0p3H?Kd9)*$)?PFI^;?J8&_hcT*q=6@QA488gwFgNQi zQP%9}Yq|BnsbKt4t)VkcEyecaH zIWR`!sj`JTQ_|6{)sLiRS)gpu_t_msWkdCw)3wI9WQEQPMleWK|5eE7bFRID{^HfL zuUs?Fn`CqrD~OA3?O9P^wS7OGz)xzF}^Ea(4{&l+iR&^W5QQ@Y-}8>YiUuVW$m3!$q5ZP4qE$a4OfL%fA1PrJbI3 z>%)jv2ViHo*3}YmyCC?6M>-hHtLU8^+kWv%a@b~HSN{XWt3*6_Dr@eStp{tEvhQD# zxJ=?PlrWB6#!>QcOXRHVhT)CXhds*w3>mq{aYnmrMwjB~7cVxV^DzU6a043TyaAsQL#-aeolr_r23iWh032SxU!OZqa8xM&w-62oHwBy>>kDdw&Cb$*jx@ce@WCiZkd9x)K+bzy+o(Gj7 z`w4IOG{ItW49h~k#-<;hB=hQ~j>=8LqiD*YGVqJ}rBih_i*d`$#Zt#vHKBov$kI8L zt4Y+uLKbm_q2*$M>y_677ZvT3u!Z+b-g{Yf8!sSrCk$aP(T1E zATeeSUVEw5C^a*A&#ZZ2@-3{Ugei8ywX0WA zY8}679nGLSj6%qRL)6X{6pv9#hGN0n2n*B9Sm!is@`Xow6kvmJtKDZsy7K|uw{1y) z@PdR6!SGF5aSa7%m(^=kfGi#)J&^ZfAf3LQhBr_c!<)~W^e&3zOV0e5(f;{dg3Q|Y zRpSr56GpQa4Q;|Tb(k0$%Gj^F;jqQe9^y5qU(2RMD?fQ|=~b z$Gkj@>Dx>`1LL=LI;`W2fa{0nUmci7`Qi({2Z*C7N^iS}M`UN?R;LlxMwI@9j)1l$ zBQ+?NL_;aQX>q$s-7UTbmj^RCqYv~+j>!nVACWL{)p@@ob&5IvY%jchn9_IpsC_bDWn zde_1x-?b9xB^QBME3%C+sFbnqRp$dsNi3(GPq1+-j~=8M2l2=l1*QJXx`2C}7Ge!;&yQ_}VTC z@oqSj3^)yOY!lwe5XsSgwG^@Zr4?3vVzCfE3bjIIER$z#-!6%kP3=Q_Gk@Jl#xU-+ zznpJgzwUr@!%aV2sl!m4O)JdvSns0Vx4n0n=Ua%Iby#vl$q@(9k55fgJ$U8TV9xwv zVu6BKa;TmQZmH{5UXk_9ADjeeU9o3i*YH~<-()?r?2vn=x0L})IEY%2*BabtF}y^( zTGs+Gj7LrN-ik9;#q^$w{Z;HzIf1z(e1^~NmI5&(U+VI z^-*F#P+L>4w3|WsY*S_|V@vuT%nHlJAnb+7G!&yH{@jciA7&a(M|wwibUmQDSPQ5_ z9Aq}6KB0{GII)w4zRfq1h|l$flzC=`X1=1O)&BE$EEwN(kp`s6u_`cXgH9tDF!ICt zcyMZ7hTw3(WDw^Q;7;d&^s{HgZ1vKX(iw_~TY3=X#uvx!ShhwlGm@Lr8YeIB%m{3l z>SdT(P~(uk|19>(n%ze%Cec3_`ZDUtp%h`|S14_3(vJU`D)qSOoFG5BGOY~L7Qc-I z*SUfab;?D3SWt!>oo1f)Er{b2&C&A$9{p+(Ob^s5+<~A~%><^m*<;u37wC zm|bwVYlL=J8DapJ8PQ^+u$3a~xK#s~@#_6=5OX0*UVOle;nP&8roMqPbTU60W{a4z zMN~?lEGkpOeZ7}Qiy{;<10Uvn#vA6{O&ZEC zPX3I76jz72@;X&5l;omL=X}P>Y&O5vbl$*Ewuq=5+UX{qt?N8W*sVEV#CaQz2C{T@ zp!nfjGaPHKm2|6y)`5I4mEA_@QK;QKJ|BXj4Rul>)LB@O+K`M#T$lVD3s=MdPsPcCMHr^-)@b@0{x44 z(Wk0_SZRkm4VQoxONp-XPY5sc6qPStf?5j{o_c{Duh?o#yL_tiq2Dr zd9GN{#N7-Lu*yt9e>umeI<99h=Qm%NhHLbdC!QYP1bwTW$_CeY6#KNsai+8@VG0c3 z%okDtdn^{1Py7xCr1*qL26{ejvNf-$*3e)RSU8lC-;36YEHh6laSV}GQmmfQbDy+g zw9n05z*Md8DZ36Oa4M7k60hOAiTr^!F_j7q{;`8R#XymQUtt{3C--u9#KuR7ZP!=! zwJO_n(^PPczVWc~@Dn=2R;RU11bY`S=c1SkYMW(Ch*B{^^zlxeTI$#u;0!WQnT?|F zu*dci5{RA)NgPgB`v;RbzigWGeqqZq{YKwJRJ$>*+@&>VMt#8TDXPkslV2vW(7g zHTaBH+blQd@UwFWREY?WXE92zRKd!EhcENfKX2tZ{DZRpw#9W7cCwqf0Oz|8FAQ~UVLev z4S{PCTNc_@#(H7+4LWb|0;R6GA;G4|x=qTHcqFit&GI3ilP9Rtk!^(Bbx9>IBTIr9 zT_u!hPryPLHh1VovaWhim`vug35u$=&~}p#!m&&lw7{w29zuW{f(lhh^`2kb#rUA} zs$b8TxXhm-2Lbl6xZ?~HSgCtga8;lmY*S-V5(?ZV^t#FLw#eC{5z5i4+1MP^-pI+n zI^QC6k48G9-8N<;v2wpG!M43dlC_xiGRL~}0wEufDr5%ymd+*h4H~#2mpdus?ab70 zD1FKg_fR>XXJz~A9H_+Kd?go7``R^xGmeHj<+Zx$$R}z^U5f@!fXJtY&LwS3rQ}9T zj9&`FzOYytepgT-q$tG`Lxc52oNM(%!5a0AX5G3lvEgJ%wyEU^B+)MUpbz_5-*)sJ zZ-X{?^594#n=&`5@xnJ#K{3zR+#ctM z(`~XBEvD6md()^@qH_7~vNu_j@$%yku4!Y}J3NRiY_R0wx)zQj(&M(zt(OqjX=d)_ z7IWEc%MK(5gsR1weeFjG_6$ujRc%~kv^|8OFt+0|P0yFIHSjb)q-P0{7<#v}8Ah9< zO^502Uhy4X#~74~P`joA_W#6|z$%%`Ou+A@ogmoRkkr4=1j(>Hd?qsk@m zl|I*$`Bpq^;l#^&cwG-7m%e##ZnZ)1j$rCluVhY10EMeNx9|1C(N1X?CT0n8)pd0P zgLnj;6H#_c#>b=h6ETgnMm>yI&y^5b=zpO722Sl0EM|54@(d5A!JvF4rfwW&Jp)RwMS`C(~N>ic}~AZruW;1B=oi}K6d))nyRZU$r0 zeDqmRjJlG$ZMv0|pf%sVU2fBol{kIc`)3zpVboV9Ii(|2x;oL(Iwp>vBxsZH1}-XE zi$f)95Ax)lQzK`&FnUMzVkI(Wmr_=JBesM2Y&5rwbC4to#9Xb6fE#0Jct>T;{jl#M znQ7EC)y6w#rvm)=UAp+d_vji$skK&UbL?COg+1L_$xjuc-vTOBLgT}(e!{cmQ9FJ5 zGc1lQP+COKJSyBURS@3 ze9K!!6N&$kNJD|1Hkd))S(#t|#`=#nz_f4B_L=L2o?!Y$?0+&Mi6Cbn(U(VT%x=VS~S#8@w2T{Tz2i6~zCFVHCBi z7MB-q_NO#!B7XoYf;e*dc6NasIi9Y;@*eBq>2`bFa}hIe5EmavjG5*ouC+kw(mCq$ zV8!tkqjIE-HtcDXm+9an$6ININ_!IfH%rE6T`*1+NTV{hAvseZ0&7Zz(Q<2ztj}Aa zp`g{aX|?npaTPmPJBWp)Z#%_oO7ocySd)YuJLXO%+gxUU^-X>2nMFC%YWld|XrfDn zuZVFTpTVM|8ykhm04)qH*C8NR1~FLs9RK8V6+<3#(KlmMFR{s~8?MSYZ%N~jp46_t z9c^L%$o`}0AclTgOf!btO8h$P!F<2?v$0vKs3`8o&5qj8$9Ls8>xZ86lqhgZ2CS#( zNsUf3hQS#>+gDtIcq1y)=<%h=&JR^6d$#!_s6LGahY<-Mzza6ik~JrKH^tii2BGWs z8gBB$;}vMCY3k~$c%lal?J1DIoxZqs z^8u^(6Tr1V=}}^Zw*L1q!ul5~23|R!f49VYF?Px<>K;G3rXA|4H|LMJ zC9UIQ+qfX4YfnrV%kKV$Fay>75K&*=UB02bh%0F?K5XG{${YsvW~EjPGoY$@bVtcueMi@+43tdKqS9%0wuLv;Vq4#+}<)X z>N(N%p0JJ|&a4KoBZnAhA4N-{I9-IM46S;_1rPDD)G%%ID7X(d=NoMwJAn9Kw5(UpmGbSI(uyWT=pD`sSpq z_y|D9M021c=eyh&w^N&p=68qJH^-GMI_KQcYs@?jzR9TtvA@1VRs|)ffPTnp{IpJ? zrRDkY>+NrlzUdbt)`)ix-5X7*rCpPATDbP(meH`aBmRhj>5Pt+DmC`W-$K?XyLUP# zCW3`ht$BOO$qTn!bQ@uR{swKTDk@0?6>78?i*SO|&35G(pMhI@+bQz#f;Vg9WdXEg zl9r68Z62&uj&XEg#w_MJs*iN%tQ69WPXnVO3Z}PrFD9~BhV&P#5y(CEhc0K@A72f- z3`s!wq#eaPg@%4o!+tm)C&olc_AY?g?yre0g(%Ka=8+b;4(l~;zP*6HnWhE)R1ka( zk)z6&rtU=-i>(h4!VdPCd8g|MZMr+zpS&kEsk9f?oRr4vmy$Mm1oS6%=CEY1iA}v1$H!tLtC4-Zx4CVmsz0 z-^0tW%Hl;6V?{qxMJneTV9YfhEn&W97EmLR9ez*^4pbw^J0w6Lg7__OGm{dCdpJmB z`PgiVWau?dTSmZlkic4{YGvJazy<>fdS70vj;pwVL^1FE6zODc!#;Dw5XzIN^mQN*04t$iV)ASRwH~XQ|aHJjjy$~<@jm{5nMk@RwQoID}zV@xQ0MX8KhfN@BU$&Q}`Tch2ESAs^h#zU7V z9@lYg@@QbMuORQTuUX2IPPR%^lHSg*fqqwbdf0%NOi4cP9aWmVV7kvzim#C=X2crs6V!1b_BOiqw74QF!HC`3R4(^=6n4`9HM*K z=#m+9yP3kff#>bTCHNb(g2NKzs`oXh=_Ru_=3d!+#XBPR+>v_x2J1AiGgvruWtIOx zGy%GhM&foWvKG8%Fs)wrd=&C*($d6;o3`sF9vAMZr;9tj$6jY7W$w*yyT(T= zY_1#l6s7PVoH2Q{LhAN6rBCyzR2sDDYxLGPp{tJ!*PB^&!*>`emSR$$ZNpe={ArgMnd(_{dPXJ%xVF483D|Y_ZYZn z+@--e_vXlzf^hOwG+d+A7j2k{L8Tn(%DR(wj}2nHUw;t82)cvRhAwUs)#xcZXc&|> zmq%txfAkIUHCEP30xfFGR9o*u@rigbEfa4ND%oJb8D9{ z3h>GdN1;pPY7DaN@2<@wdtNL^dk$7s(Pmp%eDi?E*?b2K6Yd230(Ffl@!3StA*bDo zf&=czLTJ&Nrg|aw^9(l&eLd+Hlwo)>jC&p{jQ4`%ZAG^8-n>F##BG;lz9kx)@0$Y5 zz)AM>YDGd{CIU`;bMb98e!D#ZPIY@ zY5Y;-G(1B^jkHJ;*I)-ccTKJ}adU8q&hRTRk|QJ@*!B!7#NTG{RuF}%5QMN+l36WG zxn+C1k~@1D$)#R$V~(Wez^2D!p?cb#`j8@ucAS3?Co4C1*j2xU7DOhElA$;<>jSFi zI<|WeWTO1+^vu#So!Nru4l8wP}DEOEx1 zGF`vmweMyd3!x?IZfmGe-J!gD7f-jGhmFBcYn&L-226=a8EM^WK4U5Z8BRFQM!NxK zKZe%ueiZJ}iXC+)y#2mYe_zbb-drp>+i8QpkV@`5>xrj1=9tra9rnUgxLjrIHfeLu zxS0{mS;F8WuC<(}zmP>Bj~gs7;SjO!xh{DwI5F)MN>AaaaWwxRmv~+{{hhl2`C0+$ ztF>igwnT~9HKpu--TFOWnEzpqXrx5L$=j0`diZUp_dCX6y1h05O$u!)YE@;&?%R-9 zw5iy}LH4!FpiDK!_r*eq)EG2XTUry2R@%7~EDL5uvHWZs9Lt(IE?;A+HAzXp#7$mcf`LzcDYrn!F$`rFW=23 ztT0R5o-P<>)xtl=72fIe%2Hwbe`tEkfH<0_ZFF&W-vB{^ySr;}cXxMpXYmj;xVyVM zf#B{Q+}$B(@8><=&)M$np6Q;cuDYtODs7dx%fCex5Z!+kbXjOh4JacUhpY)SQO#tm z2S>zuKlTkee{jL9L9(t4jz7mq85hQsN)rh8&t=YG{sXX(JLzbZ^^c2Uup$)}?7)o; ze9(gK6c*1f-9ia|J(8DJIiHk7uFUwGR8%zzR^hzp86v1lUdO`{A-c3_UUzkauWl3x zB9;hi;OQ^eqrg|xYzPH*S)(fP7C|q(V*3k>L`3kF9-9+xm=r9UdH_6CVMh)z&Fo|E z+#ywpN=F#6MyKRmoehw8YYLh)%6EFV&SfD%=q&eu)E+Z5(yBD$;-}@WbV; z7!xS-q1*7gd5Dhq+JpbJ!Tz55IW9g-a{sFqv5z4Hs*jG%EJ?}69j$m^C&+5PnzLc= z)>!mT|BIwb2@3XB7E}Re2b1&uh_a9IfM4^k-S%;FWOms2S?z+w8)lRPIO^rvNXb9( zX$%@}IUCo}}OX~wIMjMc`_DS0p`oD@tgg9yGqWkG= zzkIz#l`me;MK81<2!5@{QRpF3m>VE%;Xd~K2iUgaic(CFMi70piAHYu;3uE(Iqs;q5Kw%3O5j+lwUK*Ea z)qdIuN$2X~}e+ z>@>f?&&_q90Twf&GcmoW-u3hh_y?z?2vv#{P` z^cF2b$vrB0w*mDKA+JNl-4-Pepwn$6bpuj28^Q%(**K~qYGa3@0<^bY+~2O9H7n0o zkm$TfS7&SI@QH*e7d0v%+a%9)m?iIt3zu&^7>jL zGVmo*mLu}>c2{o&f-qta-d`sQ#Z=Ty@1p?dOt?f_iF052+_)!V8=PIgziN!39W(zU zJPa{wK=Z>{nMrs_-!OzNeN#cs#5x2ck)t)Zqr(BZ-8gj# zZl*SBb?1?(&6ySiB0^|s8$bcC4Y}3fDr_&%f`BmH^52!c`!-L0vX*gRrq@;d5<&1h zaKbLvhv2TzpqpZ@I3ujA&i3htY4x#vThkkJxLQNOvQx&`Gt}%7zhJnA%){--`c*GqqFzlt*G;NN52AHnMC zAeQE#|A{aj=6~by87Nm)nVHKPO<bfp!DT%qM3|E!KB6Z&7$?z&sH`)l z%dwiS#=n4x`B51<+x3NC?F=b+78@qwyiGZ@NM~XrvIrt|ELV&Fn+ibNW$U5al%`xXcF7r&zF%Vm=H82YWaxw>3oL6wlYb zJj~Tx^&3<1!JygkU!++|0i7#|kP(H^LCp1N4e^J^bV3J61cWjAo`$C2 zipq*W4C!LM$|1)Pl>X#IM4+e3UFvaPRyrP(5zjKQ8N(B@L6)ROX6Zoga@JZ`f%lcw zNb*o~v%+c_4P`Xo%;^@FN-@QY>?v@fKU1gf;H+?ovEo+vWu!iNg4=Qi)U>|(@mq9x zEwY-jR%p{l%3xNrvLDK3b$?u3UD0+4?--^ooWrT7{C>l>obG~76%BWO1d14uh|f*2IB%ccbK z80A}+uQBnD(TSs9Q+1CR5@hIN4AeKau|DS&69a}t#P!}0Cs9FapU^Jo2GLZyv@3R- z+IrQe(dZkwT2AxC6COEXn5>zsojzOp1_L{0c?Tt6*mC-(*mz?!Gw%hi5a<5d``(n> z>J~T=+quW}>BEHH*4&{$da5alNPRC~4QD9@f z>y9Ind|D;BfTkQ(&iPv9;-1_=I zNo(Z~zl)@<^W2$-iljDA;{B8oO$Ow}zS~==E!B(Y400zUlOR)J(`Uo&*Pw1r$iE_t zw2~om4`xlRkofZ8vW3H=ba;oSRgF1sOJ_5)v}`a-ljt&N?10WXd#YH;58_o1r&UKQ zc=;`B`UB0{3jelE(xGF;t8L9YG>g^Q!j(N%)WT{+{B=A-t!7r}mLCXkQj*7& ze$)cVJ^4OoMKcH#0h$wL2L{YWV{ww6%gzpt8e=iv$qpHH5S5|vDsp@8Y11^?yvw4H z`xmH=W;Fhq*;3!4Nk{%GZ&FZc%P?N-gjM@%=nu3&?L& zr>1g;?*JEmaZg~(xL5wYEWT}Ar#8-dbex4tqWzF}IIN-3#l>hvseuTq`S1eM$O#+T zT{JJYTkE{6*$*-wgY_G4g$`87myr@(Hz8w?ocAQkk{Mf^6%U-)DHRonJ!(o#7-pw4 zvB6#=k>fl!kDqh6wc)*V6gM>37bN^J0|<|oTf2J}t>Kc($wip7(0{L_-l?bS{=O7u`k z-pVN$I5Z4-mU~!5+W!q%<0j2fK0~3)7)O!z7q}h_=Nj#&15>$%&5M0f)Ocyb7(eES zA)OpY1^iU}HfhUrW#jN}Q=``_4eH)Q&-e-(8TiV647F&3^a@p(1twYtd|f?%MG=U+ z&JZ875K}u+2#gZ@qKzM3w>A3~ds#BckIsY529X@h?N=-^z$k$H zXALxlOuvg>qVbF6{kj}CZp~AwrtD4-K*EVO9eVa#X?>0W}KJxbGqj+ zlJ?y)bcJ+n0g*H_%x^<> z(ST-i>LAW?!5dK*uJTU`NF}J|Q}j`6cAyjA1BT!7SmAH}$qSM9mur)G{zi9~6Ej2+ z$pSUqP^Zku7eBla(hW7DXj@O|r|-c`#G(`T^J5Tk(JjJn^h4!_i{zJ1^vyPIDrjfY z@M=oHDz7~XYdOO$LN&D)a#tN;(!m~&HG?W(1)P5H)nt@zQoi`?|ahUY( z`qFIH5ORF0Iz}cUCY_X~ujApHtQw_98soNJKDP15t`C-84o2@3I&Sb@a9B~4IDs6y44QuqcGqA^G<|jsu+Yqu zdg5@QgXe-S#Zt=)#8~5oQgq!PaawXRknJ@)2R?`FFOUxLODAvD~H^h2He_d2jRS}EWvbi-8v<~f4=GAG|;g*G*xI~1CVwb#yGV%$qw z1)IVW{k|*e{sWK(CFXs#$qJt_i1d_RRn6$(L$-AZa-Rj21vTK$vy2m@&H*KwJ+D_4 z8F{nw=9qO*hyi4}tsm%;vy!iH=|xy!VlYUbU$v^S#5CQCYfNl`W){?I^nPeL0 zBWXN;W#SRz?a>IR({lkT~Y(L7H# zPlDv$l+bxLrI86>Ey-Dxy3X3!FoEP;C{-t;eK&s-{ne0AV~wtj)ZD>NvMUF1@o>m- z@D<0lUYLCrx?HDXZiZW*x0f58`S5MXFZ{g8(6p>hH=2Fdv#f2dLBsDw)*B#tt%mX# zn`g*1Djhp{M5!tXc~R=)y)UT1>|(i=qhy9Ah%xQO#0LCAyj*2)o~WgV!ev9dv=WTF8MN8r`!2B#R?2B8Ph8R>tpW7{@eKQ zB|gb!22(_H$aB~pakbD1rn$4PV~^QapyUcmBKxrI=`j4MUD8;>L z(LET{-6kau(Zr!&jawC5;rp!jhRb#2s+R~Dn0_^}ZFP{AZ`pY4mahlRTi~M`Z{nKv zewsIeaFw7iU3IDy=Pam;(tQ1^-4+(87C z=W&?pt8zNI?carx(pJF;5au=u1+9(-Rz5Uq{6a+aZzCG#;itcjdQm8)kwHd5x+7xp zA|*OqjE|fpK8e^H(;19A*e$4lM^pkh^wIv9DUWoU26n;Apx>vgBI6WdY10O@w%_cx z+j9`OC3}BU<>oT7_3d&8dyR=cf3G}Jxt-e=w3AT1a~A&K2y^$&f>DEQvfeQgh7x8x zFK7xsY0I7Fv6K+`c`v2Pdns`Rxe#%#;W9^u+i-hrxRHVK7i`0$sPMrI8HtpgdNG}J zVXPdEjrk&5w!YalFaOr?zrXbv9?*!{SqI0EDUb=@FLMWX+u(e>L1%?CFl&e?mt*af zku%XX-#ZI)ldf~cvUn@8?tQ5)o_6Kd>j0XvRMuBEDBb zLXwW4q2Wx}-<3ul2Q+N+l%4qhE>;x@$B`GR62?%AblIb0r-vN({Wg%q7pjPK1+~-9 zR%I7{+AA^zr=P*Ly1F+OO}FUb{>w)6!6ybD%W9?vrCqQlG~=GaIDCvCz?=f@dj!;} z*s8IWHxzjgxoJl>*~4ne9<4g2F;6xLf^9u>2O6BTJCYdB0T#upo}|nxgk+DWKy47H zrAAn#a$pK<-$Ik03QOf&O8~OMT}KhH32M*|z?CsVwj-lqV0b#UE!~ zYUb+S?J`Vfw;Q*&JL7Z09dy_2uL6JG{GS81zX$uuZmB5E*d8iE{&2FD<+Z3G3%brGN88#cEIvXf&KwAXy$hf06)aBg4eqUiT?BUaVu?VU<=V$Fw*jp&N7cbe@gnO7jgzFaOFBFWF zs`i$vTzxjSO6+9*V<;|-l7Bbuc<5Vt-6xFh)0;>Hl>^1=En#fijZOUuHDw%)+8u5% zgDxV4aG`)@Pm594m`$uD9xR-hpEflz4f6RZ0c9JlqI@blI4Ii^N~4!!yByx|w7Nkl z)EoBE^G+1dO|L-jfc1d5#8i~9}$ld^_#A4<3Z*sEj5ChJpYL=Xp+t}AOEpeurV}T-h zk~lHzVYNjhy+zNoJ``azoh5DF5%L4Sp8(5QriVB(UWMJ_cJiVIk`pJs-(L&OW6C`b zAdeq|YSejTpCc&+=+I?MUsThVsYqbmIMT+ptu;=U)}1RmYZ6|=>{1H>c6`EAIn85V z#JdJiuq26Atz&!$iKn99mY+@ZmUS&@m*N|_7iLjntqgS6$YEqPa{-+F{uXZ{E8LW| zSl#3#7kMeQd~I?qwNp4HtsEZ7r`V>tc`QxdPr}L`96i@_rIbsXvd0n-a;}sjcTQ(V z!MCxt=fVu&_y`Q{WJkzYpWza}gUdA}Mwb95g4pYVb&P)ip(5X&NMfnEyQ0q@yVE{( zw|F0!0}Aoe4)x?0&XAf60ImKRn6r(nAu@z%kP32DRfpnihK&7S#5~saJ3R72iAaMh z2{v#NCG``eGd_Wr;yvVTm?g9DO46MYhUt#=f1hpS(8jPHn&kW(^?9DoKHg8o31)_7 zYKsI;SX?h&{LVEk=w>x}otL`15QhFmrk^gM$kEvv-rb}F#U=5PbA|n;s6nGJ(W7Od5Q>+sZCEQd1RRPj_+x<89fnpxhJMIc@(wXW>R1tt zSXPrkv);YaRtwnk-yM?JM2&DdyaSY7VzN~=eKfVRKgo?HQ6BEJE2wyNO99kGsby&w5ZFP4U|#RsgB;F7U5tEQoon?b1@aN4y1R)K98iz153VojgWQ1=^_?$1JnMa^>dFFA}x!N0Gwbv8&@_-jQ813-2W{s8+t?X@h)ndvxBk!26uA@0BTZ)nl0r`lH zNqqZSsa(yzm|Z$2L_4X1&9~WKV;71nsXwMBRGO-nL&|bTbGw|hwU;g>kB@vQICbCb>KVs8#lz@^yP@7=#c1!pd4bjC9lzN9aOr)vR5ok<1yUQ)EpD@hlCFK9b7FTAMHVcWtUjL97 z7nAN?VExq4vZ3b0hY>S3(a^9Cg)Rz%x<_58x(J&9OcZ)2EE#i| z&~fa74i9bOd%@6XpA{H8DU;PYX8qyU+u8K7y(kp;pt${^`V^>UtMU)fG8@9gV)Nlz zKpkTcdJJLE&|}6OINNPdTL5JG7XAoMIKLL*iZdhp&>CUh?A0#|+Xe=* zfP5dV$M=@!Zi0F64S30ne1_lj9ND{UZY5nn9m+kI<$vzE5Bc%n6YY;3yECoXDv=(f z)V<>o?^BDsp{fibRy1^rg-bf&sr<<|Y~sYP!(eU3#<`m0$GfSf(V6GyWIFVXd0a|E zY#~&_c_JJg>WgiT&vo%0{c;8}*^hFXOCukBJ}|O0U_;@GbEIbEy!7UMIk~x(Ye5VJ znq9jUOC2c_BP*o_p)hIRQ`nEZK$!jciCtVp%QMqLel8>@_}Uoz&3s%4eHrBq*)EpYf}biIkvCTcN8 zFTHma0t=*+i;ObhQ8xWYK=yzZp2+q-$d2S$1Akb0H>ErCU+s*Nz$?q5p^7vYT5O<0 zjw@mGJZ#(3MV}O^twzIjX3ig?F!MIlS#+fVN<}!bKeu0M$-bQ|m6lQ`TNL@3LA$K< zXigRPFjTbuE$u28Xjz{y)Y(BVIfmC@oBJSzU1us(ee}83oq#~7%)d2-zhg>=ILq_0 zslPeC63WhKaH0>>O@YN`*RZ;+hx&1mDe10mbpQywT+OV*N<1iY&G1Vh+8LntWFRyG5#>06; zFR=KVLazsKDF#&JVPH{}Wo*KA1B;*#5$+IPyS;e2&G!+Wp~PBgsWRCZbS-E=QS$HynZXp&1Szw_^;7Eb+X zTqU>ZKy0lA)1JDVn_qbAMkxBlG@Hmoj5H1JR`~;t!kKkc%v{`4dYYFEy@^@T}nlDG4>6kF?$LB3+&-A@BGF%gRW|oqqcA~ z3K90b5pcl^a0NL>6JDHthMXt11PxyAg(Ro1dw7R=qqJu>2xWr5>t02l-Wm(NYwirh zx-hgadz3*9joD>>gAvSU4g9A_5cz-7WwV-E0Pgdeh9GCQ#1Cbe;V~$uBj|Ie>_sW+ z@1-d6BS1rg!G0i}f^P(n?<;xsUq=j7@v^sQsFe+EGL!eXM@;R# ztavEsad*_$uN~?WxS*pli^Wggh`ZFkM%v{zWC2$Rkz(lu-w%&nWP@N=OxT~j>w_K# zqycm@zd7B=Xf zql%e4kb-j&{p$OmB~g~41NsZTG)PJ4EWu^r9HT;t9IlV4>@=6P!5G!*s&rM|MNDlR zmusG|2oZ>Ha!h?mFHln99cXMhk2`t^s>%x1={{o2YNh9ifT>G6W4zBps)M;}q2p0? z8h#VAY3`Z$G?+quCE4b(LjOuiekgu|4O?1dHXm|=+VwW9s>Qy+Cfv1Xi+aye=}pY! zy2Blw=NhVHzbhN6rRwmQGTC)RS!(rS-5wGOIO?0-zDU5Qu6oKquwz4oa$8+n`09;& z+3#JeRqcMbct6MD?P@%_UoLkgPL)fIBcz(+Gfba)66v$U#08GYn8 zd!PQ2Ds9(sb0AhC4e*ue<@P!&7s4PhG&056YG)!dB=D7;A)<^MG(3&VNJ$o)v2_#v zbSj%${?rjJbBMw3K27x|hCW}SApe33BJ`~*rQZ6UcVD|?hxdi99y3WRITk)qLUvgz zWvC?l46k@I*$iZv{X~~w z7J5^Y50c`p%9EVmiam>r=baG(t5C|qFx;n zp-kcskLPvl|2=b-UUUor$>O{x1f@#ydhKCH%_Lr}Qc&6nU3vwCNV|YX7|A`isMADV zGtt0${6DPKC*}7svqE`~ZH5P~~7P=>Quzj7=ZekXVSsqie;BH~aakP`i^J3@i zSS~VQ6*0;hwa2AgN4=DE9}<*pD|nOB)%K{h#IO!k_R9&-BBLN%JVN3CP@RM>AJ^?) zjJ&70S$Z?M=w?xs;MWj8*M znX8`}9251hDRA4zTX`(NU|(VHJC2Oes+~{Z@H}EEOs-xTZgdeSS+%0$S)=m1k-yHn zwM0$N3gwE7^)*a09SOM#yA|}Y0EIW^HYHtw?=Z8MjYsN2=aPQjW2W|MGA_7=(6-U< zR(4|R9bElJ9H)7wc7+Gr7Ak8Eh)emtjp)TWW0*|Vf}O0A1c0 zK{x`OAnUZc!3hdCrR*%ny4JC5nMw#LwDKNRBYlZ)!4?f{3xH<{ADC7SJVJ~;nMIbc zIaU}1MJUBDVgBg9k9^trMgg_J90*s4!~Dnn_SU)oSG0pIO+rSp09i%Phcej1Xs)4lC#k+Ezr4XqB z{m6%qKeeufgEK=B&1L6jJ(T3AxBNR@WMkjhImU@&GQ(o&`v@v>XMXOU4jLt!Z<4Se z_gS4Q!6!4*K`CCr0W#JiBYEiifT2(Dvs)&$ozy<{*)-kMtv{!6rC9t>u1*OL<0$K3 z&@3vpcm-!%8ORbd#bzgYeH~f>H_Ps|0Xksam=*|@RU2p(9@op zlm_CpUw?tG?H(9Fnvib(jXobi#Bn`DM5b%x_&=+l9NyPd1JpAyKBpmIxxxJsIU<0Q7?H}MY zAoumZ%L}kQ;||l!^eNceejTK2aU-{v{Z2Uu111svj>Z+iET8=c$dVyXEEZK&=oQwp ztHZs#-_xy+RQ48A3C|%M8PB|jem%YjFfd?AWQGX2Z@oZ4mBFayM;JBG=jXCfPP8c3 zZFv(Jkau`n#KYwi-_-T;$R%@=H&Drlm!c89>7}U}R82;P9j@&-^mSG zvr0`8UHXU=?V>=*v!_LV$p)AS#R1;f-MpkCtbG}dOtO1XK#g5b$x&!Aly3?Kys>?4 z0SiQ&3VDO`6WXEg(XlVro*}#vgFzUid(w=~pOtB=N*Mrex4_D?=&bDyDs(>jV!qaO zzXp6&57O(3|W}2WN1-uaWQK8dA;+CPmnJZ8hT6YZ`0|sdIin# zgjU7H%j+N#DXlX)nKcR5zjBL9=5D_`8*#?PGJ#WBFO9fn3x`vp9fU%frOQu3l3l$2 z2Sq#UE`OmH<&?uJvP2V+9{H(JRs{>vxb->12f89Hg9_ItK<0#@SrVdkJ)9kl&QbiCOM?QOo0Uv5&!(u0nQzVb7?un1PexYST zP^ntPsYVlRAHvj>{fDHEaBYIY+FP{qdO{OuuhV1t`}!YX90G8s0{0lcY|0Bw_C`_= zH{b9L&@BwyxhTVS`MwEYX6JR^1@lCdm`tNC<{y0997dp6pMJSnxwTItrAj%2S=IrO z0aQNfbWKRv*&t<3RKkPI%R7pC->f|YLltgZicX=Ufd|g&v@t~2x%RVrmr^gvXt(Yo z*)58SSF+UtOW4^2u;gAPMbZd5?CaTwB$n+BpJ$@f0 zvVjwt6A;I^qNhCeCU)Mg_v>H@ilo4wNng~;n;qdq5OH!{{Pb(H>{pqACtd5tkELdh z$HY`If?NbaL)H^3;ucvrYvAWkNso=VosGjRn*cE?fAT4)8S!@c55DBQ{Pn#|XkmNi z7W8XypMObSX3i*NJSl!Ff1Pa8FQi8yM;iNvPm}LC>eto@PA*wFhRcbYbu(Y*wK!>6U979G!N=ft8jf_UFpb0mCe={gu;Se^$g@v5Q7@UFmC8;x z%_&i)6%Oj-P1Ej7pWcI0#`q~h!TZ(_*%#EhkuV^7Xi1e#F9=OXN*&~{^iEFJJc>R4 zTKwa`0c$dfBB0v)0JxZPD{%Ep4i));v#AL<@_r?H-dztMElzsh_I7YT!Y!{U(tZZj zJ?0|K5B|g@EYr^h7ou2=h8#-}XmP_9426YavDeV;YW2d6p@+aogNs9Hp(EaBV=-mUb#4WN%lXdYGfzKq9yE*jG=QynsEo`PZ3uSw5O=e;5^H`RMZM` z7}u14lWOG*wxpZm&+B*RjF9g$=3S`hcPs~^qRtp2sZr2wC~PWg@dM>DJ+{mw?@F+L zCc-PSzwd9i)6wt~Mmh%u#Uz!@K;#dH*P+kbk`s=r&scmE`)DH1;&d|-3+}#8``vtJ zJ(xktwfa~_nTaC63p-in0Yx9!2OBE>36!fQj}s z*N)GI^dU6%u14eTE!BWu#}`9L>Y%7CyS%pwN2kB8I}XX+s>F)vU&qhVwfD(#l_6(! zOyK(99A3{~z1Cn?_@@kgTW~|YI*(D#Sa(`ZCI5lw#c`r7ft$d(HwH_uuDewKwo^Sn z_0}6tNil#L5*UVSC*%f;YJU3beZb$;P&kl~Stj2ewQl%EKW@oM-8J#ZS@e;4U}6_w zJvgUrExfVXL}QIv(NrT`m1v$Ak>XC8#o()hnkMAg^?~}X&Ly=+FICTrs19J3It%{h zG<@*gXV_op@2;Hit!M2MMz$-pdle3juCBge9!|c?R4AVP-LJdv7LikkEmP|Bcq9Km znAkwDW*j%Pr*)=T*b94phWXP1X~)~g+Fo!04~Ct3-_1pS^CL8NhKn@y&OUj?JhD0EZcEF=<}OyKPrE{Sn1A>sv% z$*VVKm(p3T)z2mlb>%fdpkObdK|=&MN+ThY&85FLQivntcKt4} zv>inenQFgj9u(YD-4CU{nv~(dfi{{G`K9jGwdfs)^=)%T_pkA8oBa~#V6Qgi0;`bT zY7tF$#6t+TdC~rTs$mvk`G!c+2A6_-i(eS~+lLnZndmEQm`9{lk;%mGpYsW=0c1x) zZ6$`4qO=ONV-!nQQY;4cLXpc;+tvTWDId)sy1Su9PcZW)g7E&3k?_EmZ{0D@bvX2D z)`pcNhnL$mG{jP``X@}di1l)N`h2j9CVs(6E+ft><{zXcD=+W~2Bk<;taYgo<*OY| zcWKm|*U~%;dX?HWI~btuI&WtDhOqlO4FNdcaTiUW5Yrg1aq0db&l6oL&AeBjrg*_# zVgK9bCtPEy$s~jXfag$a9nI+YQ^mKBWiKL7S>X0dF&?0Uv<=ozk<>Jovd%onSSa z`;faUh^jsB%l2NyHNp;&0`<_bHn3vjMb#02U!5Qp+PnGRDg1v<$A18236C;*9=+!< zQ_PUN#Z)FG>6AZlGiCXa>ap>%_2#FMv}s;PFsu*w5BNG(t$pKs&JG>b*LsuyykzA0foJvFJ)%ChO8`v?M@S3 z;V0=r>?6`agz^4f|ATG+0j^SeUWJwOuJx$PVgqDc@Uuxsth)I_Q2nst{w)9M2ecOSqhkC<+B{`Q3rVxQ0R246&+juUvZ%>B3y^Qsky@&!+RFfP^w zfbuKDpS?c;f^ysd=$FSc2GCcaD>g8?d?Q&9W(}faR?5&Fc5!Pj*Ac5)CLkuOB&c)L zS~;7LqMA?`mcKri#KviWtkcCMFKDZ4a|j$~0!a387>?MkkMeyS(U; zy-PMRX)-mj$HDA{6Ag4g@5@oH!|5;v4n5Tl_!O>eD4{*7E z$0LNCwETz1f@Np=0TR4s{lS1)&Rpr>eI)`^HU%Jjb zJfva5WPGHoDnt`=OU_V*s%MEFw?US$CNKq_PLE$xeF?+L=<39d52C(C*%~o9svDp` zN~z>K=rti8p4?#x(CTikmoRDF$Wg!r7QYH4ZFhkKG~<7b9ndm(i#Ov(q->EO2k&*z zApujnoZWN&e#%~!+4@_1hs;1>n}r@<}{CBy$Vog~3)!4v^~Mpv*n&I)C}D zqlf#2LrAK@_X*T2eAGvaF`-Iyh?-=Q)+M2$iLJ({lSO~P{wQ9L(#GKQ^z~Ne2R@41 zrKGXD{`IFRjnnrHLc`8Af$_LJJY5x0Wcs|9`m3+tdyh%DcvM_+|Lc)7cb@ufH!K^- zqb30hD=nJp?CG?WhRouZ1I z4$H06d>UH~@aMoTBM@O>PLE0PK{-=gGspUdbCbQI%j$-K_aLjFSXN|F&v*qQx)b*3 z#7#I~GRV}W)7SezxwqhILM3&Amb?6ISx(9ZI}U* zwnl#@OnhmOC}#~t=UWR08IIJ!oS+jj@ZJC7WOy|rs1+iPCa1HempY98FW;CrK#ez0 zIyxkz^$#s^_=320N@;vs8OTnBKmSrAi=!_`pnPpMs#8G&3M8<#|H2>LBuLM_M(ge=jD~HBlh!_$ zkZv%PV8;U4n6!+(%#fZYNiDetrsr`+6wbW_N13UIdU{5rAq9j8fzasLCcRWUQh{iX zq93h~Cm-ZqiBoVdDe|zNQ#&eT!Q=t;po&YIb=KU>vQ3=6{t1CvX=OoJN7=qAOD{+J z;z7GA&7YXjOvcfO5ozzoF7eDMT{EMp)197rtKecD$Cuuz^2!4#Zjnz&WwJ$_*is%!|;2xxn-WP4^5SQ?Ad1qzdAkZ8`ceD0*}cuSCx%O&sc4`X{!M=Ogx=P8UY5(Ox13Z~(4!&`?tVV+V5&82;l{3y( z1)QB4oWHfj5+-*XYdyQdd zDFJi;)yxu4GP`xjqYM9M+=5E+k^G?A3`AriTK#rxLZ`!6bM(tFZ-YutpxE{^bd`;p zri)d&gVXSoG+o7nr;>yE5)W%e!#ayZG~ItQ*55R#u*8L7jQ#_J8`&S|_G}6r`~Cx9 z9$QR#k}!@;Q72@`@@TbGLRYJu_RTF5qdEUa9|mjCgW0A@s#UGe=I7=>!!CCK&d$@< zx2wQ=|B-O8R^prR@zncD*$M-7w1Zy)n9zv)`rjWdjtv?jup57fEm3x5KHo;ta*bhG zFNoNjz&=}_Vf>t@`d=@r^8CFO9=#GwbFX3cq0@qzib;jJ{J2N;5w}9ujle6A6dtmx z!akUnI7s^9&!DiujAJ7^m-F`@!2jym!-5rA&9`6f6&wa^q}{~fu^}+>`L=zdV@OlH zeIlM$i{_PnhOUfSHuZwsGtO$Xh8Up>`9vt!{0H!YYJiRL`i34tzhpWCO zpF(di+e<0JwFx~9>!2KJ+?R?EF9N-kmGsJ%6{!~rz@BL$g)KCvz^m@gO0Px#OfM2Vtg3BW9z>a%wHnfZ5(AyV*S zPz@z7xKdcfdJYs-DR^%EC}i|yPBA)2VSBd%)4f#n{w=wz5i6fck%fPNMc+@}-(hWj z$RgQ$kQP^j|7pIszRzyVrt_nzDOstEll&|9m=v=2@RevCf#TpGF7je*5X3^1GAw=5 zgQTm7che`oB0K%APpfGI@Sek6M6sbI+kDn9c$?|zHRel=$Unf3r*~Jv4KFu5ab?WV zK1Jgl&YF?%FqZEodvB!WlQ$Jzjhj8;s8PNV_^aI}k}rL*gc~I&oDd@Lr+s&}@7HjB zOG%=D;qO*@%Zb1SnE8A1Q6D05fi7*a`t^?Kku~z6DhLI>E5sxC~}q z{&!MpouA;!SSEK6hxgg>``bkhh%~d22cp|ySoH;8QcQd;okS%{hs}`KbC%AdWPz*>N<1k zR9973wYV1z{o4vm(F%&ss!d>Ztw!fRI1>AoQVkrs#?s9E1vnR=#(&=>avEOtN<)g5 z@*C2DfmgCXu4idAI}iht+b$gos8}lN=Cmh-026zX3=Q>;6jQl*Ln_jNFT>6Vo z3XwI*Ql#&AZMAC6iHIvl#`}7)XxXt;uCjnJ$%fxrF!UOXr&7YsW((rox8A!AyBfbEPzev*$W!F3^@mlM7 zNJVL!ORU?2T-z~AzTghxt=5|NKJfg1ZnO{oZ!PHI-FLTcu(HrLL+B!q*8 z=Q;Vr7X{CB-;;T<1NvBc>d;#ij6vQ(3hJ}lXPA5?)#tr`0TZ*u+Xo2ut00QpiyTe# zy9-ZbYjTf^J0#+PG$1}y5WnU>deTqY_$Ln%^8wf>_hNc^pznk__u=qOCi%veZFHO{ zgqKNY_7&n0pGjwNwgd?O_yxy@(R4+QM<@qc;*qdoV5Nh?bB*}`3e}#WAiDc+vZk#P z*>Jush)>|a+8>^UU3fJ2Q8qKZtg(`}=loAPAq5~?&8qAS#9}-=(sIJt$O`0c+mtHe zB<6!W=}!oKHpxQ&{=Pj7TeDazXs+k^s%$n0L#$TgRTc3MYiJ>fmD{1-qDfHYDc)7Z}I?kkuH5OXG-ZN$0(IPOfzHG=d) z>0{ATSS*bxM4?yh`3dX3pLX(#ux;!*bqhpW`(U$++oJ*2d=~sCeH56NNwX5lHRxiQ zBOFz{4EbB{fxPxzs0&DP$$6bM0@)03(=eKhd2G4ZHsi1{JuDJmw@-azsJ7bP?ei_) z`n`3PmPJy>jnbSIp6&UP_r)XnAW|TUQ~8RYO6tA0cI}F14dTyKtD82cOVH-Yb+iJ$kaX;! z;Bmdi0D>0O6TMacR<3yuLZNwq98=7CaZi+tEx$?iFh`|X&)!>c|6m0&Q|tzHSV|1e zt(8!mkzz}kb4v8eAodd`-kcSjBH?dnk;;7p8 zz{}>$g`n~h|M{MVLmWH>_w=t*hf2&?yO(sk#lJcE^~iY6Y(!(6oZ?k7 zH-+XogVbz!Wg_z=*D2jL0i)`vdfIR>V**Hg!iMG@c4ufGB=}eoPvhQS%LvBEr4Rf# z?=ApAzkf#B1>Q_aOgaHzl&-DU+mXU8AdMFxlsk=iSbs*SV5E#2CcnucVs0KE3FugC z?R48Q0N0~YG+H9C#&1wrB}M*SoC-E-RuC%()9=rGb^A0A>{Pv1wNNu*iOCtH%-N@v(#nUYisg;8_AzwZ&A()=t<?Ig5~%d`XCmbrLikY3sfy5#te^*j;o5xIzqmtH=8R-b&!}EkD^lHN z++RD|x;p+AK5;1*KS~o(ESu8N{ujFR{9v9X=kjqlP%I$MxLtY}jbA@rW&TrZ(!_V? z59A@t-2QUJazO2<@gJvd1aO4bF*vSBOel`#(Z~e?yfXpvy-D1vD#xb`BE_+q0+lUl z3MIaJdXkZxYE9(Q=D73mJCD#S8&Lo%h02-sFrDyuAu_YBjpI$wQ%BH8*>w%l?eq?w zR+*m_*3w#f=gm(>+kWc3+{|HsgOplC_34e=jLNo3jYGM8{k8<~OYu3Hpk{rwA z1+lULUwk9DH!nQ!99i|pXl`k36KCwS8>a=oC#&l?B;VU~>ryo-WBT2trH*qfmR%DV zKXuw%u)o8n1vs;!UCPb3hQ=XWj=6In5e^4Ux``#pf^s4WzfhO`_>S|L-&H0sTY?@3 zuFSaA^_DJ?{Q4c^RGFXoXdk{t>sXS6+;4+|%I_48UE;j! zRdGG_Om^8#molYS&H5sy+;=OaZ)j1~T!yk}0}aI@4p>^1;*gLig-a%MM#0K*C6s!y}BKqHdy$M!tM`973uI+ri7Y50|H>&9k0I2B~5j9Jo2e< z$Gv;Hr>vrq5sVyO&Cs@^`%=UkZ#+~$Nm|%dUO9uZsQ)fjNqt$HNeN-;*UtNTlZqXV zr5|KOlM%wO$yc^Mf%dwfJiExa7P50tX1Vi3&=-R-i^hWV@9({G8WR?2Tu5};e8#|{ zC7yR=pxf?Q39p1PB(N_5L&W6#xOKm!S~qREdz!mK<%D*l%SV{XFCkxi!@7hIn0eBB z&3<_4jJSMGJ4S)%Vpk3ogka=RX@a}zMpYTdjrSsYfwN)7X{)ur>fseeJ;A|$Mixkj zF$r@`P9(yRWlHg8$KRlgFtG&emQA}`=Kk17@THa<%Sgm>wsp#HNzNLNNu_{9^8-$RDMqS#Y1!dI7^Dh4N>U6x4wyouTWoFQA4iGuO z+gV1-y}ImRuREAPH@aRhXtIezlMz?S#c$!L{e+-oF4QO|FR+b7nx=W63=J96ug1l` z^3>VTCailkm@UULd&ct3Ti7ZF=>P(*Dq&5mESOVqg$9Z1N~E>(H}?4E&E0=$*s{xQ zP_b81N8b|VgRD#93(EKlP$j7a#c~00t-3gnd&V9sG@33n>9TdASX%iwO<*1OPJxa@ z8f)63qvU8n#0kE4!PAKJ*UU@OwoPvJcUmla72YN{u!(up9KZOT!vfM2u~c|f1$0Vk zS#=BSPd3e^@*TA2BGg#>UF7BY@UEppq<*3;5|bNzO?Ur1ms4gP5(`s9tUm!KF;Ifo z>(;zzo!!S^kc5ql-l(H^w9KIB*lCH4gBE~z7h=fu<*{1K4junrC@WPM9jxmzL zW;Bg;Pd}LhNd^JeFn!_~W-`Bn=tEqMt03n^K7PjN|c>!5KLKL_? zYkz><7<{JcKR)z!diD@VAHHfFI6n)RmXg{ zef(yv1A1S2|M2Y*>Gg@emjTmnJ0cfB&^y=m4~WfZPIQaHT!bXD zX;SDto5A^wY(E6V`R`ni0N6M+GN@GyQ)KD>!l0wjw^v9dOY<)vgzJ8_ot;nx3#k`! z=ZmZUy0INtY7dF~a*%a_SOC?3ht1@8VM96B^xwFc4p26`@t0mb+H>c(;&F?Ye^1vv zzlo8bf<`|5Gag%$cp-3=)H{vvTK0gPs``h_E`n~zP@Q@je;(|}&P|0#M*q9+C@opR z6ZWPcR>PlSO-kkFEFKqznH_3gJXW-~vV!n9-`pM1QYwBuU{-D-7CCocUjPH_0z8}zr&=9V`kttDKr$oj&3?UJf<}!7&lTrZix<{>I0J%m zM-z@rg0WHD-es-NQ~q=1;S=jRVeg1cHJ@LP%s6whMV{Y*@>> z{|4zz^bj5GB$MLL4QMd??jP~f{FHreAUD!EKfl0cf!e+Xd55)!eGodW@8Qg+9sEp% zu~~;dK|KYw?tKo!PR??3Fya-Ro#))JaNzpy>%tkONV$SEEisI%Aho%wpC|-8Vfk~b zf#3RaG6=g?w5t_Ejz${&Is|^^J$`U(Q8v(J2ZkI6(5_fuF2D70tpAv{!h*T(iitQ~ zF^FRMnZd|D`6}E9V&4Y`SAxN6#q_CcG6^DRQe5`A2bMWFe^Qg~QX^w)Qt)WD zk4rDRp8B$yTw}WQWTWi|(N^)d`J#_PTT-NZo>c493rxYwaYpH`e0c=9P6cL}#B4gs z)Pfw@7~;HvIHcA}gd>co8nl#f^irWIXR)6dKUQeM@=a5Xsx6pQ0?d<-tv7O3sjip7 zHwDF#rJDR$2nY2=EA_aprV7MIZ;a8wt zwueB;L^5q12y%0er7sH=H!S{%?=Q2zdrzX&5~OQ(x11gE}w1W=?LhJw(ONp?R{71 z9I3CbY|JnX$F7W?GO&v4+s2SNOSzNiWE@#WmftjXEf<;eNqZF9pGd-zq4`EBUK}GE z(Jy7ps{>DAo#b2z)K?tM4xBbXuI{FFpSRw0xqcNBNb)-BQP!kjM73jld@*#Vo;KXI zfu&a=h1E`@iyrSMBUL(IO(nePJ}8hrfWFf4D7{_@?82B!M@$e6hjW z%3c7yAdHGcQM`b=95=5$+hwdXyP{r3IW6T}$_jhX-rpeJVX<9D?bFkBxWmNb`2N!Zdc{ z7>v*dLFEiSq!p3IL^iP%fiMCR-3d1#?{R8u zKXlRAmJA#cT>ehO+v23y>CTX4!TEw%Wph{Jnn?jtoS?8O2 zE5~1r^EMWG$v@9E(Ro>l4V(%wVukt`Z>Q|o4)rmWtSkl@bp@v8)#PE$refJxdp}o# z$>?K{uLa@$;AXaDX0JUA`={W46jgJd-OrN1>HJM}j_ZBiN3Vc{Y?ympxDIxb- zyl+h4FTlbqo_v6E;K6KgPDk%)ZS%LFg5m)&TtE)|Ad_F9Oyxi#bwRfuzkuc5XIe)j z1FON~49h$i77>$H^QB7a4<*%`(Fs%to1U=qhpc{t`g*GsnQm~u$4FR5$pv7N%AiW^ z+_0W+s8SV6>dt#T^qkQha`&(KgVhcDd6^{650Ki@#Av_R$y_A;h7z(iY~{iq5-#PrKhm^<0K?< z4>dqr`%4Fee|0_dx*}=}?9DFM{OXLs2_)!xs+SDLMTQf!hD>!Vx3+RAK)BkpYa?v( zWDNy-WS4V(rss)9%oiA0lFEd;BavK_*I3V!!X@ik$x{-#eEX7*i`&$xQ_Z{s5k@@? z3Uiy7XME58Sa;{2iYpt2TN*jMInEzta5)hqDNT|WFC6Q4$N!Tb37V;{#eWp} zF^YOh_;8kt#zm-FUuzGKb1U_i(mqi;}n+lq(D@Qc28ssXg9t<;-aDw!W)wMyo@KD{` zOr&3}MA3yk-=I@rPXWOpmY=wT&kfRPOKSz%T zpTh|IW0{G71U@B}rT{`=!C_#7cQ6x7Z&(D2S6)k^C?hyBk3aENa81Ep`4?t?tzRdv zN{O-X>3)-+`bLVe`Peb7?!?%ui-cI zoivx*RE#(gZ39gSr8r0FU}syM7E>xS2l4kuq>0ZV{ndx8Z;Q%*tGlra9uIXKy8_@9 z>C%TH9{fu2N>9s@jsN7eN9+-``^Z5?$Lm=3LWkZ4VgTKTnf1e33q~oxd>Zo^mzBu| zKwLOzE?7Z$j;wFQj6JIUw!xmclOu^CJ(ATQFIlT7rBzDJVFuWNw)jd%_$b_%=lYpW0P9+Oka27oaYzlsG^bFy+Vh`GE;IMm%w!WsY%SN^-T4FStXn zuIMy4^xq|LRVi6eBRyKta&U}MWwcDv5wf-O=Ti3bDr^AuOCR;YPx`APCSQWEWg!$^7uhLez9N0Szn!)#sjI_Y*@?dD|Z6Dm}z7nKJg%6$;5 z8*?o#1hBxt3Uc3I?fE?X8J#|^4jBFmFkAPT`!kUGL}n%~-}p!l`Y%ElG24DTcRRAX z7?FwlEpPot*K0PTu)lz2QE`a=*NC;`vk^CoCW~J+`g2>aG{QHS^_=h{T4~2;-fy2k zgIDPPa6%~Vz8r}Vs<4McGlWQ7@+_;H$%plyu??OoUx4)WY0YL=+6DC^EZ&L593#j=$&Ra2MqXk-#W77!j>Aea&A#|JKgJfaN z8>qQJSPk*qj;(v)&$^K9asH#jW;F9^{7;5%&NNTAQT%BKGX|!)i(B6T+!u~luYs?d^GopS$c_?Uc`r<;J0f`d><=EJ)5a}M z-#1e4i-DyMQW>K^CVv5u&M!y1ub{skF~LS?P}4lHrz`2x>tsPt7JL|abYt&=5&|XM z*Xi|@{Y0np!b^q!pWPbDPqn~<}y{(IXregmK z!0?rx>3p`mB}X60c~#@caSx%)-hD=kys0#3gQ8hrGg^851d7;bwH0LGt&du~yV1tm z@(N910`*oTVUfKSW2mZf^eIsAziom}3MrZ`a?Keh_p9(CoGB84QuP-QYNWgHLSS^? zuvwOLZH;(ZB26a~)dxb%8D)n)ZGE9R#?(YN>3j#O@D(nm6Scv+AzDCmSso9k+b_LU z_jA{hFVx-akP@Q{qT6)m)mlbhc2pzCGPFAR7GtmLVbDJS zCf#1yXfgbGb;^*$7n19w4SDep*FEg7{R&7=M)~lhO6*a zM5vGNyJzRPj!U9-SrT)wlLDko?vU*p|A)MB0~>8!Y30CR%#ps|7We+W{IfIv)&hBD zEOU=W0ca+|n`w(e`yW16k!<+1#9}}_VE?dSqfoQN;A7yXYZuKMZKr?;v(=W`C)9bp zmGWkgXJG87A6rhCyv)b1Zm;GdysB(c$*%ugFC%#&Mjxb;SPZB)Y)b{DYXg$|ReZy; zKW?3_ny$PP*~L8Q%Rp?KA09Fmln3q=KqB z*ur&o{~Q|ln;ZxB_GMD4mz;(@`hQE3f8`IGQ84KE8YyfcQx`>2NKGI7bWMJjGw1-bW(kmWhu;;q?1o8ckcmH(%h50WybR=}@ z$5$->FWr~$sYiM!aZoJ(%<$UH5u}hh@J5+_#4Wh~4_c9bDNsq7d?n)lq5wDNS|xPq zpFy~J*DA4-{}<+e*7rZ?fvy@#+CQH{(NRDb^-6^FL4X93(%~})lg%Oy$vJD6GI7Kw zgL}!Y6Cv`xo0)gO=a6cKU}W?S51EZiWq8V@6t4KWHkp0)C%Co~<<){TMUA>7P{1-5 zI6PwDn@&d{^$gQDnXdV4t&nG98-Jv#KdN7^C81C93RQbZS#uPgEbl_jn>dnB_w}8jL1hSBx^{U+$e?KiF$L5~N`Un+hD9LyFQ6Lvir&g|JK~=RMfRq?OH0{u?K5t)Hj$bBjFEQG@@IC~ zCQnFLxTrAe2MxvNo5nNn`ULkclT-nRVMjCM%kSk}^fVu&g6hen!UqyqiR@xeu{!Y( zJ~TZmUap-*Bd8tq8Z%6iE|OrG!MXvxQ6?kEGG`T-_C$u>;ftZQl-Q$<#w$~s?7;2! zTo`G;hb!k%5VK5MxFaD@(JXuZg8o(EZDWd2CZZiR?1)};YST7_zc`EIlKVG_+4xhe^?~1V}x}+F~Wlv(@8*0()97ias=ynM8-~u zu?2XoVS(Juyu?Y{6y1eHK!vavw-gp^-g2sfaSk5w^w+~TiS|k~19z<)teCZf$ofTP zKkJPe)|`)vJtcw-wY62*kflnJB^=hNP%B;dVPu2AW=}K$rvUIV?;)?}d!+Gax#D#7 zcwYWDcfJ$QZ^{;e(~pl#(S;l5d<>TRtM=I-dRbCJW)O->VZT>OICDX>rdq7poRJXYd4~hBBv-fUWbA=lvfM$j19wKZDB_NJLA4n`HFtl(_ zCnL5Aa`Q_IBdzk@T&f6($KUjr4g4N}9Z4|rBQXF1;a7grEM6(I=NWcGK%DWb%e?5s zvC&Dd#Xlzq*Oiq)!PX`%elhU%%oFYv-^i3&^_9-0xna=cCHW*eYY~Y(sv}MEUz9IY6IqDJ(5XIH*!& zX~R+=96>06Qou$=);1)f&@@;4Qcmd;yZ{@u%jmrbe1`|sA+?|ITgkaY0RlRAw30Q3xl44&PXpO-9F@djR51Helg#f?@65_S9V;^287p9DZ>BD;Ln$=293vFFrFRzFZ3-Cgo5E> z*{qB{*;G8?Tm_XB%! zHZ81Ku2U#&yQ2+vk0jnbV!P?_)=O70r}b5kD!pSoP{$`34rS%YY+ta&h~y_>lLI|uVBfm3nCHDpA02dE1w zHpMqoZt5)ixtdM;K}!V7S3h#8R4+bo0>g&e&K-BYGqbl@iD6P{H($=&^^mEy zM=51JRP3(HZ3$%-uo*T8k1Ic|ImXzpW=jjN=f+^b^2}PIF(u6ybU$*hR__PSmb8l& zn^eXwxnK4URI3Ti@3~pQ(Kv+s=kkRG=I`SS{u%=US_$Dk;SSrnZ7Pic)!k?GMX>B2 zQ_iN=c`f`Zc7hvE+N&m?+lL;#y?hH-w<<0Xe&Ov9=9-=oR+GywCVFS1h9h2ort36IZH~sJ z&IIt>V}myewQnL(HU6KL zE<5bEhLT_-urPZkf}I*UjA$z?6d1Z4DI#V15l-CH29N#=Qlq!jI)QcE!C@w5A_GA= zi&j99Y|)-pTlBp~N}BD}LZ{l2*jyxUiPWX*2sAKuSZ_xYMcc#R$mD09thKc@4cn5_($G#yo>kq!vnNvq#zOZu zOX@UA3+Hi+k%gW_A!f+AgePcVyxWj#?J$~MPn#H?YM|nB;V6Iu!?rqmmZ4~9VV)_a z0B-0}z>enKq72glak_WYSzLYPn*nATd z0b+S6N=+)XtACfsx9~=Gsc>Nx%V%_;E=-})n`X8qP|_5Kaflq9xU0Jnp1|!4X!j69 z(Dr$!FOS2-6Ou-e0*x(1C>HZZkk(#8Obpt=?=;M~<5rP=bo8k**Rfq4UC)|f{Cv7F z!!Dv)t}>p_NY+e+j|Y^# z9fIu%Hp`4Tb9=i#lBpl)!`_63_IiX(jgtEngy4qnr~ur+JQ2WCt$2y4gdnZg;J(0e zywJ&KSFHAs7xlBJbNbiNpE%ekPF|AP$^kC z*jCU5c%STobcnVJNtfPKmsuzR6^3$#d)sD(Niu2Gp4yMwmU`y@cn&F_vKFSMj>&(+ zhs>zI@SWFR$4Q0J>2Zy3>Ps;JGGT}I(i0HOQcmn|xs7t*mrK0d+Sa1r5=Q_h@zAE% zu&3N)it;U+O!uizg0E#euqV5I>c)6h5%bK1o2RE7(;?W{S~QDsF&;J&!)uoji-J$W z+4j1EQ=tFFfm~JPkM{+3UpkCe0c%oO8p#;{5vy6gj;!gdk)GW07RE1A0HXuICFrIy zy{d#X<9qS5>epTf(X@6*VV!(NtCJ4)spLk*o?jJNccW1E103fqDVj0}7tNUu|4;Ai zFgPu%b*WPn7B|G1wiuamfO)^D3Kc~euaD^ZPrh)0#Q^2E^aHfn6kver(wXY|d7o}G zef-OSUm=HZ(~GTDoR;C0A_HbWyETbF&Z;SmDdi;wyrwbBR2??5T1JZV8mvI#PH6uG zm5WTBcC49MAbI?cT2`{ShkGP7|HW+2N@hBkMt7gfv}*B_1uR=`Y(-K5B~<>K+ejNZ zfiMx1SU{d~pJ=!gz#+aCe@@YgBR`}I;4Sf1_(feyOKZ-It$~mSliY40uy$|n@H?cN zL;~D%pAK$WhGY%2e|gwixZifuAUcBE$>lndw7yG16z2Bbp+!&!KitF=SlUcQo)i_4 z)xfm!nua(@n~V$Y=d-9Q3*A5EFGjVrv}*Wrz^esjhbcYR_#PR%dhGoLWWw)-QRsdw zQ-pQ(&eO5LaltX7%xX9$^c?H`~qg z8x>N5eT5U40g!kA%%|OpJbcM>R8o!0*uxp?1=xP;km@a8kx2XgZe6F&K=^{h=yLT~ zju2)ZOO8l-MG#|>k|&W1ou?3pLtalsEfKWilDWN z(-mm?D&9bgeQo?uu_--QepX2m@_CNuC)_+>xL|`wC;_}}e#dv%jmC6}aamPQAXR=~ zqp)?yV*x-MXx7pJ4>Q)x%mUs20(in2X9B$^_=B6|8pCWJkxSAk#ucY9oZ9Yxi!qdk zs|bYaEb|iz*wv0crrq}>iKX0fp4qTnifUHE38<^b@Sn`>ZbM2w_scD`8+U0(K!b>s`iBz8Z!~Q zrdHZjhwy{_jdvS%N!l8;4p7e7fyZkzmB2aF)6b4Ox0@0IRW9^f{apJ1%cgixL8Ch+vL+IoiSfE@8awsiU|^Q`essWkAk z9U@hJv}QhR-$=Y8_c1g6lcu=yURnAFaq7$TD&`S6(K+st*2@is@F0t7apasfYLWb2 zH&V!;epMP74WFkpz1^1&mIw&A(K+14t<4y=m@DF)i^G&_LNy(%m(rBCmX;Pgjjqh*!G zD&hI5G>VH7xPkLp>l*nY=5{RPW%=BWvQ@Kp9Woicv%JK^iQHf?XBSUCa%xYxd!oy?e~y4?)tOnj7!YX&h}b>=T;&!g!tiY{`~V zHuUjkU3Pc73JgCnPliT?wP^f2VgJe7+l>9g)x)*d1@>bl5M0|Chf>4-sbe0|49-Mf zZ|JZ`&v?*SYv0gaf;u~=p-p}cmKwrfRbSSnj#ZPbJpp=a)DGkF4a9~fqjjZo?+@$u z32c9vi;aNq?_336!^3fKeH;esf}+2YFUHU~!1-&Y@H|XlJzRdDpzNsNsCUFo3tyqa z_MD~e7xOeKHA5PQf*aw&T-Q8Vf6W|X%g&)J|8hf_;#?@)LlUV!V~@}GD|943O#eoZ zZiV2YG*{vrP~<*2k+{Swn>rz(C6aVfCv&oI>bZK=(=+y|X$|g~1b}1iD-33zzkIy-X|Dp!?S?lVF7FU^(pbx{cbfaCG((~Y# zN7=HG+k`Cym$qc`+;)5txC<7!J=Zzl)GyT6Pn!{(aIE!_1P7ka=vy zw+MOcv!(-=Sinr)Y>r2-3>K%R8jL@djZrIlmBCayQ*DMZcAwi`28u0Du>YLfi1#B) ztSt0c4~h3SERUWGX<-R$2$@i~z4V7uWqgKWGgn9opCt}7_I*#lohU>m=W<#%NDbZe zYK49rMwdcvKGO$hPd0uX*}DN*cW~zYIwDHS=C#trMnN29%mezW{+4Y9@s(Ha0<<$V z@;p2BYUa(q$0Maj2tQPrJMP%jEx5xr3eK6F%{ zG7R~kIwu-d4S}SvPg+0AkS<|WqAmVyZGW0iu)?MRb8ic*abiK2-ps%`sIHb- zyR2JlU*6Yv65@%;a?Ae5IOU6ckK)a4)y(t!(vxr|y2J9<&uebGECF;Rd0%oK$-dtF zYR*$P%u`L2n|r>_D*41RO^Kl$Uf(>vB}rqmxG;|wQe`mhGw~Rp&I;opJI#YC+k|uG z0AmLYlb1>GG>W=wM*sUwvF-?4mKE+tE;?D&_-?Wuv8{I+%Cf1%8pQp?CH3!l z2qRLx!ThE#<0eIX+D90NI{A_fs=cxP`uQ(FrMi%SIFXL$xR0SQWX&+ZAQUc_G0wL- zsb_mySOxLYb~IDlMa3ZF!~V|Fj~$e!in?1*&L1lTm>rciZ!s5oc@cC@6uk{xNYXf? z?PuGaPZ>Qb>LT2)VzNxZMroIbjaKAV{@5%%qGpvoO>T(H`2u`B)+8oHhvm|`&oVcz zbW_O_Ofcu7b|qaK-RTH8`6iFDS7h@RmP~G8r*eeTyoaNKe25mg!$WH?_HLS`@cM;25yoss-*R|53e<8MhOQ zo2n7NWaHt^Tl@ADgcWOtG;poE!j^wxUK7Zcq(7qcIqzJ_VY5IXow|#lmSeUal|AbX z;-LPLf_ogYw3WaDNNP{SexZRmuWOj8*O>#zLMZ6`=$Y_v^TP6+IVx6j{@4UGXM`=B z+h-k>cVK_~63|&2?pjL8N=tr%u|er4RJZ(9J-;|>m5g#^(FF4{&01sr!0N)zYm~tq8aLdi>W6qZW}XKLbrx8d(|VEP@N1&-P42#MXjE zA;3?&1-x|X!>RS5kB&9LPhboKuJ5B2x;Y)hc>C2}`xg*EBrkRpSvI}VEXOUrxW5>I z)S#QGG2N+^!E}=%$89k9g1l>ucmR8_xsME@irNWg8EDdNwDqM|^Mn00DmVpPc1_Ve&w-zNKLZm6 zF~+$$B^1kMAx(6yNvXV22;K!snRu=H8GJB_mB?n$F#au{mWyQK_;ZzS^(x0cX3ksh z>7RRuQz#dklO$@6B0){@#-h$Hw~a=#v2X!g@2i0p-5kXoBvr)+zmk)KL`s@m@&j5A z=uaQTp-k7{)?*0@Mo7EUHG}6mQKYHe_V}6*9Q5ubd_f@>kcnkne>i5fJ0L;&n2t&~ zmGfs5Q5N3571D50PW(g)&Y{sj!?ep5XX5(Qt}&j(*+)73Q?NiZq;2-<2Q4^k8681m zVRckxP=C(-LZ*OO_nXRBM32&{>AezGpHC!j23`V%d(xTk_aq;FD90c#xu)4r(8G3; z=n-m@G`g?;LabN2GI22C$_BTYcwnlt&I-q@g0q8<7^u)3bOnpv_3b0QF0yLYhzYLog|%UDG0Q9ZN7a=S*} z|K4;?Z~SA~U3tY^SAFSN8-EUQ^r*+Qno1*B3GsS*)XuKH&3vOczfahU#Vx0n*+4Wg z0K8{&6-5^57KVcK)hOp2WHC#p&2RWwN>L_fqwgy>dY#zf7W4=xX{PEQLBE9F;@g>* z&mwj1&g=D$z`KAPDl_@bKlQ`bE*qubbcv*;n7Mo5P&{I^J+sQatfzC&{>WL`5t@LO z2dM%glXo8$ZU1Blk@tjtNU7i+Mn7xx@xAe?Tl*|PM-rr@8GSE&^{F#AQGEKIQBBs0 z6uug`PT|>|42(zJNmC3TOFqQ2m?p(g25Gq_n$Wz5i>=<`Eu^fqE_x|8@FS7t*R`WP z{6p0vPX<%9C$wBYUr{KNt5xarkV1#5ARdEyiZ}H&)2;~Or`@Ly2P9^p0_e)o3w}IP z#=IELg&89d(dm5K_%p%qVcZAHbL&k_GFoW*=Qgf@4EG*HIp~2wSk&^5e*v21xyU=# z{hVq37MEd#VrLB-!|0Qf?kl8EEY_E!v+@U%Cc)L!s-nZmi9Peu>%S{ z7#NuN)YM?xSVn2H)M9TEZfAI1?Yz^d{CN1tUCi63Q1s{R z5TA=4QO8Ya4*ZE#A-#-@r=T~zy}XdM)Q|v`Vo&ctZW`*>AIv$jt+%1nGIYg`Qmru; z3ZNwbv0}YABYBOqs6tp+R9GY_%s7UvYt(dAS3DdK^_cD#Yj%cN*n2+!3=E1Fm=b`Q z9iB|ME&zRe#%6<_L&IjVOuaPkOD;Zc74@k`WZ{c2{qt6Ro7VwmpDgzi@hRT?iE7;c zY06c49PGaWvDL^@FHtU$%b6;Q2I&VW_499(3{@E@HO8kbf2)g#!@ra$h0Q0uVZi*p zhr5Hjm8)G8gzpbbhk*|IpA8cpOI6vg0cew4w9EQl|ADJ&kf;iRyOsK1iYNoVW(=NF zFhZcS{Li+Rki_FhO|=YL86T>&{&6cuxu}Lh(9UmOi36Y0otB4JR{nD|#XswL$bZ;* z*ug=~!;Ji?R+p4VT!Uc#01s`6BWTHVOWrP`!x4IiTz%6XuN;6MXkc?%=83Gh{x1!Y zdX!Ar%Oc_;CeUAK!-D*mSAv~q(9^Jz>CuI0kjr4P}zsJcseM0{r=!lK z(6|)HB}K0Qt4HJLR(v_wlTRrp3B$(SwsyRJL?bEvpa<{x8$f?Lup3?{J~IBhyJsGt z2pV?tV?f(8wnb!yyuk5xAnGaYG0iiRp@Errqm?HEW8^#3_|F+r<$f-5_{3|!gM{U< zEwb|uh_oE<#x4CiY%$a2yDY7AOTgsd*W%~d*lIS9B|4#fTM_yj#cnAd1X8E#@?Z>q0$i&GyHo5rs?&IkEUl)*sQp29MfP&v$A#1iCisHm`g#0 z7s)goq=^C916QT?gam#?W*72U`U8sDov35mC1V^xf8uN8bLIM~_G2(zikuo4JGe}Z z4zIOtc9S2~UKwb1=xG*OeUWaESBy|r4|~E;H+U)1>r4=mx8(ZMn^W=RYDk(t` ztF0Dyz2G-WJUx1qAcOLP_Y->>Ft(wG{utIDdisi5UR9aSZU5?l>fvi5RN{mk-;gT#;DJ3IWm_z z42cd3WPRet_{9rWm_0u6!?Vm7X(etN$C|C(mo#S5X)tIFnC2>HQN{)4AA{otnvBp( zlN;zpv59}qz**(He-#`bNZIA>W7l`xxM}b%cD3YK+4}JpAfY!kGfEo2$IS<4BNmul z*{b+-#M;F+L7(1asl-LR>-XLa$ZQf{VuntusUeganm-O+Q^PpqM2^{*t@spQpRAq} zv{9nErV<5dXxAb@aUla6Zw=@7%~UASasSyx%yo-ThB-Icysn#9?!>wKz)53VzPRH zgO!1nK_7@kLepK z+$n{1wnmIRQ(83hc+b!KD4}NHE$n7V>6tuSEn%4f zOzA;BUO*zTyTbLy`K4jr0TOL!9(>8cDm{5zRw4|}x0plOEvkWDft+ro2^FdrA@`_l zo}lYHA@9(@MN%=>RY3+H0%{=&YwW7%ph?)6TXK!rI%8{IyLn3J=|BzaPWu$G2EjdU zZc9p`ww zbtOtbGKv^6}`ATA2_G@pHsMweB5Fq;JB< z?9v*QjVbrxX_S~-jFjO)?h?swrZEQiIRT`TL*C6bc#Sd|z1tzX>hAFlS|iuqHRLxO zWMBm@=R`PdgSDNtu4l)*mAB*4_jK{TMznt=T zKWaD&t=XlgyNem0_e||BZX`~j+rufZ zaEfG#4(Gke{lBXF%D6a|CEmpePSD_z1b26r;I6@g6N3BVt|2%CcXxuj1qiaZ26wmM z=M6dM`n|vR;eC44?oRh~b#>1$@~`gdDpz>Oq736&pz`R97O!Y?d_Gw`YW$hyu^V7% zRK@MjXS?Ceh=F71j7jLf#$*VVf~fU&n~sulYZE}nMjkWrm(hSJAo3xh3PScTYEISf z1t5WiWO{f_WtH$2ku0D4jbq+bzB3%eb-;M2vPc+!9yf?%_wj1EN&xpM$^_<8cw>)t!KsX z<2*==>)(_<85cFVyzHRo7B6|dP5!H>t^1s_ZW_!@tCw^}dl;iHUem9Ou3g&o`_&Ts zlWHD+y1IRxe7v4(ML=eUqOUgSeb%>y5stTWncRf#!yZ{U#Uli+>O zdgULnzx1~m41uN>TnmGUebKDet@-*P4)X5j#BWjb-g$>3y^)U;$*$glqtCIH$(WBn zGyT#d;^y%s`b0i$sj!t1g3q!Ow}4LWBf(?RzN9z27OsgY)bleDY=ro zGGU-o=JnfIMRyr!RFfjhtvozVMy(%?d~A%WMw;*I8(zqX4i&Y=cDr{^%g7HC-~cQ3 za}|}?{gLYnymdS|9%OVWrlMzh>R7WSZCOm_!)ITHR&A~{Vysx|W^z7eA)>i1TU6mK?Ff2D-s1(9${qvexdVPKPWb&nC z+^?{hcFtNssByD5^gSeF?_K`O9R*iLGC~xgpIUm#-PQAkK}rj$?7PId;Bgi;P3|0y zOKA4HAvAV0KaO~UYiSpR3+zgVs4ek|(-&X;6s&egs!NO|lngoiWH_i)-&yobyinJQ z7B(%?2s=5zV=M6`Vl3;7tV(2U6FxUR*74hPxITUPM%m_aMrhT~pi}>_$H0t-M0_e% z92G5f_e**uoI6aM3mqY@o+W5O{b<;@iLs7Q67pg58|inr1w3B|-s{xwKaY}#nKaKh zp)=jY^{OJ&dDmb2>8FGbM0K7B?2O|e<=L18;_F#vZ=0!TV{Cr5)!!`aj^E+1@mw;c zRM=hPA6_dDVM#W<^V=LIA3}&7UdZ;YUP(m$^@b%MRUxuDr?@EyLphX_5H+bE;uhiM8###?#K{;ZC-COlH*B1X4-k6zSE` zplcG01P~}O&r~QqqiFkbZw)sbtJE5+=noKUpcppY^bVsIPv&KifHHJ~va>HE1wr`@ ztpo!cVVUDZXtjj{Sa!eDKe~Kk{Pe3<8G}Fnpx^fduFY`WwVXs5aV~LRxjYSLw6p0o z#*7Rhx3g;^wuG!5#sz`Z0xqLfef44s{N;+s{B*pCJN5Mo8SOESEi6o##EKw?#@QeLA!~TG?*wr_wA(-p}Z9Cj~c&fVnT4+%hUC@&6 zi@+uy@E{Zimtj4`rA)2UTB>xC6adyK zT8O`9D~q(q!NtqZtAX3bwB-6i8D#@)Ls5vGrNYjza@vip4a># zKSJ=$MVk0WhW;E{wRuPVC&K$qT(W39)?zOy{|U^z9X4w0$SqbS-0Z zYHBp=n~0AG8*1ea(~46)$!*5s)$-hM%`-Rj{J{B6Wf03S&6@DuyBD&N$f>mae6-5X z6m*v-*t5b9BFZ6CWDB5XhsV>hhy+|^C3lWdtipcFFmQUzY~c1(gsKejsi~~~6@vm* zKW4;{YG0yj?VfEl5-(T^>DX&;x zWprE153Y?gGQiT|ERzw;onX+$e`2bgVfvs8kWOBPW1MQ9c40e?7J?h6oaeC3ReY5P zBe`684a5H+Y+BI4pJf;r2Psy-VhEdvzf-Wf*r>L#RH8Bb_^zEP4+R|->(>C!P7C)O zsHv-fJ@Tv9##-*Iivp$%5&(&UVzjC!aOeM-U}|QqleQ@mQIG85Q~TB|sNtj1fL=v8 zF?}Tf=6)0Zh55N6jJts8wa4(`Rnq(cVu`o1y4CDgiAW3y(dDg%CIKUMuIf-5_0gKs zRwg**!m@3R>!yzxHDhV4Z4kZ583~>Go%*)IY2>Q(^RqJ~R3`T)0P#c_4E&pN%|C?n-b@-Ipb$~!1 zflZ3Mi}+e)nQk^juSZEBERu0IlQom#nZm6qHbrbtaGoyJhi`#6R@pDZvQyt4yUS7! ze}|_jbD|n7{I66H-kNewb50#1J48?L_?-L)QJdEEPoUg~&KGC!@);7)>uPxAGo45X zwc*W98rki96qNXr*vLlrjC9iewSk-&k6mPXUh!|u7!a6d2bdfdLD%^0)&1wr`VU3# z&dnD6+4Fz=hTPHo*18dipj~~-F@q<{2&61p2hZbS`|w%vZsVV+B*>g4-p2|LPmTzh z@43b7K7WEilDKVE4k~!6k!LOc@ATvOptGOCz5H?UD2UZb$uj>=QMmd_MveAif79|y z5FCS3Mbd~3*;%~uvFA~_Eer5@b6&jfN7eHKA^oW>&syBg)Va|nct~ve(5O&;dx*7o zF#~rABcJ~h$wMp+y@!8RGlWNvpJ`Tbs8WkU07g=sJq~pZ)sCiBMAVAD|S; z9Syr&o_fUKkfn|f{*<|#O7`7JuN=;Ht_#}P_L=GThn%CE9iAr+fmJhrs!VtvA2UDA z7*1+A{Bb#zxbfm%)u66T%Rt{A4e#3jdz=F>^<5>j%`$z$-oAG)*bcJ0CUSo)u3Yd8 zrimmrC7PR$&k3&Q4$fu-ZHIz=*D3QcBF^7sd$NfL#>q`6q5ZTS&}@a=!`M^=J~+#b zB^MWavQE8m3DAz7@P|=e2N%|Hdy2&f6;DdQ+I@FQT|W;^ymb}|+Vk8E`yi##nEF`Q z>XxSlR2W+0RXclKM!MC*ky3qC65`WVm?qY#C|`XQkq|{~xp@^3@Ig$@=IZNw zi7{U@=EVmF)d~AeVokc@YZ72QfcxSu1qH@pGEW1lM3Gy&>#d^Y%K}mT5R==mwgQcL zq0n?_L|)#X+>lkXnVT8w5=QmqPab_aE%M@ zLo?pG&>Jprk6^^M4S^9w>U6(#hu&uZYbkM;eu9a)X#UZ{QnyS8i z@z$%5Y!G|6?vBqI4&T^ikM?zNBrPI?-_49R5QQ5-)vclR?sR5z)JCtQBunwL?{ZDa zI9X+5X^Q$pzK0A!TE1`gj>K#{zl6A+sQ+o}F~u(>b?CmMYm)J`BQ*Y}0;i%Z-!zc^ zU~l5|x0?g3sk^!(>vJ28djT(a~bk63UnEeA-Lyf|SGQ(66KJ?|dI<`3`j z%dlI<+^=zP^f02d5!a}`;MxY$YYvxn$z_#1c_#*Ly_6GPfQDOHZDrcemdZz@h zoNiL-=GnZYhvsIY`nkmEkmH2)O@aOB;U+kwf!oprxFVu^zP~aZDROAz?MiK4G^oAv zgO1Xu2VXxK=F3M{d0MfQ<5;WEhLz*AW4|&o?)1kkTCgJx)}iK9wU@%h$kzBdf*$`` ze`rQWxn_BmD)td?6@*b{-@GTPpSsZ}-IJ1vcL(IoKJ|3mOfah5Cjxhw*5`)GBn zN-12u_hm9Nmy{r^pGEa2zQQw9?#`D(y5kLBqBCLX3p@#h(KM6-htg)_A2Y_P!+$7T ztbju(Yp_4Ep*=a;){MPgxFek>m}ro5^$F@Vf(4nBS3EjL$`9=|qr(V7PNAAF0xq!! zAyGJLS3$73jO){r7WB-6zDP0$iLF`RY}BuP*pLXK10Qs&VW|1QA%EWR$d^!=M$+0- zz73n%ireR6=DG9?oa3G~fzC2`iu6zHfydQeM?I`~>Z?Dj>vAHdmK_5)trBQH8P#f4 zV2fktbl>TpS(eFEVR4PF@1)Ykl2?>7iA>Kbma7ytx!t1?h={PDg6^U4TVJ%&Se3)h zPuJ3pkSQEsl(LKihBN!((L+m3Zs(zSQ(TkLNYHssB`sBeFtR;uJ)CjT3Hu z7{xJFz=Kan$bsgFs z(je**ri}BPH4*9Ha_8`d=FW3g6X9hO=DVl4wL|WU;ICYF@@kmuFB>ts$vlSQ2u3|b zUqg@|;si}i7b^&e=?ZZbi-q&$cIuSvB&?3X_{Nhu&ARYc*6|!8^Wl*^gP%RQaqG7} zon4chZ5(p1+h8q{8o5^FTSHT*vlmaPtl|@{oI5qt40@O_q74svGg3p1X)ad(J_^GK z^ceWPz{{XP1#wULhCOkTyA2f&niIm$JOq`<*M=2E*vvt^jCt1?Fu{L-q*1l?Sz0GV z1a#hOzz==11rQFuTA)t>`~MTKB3kjlh44iF_h@GUX2t z^Vdx&`sOAfr^jS|$bm1;H-xT^8NsOy+hKkhchOykb@nCY;?!>1F}6>)W?OA5(BmQ? z&7V(N)SQ=`>oN;Ed~Vfd{M4KgGhNkW>i^WUxj~3K47Sw`KKy|3#3}%3&a}*s8{~X z0;cq7bAJj+1hCn^F#hN6DgiTrthsdhin#(NjA|?l-s}Tj^ndQi|B#W6P$p<2_&zu8 z8N>YsZO<4FfOa;|2=ZTBH5YjXiN8DY&z!%pCIA9)go9K{^*{MG6LK1jlGJ8hg-*@? zB^5XUzomBljrY&SKDIxf7of3+{3jKFp~0i8h|@V>{@_nY`MZ&-Ve#GJ<}sdekFHxp zsB90`KfCvDf`AhYHe4WIVO`Tq;}{;8bF=PjRH_L(FaAwMeA!#n_uY)&rWF&ONgSuw z7KnOd~ zRVxq<(Sc$N(3(Zq71?jq{+$?})NZl=3q3Oe`-@btQaFTYy-NNh(*3_cD{J~-qWG;H z!eA~w+9Z4>R~;=p(D&@mpA$-yIuiZ{bf330PYni@1!KRhzC}8cL&$DvLO5ABy(Tu3 z8hbl(eM__S%iX{sft@4g^B@qC(6M`>qZr)hTg(24&K{%E z-?y1<&W#pNuH)2#g6GvFg0C%6Rm}29Ptug&s_%CNqpY4fBxSSM$bhH^l5xQP!kcO% zIK&oxA%o$m`nr&`@8J}4mu1jpAYhL4M$y8X+rnk_v3ULG0jZV!gTWZ#4#*Oi;yB3+ zgTct>?UhVd%-ZTr!x2+#+E57-u8*X&6%jpj5r%L;V|_x)6erUzzVjY`u)}{A(yLkr zS~e3y-i(^*$RIr3T4$7wWi!oys<0J7fk(TzihN8GQtz^nKX~~xbmPsm6OH^0Z5+y~ zSrV}Xz3gMQFvDfcL{%lx-XQlF@+!m3^43oCC0*3b_q+7TpMvzC?0673c7^>^r(@UO zn}Qm29L(jNp2n#;$Z9JBs(E-sXKQ(zMecQn&vIuX%R>#g1!s>?JYI{_An zHql1RFt5250!t(yRrKfomyeq;hDW^1=yqN=v8gQDN^S<25NNj9rzx(qQ7koJZ|0+;h$fL^GTv5 zO_MR2>r3d_k5=_cVI*E?r&i&nBAWu9`C%X~L05G)@>n$UWLQ+0Pf3M{q`3z)*TuV? z>{f?H^>S#rYw}hcJi@{g`&ZtXWp?mI4|b5Fp4lTPj22eV4#E1jn9bsR?R$lj`y{UoRC2T+k%>xpVMoeeC4guC(4A+ZvqHTJ7`k&} zh!!yADs2U^UXquaj0W!{lIxk9?QjlOSEirzA+>pMYRt`hkBU>r8Mmu%@()!%;+-&P zL|&mP%u5{g*Ol*erI6E11oBB_ges1(D)qa*#p%?zjgLD*T@yROQ5n1vPEnI=fF9rx zEA%kg0DSJP7!E5cAU$CQo#OeHxF0Z6hPGBLJQ+ccSJrRzL6&%%WJ^+YPXvK!t$(Q|TAzTk%>rS^cJW*uPOhj4*vaj(rFqqi{g4l$c8wMM zh2gZ(uBmKPrb}RqDjZgXv?;n0!Z9qht=TaDF%H-1nw$9&_FR3WX)A)c@N?&^eoef8 z!=|GR!H)m}(XTQD!Y_4`ibL6b&CBgMxxi-yb$~Qk==@AVKp>r!`wAoVk?v zx?^m1XU*lR@>n0NJbq4zPs|;@I<4SnvX}lwwTk42SEI&N`^N+V7VL0YWVQo*572AR zp2})M-oBGB#nwu>-NSTqRIMr-Pzc4b7ex~hA|_evh~6khRan?RFOc=}35VxTs6!fI z*{R2c%IQLw)FHpRPF{}RYssuy)^T?Jcn=%DT&YF3V!9H9CI;_^!V#2(GZ;QTVL~*K z=WgVEA+M$8>HO9&>vDO-Q~30Z0~gjBYzvC-nvVE#n5Il=|2@Yxhd1U|t0o}?!8yxw zxQ?RGjsrfr`TdrtqGqC`j3U{y;L zSV(G2e8mWD?u62SwJ+?OBTjjR)9X%w{)d8Tn|xm$Lf@^T&4F#!miR*GMLeeu35mtN z2s+lbhiEtwHgFFT6uq|{xhqOp_=f`M+-)UTq^YDSr8f+}h*z*fE0frL8eOG-4T1T5 zq4^bL{(>GH)HIyxKfOQb4pr%^M;BH1h<29P4u{Scgi(UXF_Fke1y2d1D5nqz5gVTt zA0d8}AJg1p&7M$XQ5Ds#_i)}nzzB*t*OV{#tP)g&$c?l0I2>;WWBRC~zo^_JTW9JN zGB<&#Thz0aBsGfN$0v?LBJbqdsO?+qRnjXY_C{7I%ZU~{5f+FWsbo}%$MNwFuS|?t zZ-!@gKxbd(+=r6os)!jMUGc@FZ84lF5u-n}VQmmeBy?|HI*rkDrA&rY zMP7z1kXnGF`F+A}e^1r_0qTmIClUxW&lB1twFkm+0bTEe;mN#V)&6l1)VeKcpassp z4w>5+aB$SwIHc^0P_joU1%`P~CEPzPxUO0a>F_E1v;lbbp^IP%iK7L3x(mVxD1eZ< zhJz~i{p#u`0P-F87!86O?Nqq`00yu91!w@(dhd34 zSid!WCtp!DFKa2fNJIJs)Z)yjRf1|8QHMWMum2WZb*EV!!hQEI{WATUQ4M9bqWR}R z#mzVg)@EO&qnGUon2S9FWk7!bj_=)bl1;MBmR$NOovLgP4D11pn1kM92**0{&rDGN z*NSIty2;{PNC!!%lx zjPFukGE_2mGoj$7Lo6Iio2`h`#5?JV`}<_py;hIe(7l5&vK99J>S@uNgiRgV#r?w3 z!qIG>^Z%j+39R^FN6?&=W=O#OH~0k+R7wXi}h zT`T9BzoR{2-gJA4H&@_bfeWGJyzgu%fe(H4d+fbD$8mp-SYg5lH{kY2CD*pg-)aNS=_Uqr&!j`e?#gkQn(yTM`0eNf(A5O|uGb$EPa=L1 zcD$2dN0l5t^Mnx$Ax8ZZb=k!WTV956Oav@3jCUlXn>Wqt_0Sl8s3r5Go}`9$YDlyO_ozy@Ps+)yN_BynxIy4 zt{+zjZ#jPh3y-lpRhk?aP~)Hw`PhHrf36U(+nzb1X`i2MJFRT*OUo`cOtb;=;5M46 zgqp#M9`+lCl5>}(R3<+NQrfJ;$^Yq^;l}of_DL6~6#L?bfJq@1Cx_D;Tuq5XF)E@T zni_aj?&;E)KeGio>WtMm?qB{sv36JYZNyPP&&w(((5fLJw^Bl-4Q6k8z@=Ubbe~pL1WX$5*S;p!GH@6 zO|hxG`^q|0*eX556p~-08;DcVpjDHeoF)OYB4ump6zp@^l=wj&Vy{N#62`{%>NgvH znThD|Hj*o)3>JgPgN&4H1i|OXz+M( z(RXZE34Z(G#n8Au;3S*<+AK0Na1-6)PR$A?dychFv7r<}cvH&17mXDDivJEBf zUKpl;7c^Z&AG1)V%ZRqhKOSMng74*x`vCYvFNBV1 zl2reE-o50Ot&g^+4Wq$KC<@We>LEFj%oOcY<+Bts(Wz7m*y{7cx zbYfz(j>5+0Hp92F7k~}_qWlU}+%Avf1 zQCzik8{Wwn;hwxe_9h5A@IcJZ-zcN`YnXA*`wcXQqx^SfnU*&l09xrf9INTXh<5Xl zjZxCn^m&a-zuEFIYIBc-O^p@;DWPm1995V2Hlm7sg#F%XdSZoz8b`<)Kb)FzQY4Gm zH&K78$m%kfH>1qcVuEQE%$UJGG|Z*;jb^Ki3N%-74tXCv$lUnOEvq`OWg6eMX7=!1 z@%?Z})xBf?x6pp3&#EaXIjNTKJ2zV!qG&j96Fb}5qafv~gI6!NkJ z*hIAz?L5oszkTuj+FtM09hO!(BC8Bc%i)l3gOlrM=EI#eTdp{g50=)CG-i>DtT6#^ zoj1p|Jms9o&aid98cLN~^&s}B*-UNAG*6$#s);=x`vI##M^5+0xQU)QpCMGDsU`_b zZ5p~*r489eRkI|z_az7{WCd5~GrjzZN{}iNi#H;uIC7S&djUB97Jq@z3CV>D^Tsl7J;AE;STi;L>N!9u1oT{xGH=Bwke8X%IRw5|+{o;SByOm^8eB*#SY^2TbLml~L&lhC@O> zSV3q@#*8lIlfwp=cIEf^h6vbD=c9eYoxQUXF`B*`C^1wxer9sxU}7X`=^MF}=Fq{0y=#3?g+(@b`+iKO4nr7PsP~OZaVZMJD_R9Y zChBZ@c)uKJ`)J{b`58)&YiiOU&OP$WoTr`^ZGOb0yVT)$Wi91aVI2@oaxcO9;WTXA zfBS`pM79cTBbI@91$=Yg`=)y=g9^!HEH%^VRp`O^Ng6i)mk!I`aWCcd`<2u3-SAfQ zvn|tnwI=P(j zf!<=>^R!8!-29AGPF2#Ccq^5z4!N+xB_Jr$a`Z+0#42>B?d^@SG97)}3UO>}8+njf z=;;J6>o)t=z#JH!=BFrs)m;`Z+Q97bamDfR@xFefd@ibfV@ssunF^|b{Pgnj@=_IA zD6(8O*gFNtEH5>p!!0i`wM4YEG^PCQFWR&SC&;TQ3tW|~*z z#g^(2Rsu|J<`kE!BbOt~l`c@s*TR|#`bmTd)}8V%MRN%gt0?p{RXfueMe>q*p9-62 zkWV}>8DOENA=CB;=p5mpJua~y5g3$P)FQX|d*-9D z31ZNkyXzfmX!R4;CW}n@!=#EXypX(NSlOHp-<|FKZ#o6afbT9xsH;M-h2~@K(>w8W zPyjApynEH?1kx#4d?H`x;-|MUta>hOh#{#hc^)rKjGGurT^{U~ zIGo54vJ5CdAOyvFW16K%{F(-@eh6Fww(b+ z@xzz!n8oGk8!GnPV6e3Ul!M zEK_7>@FHZk*>Atc;!XZN^Gaae9SbH*O6L)@ZzzN+V*U>h+piWNY=ftcHq;g`Ml6ZP zHAC+^Nne<4S!2d%PxQ$7YT-}Np|1txTS%o@2x7M-t9eu#Ac2Ph3QA@x$~v`k_JC0c zL92z~s?U5t+2BjO)(h{$Qur)~<(>8B`Q?=mEjdiJ$qpC#mgB7RXlGy8I(5md_jH$r zjD`dVzc8g$j7anWADsidyEfQ(z4hO6IACQh)O|VyPrqQj>m`=7+o-O_Vw_g#-9`&W zkH^P~9X@@PbY_qzNFQ!|8vfQ-yVL`bUuH(u;Y;)`QUABoSm-Bs=7NwHten)R*F*{m zOX60ieC;4*-8R{d;Jyf4qDg$cw%OcJ1zHoD5getS3bX@nYrHq(MS(Bl!XPwFhwRYqcP z=MV~|#oVz^K~^jFhhLR-)qqjOmO+zu*{ zUXck&TOp2QwP`*8!TwQLk6e~>qi}ct*j%~$y%A4h1{YS+Txxn+XOncE|p(|EvQixnAfkI6%s*OJ0 zKu~kj8gj9QOIQ#4pyCO@zTA*TZ}K%5qQaY0uZd2=k?f&Hz)vksM2fked7bl^<(<@- zkn|JP9%=6*cEmWJHBUMap6Ju|K-s{XBLd=Qt z_p3QE92NI6HKN*6evp|2_VJ#0_|2&TTwI;XgR;k!k!znsPlTP$Ao9sev6)*M~@yF(SK91?nO>mC#s7 zcOA|7-eoF4xg>#e;KzsS@ZhMg7rZB!W{bs3??RSS^ges8WF|Kn47MnI1t~3%-Z({s z$dfQ{E$B{bk+>S0a4%V02$C8_nUSBE`Q&pKb6P_P#=KKAx3nA|(^OK(=kN39;Prq8l zinBhrc?VcbsFRBy2O84peM$MiRQ?j7_cdz>w1o86mNCPJGpArr6SUbF5KrOxS1F+)0coiL)fBtN_tc&9^HKVG zdI1dDaQY$AZ*{mtVfKah`<{xL<2C25PVa#i*+pRhaIIRwm+i95YUq8ooN8FA+O2M# z#){4_71eC6B5(*BeebnTdoQ)nn_iFYd5Q9o1cFF1?61(;UyGJpnlzYlE>sd+ zuWT}1&uaNm?B<<#xry$2%D|^&`@R|w^XY%@21WoWU{nJ*`1*!LVCB7=+TvVgk4+R@T4yega zVJ>A7DRiU$kcwAhL3%R=-ulSBWRnx=D7^Si%)3V8-LvrW2xQl5pW~4T+AoNd*n0*k zjYQ{l5=xAX;h;}g{NS@Uv7}Mo2-p13;Csq_O{`*R5d0RE6>ms?Ne@O};SFtia>!>n z`hzlo%jn+W*Qgo^>F(X}qEXD}Xm9Dnc3L0mPqW@onxIvg*jZ3KN|J~MS zDM6PpiC+c=aRBdp8tSTJUjeV`-O=_QO+NAu55OZf)L!^KE>l_s;$$OB<1~2cmj?6d0hEx-a%VHk=vqD?}#^0co+$ z%HOiiJLL|Rp`m&*$&Z>Cv*=jN+!0+Y$MGUHVJY`EIPtvt;KJCJ$p6qe$=!LKzK9{J zg7~dM6R_BAqrjBp7*EFw{&QKiw0Cko-=rVV<Gt+?7wyL3IMpXBPucA-KM*T!DU&z~mymxfW5)4*DX;~h&+uybp_*a1 z?Qr@Lp?c%?HRI>D9#$Sca8EY8`WD@x>NT;TUyzu%RThQRpixM^qqQRD}Q# zi|K1nz;J(R7|=q))gPcx@M1Rd%P%jAQpws(xHJmz8m%w;s|d`cuHD=jx)HkDR+%|; zv6w&kj`P5Fvy+zr_B&IA#KbqPV&m-HNa%bJcy)b+Wa8`Kr=daPU!TP$+9PH-58KcM z{s0|jo)hKJOGy$j8$!U)jLG}MZDNX|>dpk0s|t>DZtfdeG$C=WZVAP!2%;B&De<55 zY$f}g`rGz7^_*wVWDcLwKdii$ddLdS&5Wyshu;bE+(UTb9(5|F#=lyjJ@RclpuXAB zD|CFcnBnD$55)Zp=6lx*P8F6Ko>E?L{0#w@n z-|plhiOafE2-xFA&)XIJza$&R^7aL&L@v{%^8TJgfH;%H6?yfN>lJY;R|fX{P7&pBXAp!;!{jNk<&SkCN{SUY#|@@?KskMzsN+Gq0} zjso&560eUYkBw*bY>-&wo38ClgDZz};VkVuSf>-OU z`}xJz&hS`VCKZs4ylpyn-2QtO5YT$da{=u6KIGHxwRHPR;g>s*T^qZ4OS-vQ8Gk3E z5}!{aQ&*P0Gtzl=#Z9+GcKK~ZWq+xzYt+fEZA;P<9nYtH_Rv{N@JLje9bn zKWZ%odEi@sBD!UvwwJB-dJiqBPVQwLcVMxe+cIl=euualK48w*d_$UD=-=2p`b2f; zv{p7*+B?JBvukYjz9aWN-7bE}EYBmBUs+k70aV#^uw^8tfLPUcc$c)A511Xqj|xhW z{OE!A1ZPBY=0TcRT1gNs=P-Bj7+ehsdBqBAfspxiweqJZa1=Y;=e8BUL~?c<;Y(%j zjJM@F^;V>_mHKTSR|kJ?_BS^4+Y}Kr+N|n_V*1NuWd;`hwG7DBuErYhKsO(+V~M`$_HZ|V zP{&~d7WY=pD2&fxS0CEO#*>`%>N&aLqs