From a183fe594408bd1293618c53561ccb5167c44a6e Mon Sep 17 00:00:00 2001 From: Xin Wang Date: Thu, 17 Sep 2026 02:14:56 +0800 Subject: [PATCH] Restructure local-evidence manuscript and record analysis controls --- PROJECT_CONTEXT.md | 19 + docs/README.md | 2 + ...ence_analysis_experiment_log_2026-09-17.md | 199 ++++ ...ipt_local_evidence_structure_2026-09-17.md | 109 ++ ...peaker_floor_experiment_plan_2026-08-30.md | 12 + manuscript/main/README.md | 46 + manuscript/main/REVIEWER_CHECKLIST.md | 41 + manuscript/main/annotation_protocol_notes.tex | 196 ++++ .../main/figures/method_architecture.pdf | Bin 84405 -> 17834 bytes .../main/figures/method_architecture.tex | 151 ++- manuscript/main/main.tex | 976 ++++++------------ 11 files changed, 1009 insertions(+), 742 deletions(-) create mode 100644 docs/local_evidence_analysis_experiment_log_2026-09-17.md create mode 100644 docs/manuscript_local_evidence_structure_2026-09-17.md create mode 100644 manuscript/main/annotation_protocol_notes.tex diff --git a/PROJECT_CONTEXT.md b/PROJECT_CONTEXT.md index 459c8e1..5593fd4 100644 --- a/PROJECT_CONTEXT.md +++ b/PROJECT_CONTEXT.md @@ -20,6 +20,7 @@ recall, without hurting addressed responses or yield behavior. | Need | Authoritative file | |---|---| +| Current four-page manuscript structure and narrowed claim scope (2026-09-17) | [docs/manuscript_local_evidence_structure_2026-09-17.md](docs/manuscript_local_evidence_structure_2026-09-17.md) | | ICASSP submission story, pruning and acceptance evidence bar | [docs/icassp2027_acceptance_storyline_2026-09-10.md](docs/icassp2027_acceptance_storyline_2026-09-10.md) | | Current paper thesis and claim boundary | [docs/global_local_omni_paper_position_2026-09-07.md](docs/global_local_omni_paper_position_2026-09-07.md) | | Progressive feature-fusion implementation route | [docs/progressive_feature_fusion_route_2026-09-02.md](docs/progressive_feature_fusion_route_2026-09-02.md) | @@ -34,6 +35,24 @@ When files disagree, prefer the newest scoped document and verify behavior in code/tests. A planned experiment is not an implemented feature or a measured result. +The 2026-09-17 manuscript restructure uses causal local evidence adaptation +as its umbrella: model architecture (actual G + recent 1-s Qwen audio, +optional pooled vision) and streaming inference architecture (8-s maximum +presentation budget, completed blocks, temporary observed tail). Semantic +opportunity evaluation is deferred while annotation quality is audited; +dense forecasting and raw endpoint onset/offset AP remain the current paper +scope. This does not complete P0 or establish a visual/tail-performance gain. +Earlier person-grounded/semantic strategy documents remain conditional +extensions and historical records, not descriptions of the default draft. + +The scoped [analysis experiment log](docs/local_evidence_analysis_experiment_log_2026-09-17.md) +queues local-evidence controls, tail-refresh x local-audio comparisons, context +caps, persistence, activity-error cases, full-pipeline profiling, and paired +Qwen Omni 3B/7B--MiniCPM-o 4.5 backbone-transfer controls. Transfer fixes the +local audio sidecar and audits readout, refresh, and actual history; the +MiniCPM entry point is not GPU-verified or an established matched 8-s cap. +All are pending in that log; Omni LoRA is deferred and no semantic gate is completed. + ## Current state ### Verified assets diff --git a/docs/README.md b/docs/README.md index e9d38dc..fe73777 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,6 +7,8 @@ implemented or validated. | Document | Role | |---|---| +| [manuscript_local_evidence_structure_2026-09-17.md](manuscript_local_evidence_structure_2026-09-17.md) | Current narrowed four-page manuscript scope; supersedes older semantic/person-grounded descriptions for the default draft | +| [local_evidence_analysis_experiment_log_2026-09-17.md](local_evidence_analysis_experiment_log_2026-09-17.md) | Pending local evidence, tail/audio, context, cross-backbone transfer, persistence, error and efficiency controls; Omni LoRA deferred | | [icassp2027_acceptance_storyline_2026-09-10.md](icassp2027_acceptance_storyline_2026-09-10.md) | Submission-focused paper story, evidence bar, pruning decisions and go/no-go criteria | | [global_local_omni_paper_position_2026-09-07.md](global_local_omni_paper_position_2026-09-07.md) | Evidence-backed paper thesis after the causal oracle information screen | | [progressive_feature_fusion_route_2026-09-02.md](progressive_feature_fusion_route_2026-09-02.md) | Gated route from pooled local evidence to Frame-set Attention, temporal person memory and Thinker adapters | diff --git a/docs/local_evidence_analysis_experiment_log_2026-09-17.md b/docs/local_evidence_analysis_experiment_log_2026-09-17.md new file mode 100644 index 0000000..55aef7a --- /dev/null +++ b/docs/local_evidence_analysis_experiment_log_2026-09-17.md @@ -0,0 +1,199 @@ +# Local evidence analysis:待做实验日志 + +日期:2026-09-17。状态:**设计已记录,以下实验均未在本轮执行**。 +只修改日志与手稿占位,不新增训练、提取或 evaluator 实现;未产生新的实测结果。 +当前稿件边界见 [四页稿结构决策](manuscript_local_evidence_structure_2026-09-17.md)。 + +## 本轮决定与篇幅 + +正文按 Main Comparison、Local Evidence Analysis、Streaming and Context Analysis、 +Error and Qualitative Analysis 展开,不把六类实验并列成六个小节。 +近期音频是核心,视觉是可选增量;Omni LoRA 暂缓,不预留独立小节。 +MiniROADA stage-two continuation 不是 Omni LoRA,也不替代其适配对照。 +同日追加:Qwen2.5-Omni 3B/7B 与 MiniCPM-o 4.5 的 backbone transfer 对照, +用于检验 local evidence 增量是否依赖单一骨干,不新增独立贡献或正文大节。 + +四页技术内容内优先保留:一张方法图、一张主表、一张 compact controls 表, +一张包含错误/失败案例的定性图。Detailed recipe、全部窗口/相位曲线和错误切片 +存入实验记录;正文仅选择事先指定、能回答核心假设的摘要,不按测试涨点挑选。 +结果解释文字将替换 TODO,而不是在当前四页基础上无限追加。 + +## 固定研究契约 + +- EasyCom Sessions 4--12 训练,1--3 测试;5 Hz,10 个 0.2--2.0 s horizon; + 固定 background / wearer / others 顺序和原 dense labels。 +- 新 recipe、窗口、干预延迟、场景规则和 case-selection rule 仅用训练侧确定。 + 最终沿用固定四 epoch 协议;若需改变,先记录训练侧依据与新协议版本。 +- 正式矩阵 seeds 0/1/2;记录 split、parent/checkpoint hash、运行 commit、 + feature/model/processor revision、优化器、有效学习参数、预算和 common valid pairs。 +- Training-side development 必须重建未见该 fold 的 task parent;已经用全部训练 + sessions 训练过的 parent 不能把 Session 12 宣称为 continuation 的 held-out dev。 +- Sessions 1--3 已多次被查看,后续对照如实标为 exploratory;新增 seeds 不恢复 + 独立 confirmatory test,也不把帧或十个相关 horizon 当作独立重复。 +- Dense:逐 horizon 三类 AP / mAP、wearer AP、十-horizon mean。 + Raw:source wearer OFF/ON 条件下,分别以 p(wearer)/1-p(wearer) 预测未来 endpoint。 + 报告 AP、prevalence、分母和每个 session;GT current activity 只用于评测切片。 +- 这些是 endpoint anticipation,不是 one-event-one-vote onset/offset detection。 + P0 真实数据审计仍未完成;semantic opportunity-v1 AP 已 superseded,不能复用为新证据。 + +## 实验队列:全部 pending + +| ID | 待做对照 / 审计 | 回答的问题 | 手稿位置 | +|---|---|---|---| +| E0 | 核验原始 pred/valid/target、sidecar 和 checkpoint provenance;打印代表性时间轴 | 是否比较了相同物理时间与有效样本? | Setup / 主表说明 | +| L1 | 同 recipe、seed 和 cutoff 的 A、G、G+A、G+A+V | 音频与全局 context 是否互补?V 是否提供额外收益? | 主表 + Local Evidence | +| L2 | 宽 global-only head,尽可能匹配 G+A 的有效学习参数;统一下游 hidden width 并报告 allocated/active 参数 | 收益是否仅来自更大 head? | Local Evidence TODO | +| L3 | 固定 checkpoint 的 past-delayed A / V,保留对应时间与 mask 审计 | 模型是否依赖及时局部证据? | Local Evidence TODO | +| L4 | 因果 current-activity classifier,当前预测概率重复至十个 horizon | Dense 收益是否主要是更好的当前状态识别? | Main Comparison TODO | +| T1 | 8-s cap 下 tail refresh × local A 的四组训练对照 | 两条最新证据路径互补,还是冗余? | Streaming 表上半部 | +| T2 | 同 block decomposition 从头 replay、future-only media intervention、cache reset;按十档 phase 分层 | cache 正确性与 tail-length dependence 是否成立? | Streaming TODO | +| C1 | 4/8/16-s cap 的 tail-aware G+A;按 cap 重提取并分别训练 | 历史长度是否影响主方法,8 s 是否是合理折中? | Streaming 表下半部 | +| C2 | 仅当要声称 local 分支缓解窗口敏感性时,在各 cap 增加 G 对照 | 窗口能否替代近期证据?融合是否对 cap 更稳定? | 条件追加,不新增正文小节 | +| B0 | 审计各骨干的 causal readout、维度、刷新与实际历史范围;先短片 GPU smoke | 跨骨干样本和接口是否可比? | Setup / Backbone transfer 说明 | +| B1 | Qwen2.5-Omni 3B/7B 各跑 G 与 G+A,保持同一份 local A | 增量是否在同系列不同规模下保留? | Local Evidence + compact 表末三行 | +| B2 | MiniCPM-o 4.5 各跑 G 与 G+A;匹配 Qwen refresh 对照后报告增量 | 增量能否迁移到另一 Omni 家族? | Local Evidence + compact 表末三行 | +| H1 | 预定义 activity 场景切片、正负计数、score/AP;纯负类只报告 distribution 或 calibrated FPR | 哪些可复核的活动场景仍混淆? | Error TODO | +| Q1 | 固定规则选择 raw onset、offset、hard-negative/shared failure 的同-horizon 时间轴 | 定量差异对应什么可观察错误? | 定性图空位 | +| S1 | 同硬件完整流水线 P50/P95 latency、吞吐、峰值显存;记录阶段分项与 block-transition cost | 逻辑 5 Hz 是否可实测在线运行,代价是什么? | Streaming TODO | + +L1 的 A 是近期 1 s,G 是有历史的 integrated AV state。即使 recipe 和 head family +一致,也不能把 A/G 的差异纯粹归给 Thinker、语言推理或长时记忆;L2/C1 是必要限制性 +对照。闲置占位权重不能充当有效学习容量匹配。 + +L3 只使用过去输入,不能拿未来帧、双向平滑或 nearest-future 对齐作为合法干预。 +mask-only/availability 对照在缺失率与标签明显相关时追加,不先假定模型确有此 shortcut。 +局部视觉采用逐人平均,person-slot permutation 应不改变结果;不能把排列不变当成 +成功的 wrong-person grounding control。 + +## T1 四组及解释规则 + +| Omni refresh | local A off | local A on,固定 1 s / 5 Hz | +|---|---|---| +| Completed-only / 2-s update-and-hold | T1-C-G | T1-C-GA | +| Observed-tail / 200-ms refresh | T1-T-G | T1-T-GA | + +四组共同固定:source-aligned 2-s blocks、8-s maximum budget、readout/head family、 +训练暴露、目标、seed、common startup treatment 与 valid source--horizon pairs。 +各组单独训练匹配的 head,不把单纯在 test masking 的 OOD 差异写成消融收益。 + +分别记录 tail 在 A off/on 下的 AP delta、A 在两种 refresh 下的 AP delta; +四组差值之差仅作为描述性交互量,AP 非线性且帧间相关,不直接推出统计独立或机制定论。 +completed-only 未得到首个 state 的行在全部条件中统一处理并报告,不未来回填。 +因 phase 不同,历史 span 随当前块位置变化;对齐同一 cutoff/phase 并保存实际范围。 + +`tail_embedding` 是辅助 preserved-EgoSpeak residual 的 block-phase 编码,不是 tail +内容。其 on/off 只能是该辅助架构内的独立可选实验,不能替代 T1。 +同分块 replay 的数值一致性与当前尾块带来的预测收益分开报告;continuous-prefix +编码属于不同 representation condition,不作为必然数值等价的参照。 + +## 窗口与运行代价 + +C1 中 local A/V 固定 1 s,Omni cap 为预先指定的 4/8/16 s。各 cap 的 global state +必须从对应因果输入提取,不能通过裁剪缓存向量伪造窗口。8-s cap 行与 T1-T-GA +复用同一个确切 run,不重复训练后择优填写两处。 +固定 checkpoint 改 cap 若执行,单独标成 distribution-shift sensitivity;不能混入 +分别训练的主比较。C2 在没有执行前,不声称融合已降低对长 context 的依赖。 + +S1 计时包括视频读取/裁切、模态编码、尾块重算、cache/history rebuild、local evidence +和 head,不以缓存特征上的 head FPS 代替系统 FPS。固定硬件/dtype,预热、GPU 同步, +采样非边界与 block transition cutoff;记录是否含 I/O、并发/batching 和延迟积压。 +没有完整测量前只能称 5-Hz logical output,不称已验证 real-time。 + +## Backbone transfer:同日追加,全部 pending + +模型标识核对自官方模型卡: +[Qwen2.5-Omni-3B](https://huggingface.co/Qwen/Qwen2.5-Omni-3B)、 +[Qwen2.5-Omni-7B](https://huggingface.co/Qwen/Qwen2.5-Omni-7B)、 +[MiniCPM-o-4_5](https://huggingface.co/openbmb/MiniCPM-o-4_5)。 +本轮没有提取新特征、训练这些配对或验证跨骨干性能。 + +| 骨干 | Global-only | Global + local audio | 主要解释 | +|---|---|---|---| +| Qwen2.5-Omni-3B | B1-3-G | B1-3-GA | 主体参考;协议完全一致时复用 L1/T1 的确切 run | +| Qwen2.5-Omni-7B | B1-7-G | B1-7-GA | 同家族规模对照,不等于仅改变参数量的因果实验 | +| MiniCPM-o 4.5 | B2-M-G | B2-M-GA | 跨家族迁移;先过 B0,不能与未匹配 Qwen 原分数直接排名 | + +主迁移矩阵固定现有同一份 causal 1-s / 5-Hz Qwen local audio sidecar、mask 和 +下游 head family,只更换 global backbone。不能同时把 A 换成该模型自己的 encoder, +否则无法区分 global backbone 与 local encoder 的贡献。若后续试 native local A, +另设第二层实验,不混入主迁移矩阵;V 在音频配对完成后再作可选扩展。 + +每个骨干都分别训练 G/GA,固定训练暴露与预先锁定的 recipe,记录参数与逐 seed delta。 +完整记录保留绝对 M/W/On/Off、每-session/count;正文三行只摘要 +`Delta(G+A - G)` 的四项 AP/mAP 百分点增量。不只呈现涨点骨干。 +跨模型 head 不能直接复用权重;不同 hidden dimensions 用明确适配的投影,报告有效参数, +不能静默 padding 或截断。Qwen 当前 last-four-layer readout 与 MiniCPM 当前 final +normalized state 不同;B0 需冻结共同可实现的 readout 控制或明确标成接口差异, +不能把默认导出方式不一致解释成纯骨干效果。 + +B0 固定并审计相同 split/目标、physical cutoffs、模态可用性、输入采样、刷新频率、 +startup/common valid pairs、history 范围、readout 和下游训练预算;保存实际范围、 +source times、processor/model/code revision 与完整 latency/memory。 +同样称“8 s”或“5 Hz”不代表相同可见历史或相同 state freshness。 +不同预训练、编码器和 tokenization 仍有差异,因此配对增量是适配可迁移性的证据, +不是纯架构排名,也不预设 7B 更好或大模型不需要 local A。 + +MiniCPM 的现有状态见 [提取与验证说明](minicpmo_streaming_features.md): +`native-1hz-hold` 与 `cached-partial-5hz` 已有入口,但均缺真实 GPU smoke 证据。 +原生 one-second commits 保留其 streaming-window policy;当前入口没有与 Qwen +物理 8-s budget 等价的已验证 cap。不能仅把原生缓存写成“8-s matched”。 + +- 先做 native 1-Hz hold G/GA pilot;必须另做 Qwen **1-Hz** update-and-hold G/GA, + 对齐 one-second chunk boundaries、初始化与 source-age。T1 的 2-s hold 不能替代。 + 若 history 范围暂无法匹配,仅报告各自协议内增量为 scoped exploratory transfer, + 不放进 matched 跨骨干摘要,不声称同预算的绝对性能排名。 +- 主体采用 5-Hz observed-tail 时,MiniCPM 行仅在 boundary/同分块 clean replay、 + snapshot restoration、future-only media tests 与实际 history 审计通过后准入。 + `--allow-unverified-partial-tail` 产物不能进入论文训练;失败记 pending/unsupported, + 不填 0 AP,也不拿 1-Hz 行顶替 5-Hz matched 行。 +- Qwen 7B 也需独立 causal smoke、维度/显存检查和匹配提取;旧的不同窗口特征不能 + 因模型名相同就视为本矩阵已完成。每种 refresh 分层报告,不混合平均。 + +执行优先级:主 3B 归因矩阵先完成,再做 7B 配对;MiniCPM 先 B0/native pilot, +验证与可比性门槛通过后补正式配对。若跨骨干只验证了 local audio 的增量, +不能进一步声称同一 tail 算法或视觉收益已普遍迁移。 + +## Hard negative 与定性分析规则 + +先用 participant timing facts 冻结切片,例如同 other 的 pause/resume、other-to-other +切换、overlap;场景命名不直接赋予 semantic floor ownership。 +positive/negative 仍由该 family/horizon 的原 dense endpoint 定义决定,不用 LLM verdict +强行覆盖。wearer backchannel 可以是 raw onset positive;other backchannel 是否是 +raw offset negative,取决于 wearer 在未来 endpoint 是否仍在讲话。 + +H1 保存每种 scene × family × horizon 的 Npositive/Nnegative、duration、invalid counts、 +分数分布;两类都存在时报告 AP/prevalence。纯负类 AP 记为 undefined,不记成 0; +若报告 FPR,阈值只在训练侧 calibration 选择,并同时给 matched-recall 结果与实际召回。 +原 semantic-v1 ENTRY/INT AP 不再使用;v2 真实数据与人工审核后才能恢复 semantic panel。 + +Q1 用训练侧固定的 case-selection/horizon 规则选择病例并保留失败案例。将预测定位到 +其未来 target time,同时标出实际 causal source cutoff;同一 horizon 比较 EgoSpeak、G、 +G+A,V 仅在实际跑完时加入。不能将十个 horizon 的最大值包络或未来平滑曲线与当前 GT +直接拼接。转写/participant annotations 只作为分析可视化,不回流为模型输入。 + +## 下一步顺序与交付 + +1. E0 / training-side recipe freeze,然后 L1/L2;复用已提取特征,先补最小归因证据。 +2. T1/T2,再执行 C1 和 S1;每个新提取路径先做单 session / 短片因果 smoke。 +3. L4 与 L3;若要窗口稳定性 claim,补 C2,而不仅看 G+A 窗口曲线。 +4. H1/Q1 与前述结果配套;语义审核与 v2 audit 独立保留,不因数值好坏决定是否审核。 +5. B0/B1/B2:7B 配对与 MiniCPM native pilot 可在核心冻结后推进;准入后补迁移摘要。 +6. LoRA 留作后续可选替代适配对照,不是本轮执行要求。 + +实际运行后放入 `results/__/`,至少 README、summary.json 或 +metrics.csv,保留 provenance 与协议。正文替换 TODO/--,不要把 pending 改名为 measured。 +阴性视觉、尾块或窗口结果均如实保留;三种子与逐 session 结果不等于足够的显著性证据。 + +手稿占位:[main.tex](../manuscript/main/main.tex),主表 `tab:main`、compact controls 表 +`tab:ablation`、错误/定性图 `fig:qualitative_floor_events`。本轮没有启动 GPU 训练。 + +## 本轮文稿检查 + +本机 Tectonic 编译后的预览共四页(含参考文献);方法仍只有一条展示公式。 +相对链接、TeX/bib 引用和 `git diff --check` 通过。四页及新表/图空位完成渲染检查, +没有 overfull 警告或可见重叠/裁切。现有 XeTeX/旧模板字体替代和 underfull 警告仍在, +这是 working preview,不是官方工具链的最终字体/篇幅验证。填入数值与分析后重新检查。 +本轮没有修改 feature/label/evaluator/训练代码,没有将任何 pending 实验标为完成。 +同日追加 backbone-transfer 短段和三行增量空位后重新编译、渲染检查全部四页, +仍为四页含参考文献;链接、TeX/bib keys、单展示公式与 `git diff --check` 再次通过。 +未修改旧运行或宣称跨骨干提取/对照已完成。 diff --git a/docs/manuscript_local_evidence_structure_2026-09-17.md b/docs/manuscript_local_evidence_structure_2026-09-17.md new file mode 100644 index 0000000..d4f430d --- /dev/null +++ b/docs/manuscript_local_evidence_structure_2026-09-17.md @@ -0,0 +1,109 @@ +# Local evidence adaptation:四页稿结构决策 + +日期:2026-09-17。状态:用户要求的内容重排,不是新模型实现或最终实验结论。 +本文更新当前稿件组织;此前战略记录保留其当时判断。 + +## 同日后续决定:分析与待做实验 + +按用户要求暂不展开 Omni LoRA。结果部分采用 Main Comparison、Local Evidence +Analysis、Streaming and Context Analysis、Error and Qualitative Analysis。 +详细队列、tail × local audio 四组、4/8/16-s context cap、persistence baseline、 +capacity/recency 控制及运行代价记录在 +[待做实验日志](local_evidence_analysis_experiment_log_2026-09-17.md);全部 pending, +不是新增实测结果,也没有启动训练或修改实现。正文保留数值表/图空位,先控制四页篇幅。 +Hard-negative/qualitative 合并;原始活动标签与语义负例不能混用,semantic audit 仍暂缓。 +同日追加 Qwen2.5-Omni 3B/7B 与 MiniCPM-o 4.5 的 backbone-transfer 配对。 +主骨干仍为 3B;各骨干 G→G+A 固定同一份 local A,并区分 refresh/history/readout +差异。细节与准入门槛放日志,正文仅 Local Evidence 短段和 compact 表三行增量空位, +不新增独立贡献或大节。MiniCPM 提取入口未 GPU 验证,native cache 不等于 8-s cap。 + +## 中心命题与三点贡献 + +以 **causal local evidence adaptation** 组织近期音频、可选局部视觉和当前尾块读取。 +两者不是相同表示:local A/V 显式暴露近期模态证据;tail handling 使全局 Thinker state +包含截止时刻已经观测到的当前块。不能把 tail 误写为另一条已提取的内容 embedding。 + +1. **模型适配框架**:不可见 wearer 的 global--local future-activity forecasting, + 用冻结 Omni context 与近期模态证据融合,而非宣称首次提出多人 turn-taking。 +2. **流式实现**:bounded context + committed history + temporary partial tail, + 每 200 ms 对齐同一物理 cutoff。普通 cache 本身不是新算法;预测收益与实测效率待验证。 +3. **受控分析**:分别报告 dense forecasting 与 endpoint onset/offset anticipation, + 通过匹配容量、输入和刷新规则的对照定位收益,不能预写已改善语义 floor control。 + +第三项目前是研究设计,不是已通过的机制结论。近期音频是核心,视觉是可选消融; +即使正确视觉没有增量,也可如实报告,不能让稿件依赖未验证的视觉收益。 + +## 四页技术内容预算 + +官方上限为四页技术内容(含图表),可选第五页仅参考文献, +见 [ICASSP 2027 author guidelines](https://2027.ieeeicassp.org/author-guidelines/) +和 [submission instructions](https://2027.ieeeicassp.org/paper-submission-instructions/)。 +篇幅符合要求不意味着工作必然被接收。 + +| 部分 | 建议预算 | 内容 | +|---|---:|---| +| Abstract + Introduction | 约 0.8 页 | 问题、相关工作、适配动机、三项贡献 | +| Method | 约 1.1 页 | 两个子节及一张模型/流式对齐图 | +| Experimental Setup | 约 0.6 页 | split、训练和两层 threshold-free 指标 | +| Results and Analysis | 约 1.3 页 | 主表、关键机制/尾块对照、限制 | +| Conclusion | 约 0.2 页 | 支持的窄结论 | + +方法仅保留一条融合/输出公式,不展开普通 attention、mask、loss 或 cache 公式。 +最终数值表和一条 horizon/phase 曲线优先于增加候选方法。 + +## 与当前代码对齐 + +- 主体:`easycom_head.py` 的 last-four-layer concat-MLP、256D local projection、 + validity-aware feature concatenation 与 10×3 forecast head。 +- 局部:`extract_turn_local_features.py` 的近期 1s Qwen audio valid-token mean; + 可选视觉为 2FPS crop spatial mean → equal-person mean → recent valid-frame mean。 +- 流式:`streaming_turn_model.py` 的 `OpenStreamReplayExtractor`, + 2s source blocks、最多 8s presentation budget、完成块 payload 复用、临时 tail/cache + 分支及单次完成块提交。稳态 span 为约 6.2--8s,不是每行精确 8s sliding crop。 +- preserved-EgoSpeak residual 和阶段二仅为辅助架构实验,不是默认正文方法。 +- `tail_embedding` 仅存在于 `egospeak_omni_residual.py`,编码十档 block phase; + 不能归入当前 G+A head,更不是 tail-content/未来 horizon embedding。 +- from-scratch replay 的正确性参照必须使用同一 block decomposition。 + continuously encoded prefix 是独立表示对照,不能直接声称数值等价。 + +## 评测与实验边界 + +Dense:逐 horizon 三类 AP 的 mAP,再平均十个 horizon。Raw onset/offset: +按 source wearer OFF/ON 条件化,分别用 p(wearer)/1-p(wearer) 判断 future endpoint。 +多个 source rows 可属于同一物理边界,不是 event detection 或 semantic ENTRY/YIELD。 +两类 AP 的 prevalence 不同,不直接比较其绝对值;比较方法时固定共同 valid pairs。 + +Opportunity-conditioned semantic evaluation 按用户决定暂缓。旧 annotation workload 和 +协议存于 [`annotation_protocol_notes.tex`](../manuscript/main/annotation_protocol_notes.tex), +不编入四页正文;历史数值仍在原 results/reports 记录中,不改成 human-reviewed。 +P0 真实数据审核未完成,不能据此宣称减少抢话、理解 takeover 或 addressee。 + +新超参数、窗口和 recipe 只用训练侧 folds 确定。父 checkpoint 已见过的 Session 12 +不能算其 continuation 的独立 dev。已反复查看的 Sessions 1--3 属 exploratory evidence, +新三种子只检验稳定性,不会自动恢复独立 confirmatory test 的性质。 + +最小对照:A/G/G+A;容量匹配;可选 V on/off;过去延迟的 local sensitivity; +completed-only versus observed-tail refresh(local A 固定 5Hz);block-phase 分层。 +跨骨干对照报告同骨干 G/GA 增量;1-Hz hold 需匹配 Qwen 1-Hz 控制,不能用 2-s hold +替代;5-Hz MiniCPM 行必须通过 tail/cache/因果及 history 可比性审计。 +在没有采样同一 cutoff 的 latency 和 memory 测量前,5Hz 是逻辑输出网格,不是实测 FPS。 + +## 稿件位置 + +- [`main.tex`](../manuscript/main/main.tex):重排正文,结果与机制结论仍显式 TODO。 +- [`method_architecture.tex`](../manuscript/main/figures/method_architecture.tex): + 模型与流式实现统一图,移除尚未测量的 25Hz MuVAP person-set 主结构。 +- [`README.md`](../manuscript/main/README.md):当前编译和 scope 说明。 +- [`REVIEWER_CHECKLIST.md`](../manuscript/main/REVIEWER_CHECKLIST.md):追加当前优先项, + 旧的 semantic/track 路线保留为条件分支,不是本轮硬性实验清单。 + +提交前还需最终 author kit、作者信息、全部 TODO、实验证据与 IEEE AI-assisted drafting +披露检查。本轮仅修改文稿和图,未修改模型、目标、特征契约或训练 CLI。 + +## 本轮文档验证 + +使用本机已提供的 Tectonic 和现有未改动的 `spconf` / `IEEEbib` 模板编译, +当前 working PDF 共四页(含参考文献);最终填入结果后须重新检查技术内容不超过四页。 +主方法仅一条展示公式。相对链接、TeX 引用和 bib keys 检查通过, +`git diff --check` 通过;方法图与所有 PDF 页完成渲染检查,并修复图中文字重叠和表格溢出。 +结果 TODO 是有意保留的研究门槛,当前 PDF 不是可直接提交的最终稿。 diff --git a/docs/omni_speaker_floor_experiment_plan_2026-08-30.md b/docs/omni_speaker_floor_experiment_plan_2026-08-30.md index c459bb0..1d96d88 100644 --- a/docs/omni_speaker_floor_experiment_plan_2026-08-30.md +++ b/docs/omni_speaker_floor_experiment_plan_2026-08-30.md @@ -1,5 +1,17 @@ # Omni 多人说话者理解与 wearer floor action:实验主线(2026-08-30) +## 2026-09-17 scoped analysis update + +用户当前先写窄化的 activity-anticipation 稿件;Omni LoRA 暂缓,不展开独立分析小节。 +局部 AV、tail refresh × local audio、context cap、activity hard-negative/qualitative +和运行代价,以及 Qwen Omni 3B/7B--MiniCPM-o 4.5 的 G/GA 配对迁移对照见 +[dated experiment log](local_evidence_analysis_experiment_log_2026-09-17.md)。 +下文保留历史 semantic/person-grounded gates;该更新没有完成 P0,没有实测新增结果, +也不授权以 raw endpoint AP 声称 semantic ENTRY/YIELD 或 addressee 理解。 +跨骨干固定同一 local A;未匹配 refresh/history/readout 或未验证的 MiniCPM tail +不能进 matched 摘要。此 scoped transfer 更新覆盖下文旧的仅 cache-diagnostic 限制, +但不把 MiniCPM 变成默认主方法,也不声称已验证通用增益。 + ## 1. 论文真正要回答的问题 本项目不再把“Qwen2.5-Omni 是否能替换 EgoSpeak 的 ResNet、wav2vec 和 diff --git a/manuscript/main/README.md b/manuscript/main/README.md index 72ff270..b96d675 100644 --- a/manuscript/main/README.md +++ b/manuscript/main/README.md @@ -1,5 +1,51 @@ # Main ICASSP manuscript +## Current structure (2026-09-17) + +The current draft uses **causal local evidence adaptation** as the single +umbrella for recent modality evidence and cutoff-aligned Omni tail access. +It supersedes the older scope description below; historical strategy docs +remain records of their dates. The new scoped decision is +[`../../docs/manuscript_local_evidence_structure_2026-09-17.md`](../../docs/manuscript_local_evidence_structure_2026-09-17.md). + +- Method has two subsections: **Model Architecture** (task, global/local + features, fusion and learning) and **Streaming Inference Architecture** + (8-s maximum context, completed-history reuse, temporary current tail, + cutoff alignment). Only one displayed fusion equation remains. +- The core is frozen Qwen Omni `G` + recent 1-s Qwen audio `A`; pooled + person vision is optional, not an established performance contribution. +- The three contributions cover global--local adaptation, its partial-tail + streaming realization, and controlled dense versus onset/offset analysis. + Caching alone is not claimed as a new algorithm; mechanism gains await + matched controls. +- The method figure now depicts that actual core rather than an unmeasured + 25-Hz MuVAP person-attention branch. Preserved-EgoSpeak residual fusion and + its block-phase embedding are auxiliary controls, not the default head. +- Semantic opportunity evaluation is deferred during annotation auditing. + Its historical protocol and workload are preserved in + [`annotation_protocol_notes.tex`](annotation_protocol_notes.tex), which is + deliberately not included in the submission PDF. Historical results remain + in the original `results/` and `reports/` records. +- Analysis uses Main Comparison, Local Evidence Analysis, Streaming and + Context Analysis, and Error and Qualitative Analysis. Omni LoRA is deferred. + Planned experiments are in the + [dated experiment log](../../docs/local_evidence_analysis_experiment_log_2026-09-17.md). +- Locked main rows and the tail-refresh x local-audio / context-cap table are + unmeasured placeholders, not zero or mixed-protocol confirmatory numbers. + Historical main-table screens are identified explicitly. Already inspected + official-test runs remain exploratory despite additional seed repetitions. +- Backbone transfer adds paired G/GA controls for Qwen2.5-Omni 3B/7B and + MiniCPM-o 4.5, fixing the same local audio sidecar. Compact table deltas are + pending and require readout/refresh/history audits; MiniCPM is not yet + GPU-verified or an established matched 8-s stream. This scoped transfer + overrides the older cache-diagnostic-only restriction below, not the 3B core. +- The body targets four technical pages with one method figure, one main + table, one compact streaming/transfer controls table, and one error/qualitative figure slot. + The optional fifth page is references only; replace TODOs rather than keep + appending, and finalize author kit and applicable AI-drafting disclosure. + +## Build and historical scope + This is the editable paper directory. It uses the unmodified official ICASSP 2026 LaTeX assets stored in `../ICASSP2026_Paper_Templates/`. When the ICASSP 2027 author kit is released, replace or add the official template and update diff --git a/manuscript/main/REVIEWER_CHECKLIST.md b/manuscript/main/REVIEWER_CHECKLIST.md index 4bd8864..a407c1a 100644 --- a/manuscript/main/REVIEWER_CHECKLIST.md +++ b/manuscript/main/REVIEWER_CHECKLIST.md @@ -2,6 +2,47 @@ This is an internal execution checklist. It is not part of the submitted PDF. +## Current priority override (2026-09-17) + +Use the [local-evidence structure decision](../../docs/manuscript_local_evidence_structure_2026-09-17.md) +for the current draft. The older semantic/person-grounded checklist below is +a conditional extension, not authorization to describe it as implemented or +a prerequisite for this narrower activity-anticipation study. + +- [x] Separate model architecture from streaming inference architecture. +- [x] Describe actual G+A fusion, optional pooled vision, and observed-tail + recomputation; retain only one displayed method equation. +- [x] Move the provisional LLM annotation protocol/workload outside the paper + body without relabeling it as human ground truth. +- [x] Reserve local-evidence, streaming/context, and combined error/qualitative + analysis slots; record pending experiments without LoRA expansion in the + [dated log](../../docs/local_evidence_analysis_experiment_log_2026-09-17.md). +- [ ] Complete a training-side-frozen A/G/G+A matrix with three seeds and common + causal-valid pairs; audit capacity and distinguish their history ranges. +- [ ] Evaluate optional vision on/off before retaining a visual-gain claim. +- [ ] Complete tail refresh x local-audio four-group comparison with enabled + local audio fixed at 5 Hz; report phase strata and same-decomposition replay. +- [ ] Re-extract/train the predeclared 4/8/16-s context-cap controls; add G at + each cap before claiming local fusion reduces context sensitivity. +- [ ] Add a predicted-current-activity persistence reference and capacity/recency + controls; do not supply GT activity as model input. +- [ ] Report scene-level activity-error counts and fixed-horizon timelines, + including a shared failure; semantic negatives cannot override raw labels. +- [ ] Report dense AP/mAP and conditional endpoint onset/offset AP separately, + including denominators, per-session results, and limits of the three-session + official test. Do not claim one-event-one-vote detection. +- [ ] Measure full extraction latency/memory before claiming real-time FPS. +- [ ] Run paired G/GA backbone-transfer controls for Qwen Omni 3B/7B and + MiniCPM-o 4.5 with the same local A; report within-backbone deltas and audit + readout, dimensions, refresh, and actual history. MiniCPM 5-Hz rows require + GPU tail/cache/causality verification; native 1-Hz pilots need Qwen 1-Hz + controls and cannot substitute for matched 5-Hz rows. The dated log overrides + the older cache-diagnostic-only scope below, not its safety checks. +- [ ] Acknowledge that already viewed Sessions 1--3 results are exploratory; + additional seeds do not create a fresh independent test. +- [ ] Resolve all TODOs, retain only supported mechanisms, and check the + four-technical-page limit, author kit, and IEEE AI-drafting disclosure. + ## Reviewer verdict and frozen paper shape The potentially publishable question is: **can a general-purpose Omni readout diff --git a/manuscript/main/annotation_protocol_notes.tex b/manuscript/main/annotation_protocol_notes.tex new file mode 100644 index 0000000..a751479 --- /dev/null +++ b/manuscript/main/annotation_protocol_notes.tex @@ -0,0 +1,196 @@ +% ARCHIVED INTERNAL NOTES: not included in the four-page submission draft. +% Source: main.tex before the 2026-09-17 local-evidence restructure. +% Provisional annotation workload and protocol notes, not model results. +% Table references refer to the previous manuscript layout. + +% Upstream 2026-09-17 merge: semantic evaluation remains deferred in main.tex. +% Protocol-v1 opportunity AP is superseded: ENTRY cannot cross another other +% onset/intervening wearer activity; multi-competitor INT must not use an +% arbitrary onset. Re-run protocol v2 and audit labels before semantic claims. +% Retained upstream semantic qualitative plan (not compiled in main.tex): +\subsection{Qualitative Floor-Event Analysis} + +We will compare EgoSpeak with the final matched model on human-confirmed +examples selected by pre-declared event subtype rather than post-hoc score +extremes. Each case will align participant-resolved activity, minimal transcript +context, the opportunity anchor and competing-risk censor, and the two models' +causally emitted wearer forecasts. The comparison will include a genuine wearer +entry, an other-to-other false-entry opportunity, and an INT-yield paired with a +non-takeover overlap; a shared failure case will be retained when space permits. + +\begin{figure*}[t] +\centering +\fbox{\parbox[c][0.115\textheight][c]{0.965\textwidth}{ +\centering +\textbf{Qualitative comparison placeholder}\\[0.7em] +\begin{tabular}{ccc} +Case A: wearer entry & Case B: other$\rightarrow$other HN +& Case C: INT-yield / failed takeover\\ +participant timeline + transcript & opportunity anchor + censor +& EgoSpeak vs. proposed forecast\\ +\end{tabular} +}} +\caption{Planned qualitative floor-event comparison. Final panels will use +human-confirmed protocol-v2 cases and show the same causal source time for both +models; the figure is a layout placeholder and contains no result claim.} +\label{fig:qualitative_floor_events} +\end{figure*} + +\begin{table}[h] +\caption{LLM pre-label workload before human adjudication. Agreement is +between two independent passes.} +\label{tab:behavior_annotation_stats} +\centering +\scriptsize +\begin{tabular}{@{}lrr@{}} +\hline +Measure & EasyCom S1--4 & Ego4D AV val \\ +\hline +Candidates & 2,128 & 3,608 \\ +AI positive & 367 & 541 \\ +AI hard negative & 1,017 & 1,174 \\ +AI excluded & 744 & 1,893 \\ +Two-pass agreement & 93.4\% & 82.1\% \\ +Human-confirmed & 0 & 0 \\ +\hline +\end{tabular} +\end{table} + +\appendix +\section{LLM-Assisted Behavioral Event Annotation} +\label{app:event_annotation} + +EasyCom's raw speech boundaries are acoustic annotations rather than floor +labels. We preserve them unchanged for dense forecasting and create a separate +behavioral-event layer. Its design principle is to anchor an observed wearer +behavior first and then retrieve the conversational opportunity that could make +that behavior meaningful. False-positive opportunities are mined independently +because, by definition, many contain no wearer transition. + +\subsection{Positive-event mining} + +\textbf{Wearer activity transitions.} +We preserve every raw wearer $0\!\rightarrow\!1$ and $1\!\rightarrow\!0$ +boundary as a semantic review candidate. Candidate construction does not merge +short silence gaps, infer within-turn resumption, or decide whether overlapping +speech constitutes takeover. It only records participant-resolved temporal and +transcript facts. The source intervals and dense targets remain unchanged. + +\textbf{Wearer entry.} +Every raw wearer onset at $t_b$ is proposed as one wearer-entry review item. +We search backward within the retrieval window for non-wearer offsets and store +each one with its response delay and factual indicators of intervening wearer +speech, intervening other onsets, and concurrent activity. These are possible +context anchors rather than deterministically admissible causes. The LLM and +human reviewer decide whether the boundary is a genuine new entry, a +within-turn resumption, a wearer backchannel, or an excluded non-event. A +preceding release is not required for a positive entry: the wearer may enter +after a release, from silence, or while another speaker remains active. When a +release clearly prompts the entry, the LLM or human may select one supplied +option; neither may invent or move a timestamp. + +\textbf{INT-yield.} +Every raw wearer offset $t_y$ is proposed as an INT-yield review item. The +generator records the current wearer activity-run start, all nearby non-wearer +onsets and offsets, activity immediately before and after $t_y$, whether an +other speaker is pre-existing or begins during wearer speech, strict and +50-ms-tolerant boundary crossing, overlap duration, the next speech onset, +transcripts, and target-of-speech metadata. Relations such as +$t_w6t-sa?%Q!{4zT$H>OS$juF9XK!n$YXRlFdZ8(9Mc9Jad8B-AbA(5;1+Sxn2W^11yhh}w zL1L$(dIkyP<^v0~e|1Dz`*NOGp7N-MA*q8I%Uu&@P*bX+=Zh`%=zy74? ziE)U`Phd9@ew;5lBFCQqm?0_jh*>=^QUR>BAXYw(5nrGttkd0N&D<2hpkoABB#@+l z9sD_lSE)cDiFF@=lLPQiKwE|5V9d%k6@)Qthgp1)GHFCex)(YH-z@3X!9H7_@-HsQ zIK+NFE6V4ey!ifzsDO0SWI4%T1m4lm=57O-P01&DQ2OmeOqgeVXxDHLh}Kzf0ubSg z0(8(8D|L-&VLs414QORqeB!xk4@p$m_%tMPqx$;S8bR?ZGvWYH%6H%aug4GZi|^WA z#i3uTYF0#bVq?V*8s>3EU7Ye2CB_y#sjj#Aa+AghR1_d~mj-fqdb%Tg@*}D#uq(?R zuTrFKP=jN5LKTV>=3XSyQ86#1z|uyk+`{TLQ^Zmd;B`1#v7fFZc=qe|uaxonWUHqX zqV=`oYJ~2DoukzViRL`y8> zg#*-3X-tZGK`S=K929;~u_XhVFSeLWs%1=qoMe!StK+gg0^y)ZVBw8&`T!NN7&G=F zVtisku9Bhrrvk5%DilfeD=QoWTZbo%6Aj~W5gHPW695cFS>-CqMUuKuA&RZ9;x;47 z@L*Y-4WO1QPuIB7WYM~9P&0nSF`}gFLnna1Ha+V5#YEW2Qvjz!i6TTCO#XJyxM#{- zpoIV9kJ`zUoTxhW#>a*81h%+Nk?ZqB*lqf*aYjm50YjA3yh%HT_uA!CG7PA>BL8T( zTEvUb-?45-l%sq2E}No!m9sbOY(zfuNVM4~S+&Xd+SBV^svCSNwiP_$9559ET>JZ~ zwnpU@crAw2E;Pl3L}MpP=k~GM$>eZfL5(x@nZ(HN^?pm z+b!ni>?p{9U&X1l*6*fB(|_{;8y@{5GwguxlCkP?!PhPOi7>%SGC9ik zH^-O`8bQQ-QU_>vAfP(riBj5w4yC~r)BA5Usn@t<-11F8x9>g zml5s%P>ru!|FzcURXtKYYCr{GO-^sq-YRzqPtY2w_0qcgIg)|~0h)-j zw`?^u4SU`8W1PI-#1pG)Eu@Jukg|1lK=E_bL$*gJGCax>3r$FC9Nhs$Z@GE~eE|iW zmm|q%v@*n0juQ}O6el(8``bRp8B^;7e0;pet!ng4I2UB5dC@3lj07(#UJZ{UhyUJ? zoFJ~5g~Xt9^F4GsK$gF8s7!x-5A1FuUI+?^(G%8K78E3>3hZ=@8T-- zA2Zcw*A1Zqta$JdEN^r?Dsp@djRaiLsU|$IrsqrK1Wz8Jri|bnFV!r^0zQ<-hk9a? zAkzF?UfSOS<+Os)?zHbtrN_gtM*9?68F@+S<&kWXsphy zx~o2*D#GB$`8xTGHU0VAi0X?OX@Mf+p$A!ng7EOEjT%cMs1?d31Tp#Nya$lt*-Jaf zB2LOB|5(fdh?SsVZeowudn>nr8Pqgfa*$np&fD$?>SNTG7~D9j`SFr{JVJ&J=lX=& z1$^DQrU##9lJ{t%vsxQQ+^VJC_+=niWt-{2@@8vkU2g)b_xH;~%Ybqn2qCudru9`D zgqkg+zW+%}ST^yHcXx#)pNKCV&}0H@9lsce<_xp1hJD(0NfbiF{)YaacHBBeNZ7zB0B|UqK1TH-pP)Gz-%lfNdgOf?BnEHglS{? zC;@bIlGf>Epd%Bb@T!XaRis)o36OoCz|D(k~J+<&$Xml%Yh9Vd; z8hq_kFu%?X?-=(Pv8g8Ab2f%8 z%uCNIAjQUz4o_o+lSaz+&%nJ7SVg?1-61-iiD zi0s12cd9P$Dzs0UadFjU;ud$hxFs3$(7Mu;oDEgJ4A}xJosQOvc`auVR$zW}(1#3B z;@45{&5dqLJTeZg?l+7F&dLD{Iej2-b)Y#2&^$*oKUI*A z3cUS$D^hAc3G2SPqdVLV?O0w$-hKWMpy&H4NW@|#C82%DtY(3H-g{kx9R^0-fFi4q zIJ3eE`|AAf_ohj|xD$KZG}z_W3~en8pQf{LgVnPp0ISveboE?IWE$7?VP=GDO2_LE zTT&n~sls#UB!(&X6c*ooX80MWtAQF}xDr9JUt02Q-_FBR$k9zG%$`Mka$rIa%c)^B z@$KHQxMD`9O~`y5Sf5~Io5J3D0V@3oCCf>4uDttcMvTNd!0!ZWx2oM2J92Z}L9pRk zaxDodqvk07c571#yo~x8SESFOW@6^*3GTMU!x8d1{J*@E)N}4&lXc;NLxNYIj97nK z^ORK>Ig1{yHNx}K5lR^2kQL-4AQv*h!xoeGlu6JYQ@^g{)$$z*2?fN8|EQ6s9iK&4 zIJ!sF<=*0^I?>?RqCwVHA8Wp?KK7kiAxLY4HtFM!7pGemc*)PEA)kA7GF2oMZ3q#? z+&1m&hFF9JmSk^>SVfFgXFo~;+HkiF*E6)3OQ}r{jsk~(yUU0F<{XE{4SMt*5Wfs(RsM0@9ub7lt<}GQ z1Ek~(ek37Ih`ItIShg|RKd=i!nkSRyb|at4AwWL}<>pWXs3;!Ut9`NE!kMK?IrZ4s z$IgP75W2D-zs*rKh*IY&Qxin2Yy4G@UYb2rV0Y8#6?`v81u^U~k)+z`xETkLB+=Xz zbC=P}P(^QZj!+ze*U~=!GMQHk!1^+iax5{LLGXJ8PmYUAgOsWsHbDcRqnTfKph24mWcKnaRiuPPlnre_tHJ4uFmrs<-dF<;jxn@=kUch$qep*oTpCVNoVEcGNC3 zc1ftMXWo}S>dsi7&ViERKBad?DM|pRp^@TqJ!2e1rqD?GHp!Z@2w*(CWk~Q7o z!43d-QFGhAz1;`&?(xLTvrtIS$LJVj^UQNp*;yY*uKp~lXh8ACXJ9bX;MB&vD6-p@ zG60M)Ttu^iMa9NJzOz->5m!>I>hE9y3;gcb5UqU zov3L6H?@9AbojPW7D~^J6n_b1me=T+-`?26twX06GSl4S`k~b}xo_Xr3LD!n1(XZX zF(9A5B2lsh$i`xib%?(a<+yGJZwUIA*lCn8d- zcJL=wOrh;3;582OyT$Q!Oi>&X;eP%^+h)jA<}oPtceKf`fZKgN9DAG=;;4S4BQcd< zZImoLB&u~ihI7F>tucHWtAHuc(PEDzpHXdP9(WeV2Ilm1TR+JwuJXuRD=}0SV!`!4 z-hr6vRu&9jxK1xg>Y$Y0j?d|YLhE-~g*`Z@9OWq+C&`9b_bvdoy%e3^dkUvg@|fh9 zp2_@y$*gll5dE8D`U^P;Q zuwAWeUnw%Js(VyLGfg|W?y0DyWon%%O28{-k+ls+R#LFwXF*|Yo+gF7B(oRK^)&Ou zALmEZAre@XySc*_<)qECMoxl~5)kPq$TH(NJ{VF>n9)NW-;p1O!L<`^k!y|*aRcHd z+>)(s!atL5M{r+H*&5OqqRigxQd#4U4rI}=`ijUeEcBN z(VbQtR)5e9Gf&wb(ORVbZDaWn$|{$}G%8$?@Bzvy@6tq&dpO3`hecM|pd|ynMETF9 z%@@G~Lc8c20_t;0#8-off64g4&j zef|jZPFEvK6?P=&=}-Dh6ZF^qdR8BOllQ-#H3yCbvodGe57hk6eVFnL7J1yjnq&)+ zf6hkcGq#2>lemKb^30dI*NWvg`Cnq3g;-`1V_k6Omv8_4yU3shIOtQ*O##iB#uevZ ziozYe+B_TJ=0gwl*~v4j;fR`{Q2uAdSsLXW3F8i{IkNl%si4l{`l-;Ck&v6Ilp=OB zgW}dOnU(i2<&!Ow%A)FFce9JaNE3YtIK9)oB$}?s@aSJhlC3^-a~~`xsqk}KN$&|q zUS@$va)tKOr*f3yzU1O)1Ci*X>0IYZ;B8)j7`qrs<(~R5|8~_IsunT!TFIg2vzUu! zDe}7t#nBl~&V2kd>UIw?o9HSMWA^iC_>V;3hADHs3rpJ#D#Om_U$fm;R(EMfpEgr% zzdqn4bAc|P3@r`*5AOZv+h1&*p7pdCzqbwEpZXe9vm#r@RQah1qMl-s zjWrAoJW@+&1vsk7YJb*sB?c6!Zmv+61~PJ$)WEMqpZ5n;NST%hkFK$5m5|ai4u$G> zq=)4#@bk~9ED%xJ;8WTrk{Zc&a@GjuzOYa%(uQjO?NT1_=vTw^wCvaO4Ui+bb(6PTY>~<-^c(k-c7Znwqm@a22Lhup0x5 zM345rBhbWV>K}&pKhNwI+&ml0UXxBGdbPdKwA-$Njx<$MbZ?%ehQ>;2qq1<Xsh}}j(V}!YcyQ>p5xRx!XGIvl_Z;r-d@fZm<`nJP@J+#W%kfjzlURQkQ|iM79l?t^;Y1hKr0&G4gHQPnO2pPr*w9kwv)& zuvcYg&$tY11Z43wAhnS7&nJiS2_g#f3Swj^A6xpCm@Mk+aY+c;!6y3!W(plKQOq8< z2fF&3J%k>4rgcnyNu_%oZ>GWY4s$7aCfwC!G+i|Qei&FixoJzVH)pcqF+Xl>@K~DC zx_pAROSuC4PZwaI`)^!;0r2mkD$`@>M+eh!MCpDGkmPAffaWVLj<(fF6Pj^^4atcS zLkh6ozDfd_?}Mw!$~YqZMT*)XLyS$Nt#tPT8%7Q?tWJwc_}C^s)Ib;^wyh&HMtVFt z-z@n>2bqu0>+DYYNrMS?Lc7&GBZFtVn!d7(m-UjVqyFsNI@fGk1_cD~<|Lx4X%+r_(DVO?RwWC|zjZ2!rz}K}ZLq+vzfM$>G#|;R%Qkk> z!u4qU0%Ls9g?wi1I!Y5YCxb2yUF;GkS{iKHJ|-`g)6*7lTx0cm2wV{b1t1pM@W_Dt zqBoyu+`7Li7{$&ez&n3E_dW^Z#R`D%mb2Rz7M$FVU{6$31W}0x1y zbABjf(Ud(mjB0l4@vdp$ZB8Wo_=ToUu^_W<4C77p=JAFJ`?-G;^=g)FFZy)0;o7AY zHumuF3~~o*WYv)@)=a_?O9w?L%artDA~UyFML4pLEa*}oQv*3n40Os=2wffv3vvv^ zi-jLx>!Wl1`40$082$ ziN&jeXAYn`7_>i44Y|eUoQ?XlQ`J-^{vog!{}ovO&rN>@0R6vJB^gO8e>{YaJIcdm z$+_Ud4Xt3&y~+~Ni=orcZ~imHB|Hf5pKnm9T=(DlV6HmaSwv+sC@MIKwkCtYxbDTo zgW^&$c#f@QQuEP8h~GB{)Wg?f^NU+P_6hlBKkKiOqK0xS%aV%B)eD8Am#u;wYamuO zm5Yp0I3p7-Vd;dv#g0+1x-@m~NT$N!_MVT4+Ka(kH~)}K2h=rmvF1MVh-M16*w+z- z_m9~6M4o+z%maWcC9?5Se|;EY=A8{haP&qVp^BcULAZHDUNwMhMnXX0pK_HXXQ*@a zd-U7)1kXBar!X;B@4f(Ir&^``gVvb-rM3S$9Wm3h{auOr20FUBItB*&u#hk}5Vtdq zj}H$3P{?J==MB=n)7QF?haf;7Jo+GRt;DbWWUt`5VXk|~J@6P> z5T1ODXdPQ5Jsn+xeX@#E03F>TBORUXByBO(sKgYR?6kbtEiitk+5*~{lnPU*aMPX*u!nu>;=F9Wt35z z0mWA?Og?N>P9A0b_D&4t9m!4}wcBzDIBxQ#1+;*;L=dX;g}g-21qLQu!Ucwy2mF=M zpMj2%o{piK?%c@!W2WaRtUz}H{)Q=ht7!e}(kAM~?OA$bmMU z(?WF0|D=tCM)OUxwXLbiYp`}~3$^pk!R}mD27z=7JHA*BX)H12;^wP|#qWC%rHtO<_%rvD#rqhl0Yn~kX==bJJM#US#&_XpfyDiuTH$M7} zg;T{*zJp!y(Z}LNdBz48ucwsLRsSb?T_g>AYeSm;MgBR%%jN3e{9v zkk6#i`saoV_ny-S`1sb;2LkfP=_$cK@hy0z8r>+1xX_Z?1))%vR!=oL@WNrR+4 zy_=(*^!~nuzP^skGxDd`5l+r6+|X~|3es+M{=t1&{(rbHBjBIiH^Lqk_Q7e<@zEiI z4jeLhY0SMOUN`KME#e^vrVn0q5ZCsP|EB!qzYKJA?ms|caG!biF~1{_gAx7o@c*fT zj@|-tmP(pnaG0N;Xk3_&@$=^y`p=(iM`#K^3=56p$xMjMDSoP{rJj-fME|Km!FpKu z!;pmZko=h>(IEejB=H*?8&uEBNJ^uSJ)_eSXE@$@LPkA2!4q#+L zLh<1!xXvuOUz=B14OupiQQG6bT0CFF8l_Cr=Gn%u)qm?ce8mTjHadIrE-*%qB>P1#hMb8Pt^7B8VUIF>lM2YQ-<&X}Jv6*)PZif*n) zZE6$_@2ow&$bh~f;W+F6gTekQj>iD_H@u@MQ)AhOhp_PyiYc#{U_;daU5mn2t0!n$ z#;V$?%i1PFj~5R92SqVBE;9$a{=6lAFxtyU$`3&R7V=?BS1j(2rkS=Br@;U-Mh8& zki8Ly=8ogB36e`DfZ*R_)YYrml(moLkg&>)tnl`Ed9lTnjm0}E%SS#89WMYZVB%ME_InIy5J1w^coJieN`x~7UY>i*5NmwsbV_^KGv~(1yFx;^0XPP#I zi>AA`&2_Bs^_`sSb8=bk7^TRC#EeT65$IGx;%M#fgAZyY`u$EBjox9ck-m9IYQE#d z>3$6)V5GhM51>3^btcvs+}{cQ2zv-={xaY2`G$}VPTDo%gKiNE_(5`I5U7!)3Mkc8 zNxTlf>|WI9WqJ+9kz1!T$rZKe$LxO0y72nvBI!6>dN+=mX>@^N4`}W zg8JPf{QNB|C~>c3;ThT)R(yi6q3?kUOTioVcLr1axR#~E_l!^9{98Z^0-^O68j{r& zrX+F<&dl#B-8M`g$Fr<%3@XxNua8%wV=4gjWq1ru`Wy>Oz+I~l>`G1 zJIPHA$l?`^G?KPcO|$T>&HF_COJSyL#Cn8U81!h~`)JwbF--r-Ng{m~*`_7u!&*pP z^}*4Tw$XCERcUL@ue-afZR!j?Wd%9nsYPWs;k8W3fk7mrHOMw@j0PtO`m*JWNHt`5?Z5G9KZ3~X;t7fLp;pY^gh#%<0a(|g6RBepVX zfgNJ1QoV?38U7q$kUpDdZ^lj@6;khS&yHuQ=h!H4@Ip=O{_a(4sa1B}B}{$+xp?31 zTVd1vw0Ev^en-(FwmAoAr6IyKg_8QyPJZnAlYApIOc^wcipy7I<-nhTW+Wj0Ntt7k z8k;Tq<=U2uyB~Fp$+(pqzA)6kF;g7+n0dLs`_ahqfyWj)*3fg5mhK>%unQmJZShaB z{x>B1U&lIt?%%lfzc85{q#Zoutm7kWBmf+8dGY-&QP<_&4)F}$G!T~|{FgzB=P>;j zf^m%7@xX0XkZ7Wh&rSzkuzMdofi{GpP~7k2<-%^gBlQe`*sVbScSXDVQ_-}66rnu<6UOhCkNU88Q{K2KxpRdNlINNI z^lg@6ej55t!onUOSMOUcNL|pKM=VknS5~KqC4n?7K8CCw;ORBZXB=dZ(czj@MBs7J<9FR zMIT6wTeov72hGVvC7=Hnb_p_vf69E}J@k zfNCI$=TGDWf&WuUmcUm`a2iNa<8<|P_0%*C2fp*MdEv34@nPQ5>HMJMj>P-**hTy( zUE+}D?(4~O>*?zY`#TAeE|3qN&O>U1ZGn-{^Sy|oQEb(bB8|V>k7s$T0GoPmeIaXP ze~oAe$$PZTYqW=Zxw}<}Y3f_Ao~4=NF9IP55PvV3 zYnHB0{prV8B1K<4!&tr&$+<%z|G=OrwbIc^#iD|Ivy|ZL>y$b7rxytWvO2NMTFU6pn*gI)u@NFNxr3CEaEg==rG7g02)+tkxp@lBMk6sY(JV`~ms?HkvRMkp3vy=tX5U2v79*L|;I*b5c(FLA6x# z2Sd7FjnJ(?e2V&`>TN+YL#qi#6Pg96>1L7f5urVVUF^C!vu=id@lla<-j6-J85!&k zugdNTEks2I1p%{0%|Ls#6CC^M@9_O3*pDYIs1ET)G{L}ZV``LW@SR0dFBeK_vE@?d zOQ@9!3$tf`4&&amTfI}h)!=_+XHO6jd|(EUpZ3Pmu2r@Cx-5Vd2sAfFTL{5*Si;GX z9j=<4HtnXEx@3I?&esH2q3~|&ck4V0VE5Z*fbqd}pM2`gn2q~p$#Zr%WXXssU+wKY zwjRwxyhkoLXwdqF6CAv7;odCjY6fhebl3ee9f?OxGa}by>?xeC>04KATbxT39YZB;;QaK z`2_fZ>MRko`{^4Nxc)Y44>qe5M8Y+TDejD(v0ZV}4OSahkY~!U?gh01?q+W-HQ-g_ zzANwxwy1lOH(iDfCh@&DAtT=Q31=sd4z+N0nCHHKpp`+i9y|M(rRn=Un0s8}y~ERd z`f*O&nZyOBJ-`3G=p9eZEYF34xrN}q!1dFg2~d-aef2{A)3sEYbJ5&XFM^d0X8dZ- zH8@$k#37(s397){DvvzAKg6g504&LWcS-Hf7^!8C)5+&nsu_uqGUht1CD@R#vZ6N& zUKtaq+O(L?E2czfGqV9-0a%Z^TARWtikT)(DCZY#Cc3NDziQyvKYBPrV{<<0AnSn^ z=KFqq=)9w5r2`M+i>w=c=(A6^G$^f3S=s^^uF*nMVGzZrFrf6>jW-YNqU&_MaRCIHKF%Zk2T;sUhJlC5sG&z zP-{6sRj1&g-q?zmm@Q$^6W6qWV_(X*$*z13ISt7xZlG|@`ifpdyJ*EpF|>$U60y7r zQCZo=yrU_ONRQhPeniQSb!ic0JS+nuhV8gb=ISV4&t`#ZK_}kOs0k9T_DfJ;_s*%i z7bKV%s=aded29lrBG1*$huwUOF-6dL?8e}UaZ~8f=Vap)&_bMcDkRx`T4(F zE5~JqG4gncfMoi`A@q$MFs%2tJs(wD^L=3f*iiCgtTcJH26lyuxtLY*jPCp~F0Lx#+lVFIkWOU=5V-rH@VC66SKTps7?^L%KBq z;5?k@$M%WI`CT~M2={t?sG@-U!r4kl`ffYo(wuLa>=IIknuLXA-Lp_5;IM8(^ji!3 zV|wQ1CSoExpbX5Z#_ z40j@`Fe&X6K9455NPelyXuo?_c6sw*x}&!hY53V#=6b^!T+^4++ZlP%vWGPH`uC9> z(o$!t5Y#9loAsvDqg|~Ln*7hIv#(N!%A_ezrw(7{P1itL;6?rnlu31G%n3ng?MR-w znf0|8Yp`^iA?PDnvV5UeBnV>!u+G_~-hhQHGQh}n2Vi-$@V6uE#lpE_Bv3IDd&>rR~8 z?_oj~M=7tK6j2kB&Kr2!gPSPaoIu#Km(Du5GK^Uw>)FCI;5Y8(zgDG_cYQQAf!Ezb zdEac1gRd^ZxGbSAgZ>-@Zht58eA6Cw1xt~MX4G7L-Ilj7Fy-EHFN%`PT2+sHo&DjA5S{+| z0qetBC4Gk!7P*gVzY_-X2P|o+3&g`$*x5=(wmbp?2ipWB!Hc95f=c@PrJzybJq}l?rC0m2RfB(Oo~Ui8FWIqrlc7mzzif>F&xL01zqV zS*X@j)SME1NpWCdjYgz=TjC$=&Wg5`XcHLERgk+?!5J#D1J=m)Ynw$*zB3IM-8Zi% zS5Xv_=H12ZxY)$4oUibiUAr^MsQOH(^7PGo=+(4W!UAHmb|NgY+aj-a`}K@7q!FVk znC;S@?~;Yp6qR&01#{S}k=+q#(Avy-0^|?ruQPXV)(N7udDN-Oj1EkV`G331XT~hV zuHEoqPp4oTRw7|Y2~x^{tWwc1C8>%Tu)`PUxnB1jME2plGQ+rfYaw8snmvm>!D%gl zxHoKt?l(1?gYkkl%{G-4%r5?x5jnZeV9%Z?sz?MS8>;P{id2^(c1Qlo*aD}p^Po!c zLo4Q$O6k+E%-MPUR3&yTn=yluq8$x$^OIOwYzeRL)6=iWFX&fOkZW0&6+*jUH{Oe~ zlFstYOD!{DO_C4IXvkhChjwO76xJz6<35wT1KSMjv8LDV{Yi73!{h2}(pYCoBQ~pC zGVkYZ3x{Mj1AWiOmo;jhow4=p)zx|4)8jP6o|*sqCeUW*?c(Mxwi`L5{I2bCx&gKI zpXR~r@=)V1Ory3g>z`*{i#py{j3=g%_gTYUXF7K7TU=+r4mdQHED{{sIyPqUWNHV$ zke;I+BYpAnrY=j$4OE3e)lYOjKCYJLuc%_TPrv|0ntSZ!tL|;NKhL9?H-v$V-ix^eO1w z01A9^q;vsw#4;c#jcP0eZM>h~zvJpCYVF{Q;6a8I2b&-|Tz_8x=2k;Q6_Xx73-zu) zEmG+rqo8<(0xxJ(t6G-VL}uCC#6D+R%Di%SB4Hfa+#2m#dN;4|s=|lNiN+JPEjE)< za4(#6;>%|zCMDD|&wxJ6ctK1LK2Y^lj&8R__$AjJg+!npvmGq5j2lwPF8_-idP$ZL z!gm~3uj3aE*pNWpHLXq8vHn@V$Bap@5dtq#qknQVqU|oZEza{kc&SvW%zHHCML zPnsSQ6>Q_rK_7BW&vii0^uHIgxz2IBZvf1w2{{t|F| zw0=2jpG&@)`Jrn0P%%?$@22=Ch!}<)fNe*t?LyhkzmDfOu!p8<&5Q`cV=-FJ6@b&yGV5I`IN3k9 zYnZQT**XOA4>7NSHb|b=O|~o^Pkdr=M1OPv+si%UL4ZZb2B633tC&2xV2+AZ-UDVS zA6ZH`_IbEnA#o|%4Mfh{42*0~H|H>Z=p}P$s9F%W={qUD=)NqhiAO{18KczuwPbMm zYG&C9s4epr42_Rv5ISW!l{MW7&_*wPCMJDmwbAH z2=y!a+}}qm3*$B#v2xEHM>_SxNFH3tAx^oK^~{R~5xtCjRm4AOcdvQ9rXK(T3xqg1ssf6r*X>)#hdy^A-_afzjdAux(r0Uz z@!cB`ck6nQl6CeI3zw@1iE|5BcdnKF{zfAz%jQv4dthDH{u$bHK?$Q`LD#cHqGGes zS#b9z1*aYRwX4imT+eu$s*Gx0YQp6#}3n{_b#KS+x9T zD+SDZwNkPbfp&@)GqiI~K)fRz@e2A{?LIEJl!Kx(XfgX+P|AxgPZNQ}xG#65^z4*zpBy=i!nvGrpU{p;!gdl7k8fFBI^`%nP~9g^hHt_q8*BG%JK=WND+Itp7uLzePLmXrPGht*l< zWQ80`g0(tpkwsGT1(j1ehg^Sd^^M%uPfaXJa>7GmoX*t+_wD%>WYann=^1rXjcr?8 zB?j{fX`P9Z3ym?40mfFO^X3((8bfTF~FoT|R~gyGxk#$H8J6I3tXKMD2--CqfRh73u+gPLZAK{K=a z?pEG4ftP!p+|{TJ2#L5%7JWe*dFo}dss$pEd)9odO{-@cwBmLf)a`kF;sQ3bzrU_CK&=o-K+~yyPXkVqUpy*E@f_zj9$;&C(^J$!Ty%thi-TUkcYR z&vNmwzD$oYeX>5Qg?bFm2FpjTvdDa`CFb$y$gY!`m(g8f46bBgwT z%4PZ1^9c?i^qb9~x#w$Ms`36tl$B$48;zVO_hvhc@0tzgC08IG!qNl@q>n23TV`~3 z>v>GB2oVnfl^rhLclU30x+D-jAc))n!2*mG1tE%cLjsHU-RS4zLgg~stWXd{{I#;n z`}{;MOc?oiZx_TODpg%#h+KpW+qArBK0v2RcNJ^c(9zvceGRuQ6(od^Wv-y^<>jcb zM_c=JIXiJ-y(}xm$$JA6>ZwmF_g2DvHj}FF)}6R*Fb>rFcSqA7dEQ?cQ%RjTFE9~C zvIR_AQ9Upiv}5lO;l2FKY|e1ChBH5l{pbNQEPWp3auJ0XJchpD7Y0p=WuRA%$g&U+ z8c86PstidMw=U*ezyagAb!dy&iCw1`z{2fu&0t_}Rg0D-!$wKUKQ2B;A%8F|Bn-hb zk6blKJtzd{gq#s;KSJTDEppfpJU*0GeIJL_VUBH=_v@B}QZGng)4&PC$O+jTxL7)C z!QwRIla$bcD_XibawPv2b<9aqR2#e26&65ZV&HgjL}62aD~F-gbSG^?mc^g^u($pG z6?kW_xw4pXu1{3h9Vvu#U6`qD)gv3v9+7}gF{$1V{ouwMQScV+yIRd)JcrR}CZkF`9MjP?YBjh%uj@=U&TQA-s>R zavQ^-UekooybTW{sT{;$mX-xO>enENSDIX_Nswf}HriFOQ|olkMW;+w*2Z|^R(7eM zeq-Tqg9%nppqC?A8>hBxnyc-{3Q*dh!x7XEwi5T2_LZH4g^=G`cn!DL@T%|!MQ7q= zkra_iNej4+z3r5++tbi)Uply2;uY^txyrLc$fQb)DZ@VOlIozpmadH&Vt(&%fw;F4 zYpQ8g+f9__zQ4m#@qO(HTMQpTu@y0KK#xBCrlee(1akc&qumo@C8fWTnT{-L%SR;= za>Kh6Rq8&YI2mOYYoc=K5W?wdtmOUvvb`Fr!HeWggi|V9>>pE}(cm;Vk#Lx?V+SIq<=(f2-Is(P5z8G@I`0|o=cMx3IgDvFVax^|u^$1h-Yv$G?3R#A`D>q6g zP#{uDACr*G&hR1ur=^8jFW2hacqaxb&t?kh9?2t2z`fG9DenIBQ9^{%dA;QX9TP^bA2t&Y;Zna; z_K*4d&OaeeNvZtDHdWR2Y8rlV!DXmtsYZ9oM(seK$@wfRu%p^y7fq*Z`iOLSrlKAU zDhz8a)PH_!GVIez8v!)y5HUui1#cLeWm;6>YH73&$i&K*VrwBThd`B(UbV!N@|Q$I z-{EK6=FgC6AmsHVrHb?!lVKBQYn;-%{90jV-*~cFq@0a3)mW###;F}CrV5J zxui&59mY7rTtrz>-2bGh)dDE=>7N>WO|Q@el2cOB#5wI`Vm!!+r}%&cSuw?^oWt*W zR|L|SB7-+(ap}0Bft_m+Y42toVdtsrH$lcw6qT%TN=fPds^}^(kLhCds%a3Cb<;nK z8haATwQ2(#j*Uod(%&_?5VCPWj7)fdu;zZJ})jM=hsPi0wozB z21}cGyDVGA?6e9>w;%Y=8kNSrueJiDl{+TG{H9Eg@OfZzXa_35oHTqf_&3{(PMqe{ zcH%BIt3%_ixm$~feUbB7BlUnf_+>8qCt6;N4Ez72ZGiu7!uW6V@IRC=8UX>2-tIaU z1)j#I%%$56g7vKv6I||po=?yGuLHXPMSbIwXh5Pm460NDi@#PRI z$t2KsRau3E5^a0=v~)EQdrYpwVGv{qkVEFRyQEwX>dOP~-1mLLV&nF!(-)F|83-`x z`)t=B_YO(HV7amThjStO4rIdWPOoiAb1NN~9G?MRmVZe|eOP3`RNjSLF-`E!!PI_y zXd~Egzc5#kXzQjgHB=diZh6rPeePfM%x?G7j;5LIqh*r>vUjApsYv%q9~e68n zgTSDXheanwZK>1hSRwt!FGq#FXSYiN19CPpq0`s6Mv|tUD6*Ce8|2?) zH77%7EWKGe(O=At9N#;Vqq;P=Vre<-qdZnNEXu=d7pKg-=Ds52D@*iK(Q{C*WL_yh zoiK;!ixe;E$F#JL=4^cr=1X~APxUR_?yvJA#;?OIrpT%3iV6m+W+VNrk{xGq#%=oQ4xCrHupNRew}e{1$=} zu|Kq@$aa8T5Se5&VMtKOb(jgI&!iBWIW;s-OSJp8tvbAr4<@D@KImQ$_JV<9HvrM1 zClJrmNr9@tr1>nI=VFFZ{U?ZPeef78dc21vcpzQB5srfitRqkw3V6!6OCzuQ(?EGo@XXYfiIH;#&@<(e(n@uxEwrxVNG~gzqXp=&g;rgu^C(5$$ zklM(RM8CpB%3b6LLz|dAUcLzv z>*0#@f5^j?8&0IH{bFc?xZ=3kq%9TPXd9)>RlMcaeyp$zd7IOH+C5jidUn=nbijML zd+Xd(vKSBp#lY;!@qNT`OkU4>>eU&;W~wI!4&=+}{oE6Td*WMMCD?2q2Z346%g9e_ zmz;D`C(aHy7^n|{UETj-5kA9YRs3bXEA_?7#qNUZR|4K2k|ma&7ljZMyNEz)9b<`H z#2k`F>=4$-9D8J{UX$OXnp-}A1olMb;c4gim;=6L#myC;a|Kqjg?cbw6S+{$-C+y+fo2PT zeuTeu{)@U4)qIev7eo65^2%k+70EuXzRO*aLajH*eXlTf2$joHKV!%cRV4~Nj zXQXE|GUWb$|Ai*4oRyV5)L#`!j#kvt$O`YTcL3yQuTl< zU=X)8ay1h*GjT9AgW>0gadCAvGqQv6+&I?LaUmIV^IxkUAZbU5{qT39ModPTN^3%` z?{zQhSp@|*?u-<47E4Sn`+E2NbIWo@)Ht9XT3kg6{59|L@pSHTJrzk;hiQBNY;l#P z5dYf*ZXn6RSc|!XFda2=angK?Y5Dj}%=#4zzsS@3<|O3!MIq3UYTF=98%vn${6tE4 zC-c$%-PZ+;cu;Ktl7P5{dvZ^O-ADKH^!(-Ux~A~MuF%v}2|00WJQ0W8L(1Oo`}ps) zpKKJ;p-iX8t36V#LoLLhr&GJ9S5uGwhQ7T%UAa2OBVqH}xm|m=?r_(j=U_|k>v@I4 z;m73fdm&n+PGYozzbDz($Ty9D(CXL0Z7hxNFC^Q~SNkHnUmrM=-~H}6X0zZfg6tk< z5hO(4`v87|=02kkJ)*1mJ9Si1-J&oreVMw5PT^#Fg;9U6X&)YT*NBUuw|5k(hrlcuS zKHDlVyc`2cWj>BgSbDU86n5Yz1NM3+@)r$UVdMAa=jPOH-jbIV@}QBaV@;qh`3j_e zXba5Nu8;x8ApO_Pr5oCP{w(06*r=E($PDMS3E>IOZh)KjXnh^3qbbA@Zn|B4APqZp z70Xf$tPJupb~&y~wE{;N99PD2ptzzerfN1UBZ&#EPh!=O$eK#cL>i2Xe1jimab0*+ zTZK{+TbsxLyn&(L5~k$u%qGa1Gvi<~lcsqBE5s>eh$C+7Uv2>txJq=b5V`zsZ=Y8> zVih=uDm%DG`S7HxlS}#Wz*QD57<8sksPP#$VM!bAtei<_8*VMyDe4Skp526Seyr|9 zC{gKLhsA+wK+@~L?m#CD8;d|AvPLRdC1qRAjKHb}lTwFo&&HM;v492WRnN1LoUg_q zn$Q`iP>Pl4P7xyfd)5?pviZh=E$yYNuXF$;inATf60D-LBhHCZgWbTMWolg^O2{$<%b&k>tBgUxlmeE(JL3yz zNRLJ};?eDPLh^c4r6E~;a9)MlrsNO1)#;mX$%v*60#H*Ji6Z-@F6!zR@Tr{uZ*V#| z2b~tUninPU-6Y+os_S_W9=?L;!2SI}Dfn9M*|Ndo=ET#Ke4C~A_2o!fb!Zl8hTw@d zuV0OTFX~S5g^jBDsoifponhVIn-vto>Sz1*&fa|PnJpu;s^=`L^(pQfgU)v)b%=?N zq<5!C3C6LRaiC7oSdYO8aY(Wz5&C_d>T-;V*1yqh;_HPY^3oI|nJ_H1L>PTKBCM2^ z@Ge#Su){F7xF6tFGmIf5G}DIo+C~3sic>dQL~>e%nPDRogNSe#;-_tCYvjaOTHM(k z!^M{i)TkV9b_^g~grBw&LXY6&Y{CN0!NlNm+7wRN-Raw<;MB?`D&>-=nqbOvHlSD> z38+1smo0KOJ>k$Y&;7#mXN?BT~AOPp}p?@hR(7ibAd*^Rp+ zcjn7GEh?X!8hpL)E(#YrIjf5Jo3^2T)?Kygv&Qwq{jS+X1Y;+srPks*ACIpw{lg&+ z+G0MeA|Q5Hj>TP|vV0=wFWn>WUMf3-IuSe*?uss(fHf^l#@a(UVrHn&jT2z+pm`F;EsPJKEatj(9TSXxUwsU83Xkl`BnNrgN z>DI`gL9g->B?~kZB|Ka6U}(1x_ti|X>kwopMQ`42EJRxEWVXeK(5+FgiQRQ02$Ib}qK)-jff~8nGrzIDzqejweUZLL}p4n31e~z!;Pi z_ZT~}um*zCM0>x25M(Y8(8$r94Rze*h^@8TXk?0L~-FbyhhOHsIAAS>MvZdG>re!&i zo*gvUFW}2bxYEMZp1d0kf(N3)7v{vm#vQ48#VtzYd2St@TYeIiemiY%NX%c)-#7GX zZ~<@Im=imswf3qpKR-@>ze^5XJD^o7+W{yDCaM&sG^Q1DZ4WiKI2M44sFv@{9f<>- zixyXqcJP#_MV;NP1qfI4&^#z%_h$AeN{=_~6;U{xvOE~$L=q-hJT|$VfS=>n{@urD zDJ>j5Y%?Y${0uchfm$6`Zf?NxZ@4ZhD#|u8H1XBnq`^PU2v*mBT%!m#>(S8o_|S1A zFJq1WdWV&L4GSN_;Piyz(AsFD43rLl0UH~RwIM;3BqJ|enx-P4I@x)ZXDGhe&y{K& z(HDjUr@&76k{Yf!=Qhw8oe@%1&tL(oFZqiQZ3|{asQEG%hwWZN&45j$TdYyqp2Z~iB5>sfN|E6JYH+ z69{Dro|!+KiP_r9aRq5TaZg^Qc?ojEja|8{Tnp2(+pRyxQ1uH@DyoE8q7~8!N;nYoX@0k zG2O}tpCx$n{1UFjc^zA^w@$-d$z)orkgARnH*?QO+kLEdAaXC1jmSp#7r(CvBmhoe z18^~)?~SJ}p_4^&#jVG~DB@6=!D5SwVWyFoM8^+PnzQtVau4G~9Cf)1UE0isoDWJ1 zsne~2mx;M7Q(*mRMiKj^9DZ>RJziL$kA~w$k=5RgXJ}elvF3(1 z8FKD3lejq^s$ZxSb=HrMH=VI`vj)EmO-(5{s>un*mdn?2wK4o6w|M;Hk${-+TDjb- z%V+B^s4D3FrNV#($SEFTWy5N)Cw-Iiz?XZ{?0DP#vq2!5F@s>&ehSniSiLNP0GPRI zlD9hq!gz=oFB*Amq7ZWWQio%_S(%I}4iMDIzR$9`rUC zrJ;`0BaIVLuSeHNR8chgQS${EX{N^zGth&hp^AipmJP}=!ob)z2!{)bmzHG^g-C+L z1lY?Qn%U=7(y?@w*O!2cNAw7W5-XB0(OcrDwPDJmXhlrRBw|zJhS27!stZPmP?anj z+H&@1G?*N{g2u)QKZTec?3aC5_4fb&gO@VM%W zTA6Us354S>n98@%0IR%Ssj6)Mc_4nes;nh!!O2CW@e9n0bJtZm9%|LXZ085d>o|1} zHK%(0JhMLG&%e(q zgoGcv%96F*`Ku#KZV`|}!Nsq0G*q5d$_KP#!+{}z|sB=2i*I*=l^;) zcV8dz`hMrsJGsp>EKs(|RWBl}t4`%^W~Y>Kd8WFBJ*Dl;r%4bWzu22!SE`b;TsryQ zv^Ct()Ae=d_}W%u{VrufSrCP?V2_BCd9giDA#R*oHLAJ#NI#o=RU4?ov-Hr^Y!T? z`1yDSV%MSm5HSPs-sSnt5ppW|TZeVj)nTEqWnZ4qJ;r=^S5;+@c3J8yJHNOjA%^TK z6Ja9%S`{1Pbz7;I}1<-yc9A)U1vx%61=%S1#z=dvtrj({=;;4{+>LV<# ztyMpM#ONgL#l2s81t>c;dVS~+Gj)XuK%i%ByARbl4RY7HLyfIkd!He? zvjkg3*wQRbb-8mj%!AwrYITqZ>Ye}VE@tt&jNQK+crL_AfY4)oZEjCfDqbn)jlX!| zhj4A2bwlgh-8+Qo-uPk9@p%!%RC_+9Uc6ql>`foGWX!qU5I7>}G^^Qxz?8bP3D*5b zB;0Ju+m(iyP1^1vs>m_V=)q3D!UV@h1F5*DszaZH=P6IcUIAS~ZfBPzHAiG`btAMq zO*Sgn9w8sg=r#zOSy#b>{SN7|+tv6pems&1qzr3k;4B9kLgerZ&N$@2$wzfj_$Dt*GRauf1 z{;D^wCg&ab6#I+6b!*28DNTE??*0j zW;xd6fvTP^Y+QWZKfwxCSowU1)=>*PkO>hACooG}l1tqviwkGh$3xy3u_rg1+aEs> zcoW7bnEFHQoqBeJ^#|3EgZRJ#+(+MUMCeT(_e&#K6+B?m(eCg3Lw5{QU2*me z*kWt)st3M!wsEJ+My!;^6WU__&C(|HFzeBijJ(s*)yur z{o}I2SHD;*jW@J|ryHUD?bLgi0^u!Ua+&B!lmGP=3M~bG0kv_M0#SUb2(@?PS*B;0 z0! zf4*+gXRe1ne%LdjyCV|y`HtFEZ}Vl;ZC-m#TcsOxj3R>;%Cp=~d&z6I2V_0@&TW+l za!N7oN4W2APQBeaWzvS9`D(WeW=<;UqAGbyN~;R_U%chmV6^>>l;z`!2T((Nf;mxu z{@QR$RhE=wlrGSJ%f&3RS!LA?KEcf{=>3i?HY=*<-7@DFVxBAe;&Q6^#Z1{5r+6-z zAT?jQm8_<4B`8-4d-=)66DIr0tXZKwOS8Rrc{Mp^1%VyY9fXw7(SV~xmM?$xpKcc!OYbTw<1WefP zih0_cemKdUdy7NIkCET63Lo<4&A#6kNkQ%eEc0v5<*QYUv!7e9zdcuZd}TYH%AXUr z{Nc^J-P4~0$6rWbq*E#wGkeqjr&|0k{ZB2)%=Z84Cz$|DtW0eGyRBpfu(NS+{_i^$ z0OS9T01h@*w*S91W}GXyYU=eWJC&YvFJK60aXW8uTXJ#$j&T@{i4|&*jEZg%5ZuBl z?Li5jyokRD@Ga>(&AsLO?O*+^*SgHIxb?gCyY;)h^u{`GdFC|x>qrwxj2FIlbbNpe z%D*zNhz#~{cjt0{cel^Xd?A7ypV+_M5gU%A!9j^f{?ZSmphpA%Tckh~1~}n3Vkxd{ zBacrZ9-*TgqGKHH13%o~MgG7-d7y(%hVT{|7D8Yuq9cTK>@)L+@%VHL+g&4#oBTY( zm^PY&KSW2vxO~Y&PI3$B7OeuX6hT89LO6*OS|GSUp7&N2p$0z*$uvo?kf1D>?Clj4 z6zCIEa51-5)T7ft&!ENDf!&Dgku(sYu-3=r)@?!Y>Q z10^F!mT^E_M9e#e29PuW4~~WT(cFqt*dU*v>c60SKtFyQg8KA30U4h>pBhAzS02pc z8#p&daKT<8Ms0$)6(nF4WfikwcfyW9LX39|fbj+R_-RP5z`}R{4e6f8DWI^p1_3D) z@9y?~t46PA7K($OqvEh0xicV5Xr~DT?hEba2rP(b%Q4`Y0?{o@lcat-=X1^+-_TJZ z^L95J9u1=HoegY#J8KgN!p$k7V*D3gsLS#9usIA67|csN_(jYs7zvAXU}iV=UER~y z&T{0D_?m&s71UqPvW0CKf(LSd*ct@*b@ba7BtQZTuHYZse)fa@wm5ou1sPVbfmnh! zh7CIYs^Fi8uYWZrO?iZQ1Iu|OZXJR@e0_X>&frNgFyft@eG|Ujeme`Ktu6VJ&;3{& z1dJUW?db~|_!|Kz3IK@7bs)upMn^Hf0@aowg#jLa9}85`GvV>Zryl?49I<^@n>A@2M-RQ<}o_cMKIr2S$}{B{$Gc}R@y8l~^v z|B}Et2XlM>!V4y^;s>DxLf}z>t_O(30Rlv;fq_M~^L}`$f`N#_0IKOb#?W>3!_n(*a}R?vsf{qUpX0;F+x zD)!-9wx1>Dye}CK-(X?E#A=#xT+B}IQZlHgV=)*sxciS8TL1?pT)bd8 zP!h{0sNG&&NB`>d6baN(_|L;PQxe)<_&0+J)Og&R-Or(_jfaMYsZReyumOA|t7oL2o8**P8Eq@Y=|?2kiP6R}3;%2q2&}DW`{4RxnrLqghl}+sx<$7q zI^C6k&19!;pI+|Iez&@a&Ly4WtWTW z>3_R<2f-R9)5I!lEN3gE{CfN3-s(sUuLw^wDXt4G68);rP}&0CDB%Dlq+1_ahCnqV z&H@R~9KEZ?ocsAT>GPy%`i^ebD7ND!?Z;vJYtyyd_?faxJ3cea7yY6x<%5{mt@R+$ zto_hQLTGapv;77!Wrm%kxy1$|xUPB=4v+&0{)2~l!!F_$N2t2;@>N9Db*?&Ec0bgPE!Y;N6@xQ-Sgq9 z!=$96swBU5Q{%n?8fl2ai<>nU#*xjwSIIbM*D1qlC z?Vo|eM^MgNt=bT^xMs$(&up^wvkJj%hdyUEZekGax`_Z;ykl2(BsTGeBECd3+E0De zkt-lR0NK3-@3D)lYxrZ*C?*HzJ4Jm*=AAST4Utc()i!ZnX@Jpj0lPO^u&V!sSo-2d z)Vohn2^+ndlL|8XzxG%^eHl7}Xnv-VZFTn=CyIL&WtGcOdTCo3$MK!gjzLBRZX;v)!YFL%3!aV0{(W}|q@^74)bVGz)7o5adn8w0Inev?}&&)QYXKHezF~Cyg zg~$;4Cp1(EFFqq0ibk13gOwFRkp+^R2FZh+>e`r3e56G9n9i3*b@t)^K<{B}hd~Fx?)ERoIrtD$L zM4@0jrJTD=WVLX$$7xp1@fv~BT>fOqEH{Zl2$)fetWcDj_iIMJw(i{dn2g&aBU6WJ zK~Q-y3XIoa`EwRCE*G>Vp|CfY`eee^un&~@ndx0d)r$L!qP|x|Fc^LzT>kWF3`3HH zdrx&5R>bw`8>KvauF}EA2dxyR33HDeUwl*;v6ih`!VWy9rQV z+7XrvMj#ol7Q}MyEFjX-moFlXdM2BMhA;Ayf<@mCZO`B*9JMm=h@efbh`|8WUW^^l z!mtk@rq_3cqDoB!das_0KGaFKr(QHM=VYF(CgqYOu#G@F=KBHfM_RkNSy%C(!!S1x z;wChk|Mv@)zQq}SofnR_>Sv{C+#2Wij%)#^a?ynDkV(fU-I_LgY3 za^jvW2KA$YzKk1u>w-U2@{^Ma`1{&|g_k?_9HVz2Cs0{{HY$*JdDC;lIbPtz!R)cG z3@_SBXUxi~Csb4tBY0hHJWagD(T*(&yx)WYiCn*f9>0G-*bt*rjvf$rL`Oq5E-bm( zQMsV`5kF~;&QQ6++mQU;&p!g21Krmg4^vAKaB1M*%P<;bt>UIfeaAwXlFxdT2jxEk z*9D$6LmyRyE~!#e~1R`LRS3 zG)o_j8-`otoofku+Dd?Xt&|pJ-@x*z;jUp zP(vd-?WMkUJ6eqG%;+HVfdYVIe52gdTCXc*(>Mb}j@B%FTtRLb)91L$n-SNUja-CBn-;4gku z@hyEVn0}+Sx>tE67iqs^N)5h?1eR1g~%{ziB#JKf!Pe=lBLJpna302md9+BsHr}bR(~$3ygXiM& zcjVm@I&H{aRB!`!6b0ApUQLO8g|cjJy4+UN!4X9g&?W_Z?I1$Seh0&FQELCYG+X|5YXfHxIJAq}d-DC=3+%_Ygo zf1_cbaZ=sz8m(o~p!QzZ*pu#^ksahT*I4pm`B1=G5J+}hEi2+J#;)WPp82HNT87jl z7-CN(VxM?%C0c1U+GZ7^qf39@PEfU*LD<}c+_uG4@n`JM(!xZ2&0A(X3=f?Y0q-U! zwg<3yQC`Nny;7Yd8AQ4%GC^KA((Rm&RP3PbwTWq;OfT36g_MFqf=FiF&>9zpi1Nh& zKS(|R4WZemx}>yS64-ml(M*k-N|scwZ4t-53Z|6$mM~GETKIidUNGZ}MbQlA`%yN! z5?7C`xRg8k;+O^ z4AJvj@Qz%n)BOixkhd$&s=5sslDv1v;-B1m6pA+-^=HQ-mFo%u&J zQGp{c%=$VvjJ`9elll(`3DQlHTeU52 zA(pb_^qsaWxURJ&s~By0f)^*#hg&=4Q4|_>yl8Z7yF)FcSYFu=ur}tkUWS&>(kkST zGzkB>5RUmf$voRT3?-c|`)@t9h+Hf=cP?73ZHsSt<|5m5J^RS21ugYQcvZsC1<}K{ zg_+FM(p+Cy7H?l~S4>vVMU8v{lWJ_vQ4ep!l@xPQDP-zvmu2)Luk*RycqN*T@GR0; z-7;(bTHFig;Q1BP@=?_sg{+)b&k2IUys?47uL-%ytgQXeUWZWxhUZHOxEBTg1&O2p z5Z}BWZ$LjCEwAwd9D~#?Z13&(Bt_AaCHV*Y>oipan-|x$#XpA^4m)!kGv514oaBXe zY@2CCh*!<6(GxYTMr?cEP^t^&uh*Q(2m;S)Ql@5GGXl8O`5JXo0xpiWdpzB-J)Ebg z;hxh`QW-{>O{j4xdwH3AirUaD0l99ZlRsoT!NtX6tekLKX#<*NhE0((|W_r(srH?1klTxCGTz z@2CVBPeyKsgt&&y z14GUHMWB z5wZ8FramOT*Y)M^pE8$)x@14*G9Ul-sb`C@Ua*e}w(6jBei2$miTeZrQ43iAdor1t zWkl>+>zf#^dm3(iT&f?)c!odh}tvsg;5$s z@9Lk(KgdNUN_BA!wQs5HXNJPgS{Vyc8Ol4@zCV^a1_ z2!6A;v95+_!L*nL&ZLNEQW zT>@8zi@NVCxgns2Q=>L6Pw+Cws0!i0@HkpT2GgNK``J%uAx0}&&gbB&$BRAR>OD6W zzSsEprQV4UJH>)^C}Gn9ujAboq_2d1HL>&>ITF?vFy!ja&outhY__`ZG*qD$+s; zWMW#hO<&q)j~Y-Nr0NV@YUHCryQ@0&Gr?B8!*2dS{gIWq4u`&%zvGIPi{)&g$e1VY zUtUMo1IO_Idrh=CL;v|9#?llg{Fd=H5Qpg(;_Q4QGRlFe7F9m9kMWNbWqDT@6x7rZ zL+qH9cgsS{SeaH9r2u6$91|RcUH`Z~YJ7^6chaD${YT2Hr)?bUlu!-#BT%Z0Hn3m> zSF(}Pfe)Pl`?uloCo6tSKAdF*H=S&UaR1{K&k~zuDSOw#np%3xwlr4?qk)LCr0>@`JrotGYy38yI}2gxQ*h z!*2&B^H_o~?9aXHQ-;3rv<#PiPpxnUR2$lVQjGId4gG!tyi;pf5kic=Y+ljRNH)Nf z$(6IDmtxNXl$J1vd_UQs)!{CI2=AN7*j9A`k`Z(Z=`vfX?vQyb7YMH z<3g6vZ}PWL3w!Xl*m=-Tl<%--%p`xKMM zKjCaPmMi3ovsRrp{%KNTVv^nG3~Dr2H+kHr)D~6Es3_Ng(vE&7Me?Y$D6qW;Ze96erf9e)SUHnqx069j!Fy@>wcH%|ANHNP?j$6 zl-o%{&&tyoL?T&IrB;ZRY?SByYuoFZ_KG8MH($5RtHmc1A=j{y@F-|iu5rv*;A6B! zmZ`}Qr1p?uFC4p-e}4Bt9P!k>;T8DYuDsxO-T81@%>O|{)pAsN(DFCVOjyt&2XW+K z58zn0L!ji{e-^wp*x32)DzOyvH3)vcS#)LQrpxm_{kOQb@7FAAOVL>b-`B~d?C=k4 z_YQ2q>|ru&8)<}mIj|2DRS5itYIAb$^u+Q9KPBiIA&AXj`h$xR06LXl_pifr#ic#z z@sOG=gEjMr4??!veAtFusc7j4GMEEx?Y!=u-a5LV%Qz1inIcRPt zzXB!B{;N#F$yrXYev!SoXp!r4{|8w>V@Lb9VLrA;br;!X`*3JDzu0>=s;Qjlfo(PU zt2u?^s7E-|H{<%-IOHi~7+$_+-q?)TtYf9j`AMjr8*-)5lfCOQbr&POMU?xCLBY?t|r9KlMK|u-lDi3+2Ra|K^>%}qqTDkX#I4+(W3vM zDTm+BPWe={m2>CXKXJf{mc-Khc3=hV`7`_@Bcw+a# zidxT!epOr1uY+r@oW;Z!H+#LSQp3{+m~?Qv@J|nET7>_FRsVPsOLKq-AY1g9oo}>he_&N zZ;=z7*?wa`G!|D)$f7!$L?4$L5vu5O_9d^mWTSLrK~`Zey##8t>koq4J;5SlcP%md z?kzCX0EA(+-4J-1b7B!!{|gb7eSOLMJ~FdM^2d)*i&E3^M&$I36!%JvNd}*c;uFH_ zlj%}wJo1$g!|mX3${Db$)sC|FlA36Af%|nmwgma$l-UCCL_PptU2b9P(LsoDaO|ho z_eKO)28XnMWIGMduAj*}iWAZ?vZj=ZxUA=iS)h#~N5!O#238`=Uv*I?cZiX}_6<<& z^xP^Wz9LnPp!z9!Y{X$zH*(<6orn!dhZUxps}At7gsmqf0t3!~vDrJ1*sJ!OIJ}v? zZA;GPvsWaiRF*HA`;c~9u6LqUZqSJ#@_j{+HnyHMt0e?F_QXV{lzG>Tz;+GQm)8PS zRDpjGn7fs>DZ@Q|<8PzFmaEt{0j`$|!g4&ovM-}O5S{v&FX87A2b&4f@e>|Ry=tXB z8RyaU?$FbyPRBE=yZY?RoXWyeY8|8lO|2(n@P>u#Sg_la7QQ)4eZI_cofR?D5pscG8p ztU!TRn7A;JN>Xvuuv+vn0Ad)MpKemK-uKdWA=~Tn$k>X+s0PjnlHaUxHvJ@@n6G=X zn^GFL7qui&e<-`K#m_ zFKcv`L6@F*#sY1}n0Dpaxch$kL^o-+nS6R%fvE_1b=e`2SJ<)J)TSwMz`n?n&r`$5 z`V&j(Gl-kMYIcS_q;_5aC6JP+4nE9jh*XO#+0#+>uZP<(a(!^1Uy{;a;3s*sEf9Wx z?d7JYt6<=2%GhsT>!}Tb>->~!mkO-wn`9e!44C)(&U39{On*=ej6*yZ#e@3bAJ}@N zNsWI~czH8)r9*N-umBy~sg#g~!&!cRKjG-#?H<%tC>I*TCoRtkERQw}({Z67c>!9S zKa2M}$=gcH5$0a=F(kU`A zlUQw+KI6`|oeaH|sxFp`-OFiM%ALm42Vo2EQd}}Mwh14A4+>!9{OIKEKKer3$=iYF z41|C$!!Yzll(2Cz{6Z#eH2400crVBQr}uLFAKuHs#KQ5vk@x@fUQQ;~|KG<}{+IXK ztg%x`O1H-j%(J<2NP3Vk4FHKuBZ!-LD?!^1vM(1&6u z%Mk+>q$QNoYv7=f@h^?w4nBxDfC-!t1p5zg1h6V!9x%WkNKz7xly-CqcJJ^Q{aXRB zr3Y6C^b))Q!rB2`<%l&53Q39R@$43{!2?Jvc%P#QTnUE)4I1E0#Lj2biR1x#cMANE zdj+S^K|WDyekcM_@7DeS32qhkPkpC-S0kal@L=1TfOOfci+rekekq1Bk%4biXMDnD=Y2@8BdjkT1RcIv^fWXi1=D zgy65C`&S?zAs{FZ1uHbq>p0UTq*u>CI;d}xuYpY`$mZV^8q^B&3T zAfTRp|A781l4CR22(Hf`)E}Qd-Y)3`H90lTAI6_e3JS0Js_mp0{f(~r-Jz29~7WVgQ>p|Zyro?oXV|8K$il<0fRK- zHX*)&KmBDtJjcJ~cLr)d2E@O&;iPiVB!9P8j0SDzX{$}Ra&M%x3`KbzITKqQz#80HCRESQpkIU0M22+xYaAA+|3X)kVsK=OMC?w2;3 z#s6sUYv50pPNG&%&+oCwO-3B*!_S@I#X|z@Rgms~+ROBx_Kv%Kco0T2;&xou_a366 zfdp=E|Lx-(Um&3q3KW3qENnw6*qwy9a~#@(GKB$}-~uv)^cZ_*GcOhOB=`;X*C7rD zA_xhfB?3y=-%Y1v2poHIkWmC1IE>Dv+In$-0uwg(`C>rLivN#-t4(kfJUmFtc7;V2 z-xIz+Hv$EH0qmSEOOCkrjAI)OZI9MkI1Y7jO3>3GEiNYfbqoJP!Sx5B$7`g$S2bR( z%4MAdiOFFmf68+=y=E7u8-Km={d(&Ms4#mMIefe?htIoJmM2VqS+v8g2F+7>OVBza zjKywxDK}gj5qEYo+FEZ{KvDS3DzEe9Ud+kq)KS#o9hR;<4fJx$FO79x}5-TBYN30vF)hEV@ltY0f6?+QQ z1_P<5?Hlv|b+b=evxjKxe>OqkGGlLsZaX>{j+@pm(Tg1zuM*0b>5!Y_IM5S{?=D-@ zYBCtSI1h!=Yp!t(7qIuOujWF~SLG|}$1N2_>|0A$oCu&yd33Dbi*UweuuF4Mzy=;L zOjB3BMS(!!ndlG@xwRO;{H^dcZ-B8d=?JSsY;{bKw7d`W+I>s9mT6wJXxx68FsP!S zhcQvU_KQ=-6}{0KO=`P~jJ7s0 zzhqxHHplOoGYPQ#?QZr^Z4o6F>2rHhp4DUgf{jdgm}>P)1e~!mqkdFonRu zBd@YaV_FILbCoYMAR0+}b%_jY{T)0EOC9|WQoa_We+EVWh7bck$O!``$bb2F6y&7$*2yJ^Reyw`X3e=a;7n9xE!cC6^;pi;d(o!6&wtfh zzMqCjzeM!0ib)_jHM{DN{S_mYxD$Ehxy^5o!t*1G_tKvH6#*8JHC(x?>e|e)`b($7 zvo=&-Y2(Ag(?p3`p{Z-GQ2qSWO<3@W$(?upJmjrltDP*pD$1wQBhh5gxukS zLdox0KtUFro(V_76#JC6u`*L9nQ*%|OFQ%>5z@2yiI?S9e=gf$Y@e8JLI%DqKqn%6L zDANMX)h*tT*iz>gX~NQVTaKX9$Ax)GC(B`6UO3O}uUXZVVZNsmYT1GvOT9VDWj z17mITla#~qq{Ex<50-uA7dliP@_q9pQQBFIWei|Jr|695$-)iqP<@Hb>!1f-1mlO zs7~7Zw)!giZhrQGLJK;&DjK{Nd~oDl8#FWCl8UlB(sBNHVrzVYmS3kx)(B_yQ`4C) z+>rK97yo%4Lr+Z1eQT`c2*n^iw7wR#Gxi}7aEQQ6yT}g`o56am`PG^&>e+8)B_dhrK5pr+dYln z)@$)RpKRrdiw7-42dot_cKEVSbywb{J=7m}WZA)2+QaRSaSRjmQ!Kk_Y2XvpQc~*UUeqJjHR&r<;1wJP&t&M#BFe?U#h9g zJ=J=jl11erzUtT1-U#hZKbYs06+YvRxk|h;B~i}K5%VZF??*+`z$APES(|WgHH6cN zc|gNrv?0~WbF6it*-an%(#42x9J$C3V-8BD^4$nfYqX&D`VUJbam}DiWJCC@Eq}E* zOK-~;iROm&NrVBuhyL;c%fj2D^rG1Int&y|LZ|CNnns!S5^%*3+Xgft8W3Z|3bpgM z)>h>f=cBiM(|?2>u{GN_oM6zteTDBhiF00(6Up>8P9<6#>=ILaO)G#)dkvKwp*bJb zdLF-f(qG`U$}@Vea!x%@XzKz5gdz_a$yDz7M(KlU{EtxB;A|E<@!S_hdQlzcyX(V! zDPXM~vSLer^d(nNl&4CU^WL$THZ=XS$C_KKT8eFw5Nn1@x&ujL(YYKVA{-xErPy{F zX!K#d%M<~3&PiQf_7Q20p?OahI5^7r&CfxrPMu`qeEM<{3^iSC?-sqafGvb*j z+bPCOp~iPpr1N}9nO1QvYZ{6eodsXl!jT?cjRm#p*>!pAWpqz9WH}4Th7&)@x-tGl09vI|^;&fqrPMpJ!zqtr*ci)sv7su4wEH~fFV(Vz$WWK=keUbTvNV=hNl>9x~ z_tpDKzG?P6UY*lndt}alRhh)x5Rc-CQ|T?@anAih0Nmc*;%Hg_M`!P!K0sB=`yI(g zRo;HaTXQf%Py(m`7|>`?Uet=MTR}W$!&N6^_z7jiiS>GkULQmQIW`jM&LtMhxtEb4 z6B8h8=)O*32W;_(?`#uDG;aWfX< zpSV|9^b;CtMy@057GKus7O8^;U%3t{VyWd7LDtgjYz0bh{u}M@-o0Eah1umxDuUNn zXuYqnPFd0z-aC%J$1}Byt6f7hKYY@nWa5QCr0H4aoemz023_d?McF$o3&TVUlH0az z+qUs-+qP}nwr$(CZQHiyznPwnm~+wn5*1aInQKklzoa9_7ry$=5q(6{*z zdc{jx9ir^p$Nq+>(tTD~|EOlEkXv`ZtTY^&3I#_s%_-lhlH@F#sZ^Y%hFNeV6n~?9 zv1T$glr6`D0|SAg0;=U$Q$YOnSiyi(fS@(%jhW3TQG`g-v|_H$iUrj--=(%T6}vzilgk6 zAu^C7k^ye^A$KJ~4f%iV+=YeMaca@kai2Rvq{^1uS?LUx(~g?|(hg%%hb^8M z;+hnHUFIV9xtQyZ8qHwSFjkF`9$WA_gWgQBEC=fP+_A!g;dxLD& z61>gP9ElLjQ1tO>>r2@XcS@}x3~D1TQY;%}?E;kWn>|kQ&Ol{^g59SatLV^4>OHhr ziloH;D@c}?M)n|XR#Ng0*faIiWv?tND3ZcXR`T@SqV~e_U-EukP3N=@uf5@Yksjcd zEEwB28p=I)usks|UmASzO-(n8sMp_cU#p8+z?6!W0FiGuE6=yIz$ZEDW|uFnDR6h- z%dhXF7mquw(qS)X-R|~tv~c-P^74{*0KHsmZWX@vx|-#zSs!(Ad!T`0qCvNfS`m-Q z_60>3M@H*43ULIHyS2hlXh)^E2+iUioB5==BK=jrY7?=b&WCX(QL5$B1omn12MTZ9 z>XH^gjArGm>@*d${*#P8>?&-Fzd4T5moiQUQ|ll=T|^x)_SJssdqRf0l!K=9%liw- zLMnaP;pD=|Wb%Q^U77DnzjnVlnZUGC>%x86YsDv1yO)StLrn{Hy^AC-Uo@9 za{sA9&G2N&#yVFLy^h|kH>5ZXwiQxo9CqF2+{^w=Zq~>{hO3C^vz3UcTz>hI%a5sor5aeKWQ!r-b84 zSiP>+t411s9+IIQ5mH@?|Dc%f#8|~w z?3`sM9L%-M_U0hlYa7zx3*UU{GCe+4OuW>(jE!K+X6Rc9RLsiZ3j8~UXNgEvdSTPW za4(K(cpd1jG`Kn`*8v68A+?I1KuJlmlk+TzXC(rU6Q#nX#$ExNoRdJy7=cF&717|p zjGV($?TTS)xR=`g5@v`B+RCZ4M_;ko(L&W*xe?ji6#9GD{7(j$1dL{$4r-Y&ducl; zhBy)2rxt04KIu}gwuymEi{TG+!v=| z{(r^8()6}O*T9JtV|2Vd-sh*+I_cOB)T{#q}VXIx5KjrMvOnro0(3n~=Li(WeX{kJ#jt<%U{83!a?tpxYOLOw&sconxEZ*!~BFv zKho}Q(Tu(}uUd=CX<5tp2(u_k`2Wth+aGkfC1c zP%S4oHghkKQhiF+{2g?CuKL<7@Cfow6!W)&1NzWwCKv%hU4_jgHX29%M>k&q?d%}f zSD>lgbNWmnz_ut+kLQ{!n>PTP-N-I@q_E{7;g)Lg7>aYc7;{R-Z|6K(iDXMt-WHU8=WkioNucpDYl_Il)Z5RjQGc9At zlY^i>+r>HLS6JjO-^LMTr*PoHlU4%7P`X@uAFpldVn!X{nE~>1gZE&$pRq0TxN-M_ zPkF^h3pXt-Y(xGM8f3t|FV{|8P1xE%>vmC8Uc7v?F?#9VeMYd^VDx+CgoJfz#jPof`Ik z7q2MQI~Nn({}V3Sy|S>ba}Dgv(+huId}ZP&*_x`7Bir}R?J=alllINIx1Y{PX0#&5 zmrmxy7H(@HSCb0 zb+CodV1~#?mzOHLPLWRaHoPE4Ka<+f{tIMl+BEUTDorg4*12#X%R$E z|7&a3|JJh%6)wat(m_XJV~X{ePqXKMCL|3}aYaTzw| z6lw)PjccvH7yQnZlfxXEGJnhSD#tT6jj3?yLaui`2@jgSxKd09PeMk?SYjbxH2qKy zHUJfA3C`3Ci|okc+mw-MhwOuIMt7MI*xM(`Ucghzpnc*=88Sr5+RDSGH+c zI~O}m9HT|kKAVQ=7UTRuwCp!evRwzet{@zYTy08sZ69t?B;|Ev*B)wXB2%5`S*hAG zLj?lwxhgh#*~f0#38i1QsSFh#Yi?GOpxC1aFl)NX`aE1BFWvE^>_x z@(`Mp!`_l5gk>{pKE-*mH{=QbTHZhuPVT)!?7Jy&>2?)L3Np%2ptkD3 z%QkLYX#`Y_SFXYkW|$Ye)O9Ef>6iUa$Y5YbfXPESE#WeC*obHA8Gl{zgeFG0?#MOw zPECQnIwvDUoKv12rW(yKuCWc>qOX_7k7Iw>m;xHpqf1}fq2vYhPTh0WT=sVrx|TY7 zBUe;+@V)wX##-lC$}HuMHtFJBz`FHNbf12br`O6BX+3#{err3 zPF%S8d!ov1~m@7y;pC!VCpr7q#?D~9>}hJx7pZ|oIM^5Vq2epnZrl; z?CJ@!f|UzaBi0y?NI{c_=K#d9g>#l7(!_a98M{GM4=!8;OoDk2Uxz*v+@Za$RxFd~ z0F3;H>N`>YS+Zwsn2hH^!f#KH`vkoUWVOlB)@nxDMq~qa>=_?| z^k>A`G)gW^4!|ca2Kb@rsT8UU9i)8QfaBVDX<*`P=7W_rQ*xvq?3V25K--c`L@ z*gztXSb|IbX*xWldg8z}CSU1LgJQe#mr+*KA++hk;i+3e3eA++DJy9>QLoG-udEI( zT>21#7y;B&GP<4rdbv^V?)pP{W66yHVZDx$?yl8?yoGN@G=`a{_9bw&F0`BHT7NqP z(}KU{2IHeF)R6L2^N+`rgr}B9h1u~j_o)2R$F<|aBVDS&z&iT@9xbN%uVZr{IYsPQcFM7ll{B1|`AA%5U28373l+Ftzmw0snHOhQW7M3pkPTr&rJ8cTc6B&sL5C z$tHbh#d(ief#W%_Z$B1JSdjiF1`GMTq=8ZF4y>rkTF*}(b8$V$KXS)mV8n>Oyk3j_bSzv({Jhp1tHo1*9m*d^) zEo~dE&o!#pEU65;dpNdzEE@k%@=>Uh9-|_tl@XKqdZ5tFtf}PGxb-(l96V#A=B&cN8Sav4sx#HahZxZ2r!;P~K6(;3j zltb&}FTZH}bl?A=5ODra3IQ`G=l?4W{FjWgu>CKg;D1*L*jbpE{*RM!*Z-1nt1UXh znC9Ys060QcXGtju$uMWw|C;e>7}!K9=`w$bwBkit9jHaz!sbQTzw)oGuf07^tDL6Y zmQ$Zw@7wlTH`sVdr7*2kFjG*~V8MiKZyo}Nej^tfLI4Poeqf-7BjA8egkt3PI5hln z_)ua3hVu8nM*h$s+60Q6Zc?O^Qn(->0HN!v#4_z4C(wEgCxEx1A(3|95Mbl1KF9DT5|n(K$YxNE z0=uRb7ofBLDgwjel^*3f{swUZ-C=h(9v&V~>MR5v#bAD;5Ag{NCQhZ{%+Z1kewzwS^6=lWRk;r(nJ-fL1s%Mt(v0Xwb8WBOpxy zTOST>4g!O6cS#rN@Wdk2$$gi-w0~hWT0hdtp56{&^#KApNgz0&!{-X&T^&m~A+>-F z-cWYVfIJD%pPJ7j0>?TQs|)?^o|Q}RAWuG@-)t*FdCW~6n)SA}`%C_RL4JMXw;mn^ z>MuVRHvI}X6~DsqYgd#y&dr$J!_>eKR$XobU)e(&^o*!v{=u* z4?^m#J^<1!*z42BUZ|h+ySFz0b~r1NK4@!@z{B4}tYVPO-+1}V5MeHW5dxIEH^6+| z*40YC%)NMY%7Uf|B(Cf}Fd@IJsd_nHz0RD(Xi7e4?yAY?$b0>Ag) z9>X8*qo43w9nBxS|DPLgq^+!MU(I#j^k3M@BIe=oOB!y78aoNp*ChiAaQ@$oCBUz+ znoB+G@XSYF&7_1h3b=8BtE?Y9VxWAmd!P*qp@h{Jzx+qh+LtH;IRr{Iq_BXmk32v* zXu$7Os9{PA@nunfz`;WsWHixCU!AhQ=8&~-LzJEbhCXDNmghl{YII^S0G~Gn)}}wN zA2CM%6mSTk0wI91moI=82F~9a--rl6cWR%qABh4$-O3&kK9o)OzMlvmApreh+j|{S z_0GOM3ZS1bh{~Sd@t!q!5bwb1J983)RRluVW&CNAlm-|4?F-@reZNbPGMsH5rhC*D zD55NqxTx4X(zgg(MPHJ!uS~#?x@qderdihkudKOIpz2b|U5ZEc>$xZL@3YxtuAIkK zBkRty`&);LN$-bl*XJcTmmynzTLnOq&W=a~i_`cVPiHcZRj2f6sIF|Sl}{CdDrq|v z=27fw6cZ#34tQ_NWOlyksF>r@5g*Cdg(Q!!_hZQQOqrHg3WuzBUygZzH-3@Hui6>% zF0@JKceraNIE&cwbNZOEa8Wg%BlZN9vJ#)@#}n^TE^OQ*=HB*+RK^+E!N$Iy4&Xv; z@TyO>BYvjE$ya6$2!uh=72#i|yo$EC0i4-tyV`;=o@8t_l0C?hUGwJTjAEv_9Mi)v zzS)Ug+G|^)5zvECOP5iRyWYo7xXY=}2bs7l++(GPzG1BAR9p8v=N|JCw+{V3uSZ@N z9QW4bdaDsz&jpZCbKv#<&&Jc=g6kBrjOxP&4fOj$h&qnD*~_${p(#YSJK$_N;(BN( zz)AI6)4~?~0KMh}{DYK^`m#u2+?wH~*P%^^iBa-zOMS=a;E$FUMyZSNUCr&x6N}bJ3S)O~8tz zCx1izTr-ntA#IyZZmZBd$wi76;|Jml07G&1Rygd}6d0&+?(CbJL5y1cJUczGGRBTc zoNeorU?x8*IUobq8LK-%3z5*+&mxV)$1QgA(!(HRI5#j-_m86)GW%1MxM@~qpjzB2 z(m0gfzv&i7>MSL`&-?WpT>A&MnBJ=)@Cl`6nZRBo9>JTSpVY(%amG4g5`DbbJg7d( zN&nOpPOvOpl`IVi056Ilq#BysL)xYD(B_sXj(BR&Tp9C0LO#Ofb2*Z{Gqgj(| z3t6`50ko2?K+x#A4rp6Lsm)Ao(IUtkPP69KEjdp#Epx{x+qd2iNoQGF+C*9^X%(6X zJZl`st>4{#x{vXF<7KjZtsySo9&EKm&V-X^A(=10 z6s%CGLeh@XHc64Cly}gxW1UQu84?PcZ_xu(lC?D(^>Cl{weIBMHrwx9UKa&mu|30p z_(5sYSDji5)BldkhdQQD0g&~RyM^A4l#rr75X)z^)C^zUIdjw83-4%-xJnjRRm~jy ze}uSBU|qvkZx9FXe&hLMzHa^5wA+5{_C;i#P6wyKbi_Lypw#f7u!&UNbQhKnMvXwPU^q2L!rm}zoNes<}z=sa5xei?0rqnYlmp@vn3<1X$>U7!$cCA;ZmzmC% zNG`;MeF!y!7tl-Z#%ktjc<$!C-K-poFIyUOas|BWA}|-3SN}ZQ*I$1KO2nC`T~C+A zab5EOpT4cJ?rKpEZP=!r{~R|u%+==afM1?-BTmgMg?$aW;L(qNz2 zbg2@mEaGe=)6@1j<;6-LTM_)E5f|Ci%_vL~R0JoQ*nYV)0i|=zOH_`8XW$F_Fq+lp zcE_?Kxg8$r&{Z9_*t}X`D3c)MW}wwXBP$*!s`4ZBd>Z)<`FB%|o{^mILqr|w0^FBOU*R%T9y_V-=EmD+RdyH=^`%Z_aMRU%I)kom8%EF~iJ*DUC<#5z!`b_G4sCy$#bY#!$oFsJS z^W@~ruoHP?KFP(2iAQ&BGdT&gB-QAnZ>}x-L<*}j0Wgu+Z$(E0xx29=%5o@2gXh$- zRZX*PLn}ZI(^F;jg-RgA zoKsCqw$>);=BU9qPZW%mJ+X~p)VK0e zQTVOsuRx$iCw-BUm7lwkO~kzn$t@~x+lTHY*h7=$^A_&yo2fgVwzzotcV&+_GL1Nr zZX4AIvVu0PVh0yon}#q6)%*CL2@>ufPo0({6=fv6fSv5A9_(U(7zBfZpDD~QQFfIka#du( ziV~0k6#YvewA3ccwQ~DZ0N!kPGwO|5C%umbNxr6#yf|HT?w8KL_8$iJRsog5_$!Au z4g;P;P_C%nAya{mAp9PMNnlBgk6*oej}K#U3C>v(U8QgP9|GCCe`5PgV@6-j9)CG4 z#!kOV!FRu95f7o)Kx?UxmQ>HjNvUyF5h|uXcvZw&m2;QonJ54x8Cs2T865OA?8UrW zE+cuMpuu+cusoA1z3C71Tf|rtQx0@=vIu?iT8nZdb~20BgKMmZ+q-NhDw#c^>@{je zRu`{>3JnwYuPqLV(e#%~t?#n!zUe7vKZ*P)-t$>`=F3VMKxT5?zvyAW5n5sJp(L)1* z!(B4*hV5Qf{U0Zf^UXqIj|c0JOPxh>fN-H8=*%RcIB5nRQ;n8cls~H}`UZES`BI6C z4?19YL6uAaVWOfy<4U=CO2~{ST4r+A6Fq)xRUcjypp<#&JHCPP4~A}N=bb=veL^Oj zP}$Aoh7416Gpdy*L3C4;RHK_Nqp(QE_hzIEW$4`0>U9PWO<3`gbEzbI{;eQ0b z66G3T4Xjlf@nesbm-CEOcnlRU;ir~+@Pv~#x)W_(Tdw^Ku1(=~J1vzX#y^(Et(aLk zg#^$26XJj)`AC6Jl{8TN;q_>E~)LxAy^PeC@10TPc9y&OMCR-;^Uvm>k2*fR zjA)tgsV7bqY4pW*x;7kJXkRa1fUX8#W&CsIu1A&9(k|ReovFBG1YNgqLbXTqr8MD< z`A1;Y9Ov?H`wdO^V4Q3ivU}+t`nyEgsvMP9Yo5YeeSJd0E?p=e;mazpbMpST{$ps;=XnlT6Sv5MM=Qx> zJi<+eGt7ot1qvc0tfct3-)FZ5bB?+s?{tW%lGc<`5(GZDDdh;7^}sW6C)cpvX5DsK z`Cj>jvMa*mTx+>NI4CbOgXWBO>M35m%vxj@EATb+Lhc9~9v{JL`rugON(!yExhgX8 zR%u7Z%vcUq7B$SO@xs4jZ8q@h8Lou}Y_CFCDkO8-dESh-j>WObafRFd>p&eTHdVb`^fR~p6{%Y!X1g|+0| z?Fh5v+OtKj?izUuEF~7YH&p*=?ix&0LvuIeC3c;I_HQ6@m+k&Xgdv=q&hJnq#9P-f zvNJ3s8le>}O*+88vzyh-#WL9k;HO7B$gU5Vjd2L)-5eVPncj&9jY=HXb!g-TDeH9m zKwp9e%Rf`y5|Kb_JvX7dh5#eK;#&SETN1!CV@ju_x7{*#$GBHXv8QRY!QCh+tM6qh z6Jl=DGVO&UBe?fPd*FOVVSH6={&vShHlw@5q6W0vY3hil~4VnQNcSlQ?`r%7_sxrsLR|EM=ji3m`ZT8quA7p{%ml$V;{ISE8@`+#jh-7fHF&>3zOtk|pB z^W2v)(9p>JWHc__RB~4%*QGSlkGr}b{Ai{+FxBS$Rro2D0SpGt+j7s9bpvMfN~~GX z+(VFCkbk|Ead?hvODgypZv!O5EkE6DKO|5}uQL;2$+Mqx)rO>9jD#&Wbwghy)eh%; zi`Sw0GO)Mse4ab^E%*61gO+m8{I>>V0%K=zhJ)vV6D*-tdXM-1!yr!q&E|0eOFW<4 zCSe4s3AzZ_-iB=7U~cb0;wj>*nnlv}%R9~!`8mb~apB_&?xsSC=s+ghwz1Y5lmj!8 zV1`q~u_J=s8`+NN^4A1Iaq7&(dQpc;sdmYJsvzXWXIlOiy&U*K6y#?7R-;bOpGNXv zecU3$l~Dh!ak<;msoPCaQ<~GgFmMc+_Uvmq(0;Y^5;ggJWlHZ*slV8{9cnxCfX=^vUz+ zHJwCMbmc`Nkt#aPCD3~nJltOaTc}*=!X*A>--Sn(Q?q;azmX1O^fc))Z4rmbicl+Uqio8biQo@9PsXX@>s#Vj9ua)|r_ zUeyZ3Q+4?-4ymNJgk*UFcd#RXk?q1Ec~Nd4C1j3{?p;NdVitwJwaikqsoyxDG%?w3 zMtCQMWc8WDq{=0|<)W~O`{z4;Q!Yk?1 zq^V4Uy{V`vvP&ce#box|URR#)gzA>Pn&H=(q+&?DycYFUWAgP}_HMsqYM+Hq9*(4O za_?|TV0zQHMy;V=4do-=K$bh$8dHKwv61`>-c7r$ix9domQGn(vZ27+tz`^sUXx=T zvcJFX+kEXoF~S$v>T{L%JucHZDvG5h#5|J$br-C@=6dsl%|C5qS02dM`=jN;iN5L> z_FLWSbm3T3+-DNimVXlLbWg>_VSh7){#vBms?LFRP2$ecuTQ3`{h=sC7t+$b1toN@ zo)N~+>4&2aOucb#?+@wt$~`&uJ9L@JsWu5xX{L&`y0SHiagG3db+Y0qD5f4iZ1z|DK;2u-HEG4Bor;@V5Vxl-_ z|DKFqphN-;DPL~(Sg_Gku3w*owCZW?8~LpsKfK{c%1ZoA!}>DE6|-L&7Hu#sTSt65 zIu+~5eGW*&CisY&(K?fY2SExG>c{z-b zUq?)#qFQXF`Ok$KZE4`B)7LxPv)#56omrv7=F|oey%Z`}HnDnvaEIZPqkJ(lxC(d*t8 z*%8G56X6HP&p+=8C=N?^;Jq+k^7v>7;uP>QnrHyOqg?MF1utQ3sstL;PT7}2XP=bvMH35rS zR>*3h8CFsIuf#jr)|VLc-7syQK4asQO9?-E7IN&~giUTVmDvAv`PY_XaJls1*?Orfp$}6BndTPA&MSN3)5~#mCXDR)q zQES$hbfz-(Y?X!)b&-hWYLqu~b{GpyYyaHxS;o=!6<>TSen>ETqCKr=< zhf#IiTddzEemuCYtC+ggw<6`@z)v0^jT7YpTDafjH%%K9G9-UKoeCsGbxF8CVAD5Opq>JOh7dS4 z88E<~h#>xXFA|~{MjrJL-U;jy60il)zMS4)8uS1+IJl#;V7~6#2jr3C0cc=xF%hV5 zCO}G8o@5#l2>en|-d3LeIZ75mE+29b5=<2ICkz@-gB@j3OH7@EfItA^@Ps;8pmXvG z3IJH2f<2#c89nkjj0@PW1bR8lUC@u53}hcDvva`vub&J8T^Rrb60{IdE*%-=Hj3>& zh+8;8;CV{`nN}x1fF0#mT;nY+5a7OU5nw=Q-*5ZJr zdKwvuMScxc2(%EyAEEt;UNpRn9>@m%A*`Q=FxEU|FF@G;Qc6q!f~&8u@ySJKuv?*5 zsFz_*4-@LoF^H}aYg+^K-~=?J$Q!WlP$`74K=!;69P-b$3LFO!0RF?tHDDk|$G2qv z`i#~ZEbQZ5utoWAQ9#(=k5P>RiUJNOfTToFpd20n>-?DPd#b}Cp8dHE;Tu|P3?J<< z<{qpwU&%joKs)~&Um%=*7#~W6@F(AZ@K5VLj~xI5#yOO;z&}=A4Fl)C&W#1e<-W00y8tCULWyASzSytq0V0wfe7QUVB6 zbXZV;L0trdB7!gYrwm;f;<}DP;BV7%KnFqKf`6c}>e;RT*Uu&ItZrZ*^tX)O2PCsW zo?xyIqzy14D0^OS|IaS-kL{zc;VUie4}9Q{8_$JbZf;L8SMTso80sO=1MG)X{AmR~ zTq4dA~OI4+ZhG3JyA$3wuyr*4D555uE*t zRX>-3V;SK9`m06WKTsdxywCW&!tqgn9#)S9-!Cfvyx?Pwd}Uu2;!JOel!y*6m>?mZ z0HAZ^Jd1+?BpOfH%zWPt3^*iY9|C0)BwUsr<~&dU$oB;q21PZ*vyh-~e$Sr;%Rxja zn@?dA3P=?5G^ocdj;M_(2~ z&UyDQ-&~x6o#a_h*m-fV9ALOFw%C7gK>iqipMP@yI83B4t=}%Q(CYc^=WR4V2)IDj ze{Kn)j2nK(3a>R+m6{O@qBd?)#=b_2=L{9*Bij0jn|wg}#3u*0Bb-M;3iq1qtFdy_ zshVTT6SZ+iIShR#+j`j%(bFQ&_}icdl!00H$@coBRnZ2Y889io;!x~7MXvnA2mYFD z8qTJc2cMr3X$WX?$zM07f3x?oTpYPPSQ?hEZXNEm-ehIYnyGxi_7#BQBh#27{oew3r3o_q*ZHd4Hd#xT*tDRHUvP=k^iQ!Jw)3KGxjx!7j7gzK8G z)%S(1MEw1{0uq$b0BbK?$ddP#w@kjfCD|p4Pff&YQFn0#W$3FCYm6>E8GHGyxo0yR z#r4;|UL#tKm;WMqvG3tW(lnSb;bYg6a^|058T&MG#lnD(-=+Rc0drNabj@HidO+V> z&F-Q9ypF~mX|Gjn(?h^PzQrJntkl>b0t$LiqlN)2#(^tCSM37cnYz~YbHF(%FBTBpeIBhN) zN6=C4jFqut*t0*s3l&#fWhl4?(Uy`*6-+g<^a@zWC{o|J4f&J(MoKGWRJt46;v-ut zbNBmeL!DoY*@OO?RbR$#Ne12>8fel3G9p6GkkGZ3l1?45!E_QU@g#ZY+%B^y68P2h zIipvP0WPJdQnHUdr*OaBTZ_Y{UPUXazdUy5DuglZo7v_@i+2@jc`)nyP$AtL>2Ci= zviE+ql$*y`>pOThIHmZPHQ)!bt6oyXY`LjtlVI3xs`m{3<=n`|@6AvFZ{ zSnX{wHIG8gOTeddiAz$SyY@h^9(8)2S|omXYZv%2&+p?mql_V79z~%`$E8Q{3JE_& zu%6!ecO_q;oG%Sos21Jb@0Ks^4Rk48!pFBB7Q1y**uArG z<$ikS1+%;@u_c{`UXiCsFXH)jI6mh8WPO#t6dYJ@886hW1!I~T9EC@DkAMW?yGgQ~ z+5kg?50_XmVGru>lExEvM|CgRzrNx2Ye=2(0XceYWy8-e#{(@Xf2DJ#DUgAEEd&)C zMr`Gz2Eu%eudK5dRg^tip%zygwmq@b^UkGwBqU8n z$YwcldKAWWegkS;NL#z4Fy$lgd+Gp4%MG+6LGNaJsfWjvhvYDcVZKFq|U#TO!+dr3(i)w7%hYJ?GeE`c-90)vDX4v4pJ) zgK_)eG(m^jU&~%E+9oqV?edp_Wsh4kabgwE?flG2_m+KBqS`4=AX%x}bdi?4l^&O6 zSk+dG_sBtp()q~MIF5`yd-1(ZMwmLXCtB2i*b>cZ-9$Dq=?V!c4DwxQpX}xeoIn_e z8Dgi^UHNXx(p=b(aCKaPXV_B4{Q%qa)GH20xUzq&CwP@v*l{D>u1nlReTCfB?4=l- ztjR~jb5<&xnXQonN6Rs6Z^gFy-iqec1}m~)Lho>5PQ7FvrB%_f-<2#6w~RC6=ppgK z^z=_Yy-or&w4t8l`sf(X6Y3;G` zjfnEz@3W-8yeEY2CMvuaZzB&C_^dF>MYj;^I4a%wR=MqNR*{Q5Grr0~i_sguqA_kK z_0^`*P5#RP7N>T6G@NJ+wH`Jprk&vf*g2|?ZbH-Hw0>)#@xE+&tHG8|Qq>}2>I&UQ zM)sgur*C}?T6Z#hXtUbpeE(AW1h-}?6;2dayag?>O)cAuZA-w)Mq{1^Ef>u5ILgxd zZifKvh3i>vY;mpKo(5Z4Bi>}so@wDktrB`W(%39CM~3+5O<`&_0|mvI*G@=4zBo>d zZNNqQm*8L7+A1p7;PdUU7_wY-ok5$j__#78dpJUy9CTejK8QqfOinHm2&?GBW-ldm z`=QKF@lW4)4v?=?%n~*f-q+xSCgE+TUu&J0Zny`uvQ?3W*Xlo;ke_~w$P2r0<<%HW zI@gioeAUz#)=;~|*7ppsDluHU>@j0d*T4$B%K^rNHGgWwSDv8z;IJ$%UXubL76VV3 zJ*6F3sXp2X2hEGY4<+;ya^|9Yv~(ylyT_x78w_r*H>di_nit8H1j*!qI7-`GtNM5X zxS$7(yB4vx(BV`wlW=9O;A<7Cr3;=EpRWM`U%!{=kXSW^RT~t(V=H%r4iU_%O)0nZ zbmqv{i)`*YM=FI-ZD9V_6rVMA9RH&LIW4msd+bIT&+R)E^T<75A9~5qS+^SfCCKRK z!-Nm3% zaCZ8=cf$)4beI~yP?HH7d-3XRd2da_$>*>>(!v53opHCwIId!cLG7yROFT6O^jlAQ zG^vu)P~_EyMJq~af)Qux%{Zsz$OPwE#!M*(%~8IsJwqOYdgXRJ>X~kzub(|#@t(xw zO=JJR2h!&Z0oCXF+!2P>G+(q!Eq_>1G(^$3U?1@*PO)A9y5y>1U8C-YhK8$X?VyX+ zm_G=OH=KphmPu6Zzf*^KJkOU1T}_J4y>|O@7KrGxShepRL!nnEV67k!?(aO=G?PGH?|n&~JePtC~iiy$9?Gq>b|> z5w2Y%xIQcMgVk@OU9>!FzzlR-Jq+SoSZQ_Z?rYww&NltT$)Y7?t%=ZQmG{-6s^u6s zBu=J?^(31zdo;K(H4X^gFtM7F7Beg=hi6$IY0bEpE)VT-#;frDVkqhgy_1iJYUg_l zmFfyShm^8+#RpG6oUaZ9cYDVo3xO)j?}?j&TToSNp=X>ADUA#u0iFG=h{Nrz;ptyI zxdGH#0i;RKDAK+ew@&q((hCm@#>Dt;M2G%Q@XvrNb@2|=;fpYGmY5RRxF#dQHGkOR zf)u$SEz?O`bg|2AOa*3hhuDPRFJ>P8#vb)n&%i{ z)G?F3#65S)^sGY`#8H{Ib|*8b$W3&R)-vrjXJvpErr z$d}>4S}Np#FmxyNey~E75_8HH?7DHE{YTebT0hPwm*?Sm(Y821R5UdoaiAOAspC{* z6gPNW$pY6~02E6arISz}kD-Wva-sNQ5(_&UOWzxw9BEm$veec6-oH~rwY;xFVR2HY zlQ#X+fMT(%nLam^@(c%N9H>xD+%nPl!83z=vYGte*oB&m6eji$uI0 zy~!+&++g-FWXa|gw)k1g4zIrbO$FW`9(r1NMt^$iQct{%TFn_+l_v9CFQk0)Y%Rj+ zN4(EvcU<>xuTr*uP`_3#&dJC(OSgLn0d5PbA59Yk?}NCNJZI0^z3&2DGM8Y9a@yB zaBf*mnf^A;N?bZ`Zpi#|SK)U3Lp3-_VIhr!!B%>F^dqp#aIu%K4X!4Mf7Cu3vg@4^ zW+koDv@?daJxgB2;r)%eFPh;(>~`ZC+UN)q%lJ3WuwhHnqa{Rz zE#V_VcrPTi&Vj)e7xg%QEPjl`uvq5#8QlOp&y92iM9%x_b213#60l)#Q`9IT(&AVb zwx@cJAsLih<-85B1JP52x(&XW%0pTo%9C7;?zhbn{A#0#y|_`YXk2Yo-%!V39`t+p zO+Kz6V-SYMdFZN5#VY;`dTWp5 zh4wi?5+w5E4X4_~6T4Q8wdS|gkoSjT{FIb&68|U)r3c(R|viYWi^Ncm0ALzUb!Duxu@3T-V|uGk4>lU+bv}#d{wj#Jz*h?WndL&Q zQ&vbELWyS+_+;39Qkc7_mNv%~FkEKM!c&1M5*ZJA1)Gq`)frv8~ZeSO(HkI zzZ_|9hn8T~-)=4grBl;4G6D;bUd;oB@UPMJ*K|5|@GquOxkFN0e}hDj2B=hV4|DM< zm3b0=5C`Xrb54v|R9i6dDrzsjDYuixl?E~{KZo1M{E^p<@h7^!=+&6nJXb=n#!>}U zs9-EiC=*ysdNQAD_?t{6-Nw%=*G|tLwn<>JgC|#AnqMJOMQ~r+lQ2;@CZDsgUD%7= zTD%hvVRtpzQ8l-5#=?qx=6b!)gkqQ;M6TZLiA;I(mbNB(TRyW*fNhYgA?XuzfF;Ii z@0tpv4eVrmhS`qxUN$QjMGPkO915Bvv0|F}p=4xylxskIFYTZMN1;yM3cL%}K7uY{ z$!<)gVhssyzIyD9V68O}FnLj_I9YDJvYF-dZ5I!t=cYGrJJt;AR=#&4AQ)La3%zvfO5 z$-&f{B|AF~f8hV}5Krxm3jWK*soudg9BUaWim|l6!YM)cVrlj5r%zBYw{qoJS$so; zD%Dv{MJ9L8t8q<$)NrcqA8b}j(4#4Fn>?IADeg!!X0J!ePnj4R7OYiRn|iU!&HW3d z=Pi#e8UUTx%}k+8N$9*A9NFyL;6BUg;Z)*YDGA2;;6>N|yYs>cQCT)9j^Ind-T5o2*~#%+<~IYQRY*fS>5sF%^i$0_pf47knL$@+mviGG zApypwP9B}n`d^W|QGl0pjHtBZhHe3efQxoN%ld8;NeQptRA+Nl;-Zp;uB2)#4zv~! zitYt>-BfwY=3CgQVw&{ZMAP+nGz#+Unw1|*@L_IHQ~gcnYZ^uAh7(e>)dTz$$J}b+ z%$)8rO$5gJLq0GRt&sDxdv8kizjOTYlHronlrxhJDSoPdD}!*FPiYDnaRQ7g=|dfC zNma@e>XqW>7z^+c!>(TSoS8{AEXc9F?L7gpJ6!9bU))+%cQ2>o`Vvfq9V^NDQ7U(e z^a2=5Z@y+u@|h<=LVmkLPG2Tf6*cvpLkuVp^FfVu-orxp5jpaZD}Mhb(#49RFe-pPO}W+<0Ba z@|#G0lU)(syhO~3g=mrH{TzBvwiUG-C4Pft+Sx@Bl@p!P+gQrq7#sS#-N7_AwFrz> z5^A2{`98JQbeqt4)Piexf1kQ2^9DKTbr-H{q(Kbwq4O=(gG@d%$+cJwo4Z6u(45-X z)Uuj%OQku2a((7b+Fk?=joIOOP(#roWV*2NZlHc$XrVO2^B#f1$%tll6q@Q;zxE;} z-*B|vsu@WcSx-i&UB-V=UB+xYZ&KZIiBrAS3WJxM=7uRVyvxyj&spwjRFvT2P84;tbbMA^=PTzX ztnm}j7XxT62b>7^9rBi{1$~k3|1!oU5=3D^&z6;}#+QE(w_h@_7n;QkJDVJ(QS-^h za6NM?(`X^9o|X!Atl^^>;vl~TAMsjf375YK$)AJgQ;C-qf1Su!rS|GYZI#Cx!WY7(fJJTw*o`P@cj3^h^p1X z$Ey;%GM7@3w~2zH$@U_q{uJ6lc@I~1P6z=6xz#V@%FA{aUyWw<_lVVi>*z6ChoO8o zaHihTc1ehg6`5jIE6w4p0f3P=S?Dt$>NqYlPU&k~JsF9kzsx!e#(_+(x2QGgFLeYhyt;9;`f{cUS0s=3RvbJr2n22OI#B*_$j4}-KX%-ETv;sVN6~o z>p)cfdRicLM5mF9)VdK|2qHVs=%SK7r=!i1bjL z+Ruu(3bZ9LmqY~#c*w1ghVY<2PuXTMt5NStTTqCA{-}kdp95vn)Ysu8gJl#%b!(Ygizn9oNsrUQJ+~*cv?Nz zz5t(Q7a;!uVEBh55d7c8ac=JaLKYYZ7#aR2z`(%3$jJ0xH~%NWz`)4N&iwxn1}HjF zb1Nrf2Ld`#D}5(pVPivEBV#CDUa0@SYVNiX-3ls~d5K0FWoiGqccW5-;_4b9Ge)UvGSeF27V|)gZMlKn=i{ zP>;>U298$WFDW8r#Ss7_D~N-Ghlht_3RjzhfR@!@$_n6bTqX@a@)?xVJ%9$F4hTGHIwY(gN75eOlNOCOzpPCSP7Oh*E((Wlu)m8sm=!6gy%R{lw${AQGC8aR zpoZY)&Gh^0_(mXMj^3`X9}9$)@poiUawl>r9LCWVoKoD+C{6dM5OJXnaR7cNdEn5G|WA^2U;BT)LIfEheCzsuFjUE7hl`-T8N+%DhD zU+12zjgO96o%4pD={Mc%B9bBKy-C_Wc)ip8Qy@D>$U6WK&^ExIUtG~`oTtB-TD{(= zeJcolbGyren@_nBJU^HKCB7+vn0LGNN`!Oepg?Ip@a>4`e5s^Q(VxHWOTP~9znOQs z@;|mhKfR#i9bD{R#U>w8zrXUCTmd*;zYKnG)t%T*fJy{&EC9c?<#>0u#mayh{#&@e zs+D^taM~b{buG>!oN{uc1`Mt=^#-yDQo=b_G?R}p~O zIrnbk1g=1 z{uB9@&nXoK+|>OWe|P_#z|Q&e^1JLRTggYzM7ehhF*oIl|IrJ^Jtvq?u76|k8H(J* zv*Me^k9g(^v!gqA7@ODogy5RW_mxk^>dSAI+*|l4;HiIkZ3GSSs}Gp$|Km58vi1v@ z--Y|{s)YR~WJ_+qHz+_yJS*& zA&O5PJ5kI?@be~j%YQ7ZskgPY^8Tju((;~3{DS{JV*mqn`=yvoLL*4UBXn-Wy<}QI zGX8zJwl8|F{pZ341K$6#fr-5JvQCa?IyT87ovxw`7h7CPmE4u3dyB8n+LCs|d^Q62 zmPnp;42;KIOX4=1#qar^Hv}$f3W(c~hAI)UI>;h3lhaGbB*I`MJE!3ef_izlQMvB& zy>i<2CUt_a1MzAbD3K*~jEo<<<_?Nv%q#i4U^UPS!i~H%NV}=2&SQFqKnIQJPO*w5 zYk%Hhj+(}J|8oEHxyX-o`wCRt6AP4VdoO137Y5a062}>p&BGIV#)JYw*K9V$#3yGn8c|atfEugWJFzS#1XC z`UQkjV1af$P|*?Y&VBQ9e_{U;!$Ybxvi$LwSSg|5= ze*)2g^WZM3h)|?Fkb3fzg5`p$owO0$hP7oqh-2JhG}9}ksiy*$r0wC$7#!vP-Kv2E z7>;O3WH?)-!>H{FtOuD;xAvZoEtp8MvYU-4yL_$?^S&zoTEIa@EMkx%1o9h462Dco zP3%*{RrW)3)Kx7u-fm?}G>uS*tf#|omH02y>~yU#^c}iMuw=uI31cbTj;;jb2sGFI zS62;p9Ct>_+&p1M0T*na_PzS01MlJA@h=}`6Ia0aR|uKu*Yccynz|(&BevwVaSJoaT%-6j*PfJO?BTty+LBdhx}rYE;BVl^~roGz3~$L;wNjx$g| zX{-7~oWhNcYfV8_55MPN<4C6JGk6zlkQ*&X-gQ;gq{0^zzcSuYGR!e8ON_U9s;l)gscnrzu-J?g zRtLb{6mPOB($n*xIeRB*6`N#vAOHO&Ud(eRYaPSeClx!D=ioy{-=~UW__;c4m*&7iiXWhjhZ!&>~1DL&X<_qh0B4)0Ra6curpOS zrrA`h@ zH_04c7-5ur-)~Z`s$~71znH~{r_H>bwoaVxMbczS%i-zdAFz_i*j=1$RA{VX*kRhY z+7ubZ<1f{3v&MIDHn363Saz;NB7V8aBlcNCqHf2CB1gNj@|kz~HqKK5P$x>9uklP8 zuTWMZ@L1W;5ZH;#IU7I~yn(9gMxo89k`0A4?zd=b8=6&L!^9kRH?$3Gr;V~t`ZJr= z%I%YCr`XaI5=+2|bmIF>12D6~;3V!vGEjB`4P8o)T!mmyzFN^Dsyx&qDYssIq!MKm@V;8zyXc}Dq50Z5CfrP5q}pIcZuc}K0Qk# zM)1kXy5Mw9XIES~6)0=Rn0PWh(5B7BCg`NbNej!i2A1gy6a(nS`y7aZ=V{*qyZl*? zYo#1-Zwivnn3{Dm?j++*9lIcqNP53Bs+n|Ew44tr|8(k=olHd!EWuk z(1?Jt2)XMF^h&!NK?W=jHg{j<$MO$d;Oa*>-PyJ6C}-UzeDpX_i*5*=R4cU{H+^uy zTh&wdi>5<{x^F3tQEPo&hBZLqm=8}WGn*M4APw{qR&Y!qUJFsEONW~RV5M7%thXNj116d?c zkq3(iNeIwY?(u?pR2S4d^co8S-PY55Xu| zRoq8B8z{5&3?0=BKaK`RXm9)F!})~>=(4~c3NzqS+cI~mA;~S zoNnW*#=R8lBL9Zrov|J=jC2Htguhj2)1mMc3z|g?OLUWE=X5ZLdW7VD^z>d?5DkyI zrjUQH$+dnnzkY3f!HM}yKNY9zs#f4;uv8hG+~on1>oZRooS9v}q=IV`4Z09v`8)PPcun zmRLM&Tn7Uqj-BDs9Wah_MC9%IBHeH8Kz)6`t4*wpi%I%E3k0AyQ{P+!dmEw5RU>f@z$7X z>R8E2o7Z>0u*#>e99i-z)IRW+%uFtM-ElI`0=;ajVap+Q*>1%$;~yyuWoUFgSynVc z44|<$@@1(YY1*Jfhl&m2ERgB{e!}|J^9G92zdfz4gw4g| z(F^U?bg!o3#G7VjP|r{TjjWRMx_^KUoKY~Wrjh|72#>s$`jw^zs>=_2{kYEiq_y?xHtac%2ridmkS_2JKl-;|X{qv_*h~`ELz7*O(m;p2xcg)w z$&KEKaGczwb6y^V0KFK-$dvAaWeAj8Lr4zcMeq0hcmVsLu75Nw^OTymgDh<|Uvkz& z8VPfGc!vYUn5M+l($szNL%ZvR?qIAn$b^G66imu*D8bDeDD z3QO;a+)c5d#EEed&d!{P>xH)2qdS>IWY>60#=-Sjo*jH%@Q(&q>m|cP`po zcs{c5aqw|hTMafQID}ooW88T>az6yVJB$v)OxMDDo27;58c!n`9+=CJPgnd}ky*lA zZdoi%k7M>rr!pmpw~&}b)^eq?GDfo?=@Or|bAq{j=G0}52VDME%m@XVi3~y^5!+-u ztQy@T-nYgKa-7(COV5nXnP?;3api^O8}U5s8?1~Xe7!qod#>pkeS0lB z4g;a=E_~+;N}03uvgLSV#C6Q7=(y9)f(gpdWFhE~SgA(VG>GOn^aPSP}zwuYB(Rpr+1v86t7b-iI&v%VxZOkZgFZ^NW0S*KR z8aY7Nkozmxh!Q~CO3N^=W%6j{Oh!{=M1_#*+~FeSkcpi&f=q4Ll1fK7*_FWNv0k2Y z*89O6wb_0s-$IXispGrC+iWO;+#>y0_TV?@WSIvQ44V)nsm0Aa-gZuAe-^rPRZ7%B zXd}L)domJKjg4T-!>Vt8#kycZd#2}S(Fji3tn%#wBT=80#N@pvpG##bG^-dKc3!NG zrKf1_UcE>92Z%k?* zRKPHS+*ts7JWeI-t^71%!%glCrwXkax2o}NMWrHF_z+_|wKb|*m5P1JPB%&9*)?75 zJK*M68K{Z0;|pg_h!q4KGsRfm^#K&uce1khnunJK^${Oey5Ifg8j=;Zn*|h~Z?N-~ zHp#^gX%Wqdk^Gh`i8=7T+Q&5>fJN0jGVe60DR^C5>v{%l)$<^jHQy7vyD@N0caxOM z3~M?R_b2N_vRRX>!Yg<;Ou#$q+=N&!vX^>j*%jj`k3E9Bjl!N?!T2zE^%FrO_mgPt zYMZV8Ym30(nYX{CPZCQR|l-Bu3%=e7l1c#?}n=MWm@n<)C( ztP@xwTuDmO@6qCYM665$bI?-Ra2MvnV!oeE8hkP{EOZ-C*vDQ9&bMGXQ*$F-{f z3hxG=U1Z2*y~-P6m3xmI2sTb< z)N@Zkf@l!jg~@_37`(_ForLmen`n16+vSbOX`g6I%)V1vJhNO`=&rYvYJ_ggWaM=? z#_^49(h4)hh7W0g99S88x9q{n*&(trUYFyh%?X1xv}!P=aM=J_L!5*0dIEMhff0cN zJ8;$sL4q|bdU$bLATMj**zYA$({SI^>qrsl(=^c+oEYL)9;df79>O*C*r#8`t!`|r zE9D^>y}iNl^2!*BOeGJeLD{w0P8-(2Q1T$K3d0t!)Va#3QDY2Dy)^Bxp1GG!K;s)~ zCY`AgN&Qx=$7OADF2zA0%hb5hzHdgR6nM4AMr|(Tf#Xdl7F;5#g^>`J zRvu?ERlOexv=eQhM#;M@AwEC0Q2T1l=<-$o^C|}Ip}HhA_@+d!ib7+I0j zTHjoTmVl}=em6&Iarx_r@x`hXGZTKb_j@uNevBL7bgtSi*QJ;gtUZn_)8o2)EBY9@3>`xg`_>!gTI9<&D~ z>Fv05aFz5eW%?T{yjv0y^g-o(_KJ1u6EA-`fyLbbfjccYl1RsXsu0?Nk0t4EYY3kd z6US%i7nGMGvV!RRb-(~Qmx(`JI@)Be=~^y7Umai)vQFa?yg`w;S+Y~%4=N@wc#Vxl zkWf2mm9KQAwgbsb`yIZMUt_C*zWF(xA7gh!F%3u zWQwh0d8|;+E8W3p+iL02f5p99o-`(0Zw$|`?gQoJfXaWH#U1P}HD8u<-{uW99nwAR zZIc5tFdtQ_9d=9Ycv)#-l^a>oshR#H=)er~vx3*VT5~T?33-iK8I8P$S6-4H!9IV@ z<6}G&fA3jam$RL@b;r*f@2cABpCF-T9{L>P!3r%5^88KWI!I>I7u@NOiTR!~$3lqm zQ=jUmA|+1}$a5T_<(vKW>W8q+eiSkWK?+kBqQp|smR~dMt=H0c2c2=xvTSt5Ry@L_ zvN6hgl5?zjbN5VJeHTFbLSjXl>?frIWE~ICNJ^nE1lne+;OX}vG8E&Ct~zdaLt^lB zoAl)JT6Eb-goSY+YSwm!mx&5muro1JO1@b)Fh2OcH;h z_M+`~=Ast`T_b+M#v3IV>7EYkTIKj|YNh$#C2lAF(TD>=x015`{ z3@4e}wOfH=`La^5%CPePX(#zU0O4J-_f7f8Ya#lKF#hHQhV48t&7=%pf*yKDFX&3G zC_WWh3zojIaHu2plh42q zv2*lo)5|LS^3Ch03y2K`y0KpH^z4%9|eoDPxBvKr?a^4Y+>2(OE4oam(uL_Yb~_#8u~Bl3z7MXd?VM8D5qK+vL?^ z_fjc`d%!5azf{^{6+2!Ur$SU;WSJF{zTv*F>Tu;>S}@%l%|mMGk9xlY|04FI4swID zy}? zlMwo_PE7;FlVo0le_`8_kJMbAP@7oEtXChuO7Krh@psJ&Zcw%Ls* zB706>PbZnn5MXZPM$&9faS(ngMMuOD`eX{VhK22HvG*@zvN5yN{U8La5V){!_WD7^ zLlBqJBVD_Z7_~0tv*?I7Io%DuHkXf0)LcGA zZ0zE&;IlCwb}L72E=Tc_NtvdLcVLtqr8*z%(A!#^x9h0tD9q_!Tw&mO^skPd&Rgji zW{_Dr4XS-C!?85x3<_`VyDum@DW7R zX5Q||j0@}y%$KnxomBppGg>yQHw+ZuRPcc1IUs`RG@D4no~hxUHlkFpX6`zyH!nE5 zH@*3>%S<_w9V%Dsms9gZT=Um8IcgXZ;)&Jn+Z+<0dAG~Io4_l`iS=H-*gKUhe=WYh zK0N+OEBI0vnv!2Ea<$z}w?a2vgYy}~6=yeYTn(_zw0NJm{ee^Fjo`((RScmh29%t% zMEmi^ac`qr>*rfZY`5KER|SWqqQxSzoU!e>GTry5ILsrkPohFLS0h$a9aVJvdP+#F zc}({ID1XkE%yn+c_)+n?!p)N??L&1O@glw`sq;n`z+}fd1Rh0`4g}-UqC3?1u;DAb z_;&b#v?=T=yd~G=-U3aLPOrlhD$aHU1C*amN-ehk_AzWLP*a)`-%^QLJj>11ne`%V zaIrd@p=`9L$br!H?s4*J6%y!x1>ig6bzXy2 zpk6Z8+3P`{_3C0ytGgQw^;XnkXuZp-gJ(8cDHwb|zk?mnn1ok(gnTI3fWxMn!HfZB zM)TpGKHa>;%wS|yBX1scHsTUpy;Y?L=y{}*lk&h>?g~){~JH_$%p49zn-D2Kt$!M@ZvRCOLFLDmwz~*(sZX z0zCY00&ROQmbk+Lr(6}E2!0L}#w}79bDHOR@%uF;q$`ImnNRe*I4oH~&d5dnl1EX? zT>_MARo>!q@A0nxQ;Os-#;V;)0Z$J7%(V)3LGP`zuo=z=nt?w!SoOQH?^i!lqpIB) z-6fan<~*9XuJASuv%6=l;(*?xR1xL~4cGu8*@m|N1Q_S>ZgYc3ktuYN80!Jk#FGzsEm)F?KX65}&_Fxt1!9aZz}KeRDYwPhn_uFB<{f4Iwxm9jX_NvSuy zQk+UdAsjud@6+x?*u5+;$Q|64gT0G2JKJo1*h(u54{W01r$@KxW+vN>l8mH}TNmve z-#=I{^FxA)-*2MS==ikwA|6E`Mp%me77iC6kw%1Pi=pR?^@_WUQNWFwZDKPO5-3P= zuVg-Nla)(E=6H>D6R-z;Lc`TxI{pq-H3-xd(8GRIdmMtU-apV58#LcxiX*Y|0lBP^GGM%6Qc^t?HgVCLN zYz}wRu;f558;~O$?WXjSt?4WKP9G&Ak!U;4>Ti!xQzURH$9sa&;)fnzC!xbU3WILx z*iaDEooM;Dq(wf%7Sb8#To6eI@px8$;CrpVnBM4=vV{>BbhphX`eiwgno~uY;r#o6 zG$6pfXJK277^4&J{0eOo>qaacAmL=^8meLcmIi}c3BjPKkp@V~GE$g(V$8_8_>~WL z4{csmVm}24r=Q#zd-+?;qW$gqR%+|!e61tsFaJZcUa0zNa}%;K7V1ydaOq-q^HC|9 zIgJxU_7p)?vJP?pR4v(0ny-zPC#zH)n;Q|f!z?oi!lF8p8KteSSEnHf^k$(=M&!-bEl{qZn?Z?B(@4Jg*1t&CXHF?`5 z@9Poe{CXObRK(Vg$PG&|$>@+uUQ5~%)eS@^JM3_riSSfU>Nkoneu36)77^mdK|P|81d)5I+5o;^`c|AGPCpzx;!vSi{H z!&Dfz90L4wO-|{G!M~CF_CBy^=4-P z&;yamD>IBb>8_h`$W~!!9_TR`~BSIFj5b6-E$> z#jG&onS5)$GDZ53HPIp-srCi1t#dz!x{a6MgO54Jis+dBZKksYSyEc{}e2LUp$KJS1Mu2 z18s~wt=nhpB3JaQcPLyIfWb-sq0eauPnB+)9aScIs6gsNZ1i2-yJlN5HDIB2DH_6N zQ2^~oDi@Xj!x>rQKuLQ9jYMASK0oxky{o7*2_7!&*n^=ONLMLxzo_``1R)YBVnm6k zv|0+gsp7g`J$_s|+iiRAm%BJMCP3uk4BwV~= z-MG>3gX|Xcswkg$FyJv6-(*?akHr(wWwL_n6x*Em0U{8Q|COH!ke=v@liL>}hqQk- zmt^4hI%A3SCEYJ%Z)o@W4ZxnyrGTguzHzJ8Vm5ZiTNSXF2@b1c?xaG<*VwkNkh^V{ zOTxC4e=3Y6P)1cyyCv%`fO#xgf@7(Q??6XpG1yUR0C0U0tB~_rfK~IE*$G>YdXvcd z_;M1;f*dYB?pqw<49{1l5!9swG+!7!xo_*M@8oqh(vxO*p9a{lrs0|bSgsilU%p5y zCayzt*L6@Mr{A5zyH5{O?Q=<3c!PVu{(ec_svL^pw6qI?Djmi9&_)GU&F=X zGIg~J=wmLXUi|v@A1pr1$wzQS*VOO)iS#Ch?&M}VM7eOPc`tU>4gO(v{*=(eqb&C< zHfL3~P#nG}apokQh=0a9{~Sz{BQ1e=%$I?aR8St>TMFb|C_4E2!5N}b!!H_3#Q+QuHq04^e0`-U=tt(zx6M>l_bV2TQC zPQC`o+ZcMFT|SL_86(6mo2u|5Kc+=sQ<;bLU~Tr^N%M{8n0c^uzxwa2(U>gQ!n++h z6&HZXqAZG>dYw%YUY197Tm5Snr7H{dVeVa}S*g5sb-zkAGBngDE55vdaE@xi5hSA2 zr2|cH>lV8p&lmtMK+6Ly1ew!|i--Ojv`-P5EcoCP%gV|cg=EmN9Yx{K7UnsPlnSR`bU4+ z;!}NAW^BX9TfuH?HP*p4jScvN4~2E>Gy}nw)DIP0K`PCyv-A}iM@1F^FReMDYveV} zjP%$zIXGqTd@$nu;P7!;?%U7a`t#k`XsQ+%e&JP0;#sOE^CZS9;5Zvv2Z|ChbjL8I zjkLhm3axl=XbNKH_re#H&$=X@WHGp-sjY{Su%8yZMJ<7|-_+-WWC3hF{~x0AM!RCt z`Sc|G;US?u%Tu`?dg@&{YEd6P+c}!^YN%~8$R^rkMmt%tN0%*4Yf`)Mku%#$h!w6G zW`Smw>nulhP}TUfku`vB&I99-JhEsbY}Qv#&|GJ@&YqX*ieM%;~asrs773k zCEamDn>n1f8(kOVl34l9yy(m`Ih$` z4lWTiQ#~3_uFSt9uu7q-0OSq(Q~B4mEPLD_YKMc}xqIz+lP*^sR(EzkwlFcs=4Ye!Zhjl=Rgtk_9|NAh- z%tiFNul!O13|+mPzTp*cxmdntGCz>(&%1ek{{0XcMcp{T7qFX2wR5XQ011x(BQ%k+ z#6gr{esoQ9)`Ljc>z;rYuSw6cU9l8ue=C&?EB&)(PBB6KpqYSeoD`zRaxW#-qnh_D4o=a+QA8brIHl6o5lIYGu}( zL7kCV$)&&r<6Mf8Rv3B=NN;KQ6L}O@KBiD~gYsKO-8z{Mo-aoNujC~W-3?(gnU;Em zM{1p6kN8bPuW8Td8&G^klp!Pil}FGs!y;pA)eWPUssND9y5ZIJXDm@OaCT*|mJU-X z5~Nnl-xGlLncP{5=NRL?Lhe_*bX|p^tg*`T;ezP}H%YXhaktR1_krS$qR-#2xJ(u~ zHLWRQ{WW)bx!b_D9Rd0agZfn#w7vtTgehDNS)Vp4BxYOSm@Zbpcj=c$3Tc$qaz4Xx=YxJvkZajWL# zHWNz26>8Ypq;*zDx-Umgcg=naW}FANPcCF*n@|)dG}~sPR~lTg5rxCtQT6dmP7iBg9rCF~7i zI3O#57_<0qs*Tx%1E`766~RHE^1G}ESNW1J;ZZ`W6jzGhdeC&o4(MAV(P3~IT$q)T@JXUVN_tRJPmm_yIs%-BK&TN+R~VE#*t zW8`aw6&-u4$~#Of^^yBwgO*x**e?1!7)U}57YsH1nsaQXkH2%=+H=Gbg#vls@GhZQ zR1f@THbI~Ztg;wLlUoPvW^-A{^1?fxIwhh6>0NZGtzV$E^FU5;-VMN4Ht zXs(7SR6jt9fuPxi<1itt({)`=siBRPa{IGtl7KKXc|>Y2J&aE1w6TyRoeU{sYTOHR zfCq0W>EJh2@FiqiX3vk0;OlKUVku+|&54E|#U%#M zb10mz$69DC^;dwoD>FsMJ!jk5$$)(fLmzpwsU(r`kOIv_Oah3aeSHM`pFU`$ElLB+ zB-n(030G?@@b4lzBmu?MssgzRdH?WWa*0E)r?-w`VM0H#lOD$r%v&EmP+;Q;h$@g< zUvYkd&REC23e`e2MZ4ox`Ge2PXgP8uzlO66yk@bz3Nz$evtqBiQMw)s4Q&zxdO+qwQ^cd_ijV?S}Y*M?yb#*U@mN~ z>iopz#dLZH+fhDQH3-BcBQw!|xb2~p)^npf=9F*f;&J5#A|VdYhh2&2K|? zo6AGBCFGS3y+&~J^+b?qX(SC1ExoDQ-G6<4icyA`@mldkNYFCbY_Cnomq;c82Z`ovPVnZX@bsY^lO)V1_CHf%7V&rb*0s9RdS1Yoae+1 z`EsfWUR>)p>>$t)sEF#Ude4Tt-#)D7?=>AayGM!=o4!ycT}a;LM2)$wH4hyMmaGX$E((%G$P#*7>BR7T$x7S7s^tsG`Z< zyN7Cq&=~spe^lp=&qRQS`%iQGXTFui$8lS$8D{p;AxRm~>4dGPF zo|oTkG~&B5c%iY)jry2cNJ|=S09i0>2A~vw{slN`SEKn4-3gZe(4Aml;rQ>e1S0`E z0~6bSs!nh)u(JKH<&RFrYA6=StTa_gMNbQa^-`fuu22dCK+shKwA9-RMBCe83t>qC z%nLLG+Y1!95BaBEr*A#GuZNv49WJjq?WX^SvU6w>go_qr*|u%lwr$(CZQFL2ZM)01 zZJW~(6K`S`-(qHY|G|lS@?_>^dfs?uoVU1il++-gDS(1(WkOHEB7sg+US3S_fCdK; zAmFn@3_}~3tpsy!3jRI=WIPv2kYfPReSnLjL56bdt{)N1xU2k=MphgcfrC5(4g?h$ z5Go=-j6(xOeuYN}L;)QW)G|;PaIq_Z0)}$|W|$(v;Ynn~);w-Y{=P$-G?{=0iHd}9 z_=f|RUKdJakb=OegmY{PUEj(zhpYj*BBn7^G>!R}8hG1WUR@DP3>}`FjKVg!ABYjy zlB{tC+A)}G7r-q+M!AG)0s6PVE(NR!|60aj_rokTg>rr$FNkVzcL^pa?Bx!?nL&nf zZ-aL9*Az(XZNCfXnz9y@0i*n&YhKd>k>B0k0}O2K`7eCqepCNbKyqUkSw_~o2lVqA zIA9mBPQgJfsVE$}xw)T!2<@r$MIdmK59{&_qXIPrYiuFQ~AKopGYgYL>+@QZf+)PS`1p@-tW z?RKyrxI={jt^c5QLrMUcc)o)E{HA^1Cj6#v_?y1}B7FU>lQ@3j)v=}tu4#VP$**HNwV^IJV0Zb8K{_i1bO_fp8_cA& z`bVD7e(9a@K*Ioi$KTq`(&%sTlFGSHd|e0a)Xe+iQ^L22Xnb$5 z>j4T9fJBCP0Nl`hz(E4^^t(q}g1Y|xs}jSruzoehD zBXtNT_$NaAYjfa(^ePj=Kk0jfSJ(XBJpg*z`~(0A;H}{+V2m5Tf_G2a{EAZ{B!K^b zcT2~<0Y3nHCiwSvP09HS2ol6U;@{N*r|;hNjhdVXiR|!V_l@|l5B=`#+M}Rcz_ozL z$P&z5pEyKGk<9(IuxIkgExu7v3x0P4uANI^tV3I*xC_2F=nOKPK5^*awTMR;K zJCM}aaJgnec57B`^o?{iBy=kyC_&mSSy=t?NiP%=qb=%dsy_UhFVeP`-FqXnerfb| z*^>&9)MymL3cffjgBHlq2HiJOw|~6~hRa%U@JC$@XaO!mI0b(&+Fo+{dZl_Yf4r+} z+U>L}NA%RBK$5oAc1@G<^qD}IbY4Y~Sbd+XbPvIuJYKGyd%2dPg-=w;v6>8*UUmC( zyv)DRiDC8{X8$TCy8zjvC1WT6*8Ru)Tyo#680wuVoBTvL>@V5{@sG=)Co{Heccd3D z)s%1SAADhLjl>tR+A^qvuX+Mkl{rbxh{4`a$uiCew(C%qYZIGyI9sU6>K@dr)TeX^ z<vtfT0xS@5pek>hk*XnSdVNP7ZlBBimB$;Y zMCrqYt4Y*j40x)fkGtX&;(EKSlEQ3xgvAIG+Bq3&+`B>| zt)*kF*$M^iQiV_wd<{O9iKUM*mbYezo2r>**|ojMOw8u1*yVfZP~bR6D?Xk+8$mTw zk%VRayz;}fad=8I*UvtEJbE5$b0`6tBybqhgy5_6gId*w1G0#+#MYufJp|ZR#?DcF z^rJUDzZvdL`VILmw>&Mh!aq7jHN%2gM+iiRa;$+F+Vr+ZuhjcOJ$_nIi+N#+G5@vy z6-sE^wv>wtogvVUDe1DAhEFH2bA1f&T^GTO;g0lDaW`0$&0l<}CzNEGcpa0@cjH

