From a9dad6a099c2b75491066b0e1aed7e4dfc2731cf Mon Sep 17 00:00:00 2001 From: Vladless Date: Wed, 18 Mar 2026 22:55:58 +0300 Subject: [PATCH] audit update/ funnel by steps --- audit.py => audit/__init__.py | 761 ++++++++++------------- audit/rules.py | 433 +++++++++++++ cli_launcher.py | 29 +- core/app.cpython-312-x86_64-linux-gnu.so | Bin 565280 -> 585792 bytes core/cache_config.py | 2 + core/redis_cache.py | 39 ++ database/__init__.py | 1 + database/audit.py | 200 ++++++ database/payments.py | 5 +- handlers/admin/stats/keyboard.py | 29 +- handlers/admin/stats/stats_handler.py | 280 +++++++-- 11 files changed, 1266 insertions(+), 513 deletions(-) rename audit.py => audit/__init__.py (58%) create mode 100644 audit/rules.py create mode 100644 database/audit.py diff --git a/audit.py b/audit/__init__.py similarity index 58% rename from audit.py rename to audit/__init__.py index a750913d..7e288b32 100644 --- a/audit.py +++ b/audit/__init__.py @@ -4,35 +4,36 @@ import json import uuid from dataclasses import dataclass -from datetime import datetime, timedelta, timezone +from datetime import datetime, timezone from types import SimpleNamespace from typing import Any, Iterable from aiogram.types import CallbackQuery, InlineQuery, Message, TelegramObject, User from fastapi import Request -from sqlalchemy import and_, delete, desc, or_, select from sqlalchemy.ext.asyncio import AsyncSession +from database.audit import ( + create_audit_reset_marker_db, + delete_old_audit_events_db, + ensure_audit_table, + fetch_existing_audit_request_ids_db, + fetch_latest_audit_reset_db, + fetch_audit_events_db, + fetch_audit_events_db_window, + fetch_audit_rows_db, + fetch_successful_payment_rows_db, +) from database.models import AuditEvent from logger import logger -def _get_bot_webhook_path() -> str: - """Путь вебхука бота из конфига (для исключения из шага «успешная оплата»).""" - try: - from config import WEBHOOK_PATH - return ((WEBHOOK_PATH or "").strip().lower()) or "" - except ImportError: - return "" - - -def _is_bot_webhook_path(path: str) -> bool: - """True только если path — именно вебхук бота (точное совпадение сегмента пути), не касса.""" - bot_path = _get_bot_webhook_path() - if not bot_path: - return False - p = (path or "").strip().lower() - path_segment = p.split(" ", 1)[1] if " " in p else p - return path_segment == bot_path or path_segment.rstrip("/") == bot_path.rstrip("/") +from .rules import ( + AUDIT_STEP_LABELS, + DEFAULT_FUNNEL_STEPS, + _funnel_step_counts, + _is_ignored_analytics_event, + _normalize_path_to_step, + _normalize_path_to_steps, +) try: from core.cache_config import ( @@ -51,10 +52,11 @@ except ImportError: AUDIT_REDIS_USER_TTL_SEC = 25 * 3600 AUDIT_REDIS_DRAIN_BATCH = 1000 + _MAX_TEXT_LEN = 160 -_AUDIT_TABLE_READY = False - - +_AUDIT_REDIS_PROCESSING_KEY = f"{AUDIT_REDIS_FLUSH_KEY}:processing" +_AUDIT_REDIS_DRAIN_LOCK_KEY = f"{AUDIT_REDIS_FLUSH_KEY}:drain_lock" +_AUDIT_REDIS_DRAIN_LOCK_TTL_SEC = 15 * 60 @dataclass class AuditContext: request_id: str @@ -102,6 +104,36 @@ def _serialize(payload: dict[str, Any]) -> str: return json.dumps(_jsonable(payload), ensure_ascii=False, sort_keys=True) +async def get_audit_db_reset_at(session: AsyncSession) -> datetime | None: + reset_at = await fetch_latest_audit_reset_db(session, source="db") + if reset_at is None: + return None + if reset_at.tzinfo is None: + return reset_at.replace(tzinfo=timezone.utc) + return reset_at.astimezone(timezone.utc) + + +async def set_audit_db_reset_at(session: AsyncSession, at: datetime | None = None) -> datetime: + created = at.astimezone(timezone.utc).replace(tzinfo=None) if at is not None and at.tzinfo else (at or datetime.utcnow()) + await create_audit_reset_marker_db(session, source="db", created_at=created) + await session.commit() + return created.replace(tzinfo=timezone.utc) + + +async def clear_audit_redis_buffers() -> int: + from core.redis_cache import cache_delete_pattern + + patterns = ( + AUDIT_REDIS_FLUSH_KEY, + _AUDIT_REDIS_PROCESSING_KEY, + _AUDIT_REDIS_DRAIN_LOCK_KEY, + ) + deleted = 0 + for pattern in patterns: + deleted += await cache_delete_pattern(pattern) + return deleted + + def _message_text(event: TelegramObject) -> str | None: if isinstance(event, Message): return _trim(event.text or event.caption) @@ -346,7 +378,6 @@ def _telegram_access_payload( result: str = "success", reason: str | None = None, ) -> dict[str, Any]: - """Собирает payload для записи telegram_access (для фоновой задачи или синхронной).""" ctx = get_telegram_context(audit_context) user = _event_user(event) path = describe_telegram_event(event) @@ -375,7 +406,6 @@ async def record_telegram_access_event( result: str = "success", reason: str | None = None, ) -> AuditEvent | None: - """Пишет в БД одно событие «обработчик Telegram вызван» для полного следа пользователя.""" payload = _telegram_access_payload(audit_context, event, result=result, reason=reason) return await safe_record_audit_event( session, @@ -404,7 +434,7 @@ def _audit_record_for_redis( request_id: str | None = None, metadata_: dict | None = None, ) -> dict[str, Any]: - """Формирует запись для буфера Redis (с created_at в ISO).""" + effective_request_id = _trim(request_id, 64) if request_id else new_request_id() return { "event_type": event_type, "channel": channel, @@ -415,12 +445,31 @@ def _audit_record_for_redis( "entity_id": _trim(str(entity_id), 255) if entity_id is not None else None, "result": _trim(result, 32) or "success", "reason": _trim(reason, 1000) if reason else None, - "request_id": _trim(request_id, 64) if request_id else None, + "request_id": effective_request_id, "metadata_": _jsonable(metadata_) if metadata_ else None, "created_at": datetime.now(timezone.utc).isoformat(), } +async def _push_audit_record_to_redis(record: dict[str, Any]) -> None: + from core.redis_cache import cache_expire, cache_rpush + + n = await cache_rpush(AUDIT_REDIS_FLUSH_KEY, record) + if n == 0: + raise RuntimeError("Redis unavailable (cache_rpush returned 0)") + + actor_tg_id = record.get("actor_tg_id") + actor_identity_id = record.get("actor_identity_id") + if actor_tg_id is not None: + user_key = f"{AUDIT_REDIS_USER_PREFIX}{actor_tg_id}" + await cache_rpush(user_key, record) + await cache_expire(user_key, AUDIT_REDIS_USER_TTL_SEC) + if actor_identity_id: + identity_key = f"{AUDIT_REDIS_IDENTITY_PREFIX}{actor_identity_id}" + await cache_rpush(identity_key, record) + await cache_expire(identity_key, AUDIT_REDIS_USER_TTL_SEC) + + async def record_audit_event_to_redis( *, request_id: str | None = None, @@ -430,9 +479,6 @@ async def record_audit_event_to_redis( result: str = "success", reason: str | None = None, ) -> None: - """Пишет событие telegram_access в буфер Redis (списки для выгрузки в БД и для чтения по пользователю).""" - from core.redis_cache import cache_expire, cache_rpush - record = _audit_record_for_redis( path_or_handler=path_or_handler, actor_identity_id=actor_identity_id, @@ -441,17 +487,7 @@ async def record_audit_event_to_redis( reason=reason, request_id=request_id, ) - n = await cache_rpush(AUDIT_REDIS_FLUSH_KEY, record) - if n == 0: - raise RuntimeError("Redis unavailable (cache_rpush returned 0)") - if actor_tg_id is not None: - user_key = f"{AUDIT_REDIS_USER_PREFIX}{actor_tg_id}" - await cache_rpush(user_key, record) - await cache_expire(user_key, AUDIT_REDIS_USER_TTL_SEC) - if actor_identity_id: - identity_key = f"{AUDIT_REDIS_IDENTITY_PREFIX}{actor_identity_id}" - await cache_rpush(identity_key, record) - await cache_expire(identity_key, AUDIT_REDIS_USER_TTL_SEC) + await _push_audit_record_to_redis(record) async def record_api_access_event_to_redis( @@ -463,9 +499,6 @@ async def record_api_access_event_to_redis( result: str = "success", reason: str | None = None, ) -> None: - """Пишет событие api_access в буфер Redis (как telegram_access).""" - from core.redis_cache import cache_expire, cache_rpush - record = _audit_record_for_redis( event_type="api_access", channel="api", @@ -476,15 +509,7 @@ async def record_api_access_event_to_redis( reason=reason, request_id=request_id, ) - await cache_rpush(AUDIT_REDIS_FLUSH_KEY, record) - if actor_tg_id is not None: - user_key = f"{AUDIT_REDIS_USER_PREFIX}{actor_tg_id}" - await cache_rpush(user_key, record) - await cache_expire(user_key, AUDIT_REDIS_USER_TTL_SEC) - if actor_identity_id: - identity_key = f"{AUDIT_REDIS_IDENTITY_PREFIX}{actor_identity_id}" - await cache_rpush(identity_key, record) - await cache_expire(identity_key, AUDIT_REDIS_USER_TTL_SEC) + await _push_audit_record_to_redis(record) async def record_api_access_event_background( @@ -495,8 +520,6 @@ async def record_api_access_event_background( reason: str | None = None, status_code: int = 200, ) -> None: - """Пишет одно событие api_access в Redis-буфер или в БД в фоне (после обработки запроса). - Вызывается из middleware; actor берётся из request.state (set_api_actor в эндпоинтах).""" context = ensure_api_context(request) path_or_handler = f"{request.method} {request.url.path}" if request.url.query: @@ -548,8 +571,6 @@ async def record_telegram_access_event_background( result: str = "success", reason: str | None = None, ) -> None: - """Пишет событие telegram_access: в Redis-буфер (если включён), иначе в БД. - При сбое записи в Redis — fallback в БД, чтобы события не терялись.""" if AUDIT_REDIS_BUFFER_ENABLED: try: await record_audit_event_to_redis( @@ -562,9 +583,7 @@ async def record_telegram_access_event_background( ) return except Exception as exc: - logger.warning( - f"[Audit] Запись в Redis-буфер не удалась, пишем в БД: {exc}" - ) + logger.warning(f"[Audit] Запись в Redis-буфер не удалась, пишем в БД: {exc}") try: async with session_factory() as session: await ensure_audit_table(session) @@ -651,7 +670,6 @@ async def safe_record_telegram_event( def _redis_record_to_event_like(rec: dict[str, Any]) -> SimpleNamespace: - """Превращает запись из Redis в объект с теми же атрибутами, что и AuditEvent.""" created = rec.get("created_at") if isinstance(created, str): try: @@ -684,7 +702,6 @@ async def _list_audit_events_from_redis( event_types: list[str] | None, max_events: int = 3000, ) -> list[SimpleNamespace]: - """Читает события пользователя из Redis-буфера (для слияния с БД).""" if not AUDIT_REDIS_BUFFER_ENABLED: return [] from core.redis_cache import cache_lrange @@ -716,7 +733,6 @@ async def _list_audit_events_from_redis( async def list_audit_events_from_redis_buffer(max_events: int = 5000) -> list[SimpleNamespace]: - """Читает последние события из глобального буфера Redis (audit:flush). Не удаляет записи.""" if not AUDIT_REDIS_BUFFER_ENABLED: return [] from core.redis_cache import cache_lrange @@ -734,26 +750,26 @@ async def list_audit_events_from_redis_buffer(max_events: int = 5000) -> list[Si def _aggregate_audit_rows( rows: list[tuple[Any, Any, Any, Any]], ) -> tuple[dict[str, dict[str, Any]], list[dict[str, Any]], set[tuple[str, int | str]]]: - """Собирает by_step, by_path_list, all_actors из строк (path, result, actor_tg_id, actor_identity_id).""" by_step: dict[str, dict[str, Any]] = {} - total_events = 0 all_actors: set[tuple[str, int | str]] = set() - for path, res, tg_id, identity_id in rows: - total_events += 1 - step = _normalize_path_to_step(path or "") - actor = (identity_id or "", tg_id or 0) - if identity_id or tg_id: + for row in rows: + path, res, tg_id, identity_id = row[0], row[1], row[2], row[3] + if _is_ignored_analytics_event(path or ""): + continue + actor = _audit_actor_key(identity_id, tg_id) + if actor is not None: all_actors.add(actor) - if step not in by_step: - by_step[step] = {"total": 0, "success": 0, "fail": 0, "actors": set()} - by_step[step]["total"] += 1 - if res == "success": - by_step[step]["success"] += 1 - else: - by_step[step]["fail"] += 1 - if identity_id or tg_id: - by_step[step]["actors"].add(actor) + for step in _normalize_path_to_steps(path or ""): + if step not in by_step: + by_step[step] = {"total": 0, "success": 0, "fail": 0, "actors": set()} + by_step[step]["total"] += 1 + if res == "success": + by_step[step]["success"] += 1 + else: + by_step[step]["fail"] += 1 + if actor is not None: + by_step[step]["actors"].add(actor) by_path_list = [] for step, data in sorted(by_step.items(), key=lambda x: -x[1]["total"]): @@ -761,18 +777,63 @@ def _aggregate_audit_rows( fail = data["fail"] unique = len(data["actors"]) fail_rate = round(100.0 * fail / total, 1) if total else 0 - by_path_list.append({ - "step": step, - "label": AUDIT_STEP_LABELS.get(step, step), - "total": total, - "success": data["success"], - "fail": fail, - "unique_users": unique, - "fail_rate_pct": fail_rate, - }) + by_path_list.append( + { + "step": step, + "label": AUDIT_STEP_LABELS.get(step, step), + "total": total, + "success": data["success"], + "fail": fail, + "unique_users": unique, + "fail_rate_pct": fail_rate, + } + ) return by_step, by_path_list, all_actors +def _audit_actor_key(identity_id: Any, tg_id: Any) -> tuple[str, str | int] | None: + if tg_id not in (None, 0, "0", ""): + try: + return ("tg", int(tg_id)) + except (TypeError, ValueError): + return ("tg", str(tg_id)) + if identity_id not in (None, ""): + return ("identity", str(identity_id)) + return None + + +def _event_like_dedupe_key(event: AuditEvent | SimpleNamespace) -> tuple[Any, ...]: + request_id = getattr(event, "request_id", None) + event_type = getattr(event, "event_type", None) + path = getattr(event, "path_or_handler", None) + result = getattr(event, "result", None) + if request_id: + return ("request", request_id, event_type, path, result) + return ( + "raw", + event_type, + getattr(event, "channel", None), + path, + getattr(event, "actor_tg_id", None), + getattr(event, "actor_identity_id", None), + result, + getattr(event, "reason", None), + str(getattr(event, "created_at", None)), + ) + + +def _dedupe_event_like(events: list[AuditEvent | SimpleNamespace]) -> list[AuditEvent | SimpleNamespace]: + seen: set[tuple[Any, ...]] = set() + unique: list[AuditEvent | SimpleNamespace] = [] + for event in events: + key = _event_like_dedupe_key(event) + if key in seen: + continue + seen.add(key) + unique.append(event) + return unique + + async def list_audit_events( session: AsyncSession, *, @@ -784,262 +845,44 @@ async def list_audit_events( limit: int = 100, offset: int = 0, ) -> list[AuditEvent | SimpleNamespace]: - """Список событий аудита. При включённом Redis-буфере объединяет данные из БД и Redis.""" - await ensure_audit_table(session) event_types_list = sorted(event_types) if event_types else None if not AUDIT_REDIS_BUFFER_ENABLED: - stmt = select(AuditEvent) - actor_filters = [] - if identity_id: - actor_filters.append(AuditEvent.actor_identity_id == identity_id) - actor_filters.append(and_(AuditEvent.entity_type == "identity", AuditEvent.entity_id == identity_id)) - if tg_id is not None: - tg_id_str = str(tg_id) - actor_filters.append(AuditEvent.actor_tg_id == tg_id) - actor_filters.append(and_(AuditEvent.entity_type == "user", AuditEvent.entity_id == tg_id_str)) - actor_filters.append(and_(AuditEvent.entity_type == "telegram_user", AuditEvent.entity_id == tg_id_str)) - if actor_filters: - stmt = stmt.where(or_(*actor_filters)) - if channel: - stmt = stmt.where(AuditEvent.channel == channel) - if event_type: - stmt = stmt.where(AuditEvent.event_type == event_type) - if event_types_list: - stmt = stmt.where(AuditEvent.event_type.in_(event_types_list)) - stmt = stmt.order_by(desc(AuditEvent.created_at), desc(AuditEvent.id)).limit(limit).offset(offset) - result = await session.execute(stmt) - return list(result.scalars().all()) + return await fetch_audit_events_db( + session, + identity_id=identity_id, + tg_id=tg_id, + channel=channel, + event_type=event_type, + event_types=event_types_list, + limit=limit, + offset=offset, + ) redis_events = await _list_audit_events_from_redis( tg_id, identity_id, channel, event_types_list, max_events=3000 ) need = offset + limit + len(redis_events) - stmt = select(AuditEvent) - actor_filters = [] - if identity_id: - actor_filters.append(AuditEvent.actor_identity_id == identity_id) - actor_filters.append(and_(AuditEvent.entity_type == "identity", AuditEvent.entity_id == identity_id)) - if tg_id is not None: - tg_id_str = str(tg_id) - actor_filters.append(AuditEvent.actor_tg_id == tg_id) - actor_filters.append(and_(AuditEvent.entity_type == "user", AuditEvent.entity_id == tg_id_str)) - actor_filters.append(and_(AuditEvent.entity_type == "telegram_user", AuditEvent.entity_id == tg_id_str)) - if actor_filters: - stmt = stmt.where(or_(*actor_filters)) - if channel: - stmt = stmt.where(AuditEvent.channel == channel) - if event_type: - stmt = stmt.where(AuditEvent.event_type == event_type) - if event_types_list: - stmt = stmt.where(AuditEvent.event_type.in_(event_types_list)) - stmt = stmt.order_by(desc(AuditEvent.created_at), desc(AuditEvent.id)).limit(min(5000, need)).offset(0) - result = await session.execute(stmt) - db_events = list(result.scalars().all()) - merged = redis_events + db_events + db_events = await fetch_audit_events_db_window( + session, + identity_id=identity_id, + tg_id=tg_id, + channel=channel, + event_type=event_type, + event_types=event_types_list, + limit=min(5000, need), + ) + merged = _dedupe_event_like(redis_events + db_events) merged.sort(key=lambda e: (e.created_at, getattr(e, "id", 0)), reverse=True) return merged[offset : offset + limit] -async def ensure_audit_table(session: AsyncSession) -> None: - global _AUDIT_TABLE_READY - if _AUDIT_TABLE_READY: - return - connection = await session.connection() - await connection.run_sync(AuditEvent.__table__.create, checkfirst=True) - _AUDIT_TABLE_READY = True - - async def delete_old_audit_events( session: AsyncSession, *, older_than_days: int = 90, ) -> int: - """Удаляет события старше N дней. Вызывать по крону/периодике при больших наплывах. - Возвращает количество удалённых строк.""" - await ensure_audit_table(session) - threshold = datetime.now(timezone.utc) - timedelta(days=older_than_days) - stmt = delete(AuditEvent).where(AuditEvent.created_at < threshold) - result = await session.execute(stmt) - return result.rowcount or 0 - - -AUDIT_STEP_LABELS: dict[str, str] = { - "start": "Старт", - "profile": "Профиль", - "view_keys": "Мои ключи", - "key_create": "Подписка оформлена", - "pay_start": "Начало оплаты (ссылка создана)", - "pay": "Успешная оплата (пополнение)", - "key_view": "Ключ (карточка)", - "connect": "Подписка подключена", - "renew": "Продление", - "addons": "Аддоны", - "referral": "Рефералы", - "coupons": "Купоны", - "register": "Регистрация (API)", - "login": "Вход (API)", - "api_other": "API прочее", - "admin": "Админ-панель", - "other": "Прочее", -} - - -DEFAULT_FUNNEL_STEPS = ("start", "profile", "view_keys", "key_create", "pay_start", "pay", "key_view", "connect") - - -_CALLBACK_EXACT: dict[str, str] = { - "profile": "profile", - "view_keys": "view_keys", - "create_key": "key_create", - "buy": "key_create", - "pay": "pay_start", - "balance": "pay_start", -} - - -_CALLBACK_PREFIX: list[tuple[str, str]] = [ - ("view_key|", "key_view"), - ("view_keys|", "view_keys"), - ("connect_device|", "connect"), - ("connect_router|", "connect"), - ("connect_tv|", "connect"), - ("connect_pc|", "connect"), - ("connect_ios|", "connect"), - ("connect_android|", "connect"), - ("show_qr|", "connect"), - ("continue_tv|", "connect"), - ("pay_currency", "pay_start"), - ("balance_history", "pay_start"), - ("cfg_user_confirm|", "key_create"), - ("choose_payment_provider|", "pay_start"), - ("cfg_renew", "renew"), - ("key_addons", "addons"), - ("extend_key", "coupons"), -] - - -_CALLBACK_CONTAINS: list[tuple[str, str]] = [ - ("connect_", "connect"), - ("renew", "renew"), - ("addon", "addons"), - ("referral", "referral"), - ("invite", "referral"), - ("coupon", "coupons"), - ("users_audit", "admin"), - ("users_editor", "admin"), - ("search_user", "admin"), - ("admin_panel", "admin"), -] - -_MESSAGE_START: set[str] = {"/start", "start"} - -_HANDLER_CONTAINS: list[tuple[str, str] | tuple[str, str, str]] = [ - ("process_start", "start"), - ("start_entry", "start"), - ("show_start_menu", "start"), - ("process_callback_view_profile", "profile"), - ("process_callback_or_message_view_keys", "view_keys"), - ("key_view", "key_view", "key_create"), - ("key_create", "key_create"), - ("handle_key_creation", "key_create"), - ("confirm_create", "key_create"), - ("complete_key_renewal", "renew"), - ("handle_connect_device", "connect"), - ("process_connect_", "connect"), - ("process_callback_connect", "connect"), - ("process_continue_tv", "connect"), - ("show_qr_code", "connect"), - ("pay", "pay_start"), - ("balance", "pay_start"), - ("renew", "renew"), - ("addon", "addons"), - ("referral", "referral"), - ("refferal", "referral"), - ("coupon", "coupons"), - ("admin_panel", "admin"), - ("users_audit", "admin"), - ("users_editor", "admin"), - ("search_user", "admin"), - ("auth/register", "register"), - ("auth/login", "login"), - ("auth/send-login", "login"), - ("auth/login-by-code", "login"), - ("auth/login-telegram", "login"), -] - -def _funnel_step_counts(path: str, result: str, step: str) -> bool: - """Решает, считать ли событие достижением шага воронки. - pay_start: любое успешное «начало оплаты» (меню, валюта, создание ссылки). - pay: вебхук с «webhook» в path, кроме пути вебхука бота из конфига (WEBHOOK_PATH). - key_create: только факт создания ключа (cfg_user_confirm или /keys/create). - connect: любое успешное подключение.""" - if result != "success": - return False - p = (path or "").lower() - if step == "pay_start": - return True - if step == "pay": - if "webhook" not in p: - return False - if _is_bot_webhook_path(path or ""): - return False - return True - if step == "key_create": - return "cfg_user_confirm" in p or "/keys/create" in p - return True - - -def _normalize_path_to_step(path: str) -> str: - """Сводит path_or_handler к шагу по правилам из маппингов. - Вебхук с «webhook» в path → pay, кроме пути вебхука бота из конфига (WEBHOOK_PATH).""" - if not path: - return "other" - p = path.lower().strip() - if "webhook" in p: - if _is_bot_webhook_path(path): - pass - else: - return "pay" - - if p.startswith("callback:"): - callback_data = p.split(":", 1)[-1] - data = callback_data.split("|")[0] - step = _CALLBACK_EXACT.get(data) - if step: - return step - for prefix, step in _CALLBACK_PREFIX: - if callback_data.startswith(prefix): - return step - for item in _CALLBACK_CONTAINS: - substr, step = item[0], item[1] - if substr in callback_data: - return step - return "other" - - if p.startswith("message:"): - text = (p.split(":", 1)[-1] or "").strip() - return "start" if any(s in text for s in _MESSAGE_START) else "other" - - if p.startswith("post ") or p.startswith("get "): - if "auth/register" in p: - return "register" - if "auth/" in p and "login" in p: - return "login" - if "payment-links" in p or ("payment" in p and "webhook" not in p): - return "pay_start" - return "api_other" - - for item in _HANDLER_CONTAINS: - if len(item) == 3: - substr, step, exclude = item[0], item[1], item[2] - if substr in p and exclude not in p: - return step - else: - substr, step = item[0], item[1] - if substr in p: - return step - return "other" + return await delete_old_audit_events_db(session, older_than_days=older_than_days) async def get_audit_stats( @@ -1049,32 +892,20 @@ async def get_audit_stats( date_to: datetime, max_events: int = 100_000, ) -> dict[str, Any]: - """Агрегаты по аудиту за период (только БД): по шагам объём, успехи/ошибки, уникальные пользователи. - Удобно для «какие пути хорошо отрабатывают, какие нет». Данные из Redis в расчёт не берутся.""" - await ensure_audit_table(session) d_from = _naive_utc(date_from) d_to = _naive_utc(date_to) - stmt = ( - select( - AuditEvent.path_or_handler, - AuditEvent.result, - AuditEvent.actor_tg_id, - AuditEvent.actor_identity_id, - ) - .where( - AuditEvent.created_at >= d_from, - AuditEvent.created_at < d_to, - ) - .limit(max_events) - ) - result = await session.execute(stmt) - rows = result.all() + rows = await fetch_audit_rows_db(session, date_from=d_from, date_to=d_to, limit=max_events) + rows.extend(await fetch_successful_payment_rows_db(session, date_from=d_from, date_to=d_to, limit=max_events)) by_step, by_path_list, all_actors = _aggregate_audit_rows(rows) + raw_total_events = sum(1 for row in rows if not _is_ignored_analytics_event(row[0] or "")) + analytics_total_events = sum(row["total"] for row in by_path_list) return { "summary": { "date_from": date_from.isoformat(), "date_to": date_to.isoformat(), - "total_events": sum(d["total"] for d in by_step.values()), + "total_events": raw_total_events, + "raw_total_events": raw_total_events, + "analytics_total_events": analytics_total_events, "unique_users": len(all_actors), }, "by_path": by_path_list, @@ -1082,16 +913,48 @@ async def get_audit_stats( async def get_audit_stats_from_redis(max_events: int = 5000) -> dict[str, Any] | None: - """Агрегаты по аудиту из буфера Redis (без БД). Возвращает None, если буфер выключен.""" if not AUDIT_REDIS_BUFFER_ENABLED: return None events = await list_audit_events_from_redis_buffer(max_events=max_events) - rows = [(e.path_or_handler, e.result, e.actor_tg_id, e.actor_identity_id) for e in events] + filtered_events = events + rows = [(e.path_or_handler, e.result, e.actor_tg_id, e.actor_identity_id) for e in filtered_events] by_step, by_path_list, all_actors = _aggregate_audit_rows(rows) + raw_total_events = sum(1 for row in rows if not _is_ignored_analytics_event(row[0] or "")) + analytics_total_events = sum(row["total"] for row in by_path_list) return { "summary": { "source": "redis", - "total_events": len(events), + "total_events": raw_total_events, + "raw_total_events": raw_total_events, + "analytics_total_events": analytics_total_events, + "unique_users": len(all_actors), + }, + "by_path": by_path_list, + } + + +async def get_audit_stats_from_redis_since( + *, + date_from: datetime | None = None, + max_events: int = 5000, +) -> dict[str, Any] | None: + if not AUDIT_REDIS_BUFFER_ENABLED: + return None + events = await list_audit_events_from_redis_buffer(max_events=max_events) + filtered_events = events + if date_from is not None: + threshold = date_from.astimezone(timezone.utc) if date_from.tzinfo else date_from.replace(tzinfo=timezone.utc) + filtered_events = [e for e in events if getattr(e, "created_at", None) and e.created_at >= threshold] + rows = [(e.path_or_handler, e.result, e.actor_tg_id, e.actor_identity_id) for e in filtered_events] + by_step, by_path_list, all_actors = _aggregate_audit_rows(rows) + raw_total_events = sum(1 for row in rows if not _is_ignored_analytics_event(row[0] or "")) + analytics_total_events = sum(row["total"] for row in by_path_list) + return { + "summary": { + "source": "redis", + "total_events": raw_total_events, + "raw_total_events": raw_total_events, + "analytics_total_events": analytics_total_events, "unique_users": len(all_actors), }, "by_path": by_path_list, @@ -1106,27 +969,11 @@ async def get_audit_funnel( steps_ordered: tuple[str, ...] | None = None, max_events: int = 50_000, ) -> list[dict[str, Any]]: - """Воронка: сколько уникальных пользователей достигли каждого шага. - Шаг pay = только вебхук кассы (пополнение). Шаг key_create = только факт создания ключа. Остальное — по result success.""" - await ensure_audit_table(session) steps = steps_ordered or DEFAULT_FUNNEL_STEPS d_from = _naive_utc(date_from) d_to = _naive_utc(date_to) - stmt = ( - select( - AuditEvent.path_or_handler, - AuditEvent.result, - AuditEvent.actor_tg_id, - AuditEvent.actor_identity_id, - ) - .where( - AuditEvent.created_at >= d_from, - AuditEvent.created_at < d_to, - ) - .limit(max_events) - ) - result = await session.execute(stmt) - rows = result.all() + rows = await fetch_audit_rows_db(session, date_from=d_from, date_to=d_to, limit=max_events) + rows.extend(await fetch_successful_payment_rows_db(session, date_from=d_from, date_to=d_to, limit=max_events)) return _funnel_from_rows(rows, steps) @@ -1134,47 +981,43 @@ def _funnel_from_rows( rows: list[tuple[Any, ...]], steps_ordered: tuple[str, ...] | None = None, ) -> list[dict[str, Any]]: - """Воронка по строкам: (path, result, actor_tg_id, actor_identity_id). Учитываются только завершающие события.""" steps = steps_ordered or DEFAULT_FUNNEL_STEPS - actor_steps: dict[tuple[str, int], set[str]] = {} + step_actors: dict[str, set[tuple[str, str | int]]] = {step: set() for step in steps} for row in rows: if len(row) >= 4: path, result, tg_id, identity_id = row[0], row[1], row[2], row[3] else: path, tg_id, identity_id = row[0], row[1], row[2] result = "success" - step = _normalize_path_to_step(path or "") - if not _funnel_step_counts(path or "", str(result or ""), step): + if _is_ignored_analytics_event(path or ""): continue - key = (str(identity_id or ""), int(tg_id or 0)) - if key == ("", 0): + key = _audit_actor_key(identity_id, tg_id) + if key is None: continue - if key not in actor_steps: - actor_steps[key] = set() - actor_steps[key].add(step) - - step_index = {s: i for i, s in enumerate(steps)} - reached: list[int] = [0] * len(steps) - for _actor, reached_steps in actor_steps.items(): - max_idx = -1 - for st in reached_steps: - if st in step_index and step_index[st] > max_idx: - max_idx = step_index[st] - for i in range(max_idx + 1): - reached[i] += 1 + for step in _normalize_path_to_steps(path or ""): + if not _funnel_step_counts(path or "", str(result or ""), step): + continue + if step in step_actors: + step_actors[step].add(key) funnel_list = [] - prev_count = None - for i, step in enumerate(steps): - count = reached[i] - conversion = round(100.0 * count / prev_count, 1) if prev_count and prev_count > 0 else 100.0 - funnel_list.append({ - "step": step, - "label": AUDIT_STEP_LABELS.get(step, step), - "count": count, - "conversion_from_prev_pct": conversion if prev_count else None, - }) - prev_count = count + prev_actors: set[tuple[str, str | int]] | None = None + for step in steps: + actors = step_actors.get(step, set()) + count = len(actors) + conversion = None + if prev_actors is not None and prev_actors: + overlap = len(prev_actors & actors) + conversion = round(100.0 * overlap / len(prev_actors), 1) + funnel_list.append( + { + "step": step, + "label": AUDIT_STEP_LABELS.get(step, step), + "count": count, + "conversion_from_prev_pct": conversion, + } + ) + prev_actors = actors return funnel_list @@ -1182,7 +1025,6 @@ async def get_audit_funnel_from_redis( max_events: int = 5000, steps_ordered: tuple[str, ...] | None = None, ) -> list[dict[str, Any]] | None: - """Воронка по событиям из буфера Redis. None, если буфер выключен.""" if not AUDIT_REDIS_BUFFER_ENABLED: return None events = await list_audit_events_from_redis_buffer(max_events=max_events) @@ -1190,46 +1032,91 @@ async def get_audit_funnel_from_redis( return _funnel_from_rows(rows, steps_ordered) -async def drain_audit_redis_to_db(session_factory: Any) -> int: - """Выгружает буфер аудита из Redis в БД батчами. Вызывать по крону (например в 00:00). - Возвращает количество записанных событий.""" - from core.redis_cache import cache_lpop_batch +async def get_audit_funnel_from_redis_since( + *, + date_from: datetime | None = None, + max_events: int = 5000, + steps_ordered: tuple[str, ...] | None = None, +) -> list[dict[str, Any]] | None: + if not AUDIT_REDIS_BUFFER_ENABLED: + return None + events = await list_audit_events_from_redis_buffer(max_events=max_events) + filtered_events = events + if date_from is not None: + threshold = date_from.astimezone(timezone.utc) if date_from.tzinfo else date_from.replace(tzinfo=timezone.utc) + filtered_events = [e for e in events if getattr(e, "created_at", None) and e.created_at >= threshold] + rows = [(e.path_or_handler, e.result, e.actor_tg_id, e.actor_identity_id) for e in filtered_events] + return _funnel_from_rows(rows, steps_ordered) + +async def drain_audit_redis_to_db(session_factory: Any) -> int: + from core.redis_cache import cache_delete, cache_lmove_batch, cache_lpop_batch, cache_lrange, cache_setnx + + if not await cache_setnx(_AUDIT_REDIS_DRAIN_LOCK_KEY, 1, _AUDIT_REDIS_DRAIN_LOCK_TTL_SEC): + logger.info("[Audit] drain_audit_redis_to_db пропущен: уже выполняется другой drain") + return 0 total = 0 - while True: - batch = await cache_lpop_batch(AUDIT_REDIS_FLUSH_KEY, AUDIT_REDIS_DRAIN_BATCH) - if not batch: - break - try: - async with session_factory() as session: - await ensure_audit_table(session) - for rec in batch: - created = rec.get("created_at") - if isinstance(created, str): - try: - created = datetime.fromisoformat(created.replace("Z", "+00:00")) - except Exception: - created = datetime.now(timezone.utc) - elif created is None: - created = datetime.now(timezone.utc) - event = AuditEvent( - event_type=rec.get("event_type", "telegram_access"), - channel=rec.get("channel", "telegram"), - path_or_handler=rec.get("path_or_handler") or "telegram", - actor_identity_id=rec.get("actor_identity_id"), - actor_tg_id=rec.get("actor_tg_id"), - entity_type=rec.get("entity_type"), - entity_id=rec.get("entity_id"), - result=rec.get("result", "success"), - reason=rec.get("reason"), - metadata_=rec.get("metadata_"), - request_id=rec.get("request_id"), - created_at=created, + try: + while True: + raw_batch = await cache_lrange(_AUDIT_REDIS_PROCESSING_KEY, 0, AUDIT_REDIS_DRAIN_BATCH - 1) + if not raw_batch: + raw_batch = await cache_lmove_batch( + AUDIT_REDIS_FLUSH_KEY, + _AUDIT_REDIS_PROCESSING_KEY, + AUDIT_REDIS_DRAIN_BATCH, + ) + if not raw_batch: + break + batch = [rec for rec in raw_batch if isinstance(rec, dict)] + if not batch: + logger.warning("[Audit] drain_audit_redis_to_db: отброшен пустой/битый батч (%s элементов)", len(raw_batch)) + await cache_lpop_batch(_AUDIT_REDIS_PROCESSING_KEY, len(raw_batch)) + continue + try: + async with session_factory() as session: + await ensure_audit_table(session) + existing_request_ids = await fetch_existing_audit_request_ids_db( + session, + [str(rec.get("request_id")) for rec in batch if rec.get("request_id")], ) - session.add(event) - await session.commit() - total += len(batch) - except Exception as exc: - logger.warning("[Audit] drain_audit_redis_to_db батч не записан: %s", exc) - break - return total + inserted_count = 0 + seen_batch_request_ids: set[str] = set() + for rec in batch: + request_id = rec.get("request_id") + if request_id and (request_id in existing_request_ids or request_id in seen_batch_request_ids): + continue + if request_id: + seen_batch_request_ids.add(request_id) + created = rec.get("created_at") + if isinstance(created, str): + try: + created = datetime.fromisoformat(created.replace("Z", "+00:00")) + except Exception: + created = datetime.now(timezone.utc) + elif created is None: + created = datetime.now(timezone.utc) + event = AuditEvent( + event_type=rec.get("event_type", "telegram_access"), + channel=rec.get("channel", "telegram"), + path_or_handler=rec.get("path_or_handler") or "telegram", + actor_identity_id=rec.get("actor_identity_id"), + actor_tg_id=rec.get("actor_tg_id"), + entity_type=rec.get("entity_type"), + entity_id=rec.get("entity_id"), + result=rec.get("result", "success"), + reason=rec.get("reason"), + metadata_=rec.get("metadata_"), + request_id=request_id, + created_at=created, + ) + session.add(event) + inserted_count += 1 + await session.commit() + await cache_lpop_batch(_AUDIT_REDIS_PROCESSING_KEY, len(raw_batch)) + total += inserted_count + except Exception as exc: + logger.warning("[Audit] drain_audit_redis_to_db батч не записан, останется в Redis processing: %s", exc) + break + return total + finally: + await cache_delete(_AUDIT_REDIS_DRAIN_LOCK_KEY) diff --git a/audit/rules.py b/audit/rules.py new file mode 100644 index 00000000..ae7209af --- /dev/null +++ b/audit/rules.py @@ -0,0 +1,433 @@ +from __future__ import annotations + +from typing import Iterable + + +def _get_bot_webhook_path() -> str: + """Путь вебхука бота из конфига (для исключения из шага «успешная оплата»).""" + try: + from config import WEBHOOK_PATH + + return ((WEBHOOK_PATH or "").strip().lower()) or "" + except ImportError: + return "" + + +def _is_bot_webhook_path(path: str) -> bool: + """True только если path — именно вебхук бота (точное совпадение сегмента пути), не касса.""" + bot_path = _get_bot_webhook_path() + if not bot_path: + return False + p = (path or "").strip().lower() + path_segment = p.split(" ", 1)[1] if " " in p else p + return path_segment == bot_path or path_segment.rstrip("/") == bot_path.rstrip("/") + + +AUDIT_STEP_LABELS: dict[str, str] = { + "start": "Старт", + "start_coupon": "Старт: купон", + "start_gift": "Старт: подарок", + "start_referral": "Старт: рефералка", + "start_utm": "Старт: UTM", + "profile": "Профиль", + "about": "О VPN", + "instructions": "Инструкции", + "balance": "Баланс / история оплат", + "view_keys": "Мои ключи", + "buy_entry": "Оформление: вход", + "tariff_config": "Оформление: выбор тарифа/конфига", + "key_create": "Подписка оформлена (ключ создан)", + "pay_start": "Оплата: вход / создание ссылки", + "pay": "Успешная оплата (пополнение)", + "key_view": "Ключ (карточка)", + "connect": "Подключение: экран / инструкции / QR", + "key_manage": "Управление подпиской", + "renew": "Продление", + "addons": "Аддоны", + "referral": "Рефералы", + "coupons": "Купоны", + "register": "Регистрация (API)", + "login": "Вход (API)", + "api_other": "API прочее", + "admin": "Админ-панель", + "other": "Прочее", +} + + +DEFAULT_FUNNEL_STEPS = ( + "start", + "profile", + "view_keys", + "buy_entry", + "tariff_config", + "key_create", + "pay_start", + "pay", + "key_view", + "connect", +) + + +_CALLBACK_EXACT: dict[str, str] = { + "start": "start", + "profile": "profile", + "about_vpn": "about", + "instructions": "instructions", + "view_keys": "view_keys", + "create_key": "buy_entry", + "buy": "buy_entry", + "pay": "pay_start", + "balance": "balance", + "balance_history": "balance", + "activate_coupon": "coupons", + "cancel_coupon_activation": "coupons", + "exit_coupon_input": "coupons", + "invite": "referral", + "top_referrals": "referral", + "check_subscription": "start", + "back_to_tariff_group_list": "tariff_config", + "back_to_subgroup_tariffs": "tariff_config", + "cancel_and_back_to_view_keys": "view_keys", + "fastflow_coupon": "coupons", + "fastflow_coupon_back": "coupons", + "fastflow_back": "pay_start", + "pay_kassai": "pay_start", + "pay_kassai_cards": "pay_start", + "pay_kassai_sbp": "pay_start", + "pay_heleket_crypto": "pay_start", + "pay_freekassa": "pay_start", + "pay_robokassa": "pay_start", +} + + +_CALLBACK_PREFIX: list[tuple[str, str]] = [ + ("view_key|", "key_view"), + ("view_keys|", "view_keys"), + ("show_referral_qr|", "referral"), + ("tariff_subgroup_user|", "tariff_config"), + ("select_tariff_plan|", "tariff_config"), + ("cfg_user_devices|", "tariff_config"), + ("cfg_user_traffic|", "tariff_config"), + ("rename_key|", "key_manage"), + ("reset_hwid|", "key_manage"), + ("freeze_subscription|", "key_manage"), + ("freeze_subscription_confirm|", "key_manage"), + ("unfreeze_subscription|", "key_manage"), + ("unfreeze_subscription_confirm|", "key_manage"), + ("delete_key|", "key_manage"), + ("confirm_delete|", "key_manage"), + ("update_subscription|", "key_manage"), + ("change_location|", "key_manage"), + ("select_country|", "key_manage"), + ("connect_device|", "connect"), + ("connect_router|", "connect"), + ("connect_tv|", "connect"), + ("connect_pc|", "connect"), + ("connect_ios|", "connect"), + ("connect_android|", "connect"), + ("show_qr|", "connect"), + ("continue_tv|", "connect"), + ("pay_currency|", "pay_start"), + ("choose_payment_currency|", "pay_start"), + ("cfg_user_confirm|", "key_create"), + ("choose_payment_provider|", "pay_start"), + ("kassai_method|", "pay_start"), + ("kassai_cards_amount|", "pay_start"), + ("kassai_sbp_amount|", "pay_start"), + ("kassai_custom_amount|", "pay_start"), + ("heleket_method|", "pay_start"), + ("heleket_crypto_amount|", "pay_start"), + ("heleket_custom_amount|", "pay_start"), + ("freekassa_amount|", "pay_start"), + ("robokassa_", "pay_start"), + ("cfg_renew", "renew"), + ("key_addons", "addons"), + ("extend_key", "coupons"), +] + + +_CALLBACK_CONTAINS: list[tuple[str, str]] = [ + ("connect_", "connect"), + ("renew", "renew"), + ("addon", "addons"), + ("referral", "referral"), + ("invite", "referral"), + ("coupon", "coupons"), + ("users_audit", "admin"), + ("users_editor", "admin"), + ("search_user", "admin"), + ("admin_panel", "admin"), +] + + +_MESSAGE_STEP_BY_COMMAND: dict[str, str] = { + "/start": "start", + "start": "start", + "/buy": "buy_entry", + "buy": "buy_entry", + "/subs": "view_keys", + "subs": "view_keys", + "/profile": "profile", + "profile": "profile", + "/invite": "referral", + "invite": "referral", + "/instructions": "instructions", + "instructions": "instructions", + "/activate_coupon": "coupons", + "activate_coupon": "coupons", +} + +_START_PAYLOAD_MAX_LEN = 256 +_START_PAYLOAD_MAX_PARTS = 20 + + +_IGNORED_CALLBACK_EXACT: set[str] = { + " ", + "back", + "cancel", + "back_to_pay", + "back_to_currency", + "back_to_tariff_group_list", + "back_to_subgroup_tariffs", + "cancel_and_back_to_view_keys", + "cancel_coupon_activation", + "exit_coupon_input", + "fastflow_back", + "fastflow_coupon_back", + "cfg_back_menu", + "cfg_cancel_input", + "cancel_broadcast", +} + + +_IGNORED_CALLBACK_PREFIX: tuple[str, ...] = ( + "back:", + "back_to_", + "cancel_", + "gifts_page|", +) + +_IGNORED_CALLBACK_EXACT_RULES: dict[str, str] = {key: "ignore" for key in _IGNORED_CALLBACK_EXACT} +_IGNORED_CALLBACK_PREFIX_RULES: tuple[tuple[str, str], ...] = tuple( + (prefix, "ignore") for prefix in _IGNORED_CALLBACK_PREFIX +) + + +_HANDLER_CONTAINS: list[tuple[str, str] | tuple[str, str, str]] = [ + ("process_start", "start"), + ("start_entry", "start"), + ("show_start_menu", "start"), + ("process_callback_view_profile", "profile"), + ("handle_about_vpn", "about"), + ("send_instructions", "instructions"), + ("process_callback_or_message_view_keys", "view_keys"), + ("key_view", "key_view", "key_create"), + ("handle_user_config_confirm", "key_create"), + ("finalize_config_and_purchase", "key_create"), + ("proceed_purchase_with_values", "tariff_config"), + ("key_create", "buy_entry"), + ("handle_key_creation", "buy_entry"), + ("complete_key_renewal", "renew"), + ("handle_connect_device", "connect"), + ("process_connect_", "connect"), + ("process_callback_connect", "connect"), + ("process_continue_tv", "connect"), + ("show_qr_code", "connect"), + ("balance_history", "balance"), + ("balance_handler", "balance"), + ("pay", "pay_start"), + ("choose_payment_provider", "pay_start"), + ("kassai_", "pay_start"), + ("heleket_", "pay_start"), + ("freekassa_", "pay_start"), + ("robokassa_", "pay_start"), + ("rename_key", "key_manage"), + ("reset_hwid", "key_manage"), + ("freeze_subscription", "key_manage"), + ("unfreeze_subscription", "key_manage"), + ("delete_key", "key_manage"), + ("change_location", "key_manage"), + ("select_country", "key_manage"), + ("renew", "renew"), + ("addon", "addons"), + ("referral", "referral"), + ("refferal", "referral"), + ("coupon", "coupons"), + ("admin_panel", "admin"), + ("users_audit", "admin"), + ("users_editor", "admin"), + ("search_user", "admin"), + ("auth/register", "register"), + ("auth/login", "login"), + ("auth/send-login", "login"), + ("auth/login-by-code", "login"), + ("auth/login-telegram", "login"), +] + + +_API_CONTAINS: list[tuple[str, str]] = [ + ("auth/register", "register"), + ("auth/login", "login"), + ("auth/send-login", "login"), + ("auth/login-by-code", "login"), + ("auth/login-telegram", "login"), + ("/keys/create", "key_create"), +] + + +def _match_step_rules( + value: str, + *, + exact: dict[str, str] | None = None, + prefixes: Iterable[tuple[str, str]] | None = None, + contains: Iterable[tuple[str, str] | tuple[str, str, str]] | None = None, +) -> str | None: + """Универсальный matcher шага по exact/prefix/contains правилам.""" + normalized = (value or "").lower().strip() + if not normalized: + return None + if exact: + step = exact.get(normalized) + if step: + return step + if prefixes: + for prefix, step in prefixes: + if normalized.startswith(prefix): + return step + if contains: + for item in contains: + substr, step = item[0], item[1] + exclude = item[2] if len(item) > 2 else None + if substr in normalized and (exclude is None or exclude not in normalized): + return step + return None + + +def _is_ignored_analytics_event(path: str) -> bool: + """Исключает чисто навигационные события из аналитики шагов и воронки.""" + p = (path or "").lower().strip() + if not p.startswith("callback:"): + return False + callback_data = p.split(":", 1)[-1] + return _match_step_rules( + callback_data, + exact=_IGNORED_CALLBACK_EXACT_RULES, + prefixes=_IGNORED_CALLBACK_PREFIX_RULES, + ) is not None + + +def _message_command_step(path: str) -> str | None: + """Определяет шаг только по точной команде/первому токену сообщения.""" + steps = _message_command_steps(path) + return steps[0] if steps else None + + +def _message_command_steps(path: str) -> list[str]: + """Определяет один или несколько шагов из текстового сообщения.""" + p = (path or "").strip() + if not p.lower().startswith("message:"): + return [] + text = (p.split(":", 1)[-1] or "").strip().lower() + if not text: + return [] + parts = text.split(None, 1) + token = parts[0] + if token.startswith("/"): + token = token.split("@", 1)[0] + if token in ("/start", "start"): + steps = ["start"] + payload = parts[1].strip() if len(parts) > 1 else "" + if payload: + if len(payload) > _START_PAYLOAD_MAX_LEN: + payload = payload[:_START_PAYLOAD_MAX_LEN] + payload_parts = payload.split("-") + if len(payload_parts) > _START_PAYLOAD_MAX_PARTS: + payload_parts = payload_parts[:_START_PAYLOAD_MAX_PARTS] + for part in payload_parts: + part = part.strip() + if not part: + continue + if "coupons" in part: + steps.append("start_coupon") + continue + if "gift" in part: + steps.append("start_gift") + continue + if "referral" in part: + steps.append("start_referral") + continue + if "utm" in part: + steps.append("start_utm") + continue + normalized_payload = "-".join(payload_parts).strip().lower() + if normalized_payload in _MESSAGE_STEP_BY_COMMAND: + steps.append(_MESSAGE_STEP_BY_COMMAND[normalized_payload]) + return list(dict.fromkeys(steps)) + return steps + step = _MESSAGE_STEP_BY_COMMAND.get(token) + return [step] if step else [] + + +def _callback_step(path: str) -> str | None: + callback_data = path.split(":", 1)[-1] + callback_key = callback_data.split("|")[0] + return _match_step_rules( + callback_key, + exact=_CALLBACK_EXACT, + ) or _match_step_rules( + callback_data, + prefixes=_CALLBACK_PREFIX, + contains=_CALLBACK_CONTAINS, + ) + + +def _api_step(path: str) -> str: + step = _match_step_rules(path, contains=_API_CONTAINS) + if step: + return step + if "payment-links" in path or ("payment" in path and "webhook" not in path): + return "pay_start" + return "api_other" + + +def _handler_step(path: str) -> str | None: + return _match_step_rules(path, contains=_HANDLER_CONTAINS) + + +def _funnel_step_counts(path: str, result: str, step: str) -> bool: + """Решает, считать ли событие достижением шага воронки.""" + if result != "success": + return False + p = (path or "").lower() + if step == "pay_start": + return True + if step == "pay": + return p.startswith("payment_success:") + if step == "key_create": + return "cfg_user_confirm" in p or "/keys/create" in p + return True + + +def _normalize_path_to_step(path: str) -> str: + """Сводит path_or_handler к шагу по правилам из маппингов.""" + steps = _normalize_path_to_steps(path) + return steps[0] if steps else "other" + + +def _normalize_path_to_steps(path: str) -> list[str]: + """Сводит path_or_handler к одному или нескольким шагам по правилам аудита.""" + if not path: + return ["other"] + p = path.lower().strip() + if p.startswith("payment_success:"): + return ["pay"] + if p.startswith("callback:"): + return [_callback_step(p) or "other"] + message_steps = _message_command_steps(path) + if message_steps: + return message_steps + if p.startswith("message:"): + return ["other"] + if p.startswith("post ") or p.startswith("get "): + return [_api_step(p)] + return [_handler_step(p) or "other"] diff --git a/cli_launcher.py b/cli_launcher.py index ee677e36..94d87ba6 100755 --- a/cli_launcher.py +++ b/cli_launcher.py @@ -303,7 +303,7 @@ def install_rsync_if_needed(): os.system("sudo apt update && sudo apt install -y rsync") -def clean_project_dir_safe(update_buttons=False, update_img=False): +def clean_project_dir_safe(update_buttons=False, update_img=False, update_redis_cache=False): console.print("[yellow]Очистка проекта перед обновлением...[/yellow]") preserved_paths = set() @@ -328,6 +328,9 @@ def clean_project_dir_safe(update_buttons=False, update_img=False): for name in dirs + files: preserved_paths.add(os.path.join(root, name)) + if not update_redis_cache: + preserved_paths.add(os.path.join(PROJECT_DIR, "core", "redis_cache.py")) + for root, dirs, files in os.walk(PROJECT_DIR, topdown=False): for file in files: path = os.path.join(root, file) @@ -474,6 +477,7 @@ def update_from_beta(): update_buttons = safe_confirm("[yellow]Обновлять файл buttons.py?[/yellow]", default=False) update_img = safe_confirm("[yellow]Обновлять папку img?[/yellow]", default=False) + update_redis_cache = safe_confirm("[yellow]Обновлять файл core/redis_cache.py?[/yellow]", default=False) backup_project() install_git_if_needed() @@ -488,13 +492,19 @@ def update_from_beta(): return subprocess.run(["sudo", "rm", "-rf", os.path.join(PROJECT_DIR, "venv")]) - clean_project_dir_safe(update_buttons=update_buttons, update_img=update_img) + clean_project_dir_safe( + update_buttons=update_buttons, + update_img=update_img, + update_redis_cache=update_redis_cache, + ) exclude_options = "" if not update_img: exclude_options += "--exclude=img " if not update_buttons: exclude_options += "--exclude=handlers/buttons.py " + if not update_redis_cache: + exclude_options += "--exclude=core/redis_cache.py " exclude_options += "--exclude=modules " rsync_cmd = ["rsync", "-a"] + [x for x in exclude_options.split() if x] + [f"{TEMP_DIR}/", f"{PROJECT_DIR}/"] @@ -520,7 +530,7 @@ def update_from_beta(): console.print("[green]Обновление с ветки dev завершено.[/green]") -def _do_update_to_tag(tag_name: str, update_buttons: bool, update_img: bool) -> None: +def _do_update_to_tag(tag_name: str, update_buttons: bool, update_img: bool, update_redis_cache: bool) -> None: """Общая логика обновления до указанного тега (релиз или произвольный тег).""" subprocess.run(["rm", "-rf", TEMP_DIR]) subprocess.run( @@ -530,13 +540,19 @@ def _do_update_to_tag(tag_name: str, update_buttons: bool, update_img: bool) -> console.print("[red]Начинается перезапись файлов бота![/red]") subprocess.run(["sudo", "rm", "-rf", os.path.join(PROJECT_DIR, "venv")]) - clean_project_dir_safe(update_buttons=update_buttons, update_img=update_img) + clean_project_dir_safe( + update_buttons=update_buttons, + update_img=update_img, + update_redis_cache=update_redis_cache, + ) exclude_options = "" if not update_img: exclude_options += "--exclude=img " if not update_buttons: exclude_options += "--exclude=handlers/buttons.py " + if not update_redis_cache: + exclude_options += "--exclude=core/redis_cache.py " exclude_options += "--exclude=modules " rsync_cmd = ["rsync", "-a"] + exclude_options.split() + [f"{TEMP_DIR}/", f"{PROJECT_DIR}/"] @@ -567,12 +583,13 @@ def update_from_release(): return console.print("[red]ВНИМАНИЕ! Папка бота будет полностью перезаписана![/red]") - console.print("[red] Исключения: папка img и файл handlers/buttons.py[/red]") + console.print("[red] Исключения: папка img, файл handlers/buttons.py и файл core/redis_cache.py[/red]") if not safe_confirm("[red]Вы точно хотите продолжить?[/red]"): return update_buttons = safe_confirm("[yellow]Обновлять файл buttons.py?[/yellow]", default=False) update_img = safe_confirm("[yellow]Обновлять папку img?[/yellow]", default=False) + update_redis_cache = safe_confirm("[yellow]Обновлять файл core/redis_cache.py?[/yellow]", default=False) backup_project() install_git_if_needed() @@ -618,7 +635,7 @@ def update_from_release(): return console.print(f"[cyan]Клонируем {tag_name} во временную папку...[/cyan]") - _do_update_to_tag(tag_name, update_buttons, update_img) + _do_update_to_tag(tag_name, update_buttons, update_img, update_redis_cache) except Exception as e: console.print(f"[red]❌ Ошибка при обновлении: {e}[/red]") diff --git a/core/app.cpython-312-x86_64-linux-gnu.so b/core/app.cpython-312-x86_64-linux-gnu.so index 16c390e2bbfe915ef687bf526bda21035b8b04b5..46277b43b8c019ce9152a035966f8a0caa3ec6d6 100644 GIT binary patch delta 245225 zcmcG%3tUuH_cuOgaCGnjctOW2qk`fc)KN?^@H#%BVriMBVw#baQE6G3g8{}gQP?Su zmKkOmmKJ4s=|Xr(&`i$~^5?6uck z`*!A3P|~5KqGNunHOarY>uk@-?)5D67x=V9Fw&yoqYiy7;N|LPE~{a&1U_ZHx?r=f zvlF+){<-owh{2YKiR`nZCBSF}O^gn~=n#yK&-I(My&YyaxE%F!n6P(Pgx=LUw(&o- z>d#xpG+W_Z(`@TY)3;aMcln#+Tfg4X^2hI|=;y7&G((RMX`vmVe>bFsBxu@P{SkW$ zy{OJS?V3KVZVNrh=GGSK3+uGd3vBbWhp3_+SJ$C^PMEe7bw+CISZ4y&?o#`pJ$LR^Ey-+{dyoJ_Xj}ING$Avib{7|>{ z5@C8}XrcD9KCK~as_)PSGp>sIXqr-ZJ-JutR#c8Sf{;*!!N4ge1RXeLs3qP#SYvRyTBjV7Kg%Mxs z?huD|U7r@}&>v~sOS@NJiGP>t`x}qccCfa@HHp*0NT-(1{>{=CH<_x9(l6oPQ~J23 zBeid+^&5(sF4eRQ=7_Y&dD;T@tuoRLG34ab=4pCSqdNM>&AV&4tg((J4(){AxW$*+ zI(>hOUb?%kLw7jb^&dwdHnD_R%Fl0@<(L$rUur#C-_bh0(U576-8+2V^m{Yr-2d=w zePEj?eRi8?H`HsJZPhE=w9tJ~FY4o+eRYR(;D%i1mQYV16nO+%DsuRj2n8XdMoRtFiaB&t(Tp2HzxU;r`@j_6Bf|uOM>n~OCq_G^YQt-+Y zj$2A=$@f^wQ+a{Cc7Y{7jpGRl9%!j$S1m!75i5C8uq$|qz#|lV8pAyp+)BZHg2Aca z^93HO;Li#?PQeXt`ys=LIpobCrUUEH=|x@)f*d z8OIA1yqQp3q~H}o&SnL#e2vM$_*V+r3qeN|+>*@|S1EW`QQz`)ZCA&M`gR4kEa!5Z z42S;%ecxLMid7g=g`hYEFA;(=6?~wOQ>fr00*3C945j`L28CPzJZ_kX2?Y2MZttf6iRakfz`PgVGh;DGVx5 z@W3c5RPZFvzqo=TrJ(42j+ZHTV3?IFc$$!NM8Qiw;BqPzJXHjvr%EZv6oMRkYrFJL z!QfQzB2hn9!OM%d;v@y1Cgiv|?g;HVaWfG3o20XSwc|Rf54slYByl6s2^Jk zNB>vs6_(a2uvnfBSgPQa`+5B|1%Fo5Pgn5FZ+ZP91v`AfK;41>IR`4_-Cqu=TayhvQ{?1z-KHujn1^GhIQU!O4*{?#u z0~yd%@C+yKO3VJ*o(tp~yGJRobm0t61rH>gSOt&REj1efxphEt@FnM=1E$qJCU$++ztaB-Adjd?y$tDtNw7kfz{2i29id z9;jcU;HO!A#9x_GkXpiBRH5KGtA!^NJZ>AWZ~3;iCn|+Ob_I`U!n-($aEgD7f@dD#@{<(Y(?hhttrQe2<1I*2@Snt%DqX>y!$lV;_=BR$auq!PepcUO zDNqVt77T?7o|(xNlqmSKqJEiz7tP}JEr)7*)V_-2c80_Mf#GL4$j4=@!q8YS#3^{v zR9-(-!CQ&?6BWEjtPRs-occdvI~O!hE&$#^2+CCOav>;J!7GKF0tJr~atal^0&-aV z6)6QpJGeoX!?j(PBm~(NJmV`~-=W|~M5=Zw_y{2<_OP=4&j_6PC=3ysc%P*ycwi-y zuHcm(o{}>Zydsz5xj|fvzrfNeKUhHd&tfSTf|jcIb6il7f(NGE%?cio$?KOWc$_DP z7aUOv#t9cyD0tF2Uf)#kN-xJPM{0N3q(GM`c#<&46QLBu`M9811)nYi#VL5E5R{c7@p%e9UkJ)naOVnMKUcwvbdDF)!qNYMS+1~F z0jApm&QPS_CFeO_rr^24pmGH-5FR?B;F|66o!w5Ah&{-ita?(9YL6XRH847L@2aHQq{B52YixfO*0#C{13Z5Aj$~=2S;KB8Or8ppr zJ65~J^MpYO3LYW0>uCz^9LE(W{7_p?3t?z#ZQNriTFG5BuXceYQ(Pn*QSbT^U&7h=s}#ZFsHiQd=oT@rpRA2n z2tjcQo_PnapQ_*mBIq_Ncv6aukN*m#z$wlFO$9Fy9@>1Wwn3K7d=!)`c){)5ph^WV z5e8MA67kQ);Vei5-Nc`2D<~J9$W-u%ONlPz;RoGii`8YG6lDY22?5d z6w%^{Gqn}RtzkjxvBW6_6{2qv6g*Q5vxy2`A`Y#VDtMg0OBB4IJ@<4O!{L8!7y4eD z-5gOE0>^OaXKS}0RUEx6Rq#hdi;EQ8xtb5lBQj3?pZO6lsFDkSJ4FjDW^Kg;JTgJgS!}3=tyJRVjGJ z6kgx*Yi$J);(3Bt1-FPDQ$j7A`d{pRt7;WkET0QYBQDlfQ1X_DY6VXVBq#+h5qroq z1&?ch29W-xYJp%VQ}Dp*^@xH8cEyznUg_tCW>(g2KwuPX2F~K27h5dj3;FO!`mHv@ z8-b`+@HGOTsNl{cTuz#T2hIo6Yj8gPO3v`;&8R70!?9cpn_LCIMI2h?D|q?6T=7x` z&)>o27b*Cy>&5y1W~Cti6lW+=@YJt3eni3V6b4l&c>d44zNz35J2`Ig{9fDDQ-mP9 zf|uORTNa_<~=6t18| z!JiWH%WC83{}Wt6MePF1Lcw4vcwB{W-5<3*mn-Vq6+G=EukTdwX{-UzAFC8pPU9^| zQt;lQ#cl<6j^p*y6g*!Tl&;_rB9mqkPVvv%VX?d>7;+VcIKfb$;HyOaLIqD1T~?yt z?~D3n63)h7(G1>#3aNm`-zLFeDtLuZV7Xko3ra+NyMkAWX*x;4%hrqY|5T-5r?_}X zQ}7Mq3MNCrago6CMW%x96$Wiq@IwMGzpSkPGsU!6r7)C;Sk+2osL!T4B?@P z3SJ>RksiRA|6zODJ|3mHfdbYZ;3E2$s<=ofNmpwd^sRV8%B|paMQTq~a8HCNn5Y!A z6nL6~I|ZJh;J*u(W-53N3(GLuN0gTE1VJq4@^R33LdypDOd17OjIa%g_yJ| z84mvkhF?H|rK+||{}e4d@&(7Kqv*llz+Z)gi`2x5ObKrosEp4_2@enSKb2QW1>y-} z&Q@HbxG6{2zjg_4CgBkh9x34t32!ZMrr#+Qw38TOCA^b_$4Pi+2~UvlZW5j(;Vubx z7mM{jxox0SkSZ}GO87(xPnPgB2_Gim=@LF%!ZU(6+CNGvm=`RtSpFs9nG&8N;kgoi ztAyuE_-zutRKh0^9_ar9so-{rp-{s4)9JjhNWv#c^*2lS-4b3R;SWi;r%WoCEfthY zc!q=@k?=<)yh6g~O1LTEPfBZ^SRpaQO8A=+9w*@|B|JgG-;(eo34c3)Q~$fAg4KZne5OkH8VR2$;cF#4 zO~Thnc)ElaNq7cu7Jt+QA4>)EB!(>#o+;sJOkyaP@E;}oh=f;2c!h+Yl5k524_;cP z(63kme|C>lz>gq!QG|r^T^z?95-#??tiUPZd@aQ5$4WRif#Y!kXZs(%hT#PX5<`6s zv44{!yn%$fCA^V@r%HI3gin<4#x?m5D;=qziNugD;msvHL&94~_&f=BNO-1%w+!Ow z|6Hk{Rj|Nf$(Qgp624Tz+e&zWghxqup@cgnyohj$KkBdcQo&}4p@W2%NH~6@6#Ofb z@aQ0lGi3>nk?nZn?vU_!33p0(ZwZf;@IDeAx7AZ)QD3PbL1O49;YkwSU&7rIo*?0=5G$X zoav8~3T8+Q2@-yV1dQ*n1ts`_#6peD&dbyc!7jJA>oA*K9BG~{})LGPe}}$ zCH!d#FOl$PB)m+*7f5)yga>p|vFC_XkSQ@#NcchtHzoX839pp!ED5iY@Ei%ZY-gju z!-n4?sld()82+4uM@V?CggYeME8$KFe_q04CEOSEKPtpY1usYp2@;+s;YkwyqJ+C8 z{3QubmGJxkPJJ;^Dp(vSz-O9->k^(W;jc(|hJ?Q=;qxSXiG*hYXR$!TZ>dy}D={pS z@O%khF5ych{0#{&knjQtFRZ~mmQ_+gQB8s69SPqo;e`@jBH`~!c$tL1C*kE1zMkP? zEF6&v-j^6EB>V#jHzoW-39pp!k0iWG!Z%2`#j}GA0~YO{NCkEY-zeb`623{o9TL7- z!krTSsf5Q0oUQ*qmkQz}hA$*MLBhY3@FWS}CgE-g-!9>)627A*|6vqJ1z$-FX%fCu z!qX+ZRKhbPyiCI9N%*cHj{eV-3cd~&U_~V1dn7zx!uLt|QVB1Y@B#_nFX4rRQ~c5J zJ0KMlNetgg_+|+|DB&d%en`U0B>b?1mrJ^x+uUAxEHE!8o5#@aV@%V=2NGu&>O z86GvvV);G1-L>kNjSBs~La$Ni6$-sXpJ6UVG3Qh7VW8y`FmLHF1Vu5zbf<@g+8v(hZK6RLhqDm z5Bj`V1}Fv;`hA67qtGi9dWk~6sL+cf+CxFNKmv$I+N%@sOKq3Z@|4*rNZM1JzJq?D)bbEzFncmDD((UdxDv7 zuu`F)LibeYP72*lp_?mom_pZOw5KNZ{yjvA0fqimq0cDvafLpl(0dhnC(#}$_ZKS_ zHY)V{3cW_5S19xng?>??7lHQ3lg|RB!s7}(TcKwv^c01@U7^P)^oSwYEz1TBRx0#U z=$;DQNuk>*baRCcQ|P)wa9SoC@ON@;`iesTs?cW?`nWI+N z%@sPV7LED8ZY==ofg~jc6#7?%KBLgb75b1u@0IE1m~MB<0O;Z*yFMWMbL&g#`qk_~ z1HOM0>&QIY0s0tFH7C;Tvu#Y^OUuyeitwmRT6b<2pYFWGwXDADtw;3-bJ|#Mvg^<1 zwCOq*pk;2i3GS@K`ZwXL+k1LWL$@z+@XdCMdH)~P)#i-q>gt`g(U0ooIWf9xQ5);P zEBbAVCN_Q~i`;RsB)qZ3t!+1(+|WN?bfwMnj(QezHGV_t&P$1o80Ni_;=Sn38y{^q zD_7}zpKD%k3RQUQOa0t)J(@JTTwNU=mBeNm_dr)zzM z>Sx#cdwaHhxS!o}C5yJWN$&7r$KAd-_kiPbCZzacT&VG^H(B%RJG`-t(ymokkMi}6 zc6(2lAM1a5yEte4R$V=_XLwXL`NNW&^_Ld@N{RnoG>hsqytZM;^WSR`i+htd6FYRM zXL0)+<^jFi3oTn#0i4s4>`!v%&52Hk--YIw*0wf%@(UYVE{kU@UE6b(qwtn{VB4m> z?RxjTSZl(?4Y%i&YVmi(*)32Qp7ZWs)z$v3_$Osx%n$-|Rui)Q2AurMh3e|~l9Yjo zUE=Ken3r0%JlzWwvguI8JutBh#GIMnJ;}2@)ACi@;h5yKkN7Br?t_|Ixu>C zbi}!0^N#c6(@bhA0^-lP`sw^WO+M~xx6JJg`mU!~fXur^UvawKfG6&noP788nfY#? zYw;`;cu#n38K~;^-R>~^{{*34TLkBL@)LOaL8|0S9G$K&T-?e!YL@=S;!eHWbIwuF z??~~UF?XF}d~ZF;H7#>*t*GPn4YS$LZ6!@M{~Tu0D}97X-9*KIm=u~WOiD#nW>RM^ zx?&y^%}o0FJ}OI0yiZ^Jax3fB`}FlMcWSweK<|m5Nn1`blOCO?pMNM7UH#-M$@M!xEBUy|S-tzK zG1kvA^xIzT?A!(;;MiNb;$uLvJv@7VU24ZZw>Kr)Y5sglf9=(F+IRYvSDn^A8TzqT zo!VmkuU9+beR|F%F~dflLD>2d-S-HS==m?0WPwn#!SEWBu7+UnzyWkE=JrKaQ4_p7 z$z7KZ>MK8ProXYIGUS8Kc0J$dtCi_r8Hw#C9YP+Uxb)R`ds8E_wrX>%-um$e+yiY< zsOVfesd*=RJ+uf0V2GK+57)7z3`qR-kq!AvQ?xNfr(jvB?bQtACH(o{{TpKk<8LY9 zS@WYKFobN^F@#Dnghb4nPowZ$4(4t?+$sGqH%!;NzSgRl8>RjhkP{vS>xV^0nEg)a z6JP5aZ=r&TydcGU)vP=T`e>lyKC^=8jRE?qS+0NaT1#!Ce)zTI*f}UGrdvdR2?lgc zs)1LRO@Wv4T#alOjnlpV4}+?cTe||D_ZyIrFOkbXT+w{!kJ+)+>ZeBe^i`ErKX*aqxg6OpY`h;mA`sn~&YF45V{+0p$t7e71{*7quGyT9D$wR(J z-7htCf%yTx1@fPFpP2@x6yJlmEgR@VKK^hR%XYPps`DJk8_`JR11 zPkA%WYR=LZyqVJO)I{QRy?!UMQ3RSpeknfA6nJLYjr>Hdm2NG#*E)Bmet&^0{QYQ} zM%-vP+VJ81`uc*A4a>nB-er7roH^$6msdtvFU-)}uRL(~E=Y#gy|&bjqyh=vIKbql zQkq2+dEfk-dfipPOh{aN2gd);n3hmRD}p$8&Xw?-0#+w-KGi`O#FBjWkj$*S2he-7-4oLU{H&$QPr0!!21o)&bHG7waeJC96AxZRv$D^)`zh}MMgO0{ zA!1%Xj8XqXaMYXUK>O3HiEjy?|;TfHW4F)n-1??{k_0 zJ(K8XYv>H3HArXmubOE@w-3qkw{=dSMA_T;U?g$d|b?!vDCkqdX;%3OG$yX3+j^~%-VL!2$`deoXBcXm4j-LWK@ zB@cw*GzZkf-)04dhTBJu|H^*{YfTabTbJ=HGAKVdC@?5TM3}$hcfOP!BGCU({PuMH z(={EM6di>0i#$(3w7-R2|8-3ZYv)6Hy?5GMqmg9a8Q5;*I4JbFj^JYpd7B1%N2GR$ z*>jIwuYbI?zT%w;R{s?J@;hVwvHv*wM{?_WEXCd#$9_BokKMHjuczOBg=3>VLC)&gf5Xc{hI z=-(7ykIhukm$-PWT_5~z+kuOT#K?$%n)nOm%NMA#AB>JDCWA-&=EjmmIR$8~$cpsC z4@?AWo7wdx?+(&F)xUkWN8`-P)Zi254*b3qL7zBPZ~Wd*4VRX~`S)VN1FN3&KHko{ zuC=wxHvPehmLb13vFqd3jp=q_AL^vC(BnzlJO(7b#NUy18akXN#9>&EZ`XIP>(Oc) z5<30)BgJ?a4QtclFBC7*8?W!!dm@Q@j;kbt+(bw5$fll2AbKe;r;!x9PoKH|ftb(s z0$xxPgs53a(0hT%as8QM*RQOP(-!HS-;Z)V2Mb1(4vS7BQ&PO}m;W^ z>GykS^Yq9MZqk0#Q$H9H(l5fUFZ&?cdSZwEF!~QuH9H6oLSV#~oZA~%vC(YI*l#2DPQiN3_Ubo%(!a@d?oGC?qlPvp)w4c{ zvHmb#fA^EY?RMZG2Zp+aBK5>E%PyJ))K^~H!ts3m+~C~!v4(d=AKcX6S%ED+67+uh z@NT6wdnyeMC(WNp<~>{V?wdQszsoAI#S@mh7g0YG2v+^y<01!nr3Lh)c;`o_hIbhT zt_EB5tj(R{?_o)BJ}lhap~hQ78nRU6VE&AxBMi2NzGya`q#xTnOM6Zqv1PEeY>&QZ z%QkJiKI+ryR?83i`=3T@uj$`@I=A_Z5HgrK_WnNtj=iW)`Ru-SV+S*9+H%nYK+Oz) za4Waz`Ud@{&xY6kE0L$j`A7BMpLeeR?N^8q3{ALj`sZD(`+m@0`h0=r(ZjwNs14Qs z^+gA(^Gkj97v1m@?bp6&HTp;~hR|1HJ?4wNe-H^fLjsDikB9##EoKi2WubB#O3{-) zYxrP$lGkXb!}lZ(^O;X|t+-p$a!d;Tr}+p?f!`y{G5XELku4HPQ{%u&?;;i1&5p(T z1I6vEA;r3{xZU8NzM$+&OVn9d{01j}sPtFUcAU9rZ)Lzmb9V6RnBZ*X7Q247cubFa z1IhbZcs6{BmS9|y1(!Y-g3+2$-mP=)0>|(HcKx0&zw9vZeUgX$ObY&S{Bu)t{cn9} z$)uLY@jEXJlUb;XDb;j-fcP8GcK;~*hK(fywAPE=BITB`JeovxQ@oIBX6f~}MPcA| z-PS8CWL;g%96&KS9R5qcZ`&B{u)c9ypXRH!z&S^PnT&J3s8?@mr9Gy%+8(9drr)$Z z%Gzg(e%JPP)}~wZr?3{6#uT9gtf7Pn(h)vuaCl((L|EjALTG+~hFuQHi zr+<|Y8UHD10ziF%C1|O+FT|!7ebuMq+Kr;b-=AA!($Rsi9447n`}MjzJGDqdJ!%8j z@%9zcaoGHqK6K|mYuH9TbLSH6alJ)pjK>0g{|#;f#fQTj{0XT@Jlh-5kN9)=PoOl# zyN^eY6Qw*X`@(<}m=-1whyP_(5sfyleazK6{I??Qnm$w+?cGt_nq1TBvYd!ND{ULH ze285?RywrZi*aa+&vkP=avMt^$i%ZYvfMUsh~2oePlX0MBvQ7wBJKXBNMv_S!Iv@zwZooqxO zuTLYF?es(X*z|R~y0@A0IYl^z3#(8!jE4Me7!@&16YcsRy9U>N4M7^e%UHRtP8)sv z?#b4tcjy~-55Rl#FYF#+9q_U4`g(AmP@HOEI`rDU`;$g2mRK#;ves0<2omhQ7xOw= zT+x#np4g?QU0?HcRFh3a@;*I5ecE}Ce)#Lb+7o*7J^kaWFVT6zwK=yU6tghEQ@nrE zjCEv<&5~7x1D89HfGJHyVNHm02lJx7V9#u=K)$!YG-2In@H>#^NK$5o0yP-1e^ZwH*wY;?{8T7O(V_v{+oKy-qzMfD)n#n zCLo{J-Pf*r`g$5kd_5LlGTK{_;`P(+CeM|DqZ%4iiwY=5^yoa$uBYz%*)wq+#$O^& zfaWbA;xG6uB3sZ3B7w>uN9LNGlc3*saY!d zB13UvBpkHlE#aU@B&RTVD5n@>6uIx$E_Quuc}LCEPnSoBWYw*!H{9PQVh~PaVF>LR z>}LP^b@hb(-L2`r>NEGpSTCK|^Y+IzzIdK`;uPG7&7+yz*QW2?-=+1vPa>^(ulfCm zb!M*Fv55QnF1^WtZq}&M4L2W1)W8p=Z0%U2bm0rds#vxS}uCi-8G zQDUa$(JRz*NV|5JUU^R6`R#kw)`j|G-*s-)gjJ6)--TZ&0uta)RQfi?u7CVp`#M+O zLFZq3UTdnK|1LDdu-4V9zH8GUm4-PSo{Dxy9qepf^o#C3=(INT>$46$ z|8=k}d=0gZaXj7*mL$xMCNA zjkmY~rFx&O{TYN#p6gb;e3OMRkDd44r9u`v8qR*gTe!1KY`V3%VHACP^)HWf@3^=< z4}7stwwnd7lNM?X+b2(px9efwPjA(F70JTAhri43Y*NKoq2)!$D&6;eYiupv`F@DD zO8@2iR`|bf*p5a=X8p`e`uJcVlAB-zuxwQ4rnjoA^`sw~>kl4{X?cC6Fp?dO<-5IC z`5^pBfA?sVhE3hkRvO%Qv}eeZQFgugv3B_1q_~cCvc~_VPd?VpI__uvnPXk7hfe8* z$KslPcM3`|Krt1^(kPAYYSYgh>uw$Xu-@{Ah1zfW>p!%M{q{}xxDFzTys(pqJj4wV zTZlMFU5l<+r=R@6;noRyqMDa4B4QFJNQd2=1BAO}4Ih44Cwa5!IFynJ?}1! zcKz!g+qWxeMbn9EB{ufKzf4#QRs8avTo={^2hh>hSY< z+Q4ImiEo1`>3DBz^m6^^@y>&f(OCh8PSZE4tJ!SxEZDQEu*7@>(<`>Jzn!22anbCJ zoCkakobGyGFdf%#KH;!_aYDcI#AkixEr;!USc+g0(?QdzTFxr8C$L3dh_F7_AfJ)N z3-yr|9j(9R(P@Bn({Vj@T`zrOMTaJZbQg!I>^xpBh*juANaw#)to3a9v7W{MJkLSQ zB=a?BbaRd7F%ajzu31&XVrOU9(NuqUeVkoa=!vIVx&Q1e7R`BZ z0G-=Wo1CO}9|M?|B8VQ(+d$7==wE24DpPFjv zddyFQBD*aEM{2MkB*d{yfBdI78nHj+*N-`daK%9BVd%*}cWs+|6lB)CSYQL@jHNXU z8Si=vue340(sO?v*?aWY)FAV5v>dzkC*iW1?fBO3Nf_IybV4;A`YF10`u32V_IBfW zht{V-MLo;he#lt&b+YSAPxrZHYfB0-oIfX^ge{uBq>lC49CRL?Q}X18ScNU8O1{K{ zO(|EMF&j}{!zu13$iU}{XfpM=p2Trs^D{B6#&LPUtFm!i+Pjz)C!FaJa<9{FyxS6X zAaI!-H=_V{-1=d2VMjBRFgxDFn+IV>C61&6cDz89e2Jel;dWfW{H@w?Ka*2x?l08a zo@v)AnTrjY6VHV{8_mrbj+8d(bnk`<$Avj9qU}amh}PGIWeamlCE|{mu60w8EdKe;XB6YI$BgqE-7e1V=iYBE^5djG3~eo&7g-l zdSM$(J}G zoU6}Ut!rnRhBD4l^O4o)fT)&SPEh@RylfSXs1Gfq{xr_%$^Uy0_e}kpP96@I&?Kfm zn??k!<)b)fs5qWoNBzX2n~sisxhY_kIu+O+?>&?jKu?M!XbW@v3}q` z!(lO(^C`lBELe?UL=MTudw`e)V^KikV;r2!95M(c%poThF$*m1YAonZm3)bpaS%x3 zv~P`y=%i-h6dGdPBs+{x@H}fX-0V z$8#w|5S65Ucyq4a0WGXE4kJDi{^;vM53{}~|4yj);Dwb?pUb9so-;qDN=OcNuKt@9 z`pQ3=hB8j%h86l3e?+z9a)PaI%%!w~7E&J*$<_bytx*2~f`jGChC=^3lrZm4eU|A@ zqvR`^{{mG)Zm7rguYcp8v2Z_=gG})T&y`$k(40$n$sHQ?8)AUWvEfF6I-~r6Fy}cG zu+XH_RhmL_QNql*nR6!4MUgP4J3E3+oKTmWlZW*OifTm=f09tbET~?7T`1=u-$2GG{d|8^|Fu_6c*sBQclthePOI zfcmEmN|-q(@NQi+q=e=MVb0s^@*wfDm7CLJnGv4=hcH%Ti)F^>1UQ6C3OeKwF6UN6 z23e33&Mg?US6FbOsa-!(+1G_OG6VkjMi}trd}csC78C&kvZ)f*7&zc%*5HpmuD*PaQ2*xBOno{{ zPNMyPK`+#QV&Up9EYaJaZ5m1-&fNAd(G$-`wPaLHu8ikWt|1IuSK~vL!2kDO9ngCB z-=xL03dhFryJ+>kR%De3ao>LUYI+R)8ji|htToT_&=Ce0C&2_#I%@&$*<0vOSAB~A zp=7^5`?foZ^EY-nps}0qI?-7@iUH9z?w5bnGZs#_c5JjCPsohI#?WaVey-Y>omZ#7 ze(}#X+BUu6wcEmaJcecuXuAYyCp^1c-@hu_I8crMDdXB}DT6&&r#@S=(sdL44X4e4 zM63%gV$E)#&t(Ny^JZ(0-sgJsJu4BP^yhC_U9+UFSODHp3_#-|$K8N)_#uBk{BO)s ze0`(YI-ft7;)_{(O|-EJf=2nMjd_5mjW1r~ZERS8|EULWgY&Gs+p zlg%j6s^D;3$ffj#78;JP+W2rx*df%HhVr!ow;C(^?Lz&&N16J0lx~Ikb=(=JuX6Qm zUu0_s(R}SiwsufjKaESN4=tpAZXK?^8MLr$@TQ$-gMj)y+l2ZL9%1TJX}$?$gX^sI zUtQtqZ@j>=0fF%T$ro5QU{sCslev^r^|<;8AzXdsR-yihdUnICgKW(C@W2mBnD<}G zVESVbPXYZuBM9LA)i_Eg@BipC#@UdK355Y$ea1sJWMf9wSkRu!`Lr�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 JQ#Ob({}0S^8(9DV delta 228817 zcmZ_134Dy#_dh;&k}*k$#1ff=B!h(56B43?v5z*0+M=yCZIx8f_y~&|Ig?3>g2r7JymCqF$+m~rYw7Tx>sJ>@NgaV7Z~QaW$N=fr^n}5#Ur`P<`n={t8~9AD z`Kxtfaz!KQZ*!eXP!BW;nz*2e3z{Y>FOaj%vVUNH$iFuOn7*3X~+>dLiB%dm=UcpLCEz?qyiR@6`tTljq4gU>RN@`ijIr^8`Xj%#? zlZ}O>Sm|X5RswxemE5`}CD+G97N9(-PaBr|#E>rd7ul{{Zxl@WD6zf+$OqIyp0AZ0 z2GpcH^xaIhC~wvQul!6(n!ib@@JoeOy=osNMGC1ifOMulr`9PXe#%b&U@}B$>OX)? zq-d6Zj8fFdTiNaZ1M#9(3+l#@@yhwS9msu!1iV3>D{lr|1W&Qw$$>G@own&Q$L18QJI856GUZ6{WnOe@(}*JO&Qu?0J({_b`>?q zC(vb#PijymSx*0|46>3d%v_^X_-kjQ4rC7vz&98!@<^!{e3ZPQoDc3m?kL3chTkGc z!uqzEmx z?iVf)EeRBGffxzD%iAYNco}bRk?=>ny;Z=`zOIT3Bnu40pL2l}2{%t;JxG=Cz_%El zCgI7veY%7oO%qE*Hp>@K)SFu7sEH_IVP1_dVuNzJyot_60L|{=0@Cfg324 z1kBT!q9O@T&cgJ-AJm(rYn*dqq(B}60Ymb z3}2G)w|M&s36J6JH3<(K#q{WAVx%GduCbrM75Pwx2T$gT0wuhhD@v8{sa#L4gwJs~ zD&jc)?xYYIfR|KpPiOrtD9c!N@;jUShE8*of9_l=aQSvrZR4C!DX;viRm0Zt$ z2`?YZ^ps0@E*}EhC5aJO&BnM&!k2IX-JF`Cw(#~o5?=8RGi;Xdm0V9W!)@;Am&z5z zNCE}pct|DuGglJ*KX9E?+PCrcJ~eO{|MVR0X$^)>x69?JgzFZt_7(|0$lF^bJTI5E z&y(=Vd4Oa7S zMU@hMjQ6-o!UK8DH)Yk#m9xCP*@LtBXW;_T9tN9!FEhgy3IE9zY6(x}dXgnPeHhb| zCgIoKvaxkNU1H>MMVS&F!&ko&33nBoG6~oH$P8CVxU1f1Hi?n#sR;Q|Q~uJQI332(^Tr%Jf1eSw6B(e{vkg%Ts{Ll&YE37_{4>p_`>r_N&S zDJP#s)`OgBP)18^X3`8SCz|D4c0Ai8wBfPy;!gaZvt9KcmCgCL?F#TECQsr941#%^UybLB#AmP1vNDC!AE14NCk?;zx zzs!ZR`lr*GXEOs8E(XRQ{ypFVnuP1-u=cu~nh~ntIpHJWd5c(kvxM7Xcn_i_M$ur_ z1B-;;=9g4f36FWo45Ui<`+UgKB)lM;>bL2#B*t0oMhuGJ!k^&s)RrLJ2S74i!mw0gupr2`?E4 zdNBXWCB`|f=#qq&^RcgxaNSGHp(+W##`WmzHHR{pN5}_on*WTg(^c{inI(aHTv4=y zm-C**NO;j8=8#pw|Koa+Jvf_xsa#Qthe79GOh2Y5UBZ3Gvci%n;g!67mV}r0XL?E` zJnU`0|1XmmmE55U36J20H3<)##|%U-tQqRmZVb0bcof%TwMmS8Ug?r0+;!TWDd7oR zQJ#dC`?8W;B;n>G%)$K}cklnR_yJ*{qh=4vxkDxiFL=&-CgDZ=IN$VfO+7=nqcJsc zo37+FrYNN*Ll@}Hdaz%{U6oG4Q=c+DnuNQKVD~So>Cgn~5aeIE#3*>1DXNrk*C|<* zgj?pY_NK)(4HWTf$P@|B;^&FEh-3aUF`cf0pa11a0Q8_o6(=tG@NDQ5tZ=3 zOg3xM1)R>mEI+<}3k;lp7Jiyll~>b10#_8cq$VC%hv|uta0^emdp$GX4rGebT?|_Pbh<3=V5WpyxTE@m=}{IR8!>7I#`&2}iiBG@ zo-g5nUo%HdD{DG*fJZ21rL_M~p2sdCQzU^Ret@uF!Yih+_L_v#qZNo?!KXD1*Woub zi`+P$e?`05eqOh#rog+d%V`PETE{P^CHx4#T#uIUm`v8*BH{1aTxU2Eqr%1nQYAc+ zw@;Js3Vt4tFX81p)I}0r$s=vMBr|xZ6IR!ZL^40~Nt193KbXjraMxKA6%t;+E2Gcanuc8$v!)t2jKAxE;8G2SPWLzWv{J&$ z$MCFPSJQxbJIkR22`}K+eijMW9R@v^f0+^^kP8$_xNG;iU&38i#pM!S*_}C>T2Rwb z*DS~foaR4c>vW^i*apG;SxtcgS5`~-7LF%KxH+Hcu}HYuD5PMJT^6ka0f!@+5r3B)qGh86!GZ?;K!e8SKl}LEOO4hzi z!c#wFc!f=3yvY@55?)@L^{i6D%{)Su4K;^s0@q`e@Vr>2Czazi*VzA$3#3T`1q$;t zOTr^v$8-{&PMCoL37^gN7uLjK{a?lml+*eFbZ;`@Cj^ z#?lTz{`p7@T`=o`S;FIakE10#rWR{&k#L1OWR-9;ucWDnWB$8_U=0^YlLRbWAWOnG z@%FhAp2~-;K*D$O_JsmY=U+((>p_XY!0C683zSKCB{xtZ;U{=|O~Q4&1Llo2hv3^u z{QN&gVm#+Jmn;&#liz|#mThC||;V=6KOYp8u{P$m7f6B}t&1uZk5C zo_dV;Xj9FeW$_3lNO&dRuvlF!f}g)H|Kb=gg@dTO_gw${&WfFk7n6)SrX$G-{BNUxN8wAlyKKA zl_Cju%J`(}X=E(k;mcnblK5%87* zo*>|D1l%Iv@d9q0%=iBoHvZH#WhV;)iGo0ifcFycQ~~cR;AsNhPr%dNIP`y@z{qqn zbh;M>JWIfn1Uy&3Ul#B@0Usvd`2s!yao6}42n_bzIg=_B@DxE&k$}G<;QIyqH32UX z@JRx0D-#%#1xC4mrwjNc0so(XR|xnt0oMe4hJaTx+(w_MpCvG=1c7V;*S+tV1xp3o zN5EA94;1iE1>7XytK9L224;b=RuG65@O1(nBjD==JVC%e6L5=wf9}F@{H+3Gql*E* z$pXGfz*7W#i-4yJ_*MZ=6YwGdPY0alA5OpB0wYrpI3VCz0)9xqa|OIu!1DyWM8NYs zxJ`FVU=(;5x^D!$P{7X!c#(jg74ZE6{)2#*2>2z6^Z8dMFs=v!gF+5tpnF|b$;W)ki z@nsnOZ-OA;C*T$VuPxwK0rwa1WC5=$;3)!L&r|lv z;8_A5;>Kb8a|K4In*onx3wRR&&lm780WT2n2mvn?aI=6HA&&Wn=y)@33!Qs zHy7|S0gn{$asiJL@Jj-2ixwCa0;83HYXaU{z$*p3t$iW&!Ug;L!r!Nx);K@clmyL7c!y5Cl34xJAIb2)I?i69hb2z`F`~ ziVMg7zaTJDT@1jw3wWA<_Ym-O0q-f`nF4MR@GJrE4LFNG{E;g#`UnDf0^VQ1^96i> zfENh3Rlo}c{3Q<#&;JRGK^}%~zkm-G@Dc$ZBH(2Lo-E+y0zOp0FHs!&k7GYvU{nYK zqXb+N@X-QZDd4XPc$I*U5pdoAJhR|+cl@D&kHC0C5C|0TQ~@^$_?rT57Vx(OJX*lt z<~X$1Uy~9 zCkl9`fWI%`S#BKqKSf~Vx*0m%Q~}Qu@C*UZ7x3u4O#*HgaI=6f6!2&PcevvZ4Ppew$AUnDfG-koi-0c{aI1iS zBH+map69}GEK&r<5*Gu0Qw3ZR@H7EmCgAA;zFfdF1$>2oX8}%g0jFQSz{nK@Rtk8Y zfUg$td;wo0-~|F+AmD`_+@{+gFp4}3-DUybFW`j&ULxRM2zZ%*e<|SQ0=|vnd@fuP z7~2Jb3IX3C;F^H%6!1y`|4P8C1bml(>uecx8qjRtBQSgfe6N593iv(&HwpND0XGZy zK>?5EINkpr78o&tz!3pY5b&b{ZV~X~0&W%X69S$r;9q;{AIt)QaZ(US74TC6o+jX> z0-i45Wdfcl;HTX4C*XMkeonyi1-x9q3k3YUfEOZ;`G?c*g1{&e z1ilyW{Q~}@fR_mPPXb;h;1>nFT)=HV3yezw34ot_k>60k0JBYXV*+;MWi5@4>uS@hui5@J`{cF;;s2(+e zsLm4IUZPt_bhtz}lIXe;U8@FdtB!j9cg-PqB+-9J^lgd0D$zel^jV2MCDJw+^I{Re z9FXYk61_>H*GlvXiC!$x^99<5NjFCTke)8llO=kbM87W4BPDvUMECd5Hk$Q4JOHIT zOLTjQZXwa(65U9m>q>MjH*I6n?)hI*4oLJL5`9~uuS)b!5`9*pPq}CtpZCQsz*Pq% zdb>n#lIXP(y+WcFOZ0qBL$ziRm?JfqF42=EdYnYRF3}?;day+IXSB^-`FcnVI!knW ziEbg$;S$|QqU%a@ElS%wrT6)tQVvM;9}<0AqOVHyPZE7rqE8`h6Ka34)L^efZ5oJ7Aa(IX{#a8244)xRbX)kC5?OLTjQZXwa(65U9m>(-!Q z{jXI6fc-$Flmim|heY3&=&KU_lSH2t=|-^Jo)Q6|iz|&v*X+akbz#cm?CxC;H1p9} z7a6|7pRQFIK~{%hug12PzSR{05m~tJJi&jhixTa$ef&qwl!-Y_^mmNP!ki|pM*ygs z)@FotUZUR}*q&SMw=(Kj9f>_27vHPZ`=ZQ_6Fqy3V^7nB?%kj+z|) ze@6M}`o)%{C3u6JBd8nGADOMwO@RMtGe7m#!3H<_1WqL7kDTWEfB#V$%ulITucHr4 zt_LLn^>kKpLc8#vGHd>$CNEy9rPHRt+o#q=Ns)nl?T?b|53GxZNBU?bDazsnjf~;g zpihSK<$`wge*n({A}n-`vUZFA@wQR9v!J)W;xDCr?x&=$ayqw-mkz+kx$VO`+&1bS z&BKdhi#4F{RjVV$+VyJ2h$KhUKevoZZ+kEJtXH-@+TZ-Nx_Y1^F4Ahhre!Dx?5)hL z|E#Va*FGQudIbM^&HIl8EGu!o0|CJ{-#yu-U-&Z#9C`zSz9{hqe7w!-FlkGbyN-~M z{Qzc!p#K)@qKwFd*wfG*?ZSC)CG6w9A)~KTkvkPkfjI~>0E)W^x;Ez$jwS02KYsfX@(!7@XoP4EKUTTxyR>KfEhDQe8E!KkXVMw#E zr;thOBbAMLo$8OhY1B>Y2=s5!FyuKUnJ+1?-wN;g!K-6>y>?<;p4AawFBBN|Yj%Sf znpzzrP1*t#l-dpXOk&0!2=u)WOqj$o!Ah?sq59Jy%9tfBI<801er+JwHznC`YavXo zHMg|VdaT0R>ga3mxqA#P8J0AsE?Ix$E*)z5|8U73%w6(^rqrbmR#2DHnFMudEH-i^ z9%-ZuT^g$I6|78J+9D)`NxEI~WpetK%GRX`zL%~TbxDrICsE4%rNhI%ZHNluR|om% z4n$+nASFhvqjqwml-HFRQG0+jF5vywA_IGs4v22a0-M#8ialxIqYG$cc(JMSpVC7A zV!9H!EP8|$1d{9-k*NW##zrP<$Cem$1MOc!*aNah;M{a1&Id7TPIW*wJ{|_v!$Cru z@h`SJN!vZsQ@k$VR(q-T`o9Kc{jy$u$IYnuwszsRa&K9b-VvoVSl-gyn|8ra`!a;7 zYcHRG?DMs-ALp$0q)4;2TUB0J9!{1iGnSk6UQx=bSJmp9L;zSDtuWdh7*r2Lgci)1XXbVi)YEFkB}WDsS#?sEk=r>Gl3aqmrz~ zkz6H5O$=}Cz=;8Q>F~4KlLO}+BN=+TU+e{IH^a4`j7o+2N~1GiF3AoKzzoxtJG^yC zT@zQBcO~a1k-_OVz_U_AVg%GS_~-oMIZPdxekq90n-v)dGsy5S%%D=3K|JTRZos^o z1GS3HcC0=$49%50D?=Ol0M{7|dIBQA`@WHZ+N0}=>C?E_lIy@oVT>gEW3343%dUp! zv;w5}y6DGRo-+H>5Hej+KkXGA2fSju{pc)#`Ru7Q5Y>>n5T!-&XTFA-H)-jr#`^Ph zl(1D@{PGt-WV#vN{NAX%zN&N6%nH!no%TYfy@$jD)I>LrN%r5h6lKq<_G2EL04 zq4Rcwp$^RqOqQHkRRApts(%4=E{bpPsFp6a1S;9r*!&-OxLnJ+iZYN4R>;Z(t?6$- zLckNOjts;~wR6|K70c@OWUcc4>d@Bnt|1?SG2Hn>myOR-V#bJMKhqto+ za3kgP>d?9mj-zX+7hJ2YJY3!QO&w@)HicqLLw!xF1SgzTpb%*6Qw7rJ7;S}7Ek}Bb zi@v6nAU)GXmuf{whq&Y)YX!=rHIZbdvUE+a-Ydb@Q34~Ny$^r6%Aft5W(J`o$HYi0 z8=uV}u5ATuoM)7+WPD>^C`N(M9gIs| zg*I#%;-i+wlThXOx_9(pK}xHF_<+ej;38s$jzb?to0Lff1L`D$Y(T5wkuh5M6s4pf zLVqMgxn6MLwSk}-!frPNe$PGseLhuO)rj^rz`pJ|4tu!NQNiwIiei``tC38S+9MG{IqIu4&^J;K5u4=g<6UK zoR!cMG=-Br6GFtAM#-bztC6I!DpoSTNhRc+t$j z0%5|G#v&1@_4x?m4fP=q#vcqP)mJ{;)U19wYJb2A6{y})YE-sw3fBMrqf)x5ss6iq z%AHN!!hVM*R6%bFfh@*o<7}S_r5)5{)KgCX+C+JM^9cPCe`U|+n1J8D!yNvZ>)!YJRNXvY4BwqE(Ku#MiID6O^(!F6)W%bniD zF4!N~4S#>bXUjQwc@8>Ih6NppuDvb{Z<3>30_|&Jy=tTKd`nojdPu^=2m~{+_q7}A zajYjs1{R~kgB;VM(W9IK=q;~`1@NK=EClam7&=0;Q?NIZEl5ZS_y4D{U)6ytW@VD)qJwZnNziG)tz*$LhAW z3Xs?mXLCAiFyy!-_Js}kJZ0h5cA-yd^BEDuX9U$9dmpr)-`c#R3DqrNR?#OPq$5~v zW4x=*0-ewJIG41uN{empMa@KbjwcPFWg0?Xx^gFe#(zd-@3t6{qx`-tLOJzi{pQX? zj0s`&{SR~Y!9d3d*i-(YeF$GTg5Xc}Q@U*rZ?x+SD7r4_#?HXfwLPe5F0$INnX1i1 z;uyHfrviANrfl5afg~tDZhwKSQ37}L_j+{HsEpnbsqZjDvF+GQHYqKOS~NZSEk-#D z#th6}haADI@tX}!IJ_h8F4B4`lZ&igD~gTEfuczLxet_UMZ0k9c6NYo2A|m3xxub) z=rB>?t0?@|Or_3O?>E|c2-9h(398!YZ7|4=gxC_TyRzh~ZnmN=png&O`a?MO$DyDf zJ&0|w!7Vm`Gu`zJ*X+R4Q1VW>x`rWmUWW4<{<^!)<-Ef%1GU&MgXUn=O!X~i`r4pA zR{>I9+BJtXSH9UbE_N1(1Z3aF&O72CLv_G$-*?5c6?D+J+~E^2u@-FqS~psM0Ns5V zyH@w0%Tilq{qFE?laRG2zP%g%4@M@o2a{}78N zq#H}zZ%-+G_C)Eky_5-idW4UKQy*~j2>cv~p`Ja^D&fsiNSIb$Y|-3Rv1d0Snac8g zUCgO)9sosoDE`=w;XXYXwVH9!v}heCEBE%bh;2<9(H#?PaUVc?9U!pNpYhCy#UvQ) zB-v+0CI__Y3sP4mDSh_0jMdX(Fbjqv_o63Sz3b5WW1{g4+6$)vbl?0y`>n3BYX1Z> zK&f@0hdzI<(*MA5(opd|__jVdPnmo$lDwiQ2d6cP+=UL)z_!}$ip&lr{LuLDbN8t? zVNCS_pvDDEJjQ(bHci=ZsGr{~0CApvw^;e}P)k4MB;*K?5W?n%Tk9j1C_@g=IF-)P8d=usfa^6K{w^2dyKd9&!*23)WzBE<7 z2QG}{=R4ttUWa^2Pa^1bh)EmtzH;nHn+E2Oy>-r+Y=$O5+yh~QQ+*^TxatU4s^{9? zJwTR^_S+GqO>wyX#1ZAC;_x0Dph*(lmrj5kuY0ivlUsJUL$tWa6{5JWS#wy_40%OH zWpnZ1b_?Ke#A+u2*^t%H6PVZN!Op{6G4y7j{aD7UAaP4GD$R}_ZC3kj)CbovN$?-j z|Gkhov|aHkc_m~myk85`WCFB>WmHRtPcp!6Wk!{8*YuLEq;c2B5DNI`EaOEM+9ugS ztJX*P=2!$wygSD_)crmcE{4z+tO)8>rRDL#L{+9A@6_n+0}z}`?n=fa2P;R9hmuap z<>L{gf%5ctg#NGnO5+pZ`tSEE-A;s(eagrabLu7R2hoM}oCSPK-1(()>qL_6%0BEd zSaSNpP~>5PlmX<#qas|H96_h?8~|3b7#!@a3veBSO=U4nwbH(kIMH;@Ko|#Ty9V3Z zAM}g8*)R4!73vpTt$pAYYJ_b~utuQcu)pZ*4ILk??Ebn7X{y}&Iy9^ncgGAH4wG}k zV@xeb8z8j1dzI!V6M`N>1aLb7gE<_xou%5k{oYFY$xhAR-OD-7F3g)WJTBm#gG-uq zzH;hhi(oUf!#*$@pFcty7d1b{>r^-W**%Ko)C&0W`^8gHwk$aFaXw={V1Agi=eyBF z;&@z=0%i?JP%3&ZV>=bXq$|G5E{*GL&8Ir9IWvgX~`y zH^$I}!d&tc;+dskUVR@Ll~tvE!rQ|!5!AM$@N<9`5U9ilC(zpVTcuHr9pe?MG%6eA zb@852NiT~twcU!lsgLOCfuT8;8knECtMuyoclC|byb8TRxmY%?!;Xzu;a9Rlh6%hv zd~phE)+supulnK2N3ZU`|J_@ec)D$qzEd#6VY<);wd&%O9|p4`YS&$(vio$8TCczm z#hzBr|LfgEY52_;{kNIQ)Ni^Hv$E}*{`x1olz+bI(aC-l3kY0=EZc$|gJY)gV`y)3 z!3k7se+Sle=y57E#0}=JMrGW$5%s$u$;R{=j_C(kiu!F2_}u?b-*$;Tx*nB2&3GA7 zu{lieB>Qt*u?k-`=;l?yA< zH5Q$A0^7ar*(y1L>_58$G;S0R5S%jU>OzEaieZjI?VJ3wQJGuboD?b>%Okyp9Wp52 zl{X3e1!g%og4YQ?n(?SXsVZ-)k6x>^I3K0oxmp=?KBnG|)!5_)gb^+nwR%o(W%2n| zjpN(n8P8Lv6LOuptNq4f-B`JBzK#CaT28I{nZx^a5=jsC@x(!3;=%ctWFL zKN^*cADTjiT=7GM*Z6$~W&aONYFEM}!$6y%zt?_fsqg=(;`5_f|3kjg`p1Z-CpN)^ z&AAznT>@DII=+Wj#ywq)zlB{jg~6pQFc0A?6IiW$w9&0=>70Hr0C26T?)<{g!0!&q zml`5|Gb)FF48!{UV`wuIXm|eNS`{B_K1f$E8p~AGMy1hD&Gp}JRJ#2X(schu;MQfS zf~C6<=~rBIwFZ~EKee^J2dLH2CzWQhGnFdq%dWUc4AR%2 zL{fgWW=5JYK87d|>0cQiChN`%kb8$=p`oRr``>6+rq7z^P&~|>H1c`j!Qxddarovo; z+=(fUha_V?u8k$$VYt2=+r`(17vyQ`vYdJE3uMxqA#l(W5Nw^N!38#%Ru@(tZLwmz z)V6s&uz(5AuZexM${}b4dqb~@eJhO0*-LMSUil1l4Tr>S^%q@CVUFOo;>2glOFuV; zON#M7_a<*EU;G?OtjfusBZK-Zqb_AEcV+Me$Z}eRyq~VGu3q{}Bc<)-sE|YOH}#Po zgXLN6kJ;SYpiH2f$pQU1ByLQi%oVOPTS^_D4#S6b;; zELGC3#57p86l}u0gcUd%C+FW+y_GMowABYiDnDPDOTJQG{UtnFSqCBZhD5?3%tvAo zqzw`?koXZt7Di^Gvi=v7br?b)R5N~mBwk?z+VIih0AW$t#AaQeC9Ky=YYfDhjSBg- z`9N(g$p1yx&)>BxNTgF^=d`m({0(kEqO$%U286{W4Tl(}#~0YsW*hNCpHwzC9OOt5jb#>1ThUgj_q+DFHM%zoQj`YK#UN572TpK!04<;#rW@cWdXd z%l<6ISkYX6yf?k<|6nm*_P1B2S2PPwgKx0l64o8QI0n1Vpi8*Q4f&?gT>Pkub)beh=v*Ak62iqg@E< ze}n6XBj^D5$cxq&hs$n=I%RAF-j!mF$axpW6OODq!e?`FMT9*&J+i(DAC=XDj(Y3h zbobfyQ0sa)WyOEaMGy--t;60`tOT>?C_n>Nj`VQW2jrI^-Gb39U~`o>ZUp&eTEJL0 zL$8mO**Auf?#lTa4M?qhsWyZIoI?CuCExs zhY=*_Wkv(mHDd^t2XsFEt%cxxj$*wzprb$B_<)6}GxQt|US>eZJQw71?Wl}i&fNwH zR*vc@$8L`FYFBPlLT`1f6P*X=(4C=nUHiePTyn<6(-S;6b*_MRRdoH zVMBbrPV-R@`eSgO zc&9}OlXM$w%H%$RfkuOizF`J4Afai*gMonqeu^7xOA{Y<>F*~}gJowu2LHpXa3t2ao|Nf5gR?aPvNNs(|?+ z@L?dxw}LYs^INfzBXRj*W`58H<=7t$e5quq7P~?D^^b@UrpImmdN-=2BUnN6gW$v* z!d<&GuZz_Ayo1AdTc=s-I-J;(9(0Xww+>mUJAZgqNjpeq0+^SK8BOfnf4 z5T0?7EC3_mu#V1m+$_MYnmw@fx?6<1XGc8Y;doe}{CX=q^k>PP^7#CSNxLvQY{qr*WZVfwG5!@=~p zqcN9hIS5&R=I_H1I7Xu+o0}g3jFiW5@i4;Fd?qlc`Ey;Uc^zH3S@FxpMlk*NGxKNG zD#so-@THP4{nskLK8^@sdfevUWLlO&7NGevCz$!w^SJqzz}TbLYN-6`Cd%R1jqq2zYR|BvGv%>UkZLxrlmJn0rUDr z$J8zDNnGu@-1^0nMkT+}6Z<;Apw{1yqto6hq!Trtf=dE7-xnJ}A%Ig-%)CLL zs^@FNOr)Yv2|iWt*M^x0p#e?q=wI(h_1u9$M+XMMO#mzfK46E=MB52bD-TywO(CtfQmvXSgE$F3l1<%ZU>IVQU{L1u*W}% z^_m0q`rRj8L%%3OJMnMtH0okcYEaZ6dQEZGpL9)HnjQnvh; z)MGB}o<8#IzpO}~VYJo_iLLIfmDUF6yYt+8Os(-;rPH&>x9pIf_|I8~?v?mPFAHP` zQUE#^RBs1%jvhXrg8!qKBu88%-F>pBBpgw8IQyb~tO7*?9oWZ70AU{|Z)JU~Q?SC- z$4v_q?OA*M|BR}6lRjFpJP)(kz}%nQ@86I(=k^;CEaZQ1VepF`4_Ll-8fY`-=6-Ct zkMBnvi4UhhyWPB9UGQG(0{!6oKYSP)_H{>~PW2i-VwlyDV$PcB2O-^{(fPIHp^>dl`1_m{6Yfa6kVL9XGhcojhzhLHPFQL_sn}2f& zt$vdEdQ8jHgUtNwz07>{bZ-6=VBku40J=mcV8t|U{|!t;yTJm>p3D9+Y~)DXxP{pt zllOmD!YNcwsn#oxu7m@bT6Z)aMpLC14lsAd>|ySBgHald@xaJ@5ElgT4jn22E=D*m_%qQ+<<}0Rh z^F4uq)!1b|9~g8nBA8(1K9Bj`%=|l>nfb8Av>J2sWHGJAOpm+wJ6llmA3+XaE`;r( z=4&5@gr~g^-p7g|^BQjA1B05cj-rBPSZiIy5F0rX`)y+8pMA`VAr&pvu7Avmq168+ zOwTKj1?a%Dovi=)Fq5bQ4`4j14%3bC)YCvX6Lf4F^|BT zxom4JMW7zja}b6eBQSd#8v`G(LsMYLPIfH_VWkl$naCY@!%Q8}!HVf};NAx0C2lNW z4vbkquLTi=5$LsmUJFvnGXM|a-T+jUr7-kpe#};8{^on!d`n>9UKIL7&94Rq9e|!p z@DkQH-v4ZD1O;FnGoLu0?nS926oC1-7d0_G?(m-vr{*W@P;b^J&D3!N$rSy@?&{A2 zNpF2@h8p%FiF*NGp2cUdvTyjpA9#`n5ASL5@H7#gHo`42cIRdpz2|x@_JZa&0$7e& zkI{1*JNU!#wlXX=lkxzCrdcKwkhxG9)Q$bzV#{t=ea8{;GokkDmb5^l~v$3EY?$Y36A5W&K%Rx>2 zT)Zv8)ojGxJK`U$fmPQ2k>@VE0Z!iGsouKi8l2xezoJ$qkyifriZb30kI@F6^j1kT zuSRP3L8Oh|Fj;+f5b30^NKn@fB3<;Gv($@&NZ1Sb%CXi5PN%U)aI2E}{*8ee{TJe- z^`DDpgRo74@rJDs-b2Gfr^{;l!K9gy%5VNs9W|JkL;slwdf>b`nvUE1tSOAlvt)J2 zU@}zi*IB(em{^))t#Y(G4&lT{VeQ_L5Xp(Ofc=4%e6#^m)d53DxZb#29Y2J$AO>~u z5YnhNMt-2Zf1q|WQ{6Fy+|>U(L0z6q+FHJx09z7x_t14x*DW18bWNK&1@IA1TsYng z%fhDoUV_yzH5Fb(PzI|_hm+9S?A8*9SwB!)3?&`B9tYM^uO8F~tM3mbM&qW}FeyG% znr>*I<_#tNe8<UC0Ccd-ni*(NhYuqyy8JmF{2UKqXIoM>mfA0XS{>ez&R_^Uy)aKa4YL$Z z3}?gL5iM+@x^oz5Y*XOqGy@L6=`p7xsOt)v$O9KmH)%O|sR}dMga_3*L0|wzX$1&l zUohhaI;NXwe`-UJs0kYDsnA63`hHi}@$M4NeY69wJ(ypiN0znU!9ZNY=hYpC#jjvS z-oT?zWuyAuaMH5X!8?%siwsX*#1WWoLIIK|rH+Hp@kcJTVdK=sBS=qu!i#Fi%cOCSjWGY&jl;X(o-@N^=L*t3FnD~( zOXp>QcKny*csmtGHl&NXX9S6fU4R{f6mc?+$)mAVr>{>B@ z$%nsT&j!cdcnSaObg(WRWgWmKuzVkzPB-vNDCt?hr!b{@uu8XZtKby$cBk5}a&Odi zZ1=E)JJS#tYy(%9I%9>k+U3kW@B*AMe8QYLGL7yY5XAl4G~7LyDCMy}lxexV7MJfX zda_mxYe0I0#nSWY_@(f3AOV7p7wt!asliQa==Hp+G$5mGi_u{Gi^JIBdKt*lKGFD{ z6kOs{f%V46XuWS_8qCS>A)v6revUt_`m$%&(&_p#)E^|^O(iH;@WhVhIULBO&uV1) z!18!zDDnE%zF0_f&sl-PJ6dIG7oYHVXp!;|8eU2AQBx%N5_8>Lx=$Ts>FSZ>F zk)11tnT*a|!p9Kc1u>9@ytoVl0QcNouDy*YK1G8YrygU~^k5SG&e!l>ic4(;32FZEe4 zY1u#RHLO4JO{rH8w1Mz{%k5FH0XzrW_&p!Izift*0aoBe#-}iLm_-%9(f)bptxhnJ zR3QYPPX}B-^q8 z-KMgGQ`OYQ#MH527LLf*&QY-ccCEHLl!}3s2cPeN*#c5DHPNPbs`^D^5~?q=sizu~ z4rGNoxCLphhBP6y>rm~FaoWv!Lyc(yt$N$kq$Z>bQPu1w#O#kp^o!!xbc20O;%n+o zXwhK(JlNPIQ4cLNq(!6Dt4&BSS*<>5Li%~dJ~ya6!iZUab)cFWMy53U){5TzkBt|` zQrj|Cy%k29>xciQ`h^p7(;PY-*0FGn0E#{J%18e5=icf|;bemT;s|wLI0@75pQFZ_ zVApy-oS4XR^_S*wi4`3|BE8K28Pp*W#H9amfckC(8L2;&pu)qLjq2z8=Y{XQn&HIr z1z0lzvd1cOOA`0BFq7s)-)ETmQd81o+)h{_@Sii2?qx0D>NPEJ7)15}1)vj&1WvRe zAbUDPKt_zhX~3rCX&4NLZe9t#5Le4;k3TR6f;1D}Q+3_sE`&GlV0$~IpL(V#iL*K2 zp+TqFy>r1QGBOcj&-v3#NJIKnW*L|46r{&-PoTXO=?oYDv6g`JY!5#gX$Pm_xD$`u z;mx&p@O%;(sm^UiLc5-y4Q>|v>2mY2RxuQW{)MMraMKCvV>!}Jy03%8nw{D&_7OZ1 zTD*(}{ZTX0s5|r&^v0v!A4hm1G7zqg#E5i7Q|G8=j4U2Y_aCZSVeItHK2#?*Cq2nB zwQd9nRZlf1L2OuKnr9`0{ULl4%$|0M(O!BCv4klf0|5=_qjrcSujxs$x+sza2Wvw> zAQm1q!I^*?c6@W{`yuL~NYXfZFEFW~a|hp;n|Y^_Ldpa1gIclX5``t1UO6N^WaO zy6cDaRPVMVD{Qrsz}^kFE84#=0d0fJXtpn>FNPqLz+HmyTtd1bqcLC0kiH8dbR>S) z_9K0g(HPD`q}O@qe55BcdPOVJutR1B3^T6E&R9qr*EL{}?}tL)hc|Zh{ZqA1E7G$e z77^!snlOE_vO@^htDvquS+AaKMPkUO>Z4Yqjn_*L4Qga-s8Utku}XDNr?n=->u#uI znPrB|8sA;L*qS8v$rQ{@41vV}GSBL45BWl0e;(Qm`H62O;-lUP+Cdm7x-cB)>#bQU zU7(I?L)tW4g|1Dda|v9-=dP-(>WVg`Wm8;G2HK4QIUS(;JZq!116G!;(U6c=+mK%R zNmjLKThg%GC}6-TgxUEFcJurKtq)+%SsuC*(w*Ei&I7X+ZdKFUk`D3r2LSWv15|JL zxhwVm4wQJfE@X#LiGz>@7FbW<#7BE^zWPI3(vqxF|7%N{gk*pQd_FJQnRk!7j9ZH_ z1Ju}dBy?mi$_A58GxV4D$gH)d@DcVjC33@Hpdg+9#G3)GbT+__dZ5DyTZ`PI5EuF! zABG&Fu)ZA$3BJ&u_CA_T+q103$Yu?idv#~S7Wj**sN9jlG)cyl-7VjY@0fSz2R6m5( z#cse`y{?On-Pj0@&EaGnuYjJV&{KOV38&^M^wgf|ai1A3VOspa3SRO&o6XFpCvx-a z<{FiRM{)7fx%p^dQ1jO+srlr&9`m1LBe(#Y!p#3VN?HG?fiIPWORiDMkw+0BOpn|A z6sF}y7Qf<}#mpyl=jK1iGOC5%aA-c2+xG?zyXJa8?MLI%$d61jun}Byr8E0SMymA; zaAr+K;i7A#+RgxH)=ZPzgP}~%L5MpB;K)qoK{QM-c4Q0;3;^D(!1!0Zz#Ulk2X#P) zD;#&=b8G~M=98HNYevujP)Rs5A3+1a^tjE(GA&EzF!O6ZWahoW3N_yn7^Zu1@tCV< z{xD7)yoGGLPt9L~1Wj-*er;9`_GzH((}S z@lG3k>1CK_cpad^76=|&(_+AA*NTAb2RM0Q9oUBr_%>-Ov?=Wqy%|}Kpmq=*Y+?A# zb3M2cudyIVWT?8PGx;_Ix}XIP^&AWT4H}?p{idsPyO55-OX6WSmotw((rHMVK|>Ib zyITF^1+T{HtuDme0{jMxTc}0D3mvdC{)Yg>i)}M5FELu&1#h)Y0%_S1V9-4g1~19} zr?#3NvOdsu!}<*>wlk;4VI$o6pVDey_g1qLNL0+OGEWyT!qp6v)fi@X2MYppHkc~6 znzV5@yw#r*NDKXoXCsUS10ro7 z3k3@rrqGc|3`v6!{ea63d$F6g$zg4R;;;==R=6N~pgr)zbE}4vCxeUl#ewljzB6tdt?o#vIGI=Yh{wi8`Ipx7M<==jg$ zgpPl1bafn)%E?Y>VL{g%D3|7zgE73ji#wc-td`&w8{(CqPiq4E9XfH^;!5RU!&dmT zTD2w;f3iaznMiuHen&8Tua?U&W|eao?GhNKo!YJzCz9}{&>rk!*5FF+qgj4~aKlQ@ zpKz}?RehF7B08ma27g`#e{iGrHWE3)RsptL+F$^2f%kE)g&t|wI;%r^5R=!K_gPgu z+@6=Ei~ln!Re#0BqoY_AGk`&pw&x9+w7FPid0Fa?jo?Na+;zf5F>#>s=HCr`sU+M; z8>r0wJ0fH()#ENo=P_OEhETAARWWfgGoRm%o8K{o9ZU8aPvz`}WZ+Qy5lk`_mOz*N zCfLZ4_|BWmei&?#aL$NN*ge6K#`0suW66;7l=KwoofXubKhxE03u$GmeghS@OM@ac z*6Q$%iiUB)k`fKi59eG7$lig)tZP^@)VYktFk?%xJ>K%$ORL;9?P^DG!F~c>NXE1- zM{3?ZpMJ5YV=v&FhyIN~Gq_U>a|**S9`3UZw3lfYXBl({z3|hm#sAXM=l=&30r&#c z16IK-(5}=w60X3oIS94{K>G}(<^fh5!Gw-swmAHcGoji{2>4v+4tT3gVx~Z-1u(#+ z;ZOuXXgLVkAecWvBQOP3nM-X$sRXyFTg=pE2t7!pF;nZAkjGRy3VFFrLC4V4hpbcG zn9xL7sFMw)&d!8d;PBt^wh=yhbs9YC2PgywJjU0W!8ebYr>}#+8W3P%*w1|13WE&3 z{mRN|E!oTw6iRao8JW;IuxA6QA|`bn8i6U`@i1heR42F8V_<-n9YG3&<}snwvQQrs zdj26DT=1WsF+2SISr{gRW6-_vObEx;#s;?*N}Wb2I2+UzcVec>Sj3w$QyrNUu(*Gx z$AHi>6rve{pNag}DD=+^S17WX&~E4k_&13O*JZ9$_)6w4rf~7R1gi$05c$U1BMHNcY;ZI zGNKtuMWHDg@v}_m7Z!#+OlUC^@=V-YaAQNO%%mOa3Qbvu#zQkc|33#cHJsau5=WUt zxm%($lYsPiD2HGw3M>Wz))`+g4xL%f(x(OU>oK&cVWl$)*+zpD^w^IksNq$p-L!8Y zJ^<^uBe4XU75jlkE)1pUAGimpnVI0v)QDjr&R7fz2u^2Nz5oTCp1y(LZWR0-PD#LG z0Tr|v-V`JUG0DLwdB29_RFvEflAz@c_&enldg(gW+J=?vfE+x$hV#LMSI3-ieLn%c z2@8SNP{}jmtoE=l_}kf)p0Q#!0^hbM(YG%gdkyb|Row8;XlM*CYj&V*`l5ow^N8hC zXVlX=utsIH(TTe|@X5zTiCfCObXsJdNq%K>ksdO!_$gP!JE($&b{ly zgaU!zB6Yg7LaM|6F{s4FC#Wtof$s&5a_bNs2mxj+D7XQwK|vola&jpsbtyQTLKOsi z6sUnka2we0o;tLM3~!IER9;(9P0u zIHLub=9qsYdwQ-5E@LTz&CLIndv0o+g;fBtwJKsvJ`^7}0c^qwkIun>X{~zj7r)?M zAe=uWMJDHzz}+)wI{;$w3nqfYFbIDF`WjBcZ)vaSV$1?~l)#L~D+v${#G&esK>JR5R z_NiuTX}?rZg4aOQTYDdRDKN5gwK`)LN$|Z32?%+*di=hFyNECGa-O9d_8|4jZsO~e zA8J(RR**2&dk?AawYO!p8nTBp?wsEe?`^}^GMr;-Y_+ohcV2c~$ppoYf}Sh_A0XcE zJoZvQIYEMly##H*zjtfbLZ3>&HMolpP5PLe7jUQ926fzYtJNAKt$OI%NWbl&|7}sN z{;&sbCX9YZeX@si(C>bzw%$wH>7zo_(R)b?uR+k@qrGIB*HhnG>eIcXmA+J`M(rbQ z8)I~>j(IVV_eqX4cKM>h&P?n5ojP$JoDEh6tBd!MMSbTMdXnWw+`2j9Hw}jbv?oAK z!E0X=W}0JmAP%*Uwlof4`Yx*dxYcgO?^QewQs3B5!o7xctX8x3lNGJ@HivG^h7Qw* z3x;_DwdOAvkVS?=MjD@Do!avNc_Av3k;lyo6PS5aVINSKr>z26=ciS!%O^d5(yxKL+Jbw28AD?;bnyxb*zT<`%B1g%lP2%ltJJyoLRtJ)Q-S0SCW0I=^*F|Ehgjqld$bja8TeMsEq$B>4qwtK~mauBI#Zi*bdvX}GZ3B8)qQ3zoyGVQ;9EL#l55UMIj;hBF!*^h6 zz*nE(UcVjB!?og9)dEmB`4o1{K@WnR^Phw1Crv={_fR<;mPmW=Xr~=OaQyO1sE<{U zpYD0-oCmS-chK0Oq+*Bv1{ynj0H9Oz#sUO-`HAVuaUd^~xF&V$OVyb#hi@ z0xl$YI-OaUy)?bW=Y~3P9hnuO!WDgK zzrN5CS9Z%FeAT%REMRcRuFY&yt=?Qmti(@kR{&>A|El8)AZvEqP)@YyzLCC}I`=b@ zqYtW9eKwG0eoqX#(s@>h`U5p?0~yvD<7c(Qr|DK7!W3^9S>yXUR>v-QMH6uUK}L1w z1~P}#Qe!?R5nj(=%D((Li6VcfnV*vp`ha=rxz9-xueq>jRBs_6s&ONEN&n$5>hO)k zqBjjyv+_t^_3}niKPv0Z^FFMcFb3gZX%71wBefmxQcf$E159(U-&byb_iUclEf5pG0AlF;944IB259H2?n=wcTS)ro1FF@)Eu^XMU(g)-dGHVQg)KyBa1ln2 z4+ZXg;8T|lwPFh-K>D9F0s89~TvP{qLEek<2Y>V)e;i0V9=rUaMLM*#?Se}4=^8*8%KSI&u zbM+BtzPI^b0j&fs%? z&}a3dZKT%=@Ru_S3N1ZSg(^SgKiEesO8n?Kx=e2w`e;AW%z%SN2s1t|V}}PCuUpk; z+erH^G|SmX2`nIC@MZF$F8R1fZ88;)i)7Mx!*P~XJ+l&~{><&9A)TboUG&~?HYOab zp}yeMSoeKlydjxr{$<>_cAy}X{B^HQh79}S+x(TQ~j`vnurqV=7teq)D;wLKBq$ zUOUftsqGh%EU)6TUh2+;Bt-vNBlWw5B+<+3Q7yHOgY@;%!Dl#!IY@7>i_kXTL9Tc? z>sG7NKZe!h(?ZW`;;SF{x0+Q!!d1GO{QWU$(Wd?ux|)0m5wLchojfgyt)KpU{e;h3 z!}14T(3#)UsE!$>Z>vsOM6$ic>#EhNMWku%E;n6^%w08dG3nVDg9F=koGR{Z`y{-C zE7_#ZSxmybru4 zlF60C^i4*^L5_u&*!u0_wVt@-sk-}=XGA^bzZmgI0D)p-JCI^fsmMz4dwqW}%K%$iPd%0YEH#A9nE-f^~ z&0tknnI}<;ZjY^8D`TzxQ@_2+)3?zTe*&3hA^Vc$Zw>CR0qx!7K~H+ygrj0@TG+%! ztWCT%N9G+d5(uMNU08Q^)zcpIbjT8x9|0@w8b#bD`IA7{YB6@0Zq-9$V`sn^G&QMR zX=*yANz<-E6&XJk7xqsu;ARSFVsie_%^rdubMBPB<{>PQDo$zrkSFD$A2DEXIj=K{ zckj5(d|cGS$xMClAy3<+38%=aawRj^-hLZowg#Qj^;aV|rT!^BXtk&Lr6*5TRxv{f zjv4wQ{QaN|$qF5&*6xA@j%q~P7fNh$Cj!tFeNMeC0L z^R)GD=ZSMYrJZV`3l4hf=*JgC#!O6r&mUS>6v?{cT}1UH6=$v}Yo;ib{?(jQoUO3U zFV`%kVqXYyKCuPnY`vEOIrC+NTwD@~_g6sv8PdGZ>(wP)Ycw8HcA^s3Az=@!j#R*L z9GpW#W67L83~A$c{HzH$>jp>#ftpxpIi1&xE8T+5Fvl@19||PDJhuz!I7cKzZJiM?1KaI(k<@WE8(<{u$`O)5wlKC(#pjeG z6xPQBYCJGLGRfB-BdE?opJSE`bAtxenLA1v%;T8u0&7_}D2~Zk?;dCtsa5X7jC zsqUZ;H1IU=eFBVy;g@ncs)@^dX9f!ba}aAd4E8w=UIFR;;AGx=UuZHL${=v7rV+M$ zO8Q`FJr9Rb&U5!VYCz^kh5nHxRq7-h>ddhu{&BcwL_ihzS0?Mvd#Pr=Lxzyt${y?= zj2euXggm}o_&F0X`FYU=h?-jegZaTj3b=l-e?WZo+K(Dw>6xbsAbQn*z1#enk@ zZs{FqIr^uskRo#`#bMyBar(poq{AP7g|2_H@7FpwzEy~1pB{zf*QVucjYi+OTllXt z2>AvB&Q@SO>95G#0qqf8h%jc3)#laUxW-&zMg~~bSuO!1%Uv{Y4DQ6cv=M)vR~$~x zc=F5!)WHw=1=x1b35`{QI`hq&BD~3$H;snyO~rsBAQoY#g67LyA}>AYY2_>497IM? z;R&JYs7!-p197Z_(?W7+43n#_J_T?qOAd1z@f}Mr{sBNas}KE)mceNJK|O?DtWRfDV{NZY_ejXF%mg>aGTh2Ba=S(Uv>cbmGcW|h zi>wS=IDI&gNI2^XOwt}SLr1(Nm4w68;oCh!&xq+3tVcVe?cJPmXKnZ6( z*T0fStw5W(AOK#M?dPu*14?wlQct5g%N@cR3BVh5M+3ceNo30#ua{q>dTwAdfw)rO z+%W6H%=K@!q{p%&4rum7H5?O&GG|Pp3IZ$TNB{QUQKv94Q@%t|I<7u^5PXs1ph=&8c+IRW=OVjAaC61 zC{BVob7mG~2XiO>(m;+-4@kx=e-5a|YIVOSWLxUjBMwz<%QK)asF}Rtrk#ntm%wfg z2|#R)2ZTY7cB3I_WL<{SYCtQx?V0`dksVD|cHE%OS zHVbfMjc=FV$hX6huqCfgiAP%YEISV5#LK%6q3Ni*Q}P348^eFNj!5%F3Jz9U{_72R z(c$5>1?@}L8&v@BuE?kZ>ULKh%zz@r63{VM)TH$`Zm7!WOXBqL&ppj*mwbVpo zcla2ni76<%lZyzyxDoiW0Lj@qd&np7LQ6ZN5M=1w_sU+V5m7V3lN%U0R}USalDfTv z-wVsL#$dY)KKJB;zWRa#%AF zX$UPS2!HrGEK14OP|!u3)Ief;Yzc;`>K@k2@zrLmw_yOYY4Z+OxwO&r76bbDSDv~( ze+3JRu8k4?z9h|2SfbA07#Z6P)ntA1JX;%9XZ-1&hawy5t%p6eZrFnux*NQeD*)=h zOS3hnBy{`1fVt!|sHe#$J`27+`%C5dQjk6x+FPg=m@}85=E6WR)CAT!a)bKm*}j6F zxP)N#T};^)X|38Bw#3RDwrx^x;t|X%L&wTX`Z){_*|i9A!`o!U%y z{?^m3J(dqpxdY}xEd(bDtd@?~90N5hCks=aqIZl|$ttIYe)L;x{I{>6&yQ9uRZOoM+ZFk8pWhv72O6jU%Ko544AGp1k zDnHjhaxUT)D@t}I`BqRy5ww~cmN}H$1n(BUvjj~tckuIzxmV?m&z*qpd!lNdfN-aZ zqX0YC-{r;l%2ol(Lue(O?Jrw~qQe3~E_Fr>Jp{!czerDeH!>!dj4s;-Yz)R{!@|H^ z%qunm?*U1z2TRdGpkbkZZv3KMV!0a@1jwntlce$q&T4j!nKlKCbk3 zk(!mu^u|f5bzvV7Y44#A!%YXF@IU4&!*rF zaxLuiIMKl4EH_7an)BjIzUUUJu!rSqLgj5Np8`s*G7)7%1{W*$2feJ`-U0ilmXD$U zb_44uf4ou4j#fVLfG4Tj5}6L~&^Jk4Lm{Zwc#2TSCyExSb#1xP$^+{Fa6w=*f1_BD zboN=8A!vr1l6mO&w;d4CB9fTg!`*OK>Vu#w%98bq-+P+p<>baCz?*kGgM41qeNPwc zQ^QAya(o1+@daKwELjKm2Nxm{wpC{tl#$>2V?%Qx6849qRAvqR#JVJ)I;e55D8U zO=mFtts;cpnRN|M2eOyRlSCq{{$IIM5Ld=cW)lxPJ=lM?kY8#$Y(-YeY}g}ZCNQ4S zbMwnSiYxsF>Je@_b_Dtvw|gI6h~9$RzYEX)czYZEgtUBODiA3shr$Nf^-p22_~>kp zh`6$e*cpM;EZaiM?D$iGIVDtYc3E&gWE`^j5!^3Ao>uH1 zSVxMd)dfFmTSqqWt$v8Y47W-Q1tveZ&U_RbV$1R?`lSm2d4JhCw6beKIz!PY8P|T` z`JKU&<=rUf24uU${_Pi{pM!82EAdM=hQO@%I9~beak6O*Uo6y7X=fM*ht_F)bZOlX z1v^%L6vu4jD`3QGei?PK$a6pLsUnq%9X|`~OvhGxmglEYYsoe|SgJI3z#C$dQJKDZN-Ql9<% z+uWYauoUuWF-P1-W76blD*?Ar6=0WufZ?wr?~sAW25E7n2hq9Xpg|pNyO9jO^%IQL zJ_K*oAnG{7T?MnMzAEj3&?E)g!dZN<6VYdl0lTp0*|^dKJpAA8pf3%qBqN+If`w01 z{SSoNEf5nQ`xmZ`qj1;3K5+G9l=VNDUwfZTHVA68&nrW<=SgkEvc(DyGpKjPyq1j$Z&EI+x!UfR-@s1TkFseEW-eXefM$Q ze2z*=xP)B|!as7Ega>(FoqqQ;ZnJc!7ygqqU{8=20^U_S_}MMFy>B0!1J0Db>2gn^ zZ>_9La7v}g26X^0|_Dz40;j>zymh~>g%JoF@ zp=ZLcjA?ro-`aXi$eM$ZpS4#?27}=jtM)7oapkfaI4uY_ao?N9-U!d$Pm0hgbAcbU z%J38r=!3?Z1Maj-@sG^!_aw4o9X83!1sobB6=T_kL!9<8SS4#4>S6k5Gwmy26Wjy? z90Ph1m8^%M5%T@sce!*hdxm8@J|`O{*4x2J$?E+bCl#W839C=Xg$vf%_ZeYvBp_VZ zB|(54U00iruCA*DIqY&SiQr^x2^GkzE?l3-b*(h!aFPjgJcn1nrKQ??7PXw98!h$1s z-5yW5zJS@X8wAUQfkuG4+=15NK+C=7){9!6Y~KRhtuvsx{R`*_0)D?ubnhSAF+pxB z<3P@%oSCK;u3((w@@T5yIMKlGb1TS(29Ap>%>~Z6(*;C=oN{^z2BND!^`0UEWhlH04x0eHoW7{iaKuAILpp=in z*gHAjg4nMWE@Hy?SPB%D@i(&-cu=^|-BCCKa#_FN@-R26#Y4s7uZXi=M?fXl|DHs; z)4gUdem>j!4-eqFu`4QCKMf24J_)rETCaUez>9e+nb8!b;86Trb%}RYIy-E=*o|P! zQm`j{H3T&7h`?TB_p%x$^Q01rbCKo4#w-$Ph=TQX_fV7E7-@1Dn|R$OAH!^eesN_* zpR(p*YxQNJ7Dr4c3(nwh8wGNV_dU$; zJpK~M`s*}pBECO5`7Nq{WEL)-NuqkkV0C1ta%_RDgQ#TP`#GlF+>nt$pQ5ab`SCUU zhyc{alRi|MTD?+Tsg$?^m0X>&c%|r+o1dfkF&6d&1}#!G^#`JO-n!=9YEr*}%NlcG zayA=Q^G*)~0An|k?REm;jMbtFgux~DNkG80VpA}9bFEkoo*ay+&cn5*jPGoZAv}>SoQOPmBS)elFtK!v(6$r)N1lsh~L@~3i$1M1U6iL!g+Ri zS0DW9?%!YHyn76nIEmShiqffnc^c&HIEl%H)Kiaqj{(Sas`80&>&J2I$MERC><4j@ za2{oKD@8d8VDlj^)x%e}(DS9NPlDU+Ff8vG2{J5G^U1Ki-Uh=~Ivjwn-GVR|J!599 z(0`3k_moTBx-h2Jb7(+a=3&D*Xy}7oTYoCVgZ6#GgP*Mp@!$~`!oF`!ukY?ch%78qY&U>4*WcjCJNGXnsLJmj1x97JP#$<~p5_qL{agwtHeg62jx{)EXV z#|wXc^R&bB4u5jKM1nq)T8W=w>Rpk2V>$E@_!PtS_kj~(4-`-0sI_J%#?=c20ZT7v zaS-h7GBH%t1%4kSbFP7#83uO};G)gtY~!c`QyV*&A8VT(2_ z%)u|#MSOZr$eWlN2Hz`qBe>v;^CL`V&c%{3e%XNr%>?Lq>j(>QgfNK2JMh6;chtKX z=PviY_EZSFAdy~xkH)EBN|lje92TxNl~Iv0mA9b1k8>%F-MO450A_(1z9a?M2XtDY zf1FV54|g&KpqiCK1eew2?SwFd5eE$uqK}oF3<6k4tBgsaAtYyDLp}hQYNTJ-y_ozFg2kROGW&u#hF#m{> zwd0SF{gNgPt0@Pmb?)CtlO4({L8>c<;dm#?;SBL)US8aiR#-Fyl|wQLR1S%6VW_qF z3px8EjPS1~UCtgM#Qeb>>9Ma_D{(0C0(eX?iXn;6s2!jTx$ z4zYG-_L_%x!zRg2lXy0n10T*^8DOD=Ca%;D!!PowQi{|M+fnxk!|)4!uIUSM{N8dw zZW~hkU1HE5k+E$2N{DxB7%?6()t81<4|3H)ROe7`WnVu-DOxl5)O^1{=^X}Tv=3k| zplLr4sT%;3rhf#dTZwIXHuJ{L)(wr$g{sm#JW%CKA<(J!>*2j1JH|5)t@)`Jt{Z41YUTEkp z33;Q0e(JoZAoBXZYwF+6d-^up$9(-j){T~!9P@vcgVnOg(SOujc|>(d z9`y>7k^c~v+uMp!0g6eiSKk<^8h5^fdC1t*-Y=oztiOP$b^q;-%Nu}`$UVO@e2@U$ zd3&$dvpnijmA6%I^Qf8XaH;OBREHW*;O<^MY`-T}FHkB3Db+`n>KxyU z4g!TcFe3%tYYp8xQf0&^y+ph+sQ&_98%Ln7i&Qrx)S&XLRb&==*0gX#YN(0XOat$jSt%aeM<;QNGAw!27*rA{zO< z$vkI6YsW2L1V^G}PO@MBj`b_8o3Qr8&$H{`W3>_x`5o23CEvFx({ z`YJE^Y{U=}V^%zbGTN>Q*<<`6>j^Xv1om%m5IA$SAn-UG4ng2G@E;JEOUQxjo(=*h zcI$mLRr9v_VI9_Bhryu4z2w_+@2OSNeGQ!$rMk6v`4y1h3+PHG+^~k_W<91o}`JesTza$rfN55G`tUO-mhceC#;FSMcQL5n;=TOrcW}|mdtn@R^x<8UN zrsHM}*Geq&a{P1=kAhGBWs_!TQs7);-$Fdq3hNl0a(7vn;MJS%!Yv2=qg8{;E75{5 zU+77gxOLDqRrvxq>xUn}-7_joydIMROftc5Z1P+i)5IjH-HQ5rI}6uZyb!IL#h-i{ za}e;Z0RUV{QW>GYh*qsthd~-#)kRqkkUJaeq8JFrPq*t;F)Aae#{(C#C>nkfqZ<37 z|Kqo_Kwc*PcJPTCT>5eo=*c*kL;O7~Ux!7zDZ`yiqrKj;^1{AIK7rRh3|@fk8@IuX z<>Q>RB;nXsg9}_$V+|U^AkBz)?7zi7r5~-OMmLH=8`(kY3P7e`NbF7DnkZ^&4LD|q zqHfGV~F-x1Afy5wN-lCsofCbTL#W>MsoW`U~+G8WZ?5n-(q&sAh@+v zr!GD2zi>q4AsNv+Gz$r6F5A8Hw*I@eYMY#j0vNF%Fglq+I0efdh-&R$b?-VVCHeCs zRetSae*N+nJ*$q&Y3lzP@>6akGuwxT<=$Q^L^RGt=nw0t#5Tz<%5pH?z6J8&U_k#O z0`Kh(f>nfdYJ;vFtFH0gcb~Kk&O<#+8)f8XP|AMYD1%){>36#vKVP~W7uL+x1&53o zdEpzPf0PZZ4Aw?69M;(gwrYYa_ck|eDF^xe+{UZXnEjq#?;wwbo`^@Z^|QQU{Aimo zVR>Qrd^k^cuB+O$eP+3g<2-@7Fk2dg&H^D9{X6FAJL{_Sful@yNhx)!fAlA8dr#>M zo7?u~z}ETzMXMG5v2O-GRuew)bhMR#r{k~c1AB0~9xjsl62IwjgV&MCniVdNSG`I#e@aas~xI5ZjWeyyaO9UdI_Ch4VqDzG4~KrA1amk?yq5GiuP7 zb-?mNM;t)ie3oBy%H`Q@p)joeuqOHbw{1(fB?lm~6ZpP^ynol8g!k5q>-5kbs%2C= z92zPNw9qGJ;Ii`}-BnEEe_-7?=6~@wzrw-&nt1D%O~idf+cBR4;~p^V!1xb51LGgD z?J~s!jNkauV4PlLEgYhM>8>tmed;;RKPLP5hg8=<=D->t^D_uYB%5&-W;}0@IYy&b z1(`SShRAHEl?y{={YHaKGO|r4CmZs;foC9-g_0oi!xuqhat9k^UVgSZGRvO?GB3Oo zhD_(@^u0Y*Q{OOx!wqN{5|+i2v7>=v;<$s-$^C8IYq$y_5dV1%*Xyhqhmfi1GRCj9ulu^Rz240 z_u^GEmAqE}guflmJ`D)J3ftfU2^5Y$4%R9K)63X5A+qS;aL+KEk)V>AJRq-Xq#?UA zg6ZoukU&IDXnp;(zB)mrv<+;=&8Gh1WPIZ(8Znt%EY+QQ3`1u%faKHU^?zMIpP>^r@rzUr5;wSM*VwiHRu%zB@HklvOKbgUP~g4z7u^)Q05KX|(64h_`R zzVj`qSIvUAKF&Mj!<9h`xH8NUwiX;>8?$z9Dw&}XZdgY4@pedNyxXJ}n@k^XG&Phw ze3iaHjWlYQZr&PS<#i@L(;6+&fxfzlO4qa6sisM6{=NjF26DZwt2*=0cxcOYOXbyp5^e@sz%6JwYZuej&8rS`{k`E?--;l})%@@nl`KRiC)5Y;H6W)?cQh zmtEBsNKEBC3))ikilCAqmycpSY8W)MCd>mJ;NjvnFsv!ScqW7`y0TGBGR5~~6eoBT!5VK8H80*M9h;Cqg7NdtM5ttn6yLAF+8ht%R>AzxLVe;;}SvLi>?JRj>BEmW&f zS4fJ3D5Rl$bQMxR6s(u;heGOsC&wd47#>z;@M6&eIYA8>zyy?cd~U7~aTQ2bUmt4$ zB9b@370ZN(CFa=QZ{!NqTla6N1~r{0Lg)!GB|M4S@eV{YM>}F@H$b$9%k&p5!38s* z3PMCH%MdjbCT;Pe+!_ritZF1JvrgP9lLbwS0z z44SB1|3Jgkdr^>832v?u1Un9Yn<(MydUQ{{dp}^w`AXt5tAc8^?02qi1HnuRq?g-N zbJuPqLqYps>#*HSe{e*y;iDyWT3lOz6BgJ zI){n-9eXX(o^2{cZhnm!wXD)`tK8wLE?%Z5w^nU@Uw4m;fEmnQ|G%0MSMYA9xUyP6 zq`F4Dm~L!^cM)pwzpy)1tUdRFN3uEpCW5z(&U9`QBdw-|^A;X&W+jNT%hkQv!FLJamJ=*w`C zOwx{-7fzBeAtuRQg~f$+JNmGTLdjNBS)L%}Y0dj{=-Fc>XDBNcu&nivCfBCj3?mbs zNSCk`iFAL1YGDZE{09PZUXTbR6M=K(=;dNeiP0A5O77cg?j#s#X`hi7X3tV*;(8 zVSWI@nD)0zWc^Tk9l8+zaP6PEsGaJowvW`yv10Iy&>PyRR)h12HBQ=;P(KgMPjCdx z{tG^b93?qM%s+lfWL=_1$lgc;xlH!P-%BA;!DLol++H=F)BxF4PJ&YmA6={Q57Hj3 zIRVVZNj^>G)5Rt+4}8FB7{gcpAkPX~gynpe-$PoIQ|`g?2Fae(GdidyzHQ9OGHL4@ z`RI1F1_kTSyHWc=sgYOgIPW!ZzBp)_=)7~uU=KE_wAPwTN{{P~Oqyo|NDKy2AB_w> z59xPPG4<-)g2--5|^AJT4_^kYV7O%(+6Tu|4ZCQt+cYXsigahU%aBqg2lB>i)Sit{wp|757nHMgL_ z)}}f$Q#HF{I}{{F-siQ@$hVH-n!r^&KR`0}B)}ewcOLb1_p%!go1qof-WHEmN_!=_ir&HPlbxAGV+XF%m?7v zk%2j7I=ZWh^wtU z=hDOjK5V5wk2K+*Iksl}u_Y9dGvL1g1tQ}+zbQnlbHi~q;!O@5POMm(io9ZK195!9 zsZq8K5+ZvO>Pe7;;seYoC3M(u#eUm zz0{zj%t6%xewf*PU3G3rWJBev)W@brwv7MKM?h>#>vz*keV~_Ws*knu)~>S(KjElk zG!8;W=$megOpLq*ttQ_X*(`Dt9{haB!o%}7Mz)NM!^8d?BU{xuI$v7#K&uS4N@{Cf z!age5cLy26?YkrKJJG|%kM?plk%ObXTA8;+ zVntP3^Y%x?rio|1S;gV77IbF(43T-h&p~k*Q&;fZ!#Y!m&hTUwAESVHzE00k%@f%# zHYL`+z-TX54S~e_UeH(OsEeAdNj3|XASM3lBVA)B!kQ4NcW#bsRQvw^Bmp>YR-W!O z46damD0WMnr zLLdlAbZt}mMm$YTh( z2_Oq!e9>HA*-tg*>pH;2sP)_!%y6ajJF2O;TZ6g@8h;*xol-pKYfY` zkt%M-!{t&Z)Z{6HfC`0URb1(NP{@M%pB-e#YoBKC=dJm2KkWsVeGY??6J(<@@!+4+ zgP8h0;yT7(#ubGeLs|iTC%H#<1x(1@lV4NrOpIk_E=chN8c5BAY!mPQmI@IyKeIy; z8pv~qDKQnMFpN9gIS>(mI6> zY>c_gbX@W;ETx0u5437P=3!h0Dq^{cFR%qi!eT3UGNUR1?{?&3z$Y5v@!?lwW0vq6 zTO|~a$<}vacV>7lWor;5Y-?tFzUks`(MX0ebqiT9>nLWxnz%T`bb|(%y7vHWFoa;V zZV2l-`lk+A>~hj)@1{t7(`BlG@7Y1lv@QhD>KwO`jWNEGu+C?Ukj}4S=bzmb>O6r+ zq3*SykK6gsVPT!KZzj20{WfuKDunv_w#!s)UuU!x-ntzPsv~iQ0|dYUVH6>Jd5(Sb z=jNrM$cVv$)R#z7KRkCk$;U8{Z(%xeisgJ$)7OWV|404PmzH@=y zh7LwbE~WwKojvp#c*Oqg%g}XP>GPR*NA7+C58-#%?bZDUsMMGjA%plr$8DGE8waS- zs$m;lF+g?8J0uAma@Px3_AnGy)Z<`hW5{TF##lpsuBPlqcSKk2X z>T51lsdamxRUmYO+@Nb!YV7M+hKUbBm8^FRRhRgB28rWb^!gjMwz!5N-8h2gCFpdG zBa?jAF5Kzr)l5*b?)<}L9qOIyj8(Gs;#PXY9ekTB`Ze}UF_d>eKXFIoMe%PuCL&D0 zpupP4^s_~(S+iH2i)o5oUm+Izs2Di7&{kdoiHw`hnSrnKMcV&P%7lHAO!%Ecs9i)LL=Ag#gkvGXKSIRs9UBk0vP~EDk3iluaR-z;-W%wfi(p4=atV-|A{~P4K81 zZ>kov>TO|F-)k*ZQ`({`+>8wC_jZWUIzl`d#KXCVqT`LP)5nLa_G(B=ojd}0AnTKL z&k-v9l3AoKCpnN<^au?r(Yc0w+!{}rH@e`F{}@KwWc|npmC~l+jV2#t25cY#dTu&M zGS;Eiwh~h6uyyLDN_|Nn5?h6rNIpo*yV8kQ8KnqeMSDniR9TL3Z<(ksyIc)a_0si> zh44CmYpq|tT(zltnK%5pTYcnmm6!T?xA3`4;ary0lxTv)5)Tg6%WqQ2@llX)J^-J^H!1{x7sm=S+!yaMgJb@qX#USzjc*8Fl;K**xj20gE34&jfgXfp zyea~H-;b_9QydzYGy=KmF25#H34SPac)JZWi6C$|QT*-H^O=UBjmkr;JgD*#v9@N2 z^36-tfO>6l)YxHYX&%!;+;4T_dfjm#bkE!*eb+!_gqI}g4Fj=7(>qCjJWx%pm5MA0 zuIFQF%T=*43nk;iyK9V|mX95Rm9vB11@Zog6J{<+2q<$0Ew1|>iA|itRxf;Yz!i&& zFEZQf<0VIrj*%Ge60lj`O4(i?kPh;6#guS+y~HZV?Itd_EvJAOo9%vG4e3Qlb1Bfv z*3?K=Tk7bG3sj3Caiu*V&Q2smVsLIGBn9uS^^*`INWxPnEzxMk-rjy=sKkZ+;!2-x zgzn0A=zB)0ZZR#OEx?h}3-q3mYP4sUZaGS|@Z6*?9i>_&j>eHiCk4_tEQ!!`X0$^v*A?hiQ+;8c*S67Z!Y3eqQ{%Ub#OEt-(J-EBlQ>3Sl!Ry{0xyn+t z_UID4t|P%la|3tI1Hacy_7v+HV{rjnTxkI3ZXKE};G;{kStwXBM&GNQT zxjoDKL**tc|A;aO`r>2yp(|8LMk`oU_;_Jg{soZt1c&b0a#3pL%D;vUDTChl$DEwV zo5px@^>>3jjkESIXYE-3aC6b$iF>8-^8pC)!1NSwX}-TSjhX|If(8(6WPAO%N_(zU zsd2-}KJ-8-17G8-f>&ZuQdvX>8&E7a&=o-0FvIi!7!pEM){|u{fY1p%cpd^6eH}!H z^7Rb#A})R^MqAippSi*AhPtNxa;H7-Fh_nwFKLhH+G(qy+kO@;V_=?-0HT8cGUE(@ zVGe*)mhruYWwP8LfJ6925V!{34zAE+`}p7$dha{!6P)(1OZ!$`q&)`klcnAEqtPCl zb^WhWN$R_1`pT;iyh)`wxdzv!x&po>m4vKn66EAi(?RBgw?$J@K^}`}=(>l|TAdj_s z2Z^{v{nLtu#N5o+uHHA0H{5@P>vnm24mrEG_unC8d!{_xuJD4ynOR>_9){+n5hK~8 zJ%Rl@mr!Ltuz-c&ALB3tra~OT3&z?5**6Tu%Hd})20|$IjX&~r4&LL6xMvivhfGl; zhsdpvJxgH?t9zdduy5LM&vhqukZT4V%YP!z;_M%!0@d^?+y2Z!von}Ajh(F zNBT8bpgrH3%OjJmniGLIrSipdI<;6OrM$by@I~1@?uLZOqwA~e*Kb{|8tIZ^73E3M zbBk3*%^P5vwxs9{#VYmct7NNyda>md;Df-*F>qMyj`DT^sEm%!ThaK*ULd=IAV^-Z zGeE2qlKWsjjA7a;aj1&CVzwIW-%jm=eQ3$UXmBrr=k}xchjCl+az4x!V)(*|@uCoH z0RiNjOqdAlzF@FRKE}>*Q1kP`J8Q&P;PeKbpy`Qz9?MT-L&7O{Ww}pqk>%{>e2f>) zl;lBYlr7U4H>lbd!-A$~%Sec|6IDk5n|vnYvLmt87L2yb0M1+@1E|aBvpbuIPU+@T z5rsc@wW?L;xl5R1QO4bsOr0=Mb%Op(zJGtdKUY7Itdf$p${MI@)MjgQ z{q026q1$8Prg+l<>;Jq|e+1ay3C>WO8tB|>pcpee`r!v7yZ7y%0BjIX%7FkoCZsfN z0V&qD5I)hQ_oy<%0)7XXY~ro~5A`x@z#K^f$8!3~TDto~k-c=MYgMhtz0J+d$ok$z zk@1PU50ToXfXv|wxjXkV+m+B^yRg;U$Ab}wo zmE8=4f@@fQNXuC!^xPd+da^ctBO&eDI^#OhQ9m+SjcJo1&iZC-{326g)z}`8n~2Mcn3+7ND;+sU--HtgWI5B*T6R0Oj60x>Hd~4e%g) z;BJ6RxN8AMvP{~KfRyaRewHIOO;E<#E#LO>-7>58h)N${jIjsE3rF%nYa|e1ZjFP= z#i)`SoDeOJTXF`vGbpUbP_W*GzhxicYiJLbK;_=gki8bl&M_;U=OOW-O(fLU-(RN^ z>XmyRmsGcT=@UuFrl(JHoDEnLd zW4IXu^Kf8+tbWLi3>)s-OTvcx=qP8n6-*B>!@WEWXI)P`FkMCYuA1wNc@>P4{RHYb zSkN$%sP^NyG6iF{y0UQpXKwFSOO~$K0g|Hu~#pRen=Ccle!o6~UbNr(qtf zH~*-ib0?{Wt>rgi1To3aeP22^qqTy4@00NA*1_Ca0JEk>hQ-&fZB#1JFE>4I-9jf7jP! zw)CRphv)PZ+^yHoR84%V>Y(rU%Ju>UAZl{!I)kQm3(=#AZy-l6Onjy{0Ye~31OaWt zK3?8OVfWtIxw?)I_eG`vP`Dy>qO8V3H4qP)wAtWlx~Gka^8JY{d)Iv{6>;uQ6dmJf zJ%kJOXc|TR?_}l}T$0=1lI)BtO-8gQzwCWPCIKVhG4U20alK4(Q_2=lYut-}LTG`7 zeg_G{42iF_K-7a+l0JNN7yOwhSeIM|p=pCBR~NL$3s<+^Ol6GQ^KYv{yO_oy)icFV zE~Qg-$_1?>_Gj#9u~dnTs>0dTD0~iTd?<5pNb=ai?QFP%@)mRv5c-U1b0KqmYdE0N zZy==h^#@$F5#v~YUq_<@8KQN~_5^Xk7l?r3^OHzB3xiq@P;F)mqQm)BJ3Nz2%-wu~ zJ#d=s2V`b*u#b{2Zhr*k)BX&~$#rs_1Rh=7MR|RX$v9+6?&qUBC5ut8=i#5wj6w!B z^`>G!%#8m>VX62@m!HWQu>JPqU$YD0DDT)_A}dqiCo}(T*WhZha^NnkR+$B+UzrIF zb^m{e%oP-wPsFJQd}BO12;u5hF&^LR$F5b09m~B|`wLu-Ees#qe}5H3Ou)R=UcjU< z)a}y$F=WuW^f8?+c4`IL2avA6pw>{QR=9X}zMxh^r&c%voe6QeGrYs?1g}_r;>^YC zE!}L6YS`cuEtH~sxr?lOP36&y2)UJKgoDh^oW(iF`mrtigffbfle6#z6li!ZzI_vN z@o$4lF%DK9?wHMPu1juKZ6=;UTXWntGNd_ni=$OaR>j0{`T4HO}0J5Fz z0^55I8nDh9ZM^su!Xh#gx~+^@H(#jg_-+Z=!F>NAs|Uc?9rv?6x)C)Bm9nF%N-6DE zL8%b-?aoJ+ecPd6{n;NNQuuV7Pcwt=7t#ETuV&$uacYK5MapKF%x!G|!7BHD4gb;c zvPE2t-|Z6oT?9{r<*lj5MR#&hCrPi~cHKdJYEQaB1wG%3D{TcqksY!|v3kOW$kx7J zuv`+;7`J3GXiD5A`Smsw=yo*(hS0}mp(q5f&6U1M;$JlrA zG=)#+$vDMQ_X9kQ;?t{eRjook{eX2WvkCj6AnNaiL%RDNs-hF|P8QQ)CqtzwvtL!eIgu#8+>i;*m51{1uwP#<7wG4pi zA*I->Ipbl|Qg$<5*k!^8iNmV)c?J5ki%4lWlG`Qm%;Y$&#)>u+Z0rGjV~xK#lz%Zr zA^{avJJ~LI|K;$*$BVj zBatM0Ma`NQ8yS(iL>y7O0xZ1DnhMFY8^B7yl#k976Fs>rRJ{8Y^KH;L^hKf4acJZ{ z#H_5{I9OZ|s0)opzp^ZN*K}Rn?hXGkcWgCJm!U$t0n8PJ9cd(*4*oX^amH$nDa@=IKY~sirAg*~x$P(e!_unRz;O1j1N_b!2b0xH(;3 zP!VZgMPi?XovtOZ)h_lBmQ`ZO`XcMt49uQ)I2KO$(PWhr0g6mIZtBIa&fMo)AL2fi zg{pZ^o1dL2k=LbZ3(yblfq2(!9=^Pi0>nTW`CyvibaRetORBT4x)6a4*%i_9d9j15lQZb&Zg%UuknTMcNDx zcV0e&#&T+2x);#H^g`(yA$7eeTwOm!b$wX!zMkAb4an`MOQtaF1yPe*ddsdviHx(mx0pVHb5~(Q z@sqU?@9lxW-dc+%*RWmApH}jxSD@nAehCUL*SL%~Mi>vns8Q}+(Ol@$nHxLqIA$@t z7Dkk^qwu)x)8cl^;0sNoEbh0sjXJPV!23%F;pR##KIrd`$`Ni3ox7TJt63Xv04ZF& z+_hnAfV20)9D$*%>nqsODBiOUGjo}7gRmiVLO;|-hl{7-MF4w8N#BOFN^89*t~5%4X-NfEFywx3 z5#GoZhogVQckcb({99P|=JF5VEx9jFFY6WAV(b-6u%J!~49=m>2qbk>Me3?(t3qny$$sw3pprNZztZXJKojY!B{wcz&foMA zkh+6#KKx&>;sd7Q#N4ooH=|;>T$O5g&5m!ll#i~nI&_O$8~?8I&8AO=s^y7~-? zzpYFHir{$?YfwQ$CG?6#~H(+#xe#U9T>OCYiJTQxYn&#;iS-u zAONOl(xfU5+4!26rE>2=oL6&J144?btAQJcKp^ppYrz0K!6Tsqt0kKvTN~#9kPP%k z^chqt_x5P48!y3iT`AJW-O1(3&szUF8CDFH(F3)REKLRi>|v7yHuQj0ed!A_PuOm4 zf!H*u+No;Q#jFZ6kPAucyB}X^?3NUCSQewD}DDHZpiR3;K6NJsC<6{Qf4)r@asVI8yj&l1QOMTz#)%)degLF^@GALn~2&#fqdL z7Q!-BvA7*gLxjm53&MPfu#43dSlMe4wjzqHSy+#P)s#=q!vVlyPT37PY{iVtM5DQ& zChoZ_^qUXylrrq)=%zdP=<22!C>(!Lf4fwrwmD{4`?JLAtR1e6cI?&D%CQ`5P8X)! zd(Q=x!}ZY3@Mwr|pG=_H7g0k}3tl6xwPriBftc^-?c1{9M~BwcVZEg7QA?q%>sq)j zPoL911Nf&50Dj{QA$OOFRmi<3LdgAVgCMzO7*)yrDV9N)snJ(gX}ZibeL2)r1{K~k zJ;GisZS!z3`}@F|e8Mj{*ym&!f?-k}-qb)Zya)N}{lf+}()4)`@^r(vBaVH#;quaF z0mP1=)dRsWj{ubnY#fRe`tw|h(QR@m_79iy6`etmJ4{shn(0%-LglXe?X7(f(ajuU$J`Fe=bb@M?s z;YlQpqm~yfSazHuRi4-)Rd)YcViQn4*mRKfy*SxxE$axOUJX#z=}v$*=fr;_5*b2- z>dM9Y;c+8j^@r_h2G(e5MeKIx-wt$ zm>ufMe9(i8?TZMf=@>MiGoQk7UFj@BczL_CJ1zw780wQpA6z_}N@w_-fXj3F;JGb> zPy?IMt-a}V{ zMR2Bx-wN-Qqsgx%0zFFl97|UNz3k!Zuz?Pro8J9*I@_n<9S^ zI!d;7bgk42(8&8cRE+7xk_E?LeiTuNjiP&4MrH|6qvyb%Qg* zPZzrk@fPEHce7LHy;=)HRO*+fEdJcTdBy%SGi zFe5x~oKe9DPY;`PO-uk|gsIDi{u0UD9vdWzuxnMxeEJ=IcqwevCNf63cNQu;4C}CX zxW*Xw4*SWvgA_W92n1M)*R~^630--g*siPzRA7PZh*7Ast$LjsrA}gR)CoiM;92Ek z=V$5!G3ENm!NZ-!!_NArx)#`3t(B8o&*hSJdpagPR~G+?eaBYmwD_!0XOU^`qh1i6 zsY;%y(rMyX7)=<$txVheP|rf8s!cOY)7P2g9rAFFVcIa%*ichZvA(Kp|J-HReR~_= zuV@AWi3>+p0raE+^lt4S%|z0w!ddUYnL{{(UJ*FoR)uqg!0~zKg#d{%tqN!o00D>7 zRq4s0SxD%CI-?|RU!F4IjthL6kyivKe3T%lmyk_(ON;J!Vfz+Ov%$` zE??}~Y3f(!i}h&fR1dcf52HHO^tG))l6PK~VeKAOHBqAg$W)ilHOBKBLwpQv{zE`= z1eZkn@+wpH_n#Mn!zL;DAjSa)@54nloLDDz2!2mig}3fM;2q$~sNB0X=KqJ@lLp+m zs^G2!I3L>j(AF6f?;5Kne%DJ|dRqKs)Cl%tjIsG@lo(cN=Ez@n)7RXQv`)bl@rggc z{=pTo|0N8s+*>ooi_fN1A?m2G3I6ph&e(bD)ilgl9DE$>1wL)Jgf_`l*?BoSs6KVP zJ`vqK9$lR_A-?dzM{&9-BJjLT0=&bBDifJS?907l0LUTKe`wSkz@fNSCGy{=r0GTf zM^m3klk-a3>`@J&JU@qbkni7VS2`;w^KqlEqrwQ!?;8o>!^ySN2_FxTMa25>`a!oY zy#8|3FZ4ko#Iz3=i1i$yRx8{G5B)sLu?RxoY)!66uCY>#0v;VWR8=THEr8BZ$8$8)}f5-7; z&BEkDiAV_W#s6Vu{ocp1Rw03woS^GxmJfs&R8Qyop!dUZo#jp+-3ND+C(KH1 zVo?=}t;20W80!DLLC%vl27R~bt7uBqHa``Z-eV|#GK_=A!-=^DfQ)=pA;!%BT$LE% zDt5dBxHSMDKR{wMWfu=_ATg*CP6M~D`s&pGnxnWhIADI1uz5Ht{4Sx0VmRML5)+8Yp5|!mhZ*PW zyvag~zgh5|u{N<3am4)e6brAzp0b{1p&z7;g}YfO5=)zSx+)Q8{3b-a4`(PG6l4mj z67jaJBw}Kdsx-0|bwvw& z-4C}IjXj9Ee(%I9YwG=3p2jN<{WWrG{1a4xX62A3dsSJRhe2&8Bedim#wn!XLHqkx zu&#;dGMrtJm%iEgsqJts8qC$|Pb1SN_!Blme`4FooykGT|cgKRHe(nMmllgq2#O5p#4B%G%g_SZCt}dx6{o?ccx`o0uGDAOs!{6FPP*tBHAs2B(~mr(hO5Cbubp^C z)lll0!}`o~s?)_4a>ttCtZkWO^t>W)4OW|rFhFZA?p|`2u?N%1j1^Y@HkEqZ^D3=x zY=g@4P>9jgho3VO0^DYQ6XMjwK?WYaHI1J@+=C!4Am2;K3%2SvpI1%mzhvGm6L#ip zHBW5OzdVmGk*z(W=O;%t)-BelbhYa%UARt-ROi0dYu2gu9l|aH`4|VpAZ)K(3L0LfdXTP9^*ZTy#i((&0-0UuB?!8n$@q((Kyb(z*dO+qfM0xBT*@X^(^Du;;s6H(ZaS-HV^oGd8Pa zJrsp{IWo}uFerYXwb+V#Rr}UsP!0YxgL-AXYNtAVp^vOr!_?F-b=M6jzqK5>T`Ds0uI~T0FS-w8-K7A%U;0xdSs?4#-sGv$v@O5}BWeWQgJYe? z^7U66RQE=o>yUc*w>@jjjV=sa^f&IQdQmm$@NObM>VuKeGyC0~1o|Av%kBIm024WI zyRCIeQl*~tB0dOrBU-R>lANXY-fJp5_2RAH5-atN7gcW5(;URBc{+Nd%7|Laf-g_^ z-Kbh$a%OpmMJ5&!C9qr|aX$uUIPV$O_PiWIJhlUBf%CTS)lY0xH%4x6P^sTs7S&Go zos7>9i2 zdVr3*95cA%C6!eF@NZDVfw#D<#|_)Ovh11H?3Yx6$McLn_cA^|HtrLh_lj!Qp!qEJ zZ1nic;5n<=MU{HtD=O*Yk-iX4uk>u^Eopo0qt>e1vsxaqDi% zmAc4Q{LMP~UI^{n5rVcxGpkqAP&lmKWqdy`-Wrh1#2I`Bq9hqZvR?gve0>L8R7cmh z++oFnf+7ea0tyPEg5VlUP*71&?6Jj$vG?8!s1U^!yPiaivBwgPy*F&wdvDmiYwyN_ ze*ZJ~Zowzt>+}4=&fJ+Zr_Y&gS9eBpS+^tC{pu|bCQ!;2<*?HtAgq@0rY2j_G5v}} z7ne)iGkq>X4Mrm zxtN5w)CotxHSW4%5)f6mJ!Z5g>_Z;k{f|EjX!ADZsq*35=-PHA zUYV*=&<`dVtZG{?~Sp zj^yNZYbT=itvvKCG3264mb732MAyracu8Ts#1N|nKNd={G=EBDSBA0v!Y zeG0NXwS&&u0l&y5KhU6kO1R4is0JP=;RD0yC4QvM`;-WerG2><)_TV;H50^vG~-#0~RtB=Vy>9U5WPVCmn(u z1}E=>L*R!+Ozz`Qg8>)pL{Ayg`rB0g7#iq9zWbFLu6dULXS@&rKsbwb@;UY2ue3-! z_&E!_8`;R5iqWFng=|a*oOpKDwNmp9$J-S=xU9t^>sZ_=<)?+K_w)v5n5+o z|8G8s5YxkX<4vCRQ?3sV(TFV1pG}cPNLx}+^Vp40E|S-%hDbPHR$ zBd1H*(oH|QBI5&E(*f4}Nc9dW#T#w3snzUCnp%w-C+T%bj`>k$FynHm%SR%YV=U>F z`$RHr^?38aNiaYzM!&!_naQ;K5H7{JFpVA`Qc9G20ZX-Le+|B`%w)V#8vJVEY;(fB zIo5;Hjo(OB4=dhIDbQCny&|F;hVf3-F3vL7 z=CU=hXn_-D+^PJ^P^(m=`-hc^%BnCbngJJ`?+sg;St4fWRFQtpP{I@YCF$f3h?R)R zB@XoyF5J+L32>)$-}31v)?X-^`WUy^Xy2jJI8B5?$y~@Zun{9rJ7|J5LtryYS|Y5i zg_*m6$pI_ao=o`?Ko`D-2dtB6909h(Qfjryywaj|?CWZBY2(OnF3sD7qVrJX5hbEl z(QZ24;SIP%Jw!6VPGbPXbTb&>dPE5gkA7vy zF{l(8YlOONx~{2)vdEKjMQ;~ze}FvLZ;~`W!|)1J|0w!|0b^+LQS=edM$mfv^;;1n zqr^0DfN=s{XwBL+ewsyZk1C}+`oD#S_Qdpoc7S6r_jTxC3dl5r0P2kh_*0c6} zkB2($cY1mpVSM-laz3F<@K2Rto#y)Y1aTXdfsqW)^OT}ZCzQbOrX|=PY2kT>KmRr+ z`Pjm9+jT3Cp=gN9cb2BSCzW8YZNqH?tBgPfFXQs7cd7nK#XDr_hb$SF`*En|H zwiTCtIX<-w3sc7BuB!LHH1niV#=kx)aM^rvKaio1R#q?Or=I#iw@)fHw5WV`AO)XN z%4$)0hd^q3N+}U}!;aq36?J+|?wgq=TLArVmJRLGj5a*=;G3&q@?#2->v>!^_Umb_YaUN^ z&*RO!23oT8bh}oZY^|to9s{>xSZ2`O|Gmew`n*z9d45VWFb)zd*!}g;iXHb$)3|EU zOV)lWiPJwxJC*%bKTa>bEWd-FY8b9BvpB0Z0nBcryEj~RC7epIj28;>6+foP-cVV& zNtF^VC?PI4AFw-aD!&hGl}<)RYmz7P=24dFCoKQ4vz{Dj7a zvG#0`C8SlWGgUMd{g{J9V;v@@#uorbOn^=Acq!_cOUfa9oEC2?8;q}@>=$8@CBK%eJm~oPC*O>{G>WJ@#OY#myz@lnoghc z&8E|TJtLvzCcSRvd^<R7a#R7Y%@n5?)LO0{OWn zeI#0y&!y11tBUsz>Gz=zH?CV%uRt+L^UofVX0}*AfH)6})~-ZBMv(gV6H>0hguCRU zpleDE=X$s-Q{8gfmk=Imh0=}G&pDTT^!yN8AbpVM{KeNn+|YBP5u`rtIfE$p2@N`|J-JTYToRvl?6x|AZzy8<^Ht32$8W0jAXby^3r4z4uYu}VxQLY<`5|JzodX9IQ1u+;BuSHC+1X+gjP`cPK`(8~s37B#y89#uQ6>DN@6 zaYHFn{lg)SC@1U#8QXY<#(Y$|yjqf~4t78RbMbmf)In6yiRw;S40FyQ4Q6+$a#JZ< z+ym8A|99;7w2|KL+9|D^QrR-pobSlDm?%tBZz`@zU=dn$Q!#orxWQgx}^jccLNvI{BLb7*DuM0 z7~epFxTk!Bdw|e#!D*O?lW!`Hm4lVYf?l-gmJ%LP1HM$A6G$l_RXWuW#@-d5w)`NRLttO^_oY#hD}| z?)YFWJ^2rl8W^IHTJW|~A>{E@y?Ugj`W58J>c=O^>R;FinhfuXQvcgZWXu3Yq)9GG5riom#{f0t7wUfxUB2rb#nEjb;Asb= z^m(kV6{yr5rD~pQSlQ;e@PfGGhlM!)j#8+Q0f4Mh;i_uWAm)kND6}MJ>)r8#s~vqo z7w;$)f+Ki=yw6J;PLrx@IL&pj$LVQ;#Hnx=q&-+eDZ?5<2SreqyFh84^goZ(^Di`% z_TL3chhf21l(?!|s1&2*+n|Py(iaS%7$xp8qf-ybqmPp+$=6${!aW>pe+#2lLtof% zG@}MT_Bar*ZG2nPo^kYd8>-=V*ovRIJT1Ei{MyJ~@sT>~xrU#^ec(3%^W0YaxT<LL`4X1cHpKg(5pLTY#9IhdTLvFe(F%Z0e zABgz?7;~W6GYzq*2S6;=*$y$Ts?G_Jh$TJ%V$SGiEX-=!L}S(lR0|%$rnmm74Y4tp z1sf9jW1E6KKy+D)A6_-GaF?ULJUyhjlFRA@Itb*A6ePs;(61Su}7MD62f-;h#?Qq1*i4h3;ENpLEi|#yBJge6NL=dz&7d*eI zx}>vDv~+iiwJf#ZW5!jRs}9gUO+}OJ2|t)6?+QM?sN=maimOHzbfHbE5+2dzEF2If zl8p5wjtI6K18`~zxzY)h8pm^4jsft9li91A3@L@k%dCVqZ;2#68PCE-aA*)#-6hVY z&msQLLwy*Gl_+C4iow4ewCZH;GB#Xi$f*fTP&+<=Lo>NA%SDUKidUW<(x%_5BQDTE zGbXXF=c6ZRGa}-Qj%-N~9?y{>BkO})iR{ZHE3%!Tr9ifw8#Q{Y{OFKGX^#~z@vyYM zLc8~|QpNSSR9JK~rmlW)J7X#L6Lbw;r*)6)>Lisj)!>923I9@}^vEr^lQ9_@6{Idt zl&a1h4a{jA9a7Ieq%}{J;?+3JR%7MqaQ!GxH*G4~ayu7p=@E4kF{9vy}N%`JvUHo2_;2=O4OqrJqrW-)%E%+Y%qCamXbBX+Zl5dwH%V+mj!80OnEC}>2KrXIruNYI>_2Wa&(B`SJ* z4rVl_K?j}C867%WGWrU-2=i17*VHjwm%|{Q#dXZaiH-~PIKTRH#QA-3QFHcj#dK=* zT=8~TLW7?xzIlFw8E_bV<`OM4`ptk_Iq%Wl=U7HMjRZ_%-52EbL}ZHY+O}!- z`~%tgYLv0WUx1VRr)8A!LUC$6ZR7W?+jF5Yj!LMtPJ@!Jd+@6Y|2nPhz55j`u!HLR zr<86q!07=PQPK;gi1PXr&3}Q>!j}z_$rYE`F?sVb09|nk{sXV%86fR2NC^CD>yQoh zuL~4v{NBOs=U%)BnP!-QrzW#=%zh-+6hNWto%S(jZgw3oOAV4`^G|x;!;~AsBI?86(^VEB!5c! zq!gjRS4xiphrUXPu*p?yNzeP!!dFVPVmeLtUcn?z{lQZf;jSHV@HjrTS%S`@74*w% zlsbBmmc3RQ27JmUr%Cg$|MkdTCMG5!*0ehZ0Pk2zo^O=m4gW=JX-21iFjV*pGO-L5 z&gIKKRLF~&eselTTB`qXNbVVSOo6*8P!>DM<(#K+H?Fy>J@wXF6=XIId5bkt8QLqD;Zw&+ zQeLP#&d{c}@S$$=w27X7-zx5|E7maU+FDq*fPCITyT+`MjV1EBrp0uB;A<^R?(4u# z2wA68_4-}Gv4Vg0L8?30@#q{iFJ=ex2 z`#Br;_W#CupU-grZ!29>>E=7dtK4$1nKv(n$#oa@#ys-$le4y}*I-nGFZF}LqN7^n zL;>$H!j3pXt=}s?H4C9ZT?Xb%tQl}Wo5L>89kUIX+E@b;;f7*Uode=b&2XUlxjJHy z^h2hcwDY}EtlGv5-7A*Dpc{SLPGHXy0GK1@NpTBOY6w?je6+0%5~;m8sqhE9vDFwb zw4r4`xmD_gS{*s&x$pywS2!pBmWdB)ASZgThrrG>PflEwPWO?T7YWv6b49s>E^_=1 zxU8J)v{Mh6e*$1#eVkWA{Zh4gn2eYN?Bj|$rsVeGH3*A<5AC;>zP?Jz--}nBEuUxE zKCjX~*W=Nc<#R{=j4-3=VPKb28!Ypf5*@Qz9eJ^c9n4MGiJ(w9F0>eZfsS1r4WQ9p z-*U+I+<$+YO)>7yX2mc#;*~(%+Go@5e-+=t>ke@nm~=PSvKh_6m73AaCFhTD{mUrm zqv9JIgQ9qsu%CJNZfM~TNSSZqmz>Qa>tPgM8qxvGomJvSt0$32ZWI z9+`Ete(F%T$q)5Y8@5y*jiaHTlPUia2?DVZG0t&-_O>0gv0uGxz%nNCl>DE_6B0M0yk8~8hf ze>rc#uU`Bs2*2!o^Kz<~rTB+ze$6I^QT4%H%v_Am5A>Ecc?12hxzBB`Bps!3nUr~` zy>dQ>i{^Oc);?x~v;uQ8EM};^Su^orSq2@=!cxSkrLwZozPFyB`S;sEz|OySpC-vQ zEwz%HOclRk)~oeWUT5`nSVg10DlLjme*$#*rKh{x58!@;vO|!=o7aXup%-7367D-L zLPgl4@i}J9g4gg<|2j;iz9}btSFB@N2Vf2BMO?-NB;-HbIlx!Fj65;hO~e)`zXwcf zFOLyQ`s>ozEXAwH0z0)7awn;A&>b!2z_uZL2zx%`S;3)Hcptcuyfj6c}hPD7;-LmIX4+l}k+1Hk{fEGK53W?9MRb0XIG--xo3#}EUNoJ3LP0%!U zt0Q*-f#EP~PW0hKycQh&oE@8{8qmQupgdiw=?*nhgjYndd$<&x_i>p+wG$+U>=3^4 zq)(c`&j#T)TBL}=UKe(v)o|DlGbDo(KLG`G_f9&ih&X>p#EvVSG$_CRX(NuR3gO!( z92K?hBkutQ^+EMxP*rg}L-t+l$nwiF>=WYow{98kp#6hH`X*YK+Q%)?^Jlne#`-r`_b&;YLcpt0vZ{F zlUut#zBiKJsE0w6YX5l~w=uMl`7!nrG3y>9!|aLH)Z6?kg$D?i_}3yS7vtQgFjw$< z9Q?R6Ra{#m_wufkx@R20-%XKAu&|`IJ3%iE!XvRc^6Yp&bfV<_@AIv^=aqV0UKS4g zyosqYddueII=J&Dh75OmxfAN^>)@?90)8!nlNV|+#`7csA$1e1o4x5%SbJ=ByS0he zIL;@xe6S9_*oyMIwZQ4~BR$kYzam>1z^$Yjys^paU{29dS>-^BzG65~(@A(Zb9cv1 z(ofCZjygMu;(0Ejk7C`wxsRqh2~Xv~K3eT0isrevg0Xg0cORs)PNG!sAUJ;W5Asmq zVC@L|>bbUnD0Q?Y{_RWtxrAroQT89}TR!%qM);T*u*G6|$vk>awAXj2g<;o}Z`g!GQzMVVi}FVk6;ai4=SQkuD$2QSn= zQ#4JBtdC1_U{kAq|6bSZHM^H~HtM1Uhz6rU3Pt4>UUl01PhI=C&_}D=AiF7lOP1>7 zkE*)6UO)?Ti;@*(OtPpoW3!igES`?SGewDz0BiaL=!W^?JEj|g)OKyCGp^H@+`_lX z+~2IwcvqoCE63ps2Ww7~O{mM$4Tz(kzwm`!UZHOp6tv&5b}YIbUcqJ-tkW^b$m5) zX7jI4a004{f0fft(hhwH5mw=t95V*k^~-CfgLzV|9X>$B?Qi3I5$(H6@&W8J(AP_o zx5^y{kwczRqrAdBq!a_X%h8E8^`PlX@rzPl@@T*W1KV?$rsWkL#UH}-?X3MWrt6>; zALm#ZI)IMk6~4_*A;&Thu<5;Y1sZeACU9FFvjIf8uHoj~A44zgKzGzYr`SOMNc!}TzZ1uLM5(pAlFD_zyv7ql>+C|aP=y=+`cPok6ggjcK6 zv%a@WdxlK=Thr{MbwGYN$J!>tti@K%9*&KO+7yc~oTj~I_uWO+^NZj@D6^^_^FYERs0N6z=+m&gBquFy?)MLnp0N^bH46(j%O2M)S}{;`z16 zt|F(8t@%$yF3ijFixLS+_UhLI9YbnGJxC2B5kPfXM>D#=;z{ zWYrGY+rG;)mKdPgs;2%=RXXJ=a#z{B1_TVjUQ)P+>31M=c%cqF$YP7P^zS1je#ZX% z-4r?Q8Z09+oeC5X9yRMD&(18HYYh*ZZY7%cp?%lCSBA9M+=97n^$is$C_Ma)wko`m zXHk)?6W$=?%CX}5C|#eJLw8bo$C%akA1 ze7Pv5;R{TqsfBPRW~-a1r4$%MS#Bawsk?~+3W@Sncx#)Swx5KK4r;XbhTZ}nKq=CY z*Jka2Ugf}60`;B3Kx-+L2hznt!q0zX;j@^G*oVFplR-+ zRN0FwP`1VsSlDs?^-a!p7^ljXd6zMBt8p{Qt!t0yzPs>GOvIA59pqudq>9ePl&igG z$R0_zUdqT`R_mb=*!4oT>(iJsQ>$>R_wWm9TM~dR?r{H4vdt&lH}UHBGWg|KoT;sE zqGS)@-u%s9sJ8$UKrH5moERZ>-+eKZ+77$pLoMeUZC7&5;yvPNhO4IUed%O+;eoJk ztx5VkZ+jQja|siGSGBmQHS49SM|1@Qon~nrdY2cQ&UOKg9kLWu<*}& z3=WznP;fyF{qq|86Aly>g*0VLD*cr*3k&zM-L62{#_!Oip1@2cj$g6MVI5 zU;QnteNjFkUwM;`osP@}pEVr`o5bgqepV{aOPY#26)MNR-FMUQ&_Lk3}q+M zuuDo&@8^G_tvgFl*@zEz$dw&P=|#jSC3Fo{_ZFpdu7t463FKc!6c(Wq94YCNQi%TW z7M0yHfBjzZ29w!al<;4P54t|_ioV5l_Ftf(++i`5Eh@ZA_Wti;Mp^8U8n_t9&CZZ2 zTC)6qm;Lw$gM5THVo~;Z2Kj`Ez|P?y^KQ!bxY=W}L{|Ht&g5#Ju{g&tensL5ZhbYr zI}d4@s;iwh+m>SM%kvn<5mLo6)ViDHR)Bgw!Zmky*arfXUoKE5A5k%6!F+vzG#F(e zA*>7|M>?RPfP!J%Hgv0~us)Nf7Z=rhR2-oj!Y-3T|7?3r`hHNzub7DT4_OF2FC#Jp zcI|;3z)FA{<0Zhix9C+#;Z6-ggj4%+_>NBT(FvH{Vg%uOs4U%2N_ovv@-T(A{f9gI z%Ke7{xGN!#c6pRzz@VSN#p8IpO;=Q1oq(%AuKEej67#ssH_SXhKZf$&1VoNnpXXm!YRHBgRLEZxPdu4T?y>MgAiT#| zD+&J*9EJSOVBKeBubNM*8v1`$efgWlUhM)8G1jr3Map*TlJ*SVCo33(v7>+u@b`5# z101dy;97j*{%g!S7+|T~e_WKNH0Csg6^HGeBHi|4P)yq1F62m4Ssg1GabGjmo7dR( zYIqHj%+&18wzp-;YiV~L6lR1~6)u5ju>Cx6_{1K`;gP3o7Wk-+1nYOrW`V}K_zny7 zJ_236#4)utSj}dEB~ixC0$=o?KTC+hmA;Mn-ryKRi|+25qv`ItxiBx>8^T)8_l6uD zL+PQSP$~Pezv^X&pse|kG!o+s$WRSjOThucr*L0xO0zk_GRm(@O~bGTa4ZjGK)B%T~(Xo;MisAmu0 z#1bSlO1Vp(I9m3E)$ElfM#sd+#g|!&bFW;Fak0>7T?rpcV*`bk;yqe&Ey%uCy)sKm zcsiV?CFE%vBPD$6GF=H2MH3V73BsLz2&{}pSS|yay&RwL`h$LFddg^RSvUfP?WEkM z8$jU}v;^$%Y|SOo3wCkn=Z?S{MBRdzFub#Lu#G zV1;-Fs4fiELbp|XNwmA9@OAG8XxJPit)f;fN!;#BtiDB!)$s|$4LgYTB4m4Vhli%Q zjis}6_eL2zn&P`sfnee37!EAt7O;3v`~nVDMt)COlAZc|o*^0i_c65e*D9TjEoJYN z!(0b{*+-w6L;FgJ(9l2TNQiq!{9h200Fl|zZw?g;5@jQL{GX*mWc!gt4}jn_V_lS0 z`^}{>L85So3w(-sFPtf(@OU;q~VBtL-^EZ<={nayJZHY}6;qb?&mUVI*ORXLh2D9d{i&O70eU zJVSEV8T+ZSM=@h)SBNMPerbr6iDT?owqS}T`zffdpA9yaMhj}>awzrM|r}>H2o=N2wzr90-^U0jH@)IZ?xN6zKWi0Q%TN`a4{BD{H3GopK`B zf812i`ev&{Hm3$z>RlcUX2(;S-bIB9r^JgeXCPK>7X<$iLy>H~cv&ruUXL<%dRMUh zf5g$vAid%PzZW#)YZ3IlNfzdFXa0VGlr$X<6)sini)}W2$q2}PS zyEjS6_1dec*^PxZHQOntnvAdTiPbE9p{8b=ChKa3As0*Y2D)u%jbR_XDi1aDny9PU z3DlEn=7b!n5|1lMHLEInL_>w+tY+0{TDWlZ9AT$xwxIFuT}{^xnON7{=telg#RgFf(>P2t*~#CM?Bd>cei00XH1Qn-~UW2bPXTmOf`@xZN0-|xjf zf~G`>5{ZuZpeq8CVNrw=ziJ}cHOb~Y*o$54Bb8CpEvxDCZg@-08K?=x`3y5*)9<;! zCKEkmPui`?q!B)mQd|V)?#sQd$&j>Li`rMD=u)VIl2QtDkR$mtx}ucAVRU_{u=j|q za~Y;}E`x8|LiG^;@~L2V(SIaHqk$2CNif@u5{z=hu3w4Acd+}}X0Ut3{O{PUkCTI# zD%&_Yy`>hVpY8QMcZb zG()!pZ&tG#My85bI4NNN(Q54W&7T_2&A(9hOaS}=Sz2N}Cqmb1h%MzrQzUG0^^Ts> z<0slncBl@hD;IBOExr$GF}kN6iqauu|lEjK=uJwMvfcHQb-9M{b(&C*alt|5HOsL!HLs z#x?CYt=)}nA5jvg?W;hZs1PwDM~-f>5=K5>Wc6TR3s3|w9tB%qOyl~|Eux!8H;bdZ zl|=>R!9j|yEMk0ea=RwuY5duaeNwE>>Wr#VmB$~XC6&e8+!J6j88JZ*9jJB{5$^IO zkx!33M_HK5)B`l3iufV$A(WG=zTd`GYX$gO=JSo(2h8Um?@IToh}wpGm{5u%hm8(i zRHv#aQ{@i!IXZ zl&RzBTUFudzrG9a<{IdVC#@2I94?3RWUOLSYvy9inop%lKZ=Olub3&O$PMW<=tr@k zaF?-=zb6`)7F&6=CmtU}ud9|1qR2?$Bkm3~(Ae7!J~Sdy6m-miqVgh)WS(sQVjnOM`HsIN$yD3}yngHg|HgVrCkMZL2kNnehgb z?S!Lh0&vsJFo;y%FRG42+B`)oBKLJ(q!QJHk8hiLxYHU~^} z`b=tH4O$$xokmv^p)Myzve2%{K*-Q>FYT-*$~z@thly&6qBqqLq-^@T>DsAeD3tL+Dr-#)=i-3lx zq4B4X1j12&Gkr|52Ssy6Tvhe3F;t8PBqz@Ko!KVT>EpbbBjoMu7fgm4&-cxr)iKUv6u}k>jz&X?G1# zTru{cJ2gb*!~rA07cbzXb7VpL|7rEHrBxM^`5XXM<2tQCxLSdKy@rNh>*2&vS^Cz) zcKD@w@uv;=#9kqnng>Z|kNU}H!uO1tL2sli+&ioQaFnQA%ofgM;a*B+t#LASj}gafwHyZ0YC>K4 zA_3g%7>o3ixw;*q?v)od=r`ao0R627z1SKJx`z)9t1U{_n<7hU7reYiNsx8#Zz$$r zoISUkTdOPc4d;;$K<@xZJ2i>kDg$}3X^lM9A^8L)r8{`gx7s4GQZBppPiyVJ*V^yH ztOJI%aZc6(AF;lquEr#4Q%3|OIuGSDgYb>_q+c?=g=c_kE(;~a^D}A|ugyM(epwEG ztJjCH_6Y71yulPR?s;X-u(REVPiAamkeo8PuVheod=L)yg}SshA4=;K;JSxdU*FU# zK;EcOFj)?LD!26KZ3}a;x4@=cqE4ARf7yM$ff+4L3anY?2#I1Xwiv*F z??9*PVIvG`zNm+}qA~V0hg)l+m~XrYab+blF9Aui@&^a{IbIa0=7~^Lb1t!<2Izfb zCA6UTDcaILbI#nDYlCn1`m;%?qXy81cu`U*v!1TSi`qWD{yx)2_(2nSdlRvVd zo6t8<(FUS|OHsHCmz3IUA0`9+L+u-go{BP*PBaj8l=Umfy`iY+64;XqeU_t4!_u|% zb3+lO%(zMO8wy|LY+u^lP=rA)JgY>kKc&D^(Pxl&&@}4=RfxBN_#O%n7PrVasst}+SbfYp&L@A|mFKX6Ag#F^w z3(7SW{cV?N-1xsek?aI9$y-#6UZ{*=J#Smem1@}8m61m;JiwF1iahiP<=E=kJCIZj z<}Oj`Gj;WI0g(rlLgdD+Ty`CGIktS?+dWWnx>}(p0qaSlobjL*f!h zd{Cnb0`baa@2sT2pTyJrBfIliJ@Zj%7E$uvltk%}GYlE9GX7_N%FULuxI@UUKhzVf zN;MSftg|D-UG`AZ*f5zBPZ1)ZU@QuP6S?O=6%L|b)?*QEbE8(qJ%G!=TCf2uQ_aNe zL0vqt!bAk2R}A1@anCoXH9yOi0@n;l;Qvg?CO8jCto&}qGzvJ!md%&5aDkcK=yNkz z_rPxC-CX#T`bkzO6kz^SW2%)W-Yz=Z;65{druNN68|7?Q+T9$X?8dHiy}9tNJg2MP znz^@ZD2fS-Ze_@^2R4OkaerqNGtBgXu}EUR#Y09cna~!(r(hJSo5!O6=Z=FvN?X$C11@S1M66hX>Y2XbnKP_AQV3TY+0i`KS6o()sdZZ0x*01Wl%F!}{0 zi{!GFScT8{i>9#GZu|)>aH@wdFpV)_a1vvL`UMo(=8TGl+W#?G~9P zu=9+Vppsye3;{FM+p}#wzLIt{`zL*Ci`{b1n^2>6;*c`5Jr!;*ek@tQ z1dI^mC1WO4TmJbW7mrZ*^7W_Ky~hW#o=u|R?L|osBUSx{srI55CZ_3A>K+lv-T zSYyhcAST2lHe?E=!nvxSdSlNQ6wVchTVKG91M4yN%T(vzu~8a@9u1612V>Nw{pnhQ z7^76^Nk4ZG6+N99BtJNd{S4!I*Kw?=UoQ1w4_eUy;odYeo$4S8mt;CnC@nr9itn)S zgKmKdn5N;&6%J_q-aSXk`-}KdiD^S|zlgtr=eLF#vw`cLNG^ZjNWD&f`~;2u`V%Dm zrDkJ-`g{6^v!<|3#ifl3cnP(?QlGkX6bm9J{;Yp67qM9}Zu{?td~-=@`XIzGHXeAV zMHY;=v(w$}DY_FTfj(5Fp`AoMhf;K)lW3_l&Ott%#V|LYNbaU;L3MZMfa+8(Tl+U! z(OGO)LRwPCE+V=PFSwZTf(iRjX7rU7X!4PCxTyF-J;LdCT3YiATaY8EFn2C>s`@V&1_Dey9%#L_CR~V zBFrr%;YkdXk!aZ*NDS9Pb_C)Y<4R-+itmPFG&h^k`fkE4?~!Kg9B@h3o>FwW8`g^! zH>0QBM3Iue>K}5MGqtWCLW|s9CmU)5+EbbC*pgqf8P)49yvhby>)=*;oj(wDd9IZf zxgT+))g|}-nWlFaD30RKTv;tU5>2^XMM@~-;T3F07Z}1aE^$@3((M_p9Pehni zn^M!B;7g&VG@_@7b|_7|dWx!vvzurHP=X_8uLsr!V~$R_lv7rN38 zwaC3UMs78_QNP}zo^r>VcJ~&gm1T{{+*<^=CN|2lSTv~iuSq_AuwEXETs#qx3loqz zsDB^fu9Rv-UHc$7&)JA3^4|vyX=NX{l)VkC3yD8&a*lqMTBs zAr0ccj~md^zQUyR_M-CrL`ipJ1187v2=YF7Dz)Hw>eWy9ILSo0@ieWU@DkX(OzE42 z7ai&+f`o5jg$kT=C`?ZMMLXpOPwLuVl#cxz4_L6>C8znXHhL*sgMFU`{y~QCIF8w_ zjT>SEx%-w6x4@O=NrfxDm`+#w3vVY`_P|*B++RdEZJCHK!_&z)KmI|_MkfhM9IXIdiJ!XbKCo!v^~1mU5g#PL-?XjAl&OLBg_+A zoI4O*CFgFrpykHO+|qnuugP#HlFbMjgfR({*D!Oza zAlhpiOXY`%6UylZ^lgZU{<-LJrbLs^Z3GAqi~}Yp)qvKv@m`d?a38OP$etfIE~$PU zA=^@mFfW*uXEl15L$2!5qcnG@2&^|4ER%r{=i+wXV=PYef!MGwpMBo1UcbdeXqO^8 z1v3Wxk|V#vEL}gQcDasPD24J26D5@PwJCHMbiGn-YCcSKRyyE9=V2nUOTmpcLh5K2 zIcJUmA#?H8vb-R*HEb!K$1sqQuIjv>c%yn|ynG5ELv^;RyIXtxU_00SsU?*j zA+|c@<;0v8q>c~)`CbBZ`3gWTwQ~#d8Yx1ZF8~jYKKiLu=F(3i!P1Q}v~#5Bq>Ro- z{-Z?6<}o!uiq)*IGv4FAGIjhQI@3LkuL1N*+|8^`j} zh0&s@xY8SMJGpqo1VOwRR^AkUL?;r(7*V5I7S&I}u<}hVTAd_HyKaqS=4fGG zRYR*VdXOaQE93pC!dNj>dF4cF#)=}!#fEfrEX*+|lsv}4YyIL!&BlpkZjUi1gLW)V zuBBRj8|531(du|#w%;NYGamiMACA<2yqK!YH;|GnN(UxX(FB6Yb`Del;1&yIIQB?e zv}kuJDlkbD^0bvim&PSCxny)-8l5akiEaN1`YTz?F5n3~wC{K1_ghpyMMR0rs#!EG zMR?^MUybFRsqUR8` z<{efm>svAef5ec3&Uz@tw?Z(08&ZD_)k* zqCY1KU;hv8ys05&9XP}8OlOjIWof3m4qBBtSyU3ut_X_mtav)FKtVj0Ue)Ljpsyje zP7?)%FW~h{6POgokEv;Rtz*g+9>7Jm=tq~+M5)Bm{WRq_yUVBwZcQB-hOlWdPm5^} zVD#klR$IC?r}JvDGncQ&>AJRbRZh3Jr9(J9$d>lzbgGta$N=(k#sXV`&!I?fw56YL z`iL!kozpk1X`3|-C{8D)z?$Z}k@r+F#P#|`xI@!y<_#uz{_v+oQ$>q{v&ykrjBaF} zDrapY1Nu;&X=0MkzpdD|jVpO#CN)!gBP01fxRq)c-J8}=6Emw+YR^U7U-=s3y@IXU z${GbxF{4h<4#Eb9KJUY|A|Cm< zi1ANZ1o7s3brgz3%s`PXdXZaNk<&n1PNuzAe?*aiTx5u)hzmo(z2$mC57jT>S+sG6 z2yZbI%N-VXQB2-CZhQ(}sfqHf9c>^#!iQ-${@oqbO_4qcpq%^pr{Y)^S-iD0L_ zoDf^6>MTU0GSR+0wV#EJ&=vC2h*=`eDGrMu@u{6D+Cy=po3liIpI{%L{5ROjmtm+l zwW`fnjc%lNJtL@Jdz|?q zuwgi8XiK6(c+(c&^%irNul~#xX~ZLk`sBH&Le&2a{+OcRNGM{jj(N5hubUsyj{yxJ3_y8m{B_I}8%hsUC5r zG%g3F=CJ-mb?>j--w?LFEa9S{{MhAhWO29M2fj%t2QWXA1{VB@2 zemf)`IR|QRb6Muv~a48Xr5z^SRAG@KZFul0jW=lO6PJLY%&@R1DPao0|xL+@KEq6gVtpOw$> zOEV_o13H5+`3rNmxF^oJ1cU=3Qe1(5yvZ>DOLXz6pCq-J>M1<-xLDNBx8fVTNk$5< zab9ttB1=RaZv-#wc`)F&d7ds1UWzftCB$xL zIx1fDdMOTiU%E>-wu$2O^D+_XS`7OuEV_?%*1YuBGR(ffU{5Z?L>Kk3gQ`~a)}IhdR_ zH|Y?Q&8^hM)-*`6*C)wQEvlsEE5!C9qun8L&+A;zqK;DNQ$Et2RdB574peich!KwN zS!7x%yc4qnzQO?#+#dW@vfFEDWXGdcy+d#R9U7~+G=}#W24WkA>9BN@d;VqPws(^} zxnyyZdvTT-fc9b5PI}v1nz%aLr?RVrZ%oZ>WQGI2ISGcLMXn_ZNqczd$e!Vf9bSg= zPV7@N`RbTrepxhql?V*^_5qfaQ8NKzwzR&DM>pnk@WXmfAz5?jgT|V@4)l2y#$F4w zv>a4f&?XsKBrz;lLHC^2=9>FvQLEL$J2E;O=6UWpfC)}m`P2`?JHf(%H-zR1yt4D> zm;Hca_$(2WV7TrrTnDBDU-Q@?N5jXr#yAqDW+QRxsmk+~=>h z^bBd?lk@;^?&S3%FUM0MW>HY6Q z&}}B0+lAv)qY7l<0Z-xH$VRz2?^lbg+zLPseb8}g-40jC!CBYQ6G5fbH?BzRuy#uv z!0(YpzGEwGS|eiW%|ro=3Jof?x>k4>Tl+@jFi!$v>PQzG24x>3qX)_a z{v+xK6v3BhQ_4Q($|2Y&6gm;Sw+kQsy+w2W5hY!LqMg{DyrvWXh$01-=LhktF`KM= z&p63}xF5{%q)wLpqHCism$qxqas}uEuLlBVnB=l>oN7^kq?;n zxrP>;@yjBg5Ui-GpPlh3bT59r;$M@ww|vCE&T6OfYC`MmICSC$?O!hfe_4hi98{R6 zUIoFane|PB!_GDe!dA51f+0TP1CPJ)Ajir%ypaq zJJi9^6t_Y6ImyJ@y3}ujn5B5urJNhZkkYPsfnQ&Q<>=E?!HIEuq&PDxXG2!KM$0$i z5}fS0JHT&q>^;!AE)S|Eos;VV>JlU*MFwQ3vys9G0oOz4Fc)DhO6Iah5RpK-{l1{< zMfmrXZygI$ud>G32dXNL1jm^Q1?ZMflje#1)OeF9WR#-b2M-M>ZW@#TK#_MiW8p&` zDwS7T0%1Eqh?pEpb2o{y9G)NDB%0UbzFw`A#!Xu0?AmEteo9nj|CXUv^#Md{hr1gA zVw@=^48q7G3uN-QSk>UA(DSiMWgl~bHsPKi1De(-4q|Y(5ym3VpVGd~m^OQPmWpi= zB|>U`l7#>Cg$b{u{>{oH*J>~T1G?%??76cLz5XrU07~2<3Kcxa`uzvgQ@5LfPo>?| zKZ$&cr_Osxlfq6X@cnSgefR;eP!6fg5f~#dU4P=6xrk=C0s*R>S|(qnJX;a@O?e_g zSL7L93+M?Kxn=hw6|>a{#wY@Ay&fJaKy<@>@o@(lx>a-vkPIF*$--b=Z=dIu`rHZa zs)G zRp%_Kuw4W=&AJ3^Qft!fw|Jd*=yp-4Kxs1zab$vy+&K)+wu^J3m?K7OJA_}k;}aN! zW>ZTzrZO4VRRC`13)^gMgf_HPeJ9i29m3P;6sykdN^}bVw1ig;wydJ$zf%lT#z)h< zogyaBWIU9P$=+t~9O>~+(Zjov!ZEW9_w<0%Y+_IAr({vzUBb8MR|g0tk+TY+DAwBI zcd^7ys}CHqXw@!JL>$47j9ntoH9VUTW}Kxj$Q3>DIbb(_)WnbY-J)1Pae!n8m&^Qm zw3`vIMYOaL%iuGs{7pN{1 zh=P~P@3<}5d={Tg?p-h|ZKqiipi0n_mG`ZBBGp!ll+Z2(?h&p^(tQmXc2^c;hNEAD zmk2>kHPDfzWoQ5|t~iGta=5%V9^QYhdTiR^YBn!j7D%54V~H}0%LyXk}Cn87pf<7Vj>di zIR2Gmvm~-lxokvsJuQh$MccZ*?V?J1v2OVOEB&@t6fJ)RxM)n=%Jv5)9!8FN4-ybS%(!a>jI6MIqHOUp*%0uDYJ$r(ZRO55P~tw}m6*NU zLolE5kfVl_F^Dly>l3a_)zP*e2o3!vNqti`TT4rI2yzW1r7`22X4nP@*@HWt$6`U^ z30#rCaMvu2{9NV~*#k%g9C=3)>A_ZIk@+C@a^Mcei9OOq^@8_GAT04^No#|+FSli# z0G>^=)OmMI;@KcXIul*>R60Q)(s8bC07GbpR=Kb1{N>C4c*i94CM@W<|M;fhn;M1> z=II>31F;gE*al5!a30yJr12z*ISaRTs#%{=YA`C7_xh$b2Jy^}9BL`a21&d@BSgXO zu@n16rNH%>-*eF36gFTuqIUjF!3RW%=qLc!bZG=ntpKTV+}v0>&*FY8IGecK5L`h( zMu68veAa=|4q#dRwm+>sfT7XhPjut}7H1~-lhZ-W4kh0D9us>3B^?1K5uear9eF*e zd)Mri;E8#Dv{wZ{tezL5vYPus=22Aufv1=ilnvFJN4aVf!#7+;s@Ih~$X+)G>axkK z`^a3to+a~gj{FuOX=5m4J{ zbLLN4a7Yx-J0E_ACA$=^`S>C12nc;ln6~j219IXfjl-g(bFg&gqZ6d}Zg^OP`SNI9 z&JS1Tk&elIc4@s=!w6A*IiD6BMnCor<77F$K7SZXTQ2GJ?J)N69zIM#8Df+;k|T@$ z%D{U5-uLX9K$T{;nZSyu13|XDW)+51gY3d+1r!-jZUEAR zF^gj}h~UFJfS$+Z^XwfhIwIU!=P)Do(FUu}&=p~EEM=5jx~Pe}G48{d%-XPHoE?Z~VdE7*NOt{7Vi+n^BV|ZNhRQsJv zGS9tacJn)p#f$HFGioS&XC6#Bs59Qsmt$hGQfLoNIt~S%_<*(?7w42hyJ^x1Ok{Vw zPuEXiy1jdOGMp4OeQIHS0uj|<{)1I0SN48q{(?rO8giGX&L_ptnn{DWOV+O^tt{Wp(Lbj}ZKd!w`fyrAmG8XW z0WPdgEs%}fo0ueOETt$tfBSPRLM&nHlQcN^;O9@>&WIlq|J|0oS~6DX@Lb7Yo_kcU zBhHFWO$mULkvlt{AfVm3|4%6T_0`OEWj>2|>(YmB`)Se;s z4xy0qBEr8KA|OfDZkcZ!12w=dlz5kz_e^}~N=iJBS;le!^xJt6ZruOSF~^|N(6IG> zJTr?2wGis28df7)o^Pl@STW=97Yf&o{jtf=qBMOwFDiTcF-?iSw$;lW9Q}hM^|Gkx z1rboPehFBusRf?b8tNDAvZZ#Ol%p=m3a+h2r09>zysYo(Mt?rQfbPr#;Nb^6Iu?~P z#Mm&59En2XIa1w6z;B@Sfx-0Tf~Z-X0jR0PzSAT}_B%XiRNI}TMi;RnG-3nIx+ntc zpI2el9kJ)nGNFVA>N)EMvg918)T#3){#U11ZLt#Ts?GU9etol9i^iZ-%_;e65@umQgri@xUHOi zNP8~}PxtG`{7fB9ESef2u0ciPg&IbGA5jvb%qin-mX2zc4Nf1%q~M1jP4T&N!MG$d3Lr%%`+ zWh@|-9_LpR?&xB5njyuS3$ESV6ca!^tJjq4Ek|dk!>P$>9Fe!A-6n%Ye6+Tz;mT#n z-5{6bJ__}_ie>)O_i67{;of=MeN?(2U9+)P5g2dRf6*V{hO&aZEtTK7*kQ#Kt1SK~ z0;!BEAeUFvDtcjOOW`yWhCBV_#a)oxFrzl#s9u1D!bn!{X|JK970Ii-U>RDt6t4Z}_p91zK zXF8SzIXIbAYMSJ47>v+d9W($i)?qquK~rQ8SElx%TKof*xh{fQgLn&ZWjCT;njxNB z#|9xum!;LQaFG}s!bkXlC0Mz&*7~r4b$bxy@V29z8Qs3&|B91MHml*ufX zH1}vK^Ih)Qz;n#|#acILzrIr7MoxjmPuYJ72?CfpR^ZU@fsJT2N`{BYjHpj@C6 zH?b#p?HhV|Q-mqKZd37FBFeQis56g1<=9kA9TdGy18!lj=hd^c?3Vb^$qfQiOExF< z7Is3&#D+rToQa(f6ArLjEJD$l2r`zepq`nyCwN66d*A<9`YmWss>$a2XQLN14`z{= zjKfh}o%~ueD(j8aDcZ+2_y`4ClNV*WeP5=7EaP4YWi0BJyw;%->)Vq3HhuH3=-Uq$<=>-75*I;-AD=offmO?cYTm{sxq`Q8*KJWIap_I4GA(QmHe41Vr=y4{xQ zjR?HZBDBpo1K-unFKoSee-6q_hR0H#!~BvG^T6+4MI1#>?+V}W(eS^6N}*z`Y-ton z4c(s7eKkhh*NG4cb2+w<^ z)8w!H>}NdHwf$(_JrNl3j|*3fR9QIQ+C;Zn6I=S>h@R%gC!YR2%+v!cPEO-RjYP_I zA7{^@iLv7&C&2Nc5F#0uWEbr;&I8~8h<)%y4SsH;yqNq9{{YYqj4scAXR5zOXVLKc zqFj^Be6~)X@eI{Kl?Ddt?q@a_FE#EhW~3Q2o&c~m(=b@O^Enx7tz87(itaP?{ZZh6ZZlCXvL-x#TN!|7XgH&cU9;cq1@1e6Ni~E+81LBU_xKX-DC2H-Coqwn5%a|u2&(YfJmF}&L zm$4l!fmz21;JBCzxq=IlNPSETJ3NbCQd@G_Ubwv?8o!PO_&d*F4u^eBwS+zg&vw^_Qdp44A^w8JokF2FCJII%?N!~fZV1`NOeV63VK4A zzX*`kcnwe7^E7dMqG;k(QU1+CeWh+6&q}CX_9|FQkV6g~Rp(7S#gNlONKb)9@U0KN zY6fcAyNe1&3;Ctfxm!v01B&v85B2TLKjEP=DUW)%(<3(EX&xpxby229pz9!3cBfcM zvzzniR`$oV8wOenpk@M`xaicfN~k1pbriU8A0%;g1ydm?8Q^NRl*;UH|HWB79o6mF zP%5i85!D4Qx;3CDjEH&*JY5ckPp^@7cTg2=KIkNWWEbS$Vf%!`9|wb6_@kfYEzD-m z#lL(cMZ0X?@Lz1=G@9Axg7!nq3$|VS|zP z=)86-uz)ONGd0EhF4l4gW5zcJDcDt3x1P`8-%n%3f-WH=p?ItflGAH=UUX*4P4&eV zzHl0=SK!iVFuSJ?Ka<06Ok)$m+EMzf#yp7>Wixd;>|oyEfMovrIgNQbGX9tOmCbzp zOjem+voJ67kyGIKui6ic<$+h7fU;FO?aw@?jU=68EuT8ZT3*IlX3UeTVRvbONXbqp z3Mc*13)fatDzvFu#bc)?UT-F@1EGH+Hc{S*wcNmzvq!I(p1BqNLOpS-V2q#;1wp?K zgN9Pl6E70MA#q}t<*ohI33)Ff($<}+)T-r!m@0SOibW}wr(7}Ma26<{&@ud2lVu|7ce_7wm6vA$`(zkl@fc(iWT@XaOpzQZg)zivO{ z=MJ+3{fg`y-YSDd)o6y6?0xA`NYY_U;hy%0=^4{2rnfy@AixSwtmO)3%kmAp${RfS z&J5P8Sn6>obq~q6k*==A!jo1U&*4=w*+Bij`xu{<$*!08*$0G?H~f;TU~MlR@dx{| zyqum8q?TOo$!BG;9znnEg$(QD-E1;+L9>riqxUkN?+9yBCke+N(5YuVdcg^!J=Bp% z+p{FK0C-XDOIdS~MaswWY`dd5+M!qMeAN-QJ?OXHz+!D5glB1y>)}t8!C?e*D;DeHHU>@ETMx_I*h;mEW*U z#4ou#mKVXphhRhFp^fp2Xq4Qj80pE7L%XD~aTmb>ZrU4F)CfGlKvp)ck=2T_PF+Ek zSZGYZAx2o^!zn~ZAX;`zDxjbUrzjcCe_(*as+rmkR*j|gs+3CDYL1dyl9ea1N+wnW z;A#NMlIj8C-*jaSuSrno(6N^yjn$X%KxEO|+{LIUtC7xAoH$fSC^Ni;WbhN=#rkT9^ioqQs8C&`5>5<-)_>(h|T>pHO;Ze(zJ-Bi*7h`31Vnr;kE^qn_Z- zBT&iu$oQET`Y+6BbZQrRCShzT+}_v&7191UR8TjG#tk8;MJq|k)1gr`T<@JA=|&{g z@YDp2))tLcLIE|3bs}oCuWa=4W6@|8r2N9Rg+8M~yeR^g<>O!KOV^g4G>{-#i&sL7 znQui4H?i+UEh0b||B_iJD68#xe)^?8ID8iJ)ZXXmJ|siRAgfy??JuB(B@>Ct>pTy9 zrLS4B6B4wiHQu%&6x*W!(-4U)Y{B&lOBOlmmR>q}>Q?eAeQ4(sZv>QoU@mnqP4P%q zex<3VbO*h-Hm(Pq`r|nlmL4UE#<)V(UrFY+8aEPE*>n8UD}8XYIYrr;-{2hI+yA(6&Y1@WGU2K7)+4eE&3Sc$8MVv1yoXkKK2j!rp}#LDD3Q3Hv;))NYPjbYD%K^cF?kp&?eOI4JorW z07L#onA$@rX_UgNN5tz26R>9C8cJx2>ZHj8;$ZbnL2mCpR!>?w*I7J?Czw6J^G!O~ z+iDmOMmSM4(rO$)^=+o>SoKn;NtW#;%NN4L2i0mpRx8V2-Dnbpu#4(!IxU7cv=&d5+wUZ>>#PDN!2z9Ibo`^=PiAHZ} zVYZ2E^trHy@f&(n6{ze%$}env=w<|Aig@XWc>liF7wVbT3mLZAp-V-GmOPu;|vfL=;sVul9P%8#m)or6bG3(aKCrug5^7L|X#!fpF_5B#rfw}%mn}?^E$FBP zBU*q$e!#d*Ue+7Gv6l6r!>Bf9K44Bl#Zi;6#ZMwzc?QEmZwKfH@xQNVDmio_e$8TY z#w-nlEV-$s$GBF#s`e$;^!{S_?X~D5kx%`SJ7EOEDL!iIe!4yJOKB=bB*S|I6mg?^ zA=VNQs@6{@tO227FnKnB*q9p1Db8sT(hlPMG@M!*XPw|B*v`<{exY)U6LOL!eJq(fhUF0F5UF#N3BCQq?BMxc}OW!)1*=gh$)a^wFpai zi|D3m!V+GbH83Tcc2GR@jI#v#CD$Srq{C>cZtahC@vAXuEn&cTOOL+s7QP%Hf<_9N zjXh;2J}InzQ2q3X|NRMvf;8X5)ld3v=7M`kGk6G(rx#*V6{dqflGnW0qZI%J@?MHK zBo<_qi+9L<>0k;xi=p5!7f%QfJE7T z1qw^vSD4ifaFTD_8I6s_@H;M1wLE^}EoRdI{HiU$0(FDXw6l`U z)ILi;lYce>RxXDO=> zYh*UlA6O0n*$CtiLi({P*FRd66HWxt#|47I$N_?bNP*Q@kx2+La3xp-xmXZ~fybO2dLI=W z#F~LcxrG!s%omx&;V!NOhYRE+HnVBERB|_pw0vQh(;`ideRFz97UEIFDfa%Xy|2( z-_X6%y=$6EaT zlEd+&KpiH4qP4ncEzWWv#)<>XFl%Blc>LGe(hmzNKA~zA(YBbv;=WUBdb`MUYdSzS zJsz4u(-k2{ywxWZp)iim)UjH+2RnF{j#V}PjPUEetAzsNeOfh0GL1qJ`teevCYrh< z5_lw*n`mlB7kwdY7)jFiO%-LL5*Vtw z37>K^6+NzRo^+!U1V)BD1ehSar5lR|?g4P96d}-a+X1Yk7 zeCr;*SI=7Mj9s}mW9@YMExZR~C3N>U^Pd>|x{wi37uYu1K^t+HKW40CvAdh;>Dzq@ zVe|eX)?@p|VxfHQcF#av#m&5)!eVsSyYR6JE3P}TiO*G79o?`m`6-3)at!#i*I2cEQr*s8>7>%|Y(>6k@al1c+1+*Pugxs0xu= zaO;?*?j|}I6OS`y4LcCXi+ZtAQAf1#Yc>j<>dc}TXi)~Ex2Ssvrv)1XGS$uCHPKY= z8C*S634X@-cU~;0^QHAL`9(a=pk+auA>}v1YRtY&EN-eT=jlLv4aV?vJ2?Z2i&+8! zoA2&b6hbB*5pb1lVt%4jSi&!Ru@dIN#M&26erN*+JzBx@{!Yk?MF_Cp!gB&`B{G`m z_G6h}&;c%HRn-I?PC6au$VYwT2RQQE$$Zj`2i2#OF&*{M&cEw&%(9_h91UTs$~q9z z22X0(W|}ht202XrW>H!bbUgE$CEhk}iZe*aF@MCMq8_|Xdo=M)wrD(zzz$n&<=slm z?m;?dC-1fx)XCd1R$30*yQz(+ooMQx{VsvI)mR_SrW$CDqxsZau|u_<{a5_X09_=} z*^G~W1uokr9#Mb=>z-fWtqZUk0Zp-GYd`EecdS=4uJEN(O0o-Yi^?~+_MNkVi8^$6{yv>D5$QYXUa=|rq}tNykIb*#QG77(#=^&#W& z1zGzB^}#vT(yp>vQ7DO4eG{l#S=!aWxUuCtE@>(0tM=rq?dZ@i!$L5&8k;ZVmkP2P zjhIN97Kz!H?_&C~te!~DlBJvgSo*`|-;PUs4Z%8jMnxueHR{^(8ZY#v`9L2Q;9p)K z{VdicE8IYw!7^F#p>$FSWT%JiLsyIWXmTL-G1wP^de96Qu+J}0g&*h>p_B&BJ4aB36zz>}UH>a$g(5mPsk(Q2%D54!W+%M1Ima)rVu&t|-i z1K`#1>v@bX3$A_pELP{Mf+<;?PI7$qC%mI5>494(2^uDZ_)cazga!>nv?C=o&{Zm zVF`ZZOhNI7qrtq+8Az7$;=WVar-_dAZc)18QauC!PD-1pHs)^N_BVdC$xUgR!^sMN zB3GS>3YhfXtqY!F`FIt^KAbEVniQUeELxpCg5NkSCy{y7k#NX3TYTs<*kjwzdXHIY zA1m@cei(i_t>I(*Sf@gzp&-$VjWBGrm5gg0W1|XpIpgA;tJWv~~ zATKw4Ya!o1tVR*F9P|#1!0z~Y@B-2KV2aHkwf}@?`9gh9)uk(Vnm=n^sw?GB5ibK% zCyo0XAh0Zr0Ym+?lb0=wXM68y%4IWdm`UMGNH9bXN6+#?Tqm~1kuOOaCy4UC{ z9AtH=!eAm7|Ho^&LE>2n+NxQXU>LhLC%`8^H$^ zVaDbMfDBS5P9X{4s!j zh?8+faG#{B}{`nL~LFJopMqz5r%x9_f}DlU9Rx>=;HHx(0-X z*lS?}2ZgR}Yh|1rKsyVpri>fJ+_>>7erVC^SQCCZfR)zGxy9cHuu3)8(-d55C?+k6 zc!oK7%1?9~=Mjz7R2Z`n^~7JigMr1jOj|U$WavlpEBb(}E0IJYl^$`o5;mkqzA5SGGNEG7&ceq>!Nb16x!o5*^*0f4 z96A;33JvA$0$E`FH;WzcMv7e;N;6>--;LQK0?@<^kByZ4lxsOf+XN{qNWHO=FAZcN zx`kQ%U?8hu?%9m)#35!(8m+3>Z;PE2%3s1{zP0mmOQc+PZt*M09l@LK@CRcA6{m*A zTEz}S5y=WbT+JDf-l@vyBsB-Yw8I>wS7!=Dvn zUPVtr3C(D0_tL{0@ zXQgs3)mb2-Q*{ZAr0Oazm8u(nG*ovQaZgj-wLwyK$;Aa+(>C-km~aCq$k5kM(ul0B z7JjX9yM#bwCUtj_>?|&JzdG0*7e+GvKzyvGKExI5rVDm?mkFzrP!M7{-UoM#yo;L< zPE%zGrZ||Wujm;!{1Y*RPRYU2i$xsxsII4;YE?FnhbEa8(F}p~I|pgfZ#zxD^`w43 z!yM4>X|f7DRy+ZNi{c@U&~pg=CO;LnHFf|mv10_&pAgcpJdf=c0$0u9om0`D$vZO< z{zxZ3A`KPSMT`&w=uLIpK;EwsD`uV#4U751TghGz5(rsa`0)#MzzLGWcwK1Tj{bTT zS0n+Zv~Xfyq7zAupAe-1Xr&K&rH1Ir0Evh>5Dg}g z@F@zA0MSgiCOvXLC{%9TgT4}LAw)46qK*;~(Md#oX<$FppAg9zM{X=J)DVr;5KUer zRrIY?QGYWSYi?K%(uknEQTUC?pIGD6e9`nlH4;diZs?)8VQr1wGs&)$i`zpW5#0I; zZbluk!M+4?5qRMvJm{uwZFYaLE?oG(@fmCmVIdae?SbK!EYL~HyMpRl4T<<&qGV`#oj z=UClTbAdz%yG-c8bdekg%fg@_VLjZry@WoEGE8#2FZzuD*WbY{pXAm+ayu-vY(A(CaA!9RCLnZuGE;5xWOHD~qHRQHW!w?wk5p~-sW zh?}fGYwQmFF6}x-vb!ewxsY|VgIh_-t-a*7o4Pp+F~*%+G2&*1tce=C{F2>$3=^7N zt2)@7!W0qStC#E!gM!#qb7$8}16N7o)>?8)#eO@D+x5Phs1qf(?U*#0p}M)WM-S|1 zN0ig9wKaB^vA2|bI8?Ix-~u<@!LFuc_chpo+a(R$40modG;UUnTZrW5lVx_Ii*c~K z*FeZxT(Wzpv1{zkZlBg8Od7ilvPWdPz`g9F$vRhZJ5KXiY?;uwy~@-?HPb_+3=BWy zbWi6=S+|QZ)==5yCMzB6VkNurl3hN{OIA795w{K+w?8y)jU~4+xLMT<(Z#{-Lw&Q5 zwYp^26(nScuI}vGXzV&_>>5gTbYrZs^LDUXU!S-cixV5G=?YB~!L5McmUqB43ns?t zNBR?u7V3W1=4=B!pbo3=A*zpe;%Qp@wwG(9iNe!cXI#&Z1gUNZm#TX!rXGf&!t1c= zi*w#_ZVC;33oyQjp>Kg8F*YEtvzkJ|o(7suVsDu7Q@Q|z!21%RkOJ=@iH7LpK=T5f zN$udE9!hnYd|Zf*^^%B6p`JkWtJH?KL^N4+=NIbM!(uS*FG4a6 zef=~kjRxfeLk-b02u>;*F;}YSmKbOa$IWR@3s#0SB7Tc`h1KLi ztZ`&6D9D0gK;rC}O*M9*8oSz(-9P)C+^ztL;MPzSnYM}{-FOHT#O>-K$;~VtpdQA& zfzVx;BhhU`8djg`V)u)K-7`^S{EqloO}&UK*x3ZTyzbRqG;FLddYk55MkL6dgQfPG zA8A2s48_1k9n-_*UNm2Ky4OG2a1g1XJ1>WWaxP;&?IDd>7}bO^Hw*VPJ|Rc4n*M~% z$h|He6vkXFIxHD;6|M-*5DACqq%jk5rC#dp0@Tdi-~Baz=d-1{JVc=()<@_|IDBgj zQ3Q$vqLtF&1Ek&*4UthI3Une0&=7qi5fPn4bQYRZ>$oAR@9yvl5@f*Fvm~O|(&6vB zAzIg6>Zqc_;eVG7zf~gY5B{X1SqFrUlEp|$I+~0t($TjP5z$FR5rk-VHw-_<9HgTyGo_Ah2p==(eD*jIeces!$RG6tqRE2BcxpGAu$szf zh}ud-eVvGUYlyy=h=@)idJN^M?c5Lr3Wge@+nQthX^8%oj(y2T1O?$o8C@kJhI#@~ zqM$LZpr~LqjR$|y(FVCo;S|>H?6glJlML7}G*ANZ$5QvCQB3gqh)yECd zCozy~h>mEZ{P7tQQK}r}nVV-%>LPXY5Jdt}FF|8GBN0Vvh=$PS34DB(0=&43S&b{w z(J+aK=p>^2gy@?uT{?OpCaoHxeMpcWg=vU3h(g0mpS?~$y7{FF7@+2+=>k zN<>@~8W#KPa_VS7XQ`tjC=!U|l*0H8NT8#R8lohzv&Q&}qLe`N0#}4+q(nq?5>Z(~ zl-$XsqrcrFJQkmUsf;|__)Peas5 zA`<>CbaV=yPdZAJh=@)ix(=vnv>T$G?h$e_5`-xC7l~+uC^XD-v)cBKQb#Kt5i(HF z7zaqJeGmTRM~ij~9W|sLC=f+yh(<|7L?;n7AViBhxOBAEJwhfTL5O;3hz5#6Lm@Xr zMKwh891*gZpfO%aMH5!jaWqVbK8igf#`W}Wi$Js%SEQpKB_g7ei00!;&1vsKwB9{J z{)hx2+GCYE`dSnkX8UY+diL-Rd}u8^Yi21qxx%vzg2vbrBtTR_L)2L!y6~3+5xsXq zh<=iYh)yDUi30UYH$-cr-Fkl_5`@U0AsQ$O4HJC8SQ}}Nx0i@|Cu@lE2^wQ_YTIfu zgFoqLliUpQ6U79fqfxjbM58^>gw>bmB%;=YXmdN4juwcJtM&dtND!i-KT92bDGD(^ z+Tlc0p}q8@sVEXU`Y58PF#se$bR7*7B43HYErX!z`AwWM|u(Kr+dM9;+CyYZN`S_2Kyx7gu>QKXX-Q3nmtSc!<} zBqDD@^j%w*j*I;vU-=Ev+^m4U>+Jirq{` z9pMx@O2ur2bTm#PB07oaYh0}D&AVijFQb&zMq2Zvf%d;D`_2e6B>VwVM zlgN=C`z8M?ZiS6MOC`NT%e0ldynv*v-+-hwycZ33R^ypuE%;ly$uWMF&z7N z;Iw0?a{+j^O#oj`fyf%ZVyzSS(r@J1Ed_noxqVqhR zH;QG&BX*3{e0g$hnBVIYZ4;A=*A0+?+3yA@C|<0Os2|{iF}z(tU4Z#E3Y#Tk7r?*t z?KLb6{3*0qgyIAaULvJheYYW#oE=<7BS-lBOwdc8zmERs^m)AU2!&p+MxNmG`EkWR zIeZ>pud(V{TT(8;Ni3PI`M&NfxL$1kn5c+c>+l+JmN}{9J^kC)CeM$vv_{sxrIcmK zim^P4^*j@2=^TyndNBv^p{ZL9Sgda{qt>)8#C;lKyJGro9@CJO(Y5%C5AVbRidfL2 z)spD#T9@$tOLmFdt3{VE=VBuTgrBxj2p>uP-)g+GS_pp#nVRsG9m3zK;t-yJ)+xLP z5`NQ`P@yI~UI}`GE=kg&OT3H3S+zm~ahB~zkY~wE%EX3E{$*$8$IT`-(Kq=>*nfqw zr%GXlZIQxkMaNZ}nVrJa+#-dUxteco$bw=k)21AJlVZ6L<||M`m|81H7(-LdlEQ>L zD?6m94I-x$HIVR|HlZ?)HnBkchlx2nwlp*F=Nf5)Q$5* zq&1@N89tz^IwI1P@lM1eH%Y{MR`TJ|EU3$nwF2>rKLq0CG``~Xo@D~@Yfb$EaY{u8 z;zSTR5f4YgZ(2MRx|}XFmd|X?Hu)xJRdC_vZCWr>&Gyva^5A_Sf}Eiq3LJP3qeE%# zvSowBJ7k4)mp@kvyqigU!IMvl>yHh^;Y_VOGm+{|c zvByv>#0lgY&22)d$3@DxLO=#y5zH;+Nu3Dh3`EeT4CWq4jP}L0!iYDj&yP?74zhDb z^{SaTLpd9RmnDV=#j#EL%itASv;6^SrASGxQIFF6U2A5nvy)~%w9h5axECiPis5$@I*eQq@HHbB{Zks5 zFA+odH_9?$;8<;p>7!O3S*I!k1%$0qnLWs`gMpl^>~4oqt#pV z=~8X#u?`uq>_D`oO+B)))do9C_>4oIf#znYC?+3W1>M+s>a2fJ*{W2VBXoORPULoo zkYJjMOl=^(28JS1<_0=cyc)Dl6|X=dkBZlQ_kXwvvneZD@;)8e0$wzX|)`IbC=2yI0iEV_1q6m6(3kCRUENMjt@H*2oH&#C8T&Rrc}mk(Qi$6 zk*P_s8973VD*+BE_JY{~?7<`6>2uZp51i=hT8vX~4?yft}f4A(tWf zTu~_(^@9Dl79;oI9@tqleU+3faEX+xD-BtXpe)UKE-jXldHpVY-+XF5AuwKqMaWyK zC(;x=+yk{J7R_{srqub3a!h5YXVdT~#N3Q`|K*f16CKVe=0PMVEFo~Krv{^GS5LtnmA8%kdF89xD7rybh@x!2r5C6H6mraGh2!%rmhTUl;vG zGf?OP2|j+7biH6aN(1=iHUYj9D#0*{2vw$0ze@1vktL8LWa#L0y)vM6%1{D{Jg!%6 z;Q#4*-#-1EXJ*g;>dt=Aysnj-*VW16boGsuXw~H{uPP9@YRvPHE~Q;jl=P{=y<|V?}$Mp_|Z?&F9rx zFoPjE&CRdY;97JRV=q>_rXK=fUfZmM8ey9^2uBXvOopN~+YIGW3_e#lR^&iDAi-|n z+l^^+-c2#*Q)#v@dQH!<8j=WnYJA<9Q&@$AqnZ6<70fJbu34fBC^?&<=iVauV1ChGmyJPK*iLuSJ9UNmVwL{f)eaYsvY3D1JQcj9MlI3Sk@!N}St_|tX z7^`U-L%A0imH}S65^AwL80!n8FjguQYc3kp{b>E_OiNIq(6NS@-ex*v0Fa~)7L5R%*Ay7c@O&9T2 zxlKc;g*N$ank6Nf)Q^AP50W&(T-qLr7wRDIEE-d-z5}R^uoLLJAWz+032!V|q@|w3 zgNWXUGz=im^1%m?4%4u?#hn_Y&ML`0*=a#AFL&za~g%H~8>(i)NdJP9|hVdYI?2fQOWvoao@5F`O8uo5mO>CBDjjW~?& zkFI2D(+4WD88?rilR?T<(Oss? z=x=J2xdMdx1Si23_XHd<)~5365G;>a+u&U;Wl2j?MF%?iYi~San>g32N^e-;JpwkF ztryy|Z`*@YlylWB0IXi?OpP~z3A5uZ9sAPgW}l66ND?6>`KLZ4NkQiq5ic0Gne#X0 z6~#UoqTJlg?+;{ULsb#iV4s+@PNdAPE2(9%%P-T6Zgg&OZZ4nkNngwyE=t7Li`C!1 zBp7Hr6~*c=NZH>21wl4b;*&@`P)AUrJGmX+9vVoAr@{x7UFc5mg0I{)HXeEEt@2P< zLnutGL*(<|+|n2LlYy+bxr&$5_8kds$_ntt8S|3e<`g%lDnaZf5W6a}muEw6sCo*{ zi&86ghX8aBZh|j}krgM(z;6}XBq-;Y)Tq4$D$rJW^-qdg*7(o?*fpPNZ%+NgYD$v) z>Jq<;=r@Aj6O7C5{2CI!TNs!S17?bm(eX-2Ti{n4k$+&yCRA4w#|P%f@U_HI@U4@gnpqc4UC4gFDd%BJwAq0z`yYzHFv`Zvj6_xFb5dx=eUn zmO6%VEJ~}15Ic}w#)=M&FK|gihD;585kfy4a|9AiA@sYc zkTigSpuNz5V=Vd}Qx{mhk%W2)qlQx+JwY8*7Etd?d4g>WJLs*xJuo3~Qr-9kR53&~ zQc}G}28epQOTCMTN)nNWBswFB-ox%rPP2*VZ3u{L(zDk|q5-hGgUDtfIwN$d2 zBB@ThLvKk$8;IzrByrrLoyqjNZH9dqUi6}+1^Ym}c!i0uvtDPU?eX|0>Rd`d zog}T!;Ky2>D7@g~UZ)z;_VWMcnq{RGs3e!)TB4?7WyanRuim@YDnw_B5<&$RqP1_G z6$`spERNGe<#2{mO*V@-MyHxk7iqVY8Zi7!4q{6%%Qx?~!<5?6*G;6iAl&q#+Fl_cUP7r5++c)d$luHU`99NOPA!wj*=71hf+ zt7lDit3K#1)rxW2yYU^Z-AG)Bis}g1d=~0p(O0|^=G0Vvp?im>E-ogv2I?i6l;)c; zX+)#eflEp;{{oTVItyH-Q$)JMNxzX7&O*EnZl8sJ?z-uB6PaD{kKX;g(iS13&n=B@ z6oGv(NrE-ou1VuXyopIWB_hd4&8*dcL&TU|M+v>_Pu43U#i;EP15!|Bb$A(v6i*h3 zwjqdERj%BTMhVRx^Db*pwhlKtMC=McPJ)RbaF-_X3Z$ule-r=Mw%G;*?rqk)0FKr1&&e@}20VYYkH$8LMm<_U zwKq7g@xC`q^42I*&;apwQ5FZKdm}l`&!Ux=`1jvdKA^AUt@|k(R9eiZ0p4~0k+N{^ zw;0O4T}W)+s@GaWK}Yd^F+yMsy1%gcMnKQbIQa^lOzlzvA#mLuK~zu@eTRX`NkrjS ztw}`nB+-59npWSZ6WoZ_5|J+vZQ7G-M&l3EzSMZvy_!M}4h6yY=wzg(>yBWU@tYN0nXB3?}h(OVGcsxEG*L7GMtVJaQb*tkB0|(!K^B`-0!8g}15? zT6lCH-1|%J_r|yZszls>E^Y>UU$7_6xJi&4=ng@4+V;ds6k*mh2+V1!A&cs0t^C;v za?BSjl#euJw)(~kF*M!nN1j>^V$e)aFWiEf%9i}hH0zcO@6UI%h2dwQXv;DD9H%1a zEQ;E?u$$<-1++mm7B_%Wjxrk987%?UAQ&k3aJK`+G;?>V)yPxL1+|up z=@M-O0;lBX2%Kl;IplzO#O_?DdA3s#^iq+U@)jJFF|w)U?lLu`rv4}<^%AzimueNJ=FImGszLBf3}-1z@uw{NaA5Oqg-&pbRwU!=h9fA6s-|L&_OVW_>zv2@%;u;VQkjM zs*R)nJ5~)jA+d`NJ{{m){ac+w#D;R@GmgcO*2Vb3(X51-DD7K8AcGA8fUN6q7EVPp zC8TUs2T*d_V-{6J=o2i4$~L@5x!Ta`oPsrFomQZ6pPBu0G}kPrgx8Kb0Kg+90Eb5w zlK|9d&7qGX#|aHRvyVf^qv_jGe9TjfLzf0a@ku|?*mc0Z8@cW+@hl88zv7?vz+bEU zXC{U$QF{T^Zm!jymr1okqgPBfoka{euR{DTg%%-HCxB7-ZOgLax*& z3_mW9E#hWVk%AqkZ=70**|FSrmMUCN+sw7xlLh<$%2K_ zQ8u;yN4KVmQBz~Irj|J(IXYEdc8zA`@|Z*%9all)JD2$WC|p3nQ=GFcIBo(&kwBrY zkAPUF%@dSOyzp7WuWF&dVi-AzkDS25bnTw=#S^f(vCJgCe*$Y^UPa7oMsuiRb=ipV zAR_(I0@VkCIKT7Y;h}wjB+io45yxudgNeqEsEXBefevDA6K$3XrwE*K)i3$5Nb8fr ziy(*27b!|5S$Y!3dDE>=WR-Or zCh#E>Sq}q99zD=Lcp<-KV#pZ9FQdq_IyX*Y-}vq80xpp)yb_8*=`+6I8z-?yl&OMJw3y@F^RPe3wM5eh7Q~){lVHI8V^5wQSS#7(FbUR<-)@Gh9vf*XEl!J z4Q=t0n9TO`R~9xgY+gOw+MLtQushy>1Tw9!O#;!UX@0Ll0##P;m~uEC;T8+>s``I@ zJ*HeRKk+j&hPRUSdphd}%lh(LAT!9h)VgTzusW$;4*$Z+%9P8kFPe;YR#_D$n+!Ce zph0-sDtyU2R@t*Sef*{@-(_W03sfc^XVe3A1&@%jlEua{4%GK6OBP>72^Q1C_)sgW zq?;S$zHx*6;b6Ypk4Z zSuq}OV>OHXYJ`zH!pLeU*okM}XErOP%R;5lqE}4^p5~P#o*e|VLHN^363?4JiKp8Z zrCPz-0#841oWW<><*Y<`lz~tX;=j*<#3pz&J%e@9``5(A+8L~7$r3;cR@c68DC}W*$*Lw)I{uJS#j_~?={Im15Ft2y zipb$xe`90xw`%0@>NCONQ7y?K+yQ2HIjJUH9qm&^mBI3VKULJY2z{!kMnH`kg7H!O zzL3E(2uBwemsT6>&xTf-zluR{(03LUV194!_Q4+!@^>#f}`U@Rb#;y80pIy zG8(ijB{9x~R>C<8Du(p`Ld?d;V>yfTt^!u~)b`;2>s)*Ts~)8ttiL6kHdBq=f{DhOU`R}!{C_;10y*L;BRmK^?^&%%8MR|1MtswWuD;Af_?gfO+Do0>{MX8?7$ zgag#WAPK4_%!e&8LB)#yUs@XB#rH0N1&Gx>^?60j0+%Ydu`UP=g7vjv2kR@vBgOKXb`@s7;m%?!snC1 z&(F+P%{vqv&ZuR<;nZd&qy$s}4*umFfSLzNKs#U}0q7bs{uj_2MY5zQ+OoW0*$ zv>`TW|0N0wW_&PN>4EBpTn8C<#^=jE(uX?KZ0IT0x{fGu?g1XPK2bMK;rkb{AM}23 zuo{b5xxgxdW^4#vqI%jBxNsKlMc^8|7(~s>=J3ml+1C*Z188D$U+^&&>rG@g)r&^g z_Gv4M#9>yMbi!}1zI^x+R>gdvCBR&h9tstokqe@)pvBO4ye6VHO50&Q zTd`3co3V|PzNDakbjlG4K{G_~?MM&t^Ev5WLCu(Et-=FOoa{Y#aO)Hvyp&ZcdKEg8 z2V&CmPcQXRNDl9`lzmb819Td1T{n%|wq%IycRO(nMZ|W;+!DJgXtsB*C||o2n@%(S z=9ibUA^Hzxa(J^pSh*mZm^tA~S;PG4b7@i-yWf3o{)3g)H$p2*|6ob|`+bFNWJ*W; z$BZ+fVbZ()<}f_$i?tMuwUla#>>d`yh#&bmvqz<2=WWiY4>k9&=PyG7OawIgfH`Uv zB4%0GbKyai-}U2Dma%dA0;O_xD$7|Z&oaTK$n0~3*%2~hBhQXIi;%ge7a`fui^r^B z2J>8`VlCmEev%G*iSMb&p+-Gk5~IHXqrWzJ+C%AMpPlJ-lwRUWFQ9aSGfnK^1wDG% zx1wOs3;{a)3p8X=La4c{W*&6PmZRMnY7b&?(8)k;Md@r;x&fu{xYAWi=J0@(ths(` za1QUalC?2gdXQ{m@t?F@hqPQ)YT2R;q+Cm>LHOw*wcNi1w0v}i(C$=R=h1FM&{>ok zR7umZ!$Z}optX;2DW(La+at|!NPIJ|Ma8jO#H-wYCfWt~=2dK~{z~y2KJZUAtnGg4 zWl8V+2!&Z@H z!6F3L{7ie{Gt^l!SxO}7(7&XQx`h0Q(FKsBCc>%euV>ME9e9jikJui_SFLAN@squt zB}Y|+nW+XnK?;erT*fjUV$w4OvqYQHQ;#@jGZrW!!W~{RyZ27#5%1SJ9q0Ie55_Y$ zuzHP06eWezcM=EV%AN>8U`84XOPPCD!-y{cA$wUOHWQR<>ZP!6BHkwxj( z!?gS`yi?GluW|cqIJleA~H#DHf1bb`!#)s)j9PBl>hf8Rzp7) ztk`B&5i{kgo7oqhMR@nkEVYz=AE~&>OrY~5V?RuPY@ZVP?!7V@P%7g#g=1G>hd0;XQKb)P|<0% zE2Yml($F)dlO1WH!Vt9<`1x#QWh$>Aw-^^7G~xq$k`H|^lW*Qq61q@(2ITOLTUj{o z`xhG@VTR#odBWOk7`6spQimc<10;^q_JNGTWg2)uXfY=Kjk<-lu}s~(=KR7owyf0b zH?#~a@JvLP0-4!AF6qFx zP^_&ycr;tRP%wwvcd$kJiiLByWhZN*-;9gXJ6RX~4rnJVmHilU;xzE#=Dc#Owe>W7 z05vY@uxCpPdmd*UkM$~_9G;%a4(aTtc*-s|SMTYCIpuCvHs%%17e&8$^B(71TL&(U zx7JYW`{Kv${xC8ow&nx*6Y^n^0;4UAuX(0e2V#@afk$J!E8X*1JPb%LEw+|9n$ z8}sMzhr4luH~JMf>|u@d8ToQ{cHhH-Jbgc;dwSrzm5JBYTWHk0mzCF#QF8doy=;+h z6|L;N>W{Lv`%t!)56>*RmLjkR=Msy@n3-LUgg>4f`U3APgu9JKivvCR** z1k9{M;sc>HYPC1IYTLgCmHG)JKrk=f(rhU>s5TJL>yh~8kWSC9?PrbjG0=MHbXGpJ zghFrI(~EVF&O>>$uoKfcrW2OHFlnV3>j&6iU^=Vsw@(P)3VUBoBfelByzF(QY)LHp zWk=yVZ202f5qwhcfM4Mz&tfetz0_CeKabMcV7)htxur|~inDIvYmpNVu)0HkO}yCIrzX^BIb`49-sMd8=Z^A5qCCSM1BtcS0=9<^@pK$%-^eqE zhaAM)jfLzy`XDQ*p9n$v9As6>)$$P2PZAZM7Je<}<~Ea!?!idlP|&SA$U5p9=EIm< zI$t24x|R9sjnLTdTUm&IeGw-&lS9Dd+j97^t*pLz+UJin*F7WmnfLO?=Q4uSzu-iW z6wlr8m08oO2W0)s9ueui>~T3CT`LK+T|rEQn}7+85MGa_{dZL|*7{>*$2W-ABly|# zgM%hFB>D1#5W{M&tTv)XMS~ka*8?r$1G!f|qCMw_RY-KASBpYjNn`tZieDN1#-+1%9K3=*NVqZ951oh zx>md$fW_9$$fm{CEm1u27^_*j0+^E8hT(`{nqrF^2Y>l4LANJ6Gmf!3o^^^hpz*97 z>Lr~44I*>(cjRG76Deg?{*Y_PFY1HLl9Y~2bpl)nldfgnasMKo*ur%u__Y(Pl&;Aq z{_zAWov#Ge(}z~&Wlpl5IxIPjKgq@v>Fh=8>jxff&_12g%!_-UVvBX1Kl3%GSfuXZ zXMXP#GwBL`;^j}Ho@pPSbQ_bWLE8Z!anRWAD^7Gj&LU-X7_d3fO3<`Vs zG568M)|MCX*2L7-mXC4P-Q>RUmR_6VEuB-mi5*Re8IiXvGRo{zRkn4!BuWL$AU{3 zW&Mi(Q-AL}KH?l}ST*Mj>d_ai52?>_DLmOYT@0r*soQtg5fwYW<5$nIC|&30y!d(6 zCR}+AA>)g&+CZK@jlhR;6FDwcThS`Z<=LlP?_!QZY>%<^@*4 zd&V6adBO|d;l3By1YOxT+;)-uUK#7D@s@96vF;y~H}WBv+HX3TGz#HuFR^-ceZjUP z#pI8%Rybo;?u;5j`G%6sbDqMG4^9mvFZJn8*Cp zC00Q<_7*R3nQhj!zsXNtW+in=|MEwdSy^4|O=g&yNe+R z=?7{or7g0Y-tetQX_{xqiANlv!H9d{A#Z)1H43|>qPVA443*A+S3cUJ-7+1b!kOf5 z-Ryk(b)ZPS%5Pj}D|Pd)@RS>@Zp7vXAWxIz)Y?)?&zEV(Eim*Ic}4GWD7Jy`kSqN0 z4OTrg_AWs zx+~g7t3W#OBDx1=BAAN(Q=S*U&B_<4K}<*sVnBJShWx|Z+-4CzkME)7yX1#=?{VvG zHd*I)k^9|Y^>t@2@K$$Ni3ayGXlV$erP!S*c2L^$!OL(TXEjD#fDR&uc_qw2vpMI< zNld-|fp_2ulgZBixPxPJCS~xGci2qbzVp1_U8G}*aob%s%4|6&$jjXm3C#ToZ6F%a`*4* zJi5z(x`N!}E1{T)WJvYwZDizgGFA^!`X?tNnu2eptS^wIHb*P60WqcPgwCP=h{@kQ z7952+R&3-MzvRW_9yUW=%=eK__zG&fT2l7?k!T$EROqBQyotyxndJW81@fBzu(%G- zf75xuKW?h(EeL-}Hk34>uV>;3n$p<|7ejf{gu$MPdquimu%LgcrV{;hr{qV^lH~Q& zm^=LBKdeo@!f5u^2$D78?rSwRyVuzDH)`Bd`PzS3RPBbe(2d)#Ht@K&mx`w& zLi-cyL*QL143v+qIBdNR`URZ5#dz>z) z0SV20cfgXE$VX!?0qe%v0uHH>NBH(|6Z1=d3}!^OvDmd3Ur=4*fVM#RGNYl5#vVakC6Z@NIHbGO#Jxn1jO`_8;dr zpR@9YWq1)+eD)h}0Y#*@$2Y~*O1F5i7c3-b1BznWwYDJAfgA2tXCpYOr!Vhp`+^nn z)D11n`@Fq|C5cVZFOy<)9(DgM0uE9fNr2I*u>x%NjP_Bc2PiQNZ2PGXCY z^+bq$;1Cag&FX{{zW_NdI_CT7V)jo{1X9og_0fKw^qSSv9XQYTy=INe@4G?*ev$%W ziDUk5hk$PmlYqYCvUs^Sta^ct_~3dwsO#=k-s25Ea#*Jx|LG0;vFPiwSZ0X5Dg>KC z-Kykyu6xU@y6PAC^tTx7RvzJN-m(L=bifsFZI+6OYOD=|ykE0Rt*w3i)%qg8^=7>A zj2BZcA&BEBH(E2;lEoLj!yW~X3q0)|=7BFR@sjUZd)=mNKJ-0?fOi*p;0M-M*Zd&= z=>zMpdp?(6|G-x3+IsV;A7THO7x?jyETzo2Iq00)t^P!DtDi}?`t~@y{iyZAM+XMLq0qAe8wV?Zow>mHk^upOPQ8(uNQq-vfz@f5`2%J`iP~6gwVd2na;zM zKHl=ZSb|6>AKxJS32G+^$y81YEM%yqUld(Xi^fs$9EY;B;^PR+3FqK$cP6nT>D3uEr zK@H42(L!f@GtT$qM!rW;ikCRD6BTSmONN+bV>3gqd2&!_dxAezlxSV+3?7kB>C~() z%t7*k2i1SEK{Sc?d%TqKNE;}FpQ*GMTV z`Q`jdecg~l+~B4BrF(UhAM;X1m54eh1erm~u;T<@SmUj5gYpM?4{xP}u6Y*!$y=$Y zE1kucdMm~KmTz-2XXbH!#9Jw+n|Xl$>#da0Z8<_#nOMAfCdo1$CeBbt(lvcpHdC#9 zfUhc`lnr^EfkrVMu^DIKt3-13<-k^lt-56K2L+VSlEc%bj_nmcAOh$QP#uY_OFFMq zP^qiyeTerhs4UlcXYN#dl#-shRtI=_UlbHMz_0zwN6`(ycwj z2NY7;>$3LoorRQJy7Os#zMs-Z7jTe&@KZ+XzFxr-{gtxbU(!t2=G*ohU*fM6Gykw2 z)AZQ~ypO~-FiqYduDy;VVy(d#un~ljZ~anUiZQ(uTS4+%RM`UD4qH^Li9^WKdmRqB z2#lmd)q*(oBZ%2@OjeigBk`W#+kQKj6LppvlScm25zE5dSXc@1<}_y8d}myfm^Q6* zVLBx70h13fbp}FUO6-jJd7NN&QH}eZ@Yq}9q&h$ngVlX70Jxz9PAusqLf`fRG>lZm z6`IDXb}0`qpvg!MqKEw%h2lb@u!JbRyNpT`7C)M!2H}NCZ7#;E-)F@_+tBoeHfwDs z)mX89PzyP=2kxt}+Fz&iT&T}oxx0rym`wx2J1z#=Mk z+w(EEdpE!zA8Q?lWo!Fhx)btC#zC;CoIvy2Qk~cG_YYXfb{tckSZfO}F@IZ21UAFn z%gDq0ts$XepMAjMwK;0Y;8O4jI`*CDO=~ ziYWDq{&wp>My|1!j9ksR4X=)Q+BUQ!mhBu1l&}W;BO)UUjqP{~ z*I4rxa`7O=3mJ=$flg%K2#=N1eVZxrG>B@$4i5jhf^&y-XiSWG7mOv=K$PES_T3?Vzu%vK$j$ET?Ck99?CflL z;%cxTXGJK+)B`TuZXV)-^4o5@?;#Ru zU0H`=o4U&xWgz^8%)jtM3jUiTSxBG6^`FnxoGN4uz72~okL7~i>M)gORi z8fWQJ1<|pgCuvOy;iovSr&A>`McsRWV>@EJPq($;(;9ULGd!ND=VK#EO9g*V1T2f1jhR(}@NH?m964a-pXsSG$LVHV!HjRFIg*#9Q z5FBD49Z*i{6%H|2!Ux$PUXPuyA)&}l5BtIH9QK+5%P|r|)v@|8`LChGQX(j&2_qLr zj(tIf(+c>Y?Gol!4x%PsJ38SP*|lA&aA>T%Errcyx)!;e$7?da(i_ztm|CF>wD4TC z8`=S{`5crH-yB!WhIn%~d~rNm^MVB8t<7KZSAB7u^*RN2S1XXWmvB`U?w|@@qDSQ^ zIKUrgPMZP>wuh*N1OMJTP)ycagN4p9V?;)=eQ4N0N4!MEz_%|Tk`Z#tLfBR@%krGZ zrd`|+R-xp*RM1=aDvP#Lh&N`*QQN7hx2P1*01eRN7cID$HER1Jy|0$;-_XdHSEuC3us;G(c%9>!69n3DCJ%9LX42eiJSC7l8%pK?qRQElcUFKV;Ky6TSDx zAi1)XE>{!Y)Fwa#_1JqHRq?{SB){GfDFzaApUVE5)ij!&FV39EnO4&o_&*YUrjKD) z@M%nKry~c$*Oi$wInxq;0#QQNlluW8%#d$uHub11JSkzSC`J*1qDjFHs0liv-PlOh zKv79?+CawwVJ()Nr0$i47p*TN`YNaQQK2AY7XOVRgW$YWSx0k&L_gniYwd~|hi?() z#+_`-xP!K@rQ&794zcwCP|O9uPx2yMkbvArX8GE3PQ)N%MGag{hLHrsg|^SvtV8SSYc0#XV92Nc%vlwt|CvAgqm^3g7> zklMBpsl3so9RX~c!Z`YLyq)2exo{lzcA)KDm^sY4t9D8W^~=rICNTczkW!o_LYS?r z3es}4l}xbZa9;So*{dGOXZXd(r?aGdNjj3<~Sq-dn7=Yn|EL=aZ55t(vc}}vr_TO!X zvB?Bh!}HxTxqnS-}gepf;664JB+DSu2Sf%JBoN z;1lZJHFJKeU>K-ID_Qj1>N!$d911pz4}I{9332B9#Lk+5k z-;^awC^$@1^69(8p=?K?n%rL;#F2W~bP0_L6BCrKTj*t&NOJ95CwBz+&!WVtB3a2^ zM5n8Y0ZRHJs#Hyc#dKK&$+F68t@zg5nsISy)Y2MnK#Cn-g9XCo4IXXj<4=og=MjW-j& zm)revoFVq;G#LR&vIkXI?$NMunM-q>n#YrLX9(^Z#>VTjF#M}$)0#S>v*NanKGhK= zl{S;8WRzH`RGvf`QKF1t{zL=KOV01QSG{- zs*+@;p>;8bl{VAYbwzLila9W`O4sX(&SleQL1qZNNts#1_^&`rA6ZZ5I7U{*dDOC= zs8zoz;~tbcdpiLm!!7JD%@=9%BhI#oGUJ6-n6YA{!r#_%W&-#GfPJFBq0RL~P^(Lv z7!Au00S!Ziwm0ZA`GmtB!fn}VWb_rS#AMqnxa9#P=pX5Hoi%;fXwZ>`m zJ_d1*bK|IVeKAQHzLHkg$7GZ}mNM&$1gDKus{#Cx0%NI91F^!Zb1H^Mr0c3NT-{8F z$ySlAe`J(p40$z#Jzh71DmNBoXi7uT#W-&?nimQ!LgY|uxsaYU6tyZWorboMU7;YV zrMNPR;nW^<(zOYkc|miZj)u;hP0eEw6U!jtRNBnSS%bHA&W3m4D zCzV7aVOGAGPw9lNfX*s?_~LW$xWR}jddMp7bJhhdc`B-SHj7>~5_Oep)0yiT z#*C4982&1q8TO@L8;eraPNaOv^$FY;1WCR!gQleNtd&n&!AK{y>ZrlCXC_sS1NSvT zsehcPuS< z1en4?(rGk~vowcu@(Fg}5)iNw8lGT@9tVj|979!`W7Tv;PxeGo6O{h!rJ#sMPnM;v zDyK`0XoaAKo7~VI7px7M#4`mSiP-}h_7f^9<4PmvIGutMb~w$Fi@X0b?!D33IaNPb zs29jnL8072c`Dd6np~1F^*^6S(Miz6*JJ2Xl893FjiG`qL~zNA<9T8kRLYPa>LD0>yt)IDww;iKweRDVSH`CWG zVKrYT)1{W8Lgl&0i8J3crdlCm*nmx#wB=+>g0 zGNdmpYb}}=JKBfqy=Y9G&IZ+DD%_W{TEl=m>O^q12n&l@MsJG=h@5Q z&uP6f%`g%*pX0s1PPTIRZC4t3vfD=mBGjF=2*qCRms&XmSEcH<5efMLg7SWfX)Ev@ z0hWeO75wSsAl(XUR|n~_`28hmVB%!`KAPKB3{Sz@2hXqY3JB+%Tl3lSdivRN(AfYD!m>exv@dGy%T?qyD2YjOK22&T`li64wTR2?)`E$8 z%tS~o6UUGYCceQRy;HUA!%*L@FY7ypv@hzL!PIi=8?Kjz0AacYars%f!O=UsFU84Podgo zapxPF+(DG^Z3h%PpPCn=i(GWA&`|oegXom<9R9pT{K8&6n5Y)@2h>;h+z|X8+Z?` z>?FL4IRhbcEuRU0q#fkpwpd;%$UkXdc8;cv{L*R{q@>Q`SHtXq*|c*+es5~gMYQPx z5!z4WzhRdeQt2m8E*D7TF|y3!CL>J$;#L8lItL>&K7yj={76G`OqipuC?-=eojBd>l?%S7A|X z{b+PI%r-YV(3x(cVe3Hl|1IGwJK_(bS_n4kk~*Uu>XV&g?t;^en%pkeD?Ee5{VmP`O^|8>sMDoj0SS$9!K88(G(cZb1lK81`ugtyY7 z1BLd$PSC&YsYws9Svk^~>n~2pM3e8z>R-oyL)(-L2_eA5l)3*NRH_75+5`qku8(cQ~iNOHd~*j?ODa?=My^xgoe zcr?to=mdUkW=#10DSgwC7B9(jMYlg!v_r@L*n;`TJ%=3IatD6NT>LzYE!FX_Nc<__$uQHedZ`kL^Yph zG~lmA7%vyUvmHOAx}(4)M5i+sLNW9y5C!7%R#34k{XGaP))T9##$XXr(6Us6_Q2cXSay3}0Vc_(540h(X~ZybyJ*D` zNZW$ehi+xU>-4HIu4v8%mhRrdZSVhHH3K}WG6{Rh89x2Kw6Fbwi zk>YSfm0CE)(dkDNfp_oLkRKkyX&Me0ZNkeFh#|u1!{W1{`B!-v27?oaNb+grf27f) zFp^KSrq!cFV8WnuW)xc?D9^iOH)9#bS#Rqkzc_QO3tyvy7X~vK>j}Pcv=FrXY(pPE zVCg2(;oq5K$u$|u*EKeyRx(1XO4nAjW{jAw+-*rgW5r~pLrdB?R-`I7TX4F2M!j*O zl#{YPCZp4M;o{`9m3n_A<|-ExGTwY8j80C6$a$hjHv~7$&Y+3dP*Lhf(a}l5T6k1E z8-&a?TEQmS)Ml~>ulWNJ*eT0E3h$I1EvYLuiP6=PbP~Y%J$~m|8;48ittc=Z%SKJgirpn{h=8}zoIKCqEwi5D$9m%7Foha z;J3!-g5>9XuqC3EXwJLLS@H=&?8u+d`X-X+6j9wUym2-)pCXca1l8uz{s;3IDdHj+ zxW|CiG^#r&b09o~!+%y&gZ6e96Ai-)+uGqDblA|v4r2p~2h|G1ZnTGqOQs@Hcpp-! zK2;=@s?~^f6d__;ZPcRMPW14A2m>X#~T$0fY@RO&`3LhpqhbtR1)qcUm2JlSHd1M99={+H_XncF8Y?OF|TQ7 zs%YZ$mOiA4R6}(AY)VNJr3``iu`*3mcfE|KsqL}x`PJ#?G|{{4gc!`|Q4nX`x%$EA zCUj@c=&hMYIIPhPd6_r0_A%MiZw5j;VfZn3hA2^{1Typn@**1%g6Gv(rtR5+--O}R zmH_j@3{lar`FTDX5GO+2v&;U+g4m;BHbuN1lTq*eLIZwV!CJbiaigwV^G zqL}e;Jvj#r;sMYs8s>VI2ryhgduq%Q6&nPEakcUt6{{%?&?Di?W87QQ36OERvMptC0U}(MqXOg~rSlA?~<3 z2X>pWFE)hbW-+y_Li=WmcE!h6;w|z)ZpKu;q71!DZ%)1zn8C-DDAt1Qk)f4osYR48 zS*RIe1%F8oTW`W>H*RY01i7R$oQTY(91EQ6O_AVx&j057Ub4QT>ox~1?`sEc&Jm>z z7i(wJ+c~18ax9eMt)i8uODJ=k#Z&r6{HObig@CmW_R;fSM*OC@vi8eBV7w?ol2~*&&*q@vyru#)<%)vT(_&5T2mm%zfAcRk*s`)cs{TUN^^*Turiun&AzSPbWEXa`DK41PNzA#E|%(1knE-o>K3 z({L)jL^Lx@2+OA4OGFo^VRUMVXl}SvC7av{;;a-%(IhJP#|JP+Q60-5Cdp?e!kH<= z;!fcN4x$g*Nt#0<*x-V486^BoKa_-ATWME9(M1SPoP|LB1L-dky?vX0%c0^f`PhYs z>4KqS_y2H)J*jdw4O=Rr3`vkQU&YG3#t>L|yq_apajiQUmx(y1#ngV8=;n`EluvIz zuaKwniUQf*d1D6Con@k}-|^}aZERk&<)w4ca;VvIG`w_ZHmzAM+)KHDbGeBjiG9JTnaoR2c7nq@LF>P_4YKaLy+VC|Z zPHByg)`lSkfl{lF2Yzr+j^CWJgxb7Wez@7o(f!sT=m4uv4i>Zk6A-4Y&neP{(Q4u+ zhT{u8QwvU!$fiFW$T(&s$_&MHXOtPPw;dT*wU6bQt_YMhgYH=^6Dc58LQl~iNYHhc zUL?+ZRl6utOdB03x3q(LkrjH1wlzhE7un(EI%u_n79E^n2Pf)aiX9xHgX8RAR~;N` z2b=3)9XlAUgKh0#m<|qf&EA zb+DKnJfwpki_6~8Qnu-EwjExfgYWI&935P52Pf&^6FWFm2M5`~ZU7Sye`OtzKXD)E zg%&S=KIflx86Qex@o|?5^GK_h!b#Tf9g@T&&4-b#KIe-ucaKC? z_f?{loxvlRI>}fY z^yEUhWh=nj)8^`_7F^F{QKbNsTK)*8vM*4zAu(7(P0f&kh#R!M9+5b92hb_Wx`LUjhU_ zob$V$bIYD{O9!vn!E-uz$qpWrU`qIDJG>PzHWDsMe#7_4)EC-9iRIcF<3k<=xT;N+ zDW?yajVO-Mu6#1AT7Q@bHU1SOttl^_TM{AY~jzy!jdbwa{H|U>MMZ##o3oR%& zE1nB_g={3v?Y4#W*z^Ijz5+0C+ay?Jx71C zDykpn^we`k^+EfgBS(wNN)kCMPS5I~7douxRO6gVdQLq(=e%A~NzQSXIpVEEHu*|~ zsGQzR6b*XEM%E%q>$&;#+{b!uh>LbdW}9p>A-tzf_B0^vIOj}{I?w|;mt38CZxYp0 zFcv%UjB54ywINV;V%)+8df=UC-P(2rvQ##+Ylm3;G>h4ZoFcr6;mQIoLhp(M*USmL7K!B9Xb`If~+q>`~YsZ2mrW^Ko^uQ#Kfb*rX zQs}@7*c85ri<^U-5H44=`B+h9;^`KjaB%3H4KE|+-AT|rc)mWJf}_0RuNYJpaV|Lt zzaQ7qe>cRD2-l)mZ8XJ?G7wa9OK8OrmRQ95sE)E!}=32vQi z&wca2ew}P}%Vbl`7DU4q7o`qcL=(dW-1y(LMMP9@gD?sV8~S6E8>{bQ{cxGe^N?JP zeB)S+Y(#(JJa0wcY%0E0Y*E78=-5_K!Z0f^n{ICv&3!z4xQzVlbuqnAY(9)}NatVg zY-+GgtT7Dm%BH8=M1=+wycw4xT9XjHNY}go=h;GvHxJ2|xj?SVIS%^Ki?Q*`b{N=9 zF%yJZZ%6d=LJ^v@9eZoHUFqxXqD8>UiYz0<-+FMzT4w#iy`6T!nED&Tk**1ysMrqC z+4F2+;8~;UVR6f+h${P`hDe|Ot~6tZXl3YCDw`hcKuB?311Ul zEWoi~>mwWsSTk%R2CW|BQF9paX9><89aRnEo11zatsSIu)e8yF{}Bvr3@U6V2a~tV^872D>omc>6N4lq6C( zmq@_^%vG?~(whd)axRGnBFF3ojd325M$r-!YH{`pmKYVe%~U-l9ix`!oK@fln(1! z9HP97euEGln;M~eP#mu($dfkqw-f9KBT{79)yi!_yY`6)<;MU$23Mt6HW~Me5;Z-F zfwh&qe#hfWtY(AU^dt9WW%o%VDr^Qc%NljhOIPfcCD0%Hg{NVxvw^0b!rqi+zo=RM ztD;~{8ZiA#hv=afn{6+45hBNUFgR1@elb`Hb*2snM62TCfMrZAi0W*v_)qgInoZvw z5Wen>WyW2ojeJ24^Xy^+y*eP=4I?2xmkgXsZc-efk_>F+E>);)24aH$I?=WaM41oA zaeTHseMF|g&zMc64~hoHb@{j|cU{cK{At8NQPtbYNgjQ%IG2Gpp+7uf7v8nTOk}Q7 z(}|iNLg2NUFIf&D@H*c$o4z?DJZp||%@y7t{M2ve#CEq`1kVoBDdKY=HEUFDTo7lg zuosg5cnCJ`PL4urcS3j}heh>D4+}$hZWw}j`c<6#B#Zuu@Cg?UK?gyAy-;w@VKK;H z#gDARqGjE01B zsQ4co@!>-=s2euUwCi7m+8-6MhUOm?T60u1Gwpfl#5aiZ93Q(3xfqU#vgH~C<>aKE zz*%(YDLdD^dgm+DEBGS_5@Pq*m6DE$QiW>&%N*6x1{TW3(^n!QWp07oi3V0V-AkTo zTME_4E1Eqh6?Ori0s`rnvuX2DlT(7VH{OG@AlUp=+Zy!=RXvt(aOhQPw{ZW0-OJQ? zv>OvYqFtsxvy^wFM0 zENf$@B_N}=kG+> z%3*r?0$z9`eK~ZArwP9}bLTRic-XAF-2U1M5kh^A{zFwyh_FKb+!V-t1b7~L0!=Oo zD(4#TJplSPw-O^ z$2F#QmQ&>@oPfhl?>X(~?`gzI;T<^^Pu1ber06Xex&^#eR;ziK{m4OVGQMBFrhAf=`Kx6@Ph$d~1}G%4nWid_it`XZtJ}&)0PM zY+?YKJ@h?IIVBqSj?hc|fb}OzWX{uNi@RQbXUw*DH&pl|7nfV2r{2n*)v6ZA=9jrU73gh%QFx}|sk=S%oht-t!yqq|m?cZ_ zwB~^lJR{9um5L1g?k!dR9#hLwMNSf720FG9Q;U$LUdnYpmumY)FLjm~hz!knLoZOO z;2kGfYJ`GLJcDhgXJB~Y84>FHtdtaPaz67G&UGIJs*>vTs@Ko}@W|_KE_F1f!J@fG{ zzCI^GZ||}#-vA1c=S0^UzoBuU&^VJfv3VzX+bdmcSr9dzeur<Qu_EdBLO?Pv}KoEOtVmVU~@w6EQO06@8CLGBP1)VPs9L~-3q8|zeWJ=2up2$GCUv|Z)*2o|YM(BMou=|H_}vF4NG?pqQ+wf*O(!mj z5{l^s-MuL4n9BW|g?3JX3gab9d0~s6L<_kjyj?bh!{aY%z$|}BL@M8AljRcjnFeLk z%}dyuH-*zbm!L|$o|D&QQO&6tHNTAA$5)Wi<3I7}+M>&%XkdP{6E-R>Lrzjr^Wb7? zuaRay!5W;El|x1Uz^ri}*tOC*$LjjPhOH2J;Kv$1gogrN29>W@h)$0naAV?m$fe;k zZV>yK_wv#FozBIn<`ogD-1&$4UV$sJ`yZNn1$XME{gVaD6+e9v-=ooY0L4SRHG~z3 zeJA8P{d`4KDc)St6CbKV&oH4xnyzM&-&HZQ@%}$iku`ko&%BSz^)&>SSbKN3)xnU0 zi>ZzJU{9#PV@#k%ISSdytan#PN23@PlN$0pSHW4H3)^4j@|;PE^cFoVk@J>>PKXw&PRQm#@qgps#-v zE|GSt@JRD}4+-N@6nnk;%_7`rbwy9Rv+CjX4&Gm84~jQAU%sP>2nxVHzih%bM-zgPlBWp)wQ0vSI5%ZK{uggJDeXcfuZu#pm%f#J zt;IP3CYIJ!@?iG}tx;RyvumkRZ%*4f=JNMK>;9IyUdJZz?^lJJGWLVcWZfS`r@-~R zPGr&M@-+)7dH9-Ei;n&PA7Os>|K_XGO;Mz3zBiJufB1v|^TpQ$F`CB1oz~ubL>}ao zm!IpenIB&Ta+`ZoEC}?r7yR78PDshaMRpBp@T2fIcxL?<7w9=t?OA_I2By}qGtlQt z!Th6wkz@?v|LnM=zv=mpqKwx-7VPw6Ygj#usoruLOM+M7GoS*6{v={u3PN4uEL}d( zjcmNxv*;%gSupg893NWHd%F9R2vh!kM}=>RURB%RZ6jXEr@e#m>co<;L@h&__C1C% z4uROdhmn-~-xgWL+wyp2P1H85eV;`mUO1Pe_qT*weiN67&Y~i4;uWe)n{SJ4h6?Xw z^F#Q7$^3YFOXR0Hcf?^+-w0{286 zLrtWjE???{Z#DL@OE>zSt)-NwTo*(+JpyMH(Kr@n zC+Vm}W5`9>9wOcS9o4=s!t(E7;K5rOd0$jhYCfaQ_i;B!sX%oehzX@)`Ah+ZO(HI* zNZ;%bcVDFN`I&A!5OIcHul}Q%=S)k3xX9mmTR8d|m47IfD|eUCnTJ>nxZJ0w4@IKu zg$hstOC#Rata~5te_>%z(VqrBLbGo@w>SITBV6pA@SFmF5lKN8zR?|5zAc*o@1Yi= zo1-C7JP7N8KqC`+dY6{|f|lGMy7CL^%6FHZ|AJNhUzt?&F|2!`r&R4RZYorGLhB!k z4sOvn2dQ29jZGX3-?PtM;9A)>8UB=G%7oZ1+=isyJlDl}2uDa~^;B zqLg^cyT$Ml5iu2q%2CvB!n44-3$WQ%*S0@VSAZdA+{VJ-9fv>0q7BRR=SNRZ@_*NX zG#aV=04hREBd*b!--NeoCq3yDlGN@4bkgK;PRcoyto%& zmNE5gz7B@VBTk}u{!TNVija_oWpG7m88j4+#8u>>ZR-o!GZLrp{%=?d+E zi=9zY4ih#xo)MVStk@Ue2Y)=Z?a(ZA(Gzr>)|_d;2jVpj6Gg#f6qE<}{?MlWMw4u! zmf_r!yhF-n6aM*&`NJr7ai^kxift)9u0g@(JY@s*y$!1EseWlJkX&`VN}XorHh#&$tQrRG|^RM4BDZq zN&{VE#iaUHbZXuGac<@dNp+50Lrd5;rc z*5Wkcz3@?%*i-oW71Y$}GXCp(mB#%eeB&#fQ0%uz_<`a$%NU#zN%4$3`Kv*@bd4Qk z`SmUrVDagGgwY{15ypk^xBTbiXiE79uLxcJ?hA4t6F2=V-X%TfsSWx}ZVRyTkh{T! zK<>ilWXE;0MmRCr*bPULEn+)keLh8wlpdVou7=!4OXhnX3OqU;Qh>i>&$` zj7FSK9*0h}9iwCa!mc_Uqo4o9BT-8bG~<^+aJc#f-i9XeQEXLwuhZ_2xa8aJC7t^y zHh4rFfnApY`gVtTD6o@0=^9P_B+e_pU8JTtVrq20L&!1X%3Ap9Lk>sY8!BPD4efCp zK(@?~TPv(oICBb0QT`x^Npo7h#f8-g$`y67Sv_Z(h`vRrh96D;)y`T0jrusLbq%&p z3T<*yJ18r@Atyx*>Nf-K0uJxTMcl^u`vTXoSFz&&r|7>=WXRtx*X0{fEf2CF@CMXl z)@Z9weY~^H-bDS4IXSs+K)GVv>y5n+LV9CITq3KY?yE83BHSEHF9d*ml6E@f<8~B* z*lh~_LqGhxp9{3*Z@g%`9733Rk;WR-N(D1MvU8WC)jLnS463*C>M30@r~_U0qmVK6 z!UuX8th&b!k`AN{sW-#yXg^Q&dY^+6^96_$pRDe% zeWj|8lu>7?Q+~CivgIj_$*->Sn6t;xliPMXQtrZQ3@@j_9|6}#U$}?p!<0qyq{@XA@!7U;usArtX9uI`xx*n zqo_rW2*|ipSS{eBv_DF>T-9*J|0uZ@QD@~BxB#s!I7(})sii5Qs3?%4-Qc!;g$J+B z@g_ z8*pM*c4_Y(#$arXUl;D2wn}Yw?Nvpw_Wuyw{XyqB;_l)B4iYr1L5j@Z=qN?Q7Q~_}y^gIuhU;e;Q@j|Y) z1Vs|e&*Cl4Wnd|0<>wO9sZ%l4&3I!Us6E3~8Wzy^`{=7;YJjq4AFVE?1}d4i=yWkP zyhv+!Ru~Y;V_~<~Y$mn1>Z=^wLL-G89+Lll!m->J<;i?K${!3M!a)X|iP=8lC?4h4L)#^&%o{T~zRXp@3c2oIM zYE|XNF6vTBot^*N#Zchr-K@aDu}jV{k6*bYMC3>te$An;`&WI|-3zPp>Taj6StzjK zb#>isx|lk7sU@pxC;>$s!Jkf$nlpAUM2sB}?xjndsT<}Dav-$bOIy6uP~%KYk9bIN zOPqNUZh`EkiPcp<<=|CXU0p3tmA%!t{G*wh)T>fsDI{DiRJ91=ZFXJ#b|uqhU5(#^ z8lRw-<@VTwZQR9nRUNvGu6tvGo4Q-?t^?PpzmFO^u-xuk75sOBu7Z151vlb9R*jik zL4+Td;EBr4DJu?4)CUu*9bbDN-xD zGnSO(!yV-3ue$rVY(hhRgDj-SrogcaMub9={%aGSmr_S6J(kiLe|5GZey0`zY8z$A z2HFy!rk7j<@ym#WZkm}f7O2lzY7q$i9=M)<3{-pjEP{X}8lMM?fqx+Rmo=0;Lv6~a zSCoPqsZ5YsOS!%wqic{_4R61$r-fzJ2&Maax>{Bp9^$)z+a#y`f^!^A*vhQ$lXh}6 zMhniWg;qCH|8i<*N(pwAEaP*vKG$=pF`qSE_gtEQD1O^Lmj_%0YyE8Q8mrIcSuD_N z+T|3x#ny6PiyQzV7zlr}O_##_uo0Z#lNV^`iA;~aMsg2UYZobUmvsk^?V_6&tf$Vw zu+R-p(O1FhP{nyZ{TZwVg{{K-iFPfopUyn9mfzXHeIhL~_JCIdNU$sUr&SbPULCF^ zr_QL_;>m9m*{?&Cuo*aCk{d$_}gs5dwIs+rl(vm>KML&F``xVqnK4sVHEXpDAXP#!i*E*e~(-mQ)qgYF%k?v%1h;`~3niL8n zji;0C!(pAp(Sv?#=wT>~bi?J86{?O<4q0eOB^c`=cgR)=M%ryP9j^={z4Q>>s;quf zDsI)6Mp{??_uBP?w7QCVOu4a?x`e?i&6AEG9+Z9$tNl(E1=`B>mD=YZ@V9|1(4M0 zKwYbsPNX8$)sn@-xn^tlaZDAu&V9d(YFAgQ8DCt^W2#4zZmRtbu&ExdJWM6Ga5bpf zSj^>it@Tc2o>*)5E(PCLq-{nlk~{a8`AB&W)zxmzr~cvU1Ropyzdh%Ba7hg{G+-Vu z>>fk!uXKIoC%$Ya@E=>37wOczhH9$zVLI1qdUY|^K5se=U0iFo&xg`c^&+;<&A|jK z`sQ?^8fy6p6FH|3wA8+0;`Lygcr%`P`aPzdyd-gPFJF?t;YBhwR7=$7aAiWoOJk~& zGaCj|ZRy&-k<$Q<7%o8ea0-7Lcrt3 zyk3Yogk>7Ug=dRjXxsPGs9I28>l6rBs_*s`hkS1=qRYtZ{bLESguCG!kytX=5nSYti)K=>$wdRl-sV-5fETGkq z(DH*j=|H5Kswft!Q%4V9SG97>CVwvU>VaU@FZ z?WDL`$iE&G{qAgPQ%@aSX~lSMg;eyJqZ}$%b}pD)E3GEZB7B0P?;Q@$rJhCiTo$k4 zGOX?Izw})8jr*+a=Rp{nZ`byYU!e%w@E>$-Z!(-ZM?>5HKnZC3aI>T8F;LWBi7AF$+D2hF@}GD}9PqN9CWu)uftqm&6*Q7OLeA|G}>IhsH8YDp6)IbBoFJb5mID zl0%p`sm!9EgOv?aAtXGH0wZO&+Esef-~?Fh;)@vl^Xd_PxV~bnI{335Hv-MidVGg# zU_G{5?eo3pVFL8H4@y9fpHFnu`eq6hOoY`gjfFfbF&yl4ZQW!_NQ5FMt)iicu-Zii z(=Umz+MDq>zFmD21~E^pzQ3k`@11$Aw%d55+-9q-j;C79V6{sE2QGnbu)gfMW?$3w zW-!~|P0rQGML3hmZpIg8yEI-7YYwv=EGsto!^GO%>Ra1jwx`<7wrwoxPG%)c8K*1Z z?XlFaxmv#T4$k>cv+dBsoMp7DIehJb3s`ROwe6;P??4{H|G#OzIDp)fV4BN)^O53` z)O&v0COZ5n7^Ij(u$HWk?Ch9hXK4>sQvDY2wU2SHOEtaU*C9uziS)4rtn)NZk!tFf zs~f8)Q1_Ow&c{a6)RwT$?UT`#|6!dUO6wfu-;YEqb+U5fTS{vM>pX50$3jZb&#lx6 zC6m!Rd7N(MkSC6hi)ch^INeP~(wo-mV4uMdUmmC1-VoV}R|{!U8#vv+j-rINaJsjQ z%9znsU5j<(NGjhRPWQzT)VsYpDP%%-Zk*KfejOber;Y~i_?SD!(P(^+fSvC7?Wj-( zD0=ct#{VBq_rh+h+`7}f8ALxj-4Q)dgcbd~Zm`R@qe&g0=x0#^iryUafv%=)l4)xP zHMYpm&8#@=Q_s@=9zp+hfKR<4ol13tp7-oVb2_R)m9xj?>iL?k%o6K)jZxsc2dr

k94PGdY!DJ}OHcNNmV&P*$Tvk`ppSH=L7hPT)d>2zlj^CITR`tS zsnIEd3&>|JCyZd-mo9cvYhCxtu{HLxTjTo!f$8J0#$fy+5-^@-*#-l{?qY9((#KiE zwJyxC>HLOV13hUK#>Xs~+h>*|&@t`<9q6pOyN_hjU3k2>fE_m4-3QXc&Z@r>HISUT zs6NWvIpo(xO|SM~9SECW#D)Qjcc~r>XMF5T{WaN_7t>8G?w@d_<0EYQqxk9PoHVat z^jjA-C9HlYhq8C?=n&?NVOe|-&VZP#Bks(1u6TQIdw*KkRV^D7IQ)}zKJY96zSJR{ zQI=zP*6?+?s^m9}9(Gm3iYGE%YxqA+9i9DPC$) z8ylR7v&MbUzUoi=dZ-QCHSELv7Q4oAej1@;43ITiMMwI2=_TSq%t`ES$D7Y1>W+QE zor6E+$P?<09R_|vwIhV@1#;aeUDA-j6qEQ<*E zjP_kFTGSvq*;Dl>p2nHh@US>XdG|r|XHPZWV+5m012nIVqfhn^r1)NHO!ZQ^d9`x$ zx z^rH8@)Y{5~G^*BH-JrDTLw9?_tX1zrS-sT`e(?jOO5sH1WUuu9(kDwl8r4S~64)7o z5Hzrr34Q`0+m`hB(MW2ftJWKEEX~JGfJUc6tj-P zuifX~mi~zm@$hCt2c6#iXn9{X*5gb|ha`V%;gDp3e)P7l8q;xTZr+^SyuE#8{kNqg zV|Q!6c9X5yEnmB0+1@~c{_!9H-vh|p!GhKf*%33XTC?ty-VgKhzf);%Ka~vC`esq+ zHO2m_-{k&kCFNxw`ldgY#UZ`v$No_1j@_k7zl^u0V3YLWLANhd`lVL8JG~hIm3HnT z*~z2QxQz&ve%9HZo>!%_Sfyciaks7af2;KPW>9IFdu=Yw8wiyyfE2q*Z))ZcWEs2C zd{*gS6LZm0a?w8a)Kxl`X;{Nw)pL~pu_uKLf=Y)ms#NLbvOL@D(LKpL2r7Lq(UJEd z!O=;+J-<-t=AFJ!>F7?nN|!_Omnv;S%4e0{+$p2xV70Q7&#exe%!eJuN~0DHW~4=P z(T;SW=|j}=Rd=Iq$C19vxecq0p5ZG*VJGxUMA&DPt6!Y!>X7kph#KMK9n{`IdxE6> znRKD{RBf0VR^mewCf$a2wM^VrIb%)lN)v|hUQ4@-B|viW9^Ll;qtmIaPA4utmrkEt zYkIS@PUl0Lj7B4v&KZR7^|t;eKigaDbe7^VbUQ!$;~o42cGBs@;cc;zY8RzIV`?)B z&bGA?-590rE_S3PG@k>h`k4!DdrMlFtWH!+u~c-l+EZx}n=yK{dc{du-kchaRl6x8 zV(`9@THX65$73wv3D~H}^SB$oJux7W-i}qvcrVm33g^KR~pD(2S`Iq5ZtUZ0|cv_a~#N&v><* zvZfx*9j})48wb?UD>9qOgFm>H)kHob8rjG#xdY7i-}UIn@z}2VvmUvBr6wv~&8gQ{ z>h}fHT0q2jQYf(%g-uZ1m5dhDc!Jt}fGGj#)+9sR)U13M!^W96TV>_MoO5=rG<O!FC7Q~k@A2@ydr5Nk>Hf~fj(UfMf+P6h*%%S>t_4~O6zbnTp!aM39MxIu=nSRa{d!mx&cgm2SuehmNkc&q|jY3pJ^7`j! zJFf#I-5kv+o_U1}2MImbUdLt8oJp#0kz!~Q61`;3Rl<5ZkRu=#057xXz#y zPZYJkD1&yr&|DY}fGtLtL$)0slzS7$Y&(~+&DUpd#`^_n_K!4UD?I9PGCs!5w`$j* z`xDF(w($p0xRYVX+Tmw9y5Nw+dy?EO!5nl9zkTI#``l?CXF9tgUhyUo72+ymGM=YW zi>LJGy1vzU;$xPK^1Y7I2Q={Di)|w4!)a*5U|LRcn6^RBk3s_UIx`iS}LR;kT+C zC~m4+tyFvjuMbXOByI*peWlbQQaj5wHRJF3f13$`7Q>Q66 zYSPYWYAqIXHQ4=OmyVRh+I?RxZ?_F4NTt-W$RtC)fd(nBZoN#C)V}YfBrZ ztMd(wLA+L~+S#zBeil)x8l()bPRCQ#-iA_02uf2MDJQGbkTk3hnpdMoX;>e$X-)s6 zA@uc6H42@fR;c-7Rc7a`{>=q^oeXyrrPjUI?qTf5TRhCC@g)5+ev&@k>@hl>;~~3o zwshVMb*pC?6h<_ZCx#0N4r{inQ5Gf5RLi@68^-*fN&Xh{PR18L&uJ%Hl659R<<@#x zw0EYOV5o~9PP5b|N?27&oCWDjtn#1I$+SynS_`^73(_ecMjvNEI?ljEKjo3mD7$nD zwxEV)b&+8Mh~GD>9Skl}SyXd2q;tIzb)BvDFifhGMW<$~spT5M8;v)=j_c(-EzaqB z-JD-yjK|+Xb4TFDFJ}1L-LZ7(Sv!k{Sk&%CYEI!AaZctB?MG0&Z&9~+Mnpn4t){2= zrVVs{5CLb0B6)ux7PHM3~SO({wb%b3h8A3nJQ~eF^!2Cb+)L^$rl;K4d@4j22u1uh? zbf|8dh%D-uj)>ql0q9bG6h%@*2sqy9q4pNixR(%E3+Z zSvm1N(r$y>JM&SQAu@~pov#Kf=}A;}f!fmWW7RC0umDTI^zpQMfm+>guSORAv_Ng- zwzfK&z(T~EW@ok6kEp^zwTV~$vOFW8v2AwC=bU2KK%L@@4MmY5l)ex{E-{EMEQCg1 z2%?V*QPGiRRBn;F*03Qwi!LofMR8;4`68U4xLbyT7OQOy{%GLj#cFwF(iqyhSgmCE zsajUXy~Qx-%ESKjfz;%bDY&F+OzoK;gWnNRA$5VtQ<75xz~yIgXK%h{qAL@NgpJ1+~e^3BQEQobaFVf4iLh?Kx>bcTG%-81vnn@MHZD#%~$Z zCMSHm#M_DglPt&j14A=7RnMa5OI0tIg_Uv0?Rdp3D!L4tt`8u)Udx~%L&LIY&ob4& z)asH@RK(`rYcIoejgZ>VpmG*HTc);j@}+vqRsYC;b8xxMvWgjH>6z1*5o2m#LEXCj z{2$pERW6)m2{-hm70cB#%4Hwwxk61cEU%kI`&X!K1LyY!`}TVi@?8dKP^d3=m8?Y@ zQ6-BityJro<{_jew-2Ni#p8t?pO7q?wo-j$@IotkuTq;-o9zLWzR(0McMs-s&(Wyb z$A2ix8dmSm;yew?;c|lGN*vZc%6tbjRnVqYULsHEF>$% zQMsK`YcWfw6qARN{Uba+;SOSD?8Khb{mj*xklcpka+RRd`p8jL^J&SIO_Ou8&nr$# zyPslAyMqMgY-t{1t^bQyYausd%;Hd9Vk=P=c40qy$hP~L{5`)Ues9o!N0q|wrTXu9 zT*T7sdF)PD=jrz>V z@B#|uwoYwfSb-nC*Qx%dvAP7f+ib00qGgd$b4t+ib!rpmI1jvg{c49=lAPA#>{v+{ zsv7InW`=`-Su}IK8d}j)R}lMHfh%ZCy{Hd{Tb;Ql;2P>G&ei_1UX3#3;D_G^wPCSn zAi!2R5K0DQ(U=WtRM}-c(WvTwI2sid(TfR5eZ0o!*Ry8o?Pd}`DFT@;# z=yMJ`@sw;0ucbiKtx*{vtng_`$kAH)%84@={x}YvvB3{RLE!on;FNRPDQ^j`a@N6b zC20B}bAg}6Hdfmi03^#Xrii3C{Gp=TRQF<=eK>tTCorw{esBP`sRL8Gpg34(CpE#m zn6neiR>{v}FG-21f{7?ujkpYDjI+#~C7nQV0FZX*3%t@g-XhNV`iq<*dd^7BNps|+ zNa8rvhZc$?&Kks7;P7>6DQ3x-MKXqO3IHL-d?LXjImE!Liv(NPUs9b<72z3b@=FOM z8W|X&1LIr)q_uhh)$hhBmY~Tz<1hQVsNiR0{{#EYZ2PF9p}knyVKq6 za2Q=($$y8MXm}V3e`ANbt8|^h5CX0V`bp98#KAB9=quL~5Ny4jYN+9QNp$~CwUl8L zv~|u-bwcUHLR>7WhV+c2vhde3=b_tiRr7oyD*FxG)V-crWc>y~(;l4o<4!o)#6!nVXs;y z?pk}Ss*P!I7tnp8d~F4eNPFi5YqU#4OD#F<63n6)lH;dmdl+Z_0zCZ6Z=4}NMrA%5 zQx&95cl%|8f2$65QU>*<_50LQvF#AebwWS4d2vo=)gS-zAUCl`>vWr3;c|;iY8^L z%n5|3UVWg%6KV;=Ec8Xc6Ig=3#*aBCRBx|_|KO9TqhXaCSJY3~`mw$8#)ah5C)8wR z{|AaVsrsgbM$2m|`jr-I{ZG?BI2mW^U+NJN!Ke+#&r{`8X?4Be$M7{{>QZUQTuYX= z!*_Jp1}9ABYdYM)N5aVy<08%`Lm*<7B!IBQOo<@w_+lxI%-n=6k^*4T5j-V@v&l_! zg8IZ_0@PoWiTdX~)F|TY=$#nLf8lpdP-B@p1*M?!QHS0+<;%1hu0y#m3|6}c4;HoOV_|e0GvuA?{_&`y4si>%csGz8zfS^Y`Dn8Rh z#WyM{Dwq!xR8$C1G;_45tgI}ltSrsQFic2E@lmOfVp(p26w8Vu2loB0*$2da-T%Fx z`?-8PerMLa*Q}XY^Vl;Y5*j}3MWla5QIZs)8Sa%Kf}P>y{wYPcxXB*&_CNfkFEJ@~ z3gm@fN}XDregG*c*HaB9`6|zW>D6CKJ-Zj%(L6}xQXFf+^DX#_1447pPp_L~#F9mh z>+%PDNRj02IY$dUla>`hj-;9&6eA}EAv@io__`v=)S~_4_;_HJorn7_NEM_v7}745 z01UH`ak^yUO&QA_8Mv{$^e^7!j5OEb1fr)KjBL>taXar$1`#kBVy^{!`7bTtugJRy z==c}^i2~Nzh=9BGkNB+pO#wgttuf%uhg!hyjR8#$`Djtke=3%3ngok*?;o6XAyF(P9)i?G2|{=t&~k6XZ>j{rJ=EufAB8F(%jS&s#%m0 z5r{S_*3q*qa$N7N&4Me{KdgXfRDmzmC0~#0J|CP^fP5E4cP#A!rFBo}Lk<{Mv zgGWzfcoo$2riQyQ)SBT?9(P`H9p8eI>_S5529A|^*wp7W?rr8H$1(g};aaSa=mz3Fn~) zFOwpNxcv?4w%?t%C4s?c7pG~AYpjMk3PNkzRqs%9QI?YDFcr$P^N#)veD)=2aL7j@ zg2E)*vs%sDLS(fZze?8tl3MkgrY#-7CWnwvRKvE;{L&?9ORAZa0NlnDgh#;YVXho2 zYA&7l2f+)g#NvSx1gS=tZ^xm9VI7^H z`-8;VIlTzEQ%3y5L#{|&y00fCZ%{3LejI#{w4iN&CoLw9+y6=V#$wX1O2Z#K?TR$Y zdo_`uhRek0a4O+uEEOoFLM#l+ym;jm$=&yR__E5F*45;+JcfnWCo;A3wzZRXrFS}A zl;j6m*50M8`TotPUX{GM&xR_|n6)d2fwDH0vUU%?t&@eHAMh8iN&~!?qHJ1aU$SOx zos6uV`G2LzeJ7;_PLPoAJW;`hFn5H9(1?!# zPatgbKAae;4F8i4`Cghpx6Rz{$^3X~D&B)H{T?5!cD~Jj{9YRBw!1gt$Z_{YJ4p`3 z&Lgf>L~*lfc>ilssLe8-cujJ5(qR=8;u0|#0@LS5{=zk>x5q!#X6sApA5$ZQX78=M zE+oJsKY;&qO$uu99kN8@xH9tr?|dDr7cCy})z_t<*4+ZA;E=W62#VSHFa7za*Cn5b zU5>PUmf+LaL#M)y9(pa{3rxY`hOhdS0}qLrt|xDyqs|Hb>;_UNo_(bxR&mc8_#kGW z4KU>+}j;OR<+tcDfY3c7tXEb@7<7mCohCsrMMt3C#?G=h}RTR2Zoy@ zU6e(dTT~tstvvXEmX@-+it5SmY(KHvC%oYa7`5^xcvH~z_xeFvF|z0;>008M^@&3Hpf-$wC}HZgReZ-Ej&C98g~Nwhs}#>egdISgn6j4BOA#-3=M_Il6Fkr3aw%NZ zOgs>CsL!zYGB#^I=D1m|JAC-~a>>=RhBO8er`e)cysxm|gg8+fwN&ygxtSdpcT!BvVtFx+C<|k-8QJu#fd01?(A9jqtrFJ zu)L{wKVsa{7SzUodALJI6Cx*Hn#|gDLtveA3v0W}R1wwHdxC$-uKf0oQkQ9izo9Bb z$D#E39S+omQ1inYV-I8iE7;pcAZw7lgFnI}Hfs@wn7p1VMPzj?!SwBSp~Hw-6Ll&= z_PbW|88^{#Y^(W(o0z`etl|f6N~848Rq?8uQa8^8QHk_UF0Fsii*RV6BSp#mJPoWioKd*^lNKNuk;%SbKXW_K`iVL!uwl2{RK7GEi zfa59A#|2EJh%$?lPoZ#Ueh`KGz1~{5d*@I%FGm#aogu&cTSJSO+$b8HbHgkO+;z|5K1hC5;8S zuRKu@7mCPQBlE9|g5=a$3$hb|lrQX2kkK|j^You2KhIJKhR{0D0Tn3?wIa)Jff-o0 z-tWaP{3K0xeF;@Tmk1Tn3>ZgCpy8bK;-NoFo_+RwhgIpUZmVe^z)=G_4WwK^$uMS+ zP=18i#c7aRw8OBiif8^TjY*CF8AbojDvSs)jqJx7?YN5v_R1bwW2R9hgzPp=je9y( zHdrNwOsaDkUn3B!w33S#Nt@UCBcc3I>%0%)F=h>EYMw3>QzNf%O$I7G$K1#(gi^l1 z@nU84ZL_LOK_1XN`OcrDE}o^LgizHqreT{0_52nZ6EV$$U${d|L&g1@X&!=U?e<*N zn1($)VwxA?QBM8B6MvEBr^X|(%8`%DK8@_1t!2kRY=ph>Y%DQ5gzUQ-d3S5_Kj@5ej(9=~;dIEd=+)@3))j~hs;4rliKm@OHNwLHsWc*Ek=okXXx0o|l5WQFaZHj(AOwiCbiE541bxFs5pzT_5Pb61M)_yNgYR`3fn#3Sbm zlsF76$oT;;{_S1Kt9|_Crhb0gRpd(?`TO%1-a^6m?+#EFwf;c;>51Za3yDV0y$U=+ zkrJ+^dm1@bgjZE%znCvbD7n{LKkL$d+S{gX&9!d_~>>Uz8 zTp;`h9XC67&8$YAjSBJx!}^OE0=4?R$O~LiL?x55l{48O6kW^%op-$b6Ce4zOV>uY}1+q?7q?$+xj%KBaIKO4^D;==WXzDLWTG){Wnz1fM1DBC#SF8 z!HLmlOr za{k+WsbAakBoA3AA9XK9R3NACd0>qc?o|CXNi?1dfjaigExxG+*RE7w=aCO^ZlJQ< z%sa(NLHyhUshxeO4K--P?@qk(fn;jOkt@2CI47(^G*()<`uQ>+^M};U))4_$X0tXn z65sI$?jA_{f#3W?8sYCIq~lw|FtHgD(jL*nx(*UxE{C-VZyD!u)we4fcC{3*5T zxD9JC&gmzirK5Qs#)huuNy*9NoBx!&+L+*;v>qJaD%^^dBRBX*e@ap9zJuw7cE1j?KmJhL9aN!0Ie<+1HIij~fw;>XIy^Lo)lzKUQPaCvZ!Ep^X{ELUug!T!j zTzo-G8N=%?#;l`aA8aA-@t5S|_TUmp6ZHPdk>c!V8q(7#KU~6vV$u+|Pw3*7oUlcO zl)A5?eh1G({6o(0PyUi-Oz(}bm3yI#Si7068{)8kxm9Qq$(u^G!w$o`cFh)pH zI0@Mh!vVzaoIaE+S;3_uM6vSld%omvsf%0Lmm+cdTQn2$Razl&JajO+h#&e}8m}K! z#{c?TGV0ZfeAqu&_){(-Ggpzerl=n{jnyH<3;oKb9zs)Gi5)$-rGbPi;mGqC=z~w> zybWnaS%v^)O5;1R70h?lw0I>Mp+phT7BXln02SJk?*B$H?HjATFE9TG9a5l`j*)aG zcd3;+ci2G8+gjV;yp`@X6vvRi?EANJ<~u&RR`T+_a={vTWu=y{bjm6C680(Wm|>s( zLu9<=6~4Px>KL=~5q2M@Bfr!$i>`&HZW}}#RGFw593@6OiwCK4kMM}N4C@L7PltR? zJoQ#iULl@#`?HYO)k-tQ{)*4&(O1QZuWlQ6S}q|eB)<)p$0^+|!voGjQfF`wxoiG> zWG3x5jX>ThOUjGi@Yl_lTdetpmzbqqsY|{P2@fw230GEw1+;}ux$c8hg#-eLsCdFq zxdqjQTNzg&{|Jh-jWCVMyjZzP$d{pm7GXCLp|A2Za)$f6;^<`z>^kC8v&NS((%>

;q&->J4v0)`osK~I+jKA^j$ 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 QZdYbCOSK+;+fg>=pF!?U&Hw-a diff --git a/core/cache_config.py b/core/cache_config.py index 53e254b6..ba76e512 100644 --- a/core/cache_config.py +++ b/core/cache_config.py @@ -29,6 +29,8 @@ key_email │ 45 │ email по client_id payment_pending │ 3600 │ Ожидающий платёж (1 ч) audit_history │ 300 │ История действий клиента (админка) audit:flush │ — │ Буфер аудита (список для выгрузки в БД в 00:00) +audit:flush:processing │ — │ Батч аудита, перенесённый в processing до commit в БД +audit:flush:drain_lock │ 900 │ Лок nightly/manual drain аудита audit:user:tg:* │ 25 ч │ События по tg_id для чтения до выгрузки audit:user:identity:* │ 25 ч │ События по identity для чтения до выгрузки webhook_abuse_fail │ 60 │ Счётчик неудачных вебхуков по IP diff --git a/core/redis_cache.py b/core/redis_cache.py index 7401a8f6..a53bcae6 100644 --- a/core/redis_cache.py +++ b/core/redis_cache.py @@ -216,3 +216,42 @@ async def cache_lpop_batch(key: str, count: int) -> list[Any]: return out except Exception: return out + + +async def cache_lmove_batch(source: str, destination: str, count: int) -> list[Any]: + """Атомарно переносит до count элементов из головы source в хвост destination.""" + if count <= 0: + return [] + client = await _get_redis() + if client is None: + return [] + try: + raw_list = await client.eval( + """ + local moved = {} + local count = tonumber(ARGV[1]) + for i = 1, count do + local item = redis.call('LPOP', KEYS[1]) + if not item then + break + end + redis.call('RPUSH', KEYS[2], item) + table.insert(moved, item) + end + return moved + """, + 2, + source, + destination, + int(count), + ) + out = [] + for raw in raw_list or []: + try: + out.append(json.loads(raw)) + except Exception: + pass + return out + except Exception as exc: + logger.warning(f"[Redis] lmove_batch({source}->{destination}) не удался: {exc}") + return [] diff --git a/database/__init__.py b/database/__init__.py index 0ee6db64..664ca325 100644 --- a/database/__init__.py +++ b/database/__init__.py @@ -1,3 +1,4 @@ +from .audit import * from .bans import * from .coupons import * from .db import async_session_maker diff --git a/database/audit.py b/database/audit.py new file mode 100644 index 00000000..ef30be54 --- /dev/null +++ b/database/audit.py @@ -0,0 +1,200 @@ +from __future__ import annotations + +from datetime import datetime, timedelta, timezone +from typing import Iterable + +from sqlalchemy import DateTime as SQLADateTime, and_, cast, delete, desc, func, or_, select +from sqlalchemy.ext.asyncio import AsyncSession + +from database.models import AuditEvent, Payment + +try: + from core.constants import PAYMENT_SYSTEMS_EXCLUDED +except ImportError: + PAYMENT_SYSTEMS_EXCLUDED = ("referral", "coupon", "cashback", "admin") + + +_AUDIT_TABLE_READY = False + + +async def ensure_audit_table(session: AsyncSession) -> None: + global _AUDIT_TABLE_READY + if _AUDIT_TABLE_READY: + return + connection = await session.connection() + await connection.run_sync(AuditEvent.__table__.create, checkfirst=True) + _AUDIT_TABLE_READY = True + + +async def delete_old_audit_events_db( + session: AsyncSession, + *, + older_than_days: int = 90, +) -> int: + await ensure_audit_table(session) + threshold = datetime.now(timezone.utc) - timedelta(days=older_than_days) + stmt = delete(AuditEvent).where(AuditEvent.created_at < threshold) + result = await session.execute(stmt) + return result.rowcount or 0 + + +async def fetch_audit_rows_db( + session: AsyncSession, + *, + date_from: datetime, + date_to: datetime, + limit: int, +) -> list[tuple[str, str, int | None, str | None]]: + await ensure_audit_table(session) + stmt = ( + select( + AuditEvent.path_or_handler, + AuditEvent.result, + AuditEvent.actor_tg_id, + AuditEvent.actor_identity_id, + ) + .where( + AuditEvent.event_type != "audit_reset", + AuditEvent.created_at >= date_from, + AuditEvent.created_at < date_to, + ) + .order_by(AuditEvent.created_at.desc()) + .limit(limit) + ) + result = await session.execute(stmt) + return list(result.all()) + + +async def fetch_successful_payment_rows_db( + session: AsyncSession, + *, + date_from: datetime, + date_to: datetime, + limit: int, +) -> list[tuple[str, str, int | None, None]]: + success_at_expr = func.coalesce( + cast(Payment.metadata_["status_changed_at"].astext, SQLADateTime), + Payment.created_at, + ) + stmt = ( + select(Payment.payment_system, Payment.payment_id, Payment.tg_id) + .where( + Payment.status == "success", + Payment.payment_system.notin_(PAYMENT_SYSTEMS_EXCLUDED), + success_at_expr >= date_from, + success_at_expr < date_to, + ) + .order_by(desc(success_at_expr)) + .limit(limit) + ) + result = await session.execute(stmt) + return [ + (f"payment_success:{payment_system or '-'}:{payment_id or '-'}", "success", tg_id, None) + for payment_system, payment_id, tg_id in result.all() + ] + + +async def fetch_latest_audit_reset_db( + session: AsyncSession, + *, + source: str = "db", +) -> datetime | None: + await ensure_audit_table(session) + stmt = select(func.max(AuditEvent.created_at)).where( + AuditEvent.event_type == "audit_reset", + AuditEvent.channel == "system", + AuditEvent.path_or_handler == f"audit_reset:{source}", + ) + result = await session.execute(stmt) + return result.scalar_one_or_none() + + +async def create_audit_reset_marker_db( + session: AsyncSession, + *, + source: str = "db", + created_at: datetime | None = None, +) -> datetime: + await ensure_audit_table(session) + created = created_at or datetime.utcnow() + event = AuditEvent( + event_type="audit_reset", + channel="system", + path_or_handler=f"audit_reset:{source}", + result="success", + created_at=created, + ) + session.add(event) + await session.flush() + return created + + +async def fetch_existing_audit_request_ids_db( + session: AsyncSession, + request_ids: Iterable[str], +) -> set[str]: + await ensure_audit_table(session) + request_ids_list = sorted({rid for rid in request_ids if rid}) + if not request_ids_list: + return set() + stmt = select(AuditEvent.request_id).where(AuditEvent.request_id.in_(request_ids_list)) + result = await session.execute(stmt) + return {rid for rid in result.scalars().all() if rid} + + +async def fetch_audit_events_db( + session: AsyncSession, + *, + identity_id: str | None = None, + tg_id: int | None = None, + channel: str | None = None, + event_type: str | None = None, + event_types: Iterable[str] | None = None, + limit: int = 100, + offset: int = 0, +) -> list[AuditEvent]: + await ensure_audit_table(session) + stmt = select(AuditEvent) + actor_filters = [] + if identity_id: + actor_filters.append(AuditEvent.actor_identity_id == identity_id) + actor_filters.append(and_(AuditEvent.entity_type == "identity", AuditEvent.entity_id == identity_id)) + if tg_id is not None: + tg_id_str = str(tg_id) + actor_filters.append(AuditEvent.actor_tg_id == tg_id) + actor_filters.append(and_(AuditEvent.entity_type == "user", AuditEvent.entity_id == tg_id_str)) + actor_filters.append(and_(AuditEvent.entity_type == "telegram_user", AuditEvent.entity_id == tg_id_str)) + if actor_filters: + stmt = stmt.where(or_(*actor_filters)) + if channel: + stmt = stmt.where(AuditEvent.channel == channel) + if event_type: + stmt = stmt.where(AuditEvent.event_type == event_type) + event_types_list = sorted(event_types) if event_types else None + if event_types_list: + stmt = stmt.where(AuditEvent.event_type.in_(event_types_list)) + stmt = stmt.order_by(desc(AuditEvent.created_at), desc(AuditEvent.id)).limit(limit).offset(offset) + result = await session.execute(stmt) + return list(result.scalars().all()) + + +async def fetch_audit_events_db_window( + session: AsyncSession, + *, + identity_id: str | None = None, + tg_id: int | None = None, + channel: str | None = None, + event_type: str | None = None, + event_types: Iterable[str] | None = None, + limit: int = 5000, +) -> list[AuditEvent]: + return await fetch_audit_events_db( + session, + identity_id=identity_id, + tg_id=tg_id, + channel=channel, + event_type=event_type, + event_types=event_types, + limit=limit, + offset=0, + ) diff --git a/database/payments.py b/database/payments.py index 19dbdbb6..8590039f 100644 --- a/database/payments.py +++ b/database/payments.py @@ -165,9 +165,12 @@ async def update_payment_status( payment.status = new_status if payment_id is not None: payment.payment_id = payment_id + base = payment.metadata_ or {} + if new_status == "success" and "status_changed_at" not in base: + base["status_changed_at"] = datetime.utcnow().replace(tzinfo=None).isoformat() if metadata_patch: - base = payment.metadata_ or {} base.update(metadata_patch) + if base: payment.metadata_ = base await session.commit() diff --git a/handlers/admin/stats/keyboard.py b/handlers/admin/stats/keyboard.py index 03e550ea..90e402fb 100644 --- a/handlers/admin/stats/keyboard.py +++ b/handlers/admin/stats/keyboard.py @@ -4,10 +4,33 @@ from aiogram.utils.keyboard import InlineKeyboardBuilder from ..panel.keyboard import AdminPanelCallback, build_admin_back_btn -def build_audit_refresh_kb() -> InlineKeyboardMarkup: - """Клавиатура под сообщением аудита: кнопка «Обновить».""" +def build_audit_refresh_kb(source: str = "db") -> InlineKeyboardMarkup: + """Клавиатура под сообщением аудита: выбор источника данных.""" builder = InlineKeyboardBuilder() - builder.button(text="🔄 Обновить", callback_data=AdminPanelCallback(action="audit_refresh").pack()) + redis_text = "• Redis raw" if source == "redis" else "Redis raw" + db_text = "• БД вчера" if source == "db" else "БД вчера" + reset_text = "Сбросить Redis" if source == "redis" else "Сбросить БД" + builder.button(text=redis_text, callback_data=AdminPanelCallback(action="audit_refresh_redis").pack()) + builder.button(text=db_text, callback_data=AdminPanelCallback(action="audit_refresh_db").pack()) + builder.button(text=reset_text, callback_data=AdminPanelCallback(action=f"audit_reset_ask_{source}").pack()) + builder.adjust(2, 1) + return builder.as_markup() + + +def build_audit_source_kb() -> InlineKeyboardMarkup: + """Клавиатура выбора источника аудита при первом открытии.""" + builder = InlineKeyboardBuilder() + builder.button(text="Redis raw", callback_data=AdminPanelCallback(action="audit_refresh_redis").pack()) + builder.button(text="БД вчера", callback_data=AdminPanelCallback(action="audit_refresh_db").pack()) + builder.adjust(2) + return builder.as_markup() + + +def build_audit_reset_confirm_kb(source: str) -> InlineKeyboardMarkup: + builder = InlineKeyboardBuilder() + builder.button(text="Да, сбросить", callback_data=AdminPanelCallback(action=f"audit_reset_do_{source}").pack()) + builder.button(text="Отмена", callback_data=AdminPanelCallback(action=f"audit_refresh_{source}").pack()) + builder.adjust(1) return builder.as_markup() diff --git a/handlers/admin/stats/stats_handler.py b/handlers/admin/stats/stats_handler.py index 88a2dfdc..1695a5e7 100644 --- a/handlers/admin/stats/stats_handler.py +++ b/handlers/admin/stats/stats_handler.py @@ -1,5 +1,5 @@ from collections import Counter -from datetime import datetime, timedelta +from datetime import date, datetime, timedelta from html import escape import pytz @@ -9,7 +9,16 @@ from aiogram.exceptions import TelegramBadRequest from aiogram.types import CallbackQuery, Message from sqlalchemy.ext.asyncio import AsyncSession -from audit import get_audit_funnel, get_audit_funnel_from_redis, get_audit_stats, get_audit_stats_from_redis +from audit import ( + AUDIT_STEP_LABELS, + clear_audit_redis_buffers, + get_audit_funnel, + get_audit_funnel_from_redis, + get_audit_db_reset_at, + get_audit_stats, + get_audit_stats_from_redis, + set_audit_db_reset_at, +) from bot import bot from config import ADMIN_ID from database import ( @@ -40,11 +49,63 @@ from utils.csv_export import ( ) from ..panel.keyboard import AdminPanelCallback, build_admin_back_kb -from .keyboard import build_audit_refresh_kb, build_stats_kb +from .keyboard import build_audit_refresh_kb, build_audit_reset_confirm_kb, build_audit_source_kb, build_stats_kb router = Router() +KEY_AUDIT_STEPS_ORDER = ( + "start", + "start_coupon", + "start_gift", + "start_referral", + "start_utm", + "profile", + "about", + "instructions", + "balance", + "view_keys", + "buy_entry", + "tariff_config", + "key_create", + "pay_start", + "pay", + "key_view", + "connect", + "key_manage", + "renew", + "addons", + "referral", + "coupons", +) + + +def _previous_moscow_day_window(now: datetime | None = None) -> tuple[datetime, datetime, date]: + moscow_tz = pytz.timezone("Europe/Moscow") + current = now or datetime.now(moscow_tz) + yesterday_date = current.date() - timedelta(days=1) + start = moscow_tz.localize(datetime.combine(yesterday_date, datetime.min.time())) + end = start + timedelta(days=1) + return start.astimezone(pytz.UTC), end.astimezone(pytz.UTC), yesterday_date + + +def _audit_success_event_counts(by_path: list[dict]) -> dict[str, int]: + """Успешные события по шагам для бизнес-метрик в отчёте.""" + return {row["step"]: int(row.get("success", 0) or 0) for row in by_path} + + +def _append_key_audit_steps(lines: list[str], by_path: list[dict]) -> None: + """Добавляет фиксированный список ключевых шагов клиента, включая нулевые значения.""" + totals_by_step = {row["step"]: row for row in by_path} + lines.append("Ключевые шаги клиента:") + for step in KEY_AUDIT_STEPS_ORDER: + row = totals_by_step.get(step) + total = row["total"] if row else 0 + success = row["success"] if row else 0 + fail = row["fail"] if row else 0 + label = AUDIT_STEP_LABELS.get(step, step) + lines.append(f" • {label}: {total} (ок: {success}, ошибок: {fail})") + @router.callback_query(AdminPanelCallback.filter(F.action == "stats"), IsAdminFilter()) async def handle_stats(callback_query: CallbackQuery, session: AsyncSession): @@ -277,7 +338,11 @@ async def handle_stats_audit(callback_query: CallbackQuery, session: AsyncSessio lines = [ f"📊 Аудит за {yesterday_date.strftime('%d.%m.%Y')} (МСК)", "", - f"📎 Событий: {summary['total_events']} │ Уникальных пользователей: {summary['unique_users']}", + ( + f"📎 Сырых событий: {summary.get('raw_total_events', summary['total_events'])} │ " + f"Аналитических шагов: {summary.get('analytics_total_events', summary['total_events'])} │ " + f"Уникальных пользователей: {summary['unique_users']}" + ), "", "По шагам (топ по объёму):", ] @@ -287,18 +352,19 @@ async def handle_stats_audit(callback_query: CallbackQuery, session: AsyncSessio f"{fail_mark} {row['label']}: {row['total']} (ок: {row['success']}, ошибок: {row['fail']}, {row['fail_rate_pct']}% ошибок)" ) lines.append("") - by_step_totals = {row["step"]: row["total"] for row in by_path} - funnel_counts = {s["step"]: s["count"] for s in funnel} - pay_start = by_step_totals.get("pay_start", 0) - pay_ok = max(by_step_totals.get("pay", 0), funnel_counts.get("pay", 0)) - key_created = by_step_totals.get("key_create", 0) - connect_ok = max(by_step_totals.get("connect", 0), funnel_counts.get("connect", 0)) - pct_pay = round(100.0 * pay_ok / pay_start, 1) if pay_start else 0 - pct_connect = round(100.0 * connect_ok / key_created, 1) if key_created else 0 - lines.append("Оплата: начало {0}, успешная {1}, % успешных от созданных: {2}%".format(pay_start, pay_ok, pct_pay)) - lines.append("Подписка: оформлена {0}, подключена {1}, % успешных подключений: {2}%".format(key_created, connect_ok, pct_connect)) + _append_key_audit_steps(lines, by_path) lines.append("") - lines.append("Воронка (уник. пользователей по шагам):") + success_by_step = _audit_success_event_counts(by_path) + pay_start = success_by_step.get("pay_start", 0) + pay_ok = success_by_step.get("pay", 0) + key_created = success_by_step.get("key_create", 0) + connect_opened = success_by_step.get("connect", 0) + pct_pay = round(100.0 * pay_ok / pay_start, 1) if pay_start else 0 + pct_connect = round(100.0 * connect_opened / key_created, 1) if key_created else 0 + lines.append("Оплата: начало {0}, успешная {1}, % успешных от созданных: {2}%".format(pay_start, pay_ok, pct_pay)) + lines.append("Подписка: оформлена {0}, открыто подключение {1}, % от оформленных: {2}%".format(key_created, connect_opened, pct_connect)) + lines.append("") + lines.append("Воронка (уник. пользователей по точным шагам):") for step in funnel: conv = f" → {step['conversion_from_prev_pct']}%" if step["conversion_from_prev_pct"] is not None else "" lines.append(f" • {step['label']}: {step['count']} польз.{conv}") @@ -318,52 +384,70 @@ async def handle_stats_audit(callback_query: CallbackQuery, session: AsyncSessio ) -async def _build_audit_report(session: AsyncSession) -> tuple[str | None, str | None]: - """Собирает текст отчёта аудита. Возвращает (text, error): при успехе error=None; при отключённом Redis text=None, error=None.""" +async def _build_audit_report(session: AsyncSession, source: str = "db") -> tuple[str | None, str | None]: + """Собирает текст отчёта аудита из выбранного источника.""" try: - stats = await get_audit_stats_from_redis(max_events=5000) - funnel = await get_audit_funnel_from_redis(max_events=5000) - if stats is None or funnel is None: - return (None, None) - summary = stats["summary"] - by_path = stats["by_path"] - if summary["total_events"] == 0: - moscow_tz = pytz.timezone("Europe/Moscow") - now = datetime.now(moscow_tz) - end_utc = now.astimezone(pytz.UTC) - start_utc = end_utc - timedelta(hours=24) - stats = await get_audit_stats(session, date_from=start_utc, date_to=end_utc) - funnel = await get_audit_funnel(session, date_from=start_utc, date_to=end_utc) + moscow_tz = pytz.timezone("Europe/Moscow") + now = datetime.now(moscow_tz) + reset_note = "" + if source == "redis": + stats = await get_audit_stats_from_redis(max_events=5000) + funnel = await get_audit_funnel_from_redis(max_events=5000) + if stats is None or funnel is None: + return (None, "Буфер Redis для аудита выключен.") summary = stats["summary"] by_path = stats["by_path"] - header = "📊 Аудит из БД (буфер Redis пуст; последние 24 ч)" + header = "📊 Аудит (Redis raw, без добора из БД)" else: - header = "📊 Аудит из Redis (буфер, последние события)" + start_utc, end_utc, report_date = _previous_moscow_day_window(now) + reset_at = await get_audit_db_reset_at(session) + effective_start_utc = start_utc + if reset_at is not None: + effective_start_utc = max(start_utc, reset_at.astimezone(pytz.UTC)) + funnel = await get_audit_funnel(session, date_from=effective_start_utc, date_to=end_utc) + stats = await get_audit_stats(session, date_from=effective_start_utc, date_to=end_utc) + if effective_start_utc != start_utc: + reset_note = ( + "🧹 Сброс БД: " + f"{reset_at.astimezone(moscow_tz).strftime('%d.%m.%Y %H:%M')}" + ) + summary = stats["summary"] + by_path = stats["by_path"] + header = f"📊 Аудит (БД за {report_date.strftime('%d.%m.%Y')} МСК)" lines = [ header, "", - f"📎 Событий: {summary['total_events']} │ Уникальных пользователей: {summary['unique_users']}", + ( + f"📎 Сырых событий: {summary.get('raw_total_events', summary['total_events'])} │ " + f"Аналитических шагов: {summary.get('analytics_total_events', summary['total_events'])} │ " + f"Уникальных пользователей: {summary['unique_users']}" + ), "", - "По шагам (топ по объёму):", ] + if reset_note: + lines.extend([reset_note, ""]) + lines.extend([ + "По шагам (топ по объёму):", + ]) for row in by_path[:8]: fail_mark = "⚠️" if row["fail_rate_pct"] > 10 else "✅" lines.append( f"{fail_mark} {row['label']}: {row['total']} (ок: {row['success']}, ошибок: {row['fail']}, {row['fail_rate_pct']}% ошибок)" ) lines.append("") - by_step_totals = {row["step"]: row["total"] for row in by_path} - funnel_counts = {s["step"]: s["count"] for s in funnel} - pay_start = by_step_totals.get("pay_start", 0) - pay_ok = max(by_step_totals.get("pay", 0), funnel_counts.get("pay", 0)) - key_created = by_step_totals.get("key_create", 0) - connect_ok = max(by_step_totals.get("connect", 0), funnel_counts.get("connect", 0)) - pct_pay = round(100.0 * pay_ok / pay_start, 1) if pay_start else 0 - pct_connect = round(100.0 * connect_ok / key_created, 1) if key_created else 0 - lines.append("Оплата: начало {0}, успешная {1}, % успешных от созданных: {2}%".format(pay_start, pay_ok, pct_pay)) - lines.append("Подписка: оформлена {0}, подключена {1}, % успешных подключений: {2}%".format(key_created, connect_ok, pct_connect)) + _append_key_audit_steps(lines, by_path) lines.append("") - lines.append("Воронка (уник. пользователей по шагам):") + success_by_step = _audit_success_event_counts(by_path) + pay_start = success_by_step.get("pay_start", 0) + pay_ok = success_by_step.get("pay", 0) + key_created = success_by_step.get("key_create", 0) + connect_opened = success_by_step.get("connect", 0) + pct_pay = round(100.0 * pay_ok / pay_start, 1) if pay_start else 0 + pct_connect = round(100.0 * connect_opened / key_created, 1) if key_created else 0 + lines.append("Оплата: начало {0}, успешная {1}, % успешных от созданных: {2}%".format(pay_start, pay_ok, pct_pay)) + lines.append("Подписка: оформлена {0}, открыто подключение {1}, % от оформленных: {2}%".format(key_created, connect_opened, pct_connect)) + lines.append("") + lines.append("Воронка (уник. пользователей по точным шагам):") for step in funnel: conv = f" → {step['conversion_from_prev_pct']}%" if step["conversion_from_prev_pct"] is not None else "" lines.append(f" • {step['label']}: {step['count']} польз.{conv}") @@ -375,40 +459,104 @@ async def _build_audit_report(session: AsyncSession) -> tuple[str | None, str | @router.message(F.text.in_(["Аудит", "аудит"]), IsAdminFilter()) async def handle_audit_command(message: Message, session: AsyncSession): - """По команде «Аудит» — отправить статистику аудита из буфера Redis; при пустом буфере — из БД за 24 ч.""" - text, err = await _build_audit_report(session) - if err: - await message.answer(f"❗ Ошибка: {escape(err)}") - return - if text is None: - await message.answer( - "📊 Буфер аудита в Redis выключен (AUDIT_REDIS_BUFFER_ENABLED=False). " - "Используйте кнопку «Аудит (воронки)» в Статистике для отчёта из БД.", - ) - return - await message.answer(text, reply_markup=build_audit_refresh_kb()) + """По команде «Аудит» — предложить выбрать источник данных для отчёта.""" + help_text = ( + "📊 Аудит\n\n" + "Выберите источник данных:\n" + "• Redis raw — сырые последние события из буфера Redis, без добора успешных оплат из БД.\n" + "• БД вчера — агрегированный отчёт из базы за прошлые сутки: с 00:00 до 00:00 по Москве.\n\n" + "Сброс Redis очищает кэш аудита. Сброс БД применяется отдельно только при явном выборе в режиме БД." + ) + await message.answer(help_text, reply_markup=build_audit_source_kb()) @router.callback_query(AdminPanelCallback.filter(F.action == "audit_refresh"), IsAdminFilter()) async def handle_audit_refresh(callback_query: CallbackQuery, session: AsyncSession): - """Обновить отчёт аудита по нажатию кнопки «Обновить» под сообщением.""" + """Совместимость со старыми сообщениями аудита: открыть DB-отчёт за прошлые сутки.""" await callback_query.answer() - text, err = await _build_audit_report(session) + source = "db" + text, err = await _build_audit_report(session, source=source) if err: await callback_query.message.edit_text(f"❗ Ошибка: {escape(err)}") return - if text is None: - await callback_query.message.edit_text( - "📊 Буфер аудита в Redis выключен (AUDIT_REDIS_BUFFER_ENABLED=False). " - "Используйте кнопку «Аудит (воронки)» в Статистике для отчёта из БД.", - ) - return try: - await callback_query.message.edit_text(text, reply_markup=build_audit_refresh_kb()) + await callback_query.message.edit_text(text, reply_markup=build_audit_refresh_kb(source)) except TelegramBadRequest: pass +@router.callback_query(AdminPanelCallback.filter(F.action == "audit_refresh_redis"), IsAdminFilter()) +async def handle_audit_refresh_redis(callback_query: CallbackQuery, session: AsyncSession): + """Показать сырые данные аудита из Redis.""" + await callback_query.answer() + source = "redis" + text, err = await _build_audit_report(session, source=source) + if err: + await callback_query.message.edit_text(f"❗ Ошибка: {escape(err)}", reply_markup=build_audit_refresh_kb(source)) + return + try: + await callback_query.message.edit_text(text, reply_markup=build_audit_refresh_kb(source)) + except TelegramBadRequest: + pass + + +@router.callback_query(AdminPanelCallback.filter(F.action == "audit_refresh_db"), IsAdminFilter()) +async def handle_audit_refresh_db(callback_query: CallbackQuery, session: AsyncSession): + """Показать аудит из БД за прошлые московские сутки.""" + await callback_query.answer() + source = "db" + text, err = await _build_audit_report(session, source=source) + if err: + await callback_query.message.edit_text(f"❗ Ошибка: {escape(err)}", reply_markup=build_audit_refresh_kb(source)) + return + try: + await callback_query.message.edit_text(text, reply_markup=build_audit_refresh_kb(source)) + except TelegramBadRequest: + pass + + +@router.callback_query(AdminPanelCallback.filter(F.action.in_(["audit_reset_ask_redis", "audit_reset_ask_db"])), IsAdminFilter()) +async def handle_audit_reset_ask(callback_query: CallbackQuery): + await callback_query.answer() + source = "redis" if callback_query.data and "redis" in callback_query.data else "db" + source_label = "Redis raw" if source == "redis" else "БД вчера" + text = ( + f"🧹 Сброс аудита\n\n" + f"Источник: {source_label}\n" + "Подтвердите действие." + ) + if source == "redis": + text += "\n\nБудет очищен только Redis-буфер отчёта аудита. История по пользователям останется." + else: + text += "\n\nВ БД будет записан отдельный сброс, который применится к DB-отчёту." + try: + await callback_query.message.edit_text(text, reply_markup=build_audit_reset_confirm_kb(source)) + except TelegramBadRequest: + pass + + +@router.callback_query(AdminPanelCallback.filter(F.action.in_(["audit_reset_do_redis", "audit_reset_do_db"])), IsAdminFilter()) +async def handle_audit_reset_do(callback_query: CallbackQuery, session: AsyncSession): + source = "redis" if callback_query.data and "redis" in callback_query.data else "db" + try: + if source == "redis": + await clear_audit_redis_buffers() + else: + await set_audit_db_reset_at(session) + await callback_query.answer("Аудит сброшен") + text, err = await _build_audit_report(session, source=source) + if err: + await callback_query.message.edit_text(f"❗ Ошибка: {escape(err)}", reply_markup=build_audit_refresh_kb(source)) + return + try: + await callback_query.message.edit_text(text, reply_markup=build_audit_refresh_kb(source)) + except TelegramBadRequest: + pass + except Exception as e: + logger.exception("Ошибка при сбросе аудита (%s): %s", source, e) + await callback_query.answer("Не удалось сбросить аудит", show_alert=True) + + @router.callback_query(AdminPanelCallback.filter(F.action == "stats_export_users_csv"), IsAdminFilter()) async def handle_export_users_csv(callback_query: CallbackQuery, session: AsyncSession): kb = build_admin_back_kb("stats")