From cdb5f47c65af79bc35bb293778eae29e6fe1bc18 Mon Sep 17 00:00:00 2001 From: MSuMshk <2039814060@qq.com> Date: Mon, 9 Mar 2026 10:14:31 +0800 Subject: [PATCH] feat: add c-end prototype and reorganize tenant admin prototype --- Cend-MiniProgram-Prototype/GEMINI.MD | 294 ++++ Cend-MiniProgram-Prototype/README.md | 61 + Cend-MiniProgram-Prototype/README.patch | 19 + .../docs/01-文档导航与实施顺序.md | 99 ++ .../docs/02-信息架构与路由.md | 86 + .../docs/03-全局业务规则.md | 164 ++ .../docs/04-核心用户流程.md | 113 ++ .../docs/05-页面清单总表.md | 72 + .../docs/06-通用组件清单.md | 69 + .../docs/07-页面规格/01-Tab-首页.md | 101 ++ .../docs/07-页面规格/02-Tab-点餐页.md | 94 + .../docs/07-页面规格/03-Tab-订单页.md | 64 + .../docs/07-页面规格/04-Tab-我的页.md | 78 + .../docs/07-页面规格/05-门店选择页.md | 52 + .../docs/07-页面规格/06-地址管理页.md | 47 + .../docs/07-页面规格/07-商品详情抽屉.md | 58 + .../docs/07-页面规格/08-购物车抽屉.md | 51 + .../docs/07-页面规格/09-结算确认页.md | 72 + .../docs/07-页面规格/10-支付成功页.md | 42 + .../docs/07-页面规格/11-订单详情页.md | 71 + .../docs/07-页面规格/12-退款申请页.md | 46 + .../docs/07-页面规格/13-退款详情页.md | 47 + .../docs/07-页面规格/14-评价页.md | 56 + .../docs/07-页面规格/15-领券中心页.md | 42 + .../docs/07-页面规格/16-秒杀活动页.md | 41 + .../docs/07-页面规格/17-限时折扣活动页.md | 43 + .../docs/07-页面规格/18-会员中心页.md | 47 + .../docs/07-页面规格/19-积分商城页.md | 44 + .../docs/07-页面规格/20-储值充值页.md | 44 + .../docs/07-页面规格/21-次卡页.md | 38 + .../docs/07-页面规格/22-消息中心页.md | 39 + .../docs/07-页面规格/23-帮助中心页.md | 44 + .../docs/07-页面规格/24-堂食扫码确认页.md | 47 + .../docs/08-全周期版本规划与范围分层.md | 264 +++ .../docs/09-租户后台与C端功能映射总表.md | 246 +++ .../docs/10-全周期研发实施顺序与交付清单.md | 311 ++++ .../docs/before-home.png | Bin 0 -> 277249 bytes Cend-MiniProgram-Prototype/index.html | 1511 +++++++++++++++++ Cend-MiniProgram-Prototype/plan.md | 459 +++++ .../小程序C端功能需求文档.md | 504 ++++++ .../.claude}/settings.local.json | 0 .../docker-compose.yml | 0 .../index.html | 0 .../nginx.conf | 0 .../pages}/_b64chunk.txt | 0 .../pages}/_b64write.py | 0 .../pages}/_create_cust_analysis.py | 0 .../pages}/_gen.py | 0 .../pages}/ch-delivery.html | 0 .../pages}/ch-menu-sync.html | 0 .../pages}/ch-orders.html | 0 .../pages}/ch-platform.html | 0 .../pages}/cpl-expiry.html | 0 .../pages}/cpl-inspect.html | 0 .../pages}/cpl-license.html | 0 .../pages}/cpl-trace.html | 0 .../pages}/cust-analysis.html | 0 .../pages}/cust-list.html | 0 .../pages}/cust-profile.html | 0 .../pages}/dashboard.html | 0 .../pages}/fin-cost.html | 0 .../pages}/fin-invoice.html | 0 .../pages}/fin-overview.html | 0 .../pages}/fin-reports.html | 0 .../pages}/fin-settlement.html | 0 .../pages}/fin-transactions.html | 0 .../pages}/help-center.html | 0 .../pages}/inv-expiry.html | 0 .../pages}/inv-inout.html | 0 .../pages}/inv-overview.html | 0 .../pages}/inv-purchase.html | 0 .../pages}/inv-soldout.html | 0 .../pages}/mbr-customers.html | 0 .../pages}/mbr-members.html | 0 .../pages}/mbr-messaging.html | 0 .../pages}/mbr-points.html | 0 .../pages}/mbr-prepaid.html | 0 .../pages}/mkt-calendar.html | 0 .../pages}/mkt-coupon.html | 0 .../pages}/mkt-flash-sale.html | 0 .../pages}/mkt-new-customer.html | 0 .../pages}/mkt-pass-card.html | 0 .../pages}/mkt-reduction.html | 0 .../pages}/mkt-seckill.html | 0 .../pages}/msg-center.html | 0 .../pages}/my-profile.html | 0 .../pages}/order-board.html | 0 .../pages}/order-list.html | 0 .../pages}/order-refund.html | 0 .../pages}/order-settings.html | 0 .../pages}/product-addons.html | 0 .../pages}/product-batch.html | 0 .../pages}/product-category.html | 0 .../pages}/product-combos.html | 0 .../pages}/product-detail.html | 0 .../pages}/product-labels.html | 0 .../pages}/product-list.html | 0 .../pages}/product-schedule.html | 0 .../pages}/product-specs.html | 0 .../pages}/reviews.html | 0 .../pages}/stat-customer.html | 0 .../pages}/stat-marketing.html | 0 .../pages}/stat-order.html | 0 .../pages}/stat-product.html | 0 .../pages}/store-delivery.html | 0 .../pages}/store-dinein.html | 0 .../pages}/store-fees.html | 0 .../pages}/store-hours.html | 0 .../pages}/store-list.html | 0 .../pages}/store-pickup.html | 0 .../pages}/store-qualifications.html | 0 .../pages}/store-staff.html | 0 .../pages}/sys-basic.html | 0 .../pages}/sys-billing.html | 0 .../pages}/sys-logs.html | 0 .../pages}/sys-notify.html | 0 .../pages}/sys-payment.html | 0 .../pages}/sys-plan.html | 0 .../pages}/sys-printer.html | 0 .../pages}/sys-roles.html | 0 .../pages}/sys-subaccount.html | 0 .../pages}/sys-upgrade.html | 0 122 files changed, 5580 insertions(+) create mode 100644 Cend-MiniProgram-Prototype/GEMINI.MD create mode 100644 Cend-MiniProgram-Prototype/README.md create mode 100644 Cend-MiniProgram-Prototype/README.patch create mode 100644 Cend-MiniProgram-Prototype/docs/01-文档导航与实施顺序.md create mode 100644 Cend-MiniProgram-Prototype/docs/02-信息架构与路由.md create mode 100644 Cend-MiniProgram-Prototype/docs/03-全局业务规则.md create mode 100644 Cend-MiniProgram-Prototype/docs/04-核心用户流程.md create mode 100644 Cend-MiniProgram-Prototype/docs/05-页面清单总表.md create mode 100644 Cend-MiniProgram-Prototype/docs/06-通用组件清单.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/01-Tab-首页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/02-Tab-点餐页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/03-Tab-订单页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/04-Tab-我的页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/05-门店选择页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/06-地址管理页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/07-商品详情抽屉.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/08-购物车抽屉.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/09-结算确认页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/10-支付成功页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/11-订单详情页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/12-退款申请页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/13-退款详情页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/14-评价页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/15-领券中心页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/16-秒杀活动页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/17-限时折扣活动页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/18-会员中心页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/19-积分商城页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/20-储值充值页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/21-次卡页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/22-消息中心页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/23-帮助中心页.md create mode 100644 Cend-MiniProgram-Prototype/docs/07-页面规格/24-堂食扫码确认页.md create mode 100644 Cend-MiniProgram-Prototype/docs/08-全周期版本规划与范围分层.md create mode 100644 Cend-MiniProgram-Prototype/docs/09-租户后台与C端功能映射总表.md create mode 100644 Cend-MiniProgram-Prototype/docs/10-全周期研发实施顺序与交付清单.md create mode 100644 Cend-MiniProgram-Prototype/docs/before-home.png create mode 100644 Cend-MiniProgram-Prototype/index.html create mode 100644 Cend-MiniProgram-Prototype/plan.md create mode 100644 Cend-MiniProgram-Prototype/小程序C端功能需求文档.md rename {.claude => Tenant-Admin-UI-Prototype/.claude}/settings.local.json (100%) rename docker-compose.yml => Tenant-Admin-UI-Prototype/docker-compose.yml (100%) rename index.html => Tenant-Admin-UI-Prototype/index.html (100%) rename nginx.conf => Tenant-Admin-UI-Prototype/nginx.conf (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/_b64chunk.txt (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/_b64write.py (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/_create_cust_analysis.py (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/_gen.py (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/ch-delivery.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/ch-menu-sync.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/ch-orders.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/ch-platform.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/cpl-expiry.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/cpl-inspect.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/cpl-license.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/cpl-trace.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/cust-analysis.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/cust-list.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/cust-profile.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/dashboard.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/fin-cost.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/fin-invoice.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/fin-overview.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/fin-reports.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/fin-settlement.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/fin-transactions.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/help-center.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/inv-expiry.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/inv-inout.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/inv-overview.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/inv-purchase.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/inv-soldout.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/mbr-customers.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/mbr-members.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/mbr-messaging.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/mbr-points.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/mbr-prepaid.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/mkt-calendar.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/mkt-coupon.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/mkt-flash-sale.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/mkt-new-customer.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/mkt-pass-card.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/mkt-reduction.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/mkt-seckill.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/msg-center.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/my-profile.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/order-board.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/order-list.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/order-refund.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/order-settings.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/product-addons.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/product-batch.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/product-category.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/product-combos.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/product-detail.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/product-labels.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/product-list.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/product-schedule.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/product-specs.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/reviews.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/stat-customer.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/stat-marketing.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/stat-order.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/stat-product.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/store-delivery.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/store-dinein.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/store-fees.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/store-hours.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/store-list.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/store-pickup.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/store-qualifications.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/store-staff.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/sys-basic.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/sys-billing.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/sys-logs.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/sys-notify.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/sys-payment.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/sys-plan.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/sys-printer.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/sys-roles.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/sys-subaccount.html (100%) rename {pages => Tenant-Admin-UI-Prototype/pages}/sys-upgrade.html (100%) diff --git a/Cend-MiniProgram-Prototype/GEMINI.MD b/Cend-MiniProgram-Prototype/GEMINI.MD new file mode 100644 index 0000000..6ac5a08 --- /dev/null +++ b/Cend-MiniProgram-Prototype/GEMINI.MD @@ -0,0 +1,294 @@ +# GEMINI 工作说明 + +## 1. 你的角色 + +你现在不是在做正式开发版本,而是在做 `TakeoutSaaS` 的 **C 端小程序原型**。 +你的核心任务不是重新定义需求,也不是发散设计,而是 **严格根据仓库内的 Markdown 文档,把页面原型 1:1 搭出来**。 + +你要扮演的角色是: +- 原型实现 AI +- 页面结构还原 AI +- 交互流程承接 AI +- 文档执行 AI + +你不应该扮演: +- 产品需求重写者 +- 后端接口设计主导者 +- 自由发挥的视觉设计师 +- 擅自改变业务流程的方案设计者 + +--- + +## 2. 本次工作的目标 + +本次目标是完成一个 **可演示、可走流程、可按页面逐步查看的 C 端小程序原型**。 + +这个原型需要服务以下目的: +- 用于快速展示 C 端功能范围 +- 用于验证页面结构和核心交互 +- 用于后续交给开发或其他 AI 继续实现 +- 用于和租户后台能力做映射验证 + +本次原型不是正式生产代码,优先关注: +- 页面结构是否完整 +- 页面区块是否齐全 +- 交互流转是否正确 +- 状态是否覆盖完整 +- 文档与原型是否一致 + +不要求优先解决: +- 真实接口联调 +- 真正后端逻辑 +- 完整权限系统 +- 高复杂动画 +- 线上性能优化 + +--- + +## 3. 你必须遵守的文档优先级 + +如果仓库内多个文档描述不一致,按下面优先级执行: + +1. `docs/07-页面规格/` 下的单页规格文档 +2. `docs/03-全局业务规则.md` +3. `docs/02-信息架构与路由.md` +4. `docs/04-核心用户流程.md` +5. `docs/05-页面清单总表.md` +6. `小程序C端功能需求文档.md` + +如果你发现描述不完整: +- 允许做 **最小必要推断** +- 不允许擅自新增新的业务能力 +- 所有推断必须以“不破坏现有文档结构”为前提 + +--- + +## 4. 你开始工作前必须先读的文件 + +开始任何实现前,必须先完整阅读以下文件: + +1. `README.md` +2. `docs/01-文档导航与实施顺序.md` +3. `docs/02-信息架构与路由.md` +4. `docs/03-全局业务规则.md` +5. `docs/04-核心用户流程.md` +6. `docs/05-页面清单总表.md` +7. `docs/06-通用组件清单.md` +8. 本次要实现页面对应的 `docs/07-页面规格/*.md` + +如果你没有读完这些文档,不允许直接开始实现页面。 + +--- + +## 5. 原型实现原则 + +### 5.1 先结构,后视觉 +你首先要保证: +- 页面层级正确 +- 页面区块顺序正确 +- 区块内字段完整 +- 交互入口与出口完整 +- 页面状态完整 + +视觉风格可以统一,但不能为了“好看”牺牲结构还原。 + +### 5.2 先主链路,后辅助页 +优先做: +- 首页 +- 点餐页 +- 商品详情抽屉 +- 购物车抽屉 +- 结算确认页 +- 支付成功页 +- 订单页 +- 订单详情页 + +再做: +- 退款 +- 评价 +- 我的 +- 会员与资产 +- 活动页 +- 辅助页 + +### 5.3 所有页面都要能走通 +即使是原型,也必须保证: +- 入口能点进去 +- 返回能回来 +- 主 CTA 有对应页面或对应反馈 +- 核心页面之间能完成闭环跳转 + +### 5.4 统一组件复用 +如果多个页面出现重复结构,优先抽组件,不要每页重新拼。 + +必须优先复用: +- 顶部导航 +- TabBar +- 门店切换条 +- 场景切换条 +- 商品卡 +- 订单卡 +- 金额明细卡 +- 底部固定操作栏 +- 状态标签 +- 列表空态 + +### 5.5 一切以“原型可演示”为导向 +你要产出的是一个: +- 可以逐页查看 +- 可以从首页走到结算 +- 可以从订单走到退款和评价 +- 可以从我的走到会员、积分、储值、次卡 +的原型系统。 + +--- + +## 6. 页面实现要求 + +每实现一个页面,都必须覆盖以下内容: + +### 6.1 页面骨架 +- 顶部区域 +- 主内容区 +- 底部区域 / 底部 CTA +- 安全区处理 + +### 6.2 页面区块 +必须按照对应页面规格文档中的区块顺序实现。 +不要随意增删区块。 + +### 6.3 页面数据 +由于当前是原型,可以使用静态 mock 数据。 +但 mock 数据必须满足: +- 能真实表现页面结构 +- 能体现业务差异 +- 能体现状态变化 +- 文案贴近餐饮点单场景 + +### 6.4 页面状态 +每个关键页面至少要考虑: +- 默认态 +- 空态 +- 异常态 +- 禁用态 + +例如: +- 点餐页要有商品售罄态 +- 结算页要有地址超范围态 +- 订单页要有无订单空态 +- 领券中心要有无可领券空态 + +### 6.5 页面交互 +你必须保证以下类型的交互具备原型行为: +- 点击跳转 +- 抽屉打开 / 关闭 +- Tab 切换 +- 场景切换 +- 数量加减 +- 状态筛选 +- 返回上页 + +--- + +## 7. 禁止事项 + +你不允许做以下事情: + +### 7.1 不允许擅自改变信息架构 +例如: +- 把 `堂食扫码确认页` 改成 Tab 页面 +- 把 `购物车抽屉` 改成完整页面,且没有理由 +- 把 `会员中心` 合并进 `我的` 而取消独立页面 + +### 7.2 不允许擅自删减关键业务页面 +以下页面是必须存在的: +- 首页 +- 点餐页 +- 订单页 +- 我的页 +- 商品详情抽屉 +- 购物车抽屉 +- 结算确认页 +- 支付成功页 +- 订单详情页 +- 退款申请页 +- 评价页 +- 会员中心页 +- 积分商城页 +- 储值充值页 +- 次卡页 +- 堂食扫码确认页 + +### 7.3 不允许引入不必要的业务创新 +例如: +- 社交分享裂变体系 +- 拼团、砍价、盲盒、社区内容 +- 与文档无关的推荐算法逻辑 +- 与文档无关的新支付方式 + +### 7.4 不允许只做静态截图式页面 +原型必须能点击流转,不是只拼静态画面。 + +--- + +## 8. 推荐工作方式 + +### 第一步:先做壳层 +先搭: +- 全局路由 +- TabBar +- 顶部导航 +- 通用容器 +- 安全区处理 + +### 第二步:先做核心组件 +先做: +- 商品卡 +- 订单卡 +- 金额明细卡 +- 状态标签 +- 购物车底栏 +- 抽屉容器 + +### 第三步:按 `plan.md` 的顺序做页面 +严格按 `plan.md` 的阶段执行。 +一个阶段完成后再进入下一个阶段。 + +### 第四步:每完成一个页面就自检 +自检内容: +- 路由是否正确 +- 区块是否完整 +- 交互是否能走通 +- 状态是否覆盖 +- 文档是否对齐 + +--- + +## 9. 完成标准 + +只有满足以下条件,才算页面完成: + +- 页面区块完整 +- 页面交互可用 +- 页面状态可切换或可表达 +- 页面和文档一致 +- 页面能接入主流程 + +只有满足以下条件,才算整套原型完成: + +- 首页 → 点餐 → 结算 → 支付成功 → 订单详情 能闭环 +- 订单 → 退款 / 评价 能闭环 +- 我的 → 会员 / 积分 / 储值 / 次卡 / 消息 / 帮助 能闭环 +- 堂食扫码 → 堂食点餐 → 结算 → 订单详情 能闭环 + +--- + +## 10. 本次你最终应该交付什么 + +你最终应该交付的是: +- 一套可点击的小程序原型 +- 页面结构与文档高度一致 +- 页面命名、路由、交互路径可被开发继续接手 +- 另一位开发或 AI 能在此基础上继续做真实代码实现 + +你当前的目标不是把代码做复杂,而是把原型做准确。 diff --git a/Cend-MiniProgram-Prototype/README.md b/Cend-MiniProgram-Prototype/README.md new file mode 100644 index 0000000..47b7201 --- /dev/null +++ b/Cend-MiniProgram-Prototype/README.md @@ -0,0 +1,61 @@ +# TakeoutSaaS C 端小程序原型文档仓库 + +本仓库用于承载 `TakeoutSaaS` 小程序 C 端的产品需求拆分文档。 +目标不是只描述“有什么功能”,而是让另一个 AI 或工程师可以直接照着 Markdown 文档,把页面结构 `1:1` 搭出来。 + +## 使用顺序 + +建议按下面顺序阅读并实施: + +1. `docs/01-文档导航与实施顺序.md` +2. `docs/02-信息架构与路由.md` +3. `docs/03-全局业务规则.md` +4. `docs/04-核心用户流程.md` +5. `docs/05-页面清单总表.md` +6. `docs/08-全周期版本规划与范围分层.md` +7. `docs/09-租户后台与C端功能映射总表.md` +8. `docs/10-全周期研发实施顺序与交付清单.md` +9. `docs/06-通用组件清单.md` +10. `docs/07-页面规格/` 下的单页文档 +11. `小程序C端功能需求文档.md` 作为总需求母文档补充参考 + +## 文档优先级 + +当文档之间出现描述差异时,按以下优先级处理: + +1. `docs/07-页面规格/` 单页规格 +2. `docs/03-全局业务规则.md` +3. `docs/02-信息架构与路由.md` +4. `小程序C端功能需求文档.md` + +## 当前仓库内容 + +- `小程序C端功能需求文档.md`:原始总需求文档 +- `docs/`:拆分后的实施文档 +- `docs/08-10`:全周期版本规划、后台映射、研发实施顺序文档 + +## 实施目标 + +另一个 AI 接手时,应至少能根据本仓库完成: + +- 小程序整体信息架构 +- Tab 页和二级页面结构 +- 弹层 / 抽屉 / 购物车等交互组件 +- 外卖、自提、堂食三场景页面切换 +- 会员、优惠、积分、储值、次卡等资产页面 +- 订单、退款、评价等履约和售后页面 + +## 当前约定 + +- 底部 Tab 固定为:`首页`、`点餐`、`订单`、`我的` +- 堂食采用 `扫码直达 + 二级页面确认`,不作为独立 Tab +- 本仓库当前只包含文档,不包含前端代码 + + + +## 原型演示 + +- 可点击原型入口:`index.html` +- 打开方式:直接用浏览器打开 `index.html` +- 页面覆盖:首页、点餐、订单、我的、结算、支付成功、订单详情、退款、评价、会员资产、活动页、辅助页 +- 演示结构:左侧为阶段计划与页面导航,右侧为移动端原型画布 diff --git a/Cend-MiniProgram-Prototype/README.patch b/Cend-MiniProgram-Prototype/README.patch new file mode 100644 index 0000000..2620c86 --- /dev/null +++ b/Cend-MiniProgram-Prototype/README.patch @@ -0,0 +1,19 @@ +*** Begin Patch +*** Update File: README.md +@@ +-## 当前仓库内容 +- +-- `小程序C端功能需求文档.md`:原始总需求文档 +-- `docs/`:拆分后的实施文档 ++## 当前仓库内容 ++ ++- `小程序C端功能需求文档.md`:原始总需求文档 ++- `docs/`:拆分后的实施文档 ++- `index.html`:按 `plan.md` 落地的可点击 C 端原型演示页 ++ ++## 原型预览 ++ ++- 直接在浏览器打开 `index.html` ++- 左侧为阶段计划与页面导航,右侧为移动端原型画布 ++- 已覆盖首页、点餐、订单、我的、结算、支付成功、订单详情、退款、评价、会员资产、活动页与辅助页 +*** End Patch diff --git a/Cend-MiniProgram-Prototype/docs/01-文档导航与实施顺序.md b/Cend-MiniProgram-Prototype/docs/01-文档导航与实施顺序.md new file mode 100644 index 0000000..7f9edb2 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/01-文档导航与实施顺序.md @@ -0,0 +1,99 @@ +# 文档导航与实施顺序 + +## 1. 文档目的 + +本套文档的目标是把一份较大的总需求,拆成可执行的页面与组件规格。 +要求是:另一个 AI 在不反复追问的情况下,可以根据这里的 Markdown 文件直接搭页面骨架、组织路由、规划交互和状态。 + +## 2. 推荐阅读顺序 + +### 第一步:先理解范围 +- `小程序C端功能需求文档.md` +- `docs/02-信息架构与路由.md` +- `docs/03-全局业务规则.md` + +### 第二步:再理解链路 +- `docs/04-核心用户流程.md` +- `docs/05-页面清单总表.md` + +### 第三步:再理解版本与映射 +- `docs/08-全周期版本规划与范围分层.md` +- `docs/09-租户后台与C端功能映射总表.md` +- `docs/10-全周期研发实施顺序与交付清单.md` + +### 第四步:开始搭页面 +- `docs/06-通用组件清单.md` +- `docs/07-页面规格/` 下的单页文档 + +## 3. 页面实施建议顺序 + +建议另一位 AI 按下面顺序实现: + +1. 先搭全局骨架 + - TabBar + - 页面导航框架 + - 顶部导航 + - 通用按钮、卡片、列表、状态标签 +2. 再搭交易主链路 + - 首页 + - 点餐页 + - 商品详情抽屉 + - 购物车抽屉 + - 结算确认页 + - 支付成功页 +3. 再搭履约与售后 + - 订单页 + - 订单详情页 + - 退款申请页 + - 退款详情页 + - 评价页 +4. 再搭资产与增长 + - 我的页 + - 领券中心页 + - 会员中心页 + - 积分商城页 + - 储值充值页 + - 次卡页 +5. 最后搭辅助页 + - 门店选择页 + - 地址管理页 + - 消息中心页 + - 帮助中心页 + - 堂食扫码确认页 + - 秒杀活动页 + - 限时折扣活动页 + +## 4. 文档使用规则 + +### 4.1 页面规格优先 +如果某个页面的单页规格文档与总文档描述不同,以单页规格为准。 + +### 4.2 结构先于视觉 +本套文档优先定义: +- 页面区块顺序 +- 页面承载的业务对象 +- 关键交互 +- 页面状态 + +视觉风格可以后续统一,但结构不能偏离。 + +### 4.3 先还原,再优化 +另一位 AI 的任务优先是“把页面按规格还原出来”,而不是先做风格创新。 +如果规格没有要求,不要擅自增加新的业务功能。 + +### 4.4 分期文档用于约束范围 +如果在实施过程中出现“这一期到底做不做”的争议,优先参考: +- `docs/08-全周期版本规划与范围分层.md` +- `docs/09-租户后台与C端功能映射总表.md` +- `docs/10-全周期研发实施顺序与交付清单.md` + +## 5. 交付标准 + +如果页面是按本套文档完成的,应满足以下要求: + +- 页面层级、路由、入口与出口清晰 +- 页面从上到下的区块顺序与文档一致 +- 每个区块具备文档要求的字段与交互 +- 页面具备默认态、空态、异常态、禁用态等必要状态 +- 业务对象和后台配置关系清晰可追溯 + diff --git a/Cend-MiniProgram-Prototype/docs/02-信息架构与路由.md b/Cend-MiniProgram-Prototype/docs/02-信息架构与路由.md new file mode 100644 index 0000000..e11401a --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/02-信息架构与路由.md @@ -0,0 +1,86 @@ +# 信息架构与路由 + +## 1. 顶层信息架构 + +小程序采用 `4 个 Tab + 若干二级页面 + 若干弹层 / 抽屉组件` 的结构。 + +### 1.1 Tab 页面 + +| 编码 | 页面名称 | 路由建议 | 页面层级 | 说明 | +| --- | --- | --- | --- | --- | +| `T01` | 首页 | `pages/tab/home/index` | Tab | 选店、活动导流、推荐 | +| `T02` | 点餐 | `pages/tab/menu/index` | Tab | 商品浏览、加购、结算入口 | +| `T03` | 订单 | `pages/tab/orders/index` | Tab | 订单列表、履约、售后 | +| `T04` | 我的 | `pages/tab/me/index` | Tab | 资产、消息、服务、复购 | + +### 1.2 二级页面 + +| 编码 | 页面名称 | 路由建议 | 页面层级 | 入口来源 | +| --- | --- | --- | --- | --- | +| `P01` | 门店选择页 | `pages/store/select/index` | 二级页 | 首页、点餐页 | +| `P02` | 地址管理页 | `pages/address/list/index` | 二级页 | 我的、结算页 | +| `P03` | 结算确认页 | `pages/checkout/index` | 二级页 | 点餐页 | +| `P04` | 支付成功页 | `pages/payment/success/index` | 二级页 | 结算确认页 | +| `P05` | 订单详情页 | `pages/order/detail/index` | 二级页 | 订单页、支付成功页 | +| `P06` | 退款申请页 | `pages/order/refund/apply/index` | 二级页 | 订单详情页 | +| `P07` | 退款详情页 | `pages/order/refund/detail/index` | 二级页 | 订单页、订单详情页 | +| `P08` | 评价页 | `pages/review/create/index` | 二级页 | 订单详情页 | +| `P09` | 领券中心页 | `pages/coupon/center/index` | 二级页 | 首页、我的 | +| `P10` | 秒杀活动页 | `pages/activity/seckill/index` | 二级页 | 首页、点餐页 | +| `P11` | 限时折扣活动页 | `pages/activity/flash-sale/index` | 二级页 | 首页、点餐页 | +| `P12` | 会员中心页 | `pages/member/center/index` | 二级页 | 我的 | +| `P13` | 积分商城页 | `pages/points/mall/index` | 二级页 | 我的 | +| `P14` | 储值充值页 | `pages/prepaid/index` | 二级页 | 我的 | +| `P15` | 次卡页 | `pages/pass-card/index` | 二级页 | 我的 | +| `P16` | 消息中心页 | `pages/message/center/index` | 二级页 | 我的 | +| `P17` | 帮助中心页 | `pages/help/center/index` | 二级页 | 我的 | +| `P18` | 堂食扫码确认页 | `pages/dine-in/confirm/index` | 二级页 | 扫码入口、首页 | + +### 1.3 弹层 / 抽屉 / 组件级页面 + +| 编码 | 名称 | 建议形态 | 所属页面 | 说明 | +| --- | --- | --- | --- | --- | +| `C01` | 商品详情抽屉 | 底部抽屉 / 右滑抽屉 | 点餐页 | 规格、加料、数量选择 | +| `C02` | 购物车抽屉 | 底部抽屉 | 点餐页 | 已选商品清单 | +| `C03` | 登录授权弹层 | 中央弹窗 / 底部弹层 | 全局 | 订单与资产前拦截 | +| `C04` | 优惠选择弹层 | 底部抽屉 | 结算页 | 券、积分、余额选择 | +| `C05` | 支付方式弹层 | 底部抽屉 | 结算页 | 微信支付 / 余额支付 | +| `C06` | 地址选择抽屉 | 底部抽屉 | 结算页 | 快捷切换地址 | + +## 2. 页面层级关系 + +### 2.1 主链路关系 + +`首页 / 点餐 / 我的` → `门店选择` +`点餐` → `商品详情抽屉` → `购物车抽屉` → `结算确认页` → `支付成功页` → `订单详情页` +`订单页` → `订单详情页` → `退款申请页 / 评价页` +`我的` → `会员中心 / 积分商城 / 储值充值 / 次卡 / 消息中心 / 帮助中心` + +### 2.2 堂食链路关系 + +`扫码` → `堂食扫码确认页` → `点餐页(堂食场景)` → `商品详情抽屉` → `购物车抽屉` → `结算确认页` → `订单详情页` + +## 3. Tab 与二级页切换规则 + +- Tab 页面之间通过底部导航切换 +- 二级页面统一采用顶部导航栏返回 +- `商品详情抽屉` 和 `购物车抽屉` 不单独占用路由栈 +- `结算确认页`、`订单详情页`、`会员中心页` 等重要业务页使用完整页面承载 + +## 4. 页面显示规则 + +### 4.1 Tab 页面 +- 保持底部 TabBar 可见 +- 顶部导航不显示返回按钮 +- 页面滚动位置可按产品需要保留 + +### 4.2 二级页面 +- 显示顶部导航和返回按钮 +- 进入后覆盖当前 Tab 内容 +- 返回时回到来源页面 + +### 4.3 抽屉与弹层 +- 不应中断当前页面上下文 +- 应支持手势关闭 / 点击遮罩关闭(支付与关键确认除外) +- 关闭后保留当前页面已选状态 + diff --git a/Cend-MiniProgram-Prototype/docs/03-全局业务规则.md b/Cend-MiniProgram-Prototype/docs/03-全局业务规则.md new file mode 100644 index 0000000..da56526 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/03-全局业务规则.md @@ -0,0 +1,164 @@ +# 全局业务规则 + +## 1. 用户身份与登录 + +### 1.1 可匿名浏览的范围 +- 首页 +- 门店选择页 +- 点餐页基础浏览 +- 商品详情查看 + +### 1.2 必须登录 / 绑定手机号的动作 +- 提交订单 +- 使用优惠券、积分、储值、次卡 +- 查看“我的”资产 +- 查看消息中心 +- 提交退款申请 +- 提交评价 + +### 1.3 登录拦截方式 +- 优先使用 `C03 登录授权弹层` +- 拦截后登录成功,应返回原业务场景继续执行 + +## 2. 门店与场景规则 + +### 2.1 场景枚举 + +| 值 | 名称 | 说明 | +| --- | --- | --- | +| `delivery` | 外卖配送 | 需要地址、配送范围和配送费 | +| `pickup` | 到店自提 | 需要取餐时间、取餐人信息 | +| `dine_in` | 堂食扫码 | 需要门店和桌号 | + +### 2.2 门店选择规则 +- 顾客必须在“某一家门店”下点单 +- 同一时间购物车只属于一个门店 + 一个场景 +- 切换门店时,应提示当前购物车可能清空 + +### 2.3 堂食规则 +- 堂食优先由扫码进入 +- 扫码后自动识别门店与桌号 +- 堂食场景默认不展示配送地址与配送费模块 + +## 3. 商品与价格规则 + +### 3.1 商品展示规则 +- 商品按分类展示 +- 支持热销、招牌、新品、推荐等标签 +- 商品在以下情况下显示不可售: + - 售罄 + - 下架 + - 超出供应时段 + - 当前场景不可售 + +### 3.2 SKU 与规格规则 +- 规格做法与加料均在商品详情抽屉中完成 +- 当商品启用多规格时,价格与库存以 SKU 为准 +- 如果规格变化导致库存不足,应立即提示 + +### 3.3 费用结构 + +结算时至少展示以下金额项: +- 商品金额 +- 打包费 +- 餐具费 +- 配送费 +- 优惠减免 +- 实付金额 + +## 4. 优惠与资产规则 + +### 4.1 资产类型 + +| 类型 | 说明 | +| --- | --- | +| 优惠券 | 满减券、折扣券、免配送费券 | +| 积分 | 获取、抵扣、兑换 | +| 储值余额 | 充值后可支付订单 | +| 次卡 | 对特定商品或分类核销 | +| 会员等级 | 折扣、积分倍率、生日权益、会员日权益 | + +### 4.2 资产使用原则 +- 顾客端只负责展示可用资产和命中结果 +- 具体叠加、互斥、优先级由后台规则决定 +- 若资产不可用,必须给出原因说明 + +### 4.3 典型不可用原因 +- 未达到金额门槛 +- 不适用当前门店 +- 不适用当前场景 +- 不适用当前商品 +- 已过期 +- 已使用 + +## 5. 订单状态规则 + +### 5.1 订单状态定义 + +| 状态值 | 中文名称 | 说明 | +| --- | --- | --- | +| `pending_pay` | 待支付 | 已提交订单,未完成支付 | +| `paid_wait_accept` | 已支付待接单 | 等待商家处理 | +| `preparing` | 制作中 | 商家已接单,正在备餐 | +| `delivering` | 配送中 | 外卖场景履约中 | +| `wait_pickup` | 待自提 | 自提场景等待到店取餐 | +| `dine_in_serving` | 堂食进行中 | 堂食场景订单进行中 | +| `finished` | 已完成 | 订单已履约完成 | +| `refunding` | 退款中 | 售后处理中 | +| `refunded` | 已退款 | 退款已完成 | +| `closed` | 已关闭 | 超时取消或主动取消 | + +### 5.2 订单动作与状态对应 +- `待支付`:可继续支付、取消订单 +- `已支付待接单 / 制作中`:可查看详情、催单、部分场景可申请退款 +- `配送中 / 待自提 / 堂食进行中`:可查看履约信息 +- `已完成`:可评价、再来一单 +- `退款中 / 已退款`:可查看退款详情 + +## 6. 消息通知规则 + +### 6.1 消息分类 + +| 类型 | 内容范围 | +| --- | --- | +| 订单消息 | 支付成功、接单、出餐、配送、退款处理 | +| 营销消息 | 发券提醒、活动开始、会员日提醒 | +| 系统通知 | 门店公告、规则更新、服务通知 | + +### 6.2 消息行为 +- 未读消息需要角标或红点提示 +- 进入消息详情或打开消息中心后,消息可置为已读 +- 消息应能跳转到对应业务页面 + +## 7. 页面通用状态 + +所有列表页和详情页都要考虑以下状态: + +- 加载态 +- 空态 +- 错误态 +- 禁用态 +- 网络重试态 + +### 7.1 典型空态 +- 无门店可选 +- 当前分类无商品 +- 无可用优惠券 +- 无历史订单 +- 无消息 + +### 7.2 典型错误态 +- 网络异常 +- 定位失败 +- 支付失败 +- 加载订单失败 +- 退款提交失败 + +## 8. 通用交互约束 + +- 金额统一用 `¥` 展示 +- 主要 CTA 按钮固定在页面底部或区块底部 +- 结算相关页面必须把金额明细解释清楚 +- 场景切换、门店切换、地址切换属于高风险动作,需要在必要时提示购物车清空 +- 同一页面的主要操作按钮文案要稳定,不同页面不要频繁变形 + diff --git a/Cend-MiniProgram-Prototype/docs/04-核心用户流程.md b/Cend-MiniProgram-Prototype/docs/04-核心用户流程.md new file mode 100644 index 0000000..97f9482 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/04-核心用户流程.md @@ -0,0 +1,113 @@ +# 核心用户流程 + +## 1. F01 外卖下单流程 + +### 流程目标 +让用户从“选门店”顺利进入“外卖点餐”,完成地址校验、优惠结算和支付。 + +### 流程步骤 +1. 用户进入首页 +2. 系统尝试定位并推荐最近门店 +3. 用户确认或切换门店 +4. 用户选择 `外卖` 场景 +5. 用户进入点餐页浏览商品 +6. 用户打开商品详情抽屉选择规格、加料、数量 +7. 用户加入购物车 +8. 用户打开购物车并点击去结算 +9. 进入结算确认页 +10. 选择或新增配送地址 +11. 系统校验配送范围、起送价、配送费 +12. 用户选择优惠券 / 积分 / 储值等资产 +13. 用户确认金额并支付 +14. 进入支付成功页 +15. 跳转订单详情查看履约进度 + +### 核心判断点 +- 地址是否在配送范围内 +- 是否达到起送门槛 +- 优惠是否可用 +- 当前门店是否营业 + +## 2. F02 自提下单流程 + +### 流程目标 +让用户选择门店和自提时间,完成到店取餐订单。 + +### 流程步骤 +1. 用户进入首页或点餐页 +2. 选择 `自提` 场景 +3. 浏览商品并加入购物车 +4. 进入结算确认页 +5. 选择自提时间段 +6. 填写取餐人信息 +7. 使用优惠资产 +8. 完成支付 +9. 支付成功页展示取餐时间与取餐入口 +10. 订单详情页展示取餐码和门店信息 + +### 核心判断点 +- 当前门店是否支持自提 +- 所选时间段是否可预约 +- 是否满足活动与优惠使用条件 + +## 3. F03 堂食扫码点餐流程 + +### 流程目标 +让顾客通过扫码快速绑定桌号,进入堂食点餐和加菜流程。 + +### 流程步骤 +1. 用户扫码进入小程序 +2. 进入堂食扫码确认页 +3. 系统展示门店、桌号、当前桌台信息 +4. 用户确认进入堂食点餐 +5. 点餐页切换为 `堂食` 场景 +6. 用户选择商品、规格、加料并加入购物车 +7. 进入结算确认页 +8. 页面默认带出堂食门店与桌号 +9. 用户确认订单并支付 +10. 订单详情展示桌号和堂食状态 +11. 用户可再次进入点餐页继续加菜 + +### 核心判断点 +- 桌号是否有效 +- 当前桌是否可继续点单 +- 当前场景是否需要合单或追加订单展示 + +## 4. F04 售后与评价流程 + +### 流程目标 +让用户在订单完成后可以评价,在履约异常时可以申请退款。 + +### 流程步骤 A:退款 +1. 用户进入订单详情页 +2. 点击申请退款 +3. 进入退款申请页 +4. 填写退款原因与说明 +5. 提交退款申请 +6. 跳转退款详情页查看处理状态 + +### 流程步骤 B:评价 +1. 用户进入订单详情页 +2. 点击去评价 +3. 进入评价页 +4. 选择星级、输入评价、上传图片、选择匿名 +5. 提交评价 +6. 评价成功后返回订单详情或订单列表 + +## 5. F05 会员与资产流程 + +### 流程目标 +让用户在“我的”中查看和使用所有可用资产,并引导复购。 + +### 流程步骤 +1. 用户进入我的页 +2. 查看会员等级、优惠券、积分、储值、次卡摘要 +3. 按需进入二级页面 + - 领券中心 + - 会员中心 + - 积分商城 + - 储值充值 + - 次卡页 +4. 用户领取、充值、兑换或购买资产 +5. 返回点餐页或结算页使用资产 + diff --git a/Cend-MiniProgram-Prototype/docs/05-页面清单总表.md b/Cend-MiniProgram-Prototype/docs/05-页面清单总表.md new file mode 100644 index 0000000..403d21a --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/05-页面清单总表.md @@ -0,0 +1,72 @@ +# 页面清单总表 + +## 1. 页面总表 + +| 编码 | 页面名称 | 层级 | 优先级 | 场景 | 规格文件 | +| --- | --- | --- | --- | --- | --- | +| `T01` | 首页 | Tab | P0 | 全场景 | `docs/07-页面规格/01-Tab-首页.md` | +| `T02` | 点餐页 | Tab | P0 | 外卖 / 自提 / 堂食 | `docs/07-页面规格/02-Tab-点餐页.md` | +| `T03` | 订单页 | Tab | P0 | 全场景 | `docs/07-页面规格/03-Tab-订单页.md` | +| `T04` | 我的页 | Tab | P0 | 全场景 | `docs/07-页面规格/04-Tab-我的页.md` | +| `P01` | 门店选择页 | 二级页 | P1 | 全场景 | `docs/07-页面规格/05-门店选择页.md` | +| `P02` | 地址管理页 | 二级页 | P1 | 外卖 | `docs/07-页面规格/06-地址管理页.md` | +| `C01` | 商品详情抽屉 | 抽屉 | P0 | 点餐 | `docs/07-页面规格/07-商品详情抽屉.md` | +| `C02` | 购物车抽屉 | 抽屉 | P0 | 点餐 | `docs/07-页面规格/08-购物车抽屉.md` | +| `P03` | 结算确认页 | 二级页 | P0 | 外卖 / 自提 / 堂食 | `docs/07-页面规格/09-结算确认页.md` | +| `P04` | 支付成功页 | 二级页 | P0 | 全场景 | `docs/07-页面规格/10-支付成功页.md` | +| `P05` | 订单详情页 | 二级页 | P0 | 全场景 | `docs/07-页面规格/11-订单详情页.md` | +| `P06` | 退款申请页 | 二级页 | P1 | 订单售后 | `docs/07-页面规格/12-退款申请页.md` | +| `P07` | 退款详情页 | 二级页 | P1 | 订单售后 | `docs/07-页面规格/13-退款详情页.md` | +| `P08` | 评价页 | 二级页 | P1 | 已完成订单 | `docs/07-页面规格/14-评价页.md` | +| `P09` | 领券中心页 | 二级页 | P1 | 会员营销 | `docs/07-页面规格/15-领券中心页.md` | +| `P10` | 秒杀活动页 | 二级页 | P1 | 营销活动 | `docs/07-页面规格/16-秒杀活动页.md` | +| `P11` | 限时折扣活动页 | 二级页 | P1 | 营销活动 | `docs/07-页面规格/17-限时折扣活动页.md` | +| `P12` | 会员中心页 | 二级页 | P1 | 会员 | `docs/07-页面规格/18-会员中心页.md` | +| `P13` | 积分商城页 | 二级页 | P1 | 积分 | `docs/07-页面规格/19-积分商城页.md` | +| `P14` | 储值充值页 | 二级页 | P1 | 储值 | `docs/07-页面规格/20-储值充值页.md` | +| `P15` | 次卡页 | 二级页 | P1 | 次卡 | `docs/07-页面规格/21-次卡页.md` | +| `P16` | 消息中心页 | 二级页 | P1 | 全场景 | `docs/07-页面规格/22-消息中心页.md` | +| `P17` | 帮助中心页 | 二级页 | P2 | 全场景 | `docs/07-页面规格/23-帮助中心页.md` | +| `P18` | 堂食扫码确认页 | 二级页 | P0 | 堂食 | `docs/07-页面规格/24-堂食扫码确认页.md` | + +## 2. 组件级清单 + +| 编码 | 名称 | 优先级 | 规格文件 | +| --- | --- | --- | --- | +| `C01` | 商品详情抽屉 | P0 | `docs/07-页面规格/07-商品详情抽屉.md` | +| `C02` | 购物车抽屉 | P0 | `docs/07-页面规格/08-购物车抽屉.md` | + +## 3. 推荐实现顺序 + +### 第一阶段:交易闭环 +- `T01` 首页 +- `T02` 点餐页 +- `C01` 商品详情抽屉 +- `C02` 购物车抽屉 +- `P03` 结算确认页 +- `P04` 支付成功页 +- `T03` 订单页 +- `P05` 订单详情页 + +### 第二阶段:履约与售后 +- `P06` 退款申请页 +- `P07` 退款详情页 +- `P08` 评价页 + +### 第三阶段:资产与增长 +- `T04` 我的页 +- `P09` 领券中心页 +- `P10` 秒杀活动页 +- `P11` 限时折扣活动页 +- `P12` 会员中心页 +- `P13` 积分商城页 +- `P14` 储值充值页 +- `P15` 次卡页 + +### 第四阶段:辅助页 +- `P01` 门店选择页 +- `P02` 地址管理页 +- `P16` 消息中心页 +- `P17` 帮助中心页 +- `P18` 堂食扫码确认页 + diff --git a/Cend-MiniProgram-Prototype/docs/06-通用组件清单.md b/Cend-MiniProgram-Prototype/docs/06-通用组件清单.md new file mode 100644 index 0000000..34031cb --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/06-通用组件清单.md @@ -0,0 +1,69 @@ +# 通用组件清单 + +## 1. 说明 + +以下组件建议在实现时先抽象出来,避免每个页面重复拼装。 +页面规格文档会引用这些通用组件。 + +## 2. 全局组件 + +| 编码 | 组件名称 | 用途 | 必备状态 | +| --- | --- | --- | --- | +| `G01` | 顶部导航栏 | 二级页面返回、标题展示 | 默认态 | +| `G02` | 底部 TabBar | Tab 页面切换 | 选中 / 未选中 | +| `G03` | 页面空态卡片 | 列表为空时提示 | 图标 / 文案 / CTA | +| `G04` | 页面错误卡片 | 网络错误、加载失败时提示 | 错误文案 / 重试 | +| `G05` | 状态标签 Tag | 订单状态、活动状态、会员状态 | 多色标签 | + +## 3. 门店与场景组件 + +| 编码 | 组件名称 | 用途 | 使用页面 | +| --- | --- | --- | --- | +| `G10` | 门店切换条 | 显示当前门店,点击切换 | 首页、点餐页 | +| `G11` | 场景切换条 | 外卖 / 自提 / 堂食切换 | 首页、点餐页 | +| `G12` | 门店信息卡 | 地址、营业、距离、电话 | 首页、结算页、堂食确认页 | +| `G13` | 服务规则条 | 起送价、配送费、自提规则等 | 首页、点餐页、结算页 | + +## 4. 商品与购物车组件 + +| 编码 | 组件名称 | 用途 | 使用页面 | +| --- | --- | --- | --- | +| `G20` | 分类侧边栏 / 顶部分类条 | 分类浏览商品 | 点餐页 | +| `G21` | 商品卡片 | 展示图片、价格、标签、加购按钮 | 点餐页、活动页 | +| `G22` | 数量步进器 | 商品数量增减 | 点餐页、商品详情、购物车 | +| `G23` | 规格选项组 | 规格做法单选/多选 | 商品详情抽屉 | +| `G24` | 加料选项组 | 附加项选择 | 商品详情抽屉 | +| `G25` | 底部购物车栏 | 已选数量、金额、去结算按钮 | 点餐页 | +| `G26` | 购物车商品行 | 展示已选商品和规格组合 | 购物车抽屉 | + +## 5. 结算与订单组件 + +| 编码 | 组件名称 | 用途 | 使用页面 | +| --- | --- | --- | --- | +| `G30` | 地址卡片 | 展示收货地址或取餐信息 | 结算页 | +| `G31` | 费用明细卡 | 展示金额构成 | 结算页、订单详情页 | +| `G32` | 优惠资产单元格 | 展示优惠券 / 积分 / 余额入口 | 结算页 | +| `G33` | 订单摘要卡 | 展示门店、商品、金额、状态 | 订单页 | +| `G34` | 订单时间轴 | 展示履约节点 | 订单详情页、退款详情页 | +| `G35` | 固定底部操作栏 | 继续支付、催单、退款、评价等 CTA | 结算页、订单详情页 | + +## 6. 资产与服务组件 + +| 编码 | 组件名称 | 用途 | 使用页面 | +| --- | --- | --- | --- | +| `G40` | 用户头部卡 | 头像、昵称、会员等级 | 我的页、会员中心 | +| `G41` | 资产总览卡 | 券、积分、余额、次卡摘要 | 我的页 | +| `G42` | 资产列表项 | 进入券、积分、储值、次卡详情 | 我的页 | +| `G43` | 活动券卡片 | 满减券、折扣券、免配送费券 | 领券中心 | +| `G44` | 充值方案卡 | 展示充值金额、赠送金额、到账金额 | 储值充值页 | +| `G45` | 次卡卡片 | 展示次卡名称、剩余次数、有效期 | 次卡页 | +| `G46` | 消息列表项 | 展示消息标题、摘要、时间、未读状态 | 消息中心 | + +## 7. 通用实现要求 + +- 所有卡片组件需要支持禁用态或不可点击态 +- 列表项需要支持右侧箭头、辅助文案、角标等变化 +- 底部固定操作栏需要考虑安全区 +- 金额展示组件统一格式化 +- 状态标签颜色语义在整个应用中保持一致 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/01-Tab-首页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/01-Tab-首页.md new file mode 100644 index 0000000..de5a44d --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/01-Tab-首页.md @@ -0,0 +1,101 @@ +# T01 首页 + +- 页面编码:`T01` +- 页面层级:`Tab` +- 适用场景:`外卖 / 自提 / 堂食导流` +- 页面目标:完成选店、选场景、看活动、快速进入点餐 +- 主要依赖组件:`G02`、`G10`、`G11`、`G12`、`G13`、`G21` + +## 1. 页面结构(从上到下) + +1. 顶部信息区 +2. 门店切换条 +3. 场景切换条 +4. Banner 活动区 +5. 快捷入口区 +6. 推荐商品区 +7. 门店服务信息区 + +## 2. 区块说明 + +### 2.1 顶部信息区 +- 左侧显示当前位置 / 当前门店简称 +- 右侧显示消息入口 +- 点击门店或位置进入 `P01 门店选择页` +- 点击消息入口进入 `P16 消息中心页` + +### 2.2 门店切换条 +- 使用 `G10` +- 显示当前门店名称、营业状态、距离 +- 支持点击切换门店 + +### 2.3 场景切换条 +- 使用 `G11` +- 固定提供 `外卖`、`自提`、`堂食` 三项 +- 切换后刷新下方活动和推荐内容 + +### 2.4 Banner 活动区 +- 展示门店主推活动轮播 +- Banner 点击可跳转: + - `P09 领券中心页` + - `P10 秒杀活动页` + - `P11 限时折扣活动页` + - `P12 会员中心页` + +### 2.5 快捷入口区 +- 建议 2 行网格或 1 行宫格 +- 包含以下入口: + - 新客有礼 + - 领券中心 + - 满减活动 + - 秒杀专区 + - 限时折扣 + - 储值充值 + - 次卡专区 + - 会员中心 + +### 2.6 推荐商品区 +- 按顺序展示: + - 热销推荐 + - 套餐推荐 + - 复购推荐 + - 猜你喜欢 +- 每个区块使用横滑或纵向卡片列表 +- 商品卡点击进入 `C01 商品详情抽屉` + +### 2.7 门店服务信息区 +- 使用 `G12` + `G13` +- 展示: + - 营业时间 + - 配送范围 / 起送价 / 配送费 + - 自提规则 + - 堂食规则 + - 联系门店 + - 到店导航 + +## 3. 页面主动作 + +- 切换门店 +- 切换场景 +- 进入点餐页 +- 进入活动页 +- 打开商品详情 + +## 4. 页面状态 + +### 默认态 +- 有门店、有活动、有推荐商品 + +### 空态 +- 无可用门店时展示空态,并提供重新定位 +- 无活动时隐藏活动区,保留推荐区 + +### 异常态 +- 定位失败时提示手动选店 +- 门店休息时展示“休息中”,但可保留浏览 + +## 5. 实现备注 + +- 首页优先是“导流页”,不是深度浏览页 +- 推荐商品只展示摘要,不在首页直接承载复杂选配 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/02-Tab-点餐页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/02-Tab-点餐页.md new file mode 100644 index 0000000..8489f71 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/02-Tab-点餐页.md @@ -0,0 +1,94 @@ +# T02 点餐页 + +- 页面编码:`T02` +- 页面层级:`Tab` +- 适用场景:`外卖 / 自提 / 堂食` +- 页面目标:完成商品浏览、选配、加购和进入结算 +- 主要依赖组件:`G10`、`G11`、`G20`、`G21`、`G22`、`G25` + +## 1. 页面结构(从上到下) + +1. 顶部门店条 +2. 场景切换条 +3. 搜索与活动提示条 +4. 菜单主区域 +5. 底部购物车栏 + +## 2. 区块说明 + +### 2.1 顶部门店条 +- 显示当前门店名称、营业状态 +- 点击进入 `P01 门店选择页` +- 门店切换需要提示购物车风险 + +### 2.2 场景切换条 +- 显示 `外卖 / 自提 / 堂食` +- 切换时刷新: + - 商品可售状态 + - 服务规则说明 + - 价格与优惠提示 + +### 2.3 搜索与活动提示条 +- 搜索框:按商品名搜索 +- 活动条:显示当前命中的满减、秒杀、折扣等活动摘要 + +### 2.4 菜单主区域 +- 左侧或顶部为分类导航 `G20` +- 右侧或主体为商品列表 +- 每个商品卡 `G21` 展示: + - 图片 + - 名称 + - 描述摘要 + - 标签 + - 价格 / 划线价 + - 加购按钮 +- 点击商品卡进入 `C01 商品详情抽屉` +- 直接点击步进器可快速加购默认 SKU + +### 2.5 底部购物车栏 +- 使用 `G25` +- 展示: + - 已选商品件数 + - 当前总金额 + - 差多少起送 / 差多少免配送费 + - 去结算按钮 +- 点击购物车区域打开 `C02 购物车抽屉` + +## 3. 场景差异规则 + +### 外卖场景 +- 突出显示配送费、起送价、预计送达 + +### 自提场景 +- 突出显示自提优惠、自提时段说明 + +### 堂食场景 +- 突出显示桌号、当前门店、可加菜提示 + +## 4. 页面主动作 + +- 切换门店 +- 切换场景 +- 搜索商品 +- 打开商品详情抽屉 +- 打开购物车抽屉 +- 进入结算确认页 + +## 5. 页面状态 + +### 默认态 +- 有分类、有商品、有活动提示 + +### 空态 +- 某分类无商品时,右侧显示空态 +- 搜索无结果时,提供清空搜索入口 + +### 异常态 +- 当前门店休息:商品可浏览但不能结算 +- 商品售罄:显示禁用状态,不能加购 + +## 6. 实现备注 + +- 点餐页是整套小程序最核心页面,需要优先保证信息密度和操作效率 +- 商品详情、购物车应通过抽屉承载,尽量不跳转新页面 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/03-Tab-订单页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/03-Tab-订单页.md new file mode 100644 index 0000000..48f0f33 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/03-Tab-订单页.md @@ -0,0 +1,64 @@ +# T03 订单页 + +- 页面编码:`T03` +- 页面层级:`Tab` +- 适用场景:`全场景` +- 页面目标:让用户快速找到订单,并查看履约、售后和复购入口 +- 主要依赖组件:`G05`、`G33` + +## 1. 页面结构(从上到下) + +1. 顶部状态筛选区 +2. 场景筛选区(可选) +3. 订单列表区 + +## 2. 区块说明 + +### 2.1 顶部状态筛选区 +- 建议分段控件或横向标签 +- 至少包含: + - 全部 + - 待支付 + - 进行中 + - 已完成 + - 退款售后 + +### 2.2 场景筛选区 +- 可按 `外卖 / 自提 / 堂食` 进行二次筛选 +- 也可与状态整合为一个过滤区 + +### 2.3 订单列表区 +- 每张订单卡使用 `G33` +- 订单卡必须展示: + - 门店名称 + - 订单状态 + - 场景标签 + - 商品摘要 + - 订单金额 + - 下单时间 + - 主要操作按钮 +- 订单卡点击进入 `P05 订单详情页` + +## 3. 订单卡动作规则 + +- `待支付`:继续支付、取消订单 +- `进行中`:查看详情、催单、查看取餐码 +- `已完成`:评价、再来一单 +- `退款售后`:查看退款详情 + +## 4. 页面状态 + +### 默认态 +- 有订单列表 + +### 空态 +- 某筛选条件下无订单时,展示空态和“去点餐” CTA + +### 异常态 +- 加载失败时展示重试 + +## 5. 实现备注 + +- 订单页重点是列表可扫读性 +- 一屏内要能快速看懂状态、门店、金额和下一步动作 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/04-Tab-我的页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/04-Tab-我的页.md new file mode 100644 index 0000000..4ca05f2 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/04-Tab-我的页.md @@ -0,0 +1,78 @@ +# T04 我的页 + +- 页面编码:`T04` +- 页面层级:`Tab` +- 适用场景:`全场景` +- 页面目标:集中展示用户身份、资产、服务和复购入口 +- 主要依赖组件:`G40`、`G41`、`G42` + +## 1. 页面结构(从上到下) + +1. 用户头部卡 +2. 资产总览区 +3. 订单快捷入口区 +4. 会员与增长入口区 +5. 服务入口区 +6. 复购推荐区 + +## 2. 区块说明 + +### 2.1 用户头部卡 +- 使用 `G40` +- 展示: + - 头像 + - 昵称 + - 会员等级 + - 成长值进度摘要 + +### 2.2 资产总览区 +- 使用 `G41` +- 展示: + - 优惠券数量 + - 积分余额 + - 储值余额 + - 次卡数量 / 剩余次数摘要 + +### 2.3 订单快捷入口区 +- 展示: + - 待支付 + - 进行中 + - 已完成 + - 售后 / 退款 +- 点击后跳转 `T03 订单页` 对应筛选状态 + +### 2.4 会员与增长入口区 +- 使用 `G42` +- 入口包含: + - 会员中心 + - 领券中心 + - 积分商城 + - 储值充值 + - 次卡页 + +### 2.5 服务入口区 +- 包含: + - 地址管理 + - 消息中心 + - 帮助中心 + - 联系客服 + - 协议与隐私 + +### 2.6 复购推荐区 +- 展示最近订单和常点商品 +- 提供“再来一单”入口 + +## 3. 页面状态 + +### 登录态 +- 展示完整资产与服务 + +### 未登录态 +- 展示基础入口 +- 资产卡片改为“登录后查看” + +## 4. 实现备注 + +- “我的”页要兼顾资产页和服务页 +- 顶部头部卡与资产总览区需要在视觉上形成核心焦点 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/05-门店选择页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/05-门店选择页.md new file mode 100644 index 0000000..e0f91cf --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/05-门店选择页.md @@ -0,0 +1,52 @@ +# P01 门店选择页 + +- 页面编码:`P01` +- 页面层级:`二级页` +- 页面目标:让用户选择合适门店,并明确当前场景是否可服务 +- 主要依赖组件:`G01`、`G12` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 搜索区 +3. 场景筛选区 +4. 当前定位结果区 +5. 门店列表区 + +## 2. 区块说明 + +### 2.1 搜索区 +- 支持按门店名称、商圈关键词搜索 + +### 2.2 场景筛选区 +- 按 `外卖 / 自提 / 堂食` 过滤门店 + +### 2.3 当前定位结果区 +- 显示当前定位城市 / 坐标结果 +- 提供重新定位动作 + +### 2.4 门店列表区 +- 每个门店卡展示: + - 门店名称 + - 距离 + - 营业状态 + - 地址 + - 场景支持标签 + - 起送价 / 配送费 / 自提 / 堂食提示 +- 点击门店即切换当前门店并返回来源页 + +## 3. 页面状态 + +### 默认态 +- 有门店列表 + +### 空态 +- 搜索无结果或当前区域无门店 + +### 异常态 +- 定位失败时只展示手动选店模式 + +## 4. 实现备注 + +- 门店列表要把“能否下单”说清楚,不仅展示名字 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/06-地址管理页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/06-地址管理页.md new file mode 100644 index 0000000..fce82cc --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/06-地址管理页.md @@ -0,0 +1,47 @@ +# P02 地址管理页 + +- 页面编码:`P02` +- 页面层级:`二级页` +- 页面目标:管理顾客常用收货地址,并服务外卖结算 +- 主要依赖组件:`G01` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 地址列表区 +3. 新增地址按钮 + +## 2. 区块说明 + +### 2.1 地址列表区 +- 每个地址项展示: + - 收货人姓名 + - 手机号 + - 详细地址 + - 默认地址标签 + - 适用范围提示(可选) +- 支持动作: + - 设为默认 + - 编辑 + - 删除 + - 选择用于本次结算 + +### 2.2 新增地址按钮 +- 固定在页面底部或列表底部 +- 点击后进入编辑态(可独立页或表单弹层) + +## 3. 页面状态 + +### 默认态 +- 展示已有地址 + +### 空态 +- 无地址时展示空态和新增 CTA + +### 异常态 +- 地址保存失败 / 删除失败时需要提示 + +## 4. 实现备注 + +- 如果另一位 AI 需要拆成“地址列表页 + 地址编辑页”,可以追加子页面,但当前文档以一个管理页为主 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/07-商品详情抽屉.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/07-商品详情抽屉.md new file mode 100644 index 0000000..2ed5933 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/07-商品详情抽屉.md @@ -0,0 +1,58 @@ +# C01 商品详情抽屉 + +- 页面编码:`C01` +- 页面层级:`组件级抽屉` +- 页面目标:完成商品选配,并把用户送入购物车 +- 主要依赖组件:`G22`、`G23`、`G24` + +## 1. 抽屉结构(从上到下) + +1. 商品图片区 +2. 商品基础信息区 +3. 规格做法区 +4. 加料区 +5. 数量与金额区 +6. 底部主操作区 + +## 2. 区块说明 + +### 2.1 商品图片区 +- 展示主图,允许左右切换附图(可选) + +### 2.2 商品基础信息区 +- 展示: + - 商品名称 + - 标签 + - 描述 + - 售价 + - 划线价 + - 月售 / 热销信息(可选) + +### 2.3 规格做法区 +- 使用 `G23` +- 支持单选 / 多组单选 +- 选择后实时刷新价格和库存 + +### 2.4 加料区 +- 使用 `G24` +- 支持多选和附加价格 + +### 2.5 数量与金额区 +- 使用 `G22` +- 实时展示当前组合总价 + +### 2.6 底部主操作区 +- 主按钮:加入购物车 +- 次按钮:立即购买(可选) + +## 3. 状态规则 + +- 规格未选全时,主按钮不可用 +- 商品售罄时,显示不可售状态 +- 库存不足时,数量步进器受限 + +## 4. 实现备注 + +- 抽屉应保留当前点餐页上下文 +- 关闭抽屉不应导致列表位置丢失 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/08-购物车抽屉.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/08-购物车抽屉.md new file mode 100644 index 0000000..139c678 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/08-购物车抽屉.md @@ -0,0 +1,51 @@ +# C02 购物车抽屉 + +- 页面编码:`C02` +- 页面层级:`组件级抽屉` +- 页面目标:集中展示当前已选商品,并提供进入结算的最后一步确认 +- 主要依赖组件:`G22`、`G26` + +## 1. 抽屉结构(从上到下) + +1. 购物车头部 +2. 商品列表区 +3. 优惠与凑单提示区 +4. 底部结算区 + +## 2. 区块说明 + +### 2.1 购物车头部 +- 显示当前门店名 +- 显示“已选商品”标题 +- 提供清空购物车按钮 + +### 2.2 商品列表区 +- 每个商品行使用 `G26` +- 展示: + - 商品名 + - 规格摘要 + - 加料摘要 + - 单价 + - 数量步进器 + +### 2.3 优惠与凑单提示区 +- 展示: + - 满减差额 + - 起送差额 + - 免配送费差额 + - 已命中活动摘要 + +### 2.4 底部结算区 +- 展示总金额 +- 主按钮:去结算 + +## 3. 状态规则 + +- 空购物车时展示空态 +- 商品失效时需标记并禁止结算,或提示清理失效商品 + +## 4. 实现备注 + +- 购物车抽屉必须支持快速修改数量 +- 去结算按钮应只保留一个主路径,不做复杂分支 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/09-结算确认页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/09-结算确认页.md new file mode 100644 index 0000000..5a1237d --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/09-结算确认页.md @@ -0,0 +1,72 @@ +# P03 结算确认页 + +- 页面编码:`P03` +- 页面层级:`二级页` +- 适用场景:`外卖 / 自提 / 堂食` +- 页面目标:让用户确认履约信息、优惠和金额,并完成支付 +- 主要依赖组件:`G01`、`G30`、`G31`、`G32`、`G35` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 场景信息卡 +3. 商品清单区 +4. 优惠资产区 +5. 备注与附加信息区 +6. 费用明细区 +7. 底部支付栏 + +## 2. 区块说明 + +### 2.1 场景信息卡 +- 外卖:展示收货地址、预计送达 +- 自提:展示门店、自提时间、取餐人信息 +- 堂食:展示门店、桌号、堂食说明 + +### 2.2 商品清单区 +- 展示商品、规格、加料、数量、小计 + +### 2.3 优惠资产区 +- 使用 `G32` +- 入口包含: + - 优惠券选择 + - 积分抵扣 + - 储值余额支付 + - 次卡核销(适用时) + +### 2.4 备注与附加信息区 +- 订单备注 +- 餐具选择 +- 其他补充字段(按场景可选) + +### 2.5 费用明细区 +- 使用 `G31` +- 必须清楚展示所有金额构成 + +### 2.6 底部支付栏 +- 使用 `G35` +- 左侧显示实付金额 +- 右侧主按钮:提交订单并支付 + +## 3. 场景差异 + +### 外卖 +- 必须完成地址校验、起送价校验 + +### 自提 +- 必须完成自提时间选择和取餐人信息校验 + +### 堂食 +- 必须展示桌号,不展示配送相关字段 + +## 4. 页面状态 + +- 优惠不可用时展示原因 +- 地址超范围时禁止提交 +- 门店休息时禁止支付 + +## 5. 实现备注 + +- 结算页核心是“信息确认 + 金额确认” +- 所有会影响实付金额的项目都必须可见 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/10-支付成功页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/10-支付成功页.md new file mode 100644 index 0000000..e6b5eba --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/10-支付成功页.md @@ -0,0 +1,42 @@ +# P04 支付成功页 + +- 页面编码:`P04` +- 页面层级:`二级页` +- 页面目标:明确告诉用户支付已完成,并引导后续查看订单或继续点单 +- 主要依赖组件:`G01` + +## 1. 页面结构(从上到下) + +1. 成功状态区 +2. 订单摘要区 +3. 场景关键信息区 +4. 后续动作区 + +## 2. 区块说明 + +### 2.1 成功状态区 +- 成功图标 +- 标题:支付成功 +- 副文案:订单已提交,等待商家处理 + +### 2.2 订单摘要区 +- 展示订单号、门店名称、支付金额 + +### 2.3 场景关键信息区 +- 外卖:预计送达时间 +- 自提:取餐时间和取餐说明 +- 堂食:桌号与用餐状态 + +### 2.4 后续动作区 +- 查看订单详情 +- 继续点餐 / 再逛逛 + +## 3. 页面状态 + +- 支付成功为唯一主状态 +- 若返回支付结果异常,应回退到结算页或订单详情页校验状态 + +## 4. 实现备注 + +- 成功页停留时间不宜过长,应明确给出下一步 CTA + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/11-订单详情页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/11-订单详情页.md new file mode 100644 index 0000000..f1ab0e8 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/11-订单详情页.md @@ -0,0 +1,71 @@ +# P05 订单详情页 + +- 页面编码:`P05` +- 页面层级:`二级页` +- 页面目标:完整承接订单履约、售后和复购动作 +- 主要依赖组件:`G01`、`G31`、`G34`、`G35` + +## 1. 页面结构(从上到下) + +1. 顶部状态头图区 +2. 场景信息区 +3. 履约时间轴区 +4. 商品清单区 +5. 费用明细区 +6. 订单基础信息区 +7. 底部操作栏 + +## 2. 区块说明 + +### 2.1 顶部状态头图区 +- 展示当前状态文案与辅助说明 +- 示例: + - 待支付 + - 商家已接单 + - 制作中 + - 配送中 + - 待自提 + - 已完成 + - 退款中 + +### 2.2 场景信息区 +- 外卖:收货地址、骑手状态、预计送达 +- 自提:取餐码、取餐时间、门店信息 +- 堂食:桌号、门店、是否可继续加菜 + +### 2.3 履约时间轴区 +- 使用 `G34` +- 展示订单关键节点时间 + +### 2.4 商品清单区 +- 展示商品、规格、加料、数量 + +### 2.5 费用明细区 +- 使用 `G31` +- 展示所有金额构成 + +### 2.6 订单基础信息区 +- 展示订单号、下单时间、支付方式、支付时间等 + +### 2.7 底部操作栏 +- 使用 `G35` +- 动作随状态变化: + - 继续支付 + - 取消订单 + - 催单 + - 申请退款 + - 去评价 + - 再来一单 + +## 3. 页面状态 + +- 待支付态 +- 履约进行态 +- 已完成态 +- 退款中态 +- 已退款态 + +## 4. 实现备注 + +- 订单详情页是强状态页面,顶部状态区必须足够明确 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/12-退款申请页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/12-退款申请页.md new file mode 100644 index 0000000..ab411c4 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/12-退款申请页.md @@ -0,0 +1,46 @@ +# P06 退款申请页 + +- 页面编码:`P06` +- 页面层级:`二级页` +- 页面目标:让用户提交退款原因与说明,进入售后流程 +- 主要依赖组件:`G01` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 可退款订单摘要区 +3. 退款原因区 +4. 补充说明区 +5. 提交按钮区 + +## 2. 区块说明 + +### 2.1 可退款订单摘要区 +- 展示门店、订单号、商品摘要、当前可退金额 + +### 2.2 退款原因区 +- 提供预设原因列表 +- 例如: + - 商品与描述不符 + - 配送超时 + - 少送漏送 + - 不想要了 + - 其他原因 + +### 2.3 补充说明区 +- 文本输入框 +- 可选上传凭证图片(如另一位 AI 需要扩展) + +### 2.4 提交按钮区 +- 主按钮:提交退款申请 + +## 3. 页面状态 + +- 原因未选时按钮不可提交 +- 提交中显示 loading +- 提交成功后跳转 `P07 退款详情页` + +## 4. 实现备注 + +- 页面目标是低阻力提交,不宜放过多冗余字段 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/13-退款详情页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/13-退款详情页.md new file mode 100644 index 0000000..f881fdd --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/13-退款详情页.md @@ -0,0 +1,47 @@ +# P07 退款详情页 + +- 页面编码:`P07` +- 页面层级:`二级页` +- 页面目标:展示退款申请的当前处理状态、时间轴和处理结果 +- 主要依赖组件:`G01`、`G34` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 退款状态头图区 +3. 退款金额与原因区 +4. 退款时间轴区 +5. 订单关联信息区 + +## 2. 区块说明 + +### 2.1 退款状态头图区 +- 展示当前退款状态: + - 已提交 + - 处理中 + - 已退款 + - 已拒绝 +- 同时展示简要说明文案 + +### 2.2 退款金额与原因区 +- 展示退款金额 +- 展示退款原因与用户补充说明 + +### 2.3 退款时间轴区 +- 使用 `G34` +- 展示:申请时间、商家处理时间、退款完成时间等 + +### 2.4 订单关联信息区 +- 展示订单号、门店、商品摘要 +- 提供返回订单详情的入口 + +## 3. 页面状态 + +- 处理中 +- 已退款 +- 已拒绝 + +## 4. 实现备注 + +- 拒绝状态必须明确展示驳回原因 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/14-评价页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/14-评价页.md new file mode 100644 index 0000000..8a92463 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/14-评价页.md @@ -0,0 +1,56 @@ +# P08 评价页 + +- 页面编码:`P08` +- 页面层级:`二级页` +- 页面目标:完成订单评价,并引导商家回复与评价奖励闭环 +- 主要依赖组件:`G01` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 订单摘要区 +3. 星级评分区 +4. 快捷评价标签区 +5. 文本评价区 +6. 图片上传区 +7. 匿名开关区 +8. 提交按钮区 + +## 2. 区块说明 + +### 2.1 订单摘要区 +- 展示门店名称和商品摘要 + +### 2.2 星级评分区 +- 选择 1-5 星 +- 星级变化可联动文案提示 + +### 2.3 快捷评价标签区 +- 根据评分展示标签 +- 例如: + - 味道不错 + - 包装精致 + - 配送很快 + - 分量足 + +### 2.4 文本评价区 +- 支持自由输入评价内容 + +### 2.5 图片上传区 +- 支持晒单图片上传 + +### 2.6 匿名开关区 +- 允许用户匿名评价 + +### 2.7 提交按钮区 +- 主按钮:提交评价 + +## 3. 页面状态 + +- 未评分时按钮不可提交 +- 提交成功后提示是否返回订单详情或继续浏览 + +## 4. 实现备注 + +- 评价成功后可弹出“获得积分”提示,但不应阻塞主流程 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/15-领券中心页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/15-领券中心页.md new file mode 100644 index 0000000..4b7e161 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/15-领券中心页.md @@ -0,0 +1,42 @@ +# P09 领券中心页 + +- 页面编码:`P09` +- 页面层级:`二级页` +- 页面目标:集中展示可领取优惠券,并引导回到点餐使用 +- 主要依赖组件:`G01`、`G43` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 券分类筛选区 +3. 优惠券列表区 +4. 底部引导区 + +## 2. 区块说明 + +### 2.1 券分类筛选区 +- 可按全部、满减券、折扣券、免配送费券筛选 + +### 2.2 优惠券列表区 +- 使用 `G43` +- 每张券卡必须展示: + - 券名称 + - 金额 / 折扣 + - 使用门槛 + - 有效期 + - 适用门店 / 场景 + - 领取状态 + +### 2.3 底部引导区 +- 提供“去点餐”入口 + +## 3. 页面状态 + +- 默认态:有可领取券 +- 空态:无券可领 +- 已领取态:按钮改为已领取或去使用 + +## 4. 实现备注 + +- 领取动作应尽量轻量,领取成功后不强制跳转 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/16-秒杀活动页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/16-秒杀活动页.md new file mode 100644 index 0000000..5d1e577 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/16-秒杀活动页.md @@ -0,0 +1,41 @@ +# P10 秒杀活动页 + +- 页面编码:`P10` +- 页面层级:`二级页` +- 页面目标:承接强时效抢购活动,提升转化 +- 主要依赖组件:`G01`、`G21` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 秒杀头图区 +3. 场次切换区 +4. 秒杀商品列表区 + +## 2. 区块说明 + +### 2.1 秒杀头图区 +- 展示活动标题、主视觉、倒计时 + +### 2.2 场次切换区 +- 展示当前场次、即将开始场次、已结束场次 + +### 2.3 秒杀商品列表区 +- 商品卡展示: + - 商品图片 + - 秒杀价 + - 原价 + - 剩余库存 / 已售比例 + - 每单限购 + - 立即抢购 + +## 3. 页面状态 + +- 未开始态 +- 进行中态 +- 已结束态 + +## 4. 实现备注 + +- 秒杀页要突出时间紧迫感和库存稀缺感 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/17-限时折扣活动页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/17-限时折扣活动页.md new file mode 100644 index 0000000..026199f --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/17-限时折扣活动页.md @@ -0,0 +1,43 @@ +# P11 限时折扣活动页 + +- 页面编码:`P11` +- 页面层级:`二级页` +- 页面目标:承接限时折扣活动,集中展示折扣商品 +- 主要依赖组件:`G01`、`G21` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 活动头图区 +3. 活动时间筛选区 +4. 折扣商品列表区 + +## 2. 区块说明 + +### 2.1 活动头图区 +- 展示活动标题、当前折扣主题、时间说明 + +### 2.2 活动时间筛选区 +- 当前进行中 +- 即将开始 +- 已结束 + +### 2.3 折扣商品列表区 +- 商品卡展示: + - 图片 + - 商品名称 + - 折扣价 + - 原价 + - 折扣力度 + - 立即购买 + +## 3. 页面状态 + +- 进行中:可购买 +- 未开始:展示开始时间 +- 已结束:置灰展示 + +## 4. 实现备注 + +- 与秒杀页相比,限时折扣页要弱化“抢”,强化“省” + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/18-会员中心页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/18-会员中心页.md new file mode 100644 index 0000000..2756984 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/18-会员中心页.md @@ -0,0 +1,47 @@ +# P12 会员中心页 + +- 页面编码:`P12` +- 页面层级:`二级页` +- 页面目标:展示会员等级、成长值、权益和升级路径 +- 主要依赖组件:`G01`、`G40` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 会员头部卡 +3. 成长值进度区 +4. 权益总览区 +5. 等级说明区 +6. 会员日 / 生日权益区 + +## 2. 区块说明 + +### 2.1 会员头部卡 +- 展示头像、昵称、当前会员等级、等级标识 + +### 2.2 成长值进度区 +- 展示当前成长值 +- 展示距离下一等级差值 + +### 2.3 权益总览区 +- 展示当前可享权益: + - 会员折扣 + - 积分倍率 + - 生日权益 + - 会员日权益 + +### 2.4 等级说明区 +- 展示各等级及对应权益 + +### 2.5 会员日 / 生日权益区 +- 单独说明会员日和生日特权 + +## 3. 页面状态 + +- 已登录会员态 +- 未登录提示态 + +## 4. 实现备注 + +- 会员中心要重点突出“当前能享受什么”和“如何升级” + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/19-积分商城页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/19-积分商城页.md new file mode 100644 index 0000000..b44d497 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/19-积分商城页.md @@ -0,0 +1,44 @@ +# P13 积分商城页 + +- 页面编码:`P13` +- 页面层级:`二级页` +- 页面目标:展示积分余额、可兑换商品和兑换记录 +- 主要依赖组件:`G01` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 积分余额头部区 +3. Tab 切换区 +4. 兑换商品列表区 / 兑换记录区 + +## 2. 区块说明 + +### 2.1 积分余额头部区 +- 展示当前积分余额 +- 展示积分获取说明入口(可选) + +### 2.2 Tab 切换区 +- 兑换商品 +- 兑换记录 + +### 2.3 兑换商品列表区 +- 商品卡展示: + - 商品图片 + - 商品名称 + - 所需积分 + - 库存 / 数量说明 + - 立即兑换 + +### 2.4 兑换记录区 +- 展示兑换时间、兑换内容、状态 + +## 3. 页面状态 + +- 默认态:有商品可兑 +- 空态:暂无可兑换商品 + +## 4. 实现备注 + +- 积分商城强调“积分能干什么”,不要只展示数值 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/20-储值充值页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/20-储值充值页.md new file mode 100644 index 0000000..3711ff1 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/20-储值充值页.md @@ -0,0 +1,44 @@ +# P14 储值充值页 + +- 页面编码:`P14` +- 页面层级:`二级页` +- 页面目标:展示储值余额、充值方案和充值记录 +- 主要依赖组件:`G01`、`G44` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 储值余额区 +3. 充值方案区 +4. 充值记录区 +5. 底部支付区 + +## 2. 区块说明 + +### 2.1 储值余额区 +- 展示当前可用余额 +- 可补充说明实充与赠送余额(如有) + +### 2.2 充值方案区 +- 使用 `G44` +- 每张方案卡展示: + - 充值金额 + - 赠送金额 + - 到账金额 + +### 2.3 充值记录区 +- 展示最近充值记录 +- 包含:时间、支付方式、到账金额 + +### 2.4 底部支付区 +- 主按钮:立即充值 + +## 3. 页面状态 + +- 默认态:有方案可选 +- 空态:暂无充值方案 + +## 4. 实现备注 + +- 充值金额、赠送金额、到账金额三者必须同时可见 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/21-次卡页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/21-次卡页.md new file mode 100644 index 0000000..0414e76 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/21-次卡页.md @@ -0,0 +1,38 @@ +# P15 次卡页 + +- 页面编码:`P15` +- 页面层级:`二级页` +- 页面目标:展示可购买次卡、已购次卡和核销记录 +- 主要依赖组件:`G01`、`G45` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. Tab 切换区 +3. 次卡列表区 + +## 2. 区块说明 + +### 2.1 Tab 切换区 +- 可购买次卡 +- 我的次卡 +- 使用记录(可选) + +### 2.2 次卡列表区 +- 使用 `G45` +- 次卡卡片展示: + - 次卡名称 + - 适用范围 + - 有效期 + - 剩余次数 / 总次数 + - 购买或查看详情按钮 + +## 3. 页面状态 + +- 默认态:有可购或已购次卡 +- 空态:暂无次卡 + +## 4. 实现备注 + +- 次卡页需要把“适用什么商品”和“还剩几次”表达清楚 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/22-消息中心页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/22-消息中心页.md new file mode 100644 index 0000000..50cbc06 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/22-消息中心页.md @@ -0,0 +1,39 @@ +# P16 消息中心页 + +- 页面编码:`P16` +- 页面层级:`二级页` +- 页面目标:集中查看订单消息、营销消息和系统通知 +- 主要依赖组件:`G01`、`G46` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 消息分类切换区 +3. 消息列表区 + +## 2. 区块说明 + +### 2.1 消息分类切换区 +- 全部 +- 订单消息 +- 营销消息 +- 系统通知 + +### 2.2 消息列表区 +- 使用 `G46` +- 每条消息展示: + - 标题 + - 摘要 + - 时间 + - 未读状态 +- 点击消息跳转到对应业务页面 + +## 3. 页面状态 + +- 默认态:有消息 +- 空态:暂无消息 + +## 4. 实现备注 + +- 消息要支持按读写状态区分,但不需要复杂会话系统 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/23-帮助中心页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/23-帮助中心页.md new file mode 100644 index 0000000..414bd1a --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/23-帮助中心页.md @@ -0,0 +1,44 @@ +# P17 帮助中心页 + +- 页面编码:`P17` +- 页面层级:`二级页` +- 页面目标:承接常见问题、规则说明和客服联系 +- 主要依赖组件:`G01` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 常见问题区 +3. 专题帮助区 +4. 联系客服区 + +## 2. 区块说明 + +### 2.1 常见问题区 +- 以折叠列表形式展示 +- 建议覆盖: + - 如何下单 + - 如何使用优惠券 + - 如何申请退款 + - 如何查看取餐码 + +### 2.2 专题帮助区 +- 支付帮助 +- 配送帮助 +- 自提帮助 +- 堂食帮助 +- 会员与资产帮助 + +### 2.3 联系客服区 +- 在线客服入口 +- 电话客服入口 + +## 3. 页面状态 + +- 默认态即可 +- 若帮助内容为空,则展示联系客服入口 + +## 4. 实现备注 + +- 帮助中心主要作为兜底服务页,不需要复杂交互 + diff --git a/Cend-MiniProgram-Prototype/docs/07-页面规格/24-堂食扫码确认页.md b/Cend-MiniProgram-Prototype/docs/07-页面规格/24-堂食扫码确认页.md new file mode 100644 index 0000000..023ae06 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/07-页面规格/24-堂食扫码确认页.md @@ -0,0 +1,47 @@ +# P18 堂食扫码确认页 + +- 页面编码:`P18` +- 页面层级:`二级页` +- 页面目标:在扫码后确认门店与桌号,并把用户送入堂食点餐页 +- 主要依赖组件:`G01`、`G12` + +## 1. 页面结构(从上到下) + +1. 顶部导航栏 +2. 扫码结果确认卡 +3. 堂食规则说明区 +4. 当前桌台状态区(可选) +5. 主操作区 + +## 2. 区块说明 + +### 2.1 扫码结果确认卡 +- 展示: + - 门店名称 + - 桌号 / 桌台编号 + - 是否可点餐 + +### 2.2 堂食规则说明区 +- 展示: + - 是否先付款 + - 是否支持加菜 + - 是否支持合单 + - 结账方式说明 + +### 2.3 当前桌台状态区 +- 如已有订单,可提示当前桌存在进行中订单 + +### 2.4 主操作区 +- 主按钮:进入堂食点餐 +- 次按钮:重新扫码 / 切换桌号(如需要) + +## 3. 页面状态 + +- 正常可入桌 +- 桌号失效 +- 当前桌不可用 + +## 4. 实现备注 + +- 该页要尽量减少用户输入,优先自动确认门店和桌号 + diff --git a/Cend-MiniProgram-Prototype/docs/08-全周期版本规划与范围分层.md b/Cend-MiniProgram-Prototype/docs/08-全周期版本规划与范围分层.md new file mode 100644 index 0000000..c431bc1 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/08-全周期版本规划与范围分层.md @@ -0,0 +1,264 @@ +# 全周期版本规划与范围分层 + +- 文档版本:`V1.0` +- 适用项目:`TakeoutSaaS` 小程序 C 端 +- 文档目标:基于现有租户后台能力与 C 端页面规格,定义小程序从原型期到成熟期的完整版本路径 + +--- + +## 1. 文档目的 + +本文件不再只回答“一期先做什么”,而是回答以下 3 个问题: + +1. 小程序 C 端全周期应该按什么节奏推进 +2. 每个版本解决什么用户问题、承接什么后台能力 +3. 哪些能力属于当前页内实现,哪些能力属于未来扩展 + +本文件与 `docs/05-页面清单总表.md`、`docs/09-租户后台与C端功能映射总表.md`、`docs/10-全周期研发实施顺序与交付清单.md` 配合使用。 + +--- + +## 2. 全周期总览 + +| 阶段 | 版本建议 | 阶段定位 | 核心目标 | 对应价值 | +| --- | --- | --- | --- | --- | +| G0 | 原型规划期 | 文档与原型收口 | 把页面、路由、组件、流程、业务规则定清楚 | 降低后续返工 | +| G1 | `V1.0` 核心交易版 | 先跑通交易主闭环 | 顾客能完成选店、点餐、结算、支付、查订单 | 建立基础下单能力 | +| G2 | `V1.1` 履约服务版 | 补全场景与售后 | 顾客能退款、评价、自提、堂食扫码点餐 | 提升服务完整度 | +| G3 | `V2.0` 会员资产版 | 建立复购资产池 | 顾客能使用会员、优惠券、积分、储值、次卡 | 提升留存与复购 | +| G4 | `V2.1` 营销增长版 | 做活动承接与增长 | 顾客能参与新客礼、满减、秒杀、限时折扣等活动 | 提升转化与拉新 | +| G5 | `V3.0` 精细运营版 | 进入精细化经营 | 做消息触达、个性化推荐、服务中心、深度数据联动 | 提升 LTV 与运营效率 | + +--- + +## 3. 各阶段详细范围 + +## 3.1 G0 原型规划期 + +### 阶段目标 +- 完成 C 端页面地图、交互流、页面规格、业务规则与组件清单 +- 对齐租户后台已有能力与 C 端承接关系 +- 为后续 UI 设计、开发实现、接口对接提供统一母文档 + +### 当前应交付内容 +- `docs/01-文档导航与实施顺序.md` +- `docs/02-信息架构与路由.md` +- `docs/03-全局业务规则.md` +- `docs/04-核心用户流程.md` +- `docs/05-页面清单总表.md` +- `docs/06-通用组件清单.md` +- `docs/07-页面规格/` +- `docs/08-10` 规划类文档 + +### 阶段完成标准 +- 产品、设计、开发对页面范围与先后顺序没有歧义 +- 每个页面都有明确入口、出口和状态要求 +- 页面与后台能力关系可追溯 + +--- + +## 3.2 G1 `V1.0` 核心交易版 + +### 阶段定位 +先做“顾客下单主闭环”,目标不是一次做全,而是先把最核心的交易能力跑通。 + +### 目标用户问题 +- 顾客能否快速找到门店并进入正确点餐场景 +- 顾客能否快速选品、加购、结算、支付 +- 顾客付款后能否看到自己的订单和状态 + +### 版本范围 + +#### 核心页面 +- `T01 首页` +- `T02 点餐页` +- `T03 订单页` +- `T04 我的页(基础版)` +- `C01 商品详情抽屉` +- `C02 购物车抽屉` +- `P03 结算确认页` +- `P04 支付成功页` +- `P05 订单详情页` +- `P18 堂食扫码确认页` + +#### 必要支撑页 +- `P01 门店选择页(轻量版)` +- `P02 地址管理页(基础版)` + +#### 核心能力 +- 门店选择与场景切换 +- 商品分类浏览与商品详情选择 +- 规格、加料、数量联动 +- 购物车与金额汇总 +- 结算页金额明细展示 +- 微信支付占位与支付成功回流 +- 订单列表、订单详情、基础状态表达 + +### 本阶段不追求 +- 完整会员资产闭环 +- 全部营销会场与复杂优惠组合 +- 售后评价全部细节 +- 精细化消息与推荐系统 + +### 成功标准 +- 顾客可以从首页进入交易链路并形成订单 +- 外卖、自提、堂食 3 种场景至少完成基础差异表达 +- 下单后可在订单页和订单详情页找到订单 + +--- + +## 3.3 G2 `V1.1` 履约服务版 + +### 阶段定位 +在 `V1.0` 基础上,把履约透明度与售后能力补齐,让小程序具备完整服务体验。 + +### 版本范围 +- `P06 退款申请页` +- `P07 退款详情页` +- `P08 评价页` +- 回补 `T03 订单页` +- 回补 `P05 订单详情页` + +### 核心能力 +- 待支付继续支付 / 取消订单 +- 订单履约时间轴 +- 外卖配送、自提取餐码、堂食桌号展示 +- 退款申请、退款状态查询 +- 订单评价、匿名评价、晒图评价 +- 再来一单入口 + +### 成功标准 +- 顾客知道订单当前走到哪一步 +- 顾客能看见退款入口、处理进度和结果 +- 已完成订单能评价,评价后能回流到订单或复购场景 + +--- + +## 3.4 G3 `V2.0` 会员资产版 + +### 阶段定位 +从“做完订单”升级到“让顾客愿意回来”,建立用户资产和长期关系。 + +### 版本范围 +- `T04 我的页(完整版)` +- `P09 领券中心页` +- `P12 会员中心页` +- `P13 积分商城页` +- `P14 储值充值页` +- `P15 次卡页` + +### 核心能力 +- 展示会员等级、成长值、权益、会员日信息 +- 展示并领取优惠券 +- 展示积分余额、积分获取与兑换能力 +- 展示储值方案、充值记录、余额支付入口 +- 展示次卡购买、核销、剩余次数 +- 让资产在结算页有实际承接入口 + +### 成功标准 +- “我的”页不再只是资料页,而是复购与留存中心 +- 顾客能理解自己拥有哪些资产、如何使用这些资产 +- 会员资产与结算页面存在清晰闭环 + +--- + +## 3.5 G4 `V2.1` 营销增长版 + +### 阶段定位 +从“顾客可复购”升级到“商家可持续做增长”,让后台营销能力在前台有承接页和转化路径。 + +### 版本范围 +- `P10 秒杀活动页` +- `P11 限时折扣活动页` +- 回补首页活动区与点餐页活动承接 +- 回补领券中心与结算优惠展示 +- 接入新客有礼、满减活动、活动日历类运营能力 + +### 核心能力 +- 新客礼包导流 +- 满减自动命中与说明 +- 秒杀会场与倒计时表达 +- 限时折扣专区与商品承接 +- 首页 Banner、活动宫格、专题入口 +- 老客复购推荐、最近下单商品推荐 + +### 成功标准 +- 商家配置的营销活动能在 C 端被顾客感知并参与 +- 活动不只是“展示”,而是能引导进店、加购、结算和支付 + +--- + +## 3.6 G5 `V3.0` 精细运营版 + +### 阶段定位 +从“有交易、有增长”升级到“有精细化经营能力”,让 C 端不仅承接交易,也承接服务和用户经营。 + +### 建议范围 +- `P16 消息中心页` +- `P17 帮助中心页` +- 回补首页个性化推荐与用户画像相关模块 +- 回补“我的”页服务区、消息区、客服区 +- 规划未来扩展:发票、客服、投诉、电子会员码、常购清单、个性化券包 + +### 核心能力 +- 订单消息、营销消息、系统通知的聚合触达 +- FAQ、客服、售后帮助、自助指引 +- 基于顾客历史订单和会员标签的商品推荐 +- 基于活动日历与用户标签的个性化营销承接 +- 为未来 CRM、财务票据、顾客洞察留前台入口 + +### 成功标准 +- 小程序从“下单工具”升级为“用户经营载体” +- 顾客在 C 端能获取服务、消息、活动、资产、订单等全维度体验 + +--- + +## 4. 全周期能力分层 + +| 能力域 | 说明 | 主要版本 | +| --- | --- | --- | +| 交易域 | 选店、点餐、购物车、结算、支付、订单 | `V1.0` | +| 履约域 | 配送、自提、堂食、时间轴、退款、评价 | `V1.1` | +| 资产域 | 会员、优惠券、积分、储值、次卡 | `V2.0` | +| 增长域 | 新客礼、满减、秒杀、限时折扣、复购推荐 | `V2.1` | +| 服务域 | 消息、帮助、客服、服务入口 | `V3.0` | +| 经营域 | 个性化推荐、顾客标签、票据与更多增值能力 | `V3.0+` | + +--- + +## 5. 各版本之间的依赖关系 + +1. `V1.0` 是所有后续版本的底座,没有交易闭环,后续资产和营销没有承接意义 +2. `V1.1` 解决“下单后怎么办”,否则订单体验不完整 +3. `V2.0` 解决“顾客为什么愿意回来”,是复购的基础 +4. `V2.1` 解决“商家如何主动做增长”,是运营放大的关键 +5. `V3.0` 解决“如何长期经营顾客关系”,是品牌化和精细运营的关键 + +--- + +## 6. 推荐落地原则 + +### 6.1 不要按页面数量推进,要按闭环推进 +- 优先级不取决于页面多不多,而取决于是否能形成业务闭环 + +### 6.2 不要把所有后台能力一次前置到 C 端 +- 后台配置能力很多,但前台承接必须按用户价值和转化优先级上线 + +### 6.3 每个版本都要有明确“上线后可验证的结果” +- `V1.0` 看下单成功率与订单可见性 +- `V1.1` 看退款与评价路径是否清晰 +- `V2.0` 看资产使用率与复购率 +- `V2.1` 看活动参与率与转化率 +- `V3.0` 看消息触达率、留存和用户活跃度 + +--- + +## 7. 与现有文档的关系 + +- `docs/02-信息架构与路由.md` 负责定义“页面怎么挂” +- `docs/03-全局业务规则.md` 负责定义“业务怎么跑” +- `docs/04-核心用户流程.md` 负责定义“顾客怎么走” +- `docs/05-页面清单总表.md` 负责定义“有哪些页面” +- `docs/08` 负责定义“整个项目分几期做” +- `docs/09` 负责定义“后台能力如何映射到 C 端” +- `docs/10` 负责定义“研发实施时先做什么、交付什么” diff --git a/Cend-MiniProgram-Prototype/docs/09-租户后台与C端功能映射总表.md b/Cend-MiniProgram-Prototype/docs/09-租户后台与C端功能映射总表.md new file mode 100644 index 0000000..4fb3608 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/09-租户后台与C端功能映射总表.md @@ -0,0 +1,246 @@ +# 租户后台与 C 端功能映射总表 + +- 文档版本:`V1.0` +- 适用项目:`TakeoutSaaS` 租户后台 / 小程序 C 端 +- 文档目标:把租户后台现有模块,按“直接承接 / 间接支撑 / 未来扩展”映射到 C 端小程序 + +--- + +## 1. 文档目的 + +租户后台回答的是“商家如何配置与运营”,C 端回答的是“顾客如何感知与使用这些配置”。 + +因此,本文件的作用是: + +1. 明确后台每个模块对 C 端的影响范围 +2. 明确哪些能力应该直接前置给顾客 +3. 明确哪些能力只作为 C 端背后的数据或配置支撑 +4. 为接口对接、页面设计、版本规划提供统一映射依据 + +--- + +## 2. 映射原则 + +### 2.1 直接承接 +后台能力在 C 端有明确页面、入口或状态表达,例如:门店营业时间、商品规格、订单状态、优惠券。 + +### 2.2 间接支撑 +后台能力不会单独出现在 C 端页面上,但会影响推荐、展示、状态或运营策略,例如:顾客画像、财务结算报表。 + +### 2.3 未来扩展 +当前文档未单独建设对应页面,但未来可规划 C 端能力,例如:电子发票、客服工单、精细化标签券包。 + +--- + +## 3. 总映射矩阵 + +| 后台域 | 后台能力 | C 端承接页面 / 组件 | 承接方式 | 主要版本 | 说明 | +| --- | --- | --- | --- | --- | --- | +| 商户域 | 商户中心、品牌设置 | 首页、我的、帮助中心 | 间接支撑 | `V1.0` / `V3.0` | 影响品牌名、Logo、门店说明、客服电话、品牌文案 | +| 门店域 | 门店列表 | 首页、门店选择页、点餐页头部 | 直接承接 | `V1.0` | 顾客必须先选门店再点餐 | +| 门店域 | 营业时间 | 首页、门店卡、点餐页、订单页 | 直接承接 | `V1.0` | 影响营业中、休息中、即将打烊等状态 | +| 门店域 | 配送设置 | 首页、结算页、地址选择 | 直接承接 | `V1.0` | 影响配送范围、起送门槛、配送方式 | +| 门店域 | 自提设置 | 首页、结算页、订单详情 | 直接承接 | `V1.0` / `V1.1` | 影响自提时间、取餐说明、取餐规则 | +| 门店域 | 费用设置 | 商品详情、结算页 | 直接承接 | `V1.0` | 影响打包费、餐具费、配送费、起送价 | +| 门店域 | 堂食管理 | 堂食扫码确认页、点餐页、订单详情 | 直接承接 | `V1.0` / `V1.1` | 影响桌号、堂食规则、是否可加菜 | +| 门店域 | 员工排班 | 订单时效、帮助中心说明 | 间接支撑 | `V1.1` / `V3.0` | 不单独前置,但影响顾客对服务时效感知 | +| 商品域 | 商品列表 | 点餐页、首页推荐区 | 直接承接 | `V1.0` | 形成点餐主列表 | +| 商品域 | 分类管理 | 点餐页左侧分类 / 顶部分类 | 直接承接 | `V1.0` | 决定菜单组织方式 | +| 商品域 | 规格做法 | 商品详情抽屉 | 直接承接 | `V1.0` | 决定 SKU 价格与库存表现 | +| 商品域 | 加料管理 | 商品详情抽屉 | 直接承接 | `V1.0` | 决定加料项、价格变化 | +| 商品域 | 商品标签 | 首页推荐卡、商品卡片、详情抽屉 | 直接承接 | `V1.0` / `V2.1` | 热销、新品、招牌等标签直接影响转化 | +| 商品域 | 时段供应 | 点餐页、商品详情抽屉 | 直接承接 | `V1.0` | 决定商品是否可售 | +| 商品域 | 批量工具 | 无独立 C 端页面 | 间接支撑 | - | 只影响商家运营效率,不前置给顾客 | +| 订单域 | 订单大厅 | 订单页、订单详情页 | 直接承接 | `V1.0` / `V1.1` | C 端看到的是顾客维度订单状态表达 | +| 订单域 | 全部订单 | 订单页、订单搜索、订单详情 | 直接承接 | `V1.0` | 承接顾客找单、查单、继续支付 | +| 营销域 | 优惠券 | 领券中心、结算页优惠选择、我的页资产摘要 | 直接承接 | `V2.0` | 领券与用券是资产与增长的共同入口 | +| 营销域 | 满减活动 | 首页活动入口、结算页自动命中 | 直接承接 | `V2.1` | 顾客未必单独配置,但必须感知结果 | +| 营销域 | 新客有礼 | 首页新客入口、结算页自动带入 | 直接承接 | `V2.1` | 新用户拉新核心抓手 | +| 营销域 | 秒杀 | 秒杀活动页、首页会场、点餐页商品卡 | 直接承接 | `V2.1` | 强时效型营销场景 | +| 营销域 | 限时折扣 | 限时折扣页、首页专区、点餐页标签 | 直接承接 | `V2.1` | 影响商品展示和结算价格 | +| 营销域 | 集点 / 打卡 | 次卡页、活动页、我的页资产区 | 直接承接 / 未来扩展 | `V2.1` / `V3.0` | 当前可先做活动表达,后续做完整任务体系 | +| 营销域 | 营销日历 | 首页 Banner、活动日程、消息提醒 | 间接支撑 | `V2.1` / `V3.0` | 主要影响前台活动编排与触达节奏 | +| 会员域 | 会员管理 | 我的页、会员中心页、结算页会员权益提示 | 直接承接 | `V2.0` | 顾客感知的是等级、折扣、权益 | +| 会员域 | 积分商城 | 积分商城页、结算积分抵扣、我的页摘要 | 直接承接 | `V2.0` | 形成积分获取与消耗闭环 | +| 会员域 | 储值卡 | 储值充值页、结算余额支付、我的页摘要 | 直接承接 | `V2.0` | 支撑充值和余额消费 | +| 会员域 | 消息触达 | 消息中心、我的页红点、活动提醒 | 直接承接 / 间接支撑 | `V3.0` | 支撑订单消息、营销消息、系统通知 | +| 顾客域 | 顾客列表 | 无独立顾客页 | 间接支撑 | `V3.0` | 主要服务后台运营和标签管理 | +| 顾客域 | 顾客画像 | 首页推荐、复购推荐、券包推荐 | 间接支撑 | `V3.0` | 不直接给顾客看“画像”,但会影响推荐结果 | +| 顾客域 | 顾客分析 | 首页个性化、我的页推荐服务 | 间接支撑 | `V3.0` | 作为精细化运营的推荐输入 | +| 财务域 | 财务概览 | 无直接前台页 | 间接支撑 | - | 服务后台经营分析,不直接前置 | +| 财务域 | 交易流水 | 订单金额、余额记录、储值记录 | 间接支撑 | `V2.0` / `V3.0` | 顾客可见的是“订单金额 / 储值记录”子集 | +| 财务域 | 发票管理 | 订单详情未来入口 | 未来扩展 | `V3.0+` | 当前文档未建设,可作为后续增值服务 | +| 财务域 | 成本 / 结算 / 报表 | 无直接前台页 | 间接支撑 | - | 只服务商家与平台管理 | +| 仪表盘域 | 经营概览 | 无直接前台页 | 间接支撑 | - | 不对顾客展示,但可反哺推荐和活动策略 | + +--- + +## 4. 分域详细映射 + +## 4.1 商户与门店域 + +### 后台来源 +- 商户中心 +- 门店列表 +- 营业时间 +- 配送设置 +- 自提设置 +- 费用设置 +- 堂食管理 + +### C 端主要承接点 +- `T01 首页` +- `T02 点餐页` +- `P01 门店选择页` +- `P02 地址管理页` +- `P03 结算确认页` +- `P05 订单详情页` +- `P18 堂食扫码确认页` + +### 说明 +- 这是 C 端最基础的配置域 +- 没有门店域能力,商品、订单、营销都无法成立 +- 该域直接决定三场景差异:`delivery`、`pickup`、`dine_in` + +--- + +## 4.2 商品域 + +### 后台来源 +- 商品列表 +- 分类管理 +- 规格做法 +- 加料管理 +- 商品标签 +- 时段供应 + +### C 端主要承接点 +- `T02 点餐页` +- `C01 商品详情抽屉` +- `C02 购物车抽屉` +- 首页推荐区 / 活动区 + +### 说明 +- 商品域决定“顾客能买什么、怎么买、什么时候能买” +- 规格、加料、标签、时段供应必须在 C 端有明确视觉反馈 + +--- + +## 4.3 订单与履约域 + +### 后台来源 +- 订单大厅 +- 全部订单 +- 订单状态流转 + +### C 端主要承接点 +- `T03 订单页` +- `P05 订单详情页` +- `P06 退款申请页` +- `P07 退款详情页` +- `P08 评价页` + +### 说明 +- 后台关心接单、出餐、配送;C 端关心“我现在要做什么、还要等多久、能不能退款” +- 因此,同一个订单状态,在 C 端需要翻译成顾客可理解的文案与动作按钮 + +--- + +## 4.4 营销域 + +### 后台来源 +- 优惠券 +- 满减活动 +- 新客有礼 +- 秒杀 +- 限时折扣 +- 集点 / 打卡 +- 营销日历 + +### C 端主要承接点 +- `T01 首页` +- `T02 点餐页` +- `P09 领券中心页` +- `P10 秒杀活动页` +- `P11 限时折扣活动页` +- `P03 结算确认页` +- `T04 我的页` + +### 说明 +- 营销域不是“独立存在”的,它必须嵌入首页、点餐、结算、我的这几个核心页面 +- 真正的设计重点不是活动页本身,而是活动如何导流到商品和支付 + +--- + +## 4.5 会员资产域 + +### 后台来源 +- 会员管理 +- 积分商城 +- 储值卡 +- 消息触达 + +### C 端主要承接点 +- `T04 我的页` +- `P12 会员中心页` +- `P13 积分商城页` +- `P14 储值充值页` +- `P15 次卡页` +- `P16 消息中心页` +- `P03 结算确认页` + +### 说明 +- 会员资产域是“我的”页成为留存中心的关键 +- 所有资产页都不能只做展示,必须回流到点餐页或结算页形成使用闭环 + +--- + +## 4.6 顾客、财务、分析域 + +### 后台来源 +- 顾客列表 +- 顾客画像 +- 顾客分析 +- 财务概览 +- 交易流水 +- 报表、结算、成本、发票 + +### C 端承接方式 +- 当前以间接支撑为主 +- 未来可扩展的顾客可见能力包括: + - 个性化推荐 + - 常购商品 + - 专属券包 + - 消费记录摘要 + - 电子发票入口 + +### 说明 +- 这部分不建议在早期版本大量前置 +- 它更适合作为 `V3.0` 之后的精细化经营能力输入源 + +--- + +## 5. 当前文档范围内的直接映射优先级 + +### 第一优先级:必须先映射到 C 端 +- 门店域 +- 商品域 +- 订单域 + +### 第二优先级:交易闭环稳定后映射 +- 会员资产域 +- 核心营销域 + +### 第三优先级:后续精细化再映射 +- 顾客分析域 +- 财务增值域 +- 更复杂的消息触达与个性化能力 + +--- + +## 6. 设计与研发使用建议 + +1. 做页面设计时,不要只看后台名称,要看顾客是否真的需要感知这个能力 +2. 做接口对接时,不要把后台对象原封不动搬到前台,要翻译成顾客任务语言 +3. 做版本规划时,优先上线能影响下单、履约、复购的映射项 +4. 如果某个后台能力当前没有对应的顾客价值,就先作为支撑能力,不强行做前台页面 diff --git a/Cend-MiniProgram-Prototype/docs/10-全周期研发实施顺序与交付清单.md b/Cend-MiniProgram-Prototype/docs/10-全周期研发实施顺序与交付清单.md new file mode 100644 index 0000000..1c51ce1 --- /dev/null +++ b/Cend-MiniProgram-Prototype/docs/10-全周期研发实施顺序与交付清单.md @@ -0,0 +1,311 @@ +# 全周期研发实施顺序与交付清单 + +- 文档版本:`V1.0` +- 适用项目:`TakeoutSaaS` 小程序 C 端 +- 文档目标:给设计、前端、接口、测试一个统一的落地顺序,避免“页面很多但不知道先做什么” + +--- + +## 1. 文档目的 + +本文件回答 4 个问题: + +1. 全周期应该按什么实施顺序推进 +2. 每一阶段需要产出什么交付物 +3. 每一阶段达到什么标准才算可以进入下一阶段 +4. 如果是 AI 或个人开发,也能按什么顺序稳步落地 + +--- + +## 2. 推荐实施总节奏 + +| 阶段 | 名称 | 主要目标 | 核心交付 | +| --- | --- | --- | --- | +| S0 | 范围收口 | 定边界、定版本、定文档母版 | 08/09/10 规划文档、页面优先级 | +| S1 | 信息架构与设计基线 | 定路由、定组件、定设计规则 | 低保真、组件清单、状态矩阵 | +| S2 | 交易主链路开发 | 跑通首页到支付成功 | 首页、点餐、抽屉、结算、订单 | +| S3 | 履约与售后开发 | 补齐订单服务链路 | 退款、评价、状态时间轴 | +| S4 | 我的与资产开发 | 形成复购资产闭环 | 会员、积分、储值、次卡、领券 | +| S5 | 增长与活动开发 | 把营销能力前置到顾客端 | 秒杀、折扣、新客礼、活动入口 | +| S6 | 服务与消息开发 | 补齐服务能力和长期经营能力 | 消息、帮助、推荐、服务区 | +| S7 | 联调验收与上线准备 | 全局走查和交付 | 联调清单、验收清单、演示脚本 | + +--- + +## 3. 各阶段实施顺序 + +## 3.1 S0 范围收口 + +### 目标 +- 把“要做什么”和“先做什么”收口 + +### 必做事项 +1. 确认版本分期:`V1.0` / `V1.1` / `V2.0` / `V2.1` / `V3.0` +2. 确认页面优先级:P0 / P1 / P2 +3. 确认三场景:外卖 / 自提 / 堂食 +4. 确认后台到前台映射关系 + +### 必交付物 +- `docs/08-全周期版本规划与范围分层.md` +- `docs/09-租户后台与C端功能映射总表.md` +- `docs/10-全周期研发实施顺序与交付清单.md` +- 页面优先级结论 + +### 完成标准 +- 团队已明确“本期不做什么” +- 没有人再按自己理解任意扩散页面 + +--- + +## 3.2 S1 信息架构与设计基线 + +### 目标 +- 让后续页面开发不再重复讨论结构问题 + +### 必做事项 +1. 确认 4 个 Tab 与全部二级页路由 +2. 确认页面模板:Tab 页、二级页、抽屉、弹层 +3. 确认全局设计 Token:颜色、字号、间距、圆角、按钮层级 +4. 确认页面状态矩阵:默认态、空态、加载态、错误态、禁用态 +5. 确认三场景差异矩阵:外卖 / 自提 / 堂食 + +### 必交付物 +- 页面低保真骨架 +- 全局设计基线 +- 页面状态矩阵 +- 场景差异矩阵 +- 通用组件清单的可实现版本 + +### 完成标准 +- 任意页面都能用统一模板快速搭出骨架 +- 新页面设计不会脱离现有模式 + +--- + +## 3.3 S2 交易主链路开发 + +### 目标 +- 先跑通“选店 → 点餐 → 结算 → 支付 → 查单” + +### 开发顺序 +1. `T01 首页` +2. `P01 门店选择页` +3. `T02 点餐页` +4. `C01 商品详情抽屉` +5. `C02 购物车抽屉` +6. `P02 地址管理页` +7. `P03 结算确认页` +8. `P04 支付成功页` +9. `T03 订单页` +10. `P05 订单详情页` +11. `T04 我的页(基础版)` +12. `P18 堂食扫码确认页` + +### 必交付物 +- 路由可跳转的交易闭环 +- 商品与购物车 mock 数据 +- 结算金额计算占位逻辑 +- 订单状态 mock 数据 +- 三场景基础差异展示 + +### 验收重点 +- 能否从首页顺利进入点餐和结算 +- 能否看清价格、优惠和实付金额 +- 能否支付成功后找到订单 + +--- + +## 3.4 S3 履约与售后开发 + +### 目标 +- 补齐订单后半段体验 + +### 开发顺序 +1. 回补 `T03 订单页` 状态筛选 +2. 回补 `P05 订单详情页` 履约时间轴与操作区 +3. `P06 退款申请页` +4. `P07 退款详情页` +5. `P08 评价页` + +### 必交付物 +- 状态时间轴 +- 退款链路 +- 评价链路 +- 再来一单入口 + +### 验收重点 +- 用户能否快速理解订单当前状态 +- 用户能否找到退款入口和评价入口 + +--- + +## 3.5 S4 我的与资产开发 + +### 目标 +- 把“我的”页做成留存与复购中心 + +### 开发顺序 +1. 回补 `T04 我的页` +2. `P12 会员中心页` +3. `P09 领券中心页` +4. `P13 积分商城页` +5. `P14 储值充值页` +6. `P15 次卡页` + +### 必交付物 +- 我的页用户头部与资产摘要 +- 会员权益表达 +- 券、积分、储值、次卡结构页 +- 与结算页联动入口 + +### 验收重点 +- 资产页是不是只“展示”没有“回流” +- 结算页能否承接资产的使用语境 + +--- + +## 3.6 S5 增长与活动开发 + +### 目标 +- 把后台营销能力转化为前台可感知、可转化的页面能力 + +### 开发顺序 +1. 回补首页活动区 +2. `P10 秒杀活动页` +3. `P11 限时折扣活动页` +4. 回补点餐页活动标签与活动商品专区 +5. 回补结算页优惠命中说明 +6. 回补我的页活动与券入口 + +### 必交付物 +- 活动承接页 +- 活动入口与活动状态表达 +- 新客礼 / 满减 / 秒杀 / 折扣的页面承接逻辑 + +### 验收重点 +- 活动是否能真正导流进商品和结算,而不只是展示横幅 + +--- + +## 3.7 S6 服务与消息开发 + +### 目标 +- 把小程序补齐为可长期经营的用户服务端 + +### 开发顺序 +1. `P16 消息中心页` +2. `P17 帮助中心页` +3. 回补首页推荐区与我的服务区 +4. 预留未来发票、客服、投诉与个性化券包入口 + +### 必交付物 +- 消息分类页 +- FAQ / 客服 / 帮助中心 +- 红点、未读、服务入口表达 + +### 验收重点 +- 顾客是否能在订单之外获得通知与帮助 + +--- + +## 3.8 S7 联调验收与上线准备 + +### 目标 +- 把前面阶段串成一套真正可演示、可交付、可联调的版本 + +### 必做事项 +1. 检查所有页面路由跳转 +2. 检查所有主 CTA 是否闭环 +3. 检查三场景差异是否完整 +4. 检查所有金额、优惠、状态文案是否一致 +5. 检查登录拦截与回跳逻辑 +6. 检查空态、错误态、禁用态 +7. 整理演示脚本、验收清单、联调顺序 + +### 必交付物 +- 联调清单 +- 验收清单 +- 演示路径脚本 +- 版本发布说明 + +### 完成标准 +- 业务、设计、开发、测试都能按同一套路径演示 +- 新接手的 AI 或工程师可以快速理解全局结构 + +--- + +## 4. 推荐交付物清单 + +| 阶段 | 必交付物 | +| --- | --- | +| S0 | 分期文档、映射文档、实施文档 | +| S1 | 低保真、状态矩阵、场景矩阵、组件清单 | +| S2 | 交易主链路页面、mock 数据、跳转脚本 | +| S3 | 售后页面、状态时间轴、订单操作脚本 | +| S4 | 我的页与资产页、资产回流脚本 | +| S5 | 活动页、活动入口、活动承接脚本 | +| S6 | 消息与帮助页、红点逻辑、服务入口 | +| S7 | 联调文档、验收清单、演示说明 | + +--- + +## 5. 如果是个人或 AI 独立推进,建议这样执行 + +### 模式 A:先原型后代码 +1. 先补齐文档与低保真 +2. 再实现点击原型 +3. 再把点击原型转成真实小程序代码 + +### 模式 B:边原型边代码 +1. 每完成一个页面规格,就同步搭建页面骨架 +2. 每完成一个阶段,就统一走查路由和状态 +3. 不要跨阶段跳做复杂资产或复杂营销 + +### 模式 C:只做 MVP +1. 只做 `S0 + S1 + S2 + S3` +2. 上线后再根据业务反馈扩展 `S4-S7` + +--- + +## 6. 阶段切换门槛 + +### 从 S1 进入 S2 前 +- 页面结构、路由、组件模板已稳定 + +### 从 S2 进入 S3 前 +- 主交易闭环可完整演示 + +### 从 S3 进入 S4 前 +- 订单与售后体验清晰,没有主流程断点 + +### 从 S4 进入 S5 前 +- 资产页能回流到结算页 + +### 从 S5 进入 S6 前 +- 活动页不是孤岛,已能导流到交易闭环 + +### 从 S6 进入 S7 前 +- 页面、消息、服务、活动、资产已基本成套 + +--- + +## 7. 实施时最容易踩的坑 + +1. 一开始就想把所有资产和活动一起做完 +2. 先画很多视觉稿,却没有先收口状态和流程 +3. 把后台字段原样搬到前台,没有翻译成顾客语言 +4. 只做页面,不做版本边界 +5. 只做静态图,不做关键跳转与交互闭环 + +--- + +## 8. 最终建议 + +这套项目最稳的推进方式不是“按页面一个个做”,而是: + +1. 先按版本收口 +2. 再按闭环推进 +3. 然后按阶段交付 +4. 最后统一联调与上线准备 + +只有这样,租户后台到 C 端小程序的关系才会清晰,整个项目也不会越做越散。 diff --git a/Cend-MiniProgram-Prototype/docs/before-home.png b/Cend-MiniProgram-Prototype/docs/before-home.png new file mode 100644 index 0000000000000000000000000000000000000000..ddaac2d4eca06fc77c001709e519a09433dd0b6f GIT binary patch literal 277249 zcmY&F1U}SHy*P83GISE($D3AGy^c5T&9Hydzj0PMWiX^JNH+%7mc95_W8 zDJ_r8QzLZ$S(*9DFTjr>W+*~Q21rO;ZE)B!Zwy5*jbDbuXME3khGAnakR8V1(DwnqY&?BkH5qpYw5;+5LPTIni0DIu$y%HmXsDGq|B!1 zR?&U{apLJP|B%K(lM$p=#2fmS+bczlgNB31|xVEax4i)kyG*6aG+^EMq?jOOfK+(T`WSrc=m29uej@GF) z?F@6gB=|BWS8mwsv{Y+OZL{9iY}D%J^8{v43DlA`{mu)458}ZYL*2^6&1y0Jet9ex z`tK_6;RicF2uxG%(aMjHkH5|o&Mhp=#56ZI1NtLb*dxgbI1$+H$@PxL{Ch0|`;Lx>(rpzL>5&p->4JT3y7xxDuW<##+BU7-=*LRteETl1iE zy$vcyS3d`&nxf4ZpF1+eoxP%gvrPE|bpEg zUdx*QaG`4Ba;vu_vjvTvUP;)Q9Q$A&Q+2Q2=!dd_ zJxq?OVQ=vCo@uK!aEtu^syYiA0(+FxW10U`*y$YUPM7Ag3TWk-28_?|H9YyZYrmv9 z7WjYQzYah$EIJ{q>Eppric+ypFJmF#n0_&+TGI0HFBJN4=v>{0r^H_K-wTh3(##;k zcfgM~^@knr7?>8s#^^_Q6fxUmO_7PKW2YBUUzbZ#pW^hO&y8y%y9(w1pW0Umk0kbP zE@7g_)pH?`&b#p}oX$PaWpD;?&7KH>72`pdzZ`#Y<0(j}Z;0NGU7=m-{;=ZcEI4j7 z41&Mqeb~X#67#mTsp!uI6aBSM|Jkg6FP3TReAlnsAm)Z5>wXh!QC8CM{0K^CC5Iw~ z0?0)4^+d-NxUY^XP(j55bf!f`7CewhLPCuR+0@F_wbI8AX&aaR1+xSAi;KwAO*k_yj!{#o$Shl$3OTBIo6H zMpfc=^1T|TUNszFfnqE*s!n{kQT&qVnUFbm2_~(L!qMwvE%&ay2Db&H_>5K=U={FI z=x?M%lTnCW@79g4K<$8);d1@g8Lx}>MxQ6Q=au;igBaqsc`y*T1(Z6QqAv<6%@f=I z`i$QiS6x5Ef-lLE>2s`xvLc+UXVEQ`sXS&^X&surR)4Z$UvL=qbE5lyHGntrnnO%% z2zA_)UPw-%RwB<0pjT%R72b}Jn3D1WxtX8`aUXQ$)#e=#@E)xVJ~!;ujow?Q49UcN zR;Z;+tTVQ2kniFX5hh7vI#{!}9*f$09#*k1NGM;!MG(Z2nw$CJWC0>HPYjB`Ld*Rh zx~gzt3~;fOGA+(O*yl52ny+Zd6HliFv4OVvRKboS{i7WXXnlSl3X$% zY(49q#Vml|yhIrQS4G;>ZhPr6XK-@WSP}D#e{LHh!BylS)Z@L7ASYA@jNloT8uCC= z>*u91PrMqHC)q1ZQ30TCoQ7u9WUT3Q80_A@JzZ^12&=YTc^3~%bvD)CDSExJd=k#= zrQ{EeuL(UrgJH3V&%IY_108_ZQrJwa@XT?7RgWkYF`eqg?1V2DaIM1 z7qfxze;POh{>A2>B-1GL37l!0>2sK)Fh9H(`&ukua)kWH1>=v3erv{|Cput#_BWGy zd-1+H{&JZy6PQs7nn-sLtAOOeMmwUQOY@Hk2vZB}_*{es+3V4hi$;K-$(nvGG8yH^n($wE%O}Z!zybw&rYgx_ z1aXbh)I3;xoEq`wO+TD(l3LRHLx8HIu|qd%9g5NIVmKbJ*Vga*{a3P&gp{N$F+MbZ z^Jmh~{pV04(e~0P3N;IT$NlxwxTGp-43jUWD6=U&n2sw>{7tNikd=ZVqZ{x&QgFVQ z<=4rB;?P#TaW1X7K|>lG5=;(yrD3igZwS2>2m5bi#EvT{hpb90a1t?oZ1N-5{+~Z$ zK;2C&&uJBxfR7uMf#)oe-INvdncvK_D&dkb)5n&Jv<* zRKJrg*-qAJTd1Oa!cW!BEajDb8K(e!=Z&}j)oy>i!yvIjZK8>SQ2BkNL{gOF$V$_G zpmadkwmFnbd|K){n+)Ty7L7uAJ6H-S&(ri7@{sY)_IR;oCzj@YvD_4wpCuKoQf-|C z?gRPzETLvk4LflZGuLBJ=fn+n6BbZMptxPOq|THz3`zmeCczt*{hOyr=9`Z z2$?M2uu%epDVu7iyl z@)J!a`F;HLD<}GCJrhgfw=DbW@x6m=xLj{uaTi9#7~%{jFS6Oc6MB$!^2LR%r_7C% zt1GC@^JY;#Rx00NDg|9k6;S{7CnlBGpWV#NFhZ~I|H@6AF$8Xe>3uxmsMOWS(%^SA z0jI*?;i4$^5h2+>^myH0gV1E^dRFW^jZ91?!~-Go2KHAdtE-YvO{_%k7~9$R6kG!S ztrCO)D^9foydEnBVnC9^c~%`JI_mB&pvtPlO@z#qFeX?DlNM(TLn(#RsMEJy5uJ3h zE(UA;J+bcIHAjGx-1;r_8Uf})DUBMG$4 zgRmVK!;B#0;Q4yED`h+(iUJ*ggfPH9)qz=kBkE)<9_NJi@7a;$d#@m*VV51-Tcc0G z);-8(gR7@=u2K`;u3>X8Bs;hjmq{+v2xo}}`+_*_K+v{C?W}IwI^I#qVjHHK&F9)t za93Jcq|pC)pl&gMHvE3mf&7-9JPb!XhJa}XzDQfO2@S2)R+|JR9$EH3UlG5TzdGi} zAVF$-D0rg#rrH%fJnA5PcWYPb-};;y{rOS(Yk7quvG&rH=#?O29qdq{Q}Of|Fj=`_q zI?HVN+e8u4ZQs{4t-o=Vi>$-iTFG4X&V@+V#h@Y4+Nz!Qa;s3vsUtm9uX<6k2%z>> z{R4MsNYWG}vQBTlFFK0!c_#7`Li!lIa+Y>ho(4;)7PB-OqVBN!luPRlc&F> zm!9Zt$K+ld5%NU(*AG$Sbb)qv@zlNj$?OJ7VfQQBcnE&RhnIq_I>Wf}Uda~h{O2vb zccicNvjb4;d z=GGto^VbT*5p%ZxAR`kJAUgQ#8~wc`!C2wDyM5b5>~(spm!ctYx`H?~@6@sTLPF{C z7TNNwovvT~KGjt)g%uM82n5RUz8>Q0gw$FuR3>v6fDfm32I*oVWoSnw$-Vw0@x+mw zsLI$QrXF+`tNy#@0h=^Kam*zPOO&p&4CJ1UCwQOajF&qv`(DYMUXQ1K5bqzB;_5wo zv&05_)1A8wzZ@|yH&0I?sGhodjmyzAzx90Ne}$12iOEAipJ?GwuZ->W)zLF+M^fV1 z4QituTh7~?IqU;J?{1TE63=P$_&2TJM_;U_&fGtW`5sOI#-B8w+-yr~D=Rx{odm7| zx3>vBJ)1)4{!^}DHb`yv<0(O~@5D&FLJbw7@o87(ruJLyq8tpO0amfJM5sg{ykm-Bo4BTW} z#TP0pnQdImkS5likq?=_oaW2Idt$q!sc|G;AiRJoVo5}xoat4zyd^YzsP~YaKyfoJ zKCBDqe%^M`@iKM35+9#@km>r(F@liVeyQcmkE^}qaE5D3++#A}De8G<4%1>B?(Zxh z&8XFdXQ_AX3e>pK>OR~FUM}0|r0OVgJ<-5J`e2aMW#qm!5V2stxLB!@A%%#IymwdT z+j5c}+WF~ujD-nnCEt~V*SN*zPk7Nwnn(AkZVs8?CQjgg!7z>=F0Zuk$LvCEKMEde zR~@?x`t$Kt5P14+ypj`!f|NS`C~I+fX-Q>Clw49EqzwXTlh&VCAmBH^L&s9<947ht zf{6F^Mezuz@KCe6`X{BcFgcl&)b1f4Vp@6#m zk!pwyP1OwuD_=S97wDZdbosY6DkiCndBTBNT-iLio^(6-on)CT^x(y=9&&QQxN#S@ z);K`nb$e8lsqiWGPYy@>R-s?zJ&<8;BID)i)P244pfX$@lT?y_ZjPUd;}c|8bHeX( zOa2lUjXj=k9cX#ZJ7ZGdq+-kQtM}aN((#DK)la}~^))#mvqb946;qDy$FXrL=zy4r z8?o>%a|flzTD`^Dk^c;dE(ya~Wf>)DSA1$<=3p5gi;C5fR-xoPkO?C-(^8Aw_)%Y6W$)jq(wWl8 z&iR2NYA*5VkRW=XfLog{`JH2L&u-XGHTia3J%r<@WUxc?p6!S3M(=etoeyyiS+p?h zGFt5LX;tflNnys7Cvt-cx=FTl#_$#IviRi0b2E0;)&|?h+jGSk*R!P>u~i#ZRyT;( zvWsaI)?(+y;>dVaMOo`hH1?H_zFynY^Up6`W7U!}xEe2a0&ep*6w*M- zbiN1|@GA!}2@{p~998yaU}X{-Gff9?!nbI1g1}xdd+~IMn)8t@?qaWMR8?} z6M!PiEB&FS*%8i13`l^QwvpJ?{7~2RY3D{q;gX+y=hO3veFsKQ6C0N}Xjh^O3&GZ9 zgyPQUc4!-R0^>d&B6cwrMUh{fRAp>rJkg*d1fh^WK9*a0sHmu%X-;&&fnLmKmn^e= z<6RRfv*z@pCVP!qS;rM>X_Z z*7zwntV$;lnBe6I9FkEt(lpT5o@ptkXF^g0Y^Bv{j}S&p9X8mCd?F+wB-~A)#wqo= z{qcq(!2`r?r@>AVO5lj~*}%s`hi3P4N!ZuQe9E*WJu2DdmPgcUG@dHEk^|kYWv2S-r z`yC6X9XvZRI+~I2#a#1DwkQGUX}+SBl}$?U(!T@xc)K5EuFuNymBqU8>^ME$;6-RJ z?TA-}AiCr7L&82}>Oi^0Ra)JQ^R zWz{OrZK$UPmtJDDQhP?wn)m9fdMbMq&bZI*tMgQ5j#ojEoq&8Mwot?%(mx>>wNph@ z=(N>_17C1$3AkT(!XUL0t~@p|;r%hPuN+`7oO^nh6Q4?v!TvQ1PQYi&%YP)7)YW&GR#E)g z_L~4P4TVt`Gi3+aUT!$^hOi1R+uOkTZ&in}cU3y^M`^u-A8ayOQ5>S|<8sqo=uw)i z)!|TNR@Ygs{VZ=zKqIT@phvSIUo{z{sG{ybPB<3u$D$sVuW29wYH(yt_4ftvGT3$d z7!8s;Xo<%qVdNftgQ_x_iIS0|@;aNT|C($aj`+YHKR@OJ&9_o(7?7j&P` ztks$usHoTm-05v>_-;6j1siO5+Ec21)O`l!v2hAAwYeMB@QB<#e1*T{X*wPsPjP#r&wi_7qdtj!N&&%Y)$AE`oK6~#)>&@sKD2nEot6V& z>e+<_0XaaoPExCTihUK_Puq<7KBAD<;@b~tRh7ndSiAYr#FG^UmX={Ph-~MUO=06rawhq)ccRNc z5=Ng_>RNhD3)!pzpq+`bg^HKoW0b4_(2i=S&0=+p>&di_*V%jTt<4~?-}#aJ{@6=F zdHL>a!pmeHv(y(49!<2ZRKFSp~c=X^=0G*GDn90CHI~hr^6J?TByG?#oVO(`Sx93DzDO4 zgnjQz^`Pvmw;04_2bLYn);W|SZl}PVGof6G&zojGz&rX5xW*_SuM0#!&a;Fx=_c<# zjl3p6ieO|apT_|S6W~y)dQl|tdYOuCVLPR2@Wwq3BF(eUIo(2ch3T3J(trSI@n&gSMgmBw8NER=m--HUQP8x2*QTbwX){gu8!*4v*be; z`D9&X8%hJl0?)@IC|H8Q!?^`dO&&ujnv~wFW_}sZse%Dl>Uog;tH|C@tNveI7?qre zolS8wMtNjn$&}dT5h`L^c%(8PF(2j!qNBJfR59}!CiZP_v`EMiOE+pyf~tgo8AQ)aTg6YATvA>s z{>!jECj;sCG;=&GnarKi;J5np;*CrUH#E9c`tAcpnnt8K5|8A>3wyY_NIJlsf!6|t2G zAyE7MvL@0`$=$lliA!ad%6_ACBn!-ZqdRt`Xlk25c8^a@)6+ULmTfX5TkjvK9Ck2u zshnr2r?nP!I((LNH_)6-EA(3fUi6y1?&d4@*gEu^FLxNIIPZfCmyXvfMvUAcK9_Mp z`+m1WbTJZjhcgowY1fB-+1Xd2X78(-PQ9s{;`(7a0VclU6vN&XYohtU6&G*J$NjO7 z4=9QS8x5Ym5O-8mXs}dp9mKAO7MIU^HYQlwGiK-}EKq58y6#sek4L4Ysp(5mwi!-h zszwr@vY*zHJMw(hN*RDjc$@_XQ#TYW@u>oM)*|bakJ4V$Kp>dRN@LvDHsooG(nX|H z%5BtU4?soYFP!SKf;kULVN~_}a_tjS9a9L9K4N|4OJ#dwz(bJ zVT7X}tUwC?Wod55{t+@#g@&+&q`0+jsu|VsO#Rlgpg8X`TYje@5zg7PrkG)?k%1$^ zzU{fxQP8Bd1bh>FgYbo~Y z`etifgr_IVp^bIo_d-ALoMT2vGbP>lVTF`WQsF8yF?`~hsP_+|TXPr7b#Y;31NDZg zX(&bAd-cC0d~$0}ns|cM$g3p#$7~<-ZJ=lkuMW(7&CSje2wC`C!@RiJtHIj9@1K7` zQ=9xvgMT@sefMn7&-9fE(=<#HWK<%~kqtx~8|@KCFu#FfOH37`Qd>XXt`|{DWH*&I zGdMiRlBNIU8wcle`(lVVJkQ457v;GHcj|Goz{~i%XDe*`To4yn!!$5s#1vDw48QntA%xA}aLm5%0M(%AaD zi1fS&=X{}RA{FDA&$q|c;Rut|;qXx1lEQhH+V_1dOB85))iXvM?9$oM9wWA|@Q)~y zx)k<{-C9xo+#?+2GWdH}M!Q2(?4K;)-IZFGSyXd|hwKC6bpUBb{&+dR9V=5U-ywp9b%z;= z9FN-$m@1&|h)u~b(9P-bLBfijc98adTEl)HlJj;u_@_(spYzgE>&nhQalqj7;J=p$AJ88+Q3h8&(m2q+U@5{R!uEWeO2gFNRW-8mBgRmuNzx9`i zU35O_Y)JUI<=50W4q1*Yj&{Q^*=xE2{|Eng*ymkErd8n1J(ZuaibkaE-U=+az^F1NUdoWxMSvW4;p8HkK8Z4Y{9$t*xUQ^V%B)Muijk|*W-D4Cv{chs_j z6C)z_vr9!e!g&Qv#C8cnLV+y7Mk4OQkAv{0=%*4>JmT4&%R`}5)16*-oLDYolX^w) zb)qf~wki}C%zrB*9ys;Rqeu}KCeH^}ueo2?Uz<_&LC6o6$owM&e@$ED>q6wdmCfzy5E%5SRDUsGKR#aVEF-l-E~R)Ia{oTh$j&PA1LZ+_%^{6x zIkO3``E><%9y{}B=jry1UE3b#ri;H{^Go*1X3R$HKFeS5PiTf@kxL?Y-xpk?B|VIq))-XW#z(Pv;N6yDjtTm6|3zTNT|i$y;T{6 zK953L9d2tV_lKsh2W$_W@E^z05PI z2ACo?0}rHBw)0YfBBp=69oua)K&JWhy0e1Uy3{Rhpua>$+n1*K@h$)E zw`&tE@v;G_FWbt$uVJiU@KMu}=ut9{VK8sXDw@j)RUz%B-w^qffSZd5viGvNg+oc_ zbvCo}>mY~Ru}5vw7K5N)mlx= z$SRR&?#-0d2QaR%XVzQCCk=3a1@N*}l@I)1HDNQG-k7)Xyx+P=*#)(jnz{XoIYV&?$x9-7&kK8H;0nXOX@)75LhvBmQ+HbmjZ<{Tj zk79~?_2O6_26>t?vpsf=#cOS@p)s|}PJBxbqxw}QzH^w~zrTHIf}+%niMaBVkG8;Q zmhXN7B~s{R6+p)SK$*`ySQC`bM8CY( zFDJ3o@s+b^CtBv0gDt9g5wA%`mqM#k7L)})ad6I4FqAtuT2L&$w& zJF4O$FkRZU2B(79f9bwwGN9bHcaE=0Cd*$bBAt6vjX{t6gob!F!X=LFHj|!~jq0+P zSoI+_EX%6fP`OZObH+p2kXk&%iP#L+<2O<*|FOYnzzO^$aM+7Nt0`|DN^gHUH6S zMwSR$PAZuESAYkc*ezsK*H^y|T!VVyR;bSAe&Gv|m?7~3rKnq)cyBQe8+Ys8N!(wc zQhH9;qsQ{3M7R6GP9*Wfo~iO#)yqHuOkQuFi#$(t7#YNqcFong$Jm|jMAWS>)&LfQ zt)GFL@X%9~hYg>Xoelezky4X(i?u$3i}j|jH!1>=0QxMi9a#9`a>dGY>a z-o9KiLpS zzssmH#2$r5z!+q=M2J8(PFv)}r$K%kDJtF4wHKB9*s_@W8k70K>2VOZs^cm;w&dsi zMSW7sW&}(>_K4li3IYL2M^Q$aWID>?@{?T{2vq)O;g^(-L2L?}D*hqz<4}E4_VlVW+zFKtL zKE`fYw()y$CR*lry+wmr#xu~)KoZ;YDFBbvPkVEJ~k*e2yZG;@Q&|?_J z%XLxcMGhb2o@RCvmeZ~bnTPOfg;M!tgJBJxZRcDI#%HK~WL!X%aXJVk>BVDykcq1O z?p9MSQuHV|v`ASPlqi7{mEvhR9-0{Y=@~S9@O;O^9|H702ELr7!Q$%ctOd(a&lBX$ zKZm+qi9T&s=vUvJ$Ay1;@3==0wPCIYf14GYuop+(gWMSx&S1B?9o@#9RDEfcyt=lw z&+%9;Rws&tetQroG-2hExPZ-=Jl_W`T(q9-OJoaOH_^y%aQmKSxkIwXTZ1VKTTZS0 z`u&LAPLurF!w!o4HfllHEHRW%p>=jyeC8wbwnzauUU*C|bfdvZaxec3{3&32m&^EF zR_pne1r!xi{Vbr8Qnf^;6qFe=0tJPQ=!u&!6buWL(CE6<(o`EI5qwecK4Jy2-J^jZ zwW5Vz7rwik6@8>Z`W!*Zo>oEHc2~~oC7WlYQ14@%6P3zWrU?HU*kT1( zhV3ezlZbIs?(O@AoQ*^ACv9P&=GxlnPGcwI0jx6*^HA{FBUL?BlE4efsA99jN@?lw zizrkyOB79OB=|~~od3`Pd=`p9SOM`RfF5Vo$<=<*peFbEGI|*W}= zGZKCP_J3uH5_J?5o1j+|zTHHWhaSCtB&Zg}kTBlPq!m*n=eO#bQ5ALQsRpP#-tGH( z%oj&c0Z&=P^C7Ub8@nx)#eEJQ=Kj|$?O9)19C=&&MM>mo!4U&SC(T) zXrT;6tv8S;To*=Eu#uGX&j{ANAu39pkB_k2S^O$^QQYmkej)e@K;>n14Nw(tJsvQD zC8bR3+*q%()5LGa8uvX)45Hrs*hT7$k>pkHDAA00o@ATM^jKyV!Q3lgHZ8J(TUOoR z3=zxw+EZ)+w&qRMhwT~0!g(w4QX4XC3$}tjT^JnYdEMII z*w-LyZYjfZX)^oQg8PT?g@1am#2x&SbD=47CvHVfgfzMCRqd9dP&7j=%WOBiD%9)4 z2E{v-mksu3CPWg!j>ZiiKbY)@rgYw$#I@|5s@s2aWA^&Z`cYA2s)*PA4z}t$4xf8y zX^vgf)kkqI@jOpyb&u$rZ+IT`31V`vj`e?7iBDd}DO@+xrRD==(r?`nnuB8c+3tao zJ*l9feG`RH%7Pv7f)!s@bY!hW^e*izceW#5HS_YYhD5VYy17Hv+&us3y!$OB{+3tA zEc_N?ly4c6y-os@=B}I6zvZ`M(-_BDr8v_$85toeGW-=({ixEV1P%sN7^GZ1I**IH zK48HHlM6U`pcvxPrO1&8ejjSfPSC%Y>8v!gwOy;@wOD`I#E0Mo+gGyELZ1BVo_L#?(xqvH>$HGco z>vn)wKHKp)97Fv1_S}mqp!Xw)tj?+>OpzA?{@6@mpCU30d`jb#WW$2pC ze@i+(rd`Hv!^2nvO{EXcF3F

)MYFu(SfiR|5?U#v{BBy7yBU`>9dgMMcK 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

ESZ7r%J#UqS`Q!22j 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 z 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�EevW#-cYl}N`z<-Zxi#+4=0JH0BMRi>e_V(ZU@d}G-VbCk zxT9$gCgtRR|9dJx!Fmx{_?Ag!C@Lk za?ChZq)A(Izu^A(HBYSRvPwEv+?Dv!_&JvpqVDYkt>`2rC;z*0fT91UMc`uTA3cGm z_hW6*{H7Y0xhlI#+2>5f!iL-z!*}~SB>Ag?LSakxW>DHGoQBisoW!niKtQ?Fy|ihJ zM-Mhc>)chjp~oipLA|dOt95%%Cr%8lJ@Y4sbJ~H(!!E&7mHt>vY*8B5RO`&5JZiE640_BY>oSZaslTCkC1M5oH7S}+ujCy#-L$LHPB z)2g*4`JT^(2a`Hx;~!MFxVm%CAjYEBmaSw(0@*5iH-h&nL4n(Cb6k83m3uU(SyR6r zKPlcj`O0@NTUs#Wh!KO*Wlx)5Ky*fz@WB2MeY0liYKSxpF*un3pAJ<1^URYCWIkkcK9Y z!)%Ozt%mIJm#)C;1DH9Lvx?O2@MrMl5;R&e8h-@cWh;p!JgJPBpP`QnmxPbq`QZo= z9cS5Nf41~8QbV6yd!pOw_4#|3bMlWY)M1U1G`35<{Cd0T!{Tq<1+90uu8gncNu3x} zG9O`931dG*yAWih<3|!~awl29mqrb0W8|pPcPYvr< zl#H!gx3%XTH>nF5QBG5^Wd#F{BEO$0|3pWeTV`LG1v~W&ntzv=OZF^0m`hd9Z(&fh z86$?*%abP1k(8+C{?{iP- zDC4PrO>ZCM8u6yMaVc~9g_3pV_=tCftExqJxGY$XHBT{bU)@vW%1wgKQ=WNYvyDV=H_6+;}7cTx+ZNedH$qwVZ?Mjv7RY>Re z6gEe+3;sa(djO^=Mjt4dm0o+};c|NA)~~aOC6=3#RIVFbkjzQ}dS`Wz;M@DtJc1rz z)$kfGcrArjH@R4IgA7^Qn$4ROjXfs+P!06R6Z-6A=P|mRtg)s>Ef3E$IaH-R_#GOd8i7fA+P>w}6SF^TyGVdFs{Ytry;q;)3cATZmvYW( zL`Cl9A~v|}(RE_cDz9G`iuwwICWGzC#qOxz>?CoB7zV#KY2t`XtxhrA`Jf>d>O=W@R5 zAcH3@$9?z#(-owbgNPm!X$pCN6A{W1iE7CacH5DG4DiiqdVPCtO?r9a7UR24RvtAv zEXRJip?rm`K^G%E=8zI4fF4(6VW^ujki07oJ}6}Y0BoI#FSMK^jGD}!R#0-9+`Nf1 z;RH0|$z5sd?E2ojSp;SW0Zl?Ydb zZ46EfcD*UoVC9Sha^o{kJi-JJ;qnPJgG_Efigq(4DD#TGu9?0Prw51yk~D6GV9pKW zhKqXgTMs?7%CUN8p8m-e8LDMJt^9|h6P`x#Wee6ZhvF@vzYlU|BcA94l#(2kYIfG8 z#0({2@pc=rH_$m`3-Ufb3XWcNcoyBNw?$<3wd7H`UrcKC%}LHtKh0TBP9^4y3#Zk3 z9=DTSpRSU8R)>`APZ)t>x1}5^?vS=Jb(hX)0<0}4zR=T6TyFi4_B^Jma!BpwFYE6_ zCz+5NY4X_5O#9{c`U53-V*|1Ey0c)bPd6sa;m#tghYGzumuAgN9@WyJN)+|xmb<}k0oQ#k=oX}W{ABHTn{>5#fy>+R<`L*}X`_EwI494h-W?MoFjQ|_E7nmORwr=3$1Tl-Aes*r1BC;2{m%f;W$@fuF;1A7G zY{w>Nh34FBS?l9@M=&Zhl4+szR*t1xz|~W4FaxJ_uZGVPYQ&>2;OBV`v_>(PiaW)Tff5#y<*?axz`9#|Ga5E= zH*-?b|1+r@+*tXcg5anGDA!FzFH1|Z(onSHW1-$T?^uQY>TrH5)@6A;8`$L7{X*4R z;H7ww8jVv|TRR2&-A+NtodRGWEVKf-(2Hnqt{in*Xf+=yPw$!J53Q5X2lk$fQCscFaiNV@F*mxY{vc`*N;bg_Cm z6Kfnslm*{=ug2i$qscgilMo4C`x}E%-}~}zp$tNNSu!sT=q_$f$@U_jDnYE)Jfg& zYn@hxmC@ETIkgD5$|eKhjl?<93Kp*)Io|8or$Y@e6lovn#51jCA4a9os^GZiA{H1C zNY$_=ODB;9mP|d(k}?IQWSdI$-><_=>r%3FOdV4+R|c-OK|Ji9U6}5oYt2vDA}XxC z9SN|4i-V#Q6ZWk&0CDr+?b*f{9bz8geJ4stsFAhDChw%jFfXJ=20kWY ziX$c@Bt#1NOzdO&i%9>{u5pq`Mmwg#Ll3hoS%{@JbBW}G3pi5ikC&#YTj<#T%C_5m_)*T$?)0IoF5144@70&46TJJ+x3nOrXS2gj)R)B!_6Xp6!%~J()>fSqTOzrVZqwUd9&9YqiBRIJAlzEe@IWyEH3+fap<~E zMkk_Kluo*;McD4V1%6n;dRlC`Hq#egyQpNTM4)k`jb~!{r_icqm2z^_@iIz$7hs4s z2WoTa1g(&DHY))R#2wZ!w&M4}2-pWFJEiuhV~ZZ~`0~%=7W5cN7@IOL7QGh-g@M2 zd1OU?yxx-nY6mAMZ4LzFG9nr{JBh*Fd7LPhakVZ*B`p`4GQ2`zh+(Z40i!x~e^=*v z7%7fxU7n){h$)_Hz_&s*p7joD&mPx(dcwP-i;flH)a6cq^Qk@Z;R6U>g~^A)T{s`M zb39FVOCUy{8U3A4CaTAXCtUmFv=Ocwj`~9CH-I1Z`Ft8~CQk%Qu?1+##E-LLfyWq= zT{}ZBonB^Uuu2QOzsCLHHq+RREPG2(!j1J$4l2#oi&z}BOgTH!24_VaIkHfPIvS-^ z_f(F^D-1R-Ro~1fg}r4mE>wbv@N$^+O4H^Bv-dibIDW))Kw>%e>pqi{ZXf`V_Fpmv zPZC{!4`(SLd#t164SY1tDK;oqi0txvX$?N28Wg`UT?)6W{6IbE^|$b({h2R+8TV}S zl=6cwF)pi*t);b>9@T9$PpMA9t~?<{r=M@IeUTBVm+k!@_?3EmC`X`-`5;)LnWm3@1 z3MoXeq=}6XVizsw zARWz>s%UEurO;bf120LEgQ7E_1bdnKaI;N>yy9$L23$j6 zy$g>BIk8g~57d3Vkhdp7_6-=jX4dCYboN^FYp_^d!c-c^Odi9uB0x*&vx(gI@#x59 zcks0SmEuh`=O?!}_6GT20(^5TWAL(8)+N)}3rmXprC=2>b(Ayn|G=EFgqpvjkps@% z>#>1Cu=$y^u|~AW99mLHu3L@H^J8Sdf$?}I6%BX_YIJb(P=2yf##f_3@&rK;KJU-z zBLeo<``6)szTVtz(39rtq8CKp@squfsC4%a*YxkMq$^2hW1zb*l%rZ{kuEe>#qn+{ zuY@1>i_n1Bst!64PjDlpc`0g@l(p5hwRfpb2g8L+zWgs1aMdJo^`kSyF(rzc@cVTg zYWjzQ*@~@Q=4JDiyNA3S$vT^9kK4>vdWHdsLPF5g^*)Vqs0;Jv;%ucu_^~ngeAJ)) z7U{^5UGs@&baUmIvF$|5AGAlOO(7 zow*ov&t1D$3(@tESTDp`7cS%yg25{F-FXopMxXrlg+GX~Td9b&2-WITOeNt-_bFCc zRQ_=~E33BOQtc5^qB_jLpoOOfZcZ6W$Ilqf9-1ouYFJJST{-WGB2idrbzN^b8p)H0 zb!Y-Yb~F-(Os?lV(SoBysKR^J z%c$&PwNyl9Qsw7E+OUkux3YmTSm7~I&N&I18BCM5mSlA^Q*T9!v7C!U9uz3ns~Dc+ zfx-~dZ$eGDw}1FLO+w;++9rlcHIJyrQBNxb<+KmdvD{+=>-UPjJVD}KXmqMf(EW=f zBl7$r{7F1J4p4LqnqJR z-FqZNs%Gn%!l(^+znw=a`nao0eVep_(Yj-<9@gp;Vg~KAATSsrY4!n>V^)uf^bs~3 zD0tBI;BV^GM@nZx*>wQ!{ec=^YmQPv4Es3d0e7+}gI}*sZBO#kFX&gq(o82FV#pht zEdv;dr;paETS8nKcv&WA79oIJ z6RTH1!O~J*0Pfs^lsfYoNGfNf4arvwK`$EF+>lqU@8WEMaT-PU*zg=WgO~d(M;dOI zV)^f+x&P;+Zm8d|CQ6mhzb7xs#(_L!?$h%bVvLfg4C~b@$*L*6B4k^rI0X*~nEY(3 z9s^WdlclWQRJg>BU;H?T%c!8~O6TFkRB#b{pp-8Ml4sePW(mWbZy<0ko$4<1GK zd#YTC)ljOIrJ37uopc8py2~=$Uc;1)Q!^cZ^5#kmt@82}dEV??=A%f0MGsrG6<+ z4xB$7onAxdip*~npj#I>M=r;!J}(n5`QMnen;f8pe>eCX*79?6uWA>`B1zd6T%r}g zM&cRQF9jx2?-}Wtv-qB`{e#2q^Sk`~kmsXq0c^M~|0AyfQQ`nmB#}i%?pM~B zkhK%sdjdVmTX-578-O)q5eFk$f`IF9^Ci9#`w2!SrMW-a6mAqqXTxSjfUKw4$-3FP zmrrv2EQxBIpaY4V(GhMC!9ntUOFIG*;?2vG1kh~RBWpqd-dV$I7H}GuuS>&a)~f_S z!`%9Xejpmzib^WgMd7H8K3=X#{jvIyjCG9`?p^vScQ3X~v(1+aQ2oO#9`f`6knp5t zxXk`N_J$##D>tM$MeH#ZTDv)_PL1II(3~d|H$L*l(8D?k_4Cq{iz_*C)ZqS0%-65D z6kD-I^EvZwJIb((RVv}zF0*$poxfI#T7`tBjeafZ+(NXUcos9B2Kqg3sT`JaQaeZo z6>i=vsr=<72dENkg}C%~ba${0+_&rABo318U?^{rU(JufcL~yqn$-~MZ%+GX+x_{M z(fZHi>!0`H1M7GVr170C*DX(9#KjSAs;n(TKNH8<4;US!n4YE*hM<)bJXf%@wgJmIoNQk;F=! zXa9BSUo1CQB)p3pgJo{krwOJTRqF%OdR=xDs_9lH^kt^iAJQ!O!=^9m;t{>S#vzli z=!A|_g5Iz{|7T`MbWL&&8b4_AM9!7H4c26+(;$Y<-ON4v<+aAI4x-<+&M(xB6#q{K z{qA1|Jzs-_Pm+dCf`pvo-O4A;@uv&-4KD6>=%N~}WN57J?|2o3vUGgLNbOXMicjML zX%;}P3qU*jHImV#2g^0i1iLbp2yGlfuWDPXveysjJ6@TpYTVd%PoL(-{kc86D>xR^GaN9?u*JsX0gzf1`=V*{Dkg>r?4qyYra4{!L?+*G z5(m6j^O1Cu&0^rK8#ooZ4NbGweqVCCeu&H`2_1$7w!v`#wHn|@Ncn!xZ}(@W{dnFd zDsOp%bPx@aAdMe07mm9rnerDFo8nM)ZF$IUgvD$=fKi_E*{0DgX7Dh4R3ou6Y~1Ji zF%GTZa`Z5Zic*TSwRg{tbjEv@szc7X=Hq%x0c#kA(pO)ZSp#qYbHi|?>KfWAW`QRoXv!glpv@}+B;al<(kn( zl6AjJ7jHo=0mA;q29KBPTOOYtau$j&UpQVB*C?6UWmD%^1Q5ObNWhp26!W$}n z6BR&1A@^L>$7jn`!gp&zw<+th~A3yr)JGKH$mE8+(SZP{P9_$5|6T@ zA;ilc*@P92Bb)ZX0i{0oi%}z!u?ilkhed00wf?gmSYqyP`6xsi%neiKo>P)AD0!W! zbTO{CZg9mQj4FXlk`OI$<&L)}-uQU>^h*FPbgNUm7wG#aU#!sb{I*eioyOA{Kt1ym zI2@DY@#L%Xt^N9?2(Xk&nlbCuIt2jw4`8Y9U5D0~2b$}@&mk@60AT9CR(mr}qk#Q_ zbenlQlMD)42 zk`X5{)!dHR7kzX2F^;A?FRy(WV%~$?g4oQ%R#kog_x`yN=Szc|7pEmQ(D-TEQq!#6$P)sArqJTcN zBknEC%4li1N;t?pN)o_^!AE9tQR1lp{6Lw0JAp77!NO7PtM^R1tLuprXrCutUsqb1 zDtBMwE!}I;nw|FkqWerPq6lJ^m*AeGuZ2O;aL3zWDyJ1k7e%Uo37WUsuzvNrTW*0*0dRfJqgYVm-(M5~ z(pxMUX(Ecqz!t3i>&czwOUje+_LsGYl+(WA>Z1ge@cbJHW`;vKep0!nMh-dIGO**v zSlY*FtmV%$V5u?-oESz}e*r!_-Jwg*^ zcN>#cYK7BA0>039wBmge3BM)&_>`C|i)|7Cg+jKi_VJtL;{S@4%w8V9Bx8A5*i>fKilFRtEg$ zCpRqTkAek~ffw>lRZXQI4#9Ql0_>I25foyyC@tb&b;T&H=Mb}8j~C_+5`9hl6Da61wP^3o18jE@qQoy6(*)j^8ubt;>2sWhx&ZdEimAk4K5zsgYVI zg9&M+1hE6uvEFD}I&~`Z+U)}dviY1tVM|_jGaE5&8etsDO%AyJxFAu=u zpF;o)x+JfY2rKqczzAlXC{11-lboEf28LD!_isFD@sjuBvZkRr$)%dXLcI@K12RT< zvFTIms`wDZ=p38LnppZYRQIx%*5>furRyYSI$hyZOwSSm)<@1ARw4>*+OM8lMs?z8 z$+@gOAL+-KsgJYCDtdGYnrDUY{^hBP>#^|}&`nOpB^&ZxrcV~N3yXr?J1Hq%sKMQv z{R^EuPz8H$@sua2w-o%Cw;oPIt#K`+?$t^kx2Hx<|8H0WzG5{86j3`?wQa6)a-8wx zU*mHIJ`Lf=TF(SxBl2Y+Ho{PfBHPVHevF(c4km^ov?};N6o2Ay)RMG)_&zJgkl4g| z*@-wLORft8C+0#)hj;O=lRqpv5oh;%a%MXp+UEZU*ocVWrrSH~^!JR)ezc$JY>j+j zqwY~xVGg--(aB1I{No}7vH+aH_!sNPrd6pln8C7zYF zmyN-M_ol*Av`xlAN90#KTcNTx0YkrIHSPvXHEW@AA&AR}dXULfyPY)hOCx)BEF=Pi z`=f99Cc2t?VlpkH%~!Y_ z*T!sZ(2Hv$hrgneuUU`si94oD5-2)wjo(U-D+sD(Cbl3+P~HDVED|mI4FQ-s=yycY z_(%av5+Bu!D0`Juau`X000zSf?otNyXYdON3z$HGpAC#M>xB4q~3Vek}i&&QSlwv5>VG#{_Hoh` zvyUCE;RKZIH_TD|%gr<`qx1M=BXahmwJ_~P%~x^|!b#21v)0ve8TYc zN5|s^1J~jmJq*%vsrAH1)!@b71tG=zQok=awr6NF_3R@T^!H5Iam%IN0q3})g!PU2 zgbUlhJBtP*T2{WP1t-=-71@4|EJ0fJSXFR3FsP5?GJ7_*eMRU4CkbX!>|{{uFC{e` zZQpR|j*-aw0PbVmnp`iwUgT9zot2L=P*$#zkK2ojX|%CmOZzSxI+(m(#a zj1%oLKns3|N{4pVLW-`s!|T&L=qq`X-o1@@F>!wRQt<<6#9yw&teRD# zi)E|dGTE-Yr?~*|B>amUBbk=tv#2){5TtJ%^{A*97q#=4SV)WhEpMewLfCrhZHZz9 z7ESAbp2R$5HHcgEMr|I)R<4a&OZzxVi%5wF)$0P(pLWZey8dAq-Z!RgBl+k25gUtj zs9DOHzzJXB9GYw`Mk?-;S1xMQGt8chziFJLBJLN zi05$eyNVcK%f0blp1yweNB#d@lUeCru-tQXOkwYwsAUTLMssS!hmt_&mHp3hUampu z#58mt-u*Q@_Q9wUIHFZf0A7dLfbQ5Fm(eq!TK8R+HUXN3I^kx-@Sz?WV;XelU1GE< z8-N-f7){Dr_eN&dDHhu=H!tJNFPu2{rHOXra%QGv)4wcF6X&uZjkt8jdnB z8^8*8cfLsNXBD|HH!CY0H(f#wwifMAM$i&~^&;OhO2g>~xv_21gyPY*OP~9hYS8_B z|DMD(TK|{*y)?~|C?zR^MD&?0{hG!^)Ia8gq+-gR2zhR_#B6^qZMOJCi~;O-cBujD z4Q}H0y@SXvROkoZR9qSFr{aHKaw8xZ3IsJKo-d;%5o(g>^ap}Dro~JCWOIm!dMlI? zN^9?IZ-0z=6VgP90gAax^h;)Fw!XYH#w!i&3v0$3T-c;nMm~SP+1GtIyXXdSX!mV0 ziBs@MJfOcMMymKsBM})%k1436^!vA2Dr+evM!N61%~KHK`PAi4Y6;RQ!6PRG>2V%G zzhAU9e|b^9hT-C^!m|wG(SA%)=D)krftY#g+h$*4XO|(tl}it)b+Z^HtZWtyC4Rj+ z`%o0|jnP|RgdyW3E_a$+7{{^n5T2@nr#$I5>F51>dR}+HgyEm*lxP$HUYg zaO1taZrfmFZ-|(*n+YRAhlpxW*##FYq5*;LBeyWdzyzTt<;A*j7Ou=F7O8$bXZ#$8B(?P(mLGN#fx#B40gaPeD2T@-!%_^kc$>L@wK()g%+J*; z_Z2GVi{wAzx(bfBfv#fEv-DelylHp;-}U&yUXcx76x-4biCI$z(jeU;Tla=1o&ly)P*MHg{nOlnSDzC7nuG*A0Ale%iTc+ z4z#uWFokXgC#L=zz*&aA+>dp~MFCd_gGlu1qvSB0NrPB5NmaZcr2XFa4WmGzpRZl` z!G#OZ@&Gq3{rMth)vhO>L;S|F?&vgcsy#B68=rPxm~T96P#Uaf;>cQ>EYC@R$RB(v zH9-jP{tnnpQSvj};6lAQ`VC+U?Eig+&CS2Z#JVK^&pQjJ@;}YYix!z#s^h*QTmT^% z0|`d_|7a2x60G`cf#$3ydov5D^j%gK5~nc;GWZj3LFo7HQ8_U%7dnQsLynZy6S8^) zrVx-|uuTpPKJn0e)$?r?{M4jY$2#f)RHsqe?tMk12O!*MHu}c^D;tS47NBK=*`ZDd z1Ehw{#&uGeV^@e`07ZYCJmp0gGN=RoFRO0VnllZXbm$q1Im6w?STd-CYdxA+8S>6pGHCePSRq$Q2~d@jZA<)i}QAvinaD(b58d9)dH*-YjxVlHSuq%B_)Rdw>vVHRKVfH)c@D7%m+` z0a;dkkT&Ek6-&~W+o$+X^i-9KAz_Qa#}^M+WLzG0>A=x|T%v93Jkz-O0R{U>QIon4 zoOCOg|AeM|pMRy3UegDN%Ouz-zKg2yl?$y&rGE#I1A*ei3qYSh+}hYXo|W|3?yD%Lk}2g4NJe1Ox($^3kTAVm7nz zctN!ErQd?A$w*9ZDImV09W-Bl!sSvWQqVCH;+VuL;cObYtWoX%&weT%=WIa7Elhp#6;(*^(ctDSx#l*CC+xnYZeh4|qCVHoJu zm!zVuGF54e|GX}zukc+)TEui$QS9mSZOz~X8WB=&@AD%np3n; zwY~6f$DPW>UwWJbI;)JD<+`%%lo)Zr?>Ie6s#n^bb&FJ=qBdY| zptWingd5kuIsm51xI&#&X-pO&?}?rss&t>CxGQ7|p2|`3KxL4n&@E!q>e0u1`(Eua zY10*_z4ETL*N)XYm;)tL>i=TvtfR8rx^^!u(jd|eA}t`@poFA!cSv`aw1lLDq_lK* zcS(15cRn;{vG@Ca0fYpprwx~|_vJm$IceCB@SW5M}CQ3ls}BS9(K z#vj`D#Ti-C>EaECJQR3KG=h6(*1MxAR6%I5@jnCUPBRmIU3qRl4pYTq*WxVT9F+;X z3yMSAW&TPy!ssy71Y+1fKG*`p#*>~tM`6#W@veOlX=^il92$`?a@LEJ)t1KB6S@&G zf;LcI?gNf*ky?g-`GU2x%kKb=WRncy)#RT$F-h+Qg12Z~2ELYx0XMkL>>F5UvcS^( zH@gn<61C9zZ)(LBn2z|8PbmD3V|$~D%A@*o;Nv8D|K{I8FXBn$T6>lAAwXZTm3r); ztFEwm&)R~z0T23K54~mhx@hPn`1Zvi>En2$d{~z+x3fgkX8msv)3U#gCDyIzLNNRN zxkTT+UctlgL3dHiU-dNVK~+)Q=0$*n8~l-?$CgBf<5#AV6w6Q0di#Gp=qyl3M`9BF ziZXyHxe^o(C^z_3vlk*b(mW|{0QWZhS`_Sd2mH?)QEIT$cfP()7vkC5UE2^6xuNV30s3^oQ3l62cW3LuT)QZ z$f6N2XctS@JlF~7t$Q&%S{_udM})H;yf^-SqJ+V>h9EdBJt9fdlX|+gyMmKWZ(RCW za-dne++((ePL9Ou=r^$7`#yee2GPI6&8jXNy`zlO&V)`wzX3o|922-^QAzm81*QiE z2lEti*#}B_obEZV7Eji@vFWBg9tO)}c$^zARXE}ZYb5Ubn0gDe3gU`7D8wR~&zFL9 z81L&F3-8OsyrzE(d6H6ogW2pEfL5S};-V*%&Ad-sK?)9lo)tG56Dg~U)XwI`#}*+b zckSKj`HghCU{PafJuT`~{pPc-Hckc?nM5>Al#ifQc{qY^;2EZV$xA#`Wo)q2Dg$su zl8t%Ed_*ER=;YU|E~i5&`zmAfdUR6nFHm?aP#Qq)g~3ZCYqH7;f;sUBJfjT;|1Wr_ zSOaP{e;ldQUSh>se zcxnB_YxDc%k7*tIu33}I5;Y3bnxZszt2)>AMIbYwnk7bfzZuce2F1&L`3n$6MHfC? zoJ64s+&U~=2Ty53mOS@C{14o3izV^@&H_@-S(r7mjf`}>D?GLco-AidAKSYmZ_`G_ z7StP@iU3NAw0G6TsH^N7LsIMML}B5ds2HTaZ-)ekDWGK}$?L>d{Q}U{+QBW*ff?3h zVSDhq#HNcT%49m8o7s~v%$k%E%4Pn#t&u*P?~jqW2E{sj23y;6Z*A3U`syH8gI*1J z0kwH0X_%Id;c0o{ChhOjS~8i*kNU5$FL(L7y2O@T_K7yWMv6*c_*6M9MtCQjah9uO z*dFzyZEb9bW2(BWSU29F8k8_LpO`GxJ6SE%lI;z&XmG7}O-D8f3v8#_JH?3p5YFqv zKbp^_F8{=c;&d=mWxNOOSft^mJi0kgJm-&>{OocOv{nx$A zBX@i2x(98ICzmh)FD>Z1e)QHkbQZM+za#qN6(KJnt$;Q~F6y-}78eyvpSV#eL2Z^e zymGGrd|cFIh+3!1(U5E1)6~wrd3F*>N%WRKxNa7Ohb}{=e{U%AO~w7&w}=ZxNJu1K zt2NIfJMQPXkg$AzT#1WWQ7Mi&C4>fpXKoHqn}qtC>JK+kkT=X){am{DXIPFY9Z9tn zCEby^L*emQ=1jvbuL&h?*AAb43nPg=^*UcWzc0a8>GOC=K92avg6;H%b(~kI+xXib zz(s3sw~cB(ZFMcfU4&SPTy7vxs2$oLDFg$k4rm{&CL(850E5hO9#zpxz;)~w%+R-= ztH2VqH%LNxLNG#pfb0g6&41_-LKAN@OWSmex3QULkqpRPGLGx z%S?A$eeF%p@~ciA2n@a<_n5D5-j;6(`W&C)LXc219na8Y)@!zGg7;CB3{dF1yIUyk-O?Rl`faFZK-10<93$&KSYOK}5 z=)XvR^3^+A&SfEHVIrWuS-dD{5cu^Ja5x1Fzms_e?_QfN=5PA=A?T!V6^PXo3s@~w z0-509e5zcojO9H-QQ^e9SamiO=NbFJWVVN2Pv$f4<&Vt3o=fa{!Q{9<@wn*eTxC5C z|FYRebFF4u%=`Y{`);b)V{h}1&fOwGP4%v~M5vX%UyW1o{d%CR*YYai1j+pMje-{A z&T{KLlii=j4IDa?^s`~B%>7MlU)ay>*v*LabX-*Naa06(QuS;wlBd9Cu+hT~Gth0d zS5R9WZ1qC`Ue-Ay>jI46vMP{aRpI0KmbWB=zWpwTR#fK|?`2tWCT_Wr$RCx91&**@ zX|#r#GEvHLCP&*t7JgRo;e$*Ht?@&<%zFq5fy1P7&6OiQ%yz2qm6Hg;E^|Q~a^ZK9 z6*m1w#TX2VSY%eE*aIa~)7f~WmfMvMS2}Oib0G2t$Xr5j=BPTa*cVdP?Uhtzco${*KgnQ~7N>7XBe7Jp3^5s^ca|AIDJ7j%WkO?r# ziV7={Ws$PF!7T1gJ{`M~yN@=6robI*}>}HunrqT|hBO7X> z6o#;nqL-sz56X%_ONI#`e!i{xVW`|UG5IwUND6xzZY{P&5l&0HOBVZgvN0ltBJd%flkY0s(C=7T?*3XC@PI8@|AG??k-L z1KNBD;hRSW^~Q}+F|Qt#x9UDgkLPptQYLV7u1!u>8$Y~No38xo&gFhxUfum2Tg|#c zKqbB(+z9$|>@0e0-mM*Yxb1aMs_IswMBGD^327cPKC5k+y85-Z!Wl3c%|S+nWN)*)s-=h@c6e$`d!w&#dYL%uE6XT ztR?1Ix5hE=$%=svy=voqL#zlq%E5BU@Vs?%r~1)S1%zps7Xm04+i4sZdu8#7_dnxe zi8%k1sfbr4kIdQfSAepS`stQFGyAB{T=-aHEkU*)E{qBbqMEXJZO z2+%NbK$yl;-7WSiRdl=yp71;qIm}tk1)jPX59h0X-R_V?@~Yo-B+gSyr#=iJ_ze-; z94f{8us)tH3;@9$;f32F`XHQv=7uL^iL9Ep&OQh%)GGVwRK4wFzTZ!~)Yazh2Qy`| z{14^k@iN|Nk879H;au6~+mc@VXJO-2+($0?8dVmkrz53$51`Ver~kgWJ5i*-!xS-A zV)$j1*GJ6j)owm0?PtUk;FUp1J1$dKYwJ}M0kP(+`GTOZ9ACrK!8uYM7>C#MomTN0 zQ@Hq!IEhjUQ5lm3r5aO9^y4>=N!UKYWFU z5fduW10q45N+o~Ot9q+RvT9Ys`?wsP`POu*-Xp;BbchdEk)G*}{)$2$)EtPfs)z8T zH{CpC%MGs99h;DoQgH3wBvh)0U8yF#(l#nUrLKA!T&!V!m^ocf;ZB{%Hwwk3Q#qck zKx61NW7gmA9nJK1*|9Y&iA28Ll%8fYH!BuavTJnc8CtY;hHSQ%L>3798lPFeP35_u zuME4M<+{5fsXaeh_I%u2vu@D{&Qdy5uhRa*gT=vSy6{!-iJ$&B&v9T&hyMOmYbNqwHh}y$x8jM;x z)Whw{i<6S9tjf|6TdL{wHGSsGuuWg)ha(UIC>Ed~t>)z2OcgQ-)4%`9c zkjG}03J2_a2L;w~Y}QMab)1#z;xw_^P@XDDpiY|+XAj^^8MP84aB`}f2@ znM%}V$XE%b)fbr@YR_i1Mt-Wz%yJnVZ4xkFs8bTsddVAB7zZR5vt9VAA!IOgV{eZR z-Wgu`Io*Lj8*DXz1>D!tP~3S+q9d=&FA<#=w1pGUil?f6@}imz|7Qisbn(ZYfXU<_I!L9eB9sD{2{i|uquPX zNkhT|8F8&!?6r%f+(p}cX-5a+AibV&E!juMTL93smEO&i32b%!!L z?4j$Kfk2lC*f+gUO_mF_c(GayR}1#beueys5~jOl20eh5EKH7=mwm|NlyM67{m4&i zCNHSujkB|@V5j_bmTbmRR5H*0E}QUP{wo7uYZfc!ylKG?*L*_h^#W?a$2>f&%luu^$pZ`P2A^2x0m`K`vNF}C?;RRa&5dz z{~Yu&7wgsjpul?0bBQ)dG;mWd5Llpo)dZo5D4u3RA2OB~E04VYm5h^j1+yuj26%bOu9Lfl>3Q&1`;pqiW;f6Dfl-JbD}JvhMeimwm=uAV;jz;EW^OSrJ%cj@3d4RjT+C4CTW3)%2tZZ zZVm=oMEQu0`%}BqH5}d@M9_HvWuxjyOt>MC>h5|*@)%|*`gpKlm7ACFxeKcnQ;bYoE*0{u4h2nz`{(JQDdWveY=CSFpiHkUJcyLJ zB|UyCZ;dP#PS_bi`geva$)d z?=U)s@f<{Tl1NDDXlb{-n{`iBBrV-zNnMRziyd1 zmh$R8n(i`c?V9!m+M2%}1oiQ$S~IhJ+_Y5DDZ1W{NY>d|AuYF2*J^&-dvEVm$Aj-JHlB6;75|+DWY{|;?6X_cyRL0$Sk*>5>%{@I zuO7+lOOl6y3P9B^9RJGt%JlkCnmJn4Tojq~pa;BX&_h)5ZqBWO#36yx$e?G+ zeS(>8-4%*Ep1pr&`BW>kBnmwj-}ill&=AzJkX>h~+TAG)tIk|ytd0QH3agHv0(^D0 z<8kN11a9*s-N5-YU*F%?$8}fu_~iB=-3T}AvEGt<#hDFAab57Bf(!_NJJ9lXdE&GC z&~13Qgq0VxSbc~{`XiCe?1Onu6x_q@)ol;!lgVc6i7KcaZy!RG&>kL_5L+6dvdRpm zk6NU?%PK2hUv3VleDlHtwZL4nRubsplnSO}<9^OL9n4nTbI@_)qx2eL|7;g>KiT;Zoci` zKZ=!Y`nQX9bK1*0Lv91ZD%y5I^p#_%$5t7ab6d{J>9>&nexQRU+kmKf`>8KqV?(HzG>z z9w5jrwjcW<=yJBbN&oV(0UtS?p1TN{^^ z+LC`!`h~U~w=M_P_mBtTMecP&{JQ+=xLu~BdXor+$Uf+Ync34dJY8z2hI55PQ*qEz zaJS2$&_`1?eZJW*2m#IXb$q_hCa<~8L?M`|Zo?YN zH)1m#`!4IncyrV1)jiF#Hmm)3_?f)4F~eA9X*EPX9$r~E1lt(_abke(UUs-l%4Akm zxdF*+bIXsZmWjYY>(igx5cT{uIhcW&ZfTr-jbCP3LLWe$YCx2KVSQIilGS$4u1iYw zzXd=f2<(NA8!8YYcdLi?KD@CB?AC^w*;ev#XOGJsY+HQ4tya4QiCjONWbJ)LR>J}S z%~=_dW_5rH9o2!L!xWB3lZ$2l3p$I3r z?OSMux0wk~U5FG|ZVo)ZXy`XTOOY6$n{x6Zx*W_`A8TJd&~D`0IE%|%?#`m9m706I z4mS?t1RvTSThPEFkh~zkUB51MH!fG%4N;}Ejm>u__y+(DE?Fr5y^L0gnc=V)QPNl} zF4gRdXHH2D{WgS7RLtJCgQzy!*^1Qr2!Z8P@*55|^Km zu~vsyLP{3EZTF5sOly#5$sJMzk*S~DK%ptpS-vcIKtOGNIQoY~H#1>+P3;85ppg$j znbtfVNlSemR;{FQMuXLEIiJJk0+suh*z1DHdN6go+~_=dYz)LYE<3DGifgU9bZcJO zQ>I4BHSCO;&$>T=$ziNcebE}u=M7`3$q^Kwj2Xzf-Mj|8j z?d*DNIC&xKva=xrRr_A|>m3m~och;!d@^-c`2(U_yuKtWZ5bl_9A5_r=BrMxD5!+s zZ_<-}<*ZC+P93Gd8P!vgY}wHFGp);UDb>XEMo>t`O52g1>;j`ItSo9<+g7WBXA%=d zVu4}-_<>5A&+69(avM3uB!(#g#|02ICtJ@-L=x9xyxXcBw-S}7XjM|_&09uk8zSmO zyk5IQNCf2(>tY=Rtc0TjFgV23$4 zJA$txv#`)2duJ@Hb{@M{T-u?>dwSw|jc|L`%JF!|PdyQd>VBSrW{H)!W~{3h|I~Q> zVYyTJ>2hyW$#5Unc=*?R)|U>z5Z-cMEuc?gv!o}c=f>b!avNt`tas3Cq>M`n%-yd} zDuELIM%s;zL$okYDJk#urq3Y?ldY5#+mk_~h)X$KO)-xB#p&JLhD`vGr|+ly(OC(l ziPrqY%Ruqdg~tLNFn54cOD&0~ZvnZ+%lEg{V#E(f6r~}d5%ijkoiQE8(n-AM6BN(m zos#J#%`!W-nzW_656bN{92^jpb?dJae^$eAbkO&soB6dvGIy=dlj{yTE{H6pb}jwKI-rx`rXCzI_DRtxB+LcEB* z3g>I-Rh_WRH-4@(NJ>a>O=I(|CbMYE|Y$O$mmm z5h1*gkZrxL45Niv#m0qq1UxRgbQDyq`$o6wRD%%l=nFD3+|sF5mWNatYgrKsO{nD| zn0;=c7kTw6jF!!bFj@$L+vA(vK3F+0y?R9&Eu)=Ompl(2D6P7eFJDA+hPm3RLrv$2 zG{`P{QXPfQ?6qL2voRH>FGfVcgL@H@ULU4UyqS#;)Lle zMfx6@C}x?PuUr!8nR&V&Q8Ib-+UWl?_HYN!$hE_s5wxPo5C(-W1P@3ypjClhr&hP^6W@r_=uWW2uNr$05N zudkd;$^tYbz+VZOP*$jSKIE0N__-Ru?R2FMxJ-oZc@(I^3~W7olYzYKnmn>re(P=h zN+JS*@+yJtUx%v_*c^Hb@l{j5eHg!=j+TS;=MCNs_hYFdcZr3QYh8}!BH>pb`+b-S z*hWj?-IUnS#5D*|44;{CGD=ejc7WGL-#bf-(4`Dd(Aq?e`$IKmGJ_*QUqL@=PVIHFEt z9tJ2q~storz()ejS7Zw{^w-@}_!?fzS@im@zL(W@&K{N97P-{DGl*weV)VN#H ztpI4;0|=Zj4rm^P{{6*y9hrtwwK#v4+yvC!^*30 z5{pw6dMHnj6XaPOI?snGPJ<+ZH6>u+T1_{JV4P1YK02+UisjUvAYyxxN-;AUIoSV zHD&+x=9^MY{=8Ju(#Xg3O3+eTgTxBFI(%}}`nfTFUYMKd z8S-}q$ci)is|*Zp?(NUcZ<0uV2*KQDfaC<8yO}96A)?tdaAfh9+9GBa6T56M6`qWX zr7;Rx4O9zrnUtvNlpJ91OrRZM@HF4GHJYT}O$%tdpm?r%MX|RFC>}MfZ-I>xt}jRI z>5P7$shubtmhaB=RLq*3Ai(`;Z=K^y;zGH=6nuk)#wA?E`ylbZTA)Z1|3aoU2^JIU za>#o%1E#u2NV`^P_gaE2u6XvU3s{{LkLhqPp@hrV(12`K!uONtLB@}kZ0)DChDDT4 zRX8YmEEE%d+iBdXVkM-c$s!H0(a|c&+$BEu-(CIM!L3El*I8dEq67Ut7bUWhC59O{ z=)_CI;`zVMHWEr{&thCSf3@Hq>N`iKQ&q4g%;Mk@thm64_0K;xmg}!e+KJ0nG7CbI zE8C;UXHGM7zDmW=+Q{k-70CavY=0Y?;0}_U9NAtEC@1JE%?J%J%rVYx-o=_n$$)Ou z(9mqjV_W2a-)zIioYgP|T+&+YWVZ-_TmNfDUhj9eLe@nMsR0g{>Ydo3y=G)6&im5S zQondH5ZS87_52XXR|77vqRoF?T%tBY$0Ms2IcNPj*@-O1x0j#{FzcUaAtMMd5F8e_ zPPghGTMIT$J`gUTmcx; z`X=Y+l-Wf5Kr&lhik&D`83XFm+JBq77pBDX5A#57^?V`O3&t~1$n=vwrsw*ybQY>+ zh3ZD}?p^2kZmCG#E(F96AMftYHF3RCqzN#ZG(H=l?F|$Ejm7HCcB*BOS3uU7iew9nrw~cG3_X(RNq|a4 zBg2B*^h3mNIGXp7f`j;Mk;(dbN-qiDyK|5)ha`{sK^A>};(cIvL-gNS05Jw}7YN4c z99=8MtE)a199?=qAjL}nF%kOkZ}uvA-xEcJ^@=zNIB~-m4u5RmS{E#(bCX9=X*_E zU6Mj6D-%j&CsE5hdTrw0f6bq>qSf!3LOZ)E9E{$iLnD00vZ)$N$h27Rsj>iNu~e^R zY?_{DhFxIic$~tq?A|k&V@uxWxR~%oC8C8OC`f8*L!zeiO!XQgn4Khc5fJkpPcvn4 zYFU*ns0_eh*=6#5AU~gxPNmcz%o+RpH(HL?G1pAU&(3)%y1bmilD#?k*prTfe9V@T z`!8RgO7=50t`cBPwTL?{F<#O@mrFX@Bb}g);WhW`-h5ZrSFHRI6vY*bIgau_J5Tg5 z^Xc{v;61RVf`z$f@V~G5oaUCeDjxNgLPFK-V@(w)>R~{i-NEF|m{`+CS_{kVa#dQ6nEj@trQaE^;#d#jN?y#skvPd z((Fo1w+TTG5E>69&onIK${u#2?bi~EKTa*G{-em8MCf}KtJ4y9>swchuHQeAKKj4g3GrL}J#8tcgA!!PQRiK`M-}^dG4W;vhDyv( zga1imrb$Afy*t+L_nhIEQ+6Wv4(t}6TWP&Rj+2PsD@!Ra_2ie3MxX|s{9VfKBK9vV zWuKP6;u-dQWA2ygaVBBY+8K=XD>^1d!K3uu5pm{mjFUMQ#6T0^9-zrMzbBookG0nK zJ;b5B$Y{GlwUT?iubkAa{uz2^4#hH|W=70Uv5?<@#f-$R4Oi>Or|5TuaS5K6XK;FY z$}mF;IO9ETj=Z_JSTFsJGe9Ily7tQ~SoQXQhW5n+@ z3JkfFhaoY|j`ksd2J&(L+R=o(YR$<}x+9j$^~oWeq0taP(!hKP`;X`|_4_{(%3;(v z_TQae5n&c(>IVlvUn{2-8KIa#wAR&e&?q*7NBXSp)D6-lJ$uvs2ZUgl$iJ6<2C1)PlVrZe_6)%35B^cxlK-<;@bak6eKVWY2Zl0$Q%J8T zCCU59(-|5x>l*Q!Rq$Dp+J@RD_KQg3ID7(&~QzEh;C)YOhGW$v;AR`jIxZhzH+4E+Ymfm6S0+>nnAFFY;R8i{xA4 zF^eFFvE8J!$Zaz*#t4hsTFlY$S5^B$qgK+vHcGb`oK3Rmvjtu_X8m*4E62{Aa|!OV zH+hRMfG(C5Go1ITer*&uDV>PfcKgPa5cn_zf-6_KIrnMf^AQ$VzyAf=Wx{4{e%!-- zYO}70pb&Hw?1+lYkH*S*37%b-zb^QI@j-nDn0gLh3K@Q6-zR9A8%L}H(ut3Y1=<}e zmFbD)J4DxaDOZ-7_aDrl0BZt6;ybS)#Ozr;99Hc&Im914`zpf$_?cjZFNN6U@y<(I zaS6zhjxqjK-71vzfCu~7tzXeRTELewl8;q*qpq-EUov91mN(Zg^zkXQQXnuzpp8O> zd!mWu)^rjBJQ{_5ROf}{@6lrJ845Rf@`OHttX6Nq0|5Rptf?qKy#5kXsWZ9QvR18A zvc7%TW)|W0#!YhO`Q6=;5&(|{YFHVDg~8jFn6%rO!=#XGr!2W;E$UExe>NAjq-`mW z-zzP^t%1d;;eEbXn_2G>$@lrhy^B}!Y-go-twer0$iiK6bs==T8tzzPXlBq?iDw4~ zw9*`ubU=h%@Vsg&`io!AV{3$_fT{pJ9|@>kD|zl%z8UiX8<+9CLQ~HkEOqI}aA|)P z_uJn+x?iW>DwlkQ3u>gDOh@T79dB&vjxu_a>iy8PNjD`_-R^LGed^~L`YjSY8XKsw zC!f{WYDOvnhxtWaLo(o}nuL2c_M~{?3I3zhuQ<$GGH@hUA&FpTp~6J*+}jP3dkL?D z$V$Ro{>5x#*br(+=@-4Gy4#Otm@ELA=$+UtiQxB^8$L=op(v*;8A|0@y&VPMjLwMO z=)X6H>5>qDE8z70>Mag$qcfQFLBFH43%Hlx3^CT4O`NEacsQNNF{{5qdUY-L0EOl~ zb(a=S#8y~Z`c3Tw`CzU=hxgA94JRpgTV;@sRTR`Y{G$8|UxVWsLU@BlrNidT7v@)( z!+*#c%}4;~L_uCYkYrXsdX1XQJW6-NHe7t^KrK7>;%`hU95?4q@U=u1%5>MU zlhkz5yHRtUNi)bApL%enh~tW1U0OP?_ciIrQCLteKi|6UC|R}XhO6J`=o_ypkM*3Qj3DjYRJ--6c*ZBI$*}mR^>T`-zh*rt`aQPO+JO*GTSa^R`-v_B z0s>mjXWsg6t9iJ^E8ePtOK}WN-TMk6Oc=NB=EjEa(a~e3!%f^52VPp-X&=@%ImD7V z{&>z$MdH^ct9oIM;pceAf4r~tFsY;&zb;UK4FAN73{&j>Lxq7BP)l2l5R9AD`>}_5wT;!4vlVI1B`j&VY`xo|?aC#!&afrt zjwI0EcnKq~{?6TT-(x)%$Hobs+U#Gpx6WQI=J@-W7dFWZiKds0fGUHoMx2%WFG1OE zFmRB^`M3msEk^|+L!Q~$Hp3|XLR^K2iD4hurWIfox&UT?}WbpC(sbU@iH z&9fsJuy4x*NJJ-Mttkmz4;;bJKI0#12CtUm2-azgI6<*rQ?U)fxp5)>de#6L&1I>S zCN}@gIu`$#!nMEmQ;Bt3no}glY?V9He8>lM7PgY6Q>(jb>O$@F^;(3ZHAAdSpM;~2 zUu-QF8ZGB8RAz>SXK;h5hd8CYP7r^B*pc_EIR!IllH?FW=uBQ*n~2^I>2P@HSctw( z#p_bW+r>?pO#EokJ~wGh-R{h&Xp144`a$Ery_zIyBCu{abBn@W8uZ!(O8)Ud7`BPDG+@!= zsV4tm(c3<1a_I<>WL6!|`#1*mMC`r65mu$wCta(v1V=FJb|-T53NJFx+jHsXA-G=+ z@G{$>R9T>>4WBgk*1TFox~SAr%mQNI!~HyK9>oNA)OTu8xKi}z*;aVG4r-A%4KPd=>8ur#{~mkGXDutr8g zm9xmV(1&`g|9k#-bx^mgz@XrN;B-0pJ-L+e2}zul+M1s^qiukEE8&w;8Ju0uQoT?5c^#b|1vqgK1d5?#|s%Dq5vnh*@pi!=VP3N%nF| z)gOu)e<)(Hm*BU9#$-&kbmjLkB;*wku$&9Lz`_){#&9M7Mde@XY|;8BErutp@}NNp z(1NammQEbfG5X%}Qj1g1I>isSwwuC~tB4FA^_0)pM1(a7Gn!8E*net9c25eM>a7IHWgrjaff` zkR0#+nJ&?(`SS<2uiVd@!MIN@hbv`4tg4Vn7o}BE0B3?~=-s_(SpJ z+aM@|kSBPcsv4>D=iDt!pj{fQu5gD4#}k>q;gX~8=%@o=I#z!@!r8v}c(L-z!q0$p zbD7Msi?_kSIb#D?sxfxpmCzLOFy=LMs@c5?jIf9JCtAOMiWOMTyQ_!Y+_bBMSql85 z52kjvySXBJLa-m-_{{%z77!Pn=(rjfw0dZ=QUKuvm7^NGCbG(-askRQkvQUPoGA&% zmhj0-Wwg{-m71;&*%n^Y``9U7dK?hpesSN>lWLGU`?bo@okvAqkBLsXWcjOBcCGFH zP+tUJP~}jtB_S)?4W{r>atR-OvgM!jBhwcy4kFbTw4-LaRUHu#0yYH-VmHY2BqpHN zM}JAR=PRo@%=9|!g(Sc9~T)f*ERNSAqILnai^^4BCUb&P>eK5b0Td2QA))#Z& z0jtzyEBEozwHXJNC79E*{PE}aC)jJIc3M|5SCiZL&7RPwovHJ0goM%h$(xnXJuPN~ z@b_;yEsgF;A-qrLUE*+NH*R(X_?D}R{aQKrIH1N4b^@Q^AIy!74NcoFY@|2zg82I< zs~sTCitDr!3jvkzyOTKI_tp^T;M^}Y=CRYu4?G96g=!o7+EttwjK5w|L*QCYe)?3I zA3p-zk`GLzwkzPLTX2v~o;@~pfn1)syUU{*GEEmN3_4UJd}@4Z0ro|1m$K6Mm-DYK z{@UNM7XftZ+znEEuqJVd4>q0@L?&~Xgfhlw)8K_vi`m6VfTR~-kTuMN#z>#xsiwj| zza#(G6zUXj6YF$~i3|)%%o12iBilK(^`F)j$^34co>oo7n@Q2u6g#y#@v}aCmW(P8 zo(pAttqxt)OdENrZ!~SWEZp0=UtZx)e?JL=ryf-CXd=6Z7Tu$Y_m*o+^n}_ba!rtl zCeYLf_^I2uqxSf3v#MjrNofw5#zmx;}WtK_t z4{$kPppAW$NR{X6CQCxxwc$>^5=G8T-7#mQKcIM;lAR^Q3$oW?2~qKaDVw7w{L|P? zX)Ii}a6GHRigqTNy@EncU$5eHcQ*IIAauMcfNDd~cg?h=i2X_po|{(K%Ib)eNN$r9 zdf@v|uDLhhgu9j?DU~JfYqMFQY-<-a*}rG*HPJN{_*J}oAgs$JRIpj6JFAo#s9{3Z zJH$Kg87-+p89bv40Q=J)WIm9mvpe4YMV$T-!qXz;WhQuR_4X)mx>cV9kI1;lN6BGF z+|LEhe7)WD#hN6sO36HZj#}^seSmwnK=_{*AqsUj$9#1~8^8vGl!rHuui9%xN~W|X zX#MNkPgrUSseq2z9<2t56W0x8nJCY|gRN@~5%erw+%l|oYeLf9-^lX1 zr|FsmH?lI8m9SKxIsToq}h8M1S%8m7TBhzAs&aBi$WK-qjOV(LWWWl7>U29wbA@cm;>ygwXw!gr`fUH@qpHdq* zy8oh_03bt5h_Zshz%SDVhs`ogi8GiEH;@4YEBX^kQDPgY9PF+8O~ z9zaXU>+%+3;J03OGgnZ61H3%hIlqQ~W8e34_%aLnT;#$Gk**f^9h$Ot*c$kOVe;`q z)NFrra2jDEc9Pp37Lkf8wCL}wCjFC2x|>?Sx?3-9`gzVDhH4-o;*!xFr}=Z!U{eJ|XxVkp+2B5OCeV*_3poXA#Y0kFmTr|nipU6XG`@>> z2fY&UyL1MSx$XkuX_GOCIG}r_gK-F(UmQ9-^bwwFA-M}U7jhQtV_c@i@Qp0`-cxD{ z%8o+osDk$XdwP^JZ`w>wS0YN1EhWm{l<3kc&ntkZBY3~{b$aOmDZX&URWxkh)p2S8 zBA|9qMceo?ZegN8!-O4vJWp3mmouRlu-q9d&$68Y{+w*|7V1?7&@c~H%0xcVmD;YI zBxBCL1ce#8;>=_?q7)lm7Q=JfLOP++F6LS7KRB0AL0p(xBZ=WWPo=IeO`g?fHu27I zmp!KjJ+YPma=WQ5Sy!R-!&bqr6fZTX!TJe~1et)B>0(IZ43?SqUgFm0#Yb)DuZ{yD zRTWjgEXv5vBRtT{h3PAhX&7V+D58YTMi(@_KU3s0@<+7DM8#I=2Zi~G5zUHt>GM%> zuad2(1U!vrn&e{pQuRo7t*K3osb8b%e!9Ch9!suU-hB! z@0NdvB^6|mS2Ee;e?INq-u0mN$QLRpRgGgKGzgW<|8B-dowu@k`VSJzGS0S3tPcZt zb?^ebzIOhbRG6Lna@gYkhx(Q|ZOf>2S0q1Ytzown=&l0XBy?Yxaji)OnEkg9jcTj1 z<$g!M4Aq*s52AVBiWWx#T|+%Ths-P1W?KHIVSWVUHszu%1rOF!UVhfqTR%c1kgIxOg!09BK-4zSM zL*&0IpOhHs2{n&H`a3g?-iL%l_(1xU-o4%%vnO@wxrZ3DP=~C@{rvK&$|~f8oU~}^ zh0*0^5x+sD_d%_qJ%J4mfv)hv|C*4WZ4l%h{qXM}?Fe#hMJ&+c0di@M9Y=x*3g}S5 zKgL;9KG0dkeW!D$IAI z8hGT1amto7Fj3+xxa(JO@LcxF)AJxJS@;g=l2z=KN?M90gNt6uC6t^k zt`r0H{GrM8exhxYVP4Mo_rGc{-wTqy?kkH>dp$~S4aynVa1aGMGpAAcmCQ>DASd`R z{^3l4k#vN((#ZP!^AMPOg#i?)zZ0yho>^EjSHC^a{k}yS<>YYxU0Hh`6Z>S^Zx2;p zIUUXglVC;g8p?L2Hd9dZ%r?zY$YWew|5M+hf}=cx=-rma;VzFIV2^xVz9%K!Xf1G^ z0@GjgjGcLqGnXSR-ThWNG1=>OH?BJ5vzyZX^M;*8eLQdVxJT#PrS@EZ?fGkFVLF7| zyy3g1piH^AxZOg4R)nD|DD&v5N84iX&4)X>xS3wYVz|cmA=pd$pR&5i?J{4dg@5ne z-Ni1e@n75qH?KU^bm{sA;(H7*v_ES;+$w3VN(@W+XZVU(Cr-8V`kdjJsmQ&%dpU^q z?0?jcTA7p)e-$ZXmtj}fC<~&qzS7XpIGRSBIfFKbL1;VJs>z%7ZoM0n;X*7c{J0o= z4bJ+0dL&;=M+-4neWMiSYmIs;aZGH}$cK%%31;90$|=ZUVe9JZ{NPdQR|5&GS{|H! znxr_sQJ1pB1V1Fi==oy6qLjdlV}~RR+i-0k{Md3tCvWn|>#1%>o4!3yrpHs;`QV}I z+%^;#FdOF(`M*^TRK^=yFO)Af>KRKN{+sRht^X``-_2hZ5WKNE z^QB{ScqUp8Oa#9^M~nGqK@+W=oY;WLqAtKz7a~kHOBaCJG_l2IHd*!!%Ru?vv}kn^ z?1yrSE-2QFSFu-?>Zm)5Cq;nIzlL&WXZ77+H5ywAygGxAxG*dqS&f?sZhoH| zfv6;`Vv--p7}s#9?%)(7s5w|c2!I_A`(-bRd`MkS1X^IHZ}j6K%+j31hC8Y-8`B`r z&s0Kfx1eH+1u3`w- zKuy%^*i`vFKQA1CKx^=aW^BdgBhfEPN?$Avo{RcP#5_=31;|lz@jxRqC?F$5I8A1H zmt57}Wvf9wzjEPWp%(+K`qM3(ERzL9FY`Jl8{hy6*0#HB&F|IPx=mbfqe)>eZ$ zi**1nrop-Xqe7SSz=&>Y>K(mmwcP_XQXEK+{CmI)Bgu>APfBsxyKbQZ-b)hDQLro* zznyHModGWO>4*Gc;7Dw_JI!bJ(vRS5jMrTq_A-8k&U+Q&-#3hS=#> zgowwcx%H!XW4LD*+bccV(s7xRVcEqDwRfgm+nAKe=C zM!kg)foCLYb(x!$T#1#01l|<`V4yRfH`y96mS!h6PPMjsq5xRzSXPZ?^8|0r3DjM(LVeBcQAC)dSL>=JIaXvhpxAZiYwaIb%VPG zcPDs&;1Jy1-7UDg7Qwaf5G=U61rprdf@^Sh*E`8t`|f+&Y3HS$s+G(+#~5Ay{{1A! z|C;`U2-3$$m@Ok3lc<&MXP#K@e&RTh+l+WF)BB zhF-tsI1L1ZR9fQ!JAqh$jsUc%ED@j$jmqHT+ZGx;+P}30Z;g$uJmSCq6!5ne06^oL zU;YRDK1kOZPRm6e@2dXk)_QUZTc5A7!Q9;uR{O5qJ@yd>j{oUuII+)gaJe=Q z$jtj6FL6Zqf0`LZSc>WyS`BpoUPtE7-foeo#GEJzmPUhTUxLXx@T8NVUCYz}SEx5) zAE%1EwV}F5>H__uy5_Hg^AAT45?R}>fU8dV|NN;f%48!=6Mg;Mf(?4}hoPm`#`6PV z=~6C0UDTHhdS`9~1F6s3sNd#HJjEJ~CPD+a`nUlQ_h38V4zzDQbt0u!iunQdWkBnq z(_+>{{Y|GpBSD3Yvz6y`{V`(=kSR8l5hCIq+^>`h*Jkr@@kb)guT`(g+pTENVE{f2(DtXqjIPq?OPJR7s52mi43*CNZbw zkwHV7P$7s1pj_rGiPHk!Hhq?%dv9ieWeBgjx{smMt~2U7OTi5cW2^R4+x@mjgnlX0 z>4@M`8Ym!|5DxBE^2U;hg$=4<6V98W2UtIo)&>0yACl2{SH?u~i3xX?`FBLn5kF z0_H{`@AnRC4bS!j?Qb-+>_?OZhD2B~hxJ(ADogFyz)m3|v|73q-e+6@a|R6DL(9Yo z8{5SUmb!o2OmNA^JSq+iPE(f(j|^f?25nDq9qqCE8!CDvf)_S`*-5N5!GG#zMnK(M z1uD=1T%FOOtKqXk*BdgxQQB?JD*%sw__rk565#J?`q0P3NARa2MnzU~iYIf|Fu-AV z_4!BDm?&>a^~db?c(9W+uoUGV${rlw0oHpy6UU{oqg88+4tW4O9`*1`=aLjO#6Yg$6_9^ zOTr4qhw;f4;F)sZ(*oPd8C*sr>F0OY=3sZBmSZi}q*USKhZ+8&ggCXJ5JD;oN!XIU zY+}%a!K(cV%fRwiqNB*U=N4}bOgw~zL6R>%^Z*Gd7GKLas&@qy6zJbI4aZN1z=Lam zPApwO_!lxi8xMO1NXcya-WwW(F`~)l=(HM71Ey%;bFacjstKFcyx*@khds9s5q#n| zh-s8H@VuN-XW0IGF?E{U?=)0e{n9mjlXIy6W<5*ynv)W&2DFUh#j3e5z80XVO#JI< zhdG$*e7lon3e)DRbG*L3w$C3pIxjTPfe96-#(@tUbDz;G1H0jJY9Xg^x2YY!kp8iI zm!k*7tTU~cM;Q$sqk;**BA=pzlcC@mvT8qhY4w&e8c%t?kC zf!Gw+vHub)@9#lpK6!~JFRVw@Fl@B6MR!IR(+&42U2JPI!bO5>mXXiVKz!a2|7&_bqOkGta9} zd;XbUS~m5c&j>qB1;AnOw#PN+HZRHF0>a^EHdMciKZ_lUGJm9cl`#RdLx15(I`YN9?XID~1VmYtQ4pKRw&p(CwssK;iteidgP;s_eCA8tN2v})Eq zw~YMT58jlE_F1GumqLe|Z*J~s>cHv=`lM~6D24uek8ij1jB@z%utBg2HjN70?%n20 z79-kVL>NH+`322#JY5H?p#=il7~UXbd4*r-$io6ji6+r!F!>QSB-+-1aPg)cittni z36VK)NNW1ccBn9UFB52ybMSCfi!gg6iXCVvzs-%Q0&@uP`^HM!n9wVU#8=^INrJBf zC98UdkU2W>p=+;isJ-{~0KUs-XECpx+?o(@W(Crmbp&e3daeg^%%S1>ucbHxlJuQp zTvM&@_K*RWbhe7>p6^lX4SxDp1u>FQ{LLq3W;Z%tEwZ?l=2$o&)M9G(d;4zmQ`? zfb?mx=o>U0(A<%N)XthR1($S)mU-JNd{#kdK?gpM;eS7GAclmtn6+;#4z*L*pzVfN zMoRe%1; zVs>>;67AEvnsDD+4wg{-A=%E$i1z7{YvP!3k4r^077M?T(*bQx5T07HL4H>crZud) z#>Dd+qT<^F%L_7!E*`<_9n+9eB$qb)mq_Z+rQQY1gBn)n~Xe1WvC z&!D+q&JPC*ReXmZP^X>LQRYB{kG4{8N5%rmf+n_D=6x55dt$rM~puC9-tEi zJCoC*(X*FW{MRkg6RS?+jvteQ4b@e=$W=F*##!QdlcR0K6h6A0Wr}*7M(f?Q1 zfQW=-+uFNACn)zPHK575Z}`<|F>n4y^$(-2yRxMwyU`=kk!RbnuZ-t}YbL0+10;(<$@%Psv{}R7)eZf8< zR>n*u2SxU{#Czc_+%Jy;`=7wV+R5*=rT}l$xVDgqwCoKGwlUkG0*CoY+FSJ68S&SX z7R-PVC$oX;=TL*UNHswk9@g28hZEgZnhzS$3+9K0$j_D`W=weX5Ty@((^X`gKH*OZ zutE0qVZ=ww@iOOMxE|j;ce=8?B*omz^hfkBUQlYr%OHiD7ApYLk;@_qFBNjQUnV03 z34*KDooHhDCh)vERo|#fb&r&`*RQ}#gd9Luj6m6KDdq>enA9v87j#Jv(5zefVXz{t z8ZZtUDu+HLf%bf&uxhlqV>e&;ir?B}AVu}}E zrb427xSMShk7MC+Fs(?RHK3niTkW|1ScAl7674AxSqeza0sAo|NT6PM*V9N_UCtm;Y`0vG{W$jM z%X$(OgWgKc^K*JW9!%u<-06A#>#Uf^Khd;^BU zew9aB9{xCIE%Lo3u#>OcnSe91|l3xmxUA{kt0x)jTOQ8AUd|X-3U0VnfGTZK@ zmrcoxbfILEYTe<9us#%*V0R;G0)h!I_-!G7av|@!`aZ*{o(z}XFKB%8#FPp8=FnXK zAyj<68R4U-B|Q2I{RDq_L1xWr2O}$+{;cyH?hZ_#1Na2)a`b4I-^+C-hEPa7wlLxQ z?l+|{2`sAqT$3r&HMzyb^NR@uG~~@+8Rvloe(YvF=atPQF%-&_nSOl}W~-fj{J^)Q zZ`2P|IIH7E(>b*7W}LSYJRhbG8U%BXrtYc2D<4H$Wc2W~T=zcKigV-PJ6wcCqyRab z?x#6D0bmCy1_)>>NpI>30xX;@KnsA2&zuigb3XV0FKj3hzJ_>(UX#%G+_6B)}=U zTiz-=QV-xb5>Ia7f4O=6Ah>MSyG@@E7~?&3A&86Kwf%k?FTi(9cMi;!)68~63Xdz& zu@rb~11qV>jkzCK2o=Wt(7t1Akdl&An({lpJp0p0BACrF-hgGWkd3Eu|bCGo0M z9eE&W1wKCVlp8rMm?f;sOcw>W=G^(=pcO zTOi9T`p-cbr``94{Yv;ZVethz#WTZQCGs_t49bBYhNFSMJhFE0!U>XmB``5**_Y{- z{wvvgU8({rSXk6}lszsW!DnKN_hsgJ9VDe4?r^q4qYo%o)gnpxRzYTAv9JJB9jmlr z#PWyGk71$`yrJ^m5Nz;Ju8DjCsnW@vZs;g)r>2b=&q@h4orv!z1Cd zKy|l#?wz*w8TkcU^*}JqC-seCWWpcvWnGKsofx^Yd(EbEezfU_dFj%8-`x5_4?Z!il7%-YK3@>IKt^V@gO20W>DD`_MAMPxd&xm4b$g9nA=j>@00Bq8ze=$xqc2}hHU zxex&D+a-rkg;leE&WduBX)PR~3dzuBjgdEw^{7$3_Fp!wMgUR{9xb&6L!cC8J1b>b?R;;8&!$k`MZ|JD@wt0|EfGw zDbM?jRryHy`?kDKv4-GSBg2vH>B(LG{#@7d8KZ)lHYXOlf44f8be6l;j2yIvifstd zD+*-QT`E@nU+^nH=9T``?5|GQ+9AHz$*JyT7^*FOZ*CwK2%Uj)DCJ6vvmLciweOmx zpv}|>kU-!a6EU!62pH5Qy?U-JQle)F%FMvkGG2?eQ z_LKzks@S(x!huc=#z?m+JS~h{1TOuMKQm>o{&0%8&gwuvweKdp)@C;mXp>?PZ>&!4 zWpPNHMLa=%5TKd4Shqh8`hCTGToFW=Vs!}p>ndt~I2Pck?cCUk8;2QuJTr;u6Zu*7 z$iP#|Bx~zWfpr{{?@^;k#O$y6cp38~A_dD2)}D%&$%Rc}6fBs(Qu(tr*O4&VLE#@s zHTVMvpyU8-&gP}{TXRJboiak-kHP*wM;Pm3UlTy>j19Ij{zvT`tegW~?Dwk#3>Emz zo3|_YGXk29Mak!20TKr-rxH*BuNt_fPW0^KZnxrn5Z}byvRg!(37S_LAbJ%=wK*`% zCiRfVI-!5Q`50es zNKKY4UgxY0NVQ>io6cEXj0K1dRjyqt0s;OvXP)Sm>7$eiM6-}eu)Js^lE)t#?oT%F zt-$M;U8Mnbv99?l$Wa9#OC!+Xir~=c{H2lttD#ie!4%{^&aStGQ3#^y^RbY{Eto0-O`W$Wbg0E zX=!&SIw?p*=L1lAe>Mr@t3+etV}$|eEZtt{+X^aaSjos+L*2ob#3P$pt;dbmCHrmO z+m1z@MxDjISBQUeJzTSW6rvj0u&0Z!f5<8O&-h_%X7DU(7ByK6*FTjxWl#O7(gkLE zY`Z5#Yo)cU!h*glm66d__0?6YZO>J@htF)5-8JWOVq?(1^`Mz7}Pl4o6?f5Hd&z9M-N0T?k{X(Os*0 zFJ%s%T%NRzxsQFD%K_lnDo5zZ!SkotWYsoC@yYqgw?`&L@_6lDVp51!}Wej3uzq$SVus|hADFZaSTMa?R- z$RcD(5-&=FTKUMk1Sd~!gnV5ZOhjPT(DYAapFj)lgl*VcuHI$|4~xuEjhP6PPxW&U z1Jt9;dP#vQcEYDYDaX1JEJ`WI+Q$$A4Uo`)0+~-T-u`>659GxwWSzZVBZ48(-aK=1 zomlux0o)puDg%Jg_|qXH2TWB3X;Lw~yzPhi($*87l3@s$-vdkmNO9#Z1PezDc&nHU zz2Y^ji>Z6_4KEm_cIk~_@`k3Whn))meNSgCzG=`X?gRV`jgVj?p^*;ALWZD|-nagv z!P_v^FSLIb@2mdT#u)jQpU{FF)p{gi^65bJ8+@!JqEv+Or!+P9VwVmY6)&uUI-c5i zt5AuIRMhpolmtES#0%X*0&*OIsN;WhA!e~Sc435lNDk!WWc11j|HK*pMkSCC{0FS# zPNY|nW^iJn|9fFN?%wx_Fhobp7=!66WdR9PP%NFYkB*Rj`Zq`?b{#Hj^W5F`rlG~r zpJ(?uOp=Q0b;{k>fMPDBu&A*7KovxPoY1~9{EIkf&R3YJ!p!GlRuH%!Kp&wK72}2; zD*{ALP9NG+jFbXz8_}op2-aV#{<_k_GRGOYz9t>Ie98?jZ38Z6eJVQg7UI!&km;p8 z8bAGTPA(&geJ->Jbg4q!230X8{ndiH{pYPMVF_{^X)N-_>a;MU|7@`nDntLFKxDo- zcPzc-2*LVGVZ;wQw}kH3q#DaNhi$k;n;iQOuk$X%sinOpmbWpHLqm`Qws1uZ$f*eN5Ib1j{u9Zw_A0f-!DWVH z(i+14*iV5mfuIJD+Q;-{>7JW#{dkhNucXyi*F2a&ySw6O@CvyzkPeE$w&=|U4PfH? zzVs8)Dr*MU!}^1UWpi@%%ErK~4)+)viWJ_TRGMvLO#fLRgUz^0{QP{NSV%_f$ovfx zU#n~Uq+$}o3Qk2iDk#*{lB<3>{aK+*&E;xbQ8O?=-~c4FJ%Px|{ulVUfl#8L>Dtb_ zhMNC8aiYX=;L>A2{G+oJg(FLtUd{}Mrl7lWnZGe|h?!P5=^IBSO^OMuWT>?rQ8fCq zwDu$J8qHv2h!@w0HOnUrOL$=C$$y*xR$~@Q3+!tWx0 z4SYpBStnP~wlM;UqLi2ad3$%J_Zyg!tStl`a~cXBdnne50S+M;8OpybzE5TygW=YHy<8tqT|QuZVq5)>D@{&vi1!O;2K)3T5EKcZ^-0ROh*zd1*OUzG@kzUttID>-H2BQTzf4Bcb8(0~e+|2<%W^OYL01vk*x<|Yf+0*eHC zv&u-x!=vLat=oW!=IjGHfbWemVW0$_CDH(XqwDyauT7ok+z&sTw!0KAuad~G#2cLg zJQj}lHv2Z+o^)l;Fj}{BoN3FeqD_`fdOnB{%d&vNS7ZZXN)WIq6I#7NP3q7 z_Fp9HO#&Hh!|MNAU$Cu~RD$8CMxPB+0c^$q4lpnoKob>beIi{Bf(gp<`|l~iCLsC| z9kSaY8ACs5>ZXIt#b82$Y=Atb{Ss(q*FOHMzv9fh$+ODrTeHpfE8N2=+iL4*C@V`3 zu0xC9K(KiIJ`;dJ)Q$4ZXH!2hb&7lYp#utlDPriqJ}8<1UU9k9YwavxM)D6LZ58q6 z1Ce!o#BV)Sr!p77`bRy-8kt)y5n{=jjXC`BoA;HL^fw$#z0}0^jig3X&WtzH;s9t!ymt?{u>{dazt!REv4@ z&@6&e!HLlCxw$TO^;33L17#ga}w;m%IISaSusujH6Id|5_>4<-|O+=2U0D<#U- z^)B#xzLa=^S&EdDw&8un`Xa3F^)?$(mBXi@Jwbe%JAR3)E~kwcy}&)9LVs&)^Pr>E>kD?(rjJDgHdV# z7Ck~ubym~Ou0-Zex!`e#G-Ok5xFRUJ?gUywR@&d}14B-Ah~fX#0;XwbdyFyQ(;`j# zhlhskvV`T#QXVBYX%?imi5h$*J>L#g*Z7$@02nGUo`J> zO$iv&fNi4@1BAEUIpaH0@>nmUIA0zF<+vXCLkRlzCa z5^oQ;Pow2{e1gE?aZBMIjs8P1%_cUgVzsro`Q2H3f{Zr{IS5Qwj2sq4iQ6y=&4|GU zkUJMNPV#&pdW1Yg-<)Qefn^Rz?qAH_tv^D%++p0^X0I=KLCV6QYcz;%Hfz4ap&6dv zIlTS54YxjTd=}KZ=DSqwNBVNRXP5=UgnfUfe=8V7>QvS+41y9*)em@FN2=HXUcW#emn!_l;uU3YUr4QC_2dlKj%okw_m5U@2QH7)#9V*M&bVTz68Qq`qwWn1Tu z4=@Vne_``)oT|Rwy%4^N6|5lWsNZ=Ae!JbUsZ&bhJ@y(yblNBsJ#{(XWSAy(nE&ya z{&v;t5)>n=<)Lf4)aJ8rTXxs4OY^)67Z&mppwrovwRQMuzd9oS#>Z4A^?l+w!MH8+ zdvcnl&1O29$+J1s7?ndk4|hLZpslmvM{sDnBq#JethB62WZ$?jbkvEwG^fz)edV-U z84Kfm2>Sb!WI-^M(4hjj)l0LPtIQ=8s}a)=6x+|3`Q|Hg^Os0uq@<{m@cNeLf09<` zLjcGDx%u@(EPtoi{1I$Y8)^NAa7=K4v0Rx%!MCd_2P*eJYeHuOOqOZ8lF$AkbJuhA zX_Zj;U^fJIsMIW%ed`@CCZ30J$qKRYN8@Q;hskDoddLul3PmCL36MbJ3xylMY@Kz! z-Q}c`fOIx569C(x#cs>~905nj`KOqH$_7l>a+Q0z!Q1ZB^%KdT6Z$H;NHW_S2Z8tu zH9rQ=#SDoEPcQ< zHFfd(DdV@^F&c2hS1T(kYa1v>Kz}kgf?S|-`Rh~I1Z-0Yc$(8X<5`r{nOCLvJDP&d zF?rHrii*BZEc1!U`nYoLgC@;?D0Xy(5tfCzTZrV$uR0by=- zy?AXhovu+pZ>YeR@!C<}i6N&3FTBc$u z(Lh!!9JpJj$v-bbRz$_3dn&Gf?YiTL$Hn2-Jwdgsp@|UW-n56I(?uK+`mQ%vVdG^R z_nf@ZcFF7d?pM2EbD{QhU$pXu8Ug7%fGIL6QF%?j?Jd9Ep#X6J%OXz#waHBj;HrsP zXoD!9tO0T>FdyhFy$@;fD+p!~o^tKq(=Iaf5M(0@K7*R_Yn4Dq{L>KZf^UXdzR_5- zUG0hM%fF*IaN@tE(h58vzMiEz=B%Y`3T6aaOH?dS4Er8%z-L$hHWHq&8XIgYfpXJD zRl3$XAX9_nIZl_XWZG)H$T%YL7DS#Op~sJ8d@cZ7P`eG&v|KBO7BywmOlKOGD;?py zvp<_MuV?X3x$p|jWLufcMQ<hN3{QYi^M4zGBiYQq?BJ@imo$)t`TSn6tcpXZoi zwV(-(pxx{m((2XM+#54)cKu{$j>xJF9VB>Xl*A}8Q=+|W%h=pXOY;9c`M~thzs0Vu zy3vq~PC1{+JPojWR(ZbtG@nyEJN6x{$#8ZKyBrsIOdQ9ld~{0mk!=h{$7ePRDU{0^ zut}u6bOYF}0O`lpR(ec?45g>6g3|aZ4%dKv(wGg;uk&ne<+%(%D*9(SOd&T7z&6l^1t+O?)8`FG zFdMagH{EZ@gZq9!_$k}Rrf51aB$Z%-7_ptzr538|OW;WEktjpw7X|WD2o^B_I;;e$ zq`TGOjXof%7bdW+FkESA5Y#G+VrzbiT>kOCBv2NnXS4?<%;9u$x=QTkl|+Hv3S$ zsl-Bt#VuJqbHLc?UCIgcdFkMQ$PP%uA0dICr{E_fV8JZ3p$U?e4LC|ZEmQogf`60? z7x@agXA1`6!7cAf1F_Ylu>7cxwexXt0DR>urFivaKh<1oZR5gkg2-Fpl|D8~0CUwT z)%kN1fLvvJofu}bJnW34EkEz@k(zicS*x=Aewgju&F&6ox{2&K?2lzGSAIv*sYQR} z1E7jLmT#-=2&WGr@d5nR9>97cNC5<@v3A#G0*^OQGqV_$SDza!VhG5vrkq&_ z8vaA2y6bULYP7o0-bo*C2Uv!aEPVdh9{fAo1+de6Azl_R=uxS#)Di4 zzQ3P+{)w>9&L6`qLY5DePZ@nsBe1Xu6p_q+>#w`|-kk^Z;@_5eUsdtmowpkL;S|1R zYo_T9IBGSH%ISX-nW=&g?jaXFda$U%6syg}S$Pknut3kUWZv|eLUU^dc+QcRxW0f^ zlh_MF{6QcSFZH|j#-bixoY^2{k1y#dzIcb*8*m;}5E>P}E1~jSiW$*8=>DJ7?Qmrq zDHnQ*NmsKPv}=8-*~Dh4gTKOFnX{mnRd1JaI;@rvKLLf;d;#` zz=;Qw73}P_TqKJriI!q`oUoeJ9+bIZp(x1xLBDX&g1?$q{;jDyxR4sJd1BLGL52rO z*5;z`U;Ja)w7GrUGb;1BMaa6@p0SkERBs!ip%;&8wMSZ$);j;rTJn*Skeyr9SBHiz z3aB9RPn*f=gFg8rOFdu*h5^c#kX_liZ**2I2^NnR=i(yAi6N(;EPKO`3?<*kzWJ{VRRnm1&8}2CuP%fbt@AiPekkv?B0j&E=; zXr$!#;R`t71q=N*)&b@Q1e98=-$28^6lbQ}em_L-OWerR|J=(0!-v7JVh+ifBBU?7 z+u6{XM1e=8e%vLMQ|xLJZp7>bQ_n!%+K#&&0K zLN*wlMJ|mDqc^;jfB+j{+Kffa-(wo?mKvn*RxNp3)(RGh==q>8L4pJm^=su|?M{}) z>>J<_^I_>|qjkPfz{dDc^0x;&-pR!~^j0v8Yv%p(G4?B)L7lYJv)^4cd5NiO zK({=&_Deg_j&w4x{C@2eb=*4jiMD=ulSndGY&!xRlbXfOEfxOG^6f&~MBNM(j>1-@Lg zD~eA47JyksJhE2mTQGpoiF#UR^$4`Mn%8O}gg(u$cA`X@tXNNL?H1Y|hjNaj$7gM* z)I3BFeyHNO3Sw1B{pggJsULqNMTY*=nb`yxHyzQlz|dGCI}ZAsJNui5 zU7UVUMCJUsbXGnd*1{Tz(eJu-;SSngs76$E)ULy>7Ve~IK-EBZd7o(X79N^(009<+ ztrGH)3D&mi=98#bn*Rs>X~bM@HFq2g9guo}w@_cl;&N0p)i(&uaeZc1{#1y%bw z?T?wK8!9nnk3uSJER4w>YBo@)KwX*SuQvvMC3jKTNH4QhG!oDsm=H&EW%+1}asm&` z^}LPJK#*@fNT9nq0AE+(UBgeOuJzoXKUljJ;P{$J8D8~2wSap^;5%+%n4rq;BOLDq zQVdZ2t-0O-O1wz1w{rc$SN6A}=e9fGOu}J-(e(Z3L`p^_lrP3ykGcExNEfqAoJ@<{ z1N5zmWXfbOIAv(Me3cFqj2|#$;rgMMvaLX%@xWXpuKscpt)d z6rB)Y?>hw>t{AAQ2^t)2O)pfN$bp6f+`Te|X7epz? zL7&AdefgRWDeD({ng|HPnXqpSfL;o!6EhdBr+)QLdMjkRG6UT$>RYtyng9X8Fb)?n z{7LlqL8p~oy||GiUP1wJ3Ar7@-jlnwVcbipJ+1I`&G^gaMv*ZRaB)$U{^gZ3Dw8LJ z1_i6}JZH!Obeii26JE`U*KtB*AA8z`mM<%MII}pZ@dTd4E081Rfp0>tMux2AfGRVG z)4EJ1w?yQ2FyE>^GfnkB>%pyQqn7;J@4(bb^i+QU3`BN9Se@HINhj=o_&@$+>30nb z0;Zc50ZC9kY<}&r=qpd zi)U%}Pe|UgQGMRhlFp)kdyL994MY>D29M$)ge!Aj4L8_E9WU?!R}y*UdmkvKW=*-* zbDupQ^aHLKSH?xCs?YiHhM|DQ0&7nI8EB(GVFA~?P@+`&xJ+h`O;`NafwiUpNyt+9 zZ~<&e-PpQ_a<84yFS^saoF`K_5g9z^%O4i+$s%8>pJ? z!tpoWHm`+OuD_NgqieX(GhEQe{^9=F&X%O9Q|F{Ts)nuAu@ah8Zd?KVMY5dKQ%dmJ z7+d9bY^a=naB=XDV(rU=S_~87LZfVO>jnx?8E$~Zc>}5zD!@W4dY%fJ%{;ww-CVFMN}Sxf|={o>%W!}^OL~*lq&LOtxTZQ zCelz?sOh5gsqaGJun{$AYc3f;?3G|4%KiJLw~3zM25zJ7=(X;a`kg!0%wo~099yE0 zI~js38Kbc*dcqIz4{-GdgmCDEjnE$yXrz(F#bTZfF2M!9^DTfTIm}O|+ z4fjQTQ(B9okA#+E@sQ~8rNbUaH3Ho^(R6u#Ip|E@{2hulfNE;I4!r0*U*RNoD}bWS z3CTq5zwY?z97Lntfnc(NMNr0gguSKT;9PaDrXo$9%xNC;L)*oOTq2`G#&ne-eOZgs ztuF%xXvE>8CIjya*@ZK&b)W#cQ4M&0eyK)a%dT*PXdnGHVHUp zMV7XV!wsWfDH({>_quELfKx=4_7<1s)pg7OJ~T?_+;q%Ru;K#Aqdp zaVwl9SzBp*Nl;zCk2|NP=!Y}`{($%DY?J1+jq~-@C#ZY}1wR<3IY>m4Y^W)BgxAs1 zuofu)?6^$$b6SW7TIfxJL*60-v*{=f8!j@mnaN4*`W@r$&_G3<^SBSlM{98mFgq;X zr#FwJn{10cyk7(d$r23XtWH*cY`&O>e{;J+)e1>e;wM@aD)u`q* za9N5N+LuXeAiYr;x0Zg--`QQcML>P-ODIigv-m%0Y=E8MaB-&BQ6Ub~(A!RenCJLV3s{X6gI!_ZbZ{5el}%LP|FGAl#Idi zeteGGe9FVfRQ$A9f9k?6q%Tco95PsXE0ry-$UgDSdq8DP{aT5p9X$CN>#*Inzu}B< zFIkTDfe>NTn^-*2xcAW0;PJscq|$Dp4eBtKgnipQqBRKf!hpxyZ{jIPMUeArE^tf7(6Ty6*)BXi2SDq;a9Cc*RB)C(vjuY3??pqB_;4^)ra;xD(o}&P#n0Ow5T#;t?{GjIxRbL;(0e-=&b`c98J9pa5OzevhfTY80g{0Nv zh6<7!D(7+G0oA%L46){g3G$ha^{6VYOMrFLKAwD=v6)+W35cT%3o)CG@%a303MFl} z=CpZ)p*Ol*``6#Lu@GFRk$UZ9h|ziHXTZvuc|m??idV2jQW|K0-0qzr~=5RCIGc-7+7gB(*&% z=30MTwiasfv}D(-mU!DI?NtBw&qJlt-tQmVV`rrm&k428f`}6e;~vJdW8>4q34RYp z8kT%t6OB8J6WC|;LZX?^nxADX40tZE?BE8uml0{$=-&F{HbJ@XRd_>&ulWttG2Ti{ z_0Kc2R!F<|xCDSC6Ei=xhd!F3ha$Vn-25~i-KiAd^*)8rUauBkI&ekjewq`pfRcBX zfR^rJOf;ZY=R2#OOkqea&*t4%u%Cb^L3J%&UL))_kG z=~gbyr*29#6Vj?MBDE7`4TOCPX<5!6-mebhrQSjAC z(L;h1riRUT??sD*$7H^tY5AAYxk@W}tx>A}74=zOSS7wYf+j_p+Zv@J+H%2Z@cXzi z0&MKBB%{!u>u3gQ(_B`G<^zgu8XIND1k+WWGdxT?)wFjfGd$BLE0X#StZ2=y22!bEQTix`8tZ&yYpVNJ5#eumwjF`Gx0(%v3&M#ji#tX zhi0W2>@gV$>-$Lwx@4Hc97!Y4Yw^lij;Mi;jd4?BCE(O)`Cw|psGdTa*x-HKLU@|t zx~jc-%)>ZoY5cLT+*nYUdiZC*rR50zPgy~#oVV5d=sQ2Lfvh0eZ?P~}6>xtRTXLGKziEvo9jl%_)vqZ=q_%3^xSNJkzi*%pdUqUnn!C9wQ{6Ng z9<;883OtoHoiD#sO1#tER^#3IoE8f0Sktwa7KcKPIN5b5)3#va8TJckIw-4$ItFLB zT5f|~Dgy)bpvFJ}4^lN9#TK>F&olpqvq8Cnh@7rJmGneXOO~f!f%JZ&LW1u}1TUgvh@8)kA`E z#pf^n1!$4PQsMVOKZ$8^e6S_ddh@#Z%^73=h_a^4GBceSr^=T#xt}8SuD|Q)m#UUH z18YxOm;V5s?wu?qg_m7^Zpb z=6CuaZ;{4xX}4ND6JFvVnrs*Hk$4|hz~E-F3-i}@5iFs%b^^^p({%DE3O&NhIr8|_Q|QlIYiqW=TR~yLb4I<2`*K;v%FFo zoqYCao?DW}+)X8+#yq;#Q~rB;#P3_nXZ&+cn2GIL7Vb@YC0Gk4nY+Kp+Lk8GSzGPJ z|ECs^-Z;p4S>KR)P5eD%6nR#PrWv#)qg{zXwbL;~FKTM^+HL&W-T@%R4~Wk|q^Fb= z74tVEQ8w<2*s+h0KD$Odj<1x8arhj|cS+iqRly_hw342`XXYonQ<>3%q6zxPU; z+hy(%T`qj86;W%unH4cp34T^tjS4ec=*WB=&A6Pck&IbS%K;1@SLy*<5J)7q^xBMiohGYChM`|@P^6Zql=u)i0Y7*ou%?R4jnXoHvbN4 zNnNRJbYoa1QVk6(xUOT<$u&}gEz?R!!)hX zMkSo<4&|^dJ{B+v%bKVo&1(sb4Sn$uPICl8pOyxbm9?WzX zNSoQC=CV0E?xS_`WBsKQpF3$`eR4^cb+CZtn7_^PJSDgla~v<%-{{q!hr7IBSi?jS z+NL{OQH<|>AMw|&pQe%m{9cP45PZbd<3B*Zt~RSQeBJvp?xR*WL2CPP=zYHTidb31 zQ5``?A8N*l%H}F@Gb2Jmd(nM*{{n#(bTImbj0jJ4Db3sNfI9BXvo!00$|yMuGLM(< z!{iN{skN$@7WYnc#x|)kai>3-Q1q51>iQ8cV*!Bsyelr z{_;!7GLyO$m$8yO)gRz+22q$ar)1^H=-^WHboO)3tB1*M*moF<`N2feLn73>IvZfp zhUw$8i@zn~26qM1)l4e1bvq;C{)jw`tLWNHRMj2hkNykdh9=Ny+4)Z~UPv_r3ETr8 z1{GWP(H#y6t6c>1TgM0qFg`sA3m$dIR*h}?qThxmO%#re=82?)6@eWb4o&Xi$!o>u zo8&Wh;2E>5OL_fvkSQ+=fsj7AN2}KeK>h3kvAd2Xv0LU~>6|8@M3_6?)kZj!S>va) zlMpZ~soGAYk24(jLK=B(7zM$y!8PGyJ_f=TjqawmU45s&wAH;}QY91+>?W3YS6JMg96i~ zD$b~k8s9h4iLBtTm*nYw=R91V;?fTZ6xES8&G=+hR8tD#<8JC=RaH_4 zZACu~nz9|J%NhJGqwDdn?GfDdIYX36AfQyZ8h|vA!y2 z+tDSenD8t$ij=)R>xRrTEHSFp8iJpOID{`49#Tkr%=af{&x&<+I5KC0epL)q_|Hy@ zegx4pTMvloN6-MlZElm+Wp~jlk>Vgo-OQusIz-K{v&*67*|oLpkYRo?=b2h>6~q1D;eLk2Iu?T2AinuifXdw6V-$5=4&A*a2)&H3rCd;yJwjF-vb+HE^4EA2Y( z3Zq*;QE9gPIpasXBC?9Qr*@&nNkTi$%H{by8$|7w7miuucJ^62{ij1eYu#5ta-SAP z+XtpicRj_j%_f+S2g$ry?`Qr#Cv64UvnP;)`=bRZB~i=gECrwzKsbx3ZHrSyf>=6t zyWE7>8pr_{$!mjVvmH?!Dp!U6UpN{b;w4ShTmK)X-a0C(X#F3Sl9Uhu>F$#57AfiO z?vieh5~Lexkj@!eVn}HL>F#FeZr+3U-tYVS3l?h)bJp2=KkP#FLLU1 zaw(mmuYHI@09l|eiCBLYH{HKo%GqTwxn^;`aLS*!n^33(4P~4cqGCpd$q@CuIJ=`8 z6o=8gy_34CINZx(jKL=tN{!L})~|}pM?H+rZ;PBS^)rX4v+95jI@6bkLB1KzK6<+) zH1tsrh2;CwOBOKHBbtL(jJ0r=3SW%a!0_%c`LN{j*n9P~4UyDmMkIR`QM1y(<8CJ4 zs|a0)zt|=8kDuilo29|cVa}7oMiKe|D`<~SC`u4TAe&Pqu9vY-eUGan@-Z}7h%*CHVt-_Co@*)+9KAZU}m zk6p*WeXnOdE03&punWY(Qc1B8*nY4|sk2bkC{D8VYw04!_DtvK+|}z|ddSP{R3zXBfCG8Q!A{ zwH<@8!Gh~apjIGY@T_oHU&s2VTc7O2DGKwLHW+dow4b>eTZLU?!r#9hr>oh7B<#S~ zh;%e%fo-PtF*K_9x3TlD=PbeUkCCkW0b{M&4?BRM2UZ+5?hHBu!axc0ca8dU`nY`^ zAb5D-lH+@qR;u`@TNUdDrrCGWaB^_Uj_>XoR2l^vmaaQN58S!{Z!ApcfJS;l-R*+F}u8MkIwS^LJy$|0?8m}$KC|+~tK(3Zo@xNhz86|vF7 z(B%zWh}v%pt!?j4bWj%_7goZanJ`81tqcIo-`9^p)Kh zB53=V_-6(K-jP!(Bc6q+-1dp~+t#**`?#{zGWS9ZrGJ#Ck#q_VgU=Ll3OpXE_Fe|7 zu~V2`2z_6Q)%fw*`!bp%rnP2n4`MMsfi?+QX6}qB-&;bt?vp=(7Vf*<*AUP6lO*}F zHO!gG2KgPRGf~JiymB^6%#AgPSHe7K_Z6spNbL~3j?MUXAhcU1@^BeXo3m7^=s5ZL z={gd7r2XO>W4nmi30Z~L3|y??mpPD$zW>&x7qB^GrUiY^r=-wG)3=o`FgM%y#=wPb zII)nol%W(D2KLuT%p)q7hYPwIXGEW+HS?kh1_*15*QAo3p<$`6b|#=0<9IPVzbsAv z(;jVh%36J;p~Q!#TE%WJ=yGL-ztwW&!D)q zhSFEilmW+%7%%m~K%89hYE3o)n@8Zz=;y~ZdfFJiw{zvu#Kc1y6^l)d$Nqjkr#hh4 zt7-H0yN%2C2mh62p%KBY8x9e_MfI5_?%DiXqkLovP zGD-T@ukB4ilYI1USGMoo1)9gUFFCO)S|x{U#6H5;gd7P0f2hb0%rB^cVUds0y*8UGC z_GxkewG|R|l5|=8ZjRB4QDs~yKhKTLWJvNuXGCQGt4%?OASqAjR+VHK}`uul*pM|8QAk`_(A0&Ch2; z?{v3p_8wj`DuYDX9L@56ajsZwsms4GK@REqLlIqZE*excNUych7P7%UEmLC%)*h(6 zuW$TBoven-oX7pQ?A%@<69Amx$ngM}+_7`L(DYNRR;_zC&@@*A@P$_B`3Qend+$*^ z{iw;nN=qN3BJZh{e>fZ?lYYY)fDwxuk8fHxXKA}^k6h%iibfIe9b7iz_AVkDzL3$= zm|UcRi82`T5mb+bBeI}{(Z;vak!`1+KHjnK>&uf4*_lr+%*J2J+}0i(`XE0>Eu1oj z@|j%Nv0L~de+l{-Rjt`mqh!DM%R206sqJF!l(qGN;jPw9aD7$lg$NnvbDARYw=VO&7wQ5 z*q^bO5ycB}61PV^E24fXg36CH)@Afml15Xk2bv6$j@8@H%y>QVeS-3x=!8oI)OMq5 zVzWtTOIyLytd>Lee+nV;A+8{ev_OTsg`#M*{{ZBrqkj&TTv*tpMDCY0l_$o=y#5Q^ zVtltL@wFUNQ9Fyh7JAq;mI(Wt!M4-!cxC74xFNgQ@LxiPJgmoy1xC%}`yH}vY-a<| zKO59_(Hw)c@XHm+)ZV-WVVrp<$T%{P=NmLCQYY8zHZPRg({o?)$CX#6z?ExZlxM*) zn)xQIM;)9SAPdM+sfor994KBp9Io*0xK3udE-DMSLccvs@)gI5Z07n2@N=KzE-lQr zJ>4P;9Q}=kh+-$rsLw+ zgs}JJPf``DV1(cgVhFgFNPm-*?tIDL58vrc*&L!#FzhtTCW*Ah zWJ`o;>D&dpODB1@MiX3&=)Ds`zxlo8BlDXPzz*dB_kaCkWf?e9l?Ye)z(0kPDX`CA z_6ov^1$n^F3K)vn-)el3zSAz+QZ&}P-pW4keo6JmtWgFUy2t(`OUL$Sr-H(hjR(nN zq5pv5nB;0HelxI}y=beKpBaA&eAU&U(?R+lz`SRc^vkEdD&a!h=*aWI5j%N8L+UZ zw&-&{u{r)bz7^fIhRCK;nP)iULtcxdZMQQ(%6Luh1q#vgUS{-Duz4>@2{yrOok|rB zz?B{VtEeRN@Ok<(vOEK20@IyvXRlAlU;o00N*&3W&jx2pF)Ryp@(pRlm5_?#zX$hr zrqN~zgfdle<|S`tH#-;#NZf2}1TVv{uDH$el|-v-_UqD2KfT%UHp~4nPFt}2qY=GFY!D?{B5XH}JH*}q7o5ol zE-9$NANsmgn)`TmJ&}sqV84NH7Lls-_N@shH>6eb+Z~xCH^SEQ(-sR=Ue$fi^|u2K zIxu!cLpB{Nu#0Z6t2)0-k;acUN6(zC2zq|#kE{zXf#tIpRP9}t7W$KRUFI-bPULxi zc&jM+s}|hulShpQaZWGmb{_k18=gIlOWBF0VnW~`Fhl_&g=m|ucG@V!?jkjWQ^>0DAyt$R;y~(L z8FKm4u@x)6&BnXY*F6(u0mF=1Dk@vPmnro%2*nF@FXp;V>ljKwl8gbh-P**mhojba;qNV(P~zwan;Mz=d&7bre2TKJx_B zS3#tnTrSfG$>kbwXyznf_Y_5PXzsa30&@6P}Dja_&g zBR(fHCV=ao7gDdka!Gwj3$bhXzo-UF4ZsaFj}T57jF1B>N5_`UhuWK3{|Cw%X<~nt zsjG&nAZ2g&UOO`o8Cq-e<5OP@5u58tuKrdSe0;=Pi?ObiqkyQbCZ#~GSR%I1n;l&? z{qcEOaMw$y2nCIF*tmIjaWip?HKid@-h{xKX)~G^t`KTvJ&6un*|H|rtn}?QBkq$%Ia8Y#IDaPlI zzyP}?kt_UXtgbv+46&mO>?X~-6oKPp+F{vwweL5;Os z$r~l~3Y|`Q4?!vetZ>iA%G(!Kwb2+6P54WHHfU7e%6cCltVy?u>(^Vg-Wmkhu5~}GMNb$0BxYsmn-9BEfm z9wdXWS8h~}~vke4&;7=+PWh{?(JHQD&$HJiAfuMMn3~oYDIF)Ke z$M-=z`lf;*ACX5VN6LjBIu6(WRt7Yspw=W9ePntlqr+wP$E&k5@y!l6zZdbpsyJ_; zl+;22a;7%M^vY8bT%@y6{Nk*0=nEX}Y&3;3B6MHi5{RIM58RS*ZhV?wKI0(G-jyRG zXw@!+LCF1)lg(s!{*7wUu;6h;Vs;iA;lnEH#m!05&WM0*tEU)wppx}$1#=4ZR>#kT z!A0N)gC#nX3zK?Pt7eP=Y27U2|A3;Oggv6j0@d$JJ`}49^8cCm!Nn?^LQ$=m;sOgF zM9tE+3zgBXQbC^*rbA4Tx86vVWhiAbMXraT0tYSMnA5Z8QT5X=sQw*mD%91TDX4=s zt~~SBXznS(ju^IH2#A;lh`cVKI8CwU2;ua=lL1C;5x-9U?0C?mO0inY^J z_CQ_S??dkwn83fAKpVI@Zjp82A-2v6!;Ya2w#_Kd)ISHK zH&M1BXX}E%+{xd-D>oC;sz_Udl%(y{SZCOADC+uXujI|m)zyDuABd*b{0+c`nQx#x z;ck7GdWm|{e;J)Y!b18pIPOAj&+%uMrrqS-~5BMmalbZq9zzlFp#rc1rU z_RI&GiVF7$RK)=oHH)5gb#)cm5RD4*hjw`Uaj22@m&x`?zU}r(>OK1y;Qb#aon3>f zH=nf|qOC6)Za}9caiItXngV50Yd+*JnARczC_fotsmNsM+40W}2hi7g`Au`gp)TPG zVmw}B)yY4Ay+QQqGFpOL@9AU+pWjW&=mbJMJ;psLOji>6Ou&>=jg8ouoGBwN8y&%9 z_(u)QqICG7DJ=9-)(LV_cWA{MUnQirwCZU@TxnNOPZw1JnUWQL6{B1WoId}JnI9aR zzvBa=ackSQ5lG#$u^RNLdf1i`JvT5kgXHFFd*=74|1Gi9-2a1CG017kYQxb@n!=+5 zD$%@SsQ;|?c1tIqq#!|-VVHWs4gb8qAceZZX0=b+s#-0VU6|ynX9LU4t3Y7`5y9QB z;$q*^t0Xrqc+-uqm8}|ZHwJZI}Zz|en+t=kgGuTr^FPr#8#!34U?^IcBou^)eN-v6> z6kAw9vjJ2ut~lNXqPxR4#Y#EWUy(u*I;(sU_c6@1f$x(4-*?GH;5xsp8Q}HiPCM(s zocldgk{HnfL@E_OW7_xM^KaED^T==y3nkS8jgG|;o$b_G9qFqzoma#K&d4_0$@a+u zMZcl}N(4lmbL&P4?{Uqu!La#P`94$zl~heMf72Pga08W&OJ*3`(HJoXn#|H+5;7!v z^)+v*s=#PmWCLt|$R|mPHdi-Rj`&a5yBn8ckr3FzHd?}ypDGuDx-VLpTs3!@Qc`|Q zG&Q@IZnS`n0ce}}U^X%_ks7pG9J&uZ9`p0_u?di_{_i>12a;RQfW{I92BhJwO=x8u zT8VHqP6V6hwfb)V>UPfR4e|<-Y0}aKzjvA|ry(P-G~MHsTDm;-MYhIa(C!DQwf&*g z8cp&axojYhrPi++@~OypIV;83oeA|^#GGaYx0!dcNpg{!BrW?RXE!5`w7y&Rg)#6$ zZ~Nla`Xu6L{7J-3!R$6mbG5X+TYDwgL4bWY47xU*)44|5ak8N`oTj?kBb7$%J{g#n zxORzWyj}>lhFiQ``Ep_X!Sj81Oxq*-15}vz@$GD$lrPhmbUj;;;3w8}$QjIBw5EX{ zWzoYTelZ$hvj|G3&%IG^LE z+Wf-2t7?DK!&XB(t6m*^LiJAWQrpArXhUP;z~F%D9O3I2Vh#culTOXMKNH6DM-Gf)NkAx#4UOO*xqc4htZ=G`Haj${P zc1DaHo$uzA|J&+AaPT#rgfxGeE?p1Je-0>c zG&HJ3&Sr>bsPNuiM4;6Nv*^!3k&r{S#ZtLTG(QStCu{{(goWHGkr-YwPoQyz9Hi7& z>Lx$^qHc6kZ!+S;7;kANi_!>(bTd|kJ)8suT()X`aH@##!`B6U6P zEVEmD)%fs!*|6i{p5%2-`(oy`&4#z<1NY4?Eq;J&htyhVKvz_s@o%Sisfv?jLEgLC zh`!t*V~nv4{FQGR{=bvDV?)wyI^$Qjj-zee1#_4DWas8lVBo{fE;>(QbXA9 zu}e~oKAkD(HvgMLp*Oa1<#BbbJ8a46TEuK4le1}+F(;9b!nDS>2T|rv((2@m)JQ<3 ze#=u3$iGc*whW)eY9u&8Rg+mV26!^8%@&&%9fSY#Qic9Jd43j~++Gga-$^ zNs90xtp+>W%)mEv+$hEn*WFjGG@lGvVe-{%^u`G9_s8#U6}2zd0%fO@MO(nYjOmgb z?Ys>P$!wKc&9b9rocqV-iUXLpW`+LZ3m-G4?cKBuyHWRS1>V`}!mUhFCAJc8%IZ`h z*F`uDnvPJK0cHc=S@0a21%N_ojR$jF2@rU>QE=&iTPw__u067_oQv$wpd{k0S3w;)hF? z_r4!4h~MA%ZFp%t&@5iLXxtWnZWlFXH5#TpUiof||KLJMX-8!he5-b|ryY1wTbuWs zeG)qK-qGy_`J{jN!|6Q(VPUVYc{;YD_jYxKs6jp;^w_18D(ag=B7yf6M)+QA+7}gp z@buf01$V*C!*%lghtS=*aztk>%y05eKT+NWf#L7FEAu*_WILhonEn77C!8`WC_tR7 z6?QH4JIUT-^}Q((5#x8=p8x3rYQn?~HZf8Zv9eS5I4pDA2WgcJ8ce9ODgE{_?GNpx z#{n^g@9U?NVqN8I0Y~9tJSS(GN0;!o ztLCddT~)A0cY7+?YU`s8oZkMKV~nj{->&ft@Kxs z9kMrs6^u@^z#7)GXTQ>)2dF3(A!%tV*LNtFME(dSS@rkjMn8$F)C!+MVPvgzrGPG> z%G#{4!hWgjqEG%Ny4H~}vYTPH&V0sKP$$n5xv+!gIN2az^E9wo7o%6pZ#9v?u^nD+ zC2*o`ApHvem4sAxkft`1`ZY;g+TW2sv_@;?Cq1N+M1M~<-ov?FKY#dy#^|Vr2!g!A zd(6fcBg4Cbg1W+NgSVgkNEomA-U(mBO}pnv%wnvo8k%f{L069qyJ;1IAsEWdezWgq zpTGQCy9e7D7d+&Am@j-LyII5t_V3+>-?WaS=|{Fr!ReP@yza;s+(e`&p#sN=5O7-Y z^hX*%yx#|Bd)md{{IWVtc!`RuVGhPkLn8uC<0zAVD;uh?1SqA9$eTF4_Bl_QNJvUT z({mmkJczThtiJpuX*q1_>tGDH6Dol*YJA?V6$!sWoL9+i`Pg-|GAb{!A0Gd((OeJp z37ZK2t$NJlWVY+NwqDrJ7%k#-aDmUts@s+z(BsuRa&a`JD%^8MpGXPj&HD~JuI@>p z^gdwy{p88uy6cypZ_2_epz6PDyauW@zbo$}x0GJ+mbzwe|2w#q6j0UqasSxO?W7mA z6y{b((3hN4%_=t6!`E4ajHe!guz4C^GjLi*poC+x6wlQ1i9qTs`mbI_>|d9Wcc4*W z?;VwFYfKvv%`iPJ9P-a}8X*zwp{?PuJg)JHHpR*bvRIh5dxr zg}s%Hc;v~Tx>d6+dm)}iIxVrrWb7yPPzoq6M@;wP$mgs(SY~&zLa>QuJ&!4nDA6+n z^MS0Q$&vL{&hNe5#VFEf1JURXSk+I=Ktt$*7~nZv00x!84CFF~`HyaowKi@uYqhvT za#P|+x@hzaY8|?zMWo++4zy++@zn13ZQVr*_~Pt;-p=FiJ1I>?2Ldtx7+FPAvnm~KsBat`W0H_|gVjqP z)=-};FHk3bw4{)Da4qei(3D_c0~`GVj`1s;{gO62lLsLtQgj$_t*bpKtB{Iy@Fo>z zFwmUwC3k-21J`VKjJxy|SSAiY%A7`Z4w6?hcz;FC3Lrk;aiqZ6_AP%|9-Yhg4d03s z&+s2MX!%M?`?gxpu^rY?K8ysicD?e!wdgsUNqb7a-J)8}@Y(TZXZZ8?v;FHrS%oB8 z|6_?&#Kw-5Dzmdg&FUN0zy*ISB>nl-sK~XS&*sM3XVRKXf&Osvl+kRi2A)c3WN|p= z2*sLaZ_X$ICWmQWDJJ^u?qX|C$G4DK)rhb$A7rkGP5Lt+xVNE~V# z5TT&Nr7SZsHeA5#M-#r-O^S`>2T53UGmfrreq`J z=tPY1x)U&K#q*>qb%0m9W*@VK$hIz?@R zN+18IldhE|bGhUIa+u8quB%FU_5t+-M(ZY;xFk5#8mKL%zc0!YdHk6%76BTw{{F*& z7z~i*q!~ZU3Nx8L-b8GgO=cYI=psW!S3D^xATq}(MzoLoV;cnt4@C=g-_M;nVrDSA zd#((s7uj;nqGkT>gr51l{zjxo)H_?w`h=ILdD~R=jikp}Uy{3U=h%#F%XO^2a|}PW zRz6!5M7&v4Ey3{(h^LIXXwd-epo^&H7MnU&O{`@E_Ht>@Ls0Sht%_3 zot<{3Lf1AiL%dnYD)koP`=*m)>j}PFbKeA~xwB-71G%pr!PgvD^Rif&*VC=H>O-kH z=7lPN45jK;0nFWN0*W|_Au4UFG&r|?251kwnmhUW#dr5Y<2=P}2|%k;nR_u19i937 zjds`c(iX=vXJvfQiYZpb1Z$r(Cg-9ornaGPmAZntdc4S@bDkhsjoWJvcjDD%-9h2J z6UTm{_YqB0*TGEi{&vS%!nwhK#v3dd<2jF4Q9`Iii^!w`@j@KGR;Nx%5N$O(wiV2g z-NJ_oR8lrsEE5o%65T3Di7;a zg>lLoEDoDvMuxL88v8Lo!&%qpc$<9}Oq5_(GQX>zIkJ1RZ22KIyObfYnONnWNK6WX z#3B})Zzbpz*(tUrYc(;3%vA2`kixCk=H}uLBYJG)v+vNd$@mVv50VB-uX}(GKGY{K zTvNw-X)-G=q2knyTP(3q&B~OeRk3O{I?I-5FE_lP*ecrCR`%f2AAuhCKwKf3o*quZ ziBtl0RLap?kz2=e}h-=(rD_Ry)CRK$xVC@uPX9_EA~eqn~YAmOOL~;`Qav-gwc)9;tlryqRNi;T zUI}eYfPkr3~Rusnq(e z*#!>v$P(Vznw7&T|JqufGHiq28u}p#!i1*TmX++6Re>A624Ip5sa!BF=uGXLn;j~b z)puMNt>=BDqoMW-9ZQ2(GIrJ1UqwrldF>cuMM5>Ktc|NR-yn5!ER3Th${5lmW?29R z{K=*l0Ye~PnQXvfl=o6w0-T&h&kA>N(& z+C}aKfbBof8iO6yc1y+c5+66S2XR+a$=OzMX(*@`-1edQVd*ajI~G-fJK|J6;eM^J z2DpP|c}(gV1*opgTz1@O{Bz8`+8TOX0`%Z#PJp?;QE#yL{;s(9Nq-YC6P^^KNFp{m;4`m;JAU`(p4zqmWeuQCIYX zMDC9Sw7zIbcaqh*Z%qY!{I->>xs!e06Z=I-gZDa8cH{kRdhR$9)fZazFd9y5l18D@V5R#J0SP8#~vR#fku-br+#hY#grD(x}!KnSyMKlk^IMf>iFR(ZBJu`Js{t{X^ z@1gqWjr^j|v$=ZAziVlZ7~)&2cXc|6HDl7zK$9Ypi-w3_?e`98{lZ>1-7sEk`W#C% zjlU9@!4j5pqt{#9j@}*1G3&L-da}>SdtLk&Vrg{I?RGHNErg-*cz3oE0N34D^MgtA zbG{m)S9zmhkR+%ZXp|NGl-E}u^854kZ*-@T%9*oK%Tqd21G>6?o0tkdo#USygci08 zGd@MNCi)OEt9%PMic&R`g+)fCilw^|UlQ#YEW0@qR4QPExgX>#o{w@VMhzXM4I2EH3ly&kC#~nb8yBy{2rg z{dZ32k%+&A&JQk%_xDj-6i*t;?1}xj zV2od9#bZz;Ne3pXT3lwG@c_#!vz+i<`XR~?qWx>md5Ju5Lv~>KNyL9r-)nPek^6kjUHS2Bj4}Aae zROb6v_q7g(-VS=%0|Tl#@wE7l5!lVUOV%q2c;(hbGsYHlw3c{f$rI^^8_7fHukXam$b z?8g6t&)Y2J5++2vwbyZhK~>Wg26$E9F^?coFC@S-lKAU}b8L(}Pj2u0;of9IA6I$u zp_R;D{_LIk#!J{P>T3JhkfCfA)QpNs?8XgJb?A*f@e7cyjM(ij%f8D^i4S`_dunMu zpLKc`omxYEfwkLw5UsK4Fz`n1P}|MY#yFXH>py4C5WByarW zN=R?(!K$tb{5!3L(}Rj8RxB zC1|70u=qbID0O$uHy&>#d_buvHm7x>Z~aLKux*Q5BsHJK38!XTe7%q_xIX?#W}8On zpo?+U`y&@_?TL=Kxe8pS`XVCS&@P<8~_!Tn+Q#!UIG^KLM zTZ}(kmmXhX?DH*PMChbH)Q8vBV31U_Z7Tze%tHFN=2u#%aXFaZ#?4*=K?GpjO>pVw zgrnj~CHh1MKcOD*IvR zf~w2q>(!b+9jj*f^(jQ-`Hu&U&zvbVS)u)CCCN# zpcPXN{l~Uz4j}M*gRCvBkII-W-@%r-$tm9dd!q53=@%<8{l(cm;^B}AxZcNbcUFt( zYVaBJ0FAosdubL}+zO^ki-ENcbJl4y;u{^avY~IdO_1b4G8j7&^44EnfXqU_20N;2 z7cVK^-EMK-g-k0~Nyk$zv74PYoQ97lGohH}xJ=TvO`?Su$Z%aROI0n1m4~K%3Fv0y zhzqL#?{|yI#Gkmf?-x^l0uc`AyM(JIU^4`;O+cBu5@3$cqdwF&y){b6`6iBgbb49| zeI*tE9TIrAnd?AX8kT_X?s-nrSO{$(_JAeiMJWEAI9XvdSINAGlfJ3f|Dk)Jzr|+i zQAgihX!zBOG*M<~fm9X<(ErvYM&)H)242=B9!(|YJyx+%JOE$tj--%0=9&6|;n2Kc z$m|i#tF@LHkp^>V`Xx{gJ;nCIwV0D{VWn!2xBmDbOnZSgNrL!kkGOXi>zaPG8+kq{lw2ZLJ; zh6KPzDSjn;Q%OHPEf=?8pLh`BozY;>E9_H4WId}1AvgT2LV^z>(hVMlxVtp8PSjWn zxgL}Ehz=;;@}2&mf6ZEv->V{d5R2{f$w{C${Zp)sU!jHgV?W3OkyAj@8;OkgTQp%q zeVyYT&wKVR`Z~`AD@scYGfj3x#4##Mv21*9!Wx58lk{9SEuD(Bzq8KgQAuVA<^U4X zAhJoMr4*ruINN~0FA_2m4X#f_D5p%6Tf6n7lUsgQ?bVn zcHV+GSDYL0VFoxWOdC?XCq#MHv`i6!d2qaFcw z8hrz-KZuo3m&&3gbigBguj$VWSo-+*`%=^mTRME6hBLyODL9b?Q}stZ)p_7$Ul`1P z5w_^BL{*-9fA8d%j5Nk6^6(e0+aq;%J`x&f$LI%TuT4t_8fR1 zHo!A}b|+ih;vet=aXW^%*)}v>9}#&fIb1R9z5`>D%T6W1r}UL6F*J%NW(L*#`GWQm zUrFnVj$vP-etlaIi7kvEtlZ85S$P}HS~al>oUogumG`Q8G^fUJ1!a@+-Jrys%D-U_ z35f^)NnBe$sZ-dLuOJiMS!?;5wwZ$r3`NP#r7D4mbZ}EO6 zuCEzb_7^qj!9ZoWFZ`THlxxC4)Zt#3aH&KHwU_@F4vY0(0%awQ0duUL%j~#V?3=d) zM1qVOGY(39U_ImX-Dtk4cpw^xUJcGptD23{Wz2iiUnS0aOYVOS9lmKnf+%f#rO$}c zu0m=!{Du9*t1F<(&r|2>ziYREa%9oBw2vX-IvZlenfp64Z=*p3%NIYU=z-=r6GwLhho_nMzzjmF|>K zF4&E)QI0n%zOh*fcq|D zVQ0D2V6L~HMW;CCQCkK~C!LVfqh`0|lDsp0`;t20&s3KwS);=Z>cdh%VlXI3J^31V zuEHcP_}0SWR?U#@&IabodxNh3Sw_5(^O$zR*(?&rw$g)AUjb5ad}Z2p`36RHJHHM4 zytHXA1^{A7H)kg655##YWN+7#uu8(K!$N8(S+H%pNDkXjw| z>YpZbu#xZsX9Nvy-NOI>NhA0dm}1d^*HrT9dg_?^l4O$v4I7T;Dao?&IH>Z^`l2sY z)}-d7DRb^B$oo?ab4Hs6*o^}dNk06p_3WS0LE@znv-pdc^N_F=j#c-?hmzMnY}j4EVZ18qA?y9LAmHV1FD}J0noQ zr@F&eOYR{6y|>(Lw1Nema1bS%gq=-3o_fpYfB?nmWt@?f^iB_?8S`0t{ERM;4fxS} zmC+dp?GLGKx1^AyPay%-b) z%!V&)P6W!k?zZvifvBiGRR2}Ox*e&opDWN=Nb>Sb&C~d8g@2A89vFlWoBUwuLR+DW z41TqojS#y8>vz|^t7?36DoSSOv3j{OjCHOw0^(yV&#?wk zzyEmm71B0kXDh^-s->iATvLXor`3TY{Li~T+h8=!=*E7THiPjP0ZGaKqLp1BlQ@L@ zvkEEX6To?Kpi{#zaTuhK!yx`vu^I#8T}LbP)PJvr zsh!IK*(@a=zlxWlfng*R@4D-GLiSu!+D41i`$!alb{Q(&xi(OI7Cn#5t^^)IMw z4x}q|PDG$un(-@HA7*N_n}H|1!!7IVFOr(oCOpG^0ndV)rhN~dTxY;(x6*cicY_tX zFRxLl<8sG`N9=O8b4rKe>|*+;)%|nIj!EwvAYnUl8kY^en*UkVzn1Uf*E)-(@9sRs zJ;cbNFp!G!J8DHxLTe@5B@lQu{FUGL*<$bi3cruI{9LM0O!opDi6pY0=2V4!kbzNf zMu7|uuaie}4`mDY^Bd}(CLF@dn$H-Gn{bt+Z!;`u050PAwf~gLuggBLSrw^up|grM z7eJy0{0c`fGymzRw4mg{u0WF*oR*Y$Wufn_r}XfrQ8zdieXUa zGVxS@RKr4=5}ON{88rUwUKp|GWvcVsqxZLwd_bN~bJCePSE;StWtw);{$w{A?2eEq z^nCC!UL(7xx}??{|8q0B6#s2;5#-CkSboe4XwHVGcV=4PbJTQu4P2LLPKk(VoaM!l z-67F(%n$5;kO{(w7Y@Q(ulzsKK$m8o zE~7#IYrD#%J^mC^_4i_=Qdja{KF@ZGJZ-rH1Fi%^2!#Am21?%(QctL~9CM$9cVqOR z6V*MpS-}f@Wlyl0#r)2k`6d(l0l#L{AjoP%WESQkl2~+kSXd!iNj|CVEG|=`2%oG8 z-z?mwmNV{uSU|_|Y1eonr?oRllIMo3D^8#iD&3Hy3H@+wg<3>~met)$o%FBs(?g{T zcM|_yy%i6|NpuYL*tuIwOs^*n&|{4Y9&aAWV6FLcqzyLND%-2wjuN!nU2Mc7%LqQ0 z!bvrZDnNV7DLoe@uu&d#8o&3Wujql$HrsbyYx4SV;yx}9u|Hmk?O|`arTX_Bn@~Ww zqTo>~+)|6%{T@d9cOq;QJxZ6)6Nc%*60620;`DGWkBb`tJ5raVoI~Zt7#r?a0hb;r!KGU{4o}#u_X2 z{ltkFOpCv_NR|d7w}tXL$g=GlP$iz1NvtRbX6ybt)T{3J+; zh%pucbEwF>7oysilS{fkJK5wpaIb_Wz3g|mKBRoJo|bbv81Qt`7DfV>bJct%wbFDq zpTV2o2RZlZzMFa6iqYI|J*~zfT}uak`A#+eN7F#yATHSH=T{|;7YYWs#sC-4&A#Y1 ziT__yX1kMvxb@18R{58#?^_*%N%FlYe8=v+qzwfI+mnUzo;Bot!-;h%1U*05+UJwhu-TRTKNaS;i(=HYf#-UODc@v13XKLE8($K|| z3`P^8H?*!SkJB@8=#f}jFB>H%=NU6V#XGd>7&wWmwMNqV$l1GPD@!N+*ou9Nd+~af zz7|9&0S`lmntJ|hH@+GbumQ7wchePN8-z}ODeBz~gVsc!yl0*Rf2$k!W&4~KI$8RL ziueua8VAHJh*QT9;Fo9JU46<%y)2=+Dx1cv`flzi@G0-Jd-|s${1V4GW?NmJ4C23A z7f-*o`MK?r`5l7n4l?RSPWX+juQfnuP%ZZaX~*&L^}2T`2(Evg!o;Z!Q$LYmMs!^U zR|(=hpEooeHQ0|QB!tD8RMv0~Ts;A<6O^NY8v?C3cd5|dT#Kz4vJTK+$li*VP^w9K zt$u|vKf)%_7UF~q{i^V-|I6b60FR>8^qb*ou(l+B!RwgV)0%;Zzqg1LkraH4F5ud- z-^laF&qvH#9_!0*QjT|v*s+P?#H^(EBOYOqi`#u^r;a0!LuD8M0*e zEk}o&2mE3rZ|RuvJEN_A-J@30mZgByEKkg|uerUhUuw|ABcj{GKTIQ@D#yrTzY)vt zjT;YwkBJ3CfSCZHZ_SE7J5$?D=K`*GN^Sljb6Y4wjb+khg8?ulWy$pYrEJz`zwJwj z_NVI_L%B7upiCl-E;*wQ^-SOW@N`PbbP8;ZCV+6*AV+<4|GhA;dlIk-Zg6mETo>sa z4s16wqiSJ>T56ZR)2@#DW#OGXE3fX2nB4v3e!x6H<#eu` z)JF>3@nrbZD+vX()6Xiq#4M5U5C}| ze-)}-BF1e`dx#}Xc=Az)!d3u9uqj#3vU8n!Po^FS0o*1a8^nM0TpVBscX+KG^sW-~ zgGtcnnR#s+FFPQbB_OU_nXWevbI`A*x_T*gS3wNV^@sD+cZI|0BttdMDajGeM%05q zsG3MNbZ^4_Tfqkw)`L5S4By$OO)wZ{^?-elaEVcBz`=^0Ux^LU&S}`C6h-dW zlSS@ER-RAkxOs}w8L-ybB=~+I18W(^MPBc^$J3r-27{cB+UCn0V;j5VzLgF*W;OM$ zB4^KIVZDEP;Jd6CeDx)oW)s%X<}Ad^DMBVT9t7weUJc-w+-`3m&�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%0Da!e7hVzepr?;P(>W=8-G>a0%gT9$7 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%0DsNKpGSWO5dn zeOulPSN+PS4J~rzKoO)Z-%oR;nbcLu+_M>Yz1~WuH`2BiJK7a&3uq##x-)aq-o68Z zhitEvr&vwyx)cjsBi~GPI2|h~9D2L=xFzo8{)nXGnWMzm zBP|ZKDb?eXqQ$G80n^zhEX^4Pe3=?&OfD{rVLN^6V-(plNWql~VW-NczME{bISz|K zmld9USbb)TwF$mD*q{8;%8I&{1@Zhw#(h405|Bmr=Y)N1Hw@^{pj~@u9JhhrkLiDo zP=XC}Z|2hLj9FG2xvJ{Qigz_?&#`B#q$}t)n&RxgJ;sg_Y5y5@yB;{=iNz#20;#o% z{W&&SBCRcZ#?kM%(Dv$DtS3=V;s6>2O5TNX5bX1-Bq_G9!lp9}E_~@;$8)IbKC{zC z*v>lcw8mjy$Fxaks8lF>%*$MuF0_G8sd@N9`zHbA$XklYiBtI zLn2-~do2AFl4h#+DA~I8y+gJlGkXxk$bgvGPu=Pf^vsz#b&}7N4|Ew-Kx3rCjB5R@ zI-X6$o&zQGpdK}|rn8OmoR3xy7a?)iD3Tc2mkV#V<;rPrb2K>q99!_0*P1*@&XIql z5f*u3+7<6&gY$CFE{CWtSKXG0&_RhC8+fSi!Qo^O^m`pyc1~@8y>@kMsXNPKrzj_< ze6Qw66uI2<=|}VR%ne*oAd*LAB8-pktX-d0;=1^uROG1+cOCu?3%;jBN+1*4H7fHl zL3~?W+db^_)Uxv+<@+Q^Ez@dq&dt;t-K!|Q=(nqD zFma;g)4z-}dcqLKOw;SBPn3P3A&aw+Fd(mu)FH-0(SWH|EHnH0t+|&&#J@BVoK~n+ z!40}`ANS3@Y{*fZvDMMxuCgMs6Dp~ivSp=@^#*2sjP{7cw=|ri z>)antY%^UE8*Mf+ue{3YHCdmO;M&_sUtI+P%^yW9DIm7boVva)p-03Ak^h;0Vv|0C z%7s1jL-5m+)|txkkJrD12QU_;Xf4kttM7GcG;3ihx#XH9KbSPvLE+~BpT%J#fc7wy zX1_neebCiWlBnGY2w7PLpKSOhcF3&Fp7w2;uV)dDxh>6IPe0J!bxoi2{qzJ7!t$+R)oU`4 z^Re0v52lAy@$r)Ejtqb46IsI6NHXIM8y3B_Dp&1p)E)ZA9;Dlrs}reVQW)0PWIQ^zD4Kb*-gYb=1ZdKbXKbxK~QY zi&0>;{KNAl`EA+h#Djh#tFT+9Cg(?{r=R@wsJSW;5y{Y^9Yk9bRWM?(51LAfq0>|$ ze9ghztTh$m%XFj5(C`K7NmBYMEXVR1o&HVllos^xw`-~1J|2~C+C_BwIWDHM)x!(F zbFr!W1lM!q!y>ALAFIDe*m3vt5mY32P65cF;{|iVdUfq-EzD=itO_>L=oXfZTh&Bq zYgr;PjQhE&_1vZQd?PGBS9gQXbuG+$KU%lSf;PMA61ro=xzFL={2a>X)wFK{AL2D| zKf=>mt=FUJ>PG(Lc|Fv>>kg~#Y=BKUrilO5OYVEt>4GEABuL@8h2; z+ECv;=tbm;>*?=t6R-2wD>Clo$9C$r=ShfucI3y~qfOc2=U~v9HPx7WTi0G@>$l3mrD<6bdUeq5!)u6qfV&7QwYXYoIazZ|x%Gv3;(*C>T*|H$SqjHinlyijeyqx73yH z@A7QhG=xSH?G^#)C$e&9!4tn3Q>BJ_xi$xtXcKQ0t zv44HMEBEQy#RFdrrMOsjO|K4lJkVp&r&ca_dkVGM^DUaluJ+VMo@0-Wq_~hT8U(MV z)f}FOSi(&^mcL^aKib3^Nl-gL#DS~CFIc>s_;Fyb^7VI zeLKcFg|%7HHcM0PlPphdtE<1#n%Zake4gJMJmnw`x3#GeCwqE@=HvZ;jJr~=3wJ~c1qk0F)5pflaJ`eIe(SvWZ zC>bOWFo%x^yY=W^i0Qr82k!q>FpQeSHH8}x1YI~k-8Hk4<;1N26em>FQFBQNwKQC( zT;vo%bqjpKjihDYYK!+S(ed~K%{o_CObT$8)f{ zx(t7WU-AT*g*N`F*zNP0hA)>r3%6TO=!bKSuI9YJs#!%#T zjj~Nd%S!$lVOd8^5-n_Z?tFaSY2mj~w*E~oU#r{x=m>1eGW`DfkBBqulvPdSs*CRU zc?+E;A5Px9z#j0a2gpRNfn6K1u6K%jhv`8?>XnvTPY=Y@blbKH)iWwMbUyrShOg9W za`i+y1LJj;-y6H2J>mGh3jg!F`d0fBfTJPXLY3n1dZR7AT!*zb>6=gjS7*2LQ~P=9 z>km(ew|)_`bMY9ND|Vismo#jnMFqCC@4O?NCvZosKTNA4gwI-V;U~|WgtJSqGeiTK%(#1hSMsb8 z;Q*S(XXMg6?piDMg$=SBdH35-@&~j1q37DojJI<)Mn?KlEZ#w6s&f+HK=UfNr#-9**Sy0 z|LBFm?IW>S@>gF&6tD>1ki5}Gla*;mzVESgzi6+5>@U%w6NJR58lb)9+k38b5~4yE zc&ia2 z2dD*u;cs_X>l7nA=4T3^Jo6^V0|OmZ1A5B{$giwk3Z69RTP%9`vFdg`)-zmU@^xZe z$tB_rZiCGVRm8EvuTZ+hKjqWecrv09^HJ8j*3-;=w|jhtu+mwk2s2;+($2C+;JmB= ze_|Soi*5nO1U5I-FvdYChCKo{t|0Syrr1}24OfN^20ep4wH`o$eqYGXGwSqr-phMc z&*NETgu|S?N7N87{1XgnW&Mvimpstewrynm9VkCxlaCLZGKuR%8GMKxfb2$DyWXcJ zguCp?-6=2_Ke)X*r8eAK55?9TOdhp1#7QnSE71r$46S+H;|j)^_^$r4R6__xlDQmH zXuRL6(P(0ttW3LE#^Sj-Dk)FP^erg4ZC}(y@ztz|#>R+FpKm z>nZC&ThD@8%aEJG%*@)S&vg{?__cd_mwTYcE{I$F3j=sPmdaJ^FYB?%*EJ&GdRHa0 zD_eY^FGUARlY-0bw*$DG38+JNT#S;~4UWs0XZSh#>aOg<(rzyeve z^+RC7ce&ba^uI{5MpSM=t){?zaMKe7*PRI};niw&HVi3QAsup)wJSX*e! zfh;q^xL?My6odr~HVwTf_*X{Xc#&z}?q5fh;i}>kGbhkoK2Le{B3JxkSL05C5b4Z* ztV$&AGi-b6WJBbx_yXl<@Ohl7-0g1S{mq|+0|MU?og>5}1r0oh!>q8+$V1(f`nN1C z`xbweR-T|onu^?xQNE7;OLYM6I5O%Y#MniFtXhL4vOz-@f=qj?XHkX9tIF0}U!~Sc zTqG1ZP|gsZ%&NV-wb9SEQ)cI2xVD|H_WsY0M#j1Suz)OXRvjC?9iEQ^^>~aU*b)>~ zb5!@OH@z9gE=FA^7u)B@;X-PTR;eEmEPRn9&Q|T`-xu6`T5Bgixe57B@~jl;Y=uS3 zY`NOa_>X)|bsihnT@%?Nheg8G1f6|jT#78Ua#lG%B(rZH)SHPIYjiF;?|mbs+GxV9yl*-~||}5eb(|TX_zuBIO?yJb)H2_*B9v zN>sk%nvgQ4K)zB{V`a~1eq-0H$DUyMcKj$7I(8GB zRE|e?SVf7imyET7#UOb7%=*)*dhxpDgwyiRx5+z4H{b8h-Wc`=FVDvQ+6UW4{mh|W zYU9aw(Al4~-K7DI48bEEY&Js9>i!aEiv02$u=vey?~5~ zIVknN8!Jn=29GIY8oaLKt)03}eC7pt=?-;esg0bpp0qZzKH+ExJD+VOm3>yfWj2Rn zTP>8WT;HD*JnrYSUp;hPQ#eC=^+6QFla>tsfC6+Dc?{$+F*dj1?zjGn@op|>HAra$ zu7@^0&K|bQ?9$J7>bO$fEvVC_QNNM!E~dHPap%3&=E)d8V*Rji@v8#v_Gt>tT(%CAwyFAL9On>_8$R zVWFTKk%Px`wFR}v+MHHz-0@5Bm8U+<#JVryIN2G_|M9(KMYK}pFtyhk+(X3TUuDtp zsl)86-ZbB=MT6XJ@lo9+$XuIW&GlWG;7K@qRfV)8G?naX9-<%TRB5Qs7G4g!?HQRj zE`zfAJBt$|IsvP4o4N6AXln*kSpnv02G?SiD0(KM2Wj84wDU7@3rXl#OFjpr`Z4cY zr?Ke-Z#aG|9P@VBBc$KCaL+Cg!kPzP`I)jQBy8=NC3yspS~ zxgvhWg8n6(4^k7HIi%baB$HVYwumQM!Tr&eV`8PGEy7dS27Wfm6$3?MU4vIO>M6Gt z%ElP$O2~QByNW=xF!P{77fAnwtNCaB@*0|xfX=R1ZQ4|JI7f0gGIe;L>X9ahkn7Sf z%=F{wfOq@AkF9=<;tS73zmBIa&6_yCDO`59@WPVV?3!Fx81*5y)+iW4yI^p8xeZ8C zlP?ib-U@F#4j19x7{v>BFl*wsSRTq0YqnuRpXk^+a_7>=+><3GRpp zM~bFV$CMtHp=kzqQOY#P%>x*Wc;gN9vD81I%hdpe)BD5{p5p}nJCcM@V%y4y`!#QW zZ>e~!G+=8EV_WD;RhTV5k_G3Sj$LUzYmlDHeItm>$X(|_XCQVe+7~Ba^&s8cVNx)g z4;a#0s`{DMDnT9*_Wm^lu-EgSTAB0X^DF}L0lHB;5L*z|EeAa)JbPpQE>zQx8#MAV z9=M%jp1%me5b*`Ip2_oU{o@k?9j2u8cP;`4FXcv30Bj@C z((ZC;zu|uSON8)K|5TbF?dkLMcT+Fpv+Vm5nHld-2Ab|{e*XZY%a0SOKHXBs-+uB# z9g-?Mw>Q#WzoS@>Mx02k>3SNGEY4PM-DgT|zo*x?iHOw%O7-(PL=~61-FB=oX|Oo1 zsmY+QleZ`Ywk}V^-EF%U+_gbp(j4>tIXV{gTq zhqpk5;FkR=W2N)03sZMsYDwj4a>(A?ul+O-3ZV#qI^OO}vhQJuOk(r?ul%Ey4E$S( zJMcx+Kpt=tSp<#JrXDPme{N+EE{?+u_6~nJE@ixT2k?R=%K z#b>a=Hq3Z#^wpsdFRd&^8g486@224h#6aIgpzuU{z;ru;WxW1dI?6@5IX}LuweDuPeinQAGwLfrE+1-J8Pqmn2^Z(6r{i; ziFlBRc$(VJIV?|4l~cRsBH7YxCdCvi5cnu3JD4#yRS*9cxG`gV%Ze<5SsXpaJba2-(^(>d(ejFo$ z^uv1(1I)p<0sL4RED=>3`-N+m#>PvX!hE3{fe^IrriYp|*oTuO_M%Z|kK)noC(uK| zJEf;yeAi>_f*?!%`HjPqA;`H}W-`x2(I=WMg$@RJ49-@?Z=c;T0bosxk(GTxntUnK z&axS?r1Q2J|NKFfGdazKx|lu=Yr%`% z0keNmO={rUo0wZ!$f}`Y#{RWHu+-gpz`iL4WIkIlil*tEDT2LfPLb0e_m=4xx0Z@D z_z-Qd!TaEbxxH-&`+RtqHtT@P{0qzb{(=)5bxbULUQxLEleJaX74pruvs$}jxtAgc zTM>O`6V|ip!&zq(Va+?*nNrBCaYb{rnfqpRI-gG@evoDpAK5+v+4JzJ}I0Cd2}y7 zs$8zczhQvj55*I${2-xB3PV>F@2+eykYbB>@6`KPR!7Cz18F0bs)t`ahcNH56xKA# zoEix7)IG9P&_^N)fA^=+7~ygZL?91KHs0P69F7b`^UA#+Z^C+LhyckIRd&j-AT*m6 z+{;ukp^XJR-|nzyf3AFJ6t#Us{#ZL&=S{v+D-b=N_`zFZXZaYlaO%S=wD8sU!=rK% zk@w<-H7k89{n%aPG(-`@D#Rva?CG68p$S?jiRA)1$@Gz=(& zqcTsJUvl&Mso0oUEek$(87zEV_Nl)3RAAXCJ4k31622Ib~)+dsx{XHQ2=60?-1eqr3_@CW@! z_7;G|krH_y$zrK}jsm$+viHY;gvIHR6?c8`oW7uU}(@fVE+#Y~^?H8a` z7aAh%xBMc71`|hRXr%WEsc#H7#z16HuC~`j{ZJSgV&BAKZCR-qW~i5RrN%4{PaG^r zjCQ(U@r^Q<%EvqIZ-k*q$D5;i>gthfwcA;cm5IEim7QW8F?v3BN8UcdA` zE*6|0?=Ft(8P2yX(0UubT}c>71em^DOHTU7{`a!++IopfQpW-bWyv9Z=NZ+%pPM%^VaY8RH8gtaQ*y**@*!#7-}jyQ6I=b z565E@m^vc7=!!i5$@|Fcr%~OL?U(*OfD~3>pqd1lA6P+^phuOUwyW_p5c%`c&IV)f!MgqSZ9_Ookc^f)Gjo^@r8NGAzs+F$?w)$DR_7d zX-Jk)(@4hSkf07%9(JhSKjegj1L2lYX6!X{(}znwI$czqY+! zQ9$@xD^Q=JnDHXmBkuRV@ZKHUGXxBS@@EsrxT4!+eMbA;KTDS_I^_rANPJ&$+I%cI&82y1C8!5kBSi-5ulA62 zxp0J|7|#X8*+KM9u$+gXhdwi%XKJr%H!m5a|EcgKrb@+7;Gvm!T1|%-E$)|IyB+qI zAKJUa#kQ-&F1Si)HB9mkeT4~OUp-ikJzR26k$x{u^8DQY#L=T?N(>~?evjwwA@BnT zvWNuO_{m!z(#1DETD5-c)RL~rC&6n+wb_|sr-?Yu{9MmL?tAgrf6iW*rXzHoZeM4Y zo!Tlf(7>5_c~NrNY?;Jrgj*S(=Q=?^NE%ifwM>}um{oF?{A4YJEG*X;-}dNB5&0=K zdl~__yxDEX+Rxg0@fX$TcJ)l~d*b5EU@PijCnHFXRgk4A|9?bi52x?xpf15fa4x$G z-Z#_IkI=P?t^e-oK|VVJ-xGRj0*v*?pQ>b(K_BM@FZX9<6dPWB%0p>E6rc@ig(0#2 zG?;>>)1(13L*X!d?Tpf!#rBxa-@7h9HJz!lBQ_J+| zg;zj)X}G6mpkXWF7WxdWGZfx=n@tNso0ZKX7z0Ch!ceCnMfOpD8Xh9fx&Tzq@Ib?V zZh_FSt;vQiTBL>tw9ZdvtH3LiAu$+=R_IOFx(E$kP>XUzV9F)PGWnDLOp>1dOU(>u-{I>NXJnAFKnv#*hhBd;PhAm|WjZsx43D;vk z4(ynIh;J%v`70nhDR8*StwWWwP2)_qCw*!GS z1|E;7zputL z<)+w63c+v2Lep!d8qi>w6R(3b*GYv;cyofcHgWx;W#WFWi(rx$`i%_tIr_YZO-t$| zM;b?cN>m17DwWY;ena{M+3Cy2l22P9PlcxN*nUeJKiY= z!pa1=AP4XhSqq`9S)#yMq&cJ3a4&{~)5ZcAFR0IIwq+GTf$u_Jx-UR>_^UMbnN`V) zBp~<(9xFd4=|K|p0G3ph#*=Vto6k~_{zMUhsZV+G_<5oq$W;%+uoYaj)6SDyFX_8k z>YcX9qT}W}sL;Tz`tiS+BV!WC=ChC1mi3!F>%u4biZZo|Wwjl7@y6Lz78~xpj;YO~ zlRgOA9G#9_pY5e6?zKz}^trf%F+V1iB$p5jUNi?j<3H0qpX(lPG0@SeutYT`xU@#v zuQ&2rwALz`E?GTFH}NM%>q>H6a7pcI14zny2>SVakST3VPx-!@hsWd=q5t@w zY!qp#r{z<-SD`bq&L(dcmQ*JTxIiQdE^3u`RCwj{f2Syexp(|cEky{yjXQaTX;?v% zMf{%82n)kxA3Y>zxTJHO_-v1-$k}N<_(B}7$yf)D1X=k_=p8UeN)%Y>Df{Bw6l}SQ zz@l}3No7@AS;4qUY`!4ASK6RblD|NS=~$0|ld^p^%?KC*;rpAm_qA~*%Li6egZFY} zD=|0>{CU&!eTM2lt(U%3f8%GcJ^=xsA>MMq>+Piqy%ex=HJe9SGaiZEQ@m?ed-0vb zp$kc-M#b=YrD9*TRpAcSNb;d*l=#xMmdAGFrWNY~whk z;@uEYzKYv@YpjCzO3!spzMeelQsy?2{$>{vhqf~YvsxUj@h=15*VbkW-p!K|XBsF%!SgTl z>#T0Zv&%|RPw{B9%bfeh^qWve)W~W+{iYtqF2svQ96A~LeV)L5eHoma=I2dQ$7Ze~ z!ybn^!L8w@^sDizUPOx4`k{20OAz-VnA>8gv)BF^^DEk1if4tBGmiw!5dl>;xPWH( zPU}^R4!R2wdyA4oPW_I!9&CKzVZefAKJ|UPl~?W6gBIAJL)s!eUJgP#@HOufaQ%wK z%dfSN#QF^yF-!S*rhM(;xv~{Pvjq&M$QK7{uOZ0eq=P3pl^QaC9vNIviS81BH35ME zAsUyQdC{Ja+J_=^PVWYwlBI4>yB_foaSS1eGgHf}6&s7R%iZq!mqQ0A2R-YHHw8;r z3w~G&Y72%k8U)p^-R;?wKg2;7|4dx>{qSB4af99dIh7N$_vy;QPL1c(C$F-TCdV^T z^qO}D*}&c3U-UXJ*KzNROQ*dZ{W4hvo(_*=JM9Sa=TqSS55C&)Recv#jQf@lpMiMl zy*W*nB6v9CVUj45O$rCWB@J!)&BLZQNSWhVTRoXaGY77xAb9~T%jRfB{~lSSc(VGK z>9#k0@foteFSmZ{GlYvh$~o+9iie(I`bi2E3L(-Ba=kB>g|e5G79(*S?D@}fPhw0Z z%|FKZN|jRGm1w5sC2!--YD4_GoR#0!JnGI`v>4-&5{ky=ae4VX?3p?wM{}sFb`+mq z3VyAlZ~G0s)e^{DYFFvq<-94R)FT*2=}?aVs&|>>&gXk-7qd}WHpR)M+t}hegY4+2 zX^+Pw`2+~o9;5|xkHI6woy=#|u@eHFT&atg<%wRXAV%Y1lbiP*VhazndUx*)UPsQV zx}HAltFg)nNZ-^db=(4JxL8Why)^5bIuJoLT$}`kEyzp-YMkBHaWm5%z(@bKvN# zZm9;(yz|86hm_|%$^^6lb#q@y^3JTf(Mq2WXScMHuVJF-;uMLZGd~<uG2Pgo4yG*e{pSnMongpe4a_M8V@Ae2p>D}=<6XR^|URdJe5MUTd zc(H3|!4+3&$eQB8^5T(gEK3l^q6DlkaDfwxl;=uEVJ%21WJz+6Ck`Zo5d)8aUV6n@ z6NSRst;>gA+DDlJ*bAHji$#kP&2*ZTA9(c6#Yztr00C&jS&9_FS%}i0;pEAJD}st= zH5byRpHT*pDU9o7C{0qdDBq|7n~0xbbALOVD=LJ706o`5dl5hPIXG591AAq(=>nM) zv=3KKB^=zRzr(z0_|q>|7bn?i4%`kITF?#0qNvo1p~rHWY!1h^*lBK-$7s?I6`_0< zJksvfo%k3$SM2PlFJEqaY%>wRhf%mscq@1g2XudAQ1RoVeg^`%A5$lySxTi(;`XWr zSfjJ+YJh0zzirZfrdqK_^KI??kr>j4r%r;_1bx3S2tx!aR}U;Cd}&r0!;j=0wB zco*qw@4uDqe_qJcVq|ENEyW;tG}4HcCGu$P_nRGa;T-OPax}XS?c3a5^^DakmL*7` z!?Ky#+~~}21#>(DdO@-x@$;0;DqiPy?kTH5YR*jxTh zRD@mMpgx)~B+XlhgB`pMX1msc&`zuSx9YFmd6ixa+=z)vRa7BvZbL<>GFaQcZf zaL%rm2U`msTh3{w=XA>*M6WA9y|4oI3xIFiW1X}L^(uuimKM}f*G2Fs|Az%MNk#gs z5cWW5k>B`1#eW!#Sv*$Afr?Xjj|E7H)Od91u8GL3b$7<_7UEZS91g@|-Y_3L)fo2cKOP`0#$Ym>0R z`A)@m)HoG1+D*QcFkPFsNw2KOjJJjcsR9`>lyb|;oVtn;esOKlL&L@H z6pPMHb>97aE{H38`|hCuOMD#w6(@XRB`G02TXGek)DqpJ7cF&wr`*DJ@~t)xCc8j= zVh0}Qsj!rUiJ1ot1qkGObQ_~Agr(mXL6k{SdGCWjgyPqAVyYDk67Yg9M+o}k|@-=nkwPwnfh0qB^=Of zw-hjP2#U|nB%yjTnbLaXBi$gD(aGR&nw6~{CSGi zHM*|k8sXC$%Wc(5p8~II)_|U4S8`$7P@`US2@AI}|Maom@rq&?lSFXy!@{rK zK)w^ndk}OP#D=b~{L6>wee`#6ohOC7-xNdO+CZ|31YMX?y<(e9>jnF>V>FV}tbLPA zc6Ns0XPebi1N{UhQ%BO_h<{HhS%ew&Pa~U|3`Bzp4Fgp+Z6^FY2trE0GAkRN4;s07 z7NGh4F}?sBn{u^RU{2HggV=j9meou#ME|J+37GN~HF^SB4&ZMYy=*RmDmTKl<3+IhSkzqng-tL;k<|(bvjrrU`&r^1FqSQ0F+0nc6-zcepsOYK2-Dc2cu|mzK3p+R73LCb9b60M0 zqOOG(q+};tJeeg84U1tlA;V)+d50Xk+3^s=`|XE*Y>>tW z;XB<^hKle97%=13gZr@(fkXqeXVG*O%BTV%5DW#cd&{jm7^9<3^xE^Rn>RhasAs8z z@0tk*4T;ijK%!^$#)yH`CzY@7A(+fU8T_VHJY{JJ@sDuZhx^`Xi6LIZ{Bu zD7x}$^HVLD5J5XhlOb+7Y(PsxT~PlT)M{aej_h{1c|j1Uz4UeiJxUC34&uId^^4Ml z@!hFUMZ5s@Ov`GbLE&l%(o2vt`Nb7P1j8uH!gnirp|rbKO43UAS4sQW9p;p$2WZPZ zQKU@hBm14o+$4lbgN73+--Oi}c=K1wq^TPgKtjbyZt^H>WIAit1cvbMI3mG#`FE+4 zRw?ff;t1SUs-q}KRN_9yz!*b?`hFpa?|H;UA^o3u1PwcRVNu;va=}4$oM#E=mzs37 zncnu5jNEcz^VsKmwC}lEAnj$q9$0&79UqeqoMcM)DNnH7UY&X!54miOrBlpv+R@&q zMl@n+Nbcd6@m;)mc3x)?-bTw>MylBJ1Y}CBO(c`;i&Qux)YAs=ugTIOo9THG&(*D^)BhV`-TViDsqsCGL7~ zC#>yIK10+0Lr|Ucl8(byi3~OW-5-*K$+2dz7N}kCTau>8&CB}(fr6-zoTTbc{>OjU zJ$Vu@vS;&4Z_5(C^+-KmA&egS-wU5_L;pV)J`WJJF6wK8_6BAPg_D<_iUOeFAV=8w z1Sj|YS)`6zRu9s+Mv3eoc3mZ1cU`O_7|3F>pd7ki%>(e^(~s$MNRbr^8rd6hmmlRz zM`kyoSxkwOX1)q}pAIWuAxvdOwKojR3h2OOX2lT7L8V64Dv-iSc<4W;vTQm81y!)M z{bPC?NhQ;?&LuAM;+sibyL_Sr2wsW^2cs4aTjvyl_Bb;S2Z0Ikq2~ZMzb@fb7!R+P znjbGjt%b`0WwSrJAgPZE5oeio7h^NA+4EHogun(bo)y(f2b0pUp8Qaynb~=WjRr>V zvD1Y@;WU}mBZ`!`Z!l{_cgw@r4faFGVPqA{FI=^b+MXh0WtK1d33ULYBTjUR?ggKf z9~*x{#FG+^^Cm>E8i2GCX~;el;gpWH$9HQ;%v{Yp9QgW8(s%&1PddOF47QH--f$Bn zG6)%*S=hB>g1Vofq)KGEr~0(o@_|Yt?ScBxp+0;N;-Rw21o+DbMyQ_5M=0o)WX@=J9LdGj!q?z9uGgA6{^^Oe)RR2Ij8%6*^95m9CgM=-V3x3?j@GP1brIp$5ReZompk zN~ZboqbrehtUN5~=>XNww~*Hb&q#UxSU3A7@Nr}feh-!Q6e8UpC?oaM0vEn_r1osg zQP*z5vcZ6`#s+C)MewHV7Utr;41=09n)0sX0$q{QMFdxO2t+oYX#a&xOgJ@Pegvq@T=VtxuRh zF$@r&N^#gC28xL!5d0y(BfuC&&tQK9{&O@3ZBAx`Q=RJAzBaJxnA`XmqVBIaTPbaY z^8!u=4Xg~q=!p9gNf?aWTc-<}iSc1jlNR;F!2j z3YC^ZtRPHUDkH8W6@+uP&^^n9a=4AXMa~KU?%z6kjxf9`4Q#blH4=tzj5812hc4y6 zn;p^3R)g^r{%V_mpTyD7dNu_{>MB%~k2pE}@L6An&R5@I;(WNO;~Z@?{0C616bzxp zjBK3Y*(OsYrO$?3lV(^-LZ3MEhuP6A--H-@Y2a3SGqh92&fpa%bg4m@Og1#?(}5PI`869gaZ1wkQ4 ze?j7&nEn9r|05&>Bgli53OKwPemMbUEQ(B1Cd3{?=nS!9C$Bx7Q5l>o9gz|C0&@uS zf&R^~oHvLVybc6luOj*fg3u)O%t*>p2w-g0Ux3j%vJgDyr`1UKHbCJ43noEQQeV*A zgVsSsNhK&4eoWZsSZ^yq{N%sp0h1T(e4)x_k6!MnElvcz=Q>bZ#IT%#3yEbR=UE%d zhuVF}ST=t;odxF&DCCulJ-rZQ_zAO61ggx7ij_xTi3PzYZ$7e2+6%M$$~bTP4>bqC z84uhsfPR~Laz9r5HD!XZhXx1S;co+mQzx6E#;cu5;FvNpr)4~ckb z@g1yx@0Y4T#V}&R>O*448BRB({V5}{Xg0dX3eWK;OdNojdI3jmp!CcalzkF|36>$q zQVwbW=AJ_Gfq7?+c(o$Li%e1ZoPtbbdWXSnpOH_ zCX^Ik;mH@N;AiruCYUt5b3;e)Hlz$CbW|$MG4b{W1b0~k zFDAX_K4P721u34yd|$$`#;t|#HfklNj+W07&O< z7ga!jA>j=UKIMLr(1$y47`BG8#3pnqzPbjiwt{ye$sk|7SP#!tuF`32jVQ>A_uS9B zI6_Ly4E*c}NcUnp8(k?S8cG8&)#up;({a23UC0`3rp+}poF7@|pUU*;HD`M^pE?1K zt{U(>D-tdHw;QL$NR|8Zz3|+228t9DdbGnkkw0Z?USb0I7y^&C#4s*lSrVPxm4PT* z0#&vR4q;-j8mc=~ZtG*$?+5O_{8CFHAKFTS-rMS^&+1Gwo$H8t0Z2o2GK+}Bmoz0# z-DyLc&-@4Yj?xGd1ZEr)@^OrzNll7w@}FH67;8{~EJ6B>*vRS|yyB*kCl&(}}xyaU73jJl_2Z`G=o<7a8ZCwkR_%Wpauz<9t3rwx%9tM#jwa8f9 zo6$Z_Gd;muu5Lp#Krx(cZ$*{lj#V)3bGr*-l_xrom5eWb^Y@0Q^K|3yT^(U3bZR06 z?vhga-fCTo>0r4T|P87u}zi~!)Yrq&BRS43zyCP`oRqO8SsLx zvcqVdW`Z)}D}1mh0b^wIp;+D@kL3=UMD93P&*q||D#TaNuS(;E*UKkQ9(K}jMf_~! zI>|8E4n~gaz-cC#hdqEg87R=79=eZxxM!swk-a=YRAYS7huMQ@E$&yZinMB|qp9VL zHs>KSMX`&yNPVZX4ec7q8{hSnzdPJ%(Y;ZNv)br*e}LnA>wf?N0gr8gV0?2rb8r`2 zia%QZGURVre3RL``?5dEqOQ@k5A*7D=D_LnhJh}SkV|acXCL>Un$l8g*LE1;%U%Pm zFV*tqa!vy_yJyq+&|zR7G7D~9X!sB|$vdC_Fp0VR#xgZF>hPCqPyPp#Q0y-2G2 z1=~RETrKZ5C7aF)w~ohb!BZh21#LR!Fh<)opN=)K6uh6>m2N1awug zO~ye5B4XBi$YO5!sw)WMn$}rxb9o`+f6tVB=9m5WumMkGSyN-n5@rOHLP7c2oV7P# zMQ7=Rq3;1YgPs?_rTaLwnU&M+jJ{Nw3q6S)9yL_F!1_7S5C2d>(mjIUF>J$igxP7P zwa1ErRd8tkUnm0y=h_hHGXA-b5XpJ0YM+le1pD+q<>2A4_(XsP@zxQ!2uiDlOgrnV;ctG@oL;(Z!r{FyP{=rwX43 z^19Ktd;|&-=kvzL*)*nF+eI&)3R(5lFV-NZIexvX90`NCZp|#ST<&IM=X`NZDAa8n zRp98k>uuV`%+JJ)rS?YIuAp~)AQxcslkrPDVXlcqNd~+m3ue$4{ttW#q3tKD)8D^g z0DeWSCnv|8`=52^3yjvYo)chnYE%37bd2jU@I^|XsQ!Qj#r6KP7JCOAjd6LtvojvA z8ti_2tL<=9kO|Z!X7~VM%t(;UfOxqotD$pIsJ zZ&0HOK1e|G?5~Bw-wDsVKT^ciY;CmtQw=cuU8Mz^^Flgq2ilALTj_mH_aTlJ7c`ix zh%x=HS03(7^ltdusIke>a)YDcGULJpDHp5xWiZ$O!;tub-t|kRaH%CW-YzENj3&Ns z2@q{WKjL)znKXUz=|lOX6Zc=7JbPbWnb?S%01xmx%5y?J9XL=EkwXHj ze^qJtnGGFPUJ|iHh4X2#57R_oOCsL(|Mu7WYDQX_)@fFMZk z?@p`vpPd$xZg6vui}%-Oygb7ix?0e?To9%>2ESM+_}^&R>U&9zgHCi9mVomM2mOv#qcTJdawVo zHIdbHgM2-nZ%2n2)#wXiUFbuLk3=sWvP2Y(tSN8u-PSaOF@vx>MC3Wond;_HI*R)J z$^EOfo%fJ{k;M&qC%s^J zdzCmui0*a6D0mT{w{m;HO1lz4!Y6p1pm3>Y)xh@-LW@xc91;8Zf=hJ9PLo7};!T8K zRqxL-WFoTg+_2kU)YfmQXogcX`cEvFU-nT-Y$w%ozUxjAM6)xRZ8$t2O1y`KN5rCx za+)sHc_=4x(-5s#oan_279OomePDMg8H_1~b#WEM@S+EVWXhlD(S{@FFjkaq4+1)z zG(6Z?mRqw6u@{8-6F8|!kq8j%l=iwl%oEg`M(Bm_8az9N#EFXn@yyQt$?g1o(63*4 zdS+_Xa9V0pJ<8?khE=VWPY!|rPW%y3o=m>wm`1^;on@DYRxmB>!oQCkk zVX!6oK%Xh%Rhby#cH>oDy?Dl9?};#FrIVc5VDmHfY}HrouQ>fFkXTse3*51IG9Wy+1FQ}UtD3KUXOW|zS0aY}DPNVp_TI^h+&ai0(}V#b^9L--&aX4v zJkGBTyUTYE4NJ3zAiHn6^)BCzTi-=oPC6q2lG_#Ty8fW_`*mVlMMc+!R1NP^OML&3&Neh_9Ik+J3k}`sPx}fMT(?5fr}1 z#6V#T(+{(qtsO38_^g`XRN`0;L$Bqu8uW82IlU^m((iQo@NdsG*p9DBa+nr-;9|2L z8+1pQ;p5UXa2ZRL@vt>c&ds(E!&bYpZ6CA`Mtg@=g`oUE?DRrRp+-?>*i$>?QrCI( zOuwZvP2IrBx*>3;H;gnk#f@-hhUh*Li>VYHsA+F*^)LO+K41xCFS(a^ZHA*hF5WK7 zO>#TW?KSjYhl$j!S>K-`F?2Xt9R~t4uU)zq-P&Gb$G62=GdJJ$1MdRded``qy0jmx z$Ff8W%uGd7K`tii?faR5cYtZfTok`~!X@g?Nbb_~!TSBxz)e)n6&kOT`dzz|!^XSr z5TQ28Gx)5AiTSRk#>%^qG+b6F(MDiEVAi*`+FrM7qeyJBYOIC&A~x#``s&&H2;LOT z86xKCjs(_16#zn8l#mByFY3In!tcgXd)@W7k<|r4NVuXy06KKfx2u?sYe$~TmefC4 z^y6>&JLEm}DwZ@bT>?D24U}0Ll~RnfbWH6SU}g zI!+_={asF^>k)F9VwY862dTLjeHOvHgV}^!{8ZOBY%23u?!^O9=!HNqcYdNqZ6)5g zll!9{5?iw?Uj#j-+!r|ie(Y=DtEpSO@1@{*F)`UjmejDur0sT{3mhF$t^O#eSDDnA zU~(8^5zZ2-pmV%`ZohvethUS~|11dq;y_!ip#W^%-S4>PvE!8rZZl!HR^*_W9y2n_~h2ORItd z7>KB#;p>hq$YlQkCV|a&h_9iSa7b@P|-twkGud%QJFdh}M zx&0yvp;2YSpi4$K2eJ-FwRDogXT$rdlTRLQ7)(W41g0;(qk3KIR0<@CsB;8UA6=43 zwi>|gz2Ox@<9GB=>nT$}I0Ri0w4bD|%m40LrP|o+JUZce|Gvc9FWmdnkNpB7Nk}}fm00hKxge(yl-udVh= z{sqN3a8Vduzq-9}?oJv_akH~pW=C$(oSF&-9;F3IU!`EB62MQFzM)L#;&5JPso-}Q zvA(0NmDOoiuVIY=X`CThE%W`FkPl#Yhrzo+Y^bt2(r5rLB# z_02Wg*lB>NrWoR6uWyxlF016ZCbBqieA!B)5GeljM$8BfR6dr8Ir;;;BzH$>!$eHB z+Mk1a1gVLvrKT?6Q8A)ZXFt%3G570|uIcNSO3gHaG?LyB(&B}}U#BN`?&!$Y?LS+Y zN=&8piMXn>%GMhFk*A`CZU$%H;GKM%W7VWv(ZGC<79?sJ@L-jdc8NNU4L;p~uFaF3 z1%=dPq4loaNdFDWgt_D9-=E^d>b{2`T+ZxJr=8F1^*uU8$vMTjKVv%GquD+eT$gFg zLK}C5bKu*1Akb}P7@g>mJS7KNHDKQF^8@F&XBPN{XbWZ24Wo{cPcse5()V2$gctwI zo->zUtRN8>-1@-6oKs=QTX zpXf6>O!kh@@b`ebIXO{7tFgicrOT{4sqGE5gV*B6*Rd!w1INj3SDRJoTk`j=HLpOpbEp-lEA|)UpDH2K_TDqhgloUZJ=?;uZf=P$UqO=3u8EKgkS(C*SPZ&Ya7gV~l_(G8X$1^XU5KP7dS%G4G$`-+qO z5#8R|WxS<;P+BH_kV>Tt05hkLdQOPERDVR_kDZX%d_kXoi`mLIyyuXJV@^e48=__^ zm&L{+tx@0GWSxdXS`+C2GS>K3??jzgR$vl<$zz-Ho{@ z{MaKXXEe)ZNA<--XEUD_$56npvi$nL5I#Gp12hH~K5kgs;hQV_th42#;4`+nL<0*C zx25inO}MFikznVzq^@A|KLH}AH!*KI|~VVF|>dVYG?j5{`sQ~r0D zkLcP$H}ov=Jc~+%x%RvD!899(EBRfr%u3bBnAC5IRury-)V0~V&Hfq7Bam#%wSmrQ z$f<0mu07FSYJ=B4sQIL0bqP{4E`T9ps;x5;c3cWESALtKwmE24n8ByPds}+PM2^i5 z2TE))ROv8M02=@{J#e%^*0VU`a!|l#+52C!n=4P;EM$b=V#QA601MoEyvRL_t(0Ai=XJ#VY8^+Qz|6N<1h?g4H)L zp;$%`uMwiKc;^fc#0X)E)LF#tYX$tt$7+;${l}VG@GClxg zgxdFmPb7HYe;T`EPpGzQS}Vrrg7J0*`S0EYV<$u4z_(&Vb(`-htV(S8Pw?%duo%^1 zsqyj9X}`TQP(tcuM*?l(f}+k$CT^y)`0;46w=J=DZw@T5W#Dz!4l2LS#9p2P;rHVP zSC{s?uBsJmT6z{q&gklXpy}h`k4P3#l9o6i`-p*De*I*u@xx5wW`)c#$b-AL1j;4B z$sW^{2f}u{W}4b@E93Z>??k`+R;*8gecEpPZwZssIkd)Th8anIuV35a{ArotUT4m@ zXD#8isU&X}-p>5ngE?d!=7ZGs<+O#jBY(nUJA}m3_gdI#q>J5wHp-)Z`#$=29nZ;W z8hm|r-=(!Y?OsgJLbNC>-8mL=mAWzbEb0c?EVtF+JOonex8V_Lf0LyyxUE9ZIyz>K z`QvtVUx7nsCWz@A93jEGUp2~zZC;vE1HF=-Gn`#oU`Vi=MzGuK&AiEo+_c#90^wn7V z?m%V21VXTFR#`GTts z1NiU${}WT7u=MU2m^}W`Mp){&6#giYAoIcneAYl4##wRi($cv_eZozG4QPeeaC1emM)luEMNca72Rp~)cwL&$+>_lNs{JQ za4W~>*s{kp5|%$@N?E})lt4X(fzKf=Y*qzr($+qy?Y-OAKE7>o*eJ+X2TG*ZqGE1I zEW>yVIF|uIeKL_^Y127kJYsus*MS6}WUC!e@OvP4#RR0QNaN_m%wJjkD?l3zW`Lh` zG+{3f!Zp%Ff-b1Dr`0wpotrl#pS&Qod`DCKLOQ*Yt9)}y$sYm0(^t$T;95OHgD6SE zl5~qFfocJlus-Oj_;HPze*fJz_4_F%UWju6iTyqR$0P8O|D`~DKh$xNo$X4XB@PvM0Qmcw4Ap3T1a24GwUxM>EW&D?@Bn$DUK; z4z=@VG@nyn4pH9L21L?9{?j$*xKz!Hz?uA<+<^cSQ{o-%{~<)X?XvikX(h&El&}Nh zaFtWmMsaZjiB`@-Z=64_^Bff7P!n(NtK{_Ge%s^LTYT0%)mHD-d#HKjItI=D8u9b? z(L(uLrDkzhbTX-tDtwUXat0Xi!%5uPu2H6A0PVBI?wLPQ=k~{|MdOZlD2mH2&T&Z| z^Ffmn9}E_Cv|nCXUq{W6U(zQyvKovvDz9L}ntt(0twc4kes$VvG?5WlT{&-D^g!(o z=q;E0?(a9v)bfnTkk5_uBm0advL5{}S5J50gX};OxP1>knKnBw6koRZ;_fO~M^@Bj z9$)AD>|ai`?mhAv{9-1jhNz?uXJ`}aZ)Qxd!A~X@r7@nqvB`&7FKFOhJYo4SEQfFCq6fXPHu+~^jR|T6yDCI z65`6Mm+mV!VZFmAUpsNg{3LXZOL?xo1jk5Q!B)1)^qf#6U4_cl_VEDo-T0xt6(Xd0 z@qG*{R~Yaxn8N?Ayfjs$3uLSAF<;VW4#!oiRsZdU+TT{ zTKN^H0UE8gNR6-QV`$Jk^doR6J&iV=qF`)fbXoJ3H)i-{isWtJ)~S+clZjPA`JheB zVG9kat}`K-bU#Rd+DSw{Pjhd9^;5%;Eo?i@3cG~-SB~niIw<zpAKjmo4vjr6|^3ofiZ9?`1bP|D5b9M)|fRR&so(q_I8Jl3pHkkES1Vp7c>0Mx= z`yosXGzQOc`k$OUcQ#A`Q5vOklo~y6>t!Es&dwviH1&oVrhtxPG|kUe=;ER4{7sZX zs&1dww9S9S6r2+}lc$Uj@s!*Q-VbgoWPw#4Rj3aAKVHsz$CiUMsL6UHfOmjfXu`1y zZ7Yo#31vC^DuHA}7B^`rQ1}@1c1*F!rY%El^uA$BJ|_m$YNUi4_1J2m*bl%RT)vtn zr1mG65Y6QL`hxC_Q*<2;MjiP>UAV(a6eZ*=Mr5EW%Xs5$XU+}}Z3gU7~zx>+`CNy|6 z^Y|{W=C8i~cLmuOZ2Om6yg3v8OhyRfFD^IM+;0NrOyBC?YfU-hZ}_vx2jGYs;uSwN z>^i4Kx%sPp&~=vs{2HYwc?f2=v!VfD=`W9~0~BjYYO2KkPRa`amyX;$ zop}(!SlK~WhF-7BsUoqcP4EZ7+=D6y2@cnx2Xk>*uW1~UK=&rB!UXr(JqlX1w^-7q zXev5k+OT%%+5ZHFm!eLa*ojq&Q%+kdC>>EWD$q~s zoR!-36`7EMR=rR-uoJiKGB3mb<~fm_8DvZ9QM1xEk{3E}V+ge_S}x&6r@D`Zf#23x zA~Kw|hZ=yB7`4yw!JXFwS@fUJYn(o_e-nJyq26mcO6Cu#hJF9#Z+r$-0m<8DK4{8( za~7rQ6D)Xz=}^878k=D5I^-A-a~}{H1FJwHVsT+w!q3v4V5y*Glh!{&Xi~~1ua}lL z4Q4SFkQ&Fd=n}b(z!=JKl(16fl6yP~N+nLd$7)g|aF6dLO$}Sc0J$hV`a992bDWg( zp?^$mX4U805FuYZ1=ZS*vv_S9NdPDYpAy{j9=Zx*rrpK0nm4U|yTop$4Vu*U2 zGUJ~Ccs7{RMfso+p0&KUGK27COZl)pKr3EzxM<$7_RaEf0>(Piit!2Y*m8s)CKAY2 zUdkcr_(%Md%5@Y$>cT2@KXt_=h=UOVCR_nCs(@)K{7ugTc-%M~{VAYwhNfZuuVG5z z@TV)}qi{0%NOE(|kArk#fNV4edHz5?vvE)$zj3SnL!B-#Ar>^xGQl#E&hgOrb`O4& zq4LMbwcbuUavf$#wQi3SD0X%g&6h~}{Kxv`3#l>o)r&NRuGLBQERflJR}2_BM(4Ak z$lGB8rT66|wx>0=J-*zx;6y@3Ai>=5P`Sj7^3gSJgs_tJJJRgXXfMzw2w^#kUwMiI zx4&0^F;oNdDEh$2^aA;ZGZ4=Hu>YJFkH}PQl7vDGNds(0n)%TlNt(0EM?5T zouS?&59QAk?j1)_m@w-9V14*QPD*RkE^j6fI?+zJYbg4Nn+$B?l+H!-F*<4h0YTc| zf`Zz?wU1g+fVBMoaiFsO5sC|t0J( zo;<+LdkH+ucG;Z~c>s9=FcTXwAd2j1lbkkgGH+5AF8znyjO-lQiSt9zQIPw2K8 zv1i{diK7NlbB{d}dq}u|yK*v}%~z-`GMlL_e18Se@@Ls`QY7!vMJ)dQR!OTel) zU3;m~t${hE>+6NG8Sud?7)8gH*h0HEe1iYQ0sulh`?(#RF7ouhz2P^e0TF~T%l6(T zPA@o-!0Ze|^f)vyjR+eMb($rKy{xMjh8}+TdodiiUYj_a5BCIYtW45Z=Qwz8^R=qL zP;LlShW`?m=mFW&q4HK}rv@-*YRA)GogjP$Ojda`^Uu{qEWl(KAbfY07EuE#6&NN+ zYP|Q%1|6_SA(fIpKdE|vHVr$N^i(1kDP1)_`m}gYNUCf^1{QD=9LDyf+%_OA#sRL> z^)s9eNY;-nRk;y7YP9=hknQ~WcOK+*0&7+BLAFpYnoO=LjbP}+IpKTmqf6Vw(@SR8 z`{`M9_t^I~1IY&a;`ULXF9?75br-uCf${mg)PSDNOPC|$V*9Sv_u-)@>GZ9f$Z(q& zT#;CjoERnag*D?qG9xxx7ln=}1tBS!IsM9cuC&-8XUyM#u$ZCcPgpoyG0d?z97FAH z3JruaNRQRj6wlXrg)Hv2w@kGRp%x3+Fa5n~}97Slj% zZKqAqhk3VcMT+@=jAJ?q-U|Hz7*{8jTb}!8mP~v!-`)aL;~@1VmxnwCOL;464j+ja z|6kIO1p2R)Y;5||?=FTst_Qyu0ADTj;nnFjsE*kZgcUPOMfp* zm-%=DVtCN#OoXN&9A~-K86(F-aU7>fbyo*1g>J=8)UP+W=n`I~YZDgx5U2vE4ze(>uCp4*KlQ$wad46xS%ai1+6$P{{ z9fata3v4c7$a-aAev5wGu8ZfE0&GP;8x=sq0*?GqYpo4sy{%?-0|XFn%l-%bUysX6 zWYuq?Gt%=}JR!?zG3+rkNIbng3nCw5i|_*n7=+>WR_La`rN2$xMUP&j9uVqG zWj#Ko{Grg4mO_MOKs3ioxwojW9rYd85ZTK@RAqIdndT=($xn7ejlIqUM}MgADhf@*Ctip8Q$k)``OfO5Fv{8M7S#3F|XLt$V-H zh^d`edIOi`@DYDRkJ#_@kg|9e<*PpC=GMVP%cZ zRcy^#kkW{BUY<^pRVGwo2xVJ~eQb4(a{Ow9Hy7^X`bVdr18I()nO_}eOunaSuPxbq ztzCB^j_Y%q;!!I!;erd6b4VICyCyhnZ{07MlOHu=S^{T_@cZT9H+40}0NxfMYLr0cW2*Sz==Osu#9Nm%v z?-&PA4kw>?om(iOFWxMiZTM_g^gA4#BUeXz3G)6z z{qiT{$5z&!`%fv#5qQ~N_b`?7fJ|@RAf55i66E*pCm15H0R%~dJSO5{cyEQTe)XK^ z@#9B99wxQG1VYfN1h#A#%ZO$BYDyzGl3!6q_k`Kb?EB*{%+dSIORCBr-M(+SzG93H zLQ2!~>3boFib=ZU8?f`aJw?hXIOn4O4~$VyyY51L0gg2P4C&ifS?hyTqXO`p`7P=D z;YA5pA+3sPY?@bt7Nwe&g27q=6&k^-;VQjywkk z1J;sP)@LX{|EHMefQ+6jRc@sCWW9~Jj@F|m5yH!G_*%QFEBph+eToytcuku3YZK8? zb6tYNG=BNfB`5rQOcSk)H;K|H8uIcKJq*z*>ZLlOe)kqU8ON~i`!pH;ua3TXZaP#Y zwUEl)Dzv*RTqd!H1n6!){qz&5MSOh~fgS@-%LGp>^I{Tik^l2h^ zKQG(P!z|S{AgP90glLllbH7m1poyh7>%XR(L>R_`s3-I|*5LIXaf~n;i=w=?vTvDU zVq!l6q*)%vGDhcMNa<^~_JHqa)AELISC(E&Hm##c*6+H+dYz`qHSll)X8bwSZFzsJ zsw~e@E7XX&?ruQ(217;lr?INL<5H;4CdZ`4wiJ*$*>l~f4`3zYy09p4wu9Ke!1W z0Uz|w);L9k81|#OceB*BivOm9)J&MwIKXGm6ZD`Zn(E{VO3@c#eyT4HxMO`W3Bqi7 z13EV2CrJL1J_eW1u4b`>{<+(sp&3}86Zt&C;N>(kR{s0RI?f0a&(BxU58H-c#;yEn z9SI-fbvoewebQtr%V*DH#MHkjkhOUg?fazj3mf9yK;%m@v{u0u(E#5NHc^M>CZ_wR z5cnX&!<-jTh9$uhsT~L^%D)d!H*rhvP$A4FzXYk%IIv0N`3Hos7&p0Izw&K*bxmXu zw)vGmrBQ#tXvJ!s0)K7pO&PRMn+R?4K<)McqRt!K|4)-{)Rpfe!CxvFPV1t^;u^~G z(*3uEHp*sRsdohia>wa9#CexdJzAADiPL0vM{paCx*I1RfOMnlR%X@`h{?b?F$rbxvqQ#dXJ&D&QN^UGyRhkQ*@XxsF zlQj|fVnhmrZKT(b2<~5Et&}%7OyIXsyHKuXkd#c0Z+c5qt&m{rYe;)x=g2U9&+a`6K@dHpGQ`j}v!RH1K1C5%?+TYsdR( z7ExCa8`$GZN_Z1{TlidNvgH@{>dd1b+lFuC7r@rFrPt9K5AJ}sca-@mHKr20L8n60 zGLcoTBu4c=@{1a5k4oj7if5m}7$-PP2|nS}>F z>NQySzwhrH6N-_ZN@=ELvc(q^7DfNurLqRrt-EZdnEOX(PNgQ}f;U4skq&#TPr&U#!EZ^O&jy}Wz;Dtvqn><3`(~6T zoo`E&#wSYTO4S_|@A&0m#GT51PF4^tO@q|wQ}Ci3CWGhBFcHDJKfhiPM@?QhlaWkQ zwmlij2xF+X?=EfPhv(cU1ekrbgkHRbDHrNt-r8waxB8d$W?^Ts8G4c_LH6sVs%8cK z-_@HMo;xXbN?*gQp3jo zw}H4i$(-wz0w3#DDo#2H*l<*zl#tX)J#YOCb*>2e4_qxwv5YWwL&L&Cx@OL2(;w2o zDLG|M&cWr}nHa_r<=!%VX>*xMlloS@6k8gW8NWejNbkH({7o;0cQ-c%I(T){#e+MZgA6X zeGIF<2L8jbkcNjUl$u1cN6pF}y+f}Hsf22>cbdI_?hzTXb?+M+W~RKfP`2w+GIl|) zBa`;fqSqDd<{E=3DHClx&xOPWUsxt*9aVORoy-li#wO5wtn(uT* zx#YK*_~i-PQg`h{p1n#rj*GnCT$#UJ6jBu8J_3J+;12?ZYZ6*y7d&p5){DfH#<%m{ zkDLiL1%#nrvNCWg=*|9A(Lky2;4eUNnnt4CLxKk+x}sOgsg=s*iNqE^b;V}UTa}kI zEqpWZhTaTPJ(jMEXbckg5)((H`)(fRk5K#v75=9w)a6d^)WS?nJ<^imNQ*bmJS`w0 zdgnH3Zndj;Y6x9wD*c;v^>GyUmDi_v#UyG`Yv%6_q+NBTsitzjdGHuQ&nWueK6|Z} z%UsEfZNxemEhw33v{*Q_L02}iSs3z729n%t-cP7HrDS{#jpr!hS}5x+^Brr-kCp%)wmDnQlQthH-8@u^WEfPI^1aDr?F$f5#o%PX{64HQ7G2Z3Ti!x zT(3cHL z#wxN0PXQj7JIJw$6q2nFLi;GhMU!L9hm~%9crz~U5_BhGguoM3gQ2hrKlUGV(jF0X z%AjD>9qlnOi~;1BOF{LFeUXsWwqqq@E)ORqn*&3=h@(MGD&0AFBr~=oG@X8Mk^_DC z2YGCjxaQTz%CcpvpcU%P2jI;(tGQ1OdJ>-Y;~0C(A9I1moLOYH0QHpLUP zw}8fTka}86`M773Zh#ZD;X=KHGOvgcBTZ-^S}%?X8C9YxP6E@Oy$hD8Jurm!18Czl zXI#XvueT*<#3j06tt>&rz{%J1wmpA0%cID?MAoSjArZqr>qyXn6<@rD#qy(etQ9(D z?9GA~VxXLxeGwzE1UYQ^o}-%FITE{7}~G*EpOZ z#m*~z70H;X6;OU`zn5xwVn1zw|4+K(SVbQeNM+x;^Q5S5EoN%v4t3QrN&B?jToDOy zW=I8^LE$FlKn!a0Q4M%l+>< z2eA$|dS4Re3+%chmu=g*2WtO#oOPXNmKZ@gBkbM} zN6DDUQa$Vo&mqVzV_23*W*gCm0pYzuDuJ~Wn?6pKGn7P}u$-cSO%e4#wIO(9Hn&Q0 zDJWHakA@cCDqmoz6O9tnjoJRmT!~PO z$fqK?)TTd_mfBHWloxo06=zA>=f&|QeRl9RR9qpw&*hi(Vbk7D#5os1F}~&KyOo0N zO!JC+#>k!i2xeVoF6ai{jaou0bf_Aox)s`|@HY7ZM>qh;Y z;cRH~C>R`=i9xP!wv0BP^6)@N!kYn(aFFVQVZvntTY`ME8rv(^|~!^p{Q*GHTo-&K^DyZ7euVW#vTcafbX$5TRrTEN}VA z=oPcswA*WjUV>ZXOhthHx&4d&C1YS4muF&^ZOe`swbEPEXdpuw-v9bUcObC-T9zPs z>CwnDj()lE5~)SSF~b)}GEXk1AZQmry~l%!5Mlb0XL(Y zZA0$ni{6RUMY$61B%+KDreNi!3-$cG>9FgunYaN^8Ho zLveN9|Go$zeDLu@hvM8Q``S<~><jH#Ur&o>_MS+9gl_aFO@aU2CHL4QBrw=IP_CZ=cK3=(P!`Z$m-OtZ| zHgt!ih55bwr20H8n(zSqD1q<*7d$ki9;u?ZB`FUo$gPh?DLE*leN=YYeNH0~zw0lD zXtcJbJ3_MFybcG^Vk<`>h`e6p;W4F`3INRaQXUV(9a^DN<6-pq$fYnuN(}Pfk`^<7 z;#m$E7U)opf*#v?TNnU>-w8<(^Er4m@^!1TXdGH9n;|Fe3;}XJOZhs*$JIEkR#zgQ zb#WA9?r!t+aGa(SALM@cx)SA9?$h!aAf`!G<{E*VSULcb0RaG%2Ki=D3#pW@_?gdt zDf8^Hek_Dm{y){IQ(Z_ZUEtNGw3}~Qm?sjd8LkVDKdks+G;2@GqXFZU9AdOzEf{W7 z2b?fWP>o+y($T_cMa)$j)Wb268(NJ{O3dc;L0~Y^I?}VUY;~c) z;#{nBp+_fy%3CO8rMy81p}c24QT9VT``T@|EUHeAZTt<|f@EC8j*8oXZHhJV<^~nUitvAhPbP zwgc?`Vj4-4&r|*;rhrgk631$&zXaJ|dnPzVF{T$WMg&rGY8q?V(j7N2~m<01K`{%5gyE#WK>G^bPiY z%5pk-2(+3!ElgN&RE?FVdId?`eIT!_8by;N@5qS)66`opl!fYF&{U6c&NxI|>;lY@9psk#2BQnRxcKwkfajcm14p1|i%2 zh&*+`PQO8}Fi{fmIus92OxW;4BvMDVLB$Wqe1?oA!-zpe?VLj%MNKpek0gz6KDG=s zLMp;rdFmkOfl)Zi5wAH~5ev|E&|i2dVeLVHB<+u|4;Pm_S)3Hn2`*^16IkPl;uuqt zwB_i=Q=S9k8l}KPE7)tII7l)|Jo#a_b<1T+=>QMU)VU>cOjS(b>-U`FY2fP8ooL6V z1`xF2$v=_q$p;S-y>kt>L9f|#RGkZ?=3?|o>KtC+{|+Ce-F}Vn#I1oveAFC z=cmFfc7(dQjQ->~FKLi8tx-6W3O0J)O{xp?J@Tpa8PQiK1_HpL;}c2QvzuBfj63^?G?)> zyjd-(RXh}7GeVf;fnlKsk z$i-_YOTqbEO5v1yMP}L%UtNK*&c^ZW^#W)P<&SqZt#=MJzTj8*wD+GNIgoY{vj=nE zF&htW(9O@Q+hr(v#W(TS00fNe@Ei@SXS7I$ZBX@Iq#LCiKwFYqjq9$vNPmB4x3y(O zjgE|z;U({*$G2Xp%Mtfi^d&JV=9jE-KrU?BIvCd$r|m|&yhx+CBM(?ATd9U_L>*8? z1+TN@e7^Za{@!CYqL$bz`5QR6?qzG(0kNa^C}%u@c~PfrL+u{dPK|PpSu_%p0KLaR5aOV za~lT;8Iiw^XZ%ZC5qaG(rq{)e51p=3TLW3SV|QTRsz6peqP5GtfXxK<_OxPi(eO{k z`x4qm)|S)F8ats@WASp#FbmfcL93jHtA^j<47M$refA*n?W!%eo3s{W;%a`XnEv`q#$XN zi@1}dS;s=B^HjCyGrO;}3d%ojs; z!|#dOLsaphZUKJ*8l{(Egh&~45TRla`0#Yu1Nph*W+PX!`8e&%f*3YoG8-tW9*oL2 zf8oz_#s6t|?YjFHyPlPj9tPx2t|^4g5k>nN$@cfOl>das{&PT=Z9W|ef;&A~yJ$o( znnRlqhJ+Azh=7UwmQruSu}WRODNg&+KI^|6yhY`swFD`yE?D6Fg0Y)MQ_rww`mSZV zV{F+^Qz~3NHaI8CU7SWTbBKL`O{=B}H1(r3x$p+^`x`#xcFx^-kHW(zGiJh!n(j}1T`L1g@*J@s=B zryD=L9Ij_g$SQV>gbDM(G?CosK~P*`MM(N(AH{qXXQCTK^RB8`cB<;dr?}$^tT4U9 zzdyQWQt5FGh9|Cj3Y2AZIV2GJm&t*&&8n^=p^1EH>9-a9Cy%;l-lSUHU@o_|UjMxT z##O}}j9oK^0ekwbfikgZ<#}jL0gVpdGv!laD`+gARmU`%j;fH!YPCQ&XEK9 zhE<4aaZye2{`RctLjrZkvLgTkTbE*=K_xiIJx{MS38fPFyUclK$IvjhZGm)cX%X?y57zVEUA z5{0v|kX#y#WYg->cQ+la?^7Ur30^1+^1b6<)kz@_y}RW(eE0 zU8-@PTRX-tMYq*f<-PyFzVFqlh#*iuf)*XMSuK~L7YlBlPF*_9?5o`?=1Flq~h58E& z_JGV`E-{u+C6f<2|Dl#JfY5fE9tnf;AYYSJH=;rua)#5o-_Vx~`mOiP#=lgfFRj@I z&GMyx>J%>Sp;d=-u4NF$N}Oouvg(3b2-CXSQF_B$KzuzOLn<6lF|KnN*V3QSm`MM` zjV$@3Fnm~*nO6qf-y&hXk~7|mck43&W;lF*LNudKKFWZ8X;qKDsp;luMn4vn3G!F@I|K=H0JGA7Ob_;|Bs3OC*3xLt*v^ zyrRr!pw0>E1FejyJt*gPs&QJlwY&yBR@ht;>2cF}rQjM#ed)^wv8249Bt~g;t9&x; zP#}QM?GSI9rl8~>Hi0V6rzun5*BM;%0X~GeTRB?vDQMwxQ>^H1VW7otxiOBhD_xuI zEt{HB8+iT5l@0&8jKv!(((=Yv)4w1|Z$>x@61iuEs^sBe#*3P4bs-NlG{)})G@Vi* zYwYysE-W9sysFMit`lFUp1WdZ@yk$-rc-|;Ue5jko_S*m{9~>P( zYkKSDYRn>EQ!dn&Aj7>gIz9>iq>v<=79B_I(-8bi+EE79Xu1Ty^w++oCIPXU&iANg zs$?$e^E97k?U8Ymgo`2X8q#ywqV+`FJeQP`0`WrrE8G>U6$Q`U#RwKN-<%(3hhojS zw@u=I8#0@>kW*|#X zzb&ZS{M0q1iYuhWLx0vWAt*do*LtFTFyqKC2D57D|9&|YESbyamYrlbK=GwcH*;ms zvky-;e_Re-CiQ~L$K027R@ZC6sHh+Lix&nD$W2+9$Ytshf-mwu?9%?jlzUiJfL1QK z3vK3a!(Xv z{(bYSuB#|`EIzY0O8ZG^j#~iJ+^K2MwX}89@l?l4nLuE%#5eNyg=_k=#K=v7;L}?R zg1|36c*xIbCXX8qf+Tz3$v-Ym+|Ft3m?Sif?rn8HFFtX zk;c**yR=kwt$s;$dH$!t@Yjr|<7SNDE87`X#gc^(A;?#qeI(s*uenMW+xN%MeJL7R z$D$1IDaJ_b16Iq{`-6GEL3G(^_-l?yA`-!2KSTBH?o2B8rXx;DMVuCrpNx}@={SF_Hs}c-6Ua|)EftZ12R|=l`bukL#ypEzPW!*ALq74O)g z(-Gt@PgPg8UME;zxlL+aT8UNp^0D8DCmO4i-g?X zjmhfb1&6g^4Qa+yw|v8JTpU?6`T9e83-L{JCpz6NA;|7UlJ$?|seBFV!2?5DO0h7b z#V>$w7v-CA~zGmG^)D39oy0J zS*7I^*~xY5Sjk)53^XIZO^IJ3Q2#!peaj{0U^5J_e2Y;Xjoea&-12iNN{G$u)k(QO z!o4YzY(W3S(jz=aKXRXkB|GaWFl@qfc%e3XN9*{eQ)C=v1VHQ-bwnBXj zz!R6elm3YM6f}1dzFP}gm6ZRdUrbb0s&25w_rZ+_E8j+3?8tkuIH?sBh=?f1tiUgs zTb+8^??D1O;F&<*S){Kb3-@iEzx?Sx3EN6?b9X&P`{l3wcd(;%ZMKN5Bh84+=skiJ z*8Qs4y6FeLYsQtgs9zYj6I~L`UBgTyv__$&sH3L!dVj1Vmpt-g)m?vmHAD<%G|cJy z^2b@P_4*^i@yNo7eNndO{9~)j-`!c!-75x^)+0X$#l&Y)Nw!(G7VZ3EASd{%Y2Vt- z_o}iYV265h5vAf$ICLK??Z=m8KWQ((Zp_FM+-S3vBRU)5 zDHN~!EnfV*8dX5D^A6kfM{v)kzRX~9B%e#_`AvPwLOr3P-zq*GXct8~cJ^ z>dU|Nrtm^&s;s}x4R(|4OR}KD5B&)Mmm&y0Ou^;*Gu4Uw>&>?p-`j7l5jW$Apuo{l zvFr1RNBC%APV`5P?<5}*6N8M@a@!C8#UE72J^paiT}KOl)J~3TsN{dSmlG^Q1Q9Rl z?bvR<64J%aa#wQw>1u-{+HM@Qs_W6yZPsBfeJIC7G4|uDCFR#+P+z&-+5dq=G*1^# zx*P;2?g?7>3W}ZUhz9U|OVJuwpO0=UYsetOQ0nKQKkmIQEQm7_v9@>Z97v0VrtG&M zl_L~a@ykouB_>@A{Jzf~Uu9Er85Nx`Hh#wcGjhzY+A{H}p<;c$J~SBT-LA4sOP*N52NFKHvAK&-@a|@|EJzxU6*7+aefF!xMHrQHV@Uzn-~( zq3eIKfHz>o0^nRb%)4p7fpXQi6ne}N5n9DGHLmpca>?hWw&^hyMKi1|5xYd%dS$pI93)IRWJZ z7nX>3Aa%V0ck`#cI?VZjtq;8CZ?rf1M<+X^IsRs41!x9sP$jwvd8aiz`VjvhLq~cg zco^}+rv95C1&a(i&z_bzQG&Ei+@7eE+!?D!iaWbU`G>dNV5WJebw6b@vI+ZDB#M!Z zJV;QxyWW$_F05Y!#q%AKPyc^`05My&3YWN%^Sn z_)qW7y3Bj%Nnf1yQ2GVVDe;OwBLDUrg!ug)kkcBTf05YAWP0Gxt|xNxZ#hN1-8p32 z5mS6%V?3Z@EI}M_vGP9PBLBVhh5j`g%z~z%-EaR>`=3kgB3h1;?oIc<0W11< z-rwmijg|Bd+h+$Nz=iU@Ym^!7k3XLW9W~yC zq*3RY<@|iu(6HO@??&qJjL;EnahwH}s8p8#Cco8RoAoc!1HHog($bfa6`*yFRj$~z z2koaM!8QjM%C#qc{VMJI8O0c%a`aZKbWSR0D+m{7j~zarj1Gs*0whL~+B6D<&v)_o z!^-XZk@0K(HJr z_)61tipb{bQx5IfTSQ>P&b}KOgdRgW4`7vv7)hj$X6+({#0Gdf^*y* zH=22m?=Fz;)lEYF!j6{P1VQtFK4{viQfY*;Mjb8e@!kgX)a@4U4ESH+|}Pg zL^l77|26I5zK>{Qd}I?gKLM=G0SWAdvF&%u<oNdTZY6RJ6RZ<5uLpg&Ohp1*W6ooJpDRP(&X4R*)`F&j+Z{Tn+|C=*ix-ewBO zsQnAx8%yM3t&5xJwelw=-(zgQzmHH+&De_S*ZL^ZoG$*9FdZzE6yC z*UC#c~kzllJV>mZmlP}`Q97zbH_KHj0CGp_kxpoj;$w9srr^^GUxU{vg?P# zL`~l9u3*SPN~XQL_{-Jg3gQ><=^5`UE=N>a&eLP8Vq&hfJ%96RWKXV#${Dp14jzjS ztid-!7V{@Ea(zpOj4D$%-fl0#R(y6cerBM&oc^){q;R~@djH$Ts@3+v$oKgBiE>Ox zKz@A$R-2>wmP-+q{N+(J_JW90v2z52nLuJ0CBG z+0-VZ=9~{z+XqxVvs~+bnubb=FnC(DTl&5HGG_mmZ~{Gb-%MG~RBg3bNcegMyVZ*G zuw4gf+XY5T@{3Y3L)lc`o1#(aV42zT+}qQLTETPD_LB~_qU@VO6o_E1-_MQMT&IIX zdB)irUhY~%2yHJm%~S#40$_g6XEEp`)IEDT;DM{|lv-yj#h9J07DV0fr4@vWI#$t8 z6xv*+6Elw9T3A@%zmnKyRXlbvxVp`uelf?V=(%e?c_L`_J;Y9HSS$3?(TUbMpD-fR zCqms!*>U~Mm-TkGr{%xvn^P9kg0%VxV4XS@eXpu?Ndt-kk(E+-LZdg`i}#T6AT{HMGcQng0@uVUVlk(3WHH-uLroLec zh?a&Lnzk38wcd76HEI`6AjQ*boVgch54o$}8}!?nX9+_I)QgvT#dk}~ia`OB69FLR zGGk#rM5zycK|lh?80r60@&mFI2wdU>WyNz!q;@4V;$hd@dmPlz)$T&*08z)ydB%}6 zs$ROO_qgNm<>iqz>KCeZ=Znon zR-@kC7?3g~blo4%Y1f*^Q-=}Cz38J`3WfuMhIZ6`z5{HVbpxc0342f`I;Mo^q76qc z=v(1gPq-hA`}wc_=(*2*%E8Fk>1pLV#lk45GYlV7bMeD_ZK_fnCpGn!DyqNOC$d%` zab<1gL;bNbTLt;?S3#QI@|etJ9F>Hsxv!D~RDq`Ny=8wg5+fYRyP7nv-ahoTM%=qD z`4BnVLR;PEDoNArirS7s_ciJQczfFgn%T{HZ_;9_Qs6+SWTzfbpNk!E|~Z$wP*sXiuI3Y7js&0Tk|4 zrAeGG;DKPJfG(g-eYd3J6GOYRjqkA6u@`|=Gh~?XxwAx>AQZFa|GA_sdPqcef;OL3KgT z^T5sfYZ=!|#Y?Av2R>d6hg8YawF%ejAnVkfkN#dQ6@(hzYxD{Wmir30y`lSxEIg`h zuMCmtsPh{fCc>r+_GvQkb5LtuAJ-n)VTk5hOyQLxIKNNk;AR;a|l&} zSZ((-`ZrPY8eErOuQbi!M~G}b4CqtH2`)*(>fy60{%a}#|t0~G?m%40K~bH6O?x+HzL#-U?_Fer%Xe$ zG(XJH?++!I_qkVj0=p~1xZSh&a1>)ym}u9rV@H1{~Nlabdmyc$^sR6;+3MhE5mCF}9MeTR!GfYPe@%Asj} z=nv=xz2wq9(pejGYuuSspUxWOD=dC6-dV9aCoA!hiM{WoJ@mYkEPU@5rLXO~zx*S^ z4g1-xiEk_%S?R_=6%Awa+g*myL)2rg&@7(>K1~_!!1-y>8FDX%GYv5R^8$I|wj1kE zm2sdx8UN&{v4`@{A!D{Z~k*wl3W#P z{@!e-=Fs@)L)$6U5!wc+ky-;)+=eciFWbQ=UFR|9k$h*v>Fz0SMSa^qxAUgtR!rX1jrmQ}^c6T$9>Hx3iaj?3e;=L-DF~vrgW4|k<&sVE9Uq8sk#-ire;@z{%uMe;ymSmq znc;bv3mA#HGX<{LLQypC>fL)<~meT^|)2svY{SXnRTan6vn4SM4&~{3xQ5s45ju1a`uU+Pgm+I2^s!Ni47VE5o zuoa&4_>h*kqwz+Q!8C(ZZRJ=<2KqZk4q6xTC76xFstoS53H^^Mbozd^9#x+RaNL$m zER^`i@c-89CGPl#$%NWi<6_h*Gxt<6jl+sykhy03n=?JtmqV_vAyOdxu|+3G7z_(G zjyP#*eJU<5&Mq1}nO=W0f0_9K++I|FZm$fHXVR=XnN&Db z*FvJ}aIvFtaKbbEotjTstp3@o$0bDk9hpF)Fr_fcR$Dsmh$>BuVlbizca<3=Qxs=P zL!5XH#tsSdm~x$Kh|3^bRCFi3M0k3v0raGgn*Ddly=Qt3y!4p0ZR$|{ECohoS;7{l zy{kw$T)bl>zu0S6OIA%&gCf{C<)HXeZs%~I{(}Xi(ZvERCW7rN+tY6FC(Qp*BLY!Y zSIq@-EDfP_=rT@An>nCPID4qFB(PQwpkInS1+{?gpX$5k8BVpkan*I}FV@>wb$!>Z zin;yTi=6S!-^Yx8ow`zr@#_>61&Q+fC)zmP+zY@3{fv|jU28_3xmAgP%v65=fd`-n zi{78@@_R1rup}l5M2x5dIqz*_fM!4-PCgG_Qq(y7^^>qus(c>OPPD|6yf?0NYkaGd z-YjNGD6f-c_zQx(Z`Iif3d$&zn4sP?kW}ZqPf!13N`V=Js;lvFDggrn=#MP#p6m!4 z(Bt#mOEt6IGsHQ4O(O3fg%vXjv1YYIoHAnAkfk^MK**!T0xNm;(~m`DXs)k0_3T_%f-zJcCo-k7vqG ztjd6i#;cGD91|>*bbKu%EU95zPd+-z+rtU@-6bMCP_!bZ(OE@`uV^5Vq}FQ^T+i{I zJW4_(zdlc^U0tsEk9|LcimN(Ha^+NTk7`(o-Rt2_;BKgvOjQ;{54?RW0{|W)u}viM zaD7#X6P`TqaF)b`wFkLhqK>k9If0)nriIO+ZL`#{pC|bOiQOi*{o+aBHv8*MU1^}s zcdwQwZOw1XC>4f2_DHn94hpK@fQj~DeW#dGz8GZH`<*S3l zZjLQFQFIK{i^x}wsL-q!n%FP-X-Ip@f&7snfQHBrl$qpoN|7oQido%+Wl~>XV~`}2 zauKPY|8^{7$1;2k5u#0YWY7etb{H#qs7CNhKb)lhIlvaGo*!^Ie=5zr-)`k9Q#suW zSZTkcHuu{E<9ZtyuIsxI?{56xJ}XaJd5VQUo871f=Hg)^o9^B+-@WHh3eRr?jUvLY z&RpLa`YI;v)2gCiFiJ%y9!<7b%dV|vGcL#sxLF^!a|GwtI8B7#DWb;l$RdOuRU~Jr z)3~$vb)E3lt}wez*BVaumbIoU+zvfgPPoWRCkk^$NcVFi9KqwW93h(A|jS%Gd{?#6@sXi zm=nEkihURvM9LkLX+ZB!#7)!VO1vKr^OWiYnAN}s1h!1Kjjr8IbpjFD1=C-3NM1xF zy(D?69!?OHrQPmUyN->+Mq}bx0E50TukCp_o$jO%3-R0%)bqi+zw5rT%OtNW4S+#t zyQqsrVtg~GjnH}KPwRDX)Zs=<9IkWot38#5??M&_Q59uR2P_`0rE9Q;sD%aKVx6F& zJcT*%_y&;q1)camGXa{x@ss`I*_KfXY;Kt!%#GKPdNd>A^q~B$#4Te!RcXXd?RZqZ z8Lg+5;xXL?DHv|>>GvEQ!0jQPw#y6>F8V+tFl9!nKtx}{S%UFcutkqY)KVWNS3qT; z!&!=%fML0u6`gxiY{!RS55qjUV!!x*kOizkOi2-vzN@}qlOD*W(GZ&ehb0dVk74Zk*wH3YU~iv18=Ln3LTCFMdR zVY~9a|8k~XN)$6B8Bpg_daqf}H=-7}&99=GrR*y8p!0UVyHmAFo1UR#rnc6#ymz?5 zXFcfCz4Bo!(R4fS_SRK?j1L-zx`~d!#X5LRy{)K2jVzPbzw==7TpRAZr69R*rFWYj zR%ngs(HFPEj%HB#hK#XK+AR1-w%N7xkfp8Is=(FQ(U5X)cB*G;8G8}-JkuhTG}M-2 zEryhKnkE2+Sl#^My=_!_4uN7lk$TxHr6HvR6>Blo*n+XfjcAh|y!8~bt&(|9n~_E} z(S7Urx~HX!%R;x~I!v4{vx_{HT8&G`Ma3B8=nJwF7b*;f2nSdqzv`!$@R{e@S?*R3 z1ma#iwJ-M6PjwtuJ9CXWxIlzF(~4wobLb5s`i1LS4pX+P%L;UqaHo1yz&a2zkaOxD z>SDn#MGTZD<>rUL!@rKI^cL^zmYCnvl05SKevr~aI-#sW3GS6AvMa0jb)X7f9E_~M z(n1UNEKl-<d@~fWE9+u<-k}S z_)bx$#*r+XY?Pa8jAVUCX+$bFnYuUpl`|Mmwv3#^MI8%dm7gS%*wkG9>MG$o&_fVX ze1@T+qVX`zzk8{E8((WziifrO!HdsxZ4(@t@ZZyATU;4&$0Lm-1En1SDRA3Ms=fc% z3hLOxzmWhxQt5fqBvzMe42gQ=G{Y$yhq_aC^((U6OFYlf*qr4;sjhhZzWTEeQbwVd zi`9BiDPcXMYI{fNf31q@lVPV^Cnye7QDREJxQO~B*@ z@+Zal3ZUQdOXUz!x>z`%(H)8La~vgY@Qm%6N|?soMeoM+#g*YgxU?O~*y>@F*lN!D zEu5q-rtym-3Y28YX@^Fiim~*@zeb1Whf%!XtQ2Pr^>ccz5UdKEK3o`yao!Qwcm=ur z5?D}528m?WWRGq>vU(n*BPo%ujt0VKpzT3;G%^aY!7+GhQH3p|wu^!-JaJ6Z)IB`$N`M=MK2P+CZk0&R2u(>P=^eu1K`cGj&YTgHLF z0|Q*3L*Rw-bz_=WXA9F&)wq|sf7{UF6C2J@3P}SSeNwc7>*dDS?2SU!OxP242rE#W z{(9cKOwR{#robb5(Bk`y4$t>dr%)o6W?wu|Be?seA?90hMv3?&av5=q>eh<*Y5T%e zxz@k;=yGx|u!4gI8A5G1yz{w&KwfqBWn}vIzEc980-1S`ih1z>Q65r-X(FM(O0{$kD{^dGMgCyLU_Khdd^VHmvUL$rCm7Of*LWW44H|Rq@z(?xr z8E(J|h--;bvjkC>RTp#zs0kZ%4gMk!SjN|^xESS@ATf;%Fql$r#WL_oD8ooY2G`m} zt_ew80(M33gq_Lj39bgO+Ec5Y(VvtLwrJ?-5YDhA*cm;tOEtX-qGME2Glm(HN6IrRd zTypbKbk8`&_CF@SV>IQvkWzr3gXfUBfZj)aVpbvodO{_c;whRXuu8qEAh=YXRU}@^ z^h6KXvO;4F)c@X>5TEtIBk}p|JcFdx0x5jT%J|2Ghz(Hc-1&b*(l9v%epIw}d8EMk zoo=?w>cB*;XVHa{KpV}iEJHD&88J~?sa2YxQkW7&DhpM;QKD4%t}Quv$N~O{Fy{i< zll3rpHnjRQm>jhq6Uzx+6RdxHl1EqZA|9-P>l}XJvgH?2Qz_D(1s&je!2YQM${NhK z!G%Uf|NjdA&>+%qtXL&*DLA#M(&Z z0oMBCdKU(M%xa*_r|&6Vd}&A#Y+rD&^Ma+ILgPsqbq_G3kW&oL<4=x;zd8jzuQ2g> zUPxRkC`iUMX5wLA|FPv&pqq|pT_%lGSX7pcFHy1UuscFEpT9v}153P@oNm+B>VMV* zg#ic?02P&aJkK+w7xvOqJg;AXm9yy?nC5`WJw_5rbYcVWs{HB;5I@)R7Ee}EA@+XM zx}GQz&r%GqCrYo~`2oiJCJ)rzn(0Y+lz`fLG$ZoG6JfcC$P#KT!a#u#q(bt+b1;kb z(Ii@Ypn=*PK^jp@NzJOvOTwN=8d5v}9+)3uAKdMFLTeMItyKVI+E|9z(wKrVy%aH& zulYVI1ZShe`D4u&AZAK|QcNpydY8hV^Dr4-k;P3rXvn+Ja`hi}{%w~`dZgIbBoM_R zWTy(&J;r9q_f&SOM_|CU+~5#fGKTanO&^4q@e(J}0+)JCu;F|BN>v%jN0T}WH$RY^ zbB_(EfN!Co?KMa#j{pXA)CM-GK8hFe*vzduk?*B6l}qCWfOlBkpzj-vTf_1e(8%VS z=b`r{0uTGYW;!b0;(wdhH|lueN-;Fp(!VzWtrz;J`1=nOvhDJW!Bd1PtY7qy7kpeg z*NbUx3^aY%#*d(*WY%tp7_8`uzmI4td@VZQOP$zgIt1;`@W^8xpu z$%z~V^c3*_IU=%xmxO8fQIhLY0*gq4X8ZCq6S3^VY+89|Gm#u&A}lcDL@zzQ{7&s{ za9+(XtUuzXk3!0bf56}E+8^F5!`+HLg!rk$@~Wk`1hPIfDiB%eSYzOc5%A@PZ!4zP&~=`ZDB3d*MFNh?lE8B zO)Y`l;VMIaW+s;IV2Z}h{k7%`z5&PeR-nm^J^_R8thb5b6%9G^M@PD4> z32?E1&ES)=jYJ^$X)U1u6q7a0vH&dmKMr^qmSbcvJe?Ko6qw1T^95nZt$#=w|M9I* z#%jBPGsQQ?lo;fHDWy)zJRS4eIMeIP7XGBu_d-D`=|hMFlxUzTBS;blXD8}VxRf$X z0W3?wa}VJ9?}P!H{Ui9>JvDH1UWL~$=g8_kjmUn90YlZ(NOUOLpVJC?{xPefhc7hYw<;dD0P%t=t!j&%l2oeT{ zzM2#;XBC3cy1iPQZxR3w0_ z?s3_@`z+oep@6lN%!aJKuJ6vcFPrf~65F`D{FFfBqUYS|mLAWRaZzJ^z3Y}n#z3xy z_foFi-L3gp#No>Fvcnniz2h;`;Y6m`(1yCM*Dv19NIl--=WY8$=6B1t1K(bTsZ#f~pMK<*bQ>8pD&;6u_sV1v3AAILD&D#(T ze=#~g&tLu6xq?(ea1lfPQErLevf`QI>zpkj$F3gZP0^DdUk2}m!0DIOcxv?fZH^ly3#L7&SDy&LB4(RC`ZUxaao65RDQ@THq#Nv}A>%TjvK|3Rzx8R1d4kk{lB@9%Ot`tI(y> z&ruuBLRaNa;8{uGOh7V^)6U2)TAe0ReW^I10bYYWH(2SXFd5_q`&_-BA3Pph8Z^+A zo~hJjip%qn--~NYq7rXn2bE%kvlit#wiPREqw5I^Tes|wAp~2dKui%GQADXG*-ao0L`W~R9C~ot1-mddTxN6wr-p}WFYQ&ec=p87Ku=Dsz>0P6I`;-k4;KU z*BcWa+quVUwwi1d_%_i)7FB1%9Q)~T50mNUB8r|Bvjar!lYH}H#AeI&;(w6tYWR*4 z4M}j^%z16>hJxMc{z>=WW$z=`)nh$hz0)GNQYt4Q(x%aDDOaGU3)Xv#wZlDUN7dY! zELktgAs9b+(&--KUJ-}ZYt`4;WPo**$#g%t@s^E1*kp%(WQ_mNuWO(ne64S5rmTuF z)=ulxqI|=g;!;wzKoA zr|E9PWyFNu3j8EoxTi`Mn?a%O!F!qCO--+-ErUbANZS`sIBCwY>Zn@bq(%Pitx9pU z*!94wl4 zZ0&#piywOi6}@u#tF3#LeJ8#oh$O)L6B;C!SB0bjP7k6XQJac9p;s4iFu@ksS5c55 zA5VE3GY6^+L;Zvtj>|7qzHd7fEGUiMJ9QolPGX5GIBG05V|v)sRl;J+?H7}8s$`>Y zva2G6TQ;)fi)Ypdk;l;Y(oSBk=$&lwQ%P^^ZFa7B93KscEqVON6DJRSDmRx?mxXgC zVnH(zO&c7@d*G`e^(uauI;eA9JdZfsK3p$MkZmkH5|&UWVY>8}Zr8~h@>O{L#)k2% zkS(N$iukSqx5&_}d8aYb+CBjY(bB!e(vi905!Sd%$nZ9XFlO}aE~j7E%Mv%3$MW+< z5?jbzU2s1nn}MJXoz8K>z5Owt2Y3D|?M<`uFwN7xZMaf_5f+MU27g9LY;gHI*aG*r z!|-(KMZ`dx`p3@bFJ2-4fcHZGm=L-BH&B%v;0p)m0n!27rDF>$!ToPOT|`)YR$gyZ zT9a%2?o5$iu_zX6{5MA6e=8q}=aFP3&Z6M=@>8fJxHusAausuBAO8{1oB)wu{t9jw z_3hW?i^}hZo(dyR;|)mFf>Gm*>cYukL(X1u>Rzrqkgli6``kZila|7U@MY{%)}fNh z>wurrVp0AYjW|V=^wT`+$0rq0<*%D42tFVWrdu+oVM^l4i}g=%A#mBuip^y@4|jcm zK2e47Dci#2lsYHs1&i10o8mAkYCCVqb@7&KG{5fb8NH&x^JGeYh~b6cY14Ckh_SfL zYS>TFvuB!QU^aa#iCQQcF+OLK_)*l{3l~kAJR@AhNf|`@1tLmU-s2h3ng&WbX-h+K zb7y5!@pmJq!r~h^50}W3Qj-l*Y!%Xnd&1jq!$2x#iOC|%I#~#12!kp{Et{7S`m($+3)JOux+A09{ZeS3hKOim=IjLbUUmGModl`e@QPE-w^nf zG2BI$=%`CHQmsixxUvrbdIE9Rj6+I1!7@;qhh{#)f&I zgRiNy(!qzm)G(<)bjWz<(@X;;+yE`O@}#RAJx#`TlzqZ%2;~?>FXDdIR9NIYzRdB%FXt6PrwjP@wU%P-ljS-Xrm&4}G#F*SVhXW}A9S1nl_~psmcG1N?+- zgUb|B0rd}Wpym*BA4fz#5#ir}+c*7!I)SF=k9NJ1$lWtobNo?|2M^kUP>CcEl*0BH zmJ(5mnn(0W18L*@cTbUyZJ((AJHJ7I?4g1B@Gq>e84i+n^#F?ybuo-zHeoTHUICmf ze*z|>K}^b$%12fVX&97E!qSsBKiB1o>N{n_&^;}4P7=KVd0+vzbsIw!_Vb&$gRtSk zbh~ZqNkCy0!^2RY{t5fUjN0q?l;Dsw@-1RdQ09=SU`)D$`oykX_NEk)({Vd|Tx0Bp zy|5?;hR_N$GbBWdg`mWwo%~8rxQ!@#Hx|n#QOi6KgV%l>%|4a`@t*DY3g)h8vB#&V zC7sHXNkqJv?%q+ph&T_>3VWF?MA?$T;=;Ve39a1nVO(7mA*E6->%d}M3W@*f(s&AP zLM!pK=sD7d1rT+}dN2pQM1c-l<3!qyH2al{4*HS4m^{hRF{SSIqRiEWx!|5Hr*76= zbYx!{F5hbsXG)V&n(!r)Pl3Ftd?7XNmAtSL^)@}{F`;IIIOWrjG0~&AW%V5(S{I|u z@APVUz_=*FvIU2uFyQfiE<}hPYq)MC`j@J}C04Wz_Q6~AK4=&vFFHqui>7=u=>MfF z?5G@KKU#%j=Q&WAnvW;Ipu}0dQx(UYTzFsmGNr}7!BOg7wUtgc?X}@~Io>1#$7Gvv zYJy%wuqbc@I0sTo>QCa8--( zb)L27O0epiAVk)6en0g6{cTHcVR>2ceFyn<#}*N0HRXOxD=`6!wFQ<&HWq_1&J>|W zQ^VI4H@*~xnx2ipRLC5pR-_$&Viuo}Mtl^5@gimKBhSFpGloY9#}d{H?-O%g4GlTg zS_3uBkXNBI<}HC0pYSN)QPdDw8zp0l?{s6_f)*RHj2J|DSZOg*R!L zz12jjU&wPhq%_Fl&*#b?JtHg{=H^-Q+u7R45agz+cErPQVwP;`F1L~-@lqdan_#Hm zXh8@EDa@C29?DN@eQeo#YpbQzn7bS5sf6r)G0D0e$6nqok}=$6R1n(Wg@8hrMm(@o zgL^VqLu6 zB*8yiqDW$|@H^9b+?Ks#aOVuYx~Q8wOAbJ{!N_veCdDH8=998Ss}`RvPI)KE(;h7e z^dJ*?8M6VIV=Mk>BNwlD_j7BxW%30h`F`A%_$c1c0)>27CT|@o^Ey&N-HVgQ*y`1R zdVSS7hk94qWCjp%kUB$7t6C5&MU^FN`_45dLKDrss%Z~^GvEFN?0j^(b_IBjJd%`< zMV@Y_3#tYu6jNkir&Th$vr|RobC$p`zIgxQSZx~0W(}i0+xwP<$JEOeA|df9#=Tk3 z4N!-y6LS@Yz?w-{S6%Um`a)cAI*pRw8%uQZ6{tPZ3I^EPQNB4D2vaIRLPT7&Zj*83 z1vf7D?!C+ILk19QO4{?++8%grz}nTi-aSr~cb9C#$Xm@mIa092H)I})>Q=a#7HQ^Tg4;Ih|wYpqJ_sF}{D8rLQPaU@RY%C)N(XPrw#s3WZqjrzB zU&IUM)3ij=v14~Q=L*GjL^bp&4F!OVc-kH!FS(3YRTjFbIBxZYOtRB!PyWaBfExgb z$+SP|Y_0f|3sSGikY>9$vG=4_(KkG+bnf0VDF(}BRk%qSD@Y#B{IhBi;284A`EC{? zw{k87MQooBi=1KxqiZ}F1jmMvG9u};n3>UGLVr4Un3cZ@WCdBre>X};7lNnA#7G(! zo&YMAK#IgvPL?(&otjLph`0!d_iuv?-MMW82O?}3WMkqh z*HeY5cWN}6Exza))Um10+H` zZ!$6Noc%45aUENivjjsD_P>A6j|mf;vs=WXM8w1<`rV7Fm^V*x z-*#%=$-NuK9sR&40x)3#{|!w8B&N`Lp4Ta`%n2J`p({+Am~iVWx3rI(Tw`*>Tlit=ZsD!4XqqNHn*KRnX9`Pj$w@W=YZZh>mroZjNOxf5h7HK z*4AZ;4Qo@keB(gm)|j_lQfwAxf0lD>>s8g3!)(z8$v*opB&Pgi)`j!l2Xs2YBp5pa zBDh+oRejRRh>5=O&ksLR!elejZ)^jx&>CX9XfcM!YWO|Yr@qq?ubuQzh|OEog)K@G zhOLXkHo=5#0?tq5+?AAyMe~dcSUaW~8s?cM?uURoXdl1z(SAU*v#YgV066>S8 z7 z@Z?mm%$1$Fr}CUH@>8J_mI-DUGIER8V3HR#6g}$)O(-_|dh~BT2zSh@A1tQg zpfRm@DZWM61mqie^+)5vy*ukgqK|V?GyMP61)46#4gCnf0(|Z$LlM>oN%(P z^PTRw@aKga)KS%G45RZq7CxoIG12R+Ka4ubm?5$l7kl|%=L^X}cdpXo(Jm>)bliZc9RyF0Gk!yAsuE3A?o%w@VI_E$EIx3s0bh^^-s zr~KHm^8vge&%G*cWk~cYy^OE>mV8JU@qZ|sbuew@RP62(EFGeY5!Su1a$gHW;Gbt% z_kX;>5h1Z;{5Vh+;WAtopfoZx+d0x3IxgnyC(o~gT2E4>OFq_fc(vhA9mStoFz2X_O!I1jy$4E%QiD@&m!m~4P!#sY9?ocslsuReRmW0u#Sh;=B8$6#+Dg|C%*I;bQH z#a|Qj$WVLRa>iaA@3bqGt6*GF#O6G7ySDmQ;P_KQUcKsp_nl@h4W6PE+QZpxQaUrx z;#OKf_|YT{N9Wl-RUni?{_Q;o6g{6NDTIG#GRl`Ldj?%V)Efog+hro5t_2UGf0A5F zJfmRgOVWxR&sZ4|OYS99GjU~5P}Et(9A>jsn9xF3txri_@u1JOB&4H!Ji~c}RiQI{ z!i@(j=J6@fqiOQFjTjU1915{H=>acgVbAi1WH=3TkxVLo>xEQ-2%}`392!Yho+^_a z>`ozP= zNqNYTo&B1R^jK^qR4@zj{(s(=1`}y>RB96dB%6+ENe+{9@&~$)2T2AZd?zG3NTEQ! zgE%>bn14F+3pe;3YHyIL#f1wO%)3l4OAp<}LG|0cs-V=A_K|n)1j;K-lHA|XzR(8F zPbrQ9BH(c46-Mz)+M$p{{M*#I#sH$`|4sK?-O6$pCS(fZ2vnWip=l8nM`W}EapzBk z7rjC<>=spN#^U>b0<$I;%p87V#H(#YHa?k(JZgEyAHdU*AoZ?ZvLqt(7dzlgv85-p z3iu&$=UA}?+LbdrVbL@NVVd#1cI6UQqM&|qM*>C2-G3LS%1}VE!n5c;z8dXu$nLjg z;5qwW22N`%TrFC}P=$2g1R6|#0S!5T3JYsVm=jb?>H_`wg&*_NzB2b@w-yfdKmtRY>j2d;SPV~l;{QSnO`XXAuR;_{fouK(gi!up#2owoLCg)G z>493?{RL^kM*FHnhVn-AZ0M?b0fYLh$Nhy6=MSQ70sNUOUP>{G$$Q#h%}Vq?#9Vsu zmymC{Ha;taA?d{L_}9W$4Oh&}%Ff)aRFDc`17?}4&3gAhpJ0LvhX1}}(gccKFn3Mr z4kS)~7=e!T`j7)6=;ipVz;G$xmxWHiOfMm{j(sWgiA`$9O=E5?9sEK}?W8^fXRcyc z^^0(RA9n_j*z#H+I<2=RICKCjqM8i?755|)%MeqV4HEUDWJVea@K@{*5bdl9K{rhj zz%%DIf)>a9g~*xq?|Srq^7v2yidLMi<*#~&6y0~OCoX@v*}ae?J09;{U?#QvDnr^- zbf=>V=h^KW-}5b**gFO5FY??a_7ly8l1y}+?)?6zu<1QGm9e{{(Yf00-$OQVY#A6^ z#Cl0PFQh|)#u@n;T$@ObC)Wo$E9`sSzI~`^+3?=~`pOw?mKC?9L8JrDQM}{eDn^i@ zeA-pRaG7&td_}|e6hqO=;l9z)*v#$TkW`XKT+X8^LeiI4@Gi;Vs@-}5m&3@8KnTdz zcg~q%tCom&2t$GdGc!F!cE(Pelw(HrIa*KLP?p@EFcVx=EY5$+R%ebHcEa4mTE6e> zE^|w^71Z}AcOThlgr&y`$51r4U0v*nUqQ{eaoXvY74k5FD97vD8~Uy&x0yHGp0XGE z<%|Opp++(orn8)y0GJ>?DrEs+=5UC;KrWGO*pn%Bk!ldWs(y42SO5XjVX`NG!VB_! zrQHIkA9r863lQgk|5LK5d)l+za`-P-`rkDr@O`c+xW7m7faqC&nGu2EXb!gq?a-l% zk>LScIahBpCr0Kg!v@@!G30kH$U^9+8W>f!pyl9IMe%2OO^XxXtSNdo$ zvai#=!bx_nT|el{NGnkbP3O3@_le_t0}toU;F$gx-6%>QZJxF`o$B=b;(TMMuJ)Nl z0S+wla@O}d#2WLRgA)h&uQ@~X+9%5LbfY&d6N4h}eibQ;N$=e}sOfpjfiD=se}dq{ zA$SH$n0DLS+>8e{LefO72%*iYcb+QvYRAL#XlNNO)kfYmI_vqAD^?wF=}U5P-ceZK zVYJ;_6kM+Nhb$qf@dbw9x1;K{Ryp5EW)anU|2BiV7^OOY-GM#s1M{0Gl{}jHs-B%l zomR)vVwLjS!d5P09ipq!4!9luYxSnio)MAwqvyRrRg#{|8Rgk<%-j-m5mAo8$HrjtW(P34Gr(R^fh ziclXlW#v5{*J%-@QG3qN%Iv;hd7HEr z{2PnUO|(uKSiq1aeNvw;GkPlS73syjtr(8`YkWh4_R9UWJH8@q^U1&T;cOH6QS6F@M4UC+YHPT!^KyO`4bHe zen4o*F62TE6*qt!2fDbu8oCO(PeovgkQw`~M~tU0S=vz8aAINVfAF>6IwDddUdcb& zm7H*2R$3gQ{?o(F!7}8@XCpo4=YW$29b%^b&a^jG4*pR)I@!~8Spj;)hKW5_Bw;nY z3g%Z9{8x6~-*?Bf$0j5P_gxhnmfZrA(cEs0m@BvFN~5H%XsI_P#%TCYGH(T_u{V9Q z>!plSoeki!HwGS<=PxafY;c4|4DQOa{6;hD&Ikjg@M3< z^t-9dP6M<5^>k4^^>vTLsDRtI%?y9ONd0$oL9(2H-9o4ULwB&|Bv=# zLJ*gE?vPjWXa2yS>uLfEbd`UqBHr-SfOm&)Kn5THr@#%z7!-NZ$$THeztr;S_LNx& zQ68p${ema_DK78<+g;*zmv(Q;q5TI7kZd`)ia44~V-Wx85MoPdnb@bR-Ewf_NqMF^ zpYSSk=I07lUw0&DU8lXM!*b*CS9wOko14nkam?060yoN+Jha}1&E#50TSxm34jdLb z>riw{K6-}BjmYn_S3JJ-tP1CTkr!y$ySGyZ;|1d%#~!@luIy7i4-NnHO=s({d!*hv}>8J;yv8dslusfi{D} z;FdW&jOF1iG)_Dk&5Ovx5fbu!g@NB)dcBKI@Z2d+53WkA7V9%|;M~Dp%l+rgv*c@S z0e4IwS>4Bd0wf}=%k)y<##O9>f-D+>$;F`Z@T#g4FpZ|)U#rzs|8&;>AL;QERVIBj zRWPzD6sW&=(9_r!UUB`-{`tqt4=eQ_QIb)Ph?S;@arliSfqLY?J_diF8*<@})kdl< z4bl1j;=#$)`P1jlpX?95SLXdVo<~DL@U48cXFZ7Brx+or!*K5r({X<_g()}^oyBB{ z^6&y12O)D>9UZa|5i{YqsM_p+a3WWQ{FJ_Pj<@yTPHRq%IKt7u<^D`m@mcw;Kwi3R zu>m9}1#QusYA^dvsZNP+myBx{a=f~ddcd=?mK4sPzC|@^O8!yETwH3(96{Ct>gpZ! zmc;mvZ0!iUPQ+fpqF8OUEnMh|$!Tc5m;b z8H@CY+kU&1^~;R};n>DFCm!2uk#EHe3C^7Dt?iBoCjUSc83EQv)6g^!d<+zC(%7^O z^$`fjRsezngh?M@5xuBBZnPgyqeYt*{mnBE=^!_#Z*S#&oA>opP8r$$41!b|3cg8o=@`}Kjreh zpMCWizaPr7#7MUpNAfvK@6%J4#)qbV_Y!{BZv;V_^; zU8p!SegIJ-dk_l2HLN3fgg850RXs=DIl-~$dsII|`^I5r)LlX9FKBx0`Ob%ppPK_P z(SlM)`|_Cs^O+-ZQ9w4^wQOTZ_-}0idnXl|*X1;<*1s#CUsoI)mV>ACnU^|C3=>wr ziq8!}=iSDPx4`Y#{({33l3+?8s*zhtdYGJSJq#jS!H|a^vrP%;@K}amc1V9Dg=CT~ zEYz_^z!Fw=flP_|56i$Q2YBGYA42YG=uMBPACLk4f)Z#SDt(IJ8uj_$U8>h zW9zTA59kE%{dCbDUL|HqoH{qcd~iZpX`ljr>7Nr$d5d^=$c9*B zgYKl2r0s9cmwKxcVCXr$V;2PmQV%XIZ5Or0pXxT|=Dzf^PlJ(tn;uz5WHX86x1vC! zUv6q|yAXcc{IYqPi^TmpqtY)YH`iIix0`c4kE7~W%YNByJ;Jf14;!Z~$M2j$ufjPP zy&0BuMb0MP6l;(df|ovt$e(i|Go~>*ue?0krhZxfM<0^m@dx^W_pwL*Ii;Sua(mG_ z#ug-uJ1(8^-Y2xnM|28W0h!Cp;y9DU3PZy9l{K z1D&7SiQ{r}^QqW23>{OO5(BTD01Pnh5P@7zGgrd{b>90+JAXc5{}87Au2KTEt*(f3 z8o?Vc4wFExI1Mx#weKsavjW+GSg1|w301%d=Q(+MhRPMtDz4n+L z0VZ(*&6XIh5|DW+AM2G!iLBL=4g<$EY`oaBYXUUB)24~i-xR_%Oftcxlu3W69z@8> zk1?d-hTwj(Y+5L~tLISji6zcGM6bS<&Hq5^-W6A3z-yvkY2XpuC;*o5niNuyxP+WL zBmQ%9<8p{&inYb|K2F2V=WwNn{Z^suRBSON^L?)e_cggc|=X?Ga|zLVDZ1u4s6g_?7 zY^V&jo9fRnJMn-adHx!%!@Uh0JGv!@9GdOxllR)oezGGscF+7i#GR}nbq+_T&$!Gz z);HquqjG#v(esg2e$smkMw(p5U|gB<@VJh$=eFeh+zUGVpniXg@lf@AqlWLlX62cg z1dnSMlib1re}rTP%^jEwb)UTs!veza+z2kEvZYC-G0IO zunbg*!?PySO!=@N)p|PVA_Cwq0eDD^3#IicU_cbbgTD%lFn1mSFlqyb;qL$42AvSUWIFMsEXS-OFE(98u8a|ybTD2(CADcF6*ux zbFXsSi$8hRep_ml+R@_uD{WG-<>FhdS&m1)*B@{;Od#UC$9`Qc%rwqnB(EEF9-D`g z)(vSuxzzq6smilv5V~=*a4b8Qs^2DXiV)3P{_4>0Dm1ml_A0Kp$o;Z0Qc`EMv2vZB z7%4a8{aYg#iSPvAly_UYOO{%C?zP$fg^}Q>^XlCpk8HikAR_7onMw-QmHu~TskiOWv}RG+w5e{ zgikFdEIRJK96QaiaeBq`xJlUz$z^GCU9xRZ`^}tziu8nMugTMJ?_DF-$`uNSCBC!u z!Q~Zno-O-XLCyDlKmo#{&u4GGlwo#ue_)o zQ){pCIV?CZqf|BI+Vm$xpd zQq>%;wWbVPhN(I)PxvJ2t$Z!XF)uH%EN^cW(%0zenu4aA<7h>^!#C--dsjH}xdJoJ zhg?g)`uCEHJ6?|0>OBeKs&1&|#jDTnp9L@MH2s`6=<`uz_a{Rf%~^%BNIfO}agcxi zY9V+EXBuUcr*R!cIl3xKlTm^vOi52D2hm`+iDwQQ>c?5H@0pIDgDmNZLnQTG#QrDs z9b$ddX=bztBdUTrxE0it+vd}**wOc3Ks$n`Z3d>c0u$+eWrR5Ei_aR7&Dh%0`UUc) zzw)a(hqP@}N7PhEo7-v8&tv~T%DytHsZMNQ<#{RC8y_X1d{c$2?myd~rm_wJ+2pm)eL@fs=vu=Fylev=>c_NWI2F#f`B>qLJ(Z1o!I{oW`K8- zF>2x^D@khl0g+s%EvQ zO*fx*nW93sybnGWS4;y#pXYlWq(s8}1 zLNitj7i!4YOKe!CCHs_CQ%3*B0=~tebgMJsD+Gsg1Wm(~RQ^W)7H&_7Bt{je<%HC& z@`OVy_OzYf%F?mKmPT$9On@Nvg}4owevDm{^ofllt1Y}}>#usmxJtZ4Mwl<=d;ic6 z#Xrhq8NX&Kt1h~$rAESO7+Tihd*2ttBh%W)8E)q?dcP_)0tS76fgQ=Ge+vX~1{2U- zjFb>45=0F9BNh@+-t|T|>9b+VA^O@@=*iRj`T>I|3Mo?A_-q=;J#IyaQm`a{BfyQs zD?y}XY9mrb0($%8${p9TaJqG%Ok{*Jxr)s1+$$Cb;uXeW8${~}fiwluvLx*P3Qig{ z0mj2$!O0%OKZ27IQy+O`NYY$gXFxij&GIoEz%H;rU^w>7W&JHF zBoHt6$_xl|QMl&CeLNidrUuxe0)c&PH#%k>k`5Bh$UkJ!9REEXO5AlkaV}#hfq_^| z45#q{l5<{d4Qx?=9X59y$ohg2C1fS9gI$a4*|v~{g@kq}nOR^(ei|)=b|(IW03slc z7$1;^BFa@H3|>j5fH09iD=|quX|Gv$SS+3N4+mY^`yCs=wrx$rumi-tLJuADXRNNG zL6Iw2l$}Nz@fVo1MFVxnXRKI;8o~yu%ED!l} z*lf^477W~)$)dsUk=FoVhIWrWsw7&kb;^@8%qm32+|YXbGpmKB*(CFQT0$DCbpr#pfu# zJy8wh=z8cbZakanG@Z|zu}dh?J*gioXKR)!_@LR<)#{FZ@#Y&oeCL>(Cv%bmWm^nucYa{&Z(Ft2%hI(UUl+gg)r zU_3>CLZ^OEcVI|YJ+cr*@X)4243dn>`NyN+943iUgeUCAH_2JD1g>``B5!#W*<*YV zn6Yn|-6J_7V@Adu*U5{H+iW*r%a)p=Qgw5zTMi3mEx|u{+M$WgotVY{R2&U1#99B* z>+nU%GRn`66<3%uUse^+?EPzr?~y>M$OT>(=?%itVErD0g@%P56cQ+-$gGpZfbJKY zR>B)a8j?Zi{^(FZ2jcm#408&7a9Zf0#K}JIC>yS+QCxWQQL1>uV`!$V$`xZFTE{fk zPW3^&O$_%1E~os$7Ov@>rRf<8nFJ-9Dj?=nUGx(YHTo7gwP{Grg;SJ1Xk!V9=jGAz z?%aDSb-*jG#d?V;vgQ5y@B6}moKVO<5Y+3;|56zVkfFt4QUBMYKp|rUVgMiJzEoTc zL&?jc7fsEkCz34CFcHWL>cvT|Pn8C9?$|)*)F$Wq(k7%00RZ}&<)>14fcp^!F!lh) z4C4Pm*b~?W2z%s`t9u~JZ9pn5bm(30^}upPIM2kud-Vz=f)pp;=AxDAq6}vEl``Ue zgoQnYf`%2&q*SVa7|N^uiFs7i+TayaOAImNq^Nh|CT($HJfxut#*qO%b2%Jdu?rJx zGuos%5?H7GZWgbL%GX6Z#C3kyzG9qVvd{SSjvn=Sbau8enB+vbFI175Z5x*n{3@0!_^v*XpfXSuMQgZ1uZ-~! z4f9F&aE%uwcP3jL0IhCWr|!1mo~B9CZv7VS*CMWvw^uX@=> zDy74ai#m`v)VDNTF174mAdkqtV+TAoza!PcT;0DGchVU+Ufg=*9YtET zT5DaIu7#i88S~s34}%-*0Ojiypa4qOINqK61!PlpXM2snMwYU5fio#oBV_c`YpY}5 zZ~-$cBfxELUXE+_#PPmM+RDm)_`yX^T`DmpaDcov_m3?Hk0{7Bmo}zY!zqN)1@w|c4)o^ zkf8|PzgYZ^q#%|D0^0C#Q}E@fVuk?mLUsy!Nv;rIOkB=Vp&?$_S(`TE=@TRykb+*g z@{bWDg@N&Dv-gkRE8Jv55td#)=&YlqM@fg~`>b8=u zFf9?=@nDV+)mo;ddfJ@uIw3q&7#M@Ycx!|7B4CKa5{VHQ3Y^X>VdD>|XS$t<`Jg0; z&Mw~X&B4B62Q2YC5EtAv2Rv*D9M0~89joP9@<;?XVl)#}iSpk8N>@I$_2w^msa`kA zLzqRk?&)KQ2`ymo75M92Idqs)AX(6Fk%iyRn z;C_A2myBnNE%KCPxhzS8n-WraULi_Z*b2y7iDxISxx_eCbWX8FYWZ#mJM;7MTM4gK zza*yQ+EJhafqR&u_C?)eV_(1&dbA#{pMCIE`vFPu)@@H{ru;xL{GoUurQx}*1Dh0E z){vX}DB@@G(Df8{taUYt=@_zr5q$Z2;dAm)ug82i}=xAI)K#; z;p(SMtztpCF4gAT+P1X1=DA*%(=}k`wZ?gtSdVn%*#c1ep$FY3ZeuTh z+pCY?1lXgg!>+adr3{YyLHLgho)kDnv|-{aa_u>HfLj?*+;q?HG3f1kL<3pH^l8G& zJD-4e2L=Mq8jK9SVb$hCs{@*k)A=EwNZY>G>9z&Aybrf3W^j;*02IP|>_9CZ3>A2C zg?QQ${MD8INPL2c9ALHJ|CKU%1PajUm1w;aSgb{@aG)tBRm%#y)^K?7S9<&SMEog6 zOkx@CJ&JF4SP91(k4Hqb7+f3J^vkfs5$+yJu2TbW^d{8Ghz*B;k<35Qf}onyryA7= z_&|k@z`>hy73StDx0VgZ4IC^mj2e)F1C)jXz@XlWQLe7piIgr7dHHS* z2%dHeEih*2$Tt9NI`I1e`qZ2A6uHIMqVDcOXCJ7yMo8}VmxNA(a$m*OZht*^A~Kl} z)ecny1bMmiXzo8jS68(ZKuhJz_3=V@U5)>ONM30`~6gVTgbUfr%l?L51g zCA**l`v+sOp-JA8o3MwTKdczm#jwaeBaUiM?_QfHfi2cT4X|pgsp$VdIb z@dTk3QDt*`L~8n2B{tw&cSnQi*0Z?)a=t9^LrIgW8g`+5FTmO(@OcAaCL4)t=z+5c zg|{YaF|X(#JzC;_kGH#ze$o!`tUA_4-LSh^7Yg6^7Xc&n)#!E5U{fvkNLmOoOhb?o zn1C?O+ymuR2aQPTIA~Hh`xBM`QG09~ zz3feY%P-`__~w7`(q-D{oZ5S;nT=q$S_sNp?I$x_Z#TQM>(?GAN}hl7Kr%U`jr7*7 zeDi`dZ8`0*)^!_uN;<(URRoVLxqM43sie3Hd${jDT3L7d?9~dvHDf7_dBk{sP&~o3 zy95|%h;ZhyUn3oPs)L|Zn;m~igkrB5r8pJ6V0%w z2kDtJEWRxF6w=!RuM!c@g9i=SdwK#k91rAoIf0p@xW}44?|^GNihYESq#OT2$E8`7 zv=$1&7I{BP#X;7<>Ce5eLe7@<_T8pxcIaH$7Y;xCG=DdpNLSYE1ZvDO%Jq02Eng1D|D# z)d{=X{I0_M{D{D=QpTS+i#NgdzZ56|YQ5$=*eX-YdnHx1PoH z9(?9RS0PwpXtr`DQd&iNiQ0bc~yGHjLjtuy}9ZeK? z2T1(hfcdW($d298gwXrAucH5VS&9tU7GRs|?RiF#)q~Q3*&brxX<6bs`L&R8AQwPv zP9?#JE$03HuS!^;)7cdo`N>eV_4eiSU_H1z1Wx!xFJ|oDSimT{cu6Jkf0fMl@!rae zoim*JZF+x7^xm{%Xcyyt=kM5qBJ`k0ejvV9xRQ8#lP6H_44Q`3$}2;^*z-Q6J7W6M z{1g+nF0jB8Hpz5$Gq|r^th*;b%dWz=ej-?}o35tJ>m+lkCRyAzwV%#g{GD=YpWEr& z6I4|R+wv2_nWAgt-Pus{CbKo#4|nK)ilrY{lMGS3xG{svk})Ko)4uZWwZ&Z5qB6A{ zYg&-FGqi#m@dqKjlb|W9!-)X-F=?rL5`!>1V4XqCch(qiSpI6s zoqi9ix2iM$+9-AtoyKYF0FjC~tq9YuSveQK#i5wpbV}Zl)j!EHc&__AHnu=Q2Z}^( zXdzbUihOFpWCeK6|7gS!#}ejR@GnHsYMqe#vGhC?;clK{K6} z6A6IX4p5f?;&c73qr?+#<0%W6YzT*$>t4DyW1%9iLFEx-3-(5R($Z+;VMawf%aBRRFFDZK;}g_~Lf&kHs6DsAyt-e~Bd0FDU~!l*X39kF`EL zG0vasSLl1r8b|9EfrHe>zA|^3Em*9g;+Lia@-|EDV%1W(p>3s%(dJD6kqB^_?j0y? z{~K5u>xC))FvbFLMqO*yn{B0kC8}e2eSAtMpeJxjR>Sttbt79i*>;_#G6S^c#?wjl zDCe)u(y3vf=SR(Lo5O-?UD{nnsbYiO(n!zs%fs|Wwc+bjcA}hyFT&>ZKh(uufh&K% zoI!8*mbi>YUeXll0xipBeNNT-@rMvEW^n7P?Q+8Nz$||+XBpZdz}8!-S07#5>>2fC z$7Qap!qX8O?d*{?5+vw7v_CBKT$<}Gy9f^0tGAV8ohU@4o0Te|@!?^lagdH1+|06l zY9~0g3T)XkMq`4@9;qW4apZ&Mt(lK3s-oZ(ph^c45v4;*z&h{A0+ZfrHRmaR5iKDv zZ0rq)7y8i!gU2C29dDSsWAdnZyNmio3-Pzk|Jvr$^&haxs}dm&0!4KuFvIm!E`=2Zd06`&29w?A60u#Q)p!lUngV2c?*@e!jsKc3hs!B$J%O!c&Kh zR7l(;Y;BlKv9oaT6n?v_+`|7Z73KJ=d3L_5nKgHYDnAxOGOMVb(hX{%FVsQ-t-O9G zB;RPy^vvX;(U7!|?cM=hC&b)%Iawp_jUWNQ*ewZ`5{jWOEYy@NEE(_2tM9E|1osZY|BQvXw%sgnd02)oa^~f zx3#Ic^FDZy>C=K_u@m1)Uc~P{k7+#kwg4IfG`mHwpV7q zK<8MJ@C#_@i2Iks09XQZycUKbpKp+Lu{n#M<-ViEf&B5pU9EoV@}j=C6GVcf`%qNY zjuaI@DXhhHOwVjwBTq6@;+x?GS@Xl2ySLMZL{vlB7ivRU#PazK-x+S=B_r2Ow(a59 zR&Tf$sGyc21?r&dqO}U905J*EGwa*ETKxo2oB(W3UhD+ylFTQK5bPrVr^$!yU~aQy}FVSuzGf@og)`tnG~tw@#ydf@0om|96ei zd+U>C+*EIgS)%00AR$W*5s6)jS1AleU)QvKUj{5v@J?R0et<1Y~^{3 zKiukt2sRMF`ouBfb-#`bp<#`dFRC=&#c@h_EymKvBxw9$IYAT1<@!(<8 zN%JHQU&buG{a)7z%^A>>9}K;UO0R>6)V}*90j6obWx8Fi{eW;3DAnnOp7jV9ms-5B zmnm1>T41*yn@M0^%dfYTzD8WPFiv)|Az_U%z21B=T6sAWUoQjdjK9w0Mfh=?>w%;N zHdJdACf>>iceVtzr_FX?It@5zT?S5{^^&x;WtJbFl-~;7#rTM<@xMTJikTiK&~u*O z(k2X=5_>Oty~WJyM0n9LmfbDJA7+I2`ckRn3+YFeP(=LEYZ!PK{-WC#^Oy5R6DaB% z2sPC?pJH9%vs%eY5jT!AE>=cu)q$3|aQ`o@4{py8m7(Mfg|k9d6!N~3@FilzXh2X$ z5L%353bG*>aXYI2AwXk#B2RD8B(Xy95nNqvVVM7YohQOu@1Yf7V##-^zUVz`)v}~g z)7;KEb(nca5`sK1A1_+7kGKnVt7iaf$rrOG~mhp{Ds6$ulwoq_tII&4$54&-=PiAep%u_bpM#|DxvlRT$IEfk*13(jHx$3*-dAk^OaGEu&Gcn z;cX61RXftW{4s&NJ9caMCa|F1TxsS}oomu}8vmp<&L;Ko`YCkIk^s%Jn1i@aG`iW2 ze)x7zyCdr9)-?(h&u?>^-k6NU9YSSmew2l)OFl(tfrr~JpZ5z?c2|oAQY^B*0-a`; zb!qonKh>r>Tn1GfKT7;uWpQ7$UGBe^lYs21 zot_W6!XN*M%(65e**Pu8g+YN+372CgVKm<2r5pV^H$-1p2KQ9{4Pto?$97^QNn zjM+n!OY;V1|EnT{qnW4vhNHGc_V;gSSLm;ydb>N1>L|NId#f;ZH)G}<0I6Q$a$x>Q z3BeyQ9geeNg@Ym9I`^qR?=w8XY#Xm2Y@@87;Rw9866d2J*Lm!^fG|YE1%d600TLnj zBOWt6)u?|rxN|rmz)L381Z#-@2E~*#^t!L1+A;2c_7;do|CmpsQpQifVKyph$&zWb zY{&n2;-)XvCB%P00MVj*p3aUABftK8ea)dLCzbsb$mqGna^*>pR^~T9thpicgWKxE ze^n0Iu%lVsU3sv4*Nl7M`^(T;&y0FP%#64D5kT23VRWph9{El;DQ?GZn5&dgJpXP) zP~2}iENl&=*-3aD$%IU|Ut0Ru(2D67M6leu%3JOV7d`E^J)HJyoH|aa60;@T;_S8_ z&t8e;Q+J`gtmq%+m77MnB*f{W{dE;G@sR6QZQ9){GdP^c`my?vmO1{DvvGyyiMM3g zj?mOyPP!zBn)=VhqscrVS9Wtx;|={B_Z`B-a!xI`5T!|2fp=m+Fx|1CQ({oDkjU=)=WtZj4J!5}UZfIi6Y%>&^BXJeSph2N-OIjlZp$&>6QF zSJ`ZYTh}|{Hyy67*A(fm5uHV{uHBOa1(0wFvhjcL=;104jP(C%rGbtKwH=b->*J?A zymxX)cL~?qxurhyOfWmZrkOQDeex5(A}cpIq1c@^RlLqcyN=jQP5Ag-JpthpWZj*u z^Oj1Y6UJOSi?#usfrP2W0|!lwG7xgAs^?PXJw*?!2Eo#U)%+hU@&VhVb2BUK=1l$yK9(OZas)eD=y7zUP|7*Jl(j$b@H6Uvw@ z8M@XvoI~qJmS74Zygc&<^Fn4G^mU>8ojD-{*d}+oZL7)vr|CWK$uui~0*uCg?E$F+ zB%ASh{Nyl+&iBDB12xBK+S)nJ_2hIpFJ=}4?*Eyl*`YE#s{iKy3_+an>vD)`S%R?V ztB-b1z{O~mx4IO?&H`b&vBg%p;{r!tPkbE-PT*9qSAYl zTTFlQp0<0=wNb&6rbnsr+2=y0LUq1&x17V`gXW9g&~9K(^wpO8^50khE}#fJ1Bj=~ zu%*c~Dm=CGyCW*aTo{p8g04~%4s2Y zzrExTPNf61)d0%u^*ahdEwoVPJjxL8ae5wnXmQBl$A@(!;niG91!nY#2@n;EQ z$|?9LCfaOhdWDZ!OUJ&LBZ2e1O7^9*>lc@614teGqxU%Bgh5kiy>Za-&_#ecvsGZD z;^acA5%0+stlaE|^@(!p8T9f8 zr6OgijA)5!%SW$^0D}yfD_|YE+2;0Z zd3wEe3AWUO8}TrJW*mc!iILcb)5?s5t(;P}RZ1Mq!`BuqzezQn{)@231_qx{`n`ezL2o8*(-Jlk#VHI>?(0vD!$mMuh3l5!nW*|F9yW5-6L%MFa93lk` zZOKC-#L!I&s0`q=ksodd(N5EY8)C3=&&nD5BlBpK$n%st*uh%;;(jR2Z)e4|EX%yh zmFS{YXWJ>;nPy6eSd@l+#`Sk ztdY@A_irLgBW27N^rjEL+@w|N7SR0T3j`p7{nU4bp6|u&sq0Y_jy&H_!f!%{p3+{G z*)g8a;?pXQ!)8jPy|^i7mZ3lg`ePy&-3*@d*szh5o}7XChL{4k&SZ77Vw)#OUo|Je>F(|lwp z$g+J@ioFaSFac7Yj`sHPygaoCC`BdJQJx{ddU!{s9pbg4B6!~d!toeD@|3utj|2a$ zX@m3$IIU*A*33yXOcAzc?)%XF{MuS+pGI$8#qa}BfB5h?-|5EP+268KDhJ5(&XWj# z&+|9<(_uuRl85l2P?0#CmjI)1Dl|}5Pr^#132(NaKcYy-)Bu>yUrpEV56k8DYsd-{ zV5AhV4S#z%*kx4w3cx>v!8F@1j5@epiLGkf(v8<_QiqM26y*dWzdE{yVL8U!fZqgHcI-)m0jg(Oc(J04NV8-U#iib9TZNiF3#LLpXVAC zj~V~Ly-CVkfzPXq&KwJ&*g9FADLHqcBGv5-)nn~b80I9-1x3<(xR=+1i@cLe#D}fT#HZRfo|!A>h0S&;M<S5;YAo@O)<@OAzh|{W0ig2@Sroc;}A@ z@=V>OStb*(Of4Bmx6mXHWe8U@zd-l*!Dp0h5RW=)o1HMrzh)j$Kn%o8Zx{4tV9!k2 zQ#0=ZIoW=3w-{7u5;le_?xoIn2@-IHAn)jCE*F24*j6r#;QuwlvQBwC&Z*OfUWW!a zF{1B&#qu&0ohs3BFx^O*&x@yz`}25^wY3sF26`s z^5pI6(gss-W^KaC27W{NADMp`ex=XG`COV zdd?yD3Tbx#hTik!)6LX@;bU9+$l~ES@VT=p<2f+eCV92(Pz%%8#m|1d-kRgvv6(r_ zQ2pD9;gX8eL=}7xn@gH2V&+f6C;&Z1avB_V=_nOfRZ*zAVq!#Fyf2wE_*#!ZKT*KN z-xYSuz(;p%oFE9ipkC(lJ-aF_u35fOtrr*Mp{V5m=_)TqPw`ImCO_nu7tQce!4xx! zb8)Ni6Q~9WGSpdA?oQ!quFXYt{MlC-mR*H=y8?51mkKaDKcF<%zyJ^sp{Ih{F8^!* z6CppOWgXk2aVO?TJnudUzW=}}GV1&r%ND|(lQ-1v9kX)G2c{n6WM)P?i1;J#6zX1~ z>CanVKMgudL>b41$Wlmu_=$VMOrnD3Y!1EZXFriH5v>}w_x9@34y`FMiR!oOe9L#nMJeK$_<&6KG2!RIx3#P`eXmGZPmDi$NAFsxD~jNFj~QhRL< zJxdZQafLE@x(q8!!3BCUtT;oyK+sf=H8m8%OrqbsO_Yq`7>v%_klhvvk23&6*l+iZMTZ^j;HfePAFpyl;Es@WlQ3E?r7bd&q8^w~%FP>d!V0a!7adFbB;q zYHYG%45h3+Vy_UXk98}4K4(fe=b&;#Xq=|P-L^`BzL4+4pA4VFnasW{Q8Zeke*YX% z(_Oe*1-kxxQx_!Q5{zL10}JI!85rqw9{`aJC80vFfDdV)lWMT6C4m&_~>mGegXu0tl* zgTZY`QSH8p`a6VkEhv_^2=P3(Ed(9LG#Va=Gfl9Zx{#aTKuACS zEcxZvJ=pJQjQ>g!@P~WY49JdwHIB7mW6065nc^9>JeNEJ-r^o=^{z^Sl_o7&=2w13 zVgOj>el@oDNEZM^P4V|GD_n|r4Pu`SLTGR9{%B={UCw(8lqM=zl#5B!LeA0>aq7{s z6hi0vcwcdepX(Iho~gB#hXwT>u<=(ct~ri}V9N$$i#PYnCtCwtDw$SW!p$7s zla1jP;@>TVPc7?DL*mRocSiOp?0x`0nr|;en5J`$?rSfM!y)^R9LFCH*ihr6mnK6a z%^vx5mjASF`+0Utq>oyxnvNn`gdfya^Oe~Xu~^6Qy>$n*-lj&~P0Uy-yPZs(&JX4N z+M{IFo*6-mCQ~`=DirC`)pr7(>=D3qyz1wUc#g~xa#&52l^lp&;^qYHO@WWZvZqLk zU*JP}Pk&9FVXNC0%h@mdbRsifIdcPGDbpUW!nrw#{cKbQIb7RK=@8mCKNq_zKQ;m` zDaJa0tq4;&{j>ez+&DQ7u_r_f;n_qXORi$ycHr zbbQu$8nBI-7gVT{2=Rz%!12xOQjgzq5ZPfNvJojEv&v+GLs#AY)d1+e?8 zA&=J`5hbwSCLH=jtG0rWF^OLi*4{K}-lo$2j(~pFlIw0ygxJe*|M;z-$4J4;%#6lV z1S~P>uDs;%SzBv50q^&&t@G^DV2zEdpQd(Cz+ETy1m5usNz#dJ> z0fYOQ#T_%9QU$1g=UuijxK1dhi0ckDl2#@ABoaL4i6DL!PJ>WNpE9qd0%~6b9;t&X zDw(|GpJ^!ymCO9;{Q}$7aXW5G^aYB~-GUV1yBkmkJUBbrd;Jj;M%EY;*#(u#tQT3r zVfs#*F(%^R#ix0+vBO_WqhM`|#+0vAo1Z)WNXFU792mX!QaM*qA_QJ_IvN-rLt zq%agUlABERcA%tMtHA!BS?m2DXr!qaz%z5XF?pjdgC-kHr=eVka!bgWKSIe=hR6H; z_KeKWUc@Fl;smxv5uuo8agi67NgK5GJ1Jgx>k0{&uR}z6^~!HAF(&gQG*uWJ^{oRs zl&fyUKPQ3Lxb9Gi+SFw@^zldme?Ab9!t*`(N;2MbgM$#tSI&j%o~g@iPzWF7ogZb? z?%or6vhX=$A``+|_;q-hdPot^4*Mt<*v;)p3KtD_()zoN_!2M%ln?;DXwFXcjf2`F z1ffH+d;m@=6y{A}9tpf?kqfo5eW}#4+BpMxyVFc+u*7vCgkMlnolvpN7&+k)I?xXa zsnw+ibYT=Vp^jN0T{vetjXKwRx)|dhccv0a&x((}4}KRyFIMw1exz7rzdiK$wTvPS zsKG1+kAc6va=8Z-v3$eKCjZ6)K1>oa7PH`59p>JQu>uG<@HjVGpHJJ{U+!Ld^AWu;_}jpLc()<-p!=# zxonYDUXrt&I{9pI;lJD^kf8I#DW6G)PaZkFGJbt=G2J`DyB6<;vuqE34|=J`)pl5F znn!w@@pQY9lb}m7gT}EYa#~oI+Ci*kvwRHv*XqUojm^j2`FHfIOJg$%sV%d&dzTJw zV!Pd{PY(MRoE?T~uG03!nkP@QU%?EazBV%wV#LfAQRQN@%Vghm?(YwP&nlZ?Ccab=ndy%>zEIv zQGqH>&|SIzA4-^9w8dH$&{u8s_! z>yNEn4CN{Iax?IH|E#;>U`Q2T&^b`aQVh|ky6nPI(daInL}*G(!vac6iWKLrSRHIx z%Qw~e8aDJQ(~?7|No7hW5oADpteY3bU4Dh(rqD!82`G)Us+{)&GWeTIs<-3ah#Mbe zU-)*X0!CY!j=c9{N8Q2l1RNI4S5CF?F5>Vas;l;+!DM~{UeCSVMWwfs78?Os9GS|? zFJ-$-JYW$Eiw_31MOF>q;@GH$lZ>}%&m*006G3_3C7hQ`b#)kx(ts;WmbmrMGW&~C zE?SESp;GX-vSO{v*h>LK?Ct{}>h!QGIx_7vhYMd;SsvTYcnjQ@1E$6ZLdIl@oBGX6 z(;LFpqG+G2!tU`=mzR&Ry;1cW_lu{_Tli#r%eG}`T{^9Mmn3Kp@bw25ha$`0FY2^K z)7D4wh*=${%B5b;-e&5EHpHQols@csnx@qFG5!LgC zd2)POjgDb`qz}Z`l980Pch57gz;>|GuJDHI z^!L~u*OkKT@sR6+?4*sZlNUy0O+;oNF_;X04V z$=TkY{B2VGMecQ07H~GBeV+w(K7Jh1@HaQH-f(_uE#TbfEzxeZUh&cJaDJT6VZ9+F zaY>dI;YKE5`L?eApzFS^>;Fs{YSNiL9^N!R3FgyVFaim~!zDIjum;)-=9bIHr%n4sk){P&x;T|RUx}C zt>&h(i<{mBm>=?DrtmMoiwD>R{uk5^^}F8il1JG_CV+)BwE+<|?! zEG`|10YRfJ8x4yB4(rCIY3@^ylVGg|0|!cvhs?DldzQNGbkSP=TYIia>&MdCrDhr> zcL;79x(6g5v!nd=tXm&1eqD)GfgXo*@nM+{UuW@ceG1|?Ip#?0Ow*jVASbE!e+PF@ z%+C7nFRpq<6VZDZhHoO5#=RQR#ypuuor59!H+th&AU_& z(3HIlmnP9qp#1-KfO#>~s%u2j;iZ>^Ew$4lOz-+q+p@gyQfxI4=i|5j^g{VyS)ddR za3Jm8_xyJFlvuGGTY}88)ognJ;F+Wh?v?=*vN%RB9BmK0e$I+F30R1C!U73{AVS0X z=mWs6l+<8c01s90O`SX|IZ_i%Bc+{d;urwzT}C3fYRKtFNbD+uKd zlU=my7^Gi8yZ@E1*SS+NyLuB%gR3bzY?|Km>6>QJOeyXIlMC>-9uJ?uo{4s3GQ)G` zzH((8KNeg8|6EncPDe&h2|`zP|I1UAFcIlRJ1sZUZ!w6N8tbSKVgtcf{L9aK8$eFR z`R>HFRnz1Bfmv)Xq{ur=#pJM%IA?vEo~`p*!He**Q#wzODv8$(Hpn#5*>me`-4Bi~ z0yg}{^n0uqu*cQxcjt4;RI@vBg4sgBnq2ULr`ZNI6TlPmk}O?h-A zed*Gc>#K8s0mUH@1lq0OPFRbD6d>1|6~-;ZhJVh1W%cDe9?MGli3;0FEj5|nSjXC9 zZ`P#spFs5IPpd#Oqy2|nV$)E0oGpcXrOqJa`>6oIpfT?1Mee-k6q=;Qm#M+B2Wl<2 zN$`?3R;ae6Gv&%Qu zY-MM~u{hGif?sIVg^7?Rs~VkV#Yxu7&(5IzL+ww%UP$siSBg=QJ9t@Z08{wAU&Wb4 zNAi#AN_t&28K)Zj(dcs055S=TG3@Ik+<1)$;7rhHwg4PU2%cLN&~KTt-@P zJukB={cJY2D_Cy5A1b+V6JX~^!2Y9MGwNH=W=Z4*z2>^!AB86c-%0JN4ZJ#a*?-mpt+ft5T zj+uW~=j7y!F8iT>UZt#(z`1~4_?=xjH9ntnG8ImNQgEQGAjx1F6#O3`5~9ZD((x&X zlN}o3|FY*rnrbf^ZClgV$FWw`wXTG>m}@$oD6$ebPP^>DlJ^8SrGiKbIK;Y-6F|F# zX`&xxtC7jGIUfl$UMz$7G zjV+q}rd+2grVtiuJEpkhcvET|YIf+`rNj@T)4ir-uGVBlk0}2GyKh|={YRKDGQITW zU$8qgSAxhWb=^O>d(f!%+K1YkkngO3FrOZ`$2rXe!PcX_!^!V7#sBJhH^UvmT^rD` zbFPsi?<>w;w(2>Up@jG$m%i(NCex04I5o+P z4RaE$6Pq#JnY>kif|@r-G*;{(g7*!c{IBS}HWzINF^*TGL?~bR3{bK*csH{pPTKW$ z$_7m$-~+mMG+!l3af;*ni>! zfYz;d{IKF+^x3k#w0)4z%XJZ%`~7neMCP|3-uxc$2X`h9tF=Rw;HH%sa@K!LASr(B zTmKF-GxDsKMXOQaJ!k^rf1Kc54*QmY={`{1j5T+3xj&JKX^n+4YryS*qNECl{#4Jy`K+CF}TVw9kBqL+__ob;k+ z?$<+&yA$(+o!VxkhR;%cPqE+bw@_2<6hAoOc``)fZ)C>1Fb`r;*Q|WyJO3TbS|O-G z2X!>WjRksej`#^G7LK)D3Y-()(Sc2{>b2<(6f`vtcLg6y2hug1ykTBshSH3bL#|k| z6`hGV(JoJEdWT<3Pi59p^G{!*ykd_m9TUvCw`gn&yx)^Llj`KtsG*klPK26*zCW2+ z@E5A^X@E*J#=qyNl+7 zikpp`T*&63m4#qCE8(M6{khn^M2UXO&c8Br627JbHlV*zRd`)O+?hg+@5bkn6_P!MWr zo(@4#)8`3_L05=+B(B=_{`X92iFsxPIic+EEhn0JH> z?2_qy4zSBjDmxb871}qm1Ny54fgd8~m=AffEfb7alWGPlMuLkcQ#q3qn6c|mV^+*R zt{_;}lvZfPUCA*%kHJB3_dOQ1*(ybVexTPr4lMQN7oNE^|55!k6YI4j0Q6pTn;Blh za1p^hpCgq%MruGrdsNW3VWhd`AJ}5UM~QMOz-G@-;Wge2#8_}o>(DOp5Rhl}t&;Af zb}QIqXHDt2yw3;;bw?dgku}mW-E!)q+oQ|xGhP$ZWi%Z^qvB=LmANVeYWIi57>G+QBM^ z_Bl;cf>qOH#=#k2K?9Fn<0g6YQ4alK{dqBT&s4Ow`Mkct?;bZNfOf0AX4KH8r0`vGnanc?qgSrrOgvVSRmL&vbbtO`lRyH>*zvuW#we2Dd$Fj zF-mFt^*NVRFaponHPACi=?5z%s*QQsRn|``u4znsY_=W3%#YYCToLwReGI=uj^kL$ z6uS%RKs&TGyL!u?^Bj8S8FQ4%3jp!o3L~&|(97Z~a`|@H#^(MXU0)p+Rok^YU?8BN zAQDnaw<0Kw0@4jb&j7-Z0@7V7BHbX}HT2LmAk7S&(h@_55<|n;JkR@{@B8DN|KP{$ zVefsfxYo6CeX=aVQzSl$kziLS3O-n)@1hJWU@^j));wF4%eD$|pBvq)0*nn2~o zDQDt4piic!&g54mk9`HP?4pmHpM)E#Ufyws@))xDQ$N36!O$U_=e)j`Q;SkFeadn0 z9>ew9jts+zAI$gIE`%3pVz?)(wLOMMf7t#YeGUs|em-&=h9bWouh};G<0Tteu5@pT zYe!L?8Ylho_={ zp&TY5#peUj>Viluc3zoRFzH9Vu}rmy<_{HEy+hZ}zz^Y`B?yD@yP7S=sAN>3Bo00L z2k~M&LviqYX(tWN$^J77s@;iwaJ9R zr&zaY?f8%ALTNd``^L&R_bW>U%`5U09t=LS2w~$a3=Gz_&yFqe>8|=n=G_>JS@r^g z2SZwc&6dbZC-Ya%Tt?|3jmd09}$DwcDG?6?|XAU*TH?EB*kY+!g>pWM1^DqR-1 zckeRrt}2)ezMzUR@h}2?2mIXpvyo{Ci+tm%8IhUHol|#$x5^HjZ4TLg{g%&UVYYaF z29dcq@qfq*kzXVO4`_1XHOym62A(ieedQx5S~O3f(Mm4DXM*3#CKeIy=U7^&HUJh` zjb&VtRxyERebA1lROzXKpbD|_?jL6;OtwCUCA{mNF6!YI_Tnj@gub`c-sAv7UfR0bVQ(-9mjJx5QSFZ^`4y9PhC0Ke37ll7$W`WY_+N3l!uChIi(re^ zFgDdDwW5||0vX~}^1&vxTgxBj8)xtl0#RB|H9$g~cWI~uWp~Ix9kA0l+N% zq^Owbl~cr7JDHzbA0Ez|7%1hYiT$w*yeIn!$h4W7)t+YqKJBWOd#y3!d!J^8kN^yY zvd*A*RB7$Tra552ae!%)>AH>%E$P^2e;9)%9uVnwhE)t?*rZNW<^E-pD(@pE3x#@O zf^=0@f(*=u`mJH}U92-O-;&Tt!LBB4lx3<~EgG?>I0Mto7kqH|ex)*UObk`ilkG}w8YHVKg`R|aaW?viW_7O2wKSKP4|OyTca#{Y)F z*nhw4kVJhOZoNsJ%^@h&(O)@BSJ=k|iX?O}3BOyW?K~xVSXso$msOspJ`M)@=9wlf z%|cyzEhYo>#Vx`T9IhY3ohe~9-06~4=3ASE6b53DH-kUtCirblK9~Jic2r)fb}%SJ zPfm=x)Gt`avydF5(u=#_$*hAHG;fwCZw`TRKqSW32f_870u*>Qq9)%(D}~8)-iF6~ zdAof&J!h^{5uv&20_wRV_`263IeG}#i?`>&OY1U`MZ0LC9d>)6aTJ=N88^dA%nkx+ zRno%rV4_g7M4)=V2wf0}-g8QNfpv}2^!ZG-BWDXQl{ZvO7sn#yE(i8eyBe+xd&FqQ z9Z(O{s}C0hnkq(`WiF1)l9)`X%_h#p6xDztVN1j$p*}C<)@8|#3+{lXzJdrrAk&iX zi6tULj*$1(u7elv$F`LALsl9U#Mj46_7uwMkWE<rIHD!DkBdUJp1msd#0bS{3t(Lx7wrMog9i>iWv-j5>yb1;oxam zN1?f`490)r_4)4FZ_pF-!S?YT#{XLWn%uBhk9>DL(BS;`TJ*7>tdihk#!vsCEWvO8 z+;wHwflK0`EQR9~cTnOF2zyyU-RfB~quPk}!u9WE>(aB-9OZ_~_6V`4$O45mG?>BJdx@uRk9c*J{?=C0j= zp1-5aJ)9Pl#3w!nl%aDm_7Jh)s==m%s}k7Ewrk?2Sv7?6xr=w@u5dHlVvx%++?+9V zWF0F@c7C(mf&V<+D>Su^e7&CXs((_Xd8$)eoq4+9iw*P44@H4=o||3b5U{RV^;P5b zlxGq;yDQyodd_ve2|IJN8qAfA%b|zsyvw7K@Z;m(B0EmKi?czM(?r~*DAP^Ef?^D( zTozOP*zH4%K0@(M-?5)Y2SjvfWod2q z{5`pSc2ZGrI62TGsRK{APsfs)&7J>XN^DsDHq)oglqIzC`%*!E+R){%V7!q++8Xgw zU%nazS_Rzd!Iq0@oy-oX$Gfzg%Uy24ZyKeH4mnm!YJ?zOLYyancR^Q$?o5(Bm~iIP zKaCrDH|~$O&4S*Usf}5O*A>Xt3S%dkwBtW;h$;_RPzyOlmd-mENE%1AOzw(D1?27l z=e?(F|&55N9O2rYoe!+m?ZXZ`w_GoA)N)C-Lm{ z$Ws=CO62lew~XQ>9;RQ9Y^|lZBlu7ybB)f4_B(rrj=%o2N07K}oXhhviFb`7Y=lv$ z8ey@>4*f1feap&+{UJ7T;-b9bu@(u$*%en2BftnA4U++*bl6hQ+4=ThnqAPdZixKdb5Pqv{ zr$461gxiuaH8lA$E4|=s0c-22n%y~<VS^etJ0;}o=0?I&^~}hVY*wkj8V2>6-7vRdB@{( z34S+CE@5Mvvwki5vq@|oMC_7z{6)>nY1a46f+PhrUPI+Lm*;aHYb`A4pJr#*$mJ1c z+>;(&?aaL`NjhN|<_g52y>AY$A?{o5o;XlZ4LAL894>F97k8A(YyUq_bv_h}q-*1V z3_|$v;`5KpV<_GK;HV5D_vUix){9icj%G31m%X#bW!^GW=op`u{V8&tskhKqpK^0y zgCfEzwhfkDhl#Ei3KFGz$eGr}+mE#60$n`DpnM);g@CoJULEHaYJ^Xo#!4wiGs!&$ z>w;|#IXPyoup`8nZX^k$i~sVNd>zg)$4c0RNb`b}=}Hth4u}ZqJVub2sCH@{kb?piPbXSm&Lh{an10V3--M|> zno$71~C`9~8&%gHk*{O|cn=-$c{XwB1J2qa}J?|kn zO|A1%`VKb`DwebtBAtn7gw|JLm{F1<=NDeyuJo@V4&%);wyTNL&Q+$NbQfkj9=dMM zy^ZV!DNMRxwM;`?dPhH4B0D<6{QH|<-HcQ*W!5iIb@y+=$KWs6i@ed18uFX-g+$2R?4Si`+BT-6X@1Ta)-!Q{dI7R~mE z>rhtGJ54I+mxt5L&H+zLJWH`&kl^?YCGefu`WB~P_~h7_J)cZXG_Vm}9=G^H_rffQ z{>k}$UT$uak}^Sb*?o_+qszbtiC#;$@ykCvma~~xKU-eq8mTNVKtApi2|5SD`^ABV zPhJAk{UH z1>DvdK9jx6XdHQ%;yh^LaFhx|!`#&upzI>{p6_AfK9X3mlZ-8zJ&wiU8HI#|*s9tp zG|dscltQCOSa{8VnRM!8B@d^N$Cxa`HA2%!ZXma9na=muiAlt6qpsG6#5E2}d@|!Z z8aK68aa1+VlMOONnzAL~zBhot!&p#WFDrQTlNq(5`R4dc&U_?~XFZ? zZ^TST%{p_ZY{Z4^A+20a9+bxx(JIK*YDou}m zu?|SJFSpTUc1^p{+6hgpD1uBT4&RCpVc?kcZSi*g8LM`hJIXD( z%Toh*rbMN|oXA#HdirlS`FHLEfcLwFmY;P7`}vY=D(%K{jrw1tTO(9%mN&uBIMuRZ_yA7}LC8U;4K= z`#n{Y-B$PED#J_vpZX1L;u@LW4j28feVczf9bJo(^l3nO!C<)AMaqsuRh_L zm6}D=P@h}9_|YmZnm$+y+Zw2gpnwu}?UEi_&APm)#ob`AEhowTa+z0Wvefq=yyYju z6A`RFjZh%cm8~25UChHKOgrojJu*Od>=bF03GTI_UAIPbc{%Y*Om(#(mL4e?FE<*e zUdqrtbJeXnaZZIM4jNhHP4aAw6^&@;in?4=(13apilxMh+}iHm7tN_)T8%<&$K7!} zBoJL(HoHV@s8gmFil_u!TviRRxxUUaiudDg29?Hwg@*Vf$4YaHu z?=$$1Sre{J?{WN$srNw{DbCU|e2m5>n<*yTR`MXCdo6`y@xBkx2dbIs---8%DI=^> z{wY2b>;+XxaO3;OghZBd6`)8Q@`*Kj-}7LM~)qeGylPE`H<%}2Lj+J5gJ5&ZkfjKF8i z9*OH;B5iO!Mfd&8e1Ag?1r@a7B5vP&(eGhr0(@wfotS zPc$Ot&!>IU(hiz-9k+HWozTDj<`+YoyXy8vV009zFeU{1INzDSY4xyBPd3`|`*3De z)yK`mHDTNEQ<*bamAH4fIN%CNo6C1Qzu<6oO-KpB7)&lM>SMsi5Ge-)M7Z`_jarRn z4LK;%p#O?_LS@kRp$2bQPYo&_@)cw>}CCtD4^` zDl_!n>3^l1{9FYJdoJhb5(}TUI_F9&c}hT=QtA@0)w6%euTgq``z5C@_WoXN`UcF= zd@m_tKfOV4$WztgbPIE|wL4LJb|_xBBia4u_s0m z`7v$^t+y_c7&RYX?c*o~AJSCnrGmZ5V# z0k^cc4T;^7p>e#pJf8jgi&VwXrT2Pc&4kguYYsN$1%A!K6!)Q@TlFc`3mxsJ*&$!0 z95&7m`;EG7qtyXiW(D7e`sAD)iaPU>1y{8NfsFKm!bLT1@i@XDb zHlyR#;~JGRP_Bl;z-4FpeYYqHt)R=fMW=jkJ)`F4Y<-M;r2F?QGg^s)Zer|SOZVmR{IiO& z&V-A1dh?!Z7~#E!<2rl|r*y}G>k@cpQX*4-y+oP$!d$l_G*ScGwP~bR=bSFs^aSij1wGErg+iBTgm>Nb|q3eBm!Av zeV^v2O#ls92>^-sv6p0x-to>^op(I<`CA7jU4adAQcnLUUL_Kqci_-Ck>fswr^w5( zi-QdrJGpzgc93R|{-Bt_i{0~Uxn(;Zp}h>r@Kmo6sSU@q9beJqDmFvkQ{;v08@ak| z(%!Aa)iC^xS6$&FCmV51u-c2kN)zijpX`J5t7L-`LCmqgH*rj>EF!-tfp*AS+W*Tp~a4a{mfb&3J#T{>wIx}eR)M7MPYUfWC;%dF{2Ki)i)SNS{NQ9r|FPRqCcob%xR z?wRHnX*^MO)jIt!mzeF421loJgjb?Jm!#r3KmR+ z{=1iO?y!PZf|9zNr@J0voaa_YoZHdr;}1fAkhl0GmHZL%Hbh#7x9+E(H=3L4 z9=)&hLO(f)=NWl}5qGqnyXu~xeZyrpKPPPxy~6*O{8i*bP*RR@I0acKZ?fVGNwb)! zg*a#DOykx4IR4n!NAdimD(jGE;`1VygX(oVV;6fu%Vx-S^nX$m2q%8LJo5_^*+@Ql ztkHV&vE-=#7NR&8Ef#r*vWK%(0&%6MnGwRvtXmt&hoY7hj6UK?xvm<3ue{@OG%M`U zL>u@sq0a;r-ePB8MI0_ztHfQQTv?BOtGQW;4k@?K50zA4?p55YR)rT+uW-*pW9j9V z81dsir+QA)LCDnwCv5IuDW0s0%4!?wBDiS2y4To7vSf>a{gGdqt+hSGef7cGJxWT! zrJHXUC_G@(PO2ckocC$ILz?vui$t5p#=j~LD7b4A;s?s?f56++v=N~1;ZQ|-jTisw z+Y!=>STdA|7T!v!E1 zWr5w8xI^)+*QO}(od^b-mt)7DW$E!TI`r#w2h@GCb=jv17zC| zUx))oZ!&W_-(MhNq1slta!0u5av~06$37lu8!Dv1(#jy5fI|>;gU^YC6%lY{8sW_; z1b{%QO#c$De&En;-NQ6P<~->D8+IrZ(`P{eAE`H~0D3K@6Ms0u;JKyf7%@FHwd0rTrzy zYi|G4OTT6}^!)oG#%Np2zO2i})sZ7oZ0QLOlM@R2s|67k%t~Ng$@*U|;GzA+1KNt; z6$_g~f_#=C4j&`dvnMCq#@Fe@N;3Xim#MHMuZ9N+cxs1Yc(j{HUjz^ii`D+JW4AOc zPLidq{RU6rW8RCtc#g4YqrVH;Zs%6kM}!atCyCX2PGKDq()Ih$&@$K7$S9z1yo%{0 zTwOnMYwPYmgN^3$ifOoKIo;EvirYah*7X^uhGp6=*W51g)+{FWL_ObKYoJJ2l|5Iw+*0HdGB}oA4m2T8iE)8`*BA?-o-w2TtmnH7DGq$SeTpu>azCMTO#^a3G0J>=Fp%? zJWx_rrt(i{{X@+GvIivxkQb`mwL|wwfeA2$b?7=H;6Qz>LAy(uH>~H)r9B#NxArlO zB7~WLN>5p@3zJi?=_m4X&JuiyT(*sE(ViPPdkt}2y7!*aIi5bRFEm5N&5zTaiFs@6 zvW9iB5lM=M#@rA7<9=6k#-}gY)zwOw^T$JXZxBeXNL)$#l2yXHi+hg5q@IjXG@nE- zYMVcOYj9+HNilYaTbXQ92CgLrz_$NG2{M>|llESBc%x3OZLGK+Vn!5re+ia8-|^ zP12Dp;q_#zJZO>L+jp6`AjXp1)mE!$BfsgC&>Yv4Zlw~ZNJvVQgr^eSJH3bhSuhJ5 zcb_|VkrY^17^i%C?bwSvsJ~aP2VQEn|0R*m_&ZM9ph@+X)%e}WNEO}7CCR+Yg zgqT>Zel5321Wnxjz_a%@qy*(3fL)u()+cIre+MCn$;VUN?B_rGDoBCfY(5?wKs4Oy zIuX;+TqvxA9J$v94R_F<4JTn7e?Z5u0oKUN zAh^o$RUI5C)dWB`nTPK&s?Sdzv74wzh)oh~wv&>7(6gK<1#?neV zvGig@@?LJIn7LOlS&j3XlDi=KhQ1%SLYx>(>QknIAu08GKKr}?z3j&dtW(=Ga2%HL z=qf-6pSpFfDa`A+>;l7YIzRe4q|x*G^Uc-?PZY}fB7PlLnfVN5xnw#Lb|pV+`>`O; zefg@`*-B^}kzV+MPwxdMpYZvH?~N@(TFH_+yvNuwv2%D@G`>;hTX*p*4wU{Za7bo`Ga zXCSkgiuJ0cKV(D`DNzw=>FOR~HtoIgkoyS{l1SF4%dT^q&f4qu9KBM7wCPQ31;STj)&*a>W}ViP|^S| zUcB>bN|mmDW(}yC{l;Mnwe!VB5mL{(eq-)fY;$byZ9Vu*$F|`#+!MoGAKL6NwnbxG?8!!nVWMN7gHuEJvYrq0M>7U94I&S-YT;N^PEpsDe% z$afyx?7jB8o_~6)wo9x4@WrQA z+6KwMXzUj95}F2H5Npm;O!~C&Mdc&c%xc}Uk$00`iF+^+Nk_FGu zO!TXk8^RDDLwu+Z%I-mVifMHVL*6UgD*cJ(#m{1)a#oezj#a$p4T~lc8u?rJlSLei z+9=N*xxudLX!Se7+j%5wkW1roYaX&j+#-y76Wm7TE-~&~E7J~Yon2XF`>WhZE}u&q zZ|9XCF_?YSLh59#_8=j5BlHbwd{kL*@%+KlJ)|#IvT{vt;^w%pIJ)J{DGio6w|=J1 z_wT#T77UTl51$dacYkCa{h&Ud~#hxsJHh@CWACBpJHa`KQviX zqvX9JI9%*%CB*vrQ^oB!BwV6Go~0ceB+3tH5D_a{La3;>@`$+nwI-br z=n!#W5-~zwp63KpNTMj4RbfB6x{%`9MMwyx6mr}1v}>_%g?c-yKs>UaD%8fyrP%jH z1twKSfDKDT_o9dF*2WFX&Uff+V~aa3-U?m4hyl<2owTO)`B3^OSkAQO@Jj^KwYn@@ zP&%V&ljmwWV{kOhvyGf>>#0mcndi|qRA=m@kW-VEES!PKWO~cb#5vo2VMFKD#(jl( zt^|mHl9rg`#I5+>_xnQt_)H%>`=I>7=lU;c`0z&G_b=ak>(7!=aI2tT#*jpx%LVp! zw(%MS4UER+qTI6bWyt9xna~sC0WUIIvJ(uvEdTniT|@KGURgmg^{Eo0pg zSh934?j0VWz)WiG}s?A zLJneZjBkGCAuIKXmOf}^%#V32_eKaIo^_cS7S~fWTsyhj zpq3VNg|?~6f2Pk;)*IR~Zw~|m>eYkj?L5fZkQ_eRRfm~os4_p0xk2c!Yv%J}2n>k3 zk-ypa2pbu7=guY`P#2!-XjuZ09=TMO=#XnZdN$PdmmJf~FQfHbTXGq%U4m`ANM(#x zWWLfl+pc%iW14f1*ihjUv#7JZ*7_q2<=0Jhsr%#{ptl74eUD6%-Z6hMkJ%V0G_4&- zWfT2q29oTo<~9M0eq3$a?3AOLpF6)dy4YL`_i7#g}9QO51`7oi@HmJs(X0 zp{P$e`jgz!M^DtVs;U%6vO)$#mv`~fBY&uWC=MuVvW%U?r=i~*5tPg8Ta3M(L$wDvg5(8j&a^v8<8AGB5Y*xG{4?s@f|*{`Ie%*n?hsf?&-~WpFi`LQO~fE0BAW!C&ACbT8uj zy+7RBep!sIv&=l&_WWTxtlhs!Bs?|SvI%E7bSO6=K48f6^IH8=i?1{_5J(J?tp|!g z#c_f(06cAoC5Lh+kBqBJGmRZSwG-Yi|B?e77Bt4_8kr;aA@3E>Ni%OJxQmLB`eiq@ z&>OXy6otxAzSua~rsrECmTfu#vFv5VvCZyFCqvwBtEUN!iqv9G3uTifbgtX1sdO90 zIauM%#dH!|mmnw$(;k5+iRxNJboj;vn!>>X>RXmJ=Nz()fi$u!3!l2xZ*(PIk7ZMl zCB^->EwUS~8C|yt#HkIKZe)4a-m%?GjrW)_10Y5+EY-^<%qFXKiU?VtNf{w;Pp% zZjE<0S;EEHvI=s@)tVCSwWRhG4&}o;l@p#+5eY_=3)S5e>D4p|qtNLtnvuv^#Y@+8HL<1wEAVa%UB<&u zeEp|Dh#~Bk64QSWYf-3TA;DxRVzQajxa%W(EVBPS>Pjh7oee)tnL>P(?%GS1U-2im zsBo2?!6I7>%Q}TD$;;(;=Z90?GZzU*jJq<_FPD(#>5*3s$2gbA1y&UOEZ$Hz`-<@foBt(-0{AN(&DusXGsO7{4h4+tbH@uc4$me>K&?oSbQ z9{KHk_m{AOl=DU1@Z_vpW9fJ_^(N0G)Z-|0W@VSegmSr)v6=TwAl`5z@I_iH;54I5 zM*Hj1_{8d+h>*^bSEUZyQ@(>@9^3g=6ubF>z9=w6B5t-AT-HK!7PIpcZ@c!j2vbuc zqb~Wy{uqEsuBOPz)xVB6{kTO4%IX1LuVmo1ciY$R#8xH|VLy=aF>aWoBA@I8CSTp- zo#TKjTry=FGot3M+0l_K!tg`gi|ry3->cC*t_YZ~6B+k;ba8je{*PO12arDW$l86f zDE-7eCY5oDDf7M4^<~Fw(GOK|0!SxpTw^_;uVfO}U1xVs!5qC7vs!>hhvw zXk%5tQ~dIZWS10lB(x-t{IeQn92uN5RB6(X$uvg5{d+0#dr; ze=^U7c6BWi^m8K)O_h($R<2}W$lHF@K+`l{%rAd7`b`3McdpWIZ%*>d?FGG60fxqG zi_uyZ#xB#%{u~V5BetJ16i+4Be^nesxrz8CwzgPIR?exdQ3yb5lIV_!! zY@pKcCY;fKb0~9eF>qVl<)LG%z2CiuX|{qMd140k3lJ zPX!$b+Jiq%6Rdfj0`bIa(v2=I!ww zRt@#{+>LXxI6ha`?h`ho zmlUe=C)mJ7!=QLj)}r*9R~cfi`^q3%$7%zQZtK}sgh~Y68$A~c5TVRW71wOp_&4D` zm*_&e(v$7HEpF{71|jE~YVUJp-Q5;#!zuE8Qj?+dSv??_d7Lg>pD0w>CM(olZT*~D z-MAPw0C@G0Ye3{#7zd82^K7;yo)^ltcMooEleo6y7O-Abn(R@L=Vi+ftn(8$G2OhMIKTDh!o+P0dCH@YRD>^A z>J~ePetNoY_WVXLZmg(HD#~%!f50TLQwzw8G5yW5r4w8=wN!f$b5``pgQ+%L5PsEx ziX#JWwOnUC zX>Xqx@01$~$Z=Xfw5E9rJG0mSPRQrJ{Jos{1y8zByNaNgg4mQYjhT3nxn}4UtM1)b z&+!r23y{M;uEmiWh5YOHE??Egn1jaqU1vRyzorC z!O?VUE9FBa)BMc?vMEynU&ShgE#+Gu}s``dH`JcP+wZ{?VsEAHW_R zJ3>MSKiZ2A{B}FGS{lfqvrxj8qTjKVqAe!jEeQ9$rwxf2`yu4W-Kb zpeX_r3A*_b-GAE8Q*=g_`>EoC`M5tbI&_Q)dLHjrbSy_vPqd%%aW#v4KpcCB(w(kV0F>Z75+V!fK zF8M}xCbYON6CrHI1x2+oGHbEREKb1H7A=B84tZ)#!`|&>TjU&Uo0CI5(cWFjKap?1 zC;gvJAGlKP(P8a`P+dUVCr8S*A5ba*+S4cFykpvG;Bjp=h}d#zS90vxr?Z3rpX&f~ zmCaw7m%t7EYOranLVq4!OVZyRra3#h3No1UEE97i=Nx|H{BfZsM^Yc3_w~nF-j9Dk z%iPgFyy_gr$4I+btM18BFqx+u{Yi<&?f~O{VYacN`Yq+WRewTAyEre`D;<4as<|X$ zc4>sGlI=U|vEwL!k@!2~QE#}H_6BNSDu^0m+-$h+CGX=R4HtBpU6*{UM@yyydKh3n z6Hc%ke7fS52UCf~e#Z>Z%-qEtc+-irGAxB_?1T_L_Ipy%+%&yM$mOP(Umo<2-i<=F z^wbNQJ((<>y-MEG8@(IQW&y7htNxGT4V^0^SR->dY;E0S zbw~{H*xvfsq4D8VQjSc9kM61?oFe#G+()rAOh@fC} zP7=PZE@TOdij;`o^L0og5@zQpy4iu|Z?=rQ-%%^+ffLn|#r4ly`Kdx`@9)x?MMptg zt_rarCK<8@H=5|VPPBGuwD+@fTWng&}D_wY20ma!v}N*9wR&7ttlEu@+RA_Uq}Qu#^hXz-09?&*9=SIXaH@? zVaVW^@EnQY<>C4lCf{wOzWK(sfUK&^R>>qJ$1d7)qmd)$%eD~EpCEW-gah*1jxz$z zgoIIT{X*^tYNyy0`iy|JyTA;S<=RGUGpbTBs+>Hzfuo|r?v}a}8h8G_FAu{|#eiuN zT%HmXG8@Ni7wQrZMv0za&(j64f@|d63bnx6#iepAW^ZeV{!+y%N7$zJd(L{54gG0l zp_#~z{D!z0!6}sZcWhu{ocH4#a=5(w=%Qv|0h-_uncl8qN-0EjEX4@zKrD75oJG2

yz=`xruP^|34!Es0zVyC*81N3LAO5@lO(xLG7U%kvWx*Qh)VQ znHkuZ+Aq|K>sT7HB-sL{LZSfdQo^b`UNQ;IL6_x0UaCd2>CRWdie~jRbxx)>odc;~ zNa1q!lEPR9JlqDZzThFxCIX`!6Y=gN4}P+UHaNRzygXi7s_iFp2Mj?ZZNpm~ zHvCyuy=y#5Xjv>C+mM}YbyH9=;w2sp8FFz~&xgFRu`jF-Gtbd8MnF1Pfks1>MD0Uo-($DGDdm#bL4b@$ z76)ES5mFzrO@l9(c0#};a2K|#`S{G0{$)GTmZyyZj`g$uAkNNk z-TD7=0sn(O>qG#MWq9iAcqlLOuRa=KoGG^Bu>LRpbZ$-nWCA#P%Px0l#HQc-^2ffP z9dv#vR@r$e(7h%~kAHP>`)aX=Ty$In;lfKZ!eJ_!Iszzn?+e|rF4k3jl)$d%Nw_?t z*|lGH!P(C}pp*9Gx*@hT3N>~EoP=)`Z|aS3tb8>(nJaam^_9Ez5G>utyu7$gO^L?v z&;z|qtJ6UWN_&8anTQN%QQE?#10CI^@?x2wwFT3_s<88 zqTu`ydY~aH1Xt@)vWNreo)_qQn*%VuE@-V-g^9-;@pf=BxEt&V5H||E3c%`x&^;m% zP_Lc`j9pK%=8_%8Np^G5n;-0iJ?|3%#Tis%uq9M0atLZdZl0wzW&IBj3rRyMJW)*qwMow#&ZWO^`Epu{V=*BF`uIr>AP`6Jgd@y99dA z+G9L*ezms1@3#W$qSj$Ikc?6ZP?qjJE|RJUd8I(oD8Td&tMZ-72=?LKZ8Du6nC|se zzC7Vub*j-KBLKmFw&VqNDUK*azWT-^o)|M4;9`%Ike0P2&zE@qPrJ>ur5J9?+#1-_2o9!}GyW$Fxar+h*^0TT0=p z*zuxCievt1j7&Uu=`efiJZaMGRJURK)|??NB<;)Jj<1}_>0nFCDL`QrQA4}@kJvl& z{~`AN!y@j!x_`m+EyiZ5p1%r$a7KiI{4~)&1k0(?E41FT5rd2gxWR?ViF7r zNdES+q>G-NXds62U4c;+dsqA%?u(r`Kz(=7y;aJ}ZFNyO=(=#N!p(zRA#V0O5^?Lm zA^F&gsJd{S$MrUJ|4>O+-@VSGvY)j8sdsnWC>FNeUGOE2yTk5Uh)SJG+3R762u{ru z?|M=L4zPKwhwu0iM;E1)|Io=c$ifbii9bgOwgImbzm}y#HvOR(jBOHa;}_#cgjhcw z3FK)ZlOcNT@Ly#~CrDu_Q~%1N`655|Ip+6 zdF;+hy6RkPlFTjUo5*Zct#1epDnwRUj+*HP3EBlKNE9%I7}o9VT~iAf4gL~!&SAn& zLV7IqnkU)CohYW|i{|QGj!%{$v8$B%N>MCjyr~yr^J;LbqMh3R$h)S=O4-oIlZy4c z<=y3gUb1Nc7?SEwZMGIe`EIVh-FugbDNC3vYt&!Z9KFs7o+;Gq0dy}52=`%I=Odly zp*TBj{&Bbse!2vR9`=0odl29V@-0)QPTw#k4?1;1`K_HjMv7upDtL5*iZwnI(}RDN z^pmC?vO`cy0G;!XE)W1r>~jrZUIrSF9Ix|`e>+pF$KEA|v@2p`tZ=1o)Yo=*w%R)3 z>j;O^^ZZ8hxlP0YEa4)(v}zF z-D?exNHHVF8_7Sz=NNON59P(~tTtcB9&LDTR4LAzGS~{xsD7-Dx8#W zG+)y?C+HW{-02{^QC;s=vlU)p(!bD@)EifIJ7{SX*4Sw62!B)7ybZEI+)uuRZX*}t zF$UCbc7h!`B@*-ZGuPo$$}|Od#T6m?YL0tLrZ;_Bfsm8v?cp`!ew&5TYiMG0;e4}4 zk{tx_sB98>^~~$@BfhwM*#(>H*+i4=B+K(Kz~cG3Ucvw9NQiz_y-z99GdpUZ>LHbh z64=l0aoYgPI@i0lCjnYG#EAFk3mf_xT$OUbGlli}-Y5j#{~&}tIKZhoKJdAo5$+f2HLtLo5~BAVw^1*=-fUW1 z=XKKI8x3#VUXk><>b*AWI3l85jBmL=!8cQBdDRzlX;oZ=eHDE_y_2S(pw5Oh<4?Vg za8@hLnIDV0hMcEMgk6+j+QYw8$efP%ib_rO?(8wEuPB&{392b?{(MAZ-jNYWR2R0~ zSPYC=UlXRP-Apc-d#(A_GE0;9u&(>(SO19AFtH~6>-Fgho+qzFuK4O-x%KY7Bl8{8 zNm}o3)Gyt{>HF$Z61b*!>}8{=A+!rQxcMeZ-E7Rp1`x$uD@OJ|pJxu8G#lKvLY;%j z8X1rltFoCX$lmRlVa-D$|1VC9?NJX|Oe=SUYC<@R=VTPnDG5lno&fYnPBKf~;Xqla zWK$|uW7{l*_LVQR1u#c))p@v@y)7n1s(VHpPS85L_S#JN2Yy6!<8C#fNHc$69C-`h z;YlF5%aojN+k1XSuZFamiLck#^*=L(Muq)UV=l0z$HEsg_&$*$3OyZ=09XKBH!#?4L$kQ zz-)gVoOH2Q9V)t&DLS2Lp_?w`RatD>cFN((CKAFf1J0@zcyrgMRbN#iV1YeoEP#1+ z8RraP@3cF16Ww3o%Jf}}yY}r6m^7VXSd9Bd5r-9y=6~-()PGb{kGv$J{+uE3Bod4g z+BXL*#)*7;yC&B5oz_}b2n8lZ1%fGa-Oor$!?y&zHO!vS_Y(|!4+I$ZRzpd;Sm>0E zFuZvH_brG1g@cmM@~VJ=(EyL`o+=L~9Eg!gJM3D5EtZifF~vF!&7JQRiDhCr~u7J1ZD(_*wcZIS+v zMWzGBxcg8r^z({=FU6C~m1>jO=nBC`nlc%ei@EEfS6B3vAxrd?j3{)|oET4o=Dq<7 z`k^wpHF;I+DI#XlFsse2s;FD@0I_&)E794XPa>^JWs&Fx|& zNpK`y(lH@UPKvI&J|0Xye-eVALD$lY;ND-OmxT`FRZy~OXqwcjT!+(0;Orx zcJ;zO&mj5RG!Bbhkyb#Kgu9;&+QS4#TxNpY@VB>_zqfazwa9N%qlzkc&m(mh2}|*+dOIYda<4qpI>k|dc)|FkLV41Mi#CN4!b&H%A ze~h=VeEET()WlVlvv6iPZ#)JA2XE_8i)SDciX1_Ur{YEq|Gs0tHGci^+g*8~~lea}QG%&tcR6D$eHVW0ebXyKS3L*OkAv~tk30R%Qd zUlY-Fzt4S|6QN~oU6C-?Ghrf5vsk{u!k@_RKM2b!w@oO!TB5hy3o0JiLnWVD(3`E_Pvl` zaz?d`PtIliby6Ou)*$r+{hLze`yo+drENv%hu}NfkbKnYti7VFK`XxlJGu-tQp&#~ z4udN8^;0Xt+SrNNj$Im`CWXb@MD(lP0SR4w{dKnPWj>aaA4z3)kNFWs0J9{bKgDKY zON9vS2LpJHN~hjWeW9r_S7gex7I;m#N90;u$1_t!T#usA&s`*>g>W8mX38#>B>G&2NHgb(AToxUXlV8 z3D7qq$N(_3b4hy1pv>H-Jzm|>alN90K6Z;fyC(UI=<~_>5CDB{gh{)lz0oPxP7{Aa zi2sY`87_cXS8n1>5%=~c`>wd?5UU{KvyVy5d(3*69z1`pW9V1L=#)PqE}qq^;X3ru zpHrOg6O!zuLj!7`aQILF9ot2v!eftWcuja&UWvSs-`P7@j-q$Ks^avb|1=T z3}*@!K{D2D1vj+Qc`NXBug3&8vX0em_7*nrWt=z|=o`cS*-76y3JL0HO)J)pNC%*n z$yQyiDx5Pupe^*x?qCP$`v9?a|hmVFvHGudcV*ZJ#_oUy7ev2Fx{UFj9 z0NXfFH4x&8-qe_Mk^iHbIvuJ1K48l3R5&O;$13&<>`!Du^Tp9bC>cGFqMAjGjg3r0 zQxsL~@j_587X#7bjVJuFP0K>}x8YB9*<4DYpz}d)*i8>=C^fdW+-o23OIjn?H|`}h~b16 zndz7$OP1b`k9fa6rBOnq{DFfv<_$$n@NUDMm&`S1X2I&OMyz;=F?sA5i8Nt(s2=bJ zgH=Kv#1p25sZhhT3=6_OjN#xfI%#wBx25(%6iN(kTlQAkB6tyYcMPAeYRbeD%yoVh z{0A`_iel$=%h4MBy<3{^9ko_Vrypkes2M%sF*uTqPL44)&9I^y(JG{*nnA zflU;yXzS?s*Po}VheoNDWJyyPYJ_>FkDah&sp1W9jABn{tpfAv5!d*RZ=Kh%Z$?Qf zvwwOh25;npBZpVcRmt|164vy7h&$tqe%@J-Aosl7haq?Lm=kV=L?0zYI)jC358IZM z>Z>l+0m`18C9S_UNvFU!u)po*e~)*9YL835M`vtC48O*ps9IEvfNAMydoUwj52IUe zon?{x`|ZkR`q5#xf4~`WQcw6NJqQqjalPtNUQ|9=QU!$j9)1APWA zMVozD{hiMM*{7(wY`YaYgx#5tXo;u+cr&xtw%W)*3qfagYA8pq+lJamzoM#^Ji>M+AJEaKZv1y3i(u$X--vo?pn-d@(1H*QHVQ_8Ewv-I?ugLXZ$d zN5R{MW9F)ku41k)yB7QAJy6`&Y!m*%T;@OVXts*s@ZALuK0R%K)DcVGUw!_+LCT8q z;W?S@hF)ScUc*d&%Tbp8zQ{3iyxdlU%?pL2!>Mg++MD>*%1XzJ2h+2<`TJFtXi3dC z6X=2tZY{1KDj-{%?b_hbbW2*YJViKPj!Gr z08r(l5S_J;yfID&Yp0gMWvc^o+ z&`gdnq0*uBcL`(YNL2@y)0`%}P&i=owmd(XG34u|J3@?WmYL3y?* zk5#JI9!gA4EqRt4gtkF4qVNhGiM<8(4Hf{oRk3Fo z$-ymmmpW?@*cZ*)@MlrO-ahA^7xRQIO)JNIu+2(py@fiLugx*so?8>rx$fsDE&e`w zR&h!6w!7@S;O>nk0tRn)c^nTtm_nk3Ai6Z%EFV5&dFdhO{#2r`X}e--rRBS{oH6iRM+D)5} z%!1H5XUHgm=bge=VY>KBQ4{B>h1CxQkIKO}66{Z}2 zH8M!#m|sYwMfJjLeA1`dl>zTLUJkt)gbeP10|71 z<4YIOw?tP8jlG$9qCFzj&K_-bb=)x=8}%T+uu3>b!C*Wq=gJZ?U!Wu{PmMdr#(i<> zz@zphSF~B{jodsj&_q0tk`3!XsX21Sf-1=WaR;f7o6~hkxG9z=Vmixz8A~-;_pJXfL@c+I_D3XI>JeUX%L5P5fL7Ko@--0KAxU>P=PP;&_ytu&MP7@ zfA!TkatTWL&W!9F71H-C_gZb*PO_Lk+tJ^bTNEcVrF#wqi$T+NpqX+Xnk@Vea@X1R^8)#_AB$-q*WY%unnvKhvhKqU_$YPFZGyx<8|; zV%oeHyN!EO73RkWHDpkgA}mHiyqvUP`Yu&x7qOB3WW3}TyT%{P+{+iAT+{~Eb)4y# z3z+?LuH1N*^xrhy4Ajn+flfv3R^jvfgl94+$z69k^o)*sgx2*~n>wp2PSA{ZAbD^i9Ol6ZoCf&~;^kV{`<6l+2qJJQ>q5p!+w1>RY zqtGx(YME?yvdx-Fda3GF{au`I#o6?~e3_`R8~V*7$@`D58i=BX-5}oD%8uXG?XxuD zJfjueM0-z3jF1zYUBuI5(y1*X&wWsj!NLdvrP~K3U$od!q*J0$FwY9EI6=AFzW7Bc zskh%XLQL_)jRkWOmp=G?AQ7rYYd|MR`KwU&Wa_kYhO^InZrc&+74o!MwvWS{ZzfkY z&X0(-pS(5l^R>gNmY3a@cRj)o?U1LrH| zbyWnZFi?=3=Dfst$N>W1=cW1k z;Daf6#h02QcaK9dq>xzn11DFqplzyLzuIY?(U5gE`McXO~my@E-ojp8#kIWln7XIljJ5XL$FABiNh!!Vc`VRQZWvOsT@QUnV`74v9R(trV+NXjA$`tvlLODs zaxmjx8or)BZdmP>l#LX&`LxR$&|CJ?D^XO2PnlfBi&rOiNZ~Jl2%1*BJdnIkosWkT z_Q<*Ctw&dBcuLA;jU(0;>RS^-H!=%|;i}D9ZoLZI_kV$1t>ow1?A}-@!mfT!p=OHsS5OFuc)&n^|Eff_M`@kX;Gq-iASaxA{oHA+jMro189+ty=a>$X-Lfw^C z{H*Mf>^bBBu+$LGw~r)x$ZvKpq7nugHdY=-kCHhxTrKcAhDSnl7w+XQHkBPRxY1dv zWJfwxmRYjh)a4#6%sMAxgkLGG2rvWO_E}kd4*zANew(KEJ7ocvChuw+y0rHXQNDyx znB>CmD{>b1Zl*Lem|S>DF9@r0LCsdrnmp20(Cg{Ta#f%YB~NW04s+TJeO6B8Eir7Y zab9d`4m~pYcP^lkbUAvr4E3c%r7bTp*-Hb@-`vzv?6T6eS7&zS-pEY%)}`8YsN*6> z;P4hcdos4&kpj)bVHO{Ul;T4~==PJ~~ zddQnD+uV#Gd-5-)OY8|TpGJ)^u4)*UPj;GSP-8>~m z0jroU*W2!6>aq-wx$9KrCHDdpS3P#&mb`rp2-6RJ9fV!x9bX0B{qFfd-_ssz!q)2= za|&t)pS9nC8-JF%SaRbv5Z8PLSNikHOK|IqKm-85Z~Y$XJ$6@C!?%{KE5lzoligy0 zj&gL;YS8R5YW4mJN4|O`Wn-mce)NGL-u9yEtC?D7-(6zO74%Gjtvl2lW4% z49$D2b=yAEts~0ok*s}Xu(DGv*4Zb7$^y2R<b8JQ1M!H~7kFKRJj zN@r{RlXl1Vc+^)p)EHlCv#@ssj@4>?M3&o1^9f(V!zKM?j~(sK2ywEMZD7lq#z+zD zHxMOmd(Hm>7XW{Ho>YCGX#jqd%-PnCI@vH&^npVl_^PIHF+Xjb; zH}|@pe^~-T%qA9FeWI7vT=Lgg{98_Bm>)yerLQucwM`?A7>3oQ+sMe6t7`i855da1 zVq$KJQp-4GGT!ug-|9M_ug~i6GMe^jrc=9yvZJGiw4fl07ZA1mX(m*e!X~mjk#=ElKZF+x&+$`!V2BINoBK!tbTqLG3 zclZ;zJ&-K7ey1bm_CjuH?!6~p9qID z`se-f%Vc8{8(cp;Zz6a8xQ{M)#}%Z;nY8jyi1Ynj#H&(Qj0-Pkaqh0rs}bH;eg)Cj z)YqIOdZ2%83v-MiQZ%~>-8xdOmtTe4)kZPvs|3_sN5Z8XE-ggt;-ILbtd&KKUYUp* zlKI9e18Xp`>U_%ssF76l@$T$-D7D3QM~_0&JibGL=;H{ah+Bu+wE$cnqQPRkUs${o zY@8wJx6z`w;H~-v_BFsIK3Xh%InDZMsRLLOk-w$aGoGLQ0>jJ47ZGY6EvWQf7FE;_ z*&lDH(3o4GP+7uM+PaFR8Sz7-cFtvwC9t7QcuCb-yD~rWqL(ax@lEQsXjnmj+X6An z`itUaB=_OqqygjJ!=A4+8{F%uHn@LBkrbK4rx_~d&_*FkT_3#`@@I>&*(E>5$dBKU ztvEjllK+Xv_kGHrbhhMJlQq}@30YnsLz!b=``8l=hK!O7=s=%<6|>pkx2oJl>TLt; z#pBOkf$$A~jj4Sjav`TR3^a2fA>t|DU8v8l%5**HfSdmL?6f^p>Ii1OPda`C5gHm9 z6ru(8F7x{A90(Bf=n$WZ6?R{+fJa+IGLV!%boZbw!+$deR3s~fZGIVzs+48EG*tD> z^J=dD)>{y>)e2dp#v{vm21Zj>)8mycQV$P=7Uxaj#kI>`_PJC-1F5Qx4MW{1O_9%4 z3G%1cODz$|a>%X46k^{Q1+KYx3FNWk z^VvT45Q{3XM^-V=M<;c95sDn%ii;V!v$Q@SmRRo(Y=y+<&HH*L!EVJ_&|{JSx0U8} zs>VEj1+)RM5Vud;X%vl1C2czpyUZ|&bCta|lxTEIs-;Qi#XC1!~y zm&*mBI_GWNRysa&ML&P6cc1nkwo$R6Vxzhi?0V;Dp?Iv!2l{K4F}xTs zQS7Xsb$`wSe6)ZP;`o(y8ESSYG+pn#g=uKt(b@m z|FXYSKh2p3_V3QN`A#nX>7axIp_-bQep9%abX)VIS^M_tUlqRQVbWxLpuh!Sf#nC~l6vy^gPb8|B-;U)DaetUiz0x%iuFajn9a`%D4j z+8Q3ZGL7Na^>h40?}cbctz4KTVXiN1BcEsC-R+Mvs`oY+2i*l;s)Wgvk-!O-SeYo@ zF8xOCc5&fRN!E*L0PHT-z6tXr=3hHPNRrmg;J4HhhiF4sH$f}J zu5iOBOT@(KN^k`iGq?ouiHicYHr3KSecUMdT*z_tR+#Y9RR~H7)dUXba1sGZ75=|$ zBIOK)_cV{0CW&FLLJmXYn$>(V(ZP2)Xj)xsee(zLvq$EB!(;hPj;ShuklbFSNp*=nE(Z zp|6BIQGGZ569M&ARw@La-oQK=jR~}_OQr;!UFGopJ)$XrmuDcO9{0scxA!T%0G|v) z2j`-6t^+DFJc>gB4_xR`VCnL0Fv z&B0%lO47a5yKQVa3fO@MuX!H86n-fMvW_w#nHWU0u zsBKIXs;dnC-VM=BrP-CQgM`m&z=+^7mJQvKF}24BrAKEEug z&MY&UEQ7?@=BsGQ6{;Pa{`tD-chSs@+?v-kT7fM1EY?+5?uk|K{$9|&B*x6|tBsQvw)(El6g-i1tV)~aoC5j3(%?dxM(s@Q|FXs1{K8-Dz zOJeH8jl@?dOA$)2n>P(Z8Oii$Ap&jgRdyIzppLVJTnv~wKYw?u7qt#!$BWCodOmNp zaQI`waW+@_X{6KSoU1D6#q)bQf!TI)ETK~li|+UP`uR7^WJ#Yu1AeDYf^|mj7?6t1 z(KUZ6o61eqO($0#p1WsB&vfZUAd)frMbi|X%eWPPscBDl>RIi++rIKT}E?|ab~s! zg27<=%}kXh{Q}PlCjl-stjxf&EM#-Cs0&z0i5uV3BoVGG1bS=c>>BLjYKUwK`;pV^ zNdBLHfGh!J&=1{de^AzUYCfS#*X%xZmYGDl{4KuZ-F)v?zIVB+ zLWF{X5ic(#uC-E1**9J;4sAH<6>(*yOzMCed~7Kmf!>wDcQoMk&#T{WM;vE=bMJ{{ zmLoD98!mXg12uYa6k3TX|AJNMhR}(8>#%G>;fdJ~Q+QTqm&WP4v2(xU2J(5qt(n>t zp!Q@o95+N9J#6zoN5(a|s@;hCh-j*knn$wmEFz(`3rPe6hJVhVW8l=xg*=6AoM9vb z`ls(1x6M$Va_U5>;cTt5v7Qb~F2}cUkyv(ZVpuq5npy`od?}JtN%&`F>DylY6&z%y z>zp*C_iFl{<|m_ly$3!vO8(gj^oQfydDMwVM6nX@b5be`z2HQi>~ zxKJtjPIz7hx6TCR{7Q6#ls&NTawQ}0e6SIm_CH9GO?6o;DAjn7`}*mK4Qq75)K;o< zYZ67a+wHv|NJJ4(6otAFVNo#s(vg$y1%AJgDb)k!?L zYgT+NR7c9YadZsT!k&gRcq<3DW4_~XcGPGz`$HM@gag3WpTy}FDit95wT^5@gu>Tz zZH4sFag@ukX!o9(hJ+Au?Rjh9J$Ki9OUnW}1ME+P$^;#Qx$W~Q9^0F_r+a0*;6L8k zit&H<&LqCZ-S7GI;|h$uO;dk-c9H9C32G&7YyHliyR@Ymd5kQE;koulW<|xN=YHdY zWFbAN3gqfpw>!!|*_Lh+6I#AlHCm`CLnvjBcBG}zI|arl*PCis0XE{Z-n&mfR9BK- zy62`mZ>EBw{xX8~zojJ}C2#g6_20OA$h_^`dJ~2<_%X-2Cf>bWw4~9g_0P8a8mt+) zdHB0m8{bvl>UmNnbN#2Y3ZVGW??_*xiu_QDPyCmNmP}Vz4{G~^P3xHcEppT7Bb9?j z{ + + + + + TakeoutSaaS C端小程序原型 + + + +

+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + diff --git a/Cend-MiniProgram-Prototype/plan.md b/Cend-MiniProgram-Prototype/plan.md new file mode 100644 index 0000000..a10c749 --- /dev/null +++ b/Cend-MiniProgram-Prototype/plan.md @@ -0,0 +1,459 @@ +# TakeoutSaaS C 端小程序原型执行总计划 + +- 文档版本:`V1.0` +- 适用仓库:`TakeoutSaas.C-end.MiniProgram.Prototype` +- 执行对象:`Gemini 或其他页面实现 AI` +- 执行目标:基于当前 Markdown 文档体系,逐步完成一套可演示、可流转、可继续交接开发的小程序 C 端原型 + +--- + +## 1. 总目标 + +本计划用于指导原型实现 AI,按固定顺序逐步完成 C 端小程序原型。 +最终结果必须满足: + +1. 页面结构完整 +2. 页面之间可跳转 +3. 三种场景可切换 +4. 订单链路完整 +5. 会员资产链路完整 +6. 页面与文档一致 + +本次原型范围包括: +- 首页 +- 点餐 +- 订单 +- 我的 +- 门店、地址、结算、支付成功、订单详情、退款、评价 +- 领券中心、秒杀、限时折扣、会员中心、积分商城、储值、次卡 +- 消息中心、帮助中心、堂食扫码确认 + +本次原型不包括: +- 后端接口联调 +- 后台运营端页面 +- 财务、报表、库存后台 +- 实际支付能力 +- 实际地图配送算法 + +--- + +## 2. 执行总原则 + +### 2.1 严格按文档实现 +必须以以下文件为依据: +- `README.md` +- `docs/01-文档导航与实施顺序.md` +- `docs/02-信息架构与路由.md` +- `docs/03-全局业务规则.md` +- `docs/04-核心用户流程.md` +- `docs/05-页面清单总表.md` +- `docs/06-通用组件清单.md` +- `docs/07-页面规格/*.md` + +### 2.2 优先做闭环,不优先做边缘页 +先保证主交易链路可跑,再做资产页和辅助页。 + +### 2.3 一个阶段只解决一个问题 +不要同时做太多方向: +- 阶段 1 做壳层 +- 阶段 2 做交易闭环 +- 阶段 3 做履约售后 +- 阶段 4 做我的与资产 +- 阶段 5 做辅助页与活动页 +- 阶段 6 做全局联调与检查 + +### 2.4 页面先可用,再精修 +只要页面结构、交互、状态、流转正确,就算阶段合格。 +视觉细修可以放在最后统一处理。 + +--- + +## 3. 阶段计划 + +## 阶段 1:搭建原型基础骨架 + +### 目标 +搭建整套原型的基础结构,让后续页面可以稳定挂接。 + +### 必做事项 +1. 建立全局目录结构 +2. 建立路由结构 +3. 建立底部 TabBar +4. 建立顶部导航栏 +5. 建立页面容器和安全区规则 +6. 建立统一色彩、字体、间距和按钮规范 +7. 建立通用组件基础版本 + +### 本阶段必须产出 +- 全局应用壳层 +- 4 个 Tab 入口占位 +- 二级页面跳转能力 +- 抽屉 / 弹层容器 +- 通用状态标签与卡片组件 + +### 本阶段完成标准 +- 可以从 TabBar 切换到 4 个主页面占位 +- 可以从任意页面进入一个二级页再返回 +- 可以打开和关闭抽屉组件 + +--- + +## 阶段 2:完成交易主链路原型 + +### 目标 +跑通首页 → 点餐 → 商品详情 → 购物车 → 结算 → 支付成功 → 订单详情的完整闭环。 + +### 页面实施顺序 +1. `T01 首页` +2. `T02 点餐页` +3. `C01 商品详情抽屉` +4. `C02 购物车抽屉` +5. `P03 结算确认页` +6. `P04 支付成功页` +7. `T03 订单页` +8. `P05 订单详情页` + +### 每个页面必须完成的内容 +- 页面区块 +- 页面 CTA +- 页面状态 +- 页面跳转 +- mock 数据 + +### 场景要求 +#### 外卖 +- 门店选择 +- 地址校验占位 +- 配送费 / 起送价说明 +- 预计送达展示 + +#### 自提 +- 自提时间选择 +- 取餐人信息 +- 取餐码展示入口 + +#### 堂食 +- 桌号显示 +- 堂食场景切换 +- 后续加菜入口预留 + +### 本阶段完成标准 +- 首页可以进入点餐 +- 点餐可以加购商品 +- 商品可通过抽屉选规格和加料 +- 购物车可修改数量并去结算 +- 结算页可以展示金额明细和优惠入口 +- 支付成功后能进入订单详情 +- 订单详情能反映不同场景信息 + +--- + +## 阶段 3:完成履约、退款、评价链路 + +### 目标 +补全支付后的用户行为,让订单链路具备售后和评价能力。 + +### 页面实施顺序 +1. `P06 退款申请页` +2. `P07 退款详情页` +3. `P08 评价页` +4. 回补 `T03 订单页` +5. 回补 `P05 订单详情页` + +### 必做事项 +- 为订单详情页补齐操作态 +- 根据不同状态展示不同按钮 +- 打通退款申请 → 退款详情 +- 打通订单详情 → 评价页 +- 支持订单完成后再来一单 + +### 状态要求 +- 待支付 +- 已支付待接单 +- 制作中 +- 配送中 +- 待自提 +- 堂食进行中 +- 已完成 +- 退款中 +- 已退款 +- 已关闭 + +### 本阶段完成标准 +- 用户可从订单详情发起退款 +- 用户可看到退款结果 +- 用户可提交评价 +- 用户可看到订单的状态变化表达 + +--- + +## 阶段 4:完成“我的”与用户资产链路 + +### 目标 +让用户能在“我的”中查看资产、进入会员相关页面,并回流到点餐和结算。 + +### 页面实施顺序 +1. `T04 我的页` +2. `P12 会员中心页` +3. `P13 积分商城页` +4. `P14 储值充值页` +5. `P15 次卡页` +6. `P09 领券中心页` + +### 必做事项 +- 我的页搭建用户头部卡、资产总览和服务区 +- 会员中心展示等级、权益、成长值 +- 积分商城展示积分余额和可兑换内容 +- 储值充值页展示方案和充值记录 +- 次卡页展示购买、已购和使用状态 +- 领券中心展示券列表、领取状态和去使用入口 + +### 本阶段完成标准 +- 我的页能跳转到全部资产页 +- 资产页结构完整 +- 资产页数据能回流到结算页的使用语境 +- 优惠券、积分、储值、次卡在结算页有承接入口 + +--- + +## 阶段 5:完成活动页与辅助页 + +### 目标 +补全活动承接页、服务页和场景辅助页,完善整套原型可展示性。 + +### 页面实施顺序 +1. `P10 秒杀活动页` +2. `P11 限时折扣活动页` +3. `P01 门店选择页` +4. `P02 地址管理页` +5. `P16 消息中心页` +6. `P17 帮助中心页` +7. `P18 堂食扫码确认页` + +### 必做事项 +- 活动页展示活动头图、列表、状态变化 +- 门店选择页支持定位、筛选和切店 +- 地址管理页支持默认地址、新增编辑逻辑原型 +- 消息中心支持分类切换 +- 帮助中心支持 FAQ 和客服入口 +- 堂食扫码确认页支持桌号确认与入桌 + +### 本阶段完成标准 +- 首页活动入口全部有承接页 +- 门店与地址能力完整 +- 堂食扫码流程可演示 +- 消息与帮助体系可展示 + +--- + +## 阶段 6:统一联调与整体检查 + +### 目标 +把前面分阶段完成的页面整理成一套完整、统一、可交付的原型。 + +### 必做事项 +1. 检查所有页面路由是否连通 +2. 检查所有主要 CTA 是否都有跳转结果 +3. 检查所有页面标题、命名、入口是否统一 +4. 检查所有状态标签颜色和文案是否一致 +5. 检查三场景差异是否表达完整 +6. 检查结算页金额逻辑表达是否统一 +7. 检查“我的”页与资产页是否能相互跳转 +8. 检查所有空态与异常态是否补齐 + +### 最终联调清单 +- 首页 → 点餐 → 结算 → 支付成功 → 订单详情 +- 订单 → 退款申请 → 退款详情 +- 订单详情 → 评价页 +- 我的 → 会员中心 +- 我的 → 积分商城 +- 我的 → 储值充值 +- 我的 → 次卡页 +- 首页 → 秒杀活动页 +- 首页 → 限时折扣活动页 +- 扫码 → 堂食扫码确认 → 点餐页(堂食) + +### 本阶段完成标准 +- 页面可完整演示 +- 路由不死链 +- 页面结构和文档一致 +- 可交由下一个 AI 或开发继续接手 + +--- + +## 4. 页面级执行模板 + +Gemini 每做一个页面,必须遵守以下步骤: + +### Step 1:先读规格 +- 读取对应 `docs/07-页面规格/*.md` +- 同时读取依赖的全局规则和组件文档 + +### Step 2:先搭骨架 +- 先按区块顺序搭页面结构 +- 不要一开始就处理细节视觉 + +### Step 3:接入交互 +- 接 CTA +- 接跳转 +- 接抽屉 / 弹层 +- 接状态切换 + +### Step 4:补状态 +- 默认态 +- 空态 +- 异常态 +- 禁用态 + +### Step 5:对照文档自检 +检查: +- 区块是否缺失 +- 交互是否缺失 +- 页面是否越权扩展功能 +- 页面命名是否和文档一致 + +--- + +## 5. 统一 mock 数据策略 + +为了让原型可演示,需要统一准备 mock 数据。 +所有 mock 数据都要贴近餐饮小程序真实场景。 + +### 建议 mock 数据域 +- 门店数据 +- 分类数据 +- 商品数据 +- SKU 数据 +- 加料数据 +- 购物车数据 +- 地址数据 +- 优惠券数据 +- 积分数据 +- 储值数据 +- 次卡数据 +- 订单数据 +- 退款数据 +- 消息数据 + +### mock 数据要求 +- 能反映三场景差异 +- 能反映活动状态差异 +- 能反映订单状态差异 +- 能反映资产是否可用 + +--- + +## 6. 视觉与交互约束 + +### 6.1 视觉方向 +本次原型建议保持: +- 移动端优先 +- 餐饮类产品风格 +- 清晰、轻快、信息密度适中 +- 优惠信息突出但不杂乱 + +### 6.2 交互方向 +- 主要操作尽量底部固定 +- 商品加购尽量少跳页 +- 抽屉优先承载短流程 +- 二级页承载完整流程 + +### 6.3 文案方向 +- 以直接、明确、可操作为主 +- 不用过度营销化表达 +- 状态文案必须稳定统一 + +--- + +## 7. 阶段交付物清单 + +### 阶段 1 交付物 +- 全局壳层 +- 路由骨架 +- 通用组件第一版 + +### 阶段 2 交付物 +- 交易主链路页面 +- 购物车与结算闭环 +- 三场景基本表达 + +### 阶段 3 交付物 +- 退款链路 +- 评价链路 +- 订单状态链路 + +### 阶段 4 交付物 +- 我的页 +- 会员与资产页 +- 资产承接链路 + +### 阶段 5 交付物 +- 活动页 +- 辅助页 +- 堂食扫码辅助页 + +### 阶段 6 交付物 +- 完整演示版原型 +- 全链路可点击 +- 页面命名与结构统一 + +--- + +## 8. 最终验收标准 + +只有当下面全部满足时,本计划才算执行完成: + +1. 所有 `docs/05-页面清单总表.md` 中列出的页面都已实现 +2. 所有主 CTA 都有去向 +3. 外卖、自提、堂食三场景均可演示 +4. 结算、订单、退款、评价链路可演示 +5. 会员、积分、储值、次卡、领券链路可演示 +6. 页面状态具备最基本的空态和异常态 +7. 页面结构与文档一致 +8. 另一个开发或 AI 接手时,不需要重新猜测页面应该长什么样 + +--- + +## 9. 执行顺序简表 + +按下面固定顺序执行,不要跳步: + +1. 全局骨架 +2. 首页 +3. 点餐页 +4. 商品详情抽屉 +5. 购物车抽屉 +6. 结算确认页 +7. 支付成功页 +8. 订单页 +9. 订单详情页 +10. 退款申请页 +11. 退款详情页 +12. 评价页 +13. 我的页 +14. 会员中心页 +15. 积分商城页 +16. 储值充值页 +17. 次卡页 +18. 领券中心页 +19. 秒杀活动页 +20. 限时折扣活动页 +21. 门店选择页 +22. 地址管理页 +23. 消息中心页 +24. 帮助中心页 +25. 堂食扫码确认页 +26. 全局联调与统一修正 + +--- + +## 10. 最后要求 + +如果你是 Gemini,请不要一上来就做全部页面。 +请严格按照本 `plan.md`: +- 一阶段一阶段推进 +- 一页面一页面落地 +- 每完成一个页面就自检 +- 每完成一个阶段再进入下一个阶段 + +本计划不是参考建议,而是执行顺序。 diff --git a/Cend-MiniProgram-Prototype/小程序C端功能需求文档.md b/Cend-MiniProgram-Prototype/小程序C端功能需求文档.md new file mode 100644 index 0000000..8082189 --- /dev/null +++ b/Cend-MiniProgram-Prototype/小程序C端功能需求文档.md @@ -0,0 +1,504 @@ +# 小程序 C 端功能需求文档 + +- 文档版本:`V1.0` +- 生成日期:`2026-03-06` +- 适用项目:`TakeoutSaaS` 小程序 C 端 +- 原型来源:`D:/HAZCode/TakeoutSaaS/TakeoutSaaS.Prototypes` +- 目标用户:顾客 / 点餐下单用户 +- 对应后台:租户端运营后台(门店、商品、订单、营销、会员等配置由后台提供) + +--- + +## 1. 文档目的 + +本文档用于把现有租户端原型能力,整理为面向顾客的小程序 C 端需求说明。 +租户端原型主要解决“商家如何配置和运营”,小程序 C 端主要解决“顾客如何选店、点餐、支付、履约、售后、复购”。 + +一期默认建设目标: +- 同时支持 `外卖配送`、`到店自提`、`堂食扫码点餐` 三种场景 +- 同时支持 `会员`、`优惠券`、`满减`、`限时折扣`、`秒杀`、`积分`、`储值`、`次卡` 等用户资产能力 +- 以“顾客下单闭环 + 履约闭环 + 复购闭环”为核心 + +--- + +## 2. 底部菜单设计 + +建议小程序底部使用 4 个主菜单: + +| 菜单 | 菜单定位 | 核心目标 | +| --- | --- | --- | +| 首页 | 顾客进入小程序后的综合入口 | 选门店、看活动、进入正确点单场景 | +| 点餐 | 商品浏览与下单主阵地 | 选商品、选规格、加购、结算、支付 | +| 订单 | 订单履约与售后中心 | 看进度、催单、退款、评价、复购 | +| 我的 | 顾客资产和个人服务中心 | 管理会员、优惠券、积分、储值、次卡、地址、消息 | + +说明: +- `堂食扫码` 不建议单独放入底部菜单,而是通过扫码直达或首页入口进入 +- `门店选择`、`地址管理`、`会员中心`、`领券中心`、`积分商城` 等作为二级页面存在 + +--- + +## 3. 整体功能分层 + +### 3.1 顾客核心链路 +1. 进入小程序 +2. 定位或选择门店 +3. 选择场景(外卖 / 自提 / 堂食) +4. 浏览商品并加入购物车 +5. 选择优惠与支付方式 +6. 完成支付 +7. 查看订单履约进度 +8. 完成售后、评价与复购 + +### 3.2 顾客核心能力模块 +- 门店与场景能力 +- 商品与购物车能力 +- 订单与履约能力 +- 营销与活动能力 +- 会员与资产能力 +- 评价与售后能力 +- 消息与服务能力 + +--- + +## 4. 菜单一:首页 + +### 4.1 菜单定位 +首页用于承接“选店 + 场景选择 + 活动导流 + 热门推荐”。 +顾客进入小程序后,优先完成“去哪家店、用什么方式点单、当前有什么活动”。 + +### 4.2 功能大类 +- 门店与场景入口 +- 活动与优惠导流 +- 推荐与快速点单 +- 门店服务信息 + +### 4.3 详细功能清单 + +| 功能大类 | 具体功能名称 | 功能作用 | 备注 / 来源能力 | +| --- | --- | --- | --- | +| 门店与场景入口 | 定位推荐门店 | 根据用户当前位置推荐最近可服务门店 | 对应门店列表、配送范围 | +| 门店与场景入口 | 手动切换门店 | 顾客可主动切换其他门店下单 | 对应门店列表 | +| 门店与场景入口 | 门店营业状态展示 | 显示营业中、休息中、即将打烊、特殊营业 | 对应营业时间 | +| 门店与场景入口 | 外卖入口 | 进入外卖配送场景点单 | 对应配送设置 | +| 门店与场景入口 | 自提入口 | 进入到店自提场景点单 | 对应自提设置 | +| 门店与场景入口 | 堂食入口 | 进入堂食点餐,或引导扫码入桌 | 对应堂食管理 | +| 门店与场景入口 | 扫码入桌快捷入口 | 顾客通过桌码进入堂食流程 | 对应堂食桌位 | +| 门店与场景入口 | 门店信息卡片 | 展示门店名称、地址、距离、电话、营业时间 | 门店基础信息 | +| 活动与优惠导流 | 首页 Banner | 展示门店主推活动、主题活动、节日活动 | 对应营销日历 | +| 活动与优惠导流 | 新客有礼入口 | 新用户看到欢迎礼包、首单优惠等 | 对应新客有礼 | +| 活动与优惠导流 | 领券中心入口 | 查看并领取当前可领优惠券 | 对应优惠券 | +| 活动与优惠导流 | 满减活动入口 | 导流至当前门店可参与的满减活动 | 对应满减活动 | +| 活动与优惠导流 | 限时折扣入口 | 展示限时折扣专区、折扣商品入口 | 对应限时折扣 | +| 活动与优惠导流 | 秒杀活动入口 | 展示秒杀会场、倒计时、秒杀商品 | 对应秒杀活动 | +| 活动与优惠导流 | 会员日入口 | 展示会员日权益和活动提醒 | 对应会员等级 / 会员日 | +| 活动与优惠导流 | 储值活动入口 | 引导顾客充值享赠金 | 对应储值卡 | +| 活动与优惠导流 | 次卡活动入口 | 引导顾客购买午餐卡、咖啡卡等 | 对应次卡管理 | +| 推荐与快速点单 | 热销推荐 | 展示销量高、转化高的商品 | 对应商品分析 / 热销标签 | +| 推荐与快速点单 | 套餐推荐 | 展示组合套餐、多人套餐 | 对应商品套餐 | +| 推荐与快速点单 | 复购推荐 | 给老客展示常点商品和最近下单商品 | 对应客户画像 / 订单历史 | +| 推荐与快速点单 | 猜你喜欢 | 基于顾客偏好推荐商品 | 对应客户画像 | +| 推荐与快速点单 | 快速再来一单 | 让用户从首页直接复购最近订单 | 复购能力 | +| 门店服务信息 | 营业时间展示 | 展示今日营业时段和特殊营业说明 | 对应营业时间 | +| 门店服务信息 | 配送费与起送价说明 | 展示基础配送费、起送门槛、免配送费门槛 | 对应费用设置 | +| 门店服务信息 | 配送范围说明 | 展示超出范围不可配送的提示 | 对应配送设置 | +| 门店服务信息 | 自提规则说明 | 展示自提时段、预约规则、取餐说明 | 对应自提设置 | +| 门店服务信息 | 堂食规则说明 | 展示桌码点餐、加菜、结账说明 | 对应堂食管理 | +| 门店服务信息 | 联系门店 | 一键拨打电话或联系客服 | 服务能力 | +| 门店服务信息 | 到店导航 | 跳转地图导航到店 | 自提 / 堂食场景使用 | + +### 4.4 首页重点说明 +- 首页的第一目标不是展示全部功能,而是让顾客快速进入正确门店与正确场景 +- 如果是扫码进入,则首页可弱化,直接进入堂食流程 +- 若顾客是老用户,首页优先展示复购商品和可用优惠 + +--- + +## 5. 菜单二:点餐 + +### 5.1 菜单定位 +点餐页是小程序最核心页面,负责完成从“浏览商品”到“提交订单”的完整转化。 + +### 5.2 功能大类 +- 菜单浏览与筛选 +- 商品详情与选配 +- 购物车管理 +- 结算与支付 + +### 5.3 详细功能清单 + +| 功能大类 | 具体功能名称 | 功能作用 | 备注 / 来源能力 | +| --- | --- | --- | --- | +| 菜单浏览与筛选 | 场景切换条 | 在外卖、自提、堂食之间切换,刷新可售规则 | 三场景统一支持 | +| 菜单浏览与筛选 | 当前门店展示 | 显示当前门店,并支持切换门店 | 门店列表 | +| 菜单浏览与筛选 | 分类导航 | 按商品分类浏览菜单 | 商品分类 | +| 菜单浏览与筛选 | 商品搜索 | 按商品名称、关键词搜索商品 | 商品列表 | +| 菜单浏览与筛选 | 标签筛选 | 按热销、招牌、新品、推荐等标签筛选 | 商品标签 | +| 菜单浏览与筛选 | 时段供应提示 | 标记早餐、午餐、晚餐、夜宵等可售时段 | 时段供应 | +| 菜单浏览与筛选 | 售罄状态展示 | 展示售罄、下架、当前不可售 | 库存 / 时段 / 状态控制 | +| 菜单浏览与筛选 | 活动商品专区 | 在点餐页突出显示秒杀、折扣商品 | 营销活动 | +| 菜单浏览与筛选 | 套餐专区 | 展示单人餐、双人餐、家庭餐等套餐 | 商品套餐 | +| 商品详情与选配 | 商品主图与副图 | 展示商品图片,增强购买欲望 | 商品详情 | +| 商品详情与选配 | 商品名称与描述 | 展示卖点、口味、原料说明 | 商品详情 | +| 商品详情与选配 | 规格做法选择 | 选择大份小份、冷热、辣度、甜度等 | 规格做法 | +| 商品详情与选配 | 加料选择 | 增加小料、配菜、附加项 | 加料管理 | +| 商品详情与选配 | SKU 联动价格 | 根据规格组合实时变更价格 | SKU 管理 | +| 商品详情与选配 | SKU 联动库存 | 根据规格组合判断库存是否足够 | SKU 管理 | +| 商品详情与选配 | 划线价显示 | 显示原价与优惠价对比 | 商品价格 | +| 商品详情与选配 | 打包费展示 | 展示商品或门店打包费 | 费用设置 | +| 商品详情与选配 | 商品标签展示 | 显示热销、招牌、推荐、新品等标签 | 商品标签 | +| 商品详情与选配 | 限购信息展示 | 展示活动商品每单限购数量 | 秒杀 / 折扣 | +| 商品详情与选配 | 立即加购 | 将当前商品加入购物车 | 主转化动作 | +| 商品详情与选配 | 立即下单 | 跳过继续浏览,直接前往结算 | 缩短购买路径 | +| 购物车管理 | 购物车悬浮入口 | 随时查看已选商品数和金额 | 点餐核心交互 | +| 购物车管理 | 购物车明细浮层 | 查看全部已选商品 | 购物车 | +| 购物车管理 | 数量增减 | 修改单品购买数量 | 购物车 | +| 购物车管理 | 同商品不同规格区分 | 避免不同规格混淆 | SKU 组合 | +| 购物车管理 | 失效商品提醒 | 提示商品售罄、活动失效、超时段不可售 | 保护结算成功率 | +| 购物车管理 | 凑单提示 | 提示距离起送价、满减、免配送费还差多少 | 提升转化 | +| 购物车管理 | 场景购物车隔离 | 外卖 / 自提 / 堂食购物车分开 | 防止混单 | +| 购物车管理 | 清空购物车 | 一键清空当前场景商品 | 便于重选 | +| 结算与支付 | 结算确认页 | 汇总商品、费用、优惠、场景信息 | 核心结算页 | +| 结算与支付 | 收货地址选择 | 外卖场景选择地址 | 地址管理 | +| 结算与支付 | 地址新增编辑 | 新增和修改配送地址 | 地址管理 | +| 结算与支付 | 配送范围校验 | 判断地址是否在配送范围内 | 配送设置 | +| 结算与支付 | 起送价校验 | 判断订单是否满足起送门槛 | 费用设置 | +| 结算与支付 | 配送费计算 | 按距离或区域计算配送费 | 配送规则 | +| 结算与支付 | 免配送费门槛判断 | 满额自动减免配送费 | 门店费用设置 | +| 结算与支付 | 预计送达时间 | 展示预计送达时间 | 外卖履约信息 | +| 结算与支付 | 自提时段选择 | 顾客选择可预约的取餐时间段 | 自提时段 | +| 结算与支付 | 自提人信息 | 填写取餐人姓名和手机号 | 自提必填 | +| 结算与支付 | 取餐规则说明 | 展示提前预约、截止时间、取餐方式 | 自提设置 | +| 结算与支付 | 堂食桌号确认 | 展示当前桌号和门店信息 | 堂食流程 | +| 结算与支付 | 订单备注 | 填写口味、忌口、特殊要求 | 订单备注 | +| 结算与支付 | 餐具选择 | 顾客选择餐具数量或无需餐具 | 费用设置 | +| 结算与支付 | 优惠券选择 | 选择可用优惠券参与结算 | 优惠券 | +| 结算与支付 | 满减自动匹配 | 自动命中可用满减活动 | 满减活动 | +| 结算与支付 | 折扣自动匹配 | 命中限时折扣或秒杀价 | 折扣 / 秒杀 | +| 结算与支付 | 新客礼包自动生效 | 新用户下单自动带入礼包优惠 | 新客有礼 | +| 结算与支付 | 会员优惠展示 | 展示会员等级折扣、会员日权益 | 会员体系 | +| 结算与支付 | 积分抵扣 | 使用积分抵扣部分金额 | 积分体系 | +| 结算与支付 | 储值余额抵扣 | 使用储值余额支付订单 | 储值卡 | +| 结算与支付 | 次卡核销 | 对可用商品使用次卡直接抵扣 | 次卡管理 | +| 结算与支付 | 费用明细展示 | 展示商品金额、包装费、配送费、优惠、实付金额 | 提升透明度 | +| 结算与支付 | 微信支付 | 通过微信支付完成下单 | 一期主支付方式 | +| 结算与支付 | 余额支付 | 使用储值余额直接支付 | 会员资产能力 | +| 结算与支付 | 支付成功页 | 展示支付成功、预计送达 / 取餐时间、后续入口 | 支付闭环 | + +### 5.4 点餐重点说明 +- 点餐页必须围绕“快”和“准”设计:快找到商品,准确理解价格和优惠 +- 商品规格、加料、优惠命中、库存与价格联动必须清晰 +- 结算页必须把“为什么是这个价格”解释清楚 + +--- + +## 6. 菜单三:订单 + +### 6.1 菜单定位 +订单页用于承接顾客付款后的全部行为,包括查看状态、催单、退款、评价、复购。 + +### 6.2 功能大类 +- 订单列表 +- 订单详情 +- 履约互动 +- 售后与评价 + +### 6.3 详细功能清单 + +| 功能大类 | 具体功能名称 | 功能作用 | 备注 / 来源能力 | +| --- | --- | --- | --- | +| 订单列表 | 订单状态筛选 | 按待支付、进行中、已完成、退款售后查看订单 | 订单列表 | +| 订单列表 | 场景标识 | 标识外卖、自提、堂食订单 | 多场景识别 | +| 订单列表 | 订单卡片摘要 | 显示门店、商品摘要、金额、状态、时间 | 顾客快速找单 | +| 订单列表 | 搜索订单 | 根据订单号、门店、手机号等搜索 | 提高查询效率 | +| 订单列表 | 待支付订单入口 | 快速继续支付未完成订单 | 降低流失 | +| 订单列表 | 再来一单入口 | 基于历史订单快速复购 | 复购能力 | +| 订单详情 | 订单基础信息 | 查看订单号、下单时间、支付方式、支付时间 | 订单明细 | +| 订单详情 | 商品清单 | 查看商品、规格、加料、数量 | 核对订单 | +| 订单详情 | 费用明细 | 查看金额组成与优惠明细 | 核对支付金额 | +| 订单详情 | 履约时间轴 | 展示支付成功、接单、制作、配送 / 待取 / 完成等节点 | 订单进度 | +| 订单详情 | 场景信息展示 | 外卖显示地址,自提显示取餐码,堂食显示桌号 | 场景化详情 | +| 订单详情 | 联系门店 | 从订单详情直接联系商家 | 服务能力 | +| 订单详情 | 评价入口 | 已完成订单可评价 | 对应评价管理 | +| 订单详情 | 再来一单 | 按历史订单快速重新加入购物车 | 复购闭环 | +| 履约互动 | 待支付倒计时 | 显示支付剩余时间 | 待支付订单 | +| 履约互动 | 继续支付 | 对未支付订单继续拉起支付 | 订单支付恢复 | +| 履约互动 | 取消订单 | 在允许时间内主动取消未履约订单 | 订单规则 | +| 履约互动 | 催单 | 当制作时间较长时发起催单 | 对应催单提醒 | +| 履约互动 | 外卖配送进度 | 查看配送中状态与预计送达 | 外卖重点能力 | +| 履约互动 | 自提取餐码 | 查看取餐码、取餐时间、取餐人信息 | 自提重点能力 | +| 履约互动 | 堂食加菜 / 续单 | 顾客在用餐中可继续加购 | 堂食场景能力 | +| 履约互动 | 完成标记提示 | 提示顾客订单已完成可评价 | 促进评价 | +| 售后与评价 | 申请退款 | 提交退款原因、退款内容 | 退款售后 | +| 售后与评价 | 退款进度查询 | 查看退款处理中、已退款、已拒绝 | 售后透明 | +| 售后与评价 | 退款结果说明 | 查看退款金额、驳回原因、处理说明 | 售后结果 | +| 售后与评价 | 订单评价 | 对订单或商品进行星级评价 | 评价管理 | +| 售后与评价 | 晒图评价 | 上传图片补充体验内容 | 图文评价 | +| 售后与评价 | 匿名评价 | 保护顾客隐私 | 常用评价能力 | +| 售后与评价 | 查看商家回复 | 查看商家对评价的回复 | 评价闭环 | +| 售后与评价 | 评价奖励提示 | 告知评价可获得积分等奖励 | 积分规则 | + +### 6.4 订单重点说明 +- 订单页的重点是“透明感”,顾客要知道订单到哪一步了 +- 自提和堂食不能简单复用外卖逻辑,必须突出取餐码、桌号、用餐状态 +- 售后入口必须清楚,避免顾客找不到退款路径 + +--- + +## 7. 菜单四:我的 + +### 7.1 菜单定位 +我的页用于承接顾客身份、用户资产、服务入口和复购能力,是长期留存的重要页面。 + +### 7.2 功能大类 +- 账户与基础资料 +- 会员与资产 +- 服务与消息 +- 复购与个性化 + +### 7.3 详细功能清单 + +| 功能大类 | 具体功能名称 | 功能作用 | 备注 / 来源能力 | +| --- | --- | --- | --- | +| 账户与基础资料 | 微信授权登录 | 获取用户基础身份信息 | 小程序基础能力 | +| 账户与基础资料 | 手机号绑定 | 绑定下单手机号,便于通知和履约 | 顾客身份 | +| 账户与基础资料 | 头像昵称展示 | 显示顾客基础资料 | 我的首页头部 | +| 账户与基础资料 | 收货地址管理 | 新增、编辑、删除常用收货地址 | 地址能力 | +| 账户与基础资料 | 常用门店 | 展示顾客常用下单门店 | 多门店复购 | +| 账户与基础资料 | 场景偏好记录 | 沉淀外卖、自提、堂食偏好 | 个性化推荐 | +| 会员与资产 | 会员中心 | 集中展示会员等级、成长值、权益 | 会员管理 | +| 会员与资产 | 会员等级展示 | 展示当前等级和升级条件 | 会员等级体系 | +| 会员与资产 | 成长值进度 | 展示距离下一级还差多少 | 激励升级 | +| 会员与资产 | 会员权益展示 | 展示折扣、积分倍率、生日特权、会员日权益 | 会员等级配置 | +| 会员与资产 | 优惠券列表 | 查看未使用、已使用、已过期优惠券 | 优惠券资产 | +| 会员与资产 | 券详情说明 | 展示门槛、有效期、适用门店、适用场景 | 优惠券使用说明 | +| 会员与资产 | 积分余额 | 展示当前可用积分 | 积分体系 | +| 会员与资产 | 积分明细 | 查看积分获取、使用、过期记录 | 积分规则 | +| 会员与资产 | 积分商城 | 使用积分兑换商品、权益或优惠券 | 积分商城 | +| 会员与资产 | 积分兑换记录 | 查看积分兑换历史 | 积分记录 | +| 会员与资产 | 储值余额 | 展示当前储值可用余额 | 储值卡 | +| 会员与资产 | 充值方案列表 | 展示可选充值金额、赠送金额、到账金额 | 储值卡配置 | +| 会员与资产 | 充值记录 | 查看每次充值的支付方式和到账明细 | 储值记录 | +| 会员与资产 | 次卡列表 | 查看已购买次卡、剩余次数、有效期 | 次卡管理 | +| 会员与资产 | 次卡适用范围说明 | 展示次卡适用商品或分类 | 次卡使用说明 | +| 会员与资产 | 次卡使用记录 | 查看每次核销明细 | 次卡记录 | +| 会员与资产 | 新客礼包 | 查看已领取的新客礼包内容与使用状态 | 新客有礼 | +| 服务与消息 | 消息中心 | 集中查看订单消息、营销消息、系统通知 | 消息中心 | +| 服务与消息 | 订单消息 | 查看支付成功、接单、配送、退款消息 | 订单通知 | +| 服务与消息 | 营销消息 | 查看发券通知、活动提醒、会员日提醒 | 营销触达 | +| 服务与消息 | 系统通知 | 查看规则变化、服务公告等 | 系统消息 | +| 服务与消息 | 帮助中心 | 查看常见问题、订单帮助、支付帮助、退款帮助 | 帮助中心 | +| 服务与消息 | 联系客服 | 联系在线客服或电话客服 | 服务入口 | +| 服务与消息 | 意见反馈 | 反馈问题、建议或投诉 | 用户反馈 | +| 服务与消息 | 用户协议与隐私说明 | 查看协议、隐私政策、授权说明 | 合规要求 | +| 复购与个性化 | 最近订单 | 快速查看最近下单记录 | 复购入口 | +| 复购与个性化 | 常点商品 | 展示顾客高频购买商品 | 个性化推荐 | +| 复购与个性化 | 猜你喜欢 | 根据历史偏好推荐商品 | 客户画像结果承接 | +| 复购与个性化 | 一键再来一单 | 基于历史订单直接重建购物车 | 提升复购转化 | +| 复购与个性化 | 会员专享推荐 | 向会员展示专享商品、专享活动 | 会员价值感 | + +### 7.4 我的页重点说明 +- “我的”不是简单信息页,而是资产页 + 服务页 + 复购页 +- 必须把“我有什么优惠、我还剩多少积分、我能不能更便宜地下单”表达清楚 +- 对老客来说,“我的”页是复购和资产回访的核心入口 + +--- + +## 8. 重点专项页面(非底部菜单) + +### 8.1 堂食扫码入桌页 + +| 功能名称 | 功能作用 | +| --- | --- | +| 扫码识别门店 | 识别当前桌码所属门店 | +| 扫码识别桌号 | 自动带出桌号 / 桌台编号 | +| 确认入桌 | 顾客确认当前桌号正确 | +| 查看同桌订单状态 | 查看本桌当前点单情况 | +| 堂食菜单入口 | 进入堂食点餐页 | +| 加菜入口 | 已点单后继续加菜 | +| 呼叫服务入口 | 需要时联系门店服务人员 | + +作用说明: +- 这是堂食场景最关键页面,决定顾客能否无障碍进入堂食流程 +- 扫码成功后应尽量少让用户做选择,自动绑定桌号与门店 + +### 8.2 领券中心页 + +| 功能名称 | 功能作用 | +| --- | --- | +| 可领取优惠券列表 | 查看所有可领取优惠券 | +| 已领取状态展示 | 告知顾客是否已领取 | +| 优惠券使用门槛展示 | 展示满减门槛、适用范围 | +| 有效期展示 | 告知过期时间 | +| 立即使用入口 | 领取后直接去点餐 | + +### 8.3 会员中心页 + +| 功能名称 | 功能作用 | +| --- | --- | +| 当前会员等级 | 展示顾客等级 | +| 升级条件 | 展示还差多少成长值 / 消费额可升级 | +| 权益总览 | 展示折扣、积分倍率、生日券、会员日等 | +| 等级说明 | 展示全部等级和对应权益 | +| 会员任务 / 激励 | 引导用户消费、评价、签到等积累成长 | + +### 8.4 积分商城页 + +| 功能名称 | 功能作用 | +| --- | --- | +| 积分商品列表 | 展示可兑换商品或权益 | +| 积分兑换详情 | 展示兑换所需积分和规则 | +| 兑换记录 | 查看已兑换记录 | +| 兑换状态 | 展示待核销、已核销、已失效等状态 | + +### 8.5 储值充值页 + +| 功能名称 | 功能作用 | +| --- | --- | +| 充值方案列表 | 展示充多少送多少 | +| 实付与到账金额说明 | 清楚展示实充、赠送、到账 | +| 充值支付 | 发起微信支付充值 | +| 充值记录 | 查看充值历史和支付方式 | +| 储值余额说明 | 解释余额如何使用 | + +### 8.6 次卡页 + +| 功能名称 | 功能作用 | +| --- | --- | +| 次卡购买列表 | 展示可购买的次卡 | +| 次卡详情 | 展示适用商品、有效期、次数 | +| 已购次卡列表 | 展示个人已购买次卡 | +| 次卡剩余次数 | 告知还能用几次 | +| 次卡核销记录 | 追踪使用情况 | + +--- + +## 9. 公共能力与通用规则 + +### 9.1 登录与身份规则 +- 顾客首次进入可以先浏览首页和门店信息 +- 在以下行为前必须完成必要授权或绑定: + - 提交订单 + - 使用优惠券、积分、储值、次卡 + - 查看“我的”资产 + - 接收订单通知 + +### 9.2 门店与场景规则 +- 所有商品、价格、活动、履约规则均以“当前门店 + 当前场景”为准 +- 外卖、自提、堂食的商品、价格、活动支持存在差异 +- 堂食扫码进入后,应尽量锁定门店与桌号,避免误切换 + +### 9.3 价格与优惠规则 +- 顾客端负责展示: + - 可用优惠券 + - 命中的满减 / 折扣 / 秒杀 + - 可用积分和储值余额 + - 实付金额计算结果 +- 后台负责配置具体命中规则、适用门店、适用时段、适用场景和优先级 + +### 9.4 消息通知规则 +顾客端消息建议分为三类: +- 订单消息:支付成功、接单、出餐、配送、退款处理 +- 营销消息:发券通知、活动提醒、会员日提醒、储值活动 +- 系统通知:服务公告、规则更新、门店通知 + +### 9.5 评价与售后规则 +- 订单完成后应引导评价 +- 评价支持星级、文字、图片、匿名 +- 商家回复后,顾客端应可见 +- 退款申请需有明确状态与处理结果说明 + +--- + +## 10. 不进入 C 端菜单的后台模块 + +以下模块属于租户后台能力,不需要做成顾客端独立页面: + +| 后台模块 | 不做成 C 端页面的原因 | +| --- | --- | +| 财务概览 / 交易流水 / 到账查询 | 属于商家经营数据,不对顾客开放 | +| 成本管理 / 发票管理 / 经营报表 | 属于商家经营与财务管理 | +| 商品分析 / 订单分析 / 营销分析 / 客户分析 | 用于商家运营决策,不是顾客操作页面 | +| 库存总览 / 出入库 / 采购 / 效期管理 | 属于供应链与库存后台 | +| 渠道管理 / 订单聚合 / 菜单同步 / 配送调度 | 属于平台聚合与运营后台 | +| 系统角色 / 子账号 / 日志 / 计费 / 升级 | 属于系统管理与 SaaS 管理 | +| 打印设置 / 后厨联 / 小票模板 | 属于门店作业能力 | +| 门店员工 / 资质证照 / 子账号管理 | 属于商家组织与合规管理 | + +说明: +- 这些后台模块虽然不出现在顾客端页面里,但它们的配置结果会影响顾客端体验 +- 例如:营业时间、配送范围、商品库存、活动规则、会员权益,都要在顾客端准确承接 + +--- + +## 11. 页面清单建议 + +### 11.1 主页面 +- 首页 +- 点餐页 +- 订单页 +- 我的页 + +### 11.2 二级页面 +- 门店选择页 +- 地址管理页 +- 商品详情页 / 弹层 +- 购物车浮层 +- 结算确认页 +- 支付成功页 +- 订单详情页 +- 退款申请页 +- 退款详情页 +- 评价页 +- 领券中心页 +- 秒杀活动页 +- 限时折扣活动页 +- 会员中心页 +- 积分商城页 +- 储值充值页 +- 次卡页 +- 消息中心页 +- 帮助中心页 +- 堂食扫码确认页 + +--- + +## 12. 一期验收标准 + +### 12.1 必须跑通的链路 +- 新用户进入首页并可看到新客有礼 +- 用户可切换门店与点单场景 +- 用户可浏览商品、选择规格和加料并加入购物车 +- 用户可使用优惠券、积分、储值等资产参与结算 +- 用户可用微信支付完成下单 +- 外卖订单可查看配送进度 +- 自提订单可查看取餐码和取餐时间 +- 堂食扫码后可完成点餐和加菜 +- 用户可查看订单状态、发起退款、提交评价 +- 用户可在“我的”中查看会员、券、积分、储值、次卡和消息 + +### 12.2 关键边界场景 +- 地址超出配送范围时禁止提交外卖订单 +- 未达到起送门槛时要明确提示差额 +- 商品售罄、活动失效、超营业时间时要清晰提示 +- 门店休息或特殊营业时,首页和点餐页同步提示 +- 堂食扫码桌号失效时,提示重新扫码或联系门店 +- 优惠不可用时必须说明原因,例如门槛不足、已过期、场景不匹配 + +--- + +## 13. 结论 + +本需求文档将租户端原型能力映射为顾客小程序的 4 个主菜单和多个二级页面。 +其中: +- `首页` 负责选店与导流 +- `点餐` 负责转化与支付 +- `订单` 负责履约与售后 +- `我的` 负责资产、服务与复购 + +如果进入下一步设计与实施,建议按以下顺序继续输出: +1. 页面结构图 / 信息架构图 +2. 用户流程图(外卖 / 自提 / 堂食) +3. 页面级原型清单 +4. 接口清单与字段定义 +5. 小程序 UI 规范与组件规范 diff --git a/.claude/settings.local.json b/Tenant-Admin-UI-Prototype/.claude/settings.local.json similarity index 100% rename from .claude/settings.local.json rename to Tenant-Admin-UI-Prototype/.claude/settings.local.json diff --git a/docker-compose.yml b/Tenant-Admin-UI-Prototype/docker-compose.yml similarity index 100% rename from docker-compose.yml rename to Tenant-Admin-UI-Prototype/docker-compose.yml diff --git a/index.html b/Tenant-Admin-UI-Prototype/index.html similarity index 100% rename from index.html rename to Tenant-Admin-UI-Prototype/index.html diff --git a/nginx.conf b/Tenant-Admin-UI-Prototype/nginx.conf similarity index 100% rename from nginx.conf rename to Tenant-Admin-UI-Prototype/nginx.conf diff --git a/pages/_b64chunk.txt b/Tenant-Admin-UI-Prototype/pages/_b64chunk.txt similarity index 100% rename from pages/_b64chunk.txt rename to Tenant-Admin-UI-Prototype/pages/_b64chunk.txt diff --git a/pages/_b64write.py b/Tenant-Admin-UI-Prototype/pages/_b64write.py similarity index 100% rename from pages/_b64write.py rename to Tenant-Admin-UI-Prototype/pages/_b64write.py diff --git a/pages/_create_cust_analysis.py b/Tenant-Admin-UI-Prototype/pages/_create_cust_analysis.py similarity index 100% rename from pages/_create_cust_analysis.py rename to Tenant-Admin-UI-Prototype/pages/_create_cust_analysis.py diff --git a/pages/_gen.py b/Tenant-Admin-UI-Prototype/pages/_gen.py similarity index 100% rename from pages/_gen.py rename to Tenant-Admin-UI-Prototype/pages/_gen.py diff --git a/pages/ch-delivery.html b/Tenant-Admin-UI-Prototype/pages/ch-delivery.html similarity index 100% rename from pages/ch-delivery.html rename to Tenant-Admin-UI-Prototype/pages/ch-delivery.html diff --git a/pages/ch-menu-sync.html b/Tenant-Admin-UI-Prototype/pages/ch-menu-sync.html similarity index 100% rename from pages/ch-menu-sync.html rename to Tenant-Admin-UI-Prototype/pages/ch-menu-sync.html diff --git a/pages/ch-orders.html b/Tenant-Admin-UI-Prototype/pages/ch-orders.html similarity index 100% rename from pages/ch-orders.html rename to Tenant-Admin-UI-Prototype/pages/ch-orders.html diff --git a/pages/ch-platform.html b/Tenant-Admin-UI-Prototype/pages/ch-platform.html similarity index 100% rename from pages/ch-platform.html rename to Tenant-Admin-UI-Prototype/pages/ch-platform.html diff --git a/pages/cpl-expiry.html b/Tenant-Admin-UI-Prototype/pages/cpl-expiry.html similarity index 100% rename from pages/cpl-expiry.html rename to Tenant-Admin-UI-Prototype/pages/cpl-expiry.html diff --git a/pages/cpl-inspect.html b/Tenant-Admin-UI-Prototype/pages/cpl-inspect.html similarity index 100% rename from pages/cpl-inspect.html rename to Tenant-Admin-UI-Prototype/pages/cpl-inspect.html diff --git a/pages/cpl-license.html b/Tenant-Admin-UI-Prototype/pages/cpl-license.html similarity index 100% rename from pages/cpl-license.html rename to Tenant-Admin-UI-Prototype/pages/cpl-license.html diff --git a/pages/cpl-trace.html b/Tenant-Admin-UI-Prototype/pages/cpl-trace.html similarity index 100% rename from pages/cpl-trace.html rename to Tenant-Admin-UI-Prototype/pages/cpl-trace.html diff --git a/pages/cust-analysis.html b/Tenant-Admin-UI-Prototype/pages/cust-analysis.html similarity index 100% rename from pages/cust-analysis.html rename to Tenant-Admin-UI-Prototype/pages/cust-analysis.html diff --git a/pages/cust-list.html b/Tenant-Admin-UI-Prototype/pages/cust-list.html similarity index 100% rename from pages/cust-list.html rename to Tenant-Admin-UI-Prototype/pages/cust-list.html diff --git a/pages/cust-profile.html b/Tenant-Admin-UI-Prototype/pages/cust-profile.html similarity index 100% rename from pages/cust-profile.html rename to Tenant-Admin-UI-Prototype/pages/cust-profile.html diff --git a/pages/dashboard.html b/Tenant-Admin-UI-Prototype/pages/dashboard.html similarity index 100% rename from pages/dashboard.html rename to Tenant-Admin-UI-Prototype/pages/dashboard.html diff --git a/pages/fin-cost.html b/Tenant-Admin-UI-Prototype/pages/fin-cost.html similarity index 100% rename from pages/fin-cost.html rename to Tenant-Admin-UI-Prototype/pages/fin-cost.html diff --git a/pages/fin-invoice.html b/Tenant-Admin-UI-Prototype/pages/fin-invoice.html similarity index 100% rename from pages/fin-invoice.html rename to Tenant-Admin-UI-Prototype/pages/fin-invoice.html diff --git a/pages/fin-overview.html b/Tenant-Admin-UI-Prototype/pages/fin-overview.html similarity index 100% rename from pages/fin-overview.html rename to Tenant-Admin-UI-Prototype/pages/fin-overview.html diff --git a/pages/fin-reports.html b/Tenant-Admin-UI-Prototype/pages/fin-reports.html similarity index 100% rename from pages/fin-reports.html rename to Tenant-Admin-UI-Prototype/pages/fin-reports.html diff --git a/pages/fin-settlement.html b/Tenant-Admin-UI-Prototype/pages/fin-settlement.html similarity index 100% rename from pages/fin-settlement.html rename to Tenant-Admin-UI-Prototype/pages/fin-settlement.html diff --git a/pages/fin-transactions.html b/Tenant-Admin-UI-Prototype/pages/fin-transactions.html similarity index 100% rename from pages/fin-transactions.html rename to Tenant-Admin-UI-Prototype/pages/fin-transactions.html diff --git a/pages/help-center.html b/Tenant-Admin-UI-Prototype/pages/help-center.html similarity index 100% rename from pages/help-center.html rename to Tenant-Admin-UI-Prototype/pages/help-center.html diff --git a/pages/inv-expiry.html b/Tenant-Admin-UI-Prototype/pages/inv-expiry.html similarity index 100% rename from pages/inv-expiry.html rename to Tenant-Admin-UI-Prototype/pages/inv-expiry.html diff --git a/pages/inv-inout.html b/Tenant-Admin-UI-Prototype/pages/inv-inout.html similarity index 100% rename from pages/inv-inout.html rename to Tenant-Admin-UI-Prototype/pages/inv-inout.html diff --git a/pages/inv-overview.html b/Tenant-Admin-UI-Prototype/pages/inv-overview.html similarity index 100% rename from pages/inv-overview.html rename to Tenant-Admin-UI-Prototype/pages/inv-overview.html diff --git a/pages/inv-purchase.html b/Tenant-Admin-UI-Prototype/pages/inv-purchase.html similarity index 100% rename from pages/inv-purchase.html rename to Tenant-Admin-UI-Prototype/pages/inv-purchase.html diff --git a/pages/inv-soldout.html b/Tenant-Admin-UI-Prototype/pages/inv-soldout.html similarity index 100% rename from pages/inv-soldout.html rename to Tenant-Admin-UI-Prototype/pages/inv-soldout.html diff --git a/pages/mbr-customers.html b/Tenant-Admin-UI-Prototype/pages/mbr-customers.html similarity index 100% rename from pages/mbr-customers.html rename to Tenant-Admin-UI-Prototype/pages/mbr-customers.html diff --git a/pages/mbr-members.html b/Tenant-Admin-UI-Prototype/pages/mbr-members.html similarity index 100% rename from pages/mbr-members.html rename to Tenant-Admin-UI-Prototype/pages/mbr-members.html diff --git a/pages/mbr-messaging.html b/Tenant-Admin-UI-Prototype/pages/mbr-messaging.html similarity index 100% rename from pages/mbr-messaging.html rename to Tenant-Admin-UI-Prototype/pages/mbr-messaging.html diff --git a/pages/mbr-points.html b/Tenant-Admin-UI-Prototype/pages/mbr-points.html similarity index 100% rename from pages/mbr-points.html rename to Tenant-Admin-UI-Prototype/pages/mbr-points.html diff --git a/pages/mbr-prepaid.html b/Tenant-Admin-UI-Prototype/pages/mbr-prepaid.html similarity index 100% rename from pages/mbr-prepaid.html rename to Tenant-Admin-UI-Prototype/pages/mbr-prepaid.html diff --git a/pages/mkt-calendar.html b/Tenant-Admin-UI-Prototype/pages/mkt-calendar.html similarity index 100% rename from pages/mkt-calendar.html rename to Tenant-Admin-UI-Prototype/pages/mkt-calendar.html diff --git a/pages/mkt-coupon.html b/Tenant-Admin-UI-Prototype/pages/mkt-coupon.html similarity index 100% rename from pages/mkt-coupon.html rename to Tenant-Admin-UI-Prototype/pages/mkt-coupon.html diff --git a/pages/mkt-flash-sale.html b/Tenant-Admin-UI-Prototype/pages/mkt-flash-sale.html similarity index 100% rename from pages/mkt-flash-sale.html rename to Tenant-Admin-UI-Prototype/pages/mkt-flash-sale.html diff --git a/pages/mkt-new-customer.html b/Tenant-Admin-UI-Prototype/pages/mkt-new-customer.html similarity index 100% rename from pages/mkt-new-customer.html rename to Tenant-Admin-UI-Prototype/pages/mkt-new-customer.html diff --git a/pages/mkt-pass-card.html b/Tenant-Admin-UI-Prototype/pages/mkt-pass-card.html similarity index 100% rename from pages/mkt-pass-card.html rename to Tenant-Admin-UI-Prototype/pages/mkt-pass-card.html diff --git a/pages/mkt-reduction.html b/Tenant-Admin-UI-Prototype/pages/mkt-reduction.html similarity index 100% rename from pages/mkt-reduction.html rename to Tenant-Admin-UI-Prototype/pages/mkt-reduction.html diff --git a/pages/mkt-seckill.html b/Tenant-Admin-UI-Prototype/pages/mkt-seckill.html similarity index 100% rename from pages/mkt-seckill.html rename to Tenant-Admin-UI-Prototype/pages/mkt-seckill.html diff --git a/pages/msg-center.html b/Tenant-Admin-UI-Prototype/pages/msg-center.html similarity index 100% rename from pages/msg-center.html rename to Tenant-Admin-UI-Prototype/pages/msg-center.html diff --git a/pages/my-profile.html b/Tenant-Admin-UI-Prototype/pages/my-profile.html similarity index 100% rename from pages/my-profile.html rename to Tenant-Admin-UI-Prototype/pages/my-profile.html diff --git a/pages/order-board.html b/Tenant-Admin-UI-Prototype/pages/order-board.html similarity index 100% rename from pages/order-board.html rename to Tenant-Admin-UI-Prototype/pages/order-board.html diff --git a/pages/order-list.html b/Tenant-Admin-UI-Prototype/pages/order-list.html similarity index 100% rename from pages/order-list.html rename to Tenant-Admin-UI-Prototype/pages/order-list.html diff --git a/pages/order-refund.html b/Tenant-Admin-UI-Prototype/pages/order-refund.html similarity index 100% rename from pages/order-refund.html rename to Tenant-Admin-UI-Prototype/pages/order-refund.html diff --git a/pages/order-settings.html b/Tenant-Admin-UI-Prototype/pages/order-settings.html similarity index 100% rename from pages/order-settings.html rename to Tenant-Admin-UI-Prototype/pages/order-settings.html diff --git a/pages/product-addons.html b/Tenant-Admin-UI-Prototype/pages/product-addons.html similarity index 100% rename from pages/product-addons.html rename to Tenant-Admin-UI-Prototype/pages/product-addons.html diff --git a/pages/product-batch.html b/Tenant-Admin-UI-Prototype/pages/product-batch.html similarity index 100% rename from pages/product-batch.html rename to Tenant-Admin-UI-Prototype/pages/product-batch.html diff --git a/pages/product-category.html b/Tenant-Admin-UI-Prototype/pages/product-category.html similarity index 100% rename from pages/product-category.html rename to Tenant-Admin-UI-Prototype/pages/product-category.html diff --git a/pages/product-combos.html b/Tenant-Admin-UI-Prototype/pages/product-combos.html similarity index 100% rename from pages/product-combos.html rename to Tenant-Admin-UI-Prototype/pages/product-combos.html diff --git a/pages/product-detail.html b/Tenant-Admin-UI-Prototype/pages/product-detail.html similarity index 100% rename from pages/product-detail.html rename to Tenant-Admin-UI-Prototype/pages/product-detail.html diff --git a/pages/product-labels.html b/Tenant-Admin-UI-Prototype/pages/product-labels.html similarity index 100% rename from pages/product-labels.html rename to Tenant-Admin-UI-Prototype/pages/product-labels.html diff --git a/pages/product-list.html b/Tenant-Admin-UI-Prototype/pages/product-list.html similarity index 100% rename from pages/product-list.html rename to Tenant-Admin-UI-Prototype/pages/product-list.html diff --git a/pages/product-schedule.html b/Tenant-Admin-UI-Prototype/pages/product-schedule.html similarity index 100% rename from pages/product-schedule.html rename to Tenant-Admin-UI-Prototype/pages/product-schedule.html diff --git a/pages/product-specs.html b/Tenant-Admin-UI-Prototype/pages/product-specs.html similarity index 100% rename from pages/product-specs.html rename to Tenant-Admin-UI-Prototype/pages/product-specs.html diff --git a/pages/reviews.html b/Tenant-Admin-UI-Prototype/pages/reviews.html similarity index 100% rename from pages/reviews.html rename to Tenant-Admin-UI-Prototype/pages/reviews.html diff --git a/pages/stat-customer.html b/Tenant-Admin-UI-Prototype/pages/stat-customer.html similarity index 100% rename from pages/stat-customer.html rename to Tenant-Admin-UI-Prototype/pages/stat-customer.html diff --git a/pages/stat-marketing.html b/Tenant-Admin-UI-Prototype/pages/stat-marketing.html similarity index 100% rename from pages/stat-marketing.html rename to Tenant-Admin-UI-Prototype/pages/stat-marketing.html diff --git a/pages/stat-order.html b/Tenant-Admin-UI-Prototype/pages/stat-order.html similarity index 100% rename from pages/stat-order.html rename to Tenant-Admin-UI-Prototype/pages/stat-order.html diff --git a/pages/stat-product.html b/Tenant-Admin-UI-Prototype/pages/stat-product.html similarity index 100% rename from pages/stat-product.html rename to Tenant-Admin-UI-Prototype/pages/stat-product.html diff --git a/pages/store-delivery.html b/Tenant-Admin-UI-Prototype/pages/store-delivery.html similarity index 100% rename from pages/store-delivery.html rename to Tenant-Admin-UI-Prototype/pages/store-delivery.html diff --git a/pages/store-dinein.html b/Tenant-Admin-UI-Prototype/pages/store-dinein.html similarity index 100% rename from pages/store-dinein.html rename to Tenant-Admin-UI-Prototype/pages/store-dinein.html diff --git a/pages/store-fees.html b/Tenant-Admin-UI-Prototype/pages/store-fees.html similarity index 100% rename from pages/store-fees.html rename to Tenant-Admin-UI-Prototype/pages/store-fees.html diff --git a/pages/store-hours.html b/Tenant-Admin-UI-Prototype/pages/store-hours.html similarity index 100% rename from pages/store-hours.html rename to Tenant-Admin-UI-Prototype/pages/store-hours.html diff --git a/pages/store-list.html b/Tenant-Admin-UI-Prototype/pages/store-list.html similarity index 100% rename from pages/store-list.html rename to Tenant-Admin-UI-Prototype/pages/store-list.html diff --git a/pages/store-pickup.html b/Tenant-Admin-UI-Prototype/pages/store-pickup.html similarity index 100% rename from pages/store-pickup.html rename to Tenant-Admin-UI-Prototype/pages/store-pickup.html diff --git a/pages/store-qualifications.html b/Tenant-Admin-UI-Prototype/pages/store-qualifications.html similarity index 100% rename from pages/store-qualifications.html rename to Tenant-Admin-UI-Prototype/pages/store-qualifications.html diff --git a/pages/store-staff.html b/Tenant-Admin-UI-Prototype/pages/store-staff.html similarity index 100% rename from pages/store-staff.html rename to Tenant-Admin-UI-Prototype/pages/store-staff.html diff --git a/pages/sys-basic.html b/Tenant-Admin-UI-Prototype/pages/sys-basic.html similarity index 100% rename from pages/sys-basic.html rename to Tenant-Admin-UI-Prototype/pages/sys-basic.html diff --git a/pages/sys-billing.html b/Tenant-Admin-UI-Prototype/pages/sys-billing.html similarity index 100% rename from pages/sys-billing.html rename to Tenant-Admin-UI-Prototype/pages/sys-billing.html diff --git a/pages/sys-logs.html b/Tenant-Admin-UI-Prototype/pages/sys-logs.html similarity index 100% rename from pages/sys-logs.html rename to Tenant-Admin-UI-Prototype/pages/sys-logs.html diff --git a/pages/sys-notify.html b/Tenant-Admin-UI-Prototype/pages/sys-notify.html similarity index 100% rename from pages/sys-notify.html rename to Tenant-Admin-UI-Prototype/pages/sys-notify.html diff --git a/pages/sys-payment.html b/Tenant-Admin-UI-Prototype/pages/sys-payment.html similarity index 100% rename from pages/sys-payment.html rename to Tenant-Admin-UI-Prototype/pages/sys-payment.html diff --git a/pages/sys-plan.html b/Tenant-Admin-UI-Prototype/pages/sys-plan.html similarity index 100% rename from pages/sys-plan.html rename to Tenant-Admin-UI-Prototype/pages/sys-plan.html diff --git a/pages/sys-printer.html b/Tenant-Admin-UI-Prototype/pages/sys-printer.html similarity index 100% rename from pages/sys-printer.html rename to Tenant-Admin-UI-Prototype/pages/sys-printer.html diff --git a/pages/sys-roles.html b/Tenant-Admin-UI-Prototype/pages/sys-roles.html similarity index 100% rename from pages/sys-roles.html rename to Tenant-Admin-UI-Prototype/pages/sys-roles.html diff --git a/pages/sys-subaccount.html b/Tenant-Admin-UI-Prototype/pages/sys-subaccount.html similarity index 100% rename from pages/sys-subaccount.html rename to Tenant-Admin-UI-Prototype/pages/sys-subaccount.html diff --git a/pages/sys-upgrade.html b/Tenant-Admin-UI-Prototype/pages/sys-upgrade.html similarity index 100% rename from pages/sys-upgrade.html rename to Tenant-Admin-UI-Prototype/pages/sys-upgrade.html