From c0deaa76ba03671d9ef929dd9ab4607b5771dc3b Mon Sep 17 00:00:00 2001 From: tzhouam Date: Wed, 23 Sep 2026 15:15:07 +0800 Subject: [PATCH] Repair MiniCPM-o and InternVLA scoped E2E paths --- .../edge_harness/probe_internvla_actions.py | 125 ++++ .../edge_harness/probe_minicpmo_thinker.py | 31 + .../results/e2e_recovery_20260923/README.md | 14 +- .../internvla_finetune_synthetic.json | 27 + .../internvla_finetune_synthetic.log | 31 + ...0_2c17288b-c543-4aaa-9a6a-e661ab14c97b.txt | 15 + ...0_8a6e5016-03c2-4673-a2e5-c79b90f62ccc.txt | 13 + ...0_de28fb29-b5a4-4f2c-b908-a0bcacfe063c.txt | 13 + .../evidence/minicpmo/mini_constrained.log | 591 ++++++++++++++++++ .../evidence/minicpmo/mini_constrained2.log | 282 +++++++++ .../evidence/minicpmo/mini_constrained3.log | 289 +++++++++ .../evidence/minicpmo/mini_default.log | 315 ++++++++++ .../evidence/minicpmo/mini_fixed_e2e.log | 290 +++++++++ .../evidence/minicpmo/mini_stage0_only.log | 196 ++++++ .../evidence/minicpmo/mini_template.log | 294 +++++++++ .../evidence/minicpmo/mini_text_only.log | 279 +++++++++ .../evidence/minicpmo/mini_thinker_fixed.log | 124 ++++ .../minicpmo/minicpmo_24gb_offline.yaml | 126 ++++ .../minicpmo/minicpmo_24gb_probe.yaml | 135 ++++ .../minicpmo/minicpmo_stage0_probe.yaml | 56 ++ ...0_2c17288b-c543-4aaa-9a6a-e661ab14c97b.wav | Bin 0 -> 249644 bytes ...0_8a6e5016-03c2-4673-a2e5-c79b90f62ccc.wav | Bin 0 -> 249644 bytes .../evidence/weights/internvla_base.json | 12 + .../weights/internvla_place_markpen.json | 12 + .../evidence/weights/minicpmo.json | 27 + docs/design/omni_edge_e2e_roadmap.md | 18 +- .../offline_inference/internvla_a1/end2end.py | 33 +- .../offline_inference/minicpmo/end2end.py | 36 +- .../test_preprocess_embeddings.py | 43 ++ tests/worker/test_gpu_ar_model_runner.py | 23 + .../models/internvla_a1/adapter_qwen3_vl.py | 30 +- .../models/internvla_a1/model_internvla_a1.py | 62 +- .../models/minicpmo_4_5/minicpmo_4_5_omni.py | 12 +- .../step_audio2/step_audio2_token2wav.py | 8 +- vllm_omni/worker/gpu_ar_model_runner.py | 9 +- vllm_omni/worker/gpu_model_runner.py | 10 + 36 files changed, 3498 insertions(+), 83 deletions(-) create mode 100644 benchmarks/edge_harness/probe_internvla_actions.py create mode 100644 benchmarks/edge_harness/probe_minicpmo_thinker.py create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/internvla/internvla_finetune_synthetic.json create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/internvla/internvla_finetune_synthetic.log create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/0_2c17288b-c543-4aaa-9a6a-e661ab14c97b.txt create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/0_8a6e5016-03c2-4673-a2e5-c79b90f62ccc.txt create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/0_de28fb29-b5a4-4f2c-b908-a0bcacfe063c.txt create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_constrained.log create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_constrained2.log create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_constrained3.log create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_default.log create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_fixed_e2e.log create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_stage0_only.log create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_template.log create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_text_only.log create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_thinker_fixed.log create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/minicpmo_24gb_offline.yaml create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/minicpmo_24gb_probe.yaml create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/minicpmo_stage0_probe.yaml create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/output_0_2c17288b-c543-4aaa-9a6a-e661ab14c97b.wav create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/output_0_8a6e5016-03c2-4673-a2e5-c79b90f62ccc.wav create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/weights/internvla_base.json create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/weights/internvla_place_markpen.json create mode 100644 benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/weights/minicpmo.json create mode 100644 tests/model_executor/models/minicpmo_4_5/test_preprocess_embeddings.py diff --git a/benchmarks/edge_harness/probe_internvla_actions.py b/benchmarks/edge_harness/probe_internvla_actions.py new file mode 100644 index 000000000..db8b69863 --- /dev/null +++ b/benchmarks/edge_harness/probe_internvla_actions.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 +"""Real-checkpoint InternVLA action smoke with synthetic observations. + +This probes loading and one full policy forward. Synthetic images and state do +not establish robot-task quality, physical units, or control safety. +""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import os +import time +from pathlib import Path + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--model-dir", type=Path, required=True) + parser.add_argument("--cosmos-dir", type=Path, required=True) + parser.add_argument("--processor-dir", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + parser.add_argument("--device", default="cuda") + args = parser.parse_args() + + os.environ["INTERNVLA_A1_COSMOS_DIR"] = str(args.cosmos_dir.resolve()) + os.environ["INTERNVLA_A1_PROCESSOR_DIR"] = str(args.processor_dir.resolve()) + os.environ["HF_HUB_OFFLINE"] = "1" + + import torch + + from vllm_omni.diffusion.data import OmniDiffusionConfig + from vllm_omni.diffusion.registry import initialize_model + from vllm_omni.diffusion.request import OmniDiffusionRequest + from vllm_omni.diffusion.worker.request_batch import DiffusionRequestBatch + from vllm_omni.inputs.data import OmniDiffusionSamplingParams + + model_dir = args.model_dir.resolve() + if not (model_dir / "model.safetensors").is_file(): + raise FileNotFoundError(f"Missing real InternVLA checkpoint: {model_dir / 'model.safetensors'}") + + config = OmniDiffusionConfig( + model=str(model_dir), + model_class_name="InternVLAA1Pipeline", + dtype=torch.bfloat16, + custom_pipeline_args={ + "device": args.device, + "dtype": "bfloat16", + "compile_model": False, + "enable_regional_compile": False, + "enable_warmup": False, + "strict_load": True, + "processor_model_name": str(args.processor_dir.resolve()), + }, + ) + started = time.perf_counter() + pipeline = initialize_model(config) + if pipeline.runtime_mode() != "real_checkpoint_loaded": + raise RuntimeError(f"Unexpected InternVLA runtime mode: {pipeline.runtime_mode()}") + startup_s = time.perf_counter() - started + + batch_inputs = pipeline._build_fake_batch_inputs() + noise = torch.zeros( + (1, pipeline.config.chunk_size, pipeline.config.max_action_dim), + device=args.device, + dtype=torch.float32, + ) + if args.device.startswith("cuda"): + torch.accelerator.synchronize() + torch.accelerator.reset_peak_memory_stats() + started = time.perf_counter() + output = pipeline.forward( + DiffusionRequestBatch( + requests=[ + OmniDiffusionRequest( + prompt="", + sampling_params=OmniDiffusionSamplingParams( + extra_args={"batch_inputs": batch_inputs, "noise": noise, "decode_image": False} + ), + request_id="internvla-real-weight-synthetic-observation", + ) + ] + ) + ) + if args.device.startswith("cuda"): + torch.accelerator.synchronize() + forward_s = time.perf_counter() - started + if output.error: + raise RuntimeError(output.error) + result = output.output + actions = result.get("payload", {}).get("actions") if isinstance(result, dict) else None + if not isinstance(actions, torch.Tensor) or actions.shape != ( + 1, + pipeline.config.chunk_size, + pipeline.config.max_action_dim, + ): + raise RuntimeError(f"Unexpected action output: {type(actions).__name__}") + if not torch.isfinite(actions).all(): + raise RuntimeError("InternVLA returned non-finite actions") + + action_bytes = actions.detach().float().cpu().contiguous().numpy().tobytes() + report = { + "scope": "real checkpoint, synthetic zero observations and noise; no task-quality claim", + "model_dir": str(model_dir), + "runtime_mode": pipeline.runtime_mode(), + "device": args.device, + "dtype": str(actions.dtype), + "action_shape": list(actions.shape), + "finite": True, + "action_sha256_float32": hashlib.sha256(action_bytes).hexdigest(), + "first_action_prefix": actions[0, 0, :8].detach().float().cpu().tolist(), + "startup_s": startup_s, + "forward_s": forward_s, + "cuda_peak_allocated_bytes": ( + torch.accelerator.max_memory_allocated() if args.device.startswith("cuda") else None + ), + } + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(report, indent=2) + "\n", encoding="utf-8") + print(json.dumps(report, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/benchmarks/edge_harness/probe_minicpmo_thinker.py b/benchmarks/edge_harness/probe_minicpmo_thinker.py new file mode 100644 index 000000000..8dd64df2e --- /dev/null +++ b/benchmarks/edge_harness/probe_minicpmo_thinker.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +"""Run the MiniCPM-o thinker alone to isolate text quality from speech stages. + +This temporarily narrows the registered pipeline in this process. It is a +diagnostic route, not a replacement for the shipped three-stage topology. +""" + +from __future__ import annotations + +from dataclasses import replace + +from vllm_omni.config.pipeline_registry import OMNI_PIPELINES +from vllm_omni.model_executor.models.minicpmo_4_5.pipeline import MINICPMO_4_5_PIPELINE + + +def main() -> None: + OMNI_PIPELINES["minicpmo_4_5"] = replace( + MINICPMO_4_5_PIPELINE, + stages=(MINICPMO_4_5_PIPELINE.stages[0],), + duplex_runtime_extension=None, + duplex_serving_adapter=None, + duplex_control_enabled=False, + ) + from examples.offline_inference.minicpmo.end2end import main as run_example + from examples.offline_inference.minicpmo.end2end import parse_args + + run_example(parse_args()) + + +if __name__ == "__main__": + main() diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/README.md b/benchmarks/edge_harness/results/e2e_recovery_20260923/README.md index a3f65376d..604bd3cdb 100644 --- a/benchmarks/edge_harness/results/e2e_recovery_20260923/README.md +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/README.md @@ -6,15 +6,23 @@ This is a follow-up to the [60-cell audit](../e2e_profiling_20260922/README.md). |---|---|---| | WSL CPU / Qwen3-TTS 0.6B CustomVoice, revision `85e237c12c027371202489a0ec509ded67b5e4b5` | Two-frame real-weight PCM probe passed (1,920 nonzero finite samples). Full short-utterance streaming completed four requests, including a slow consumer and a request after cancellation. | Measured short request: 3.04 s audio, 17.02 s wall time, RTF 5.60 and four simulated playback underruns. No ASR, speaker, listening or sustained thermal qualification. | | WSL RTX 5090 Laptop / Qwen3.8-27B NVFP4, local revision `dbb8f445b3145f8a4c18ddc769f032d57d32867c` | Public Omni text request completed 16 tokens. Public Omni image-to-text request with a synthetic red 96×96 image answered `Red`. | One text and one image case only; video, long context, quality suites, power and sustained workload unqualified. | +| WSL RTX 5090 Laptop / InternVLA-A1-3B Place_Markpen fine-tune, revision `0a557c6a503e6545b369bff2f34c76a410bbd190` | Strict real-weight load and one full policy forward with synthetic zero observations/noise passed: finite `[1, 50, 32]` action tensor; measured forward 1.222 s. | No Place_Markpen observation dataset/reference actions, units, timestamps or robot-task quality check; single-run timing is not a latency distribution. | +| WSL RTX 5090 Laptop / MiniCPM-o 4.5, revision `503e754207c94da6bb26850b4469f367c9ea3582` | Under an explicit one-session, 2,048-token thinker / 512-token talker / 5 GiB CPU-offload profile, the actual three-stage Omni pipeline completed one text-to-text+speech request. The text was a coherent introduction and the 24 kHz WAV was nonzero. | Functional pass for this one text-to-speech request only. Speech intelligibility, text/audio alignment, other input modalities, interruption, sustained load, power and quality suites remain unqualified. | Evidence: [text request](evidence/qwen_text.json), [image request](evidence/qwen_image.json), [two-frame audio](evidence/tts_two_frame.json), [stream report](evidence/tts_stream_report.json), [individual stream requests](evidence/tts_stream_requests.jsonl). The image input and exact prompt are reproducible with [the image probe](../../probe_qwen35_image.py). The streaming run used [profile_local_tts.py](../../profile_local_tts.py) with `--length-band short --concurrency 1 --repeats 1 --sustained-seconds 0`; its fixed slow-consumer and cancellation probes also ran. The CPU vLLM wheel was 0.28.0, Omni source reported 0.29.0rc2, and the installed PyTorch CPU build was 2.13.0. Qwen used the installed vLLM 0.29.0 CUDA wheel, WSL kernel `6.18.33.2-microsoft-standard-WSL2`, RTX 5090 Laptop (24,463 MiB), driver 610.71, BF16 compute, eager mode, 2 GiB explicit host offload, one sequence and 512-token context. All values are single-run observations; they are not medians. The code changes make vLLM-native `qwen3_5` a one-stage Omni pipeline, project explicit `language_model_only` and `cpu_offload_gb` to the owning stage, skip vLLM's `-1` unmapped-slot sentinel in both prefix-cache write paths, and accept both vLLM 0.28 three-field and 0.29 four-field min-token state. The image probe first refused a 1,024-token context because the available 0.14 GiB KV cache was below the 0.38 GiB requirement. The successful run explicitly used a 512-token context and 0.85 GPU memory utilization. No context or precision was changed silently. -The missing primary MiniCPM-o 4.5 and InternVLA-A1 checkpoints are being acquired at pinned revisions; no E2E result is claimed until their transfers finish and real checkpoint runs pass. The required InternVLA Cosmos encoder/decoder and Qwen3-VL processor files have been downloaded separately. Existing Spark-X2.5 4B and 1.7B INT8, Qwen3-TTS, Qwen3.8 FP8 and Qwen3.8 NVFP4 artifacts already covered those model families. Additional official Spark 1.7B BF16 and Qwen3.8-27B BF16 transfers were paused when the Hugging Face data path slowed; they are distinct artifact variants, not replacements for the present weights. InternVLA source checkpoints carry a CC BY-NC-SA 4.0 license; the current download is for local research validation. +The missing primary MiniCPM-o 4.5 and InternVLA-A1 checkpoints are now fully downloaded at pinned revisions. Every safetensors file was SHA-256 checked against the corresponding Hugging Face metadata: [MiniCPM-o](evidence/weights/minicpmo.json), [InternVLA base](evidence/weights/internvla_base.json), and [InternVLA Place_Markpen fine-tune](evidence/weights/internvla_place_markpen.json). The required InternVLA Cosmos encoder/decoder and Qwen3-VL processor files were downloaded separately. Existing Spark-X2.5 4B and 1.7B INT8, Qwen3-TTS, Qwen3.8 FP8 and Qwen3.8 NVFP4 artifacts covered those model families. Optional official Spark 1.7B BF16 and Qwen3.8-27B BF16 transfers remain paused; they are additional artifact variants, not replacements for the present family weights. InternVLA source checkpoints carry a CC BY-NC-SA 4.0 license; the current download is for local research validation. -The pinned MiniCPM-o checkpoint (`openbmb/MiniCPM-o-4_5`, `503e754207c94da6bb26850b4469f367c9ea3582`) has four weight shards totaling 18.74 GB (decimal) within a 20.05 GB repository. InternVLA base (`InternRobotics/InternVLA-A1-3B`, `08cf716d413aa8208a34f346cd8824e6ff901205`) and Place_Markpen fine-tune (`Jia-Zeng/InternVLA-A1-3B-FineTuned-Place_Markpen`, `0a557c6a503e6545b369bff2f34c76a410bbd190`) each have a 6.72 GB weight file. Their partial Xet files are **not** complete artifacts. MiniCPM-o's small configuration and processor files did finish; offline `AutoConfig` and `AutoProcessor` construction passed against the local path. This is a dependency preflight, not a weight load or E2E run. The large weight transfers have been throttled by the Hugging Face data path and remain in progress. +The pinned MiniCPM-o checkpoint (`openbmb/MiniCPM-o-4_5`, `503e754207c94da6bb26850b4469f367c9ea3582`) has four weight shards totaling 18.74 GB (decimal). InternVLA base (`InternRobotics/InternVLA-A1-3B`, `08cf716d413aa8208a34f346cd8824e6ff901205`) and Place_Markpen fine-tune (`Jia-Zeng/InternVLA-A1-3B-FineTuned-Place_Markpen`, `0a557c6a503e6545b369bff2f34c76a410bbd190`) each have a 6.72 GB weight file. Checkpoint integrity is a prerequisite, not pipeline qualification. + +InternVLA's real-weight synthetic probe uses [probe_internvla_actions.py](../../probe_internvla_actions.py) and the public `DiffusionRequestBatch` boundary with `strict_load=True`. The raw [JSON](evidence/internvla/internvla_finetune_synthetic.json) and [log](evidence/internvla/internvla_finetune_synthetic.log) record a 36.394 s startup, 1.222 s synchronized forward and 6,683,068,416 bytes of PyTorch CUDA peak allocation during the measured forward. This uses Transformers 5.14.1, vLLM 0.29.0, PyTorch 2.13.0+cu130 and BF16 policy weights on WSL/RTX 5090 Laptop (driver 610.71). Output actions are float32. The inputs are synthetic zeros, so neither task behavior nor action semantics are established. + +MiniCPM-o used the actual three-stage Omni pipeline, real checkpoint and [constrained deploy profile](evidence/minicpmo/minicpmo_24gb_offline.yaml) on the same WSL/RTX 5090 Laptop, with vLLM 0.29.0, Transformers 5.14.1, BF16, eager execution and `VLLM_USE_FLASHINFER_SAMPLER=0` (no CUDA toolkit is present for FlashInfer JIT). The profile limits model length, multimodal inputs and concurrency, and explicitly offloads 5 GiB of thinker weights to host RAM; it does not qualify the stock full-capacity profile. The [raw log](evidence/minicpmo/mini_fixed_e2e.log), [text and token IDs](evidence/minicpmo/0_2c17288b-c543-4aaa-9a6a-e661ab14c97b.txt) and [WAV](evidence/minicpmo/output_0_2c17288b-c543-4aaa-9a6a-e661ab14c97b.wav) record 182.47 s engine startup and 20.53 s for the single measured prompt. The WAV has 124,800 mono PCM16 samples at 24 kHz (5.2 s), 124,579 nonzero samples, peak absolute amplitude 18,852 and RMS 3,430.39. There is no ASR or listening check, so matching speech content is unverified. + +The earlier [three-stage run](evidence/minicpmo/mini_template.log) and [text-only run](evidence/minicpmo/mini_text_only.log) each emitted repeated punctuation. A [one-stage thinker probe](../../probe_minicpmo_thinker.py) isolated zero logits during real request prefill: the Omni runner passed MiniCPM-o its allocated embedding buffer before populating it, and MiniCPM-o treated that buffer as precomputed input. The runner now marks only actually populated embeddings; MiniCPM-o computes token embeddings otherwise. The [repaired thinker log](evidence/minicpmo/mini_thinker_fixed.log) and the three-stage result above show coherent text. The default profile's cache-admission failure and intermediate YAML/import/parameter failures remain in the other `evidence/minicpmo/mini_*.log` files; the fixed result does not erase those constraints. The other rows still need actual local devices, a matching complete backend/artifact, memory admission, and model-specific quality and profiling. In particular, no ADB device is attached, native Windows CPU attention operations are missing from the installed extension, AMD iGPU/NPU routes lack a verified stateful whole-model deployment, and there is no qualified joint CPU+iGPU+NPU execution plan. AI Hub component results remain component evidence. -For interrupted transfers, [download_pending_weights.py](../../download_pending_weights.py) resumes each pinned repository and verifies the SHA-256 of every safetensors file against Hugging Face metadata. Its per-checkpoint JSON status and logs live under `models/.weight_download_status/` outside Git. A status of `verified` means only that the weights are complete; it does not qualify any inference path. Detached local resume jobs were started for MiniCPM-o and both InternVLA checkpoints while their interactive transfers continue. +For interrupted transfers, [download_pending_weights.py](../../download_pending_weights.py) resumes each pinned repository and verifies the SHA-256 of every safetensors file against Hugging Face metadata. Its local logs live under `models/.weight_download_status/` outside Git; the verified manifests are copied into `evidence/weights/`. A status of `verified` means only that the weights are complete; it does not qualify any inference path. diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/internvla/internvla_finetune_synthetic.json b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/internvla/internvla_finetune_synthetic.json new file mode 100644 index 000000000..db8cf5667 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/internvla/internvla_finetune_synthetic.json @@ -0,0 +1,27 @@ +{ + "scope": "real checkpoint, synthetic zero observations and noise; no task-quality claim", + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "runtime_mode": "real_checkpoint_loaded", + "device": "cuda", + "dtype": "torch.float32", + "action_shape": [ + 1, + 50, + 32 + ], + "finite": true, + "action_sha256_float32": "71ddd577e166f417639dd09f8cdaeef5a1bc91a6152c53672542504328675dd6", + "first_action_prefix": [ + 0.02230919525027275, + -0.033485047519207, + 0.005473435390740633, + 0.02993217296898365, + -0.00445316918194294, + -0.01604151912033558, + 0.018104737624526024, + -0.09112925827503204 + ], + "startup_s": 36.394273725978564, + "forward_s": 1.222088642010931, + "cuda_peak_allocated_bytes": 6683068416 +} diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/internvla/internvla_finetune_synthetic.log b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/internvla/internvla_finetune_synthetic.log new file mode 100644 index 000000000..7d2403fed --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/internvla/internvla_finetune_synthetic.log @@ -0,0 +1,31 @@ +INFO 09-23 14:32:07 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:32:07 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:32:07 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +INFO 09-23 14:32:08 [pipeline_internvla_a1.py:164] Loading InternVLA-A1 weights from /home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen +{ + "scope": "real checkpoint, synthetic zero observations and noise; no task-quality claim", + "model_dir": "/home/zhout/project/edge_infer/models/InternVLA-A1-3B-FT-Place_Markpen", + "runtime_mode": "real_checkpoint_loaded", + "device": "cuda", + "dtype": "torch.float32", + "action_shape": [ + 1, + 50, + 32 + ], + "finite": true, + "action_sha256_float32": "71ddd577e166f417639dd09f8cdaeef5a1bc91a6152c53672542504328675dd6", + "first_action_prefix": [ + 0.02230919525027275, + -0.033485047519207, + 0.005473435390740633, + 0.02993217296898365, + -0.00445316918194294, + -0.01604151912033558, + 0.018104737624526024, + -0.09112925827503204 + ], + "startup_s": 36.394273725978564, + "forward_s": 1.222088642010931, + "cuda_peak_allocated_bytes": 6683068416 +} diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/0_2c17288b-c543-4aaa-9a6a-e661ab14c97b.txt b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/0_2c17288b-c543-4aaa-9a6a-e661ab14c97b.txt new file mode 100644 index 000000000..1e65f7dd2 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/0_2c17288b-c543-4aaa-9a6a-e661ab14c97b.txt @@ -0,0 +1,15 @@ +Prompt: +<|im_start|>system +You are MiniCPM-o, a helpful multimodal assistant that can understand images, audio and video, and respond in text and speech.<|im_end|> +<|im_start|>user +Say hello, then introduce vLLM-Omni in one sentence.<|im_end|> +<|im_start|>assistant + + + + +<|tts_bos|> +vllm_text_output: +Hello, I am vLLM-Omni, a large multimodal model capable of understanding and generating text, images, audio, and video. +vllm_token_ids: +[9707, 11, 358, 1079, 348, 4086, 44, 23620, 76, 7751, 11, 264, 3460, 79049, 57597, 1614, 12875, 315, 8660, 323, 23163, 1467, 11, 5335, 11, 7699, 11, 323, 2766, 13, 151704, 151645] diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/0_8a6e5016-03c2-4673-a2e5-c79b90f62ccc.txt b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/0_8a6e5016-03c2-4673-a2e5-c79b90f62ccc.txt new file mode 100644 index 000000000..b388ee3af --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/0_8a6e5016-03c2-4673-a2e5-c79b90f62ccc.txt @@ -0,0 +1,13 @@ +Prompt: +<|im_start|>system +You are MiniCPM-o, a helpful multimodal assistant that can understand images, audio and video, and respond in text and speech.<|im_end|> +<|im_start|>user +Say hello, then introduce vLLM-Omni in one sentence.<|im_end|> +<|im_start|>assistant + + + + +<|tts_bos|> +vllm_text_output: +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/0_de28fb29-b5a4-4f2c-b908-a0bcacfe063c.txt b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/0_de28fb29-b5a4-4f2c-b908-a0bcacfe063c.txt new file mode 100644 index 000000000..0e98043dc --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/0_de28fb29-b5a4-4f2c-b908-a0bcacfe063c.txt @@ -0,0 +1,13 @@ +Prompt: +<|im_start|>system +You are MiniCPM-o, a helpful multimodal assistant that can understand images, audio and video, and respond in text and speech.<|im_end|> +<|im_start|>user +Say hello, then introduce vLLM-Omni in one sentence.<|im_end|> +<|im_start|>assistant + + + + + +vllm_text_output: +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_constrained.log b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_constrained.log new file mode 100644 index 000000000..9d939adef --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_constrained.log @@ -0,0 +1,591 @@ +INFO 09-23 14:09:18 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:09:18 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:09:18 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +==================== + vllm version: 0.29.0 + ==================== +INFO 09-23 14:09:19 [omni_base.py:216] [Omni] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 14:09:19 [async_omni_engine.py:172] [AsyncOmniEngine] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 14:09:19 [async_omni_engine.py:290] [AsyncOmniEngine] Launching Orchestrator thread with 3 stages +INFO 09-23 14:09:19 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +INFO 09-23 14:09:19 [initialization.py:356] Loaded OmniTransferConfig with 1 connector configurations +WARNING 09-23 14:09:19 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:09:19 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:09:19 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 14:09:19 [model.py:2021] Using max model len 2048 +WARNING 09-23 14:09:19 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 14:09:19 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +INFO 09-23 14:09:19 [model.py:887] Disabled mm_prefix attention mode because multimodal inputs are configuration-disabled. Attention backends without mm_prefix support may now be selected. +INFO 09-23 14:09:19 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=2048. +WARNING 09-23 14:09:19 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +WARNING 09-23 14:09:19 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +INFO 09-23 14:09:19 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:09:19 [vllm.py:1585] Cudagraph is disabled under eager mode +INFO 09-23 14:09:19 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +WARNING 09-23 14:09:19 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:09:19 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:09:20 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 14:09:20 [model.py:2021] Using max model len 512 +WARNING 09-23 14:09:20 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 14:09:20 [model.py:2021] Using max model len 512 +INFO 09-23 14:09:20 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=512. +INFO 09-23 14:09:20 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +WARNING 09-23 14:09:20 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:09:20 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:09:20 [model.py:684] Resolved architecture: MiniCPMO45Code2Wav +INFO 09-23 14:09:20 [model.py:2021] Using max model len 4096 +WARNING 09-23 14:09:20 [arg_utils.py:2780] This model does not officially support disabling chunked prefill. Disabling this manually may cause the engine to crash or produce incorrect outputs. +INFO 09-23 14:09:20 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:09:20 [stage_runtime.py:853] [stage_init] Stage-0 set runtime devices: 0 +INFO 09-23 14:09:28 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:09:28 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:09:28 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:29 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=2048, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [2048], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:30 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:30 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_08cd396f437643dab40d35da8325dbc9 backend=nccl +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:30 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:30 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:30 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:31 [base.py:138] Offloader set to UVAOffloader +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:31 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:31 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:31 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:31 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:31 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:31 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:31 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:31 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:31 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:31 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:32 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:32 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:38 [uva.py:65] Total CPU offloaded parameters: 5.03 +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:38 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 22.31 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:38 [weight_utils.py:886] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre). If you want to force prefetching, start vLLM with --safetensors-load-strategy=prefetch. +(StageEngineCoreProc_stage0_replica0 pid=4150071) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:58 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:58 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:58 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:58 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:58 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:58 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:58 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:58 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:58 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:58 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:58 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:09:58 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:09:58 [gpu_worker.py:860] Free memory on device (22.58/23.89 GiB) on startup. Desired GPU memory utilization is (0.58, 13.86 GiB). Actual usage is 11.01 GiB for consumed memory (weights + non-torch), 0.58 GiB for peak activation, and 0.0 GiB for CUDAGraph memory. Replace gpu_memory_utilization config with `--kv-cache-memory=2281984123` (2.13 GiB) to fit into requested memory, or `--kv-cache-memory=11646516224` (10.85 GiB) to fully utilize gpu memory. Current kv cache memory in use is 2.36 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:10:00 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:10:00 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:10:00 [core.py:368] init engine (profile, create kv cache, warmup model) took 6.27 s +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:10:00 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage0_replica0 pid=4150071) WARNING 09-23 14:10:00 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:10:00 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:10:00 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage0_replica0 pid=4150071) INFO 09-23 14:10:00 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:10:00 [stage_runtime.py:943] [StageRuntime] Stage 0 engine startup completed +INFO 09-23 14:10:00 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-0 [rep-0] initializing EngineCore +INFO 09-23 14:10:00 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-0 [rep-0] EngineCore running +INFO 09-23 14:10:00 [stage_runtime.py:958] [StageRuntime] Stage 0 initialized +INFO 09-23 14:10:00 [stage_runtime.py:853] [stage_init] Stage-1 set runtime devices: 0 +INFO 09-23 14:10:13 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:10:13 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:10:13 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:14 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=512, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [512], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:17 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_c63bd1bf3bee408dbec7aa955dc791f4 backend=nccl +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:17 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:17 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:17 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage1_replica0 pid=4150287) [transformers] `MiniCPMOProcessor` defines `image_processor_class = 'AutoImageProcessor'`, which is deprecated. Register the correct mapping in `AutoImageProcessor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4150287) [transformers] Requested torchvision backend is not available. Falling back to pil backend. +(StageEngineCoreProc_stage1_replica0 pid=4150287) [transformers] `MiniCPMOProcessor` defines `feature_extractor_class = 'WhisperFeatureExtractor'`, which is deprecated. Register the correct mapping in `AutoFeatureExtractor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4150287) [transformers] Image processor MiniCPMVImageProcessor: kwargs ['max_slice_nums'] were applied for backward compatibility. To avoid this warning, add them to valid_kwargs: create a custom TypedDict extending ImagesKwargs with these keys and set it as the `valid_kwargs` class attribute. +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:29 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:29 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:29 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:29 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:29 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:29 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:29 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:29 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:29 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:29 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:30 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:30 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:30 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 20.56 GiB. +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:30 [weight_utils.py:886] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre). If you want to force prefetching, start vLLM with --safetensors-load-strategy=prefetch. +(StageEngineCoreProc_stage1_replica0 pid=4150287) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:36 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:36 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:36 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:36 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:36 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:36 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:36 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:36 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:36 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:36 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:36 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:36 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:36 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:37 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:37 [core.py:368] init engine (profile, create kv cache, warmup model) took 3.32 s +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:37 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage1_replica0 pid=4150287) WARNING 09-23 14:10:37 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:37 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:37 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage1_replica0 pid=4150287) INFO 09-23 14:10:37 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:10:37 [stage_runtime.py:943] [StageRuntime] Stage 1 engine startup completed +INFO 09-23 14:10:37 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-1 [rep-0] initializing EngineCore +INFO 09-23 14:10:37 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-1 [rep-0] EngineCore running +INFO 09-23 14:10:37 [stage_runtime.py:958] [StageRuntime] Stage 1 initialized +INFO 09-23 14:10:37 [stage_runtime.py:853] [stage_init] Stage-2 set runtime devices: 0 +INFO 09-23 14:10:47 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:10:47 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:10:47 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage2_replica0 pid=4150641) INFO 09-23 14:10:48 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=4096, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=False, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [4096], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage2_replica0 pid=4150641) INFO 09-23 14:10:48 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_2341b06c0ccd4c07977ac69ed1b79b60 backend=nccl +(StageEngineCoreProc_stage2_replica0 pid=4150641) INFO 09-23 14:10:48 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage2_replica0 pid=4150641) WARNING 09-23 14:10:49 [gpu_generation_worker.py:103] OMNI GPUGenerationWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage2_replica0 pid=4150641) INFO 09-23 14:10:49 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage2_replica0 pid=4150641) INFO 09-23 14:10:49 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage2_replica0 pid=4150641) WARNING 09-23 14:10:49 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage2_replica0 pid=4150641) WARNING 09-23 14:10:49 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage2_replica0 pid=4150641) INFO 09-23 14:10:49 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage2_replica0 pid=4150641) INFO 09-23 14:10:49 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 19.26 GiB. +(StageEngineCoreProc_stage2_replica0 pid=4150641) INFO 09-23 14:10:49 [weight_utils.py:893] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre) and the checkpoint size (17.46 GiB) exceeds 90% of available RAM (19.26 GiB). +(StageEngineCoreProc_stage2_replica0 pid=4150641) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00 + main(args) + File "/home/zhout/project/edge_infer/vllm-omni-edge/examples/offline_inference/minicpmo/end2end.py", line 286, in main + omni = Omni(**omni_kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/entrypoints/omni_base.py", line 223, in __init__ + self.engine = AsyncOmniEngine( + ^^^^^^^^^^^^^^^^ + File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/async_omni_engine.py", line 305, in __init__ + self._wait_for_orchestrator_init(startup_future, startup_timeout) + File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/async_omni_engine.py", line 539, in _wait_for_orchestrator_init + startup_future.result( + File "/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/concurrent/futures/_base.py", line 456, in result + return self.__get_result() + ^^^^^^^^^^^^^^^^^^^ + File "/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result + raise self._exception +RuntimeError: Orchestrator initialization failed: Engine core initialization failed. See root cause above. Failed core proc(s): {} diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_constrained2.log b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_constrained2.log new file mode 100644 index 000000000..e2a960926 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_constrained2.log @@ -0,0 +1,282 @@ +INFO 09-23 14:13:16 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:13:16 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:13:16 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +==================== + vllm version: 0.29.0 + ==================== +INFO 09-23 14:13:17 [omni_base.py:216] [Omni] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 14:13:17 [async_omni_engine.py:172] [AsyncOmniEngine] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 14:13:17 [async_omni_engine.py:290] [AsyncOmniEngine] Launching Orchestrator thread with 3 stages +INFO 09-23 14:13:17 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +INFO 09-23 14:13:17 [initialization.py:356] Loaded OmniTransferConfig with 1 connector configurations +WARNING 09-23 14:13:17 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:13:17 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:13:17 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 14:13:17 [model.py:2021] Using max model len 2048 +WARNING 09-23 14:13:17 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 14:13:17 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +INFO 09-23 14:13:17 [model.py:887] Disabled mm_prefix attention mode because multimodal inputs are configuration-disabled. Attention backends without mm_prefix support may now be selected. +INFO 09-23 14:13:17 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=2048. +WARNING 09-23 14:13:17 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +WARNING 09-23 14:13:17 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +INFO 09-23 14:13:17 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:13:17 [vllm.py:1585] Cudagraph is disabled under eager mode +INFO 09-23 14:13:18 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +WARNING 09-23 14:13:18 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:13:18 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:13:18 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 14:13:18 [model.py:2021] Using max model len 512 +WARNING 09-23 14:13:18 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 14:13:18 [model.py:2021] Using max model len 512 +INFO 09-23 14:13:18 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=512. +INFO 09-23 14:13:18 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +WARNING 09-23 14:13:18 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:13:18 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:13:18 [model.py:684] Resolved architecture: MiniCPMO45Code2Wav +INFO 09-23 14:13:18 [model.py:2021] Using max model len 4096 +WARNING 09-23 14:13:18 [arg_utils.py:2780] This model does not officially support disabling chunked prefill. Disabling this manually may cause the engine to crash or produce incorrect outputs. +INFO 09-23 14:13:18 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:13:18 [stage_runtime.py:853] [stage_init] Stage-0 set runtime devices: 0 +INFO 09-23 14:13:26 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:13:26 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:13:26 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:27 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=2048, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [2048], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:28 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:28 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_f09fe6fcf4b94a49b32f8078cee56d0c backend=nccl +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:28 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:28 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:28 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:28 [base.py:138] Offloader set to UVAOffloader +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:28 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:28 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:28 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:29 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:29 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:29 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:29 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:29 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:29 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:29 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:30 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:30 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:34 [uva.py:65] Total CPU offloaded parameters: 5.03 +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:34 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 22.37 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:34 [weight_utils.py:886] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre). If you want to force prefetching, start vLLM with --safetensors-load-strategy=prefetch. +(StageEngineCoreProc_stage0_replica0 pid=4151285) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:52 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:52 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:52 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:52 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:52 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:52 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:52 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:52 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:52 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:52 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:52 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:52 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:52 [gpu_worker.py:860] Free memory on device (22.58/23.89 GiB) on startup. Desired GPU memory utilization is (0.58, 13.86 GiB). Actual usage is 11.01 GiB for consumed memory (weights + non-torch), 0.58 GiB for peak activation, and 0.0 GiB for CUDAGraph memory. Replace gpu_memory_utilization config with `--kv-cache-memory=2281984123` (2.13 GiB) to fit into requested memory, or `--kv-cache-memory=11646516224` (10.85 GiB) to fully utilize gpu memory. Current kv cache memory in use is 2.36 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:53 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:53 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:53 [core.py:368] init engine (profile, create kv cache, warmup model) took 6.27 s +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:53 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage0_replica0 pid=4151285) WARNING 09-23 14:13:53 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:53 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:53 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage0_replica0 pid=4151285) INFO 09-23 14:13:53 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:13:53 [stage_runtime.py:943] [StageRuntime] Stage 0 engine startup completed +INFO 09-23 14:13:53 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-0 [rep-0] initializing EngineCore +INFO 09-23 14:13:54 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-0 [rep-0] EngineCore running +INFO 09-23 14:13:54 [stage_runtime.py:958] [StageRuntime] Stage 0 initialized +INFO 09-23 14:13:54 [stage_runtime.py:853] [stage_init] Stage-1 set runtime devices: 0 +INFO 09-23 14:14:02 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:14:02 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:14:02 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:03 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=512, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [512], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:04 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_d7d9ead30b1849fab3acd3b7df633d7f backend=nccl +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:04 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:04 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:04 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage1_replica0 pid=4151683) [transformers] `MiniCPMOProcessor` defines `image_processor_class = 'AutoImageProcessor'`, which is deprecated. Register the correct mapping in `AutoImageProcessor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4151683) [transformers] Requested torchvision backend is not available. Falling back to pil backend. +(StageEngineCoreProc_stage1_replica0 pid=4151683) [transformers] `MiniCPMOProcessor` defines `feature_extractor_class = 'WhisperFeatureExtractor'`, which is deprecated. Register the correct mapping in `AutoFeatureExtractor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4151683) [transformers] Image processor MiniCPMVImageProcessor: kwargs ['max_slice_nums'] were applied for backward compatibility. To avoid this warning, add them to valid_kwargs: create a custom TypedDict extending ImagesKwargs with these keys and set it as the `valid_kwargs` class attribute. +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:14 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:14 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:14 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:14 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:15 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:15 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:15 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:15 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:15 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:15 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:16 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:16 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:16 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 20.69 GiB. +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:16 [weight_utils.py:886] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre). If you want to force prefetching, start vLLM with --safetensors-load-strategy=prefetch. +(StageEngineCoreProc_stage1_replica0 pid=4151683) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:20 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:20 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:20 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:20 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:20 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:20 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:20 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:20 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:20 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:20 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:20 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:20 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:21 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:21 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:21 [core.py:368] init engine (profile, create kv cache, warmup model) took 2.89 s +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:21 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage1_replica0 pid=4151683) WARNING 09-23 14:14:21 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:21 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:21 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage1_replica0 pid=4151683) INFO 09-23 14:14:21 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:14:21 [stage_runtime.py:943] [StageRuntime] Stage 1 engine startup completed +INFO 09-23 14:14:21 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-1 [rep-0] initializing EngineCore +INFO 09-23 14:14:21 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-1 [rep-0] EngineCore running +INFO 09-23 14:14:21 [stage_runtime.py:958] [StageRuntime] Stage 1 initialized +INFO 09-23 14:14:21 [stage_runtime.py:853] [stage_init] Stage-2 set runtime devices: 0 +INFO 09-23 14:14:30 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:14:31 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:14:31 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:31 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=4096, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=False, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [4096], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:32 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_ac6da76b61ed4f85b86393c443498491 backend=nccl +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:32 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:32 [gpu_generation_worker.py:103] OMNI GPUGenerationWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:32 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:32 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:32 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:32 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:32 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:33 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 19.02 GiB. +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:33 [weight_utils.py:893] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre) and the checkpoint size (17.46 GiB) exceeds 90% of available RAM (19.02 GiB). +(StageEngineCoreProc_stage2_replica0 pid=4151929) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:48 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:48 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:48 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:48 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:48 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:48 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:48 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:48 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:48 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:48 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:48 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:48 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:48 [gpu_generation_model_runner.py:558] Dummy sampler run is not implemented for generation model +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:49 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:49 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:49 [core.py:368] init engine (profile, create kv cache, warmup model) took 2.34 s +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:50 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_generation_scheduler.OmniGenerationScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:50 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:50 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:50 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:50 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage2_replica0 pid=4151929) WARNING 09-23 14:14:50 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +INFO 09-23 14:14:50 [stage_runtime.py:943] [StageRuntime] Stage 2 engine startup completed +INFO 09-23 14:14:50 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-2 [rep-0] initializing EngineCore +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:50 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:50 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage2_replica0 pid=4151929) INFO 09-23 14:14:50 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +INFO 09-23 14:14:50 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-2 [rep-0] EngineCore running +INFO 09-23 14:14:50 [stage_runtime.py:958] [StageRuntime] Stage 2 initialized +INFO 09-23 14:14:52 [orchestrator.py:604] [Orchestrator] Starting event loop +INFO 09-23 14:14:52 [async_omni_engine.py:323] [AsyncOmniEngine] Orchestrator ready with 3 stages +INFO 09-23 14:14:52 [omni_base.py:235] [Omni] AsyncOmniEngine initialized in 94.69 seconds +INFO 09-23 14:14:52 [omni_base.py:255] [Omni] Initialized with 3 stages for model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +Traceback (most recent call last): + File "/home/zhout/project/edge_infer/vllm-omni-edge/examples/offline_inference/minicpmo/end2end.py", line 537, in + main(args) + File "/home/zhout/project/edge_infer/vllm-omni-edge/examples/offline_inference/minicpmo/end2end.py", line 328, in main + omni_generator = omni.generate(prompts, sampling_params_list, py_generator=args.py_generator) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/entrypoints/omni.py", line 86, in generate + sampling_params_list = self.resolve_sampling_params_list(sampling_params_list) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/entrypoints/omni_base.py", line 365, in resolve_sampling_params_list + raise ValueError(f"Expected {self.num_stages} sampling params, got {len(normalized)}") +ValueError: Expected 3 sampling params, got 2 +INFO 09-23 14:14:52 [async_omni_engine.py:1807] [AsyncOmniEngine] Shutting down Orchestrator +INFO 09-23 14:14:52 [orchestrator.py:705] [Orchestrator] Received shutdown signal +INFO 09-23 14:14:52 [orchestrator.py:3092] [Orchestrator] Shutting down all 3 client(s) +INFO 09-23 14:14:52 [core_client.py:689] [shutdown] MPClient: start timeout=default +INFO 09-23 14:14:52 [core_client.py:691] [shutdown] MPClient: stopping engine manager +INFO 09-23 14:14:52 [utils.py:620] [shutdown] Process manager: send sigterm to process StageEngineCoreProc_stage0_replica0 +INFO 09-23 14:14:56 [core_client.py:693] [shutdown] MPClient: engine manager stopped +INFO 09-23 14:14:56 [core_client.py:694] [shutdown] MPClient: cleaning up background resources +INFO 09-23 14:14:56 [core_client.py:696] [shutdown] MPClient: complete +INFO 09-23 14:14:56 [stage_pool.py:1354] [StagePool] Stage 0 replica 0 shut down +INFO 09-23 14:14:56 [core_client.py:689] [shutdown] MPClient: start timeout=default +INFO 09-23 14:14:56 [utils.py:620] [shutdown] Process manager: send sigterm to process StageEngineCoreProc_stage1_replica0 +INFO 09-23 14:15:00 [stage_pool.py:1354] [StagePool] Stage 1 replica 0 shut down +INFO 09-23 14:15:00 [core_client.py:689] [shutdown] MPClient: start timeout=default +INFO 09-23 14:15:00 [utils.py:620] [shutdown] Process manager: send sigterm to process StageEngineCoreProc_stage2_replica0 +INFO 09-23 14:15:04 [stage_pool.py:1354] [StagePool] Stage 2 replica 0 shut down diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_constrained3.log b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_constrained3.log new file mode 100644 index 000000000..2907a05ab --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_constrained3.log @@ -0,0 +1,289 @@ +INFO 09-23 14:15:50 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:15:50 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:15:50 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +==================== + vllm version: 0.29.0 + ==================== +INFO 09-23 14:15:51 [omni_base.py:216] [Omni] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 14:15:51 [async_omni_engine.py:172] [AsyncOmniEngine] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 14:15:51 [async_omni_engine.py:290] [AsyncOmniEngine] Launching Orchestrator thread with 3 stages +INFO 09-23 14:15:51 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +INFO 09-23 14:15:51 [initialization.py:356] Loaded OmniTransferConfig with 1 connector configurations +WARNING 09-23 14:15:51 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:15:51 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:15:51 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 14:15:51 [model.py:2021] Using max model len 2048 +WARNING 09-23 14:15:51 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 14:15:52 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +INFO 09-23 14:15:52 [model.py:887] Disabled mm_prefix attention mode because multimodal inputs are configuration-disabled. Attention backends without mm_prefix support may now be selected. +INFO 09-23 14:15:52 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=2048. +WARNING 09-23 14:15:52 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +WARNING 09-23 14:15:52 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +INFO 09-23 14:15:52 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:15:52 [vllm.py:1585] Cudagraph is disabled under eager mode +INFO 09-23 14:15:52 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +WARNING 09-23 14:15:52 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:15:52 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:15:52 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 14:15:52 [model.py:2021] Using max model len 512 +WARNING 09-23 14:15:52 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 14:15:52 [model.py:2021] Using max model len 512 +INFO 09-23 14:15:52 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=512. +INFO 09-23 14:15:52 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +WARNING 09-23 14:15:52 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:15:52 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:15:52 [model.py:684] Resolved architecture: MiniCPMO45Code2Wav +INFO 09-23 14:15:52 [model.py:2021] Using max model len 4096 +WARNING 09-23 14:15:52 [arg_utils.py:2780] This model does not officially support disabling chunked prefill. Disabling this manually may cause the engine to crash or produce incorrect outputs. +INFO 09-23 14:15:52 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:15:52 [stage_runtime.py:853] [stage_init] Stage-0 set runtime devices: 0 +INFO 09-23 14:15:59 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:15:59 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:15:59 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:00 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=2048, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [2048], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:01 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:01 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_fac8d3d9be8c43dda9c20b025e5d2604 backend=nccl +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:01 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:01 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:01 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:01 [base.py:138] Offloader set to UVAOffloader +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:01 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:01 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:01 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:02 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:02 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:02 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:02 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:02 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:02 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:02 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:02 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:02 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:07 [uva.py:65] Total CPU offloaded parameters: 5.03 +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:07 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 22.46 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:07 [weight_utils.py:886] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre). If you want to force prefetching, start vLLM with --safetensors-load-strategy=prefetch. +(StageEngineCoreProc_stage0_replica0 pid=4152525) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:22 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:22 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:22 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:22 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:22 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:22 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:22 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:22 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:22 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:22 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:22 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:22 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:22 [gpu_worker.py:860] Free memory on device (22.58/23.89 GiB) on startup. Desired GPU memory utilization is (0.58, 13.86 GiB). Actual usage is 11.01 GiB for consumed memory (weights + non-torch), 0.58 GiB for peak activation, and 0.0 GiB for CUDAGraph memory. Replace gpu_memory_utilization config with `--kv-cache-memory=2281984123` (2.13 GiB) to fit into requested memory, or `--kv-cache-memory=11646516224` (10.85 GiB) to fully utilize gpu memory. Current kv cache memory in use is 2.36 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:23 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:24 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:24 [core.py:368] init engine (profile, create kv cache, warmup model) took 5.63 s +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:24 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage0_replica0 pid=4152525) WARNING 09-23 14:16:24 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:24 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:24 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage0_replica0 pid=4152525) INFO 09-23 14:16:24 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:16:24 [stage_runtime.py:943] [StageRuntime] Stage 0 engine startup completed +INFO 09-23 14:16:24 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-0 [rep-0] initializing EngineCore +INFO 09-23 14:16:24 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-0 [rep-0] EngineCore running +INFO 09-23 14:16:24 [stage_runtime.py:958] [StageRuntime] Stage 0 initialized +INFO 09-23 14:16:24 [stage_runtime.py:853] [stage_init] Stage-1 set runtime devices: 0 +INFO 09-23 14:16:31 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:16:31 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:16:31 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:32 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=512, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [512], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:34 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_5fabba368db344b7979baf05e10c877f backend=nccl +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:34 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:34 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:34 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage1_replica0 pid=4152819) [transformers] `MiniCPMOProcessor` defines `image_processor_class = 'AutoImageProcessor'`, which is deprecated. Register the correct mapping in `AutoImageProcessor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4152819) [transformers] Requested torchvision backend is not available. Falling back to pil backend. +(StageEngineCoreProc_stage1_replica0 pid=4152819) [transformers] `MiniCPMOProcessor` defines `feature_extractor_class = 'WhisperFeatureExtractor'`, which is deprecated. Register the correct mapping in `AutoFeatureExtractor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4152819) [transformers] Image processor MiniCPMVImageProcessor: kwargs ['max_slice_nums'] were applied for backward compatibility. To avoid this warning, add them to valid_kwargs: create a custom TypedDict extending ImagesKwargs with these keys and set it as the `valid_kwargs` class attribute. +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:44 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:44 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:44 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:44 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:45 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:45 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:45 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:45 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:45 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:45 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:46 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:46 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:46 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 20.74 GiB. +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:46 [weight_utils.py:886] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre). If you want to force prefetching, start vLLM with --safetensors-load-strategy=prefetch. +(StageEngineCoreProc_stage1_replica0 pid=4152819) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:49 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:49 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:49 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:49 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:49 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:49 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:49 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:49 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:49 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:49 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:49 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:49 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:50 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:50 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:50 [core.py:368] init engine (profile, create kv cache, warmup model) took 2.83 s +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:50 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage1_replica0 pid=4152819) WARNING 09-23 14:16:50 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:50 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:50 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage1_replica0 pid=4152819) INFO 09-23 14:16:50 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:16:50 [stage_runtime.py:943] [StageRuntime] Stage 1 engine startup completed +INFO 09-23 14:16:50 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-1 [rep-0] initializing EngineCore +INFO 09-23 14:16:51 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-1 [rep-0] EngineCore running +INFO 09-23 14:16:51 [stage_runtime.py:958] [StageRuntime] Stage 1 initialized +INFO 09-23 14:16:51 [stage_runtime.py:853] [stage_init] Stage-2 set runtime devices: 0 +INFO 09-23 14:17:00 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:17:00 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:17:00 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:01 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=4096, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=False, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [4096], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:01 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_ee4ef51aa7a04a1ea64dcd3bc362a480 backend=nccl +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:01 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:01 [gpu_generation_worker.py:103] OMNI GPUGenerationWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:01 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:01 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:01 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:01 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:01 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:02 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 19.30 GiB. +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:02 [weight_utils.py:893] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre) and the checkpoint size (17.46 GiB) exceeds 90% of available RAM (19.30 GiB). +(StageEngineCoreProc_stage2_replica0 pid=4153030) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:14 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:14 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:14 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:14 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:14 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:14 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:14 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:14 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:14 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:14 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:14 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:14 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:14 [gpu_generation_model_runner.py:558] Dummy sampler run is not implemented for generation model +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:15 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:15 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:15 [core.py:368] init engine (profile, create kv cache, warmup model) took 2.51 s +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:16 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_generation_scheduler.OmniGenerationScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:16 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:16 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:16 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:16 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage2_replica0 pid=4153030) WARNING 09-23 14:17:16 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:16 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:16 [vllm.py:1585] Cudagraph is disabled under eager mode +INFO 09-23 14:17:16 [stage_runtime.py:943] [StageRuntime] Stage 2 engine startup completed +INFO 09-23 14:17:16 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-2 [rep-0] initializing EngineCore +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:17:16 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +INFO 09-23 14:17:16 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-2 [rep-0] EngineCore running +INFO 09-23 14:17:16 [stage_runtime.py:958] [StageRuntime] Stage 2 initialized +INFO 09-23 14:17:18 [orchestrator.py:604] [Orchestrator] Starting event loop +INFO 09-23 14:17:18 [async_omni_engine.py:323] [AsyncOmniEngine] Orchestrator ready with 3 stages +INFO 09-23 14:17:18 [omni_base.py:235] [Omni] AsyncOmniEngine initialized in 86.49 seconds +INFO 09-23 14:17:18 [omni_base.py:255] [Omni] Initialized with 3 stages for model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +WARNING 09-23 14:17:18 [input_processor.py:315] Passing raw prompts to InputProcessor is deprecated and will be removed in the future. You should instead pass the outputs of Renderer.render_cmpl() or Renderer.render_chat(). + Processed prompts: 0%| | 0/1 [00:00._kernel. This causes a latency spike; consider extending warmup to cover this shape/config. +(StageEngineCoreProc_stage2_replica0 pid=4153030) INFO 09-23 14:18:23 [cuda_graph_wrapper.py:98] Captured HiFT CUDA Graph for shape (1, 18, 3840) + Processed prompts: 100%|██████████| 1/1 [01:05<00:00, 65.81s/it] Processed prompts: 100%|██████████| 1/1 [01:05<00:00, 65.81s/it] +query type: text +use_tts (tts_bos): True +Request ID: 0_ebbebf11-419e-4980-9dca-1006ac3ccd5a, Text saved to /home/zhout/project/edge_infer/analysis/experiments/e2e_recovery_20260923/mini_output_constrained/0_ebbebf11-419e-4980-9dca-1006ac3ccd5a.txt +Request ID: 0_ebbebf11-419e-4980-9dca-1006ac3ccd5a, Saved audio to /home/zhout/project/edge_infer/analysis/experiments/e2e_recovery_20260923/mini_output_constrained/output_0_ebbebf11-419e-4980-9dca-1006ac3ccd5a.wav +INFO 09-23 14:18:23 [omni_base.py:781] [Omni] Shutting down +INFO 09-23 14:18:23 [async_omni_engine.py:1807] [AsyncOmniEngine] Shutting down Orchestrator +INFO 09-23 14:18:23 [orchestrator.py:705] [Orchestrator] Received shutdown signal +INFO 09-23 14:18:23 [orchestrator.py:3092] [Orchestrator] Shutting down all 3 client(s) +INFO 09-23 14:18:23 [core_client.py:689] [shutdown] MPClient: start timeout=default +INFO 09-23 14:18:23 [core_client.py:691] [shutdown] MPClient: stopping engine manager +INFO 09-23 14:18:23 [utils.py:620] [shutdown] Process manager: send sigterm to process StageEngineCoreProc_stage0_replica0 +INFO 09-23 14:18:29 [core_client.py:693] [shutdown] MPClient: engine manager stopped +INFO 09-23 14:18:29 [core_client.py:694] [shutdown] MPClient: cleaning up background resources +INFO 09-23 14:18:29 [core_client.py:696] [shutdown] MPClient: complete +INFO 09-23 14:18:29 [stage_pool.py:1354] [StagePool] Stage 0 replica 0 shut down +INFO 09-23 14:18:29 [core_client.py:689] [shutdown] MPClient: start timeout=default +INFO 09-23 14:18:29 [utils.py:620] [shutdown] Process manager: send sigterm to process StageEngineCoreProc_stage1_replica0 +INFO 09-23 14:18:33 [stage_pool.py:1354] [StagePool] Stage 1 replica 0 shut down +INFO 09-23 14:18:33 [core_client.py:689] [shutdown] MPClient: start timeout=default +INFO 09-23 14:18:33 [utils.py:620] [shutdown] Process manager: send sigterm to process StageEngineCoreProc_stage2_replica0 +INFO 09-23 14:18:37 [stage_pool.py:1354] [StagePool] Stage 2 replica 0 shut down +/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/multiprocessing/resource_tracker.py:279: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown + warnings.warn('resource_tracker: There appear to be %d ' diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_default.log b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_default.log new file mode 100644 index 000000000..03f99cb3a --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_default.log @@ -0,0 +1,315 @@ +INFO 09-23 14:06:30 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:06:30 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:06:30 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +==================== + vllm version: 0.29.0 + ==================== +INFO 09-23 14:06:31 [omni_base.py:216] [Omni] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 14:06:31 [async_omni_engine.py:172] [AsyncOmniEngine] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 14:06:31 [async_omni_engine.py:290] [AsyncOmniEngine] Launching Orchestrator thread with 3 stages +INFO 09-23 14:06:31 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +INFO 09-23 14:06:31 [initialization.py:356] Loaded OmniTransferConfig with 1 connector configurations +WARNING 09-23 14:06:31 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:06:31 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:06:31 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 14:06:31 [model.py:2021] Using max model len 40960 +WARNING 09-23 14:06:31 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 14:06:32 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=16384. +INFO 09-23 14:06:32 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['native'], fused_add_rms_norm=['native']) +WARNING 09-23 14:06:32 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:06:32 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:06:32 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 14:06:32 [model.py:2021] Using max model len 4096 +WARNING 09-23 14:06:32 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 14:06:32 [model.py:2021] Using max model len 4096 +INFO 09-23 14:06:32 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=8192. +INFO 09-23 14:06:32 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['native'], fused_add_rms_norm=['native']) +WARNING 09-23 14:06:32 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:06:32 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:06:32 [model.py:684] Resolved architecture: MiniCPMO45Code2Wav +WARNING 09-23 14:06:32 [model.py:2515] User-specified max_model_len (65536) is greater than the derived max_model_len (max_position_embeddings=40960.0 or model_max_length=None in model's config.json). VLLM_ALLOW_LONG_MAX_MODEL_LEN must be used with extreme caution. If the model uses relative position encoding (RoPE), positions exceeding derived_max_model_len lead to nan. If the model uses absolute position encoding, positions exceeding derived_max_model_len will cause a CUDA array out-of-bounds error. +INFO 09-23 14:06:32 [model.py:2021] Using max model len 65536 +WARNING 09-23 14:06:32 [arg_utils.py:2780] This model does not officially support disabling chunked prefill. Disabling this manually may cause the engine to crash or produce incorrect outputs. +WARNING 09-23 14:06:32 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +WARNING 09-23 14:06:32 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +INFO 09-23 14:06:32 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:06:32 [vllm.py:1585] Cudagraph is disabled under eager mode +INFO 09-23 14:06:32 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +INFO 09-23 14:06:32 [stage_runtime.py:853] [stage_init] Stage-0 set runtime devices: 0 +INFO 09-23 14:06:40 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:06:40 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:06:40 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage0_replica0 pid=4149560) INFO 09-23 14:06:41 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=40960, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=False, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['none'], 'ir_enable_torch_wrap': True, 'splitting_ops': ['vllm::unified_attention_with_output', 'vllm::unified_mla_attention_with_output', 'vllm::mamba_mixer2', 'vllm::mamba_mixer', 'vllm::short_conv', 'vllm::qwen4_exp_compute_ple_ngram_ids', 'vllm::qwen4_exp_ple_short_conv', 'vllm::qwen4_exp_qsa_with_output', 'vllm::linear_attention', 'vllm::qwen_gdn_attention_core', 'vllm::qwen_gdn_attention_core_fused_norm_packed', 'vllm::gdn_attention_core_xpu', 'vllm::olmo_hybrid_gdn_full_forward', 'vllm::sparse_attn_indexer', 'vllm::rocm_aiter_sparse_attn_indexer', 'vllm::deepseek_v4_attention', 'vllm::hpc_rope_norm_forward', 'vllm::unified_kv_cache_update', 'vllm::unified_mla_kv_cache_update'], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [16384], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 1, 'cudagraph_capture_sizes': [1, 2, 4, 8], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': False, 'fuse_act_quant': False, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 8, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['native'], fused_add_rms_norm=['native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage0_replica0 pid=4149560) INFO 09-23 14:06:42 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_8a215ee3ae104eaa974483b32508c610 backend=nccl +(StageEngineCoreProc_stage0_replica0 pid=4149560) INFO 09-23 14:06:42 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage0_replica0 pid=4149560) WARNING 09-23 14:06:43 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4149560) INFO 09-23 14:06:43 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage0_replica0 pid=4149560) [transformers] `MiniCPMOProcessor` defines `image_processor_class = 'AutoImageProcessor'`, which is deprecated. Register the correct mapping in `AutoImageProcessor` instead. +(StageEngineCoreProc_stage0_replica0 pid=4149560) [transformers] Requested torchvision backend is not available. Falling back to pil backend. +(StageEngineCoreProc_stage0_replica0 pid=4149560) [transformers] `MiniCPMOProcessor` defines `feature_extractor_class = 'WhisperFeatureExtractor'`, which is deprecated. Register the correct mapping in `AutoFeatureExtractor` instead. +(StageEngineCoreProc_stage0_replica0 pid=4149560) [transformers] Image processor MiniCPMVImageProcessor: kwargs ['max_slice_nums'] were applied for backward compatibility. To avoid this warning, add them to valid_kwargs: create a custom TypedDict extending ImagesKwargs with these keys and set it as the `valid_kwargs` class attribute. +(StageEngineCoreProc_stage0_replica0 pid=4149560) WARNING 09-23 14:06:53 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4149560) WARNING 09-23 14:06:53 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4149560) INFO 09-23 14:06:53 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage0_replica0 pid=4149560) INFO 09-23 14:06:54 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['native'], fused_add_rms_norm=['native']) +(StageEngineCoreProc_stage0_replica0 pid=4149560) INFO 09-23 14:06:54 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['native'], fused_add_rms_norm=['native']) +(StageEngineCoreProc_stage0_replica0 pid=4149560) INFO 09-23 14:06:54 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['native'], fused_add_rms_norm=['native']) +(StageEngineCoreProc_stage0_replica0 pid=4149560) INFO 09-23 14:06:55 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage0_replica0 pid=4149560) INFO 09-23 14:06:55 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage0_replica0 pid=4149560) INFO 09-23 14:06:55 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 26.66 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4149560) INFO 09-23 14:06:55 [weight_utils.py:886] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre). If you want to force prefetching, start vLLM with --safetensors-load-strategy=prefetch. +(StageEngineCoreProc_stage0_replica0 pid=4149560) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00 + main(args) + File "/home/zhout/project/edge_infer/vllm-omni-edge/examples/offline_inference/minicpmo/end2end.py", line 286, in main + omni = Omni(**omni_kwargs) + ^^^^^^^^^^^^^^^^^^^ + File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/entrypoints/omni_base.py", line 223, in __init__ + self.engine = AsyncOmniEngine( + ^^^^^^^^^^^^^^^^ + File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/async_omni_engine.py", line 305, in __init__ + self._wait_for_orchestrator_init(startup_future, startup_timeout) + File "/home/zhout/project/edge_infer/vllm-omni-edge/vllm_omni/engine/async_omni_engine.py", line 539, in _wait_for_orchestrator_init + startup_future.result( + File "/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/concurrent/futures/_base.py", line 456, in result + return self.__get_result() + ^^^^^^^^^^^^^^^^^^^ + File "/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result + raise self._exception +RuntimeError: Orchestrator initialization failed: Engine core initialization failed. See root cause above. Failed core proc(s): {} diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_fixed_e2e.log b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_fixed_e2e.log new file mode 100644 index 000000000..dff8a8dab --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_fixed_e2e.log @@ -0,0 +1,290 @@ +INFO 09-23 15:04:34 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 15:04:34 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 15:04:34 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +==================== + vllm version: 0.29.0 + ==================== +INFO 09-23 15:04:35 [omni_base.py:216] [Omni] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 15:04:35 [async_omni_engine.py:172] [AsyncOmniEngine] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 15:04:35 [async_omni_engine.py:290] [AsyncOmniEngine] Launching Orchestrator thread with 3 stages +INFO 09-23 15:04:35 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +INFO 09-23 15:04:35 [initialization.py:356] Loaded OmniTransferConfig with 1 connector configurations +WARNING 09-23 15:04:35 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 15:04:35 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 15:04:45 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 15:04:45 [model.py:2021] Using max model len 2048 +WARNING 09-23 15:04:45 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 15:04:45 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +INFO 09-23 15:04:45 [model.py:887] Disabled mm_prefix attention mode because multimodal inputs are configuration-disabled. Attention backends without mm_prefix support may now be selected. +INFO 09-23 15:04:45 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=2048. +WARNING 09-23 15:04:45 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +WARNING 09-23 15:04:45 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +INFO 09-23 15:04:45 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 15:04:45 [vllm.py:1585] Cudagraph is disabled under eager mode +INFO 09-23 15:04:45 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +WARNING 09-23 15:04:45 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 15:04:45 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 15:04:46 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 15:04:46 [model.py:2021] Using max model len 512 +WARNING 09-23 15:04:46 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 15:04:46 [model.py:2021] Using max model len 512 +INFO 09-23 15:04:46 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=512. +INFO 09-23 15:04:46 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +WARNING 09-23 15:04:46 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 15:04:46 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 15:04:46 [model.py:684] Resolved architecture: MiniCPMO45Code2Wav +INFO 09-23 15:04:46 [model.py:2021] Using max model len 4096 +WARNING 09-23 15:04:46 [arg_utils.py:2780] This model does not officially support disabling chunked prefill. Disabling this manually may cause the engine to crash or produce incorrect outputs. +INFO 09-23 15:04:46 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 15:04:46 [stage_runtime.py:853] [stage_init] Stage-0 set runtime devices: 0 +INFO 09-23 15:04:52 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 15:04:52 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 15:04:52 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:53 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=2048, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [2048], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:54 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:54 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_b4a47065e7bb48f0921b8c642f25a6a3 backend=nccl +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:54 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:04:55 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:55 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:55 [base.py:138] Offloader set to UVAOffloader +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:04:55 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:04:55 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:55 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:04:55 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:04:55 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:55 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:55 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:55 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:55 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:55 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:56 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:04:56 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:05:11 [uva.py:65] Total CPU offloaded parameters: 5.03 +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:05:12 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 20.96 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:05:12 [weight_utils.py:886] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre). If you want to force prefetching, start vLLM with --safetensors-load-strategy=prefetch. +(StageEngineCoreProc_stage0_replica0 pid=4163945) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:48 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:48 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:48 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:48 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:48 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:48 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:48 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:48 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:48 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:48 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:48 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:48 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:05:48 [gpu_worker.py:860] Free memory on device (22.58/23.89 GiB) on startup. Desired GPU memory utilization is (0.58, 13.86 GiB). Actual usage is 11.01 GiB for consumed memory (weights + non-torch), 0.22 GiB for peak activation, and 0.0 GiB for CUDAGraph memory. Replace gpu_memory_utilization config with `--kv-cache-memory=2667877499` (2.48 GiB) to fit into requested memory, or `--kv-cache-memory=12032409600` (11.21 GiB) to fully utilize gpu memory. Current kv cache memory in use is 2.72 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:05:49 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:05:50 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:05:50 [core.py:368] init engine (profile, create kv cache, warmup model) took 18.03 s +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:50 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage0_replica0 pid=4163945) WARNING 09-23 15:05:50 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:05:50 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage0_replica0 pid=4163945) INFO 09-23 15:05:50 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 15:05:50 [stage_runtime.py:943] [StageRuntime] Stage 0 engine startup completed +INFO 09-23 15:05:50 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-0 [rep-0] initializing EngineCore +INFO 09-23 15:05:50 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-0 [rep-0] EngineCore running +INFO 09-23 15:05:50 [stage_runtime.py:958] [StageRuntime] Stage 0 initialized +INFO 09-23 15:05:50 [stage_runtime.py:853] [stage_init] Stage-1 set runtime devices: 0 +INFO 09-23 15:06:11 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 15:06:11 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 15:06:11 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:13 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=512, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [512], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:16 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_30ae85cbfd864d449a54426162c1ef3a backend=nccl +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:16 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:17 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:17 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage1_replica0 pid=4164226) [transformers] `MiniCPMOProcessor` defines `image_processor_class = 'AutoImageProcessor'`, which is deprecated. Register the correct mapping in `AutoImageProcessor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4164226) [transformers] Requested torchvision backend is not available. Falling back to pil backend. +(StageEngineCoreProc_stage1_replica0 pid=4164226) [transformers] `MiniCPMOProcessor` defines `feature_extractor_class = 'WhisperFeatureExtractor'`, which is deprecated. Register the correct mapping in `AutoFeatureExtractor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4164226) [transformers] Image processor MiniCPMVImageProcessor: kwargs ['max_slice_nums'] were applied for backward compatibility. To avoid this warning, add them to valid_kwargs: create a custom TypedDict extending ImagesKwargs with these keys and set it as the `valid_kwargs` class attribute. +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:33 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:33 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:33 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:33 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:34 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:34 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:34 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:34 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:34 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:34 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:35 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:35 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:35 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 19.13 GiB. +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:35 [weight_utils.py:893] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre) and the checkpoint size (17.46 GiB) exceeds 90% of available RAM (19.13 GiB). +(StageEngineCoreProc_stage1_replica0 pid=4164226) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:47 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:47 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:47 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:47 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:47 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:47 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:47 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:47 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:47 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:47 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:47 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:47 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:48 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:49 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:49 [core.py:368] init engine (profile, create kv cache, warmup model) took 6.53 s +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:49 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage1_replica0 pid=4164226) WARNING 09-23 15:06:49 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:49 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage1_replica0 pid=4164226) INFO 09-23 15:06:49 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 15:06:49 [stage_runtime.py:943] [StageRuntime] Stage 1 engine startup completed +INFO 09-23 15:06:49 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-1 [rep-0] initializing EngineCore +INFO 09-23 15:06:49 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-1 [rep-0] EngineCore running +INFO 09-23 15:06:49 [stage_runtime.py:958] [StageRuntime] Stage 1 initialized +INFO 09-23 15:06:49 [stage_runtime.py:853] [stage_init] Stage-2 set runtime devices: 0 +INFO 09-23 15:07:00 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 15:07:00 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 15:07:00 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:01 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=4096, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=False, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [4096], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:02 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_1e3158f14a274b6b81deeec51b9a4da1 backend=nccl +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:02 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:03 [gpu_generation_worker.py:103] OMNI GPUGenerationWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:03 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:03 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:03 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:03 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:03 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:03 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 17.09 GiB. +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:03 [weight_utils.py:893] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre) and the checkpoint size (17.46 GiB) exceeds 90% of available RAM (17.09 GiB). +(StageEngineCoreProc_stage2_replica0 pid=4164450) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:33 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:33 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:33 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:33 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:33 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:33 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:33 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:33 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:33 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:33 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:33 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:33 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:33 [gpu_generation_model_runner.py:558] Dummy sampler run is not implemented for generation model +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:34 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:35 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:35 [core.py:368] init engine (profile, create kv cache, warmup model) took 2.76 s +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:35 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_generation_scheduler.OmniGenerationScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:35 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:35 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:35 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage2_replica0 pid=4164450) WARNING 09-23 15:07:35 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:35 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:35 [vllm.py:1585] Cudagraph is disabled under eager mode +INFO 09-23 15:07:35 [stage_runtime.py:943] [StageRuntime] Stage 2 engine startup completed +INFO 09-23 15:07:35 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-2 [rep-0] initializing EngineCore +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:35 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +INFO 09-23 15:07:35 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-2 [rep-0] EngineCore running +INFO 09-23 15:07:35 [stage_runtime.py:958] [StageRuntime] Stage 2 initialized +INFO 09-23 15:07:37 [orchestrator.py:604] [Orchestrator] Starting event loop +INFO 09-23 15:07:37 [async_omni_engine.py:323] [AsyncOmniEngine] Orchestrator ready with 3 stages +INFO 09-23 15:07:37 [omni_base.py:235] [Omni] AsyncOmniEngine initialized in 182.47 seconds +INFO 09-23 15:07:37 [omni_base.py:255] [Omni] Initialized with 3 stages for model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +WARNING 09-23 15:07:37 [input_processor.py:315] Passing raw prompts to InputProcessor is deprecated and will be removed in the future. You should instead pass the outputs of Renderer.render_cmpl() or Renderer.render_chat(). + Processed prompts: 0%| | 0/1 [00:00._kernel. This causes a latency spike; consider extending warmup to cover this shape/config. +(StageEngineCoreProc_stage2_replica0 pid=4164450) INFO 09-23 15:07:58 [cuda_graph_wrapper.py:98] Captured HiFT CUDA Graph for shape (1, 18, 3840) + Processed prompts: 100%|██████████| 1/1 [00:20<00:00, 20.53s/it] Processed prompts: 100%|██████████| 1/1 [00:20<00:00, 20.53s/it] +query type: text +use_tts (tts_bos): True +Request ID: 0_2c17288b-c543-4aaa-9a6a-e661ab14c97b, Text saved to /home/zhout/project/edge_infer/analysis/experiments/e2e_recovery_20260923/mini_output_fixed_e2e/0_2c17288b-c543-4aaa-9a6a-e661ab14c97b.txt +Request ID: 0_2c17288b-c543-4aaa-9a6a-e661ab14c97b, Saved audio to /home/zhout/project/edge_infer/analysis/experiments/e2e_recovery_20260923/mini_output_fixed_e2e/output_0_2c17288b-c543-4aaa-9a6a-e661ab14c97b.wav +INFO 09-23 15:07:58 [omni_base.py:781] [Omni] Shutting down +INFO 09-23 15:07:58 [async_omni_engine.py:1807] [AsyncOmniEngine] Shutting down Orchestrator +INFO 09-23 15:07:58 [orchestrator.py:705] [Orchestrator] Received shutdown signal +INFO 09-23 15:07:58 [orchestrator.py:3092] [Orchestrator] Shutting down all 3 client(s) +INFO 09-23 15:07:58 [core_client.py:689] [shutdown] MPClient: start timeout=default +INFO 09-23 15:07:58 [core_client.py:691] [shutdown] MPClient: stopping engine manager +INFO 09-23 15:07:58 [utils.py:620] [shutdown] Process manager: send sigterm to process StageEngineCoreProc_stage0_replica0 +WARNING 09-23 15:08:03 [utils.py:640] [shutdown] Process manager: force killing remaining processes count=1 +WARNING 09-23 15:08:03 [utils.py:645] [shutdown] Process manager: force killing remaining process StageEngineCoreProc_stage0_replica0 pid 4163945 +INFO 09-23 15:08:03 [core_client.py:693] [shutdown] MPClient: engine manager stopped +INFO 09-23 15:08:03 [core_client.py:694] [shutdown] MPClient: cleaning up background resources +INFO 09-23 15:08:03 [core_client.py:696] [shutdown] MPClient: complete +INFO 09-23 15:08:03 [stage_pool.py:1354] [StagePool] Stage 0 replica 0 shut down +INFO 09-23 15:08:03 [core_client.py:689] [shutdown] MPClient: start timeout=default +INFO 09-23 15:08:03 [utils.py:620] [shutdown] Process manager: send sigterm to process StageEngineCoreProc_stage1_replica0 +INFO 09-23 15:08:08 [stage_pool.py:1354] [StagePool] Stage 1 replica 0 shut down +INFO 09-23 15:08:08 [core_client.py:689] [shutdown] MPClient: start timeout=default +INFO 09-23 15:08:08 [utils.py:620] [shutdown] Process manager: send sigterm to process StageEngineCoreProc_stage2_replica0 +INFO 09-23 15:08:13 [stage_pool.py:1354] [StagePool] Stage 2 replica 0 shut down +/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/multiprocessing/resource_tracker.py:279: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown + warnings.warn('resource_tracker: There appear to be %d ' diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_stage0_only.log b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_stage0_only.log new file mode 100644 index 000000000..39ff1f3ec --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_stage0_only.log @@ -0,0 +1,196 @@ +INFO 09-23 14:41:50 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:41:51 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:41:51 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +==================== + vllm version: 0.29.0 + ==================== +INFO 09-23 14:41:52 [omni_base.py:216] [Omni] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 14:41:52 [async_omni_engine.py:172] [AsyncOmniEngine] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 14:41:52 [async_omni_engine.py:290] [AsyncOmniEngine] Launching Orchestrator thread with 3 stages +INFO 09-23 14:41:52 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +INFO 09-23 14:41:52 [initialization.py:356] Loaded OmniTransferConfig with 0 connector configurations +WARNING 09-23 14:41:52 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:41:52 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +WARNING 09-23 14:41:52 [envs.py:2248] Unknown vLLM environment variable detected: VLLM_OMNI_MINICPMO_LOGITS_PROBE +INFO 09-23 14:42:01 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 14:42:01 [model.py:2021] Using max model len 2048 +WARNING 09-23 14:42:01 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 14:42:02 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +INFO 09-23 14:42:02 [model.py:887] Disabled mm_prefix attention mode because multimodal inputs are configuration-disabled. Attention backends without mm_prefix support may now be selected. +INFO 09-23 14:42:02 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=2048. +WARNING 09-23 14:42:02 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +WARNING 09-23 14:42:02 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +INFO 09-23 14:42:02 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:42:02 [vllm.py:1585] Cudagraph is disabled under eager mode +INFO 09-23 14:42:02 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +WARNING 09-23 14:42:02 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:42:02 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +WARNING 09-23 14:42:02 [envs.py:2248] Unknown vLLM environment variable detected: VLLM_OMNI_MINICPMO_LOGITS_PROBE +INFO 09-23 14:42:02 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 14:42:02 [model.py:2021] Using max model len 40960 +WARNING 09-23 14:42:02 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 14:42:02 [model.py:2021] Using max model len 4096 +INFO 09-23 14:42:02 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=8192. +INFO 09-23 14:42:02 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['native'], fused_add_rms_norm=['native']) +WARNING 09-23 14:42:03 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:42:03 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +WARNING 09-23 14:42:03 [envs.py:2248] Unknown vLLM environment variable detected: VLLM_OMNI_MINICPMO_LOGITS_PROBE +INFO 09-23 14:42:03 [model.py:684] Resolved architecture: MiniCPMO45Code2Wav +INFO 09-23 14:42:03 [model.py:2021] Using max model len 40960 +INFO 09-23 14:42:03 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['native'], fused_add_rms_norm=['native']) +WARNING 09-23 14:42:03 [stage_runtime.py:778] [stage_init] Stage-1 replica 0 physical devices None are not integer GPU ids; all serial LLM replicas will share one init group +WARNING 09-23 14:42:03 [stage_runtime.py:778] [stage_init] Stage-2 replica 0 physical devices None are not integer GPU ids; all serial LLM replicas will share one init group +INFO 09-23 14:42:03 [stage_runtime.py:853] [stage_init] Stage-0 set runtime devices: 0 +INFO 09-23 14:42:09 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:42:09 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:42:09 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:10 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=2048, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [2048], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:11 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:11 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_9682e9c24f084fc882f394d72103e18a backend=nccl +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:11 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:12 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:12 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:12 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:12 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:12 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:12 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:12 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:12 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:12 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:12 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:12 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:12 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:13 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:13 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:14 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 27.47 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:14 [weight_utils.py:886] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre). If you want to force prefetching, start vLLM with --safetensors-load-strategy=prefetch. +(StageEngineCoreProc_stage0_replica0 pid=4158127) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:27 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:27 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:27 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:27 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:27 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:27 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:27 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:27 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:27 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:27 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:27 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:27 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:27 [gpu_worker.py:860] Free memory on device (22.58/23.89 GiB) on startup. Desired GPU memory utilization is (0.85, 20.31 GiB). Actual usage is 16.04 GiB for consumed memory (weights + non-torch), 1.21 GiB for peak activation, and 0.0 GiB for CUDAGraph memory. Replace gpu_memory_utilization config with `--kv-cache-memory=3131941786` (2.92 GiB) to fit into requested memory, or `--kv-cache-memory=5570742784` (5.19 GiB) to fully utilize gpu memory. Current kv cache memory in use is 3.15 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:28 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:28 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:28 [core.py:368] init engine (profile, create kv cache, warmup model) took 4.52 s +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:28 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage0_replica0 pid=4158127) WARNING 09-23 14:42:28 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:28 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:28 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage0_replica0 pid=4158127) INFO 09-23 14:42:28 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:42:28 [stage_runtime.py:943] [StageRuntime] Stage 0 engine startup completed +INFO 09-23 14:42:28 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-0 [rep-0] initializing EngineCore +INFO 09-23 14:42:29 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-0 [rep-0] EngineCore running +INFO 09-23 14:42:29 [stage_runtime.py:958] [StageRuntime] Stage 0 initialized +INFO 09-23 14:42:36 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:42:36 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:42:36 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage1_replica0 pid=4158361) INFO 09-23 14:42:37 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=4096, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=False, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['none'], 'ir_enable_torch_wrap': True, 'splitting_ops': ['vllm::unified_attention_with_output', 'vllm::unified_mla_attention_with_output', 'vllm::mamba_mixer2', 'vllm::mamba_mixer', 'vllm::short_conv', 'vllm::qwen4_exp_compute_ple_ngram_ids', 'vllm::qwen4_exp_ple_short_conv', 'vllm::qwen4_exp_qsa_with_output', 'vllm::linear_attention', 'vllm::qwen_gdn_attention_core', 'vllm::qwen_gdn_attention_core_fused_norm_packed', 'vllm::gdn_attention_core_xpu', 'vllm::olmo_hybrid_gdn_full_forward', 'vllm::sparse_attn_indexer', 'vllm::rocm_aiter_sparse_attn_indexer', 'vllm::deepseek_v4_attention', 'vllm::hpc_rope_norm_forward', 'vllm::unified_kv_cache_update', 'vllm::unified_mla_kv_cache_update'], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [8192], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 1, 'cudagraph_capture_sizes': [1, 2, 4, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 416, 432, 448, 464, 480, 496, 512], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': False, 'fuse_act_quant': False, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 512, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['native'], fused_add_rms_norm=['native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage1_replica0 pid=4158361) INFO 09-23 14:42:38 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_4a42f865c6a340b08adfa60702af11a6 backend=nccl +(StageEngineCoreProc_stage1_replica0 pid=4158361) INFO 09-23 14:42:38 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:42:38 [memory_utils.py:39] Free memory on device cuda:0 (21.21/23.89 GiB) on startup is less than desired GPU memory utilization (0.92, 21.98 GiB). Capping requested memory to available free memory (21.21 GiB). This is expected when multiple Omni stages share a GPU; the per-process NVML accounting in determine_available_memory() will compute the correct KV cache budget. +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:42:38 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage1_replica0 pid=4158361) INFO 09-23 14:42:38 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage1_replica0 pid=4158361) [transformers] `MiniCPMOProcessor` defines `image_processor_class = 'AutoImageProcessor'`, which is deprecated. Register the correct mapping in `AutoImageProcessor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4158361) [transformers] Requested torchvision backend is not available. Falling back to pil backend. +(StageEngineCoreProc_stage1_replica0 pid=4158361) [transformers] `MiniCPMOProcessor` defines `feature_extractor_class = 'WhisperFeatureExtractor'`, which is deprecated. Register the correct mapping in `AutoFeatureExtractor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4158361) [transformers] Image processor MiniCPMVImageProcessor: kwargs ['max_slice_nums'] were applied for backward compatibility. To avoid this warning, add them to valid_kwargs: create a custom TypedDict extending ImagesKwargs with these keys and set it as the `valid_kwargs` class attribute. +(StageEngineCoreProc_stage1_replica0 pid=4158361) INFO 09-23 14:42:49 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:42:49 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:42:49 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4158361) INFO 09-23 14:42:49 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage1_replica0 pid=4158361) INFO 09-23 14:42:49 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['native'], fused_add_rms_norm=['native']) +(StageEngineCoreProc_stage1_replica0 pid=4158361) INFO 09-23 14:42:49 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['native'], fused_add_rms_norm=['native']) +(StageEngineCoreProc_stage1_replica0 pid=4158361) INFO 09-23 14:42:50 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage1_replica0 pid=4158361) INFO 09-23 14:42:50 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage1_replica0 pid=4158361) INFO 09-23 14:42:50 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 25.45 GiB. +(StageEngineCoreProc_stage1_replica0 pid=4158361) INFO 09-23 14:42:50 [weight_utils.py:886] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre). If you want to force prefetching, start vLLM with --safetensors-load-strategy=prefetch. +(StageEngineCoreProc_stage1_replica0 pid=4158361) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:43:09 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:43:09 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:43:09 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:43:09 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:43:09 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:43:09 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:43:09 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:43:09 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:43:09 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:43:09 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:43:09 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4158361) WARNING 09-23 14:43:09 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage1_replica0 pid=4158361) INFO 09-23 14:43:09 [gpu_model_runner.py:6955] Rank 0: Torch profiler disabled for CUDA graph capture +(StageEngineCoreProc_stage1_replica0 pid=4158361) Capturing CUDA graphs (mixed prefill-decode, PIECEWISE): 0%| | 0/51 [00:00, 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [2048], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:25 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:25 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_028c7c75f37a4889a1dffc16bb0237b9 backend=nccl +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:25 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:33:25 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:25 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:25 [base.py:138] Offloader set to UVAOffloader +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:33:25 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:33:25 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:25 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:33:26 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:33:26 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:26 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:26 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:26 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:26 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:26 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:27 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:27 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:37 [uva.py:65] Total CPU offloaded parameters: 5.03 +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:37 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 20.71 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:33:37 [weight_utils.py:886] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre). If you want to force prefetching, start vLLM with --safetensors-load-strategy=prefetch. +(StageEngineCoreProc_stage0_replica0 pid=4155868) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:43 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:43 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:43 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:43 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:43 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:43 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:43 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:43 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:43 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:43 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:43 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:43 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:34:43 [gpu_worker.py:860] Free memory on device (22.58/23.89 GiB) on startup. Desired GPU memory utilization is (0.58, 13.86 GiB). Actual usage is 11.01 GiB for consumed memory (weights + non-torch), 0.22 GiB for peak activation, and 0.0 GiB for CUDAGraph memory. Replace gpu_memory_utilization config with `--kv-cache-memory=2667877499` (2.48 GiB) to fit into requested memory, or `--kv-cache-memory=12032409600` (11.21 GiB) to fully utilize gpu memory. Current kv cache memory in use is 2.72 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:34:44 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:34:44 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:34:44 [core.py:368] init engine (profile, create kv cache, warmup model) took 27.79 s +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:44 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage0_replica0 pid=4155868) WARNING 09-23 14:34:44 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:34:44 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:34:44 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage0_replica0 pid=4155868) INFO 09-23 14:34:44 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:34:44 [stage_runtime.py:943] [StageRuntime] Stage 0 engine startup completed +INFO 09-23 14:34:44 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-0 [rep-0] initializing EngineCore +INFO 09-23 14:34:44 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-0 [rep-0] EngineCore running +INFO 09-23 14:34:44 [stage_runtime.py:958] [StageRuntime] Stage 0 initialized +INFO 09-23 14:34:44 [stage_runtime.py:853] [stage_init] Stage-1 set runtime devices: 0 +INFO 09-23 14:34:54 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:34:54 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:34:54 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:34:55 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=512, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [512], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:34:57 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_47ce84a916794d5aaae4f1d8e8082eff backend=nccl +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:34:57 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:34:57 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:34:57 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage1_replica0 pid=4156145) [transformers] `MiniCPMOProcessor` defines `image_processor_class = 'AutoImageProcessor'`, which is deprecated. Register the correct mapping in `AutoImageProcessor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4156145) [transformers] Requested torchvision backend is not available. Falling back to pil backend. +(StageEngineCoreProc_stage1_replica0 pid=4156145) [transformers] `MiniCPMOProcessor` defines `feature_extractor_class = 'WhisperFeatureExtractor'`, which is deprecated. Register the correct mapping in `AutoFeatureExtractor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4156145) [transformers] Image processor MiniCPMVImageProcessor: kwargs ['max_slice_nums'] were applied for backward compatibility. To avoid this warning, add them to valid_kwargs: create a custom TypedDict extending ImagesKwargs with these keys and set it as the `valid_kwargs` class attribute. +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:08 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:08 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:08 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:08 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:08 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:08 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:08 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:08 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:08 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:08 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:09 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:09 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:09 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 19.14 GiB. +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:09 [weight_utils.py:893] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre) and the checkpoint size (17.46 GiB) exceeds 90% of available RAM (19.14 GiB). +(StageEngineCoreProc_stage1_replica0 pid=4156145) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:14 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:14 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:14 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:14 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:14 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:14 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:14 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:14 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:14 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:14 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:14 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:14 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:15 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:15 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:15 [core.py:368] init engine (profile, create kv cache, warmup model) took 2.74 s +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:15 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage1_replica0 pid=4156145) WARNING 09-23 14:35:15 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:15 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:15 [factory.py:46] Created connector: SharedMemoryConnector +INFO 09-23 14:35:15 [stage_runtime.py:943] [StageRuntime] Stage 1 engine startup completed +(StageEngineCoreProc_stage1_replica0 pid=4156145) INFO 09-23 14:35:15 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:35:15 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-1 [rep-0] initializing EngineCore +INFO 09-23 14:35:16 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-1 [rep-0] EngineCore running +INFO 09-23 14:35:16 [stage_runtime.py:958] [StageRuntime] Stage 1 initialized +INFO 09-23 14:35:16 [stage_runtime.py:853] [stage_init] Stage-2 set runtime devices: 0 +INFO 09-23 14:35:24 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:35:24 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:35:24 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:25 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=4096, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=False, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [4096], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:25 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_0f97cdb270804b129ff4c6180e8d4b22 backend=nccl +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:25 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:26 [gpu_generation_worker.py:103] OMNI GPUGenerationWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:26 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:26 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:26 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:26 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:26 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:27 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 17.72 GiB. +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:27 [weight_utils.py:893] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre) and the checkpoint size (17.46 GiB) exceeds 90% of available RAM (17.72 GiB). +(StageEngineCoreProc_stage2_replica0 pid=4156415) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:39 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:39 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:39 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:39 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:39 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:39 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:39 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:39 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:39 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:39 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:39 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:39 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:39 [gpu_generation_model_runner.py:558] Dummy sampler run is not implemented for generation model +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:40 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:40 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:40 [core.py:368] init engine (profile, create kv cache, warmup model) took 2.39 s +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:41 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_generation_scheduler.OmniGenerationScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:41 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:41 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:41 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:41 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage2_replica0 pid=4156415) WARNING 09-23 14:35:41 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:41 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:35:41 [stage_runtime.py:943] [StageRuntime] Stage 2 engine startup completed +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:41 [vllm.py:1585] Cudagraph is disabled under eager mode +INFO 09-23 14:35:41 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-2 [rep-0] initializing EngineCore +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:35:41 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +INFO 09-23 14:35:41 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-2 [rep-0] EngineCore running +INFO 09-23 14:35:41 [stage_runtime.py:958] [StageRuntime] Stage 2 initialized +INFO 09-23 14:35:43 [orchestrator.py:604] [Orchestrator] Starting event loop +INFO 09-23 14:35:43 [async_omni_engine.py:323] [AsyncOmniEngine] Orchestrator ready with 3 stages +INFO 09-23 14:35:43 [omni_base.py:235] [Omni] AsyncOmniEngine initialized in 147.07 seconds +INFO 09-23 14:35:43 [omni_base.py:255] [Omni] Initialized with 3 stages for model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +WARNING 09-23 14:35:43 [input_processor.py:315] Passing raw prompts to InputProcessor is deprecated and will be removed in the future. You should instead pass the outputs of Renderer.render_cmpl() or Renderer.render_chat(). + Processed prompts: 0%| | 0/1 [00:00._kernel. This causes a latency spike; consider extending warmup to cover this shape/config. +(StageEngineCoreProc_stage2_replica0 pid=4156415) INFO 09-23 14:36:17 [cuda_graph_wrapper.py:98] Captured HiFT CUDA Graph for shape (1, 18, 3840) + Processed prompts: 100%|██████████| 1/1 [00:34<00:00, 34.81s/it] Processed prompts: 100%|██████████| 1/1 [00:34<00:00, 34.81s/it] +query type: text +use_tts (tts_bos): True +Request ID: 0_8a6e5016-03c2-4673-a2e5-c79b90f62ccc, Text saved to /home/zhout/project/edge_infer/analysis/experiments/e2e_recovery_20260923/mini_output_template/0_8a6e5016-03c2-4673-a2e5-c79b90f62ccc.txt +Request ID: 0_8a6e5016-03c2-4673-a2e5-c79b90f62ccc, Saved audio to /home/zhout/project/edge_infer/analysis/experiments/e2e_recovery_20260923/mini_output_template/output_0_8a6e5016-03c2-4673-a2e5-c79b90f62ccc.wav +INFO 09-23 14:36:17 [omni_base.py:781] [Omni] Shutting down +INFO 09-23 14:36:17 [async_omni_engine.py:1807] [AsyncOmniEngine] Shutting down Orchestrator +INFO 09-23 14:36:17 [orchestrator.py:705] [Orchestrator] Received shutdown signal +INFO 09-23 14:36:17 [orchestrator.py:3092] [Orchestrator] Shutting down all 3 client(s) +INFO 09-23 14:36:17 [core_client.py:689] [shutdown] MPClient: start timeout=default +INFO 09-23 14:36:17 [core_client.py:691] [shutdown] MPClient: stopping engine manager +INFO 09-23 14:36:17 [utils.py:620] [shutdown] Process manager: send sigterm to process StageEngineCoreProc_stage0_replica0 +WARNING 09-23 14:36:22 [utils.py:640] [shutdown] Process manager: force killing remaining processes count=1 +WARNING 09-23 14:36:22 [utils.py:645] [shutdown] Process manager: force killing remaining process StageEngineCoreProc_stage0_replica0 pid 4155868 +INFO 09-23 14:36:22 [core_client.py:693] [shutdown] MPClient: engine manager stopped +INFO 09-23 14:36:22 [core_client.py:694] [shutdown] MPClient: cleaning up background resources +INFO 09-23 14:36:22 [core_client.py:696] [shutdown] MPClient: complete +INFO 09-23 14:36:22 [stage_pool.py:1354] [StagePool] Stage 0 replica 0 shut down +INFO 09-23 14:36:22 [core_client.py:689] [shutdown] MPClient: start timeout=default +INFO 09-23 14:36:22 [utils.py:620] [shutdown] Process manager: send sigterm to process StageEngineCoreProc_stage1_replica0 +INFO 09-23 14:36:27 [stage_pool.py:1354] [StagePool] Stage 1 replica 0 shut down +INFO 09-23 14:36:27 [core_client.py:689] [shutdown] MPClient: start timeout=default +INFO 09-23 14:36:27 [utils.py:620] [shutdown] Process manager: send sigterm to process StageEngineCoreProc_stage2_replica0 +INFO 09-23 14:36:31 [stage_pool.py:1354] [StagePool] Stage 2 replica 0 shut down +/home/zhout/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/multiprocessing/resource_tracker.py:279: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown + warnings.warn('resource_tracker: There appear to be %d ' diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_text_only.log b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_text_only.log new file mode 100644 index 000000000..f5b4a35c5 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/minicpmo/mini_text_only.log @@ -0,0 +1,279 @@ +INFO 09-23 14:37:51 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:37:51 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:37:51 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +==================== + vllm version: 0.29.0 + ==================== +INFO 09-23 14:37:52 [omni_base.py:216] [Omni] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 14:37:52 [async_omni_engine.py:172] [AsyncOmniEngine] Initializing with model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +INFO 09-23 14:37:52 [async_omni_engine.py:290] [AsyncOmniEngine] Launching Orchestrator thread with 3 stages +INFO 09-23 14:37:52 [stage_init_utils.py:768] [stage_init] Set VLLM_WORKER_MULTIPROC_METHOD=spawn +INFO 09-23 14:37:52 [initialization.py:356] Loaded OmniTransferConfig with 1 connector configurations +WARNING 09-23 14:37:52 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:37:52 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:37:52 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 14:37:52 [model.py:2021] Using max model len 2048 +WARNING 09-23 14:37:52 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 14:37:53 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +INFO 09-23 14:37:53 [model.py:887] Disabled mm_prefix attention mode because multimodal inputs are configuration-disabled. Attention backends without mm_prefix support may now be selected. +INFO 09-23 14:37:53 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=2048. +WARNING 09-23 14:37:53 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +WARNING 09-23 14:37:53 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +INFO 09-23 14:37:53 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:37:53 [vllm.py:1585] Cudagraph is disabled under eager mode +INFO 09-23 14:37:53 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +WARNING 09-23 14:37:53 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:37:53 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:37:53 [model.py:684] Resolved architecture: MiniCPMO45OmniForConditionalGeneration +INFO 09-23 14:37:53 [model.py:2021] Using max model len 512 +WARNING 09-23 14:37:53 [model.py:981] Model does not support mm_device_do_normalize, forcing mm_device_do_normalize = False. +INFO 09-23 14:37:53 [model.py:2021] Using max model len 512 +INFO 09-23 14:37:53 [scheduler.py:277] Chunked prefill is enabled with max_num_batched_tokens=512. +INFO 09-23 14:37:53 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +WARNING 09-23 14:37:53 [utils.py:501] Dropping unknown OmniEngineArgs field 'inline_diffusion' (not declared on the dataclass) +WARNING 09-23 14:37:53 [utils.py:501] Dropping unknown OmniEngineArgs field 'shm_threshold_bytes' (not declared on the dataclass) +INFO 09-23 14:37:53 [model.py:684] Resolved architecture: MiniCPMO45Code2Wav +INFO 09-23 14:37:53 [model.py:2021] Using max model len 4096 +WARNING 09-23 14:37:53 [arg_utils.py:2780] This model does not officially support disabling chunked prefill. Disabling this manually may cause the engine to crash or produce incorrect outputs. +INFO 09-23 14:37:53 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:37:53 [stage_runtime.py:853] [stage_init] Stage-0 set runtime devices: 0 +INFO 09-23 14:37:59 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:38:00 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:38:00 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:01 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=2048, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [2048], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:02 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:02 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_f8ec0c16156044e3bae1107090805fb7 backend=nccl +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:02 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:02 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:02 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:02 [base.py:138] Offloader set to UVAOffloader +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:02 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:02 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:02 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:03 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:03 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:03 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:03 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:03 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:03 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:03 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:04 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:04 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:14 [uva.py:65] Total CPU offloaded parameters: 5.03 +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:14 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 20.78 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:14 [weight_utils.py:886] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre). If you want to force prefetching, start vLLM with --safetensors-load-strategy=prefetch. +(StageEngineCoreProc_stage0_replica0 pid=4156973) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:37 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:37 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:37 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:37 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:37 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:37 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:37 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:37 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:37 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:37 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:37 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:37 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:37 [gpu_worker.py:860] Free memory on device (22.58/23.89 GiB) on startup. Desired GPU memory utilization is (0.58, 13.86 GiB). Actual usage is 11.01 GiB for consumed memory (weights + non-torch), 0.22 GiB for peak activation, and 0.0 GiB for CUDAGraph memory. Replace gpu_memory_utilization config with `--kv-cache-memory=2667877499` (2.48 GiB) to fit into requested memory, or `--kv-cache-memory=12032409600` (11.21 GiB) to fully utilize gpu memory. Current kv cache memory in use is 2.72 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:38 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:38 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:38 [core.py:368] init engine (profile, create kv cache, warmup model) took 13.15 s +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:38 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage0_replica0 pid=4156973) WARNING 09-23 14:38:38 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:38 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:38 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage0_replica0 pid=4156973) INFO 09-23 14:38:38 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:38:38 [stage_runtime.py:943] [StageRuntime] Stage 0 engine startup completed +INFO 09-23 14:38:38 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-0 [rep-0] initializing EngineCore +INFO 09-23 14:38:38 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-0 [rep-0] EngineCore running +INFO 09-23 14:38:38 [stage_runtime.py:958] [StageRuntime] Stage 0 initialized +INFO 09-23 14:38:38 [stage_runtime.py:853] [stage_init] Stage-1 set runtime devices: 0 +INFO 09-23 14:38:45 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:38:46 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:38:46 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:38:47 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=512, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=True, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [512], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:38:48 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_7e1227f0df324162a62f71e91ee2fc27 backend=nccl +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:38:48 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:38:48 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:38:48 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage1_replica0 pid=4157223) [transformers] `MiniCPMOProcessor` defines `image_processor_class = 'AutoImageProcessor'`, which is deprecated. Register the correct mapping in `AutoImageProcessor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4157223) [transformers] Requested torchvision backend is not available. Falling back to pil backend. +(StageEngineCoreProc_stage1_replica0 pid=4157223) [transformers] `MiniCPMOProcessor` defines `feature_extractor_class = 'WhisperFeatureExtractor'`, which is deprecated. Register the correct mapping in `AutoFeatureExtractor` instead. +(StageEngineCoreProc_stage1_replica0 pid=4157223) [transformers] Image processor MiniCPMVImageProcessor: kwargs ['max_slice_nums'] were applied for backward compatibility. To avoid this warning, add them to valid_kwargs: create a custom TypedDict extending ImagesKwargs with these keys and set it as the `valid_kwargs` class attribute. +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:38:59 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:38:59 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:38:59 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:38:59 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:38:59 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:38:59 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:38:59 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:38:59 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:38:59 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:38:59 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:39:00 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:39:00 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:39:00 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 19.14 GiB. +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:39:00 [weight_utils.py:893] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre) and the checkpoint size (17.46 GiB) exceeds 90% of available RAM (19.14 GiB). +(StageEngineCoreProc_stage1_replica0 pid=4157223) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:03 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:03 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:03 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:03 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:03 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:03 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:03 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:03 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:03 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:03 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:03 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:03 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:39:04 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:39:04 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:39:04 [core.py:368] init engine (profile, create kv cache, warmup model) took 2.37 s +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:04 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage1_replica0 pid=4157223) WARNING 09-23 14:39:04 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:39:04 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:39:04 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage1_replica0 pid=4157223) INFO 09-23 14:39:04 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 14:39:04 [stage_runtime.py:943] [StageRuntime] Stage 1 engine startup completed +INFO 09-23 14:39:04 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-1 [rep-0] initializing EngineCore +INFO 09-23 14:39:04 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-1 [rep-0] EngineCore running +INFO 09-23 14:39:04 [stage_runtime.py:958] [StageRuntime] Stage 1 initialized +INFO 09-23 14:39:04 [stage_runtime.py:853] [stage_init] Stage-2 set runtime devices: 0 +INFO 09-23 14:39:11 [patch.py:259] NVFP4 W4A4 weight_scale NaN-clamp: installed. +INFO 09-23 14:39:11 [patch.py:510] inductor factorable-divisibility patch: installed. +INFO 09-23 14:39:11 [patch.py:583] [cumem-cuda] CuMemAllocator._python_free_callback patched: asleep guard extended to all platforms. +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:12 [core.py:123] Initializing a V1 LLM engine (v0.29.0) with config: model='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', speculative_config=None, tokenizer='/home/zhout/project/edge_infer/models/MiniCPM-o-4_5', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=4096, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, data_parallel_size=1, decode_context_parallel_size=1, dcp_comm_backend=ag_rs, disable_custom_all_reduce=False, quantization=None, quantization_config=None, enforce_eager=True, enable_return_routed_experts=False, kv_cache_dtype=auto, device_config=cuda, structured_outputs_config=StructuredOutputsConfig(backend='auto', disable_any_whitespace=False, disable_additional_properties=False, reasoning_parser='', reasoning_parser_plugin='', enable_in_reasoning=False), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None, per_request_spec_decode_metrics='none', kv_cache_metrics=False, kv_cache_metrics_sample=0.01, cudagraph_metrics=False, enable_layerwise_nvtx_tracing=False, enable_mfu_metrics=False, enable_mm_processor_stats=False, enable_logging_iteration_details=False, jit_monitor_mode='warn', jit_monitor_verbose=False), seed=0, served_model_name=/home/zhout/project/edge_infer/models/MiniCPM-o-4_5, enable_prefix_caching=False, enable_chunked_prefill=False, pooler_config=None, compilation_config={'mode': , 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [4096], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:12 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_a8132b1d955648dd9d02b133c7b1fe35 backend=nccl +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:12 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:13 [gpu_generation_worker.py:103] OMNI GPUGenerationWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:13 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:13 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:13 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:13 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:13 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:13 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 17.77 GiB. +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:13 [weight_utils.py:893] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre) and the checkpoint size (17.46 GiB) exceeds 90% of available RAM (17.77 GiB). +(StageEngineCoreProc_stage2_replica0 pid=4157481) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:26 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:26 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:26 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:26 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:26 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:26 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:26 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:26 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:26 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:26 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:26 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:26 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:26 [gpu_generation_model_runner.py:558] Dummy sampler run is not implemented for generation model +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:27 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:28 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:28 [core.py:368] init engine (profile, create kv cache, warmup model) took 2.58 s +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:28 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_generation_scheduler.OmniGenerationScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:28 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:28 [chunk_transfer_adapter.py:142] Bounded active-stream window enabled: K=1. Multi-replica deployments require sticky per-stream routing across Stage 1 replicas (each replica owns an independent active-set; without sticky routing, a stream can be active on one replica and non-active on another and both will race to evict it). +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:28 [factory.py:46] Created connector: SharedMemoryConnector +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:28 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage2_replica0 pid=4157481) WARNING 09-23 14:39:28 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:28 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:28 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage2_replica0 pid=4157481) INFO 09-23 14:39:28 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +INFO 09-23 14:39:28 [stage_runtime.py:943] [StageRuntime] Stage 2 engine startup completed +INFO 09-23 14:39:28 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-2 [rep-0] initializing EngineCore +INFO 09-23 14:39:29 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-2 [rep-0] EngineCore running +INFO 09-23 14:39:29 [stage_runtime.py:958] [StageRuntime] Stage 2 initialized +INFO 09-23 14:39:31 [orchestrator.py:604] [Orchestrator] Starting event loop +INFO 09-23 14:39:31 [async_omni_engine.py:323] [AsyncOmniEngine] Orchestrator ready with 3 stages +INFO 09-23 14:39:31 [omni_base.py:235] [Omni] AsyncOmniEngine initialized in 99.15 seconds +INFO 09-23 14:39:31 [omni_base.py:255] [Omni] Initialized with 3 stages for model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +WARNING 09-23 14:39:31 [input_processor.py:315] Passing raw prompts to InputProcessor is deprecated and will be removed in the future. You should instead pass the outputs of Renderer.render_cmpl() or Renderer.render_chat(). + Processed prompts: 0%| | 0/1 [00:00, 'debug_dump_path': None, 'cache_dir': '', 'compile_cache_save_format': 'binary', 'backend': 'inductor', 'custom_ops': ['all'], 'ir_enable_torch_wrap': False, 'splitting_ops': [], 'compile_mm_encoder': False, 'cudagraph_mm_encoder': False, 'encoder_cudagraph_token_budgets': [], 'encoder_cudagraph_max_vision_items_per_batch': 0, 'encoder_cudagraph_max_frames_per_batch': None, 'compile_sizes': [], 'compile_ranges_endpoints': [2048], 'inductor_compile_config': {'enable_auto_functionalized_v2': False, 'combo_kernels': True, 'benchmark_combo_kernel': True}, 'inductor_passes': {}, 'cudagraph_mode': , 'cudagraph_num_of_warmups': 0, 'cudagraph_capture_sizes': [], 'cudagraph_copy_inputs': False, 'cudagraph_specialize_lora': True, 'use_inductor_graph_partition': False, 'pass_config': {'fuse_norm_quant': True, 'fuse_act_quant': True, 'fuse_attn_quant': False, 'enable_sp': False, 'fuse_gemm_comms': False, 'fuse_allreduce_rms': False, 'enable_qk_norm_rope_fusion': False, 'fuse_rope_kvcache_cat_mla': False, 'fuse_act_padding': False, 'fuse_qk_norm_rope_kvcache': False}, 'max_cudagraph_capture_size': 0, 'dynamic_shapes_config': {'type': , 'evaluate_guards': False, 'assume_32_bit_indexing': False}, 'local_cache_dir': None, 'fast_moe_cold_start': False, 'static_all_moe_layers': []}, kernel_config=KernelConfig(ir_op_priority=IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']), enable_flashinfer_autotune=True, enable_cutedsl_warmup=True, enable_jit_warmup=True, enable_bf16x3_router_gemm=False, moe_backend='auto', linear_backend='auto') +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:15 [registry.py:141] All limits of multimodal modalities supported by the model are set to 0, running in text-only mode. +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:15 [parallel_state.py:1775] world_size=1 rank=0 local_rank=0 distributed_init_method=file:///tmp/vllm_dist_96bb721bd42747ccbd1599c4212953bb backend=nccl +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:15 [parallel_state.py:2119] rank 0 in world size 1 is assigned as DP rank 0, PP rank 0, PCP rank 0, TP rank 0, EP rank N/A, EPLB rank N/A +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:16 [gpu_ar_worker.py:120] OMNI GPUARWorker forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:16 [topk_topp_sampler.py:46] FlashInfer top-p/top-k sampling disabled via VLLM_USE_FLASHINFER_SAMPLER=0. +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:16 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:16 [base.py:173] [LLM Worker 0] Sleep Mode DISABLED. +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:16 [gpu_model_runner.py:5379] Starting to load model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5... +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:16 [vllm.py:1371] Enforce eager set, disabling torch.compile and CUDAGraphs. This is equivalent to setting -cc.mode=none -cc.cudagraph_mode=none +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:16 [vllm.py:1406] Inductor compilation was disabled by user settings, optimizations settings that are only active during inductor compilation will be ignored. +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:16 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:16 [vllm.py:1585] Cudagraph is disabled under eager mode +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:16 [compilation.py:329] Enabled custom fusions: norm_quant, act_quant +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:16 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:16 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:17 [cuda.py:492] Using FLASH_ATTN attention backend out of potential backends: ['FLASH_ATTN', 'FLASHINFER', 'TRITON_ATTN', 'FLEX_ATTENTION']. +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:17 [flash_attn.py:897] Using FlashAttention version 2 +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:17 [weight_utils.py:863] Filesystem type for checkpoints: EXT4. Checkpoint size: 17.46 GiB. Available RAM: 27.27 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:17 [weight_utils.py:886] Auto-prefetch is disabled because the filesystem (EXT4) is not a recognized network FS (NFS/Lustre). If you want to force prefetching, start vLLM with --safetensors-load-strategy=prefetch. +(StageEngineCoreProc_stage0_replica0 pid=4163207) Loading safetensors checkpoint shards: 0% Completed | 0/4 [00:00", line 1387, in _gcd_import +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:41 [import_utils.py:408] File "", line 1360, in _find_and_load +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:41 [import_utils.py:408] File "", line 1331, in _find_and_load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:41 [import_utils.py:408] File "", line 935, in _load_unlocked +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:41 [import_utils.py:408] File "", line 999, in exec_module +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:41 [import_utils.py:408] File "", line 488, in _call_with_frames_removed +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:41 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 126, in +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:41 [import_utils.py:408] _find_cuda_home() # CUDA home +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:41 [import_utils.py:408] ^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:41 [import_utils.py:408] File "/home/zhout/project/edge_infer/.venvs/omni-cuda-029/lib/python3.12/site-packages/vllm/third_party/deep_gemm/__init__.py", line 120, in _find_cuda_home +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:41 [import_utils.py:408] assert cuda_home is not None +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:41 [import_utils.py:408] ^^^^^^^^^^^^^^^^^^^^^ +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:41 [import_utils.py:408] AssertionError +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:41 [gpu_worker.py:860] Free memory on device (22.58/23.89 GiB) on startup. Desired GPU memory utilization is (0.85, 20.31 GiB). Actual usage is 16.04 GiB for consumed memory (weights + non-torch), 1.21 GiB for peak activation, and 0.0 GiB for CUDAGraph memory. Replace gpu_memory_utilization config with `--kv-cache-memory=3131941786` (2.92 GiB) to fit into requested memory, or `--kv-cache-memory=5570742784` (5.19 GiB) to fully utilize gpu memory. Current kv cache memory in use is 3.15 GiB. +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:41 [minicpmo_4_5_omni.py:571] MiniCPM-o forward probe 2: ids_shape=(1,) ids_prefix=[0] embeds_shape=(1, 4096) embeds_abs_mean=0.0 hidden_abs_mean=0.0 positions=[0] +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:42 [minicpmo_4_5_omni.py:671] MiniCPM-o logits probe 2: shape=(1, 151748) finite=True top_ids=[6682, 14952, 1895, 8844, 47739] top_values=[7.90625, 7.875, 7.8125, 7.75, 7.71875] hidden_abs_mean=0.498046875 head_abs_mean=0.0286865234375 +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:42 [jit_monitor.py:85] Kernel JIT monitor activated; monitored JIT compilations during inference will use mode=warn. +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:43 [torch_utils.py:277] Reducing Torch threads from 12 to 1 for serving. Set OMP_NUM_THREADS in the external environment to override. +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:43 [core.py:368] init engine (profile, create kv cache, warmup model) took 6.21 s +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:43 [scheduler.py:213] Using custom scheduler class vllm_omni.core.sched.omni_ar_scheduler.OmniARAsyncScheduler. This scheduler interface is not public and compatibility may not be maintained. If you have subclassed Scheduler instead of AsyncScheduler, you will see degraded performance due to async scheduling being disabled. +(StageEngineCoreProc_stage0_replica0 pid=4163207) WARNING 09-23 15:02:43 [omni_scheduler_mixin.py:118] OMNI scheduler forces v1 model runner for omni hooks. +(StageEngineCoreProc_stage0_replica0 pid=4163207) INFO 09-23 15:02:43 [kernel.py:369] Final IR op priority after setting platform defaults: IrOpPriorityConfig(rms_norm=['vllm_c', 'native'], fused_add_rms_norm=['vllm_c', 'native']) +INFO 09-23 15:02:43 [stage_runtime.py:943] [StageRuntime] Stage 0 engine startup completed +INFO 09-23 15:02:43 [stage_engine_core_client.py:159] [StageEngineCoreClient] stage-0 [rep-0] initializing EngineCore +INFO 09-23 15:02:43 [stage_engine_core_client.py:215] [StageEngineCoreClient] stage-0 [rep-0] EngineCore running +INFO 09-23 15:02:43 [stage_runtime.py:958] [StageRuntime] Stage 0 initialized +INFO 09-23 15:02:45 [orchestrator.py:604] [Orchestrator] Starting event loop +INFO 09-23 15:02:45 [async_omni_engine.py:323] [AsyncOmniEngine] Orchestrator ready with 1 stages +INFO 09-23 15:02:45 [omni_base.py:235] [Omni] AsyncOmniEngine initialized in 48.07 seconds +INFO 09-23 15:02:45 [omni_base.py:255] [Omni] Initialized with 1 stages for model /home/zhout/project/edge_infer/models/MiniCPM-o-4_5 +WARNING 09-23 15:02:45 [input_processor.py:315] Passing raw prompts to InputProcessor is deprecated and will be removed in the future. You should instead pass the outputs of Renderer.render_cmpl() or Renderer.render_chat(). + Processed prompts: 0%| | 0/1 [00:00dLJ^A;LAtwR z>D^^_?{?R%iTC-=@&0}HeD2KLGbf(&oaa1!Vd#K<{Tg4A*mJ#}?K^(*l=>dVm_X(5 zON`Cl$C$`GY}_kTUSZUxC2Pj&vRbSO>&&{dHY|Zz^|rF6Xk}WaR-$>SO?%dwwPO#l zZtQ=C!Wy%VtP5+)>QT#V zEkmo&tjtGaWYG))&HX6rK%;0{U-l|%!K!F(K-`%1r`a0Py*+*GR9~bOX!%+$^^Z~; zi8)y^!9AD_VqFQo4m4*&T1#zeU7KJCYY{C+yRM~cs^(%%37%#&XG}{bxN1|+p6p#V zj(Wssw42&q?Y8D2s6<*r7g}#U8mTU;PtY}{yNi`-m$ZvCyN%wrr1i95Uc#%H)u5J* zSu56@?)6zC=4M4S+D%$zIbp~_J)Lx|No#n7bs{KR(6~lgtBqP3sedh+s|EG7v2yB@ zudfU%Eu>XOXq6)MuSGL`LpeN&6O~G0O?-H??cp1?qK5J4@vX?L;NbHOgt1)0SDD_kl6n@Su2Nf#cEQM^gq;GaOQUyJX#4}(9)fv4L4JU+ zbW%G;eUH-I7wPS7ecj~*e>LrRg}#ai_0J$GIz_W=rx`bEziC@&&RzQ6oT7f$3El!) zb&T4h0BW4$R4TV=)KfIaK5ZxU-md*cQ17EXJ)-067PZQwd2n7qd%$fvt?mx31lZkA zJF}C@Zi4j)?bKQA9If&a;VhkKCX1-Kkou?7_Zu|NWun^aM7!9Vi!|#=DyQjwiuzn6 zdOlC(jK0$A)Fy>m-l4u(v>SQ!$s`Qjqj4@!AN0FQuw$(2)b}L8a*)=$n;<$uSi7R{ zPk~M$0%5qCb|{$pjEcjc`; z(+jBTB-L^pT%vYqwBkIXqGGyc)3@vNe!or=`~HRDEaB;@PK6mdZt|!lIBOQ|)-4(V z6nlrDyiD-&(NEHIDq%2}+JWNBbQ;K{J<24w?+|R*fveOPoaKfN^KHT}V9BNePM<;F zZqd4~P#aLdO=|Uk&Iv|IrviGy?p&Z2x9I&nYL6Ln=zW?_Yxk%h&eCnd-)(w+K<~FNpGdN-?)no11RFg-oFdrxyZ;GhIF_}lb ziwT};qMnderSpSay=Rax4&G8sy)hHcY)t1A3Z1HIeeP1KlZhil2@_@14n4DJL=Iu4 zJ}P9Yf#i*euHdYt`goW#OuftXIVyCFRMR*z6>tcw67z#sl+iV!^FEnm1vnMBV7zY? zJ>fg&pqLZ=!6juKUXi%INONO;O|QegffGfjO-$zw;4qNJ&^{EM!=aZ%T7*kKQ8wx; zFpL+~;lS)z2OtYk4g0^AkmO$C=oVVBfnp}a z5~Tb+TGyesfVn!0}ifP&XSPeN<7;dtaQB040^boYQKXG1&rVkx(I&1K0dT~3 z859VO3We*xphoDyR-#+`8k3aAu@EjCa6`V&`5!ZnP zi5GmYq8iRc`4w7giO%OCkD(_*@<0ZFH{%JC1K;olckucW{RyogE4T!L9E1!hq?V9N z`TCtp?n3H?(YU-qOGwqAUNY$^g9>C2O0Hh==n8qp+d^(ZGV&hT`WwivczZy=rC?BR zh1PMYjd>t#pko2PxWt6k1?h_d37GY7fpo>Vyd_%W6PL1p4`TsJ-W&a}8ZOH@OuPjw z!T;dG8xAw-FbAKJ*W(RpF&oDpaLacCJA+a}1v)(T00r+0blBqi##@xrK0~%)w{fk| zKah_o*uD5j71V;a0bM|L^Y)x#&>D3p|J9=waPT|E<83e!m$$fLem*v?@u%v4pV0zR zoy*g>OpX4Zq=k(Vm$8tu{2T80hChCiaH4P`a7PW7#?rsf{H)=W;FRHry&zxbeVnFra$ z`Yl~|eF8v(hMB)V7=;TALL-OL3 zOZs;^Jz43bI;jpCwVPVw%tH5ozQQ%c_$kF&_zpmS=Crp zR^(Od$a;`3uOAyokZtcQ)#fl)Ws%Q-=c_3?$P4Y0oH-`MIpRtYX5DPM+&`fwzcwLw& zEE2vGei42bb_iz#uh>#775);Y3r=A-c^wP2rCMLDO8r3{sK%5X%2=hb;#Jx!uPNUt zca=u!IQ2XAs_N06BUr;)cQ%u4VJFxzwwcXmFOr|s&a%jxvs`;k>#V8jb#<${QeC7j zQ-4!^*<7Lm8BK&wTVoWfSIf7m&8jmlZJmu+GT*d&6x6VVuBd4$1J0r`db#dv=`VGr!PH7$&?e%o08oJ`?5%?+Y&ry@ket#%|Gy-zJ~Bz%CKK z-_ZtXtu>EULG#~GFA+@l)m*h&wQI>*3xcw@_6)%^L3^9ZTLkwD+7PWL!P#7Eq}A6F zwSbnO`7|%JuB)}wy3=ScY42$ZXh(LEKj;qWDpAc&)Zb9|O?M$*{X^u%?yP%aThqD5 z`L0FhB5s?46Evo_?a4FTlPGEsdC`ZmXW1y)tx;?^JrAY2$B3pn5ardSk-bDy8c}H( zQF$79U#^kA2Yx^Jzy2Zb(q8g#{Y{^pcR@*mB~Q@6-Jb=o68xj^Hs99gfX@z} zt2EZtf1j^Y4|vV)5+v}3am^SSCp5pfMNv-Q;A<|SQw=Q-8e|#mI&@T64ESE5x8d!$ zm4GXJL0kvtIy=@3ET$4Rp&P@?1zi`G1vF8N9o9J;=E3~@R6|$h+$@jaz_=*Tr!hha zwS-m-jWeR}0k^uq{lQD&D}j~?UI~r|-Ult0dw<|nLQh7zpzU8x4z?l+yz{U%;m2VV z(}C|DYXmkB7eE0oMu9&F6u^Bl+`1Eqhr@z{*9b6F>+{3H0_?Dyus(RNz=7eL0q2FB z;1UF06b=WjkZDGOL#CE0>BX=rxpxS1jY}EGa;^zLN^va`(jTXf+udjf-;9ss4#tP} z3Ms_xdB`W|F8s9O4$Io3w}kG?WvrFvhV3d7+}thz{0hMYe;FSW{wVZ?MgV;mk`T5x z*UO<*bEqK=0X;sj;klj#naed*8^Z99|A+Q1BLUtU<%@6Fk5akIz6~fY*zA1VCTVG9cwSe!$zHLju=aGsZXm z#Mgm6;CSYHftGRIAFu*iu31B0;(d7ybmq9;i?NdRb=D`@49^$tb@cV3HMA$h1RGE- z_%23mpnKKeTZ87s{Zjl2z6>e>uA!kp$KrZ)90urKm=W0Hnj$gIkgXn>qjLCMfmv6mdr9Gjp`%}jP8Np=bjmeb?zQE5Fub-RaYH-NFMP^zDuxvejSsq}N-=GC@gc3? z-G|R9M$hm&fqS79co-t?T*~3Cf$C!Vxff|vXxrRd2Fn~HF^XS>iNjUX2;Aol`yV`) z`_T~rzU>55)aUkUWU7K=z;(k_p}* z%!X$`gO-RNr;=nvd=CsQq2KU!y)(NcKbWD{3@0Sng>&;uSg4qF~QBgzh~>>9PZOK?CpIZHb0af0YF zeGr>Wr_s`=pe5QPUI*>u7F{!_25~Y$Hd_n-msH{9QeUBzz4b(K7Q zzcDIehFE_p^@ctITEJVh#(0QrVqWMih!B?134rE-SQ*X%qGq@jQoC$w18U+kgX%!Z zh}RX8fZmEdO|D?ePBuQ7-BrCCjZMb zxHk?w!$@QoqhFta0Xj}u~dJc9J(7WgZ*$OJK=`_K$N3LC>FJP-n^C9+# zIAjAF2ND-6hja$?&?_PR5NiRRAn~ws$Pz=FM7lZ%1{bwK1Qw%08^fBhgHC!6pAq7q z{10ajHi1QN!*>z#-bd|BG(KXx$b#Y#8)(Sf(+=+pw+|tQF{*>+$LyR6L6gXF!6}N+ zd4}Y~$qv)WCK&L*SGEkw$BtQ<0s=kdN$Cl`P4CBC;0!std3F76*bmG1tjt$r~GSzd73_K696rTNor~oV_zy;3~ z#x0-^A{BtLkoX$p$OB#CAmfHhW6tfkbp@Lm?F(q+w10Ukv;gG)K>FMzsfYZaizIh$ z5a)-SL*@lC*&uy$by)x#8x|+#fCL1m<~$d?4l*H^>QNxeA*Ya~0jYqMS2KoX{ND0Up*u2oHIDTQVLm~rD@c#iS*ygZuVP6A6=sUSogZ0DatRiZJ zUCOgKAaU}kHLrnA2I+)a-~tkudjkLsUqQMK3upto1YL|v+#Koy2?g2!O~EGzZzVDY ztErCXj!AlC2fQFkeWCe5*F#1IAOp2P%46noeQm%ew5fC*CSV&94m%92-6kr4{&t@* z0DByEIC4WE^MN&J8F#4T2 zOr>`D`u<{fkq?6tjQs+hg47;(!C6B7(>;2|epk|Ig%%#7HpuC_M=cR+Mb;9uK2Xtp z{p8%y^)svuCm9-0mA)#R_iCDj(*|HDrIF&4%WHuvt{s8CpbtRCm2znX#0cPU+lS$+8tSsoTXb(M$dzz3}366mr zC!8>hkMZD}0q28e1Bxo38t9YobQRN6+9nyscQd^?a7JUbw!x4{|al!R!w9fey=fl7%Fol%^a&T?z33xBG zP~34|;0MI`z$0Hb?%Y~JJDgke0IZ1U!}h|i0Y1)iF%zT!4EMGevS-3oOe(S zr~~wdbzuxpH*ypai3iUGX5mo;Me|%xoU}BZz93OxVL(IYJveudX90j(dCmbec$^$= z8F7CsuILMEhx;jUg=GQSg^YrK7PiK{f4K_0v?x616W&@BNF?sTg}nnyhquQQEFM^7 zxO4w2>^{`N_JjR}T+~}F9I|u&w+22h-p5yn9Q9LV%i?pI{O(vcdIReCNEnOP@t#;E#}7R9+*gnG zeBHnYa$7MwU^t`u^x@Z!mlG7*I8KFU`r?XgV|?d%$GjazKBL0~=#Up2&kaWAH418Z zjxwGRJvgS1i8~*i_u~Cfi-O)K{_j0+i`INZz;;ZJNgbwW$ssDZ9@L)>QAFkdJ>!FN znA#oH%MtzkL5kO)#R2+u^xxjR5AvAzQrSlzyv3M^d!ZFCcs{0o`06+g_`2|ny}@4b zo#Qy=c#N;;KkRVqatw34@)cuz4)GD13oFLDkL$I3wTJ0BjwjxluPhERV8pn*&k=nc z=*jD`lkqkDx4&2er>{7U`JVCJ#yjLp|5tdfIlgn6`;Yn%BLZFF8mBK#k)S+I(Kx;Q zwDMB~D&~cc6Q^y|!(#>h5a)3?Q85CTecWA-=gOG2qad?&+ z*E=AyA>nv_6MP=r^T9Ki_%~>iD9~tmZm>$y`M*C%TVx->szizBA;B9F&n1Gtgl8>s zD;96KCkFmn9s%L`3_Oz&mM?5q*!75$AeWKnDZmrLy}$qe6EX{UZbsZ5=iUeS=;Lu9 z9#w#kpXXA*-_LVU>yz~lKReH$#W(oo+Kfw!ZZFtc6y@}ofUVr3jpdSAB=K8h8 z|FvqYzk#P7-V~IU|9S=ByGP;mt@Ymv!QX46BpOdVCXFY2M>{?WMnfHsTX&!IKI zGp_L`yy2sx2BY-Ud!mld18BPGuyBYubf^QA{2hP7O8IKzE8t@QD_AuzUH<)sHS-$a z3^>aNMEwufY z7I1H)e~Z%;s0lRnA7!;9sskPJ0-EHM$?I^%d(iTKExC6NQ6zZja0Yk`ibs_Ylj0{M zep+xU;wAnJPZiH=if60yQx`vTICuQy#m^t!{Pz}-A$TF-D}xs?UgBpP-{DO|;Tc~1 z%Ahj-2#4|cMhvhlg@R}jQk4#bcs`wK;b^IG* zONedp-%EgdBVNTlABbx4%m5zk0_W$y?cjbf?jM7VgWr>IOO4wtxW;n{VA12ZB#Hcy#(=f_``lUjwWhw8l7Gw)1RhT)C}=9?%T9j|I@lw2aWs!jR1cN&)$LE z4T~ASM#L}5PLcizE%pRG!*fzf?_jSZmIGhRUDBtZTVEpm2tL6yni-z1a=OE-0*eNg z$6Xq)kj6&FfIz<5Gh3e5!-> z$ZbS;r>e+XfLJllaKUe5VW;q42WAmXb6+&h34U>GrWg}^0q|15zgMNxBhU5Yc3%o% zy@+5-(z#><;$2B}vKgx;DuV5do#fFoc$%2Auu%ryIm+tVMYh0Mg0p~d z*M#I)FOpTwh_~Uljqu^%TyP&XV$_91E9Ys~PSW~Q2wO(t+kM#xHk$IudeU=%)_z0Z zv5T}X83eb3xM*vVA8l#$WWoU8LrfKRFm|ni#^AXqPTiNH(r?KTx$ykkuQh2;jDBx@ zpJs&Se3^RX5)CC2oWs})G-dnUBK?Z&smT1<0i53G-7{}wzX-uv#G@v%2zu}?<)yEb!a6IQ>$00 z^rsai(X5EZBR)`*G=dRS{}x@FQ{Qy5v^G*!;2O%3+e`FNhkj)}n$2cEvu$hxWiviP zRCF`V1%Yf7`S-%s`YyLsArT3vtk3oB$U!6aO#oW@avhjhZxHp=!~ zOXHN%Z?bz4Yy(L)H>DLK7eZobMBCfw7s8il_mOK*k4+@VAFxWw@f=Sp57C^%F8tzusjEcYpQ^BmD{K$pgdg|%kA3HPTd4{#CnnxL&9%mirG z=h#xVho!J|cAb4gJ8Ppge5;Mt2GbnB5tVoedz07<_BugXgI%Lc)psd3@+UeS57BGO7XccFuT|3HlT+O!9I*VvkKhfS?qg|_{Yo6Ac zO{FoqungiD=~@k%t2^OX)*hp5Q?JlbPzkzTgx6!*I8D&ztBKBC#!WY6=VYLtzQib-yaQ3D4K%K9?uRg8bRpu*ul})Owbrfz26~cYttgu+frxjdP ztCizQd&)7LLiBNueIgVJjm0v`RDFm|)+*I`szZ$^)6_?`nk>S;6vhiNc7Xjz_xeb$HabcYF%ug@tEZh**P;TsU_B_j^cURT1YE3m+eOE0} zKiA%8qlF&A|JVZJ$YbeLj?})UtljC_BvwpiBb!AZk??(pu-!@9t-hl^rj8-SVkL32 z-t0Deg)(oi(0QJztyh!O9_lf5GOh4B8zrO&gT$tyS2(8y)nRHAHB4*lt9H^pXB~t( z!q>!s+_b-!={!76G&@U6q!T!qZKqRnnKEp*Ym+otb!%S|HNHYnTwpO;!5Lb4L&{?P zfpS=T51SH)ZDb|amH<65=)liEQWOZQ#sWObhs zRCZ_!gnPmxLOVea*Ng9q>B2_#t9nUpEuWL`E5EA^v}f5lVXoLhyeXK)L}9SDP#vWj z)GB2+(TGQTQhSe$7pjR*jHA;yj4h^<*;HGtey43B9;K=iw2N#z(fl;=ad9ilRG+2Z zi0qk>(XXvmRLzY3%n`J5#H7MC{M_1q6%6R3plA{e5=Zk*{e-Zx{DX-ls{7>6P zr*8%8OlNL4<&&QhT;d;WtXf~$qJ)&q%4+#jxrsWK1;kQuxL8cG^c(g)ae~&YgtEfT zw7ZYfnS7KTRi9GdR!68q)jsM6>g!q($+TAqt6ii8Qcvl9p@a6Rs?zD(qP(gsRIJpd z6-n{`36;WmVWaRZ<yepYTNCo3+($ggaV^qbLSe9q9skShMh+G_*U z_vOE$-ss%u*Rek8FKh^LmEXnXQ!gm#@>|LeYB$nf2D6=%fj?4vm`)4Hdg9?Th4$hS zF-dw-YA#Mk=pInmjh%E;L1SVQ$QR#V(4y=%BCxup4GKXIPeMl`b7^7m0kOq5@e z|B=@#->DxklXOvL}CXC2}YAIc5_MvnyJAZKHZx>m+m+d?Zf> z2`vp*3{OZ?1tWWgc*-92wDP*#N!hJ+W*?G-%wd~_bUH78u@8hjbU!By5MO3L6EFCM z{i(jCTvY`HqtS%k+4 zB?;@9MXOK0OlT>jh+#Uz%UC0A9C6z>)e6lZWD{5ZK|RV^NjIdc(sx3-8c>=Mwa*uW zbk6#yr3&d(0@*Ffd$LK%R=;OY3)>j^aH;plLKCr>G~KYsm@R#-*_4IqCDObj%8u9< zv32rWYFGLV#~8sWo)w20{xA$RoRv0;723|&!tklk$VfLOS@Wxd)n)8u>AtbVyv6*t z;We?hI9q&-tyW7EL2=5*VuxabmA8n09A~@e1dpX(AIxCcq&515a?vHdA+8io3$Kff zg=DRkx~Y><{&bJSsXVVvIg6-&QBGd!$hg7PE|pEvGEq z%&OFst)Sn0+>xJ(rbc?j|?Hcjo8N!R=C2_YnUA(~7 zsoRu|%6<8#XvfI2kzsN-VYGBooGeW-HZuKbe8jMbPDg^$RO_YHRC~~AS{$pR>?gTj zOUq~1NoxsepRv=V+_f?U4A;cotPSzT2Xrb9l3eN`{~;eyeHM(GrByynW2v5zCx@V@XbvAL>~ zc+vn?EPiZWOm2&O!yJ~Qu2IV6mP%OeDff(Ri;3zv_B%-^Cfv|ICJ8=U7(u*z7F(nJ zkL}P3h~GUWWU&UCLXu%H{nDr-t$GD%<@4ElL?sQR1LB)(l=>2#sfUCO;+xV4ajVu* z4JpqnC!)8*??q-smDp=)Z?TWDq3ND+g{hfovE*P&)ceX9d1llTeLnhJ%&DquixiTQ z3?+vCM!Vq_o2E8WTFdXnK8`JtErj!jv{%&k)C%=+VVBg>uw8sc=t7iMCES3wMqMP2 zl84FP#}>r`%5k+8YcKw6*lPOR{D!HUw1l}dl0&f$ktyLLkq+`@wX^W0m@2Ll=Lm~f zs&-RtqkgPxRf5_|u~7QJkYKDbh*BR`N7)n!SKF%}3)PLRjXk5Jvt`D7v)l5wxvOcY zbVDmuX2puaiIMivlIRtAm-dSIkny_dA=7TjDWV z?-{>0Y!#0P>zGL6+T_1tk0>X#tE`#e6H5)fOmCV5`eE`EX@+=+V4uepsTQ@1`h~Jh zo~o=SZKyk0FR!uJ2-+dSe4$(j2|L)2>J7QCY?NEaBGH`ags3_8oUAHI+C2It)J~FX zpK6jeSsoH;7wQzs3AG51i3qV9u~(Ii+EC#`@e`@8v_*&#Jyr-ygh4_dc7!za)2u`| zEO>-Q^e<-Ruy@5jrLBf##%rcw=F#S_%w}_M(=1~%!>eK*dxFk>d!n*J!)Q~`+|GKy z+S%H~VlllT^%B0(x~guaj$9h+F87yH1W{OhO>Ic~xI%te?j#S09ghr-Bu7_A zZia4G*RL+EJYDfhMPfy_^5x~9S6r=}T|Fk`i~Jlrr2Qi8la5F$48^96=HJM@qIJ|?m!3C-4AYFm zO?OStn(JBSSXNm2ThCjItPQPM=4Z|AO^pna_$Tem>#^i$S>#B>5KWFXQ~GHQ1i$p1 z;kw}=={0s)xfLx4ZK^CST~O4Z;01EwJ&~84*Q~Hv$))nk)h|ZYME&YF((mRomY`*! zRkFrR-zX`2n>EE{cG?Y-@tZ7Z#2>j=vYQy*ic zVSwSF^rtjinog8GTKZ1?`y5q z7nB=vciAa_CeKoKsZWyTJeMq;ze$%nBOi@+h&&edg;J_=DvC;9Ek0E^rNEFsDF1xH zwxTg5V=Fp@mn(~9fDR!h^R}K^}lci~s78t%ZR+^r+ZnFJj zd&!n+4O&voqs#|QHw=$Si^ccE46#CdQ5qo5C!hWj?YP=b=_+51P6+)_eKoW*+%mjA zbUOT0`0wf(RckBim3>*XE6!V(op z3Ppxj4lLVNCYR-ww+<=M$K*Qd6`_;VTv#hKFx9opHY=ud%W0e6QO^~0zvQZI3z}M* zUNU|yMo6FEEI%dt)VGDnhI*z$<|6AG_7RTTj$Mud`7kNy#Z!uYDg3oCP@Gt@ zqExCZ3@uTXNdv7G*GKM_-ZS1d-u=#L)-1zNwk0~P`f^2&vbRcWm;F@!WYxmZ!?8Zv z9bvw4w)rV*o~@7V4cnu(2KJM#S6!KobJo+Azb#LjM;qUgYOuZXfoP-HvvN}qJ z6mJ@4TBbOTx?l9ncH7-9m*%iJ8rp*9tA@_fQSpRWmrfNkoR%(%t;Iiui`v7==E#Gp z-^vaYWfx2@aOaohi3MW8;|0A6HW&3PZdJIZ=txOUS^ElK^;~&{c+2#LvyDHNxFbnU zx{=h|zt#~mJrG`vS}M8}e_yygzgPZag;z?f6`iWLM~ARdsj=y(d5CSH^MNzhIo7q> z{k40Ja|coXx3*8MZ<(%(F1A!T5ql@mBM5A&Y#f0Qsi z;dI~;{|}ys^N#%o>s-?g(a(CSYvfw7U!vQi-$(a_O`&Dgmg=LGX=OPj(~8d)F33;F zpPsiTuPFOkuvd2D+|C83i=HfRT>VzG4fB};?v4H%3AUt95`Rk!_}_3Ju!fGQ<+d} zNpF|lJF{s{QU0mYVIf6LHaBv&Pr6^rU8kbX<8@Bd>>2pl+1tE_rG`gVq?8URjun;{ zt}4zfsbA)(OsO6hel}7s_Kq?@yC)1c_P6zPm3W@<*Gv4OMvdgYNqqwyJ+tgR&ErH_ z`ILS*`Dta7%7?2yu6{lIbga8NM|jKdxA~N9wDXet3-1g5a3DExN#YBMYM|7&)Klbq z#J1J=kMOKoJ60>azA8{TwfyrkYx(lBPGyeL&2$?26}yVI6#5De=FQ5k8SEbnXYI<| z5d0-iD*mD3o5%^ z7gn6E+7((8em8P9(mc8|_M@63G&fdTwmDXMUJMLN+FQe2<6c4^|Bvoj_8z7rp`|h} z>WdVH9t~{?U5q?Nn)bKsWzlB%+xWa$vkbTS9Cw@(-OD@$-WLAt{@VUuya(LRJA<}H zmK1|S_($0on;lIis@xx1LMfQLDu-6?FTYXpppX@`&c7F2kU8YRhV&NcgHji!waYZ* z{#97F{HxFe^^zfKH~7{CQUmJ}<_3g7P0tF)%a&G#hlP9Udc~^DlEblOu}7nAqYEO9 zB7cPPt5PdhSN5q|9cmt3s4Qk34RtLy?QPw)y?ebgyi+~1U5gym);G6Qg6dEhMR`=#$(3mCe75^l4_A`pW2^yzV2$_>hE0RIBXZ}9j&sdkKvN= zFl((Ps9WTPvHwL|M=pilueMbcmQO65R$N`Ur9jNBo!u#Gde)81DVZ~}EIG!4M~mMp zZxH%ac}x7$gE%QuErDcLO&05#Kz>(wZ>+0d`Ww+Z7SXP;L8h1)l$RA^2 zRpiHfM`fy2nGu^BITt!wwY6ea*~nsNVI;3n?#k@!tQ}b+v$|!K1l#0xFNhSbD#@%^ z8~PuGe^S{rQI;kezA~LLzizH)USnEgwp)uWnstF~pzRymuht8ef6Tj$i={-NRPoEt zMfXKoMaG054nGCGsb=+%QmEu9qvQjmCl8fBiuI5F9X%iYF7`_7e6%&`Ts^cc!eptPalUbm zX}6`8ZJ+&)eWyLe(canF^_Kgfr>?J!?{}}+*U|rapl%?=yTa{tl{x;fe`Wojxx`Q` zzAVh7D6LW3s+i?_(WQ}|;e*vPD>sz?SvtA6s&H^YYW~-GLvoko?8pvh|B`b(_w&3h zd4J?TUid-rn6iR$U)7t{#_+o6H2EiW9h)X3N=8F%(@N5|&e*=UFL7*jPIfMJe&9@@ z8LO=`E%VIpm2;2Pi_=APwV=MDQeCwLRhi47BnB^nb)CiD;N^}Xo1?!0Qh zXDu`PP0tvXi|1Jrt+tv>WA}*`hqhInt9ZY>qBOnuyTXU_59WGv9NE@jjjS`7!OT~( zsTc)Ne615&ChbVtlr$!(O;T!NLSpNLCH|A% zzMi)3@vcG6J@&2E-Da~X+0a1Ts9BVn(Mh2@#MxJt+Dd#yH}gNty_dZ_xHij{+2lc4 zT6S7y`rHS7Gv3VXnf-8HM#1+*{?fAY-BoF!nvu=XO>$H1bKy&=%s9Yu&{pE;<*xE1 z`#$u&j%~Idt?jKJS{^Y64W;Cz-bU17l-owX2(Jw# zht5}5Rog-bLr24RA|FS4#rDcQ)%VE1TFq{V2BSv2b2!;I*Ili>H+^FQClc-^u1;E- zv^i--(txDxiEkvd4xI26d8c_UxUM^XvrV@om_pJp;fC5o{vlE)w5xJ;`Sj8?#ZMMq z%$t(4I~dKZesD2ueyTq;Ep=$xg0yYvrp)=-Wx3-Dl8R=Q+$uX#`AYS`aP#QCSWERU zRwVT{U9uSMtDIfkNp!jw`o{Yfc;EJHa2L6bIr}<(w=J~Juv|A6nkE`gOAW;@*#yn5 zPLQueXGLy@r-rYF2S>(6UW-H`Lu2RV8%nYAf;vn)!Rm`|NGW7L{$l>dy2+m76g}O& zO?(-?tNxt8f`nfa9!>Z)&?%4@xaBEmo$+dPXKz zdnzxNm6voWE-ZK_??m=@St$?v>EEVKNj;HTFLhe#b7@mDJ_t6>y_mPZph5A~(s>n| zt9FO3L>`ZARvu^LrIDuhEEjEE9X(v%y6<|P^$zz=_H=NMb=`LU>RjkZu>VXlV6^4D zd9P`<@i)mL&L$a}tcs+sE{*PqydF6o84x`Zy%*gXZ51=gW@Qig#`lt6wZE`b9By!$ zdRQ{8?d_G02d*=o?cT1wGrn2=7J;#W*8^Pwcl>w!5Bb;oKJ>oeY2bd;+1wStV~;)HaBf*+PCSeGrkHA$mx(* zn7^v%e97Ii*DK~#j;k&VwT_m>_NtEvF2itBAIk;X4#%6WOqb-o>6+piLEqKl)yMsG&nj;)Rzi|vn1lzWkV z@r(MbHjN&He}e_5P3i7XM6NxwqQ$ zzWcoMu03pBVjgN-A^jyB(7GtSqkn~aheB2BD;kzefAgy#_=;KId*+3Dswc<|02=f8!*Y>uKdXA}% z1CC5brK6?eoIT%m#rC)rcI6z7ZK3Dy^Je-oCVRao57m`LUcu z*@eNEf>l}Lv!(~X%YKlvGFQwSnt!ukQ_;J{b4o6jb}z3{*|GYIa7MJ2@`?7IkRmxu z>&?}c%hoq+U)zlK3HFKhG4>wz;r4cPzhV2p_NHx}^$UyH+{5&O(Py|RE+_wd9X3?k zrM{{zpeR@erKi$enW0Fu+H>**io^Y?4$!)>PlbKrqlVeWQzoxvpmm__8T)e5OIElh zx~tslJ+II{zT`9c{`8i3KJ-+(pK@0?Q|uw@63aI82vbaYS(vI_R*GXsA|Ho-seHb? ztmKcPnFT-Rt;rpm(>dD`JehSUSdu+8XDp>Gb<#68ZJjVx`pkHjEX2*0KGt08blV-qFicG4M&H;rNk$>;vK`lm8PX+l1}adH#6qx=z_!O=>6HKf*LBZU*c%SnA?m6qe?)uJYar|TRS_hk37%z#>k_T8+ z{uf;p`nD>&{GZZ<;?#n7^1J6<$uVay3T_H+%r4HJp1nKUo0F3p%6lf?TyVPJeo^0& z;?lp%&r}`{9f`D%8>sKH`qBSI8Qsja9(j7 zv1i*1HjDL`d4j2?F;@zS<-!NTL3U0%O0mdpido5#`^b;QTEt$6CCgjo?n+&X(#~XG z3Ae=Xg+;V|XOB4|&SS3A?t7kN-eJBwzW4pN{D1f_`L=i+ z-Z7r1-4mVnZ86Jq^J6B5p|4P=?vU?97l(RQ{#tgjWI%D7f*!devvX*5i-HdYcV~^x zD#^+V#Ik|pWw8=_odIuGd|q&X1grIOf=fS{|6L8*3Qr85WA2g$C>$ zEuV4yS6tSKRa_=rS71| z;UnisU~Aw);BH`EpmSiJzmqS`lj-W{tZQ#!EirX5)DTB$kIFT|nU%km*DGsV+%?~v zQy9DuY#e+y>+wvM>C4=aIXWwt^>Oe-Fi88?Id^1!qr!g0y-P=ze^s?7To8Lgoy?vQ z`x=%TADEh0KCwPyn`7&0H`BiDaCLA$?r!XE@4o12?0VYS!g0yg(E7ajdt-0I9BI3_ zM7XD&QHzyJ%G*kw+)%d1mPAKH4@JAi{)%;xPs^8-nc4@!JgK#DrpaMhWu0wLc5Zit z+;==*dgu8r`(uH36J{m6oluYbRqX>C{KI_XJY!vNI)1WQESrq2$df!zekJ@0c{Tqm zYgXJi|DBxU+3#j=3bx2OuH8R*C`;{C^UhRU%i|UuWT{fz6 zUFgebj@*)>Lp7w=4ZDo(%p)xIt?R8LZR3b{uXA>Cz2aKwTIhP;<#M%jx@pd2>pSKv z#?6M6(loKR;9|`vH^Q&}L;Ug^xj6P=Y*cJxEJ6N44$D6(x$0atNIWO?GNzd3S`uw@ z?McqhTxZ=kNmC!-e>9L57?`jkVRORM2^#{Z{g+8Hcs%V~s(r2XqFFK>lg?=qV!gvV z$#*rdY-i!zygs?9Ir-Ty2Tx>f&S;RiGBcWaF|#;xK-T@N$-%bSpXV&k+fwjc(V&u) zvh>RG(2?kNC9EA1o|hUJ`@6owB7TXe=5p%`r$6k$XkdG?2$wD8eZDsAG#m3I&w=CzZ zrFMs_o@bM{f&Y!bfrR%GixbBty_@t_k|)WOG%MkO|2f|p^6I_qnq!|}S#JDY>LT=3 zI)uM2f3CDe@x1&y*=@2?Gumd^{CyJ}a}da~9NHMJVclcIq)eak&No#X7~<^sb~X_`<&vnyvJ z{i+-#UGfj)GzpGR-*l({&E6@sZ~k~|{9Rk>z4R3sO3sD?x%7+5&ea{m7K+&IQFfE} zKf&a-?6oa+*7tS}JeK%P!tlTjZzK1k4zp#nVW)N^)-znYxCst zm0vFVy|hWmsiLn6hZfE+npoPUDm9c5siO=MHk-@rn)6*(n(HagNU!WY?)$_4xj#AZ zeV}&I*yO6357(Mevtjbuq&E^rC5-it@zixbZu`LEvGld%n*T93C9l0|%rv@92MoI; zCQ?4C(mfUmm6wk!H0IsTK9luI`qKL+@2942P8*atF?W7JY4NwEuT@*3?d2hqPZnghx>uWn;d*1GJ%yj`d=>f7I=-Q>t#Rx%*XGPUe8z{G#8>&7s}0nJ9c4 zX&DjI2JfLhZ{|6~3JJUUs9bL0Qk{ zJYR6Uq^P1*=;ug!w4O4UvR1#+Mi588r4D90q@Zz&`D2Rw^|uw-K5-ZwC#*Tf6Ve*; z*){k$Lhze>nWd_HMzQZz|Rx|nz)kQA^4G6Q=9yZu+ZO}syODmY`{p_>{BU5MG>3nC5Dk zNf&(S&KK>;_U~+$>=C=)HrjIA@{s*8>uvFe*tDwU#SL;kec(?my4(9s@Xq+uWm!4- zoyrTt4YcV}JJY+Cv*gWaZ#!u2MX~bz(rH72xy+Pk`onm|Y_Ys*T0~mLE#{Up!c~zg z(M!<{u}zxW(8S!|@v^^Djc&==$?I#ct(#T5Va@9`(vnUmwD1T0)97b9uXqRf!u}q< zuUs=-qg?&1L!xiy+cW2;O1GMv&p9#v$UjF~ol3es>cPW#`K1lja@(u^%EV7=dg`vI z84mPuk95e^#@21tKP`2Qvy9JK9FFg;e;YPx6C<{Y3kBDMd(xKPsd4Lx+t1&fnKnB3 zXYrcQM)fnPxkYr|b2V~jIA_{Vn4dC)q=(3>G@H#7#u|nhvPFj>%}^qJuQelY$ofc+ z&~IT+>{nSUOu_jT`?mWSUvwCm_MXYIFEW|kLT2(>nT;S1GBshMAAbiI|e zw)y)xds&BBO3f9yC|A%NWyD0=I|7#Ov0yd9+8IDz7 ziOf-+R)%ZkhQFMH0(X;|)*jMeS0iVm9~)@(Q|fK5)i|kVV2bx6m+Bnk-tNh8Io)%- zC!KRyu7O8Vw-D|9?-i>`Xe!3;3ZOq$KxmkV3 zxX>{%us!)&Eh)Kk!lxdq{bTdf(k%9lyfK<6Kcv*5T)Ya(c$~=oA5q@{A4S!@y*t}W zl1Bt;&A5?n zOk11WDWN=iX2b%+_aXa3%7V4Q&4M=S7wbAm$JKvVI;h~4$CjIO&;59E-pS@?UDqx= z>RK9J|B~-k@VU5o$M58keAqv|WaCwu|R6sy0de7fSGbfTxHbC+3N z{XvN}zgbQ;j`9z?fAP`jr&}u)TSrMwtLqJ4N9z-cl6oYyh)oC|t8b#-ByaF{aPP7A zwI6kKaaFqi^{nt-@?M5T(#P&wu5r${u&VCrA0hmp$~NRj6~((!?qywT`bpEb8!ye; zo_;HFQgqLV=+J!qD(z8CH%+$Ysyx?myjosTSM=xOtn01L{c<*2xd}`n%tCjrM$uRZf^&VQ*$>Q8%PQUUczs zpNH-49=+|n`}d<4id@wX?VV(1U1s>nxD#oinZG9Qh;0+KJoJKQpuC6loXc)8S&AL8 zPJ`X$SP4BvzT*$a=k8dy+uqud>?!oQqz}~3LVu3_DdDZOR~vW9wq?)F{;|pFjP#_9 zv5SnqhRqJXt8?ozR65U$I(_w|3SHs2+bb{4KKIWl=PCIm>22AgriEJ@wkXDjPKxQA z(Y5*37X2H4lRi87T#PkL9Xv$!m2ac_eeVTdt@|Il-Iizlxc*k9x2V^Xpqz*Y!|ye} zd+P3(-1Eg(>zcYE<=1p4A}%CMOg)?OTY@7_8j}~gU3*!+S^9-9!SjZzlk;c$6vrG_ zbN5b1e;fm9W=pVrY(}{m^tl_QdQJ%_^GwniZXvoKP2q zwh4XHpx3YUbg#WpQdeB?`1XyGb73cs9LYLnJb&to83XN`mXor}yN$;mi8u!dT)%@{w#GT5rbpa0%v1eq zA69nm+0uej_b*(mIx+az!=u8X`)F2D8p?LBvEb2b;Ot^CdUizG+; zYnTvcONq*SJ!5{#-uO{benXbdFOQYH;XY}tb(}tw@(Lf$ zzx3?nqQmEp)ErxUKJIS&{4V98j?TK^m@z3KjXJct+iF;|z8MWkqhhXxeG`Ow;uHM!Pb;PI)yx$Jjl5UPzHD&Az;RLE*%_33rEGzWC4K zdU{JdhwX`NbIRzSGwGBKk8E2&Hkh6 z`>>;Nb2Gnbb}PGW)0tU`sowZ0F&~HRQ)fxcuw?hZuB?5--P$LW14;)z8}#(M-0vPN zzklSx$(+qkraY^tGTOYpN|nzrD<&hkIyEM3P|A&j`e;q~>7dc7_a$3g3vF$!?uP36 z74`2nd}&U!^tZ-4db=ijj`{`)-IS*_PlJa=bcxwp+vlYLGHj3|;^+NOZ zEf-{GH*TG_DnS+F3w@yS`9Ab4ggx+wwj*X)eUF;(iu#h)MGNyL<@|kr`u(~GX}M)j zTbEyK_{sB|B0qR%bVc%{jH-;6(kqf< zq`Aj8r^f2c1u2?@4l#?uei9;0 zn@T?~x|7@JdiDcSOi^ zTJ;*;tdPX;jgj}FXCzEb>6tz;b6}%^jX!E+%WRbqnmQ)wbll^RE1u>xE6e6Q)89)z z-{kn~hsXXslr)J zUQO;3*VOoa@H9n=XR`IR`U5rgs{Ykq)bupH(Qwn+;M91pN?w(X#co!Tda1TN=-1G7 z5fhBFVw?%ewBn5BS+6y^+^9n%ZKH(DCTZi7?#9FiHFKp^Z7+MP;MLn5&%_*=@b})o zV^2P~^2yz`>MR)_tNZM}JJ z!>0{%Ogn0SuhvzrDK5_+^0 z#(Vmv!Xk&FzM?XrEV{I3*~H4VHCyXv+Jn3w3M-XMHPzZM-6Y)}{rq5~AtLm}u-1{r zn7a6B$ua4FW*QoeXmq#HZ&{nuS0!(auZ;+jk2QT)`etF!BiR+n$v=*05AQj?;Nt)8 zTAvh^ylZQtQ5rLo_BQ&y<)D_Wn>@~#mGXJ)(C|hd*idKk z;b3k}Md-6P@~U&kKdQ<(^|-n)wqkPKK1Vls?~p6e-=%EIT$ABQ*_gC3t}=XsCRsAw zwypL|MceXiWv`bXsrhA~}-=pfo+Bn@KZJn-ha9qgu!9^jThDS#g$4*Y% zo|=&HeWp4~+32-Krp$uWjfoSYQ*~3EUsQH4lRx#}YIWw1WA~0dKJGYcyOEUBw{UCC zK*^MlAEMnUdz&oDUe=^dM!VD=@e7T=8SJXn-UGG|9cJe!M~U@`HQhSMyuM+W`Qy6F zWd{m_o_5aL_~^l-U-H&I3$OUO?p;??#T3J9u{)FNQm>}Or(`GfiP>jZpBq!lKNi>?iK=v~sLF1O>LtKR+{M5IgBPtDSX2@MtXZ&mLu zIawH4urzP@d{fDW%Dza$z{kUtBFBe@HeWBUaC3iKleOSnHyzca*zIvY(A8 z5DI!04J~=GqDyVPb)N5QRb5D=Q62kB{OrV$2`i%u!zSye%D;DiYw2CLr*d&==hAy+ z>6K5am(*9;Cwl(z`-I;VmC6aKWc5b1M*U2cuIa9;5Aqp)iD({uFD@%NBmITUzL}1U z^`Locl7iy8MGXl1Q*+t#TK&kX_e+oF<=h>5U3vB8fBRqm^WOT$?-ky!IA=R0JEi|9 zA~j)K+U@i=(srl(lXyL5e8k$|-<3c6_PZ*aZ5{V4cN>PAub6WidNi!6e^@ua`esFC z+2)dm&y2;dm5#1BQf;rF>U2u`X$OYtjca2J@%izSV_%OP9&$=G+dstK)wHa#Yw3H% zLyA8ynN|LEjm5mnIobD>Fj4t8^znPNZmm!Ay?U*>oA!oodeBb8{)nHV@5W^%nNu5Q zjL9fW!@NyC5FZjfI-<&ORNKq{m3d07t?ER{*xZYEmACudym<5O{l$6b3qLPy-w-3o z(Uci#qJ7Dy(w?QvO8zb}ICe-xc5rLe3g5fV=?=NWWx3SwhIx)zX{xBs zsoGZYY3YgLE2T3l)>qZm{$!2vols2IFAbX-6(9RAB=ij_4L=G zJ=J#|Erf402SRVhc1Q|J`Y3UI!lu|uk!6N++9kqHSoe2yHMd`c9M|6_*fMMu+hbd; zd8es&-FwyM^7K+w+1KT7R7|K^VR~qH`yVLJ1SN*wH~tWFDz{%3D@P*f_+!=o(MsC~&t0&k(D8KQ1X=`cwqG4WT*CJnD@7%TzJ&!U9 zmKAm@e6?(k+3Fc3Ox3&;9v!_VIx5B)+Ys}mac)>@@O~xE*x+18s{0+-ruMR}u zg}v9?7Gr&ysl4`d)y47=6`xcpDpM;L)F#;Gdvc|#RSSa(LQ^6SMfsv0MD#Xn*G`tF zd5>DF>P|un^Lnwmcwfnd@|`sjbGT!k=cZ(u;<0*>wySogMyF|_j#AYr?kf&~@6XgO z2yz(CM>LII8`mN+IQiS;uF1=j;uEXlUW{pNbcG)d>lC6@cksX9QaMkVBdXdxYm>hv z*ZXkeqv*V^^S8jQ{HXd1t|_o&?h$&#xHfuJ%(&RUVunYx2wxFYr)(iaOHAHacMnIT zy~g&AZILa+e&6P?jB9w!G_&?m)rE?Q6(^ITln*HR6uVBV%i2}Xtv_a~b3OE}m6=pOYO{4)w56J5>IhXQ zOyUHaL2GLhQ1Bark83?RUNH-T(PslSvje8Lc=lp zO0QZNq1vD?4!srLfc*ixVW}=rvBlrc^?t*;s)({1#m$~2KighfUb(GypShU}*02h< zdZfM}=(C_?eM{Xk%`eI`^7isZIK}ss;wR06pi)C&c;o0haS@5nk_wZ%Cm%_8BW_~s zFVO=c3&W;_ZZ>?RmC5dV*Lf0L4W{$umjOL6@6qC%ZI2aCrsS^9&#dTg9_~~~sx&*p zo<<&u-V%2y{*Bm`QHc?~gU!mmGMjXjZ?x-m`#Jmf_HXSo9hJ@#oyzSZ(t^+MegoH9A6f2cFU(RPDulwgIgkpbABN>}yN#sr@WyJ0Mg zF~{qZN|PdzzEAih{#b0k=pP~n1e`d196Ve-MUY9>dk@+A)Lt%`@-!j09$&6JGR%} z*EZSuf%S^HmuYj&>Z)566Ut&sx0hY1{INE{Ty0)D6?3EXborWUL%qv7)$NoR6+Lk-YOr>jHdv!nO@JMpP1;N<7e1Hu zSH!EM^sNmQ;mx8B#tu*TC~BwXi`j}v-JWS;lT z&8ij`&(5!V6!YlooDC0lK9D^LE-A0pSk`+7s$K}$5OF-ll&~SGcjChM1<}{SJo?${ zp^7zIV6*X+=*H~1o!MK6uL71uc7Xo4=`r?`yR z(b4^ktt0$l+OUlVi{7E!FWKtd>v~|hS^aX!LTKfW=4^b_HMi!`v&TWt9MvPOV>~(X zLqT&QZbyF;?@KI7OiFkmc3xy$$Q{jk#bs$DZztzN+idK@Znfsxw%NSaSFHQ2g%+84 zp=p0@NXLhr|AwW9>^{U-}?JHs_RZy zy!LDxoHo6fcPQ7EbLPpD;xDU*G|X|v$WH0PLia|FkDZm!CE-+@J=z;SE_kkHjq@Mr*+3oN9wzq7uklnLVY>X z2F2@|W7@y8THQnKPwHyfFn@RVSo@iV(%M(63oDB&=2!k%y{*pHaL6{!{kDIVFii1O zwGyWfI)GEGRsJInlRc4MhVPDxex@#f2YsmO1<(_zWix zz5BlWjJAUzJ92o;yx4WI=VFc#$V)7D1d`NK^Pli5^jI@~Z78j*B&NB`ThpA?I63SoeHkou7FH(75(*fN z8PoRKBQ;}ceRW|CZLI$~%H4nXI!j-azo9fKgH%_Q#fs~)2k^R(EIH_V>h0m%>+dWb zESs+^(42tf_NCDI5mSwGqw=F(i1tP$M->^z8;!;%5r-niM6Q8`ZnS2(vXkNm>1(cT z4a2INmCi1DwZYATH$=ral`tdxwQU^`eyaNn#R{>H9Rms zur6^9#+me8(qlqDoV7J7KUPeW9hCI*z2FIP71@ope=YmWqs%4dHP&f%ljE3cg=e|% zq2DCwDSRVXaF#X)-Y4u{!8_Wc^<0Df(y!hke=lK@e4wh0wn9GvCjcIX>mth{cN@LN ztHw8sql~{9KQrEm{5-yp3Ns56pPF;;KH8D@ z^x4t!Sv3PKb37vjoa75KhW#(%V&oUFx1SPL5bV+atIbiJmfgj<@E3e(zOMe!{=a>n z`lkEel{E2x?lpR{UH$A*OMZO^(-*Z3)xK&=O;laADZw(=k?x7|ua+*x?%`^6ux6xM zr@A43Rp=mj=xyPi=m@fDtlwHDSl+ZWu`agVw2yRdb(OpKdS-aX!RxRikdW?^x?UA)koTj_-t) zhy5HL6W%y9J$SFKtG1DPoMNSL2UwaNq$RN6_X&2K2mM(#S5_n4;x~KlIw#w_4HDCZ z8e7%kN>{~!%Aczj);(!hX1nSdf-{;+WwP-v@bV zR@JJ~4#g9SVhTRX+nfJ&;m%TNRkZ1XHN^dkq`6|OW|w|Y@Yf+{LskUu)PJBIpt-E- zr+f!{d>;xS@I{cRn5H>I`$9f<=D0BhT5*eZ(`)_k|=!cuBECbwhJXH!nyC>21)5t_yXA zz8m&um_IBjyifT4@BtCU5wAvmAGs*CeL~xGwrYc#k^d;I?)?cjpvFwN9zl(Yl zw9C)SA5~OddZqG2ZKx&3dBJB9MyYJtJXnSw4jvMm7<5kO*V;7G)O+C(Vuzxs@{#gY z)n3&{D!sb3`nqbia<;sq@Txz?GZni$hK6Q!+o~T{)>bU77*si^`d01M`WY6Td12b>HN_3iTkW)uP+B@EUw9Olxdo-I-h=4@R^VXgE_P?>{HlZ zeiWgKycpToIKbH4IM-Mgc{5yY_)+iGM5$!Lb$5+*zUgw+ah!vB{H#Uck*7n7rkDI! zKB%f!U3bey$J?F{Bpu|H%0JW#v_9<{?Ro7G?K_%r>i?+?npo`y?SAcx+L79M zT9f7%SjG;N&ylvq8OpVGt)GO4x)i(dg7um7mCG2%RKf`&4ju8G=)bJzU*zCL!28%e}^Dp|^f!z!>^3ABrUaMjGPUE?!OE4=)1ET>D)V=BSE>h8-YL}-hdxU#>0Fjl zvAt?~oz;BV{>1%}q?g>TOwlaTE!BSu3%GlrC+OOrn1|JWShu}qSM})X{OYor!FBEGH=8fm&N~10yzdua-gTE}_kzwRP$wB%c%o8r1EM4P2gz|74z91a~4HZ^QU*ov^mVZVj8 z3av04HncDlhs+LX5z;w0Bj~hts``-P9oZyFOV1#>RrvU=&e@Uo-A>9jUD`>A!Wcd1;TIhD>0jx@(sd$9d= zTa|UE^^P^z_Lj|TJ8n;LUUY5tEb>j3EE0Cgi1kMO_}y^F zaNMxNFw^j+VZGr;!@GvtAx%O)3pVTbYyVKm6tTh)-+I?9+sh4eYfr*kLP7b5Wg|-G zmsM8WuD)7V-tdi0>)PbqB+ZwPR-J|Y#t7YR-RrtL+PAbjG&|K_s1_=3DV8g~RJ@Hd zZU^Lx<%{I+%B?tYx*m=)=KD^1j=SbKTG?7-4R*_Pt}d+3TRWldEz{}x8RkRQ&JLSv z11zO_3r*y9#dOs`^(ys5bunz#QkB*6H8K-C5k>eby?=TBcFWu=T-mUXIN|)+`K$Aa zvk<40{&KE@51UcWp3Wp^gfqz5)w$m}5Bkabp5Z>AlHg3uE6OA48m&kFPw)uC&!Jnw zMul$tNy%tWKC(!p1L*lZOt{-zZ?d@<@ACi)>Sz`y-zbsJ6<$FTewAv+}u6)wShn#UjPSHm0H824#sKgVU;XzK~{o(5C>n)(^_C+gpCm~Osr z*=gJ7_|vt)^O0}7q`PoVc2B+vT90t0Q?W@=Emz7@WDz*A0t6vnystk_qF1|TxTD<< zUC&%0ZUg9M7OdChp7x#(Jcm7D-nYEJ!{gWqUoZG8+%8!r-6rgU9a>-IUn-^MMeTgu zCA}}`Ves1_H6g7Gqd+fGaCR{-*c+q@(nHpHTa%{Bm5&w1OUC*R!0Ss(+ivWLbv5m* z`>Xcvn)hq|SDR?MSbrH(-3yLH*I%CT{y(IBW$Wa%@PhG%YKQ8ws$R7jUL2MvRm$7o zo^L1w#YTBExk*+j`%&h`Sx=3$&cD?+*!#QtvGb`t&bH1HWmYsq)c_G);O~b{-7= zE~K5|9mDH}ijb)x{{(x2eEM?T18t2)t%+A>t9mE}#Q@ng=_*MN|5VtqHioyHe=O5r zLkrDs-J{xRb=jsZ^%omXTMpSibHL+^_dL8M^^p%yE>Nvg>olD-pJ*Pd-%__%4OK2x z9EXRaR9P>~6*)XK?uI|qzx*Na`RIY?ra2fV_0A`bKkeIXW34MJrRI0c_J+phYvu!% z9abk!H1=`Txi5PE_Rp1G79Po-$&V=dE4wK(mH#N(DBi{Fxh~|uUz=3Y$A8S%!dK)y z?p+I<^xfV2YyCyCRJukuC@YeOD7&b} ztH08GseKXW4Z7)P=tt?}^%rylb(^#mnx@bOKT*A+I-=~aysLOmu^#8P{z1QbB>Qmk zZno!BS1x=ctg>ZWcbRJ%@*Cbq=`UHHSli=V=pOhFI_T5D3*`k^r~M$;DTZT&w7>{y zDc>V&i*&{a9-P*0E6tELg%`v+$!U05jKN7F_}GD;!iSz5x5=e&B|3Y7GV1MTV4v{V z*3AB+{dGrgCr<2RE%Lf|B+lOC`PWE{($Pq3zjT9iy0i=YD4O9jayq0OC+qAc|*R;#DncCBuF`5nPLRClAM&%+!wp=UIW8HnpKgSp6o$XF^b#v}@=>VVw{!oCj8Y2dNAm&VGU~Nds`T z@4=hxMBvTWVw?=|b%FoPp1xM_uXzyOj!yY!!V_qWa8}qUnZR6SD3 z)Gw$ztFzU~>c(oNS`H3(SoIRlX7*DaR^-WZ;4f{Fw2?&RKkNO@)6?C=HN<(`u@dL? z+c`!!ERLnl!LCm3(OC7|g)h?|{T(G6Bsr3PnCU)v?zF%k9BlC6C-OEtIIe<6>?i{e_y^#zFEFi zzFPi2`B-@uc_(={_;wf}pC$iUo-fZ*j8)u#z55{LhssULt;)}o-Ib>mx8$>BD}+7L z?H63`$7A!fM5|u$ACQcI-`20Cy`{b24Rf93rhkdQ zssAKAgSPXnfG5}#{|tDNeqHjHVOmx1i!{-;7PC@&fS0P-{pVL|CawN z@QhB9#gf~SDoL@VPSOUxC!4_Y*nHUITj5K0q(2iH1#z1q{AQR%bqEo?Vc;12%LJF>D`Y}dOmj zL+&>qRoA&HT%{Nb2KT$}Quiy+-E@Gr*|A7}DlG6PfXXIg{1-@L;ooePa6+K3#{^ln ztcPrn>{Z!te1^&T%eu-kVUt@f+(J+87QPh53cZDPXqh%bh7gOsOM(Bz{|Rg0`|TIu zst_w13{P1ffr9mvg<&kX(8uw@M5zuMoyn4G{x0z5_9^ICd*3);OZdpsgVL-8N9yN$ z&-XsOyteZxd?(?}w23#-`xxG{`ooLg7|$o3#qeLc-{Ztd*=^o@ui4ua@!kSgn~IoW z@MT;K&#E)M9dRnNIXu87c~iY3y`R7rnZoxX&fDJiwTE9(cmUME+|cgQcvP4ZYpBSpMIt}w}qv`Ubo|}-;mbi?rr_M;%0M|svhS+_4SA2cp zMO+2%ziUAIbnyAv8{UE60(V>p?~F?^gSSdANUNk0aP!6(v9Nd&e#eOaSIB|(Cq$Me z>mchc8!DSETMO=VO7;j`s#;bmtHbwG*}t+A@LKhU>==B3mdc#68kt^hkSEHcI3h5@Bh3*(d%*ED1`QTB+#C< z@s9Vd@b2?I^`?UgT=yCL@UIR3@QvUF`6u`Vb%L5Mgcnd5#_>DCe)Rot*$=XOS-O0* ze1rT6d?Yqkw8Cnyv!WX$ETf`UejZ$4seHP8usjX2xdYs~T=oF9KP1}*-*5wE(eP;U zg%BcqDmB5^@?H4JUE?eB4)Wgftb`}qFlaE(yDQuop0_+3J$W8AM(T3!HE$8DsO|8* z@GpK%^Y-=zdv9Wv?)0qjeCIjjx$Al8al=pa3`lafygsiE5^e{K`@z0OI4`KgjDLdo zXEE}(fHMB#J%dn{@RytE>kI$jyD`u0@FSk&@9Lih57j@yi}e*?CdlB$d#L0y_%6Q( z|HwVyarzki1-BL61LrFhnq%(nlRcJc<=y2U$+ydo%df~U$WO@kqy8Vu`^iJ(dFbtx zviD?TWTQbJ2IBvG(8X_LYh=?gQtCkm+6mj?#jq>R5#RI;@a^-;VSmvbqqWXmdC z!>0@_@qxUR{2r)WCcLSR5UkPz(kXyHIS5~n%_Jt!=wJOG`a8qNwbl37cM*P&2Kqv9 zcJ(qw>>!NL8=iHZ1)i@xAA81nUiW*4PtmU@yx)3fdB=gG z_w;s$uYgQ%GQP)q-+_Bk4h`0Iw4e$!5h?V^z~NAx1WR0eI-38HA%a`bM|V9|fu5TX+!P3}5aGeP6(P{r|uLnt;~Td+&o|FY=B-O|;$`%#2H( z-#vRgzj=;B7yJnGq$_H?-1`@NASL>GfImz?S_^z%!Qc5(jFhjirrC#8V4W|*Kg9n7 zkRO_WXXZ$nN~cPHlHQTprABytPXq;Wqt^?iSK)v6u=H2yU-08?$Lx<0dO-sD0v^nd zg8v;5_JZ>LAbci_Mt$2LUZ|iEe3%_o(hBg&v+&&esdRueRC*Ww+6MylfRa=<_>0f= z9rCS%kM^;?UYMbc(cf;b$y?^V=RJq(B+9?v`-k@*_~gIry$T+D-Sg#;V_t`1 z#>;kolBa2Y}%&$UK5 zU@ro1^he-l*CdIa0Bd>|?$0E^-@a(xGsB+;+++kHitsr%qLehYZ_ zV)W+QzVYyD@diBW4@Do1#QzakXO6=6NT3>w#rxU5&(T}of{&d8C#&_z{L%13KO8e< zvHxpG_C&cT1s;eUNGDp1rg%vP5T}USH2^ZuWXS}{6v;=DkKud&YsiK_Oa74DgrsVa zz91b73bq#Oy;IT?kRmt0Q#Y*LQTj6aK$9%R^_66;WRK(w&?CH(2%ITQgV*H{X)XA` z_eeJjNGHcYA4g)f*$lpq^?tcuh1QP673GgdjbpG<5AjQJ=H#*O2}=JjYJUyXiak__ zx|pGZ2!f0p<4-{fts&zK1UAJiq`56XbBiEt5wRo=NESp|%Rq}7fM5^=9H&T}2uuf7 zNEh&D_TzHNMqqIKf>r4sK%@9cvK~(s!+-z(B-0=T&PDx~LTdd1_4z~cH*f`ZA@q9G z@FO5s^hIm6!_^#ngz-p~SX)i-NdqQ^UP6?V`&h^Q=>Hs2|0wuPZjIGbBCZU7Ht5wr z{}@QxpQ6+&vCdkJUiktmgsJ|?@Pt0mKMsDh-$k9~`Iq9|I!IIB_`k#VSHMbGgpiBi z-F6N7@lW9CJcE24iG2G2t>9gh`a{VFSbh0zZeywhmy0criYR`(y@gNiOm_;XmZxjXM1RB$e&R z{{TkP1@O6h@KgT?^}UaoauyVMJMc7C{a3fIQ1ACDl%v<8(RakR4@Lj^Fb9i)DnK;G2S6bq7ElO~P}%~KWjK%{ zCIgS;ZTugGo_PUWHx99M0ZbSb`hzI@>ot568S_b?oJ5x- z>N4A^5`9MGY7ukFi9S;yKCydbh@2WlwJ2+knl-G!m`qL4!{!V__cV}+P@9KZ2sX;Q*g zs7p7DyMd_72=vET_@bYH&uhRI8jf;v?7oE7X&)Go*{D|r>PY0ltiWjFJ!{=GP;-9s zNmG0pp`BXbBHm$JU=wx1T@qJ_Y6jFl5$U%N?FKjfe_#8wxv$%&CiTc`Xb8MCot}YU_1}SxEqMk+7mTtjgX0` zvle58cyeaY1`(&0=z7F~CmuU7+Of5RaudrC&fd{x9HSha0^$*Ko~UNzH$)30rXUgi zOo2LxXzWBKBvmCY8)qsp<#|UWS|w^ttVVMAXw)YG^@&B_M&fA@dPs#_7?yc37xFj8 z<~SGdjtKM&A)+S|6Onjtob8+~AxJAR&_0dPCLE=yNS_p!W6O+s5@GOhfL`AM2O~`+ z{xDI^iTn4+{}kMU`0Ye+7jfI4pjU}AOziIa2=N$rSL6of00mJ6auxAzi9<;QNpdXG zCt|@7Ls3L4EXAFOnn=D41voA{{u8f}|1E*`=To9K63>sAjci>J?0N=|+d&#HFQ_pbdm2cO!bP7(+zTjYSGkptr>6 zO~#b~&XN9rX{5amABRm1^iiJl{Yr-I`(0e7a1L3HM( zkT6=~cVm271vp_g-V*_tsEp*~l!}RKoF1sJSPF6-q6|kOUlBW)c~NF!-T6EQr4ZYM zrD2WupVB8oJx2{TpasZt^nrGwoF=v#>%d;(Zz3F%+q1?=|FwJ~?ufHY{N)UM$fI~i z>41_5`?@^ctci9$I= z$xx4y@#1*l{;xR7*wU1?IVw`oa^h;DNkGnE*(gu3w0z6|Nr5nw`M9R0)XN&OtTD)u zEkNXVwiibe#|PIvlt|e=Q3y@RD+X~A@SfvQtS4KWcj7w3h*DC9Og9L5DiP8c$S)G#8q~!J{7(~T z2eEI7!0U(Z$`3RreU@Do)m^F z5iRbR134a7AIyicjtsGI93=2mjnrkhD5FtYm=Kfr*StjO!;B}Cqljru z{zf$B=X{RxC37Lyq7?Rjyv-4y(BvlMEu`SA4KLn_T!mbS7r7mI<#XQm{N9Xb%uB?7 zCa0sUMp>x>k`QIK;(%->%5kN*r=(UAkku$>6eBdB79(tV;4P&%5sCUK_#|aPN_mvU z3h@0fAQ@0Lpu8Zye-@Cr$Y06lD*_y!c-ha9uPNP$*x02=s~D}wvav;}Hz~qZi1fsZ zGT?p06yq18Y`mV!r?se8F+P;zY68zG_lmWotV6C|i2uxm@+hT1mazaOxDVOncHna- zAk%OKl^4jJvfg9Fp)Agrl*&cfmTe(Q!<1$65Q=iTC{0m*dM>+Bp1O};ck%2|Aobip zcuG{FMujC8<>(5Oi!I7@nJV)YR|C(nsi{X|NySwI(|z<`NySnzyeJz}*Y*T;5ZACA zj~s($TkR;Jt{!PPv)!C_S=f&sPbQD#fwF{GTBA+ky7V!E;Lglr*_AVrd_s6-B9- zIN;(cfbB#n^?8Z~2tf>V%Ch{hC)ghhpNleZJ;d=`hdY2%p$5-O&N0sQuQ-o6uPC`u zE+ReWr2~!O`qYjvY+p*uVr%6iWf5=9Cs zJ6J0mh0J^oQu8&uzmJs418qn=Z0e5ei1BOnm&=?0}&BA0XJ%{YF1q^K$J%taj?d!Ko;r>V1~R*GwJ z%8nwHVy=|kxgw|bfMsUOvbLpOIjsTGbhp(S2i%=4^Vwk z&q^H{rF@PuuJT!K%DE!Xp)5oWN$H1Nlw64EkQb2Fic-1{G1#)y1TZ`~y#7C)L;5Px zT&^)F+mqI^rW^^Bw0V&)QI{jGxi8I9#<7!69oamo^rH;TFl%EOd~ zsm&DIgmW3&3#-j|3MTv(o$j2$0QvMaCTFSg)kFn3lnb{*DxTujKZ)aaocB51l zkJ3?+rbHWq`{ykoYCkAXF%3#VY|%tWhN<|b6wDUaqU7A=;ktsQV98hq>L!^7B?3|2 zcrI5{W}xID${6f%u9o;m354UHD<+NzQFBV!g;Etq4M!4JbW+R_AI6U;#V|EJTAwqN zIwf)C$~^`L`of91;PF#JlLgv}w1+aI3_0kLHs>b$jVnOT1@662cH!KiCa(hXh-+X` zKfoL)D{<^|%}RZI*?+X0Yg^KA6Jn6c^P7}KloKeokYX_1n!xi4&{;7KwL09@c#2r$ z1T_fRfKqS;%b81^q7`vT;Yh8>$Ei;!1SNhF;7FujETt&Fu-v3%#Q_>mo+Roe9->5~ z?40YQBHZt&M9Maln_TWbG%VLZgYScO-VMa9LaNU|c{xI_Ay+-9=V7!}oMba-D{a?4 zK}lm_skaJ<&cK>R4jq78f5sn=(eM}{H4?Uh3AtWFin&Pl2Hu`R>23peyAZo8r$DR2 zP?GcLKO@e>nSekpg$H^q#@KDdG9u64P(BYNgzeaU3zy_$_v((nCD4N}LE?@BqGmnv zbD<3~u#bBa_j1Vr{0e~`^y64W~yAuX7*+=C-0Fa=sR z2W?P@&)tAbLd}?{(eoS=22TR!A0MJy+Ji<;g-wDME*1^14gU=-kBK3bMzk#ahz zKgYF9Qj1!W6Ic*S99xCpc{cpIkG^oBe~M5>0d;bt9UQ0y=TjBlXpvhPO71{OxhGZ` z$d8)pVvG%z!-Se}RFX$V$BB9ue~|Mb8Nmau#Y<$O$-Z9Ha0^nn(8+HTl;YEe@y zs1w(HqE+wiT`r^3PWn_gCL|M!*8x(xOU`jVGMdm56YSZniT_T8wVN@ z9QZ|w6pRn|0oAAtdy~9@`N@$s*I?w4(fCfpGZ~(-t(YFUJ}H?LG2`$?g-~*QDEDwL z&=?pOECJ~hxrP+~NzWLT|AP^V6e|eSS6pjR2S9ooi>IWO)P#}Sl5fWZYD_HxwLeWj ztBqLCbLWvdi_rg4rM6v;R6_#o!Tlrd^(J9m%{>{e+?huV;&9|~>~f9B^`{^6lzf=H zGX*tD39QG-J*fAIM+nw|BgTrkC&~=u7e?@~W=Js;@u;C9_f+CP*R15JEK54tg{7os zg5`}vUC8OkS41s5xf}N}DUXR%>ns6HDKg=>>V9aOGZd> zy&sNRrXnV}UT6(<6LTN+sor1i$-%QOOYbV8j?&2^cOBoZWi5g+4SrEA^dv*k#2fRbqNs~)pWg;6g-%}7x>8$?bi zYW%tL>ISXyBQ$r@LJ)^Bb)Z5vgyyba(9O7Uh-zHm$zb0DIJI_ey(#V8;~P& zJ;PAUmEY8ra}~waQ!#Q9cMU03h^uQ#1l+;m`cYhKQflCeyA-)oV&FHQlmzmny+;8` z$+axMbMTv7zXWw>X&VrVyON@;kq^Fg3*1rMwV+hNodj{sCGK=lW}p^>D|oIqSp)v! zs*@Ui>KmSabA6wW_sox+>>1v2rO#C=?--7pky;0?8pV=TBDFj`W!hH|I}dM8fFHV1 zcCJ)q4!PckD#d>jV$yGR4eRl(8zK7q`nQ*mlMJp8}Ry|6`8go6(H8a=Bg@{8w z>cS|cL`u5Ku|)mGBS+zj&&f4N^{fb2^k46=t>A(ad65f~Ymn!d$QnKT!j(Ql%b+i}ZC?!WFZzs(aS5D%p3~uoPz02B(x-u(f6ZKr=C8XkNP$sTT z?Fc7Im7EWv#LHPuzD)j29vXyNdB9^tX`1`YZg42l3>oSZi7;MBDCAR4q^n0exR8$; z^|c@sQVX0EL`bfPsQ=c0l92k5lasDdhT{CDB(6qo69YH7(5LDePhb}PYWXQ7sg}0;;sw15iLHraw82CImrL*l8|4dyT*$Gw_?AG<>)U6nA&H%fsi~4WXu3497UsUZ>*?-#xe3XbufN z?FgFTX;WP3h}9VPTt6}LwE*X>rmvkaJhqJ9I%xv|4%rVOTqsmHS351Nk*azU^_}8oy{O zLMtpVwi&i6I%|)9RrqmJ_Z8Mlo zGkh3EtY4eJ9piH^i|GN9l`uLWzM9K^rfQ7^ci{ z;+_-7C3OKQfz;U-ECEZ*{WozJit~tLp1Kx>rgnq-F|>){4xK1PGK{#}$=OV4hx?e~ zo*Z{isI%dWpuU1>ai55@l=3vCEY3!16S&L6*~$OZN`!%Wi1t5}@kmc8nUmH~&%vEL z>OHt4Cd#kWdT@7%+5+BjT|i33|Ie+jC{c4ii|_fNPKMGKC2VRYC;^F7mRcckSC^{^ zQDZ@wi~1_=9*cS_?zT|F!IUT!GaT1H)U{DZNP7b6>-fia)N9c0lj}+Da+8~gyA<3> z62mbD*XpFK)K9o@Px*%XF-(JNKkn1lf_qVV;C_Rsout(fs(}(vL&-f8u2{ugcu|Wj zYL~gQA?lxLhex|QhGm+JLHfNaa`4_qhrp%oM)|!$NTZ1jd zeFw@KcLKH`S0T;Z!f#4`EF)X46uD9xPu)CsF_;dmcSLedZ6&q}EkeY7u&V!G8_LL(b=fcCo(}gRI8G_AJ;NQZl0fd16#0y0$wwUC^Osl$ z%9fk~l%#|(3I*67vtUGfNEy`Fsjw?Q4 zkMP6!!o30RS8~Tp94X@d7G+JAhohhSIcDS`?#yxbjbWaTW6Jd`aXCVAZA1A_Twy%7 zhUOZ8vx_n+Qx&Cu(f*27HQXDZMxV2@0>3E_iaV9u7a)D$_@Q=COo?UZY!>%6Im`KB zJaKQ8(l7TZNOf2u(E^D7xn3hRAXVTS@jcgiv>)QG2B{5Wio3ER?c;BjL$m~=Moqj} zYSK56#)Wasiz`MCGF%l>85BSB+ zdV1=8`Hqy4f26b2LX)D>K1h5Qc!gNpwIDyB4vCbV``zRT)GSjoCfXK>{~1Qyc^CPJ z>_2`W+Ft(O4m?xhMV`Z56Uw|yncRur;z!iMlPhvf&iB0dOVsX*b{XWa);dCGjx`cYF)u1QWz`yu8+4$3_Qa!yL;;tm7(G`X$F z=gDpy7D+qf*%Gqv|vA>W5C+^ZJcJ} z`KO;GE0NP%$l=w%$)S%?zE5zLco|ML9gzHvF#9Aoa7IciO~;wAH*iLAElx<~OQkrs z{RYlD76=|ej#K$X!cO5UoB%%|{aRx3z3=JoSY<9TEvY|lF1K#7XSs~N1wwOGj_z=9 zUGOJ*mwJYxN;1ha&QWMlG_*6lZQ9)sZ0q5A=1T#Ne3I&S)o}GpwO%zzK2EyJm+cwj z`olREekxvd6gr+cquh5qTK{oLne?{si>ydykiVetDW)nifm@X!Opyjl!=&>i)BO|R z7o{ssRkfDPk=}vNzYfZWDx=1)>7>om{0rYKlNEMZ8T?}`mpUc;CI3iz12y@!Od;PT zYb<+Dxax22TwU2JH}`h(!;a53*NnH7`i80B3u{R5H8N!Xnelo|bA22CmnLiRhfh=U z-^)9l->)HKI?4=7j^(CprSoeb#BTMxF{zx%c6|c$Hexj?>extdg(kglb z^Kh4Yl>Hmi>XJ`#rrwx(z36^?(MnTmZ@IcAVqr>h_OGp#Ej~y$MVt_H^=FF=xzq0# z-2Ll*Wp3l*^!m>w<3pasv`K8AFc}C+e+JLgY?9S^6t?ZAIkh9|QX9Ure&{&veB^w^ zb=iH-=lFjdon@30Y14+2PHVb5ZezH+>mrLg%Zt0ayDjdni!AQ2xD4(N0|NuYFz#{p zq|-^hI^UTy|M)S@V^w!m-4`Oj?+{1Hnv{>44E(@1%u;G5ni-oP4*PHWX89ildW5u* zb@A5NJvvh!RNvE-syZufO9!y^X_A_aw-K!ow1Al~kDvwe1(^u*ruT)sa0fzzqv#N1 zIMM)_Ex5o-{T0oZ@~&iz|JMKK-TaH@N5RP$rJPf#V!i#1#f`t!_9lIy4hDOe%=wQp z)4#XRIP+_1q1@Jhe<$9h-kHRvEKbZ(zm|2T52E{`vfx6G*@?KOdAj)r1ye%aU{a`k zcsIXX*cML)Ptguc3rUKsOs1FCU{df2@q1y$pYE>i-V2NmMd)tyGWMOls0t>`O+JPc)*wQU^%{GsUlPr~PWT$5N}Lde+(W z^z^pB#+E#E+M<`~y$Ne->~FZcaY;R66`yhdg1PP&TYkB}slV;|!RNd$U+ftxJR@;x zrOBt0Qgpu+LFN+PNI0ASJG9)t*4xdy)OW?dGLRFH2M-1hhUW2=5j8o5IVs%(ROL@#SwhuBG(n~rrg$M)Pp>5}U~%M@;B{cMz5x>VI2e~xhuZD_L7pq(a3NCf#dcyM-!1Gh*Gsb$yRrqg}ha z>hS0IRy>R8tmvmnNqCY-B(~B%P%e_4V;jxMV=8W_I3Y==n$MOK8ORMjA=JXR&E3a2*Kx*C z>Rjcvcuxm|`~}fndYaOrlP5n-nx62t>R)yW_K@%DtK~Rmd1*;;boO=SLuhyQkg6cD zQ^ih|*Ht=}lC7(t+|2GK>!S|^ccR@QY2oJKrC}@Q&cYM(vkyXRB=51Z5Sem}9K#)m6LS83ZYwZ*8GBO9NomZ=;TUu$*e{P*?r`;H$b zeEsnIX4wSyzwut|8C^;xx=OuDXi`CzO}CX_FA@=;M6$Fvn4P)(oV1% z@6X1R#kwPjUv(E%qogI&P?03sEO^^9$2Gv!!>b6l7i1HUCDqiE6E-K^Pacr0O025M zk|UDd;uW|7Ssm}lj}EIswLDI!jzHM}2r9F*Sv_9T8yT#}_e8Nclpxat-G`;@2hHs94X!;|oh;p`z))iY+ zM9R=gZ!0Dz&(atrA>ts?GuD!u8F=cs=X_^hV6W~xy% z>n7Ii-l}1{HEoVGYFv4-^cnxiB+L5iL-b|z_5HMXPJMGUxD8z|eXr|QK~(8vg)50q zRF#?cXm*_8RpDtsxnXVBjTMY0OTPP5Sc;^Iv*mwlGn4+S@T20Sd}Ke8krhaa2dy4)txFCh>9N*~FfSHxpQ0eRWUSf0R~KEqXTe+86YE_Tqtu zp)t{hqBz-95|u5JePTwTwYW`=>19)Lycs*wW_^%+z)0*{V zRWB&NAbQW0vL#uIzb2(kNzeZ!FYV@h5ZQ;VV(rRX+8esAI-TZ=JVOcMbcxm z=oK-8@ygt)pIS80k@PnCU{afe8S1F?7ui`D<#PP@J!?Jd{oe4SSQ=7+h=bSTYjIE9 z9N!n3;R+j{7ty&hvUdHL@crv|{qKePw7@QUfAaZSFB%+f@K>EH75B*xA~n4o%T>Rp zryu)*e_xl=$FSdH;lHAlnSKhHX1MmSrmE_h)FUp%pNozQLj1Q7<^S6=*`;-D^9%@1 zj`S2P$CiofN-rtetJbU1*P6X{#}}tzd8H# zuU$WCX0(Q3Ta~8+u_19q?H>)}4QAA`r_@yLLmqg9WdpJXrZ@faJ!5FWzvh?zd$Bz1 zpg4`qlf~rO@`v!|UZ-Q^YMepULIZCL4)9%cHFBPG)%01y|HS3!GjcwAO}0=zPcD`h zNDeW(sqgq$v=G@1?n=dixq{`83o`KDj}_mPwozjVeG{wb`fEn3gDQ>knzV!Xx#$ir z3Qq!m{ck}n_naRbmkKGQ6#Q`~$IgU?IVHxrMJd_IKc1!?O1qGeQcU>oQg>65>SQ;N z*GFrNO4`f5jy3R{DQEL`Wg@>e=hiB#Vh{RGah>CXgk!Nbz7oLt(BgYoMxX; z3ao!z6~5&0*;8#=#}AJ@?1+Yt=EN{@F70HGNDoPWO4O1z%sufE@q6(>Dnh)1TdO2U zggQr)(Gv_On+3^|Pq!)QY09M(yH2i{C+;J9$Nv>cP1fw(nJm3*QMqSmolf!?kuwpBK-Q|aHwO^+Tm4BrUbR~>jqOSN5&sxS@Zg?0p(dikOig86{X#oUJ4!oL z>(!iB2Nmxnn<+aMLxu>42_MCuN1t#_LJI>+d>P&z?jiO|<~wD*OS%`^3tHxn%RZX> zpxEZ@jeJxct9rV2lNzFm{gid6+HpE`(0#?ySO1{+RME}S0>c^G5NDEy^*;!$5KJPb zN;|9HYu{)_DqG6#(sS`b;RL>au#b1VYoI6W-^q21V7x4{K2pdp67<1liN~>bWvuG6 zwt@DtYM&IP>kt`&k1c6XI)qYiTb*1gv zx@<1GI{GV+=;~lzQ1-fLZPD%0HhR5jk5%ia;F%HnBD_o=RGm%yGkI{*G3`CYNcIeI zLpY6>hUWQJy1njEo?o6j9=Z25@a#wPX37<1f)X96)|4Jj`(bPe_G1dJ`}nO zltn9wu0Yv&ussk=7FB1PXr3o@Pdum7X?vKHVhTMHTNu9U@8VtHY-%59yJ2tS zQu)4yV}dipLLk^YSLNvLCzT}6OG;H|NVXGT^ofrrk5IiR1O6J(#Cyb&1&^?fv_@WA zm8CkY&Qwm8pJTUE&G8eWd&maC2L593e~v)u+MH283_rLZDH&PmwZ5&(o>u-X*qXK{ zwyb)n%IJ!&M2&i;YJu{!th0EppmOk2wwBf#4zXVs^`grtC;gErW=~41Dm9uu z+K{e9_m}oHP&rT0J;{AoZ&5DXH)hcZTtzh&ucj)KlYnYImJv#tf(LpJ*$Ht+p*Psn zwbFF7G`%RTpmpwzZzn$Hy$yYunqA2{KE9uMr8=%VmH2P+KPiVQj7vF|a7&RPUV=0Y z)6PO;LeapSiCI&#cjVVBEjN#M&kPmD2vJiiLpnz7(~V4Qo6t|wSGf`BjLWf3aXj3@ z$G982?z+_8+WvW=3DD*=0Lj3c(6^*w#WTfzWj&=wMQUegJ}W;v z^j&Hd(G8d4rT7FYOFWfk>5t;gVh@NF6(Ya9YI|1so?=N6nj8Lh`MvbRhqU!M4XvH{ zO5!=P3+r@+{$K$v~x_o|#rg%8V~T3pVHJ~0Q1 zE73?gOT}pk-7yWX%2b9G%cX0neBtj14eslaP}9f-?s<5Auprn!@{e#D`I7F+yk@#e z5J`90b%j)QND-Euk)DtrR%%qOm2aWB$w>AjsuTT*w`3)8F=Zw$qW1-R_#WZ1_zZCi+5c2~6MiROt#B?WteGJ@g^!9p z^X+zAH+?RLK)YN}-l}|Ud5%$O!#tJ{)WwKYy0f%ME>ygf*OB*?9hIiCtLW+E0Bjuc zG5#kw2@QqOSNOM2`0-bBN=30os&&Evc@#pnI%*Bb&$!qz|&Y)GJiI zlx?MLfjE4ZHn4k`6GYSa^I*vP$lcU=3uwFEym3D>(nh`C@MU%O$g(}oO2Lxw`$&W6 zG2BPjQSL~tP-Q_iS>;_xozzvRuRu&5AIkFrY|cK|oLRoAq-JsD($RX%ih4?exA|l7 zUZMtY_L?(wq=V$i3QDn0VUa~8|1li3ne0r=$KPTlqIyUb@X-GmYaV^UpNXl2SI|*p zUwSaRhF!#Fvgzy~Sr^q0-QuLqNyid?t0f?4?q$O)Nk7EFqbPbLbj*`tzoy?%xDH76 z@{dhEuKCs{*IQi8+{>Ng8Sh`jMbO5QZ1vWP=c~4=l9H07o1*B;zM@#NF8ULQ;@v${ zEw{>YioX^AU1l+~v#hmObA{cvygU43!jodj*i}X--=#P#A1F(eY?CyUamqL9gBnKJ zkg*YBJRkcdDh9RXe!N9&4Ad}m;1}csCz?T`2#|4)YA@>Et68NE1WcXgux@U`Rqa;! z2fCHWAA8GBikuIMJ#ur8!mgPOzLdV3@Ui=MSH7Zbs3~Satv&5F??M62j?%oY@T77) zMWm~#x}>C)qvQp$RZJQ-I(94A*fr1muijXmrZ*Tp=4+Oasg|j)*0i)sls#y3Yk`p?;8`uTaW^uUMbpUZxqD?O<{ zYz&qhD!f-z-7<^I#*(EMfE!V$s39FF3oBP^WV)l;AF4kjdi;~13HQc_xTiR`JO6Md zIzv{S@z1h?5=Q^VVskeMf8}?BTk%i920WM9t~jKdob)^SRZ@e*2fBG0Mm1D5R&i5O zNMEKHJSc1*8w+k=BLp#|BYFkBi3WhmIDkfF%M$)fJgYmY@ya`~W2jD8Ytb&`G&pPdk;9@)WCLiBGPD7iM>myBlTB8v zS2BtU>{61%I-&`pQsIJ_EHuqNq2&GVsy`h$^q#>2f&;eOMMY906+B8;uqit|C#uPH4_a$`xF0=6grOk;!G{yRunDzT2f?~Z5d%n zF1h;aR93J2b^4R`4T1gq)yN|*JMthl80kr_kvvi)sZiBj`ETYvIg=PqyeA%zZ>UN5 zpYiU&;hs__>)h{3^cXyA-9sH)taB{OZ7J?a!Cbz!@SErco=*tLMbsC_XzoqDe~X)OhpAHp?o2I%Zv~=Ab%0J$p48S)7_bG^m;KaE~jcz2Z{CATqHB@7Yss_ z@%n+o_Q|FVr5%bV7G{@qG5rJl>&^KG3-kpqOW#_a`ct^gp>E;Xa9gbue8mXbCgo() z6&>U*b{svLV#FdKD0~&yBN60m#1u&OJ@;t6Z+)G8J%QbG*w)P|w)vcsedEK4(Ln<6 zMF(HWRBSiZMD|j1NT*9UrGBe4$S=#*sk-ZqC5_d!Q?zCin0|CXypwLvE@5wq-;rmC zgM^GcMy3;qXdU4?!8LHX9voAL`*>CuM;88*lbwH2|J*dgP_=k=eropIoKwYGXN^FW z;Gs~($iI2M%o?%*qz1I7N~2w6czBwxV3&Q-9SBOZcLF zq#_hD>13t~n;}uk*GYG<%ji*5oVbaH@Cf=InE`%ks9+iYIq=jq)?B;vRbjV+lHw0~ zlc7fOp{$R;uH^i$xP!5+`(EI>zq4;g@JZAm*n*kG&!wH^&*UBjq3A4IDY?ovVgF$x zl6+PseuL)67egE!2|Wxi3?B$K@>Oy^uv)EM?JCz0@2X($@bb_*&K9x879+!Pgf3!6 z$T`I*#T&Ur@mjS&y;w6@*FQn4>!%4SXUQK)`^uUq*DLGGOPD*2yo9_>C6qD8u)e^S^CD+_-qYgcmb1RK{vVzV{;lDy@Rz%= zmvk4&ciCq}o^qj*0o@XpK9qiw)s{DvE)icrf5m(9^CNG;=dXa<8YuO+ocrwsc9-L( zi}lX-T?`HlCvdI8&AH|AVmu(OF5M|_Dq9Aul0;<}O`-N^;{C)&33auj)K29n1+A>1 z+OM)GzDa#d3%UaJlK6$6!(Iw2@J+!3azx~q-{-hz-d-{$e{ya~VQ2j%Cu_ zoUcWj45ag?_qTVt_jDkgyB?j1948;JJ{hhU1AMcnyrZnQw5`0EvW42As3F-${t_(` zPKXO)pTK+a3pXq9KlfQjUHcY$Z`U<1l4M016=;(KC|m?W0LeTI1aq*HEvWU)Jf{-O{Xtl+8b ze&>4;dJt_Xtb+X@T8VGcqnR6$5%718P<7J`PoR=>lWruaHA7Xny1C{(u%!m6bL873 z`?j&=ZN@0+1S|4N72lv>)luv_l6>{I#rVpZvpJS6LGR%VX0-QRD~78tYL04lsq<8bs)h1ziOG;)ZB!~=a>SRISCY0Bc#2g-DK5OZ8ej%dvtpe z4fIg8Do%T5=F zvRnMxl3iX{s6SltIOp)M?^%lq()Fe8gWQ7f{m|OTcX)-~lY?Zn)POt7W`gsT`(2mHX5W69=b+k`t4dg!7uJ>PM;qwMv_~p2Khj|tTwuE2svRJKnbzyU)33-EkuEibblnxPp+5J zBdNPq52PMcGh8)CUPJnZRWh%s{)7UJ3u?!j@Grt4{}CWqV9AeOmF+;yq>eEuDQs@|- z7u~g8Bb~>c1Kg;;VHo4u@k@|}*bF>`71Fz<$+B0{DvH^_&KQ<$V-$rRQuzDIs0ACmc~P&hL7FR$S)1m_2j1g?4KxraLcbeyy0n)@5j5?|i8 z>?zq33mWJH=4A7w^5G>D%SKwN`}F3W+9p&>3~L%Ihsh4H3h`~Ah@sR0GD6L!%0+kim!Uwg zRq#--B3B_YJlNcQ&R*TV$NJVJG`P!775$M{CwE}cf5sMO%0!mGEI(py;rbFj5idb^ zkTb;t#gpg@l5dJ(%D+`jH5;_c)#K#dm@1?e-2+wUAk@kWqPN3;dK)@-IwpD+`ws`& z2QLJQeS^K}{s!D#$a+2?yr>4zMBI$YVCBphc9Fy(9jpkbFKSz(`$r)KBFy@;tS-P9H8wQy6IJ=W=`QezFGkx+BrGS_g&K*wV@?_U&3;`W4dL-oTqBXn#`^k1Ye>0y5{)1^&i zKc!d1L+KCF>nf#oj^?`RfQ)8`(94;>C8woVrDn-6b~?R+tV@KjjaU=BfOtYa#a;?H z{s;Fa+<*&22JuzHlYBE>`yDIoAq#HYSo)~2b#774gd*J1%@#1dF8f;cr}>sE$T@@u z@y$?A?nB$@s*<7d!-~$zF{*6U8D(!7C60?G#G6F7f*W{B^mPOzdCy4aI{Qw?3pX2h z8$!9pk!j!?Ju>oQ>TsmdY z!I_*Ex$8?4Ep4pt4ZgA(29b4ak@X9L7gF&5@up1^@;w)_F;dK1CS2< zOl~^gTQD9uD(n%P9V+pRb|tuKI&WA%nF9LGCDt5yPV-`+@s6pRe!F3i`J9dOJPZ#K zOc!-0HqxhA3u}^|1BRXfh;o~idbxp-6E8){aT(V>+>3i0s_#GGp6)c-)9g;yL*Uvp z3z~z%$nIDcbh2$1bs}DgJ=`4ssk`8ye-I4SS1Jjo{G zm!q?S{d_sVC+Z$F1@?PKIpo|DiId|HK)zo|(q{L+4Xt zi6QWYt%$#mb%+T;&3VY}2+j5;gUQ2x#^>d)3ioDr`ZX#4VwuGBPJd3{#_&b2vQGDJ zi!Z>sfLb+1Zj?=wrb|umJ3u;6(M#E0(Vtm`Tn~TrSlz?DUjl|;k>Br5bd0iw%z2hx z&IA4dZ+oRUZU72sY>6XYSLCFF4--qAm!+1M5buH zXd~8{42q{on#z_)-Rvvo6SIoB#cY;HWJ$7N5|p+9|Jn*3&Hn?B;x91`-zPlN_rY1q znr3p9*Ds#>`&?$9?4xD>nf@`hzUbAbZTF8QG%X`Zn zOI6GxLW7<_$Y{Hu(esacnRB|Gax8WpaWW3Vfw>-fYWcT@mh(*oo6&p3GVw$jW0umL z#5r_KI#F#^zf!D|j1hC>6|#qzr_<>1^i-;ps856mjuJ5$Of$G`56dekqOxDo%j_YV zqJ>N*Q;R-GF2?!^7e$|OZ6b^L1gP&Q0yo{6)~$xgWyJ-5WOd8r@|DJbxx`T2sL?+w zA8B#>kH)KEW5hkA4(Shel4O_EAQMV&vSuco`AMgdi$qT&i+vScVF%?jIl4JlIgdH^ z+0I$}L;REL&hXdZ{*65peJ8zi2K|~^LY@(ik*-%h01~NDxl z?yBLgzpS?m=Hlf!X+JGL_U2j3%gi^-Zwv~<03&XvgFOY+$Zb&RZ4VW`fzpZcGRa-$ z7G0n1PY)xMP;p)voavflH{0LX*V-pIqV`4b(wHqb?HSI!p3{MFq_5D8U!V~21@SJr z8oP|CB)zLRteyf^Sr^2Y#fRyAbT{#zWP5TMJ{CWO{~#`suP8rc&J48Fb(RKXRTT#m zD;0<2jI2P?k6lVHpx%%>i9XmvBrMn;Zyo){m4%D}jpvoUtLbvt+Pu^(EN6FdD`OQ? zE8|+dzpSsZz4J%-SG*fqN@DCjwm9Z&W83nW~B6XZnNCe1*hRWOf~l~Ej08qUUc*f{1xs6-8z>^v$!E0 zqfAr-vJF|4{6t*GGDJnlbU|@sPOz76p69qL;@s;jcl39to!edK-1R)Oy_&#@P(^-! z{H>@A?@n!{Z!;~Kzr|Z950yak^eMKoq>vdVmQ%;bUPKy3;x~c&w}jqH+n5@X5t6x* zo01~QaY=vaQCStaU%FP}W_PkdrX~H0ya7BSE3ujAi1~!a1cunL$g+ULHNwUlx)%4! zuUPQ1WV+sHSZ;n|Y-VU_$gnECXM^4O4Z?l+NOC!`AJ4;2;-~P6L~~*Xu+Vg<0x?HZ z!}9`beSJLzuHCMCE|+t$^N?$q=dRb}<$P-byThg^BifEPA@@)X#1F;isqW&V;so(2 zYKZte-51`27h*qklz53f#aEM~shQMf`V0F_a!7JTk|uf1l57gxS36|6(nRS+X;mq~ zE)x%+Hc_3#N^xr{9qWxWhHlYO@#B$O0fBq4wWvJ3xO(x=(qa1ZrZ1KP%Tm*B(@R^} zS<8Fc_b}Wl8Wt#lRdos*h#m%hMKAO`xZt+~W`jY%#)90lVAxOlYx@}Q4IuNK@~rkf z@K*`&0V13pX%d|fyB&XsaOh#&PUMkQ$PL5}!bKSHM)(C{67Z*$)HJdi5H2&wmg2wY zZS*EOi!n$hNUureNW7A(5{)F6y)L;cdB+woe=$jnUz{dx4?B{jJ5gWoTWD)hQ20VH zBepy8DX`nq!k%PS7#^MR7^HS#n(A#^7=H`ph*5i}&1@34PBP#LblB}eA-fYAb9cVqmKARwG6 zT8QpPogyh(3#$&qA`FjUC_Wu;LbL~l*AGHNUVvuY?etPw#k^;>vv1i0Yy;R$ZP{Jy zM>dsh%tF@Y_ZI zy;Xhdeb0P{d}%(~kNda!j{AD}Re?a@JJj!g1s%Z=p~E3nXnC+Cure?>&@wO}a6T|9 z*dbI6dK3F``#5PNEpnb87;PBq6+a_5Cai_@Kx!cjkPO-*^$`>)fLdV}AXS`0ULj%N z6=#aNpo`HenZbToat1)TtO&i&N*=g({HlIZ$XW5l( zJ@y-{l!SRicLM6=DseV-jg%3Cv5TT{$R(iWSfICeW}J;p=5KQ!L$?BHzN+3Q?%A&1 zPLDm$CbfOGF0xj&Hn%Rb-nZJV!)BIiHUy#$z+f67Iwr~$O+{7MAoeQ+Y-COxY&s z5y>9*A7(6#i+hpNp&~yCX)16>tME&>6`{|59QekI9dm6DE$z%rO>2!Uj5sKL=L{bW zhmE65TJst65KB{QJ=+rd9Y@%?*sbz9eES2r!Iz<@;X>{qFo$ya55S$<7yq9C6CM*b zKzzs%Q6gF&m}yJUXXriPCM`zKqgJ#Z_84|8aTELrmRe2xC&xxwus@bY;swyg4^;$_P-^;tptdi?c-%Fy$QuT;3 zv;*=yo*aG2^$ZOOtOlm%YiF`O&$84!#5Blw#-KJh^bY-C!#2Y~!z069<1te!^C7d; z^1>3aj<%;bH@GP_HsBf!IE0-!d!YzJOQit6@pMmOe1g(ekiof8Gat}gWfcEP> z+g%9`qqUPoXYOknXS5jZ!p}Ox2*XrEBf}!YPQz^DMq@40H&bg%s&%OSi(|CQ?mp>7 z{7He|fkVL|p)KK;Tv0?C?H$7et%3hifb<21QMqU-`V9@ES!ff;`MzLzSU!g1_3*#( z0K5QQiO$3gq7`W&mr)KN*-oLaGPl_;lAY2WvIFuHivN^jRh@vyTmqWgZtYp^IIUcJ zUSolNqL<3e3R-?#+FDY=ET?lQl)Qx{i1rJr#5|EuxOS*_V6?Bc=f1O|eSkI7OqiX< z!$z~=hhe;-uHmkJg1)-`Fa1ybVuQ!v&8>F$g9zWJX9UIp>+ zK<*s$sPuq4`-5OPu-m2}zmdTr7p&Dx^fZcK!(hiX#(U#uaEe$(d?7+aPx3gaqApQA z#Tn3X-IwXXww3%T?I?@N&d8T4W&mf}t9qzDr;$TP&J5615bXy|2h9U@y6TB?ydomI zEbSo4XBN?JN=W7cDKt&cB1Z7Z++f&wgm1c=br#y{Km<>j`&ncsJMxu^naWP8?&_+VyTDDCXsc_Jwcj<}G&|J$RhyJ!6*c5W>3+#_wh{A4{ES?S z^P)AvKrEHN!~G0d0)+p!=ccQpuHKSGK>71Qj1@T*V7}I#%!|Wh9p^s4%5!nPSm#4eubOjfI3sH~0Oud&J1f{YHyhGWFrOM{2GF7_zvZl56qV}CusB>zc zYZJ7cH0#voRPUAN6pQ7JWY|*A&jY=> zhIyvxma(GowLxI`N1v=8r(dE+4BZS544sWC(`@r_xc{Ep5*>Y=GhAKWZubk%PjARq zGcY@NJoG&r;70L1ftdV0b`;j@0q{o83!4JJ@T_Ps@ZW}D#aM6r0WOCxy8-8G8Tpi~ zM_r{Bi)+y+<6%CsnUZ7D6|w|*y8M`;hccqPsG6r9rm3KPtd;93>l*8dv`e**;8w4r zZlUT7b?&E-^E=t|j7i*pN+xLRIWk0$6thPXxw>!%vc6~Tv(CGAt?ioSkU8H})AYs| zHVlIA8l)esU!f1{NyAM;C*xex9P?nyYU>>v;ppUS;HvC??auIg@%nvOfC-KcEe<=l zNJI(k$O|A=+zV5L9bh`93DBTUBW*>mMHSIEpgWxaX60Hu7w-+X;5)Jc^&6sdCFpY= z#>cLajFDEC$>o>iBNR!>Ol2;t)^4z89&+`oT_5ESJcIe%D zmEpDFpz*Bfig~Z)nU%A3bL@5YbX9Tx=YH#X>ec&x`yByoXkz#hw*xAXANZZon!rVU z4_`MAyrv$)U7smji_{WTMGpX1xFOKV1K0w*1g}cmAtsR>D494YPJ`EK8#_~?mHv>P zkj()NwYjnlR3?7FmsQYS(3+qUQbAV=w?{xTTC-YxQFRk`;!*iDnM2YIbkRjrdxAsX zAlC%}MCTe?X_N(uzJ}duG^p^9|)e;jUrDfD-d>1+&SteK% zo5Z)`M4^BDYrJ#ZFP!xqHk-uO*1FfS+5FJ-!8qO6+}Iu>!p6pv#+D|p>8W{*WubMO zE!*yP9C5aA<+&cZmwLuRtS|H8FORl_*ddIxr!Pro=;C;HnS5XL!=5BA-BnYEAA=JsMf0| zYMQ|rQ|OX)HFPoUTkSlpUeiOf2X4g@nSrj}-zCCS>>*2-?Q z?{ai-R&)7XuiTeBhrJJcxBU9R~~3;^qTBGkm^?{2dEmV;}B~! z(r(h`X`NbLo2^{{yK$oCi(02{rusvfpvaM}lls}(OjGe6y0H$^4ET!p9Sh$X1kAT!D6iDsh8-AUP$yF1si{s#u_`r;@3^s<&v&n(5kW zTDw-H^J=eZn`krOq`gqvRbmyPd?%kE`ypZ2YIJvM9q|u#UUWn_B(95o=e~qq1hRb9 zyjR?Ry1b4D_NBJ*aM~>93FddENpMS6F|{+zH2pS>H!Ce=mi^YhY;M~H`*cSur`%QG z`T(o;!h6B@kADi}lf6T=!WrSkTq)N#k{W5jKZVNc&*+X=Q+U~C3W@}yApe?%n2|A} z@1n7gqg=wq<5dV7@tb@>JrVDt=Q8cs+L9`;AB$yIVAWPCr>GLuY3kvcpRjK8wBxnC zwKTlZ+adOttv;#xtqdu00Xv#=7=AXrFal6K)wo2#m@8pa#us{zyN=)_b-px zwaMAR(azq(w#T~9Qf%&FHk-bhj+ydI5z`iPqUDKYp!Jh=ovoUkx8HUQa!OoZTo(6d z&lB%e-+BMFz`@`e=+nuBn?xRY9qGkq@%^JhAR|@;>T_L~kL)7+B%F+VLs|lnwE~)o z{t0>HIeZ9FiFA^A)J4$$x-f}s8G8*P#Zj_)a=D@mPTLffL$y$yukNZ@rP-{Rt?8tp zHUFtcsz0dyQteizD&ERh$~sBUv%Q(C;vS&=Z@|Wg+QPbZjLwM64Sx@|4LtMdyvyCi z&XbNA_I0*()(e(T=4xh<`Ml|qX`_iU_c1%+7O`4(S(9K){;7S3}6-bif!O6G}Ou2R!mJ2&04-q5sw}?hxpcAn| zY(8Fta1gIaxC6v~v5U@Q9>Keo4AzWS*;SM5|Y8U&Q|E$SNT ztEwc`ROMF1TzNa0Li(B=z+4y0sQ(cMv0b85!cFn3(I+s6)+ux)fclqs5zl_t0%vtc zg1w$?ob{STYI$z{+uYMU*L>An$FkazY~5z9Yx`=OZLi>X@7Ut(=c?|Fd{B@7IT0(X2{y+=F`-07}7XBFph zM-@jd=!xg-7wzBdO&n_+KF3gJxpR&y=34C*c=mf#-V*N)-ylB~_!c-CY#uU)W`~X8 zkz6J>AaXGhjCA1t1!Db>=yTw1pMpN3AwW-z#>W7CQUO?$ zoY`cQ+zD?&hWH>|7wR`lK-o=~)RP{R`lP*O>tH_ZoNTx3psa(8kiC=+mGY9kl4g?W z>;=%@YSX>NUNTBt!pC7OdIkAI_%uE%CX1FvPIA-2O+y-3L7BgruakGN=f1m_JJq$o z<#oP?KHJ+)gH!FA?KR8g9+q z0z}iLnR$0iIN1#H&7S{vh7(TGY?Dq_%-Y^xIA$p0dH zBA+8w`2#!)jA&)-bW9G!&S1PNa6^9s2mLsZZO0;SkPafV=os1*yNR`i+@JBTN(`?4Hlb{K15PBF)sDNJ1kVIIaTFwnyBN0sLc#omWF= z_psQjShe^Oa90>7_z%ur7a$y`fD&{YUiB@a`sf*y!tP=cd_P`*k0l-uRmfMQgX~JR zqdrpg#gD})^lE)V5ND3Wwqj~rgHHtor7m$Dlp#A&hwM&vq|D?1 zY7n)Cx=7_w^~5`=ebi%6zQiz{u#^gemOO)8PijdH_u{|tiTHIagg!*WqGzHIOzuw- zE&{*hJmC4xi9X~j0CT=tWDa*d><(QHp`p`IbI1#<3n&BHK)(Nif4%>p|AhaT|EB+* z|DwMProq<++<~dV55d}@|3We7e#r^f;`Vb?WK|?Ta*l5u-3`R+E%0rb?sCpr@A;4AkNS0GQHN6aLq z5c`Nr#CBp1F`TSOCXq9UHN+A^M0CZs;H{u*>NYkCYYn@S15SN^(E+F+JQEHQ9)f;^ z?eP~tDSi|60DWD@H;EkJ`a-WuJ?Njg9U2wVgmQz+gYAM$5F(O5Bwz~!1C4_ngQJ3L zgBd|xXfwQZ>hSpRPpG+!;)uxZhz&ab4guMFB(S^($5LZ$fu8#z-V7+WddPhy37ZRd z3OfLI+Je*p+V(KfZ&8NmCu%|!m>xTde#91I&F~(umS{;H|Mw*hpa1zra?aI94WVgZ_)=h)y7tfnaTc&Zb@eZwPb?xW?7uAAza9 z9Zt$7o{!9p?2Tk`k07p^&JE?#!fV3a!o$NW!{V?qEC}a?-i90@D*P)Hf;Af(4u$6+RP2D%Kpin2J5F2dSlFp`RWK)0du zvEgVHcmt+D4dJwCKIqgfM8|+eJ`-t%+yr{{2XHxA3~nhNh~dj)yW^W<4`PjCyMY;A z4VdV|_>=rp{tiSR<(!90=k9YgBHtp%BX787kq!`-Sh=a(cdiZhj!WhK<3b!8*#vI^ z$lW5Qx=ZV&{Pkd_TTha0-+MR7ilY$|~Vf;d|j%p-C8o ztf(FOhX|Bs(Fu`G)J=3BR`rQ!650?Z78K}sRE)L~9YJ;IaP%M1ZnPs*m>r^r$Yjw^ z(Icd?=$SA_*bTld8JPy!p-<2XSnVeT!-TEC;js?-8~jqf1;3te$*1$v_;&nIJ{!8=d&BhRiO6lp=Jb&%{8@eje+GU+ z@Se|%9t85bgU^cojt-CAfK2Es(8jOF+kijLaN%ZwP?#-vEci>hED2B!kMwwV) z)C-x~u&5~7FxoVBG%AaJ;8(zJA>S6*>H&DWXGI_IhxuC3zR^(h5ls1fkIsocfPYH^ zcRV$E9^&biv0<@bG%ZF5{ul2JzB^5YDZ)aiyS*1~7sSAQ=a(Q;cn?m^c*p{8AWERd zD@3P}Q^EjD@7{qa79sMds2eg8@d_xo@vXudP=B-u-wWCa8zF6l&k-pS5RQX4RUkwJ zw6G_vUQ@wTVSjKUItO02XMmpGKR!_KFq#Fl?OpK;K(Rjx)a{S4F~CUQ96J)rj-~_q z{d%-f^gqbmzDBd6bo_qwJ*@7mSk>6L*!dV2ogA$Zn-QB9y%g1elhFIv>{!ou?>HSd z#F~Kfzay3g=b)jWE_mtwA4g{aT}9Hg;qjU478jC02=49>92R$XXK@GwcbCQ87I$}d zSX@E~61VF zRUzy08A(O6u=U6+v>)0Bzlk14TjM->4t)m7vMl5b$|GaYNeGT@LDX0r+7+z>yQCHk zz=`WRQd!x9d{fpTN09BvL!~Qp6JG^Y*`WLg@yS`x_xmyQtWSgpF$~!WyfVFV24-q& znN%vu-{mjTKDe5;3ZjH5M!B`(lg!XL{<3U9TFcLrpVCWEg$271BGb>@&o;hqG&2|44$csJV7sE56}z9 z5HuTdXhq;xOMtHs+6a9JXJH0aV~c@})DwEZ*8)0JUBrRx2euN0EkLTloF5BhQ@{K~ z*$mvKCukF8wZh8_V0W|0vy@lJ2E`*iQx+-}kww6ETdb^?-#~QwNhzyv(oE<9k0VE6 zwxuXzA&<98rcf*N5T62_)9b??d|p`sdCMzuyn+KU?Gtp0_y~k2HIfLlx%o;P#3BC; z{m-uf@%tDu1Kk8&7*e2rx(4Z^=+Jbu9I&FY5ib$~wQ4w87hQ%rluoEu*#Ug2wa8=i z2I7V}y$C4}`~H4(0Whd0!*9{TOm7G~;=-*2c;8`uIebi z;0e7@Zp-DNi*7!QRu8MO9?+`pDhbGP=>I-f5#(M&Hr9lFT>Z#}h# zJ`y)%UU?uBh*!>r>nnqthZ))gZ2~MSKm45mKyvyHm61uv9i=jK>YWB;tBs0Ixr|gt z-z#Zw2QHy)AsQWo)W(va$MHhtUvvoa6|N-<2*`EeeG&yb{Xuv#XW(?@%Ksx&GfEew zIdV`Lge-uO&4Bg)Rql_Rk|!wN0Hn|-U)PAYtxRG7&5EhP|f@M@9JjaHRq~hl_H3 zWe9wa0BYkQ^lv3nIS3T9G`Sb@R!%~;K{a?VvKXT0=}I4EJnSsXU|viI#lv;z6LK4# z>pR6R--H=BA6RQsk(=nRhI5_y}l2JZBBh>T_fc7j>;(E< ziQFDNf{sDvE3@Ejc2!vlk&+p`44k^Zk=3v&M#G#uioQb_>=$|+o@E`_h5ko`zoxWA z;hq3Ba5zFKyWw8lR>s0C{a^2rORy84m*>gjgC2(+{348A2TZ${NDkTn z-wDyvKX?c7Hnt6}6Ne z!*}HKxCQ(XewWY@A|+D%CY~2DsVn4h0+Jf`h!(I{G(x7qDe^vc2%C$p0|iJA{4?Pv zhR}6rhPnb#Yk<58x&1!Oa^?rqk1;Xl=nYWgeM29oP4sYx+($u8Dit&$9MP6Y#fAUh z$A>AOuHc=t>8@z1&6Zh*;b)w z?j<*lzY000eL|$z8`NK$q$oHUj(|P#9MS;p?R%8Q_F+G<0dRj7;(hQE+=pxN&UkyM zk2NMxvJ5?rT2022-Kb_%0jMJTF{hZ`FzR`rg&3o1sM^mgq~B01^@@5COnPg4s1)SZ3q!yGy^%(;b!3==Y`vYdO`jsYJTR~GtwUhY{Rp=&6 z8Z#0+_esX4R?qa*bxo!|>OWul^!1^=8JEQ};9gP5W$x}R=_yroKx>Qrj zNL?n6K~}v9oJ~pUEhuPukTXDW!hOP}qe!+Pz3qYH_fyOu;{eZA?lGH;O$*<(5hw8I$0*wOW{BwQZy)Ms9 zPq-)Do#>8ne|HP+Bc9RVh5PAk;*0a^1G9qd*xjK)yjQ3z^^)exV}a~C484H~_)Fp$ znFMbBaB3#ipQ=DTrYh5&=v$PYx(F&sifRqBq9@gl$_E9;eOjP%!1e^B2mGlm38&rbQ@hYHneTB|OR!hT#;k+|+j_np~8R+Mq z=X>w{=-KXG>>A)qbG&tU9k-nyodaE;TsK`mT?Qac&hl*!d=1`a9{?fJ!`Bv{O7E4Y zNLj21OC+k2pUEFoH^^k<(Bt4_pFvk-CNW>>Z8QyD&s)?`YAL8-PSN|AWK}(tn~7D8 zR-3egb*(@H+{&;}{}1?|MuC6hrtY-9oPL33IMan{0<-D@@sijCHQfhDduay$GITOj zHuNiK^EdU?@uqmXxPLnl=Q76<`zX8H*2i9AFY8Ei+;miRHgKxk*F8)8s{?g{$*d{# zgi94}Nh~l0?m`ax5B{3?Le`;=G8EXULW!f+<+C~p$2vsAf zxL;Q{R1Z_v)E4R{7-EfK#@qUPn)OT~^IK!pXB!BET2qIaLM+2~5kZKSq^&E$(bV3~jyk$JZ1#QD#wAONx)+rNWzS>V zWLu=|jO~qmr?aWMqOX5oCFoz~g&y$h#a&7(Y!RqI{(=0n%>(so zbvLrwk@e6=tpn)jLi7{l~t)!i>RJTh+o6L4W0~D6`l+GLmtl<$1mFlTa;rYfcRI~HCYs#yIPd^weL z1-iky1g%kLKd8#xs`Q zrk5%wybIft+o-d^e9+L%(2K$V&KWA?DhV#(GxwK2!c}5#?U>;l>0IKBaa6ONFRoVf zsqlD_SW;yDXsd4PU7BL`+v++Oxc_*I1CxTuK;jJ-PDxkf{+J0?|3B0j`i*L`W-Da) z&uI4QH2U_S5gx5uuG^yR29CF;I+Z?3Ut8B&*FhI+$Oj@psj-jIYOHMzn&#=gQf<{o z42vv%Os`d~ssB(nY9)FxJ=DXflS*g42Go*Hhk6M^#nbFkZ?eN~lkJxrCLb+5H0I-niuKI?LIGxP}t)X>h*QU4sOh507j(!$)=yv>A~_G#PF zBQy<6zrqR)gXqu1cyt(UBu7B*`vQ?Koed=gTZiUx8X=7z7wq7v>KJbC13TwN*gsS4 zEv(0iTNXtXwXyZKwzbu?Z*``-r~38;hlc6^3+x&{Uy6g&Pj5ni>RwHz z8WW@5r0J;LsVk!w^%eEibW8Q9p()hvzUo>T{x&o-G&V#T#u``ylw-_y%~#D|Ov_Ds zbqyK2s;cQ~cr#NZeIJiR5977TAq=g0L*$7fyEZT&w1snW$GAU%zdT*+H*67(^9~p6 zQabxyYnS4z!b64j;>gm?R-f<-H02^{ma|ob6fVKND=i)?iE=e}Xv-IK zMbmYSl^mpLXkHgS+pwNwu^q}A>>2r)S;d^frt?>VU;H;h!?{}=$)Wx<*Jj&)wsMX} zj+^#0`%&A3(rZNpg>{SWl}sO4=vI1k~ zyKHL>v+$d>Zt10>{zZF>Ru;c09c?>jPqj&<<7@{UjXk1wePBL&Di|H=%e9cFK?ZLQ zK9N`smFHQip=zt$XUcF62aYp2$l&Iv$q1reAitGwuja^ z_9ga>pw^jcYj3SlysD5dyj(ofI^TB8zTH;Add$i=9=hlHx(8;nYuH+FLRbwR-(C0w zyc=`V7nbqA;a8gR&6(C-4B`D8;i!#YE_(Punwyl)s}7+|1`*~ads8=wvQWePJ- zGi@_1fqysA`sm9{53|iYO5?$0Nk9+bEy?aw09_*v3?cr$Y$dh>`ynvVm*IYHe`%F% zeeKuaPF}aVK~b7nBox}gH~YtCbo{VyuraoQ_O-4Z-nW6lY)&XPXhQo_n#eyRnwhV47o$0Hty(%X&*6^Ci?eW zGZa&`#<(?wk#kURdbEh~v?8BM^NQaVO@dY&=k0GC;m$tJ?RL>&ch&JtXKQo2_@&%E?v)U$yn;xH0SCxK zx&w1Ym7v|Jf2L0YYRW;q+Az>i)7aj4&2SoKWk+KfV{;g@$(Rd{$8fXPqL`YRUKp?F zx@yi+Pc;5;-W01^EZi6WBlK|ozJ_*_gTn2=4uA7NbZB^JpP%w}cg=yBS7JS9f9uG% zueEtfw-@gzT2=h5^a-f_dN^YpsH2IajWgZz*>B{=@^!dgP_LXW{|la57tw+q!m#vz zbbWOL7-O8_r2diqj^Pa=kIc+OiGs>6sE!2G;yL``9)?xsQJ{^oh+2PUKGvVI0r zLNC+J5Bt~9oXnL|k>&V7Vm+b8#wvUG=7C}U8i7`;Xk!tmnNU)uFCjC9W)2%Gn^6|AW?n&%8*FrsvYlRc7sR zZKCd+?jSfA8|b^~>Vuc(mi`}j19df^`n&pH`V`|X;|o(gQ=v(3ZVw|ZR4=A`sG6I% zhMRS>@vq7rv>sFwTT?uKPjQAKg53h{;O$VEU}g~arnt7*D%dXCH#x>Tw9XUuwzhvt zh7_$WZEt(*6yRiZ&uMftbS`s$_6fo3p}L%vvvKu>e)3ghBZwI&@QKu6hJdePjJk?; zhpxMRsXkp7(&7+#&eomMKQ_4adc7OQ+)+QqkZ&wD)0Rr+D&|aMN8Kbi0sUj#8#&he zp6H0qm1|Rbsf%#RE`ugX|A0Ej&PH9xc1vuJNh_lJI#)T_R^B(#j{FE ztm)u$8S8rQ)H%HN!>*2AsIIdILan)As14s+oUP=d+wk{9ZR#rZjNZbetIn$zX_|mD zue$EMc8<2CR;#TI%HV7IBHat!OWk#SPeWT{swvyF!2I3(#iBJlSLvyWx>gZ;EkCtK zuw-;0L_AIca?gk@$L!I|*gKUfKN1UUaoU^?n&icG~TCrH# z(q7+r#@*aK*=ezNbF}sB2)txhhs+$!wc?iXAEh;D9sC9{ki1UbrP{&z$y9ZO6Hi%f zPwj54PZOm%rB2tj(SOrBbQ83Dw1lo0cBdNV?dDqMsg|3jZ+f1Zs~T?v<){VxYQ#Im zPfj5Px-)&8_^90Ch6R~W2ktf0-s6K|{`#&-_F{WIM{U;&=YHo02WG2RTA?Jm^n)$S zHQ%$+UCHs;zRua-v&VmnjfeB-w9r$wrtnZQAr0`M#1L{Hcp@)QR{D|Z6?pv@Yj%U4 z<(GP$Iz!z-o2G5Ad#}~%(zNg3v_9St1-k$GmgSc7mjA$QO{+SX2SlDRE>ce;I%6@! zW`d=6&=bfuNIx!}-O7#tt=LoUV9@XT;5_d5+dk3p5)@c>T%(+O!EGN|GO6^9J>V+m z?c~1Y6dY5Wzud$8n?hIkCH!B&;F-c#ka{6y@%v;wDvqScE@Uh-PE}p=Ta&L*G$YmD zRL4}qK;s^!+ohYYP1f8}PtwNd8yP#A7Mijwt;}EbP3ap{3sa4V`0xz%KB78)4KIPS z=r!zgK1nlVIjX4nD%{zuhL&=Q{pSA6Jto07)_?qb5%z*%e8Mc^FW7JPvv4Z zsf(bi#6#^z&0BQ^O@wx&z6Pkmln zq7^ifDo3?ReMP&%aLkxy`ehE7n`+C013JZcE3&I4MKb`kpnLGqV&$l=8D<{YQGocQzl(=UsFyqR^48$ z2Z!}_U5;TOu)k(l?(091S}axf-25e?w;__`(PheYtQxtCLNyog!(wJ|Sm1pq7*Y$b zc!WLVzvF7@+~o{7yLfD#YChgG%o%I@R!ZAHdYu0HtmKdPK5!5BGzskD`ip(#BJroF z2lZ`jMMBRLRjD{SNOhzJki*EQR3>v#JzP^;-JWRznkb4|r+TOvt~sGnG4N{FwAJ0y z_b|OShnrTZbZ9)SHjR$lVYyD$Lw_K;t@&HW5BgoUp-gVgwBNVogjc(I%K?~ zdVy&12FB|VspgC7mXOW)fV{!G(-Cwh)nv2+$3phxKF15S1P5O?7~}8j?dg8vs^YHa z+ZZ_H|L!U0YT%gTnBz+KUu2hr+6U|T`}rRGf3Qu3evqNBuf#~1VkC5o8I3ol2GRsQ zhJ1vdCwh@69nVw*-P{xE0kIeS%caCKN}$&>RhUG2ADyZy)GX3b2B&GR=^kBxIJ(P*a1*|JRpSVv|ppR0W$${WK zE+Gz4i$QCZLfP@2;JGfuxXosatnONzwp-hGU7SC8uA;13?B??dkURf9p!)qvQ1bg z^%O+*-#}@wCVyP+g4YFRXev@F-&MwAGI5uBO>04a7C}%r2U?L)_+_F7*`N4`ER{cr zRip#530;KmBHCd!pvrWS*sbagPr9~os`d>16e?xW#%B>XBN=TL3eI<=DUkg)sn=_Q z#3tcy=(aMOn<*R?E{XfO)`28%zDsi5a}Drx52Uew2bcPiTzj1}Toe6I_zIvPDHO_b z?ZMr#Oqz~egib#T$TWD4JD}Efi?lL3)D|X9?4UTpX4deJ89j-508jzj2OIfa2L!)dC3w zPXzX{fB3y(q)>}L5Ln?!bf0rYy4SnYy!F79Q6-S??dZPi=DpQJI(Z+c4ouQwp%Uyk z6|hq3rRoKc(JtW>ah#|^^{2-&JK?QW7q5?Yfm(Z!Y?GfWd*vlUeTb$mg?u4|$6=qU z3pL1J(ptFxugLeXfBw)Ibt83I+9co!c4dwmH$`rb2-2M}4>p@>r6TB_bVcf{QkI_; zjA9q?jk(oqtpMtq2&hqH@~Kx48D9ff>C&cK`M zCZkdNR6+U$xrh8fr2$J}2tAfu1hk4C;KA6W43Q6rW}ybh!s+t>dz&o_=d>Z*el8#0 zoP}ab*@@ufWmxYf^{*``>sg3Eb?iq2KO18|2JQA^s`3*YO8OTQTw{jGetcbjl zJ?2gDwD&}L=lRTm=iX%=-1FGo&^_I`$Nj*+3ifQBlr8+=)^Ih%>*#9WGJRAXWCk(k zAu~BprPoI3o9Nc6*Q%b;k+26@K-;wfnIJcn{t;G$dia+Bm85kr;Clfc*K^(&Zzo_j zP7ZD4^7-1*BIOTK7muVaGl$hpAiquhx^mhznzNd8t)v~JZKcU#_5Y;|>9qABo zE|NTx9BNmjCoZ@t)HEauN5lYMz}^X(`SVIT9t{;qH~A5Et?8JNwyQFMD}k!?bQ;kS z_N&w6F`^7nfVISaC~@*cDO{{9JOE|$D8bLo2(1InX|K>6ZW8|=Uzwi*-)o4C6x!Mk*dybrXK-%35HwQ!%`&HsS-qz-#E z*fnSi0O*>zSK_-kb&^e&SJWn(s zvhl`vIqYAA2OV8!>9wd6TR>%<7KR8z1+8#~pT;|QM7%GR0nO1s@UGMa?Hqx3BIbZ% zem0y^GAIXCOznZH<3e&4*^%5vOvc@yN|>eelFv%*r9!c?SPPWJpSTU&W3Cy0nNI|b zYCNdBtAOGySuP8jvnHqy9g20rEZ}6y$7kYJ%!rqTj&J=@Ub!gyr8?4cv9Wkc2ov`3 zI{r1Mn0wTYzjdr?vJ9QDw00qEs zX|ViC{71;-+OcThitml@gug7T{2h=3dcnnT2SUp^3f@L3SPx<_xs`YW8qdF|2Fz4d z8q}D+&>N{!b+v><1RyR4$gA2#%lATsh9n-Q<4omBs16HCZSZ z${c99rhv*Y2Z$LppbGAW_L&cff$;XKg`dEBLGPB1pgX!KHd79LBqAzBj&L^0g;p*V{z!u;q^ z&!gHGiZdCNmbRhZ|tqeas6f1{iqkGW_XeIO(sFN~4*Vk9^%012w?NJ6vZ1 ztetFp4*F5PBmNMcf@5^H@Pjw;{b3fB=lWxHS%e>NNx-o z#U`Mw)1rgW>!=MiW1X@2K-Rf|9l(ZQJm`3n&{LohM3IY1E9Ir!Oui#EfVKM$*e|7` zMyd;%mK3R$G)THGRR`r~n6mu;m0?4XaiAvKi%7_D^c4CL{et!c?a>m@BrOBg)JW*k zc?|ThH^AGy6k?U8awqtn2705uFyEKR(GYvQfj#dUJo#CmJ)R1rk}*UkRvl@JwI_{q z3-Skg3ag4vf$o>hkS*wE<(?cV&ljt~3_zs%Vk2RtxC&;#SQuY|WCK9@brRHK|{!=IgJl5Oz4dQw!9SA;bXk%zRA1?1f&*HmqH<0ith3>wH=pyGWG3Rsm=8TuKdiN}P+z-Z49XwaiigHI?0A9W;X^mZv{kkjaL z>=NkA&!B3g4D2%VbiRC0quA}~@{t#QxXVL+_VMqzC1K;>)?r5kZJ3Ux6cmvwgC-LXR zYM_+N1jYGE*k`*!kA(AZEvLZeQXTgG?*v0WAeS@swe|Ep^#SAcu$vJP(HrBs#V*vh z6~_l#1e$TVumkMjrg&aCI@N_8?m0ipIpPdP)F-B zOdldfM-7g~%FHVJsa*M#Jr%2!If--j1JUKSiP|2v&R}CcVcVol++AONSBm47BN|jhVeT1D(!Sib z+%e7@V8=@J!AH@ExC^pPY+6#^xCg2Q{_^&(&L-YG zdvS3}ks~|sYeV*`{9w`Gk`(t|Hd=}zbM<#DLo6*!(H390De`5cJuK2VTs47spj;DV z*6$tS=wH&cxI$@jTUSR1XSVZ^>!RmKU<_YfjzY_00Xz(-ealph)gI;Zd-pJ) zpd(UczI({b4hxC_Gbn&&@%zOYN;*~rx`E)-6Z(M4t=XZUXle)C_txRlBb-srxY3E5 z60HeyqIYR;OErVHg5!hBof=1(;*CYGa_Z%FENEV^x@4~-&v%ROihfr0F<1>vEk%~5 z5&rPuVWZ4Pb$(TKYApInaSVXv40Jj*S@er_qu{-j{1U{Y$&MWL(kJ{D1OF@*;{etqbhw z?rOmaK<7^fJ*G`&M&Of_t$Zj@(-W|7EKM%zSGc%%O=)Y}FvkNA9%T5*a%GGnBk1|y>i)CPnsdbu>ZODyBqs&2Vb!hxSB#^h-Gdd@9>}Ch#jMa+n5661^A5cgm7n((%o_R5R^>iy|jZ0laC2Y$|n!pcPnwmHta zz##kN6 zvd~(<92-HdXMSn^Xjf=gYMTKy@t58NBtE-24Y&%0;Z0+hg!qKVv9F^{VI5V7^n`5@ z*zC?I%`doC&@X>j!Q#SBB_r&$TtGbH4kG!?QbTswvq*1bnW!#d0pk`eOS4!VX?nj-3ftYYMtXjl} z$lp=hqHQr-;%3BEiyIofM|VxR5oqptX`573H-AW8dd{8PhlQrnjgIH;itKV>2XdB4 zF#j7Fh^idZBxXj`cH>@MfL7yuguepEJaNu$wu&XU3my5D^O^jgMHB5$Jf6T%p)-1t ztjPSM&e4_v6GS3^5Gi;saJw{=MDFjvf4-4E&Qs5WxNms>3zQ8x`4v(T!lN_6+0z1B zf`6eusn=+aY8t7_1IZHC-PLz6tqyw~@h~zNc|MAb863AW_OF=p(Vrq7>HeUP`NqM2 z-S3O0=B>(UoW1vtC4X0`WFO=19x97m#_uz)jbzlCsM4rUF?*spOB;hqbDszZC;d_G zPPQ$@g9|F;-_Ki{Ke~V`US(h9NeRs7YABEJ*R-rYt+VJYT3YpkY=l)->WX1}4rqAW zf@{5j_kr(#zn=e(@2M}Gy(?UmPap-bN~0N>>7zPLFCxED1&msAM>APlPQS^}z?2@A z7j-&zW!&rN1JUiG*GBD+PKr&4UZs03DZv;|Gn>BPT+X~dWq-BJ&M3ZUZ{WEWunPa7 zYEscuwA78M9N#Z?e)PQvlQ~`YhW?HG1szqp+4dHZ1(Wl|yaxHR^O>T;lID&D-rb=L zIhJ4;fcEJ!b$MEyI)*k7NvKEa!n5qGK&dy*a~s~dlUz=BXMbLB7O^%SbY*x2bV^yb&r&yfYTWamb_u@RUe&GJs4S%AFm2(1W zXUF0uc}H_LXK((!Gv|8oU(O0XJzFG?q8_L^>oP2I%*WWbQRAZ9MouuUU_wMgWNWaN zb6shJB3oXy+{O7B1!94>@M`G`SD8S0{ti-;(9p8#u&$TEroF3vM5SR1 z%@r+UtPt*uE>p&ncrWQ*($s`g@xGX_$PMazZlrxr(fxw9IpM#b{jQ#~G5=9bkDNkK%(S!-ka z8`tN6POOAQ)A{Oy+LyY4pdEXozDq_S9Yra$CUD!^*mK;?yBy9mXLI)wZ+Jk<))g#r zHAIBIs(pawdJf2Cx5>4{C8CJjK<$F=1M5{QHP2xcuQRkVSB{8`J&~|BDZ5;^lv~N~ z6OP3-k3C~9Lv9OBvk%Je`0LisGCwE&c=*$m+t!}vsl_E?3z&`C6r;4#Gt(R!!74GOdWjx)N|-3qyrhv*9ye?;ymS? zb3nf~$FbV23A_kV;&AXEw?=k@n{5lS3w;Glg-6&#Tu;`f7cjM%`k*72q#m!0*RL{; z4(lHsmQc4`N%?aXs#m;|aKLfwjd7hG| z?i;}uVm;iz+}EtvZPc$f*z|LCPgUcnBiI?q7JBXP5_NtZYD;8 zYj+;@0j&+O%cVvZVmMmgeJB-TxAmspZuj@=WUYZNrIs1`^( z-_AGO8lM09caNV>ejLnv^n?1%<_;LAMag z8AS6_^9MScyon5tJDAk3e2)sdPmrUeb%ywqa%sXG4 z>1gPi$l_8PJcWr@FV|#gYiVhw7I7U#ltn@|yB?}QR`*EvZchc@Kp*LA;@=o_vd2RW z_!DAVU^*OBej)X-ftVc&;x)mirjWhqbwHPYq$7=&%sa!EM;(ldOrn!hl4~S)NGV^@ zm~ubyY3!89L;6X`datvzYHs<=(;tt%&v?J}!~XAw3Kn~k__Np|eUGTTI6NVcn3yyo zzE+fA$ucxlH>1?}1Enf|)SuzL=a_2s6fVkb_ovtIA%E`YbS%g#zGU}%@9-v!q2H*X z6NK)dZinUsJqnLQDDh-a<7@0|=so2g?C#(z@Xz(X32Y20pvn3iS_XBIF2Z9_gpYy9 z^)#AHUS;|Kqb^o=!;lVIz^j(U5gnt^xOwqq64#XVmwQ>>m(nCfRdz}IyXbTyucUf2 zOM2v?nYTYwd+&Yw_@gh=STxmpo4bmyHnff28SjWcnXoCbG;Ty>xOs>!i^0etcmi@v za0DOvJNl}+d)c-YUdqeQIR@wd``PF64;CjmTKTW=C5nsGXu=F<^l{pj>YemTVxXcC zWHa~sX~ms+9|h}-lBO$*~_3m>71 z84x=^=4IFzu{UE|mthlnCQK|dCB9zlPZNPx;6`~Cm2CN4`P+)m{`VI? z=zeT0G`Q=t9no|8{D@aEkK?(7=mbOb8OwL@JS0Ozv=r)PVNji}8`=`egnmj@T!ii4 zqMZDLd6wL_Iquw!g;T9o*Mr~#c?mgR-3zqf`TA7-Chc&h0d_)I5j^5kfQ>fZIm}t& z8sU2uhzh;qed153U|bOP2&aS|f<=5QHAd303Y4rlZORPa9vvT_nouKgWD;90E_qvG zQQU~QF=bZ9t7A?@t&H4d8ch-6E4H;qDC+blJoD{W|0m72HrXSJ?>qARqm(L|Ddu)j zMe(%~CdB7Q>m%=5uInnQj*%nLt71y%ZV+WF1sC~#xQveFwoj#NOC}cgDIA^OHvdu4 zSzDp&mTv_2Se}MYpnt2&>JDoInm(#nqO#IK+{djCi0&J%!LIGDH6A>07IG7L++k^s zatJCiBb1TIM5VeiAN>Ip_*t5|#YjUVcL!O8g z8QkGN=*#r<1|FLxu#r8?jS{;m%`r8xh9u~8CQ{V{dP^h$&FQIbrEy1Ci^xjRyJC+d z94Pm+Je@MF{HNsfa@7;nQ3DPCQje7}!M`0x3e)~P%zX15``Px-I^E60xId11YB z17~QFd89tA9j^VUd7+)CzpkI7Tdwz;8bEhEPt>cp7l|?D_9h$4FE8J-oUKgnsBs1j zeNQ?QcxGRhpYrQ_M(>PmnVWx}%f4JN%l;xTU2aZ?v`*t*%e4qBx=w`A+*$urJDCZ` z@5{Tzr;t&9$;Pw80ttckfvJJU{@0$X?o?Nlvp(>LZ`dZ;A2_>vdV4nogwRNE0M>?{ zazlwb;Qe}z{!tE#3%Mrj+`vx13VE?E>p->rs3P5r};GvrkC|L!$8wVliGaU zw9Nd>vNg;d9u=7yT`u-i+}rqSWv-Sv6#qQ>jCsA5r&^&)SlO9cJTv#kujro>e+~GJ zW|!n2wIA_65E^3r)hc60iz9qQN(7@yX6&3nsx z)ce4r_uO;)!F@Ty^%7WVdp&C3TmR(X39d+7Evtbg@DVC(qrvA}MZP5T<~a5XTZf$y z{1lu4ezUK_Hrb1o5^k!U>XYV%u7zQlv7xz)Wv8W4*rxC+5w{~RM^%cc8JiIMDYi83 zcii>pc43nZ=hc2flFGCF-I*ng^YXJ7XG?#2{n6&tDDGjO@43TO#OlzSG~W$NEpLEQ zSS>8iv<7yj+T>+yqfGI;*>XTPeeXH$nd40XC+StsIZu7>9`7jMN8eK4BcIkE1HPuV zp%&Z_4*HuzXVC-VNKpl~iK?O-m_D6_ll(w_1Mi1E5|5#m)jPzCe!`N;F$||J)@JFS z8JC*F!&*l)h{}k16!jk7bywq#$G(e+jhz|OFmj@~hJKZ59x+`$5*q8hZ97>stYBsS z^}NZsz4E&ikFam{{2gp4wnJM|m(!dLLA ziyY5&<`aO)st3<~C8QEY5Xq1u{!jHnGf7v=@XlD@eAi+KKO13-G(=yExe_}Z-VA@o z{fXTYJuJMc5!b{}dPL3HJ!fnOir(cF1mo|{Sx5O zmYQ5fy-^5QRbqvphB>UiP7@< zOyf86gYY>~-D0lCX2qq)&xe@FNreik=F zjUBoeOShzKITDBkZ_$VNL<&>&*Zk3~H$wOC@Z*ucqG!h{v5(?%<0H$gi*FUTI(B(< zcz6>-k*b6|i9~RPo{+V)aByyP_WVDKeh>bAA-h81N!w6QZ8lr_NL*2OGfc5i5vwAJ z$i?At7K?$@^rwblgghs-!k_D@;pym(a&-dLOp>>oKMA;~uR|xfOMEP7FPiYfx$~hs z)&^Pj$AOB$OTpRfN~kqKcXaWX^jb~?a>yQ_u=EA)#c<>?(ieq3T?9$BXUb~E>06k3 zg-wrK6obVR2{#gxlJXOeC-zG09j}e5Z#L;is@h{ZVZJZS@wI4QUP8{?-(`Q!{5k7S zO8%7Mv-ZZm>U=cXole#DG0hEo8W9(j5vdLjnV#tX)>vpzf{Cf1(x&{oJZWy5tBHG+ z=Zd#Kc`-SELg`p9z1yw{HZga@NGQa~QgF~SQ%$DFZ_Cu&6pDyeXlYz-{0NI2N z!en5e-UCMH2vQ)gQEr-6KhQXIsYbJf4c`#eH}-4%tOPQtU()Erj`4S*_J!9nrmAz$ z9~|d>W6LSZ%Z>dr@@JQ<|KsQ^z@x_6HXNBul5uILQ&-wjd~t`xU3YR&(cF7ivbAg%$V7&(0CE z_}s^Z*3wngdmNQsi)fK;R5XS(!IA(~;F5p^h9Nq?>OB38Scei~d;dA#A#Xj;efL%O zXXuS_U>PSlx38(Mr8mVh#65$(1XcOPPN0yTRjz;7@t!SS&R6135RHfxS&jaI)&ovp zIG8`$0bk{Xx$^m7WjTUg$E%1s)OSUdn$rz3D&USeFyww{>+m)ab0S`cjx!?xQ+3l- zBJo{J^bB{TSJx?zD;ZhXJU=-9zru*J{go4}D6@#WEs3(l^jLMZ_JRI4!zKNBtwv*3 zU80Z4<8d=OO&Tt)hWYKm{!~r|O!Ot7c=mahds5sybJ?}pIl+zrgkO2f$218|fnY5l@tVrv^ecVY1exJ77pL zu7W3))szpG^sJyh8-DUlTVJ?KDeu8{r6aG&IuIS0&L~<=OaX*!utY zMqrLxC^iB+SEO`FiUyb87;!Lv%9rF(u}0S^u{6p@-yJ0qDj=0?ayY~;4 zbe7l}+m_m%*^fJ4v(LO6{Mo`9bSQCxTmfYBNJ7A)vF6A%LE*paS?#{yp5QqPj)!P& z3g1~wK!ySp`J;K__IeAf(3Z^oVRa-IghOWX#3KGf4@Lrq05+>PhrPq9LzxinA+@V5sO>ulgihI$jZ z)%<<&1Tq(U3EYwgFTz{kd(kssXl*EQ6E+O9%=!w_g6tQ(k2K2IQku=!n@Cv66k)mz|=wo4P>T6|7SBcD;z z!G_;aF`phm_J{evjzU{5%QKtJag{&@iPv?To#Ku3PZXl1^~fQhL0HHsdWfAtZ-9qh zKz@U9q%-ItbST;hNT;soBcy>eU!ZxVzYkXk$xW+#Gl2Ts>fbG#f*P@9_;8{njD+h{ zk(y-f3EgP@6T>3oe}-gj8r6eHK}m6$x1G~(-BbOsYC~1$nvOP;V~H!o)7IY@ymUjc z`{1JFuqfO_td?(*|3SW@!W7BM3e{N6Jar4@ed@gY2;NcZ>i2kFFagfB_Omc%^xf%X zMtBN+8osgE7+Hqqqi?_zSsz+91!*^~|L2)sQZr#Wy_GW*P3WQIQCT6{LpsJkg!{!; z_f7Y|?p~fd-aom`V9fa_>=ti>M=w`6Dp0~JzOIlc)&Z~Ad-M*>VjluF-%UOs)8v_93Sf#dsn{OXDAE)y}fvp=V^b-$CK4dcX8Mn)B z69&1BSU{|o4aPC-5poMWRo%r;!am`y5G!sFpNofK3*3+{@~7~DU(Ao?mwKo!QkxERGIl&m)16z(f;)8u{-5IVRXQHE?Lv(a@&0tf!M*g-`fOP;$ z=pgw8esakTp~2ct!&9dXE@7$Q7*4{0xWsm%3!&1(0;JMxzAGQgQ(zMP9iE|C zQUn?aOjACL7ZzgIf%#nx#y+<+5{zE~Qe!Z;HIU+^5UCb;&}cC6^%O1OvV0@d1(((& zU=~jUlerhjxm;-XP)CE*gLUM<@;mqy{$QikhdlM&m)Tr* zBv+RoFR+pas**giQ}W4B5BXTmfXP%LGeC}Df4l@td^ys2X}Yu&$hA-02493P+&A6# z+V_lG43^mLLV@@S`HJ?y4r99@pRXO>LWUDc;)QH4*q!#mEW;~&2DTeHBZdf-ewJ&& z9rd;KwShDPoqrGS6b#^Q8-}EVgR2wFs9eP+VNJ2g;FBE%WaN1K7Ulzws0E2c;v|Ep z5S08r|0AFWUhom%O#VZR09Ro(Sn3|2+t3Z*zjVME=#LG zjrbf~o0Gu(H35!#FHsV=Nj@MU`yxG%!N4e91pnYRaBAKIqh>O&vDe_v;{n&?O7HIGo+LGrWZ(e|krJd%QZjJ0o&Nvd zv*D?*065!4(hBHnWWm-y21npPNg+K4+itvg56H`gz=iJsvv+&(keDwffids16av1+ z3SJ7Dk>Pp5Dov;&<9X#CK{X@9r;4AL#A1;)O&%m7cT2x7= z#UA2Ru?bMp9l>y0g|!F2)B~_WyJR=<>%iESf~)Vgh>0hJ144}u1s=OI;FQIMuY4L` z4jl4AaI>b1@1-o{4%!y`3+o8n@mF{fbwQtlpOBYwq+f8R*TC9l!%LtFC(GuV#gW&n~KWFE6_`B=Cqka*W0g-D4^7T(~1?=}o z>5B9Qe1s+7@k)TR{tm&>L}-6Ap+2Y^R3bh?`XCl?^__#`_yD|*m*HtU7hJl(Nhr8< zuZc&+tH77XNNu1+Oa&9|RcLe9!9BP@ngH!;FSJevSUx*}*>F6Z`H@I>BpUpjX|T1a zaJ;`kJAMeQ>G1#m?veJv_cJ9EvJ3HmW4$kO1Trj7!6&n%JZN9dp@m%pZ@w9Q2k)9j zga8AlU;1C0(j)ib_%uTXKszG9d3Xc7hS^dav=jskgDS{%HN*SqG&qh%utomQ75PHi z1AT`waK*h4ec()O3+~bRaAjq{_lm*&7z2#%XCV_Zlez;dOhNX}J){=+DG$J!OToU% zz>#PQTQ>s!+XruvBhWVJZ20rPz*#2)jhqkHvI2bt{AeTW5hPJ82RC0oFm{f|On4Xk zCLSP5!jsXVa6FcQz5b1G4cbJF&;#tm;i66y!CQV!*eZM%7QnjZ!Ie1?T(p^B#cT!y zdMCJ_Db%GLi*E0 z*qeBf6z>YFgb~nw&cnOJ0lo;n!NXJB4GD)|5Eh++*CQH`9cfziQ>zbb7knlBWB6&) zacU7%Q8L_IUm)|qF@OmLtA3LAG2}2mv-NW{aS6^>-f_rJ3ZW~BQPfIRdu_I+m2wU> z7Yyr1z_}4iHDGj&Y6^uF>8;!VoY*KH_mcOvskn;oZO-)RVkJ zZBeXJwpZ%uw}c1%CM@z#@Q;Do!(z`m59_(%8SdTW>&D4^4ZNqhQ^IWNDiVTEg;`7% z-z+O2g5>*&a(E*aiGIYNM3Jlv`zUP}9sy}x#UWgOxOSKNm-%D(aZs1A3yh@g;d;4> zqWBV75@8}Rq7g9*dSx%s0GQQ<`>vQK?1#Rp1IBCm@JqmM{)W@}Z~0UChG4Qhjod}w zU@7>1u!tM*4Oj^F6RgK|z{ffee7EhuZCMZ6k`~*4I3 z+_U)u!dRfnK3Io1oi!QdudH1iy2>RLqwP(lDgseN>)NUtQ(?!sgV`Qg!)F26un!zxO-=69y zZwtwV!=wvBJ>JRX`l`IC?g6gdP}AK9vP*Y6zB3`-%iIC}mY4}fz;x^czFYQP){Gb+ zPa$3M&O{VG6KN|9_Q&`SfDtQ2m?1SoF+7<*q|yr)i8u2r~Y zBcRUeB>&URxfVNbxs>+Jmgd%COO17t>m@fDS&l80?W6iZ26>hGo@SpmSCgO_3;D8@ zQ0F)lyT*U;gfKT8d3Lw$n(dwSoAn+f-sWX0;s7vapRbZ>K6R(Md zL^G%c-5^ZlmvD*Ro9?@8I1Y`~SH7F}E1PR5-5Y(kfXybC z`C~|v(1xMb;D(`BLOX>o4SS#u;0EPde>E+&I3Cpq+8J{DSdEomf zjwT7yzmaFd1^q8bU7^)J^=7aFtWbO*UV(f4x#aTE&b3uN$~5JZtC~BaJT%vv%l00D zs=oKq12CR%$KT-TL?v~Y{*9h1uS8c0`CI{1W6knz^2~6*WX#NDW;olEt;5`P)o1pw zg`O+^JCYegA*ErGY%!51A4>J6Icg}RPUyg+@KQM)$Qj6TRF2c=0)GXsj5rjN8eJJM zmUl8=Jsg}War?{~`xwnBw@QmTs3o8*GBjMeCvaA|r`M!~6TA}1r zKJ7Nc+CaS-4J(c0qUnU*2~v2f{F7bn9L}!wTyXTTys&&LzghfO*^~0El^@FYRP?ho zVZMm0@|ZE!R8Rj&I}aR1!G^oK9PL|mW5rmi9r;C8TiW6I%W=%|s@hleyt<%fh_$t? zsiT~Y;SliF9}|Ya^EwZCi3>ymxr!Krk4NW7q*&qK>uU}pF*&X)Ob_>eo?+f+-kH9& z+&%wcFlL?rkLpvH8BoZLRH9;*YLLdOP1JWXOgGL7{Ao@N9TI^?wT)(j1}Q%B9XNwO z$9;)0IqutrRnM*5UCmfRs~1);todj^z|{8tM{H7m0$3#BK1g67uu-HRQB# z*ste4c|Niem|$iq)0jQwKIrN0{ou3u{}Ch6jd*XUz32h1(JW1q9W%_vm_&EXf35dTJIsP#*^y!27g$l|S~Y2}w{THD$?o4JQ_ zrQ!#~gZ(SZBI2m`^aaIhg_}wT+u|_6?u!N~#R*qerxJ4FS31|Y?lbq?4}E4H`l)DF zsMWtmMJtV(2Kwj5B-7g%!0z;Tkj*eoyz1wf5tgncJ@dcksB+Led%?HT)m7u{1s=JGVQN`_XyMbS)rw}S z40V6?F2xYC6W&h>C>~yn79A*#sOVI^sk~0j zOM8?zRa7e)1&xU~9R4tTU&P9Yl8~=PrLLnQS+-5Yxee|m_T%Lh`R%fQ{}q>&m>XR5 zto)Cff1OU>eWa^=79FpgrECIeL74I{AOyEkC-4)}M}C;EDKpfbV7*rpQB!6qa;#t% zd2hm;>1cE)j*{v0eyCx-tC?i*1r9LR558g*}*Y%g!Is}&{e;>qUcFM+q^MZ^YRNzi)tck#?@$;1>P>=6uhnG zviVZz+6XM_PSpL#xgl)84b^t+1XtjwvP`HtUD~hkO-^3+gd8C^rRZ|$$Es8I1D?ZT zYodelf~Ki0l{|wz(h|@vUPU`^&de$UyfI3c8o7 zi)ORtfcmI!=LfDfHxAzv85BcB(IHI0desEHp??Q+!q&R-W$})J z`MJ+>7Ug`&a}|0@_tb25Z1c*b--*$R3#w+?C)#J~_No!oPNEE*BA)cK-u>>5%wUJX z{>Cb^HnjG2{K?J$mSYa~f?TicuUVtR^lNlCwAZu&x;?s7yCmMSb>-_K8z4ot_iA6sP#^(>tPcBL>m)8_oifmqXDTgA%NW1n<(D0B4VXY&h zBGutTgDQ12byb+iZno~O98+>BAIWQ!lakXR?{cBGd`Pv?Rpjd;HHCWhKxLAqnO3cf z0Xp$A8HjHX+xXV7Kb)wYuwAjfw{>?cceZ8H*{;6zf*IW?+d~ajPtxtxk2M4tGhpq@GM|e(DTreh=}MnvG-z@hwM^8M!FEgMpWG^?2&&Vw{`Z%obhElD<)UQ zSVy~4`F%or{Fn-aC+Y85HCfRe) zmn=*~dlHkVTdH@u0Ar5vB%~rL^{=&^b-#h9@wWD%PBLyXg@<;EERDHX>%Yhcfu)oP ze%Rag*s5nmjy$+==EatJD$#1aHOfA~{nRTLnvk*DK?cqg8#*%D5Y;%mYe*M;GI?9r z%r2@qTymsfM7|!ndxgG|rIo+g7O^(pH^G7?ktxbd%^uwhsLNyEp4|=W36{b{ z_IKxV`yE@ReSxFc`M+o7f1YgL5n&EGNp^yqrV7)!^!*M0fNN~6ZV}7^9RPDD10>FH z)7P-((L3T6CbUZ|idt-3NbklxK3A2PcPM*JW^!g__W8m`W#7w>S$lXgxP!tr?1r+& zFe+f5xobp5v^T15*iCa&gFt$O3|F(7*+u8FuVl{n8TqSAmNUOqIizkg$=qF}k1Un= zMVXYPN=oUYPb&>WMFv`{?cJNZm30 zH@!i>PkRFFqMxr;(P;P~LjVf&(du_J2T zh@(Pl>0gmuuwgz`O}mnU+*ZGa{``;`T=cN?dc_voP)~34Kio!V>6e;5m}-KihW?1S z9TI8|4}7D!KwR;EW-nXnmNd-m`%}m`p7AyFW!{709W}dM|N0MLg>s8xuzC#mShp() zdZGLzz6eF75&lJ<&tT1g3~*}$sQv6%gW7hxjJ{#QUTiukDDyN|^%!KWw=(Y1UDo_k z$EkDF%e8mFQ)twe7{>%3jW`qYTil_zei3y7f2dlMPZ60@QT`xrO6J-hdw)L6ol>6<)-P7ORP3u4#_cp3$W_(m<2_%H$)rkk35=6x)b$l<1cFbHdiooB&#?X39SqDLvX|JykPkZscnls$uwq|- zzD&%*^mMAmr$25?3K(c?3A5U2EvJ48PLv~Bt1d2Jc*wHoxcIfT4RsUaXM`@)22)Lu zR`#XEfB)K-7WcU{wem+&zOV3Y^<0k^y`!kmbu$NtI?WA2j8JWoVlD~TXRN1ABW_D6 zeia*3<16}@ZTcamV?RQ(4&?4Fs;Jt`c7W&2V&z!fL%mUVLcLRQhVUcfg^}D4_XgKd z*Kh`7y0{)X4X!mXM-|FEWCwa&-X;7*bOzCko}yl*pJ+4~&lraUTr_SlL>P+ouXU~U z{Q^ru{SnimN5y*L=f=@t`wiQaKe0q6x~x1W^+(p1-&2RCXJ&QJFD_4HL-5^-k@~OZ zO_6gVuSHxAuME?eCmR}TPSGE5o;P?WxprH&l`SkV=2T}Xv)*NCbAA>)D=)ICy+5Tw zd9q5WOERSDuW9n>Wa0=?%6(;W9EJ9~_ItK@VDsAIjApvK^F4By^E>Dp&zmGWD#%Rq zVHE)^+G69_fCmB71I7mYGNu^+HLeNR5o8IAjmn7L9Jez5dQ4w)f@U{~3bk!riw^!g z`DN1w#V0y_P3GVEW2@TMB=Vl98&vV-6{>&Ru{Jv7{xaIwV90Nb|C(UsEas7YViK<*O1O4Lv={C4X`@hyD z7NzB)wVR_e<928IzWC?y7le&c2J#x6Df=Riq^{Ecs-kp<;EMcY+HHPmJ`uby>|Vsi z$l*~8@>i-Y|k21sJ8_2Lr9CZZE!;L z!+0*fbFJ60y`nTBj|@{37Bqx=={jp=D{dD3%3T33p z2vV^eDx40h&Z$C`(c~qBgDS5~Hq)hYJhxu6uC-lr3p>7*2gPg3}!DR z7ak;=(mmk~v!Nl}7!uGsC?IS=)RfqgT8Rl4k;Ff0&rIwUA0PF`d`F*7?HA{;_iT--Ka}*# zo10ynWy$W4b15&hXiMqosythT+sL;=zRT{>nP4K=ePC=ZEw)}Cu53Q>D?x z0CpFwE&98JEB#eA9K3{s?1`+>SC2mlR@E?K5m}E)qmIxOWLKgyei7X*cJlx97P#H6 zLC${8%W`u`9Rv@?QpKMlCRZ(;uVJh((%npRp_wz0CZa%5GQWuraQd6&_88}gOn zZ|Dx0793R_6wm2pbSgPt))*ZtmUDC5E@znYlwGoN*3XVGwjDU~CIB14;X_D+V!tv= zc^gLJ#u+mL2AVntHw+&gomH!UVw0q8Ny$mJ_y-Xe0(YqHV3F=Q6)SQ(r62#Oc|Ypo zt<$54YiZ%#MK@Yb0$<7$g5~vRjbwAv^(`V#^S)=%>kiF5z#Td;$J83uf3^u zeB#BJ$H9kmzo^+ljJ;v;n_tV)nt$}Z@AqlfmvtG_3e?ueT)h0D{!v(F?9Rk3}lJ+AyxnN+r;VtLie>gF|tHG11q`+ttt&Ys}K-s9`$ zA1^hcy|rTUSj#8bR4a)X}$7K7%lLVJRJy#0*5qw^tq3i{(##7s=3-72e= zg?4hylxz+SSst1Z-Xy9Z`bzB2xV&1aaZRI(LoOO-DA!^$y?1JKg)y1CzEY_dQ^$Nc z^=(1c>e641b%IjyE$~EmLR?JJusWA&2iE!)sS2K>jgfB=54rm|epZjEcw1Ug(y44; z#Z#!nZ)=@rpW(dEs!brL3JK0P z->T?*=PYelQo_Au>At7?bhidwEv7l5f=~n9ZV!TA^JQ z_%1vsW>+%Pjc6BcC+oUJgk{s)3_$5`V7p5+_R5xl-o<} z%bXuwO5kkcA+I^WSMCp&-XkH9xOHE40J3X`5{0;kzLrSgF4xez(0z(s&P-(1Ghhht zX82R3rMQ*csH&@fY-$|ZIwd4f6)4KECwrE5*EkYp@flT@-S8~@q< zhb-gm_o|FFxerPn*Q|EWMilfb?G{s=@bginP>CEHc`0ojBmg zvR|?lSqE7EwcfCPvMqEF&MgiBMy*%4C}t+>bmw~FeHq||JPp;59q6 zN7qUZ%7JKueWZOqPK7Bcf$o%cC+UigImBBB)2HPein&G(^S*fmyDDh zxS8Rrf*$K&>=ixgFEA&=_xLeA6Iuah6MKvZxXRJ zTp7*;k2Gxo^F<;ZB^xS{{xa`fH^Ve!6i~lX%b{{8oLVq9SK3C|3+(spgB*jLO&Hug z!+V88g?Z8+*bJ!`e2ro zb-Z%KIfpqXIujhzVcd0{a|l!_Y-H!V6TJU$O?Z#c7t%3n;}h_ScoAmCZlQgpuR4dP!D6t%Ah`zj8X{)+t<7k#6nait}fppUL0UCHk4Bmq8=V&&{$La}tpAb6p0;0%Ne}+^4oosp9%!a(cj><9mBsPIfl-62b{tcjYDB8GX4iH?U)1 zxxuYXSM{Y6iJ9O*d@Riny7OCwF+kZJ5tGD!g=D_DKh5{ja{;PQ4>~IBZ|(Vx<*wmw zy-&t}m4-t_a36X-q)DaGC#j9{%Xlrs$Pb6HBNI5~b5u9=X8k+E$biX#$Bk|E`_%^J6>6eaSflWosMOV{wuR7cfDZMfd3 zPuEUSe^Q($JIT%>y#yGU_1^T{@vMP&)uY^6{}D*6E)xR88^ATH{jYp2e2=~Jy|=u3 zeYd$Fet?*UJcXVHC%ZjPX^XWN4q_=2&*+)4}=P6vuMyh-u z7aAyvNI8)VMywEVHs8&Egd5C#<39Lb@^^$%QHPvCE&wUg7ikB~%2(jDjz|$epLWM) z;45VbU|XQ&1w?nEp=>vH7&#)^`EC9&P#JL9hjCkgyM4h^K>ZX+1A+6K3UiMk;(VbY z-y71$olu=|3<$SE{)&K0H^Dpi3z(d0n4NsZx97+EKfw$p<4@r(Sx&6QXQ7?B_AbHtvieN<#?tN;U8~1d z*R_6P3b`_YL*B}lDAbB1I-9PcTT|cUYvh}V)A%G@l9dn}2{Yl4J;N8Gd!<}~O(L(c0d@F9-`H{&$mEHlA3=|Mh&S1uAPjTF`eh>0 z5OT&>fFCfIzYlJ+GLg#%JQd5Nc z$UT@Dt}P!c|0)kBFUWO-1l9EQQ39C@oEQbU#{Y<0g;=0`U&Ar2NyUW#}we^vL!Qcbw`0udk*AfCGe8(z_FSN)Z|fMJ!eDv41vVvm%!$Y zf}Hpsz_v|<-*sRjd@2=4I;1`l4xDEvpfX3ma%RA9YvAPm$F=o_HFkysU|#Y7Ysx_@ ztp*ZJ3G}5KyqnqZ{o6ns-3OK~Poja&n~tml&a(~pHvhN2(?Ihr0}gXJ5PZe|&!;Yg zOz3Msh`xjL?YBV6orL`w2h3haU;_QX0^WqZIVkM}*6zvun&#fVKItjKA2hOn! z_U0Y@6vNUgfOV{d7L^O<&kAQm4o5r?35B=F5J;Ymfd6v9-+hE-KZR|01OL1O_y5b# z_OAlPc^0hUH(<^0phfbKD=mV}z5+h~2KN3YP{7Y&+wH(7|L?4OB?Qil3x2%N2Xer9 z7vRrs2?HkB1E2Cj%Ca7Q%y14s9RB~G{vRuxFMWp=a1+*g3EIIa_&p21XJF0$GoXHg z?Pg#ZBy6b(zAeHMCD;-f92pwcR}NeAQ+f~IKM$nyMOeliI1iuT8Y_UcQ?RG;NJAiq zyFfeb0Y|JiaLuuZ8opTuXYK}^wOzo;E&^6$I<&xju+F!@u?0d)TZbHj_IDJ{A!K$V z*Wvg^NCSigU@bk$z4rTs&w^gq&%fo1ft8#Ow$LG9c>TqPA(dDR(TThYrfEOqDKt{F zS2Ez+C7}akTKP+G zTvKvJK9f2`9V2(j*AXh&Oe_{XFR38|vzvE?yBF(WuCXWFWiUe0#v2N@OdN96J7X-q zhPWZWLO!P2L!HkaY69d+GqV0rgYg6^nbyLc@BrVMuk_dPhxz0EUVj&;pv@LLp?^X$ zOxNNXQ48rH!NcaU%-D7o`}Co-GIcs z28rss(P3bf?gOm#Ui1hMi@Sh}3`ERQ7kDmj0p7B{P|3gJUje^gCOm+Q=<9G5HAHrT zOB zGVp{wjh_Ja(}d5&&I4)fm5frXI9ssrUHJ3h+Nk9(=1~81e;ugwr9~8+z%^1Ds>0Tz zGtevOzt~*t3w9PVz+1!H+Ff)F^f+!q&u%B&5yRm=*8pvTwnG;~bp{FbAbVs@<#}=) zWuiCH*JvG#BmU4dGdv8Gj8~QY`~&TKtYh3q`ObV5`w8-=S2*t4zB%vsntBu6i#$1q zKw^;LGSrx*s(?3xR%AP}in^n`M)$*#!MHx!e->+GkTbG*rXAb5P&!Cuc1 z_h1#|Z;DZnFS}Nur>8@*^E|M|G?(7;ZTV1tvG1Js54YTP-|n$LcaCBP!F%*g-+FE! zn9R4M9_+TPns_KbMuMLaa;X0Rzy2R+FNqLu!F$OpUt7;jsLYLlwj1P&<-)jL(4W{K z^p?88=$;oZkzsO|{29548bg1fr_o__FM1yx2-8C%<(Hqs-#~4i3hEHv3EBK^Kg#_M z_Vd1ALm$JfHrTM2$Xv;It400>`+~M8qWa7c{_B!^jz@zX~>#r?fdB6?7ise=uTmGvqvFc zdb$scj*t-75FF=!AuZuqo(8Qj3^?5~NEp709fh~BD`F`0(LV@5(q%-8HiM(Gh3rnx zQZ!XJ(00)6F{B4Q3+o%UWA*b*A>V;e%nbrUpjU=CHJ*vF(U;y7j(owtW}O&y8{w zG4G(d`=&2VtS_se;xtWkO6?R?fMOZ#qV`brsW$Qo?5XGgW@Ry>b~LbFt^QFJRn63F zww<+qwbyePT|?Xtxyw>7S-Cu%>Pl^(Zc;O;mQ*lVn=s%9&{*(Cqfi|<%zu}=%l*ld zVjp;3)IyW+bHozrf%2H9lYW75K%gRcTzFjc_}I$GO{N{h3Xjpf&RZ^w@Lz^hnXOf) ziuUAZ7H_X?Sl!Bz?!kmYY!9_V^F*7XI-*>mD%5N;v^Q}<9RmJSF?fn#_SRxEm>aHn z;6M1!_R8MTe!u}V9dp6m*mqqRh0P$^(;pQ&MIv1!Plq<}UKUDlm|D{LPrB7$l6q_D zVbNJAi_$vIcFbX9rn}3bGVp;g3>l8kmw%(+aAhbl7d}&d1h%Ick%9Ne8X%3JhC(mS@!#|O&Ng>-b{w{kvv05uunTsZ zvm?-?T5b@p28Vwz8VQw#Cix|Kh5RHuRaO%}iAF%lUnWk-{=o;}5qKcv8hs@{E1s#o zsdsC8>CFLa0(q0#+}msn+F?Ad?WO!7d&Tc!FS-W10-eq5Vb(V_p;fJ_iY!UYJMTw!ZH&W$o02(xY!(w)pLw% z$&ZBuh7fcj-V2^}-N=#THF+ge-L!;EfoPcz5{?@Y&xs^CLY9#6^g3lj^$U$#mv1Ny zhzR;C_(@o5cwtC$({Rl_@^7)4sd7wY{(x-Lq0T((q?*9Wt5tei3LDNvN|D4YMFCjE z>KKdkht%5?Q|M%RApL{_oF5s(B{HY1%d5RrOKT|GNXQNgaYVWMG{GN|$l zCkvr2^%{&~^uv0H_4xwM;M)fyNt_FDw6f;INbtEDrFAK!)nqY`J;VG9fYM!rT?UWY zE!kx-tY*m{$=l115qo8I@#okxc(d6BsRzwuG4dhQaODh5S6!xlmSG5t|9my|F&_#( z6xu3$RY+S?tk#AtayPQ=bo2zy@q|0o`J44junPu1=?_NR`{ETqQzTZo5ICD8H-uw@eQ z9Dj&d#m-W^c-x=B9rN~J2iW#ikE&MJq{1xDQu`0*XIE49rDq72$@i4*Vm6`)6+^G3 zPttQBvHS};g6u-Rhe|?09zq_I?~)zEhk|+i6!}oOQ2*IjWV{V7n7;#$2Iq!9j(QpC z30`1WM9${_g?XL>o=x7}?i^>LeTij!bw+hl$5B?}ZzpcW7tjsWy|kM&HdQ{@rZ37K z6HDab@^jcd@s&5k+1a9oT=+@WJ+=yag46FD?YhrKdK+`|`6ZBQI|hF$dncbvPLemq zdAPPF^ZmJ@-X89wOu55h>t*d}8B=4d!7WABYR7Q4)ccR0f?C|i*x#}jkWq6F#?Q=( z6ZB20C%H<#RK5Y$%iz6m1GqppQ+*Y$m3vk9RogUmU@q-Xlg4~K_+`kf(9+NgAt6D> z^sf|kv7g>4%npWR*SLPOd+nDUSFK?dt^F3;9@4EA%hG7MYOKnk+M@2D980#6eYI5)bi%?NLeI41nUF6 zIW^yz3-MlK^PRsr!|Z#le_PI3W?74^VfL-gC(IGgJuX#v3Z~~^7#C;NG@gaQ=skK%+96Q>2uPVc z;vUa>Tz@*%jyAR=YcDHqk8{p+jbtBrhJnj*ub7YIV%=oz}pTtxjx{Y_s~Zc}Bd71{v(cjL5xUIE(!ECK(R{t1!?XN4R##~OPpR-h$b z(rL1Lz>#~+{fpV*8s+Hj*bVd6Yq=3(5xSX3p*+C6o>y$37}+K4Akl%4rwYGNk33*gmmfI>J}Q4HbVaun2}ccY=g{P9I`Y_9o9EAFR(~4UaIuo0=Gv) zW~Td_=P=XLw$XCkN;n@eM?JgwT2P1Ul+pBdNK+E!cV$&rYcv|_^}>-&0^uuWvz$$! zZ<=Ox+M*qI94%pvYp#2!cO|FeRl+P`H6+9FQaY-^f5(5Jq0$z9r7ze+x#QR?%mP;z z=P{V6DYOj&zfmjaOIJ5{l&{9$S3HWe$BeLl)sPZcAMzjXXc}odYnG}0R4D0oP$lw? z+DG4@jS8=#zG}U?i+UF1zn%m?W~i>rSY&<`+Bw`8x+Z9dp#?n(ae7X$b$!`fV{SA% z%DL8RvYfWQc5Y+$Lb}u;DGjR+De>uaHg$tI1*XqGp^~pHB8c7ihQ2{8XP<2otl#aI z9P6FSpjsr1jrP>{wc=awpZqWeD>en|)kky~eigfgj26ao-#qi(tK9qC!(sG&u;X9* zOxp+B4f}iN1ZF3Dz(a7&`L*I=q(9WP&y@|64}oD}Z)*I4pWzc=#P2;+1z&_Qr4s_hkMRlaP}T`=Rvj6N8OH2)ZE!Ym z`oQ(PnGN$;eZ%iko~Eb^l!?O zkU!o+TN_*>qVB#fO5enA0Is}O0mp+Ug*^*>U^<~yQk})~>>g(e#sGJM2EH0krL(W? ztyS%u<{^DgxVB;}uqVlo3e%4)z`BZ=ev-coc{$63-h30^J|^Fh4?RG;BgGZV4s~Df zL~!H$r~QxpQ~mS&H@P+b2|^}ReLBTiVw`Z33-PVFng% z%2cuOo)GVNZiSEt{^2-`!`jLY5}V|s$qQ6ZdKP_z{z>;xSm+RX9QBoaOunbiDt=cD zRyWc-*RIqB=vwH{>c<%->cfq%O=m-GVe#P?gXZXKliB=Gcd4_)-Nr}rqqqa^9!|Zj zgZ-u}mDPA}!iaDq^aXK}ss_jWChU#yyT2Xx&EFBKtY-?9z8LpSM;Y|AdO6=X-@B$U z|G8tm{kc5s#p?!1afUy$(>x{85@Fr1T0n(L!WP!!q-QC??78VwFihJ?J z-5pvME0h9-Qlai1o7hbJJL&KLF;8eb=UkgR_r7ur+)4g)_HgWTj&N^tPj@HJ{YpW-A<|x9n_&5BT4qi& z`&;Il>rJbn=k)~~)HQr1iG08i(qA~s|<_+=%cy|G643OpR|g&jnv zqg8^#s0Mahe+n%^gYb%Yn{s)G2rf1k!J100(m_at$s6iyTl>Oa zbi(}6Y%q;CTg;a&LR%|fsUC5S_k3l|;O^$%5!`@l?}dVVr@I!Olxgq4R|^*d=gL_6$%=se;~mS)Zp5 zH!e3#H4m~RT3gs&+TPLm%p^x^XNfz3&EwAzn9z&ZGpq;p0yU$vvDcvAG6&9eGl?K_ zi!e*rMMk0!uV`%3M(oK|l6)Py#Z$Zh&sd3uYSd z#Bak&>_S@==owA0hdAGPI&!{%3k8Swk}YMS?q?8bhGP-96(xZaOIuI_>uDQr>2BUe z?Vy^P5-b;NFPSrrZooayar|^Fax?+Y(s(#d+i81qM}VV(*-CG;Mw(9;R~X6-@!;nf zO9er#m0Q2sYM8OmHLt>3xQ_b(+}_){CpqUhrZB^8C2%F>vU8an z>mM+;Uu_R_CU}(WMVv&?fO)_!@mzPk1D&(~m{KXi{ zFUxP+YS=wn=7@AUo!wj>XFTvItC&Q3pY5}4ENCCMrps*Ct^F)dOwCOPso%yT<2I_s zG|ke~)(kQOw<}O5IOk1aU0?@uS^TYt41J89AVP&{!h@nF;ydEw;w*6#j3Aq(RkB42 ztFnt~m%68Bhu=;Aw*HO%y&8??q_V5jkNhDBGeAXWJcg{WT4qg&JR&WpHz%047FkSQ&W?QwAQ__vHQ2BkiRsK@WQury( zD4Yte@`tjs>WJ!)@~7-Acmek$n-blyR)XgI$=q7bK28}s5B8(#V83I&SM33Ii1W5% zq9e-w1xosS7M%y5RHcZ1e}mu5gSvW)J^>|!|fp5U|l7F3}(K{-ue zoRIBNdMYiaOKfSji?$86zrj;zq|Ib~ZG8@2ocFDdtVPz&wpX?}G!GcPE9^dYZkltR ziv#Kcw>(QgKVvd0m-Qc;#U07p0b03*f-o!|7ZM+c*<^EJga`vqoZ4F+?R& ztJRsRv#RAPmoip4Kyg<7Q5FPVrkf=b#XCfefOk)loA4C$1Tu%WnX`+f_5`@DIX2mw zFgTrUm0K@Z7Fj--t)?!p#{Anj$tW}4Fzhq%jHSkfR3$apM4FG9aZ3|;*A>er%RS3} z%VJmqLo6&yFreIYmTuNF)?BO8T4J?Xg|;|bYug!{*EWStrT4MsrJZ zNV7!KMH8nvq2{ZHs7@+RDs*x;a2|prqeK(Qz4#Wi4RV9Khh5@r?U~`a?Py`IqCeR( ztxij-InlI{dS>(*dK#YSkLi!cj5p2n*N#$ z^ z9dHJ7z+B|ErHl2JwJ|uv;`9xAIr9tpnAdJ_lsI?7PEf5|&*I2-xt&*?_#n(I30 zX6O=i=X7^2Nv*-}e!pydxbc}{GdztH-do5@IsbTl#I472Oh2K%|3Z0IVQ%w zOp4ahk*oWy zD+VWyDf+|u@A^u8C&+3rFn6M;4V0O(g9>RU(;8EmsiQg3%(ry6BwMCim9P)Fk6y;i zvx^)Bj`Pm-t}*T=pbOU<^pR>fGkCT91VHOtg}u<*z*>7QSu1O*n4+AdvZyYp+d#|v ztnv4o>h~KMz5V^?`N#V6{ZIPUY8>ios)%oEP1c zQ|MU9*ldTb;g&b1J=7UvfuTL9VNBCU>Z^3GbSHJab$&XQ&aM^eNZl~q7TtTD5HNUO z^#cr#3{8!zjb(tOJxo2I(x^bwPLm2olvvAji_x;q+S;bK-J>rt+hLsW=?8yyZFO(( ztoCkZWv~hEW>7b{Ea-&2#T$_qgk14&Ns_FiVx=+y)CfDOzF-8Bm|9?b~96MpG_ zJN-8LP4kob4c2r}Q_4)mJUJ-+OG<@dq10OH zHTV*YFlCs!o0H7VEJrLc)=cY3TNk>Le#)G;?{Q23MgRA%GB! z3c)txkKnA8CfW+?0t@7O6myj=RQFZ&FqRKhe^vK_G4C-PAK`WcILr75_T8C(Q=+1P`%H=qE0eY>+*WZ&i#} z8kB#iny6Z;j;ShCGt>{%ztt3sfYs`C>MT`=Y9wgbwv!*1UJ$<%29SI3?V4D7B!waOR-F|OgZ3~{--6>zFvy#Y_>8B8yG8@Q?ogAw5{ z=oLnJJFzK;$E@HRyXD^nP^rcYShz_A!%S>jwJ@ zP0Vdfv#2y<4@APkBA0MJvFw<+(M6=O+)H2eF*-~ul=}3lVUfIt&<~!qExcjp^+4Ic%iG{-+DUZJ%`7K~$ z0pO3?NN5u6l@v&IvK;v?g-sEu?5n)5Bve~e&r}(z81+c?G4)P$8+DDUt?IclRWVL} zRa!6ZCz?gB#P7gJ5Y6Ak&19Rse|oOC_Bu6=6lN)n0d70b{0FSyUZdhb<$N}rWz(Q` z`on%i3&R}46409;ZiqLmG3+o?JiscHYY=N{!EEa7hcj2$mOr$yg2Dg$O z!y4d82J~ku@Zm|PkJyF+3V6TS0pl%Ay`&aXE2#lg2dWWegm`}&Jw`dDq=G5NXf;+E zO~x+NZ0Z;C=d@$3^*nP;aw3jAn0uz#O07n?lK2U; zXN@@rMyF)cCpfN{-kH9bFtge$gf)B!%Y>BmWfmvvx<*wzRNV6fcre+Sq^^l@7VphF5Vkh-z~z95}kzaMG{F%>2s-8Dv*woj1~VO z9xBGfFGVU*zR+K^Uc?b+izWaY|C}fjyk6X73nB~KfMyDgA^E&gj+Fh-yBbs~lbq8X z3+-NJJ)@^_`Y&52TQ{5B*47pbE6!VCWhTY;-geJswFSZIMl6ld4salCO~=t5I5!5u zHPcVJiq57nW+;=#BtZ029OvNr@Dt2w4#9QTN7p4#939|l1qhQ_fS%moy6;-J`|_^b=q4_SM?8qaojfqO3?E{B3=cY7F|o8ZCvo#-rNL~hAF*+266a$07P zu9vul3f#;?SbTSs6&2#oEd%@nwpN8&s#pyr`=1r(J*!d5Q~K2lGQS+OaWd2 z7l?WpyL708ChW=oi4ZY|T)E%3d z1q%JA03*I1oXPiilDuqoIA|Q_b2soX{&;>S-vqjpkNH*n-~9P}EpeOqAO2F|u547%Xa2~U}vl&1{hOrKM zUwMq~f87_|^W3H2%5V!bE!l3Bdn~B=o^aa$U;EHQdBA6wwG~j-NuY1JpW_9b`#;=K z+$LNpcQxl2`z`A!D8gsEPCL&zCfesP23p1RVxBPj?Zu85@EYg~TEYv#%lZKCFMbmL zG(>%XcaR&!xyzd5t#+UFVSnJ08yp5lfm7=K)6>Jd2$Wqrg1@{!c$Uutwwj2O4SLRb zfTB$XK1Zo{CybE=fH&*ITg7)G0pO!&6D$|-1l^D*{swM$b_Q_rb~yiZ++xPk{{lZ{ zI(>l2vdf%@U1xv~@P*T!*PrhOSN0pod}KerJ@5}>*>}9{Jh_m=3rBZHd&f416PR;{ zT?gG~Jqg}EM)BimDRbRJK6;_BeR_SoMjG=BMLl35}XK}b?m@1 zV6jr+8V&|p-+5J@hcFY6I=?wO07`4Fy^CX&^DkFF!0-+5 z9%aPfZk8^@Bm5N3)%<=lyX0UmgjF)8sMsbvu;Bf zq2M;Z9hApAcmuoyps*(bO0@>i->+E#>`m-kb{uC6Ao{j*W^rOTmF#2ePV6+m3iDW3 z0e9UMKGg~Ef4e}_v>BjL3s`@!SFs-e^1KZ2V&{N~AZ90lTCN%Dpq1C|`RRE9X!9qY zY>xueZO;PcS`1j%ae(Sx1=^DSp!s+bFx|B09_TOzdkpSk7%|IX*4z?QZc_loHV=@q zJivA@1y#};tS1n^Pf2$O^jIq(bf3egw|dtCR`w{MX1{x_UIk!}XMt|-ZFp}IDEPi% zB?Dge0(@o`AfU$sf_4DlZHGbIUCG+b+6&mpMAmuMIZzZ%V6A~?`vERD2=LZAKmg|g ze(?)n-hTtuxzbw;$X%GW0baQru)XgAi+l!3afx>%l*ymoFkn{^(89#%>|rvDd^Pd0X=B~G_n)^RyLrkYv9{;fJd%?dN9K)zJmvCRsu-j zNWcn*K}?a*>q7vo?GN|;;LyNp0f3c`hKO4>psj~Oi4Ftw>LB2l^oCMy4)4cUH2gvd z;D;YT9EngXd!WSr26fwi071VK>M;S3=7*ph&%klgdjf99y@%m_yWrK`@NVBN!FvEu z$d>_c`VbKFuK}5z38hjD@m4|H6riYWQ1&*!Tsxr`abV2nvPi&@%OJ`Sh&&u{>`==m| zT~O*oO2Cw~q`toT;TOl$MN<9M5@6AEIwhNSOC(wWH z4156}s=qa477ee(!8^kKueQP<&q$~nHRP`V&<0_OcCpwfMD`r`Wy(fis|In-|v9EI>q zK8y&zp}f-nuOxmoyekLlstnpz9kebQ^5H`nOCdTnw5LW8eFWU%0ka_eT)BFY;Rr z8Qg$;?m}Npf|7p;t;d(a_lA1<3Xx_vM3@1OGhnAIyP-~g!TlWg#vFL905U6v3`^lR zK-3Cq!~lm8GO<7|zFx$Fu?dA1BLfbBUqgHI)kiF7kNf(CFN+QkyDyK9aQJGk17z18 zZf#ht;62SD>$ryg6$*XJA6lmb$_Hjifa|9rI|Jlb3#C^L5tKqXRyMTzS}4sbxcMUa z|M3{1p8q#W7$G_f^l}q?gAMuzEP}&dQ$sJYHoRtm$JU0P&H!@63AN&dK2Jbv5ktLz z%pufG1Vj}HCEf(;ra7=kS~t{6JIKISFTSigzFd2txNnE3eB1^cZvX3%zVZc;A{HACZo|Qb zzUhH?vEWY)zmBd~y0R z^tC!)>uV3UcJQbR`j0{-`9=3{PfAz!TF=Ia|$_y$$OUs*$$i6I{m9KKv+ z(AIEx4VIZ2T3jHsnsCUd3B=*csx`#sYkRHW|3Bf8uh;k(K)#55xwe7lTEU|Z4UalD zWaP`IO~d0~rQE+4`aY zK0?Fq`+l8(Ul+r>l<>T-UPGY{Lg5I5!m7EZ65_rE1GV$H>jJuKl}f+XkRJ#p7Xuzd&L8N!*}?4CTtrwMC4-=`J(YX>uz|* z|4P*N8DG!%-*@}^g73aBT3>(g^&sDw&i5>l`O!Y$_oT4C!0hcI%u)uznQ*!H2jK4)xFxQxj@IDf(%O+@&$d_DHK3i;$UBLx zgB6A=+%(|3{DBGtclbYfdAyyxjojPpZE!8x8df2id7bWo?%nSD9vIPB9%yME?@iV= zPo6^Efz4k)8nWHP#}|Ozv=)MMrQibL+V&TmiUhEC5!^Xkbyg zIWxG+crB3UXdl8r5~6G39H~v#M}Aq>T%sal(c6fed(maLY&100cCAgV8dR~qv}ehK zGHZ2??h5tWvfB=PZS0nKyS$5Xu}Y=+?03q4rFysYHIXhT=6zt*JNMc)0N!-Ieuklg zp`SigA40vhOkw6ax4A2T>sbomQYzSu*>?6;Zcjc3nT!lY8xuLg5-~@9Ua?wMAWoL_m8XfH zqMf-3vOOD2$WckOu=d{5qb5 z3I%HZ26lH>mhFTk)pFC~F?EDB*TA%1h>b z@2mF;^H4vl`flm@B4+_p(7J$?Coi~J9;drtS#PI3|M8Cs|5F7AIYVv-=LNZfUxsW7 zdajxyLIj<`6ZbZ~i~6hXXhmrmR&gKnr#4qPYc}efra=1+_e53`PB!l!^d!CmZ-EZs zXK(^Rq4~P2mtAa|13RM6t+VM5%o@je_drfd^qw$AwoKLD|8VfSM&8JA(dCich>4A! z1wT|D7tKb0u{PTFXs=f+ELxMp{pHN~{!{y7`>!GS36-6+Z_FQEYms=#1kJP1n8=FA zKcmW{T12;KFp{zQ_B`R8&=y%-)8`7wG#%>KwX!T+gti4B5@tQE`@qWI!(Wps6}PHs72 z5Alp=!`dCVtVa>;uo;5${65@Rc93V5Go9&67t=C(fRk{OtS7v2_(RDlRZYON(4mn} zVww0cOL%K+C)!}dWUg=+WG)w#=HEqSG{wWb@?SIYAODlO>``Xf) z^^wR`MT9I0-w-vo@zwayxR}T_K_SXC@)FPMykv6KB$eFFzni-@SDbq}_h^Bn%vST( zkYpR^I>}P-DU2(+DDoHXBZ{#+!Drq(_Ek@~lWRZ1B!L^mMpv3w$~%N@6;~>Q0v(~r zkr}Z^<3}{DZ9>K$kJJZ!RZ-#?WP%;nCzp@T8}n;gdTrXS6ye9bFRgx^%sWy#p#F^Y zy7wCKQmqdm!;eO`jqMS4F}88U%|N?6kXXxI?5sB}t(BFwELf4ZCU0gQJ3piFR2fsl zF}}4?&V$|;-0`S}yhk1bz0iNq6-Z}ZC3}>2s_Uhr-0`QY%Kh4_PbPD z!*)l;#SV|7;{T587~3tJ4iG8-72e}rV>anFR-DXVpSANx|8J{O7k*Co_C0fSfwQcY zcA9N1%a0JN{6L{=TExNVZm}z(gBryI#K`}_t?VX_RI0XyUz(FYId5?8-?{zrvI{?z zji?!9sIWeCmU#Q|rec4QQ-rHX7HDT5K~ba^SHy1WS>f8|8ttC$v3Lh?=c9v#XJxpi zFet0h!6b_J<$6x$`(#U{sp@+jqMTf?2k69L(7?P$QDEi7LJkzbuw5=*aiZ%C=8i5% z1eNSF+HPjO{f0-*9gH3!mJ0_7)5*`oA}m~xz&pU!c%xvoq}FxS{nDGr(IH!jEXicm zo&Zzm^2lkiljDxY_lwVqjf#i~+M>E8n!qzMQp3}VHu*g=U;JqD_5P=`pW1x8`Kvs) zOIddDa;%inLI@``Tzj{ybW#A?eCtN6;B)m(s$5evrya3KL?=?>rsA$pNEu5ps0AjGX z9Mn67p`XGZM_U`0$G42HiVcq}4z{Wb#dnbF&MM>i%9RB(rw~JoN zziIXb<%i`*#>c*Bydth^?4F2@!L{lti9*oF)s|Xb^{${Y%k!goT6oIGkDF5`q^D*5 zS+u44x^a=SMvyJ942Ta)i~JJ1Gwyxt@5n77PStVYeco_au4#BpR_albK6gIAJ{3`lJqjf<_b$`)yp4?Hd|GWH5-ukSc-xEHUen?KSetD4I zF(gG~w=(V0ieg*LdIPdT`R3w;ssGrDc;o9J2LgF?>v_+b+_ePnb+~IqIXDdU6VkFW%(Y&;_rnF5#dQL*tUs=i7 z4}T9SlvkXtuQy#`X0zmi<)jh#3ky_FRr8g!TVqjGBm9ilV6-A_#Tjw@m`)X>&u#NslU*| z{*?iS(au}wAJUbo!a!B{+o-(Aci}HX*qRivR#3&FX^(b8#p$ANdEjEXu%yba*KbX1&ZR(%5mEF z=Ht%QEC%tCQ>3pHHQ+7zMY%}+TDnxchwOuWg_Y)e{6HiO)#Bx%G4c}4qTqMoU!w2E z@tS5fRm69VUe)Msz+bWgMCjUP{9K{Ui_H{%z5RjxHtu~=%7rhJerDxnl>O9>w-@m{ zh?UB?0DkDQ@RIOuVg7+r6g0Tbv-AfR9A@{Au9!p2+JecuIT|?@)a9KM;B}GQRPKrj7pS z)yx{_1Z_|NDyzRVM{c)>GNYtQ-8KF6^d7x4#l+rvQ zh95>y-Vo5vS;u}3T>C`go#dJ7Kw$GmpQGo-r#Ai3qR3C$E{m98?6i z!Vb`JUL4w8*hhwFa)aK6Ux>L7_bA>Tx3+O&)Pd0c8jol`@0ZjZYGHl4mJjsBEfjN~vO%G)A-o?j##pe?R_N{Qcp#?_UeQH_A|F zs|wasE-(bx#<^(DF032ye5c7iO8yki#E$Vtu|GQ&TO|4ywHa0Jijx)lD=t>Os=cZ| zV*wrwYYcw_o-A%JZ=&p`>a8*yNk}|NJbFfk7h5i9h1}y`07m>3^c`Ur$>laxn*eX{z0f^j>%#mRrG%XDZ>sDI%Ia)Zl)azn zMNP}n*9EKdJNzD)y(wo+uA(rv6a@!^SLRy`+q;o>UGNzg!rM>^iR2+{n~PxB<_?A* z+EaCnYU`@6)#ldQ^$$%O=mOUpRwaKj{!x@FX)jYMzQ}R8Te3vlN?3zq*m=PjWERp1 z6z!6UpCYkrt@62F)1cWQ7edNHu7wN@F7#Wj93f6b&8)4CYRjW~eq~W{W#NeY(YZhJ z&gP4XCY0T%*{R=b8bkMYonigOi$s1S>p+$57H}g*x|%Q{mJ!Bg`VHDe^;_x^>p$oc zjhH2!{@_~6YRV_Dn`C?OaLGW~5?O!Q0ZAJ%Eu2hFC0gT~v7Xp)d_H+sgi6=TkEnwE zu)s%wje{lyB?s2~WhqOgZG=4J1Z%KEVR=`-qI!2lNGVbDq2Nv7+@h(a*DFPJ&vc>G zQd^y)!ee8-VejKez}YR?yW8EukpODXS1H0cT0cU!LYJv`88@4s+FCn0gDXxU{~h?3 zTot_q@2EY}E0S{Yf1-BaJ#dz2PCUfN63<9fJYI5D)<*e8(=woG;QYYufvW%yiKuvHab=ONxVAi@W{CEO;kJ1JjXJ|U9&a1iPm_Bu zxr1G)_85Ajc_l=2P2XR?1vEoXQBq3;9pdcZ&ET{{$}ta_AzBKkSg9;ZS|}bPo+(0v z95R}4;G>A0!;OE`g;Z-Q zc9nc9np9LnLJgSU&*U=9NKXn593f zHyBo!vMfWHR>137!c9dM;G@9H{eWbFbg#5nVi2putwbteG0}sVPfP}vh85yN(s%Ni zDz@L@fJuQJ0-pyS4}9%^ROObf7Trhx9GzmILmc$wsO9-w`X43rdpy+N@^W2q6QhKQ{Bw%tb@Tr+~Y~){DJVG z?e-OgN&KYA(!ZrelCR=+;)9~$!ZoBnd5AnIoG6|u9UxCo#%LD#mj^5gm>aktkQWfH z-Y$P8UV`7@m3UX%@0e1wt?EWppDsUE`mw}Oa=5HpW&4_abr*EUjpu+iVJD z13Imt-qglcXYcBH!O2Ei5LV$=K)h*dP%m61_BqM6x^Q|0h0WjXuq_r zVwHNU|AN4z!1X~df)&B@{kN!!Wn$rF!CKBc*L6#<{%&1bwW1=wG@!J&q<`s(ik{WR z+JQQUL1NCZT%s>BGNu~%Gt;bb=F?Ok;}c!FcD(ke_MPs$A<=Zq`jv@sXR#PwHR?}3 z5}lUxmJN_+$)3pmmPW(X;cek`;W6?t*;jZ<^jy+M?gh2gAptFeHU$|1TL-@n{Nb0P z&`6(={gA)dtz4_E&keilWpzY#qsliGUn`uIsnvt)UTGH@KzhKm&GO7T+$OTVH=i}_ zG2YO()J1CR>IT+*tc%hP)6b(0SynT5T}7-!UM2{eoEM!GCrGaXGH$u#FYyPVmv{<{ zv29ow{tted94G23Yog@%4G;Vs5)`&7tTt2;#tu2}-&@&7qQnnyGu^-GN7R}6B{dJL z=!yvyx{9>Qw>6#WOu*Q`X#QaJfZp$L8k9q=R%pAebrp51YAdVnR&%Py)R^nO=z5!2 zHk)Ii_ZxQ^`iK}J&XDM&^JJ}MGo?4g7U4YLYDZ%yP(SPi_8X5Bg5Rk8qw0Wv_u#Ri z*TSMgSB6du5d^8#Po=v^wO}8sm202%u|Z!KShuW3T3uJAsBzYq>K^F&8m3V>fFhn} zNj5*T$jvW}lMMCR(e=A)ztm>bPN-GaFVSEv_W z6XuhR$TzqJyM%oL_RAyUsBokBsWeIPP2Jf4MqqJpQpkW1CUBkqLCsC&R>>gzEdL+& zG}mTkf%Tkmq&{7%&?|K1+95Ey^);*pHp^T}MZE*Q+X?-7{aIaU{h>NVU3%^7S`^fD zDs`KUW6c9>ckIFLH>~5Fa^7gr7s$mZtQVe$^~WAyk)Uj(M+ZR-wIu?CNg_nrQhrs* z(S-O12mTS15ZoqsZQxD6_o^UenFJ?iAOkqlJZl_zwtDk)W2C-Dm!un`3)0Qk4TX4Q zhADP|dOVUiM99fm;Dy1EJB7D|wZbCdRnZRdPRV#F zB4cEqA;OBHV!q724?F=da3=8^SpZiYap<>rvN*uJGuhf zgohK$2q!U+j1}G&HWv*MH5XkG#fl5XMTJcpXew=OmBre+%dHC)pV(cjmBvznHpyQVv%+pDwbS^`UBEFiMm8B>kB zr~uO|(=#|5oU%QnMm1s;%B~}n+L=&<-;6fLYPsuv) z@SKG=!-~-WbR2jm_2T}^p20GE+Q5#|-{4D|#bnR{bQ@a>>lsUlS#RoTGE!p!1^(5r z4Qlg%;g_M%ATd5OKBFF+Qb6PCxpfd7V}Ir_13&SWCzN%YO>y|VU|>8a3$~(junstl zUxwd5O1jCX!kMCbqA#K@;&bBOlC!|VKQ7rQVM|Iyt%TnQ7kE*0NBxoUpk}d_UF#j` zdF<-wl)>!bExp#}XMJbxVQNY>GmZyFeoy^#9iuJOw%2{o4FYz+5<_=m0##z_Y?)}i zW1G&{?3K=ipgudD9M!4*U=Y2<)qAf9@G}H z!9jMDL1ulx7#;+4lnY>x3c5um^Y)PxWmLI}IA+ zOXD8uFCW+0;<5Im4>3)FQ+gM+hP$$Mu`4+eUMv1|P#9jsLCPK;GBu{un z*g^DAlp}g2x&x(^Ci*411Ssi#!kJ_j0Dv5WGO7nX1-_9TU*hy8G$3&xz3&A z8Oqwn{>CZg2JnNB_JXcx7CIivC<7lzd?N;v4@o|F;W~wUkrw_p0RQ!#@RD$`{x;SbS5o1oD$_5s-r^6g2FcKpW;o>#(->9?y9IYT?=1f(;uPrN46+5Uf*E`< zF@)SpegIyv7e=TN!hyo(LO+lz`%S(k_mKn1d}1z&QLBc7ZPL zMRyNZnPatpeJyH>P$sY9Lf%(!7gK>kw>kgoYZa8JaZ4r5MUt` z(xLXf(BJmE8^cKO2j>9y6YnSAf{>tJd=qO6Jzq|2fVjfRiR3bJ6?uSsMW#bE*U4k# z4p1@bPh#YM#BkyUZpHktE@&At3i#Q6fd8aeYrLI2P2HI5fn$QbF=*hAu=TSxu}n6< zG1(xdgTMuuVq9okVH^r-XKEOs{xLNMZl2fD3_M_~m?n;GpyF}NBLolY3Qk|p(fWaW z5gbMT#TMgyq7QM82qSlrU&%7kN|uv47>iQKwV|G@7m<-O*Tw*<4>c6V zs$^ica?MZ7%Po_wt8HoY08ks%IS0CnJ=0j}>?YhTypQ~k$SuJxbSNh zK^}(DF_BzL4j_AjlhQL{4&g@x5KcT3PrwJ`O8hF;3G~@XG)kc3x8Pj_)yjB4+a>`X zeu-;0@J-5?C-mR8YHN-~Z0TUWY8q~uM`=M{pujkUT2Gy(&H!iWx@omJ&O%uA)@Jl3 z=7pUEkCKaSr)MFH23Gfaz|?+4ZU~m4^Dz>Cfs2Vr!~?=kbR@fzfh3o75jt?-SxbZw zg?KLh6W@dP#0k6-+l3L>VzgAy8e0859-o^7xYiYb1Ga${_f7Cd9&4|qzXG?s99*A+ z%-3P}{Q~7Oo&bJqxp649hB{8=QWH&n<~+dF@3+2y78Yn90qVdy&wTyigm<`@TtUmLJulN!^mso6LL8@m+V9~CZ7_K5Zk}txVswff{XBS>=xz) z2kmS@cR^?5HxJ`(1mv@f)yMnXz0x(pIl#fS@1)n+I#^GF%EU#Jp4vh+qvjYTMvZZ$ z(PeB;?FD9GZxdyDW!?!+Bb#kWbOytBY0 zJK4Qhuf64f?cL_;?i}O*~vl-ex&Uwq#!868tm8IY;;^y$4@Sh`F1=Gus zUFRGx?em!K^dswG%Vl#F)ap=hGv95bfR)-9cv>Rpt^14`P#oW38f_j9oWH%cS~}Xk z)bZRIWrJf&xizJQjLJ z8I)rV;y>kva!#`Xy#Agr_ZMd~M*)*dFSDgthMK3DPEa0WPvap& z9|Om5Ku_qy^grNSwaReS5D97wFQ`wZWHZa!!*-7T$vExpK!3Ea=ek$OKFo>dZ39Jy z-VkFeOo6`xb&#io5LOHPNeLMRW6C75DOm$&uM}b&5lz(NdfW;rHTklti_X6b2eW|~1=Gn#=z=x?~EXX%IP zCh9D@iNFTkt+(on3}=itsJAAId8~DVEsJ(BJstO*ZQPljk-$=2%1sAl*ev9oAO-xn zx8rdz<_42P$u?vk@-OlkoFjI_`JzARAdV1&iOxh5A{53yE40{R=sBbD);J$8!FGV} z78{$29u%xaI`j8)m$OrWSMi5usQZ!AVL!|ar2n=4FfTXFq&6B$44r`k`53N+8tJxb zA8Who{()J4yq<*ykHo$SDyjb4#{a)1DJ;o!Bw~!dxP}^#8DEctvtbB<5%#%A!<7) zJI%xvU_T+^C&)5Bn*Kxa?=G(F@2Ec`R^hRxL{mEK;ZDvh$?V{Sn zwJ~*twc@%1^-TReokyQ)+-`bc7FuI~UAfvm)%n&vnU%-x%y|Xuu#NoV$O!ZsR)$$| zFI-0ilV?caB9hagJh?!3V)r?Hsa{j23<*HxehH$K6G1kTLvA++?=bJH^Fy=Fu4zg?TuY59>Tm?c2K2 z>e{OP)tnlnc2CW#+O4$@YP5B|wWYeQhUvyN<|h`JZ3>eL`YCf=Q{8dwo1ACd1b#21 zJ9sgi7R&?YkU>D11(CCOYE#!1w#QU>oluYnNxV z3v(Q@4YJTMM{|SAW}mtX)mtkUmm?J&DqNKXRllpIS2d}cTJ5c=uAiW18HZEHOtsbw zx`SQptaAl<;((3&md6M7>Tbb6D9IYZ9=r{a1|^&iqI}Un@n-Qu@oVvLaVPOd z(Hr4SvL~UyyQA9?KmKhlk6rBE;<(IowT&{5HJ;T)XxG$@u2obosYopATsokPs7R<7 zTv=L)SIMiV*SxAjbgT50#{bOott6NI!%WRDhE3MtnTp z1>1*p$NR&0JP~(-YSTcn*G&C?R%{fx>)Hb4nC>M6<;U;d(b* ztQGwdMhW|q*NGZ@KeiBEfTVF}a^3;w^Q&i@^BuFnnrgmBwK3SWUF(cBhifKP@2ebA zt}HDm4KD|i&}w~EtIExlB~>%)Zfe>3WiUQYG3hORtwZhI0ouIG6X;dI$Y|&0@s!X? zcA!$M8P)_7VHL2})fq2?IrS8ni>=3E@mf&!y@Lgztptk%#e$D$d%<300&)gvEVwK< zA_zpc2zclj@P@quW6x6JUqS}ge;q_7(O1zwqO~GF@iwtu6a-hu$H-}99Wjk~g{>8w zL)wCG&<}1cFk4r<&N+)6$7#a$k15@-UbnaYM14U0u-cAQjVd~prR;6k zb|{mpYilj_?X^Yvbc2ctw#>8!Fx{B{$JAGVIdOe&XFR^XI4tfC1&TYR#ofI)v{(zp zr4&lB0tJdwphb%ncbDSM?y@eC&Bi_X-jnJ6f8R4tlF7`S>-U^<&z<|eK5wD_P4KCr z6Z?Q|f!%+pyg@v!T%uf{Op~T#zMQJsrWQ4O)t6Malw(x7+(|^!cjp`od)Qear8m~{* zz0!8np4DW+W*wu9l`e__UI6ZF6$KmC1h4!1dE2ZVdj;bRCu%NXZ6W!p0g(ZnIWNItEq26qIIRs;vC>Q=6>wE=I;Q$yMsVp-wT$( zcyX$7A=)QaHAiVv#;Y4^|JI(+Y*(*?m-e+P7qV-R$+JdKsR{0I`dgNNO|INCR zc`R*L+O~|2SS=A-=EbSrq9H#1Ax@YK8-xG`KY%&MKt zQubT+Aa+fb=F+%V{BFS^oE95PWuUbx!g_h8?XD}WKds*xH8J{abV2mJ=ylN(qsw4t zf4QjM`aQa<+TS#5)Xh}QU|UJ>BmT?=73tyoq1A!qzS7=T?olqF_So!}O$8lIF^1c@ zi*n!QHO?K9eLmxKdVTQe-p#F;ugXo&I+@cve}}0<;a@;bzh`Z3&v0(^QY zH|$DA1&;cMqFS1*j8bjEtZfw-uQox3oP<(}V5J#qdh(SZx8OrN+wRsa zEtXpa%7TZ+-T6CnO5~Kv?UXw&XIAFhG`xM3c``RTzc8;(&eZId`F)Ky3!T<{+hH4H zjduzjlfNbQ!8)v_tUJ;i?3bP_ z&K4>FA4cN7;+k^;SB*W0U9aPqIM&6^;i7pUi}6qRtHMiZyYe4!j2&0^)~wb#bYfJG zsMzSr(I=ymV*ZLz$F4daLcY)-rU-Faj3 z7v^5iTW?G#$g!5QXJM7-4`(0OK5sDaEA}E+2Aj|rb}=_dYys}-UA@ZY_cRJiwE%oDEhcng&u#61LuE5~hTr(xgzpNx^Y#~$L;{8auNABBD4SHva2 zTYjkO48KT{Hc?kbuZ^qMQ5`X;(TO#hgkG0)L|gHh$NzPvH&jJ}udH|wFgH=w$V=9_S-%nF4RUJ{()pX|Hfec+kla@(_PAAy6C5 z=S;|&mpL+Ha%QC*NA8=vjk&LL|IC|c9BKwfyH#P&wOvBH_JVSwa+UIl@~rZ2*woD--Dj(ADD_GmSRwMj^>Ip^A(;7Ju^&AQPR3PS9d0MP zo=xOha;>pHB?-GKN(iGc-@E|?rFu$Um8qHz|M6Q*P57>2bb2rweu<+R{Me(xaqx}a zt@~2fOj|-5(yZ3}2HU}^j8UEv+luRiFZdYF#TdXg^+%{j@HjBmzVuD?%yF-AO>z{s zm$M1h{gxhPi}8Tri@fvsH}Y)xGjj%Ioy&TkJte6yJxCc7;F6=bJI9S zQ|B3X72njr*w84TrFs>gv4g;{)?TV4sgyI6cI7eUD`j_8SoK6boMsftv#?t>Nc*Md z;=e)~--N%;)#Vy+mAPD2$8Kb9Ge>}++K|1;_5gCh3hoh@Svx?}l#`B2PUUcAKb2Xv zRUL!1s>P( zuCGy?!anFyq2a+>ew#PWJI6EFUDs92`Gq}L*vE1NKK;sOyJ2U(BL9xzX#UT633*cP z%)H}km+O!_&6^vr1dZ5%8O>Z}hH!C0W$`Sqz_&{m zq;|?$$}N~xg_O~%{mKQ>H{uI13v=8Ip_Q~@!>8dKg7PB4TpZQiS2`$hRNDg848M7CqUlI~S*MdI=8u({=r+YHo-@7V1qa59B z8?ALM)eAnD<{Ph?wivG)`{lRJYnLC&uV*rtCYT$UJf>^rYK1o2Y5Pzhu}pVmxEFfw z`fmsGz{p}%>;!hYkF)ZF#ec=J(krQ$a=P@V)CyR)%Tx}@ER7U90`YXFI1#)Pefd)0 z9sQA=&VI?(Wv^jXV*vJ0rYne{?ErkNkFo8~$DV?Bw1Kcn@PPp#NeWALrBAs?bwl+* zRSvV~_8Jk}BW>!*@Bp;X*n!yn0W<1v)LHOWd{X|Y?56CeoFQ4oQeu1IUsx=9K8)0w zF&h-C!<9n2!8bHB(9B=SyWYLR740hRJOS3)kCt;lb|a64)1)*_GThAn-teRGl{wQ~ z&AbZOXr6*CR>nRNNN2gurtZ$3%fOCb5DbLwDw3G)jD;D&W$;;Irua$>qR+h$`v85L zRjHLxQcJOua93bN4{$Xa@P2jz+XuHZ+k+%mEM80w&%Dq&YjI_U!9*gI}Ce}_k2}Yuxu;}(fpHu;k&ur|-HH5!JFPIjr z9%$-s;_Kjj2wd8!t`m;^_5%1U%NKUG3@@;l^9n9urGJcZs>yEtXz6DyU3k$_7Km3f z946;H_ZRLq*eCYhs|L@fE7SlxKf{Wj89UpKPY37wIw4gk5DtkKfVojx8Yu0QhKS9? zrD%UU-rzeX^y6=X191|NU#fzMYbwfJlD)xH0e|CqFt46wiG@{(`*Zm?!3Un?A;K-8 zyXX`TNt>h*@DG=fs!DfZ3&kr(gU!PvJ{7mYR?tZs!D*@y2a0vXdg6Lvn9v>jEHn9U zfh$vmU&7twp0i`Id!hmAdxzp{#nbSekPjSeM}Rmq-~Y9b_wIAg2isX?=VtpJTavY1 z;iJM5*1i_OvfJz}C|NkxI>*XcZ(0Ug7uf!CoOCsDO>vb1rd-(j)?YK&AIKib;c-CY zugi8p&R_9K!VJO9pAjw#^{~>&ODDv3!b`rgP+2euXN3#=K5iQ%o*hUvOSxr`1>Z11 z#d?gSI&69N5VIQC9WR)R*o~RNvAlu%0yW!SXe5?E@5&Uv7e|Ws#B)+CxJ}059mFA` zQraSQg4cJSI7R$gj0SJY2SE_6!gXLD{ld56x5DT0gii$r!awXJb|D+fZpXN-px6>N zhpL5a!S=ypfv$eAv3p$ZZthvGdd@WaXSTG$9q_7;z$yiN!v&+vjV%-5|F3DAf&Os8 z`U0%JYdy!^{oLE#-+CMP=LdfYwFF}t1B{Ec%SU&e3dhx2dvGD5bn7IUB8 zLLy%gw)sK+6Q9O!=gzX};4Axpou|*(p6pSkGSiW{%v57*vBhB7+L(CuJK(?_ z7DijXJg?(dqZTT0AK4?&HdmOMj2SYhBly_(aQD#5pgK4xumkAE&%BR4@7!lx7Uw^X zT>CK_cmQliY&Y-*Ll?q;gEwP^owY9l9%OC%EazSK6Zh9ZylUfF=MDH3!7V_f84r|{ z-0(HURJ7@QwmR3A>%fiU;y6F|k$=YL^Iq;4*B<+2+VNX}TUC>rfiZdo7)|BC2{w_< zXRb3Gu$oq|=h%Vl81R0MXXCkFv17M9f0^5kGOZV?iGK^9i9ulq^ovhC3i)djx?)rF zaltAkp$D`TGI%Qxh{_AKge!bi-iNeW^WX6oFuERceYwV5h+PV4+#g%hw=p3guhhp_ zejP3z{u9i&LxYb40sm2d8g|~k^VINc0Mb`UXDvrJ`zc_h|6%*rHn?zo;c#m|+XcsU zpxw6vI@@E%udXQciL35|?l^Bd-xYsu;6uQQ8P2uPDxfr+Qk(=H&0}D6{li{F$+mJO zc@{jd348wlofd{$JOBOaB=)a z{sHDK0Y;IOd?+$Hd=eulZ?R4}X-DCS@C?)kuVecqB)C;$&|puL6drM13otNpUm1jPCSu9ogvo{-n*bNUYj zf&m7IOc%qYfPd405!fZ{7Pcl=9c6vQjo`2F@A+@|S{O4kpa<{pXZSAsJTTv0dZsgkQoa)H1D;-rGg5!}*Y1@jG z{QLG&Sc?_0rdS%d><-{oR`8zkT=3lW*6<66WdT-GVt|x%DV(l2&U6E>ZWZt+8`;Oe zA#T8b#!ujr(MR&Q+WZB60l%HkM$aA2WkVvQaZ0`{P{b^3Tdq6T2&1|g+AoPqf_1r; z`;*Jzib49XgDfs1j1w-vlk+nykv))$UTC4Yf`d z&835nvIEzUYrz>|k?aP(_OHOR8iig_pWP41c@<2Q-vHxaH1LFmVF&-vU>P7`y#W*B zkG?@b7vJmlx~IE-cP?4QyZRUQqJ~Ftg{e%g)VtxNh*=ROfr} zySYu=LGB9L?**5I-aQ|Bbr!dad%?Zp7D2mA;f`>^0zM(h_r zp<2O|XAUVQg8w!U9u=+??iBI_y9P4@PXnjHq5aO=(7V?2+C2tLd@Y?>_Ph29V4nKZ zKGW9C#^ar;0l?5Z4z81pj^@se?w+3SJaatzJ?p)@d;xzTFdf)hwL<$tt$-eNT``Dh z!u$#gc@@iW-B7~c!Jzm7*km2}Q5e^A_-=d|)JF-7fh^R+JC5VubJw^Nz>|B!ZR2i1 ze;nbi0~Jig@8CzG=Lh(nSa-7tdBR1ZiujAzPAVzQ7t4y5g!0g#JH&2au**bEloMK_ z=cFQyC0tkT6xSFdXC?Q7)v`_5pCOIj7THzg-Hy**W!u_`^=xpL_;9Tqc#kta9u_xP4*n2rEx;nb5yNWxv zI(LKLkMpkbR`o9P`n>CXwXtg!yr#f#Xc~GOstu%yT*XR-4ScABnf91REoQ$*+kea1 zFgor-p0$T0`3jhA7OpDL-bV7f_=fx}{v-BgcI3zM`}lhB`W5G=@vHc!(9$H zCc+oOZ{vUED-NF9kzTK-wP&+?IgmB`I{Tw{G+ zS*&=~fX(@le@qBjjN68M`35U| zy?}F4Ja{G`1!n|*3M~kKiShUmXfC@IU6~MbiOpblv0d3T_6Nv=y8JoL4Ee@FbN1&K zLb6umr|>U<&a#tF!Q9D@Io(0XhrfiyK(iFZvEoZHUdqL4z;Iv+Zk5!qzk5nIG3&MA zeTYH0(_GvuY=eD&6nvoRd{@{qk0Ga)b0vTbBEolh5WdSQ%vOaZyd*pf_-4xCDlJIeFHy~8cIE4v;z*E#FBW`pG?*?G~i z)#-88c0U8&YFBp|V5_=3HGQ*vAADndhp|pOI}jb*9kd0rfsyGBDuG|t9}?pmAnG|3 z46_in^%^jGtcG^WVl8Za%*UQ_0qz|47k3GsRTg7pFMl2K;V?94Jn&Ty!E1gIoSvVA zmRSA#gf(Zg_z2#qzS3LiKGuC^OWmdZQg3MmSo^%<1~5v7Ax##8sX1O)3F)~PNSPvc z1EVvJT?ei46uWrJEAE76hAW4+h3bW_gY&+4@Dk8p-}ndkpZO+&1BLTlhlYIP=?wmq zJa>wFHPB@5gU9+e*B`EruCYL5wK-b@XLgT!i@TlM>1ynr>>1|u1A*snZd z8V3WAIVFMAI3}b9#@Q3#)LjVoQIuq6Fn<9tGY9&$0h`OThd27h~X!cZ9czHxX>$7N8Cn!$_#*>Ec=LsqCo-JK+yc zZLiwf)4R@l*;~f9$=3i#$j4CTG8jkWf&rk~)(JHU^~c_O?U&2r18}VlDXRae&hkpXQzB79t)}m4Ihhj1G)249g@UNlr zK-|3@oE?k~{v4$=i$8>o_n5) zo@nnp?|H8Pj-Y4MEDH)2u;xA4bW>Y=tM#I zgq4R$@FmrN-mk|e!gD+ahF zu+3>`&lG>D!1zEGFimy_-v&Pmtq$b_q2n?zuqr90DQ*M5doBFtQScaag=gahTM_71 z!?>xKE1!maSRB?*D=_x9MVn6H7xTZP)GM))G6yxVnO_a5KLc}&FEQFH^BP!=chO_l zaYML@m`h;Q1)8%9&}QE_<_43>XxO%pB)?!S`!v=I z(pWc(Hz_b%X@GfTD{c_R++@rTM`DiO3v=8rfxcW9{L3n!ex6 zN9YdPkPDX!HwljnF9fdX6<}oA!Aaj7h`>t~e=1%n@)a(Ho{3{BqTWX^-vj@48KlQv ztdU$`9smpX9acK;Gj}4N8}OA}ge>32>|k~?>k)DZGZi=~pD{^zJJ^r7QWW=r*0uw_ z<|&HNu#9>D=`UK5i*)}22I()rEu8_sXpL}1AnzuE^Iaci!+D{Xp@*>IFN7}P`#!#p z0BiaZ&Ta!eH#zhaX!uV;&q8UTY#>mp@stiv*9*4~cM5mMTxeK$IBIZOcxw1t9P@yW zx(bM*8-aLw2&kdwp@|+vkWo{BFUJ89uQ)IY35~Eh#?VCI%uR!an6CH^=(h`jh`S!S zKL|OpL$Me5bGz|<1jly865w9XMaa=W0v@L543xu?XuoLS$E6_l7hytO{t*bWE0LEe zIGYvj1!UX_;UVD`utkR>r`2%uM4szF4|fiC1CDU>a6k0#E+|Pq%y4@m%uxK&@f~`_ z3>=owao%|*x$crq23qZtu&+d`oAIU*>h zg}@)p$DKE*(~CeRK8}&I3)rozk-Isl{h4To(I~}mv`YU-=>`M!csQ*NSRstu)~(kX$l7zceoxQtaI*sd~0ZMg_aCZStOKq(AkR$~Ji zVK&M|<$jKo?*PU17W^<*fS~&~N_iB=VIa~TL{1Ol_Xw`Z*tEyc$4&sBme5`ghJ=5GFKzV4U~vlllm)_={?Gm zj(iy-_^O2VO30*P^kN=uM);&^^g(P4!GTvTQCd3m_(!;&RCYRI(Z+=NNoco(Qz>J3 zMj?a%&x(x2Xh16IDF18pqld`BZPdUmR}IX5EAq=^syI_HXsCE3Q1w99VqW| zon6D(Ej)8O63d-PTiwI+kMJBFk8#LI#jjA?gx{NiKAMYC7NCz2RxF`Q1|w*kgdj;6 zn`BoImNMa|mIW#(p@Y_pAokYBSgsFzQ9`I5|U>u;wSu21w3yq)U*+Kkr9On75Qx>kMAQ$yzel^2w(UEzEdK-jZlXP zdpHeaCI=(K9Kp3DeCtAB+Y+X%9es;%a0v~U%7*QBIAr`xLf#aSHnmkOP(h3Thag%7 z7??FsJ{k440kBdD*|rU4`E+!~%#JX;dqj?&(33qQXWfB%-2-~12kw1|FrBeJ&;dBj z?SQXJc(R1VN_A8Zva2R!Afd*VM{SlwzevOItQAX;_ zi(n}m|7$ZU8KJBaekh@jQi-US$yl?AC|40<)b4! zTvR$LO}EJLMFi2i8@}l}m7B`jThR~JZ66%{arDDy06x7VSEvrUBm5VLvm@ee8Nt$R zj1&pyxC*2J;p7rBbqvZ(sJDa~OPHsG4NF+XMeQWF72P3>W$KM;JV7YBG@ht8mO+0a zjN&RdYM^cj>6S_+*EM0@60&at{3onsYD>b*Cd6VYcRQ4}JM<8hWr$)Vw9D6u2{^_@ zjxmZ+I7R|ZemHECfst}jiF=|Jx}tPcHbOxr%wR&+rM_MVqoO+UQa#e!<-RU|S42)L z{8#_g(8H?WygaTXp;ZV;y##sz9fZA1tyLD+={{jFS4G)sAZ9x1A|*m6ZjM84yLOR& z*%7tf1-*_wbk+qqlv}Jja@;#|^ox|WsJ#ZjXD|qu^zzXUCF_S!)PLo+r+)rLB$lp- zu{}!L7HP_u)eTTqDrd$2#&T)ozc_MEZ6f!zvj0~G!hNQHWpGChQ5>a=M;j8BZwZ{! zH{thEnUfG>#mGTzN+qusX-^rKxfSw3Jyb3wm6pog5hIO$>5R_hgGQc=*xUv=?-0qq zJcg+x?J=U;pawt3L2XE_NbN}dN0wTISe+EsxK0KY%KSFk|J{ znug>sUc-!x?*Hji(mPsQBNXo<9AnBQ;Tg+_*@S9L$jPLy2q&53JxP6M9$WeKH_Q8elH_d*fVJHN6`LHaM16A|EvJA$Zo(EAk9yf!*y6Smtmux182f1*im#4 zf5I79RTp4eU5nTa*YSG=HqaFum+{2)|Lh5}DK18yJONATFIZlCVQb2^;$c`@$6$jI zGr$?xP!u~c1pI?|F5@X;3ZU4@61jmmDgKK{^8&svr^r3($8ygntF7oRu}8=;k!_cZuxXLs6vUMp8I?t2 zfYPFLDE4fOW;%+-FvUV?XGE@0>^T_W`H)S-kYM{yHjphyY$39g@tW8O;$~-NkwaBU{ z(#)lyX-nfDaXgfWTqkRT4q5w>eNH-{LiPyF1L&w7(M)84 z)q{Q_9Ywl|v>53!3MZe_zoIkJMx>J{RywPSG-PXz&SVAx*={0Bh^zv#rQ~1wPde^@ z$NzFjDHNqaDO2A5mq*GK-6fq!7MpyJ@?0Ob70qJEP9zJm5e~XSRwJF!9hq5yY{~kO ze{yN5)WjfBH&SxBHYi1kT|US%EXo6=MJZFgP;O{8K@sIBGJq%z9)iu#0XugKO8 zwYl62amgbCvA<0R0mopN^3mHoClo)1cwr$6^ z6H=9IF!ExNok)B&be*_p$m3NA+l+W>NIsK)i{|k3A&E`D#Cc_a6es2@x<+Xcs||V3 zic)amI?azQc%G~~vO)9lOE#wg+9!yR>Cg@2Z+Qhh<3n8JnX@2FGW3TTAM&^rKwqTc z3V9P!5t8_IG7$1pBpmTE(OqH$qS#1dy+>HOmL1ViWI=w4geU7SEuyK&TS5M@6vRZn z3)#}k!4sqt$=5+TD;)=EI7%xSp-FF&bxLKS+>xD1+B5^-lny+2V}jp97)f>L1ZxD0)-#Twi}=yu``I|M!NgH>`HSd_1!-^nBN zCgL$7Eq)bRKLb|4ok*$fz!rD~Tk|fypTUlMh^yqSdWsyA6_<)%@_uIF{yBV75$ARM zCP(5UHZ!tY$&w&1;wyxG`rkET%p&fl*LeCW^70fpzKL-E!hWHAk+<;?!jd)h0y%hw zyc1j2Q+#eBWwM0H6ZR6%-9?Bu_w1Bp>c$gYCl>N`ATM2a7g%YTtN-Aj*@_zA)$Bh3f+_ZCkQb5}CX zpQDdGi}b-{v^3dGbUzJu$uCHK;4xxIMmVzIX#PPxl6-H}^Q`#L8O>X$S104C6!a$Q z=jrHMDfpIcvkas|qbv{cyhl!5h~*W2iK~j3X!4L6vD)R~Nh9pmOw{iiaGqGg)fD5y z3E?u#9z~6?A#@5Xc|GBsUjolT6T~q=kqT=$Ib2!c#dkJh425GAAJA43r1Bf25f9n- z9<@;dvXjQ77gDhhdCi6dAzRLdvBKc(9R||Vk6dP8Y^d?}_(z=kkmF295DD{3k~_pa zCBSY{BL!oa^d?COKSmiuBD~$?e~g1paYvpl35}5e9YefLrJ>PELSvBZCcYva!jR97 zGz)ow!&tdZLYSC{v?s2&itsa#7oj+GS_#yH2dhR^@Spq%vCszz2tgi|#E32{jsFRF zIxb@4k&RdycVcjln402{i#mv({D9=yq$kVamvmxPge-wj#2goo>lGu~wG{5xjMx;U zJ8R>qYWS{>7%E0Amud)K2{Di-vkLA|T(w|hG>BXy4^a(R8jU0W$bVA@&(Sa0I_2@* z3?Yeass=)mub8-}$R4VOe{`=Q(yE2?+W0iWb7cKBgqNlUa?=36b#cEwej6hMd50R} z3i-wU$KpjiadmNr*zxMa-}gDb>%$+^0q4YGM(a;>e2!EpMvAL$#2eHE-{kcornau| zhPB5p`E$u~>H*(cW7Jto_?^h2B5!Huh%c!}#OKr*q1(gf)Co_>TyLEbrU`P^0@s`3 zm-zdLZLAGa=!`hXQ$_yaRtVP&Ic$kMlTAi7LOE}VyTpG-oL$ZT3rpU=w)jxJHIMkP z$iqpjY@eZi>LD$%GwB}Lv+ePpN>1rF#-};Ll66SdJJoQJwMXsH2(eIG)kBWzqcw<& zPqttwWaY?}>S*g~2-^VRWL`z;4P<$dKU=oO%A;3NpP+t2_FpB$R2R?779QDJznafR$Bve2xsgUmQ5`^bnhH{@p)LBHl&WM?e*=^+iAYRC4NSC}JZx9!) z@Dfuer9igNQ{18TwdY8g!jp%B^ejC`R>}k9M)ua-#1n7vxs7}8as5#wMtYLU^ajt- zsux*;lsl>+szI6AlJZR}lT^d6QGyJFOM|{8|42UCh%DP&T%nrDLYU|HPi;l3e3U0D z`3KY$X>iiW8F-TXj1-2vEVTOi7NIB)RQ^=_zQcX0Us@w1zEv}NO$z#k1u2oPr`70} zIHUS}j%Ud#ru$}u%|zey;K__gPo?l?^hwzVOMG)iq@EV(v!wm01exfg#8hg+wmu3OPdr3@~vTaP!P2?+(R9{hrqOXvE0#51L=l{K190Ik-=A1S9f7vkc0a z>?fvGUDC!@JSES3e6R-OSrM((`w*5`0KJIaj&E8A4q*(_Q{>qu&ORF1#6TI0tiREU zHmw2BGsNvEugVdBCCLMMr9caLL-RVC_tE+n`IczDCi6iOYbC7^lNX6*j`F;a!il)5 zMmU-g(rl1cE=j(TRHHQonz_o}C7Q9)L5zv9kaM)QM0bc!k~~B-+m%^9iCK}>bx97B zG$o6mEIuR~K`Vh@3P)?Tv}#AbB#M`2%4AWLg=J9|vYF=53x#$nO@ASCaY_c`B*L5PK^17V1gVL*y2e;~_7l+z-iXK|P9| zmET}cM&c{-V^S|G@;y@CWiKRoB4sbA?0=9)0*w#yInXE|ElIuyS`njb#7{|H3Gz{p zZ-NdQBeW7kdXYvgc>+l9$*cDcXh!nKDk5c}aV9?(zz8H=NLr923+X7*ahAx)rcp|9 zQ_3>;CZ!UJjAVN2f@B1Jlh2pNH>E)S4O)|;u}ylIe8RFngQNv{F=+j(04d4u8<6zL zi==FfWutc%OE9S zY7vS>*5<^EO*JRa>g82e>hs1(KC_Xo{G8lY)VC?eRLhi}+=Jw|b!0yv<$>a)R-hcn zC8OR(cW9-V?#q5d8WVIbb92kF$zz3{rhBplOsm7B_bEkMB_HvUTVw2GU+m zh2o?6jr=Y1KGVv*tP9A4E%P9Acmsj#CrVAWtmO4K`TYR-{R*<9$YK)lG`$Bv&&tfn zMQ?PGokdzrekVhIzlf|f(j9U-^v01K4{1n>i{@~oF-iZCu9UT>{9Y2(6KMu2z05UE zI)(V1$yZNrB*^b0pg@r_Qys|fDUj}?nviQwu65#BmuH8v&XsdXF&5=SE+1W&-@TJ{ zJFPF$bEM6v%v2)EJ%tvL7rG;_E>I}Sot#VhmdhqYekmN~Ue38(v+{FvUc_20r$ez8 zm5$yIk>A3ia+6&^HAOj;S3l`37*%C}@o!80q~qXSSnvXkqn`)$$H+^mYwjz)puhm|W&>b}x21X@Dp43H#GH zt~}d-8K>wP9u(>qtcpD+j{}{8jY6)Fh`lH;!}Ap*n9^)Bwl>=wC=7?e$aWe#2c`j; z`T_RpT*ZEh+Mz|k?!l3vri#PNQ+5bnm)A30LX$!t!i~cTfjHl2&vDN&|K_j>?_@t< z8SENbirr&I{xUNs)I2cN^QAN7_}b-hUU#H9eLxOi18c&!6+eW!1-+pF-p(xv9rSDX zTF4OY$_~Q5-m2ISpTyJ%Hw*n4JRd0T-|oHTspx&|dlwi9ChP|&=W(VC+X{PYvRQ$x z!<5&(@C4>MTS4HZ3esq4fU2*indYGCqcSY1 zMXfMWY$W|6l;%J3wSggUPuMAT2PXb+*dcbGTMfK`Gu%bIU4N77k6otCvA^;>b0bj2 z)5lsadrpczH7RR!*1@#Y%*V##?sxo&*cl~zmHfNJ&@!XSeJoKSI!&6R=;rZQ{Du++ zgW-W`nk5@)Dw+|7edQD*|uxuLxx59OY_d=IZYSrzx%E# zjtkkU%DQi&c0~UhwO)5g-BW7BCo|*mp6Pfd%zVMNn5=ZX8f}*l7)JQ$CKHTDD4sDdoRST3IR>e^dJ%yUQJKTA2A`s_ny` zk4@87ERg)xEe8o=z>eB#j2tQVs2^7Jz(j{>>R~Rbo zFY7twTyB42)mgV%^Bfa>o5BKLUin;mCb~xKAF=w_5ixtBwrNAkTf!R7hdmrt>~a{4 zeSD|6&cYJx&ulD$VN`f2KE!_2-O^TNMPTRjQR_78)%i-Tbct`t>HW=^iPDgmqs1N;pOGjfc28j9EZU_~m$1$G zh2@jckiRx}S8iQHy6Lxq8TMpPVQ_-tKHG~wj~zm{gz3`P$_dK$N~`ju%B{WuEc{NY z4dP4or|__V$vfFy+iA7mu#3(bo&^CVlg(FCw$=D_t)lzI^obc7{XoB2J729=B`ND* zXXQ(At*8+ni`|u{z>oU1lq6jcW&k5?2T)<&@kfQK*oC?QSVLiHfH;@?T@ehN^893b zYVzkwK=AaX$ENGkkEb2Tc#@r$|5-tlt*bjepk*Ek8qJKT((x4%jR}eI$xg{3I zzQ48LQU67;J7fv$_D}M*aldf>3XGhCzB!?Z?0g|l`LlLs)VHx!Y6Xx+&)LpiJhwHWV zchl3{!&#j&bZNs=C#LL7Rb|}BzLcL}Y3l6h`!h6_+pjLC|0{Y%+{buz+^uu$o12Kv!@Z*Ix%AJ}u8kc&U_M-NTdW!O@R7w(dpHv`OVn5`Yb#mG&Q`F0mB@-iu+X@tTZbN(LfI zCq6#9w|Z~rgyUwx-rQpuuRcX*KFr#X9dGPvcY3b)*Mv<%dnJgzm8Vr*)mK#`G@G?K z+G@b3}L1)CE5P`L1B}4T}o4G)CW{El)KSt zJ{Io}_{X}=6@DbaU$3EEh%eA&Rx?RM@|3NiZp3Ybm_z|680A} zBtD2A81=b&knm?fbQvvMOwOE{+2wLy=FK;>FzvMp?(Uwg{;$F|Hj%%}&5%~9ii0)4 zuPYV3RX+xZqbsADX`-Zk{P&8GZ>@`SPPS{Udkat6x472(8z|C+s_HE5i0FNBzb95G zUb6T%#Y!jEjt|GKiMbYi7(8}EH4W6elufW_eXdXft@8*weSc$zaJQimUkgB>S87z< zm9r#4e9OKG+x#0{s|#ls-sa59s+*DisoaM)@8dsgN^P4lF#D6CMd2Lhfq;SApsf=7 zIzBgXNn+XfU!wQw=W9mucJDzTWBy=Tl)pT0N8YRa!-fmypv~fF<5v4x28M@z40Thq zg4y$3?f(*U>%D&QrHn{vy^9l7S!dC(sMtVc*|z zzN=VMdMK@zDoQDWif_wx4L9*So#kww3Z@uTIo9;}Pb-q0A8RD%rKF}k%e;~Q&@#*Q zKG1|MrEVC#AT}Js#T|`Liz%lmBUR=XhuXRm98T+kf@#JW(?0W3Q#(^u!B}g5TMfry zm&W_hmlR57RlqM_rXHmGNqk`odyucWe@EbT z=r4Aq5RkTOz51Yjc=Up}Mv2W6Kg55Pa6Eo{EE`i2df&hnW(Av2MYW>8M!fFt;q2Z2n~GYMNqB zG`BXDvn;i(cAoUG0eg54cU-)r-mR;vzo}R1OXz;oG*QkJuW~U=ozVWkd*2Q0WxeR@ z?oaaP1(e|vieI<^;vDrY?Q;Et7#n#PHGp@2luqV%=jro82q3SbE9ik?*U2 zc$w1t(}i?P-XY6Q*D$}DTO`(1PS2uP{XBx8?m2i5~Yc)5#K%`36|pL@lt%VxE0_LZ5ll@ zYOsEVu92>x?v%EZW}Dimey2{t?^5s`C{=f)RG~HZvtnVOtZ#&?hArB>DrZ!7*No$z zxRhbZicjM{9ZS2MW6ZB;sc7Tfy@E|ckJ#1138|*?l9UVF@IQe}+yclF>tQ2~WA%zA z!BlTq&j7~+>q5)If^1WQ>42$cLEFLyz_l;$wfmk0ODSU5E!Y9vj^Dtw=8vOPM}RLF z&o|(W?7uw6H^k2Fz5H4shp!>+0dCwAps1bz*WIS5IWc`>tHo>M?!;Y*+Yo1ptpirl zlF=^Urytf?!6st{M_+f%Hchg+r|Jz@Nrp+|h5f8Wkr}Mu|KzRWx@py$cjc$${+RV5 zy-M1wPwhUnPV1aeJLf>&a#ICsN5@fjp>JULF*60IrYgMk6DeHahtq}OtKi=OnR55J8 zjIV(EB>XIn1!{aB)mBv*bxAdkIL8A6eju4ScrrE#HDo3m*<0_a}NbJ8oHzSc;nl z=Xc5dHhWIi@{Ca#D>5r&|CDngS2XI)D+;ICD!A%Uu)il4X(!ZTr&n5WDD z0{1vovTBpk2#%8p{3K?6sAX`2U*~nWzIGd3NzM|EE6!T@{ngRSIolO-RCiW#y>@Bb zPWO56*4*HH$@NA_<;IMg^;-ai4j_oskL zm2PQZ)|une^0yA82EGfe3r|)2%A98H++5(+byVI}mDF_AZ3KG%%;@7Wonu?a z#>V!IEfqUGCM|kcv?J<3RL!UqeP_Kv_f+QwGe>`LO-xmJqzk}`{)J0sCMo)cE(YTL z*Sz!GWu0XlZ*AuaZ-TF~y19jEsqvH1W_)3+Z@z2ZQ&7)xuW*d5tZkG12gfUCWmm4N zz|+n9hwmr9BiIDHy5B3_F=N^D%vp8?R~pzxCxOs;0H|DDf#&j>u`;oomdylu>pI2N zaJ^6<*e&=?ATjVuU`^mT$~FdgBlSY#LVLsCqrT<=bD|2oDKGdq@iS?;@<&x&O_DYb zJfTPQ-N1LzA?jx^NAv_|L;)D+2I(te(dq?UL}#^bu&jKoZm4RdJSjE=QgvCjrD90v zBQQ)`duzMLI+N|aZF>ugS&|ASm~WbTm~xG+Ovxs@sl7SdyuYBWCD*d4aGkZJt+Rc( zNAVsMHwEh4&3v_z<~QFR1!PHOJFZ~W_YmTH=wCJ0=iBs?pxpuz7^Xj<5g|ctfrq< zqg$&Bg2Ui<{ZINE`aSwp`mOr9`iA;Ly1DRId<&+a59&r>mtd7^#d5*{E|0<5V`yLC zlF#eOaLsgdvY)oLD%?=e%lxmYvFWg}fpNDnXzXa31x7>#c!0hJUr}yhEn6J8{+!O< zZl7nbZ)jjC9EvRz7ny;q2qZKWu;YS!Q{Y@8Lk&j`(hdwgxaEB6PR z%&6f#P$_PP$AJ?o2o#Mf*azPZdq;{Xb}Gs;*MOq&Bex6uObf*`k{SrC7uA+Le83Gdt^K080Gre-OHQp zdm2axO%IzC515-k#%#o&IW!xhM7#HwXcK5#NP7$%cTg z`&=;|dl+dA>TmeWRalc9t~jCS1GMgn>^t@Ym&R`rW{D%E-++t%g<7TAtCg zj*2PF7L=_Q@4);tNt`R51FrBlU}~{Q#g$c*#gz}ipOGrI7astZ4YZBiJs_=Y0|wi9 z#ZipLG1!y3Ujao62h z0?%=@5CSf+Rh%Q;mg<1J;J&gBIGkKS`(3T9to#x@V~p5D=)&*hN^r;6L`Wh+W30iH z0j7mpQJ|=XUik`gWgEMJ>jW&blfrp;lfG6~P#M4)5Qp|_tv#T9tySx~=tk&12UlYn zIK69u%^*dcr0%V1ue6KzgpIt3tto2Ry9(QxjJMdZ_F1%BaZ>ni}X;c_{8!8$48O|FP zz~gt&c+hmmysjY8a?+Au?Of&a%6UF`ulT!xlx5as|?_Z#5X<})Juia80yqY2Cwc>iw$ zS!)R9+hKMB5Ld7A0|ldS6nNHZ#QBx#m8w6OqSTtE;Mc+7tkVjkEW6BGOt+2S8XFs*8qy5?j22@B z(?C-#bH4&x!7|J6!g1D%wpaEJ;1Mn5QTVp{)xpc5NeY3@V|jjnP#Xxr@uym&*O%uHu2C{)&(0SHa3T2+W=4zyso04tQ=A*fo$X z8R!phxvu;vz6}t&_lnhkg;rMiR5?tw9ett_e1>DxwrbDCE>lnN`c>fWxOq+&tG7ccDwLbOLKU%hMFYP4r2*pZ{uZSKWKzY-EnjP4)t5lN${S13Kk1H6dl+l+&4gToCs99dtl#rrtGM?s%orW ztbPr?2)Eh`CbkC9N(;cla9y&9Z6E`9VI+SVvyBAq8G8X(r$4b9fWQheFpRxz5zOIP zydZoH^v7kQLmUqD?Pc(JbyO`>?N!}UoyQz+vZ}i3CQ5cqst4|#WXv=yTq#b?{-&rF z{xjG*aNK9{)Nzk=&a>OC4-0!kavn1+Fl8EB8`BLdjI~Yq&wt}0s zyREPNo+HC~2&|@;d`$upn7eAg9^1gRz_Q-Y;$ldG{Yr=OrfNB`|Br&ndkIEMbBvI5 z^qg$&@C z{UFwoj!0F2r~VP#1$DsJ)LPY1C8%~Nzfj)5iqUN`QEVhM;`?$9vDWlDJRtNg(BA*I zH_EfmmE(A9>us%2m|f7q+})%y9W)ji#u!Wn(bNU{{V&)n=>=uLrrE<<({|pbavXv+ zR^9W!`-@)}+!tD`=n8(@{ro*4ESjZ<${t{fDuK3Yq3NaBtjX7Sz-SgI&b|4CGF*mQKUB1FiKXzkzGY9;3gL5*Ah45`R0xDB>Ee_Bsh%+4aEbi~$m~0nA5dA)j|%+#CGRUH@lv z-33n9IuM~WmfQv=XP78bXa<^RUF;R24z4*dh~5ALf3$w9C{ z<;g!Q1}b-h&FZ<*qN=O%DGQa4l=GApme8qH0HyiDPTN`1v6E)v@hiO(!uMlh37O{ z`T#t?RiY|krQjm0;ct<){0w$0{gV6~yx^bW?d6^ZhOb%o{eE| z0sDU!cZ0J)*VF_=ik^nMBQXm9EVwLuA@YiylKavvU}F@38FhoB1BiucR16osnYnxHmD-`?OhR2ZfiS{icn zoAlK>vrel01$Wk8MJo2no65WrtynAk3@i6{q&|O_eZb&AZQe{r&|&m?x(V}&=?SE_ z;~dbxkhW+P))3zcMgyCuwPX(1x0cGg!x*O(Gn5mRso?cpBd?Hsl&+KXgmR5*0vX;C zmGU@yn(9lu^MCb>b|u?;SEp8*%j=gG7Edikifb3IE}B{VtMp`f6rguURPVAYodeth zyh1SJ&Vgv;Hk>L>!TXBCr0?aM)W@};L^NzPzp<2=(o9RuD@{!dXLSGQPH7e@n#hHU zgVHc@1Z28LV>J;mKaAVJ^raR7TNoq%0iSGDuqoM>QZiS$Z%8Mwb$1hgm12rd%4l^{ zFn&$cDs@dD=e<(9SMy5kQCU=*mG9-%Ql&%-XXxEAH(!^nM{&W3zzaBgusCw7XH{iX zCRJ=J+Yd!^4+?h{78Xn>*j6~IG@+a>7gSAgg$JLKGIkbvUNBOeE9(xC_b@rFSf#2~ zT!p#e7ue+6Lq@c=Tqvz8nJrEczQOsOE{Lp(aoLS~FJ@RNYdJSNxEbOWKJq3ID~1*!29usU9?Uf|TmMI>nZfcHb%e1)G zq<*Drqu4C#A}$v^#W>^>KN%QzZ=h(X26hr>1bZP;D-_$nahfTqC2cC5C+!30h?^x@ zlD5*PU_My~+3G|1KWGZSfhDL;L?{19Z#Pef`xaP@&e`kOJ3)S{Z?&fSs`Wrc-SS{r zNSUqVaOthepgqDJ?~9>GEGR`aa^qr4hS_KqTV|UVYolaC1-JPQ)LH)x?_cgY@RKn2 zL|;`PkG#N+ME0Xq*x$lVu+I(=Ti{&!ome6psA#Ahr`)J&ra7$rM|(q*_rm zra?Y44X7c+@t~d9N1bPc@J?3=IPp9=s*VSiFCk5k?qtX>>gYjp`$`I7N(0tjnPjgXZMtah%{c;!LNVn0D?OW=)=bufA*c_A+ z#!95Jp^8&Vh0>rn1}FE8z%K5Qub1DFb(AksG**6*$4i@t6~fxs2|kLe&&(nm{w9IL z#1d)}dm4!sEEIp04OaKkW5y$f&4!+a^}0vuhstj9HsUXMd+Zky1PIw>V;pHz=+CKZDiakWjJBXf5CK7_+tw2t&HD%)3 zV9}zcvOiS~bfb*D%p%KL^C#m$eJ{-=#Tn^!(PTUfInC~dlmBPb0%{QTfqV?a=F!A$ zU^UP55B5v_&A|tL!28Ct0DK6PYn5Ys^|8v3ijAeRqS^Vi3!7CS_6m1#K+jK?oX{Q# z8xT7=rZQql*oM$f#;5XHXzkz-dv*EJlGLJSg+)c8a>_Q@ca1qKP|9Ppjg7hHSC%&x znZ<3atGlVnlYf*JizTA(K=y8dcg7Z@Pm#g=9=1RDpVvd-_6rz$wWz1eCIoorP?gYK zJJiUUCx?6p@mnsNF6sZ$JXF+@oWM!m#Ga&DllO>$ga~N6Tgi67VlIaA?=jRW@&Q;; z<_G@uE%Lr{S2zbduG^H=daJIys-&oROYyU!Ud3Fw(fOAjr*~na<$oCR!#2c@NthYi zE}~1wNJEIikIeB8uU=R3I$w|%%&o}3UXoLF!#jt4Arh-k8mmGLk#8c?BbJ5bnd9_P zsv**Np%0zOzh|}VDP{$*oGsh}E*9)0?O^_LF|D~E*N49DM#W=V?_1)4PdA*h*p zX{O9wP22U2G;I_g#clB6ypDN6go0K4vhNSSDWD5pC00=urjQ9R5178pGinME9r)YZ z)Wz9aR5z+pRBFmPmUJ&^Uy@!NQQE-z%~d}zhQ5JbmGW9H7{lDFy2te^8j)mvM>9UlW(tMlkI{7+#M@lEMf46jrDBB zow9SK9ZPdd3QA(i$jVO6)4m9D6W3DIL3PKtHhf}Cub8%xJ;GL64(pPo90zuH^U zu0Wf2FZW3P#1gc6oX^7D6pz(tEyE-G#x{wgW3*A{LmwKZsai`^SZ&5g1pETIR;Q;BK}a-a?k7Q-^X#BPs*t(AgC(=Fn z-f)uEN&Fn_ypLq{6khNpXDHgJ&Z+;+!C1W`DSlkrK((0?kjZ_3yL2VbtpbqI>?&h>Ku$` zzM!=vmFf#-dE|)L?y=6uGoe?FUUhp(0(aT_#cD5Fmn+VmoZTSLRn*#A?&-zu6wlI5 z41F8ZJ~5-lx5OH8IT6X`&6nT`?`<&&1LZ zVv9@{Cf8y=gGu&^5?x-GtZSJsv(*J>%N95;61(u{N~KvA<&W3ZG}e?SghW3Np>&Vr z6?hi?*q7qGVk@g|V}I>j;koY@P)fcS?=R`0IH6jr?xty??Wf(Ld8ihu|5Mge)RE7Z z)s_AY`RRaQ06q}i$N#~pSON&tw}Fo?q~Fj#86nVoFL8I-(@XW7tG z%SV^y7q=_AUHGI}SE+Jt^?#!0Vn3uiwa-I7Mz4)u66cNT99C_7qrya2>0+0nVoO0V z+mLlO>r8IF;$BrJe6#oi(rLQ;q1R#>CDy9(SHk(2PT>!Yjn%y+B}i|wlQ+d_w_maE zb&PcRJuL(MDGh%HpC}$9Gb&%Ie`zE25A{d&@%nx`tu{uzS#eGJN%RPhL<_hh%w))= ztS9yo1mq5El!jRiyP6L$YfM3f$RFG{`YVy)%XEd<)2%t>BTG9MqeYg&2Zd`&J5<;8 zBGfJ9gxIM5W;zntHNGf86=#ijXwK2Rlnm#6zPVNZ7VXQqnwgq8D(BC_B^6s-UFf&M zY3g_8$f#cN3lkS7)Q+`8RGUPaA=1Z~kh$ky@BZM-aK3T<^lbMpAdb+_`4GVg@gwQq z@&n5C>VselzOE5yFm*tgqo^T&E^)#xDg;gD3HAarll~VB!D9L@eS+!C?gC=;efBb2 z1}3sta(m#McNWwt)UB?pyiuN0y0fHCajW9OvK-qrUkTk3Q%gUox0~xk+2Thf?u?ro zvDkD-B^2qIPVT4Wc)lWYW_rXgI%{KLJ?j~-m&=kK(>Dn>$K9(@TvJtJa_r@>TY5qs zE9AI;35oZkqrSZ_)U(v|dx%radSr=UhUBZfhH9(2v1U9(*SV@u%471EQnO^XXo8>} zHW3<ex}L4sIzBu{!_>`WAlzLD3zsL%q$)m~E7U$O-tpyIgJT&Z>r1Pes4-o@HN3 z#uZzOWaT3J5C15(349ZU`i^0jV`tV>)<$dei2h}+P%gnk2+}sD_<2^@kHz0Izo%t< zF9@lU2D)I=m4vAxQkn3yW}8}@6JJJGSf*=cNDiRa=@WtOo>k7e&O`2Gzng5v#bOJE z(N$0Du@xm-|3t2lwJ>@^jN;s2wtJov&DZ3_#6kmf( zmjRDJm3%6!{V$j*W-74A7jhf;0MY<_ZUf*PqbEOrDJF`1`&=fQzrs-JExew0Kl^1y z@64>ci4_{pWoDLWt~$?rKW1p1q(*ley{y|gzJJIAr3iESBdzoD8m9mFTJ!7q@4_s1 zk=JG=)(PurMp%3iBVvo=3*%44JP#Xca4PnQ{zCh*TgWAW=RUjdMBo;g&g|oJ&^3Z7 z;)l}3P~_hi;`+(z)$0FL?-hMz49uh_@i25QN7E`Qhxm_}N*G7Z7=R3AHr9|Etq z4&REX*)2qz_r1Mc<@e&)yq=kLe@ysl`EJU-QdZ_(#T}Mq8?Q&F)*+i7ZACTz)?jV? zT62BrKh$I!pI`T9PTGx+iD?bKPs?6h=5RmcS12Bu)VqBKUh2C2=A zB#eGLR779#SbQmgm*f=oCbAB{E<7rV77Y}XBQ2THfsQUgRfiH&-q?&Q-w)6^CQiD*#Kb&WHmiFILlYyxd1uFCcd$O4pe_$E_^Q& zX_^{Vnmr+Zgq;n2WA3C+Q7#qlK&4DXFw(oywbWVdyzgGrFQC4ziV&9?Sdj>*}}kZ%77FROPTTzhrC8+PIXu zvzsI|@6x2YcEc#4wh^|@6IJ>vbJ+JAU-x})mO%tF0J-BrF#oQ~U}Qu_s|Aua{_`e*t+`|bypQ-AVn1-a7Z>NrCyOITQo@VwA@ z=Ic72B1ZHdw=KB9{mk~+>ZttBI=k9sKjtHH0{gU^uO}1lpl3{ zqkD^=XitO;j+`DnBU%}CC46lNX}qq}YG$fb%Ez+N;!SvOWIL;&Q;5ca0O5!LSnaA#wuge(_l*BQFr7fidPG{_ zgRiIiPg`2qs(fqavW(cgs`BgJQ7EqN64o`rT(41+%%)|HKGk|0(L(){3wKN?=QBAwmf`9c=NDrAzt$p(;?#^s5!i>E|Px{r{Q0C znhqt__~y6`uDb5lzH;Ig7a?pbZ>=fUQ^v`rmd49Eud0>ofM5=Hn`rAh=U(Wl;ZnOu zXS%bq^NQoJBgdg|ZgjA=$5nUB9YqcD9~LYw7kkEVcjdiIBcdiIB-d8dtE`(;Gdg;( z(J$#m_p^;ENc|=Fc_w{u_M}2_#Q=MK-&eYkV6A+cR&BZv(l7i;#OsLZ;qK5t$mWoz z=931IrlGt_s6tijRPvp_uV;trmg|IPqCZHiV@t8IlIMz3>Ksj_MyTnhs+6CRj1~0Y z7f}BO^1Q9xf5E=6UG=o8)mE+5Xl)Bl=^vF-E7D5W6?uxLRm}Dz@S)0umR_+DHPh;Z z*L_v1O?-T~SRXF^lN;!^mB#06${3MZk-Mk(VdWG@fwu;^hs(xmN_(ot>7QEy;ex0^ zk$WOWN90Fb2p=9g+_XnKT|Puuz*E$kK(?oWySIC?XPGzGS1Qd*yNT|L2Y`qC zlSD0L!H#@Flq9&1rgF2X#s0;v+O`v5tlvEpwek&g$0GHEEmB z>xt_c%xE&Q>5hiSYR!zSV@Q|O=f1mxWruTnW|)8N%R&m~mCv(n_IwJW>|Qh=tSK{T z9+~8kc$_%#N8+}`!|^X-%EHH)XKT`=weU;qDdL20HN4L-cOUOFe+1Eo`oz@c6Cmrq z2%Ke;@aqCrC%MIUp!s8#+yT$`#xD!-NeDtT12v_O})C~NR9&94X9UCR1< zcM9$qE81h$q!& zg)7Yx2-WE!t>QY>uG3&_qqdFI^?TJ^8eM9hqnLR5;gtPy|q28E7WBH zQ|)xO(G%q@_X&wsOgdr}bd>a!U6$39%0=7J^Yjk?Bv-QSL1k6x)S^$h^)uOYX=amx zd6j$oZ}EOwOSmGAP8gSv5R)8UW$LY)sGKFPLRjilV77OYYocSJeV*-7bzIeWtEV!< zI?!IzC*!(E>l%oNp9$0Jq}3Z!??mnCiOXZgg-4oc?QO*su@zgx6;P{#`QACMO55wI z-q!Y3SJgmAigzQ~m%k!Nl$1&3(ruzltSPsTTg8NboImVYwiDGkU~fNHdBb|y zo)~C{u2inDNMjz>Xi#T%-SxE_);J&gHgaaz8_QB-J8dJyS%H%2Q~jm# za>dSy50$~{nXX;|6O#*T`zibt+MR1gwGSkD4el#WxBWqNhl=#Vj2u%omEW-9r}rD0 zrCJuU5r7eEBi~s1={cB>waU-(SgB5kp|#j{q{83CGtxQ55o+II`%vAl`i-rIJBi$Z zN2}7z1ySh3lrN%jc&iYrAzqy%X^Ey#2Hzb=r>dmN{E8WsldQ9< z9@)M)bG`0h3p$*YvVG|T#9e=FZ$F5!?^OL;QM06Zeo=OOUQEej$28`;?3Q_7RBBxN zm_^|ejZT$KCIeqMbU?@ki_7s$Zab{|ryTREzgs=l{Hkl!1@a1FByKDaly?oca zYkiTvT#wNG)j7)X$o9}0EH5d(l>aPeLyo9uvh_f~A$X~KAMrM>G#+;JVH-_rG|N?| zl(kedm1iLf(oC?FTNs?--druI%qU~Z##cD42kiB{x5!Rdv@BEm+H8)Gg=%yE=nK4S-R^RC=!H|S#7Y`{mc2u8S8%NS?3)BS;u7e2x!56QGKm)K>7O8 z)g^a|Jw^QrALozGS)QGe)48Zq)s?^;0j~3ht&O$E>0*|IA2;RcZ|Ig8Fw-E@Aj54< zne07&kN(@++y1NaaK+UMSLL{>e{9d4_5H8tmiQrQsyfmr3jHhMuP8xuNc5WM*)c<6 zd&ka>UK2jdJW5+AyN(}a<^=kC4!c~g_U`TOZ>~RFbDgw3yLxbCVX3QVbm8TK0RXmUnvvpprvdhlhj9+@+m>1C}=1NrWuw+w-j?vXMP^Olaqn458d-?>GLo|_3 zBM5I__bmAK)1A3as|)cq3N)m2{3kp{I$6~iIznbzwuamanHu^eba9wAY+~pe%QMqm z{bThj*w?r087!m)tWsH?mq}{QBYka_-CK?+daM z%5vS``2q5vAtNLvEX}gOn69g*Pc~`7nnk5XOQT1Gk2JkfC5r~~&8e5c%3wJ$h`dPD z0Vi&=K+j+{d4O$>jTZM)+|}51`}BSF&-FD8JB({ho6O_P&rSCXZ?$igyQJ5JDOeSB z=JsaCPzwWh-J@-v%l8#K^DA?kN zPs{p2ZOLZkaKo;!BQegnkob>LzR>S_R(VTuL1-0Fg4x3Hf)aEXx0Sv~?kBHO61EL; z5^pYEBYi5XC7&yAsvwl(HD$UrhL*+x!&d!!ZBuo+!Ym7ud=*CG$NBrzTK^+wVU?$x zEICnBm_H-;ekS>I(HG>?g%7Pim!|J2%(Wc}M)UvScc5Oh1^=8q#O=hJE1nvMM%ItB z#q%+5B3hYkT9Z;P?dJY^bJ1);Bqjz!7KyIJs|5<^OWYv71a+3|7ehzT98tC*LBHn3V!iJ)s7?F zUf}%ZH}Z$1?{r;4j)W}!m)any%?>=oKr?7qCN4DXE@HN;mv>5uoO%QW8qB|4q{e_FIVSv^CEK9V&DF$f8|d_g0z*(gUprrULTVBfK^21<--Hhm zj1`>5$3d-RFTOwbnZ3yBS%%IaI|bMIQanYj39e7hn~tuwK9%=M(1Po^FLOT?JSiPn zHOE=xp6F@mO0zkvZz@++FLiY%{QN=aFs!NgEcZyaOS(zA%SNi)`ofTqNM-coC^CFo z$V$^!!$?E1q0(5}oMX0`Y8iTI<|uwh=86u0<<$gEx4-cW>^)is8N@YYII4n_lFx%{ z0|mY_-a(#Y?tQM|&Jx=#D^vEkcxKVQqNLK-6;BNi=}pEC<_gOnAwtU^##!2F z%1Bvl$ry2pm=+I{WQj{e-vslqm;7?}CB20Tr#6spi3Y*uP_4J$WreC5r>!wW7>}!N zSl>g1Mv8S+^-FtGS0~Rf@4w!?o;B_%t|w5fZu1wB37i-;gIV-8c$wG1nfz(dSLtab zt=Xl&Yxru2GxXD^>xy(6^xF(~jB8B0O&g6%_4%3z)dx7K?JY@!s>Hs+R)PYo1G<3U z#d_$I)I~CvP!mbPBY|AM( z8%z%V8s{we7u8z#?}8x+kIOCV!@U3o@z zMtxOtT-#4KOP8j-sEJSyQ(lB`I#eK zu(Sb0XE&hF_dk(Wput1Y$-I)Q$G&2=G6rTnT}XAM_LFuZpWukza2pAK%ZR|K^CCyP~l#}`ePTg>7D7lC51aAjl1!IZpL^tv#SxBbA zN-&tLK{h9sliA=Ceo95q)98zIfF8tTFq_yxTnj!Hy8f-`FYE(!Oui9*7d;p6leCv+ zNSi~i({-pPER|Kr?#m`aZDS2-56MXJLZ~@^DR2Wb;xFtARAdi_>#51#;Kp(hoRfXY zrm+23HT#GezA5Qlgre0w%~2)LSZ%PNpki z?@`I@VLNlx+%{f>EJ4bV!Dtq`7^?|YQl|t%goJRd$SE2vegoBee@n#h^xjIVq1W=J zv@28+#Y*OjpNeR(T51F(*lF}nBoR)P=7BZ&0ds*l%Is%mFijXgokl;TGiVXhnVH4R zWg0Ts^e}MI_M>QU4F7gjekUscc_O6}z)*RHQiH9vJ%fO^u@{(3hXB2>IdUIqj9vwX z#&&Rn_XMvfgZBo9E+(7+#!v8!VtT!T4ztJOH0*JwZCY1ehT!!SLA|eFUu2ThJ3hf)8;oH;wDT#d9Js zoL4{=*32bw%eZ~q8L&I9=elxgu9&?GUd&l+S2l{Zfq{27Go9(lbc826j@bnjA|`eo zo5t1wx1<{K&}w88;swY1MYI}ifX&4&ft6SWChflXczg!@nhu`U(O~xMh)3fA>=~8} zy?QqE0y+*gplQesFf$pDVjxvsgYV!X^f&zWk^H~!;|g%UFM!`<67WrY+#PNfm&jRR zZCV1)QOst*Gh7c2)tO8(bD7D7FLD%|LD+zZvJo7Q&A^E#1iRu}=x-Se)rV)%M<~=u zKrK{9YzkD#p2qHiS^GWwz6W0EWUL<+169!1(4}ZAl!d>w3mj54px)*aT+vx@oLmBG z_B-Hf{r>fvGW`ndBbUL-n8f2yRW_WX**kDuJ=g>mXUm!I%tv_VKfw*H2ja>pmH?CU zO->2+#)rHH%vnU4m_*9YK<-vxH}Z{FueAga6ucgzt!nIFq{;0=5kob)Z^ zT5|~Zn*AFb&E42$Y#p{Ko5W6ne}4|9-FD#gEP%PA|3#sO#I zzsc$k!T53v+%)sRO4)^P&esETsGPThiSsCo!WNu_%V!_J^V!Yr0mFPMI7bUv5!W8h zH8Qx`V1Ud3TJ|#V;R?_$@Mg}yv&n=x%?;+~Z}6q=glhFJa7A9Qj@}2O<{EIE{q}zi zhbJ@@SqMJTt?(YVBOBmnOa&8IN8lFzCPho(`qJUr4uk!22)HyG!&M1+2bT#aidVP; z+&W<54CMacx^q2&nllx?!R_2h?lC+m0UyKn2GitCSeFbyP)-J;=TC$}!qB!*J3kic zKxe^O-YB#m+6ms61|^Uz@Z4U6YghmI1>61$8(GLxd;Xh_H5udFXsKw<<}OBL-oMVJQZl- zCH~ z0fWC8jInOW4*nI_1^Na>@HOp(ex`W{0>0s?P#aPQp4of;Hvwu7jGrNVPx#aCd@HyH z3q1c}@ceJVRR$prs122WOTbmU75?lXJn?w=IZCtzYCcJ`++YX3vC@jMu~c{*64u+F{$E z8?6riH&?{PAYnxil9d~`WCk);@t zz0BvLA^0%t4eCO=ach|VTo}xkDE1mFLL=d4OalvZBkmvm7Mg&+fU3eauvSI!1CZwk zkB-M?LyzJdpzc?()leO~4GF>i!DwsbdA=}at zv{blLAjS&7yndJ6Ld7smxcArwaH@~MzOYZJ^<-Ukme44A3p0`laG*P=Sn4aifZdOs z6m=B8$71;*Y;UF;bC&!;d9k&kx%f`LHP;``%rof2++6G+oFK-ai_sV^8eGlWxm5lI zQV8qg-_Tbzoqx$rgDB!Lhv6s0q~HU;i48I`HVmDK|Bb6r1M(OvM1i}up<_#~_~%*_wb z8pzk+OVWz<65JB3guH7Db{(t0dW#$2x0qb&1MBC9Ff`H@Vn~s21+$pCN~Hw~x#^<% z_&BH-szTr3br3(-nt2nv$jn7MiPA(3h1H@voGCEG-I;8It(ORt?G$QZ8{Qw>;jMJf zCK<#pUvJni7b3C50yrIvbG6_nDbro?e7Q;mQA;#>!?-wvyz_7D^GLJ z58oTQo~T5cBx;O>3S;m;*$u?uKxgVt5~p8Elk^criL`0J?%d{0^*G#vu>Hp2+GCRb z!elbSIoPE`21!JMQ)ryfDW8WwB_A^idRY+mQP4kfkX?2`EADHg=Jepw(1*1guKy`Bny9YCGB2D|P zl?h_wtMT+ACYiriTbN* z9$o?Ot<3*4I3CRhLQgwMYa!3RB6<=ZnaRMKSSeIuUnwmylfML=A+b7rueM;j*_xUMwbg%>1o?B4W4aS?t~>(SM-KG9aQcF~IUbK!CMny>*Ft&Xeb-p;T=Jgaku+UAM;0g8 z1hpw=q4J85fkj6VsR1i}82JVLH~S<-vOXe|z3RQ~J?MWz z3_$(TJ?ia>fM7K{&NIus&^w-Ji?xu-q)}qM=oDIyvqQ|Vo4ynrLdT;+5hb1?`dhFY z@+#%r0peNUG1O3h;WF?(k`dw|g7;`M?k%w?c!bJiCu7;73(}F&zp*IT!E7Osz-)3e zdQaR;{6_Rn_>lDmkC3&wuHYXiLq=d1kE`dkHH1q>iVmVj=oQ4S;Ad(q;3-2S-Nngh6Rw<15X1?+%%Y7hSmzaSt44@7DBMyL-T z$i}lv>CWs7h+d=7XM)DiF*zP@jC7#P{z<_}%qirl@S*gLBw8?v-^ui#RzS{S37N%S z6||G~f&PV_NGQ{QSRPC!ai%Um1wScRhYiEm0<-TXI-jo(T&_8EEVGO2j7H<#g`b6) zz?;Z|9Z3PyeeR(jvTM=x*mwMs;5N1w*~{u+HJJcJk)9AKd_XWkgwQAGj4k0Q=xqK@ zo#H-Y18@}v$N2~jF;o?D2ELpWek`npRS?H#!)|69RNLqA4PgCyhSWz-AaPskVhQJjsfn$N1$Ox@+s^s=%#PUZ$iXa5=6(>fZ6y6;*TysPX*&P5(leN zINAn$6AjV2s1)Lc+sHrM6YdPs8e_1!z|NZubw{1~8PMCE$Zz5lum+vr3i-Lv**_2> zpY;%vj)s-v9W#a<&jz_E$iJ|%jsvUhDL#U~4)xeIAYPV2Z1oa(2rhXa@)fM}6%dbP z@-2{;5NG{>e)wtdQ=V`$(K*mh{}uK-%g}NB3XbCx{2JsSmH?+kYoMR0Jw&h`i0>yL zAJHw?7*r1Z<#QpH`~b6hxp4y6*NPigZ*zTTZ@eau0&5x$VIbl*=%+cXW{Z7?(YVy zvV1-o*3T>GYV;qp5w;ZexQRe9c#fCi3c+At01OqCike9R;@aZo&;^G}8i+TEiiB^3 zMZ)$XMBH1f5!VpQC5y$;qA;Nk`h89!I`kyk19c*kkac_#_l{{!e*nSO2x5EiWZ<-a zv#+sF<+J#*y~Df@J#{>!yQ3%3)5ufb^TgB9>-2{DC4s!a?cj0ZZ}Kknj=sfQW$Qy! z_zx<_mkET>OGy9=qFnZ$ypE!$vaxD|daycDqtZ>+?bKb@uQe<))HQt6YmIrvI;KsA zJ=z-TxAN|?4$|7d6bJy(qdqbu$gcjbW%?T_LUs6d*38E(3PiDL@Lr0Hx==U8}fegslXvxESnAe zO7o>Hr9nxGeFc7$@kA+tCc@?s>rNVAnx}vWMDDx`@Wa++ayy zM4-^$3A#XT`sVq@`r7)Y`gZ$f`quhxL&g3g|0lmba5c~_xHqUE{vy5*36KMBK`H5H z^gJeq>BWA4oXsSN{Yzng7XlfY8Q5d26>b*%5Zn>A5ea}C@mexn8V)3?$?{KfwPHA& zCY^x_?x2EHh?I?#63G0T6rX@~lq`EGr64nRKy*QvDL91Bz$T#kkt9ByO=F(Z$Emka zwXY%u1rG-9_$B@nUtgcgTkUmue|SH8%e{nG3xDz-jEE)v*ZwJi%s}hl_25v#LVhM! zQ6~C5Jqh~i>aaiAU65VMfL+rVltKRi+J#AQSujvIQ1m+^y;QP9+FceVzb4EfxB+5@{+I#{Lr|!Zyu>`9 z=Rtp060st<6Egcl{40H4?`!WIugybwGCjXM@!rGU>E32Gv9<{Q-LE`t46Ey$%UMCPJ3u@~58yuKh^kR>b@^%MuiLg;u; zfNb!7d6Z&<;wP|QLX|C)e=0XAZz~rny8(g1tURlju8=F{$-m1+Lyz_($qMl?(IMd< zf=FC|{fG472XQsoL?#om!as?2#IoRuz-xa?|0`cNU%5BcyTjYv8|@wMo$KA}^?BRC z__*#f_~-jS`g;f71)2vx28R(=q9f3vTEe~}o=&AHdI(d(tbyLM)$qLE@zNYAnpbM^q^DYzrgk8<(=+k5}F*c|VH1Uu3E%TlPw$OKXPj|Mf z(v|Ic<$CIBIV9tod`?ut_+TclHDF%T<1Q!G^ep}M0Qt=_3l2R2fw`UIS; zR;cf)H>pkPLe)Uk9iV#0tK4MI8W?&FJ z=W6dP@4ue*o)7L7?(Xgx?iBY~_h)ycXPxK02lqDhZuLg`?)aR(F8*nLtAAX;5m+De z1Q!!ZGMO~P`Ns!p9GyjvhUf}*eX!3T#dkznL!SOKb_Rbb_$0K7eu!@X8=I7v{5 zjYn~05kz)xEov(_|I?kb@KK0?(lqdPjQ#K%3M~L&Gpcg?)vJAakqAFaes6- z_xL=sy?I`_Zxf7m&ezlb)?Xh+eAD3hppke?G$V`1H55uer5iJi*i!Z)w~yb9Y(iIH zYw!gy|Gk91d{&~8$>r5@mqHDEu~PL8jS1GnUD_h8NjFKiRku{vOBb%QYA0yFY9yLA z>SQ2u-cmG@f0quIq=`BM;YfxJLJA>7B|P;n?oMup>!@qI zYo=?nYm=)bR5b-$v2KyOzk7uHn|qjt^Yr(g@CtpKeIDOJm=(hUM+4Ep(?NT1GLb`^ zB0Int&M*2O<`BeykNIoJ1@t*)#WlkEqL$(wlJ3x9JsYT@ua%W5R-LPPuAQuVq+@j} z^>Ra!p_Rd-|5v|U-&}uRm!Mm&y{35q-LUVK-4q*SQt3wVXQ50m7<&wO^%-mdy^OMu z>A|ePeg9S8G4FZL9k<`L#1(MvbPjb6akg?sI%_${IL|t5&N$aFxF?ajt$V)vy*mb| z%2l4Dum(NxHS@pl_Y6D>OoQwHo9IAhkQ=FPv>ImgbQX^9`FL~;oNs3eT8s9JF9A8T zOlFfym7Snx<&@^Mb{$aAPU{th*@pXu+QxpyW=5akjbQ=MF}vtD>+-cKZL~(OPE|Gm zMrMhmzj&SSA6VPFBNw}PIe|bvmDnQ^MSr} z*ir20>|EirJKMX~yH2}OfyT7X-NcguvuA?$sJEW)jc zuVZGiL!hRl*5-^ivF<46(+Q#@9x- zkvE2!;!WAc$;MK{2t%s=gYKhtg~qHtr;JuilZ}S6?JEK?blR?fjyNTAjOs$>2KxgO zwaWX=Q|PXCX>2H?@{aS#{fGQ9aJJe#=nNhp7L!A$nzV$8gFCp)Q^+{%AYKJIf}`S_lK-TBSp&sf z<$o}GEZT0mG5SQqE2tRBGA=fKHBqKtCZ|bc&N0n56+^G(C4&ygbPaVyn%QcRYJg&i z?384;=z$;`)1U_EsXj#Os53-jFxUUXm*@TDx#-^Fy5dBfvmG2ngi@%1_Sm#`!baE> z_Hp)ndke=P$5uyyV~q2e6L(#7b#^=4$sW7sCaeTs;XM@jcLpMZOz(w9FVWjToA+nX15xg9uM+AhySV;x{&duJOaL0{Nn1~w%7)v7w(hq6 zwk@_}wiC8$TP^!ByW2j~QRP_SbUHV=^zJ9_MV@ePws(~;(f^-+X`pMc1<{q9Ks}=? zm?Z8jkD|crz}rI%874U@^~hQ)CMkESiq&JZgs!uJGt4qp8uyxJnVn|B9A%kpd1X0e zX=5oiPcpYN=b3t#+8YIim%0|(8|qKWC-Rfh-9YM}gpYvS<{=P!#fybiv)TOV#93RYy)kxfyGj2s}0}B6MJpP0Y@TqQTK7>y8eZ_ z;cuQEUWYfw_sD-5IF0Qg&YVZRq+3BXlZRi6y0OuMjlvrujRY!#<$DxqN=)5aGe(Q) zw;Hw^&87&`D^p)HY--H+%zkroOJ7S{%Vo3JoDBcvvGJYZg?@{U(u`D(QZ|F$|1uFK ztiaNMP4%6rL2n@=h}(g&{>i@W-X)&qz$01b^f=}^^6d-kO8XDnbK3^nJYcPyw_Ug0 zv;DHE?R|h^7~*K|IOm9V-g9P2|b+bFQBWS*JKC( z6={O~iw6WXMeD@@$u5~&-d~xlN>;zpOoN)9hQ^x4Ud9W?+a|5qVahYPOvBAP%&W{U z(_oXw_#VFKn}!?uMLJHCs5UA~WG^JIMIQv|*hAzz_ll9ym&x{oB^VOu2D{>U-aW9I zb#oWFMz~zgmC&W0?ilH)wBLsDf5*PqJ_4@3m3^*#oBh6>vp0AAbWC$fUHe^1SRpn6 ztB~|Q_Z{-jhdHSp5kgL)ZbQ}QUt9*?1^o~B4Hd#VKyFHfcko0J0`Ws*?Oni~t~U%f zEP=22gz<&3zwwpfp21_#8#4{@@Z9_82kIN>KkG`3LQff{yt1Xn-Vm26YeN$~e^#SDv`9iO5x6k@x<-c{aO5EmWr`~7_abAoNip>#3Z z8M%tJ7S@u?lHXQYwS|Us^Xt&N5#ypGV$a1kiBU)O2$zT6G*xQbE8L=HSQcBGQU#~^ zPP;d`#=7r$z5dQbLrMkRuM@C`f`>pKIw)QM%zg&U8qI{LpgleoyMwMq&hzIXheI>N zm?S!y+77johd_81=9%VV9X5Lx`*GWNpbQ{n(o zbB`WLKcMDOaa0WTh?>uQ=a!)g!FN#@P@B(adm0Z~28GRxD2wV6yEOh<{La|6k;x&| z#%%3AMWpaN8x`!}spX_>534>`4ye3R73~TQJf+X^{qY=egi@^AVfX=KKVQoO2mXkx zooFW7i&ap`!3e0bBVGHPO`VIKj5FDF2I9`ou6?dMt|V7umkO$ck^6t{<-voOi;6i zAfKqf%+Rmpt5;ea>lb%2{;#TYtHf4PN6ZV%GnG@%lKyfoFNwKgs=xad zRW$8q~n+i2`0zFL>UJx%X&Z~||U{vcLTbKoEBU>2#WQ;U^fVkn=$ zU2;ZY-}j&M=5cPNfZQrofnMYLI7kS;Rk1kQS@~DoiK>IDx#Msvg4HNxF=J1BljlT z&>vJgnbAxM*k7Z3pZ~yBan*Dj#~yn*D2OP}MDZe7T~lm)@0T6Yt9)_P@K{w`NY%os zL#hsp)mHc?Xs>y)_MBYPwZFJRPH;wa+O6~t8DD>```xnii$|nuu`>d^q3g^4th73I zNKDO&>QI~S1VcPiL9XIHS=O=WM8S~)vaqBusklYi59?NEH?D#=%KOB#-}8`L@80hE z?mXjsiE6=HS4GbPey8{jDc&5}l@3*nrmK)m;=UQJv{w}trIvfY|-kF4>dEXGt2;rfRJ-nX3Bt2>Bi{sp7gy%VMj?^^c2>9a}*gqV{W}k0aIY zp~XG3PyDO`ul@McdO!1jT__yv9zxwQHVL{B@giz^6|w61_>$<)5gh_4_Khl9yl-z& z6!d#ZR$SJNtW7x+^EwofmdbE6=#4u6EoBJt0cx5eoW~jOIBuw$cI(`B_Xy7`+&=Ua z4X6WLRE8?sdPM?$){5~q-;!|n1}lurJdnKV2^TsQBA4{)y7sIU3qi` zHu$`0BXeE6>wY_BP}q z-0xlQ+p2j#0jS@rUU??FL%jG3W@Ct8*tNa#keeXESnU7GEJ$))r%FswA+yTs zqm$$GHP%;K8&k8KU%*AfJ8Fsdjir0ugkP4lf6^Lc?EV#yb1Hvf=`zP~@4r$INx@xw zKis(fCIgi#xVvrRS>w(?9kGv_bE`cKy_5Ju2r|1VO_tt@YsH)5F7dkysA$==!7S z&t-Xm&a;HC(H%IZT%YJ~RZD8Ms(G`rtGqV&qUo{fxA$yW@bBhn)l=A%loUQyoAEB^ zeNkV#bb@F&9 zOPYXyz7KcSSM(Njt}d7zH3lT zUHbm|$F`K>j9GajEuFb}5=+?_QM*82S6@$i1SIWw=^p=`Yvy|5= zRLh-kZ}5W{0*%*4XuhVQjy#Rtj+MEB;kK!*|CNxsIY73=5Kn_W|>Tu@;}P%DE< z9%>nueJ|zN_X~-Wzm|QS{9}F^nOnPTiMvoVQOW9&`e5TN!zi6rJ(M~JnxLNNsw>|y z)bWqwZ|4GcW$!YgHb=NgnO9rbh@gQrmKFvsmQ-VSi_3LVwcCK zRsCIMYD|sDT477f3?1caSdg3c=*Ot9jXz9!d;Y_Kq(6UW+x96Q!{wk=Q3GnsPFP+4 zQyq1+_R&+r-~0Hg`nz`IPfMqhL%;hb4*R^YuD`3$vK-CS2yzeszE zc|?6wbW&G-i06k}bj7+?atpjKg%471qA9h3o~;UES~Dl$GkSnBLA!UD>Z5w4uCCu@ zS{ZOTjE$UCIil*p_!^a^O7033f}Q%&a=dk7PJW8v`_|9x-nM=-<#X!KafMUd$#j^H zBP^$Ko4T_bEKFEht0=Bd)Zvh2#@=#o%h~KJsg-_oNpyU!`laC8h@Y06BPIQuuXsU; zWukPkhS&Oj+CP!?FiBY>-t`XRl3hz&OWkcf5BYwQTj@d7R2^ha!P{`4+J{M`U!XN( z={u@4^%mVoQ@4PY;TchPs;rLhTIGC<5*<}R8#qAQkf%zrf7MA@`t961-OKW?|NT;y z-lWLnQB*U0s+a#+qpQ(x8rhihu=ihriPf1$; z>q~yVh2{FlJ5m7xyy$dX+bo)1voPXcbgX|4w*T@>kZcRPk%`x8+~7 zeD(2TwUqjK*Bl>|2;;Qyw(&>*D5_61NUb-s_O5uTV()-_)iBqI!U36$lK=iZ>|O1* z$KS2|TqCJt#^Bs}CEcBWhyoRe(DD1qH}Q?37C8SYEc>!Yz_&xWz;*W^5nmK2R9@)$B?FmH{r|n>HvK!2A%vO`jw7~S6{nOY4=>tC6 z$?6yIuPc=I3W?q^o-^)MuEnnIoWH=5owPH}<$^0#>=YXjKd72qeP*@hF_{s+{mwCu zJZnlnC_?k*T*5yM503^yAC0Z+ucn`qk_yh5lAwuC7?5JfkH|p`pAf(cHxMhcE5d57}@X z{Zh>%*jzoM?WW?8De{lE4o(wST+6xY{2h6!YOv8SaBunXQSG8jV`AdGl{-gjLW|kA z#47jmve9`tDcq+qAIp7i^S$}cxjCPUqg=bG?!NOQPDcF`6A+gjKQ?Yt^ot0mUznzW zwAVSVq<7BCpR1FqeXsv5@<-j2xb$n88**0_AG1cd@9+=g))d3E)OIvHW#fFR`?mJ; z_yquiC$_7ml@@bjV$rr*15CzR94SltFjK|4$PllywG~UwN*NzN%64+Ob;3yYL4g%7XEHPM{|+dsf_aa zIUX1L=cZ@sGu){^QV0C3n!fGV^6adYD^~9S*%M zrF2uS`B&+$)4ArN?Ip`>CEPT5p?Zh8Q_#$iWpFfD8g@72eZVPGxJILF@N9D=m;T6~ zkRA4GTKeO(*bHyRw9NSItlviq>C%PPhmQJOfv`{cP1n)RG*mNJK+4y$;6@>jLPmzf z2R98I;@{cVWEx>O2>du zZGZZv+$9AYissmkcn!o?%>&;iU;x*LZ4K`l@gk&>ztxz@)Rk^H&sZEqdva@Knlkvb zZ)q1Y^0VZejNb?IO(ktC2Kzo|0{6!IL_A37RaxqC`r#(MUvvN$s0w)zIwQ0oq(jK% zpk@KdNT*2gd18+CndjTrznx!mb2sBxcADvyX0y_YFLX&|wjxu}yWgGC&ZM3Ey|w5= z@mA|D?@eNd`kwh-$l>sqFnefh#NM!h0d}^b_8#HSy|unA(==F5$Ye-JS-|=bNIdBeZD4RZRUmOas6RCT=F^I3q$}L>uh368D* z28E9gKI6aG|EW(4-4kLtzsPZ|I4IYV^C;s$(yV0mmrpK}zpJFa=a)Q)`OIDqIvrXk zo@|xv`7vvOuE^TJ9S*F@5 zJAb%$cnPqM99>0Y(|>1|`|R^~<@GekA2u;<|6!e-6)#`dzVza*dG*^}pFODGW>SHWn(ha zTYBy|Uc5d3R@Ry1xF3U4TBKD-pO-bT@SAn5Tap>|dHq86i@Ces65pfdrN#-`&dg5Y zzF5tB+cnV9(z?#FxGbwQ1yxTEs-QPYwwHcIR?^?4W$*?2=}2**1FXUNx{qkcgijjAs&s6@WO1H}EqCQ70uGl1Ok54P@X6hLCxAj!<*5CHD zE-AIsKV~Fngl7-WzfqcMpXDhh)xw$f6!ZhPRo7_;@mWcbJ4joE0=|a0RA?-ufzc`z zPYVHcfG*ycKy_`GfL%=QBl5OR_BQ z?VNLl`=0Bb+vFx(r=6=D>l`m}7yH^V%jJ*UkiW$R(oZD_s)0$+g0+PPGe)e(H|K6R zjgCK^xAEn2efE?S1C(B*o%Yp?)5}KQw9)6W--*Bhp)nCkIlclH`3Bx|$1B#Za3q2X ze(vKmtX79n4a5nacFti6^1?*uwVo+$h-A65v{dqkj^?GellPE!ig&q?Cx$6^$i4JB=B&EBZkYZr z!#=|d!&KvS;~Dm-$%DMaW&Ue}8iw2rVMENpZG#U4*#ml-=j&IhAFI>puF4JmAMbK6 z>$$?U^Z0QOoMWBspk~Om-Lu{(OD-8vY$@4O@&VrS{-t{@G(40;UCp=;oZT~kZw)Hx ziO>WNo@1pxAPCmto~t3XP!+AIi{wu*hK4lcDGfKwLlOg{|D>y|mvrOx4fPtsC_}Pg z0J{Jh20I+TZH9r+E_8#AshEjVnW+`zZ>lwQ6I%1V2hc;J?(;HP&6sb?^j16EaiyR~Rf_g7Uuzp5qSs0&^Y} zR~{bcXLWmZhv5bu1HaEaW+P~)9BMzL&6tE<#b{Wok0VR4bU3>N=X=P>n=r zEt*E!<=V-*-rCxl>*^A9D8tcvsrKYo#i$tM6fs*6`Lle6cZT<|$HA57R=dNY3n}NK zU0z?rl!)r8tauTW{3bLt%Amy~HsbfJcJhBo?h`eV9Qx<{Hen)Yg! z>Kt82Ws~2q*Da@vmpe*D;xaKDB;Y)uj_{4YgRkxUT7EyDh(EdbDM$g{fr>&oah&*4 zG=kLXCB2hMr69SQ+)ADf75q@Vfdc72UaCma%8Ak%c^z_pMj{P9l^BClXlrUeHIiNn zWkP*qKzv0T(o72^e^?lf>7u@^&Oq{W4zg*sGMA7&ZJ~z3Gk-L323$dBe9w(wi2|WM z?Ub%d zZ=|PSeYEm0Jn6r3qD-T*vl@BuL*RAXkvvVdqwZ5(>BUGlYN%=g(yhL#kt#yRv}fuLf#k5Wk3; zTB+H{gyYb3jP?=_fTM9#t%clQpT60Ms%0kAV ze;$KE^AEUFF98?y1`JCL=*|^zZ3*Du4uFN71kLC|P> z!0t#&JTV3AQblqqxtDx^HoHyUAy?r&3izCDK^J`jr8EV7Zx(vrJt%RDl|r;rRkUIq zJWF}P31ZO)f9eco=M0gK@!T9eVLmw%zc<7)tpNX2s?5MAqm+AK3Adsb>_w7pj$9y< zN<~mWA&N@TD;_x&KG`|4A1K+ups#*G6*~_a;Y@sb9Y`EIa*Y0Cbh_gEArcIvjRZQ& z4?j5y6j~LKP`*f_ccaZ8!-4)Ts3a$zvpumIZ3Kb_%-tk%BEDMUJ!TOX(0ZZ7cTkNp zl=_$>V!>Ux;pJHb{dp?Xv)4gy?gHDn6a3meJXH)Rqq7+84bgwjfdeB!?d1_)h@Hep zRLe}nZDkp#yg8tRMk-U4dCDFTXYZ9>~la`DS1JLMqE9gWfJ_kdHg zDxqMP2H~^rf~)xv{C))V-eOQ%-9X6I#0+Z1_k4&xwGnf|OuWrLN-y-c>FEFap~ift zIM7zHVCV)x_dFeaZZZ1WL~wtTz^&Cr+XfOesIWxkI$CTaIKOG2>6(H+Yy@&G{{M_v z9i<(p#97L2jMp!U2Xs~yq8>iaXnfiMU3)O(0$YZ#WhD@Dx1Pb+A=e zFapove;>SN#1ir7ikjEP8Th ze23vm3w-rfZ1Q5zeqOl+-t2#b*a~GEzIzfV%KyfA;QyJvnV6%d5dDa8_|=Zc1>c&F zws;8@zXNsgr+9)&{~u>+^!EDT25O)cJK%4Ml@PScJP>y!_)`qnwoOV?{C$cNixxWu za`P@R3-7!kn9}F?JWG@V@?kixK7qRZ4)#o^peOkR+OQ6ouQDZ%m`T1NhGX4J##ruz zIi?@{>1*H}70CB7^J|nMjJO`iBU0hJ9t3+_LPSGRA3`?4o4Kx(;tlP=zlkAU!a2VU zxlNf)RL0Eo89Mc9WCZ%oaExM3VL`B8M?zfyQ4bX4Wa6l@Ov+M<<=z-QIm!m&r#zcj zi@CWWxrMk+6reR0lIx{>%yP$-5b~t*Oj(USW<@{#4&~5XqC~E$%qC*wbm--+axDV= ziX0@rgR9_1B2uYMB~ZJR!5DArm3-=@T#pzAYOw}6Qf^BYDqW>*peX~1A)=&ACVxr` z<$p1D!^B18Fz}%S)mF0p_eQB%awo!v8b>xJ|5W}W`%@1k0-E}PcQ=&U#KknOE^$|qt#+FX^e^m!8aC9K8uJ%m8BJRLCTh$$gC?-&LZQlQ1XY~ zzam**887)#vBYqtv($kW)hun5`7kYzNlzY>Ii5R6kKT|z|>goML4QG1G zF3Ct}RjJBT{;9H7^_H-CzLEWPN4a70F(!@t#IKbT)D8LVViT3W^h+8~)u+9p1U7fD ztRr_zepGd88lOa!s%ukkKX z&!)SG@v@POXPQYS@fCHR+#z%)`ly;g0ooKvVKHPoaR+&Ts=yz{4Az}oEqs;hs2y+~ zxJ-n@L2L!z44w-E#Nplut)1HLjzE@CM}84+rJAW-?l?(gwviL0*UEGlu^o~A02^@t znOgD437ROZR?VX?DZ$c6Y9Kj7tS_q=tGHcu(-X*M=wnw@QN$K8n$S^6@+qk&5l7ci z6k$C^ysvbM_)AX1{P=}fP87N14ss%4rlQ1JSP?{IrGFKElQoE^ z;$4uX3#kXPg4ypLbexsM4bpt70_bHQ;w!laIeVqzN3sxH=3>H5RHY8f1q4IBRI&&y zX(5}@>C}HS%mr|oYs9CrhWe`X!ER!gxK8;*b%*!vP0-VmL|J}IE+B5p18^6y1bj<0 zy_p;%y(e~4wXk}J5Ek-Jl|NZi8Bbi4mdXc|#&Q?wJ~2sANgY5tpCb?8#I;@-06qCN zqEsHB)Fp0WH=mGb_y-A!pX4QQd7i6OBb$*o zr3p%Xnju%nlca<48+jBosk5O4K8>AZA85iBVHa^iA+cLuppaA%Sl_RhQ;!pOl=0*> zax4g$0{OHOBcGN>V6AQ@n=lJZCLYO6vC8hj%oYxhg8g{*gUUbH*G?vE@&$PoX3Bfg zC-~|{DRZzlXs`HSF91FfGtLnCAvlbmNv3Zw5u7i8@Vql`-;8=_+mx&dcG@huN@mx`y*a zp`ym=GkiFi)Bjnyp{9uu?SMNorOBcpB|8AWUYx!n?T zjhDDiI+d7BAv8I0Y}eDWR={FV|6K-gDDe;BV6z_;PN ztX9(G$ykR7(tuC?9eeQ%tZ8=ah02i(^@Q$44JJdV7DO-z?`}%4+*odf)mc_v6VaGO zi?By~K`aGn^r!q7Gi@8J$$RmvnK&=#(a%mGl{imYhm)58Jy9AlgKP^wiWvF^sO~is zb_4P!v6om5C!z14k9A}eD1hhS3tl1*stV3>9~B4ou5+Qs{)F``0Xqj3c~}kvJ5_=l z*S&Hk@h=?#_og3MSu2w|Dv|g@v7qPsV_#iWo`W>o-pT@ugQhqa{0%ZcQ4S+6P-p4= z)DrZZXV~RD2W9;LRQ`10GRTn-aw(atq)5Z03@IMt=rVRaRf%y_E2d1uw7Q?YZ`XYHHJ$mj$IZhfXcf-yk zgp#PP_ysZ8$4ZCP;}3*s|i&06J=Bqn8i6t7wm7=C=ZG1ctgwJAQVpbQQaqJ zfvW2!CxGR8AyHxzc$sX$Q#PefGFs*@dMeqJXi0`s4ABU0__Sgr|DvCf8A^MM^LA2G z@rd{Wo&w*|;~$g#p-@?kK5Qj_DUtF~c&2Ej+45v!66H&GqUX{cYBf|}jpYi^0bG(F ziq$2%{FNv|-@cB!%E@pgxkl{6Nvac6gh!R-L?xU+c91MJniz!{q>!42-I5MEqnB_2 zSWQ$^HVa;UD_rkaNvp(F(ge6U^dle9w=`3kYt$u5fS1lV)jP^b{DuA&tL%_Qia+_b z-s$`};iE7LqwzZ4=LF&SBrck5N zOjA#yXQC~uN@k(N+Y1V}JL2Ec9AY?yF`-1DO7U9$P41y{;Jng@Ij-^7=Bm~7Qn@Nf z9g`Tq5B8YcpWI1;4QJjH#2@e{Q>p#5oisTh<*TWlsETP1NYJ%Hs1Pam2p#zh;is5~ zY=ec!yE;Lnpmwkux{S?ockIm-`KEFUbLCA^LaYC+Xygc-LOOv^oC5!Y&G08^1D-FL zs!BAMLvX5Ugi6H=xK5RV#9W5|aaW#;3dan-GT%iC!%gHOVh7z4S#=s6snszLs6NCM zX%Tow18KBC-8bnL=N>@^%v8h zR)`j)4>1krH;>Xu*(DwkmP>k~9?65h9F0@GFVPBBft|!Y>8G$Bj#CSyuhLRvMXn=T zQP-%AG(?`;O~+NX04rMl3Noi$!OYu+`!SQzElS&*bq;Gr`{+PFy zw+_EY{476LBH^grQax5}V!R-{x+$Z@KH^(p1b>=uCk~M^kxyV(Za}q}LT{pb(rb~m z+!uL%MskKcQmP4-Gg$nF?ASGMaDgw6a)lg9MT4R4j;h5=oS$pR2~wG4Qo0dwR59H5 z>M^m*e0m(wNJ7$-cOIAR?(F$Ps47(=oYWv@6w(>@&`05;G!8BT=j3a0b(|?RBujsU zd(a-NiGK*b-e6?gRQLAa?fexr(-wXJKaFq37Yh0EX>uq?#vZCh^c%9a;uRf8ul_8CL8lar`EMze zNJbJiDFg)5U8#ZC1xY-qVv=l8I+6j@cdVUTs4V&c(t%fk$2vu)P;xW)cN6S{%QN&Dj-elm57Sf&t4ANf6MYB$h=9pK$hU{`!g)lxN3 zrDI&kM16=;&|+ma`I!!27SUg^YAvKzt6r**)`^qUFQKKV#riWJoKAG^ zy--;wcIRio6>c6E#m#e{a~B2H0PMjbO zR8|l@$Y0bJsucU57t%m@r;QZ{$`_FF)t}m=dJfOC;~I}f()@+Kb(ZO*9-{VFe^%c{ zPUt)JF?E8vGt-M{#0*w_fcsM_<*Ul1ThcqR0-eLoDM4C-%;>{V#09!PIiEP<9p@eG zTy5NKxsRUOLV#E(-k1B~Y>TQ1+T(%v%sblS<@#|;T{~T!(1xSD)x1B1X0WCsGOVoXOzppVli{(x3}j}wVU&KJuC`_^J&9Dv zZ}c3nh0QcaG~XD3OptQ~nm^7ZIh#9XS=*I8EURJnIB4suxOcdJxKliDh5pDrTtGM|HHhl3nh;&7MpT`o!tj~zNqfaVpyT~R z)={V6;rNkV;d8>z;ZFx_^$Rk;)elmSr?Gb-E`V77KwVOg(4S*ln}gWfnweCxe8oH3 zeyT(%ZdbCrB;C@}{gpp1t|Tg|Gu72;N?9b9^B#jvb(VXDdjizqXFWZ5E$$&!i?f85 zUN7ed)pew>M=Xvw*HZRV3?R=S!mox0YBmUlS@37+Mdv54 zRs2k*K;Pn{zo@CeY*eavBcTNjMCROPt7z}zs>!YJo&||@Nigt|_Xa;l@B{gMlE^2& z({*Pv*0}q5e1g*ZZ@6N#<9^%DOaW z3GJqbBc(Qpnat$TjmUZOV)3h&a79?4VJPlgddPCwUe41v$Gy)c|d=4q5T0L{_V9s8n{_ zEa^o;{;0gE`Kbk`OX@nGO0^laeu}Z0>7#L}K2Xz|?ju#>ZrBWEmrFL5Zm_hm5zx*r zckkmi^J^rVd<6CKCq!#X0}nWnuB3WR9#`JOx$U4BD?H){36q3}Vh5sFHCTI1AIVlT zhx(+L=OaU}yXl*8q_GlG>U*-i*@f&Gwj$dGyzD?jGxa)opR1##MbVnP`8gl6TjdTe zx?pqhO_+a-AAFwsy1=rxHr3EnRO)k?*73y}q=>#OnozpJde2dfqmUg*qcYM6XTE5X zL9W#`dcUd#EfQmqyWN}r?tSmw=bh`l!dH_0sB-FNx_=E(>~prV$@lWGi;|#+%B%LN1|1<@fdgz`jTG!B$)A^Tw_sSWYWB8qrZ?9iFsrVDwzI2dvOa>mEHm; zi*dpcP_*AYW4M>@79J~qPEMs>soU%OvPYpeDfF%7JJbBsSfcx-3DP(;&*8JXTmR6| zg-tMhH+?mIF`xF)n3L5fg#niIJWJN4%z~_CIS+EDlvvz7Rn^Q>0_Y%Pz#8AX>`d)K zGR51*zP>aRnZW)fJ4+pwFh^gv!TS$yh5OIHas@E&S!4lahZn;)xG;5*SMi-Z6+9O_ zdhc&p_<<2UQ>7+aY8`#kXJ;d{q- zif^fzFw`ZdIQta*n^^#*>Y!hy-`PbwoqrHhjnf1DLZ1gG_-jq;v}S6VV1#dRcFC9$ zN9jH58plgl2X30DuJ@Q%_Ri%`3tOcq+!M}GMX5(2=R1TBP*(E)xT9RVT&JNBtqpI} zfrLx7Sr^1^G_^5JMT*e^qunqN?++xIb`eOXSi>=+lig*yW?E|w_GSD{{wqvPsTuYS zIYWPbPrj9MF}+F7;^M|!6GrFPC$v{sPO!(X0b5(Mhp6mrYhPO0pd_ngj-`%6c2D$* z-lJZJr-?`JiG)@;NO~%(NFUWY^`Gk9suQS`H1*VSpLRF%^x^A><>e~m6IG$6t$qPG z@!k4j?Rw1#&EMK&-Cg}l!zSYyqZyt7L8fu0Om-Z+O+T|$Oe;+F*aWqYrzF2=`sn0g zDe8;^zn_* zaVgm9P`0z-gYLcdx%Q#1s$sUV3;T*ynNxf!`Zo-C=bNjZ?yi%Y`*V8gnxD0QmCw0a zFx+-Vte}4!FfVAA{|ol9?ykBH{atRu3$7;4hVTrk=4l1*S`&BL^%X?yXV*MWOQAV# zrLUtN;#Fm0Mr%xsk~<2+y+OPQ8rqRK1&)>0Dr2Y+riJFNw!3z;<^l4Cl8oQj1MCrF zdxNAqsEamujKkUO>@w3BpIqOb{=);F`#skm;FssWNR9Z>A^C7x@9aT^M{P63C)zOo zcEL*nKCz3muT-6=Q}Rl_Jy#u6?l{j3?0?PT8Sf?cQfF-k<*4Ue?e6LwhTdLLHBVDV zR|9Ly-^y0L5gea3cpC`grI*S++_Xhf8nDKfp!amE|I#$kUejre>Bi+qpbFPD)_*gM zW)0?tK0kfK{Sy4*{K|Y|eXE-+su9j%nepH6e)UWKnAxMyX*=hcMl97g^J4-Qn`>)Z ztEQoT{Rr7}k^FGaQ_o=jgm6`8?@e>hmwvmpz?!o*kNhVrjkNu6&sdq51snyCE z@x1UFIg8s+A$clK!>uds+2A!+UR_)BM3bPMr>kXnV64mbG;T25!@i@YQDJGHn!a(q zYTqqBF7q5S$M)2Va#BgRwEExYC)fP7KW|0Je0w)<7*%Yz;9JADx1l35f$Bsxr@rG1 zbe@m&{`NS%tN8i+aZf+j75fX@6T8hhn4|e+sP|PRd(pCLDYKiNNf_brr&ofAmBcr) z5j=CkaF^Kvm7NSSg?`TjYX)g&>rWXY*qz3ehRyoBx-4CF!#?(nIn8&E|0n+?{tf;5 z`n+Mst4Dd-Bvw#&HWm0ZWVfojQ~u<2xcRjs(xe=*F>cJa z3IdK2_*~N^wQ{5uKVluLXwu=q{5DAznkL&qT3P|kxB;uKGj`+)m7cSKmJ^rIZq zW_bFR((z29ic{T#dm$@@i?9$@0^!Q^9Ou7BaPUY_*VjDLL}~MMjf?}Zj=uFV_|Ec? zOp{o~c-qj!*p~gpnvDDD%Z>p#W76kmw#*+~dc%I!(@!`oy(47mBhgFv03GR7iq@oS zWlcBLSoxgy3%7@JgRFe!=;B<2S>zL6jvvDHbfr2?oQ&>X8skztu} zn!#7QM7n56`h6njM}9#uZOd@==idnPq@kz z@SmECYHC|lR_DRN`EU4(&Y)b>BRUhg4q9e7_D6FyFEkUhOLR^{U$%&yj2-Vo<6vWD z<5z=K7pI|_ZS-(*m2`xkj(zGAkCjV@w)}_dUoMpIBP8=t!b6ZnW2EP(`X?fr*(?=E zm*8_3iA2muE{I#{(L&$U(i<-%h>7BS$&C8Me6f}!%G01^+5@FQJTy%CaOBpYl5`1` znm*JTRT?u=eN>}E4^Gmw(EY;tKbQT-^wAvT)5N@!ovUlcq*CLl@2J05qu>-QC-L97 zPTsXRDW7uZxPN#j2&*Mu#Uhmx_IaLrUZHL^PY#pI<4)s&cwe~UHE};&4_))Pc<%v0 zBTtt7rAz#9{ym?{zY!ZLr{T9Kk!m<TVgAvC z>-A8~32d?HqL0UCfX^P5)gMq*QzU5?@kTYDu0tilA%C@}6I^_*aV9RDtHMXh=TK7^ zA@2mKdft=3FA;yrF04Z{mGY9C_wnxK_PGk2*{)}vZ~Px(2Y5HP6dc&o9rkV)I>-{y z7WI%TbP-iVPA5Lg*^oH=*Waq+d_GOhBDp<|uC4m0?xtVKMw&@;e^Zg^lX;kV8T(Y< zUMtf{a%XX)at1n@v+@X`*n5#X!0B=NAU%4nn%6Cb5j~aG(g5L4p5P~8|DE+;QmbOd z9sDGK9iOAQ3l4$bG}q2d$oB<>cxMD*^(?i|ln zcsFbjAEGWeMJVQX3*pi>r5BY%KT$PS^+MHl8Z<10#3D+hr!w!2Wfk2dLzJKuKb!@+Bh9)IXF#9% zB1Xdx@QhGi=neNmUg(G_Xa~8G6f6w)B)iXIjXLCh$Sw1x;!GR_ZP+DH*PG$dlc$WJ z?qDoFRxMLqrYBH)QJ3?<>F_7h6X_+Jw4Jp}wJxo{ew|@9`@z)P+|4|~9AO@B`egh^ zKS?XlH)WbX%6~uwQzO>mRi5YYl5>H6zwhK7-CP|#ad4yQi)Z%{D)ABC6i+WcQ)q^f znjp0jCVK2{o6F(ybwA>C{4jC0~YTuhyYZ_Ob!sg7XcRSW4=bZ6Cf zrkiGywuLT37oe}Mzopk08?mEJcTH8zi_MSCTAx6(mc6B`#`qEm!WOty<%*%gK~Dp& zhHIlU&Uwml)&9{IVjtvs#%;sXya)BCcq)3*xk67TzMZfU4p)hMQ|~j36tA0iALkOh z_0T6eNqTvl+!6W;FL97cgcD;rvt1pkF>9Ww+pCM1*6O-Yk6N^&btSr?dd3if+2W0< zvw5Yt0b1*dDH%>i$KYJyR*%9>xJ}rH-ZP%>=+U{)!>{O`U9#D&+pHPZQb#k_Hg_;b zbE%x3+v;B6HgPIXMej{-W4?knnS05N;{h6c zp_)M&y*6DVBPF7~wwx|O_f^N~H2TfRkD6(G$cCA3m^D6sn=hMrv)BB=9AoNhjMXWs z;lv18nUryG!%RC|kT^p0l5`j;p7;oco$|7$AlAg$Qu~$1mQ%t%#Rr3w|v0>U=?FDVNb_1TKmVTq& z1_z}UhK7bmhM~qpV?LW`x(`X(HuyhHH~X5OW3_CrH)wX!2NgTA44%TbY&UjV@0|A> zlN=-MkFAd^dP|^ntZk|78oWC~9Jif0&R`egI^g8t;4vQzS~b^Wmx`+k7Z0~rCo~kV zNDpLQ*^IlkQ0BS1t~Nk7S(lHNnV~;~6o}S_VQ^OSHJXeL!wo~8VWLsTK4aUMCYq|7 z%9%Kv{pPTJajHL~`=a@zxzyM`lHo{Et)y}+ zZ)pSJJ@*h#N9a4~pX*fyli>}{pr7=)sE@`Q8X4*vS{gbSLJb@B4rG12(YDeK(IlwL zRO9K1aHwtuSIkM$A+dqT!$Tnt^*f{2#!bUr!y>oUH56yfA@Gp82#>lzrx$KaibHT{ z;Q~3=ImxxleVW_qSqQhcL&8(>74Gd%D|d*kWFXa-x=QizNVVZfLzpd0tooaJgeF@P zuU(CIJ5uMy>28kxu|CYOz;My<(s0-?$M7e-3TqiIK|x&+8su&oo|&M!OJAe=(jTdA zR4_7JCJ_}3)&xriXo!`Tsc>AH4_~5|*2cE#aLrum*y?25<1s@2@{Z&ag_bzY zlem{XP3$M%;f4~|*6^}ApuMNts;_TIH7qxFU_I<$(=yXBQ>m$qd9Hb+Sui~`9l$otRNrOR4{N=sH zncOd(DUJq?7WTHbBi60fp4JcWC$p8=%PLv!SSnkuSbNwS!BuUnbF?eW9mLhaol9Hf z^C$u@R+9fzZV(%vO>w3nrp2c1*b#L! zIpB48z_`}1K;Kn&OFLAXpk1YTp#H(cFfpoc(9N8MSHf>`HTG`4o~iC3uJO*xj&1h4 zaCytNF0}HNfflvJQ&!D#9*#KEtvZ{_=HoD7cE0J_;eNn<@!a<=hojG0@tH&-Nnkd4 zn$oC7GV9f|HFdO%?t^Zn-p?@A@WN2pxYfw8!`MUY2Uc&YVQO!RH>piG;3s<0_!x;o zTXlkVpLU`)P2*HIRIg!PsFu3KjB&p4k&$NWvh&#s>`nGAdx~8S$H*l36;?A;)A!LiwfD7) zwYT7H*;2iZIjE{c-$AB826Pf_#cBLzc!$|tp{^jOuOrC518G&?tijg#milP`(irsX6pFoK~)>C!yA6#;Vaq zzZ}*1ns76XHBLqy^|jF#C#q2xt*zi;sb}{avkY$JF?H8f(7DipU$Ki>rGCnsSJkE; zk|T+#P`!*2ccb1hksIJ1?HcTC;+SavZku9z4~Mp0mMNCamTXHs>n5wpcFeZgKEzQ6 z6w4*oPO#~%k$ZH(dzAksl#|BGJC%C`O*N(`sOB&e)GakeZ4TVOGIYWEzw|l!zJ_}S z-cZXp+IY&CX{6XHY-@HfTZesV%>8s39bt*0~@eFUE7< z)7jgZ-zQ{=)#R4S0B8ulQLL&!^@O-oUMVH8ETUGm+nVZC(EF^P{d&2Z*MnGeU5P7 zbv||!*q7OV*jU>D_(`Q&I7^&$FdX?pZRxhX_RfwB$6Duj*HHM`>OBuVtGyffi$anp zLV2{5zzsSbqmohiIHO*!F>AMK^R)501vmb~EddMUqq)wER=IE|f01ae9G5N#wRsoLRBPSgxI7JVOtK%e zowJr%*2D2?wxBb^a0%6;8El(TVfJ!Lp^^%O@*d*t^@5K_~I z($iHPnOf>VoaK9JS82<%1F`e0tKX}a^dk*9hBn5t#uTKK?Pk4fe^WzKF8bs;W09f1 zp{ha9Z`B+1qjXtXujZqA855{V1Wnb2xFdhYzTmibh9`)->gwf8aE!N~u{}f!F0s_H zw6Kh^-2J~l;}7dfJY%YTGrWugTxIYxtjGPrGZuNv3Ego=enA$L>6m9O(f3uyn62s> zP_DGc*@i>?SEuiXQ$%CKTSIp^6vwlxSvNb*^bu>xc~f1}X4VbYVmn6raD%K*(BIHm zwS+cNJru;(2Wl(Xi&!Ejidx|&JXqekm%03$CP$RLiLIY?wI#t4W(k6mM{JyVuy#C>gdJO3^Ea=$7GLz(@UD z)sL;4Db2IXvZebiVmGU#ujTGZMjs|zN|jHB9D}L%EnrrTh?2nZ5G=U zdz{1Uyy~3m(%~s*aesMkdVlay;yme<>`RO$55mRz4r)vH)nni`zDDcSPSt(W4aQEj zlcCVC!Wf9Umz|wx`eJHt{>PkdF2HGHocX0G17rM*alKJ%tcTtG6eJ@K*F>mq!i6@6 ze1voVA?dP^>}~CN?1cuj{G5t8asOr>ijy zI~yz8*Yv;?W8P;D_nGIj-)E;!f3VQ+O=ZX=^<}pkZy25;8P25prrD>~!+o;{6+(Ve z@}Zd{_>rD3?mn&$j;{8~wsO{T7Ij%G_^Qn**;V2y>0i34G@$GPyalUc|9aiF^uIh? zr`C1Q)eX6lCt-N_}?O(?%9wN6t8=VV5A7W{&Q%pV!~Rp2w`24Gq9Tstt67 zkKsaj*vrAobc^$=Jr)_j56bTTkE62yZd>cNux(kkOp+x-$YCxs_m&w`X6E*mnVFk1 z!!0v2GczO&Gsm{fw!rZA|0a`W+UZPBW$9?2z1RAdd6Vgg(OI2Utubyea>nk!(tK@x zKrgq{wFayuwi5eG#|&qobCqk5dyr=sGY_V<6?_ZWjj94MK+k@FlmnTZkzAAZ#{{x3 z;NL8l?}m3xj&i-K5&jh)0jJ+B>SSQ`cBl4JWfZFUk9tXdRCiOC5sQh<_y*M?SqG_$EYQZ)e3@QBv|qvQF9( z_V$ag+E$7%)Ly3L+40tN_)!w$d4&C zcu(SuT1gGk#AttLQ*;+}b@X@j8-P{2Sf|$Z0_DUdxnBBRybw~q`?F779($&BuVn*` zn%A2I^fb#{V1piXL;=lYE*r{6dU4-*@OmEgeE>bjKb)U^$6jGZc-FfYxvSkrJtX9J zR>AB&jlbz-y!X8~;P1}{ZDN1l15g$=hHl0o?@8#vDg9dlcLW%)yjP&<(rlSrsl}VC zms2yfqk!f5A7npghGv8fGmJB2hBXf}heQQSv>35VwgRmy9K_Fb9kettwyvmOwzs51 zam%9l#jVQPRh@v8@muy0z!~`m`e$dMQ{_eeLsX!)q5U_!D|tH*cYnKDxjMM=T|v+h z91Rs^AI`!TLvFQw1#xJ`r*;^mJIBp-cFJ@GXWXVI4ya!7nr|R1P#RaO!`w4RhD>(4yD5nw(GB zEpqncG|cxF|EMgZU5=y7Z*Myxiq4mw#Xe$1QU(=^?ShxS&s=Brn&+y^?#Ok#b;i3# zfsSkm+Yjd7Ykb>5bq?tpkjH3(Org4<0XpQZf-30>XzZlo29l;2CEuz@Q~to0tG|&8 zsUS_3Mxg7iZx!SZS{-~OBr7!D@YJxxa3L%ZvNA|W=@l1|`u;G+V`)>_x@c_f%*-Yk zyE3vec4l78B}-;h*R$?+?c}Zm?ut{e8**MgNB#!L`jO&gg3I0qYy+l;Tj5+_mpeu} z-$PI0i03+^2i3@IxP}TJ<(0x`Px)Z~^cH(PzQVvlVPm8t%*JcU42r+XO4Uicruv(@ z0jVcjlaW+k%>(Uk9TK!Dcy;JLgDZSe1Rq{(Fou#r+lT?u7J;{H1AD!yt3~Z{7G}hz z+tSlBax!P;TrWzlI%U1*qB%%ELb4@?!C#$-orOGFL^LbV);kEQ8GFm2?Y z;Pmj!|FY`kiOY7F9y@EZEBrdq5_CA$M>a&(R@w-?E*d6S?mNr{F}HvNUg{nQ6U#K_ zAMO#X(8oXJ_wl!2lC*;#$!>i%AH&DtS5@y| zZ*Q;kDmE%6C@rerL^w4{`%(WXxMf&Xc(cf&2zj_EG$>fEnI*p^?7#|~i%i{1&3Vb0 ztI{u|#bor)uFP@gFD^?r^>7N=&6MeI7Z(i7xa=UKx{=YqV)VG7V)bPpYeU6C(@8aN-<5mKTR zUPCn$luUo2GkR0;P&ps$yXQ0peUspf&i<^lq3pV**dcW{X zcsVbH31HjFGDPAdc%4Eu;s+Gic z^-J|C^?Tw85y02rq0l?Kj&sBS>Xvq^zD4ljP<8nFh?@~9;g3Um1YITX%9;ozY%j-1 zS`s%#f^uwB={g_L9NkBckTQ?t%Nh zXWsvSpWBa*;jh6J!+cl0H~4W}A8<7Y*}BXf_k5Sv73{goRB)+YJWxy21y#xRDo&}k z6OG8B)N<+v*$wFbwbYv-yu(1Up@R(T!)JuoH&lfz(l=8-mo^qW zWrFPcs`xqo8*_RQFsv!^(vs=IBkr#*XXN)dWU+#E*Sb6*wB~3MVcg~ z44vs8!1S|*Rdgz}Wd2F(_~*!K<6yZ`g0Qwk8{Y#CYjO1AI4^Zy)BWj#$DY#rT3E-tVE8H;w6o|Q&R zuSk;7iQ?zL{;LFUUv0rYaEEsUM|v(KsiykJ_>RD&yCLYLzI(>H-#}8wP|$6QIF^6y zFAyrwy4VMKkZLfoQ9T55D?+KU)K#)28Bn{`1!NPA3sh@mK@US-hFuEp8o`A>1-8(B z%}8a6L@Qj!e78^)rwXoTbx+r&wfckp9`I+?-_E%y#rrA`(_xOu%o^V~;Z5-b$ph&u zAdfVcl!{LyLCALS3f+f%&xhc)IxjpWOaYhIS71Rr@TGX?b8~=!e$O@5#kxMYOFS*u ztNcd)V_}x~lk}ZDOKHLhHA(&^{lIj)L!KZ%l0B(wno+u#AY1VM(0s#=h=RyTQ8gnM z8#?L#5LL3NVw*S9o>5g@^gBE2Z~mWkzpwr5^;4d9DYH2LTdBJGu;q?(2uB3!fPP{U zXv^~@HzbWEyttEir1%J872N=`#S@VkG`#giGU55aKJfI-1!`!0M(K7y%1@l@qU%4m z0*Eqwe4_=gkT;TTGOOaOYATVaE>$-rYm##Eg<3{tlR}M2TdkLe#Dt}WhejQaeiic} z`hLWp;2N45xDL|?rn)@Fhb3EcMVb0^|Ia}`@E`YoH_K?4OBKggEH%BdKk?wcfr7;_ zw_1a~himx;a==?aX4E;PBN7cd5f3P5J3!}si0G;?SkNKR&&P9mwvPLmQw+rHjn2)^ zA?{g>oL}wVB&>(VV8`W*auFV>eyGk=PbC|WjmTzX33*WSUYo9u4=D*77cnVnZcI!Z z5?dbGJTy*sRoz%-5hQzZ&9_Q>=l#x%OV|Fo{Qcth<-ew-N9UXa>YTaykF}|LDc>qE z1Uf;>#I4bv=wHzKM~N?k5+z%-7&(rx@aG6*bGH@KqGZu>!PtPyyNRPcuU$W#vz)b^ z`OaCcnVv)JIj=@g2O%UIF}u98Y9(kcBGg~hesve}E4hI>q?xW88T2b;oZ)YTIqFA@ zG_GIlsL1D`GJOZKRF)!?F{kLGWoSV{_Mh}=zwjR+Kj!}0p58b6T0xW2b5#>8L9Q;G z(4Qq3FFJu_K!#2wXI^J# zJZAp6|2lZH>LR}(>3j$H>6RcPkglMj?=QBCGtsS*FOqP{QS`8QE7DmsT43_s#}pZvx#eg`xUc~U*H!A=OH$<2X+b8ITPOxXQ8j;Kboc5iTd%uKSE0kRAjB_ zTCu*knen%QA=WyqG^j6iT0Tfr$$G6(mAi}9=V>yp|MC13|N8QKOnOchlh?JlX$56E zWAnRQti-p@KLxr%LeUgasOXaDr0AO{8EFaGN(8vL71C_Ub4ie-54um>6geb(;m_db zuo~u6aex(e05{A%Os{C8`iT!yzb5-@3biRgZ9}gciX%#+ zieuv9-zT(AoEo<-s;*&s@GR<(ya@svbL+RtX~oXGkjyWCTK}&3>)Y?E>36c`=b=UQ z%MC`qrJgg}lgkbAMgqM^4NmB1g84!x^oJ-U8~H1)3AIxyWP)X5?O@WeSt3Dkq$qIP z+mX(Ns zFf55oh*88_6W=DkOJ1J1Htt#U9z&|$N@Pn9`^P)8Or0yz3$t=|Wt>c#^{48O^RFR0 zE-$(0Q0e^2TBcrBi{m-`8;3xJ{+?~j9p$fhPx_?5=y)!K1VxDpyCx@<6O>NHW|;e) zkd2pyhy#L6zMWh=^Pl^J>w&YO^RRQ1tDR>V8{=K?R|_5p&mf1<4$?ZZ0g6{jG5&Z^=tG?Zj<;a?s-&VXmgEPxluHN-ESLX99`C}pfo!_W8`1v zZ*bOyoC*2Eie8r>zdFtUH)2iI<_jF^eT)y`VC{MRQ3aAtLE7Ai{%%Ok7qSNAc0u&lHVwU4*gwfC_l*d+D{2kDCPGy}r#0RJChKlB#1 zK`~0z9?&^WK&dxG-W2PG_7ye!-?@&{vZt6eOn^DTF62u2<)B#~22QX>qI04gNcl_@ zk4Dc(wqr6yTfCB#=wF78jqDP)GpT0HW;HFzNK)JQ+$c2chW4+rMAV;~=%{agQ;C!Y z7fsGTmHRnwRY7oZ=Q3Tzm?}|q2cyjV#r%+7NJrDV%-2o*p=;F7YPauly=8ub&vO}K z0TY5(UzA3d>@D_{{8#p>VsrIO;}8>T{AGM#NRH-L2kjtTeTzJJBc1n@zZJVb!UMM&;pUbxXgM#Fq9f+gg!U zeT*)!FY-8ewct21PLhT-luuC%S3H&bWec%TaCiO|FBcQwF_fc)=mW^1xGLQtWh4!t znjV7G6Y2vQ-k;nj_7QZJmwBgymwUXlt8y0^5_H<|IC@?DsKoSy{J2BWO~Pjc|Il2< zmtkQdop+MwlH-F-XFG4T!lZG%?WS!5O!S1d*_M$2pj%#vmgkj>EnZdBq3BIfSjon+ zeU-CK8?0r{4s4Kboqz(@V>LQmk|WtKSqLhq>!3|&gr0|loDb58vJ80*m{pLfYs$@v zDp|F38v09=8EEdSVD@;boi}J=yAp!l|Rc?mz*d%T{y9@tguV* z?9zWL@~T(SvG#qgFU$=7h_5|-uCc<6LO=K+1JDu668DmnNrm!AWfU$~k0hH?t*ISk z3w10$M==g##FvFT{bAlQpf-KQ>iG!Y&pbk>Td#2}4VpAm95Y>=T}SX%Hs9Yxi} z2g+W!gqVG*E5tDJ6*XQnRP!(O zMtu-}tvHAcM|Gl*z(VhGt}(lk+0QIz9h}uWEI!41&4RIs6*ZO*y&%#I?4`^ZuuP)Pb=iBWWBL+$uRU5;u1yyp#PaVL{D-CNQ@ldt>x1KkEEqwCeTP&=r^W9&qXDxFYlyi zsZ^`ptNP*haTgv8`HEhcbFRT7@PjG@v~Bwp@8!iZA0~udF&(`so{7YXeu65vCS+0E z=l|nQv7Zm7<;-tLsr(K3MglepG~r{|W$a=0KIqDeK_w{W zR2<1+u-J@bHe-%CPEHc3@5srO+cWLIQnS)}|Q`9S#UBX23!!&N>h8zl2%sThu}lU7Mu z!p!@XSS)S{zV?Se%}W7yu>lf3RFEIt0J`1dyomQQ^c!5?%GeC% zCbNy1!wh9QF-@5`CWN6F8KYtnnD)#x<{W$~NzemK`~SN`3VRaA&-5C-Q^Act#-9T` zt?z;Eg4cph!mluSHbI_1L&zfD48)6U$p&dW_8Br~IoS&6drwh3R(KUj$~MZzFunbx zm;o8N|H?CD?PR+_YZ@Z$Az6qX5I+OuwMf($^0W5@-us=9Lq6EMng0%6k0q>`S;`og zU(n-S>zV6W<2mm6=n*pAnFFxKhU`}MCyQ{6xe?F{Oyy2<54bm6CTHRNu$L0Njt>I; zFb+SXK}p=2AHmN8_xlM*ij4N2g{;DLz!P`?PX98rA*6zRSCT}X|IakLsT1l~=vr&L zQ;>+Fnyi>3&jAMaYI#3JoZ=stnRbz1$0kW_Xe}`%iV{5WN%=<1T~|AY#FlI6WEo&N zZ5eL8VY_1A=Gft!>uT=4%z z@U49N-xC-hfRqyooGRe-d%wbJ+j+x%9UMS^#f|M_8p{_tql?f z9|(>P86R>gWO0Zjq%x?jzQ0yP%_khn`En(eg5DBgf)cNYgM?&fYkL=K1^vscf~oUh zQz)=*pTMMalyR-`i?NSMZ`MHa<8tdeP{s~+?s1j6yD(qa{=CP#67>2(!VvJXj6y1r z?x6b)M@OP7(P5yDZzOI7PV<1^ci@fxqYwAZ@#-LzISjPoPkaL)B|ci*S-MSLp{hrw zXf;6(LShV!BCbciiE0|164fqZT3BXKislY}OzxJ9KspLe`AB{-)5ty4nQuQ~6WjJ% zCD!4VC-i6Y91~@|C=45e*7`g;2N)XV;;G`7NV({)u#4c8zkx3eQULF>gV|B605U`iy{!Wp z(H3;0?6E46TBiRUdM9FkG#k4sK0p3aT)UVikWX+a4NqtU z+wOnwLVp8MlH{R$H*s9MJEU{O%9u~_QAux-2PAJ!oE3L4YEIZNT_#aS-dRirdU6xo zgyXPvhUFx^gLcxRK(%4Ce74NDET!9-GmW9uGb`VfZ!CLI+N5-N>Dn?$#nP$=rsmd; z&RR@oZ+*dbq)4(rHdRqWRizq)$KaqBQu^h4WF$6QQXrm(ScE$Tnm{T{uO4ul*fq>! zPe0E;o*AC0%yae^f7OqQ1dONlZLq~4iJll&CsCT*HTg@TF8*5dLxV181u0dM zk`zHBex-Yvy^E!V*e!cbXK zHOAD>B6B$0+0fsJL4)Ulny*C39P_@lbaKtHXV#vDiiP2}{t|U%L&Q7kMG&ufi^aleO zbd8h&m3&QL0K3@v#d6a0tGaKMq{>s-u!^tBuC8TTYd&EPqMw-Gn*JCkRNtv8to%{2 zreaRTKb6j^dZw9{Iu40v7XNSHCc;afC@gqilBUu$r!*(2edH@*Gh__Pu} zFeXkCO>5yOWWMTH=FVo4bp>Cf&hUQMsiey*#u0TgBumkulutFfXGkXb0rJemDPy zyiUIQYE?{Cv#Q|gO~x(egI2%elIIy}y2G1Cw~32R z^dvP-YMUUAoe^0QdQ^8sohzS)BzV(Z1=fk?qN-gLyUKhexg}dm+mz3(jDfRSXH$Wx z5q*(9L;puNqo5Sc1jv(`OT*%At z8qwvk`w~tixso;{wvLOAei42lI8~E~zm={QEM#Xp)i&PLv1)X=p|o{LbV>74bvag1 zR&lfPebs!U*)$N;M_oZHaU6c-%^&GQmI`Zu{jsZrIl%`7T%vSIsobKvp(Y?jv!`yW zE<`8M?k7*3hR=aZhnHx4p3_Aro_(<%ji%JqWztpZEuXF!5@vnW~CB zuMY`xM0AT886TPCNfy*to0u5aA$no>?BMa#VdZ2QQWJLUB@6^1h_l_}u7)5eGsUZ9C#9_CoN9+3z5%PmIEfUBy!i zhZX!PSX5*vSzkJ~te|{c)n?OM`Y32Le_L)?d252LhAkDo5c>>=#np_N$F1)Bcb9F%A81YlzcX}=niktE;dD~R8ph;$iM?ZAM(#6I27My~@*hZh?*-Ro+iG+B zs+T1@3e^P@3SJayiu=Il|Eg?pcAg|va!>YtQJW6+v3W_b3?@nGdaY@;|)P}lp6(YZ=(?JPT>bF$HN+Puml zwnw=zc7dH{!(Izi2&W;8|7iD;Y5Xc7o?Npq(+^9&r(doz@;WA_x5LpxZU;` zYa@D=xwqM8-V13bGS^-v-TO-TK=MR!Uj0-zDfCiA+n6!&nTe~C7uQ%_<9U)MzJ1g< zgD)tFDv%FB`g)%`?exLwhUH6(%5s_Pn4E^WvH2egz81A9?O*Z1c*ml0{BoLITRbwz zRKL!(fZj?+Hido04(CSka;Wjn1yIp-F)!IJyQ|o&(t*zLCDELiiN93}tU>}9D6P6bf|e`^b@+d^^v{I%M)5;~KI}6t3BxeuKuE_D_p@r2&9ZDlB@0cX;guZaK z@EijNu7|Jdy~00&DtZ=ohfCpi^FiJkJ~bqEorFG?->QSr&t z+BU;k;l9Ky0`6Kcu(KNboBMu1&fYEWL+?fJ2X8CiG55Lim4k>D^#uPiw~7@flbUlTck-}Nf&R(o0P4{nvyjyJ0f>vetcoQ zlD8FECc;KKXS&}riToyCJP;LqKx#n!Uhn|^^-Tcg{|4V%|1^PHxDnAnw`&wefFETw zXe5RzqUCe2bjeq7rZCqZ=RE-~-`CE~jtqM}NR5BtsOc_bl-}$>wD>7@U$u{_5i}w! zE;2P{di+qP}!?wYW~!0K^C8RAnTu; zK(4AFxwvlmDC2Vr=6K_3%!Kfdfo#zln9+{|6JSO?DS&~)_o+|l*9H>7p|VW$8ySZd z!c6TySqJ$c`7}7YJ;H`c*Q0fj`+{))J-#+u!}Hm77`$MQ9jBc0+-I1J{4M`H(P@cZ z;Up$$_XiI!?27yo(<2^9{Fyj9QJ(ND#uw2v?4G_0sg-v`R(l`1P%B&AtK3z%H#ae7 zR5p>bI)}^)E9g>mxJ*$UNuRW-oMSu^?yEN&XoT?sB`~bx1S)|ESnl6|y66+N;*|sGOn`>u@kOT&kC-{`^dipk_Iw>)*cIa7CaCuL~ybT z6I8+cx|L`EvQT^){U|vut&|F}YUxv$BELktiuZ{A6MXQSyd*z~O=kLeKET3I@&tBI#-2E2jyS+gZ_sZK6NQ4+Lb?ZX* zg~_+Ue+oPVZ6R$DLAr_mMHfgU(jL-f($&&V(v6b6=q#~cG#*H&?flohHTjm@Fi0Jn z$>cGh6XHL6Kl)n;<>H#s#qw;Gge=$G(60v7LTdQph!+tnB3g$#LW6@Vw6jT>DjEwz zy82hMOG-I*ZWSL_#+Gjg^K-y*u^d+uCf9pB$ zuwL;BZ=`pwx2~@}P+Hpw3_`Ie9_cCW19Z6Ak_SMmdj@=?43tD&aF*&X3=#ls&Ue~- z56B>M;7iHp@E?HIc@(JRi*==Gp-A%$HDgf_9l)fXMK35=0hg@Emse4 zKQw}~&}9$70JR5p*pc8_p5^}o`JhKcyO613EqW9sBvU1mBvQ#H)ChSUBY~xNUzj5x z1XF-Vd)xmINW#+tl)xbf0oPbY2-|gwE?rUgewa{{ZFmF+&-5>~uXTmos` z&wyicUf2~lz+T`No|pOg~pcxY}KrEzoC9@{ae-@h=XH6$}I#;C;|!G(*NA3!sO+ z6&Z#!N6JJm!JT?mbPVRtw}5ie3wW*bfO7H}T_Tw*?Su7}Mah55_b3Je!E6lpC*G)5 zsZ^>t;QXAbI40jJn*e*^G|3$FvUm%!M6?Rd>T?Cp1BHHrzoGB1HwilXN4P0KcS!Y| zcYkx;aGr8pw`=S>Y;J2Rcw|OcH(UMI^S1u5@(^dZt1DDqlbAlxb&KU)Kz$tnywcG? zdps6UL4w6S0Rxolzrxz0;i9dg-=Yr4Yb05GLX4xY(Pfg_u#+6dy2+ff8}b2)?}~qv z=fHPFs1z!|wJ2XHdnqp~VikYnQ=p4jAG&XH?6kC(G(*xJp5<8ZUrrJ~0JZu%V8pv2 zCt$tL!LQ=NfxoiU9q!6@JhhkEI@zvU8(B*&KPC5=ju&3cBG9pgX8l znN^2zJ+YB660Ot|)nnC7)o$VrF@fN~lbNU5tm>r_0ei%%*rynzAQW4{T@fW4iS3l0 zm-Gd0Uro^iLFd4EUnMXddIP)WhHIKL)`5a2V7XOly=m!aDWad!ziFEG({k|f4Yb^{ z#9H@QIqL*lneCW;H24hfgHx`K8}Trn9Oe?c1)N@wy@fsvkVjSspNlB*D0H9XlhlTR zp#wacca(!wCe>U#2X9Vn1{GNjQAM~3fR?E}L^1K2NF~}54*VfL7mvgrsOo_8(4btc zI4j=^e%vY2?vi-)BT^4o;GF`jZyO{wUt~K2%}WB=l3yK9;9A$UEw*NYpYJ+7h>oGX z<{a~1v)dd`&!scyR+g*aKzwE$YQyYb?I*$4Jli$eJ4j+o?mP{yn^E9ixpc0T)QJ2<6+(F-TOR`m_jy|p9Zz@ zEC25R2h8b3$N}*Qbh~5^+|kEnyXAuw1h^3ogHuEYd<&6!jT$32kv~Z#6-zY*7MPSu zBbSj{a5gMc>(!}n9EOb`WLd|I@5Xd8n|DwttY|Z)DL)ON#K}m z;Tg`1XQAs1G=*~CKR}s&0**krI2mm#=`L*qPJ9>4GEabGh*v&Sje;5X86rV_Q5{Sk zByD6Zm>ssJbd-%eOAaOzNegJII;gJ_?THt7eY}|}TuDREc>@+J?S>9VHVWaq?{DDk z#7$>jyN9^6&a3u+ZR6q2ZVcVLB>JOyhIyd56MXkG4>zZp-99Wh1Sjv&mH$8hIV&?If~9DpY?9lY@spxt-+-2orai6aobSOqJ`q~RDM z6U$5Ge}I~F1RPp4z7TZ2U)9q|9ynPms14K{Y9bX6*Zcvw4YaC->L%)2u)_?(2dP>p zMT!#H39KLFX5T|{;SE&b@9jIzSF%HaFO%n5>}>5&*azCKTIJS}mb-KUoo&8pK5AZO zo@8DGtNw2Go9lxg&PZ>uw6tbeSJ?gmb-&Y5==|Y&?mq2#z`SLFV9aNEe*@Y({^;xw7=$TJ|`sh_30{_k+Y8=&xYD4KMmaG5@9(+=NazxCiP>f*>E`q-aGbg6(UvO95%3yj+m_nv1H;4Zq+K3&p(h`RA*FCa z1Q4)a5ikg93p)Vw`yX)})GHy4 z9PaZ1Yb)zTOG8T~BuQSRSI}eVN$|gzPp<;^VLnVN9$4yG&jCdt$F|4*%G3QX=0toEgf%wqdiddgp7F${aRiT9b1@ECN^g;R>olQ5k?6ue}ldR>| zZQ#V$JIWoeogZB#?jS}7^=(a{PWAVVgUo}Sf~&$?K&LncCx)w%%iuM>0MpI+ihkgi zgn9(;Ow?9$>T_fSJe!B8%hU_%H&samsC@Wc3n~-#mxJm{L@K^cH3s~XPh=)(1f<=X zMKgstkpFSa+lKeBx0yj6(k*s1a4v8>u!~{kcdSjVIhM_kJ6K6yqL8^BVxOaxp zJ82g^+hVoMgC5sS+XC3hyEtpRgl?Bx1bhgBLwVdQ2F|q>?v_|#q$m>jr}fYtk`dBX zu$y0#UsD`b?o=(nClWo?bx1q8l**I&3$hp3Z-dIUud9o@Ddb`&vk6>XzA-rDmjd_k zw%|R`u~{S%O#%1x1>knRl0Si+<*e!mzLVGnyNZ@NNtIGESb36W7;qJjY369UYIK@% zY6n$JMv^VnQ@{~8UgcMSdlaiBy@VRX6Twv*6S(M0@}A}DvKgK;?xU{T&TkIZo@8HP ztFq3u>R?wNZ_!wO&?o7Mba%Q2-59*Kljy6ol}@o-0&n$mYYMp29d@(hsdK+;1$YO> zGovAqd@Y{}j=OZ&T^b8}ie?~3#lO)g=_qW6Y?pkS;(#(0d_xzBhw9VhAj$%+z-h4F zJwSwv(zekiXe%^dG>=wU8ML;E(FFOm@{JSy>oF#rj zLmDWS+M*F_YiYY`2WwNcR&79Aq&=g(roE$GsC8@VKoapx@~-+C(H5VlJPR(&?$Q@< z_S1|05$ps~+GgI#j$}$fd4I#1?y%aupkW$fEw;=B^29b!sim7Qnh%@Do9mf5aJX`& zXqY!0GiRF{LhZQJl4LbmpV;;Rsbv%Ruot=)diF9m*#a)!JJ)yL&jtp9Q@jL8M&|(; zoRsyDFM(@*Q}rIV5E4=Y_sK8KThRk`=;Bao2r|s8=&(7?Rcl=ICYxL zRG%W`c%-tcdKru2lqd(NRqn*wAoRP8umzA1M7a63tWU*$UXA_ zv&KxA3ryEd8%#rCt~<_j(v)Em!`ms{yqu;iU*XEH20!sk$8_fuc$aSTTw%VlUaq-! zKfI6X3Z{VPk4FZhk0b=lA{Wc=DFVut_;g~2`YQQ|x~18#?V?N9;rehrqL=C0>Zd@~ zvPE}D*9SW6>$ER4->GfnD0N#xi;q=~mZxCjC5Od%qBuw+>E>I;qugbth3BrT3Ao&A z+t=GZSW7IVWiG9yGvOZTX7-rU;H$)x4e7jxOvk}vnrPk#*S!J#ke&*aSB~|TZMS_1 zq|r_W2GTswR^~kWmP5R~A$=wg=qo%Z%0t>h;;9(UKbzz)fKS*7Urg+SJ@Fy+NON2} zM91hR>o4lJ>f7smx`2+-r|Ej@?r7U--)Y)vc2P@7nff7qL$y}uEHy;W}e18=294waK|Dcu2gk>@@05!laBz{i{J-w%0i6Gfj90thunrG6|$ zzFx6QxmvXaKS^9x&nKf`f4Qewto3OJ=$7gZ!@WZ4=4gf5$C?qEVyX*u6Y9pc>MKMc zeo^(Wa;T!2d@puSa#p-qG)ZvSUj*lhFm|e^+Lh|;?1;7#wnXcFn4k=?xaoWF?z~C= zrMp@VTmD#hSm|k~Z%eFBIFD*=4QvZ+mu!D+KHDfbUH|KFKxc1>t1oZ|;ut9_;utOg zoX9624X&whpXh&d_WvXTAlP&Vy~hIOcGWrjEb&DB4*UzPw7qq6^gDyL2KNkE7h(_2 z3hJUy(OuUb(cy*0+Agr&vY?h} zw17TkK4KQaPSVhgt{hT5&vcJA+g~xe1N+3& zrANWJ)t(pveiJuwNqG+Iic%tj|2EUbQBK!4l~vWNd{`b;F09yEWin-0X4yZw!nhFs z4&hxS9z6wbNfjjU3eix}nLrKyL+>MSjofjybpCWqbG~tAIQ6cR?iuV~@5?|J(HC)F zY?bno`ithHZh6p-kO)I{_?ZYt_%}mgShKLEp=fZ9_B5G??@+#xwUj&+3VmizM+a`H zGET0tls7F4l-?@uS*0{5*b|unzMY~OSTIqfIjWBg%Fvs&2C5!z$5spVENxAx-dFm( z;CYTMvn_Zsvvb3WI+Tw#t#UlzjtM(SD-=D5E1+esL!Be;De6k2A!Rv^-{l@^ziIhQ zH-P7Nv+c0smAjmK3NyCD*eOLL+^8O+VYO>u2idG!s0-HZ)y8Sfnj8(MQNX;`LdmH5 zB&HVOeH1gX9CQ_u4>?E;AYlC+J)yd|;$ivRvLmHK%kEW9G%s=7IGnx-kvQ$j?4im{Qr&rr?^0p2^y%OSKn*+61TT zduk@(XR)cGZ~SIgU+Z>L=ju~cDb?*w(Ux(JK}=7dRhS|9skl#g$Znc9n(>-Q>btr( zF;mr8aZA=hHV~L9RkC)9WL0ls4!J~IRtGfLdG%2J`VgU^G<<;JmHsX6Lx1zTY@aG`7v*PfNniix zc)B->Dd=9Y#1hH85Qt<;h{c+2y7@Yj=DNCC(NH1~wC5JO-q}9TF4&C@(rGrOdn9+- zzezMxq5}uiX#4_D!X^Tr;*+wYqL*x=bf@ILWRr4v_;h)BD<*x=Xt8 zx{sPPbzjvy**tWfaE-4ooA2CUJz^SHB`!}d_7{#VK2`pYv70r?{meHUbtqeFhlex? zZ6DlPFW1h-C!^oE+t%cYiv`g+`I$pAx@D&4)+?(`CwYbhK1yb*o>K{WgT902FWyWZ zjY8HhyT;MZa?;$7j$i#7>LeEYafo>9(F+Y$5a zsx4)4#fqXcCCw&lwc1?Lmv7uSmef>UCp?rjtGj+{NO9tm$_&YPbX9k|b z7VfCBIe1?O>0P`~Q>xz|6s2E4;);f1!rz{x6`fp>tx($lewdFDMP7%UcJjQoc3 zH@E{nW6ve^QK|T@sF^5F)J+^N*@KA{Pr>uko>;8DrCv|;hPTcK*$Uerq8BJ70Q{S||bf>k8NxAYh+AuJM zedt_bt7jQRpS09-eDZYiwii4@_DXcJWs0B5amtPIw%8L%cXY7$K0+gB#m~`B(myh{ zVm_RfvhXnCJDm52DH9bo**5H?^sY1*h-6K%OW-RNU{1+Xvstn! zHdcAcW|R;mEz6z8_I8Ge3$#a1DN4w0K}@hhAEHi{?GlaU8#!84-!Gbz6PsnoAqzW~ zcQp@i9rDkYX5l9_t8`6uQJU{Wnmj=q>1*lf=FrZ>&Ua7=nXkjw0`?X5~FzLU2wH#0xERBh~O-^IQazLT|9n>FXP{WR^=os`X`;le9i z4cB~Iq2-&UuI-GYi6@(v2ocFK*)hdLWdKfgDN32VTGCp)Mr0J03vY^2ktgDRCF^B7 zmHj|5+!nv1`mS7|kb<*A4X3%ENImgE@f&d?v;aLW(M#J%uS@=jUBXZPwR}9Y)7jtl zm0o2+tLs;usrXWvVT`a{^L+EI5w((Pl(W|f=5|k>7l8P3U zqSgOemwVa(sOH?y@}56>q4gz*c5*RBFq&mc>Wz3$8y^!o8Ix#C1l@wWx`qLD%n?M0Uk{>!tW{{f_gGnoFY0UXbCxb&-_CL3q-HP z!=$;gZHghvCqM$)4gUwbJVCZeS^>VrE#lE)One*p1zx)gko#_jOe&%OH=o2UV9vXb zIs4gfTRNGK7*AD?Hh!RYJ3DaFz&@lOmaHIzE zrVCX>yihL2wj%8U9lY&;^FAHuC;7hZ!b9jh*?-`=IYtaur>R@2`{3^sI@tlq9I+A^ zFZwL>K#KQ5NE@F3`Dr5qk^Z~hZTu*XWqNqRU8n7|<)^v1DbaM5zUqizjlS)oiPGlE zF!g!r8Wm5ZVWq-l@D^q1mQ|h01f?CzR#zojb3MX93EDzglN_$GQ5)3bm2V|;1--fb z&Tp1%lhw4zGR5Kb%=BGE_JRUOLt)xYnnW^3<&h0Sy9+A$0%n+JsOKKj1(KSyNMGqF zg_xL0E~6Gxhsh1Z5@kJ^PSP2v6!e39vICH{{5>EMGLZF}2TAD-1wTNcKaI~}PPk^+ zXId_rR#i8t&NscZz4l!5l_N`KHE<{C*2e4BlW*lK5eGlrIn!*ds4l^ar}v`2 zBnO<5U8-hO7j2#IJp{-7gb(#L<`cP8W}ADmleI-z)No!}W4+)U!FKSsLo%h^ly}qvGz+M< z_&?Z5VIh~~45q6p|SrsM$<)BWB3=iHG{1cuH&ubi6r* z?qOTyy3P$0fKUO{nepUo@(qEi*2{XJ3BuF9Cj2}0J6ns7@=Xh*i2jeHtALN<`nqE~ zvm>iXu;A{+in~)N?(Xg`h2Rt`UZhBIE$;5_M2HdB%_iC1tdD$$|M#08mW0_S_q})D zz2}~DR(DvRAq zobcy(AGvQh+ZGhJ*U8`I_}e|o-%~9?$8o!*NtWv&R_h{z%8}GijC`s+BKuXkA$?2c z6I)Z~DgRw^EkECM**Y_%k=0s+=mI8O= znxeJ7QOXD^m%SlW2T$c|sZi*vPh*yWZ>NVcR-T6_)MF@K4x)p)5&AO1Ghu>ooA1b< z)<5P>gUS6BYNU%X-BE*l2bvZ>GN0(F%>;Iqa-MdVfh zs2TD#vycDH_}vs{%oPT5o2YkkHE*QjRbKa;2iXU5^X#XbmHnfLXKZ`%onenL#;{&2 ztN%*BRtNg+MW>x3oeNxd-Ie`ym09FAU0?p5_)O|19T1HA&br!E4Xv&61w8p}(e7sC zLHaJxSONYA*bt{6lTn@za(CEcy1UE;`Ux}<7E@!;>W<_9B37-TAcg92Q4&tTUJ zAl{4x>zy(_>6zT0$e|bMZyOeZd73n2^6z!kiLL=#k*DC3Ej?#u?$W%o1&@mU3^x3U zi4*>oS{Uj`ANc)j3#v%&;aleJj=Jmq?h;ULJFAVPf3Uasnc^w&na}~e?RV%1Vx!tb z`Au#O?ZKv+kz7VkVr}|ILNm!Fy#WjCKA|6<&edbLGJfc-%GyjQBiq!v(C*x-G*i}~ zwqkA|+uPi=DnBRhyS-E4aMu-Y8TpfTj;SlAn)#68)+eS~(hzo%w!>H2SvIdj_N=VE z+0NW91)S%lvY)xbSHN9A+mI`^<)`VI5r+f6d6HZWT}_IzJyQdm`i1hlOV^101wL(krN6Qdl^BzVThw*n7FNJxYbG^E4b&$wRyd3N%UyOn)JNtazt{$G z(nCi)s!Avj)okw&M|+KR&aNSuKsXm z(Dq06pseuhjkzrf9PUX!A~Mon1_?CswOvlb3j4W>$u+1HjyHuD8&mQ`@tGm(jsJ0B zT4PUz{PtM~Qu9;hroYWTkiXY+Ry)l-lj?wT-f1w2C%KdKDAnz&>sDMhi()-h0w(nu zY0};1DhSKPv0_Kz2|U&@Ocp9=PC%0`R6DKhB({@v=|#G1E|>2rR+2VL@1QHyNg6Ar z^Pjk*x)bzE>=l&y5j-Tjf;YjkKFo8iutpA>zCJA{bFgi-BhOcZn9bEThmUl*NF8(Eq$IkUsH;FzBF3!=!F7V3#OZEX4;0bezou`lDKMQkU;kUt~ zy;lqfH~D<-C3LEek{oeV-KtEKX9p6z2aA}3R#{;wHa7gRzXdOP!*ZgQGW%EzhqNt_tOZY5Z^cWcInPj_wpwiE-02 znIk$QRM>V2K9Q1cB4XQ`6LhnvzFN&-ZBN_6w%LP|p2oh48~URtZDHOo-rq^9_@G$B z3InR_uQa1vlaiZF*Qviet@3_Po1c&$>x}P`d@S=uLCL^DssVSJKZR)2K{1u@qyM2h zN}YjbhlMndZ=nADRr^K#Adi&S$}#d&Mb$i1FE*RE8wOflfF0(r*=&3(tmU3C=b?Wb zLL_PLiJR06-7ftGv7Vux;hlJq@5g;+J`?MMxkZ_IzLXQ+dq?kxef%Ss@mE2=z$|9I zc~KdmYL{wlD;+MgIBX&RckpUK?aZ@35@MUjMJ4Lfp5;z<|IoJUPH;8&-hxH&>O1H= zaBCTXT25Z0ilKt8J^57|tYikf{@H<8uqjqmTT@?IUR;X1|9@et!X|`tGWU`g{a)rZ zb&>o;R3jRZgXn7PIlW0-B-NHw{$DOrw}XDE{_F4N;&Rdw7DU~PJ{fmEc~8#Rq6oDW z-@cf;;Is=nbR_RmJ($P3@!V^0zgJ)r>E_e}t-n0px5jxRt7}3=%(mFbA8JOEg1LS> z`AYh|I$P zbu9f~#Wj_hR2UMz!z@z?zB!I9Ilh#KiJKGSerTx{+fCOje_GJ1Boe7qKivuaQ0XIB zsH+<07@kQ1VGmb^z9BdBRB*-=dL7M*dituVjTsw%$@D6;M~U_&SCyDmY+=X^^9JJ} zLuW}4Z}8*vgV>JDBuY;f*FDn5kZ-v$-F9IjN=5 z1^h}&MBbdb;@U_55KnWrQk3Mm5U8Q$(SPe*hBem6&^cjrSX#&kV9hw_u=O=xGCq@< zil_C9b!DhVS`}IEFX!1>^ujsW{v6CNt>O>G#Uz%?{8G@x>rvYZ)x+kMI##-8nUs?E zEyuYIM5VwcSB8CDu9Pz}dt^>q`PrcBI~xU7_LTOa2%xi5FrEQh6*AWNMr_P2S8kj4xFdtMp$ zTj!?2!N@0eFC2qEx8xi1Z`rryw|A8HRFzZ7x7;wp9;+JGq4e7-Tl$DfF>9Puj%yW#>~vl^TH;p7ljTT~A$O zT$zqh1^evJY)@^Oc})v{anB2EBPw&zh6y1vid8LM7&g`V&bUE-`pPL2@?akI)OD)k2z@A4!k&Kj`ynq4!jNQQ9lOkmg5q z`F=Lx-;@SfAM-c+-jN&mN5)I$I_5@(lHy^$6*q)=Nvu)I2Wt3gdT+b0y3U|oZSy+< z7xBbFy2JfD6_#qx5mK^g4X_Mr%nuB+#nF5m=Le!R9oW1RP>DFAd(6(|>gc=Z=j#o8 z0smgOAU>4}4XsS;%!_eDIcPd6ec^`CM)`$vN%q;K53vKI7kpowI50IWE7#u4-9K1{ zyv=^+{ivJ$!uJCc_yBe~(}~=wz7PHgKm*x#)AOw8m2;ruoMU5AmUmb102msg*s=T! zNiZfEI~$Kn{l!v(s=vzhMaDUc?oWTBa~PVv&6eVNa+A6Jz-*-G8}l4Lj6aL^Wr|G< ze)wp&^$i$BUhNuZOGxhw@Wh6cb!p!-%4VO*8&r7P_1Jex{sOdVRq_k9kv=;C@-a_+X5-^DW059prZoGl7 zq*tL%a0BtV()8a{L#T;8pf=NCj2*SOUR@5J4Bal&HrJrLQO^jY^33z7@T<*}^)hpF zPM^HN1$`X{T`YL7v%S^*?U5as6a;)nTT7U!@lgGKLVC$#)B&mlA~=tL6lkGHs4Bjw zj90DNAmTDODf=nSI}0LSq{?V+YA5lV>i7(AxDa!+Zh-c!4P zv%?GqkJ4m5d579c7t&)GQFj6M_l+&iZD$+kF4Iq`YQT@)AjeP>sX0_-TF?B(G-GT~ zetwHy?bI#ReP`A&1DIX(MXC;UnLI-*(&nnI6%EzB9|E-lTm3ctM(Fdr@sa+ps&mG>-U%=tT4(27+I1A~By>M{Fa`6W8$E zCms_oh$qB7;ug4--VljIHt_LjL>5raHo`+tqzCG135bfs;Cu1JXZ+kDM5ks04cnb) zM${q75@v!YD8jD2(=J2tekJZ`)3lMerw!JIV!Y;R3$#_J#MlRq{)~1_yN`Z8L91Tk z`Kl#pS>STW(~2~j2*cajG)1nLsvwfEXhp#T5E=a12PXtgjxs+zB+|L;jvf1rjw zUCmJKDx;N$jX;46?Ocae9zic|Xm_;7+6OQrC82u2i^yqlyuA_8f@ndVpgrh0~#Soekk4pnSPE(;gB@*S)w^|slmUu@4qB<%loLZE2 z7vpgTV>1`?-3~J+YNS@Erl_%M4BGcq{iwcCzo?(^x9@nO)M&KWp{gpYSImi!d%Pp+2UhZ=%bSVyPW zOtvfc0o>&o>$elSwi-6o&@5~1_`hKCcaB9Krf-XR~TypY7cZ=>ov#BFE zq+WohtSYeR^W~SyLPQxJP;;1OY&-oH=rHKTU&N`R4IcX==~u&3gK9vY8P6JMQ41#8 z)YY`oG}pA$v>OQH)26jx-Y78Kk&X)~9H-kr%?HQaLV0VTynns7n5R|IeCPWD%{De` zPRjE5wb7@(HTlvE%xlx47sY;0T$vu3yQZ+BH$@(V=*)07m3zif{99o)Dy95jJ#KFC zSU!Mna*lbt(Ilz**}6>X6)L6o$_wNK;LsYO!lo+yE0}v$>ihBy1fB2$Y~vx)S%brP z03M?V&X})YFFa+5v6Qi{w~n_CuvW1wfqow=#&P%QzC>~PwWn8MR?hXbu?bhBntl5I zZpoYJuWheuy?_5XBzjNMyPV~&s>*1VF;1{16+2z(L-@7uQsMJTwkZB*XpwcP`IfP{ zAxAjP6=%8=VRBpVCRb5mHdqV_a{siYc7PWdmicgSbU z2Xl(~uDJ^ESiMYbjCqDFhFXSiVhwSeSXrdSJRuKS4$pZDzm1E7ZgP~8;2r2XVh_zp zOQ{@RI&$sj>mO|&)vsYOo#NZ4mb01NdljDBYmBrU2^$UuNmPj-hrHPO%D7!>Dx`C> z**)+xcgyMiBzIqDqk>@Gv>Y+(V&=8XA=&rx{&Y_CamrbGhyH@GVOV^Ls8Y>Jy)G4B z;-BITicbz}Xq{_XWT+yg3Y7R-xWkv?Tl_4y(4T=H^co0@Y`(J4Rm_I=S(EQ_*qPBg0_L=(<|K-}ZTHoI$WoLhJJy1F@9{qmturb;^%=*Zpm{u6- zi{E*xunW4ytHkO;aeWbUhw7+Z42Lv4LqRI=yW(;e5`F9HvU@!SnG^86^z7-LbsK6T8B{(kws2I!F$B6M@SRQZQZ?Rhr zSR&1N#*>1=+*X5u$8I)%Yq}v}esnb2+yCp(Z{H&?eJ}XYHnT^eCAgBDpfmAz#ZAT` zmf0a+ER~=DaUJX}^^E6Dn~X71J#hzbX3qg-us9&N3CFX%zBy@G{j&YpJ#5wUi#fbS z+x(B!N8~}~q&`&WDTYhQ;71>3Zfm(~IRX{+nZR|yY0Rq?k_TT$J)_d?Ln8r-t;%%VBk)WCEO6#}D;MyaPTPT!jy#?+)z)h~g+Jyutv zg1+{~c{6NHY>lBF-_xE@INE*HpCF&rT2P_7=lYgXfw6++jO7pz;+sOc0IAf(TGIT* z5Fxtx-TDEXfsJ6|Xcq&0A^i*?1FW$}%(Abo=;D zQbkjLOUaPeAwmcnGR^vj<+ypI>9QeH+$f9zhO-tooGqsdgA!bS_7W#TBQ;8#WSnpQ zXh}dWUuUggX>4pO?qp5$IBjnr&Xs2Gmt8xpaZ;Par3sH>U&sE4jYu4s(j~Kg-u1#6 zo|VD!q|81P78sqTW0p0RzQ8WlHhq&Ch^_foV2^D`x1^dA_f%C`6Ws6r!?U-jyK`MZ zl)VpB0!G+s+hTLO*}FJHJ;VJEC@U=# z8;FgB<@)kmeb&lm>PEAzpkoq^Dxp4Z6I+=abvXYwp;Ns`T9*qC+<4xM|th0GN9Xmbc6@hN7KO|1Uon^Xl^6wXpHTHO)B|=0!Pn-Q=xXV>k$*3*r)^E%Yv9k{7SwS~_Wl*@ z4{m@s_JqE@kS~@t_BRT~_J&H*T=9!ALVPOT5POT1_&aoKC{)OHke-M-aT`$coOlg7 z7i*FCKPDvrZ@I)2H10N*G-hz220ehdq15zit}FS+aw=tXPR>ZM#x0H+A3Z!~L|pA3!&9@eGVFcbUFE^_ zP5l7lbW3~e2u;GGL)KZcjMGI{-;U`@%4#IIiX!B?@-n$V-l`}{3w5RRPa;Vo#xufAg0({}` zaDOorbyRub{pO(ZW@YtA9rj~l+{5UBk!vG&#C(WbnPf=ok<+>0gC|~tUZS5u~I)#y2F6+T=n2ma4|>4MZ0KHEcyK+Vfu@T2{19AU~d z_qB$Hv=2ER(kpalXt~guA(t&(&_9ZA+7Q3#2Jm(%$9T<@ zZ~A7uXt*G*;+J#H*abShZZC6(NoLOI;#eNqVsGnD1;5O#UWmqI3khp$&!o@ZFa|!KxT~+{)C^ zQYEAyG@{tr;@wKrE%BguvEm6~wL=pv(@hVhGlB)th*UOD*9!OH8SKB@CjAF!{jBF# z^RM*9xUI}ca)y%TE#)-XM`UkI>-3{t>@U$XBBLYcA#!sjep*swdIwua=byd_U<~QZ zg^GQQN1(HlY90wxS99Z^(lBw2@Bo~aF}O+e*DnOp=sGuvn-4{RX<+mjq-dDGrp|@= zTJE!~*%|J%u4!!A$+R{Z-mDl~m%`pfagzuEDL(A~HxD|Wh zLn+MI!1UQ%(mE()NNBgPO2rNq`?uKBu)d*(tl!PUOs5S=qEQ&A|IV7(e|0x>G~1H> z#J1t)bH}*%T!6d7tzp+PMk-#d6+Gox?VOQ6D>pNJd@_?zDQ-*biC8U`kFS^5Gv#Kc z&fd`Vn{TqRiQ3KelqQ)LScY4ptV^xSEXPfY3DD9k#L+b2KG5$}HIU#$E}K4(5~rG;5g zYy2z?HC#8i4R;LpfO%q#nz4d;ljVZ-c*xz*d13X6?J0J&n6B9OP}N$>QV}raG-0!T zH+z|}fYWI+A`IP7!Fvo^d_8myww8Vvve2jWQ;_{gAZfLJpq9s1*u!=yqkM`tv1dX- zT=BS1ac|n->rmW-~jZqo}9G-Jv7O4uW^=5s_sFvP7?L*pujJT|Sb8p)lI}W=K z_-m?J@D}~RrELLndNp>#tzh{(i~W9$Bulf9#hz(;ZN6^Nh4c>X5cUZeY9%y0^oBLr z>@=R0<_UWJYcQghqc>A6p)Nm_-on&jy90?mLBMG&H36pjIp3a3q}OW=10~&S3Mbmm zX4X%spExr>Hb^p!1&ESzE=p8G8;Bcn&gm-Mw6_RKLk zGxC-c%y2$&xAMP|-)mpU$8;CnE_NR01IIz3zBqrC9}dOFAyQ|9+qm2uv;?fN;AdJ8 zb}p_@U@r%}nSALkOK#PGxpKdvWFO240d*&gmRc}fS0s}faG*NXd3 z|DN~pulYLsQT-Zy6)@vHWXrPsP)m4%s|y{=srnN7^FTF=Y!61mnRzET!`Izyb{6K> z%X^ShG5dYyyi6^#UUu8u(s`TmTR5r})%P|JB*}BNfn+i@9?E+qp=f7E1)S6RV?M^%Q%M-OskO1vt7}h1DqLW*C)K$Jrq~o@4b7IUTo$ZN+Y4pJ2Z$t!tv251q>G&@*1d&)^sGJyBuZ zmn)%LL3Pyx`L3_4JIirDKO}EQ4v`(3SuQIydumR1o0^wWaM_vdZtOo3Y^k!uZL$k} zj(Mb8%Z78ipz5we^?7;mCt@+um}3f<4e0NxkeMMpLsnQ%SXP?Hm}(ezNJeoRzeyj< z%>e3e3ihIjdXi7&_X*p@meO|VPbo<(C))W*Tq))~_@CXrICsB7pDj5vCjF1J*{RJ_ zGLx&NEJ&M@N#;h{uN0OpQatAa)06_OEwKF&^nH2*-Is1h+o5KK zreHBOL-DSUVVjgJjMlH$RiG}Yxq%kme_ZDa57}$lGP4cYO|$FgEYCe>Yh}L!#))R` zn_%*|7ib`{sO><`r|Z~MHSt@dFprr;H7)y3-_l$D|L!*wC|K}lm9@VguFr7 zt|?>^X z=@az!a!uiQ0>P^O?Vh7W9!J#ztNp!gvu&e|vn{ffx2;3nRwvX9 zMHkd}EODH5zI7gV)ha6G9^+}_?diMb?-hKglqF)RH;jp^!_O8s8)}=(=E>#}<^7 zc()b}b1(HY^wkY4kpt>#;9zQV1-w;yi=8Uk^efZ>O{f=`3Xb!Cq)_Ricu9ONHbLy< z8{#7=rt9X_miv}#mVmh=ZcCkkx@yVCvm2P{RFbwxc@o&;8|)qHE>UDdP3Gf*as{(d zHC@^smzM|~#`dV1K59RVip*Apk%f(%i(E$c2TyyS%l`+M-REkZ$jbCuCQ~<@+pNEd z+Nglg9&AIE#CJjs)ZYH7-_8wYO}eM_LTVY=4@#QdRHHIM-VrPj+yu3!4p7wT>MQTN z4psqXwhi@?P}SK=h^z%(LKXF( zXN0?V(FE64=WfUA!V-mV3T_rWE67Fd=3j-q9Cx7MS;skv8axu}SRTP!ApqME4YZ9sOr+6m(*{v$u4Ob+>{1+fS?1NGgTwP2NWQ zzqhtZeXa!M(ejI6gW&bR@8INa4-T(d!4z;o98xZ-hqX7vBk~qCfzCqiZZi|h6fqUB z`?mvfITm%I0rm_xTVI#YMLa-5U|9c!eW4qoi)130ij0kZ235bk z^m=*+y_udvSEDaeC8@>0Y+8wa+D?^0lzqH1NLj1IfN%C8n3awohtQQ+K`cYwrXBJe zj1k=1icz;%Y%ub+9dV3;+AK~q%XDSt0v*4HSP7jU?<_7k| z=FH&feu?M4|Dpd47^Urg#UBoS>@|URf#P5q{}^m4UjwVkX~m*0L2jmjwpM$E99A9V zsn!t}iCEm)tCFM0_2fM=j#S8UR88tv{HjcuDF%v9pUG?FUUD5di5vigbUm^>DUpT9 zvE3q$U_2HPGmzKnglthuWC%MWb2kzv;u_*GvUSM>L)Jy!aTR%y{6X?~>qv0XT%taM zJ4ZxM>w+J?8nV$W?ZEgSr)E=4C@*;jV^o(+0b1=h(gER)r>BCh;`A-?92+AXQ zmE21%D;I$|{T-fFwbD`P4UMxY$|~flpC~r4w6|9$ zs=L%XYBDmzwUB$8pe;h?_5d=tceU5x9Lv=FV2Y{>`u ze127*fzj%WdR*Oyer&}2?Zv;Ys87}RYLXgM&02M>mDUUWny0Ns9(j*;2))~jd}@R? z8AoT1?J~0GS-P&Knp{bc>pr!Ytg4G$nU=d*77wn`%hsb*N6+y z**!+={a;U)5Q~vxACKLo7ts-8SsqbtKhOfNFmrpf#mM2e*D7kf=Euw?BKI7PymXRU zs8YZ})X_SFt?&rfW3_DT$O`i05SqluRY0q2B2)hVd)IJc5_a+V*wvO}d}m`6 zMi9TFXEm^&Yfy1W0CM1=_8-(7PX6yXg}&UtT)n_ZCTOV`O%D(ZMj`~+{n~hIJN)la z|Jx7$A`TFz(5rjUqA1C@)KcE1y2Q{BF@fo|NFD#|MK({ zY$q9Qe}vE5g)y9ncxy-WxjFLc&G36i*wRo~&L7$~Wa%GjpJ8b}?C~bFqat$n)qzE* zfgQg-&aK+`N_pH{D2$*BqmcwldygL6(XM00j$-9(!a9o3mT61yMBwjhFo#>U{W#yx z0jcl;Z%@?Rnn;uex}ZI<1*6e}C0NscV(n~0j}E~~|G~`d#@{yqfw3HOJP|h44eP5q zdKH2_P6zZsD9*)V_;+2{a7%ozHFm!SXlHpsAlzCy*5oUE-Z_l)A&mG@JcqF|F5tO= zb@Uu9L6k#_*5Y6Z*+4M_fp$S@IUb4Nfb6r4S)8w>V6S_NJ@4%Q`nUsYWe1)E zKwjMV-#(ayHw0i8Jm$~%zZQ}hArHQauoQ3-48CSYd&4o7zhd3>#_Ah^HPaXUYK2h^ zBNSN3S19~k!Z@Bn%im!Z{6HG?!}{HbJtZHz%3Wd}Y`6`)gc9%~YU9_>7Uy6NV({q( zpf|$sDLFt~JOcviB5dtnSokL3J=O!SvPIjB@wkNVeSkG&pjTeB(52bX#uPkBu#%tu z^Bvw7k54Z^yMMm39LBv4#<>P&tQr2SPLxD%f|$iZSZyYL?&seEP%5D?T1L!lUCcxi z%u9XzBuivs#$RFVuA)U3Fn%ZSoI~3lU>4%=|J`VZ4xdvS|Dz+$?E%CDAYm2&5i=jZ zFU0)Mz|PVO<5V5}lhLv-+P(j+qn~s7FP>AF;q%%Ryzv3-@EYcMKlbIV@KqvUh0Aar zuF!VEx(@=Ia~1308+uv<#EO9Tl|ui@;wcBq{>kU6_F)w9kXNDa5}# z_}WjL%+J2Eu)wmgzpDRR8THWTpQs#>Q1SCNe8L;__zXVr@c%6C4p2Z}u*&oCMmj zg*AL1&@30mdZ270XP?%vJR#pamFNM*9*gO6nhTpB2>i~M6 z1J5-U_5@%u*2Xiu^*r8x88d$oExU>5Id+*R*yp41vkvU1EZ+J5E4nI1u>$tgpD3r& z|6A+S|K90?m1Uqu$#@blK0imvgAqzbdmmuNPh*bz1Gy$>-*9dnQ}^KcTfG4+*&Ow* zQd$lV-Vdn6M}2u=f#I$01liBKwjkei(L0F#165`p4ZVaRbZ(%(e~Fq*y0}bkuSl}9 zwD6$a*Ux*;AE{QOC$N|4ozx>@jqC`l3_McGXq$=iWKGIJ^5D+D7VHY`lZ$dS?FO-k zEJ3y-eucMPsJ0`Xk~69M)Hy1K979BCb+NDgLkRGgtCJOp=Gw0~Vcx;BSOLqh5dR_f zx)Zy*f-|!%*?^2D^59VoBkF5LttGOU`+$wwiy3K-Q|~TpXeG|!Ch&Z&z}gFdjq0rh z)XDJH64k{}3o^jpDW%#pBh{0!lmAc$v_VR>;6nAGc;8TpJj>-M%hiK{c^bu+;AoHv)+b9L8uyW0s|*hG4vY$%QVNs|x;J@?@G5Vi0QEwSCL(a(8Al$`R;#_i za!M1^Xp-p+jQvicfi_YtMdSdpIUlO-<)N_FU%RP_(4Pq-tl$h=uijBsE8W#wV6Dwp z{pt+$tXf93%hfgT&}&WABI2pq9pmtvyi5K?{!4_CIqC~_3U!M-3;rtu`8#n(o3Av( z+0aBgga1pbb(K-UHp(MqPGGneK^JOUlw99not3P>TJ)2twsavO%PxYYTQH;bexPBi zQ*Gqa@c0UdUzz@t3(=;z@PIYBzEWDtBTj(>ry4k=`YWOmtCUvzs5n>2zVIe?sLQp- z@^1AgV-xN%4cQ`f52?u!S|Qa8+`lX7e6lHa^v`NLat}3yPN0gB+1S?(!*eb}e1?~? z7QO9`JE#Hpyy@^rm#N#df7GMu0IZaizyZ?mj1FSuHY4s)L+OjSBmCsB`~`8#9#mE8 z9hpeD$y~$>CGrcgm;4pJ(;4j93$)4bOuE7LH(;C$&_y|}o>R}`d{4mlC}J_Zxf|L! zq6XQEh(c6B1R!OxCKDscJnVCY#8KQ#&*5bHS*wzceXSKD2B?*Tl`SSV!$Y`F6sdRM zBM*Ru{-&;nPZX#2RA;JH@d+0+x3WkZs211yVQr>hA2u`2_ZAfCt(TqyLQM)T>$~{F{N=IAWJJln~X?T2CT^?2U0O zhFfGF@XsAIS+y&j$(o28CEy%+irYsojl+#G7q`4c!LB()k*fxL<{B$eDiKB4*( ze%PZrH(tFVA5$N~FYyx-)IGQ{&sN*1;Y2&2 zk-uoSF<$Z7DD4QeK~u;!7_)=058O(K5@bvGkyCJHRm1sl0hYR0Yfqd|JHoOKsYld> z@cXW4LA9;+L+wudp+@2)9-<9aqm(f?SN?(i;aZ?rr)c5e`(1=+(Rb{PebozS+f-r$ zeDz7%W}EMIL?6W^+SCmvBb+7tOr;A`+uFh@H|ou#8lgEAVL zWq+wv$ll;jJw!%A(fu|o-$8~@VCcjd1s34O^AHvRdTp1ti9jr!FfjU$N-19dnb(EvZRAMb65qF7y zi6kW}a8>DvSPe^+qb6#Vl@0QHWe72f9EcNlA*%SNl84mshzHET{y&S{PmQKFYE_jI z@}a;%r35n5b7)mNro2(~nw6}9n^zj~2T_ZW>CwbCd_5I-`VeZEZZ>sUt0(UX_Eb7( zrO5?qC2cltgv(GLdsTKQ^Rz3}W2no2B4aUPO^BU{@g(DvkJL(N)74vYiqcvQs1B_h zJnjF8`PhvO#NS$9@;T0j@i-wylPTb>^=U7a%2?eVau%6Jou+)6B=?rzfN>$7yhP=Y zzYvAcPz%@k5{=0+$T-i0s^1PRS?(_HS9=mQp?i8%`&}imLXy?3#1}*yGRgLI0kIkN z#t*^LKO6PQ?@5B_qGhR5aRYv+&A|S98nK$c0r6jn zV(FRKwJMRTiFb%`)J0r&GO+Y^vLe-z{1+a0h!Q88z)ar(cgqj(?K-F(l>jtXTjOWG z;T{xO0M$I^jE4!RXJ?wjv(cn4C}Ksx`@m%oO@Cu?aqCB=(ZF;CHO7 z^2!Y5B>dBGavh~<@nDf{B70#w&z0R6n?;y~cIt2HORUfl#1XP2*xjd-92wBYs-v`z zh&$&~rReVD1ht;xR*%5%$)wLw7PUukY@mYjkxHNs(<3z}BB~dIwTWcfz?7qIsxEo2 z+*3^pluuPEBbu6zdsuOj zCMRe$Yo z5P2vf_T33D*_SF!pCxapSpk3WBu@V@tn=RVUTvLxLm3H_d@EuNIfX8zYeyF&ykI!E zrhX<5>fFpIYLps=SZjUt3#HJtXr9C^Tpgp0Q$H&o;C*c%?x1pHq4pO0;{>%0af)g{ z-o+Vqm1suRq+iots1AriZGykplUPihA&-JV;a>2gY?N!OQ?zL~uV$({)ka`7n4_50 zNOcgom2OAHDxEQ=4)qCWA_+mQ z2Kf;X-QA*dCSQBfL49;Dh)J?IU(ck~8o1AM|XSk!+^Yf7ihm+isfL>%_r z#_*7*DGs$M)s=n{eC1E`>(!a$HKvMgs}}T@@z(eM3iO7I{k&sffhXJZ!mAHF4K51w z3-tD-BXj#kUKIG<_irFk?Z+$yFXI#3+8qjyZ6LlU@ z`iH~-aD?ubqm?QutD5C4flvO`-e@oFo9^rHFYo)y6I!&<)e5|PWj)=YJ~zJLP2nL& zs$-37g6p&McF{}sf1duHDgLL*Vz4A1gOBAT)-lz&75pf^l<<^4##Q8R3u_IT(jl=o z@FTh6H)wpe5EZ_hzJTuqmB!-2e*HLZ2H2pV>jw$Lh2i>NxHDW?t`D~jNQ!!Bb#2`c z<~=o${D@dVEyUf9;*4w^nBt8u+E~PckFS#Zi7Tmasr`1YDR-nTXbaeW0k`&UThqLO zw)M7$wp2$&ceA2Fo_&Ee#1Hi=yp4fi5gDVuX>1B6pI*WxK2EOR-&G&bX^fNR za7Wa^zs=G<{#0a_U@KQ8LXT>mM1;ZfWHQ!BGC{~mXNFm}M;9=g(HsH^I zKl6-mL%&x4Nxw>H40K>^LxFH!xF)<3x`^P_K(>35Fhm$6==6QqtIR%B7oOC0WG{j9 ztEuV>j1P8K`l(l-0#eqQn|~iD@fCRuZMX6^WHD)mlo6?O)4ODp$WG3kh4GwVKkg8n z9o;W{0j(@kpSz75Y3~4ouvF3~Bd8Q$TDq>^d2J2yu=wAwzqz%Gez7o5XnFbB} zrux6Z4m($z%+Ju@)gR+G3LV8*;5Pq|Dgz(<6@MQrIP^BXnIF$r0j{KnJ__7PH&7S0 znW#^7B6aFHZw<#D`_#M|wxPMVZAG@EtUD=8((NBBe)LE^kzFOXzAYyw&GviVaQlNI z%3qy$t^1)LrFZJSvSq;=eG#HL){tG6e+`4hTKZV1TD;^}h*$X@oP}LTkyI4K>vtvSqd02W zXRDXVe!4z-hyI!{)v(Vr)pQ%mw=XSU&7ok0vI`V{o*TzK7w_wn=-xzzwv~8GRnS%9 zjJi+65v>PVm+8cH(&zFvzB`|&uO(zk`@qwzK#{q<`7&_I+l>>Y)uJdVK!L6h3RsF6 zMz$q3DIbC_J;NRSa-U`h8O<`~%xUSylurp)zqgGqla!Sno>eA$Tkcw$&mQ79UUVl| zPTNj@aaQQ>05q)sh6%y~|9B&-m~9O|Z)Zp&9>!T}ihfyQ@5IfHsO{wo}`{ ziZntiPK7bU!6`jV-%MC9L<(QUb_TOC%GA?R&HB=^$6_~Sng|0pIt^V7J*9l0ZrX9# zG_Bt8jdzx}JF`w_SG2#+tCo2nZe?W3m+3K{ADuEPXAMn%pL#!aXvQ^L6Q{#-Oa4MG zXS*Qtz6qT8zY58wMPYd*$`r32($%zEWcW+`Iw{?B-#EY!$+^htN^5zQ)`ThrMpPGF zODh4){v&w{^@KBum%$ZwgI%f{qVFTEF%3nH#-@-R=848=!$8v-)F16Kcdr2kKtT#!GW8Qpw8`U|!b4rDDXWG-WPN@~M4(ApxxZ!>t zY_DYyD;ZJ$oL?dsfXb+6T@o@m>|_`ll4kUaGY!+h$-dusLR!lIrprdwXf=GiRHhxh zint}W5B{RO)G9&;_cvym?pIWkgmbO*rG#VRHDeR=5%X!(fh;pTH#|3GSjJh_nmz%I zZ|8gIvEvaj!4sY^D4%W4JzDtGuBE3Yl#5P}>KVU3?Pd0t%#JCKe(XsuofVsNp}_6d z0@1-eN)mYwh%Azek(`!up=Y4U*1-}5WXV{A%PNMRuxvJ66u$ureuhbf`e`Ysb1tU) zkf)VfL8r2SctKZWD(c2Cz;;3Ps9k4<3}l1T)`)E z7j;$X`)X64udt1+SHYdaUIptjpC?sGkmFt?zs;DN)hqK@DwA?3)sVR^cR>EEBD*ia z`_>;N8#S=VFvW#eU{l*=PBKx(Q_@RAe@kfCf-r;ika455U3jS9DjX3`^R3xI@Ob=G z1lG<~Z3O9{o}doACH1rF(?p%n&C!2?C4c5qaRRO2pGzZ+Mxbf(f$-c2uE&e4nJ%Y2 z@&#NbcV%xcUq_dm#iVRWEKFISRXuOJZE051!SRkVnv}vrF<6@ zE7gS?!8aFvg`&uxf)Pl{l9pe=r#dw>%p5N5(4P}x4P&5i@Kq|smWC2{02Jr>tc(B5 z&ZK&2U)08gnKr|^=doU92LmNBFt~Qo_YwCQMI>MUx=FzsT;0u&e!Cf>|FXE z(nVCFiZdg2i+UG1)V|H!HWNhq0{NB^8I^G z=Jb;3b23ik6)(ExHWVJntei4GgsVeVU+QsISlnxn+)mVSFyj8XnbzsOcqJzeclWYxOMN)zO8>5Tj zMDC650G&c7(6KrfH<=%xzpWF1Y3$28*gH%JHAl{MtuNeMv`=}YrFk~yD{19Z+oku& zpH{TkJFB2{_Os-TN&PdM<(WOIzo~B^_NTLXTO7;%8>#m?CnM5X$lP5co9niTD@{Kv zAI!pvvzk*N7HO;m5v9>WamcHw^aBsMad}A>Ev=g(rxy%g8Mk!29eG{Rx{vz`U zIFAy{pX>s?jJmN3sQ+mXjD02DM{=W5-BY9BtkV&+lTm>Z_LW(lRCh+4EzGsVJJ(q& z_rJ7<$qmz^a?3e82iE!KI{(Y7o>$Y+!P{2#P!#=~=z;8bH1Qw(hC3-$27CEEsQ{WM zjiq*AQK8BkcGsEun)UX@HG^>XU1 z%o+J1o)Nw%=R5n6yvq5tT_^lYwMgJ4HX@TfRZS&2>k7m-raq>ohT5p9$rC3Sl1vdH zMIl+1ufQvAK!wfUhOJPEZ)=!=-6Vz`z}*6GfsZ%pYp~szv2;(SJnQ0y0kv;oKk0ht zPB4e*%i2ueVW-t~-!~TM!sMbvyCL^P=8J4cew6cf*N^;|9Djx-eM$Oco5?xNbJ683 z_-GHeUoTizG(ON0@u4Y^}o&-=_1Qkrz;&b7JsoX`25 zFHAPOlH0}wa~GIB&`kJA7O4rs>Y^C;aPJ-OJ7FdNwqR2B&-6uEgY#!YecA;*=VKXb zQn|FzIT?jp+>WB1h>J_lU0M+1ZY?fVeu1*s7w}9ARhpQ^CY#z@)|eZbznK+FbNf;M z)`7Kyf&(oM+20WG!GC^0KgUML8z=h zv4B2K&NMVtId56_I6)B~i7h+}T=NR7ISn)EY!9f`q=HR(|K{dpv`AZ?S|_V)LA3Lj z)9Nf!Ffl(l|A_MjKUKIdRzObi$I3)?jUj**m{M3VPB1Tp(*A9`*FOX~45kF`a125A zj)#s$L2rVd1epRK`>(b~*xK8++AH|C_V4NEXX|O+!<}Qha-WPQ(0-)pG#fy@)^3U( zzLDpZuuM!BCi0h@%kmQQ2zF_S~BJMR^PI-xjQO z+TG8QS7(tYNf;ufDDw?Jk#}$fyOI5qt7=+jx#M@vQ6;z!99oS7?>Ke^9uLY29#LXr zNbTT6$2S_ANINR6|SrwZjgAPTkQ3r_qJkcJD@Bw*$ zs<|2#RLM`yshm4M$A)LbmF)2BkgVt|6%_j4Iq5mp+~+wLbKmEag`)GYtBZRPABBvb zyXD`sotviGVi# z9sOn^PUi*`6Hi#~nctZf8kcj+*lLWAT1)a!{Ya65y)QhAJvaE5MJ-(I3(pihM81uB z`P1@V_K;U)PG zU4vV1+Gk0&4fVU~|32V>Lks*CbSKyraymFINC@l_c-j%==p0bmf1&-fHP`&q^wpRF zJ;70UE;Jxt8lcbN`&}!eMkvGNOlhuU5fg<~o~jH<^aaUAitZkyS^&zGl!OT~7Q)$l%gufktTtE}=Jk z&N{y_4wk-u4DVs>%RzjaADFB9U|Do}XEZSi_P7qjFR+m(gF@*9&-+~1@yqL83iX?6AC~sQp3P1j5q07FMZBhWUn< zhCpynd%#2mK^=z#Va2-@m@-~(oX5SR=`V0tlmGY{O+U$B(+ zfIYDj7>jZEECw{v0CggRV>JDaQDq=9!EfzAi~Rv#oykyuzHu3S za5PHO9{#Rw@X@u#(Htf13eVDHa7FvzfxHBM;Vw9Xckt$Xhj-;W-rwNr=W$&5f2G}p zdRmP#A4b`4fERcP-&6s-gHd2YnaTNu9S7(1B(8hW@ zN1-2=!u=W1BMMQDx8NXN6!S>`fWdeGZsa+*i2UNeD+LasDf;p_@KI~w!#D=N)E(H) z-y7mkswXJ%V{ibv+TeT;Gkw8$R7Wq8F>XG9k~;w^WF>gb@o1B=XwT80=w`#`v;_3h zfnpBm1x8sK2n+#NBVZ@C;;(g;8wUMV13gjzk6R&LIXH5Qc^EgmaU4jGNc5iS7>%vK z0S^TCHnDglE`?WqGwNz5M*DgkD{-s>&pQ=&&>OW^2li;4b@AY;uR(@fMosNUU)cnT zWe4hQE6Q~YWY6hhKI9qN@gru$PsPMXKJH5AKa%j$S*5RFhd!Y8bWTO*pT6Rp*{C-e z-UXe_D+dd2ON{#ADBDyJW{cn#UV&p%aS1nrH=7H;j6OFEhu2;wA*+A^3c={~!p`^+ zbAwK)+(1hn!5G;Ozw~MB7|&pA-oPjNETzv-xwxVSbCl#Wpw5g23Vf1?BNxO_Hfl|$ zVE!xb5By)RX#t-aQOo5p@*ARre_&SXi`il<=CEn-6Y0FuM9ggC4P!w6^~W8w0q<26 zW&4k>$;Axu3A5%+wBT`!fc+qU4uJdFf%l^*>si$5?c#p)3U{G%I4LNj8>Q4+nZ*2~ zw=RuCXWh(bbrbHHEq>SAKLq`=JnBMcxPC+LYk@ZI0Cut$`k}5v)C2QcXQ%)*L8)qj z$kOL63+`LQ-R0t138=Y;DBlD0z&m)|EAHFR@SFSi={4F^CyL&q=O-1HEv2~KocL>< zt-o`#mcDFD3rbu`e$S@ z$>k5O$c(!~&@S#@ue)#PE$>jqml$VyE5_r0ABt;AXWsI0U7g!Ql4-n)XjcKAOeC`{ z{(Au>fb0#vm5Xxd_xlsQ@FVW|6V8jI*XWl&@Vg9@mB&+y#+7v}^H5%WENA1$!#xxhzw~<6NjIIR()lh4<<{>U z!7;@zJo?aU^xneZWkE?f)Tqv@>FgnmGHb=Pq+dB7JXbo(o`oX~rPD|07nE18UwtIM z!%HX2^iivi>(Bqc#&nKQFI53b^IuscjAR8by%cis;YIn}D64+x{Q{w!I8t$?6kJOm zW%{Ad5c*ZWpjC8^F{!ww^xD$vOYcegcfO(=@uH}aEioGX;BmeHwpE`OZsSaus4)t)g;T^h`vJG@Uk!_BGb3YPU2yo(o+-j6c)rfD~J#g@Bk()!INeF9?)@3t750 zVl6p^98Wc*NUS)Q)6sNQ+D(n8WVx!|3WD$zdP{xG+5Z}%u;Na@Y(5SC_nM%==Ajmjf%97kZu=n)7IiWM z?ZRN@>Ww+9F~(g*a6co^cHJ*9PLcE10;J;Py-U;<1`b(4K%)T%{e>!r{GLgZ^a3 z6QDDBoJ=JRR4$@cW5^tM`kN3bpaW|fGSS~270*3^hTG_!`4~6xVC1dXdpy?qqjlea zTbZpkg?e{Ac!y`J8&LLL>Upg0J?dLEU45v2RX?li@$&&hfgD#isfCCNX$&S$1&y{H zv{f#0SY{Ec$*R;0s(@NRzol8GA7aWMF#j_CYz(`O{fq5`9O8YDJ!3jPiAOY6efUIg z6NA7{9fV3+A2nKe1Fxn{>L|`aM(vWqXQYuI!jIzTxRc!3?i21GZhz#@zTz1r%=dN^ zIcb6PO%6q=`h$~N>&FGVJL^seWl^QX8ig zrblE3WuMRaGp|;`$U@0^-ZiKwr>M1iIv?w)B#6Qs@n5+Vyv#B=hWW@HH;uIPwH>uv z{9f5t*x%T$K%ZxiImz@K+7LC3tBpNOqs&Q`X14YA9{w2t(Sb>U{{}S;o*%S2uvg$% z$9}(s=CiDaen7ld?h0{5(FG%NZe>Piv`PCjrRUG|pA}O}rEkkynw72@(Ilcvgt2swu(ZGvwkA+` z4I#IPcU(VmZ)OfnJCwrxO#NOj>F@6oliQ?jO5c_FF?(iiO8&lrQ0HH;XlJ|Iy8F9t z^I4vLQb`awwY8guV|2LjvU$3-x~&x=X|MZb__ehw)*$E(pMd}RCegerj{D^QT}GA^WJmpb;Jd{@o!>lZ7#>=leY}J)GG2mVKX1^j&L{Q zm-G8Pm%XQ@De6eW32Hhw*<8`SIG|zh;n0nxgvhPsOINyFc}CTU>YnPasufnQQEqSe zEr-V(#KcLNd3AnP{j@8-+#C1H>;JBLw)45`)r0rPzbN06QU_!m&adJw^eA3RHY%}7 zZKbDjLrnw~kVlQDUF;X*1>5|9?t$lm_6D8`93Pa43}?OUhs^a^7pU0|YICWiAQq8D zUgRj=U(~*+9>3i)$GcBDuXHgqqQxf%I;_`86;#x~NXoT@*ne4O>h`P}ZWmHQFTn#748R(uhDoXEOT@R{!- zmQw2*e)vWirei&xW#~xQsW8|UzA|Q0f~|GHa7S|Bg`k!tW`|A>4JpweaDx9eOE=># zI^VZbp2jb7e$JC~#$_jF-OAdRC1n4a$2zO<9mFrn2*Y5yH9QK-9A87$grADwqY5ep zRqGeMx^|2>?m`&y?}%^j7dmq{$q%kKbf5ys_o{T`ig=ylD1J3V@Sf5E-5N9CT; zaUa6g*eX#o;k+=D3(Nj%k zdy~NIkjLRmBI-n)tT4OE@apk38`myVC$>&d9ZQ|vHL6wmRQgBoe7|63n-r55`?Joc zGjE5!-2Sx9!zK^>ANW7{`^DBb`5zB{?U*_}r)J?jexkHl`$Y7o7SeU-2XqDQfpLTB zSJM^KC~Js+OW4jP244uN6q*=n3yUq07PQ8{sdXFoirk=F^f1m%Io&dz|Lm76C&eZC zCkx5PQWDZv=ZtmU^jwgi`PR{O%?LAZ=8NU8yTlLq{3yA5 z#{S${u0)}+GFZdz6kKTx(VQFs`X&n5G%hhmO^>a4_Iv)r1E+>O3hf%Mg$)b69b^tT zVI5+m$V+lG-@o8}*37guKf``BOMaYO>*wF8X&Jk7UCscZr2J0XO5SAi%x2_KI)cnP zSAsr-+zu-$xw!P^GFsV!3a=~AtTv|liyG-QQmTKivY@;xqEDzZV6oAuT8d_78&Zc%2z8~Te8-D*SZC=jc!gfVdgdJkCJXE=+Oh=UG7kL%zY*BX$$6i%mZT@8zD?Pj z+B3Z%vq8?ie9h@Z58kV&zIo&gdOZ7(Yhr2xPk0MkuDy!C#c?PoqeSzP&eG!}Z$-7O z5L;<+<(idiR+traGNM(2PC&ieaob@C3 zeSzv+;BM}T7D~Vdx`40eZeO&-73*w*tg90XJGoA}-+RW3CzM@=`*e))lBI(^*)PR^ zR6wl&r{5UcIrB)a0e!>#c3n3LW^9MJHV&UHe^Iig@=LPjhc+=pu9jmFy<^QIqLo z%r*8b*UtFRSkrU^vE#KZyk(blg>5!6ugCZg4VddF7g!1Tp|%GU`6u{Qv){K|Fn(pM z)Oh6cQa-(OjFbNrQTC1A27rZJ<9ihH~Vme4}#0)n>+pN5o8j8n+SkEXv5zm;;Jm>l8 z@%L^NLqW85)=r`yz9H6;!PH1gDNio{g#XOPiyTF6Med43 zlB1eY|D!fh_b7#GhzR<-w1MdceaixnI;+@3Hkg~w3An#Q#t+5_(>&8Fli6Iu+|@i7 zUfG%E1?I`-CT7X>z_i@d7&JzI;}fn7H-X*7T&JH>kFZ{kHFWWn)||>S`J%K}+~d6_ zNS=Y7WPTza$&)<8m*ku9llY5#9$(+H-17!j_v%6)XfbRN4hiRko5FM9z3@)R6T-dG z-frG$-m9>{JH$W4zs1|4B>pPJN|&TU=~sD|EMxRNQCh3X>Kd&bEFJH`MsFoIQ^(Nv zHnIQXx*6M=DwuQ3JHgeQwU)IVvRUkH?ZfP2?EUTa?M1fpwl22s@J6n%yoavCV$&yM zxUmhlfK39o_8JP^JCN;c0GR~qdkSorSFuCb0qT0E8lfHmv;0DyBA1sFq^;68shPw` z_r$fx$oh*|=-uQk?>#Lv7ruF7JYIeV?{+VBw{u6j{oDpO=`QOY=Kj~+lE23{@SOMj zCcF^FcqQ*V(IxhmUP|rd1bMjPf~E?EIN~<2^<2aHm_+uG->EOu1Uj8=$}C}SF-6e! z9Lug?Pq1%Tf@{NV#g=)ZG2PhL6o=d!$>#rAzCihKy7ijXgRFEFZBaJ6?W=Xab*!~E zGSrN<F#OcY2bI;Gu^ciA@CR5F5GxM5R1D5au z^nwV}CR3F8pgF)Y%ktCG7US%vwUn)$tsis~Tifc`9JX&z4{Q$K@_uB&$~LbuN1I=m zhM7d;8fY}F<2+Dp+7E?whHgL&#F}-6VTJFc_FWA{{^@gaxV%}aCMAkn#V%rym=4N9L&$v2R_B-Twh77@Q*-laHXp{tp#NucJM5A1JZ= zAzQ&awhp(JE9CkapJB$_YSOUMe`=1fjJ6!HyoH*w8}nxt=9~4FE*6XBzIlQ<1lhBC zn(~dyjbTR6kK8sG*ZMPik>!J->LKgbXhRGlf%dC!6hEbpd=!0jz8Hx)bH8_(w~jZ& z>xZ^Adr5DBkSHK;oUl=tCiD<03Y3uL`Gm~FZ#s-+#NbrQ_(yBG`BQYGt(duSDMh@L= zdt+q30BzS-+K*hz9pwvhByu^0VE^ccFO&HwS&gMAJD0fh7w64RfUeB&(c|R z5LC2!FcX-C%sOO3KEqsOZZeOUcgzo_kfGTSXok0Bhk=AS!M7ArWHKE$EQGP6&l+Ma(C0>CZD0cC6U^&Ruy1)-&hi&7jAp%d9I3kjqK;9t(@svAH zQFLc|C!LCnowJzhj2n3`N3g5e%j{b=jdimsGIGdl0h@yV-((N6^Kj?Qp{iEIJVdV; z!PI6v^i`;uMAI464yp~6K`uu$+Fj^WWWWML7&apE?5@^HONEUgTK%T1SK25>zI<%N=|7!l9$r@9)d?LM_7?)g0;(B{FaSPS-?WJ7&;JUBbJpSq3A3NDJK9dsGGBCu0B0LL}z47Ht_OAVrar2>$5@B*}6+Ck6d6Lc&_!WWu}efAjGo4>(w)dd{+ zO+=wp)zVbNqNtUTTkI}MKTYY4yQ!cAGlxty8eENm?mb4M)Q2b_rHYD=hTAVG%n4pJNeX zD=R}`r8mm;7uM@D5M?(TKDN1tXj?+8#)#idoPtKnDY-r8Ynrfu#uM(=L zyXuDcTIEXUx^+;S~!Df{MH|@o_QBJcid9uP_>TU- z`e$IVJ@W#3fEyXds==H32O=QTeT%eP%1ouVR-ZUYo+h$M5Bm0ZY7t^!XHiqI&YVSk z#40M1Y=qn=>ygbPl9I?K(Cc9kJv4$m3XP$|h`xzK1mt(v;8a*0-SB=bhL@c7ozix| zVo5<+c`>~9=i%Ye{WNaaXJ5m&80Px{&Y&kOrw=e+iCG*ffYZ=agKq!MTagWF& zLSRchg)y-TUT8m}s$m=M$qHJ(g?2zqRK_bk5J^=_c__!q$a*Col8?x<$m&@a1fPf4YqC9mc>tFcl3zR#a1I^}X^z z5tZiX{l}oHb6BefpU6T)wS95=?;#-y6oU=*RF*rZL%{{tWq!E#n7j~KGuwiMe2dlier_>0l&i<3v)ys7PV_qPz5}T; zP-%OGn63n@6V4)%{ma*icts{rQ|L5$37)A=<~V2@9?zgyJV%Do!|7@Gq%T^xA$y&z&5Z+@(~YaZ z{a|CEAg0lMX*2SpMbQ64PMqtE#*Q|AGL5j5vR$=z^q(B?n`49HhGU;~BvvmfMC$W!wDorL>O;gwWY`(XH;iecJuMNo_EW7=+9!OdX5LeaiA^1B6S zQEGqXw0u#HRVKjJKF-G*)+0KsG@i$KpgZSq8@OTI8@3($o!P)F0*M#OzG5pFf1195 zvMTbc;TRUQKBR8wpJCs_qQlMMY}ot~jxZ|Zd9@k%yi%^TTp}wfeNyW5 zl$j}QQmdq9r%D-QZg#;C*J%E&ca+lAXC#}`ADH{>0dATx0hzCopc5NqY|RY>!F>u^ zs<)6AyAJDQMCLcBEFYtD$iIoYhGW`H<(t@DaJ&C;JuS@4ACp%mcUjJboRYZ@bA$4y z7k+SA`3Ax>@sTpqS4e!IqM6lD#5;sMC;f~Pw2M!(o0wJf21MMwg&s|yZzZBgFUd>f zP0|BoQi>4$5D(f`oFzUKS4x}Z0!32m`qmj%kh|y(ENgsi5-f4H#eNL~VqouI7&IB= z8y~zYxLxp%pcX+Rk%PKZKvVxb`)XScD{}Lh7aI?46>yOelr=Q7wlsBfZqI;WAMHyu9qkY^C^9@jT`G~$4Wbbbqi+ssdj8=xEGKuAe zKYSAqFZvkl)-%wIA=ssiRBj?d)u71I32}`#!!wun7F~12fqzVfK4Kr|TGtHsbI&X9 z7iolQGaM%G;68>R6G|o2Mhr)@b7&{Bke>9#K?Sk3+)YXo>x%*680>i}ND2(>=1*i542ZE{tpHuxI|axLOM#+nvbcG%kZW%}nMqe`6PPe)=vzW+NA z>j$i}ECJ>wrkc=Qyvz;4YCg%-5jufsmQU8nh_M)I-py5k=6@SQYx!5tW#^&1#yNYk zDr6o@f04E}BQHBS|B&m6Cth0V%coq>$Zl*KX1{M|K-Ld5Z{|ucv&izkH*$dJ7S;-5 zge6c2Oz_^68mLQs4T)y(*zBY}U`A$OaXxgmcI_^5@*liQ zZ6gX zDHL47LuAP9iTK=Dd9d_KEG;>u)AAZ6TkAo*pj^yoV`ob>+e`afzu*1W`v)L5vSPDX z=a^3z`*RK1^2~aA1YMn3&sH_k<~NobwuOF*|APRB<50jJzd&oCF_o@Nlv3JxRyeQZ z&dd6m(J;f9(Jwt9Q_P7fY{AEfXVufh9A>hq2v?bAb6J;J4w&k3M!GBUQM;#1k=lFD z2@Y>L@h|C%TtYpmT{eVM2_O=0fz~6abRyJnK~0dNyzh9{eb$u@oyl~k;@aX~?Xil7 zVvjS2=qPFok>gv9EW%mx1F1;dBW@DIu=k0ObL78}&+8X>@!VK3 zHdo`2(YC5Q27Pt8Tp1dEJC#rBV8krHCZp)}%vG*~X)@F~S6IqIDSjEOEQ+a@X^-(0 zmjjE#U(8%4h3NtB-bZ#lmuT#V9IxeIofvMtf}8-GESkw^3})sM)iqUKC8qE{oDT}# z=AFuWlJ{$Vhk^|S51rfiYu-quxz^iohkQ#PXLoQrxhC9a_8@bTo=n|`XY?`rlqEG8 zk-y36VkohFg=cgy{O9`-hyC1l0^Ziv>Jw-*_LC}#9lbB0h5B5G^gi)6gA(In=wp`E z8v6z#78<$_#9pjQn-fC}M|>N!_sAJ{Lg}c?0cY7+?j>)RZ^DwHAy0HOcsZLO-;^Di z0ujZ}`)qA9_<&@1VNYPyQD|67R3;0^-q0+$M?Yakv&S$e@8X_9e|fSo#y9{r3z5r3 zL}E)W46&4NF+2aD}CG4M{+6YhhXCqT-9Bi zYl!RDqRFs^PT>jfJo%~G0@|S!Nr5`Z%w?YBu~%Bo}n4`4ku+7^czQrCb53-h+6!4BlY_VgpWVhml3Or2LmO z2-$Y)!4AVo8S;F!9<&rb5r0s9n5NuY<2RF^*=agxI%bMC{bJ0+lOv1X3I22*yw;0B ztOlbdyU;zEONgeEpo_X3cFTC_#512$O@Kvfxb#rm0={>Oun0EB zRbEb90$av%>505u>4E+HY^eBc2TL&$tl1$@r2$xvCSY&>94uTW7^xp1pH9KHQQh}Q zYlVI2W%UZY^*-#Vnqn{7ROzL(K!k9V(o(sg7!aMDqE>}xU(ps}&DsZyYyvbr6AU5P zKLry!emVyRs~yf83o^^!@B;MLAgpSAP{U)PS-VmhrBqa&Vt+eL4wFmBT@?!6``OUt zd247%R-o$9B(oFQ(nY!hlLzJ3E!cx!CR<=X-U|Duu4F%QKQt`;us5}W;H^SS@UPqG z3fP%G#2&OSwS{^~1<_;aL(n^I3fn|2whI^}PmBk<(i3-7 z3H_lh*og*UHKsy6DA>0StM+|}41aQxc(jlO&g`^`z%ACJV|t0pq<Mfv|Yr>Lp1zMenP%+hYDGy`5X%8jJ zFJMJCf)eQr`YjwiL;<_w!kvCEW{N(77`h8a@GSO58$nvGLpkPymR*m1@^1X@21u6I zAdhsS?Gsp!%eZoT%!ql|HFeMu)kO6p=Aa7C(0x0l0P#!If zGJM2HSqpBl5ooA1>`Nc{o}l(Vg2^)A`CJp!-~b%`QJa6@f8pR#e}alS4c2p8@rbsKw0oP-ru0V^TljnFxspJzS#`4sIJ?lt77UDZ5B%T3{RCi zu*F^g*Lwu}@v~^7i#Ug_a(EoS+lz6r0#Be>7$f6BC(lKj=*oR(F*2TGeCVokd8idD z`j`hbt<%UlC&=SH3-uI+TCI$0cLJN*6CCm|l)V>z?f{;*0;sQWu$2_Xw+2d4CnIIF fl>Sbko&RGt`{n<8pLzC{-I+6|%{gagXU^-rx_7UAO<+U240&bD_)lv@ zFvd8Piqemat&j>oF7a;z+?1m6`_p7q#DvF=!ptaK|Izb;!3EyD_D zGOMs$mT5^$1DrxD6>Z#BA!?kqF5oi**G20Z+N&&vS%7i}^?6oqJphD4s|**l7nsYs zZymD^Syuq#j&mTbk>nH0^KrjL6A!xEJj_H=2#WRJK zT8t%w7aOckt!-#?$vPFpdq2K204){eHu`!DoczG@xV0BBB3S}xxC1wZ!_-T8nnuf!{^+m}wP&cWJ=pK4`uLn)8FQ5Lg^* z#OedWeQTe!1#NysFF#wG!Hw(S!hP^LHHh;~{C^0k6ah~eTn$)WKq$ulOvvsOt_MLX zFX8iybpX^K2LFx%&Pm|=5ZVDHg$`&elG!17(yWu<$!+lDAuxN2au03(ffNn`>tohc zK+HlPZuC+LDNuhd$hi#v^T2^;kVtk=jt>Ea@FVTH1ue(~^gDo>3J58H{R~)oz+*q) z6rs35g9qQmC|RiY06kv~(t9T;qf9`!4?0r7wKDWUy!8U}Sn#_Z_*EDBrLi)!I}1$z zwRQmKX$cQ3}xiGdzEWwoiduChnDD#F1tdpcH~1xhQ$~l@DwmLt;5W+!-Ln zv&zttYS0rN@bUoR5vY5DUj?X@4P3L)ssg=RmdG5;1}XUB1C~V?OC;5D@WP9J z#9%M+s9ghNFE&WKh3AB6$ZnC`%Yzbo3h9!r6aZVYRk7%)3G}xXdW{1H0`$@asggDF zpiL1jJ*asB{HKv@z((1F(g*`p)zOZ6biiJyxNpO!47d*bmI136ym^MJD98~9WLXW| zsDYMI;46KTy_7&D@yrYEI6y-Jpm^~w04iwQl?Jg1pl{1kSQzk(0u4E`Hu1o@9;<_I2TBy~k@cn;2Kpm>^HEm?O$op+86^>Q zh$;?}Z~-F@IEUeREI3{tkP`4)0R@Z^1nMUWFl}fd;$8rwMh9#jt?alT8-!aE8Wn~9 zCBQ5Jg}I=!7_i9$2!N%4qG;5JL{AFfkbNfp(yig@P1Rf=AGkPPvSu!u+7Sn!Ul0O=x! zk^2l|_94a_*~<*H&I`78L1qH#Ie>Fz@Wmd)iux&qOvpl}!yb@DNJlHO7&*b7$*z#c z4#~leo;h$*2SPmy!M_wr(cb)*!-JlP7j9(8yc^Y8RMG!+U$pR8B z#7na5>EO+Ec!aBHcN-WGbZV1{XV2wDI1tTb|nmk$_a3@NLUh0wf zP4XZ-Y21*XBMqQ7^oweT3Sp23Xyj#z(KG2x1x5qe2+|!IqfdYV$?6H95wFO4l|X`I zbpsfOH0ndvn|u@%!i@MzR;~R7b{uFt;P`ebcOHn_7kwIF= zLC*Xz4^7<^Q#zUWhg-ggcLaGM+ln zDl%yK$)b}@CyPP-(-VrbqF^!OP-6b~oN7={1cj^<`ChW;)lq7oP~=U0Q6YapH3=*7$j|$ue{rZ+9iFx(uEb!URRM=^ zsDf{TSQY)#RULP#;1_)+;9uhZ>L;RQ5+a);aMAZh=WN%%nAGF6c9FaH#taW2=4~KpGw33eK!C# z^-${Ls*9S*_-+uSt8tJgO%Mwin-2MNpyNgi(lhHG_O3?u0l* zkt|6kB$etxevupqQ{oPBF2oJ`O&p+4(xnh5DCVYLp{Mlwxg?4AH2~$g1fD~A{!MU+ z<5cH4Zb|q@cc_G(g}$Fl=KpXd36NysAkk0>$+i+?9Q!~0jtGuoH8}1l4hzM;6m!{8 z=$oPriugj~nQQ@Bt&jzy5&gV8w_+hHL8Fx{1=%RFRn&^ZCynIL?13yF)eTuDx{HUw zT2znfi~sv3+rbbq(Y%f97g^MhWu;goWY6e6Jtdp{ypT<%=z}bN$okSOwJ_*c$h(k_ z$%oC)`~Q`Y52CmtRLGNsd>MH*@;~J5L;jmQCCv(`Ciy4wQ{f4cA(gTJU_((6hTl)3C0BUO@*FPWDtr%D5@YTh$HkJnh}LO^K-vTUO!Za zo`e1bh?5Gw!4Yj0*gmmryPxJNvif}`*Q|Jyor?{8=Jw+E(%7XQ%CjEX6F9eYy zO)3WCrMJ_a&X!Ou%qKGFHZ-mBJ=n1XyP+f{bC>9At51}ZBqM7HB1;r{fGAUA_ zu^k$@G>&QX(;bR-D255eAv7Z=?=HapknIUsjL_((`k|W7V->OsWJ}0K(TtH|2(nxv zE-hH-H^C$8L=gkk4Mipti%<^~UxcEPP@F>%iz66)kcFdS10=dA)*!glo-84iFch+h z6h%-(;e?;3xPW2{iYr3TsW#23$>x%8q^N*m0g6Is9vq4!Xnlp+MFwp&`N~lAKu{?T z3SmO92&+)k6N+O91L}$Dg?@){q847QJg`3 zggh^KJ^Cb1LtczLSIE1Nw<14H{;DckQK^c1RG(^B1=Z2PNQk1J*dXLMP)@NCQBG1K zTtl;ZiV=wllHzkJi8~Z6g(5Vucg(9lHgd*g*_o_nu?3&jUmhVeAbr%D;4q#G{c}VNb65JW&pJ6MeAiW z&rd|}^%1oYH7$VEOTfA(>%;n@^k;+EF!nAR#YW)seKwAL%qF2sKpBtnF|LX16I>J6 z2W$+=NYo$7-eg12vM-=?XPwxKfZQ-BE0PpNr?jF#qn1`uX}vH7>!z2ndU*&dnY*mN zv4*?~tH{4#&3T!%)LLkLXMJPMwZ5`uSzqGwtKjE%)(==`rsux~*QNhL%Oh9=y#!y9 z4Vz;G*Fb85#~s;gz-c6KozCX41#Bt%js3xPu|4b7C)sZHCtJnlv#EgB2hy*Kk)MfPcL1A-Rv)XOrC86*v*srA zb90c{(zKgt#y(@QG0x~}G%(@}W)$g<^gH@R{hWSPPt(iwFr&WF)0k-dYFsefMtyUP zx!!zaR);tHvDex6>seYyYq^?#MsiV|->O8kp_>({~N-rHyBrdw&J17+HSHHP%(nRml~D67Op48t7W#Ds_ES9#wI& zVy3&Br;^v_z2W=IKPNC)Z)+r(5%A(W*l@0b`;0H<#|Xy+QLHbv7rTqEh+V~2VvLw4 z>=C92^@VhPDc=VZ%FEn#?l_#s?B_L|k( z>}B-Pdj;D2Yx-tTVtt$Qa_9LUg#n^V94GCNo=P4`lWnprd!>ug z&r(+@O`IkQ;`f46_>2FD9|Agi@q4zrR-{Zj%f8<}(_X{A&-RM#ves8Suhvn=DGTHk(i(At@Du+HH;uh( zwKg5b?Z7gBH=oCI(EVXW%W{9&;nJBU?TUvL{Z}}oFrqNEU`N4r`eM3L(xQ2@CYSBslbVC#m~k2(8zOAd-<|FP{~$4Q_Iya zwNmXv+hto*`y%@zdy->><7>xvj=7Hh4yR*-y`}vGC_Jpy)4o#oC@187(kgMH(2bAe z?pv$Po<@FPs^9c}<5Ar|mRECaC~aMGyJ%x!N!d8`~K@0321UX`jyZj7%3D0{`TVvg8Q8YiunWO)`slJAvxb&J|u z+oCnL{bs9V|IyAnMmp9yQXJ(D-BIMYhVXtufmhcLSsS%=f*gmis_?L)W^}lH!p?MuAqaAYaN~lNXb>D|d2kQ%of~=BDQ^ z&l{8fV?l0VmEuoIc9+JvJ}dWDZ1S}BJ@gOMGmUZ9HP(V(Ap8!^YAkP;Ybmpo6ve5& zr!H6Lsh_DmRZ(4nG4i|oqMRii1SM;wsnT$1g!G0qTAC>RBPsGAd7T^wKGajUtF5$4 zT3g!*Tax{A`(t}^$2`XoN2#N=v!8RAvyHRDanSLa!v$@Pv2U;`w%4?e)#=I%`5mdL zXcsPV-?N6+QKO4~#6Q57?V06vmk)MrE;Wn$7Nrzi&To*vEiW-|5$HOYGdpKQ&eR+s zcWv&wd9(8WE{G_aTI?!$y=;eTG?oc}_9pm$2)t-)GZWa4oR9A-_LiW5a)dHZxuuxO ztLg%Em%3a1Q(dC=Qqz>Tm51_|a!Xm0!(^9KD&2oY`L_3z*!|fw%tF+G; zT`5_-$iK^FTa(Rv{f$71Z@4$$o?MaUiYt4uq;Jv2g75QB<_*j{ocmht(VS0nSkBJu zjO>9q(YZ%*^YRi3h7=ws(n=PV>Se3STe}Z?>iCxWHH^I|Ybk5U&k(kWJRaL96C2F#EN&Q?E)E|}iF&1koe))-9Bzxp2#VspJB5ZtXWt6f_v8nH> zXVheEhL)yvvmLNS+26AtwO4U`>3Hm@<{aRhPfIT1Nq zv*%{F$vKg;DtBvM^@3jt&lj~VnN+&G%;oy6Vz%eLcaXoPe%u&q9c6?0QlXL5Qw~%1 zDm~RrY9H9{TUu4yYqpiPFKr*&I@peB{j?NytQw=bl@jGJ{MjDmALX>NTiLJdQZ6Z$ zQbT=Ty`%QjzSRn}uC}{25!$)VdC&QC*p!Gb!X4q!;m5;E!Z(Hg6#hwgM0k_16=8>+ zmmDef!n9Z z1@lVhSB!IS^=|RE59oo3dLrVoAFYjihHzQf#jQldqnalJjr|LKJABW4H3Q!n53NJo zUwjorNRdK!p^~^mlqI`7KxwVcRhz0c)gy8($s_FGZ*w!b?%W|RoBM_zB{UHYaRa>n zDCuQ+g3?NTti9&Y!mmU;jBFA$B`QAZT*TGzhGFkI_c}T|KC}N}yP~?kY<(8|yoK^?j+{DZUlHzx}uM z<5m{GMp~l0r6#GZm6b9lAC_m!k;*CgRk^jiTKZD_M3~5RVqMKMx<^koH*-$0k8oCS z2!D%Cxr_XrJWUFSU8SY+0rd~ZnD9@d%*eMR#mL0SrjcJpYz>o~E#V0=9Mc>l?QJz# z`B&;I4nTC|MjYT0W(gaGKEemQ&bpZ&>uUoWAeS)zIqw?xe`PC*kLDlEsq$<|dUERL z502kmb9>L-HjlHi{wiATzHP0M8``6t5zvg~w!yL`JY(IhHbxzNL7<1Pzo(B|cCU5E zdro>A1*#f%SWodUB~ROF@8U4*Gi+_N@oF{YT`5LP5{kHY*f&-`>vi)BW1ZegAFof; zyXno%x441w2U@l*TRWk)P`{JMNacumev}fF_S!V(qKLIobEEm_6A>?khld>s8yhyl z*}&1lKGNp2eWndoo5+&|H}@8|h1YCYJT(Xsfhf4qog+Jv+wnXQWa4F)iuzdRwb*z-h4`^~KeKeNeYPXV-|C zQ8QvD#J&?78`CthYCpAZ!*ZN&Dp)%0<}L ziSkkLPri)1F6@-Ew4u&P5&fh8iJ1|*J@%#8x1#Gu+;c3_>`JM40&}RJ_|bf#@Id%N zoGi{3SBZ-FvCu@QjJZoQ;UQnb`K>%eGW&g7+-u7GMSth_$?2QbF;h-|@_1y5awq@# zf@|Av&rR)B&>&EzzFFyUV$<4%wcknF883y!up#BqdHXWAW{6qia_g{Ek+xw&9{xQU$y_^818u4woyLAUpKo4GU1bIRJ>NP!~L>vv@wobB>pKMQno7H zFnY&IHN>OBL12BKi{NT>d-=q`Kt4g8=2#K7Hf*PJmwl3LulA=lT^p)SlxvE4Y=Cjtx60$MSWrH# zytlia?=3xsC5t8*jrLXuyzTo5-qQX-#3%hBy4zH*#W2guc> zlj3>dE&e9vq2rAuf#bf9ya(KR#WD8*?>mA1R(ElVy4_Zc8N&kGHhCt0&y3Vh`Zo9` z>z{CIqzT%2M_<^SmG-svJI-$-Hb#z&EQ{C~F*iIAHa@JgbD(XqQZB{_v$&t&v2XJ8 z#Iw>!R=d{vAVn+Unw5O&j=!scS#uNvzn?ADHib&vAJw1}-7(>KbB>>k-X>}^}N z946l5YGIA$H{q64Ag3#XwMDk-_H28x{krXd`k_1p<9rA=7i&@Z)<5QE<3*z_R$hM9 zqXKihM#VkXnNnZz4@Id3m-F`LyprX9G9YEh?RvL+rrgPFS7I3Pj!tp!C+620Q2W2c zTCr!9#Xc^7+mlaHHr*fj=s<=izr>x)@3xml{T;Wt^88peqMq${@tk!>PY+xVD0)+U zoH5dTVmd6&+HNM9<;H*JH`WNw5OWnl@LK*)aB8M5=d)zCWi`C*AicO_&rR`FL za#!2t*d3w7*kYSTPYN4q&(f-EQSXYnVZLp@+mFTe!?-u`HOR(V+LY~G_6GG zDDB}}au?V}mds7>8*H!f0b0(U~p>w)xh3hF5&yGE4iH`irX-Ez18Y=g8AdPkKMt zcK6WTfe(u_zbiRmF19y}b0t2i{d4VU)!W5fmjCe-=KhnqjK`yZ^zSWvjmS5+Dk zZjU>WFgD>>rGki3t%P4}ypDO?J?|U7N`Wdyz+Ax|a`pM~+^<+Ytjo5tkGQs2?|GMh zkK4e;vYG4`cAnMce&UYtOT-a!XZ60;*uKN@z?O6xktZ89YMpK;M>Xlw|~ z_Srn^${&|qFMU+|`H=>|#`sN3LlmV$bv#u5Y;%_Zg33J3|Rqh*KyHaAr-|94OZouYk@2Tv4*|*Do zSkEvov4MO!|2_W+C~QpY!rWqhim+G+@csCcTqL&)tE(NcR+!A4q(r&9@{#(ncG7m$zQ=yiW@x*$;o4X= zQE|u_;xHkepUvH8$E`tTccZ3$iK13-o~Nd#rF&?FR6f5ftn|0y=0&d*tj+!8*@x+# zhrgsGJZhG?p>VB_mrsY+j=NQ*UA5~8@5Pj8YmKy$Y0pkRX^|S1p7(4*Q76xIR!gfK zaXzMRrQc$#@Oe!vD9tVZUqhR=MT zOBDOci`0|0J&q1x>%-^Z1xJ&xW%k##T}mhUW$9J1n(z_#m$lVAZ7#K@GdI=}hqG3e z&v>T45UAuk>mF1dRn`tOwMIqz3nL5b7j(}%`)p)-+egnH#HJp}I#rUZZ&MpYwT%C= z+KlSWtEkb}$mSG+{&exOPP{wF4+FLrlacp$lbnJCBa_oYY zc5BDf*D)t;CJyC~BSy8%lcp0pn^!U~d%|A8tYEs47r5!0?b%yizbv`rOp#D@pm0m! zfx@VQn4Fl5&W{E^c>3tV)49b50*Okii1*{dt2VB-Dq(Q+U+R{?hN8_+&!ujEd?hXA zS=-_*-g$g4yEn2`rM7YYn5W^tYGZ^p=4pQ=-(GJg-&NmTzbDY$m}Snlrm-R118zDW zBV-6y#W_;8v_zUN-sRI-8*4De+zo%0zniXEe+x~t?as0YN7S9jW)YE2Q~N<)AmlL9 z>|!o4Gp!f+bK(qToA#3ZCC3fNFy|iU0cR6uk-ej>pE^R`ELza*GV74p$Gm9PW$U;M z{)*5@RK<0|O#VKbVJ-`N>)lXM-*vs@P|>2ozJ<37Di_?(OUfIR^J&(i^r*Cx=@Ya2 zms|?0k&_}ORvMMiq{_#Y7e)T3^wYJ{r0f}K)l&1HOw8I?*xl2fn`GM**}2k+xQ3O= zBkMReNu#a5{ZBnB-Kp-H-dx|Kz+U4U$owkzHou0y$@dX*ge{oye1y0tM(EFdY84p| z_2R&}z!+UOzF_^t-r6|l3lT3y-iR0X$&XKYn%&9rK2Gv$4Gp43Y$<$vLpV)wpo&0}M@a;_Plz;DO=?VR0fFrOxa8++_o#l7Sb8WfK zr4hFyKa1=U{>%e(j8M zN4hU4{46%!GED{h*PpO>-o%RWN#V3GKp4yKgwz}8CBD(#=AKIxmtC7m+m>uAu2I~s zsA~b2xANJJj5nUV{^Vfhn*|px|vm zTZ@19mN7|v(YZQ8jT#e~9NykOQ2vhFXZ#Q_vEJQ6Z(y7-P8-Xxog`pBuvWA7SozlZ zOTtnyOp23=g?fBP_O1D`aZNAM-Nq10KGX9H(HyQRLObe6kG^MtnCPV+S*$!KpbWMhQa zK=NIc`$P|{QX}!L z>d6UXqg&a!TCwF)-s_ng)5c`<$XQ=lfpZ-pc4=PO@HQ7l$W|17@A&t_j)FXDtr8Eei*3W?$v$uF-|JKH|Dm)ft`b8UUKud%MsQe4W{ zWbLv&gsHyzD>nRIma+qzHeUv@ZR@dfJe^%Pbcf>_POa3>u-R!2H@g;fQt%$D}>~{EW>+Lwa1yRS@ zu42acntDVMg#PR)yzpKB6@OOXFXK~7XJLFke_nVXwv#s~g7!qKVRP8t(IoYORKf4F z4E;m>u+h=F0_(O@=qe>)-Q^uyx$T(kPpm;VRHEg8SVuf5tP=(ahY&Nr&i6nJxq#RC zF1RyJ=!x~#Df|qs4(!imJvlHJy3pP;$^CxC)c~^XS-|~~L7s|dYPArgfKhN5o@kPd<>=k7SH$Gx| zmGZ|Z!q`a;syB=^Zv{KqWF0EdjGH1o4g==!hg(p*-0)>_(OJTOKpNZ z+LovmihnVGpquAQ*BhntOJ68o=DlQG5KKWIm1mL^y^PgN3i46OGwkbD&X0 zR|CwSfOj)%JXhTZD(01^mh~@vySP4i)OaU8C-Vw*Cnf9m7jm|apVd`Mfv^ECr zdv=zuFI!Ufbvfs?>88~|FvO113~?4DQ%k520^%%bfHV;C%xZ2qTVcIn2K1|eDSk|9M2Sa}_pc{R1_qZ;YeizoACF*|F<)ZJ1mHU3f9O_4W$ z^)+-ab_L4vT(4H#b?^1g@P`Lp@E`IaH=s&#D8y>Y)fBjYFA zYq5U*Q=SU<4)-DVcu$h2h5J@Tvimdla<|>R(B0cxMK`$jwD^e9=(f?_!#ikBA;);r zKhN9RyUTmq_gWxFZ)pB${$$=XcIkfvz6*3TX0j#XWc9kO!gfoYEERHNtybnULpI+t zpPDPJuh|hULXgBJ;wIrwel2!xH0M6zdx96Z0dR23=^)c5^ zI4&NLzLTBGa)nbbtA1^my@o@<4EvlqS*|8_<;$?UYO0lBCE;voOYG>`&AraA!v2JM z{31@~9Q=TLEY!MU7&vTkM^ODj*Smz`H}!S+Vt zD-FgrY*}k{?EA`LeUIm{C&wr0F1@Bv6iD(OblFP3F3Bs&DqZD@@>JJ1@xN->;e(^! zjB4+^Bd4+(`gMQPz*~lmE#P`{zgwe>Jb$|PfM=&?tM?m!ccXym;xhHDt%`lU_DJ4_ z8Pr&-Ezb3|<$Ccs{8K)Lzs$aXzrJcb!drfxJ>hl=5!e+o6h|&9@lDx(=54Ho%rIwJ zw^=2AANH3V;N4iM=drt{IbUDgFOSpyv~S0bgrWAi+7P9kv`aY7cjoKz?f8NGU_PGT z$R!{y9gJOEnT+Eb3stetp@%p}Xw84k9-D6%9rU_^WPej%Q|~SJsETE->!q2+jc_a~ zD(~y;8&CITyq(pdbc1l9Qq!7oweMB?A+n2H$B_JQ29m71+!`TSsL#BlEJQJY{+$dv#@1i@m;-dR6Z>fKn z;ju38)1*mCU)2X6)<^8e_u#(f&hit*?RXC^NUE@yjWjD6+jSq_$DTBwTDh?9WBDvz z7WVTMTr$>4KW7KoPuvFnO`(G@hOfk72O4%?O#|m*5dGc}$I6qGa;2*}L2ajQRUXN_ z{Ij%Csv&QX*UQ_aA|ZtfV`t4y<`?E5YYb)#OSn;7Hmunt>l3Rv#@id_F{7qY9})8) z-)hggiW{z1%HA*isN|R8%)&thd>)@OG`nhH%fKo}e1b3W)vE8sG`6kg4(kW?z3grA z6*)zU72Y+DxfhmpFZrYNw(Dm3f{MwWbN)ZgWTCaPRqLkxEvv$9tByIr+{@~Vsj^-9 zO&rBC0*$=A-5uS9p6~r#jg3}MZWiBG7$!6l{zGh$#l`V22=P*DWi56Re5BZ<>il4= z48Lp`Msuq*R(QIyfmS_pl+g`4(*84lwFY8#vKlLTh5SdtWWmdu+#YrX`|}KIG5e0& z%TE-%!ZYkU8x2iKmOA16{BY%o93y`#O_F|-_Da|&H{mbg zUB!0RgZ0K?#}YZ~o$Hu;JKUev>;OUQ^2P2DY;Bt$EQu3pV~;pAq=a9M0ykgVsv(KV!Zz#7wdJ zaAWuuLZoPu)=Ar>XsNN7fEXm4+sew=VMHbtzl)#8owML}^lC;8b1Jyfhx?Xm!i~Th zPM*2gTxRB&U*ZjU1!ne>@HYJmjKn0a3ICgLQTjz0i+v7f@qWs}zOkX=T=7?NJ@!<^ z;GJnl{w?ki_Wr5dR4$tT5o13|7=ef|S@@AJ=O*G=OZKhx04pXdjqmm5fxSM_`>s2y z-0K>S_k}s7r%I|6rxx7K4a;%mA9d%7?}yiqZWcMfHb`u2*3mndwZ*mCe(X(Bv}FD( z|E}`>E~C7o=cz}Ax7+EL^p>zMv#{@Slv&fbqL&!W*al&$qGQ)Ws?>p-V~h_N{@3*5 z=11IW{sOlht3h7`7W*^(v-Qu+zU&XId_EC=6>o{V#jnLS;$2~-@K9KR_`oI?O9|3U zp#@e*`Wbih(Z(m{7giXu2sE%dnBN!!jTOdArVTsW|6?C=E4lsLLoSB@lW!*ULhR$k zY~!ACL6x=l)qzTpbO@fJwiqY26WQLG6U$^XG$#xBXZd>g)) z`w{QNYjcOOpSF?p4*cO3eSDzM*VDVz-K-+pb**e)>6azNMVkum=Kq;DGXM9|SmUbV z51SA+z}7{4)rvE|FtJn5wkvFOcsED19BzK#8C^cRVyyQ^|HQ!8fg8B4`9JX&`u_~% z2T}ul_1ngDHdg2kw|GfV@{f_yVHRX?C zlwIWC;cs%Au?Ey!ctLyt@8xdD7v%d=Tk%)EHJ8kOu{K&Yv8KKWdygkrv(2Bdr}Tl| z*QjDvwd%81FuE@Ax3RagFKoJo{h@D&ZRB$0EA4=mthG=|#N*f%8Y}h`zZLVa+v|eR zg)hJkx%Y zyrIjmkaNs`jCuNf|7X6vzRmu)KtkZ>Kx1RGW#_h=hyN+ZUSduU+^^S53UNXwc>K{uPGw^ zM`mC1Ja+i*)H?&~_XF$w@A;a0Z8)5nRI#>vV)>x*6E4-&v-D2M-(@4cnbvWswbn~r zAsy$gVgK-H79&m49%9edboDC#uinYG%KM%F7rloWX-U>u>=s<-Px623uN`Qlzh&$( zZ(`}%!PgQx(mQNes0FYc4t}&S88M|_=*&04dP}a+-<)IJWP3S@&)`fe(oadZRXfr z?C$Pl)wDi9CW`~uJ-yz1+x*b{+FWgpG_M(3^%jA%z60JO&p)2OJvTh#JU_Yh@*S=( z%Q8yi%RVlj?c=S+Sc|`bSy(;nFl>lb<{YV#=GIg#SE|DgHizk7>K~g9wikQ9&tNuk zKyM%T&!32Qbpc&6dFv14P}zxH=lig?Jl<-8>;tdkO->iss&>Li=v5b%X0>9~xoZ4= z{wSY_J7aNjuPfeyL}G-thh<6O|K*4BJb#MYh221fTvd#_9vFFdxWU{NyeS#XhO^a( z#xpQyIfZC;9Qf7^d(Zo#^;>usIG&5;zr*bIEl4Ou_yE?ulh8>_k~(8$9$y_kc^%sbpVbNH z3f5xJ`&EpJt=3gQ7tJbIsoP{~*4x$)tEyFMrl7B9=8M*P#0*PVKGT`Ojew&bpYP4LMpU8jv3xiF zW6bQv<9|=SBX);p^U=clh%NeKA9Xpe2zJbTX9_!o--Ta=HUcl~!b-^?K8m;T_qiPy zlMjRMeZRJ9S+~t!%=TuA(cSo4_Xj2fDhKlYNBm>`%s}{FaLg6m}IseZ?2r&zc~4E2AOKQ!Yhs9Kg0f# z^+F!(^E|u@Ho2#Kmhi8bDZU}jz<$}A+%@i1L>*;97idKTp%*^_?{=@U#@tpe9&L`m z!u)~A$qrp?&%S{TJHt*Po~_3oAY;!mYd$jRoX1(WJY>@8Vr7F9pPAp`y-GaB+MCu3 zxUB0doMpqx#}I2VPF_5)DDy#n@T?YtMTx`tmO;?}1#B@}$+qJ>MQg+{$1o1u z+!O8$b_$;2o^mR5p&>2_dvgl$KZQGvUH_Zl^*3@Guv>mM_c~XNE5zxG)1Y!UTaVKx z?Lc=5M(uKIhSk#&t$mm|wl`~<(Po};-1x$%ZQRyZ=<`v2*N^MB^wZdT@S5IGucbHF z2kN8r8T$A7S-qKY-k63lbKk@}dUK#T0RG@D?CEcZvp)~4nO1kK-%Q0x#@=ipTZXsT zNsLZXR$(6khkxOHzr@&h1OG_h&$6dDJMxfSV-HvW>ldTAk=O;XHP;U^4G zs_>;;4o)=G<-g!hBbqzMe}fgXQtY7m1v>(Ua?Lma7Go(++jPbWp_lPqIe>gbSh* z--ZgCy52lt9s;e$L9qyV{|1RsUV#*3x;PxnphPD+pCAjwY3R@j>szcM9Km_M#yHV4 zGsuIl*lhM4{Msdq^)B3p!ASNUt}E9N60&oC#JATZH{iC(Oi6&fS zt^oGx0Q58iJd(LG%)Z_Pg?lh3{~l!#w03NezEs$jr=|*u2UtU)T|J<+jo~BWtx6cz z&8@E18`dbCwTZ#Lo#|#T^Ht2i_QDz!fE&l5qrYOk;hGtTIvbGV>L~I`&BNK851}oK ztxY&%bOre?uHt>uCA?d`7tBm?6Q_@^;&%qlN%`Re==@hL@c$(?5T~BTv&pctGq3_T z6JrglTDX3|Tk!epE8HE0IZP7r(A)(dj{{B`&NbPBr?;x(t09DdZ};7Q~P;g8czG{R$gPxwQ6Le<7~@-kM~+ zZoO>10vWywZ@dBP=DRT(euuo4;55_*)T0b&ThVT@^|>`2lH854so@M(C!F!=h!at@ zu&!$0j1=Xil5ifY2A(y=DX=CPl({^!q@&f1_igRFZ;M`Lu z@TLaZF}%C-BZo^k&gQj*&bGuUvifM#2|lhbPQtZBTgoCu=Qt_%(+z0U-|+O05JA)p zo(qd*1;MOg`@nr4B7#Kp?FU~TLK7>j=-}D7%CJS0Q?3#GZht^+hEtL$pmHl<9mnZ0 zH)yb-9i1nPModu*_*cQj>v#*t1y8v-k@4#>xJo&_uo8g#X*h9q9=tw}x|Wp$Th$); zGyxrS>aY=L9|f6z4w+Aa1`NmPw~-j{Z-c5f;7BE$9Hb0Kq#?aw<@y0L%D!d*GD(!A zco`IBVuaDTS33P#gr0AK)?>JC!N2;TC3NC29MqA$tc(+dErCY^XkRp7)xz&?;A0r!%iq=u97F$Dos;F=$^0_3A)s3eF9NPP~iYP%KXRwS^Qr zLq-nlj-pYJjhtW2(ZfK*DI~F1(c^1aZKhf+;ZG?40-eW<#i>>o#>W#-6b4Scg|mNC zVBO!w3BOkO{}S5t!x~x-v`Rp)`KWmpB^|%KkhT)kgDjlQyN7!f&_>En6azd=;BXV8 z@hryUb+jtR>0HX@y1Hsd*IO-pUokuN@zP_K&TjZpVR zNTVIbTr%#7&=@yx4`mz(WgYOKmvCTSFUZ;I_{~EvC@Vn)EFPV*r<2_(?uK%&Wkc?% zxU!&o<=`7-GpvJtIzq>Zh7Q1v_#FvKDK`k^36OvjW$p=O-U*!wr>ujOAm@6ZC3GUX zLr}Vn0Ie$I?Ol~R@}%F94`p{Pg7mlDc5K%<4u z=U0YCL;({YU{dzgW3VNZFLD>=%17bDE`kTQpx^01%qeTA32iHezK1fd-2-Q?fIsJP zUBpEh7*B%k^T40-e^FjAvJW>=?tmW3DoL3qa==Z>VRj35DJL3bY@-s&DMIb&4&~6G z9Cnn^B9vR>88CT>Ru>WT9Y8sP{_fzJA9I-m$fPlJyhczWWkDN4_VF}o?MDQ<2j3Ub z7iFELJXe$@l%fgBG!P4I@dSPMS=8DG4(vdD{5QV$f}R_|#RU$A^5kjYBjxQQUS|N8 zld#;|5PxnDa_ty;q#UM{%`Ie|j|Dk$7T)g)a3!u#jup!O@)W;Qz`!La0*>B6pO+!KbCCEs@aqiPoWL)Nq;g(lnb!}7?GF1 z20wHH+}eh?^bc_BAX;7rMH#?|ECJ;%r157#|0sh9Q9`mLDLz22q!qV7^J8#=ve$(4 z+z-8`{F!#>Hrcvzw3dNEEy%V3J_!r*+ZIMZ30gh?j2pP9-+c7rL(dVwwifJ9OW3$h zxL$;2)CgKX3%HTzAYG&$DI*GHel;Oq9&jl$;`6K&6hlx3idy)NM1PcH_jHgql!NsS z@TQ!%G`c9;2xa}CY#fy7lQf00Z-la2!~w1kw3E~`pdFM0=TWf#3g}@Ru!hM21$k*RPTMn{~gSBZ057rS^eb|mr4o%8_8uBX?9aGkfTCiyy0H+6N zr~DI5K|Og7$|FjdH!1t14boMR8qDZ4Yi2AHu&rW3HJnkl+%~EMbSTv zRq{_^;1%UvBmE=}Q4SND3yJ7A8Fv*xlYwDZ%o4gnmph`g0kuiMkutInXH{^GMt3~8 zMO>g9W~BY?P_sGcZ-Dky0Gl#{P=4J|78}ZgL;oHBlN-fWWJ4&w3S~v5NRhI|R05r` zps_k&cYuy?c=u8W`B0V>KYn?!!u~>#mvP`D#T9jeSo45K*ii)85?oINR2pH?z?SSs z21YkUFr-6q!14vus}0J!B3kK;ekg~C9E^BMVQEv(EN$;rSa%QT@5sa<`g6;%Kj$>IY_es8C(j*SL8Fv29fQe zyt^uTps|fJOW3oAUfg;JX@> z9!Z<>zsb<~M}R>6P`+3{CcO_sTgGTb{lryOit;k|iX6y&>BII9E zgMObZ8)Zu+j40nKjd99vN_l%JrlY({Wbq6f?1W$1V zP-xzo9rTx!CFUM%9p!wdtkk(dYRJBZvW!ypXrhDS4$99?`Q;zu`$%xr};j z6GwgMJsoxKgD?L9v(50GyUaHdRNUW{ZJQ7}b*7Nn304xdIGdIC679`KvM-3?!~ z6>U#}6X!Ai`yF`v6O41V;Qk5lhH_MsZ+rp_C{I4+OsDo+vD)+tW~h|6{SbWiN$}?a ze*XiCu7NY@s7aaipMrkMm!A&IV<3?X^h=RV3V8k}Fs4Z78v3T_mPRJ&-vvNB1#Iu2 zSIWYg4ooQ@GGz>>Y;gAhP{dtrr~2iw}(Ldk9)N?k==q;ZcAq;MRR@1A7J$0$j(^9$a!W5?5e zru@K^zxfVYID$Tr^iCP;@1h=RpCly8`bN?;Wx6AK86hEfKqoRV)4Q=M_wjQLGeEck zgegF0ms-lfdVa)t)$nd6{$_B-USeLz4t5^zUBTLtM*aZrT*dz>n2isGl#24n`LL(S zYWJy7y8DDS$a3})?;gX?IrNewGLi#Hm(9Z{($Rtw)Rgiwf5tddF=ooxpHV1v6rc}j zsEz7=gD152NpGTz|M$^TlI^llV(E6hjo33y6#|y>_)qk$^0G0Z~>#t zLNCdFc?n~FfLcg5p{&Ut&?g#oDn5}#&klv1Xy+z+K$0$He`{7c#>p$<@XGldN0?*b(p1zY{29M@@uS@CMH%)Oj7N^aw5GqZhQl z(oh5OE8-UhN((r9G)IJY@erSgW>Dto&*0@M=7KN)=rnvpA1G%U@qp_nn~GX#%z3Cw zL2q86ELjbaUcux2Uw@^y~N)i=%jnWF*dWMxF?1dn_8L)d$_FxVD zB^mz{dP3SBou6lT?!|XRBPjVAG1TYNz!q3$c05QON0+WvNYufjt4~yL)+1X5(vrUWNjgvHp$zBA3@kE5ulj? z>6ENPMbSzS-mD9qrU4|8IJ{E=l5R!3L7IgF(i2%$C`UW3l^t!x;Qe6quRbJUlG=-+ z2EtY#Yc#b*mgzEhB48~-QCm^Wg^Cq&fld@Jq!hZ52zj>*-s90?HAr(M(Qe5?ow5>o z6oz-mpYk6v4rS?-um+?plMTNXBz}@(>p-icjCyVGJ=rtq_AFUWEhtq2-%<8vk|cxi zeI3+Z4&Ro-IJ?1$+YDurFov$sA4;Jgh7pdjB;y^*%N>TEMnX~uLa8ROP_~DxPdS9i zHeL?BBWtb%cLQh*^J*s22o1r~A z3$z-v8>^s9J@h&RGuRb}QijuV=xa5UB+QRQd`CYH)J66gI;(WL2oIww z+9w^bE&h$boQ7gXqcF4NAqwbS#4A+9Ow_=bSd^iYoKUD0@feMUy~TpkkTzvP3xtOf z2F{&}zXLiE`I|_uA#IlI$vXB&G0-2%z$>BGGHBE*d?I^@1+%n;>dl;do5dV6Cdc!b7p=gD{??xEE12b$#J@Gh+9`u1qQ7;JzL&1CG z&$6Ok;v!_}AZx3D876IwY~+NZ;Q{}-f^{PNpzENNWHTp8Js0y$-ag9NOWYt7{eD|W zC8AK@EAX$|XfF*C#8JFYRE}(qukkjE{^p_oVVHA@ns|k`qOo(_;H|sCI}Fr(7JlQc z;PfPqJ_A=v$0wq;GH6x-c0xt0LK@27!dPgnNSY^Ykt}7e@tdeJ;Yg63hi7|@sTcv-DoLw)i}}t2S0O+AgF?9^6K^~$!Vi!r&Y+e%ka&(jKDdoqRE&dYsfu;s&}*_n-@+5p_b#C3 zPk3h&1O`hdLD3^y;&p;b^f)Q%?dpBetFJ@20sP15=s2Isrv`2_b zZ!zzu(841~ENh_`q+y*tqCe#6#O5oU4YF#Jj(7@s$O-iEAmp@1g{z+i{!13i02eMm zPmZErmr?2z+I^0-eS;QA!VJM#j77}ce)LMfiQJ0lT#Dl$*>wZ5puRwfAbd}{6`hn6 zNOlMDmyGhe(I$BVUSd=?F?u&@C2mYsX7VVI_Ds4ONkn9GCX2Leki9DpBYueTxftaR zXp^V#@Z^^!*rWqWsh!u;#Q*Jh(C0`~&(8c?REL zhGg`REaPP3)zHo}oP%u83^Q)6T*G^0l{8T1E$X6^_zsfS1&lBnl!ffk`6v;CJ(hy~ zR~bAd3Xx0CjZ)yMNz5bkk!W2k*7yiMXJB5)CPO==z^DqYC*re&2!JGbOD=1vC(wHI2 zz?+GANyC2g7oKF*AU_e&$>N}$#0e^5t_gjJ;w=c>h{H!7#>%H?jw zj8;RPUrPDQ1Y*yyNStt6Wq9*eAa2Rn#jGL^8#C=0BQ-tSI1Zx`sdg4OdV|{$f;LRlL z&=8Cv8NCljd$~BxtXOuuWI$trM=4Ab|V0=X}V-N7D zHG0Tk$LdB$#8^~iC^o4D5y|06rAWKRtMwN(~K4VpD*NepFp9Wp+rpKh~MC3)xh{DFFHw?rO-k!=8)nrNcXYeq?E%-Jw^Yj zpq(Jl0+OSPqeYSc1k_m!?-Ige8H|bS>pI?|Sd?(A?|Y1pYkxxf36M4@*E`|qQ0xxLpX3GcV3n(2bcBEN6=v=Z z)-wquQ}KNmatyx3t|^Um&cLoHirG_8Bl*Q?#{_1Cs82p<;76R6;6m#WMQj+DD>~Wa zZ8xD6qM_t%Cr_0dbcnds3w$D)LYAQ?SUHm3^UAVihh!LSQg2M4QOMLvosc*?Wz%5Qg5TfcKD< z$%fIB=I_8N+R<0?CXwHR^7RuImk&?L%4)}qzQ&j+qKCdq#WMz<2sO)%b7l(&pMy(R4{T<94#buCv=n+2C zm1fxFHV7S%X8RPz5`ic83vC5%jGd&aOuR{!h*zk?fsvHY!*e|$Ua1eE_NWr0{XB%XHYH~JAkAKib_Ntz-ow zd6s-rwExKVL%WoG^XVu}=Yu@JS@@RTBWc))U3m|(h=5(|M*ly9=fT z&=i^A!rma6jU;c1rZUi~8}($PR0`@LFF4_msi3|*s7WSjE(Xd%C?*m=QdLz&avUicKhV&oVy2wn2({26MR^iMBx#8(s-zjwS+--O3Fx;Cr7NIc z8-SR@*)MJwaWOGVkBa)CXt1-IUHjM#eAq3 zEqUE}oFFs!Nj!R+3pz`lX0iZM+qAD}_Q~5@1nWpB2;{LQo<;PBtOG>n2sMLzqLFx; z(3nUwrS+nENVg_^mF#?pn0<NDm{F&^*vqlDfz~M^Pe#B13jg@-7g?3m|j^Y^;Qp zn~$;{^n-jjgsV$fI05cRItQ&Sd5~xoX>N)B6Q(7tFhx31o#cTa)Io~1B7Z08_e9-2 zC`tGpUi63jIP_KqS_(v+k*Ak9iikF7x6xCwb!4Jek|HRgmb?f=!$^K19zqdzq$LHS zawsN?Y9r4gp^=i!f_xGI^uPc31=)vakCDBBaDiwJXchuEnS|g&{(M4XBwU|BJWn7( zk@gAM_GyF^cS2r<08&sO+Jhu8vMU78f&vyLLV6|ML4BZJ5#J(fIlV{PD0zg*vO*&w zFMS{eoyJ3c?*JA`z*kP~lBI=WFljz$&(Sz2hLZYEvrV``0USYUl}18R4MkVd+cX~( ztx2_tSd)O2hv*pXb84Gvr{{sVJc?E(v{eK3ll6@vpomw|$Z2#m7Nu~FDdv^-JbfRK z@dy!@S|LrI{DNxX38FKiVh2*J1I2_>Y$W;d$?`zHEsEu!IL!dQ5S=(e7$Sc&ho=;6 zLVKTRKG6r#%3@HOzN3gX8a>4@k(Z9@q&OAQ0SL8`-lq4dMT*GaP$#;MUQt;Ab^V7_ zME0+MHbYUTftkSGd=YM^ibtL;B@Vk$@dq0th45{-d= zh?5dl9-${u9|KW&G&*_~C_xBI^gUVSDGG=9bs*A;BCaU@C(u8tn`Y;~cd0D-I08R3 zDjFBHPJJL0B$@;2SD@E~?L=dxk~Av%2_Qhx6MC28R_IOY5sigv2%u6Df)Uk1s8bXJ z7r=!I^oGVokwby@DN>8#&Ivh-F#iIxPxDD_Q9INwwMO5Nwn1@bv?l||T7gditS$PE zKGE|)j4+j@y+k{ob|(F2;H1$$q#ru7^cS7iz;8kjq`2$<#}f=-3euUNC-e^O^}ucq z{QDmkA)Q##lmaaT>I=kh|JOp`90kf#Njlwu=&Jz#BOXYS5Iv*s1D~iA(Lnm4Peh^q zD?@KkS)vK_oW3W@LR2Myphnz=XeH79z)t{GjjZ|fgzl&W5Z(U&FM2{$jd;TUKO;IF zcoLxSMEB_vl_B0iG(UhHM|B2D{)fR!vOf841Mg7X0R%aUJRprYfG$VR17)ZtqS^se zJBsxs&4>K<0i-+np13!8*y#QmX%!UBME?db^5}EmFDgU0e*qLhs)>Fm+JSyZnjlUa z!1;X#t{A`{q?vgIts{Y116#{_V=#Ku4b@fUGFI?dRI z`y?fd`}!c{nRPOUfUGnTs9TpH!Dhg|`^cycAJt)FBv!mN_Vo#9iJwu2fOCEakxN;~ zJ&}jFo^!AumSS$fPMlI`Cw>Xr>2tJ47J%1ig)I05=uZ}ULA;M_;%$NKcRNgHYuhl zfT2!%mg3S#QXx5t-k?1|dxX}Q)->=9tuaYT^pw_}_6z+cWWzwafg1(H(F1#&&JFE5 zI(>l~RCI3WjQoebOk9GV+vDo^K&&K#8uaOnR(&jD0JYJ(ya z=r5W{(y?iLbV}*$1%4AxrxGOf(yb>Eay@B#`S^yodVms;lt4Y89+E|uv|Q>7Nwy^G z2jl^wjR8JPoSOWo44x8SCj>)^H6!Y*V-CpYPj=?OEeaF94MRziv;%aL=rz$h;tv$@ z7>G)xXVmuq8a>5uQTxQjX*Q@=)JKv%XnrVylK!T<6(r{o{ia@!L_}UYl9?%@kw!*Q zloZ`caZ&Vs5Z)!JgXktv{(v8iZfu0(DaBO~mn0-+6TYEHJkmDoc%RA=X9`3#Q#}Go zMi+iV*7b0l;Do~R5%?XB?aY@34q}ytw zOOdQZbeOo#f1HD6g?I|hBFS1LH<=566JH~aMC(kvlcdE!3<5=d(rU$^kCEsTa$De2 zF`QkB%qJf!MK6<97lqHoP>$pYy4OMy9C?Ci2ZZAj>DeUlke*JfMbVuUD`P4A9#f1S zkmN%Ao7TjHHz@vtG_7E?K({~0>uEvnNZ(2~Mxc)0uuh+Gn>z$M)dGr0F(zha9dP-s zL!;86U+2Mhaug@93T(0l>|=E2@dl_U`Tb6TBHhOBAWi-mcF{-XJFYALhO5TTME0Kz z#&YCp$b=8A4DK8sLeGCfri&IvW8AL3id{DtH@+9*^gFSa)*xap9hsL7<9_B%WbvN` z8XE>$wi7h-AShfj&})hYQjK!((i2`^9L7-sUWx&*`Z{1Y(s8@{cid}pz*>A4+B11W zF2XN&*Jy|vzTacUzMv(tsK%fSMemk`k0ORS4-X+*Xe+;svDsk%D8LAhf!|A>|4M$+3s1Lh$7xexo zAQ84iKEe#FOcL%N)ZJ5yy>sW&u%0}sXwWr8tkfF`cFCY`tQ>=J*wifc{ ze@2$=ScBIzy#a9LVwvOG8*R3cj{EWV^m*D0<0A54EPBa$aVoHdRxN-E1Dq8L{dMVm`sA zKB=p`Wj^ytaf2c1OC0<*+}L#@@2W*Y7c*|94mx7FIwx0F}@@LIaIVe`U~TRGLE@n zZ((mEUe7+JJh9KU)?xZ81Fe^gt>QF(ry1CDzPbEL^Ahfu{-=6ZDG;od>8i_LPj4dM z6aD6TQSYt8-S2&;*+0}*;sSpozN=%2ZLDxluO}y}huNM?g8W>3h>VNVq*cCAf*x_w zt{M;g&g_Nx$Y~%{)?cW5Y|TSgI3z(3ySZz4tP-G)@Y_IQx^lf#L1mw zt7^+cGuPU(*$5X)t4)}Wj=${X`K#K$`JG%Yu2)c+{c9zIt!x=1ukk$5lbHSLSA1Xl zdr*r=u83M(Ss;c={~C>iakh4*aB~)C&D)XFgx72vtZghk^{;@1)m7_d8l$c8yVU#U zZuXDtQ)8$(g`Fmk1Nx;!wiu(WOPmF!ef|pK5pywHhMwVGEm!APLRR@+YoU~Mln)ur zS5+2z5+#o(+4Gs%>NsreY1;1WV{KwQkGcT26+c5J#6iRY6fRIx>!CLyz5o=Zn3D=MB1VEj4B$vjDIE9P?KB(a}wpL$j!IQ z;kJ^ZD_3hou+T`tR+Z>a!0r$eUJ+%&eI|3m&>v9@`zHDAa8ChA44xwn+O z!ZOo5o2hSJZXV5CMh>e5>IUW%zueZxHk|(?tx|qfTlvmNb4{W4NZWqi%AS_%xi|Yh zsnyximTST3!95w9=Zt5&*hzU}jIrLe&7?f2<}=tQb7iZ4gbyUy^lUMD6 zktg{&%A)ccvygpcZ4kWNbXBb)T@fp(v*lB23eXW7u(`n(g1={i)$f?a%B1`ixh}03 zvRa<8)en8+$dlK3F3CMai~9%cTgkl6UNh*V-EQ;~uZhil*S!^_0nA{F$8^=Q$}vfZ zl|MZ@9N39ANQ%B|0$?`QhQu~f+#IFRp*2WlyizBb zckE?uEO!lvFC*DuT4P1jbVxw)MoaEDz6aY4`rLD)hOvd|&28lFGvUY*G{;yDB;GJ& z9VZWx_iGG00oj)dgwjGBTal@28~{35In`-wMAp7z{0dk~@TGdPiA*14&DsIEBbw>L-e#&G`_6R8J*6QRZA4y@ zXIg!r?L5;u7-Nu6wIr~Joa{qLax08=%n0MA{vG7Msro#oGGCm1X*5R;vLi-GwXyy| z&r)j`Kbj|4uJC2JRz`W`qui^$&^~LAkU{MSWGPyVU6`fsV#cuTA&bq`pQ_8W)kZJ) z>=_`=Ok=~*-VkFfW_1no1UbvDFukGYuGj7A45f?S5b;263^P)Zv$`APu4Bl#<3twtV52@X{#Aye?b0S11A&(I zJ+d5)VPEP$qSjokrFKs*4w=t`{c>4f09oxMTOKHjZ<(QxMyoLkjc!JBWP0wa4MyhZ zlRBcNkrDA2yMx&cEV8R=7d1*B%M?(i63E5ildDmki|0;S)HaKBekNh z*DU%>XqP_bDe_uQWPf23xlizvj7Bb>Z^h&3AOTeWI>JL5ZMDYqQPv#*3KAbjrU zh9Z-FjCMwSr42?NpAXtKWEQOkPyPX8Gqaa1$L=wLkzK40dj&bc;@S1gbL_7sh%PQ> zY|;)WC4eXM3APQ%*u~6c&M{lqUy&i~CuSe?k#CVP@wwk|qTqzhy0)(?iHnRT){1 z&T!L!@Oywiid;?k>?L44FX8qwy|Hr^1K(zfVpkd~UDPq!bz~N;i5%2FA;0P(WaVtf zHb(Y02{o)mBw!q7b&(#1d|BV>o3RQ`eYd7-9gQ>0HP(Y%kAHI-<)dZkuE|{X3%ilK z$JOGJjT&kLWDB&ZV~{!ivbIFeGrA!M@^fVGT_il>*RXYTMVTZQNZ%^+)Ok9~+K~}_ z7qZs<#4iTFI|^OrFfyN&&>CoQ`V+>4(>tAO&JJYC8F9#lwp2Z#ZG>#!hpCPAazjQI z*i^14*66r?S8suwO~_ykEoH3ULvyR8fC5^ab0RBX6QL%rutS0K*@ElHzA*mKHmKK> zC-P0Xg3?0!Q!fp=XmFSKL3{<^JUWF>Tu1D_AZ@zVNe^cZuqC>l=SuAI=v6v-zV z1F`SdYCSZ+wjSA5FKf$;=g5=v9ov#WEG!h3p{@7&Vr7|pR;_~5QwADB1tUzK4Ef*3 zmE}|Tzl6%dO^#zHF`J+xw!}(fhv1w}Lf*9=Mjz%gavM%Hl8qOj2V0@tE@0bnCm2I7 z2OaPx@@HuV@WnAFi**JX<`&~V+Ycz#SD1x*8RY!y&G2kx_7u+E5F?-2&pbr-%QpHY z;|Vh1j$->E(-&~X`Ff_RruzIf!>|1coStJ$V`GQ9SKcev(y~CqQ=n0`NB-3F#_!yC z;h5>NshVKtdST_SGk#k27#Fb;i$GmY z>#0CpsI2~?H3eNw0abm-E#fEg^N=yTDJKEf`~Y%)6@%XPJ#rPU1wYseE$)z!s;yF! zum{qB$)2Ehgk?};lDXsjJmIp?L-@?q67YuzS~;GLiqW9orpRV36@r%Rt`fGU8sb4l?m2Df8q*N`I|1^N?pP#cZ=}O>7~y zmDc;_My65xV`iP!R&MXF?ETrx`kRSfe;0opskQ23PMc=iZdt#WMw;%L-&s=3kPw)n z%4fe7X13M-=HhMamlgUnrW?+K420-dz5(0U7-pPe!nn>t6U$1=Y;#jnb3O=sq$xXy zxum+qApa0EJ)*SCm}~ zFIx}x66~%IjQ-H`qrer@_&MfmOIdRz_Nw-~`V}&|erQpjfvwFEB4Qtq}%5o?FSR(9^YT+AF;dyP01rd=?g)9-CWR zQ?1o(Gc0d~bWQ-e#NV8k+rYOF456**ThkEJ3E>4_1n3ig0i~fUpN5QlAK2IIGgz31 zBg4%deVpn9wpuU0=1UQu%3b8w(ppLLANJ1iuJ^nBvA&C*Sl`#kUcN=Y#Qh0G<&KaH zM(dIsEBz>ylYa8ub~kj#dLn(@q-t6eGl2b`n=Lf6w6oT;48sly=lih_kj-ojB<5qV zU9gZ&o^qdrC+2C^aNB9?VW12g zeM$LHBqKgU$(ZozY3>d0d36C-%ktJ95_~rJvtz3zl(*_WU&DeG+3BBhGE2abF(#*3 z-oX4tF1N3yy2{vvyz$9Ekmv`yPjBOh)rM=OAX1kis zS)&{|&b*)#K@XgNIXt!u%L&tud=qxGF-_mEPi8`SyIHX=b?PCrBW^|SimR4zHg10O zjL3rU{vov;9j%Rk=aMFj;omY(v`fl)*)GlU<-3~XF8(6qSPHJY7kN8DAO3}1V5(-{ z;4I@PV{K}B!Z_sw&%nGkU)p@C_|f_Cc4qfa5jlrkC;e$k7|!i{J>B?;?Pjt`O-ic#`%uf8_76?GjQG5)+QcosMo15ghW_@vpV5xt@^7KGu%O zoBZcI%iOa2yl0yG8+T`KhJU+sKwhKXFs8Ee`GuzMk+-{;uz+jA9@qOTCH$*gt%1@U z{COiV!hidm`lUwR7WXNU)z0aVg1H)eE9Cq48c+1j@_XMC=*BVb@$NI851v?WZ~p=1 zmhp^j#6N`8lm&F^T6`jV8M4D3t%yDqJTl4nl_`r+TrwTBq*xEw4WKU74?Yk)B}56m z5#Be_7d1V0R(wKyo4ARwbz%=hXGa!|co|aCsV0%<&QlII;(#3 z^^oeZdx};{Y@V1}xe4fR>^!f%W)LXeaBHA##*-&_7yq zNVCNMNwwAIMm}3pcyAtPS!CX6{tZ|+J50-w)q5#t;!ByLtRL)mgHD9r4&N7bCbnyQ z`Gh|bDisMycobtqjgGn-6&rmo>Qq$eh}fVPLUZ+<`(jq*_usv__tO8o*{fGL$_YwO z8y{^d{-xBSvYX4?N_-LXuVbb*HSb)y_j!KGvj60I zym~}X_lrCTeWs>2 zDoAC*!>$(ntMv8qgDRSm9mQQ?%Y>S~_8-r^I`epV%G8vHPkN*_$#|JP%-ce1#{Xb0 zFwZu(1!iQv-bHO950C_@rBqGstc+J5tI_H^r3R31BE+@c`R>uK2=^NAbbm!r7q831 zAuDwT`j$z*t4>wJwRYMVO#>F+YGXFC@K5BTgd*k{mS)y9*74RvYdh=DwqG5eog7db zuY}YMog2P9ijOT5mlyXgetLY*B0)(zOUy`GS8Qhj6J5el+gRtB{kh<+_-xbTCQk-D zPk6g6tD)S=HXw3x(T%0fm91X-=i+l?Iyw`L+=Azsli#dn6 zn6iLL=JyKCOorg%XK~Zn)l4-*(>fwo>v(miJW|~6kMi&FF7h;S*K~yztj(|K8t=L4 zdnmf))6k!A3j$j8DI-MRpk9(Eiy6NC{wC5la%-ir1}_@-%w)B#wf}C*0-{rb{f&cj z4sa}W^l|nIo)tDfa#!@#7$$CTeD(OnaUt>36Ur7XRHyQGf^lOikGeo-YT3-1@m= zbBE-8EO2<6`M;7*$W7HBvM)(raDLy6fWzv|$?L~G)+HD!y zO;`C(rgzb)j?^8m>!$(kE9-h*H?KqfS+l}pv()$z`5bX4imAiZ=dFA(S?AC`+_rOcZ}s zI3RfV-F$QY3lpvXpwttqd5RT8<#)}G%72_6@6PjNddKGFBVywQWkQ+*=&!zYTd|t1>|w!}Q?~ znYRP;^^{|~Lv}0*nimoo<_O;to*DiqoQ-H3@lQmTh?Ma1;hV$5BiBUVjvZ7awD{+w zOT}x(Ee?+0r%T0i(=!^rdH+IrHt%IrM!kaXlrJVNXiDVG=$+9oqE3f{Dhc~k*;mT- zRo=V2w|VjTOY+C(=jPST>ycLlvLhrU zCwyw;!LX2Er?ZlEIonRTEe;oB{Kb8{y`SCP^3P{~_;TsX+N=Rt9kTQCzIO+SJ@je9 zY3m)x;*T7gZ7?xWb0I4SN;T=%#^5udHq_1eCv z`OQ9g(tD<_f8Q{3d3HTtC1bU)-nKcoX=sz+znn81qpYL(39#4yDci(%zWd%v?w|7` zbB|{SeR=lzMwS<2{mH%0pRLwslT9706KpXyx4D;ahdr!cQ1ZmLJ{NXuvM&syyWmgu zzx93e{p!p1vc3ww4BrC(J26+{l-o)%VA=YW|?$L>{ zd*bHA4~oARb<{bT`%^CMy^$07(e&Z!`|g?6?5f^|Ms=Y8=Hb0g*|8Xy7lX`CnJl1z zERuSOt;HE)itnK7fBDCAo8@%)GVF^#`=8v31)IISl-))ecO6upu@pC%_-|ROUQ;?xt1$+$5w05R=LjZ4}HZM(KW9|~H0np-36GY_@)vS-+L z*oOn{vYh>tJubLJSiSJPh!T5XTAud$+GD~@z=`WLR$`q2h!SEHl2ii{?HA5W;&({rKif5#I zS^o3fA9LI1=I2%_$o52tqveCDq@B^1>Yw#z`V76OLD}sOYhz&b-lY8i1i72iQ@nLxucb+dDYyLnCl3yqbluF7+g$FL&QQ)(Sdbs|#_FSK4EQB|t0?-+4`UtHz@C%0M zKkFk9!zLP&*a7@U;jDSQb+3J#vr%yEP(EyD*vGJm;Wxs&MJ$cH5j7>+8LdXvhzr)qAq{Cl2~KnVOptBm~6A#5gMPCUTn zXol<_Q;;cm9^WWzFmNz=DYW^A52X7Pq196HxM%gCMkb`02JErc2 zg`@`VP1Qlh_{zpj^{CQI=_Eb&Z}5*2c~Gja#7JqKI7a+Qsw{tyR!X1c|VA|oO!d{FRB%RcsqT3>waew}|L z|7}5{dz{h|fYMZ%Dz{Uc>z}k7{cmP28_7)9|I|7tZ~d>m)xCo~DXylT z-@RGBD!vB(7%^6C4m6i{{>9Keswri(llqT{mH7=ZD$DhrnpxYg3|1Bcd47dFPOdE{ zOExJ){7QW7clk|HANiFsLS2PD-4G}UTeMa1yOh(PYiso3h)AN_C}o*5Mvh(|ahdC| z5=rb}ZU}#jA0fn=`T~Edg{8lBsBNIVnX_cDE98FIp75IyzeYNvu0;MF85Su;ybG@t zaWi6DxHIB&ctZHFpfvMh{<3~a-r+0myYCs{spsk7YvC{AE9nz_ZGpGh)bp2ruxOJ9 zDa)}6Jz=q!38WbZ=Hs%IB+U@dO1v}xI3ra+lQVpO`eOVCeX}4PeUNS7D%14R`bhn{ zR#RWArKnA`(%L{EC+}2UYDXY#7m=4psp3dc6@QUtNI%I9ltsWAY@$`t4rzieYCD0+ zq8JOA5{SQP0~De}_%65h{`6fO#X2=z?UO&!efmP*!bwy*4| z4$1jE=xT7Ekj|kKLf3@O3a=J^F^mm=7 z;;rj#tqfE$Arn4PD*$_X2~c|K0i}gg>!>Z%_CUG2D7tqqxDqK0O1t7(U3}eH8N5AsU+{N%-eTA*D^(c`3E(t67Xm~Ylp_OFqjFKjY$u)phmG1BF|Hb#zyU1I{JJs`p zXOU;7r=RDEXNPx?FUNP#|Bd)qtcQJ_FIADJgPSE`wKpj@lmf-4Tu>e;*-8kszuIa? zwU$~$b*c{4r=(*q+*PhAj}={sRU`4VA8=h-som8PYG1V>X0D|=3~)rHw58g2`a;~y zn{SL{O2X^<3^<1AI1^dy1Fj6;nqMS*YdUB$OjpbuEbT4JEp{tstz=zn<$&4hv(2;T z+QS@U9VTZV=Njj2=hs0qf|dqt40;#zKIm=Gef+;JXi!kOps7yIamhB_TGVpR^rJA4 zf6s1U1{vvEOSP6FOHajZkVKaF4tl@#zV`I-YtEfeSLb}xb*h3rD z1vn`^)Sl`*bqMC77XDg*pJ!?>oDZ+|v;Ia;Lae$9pX?lXtyZuOE{E;Rz2O@0W%y-$ zkg!VFETjuxnI@X1m~NQPn^iHwyCzowm)p=Y@EHReUN>RU9op| zEOXd_W4_pV%z4?lz&Q>lr>`^DvBy!<(b!(o*3c>et5xMy?g4O*78u{@EwuJ(Ftqwh zVy6GI?}E3B_q50B{@&dR$oBubR=RGx?zncj9=ck&H@kKBd{}s`zE!@K{+s^(;(f8Z zlp%GH)8zkQ<&!`y?yFXAWw7=%fyZp7IuexS zS9OrO2s1QV%~D^h&(&tyRm2rk)&JH1f-id`GaS(Z_qo}8FJX@mX_{nOZhC0)nqEV0 z>13X4zGAL|eK8Pv;caV}E!Nh+HqN%tHqExxcFK0#cGkw*+uEDkf3i=v-?66xn>P;# zy>IQ8?K|yj?6dGB)7HpV+S&_VAgb=DQ;uI--SUgNIgS>WNkzk=5O==<#30FPL@_^;GY*5utvO;8Lw zFn`W!tX@hV0c@a2`ds}_eEPZ&x$BL#Pn)N;hRhhEeN^AT<9$fope|HbsPokuu#L6X zwrb(Fc*GXIeP)9Xd8^UsXftN$==YOWUpzTXg_GbZ@*~IvY)h{!z?wm-?z1~Ew;X~ zWSZ^fn~25v6JGg>Oi{z4=cp%?i}EIEp?J`L6*R->r{jt&Yvn$f|sNj0Rvx0jC zC0xI_Zn-%3YIl_9TTixUn>WJO9}$W-{cUk>wo6Ur19DZ+k6{>RRc)ho1U4nJUIe?M z1#qpKf!9`mY$R#2=Fu*J=5{~?rb$Z!j`?17JKHF2w{w0Vo!F#iht@~PHi)>qc5wqI=Bf!n3rT_at!T!}8Rz*`XIN_LgR-_KoMR|EG+ zcO}m>&pXd-=mOh)ZQ&J76=zDNWd(M$XmysFsLjw0Xl_Wtzv|QUjfhXV1az>`_({}x z{SnZk=4d^&Vc0F9pfTmak&3`}s%XW4GP*~v4O}b*wDdevn*EmzXE^}4$a#NO&&S!Haxe_dH6X=mTtGSdiN<+Dgv{-!R zmwc6c6Cs7v0rvYeceMMFYoBYKYmRHO>mS!s7wi7oeGKQRhv$+f#M{rC=^fzPZV}4+&V`?sRgr)H(wkab(qv@p8Ra+>FWKC)yO%=`JIR6!2JIJKpd7nW- zTkmP&x#`Yv7a-pBiTj#cb#tC@Pj$~g&wWp@ce3}sx4rMWZyY?hKZy0EJJJw2Tb`h# zDfQG7kW1`{%-9Z^at6`Y(Rwm|h5#pRHDZ81>n0-%Sgq}hN!SlN3S-?V*TWEIIwIPA zOfMjsX}}!zbA$NDn2$`Mj_HJ{k$H*PW$tUa18O?eT3~HxTWK@dJKCp$qr8XoWpTth zA{=>k+5Q2PVu8Jvy|n$jZ6;2~VQVMrP0J|D19MMvrs+r17vX22tKbC|t{>>1kAUbp z9T{?XBU~S+omEXZGneK6$=jq@X}RcxCq2Udr>~1I)OX1{#yihD)jP<$%6kr$5r=P( zZqk{{9w$4%;klLXcYY98xYxk0rwQ#Ogth-$^no11pA0>$V~*AY8>C2-_95C6>(PH z3WDit(`eIO((9h|oW$vv4&8eKkiYu_ zC$S|k1)Bn^vzXpoj|T^8p*O&H_4Fj5X(sE%p_2!JmN<1)tAz56^*;J;(3*p&y#nGm zJ0k9AAMUZ7!!3_;xO37Fafl+bliAFSXWO#|GY8tuZgxF>&SE~U0OR&|;EB#-XK`n^ z815m^gWqzcFe|B80XJ|s7jZj*&3d0@xoGYddl)#S53yrP;@K3eODrNWuOX9?15s`b zn13<%?Qkn0foaQnkU{EiV+zxNonZWIgs?o*8TV$k;I@qwGi1gch)Ko`jPx5=YlgtX zQxp=JMNiRkwC{D7+DfahpVc_+Gi)O(wdUFfAQdO#7RT4x7RYWV5g#)`zYC=CA+T7~ z0EOZ7GC=S<3mZnT&I9$YIo9Hg9>-X*GToWhxZ4u}oYCJ9Co-5#19nj@wl40DoX1+{ zLb^S{rm*9f97IokgUF^|+4o#C;D{!$4fz|mS&_|d<@WNmApf7^{$ao3Lb(3{r@IQ9 zkNsI1XSXPK7?Ma4wmhPOhOtq&ds%=ezAUl?A~tFTkQOho;Ss8x=Q~BF>2$PMu_Arjy1~E7c#ZEb<91;^xOH8 zjG>j_x4_=C#W=!l;($B|&9@7*-2yI+i#9g1OZf#%GvH<~1V#ED@dt~Ik?a@lf}YRR z;u6^ti2K~lJmb6IZh!5tS+!1JsJUVa&cE6UZ z4dd!@v8v3>X8+>)s@seNlSOw!7Wrs|a*Cdfn^bkVnc8ed=Q}cAG>NDDZq511%u1k) z-{n8DHvKc(3z+PE*+i|RsS`g{jnV3x$MH7#e~e~MSI=s-OrMxH>Jej%X`%5zX~(@r zlrab7=(}=bh7(%DYxjpyk{iKVup?`-ty#Z5O25NiV3up2^tR<$nhz}KkTw87@e#%bjWQ$y<iw8fXUu2k$?Ld8(-Rr@auK_i z!=$Q@5$oEO36&@DtISJPzmjg!`EigEDsr<-+q84ae!iwqTdK&cwS22oK|Gtzrpim% ze&%e+4k{wCXN-!P2WR~l`iH@^USaELAIm$K9H2h znR}bo`S;30?Jv2Vt{6Veu~wSnNwdAT3vR2_Hz>_G;H%EgvQ?Bnid`&K`9;!l{gheO zD~mTwuh_u~%hlzUG2hE4j9!*9`Z0OA-qQSxQN0(~R<>`D!pUJ8Y5V9Kt0?Bdd@ZGc zvfSK(J+JWkLtz_RTUw%DFf|iixkI_Vwj?dw@8(a~BcyH81xtC(s`h42Xy39Gg?h%1 z%5U6G(@AlKamT8wgZ&%L%PnoZE9H~HE+)8O1UEBynmo5)hfQ)+a_y7a1qZS5zDfEf zdn+c%T}yau-y^2_{g%;|3!Vi^>EJ8+5AI$Yn9nYU`5UUdar8%$QvYvp1xYzl`UU z{gmZr&q66Uq&l-Lf3&H&v%G(_|Fk1s7~$!{UNT)ZYD+=5%~DEft#=pZ@vYj*Qa1W6?<%lP{0 zD5D>nt<~iJH6}2*%5i1`AFr>_knx3!VtS}a>`YTlb+S0bUXPz5me#(u9^(G+XzV^m z7paA}t0SM^==;OiWzqCz(l!1#uPa&l2X==(*Z3P={wlb|DeBF^Rkj)%wa-Q=Zj9cQ zX>M4xd)#0A0_~0DVmq6X)D2oketfc{Pk^n)Y)s>q%3GOIrh3}{ zagx#{LKahY<#Z07sQ(~QBU z&FW;Wr7*{kVOb95a=0IuVbW%9qNSPQ5LerCxpp3n8D|@wC7d;gE7Gl9FQ`u_i!?)=oZ=-_xu}uC|1S!i~U&mgM{f>U=2?kNT+NEwLS6j=9hX6BRA2&Y-vB0s+@A`GmK|q zGflheinTv{+i2i87qeM|jlKHqaHiVX`E&a7L=9qY~aoj$Z^MlhJnsF^qQ~BLv#TrCgI5r!rB9qOho!^>8(Zw9Jo`dx|+Nxr^ zsk|Kf)2e81qdXdUM&D{*o<5MgU;jX_o9>aSY5ZVY9Uo`DWIUt}P1UlR7^{+M6R#-;ZGWXcj}CAwcRm>@2_DLxMR3oS)*r5w=~VOq z=K#l&$d|DR9*15z^p~>6UEXXFIio*sk0p*K6x$6>?rpIen5(t9db89lt1oMmmpF6N zHtn&Tj!M=Gv7uI$yK4H$&`#TB&k)Ys&B)lKyb#;XZt2^Rhn3T=#mUae)oLB3u0An2 zJ^dHB_LJk;$;+<0m5k^pGwd!=*ZDtVJ~$!XR2#0pnrt8c()FzEm~Wrb-+e^w7_ArE zp8bgWWl4^4N7jwRHeVgv{M;s?P@n+WZ+f&aZr)Z7sZ^ZLsMkZdtz)hvVJ1lm8_+Hm>W4&*;vBbMMJT+#x z{QCCDd+E2_gRMV8+iVf{wd6%#vF%`XG+fdDWo9Gy(m>7RyPmMVs-(8@LG~&C?Z}(i zuQ@Li?vGa}_mbYHq$pwJ{ANE;)F!2rx2(4cpVsfqxt_536z7oKDuK=Zi`fHR<%?Iu zC*`biTrZrPaFjox%r04P9?cG?mj^#KCORHZ?MyCnpD}lo{9-?x+crGd*CXp^&#sc@ z(b?Hm966;k(obh(XlujM6{j&@eJgd&T%|srKE(>)16G4nF>|G6==^+rnb`_^e5PZb zwJ^L`drb_nLC&OTI6)SE%O>m9&a<&#q%E3651u9NEby5?AdN>>I;B zr2Bfh=;y;l=4|^h?L%h%wY9d&>q(FOAzM!L-PjIiP5ZTQMe}+0x9JLzhQ`9o;&7Yb zh|E9Tb&6}nnwM|q7?y7)f3NU{@Z!tdf|fop9V#>xS=1FLtY{Kf2j8J>WqHUNUw%TgCs1wXpwVUzJ>89<>^of2&P3 zotZ*F%QU8$S+RVhj=ff@Mf79a4ErMqPr9Gc#nU=;CU(H}vNI7kgR333>~~^+hwf7A zI9n=n6BCSsT1o6{<&uSdEm&%1ghHpOx>ypBX*P2?5N zV$YqChKbi5^^N_>(TU#nY3hpPPUVKW&vu6WvB%t_ZGQ)sCMLK;_ASwO<3HIC8^aT= z&4KC}PN2I@RsW7%f1Rz`W@qC|)nVRF-L%%><(QVNXO&}aFjcdsFQuZ2&GEd|E>=Td zWdA(WOzFb}6bQ!nf7%r8?!Gu92|{`7BF9le9r z-ugDR+j?8qSrzH6#PzY(uSh?y`di{fWsswl**S5iwouDw#ywblJv}{n*mg|q68llT z;5v}Zjh)bT+P0@BCQ7sm`qorYd;=13dUQf6*D+R~6nWV^<7}zD9BF0UaDWC8Ii;^~ z?lmujj#^K-Jc>W+)z&y#rq;z$wx*7WiJP&gw$D~E^>6ZJ+f?IZyiaPN{Y7PY;%((# z`{U^+nQh&)-%i|$_tfUwg7`_A8-1*wQ&ZWa@&Gf9TI{H6nZ7S^uM#rG;?esbdxApA zg{iNdS8R!p8Gg#s!ud+5Vyc;^tKK&Ht69S}Gx1eKalGc-m3S@Ybi8Z~iXTp_(dX*b ztx~h0I>?-_-mMO?Tp>PR4L6oP1B4 zu9c*Eq}%A_wZ~Hrr~fo|Yf*N{*T>@iDgJdTuHDw(G{>YLSM6FQVwb4ec%qFwgx89F zKX^EXun%LbdfXa@f2XH@mtH@8Br!}GWqhX$Ne)o%F_Nq|gg9e!Oc|9L%GtYT(*u;% z`WSOwvV!uCaWu6celK&{pHoeePvXbg$C<$R^@g zer=kvH&NTXp+C>ud%v=XQ~D3}uB(GmC)0hj&T4mMG8ptWqUFrO zn^eetz7rt2U***JduFqgQ`w}yrP#?gq|WD@_K)W6^gJb>GhokfW_-W;y|%>qH~p+x z!l<2X&Q-orZ&h^aExp5tU+xp6$XN^cK zv3}FPRy0m;H&pLePO>|1FsFvSTAun1XCnKkPZNRWxV4MZW~uatoU&Y{)>HSff9R6p zL0Z3(jB_q1rX6No>y|o3J(tc&Yidm+Z1pg6=;isGbR5aK()-k^${Kb@6)SzMvuUs$ z@ik8;zRzs+K5JF_g4thdq;ALlovl5fJd*m%9Hf0t1ex!NW$>o*LwcAsNZW5UPZg(o zYdiH{tg30hIanQ}tiwY#PP?I0U{$rR>f_}2Y_*$K-<+MQuYRk41LqE4=lD>i8@r_z zA^kPZZvSnLCF0N_D-*xLlfT&aWR*o&+<|t4&sCa$a_bavINhAH0Qjr5?V=xADpM z!84x831ZVUEHnL<)k~eH^kk>P0Cm5*kbNu(>ld}Yc`V&TeL-=vPi7yh0t-`B%*xtF z%3JA2P0l=;rKUr9nDck|P%O7;Hw|UJ@~l~yZf?F1#EA5e^z>9g;&yU1XBAEp(WG(mwfN%raBG~|G4^~oGkMLbkeVHv zomylyOU;O7rFvVxr2m&nBdyw{m#02PW+kmlW<52|35m7p2(5t6e(iuZz}Rbh&*-8r z)TWgk_0 zTHk>v4bzoL%4k+Q>VwpE6`SWlB1e6Ur++3pNatA9iDz_{vy(^7R@UoS2eK%X56R>r||{}T7>F*U}n zYHSyEiMmDkME!~A1mAJ3L!lDl0(e;4aq)3z&vCk>DW`kyQT=LdeVD$9I8tf7w%%E- z0bN??J++~l31vUjCa^*{P4j3Kh@5kfdGZ|9&z?*oS`j9Yper%X~)KE#=ePW#k{d5vCrar61U?md95fmlzU zn77Q0j35wH*j?0)Q!jSb_y!q&>JH;m!(@-qAzO~^2jjG{!tfd^>BD=Ccl1fxKy8jz zj?+J0*1cXQV!#f1rpO%1s>e06vgNU46=Wgnt*@C6n@d?2$bt`dAxB5D`r4j#=UI#l zLt#`aN3C&6sZx$87MeOw{gySMCHy~#wpY<&Xv;#b?$j1*O;`uHq4w7@^~G9k*3h13 zO=KOTXoosdy`^+#g<&fzKVyg@R*pTCYl*^kkloNPTQRdDV=#~Xl+~b4YU*;LtIuZzYd7C>S;cyS znCF5BUX8eFSBQ*uiU?{6PQwS`8$n~JrOal3JrOQhL6!KGDW#hBqxzuss$PutxLg01 z5!{Xw_!o^)oH)>p1;!!Wq4zbuGrAbd^~a6ThFkxJv+j+JuKHW7KQ`8;t2NaM>Sa7i zs~Fc8%}VC@bP+p*TBnw>?dGAxH*queRctGJuSUgdv-dxfRpX=4FJceHro`sO?uh*z zZ5V4C55zYo9!(BT7AC$*mSP7DO5bO`fvh~uY5iJgxHjtZnyLr2A^JIeg&u+rztL~& zmhK^%#5wI_Z4><1glG#xu|X^%25cc}hs5PigHQA$WAqaH?H8G<6<}{h1A6!$vnM+o z$6MD~bKC_U%zCRKyO%o>RW5BUVJ&PedHj!<4M!E9GFBbWj>ng1Wli--*~3G`mLE8S zxdOe|hPAGhoW|^-zQc;>arU}bQf1ZT0c8>KS*jCVFi9kOK}fi0Jwt>#L0)};b;uXE ze$DEQ6#Rj){XRR%B;w>MYHKlvX-t0)Czme7e;JCze1}!my~;mCWtqS_`1|1Py~65l zfY>H2kSBAAO)`+((66utD^V!#VyEgI#6~MebUY_08Hb2>rz-P^==m5=Pq2a$gQxa_ zEHI26y@Js$sC_pNItmx|ltUt@I_Fpsl8Rw7FVM z{W(_3N9!-?Y2q$q>ASQ^%zwVn<`ey32T@KMvoEkeYn)YxrILXziW6n!Y-(xhnbh3m zPl?V%yxPf`!}LEp`g^oWY)Gs@tahwVtZ!_3Y+r0h{OS1L@t@#{=aLU6yRhfz zh4jYs93sVS12N%yrLy`I`v7KZ*?NJN)Sg6=yYzZ+?`gdj{5nVvbK1U{)*p^|leO`; z)x%{t2E&oLudqjdC8OPh6TW0O*D<2t9On8*^C(hbhuMU2*OSOCTZxl;iW3?k&N*+v zN;*P>l&0#-^!a&ZsG5i5d_WzI{j&ktFq*OREBj<0fIps4TeIrERWZ>6UlXZf5<0-f z+IY57M|q71f!8^!cAphBhgeS|-)nJ4VyeVgr|f8H=!5BSYkTWqV#uB%j>}#~Z$I8_ ztxN@d=Ph#Ef+i|ZLRjNjY8};Jy`Q*#a9}mnsWwxqs3(;*#L@8*HSQFCy6y1JNZ#r} z+{Sl^%GeWal+9U%5=O;Y(0%e*eO`b(c$!#*lfgFmgp%*GI$0-JgP)58X~SxLF1tVu znU{%3w33zm*Q~g?6{>Y2_Gne`9GW1(=7YZBgTGFJZBqkXB$00iqZ40OK7u=^z?%z| zRq$^NY1#prwN^W`k7F)+$f-T8HPUn}g_-O$7^m&j41F_EVUBXz_ebpoZKAe;|I2aS zF<1LR?Lu^)o@zrz*lfmzV7ZnMC*lJ8W$qxZ#}Il|p*A+``Td-UJIP+7kJ(Z5Ci?(F z>4xkbNT+A9H*Hh;TUN@eacbhX)PDAXK1{T!Ap2e?CD$es$raf96O!*H+a)`2&q{vH z4(UehEM~@;8kl~ZU83{T_@$X|oi-anvu##yW_Y46GSolSYU~5(%KnLtd{59yw2Jy! zY@zS9cZlwCKXbkR@#GvQxPO9^?uHIM;hE*iWJdN7EQM^alVFeUpc}-y#40{KZ z9~i+M=)WsO&HMmOG8{g5LwQeWq_(A(nc>5Ez11s9HazerGsC;p`_z5hUqrtPio!&8 zIedb?8I0WP$X^b-;KsA3a~1m;Uo<~wZ)X>FQglEsZovv|Y^`I5<011AYX-ZJZlF6} zBC=>hxal0dxdF~QtZZZl!&!EWOjccL4fR2KvNh5-MwFih^w2u!a9v%C+<20jbX99J zR>v_e{$QU)1{|uWC(z3?SQ{^bPlKG~Xh>Z(#!OGN%@WODk{Q~x#rQnEdwDb-l zQoLoB!#3HLwwW$=i~h`hp10HW*u&Y3U7XFiss~@(OjYE}@S60}^e5@P>}PCXPC`zc z#3p-+9=Sm|*FZHnfF#a9?!V4?fX3>l?8B+fx{{qpAiDOudX?P|YuF!>&s8t@wSeeR zwNx8XyS8E}-C(RpJb6LR&SwtU0Gsb1RK6eU>34Rg^rr6XiD`WhE=UpgISu|*OXdo_ z(I<_NDPOUhrz;}8mkpH%^u5QRICJ>4GcZ3+4tz1-AI=(6e|E9tr6T9B+Baj?CP4& zENLH+Wk*t@CS_PRf`NOGT@d-K9Sl(RSl>aB6VPKFF>jrm4LFWn){J+1DWkA-OW||Q zlfpyG;QqU@%rdcL`mk@O15w+aRfFnB%tU@6e&!Hu3;S8-V#WTV4pW~;TK@t?HZW=* zAO`O++V?H9`0146GdIx79f`>m#r_y(UgtDO4v~BopnYbrFZwU+l9}oAoO!>i=Wm!|eb zns!$E6GKi_qiBKajLj3|mcW8p#pqv(-Tx&#^8nt*0gM>dWa!V$XnG%($Y%Cw=b;TZ z!DoY!;}2nPtw-YbB-U*!qK+jvS8Wn2ZvZEt)*wl5qosW839o4tVl@TKe@&0o!}^B# zN76Jo?>2{>Rm;hBIG@(EwgI?4VdAeo3eNBatkrLjZOmF}O-SjbenZPHD49r!PicD# z+BBX0eb2IMsw&TGVry4Imq~knrMCvsTWRGW+&Z3JTbqc-_7yvmx=}_WBEo&eII70% zqaAaouGmutuyC$pclqJKcZr|(F=J=~ex%Jrlv~LY&MuYNW_I}PBC&rjGE@5jdR=4x z)eh!u9m%;aqjVjk{S5v#L0GFsYyPHv66bygeVoNOImb@LpU?o4ttCjKrOXSzrL5!3 z=>$*w9{Ro;qpKzQRQ9ZpHthhlS+7Jq4Fu?xDgVu8S~PQ;JGTqgQ`W3S?r*zj6NSh zpN=CUR|y)th`p8Nv33uk*YCH+GxyknpWsbelxvkE-Tn0BGt4VTviq!<{dqq!*Q^33 zjNsJf9(p?;>!^~|l2~C|ncdywPPTO$%c%<%%U#$E)p>G@y<`#S9VL47G%Svx zdansm?k?q5>kA}I5hrcl!-KIA>9Yl%8%v-4P0e>BE50B)+(y!z;@K)FvIzOqAC0%1 zDA^n7nfuv+I2O6G7ma!n>uNN*VlwrvOeq)WL-u*1hx@}-ZQ-uL=-6Xo|AT^CY5nMb1Ma!SnVAA+ z?r*@w{W*(RiTL0-yfX-?9pY)2*^VFq3aa8ae7fNopGVn!xd2?dZ0x%l*!LsR3W7gaoz_hyqG15Z zKN{YA2d>|QcjgEw1haiCRBnuYAvo%l;oSSFWeK|fPV~ljK3--rZP3p3(AnoWN%m?+ z`R_%u3wB&rIB7gPpxKjQb;mXxh#Z~A9Qc2XujS~)`xtNbvS{iC9+sy`xfh!gp9q-Y z0c@OHIG{XI?oM>oet!3)5pk;l6eER>p*&_5UKwm^NI7s%C7?r7Sk8E zsNsI1RX&3p*3@BT7?}xl*Ne=)i?K%R$OR{otPhg>Npfk9L{*t>>-6G8-ml3lUyv2D zp?d-yUQDlF10C~!@I`gbPrk#GTvHQpxz)^fQ26*%S+7OG&z^nqHfh_yP2wXp4F^R4~lD1PB-NUAQh zatkte7yU62E~tyXd6SX66>DKJewsMm=)Y*oEL!>^9MKeecsv@ZE8H@dJl^B2xA+tP zz+yOlKfbYP{BCVM%WNq_`5pQcLHVZ`3lG8>f}Hvkb^D6eJ&Ek?hGu;NNmYmO{U#jW z8adMkp6-M#P@g^;L96a2YP{TO$_N!?N)L273msQe)*p-sg&Ex3FkkUWp{ z8ApA;hW_)BKHJc+zrydcu%G7>)y~Gw*X`738}ty1NKhCBd-+GGv6y^<*px2idF1U^ z_ym^GsuaCRd{Ew=j2si}9`OflTgRE)%8al9cz(pkSc$qnN8c=G%-u^w{%qve zNTky;v}Y}>x_QW_f&9(K+EUPUo9Wv&L<8*r@0Q2j{+!Wn!2LIAT|WA*HG1|RdgU*q z(%hd47T#o>Jwb#nrWJ$u^q?K@Ae&Azl8J7Q4116} zb*R-q#%v{JBW0|BI&Glc)12-ownpLQ5D+%1A|UDCmnOyw@5I?N5Ds@cRp>pR$^whlWu5A@pT6M(}dvOk+M1v1p&8)dOf( zCVlq`_T^pV+LLj64>bdwfzjTJJbG}qCAqv$WRWgVZ6JBSiJo|pziLpoAG-H3{(qRZ zUxJhSLYbG4-h!&L9j(w8Ddwan1U2wXnGO*w%G$IejFi2NCeMRQJHtm=c=^0|4v#^t zK~VG)azBn8*_1lm&!70~#=)t#;M*qD^eKK#;%;4Nl!C8nz>R;?L*L+$eDy>oEuCEDQQ|6`2m%W&%fv|eYP=F^tS%vutxWelUW6(}VK&aKU_ zuJCOJr9TT#)FihcRCu0x-b>Hc;H`^jv$oXsb;gtqzwLwP?}c}&&`UX-zx$i=1Xc7Y zs354mf&{MdqyrYlU~;WNO*5cg2Ubi*;sfZ-9U0+*-SnP#;FvRK@&7JnExoZaD>Fiy zko$K?ou;IJ2;b#CB-TmVcaa_tY%;+BI)nb%RW>hh!b8oWyI{`ijQC1$L0?Ldz7&k; zQmnzQ)If03O=`Otxz!R*s>+>PSeYr>CtN|C@Ul_R9ok=j>pLNfGU%z1NULqMum!!H zv>t~}f_+&Nx*g)~Kw9L6!h!%LBS(dE1ZPk%#0>gBgtR$J3tLiy>PV+!%-RLxT`-NS zGtvW4?;>wzQ=4l`0^wk^_A5Vk}H2rh1fUNK2sNEvqYPmob@f>EDK?_@*s zAJJIH_}_$vzhm7Wh*Dg$}CmE@=kL91Z@$^ z>O2$@%x6LE+>V|<1tkm0&Jzhv@hzSmMmy|;|5EhoF06%9^uZ>y<7UzwLz}OroPPll4$FF z=-@w~vd~!Y)eckES@Qdv-1d-L49Z^R_h$6aTHf5xz1uw50S*4e8d=Ocf=qv?jC0nK zMsU>5K|xsoK193Ek>|gZbsLU4PEC%(SIf}S>uE(E93?ecfPHk49@!6VwxTDt(vl-( zGnsu*a65In2rWLvmJtN;OO(Ee_cqdFE6F2X_WKNdv5;DyrAL3_={0g&PP!w^@RpK7 z`fUq6dWe?)LvQG4sEyQ2!zw>Q-K6aYY28IiKTI#(q|KYDeJS)8^wLYzV>dMspJ5oD zI0SzPhSCY{?&bX=Qv6QIf5AhWDEka$uA{wYpzdngd6nFL;rjyL%SpxV2vP=U>Gx3a zFzx!2)@?&S!)TDK^`vfh_ zhaV%m2%V=^Peiy9pZT!B$8{42xh#JIb?O)`ylfDsz-ecr(ql~L|LDh5A zEJgjqgJdAdc0nx{brhVvAnDGK{yg%mF7h*vD?!i=^ZP#xZV#>gmye(#3OaZt`c-(~ z3iS131y@J%>?O~W9#%*kDL>{-v{}yTDq`wR&2?yoD3nwVgz|J{DyDw6|Y&3Kp@1Nwk8|&;AZ~vF_5-k;; zJxaX=U0bDpPEyBxW!8O)Cws~73cqfWr_kU6wUoJLfEo%0qaY01(dv1WaOo6zJ8{|j2=EvO@Qo?ww(E^A9ZDMfpT zOcBJyI8;MUx7; zpit)~qxl3W1-CGtU&05{<5Hjhur_5B--g2bd7k3^ys|n*BOF zPA&f_;|I}LSGl@UM)`B_#2IRsfiu4D`S#U3<|Ki*ij=KdF&XQVmlJt+@ zR|+CykaU9lEgs+_UEwIB#R*q{}#7tThky zz6cHLKx-KhS(GJ6j6vF>U~A<-eUU_hZ7GmnDOiqGuwezKUQh~6 z+9hbhcDO`PbljOefD8aaZ21iY?xj-*!^8V;(K@{Br!?hIwBDN~;9bnlbNfKwd)a z7Cfm4rD||hhqoK>DaZXfq!FyhYIs^2@T(T7WHu;1qHJu~yGg5(cT-wlgOq~$SQA~) z5NrN!<}>Y>huz8SLrUw!4EAnP)+$SLN7-Cn_U+usleXk86zqU)-IlpeGk&)u#RJUX z?j;{t3%r|jO{qx}X7~>>1F6To`?=~!>Nb4$qCOR=Lmhr~#VQwjyEShK!etBcXu!J- zprOp#q#Y6+??L{gWi6mw4RXGh8Z;$ECE8G({~M7{Yo65Qy8|WGB=>rh(~)*nE~9t{ zYFUqxnlVppO|IfixPx3J-wKo{wU+jSk3@>QsCV&8gtl;uoA=t0oAgLy zuI{E5x%^3u8&l&tlp*g3YH3R-){a~%a<>8b*5X>~B=g-`l-`_nRpPCtJQpqyl<+%f zPeaO+dEZ@>FPvVNGFwugs^r>`UlsY5J{F#o-e?R@$yjei3en?DDIS}ReD2BZ|+=<<|UjjUGDtKg}N?6*-;Io?l`yP%(oOv$DkX?>VEXC2LGVRw%;^sy#RXx$6q#$%?%Vw3P_HwzJp<__+P#>!yYqC>EsHN2OdH zp*@0~dlviP7G@bvBrp)I9=mpuoa*1-p7AWDV*xsV$#PYqwrxcBwPYKs}B6A(_ zv7M#;*ZG$9*t1+otOl{iq`f|_WPT!O%*UurA$(a#U4^z5WuGsjzF;bgy;n@VJ@A20 zD?$${=<^(1;$tUK`$NSlR61#A94v})1f0aAGx5#kw7b1hb@{3X$* zGDisT&AAuyi=yvDql&fep+;i;%Ra$!@OJ`g6fu%y#FRjx2tAlhn`PD^drRWHB^c1M z@{pkZQkEb(m(V_q5$onXX|ciBb;G4WsN*GfLFksZ%(8b3#<{{%8M996BJC4yt;|S{ z(^6Tll=ox}EX6nwZEWL-@VKByXTVEI?u-5q%y!Y_Vgra25swyeN1%~OeqzJKDbtDE zsYh;Nw}=K6pR3qkGGB9(BE_hwNNPdYHW^>_kQL(F5o^GL+W*N0!HoV7ky#{(gEB?8 zh@Fu`O{$Z&GBp*8!NbT9*;$Xe2r{?m55aX76lht;7wgE)J9Uvyl}Inx*j3BgBe>mS zXH|qMVmC;N9PVZEeFqXs>L8x(=A;)i^O{I_C-m2OTkI(5IiYV3DWkMcbdMXl2)?*@ z-NdpIyU5^AA+5CALz|_Al_^K&8yVEPJZVMVWKvco?u&e`OJ2fdVy|Rzw*qN3{;yV+ zI*XhHFe_?Gx2KNsl@+v_^U_>Qf^gRCpsq% z&ow4x#j^K_%)zxztE!@5Yg0Q5jUa1l!rA}XPlC;zS*9&3LmiE0qTTIqaC!99os=Xz zQjvbEM@iEAV*52DH__(RNn0EGh=o{(9uq6AI`=)KZb)ri+!xI)61!$uTZIqA>TAkd z;$yx89UwDzJ8ufLM1xBE#Kz5qwhFn59Va{^l&McXUN}kkrygysj0}&kO4E&0c1A@7 z?2r3sn~Za@E1Hv1Bu6dmkE)FJ1m4lRsH^m>XhgBOT+}6-GOEzKY1%E;gc~k)Q>S{A zo8WFP&+Ab4LO5S`yU3iuMvcWb)zI)d^=d?Z$+EFi8!DKLWrMfmuE}`LB(>;b7i|$) zmBY6nz?Y*QG9HAwZt75#5o@Ccl0$%5f!K&D?GbyS5qINA4hJo3L2YH6${X4Aaw)ZJ zNPC@ViV*MBre=1eV+h$$g*(ufS}vk_?1Go3Jt_M5m_u&c_msU zvRGP^g%&u6gwCN=3X&$ko3bCyD$@tTJ8tB>?9!8Q>4Yb*p|dRdIF~k_Lhc&mr{bd) zUsDF<$U5O|?urjX_JHJ<$zz!nio8!#H<_1SgKic*CiC24>K@=v`~}yzveUAw%xuGy zC|>2u+!tF&$`+58%m`(tLYN#@;*f?bEtnYnluU}E&h-5Zj|&ge#Ijxxrvn_c?t!^suaIU5x;!oB(r+) zTF72$@m2{Jh^Hi$kkUY_hmO~I9wpCnT>B_nWkxGH zTQt7-6~$|Ro8Q-YPiQCe{!;3a&nJ&Og`4uBkWlLq>28qMe;yBA`H%dQgfc*#nGtTp8EzxWx% z>mjp#nfr@}PP{LEo{7~F;97h_Vm%303XfecYgH*Zi9f0o%1JLv{f|Kl@n*?Ny4Vd@ z%W8O=9K~B8zHZ@4@skMs^UB&I*30d(o|5m||5qomF~tiio6SUA;&N;!P`{2W3~R*df9X zB7H<_oFaw6SiQyjVwK6t#TC+sE#fDiTeMVsP-iGfbg7@G`IIgrLp-I|_}_`-5MQdl z%pMbN2$MoasjPU#_>*g~<>J)!Hg$sg;6&i{kN?KA( z&BYooCAHXcB4G9I zHEAG2#A7C7QY5t4OFnYTq}?)(LS=QZQ=-U6u}URZ@ob83Gs15Z3Jb+Wnp(UmvO;Vd zsjIPjE#>8|6H3TF0NH!h z8l5W=SS-AHP*HT3_@iX?*iRe9pHPLg66vlL)D#O>JYnJ^@RENO^t4zkVih-}Y@tKl zGFw#U2CcAA#7@X0pT?A|l+~y%Z;6#&o_Fg~rdsxncraw1U5?zvJ`lQAF0=1M_lifW z0q==-uM)Y54KCil`e<|UCWwXGnqOi)i#MYKrHssA7cs*ox(G*XYcuFj+%Qj`!mGp1hGC!1*SsR~DC*IPy zx{p?aJWUR=zfr78JMHWRO=W$*5%+{z!m(o0=TL`=+^fqkv2n{&UM6+*l0xjhTHJN= zserX}7r)bRR2{Bzu_20CN$y6DA;xePExw0$WCm89E9t)woPGx_l~FD`6dxpKnG-y~ zy%-~^AvLYRRX+Zb$9ZZof}5}_q6>Ew-fBWy>M(l>Lt8c?rYcssJ7R0h6|i_~3q=89|=y6M!nkoL;#OLVsv>Uw!9 z=PzWwdzE#F2v&SK?AfFAj*Kpa>wNMSZ&r-n78xm68M4CaB1f5FOY6jsA|oyZWyGo$ z>D+?%#lnzzrRaH~M=m@gJ3eIhW&m9k<7sW$cpUnQWiFl-h5CuV&_&wY$W{zJ#%2Gzr!G~$JXrv;_%PZ3x z8aD1f$l!+L{TJ)<*BHYUsP%Senv0*bJUd!{fGYP;x1;R4JOF33q81xihYsUUYXZmq zMhWGhw5=?!^VF^ZROcK$+FNF1Ib8ov>9y$3b6g#xWbxr&qm+ZxR`%P-y69DETZNw4 zOqw`cY4Y?R+NeR-2)!US-7VftU}^k=Js_G^R(@soL7ILGu+}Rlg=DsUfz}^@Tf|;H zgIDW3sV!Qb$6eWlodf-Lv#y?pU%|ot8riQ=0SPD;vDo}FV~Ug8QN}_RTq3&}3ZP9@ zylgwks~Wv>k$nFx>yHp+$X<;Yqsm8p_9E9^NRQ)Xt+n8V8_;WOSsen@b{{PeUb;aF z@xm2RUs;(GPum5`5zmxZ729^skH3S_T__yH5-5FiIxLlX+!;J&P6iPu!@ zGx5xsP@@zIxab3gJ&1W+Rbi~3r8iV~I!2yXNF$sa<~^}7RO&7JXl|01L<7CZUGX!@ z9wM=$#VS^y^>xY-#A|EJ~T}`ni9e|7Fabr?+Gz#K`{)A1TEoFWKKD zvQcbCnFGjNM(A^i6k-A0EGs=u>KM6*#UF!~X-d0Htwn!@DKU@d6_7tS;NB$T&!omO za}iI9tcJJ|`f_lnKMr7G3 zuEY=K=Q~0fVkyg-ue9+h-(pFM#V_lVrO>djtVPnpA-GCrxiXIzzoYb15jn^{QL(kf zgC~9Z-(CY*`4dl}%+>OFN301+Eq?Sg_4LttS>czpNSQB+)D&J9TTZ<4J~+_{2g`gz z)}zIjr;?(C5>k{SHmS5z`ipe0h$Ir*QD*bv5f%%_phXq= z6TgF`{%;+`#(m*^(T8HSd!d-n!$z4hx@4XtAMqxKxa%N)*_)=4E`lDfSf;PVBO<$< z#d?*M3@J%w8se`LIi1V5L$7s?){@qUceok$U5~O=w0qeJ`U1Ojd$LD)I6HQqVF&An>^&XD{@wT4 z8+?yu7wvfVTux_CaCiQmVmE3Jc7gUKr-#|y+m{lWlHKFosnVL5B^^1b*^%>7 zeomC8&03t0vT@?rG;4E`;to>W%SndkIk)izd)0nNBgooU4{X8b*@gdyVk0tp15Tq) zQ~xF2`Zdl9_tW0vl<=RNr$3`zBYs2!Jxgz|SJt1@AJIGMkLttqetH|dGr!WBpR>eS z`ZjF{F~tTDqv3+OigQ#A)ivxL9>ka#Xw~CnP_{V%Y>5qE*3{-Cvyu8Pxg!2rbVj^S z;$}jNXGPzQ-W97GKM;Eg9Lnmk1F;X{C*o>+Q2f`#r^z2uE0cN2*Hf$0mDvGzofrjs ztSicR?Qd-ikwLure!Y^BL6rOo#xuqouvB;OtD<2TZx}Bdsxe)EM}MAZArBBKq>g?} zTS^4^zQj)d3B-bbI1}Ag`&sj8+lY{uB9cHO@aZ4Y`+{ltlYU8$={xlAL3wCwv@@C- z38J)AGO`RyzpgJMp6Dd~eZ9K=gceX!>M_m}k7d+8YHbIJZ9nnA7be>iv(W_WuP7Rc zEhU1$hmnKfsp0JK2jLCjk>N=pJ@i-T{qVYQ`|#TEu*l%3J>~+_umrl>Yuj_|1vU@=x3>?n->}WFbpzFBimjuq zsqMCL#CXYg));9_HeQDwZsV$6#jqKEy+}9pYDP69t!F^77NmNCPd8(T@iw0!yg}?R z+F1&U*jat5euu8<6Sd~rMox3v)G()_R&ZYV!}N&MJs?SDCNIZUMwi51jvb3$0>k(q zs85-p?ZLN$;lNjcw*sw$F9yF4j0EMUn6~x^KNzVJ)j;^^1n$5`VEwL0w?uLc;1p&` z&4%V}jiZLgHpf=O{)gRg{9*spzQNwr@ttFsBW5qM|7M@c{mzc-V3KdQ#cYq*8`#sf zO}3UhX`%Q4U~ z)sf|R1%#B*juwu8>~$Qi9IE4({fd3HeVKieeY5=od&-t)Yiif+8*HO&Eo?#KLu07X z);O+r(dTNNSTG!?PDa*Dv3@76(X*i6%u94nbV)Q$ei!c=DG1FDKN)>Kye?QLP~fi~ znCO4jzst9+G+lbK^e5lTK3{2jU(nYJ#HOc$UkBTUMuu~v-^JdGpNnrG7FaLSfj#lN zvV^!ibM<1QAN81If60+@EOGwn?Bsme^|ouDtAlHl>uz^-cc!b)7Dv4z~IndsEu^wY{7Drfs3Ux_yMLhRuMh$1@T; z7*q7~T5oWzs%gX3iA3$6OAMWx>1$vdc~T7$RTHa-+cG59G<-F5JzO=~EA&~QjsMQT z4!_r5$A6<#^(`-H=X3coeG5xNr6c^y{GSD82ZjfSgx(G}j<#V09*sYrAnG3Yg2mQN z<+}Qqey>r(R%jb!pXRvWnCkSnUUH2EDa+$t>;A;u&Ha?S0tiS^*OTs#K!94n(~7P+ z;JQ?I?RLHZuGUcJJzB2QpolC{rz_i-!+&Y52h(y}`mR*B)OawYo{s+#s~uk$+Zg#YR5!FfJUaYT@Us6` z|3m&Sd~^Lj`?~s0fH=9-m+PDFtL$6l`_sQI&>KXU_Mutf9T7)tQv8ubIU-8T2V;9Q zQ4@Yq&uY3+0Sv4!?d7Rm6XycgcOYKfa@Ka=>pA2e;%)(^(WmbIAcdZG4|gwg-38u} z>i)v@plg!rkaIRjS^J$QoCh2+$8|@*@vFn_h}%Q<%l3)(I`;Fn6}HE1rN%zvJtLyO z3Ih&hhu^B8RtV_SmnF=yGvY;xOclVKt_HQ{H`&c8t%)kY`4wb z!BarssT|jvAffejeFrB$;&eM7b^2)AXom^z(Ixu=dlS%U)`6jB*nTw@8P$zlAk5v; zzR{9M>rv_`=ATPA(fFPD0hobfQ=5`ClJ>;Vc<1<<_}1vT@RCsH$h=66P>bNNft7(a zfl2lETzG=Sx{#X1fe6RT)^`8wK3RDet4owc-6TUODDq1byt1(v7dVx3-|YVZo3A8%9ZP>POrV;{t=v= zIOuMR;Lw_`exQ2!kU#G@lb~DearAIJ?Qnux+X(sE#6HHh4E-_HC?@9TZfzO*UE-W@ zrkK6pGr=BhU=9VvG%qnS`D>z6>?82rR>l4ae;k|_sTuh_WCnf+yc_t~|DL~6;0u2t z7^uzt?fhxqoxV5x4+rMZZ@&e{gl>j9M6O0R#Qu&ykrOQD~`-iQ+F5Lgj7=AYt!G%(8ly>CG2Oy8^i ze*VXNpZezeQ~n;o$AjI#WNH{b67fab#@m2UG$Wat-fK=Grqcu>115;;zQSgp&q~<9 zaMF3rSrJKj+%?v{z`fkP-Se(%jC(Qode_`bT=O!b?ib<5uAY#mmV2#ps_V3?y?Zaz z=;<2f9O!(-aoKs$G2H$u6U(NKZ*7;12{sooM?cnA>O=MA;GB$9A5{nASt@TGB*s_~ z2zd*WA1BWz9*!T2Rf)e8I}zy}-Wke{91EQc_6UB54hZ@W`d{>)D&14M+xMRDE8l&- zn#j)I{PP2!mtjmj9ljA+7d;t!6co@y$(^bGL{$BTm~KrqP48oLwbi%pw43%joZlcT z7lCqh(me?oa+jy8dn8C$6+A;di`^;rQ=WmI7M@<<$35>p>YnF*#9a-ZT;%!!+4-5X zne!*d8Ar%5$?+yV_JI8r^mkv|&&C#g8d3fZfJgR=dJx;XAra{g5Ho2e7>p;Azk#B< zH@+pdAhtZVJ-RmBF7#ozYWS5<5KOss@ZT4H#lPIQtMs+faVGaj@KPi?S1X{ z*k{|KMt`LLG5v~mnwUH{)h&2rpHyD3-X#`X1M`j4lw`GJf3RUcifxVl6MHf?Fp?7* z8r&3qD)e*E6Ugyz@a^{X^xyDJFYQ)(xpY@)WnV>K(l^TY9{71*1#btdqqo;Z@}jNc zJrkisB-t+A$!aIj_dxkRr8lzqY(ucI);a!kE_OZSuIzrtUC%Szv%=HIGtYC<^QEWM zv&=I)qb7)U)jf}UDr9s+UN-f-@4f^IUUj$IZFdcIj&$y#Rqr|sM+Zks`yAU=@XMAP zF@1slguX(nO6XUR z=0;*ynnYQwfQ|5x?JmbsN2b_Tt|snh-BZEjd&pDZ$;mkGsgm)sXN>2bjC~pRWwx1(Iz=CF)03FY)|A&%omA-{uekKTozu2%{axgaX%(;2E9ye694)$L zoUk8tbaPI0ws(C^Z9j3h^<4Ap_PpZx+0#99qBrWYXPokE&ZzA@?dhAb(tXPPhbPo?ba*Ky|>$E(QtosQLvs0Zxhu#&6U9x_(wNo|$(EVH+zYNj$0w5JQ; zSoKRUN;OV?3tm{C#KtJJj_!#58oo2&3Wh`Dg9W~y{6kA;`Sz4NTl$IbvEo@J!%DiA z{#-hvWNv9Kp8XCc->1QELt`SXqGw`*!LFQ@dN*C0$a$Zmx3(DFZC~4#+CN8M%|Q?C za+i4Oc>eM1@~i`4^!1GO8TO1%GMactWjHdfc+`xGo;N%z>7Q%vsnwJM zjBf?5YYpyxVT%LL-`Bt)SvUwse z_6ay}En`(9{el~VZ-JXv?ElR-!}kO|vbm&JX~U8$#jA_c#TQF@mAFdBlsbGf{XGJe zgFgk+p+6(TV!h&<5`pB6)UW32${uy5R-~UX9EXV4W4!xeyqm3LFXRrHe7R^*{*u7&5oK5 zuj3L;}Y+HUnb)^lzUX=Ahbh`BlCO5T~6oj4Rf99s{}=x43_IE^~&#mA%{f8+x~=eTMB} zFjuo|wT*3>sW#GVAc6EHx6nr}rN@dZm5eH$UHn1u=7MHL9gF`d-dP+d>R57r=~dt7elsvCxH0rsLqiaMMQdV!2Y!TVRt&#ImftO1(CCI#!b(M8IjCl@9E6FApE+sPGl~~YLj`)`z7rP zdvALm@mBLXygfj@-RxP8ES&9b>n?E3cirpS?EKYn(b3IOVt3eAG0%M82 zqEylO!WxB(3Of{aESg%>uXuBDcIj~6VE>jt`QUG%Tao6mM-zLJSz!C#1j*-dy{+wi zd!8fhSmnIzUf@}sk?Ec4U6%Q5X6MWgGGEEwk@ZH_p{!Mz4`wgR?4C6wvrp#p*_ATC z%;=r*miK=dJv08tvT!p`X&I*L-L7t~sUR(0v43M5X6tPW<2CT=#ppVd$dYsLa`jX+ zE0(^H{xvl-IXp2hQ5wG^>W(yvWJOnp?)U%Ud&Gajf0Gg4zv$zl;=*M`vx@o@&Mlal zKfG{8(V?OWMU9K*mHb_L*!Ka}?55DR@Pg>d__xWQQ-7vEu!_~=+P}tw_FP7B1=n!* zHqT0L!rLTsW@h~?HT#k5d07{-j%F9;RLtI(<;m{J|1&aoXHCj-WOngx$@tp)MaHY1 zJs!=o$X(eLceZdf!CtuAvDe-i?1nAIt43vGm9FZ)YBjYg>M{IjbFCS~TC13Lq>_md z@jK$zqw^wb!V@ANhi~|&l{!lw^RMxZF4JiHec3m1I_Lb56Ut6!-;r}N>+Nhu_Q33{>~!Wu?;3A!@7);#GP-44^W5Q%I~%&n zyRL%*`k=$*$h2=a8rjwuC-kNGuqx_6Ppki;MMo05a=Ljd-7WP6NRCrt@5S~-R)l9o z$A$v_k4mB?-}syPyOg|C*r%{-!Ci&*3cf37RQO>2gnSRbniYOqIHky0TFE!tx6)rF z@KCy2n#Hb7bbUtcIC`vVO@~mz|sQV)l~U zOSxa|HV7@%J!FR z{}^8wdDx?Su@L>*D6JT;tO3Sf%)HxNk{+5`k@zdV5d`sJ;ccO#;aL$|@KjNc;^8F& z{J)gcDmqedGp}dJp7_8PnF6P+)C?tQnr*mK5vXV&DbD%r1OJ9D1PnN0mZ$o*gLKt7dnXXbp8 z{Z#g}?2Fm8vPWk=iPjmHaoVG2Jns3%wadA}@rC0NM-9g-_K~*Vj313*#sGYtTeN?* z*4o=@Kedli3v8dE1vL=~Y;m|5W~} zd_8|g{)POX3byC%$_o@cRCuWHOkt0b9RGCxY=6yQW_VO&acp&BPx>$LvWS|WZ--`l^-UorGzxPHWpzLNaR+)8ZQ2bJ1-v3|r}(bdd7*!`L7OYgwU zc;@*3$I(?rDXu1MAPxxu0(6hN+Z}hG>2dcv?(Xh>$KBoC-QC^Yds=V_F#>_F_B;J& z_spI>>GYd=tDbs3rd9mIAu|AKyP zE%c*Tj8^I|S&n=JXKEML1pk5cL5rYy&@V_E@HMPyppZs}`mh1I2OgVqwUJs@+!1>d zEukEh(jzs5eA0fYa`?ITr?0Xf5CngB?;y{At{<-4?rUz&Gr?WLz0>pETiwff8ULhU zPw2^>^Z$x_#U=2CoQ_WdSEJF8HaQ%Pq4S8N#+Rl{Qx(&3rU%>0;<6~#>f9+?5nFz4 z6^C<1drq#7{kARBVzLf{Q{}MKU?-Yi(w(3OEo3?fD9TkbPE;iRK)+HR-+(zV5-{3B zfNPC2bT#}ogaMOZp|e88(m`TqCGD_UGWt|*Cr=kM_?@Cxl)^QA_uTCQc|&soVb4L= z4c7)&!nN3)&-2n<(p}oq%X`3&!V^k)p^RkU*UYRmzNgNB5!2&^c%m^e4I% znQWMBSZ26k*r@kIB5fnxQbo4*!G!0kC$M$~hfN2fPD(q|z>F*p93 zEJ>F)pJx)x8MDb6wx(P6aFgw0>{qyNwjZ3;zLEQD8wUTGw3cTR=6Y-a^F$^ulV-|g zoJeK?MsT zN3Y6$(GvL<_6yBnDZJBj%stxU36>93^VWB#X79~j>gw#i;Uzp}+_I;GFWYy_>-HB4 z=ZWMI#tJ&QrP5N-)Xj;bhPuckq#n8oSBZVb-OM_68GFrqi*0YM#~tOq+ABGF*dK5U zIKp1sUf-_Re6}~%ot7qS4|8*KJ~P5R0|f2@pgT{A3q&KL0pL9X%Aqp&X;*+dWAFb` zDPjMR0}^ciccN-ST0@-#n^*+;FUB+pC7WC|AkG$dtw;% z$JCzPWSMIjXz65WZwuQvdo|}Mhu&U=OXJSk$8#%eRct+N4qFlSUuG#&n7K`FGW~{p z_ow(yz?V)C&GCaMi_O9g!FK4Pp$A$W9S$2cH*AV<@JsxyuWM+b+m|@3RfWv;m9aHy zi|Ar$r`VO}!mEWm;`i`FZ{F+hS_fj0h~uEW`Ub|Y7Lj|BI*;MwcF=a2hq`S%27 zLM31TX&a#EV3KCzZ;~1^2&;to;deMoPExoIKVQ*#cHopKr{=ls8dvS$yL7Jm9RrklfL3O%{{EG(wtGz+s#_y*8 zn5q`l`p(kLa@MNY40gs|&aT??*bms++V4oefU>b5M_A1u_e{0|^mt4Qt@5?xugQ9}2VXZE$q*fP>wl#82??&Wd%9u2VD# z5jXQIz)tk0JTzF(9nN~{)$zvzPd!mrwd^adORnA?Ltu?J;;G_&<6jW?<1ZCz5t$%% zlln>Dlqu?Cb-s2>Hy(9E2Gn4@06Eh*gPw05Vd-cYWVvl=WNXQpxPR?VhnE}7&9sfQ zowHrCvR1}Az;fJNk#1@FY&v3EY%D|F0UX7Lb%)(R3@eSDfbDB7f!^@+eiY7c3|8{!vYC)K4Y^BH6x%nVfrm&>#BcpWxb; z{n*vm6>_)n&G%pQUiQ@U?+&~Q7=us4XT%+n5mFC6N6*As#D6AFBJW{W)*7EktfN+# zt}#xF!@AURnq6!mY$A8h-q9Z76zHJ3!i}f5-M7e=_v{q&0=fsFmo~bmX$hs_xo{q< zf&ImPU^B61=wZm=SPN)113xz8li@cw6b}Zs=>Y6F%(@MU0@{#R=@=XPscJ1whU!+TMFB5*rHqx$8h_5YYEF#tJ5~e+R)OG ztz{9IbYnAPUt_v)6m^tb3@NIW(443rosX5mpu<33L$*W{LqX&`k^?!azo73AZlP86 zonTHnnjDwNir&$($jsaJf?CaNA(2E@dw$1*o>v1&ylt0N31Az z4Bq<}aQrR^UD8w}6Y|3AflqV;{r^0jc0>NkQSE1}LX1|wDp%wTaY-( zJGh&w4D1MY^oM-M15*J# zeHvaPOqZ7^2jynb>{xqkS0bN&8oCg_i$B1Zk~^u{ruOC&@fY7S?{Y`rHsM z&34>Umo38{Ve42Lu#KRrNHtZ0jv|NAY|JG05bf~`=vmk@Z$@WgZP8tjO3=zM5**6^ zLBfz{u>$adec;Dd0vI@E!^Fi-ZCu zZw^mw&nFM*D-t*p+#A^9&kt7v^RWUwK(A=83Go9jHieAouyByis~D zTn-D7@$v=Xd$62qw|Rq zgnA41lBUF8ofW-=7bHFqkH~F+b%QirM8{m^Vuz>yc*2D?><68(Kk@L?`$=j0BHs z@PSKiP2@}Lh1BdR>KNcM)ROlIha%^MGt#6;%K+^?=^M^Zo(V8e$tywBaKf;iD*o9CRgB5tTxsX>xE7Mj>bKtGg1}M z<~qnJU@Bn1Q#lVg_qQO~bkvb1lnBc7u61JC)tfWpJ_4-o zk}z2+MpZ}8oKp-PnCNwwHI`lYHoPW=ci_8&9$;+ZA z)oL+)ytMW(F+jfxaK83Lh)5xilX~N5`j5F0o5Ged=Y=nH5qsWp$np?6iO=RufLtD- z`!O%*R4q*)iq^=KSnq zRb7eC7|#Ypduo^iR`!sycO&C;>kw@n^UZFOAhkD*zgq2Ri8I$Y`V+ zVAJJeGZIg1y2HvJ_(d%ysh##!J_s-NvM;g=rxbBtGJA2npW^ zd=@>v0bK!g<_a1{3#0py2S^+w8{ZA}fw#2}HhmYtt8oWpR8>q&iBD8hqPe2HoJ;H? zl~MLfX8xFWWxx$GD21==SK(GY=${|l9o!kJ6nY&f8NMA3h8y$kA`K*+vRRoE?Wqok zor)Wi3H=GgjP`_%cPNpcq>bZf3ckuyrY*F`+z`6|!{!$3M0S!n+uXx^n_0$GrxjCC zda3aN6(ASFw*3`;8+c01@u}D>v>?iZ%(Dh?s!(8^)kmxdgPuo50F$Gq{vaq2{+H!5 zH8C!p2RIxZ;nc8zJT8)#%Xh+)13d%KWeV@YU4mqwyT4W7Wk3ifLM?+wf)nIcx#C8a;q&=s#Ev1Oud|2O2=S zLdE&6-wQ0h!QlHGhi(5+wPN(7@<;wC?v)!xmx^t}t^DnSGlfM$G933Od{1DjwIJ7P%Tu8Kq31KoGLaSjp@weD- znA~q-=dcN=1@=CBQ5l_!kcOvv4{$2Kf)gB*+#UBuXGiM*FQ~b+M6Rx+iVH%sg0Djz zge#Gap&0?cKRtj3KL)*_8Nr5t^F9yHsn+vV7*7=>&g(=ovw=IO>ERX(^ogN zKpJ8iHi{@ro}d<*b{VI@E>5MNnX57dnJG+Bvz1-M+@;&o_e=|Duc^MNu<0RnicBLJ zvIETO6^U(l4cH$X!v4jYz@%6LD~@e~nb(DsL)W955Rd*7IF}>fsy{S2QTr0xt6o;O zMD=8cGQ|b3~Ve=m*jWIKQ z=st8|dW@+Vz1UR7c#qmc-X;GdR{*!`UwH4k@SE6RtOu~^Vi<+{&;+srnT38rOQRp5 zLt6&vF^wTtVPUcfboFCm<6?K!X-Wl|QVz*|gi?Gueih92WE!=cdQJhF z1{>1j+lBoE zZs1VN1>5%`=pg9x-yl5=oc_435P1L3hve{=u}kXiSgBa?s01gbl+sna3%J#2p^U&r z1_8=BCOkP*BeWz`GdwJu8Cn{C7G58I86FrJCR`JLh_@t<>{lXDd#tcFKQSI0c|-b# zkVRMm>w&L=_xJ@6U7K-%@sV+ysVqGVs$wpBifJ1#b`F}dOu0;FsawFY`a_nZE|aH$ zyQ1Meh>k>Q{04RpyNzM^5o|W#hGw)DDxoE@AIN@~MYieRLgL1}WW5BY<%?gAEmKE8 z=5r|eQOOeg;laWiX|;HUuNLkSE)*#pt`lw-P6Mn~38nFq`8DAS;bW1ZVv5vU+$ok( zb}8?parI(+Vqz?$ZT!#`G~`D5q7m#g+>;-0ADN)$Q2VK~Als=+cQDm3D$H>Y5`e?`b4I~X2wD8CC0eLM6BG`Jtwt<744qXl{6HBqd_t z|KraKnDkU!C~cDkJIsfoKEGTo{)1$8v6JwsPbKjPVie)#A^a;uK@6e1Ym;{!W8Hb zZX+cOe<1m33?#1&Ow!tw_{@0M*r4birJ|al{*V_&x(lh|WU0M)Fj6zpjkoaz{w}{9 z__15yoHvZvBVTwna!i;j=8^z^P+BP0l#|hvIFjJCsR<2|iVGXgK&?EC4F`@-6`~~h zmuyJQ0G`ZNqhyRhhnW}HHA(35w;4mQ>8M5>Ajbk5V>fW}21Av91FWE{cz5W{2H~&q zulN(}IOOJ4!WLm&(LBg1c=MwG&nd1SmCUPEjrY_3#7D)dMY-taXkVz6?V$RxQd98& z?DESCbt3Ee%lyblqey+eFMlI)C$c^AD`FAfio3;-R6|*z{8VgeT6~38R?E~r0guZK ziGBspT!0NP#m?ewfaf|Mp1!ehBgInL6b=l-Kh%3*CR74szb2Ziz#R7Ii|9INi{tIIG1|J=W#ABQ zRWC;0i+=dYD_52rVtvsN8Okq-bQN9+Oyqv}Y^0(vMA#9Lph8|3Z^G?V0vOt_mABCX z@x2KfG+xM=67l}5YqF}0pr3p|8Y z)Kl^TOdoYf4^e;^0*uzSM1FYooG``j0>0;T_*&~=2ryaqqh}zc^njk%4>WAipMX5$ z^4dOaxTeJ!`-V&RP76$r75&{Ak7Op5e@ z|9(VhFI*8Sh-0Nau;Xt5JdA^iNo@}q*jpe`ws)euuDSl39yN4_9K}U2Ip4&e;}*gI z?==(7w42-me}iXaNnn+grsk4Gpx3`f_JOVZYoZJ}2j0AcC=Wc%eZY-gg|Ekl!5nxW z3t(NaL+A@g=-h}515R{D!)N^j=qA4=AhJ{27_ad^aglmV{h|m`Oxgw-gfdb?Q4=bQ z3&p>}79o#NSU4phBJjI~!@yB$EhVIV@-4Z)QZ_0?6*V(fK|2LGw+A3!u8m%2IBh5o zcVQMv!uzv8k6Vwhl9fq@`UrfzTI2}W^5WEP;FQ{dReG8j43i&^*C3h_`G{2bRtMpI z@gevEyg0rCyNsm)LkGpqqUF(XuyY({C}WrkxL-ERA8CopS|hDxoP$ibF0tRyV{%No zs}RxJazyMbeicR0E^ZV{h_~RWp9&dpk_@6tTqc#2d&{3?0xHy%Xh5~c6Y&Px=tLFJ zH+|E6(_b+xLSDmWr7pG;TLiU!262%154f|V01=xCPg)2#9izw!aG&x7N6sT^LuD^Q zAi#;p#uZEtz5HIN@w4Hrug6lbd(ahlQ8QW@_$%Att@qXch6J59$v%m~u!$HFKOV~o zs8fa55YU6%l)pgT{vs8ZDoKqckGNHIO0&g!;tVlE{4FjJhe=jhC%2HBDM6(<+-l#| zPqF>+=31%5y2Pzy9!SvotG{bF33a|F8b{}XN?<6|``xhJISMD528MkEp4tBY``l?n zZ(=jN^~waWDd6kukC%q`T?qP`Z0tJr6e{}x^bh>MEQ4--Dx}XggVe6OP${3l_Pr&f z1LuZq&|o+I-RSDl39^8tw!TFLmn*yGs1Sh-lIXjx^WvLc!mT@4JPw^9}9k#t$+p;PE3zLAQ` zsnTF+z5EQekA)R3x+uCldR!eHBj9`etC7G^EDd>c{q&t7X?8zk7}rG~qwTS;(4+i^ zf5O+mebor=&%s20Vhk`If8hj?4lLXp#9Dj;-W0EZcZ4&(278MIv35{h>Ozei4;{@w zv>YHGGXb^FZ+H$lefjinO-Zqx$Xhefe>_+RK$rUOrXC2pN)@z-(WM2gQ|kZ zF2VG&06PNHM*|Fp9vHz&0?#`I)J<&xo9qS&rQ;xv?lkx%q$Sq?n~6#siR1A=ECOgt zceMcY2RoyGqeqq3avo)+Tt$8=Z<{uBIP_6;6g*EAIM0*uIe1H8pFP2k;z#f)_%S#& zgYk4MFWv+nh@;TKjK=!FZ!iQa08joLU5FMyGm&4&Vk8?rC!v3GUP+fAXU(Vz@(^!J%q~F5PyWx@Qer{ z<6ZDY@NEvox8rMJ3y~B4r3m0NDfm4&E5osQSQSh|GtePu2=M|wwgI^Z8^YR#1^T;? zfU_Ai+J_(^y>a3i)R+LIRXgLifsc_A#nj&FfoL5CQw}R8z_~jsH{@!tP0pjVQKrc& zGy<5*%;;zHsxa4^h}5C2zx-Ov=7faFK}p!eae=f}Qa zxj{`-6Mqa$;5T?KA_(_S4!Aq7z#WtexYwm|C;k-J>Tf__)(<9C2K$0Of(l~-gt9Es z7zseie0yLld;-nmsw9!z1bV;8+9P=9=6IKQTFe_A86BmrQC}<7l|#VG&Z`9Fg31=T zhWr)gs%P?SP;MMjb||tkHCk5X)Z^;%Snl}Acv;9a>0oCQp^z3NrO=xB9$^f^p_!<1S| z3wfC0PzuRI<+(7K{FHmh&6QWmT{tUc)OBie^^*EDmZDj--CAeJKD(M63|Y;nUJu#{ z8*&m5t()jvsLeERzCU4;;BH+9r~L_Dnuy_l@SD&ni1>SaE=(AAq4unVGqe;mZ7g&! zOW?`3z*GN&Rz!@z+Rp0}keX9i*FM<;YWm2;5UoIbXsmg>Nqm7?A-X2IN8KMC ztCUp6C}n_GrOBt{Zt`gPp8N~m_X&BhGFCaFn4+)Xj5kvy^;v9iJU=8!2DD3w!;rFc zMmI!13iuDZ40EBfYy(wbW2`D@%zj~QVS>tl_d1qXM4Sbl|9*J$13{Z60TNah9}Kh7 zLinvNfX>Z@jmK2kH zm9anSEa;@RMF&KmC{N%-+mumq33(^fL%nQ~Tg#HX09Y&4m9xrqrET;@bcuQt@}rx? zPsf*PQSE7BH{`fHgPymkAp-CE4-!YV!-PWvM~lSk0BhBS<3uy~$qU^|UtsB%hAy!z z=#bU|Z?gp47f*y|jk$ zd5~wGKc=a3qHUBf%F5^=Wxd>2J`XoeMCvMkmd;3@rQz_-v!p6=x?B#DudQ(B$D*Y{ zs~d=YjF;2i0mH5@=1(Lcm7L0v}ztS#1#^m872|Cu3`u&E-NKmNsCWu+=dCFG8On?~&ig1z>EUu#5Zz3Y&CL zW*T zyjQNRdZvL2m7! zu^6VJ(_m!IPz)6yUf~YXMwW!xzYaWeF}x^rD^K7=>!H6|gGPZ1(H-u|;jn?92m64# zkVn@BcxJ~zh1UmC(CexL)I;h>b+s};8V6d>e98=|q*PGaDZLb1!IL)^|B*II_odg; zIw=Ka)G>-aIvSK|>r^)OHfGh%Y2P7@^>wloC$n+$*rTQbSL76?k@Jind za+w!^{;Xwk1h7V5#Vg0Hz_>geZ3|UnNtBWAgL>kma#K1fJ_42XOmVho0F#DF;tSv~ zE{8Y14La})`G!&_Y5)!FXV4`4jwiI0iLu}XlC9J9cH|b!%%4#n+XXe@A#sIx4m-$2 z)M7v-&cck`*m##(N`}eS~3CAPhi_Fx&v{H(5GD$|FiiLzc_8eA zH@*pwpqtWFITuvv+MqMOqP~t*2K1AJjNg^I=XyPYqd5UJo&r;4H?k{51M*PR_}(}b z)R!kg(>KO=5qMM^jGSocNZiTv8a_={LO^=9<2vPt2gFSUvPMQ(|6r2OLc$U445WF(*`69D(g6`2=N zg(u=Tu@7j{BXXM36Z+H*>P*l;eAlLeVtb>mul~HD2|5`o23_dC#Ax6V>x?apBaFpB zF;pAS+D68%rl<4`Qv{y5muZUeHCe*=k?KK}Cz}G+GLZ=5-?4^JlYOWNT(%2vf)~J) z)EP7a#o-RAl9-_x;vN z(-WC%bQRjpv||PV!klT^Ku<8$0{v?Zqe|5!D*`4_74F2EF!9XCz9R*I0eKObZ&(LO zzg_f3-9Nxh$kcYld&iuyt!jo`K`x~XRtifW!~1xncuC0QjePO2lYbVH!ZN=TIOQl$ zgOW>*6cTcX+oc!sA|O@LSba20ib0M8&S)Imrmw#dy^?(^Q{vGt~VG%`@&qA?Qae;NhZ_Wn^|MZZ>j(Yej($(l%F_Ed?miYT~`|W0AJZ)a8u}J zsG%>T8w;7Iof4VxS+W0AUv!*;%CdM*M5XfL&(P}N-0&QJSvWm71Qb=v0y%<>Laty< z;7t4*D$QTvkMde%nAiep*$L%?S}Qg$RxeRQX8@Mu6@vvU02=NwR9|BiP$Twc(%6`} z7~6rpVkuxXTHabtS{|`1JD&ZI^}zoAooO?@$28w`nX&-m$pXslUwCD_0dW1c!+9-e z_+N*)7_1;h z>sWhQ+FP@%gMne$h;3`RVk>8TY(8Ml1ZB)5BP z*OJRR(pJ%S3_=FpTX$KPTFY4@)>+m~mXqeFX${?g@z9e^d#QJ@ng5E%z^9@f^zG%4 zqlQg-gDxkyvpmv{YcJsD`lHO0qf#re34bTjPfU&U3!L_d{(Zo7Fb39pCwL!wW8U@t z)q(thg8sJtYM~k7tD*nGts^n`JZ~$c_N;P z-r~Nd{`vlr{(ZiwfwdtA=xdws{lz+RS-Ctg3m3=oXiD&?MF^x?MghjTd8lZvGe4%)z0~?g5^HfnDKOfoh)F?)9F* z-l5)qd;#BQ-&*evf6Y*}Pz$ICM&W;$=wQgDY+8#vQihw{EtaV9zmSnHuyT6KTpp)gTYUR8#{S z4Bjy>fd^0=9Adg9uV}5cqw!L)D^V6a9J&az!;^Uu_7u9%1XmZ&9{>0-68!C1?-}8t zJ#J5a-yy%`tLMc6N-zSIz!WMdY?LPhVi8slH5rQ}o*1@6AKDKsO?W_CEz&-7Zr}$- zEN!_l_8Ht7`w9C?M;pg??lL!=TgsKUZMWRDl(Q@_pJTq5mY8NijjBlTpq=CaxoU=H zArlN`_5VW6Pik|tX7Rpi&S)9AuT)9M#~&1Si8cA^-fynPf&1W5Ab5JYA9(h8cX}Fo z&-)tq|9WqDvjb^CLtu5_NBA(z5G}=mQe5d9Yo*b;`QTrZhIGLSQXNfajc@2JY^tri z?LW&Y+avoHdpE}%2LUA0BA`7uXD?!(W}68*o!OS*=4wnqx+jgA@=*K91H>J?Gx)b` zgZ^r?;REmz=;T!G9bh9{)x1$c+Apl)JMx93Nn*F)V)r!ngTTu0mcSR!H}`*@8J>O~ z%6Hgj_OE3vC~JSNq+^t0y0e9|uRX;c=62fq+TYupHux7ye)bk~i_S;yHZ3x?qgs&5@Rz{f zIt7f7B1jSx5Lc63Vaw1KZlyZvVmVE`5%B>3+$T2V?|S2|Y~MfOeBtdrliLP=@kgND zaQZTRE^o;D*WWVm)IUA&FieUAp{Gresws2SJD`4OX{dvAMg7N=F39#Kjt@p@k z<3^p$I$n{ z6dS5Pnp~YQBo4*T$6iD?!bV^`^h5I`T9iVH=cTuMa95~A$l)vK?d&BzCp;B=W`7kw z;#=fv?)SqNKPXs}HwaUOxk78PwcH@;h)+!Z)P2(XkR*DWz^PiM{pP)vkkxBxV%^Sd zwLf+Kab!5YIbS+jIZkp1xmtG0KGPVnq7u z%RtpUq}7TaR~IUjv_y0XcDaw#A~?=F!doabI-&$WdcL@yx+{1)dFy#YKCgGOm-o)_ z<@4?F-49$3pN?FNWWsGQMp~#eiH}Rj$qD*f`Yu>i;ud+p)RVDV>RTs(#$Yk`&0fN} z+IiSnHf6r^tmC)6lRawBWiJQHqJoxN<|WKudMR{yn~bMno*D^!o^0$LIuGe!c%kc) z%$dy6mc)&*BXVUhC`Wo)&E9s2D zjd~L+8%xL)#rnb+ajx=KNcGqB9`rs9b>>C?2X7|Sqp|Mxo}>T!w&8DX^Y!sP_Pq7R z0?qibkx9Hc@<-?|E|I0!y5w`c0-Ey1*lc_hb&U>~Cs_-D&LL`>V~;zMj>XRADTka_ z9OoR@9JC{o+sJL@GORz??Tnv!%50`5nLbd(scdk~7>9d-McNN(54&dYLDUGS=tHBL zSQ9)kK1RPvrqDxAN6*CI?(l$6em~>+?W*K5xKDWBduMv9dvbaAdTGxh&v0M4&;h<7 z-+(_8X(p@?XDKbTHu}x_N{05xc+^fLDVqIeOSSa?otu-Z=IHOtpE@Q-i_~3?Gf>y} zIx09?IFfcRmt@<3t~$kB)ZCg`VVXl_60Px0fZXoKJit{fV1Ud#t$(~n{JT0&87dwX zj>@H_!C|A9^eqYA2u%zg@n(4balgx+8o?M<{p6A~CL0hm2{B{wu$V+?Ue9 z6QO%3=6>xR7?4BzgRgvT++$tyvR1l8kLn3}I=Oedd$=9$!|uzzI>EgmB~&-ul3yIj zBOO$FXerxI)#A!=~=l)bWP-n z$LEfCKZlp{>!4GcnB6SvV%B5#IA1+qe$eFvUB%oFTq`~I0!_j9rDiZks0(;Dw3ScB zrX*(qxBiLlDJm0AV;;t4aoWCH21932)>$GY>_k%gr^ZtZ&i@=`oKN8CayvfRO~**6a8K+UZ6Lo3Zu8!C7Ypda zD?+3FZ{5$ba%Nr2p5vL~8|^9L+3z~yQnS~%%lo$m`-Yo=4^1t;0qCz^M2~Ckq(dLo z_d-orQ{tUzfaQnnhIO4~hqa!4hofx@m*Znj z=E1-+w9$E~+C&r^jgN$_WJSC;@<_KlQBa!~Z>Wx!%E;@Lpjt|L?Bm^oy(dA9aw9y$ zd&+ezbAHx$_g(K{|5;E&EX&@Qox`=t^VDAjJgEi-iv~A^aKR{@QD zSdhpx>Dkqm3zpW_o7NZHZhLKKYN{)BeQE(`aYrw1yM3B-pEIxXrL6(Gl4-yo=6>u| z^I3X66#)czIq`_7Of<#oqi2B+I5}}aYoq3thKQ#XIbL3=5cudG;tmGCMg-uGX1a%E zS~5Cj7xmrp8-4rSIbE)-A(@|DQGdDc^>E4Hr9d!5@+PsjYDl~XZ`jqk^M-F|A;N7c zVJT}nW92Lht;@Lk_Absdsf}{1P5tN?X)j~%WB=$F?A+rtaV6LY;0gE4>E<8i>vWL1 zK~%%r5^n(~!-=b?U#}!C0)r^57L)EsM)g^|jr7xZ$UWKP3LlRw;_C!#?!p<@GK#wH z_&$I_Z;Qv0{U9@%k?F1-ybF#)X96pN`#{Z8S=t%vl1K$sRZsnY;K2Bn=*T#%J#0Qp zeM^4pzuYtXjFdV#wx$kCY3^9b)!+iq<>D#j97n7iyOVCn3^A+bW9B<_4(b816Fin? zgR|Kj;tKjk-!d@(zTjJcUtErAu_Li{k-2bpyz!NcoDh2QU42Wk*Z=LF+1OLk-#u{6 z`@(f1b86=DtZUv$p~v8imm7Qn5+PQ+BnxpfcsWIZ>v#_FVj;?5eq(i8e*!-~VM(zs zc2rHdn0hF+Qp!PlA#Q=~s=bl3va^=Gv^CD`qPNl4nbB-9^FX>7^%l0Vck#X8_t$`M zBl&bgw63vI>TY?0oDqMlndGa!>shnBJ$SE(2%`gTm-+9uzuR03{3V0my*f|l>>3$G zGXHb$4t4>bv|Pb&fj_~yd@*@>95UK;Uv-q8MgVyr+nY~Y_uAr?hb&^9&GmCkPVuKU zOQlmpd!|jX^|BXp+;Miam$B|O52xSJ|1vYoi_Kr?0#r+4GO#&j0Stu8Lxdfjrys#+V_RmaVg+&S8$RB&c`=K`XCJtdu4RsSEV%wsnr6=N*n4;OE69RNrhU-``r_d+z zDA3luCu2nV=FHaK_rBA<>7G&9=Q9gtR&#yzE8%}4UBaet8sA^gE0Q`n`P)zm_LWD` z3@nv8VJ>2uYPZ`<*h+G*Y;7F-Q%3ynyGTKtkL`@jYmRQX!{o(E{yruds>4^A(e zemQ%%Pak;W&F$Wrl`FGSR#T5I+#|A#cY`ltM`5hAB#I`A>$f5!v1gbGRB0wtPRlE9 zy8QuY-ZQva_PWk$DWy`;)Y{M$B)ME%KCUgdn7e9QV|ik(#5AJ+p)Uisew%4N^@z9v z+r+W36Hg+z;ap-!Y>zTr=qshcwp*3XdCO)^a6b;V6KMXl56hmKJ}P~8_7|_ye;>5r zYqF5c(OEq_^@Gd#+u<#t6#hdbr!+GSB;KqJ#tihFKl)N|Jll@Un(sBcErp+A@Y?8>g>>*U|!vAL>e`7_F8mG{Jg zSD+SO3Ju^F2#>{b(L>s9o!2lGt4S0f-9(7m#6~#HeuTTpwYIO|`Z_wNUe56d`n}4I zN{$0uhOH3izaAA>~ooiGwiN?zFeRx$PAqb`}xko zP`QxmNSx8VL$2d@z$bMt!O{v_)qV}s@`vp+Y)`o#j`k_R98u>w$2!MaQ0$GiHMLFT z7~2#}ZFUpW7dYY{OpU;^t+}x>nV%4Wb2SB>h78tMOq7Zq5~hg*V<)u*^3vebtOM@8 zfw$mkwZdQ7b^7nb^qX0&KvO>5yVoUWjmg-T)yHiJ6b^k0riVL+&qo@HJ(Nc=Ix$&4 z3Cl&~CMMu{sb>sn{meb*#@q98xosmjXUfFXA*t4sJdW1(hk$pkt~vrZ$&yNyXKInorpj`sP~est`!w9lXuI-Nj_g z|9dfWCFu1Fy63xMS#vYPnRQ(ie5-?Jf*ru|DIVDd%Ke4vCT)^_B=QJ&=qgTV*mjH6oBhDEXP6)(Gkr{-C@Z-c zI+KMkWfU-Y5+`G|q`G1OUNtkuJ3}3J=#8YB9ImlFzy=!}5BkVCQX$yfn zh~nIlnwr|vnPzv|Hd^!BHgHGm&AANrBQur8K|2y-o-v*1lg7W~Dq<>VioPIw^fMD3 zfeoA^T3eeCTP=L{_V+0M-yv%_5jf;!v#Gyo#!FW}?`yX=yK{E^%(0ntb_egpVC7&R z|DC`f{*};E`mEfEc@mH;V(5hDgk83gIz^{i%{Iig3{KTG+dW$^N5$0nsYO%fgTp~N z(6yf7ia8qE>suR|H!`c4g61XWKj!63ZPNql5Lt}GiD!UYQ@UsBY4Nsv8XT4`$tV1u z-M_ufL$UCuQ0u@=SC_xh^!(Wcy=T0u-Gu8x=HHConbX|%VD9iGK&_928Uk1Un0y!f zRW2sK=w2Y}fv@W)mKeXXqpZ^`tF7JP<{W9WaHpMHQYye*`p}kUt7J{F)v)ifD^>|K zaGjWG3~4S8dbm0Cd82{41@6MF@u%o0eScLJTgUn&dnJ2F*1$oZ&HpHTn6DB!52EIp z88tF1x`%rkdY^d-_qNP@8R=OQeChte!EFC^P&q5%xk7XKsQNDUHQ_Kc1O@MNBrkr< z$eY)*?Z8uEyrnVtx;*DrIBh9|om;uPR)ZC{b>LDQ^X&z#E!dpQbS4d4pg1I5_kxa3HvzFD^6}b@I_@QEh9oz99>3gic5HV_&IG>`_Z+b`;x-eZuCp zPU8wVS2^{Lg|Vmo0;GdE*G%mQ-_Gsm1Xoq7bc*>z#-d9{@~=;*^Olz`n5H(2@7G{I*0aPdUp6o$-Rp;iWgEFfs>jiQXt$Y z_zVILOZd?n z*a*-8SH)LQ<4t)Pp1osbEi283*e%xA+y!uCIAhOgD`z=o9Re8M4Qm!#9kxsB!DFQr zz1lbilopThZ1CvGfwaL+8|K9h%59a3u~)I>(HD^?fYJ*~yjymaAaub%%OwTyDNhXJOvtjAR*PG}Z&nrz@?!jLwi^^5AHyI#>A>nZ=h1 zUk^3`m+m%U8QckX1=OG+biqFZ)TLcR2){YfTbL)r`6fbZ<$-!G{!Ftb?rRMa0i7Go zCcyU*lp{9sK2??e%Y@A}%{f8USdMMZHnOy{wy>_Yd}QadWh}+OU1p8>65NRQ@t+uC zG?@2O%XP!l8?ooQ%Z3aculb_cLT$c%WS!h9`c&G?PYgEoI|9E$*TdgKIfBmuAA@y6 zXs`mfz767|k$=UnQeOF*ctEs9n`k$HWpP&bQ0LN}(|5x>)C^M%BT1E~))+N9+dLH9 zw+ew0eI(0THd(${)>`{of16h_JIx>2d*;5(cvEpoMxPr*tOdCD3{89nj;s=|qRX9_ z9(yl4`EP-qp_XC?scEEA=!1Wzf3J6AphxH)>`k@?j)hvn+ba;97ZxKa(ofl_c8s2r z>nfGv9ra6r_xb`^i!=sQ5Tzc_gthL@I`^i!GF=`<4e>8msd=uyY|Had!l1e;nBNg18;TsOahYT6c zu)!E^#TkR4V`DI2$dIv(0mFv73@FkzY0@@r)5gTSOC(1_45|6QN4I^YsJWuB|mlWHD$Ubz}OFWOI``bmoCb5t{ZQq z^(NM$u3o?$SQ*@jcjfkk&NC9Z%Xp9RtZqx*HU4P9qPWhYKCrm2;s(VJ66Gh(P8yul zFLAhNh3K593Jrq^PM^mgj6D|nUF;(~_fgLq&h8d*hR<^R{5qQF>+iAGtirQr!y1m) zYCPGt-)()|eX3tq?Qmr{F4~V;S*YyO-}8rir>k*Qz?<(qQ}qfn&V3D|@P6`+aM#Gv za9yMktD09V7!~uHKQTsyx>t=w6^Y}L3h<8UK+!nNAp^-JNna$kOFWdgJL%h`0f}!D zuEks9I>fz-ogaHtz~Uccy~p!zLiTB12Gyf(qWgYTj_-NH>Uu-yhlp1e3DPszL-7WYSukFB z1v6?({B=a#{mJpkEs{?p&r4aE@>|N9l=aEWk~vt%U7w^w?YfUezb53w--taW=n#|0 z@kU0{+c;x**CLV{qia?*ul{&FtL|)7E5`&&7mM1y*L@ldz;{*tQ?4v;Qn}f&2(>2- zjxo+(Tpss=s-J5n`IrqkerKS6xHkNEB!M}VTOTt_U=hrS{Wb1myz~EkvRd3${2uqW zdZ*-zn@d&Fhgfe^in}4>>yG*t?@{w?mgrtwM(hMMR1PqIj^wfmc$us%{sVZU^HFV& z`myx^??VSwVJ$mXG1g&qW;owiACzm%^0Hahez;o@aSX+MqT`NY=fkSjb^TEt_^p3y z;92llXe;Gqr=xbuVWCerEOtj+lf)L{;nK-ck>oG&R;<=7mHr^_rf4GjLc*5xmwYL{ zo!m>Dh-lnZ#EM%YT+08JIhdV?y5N~~PE8+gJMTgtw_!%@C{NQ$e)$SZdBq{DW&dVv zToGelS~9Y1L*)_MC0k4T1UnmbWi~nncy82i@V>xWe|_Ld;9BT2svlP-ToQXU_OI9r zaVpXKq}dX-{H*+m{Df34xg+5#E~(h6Sqi2+N7hGLD;^+eC0!$lBwrK#8TXE#jS3(i z1gU}^REkekHN9r9?BV*rAJFXFa4(cxh211fR%%~ zdNb`)Y%a$(?~A&E`j!4EfoFk@!HP&Wr&w?;?zgxx$YYBVb|v4Emdjr&wksCNEz%U( z80EjIJ5!G+e^w+Z6BLC~mt?ebzcgKJOOzzk#K<{W+>NL$o*BuiYh9zRIbQ#B?J3VB z$6U+4@_38UVyp0#m6iT(9#rBfxm3Ev5>vsmuqygl7df&VeeGRb3Er&QalYDy)4_+K z!J!lMRZfL)aQw9Rm+`R)w-ZODyp@$Ib*hh)d$9WZo#NNjJ?V?nDpmE$!-_ZZ9rDlR z9pz?8+mu342G$og@(0Aeh`AAw*MC>L-PgC_+ghb3$DyuxTmF%y&|@ScTv zsCV-_-gG%qD|Dw>XP5t0`eXT0G{-fYw-)CYoiY`ebmmiKN#$!xe<=N^;$N%I_OFfO zdRKM1#tU!LE?5<^M2<5b@Snu>#C_`931(3b@hHW`)HP`fQX5p=R8v*b^hVl3?Z4`Y zX--uy)d1BoXG_hC#It-BT-elAUD+pPIDt#@kE)cn+Ws*UpL(mN>((cYLT zyrA$(oSXHs;fLyN)tBn7)(O0?oINd%OP&m$bP=6}lcrMc#x zOPg9al}y_cXN|}2-BvrT{@*}4o=n`yyuxW%qjZvtK7q}#cBu^xBrDx=cX;NK5#tiLS zO$W^`O-Qp@7oRyIECi?wGM@dbI!?as3E70c~3u23!m#!}R%=}x4+_KI3i>;^g->RSL8aE6L@FNve zGE2hc$9|O5Q@lx9A`MG*@;RzCT4q-3OtV&|&DOTn?a*z>n3dT&qp9Xv>T_j`A|%g~ zoJn3Ay9Zr$>QO5oKQyDNpDoip+S|;t)9xz2Xj)eAy1-euqIjh7q2W-$*aBJdj9l$Y?Z3LT%sZL&x>$AN)cJ}vvZj&)N%r_R{P&#eF?@cj@OjTNTcNvW%@l9G zEv0l);i-H{!Aax2;>4oI`UQD8c;wPlFs5i|>Cw`7^Ih|$@-r35_7|S_wSk7${`ioB z{+e0M)e4`9Zi^?$d&=9&CdikiF4uO-Vr4(eyqIxLSE?)4J_3S;B{w0R-;J%{O^f+4yu>@-{@yvMO6)P(-jxn7{3QSTf=>&1MTZPC^d)&2c`H85 zDo__SDdCi~EIC&;zoN0V#=6}7wx(BuJXjq1jB$fi%iS+%CmJQGP_$Cskt-DMRg1Nz ztbL8DvkqpA(cRYllVQp1k>$wTqGP9jr)s2lC2J}zNVde!a@Rc=RH%dMh({a5)r3na#`Oh4+U=a2os z$$OsnapCgfx5Xoib!Mt!vNhkDYhUR7-gnEd4}L;-Wy`rg@x8IzlD?CDrusy6O_8TK zopvch-Kcq^qAUh**rywoIW{{n`(Q>t&70I3pvOO8S zwHwlE75_*FO1@4hOZbc5p7Rse&$}BjRlP#~u(pclv0BxojSFArU(3tXA2Z2J4FzXE zYy*7@wbEK^p~EJsGS3`W-8>=T(=w3+JLsaC~X>3y*(SspinTgsoEMirO@GQb!q`PWE6@J^SzgExQ#{su+MHB27%OYP*%{7j-dpvq zKvz7I-IhHC9gf<>g_DNKGL-qscB%r^ziF?v>DhZ4HOlIqnU;Ax<8sE%41Z>7ra^N# z?Tk_*Zx7$FSu`=Go;84TmRrvlUz_Z_V4r1Yxu)3fRg@On@;?6{E@)bK#bhq@>C^I0 zzt1cfY+7gLV8y$iWsH@!&2!Yd57$;S^bBQFEm$wOM*e<5S;AKFLB)2}I#o*QzEn@T zTj$TpY!u1bl(}1XOWUC9kvSxjt(%*^LnV}Nk~B`ao8S`6BJbVBEMUrNrOqbyBG0!~ zYaGogL`AXsmf-wXrmjVg3R~&t=8w+*sNk*f5A&(gVCnwyeb!6%>Go>Z?%HDi#!z#t z_}qssRL86n9Tv}%4Um^AHmTxMYtw6Vy|b2Px-*;^4>KO=F6oA4Y|hxLO-s*Fy_VNV zhl&466vUQuY^;;qN$jq{Cf?olH+G5hf@7L(QdtYr&3s{A7yTqt>!NPP+4>9lf&7OC ze{o{j&hnMzV=E8Yzjlf}#nlD%lY<>2+nAr=3FwV6E#sug8)T;xM&)ePkkrd*$(jin z8?rWKRc1WZUDF=c@^lw<5}iW*LiLlJE$yD75S0rX<7p!^kINn!_}FvTHp4l>{f`Uv z21|DvEAtQLhYSZzpBA|an;Gg0Mi=~8_@?+tDZBi4OM-of^O>V9Dpoyf=p33G8OvJ2 z8;)AQJZ3|(W}?!Qw&{<8;j?a zDJ%t+o7QfQ4X&Tvx4dl|=Ao`pJhMM%K+JzJZ-nY3f$Xy4PkE_)x2j+IAx(p}Nyd?k zgSvd}1Fc<~rF*5ZsO9Nu)oFRM)SvuH)J`~&bAr8`SI8OZ*LddHpE-1{7tTccj%gw~-oXtt{lrhlB)NYzPRFPWI!E&ecn z3gh?Ot1f)8c+(6Pvf|+vMvEnZ_US$lh?{Jj3vUOZqR1YRu=$=<;`! zC+$Bvdbz5rLcXm5acBVTWIf|`6WkImi2pXpD&ZuzW- zYW~oC(CpRF=`pEH#W0yg{4i;JT!?#?MR5;tThXuTt~j^bn%I{+);X_L4lEg~=jLrG z_}DnSs9#ZrQDd+dbTGUq>Q?%n*R`=9Sb@Mk)}@NtCv%P}Kj{}4IE zk7Th5vC^bEn7R_V{7Vc;MD(SXm09MQc=3xGTyq!;dW|W z2Rv`;HU(FO(Z7`QJE{&0;m?TwRAvbNhJbD%WC1swKy?uz*_-S9s5)DjI9d zDijzF=zAM4l*r4+TJ~2gwf*c8djg);HEkPeLX+w9EEeAM3Gzk=O^F6czN}ELS0pHH zN=@2IjZBxJyR03jy{UPSJ~=&0Jxa|;d#_j`n;=<}JTzX(&tY}t?&sfPmHKGsHPk#j zi0V=w*}gXC7=#5ZL!@xADPU@3@)RD{(}vAO$4lRowXEo2-{%_Pj&;XXhkUmJjPNt& zb6#r96<$Wn@PrX57Rh$`SXGWHS$ReIeR@~zX6-%gdEIX9>GZ~Fr_v{>eQ8^jQu!t6 zwq#AbGUjt`qnM(YO-#zS(sj+%$34d5az!fFmBboG>Yo+PH}y3sP4ULCVYU9IA)|O- zDXUy*>1_Mp{K);({f)P@?yWy3jQVB#-h3@O9EcK(Dd(j-<&BgMg-r2SDOdliJ)~U% z3+$y`oNi4`N&iO8Ouwb9mo1b2kn%P@!0XMP!5=T^%(>$K$6aE7k7q&KdAyE2WnGOA z5RtAFb}F(J=M-%#{8le1%rV_4IaL0{I@Mn6_{llP&8dD_ml05hbC@r<)p!Tl#COFF zO`awhFIyvLD5ffRsurjHnchny)TQb2HFwgB(}ty+(=*ajQj6uorC*DmiZ%;QaxDDY zLLGNPgVCLg)d*KrH}^lbIi(AYe0{*6F|94yW1dpl^hgUGpa&$Z+X9KTO{DhRIl0+#>K3s8D5l~)9`&BK_9@pk-zth;#^V6EC zn`<)EajJNEU)d(f>ZFarUpcwFX2PCaUrss#V;uKo!#u56R27$4kDWT|y zNoYEwU#$Ph*v72Itbc^DJIMNO7@BTG5dMVV%x_)WL4v674~v<_hC-cwUj8J*_2O^KhL(SC>0)i+&|!7xTs5QqkiU0O z%2J^mHizS=V15ln$z_@|F5Axn0>gV>=ce%XixkzxhlC#!d7lm4paqP~34L6FXloghLRq=zZmy_d~R^_Pc>>m`k5FXF2A(hqn z6Jj$G6H;1A2PnoX=P7?x?n(PzE6^R*)@jul*L2r4S(+z^LhN*l>ak*u^h?p-g6jft z{F>N1424f$b*ieVcURSO=NA>ziyI6p4BHGn3;!|J8h@C zDBC3aPWSn`d;U{_HX%J_!g?;nPm5hI>X;l6Hkpx=21iIhPhRq zUEWRJT4$mq)#NK^T+p*nQ8e4s#+Y01Q@*xfe&P1w=A}Ezr&^CVp5f`-*RH*_p9H#u z&GaPJbvzZ=nl~)=N#fa*w$gR-+w#8h-xRjgi29^

C3{hqj4kr+SH|yH>3UrX5fn zQgoBjq7K4<;FI|Fv6mUceNDV`tCoBBRqb}(wPX}sG#oa(Hhf#S#rTDBf#Gdlzx<1Z z;o|G&U-6X6Tl+Z2HhY@qTHQB(^6Vv#wGy>gKjAHjADT1-Pk~w`9b}hfnX1|9R+=2O zL)}(4BI79Fp3>aW7}eqQL20?l&C+{`^I~&in#cYSyN&&)-;34hovvKhG1oflhLTtM zAM?f(6dTqXw-{F&<`uLma2cK=^2U_+toYBq#o57Str}UE-|$PIMPvv|#})Fk1t*22 zarKG0l0J%LtnJ-Xl&U7C*K3yPcIq~0$7#B0D%EDq0IdZxE zZ(wbFcTH~fSMCzqi?U6o(fXGKT4QfhRpAeYUiz2$d-8i1E;nzm6#&L}GGW$I?A%=71U zGNctzrROc}D&uVn>@Vy$T;dv4Un?V!J6u4d2ST@zjqJxK1D(qFtsx?Yx|xT=z* z_tsp~?Tp zADhg-9GYJJg{PNinR~lyjLl-cYN*fOtlwxDV{jIJX3W(O%HLmb%GAF!%~DeN2+t)i za@}?xK)b8&Xd`81EMp(zmBf_BzD^v2C%FephREhAjVgI+aax?Fo0h3vtDF{s`WDqDxkr3RbT;NaZ=>Lsn8Va}wFXzZGu<)Jk!|;v?=vmQqdx4;KWgY{YA{YS zLGCVHaUs!4|>!;|u7+RQ~oByupXe+n%a;$J~t=ZASHpoRPZR*}MQ+jRsdgN9MG{32hX(Q7zu##LOKPEdNu_ZcV#HjjF z&-;jVzoC28R{M3^HQQ<1$%-2#iH6VfZsqYox7?I!yk}4s_A};}jH~#|9&jvl{ZaK# zbeTgVJJbU8>@oR+%8Pm>pj`p5KS z9$^gU%wRqC=X;9mL(vOpm+f6e5A%Y;J^E*cU4{9Dt4-YEp2g>iHWc?Ni&V;-H{4yl zM{8E1|IE-(b4C{D1aAfI>HHn{Fu|AjUy4!Ul>UvCw;hTz%3Z4ORC`n*Ra|Ph>JQbY zO2j%@OX(Bw<>W1*zl4K18s>6#K5J;`*Xo@`(MqFZwEO3(E;U!`1P#4|O6oWEm%P(>ho?uJCZShicFG>fAZem(gIuF1 zmHQPhRcli>s5UF#D3>X}Qf!r*W&NbLQ!XT>iCD3xxg*)f*gTdZ^k+?H&uiCuXOX>$ z^~7R07=H{8KUg zVpk_@N^F+0O|nUPT{=p(Ts}_WP;^(7sc2;%vu|IMa zG6pc~*yu`HKh7<(H`qp^qt{$(PU%bI6T`8>OQuNiPiESDsN~z?E9Mpzndm7{Q^l*v ztuxo}44gz1S;6}%W~v}F_Er3bL<922`;t7VUUpeNOd(f(tz52Ls+^;AD!MA}%kRo^ zr3{HD`Cwu&zD!ubOJ^@(4Q8c8SamDh&G9y@%Jq?rXX$2MR&>d9s%TH~!D3;_)RJZ; zk4ny$U84rAk&NC%JMfmr^uU48NA&ls z&is9XJYjv@8_}>NVah`ZUw&G?R$eGSr1(TBRt;A*R~qDTa*wR7>>EjL%AZNAL>ckF z3vcnduwGC`YA?O7p`l8Qo&?A6ykKP|R_DweiyMK%iRRws!=>*_x0hZn-)mj(=-~R? zbELYruY-RmX30|+?>OCJE(&(Uwo3R}v^?pgm?;m*GvrC~5Aq)rHzqrrw+yp@qXtRMI{gu=MC@iI|TQf5l2M5*Yd6ey0! zM<@m;-zqay%~eYkak6x&TM{ohn%pRHdO{?2lAxaJVZMl*M`fpRfmbzOxbp0W?9FUn zSE?&!m31gNTy(KG+kD?Vrp!>zuy8E{EAKfnJfpnsnwj-C0=c1zNEha1?jFJA*rV~E zigFXzCQlRpC+n{CDENxya;4&=;*8>ga*1-5+%8dy>yu9^2Jet0o=W;zEnlX z9Lx%4*FW=A*^BMp*biC9Ruq?CFTGnlq4;z2_0q0obISvko)woX&e&$Vn^uQvHv5wC z6jGPSZR!X|AvhMh4(|Z{ElN%1h%M4iiqV*HOvJqOM@2*-QD!KhBI1w4#+1X!^Al4O z-oy?PB=E0t8Z$S9w+4C#w)zj(ZgS(9P}@|izVgdTr=@Rc(~`X1a)JWqLoZ`K4}FLwocS*iH9k-QvayPQ_&=h(u|LwMm`vjP!VU8^u(_!l$wr#X#jD z#T;2Yw921yAf;E*k_1+qR49qbzt1_vb)&kRJhAemt~cH zZ2r7-Q~4CjWJ|zurQ(kD3+IF?Ii9fW?u#_UhMv$zSOpx4e^JmfZe~J0bnEw&ITC}k zPDab-;u-DVWiREMdQd}>iRKk(Qu_S0EG z99H`i>%+?Cm3=JVmHuXKRKBJnr?Mk@O*OWyu%<`Z_(*{pZmP)s{i zMed0AfsZCFN@*hDOV3EUN^eU?OZP}Wmpzv?mL5*&mHb~)ZQ`$@g$a}6*n%oqK0!ybb8&|fHY83-UYF8TED}FR;o<4u zDsf2MM9fUtmn2Ka9=u)A>%y5{j4nlM(lyO=?SY6 z|4tg1d^XvVOeYUXd6beM9*8GYkK#GBo+4qwC-Hsb#)IPjxck}5m=~y-k;~{jR98RB zx2pPsTj>7EeaH0*&*R0|##tX&lkHCXCWqMB-8J2v>j`+RwGQ9RhKcZ)&dBf7LuOyj zR-PngqhLy`1<$`6P52-hoOCVe4!V;VlUF8pN;;BwDe(;YC;gJ}7VmqH!`t4U@h5Ws zVC`niqfdr%0-aC;%2*dyz24Ii+k01U=V-iTcfu}mTz1r;yW&hdTNbQp?`=|}^6hN+ zC?Eyp&jjzzls0L5q9ZgJ2{6_Rs!ixCp zxHrNq)P`QmU&Fn@e#Lx`&JT-1#{)8dLH*{sJ=GhlBA&ILe(tTV&s;~HPaH-^p)=W? z>G=*-4)RdpSy^YT&-ITD`a?G&Z0a&2pQYvY#j|y71XY5Ov46&$#C!R_i#T}V^)a5P zdn$S%$`Z9ezsic(^FpUUBzVd%M3wjy)+EMidTBT(_{yKtaL3oX_MZ1c)y*na)k}A= zYp#p$@;jfn6dtGNRMix8^%z>yyRNR@?H2`QAuFC*+s_!v>dHywE$4q4(@3xu)zW{* zv!D|at|c7C6Lg&u_Mo0dTEb`XTjKVk!pbti093ZQgg&IZ&?ksSHSSKK_`m~Hjx+f> z)f&7JtZ6K$YE-57_}vNae(p;ip4aC6qk4J`zZP$1)z|pHLzVmm;m&lJI?f!=&c-_~ zU+{;cO3L4;EuoIP9XCI|AbxLrg8HZ=f#e7IXyZRWrAG7%FFv_5NJNuln2L@=)H?>Pyv$HH9^<+Sb0Za8fyzRYNUS0K|ngccQwWYNv zsO#(B&=}8j%?W)Lj-l^UX4GIh$*$!1xc~7^;7K!~AQiP#+Tva7M(AGK5^pkBpgy`p z*iA4H^^BhI-lA&ZIn*I!Gk>90(%F%%Au9O7AB)bFR-de{sAhM~8N8)@sisNIjOqo| zEAdAA!n(%3-Yx2awVJwu z+8(vHYyL!U=@YfP>PGl-eV?JuwAw!j-Bx45q6m*}pwk#bQ5oSFdjh8`Hx+e`X7a=Q zEit*M4F8!RM=$~PrA;x1P@~~Ke>nQv9_3y|P2B-(9ZSd@!e~Pkp$gX0(9+=Qz#V^c zzqsLu??c^F)cw6zH>9phUH7`(b(yGda1>SCd<{kZ7lGHov!N5={D_ijgX+^8nXOSv zaTjMhDpq#p9pk0qo)tf4am=omfvDTAM_<8Rc#icH>WJlVzejzyHtdP$Xt#p#H+2e~ zEQa81;xB_&0xi&U32z~yTIoyQ3*R5U)4nObF1}m7L#VEKtzojiW56ER9b6td6}}u< zM-N7IeLmC0JkFZM?t}V`i%>1l&;7tVfV$4z_zb>`KN=m*d!u%SkGl|Ww(jR-x$zb%M#?q}K+2IMH$EfhrJLmHknaQtiilLK9X zwdgtC8TElbrW2_1)CBZxs6&n2uBhDp7pH_HM}5l%?m+YoFXXL4t?vH3aj2`e6;=04 zs7m)MTf$z$x`uk9OBffaJE%U}F|sjyDD*BkHONBGnn|dMRny>XINb1c!+O-?q*2}P zf}f2p$uoknq0J#r=yv#NWENdP??L^xOy)MGmSsofljo?@dK8ooM-8LBs8KnQdkhtE zr*Jvko196UJiOPXK}8QKt0(gpR6CnV)zBZI!sFVoJ+v&;5L_K}1=T(|7DQIleALmK&hRnjGY!lySV7io_C?hDY=&C3 z$2c|)#l3+ZZ);HlYyd~XdBPrwdMArmomofF3wAZCYVD+M({lPdRLI^CR-i6KZEzZ@ z23`!T4eSaW3G@pvP^)}9WZOEpCm0BR9x4ir3+INXM_SQOP(Si4H0%~54izLvvu>gX zRxxV``*-#mRLzg)BymFQD)trBnfivk7Im!;uo|>j!h(uBVb-wzLnR7R%K&*)Kj>#;Fo z2D($NWd6(aFnh61vR<=3u$-(kJi*=%PyJ`I8EiA_Ix0jCU}du2F_$n^=pEY^y+RIC zJ*a=^CiI_?LFkWj6qSU6sQmhAh!uJttcGXghwQr?7w#0f6=Bk& z={)oxyGOl4#i%i;#WfJUfw`z&yq)=)`5EgJ>lW)5)~75Ls}ZW}4q@?Gmr;4N4{94f zMGrhN;{$rVrcw{+Dd>j06IH!4BKq*MaB8?L^eA*X^be|{?+L96{Sqn($--^IU!qE< zBitmiKVpeA#v2;f>9*8Y=z~^8wMS3AON=0+J98vDE$u?Ds8_HwFSCkiVLn6sz+ae~ zQ6IM}H2Mx>6*|9#Af+jkhPqFWr&CZ*d?)DUMec=j!V|+?!f9b$SQ}P`T*6B&wH+xH`$NKg7CT|>*Maj+{rsP2b;gzunh3}y=YQ_W_sW^Q6`LBGz~%rW@h zjwxo=Fz%t_*(g*keTu45OQ{xAF};Oug&MtY(XDqTdV1=^Z}4{bA;4N3-WEO_K8~vR zH^Z;PRAexyy&Jg~DFMX`>3g(@>Q9ZKrbEA3j6RGn(a&~2<0>PU;bm~q=O}^6V+I&C zj7s!1xQfb9s~A0@&v6U`b%>gbYM3JG5xs~0f^JLKMlM9wM!vxKZBXIZ6uuU|gX)&0 zsB6uP_(5%}$U1Z{c1Gf8E!~Fxntn?+qCTZY1N+O=OR9nD!dQeViYpkK7)Jr;AI3A_ za0h(@*1&=mFh(=FGE}J5ejlACmrCWE0t{l=b*uhEN> zK%9m;+2he`XaZv}qZxeV2UHS1O>G9n9Vjv7rT?YZL&H9%Gw49%UE~EQUmh8W4qP)L zb0d=?VcTjWE6%o?y>B;my`VU;^p*y3;;WBC)>Z{(RJ^*@q#z%~nj4VcD z2Hr(QAIg!~PhzApbPOKs_ixB|CpDiMNj0K;^ec?9lb%EOqf=>bq$py7B)>(y+Qs1f z_Q(oIeqJOeau5}YizDF(i%zBo;4O$F^flUu&Ume;5!7nX`~&qnRYD~KN(_SuS!RLq zzKqrkDT4()_F=0<{o#{%-+nAKqd%oUb)c8@8TvbVCfyy76KNrBjrVK;{(*CNj#^_`J5kyX&>hY@SU z79sUAGw2cYI&>8~0gUx@D)1jk&7pGe{`+NAosC5eAv?uHo$}s{R*Y;^Ll-j=7>Nu% z!%W>oP1^6Fj|-_uR8zoxM4zJ%(g)~GsF9h3ipHgp$M8@eB87mx5t3dL`72_89py)I z!EYwrnO*~^KhuZkn{))7>_4ZbQnNwz8LE(~25ps~JsG_IgrSXcn#B-+`vK}XDhI4a zmDbJBYc0h_KY~Z7zIPOo>j!$9LCYEd;YQ?9d-)MNe|m6Nk!+pVDG5Pe+h4piv84%pl1CGbo0=#Dgl4n|U7 zJq>`*p~I+$?2HI#HFSCaYP`KT@*hYD%3T)LBhmium zlEvUMj5z)Q$BN;-4xq00OxVI`syq1Qq2D3S-iPEiK!QWC^@B8Zv=s2GQ0X&^R-tmQ z2$0+0x5f1L(8eFZ?Kd==YDx8``oW^V#F+O%Z7$vgDy4XgWY}~aEV!NuqeeN4@dBRu zIBLYdL4;ZWTy@}fQ}9bhy`Xcz?L8QC4Ly-=2U#bBx2^D(0ZwNEdOEbP2YlB$K;8?z zegKM5bB}5Z&J6|RBh(#O&7TVbo>}7`U0a5h2?al8-Y?5w7D4|E1~o4pn;?4FCpje;YV(PQ%+g}DR-fI!50DfKo&nu}QtO z01WD*p3_Rbr(S{A_n-~isda!n5E_y}rBGF%_$>UxQF=S*o`AU39JKbLhhZ-rJ~bWx z&w$O(r^i7Dk3ug>XbbJ7dGLZCA!ckqZN8O&eHR=x!J0b7~1`o zx&o=}Ma)21FhtN`8*3TEMOn0J#*l zbs4bNgQmI2H|7FPXYji{G<^&x9UIm9sq`xN%?r@%GxS5yECJ0K(3Qckl?~KS@XJ2| z`W@J{7w`%o+c&T?2Ez-jze=5hW}k(YuYuq04Q^*qQmO%2WF5Bk+{30rx4mdkG%3 z5Y&^*>j!AVG4vSN1W(@^Ubk7)lhva8%VWgc>lk%6piGChEeGUr(5cagCFAKu^a_0D z0*4*o&2{i77yLHT^|S`I)dspc82)=5c)kN#v>#A&;X&>}=l{gt*QjxR3l#5wFIj|K zVhQBaii*MPrVb<6p*eqH)P3|;(7PNSZ9X!FNvKRc1RVc@{tCywfh3k8o}UDNZo-?` z=~}u9I-U;5y{SRq`buzfHMIpXZ503RWXR&qKyLlIjY75QdFd z=|cK8eHwDy126tHJr%MYj0i#WYZ%=J8aD!%tcIjl0yE;p?!XpJu*e`X1Re65w$QbC zplK!a_c&yJ67a5Ky9o@ggWkj7#CO3NU zb6-e#7APM{cR{?E42-@7W?SHC_s|#Nfl6Q%#Zl#6k);tORZ55!dg$|xVoV*9$T}<1cV~L17UBJTu(3_di+^x{z4S>EA zJpU1Pwh_k`KnG?*!UJ)x1aOIjE#UK2cE^{;IWP@TQe29>;LS9#4omau_osjS}=<*kU z`UyDwDLCF4TR%u0747lcRM^x{uz@Ss{)P8pVgx>w44di>-T4yHV?1(>9BA@E$apQh z#!C3C?U4O=SUbsrI>6t?AV!tJE-umDhr59IgW4SE)^=<=pv~XolLO6K0F57k9O7fhL;-9W z@LqWL9}**4{R2i_3lBLBx;z2C>vO>E5BTG7 z0NtAKe^Kj8aQTO52Jj6au7s?2;O_+3Zx6_$5AamsstB?gBYg0`@Yk0RqxXWF3qkv8 zu>%q~06y%7wfzdc`U})vMMQfAE4D(vDrq6?DVxd! z?5>zQ%!gJ_gY`@VzfZxES3;lXLd!Q|`wDsAAXqbzb$ie(!JJM2Ut$N`d`Rv!_sufn8-OVADQKDnD%VGS<+`Xh+X-nCzc~-b2>j9DPdnf`7#f!f z{q!TsQdqkv0o;3#JMk{RBeVVmmirJ?lKn$~tjG2eaqS)W6hICbhnz+i^&)#}1uff%y)R)|lcP320{Wc|j%Q(3nSzX{44Vzz4&H&POMrJDmh%T_ zJqkPe2cPqh@*QZ`b8N4GVLi4Q%-@rd*K~yJT4KC`(62?1?ij#W4w&D8{$+r^6I@>l zEm#bB&jVM+fMyb3y26tx;fsQ>F%t3W;9YJ+rC9)z%v1!37owKzTX0kuaR|~MFw;^ zO8H~NipSu_|2SR+iH8s=8%MF1LxTOm^C{5vUcg}~_&pDFjt35_vA+P?@JUo3h>mxH ztkWU!=8#xA?8HmE>1y!N1L!2fG+}!kwW#;7`wIAwXV5`YbbeC@xGp-38LbRamw54Z z7>~%k1L*G$3a0^TU+8{6@O?2jJq#E&hhC3@Oxi=c$$AZ$T?(P)bA zfrS@1+ywMIe6zy(?!oI7Lc^*N-;IzFpNa?0{3vu4KY`$qGy$J5f3Er7G&;|2OHv00m$|hC^i9#6S%#C))DXb0Y}O~{ReO&7dQlws~Dk+M&K(1 z9c4Jjg%uqoU^%hJ2RC%UOo;DsfRPGZoyvLOS;dkuR#1r5jt-=D&_{|JkJh%<^{lPBSS z-bSUMhn>6!7C;}6E5We{z zH~exh>Wl6{7SE$xtVdo>Lj!_z9BeNepLAGr6KG*GSRk>(=Ag74JQ6w97+gpN?3gGX z)qq$6N?&2D`xu+7LjHvKy#q6`wa8=E;eV37E{f)-M-kP(#dZi-k$Eq%iW|T~53YML zk{#H`0(vS&Z-5oa0lNdfbHL>kXka?{P3R_e!Ug;~aK`}~BKlMasvm=9GbBg!>;}fZ zhhxw1m%zvcj!yuSWHH6iMGx>Uz_|_3FQS`updYXL0Foa(4Z~~mVXgJp$3r5J0O61W zTKfT7R0Ifw=BF4P)pemue}l6ZK+h9wH$dGv>^}teuj7}?(6VR1>;<-$xVju#;sLEz zj8{i3fd+C&1_`JmAE1Vj0m+aAm1|3`zi|k8oZqe zNB=@ZKLeUSV0#35AAs6=&_lH13C@p&ri#EjH;(;(ttFb(1e|ULIK&I;09^^&MFRog zM{J(@zct!Az_vqPc~LHugBD_4&){K~t4I>AFSawVk5 zrie$S;DM6CF+Mgi^2AoqLEr-S4m!<17n)A(@gHXL^Bs75^? z`>}wUj_;yqlosQ6;_+j_V;VX^4#V~#i6SIwC zOYj$B6c*sd!cx*fw+gl*2Gtp$I}P6md@{#V;C~LV6yvNk;K-w@fqgY(A%eWgJj{Y` zB>%F4-*r(a)zF>_;6cOF@!;i2E=fFNQj`u7ebmvh&`1T4vZGl*Q}_vjg%og_AX+uU zmVy0LY$TRsM?Fa+$V83n|0fUfs|=e6TwsD1lBh2tJdBOvtHk)R*hr3$h5ZPy69KXs zbdgBo2ghU>BR9oQbT0qu-GICch4RGUurx-^FU8%q@H9964KM7FM za0Eqy@JRxELU$stP-0WzlL8zPagHV$)rgFeaXpzYH9)JAag>X7O)}q9;9MHIUjvV= z#xF!K82Fv+2O&KsMp8!M6IjVn?kez|Kv6*|&43@FwKZrX*-SfZ#Lu_I|7}2(4%Br= zcGn)afE0d(KQvIXM<9*vXTkjWpE?7U9J<8<9vWaI1jfXt zYOq%iKEwmM2H28(iO44&^pL!Pc=|Zt!^EAqQdnFA_~(U3@`95DgEH(98z&hvxi>&; zgoU$-cOY39@z}(V652>sN;E+W`St=H#Ct}t!ki7v_>c_~cs2sX)fm?rm7WG8nBnEB zAv3~Zva(tmrQZj?TNK4xgmDVt^&)gqR9Z~%CWxFY9WY7W=L3A=4dUTTi+~}qU?Dou z<-v!uA&Ug$ruU<9$Pe3fA$E}nr3YQLIO7TS{{ucGHj-J=J?K>sJSfD`ci0aBYqHMl zfDNm#2|*(p{3AA_f+i$`TB2}!BU3be@&oh23!M6`bc$q}#R0-PHdvj%)C!@TGQ za3xXoKV(S{Kx+-oE5P1eP)hWG%pM-$oLU?&LZ_C)45`zn(vdagoo1nh}W0nB|nQ@coXpN3<2Dizoryj>2MzJF^ znq0*2VjPc$Zh3GW6FMgajYLnv$cClhZ$mVru7W<1C`GbZGRJw1ab5zGx5yfvfUdjv z_7apILq2*Hk(%UiBxkw`dR}4wC3x`~N1dSF0xVwOXgOpngsxeko8_P;0;nVc`=bA& z?>wN9eANoBl>@#V_+E`7vEtfX zWXR{hPvS|e808o+u7VunpaKo2jHp)lwHH>!@a0}ly ztcLs({pBSja0^G@Knot?Y$I?Xxf?mF2pnKSw@L0xG6P?f1H=>X;9WF0LNuJn(jC=W zqQQ?b&Lhx!2RRy9Um;w23wZZ&UO{v|R15rz!S4d_%L`i}Ss0O>A904{E@Uks0?x9c zzLX0a=fbkc{96RRaA0rk;8TQ{F;z!%O9{?)0aFsGhz_D_I-rtVLJw@7;QKpZ^bfYX zz=~w%{{f@-pzk&0L#&_7=Wf6@3UCdX2%C`gAO z2M?+s`5I^z7yCp9$ZRtNYjQxQew^(GE*1C?O(ix&?2N1xn4>h39Fl_=AO?+MNRWcJ z$VNm|LaR~`J9Ic!3vCGF`3|zG$G{n4z$H%+koBrecpoNKl*@rH$tkShdjT*=z*RSq zm%juKVL*EhIX?t+vhsZ!cZCeFEebJ}%*)A$@tAd&fQ}Hpk$VVQ;6dUE8-GdG2Db0Xjo$tfD5w3F2qIj-=5pOv%>(Y`a} zNwk}VyoSV!YUpkX#%c_RHbmi0SovrLF8BeV5i$cQJbX2+#;R^hXnh5)bU_bQz>{SA zTyP`;3Z7&9I^6YX0q)g7gNekdafA)nYK&G4jeQ6HCjoyUVAdgG=si2 zKt^PSM%GPO7%KxK32+9PQwX7jesGW6htWj+NG!(c2&gDZ0efkKaS2y_kU>vCYY7gL z7~K{lw~S&T#{OXZCPU;4(TeD**D&NWiI7)ItVeYOXG6%!`eSvlA1JK=H#4w8)(4o7 zmCpq5sS#o_Swl_)ec8ab2=XEK9EX6qVptv@>&X*AIf-x0vC=meR271%vABn^86&HJ z^DL})&H_hTKs!Fi`tmqHmx1my$cU_vegr&XK{;7F6F_?j7K5-xsKpy)4-iALKwUPt z#sEI;u@{ELRf4nRj$B)e69IK(ttY1#Z0Usj>Wh^ zMAczfS)BuW5doVs^5+9X^{q%MQMvw(|amXH8iNX|>v??|rBz`hRf z$?8lUzQq80@(Wp~YYx1_(0H=?lnzR}0w0nABth%4uusNm4Ni3fABYX&kZYR1Whl3&wmQ7NdYnG(-BWf?1ikG)Wc^gK#dC6RpX3!==8_Xkw!R!WVat2pBW&U**$zd~dqE7Y&S z8yBD!;(rI?z6+j}U`QfZ8E_%9a0+@D1M14aQ6dX>G-HVa=Y6=!2)b&)m4s-%Xac`T z>~lpm)CWl9&QlpU>BTVGf?dTG$Y0~U?chL+h|ru)@jMA zbwM|)txle7xH)6F;9Q%Ot-U9~FcrpUX^`3(_s|sX(P=S~!g4{{oOLT**!T5k1$%05e zOi|_FXCaP?;AzMjD7h0+i>(Cozr+9Jd6mc5OgNuNzW`eKJbJYi+#s1(HAW@*QwgxJ z;d~DCojeOhY=*3pIx%7u_IxGtMOTZNnI~|Bt1sfOFz_+gZ1GF3CCW?(Xz(Ezsg_#a)UN{R73F z7K#>kIour%J2*IjbHBLDX7jys{eJo7F4^qP&dkod^Uf>J10#xtSyKwfkoOGjR*@Er ze4xlKO=kXDb% zMcM$eCL<~3hmtw?hU5d1>cR4MhC#DI_CyKJvB4WziW!)N$R~{A9gyTfb^=JSg=0uV zbHUw^oIv(K5$=O*?8sm8pPi3}@rkOyB4a>WRBN46Q1mMXNaPKhuMK%ItOG1`gWYlp!hh7O zNJEQ&`=Pq=a1OE)p|wE|QXhH7P#ckD2U%H-@Hql%8V|1sC>iYsqo6Ew7xZkA-ia&+ z$le|W=S0EpsKrrGLNwe9>G{ZhSFyb1(eSB0+yhyvkfjfK1*74PQLsiK{~Xf1b#Q-V z&x?T?^6)~|EF;_p?N(KAHqr-?jUTlr4$46KImyo2ZtNDD%{jCiQif4vn0ZKw`cqn=0YLN!P4IJhdZ{6DhKqhnF!uV^Se z9*S(Tj(3wedyp9WDkxgZ+B$*z0ivMpPd!?kC0x7>KOq? zkxg7%UN-7)^?46?5y zJ%oYtkaqi@#T4yq(98*gK7i~JXmlfc1q;WJOrqe0EQ@^ky!>yUf+QMKE-#QagZ49M zcZv3vNWVbx9+if4J1@*rv@b@o1`&DEtl&~kY&hgf&4_sFK91+S>Xs;3(Da2pH~B|Zw@%>0SS-xxDF@>*+z?DRY6B= zAh}UI0@4zZFS;1+guLSg@N&Xur0?axieiG#D9RXlxR9(b1^pre-e_ekf;A2KiEL1l zLimKV2(-6Gngh}Sk^KQ_4(YJoA$wUato}cs#1gm%(lSu241mJI8~LA*_J(X(Xgx<3 zjSN`1k=};lD3Bi#c~A48G-P}H4(I)VtB}VE`6++Ear8pxXTe|Oy+rp)FV|X7ZN9?V zk1Rnb3OEz~C&N1(KBbo*Mc%ed_zhi?38j99zxnV+_L@|<0$qdrW65v^(pukx{)H?{ zDWFfh2JPZwc_}E$PMxRi` z4JsQQ%P7A)dP1m{rBF}QFFEk(zo&?f7QqYY!=IoYXoRJ}r%&(~`5KXj8AaToXO{xH z9kQjM-cEsE-oalqQocbg(0}xdkaguhJ7I45_f+_X^d9u>8@!M;w;1Y%`V!Rw9Yt2f zQn()Jt@$v{9Pka*wHU@Wnpl*7ACwPbT;s zc}bBLgltg%%^PH?L^D_hdQU<5eUWb+?Es76Zy08r4f+UaO-Mqa9S@3D=0VnKKsF%F z60K-xmxcTQG{`drl!SIRNZJ$Sas&fugLbE0xPuk072phH>kF3aM(A!xavj=vK@utuK!tqk=!BSJT)9e-b56efpiQ7?3Nv1 zqd;~;v|mL#Wj*Z6k!{cq#~XpfMxT&|p@H&{wkpDYMgb)tOAT7_!q8U%*u|sO6v_M` z+zDwHNZb2Qt3#_Ssy~WPj)XM{?Qi`cKdZvM(29jtdZa@C{iNakx$cEybY^P^2;k>kJ2Nt^)N6fh7fLT&PSE?%5jNEQ|*u=zvHo zL)JN@Ei{6=)q)x|g}VLc6GkzI$Qs!IdJWaBTY0PMgLSSs9BWwKXVu{s=2qji&4~*3+hJ0Q3Ler7Z?#p-wjy#1JSQ+(jq#{`8DnKk@v@8`e=TIJ;2HG+ZtZ_#8jBM83Al7dxj3^D* zbf!XlXFa%6ZMb(g_>R2M2B&U znvxCHwj&VPd>mq~HbZRE4e%`OfT-%LAkn5ll=F3vy^mmDJ{fEkIdFYqx%~YL`aK7p z5c0xA!uSrt9^DAGxG=PS2t-Bdp&f_8LWuH?p2FV;kV*Uoa;Pgo=3N!6HROcX#Wq7e z^(@G0?uG4v9OjkSQpoT<0B6+1#=x&S>?!2aEQisu21ZRTM4qpLj88SNBJGq$NHrmw z`AMitNED02v7s9xu)75P!3N^q;OgM2VDn(VVE+x^6vPeUeX&;P zmrzz{1mtNph1S-F?490N5;h(3$7d6M;!i+LSV76@Gjs`U1P(-+ZO<-Y_p+PV7wi@G zEPEc%BU-W#m^Dln<}u(Je5G1Ya{*Ie0b#?Fu$$0+h?thfhJ?^Jv10I4;Dn#^_w~;4 zl=_0+(;mNbz5ORwoHyOwz`4aS+A-2u;7oV9T|Jz&U8micr-i4#=cc#2f3W``pp;A% zzlsY(hou>^0azF-!D9#o`Gu;=Bmz_MUFI3f@c;5R_%%E&OceGD$-*DPBw?(u0oagg z2%q_pd=);QvvX;joU6qaFz1=B%v*XPpiR`K`U6Vduf$WlBEA88F54P@3E8?;r8=P+ z!LET$fi;1Y;IKf7*XA7IEb(OrUVB?PO6{XuUEP~q9o?s0`S!<-+pb;ip{~l#jqW^8 zAI~?B+k4gb(%0DEHYkK@hpLAXLu~l0>xfF!YuZNZ00AN$xV|2{cnIgcg$YEA9BbaM+8z^Bc^)uCq zYDDJZ^>HiK6`KM5eLdt5_l1%|DdNw*W3CFG|B2JZ1@5hm80RWiiL1VQw<~C$Y5Q(J z?yTpmXn$$j=h)%e;GERtoqh~R8+BoeaezEPa6}WL5Pv5-4EX~C!@q^7pb-2k^g;S3Fwgbg;qm~CC4%a^d$N^b&qOIwIu8U*xAeusC6@7$o-SvPsISf$aP{eJ{|ucI}Q@- zqc|`4r(flN5uPD^ao@9AZQH#k0wvy-&bHQR<~O#Z&W_Gg_KB8mfKt@R*2g*;*nxTH zCdYaw?>g_&xa)h&{^H;UajiHhG%9S7{e?TpY4j(`PC1ypoSz#32tLmQzwi!F1;5BA z$R`4dPp0CM;#c8+!b4$!kRUYVkMUOi5ciRt!&C#DqepBl_Bf2`3se<4kG@9xsf*-J z=;i0w1pEwkKAb6~iN$`x-#K8AWk~BB(=CaP?Y`u|DX-hs*WALA2pn6fjuzHI=0Xc* z-(s5&{Dc?nAMEe#Q=KziBb}3-l3M{IqZZ(K)CkQC-D5f#u+ zX*<=C-bJ6G29OdUn%u|sVn=1?!nLI@ewpvCZ$RjstdZ}QnKY9wAB>H0PSRAXY?^s6 zU=#g-8uu`Du`ITF&96+ythemBwrh65+0Qx5_0ToJn-u&6SRhFulLR@3xI_+PJ!~}d zg(=~N2q)xPrBS&bczGp7dlji_sSGG5s=BE5DqqVjf>+*KabLbd$m8GeO}SwpwSVPK zajEPNMg$xq54o7`%`B#~i7SAlp}^+L^x@vpcyXzJzU#YZWB5CS5*{vIQl@sz^xyNJ zvh*!XC^}*moEz*t&G(9vOE&<<o<IZa8C9+WY_0Q{iJ=c?Y`s@93O)aneM({ zcBXKQIo|(56rBBwTsc&6Uq^q}S6j`J!G$$Ut*s5rAIq9rS$lO@Yu4EpyJ+t+596O6 z3Wi^U*22mvlOO31>_WLhp3D6ZdMX|(Gu5-y0&x3UlzS3CcE# zko>KDH!w*z<@az6If-q|hM9iMb!H#4lU_i6C6{Vn7qz#T{g)g#uTiXQdii2%&dHI=mVFTMiFd5e=iY}N@mQvOpm}Vx}%#Kcu3O3%p z2-X&}_e}7!lmwU~!Eg_J12vp&uIQyIkna>$$!n?p)Naj)){S6Sv68cm$@E?UW9S zlYJBY8+{KP#~gKJOTvfD&2#T&&2#(|-V(?tJNjc>_Lic3mJyCtmea+T^4pfWi@z6L zFwL=_a80nEFdw#dcTe-Z^}Pw+4OJ5beD*9oo>fGZbf7-wIeJ>#-BrJ+NUR znU`b->I_+zTuE%f)iR4zQ}$cf5@_d%abwODYp=k4BGGp;@BG)Zc|>pkeZ=+jdzaLq z*%wV?ofoW|itpzvFIZl(t$0XDKl5|P3VX46fkol;d+&L*zJpSTpa`%SVaw=+!ZKx) zrc4t6Y0ypE*3iOu*Vxn8(NJnw7%@v9Fs2z+0Q%xK-7Vb(^;_i|)qFrgJgwL-6ac5; zKv)r5bN{jpnCjHOgoZptmXU?BCQ?^G@|Y)G^=@(JyZ4q2axTN7LJ_tb=_AusmaW*6 zP`Bb2Y0J}Q7MLv!?QhNV^3-|%7S$=vD7sz}Z!2?DcC<3%*2|v%!HCs`Zej#=3#%6H zO`CaIenGuO`(2~fOjdQ&4Uha5*)b~77-1M?IH*5w5Td#os_Pj*Ppqf?TX{vbSDmLi zsdNad`AU3UkO|pb6@C$GB~8Q|;PO?{jq!7#w;`XjG&IBi)V;x7$GpPaIxNX*Su!%0 ze&$P*#FEgK(z9P*rPR;GEjt~>=Bs&u%nx}Jic^Y0rdaC`$2QxwvhUVBPv1aXATMxM zwvRkSt|q3_8T?$uWpxKY*S@4ZtIpE?X51fpB~~(CH*kglh6PcVB9+FfhGqJsh|lV? zs`=^>>Q^eKB2GS;w{Qo!95$M(%)Mt0(N!ru(Uj~-uEP2O(&g*Wg5V?fNq4DjWtqlv zCtTfcDoRfIo~Czh#5($RXYc;pCT&=u(t6rDtmH$EIr~*UURa^Dp811qgnc70+Rk(2 zdRGPh4jd1izE7=e zt|0Gzu_CQaC-T@^JjvYn=na;v6l)T{WMnB7tBjc+1O z=?5BLM7jWRx0PXwri$vEvWE7FE(0XnY0JY!ALZpTZ6Uo}^!icKAW89Uh6P zrQZIYt~A#;d%o$oXKQ$(uWjLxFQ&Avjw#qA|Ng9z$-BQD%>T(c&9baSl{Yx+YEJ+B z7o~MAN30<$ZE;yz*f)D30L$!!_(HaV?8cmCnlKt}ouZbmWmIQlXYE+kHqHL1B^7>+ zI}ynN|GeICFmhbft|&6jBlRIuKI5Mv@f+wL3PU` zt5C8otKAP%mN!4KWTI`6ZL+Pq`S-E`(3^(?&BE2NcCz`HhFrzo;ve$kRO9p+h8p?- z>f>sap;AoE3V+0g4FBq8Mf8f)#q0$JCc*Gc`#}9tm86Y{*r0VPR`8vK@qql8&zurbY1 zly048`(D&C>yIDStoZz)WeK*Mws*kB+|6XRE%vPPPmun>n&8jy_JoIg!~G)vQ?*UM z#1PUgQ8!Qx)aS)I;f~L7@y2_#16>(3uSs4Pv$SK0F z^1DJ?{yg`P?N51dKT!<0l(Vse(kt9Un_WZL>!FIXlyCj&fFsg#I4BU!RH z-59VwKM78Cv0+uDpxdELQI{IU*i*4JBlqbaMZAkhH>xA6M(K@hbQM+il<6v?cARbz zppJ*QDcm1?7k)Oc6<)FV)N!H%;N2w1IoPyTx_XAz16$Q$5cEK*d5-rN)7_ zTaP-+O;?^(x7Yt{wCS@oQkHzzG?r*mhSx7`ytpzwg>OP zkZcdyNwwu(DSpu<8j=jXBg&K}_4vpoaaUt|M()$qjyP=S2}}h?q8b|BX{sw3MH_Wz ztyO(p84zBw51H0%Bp)IFleaLrb6#%p zKgr4Ve<^R^X+d5}z0{4_MA=-6Xue(&QLr+%KQPzMvS!;Gx@Nmt0n7V4kIa`Xs);l* zhI!5WOs`@}_zvpchDJs*!mAFc!ur?IUt(IuaK;Sn16_i?VpOM?F~$vAQPD=(Q`JXX zU+Ypu$n~5Xw9Om*5WWF_oqIt4iZ93Z;5oR4m?ldXWBnn=C2LdD2x}X>Hu2ovAzk@y zcJ4=ME?L=jJH1JYBjZ4k%-q;A(EO>8$_nbIU&1XSnyY#VMS|A(-MJxLzG3$O&(-zUlvrB^}Gb;AA#m@@6Mi$tt1HGST@ zN7*m^&&Z+nEk9~}wWaF|H*RO29`qxk6IOt2!MDgdW2eMkfD!z^;!h>BgG-2xvg-MN zz8jD-)lr*n=%16D_}TSsMqXlR6-!3xo}!)w19QEFQDx0c!>xUt?LDo%A3UP#iTA#^ z1HZ@YGWc5n#QW%7TMZ(P1{a)Bx1gCU2Jl!HhQ9wjkq3h*7z6@+E?p`YMZF1 zD9$P_s;{c<$^R$sDfj^?T_hiHH55m<`s4t-1Kvv(1(~tuWOqUpT*ao11tq58fEUfU zYNX0vHO>Ab97V0MRY>cV{470Kc&FwGf>P9*yMqhDAg}lhO>No115iVnmxUo^|G{4Dz z;qw$$O&v9wKruY&EPJL9B#f-S48-l76WP3AVH zG(G>Uczdw;3}CB#vn@$$_<4Qm*<8%J$}zx_Sme*i%=)cRG#5L@`fL05xpG{|?t|Wi zp`XZUTnEKpd~d21-HLChX%cxj%4O^t@j}%@TiZA)x<`eE@$HP)H9b^yB0^E)V-^_F z)gR?3m{pRvapsode%Tp$g|CsyzVwvQ+;TTrZIQM(zfV>H&VfMvdlYf-=x{GnA zxY7b%;yK$!UdSJ#dQpwITS~cJ9#tnQ-teospDHurT~uz|mblT8g%Lk#Zm2KllcTps z?b01lutIxzH`v*ZR<2O&;vdn+$as1dm&ZThPSShu#(*eK%F6IB*fR0Cr`UeMyr6J_ zsSCN5U1GhF5_ncOI{~|m8ypWZUVki3*5=48vs~lt(~Clx(b-}iZ$0b0=&u*-k3#ohqn&roR|hQt?Z4ShreRS@T-EJ@R>U zc4S@E3cfjCPia=wRV`7R7yK~(ZOgq&ZAbIzEa}HTh3%|UyjR3z{}xxa zW3AinQ-!11>Wcn~t!yuH1~o$dO54TQB4%UMHf^fnnDT=@A-<@hGltiXQ|?z@(`7`K z#$*~cE6;Fkx%u*$>N~0-iUgr0GXl_{cQTuVD#8|&7-2p30j;@uu%YWuThr1i zrTbkc=sEcP+{6z(-x^GB$msA@(@!bKlSX{u3dVc&-b&`dxsAR*$l6`tb&d`g#Yesy zwt)_}`;0I@#)-E<`f|5j|EH1U$8q&4fPG&cmHKe zElVi0xkfM@!%K=aNn_sCEZrsRf~A<$si%{KWO@Dz=RyAp>yF&4jFI0}MQ@zff?YyY zy)W#`?L*v~gI!6He=U@-ji?*+Xl^8gdE1Tp=!-^`W}b4cCSb6|4zJK6hS2X+%~Cdv zXdCr=^nTc&4Ca&h5+R`IsUD+Pz^|a&ll7U;fLETwdg%LPF}?(9a1}cMxJ!ZHclTbW zqwHDHM0>upiu~Q$E9KkUGv9N>&16OQh>YiNCw(l+KIQo0ZELSn^z!?Sj3s%j{f5{l zl;Yd(_--@0eh%pIJA9I2Ja?EnNR~1GC=|M8#^0lR8*i&^O0{~p@qcklY{!_VhCS-a zs#%&Uk@cb%7|yC538VS0{9?rtRR!fzU=s;bXPFDkNTvp8J)@}WcruoOZ^QumNUA92 z`_H@b9Y#}wqAdSF@{_+_LFJ^kUsN_6Umu=Q6!$6j?aH)9=4jte_p#ELoTQA)KR9zc zf2GjY;3j9J?V|I%r*^mp+ewHP8q=r947#CEM;X+4qmM;()}NAZ5i;~Wqc+6<6u-jI zKzCUltJ-VGk2)D?(@s&Gf*q`k!7tI4lmaUTd6(vWc| zZ4M>+COK={`kRJX(!^fmWsfl{^R4acKc4ffQd*L|IO$PRbY_O#7C7WyQMCR0*|h4p zqwPzBk3&O!{p|~^y`58nXJlHY8sDFt%2cI)(0#dj%If+jF^i&E4JUsuf3J&=+a2E` zZl)n9k5mZSL6JM6_ZkSzTA?0mX8%#7s_Uu@yq~;G4qzTLTLGniJ5!V4s4)H;VFVeJ zfxVPbQhk4O*HLF{OW(5OpoW?l_`TrHyRIp?a{{#%dsA5DWBqr_Gd@~n0nTeFxtr-q z`&zhfO?U*v6s|IMyvN6-z)tKD3xRXw9tTIxFjIb|}|yzyV0QsB!E+TpNBItD#PiYsi}9 zVNxWv;sdb*q2YlmzFD48?yVNJwG`8l@zyFC>JQuVR}&g~jB9Xer#D-^SW2+q*kG}F zRAz_tDVg@-F8W&Mxhz*RTL7EgN%!C@$Zb5$%puMa zspJA`0DYW#ibKvr&=9B`IOMD6eQjB6;jj_JA6C_mW1p%P=HrdXc8)=*2}$m+`^u^X zHu{Ywc_y1tKdWx3BCtcWdI#9vmG-q&_nix8ke{jEuopJtD`^jRQh25ur;jmy(Th}=SePgL z#q=XHiC$zZBE|K7`38cv!C4g=)FP(?rQF?c?>>N&cG^2m#>Ke8`;`YZd5ESEp+ z>y$P(NuDygWR5=~kZ#$WrOfD+b)~3@TNadjX8SHks(Iu-5pD|@_nU|}#0Zim7g4qN z4~h~EX7uWRRqf+92vP(Se>Cnd;|R?VMS)OLv)z~#HP{fNyiE6^z3d9*XiZzi3-&A7 zjR=tYm`Fa87uiP4334U*k$OS3qcf?m_)`42?4GzRFw#5Pd(%6?wmcBaT=JXqx+I_a zL5r1?HACGpYrISRRIyO+8!oPP7UZ1$RxRUx!6;XQ;3scq`#V!kNd^1!;0DlWD*9yXo&Z=$-A-PZcDe_@dI|HROGfkO(d?WP% z%{Td2Hb6C^c9OBoMgFPKk=qE71vTl9WJ~HCGlT6)q4?nB@UNk6!P(w%{;S>=_P3tj z$+`Y9d9mLTb4E$0*?+zNW?=6>r4BMR^Zo6sUv?=|oxU?CP~6?w#y{O{wpdHE$`(6s zgd#9Y_$gpX)&brEBN5Mgm9%z*Zh@w+@|1k0qJh3vY-+61n4;PwZ=>F&TWjQvqarRT z7O`%op74umrm93pp(~OXhaYh# zdK0Z1ian)P*Bt4Q>~@&M-$B&KJ-jY?k)5qY4OeOhPb&(S1_TVSN6N&2FRsJh?ihW3}#{VHy^a6GkyPD3S zmJx#?4(GURf4GHY_16N4+1ku_f1(dyIi+t?&SW+84r41x=ksQMIg=t5+;OG*RJJ>L zQ?puSFV0t+4|*E~W;;Blc4d9-g96v30WuWP5=WdTACXO|UF>qzNaHZ$X4Ou941Zr8 z6_psXHQJ*)srW+?Qq-UvyACT zY$sY$A1EE8XScB%sHWj)={0CjU9r95JOATA3-d|)RbUa>?f#H)B~50%K^!1|wcbvP z`aC7;lC`^kp6hv$F=uMlog8z?F<0-vSJ!?^Wm7%t9nTkWi7bHmW&JTX@tT@QO{3e% z$40C%4$yX$8wFCyMO=-F1dD;7xh-EK@1r~p9D$W|9n~kfJ>+aWgSsJqF5k_)qa1+P z{y-MQm$1u(-+))U5#|nGBTljdg+an~x(_xBkSdoE$LWc zZK4@^1HFCTB3)+FoazPLOy8a9 z-eI1PR%e;lQpHP&-$MIjPcS3i4!?!zi7=%V3V^Y=P_>r3%cKh9wS~q_k#t11Vj8eq zbygivvszxg2fpT<@i%DzoBd$sGkF5IM*gNIu?@L@SQFim zx=Qr{4$ORfKUj|Y$m)p%u&4a)dK6rwm?29n9+sw&W77B_=2HU2&_qbCXZ7rm=yX&$qHmC>!@*OcAuO!PqT_&P1R!t zsZJYOMz+=+R`lfh2&Yw5)suD0lobU=-kVxWU1aKmw|)nGgACwxhNKp}d9ZU%g4A`*cOrm{9_RPGI-ZCx? z+gy74d;K4+OD?!f?q1I6rBrTa{@RlDru+8Mu4OKV&1m__u6EDzx%}V7hWIz^k(2{$ zJadUz{28T6Gg}@-wk2oteRLZmg@~%kX510xfYPJxuD-2)qBsCtRxmQ;72MBUvDvGIg04eQ)ZAP7CcD1nZ4SS?B+c0t@7eGxwibFB~>hE9MfID*n3;o zTMydwuI*kv&>=ih_C+caTZRtE_LJ@S^UB+>_xgqOQ9Bh|b#eMF+OC3u{Q^l6hjooq zX?&8riM$DKrXSI*gge4o<}TftUP1HJ3*1W|1+RBy)=QO<7pcBy6mC3bTY`$Su*Wu+;~Y_;rj1U-%Y3BW>A zL7W}JfiI*UK8Ks2>@FY0940p~+4AS=gSsBNc1knXnZKr-s;LN^jRxgy`S0vqwi#c@ z_Y)3q8`v;i2iiK4(Xg4|wa=u6fxS3|p2b=qvQ5he+11P{rZ=0#jpAMG5M~&qqApO? zsV>BQe3Wccs8?X3JIy}_I8`?}yXMW$`N>^`8}O?Z*$?4+20BH1Pep@F=G>X2rndX_R@F@vwby#ofUVe-yk4cp8Pq7sQgL_c~t*PUBQ*QDB#9mya) zo*N0?p7u-&_Bfl#DA^m_4xtABk^UJNl@?KVsVM3<;wi|QF@ZAQey#W7N%yN zGye$NsCZY8?C}|Ga;{s_+@;RuWr6H}b6yvIDs5=~VtHvzvn;S)HoGj19KX3@f^EaQ zrFr7BKx;8cdPFW)Bxp7Zo59wyoSmqBuip)fmFtDt+%n;|YJ%3S`Aa!cNaK9KCbpM% z3Y~?1>}B#fag$g_E}(y7f=q3?A5jw@KwPI@aqYndKaM&=^q^1h8u<;L;Zm5XFuqzb zCz)Z)3p#@Ofj^Y}kOb+w*eCeTs~4w}mBpyiT{-7V4~o%L$TKppQ%1+EIP(xs7tb8? zZ#iqTh8JusTW39OpJaPrzGR*Oe7-lG$30(yOQjsq>8}>tCq2d*QUPwN^09D~RN*6; zNX=e@CIVA-;_{hp@@CpZ?OXLx#Y4U&SD#Jg`pG-Ur*Y>%lTIgB0aFzN9)Vk={i4$WLTGT^;sY7q~6VetIiYzL3mm z`%AxK1L=)IhGI2uBa;XXyG^+uVuDUker0t`Q`lYhQU{caV9%D%u4ig;m3WSy#BP9{ z{5v8JB5(tgkzPbzBA(;Vu+g{^ZwxC~9r7;3|7K%Z_!n{my@=jG#*?+EmDCu}*^bcb z>ETopVB`8k{7g(I+Cp+dc6e>5mpC9$A=ng;q>qR-N>>!Ub&0aWR9)|-LOzc!VjSuI z0p3cM76mf!?RB%Bu~xA6vJ>_vj)iuey`?k3b3K?Cc7wc47K=hl!@WpW*s0vWr;`68 zvly#Qq_KyYSM+JxN`)vFHG&>O z8>uc3r8Wl}8cq$p5B*R4BSe5~uJ7Jih?mv%WAqO!Wd5A9Jm+jF@0l3r;673u$XQW% z&75g7+luYqZKv(Yj#~DHju);|{$1g!*#1z%V5azYxFYd4dsv<#@bu5b?{pg>tPH81 zDT{^O>;*9$Se>SkQ^=cyh8TrMW7A}5 zSO+qh7)m(t9~gmu!gmp+mz~nKnStDzqThqPiXUs@8hdB%Tu}kDy zvMwFMUkvfQdmJK7CQ%yjE$jBZfOO2xwpl|lGpBSFe!Lzf`(ad*{fLF+wL|wc( zSXLm5PkI^Td~r+qb)GX4a=nmq)(pMQZxvk~2hWXODCA2AyL1FwQl26iA0xUaT_FGv+3N`ERa z-$a9@a|C3hYzCgfcCts!Vbx1<3oUFaVB{PSoqS&`yfL$(G{tOWDkm=aXOM( zL!87<;n%Qu*`n|Ru{5yCZw~w|H4m40`ime3Ft> zuTmbC59Gsakc*VhRaBE72KhdPnNEM8T7hL$Pwycb<1_GTct>n2>h?2jFUV#;U+mzfU=-Nz`#jRBsEu$~6#w@CBm# z-!dD)6aJj}K$*x5U^TjdPsDbG{}G!8y7~tMhJ+@F6+H_}6N;NU2m9~%OxEg!3-Vi( z?6z7QtYe_Lq`08CzxlL%o^yt)w!4vQlWVkhzyEG98zjq8Y%@LvW{a6>3z42n_&4&_ z;N8q-&j=yKR;8!_y;``)f91Cd7lj4Bl!3lPU!p3J9I*krFYADQbsR*Ku5e42IQSlY6Oqpm$tgwwM`O5&j~3 zgX!^J#6qe$T|zZtn(~K)27F8Q2wRaK1EzjaE*CW1@9baP3w}AYxEYrTIz&G@4zep| z&=;wJZtIw2+<2s`z@y-l!Z7 zh{1p|@Yq-4e&l}RdFJowSy0xnc%-?zXO#DiqjzamVZGwzW{2y!d$^;GX>*z0Cb$!T zyHw+E=TrN(`q*ogkHM~ZC^H4dRxY<(J`A2N$uAai1iXfeTqYYGmXa#b4EjCbgCEQ=Ki{pbE0-OEYJk#6>UN)fhEVro3`q|oh z>Uw<68D@QHt1`^?)Lr2D+quco+_J`g(Y?qw*>Cm#>Ko_1;Exa82-gA5xnbCNyarK? zs?9uP{$@_F3!v>Cg^9eGA1F7=mq0|nC|@V+1f73?JYRUo*W&xao~AFo8}zRY^cRSG zU58J>t^v222CE`Vkcz~rkfW3(J`kITbA#gp+XAnHbHruA27&v57m(qzQ!Er$gg!xU z+?09)X8-5#SlJnDF&;-qgqQrATt(KSp3sMx&cII_!Q|5!bVnu{BE=ih+koeDKd^l+ zCNAQC%9=~(L)#=rC>0{E6TH*CM?I2T?(_O`oxfYgnlY!%JI8y()!kal?6m})`H(lV z#$Ca_!%@@I*Y66X1IOs;fD7#I%fb=Bv$!AI0Bo9H@U`SoI)|=L=hJi9PTX#`m|4b- z<2;Z%@)w`Y#j|Z;Hdf{raWU)|W*=Rfx|l-???WsXc|qI-(B zuOAOw3see>@f(7gkXteUx6)?pPvE^Q!%u*fpP{$X=NLI#n@OXavlqFKkVC_A57<)X zB5?dBvaLa1jAI7U1oaQptpZg-9wn-RHR%WVWvfE&+jv*>#D7>7B1slOug=E}5ViUXu?p-`3ThEq3(8+d z(U3bbhk8KOqMnjjWE9-B64+p`lDR}*SZ5aDzzzyojU8nVrP(1V)Gu@`_;Wz?M+RF4 zEBiM?PC!F%yzi9vjQ57;toxXIpQjb@3?KGx^_n3{9P{1t_YK?&d=3Ny-r!DgbZ9y- z4LYU1;hD0Zu(`koItA*~9N1s`lUvC%5KrA5ERp|GZzvO$NA09mQJ26jwVWD2MN>P- z8eq@*0h;g#;yYf755PZS@37_&mv9NVD-u9^I1YK9O@ZAh0rEhLWaF^}*;vT-?1MeV z3V`9NAyx-_B&z{&Kl6b_cRXgr2HDUAzv1eUksSX-Qhe7~-EccL=v`e%?A$x`wb`Ig*7kr11c z1pDF-)NraAv^xppVj8)Q91hRwAn_XfP@9Nnpx<=I>)@5}V#w^9hOGvMCmQPm> zFz^?*6Gg~`n183eH$N<&@qTW`>GM2*aAiFjn@c9u+(>Y*9 zDF$T4d%#nmg6z;N$U#j2_N3*I8(SB8a1QigLn!wsWcB6&=lN6FSm4F$3{g5Afrros zeQgep0xh+b>;Rw!%!B?mgw4`E$j%Ziu0`mi8ppw6;|Mx(*U>@YOz4KdxKg7f0li;UdKk<;*S}F|xgq;mfln#ZP zU{4`t?;@cjD-d5{WfNc@C!0}AHmuw5`_FJkyH6KQ2Q}PpWi|7FS&4=-NFg`^r z8M`e@2~U7|NPzr^kWCIh2RZ!>BvL)uny?M@m0f_YFh%wVd`aV=k8jK3p=Il_vyiQG z9s38fVD(^D27r%z2#lWh*m>*PwZoLyGvJ8n17%(V)~F4@gRoP&5ULrP4s68N zLW$!1;GqB!{4KaKXosv!V_<9`(ZAELhn6o33=OOg7~uCWftA6GV6xa8_>G7|4_TYU)h41MwWpu zbT#Z8Mi46E6lr&~^ca(EYNHz<+4~zA1!pH3Jxpze?|6H1va~wHBBuHNX^E z1^$l*?d}9*OLv64&Pgycs{n81Qedj;6i$_fNVbp?IEPbVo{kEw5Zj7>h;Fe(NEfOs zTA($xfLHv!*i>vAJRL9wYm4v2SK?|>E>;D0^=RpsR2#;^aA`eoZ$AP2#Z=jB>@-#h zzlb*_8WREhccKh{X_}GC$&sKDEClxRTV!Q2ji8}j$BEj&!(E@)2JGM6V1KvJ^al8TW#RQwCpdc$SccyL3-D!W zq_jwSDP053TpsjRCcG3fxkYI#tb$d5&+8=2z$%bIzXZlcHOSRp3YoZ1fGIW_v&fDB zr{`suQH8(+{WtJGKf*fTi(#A|hFP}{@((XUB+OiFAXW+3lN$kZ@LOQQSpv+LlL1?x z0CLq4hVcI&yL~6jwR+(k;ODIe`$;P>$X)}vz7}TuSIGi(IR&%7m6RL`gjT^?yg6n1!sourwWHG~z@E1Gaz#^8Y&kQbT*lS^oui zm+C_Xe}Bl&ZwWd4wLn7EfZ4tpIO4iPHv2`u@~aj89qtkV<7OqWxU~c6b6KLGmX~4t z%mn1W&+vH_paiT1md!2YQm#923%!K(q7`O_x%V2_rTzw%(;gs&&VcNj3wOXEQhWkn z9_)sG9R$plh_kgdj8b`6l)eBj^fu`qXw7|KO}+{{vD(1X`~g^eUjk#Y5uVvm;7=}* zdc(5_!}D~)$}t`=s5b%6*?M5vyAF65e!#1N3{}7f`2y>b0iIR^Ko>y>_XvlfB}m4u zfIW}|J<=R-BckEka=_{Q1~?kqpbed&7mfi_(J8q4BFOtrfO;?tYL1Xf_kt7|1&AGS zfUJ-Ss0lgHn_q#k;|0k0dC+G+12Xn0U^I*jD`2!<0fz6k!0}fGbFwo0K04eI_*4!< zJtu%vIahwgKsdSpO1KMiI1c*#CLn`G0S>|l;L29RS%|x2X4nK$K3i%Ctt$f@gZ{vx z{Y{DjOoVH&3XBG3zv!?Y*!G?Q&Jx0?iw0cMrm#xKLf;>Tl>qULRgv9fjC$bFQyJ6gnD`yQIS>8Xh!&?E{ z;UlzUIn;PDl!#EaAHkXH0gI*~)D0oO$e@1xVH`DtT3&@QRtEK}56^5j^u=NLmJQP2 z8a(x-uN^u`XjtdZW)`HBe3mVM`7-gg3F0I4y@O>IE;tT*D z#i`KNesIQ8z@|6>HTeKzE+0^El(6!)fzlA_N);%xE}&nuDaQ&yIJ#Zn$?$+j(i(nO zKvd~h;LO_$_fi7_$0=Y890TR_QV@MY;md#|GoV4p00) z=G$+8(^40nj1^Ebc);VB0Qk7WL5e1V?s66MoS$I)UV>S91=`#ebl5T&WfOpXuNz!( z4DNj%$|`|5{Ub@ceeb=vx8*H^8i#1pRyx?u9u05LO35OhrsnHKBw)P@)k= zTU8imlc6`e!|Xs9KXK5bRpArrk5s_OM5sjwJrc1zT?Hgf#E%e!BOl=DBV_Xu_&vXT zmLkLvga_URdI;hEc7~D%0iN#|Ko%YdC@6DbHAgIZ3Gk#4mKqB^V}h&ykEXMLZ|Z#C zesbbT<7w&ww57DTI}G{Z42F-vfWcreHW(W+hRg6VL5FV)8*amfyN(v>-X@h)lE#yB z@?LlP{?|`gnsd(c+>hUnoa_4lZ_?j~{t@Y^)k778Xjqi{s-VtL3G~W{`J_U7)}ilP zgjT->G_qbOkMWq>?m=zn2{jf{ENX-DBb7m_L!^9}3;VC5X5U0P??s+$LoGZG?Rm1C zh@B7ciP%A;3x689bQqs%p-W>y>P%=;L_?k&RR8UbRIEfDBu{!dTHk&AoPwYA8~UEz zn31l<7&-#^NxCR4P?BBo9+(N|->U=dg3Me$VtIwJz8`Gmkdr2~$bQJ19>}u{SlR`; zEF*B`3F?y^>F9^_k=~3HA&tOY@yHt^dWep=riOi9c&csDhU1~f5{jNpiJCeLt)Vmi zB0W#iBPaFm3TRf5x~&KODiI(^4Y&-w)lT$d)Q=8ASzA%gW@s5rK`N%BZj-{z|Da4g z6MuaHyJjL>Vlz*`r|-}Y4M9KD1{%{-acvoX|A!Vrl-KU~e>>DICDIgv^;A+RN`*h% z7$qV?d+H18NCCMCLhA-QiSj|U?_;EoXvPYpxII!Bhbt!Ji3@!JY0yeh8@*7W>WK7` zQeS(-JQY@uHqJ=+h|~`ZME*G7w-bf58T4{Ux66vUoQ!aZ2>k?YI|)`08LS$bPyJCU zoe{Pct#uGW8HJiU4Vpb)qW4;g@;rdvW)oJ}h}HTTN}vtOmUOQpP;={`oh3m1CA~W$ ztJqP`vQU$KDBozLh`2|c5Xw=6vJtIy8uE>LuZ<}0F1VhIwlN5$H4OjuK>Vb$)C5m8 zFtDiAJwmO0hQ1;cX=#MKA-Ym3a(FQEuv75J`>U3)ft1;K z=%I*EL{F2o#JEYqJ*2TtI+3Kpm<)Tm2GxfeBb0AZhd;sJ9T7I^{-mHE?}3yP(Swve z+aYe!RMH_0El~>CnBfgWj>q8&u}u3SOb)fA9jM1RgkQ(AA_Cd>; zk9sf|>FR-cI|^x`8b#WWZ4rM*q=n*j!P6n?rUEsL$O@!2s)nLMF|OzkrWW^*nwu86 z*&5e~g+w%j1cW#Xb%4sI8DgZ`Of{=JVw`}K_Cj8?!tu219F$dPDkYq(eyr3{u-8 z1-?4uHfe5C&rKu^>Q6}zu@td!Xx#~@uTjWT(#a*|Pf|Ct<62|n$LAO+x*}ZSOSHqC zHmoh2$Irj;Xh>!IKlmNxNI&U&2Jj8haY(f~3w`HX*g&f9V_+dswmw8Dcf=|LaaG^J z7sD1bYJ&!8Y0y(8ZBWX``xq@xA&!3#M#cXRJ2H3=sko9tdok{LfU+R{JJLTTt+Qn0 zMl+K--ozLJQ32(%n6n^d77KyX)lLAa|HGf+xr#5B9<;G!)G9Uf8ojr{2ai1=Ot1} zV-A%+Q71?#^*wUn5^~@Ta+0*wGm$f-yiB#|A;Kd9$RT*g+p$}6HhBFd?jxV361Cw4 zuI__JK-^s77M;gF!fT`}2f0DK>}~MB==wf{aS^#fRM!_M&wpXJW*vH1k*=M zM^bRVgXfRKvNf0;?7@8WIr3Z<>`ldJUlq9HHoWd%;iLYHG@L_f-y_F~SV-EBRfy?6 z;%q3{E4Z45a6^N=1?hj2A54s)>xknx^5F^6PIZ;&NL2E~(&71BktF;Y9HP}I0eyomtp zuE!6};z`4owAxAkk`%E?{gQ{@2C^k7nGAk}N)juGXL`X*9YCjC&#H7V{OjYd*5Z&2_g6?Px$2ayX&ZITqW ziCEJSV^-r}`bc|Hh93sD66=D9bu`L04yJ+nNYZU@7(vyDo%A)EV7#W0k*Gw(FeEi? z@*8M$BX6t)LT`tkRE+aof@5DK>}rIoM9ZW5$tP=y{}UOJG`LASGzx!_jwt0!GM*xB zOCrJ2zn$>g0wY8VSWfv6}#da($nk= z&tn*T0le`Wyt^0fZi{e;Xx%pGBX&f{-SFH{Tp@B`TRhVWp_3;VflvJ~{uAB4FMOGg z;H7hT3et@i0ef@u?Xu%oXITH8LY(kE?8L3N92-DJ?*N1(5Ig`S&8Isaj-%0$}L2!mQ?Tin?( zIA1M9e@`0E_b{G4fi01!TeLn?j(chS*M{-=7)qrPW(P+xrdMI69F2T2!6MR{Cw?+% z%=H%|#@d>ccL-kPHT?XFU4U({lhnyyBPLm}Z4hB64dGtHmCcCh6hgU+nqfzLv`^d9LtiqsQ9=O5ICbI9lCNXagIDn}k$k=iHlE@Dw@p5Xc^*i?&f zSKq$mhO|zukB)4QW3CANB!qfqeW& zu#D!zPQ+Xe>xuq#GidK))Sy4{`wv=OCc?HE!U*jqT%=MhiYw;GT0x0nrDZ!oGA|qnRJ^uxjBi%TOzbA6|`A zm*W3Vaii#Dsc^w9_|4D6hbe7v8)Mt&JE9 zAJU2habCz{B!UX9y44_NB3;qUglr(58LcZQ&>PSgp~SOc=yN2nhdg)6%K)sYN2+5H zT7zOXSrHzrO)PpB>JiDSr!??_x3vYc2yEb5OFEtK{+qG3ZD z+}i^GrXWOG8Kl^Wb{>Wl5KV?O=o4{A3*1fIL2CQtQ#QsY@{qft*Gq;iZ82sytVa!r}Cma^j+Fc^PBR%;<^!LNjV>gC{A0UqQNJAuY zr4OD;#T~6+&-kF{N2{CU&(WG6`7yNCNjpk?;3rLnpVbqd#aM(z49O<=m%L1hr4xR- zBTfAf7Wv6NVF!7GvG{iYyrhxH*~YM))*6XKputn5|4#b*@%UyKeBB<1r#M zcJd*Iz^Yb=sWn3BkNX-SUh;$~)nWK0E@o$hG!oX0gq5`8(iPW9*`H`TM1<^t5IW-8 zK!i0Gw)_v_^g_se5gYM@;_ER|Bk$T!s>xw&RAEI+G?}p=F(%$cZ zr@A4e=CCOSHqmT@JUk*IwLq9{kTY~wFZ@O8yHpP&(H3alm5B7vQ>58Xv~XIFZi+l7 zhEFrtkc<{YgoMHPM7x#bAvVJ|M2x209r9N2nh2hy*%Qqh!Vxd+flv)?iIh{0wLyr~ zPRRS$Vm2qiJ>-?sDqC}0rMVJ4k$``RVV#T+1L$FB&P6PVqi#usUj)_t*b{MB;q+pgFQqXa)ErVdc+~Y53MuOUCnS8@so(W z7=n;mB0fKQF)6|#o@*6aA?*wkmB))uG@GWUmH0mqdx)t)vl@S}4e*8jlPK;sur>wkH^0XiO)DFcF$4_lXlqV;QaK)4D1VqG^q^7N6b($5JBe5NZ4o zuF?#GLD)oSA!=M{aP+1XAsY2ABL*w1u7Wi*kFy6q5qbF{o-e@IkcN96V05Sb!Ay9- z_i%?Zm=9O*FEL?W;=5-^w->S9$B3MdRGRS3KM2K)d^OV+Mr9Gyr2!U4fo(4Up`k>v!(I#dokt>M+^#axsIp{u~ zCb}uv_z3sVoQq<6ffDlJTRMj#M4fzvt8Z|X()R@AeGgAnBZT{ipSYtYJn;h8$a^7* z_;p;PR2AXd*Qmd=+ntXmUm%5iwAj1&F{3n{xQ|w|$-k!gSu`A!8 zUuXm??%^|Wa(M8tU*qn4)Qd7)CEt>W?9>y`t|XOODdHx=ctgu1jusK7$aAIDZQ@%J z2kRaFu0(vq_@XsA@=9ralVYIUBIafp{v~=-CGv#)MoX~o3Prz3eTWUuSz+%Je6A1X zJ5iI!3na2Pu`X%FkoYYB$L}Eqq#OM=d7!j&M%?&P!~pd#SV3#D#QT(@{S$45h@<2I z(n*0*WhLg}kU zKHAXh7*JwFe$=D9+Mu_T<2eJKG$Jeu?j%|8gwkND=gmj5@O|I?b69;s-ATnmHE zw8BECMQDA5h>%p;DfpW_S(;R?|x+-1aXZ^RRW^hDshrig<)=@`UG9xbsUX|9rhP&vGf(+~I1{zqqczaPL- zTFq_~e1^Ocny)eN!z6f)tfd)L3zRnP7ZWeCflV0&OG5BnQ`A*j*C&>h2Da1cVhpTm z8XV=@qU<{&7ihPG*20N>U5Zo^bChU=jnGmX;Z8bzMEwe7F%Wr+ zD9s^AE1f|h!Yk!=OV|{RRCW%QE1h5>57mqIN}MYqp%J;BJY!;zQ|oF2o2dk;l@mje zPC%98|1_g^qVCg7mv%FVAV&QGv2%$zNX%L4K`Zb}^V>r7zxlX>dh3ViMR~B07~j=c z)k{GrndtA!(6`rN^tp!KnR>-~ghPALR0D13$qEoV?bQ=QkBH#p`_;qmQ=u;)`Xue- zRO3F1o#??8s98K*BW^5lE=7ouR!V4OErab0RyDG4cf*{ULBB-)7WHN&u$6i=>g@{< z4)w7#+vm{xP+v>5J?e!YVSFXOkGw=PLZUTFTAi#7juCb|`#hLh@(RhnpqV={)orj^ z1N$>DUXhntgfuoU|Y`b1$jc$$hUnr?;Roa*3>xvDA}$W!(zyj{U$inyHG~-54&)H=4rvefJz}PlV(;*Y zIDo`1EJ2*K0!w}|kp*cKrZpS#8Hn|m5w!6(JnyIY<|(c}f^R~!LCaET^9aNyOOkTOFvXIXeET0^A)%&FZe?%RpjAQ zc@yiCxX=ykNur|Dx)rSm5qI8(9}g_1-F+f5z7Kj_Pmq69dm6}#{D88YTzNt(Y}bOO*0W|%4udBgT73OSg4Pry-*fU(;SNIqt;LCY|1m5A&P=CP2g`}C9Nkp@ri0Q z?X3Hd$3!tCvTef-4cSd~p7y?JMUX~$ii!BV#K;Z=EvGYWM3HS+x1+w2_MxfPQfbp{ zkmiSU28H;!6f1xXsFOCtNHv3M7Wj%nsgbX+>O&EY!jZ9yOpX{HlT z6cf#z#jui2Y0w!L8llKr#?1(oY8ZL-RL10k`SC4{q_lcTCsK%?OFR9vE6+#YOZ|fY zoKHW___cWR|ke>}m3o(5g7{(1DDG>@WGKpkPBN~-FwP;!urt>dO z*wNshlV?u5@|1s6CUhEIVS2Rm8cdm5Qma>4T-@`ym1PT zMpxRuAu2ifi{yC{lbyzC$`k4bh}TXY9PJAeBc4tY(7rjfKjMN?OCk@Md;~qdqq)uh zojap*9kk9$=~u%Wpxg?>Ct7nL&bR?7;o&n;&1pZLVxS#A$`SH4h(1ocvb4tA1b$mn z+(r9}#P=q9DD||DOsqyaK@l6glkT8nByx9;6t>cjgOLTTx#Sz193W4SsJIy?Z8&B~N z1)ccxWGQi}iA7DH>HG%yMRab2%7tbn^tpi!PUj(ruT4*f;V#NcdV=z|AuZ&8Q7@xH z+~K%RUKW)Yo&2HPr@BY|I-Pi>JfhxLk9#SvsdkfhLp#7Ow95uhj%t0ws$CSGW~d3G zc2G;N$1n8+0eB&l+J#IhaAzn4@q156Y zI`wM8=tH9!eN&B=4+s{%C5A8cuJps*L6ju?-N;52woDirUBo#*;tkN+X(!8>0+;BB4GSmVBiw=n17eTl=o^{B^V@yWz1 zpXPz<+*$4>H;?;_o61dqHp?Bn;RF^JW-s$lRz-mya9VjiPSbzQe*{&HPY`=G zPsX2sIobxiZFY+n&M$-&H&L^j@?!8F&{5=R2WTw(i`d#@Bwc{qn}wN}6f1fA`Ma0^ zY`cKH*`=^&9PiUWF=&SWU>(0*U=;5U-V=CkDR|TFL!9pa0;kk1fv!9$KMU`3=khZ7 z+xZIqDE>VDxBOVX1aEKM3Jc;fo=V<#m+kES%byYR0nmN@&s^?elsPb&Is(ku1<#Ab7NSB__3@|h-r9|ie>cES(Ae*9cG40UXh@H4zi zy#rRA5Z)6O33Krd`*PtBVG5Lcb_-_W{mf^~9%c%N00Ws}c;~x{S&sMMTZ_s>x5Y0d zLRn{d8%3XxDCIzvTD?pCRJ}*7()gj2Zh*?x7+IF&Yf%Ej4-8HYRSWtDmdP3c>`V{9C_fnse{flR3B1Ki=1nDGMYq?cEO7Vdr zTya{im*0>TKw_s@VM-UbT+S#sr{=m$vn42RCGB%Aum3+V@_1g z-#MAN>+=T}zABz*YE?1OvZ(gcdWmbEx1N2)%Mr{JZ;-x`FARCAJfsq`6}= zABq)5b~R4dIusv?u@B_AX-}(FRUIz-s_1oYQuYrSQSa;0@208J&!rE1-zM|h?4x-Z zh2NFtnza^JEmt4uPWR0SWH4t$taOVaSyikartPMisQ=XP%ur{TY`CP4)wj{j(%w_| zR7peT$U90C#csh+eg0Zx?)>ZyP7|( zUBG5tz~13+5r3o@tl4jP7ydH(hxmV*%un(sKTR>EwrS3$ZceR9x!NqG>8DLP#o3~! zhnMOXtE!~41RL24?&I}e*2Gq{E`47Rmb)vfdB*T}6ViTto1E4ued#-0Mp>37Z&~5E z(w^mM7I)p>4!b9wYsx$jEthQ$nWw&|ovxp67!&%j@v?D>@nGmO!$tiT-DK@i^-<-I zidE3ydo21_Fq>b*J@BvfE^=2oPS$^89aZ}i$Xd>d8|C}VW6X`sYs~G+`&BHfs;wSo z-G)igVE<*FN%W1pnR=Vv8TLu^!1%N#7n3G7Q>D&p&Tk=YaisaB)L&9AG~JRA6JHbE zIijmUt!@V;#FwnW)5q?t*(9fV9;r`O0u0LM)W6eCviORT&+vcX`GbWXJk6B%Ds&Y(q4=`uj zxZ=R^oFVKl`%cN|rW-d${uW!-=uCpTsj%7mlzFL3QiZ9TQnof5*z|u1XX8_1tP#J2 zHq}m7OcKB1z4uLa4Ye()E;m0Z8BzE)?`+P?%vKq1-;I7Bk`bGEBCA)9CO@n2T=Nox$btl_IS)N1miiQjgbc*Y?qc>Z9~lU6^i}_NpdBT?eA(F~t?x45?k*RFojN z!FvILqs&SfAJ4u1>LhS1G7yRKC`{-|RE5FMnLovnsuMRo##EwV)(!<<2qv zB)b*+)CcvO!{$cm;{uJ=CLB)cp8TlUx|Gu?ZBm9cyPSL|X;8w=_~S8WBM%sdLe>4T zbf{n-*V_BDV_4nBs*dL0O70it=k3lJlvR@Pd&c7oOXkw7sW~6#g%pk|d1ZQCDX%eG zvm9>ET{eur6e^-EL7f0FN=`yXdx`wQ!h+TW_HtKuquEC0a!si}o&iit6onJ-DCVe z@c5$rvYx7)x?hcpBBNseZnQZekaRLRE=8BRFLeb<>20&I$*YsLH5nB@H0DA?dFUK% zQOIAl%ZOJ8hcjapJIPGy=nZC2(tf7y=s(0xuT8n0e`l|9QR8;MfTcT{i zSbht%pq1Vo@GP3yA6vKAuC3lz)uwW7`4{FMrsZW{m;G5b)HK}uto&|eTy^8R&+6^Y zOz$o3W5GH}nWCMhpJ8D50n|KiqdyZ)B}FHH+H69~=9FzI_nYM<-*4JFsY60`d{}HC z@?F?#{ZO??@tt@l|E_yw;M^2-V@ zl`bj&!Lp+6uwCwnVLiM%!g>iS|5^EudaL%eZob~5KchdUzo~O+w`yeSS4tgdj_ahq zq2@&icJVI;(%Cwn(7V{Z#JR!#yRCcO@|wezWVEJq^bG6EwwBE=|do;bA__#@E zql8#xlqoFB5Tbn+!k03_ZGkqvlg^>GJJp>l)|Ry@9#-&IZhZE!%!e71Gn^U6Gr!Jm zmdob*iWZlBUop4(XX_P*!_$WI@=uA%q|%TLs)d@ix{>;L!$?DS!*PAB?ufR#=7DM$ zYT$C&GRZ-aOVE?)2)6HW_z0<M^)`|}09@B8s&9btx1e49g znjcqGRUNB2Yt=jcb-(djd6PvaWD%;yx-Q1*h~Y6G$JaL2BtB2#nx-eGG#k~dK6ya0 zq3N2$@PwU>U&ObL{Wr1*6XYhk)~XS5zIZzpk8<2i9n!Ek{6#-lsPD) z=lfyr7iXNzoRz&UcR)c+ah2(tss*)2>aDJ?{5ibS!a>q$ims|Rhdxn&@3C`)UOKb zOf|19?W?X;TrD4B{;%wCsiov~Nkr+P(j8@+O&^!vseDl#X5DTd?H=L3&KoPT%KEFu z={_?iNB$ABJ-$_wu*7{yx10WzT${WixkvK!rq`3YB$}EGX#8h9KQ1eJK;)#bpAGfe zm#Q$u0LeY(Z_e$R;dEO&SN~9MDk(3Vo!2GjaOSc1U%$&rcfISDF*$2xPGr8hDAg2J zRaQI4-rDn&-HfTQK#`;RTKk{=WN30&czCPuk}z@DozO9cg}U!FYg8IgG)G7@q5|e` zo*;0?U+Q(Zz0RqQ!}UqFR&~v5`db!M8Y@njqfFaNXO)~NUQm3acxs8Xv}0M6IkO_y z(!K6o{bg5{ZwjxiC|A~9m8$Dxd>1i4rfdAM#$P4;n7BJBs_C$%)}(exQxbAuy7l}BaeA`w%^a-LgGyLEl_u=2{%sYPk|uXCnk9mp8) zzRUZT85x<^vajdfF8HP-qP*Jjmo?T|;N1~uE!;2tImD@6syl8NXWSJwEPQPEp|EGh z4?@%Q=e6(E7nBne$+GFjXlvsMz<=5YFvA%V@MxuSP8_Fx%ouN??Goz((qZ{39 z>~2z&&@XXnVrfFxgsDviHD2GSS^S&W_?VKYw~?zN7KgPAJ*SguH>w(kY?l@b1^jpZ z-Jb1^Bi6qy{mZ{B?NwyW?~vOjyIlmuyY5cS6H8*%sfy<1Z%sdxH7;#i@@H{+al4XdC2vc^P)m7LoojxDH{x&?`A72~ ziwtr#xCOG%$>D9H9>jbXcRhY>qyHN9ZR~Bdq0xc(^>M$&E{!=Jy*6rKWTS{~;V;9! zFkUdc(tWP&rtvAeE4-2#;b{JL_N8~TbE2(#_5F(3rb8u}g|htixht|eXQySS=Dx`r zRv;>FQMRtaUHzGDy>qQMA@Gafs${HUq{^f@uUl<66gtW{&UifZzG07kq;3t`;qUO~ zf0s5D#|pzxj$d)VLXS-AY3%yh;i^AiTUK|y<}XWi<-&>w=53~XrH4z-7SAr;TKu|r zamm-E8q@spzE$IEmRpSur#qQF#J7m*WSf-TwJ!`gVaFp^M~BA7#1+Slk8c$JAg(%A z6U)SeMn^;qi42bz89pzpz<9=3AKE8$k-oQXjy6dXtBO{1lO~CV@e{a%-o4Ij>l;f= zMWX3+$+W_{yb-ylvJ-L+=SdMVle4KwY}ASl+zWPWG&Gi158i;+rS03AL{Ex_dDkoj+XY3wwZMw*Q~eb zs-{&q&CN`Im#!=Mt9Wnm=HkrafhDs_r<&H5e^&KL%|>gAgLQwz&f}jJtpj)Nk*0$| z7Pc>9UX(vNKW16%>)55SonupDc0@0aIv2S+;%)fA@I7IXVT+8Dj6WOI#wno>^o-uF zE!PZCEm3rq-W1mI-mzCbGaXIq_E)tiHZajyQ6b$M;C>giQmDss(t%0f%e7SAn`7X4NzFB(_WyZCyEwd~LG zeei4N+nPE@djIC?8Sta!yHpXn)KFP?Vq|_)YRvPP86fjS#g2;^5q&&rZsZ>kGs3Tg zDZ)N6rW#jQ_}ZlxUJ^bLsQq zl|`!xmldunj4OIx)V!ow*>>}Pm4=#Y)(;*1JZIQqemAjBeo>jM)f(!I9V2QZ+eTlG zj)_smoQU>BJ&Jr1@lAN2uwz>;pcSPR&f-ObAmGm>6su);fx0SkVK4`lL zE=q1Fr0QR_U+dQxPKLHL-ZXx1+!-o2Y}3VSPpK~}+lC~{CrYElUkEv71t0GYKsj)o z_p-aA>s!ZP^*u5Bc37;H{VUp-zbX5%WPI`3qE!5>E9zGKRY`}kH|A%RIn^=NoAyiY zd;Th(RCG)#hX(&B9cxgA{TY5ZqEF=6$jy-*B0rB99o{3XDzw({QeUFe>85F0YyFxL z+Ml&f?f1Gcy~^-fU#}DDe$z&3pQ{2Oghz)z>plugg(~)p)c31(jHgo z6k8>W1v>(3{NK77*GsG4RD5gdSsGTnw4hb~#JtG-PK61@MWtz`89s2}DU z;OiIYD995#WSJoY)i1Oc_3@!^LY<*Cp{qkvLPr?B(wAxXX(p*&x(M}N#XO0P*~8U(Q(V1mXD!{!JC?O78Blb* zU_k!!yw>?E3KL7Fm>!f{s_xV#+GU>EY!CiK;kS~L@;{V?>OI<4y5qXdx$_NsYtC4{s>B#$ zx>ee#WP9FwytjL zN9e!Mt=4{{(W(DX`V^(|Oqo`80zCVT(lqH)Sx3e1A=6Z8>L=Q*`Zl30!b0HRyfwxZ}aN?HSSaOPpbJ9^G%aVw-gU4{3BnKe>gv{Fu&x8=}q~s@aMbR z|8uuxSMpW~R*3h>?uTTmMrqD#YBVjieYCOKshVMG52&aXg;U;I&PqR)eh!7+Q=)dF zqrwYK+A)sw3<6>d{X+4T}3Qk`0Iy+m2I(sZqSQ`NPa z=C(bK3inF?v%nI;J}^P|D|#v|sw}lhBiE*DJZhafp!9`2Q0$U-k>x;VeVurtc&peZ z{#vpCO3LpPCZ$`Qu05hZ6go9*RK$tM9g#yL7KY^*e+kXe?NaTQ{VlWx68#^z3v6Fh z3(K=gONvJn*$Z0c|B=@{e?;MxlC`G86~isI+KHHZ-eU*zI|;)iC9>xseDx;HDD6n? zKy6d4Q?pO=jXFtnA576g`EyyVR4)}u_~I)=U|OBN4YWsA8>>CeT{MU4xX{Qu<{^M`@` z!Zc%3{Gj+&zEU<` zdQ382+(Fb-_yf2M>HJx|S6nBs^CG+}-D8|``)X^~+Vtw8s&6V6mQOXGGOaaf%zvB9 z%RjFSwcM=PV@_;E-7Qa3oDE4)E>ezF?g;rs5hlMc?I1}LjTKs% zZTy+Mzp%Tq45u(=@+R@$GAo4F#1&X$t5a^#wAOD6Eeu-~5fgPb`c||&`d~zl@cG7h zh9~O3rfLDpzO51@2BbRNLwvhIe)QRQ_Gnr;+H*L98wuir`55A(;?S1I0_RrvKft!54 z;GlS+tXarg)c~!`@R!jSUK}|!dQ(ih*q>v2#mqFi3Q(LavEd^Dp`9U03SI z)^4fTUHYo9Y2mN}d!8)sS?&+{ZHp>P{pABK%W5apUv<~9N0~3hBV|280;)1?YeQ1# zsL-U)g@yr!ZTjiDTbjwL%^}z2O4%yO_oCB+%lxvyJTB9p;~VGw&zLdaYCu!J%1!`4!6XgaF()DihfNQip>L|`EWaZ>#)W&=IF4KIS~5(R zF*gj)x8$|T>z4a_?$i9AiaVI!R&A{vQGXk><>rFc(lW&&%q5QLqm5U?nD9kmJ&Z2H zdHrPFBu%B#BkwPb5jPepnH=`EysgGZ!S}m-TmSeQdSX^VX48Z{5zi{dK-N zqb5Vw6*q%B_B@eX3s_+9d4T z@J$ijBmI%TM}YDfzK(F~J4>tbh?3X&zTAy@SMy%v zUC29Iu(U)}KB!t@JLfFI*7j9VxMH9>NjK5Z$M`NR5H5)r6u!;a-|$SkQ=On(B8Nh{ z5Ur2nvCVzIdt%(V&RR!;BisJYe$)P~J=7j%kF-y<@3*Jf9ri+dM~B#1=;U0t+;=^0 zZ+pLn`#Ug~e;CU1r-etrY$+9|i3f-Wi`okt3oQJ2UK}U!clG|{4s%sG{;}VvciGBp zabQC1v>$ZjIs3c2di(k3a7%e}neT+3g4#Dw?o-TA?!fqvs*TV&bs2h#;dE$o<050F zu}#>(u#m8ij8hCBYc0y5AwF4uaZ%u~_lTpl?P1NKs`utLC8>oi3$GN-DXA~1FFj$t zTGiIN%emXvE+7{qf@=7KW|lr+7#w;vw5PF&u}!E_zf*Hm`Bpwa+Dd#*kjIPUtiC+jYSyagK9zcZ_%Z;yB>A>^Ke9L5AZaXQgwX>zK>nzT{r(DfP|MKvPMpb{* zsvUZ7CHFZqN+gyIR1Vj^zzSuaz6;j<<8*s8X5~fs*Alnj3jdeDSFFOf09@ArPNg%+ zImG#s^NzDC)XpP3?Yvpu-o7!u&AurATIlmXhcf+o|15uoe+rw)TG;lW49>ur*DJj5 z_|N!z_}S1Y@4=kpTcEwSH_(e~%O?4o`u_IJb+2?CbXGdnId(fvqD6FbMj$74c)Z@B z{u69c;4-flvl}djXQJQ4y(AvVI_VSXBWbDBDfLS^X{v0s?2#-PY*Mo#A4lo>sXx?A z*ACLP&a!^ej8x^~*unnfz7VuSRla1{SjZiN4ix5yptTH=UxY;k<- zl(>8@9+Z{s-sb*E>@=vr`ne+RGItUxv>!o-`WyDOf1m%gzc;%coQ@K9Bi9S64}b8+ z@K5mXBTx20(>j?yhqo-ypBscRVXkkbcf4nw`=ASBiED=Ilq=IU%-zh>0~+f){fpRT z+}6Me-d+ANX0YIIfn2ym=n*y*bq5JeEQ%I&6-^fXAetol68w;nVvBgXq@6SY{IP!( zBb0xrZmZ90-fJI%9_P{R(`-;~l8a>1C1w0#Unl2&TUM>Ox~4L${6=X~>8~bf6;mUv zJ7jB(72mI!N0MENyUKy;Y1(vsmZ7D=ro90k(khulTq@|oyX?Q_ncz)I?5$rQ=3&wN_{~*%YlK&%bG`y!xY$*G?U+cf?+vh9r{p`QR-sV<98zBY< zbT%8H{R>G!hj@(YU6kbLDi)hhL3%@XZ0?ORQ@Qm&ALX&5ic62-P@!JI^bpht!i9?jJDBbKjyxu?7)sIe*meGBf2@DL zKLX16Caw|ApqQa8pTaltEAXaCpTI~?$L(a-`on!gyd|D259?{`{SaE%lYN_^Nxv0b zgaqDeD65}@uJix+PjF6cQeZaJv#}THKkl3C8|Pc^tMEPZ*Rp!NLm&bPz{jYCwKxkR z65SI1A^c6)56a)Eg2T)#W(Rc7j|;{Np~f#BE}bAB780-8t&Y&n(5=!-3?YUkx`1lG zyr=X_@f+ri?}%e{-Q()DRpFI=$`6#yE}dZNRP}Y;D0`;!E3Y~*SQMi8Q0>%A)h^Pu z*FDrF>Xxf3*7c8UF^UFMX!vRo}ZeSNdp_0VHq!NdwW3si!1 zFo(0DyxlSIGrQXF@)bh0J$7wNb8zvH^{*6_`}|4#cKq)A=Ai91 z!a1xs#>41^z0ekWNcKo$L9mZko>aY1&)3|;UhDsKb9Hky%al2?qhhtl&fmnYbauB6 zuldKKui8qu z!SD3kaqV=}U`!co*EkDY9X*S^v;Et-!@S>_5aD0wDJ+721ziPmnYrK>&*6mZ7yhsP z-}uk_bD;tMf{hJ4<27Z@GZl0 z&vc)LJ;NR3?Pq)fJD3~SMKeV?!o|V|ps;jjm`px&spkrdQ!acKAV37cMg_te2zbbAH#2gzGgU1DUQcDwihSH{^i<0VIvjq zxbNm&v~bIFZj*XJ%FJZ8=%b${cY>k;@A{w@BQ zYyx!1+vEM0SiA+3h0}{ZoZJ5oZ@tiY?lrt}oQCTPzQ+u-;mb?`Q;XN?!axS5|(`Am^mvR%3zv(qlhS*nlKi!^Pu*re06Qu3v3M3uq?%t+s4dv?uo%lyi^ zicOUr%8Sdcn5WlFbn1NP*(vSBu;HQq(`)r7bh(-~$_bLe{6_2^??m@N z#}M1~x_h~!_D}s&jWXn}e1)P!{!HWzyzy;!pL90Cd~I+2L+g6mGdtsAJUe_txh}kx;9n+- zjgkt$Gr)h;`L)>!UU03bWD6m{2XkE<7mqwrZakuiR{0= zE#7+`v1gn6y!%5>k>|R%hu_Vv3>5OlGiL;wgyTe=#hb-GQM#}gl!eiZh~FkKiRF9) zeCggVy-M$S&u^Y;Pp!9&|As%y-<53wW&iOQ*GYx20KO$@J@kNb)()KfyofWfxj3Df z%`4{p3stT-oV3>9ot9srg8o0~pJxSzU_@NWAH*ya*n}6vo1~rO7ZsL}zN)KgKgOde znpw(tS!c}IHVDEvo%4Uz0ks*`hb%)ZE31kt-c|fkx5xbn+aZv~*GRq!X{DVXdeL~w zFirPXds*93eMz1n8qC+QE4@FvXF47Amu+3^2ZDXq*>%s;#y^$&1~Z%Mg8Se*eJQRI ztru$WT15wNYrYTgxrgwZC$nq0rO?$n#`~6^&U`JLDH;OW&q={MM#0qb5(35k9PdKU zboUxpv`c~CQ?ACI6rbOJi_7HsnSDZsr~}TMc9+^EQzYHRhlGs;clppdz;2P!7m6q6 zdhU3{@DHx|`mpD?q5#WdnA1#u!EF!^zZc{&J+Th+1SNhhAP;OqT{r+nQFLGt`jT+u z?^>MtP2v55lfz+H2O8lY>KlMCOWmj3^V|#Fx7|%Ww>(wewK%_=#_r|1^Ol2MGKP7| zyaPLFIrEbFi0RK?fRo_A2kJpjn2b;gaK?5vC%_5hQ@kA@Rvi+g3;T)xmIN?LsuWQn zIU#Q_Ql3|JRegk2=0zcm_TZo!~0V^GaO<9Xz|#wz}?I-H*0O_IyWy>u>LL zHaC#Oyc0YT9v4X@RUqV5US9@i)kenK+@G$Hn7isC15p_ZmM5EC7eH zh<(OxW&L>drKc~>x6pUj7vlfX-vm9@T<&5(%4hlKz`?sL$VMM914O9}g729<;PRd4xHh(@ykGfTnBPrgs2~g&U3)wECJ;y9ZGEP zxFhiU-ubrs7W=;Q{p>UQmiULUpTOgrz*F)M@l!yIwK8^;ZYr|_1jq$YUP}pV<(%Ni zeZv08?g2OM4jaua0E0t-GvDn4@nC2e1L@p4ZU|1EU&a~fdF&8Y!b;grAU90~7il91 z9x*7njod)ck|u+<(Gecizw8J$gq^`=u~DFsOvkC@5~fP%7w?fSlphNjsamfdq^VGD zlvRjg#5b{0@y7X?Ez-)=CRYDfEv<1@erAcVm-(;prZDfsB_WNqRiW;Plt@F^M#BVy zS!YoFD4ih4WVN2Nj*si7)NQDiR-dRDS(jw1#7T|o{?WXLg4^O^>3{OCabkIC$bI=a z>20x3H~{l^JA2M|&-)Z>YjM8izV7}ZY!UZ_2i6I*mD$Do2x?RvboC;**8V5nNbh%^ zi|zyNFFm8Y?R<9s_gIJPBX}kJOYD>UEG?J1q+)3Y@nWG1l+btF3ja5{wKdo149{@dK|ya7zP;A7Duu}+dG$;8^n7*Uw;FUG)M9Z+*G!D)1Rm!eO*Ne&=(&9?eBBci8!3cpN@ATPVmNqfi#ZU z$6UcYsTuPRI5gXFLf#3F=_Wgx)v{i{8fEp0UCwpG`wVAzU+~qqyNZzuN}0V(8|ESG5#0i z5P9G^I5gjKtGP>@8&90ZJ7?p;nu_Gl;;#io<~Q(TI`BPs3t$@Fq1c5J|2{BL?&FPu zOJKvu!J*iQ_c;1NA^aCmKklG6z6IU*Z}GM@!+Q=Ljnz11KM;hG&ftYi2bF`A`)>!| z%%gXNNgbAyHAu;KAJpuI20DPt(i-%M|KalpocCV`g^moo)nUQAmIt7^w+QsNh(HF2 zJhM@^UvS|dfIJM0#o^6sja%En5u`eU75e^hH$f1w;MJ0R{Yek7Fg>b$$$6|NthcO12jjqrG{ zI8M4h@~!l%xoEtlfO)#GiFl4UNh}l}5$zOyBKR6StLMD^fe*1a_{yJ(_YMxTQEVR8 z2-1aCY>OV^G&B{3`ZiyoEtDrrz*$ znt;j5@dog}=U;}8`Ypd4jEk{&N9bgrXW%~GKbZn{*j4U7ysh#%X7f7UNsx?MfPOUz zPjus3QS$~vBe6d?Ha}rDY+jBbH7JmryFZ|x~%pj2Ny7157 z4fcJ3*IX$(hz-L}G#khEK#%8TAHc&O2O1m0Ux9X(%5-4V%o%=r{#*FbO`z8J5qj)v z+-*(>dd|1d_!FZZUx9x;4wjF`nh?*NPP_`crWmu2Z7 zMHIv?_TIb3-b-RMvG)=+_Gn^^u_X2uO)QC;*gF>NsMt{v5s@O&VOh4f@0{iP{oMy# zc4y|jbLY;TJMEl@=(+pBfu!(^!Of9YV7AG`U75bZ?}eLjOJ}$+Pid_fugt^c!`hUv4{-O8r&|sz(REpY$g+cFcFP=SZ^V9e{kis23JijuviU) zWs|if7}#M);1!Zk>nwp8%rI-QniB@TpKXv~Hu!zPFppb3&4J`dWWx+kFYrOu#&}vF zs1H9CAjGvP!6o3R5(Tq1?mL}^zj%rm<8R#6;_WzJU_nd;*To2+pRNa!(s0NVgu89Y zKy~~bcdG_NPb-k?A#$mZ@(k==4IbsXnDdbr>jkh(TjA!K1v;OJxUw6VaFzqHF%36D zM<5233FC!bgpk2C-21q3vF$5Qtz>q;gBOj!QwIRY(&lN5{i!-&+qee{ z`B(5nP>dU3srX$1hOCkShs1hAD!lScz+b+g^{+PHDJ@KNX|L64d2yc<%?m8aRVe%kj+ycF}WU59_` ziku0!#n%lw`3Lr+gf(QK{mNk5^Uw+%afkLMG=35-y$(-a3#+<l;-fjl@CPyQbEMji!XHD=<%33vu?SCSite;vj*+o6MT;MCd&T&+Lg*NeRuYG;1iXqLaS!nuv}JX$tkp!j%|)L%06%5Jy}a4r3c3N0_y}76jCUKLuc6Re2IO6i zJar(y1-xjb=)-NGgK3cNKJ33c_(P^5?N-!!HR?SJEybIfHq`MXUdLeV+kt>Z)Q4iA zRMy1zUqLrhfC!902cqd|G8G%pN5Pg|kC10R@Mgm28Ao^_x zZrD2DhfibOXd`Y#j)v^h;Y}vuuZzIRNW#r>zs12CiqPjyBh6y;+rfCk3?RsEM2_32zZ7UV z1CVYg{PZe}$5TcM^L+ysLu&l*csfNeUB%S--LK8GI(|(i-zLvcTMj-VIuz!VX6qX zZc`xLMcCvCwBi+bj9cib6&N9iI{gi>saM0hox%7u4YCtsT?}u(9V~0DyrW8O_>(}q zn+rQ94sSyR(%v~R*Ruq8Sq%1p`UC)3(SF)t^k7YNuY_OW9NX_J?&s) zqtMGbpl0#7Rs9)tAc_f@B#1P772Y8mV`FpZf~-o^`w!^xyu+4xS(Y&~XHM|9be8?PxV(=bVB!C${P(Xe|P{&O>84@HW4orYZ1_7DTIg z(8C@01)}y4Q#BR-D;!T8g&aX>p=r=dU({*@?4>i>sW0S?M!#r*wkpNF`s#?E*>m2a zA4H;6!O)DJM9d`e7zJZ|Y6Pno4C#pj8;f>chSG_LI|$n9j5Z+l6uz=$uC z1S=t)MJ=Qs0Nt*Kf7=SHIsuROFDzgvv@#lPt3=%O3axV&kvAi-U(ikhNJM0FKRl%c zAP3pnI--r8 z@WsIx_uhE*n}Qrkc$bX-8KFtg8{M!vvMj_wsxZumi6G%bo2Ed!x8Mo>MXPRw2it;p zuJktT&s|kr{A)_z?b%ie2TErgoML&Cu{(1)aH)BlM=N-#-;fP516dq(do_7d2f5GcGEbA#+ns~It?duF}w?pn)(4GnC2`{0u z)fju`BW73%Z@UaqUP28$=nD;z@=J_8-=bxD<9#f=K`LguM_~oy5p#Zt8UA2IK5Oy3 zGth?#s3!5~nZqE}P}m;%H=JR|y&qEFVgC`)H>@;}vA7Ep08pdnksjvjy3P zQ!y(V3HfK?Ia{IU{TL5Ep(Tk3Llg~Si4cSA2}Z{=h_LqJIja$aZh{pM0W}TQEJdj- zo!GT1NK^n{PNt{dy`%bk=xHlrhqI^wv0ekv3gkQ?n+cgZ6~J5|8vSlaFdwn)3`7p| z;WH0GLqysnvUh9P1=$eWz(R=pO@uZwdF?~rC8N@2lz#!`f5fxxu%#+ilUmTH8lKRM za?V0W>!G2INc$@!`VD{IMh@av5k**qx)KeX=sje3ynr0n@r=I_7o5WX1(2NVrY}6B?eKB z3E!ka^7HUh51`c}7)Rct3}Vy~afJxktsqSuyog~)#3Hi5y+P``$U_b<;(>t zix_M~HY2tX$0#XECaQTg*mIRkWM1)sZpo=e{eFUnAWj$&$UZ|-S_DySqR=y|xNMrC zS2jXzV&Sd)@D0)Q?2yO+`OA_2GoDGDPbI9Gcs%3`BrYTo)mx)y5LuMyMt<;qWKtrA zlm)(!_(d9gM`Z6h$khhVse@c?VC}>=P#tOLs?E+iR8+u=9IXpX2& z(5kU$0b;2WD~Ro-hTV}BiAY7^$WM%OB4fuv8+;m>V#vp%^U6(bKM|f)g#|=>_;}>) zfH9{Fp3@c)Kx4FMExa^n0iyO0u~rT3lChawAMN4wzQss3626SFI5FFaPVYf|jp#j3 z;iC(^x)MWIO%NlDM$|PA@!%Yscv*_^nkSvH7G-^-hR6=H)w z5YsHh9C;0%*ctuSALA6U6w}c=j-iiyL<_kQmBd1`qcJ1ci1a_==T|&wJf7SMG7}Mu z^Y_Q_#l*)c!5ldrdhHJ%PI*=!+Wr+$ZGX&oxAyQLIL05~iTuC1?ruP@>>=gFTHvK6;^^ z&;&7U$!JN0BrE(#D)N$>g7|sFw+exs^hZjvRuMh55uRHYmPdppqA|XPWJEU3fW?p{ zQHG~9M7p++hpYjuk)J(6<<0R4a?zgNpugw9KM+Gsi(b(RsXOCE&H}P(5hIuwhpEsK zW3L;qD&j&GAU-G7DtSBUd09T$6++M(9A0UXq1hYobYv>Oj~tv`i{Wv|I7YmBvIWqG zm|$8#I$Gs zY>9f4$%Ykz+OQENr5ZnjjUiu!wK>30^WE<^;d7#25r2@lS0?yu*6}XnxD5TB zz?gp4Yp2u-d9BH0N#0qqYAB!);wInrjw%NbD{MntvKOP*EwmN!MHyET5x54@`@v@1 z=!3)rWevH)wb`3z5At(nlLvbuwpSqZSRE}!tT8+KBXPcOL5Ey@A{*f~@3?du_VYh% zK*skzNNquCGAI&5@;oAdBgl0Yb-9M0+pun;#@q1Y^xC!>_C=pS?v&ezEf~cfh9^4c zjZGdylW&oO7_-E1V~zPg*>;KSPAqw%(jP?3@duuA0Z+VzJntcc6=MYvBW18UCE|P{ z|EHpk_u(Z@dE4nf)Z+y56HA@!Q$(sJ$|}*+$P`G<6*6nzMWlKP8a;=I;}}|kc>9cL zh;_!%l=yDsFc^-N?fI3sA3&`^XaN}~VYLwo;?n3G&b7w|-SGjd6gpMpFkWNB`JyhH@FdTT-khqJJj z{~#GL^@-)qh@7l{jo~TD!osK{0Z&7B;JlX69Q|f( zd`hfRu9*|Fmw3&L*7f+-4 zBk>=JA>Iq);V6utWQOUCIHNggK^`?Tq$lb+5wq!M$kq~rS4))M74br6q$f{!Q*SG9 z6eUx;4|M1UZIO{#iyBlzUHnjEMlftKj&SYqRIaHtz_%Qk$k0g4L~@lAp_It$_3=58 z&3hpZ?2q_rh&Kl8fm~JdNuqOVq3bGKO0tg7|J8z~Iw4md z97%1kJ&BD@WK3f9w?Vwr2dR7GH5$+B1MPK#ob{29s}_u@X_=h2)JOV8kd85LZ^W~V z&l#j*h;iwqN6uPswzGjT6i4F z;JRNcluOynO8>gNj}Ba&<~l+$VgcO z7W)bQ&W!jw!kb@#n$Z^pqZA_cN1|OgCnE0-af*pMO~$Yic;zx!h8}&m2sX?$FLFi+ z(ObwzRR?8|$DtCvnppRl@Wy1dWVAt+3n6k!@Rthd7@rXdUVt(>!B#nXNKwlmoIE-M zZ%OXjOnA=^-ql^Qq&Yq0Fp9>r$tKYd^(w)LL_BIe=I&&{HljvWc=Q*D>1d0gkfkwp z8U{eSQb;-pGG=0&A-`HF#@H=rg^%!?WRW2{Ik9WWv`C&NuC5SEpWHqLXxCR5JIG&s z0b}`DfC|QBXLqwlRz6xJh%{z=)L@!Un*nbKmJ6UPCQk@8W zm7qtbLBbeNya0t2xLJLj>U|V zpWt~pNcRX)$PGM$EbDiWn-TMCJejM2V%UEc>dL)A#>{u2wP*M)8EMbM_89B1KGX{l z-HE+kHNNE|S03t>fiyQD581#kd(%IJL_}og7|gYCMmdy+Jlg5_hEc~wlzjnto*?fH zjN0TaB2Ov#v2)O}oWCZcjL*>H1IV9%RF9C4F$dQR$+yI4jVRdUEqD%#;XL6HqK0#j zECm+LJv}lM-a{0Tfbul3E3y-sv0kbYyhFXXdqd8c<4DOF$4$h9f1w^ktL03X>xION zCN4ZtcDeRUenKNkJBJwMj@P;pk>eFo6?j|u1GFzek0Q!G_gXl|e}?*-Q9k*}v+zVR z%HH*1N{1bi^P70{A9MEkqh- zRQVDbdxIRmw@7C(%SZD2Rtf2fX8yoP{QuE(cw zc!mKoa27zuIVpT(4kT$0er5e?M?T({%76tsJ*%)@6C*eU z8yJoA7GDD&cppxgJ;xf+eas~rVb5_aMv0ry{$z~bcKAvSR%})x{{9#B-i&8f$GONN zoaS1En1vQp4dZ(^v`RMW(+}}dZD>9Y@ls#>kn6h*My_~_{*BU?wjUZtk{9laI+mrFWnKyq=$k@d@Zg=v=Wn|tV-(Y)4 z#E6gVM2wdhdDp||-4U0OMY|iyn1P(+;^RtGS6GA#ZS)l)5%SVC#HwF^jOd|gm$4{= z);1Wj$Y80xv0Bv??_{XsBCK0+me~RO`R&kJK}g#Rr7AI&F2Ejj7|w|3aaQaC#;-ll z&^GLi*AQ%gFPMSTSAEfDg`Tgl7up&6^TpG-5BUkL+z+d7W6*k;o_2_DHbCNRwCy}- zpPF{T3Z^6OFr#foAlBynf%cHID{MRxE1Q#{O9%E$zsA~QZP;`S>e3q$HS|VC+|!E3 z?*2&Fo(UE@2J3=-@R0S#AN1eN)sgG4$+}^M4b(#HnTpXu zhxQ7E2c{2WyhzSs8!R&z?}*}Ff&85BX;DkE^0hV+rBEm_gHU*bkjC7)Rc zdNo(p$vY>)^BJSLAiEEql8Y2Xw|Akek4V8Y#e5Z_3=^J39Qi`XOK(edx;%_AR^-aW zr{qLt4zB)IaqV#Lm~jEmFc;xn7G{hRoDF$`)U5XhZ%T5@alB%ATrJ^TITLpE7N3#N zi0_I~XBW~DeZCknq$4s&fGu!0o@*01@ckA<1Q$^zXR`?yrO32xLrU`5RYm^XO&}Y| z1ALnW-Q{4sLmuvBU&VOIouy<%4~zmimXMp7X9}`0 zB6H=6j2?_?c?vGq`;^-l`N*kv6!A8B8#$(v?S?EcsgNugzu&>5pFk~MK;vAox`$85 z19%VRa~I$h-d#t^_jpf^My^G_@Yd@Az9HMv6_n1s_WOv=$b-q%C!WH(1NnIZf$PPO zk&bZ)c^0|q!hA{I=X2$YlDxooj0d^vMqb2Zd{1`Cdq~gKA4axZ17gW(_)Qj}r_cqN ztI4pDWrLX?^z?pZRZeCUV`??nVklGrs9WI$CWOg+@^wx@NWy#2u2HWC^iAB5sxS#P2SI;kRh_xwgttg7dyA zwhZ!X{g1PUycztSD`TZ7qbf>fNnGnAV{8?>6?rtcpTZxqfs-qiFaG0B2G5alC6VK7 zg|{>^Uhyvza*}hGEF9zn;f^pFKdQJ<$j_pIf9G75Yt#;SUhX4teVc2HTsh?Gs|F*3 z0-umqgiMW$i`Dp)Ka9x$J?8z3%yQhR<&H4d9m&Z;o*VL(^OOW{jqqtq#~(k8E*z=I zPs7oO&*HjRF#h6-NeD)mQ2Y+^mQ}?c#L}219Ag^yTVgQ!ld~qwn~qQA57+2|@M(ni z)2cGK+Q1r-&xV|Om4 zkNf>x|KxMHcEeL_JTXJAN|w(xxBr!2>;KB+Q|saxEWegFM>J{@4w=Xs$TjKzrLB+H zmN76nf5_6vQn^1xhEei~Q#StQ+7SE-5Ev-LZ?Qo61N`Ag)>yqb)+(rDKoHpG1q2)2Y zCEF(3k0mie=l=fx_J*n~j+V!ml@>-0qbe?;DwZjhNL%9PwBjo3Fg>l4crm9kFEY zm6Dl>GE2SB=e`KNE_uz!FvN7^HzG3=`KGwW%2iN$Rq|reFEbuD<1?mJK$FyGRohUn zRr;i6s3l6l72PVSSYLWn?#xuR9P7Z{Axcb+b-uV7PBt~Ngi#jmEpR4FmM6By|H|a5 z2zL^x5wrN}69f&Y1 z5f7g)fM$6nmm_Y~n9I}l3Otiqp-4GGVNCNJ?e{c@(u&-s)`AaT*y^E zhBnQ=*t02@!E1qbJhh5ZjBIFb*f~!Xh@b)58Eu=ZeB@%LUaBmHJCVFY!P6XEPvlA* zXT{|ID~9&D-%c6W_vt(6vnU0<7p;zcsY(`FF=I4Fk&GjGGB*b=u9=hhlGevv&#F^_ zWVxi*DZw)sRdVgLsuyuzmtKW>BBx>%UmH)4kV%-)8&3e_AwAd3IFI1mpWc9WpoZ3~ zdIM`oP4gxSXQ@@Iq6XB9xftP+)w2?%QN!%1de|M~svzX#iB4*b43<3Yl#Ym=vopr< zJSV`pHzQkG0DCO&{nB4}@F^v&Izhl0YCa^bvI|DatUu$?s>qe+WEklh@eRExEr)06 zxQ0s&e)LBEjO#fk;?77K_Nh9~V?C1Ku^jCb7s;S7+ogLKrS%5Tvx@Qeay_}sVV zjOGbs<4p4fa^CXJI}`Ey31%m`$VYxmu0T*H9Qg!Twc+U;&g3`~zk(Of<~+w!KB7e0 zJvlA^w*yAs!;>MI&^XzUIrIMDov)Bd6Zp)~R3)@r70;8AlbYq3P4*qyIxU@ZiK_27 zu91_EeWhw1!5p+2wj1rL1eQ^RdR3hs;f#yCt7LzrHqsyg=Un77euP?ZzvnX63T|UH zfH!Oo;oeeb+#lNwT};FMo&wiTt~R3j%E{_W!b##_b*a?o&KB&FjTSU@jrC|n;qGSc zQ1N78KiA)$!y@1z;HIjd;1?nI7DPQoO9j0|df;MQv%hx?5_I+GL|vsq!S|x?MQY4o zzroY8fjsmAH^yhU%dlz}EodoJ;`aPN@p177aWAl9e8nw=dj&t>F83|L z&rYz-*;@RlwuAO7&hxHhXRxcS`-M~LOmfA$u@WSlBf2jN1h(=`aJF?2E)|>u z3m--q&l>k#+{v8oE_Hnb_TUZIJ?BtoGv`xaLQHjhus3q}IsXGLUkI>thB{?H>}ZFV z-JayQf?KZmSV~uPzZVSJIbk%`d^P6a?xQRqBjgpnhZpdYdqrg7MRg6>0Rgo%# zGDS5~{aF1%y;nU^ouJ;K9;iC5=me~hm68VHd%_~{oYiqYv2V2ond6L=WxEPDSy2_ z|14i2n>Ff+h6pn1S(|4#a7-FD3&)k@hjaSx!6PZDIgx7+(x^!uFu z{^85rk7daRA3k{4IQhVHXX=uV%M1D$%WWceiRX;aPns+5ss6zy$5-#)!oN}Av!HW9 zwF1h0_N%^>cJ=JBJ~rK`9BY!9%8gfze;O~CI+(kgrd0l9d}rKUxyEd@UUnT3uT*M$ zP63UiTkz@-S8%_eZUJ)tS$+%scKI3n9{VQ-Bm^Y*2l*Y;tPbY*C&dQKHx+8=>jyKRmc=wJ{OHA~PZvhQAHj5YXLszhY+6zM3+bW6&fFqtb3qR$uD!;CrUU4?R^;_dzkylA>-KK0Izrqh;~d`tM@jMFa%>saI%PDB2+4RoJ>%&smF%U5guK z$G*!+dG`Fm^D`-j(o#P@$+uTdkvjDA!$wsf5R+HqVMN2w(m<#Fg?5l~lhjY#Q#38NfGz_sxkIvbxo2_}+3i34mp(py z&ikex8|Q5)X>2@c?I2jM4D>YzkBD}~HHq!K5kCAni z?UL_NUQ|1^Cw$ZW4*AdX8>6eI`a-h9Wi)Ru9h&=P%Ap&*PhI}+zy;IIubwx_`dk|7 zZXVFGLEVlEdhG78pyP|iJ!_2idn`Iy`8eO5dG+n=m!Z$+y)OLFE-#?4Q}I6~PfOI` zGm5azb<}ZvBltr0QF}gMci7jFE26rDcMkqt-$2<#kZ!qNwxHneyui;p3vQIoF-17e z2^8|%>ghgbbggw`)puonl9l2%qBX)LqD&yEp48OR4+#1-^e^xc_=jx@*%&lCK<7V9 zf7fTb`jYa4GE_ZP-Amm|<&>96{uPe)+;Gmfv?!mLJLzTU)vo^?J<&4Z(Sw?AhZd}{ z1S&N#OFHi#vVQo%fseZvHT8|GFK<=;XL^@M{x?gnthg9N*AP3+oo~d$q`*OFoz3bbC!DQB4HQPrFZzt2+|XB{=Rz`r+XSfs zUg`JhzSbO2?vnSDUyu(|G*iZ^WXff7t?Z_>x@4SasVB#_q`YzV#m677#GW~LG5n77 z<>c&lGDYyjeC~Vr0p2!3Edk$CHz3}XWbh4BhLVPM{^TnE5jW_ThleiGD)^}P2j9*lcG|p z=T+}fy>aBKFk9e$-xn&d6$$pcpSW{9H88f%mo`*9RL#@w)hT?#d|IiJ#GNcFvi`U~ z=KTIsrnA3Yul9J*yLq3RJA%V%wtm*X=cw)@YJE}A_DP&c*RS$u+Q_>zFWme0%cJop zGOpHmzALZHu~%yhxfXq}c6z<%wU0%a{WLN^=NNMzW9^F86~`+6s@!Sqy($>%+Td8^$aZ%2ToX-^ztkxFY6oo&85=qw zv{uMf|HW#PXF|!P7ulD$pPX}Y_PN;W3zHYU9sYTraAwV~IwlOT4_iK@fA1x&6ft3% zN`oYA!@cNB^-oMc*5UM!o0gP``3Id7wU5F!#qMsfH-21wX^l$(M-^i|tt`9BF9LaS zO~H$zPvsv>{`!p(rL1=Vr zHD5Gjluj+nuMk>)@SIi5(RT_RQ~jUVjdAB{J*#;&a(wW8-C4z-!UK+x){&OYmj1TM zu1}&|g<97zutr#A__~N?5g)6y4NBKs@C+(!{3QK+tN+HG(48K5x$nJxFH>_`3(I4E z?VL8~Zq)5IUos21g_3QrB@rqMN0s zR5N`vy8S*C+A{SD`DoE}*G9`)Lx_rJsG)1~-cOEB0`m+jVNz+Ex8Z z=+F8@#Y#bz?Q-Q(gV6A);+gr0^P1$W_FmwSaBXzkn5@`GvCk z=ybPJ-Orr8^3$E_&kOTfDr?m_)?w@yyM|mFbg*}|j;e-&z#L0iMvbH|FU&eV?C81^ z+b?S#RK9Ch-b4Cz@Z#9ZjV3m$(d1E`?5N)cMIUN728Z`+p4=_7-@O6mKEHSA z(qedYH(B4p@)rwl#GmPV{POY8vyK}NpOxek+vfUMBKOqW*tA~r^!TNoc}IC`>2c9G;XvVjVUTDHM&UTwYv6br zBr4Grm)Jhgyb8RxdnyK)zOtsdawNCZxBWVY4XgfVO?S-^HR7Xogl!K<)RxN11QE`| z)|QrQmTcP=mqh%pGRZeE*j`N<^`ZK&(GQ{yhi&rfEAMQ2l`;QO^sV04mL@E{{@Yz! z^6|HK%VTv9YAf4Rbd&d~-ltLb9&O!qI|kgf-uv+Lqa#-nPyhPgq|<*~@wwkW^=0vX z(Zhg@nu{AXYwl{A*dQtP*J>i4?>w6;mVa)Q8JphZz2C>Y+_QzN4GGpD&) zI(eI4F1XwHYNtybFE_pZ@qWRZeTBWQ0C+ZDgo-E9Q%^-CE4`D%%#^`WTpT z>HQBMZe_<7Of6qz@%7lGO;lslGWA5|E!lSQU&79U+3pR_eU2`UnvSm>+nh^)WVF!T z(>dMI#Muz&i_oXqmGrI7Pk-{#N2(du)pLl z`8;)@u3q3Dp-Qlyx`X4Xs}kpA6=@j0=D@f8#8bA;vKg?+B^)vi&GSEkF7 z#IprX*D+@c$1z(TQ0Tw3*0EYFH!Srn4J~u5I!8OVQnW&rsNUhbB_J@w5%#27LfDaz z?7$!OS?blY2_lnwxpR%dQEpn`ztqe(At=RNH5eo4hR`N5DMYGuVoxA1G;s!^}F?bTju_PVZ>2j#uV=#;iR zZQ%PhS*JfAEsM3*^Vq~zxm~5x{GbX{yqBhmu6SaA!rT-ri*Cbt?S~yFt~HI$>E>Eib8yYX6Yl;W2EIkbracxY#r=r&Y^-Q(p#FP z{zF3>MQw~pkDFKf$GCrDc1O8FcKME$b+?-e&%T}fVA0J-iJKCi-x58%{<2$UA7eM4 z;#!xR=XIFfJ+()17r(Y?4Z4LMa5w$5}|oG^PsQ97-LQ-Zbk}!Cd1BXNhF1I!8BAKiPMl&qno7 z`BJP|B-qbc=9{ip%1wt&h30r`m~D)$*cJ!0&f%V^!b{>Ea;0Xv@BM&)(1X?D!k1O6 z5oQm{)#t14OJ{kKY)?)8mHjJQn;Y9JJHJ2t^3gP za$jadsaDV~*io-Wt5fZN?p(L?pmxbk?!^3{?`8j#Gx6o~dw*WLd2#v0nb(%zZ}TcY zufD^iNv!5q`+9tO)0D>Z8jO$K7y7Nb*m=C{MefJ<;c4C9zD%2wA;}$BGR)FbAW#%) z2kO^=FKU4PC#^?5U8HeES<8(T<&Dc8m!_2oE3Q`_w9E%9PJytcbcVdP@};VmCR1CW zTcJL>Gdw(KwC=6Em*=IaMN!|6$*=Z2Ot_`Jb>!Z(M*+_!rxoR$FiVw-Bd;`?+UjH5 zgbw@Lm$eLOusfoq>P%(s$0aZN-fw>6z?B{e**AwL*GUr;CAj>3{;amT*2@NS;}aSl zt-GU!HE6D~t8;$23yXJM-lx1PNdGspU0!nOKFf4ZYgvK%3}nyHKk+@F^-;!46rPW^ zNv5cZ@baiKd6}i`wqXb`i1*r?dXhyMl4yA!RUhqi-5q_p|ImOkf0O?`|22L-zOOZI zMXdCOP~)*XPdlbLCOcEzH$;2n!P;|v;*gKw%IH@$4KY1p4AF}s)&#Hjy{u>;cxAa< z+A{b2+gVS4y4UGu|68`CmQQEATKgfTB+Ro-|2W3k)X`=^y9w>awTWxCF|J$CFp;CA zO}gRn!8>6$BCjT0n{#*a^L?394Tr=#{UfS(uhXqjV*HqfhiX5H5(adYC0HkxT*}?| zpez4zVUy(LSu|kyXykyBV1{k8td`nl9>dGge zjaymMoW}$Oq6lfcB1e_3sjoY#KL92%nSX}AE}#<33q7?1mFuMKMUy<+oEF>H)CK>9iUOBs{c6RTy7cUki-@m{4 zzBRdh%GR{cS?$Z*u4$UQYVNuNn(b+EtwpOAYa1Von-{i4_1yX}ukqVnPx~efyB%>W z=-v-c?!SGQ=Wp2~tL5J_Vt(xDx|Q|T)cH2%yYTC$s{fgvaVbhhQgmW-w!E@r*| z{B>EWS>v85xu!g(J?@;X3Tmi1)~x z$`(GM{>y?-gq4T?6nQ(cZbaj-DM3s1uT|mVJC1FYe;0qsX_vk(z^Pe!pfunspW~QjO`U2AC}`gPPWte${1Jt;nUfy2br}$KFi+u`R@{=ahQFI zAV>O>>bkbSt}i%ai&Z`4<)ZWMEA~K3t;!)4GYp*#R)e5&li9~+aGZ4GX1u7o^sfAz zVzM$_m8`y~-mMAu>FJ}@`h)Lkuj-m2R~95K5#0q!rv$6mzj_h`T5++|Px-rMg6~cL z;Go3dq7Zw?yx_Y5?es4-?c}|L%N#FEqskQde}CNnuHf~_m+fE9e4U$ClF=sN~He|zkbqslDJ zP@j!Hr?ofKrxgLx0m3n^xwbLpHkHK{Z7b$g6d13WR$ETk`Z-^@qlMGN2c;9`_Y@JT zHtNBe-r9BAXmEWcs2i#JDb~ogNy0>_KoYmQF1c#Cw|hR|6jf zr3DoQ>I2&7*J$0?d{lXw*`rLql?^TElhfeC?RPEHPNo&6*U8+PJv=|au-?&MI??A+ z(3pt2(FHY+$4-jr7qu{0u6rr1xpfa<%Vf!D+^6$&31ER+ji%F?$w?@g+nEyr30ib<)@X^ zRehBSSTSFr>Zw#H6BQ=eQOQCuSBw|t;@(I@oNJyXJSv_lyQ}SWoe_rQF+qbIyw5BKXSr8_53`la7UTNeA#_R`b_;;xxVu{BmbWWZeR`eMGwWh@!%x);HkEFz%(KrF1}YM? zoAhb^)`0H=cKV&sNi`GYSA;G{6H8B{u>9YW#NzVeKT5`wy{#xSZ?)HP2a1MC!{s9t z>y#UmRxshY#T|v`Tqo@b)(>WXQ?c=aF{tu*k^__Z( zIzrtQtMX5jVT$i$DcH2re*m}`%Fa>Xm<+f<2~C0es) zow~a6g|v}qg*yp&;-`#*4A!#4W%BYULtEn$(?8ZEM?24B(H`j~`B7yx^(VDQ{kOVO zwG8WJ`O;yMKSghG)1t)P!CeN9mP}8C@K@1(Ns&yXw5#f9^}71L*L|h>T;EvVOrKHO zw(7$QAK4bMzi_8p?>ubVZLVQFSyrv&o1#^P8wx7(#}=d&-Ye->@z`?C^@}J@enAuN zw>fBd=+Lm$p|^vKe&M)ql9?rsO5Nod#wiwq-QjWwf+V|SpXI%P ziCr$MA?+a^Ayj#WIP+}1t#vKi%!|#h%)2a0ttGZsj%%(ho|?iHqTj^BB@xo+Qk5)8 zx)S{(OEN%W6x+a&5hE@Hd%`+#rg)xYth6RLdH%+xcTbf{{hL~>>8t6gX|8dr=c)Uu zY>HR%+p_Iax4405wP3A#j&qOgOY^0QI%U$5q@tUJBMXx98y1?10}bcRo1Mu*k!+$m zP5&b3Sm?K5J3~7KANG&%eXiatZRBojSz;(EURKZ_+`6_;<367+3@__ix!-2M#{N`A zOHE^4j_)dcp>G4-WX)fS?UE&e&CWB{V3VZcTG__ZRi!h^Y8bj1&zlxmk2tiRV9`X0 zM{1V+C_e<$Z=LL0$+y_+^LGyhU&1f8iPj6236_JFS=QOMmG(!DnJ%ll7x=-x7GIZq zC#@yBB2&usa;e-Z+a!A@tu4JMnJ;NBQ9wIkk}Z;+(hjn2V2sc!)0Nj$%hh&ufF@Tx zLj9ZSx-wgFAN-8RC1s*W;V92C*BHkD>$%F2hW2G6OZ${aio=WkE!tb+2j-X`9ahhA zab1N|+uuJUsB=h2NQa=4{-OFztwFI)l;kKhbv8UL=~JXD*#9}<^Irw$iorW!`p=f^ zx*>clU9J>?uQJf5M7u%LO?6Q&lI92(xuYCP>ldakj9n^>hOmlr6*4sfIs3FFhSI@zqWsH=w09w@GKBa z6y|~{!y`HXK9XQbXUP!BV9Bo%f9bzcoou2kQ#MH+qP${ zhHp)yZCjnA1goSnbt-0#F@dcDI|qdMUj{F5HB~ps2zS2q*Gi4yWy$HnmHCyQ&H0^+ z7L+!wC^4O~JqP>x6xlUpBh72=Jgj{=G;`Dwlsjcz#K%36&KzqO^PtMIiW0+eL#iR% z*u!MB9I-cXo%eJWoscBTdMI)f=M)xsnrxwTulO7Eog2mLB3EnP+ChO2lreqZkPCaM!8SAQh*MgYddZE&JiYqeFL zFf1%>T>MRuuK2H#!)1krNtIJA5srSIhT>T`z!Ifit!b(qr8Q{osE;V$$nJ`_2o}25 z+XdF!rZ>iM6?YBwDh3; z-FJxZM_q00424#bBhb3F4!h-jJo`od`vh@u+q~4xZvG!%Hj{fWnn$>8_8B#gkpknuBxGW zk2+O-POVnIRSr=c#^_xxatfZiXFG%KYb?o?4nw>0p=DP}_mzlBHkVW@n_(!a%(E_V zR=UTEtg?sdZ*;x%ZT9S)shXa+k`g{-hbCoud_Mt?DGz7G*ufMA;f}KAaUCao=?MI2zj; zS;VF%6^F`$%MN1fm{vNnbU;~8!+Yas%Quc<_iN!_k_n25nrPh)Uw{1--wa)WkFU=r z%@E~msY^K21h?8w+dsBEoMXvw40ajase+rLDUy%U(efLL=gN($ zd{wsUcU81%qw=7lpFB%CMUp9MCw%YO>+a=Bc090GvoEr3vHDw2S)wf_QzMh5vVp0- zsh{azQ-5$y=32jX$lMWv^THkC0_h)$6qT=LoTh>1vU-}@1)sNBaYt$w#R?C5EUs+F zCEJgd1XDp}MWwIFSeaGX8(fVxTx)pY7~wkSZYcN@EL~qphDiUCPLgV+k0g^M>Ebx? zNKt2D1Ht#`6H3oppsugQ8u>l^r^ulOrhB$95gc^+;!cvKk|UB*iB6g%5liZdzZ2yOTMEYuI(b~K zRHxdx%Q4)c0PkbGeYicy;o}s8C-SQMch6z)jg1zM0W04i>1+6}Ao(`=b)1KpDIX*6 zFCQU~k)M%Sq+dwWBr7F#z)#&&d`{F>fj`5W1I>l3SmdwthE8-@+nR*`MDFoG?VMZOwy6;$a4ss zVa{)y51bucsjkcJ{hr=nGCKh76QgLhI8WSA5+{*^EBhaDd+{-m1q^53;RbZ1X9YMQ z7J&yP%lXD>a@IkKr(M48<=`-wh0}OFabNYdAW}F>m>@KQ8KovTR62=figt_6inf5E zsJ*BqSdeOq@`M|N;levWi9QKTHz#K5BZ0l%4Y=T)JwBdFcXeQrX5$85OWfx?E|9<; zUJ9+?0Th7uqJyZTsF_G8x(5!4L13G32`=NNYmnd>P_`yx&&BLM>z)Ocon~Os>E<4Q zGiIBx<6H;$mnPht-6HrXs3BY|yd?Y#`D9>Uk)Sp0!uvqKp9yW6fZaD1C;pCs0l*Dr zj0x^AcZur_7+-F)PPj=345S4UW^ruDPxmV9{9M>g*D_GM)FG2c17S$2jXd>p8y!BW!cm zx2{uQvP^a_!M)Yvz)eX4SJ7PIMew=#3%BCNDUsc7g4tm)JW-J=2uw>VcM9rN;raob z0KelzV5z4q?ub_tP6qqOC~z@2(H|cI39u>d*Z$?1hZ;}A?^#}q?G&7+>?7C(CImA$ zL%Il83r~TA_9P!~mXxbGU0x^lhF>&d2#(B6Sj*BFlRwlBXoE0!wW_ zZnz)CE%d!WS|F}k22Mc7;C5|m+_IjGd)k9>H#ipOn3Hja@EmYpCID%D7*OTg1Glyl zaOG97oN$i@tybx_y9MCIiNiNbfHQg&rzibz?sNpu3=e~~<0;r_LcyZbSGXRGDo?;< zStcyP{}*xMa5UIj_5<_q3!Drm9xXA#^thY788?rK`MwAi*$}s7zrhOAdG~MbNtkDb zL7$!7zk=_fF6?+a&RA-2B78W0;=E^7iM_}BqQoW5#0gIk&iMM{#!PGPop_!-=N%J& z=!GYxi4sF>9%96Hz#)Vc{;qsa3eP!x%!a7ADO zpTH{IH^)tW%>LKoZuM&Lk&x}-1D;wJXJFkpofj({29DFuxQ(6;-|;(eUQ$s`PxQc9 z9zWpklz~m9Eo$;Rub%9H&=#&OZY>QQ}m-4zgyT#g;&(cF=vf`vH1OBKR`` z(T|tm#$+xq5r*Q<`d<7@f+QVL6W$=_xoHjlUVxkJJAhbl68$$3?J^!G<6mRtW(!b! zyLf7X-=!W(n(JAKw*CbtQ;$KKEzrTAKq%e`E4hIhx5jPopJ5#vfJbl?_ypi~19L{P z`#so!SGWhc+q-AGUtv%325R3Gc#}DTdcqFac@7a~qCI=TPa0uOGoaC0;Kzspdx9K4 zVfd>vaDnIGxhXhjtHaItJ~+iW1s2o_CxJi0R!4)Gr^Nlio#B?kQ!GRKMglwGwV;`B zop8BuqHrXvt1h_2e)n3-L16n%0Q-T-?Qr{|UNt=(!9*|{<-EXIU!L@j2V%l-+?;QU zXAyr|>pih=gb$2`7i^E-JKBpfzgW--b`yy6^Tjy1yA2#pgMeea5x9KE(Hdl8=m%to zlY-ko@BR;`PVItHuw5hqlaxrFBT!a3@Rw;v?ZMz6@w|k7YJxB0Pn-mP0$IAi!Y6po zW=G*vb`tbG79+J5ygVY03n{6W&FHVZU+aROA?8$lv>b1y5!t64BhX=-F6O!CwdkRX zfb@F`C##9)mx|l&-(#$LEO-O9qcCvh_7>{ERecmU{X=1~hY%$fgUu=t{yNp2>z09m zWFbnc1oK4?pc71mwOl~|T?IUVX~@$7eUu2`_o2mq(eGBGuWtdq@%LQ$MXm_cwmYoi zDELVlW26WLBbkvrywD8MB#1S=4!j>B@VLqDG`Ac4Sq`@!*e#agnkuZr%r-Wa0*VH?+${)Mh2>b`I?{4Wrq3pcRaVtp%Vg6TC+fFsJ9Dzt{9MK;QTl zE&e0?Ngi5z6k3~DvvV+x;*1?Ehx`Bu(8()kg_u22s6$^^*I2wd;3Pbe?QfwCze7Dc zqKEZ_m;4r3dZq9^HGu%J1q?Su;B-mEspUiP+@s;2?%;|2z$elQmQaCfXmRj=`@MIP z-+F4}$s2&F&;>Ty6+OKhPQs_6&4~uO2l$C|fy=!bybtWL#If{;?xv%!9Kgtu0)C0z zsC^&UzW^LWUwi7JU)2Y1Q4`ogf1FCc0S&cAy@nvw0${}sMqN7LHb55a^)RH~fSwo+ zu9WVul(pzlLVHtF~0KIGmdTTF8^cj3Yzq*ftcf3BV;{mk#4aSjr;2#(bV{mH>K%MUbt)&mN`V?H| zd)@!JZ@~_Y?#}R^apa!v3!I1_A4GTqQO0fbpo8!%M&O+Ff=%fW-TXhAz5_hU;`=(A?Il~% zd#{85DFj033W`csR79m%5U`*~QB)Kg7VPzhfFcS=kq**(32B7%w%KIUwFdg~Bb`eEC2kr1IEY22iK5RwmH!${zKXMxVe?NZTgh%u< zWcddgE61GMg1Isuy5;?jM%*SLBM@=7iRWy^yf+G(D@DIM=+eU)< zz;B-kTbGG+yhTP#$PnBlF(7whPcR)c^#V3FxoOFrTb~ zzCQtq-y@i}2BD?@pttqt1LMIT@EL5xezboq+I~C6;9=kv-SoJE`TTzLn>y5TFQk|Z zf8=S*#y`O~%thZF1-th$tjJ1?(oZl}XF^N70cnHee_>W6a}4!GB)DNnwH@vK1Ne!q zfwAKojE?!R2xYETdk<~C3jOyvwDm9WO6AZ1aiCYBt+&Chtw8H9hlerG)q=zgA@1^d z_>`P4c^Auw77l~$TY!{{k(NL6p;sae@_twiQtyKf`{75B9W4&4+9l}cPr;uhI?@8v zWrhne=P|q{D)dCOeim{}!o1Od+ga7BD4Hn_mNVM?)JX9iI4Z>Cu zb$%4=DedHR=w&|qF7_lMqx+&?jKZuk9^WoSThDaKyAUZd(YDFBTSeq(;=B9fhSn5} zs)v!5=zjAc?PNSV67OfYJQbpQ&ceuf7b9XRN?8g`tw9?uLMzjg8He(`QC~CczoS@|{ zW|`fv;eVliAET!}hdelA^JX3qEgDcqHFUKUedsx0M;!#)(sAhU8$9_AdesEv%6rko z4b-L(&)U?bn!dcf%k51$qAnO}q%n*s3vjq62p8D8}tUjIiApq4_8;1(I^b zRDyX+gSB9hYbCcFHL}2d>_^JI7?C?MjvCNPv1s>I(9DOB>O++EKj?gt%N9jpU3(PP z`XG7%xr=V0#&PJs>^+}CmLnMTf4Rome6(jW+MBr0ygy5PgTM;tHhYedR#pmV{S) ziYTWdq#+9g@q`C3C-5F0Z)|GtG||@MG2+>eQZee1@S02+yeln5FG@tq$YIkYNH-kc z^9F1ra!tp(;m`z8g@cf{4CPy3mGWV=d2^HVeh=*R2*^1DEliBt2he+8fEI|nMl=U4 zki>4Golj$hQw59vAN)n7%Th#QIcc(cM6=4(;|D+O6a5ZR# zg}Vh?$a}0^kd@dP!=R~WQ6}4m{1P_!qbJY@h^2D^c7QlY8hpz&@ErUQ#h9oazR(kK z5P37zfqpK+oY?_wb;HgQe~?Ht#PY6!CVA^M47!+(UP`vk1!((hJx`0a5Od^Av@GwT2E(5uF8U$#=Fj0Ryyx=HZ((-h{LLHHys@r< zjrBl}q*q>pGVbDkVpbBzs1|i6=8^$5Bf<+Y?ul46fcHezq1HI#?8hh|(i3rzF2cJo zW5(&kH@A@oQHicVM_h3eg_QS0Rp?Pf;vGPa#ET+V(J9o5OeJpCFrt6*MsbC!709kc z)-D5PgMQ?}+rMu7BewBTJXeERk$AR5lBWmQh3AVq| z#E}E00`d@hbqFm-><%JnaNhC28rp~!DMubxAp362!2h^@PQZ&jiO=+S(hP}s1DdzA z*>mzy`!o1i}g0^`ZmUsaQJk#_4+s4hO`!QN|GrZKz@P&UtjmR+3g4%Fy48cfB#;*eX ztq4+)qh_OPe&lPY14gS!-%y&b_34r zX6S|(q(sHP2OZr-zD*dZjmU{N+T&fbQa0wbhhVv)kvB0p$T!8&O;j%80*jDaAZ#{g zF~(cQ!)B5}FdS__&M6}4@kTqj;>ZF(W)>S{ce-pb(V3Gm6O6`F+4xI@9U_Jhzqk>y z(Z_1WU&=)E0piufL9Q&6#1%a;!qZ)GOnRUW)R%YcD_uQ}ER%g`;dsou@sN<#d=jiW z(VK{rLv|4M7}h|ARwYLI|KYyJqXxuL4?}t6{~?YKdx#FtamFAH6%`@%EGOj1K*%_y3o!!V|=Hor?L8c=nT!lBoGa z0Vmc15fDTul_(oBq$Sc2nVE=r6bz}8k(PLvQ=perls6J`u#QCN=B<4q1vrp{o6Bh! zq@nNq1bjpKp>tdwB5M+fe2H2`b~;AQQjrreme>oXqXttT8IeR1Q6?D}$v;Efe4;aj zBkcp2xgJ5D3*dQ@2aianZcHSi^H76C+aba>nN!%36EH763OUFCxCnpA8%S@7OjX22 zV?3JZKN@J2NUV$o%tGo#c#ioK;hZQ^5hy1ba(Z4-lscuX4PPW+i@)QY+rj~YG# zt1i%3zFo7h}L&gV=-b{F?+M(hQy*c`Dhh}~_0L`{%~7!CqF8-izv zB+p)xf_5OLDcRNPFsg|!NZe}9Q@w~6MnHZdr;}fd?0>YaerRtstWz^`c3^~){iXtW z6DNW##s~~Y8S$}*n?+BQSU5z*BAW!!bG)EevPaN&AZ9vaiNwPpwhWPc$g|^S;$VMg z-PmWiei%R*#FcZRW<*h;Pex=J6-FJ$E0J=TifzD12NCv&quz(7oOpuRBt*|4;}Mx& zi0n*H!2@j}z~^nSI7Aa6?o%JEKGE8Vj6{!wxcPO^6#u`4S%PSkHJB+m1C~I`32zV+ckUB-{D@4$fYqdO{!5#a#c`vVzv}x<|fzDNz903lwHr`2+qwo)8DPbU@mK=i;W(ZnVk9}W&*Ag`LwuwM+ziPY@C0#< z_(MFGPUJ_wPmkxXBmFh_aeI&pnU;>=T_sWwWyb-plPyB*7ox=oFfTXbDWc+E!VkR} zBBGy1`4^B=G4x6XGHQspKSVJldVM9zFMx+|0?*OgAzmrHQAQZactZ{u`o6@6B+_+0 zbjQ9yB>r-|XUmewpb9!5hYtB~%F*iNhGP7V`QJd@FGE+Y$bop4c324&WkvJS{1se@aWr^hx1|PcI|NBuAWs9HarciR^lmbM5hb-2(h;kUtK2}?By#e^ArA}6 zCg%p%Np+|l*B*7K3-Q~DRYYq}d?9)=%_xIReog4t#0VRJ)NF@V$j!Y@zUK($ilPDE zbf8YuQ89GIT{H5L5bcNaYzJ~7lCTCgIRG}5s_$NLn{b?nvW&o@Z=QrBo z1hg3O&xoJJot|=Nry2PZy@~va#Bm}flih{Z#Wg$8Ajz9We}lM+)EVbvEox|j%yQ@= z0<|G-6Y(;mBh`oVa+b;<=6|){+YE#^M#Ze#ns$gc>`6qdykU zs?jnD@LncBLqxZ7BIf3Y&t%AzX#R}((;|^0fjmJ$c*lKfa@TMla58>I;xn$r8Lb^e z`?sSd*ei(p=nEO1K(ymAczGj`=O{e$5OhNijT|E64v|2|VR*6!y@C-YwlZ0hr@}Mg zN+KRl4s(4Th5U$v-H$%%>55MDVRvZ^YMzY$A4blPKyNeP&!od6iibSpC!%*4iaK%5 z@G?M?n)Jq#uPcwfLKfJf}iZvf7M6Zp7OozLy_rO%z-Y zX@&QHS zJMyy8hu~R+NVIMm(h}Q}{KZCCi%yK707xZr&2qIET}+qhYL5(P`+k%@9C{d!enb{a zGS*Nsa(HT?<0!}%?9zV+dXsww8o&xv4*im+ls*_)-o`*DWRcQS@dKlz@sLZI(d z=ztjLdRYHzq}HM~iRb~7AqiK1#LJ{dM&va5Uc}mSzz?FQtwqXc{3XJ8KP2Ox1X+;c zP)9rRBxfK!Gum5XuhAxZq7RYhiZi7N@5$p`gZYMNa_@NsN&u zhh$vEki(AHl|(vp&%<@d$%bc%yVs5!$t6OzJjTz6`%Evt2Hz9skhXw$l%4p5KGz_g zq36kRI9qmL-;BHwjJt6KLV176+pDBtchX zk*6<0oNqE8Zbw9nUPcXOVH+%N7haiAE?M7blZjV-6CMYd>lh8K!7ue;!8^uD$q17@rd3{7Mgy@Bti+TD35DI?#Xht?Lm672@!wpBs{aT@GiI$ zP~h@=%JAtql&V9oY{v}22%yO2ACV8*jNFNRo{u!-KRki82mNU7me32K59Nz`ccOf< zCG{d@AwFl^m7ZcVN~Y&_0kYO(3`(Iz;&U_lNsK=osB-i%a*@LY*@--y?h z$cbr*Fi3QFTE1dvu^f4DKaO!jcX=jAPJB?}SJHp(#yFv0Mr7~`NRW@`hyu^HBa$J} z_}pxZU3iB0kM#D*3t5lX)zIfnys{xDM!Jd1PrsPj6nceu;B4#Vb(A)@{7Sx447gw2FQIXlP67OhB9O%)( zD2p*VviWIX(YjC$SE-EllkI`4NIO!}OQpBuUP;kv69v_6N4Q#{f53GjQ_+(mivsZ+ z$-PMAVIpa2F&~g4+8qxX329~c%pYZOO*(|y@cBO(8)25w4f-yeg*i_$3doW<>rz4$zGvi(^B}pN{a{1oc%G3IdN{-n zCVvd)dGcq|cVXO`=j%8Z@${e)_Jb^Ll$|WSWNA~wvf5As&RkxwDH2FUP7SWji7rbP zSE7H@?grsgVwIAMCluvGyJi^jJaMj1!(2Vw^%VIJIa@H^7Kpr}Tr)yAJ|W6%xXTk} z?2v4{#8M@~X&_`Ak5V{}HK^5amj}bxn?L*%GHMX%o3l$IJR?7(qn8+u+~xR;9uj*I zV-7?lrzRtzJ7OwR%k)0!Wk%v%400sqD=jrKTgh2M))GcJDRUxpEyE}G!PjHG!|;D9 z(z4B?@O?b;}4@bsD{-onsu6#K5X&baI&&Y{>G6Y={U!6>i zJ=pGvl7*ZYFy(V;0m7`HH#9$cKI9epa_@4?F?oFsj6U!PUt$mv2OLS@!J# z=z|d^Z`XRzj1kT?ZZsqqiS(Rx1dv$?%g_gpAO$U14m+ZCdB|iCrDsp1V`7=pG0Xuv9}r_Enx?A}^ram4kcNm3@d2UHXhS*NHS1$qSM{XR&^6GTm@#ZCAarI7v-d=EF%BKcxYqwHMB>krK^ zj#LR9vL2i@k}-}fc;XcFatl&c;DfXtBvyr^h#!Fq8A#fe{k% zO#5y`>c|yORz$|H$PURp79y3?zhK`l!Z(b5GxkHy6!P}a&toi>{tnlAJcCw`&nn?X zT||2B&er1jI;71({pbt1qb-~bIg@Z-lYRqvBZ;L<9-Tt`&=;yjNo1F&r^S^FTa9Ca zqm|J_MoQfbC`Ok@OD0JAhX!cW-a_A=kwkJy8IZr5iRLW)+A~PYC>^~d z_Dr(>w4m<@p)vOUCVawZC(j~M^R;N-188C5Kc9!@7&~i03i<(TORkWrQ3rZnM!aI| zG|v^?<4!JpLL<_W>!k#}xe=p`eUAPmtpojDaz$0+88SzfxmuN6J>UfblUhQPiT}-hqzv$c=GI^2(EsmHKPP z|J?OybJc}<=tbMpzhOV%DKhROb6v?+Apa1#dg$wN77<`(K3CUVy-HxY$eU|M`_a4M zN{(|Gy-51EoD0coKtDzYO>m!vkvDptGL*_b?t#?Ik<1?C@Z>s#E7Ts8%+oU5ouV(y zd66+w-Xh^XCwF=no1?AgUYEbi$Kakc_cH0Py4h3c@6c-{13UNp+-xA6OSr1$yy>=x z+`ndwh5NHQl*RoiMlHxIH|Sbv(#CWmqQ{6My+b*A0VDGa`v)!_CQzMnm~TSxsTW>{;XBTzjbu*lJLyIHe1^7cla@beKvtnHHI2rDIkye9W zUwlU1I&!l!>dB~<6yMWtu~N))AQsyf^$VI@@7md3_2ov1b68ii13Ys zEIbWJu5|8TCd1?63A2&V9z8Y6%<U&!h29b8I8US)=IWXBDCp~PUoH@}%S5}-7Yl$d>1N2L z&&?fe&&O8T(gq%fHsADAMEd3$I#=Ur^%G;S^X}nP3{%O;oRq8x-hoc z%I?#S{MRF#0?~HNZm%B>zxyklHwiwz*lgo?X zek=W1?mYLR4T{k>853gOx9}txwoH(-1vR2K#W~)BUeSa10-VGzg4W3Tz`cqxcxHw8 zW(aM42|gD`MKkn9wq-_uXdUX1Zw0;~GXy=@4rrLMAu>r&W-^?Y;WeX0Yz=aS*I_hB z;A8Nl8RuMjk}Y`6{ZY123%sn$kfaOgc#@scaUaCZw8uHly|>0b#xq4+VUP{{E?!$9 zD;Wpfo>?vA=jx*g9!@@T<{rUa$ijFmZ+E(*Ym8EHPmca48J7$3El(`b*CU^|6aUle zBTM*QNQu%gLvjYL}Odf z=AK~R-2<XpVcs?5Ff2?x6)MF^X--muoOavANeuZE=sAyB&7a<04ApY|cI1O0;qx z@~uHi?gcj?ryi8ufd8$iC3hq3_@BGgl#hN=8)RYp?iOBg)bbQ%Bif6eP$M*32rbgv zxC_tD3^_Ydw>-$w4=+aoTSDe=o~s>1S==w>*%?L@dA9Njq=QAgglQ9%~+Ymr}=JLZf^kUy%!rEz*wv^Mk# zID>NE(TQEm$#|aoHY${miO+ea*&Dl|qhP;p;OWUYdll>Q#rsf?`{70OqeqHRBi;yc zLc21=uE;`89(V4vj)Q!>1H@Y!+$j>n#&S=IF*-kd7KYlf9^;@%wtqN2i$aZZAw@9G zWTn71m!kx-Hb>+6F6f7mOEPr(pk7*(k%@Oh(2*H)$J1!fD(H@Psvp4TT&w7?2RZ>W zL_c~CPuoY}DSEX$J;hURJORj4nmo_Tcvrk@E@dPr8KW%@=idBj0q(`st}B~E?8aq;T-+kTbqI$ z1-N0%o4~X11a~3051kH8G@$SE9*iC1RfJq8p#}k{ixAKAW(V(xghB?MA>auu|1x#bF+VGF^n=%Xo+gN&>JX!mgR2JW}`z_^^*9$5`Pr39~Vi2aPZ$%bAs@-^lw$)?wN=sYecCB_+t6KIK)s;(0nNG;|)Xx&Afd z`>T*J0=6p`GaG%eVCd>!R|}^gHCeE@%g5*hy*@^sZb6enXt8FT+q#H66Y=zU#OX?1 z-j@-Pvp6`Jq8Ckq}c8y%z?7uu;O>S&@M2zThZZ<$icaVxF;rNbwp^QvBQOm1%SBuxp zsM|$6$8(2`=m{5)AJ0zFV`B7_HKNx;uaAB_ODRRY=v6XO%QmHN--LWhAe(!KtR51% z`Qzwc@?;Zd!ZzrF9vbIPo|)(DZbT0E@Rt!~`fc=hh9IpwZcGo8yRM8la{alcBSGxn|5I>9(wV{=4_>^bO*iRX)GUG``bE@&W7cw}J z14lLEKfL2tg zWb}w!jRTN@Q8LC~xO?9R--Qt#>OT;cHWqfX6;E)tN{qZ1N1;F9_DQ(Q$H*yn>1fq$ z7$=;S=`k}JPXrLI7OeO@0b1bMNe`rrg{@?pb2d(JSue)Kc^i)L!9mEVK`O?yxF^a} z+~nQm`kuF1;$S7|v3R2P+^f~17POd*dNWEwZ;9s~xaY)EH#~jJ+f%%mHViWcBMoHw zB}*~?CSit4gMHu)Q!)cb<5eW=AkR8+?;{xR7zO7pW)%Jgp(Mr)7@^^QsS37-J7i?q zWkibY&1ixS(($eUrQ~eQwG;Q8vY<__-Bqx>X~=_nt4Ww?-1qj>&)gv`;P2sp?HF)?#UR- zvnk)>!W|iQ&~Q)Pq~-Hok2cN4Y_y4INNeJlY5{_G{(`De_Iy_Z-UWM^l5hBlqCLq-AF$EgQKI=OmrpAuuM za=h?Kw!HgnCnHe2yXj_XW-ktLmB@%Jxy%_|B_A}|rOC8R8M)Wa{!D3Qt}(_vd+um* zPm`+x0siMbQm$KhXO6yjH^wq!Z)8g4IsATD8%Bs2y?38S<~eSz8hD0*bz}>29mf-1 zJeNv4O*;~V6ubwZfIfqe16SXSS}_{diF`TcKbFDMwzRdJwc1@z&|Bx82~TvmZ`N_$#QR@l$|Soc&*$@G8slk<)H7bg z8<$PU$%fi+b|MQaPoFfws`GQ+3LwKO=Nx)Pj4entKi(kc59`d6HvE?JF!$J)7w0eTxUoFm z>*tKf61cC!(zvr@z&rOHF~%YEuJXxf%d>Xe`D=ruyrsrdW(K?}hrG2e`MLYY`={i< z7UZW;15sr@$5C@er!kHaOAmpE8ZLMqsMF3lDcFaDLGr5 z{)Qgy$n%bj;<>qVx!c25=JWs8claEmsx~~ycoI(?Q7?=!aR-k6iTnJK1^t&h_}md< z?AQZdCMD!P6?-Z*;(nU?=P7B%LD@suS2+@SN4y2^xMNR`nfs`mdsLXO>D%+nOb|vT zbuNc3jz($pl%)8SCxCeyfSw5bamLs<)_Jy)GXZx`xNFZCJ6E=hYV=}s(?{Vy#%LJf zz2P^W$7=^-4pAON5Xr$hDI1@Y zYu5x{oa<2DWbDCuP6r=RkNPpP&(gWG%M$}!0|mLfCn?sok3gP$NRZ^RlBuw;JRda< zQGh6yeG^~~;O#LD&^6j|p7&9#4SBZE0Lznwb2h_Z`*>rJrzFB*m4+Y@BNdEbNg)qc zX!L#=a}c^L94!wcqV#L&@zIlJpXMs46RpF2UA8+<5>~*McApP*phVuFCbv5|ba~G| z&SeEXF!#^E>>r4-65+Yshu;~9KsJjfgBn4sd%Xnb6-1*UFP;wRmfFJftS;_$1tjn}In$5iD1q zIaYa3gT2FwcNX})ym3o=&vUEXZ?T~-DdDXIqPI#=J4VwOm!P*h88Qn{E>U5oLVEf( zJljUZn#p+08?h5nr)*dLGU$3Lo+FZ0G`=5>)oua$X)0=}gU)i$7lt8aFRWq-dPpEN z*NPN8A<462&1i+Y@TNzhMR@+T12L~qq_~GZ!TD2*9#@6h@f=tHn5i zcUtLLa>d2}o6R|v7M>%p6t6fsX?1yGhcRoOR-zX` zTfvAZzoR{)hetkj`pD#<=URp5ad=XX)|jWRI7jmK1y6196)`l(hR!t(_tEH+(Cg!= z6zS4gn+aH(-kV;*sm|4=`U|^f>F0AV?JKL0^~${8Aq< zPHzWJ%p4$Qd;+wT7cnZh>hM7vhiGr#p`15|Mhvw8)9yCVy?!5jZ7^$4G-w+L91Iz( z2eN0@z#9X#1F3^M!69vN{xh(0aQa}x;N5{~z%jKA3W07$yYdJmh!ng8?82$Q^M6*T z6#5EVgnx(zfv@|$_+#;7;(Ov95~=i*BvtZ~WS```?uAYeBE;- zaBj0i8o^}9u?kp79fKJIPH?vcIlgs_bzJKExcBj1ZQrrpMLn-~|Ixj$r?%%rj~Ixw zp4|aGPxW5x)%1SX)6&z@d$dp0AKM?(zrFt@$1vwwV32<5Odq&^uzj!zxP8%R={%3= zz(D*-FeF&$S?IY;xJUSla2F8wXNn#ZrHK4RsiH_A@b3~nBlHoLd**u{^L)hfDsW0y z3)TQvcZy)XV1;0-V3$BIhy#A=T;U0!NHjw<97w`lz+?Yhtdi79+vNvjFN#w|3h8zE zWm&uAMbSj)!b3bpoGu(C_y<(2gjYR|p+`>xdclmrPaW6$ zlN=Wun*Ok!Qu~_jZ9OA zj;E|Qt-8)%JLR40JBD>U(-GZyr}N{kk+zR*Q|*s;NA&#I)7G=DFR%Y2$5H1?19Jyn z9(Zb~2*`Zz0I&Bo&lR2*Jg0-h;fOF@6eNxpdx;i_mW!8*$BVPXXT{y(d~pV_#*axA zvSqS1*^^)deo^tD@_yCps^O~Hsw!29N}wE)zpL5+?&cNJ2PJ9JI7O@cqI8dVtKgJJ zkmq90o}qu8Pdc7?JVeA)G^<>$|~rX*7-tL zf7f{1TH71;_qszcVlMVx>GO9eoqFdDr*z=0!PkfOcpL=su((kJGWW4S*pz2EukGn zov(LwbXIl!Zj0%b_IUItdVlP@;MfZkqH~PL6U=#P*}^`;9BXF{UkTY$0wVP$WrMt5 zUZC~WJ?gbwblh{e>`CQe)f(Ah&&PrE{UDqBlKdUD>&?YfMLmrO(uBe$ZOj+0&)&THpCw*C~5Y&-U)=J+Xc5{RU^ifXBdh z&aa(YhUCJ3grS1T9=#s7JiCRLMQefJzT5K?p-uFfZC8wMV&KQ3j49UyWTY*5sZ8{V$ZmK(C@PlaDI=6S#orEP46gM! z<~hmZTZgQ#vHuO{_kD%7*`1QEoUYBbY4)Ew$5_U;ztuj<`bp=Zj@_0R^Y^A8%c71K zx?boy+_|pn4{#-?_nht?4z6Jx5UE=So*%3lunj)$83~;Gw>__eAz+s1196V{j<`(R zAX2wYLp4E>p*W;D z;9IWxSJdZuMH-{Jq_9ht3*v`Lz*x}h@!`OnzMH)_!2m4ndA-xxF~4g;*M_d=yKY-| zm`d7an-*DvJ0@Cx#{&Ev^JvRw;E?&GE4}NYEf2`{vwP0)< z19!t0qAi}Ed;Tn{72k)R@St?LWT$wZc(i0GIAKo7X35sb)bcy>cNL#2N2yM$UiCVF zpB%5*>XYirnl+kMuYS3|e6ePMw^B1!d{%IuG+q9iV!m{;pc=D$0zA7r&ZNGZJypHW z_noyL@5ty_*^%7wO2>O0bF3BZ#@4HCPLqdKZVj_kngpi%&C5G3cZJ(ZyHf4OZguac zz1R8_&VqrRLlVI;_=7Ka1PTYmvC?Cb3*y&A3F39q-LjSPX!$VNC~3K5gY1HQm12oP zqu7sLT%wF8oC>R(wphL-CO0 zB3N4+9a4BcfsTdXp6KfK?EB2NrlZ30zGbpC)Ed)~W+`mD(RyFoKJzQ!S}>X3GYQN^ zmUlbFwiMeRU1RMxdUL=!Q`9%kd35L-n{rJu^bQ!G?G zFTV&Tk(cCR&~+ezsTGf~|j;J~#bt>Nf2%rC4`>S*6HW-{)93Snct?;D+ZkVV&>;(E`Z| znMHnC@s0enR3g_ZLsV+7J*t0{7Zj@%sVaw8k(ba*<26kkp}y@^tKOp-t9eiTuV$5Q zsaB`nteWO!QoW`aEiX|X*0#v~;aOktctsp1b9kuu>2TjzJmy2e|3 z+TU!;Y@cN+GF>(mx3)D+XnwkNjQJ0X)EsXbXG%6dVqMo&11^f79`7FC{y9#cfd@Sz zJv%+O3*Qw9B~6lWX`W1_IEz{Bio8!=r7$ahRu`+&)eopz6q{8G)pAXQ=0CMl{g6hW zNzy#6`AZ|$PSjTF8Z}ROHLC^{@nC=rQq1t4 z?Mt!GwDelmTc0pL-`?F?-4@*bZ=1ed&^EkzV`F-=sa;_C+blMBwQp+QXIj>o-8-&N z*Yj$3R-fLncJQW$r|=2kf5HgyS;-?{f@zQis78Bj@sg>Mm6ug2uQv5j?Ig`n^?hD1 zd!1Hq(5%z-X~$|G)o#{2shtOgE-9FC*69q|BK6~5e<>Z3Udct(Cfy^d-@(hSaTW{i zN>&PE`-i$htS_^D@vbCvscJrq#ms=0DXJD(-|6ORpVj=PeoS*fJ59IHdy#H})$O_lk2-(vOz*$FPkF!P{fW2E`&Zq4x(wYI zU8VL3wMn&CF;|u>-YhkF?UsK!bh_KSH*G-W`J>0&o~f44%>9UyrH~(Y(!7l8Z;JDBq?642CdmIyf zBhpE|;rUt>O-h+pg-YXfNb`&LYVSi@t6B(F(~I8OzJosPx;5HW+Tq@h`F`*Fp--)M zmrmwA%)89{koN}dqnbC>&wJ%5t7WrACE_OKHTiNuV$WOMlN`Tcb-JTxyJeDTr)j@+ zr}dC&Q_K3MFPnEXf83-pHr8)!nAJ3^<<%yMF}7i5*OKLc~h8Tku}KBdJgU;Vx24c#aoz0RsNXy4Lxc|YQ_)i=g(r;kCm zRwwc)_5H)|XTKA^Z+LIi9nzijnF>Bdjpj|SC91#VQIbufXr;f`CC_y|bL{{2|21%F zXm{VA*4NrTY1?VJZOw1jHn$sVn!anwY7{i|8Cnfj8csBgYR+#cGx#@nHaE1rW2!PO zHW!+U%)`2Z`#r`fLgRu}EF&Uc(otoID> z6z_L@4){G1FyDW>&rV&m_chohV>hJlB2+p>=^C1IOHeXCB9$U2oBnP%B$+p+9b^i_4}GI zUunQjza>7u>%Q|I?c46x5O6HuZNH5^`@E0%J`tb~SQ#+d?+@>h-d}ky^^5V1)9z7w zDv!$lmYfy74<9m9RA_JL$m`!YG<)E9kGJ(ytD`l}ly2#1^E1BC@Ice-=BkD-YTwYW zG90O2-dNfgZk$|a&`)i2v>r0=H8-1nF!h@r?VQtBIM6s?aZDLV5lj`oD1AvjOu0+B z%S)nd)qbGy)|$Kz_)iH?`EB)i)2Gp=$!~Sw(?Jsg&Auyqx_rk5{2KIG&`SYZeTHN6 z)b6*)Z@(^HU8881trJ%YcdG7Ff9Mfy|E%MSz8{9d2WIsYv}ZKOwH`NbvCM1EG!z-k zP0r@^hKFl*)%>V8)OR(OH5S(==*_ifjRkE{md`AInk?-y^Zu?Yj?IHT11p@?fiPjH zbdo$(aa?g(wOMlpTc$ScL|uaK+W~U}H~U}n_4L*GzZW923_r*>M6BZhG|B529b#K=0H+Z$0EL$y8%r{LNOvcVleO55Z z#ST0?XcvS^+ho@jv8r;FLzAuB=zR?w(gVJ)2R;<|ZouDu_xT<4HwKmm_Xn>GS|5-S za4A3(G%chz_`^UiKOdh{z9v7LPrl|WqCsI8zlNaYL3=S)c>OYv)3RFWQn#lgtlWH(C5F zlWj*Fix82P4!$f16DLbQl8d|wG*6;^TfL>eXMH~O86NOa$cP||e|W&dfeV5s1(yVW z9x4y{D)5oO#ldq!UkLd*=vu%6zlZ$l{J!%0SJ$nWAs;3FT(nwqSoQUwy<@ET+nzq4 zVy4>nH2qz7$7pW<&3vj^UH5YB$8~%3RW++?U)SqvKdtqt`_Qo4AkpvEw?jUQ=_B)t z=6_6umS%hJz+}(6gR=(DdUT79D4tPVI`1zAOFC`;PXz6<8GfYp^6JEAYLb zBf;}RM}(~kjSl%J$Q<-Z$k9;G(33&G1)TAF+t1|pjqh~rB*htVm#0N~O6w(G-y3W4 zFxz|fd*}u)S&kTNwfl^%?a#MmG^FTP>Tl~ys#2YuLt+tAhA zWg4_>v%Y3|pnaqDO^2t@AzbY7%utkYqU=4@b#;htiudc@Lq0qFUV%megB}js8d?*q z4-5|M4L%+k75;Ph;;^;B8_*Y>AqT^%LeB+0;Wxo&qECY_m?6C+lJcPo!dJaEDl?q3 zEnC{Z>A2qi>flP-9OF;b^9`1kVXdhRVttN2RlmJzPNiRUR&7e{c>R+GN1a2zTrV;_ z+jzL`p0%QLOvi`j6PC(erQmnrc;Rf}kf=qvK&e$<*Piv6<#)pW=Kzg=h@UC2AWRpr z6qi=>gEK-ZLoS7V8*zWcM`6-nMbO6JaiN<+9}9lNzrg1&Z>{$e+WktgWW!*Jph#s? zDEpS1M>T(7is~~t_uB{RmsZqOoinOhgN#qtI%_Uf->tY__IuT%`up@PwX5}O>z37h zSih$JL}OyRw{?&GqHT+1UB^%TPYdse8$~u)z@OxyYK`tcpRfIj{hki|JXjEPI^bAv zW7uEeUxeQuZVA(bYD4}BogZO{{5<^c;59+V0w)H)5Kap?2aS96|Ep2!msk0egqN`Bd`iUJ$mtP(hCdp5CUjV2UF5~EmBG&itqR&6SP?ieV4L@BO@Qh@`59^H zkg`8q@SqHP{?_}9D;h4gUbijnd!YUK^5~+cEAowZjM|zB75gjSth`nFcj*IF>uavn zjMJa0yI%Kk{kz7IO`o*Jn8(|*;lKCUTYA3|yd{$;mMMQy*}V?wruxnc&;@M>dN}m; z@UanJgb#&jBGyL!9Csuq*D%{w8#Q0+E*NqjH#O`-3I{n6?H|~zEE;7DUmtDTJ?72!qS%1-MB~8^= z^n0qiYCfq8Y*^W_p#J-o)#m=raqtQK`ciwob0$i^Qe9A<^{NJYwAFj7&y1kA!uLl^ z2b{lO#Nvp=$cJOzj~y3njPi@|iT*e;Dq>!wI(lD(Ei^kMBRD_sg#UBCN4y`_XcZOW zR|K2-Ji9jzmB}g{zcoZvZ>f5@C9TKQ)!c9`|FN9=%1+h$8Jj8}Eq=fFz`ZpkXUn%$ z=T&`C*;RG2cA2rUQP5J|bf7uABe}0-=z?FiW7_khnOt)KdY zyk59xK-_bzb`sIbw;_Ky8*{mnbMH@~_2TkY=psLEGMzbM{R^y}R# zB|bHe=_9I5702~+j0vp)?Xy~>tv`0ma(0W?ias4UF!+@uSi8i}?msQ)PGE=stl;Rd z%otg`G*%V+UChHV+hdo;-4}m2P8hpCHX}AW`uV7=h}q!{;j-{?A>;h#dWY(AH9OVg zlue$WI+DADCR?vrQtf=MF{5Z8|C^d4R!h&i#x=RRYkj%Psxu7FSB)&0d~b2lg1Zr= z&(~Dco~qnZ@teM&=~45u=JhT1){`Bx2PerhW$$>tC%7RC^bQDkCiub>R}s?1SbkldBcQ~l{TJ*+-#d6a*|$Unmmv6 zo$cJzvY=suEoMm6`Ag-poc(w1R*q;dGzZkKy;XTxm%p(pK|iOmphQ<{ES`RES;fDG zu!e1QAJlJd-eO+gHP&{}Hop6H=Q~oRc8*q{dQx#vCkeGj&W-sjIyrJ@yLYH1^K6HMP$) zP3eES=WyM-x79ax7oMws%=BGDaY5vzb5~35o~ur(dA~wa)=~Vy-DSnQYc!3+n%6ew zHkP+->&oki>b>488;q7*Rj2uOcyH50`5Xy}iTphF+xY46qWIpp@d@*X6%OB>oILDM z(##}#{Cjav#LtX-EM``8c;wlT=D_CzQv)aaTGa~__oSo6j|v`eMD$GQ+R(J2Zhza% z{wDLXQp1fU*Q-j;G)-=6tbXcd-ud$D>r3yi{ibSpS!2n@dm9R;lx{S9&~&{?-1KAf z1Lic_X7GCcdvZ;36UZA0zTjZ=Hy>(uJ! z+_YR7Rj{{iX8V}B2Xi$SZ(SKtkXXK<@~4WfvdZE`1(Ai%SM@i3-D+sOX6$W!v#SCz zleZl^hn|!Cp#IH&YQSROQ2$+_UQs{BKAH6G@Z8}6iN1*m!=D=A9R6Bz#E9=l>>Jh* zcPe&P+=Fq_*y6~kVVdCd05AWI-mj|+(vjkDVZgu_cB{3ab+R>w67nyQTFn#$T2+bVhty@}3V z!CZNP_g?|0{Dpo81HK4rja4Rnm)x7;JN)3VvZR{fFQq;|a$bsK#2X{84*w@%M4U4A zkGNIw$uZWj{Jd}-|G9*Q8th#{LZW2 zcXD89;L*T^A+=GR@u^7>Bj%5Kcce9WX>xFCMe4|r!jW02+O#)PQWJAypNgBBaDTiw z#vWD{c+dB$wnBYK86(XS#ygd^BJ;84um&&V-yL2Z`-|Vd`oj62@6^`EHGfd?*`?Vh z#g_(imzT{hJ9;;!U|WHp;Pt#$%b#nU*1XL4nqg0Cbhn}J&Hi5kAkuisVWzIi7)Z%zK#%6W}RjS2O!b!*!m?%m@&;ArgwLZvb+U}ku4*x!NE0tHd0 zl24C(Elr%hYgGA&StF7&lC$n*Mx;MEYB2Suv^^uw5Bo5oI-x%Pcx->vSE1YePiW?W zP5QEIu5ft&)sEWMKEwICvL=l!xUE0Oa<=RA_}smX>zX|8DNnT@`uF_ayn-@C$iefq2GJXm_BHlU2&}R zzqZRA|Eu47dDo%6r;T@Fi~)w3z zM4!^!Zp#_^(4&5^-6LKh3YZt25cfxPL9{;ha?-6)?OCfPKAqh+`or}8%;N0YiCeSN z$24cYF#7wn8!5t+#NmwzCt`k!XbC+U(505jY@!{)hJjeyt+v&5@0U2LDmu5CwiLc` z>Z=16uH375%AhTobf)D%^^xmW78UjsmE}Es=fLf>>vwJ+tUS@Qt0^6;hsVs_&euKP z_IPR_Qaq%~2{|0IEn#w8di0uvhf|--JTPwRBySL$F+^}H>8t9b%OB@csIr|rMi;0T2GjD`rod^9{t~mvYY#> zH&qO~x%PPM;a&d~U(d{I%iEXtNM3MG+)aC)u;z#6H;wuFFPoP4tnqkqaP{Cy@fxpc zzvxJ3;^T?`#$Jw}IXrvx`0T+6trN#*pUixDtajq%NuA@?XT6!F87oMak64!SXY#eg zw%7+FdxN+6da0wOH$~3~Pdj?dBaOytbLsK=k2}8AZ@BjJzn>gW&s$JsE;C89Et+_H!u+f=nd`>+Pd+_aHa>Su@>tUufITyVgN2`x} zofbanktu8#I&E9qGNH;?^n3Mi%hcxGw+@~>d3f@*HRbP?J(2V8$-KjVo_zUIYfe_4 zU(SM@`rBu2C~}f3);1cAwwihMH@XG}-|@(IP8aCB68+we7?D7 zHgRa;gzUXz(zEOnL#O;Q{=RYItofM*=`HC$r^Y0|8@DZ57(FR`TcAU;MKVi}GW4S3 zjjs0Q8&#F1{}|`Bt19JJTaMj-wkr30rSabF^V5#rJNoLmmv4F9Da|q8Tz_-@t&=yc z1uxcIZR|CyufA1(+^!dN4$XJY^PHx7)W0@zSmH|wlIXqBCsLM-YnU_@z4y;Ci!xfq zM&CDfTF%7g%n=#iWb8{nn*L1M*p!Fjx*`T5q~VwR-cc2b-}MX_dcN;Y$Ae9G%Hqq9 z8Xs#bEE8Nje%j-Vw$NVMnpbn7|7iNDk_$gymF8sRyqoiUj^fs++jH+aYmYV@tN+2U zxOG_XtAnct{vK=-f20i#nH-~w6UWYvHpKsuwkG@VgeBuwWS<#5HS@^{>+f4Nd1BU? zF%_euGTuuwrym`4JE1yK78wxzW#~7$YqD{ozlWloBfA4TjE3|Qd&TwEh-O*g>u3Hv zKJCiQqOs-r+)vNs9{uXX*B2{qzItacZ&cn_w`W}+aeH&=QsYC-`x<^SeAu4cf4^st z=hmTzq)FbdhIu6Xkk}j>AGI`LR>si@Yp1N6uzF0}=#EUk@vW0zof0#lH{+w!nW@=n ztJ3mE%uldHyc_mKXmsGq8mX*OxN-1!_YCv4=AHV*)m2T>rnm3;Ui3VbboKjt_m{t& z>pXMi$h4EXD;+t`oah_(ZuH&0o-;o8QjxyKS^rYqXv4*}SNdKWT0F4BIZ>$9lmuUh z$%vm8vmvS>);uD7T;`N{lYSiYK!$zv$?Uqx=O#ZfzAn=%L!RD{wk)+S<<*2aG0#LV zi>wI#Oq>pfdzxo7EAD=L>CqFa3tjo5(h2##7py0)o?Lx# z+|5b1t8V|1msBt-tU|P+HRf*Zqo-AT%@F>3`)mNe|9+JVu zy=wE-hCiy7)r7T0HNH`pc>ae|e_Wqa5>@%)orY7>k1PIDT)mX@T24Uj?>Sd*pTB)0 zH@)mS>Zte4&^zVQPK)e4sPl?*R-^9Y59Vt zO>NusyRI)e8GRu!x3IFODEo@!zlM`%F1&he!mU|(PZxyde{*}pt;g?1*FDx$(QvO` z*m|aC%TVEf&rrGG9o1{WlIS<$k4L@`wmL>LGI~PS#3f@LX%D9TI;Ltu>g2yB{*@V) z7L)FuK04#$RO|5Y_{rANFi7T?c&&WxWr@x%uoO)n* zU2J`1OXQ)b7ekfaqol#$L7z1=wpVC6R99KKxFM_kX5A;b(=Yt*!pFC)B^jkbw{M;E zId$;tf@_{RhjYF2SLLPTK7Hq4;n}K>8n!iVG}g9OcRlEQ9Bh{Lp5Mtue!oUsiph@p zDY7mqC22$Er`aE8NBuvVt^z))-phIgPt}km69ZNU`FyP$)%8DN>*mC=SJ? zcyYJl7J?;M+}+(To|AX~?_7TWyw6?Uy|-^?c6N4mcHZuMBOO8~g)izgy`Q+>;$Bf< zjUm#oO=07MulPQ3ALe2OUyx2d&c;+Yj`N81D>J!ES3jeCNnv#9tNM}Ux00e_+@i04 znUS|9@0a+0UW7iL9j%SqocJ*Lhol#YU*aRG>`qtKWxybE4uyRs{A9UH6r2U|8Sg(9J>N!9~FbgZ}pa*J~B# zQS+59ii@^K%--?(8vfH1ws|*qRk2E>RmbX5%920-@G|&)OlnTa=Lxu(?1Z@p`>G#Z+rs#P*S zRhmD(Qc`=MI=!~C?HJZ7?$bwc=9$g1Kk7Kbt<2d=^~h$TyjuBL5IU43b4QBuu|#<4|1 zKCgY5@osvCwxBetf86*NhhCPy|NV^*iB<=!m@>;&gAyjgkD_{?2i}krJ?5gadX~jR(ziiOwz4>ta#W%6rGb;)unMLoz zU+|;N-rxOFmNYMQWZH-1%Ly}*d~()Ql-GW!5>_5;oTOXNU14a`E#xIyEK+WAk8}@k z`c{$aGBapz@3(zMh93^O8M+{>E8@>y#l0SeHwVrLdK+9Hbjx>^$9<=Gg+kFL7dpH! zyTQuU7wGuit&QCkkBetl9&MUe!Al($vp;50N?wtwF!IZmm+N2r^tRWR4N2ZzLZVq#nvKFH5W1SCv#f zsqvkrgZ-mnl9t1sE_o);a`tik!%3-(aMF8?4qwwdGvZC~$UtGREIcu4P*g_fwZO)J zl)yVdC;aBP-*MzCt>H1{*q;}V;U3UG)34C{+488yy|{lxW8)8Xr*dw->+|Nu=ZpeX z$<*|3-+R8?_WJZk$K?97ftk5!SCa=MM5iVf-K&03lTf+3>Wg}WA&c`Xb69_mS8v5v z_IAs2ErP%0t+O`pZq&-Cexa(sS%JMnpGRDe3XE_H9uoLEU{J7aV2ro9i=Wa~IZbIT zUvJ&t^c3rZu0lJ#!>svG`TNq(b%WF|%Ex^k8#DghZ@JbLyYokV-uluZ`f2Rz#9z{! zGi4d`Qfm|5Bu>sbTv1SCTK%DNP(yb2Sk@?JpYA7ig86yrCFdh9=Tx1t5vn!bYr}^3 za*ucsw8#HN;Jz^5D6_~(q2?j^finVg{J!&j%f+rJOIDE*l`twNjWqXZL0%X+qj^>Rigtmv=U|we&4Y{h0K! z<&&f+pu#L?S)5yp>doPgbCZ5Z|CH&Oxh8pT0zYkIVQST>YTL@eRq4%7b=O%B_2s%` z-ZG1L`2|O|>Stw(a*J!KZ*@pv*tOvE0SaL&b7Z| zKjl%yZRs8BX(AI|C)<`e+9_(xtB{m$uKT-VM6Gq|ikQD%rDRU5sVoajTJiG8%cpS@ zla6JCXXIuaNHa++Ot#PcrM#kAU+GubUB9?%AnO~$J}t23MWY?oIG%S*P;|=Is;+oG z41N+W303=z_dgQ6Ai@wS32P4A>OVQ)dhnT$iT>ZYol?zFgeu1?ezJG5h!dP+2Qn|a z_qJZI9bLYmrm}rO)BNl)Z)0EWPH(IdRdUmQjfs0X_`N8hUq*h`{jABU&0likf6T5e ztFC%exx3F1vvI;2-- zWL!wC|KI-XVDFH_f!&@8r;o}mWu@vLd4bhpp$n&o^&7LYBed~F_4)FuhPu{_vh3uq zW9;9p&v&jpSsMK*`f1&Z>W`Px`{kr(>`7ghbTWQbT1#O#miU)dOsoF4skS@Cut8g( zIm9_4*`YY>ctbv3RxitPYW49By&aJfY~fe!+ZJ#=Vt=2pk=p{_`26Lc6tXa6mY>=+ zS;<%SQk_+ebUe zZ@J0eWk1gfPydt>mN+r-x6DH&ku^EhyQ@Cdj&8}&H8Ur5)rN(_aGPtYeontBf0c&G zYh6DEghkdy{1w#S_a~p6pkBSs_HGMX6)?;{G%zdhi2o(84=zJh`;{Y(1nu=H^1dIK z8p-L?6sZip;m7ii2`~*}{5HAoQSDXkR*h05*+iPot~90qf-aw49|R(B1sk|9ZmT;XFzFiRYY}NO?%znt@Cwz znQxeRY%5Ww-72L(HB~-PR<644@j0j=q9jD=KgGAhe^uz-C{eH2u%813e)+zNz+r*= zyobBYSIQLs$`kD8T6`90v6IDD|8M)2`rvZk%At(|)V)e(d~$fd<@4Ku;!1V)g1CV% zDqr=EpO85)`%A|DCk)ECSu(iVz53_s*lN!vfo6#*?QGsMT^u) zanNOZfJJ0USh9btH{0)rkgbtxdQXW|1X=st^nDu;9%$-2#x2Y7g>sJKq{Cdxzf9UV z4_MxY$S!rWQ{}_rS=C#hBd1a%Z+?99b=JPBF~zLJ`!Cy{o{Tj~-anSBYr*Zl!esHZwjl) zO8x2`=R->N>ZeGf=?Dp>>K2xm4_5j%4#Q`&yFx*cu0`O_pq;X;HYq$-Z4?DgW0~Hy|ewN1Sa@+ zx!XC#D$YnB+tpZ|5ve&38MW5D>x+6;)o-PFRdbqmRQFD;i@O=?oB6ynvLGq(-s__1 z+Ssz>Rav#!HR+d9+7kFFFY^{*Wx=lcMRlbOo7-!(?+kUEy`~(iAbXx-kTP1HsR(o# z=~(ZJaej(sjfZ3&Y3eB<@n@8>{`-*WeDN(vGeCLyG7Rf%PmC$oyrE3QPBX{&#|Fg3SHJzI**{1&@zB9F-L29C*st%I~Uwng3m%C2qet z8Wgu>ShOh_XmX5e%i5!_?6}foS@of~saD_2t5}dy|4#d9X7+{Rhj}0455=%!M4yhN z?aORWzmjf}J}#v(MVHr5b+P`>`qqZp=9?XFwFg-%g=5WsvKlAVDsCy>$d{Eg1b;{P%;EV|c!z$0# zUaF0+eF2CJjczEbfLmy)wkWpyTb3@*kq=S%xEJ~T9_$pv_{RBs?SCnl8_t9;2$cu) z_37>N%=eJ*Q_npvSVti*w9mInGqVy*;)JlyX}@iasohjwP~q0}zA?05_m|$W6O(1d z<)z}1$KsmZ zBH2^fep$P`$$66R&%v95hWK_PbU{mCK$tjuOh}%8Kc6$+Q+;Op4ECDodSB@#4YPk^ zV`A~ONeSDDx!)bxp4ND;>SE>m#<@+`^Y6y*{J1J@e(9G|^USokZ(jR-JehVbXLoj0 zx*>gj#)8a&x$LqbwbAu;4WraEJAToW>#7VRg%2zS+rN+%N`G*eEj{O0>-}ADY*4a~ zlSh{4;DFnq6T|qyxBPOvzxPsk|L1+)^B0%D6=GSK)Wg<8d`%$YAcB|9zSBcpQn{$y zyPn&WRUVjn`*VA;Prh^Mf!sw2?y-;KQj*)VFXfENip}6=P0a4jRh1s7>EF<=$xS`I z-Aj|G|B-W07$-hpGv6UWCXxLp<2yxoi35fPc=}xPto7pfPYLdYalY6$(W}vOxYshT zlODUA{T25eavh@U2TuL7wYe`FPX$jN^Fayqor5uA2@7s zjPbe^U>?Bte(t`?^Ri!2;GMw0fCOLo%RC-=l)GPZed<^xx0jB$yKLEL)-CYhOl2N) zC$yzDuCKmQTi>E+_&U!vp+2!YKfhve+5L=^4;$nDPFk32UU)3`M%JUut6BZ>W|V~0 z=<0Vjlr^@g=XGA!-C!N!Nlp0@Kbzm|drK>%bL20ac6i$PPV!0e^!6O<^~qPpuNCq}84KXLfpy4hS|;>v%+>0m0l&$Udc8&~yr?UPo1V{VQ#X?fD@ zyzP~;@|LXFPsctCOKHlDDI8UBC^sYL&zuu^p`|P9Sn6}lvzw2!W&tv!4`+a2wwcsY zXEVm(o`Zw*iM-yqkGIxmo!2h+{ca;YBYaQzzw%qK}9QOH4vTa^&QLnOV*Sbfp2HIRB)oI0cYEaJoXNA17h96T|%659ov+>6$R3K+a?RP*=(T=FN__`#B@z-=~p+hW?jql zw&4{PSqGk9%MC9Pd8Y^^J3-(>=$P z%7ya9ctzQ5QEJvIOyp&-&*)EgjcU!TFRx3&{-Urde%7h9jC^6`-s-+ZKcr1cG)qm% zWs38Prxsq$3&=lExV5yTW^t3C*{W$}i@Iw*GmW)^qv7{9+iP{y?ymi>cK_LbRNQfP zba(S8!0h&_>vs2Z9zxGWo=xuVt}C4Ms$|JHi6q}|G77q@J# zH?P;W@>@zvT(ibzyeiODPOVZDPfhzK!9Dexyp+S3^I zv|_w0&)(HWX)(y`m`OD+nH8wlc3HJvtN*p`xZ1I0b=CLzVVRBDON;MS%r5^X?@;Rb zdzl<4X9YJ4*aY!b-j_ds!3HJh$y} z`^e5#%~S)2^O`qO^s}XymW}cQ3+mH4OWLITc=^4ce z=Qpm~UHiIDb@g#^alY#OjmutVo#SccA^BoyU%R!|YKw8=VWMh*mfLPvrXA7wMV(l; ztzOtNvgJnQ(Yz74e)-!=7F4LpoeDWw!!p0iJ6mK^cCsR~LR?W-wxzP8KDlLI`@fxq z8j0aE`w7=cm?6rQxY}HFm?GOC)i|i+YR7)A`(0PMEOKsgdhaB5p5pB4RIJp=XUYaU z)Y@*ceq)hsmSd96FX7xaY|)x@Eo`ls_SOvrziJvq0l za6@Tm*=($;7gaV_>TA|ExwkRx7ZBV45umUKbEr^f`c87rMrYq3eJ*vAK9QL_E_6BP zlIpb9ajav8qnFb`N1drO` znt9cxMXU2y7Y39DRsK>jw|H@0Uhag#meP@xudCwVP#q!E%Vj zZu3p1mj&aoFYcDkM3c}_qaN4rxWTU3s&R0|%Aym+nWf$pPs^v3{tW+CPLZhW-*S27 z$*PE&+S(U&4;$~d=-QWemUX8yEMAykp&&+BB1**y@^2mPIBc|^ZSN<2r{FnyIU1Br z3YB7oyqCPU{IYBTRzaV&`DnRAGF1HB%*@n85XuQQRO$w4dUa;CG&UqP^lcv0w65kx zsYOXuNp<;_sxOr{%BB{Z7iX6$D(_a?)^*lxum84wQRC|tX(vw;kG(5e_6uG%-yl3^ zw$@^a^?KWLcGv7$?RGj$m$xdq6neQpepq%ywo;~%zQLONI@=QKE0%vq&Y72rW|%zY zpW=KrOwosEtUG<$dNn&Yy==B@8dY0RzN+kS`L4>L)fQFr%fBw2SDIKZuAWv~UguGN zss3hzvRT=7yK{g>qixXh*h=02!9bHNQI~j!CC{eG_L1#2+j6_#q|4=h%U{WEN(&s) z9C93fclgVGnq8Vro>iPhgZNwX38E+yd%*zi2-b1EM7z0bX?vGCx%sU6UGv7eyvkvf zDV6)HZE7s42UlJ%S5P3z zF<)SD$!fFp8SI1j*>;hOysyDzpM zY%6UCV`Wj6)jdlqi}m7mvjL(&lTd-2C&eDeZhfeBNY|V8UTu?Gi(0(YiyBI5C)GyR z-ly<78eZL3^=}#;HlApTZQk2*x@}p0IO($!+Q_@UW65yy0p@LT=@ z?n(A0gNMFbliPK++fvV+puj0SYO8u zlme^WR{vQZv-nT4OsqCb6@4=O-sFTJmlw)i$ev`FuK!K@Q}+*@yV~p8Znhn3>1rYcy|eYksL-+v49^ z*;>)IwPSskn`V~wg>DWrj@7|tIEx?!wn>-iw`Qlz9-197w~*|%@UawF{%#?&SZ{-dkchZ@$gcCz<#817pBD?zGow@IK|?>C=mZfjm+*4O;0 zdAj*D^D}1cq7|ZQ({ZNvu;kJ-QU#u84tfN_R%TpIKxW#EN1caM5{$ZL`y_ktm7VHmMhwTU8u)RN0^qI^fy^8ye??LPJKIG z0p|((6=Kq+GuOd|qjsytS~Im<+U4B2t7B@%wvG`U$?e11&D$3s^wYYI*Bvz-;hj01 zZ@T{L{zb#pCP5!w>1&zyh96mj*#VrdxFdOe_&2fV|FmF=P-=49L}y~a#}|9hFPL64 zU23W}xnQ!y)aAoS@=?zAdDCOD-0IC63i1=3S#+_`2T;5VZ0?@{jY!@C$gOc`@A4+yX@1xWX<)M4`V8riLwy1+!ZptrO@jYS-f!p?#*2 zX&!f%c6({Q(+t;eG@0Etn&TQ1?MUqs?M+n)Ub@mA&{KFwJ}fFYUL#f)N<*y;Y4exTkQ zT60bJt8Suhur5s38{hqOA-cZ0(YpDF6XK?yr(dLBg_QA#;L^bSWjJA2Vc3OOIQv)% z_G5A691x~rT5g=>7MIO>Ne;$>mKQfbZW#v=+xEfc=}2DTly}& zBQu`a#ynscW{6=Uq6_H_V_BzI*(?pqmOTn_Bg)uroUb`UQ1XSG`}b|1#Agy9GSp?mU_%jejoH8qXJky5K2d*AKSw_bv1~&1 zetLJkzkY{~F zl(nDroTX=lu!9k)!;;>$F>>&u?_=0tq^*3u1Vg;EYuG4G7 zKZd=A?+xJwz9FBHDs$TUIzRtA3q`Ops|Mq4V% zZ-b~@;}MnR03r*$W@WG{5TB)n)ygtuJF-LBZs5d>ZOwK^xm#JOh-dVWb)2;U5z6`^ z+Eq6qGo3c9F)TMMHB5nyatxJBE>ptP;SkrmHtldEM zCj3Z>U{BGwU!ip!N38A#h_$rZFdWn;ptb#mcGA}nY8YZzXxM=0OWzx&Lry0^{S{(9 zKSLBS!ek+o%m|dfH}q*dq_BhaFG{(GbqJh1L6oPrki`{Txs3D2tkbOD!P|Opu^wp$ zAXXhkf1}vj`6$!BsMA9z-$BDB(EkaaRfZ+_PoKrOb^v#_q8GS`IA4T%Rfnf4(PQ>O z)cI*>-F*?0Y8gs<17+L<9lH;i=dof~7x4Q!>oY5d^$uFHn6-fQEBM@t@8O6TM{$5n z5KpTP(dC{azTY9kPEh$1pZ%zj-_br6quhU>eh#9Rc0yn7A>NBn*QP51yl9)gP%(1BHmg!MCcaDxOWhN%EC znNxtqb`-S!M!PtKo@PFDZ7I0fiE{sGtd;F(bJq|F{59Wm`G$Fhb&$h0XvRVu>oHbdLQSj%Z>J$Iiu3&(k@!kLpW-xA)Z?#=n(#a8PmE=M zqwde6=HG+jQ|RLpV;jwaJf1*C=b;g&P#4S4AB{lm^+DV_!UdqH?i3UI19&)rlJA2w z4uj?r$l?$57l(0W12{MYt$hetoIjg14VDoiq=kWpDabJZWn0d=gEn~oQEz`hBbFjw;!x{DXK^(eZ}tccG7a4K;0SmiN+6+LhC?p%&<1|NxI7Cz#zshG z3u_(P!Xj|C*r=B?A%i}6(@D6r6qlbcGg}cmjtyS2P_7q{_!In(K}$FSO+5y=P@i-G zZFD2}p~(1e&`P(0v$q(dG_WJyB8FxqqW^`XMnsUR9dz^;9Aglru@7Xw-Pj(#G4>)0 zSieCxCnBvos1JlJC?235I#!PeTohL`2lBoP8tEusEK0l$`tSf}uONrL;9?gz`-J;9 zps9aDJ6=KxP0)-dIHOpiZio{}@x&#t+D2n67=w6@A&8;46y;wGT^wYLv-u-xYYJi% z`rrt`5enX=;JpESP_$RV4T?r>L>r^ezX9z7sFz!4Ija<_ zamyC7cwU7k++ciGxQ*NMos+(HSh>g8=t|>*bB|Pi}GiIvs;kLdyHEY!#)R` z=cBdALDvcS8gMoeJ=o9qCXBb?XcsFWgJ85uKWN1Q^s@mNH|0^bWEg-IAK`XKh{B-GVl)J_DX7mg1_>!$vfFklIBm@uofC|wZ_s&hgB z_z2DT4BiMsJQ=hp!X?R_qAwD1D*X}ui5xoL3vGmAaz=pGcfd92i?cD{Wf|g`ehm&r zLk7#CF@qr=FVx61qzOjZDIO-F>e)d*D3UUv+L<8YC1GAx8Dp##qAp^6ABXbHu5B{ZF$NWc=r8FhkI(P-?5 zd<9T!wTMTN*(oQ5zJuoG`k*AWw?N9tce%RF_a=Is2o$ z)PoF!Bqrbv@!^d$p*RRLfDjH8kQ|{765bRcvxre6snEYKpi7t*YDAQMgx;YQ{XjSL z;vw2i9b$f3q88$Dy$$2&FlYc9u|C zLvWp11L2-gpUuXYOfgnJp?r;?oeV7`JH2oAELi!aa{z6U3SI-3J-lF(Ktt~f;oB}@rInkPh00c7C~sS;8jX}KSIWotwT zB?L>t`J@P?6qS@>ni8fgA(f?p-aC|*^z1Dt-N*QO3pC$=gJT#eZ{qx;aa_FxTcZHf z>LI7s=$~qk6ZH_)xJr0Kfsnlus1RBtwMr^2VOLQ^e@E~`(b7B7cLZR3_=s9gf)tz3 z)80dGa|M(?LEWGvH6IQOIlF}*$|F;3Ucf)#uRpj?lprd zVR{i7<4cS=XV9~xLVAgyy3sf{NkfkNjn?Z=uvf^QT>=Y!v0)|bl|A^q731P@)Wv>` zO^3nD861ajm9X2IArV5&qLxLG!}Z|!J?fT_g!f|X zJqs@W0hJ^8-j2AiyK!wTD6a=6lMH<@i}@A&tj6~u!!MB1Nj!xZqo@fQr^u?giP)W& zU_+@9jhlri*qzFKs^>=&=Kwn zjTEiWhgT>o;m%Z}uHVD%d;qDv0A13ijmEj;??!8RK1w$q^uCA9_&w;42Gxm%$@qK^ z4(8zhPms(e$Y(!zCmSlsIA-1kWtvx38pkO@W3oh>GeF9ON5_ZM$u_2F>x2RK60PeA z>Lnhf-j1^T4vFr8d}kU)8q54G=uXD3frx=S7?h`CZW)O?b70xe21nTXgqhtYaDN<@ z(j~M|ik(a`{FA{)o>2xpG5qVGaSrI?P0)u@{S)4OCaj-}I9{OTJV348g*>i9!!Mx* zw!s2gX!s6u*Aa$s|D!h_wX)B!!>FaZp@kb!KU5n(Know>+4DyF*~pnN7znj64!Tds zi?J9ns28L8jtMYhvQZ<{zmnB+)|lgAP^H#&1D_K(u0pC?k^8rp&&~t|n!(ORoooiJ zlc01N^-XiSBlx`^XBVJ3F`$wK>NJy}So!T}ku(>{g)CByJv7DYC*1ckv;)G`NyZaT zQ3uq^U4q7+1Kpdb5yCk?Wu$T%wM_HYwa~mphQC1T5a?e(>WfHy(rB}v$Nyu-zUY}z z`?65JLeMBS)&OBr()d{j?IYZGigQmR4IyU}{WwVBA!a1E&~`53I~vC$aP>k?u}6^CRXqI;JU_zcE$HW??1XVg@#_hPqa3s;N;Od;Oz1B- zBkTmSr;4Bhlt(m5d=7Pc1{_e&atVA;4V;4vPU8AMDBS_*`Z37;D(>DvZ9j&*sjqyE z;|=nTM~;OkVJ1pVXc#1CLO&&hM?!3(9{w|AQiJQ6Xf5eR=@7>JbL93CdAtNK4^Z+q zNK0dH9CChvyHp$Jaa;fwXN=VEg8D18-x%C|f^#|^K>Kc^=Ok22;(-pr?IyH}eCS~! z`rQJItnr(^Iqb#!c{Y-Pl$h zg5S4DO_ZM)xui0@#pfM3NJFmF6Bpt`5zw=cX9})TH1Rx8uYeo~kDeln6OV*3kpewQ zfdmQRi};Plk!-yB790?g{aYM#)>G;ypi6oZjccz#l{6_1{C)F~gA4C=kmb`LhtH4+)d?M+(VE{FkN2p7_eR=e zqYzS9yzvUz>ok*306%207vsnW9|cB<6oGaRf-9kw6JiI|P!(!|uvJ>ob_rF4W<`Yf zN%A8!3&Mk~Mj6P`BE*n=f*e8SmMo2akO`Z@~2#BRwn9%QALO)?CwyTnK7++XISY(@Sb`>@P7!V$#gX@b4M|w% zgxBPT-*(`TFw+S+i!h1_Ym5*D2wQ>hF?yuM;EWJ^2tAH$AwnS{yO;Q6;|k?K*ieMF zPWXR>Z$#)xgmz8X8-yK27)ONGPUu`TN4CR%LNIf{IiX9tf*azLa75hji}1Or=43{h z5k3;lwh2FqawEh`!ZR^N%@H0BX%gYE5Pk;XfZ5|9>@MPoc%#u;ifaydo{+}~eTz6C z+nHt$G~1GZmJ4V*;R<;fXs$uN1@Z_Ir-a*Xi*IL0kr2LUc1nm=gl46{6Sl@23607b z2ceHxA!ow(`2YI0K@Nl*p}>7_ zmF@&%UKxyESg;E^q%Tw}RBB&b|9{RRjPp;zza=a<7h@`=@yr_>heN_)#<^$+a`wVq z;?e>CJ^xn@!oTc;qZjg|l93cVkq_nJizg%Sd@wjB^iF@=p<1D`5JH;2k$->8Govv7 z?T=gtla27oh#Dcpl9wt9ev(1BN1l_uNYx8Z(Y%pn_k=g*fin+0Lz4BzQ&dj6PF{~5 zj5aDssF8~x_*n*Go=^EjAg3WX?~hr2Z~X2HpHx3%If9K|6GCL|L8cLyyWq@#N3jXe4wWiNb)66s;U{|=I2ZyZ$8 zP$T!mHR01yTlF>44>$7LQ{(=4mf8e)03yMA1fCrL`XsG^$b&qoR6|rAe;ibX9z7w> zy^XxN8MT`5;|M{IT0xKgQ(8*Xlgbx)_s1~^-j<>Gd~KuizJm zM+PKk!o~B$?_Ri02(6S?Upzy#KrNe)>Rj+mErjYJ6kHJ3gbr>x?LZl-E7;4MZ%MpejjjUXZHZ)4m=s^gKg!4;& zVyZn4lnc#E z2=9zgYzR{}3pOCVi^xJsLXjf`G&;!MD8$uFqt!?A8bV0RHri^0i$-{5EjS1>ya8#+ z0?)!hUR=sM6Cbk0$qFHaGO|YqX(s{p;v0NE8ZBS4+6euu5-GEBk7fk)e(NDVuZ4|M5;T$U_Rky8i&$ukrLt zqir7tiZo9l3z!gpe8?tGG(PSuCjZ&>@fQCmdwQC!m~U#Zzkf(7cf53^ey38=htk>8Ohg z&p_xlh8Y&-Ajz<~kD$PhpSICE+ZKRS8 zx;>Jo{7G6VpiDD3@~>ut8=A+^(UTLEfKYv@UP-4iktPGRM^Di={ZGY}Y~(;QFw#xZ zxh&*F^97oN(X%wO=&{p#yzFGJ()@zvWQ6Tbdevh$_q34`+@YBaX$x8MG{+!XBrTfn z)4ZYzx=J$(I-@z=|IfHc%W1|>?SkeO)Z%I0Lo+eTm-M{e*ixHtpW1jMu2dRR&~rT~ zi!lvNi!AdPsw&7OGANNgm{jJR78jF66PI^W4$r%_5&>%|CAUt$oeO|TAE*wRTgO+ z=R=Uv52HhmoldyA0!X2UPqJ{_jT|eGFU@sGk~FT^A%!dYbV3C7!zkhgDul*HW0n{n zrO^f;i?tW{pfQI0;sM}`kY7FVo8AuufdjJ6{@)s)(VOxjJB#d6vJgUzwj7PGWLuDJ zO&_u`{O}=bn5+R$$b{ZN(RfZ)SrqaN!&p2R-$CGk>>;vTiC3~0LvU>r-V%{bNN9kB zwnuqT8k+m4a2AR?^zPzo*c?8PLpZpj5s=0@s%Ns{f#Giyuq1gt_U&w-_ zvQkcDA(5RosfGqXj)U;s55I^fsxPVmH>ByY&B(qc+l=a_XI3aOYCF{uS*j$Z z2s}lWs|xx-ZHxm=AuGrkxkMQ4KzfT!2-AchXo>bj^F|BQtGkh7KjcFtp!aM5{DK}5 zwr)3cUTTyU+3}?FLEwP!e`zjH>x@j18`XR;O4u7^h%(YpK@({PM%EqGlpjh(mK&9T z>W<#v&|F#oE-Z}w0_iQ)8_mqgawD69{1H0L+vomdGeo!a44-OUX09gSAE& zy|kW!-YigG$U|R4{ULcDh&$@z2=A8O&yv)sOs3$F>`n3<5ub!QNN$Zn`CTZ6mgi>J4f)W6f4YZ{YiTqB#4d}w3`(wh?+ z*=q0{c})v3vXWg!BR1J`g&5H&9gS(^Q>KwW1u2p+3Ik~fmH~~#1`2*>9 zAgka(xc_@gb}? zvbD%^Bg^$8ev_?5-tKpxlYx80Z2~C1N3LXheMC7PBM-8v$oE%`l9DAsUbrG0Y2Y~4 z$opG7N7fO^lHT?bhI0Y#eFB&Co|5cYdXr8iehoYKHSEp1Mz8lB(4v)7^q!Wis1Nv0 zmKePyrgeq!xKBRucPK6S!O7}N0556C>k0DtfFlML@_q0@av_V6?B^t;r?(lD;xlp~ zdy}5a#ho}@kHP;m)Dd}+ z$*WDZMOv7HJjvE2oAL{ueT}?QasCwN#6coTKywj#YjGcPpt`vW%H(IKHxFdVl7^Dx z$*Y=yE0h=6m_75gp7$QbpqdFj$ad_}Xj;M1Qv-x2N|K^=KzFGbB5jp6{{bX^!*}bZJdZ z8PfO6Cuwx)>7fW;lv*Us$I_6F>|A=UO&UwR0a8FD7A zrx_)^XJ|4$LzWre*aNfiR+@#mDL`4OsgPp?n!?g?X;Y)`T? zX^~Thr62DeRLB4Qnj3hLU5$-hk^OQ(Kn5*Qgr*Y2!YgB0LzsdHcwLq4}5y%qb zAB{wWN-M!LgkVqa-Ytw{7yTxTV0YsfMLt3rt;rJcGLE}6c9I{H#y}dMd;HH<;D~I` z9t>vkL_6V$V2ot0c#iB)NATNY!;@TyHm%Dc+n20u1;*V7q$C@$$G=EEVe%yU8OKQ) zeaZJhRysXN{%j>iVtPL6e-U2XzN*y4E$JY#`WzDQ>WI^LiXj&B;{-SJJf z7}>^T!O+M}5+WZ7ts|4-9@)f$VFmVvb=3=Jv}%m3$q?8XE@Qb{jWDk=^ zy07sWvYf+UpY=vADkI0%$dzn)0iGZ)I{CZFV@h5nvMEScLO_-54WdrmdEgFtmucog zwiQ`BMl zdjKeeAwQb`xZ|6=V>Za0N=CVpUE1T9>vs$`XGssmz*R)vp8DGMl+*u=*LiKV<<{Y_BZ*G$s_y~W)L*X_y)6#v5*9< zJ0veSS?f{8SqJ%5$-7JQi*GQKn2wdSv#>^SG1dr9!fLSr(D*0VpbnWQAqS>!|!K`P6b3SqB^Zf*TVZFdhcv{fL|Atq=S0AB3TF6$2djYWbPk8rv1q4g}p-WIfd+Y7Eslh<@(DyjxInu4Lisr znn9Z1G*az4?OEL+eJN97_{_S_e#O}hblZ`<2fWL?eLP3rMQ$i}4=0K3%pS|SWbih8 z#4e2x#*T5u&XoSlX66;s%tT_HfiqToY{lA|$p)3-F|Z<+GMkv0*t>E7*v5`bprJo@ z<$Pdo<92Yq6a2xK3jY)w7c>bf1o!x6{QcYz&O3IyAy=QIdk;kAAG>+om%Da!ZR+~m zeX~0V`&LShv{E*nDmX_cv~Tu8KR6Go0hcS;tmmwfB9j_I{65)puDU_9=EL z`vF_c_Tu#AICDDK6Vnm zt%Q2fMDrCAOG|-Oht+tS#a5qzUbkLcY?fs54}T%|v4P7(X?AwHwl8ZnZ<*12vuR}0 z%%+;AuhbDO4_d!(_w97-KBu{^<1)()4_GgN<9wTQiu;5c#T&$1#~aT3j(34~9)|`0 z7;hSeHWgpM|DJap_txWHIX8&=igSqbk==w*g>U#1J99?q9d(Pe4%!aQ7EN!BNYhud zS`(zbs+D4oSCRe%v)(X?HIVJY*?~P!kAT(M$$iOf;Fe)$)KQLabWs0Z{}A5|`Yc9nh``#QZ0v4Yj9n{VSl3uh*wJ$XbL9!t=n!`?DNgQH;*^AGc*L5f{M z5wH(~urFr6LCZt{gEW+RggsIdu$wGjH$ZQquhN~;*XskZ(@bIz!P-(G|2CG6^^Dzz z{gOS9QwQ|#-?2AsKKl-K%JgSt!ODg2i& z8EyU&D;?|PM`DaGFbqHm-C6Ijiu*^_E3D{0fi?6gtl{h`7K8mqTA*8>#m)*1tfapU zrPbPu(`sJ(d2Crzj34(cyn^RMQXMySov6lex(XK3$ef7TXiFYA8R zndy50)BGpwK-z}&#P@*0YsyLBWN}aO1pJ|bUcy4*B-3-IiK2M3OtV(=da+iVARZ{` zXK_lhR$?i+A!!%?B@PsyHuo}bH?uZ7X&PcOL@*pkxIeO$hU?l*KvYd=JF1@3*j^{C z6<2>(5n0A9wJrHl++B3A=y}oK#WAJ1Wtwtr<))f>^`n};X|ZiTi0D+Kn2BsP*IlsP zWVT3e9w6}r5YuPNZmXj}(HUpeWqAzyxMy3kE#67iOFG2sv73IL*)x%~Xr8HBI8DeF zRPcDbQ=E9{v>VIPa2C4)=PEjLHJ8<$s~%G^ret#Ai2S{I?YXma<8y2B`WMbEUSHNwkzf5? zJ*W9&tFUumcfIxnbAbJp>&tf)91@zE{x0$|`^Su9K3F_lqLCc45Lr56M|y{~m(3)b zZ*8vGe6(r9UigWYFCgQ+?|&@g#u~mx%`CvU90Qn6NH=Dm$ZWR(~Y;QSC-u` zWMS&$lr}KMDf!o=yGbjPSENR#pUbMtWeWC|EUpNxnb`2Sc|+@mj*{+b-5$e_><8RJ zzSzV;6l`87uC{Qt=Gd;cuX1=LlPZ5uHN!PE-nqcJ&3U5pGN*N_Zh5Wrk=<$Q1j$U% zcLG1ocxJWccE^m?>gM>y?F~*1FY50!3~KtK9^byG%Tc$T6~!MUS|QnFy~qBMEJevU zj&c$@4RLH%M#^LCk}b2$b_=Gmc4|Jhw$w|jV@j76n&%$Qe2`v|`XJRR%|3l(Mp>3J zFTBvaw6nZ-O+o#S&E{AXm>F~SUl`vy}_F+7$)>L6#-9IDNdB+T8^?_XPayn z>o8T;DmPV*R~9HgDim<xDZG@P%EO9biska5GO0tNt+VwU zi;3o^O#1T&voGq$Yn(e*wmnsUZo1NVv~gbJn5Ku#zO9WNt2C>aPn-l{zWFTcKkPTi zXF66n7r8xk|Idx@`kV7#s$0?o>lx;~1*Ocj&g$ljnj@um^M_^qkj71(k}&y8(dVQu z*Ar}$C#HI2{+>InXjJ(h)o1G0tAFp1YktvVEfZ%ef35Iq(^aA+W`Dv}!MRA?zcsz1Rdd_0fEQreCQh?CAr+|f&hc)uJS)BOy*7I;a$o2Yt6D96 zY<1jh1+P+fq5W;6yy`%4NN#Y(+!Rg1&tFnM#eBN(d4GIU;(?Uq88>ng3m2DdtMadZ z-8{CP-91MaZgA!tj-OVzP3c>R;sq zei(F37PSI623|FPcBFiW%SMIU*J>1t(aVMx8bt7yj{{Q)@3pUaQZ0)OMoZ- z#q3*ghvc;7H`bB1EA0k343bvKo+|!S2B~DKovQIFJJo8%Y}qOYce^vz(UNx20O4S6 zj6tit-}$B0NBy>u-!QyxdF`Isz`CJ8w$5p3ZWm~l8ftiDrr$~W+VqjOD9<{(x=r%9 zTh9K|DbqFnsP3wMNx1swgcwoVz%4L0VbztHjv}s}p`tv`!YG zm)V~+C+|(suVq83x@r|o-(hOo)O|&_*$~3{l|N8uWol(+CLU;^vKnF|wyU#0Bu$nN zR8CesbKKxG(Am=2(P<2#V)0SV}Q#-w+i?59-$s1-Nrb}RU-LAI}1xE zkqz&V{&wfMmUHz>D^Hg=7W|%bAXA*KO}&+JGv)i#BWZPbtr(o!nm@c)R2GS7mVjYs zwrP9Pu>@#t+YAReF8p%AT2r~XgT(|O_?FxL#@3x_+}ARrW51?| z`Iq~Z>E9A>n-LB-6+SDOP=2>6zjjKauw`P~@y>bL zBTN#zAOF7a57B$^Fw5&U5A04mERz>0=Bd<cgO%YmZ|jaXa$Ee`!a5qe-fR7s73>?_#eAiS zpJ<-A$zrJ0uQr8t`y6J=9?QQdPAJEy3Y5vp`3jjlR{FhtyUl-=5#mXr^8zpKd_$J@ zkFK=#u9o&@cc8j@H7sqI3GB~;rXn?`J+D)t-N=-%7xUMd{sTP0w>ER_)=Mkoe#+Cz zAw0VU}US6Aa`|W9`r{(@gBT*iqBAxHVQC zt)8f!tlr&X+uEo7TF2F{1KMDw54(grMqnm-D%M-DtyQ*V_V1<3>gD+H2il<7HQD zchdfneT@Am`=@p#w%2T&tRP`)^vfnrNuW^M{M@m-LRi7eJFb& zpRU-d$dX&hx64*Z-R#%djPZTiQdBAMc=94 zR^gA~pX2D{6X#v&tLt&@&+uIIANRTXoc-DWnFN>zVhjHbEfKU6Y!g(V#$mLQKEJsSWO zXAd?C!UQ4!UHVS*zU`OjbL6+-3f=73px3e0`P9tRJJf~MJl7%E`P#eOhu@;(R_52} z%Iuo&AoFJSm-y%VdH(kR1O&we;s<~VJq-N~JrL6o(i6ZHK^IUNi5iF-tQ_x z#vEiD{}^o+&l8>yx(v4nrUMxNfBI7O`S3yPT$=O61D8WZmg zI0+jB*8Pq6Yw|_x0qMQuCgI=PZP@$Od(%(3a^xy^CTan8lg714~-vDRPMp4(U7 zK;)h1WbF*{EcZtI&jHK^ybEg(?-U6cT^+F?c_XML?k1WiW+)ygLMMDBha)B-;vEwj zj26)mzzi1%y#hD=yZF-cYwxS-nC4{TXW{4HxZh3RWZ)a)z2>{>5${OzEBQ138wNoP zJQ7S7iX3twH6>9f;VEz{V=MwJa4Oj+u_Wyulp7%y-w+ZC#{%yASN1&dn(9d8Tiz1d zjMhBVZ_?S%zRse~eb1B7zS7gxbl9NVWZy01&*-@AxbocgEc?*^%LMEQk_;^nY7^HM zdl`WnFC9%E86o*0KqH+aJ0spAc_N)5rXTkma2tCVJ{95-Xb!3g6$KXniTkq z9OuR165amUmDUy1L(w15@XuG!%hGq&VcOx{CFAz!Melz0=>BR3S`MBTwH~=8!z5y~oEvl=)F444MkRPAza}0gR3%d+$Rea5Fdl0gXc$!#&=1B6s0GFVviv#uZS~Xe zcS2MXXbS1{OTF*MDxk``TfKL><;Y-6$ID(IQ25_kLLv8N!riWm(`xs$I=F4Tv zN6%N+YTMb{PvGX}6zT--+xDgYw*m+U*9`&_eiaiM^dA8u2P4}g948Ma@+PDwFeiE= zVIQU(Y#K`!SraJ`y$iJk*8j}E!F-ncW%M{@8EWP}a58Ki31Q$XUG1=#>HjC<;3*F<-&o% Lio-|B+|C@ywa^)_ literal 0 HcmV?d00001 diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/weights/internvla_base.json b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/weights/internvla_base.json new file mode 100644 index 000000000..7190f1730 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/weights/internvla_base.json @@ -0,0 +1,12 @@ +{ + "files": [ + { + "bytes": 6721209208, + "file": "model.safetensors", + "sha256": "41b0fc1e6772257ab5c47f46338e8438cb8c05ef0a6f2c83123b1a614c397f59" + } + ], + "repo": "InternRobotics/InternVLA-A1-3B", + "revision": "08cf716d413aa8208a34f346cd8824e6ff901205", + "status": "verified" +} diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/weights/internvla_place_markpen.json b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/weights/internvla_place_markpen.json new file mode 100644 index 000000000..fc075449a --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/weights/internvla_place_markpen.json @@ -0,0 +1,12 @@ +{ + "files": [ + { + "bytes": 6721209208, + "file": "model.safetensors", + "sha256": "586799539888c69c35f84d083e559cc5f0ba887801d000e70e65f58d3f85c313" + } + ], + "repo": "Jia-Zeng/InternVLA-A1-3B-FineTuned-Place_Markpen", + "revision": "0a557c6a503e6545b369bff2f34c76a410bbd190", + "status": "verified" +} diff --git a/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/weights/minicpmo.json b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/weights/minicpmo.json new file mode 100644 index 000000000..6766223bd --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_recovery_20260923/evidence/weights/minicpmo.json @@ -0,0 +1,27 @@ +{ + "files": [ + { + "bytes": 5273477136, + "file": "model-00001-of-00004.safetensors", + "sha256": "30c40b9a10386c1bc404568d8829e5aada2e3501d9de6fb46ff80451aff7e077" + }, + { + "bytes": 5301855080, + "file": "model-00002-of-00004.safetensors", + "sha256": "fe0faef420aca8f771bec1f9fcfaae01206c56b8e64e4429a1ff500c962fbf96" + }, + { + "bytes": 5301855048, + "file": "model-00003-of-00004.safetensors", + "sha256": "5d0b20153f9bfa88ebcd1cb6bbd5b7cac4c217b3cafb137a291a1b380d8b7821" + }, + { + "bytes": 2866549964, + "file": "model-00004-of-00004.safetensors", + "sha256": "f61addf4747c94fedcaee059e5d9918ed15543beec494404139a99f2f86c9b31" + } + ], + "repo": "openbmb/MiniCPM-o-4_5", + "revision": "503e754207c94da6bb26850b4469f367c9ea3582", + "status": "verified" +} diff --git a/docs/design/omni_edge_e2e_roadmap.md b/docs/design/omni_edge_e2e_roadmap.md index 73bee53c5..49126ed42 100644 --- a/docs/design/omni_edge_e2e_roadmap.md +++ b/docs/design/omni_edge_e2e_roadmap.md @@ -7,9 +7,11 @@ every device. The [current profiling review](../../benchmarks/edge_harness/resul records measured execution separately from release qualification. The [2026-09-23 recovery run](../../benchmarks/edge_harness/results/e2e_recovery_20260923/README.md) -adds a functional CPU TTS stream with playback underruns and a scoped RTX -Qwen3.8 text/image pass. Its missing-checkpoint transfers and remaining device -gates are tracked there; the 2026-09-22 audit remains the historical baseline. +adds a functional CPU TTS stream with playback underruns, a scoped RTX +Qwen3.8 text/image pass, verified MiniCPM-o and InternVLA weights, a MiniCPM-o +three-stage text-to-speech functional pass after correcting request embeddings, +and an InternVLA real-weight synthetic action forward. Model-quality and device gates +remain open; the 2026-09-22 audit remains the historical baseline. ## Architecture and prerequisites @@ -33,9 +35,9 @@ Before advancing individual cells: 1. Pin installed runtime builds and checkpoint revisions. Repair the CPU vLLM/Omni mismatch and native Windows CPU attention-operator gap independently. -2. Obtain complete MiniCPM-o 4.5 and InternVLA-A1 artifacts; another model with a - similar name is not a substitute. Record export, quantization, calibration, - compiler, shape buckets, state layout and quality evidence. +2. The complete MiniCPM-o 4.5 and InternVLA-A1 source checkpoints are now + SHA-256 verified. Record export, quantization, calibration, compiler, shape + buckets, state layout and quality evidence before target-specific claims. 3. Integrate native and external stages into the shared admission ledger. CPU/iGPU/NPU share physical RAM; Windows availability and WSL quota are separate constraints on that RAM. Budget loading peaks, weights, state, @@ -66,8 +68,8 @@ capability and lifecycle implementation; a state-handle type alone is insufficie | M1 | S25 Spark | Device-local Omni-compatible controller; embedding, prefill, continuous decode, ring/full KV, head and sampler; resident state | Reference checks, at least 128 output tokens, 512-window/1024-bucket transitions, cancellation, resident memory and sustained profile | | M2 | Qwen3-TTS | Resolve desktop playback and shutdown findings and CPU compatibility; then mobile talker/predictor plus GPU vocoder | Complete PCM and tail, history/chunk correctness, interruption/recovery, quality checks, no post-startup underruns and RTF below 1 in the declared workload | | M3 | AMD stages | Connect compatible real encoders or other useful coarse stages through current Omni workers; start from the existing 890M vision evidence | Actual node/device placement, numerical and task quality, complete downstream output, shared-memory and handoff costs; reject unhelpful splits | -| M4a | MiniCPM-o 4.5 | Desktop reference for encoders, thinker, speech head, flow/HiFT and persistent state; then target-specific mobile artifacts | Separate text, image, audio-understanding and speech-generation suites, then combined streaming and interruption | -| M4b | InternVLA-A1 | Real weights, observation preprocessing, shared prefix state, iterative action head and versioned action metadata | Reference action agreement, units/order/timestamps, observation age, stale-input handling and application-specific deadline reporting | +| M4a | MiniCPM-o 4.5 | Three-stage desktop text+WAV path produced coherent text and nonzero WAV under a constrained 24 GiB profile after fixing uninitialized request embeddings; add encoder and persistent-state reference before mobile artifacts | Speech intelligibility/alignment, separate text, image and audio-understanding suites, then combined streaming and interruption | +| M4b | InternVLA-A1 | Real weights, observation preprocessing, shared prefix state, iterative action head and versioned action metadata; one strict-load synthetic action forward now passes on RTX 5090 Laptop | Reference action agreement on real observations, units/order/timestamps, observation age, stale-input handling and application-specific deadline reporting | | Independent | Qwen3.8-27B | Public Omni pipeline binding; text, then image/video and longer contexts; same-model CPU/iGPU artifact and explicit offload evaluation | Modality-specific quality, actual loading/runtime memory and measured performance; each precision/context receives its own qualification | The initial M0 desktop text acceptance remains scoped to its tested checkpoint, diff --git a/examples/offline_inference/internvla_a1/end2end.py b/examples/offline_inference/internvla_a1/end2end.py index 72cdbff0c..0d3f32bb3 100755 --- a/examples/offline_inference/internvla_a1/end2end.py +++ b/examples/offline_inference/internvla_a1/end2end.py @@ -35,6 +35,7 @@ from vllm_omni.diffusion.models.internvla_a1 import ( # noqa: E402 from vllm_omni.diffusion.models.internvla_a1.config import OBS_STATE # noqa: E402 from vllm_omni.diffusion.registry import initialize_model # noqa: E402 from vllm_omni.diffusion.request import OmniDiffusionRequest # noqa: E402 +from vllm_omni.diffusion.worker.request_batch import DiffusionRequestBatch # noqa: E402 from vllm_omni.inputs.data import OmniDiffusionSamplingParams # noqa: E402 @@ -158,23 +159,29 @@ def run_pipeline_forward( request_id: str, ) -> torch.Tensor: output = pipeline.forward( - OmniDiffusionRequest( - prompts=[""], - sampling_params=OmniDiffusionSamplingParams( - extra_args={ - "batch_inputs": batch_inputs, - "noise": noise, - "decode_image": False, - } - ), - request_id=request_id, + DiffusionRequestBatch( + requests=[ + OmniDiffusionRequest( + prompt="", + sampling_params=OmniDiffusionSamplingParams( + extra_args={ + "batch_inputs": batch_inputs, + "noise": noise, + "decode_image": False, + } + ), + request_id=request_id, + ) + ] ) ) if output.error: raise RuntimeError(output.error) - if output.output is None: - raise RuntimeError("InternVLAA1Pipeline.forward returned no output tensor.") - return output.output + payload = output.output + actions = payload.get("payload", {}).get("actions") if isinstance(payload, dict) else None + if not isinstance(actions, torch.Tensor): + raise RuntimeError("InternVLAA1Pipeline.forward returned no action tensor in output.payload.actions.") + return actions def _synchronize(device: str) -> None: diff --git a/examples/offline_inference/minicpmo/end2end.py b/examples/offline_inference/minicpmo/end2end.py index 8e536735d..3c1d9dd87 100644 --- a/examples/offline_inference/minicpmo/end2end.py +++ b/examples/offline_inference/minicpmo/end2end.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project """ -Offline end-to-end inference for MiniCPM-o 4.5 (thinker + talker/Token2Wav). +Offline end-to-end inference for MiniCPM-o 4.5 (thinker + talker + Code2Wav). MiniCPM-o uses placeholders ``(./)``, ``()``, and ``()``. Speech output requires a ``<|tts_bos|>`` suffix on @@ -16,7 +16,6 @@ import numpy as np import soundfile as sf import vllm from PIL import Image -from vllm import SamplingParams from vllm.assets.audio import AudioAsset from vllm.assets.image import ImageAsset from vllm.assets.video import VideoAsset, video_to_ndarrays @@ -26,8 +25,6 @@ from vllm.multimodal.media.audio import load_audio from vllm_omni.entrypoints.omni import Omni from vllm_omni.utils.tracking_parser import TrackingArgumentParser -SEED = 42 - default_system = ( "You are MiniCPM-o, a helpful multimodal assistant that can " "understand images, audio and video, and respond in text and speech." @@ -40,8 +37,8 @@ class QueryResult(NamedTuple): def _assistant_prefix(use_tts: bool) -> str: - # Matches HF chat_template: assistant header, optional empty , then TTS bos. - prefix = "<|im_start|>assistant\n" + # Match the checkpoint chat template with enable_thinking=False. + prefix = "<|im_start|>assistant\n\n\n\n\n" if use_tts: prefix += "<|tts_bos|>" return prefix @@ -285,27 +282,10 @@ def main(args): omni_kwargs["trust_remote_code"] = True omni = Omni(**omni_kwargs) - # Stage 0 (thinker): multimodal understanding → text (+ TTS span when enabled). - thinker_sampling_params = SamplingParams( - temperature=0.0, - top_p=1.0, - top_k=-1, - max_tokens=2048, - seed=SEED, - detokenize=True, - repetition_penalty=1.1, - ) - # Stage 1 (talker + Token2Wav): max_tokens=1 satisfies the scheduler; - # waveform is produced in-process by Token2Wav. - talker_sampling_params = SamplingParams( - temperature=0.0, - top_p=1.0, - top_k=-1, - max_tokens=1, - seed=SEED, - detokenize=False, - ) - sampling_params_list = [thinker_sampling_params, talker_sampling_params][: omni.num_stages] + # The deploy config owns all three stages' sampling parameters. In + # particular, the Talker requires min_tokens and the Code2Wav stage has + # its own output limit; a two-entry list cannot describe this pipeline. + sampling_params_list = None if args.txt_prompts is None: prompts = [query_result.inputs for _ in range(args.num_prompts)] @@ -345,6 +325,8 @@ def main(args): str(output.prompt) + "\n", "vllm_text_output:\n", str(text_output).strip() + "\n", + "vllm_token_ids:\n", + str(output.outputs[0].token_ids) + "\n", ] try: with open(out_txt, "w", encoding="utf-8") as f: diff --git a/tests/model_executor/models/minicpmo_4_5/test_preprocess_embeddings.py b/tests/model_executor/models/minicpmo_4_5/test_preprocess_embeddings.py new file mode 100644 index 000000000..0deb0f3f9 --- /dev/null +++ b/tests/model_executor/models/minicpmo_4_5/test_preprocess_embeddings.py @@ -0,0 +1,43 @@ +"""Regression for text requests sharing the Omni preprocess embedding buffer.""" + +from types import SimpleNamespace + +import torch + +from vllm_omni.model_executor.models.minicpmo_4_5.minicpmo_4_5_omni import ( + MiniCPMO45OmniForConditionalGeneration, +) + + +def test_text_preprocess_replaces_uninitialized_embedding_buffer() -> None: + ids = torch.tensor([4, 7]) + scratch = torch.zeros((2, 3)) + expected = torch.tensor([[4.0, 4.0, 4.0], [7.0, 7.0, 7.0]]) + model = SimpleNamespace(model_stage="llm", get_input_embeddings=lambda input_ids: input_ids[:, None].expand(-1, 3).float()) + + _, embeds, _ = MiniCPMO45OmniForConditionalGeneration.preprocess( + model, + ids, + input_embeds=scratch, + _omni_input_embeds_precomputed=False, + ) + + torch.testing.assert_close(embeds, expected) + + +def test_text_preprocess_preserves_precomputed_multimodal_embeddings() -> None: + ids = torch.tensor([4, 7]) + prepared = torch.tensor([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]) + model = SimpleNamespace( + model_stage="llm", + get_input_embeddings=lambda _input_ids: (_ for _ in ()).throw(AssertionError("must reuse embeddings")), + ) + + _, embeds, _ = MiniCPMO45OmniForConditionalGeneration.preprocess( + model, + ids, + input_embeds=prepared, + _omni_input_embeds_precomputed=True, + ) + + assert embeds is prepared diff --git a/tests/worker/test_gpu_ar_model_runner.py b/tests/worker/test_gpu_ar_model_runner.py index be282da81..794310c95 100644 --- a/tests/worker/test_gpu_ar_model_runner.py +++ b/tests/worker/test_gpu_ar_model_runner.py @@ -1756,6 +1756,7 @@ class TestPreferModelSamplerNoneFallback: runner._sampling_metadata_for_model_sampler = lambda smd: smd runner._resolve_duplex_sampling_hook = lambda: None runner.sampler = lambda logits, sampling_metadata: default_result + runner.device = torch.device("cpu") return runner def test_none_falls_back_to_default_sampler_and_warns_once(self): @@ -1801,6 +1802,27 @@ class TestPreferModelSamplerNoneFallback: assert out is model_out + def test_declining_model_cannot_mutate_default_sampler_logits(self): + runner = self._runner(model_sample_result=None, default_result=None) + original = torch.tensor([[0.1, 0.2, 0.3]]) + seen = [] + + def decline_after_mutation(logits, _metadata): + logits[:, :] = float("-inf") + logits[:, 0] = 0.0 + return None + + def default_sampler(*, logits, sampling_metadata): + seen.append(logits.clone()) + return torch.argmax(logits, dim=-1).item() + + runner.model.sample = decline_after_mutation + runner.sampler = default_sampler + runner.device = torch.device("cpu") + + assert GPUARModelRunner._sample(runner, original, None) == 2 + torch.testing.assert_close(seen[0], original) + def test_declaration_matcher_ignores_mentions_and_opt_outs(self): # Guards the guard: the inventory below is only meaningful if # "declares" means an actual opt-in assignment. @@ -1838,6 +1860,7 @@ class TestPreferModelSamplerNoneFallback: "minicpmo_4_5", "minimax_music3", "nemotron_voicechat", + "qwen3_tts", } assert declarers == expected, ( "The set of models declaring `prefer_model_sampler` changed:\n" diff --git a/vllm_omni/diffusion/models/internvla_a1/adapter_qwen3_vl.py b/vllm_omni/diffusion/models/internvla_a1/adapter_qwen3_vl.py index a820fb56a..23f929c4c 100644 --- a/vllm_omni/diffusion/models/internvla_a1/adapter_qwen3_vl.py +++ b/vllm_omni/diffusion/models/internvla_a1/adapter_qwen3_vl.py @@ -1,5 +1,7 @@ from __future__ import annotations +from inspect import signature + import torch import torch.nn as nn from transformers.models.qwen3_vl.modeling_qwen3_vl import ( @@ -15,7 +17,6 @@ from transformers.models.qwen3_vl.modeling_qwen3_vl import ( Qwen3VLVisionModel, Unpack, apply_rotary_pos_emb, - check_model_inputs, create_causal_mask, deprecate_kwarg, eager_attention_forward, @@ -39,6 +40,13 @@ from transformers.models.qwen3_vl.modeling_qwen3_vl import ( Qwen3VLTextRMSNorm as HFQwen3VLTextRMSNorm, ) +try: + from transformers.models.qwen3_vl.modeling_qwen3_vl import check_model_inputs +except ImportError: + # Transformers 5 moved this decorator out of the model module. The + # compatibility alias keeps the custom decoder's config-default behavior. + from transformers.utils.generic import merge_with_config_defaults as check_model_inputs + class Qwen3VLTextRMSNorm(HFQwen3VLTextRMSNorm): def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: @@ -83,8 +91,13 @@ class Qwen3VLTextAttention(HFQwen3VLTextAttention): key_states, value_states, self.layer_idx, cache_kwargs ) else: - key_states = torch.cat([past_key_values[self.layer_idx][0], key_states], dim=2) - value_states = torch.cat([past_key_values[self.layer_idx][1], value_states], dim=2) + if hasattr(past_key_values, "layers"): + layer_cache = past_key_values.layers[self.layer_idx] + cached_keys, cached_values = layer_cache.keys, layer_cache.values + else: + cached_keys, cached_values = past_key_values[self.layer_idx] + key_states = torch.cat([cached_keys, key_states], dim=2) + value_states = torch.cat([cached_values, value_states], dim=2) attention_interface = eager_attention_forward if self.config._attn_implementation != "eager": @@ -174,14 +187,17 @@ class Qwen3VLTextModel(HFQwen3VLTextModel): else: text_position_ids = position_ids[0] - attention_mask = create_causal_mask( + mask_kwargs = dict( config=self.config, - input_embeds=inputs_embeds, attention_mask=attention_mask, - cache_position=cache_position, past_key_values=past_key_values, position_ids=text_position_ids, ) + mask_params = signature(create_causal_mask).parameters + mask_kwargs["inputs_embeds" if "inputs_embeds" in mask_params else "input_embeds"] = inputs_embeds + if "cache_position" in mask_params: + mask_kwargs["cache_position"] = cache_position + attention_mask = create_causal_mask(**mask_kwargs) hidden_states = inputs_embeds position_embeddings = self.rotary_emb(hidden_states, position_ids) @@ -230,7 +246,7 @@ class Qwen3VLModel(HFQwen3VLModel): class Qwen3VLForConditionalGeneration(HFQwen3VLForConditionalGeneration): _checkpoint_conversion_mapping = {} - _tied_weights_keys = ["lm_head.weight"] + _tied_weights_keys = {"lm_head.weight": "model.language_model.embed_tokens.weight"} accepts_loss_kwargs = False config: Qwen3VLConfig diff --git a/vllm_omni/diffusion/models/internvla_a1/model_internvla_a1.py b/vllm_omni/diffusion/models/internvla_a1/model_internvla_a1.py index 7cd064366..71b5125a6 100644 --- a/vllm_omni/diffusion/models/internvla_a1/model_internvla_a1.py +++ b/vllm_omni/diffusion/models/internvla_a1/model_internvla_a1.py @@ -3,6 +3,7 @@ from __future__ import annotations import math import os from dataclasses import dataclass +from inspect import signature from pathlib import Path from typing import Any, Literal @@ -163,7 +164,7 @@ def compute_layer_complete( gen_expert: nn.Module, act_expert: nn.Module, ) -> list[torch.Tensor]: - models = [und_expert.language_model, gen_expert, act_expert] + models = [und_expert.model.language_model, gen_expert, act_expert] query_states = [] key_states = [] value_states = [] @@ -199,9 +200,9 @@ def compute_layer_complete( sin, unsqueeze_dim=1, ) - scaling = und_expert.language_model.layers[layer_idx].self_attn.scaling + scaling = und_expert.model.language_model.layers[layer_idx].self_attn.scaling att_output, _ = eager_attention_forward( - und_expert.language_model.layers[layer_idx].self_attn, + und_expert.model.language_model.layers[layer_idx].self_attn, query_states, key_states, value_states, @@ -209,8 +210,8 @@ def compute_layer_complete( scaling, ) - head_dim = und_expert.language_model.layers[layer_idx].self_attn.head_dim - num_attention_heads = und_expert.language_model.layers[layer_idx].self_attn.config.num_attention_heads + head_dim = und_expert.model.language_model.layers[layer_idx].self_attn.head_dim + num_attention_heads = und_expert.model.language_model.layers[layer_idx].self_attn.config.num_attention_heads batch_size = query_states.shape[0] att_output = att_output.reshape(batch_size, -1, num_attention_heads * head_dim) @@ -313,7 +314,8 @@ class Qwen3VLWithExpertModel(nn.Module): vlm_config_hf.text_config.num_hidden_layers = vlm_config.num_hidden_layers vlm_config_hf.text_config.num_key_value_heads = vlm_config.num_key_value_heads vlm_config_hf.text_config.max_position_embeddings = 262144 - vlm_config_hf.text_config.rope_scaling = { + vlm_config_hf.text_config.rope_parameters = { + **vlm_config_hf.text_config.rope_parameters, "mrope_interleaved": True, "mrope_section": [24, 20, 20], "rope_type": "default", @@ -336,7 +338,7 @@ class Qwen3VLWithExpertModel(nn.Module): gen_expert_config_hf.num_hidden_layers = action_expert_config.num_hidden_layers gen_expert_config_hf.num_key_value_heads = action_expert_config.num_key_value_heads gen_expert_config_hf.max_position_embeddings = self.und_expert.config.text_config.max_position_embeddings - gen_expert_config_hf.rope_scaling = self.und_expert.config.text_config.rope_scaling + gen_expert_config_hf.rope_parameters = self.und_expert.config.text_config.rope_parameters.copy() self.gen_expert = Qwen3VLTextModel(config=gen_expert_config_hf) self.gen_expert.embed_tokens = None self.gen_expert.lm_head = None @@ -349,7 +351,7 @@ class Qwen3VLWithExpertModel(nn.Module): act_expert_config_hf.num_hidden_layers = action_expert_config.num_hidden_layers act_expert_config_hf.num_key_value_heads = action_expert_config.num_key_value_heads act_expert_config_hf.max_position_embeddings = self.und_expert.config.text_config.max_position_embeddings - act_expert_config_hf.rope_scaling = self.und_expert.config.text_config.rope_scaling + act_expert_config_hf.rope_parameters = self.und_expert.config.text_config.rope_parameters.copy() self.act_expert = Qwen3VLTextModel(config=act_expert_config_hf) self.act_expert.embed_tokens = None self.act_expert.lm_head = None @@ -383,7 +385,7 @@ class Qwen3VLWithExpertModel(nn.Module): use_cache: bool, ) -> tuple[list[torch.Tensor | None], Any]: if inputs_embeds[1] is None and inputs_embeds[2] is None: - prefix_output = self.und_expert.language_model.forward( + prefix_output = self.und_expert.model.language_model.forward( inputs_embeds=inputs_embeds[0], attention_mask=attention_mask, position_ids=position_ids, @@ -412,7 +414,7 @@ class Qwen3VLWithExpertModel(nn.Module): ) return [None, None, suffix_output.last_hidden_state], None - models = [self.und_expert.language_model, self.gen_expert, self.act_expert] + models = [self.und_expert.model.language_model, self.gen_expert, self.act_expert] stacked_inputs = [inputs_embeds[0], inputs_embeds[1], inputs_embeds[2]] for layer_idx in range(self.und_expert.config.text_config.num_hidden_layers): stacked_inputs = compute_layer_complete( @@ -481,7 +483,7 @@ class InternVLAA1(nn.Module): def set_attention_implementation(self, attn_implementation: str) -> None: self.config.attn_implementation = attn_implementation self.qwen3_vl_with_expert.und_expert.config.text_config._attn_implementation = attn_implementation - self.qwen3_vl_with_expert.und_expert.language_model.config._attn_implementation = attn_implementation + self.qwen3_vl_with_expert.und_expert.model.language_model.config._attn_implementation = attn_implementation self.qwen3_vl_with_expert.gen_expert.config._attn_implementation = attn_implementation self.qwen3_vl_with_expert.act_expert.config._attn_implementation = attn_implementation @@ -515,7 +517,12 @@ class InternVLAA1(nn.Module): image_token_id = self.qwen3_vl_with_expert.und_expert.config.image_token_id pixel_values = pixel_values.view(-1, pixel_values.shape[-1]) image_grid_thw = image_grid_thw.view(-1, 3) - image_embs, _ = self.qwen3_vl_with_expert.und_expert.visual(pixel_values, image_grid_thw) + vision_output = self.qwen3_vl_with_expert.und_expert.model.visual(pixel_values, image_grid_thw) + image_embs = ( + vision_output.pooler_output + if hasattr(vision_output, "pooler_output") + else vision_output[0] + ) embs = self.qwen3_vl_with_expert.und_expert.get_input_embeddings()(lang_tokens) batch_size, seq_len, hidden_dim = embs.shape @@ -642,11 +649,16 @@ class InternVLAA1(nn.Module): attention_mask = pad_masks.to(lang_tokens) if image_grid_thw is not None: image_grid_thw = image_grid_thw.view(-1, 3) - return self.qwen3_vl_with_expert.und_expert.model.get_rope_index( - padded_lang_tokens, - image_grid_thw, - attention_mask=attention_mask, - ) + get_rope_index = self.qwen3_vl_with_expert.und_expert.model.get_rope_index + if "mm_token_type_ids" in signature(get_rope_index).parameters: + token_types = (padded_lang_tokens == self.qwen3_vl_with_expert.und_expert.config.image_token_id).int() + return get_rope_index( + padded_lang_tokens, + mm_token_type_ids=token_types, + image_grid_thw=image_grid_thw, + attention_mask=attention_mask, + ) + return get_rope_index(padded_lang_tokens, image_grid_thw, attention_mask=attention_mask) @torch.no_grad() def sample_actions( @@ -860,12 +872,24 @@ class InternVLAA1Policy(nn.Module): loaded = loader.load_weights((name, f.get_tensor(name)) for name in file_keys) if strict: + state = instance.state_dict() expected = { name - for name, _ in instance.state_dict().items() + for name in state if not any(name.startswith(prefix) for prefix in cls._AUTO_WEIGHTS_IGNORE_PREFIXES) } - missing = sorted(expected - loaded) + # The checkpoint stores lm_head only; tied embed_tokens shares its + # storage after post_init. Loading either name initializes both. + loaded_storage = { + (state[name].data_ptr(), state[name].storage_offset()) + for name in loaded + if name in state + } + missing = sorted( + name + for name in expected - loaded + if (state[name].data_ptr(), state[name].storage_offset()) not in loaded_storage + ) if missing: preview = ", ".join(missing[:10]) suffix = " ..." if len(missing) > 10 else "" diff --git a/vllm_omni/model_executor/models/minicpmo_4_5/minicpmo_4_5_omni.py b/vllm_omni/model_executor/models/minicpmo_4_5/minicpmo_4_5_omni.py index e9ed05e75..87762a03a 100644 --- a/vllm_omni/model_executor/models/minicpmo_4_5/minicpmo_4_5_omni.py +++ b/vllm_omni/model_executor/models/minicpmo_4_5/minicpmo_4_5_omni.py @@ -301,12 +301,20 @@ class MiniCPMO45OmniForConditionalGeneration(nn.Module, SupportsMultiModal, Supp if self.model_stage == "tts": return self.talker.preprocess(input_ids=input_ids, input_embeds=input_embeds, **kwargs) if self.model_stage != "llm": - embeds = input_embeds if input_embeds is not None else self.get_input_embeddings(input_ids) + embeds = ( + input_embeds + if kwargs.get("_omni_input_embeds_precomputed") and input_embeds is not None + else self.get_input_embeddings(input_ids) + ) return input_ids, embeds, {} duplex = kwargs.get("duplex") if not isinstance(duplex, dict) or duplex.get("data_plane") is not True: - embeds = input_embeds if input_embeds is not None else self.get_input_embeddings(input_ids) + embeds = ( + input_embeds + if kwargs.get("_omni_input_embeds_precomputed") and input_embeds is not None + else self.get_input_embeddings(input_ids) + ) return input_ids, embeds, {} prompt_len_meta = kwargs.get("duplex_prompt_len") diff --git a/vllm_omni/model_executor/models/step_audio2/step_audio2_token2wav.py b/vllm_omni/model_executor/models/step_audio2/step_audio2_token2wav.py index 8e3c56b32..41db386f6 100644 --- a/vllm_omni/model_executor/models/step_audio2/step_audio2_token2wav.py +++ b/vllm_omni/model_executor/models/step_audio2/step_audio2_token2wav.py @@ -174,7 +174,13 @@ class StepAudio2Token2WavCore(nn.Module): ) with open(f"{self.model_path}/flow.yaml") as f: - configs = load_hyperpyyaml(f) + flow_yaml = f.read() + # MiniCPM-o's flow.yaml names the standalone ``cosyvoice2`` package, + # while the shared in-tree vocoder uses its implementation shipped in + # ``stepaudio2-minicpmo``. Resolve those YAML tags locally instead of + # relying on the external Token2wav constructor's sys.modules aliases. + flow_yaml = flow_yaml.replace("!new:cosyvoice2.", "!new:stepaudio2.cosyvoice2.") + configs = load_hyperpyyaml(io.StringIO(flow_yaml)) self._flow = configs["flow"] if self.float16: self._flow.half() diff --git a/vllm_omni/worker/gpu_ar_model_runner.py b/vllm_omni/worker/gpu_ar_model_runner.py index c43bd1330..5525dce08 100644 --- a/vllm_omni/worker/gpu_ar_model_runner.py +++ b/vllm_omni/worker/gpu_ar_model_runner.py @@ -1439,19 +1439,22 @@ class GPUARModelRunner(OmniGPUModelRunner, OmniConnectorModelRunnerMixin, Duplex with _stats.timed("model.sample_async_ids_ms"): self.input_batch.update_async_output_token_ids() if logits is not None and callable(model_sample) and getattr(self.model, "prefer_model_sampler", False): + # Custom samplers may decline a row. Keep the default sampler's + # logits intact: it applies its own bias and penalties below. + model_logits = logits.clone() # Apply logit bias (min_tokens, allowed_token_ids) before # the custom model sampler — the standard GPU sampler does # this internally, but prefer_model_sampler bypasses it. if hasattr(self.sampler, "logit_bias_state"): self.sampler.logit_bias_state.apply_logit_bias( - logits, + model_logits, self.input_batch.expanded_idx_mapping, self.input_batch.idx_mapping_np, self.input_batch.positions[self.input_batch.logits_indices], ) prepared_sampling_metadata = self._sampling_metadata_for_model_sampler(sampling_metadata) - self._apply_duplex_sampling(logits, prepared_sampling_metadata) - sampler_output = model_sample(logits, prepared_sampling_metadata) + self._apply_duplex_sampling(model_logits, prepared_sampling_metadata) + sampler_output = model_sample(model_logits, prepared_sampling_metadata) if sampler_output is not None: return sampler_output # Contract: None => fall back to the default sampler (see diff --git a/vllm_omni/worker/gpu_model_runner.py b/vllm_omni/worker/gpu_model_runner.py index 27e2ad1e4..96488fc5f 100644 --- a/vllm_omni/worker/gpu_model_runner.py +++ b/vllm_omni/worker/gpu_model_runner.py @@ -1790,6 +1790,16 @@ class OmniGPUModelRunner(GPUModelRunner): req_infos["_omni_prompt_len"] = prompt_len req_infos["_omni_num_computed_tokens"] = num_computed_tokens req_infos["_omni_is_prefill"] = is_prefill + # The has_preprocess branch offers a reusable embedding buffer + # that is not initialized for ordinary text requests. Models + # may reuse its contents only when this runner filled them. + req_infos["_omni_input_embeds_precomputed"] = bool( + is_first_rank + and ( + (self.supports_mm_inputs and not is_encoder_decoder) + or self.enable_prompt_embeds + ) + ) # Output-token cap, so a model that must ship a payload on the # request's final step can tell which step that is. A finished # request drops out of req_ids_output_copy, and downstream