F7|5dqrzw_(-<#A6jWm{24)xEQwIUdySyP~kfrNh`>J} z2Y9-K28jLZMRcCKh~iMq@Z3D=79j3?V-?tRqjEy zqq7_0)va;zfb7k;Om(u@5+z6Ah}|hK;=@hOw&5nWRVy12W_w64*^wzKleqC>3@8oX z_|=v@TYohsZ$xnpNEy*>_+r>BqK@@$=iPfzvWJ_f`K;WQ)hN$ps3^?tTZCdMMGfDW zP=*VReZ1)Quowx#&)cYOX<_8j%~Jw>VIa`Om$p*+N)PmA75R)S^wj12A)z3j?>FEc zD)?h1)9#ODIC%_Y8`K0TIbORwPk!DP* zB)H(YLE~e0S;f&;x`_q--Z7Gx3k0-R;QY}EkPj=+znDwARHPBTsYs>S1rbY7#tbeD zf7zB~9t`0ihZSKoIz7E1;V6qm4zk3tOo~Tztzj)EOlDPKoq|gN8Yg ztDl4h&9$NU1WzrD(7Y?@0~0Va8;O}_GXwsMhI?%|m(D zh35Smbd?3a-W??yO^Gws(jR|9JN{rdT4?5*9!P$Kuia%5!Rnwom{}U3@_gJyf@gl7 zy^vy3{L=twx>|mM$y1&-Wy(8xA0%)TsnIV>W027Hrjx^CPfu85q&C;+z^FcN4v9{} zN8;WPejjDK#tnLN2kDjC{_A%z%{xGEkXow|Ed;dSe+h0EucX6PYlnfBU9P!8(Jo$G zAnWdjYPpd%8JP?pT98D?cdld=5I?UrY2ZSN(~~%jVjZc(^){gGMr#nc`s9p+Rm1); zmOeXX)3LMJc91?&a^>CA^6RK8yV&X+;1!rxOl|v-@HZ1e$+^E@WOcUB5tqD}9U@{zhi82XQ68)cJ#&*XRcQUsMB zCY>(p%&MZ~nPP}MyMa8sqM?jQcjnsq(bsKjvjTdCptmZ(+VKjBxjIZE@n9Ot6vbT9 zBMWyWBq!gc-*U-MZVAEGk1@l%A#eq%5%lSb^5)I7YO|}|Wl$`$g0}oj_ywxu_RRTi zQAZp=EYu?n^Btvq`Gi5^rq2&`P#z{e3ux@2>=f1{IzqYL05OA8`)XVI8cAKuj!b)+~OB7GvZWx~}X!^|s^d}WPs)F_6h+&8W zl97X`eTjN6)V0OZ1-rQ}mcuY4J!tj3gzwzOAwd~oZCd`Gy{TOT~<9*b?L z&W(+&e8(&pE)VdT0#O4^{+@;Bn$)E*SvrH>8}E2&)>4 zNs~AmNN7@S2CDjmOA*X}jH}C{gYlBbsIJW8fR4G9KBfPd!?6;}%xQhyvsd$GpH$zx z53#rWBwb^-0>+U@GTk*AjH4ku*tQM%M{AVrnM$*&Svr~F&ADFfglw}HkxFCBJb*Vq z8;cuB_i&rRW3W!+r%*ggK6RQfU(uE6v?Z3_i-{t#!>|ajMM~%M44bJEnfeR(E9u=- z(_}hNVfnXOH<=@X1C*~GKzXF!Ajjbx&lmfsgOR()2>S`C+SS{2^SLve(!urk@E6h2 zmxr6+V~>`WlpDjHob6E_cI7g8tU(|=%edBpJYuKTqzWB& zVK&s>wEhhB9tW?&(WFroLyC^*QLgji4m5NV4_WpwVli#;o}-%g{LOFivv>#`Lb?Y_ z$Lo=+GN5Wkcuvqmr-`CI9G}`+{)-$NPfx0rFUl3g(`qbXF^^*1l~5O>=P^A0o%aCI zXKVNl6N}LjW(cz%4ZEytCc&*GRQ$-52=BQ!us1V=LZC;A*ON?D+WYIg%8N0{T(oDM z4T1m9Dd|U588pC!w#3^}YV8qGDFoZ6U!@dfe?;(+_L}E%{Bj@`BmAU(?4I}LsJ^n& zWd=5I6-n~Jq7Ne3gPJ{F?N!qdJI2v_AyN8<+Fs$zqoK;z|L1YwWX#^$uGiE1jcz`i z_}KKkiN*G1aDn=n(J#<*GU;wfaOzmLd5}1~88&uJfE@)B3Ts~#TQuv>|TVjW5Jp@ug?50v!^>*!5OiE{2s`p_*=UG1*&~$HQeJiViIS3Nf7Ch}@ACDKH z`~=rjBG3+nymJO}GtWNt_k+;C#&XO%bN@~_7_kA9Q`>g7fzzwlpS#I-S3odFpz_JE ze7&p)PcIA?5DV=#>%(@jrqDu_6j<=R8vkItjN&TYQTB|}s#%;%)o9sw|K>qQr|%Wr zFxM;<+s$ff<0%@Pe*ks&nHLf8Qb~r<8Qb`K+n<~1HlJ^5`mB6f8d8&1unkpgx`RZt zt$}TI`yY5s_S5)uawJV7=us+lQ?2xLcWKNj`Nu&~^y6ipdCe|#0`#*)Vh7}NRj zfg849xBZzx?L9MyblpFTWlSUf?k#lQ9)VYfH+3^UfmoBDG#7W&86452qnrEdmduro zM&OQ>KP{b-oo-+Gkm{F2R>?-}9OYDl)rRD8?e?EDS0J?NubYN9pYMt-uv8IF?$OjiHFS*v{y053(t<|%*a)PT~K~fa9)m)e48QfXn zi)95s(eotX<7hEgte!PJGu`A4Q>mn+gm+(J?c=W-PVE-ML>sC1XoVMw?t=jj(@NE6 zIA$2u{mM^}qu(U53MBJXYjT7u1!DUN5iMip_r297MlNF+SZVS-alTyMfy=0+`7*n4 z{>FFc$H*oXjZb{{!~n!6DQj~?AePn45q@q53vnpud2o9bdzm5m2WPH!?HGF2={ZvD z$1N#xSmFN7MvY#X-aZ~6GUCQ!E<|xS@?c!(AKYjefQ{P^NScmLX>$=wkfiD5cynlx zOu<^>o|CdESE1F3n_QME*)pQtg%}K*!OBlInx=b~tM^BQIIYb9s}cGY-(z~3Y?@ct#t3ymsEdeoWFRX727kE^k0_#0 zgXz~!X!SnPD%z763T>7g(B*ieldN(Q2sk+u%=qRjp)#v#Ut$pGS!Z?9xz_`CS=u(` z$t-!C!)vqC7A!u&u^2xtKMY>GwQD!!-DXlkG-!ueHlCCc{b0-yQWb8{bKj7L=kusO zPGV1(w8Q{Xm7F%98zg?#C4kE+KIgB~vR4YoRx15O&u zs|P%hb~Sa`WRXxk{aD*K#s1ZqM=tG0cO98==?aCBwp3~oYY3n`p1h}&C9rPW+lD8F zxvY{FI?CL7#)}L0t;N+4*$gMn_Z}kweL(60>6%Mv@AWtmlM}ldE}OMAxH@v%9g(!` zRlT*UsQ?<%9ZozmYhv;T`?Rs&$902&C&fl1x`?WHv?Zkf>K>67Y7}Z|&7C64S@U zt|sku;-(zV{xGrPwEWR^(-6P1|e?4%2L((V1wf%2Oufv%+Ge+&W}$Nw%4;tLDH>-Ke#=ORa?^142(=NUwBBKC_>Lxoh_aDja zUx}~gOBi%VqtRpDitw~u+3bn&N%$#0EliqROWSXETGFbh=vhkq{X?zvgp2kuX*v=wm)5_>~M zaB*9Z;z=eaFn9j#s9qXlV>z9o69KE|OHiMU;!!AGj8HN9XTJJ zp--IP0$rrsnY5F!=Y=iPgL_^jfKXOGypRd5<-Hy>T&GegkHkB{ z4_)zPH<%~b0Dn=Rx}Pq>Qh?sS;_4z;OqS7L0fPN`d`hzNIWbw%lZs)*`JZ%8x% z#m4yI;~A6vv%asHY-wQnwmSHX{zR@SL$iKkk5~>GW{LgT5M4BlYdlH5vQAf$Wlw)U z@l_-ww`9V&1?ldHUy9z{93!CIya;PdqzsIR`N!_STdW#huO*!V)7GToX+%zh0$+o> z)g9RbgWn71WO4mn!`g5zYRN`~Kx?3Uq$x^L3M4^Dq$kera@Vdh5(qYBa8xXhLJ z*U~cHsf+e%SA(OspVQZz$p**yrp6b+0X(VnJJi5LEPVK$i1|6c{az9B!}UmzM~wbT zgqd+VY(ksWOgxQ$7R_jmPM3%MDfh+GQz*3Kyo`)+S_drg#lI{q$JpMezHynfzPjwv z1J|@|TiLD|1uOseJzBHmPGb?P@tL1 zuKs;BJza3T8RW+Uy~R~@qoFlIXp50k`|S1;x2rlHh55JE3&&D-*65&*dI|Y_`bug` zmX=`ESL^D^yYcfj%kxe+n(<~gJLdE?atFy((=S&~#)tau7NPo>qhF)4>S>uRp zD+TZ*xXVO)PetO(#_j|Q*9?b6yf@J4C>?qi50>|=y|*+pr}>0}GT`4l)-_a6jHo^5 z$7BgnZap6*|7va~lZ}b3*tKa!D@V1r98w*p9zrm$rI+YMn2>N;)EHm;rH8qYlcZnH zyR}3eW`-&uOlL({4aqx4;Z=z_Eu>H78GK{AW5=%AX@JV|(L!rdJ>JSR5pSVYO8fSq z74cY@JUe|5#c_$8gq|(~q@J{w>bkrq-D>=FW@M-v8rP<8lJ0s2KCy~O)x{`=28owf zv)nN7=xN#HL>cvuUnGtfR8^Xyu!<@b(HXx=Z^7z`xqEjRCI>E~;L~^tF-z=ed^8@EY60 zCOKY`f5={SeiBRd+>mo#;INf_oN_y1=xJn;|9z`hxHR|NRfoxnEo{GDpoP$MOk8JA z8zkv8|D8^DHEg~?O=So{1j_-@q;Mu@gmt)m;?EnC;JMi*DjQS=ye^W7e2VdP&|g#2 zZ_MU>N%0&d6`Q(P)B5naHJ-I`wDVw;RHt($$skz4`*(ZY6HlXZI@iPJ2WNr_gHNS9 zY-$&`ibsTur}HY*5eFfl$n`h7eU6&0blxw5c7m2Ic2iWb>^b4Pvo0$QqJzEORjsB= zd=@(sPh)hKF&?NR;cD zU}E;_?)=b@?VW3|fhy(x51muJXzj^ojFUP5(GD5rfRj*g?0uNg&9=IzVJ3vj;WUdF3MUY{7H?_$s88<@zQy1KqoOBzjQ6FH z&^b?%QrKBaJg?^PKKoffhwH?O3P;D%NgzaO81kk2qro6Ag^Q;j^SaeG9t%1O6yKp25gKW0<H1CVtM#{ zV<~Ns*azmWfk_l%~NSt{Id|SnImff)4`GWVKcI-zf9mk2Fu2Xp*3EU*=SwA+szx zew}ijb`yb7aGnOiy51Cp)Cgre=xBuRo_2*y#;6q$R^65K0#h71=)(2UPt%3HSO&5Z zQ5h-+F;((wj4F~Ws`GEU`7;SoJzfhpZ&F!x^PqimN#n2B-g;`hX1(1zZc*uPwnhgt zOwHoWja~~zz#wuYM+#S1!S^|LPUS22OLJkZhY^??f}MSCqv3Zu!)Z_HcLbkvQ~E7W z^{h((cUR^(P~eVb7BA%o)~`?i;C&(PKIl6HvHjfx46&R9rjz#L%shXk{*3bWQA4z! z2stxpN{Smf0Qs?ImxGo@b@;29BMoH69yOUSt)@qJEe)9&7R*9`-Y*QIzR(xB$5P8LJPVZm;0$_|9DxiZo8k+a`#j z+Y2{VOden@Ceis-y%}0nDP|kg0zv626!@AUwYK`&;fr^>L3cqm_`#lpIeo;NY~)^4 zrQzg|)^k#7|8N4m9S(kd^0u1GQPB-sq#MCl6LB2ID)pVtXvQ2vbvK46dO6a*_E~fL zCKJ=a3;5QuIWO(1ulJYNMma`{x=6SZP^wxv1 zeO{|yX(xHb$LuTl3`v{1AXjKq{VjF%oaf$DHc~|kNuE?TxvqdOpU)*oj4gtzlQps` zJs^RcN|~W3G|0|ojB8n^NbhmrY?Koa4Bzc?leP&H5iMnw$tQ|xL+X7k1wDlEX7*F# zv8MNLULF^f{KTJlsxZ6t3~>_-)5T;2c#2~7%)GHAq0YC~@p^NTe1(`K(|xrz@9>AI zoTYa2zT|@J-lxS6jp&a^teY;t^2CQ5?A63f)RXmO*E^9;fyx*YIYP`VA$}w4@2=u>(Jn5!{$@Fze z!7&R}Zvsg|w3;+4l&ObIGvHjqTc<*=V{CZG;iXDVddbRjhCAY^)iT;TpEt-+s`stH z6zN+pQU$>SAFA*teliY6;g((det4`o7$}}>#>fA%0`tA2X?(pI<#pYZwob!j!_u?5 zN6j2xxoa!5jzRiVexp~>s0azUBhyM7cK)#G2dCM6zWqxzX+s(DrqzK>bpFFrg5)tm z{A~4B>a*`4rg_o6WD|XIi6zCVJOp)ZYnP$6J!0%~DL!_EA~Y+#`+pubZXXxPL=6o?St6B^&Mf8*-HQjX9|!RcbwUCcfwCedcD>syQII-@(Ndre@N9@ zY~k~YnJ%WI$+jSZC7Hz26l;N>)YfFHD$9#Ex$j>i-qHo`M4QO7UL~6=0UAk>P}3b( z6kC%WA(s}w8w@SNP)QqEmYmb?inAnQAzUdtnr6Op1xl!H8T6p{%EK>LRRJMuKdXXp zJ1LpiXi=tu0xb~TLa5_ZnrKF#?Wr z+pI_4>96%|Ij$)orUc=fx zF_iaIFy~1uhX|~}X;>(6Po&=qdEBs&AjZ`j>Id^CI)@PUt>4=LK(KI*FD#%SH}nqh zaLYm&0#Yh+T3Sk20bYO#_%+ERbuVRo_cQzQHF{>VAOU~(5bnJI zOdu=>=Kv$Vh;Lp&Jq3VJ5nxeH=f#u$D!-y8d0B{-3|_?BlQ}7oX?>`!rag`+ayo z#XxWV!qWx*ELGs4{d0D|*UMso3|tC<+(zv*BxIB{RPSSOk4qu%0)$}G|oAV=v_!=)vF2uP3* zq-Z1ck~&gQcj!ZBh(OQpvL*r|7;yrILI6`SfdRlkl3&&}2Sou9)MWrmz_FSDqoQB& zPX;VVk&5f~Xa-ilmtWco3Kj4uGGCTZfNBvAwUHKlf0PXG(X_CK^>yrG<(kjpl7#MM zPCvM}Nj=I~PYSKzDb2qU%-$M~_RmxRpnq4B3GpxEs^>z>-JKLPu(qiyy@lv^^6}g_ zgzAJ5rs9T}Ea$0Jc9UY(D6VQ8YV67~WOYR*T%>GNs{6jyFFFh<+ko2vL-{E<^BN2A zs!ZB$bfR1K_O!&FwKbGSm5FN>=F2u-!~FH4Lr3td*v1%hKWa5b%%5gwUrnD~$|Z4* z&fQd{()mjai=G$v$A1#GCPmUyN*`B{qs3J(!nGu=4q(fG+QNCDIbN8cPY*qLWhHx% z&bY*VTNIFj|5cdJR;N6cMoaaLq}Peh5pl^>3mN>P-0~dst{ycoxr_k4IgQDZ7{2 zZ>x?ucz8CxU7AY4Z4av1RH5Uooy`$U?);`dAF)w2;<%@6e{v|=ZT=A2F2?&p3) zh8reKCN396)+9 z>zcjaP07=fc;O~}MmL~l-gJTw&exG)+wnHzLS+lG)u8h6-O&o!-6V-O)au}A-qc;g zo85Ef{ImFoTlF}32<#vcD1V6?^n+lvV&krb?;WWlA3Q9Ax4B($_>*rBhg!ymWu06* zxmorijEl7+%7(J6Q5NVP8N;KVCUXg@LuT%mC8Mo|wY+w>IiqZqovF&dolEI1%W~3t z+?yo1P2!wwk%ki^uQ<{YYyE!cxbwR7kA~Dyr<3CdQA~@WjHS81pb6RCfCZvNU7y_* z$aJws1k_@h!RFNTAzbS^bq!+m{?lO-0~Ls~BEo<^K__$7kqfloGbFjl(euhrI~ zE%V98ouQa1xwP?CNyDh9Y)gVlY?yH!pwiB6ZDxYQ|HY)H5k|`{VD@#t+A{=uv&V<* zRgOQXi%w!s=YuGc^tn`Y&bbe)LkiLfyUb%g+MTY&qi>xHbGdD7;|$9kC|+iN(in8c z`;OehDq`ajOr?~C?I}UNzH!X@~D8$ejEMSM3RL1$PgCLiS)J( z4@>crTd)FNK16tRX0WdS>3&5L%@kaHe0mNxtEQysdEi6ra^O$g z&G_N0$WxhEu%6mY2fdhX=$ zGX^tIJma;%uBkF+29Vtof|KyNW-zbUqKItAA^OZi*}3snc=ZnhWX@LBR!RS5JH}Mt z8)%zndLKE;(9l)594ZfV+H%su>pmvXiS5!w3HGkqcLa}rJy(0fCs(Iv7T8@}O3X@_{WAErDiZNdk4sn?WQH2x0T=*V z{LE9Ma9t9UCckp`f}LunRLkibhF`13(yjSlURZ2pHzLeL{#$8oRf)k47Vq6w++g`5cQ!CKCJry~N zwVLEk#X2Z9gzDkaLYc8++D=Q9M?H{y&NofrRwj+j&0%P}KI>v@gLS^J@ZYz6&h}@8 zIvQDQ9v|%D`WL8$;bKqUyBpA8@mFdg0lRMqTuNCA^WS5S7r_L_gjZ(lFsIzfHn}Im zHmyyr%40k(@9G*DsNUqwl3I#n-HciIdH=hG-CAEjO@RF<$M8VrV+ouW5l#lnz1*{( zgQ^ANxEyv}5UJ7JIj5R#6i458j|JYnybmRGLy<7(p*$gC1fXD2lsXfu-|E|2T5K?= zWn_9>H4CgUGmf67*%LT(9)#4VCW^W=$V+sK#l&&Dpiu+TIxI>k%%(}(8D6% zq$8Iv(p$ymp)^142oXiCI2DJi&f$%cLwM|+_wUe8j+&5mx%-+5$Z-4_S{!Q0V;u?2 zwKYpq^>Qi_?Qz`LvEeg332E3BXC;?n#&4B7-ECdXM2F7hEjI<9GHr}5Xt7WsYfglk#)RRgA+UGff_)x+Ai^~mgmvk=A@6R|l zu=@4#;F@^l?RF-5??*_nM~kM>1z)GzOHHB~24Yx=Q;wb^#b2~jCQ7pUp@t-KFVc5! zvR>nXvvV0>9H3)^zwvEoGew#u_>fM1Y_T^;F}X%Hkw{pQ4e)GBetEVyc(+Q(gsjNu zl_p=`y|xu@G5W*ni!>@bWfCDACH&S$QKsJe?>`N;M8_$RRbNwA7u6+lRhZ_swh{Z=>r+{6{c$11BxruGLaz=#~oTQD1#|-m7 zHKq57!~H8_J7~CADBr+d2tK451oYQ;*$egXFPlPy2gxW-8L#;7TGnC+7*05ME;qM zCd3Ps8K8#sxu2*&y@KpzGzPb|-l+XBk8ju|>4R%A<}uCs8&Z#|7-#$0*&)fxROjsI zLXVk{GWF)P!(NUS)YT`%*gS>qp=4wU(cM(BrBKtk%b0%eCPE!i8F}~Sj7*T1wrGT$ z?Oms*oLZP+;fyFx!^cewW3Tb<#Fb&UY=2^gW~rfhb9GaWTwPmga4nLK;deeOHPE>b zq@9ARn8#EPq8IfoVvDv=gYO_G;=k}L7Ej??6#>5PSxcM9H8ZAPgLCC6(G zP4)!IzSmFKb*u%l1-7G_hgnT;U>hBOUR5pcw3T^fNzk;2YMb-;_jq6Vh@RFa-*@U? zX34NmPQa$$&A?=oyNXMqU-+OW)AZt>Cx5i;uN^WT+o?rCx*x@xeBqZSf*kJ>?sl`#N~crq^|;N?&;%;awh`K zCX|U(7^wtc-d!<{_xu&Er3^odda|o>T$9jUtFCPx-jLZlS#BM}3b$HBI-rkz&cRz8 zrGG!Yv-_Iz5oH}CNbBLLHg9*Hi|DSdmkZjmy%+q?gP=0?aY7v%51P6gBwrl%>zlXZOGqLX~U5lCqt-O&4u`!@=+sgMGw8h*} zH)BDxlvi#c?`J$|-1`>~&3rUkx+LeeNrkpq1%v1RW{3%>$@40)4r;kU&=so-BQiQh zd7VbDT+y4OXI#g|(Jd3nEJmMj$C_)4gvh?#!2^Ys!Q074ZJL5@ej$V%pfK|hvMN*4 zgoA}dRkVnh3xq{!9c8_F9$0H_9`|A+nZ;9ErIp!*uxU#Cg_bAv3h%zU^d2-@F0`EO zYm#p)W2}hLhP$$CJ_mn>KE2*-n)%uZ+A^-jsjBqXkc3bba=Z-t*Y8 z#n~pIO=XM+{Nl9~JB_6nN-O_8#xzmFVCJ%E}OrL(|OR&%aHjAwx8TL}jtodsL{B*OO9$s`*nWtB1}&AwJIej5*m;w)43 zzl)qK%sJj>Vp-zf_sxruZA4h0>SN5xH8iDIjzzE6N`=@cL2}DYNe@3TVQ?9N3d_y2 zHEHwUV!fJY(SrVy(6L57cbqm5$#X+blDDwcIJEDM%Z`Tb;@+QQ03a920dq^nmZ z(N7vK-2JUpW&D@$kSN?gH4*p(Zf%l#m%2JDo8KM^xn6L{=>Jnj9z^F3t; z#tWN*BXXZXARTGfr<+Fp?&CXNd|RhfR;BzBi~dsuF;VqpB1tq|Hb}7M^&I@X7>-U$ zs*UuA`1x^Bt!Buj9XbGxDVRQwqu)Hs&%MYI)49p{34fU9&k~xuSUlB}9qs0W1P4hkjXeXH_DlKLi)n2d5QT;MHsv#}ctfoNiF2AVfTJp?H%iS^=?GRVE z*eZ@ff1ZxvuE6JZw%A4~_xNkGTvGLvB;-Dl@ zqvyXflyYOR=S#7oaJ59U?DL6S*dO?Z)2gF50LG?^f&Zha;oJZ07VE+WqxnroY?CoLE|aPb3X@07g7$$JJcFA(QdtJONtuIQPTCX%@9f#6BW725K+s>gMDVk~1rTIxV zy06Ne8b7V&pdsdhLFs32rq*BSz?zd^Jz7O!9m+fPXlm8zzZQ*Lt_X0ICuq{xKcr2g zxqezQ)5E7g^GJGDonCy7Zgb`x4avT=7JW$M*K8^ti~)A#$vW#esNT^DbtGIfJX3DloM6nUaWIA+S?P;KtvU?%!?f*+u(5UDbOl!&tXKejuYtPnEaf ze)4M)Hhx~dgEPETid&gX^{B2CanTnq%b<0~Pvrh{S{~$rxrmXr8nQH+of!Jb&*PK7 z5+AM~Vey>?e=IlTMyj!wHI)sU|1}H4VMgN-wO&Xw@>qFEmX_^pKL?ru#|kKNu@bVo znB?qXt5fFb3G4&(TEKNwt6t*ExVV-c zSS_O5bw@HgpgP%2d&U!#mJbTIQz1OFkDjNc8umo6%&&RYX<`(kOPx;gfY!^1H*^H4 zcIRQ<@gHH(?gR`%V(O!kSEjJiw@%1+;_zgp_p^AH{XjU)l`Y5op*=OBs^iej4?maK zP(_0Dy{0h*uc3!Dhhub|;8Qx!s;rV_+w_Uat|SvuDLHwuBTEyDYz1Y<{!$MX%b$ib zQ4T}KHp;cl?>S=q+$!XMG)YKTZBtk1*ynkOK3V=O8LGZbaui&yM@HUB3{goh{Cw9Z-ztOZAGL?#KU=kCQSt4L zEp;@(=4AxAo2EV@>)9e{iW?fmWEhJr)did~J=92sZT4w&u*jJ(E;XL6mJ9#ar{5U! zL2}QPTL*H?LC{^w9%}m|W_w*{+;bvJi{BS{`*Lpr+2&qT0!+Sb$u_$}Eu0#4zRBe~ z4$beFNS_#|p<2q5^e#_@oQbTT+S!X=@Xkj22Z(Sc2QPdp{|a@-yMvK7$y?s^(oFW* zgp-o9I=>_M=OmDH_y4Wg|uol0xS>J9>q+t@)Nu5c~> z+4}7O7R0`nOO2{?yRub$)5J{E?kGxHAz9X*$e5(%Q|*=))(KwmOSWuMuI;&{^>H-m zT%lmk%{9m6kif9Hm@l(zFW^*SVY7f3kdzYVGUv+G$nJWcF4u)ty1u>S zj^z=)ZF^3aj|tHkZmsc~Y=4^nmPv2LxW6k)@%3wHjE~LU@oFj@*QPhKHylb;)4qFs zV5iQWNqu~zcTwE};F|PcX5J|qhSAF^eHL3E%-OZ z#jd(XB6r2@lsMD3Q}gKBaIrMpx!wJqSOPgFxpNjv_DUH;tcfeLJbp`Ej7~ZS6mM%k zt~9{|Lw~ByuF*DF%$Bd$4V*qeC-+06L9r!XbMp*xF-zs_Sn0aUTlF;w8ugEDRTq)i z!8^#&mr_W#orofy3{R#_&9Q_v^GXD9yx+c8jenq3J3*Wq*c^RLkq^&=Ld6IJZFZvE zta4-farCQlo7*xJ`vF$uc*i!9XQyWZ{cEzRYMpE`9}(@u=e|X}4okh0gHlyKR*6Q- zk8#nJJv$c%T)kpgW<&cEyg@=|fYaJ|;&1>Aa z&@9}}zPETV_7D+0Mf}lj4aMC}Pd6WveHN5ld;-m+paQv)g*Zo!Z76?2T@s9IsEg|o znjjpyxcWTtFEGF2n!|rAB02wS5y`^&e*^|h1ni8QEdRBLBqMsE6$Ny^Y9fM?hzP-=3Z5yX;+qSz; z+qP}%v~AnAZM*xlZFf)qE@p1T{YO0aiFq?I@kCTq<<88iowaL!;=3|yb z;C?}a{QU-h)YxQTe06bEEu(v?0}v5oC2}>9Ms)EHZpQfmR7| z0OCqZZxVX?0TpB9(J??^z)St(o8`q8V-RYAfBwGo7l_ySjt|h@L<@I90tVvY=636i zspf`2$Cij82Y|C@2YlZ8_It6s`2a@*# zh5-uh$S2y|Rh35vuyFK?`9sM+015SdQ292p2f2IQ0O;q&|6Tab_2x>1@lm5k4-#PK z1T@g~6VJepWfBl-HcstOz=J3Upx3TqCq@rk4TKW!0xpEZk46E`R|O7iRLUH%_g8@L zf@5%NZ)RLIcQt+J4vK%zLawX^oDFH9ol{VMd^JeVc|vd-KVhliGtk#*B@fOX;Pb1e z{=bDYAk#lQ0`US2<>(MdGWvEA5CHiew#pUvBd95ji}Qm3ID_%?5VZRF#B&c0fp5kD zpMhUsKD@FJAdB!Oup-_NUcdXU4dtkrYhyeTnROum*^dOu3`yjuv za6yHtzAF``T>agFqTChMfdSoo`My8W^8XqK`*FE_ZhY2!0X?Fs=>95o_|*T1mC?l7 zgS^=Tg9K_70Tlp1z&|6U?gzhlpJ7hdTir3f`QlQAw21}?`zk|omi{hZ{j>$F{pP{J z@%x@Eis3IqgVOtM8I^GZbtf!EKl#==^9}ykLHXjE_?G(ntsU2y5jdc0^3-$j9g2AY z;dt}50Z6LJMq&Z5h)~Ml_uW##`!F+GE>NXs6Z37YA{d|$NC4U*5T1rj(mOzP10LEo zKER!)nodtL_!MjOwM*v{n+^;EwAyDHFDW6~S-_@6OSPTN?nR1Fy1<{G5i^UDmQ!v+c;W-Zo7aBhYpHBH1xuKkLsvMY=b=o|740E2 zbw6bC(TeiOa54s>C7?RSnK|%S&WCQg1E-MVvdWWDfn-gk+WkaBm=6S@8Gc6_Rv(Vl zJ)il2LcaRDQ@Q%9)!ccD8EFfY9Vo)*4?Xz;v0+iYmMcR(Y?_8@Twn+piMC>DdnGxkm zM}D0I^j9K=G-B9L#;) zVSe_Q8ObvP8>|D$zm#;OPhS~DRECA@ts}9i!)O_U$-c-7W2-06Q80|7aWd7 zQsr?_LfyJd$8jCT`pN`sa%3O&VG+yubre8fq6)KO#_5d7~fN_~DR~iiOHr?o$?)@d{ zMP*V1kqbKN$(A#0DRraZoQx?D&2ouKUBpTAqC(PL_UsB1<5QLo9>J#194O!xw9}b= z5)WlF>kM2u)BAj3k#zO%K?NFm zp56x{2!UP0(~2wgNlYn0YPvJRA4+YVK}(t+pQ9Dy~X@_YD z{k;G|6i12sKCaKFV`7;H6EE%1kQ#{E2~9;03ILrQOQ?Y&rqZuo-8Mr#hA$em^!B<% z1T4+!&zvs2RFHGpN~Xw2HYs-uB{pJwRUo!4ka+(63^n{16j*ptI9f&vj!d0$O?Cv5c(_J#d_i8Zd$v#jX(58Wg~P??JLeq+5W~ zki71W7X3Lmvl3(*c9d>lY|pNO9{l+T_1n=Qodi&&EeW`e0sjLC9h|Am*C)Q~+d+@- z_?V3KF7wNVr}TR3id$#Z#dYHb?>@@EG;Y)I*1EVbOID1VH3r{)yo!XF6Hggv@}r>1 z^WB(=I2z_UrNL6PE@Z@_zhCJA%Ox?Phl>v~+*8435w%?}Gw-8KL@F4Kk1RupMda^* zh5D2-@1^7R>iA!u@$-!~ckJIgUy`qs&|68@Pv8=NYyP|{Hjpu;n;3c$!%g6e@L-sX zW34_lUerM_z<9)b`w(Eq-2Avx=AUVU=XB^|_wHBpUue|7jZx~it|GO@8gEzrHZ&i< z?AV?$7)bDHjIU<3B2cDfo0Lw^b)yVxnIePTYv0wk1I4XnBb!$dv4}*nz)CuyrWleI z7ug=LP%Px$4ZFGZV64;0lD&_1>yTw`%BP4YG%PQ4a-d>kcRok3rlgg3^^fS>WC532 zMBAH;d(?#gFnh$31|&|qGz{;N$saZ%_2X>e+c(P8KkCp%aEmQYc>2`GY%7Ubw~z0S zL-qbLw*y!EYsGY%A*brZUDrvAY2m><@7S!leNcrV7d*rIGzTMU{!GuON!fV;9Rx*C z%{>FRr7n$LXMmR?WU3Pch1A|NX|GYQji=VGn$x<&>2(VHjXy)ih8FP=08 zcd6vg^`!qo<{ZSZ1~7J6GEzUJTXUvDZ>sd*K2GqB)L zW|tlZm$f6=8Cggq$cir-&CCE_L*01~Zw{P%Buol}KJ-a2O(6-t3*2zLi+6H6#Zqwq zDLI~9uA{C1-&Rxs9jYJx+VIqMhuWIdy8z~+!>ImOPhdy!Ewg^y8(zRV(d;^Bh*B(( zz=elMMDPixz|1=;Db1SBbYI9p9jT{Dd^&1isaa)|j^z^O>XN*(=q|+$Ms!@daU_Hf zm7C0E%g1Ri)p2-Rqnc?6Lr={uQA!+>Q))YvJ8AlRok>~|TW*k}__UqEr8{sZ{`bz? z_5`mF(@JkXMg<$`xL;jcyWar$(Axae8B)A`s3oy5Cc8w_Jo2zUJ0%74bf+bMqs>_b z+sO+u`bPaEv{65~J)cj-g?EXPct88r`*8^qGxmI#9c0@PxU2^}NKf6k@@Ywnb2Ku3 z{7G^@v85b)7UU~Py7C&*C)7O1V+bG{HAb$^cGNZ0>WOq>iAjg(!kFB$Wn|a>)^rB4 ztIh{?W^#NA%?F;qCWt-%bF}jF@QiBKnqfq<;ePdL`mI^Q=3=eeODp+Z-a?V^beH;F z(<2z2?a^i#x0B!)Z3s=!r<|vD>0%hQp=KTl zyG))+9EjHM@;xh8)zhx_gZv(!N6j0p1OzPf%g`uAchnZ_Vqs-tvYuUN883N7ljegj zn)=bL_LRy4GWxaRjNXKkg1j6|UL{&;?7ETXiQ@t$&_JRb*eR(v z2ZMpCXpKHa6d;!RU3#~k=x!j7$Tc>*@4_;oe55~(%izDN?oT01LLr;zH;s|k*ucpu zCwSS>-tJhn1I9(*9$+|T+n6RiO{ydA@4ETXILRSbXbMz=5|?9fbv$^bcV7RtlD)Y) z7fULGQT5$lv+;=`)0#N!_nb0}%(>$wWNyT76(q1BE+pP?|~jW=efn*M3&<2e*E}ha_T9P{JfCAzuZ<2n>OL0Uv!XSIs&C~;A#P-B00={ zMrBcZD~w)WJ8`PIdZth>D&d>Tvk+*gbHs_{l_6)?)91r*y`RQ1T^M*h7Jq3vIl0;% z=`S;#a+fuzNi2=%bpv|*1AK2BAb&Fe!Q!NKuB1AMg7-}i-}fGkCeme}^>VFuo) z^W5`Qm+HbJHS%P@&4P@~Hsd`*7|~a`o|VZZ&}!|dE~WRVA(YijOFbVU#VTe6?b5wO zonNcj;IxELDci=EpG2AtS+?zlgPr29##a=*pJW7V87LKu;-s2>stbrK4oHTX5zgJE zBjBNdh&xTJ#!GDiw=%DoCQjQ62pw!!$jrdJeACa#UPmph#20NSEaGsrR4FzOVi8yQ zF)SfNC@-aOodzUSnG>sZ=xFdFryzE<+)yrCY8BlO%IMpnEtFXemhWpAe*@|F&s zx-a!9A0OLrCpWlrd7O61U#rcdy|ivCeaiGmUx z!QIo}ZjJ-{-qv`@>u9>S%HL{vQW{6r!qG3FhjBQBKC!9gLD)<18XvGlMNHevh2^=r z8;tNCOew~=ZYADl8pBif(- z_xtnXX$FnsZsg??R#CqkSpOJxVZy#FMW(lN`I~*!*%+W!DsI+-z%geOv|yAO#=+8T z9iClt%il${zSTc*-WprNbPV?)L7QYMxBA!nT@~vOcZ6DT!w^P=@bYD8_g`xAN{>$R zIOtmzXpz#wSt^TMP$tc>O_UpF1DP*zOSkeN=F(;N{p~tX;Y^JjO@t5|Y8L(8=jhQL9P}4Gw9ZBpb=)G< zm{%lznxIlhLTLt8c@u9T@I5{)bWVOKgexxAacFdh9+N3y$IEY-tI;4stzp1X^c8NAP09vz~ zQO2_%crIvBIzzvX?_B+}RJH)io2!#&aGe2S1;FuPPnWdVivCWd=8M< zvPppV3F*{qtwtW`!|Ya4TzCYiI|(6M+T)Ye-UkJ_R6fGh-eA;I{KrYP6kQ5*!n82yfHfyiOa;QG z>ATzY+87~uyIybbzm4lPUx4=XX_p(KKuH8HZ zd0Rhzoeg>OTiq#Qh|w!NC&9MjI>^phXx`%fSHFBWtakIK*NaeNU|qu4#+5R-DKaY% zlaWqly{pnrmDAFyST)}SJGvO#u-Rrk=#X5qD<~-PSil~5%Bo@;#ta|4Z{pBz!$v9} zi7WTd=Imln1^KkyEJRo%%lkBQOaMG8_ADo@;=u_!V~P(p73ihmEX;!7bYb$@3;JgF ztV1&D=osjdvn0;hZtn)qE5+>(EUX$EyN-qNMsT)>v;{)LCYx;w{a+ldFL2%?a9EMF zaCxQBk?|d|q;tkz&%qXx>TbsJ{xc7Kh={5<=R*OIc1wCbLK8JD7$1Z!4^i15D>N`|(aS%1~BEFQJ zYxpak`nt?UZ#@ORQ#yO+nPYukI&kEDghe@>7%o@d*0Xq_(fL$4pYW+N91?G`=VTY_ ze-2_NxT)PFXC1cA6j4@-2FIY=3VuZaC62T!j$_JEB^HQ z?epFOWbynFFzBa`S0n}Q_BHG4#g}0ujAMmAE@u3_@JRhfK*v8c@g|Y(q*o|IJE<^?_w)CI-5*GjlWEVW^wA_H||@+_x(z6 z(+z8t(w=C^NOZs|^qLT;0ex@yY7(%XtNP@3H5Zd&wx{Q}*)w4Y_g7Lm{%9tA{hj65 zYuG!xiSv4ZaH54#$8N&UEM$`NtCq7%*c!47u1FcPGzRf07MUS%yC;67Pexu|r>WD9 zMZA;IF^X;Aj5SD85vTG$zz!=H3oII?0>Ox%A2!o1GSYtOHqGte~(J6<=j|^-%R! z_KD9`^oq+OH>a|Tn+aN&pAnxftSCqV7VgUOvQHr2gTva@YCUGKkM`I#bwj2B=I$@D zg9%!yMGM5V8H4%a$S)tec{)o{L;5rUd8(a;f)gG^Nrf9jOj{CPST>^FNzVER6(x)sXm z#wgM77m~N1+X@cxgO;i|Yh$;6!O@mbk$l`Pb%+eXA|?eagV8h9KB05Z}mVzQxVDgs!NmAgGf zv7OGeMg0QVC^qOq1iCDgaJ?^-%-t?V@V&&y+#iKb^z;*MbZR8W^O7&qfO%ul{V`m@ zRVc;ASd#2r?{^anP#55bf{3IK3vzhgM7fz;Tr1e{A?u`A3oETwpq-~F!Nh*pP4+mUOpEkTaa=ZOxbh3s%J40{zMupL^M|9 zFsjPMN0q&NgqonOtXFv`+P<7##711v2z|XvUvYy6DZkFt`Hp&<$;y@eYYvjg8Y9T}MI1EkD4Xk$B>du1*M zrWM@$j?Ysa1PT)h&&IvRg2IBz^SW#S{+fzgirP*z&IiW6TbdH$ciSUr*N5FxMKYJ# zH(_mDZ!uiSq5f6hev^rLJDfMaAFt!{p{uZ7N8gq~CTNNdR|2cY>$%F5z|?hkT{iP^ zp^m4ut>xror~?l|<=$0AY;zL*U9&Uj0#mybAc*#S0~V)#yE4=C)}r;MS>BADZIZ=#!Rnb&w__bLTU(pp5I;Q;>2EmU6XkGe!@L zJ)Q>cpslA)pYhp?^v}0{(DY)Ec&I>QnP6evVQPcAMaysJuhqgy@nP=I&T?r!l&JHX zE1inX8W&sLDCdwp;5mkkTCCy2_x{4{(vTVdECXPJl9lr*2V_ZqedI1HEztctraZ3D z4ZqyzW1vr1e6<^%cfgH^UhG54;3r-%u-L)(C#C6Zd>3}XEq!L@;E?@OlnbpokV|dn z*ScS#dqB`C_U|HA6>L%wq;)zC@d>~IDyUJepCkwG2N)NtiwUCQl$AwJ2Px4<<#5&G zf#ha9{X-lMh7`uqEn8HXqIG#eDiz{L%mjJ_O!S>iaS!1#@@k(JcMPX7C)!cF(PF9< zAi1i01PztvYoB$IS+;!>N`#^448({KpN(!FJOr_vClE}{>J{o#DtoEE4vk9anE>7u zUyCh~1R)g)`m}{(iPxq;jz(8~Wx^f@npw`T*;3b^#}pLRLs^t+RG^7vLbCP6HV_rV z{uTv@p$i;CH3jo~ZfmP%s*C7@4}Tx7z@FP9x6q{(s{$K}{rlU2Q7>N={#$hAYB|F2Zb8;{{gfTi z`22!mL@V&V)wPHo4_L{nCSVWamLtP~XXiuT^M0%}XSfXnD%`Do6 zNvpS+byOJ?t#?nwpc zZ(`0Np`nqdFDyFGOU=79n>|VzDELf}nP=W^jv$Ae*1bX{Q_`>PAm zgz=+e4MxaJyUI)!ZYR{slNB_Ocq?S1{ly@Gg3fp8&o*-xLf9e(ddb3s_pu{G-%@{}2TnWz?Fx2~^8f)K7a0w)H z=D!mTGcV@^4sBAAkJ+<{;e1*UEk05GLF?snr<-!tromZCspF{v7v{{z2>zE z_y?Y76+P-cGcYUOp&Y2YYid|x_? z97J|GV(d9t_SSWh2s&IT(T{e!)Ys_|6$=?YKVI=&ZG=^OlxFEMti@)BdF~MD5Y}~u z?~v|gyh8ZE@Be<0`tQyN%nbj{8G(S6gXQ0ICj1Y)46K!9Z1?FAx{lS{;FH#Yhww@K zp$OL?Q=g`T3qy=*T{AnA8&R?Gn%<|D7or=$S~g( zTKofeFTS?EvJz#KMiM@Yc;TG6_IA5h2IlO2I8ERTb?HSZe64(|JD$SB#irYUm#veW zVNKY@7AoLaag%V*n$KzsR`KSE2sKnv1|FlcjSpyn$2Ml}^)h5UPx24{$n0$Hxu5V! z>X5c!q!) zj7tAs#ehpn%UXiKfj7OS6+Xm*eHmX zYar<8*$8;q{Ce6x3M;ynYJKo_{2lr8v>4xQE6{plBZ~AB6LEy~2ddsImln!r;T?^Td60wQ}xaa%OXF zvR8m&d$p+@GCozm)4|)?G0}16;BfhJ@%!@3{PBZCC$xIKU18HS!)t-{;AiTwe&$xT zHTafhv?aE{2>OKhe0_CY$q74WS1lod-8Kv^SvNwT~mKO*M)mM=ite;eOq8vail=xNI6a{D* zF%ZH?Vg*PCf$m4VE&vn*X_$3BoeIs_G_Sruq~mXrhA8SI8!82W9tP_mIk>EAR4!iv zMOe*W(u1>0CG!k`r7Zpds<&9i^fy;FD-chF&9c@+&>q-LqHR>*lTi$A%MtJml~q6_ zSHl>CE?(}9=`YIQoSy{WRRwAm;)A73)i@w|kQ$!Y3Yv*unF&Z{X>J4mXDP{4Z!GC; zp3fg8oEOMj$I^s2u#4dMLcpu>UsoM-o36+XJ5vGgHbhq);ceGsd)?Rr-fTwdz#cGL zsJD(!ffTFo#YTMUV?MPJpL#6seIXa%9eRALVV`=2Pk}P4@Gd_sR8N5{7vPp_@T`V> ztC^pA&`*IhYw&4Cd`1zUapq4#&8?51-?AUr`oDYiI;Qf@7-4*b_Z|k;fR#$jx2*Y} zwBa>gc8#(^*uAjXso8fkp!!@|GZ2k!ZY`V`2rSB-A zQfN#0voz>ZK#hQ;;>-a<>_t0!Q=)hOa>Tv1M8?r9kVOApjm;hJ4gMb}a^A6f@X~Oil)oV12;j44*KP_GBt-hi=s17a*8l?BtPS;g6P z8w!6d`&*ZPAE8vO;**s-D0c_d$cvp5#ODn#h5)&)qUtd+E33B)so64sHYg&Dr|vOgZ6Mltcp>Sy}y%Vq92gK_)g2}76?_6BlEfT|;* zKR`b8P65$-#8EiR22S!<^2}CJenI0H*`$3WxZBzEdH{;Vv2- z3nvClfZtSuYPX)HBh@wpQ%3~bA$(lyg)B3L$c&pF^~*Mk0?3pQ&V*oBko6G|QjViL z!F1dY1WQuDeTjI%d{8JvzE*UchdeF|o{3K8W#fEkn}g25#(mv9Sv?k|%E7MkwqZ6F z3B=>^5c4^@FTCI2KHX=P3)wju3#)NwytB-fKDjqSlL*bR9cy^Zzo>8Lo&YmB7oW4nk?QwF;*hTH)^*AiL-tr8S zqv3VB8C;6)>K@kK=%f7DW#aub>^*6N_yQ~xD)IRj%>4J1Z3Jxpub2Ts6|BD}v|nwe zT(YQ%OSK^pmq&v8d_KP=c3XP_z~YO|F}>*9{B+xrR$jWAB=P!tG4*iSMm0t9*~SCv z>Z+lY9b1f<9bG2PGW{fX(PTLhjk)UGKD{i%!>xYTP62;B9#wfQvF^1PUGfhyHa>FW zhC4Il9gf}@XD0o9-Zi0thhA(`R?%CFsakgvPTpIra?;!m)7FHx<&8Z3Lio~joU2aC z%{3Y29bx)E=@WyDRJ7qz;@@dwpXh7d?$_XtT5X=JYk$|DW@KH2UM)~~K@`(z8@IQ= z>OHfKUrZi(apJ-#)8kdDRx)~S%zF54D z1pbGa7|0IZl&meylSIMxY$KwW+rA%WK!?-tOE8YVZ^UHnwSeW=;fV${Alz!n(*UIQ z1#|51TC)MU;2E89js;9+DNnFa;50~-)p{K@&)KK3XK;R)2}R%Q42SpveWk?tVJ0R4 zSqvxvzNH4mY2)9S$wUabj`N_j6FkEVK%U1mKMAKr>`fCM4DSthxPyjO5a^y|IvNZO zAt~Vekr$>13GtE+sUZpSX(h-UY*KF<CK-0|u#>Vyo4O}s%4~9~jMdl^`s^dzs zB~$Ij1B0j4+1~UY{0s-*^2yORK8cK$_FI&T0UO<^8VUE4_e=af@(raf{2y)ve5*pc zioE;unkRXa)3ja|{^15*deiYgxapO~m!1h&bxLfl$SCKkFwioC`8RHkf4G5vQm%FT z+=f58S-n`-YcpCv=URi`>R50`m(FP)cXGZTw&9CtNH|}(ZDm8~cdON`8^5rU^MvDL z1s^EZW$&uh*@+F2U_&dcvZ7kRXDd2ooyver&a7Fj|E210UJmaFS+#m4YGF|36;mTG zQlUp76loj<)Ut|3k7+?UX-!B?9aE}jUmF!X6z=d3KmlVUBE+<_LV2N@zg_CuMM1~B zl$F1>olGyef9qk28B(~z{D=)GH%X*$0G7GAsg4=^3mIlC)C~Xn z9NS=-VI40NwPe@E#f1~%n&ZPe?bYKO!*nkap?llPC#RjsveO*8e^tHZdaR8jw_|u= z=&Q}+gUVOp{fr^E-|cROKfL$ALCP1kwb2&4QW={d=!H9+8Nj>$Me)UT?lSUh@#KZK zEjz%TFzSsZYfEulU>r|>3r=P>!Dr72_kLR;uUnW1sUGXyu%jPh$k20xa8K2cqJL2W zjd=@W5j>xd-@b4d>C>T&1e}4t6I;^iiJ|*618P3~X7-0T%y`hbA9}Cu5#NCCTKl@OXs?u_Oa9ex1--xSgSeNKP znw&9J9%lHxlJ3%Z_?f6{Y2Dm0O-x1^!;Q5UI!6-iI)%q-d8Z{qQkB@fqD`sG2+uw;|(IR=_M?~ao7ssY&|$q z2Ne8p5!@llRIu9s$J~zO3(#Mcs3WBXEF-HGX+jcUCy)3RG0_};T8O7RqVx_g-HyFGfa|pOxy*9UaU1E7a`ZN zLH;lsI*8Mms4pp%;R3QluUM+3FJBguinmP_eQS5_95;&W^NVkShVQ`f zFL=&(zSN6vd6VzZxKI4_i|^sT8tHee#9I#SOE1SUp(jsPPRHhwbWmNY4~o0d7{hL! zvvBXgE_3)@K`XB4x_qod-|%y%qW^+u_W!Pg9Q6NtGp_&75bet5$qR2=qMs@8mlw9A zCGmc)UOe>$7`gE-0{fXNxx6e=7ERL}`;JitgQ@4dq_f{MIdfJACih;LGsrfH|sW{|ny4{P5O`y;GzX zp`isDeB=4nZPmqoJ*K8kU9t^nV#-8iuC|R3x-n(;^K3zW1FvZ{%;b`z$peY`|1H z*dny^GIOrzjmCl>mVVX`;VYw+=7DWk-V4mQPmju$&OC=#J(o@lLCa9ig+zToZW1!~ zQVjTQ`K=^gLJT=xz{&G>I->*{NWlg1PK)){h{(ql(F}(nDnxShp-3DNv4ir1;!3o-n3=!(y8f7aXD-?JZ+Y zIc?a%a^Bcx+$5Y|Ldq|EYZ|`0#=f47pL%NQzq_Wso@w8AelQm>`36t=#CLk~rC$h`N2s#eD+5$mjEb zthuJ`_OXii29)>tJ5&hGSkyCa!^3g2{{<+ zJK6rU{8azvp}DP%u)dQq!7pJ>MtVk8`k$=c^b9QY46Ic2?Bw+Hoa`U6dX4 z?d*(=2UD5*B4A{q|G$@C85!9BWBv7iz2&z` z!&(WO1L^BZH!s%J8TI_Lin2*X5AF|7{T@Bx?_a#^qJEaJPaeY>^*vwhT6b>4!)tC0 zDznStG-Wv@x`lN#$dk1gsYaCQ#iuOv{3%dc)v9)~s9<9IK(K z#!KSl8AOJq3C#t(lm zX~FyALExHFR`yv0hoA5E!EsqS4f=sHAo}7h?Ut-)XoIN>O&o#YyFjl=-&3$N8;`mP z;JrP*^7kqErhi}k!kPg)el)T?1aPaicF7R(jb!Y%PqkdgW2r1Zo6ExsgL=PCkIBa> z0ogn!m`8v4DS)QA1xZmOERxc?u%tOO31v&PkV`G>({00$6}L1?2UtN&3}%n`3`@sY zaSf=Umya)-?xwHFO7!i=FYmOdh1an?SX$@Hs0-rHYPv`mM9+HV<)^tzW{aWao|X2R zG{`*sz67*&-t=x`|D!xn=I$DRibxq(9c8Xi>!cUq~u< zMDEmde>UjWTF!eWZK@Qglk03FCRaHXf7KEaPj+%p^sO^Wex_5?QL#sNf?R}evpGgu zRV8m^Et%QaNaYFL#}(Z}nJtMX7{(2#bU?$+!{G!@RA&ZROJSRDwI+FRO_O1?ksHY! zrbW9Xr(e)RjnVf%s9g2<_Y$q*JwR6$8#jspW!MYtI@Y9M2)Btvgw+WlV;@%PIWDHp zhJtj*@WX?kqcGx=I9R|!gPB9+W{I(C!F>P*53&EvGI{`VnNXyH{aRoJ?*EC)bh)syLA2z`B8%DSsS=f0@OTbDo-D<+vJ96J zBI$1&U-R1m6FJMFz+&w(D@jRnmY9)%iY#&^iR~yrTY?d0wTkA=8)w(#Z}bt7mBsa> z)FD=ZU0H254r@2R@HAe=7M`*`w53vFw}>yhI*7B%ws`4)a9Q^@5}1p|EZ{(XZkkdf7Z+FEiD8P@-$xqLTc`@I#bj5oy3MZHX0-@V-+Zw2Bi389Q%?bw6^! z8}(csZK6U}3{wtAA{;3MbRZ!JPohmVQW1#3+B_yj6HF#OttY{#R008WN>2-1 zjJ7?}HWye?`;I~`p_1%8WO<=jsN6CJBiFIcl)MFmg&BDsADW%JA$n;I73?#KQjNreip0W*%F z(zj_BCRFIPns=SYp5SeJ*7p;3 z-S@taPzAGD!qUn2(skb8C>wh1*(0KW7rbULxB2>wC zW1a(uc5L`@K@hhv?lS%q@MG9<3rhv>n9WghzI{qrhSmcZO^2n)Gzv8`;abJ1pE7Ig%B)rlTFs@b z3>MbWj9Sa9pH*wLgV{>x{$Kwv(b| z=U9e=E&E_P;48x?G=}}n3@;U8!F-<7w_=fa-!p%k4OadxWK`W+W^4Wdh zyRXQ!{R;!|zj_+|yX~W{Xlw#SCt+h`>_(tPPr$;c4MnG9?qU2>f}&F+&|)B9B4GHb zQ?#{pB4GX}Y>MJP-A!x>{>_^F=RlZ1i7e{f8FKhEYij{rcP!A46Ka*B9P`f*Tm9Nb*m@`uMANUMgmom*j+0v1}$w>$h*-iz)s<-(*K^o zIegejXUCjwFifzcg&Vp%kYHoOkE)zZTL=Latex, - flow/.style={-{Latex[length=2.0mm]}, line width=0.65pt, draw=navy}, - aux/.style={-{Latex[length=1.8mm]}, line width=0.6pt, draw=teal}, - box/.style={draw=navy, rounded corners=1.5pt, line width=0.65pt, - fill=bluefill, minimum height=7mm, align=center, inner sep=2.3pt}, - localbox/.style={box, draw=teal, fill=tealfill}, - residualbox/.style={box, draw=orange, fill=orangefill}, - labelbox/.style={align=center, text=navy}, - note/.style={font=\sffamily\tiny, text=grayline, align=center} + font=\sffamily\scriptsize, >=Latex, + flow/.style={-{Latex[length=1.8mm]},line width=0.65pt,draw=navy}, + localflow/.style={flow,draw=teal}, + box/.style={draw=navy,rounded corners=1.5pt,line width=0.65pt, + fill=bluefill,minimum height=8mm,align=center,inner sep=2.2pt}, + localbox/.style={box,draw=teal,fill=tealfill}, + note/.style={font=\sffamily\tiny,text=grayline,align=center} ] - -\node[labelbox] (av) at (0,2.65) {causal full-scene AV\\prefix $\mathcal X_{\leq t_n}$}; -\node[box, right=7mm of av, minimum width=24mm] (qwen) {frozen\\Qwen2.5-Omni}; -\node[box, right=8mm of qwen, minimum width=12mm] (g) {global\\$G_{t_n}$}; - -\node[labelbox] (audio) at (0,1.45) {mixed audio\\$\leq t_n$}; -\node[localbox, right=7mm of audio, minimum width=24mm] (cpc) {frozen causal CPC\\25-Hz processing}; -\node[localbox, right=8mm of cpc, minimum width=12mm] (u) {shared\\$U_{t_n}$}; - -\node[labelbox] (faces) at (0,0.15) {visible face crops\\$\leq t_n$}; -\node[localbox, right=7mm of faces, minimum width=24mm] (asd) {frozen causal AV/ASD\\25-Hz processing}; -\node[localbox, right=8mm of asd, minimum width=20mm] (persons) {anonymous set\\$\mathcal P_{t_n}=\{[V_i;s_i]\}$}; - -\node[box, minimum width=21mm] (base) at (8.25,2.05) {$G+U$ base head\\$Z^{\rm base}_{t_n}$}; -\node[localbox, minimum width=22mm] (attn) at (8.25,0.70) {masked person MHA\\query: $G_{t_n}+U_{t_n}$\\\scriptsize memory: $\mathcal P_{t_n}+$ NULL}; -\node[residualbox, minimum width=19mm] (res) at (10.65,0.70) {zero-init residual\\$\Delta Z_{t_n}$}; -\node[circle, draw=navy, fill=white, line width=0.7pt, - minimum size=5.5mm, inner sep=0pt] (sum) at (11.55,2.05) {$+$}; -\node[box, minimum width=21mm] (out) at (13.15,2.05) {$10\!\times\!3$ future activity\\$0.2$--$2.0$ s}; - -\draw[flow] (av) -- (qwen); -\draw[flow] (qwen) -- (g); -\draw[aux] (audio) -- (cpc); -\draw[aux] (cpc) -- (u); -\draw[aux] (faces) -- (asd); -\draw[aux] (asd) -- (persons); -\draw[flow] (g.east) -| ($(base.west)+(-0.25,0.12)$) -- (base.west); -\draw[aux] (u.east) -| ($(base.west)+(-0.25,-0.12)$) -- (base.west); -\draw[flow] (g.east) -- ++(0.3,0) |- (attn.north west); -\draw[aux] (u.east) -- ++(0.5,0) |- (attn.west); -\draw[aux] (persons.east) -- (attn.west); -\draw[flow] (base) -- (sum); -\draw[aux] (attn) -- (res); -\draw[flow, draw=orange] (res.north) |- (sum.south); -\draw[flow] (sum) -- (out); - -\node[note, below=1.5mm of base] {trained first, then frozen}; -\node[note, below=1.2mm of res] {trainable adaptation}; - -\draw[grayline, line width=0.45pt] (-0.15,-0.62) -- (14.35,-0.62); -\node[anchor=west, font=\sffamily\scriptsize\bfseries, text=navy] - at (-0.05,-0.92) {Causal streaming at cutoff $t_n$}; - -\node[anchor=east, text=navy] at (2.25,-1.45) {Omni input}; -\draw[fill=bluefill, draw=navy, line width=0.55pt] (2.45,-1.67) rectangle (4.35,-1.23); -\draw[fill=bluefill, draw=navy, line width=0.55pt] (4.35,-1.67) rectangle (6.25,-1.23); -\node[text=navy] at (3.40,-1.45) {cached 2-s blocks}; -\node[text=navy] at (5.30,-1.45) {$\cdots$}; -\draw[fill=orangefill, draw=orange, line width=0.65pt] (6.25,-1.67) rectangle (9.15,-1.23); -\node[text=orange] at (7.70,-1.45) {current partial block}; -\draw[dashed, draw=orange, line width=0.8pt] (9.15,-2.90) -- (9.15,-1.02); -\node[anchor=south, text=orange, font=\sffamily\tiny\bfseries] at (9.15,-1.02) {$t_n$}; -\node[note, anchor=west] at (9.40,-1.45) {latest observed input included\\up to 8-s rolling budget}; - -\node[anchor=east, text=teal] at (2.25,-2.15) {local encoder}; -\foreach \x in {2.55,2.85,...,8.85} { - \draw[draw=teal, line width=0.55pt] (\x,-2.33) -- (\x,-1.97); +\node[anchor=west,font=\sffamily\scriptsize\bfseries,text=navy] + at (-0.15,3.15) {Model: global context + recent evidence}; +\node[align=center,text=navy] (av) at (0.65,2.45) + {full-scene AV\\observed prefix}; +\node[box] (omni) at (3.05,2.45) {frozen Qwen2.5-Omni\\8-s maximum context}; +\node[box] (global) at (5.65,2.45) {last-four-layer\\projection $G_n$}; +\node[align=center,text=teal] (audio) at (0.65,1.28) + {recent 1-s\\mixed audio}; +\node[localbox] (ae) at (3.05,1.28) {frozen Qwen audio\\valid-token mean}; +\node[localbox] (ap) at (5.65,1.28) {local projection\\$\widetilde A_n$ + validity}; +\node[align=center,text=teal] (video) at (0.65,0.08) + {recent 1-s\\person crops}; +\node[localbox,dashed] (ve) at (3.05,0.08) + {frozen Qwen visual\\recent crop pooling}; +\node[localbox,dashed] (vp) at (5.65,0.08) + {optional projection\\$\widetilde V_n$ + validity}; +\node[box,minimum width=20mm] (fusion) at (8.35,1.28) + {feature concatenation\\trainable MLP}; +\node[box,minimum width=23mm] (out) at (11.15,1.28) + {$10\times3$ future activity\\0.2--2.0 s}; +\draw[flow] (av) -- (omni); +\draw[flow] (omni) -- (global); +\draw[localflow] (audio) -- (ae); +\draw[localflow] (ae) -- (ap); +\draw[localflow,dashed] (video) -- (ve); +\draw[localflow,dashed] (ve) -- (vp); +\draw[flow] (global.east) -- ++(0.35,0) |- (fusion.north); +\draw[localflow] (ap) -- (fusion); +\draw[localflow,dashed] (vp.east) -- ++(0.35,0) |- (fusion.south); +\draw[flow] (fusion) -- (out); +\node[note] at (10.95,0.22) + {background / wearer / aggregate others\\no semantic event or identity output}; +\draw[grayline,line width=0.45pt] (-0.15,-0.65) -- (12.5,-0.65); +\node[anchor=west,font=\sffamily\scriptsize\bfseries,text=navy] + at (-0.15,-0.98) {Stream: committed history + temporary current tail}; +\node[anchor=east,text=navy] at (2.05,-1.65) {Omni media}; +\foreach \a/\b/\lab in {2.3/3.9/2 s,3.9/5.5/2 s,5.5/7.1/2 s} { + \draw[fill=bluefill,draw=navy,line width=0.55pt] + (\a,-1.87) rectangle (\b,-1.43); + \node[text=navy] at ({(\a+\b)/2},-1.65) {\lab}; } -\draw[draw=teal, line width=0.55pt] (2.55,-2.15) -- (9.15,-2.15); -\node[note, anchor=west, text=teal] at (9.40,-2.15) {25 Hz internal states}; - -\node[anchor=east, text=navy] at (2.25,-2.72) {forecast grid}; -\draw[draw=navy, line width=0.65pt] (2.55,-2.72) -- (9.15,-2.72); -\foreach \x/\lab in {3.15/0.2,4.65/0.4,6.15/0.6,7.65/0.8,9.15/$t_n$} { - \draw[draw=navy, line width=0.75pt] (\x,-2.92) -- (\x,-2.52); - \node[below=0.5mm, font=\sffamily\tiny, text=navy] at (\x,-2.92) {\lab}; - \draw[-{Latex[length=1.4mm]}, draw=teal, line width=0.55pt] (\x,-2.32) -- (\x,-2.50); +\draw[fill=orangefill,draw=orange,line width=0.65pt] + (7.1,-1.87) rectangle (8.5,-1.43); +\node[text=orange,font=\sffamily\tiny] at (7.8,-1.65) {partial tail}; +\draw[fill=white,draw=grayline,dashed,line width=0.55pt] + (8.5,-1.87) rectangle (8.7,-1.43); +\node[note,anchor=west] at (9.0,-1.65) + {three completed blocks + observed tail\\8-s maximum; future portion excluded}; +\node[note,text=navy] at (4.7,-2.13) {reuse completed media payloads}; +\node[note,text=orange] at (7.8,-2.13) {recompute at each cutoff}; +\node[anchor=east,text=teal] at (2.05,-2.62) {local evidence}; +\draw[draw=teal,line width=1.8pt] (7.7,-2.62) -- (8.5,-2.62); +\node[note,anchor=west,text=teal] at (9.0,-2.62) + {recent 1-s audio / optional vision\\refreshed on the common 5-Hz grid}; +\node[anchor=east,text=navy] at (2.05,-3.18) {decision grid}; +\draw[draw=navy,line width=0.6pt] (2.3,-3.18) -- (8.5,-3.18); +\foreach \x in {2.42,2.58,...,8.34} { + \draw[draw=navy,line width=0.5pt] (\x,-3.28) -- (\x,-3.08); } -\node[note, anchor=west, text=navy] at (9.40,-2.72) {5 Hz fusion and prediction\\every fifth local right edge}; - +\draw[draw=navy,line width=0.9pt] (8.5,-3.3) -- (8.5,-3.06); +\draw[dashed,draw=orange,line width=0.75pt] + (8.5,-3.35) -- (8.5,-1.15); +\node[anchor=south,text=orange,font=\sffamily\tiny\bfseries] + at (8.5,-1.15) {cutoff $t_n$}; +\node[note,anchor=west,text=navy] at (9.0,-3.18) + {one prediction every 200 ms\\same cutoff and target index}; \end{tikzpicture} \end{document} diff --git a/manuscript/main/main.tex b/manuscript/main/main.tex index a2721ba..f4c997c 100644 --- a/manuscript/main/main.tex +++ b/manuscript/main/main.tex @@ -1,121 +1,102 @@ -% ICASSP 2027 content skeleton. The final paper must use the official 2027 -% author kit and contain no visible \todo{} markers. Planned experiments are -% intentionally marked rather than presented as completed work. +% ICASSP 2027 working draft: results and mechanism claims are not yet frozen. +% Four technical pages maximum; the optional fifth page contains references only. +% Use the final author kit and resolve every TODO before submission. \documentclass{article} \usepackage{spconf} \usepackage{amsmath,amssymb,graphicx,hyperref,xcolor} - +\hypersetup{hidelinks} \newcommand{\todo}[1]{\textcolor{red}{\textbf{[TODO: #1]}}} \newcommand{\vect}[1]{\boldsymbol{#1}} \setlength{\emergencystretch}{2em} - -\title{Is It My Turn? Causal Local Evidence Adaptation of Omni Models for -Egocentric Floor Forecasting} - -% TODO: Insert the final author list and affiliations after the ICASSP 2027 -% review policy and author order are finalized. +\title{Causal Local Evidence Adaptation of Omni Models for +Egocentric Speech Anticipation} \name{Internal Manuscript Draft} \address{} - \begin{document} \ninept \maketitle \begin{abstract} -Real-time audiovisual agents must decide not only what to say, but whether an -emerging floor opportunity belongs to them. This is difficult in multiparty -egocentric interaction: the target wearer is behind the camera, while the -visible people provide only indirect evidence about whether the surrounding -floor remains occupied. We study strictly causal forecasting of the wearer's -future speech activity every 200~ms. Although a general-purpose Omni model -provides rich long-context audio--visual representations, its global readout is -not explicitly trained to expose sub-second, wearer-relative floor evidence. -We therefore study a candidate causal local floor adapter that combines the global -Omni state with short-window mixed audio and an anonymous set of visible-person -observations, without assuming persistent speaker identity. On EasyCom, -\todo{report the final three-seed dense and fixed-horizon behavioral-event -results: wearer-entry and INT-yield AP, recall-matched false-positive rates, -confidence intervals, and oracle-gap recovery}. Controlled -\todo{time-shift/remove-vision/same-rate or capacity-matched} interventions -show that \todo{state the supported mechanism, without claiming addressee or -speaker identity}. These results demonstrate \todo{the narrow conclusion -actually supported by the final experiments}. +Egocentric conversational agents need timely predictions of an unseen +camera wearer's speech participation. We study causal local evidence +adaptation of a frozen Omni model, combining its integrated audiovisual +context with explicitly accessible recent audio and optional local visual +observations. The model predicts future activity every 200~ms at ten horizons +from 0.2 to 2.0~s. A bounded 8-s streaming context reuses completed audiovisual +blocks while recomputing the current partial tail at each cutoff; this exposes +newly observed evidence without waiting for the next complete block. +We evaluate dense activity forecasting and wearer onset/offset anticipation +separately, because improvements in continuous activity scores need not imply +equivalent improvements near state changes. +\todo{Insert matched multi-seed results and ablation-supported conclusions.} \end{abstract} \begin{keywords} -conversational agents, turn-taking, egocentric video, multimodal adaptation, -voice activity projection +egocentric speech anticipation, multimodal adaptation, conversational agents, +causal streaming, voice activity projection \end{keywords} \section{Introduction} \label{sec:intro} -Natural turn-taking requires a conversational system to anticipate not only -when speech will stop, but whether a floor opportunity actually belongs to it. -In a dyadic exchange, a pause after one interlocutor finishes often invites the -other to respond. In a group conversation, the same pause may instead mark a -handover between two other participants. An egocentric agent that reacts only -to silence or aggregate speech may therefore interrupt a conversation that -should continue without it. We study \emph{egocentric floor forecasting}: -continuously predicting the near-future speech participation of the -first-person wearer from strictly causal audio--visual observations. +A conversational agent must predict not only what to say, but when to +participate. In egocentric multiparty conversation, the camera wearer is +usually invisible, and the visible participants provide indirect context for +the wearer's next action. We use observed wearer speech as an imitation target, +forecasting participation rather than generating a response or committing +a turn-taking action. -Voice Activity Projection (VAP) introduced continuous prediction of future -voice activity for turn-taking \cite{ekstedt2022vap}. EgoSpeak brought this -formulation to causal, untrimmed first-person streams, using future camera- -wearer activity as an imitation target \cite{kim2025egospeak}. Complementary -work adds visual gaze, head pose, and facial behavior to predictive turn-taking -\cite{russell2025mmvap}, while MuVAP combines global acoustic dynamics with -visible face tracks to forecast visible floor holders in multiparty scenes -\cite{qi2026muvap}. Our target has a different role structure: the participant -whose future action is predicted is the one participant absent from the -visible set. The visible people are contextual evidence for the unseen -wearer's decision, not candidate output identities. +Voice Activity Projection (VAP) learns continuous future speech activity +\cite{ekstedt2022vap}. EgoSpeak extends activity forecasting to untrimmed +first-person audiovisual streams and studies modalities and context length +\cite{kim2025egospeak}. Visual predictive turn-taking +\cite{russell2025mmvap} and MuVAP's causal face-grounded multiparty projections +\cite{qi2026muvap} further motivate explicit local evidence. Our output, +however, is wearer-relative: visible people provide context, not candidate +speaker identities. We do not infer addressees or semantic floor ownership +from aggregate activity labels. -This role asymmetry exposes an adaptation problem for general-purpose Omni -models. Omni pretraining favors globally integrated representations useful for -multimodal understanding and generation. Egocentric floor control instead -depends on timely prosodic and visible-person activity at sub-second scale, -including whether other participants continue to occupy the floor. Increasing -model capacity or applying a generic parameter-efficient update does not -explicitly preserve or route this evidence to a dense wearer-relative -prediction head. The open question is therefore not merely whether an Omni -backbone can be applied to EgoSpeak, but what task structure is still required -to turn general audiovisual understanding into reliable floor control. +General-purpose Omni representations integrate audio, video, and broader +context \cite{xu2025qwenomni}, but their usefulness for dense anticipation +depends on how the prediction head accesses recent observations. +Two interfaces matter. First, a short-window modality encoder can expose +recent evidence separately from the integrated Thinker state. Second, a +blockwise stream must include its currently incomplete block if predictions +are required before the next block closes. These are representation-access +and alignment questions, not evidence that all Omni models lack turn-taking +ability. -Our candidate decomposition separates long-context understanding from -short-window floor evidence. A -causal global Omni state represents the broader scene and conversation. In -parallel, a lightweight local path encodes recent mixed audio and a changing, -anonymous set of visible-person observations. A residual adapter makes this -local evidence accessible to the common ten-horizon activity head. The primary -variant deliberately avoids cross-time identity: the current development -oracle supports timely aggregate visible-other activity but not person -continuity. Track-aware structure is considered only if it defeats no-ID, -identity-corrupted, and capacity-matched controls. +We organize both interfaces under \emph{causal local evidence adaptation}. +A frozen Omni path summarizes conversational context, while a recent-audio +path supplies explicitly accessible local evidence. Visual features are an +optional extension whose benefit must be measured rather than assumed. +The stream incorporates the observed partial tail at every decision time. +We retain EgoSpeak-compatible outputs and distinguish dense forecasting +from onset/offset anticipation. -The final paper will claim the following three contributions only if the -corresponding TODO gates pass: +The paper is organized around three contributions: \begin{itemize} - \item We identify and test a temporal--role mismatch between a global Omni - readout and causal egocentric floor forecasting for an invisible wearer. - \item We evaluate a wearer-relative causal local floor adapter that combines - long-context Omni information with short-window audio and anonymous - visible-person evidence. - \item We evaluate whether the adapter assigns lower erroneous-action scores - during multiparty floor transfers under an entry/INT protocol with point - positives and explicitly annotated hard-negative opportunity regions. + \item A global--local adaptation framework for invisible-wearer speech + anticipation, combining frozen Omni context with recent modality evidence + through a lightweight forecasting head. + \item A cutoff-aligned streaming realization with bounded context and + temporary partial-tail recomputation, separating completed-history reuse + from access to the latest observed input. + \item A controlled evaluation of dense forecasting and wearer onset/offset + anticipation, isolating local-evidence and streaming effects rather than + equating dense gains with improved semantic turn-taking. \end{itemize} +% Contributions describe implementation and study design. Mechanism claims +% require matched ablations; ordinary caching is not claimed as a new algorithm. \begin{figure*}[t] \centering -\includegraphics[width=0.98\textwidth]{figures/method_architecture.pdf} -\caption{Our strictly causal global--local architecture (top) and streaming -alignment (bottom). At every 5-Hz cutoff $t_n$, the global state includes the -latest partial 2-s Omni block, while every fifth causal 25-Hz local state -provides shared audio and an anonymous visible-person set. Masked person -attention contributes only through a zero-initialized residual to the matched -$G+U$ baseline.} +\includegraphics[width=0.96\textwidth]{figures/method_architecture.pdf} +\caption{Causal local evidence adaptation. Top: integrated Omni context and +recent audio feed a common ten-horizon head; local vision is optional. +Bottom: completed 2-s blocks are reused within an 8-s context budget, while +the observed partial tail is recomputed at each 200-ms cutoff. +No future media or temporary readout tokens enter committed history.} \label{fig:method} \end{figure*} @@ -125,287 +106,164 @@ $G+U$ baseline.} \subsection{Model Architecture} \label{sec:model_arch} -At decision time $t$, the model observes only the audiovisual stream -$\mathcal X_{\leq t}$ and predicts $K=10$ future bins spaced by -$\Delta=0.2$~s. For horizon $k$, the multilabel target -$\vect y_{t,k}=[y^{\mathrm{bg}},y^{\mathrm{w}},y^{\mathrm{o}}]$ denotes -background, camera-wearer activity, and activity by one or more other people; -wearer--other overlap is allowed. The output is -\begin{equation} - \hat{\vect Y}_t=f_\theta(\mathcal X_{\leq t}) - \in[0,1]^{K\times3}. - \label{eq:task} -\end{equation} +\textbf{Task definition.} +At cutoff $t_n=0.2n$~s, $n\geq1$, the model observes only media available by +$t_n$ and predicts activity at ten horizons, $0.2,0.4,\ldots,2.0$~s. +Each horizon has three channels in fixed order: background, camera wearer, +and aggregate others. Background indicates no speech; wearer and others may +both be active during overlap. The target is future activity, not a semantic +ENTRY/YIELD label. The tensor contains ten three-channel outputs per cutoff. -Our architecture complements globally integrated Omni context with explicitly -accessible local floor evidence (Fig.~\ref{fig:method}). Let -$\vect g_t\in\mathbb R^{d_g}$ denote the causal Qwen2.5-Omni Thinker readout -at $t$ \cite{xu2025qwenomni}. In parallel, the frozen MuVAP ASD frontend -\cite{qi2026muvap} produces one shared mixed-audio CPC state $\vect u_t$ and a -variable-size set of visible-person states -\begin{equation} - \mathcal P_t=\{\vect p_{t,i}\}_{i=1}^{N_t},\qquad - \vect p_{t,i}=[\vect v_{t,i};s_{t,i}], - \label{eq:person_state} -\end{equation} -where $\vect v_{t,i}$ is a causal visual state and $s_{t,i}$ is one -audio--visual speaking logit. The shared audio state is not duplicated in -each person token. The prediction model receives neither participant IDs nor -cross-time track identity; provided causal face boxes are used only to isolate -the representation and fusion question. +\textbf{Global and local features.} +The global path uses frozen Qwen2.5-Omni-3B \cite{xu2025qwenomni}. +We retain the final four Thinker readout-layer states, concatenate them, +and apply a layer-normalized projection with GELU to obtain a +2048-dimensional context vector $\vect g_n$. It can contain audio and visual +information; global context is not audio-free. -A matched global--audio head first maps $[\vect g_t;\vect u_t]$ to baseline -logits $\vect Z_t^{\mathrm{base}}\in\mathbb R^{K\times3}$ and an intermediate -state $\vect h_t$. The same inputs query the current person set: -\begin{equation} - \begin{aligned} - \vect q_t &= W_g\vect g_t+W_a\vect u_t,\\ - \mathcal M_t &= \{W_p\vect p_{t,i}\}_{i=1}^{N_t} - \cup\{\vect p_\varnothing\},\\ - \vect c_t &= \mathrm{MHA}(\vect q_t,\mathcal M_t,\mathcal M_t), - \end{aligned} - \label{eq:person_attention} -\end{equation} -where masking supports variable cardinality and the learned null token -$\vect p_\varnothing$ makes the attention well defined for an empty set. If -$m_t$ indicates that at least one valid person observation exists, the person -branch supplies only a residual logit correction, -\begin{equation} - \vect Z_t=\vect Z_t^{\mathrm{base}} - {}+m_t\,\mathrm{reshape}\!\left(W_r[\vect h_t;\vect c_t;m_t]\right), - \qquad W_r\vert_{\mathrm{init}}=0, - \label{eq:residual} -\end{equation} -and $\hat{\vect Y}_t=\mathrm{softmax}_c(\vect Z_t)$. Thus, after copying and -freezing the trained $G+U$ head, the complete model initially reproduces that -baseline exactly; only the person projection, query, masked attention, and -residual readout are trained in the adaptation stage. +The local audio vector $\vect a_n$ is extracted independently from the most +recent 1~s of mixed monaural audio, clipped to the available prefix at startup. +The frozen Qwen audio encoder processes this cropped waveform, and valid +output tokens are averaged into a 2048-dimensional vector. Cropping precedes +preprocessing, preventing access to future source samples. +This exposes recent evidence without another Thinker pass; it does not +separate participants or explicitly estimate prosody. -We use the EgoSpeak/LSTR multi-positive cross-entropy over causal-valid rows, -\begin{equation} - \begin{aligned} - \mathcal L&=-\frac{1}{M}\sum_{t,k,c}m_{t,k}y^c_{t,k} - \log\mathrm{softmax}_c(\vect Z_{t,k}),\\ - M&=\sum_{t,k}m_{t,k}. - \end{aligned} - \label{eq:loss} -\end{equation} -For an overlap target, both active channels contribute a log-probability term. -No transcript, target-of-speech annotation, close-microphone signal, speech -label, or future observation is supplied to the forecasting model. The -wearer forecast is interpreted only at evaluation time: it is an entry proxy -when the wearer is silent and its complement is a yield proxy when the wearer -is active, not a trained event hazard or committed controller action. +An optional visual vector $\vect v_n$ uses causal person crops sampled at +2~FPS. Spatial tokens are averaged within each crop, visible people receive +equal weight within a frame, and valid frames are averaged over the recent +1~s. The output is another 2048-dimensional vector. Provided boxes isolate +the representation question, not an online tracking system. Pooling does not +preserve identity or establish active-speaker or addressee grounding. -\subsection{Causal Streaming Architecture} +\textbf{Feature fusion and learning.} +Each enabled local vector is layer-normalized, projected to 256 dimensions +with GELU, and multiplied by its validity indicator. The indicator is also +concatenated into the head, distinguishing missing observations from valid +zero-valued evidence. The common forecast is +\begin{equation} + \hat{\vect Y}_n = + \mathrm{softmax}_{c}\! + \left(F_\theta\!\left[ + \vect g_n;\widetilde{\vect a}_n;m_n^{a}; + \widetilde{\vect v}_n;m_n^{v}\right]\right), + \label{eq:fusion} +\end{equation} +with visual terms omitted in the audio-core variant. +$F_\theta$ is a layer-normalized MLP with GELU, dropout, and a 30-logit output. +The same head family supports global-only, local-only, and fused controls; +parameter counts are reported because input dimensions differ. + +The encoders and Thinker are frozen; only the layer projection, local +projections, and head are trained. This is \emph{frozen-backbone adaptation}, +not end-to-end Omni fine-tuning. We use EgoSpeak/LSTR multi-positive +cross-entropy over causal-valid source--horizon pairs. Both active channels +contribute during overlap; no semantic-event objective is added. +Transcripts, participant speech labels, target-of-speech metadata, and LLM +annotations are never model inputs. + +\subsection{Streaming Inference Architecture} \label{sec:causal_streaming} -We distinguish encoder processing granularity from the common forecasting -rate. Predictions are emitted at $t_n=n\Delta$, $n\geq1$, while every -representation used at $t_n$ is restricted to media available by that physical -cutoff. +\textbf{Bounded history.} +The Omni path processes source-aligned 2-s audiovisual blocks within a maximum +8-s presentation budget. After warm-up, it retains three completed blocks +plus the current block, whose observed duration ranges from 0.2 to 2.0~s. +The available span therefore varies with phase: 8~s is a maximum, not an +exactly sliding crop. Older blocks are dropped at block transitions. +Retained completed payloads are replayed to rebuild the bounded language-model +cache; completed modality payloads are reused rather than re-encoded. +All caches reset at session or source discontinuities. -The global path uses an 8-s rolling causal presentation budget with -source-aligned 2-s audiovisual blocks. Completed blocks are cached and -replayed, while the currently incomplete block is a temporary tail. At every -200-ms cutoff, the tail is rebuilt with all newly observed audio and video and -included in computing $\vect g_{t_n}$; when it reaches 2~s, it is committed to -the reusable history. Consequently, the Omni state is not held constant for -2~s: it includes the latest available content at every decision cutoff without -observing media after $t_n$. We retain the final four Thinker query-layer -states and fuse them in the matched head with a concatenation MLP. +\textbf{Current-tail handling.} +At each 200-ms cutoff, the current block is cropped at the physical cutoff +and only observed audio and video are encoded. This incomplete block is the +\emph{tail}. It is appended to a temporary copy of the completed-history cache, +followed by a readout query to obtain the Thinker state. +The temporary tail and query are not committed. When a block completes, +its media payload is committed once; the next cutoff starts a new tail. +The state is thus refreshed at 5~Hz instead of being held until a 2-s block +closes. -The local frontend operates causally at 25~Hz. State $j$ consumes the -half-open interval $[j/25,(j+1)/25)$ and is timestamped at its right edge. -Mixed audio is encoded once as a continuous shared CPC stream, while each -available face crop is processed by the causal visual and audio--visual -speaking modules. Ten-second extraction chunks may prepend up to 2~s of past -context, never future context. At a 5-Hz forecasting cutoff, we select the -local state whose right edge equals $t_n$; hence every fifth 25-Hz state aligns -with one Omni prediction row. The two paths therefore describe the same -causal prefix: the Omni path preserves integrated conversational context, -whereas the local path exposes fine-grained audio and visible-person floor -evidence. Fusion and prediction occur only on the common 5-Hz grid. +Completed history and the tail are represented in one integrated Omni state, +not a separate tail-content or learned block-phase embedding. +% The auxiliary preserved-EgoSpeak residual has a learned phase embedding; +% its on/off ablation is separate from the core stream described here. +\textbf{Alignment and availability.} +Recent audio and optional vision are refreshed on the common 5-Hz grid and +joined by cutoff and target index, never by nearest future observation. +Only video frames available before the cutoff and truncated audio enter +preprocessing. No future completed block is backfilled into earlier rows. +Tail-aware refresh ensures access to observed input, not a measured +real-time throughput or predictive gain. Correctness, refresh effects, +and latency are assessed separately in Section~\ref{sec:analysis}. -\section{Experiments} +\section{Experimental Setup} \label{sec:experiments} -\subsection{Dataset and Data Preparation} +\subsection{Data and Training Protocol} -We evaluate on EasyCom following the EgoSpeak split, using Sessions 4--12 as -the training/development pool and Sessions 1--3 only for final evaluation -\cite{donley2021easycom}. The participant-resolved speech annotations are -converted into two parallel representations. First, they are downsampled to -5~Hz to construct the EgoSpeak-compatible ten-horizon targets for background, -camera-wearer, and aggregate non-wearer activity. Second, the original -participant timeline is retained to derive adjudicated interaction events for -behavioral evaluation. We additionally apply the annotation workflow to the -3,608 Ego4D AV validation candidates as a protocol stress test; Ego4D is not -used to train, tune, or compare the forecasting models reported here. +We use EasyCom \cite{donley2021easycom} with the EgoSpeak official split: +Sessions~4--12 for training and Sessions~1--3 for testing. +Targets follow the common 5-Hz grid and class order. +Training-side folds determine recipe changes; a session seen by a parent +checkpoint is not held-out validation for its continuation. +The final recipe is fixed before training on all nine training sessions. +Already inspected test runs are exploratory and are not used to choose +learning rates, windows, checkpoints, or ablations. -\textbf{Behavioral event annotation.} -We use every observed wearer activity transition as a high-recall semantic -candidate. For each wearer onset, nearby preceding non-wearer releases, the -intervening silence gap, and concurrent activity are retained as contextual -facts; the onset is labeled as wearer entry only when the subsequent wearer -speech constitutes a genuine floor take, including re-entry while another -speaker is active. For each wearer offset, nearby non-wearer onsets and offsets, -pre-existing and newly active speakers, overlap durations, and subsequent -speakers are retained without a timing-based takeover gate; the offset is -labeled as INT-yield only when a non-wearer genuinely takes over and the wearer -relinquishes the floor. We let an LLM jointly inspect -participant-resolved timing and transcripts to provide a semantic pre-label, -followed by mandatory human adjudication. Separately, we mine regions with no -wearer response that nevertheless constitute false-positive opportunities: -same-speaker pauses and other-to-other transitions for entry, and backchannels or -non-takeover overlaps for INT. Only human-confirmed positives and hard negatives -enter evaluation. Appendix~\ref{app:event_annotation} gives the full protocol. -Table~\ref{tab:behavior_annotation_stats} reports the current annotation -workload compactly; the EasyCom snapshot covers Sessions 1--4 only and is not -the final train/test annotation inventory. +The primary comparison includes the released EgoSpeak MiniROADA A+V reference, +Qwen audio encoder-only, global Omni $G$, audio-core $G+A$, and optional +$G+A+V$. Preserved-EgoSpeak-plus-Omni residual fusion is an auxiliary +architecture control, not the default method. Zero initialization guarantees +initial baseline recovery, not non-degradation after training. +Omni LoRA is deferred; the core uses frozen-backbone adaptation. +Qwen Omni 7B and MiniCPM-o 4.5 are planned transfer controls, not the core. -\begin{table}[h] -\caption{LLM pre-label workload before human adjudication. Agreement is -between two independent passes.} -\label{tab:behavior_annotation_stats} -\centering -\scriptsize -\begin{tabular}{@{}lrr@{}} -\hline -Measure & EasyCom S1--4 & Ego4D AV val \\ -\hline -Candidates & 2,128 & 3,608 \\ -AI positive & 367 & 541 \\ -AI hard negative & 1,017 & 1,174 \\ -AI excluded & 744 & 1,893 \\ -Two-pass agreement & 93.4\% & 82.1\% \\ -Human-confirmed & 0 & 0 \\ -\hline -\end{tabular} -\end{table} +\todo{Insert the locked recipe, provenance, trainable counts, and common +valid-pair counts. Report three seeds and per-session results.} -Participant identity is used only to construct these evaluation annotations -and is never provided to the prediction model. Provided person boxes are used -only for the causal visible-person input; transcripts, target-of-speech labels, -close-microphone audio, and future observations are unavailable to the model. -\todo{Report duration and event statistics: entry positives/hard negatives, -INT positives/hard negatives, excluded candidates, and audited-region counts -for train/development and test. Freeze the event-construction and region-audit -protocol before reporting semantic entry/INT results; until then, retain the -timing-derived proxy terminology.} +\subsection{Evaluation} -\subsection{Model Configuration and Training} +\textbf{Dense forecasting.} +For each horizon, valid frame scores are pooled across evaluated sessions +to compute AP for background, wearer, and others. Their arithmetic mean is +horizon mAP; averaging the ten horizon mAPs yields mean mAP. +Wearer AP is also reported separately. Comparisons use the intersection of +valid source--horizon pairs. -Our main backbone is Qwen2.5-Omni-3B. We compare a frozen global Omni readout, -matched PEFT/LoRA adaptation, global features with recent local audio, a -parameter- and history-matched temporal local branch, and the proposed causal -local audio--visual adapter. Qwen2.5-Omni-7B is used as a capacity-scaling -control. All learned variants use identical causal examples, prediction -horizons, prediction heads, and the multi-positive cross-entropy objective in -Eq.~\eqref{eq:loss}. +\textbf{Raw onset/offset anticipation.} +Onset evaluation uses source rows where the wearer is silent. A speaking +future endpoint is positive, scored by predicted wearer probability. +Offset evaluation uses source rows where the wearer is active. A silent +future endpoint is positive, scored by one minus predicted wearer probability. +Current ground-truth activity defines evaluation subsets only, not inputs. +We report AP per horizon and its ten-horizon mean for each direction. -The diagnostic streaming ablation additionally uses MiniCPM-o 4.5 -\cite{cui2026minicpmo45}. Its native cached stream is evaluated at its native -one-second update interval: a state becomes available to the 200-ms row whose -cutoff equals the chunk end and is then causally held until the next update. A -Qwen row subjected to the same 1-Hz update-and-hold schedule separates -refresh-rate effects from backbone effects. A MiniCPM-o -5-Hz cache row is admissible only if a cached branch at every cutoff agrees -with full causal-prefix recomputation within a frozen numerical tolerance and -passes future-input intervention tests. Thus the native 1-Hz condition is a -strictly causal held-state baseline, not a claim of native 5-Hz refresh. - -Model selection is performed using training-side data only. Event operating -points are selected from session-level out-of-fold predictions over -Sessions~4--12; the final model is then retrained on all nine sessions before -evaluation on Sessions~1--3. Final results are averaged over three random -seeds. -\todo{Freeze context length, local window/rates, optimizer, epochs, LoRA -configuration, trainable parameter counts, and inference latency.} - -\subsection{Evaluation Protocol} - -We first retain dense future-activity evaluation for direct comparison with -EgoSpeak, reporting AP at the 0.2--2.0~s horizons and their mean mAP. -As a threshold-free diagnostic, we also report wearer OFF$\rightarrow$ON and -ON$\rightarrow$OFF anticipation AP; these raw boundaries are timing proxies, -not semantic EOT or INT labels. - -For dense-only models, behavioral evaluation is opportunity-conditioned and -uses the model's original wearer-activity forecasts rather than treating them -as semantic intent probabilities. An entry opportunity begins at a reviewed -non-wearer release. It resolves positively when the wearer enters, or -negatively when the same non-wearer resumes or a different non-wearer takes the -next floor. From the first causal 5-Hz state that observes the release, the -entry score is the maximum projected wearer probability before that competing -resolution, capped at 2.0~s. A selected-release positive is excluded if another -non-wearer onset occurs before or exactly at the wearer entry, or if wearer -activity already occurred after the selected release. Positive entries without -a reviewer-selected release are reported as unanchored and excluded from this -matched-opportunity analysis; they remain available to the separate raw-onset -analysis. - -An INT opportunity begins when a non-wearer starts while the wearer holds the -floor. It resolves positively when the reviewed behavior is an INT-yield, and -negatively when the non-wearer contribution is a backchannel or failed -takeover and the wearer retains the floor. The yield score is the maximum of -one minus the projected wearer probability over the next 0.2--0.6~s, censored -strictly at the competing non-wearer offset. All prediction values are read -diagonally from one causal source row of the target-aligned forecast tensor. -No input after the observed action outcome is used. For current INT-positive -annotations, which do not select a competing onset explicitly, the -implementation evaluates only a unique supplied non-wearer interval crossing -the wearer offset; cases with multiple eligible intervals are excluded and -counted for audit rather than assigned an arbitrary onset. - -The headline entry hard negatives are same-speaker mid-turn pauses and other- -to-other transfers. Wearer backchannels are not pooled into headline false- -entry rate: their high wearer probability is correct under the dense training -target. We instead retain entry-versus-backchannel as a separate semantic- -selectivity diagnostic. Thus, the semantic annotations define which matched -opportunities are evaluated, while every model is scored solely through the -same EgoSpeak-compatible dense output. A capacity-matched downstream probe, -following MuVAP~\cite{qi2026muvap}, is secondary and is not needed for this -zero-shot activity-derived comparison. - -\textbf{False-positive scoring rule.} -A false positive is a hard-negative opportunity whose opportunity score -exceeds the frozen threshold, regardless of whether the wearer subsequently -exhibits an unrelated later onset or offset. Each opportunity contributes one -score, and competing-risk censoring prevents later conversational outcomes -from changing its label. Thus, false-positive evaluation includes situations -in which the correct wearer behavior is to remain silent or retain the floor. - -We report threshold-free proxy AP for entry and INT. The headline behavioral -operating point additionally reports false-positive rate at matched recall -$R=0.8$; thresholds are selected independently for entry and INT from training- -side out-of-fold predictions. The other-to-other hard-negative subset tests -whether local visual evidence specifically reduces erroneous wearer action -scores during multiparty floor transfers. \todo{Freeze the 2.0-s entry and -0.6-s yield caps using training-side data, audit selected-release and competing- -onset coverage, and verify identical censored/valid denominators across methods.} - -A deployment-style committed-event analysis with one-to-one matching and -signed latency is secondary and is omitted unless a threshold, persistence, -refractory period, matching interval, and competing-risk rule are all frozen -before test evaluation. The fixed-horizon protocol itself makes no detection- -latency claim. +These are \emph{endpoint state-change anticipation} metrics, not one-event- +one-vote timestamp detection: multiple source rows can correspond to one +boundary, and reversals before the endpoint are not captured. +Dense and conditional AP have different prevalence and are not directly +comparable in absolute value. Positive counts and denominators are reported. +AP is threshold-free and requires no calibration session. +\textbf{Scope.} +Semantic ENTRY/YIELD opportunity evaluation is deferred during annotation +auditing. Provisional results and annotation workload are retained outside +the submission body. Activity transitions do not establish intent, takeover, +or floor ownership; we make no semantic control, false-trigger, or event +detection latency claim. \section{Results and Analysis} -\label{sec:results} +\label{sec:analysis} \subsection{Main Comparison} -Table~\ref{tab:main} places the released EgoSpeak checkpoint beside the -currently available Omni screening runs and reserves a row for the final causal -local audiovisual model. Historical unmatched runs are identified explicitly -and cannot support confirmatory attribution. The final comparison will use the -same split, causal inputs, targets, training/selection protocol, and three -random seeds; event thresholds will be selected on training-side calibration -data and frozen before test evaluation. \todo{Freeze all baseline -implementations and verify identical targets, causal validity, and evaluation.} +Table~\ref{tab:main} retains exploratory references and reserves the locked +comparison. Historical runs have unmatched training/selection protocols; +the three-seed F1 screen establishes stability, not matched superiority. +\todo{Fill the locked rows with three-seed mean and sample standard deviation.} \begin{table*}[t] \caption{EasyCom Sessions~1--3 dense future-activity and raw-boundary @@ -440,348 +298,142 @@ Omni $G{+}A{+}$pooled-$V^{\dagger}$ Current-frame F1$^{\ddagger}$ & $81.78{\pm}0.16$ & -- & -- & -- & -- & -- & -- & -- & -- & -- & $64.95{\pm}0.09$ & -- & --\\ -$G+$causal local AV (ours) +Locked local $A$ + & -- & -- & -- & -- & -- & -- & -- & -- & -- & -- + & -- & -- & --\\ +Locked Omni $G$ + & -- & -- & -- & -- & -- & -- & -- & -- & -- & -- + & -- & -- & --\\ +Locked $G+A$ + & -- & -- & -- & -- & -- & -- & -- & -- & -- & -- + & -- & -- & --\\ +Locked $G+A+V$ (optional) & -- & -- & -- & -- & -- & -- & -- & -- & -- & -- & -- & -- & --\\ \hline \end{tabular}} \end{table*} -\textbf{Dense forecasting.} -The EgoSpeak baseline reaches 74.20\% 0.2-s mAP and 61.19\% mean mAP; its raw -wearer-onset/offset mean APs are 24.49/38.02\%. Opportunity-conditioned values -remain pending a protocol-v2 rerun and human review; continuous wearer-score -plots do not alone establish semantic floor-yield selectivity. -The proposed local AV adapter improves 0.2-s mAP from -\todo{$X$ to $Y$} over the strongest matched baseline and improves -mean mAP by \todo{$Z$ points}. -The gain is largest at \todo{short prediction horizons / transition-adjacent -frames / specify actual observation}, indicating that local audiovisual -evidence primarily improves \todo{the interpretation supported by the data}. +Alongside these models, a planned causal current-activity classifier repeats +its predicted probabilities across horizons as a persistence reference. +It uses no ground-truth current activity as input. +\todo{Report its dense and endpoint APs; distinguish state recognition from +anticipation.} -\textbf{Annotated behavior.} -At matched wearer-entry recall $R=0.8$, the proposed adapter reduces entry FPR -from \todo{$X$} to \todo{$Y$}; at matched INT-yield recall, it changes INT FPR -from \todo{$A$} to \todo{$B$}. Its entry/INT opportunity APs are -\todo{$E/I$}. These recall-matched opportunity error rates test whether lower -scores on confusing floor situations are obtained without suppressing -legitimate entry or yield events. +\subsection{Local Evidence Analysis} -\textbf{Comparison with adaptation baselines.} -Matched PEFT yields \todo{result}, whereas adding recent local audio alone -yields \todo{result}. -The parameter- and history-matched temporal branch achieves -\todo{result}. -The remaining gap between this control and the proposed adapter therefore -suggests that \todo{correctly timed audiovisual local evidence contributes -beyond additional temporal capacity}. -\todo{If this difference is not statistically supported, state instead that -the local temporal branch accounts for most of the gain.} +The $A/G/G+A/G+A+V$ comparisons separate recent audio, integrated context, +and optional vision. We will audit parameter counts and train a wider +global-only head as a capacity control. These branches expose different +history ranges, so the comparison is not a pure Thinker-versus-encoder test. +Past-delayed local inputs provide separate fixed-checkpoint sensitivity +tests, not substitutes for retrained modality-removal controls. +\todo{Insert audio and visual marginal deltas in wearer, onset, and offset +AP; retain negative findings even if overall mAP increases.} -\subsection{Qualitative Floor-Event Analysis} +\textbf{Backbone transfer.} +We reserve paired $G/G+A$ controls for Qwen2.5-Omni 3B/7B and MiniCPM-o 4.5, +fixing the same recent-audio features. Within-backbone deltas test transfer; +absolute scores also reflect pretraining and interface differences. +Readout, refresh, and actual history must be audited. Native 1-Hz hold needs +a matched Qwen 1-Hz control; MiniCPM 5-Hz tail rows require GPU verification. -We will compare EgoSpeak with the final matched model on human-confirmed -examples selected by pre-declared event subtype rather than post-hoc score -extremes. Each case will align participant-resolved activity, minimal transcript -context, the opportunity anchor and competing-risk censor, and the two models' -causally emitted wearer forecasts. The comparison will include a genuine wearer -entry, an other-to-other false-entry opportunity, and an INT-yield paired with a -non-takeover overlap; a shared failure case will be retained when space permits. +\subsection{Streaming and Context Analysis} + +Table~\ref{tab:ablation} reserves a tail-refresh $\times$ local-audio +comparison. Completed-only states update at 2-s closures and are causally +held between them; tail-aware states use the observed partial block at every +cutoff. Enabled local audio remains 5~Hz. Common startup rows and valid pairs +are used. This tests whether the two paths are complementary or redundant. + +\begin{table}[t] +\caption{Planned controls. M/W: mean mAP/wearer AP; On/Off: mean endpoint +AP (percent). Transfer reports $G+A-G$ deltas (points) after interface audits. +Dashes are unmeasured, not zero.} +\label{tab:ablation} +\centering +\scriptsize +\setlength{\tabcolsep}{3pt} +\begin{tabular}{@{}lcccc@{}} +\hline +Condition & M & W & On & Off\\ +\hline +\multicolumn{5}{l}{\emph{Tail refresh $\times$ local audio; 8-s cap}}\\ +Completed-only $G$ & -- & -- & -- & --\\ +Completed-only $G+A$ & -- & -- & -- & --\\ +Tail-aware $G$ & -- & -- & -- & --\\ +Tail-aware $G+A$ & -- & -- & -- & --\\ +\hline +\multicolumn{5}{l}{\emph{Context cap; tail-aware $G+A$}}\\ +4~s & -- & -- & -- & --\\ +8~s & -- & -- & -- & --\\ +16~s & -- & -- & -- & --\\ +\hline +\multicolumn{5}{l}{\emph{Backbone transfer; paired $G+A-G$ deltas}}\\ +Qwen2.5-Omni-3B & -- & -- & -- & --\\ +Qwen2.5-Omni-7B & -- & -- & -- & --\\ +MiniCPM-o 4.5 & -- & -- & -- & --\\ +\hline +\end{tabular} +\end{table} + +The planned 4/8/16-s context-cap comparison keeps local evidence at 1~s +and reports actual history spans and block phases. Each cap requires its +own extracted states and matched training; a fixed-checkpoint context +intervention is a separate distribution-shift diagnostic. +Cache reuse is checked against the same block decomposition, with +future-media interventions and reset checks. +\todo{Insert tail/audio interaction, window and phase results, and full +pipeline P50/P95 latency, throughput, and peak memory.} + +\subsection{Error and Qualitative Analysis} + +We will stratify activity errors around other-speaker pauses, other-to-other +transitions, and overlap, reporting positive/negative counts at fixed +horizons. Pure-negative slices receive score distributions, not AP; +any FPR uses training-side calibration. A wearer backchannel can be a raw +onset positive despite being a semantic ENTRY negative. Semantic +interpretations remain deferred pending annotation audit and protocol v2. +\todo{Insert scene-level counts and score/AP differences, plus one shared +failure; do not infer floor ownership from activity errors.} + +Figure~\ref{fig:qualitative_floor_events} reserves cases chosen by +pre-declared rules, aligning source cutoffs and corresponding future target +times at the same horizon for EgoSpeak and the selected ablations. \begin{figure*}[t] \centering -\fbox{\parbox[c][0.115\textheight][c]{0.965\textwidth}{ +\fbox{\parbox[c][0.065\textheight][c]{0.965\textwidth}{ \centering -\textbf{Qualitative comparison placeholder}\\[0.7em] -\begin{tabular}{ccc} -Case A: wearer entry & Case B: other$\rightarrow$other HN -& Case C: INT-yield / failed takeover\\ -participant timeline + transcript & opportunity anchor + censor -& EgoSpeak vs. proposed forecast\\ -\end{tabular} +\textbf{Error and qualitative comparison placeholder}\\[0.5em] +Wearer onset \qquad Wearer offset \qquad Unchanged state / shared failure\\ +Activity timeline + source cutoff + same-horizon wearer forecasts }} -\caption{Planned qualitative floor-event comparison. Final panels will use -human-confirmed protocol-v2 cases and show the same causal source time for both -models; the figure is a layout placeholder and contains no result claim.} +\caption{Planned onset, offset, and hard-negative/shared-failure timelines. +Show raw activity and same-horizon forecasts, not an envelope of ten horizons. +This placeholder contains no result; semantic panels await audited labels.} \label{fig:qualitative_floor_events} \end{figure*} -\subsection{Information Opportunity} - -Before designing the deployable adapter, we measured whether local floor -information was useful at all using an analysis-only oracle. -The oracle receives perfectly timed visible-other speech activity through a -non-deployable pathway and is never used in the main comparison. - -On development Session~12, aggregate visible activity improved 0.2-s mAP by -6.97 points and ten-horizon mean mAP by 2.91 points over the matched -global-plus-local-audio baseline. -In contrast, visibility alone and one-second-delayed activity remained close -to the audio baseline, while person-specific histories did not outperform -identity-shuffled histories. - -These controls indicate that the useful signal is primarily -\emph{timely local floor evidence}, rather than participant identity or -static visibility. -The proposed adapter is therefore designed to approximate this information -using only causally available audiovisual observations. - -\todo{After completing all seeds, report mean $\pm$ confidence interval here. -If the oracle effect is unstable, describe it qualitatively and omit the exact -numbers from the four-page version.} - -\subsection{Mechanism Analysis} - -To determine whether the gain arises from correctly aligned visual floor -evidence rather than additional parameters or generic visual context, and to -separate streaming refresh from representation family, we evaluate the -controls in Table~\ref{tab:ablation}. - -\begin{table}[t] -\caption{Mechanism and streaming/cache controls. The streaming panel uses -frozen global states and capacity-matched downstream heads; all rows share -targets and evaluation. FPRs are measured at matched recall $R=0.8$. -Cross-family raw scores are diagnostic.} -\label{tab:ablation} -\centering -\small -\resizebox{\columnwidth}{!}{% -\begin{tabular}{lcccc} -\hline -Condition & Mean mAP $\uparrow$ & Entry FPR $\downarrow$ -& O$\rightarrow$O FPR $\downarrow$ & INT FPR $\downarrow$\\ -\hline -\multicolumn{5}{l}{\emph{Local-evidence controls (Qwen2.5-Omni-3B)}}\\ -Remove vision & \todo{--} & \todo{--} & \todo{--} & \todo{--}\\ -Time-shift vision & \todo{--} & \todo{--} & \todo{--} & \todo{--}\\ -Full-frame vision & \todo{--} & \todo{--} & \todo{--} & \todo{--}\\ -Correct local AV & \todo{--} & \todo{--} & \todo{--} & \todo{--}\\ -\hline -\multicolumn{5}{l}{\emph{Streaming/cache controls}}\\ -Qwen, full causal prefix at 5 Hz (no cache) - & \todo{--} & \todo{--} & \todo{--} & \todo{--}\\ -Qwen, cached 5-Hz update & \todo{--} & \todo{--} & \todo{--} & \todo{--}\\ -Qwen, cached 1-Hz + causal hold & \todo{--} & \todo{--} & \todo{--} & \todo{--}\\ -MiniCPM-o, native cached 1-Hz + causal hold - & \todo{--} & \todo{--} & \todo{--} & \todo{--}\\ -MiniCPM-o, audited cached 5-Hz branch - & \todo{--} & \todo{--} & \todo{--} & \todo{--}\\ -\hline -\end{tabular}} -\end{table} - -Removing local vision changes \todo{entry/O$\rightarrow$O/INT FPR by $X/Y/Z$}, -while shifting the visual stream by \todo{$\Delta t$} produces \todo{result}. -Replacing person-local evidence with full-frame vision produces \todo{result}. -If aligned local AV improves estimates of surrounding floor occupancy, its -largest selective reduction should appear on the O$\rightarrow$O hard-negative -subset. Together, these comparisons \todo{support / do not support} that -mechanism beyond generic visual context. - -\todo{Report paired intervals and the supported interpretation. If correct -and shifted/removed vision do not separate, drop the audiovisual -evidence-routing claim. If dense mAP improves but event behavior does not, do -not claim improved floor control. If legitimate onset or yield degrades, do -not describe lower false entry as success.} - -\subsection{Scaling and Streaming Controls} - -Increasing the frozen Omni backbone from 3B to 7B yields -\todo{$X$ points} in 0.2-s mAP and \todo{entry/INT FPR of $Y/Z$} at matched -recall. -The proposed 3B adapter \todo{remains better than / approaches / is surpassed -by} the 7B scaling control. - -This result suggests that \todo{architectural access to local causal evidence -provides a complementary benefit to backbone scaling}. -Because both backbones belong to the Qwen2.5-Omni family, we do not claim that -this conclusion generalizes to all omni-modal models. - -The streaming rows answer two different questions. First, full causal-prefix -recomputation and streaming cache reuse at the same 5-Hz Qwen cutoffs test -whether cache/chunk semantics change the representation; equivalent outputs -make this an efficiency control rather than a distinct predictive method. -Second, the matched Qwen 5-Hz and 1-Hz cached rows test whether an advantage is -explained by more frequent causal state refresh rather than the proposed local -evidence route. For native 1-Hz streams, the state emitted at the end of each -one-second chunk is never backfilled into earlier 200-ms rows; source gaps and -session boundaries reset all modality and language-model caches. MiniCPM-o is -a secondary cross-family diagnostic under the same 1-Hz schedule, not a -same-frequency architecture ranking. Its 5-Hz cached-branch row is omitted if -cached/full-prefix equivalence, cutoff invariance, or reset audits fail. - -\todo{Freeze native chunk boundaries, initialization of rows before the first -complete chunk, cache-reset rules, the cached/full-prefix tolerance, and the -future-media intervention test. Report within-backbone 5-Hz versus 1-Hz -deltas plus cache/no-cache throughput and memory; do not interpret unmatched -Qwen--MiniCPM raw scores as a pure backbone effect.} - \subsection{Limitations} -The results support \todo{precise supported claim}, but several limitations -remain. -First, \todo{EasyCom size/session diversity limitation}. -Second, the adapter relies on \todo{state the actual visible-person box or -tracking assumption}. -Third, \todo{failure condition: occlusion, overlapping speakers, rapid floor -exchange, etc.} remains challenging. - -\todo{Replace Fig.~\ref{fig:qualitative_floor_events} with compact, pre-selected -human-confirmed timelines. Examples illustrate aggregate rates and never -establish the claim by themselves.} +EasyCom has only three official test sessions. The backbone remains frozen, +and local audio averages tokens rather than explicitly modeling prosody. +Optional pooling does not establish identity or addressee understanding. +Tail recomputation may increase cost despite completed-block reuse. +Visual and tail-mechanism conclusions require the matched controls above. \section{Conclusion} -\label{sec:conclusion} -This study asks whether a general-purpose Omni representation can be adapted -for causal floor forecasting of an invisible egocentric wearer. The candidate -method separates long-context Omni understanding from short-window local floor -evidence without assuming persistent speaker identity. \todo{State the final -learned-method improvement, matched-recall entry/INT false-positive rates, -fixed-horizon event AP, causal-control evidence, and main limitation. If no learned -variant passes these tests, reframe the submission as an information audit or -do not make the method claim.} - -\appendix -\section{LLM-Assisted Behavioral Event Annotation} -\label{app:event_annotation} - -EasyCom's raw speech boundaries are acoustic annotations rather than floor -labels. We preserve them unchanged for dense forecasting and create a separate -behavioral-event layer. Its design principle is to anchor an observed wearer -behavior first and then retrieve the conversational opportunity that could make -that behavior meaningful. False-positive opportunities are mined independently -because, by definition, many contain no wearer transition. - -\subsection{Positive-event mining} - -\textbf{Wearer activity transitions.} -We preserve every raw wearer $0\!\rightarrow\!1$ and $1\!\rightarrow\!0$ -boundary as a semantic review candidate. Candidate construction does not merge -short silence gaps, infer within-turn resumption, or decide whether overlapping -speech constitutes takeover. It only records participant-resolved temporal and -transcript facts. The source intervals and dense targets remain unchanged. - -\textbf{Wearer entry.} -Every raw wearer onset at $t_b$ is proposed as one wearer-entry review item. -We search backward within the retrieval window for non-wearer offsets and store -each one with its response delay and factual indicators of intervening wearer -speech, intervening other onsets, and concurrent activity. These are possible -context anchors rather than deterministically admissible causes. The LLM and -human reviewer decide whether the boundary is a genuine new entry, a -within-turn resumption, a wearer backchannel, or an excluded non-event. A -preceding release is not required for a positive entry: the wearer may enter -after a release, from silence, or while another speaker remains active. When a -release clearly prompts the entry, the LLM or human may select one supplied -option; neither may invent or move a timestamp. - -\textbf{INT-yield.} -Every raw wearer offset $t_y$ is proposed as an INT-yield review item. The -generator records the current wearer activity-run start, all nearby non-wearer -onsets and offsets, activity immediately before and after $t_y$, whether an -other speaker is pre-existing or begins during wearer speech, strict and -50-ms-tolerant boundary crossing, overlap duration, the next speech onset, -transcripts, and target-of-speech metadata. Relations such as -$t_w