From 733c3e4b7ef020414740b4f2e15c44697fda1bd5 Mon Sep 17 00:00:00 2001 From: songzhendong Date: Fri, 5 Jun 2026 10:01:24 +0800 Subject: [PATCH 1/4] feat(oap): add Apache Airflow monitoring layer (SWIP-7) Add MAL otel-rules, AIRFLOW layer, hierarchy, mock and real-cluster e2e, setup docs with Horizon UI screenshots, and CI e2e jobs. Cluster seed reserializes DAG metadata before triggering native OTel workload DAGs. --- .github/workflows/skywalking.yaml | 4 + docs/en/changes/changes.md | 2 + .../concepts-and-designs/service-hierarchy.md | 9 + .../backend/backend-airflow-monitoring.md | 237 ++++++++++ .../horizon-airflow-component-scheduler.png | Bin 0 -> 81066 bytes .../airflow/horizon-airflow-components.png | Bin 0 -> 75192 bytes .../airflow/horizon-airflow-service.png | Bin 0 -> 89607 bytes .../horizon-infra-3d-map-airflow-dev.png | Bin 0 -> 50581 bytes .../airflow/horizon-k8s-service-endpoints.png | Bin 0 -> 84772 bytes .../airflow/horizon-k8s-service-instances.png | Bin 0 -> 100132 bytes .../airflow/horizon-k8s-service-service.png | Bin 0 -> 96356 bytes .../airflow/horizon-k8s-service-topology.png | Bin 0 -> 194432 bytes docs/en/swip/SWIP-7.md | 99 ++++ docs/en/swip/readme.md | 1 + docs/menu.yml | 4 + .../airflow/airflow-instance.data.yaml | 117 +++++ .../airflow/airflow-service.data.yaml | 80 ++++ .../oap/server/core/analysis/Layer.java | 3 + .../src/main/resources/application.yml | 2 +- .../main/resources/hierarchy-definition.yml | 4 + .../otel-rules/airflow/airflow-instance.yaml | 53 +++ .../otel-rules/airflow/airflow-service.yaml | 46 ++ test/e2e-v2/cases/airflow/.gitignore | 7 + test/e2e-v2/cases/airflow/README.md | 287 ++++++++++++ test/e2e-v2/cases/airflow/airflow-cases.yaml | 76 ++++ .../cases/airflow/airflow-cluster-cases.yaml | 74 +++ .../cases/airflow/cluster/config/.gitkeep | 0 .../airflow/cluster/dags/cluster_load.py | 34 ++ .../airflow/cluster/dags/cluster_smoke.py | 31 ++ .../cases/airflow/cluster/dags/e2e_dataset.py | 47 ++ .../airflow/cluster/dags/e2e_deferrable.py | 32 ++ .../cases/airflow/cluster/logs/.gitkeep | 0 .../cases/airflow/cluster/plugins/.gitkeep | 0 .../cluster/scripts/worker_otel_reporter.py | 123 +++++ .../cases/airflow/docker-compose-cluster.yml | 238 ++++++++++ .../airflow/docker-compose.mock-local.yml | 34 ++ test/e2e-v2/cases/airflow/docker-compose.yml | 59 +++ test/e2e-v2/cases/airflow/e2e-cluster.yaml | 35 ++ test/e2e-v2/cases/airflow/e2e.yaml | 44 ++ .../airflow/expected/instance-cluster.yml | 32 ++ .../cases/airflow/expected/instance.yml | 32 ++ .../airflow/expected/metrics-has-value.yml | 30 ++ .../airflow/expected/service-cluster.yml | 24 + .../e2e-v2/cases/airflow/expected/service.yml | 24 + .../mock-data/otel-airflow-metrics.json | 428 ++++++++++++++++++ test/e2e-v2/cases/airflow/mock-sender/pom.xml | 75 +++ .../airflow/AirflowMockSenderApplication.java | 29 ++ .../e2e/airflow/AirflowOtelMetricsSender.java | 146 ++++++ .../airflow/AirflowSenderConfiguration.java | 32 ++ .../src/main/resources/application.yml | 26 ++ .../cases/airflow/otel-collector-config.yaml | 41 ++ .../airflow/scripts/cluster-compose-env.sh | 45 ++ .../cases/airflow/scripts/export-e2e-env.sh | 37 ++ .../airflow/scripts/run-cluster-setup.sh | 32 ++ .../airflow/scripts/run-full-cluster-e2e.sh | 38 ++ .../cases/airflow/scripts/run-mock-e2e.sh | 102 +++++ .../scripts/seed-e2e-cluster-workload.sh | 72 +++ .../airflow/scripts/verify-cluster-e2e.sh | 179 ++++++++ .../cases/airflow/scripts/verify-mock-e2e.sh | 188 ++++++++ .../airflow/scripts/wait-scheduler-healthy.sh | 39 ++ .../cases/storage/expected/config-dump.yml | 2 +- 61 files changed, 3433 insertions(+), 2 deletions(-) create mode 100644 docs/en/setup/backend/backend-airflow-monitoring.md create mode 100644 docs/en/setup/backend/images/airflow/horizon-airflow-component-scheduler.png create mode 100644 docs/en/setup/backend/images/airflow/horizon-airflow-components.png create mode 100644 docs/en/setup/backend/images/airflow/horizon-airflow-service.png create mode 100644 docs/en/setup/backend/images/airflow/horizon-infra-3d-map-airflow-dev.png create mode 100644 docs/en/setup/backend/images/airflow/horizon-k8s-service-endpoints.png create mode 100644 docs/en/setup/backend/images/airflow/horizon-k8s-service-instances.png create mode 100644 docs/en/setup/backend/images/airflow/horizon-k8s-service-service.png create mode 100644 docs/en/setup/backend/images/airflow/horizon-k8s-service-topology.png create mode 100644 docs/en/swip/SWIP-7.md create mode 100644 oap-server/analyzer/meter-analyzer-scripts-test/src/test/resources/scripts/mal/test-otel-rules/airflow/airflow-instance.data.yaml create mode 100644 oap-server/analyzer/meter-analyzer-scripts-test/src/test/resources/scripts/mal/test-otel-rules/airflow/airflow-service.data.yaml create mode 100644 oap-server/server-starter/src/main/resources/otel-rules/airflow/airflow-instance.yaml create mode 100644 oap-server/server-starter/src/main/resources/otel-rules/airflow/airflow-service.yaml create mode 100644 test/e2e-v2/cases/airflow/.gitignore create mode 100644 test/e2e-v2/cases/airflow/README.md create mode 100644 test/e2e-v2/cases/airflow/airflow-cases.yaml create mode 100644 test/e2e-v2/cases/airflow/airflow-cluster-cases.yaml create mode 100644 test/e2e-v2/cases/airflow/cluster/config/.gitkeep create mode 100644 test/e2e-v2/cases/airflow/cluster/dags/cluster_load.py create mode 100644 test/e2e-v2/cases/airflow/cluster/dags/cluster_smoke.py create mode 100644 test/e2e-v2/cases/airflow/cluster/dags/e2e_dataset.py create mode 100644 test/e2e-v2/cases/airflow/cluster/dags/e2e_deferrable.py create mode 100644 test/e2e-v2/cases/airflow/cluster/logs/.gitkeep create mode 100644 test/e2e-v2/cases/airflow/cluster/plugins/.gitkeep create mode 100644 test/e2e-v2/cases/airflow/cluster/scripts/worker_otel_reporter.py create mode 100644 test/e2e-v2/cases/airflow/docker-compose-cluster.yml create mode 100644 test/e2e-v2/cases/airflow/docker-compose.mock-local.yml create mode 100644 test/e2e-v2/cases/airflow/docker-compose.yml create mode 100644 test/e2e-v2/cases/airflow/e2e-cluster.yaml create mode 100644 test/e2e-v2/cases/airflow/e2e.yaml create mode 100644 test/e2e-v2/cases/airflow/expected/instance-cluster.yml create mode 100644 test/e2e-v2/cases/airflow/expected/instance.yml create mode 100644 test/e2e-v2/cases/airflow/expected/metrics-has-value.yml create mode 100644 test/e2e-v2/cases/airflow/expected/service-cluster.yml create mode 100644 test/e2e-v2/cases/airflow/expected/service.yml create mode 100644 test/e2e-v2/cases/airflow/mock-data/otel-airflow-metrics.json create mode 100644 test/e2e-v2/cases/airflow/mock-sender/pom.xml create mode 100644 test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowMockSenderApplication.java create mode 100644 test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowOtelMetricsSender.java create mode 100644 test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowSenderConfiguration.java create mode 100644 test/e2e-v2/cases/airflow/mock-sender/src/main/resources/application.yml create mode 100644 test/e2e-v2/cases/airflow/otel-collector-config.yaml create mode 100644 test/e2e-v2/cases/airflow/scripts/cluster-compose-env.sh create mode 100644 test/e2e-v2/cases/airflow/scripts/export-e2e-env.sh create mode 100644 test/e2e-v2/cases/airflow/scripts/run-cluster-setup.sh create mode 100644 test/e2e-v2/cases/airflow/scripts/run-full-cluster-e2e.sh create mode 100644 test/e2e-v2/cases/airflow/scripts/run-mock-e2e.sh create mode 100644 test/e2e-v2/cases/airflow/scripts/seed-e2e-cluster-workload.sh create mode 100644 test/e2e-v2/cases/airflow/scripts/verify-cluster-e2e.sh create mode 100644 test/e2e-v2/cases/airflow/scripts/verify-mock-e2e.sh create mode 100644 test/e2e-v2/cases/airflow/scripts/wait-scheduler-healthy.sh diff --git a/.github/workflows/skywalking.yaml b/.github/workflows/skywalking.yaml index 4b7bab0aaf55..67004a7d2e76 100644 --- a/.github/workflows/skywalking.yaml +++ b/.github/workflows/skywalking.yaml @@ -713,6 +713,10 @@ jobs: config: test/e2e-v2/cases/kong/e2e.yaml - name: Flink config: test/e2e-v2/cases/flink/e2e.yaml + - name: Airflow + config: test/e2e-v2/cases/airflow/e2e.yaml + - name: Airflow Cluster + config: test/e2e-v2/cases/airflow/e2e-cluster.yaml - name: OTLP Trace config: test/e2e-v2/cases/otlp-traces/e2e.yaml diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md index b30c394b83aa..0d85c0d2f023 100644 --- a/docs/en/changes/changes.md +++ b/docs/en/changes/changes.md @@ -276,6 +276,7 @@ * Fix: TTL query add metadata TTL. * Fix: PersistentWorker used wrong TTL for metrics cache if the storage is BanyanDB. * Add iOS/iPadOS app monitoring via OpenTelemetry Swift SDK (SWIP-11). Includes the `IOS` layer, `IOSHTTPSpanListener` for outbound HTTP client metrics (supports OTel Swift `.old`/`.stable`/`.httpDup` semantic-convention modes via stable-then-legacy attribute fallback), `IOSMetricKitSpanListener` for daily MetricKit metrics (exit counts split by foreground/background, app-launch / hang-time percentile histograms with finite 30 s overflow ceiling), LAL rules for crash/hang diagnostics, Mobile menu, and iOS dashboards. +* Add Apache Airflow monitoring via native OpenTelemetry metrics (SWIP-7). New `AIRFLOW` layer with Service (cluster) and Instance (host) dimensions, MAL rules under `otel-rules/airflow/`, setup docs, mock OTLP e2e (`cases/airflow/e2e.yaml`: full SWIP-7, 30 checks), and real Celery-cluster integration smoke (`e2e-cluster.yaml`: scheduler + two workers + triggerer; deferrable and dataset DAGs with ~4-minute live workload; 26 checks — native scheduler/executor/triggerer OTLP plus e2e Celery sidecar pool gauges on one worker; metrics needing synthetic OTLP or rare failure events are mock-only). See `test/e2e-v2/cases/airflow/README.md`. Horizon UI dashboards ship separately in `apache/skywalking-horizon-ui` under the Workflow Scheduler menu group. * Fix LAL `layer: auto` mode dropping logs after extractor set the layer. Codegen now propagates `layer "..."` assignments to `LogMetadata.layer` so `FilterSpec.doSink()` sees the script-decided layer. * Fix MetricKit histogram percentile metrics being reported at 1000× their true value — the listener now marks its `SampleFamily` with `defaultHistogramBucketUnit(MILLISECONDS)` so MAL's default SECONDS→MS rescale of `le` labels is not applied. * Add WeChat and Alipay Mini Program monitoring via the SkyAPM mini-program-monitor SDK (SWIP-12). Two new layers (`WECHAT_MINI_PROGRAM`, `ALIPAY_MINI_PROGRAM`); two new JavaScript componentIds (`WeChat-MiniProgram: 10002`, `AliPay-MiniProgram: 10003`). Service / instance / endpoint entities are produced by MAL + LAL, not trace analysis — mini-programs are client-side (exit-only) so `RPCAnalysisListener` stays unchanged (same pattern as browser and iOS). MAL rules per platform × scope under `otel-rules/miniprogram/` with explicit `.service(...)` / `.endpoint(...)` chains (empty `expSuffix` so endpoint-scope rules aren't overridden), histogram percentile via `.histogram("le", TimeUnit.MILLISECONDS)` to keep ms bucket bounds intact, and request-cpm derived from the histogram `_count` family. LAL `layer: auto` rule produces both layers via `miniprogram.platform` dispatch and emits error-count samples consumed by per-platform log-MAL rules. Per-layer menu entries and service / instance / endpoint dashboards with Trace and Log sub-tabs. @@ -300,6 +301,7 @@ #### Documentation * Update LAL documentation with `sourceAttribute()` function and `layer: auto` mode. * Add iOS app monitoring setup documentation. +* Add Apache Airflow monitoring setup documentation (SWIP-7). * Add WeChat / Alipay Mini Program monitoring setup documentation, plus a client-side-monitoring section in the security guide covering public-internet ingress (OTLP + `/v3/segments`) for mobile / browser / mini-program SDKs. * Improve downsampling documentation diff --git a/docs/en/concepts-and-designs/service-hierarchy.md b/docs/en/concepts-and-designs/service-hierarchy.md index 5f3c5144fcf1..12b2918d5422 100644 --- a/docs/en/concepts-and-designs/service-hierarchy.md +++ b/docs/en/concepts-and-designs/service-hierarchy.md @@ -38,6 +38,7 @@ If you want to customize it according to your own needs, please refer to [Servic | PULSAR | K8S_SERVICE | [PULSAR On K8S_SERVICE](#pulsar-on-k8s_service) | | SO11Y_OAP | K8S_SERVICE | [SO11Y_OAP On K8S_SERVICE](#so11y_oap-on-k8s_service) | | KONG | K8S_SERVICE | [KONG On K8S_SERVICE](#kong-on-k8s_service) | +| AIRFLOW | K8S_SERVICE | [AIRFLOW On K8S_SERVICE](#airflow-on-k8s_service) | - The following sections will describe the **default matching rules** in detail and use the `upper-layer On lower-layer` format. - The example service name are based on SkyWalking [Showcase](https://github.com/apache/skywalking-showcase) default deployment. @@ -229,6 +230,14 @@ If you want to customize it according to your own needs, please refer to [Servic - KONG.service.name: `kong::kong.skywalking-showcase` - K8S_SERVICE.service.name: `skywalking-showcase::kong.skywalking-showcase` +#### AIRFLOW On K8S_SERVICE +- Rule name: `short-name` +- Matching expression: `{ (u, l) -> u.shortName == l.shortName }` +- Description: AIRFLOW.service.shortName == K8S_SERVICE.service.shortName +- Matched Example: + - AIRFLOW.service.name: `airflow::airflow.skywalking-showcase` + - K8S_SERVICE.service.name: `skywalking-showcase::airflow.skywalking-showcase` + ### Build Through Specific Agents Use agent tech involved(such as eBPF) and deployment tools(such as operator and agent injector) to detect the service hierarchy relations. diff --git a/docs/en/setup/backend/backend-airflow-monitoring.md b/docs/en/setup/backend/backend-airflow-monitoring.md new file mode 100644 index 000000000000..7696d07da584 --- /dev/null +++ b/docs/en/setup/backend/backend-airflow-monitoring.md @@ -0,0 +1,237 @@ +# Airflow monitoring + +## Airflow metrics via native OpenTelemetry + +SkyWalking receives Airflow metrics through Airflow's native OpenTelemetry exporter and the +[OpenTelemetry receiver](opentelemetry-receiver.md), then aggregates them with +[MAL](../../concepts-and-designs/mal.md). + +## Data flow + +1. Enable OpenTelemetry metrics in Airflow (`pip install 'apache-airflow[otel]'`, `otel_on = True` + or standard `OTEL_EXPORTER_OTLP_*` environment variables). +2. Airflow **pushes** OTLP metrics to OpenTelemetry Collector. +3. OpenTelemetry Collector forwards metrics to SkyWalking OAP via OTLP gRPC exporter. +4. OAP applies MAL rules under `otel-rules/airflow/` and stores Service / Instance entities on + `Layer: AIRFLOW`. + +```mermaid +graph LR; + Airflow("Airflow") --> Collector("OTel Collector") + Collector --> OAP("SkyWalking OAP") + OAP --> UI("Horizon UI") +``` + +In the Horizon UI, Airflow appears under the **Workflow Scheduler** menu group. + +## Setup + +### 1. Enable Airflow OpenTelemetry metrics + +Install the OTel extra and enable metrics export. See the +[Airflow metrics documentation](https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/metrics.html). + +Example environment variables for Airflow 3.x: + +```bash +pip install 'apache-airflow[otel]' + +export OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318 +export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf +export OTEL_RESOURCE_ATTRIBUTES=cluster=prod-airflow +``` + +`cluster` is required so SkyWalking can name the Airflow Service (`airflow::prod-airflow`). You +can also inject it with a Collector `resource` processor. + +Legacy `airflow.cfg` keys (`otel_host`, `otel_port`, `otel_prefix`, …) still work on older +releases but are deprecated in favor of standard OTel SDK variables. + +### 2. Configure OpenTelemetry Collector + +Example pipeline: + +```yaml +receivers: + otlp: + protocols: + http: + endpoint: 0.0.0.0:4318 + grpc: + endpoint: 0.0.0.0:4317 + +processors: + batch: + +exporters: + otlp: + endpoint: oap:11800 + tls: + insecure: true + +service: + pipelines: + metrics: + receivers: [otlp] + processors: [batch] + exporters: [otlp] +``` + +Refer to [test/e2e-v2/cases/airflow/otel-collector-config.yaml](../../../../test/e2e-v2/cases/airflow/otel-collector-config.yaml) +for a minimal Collector pipeline without hard-coded service or instance labels. + +### 3. Enable SkyWalking OpenTelemetry receiver + +Ensure `airflow/*` is listed in `SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES` (enabled by default +in the distribution). + +## Entity model + +| SkyWalking entity | Airflow mapping | +|-------------------|-----------------| +| Service | `airflow::{cluster}` from OTLP resource attribute `cluster` | +| Instance | `{host.name}` — scheduler, worker, or triggerer hostname | + +### Components vs SkyWalking Instance vs Airflow Task Instance + +In OAP and MAL, the second entity is the standard SkyWalking **Instance** (see +`Layer: AIRFLOW`, `airflow-instance.yaml`). In the Horizon UI, the AIRFLOW layer uses the +display alias **Components** (Chinese: **组件**) for that tab instead of the generic label +**Instance**. + +This is intentional: + +1. **Avoid confusion with Airflow [Task Instance](https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/tasks.html#task-instance).** + In Airflow, a *task instance* is one execution of a task within a single DAG run (for example + `daily_etl · 2026-06-01 · extract_data · try_number=1`). It is short-lived, stored in the + Airflow metadata database, and unrelated to SkyWalking's Instance entity. Airflow operators + already use the word *instance* heavily in that sense; labeling the scheduler / worker / + triggerer tab **Instance** in the UI would suggest task-level drill-down rather than + long-running component processes. + +2. **Match the deployment model.** Each row under **Components** is a long-running Airflow + role — scheduler, Celery worker, triggerer, and optionally webserver — identified by OTLP + resource `host.name` (pod hostname or an operator-defined name). Multiple worker replicas + appear as multiple component rows under one Service (`airflow::{cluster}`). + +3. **Align with other Horizon layers.** Flink uses **TaskManagers**, Kubernetes uses **Pods**; + AIRFLOW uses **Components** for the same pattern: a domain-specific name for what SkyWalking + stores as Instance. + +| Term | Meaning | +|------|---------| +| SkyWalking **Service** | One Airflow cluster (`airflow::{cluster}`) | +| SkyWalking **Instance** (OAP) / **Components** (UI) | One scheduler / worker / triggerer process or pod (`host.name`) | +| Airflow **Task Instance** | One run of one task in one DAG run — **not** shown on this dashboard tab | + +Service-level panels aggregate cluster-wide samples. Instance-level (component-level) panels are +scoped per `host.name`. Do not sum instance-scoped samples into service dashboards when each +component exports the same instrument independently. + +Airflow pushes OTLP metrics; SkyWalking does not pull them. The Collector only receives +push exports and forwards them to OAP. Do not hard-code service or instance names in +Collector processors — derive them from resource attributes that Airflow (or your +deployment) attaches to each export batch. + +Required resource attributes: + +| Attribute | Purpose | +|-----------|---------| +| `cluster` | Names the logical Airflow cluster (`airflow::{cluster}` service) | +| `host.name` | Identifies the scheduler / worker / triggerer host (SkyWalking instance) | + +On Kubernetes, set `cluster` to your deployment name (for example via +`OTEL_RESOURCE_ATTRIBUTES=cluster=prod-airflow`) and rely on the OTel SDK's default +`host.name` (pod hostname) for instance identity. When a single Collector receives +metrics from multiple Airflow pods, each pod's push carries its own resource block, so +no per-instance relabeling is required. + +### Kubernetes sidecar deployment (recommended) + +For production Kubernetes deployments, run OpenTelemetry Collector as a **sidecar** +alongside each Airflow component (scheduler, worker, triggerer). Airflow pushes to +`localhost:4318`; the sidecar forwards to a cluster-wide Collector or directly to OAP. +This matches the push model and keeps `cluster` / `host.name` aligned with the pod that +emitted the metrics. + +Two e2e cases cover Airflow monitoring (full coverage matrix and latest verify report: +[test/e2e-v2/cases/airflow/README.md](../../../../test/e2e-v2/cases/airflow/README.md)): + +- **Mock (CI default, fast):** `test/e2e-v2/cases/airflow/e2e.yaml` replays OTLP JSON via + the case-local [`airflow-mock-sender`](../../../../test/e2e-v2/cases/airflow/mock-sender/) + with realistic `cluster` and `host.name` resource attributes. +- **Real Celery cluster (production-like integration smoke):** `test/e2e-v2/cases/airflow/e2e-cluster.yaml` + starts scheduler, two workers, and triggerer (`cluster=airflow-e2e-cluster`), seeds deferrable + and dataset DAGs plus load workload (~4 minutes), then verifies **26 integration checks** + (native scheduler / executor / triggerer OTLP plus e2e Celery sidecar pool gauges on + `airflow-worker-1`). Metrics that need synthetic OTLP or rare Airflow events + (`asset_updates`, `triggers_failed`, `triggers_blocked_main_thread`) are covered only in the + mock suite. See [e2e README](../../../../test/e2e-v2/cases/airflow/README.md). + +## Supported metrics + +MAL rule definitions live in: + +- `otel-rules/airflow/airflow-service.yaml` — cluster service metrics +- `otel-rules/airflow/airflow-instance.yaml` — per-host instance metrics + +Metric names follow Airflow's OTel export (`airflow.{stat}` with dots escaped to underscores in +MAL). See [SWIP-7](../../swip/SWIP-7.md) for the full panel list. + +## Horizon UI + +After OAP ingests OTLP metrics, open **Workflow Scheduler → Airflow** in Horizon UI. + +When Airflow runs on Kubernetes with [service hierarchy](../../concepts-and-designs/service-hierarchy.md) +(`AIRFLOW` ↔ `K8S_SERVICE`, matched by `shortName`), use the **3D Infrastructure Map** and +**Kubernetes Services** layer pages together with the AIRFLOW dashboards below. + +Screenshots include a local Kubernetes validation stack (`airflow-dev::airflow.airflow-dev` on +`Layer: K8S_SERVICE`) and a Celery cluster layout matching +[`docker-compose-cluster.yml`](../../../../test/e2e-v2/cases/airflow/docker-compose-cluster.yml). + +**3D Infrastructure Map** — Live OAP topology (`#/3d/map`): middleware tier **Airflow**; infra tier +groups **Kubernetes Services** and **Kubernetes** by namespace. + +![Horizon UI — 3D Infrastructure Map with Airflow and Kubernetes tiers](images/airflow/horizon-infra-3d-map-airflow-dev.png) + +**Kubernetes Services — Service** — HTTP RPM, latency, success rate, and pod counts for +`airflow.airflow-dev`. + +![Horizon UI — K8S_SERVICE service dashboard](images/airflow/horizon-k8s-service-service.png) + +**Kubernetes Services — Instances** — Pod instances under the service. + +![Horizon UI — K8S_SERVICE instances](images/airflow/horizon-k8s-service-instances.png) + +**Kubernetes Services — Endpoints** — Per-endpoint HTTP metrics (example: `GET:/health`). + +![Horizon UI — K8S_SERVICE endpoint GET:/health](images/airflow/horizon-k8s-service-endpoints.png) + +**Kubernetes Services — Topology** — Inbound traffic chain observed by Rover (example: Unknown → +kube-dns → airflow). + +![Horizon UI — K8S_SERVICE topology](images/airflow/horizon-k8s-service-topology.png) + +**AIRFLOW — Service** — Cluster-level SWIP-7 panels (tasks, pool slots, scheduler heartbeat, DAG +queue). + +![Horizon UI — Airflow service dashboard](images/airflow/horizon-airflow-service.png) + +**AIRFLOW — Components** — Scheduler, triggerer, and workers under one Service (four-node local +Celery layout). + +![Horizon UI — Airflow components list](images/airflow/horizon-airflow-components.png) + +**AIRFLOW — Component detail** — Instance-scoped metrics for a selected host (example: +`airflow-scheduler`). + +![Horizon UI — Airflow scheduler component metrics](images/airflow/horizon-airflow-component-scheduler.png) + +More e2e coverage and verify reports: +[test/e2e-v2/cases/airflow/README.md](../../../../test/e2e-v2/cases/airflow/README.md). + +## Customization + +You can extend or override MAL rules under `otel-rules/airflow/` and add UI dashboards in the +Horizon UI bundle. Restart OAP after rule changes. diff --git a/docs/en/setup/backend/images/airflow/horizon-airflow-component-scheduler.png b/docs/en/setup/backend/images/airflow/horizon-airflow-component-scheduler.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac5b7a83f75c7f9b99e95f824b3cb2b44914161 GIT binary patch literal 81066 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%0A!U_`EEnfUdFU{b9C7?KOA z;p~{>;jHXUX8^Vz&|JiC>LJE=k-5c*BLZC$puI>WT<6qsl=0ClZ=3|6P9hHpy^Yxp z!!UPqc3lDEfkk;Vfr9=Nh9A&16$zHY4)F0F`!rSqPVuZ&s^07>kQ!aZlBz72eG%Ra-9-#Pu#x_cJ?*1U^%t=#^TU zG{4UN7ntmSIhiRo|1Lt5`ZoYliT8lUqjXl>Z-78`RD36y{akbVZtel=k(WeS&Tfbj zTR;?%p`og-Bdt^n^R7jnofM9t6~#WH^(zc7FZ?K9j3hVtVD)}sz}nsla0;adTXsUr zGWt05gi7q?oG*>>gMuRLvPKK$=)$u4XyZ=kEv4 zNgwMu$TSVHj?xM(o+7tAc|Vn9c@m^qAZ?g%$?r<{v!VQi@2xSiI+6CX33w0MSLODQ zu=&}b;b`ZIjIN^oY)}~fkLZF1brSf2BA|8s8-V29%nLx-A3s+ZGUL&gVuC2LWA2}X zDXN|2T&evApj2agSvR2bI>o5zW+n=vA-lwIC1;5q3H3e zA!g~fuWBH3gOrjwF0EI~wJf0UTTwSp8b15cS^xlUfH(>y^_ipX_o%jcgYi zu_XN);9IPG6aOB_c88dg^b)@BnEvxl($9I7jP^;9ygKfQWZ4&j-Hh9BDrQHE`-sAmm*oEtvASvwm|40)30}1}hd+!TTx&8{ZPI*;1S-!6IZP!Rn z^^teP%TaLyMV6;elQc-d`}(_t!g2!<$b@qz`W!7R9&(QUP6FnwWft}ur}i<5Ir-To z1;Ih(kcg~%7^kmRi)qKgm&dXp)Si&?GK!VO&hBGdh{mG;v5oo`-fZ053>Vn40h0ojP9|jR@JJSYxbJ8YJT&Zz<1`+t-3Th=9rn@AITS6>Jo|e6iMZ6 zXdtdU*{W(^GCqeqkjF#>IG=+Mdg9Ey#9>aDW6gw`X6~7^2-ZPk#i^C(v8ykGwm3#wzw)ev+KO(L*vC%c5^OrF90-mgDCKr zvA4L!eg!ISF{NVR8k8}k^ttI|s%oAI!Zn7%fmtwE zpfoEyt45C2l11FtG;OS_hHx_#ak~d6W}cwtw5iOe#fQXRW+`EEY24J3td!PKE}QtK zi2U`#Hz669=JY~Q#O_>+=Dv{4K!`KVp(cmP;0DLA^L`hSqjN8J+)ya`DHv-quXP@I zu6ex1swiNsmU;28*G-E6|0=F(D3)ln`^Id)ZJgEooRzN8%w@#c!AG%CsD{jP&A{~R zeU{#{(qee10UJahK*dU+I_gcp*6K2$X^ej?0Hrp>HZ@xJJpCC#Z?CFRtJ%kQ%LAet zu$H4o6>O~hHrX*JNjG%^(CD#OIhy*`W766m?m{hU4OA5|PBHS>RhgZ@<2X`>%ZA@L zTtScDotm7&bhcUB4k~MonA24RKwMHbVEU36NswuBLA5w=dMxd7Cub#>34mFGfTJ4-*W%tP<(-BtfF9(Ca|T>rBSR2pRgdt^Uy$9+*a??kgUy2ETU_O*+FK67;;5q;7D<4!KY!? zH6fferZq9U3gK_>vuZJv{k_j?j$L}<;#){PuggWnwDi`7?-|#bBp3x*x0XEucjt#n zvdIot*%`>$1%%j9jh*t6;C5ieA^OqBpbzE6`7p<*CRue=n%t!LDLKxj{1A+n8_rb6 z=-9_~cHFV{zG67Vfr#Ij1VRT_;7s>Gn4g?jDT*ZcWyhOgLjfu;|-f3 znPh%m`}UBkPD~pSU+JYM^BZA#-|b)UWxcsTW_t5IPGe?e6?+D4u$Dm} zCQRv{q8T`C8{|EE{581IY79@rIEG~U8T*8wziZ>mRITe!U#zZVN;JjX>e{eN!}%S z+llznoAUg(FKCuo9J^qTH zoXc)c(O;hEPV2t}lGw^pK;rg$$%HJYvNv`MP~x2d38VFbMcw4vjR_(KZH^!vuI%$Z za?L#O4}fi+`gf*!ezvpDRzBR@sg>k0f6tFzMUP1Zj_Ko{g}KW0ssgERj|Xs7o(f$)iuLDFPv28uc0-0vImFpBO*PxG@=b%3bue6IA?ZxgG& zFw2{*yq!{M<5o&1GOmUbi-yVIE$O`;i`BL9SJ3@R65$wpw~ZxTCl3?OBD*L5;%%qd z_UHr5wYBjENXBk?UB#<(R$3b{2oCvdQ1;goY0F6H4npA@E5(cNv@e5GP+E>QN-@ zg$JUFi-GNx`_3QGJs->m2h{ZEl=;CXm{tzP=2(pRV` z!hI>wAkq~b$V408v*_A`HJwkGn}yI`Ofek9>=eB3MJ5ksP+fN$KfUuz-d5NioPR;a zhj-6?T=DFfQZav0o?AeM_(NW71D7h33h@1>r>?R)g1(D^F!M9p_Bv5~_qECkEGF-= z{q1X00cgF>w4g&9=(@>iFg0=n`{%-Z_P%DFDmYq@o z>(AGXf4MuFt1;{M^c()0L3{-@mVo3v?fLF6rpeFEEs4lo!s3O3t(kjJU~m!R4WdSY zkEs=%bf(&g`e?W$ae^5{2>GiE`qr_iHe49=7AlkAj0g1hsn_FZ4{dvKAM$*lF|K@QOrxVSP=FB#Y9g;r({&gfQ13frBu*a|hcy)QyG ztd$oG%=g`KCVp@!-;?H2m@wk0@N?jSsSL@n+z9X5wXt#G5{AF7Y_{{lXjOG`Q4TR?rCqwL-D%vxUMx_ z)cQ7VnF`2UO*tB}WxAbOWAmfNhg8q=--;sY5LSTF$JO8GT7}M6#^Gu{p?!hVE|N_A^9xv=jD+3=^vGIXBjkW z{w%}aNM(fmahmcUWonuMCZ&HF)qm%vl1ziQaKTCZCdtyWlY9NsZ7P2ELJFR{SUAezD2o$VP1+BHrmO6&e14j`Oh{fJ zMr}@)I6Ey*5f#nPGd_v}$P~-cNFZD_;}ALw6XC2~c)ek4uwbpdpjS_j1J=+GuAX2a z5G=rH>WsxwbDn)PHqdGLEq)p@!3UZQZw3aMfU$C+;lrT~Ohx+U0~R8J3Xhbw zOw8jAD_pbF8qGNOFaUz&rbQGI&U$16v>MBfZXgUL`)L=ey6QvD$R$ZJfO!mkg{5tT z^wcXon1;T^{bdH=wN|V*+G%?hHVq z>6Pd__)CjWzU?lCvhmVtMQF0d&TJ7jY(1(TtQ2zn{PG$Htw zZtmeGFW_XPYWt5bk)d)r6^!%dZ@kYu|sSk806zqv$1DHJTJ+khPs&#@c-J zX+l?-$tqkS-PpUPt%#jpc!%8QI;i4<;)RoQgf|n**Acr}1HwL2tgMQH#im;TV6GSd z03f{8bNDHQusp}POw?*5oBY3xR3`kFjQ+2!4iCY=0t8;Y12Xyih6L$8TJP9ay$jjE zR~ZUAmFPtYK(j|r**D7JH4G#oXjlq0%5ngsm?30x7RUDVm<{3p#6kw9H5+jqY#BpxBP0H zSI}ZpfXuN5mt`}D;dgu|x)gDwxTP|v+pJgvhHd@>J-Is!CsRsski;qU``&p(m-1pe zwk%|>%FJ@Dfs_5gUIRyNu?OM+A$z=^GhYVPQ6^G4-&x|Md@URRnEQ|$*ZxDZra1lB z*8-VP+MlJ$f1Hp+N|o@l^ydj$HUU3N|NAsEB(^}rBdfX#&%wt3?dbVuwyWv8C#_UMZH=E38W z=zDXc-%Zap3y_vNvc3??nF?-X?>*=C4jXlz)%v`9(KtW%p`Fl;FE=@$ef52wTP26? zh!|s<&KFDUy|C%(f_y<#48#mETDFWSurc$N(kPtvqocC>2@7G2fwxb~;rd?sH(Bwn zwOVuCWqka-@TutB@bbx>qyh zkgTEFD{bwR_(WCixVd^G^a6{x-hH03T`(Gn9(ptbWr(`L2jwmEl%yoc6EpM5@sCBm zm23_vUd$1XvIa|Q!BiHf#mOK+EK$AReeVIO#DN@ZVezg;t} zT5eLGOi?mgyz#SC--#S2+CkA3W|07<;@E;FrIDV6;j`ESH zH032SZt`!mMXrXwy(eeDILyv24@Mn#g0n>n*a>UARiVZ4@4l#=B4lSgg4tqHj z)*1UDzx08$48ZdrvVvk~%Jh38>-4^F@axS{*l~`VkvCm&Nofh8Wr!5%-BF5IgC|%zW)C|r0dj5l+F?2%Po2`-&@oNqU-p;#r+sIguJKZ6BCmE5eN&~RWna(oJ|?!kDC(**~yZXLJ%0H~jQsGoyB@pYB;h~0V(2=@3_%7(9@a2&eR%39!(oVZ_o^M8w|OW(P5~Ptg@l3s-51e=#=gCZxxThNj|4!uNAq?5C`v+HX# zR9)GLuC={_xT!G{P@LR{cMFqBXm|I>0fo@4aH}y@?pTF2Gr0`V<~4S`7eAkVJ8SNFt{{T!z z6R`G3)-Dl6)|5|mJRqUv93LVlab!^I1gcKTRQ8Zh*FY)hegK-PH(!>Q4s6QM41Xmp zSZtk=Ln$NWm}&)5^l!hV?nKr9+X@$M_J1uIf8DV>DcrwR^Hi;($Jm@l`P#64OD1My z%-H%;@Z7v8EQ&4J7Wf*SxWDO4glanQZ#v4BYwt+fNV9RaXS|Xo+2y7?SGQyy@M*=J zCAw6WJ8}Z7*L^_j+*fXqdPEY|yP2mh8sNK+51W};0aAdXZ`;hRK4xYZ?F@I%kCFN5 zLo8^9o(gpQy79lpW+44#qkpv#Gq<=hnzV(!tzee7FPk0`UWLIiHH<6$7cW1^53+dP)@JU-mC@Q87vpL+cTG2Qokm6Y#LYA zc?{1q62tHeJ^WZAd8E)?+ER%-@sx_hI+i1kLfKkl7j|+W`>_S}s-aH!#^ihQ=hEU+ z5R-&_UO`zvp`08pCkg0s)SC<7Zhi&LPfeYc&SG`yF;9yTq5Q(Cbxlc>@L9oM?B62_ z3vbMrR~Qg(T1KO5-A;4kux1gA0WW?g7lvvpnH8liS_tHubQM&(`lVRSZiey`yfs*> zwVxa@@?y~eb=L?gJl99YTfCt4UI&tH2CI>54a@cA!L26OBA?zZaeHM^vbpDx8OOmz zur=rN?EG7jC$53(j|IhhaH5HWkY$l{m*ZpS6x~jPXF?7}Zqo;`M)x*{b~$>EZTF0B ztk3J5!MFVJeGM#vGJ>GOo^PV2@-tD&+4%+xKGvhR8`AVa`s=5ie z2Vc`0r7K|2vfDD0N6XLLc(6xoH2U}WcX~DzI8fy}(PrhT@cg@{*EX=euPxeHmbF|8 z!uc)T_smPbMJu$eG^LQh*}|VS5029#7+D(4!9=R7zWcc5QI z*RuEaI)6$zkNNsF+dWC)jF%e$gRAvJo*H#d!D=RQeWjyDw`(66DlH4wL%G#i9*p$tU4!2hC{x^*hGMT$UGhU!*?zM%S!;<4=^^RW(OuHK~5 zJTOgevF)^5>7&gg7xg){ZPz|~4>r6091f1xb$JK+OxdzetHa(GZyW-I-)PDIG)eZK zc>wgT|A8*a$9?jo2Ab+X+H8Ztp{TNUtLRUM3-wXOLvTGoHbsS z==s1QLz1O^daZD^)KThQG(E3QuUok@ahA2IKb4s?DiDF6iA-gJ*Fhz8cnG4mL_&jr zFy`D#ZbC_#t{j&;MFii*!rg>_qw!0RKMcUaaSbpDd}p|kO7&k~*eLd&0A|z+W@}oC ze?VE*B()ZydXmV;L3&RmgnBGcHTxWGbkzm4wZq*4pWVxiLi!mumG?d5)`0wQa-p(l z_Aj*Fm|)UT#jqWK*Kn9Ukn)4w8Ro~j2p{IbjpWH1yEI)y#=Hr#teH?Or^u&@?q`v; z>*Hjn>7-A0xYS$>82KgTJ=kaZ&`2j(S@evtOE;@Z4p|*AWqb@+`mU#?&+Wi+Hv{B8 zJ)$E{CkfvR8kRGjE(@`rm-sa5wpM9q&Z}!annK36jB|NQhRFn=O$ZzTy3oe1gaQ7}Gc=Gp17_-20a6|td-j6^I1yH))F z08bFVU+jY%f1a)nPI3GJ2xbck1K$=inU+v_^-ut1#k4=9v((dlYIsWW-ALGes`j(w zIHd=AVdb2^(x{ejR5#rGS z?E$$8pwQ4;T#mj9VCx1H_;X$@qRluJbsvQze7jtid`^78+Lt&ZY6t;EFCq_fV!x3D z9L@eqsTk#Tjh;2P;yH(TZN&jKs9`(V<;({Eu_BU32NPi*^}<2 zXwGsUu@YmO$370EL35@_!4N-jJQ#n(&s+QSz)2O6a4yfA^|d-?F<9uC{c?i8x$$)W z^D<5+Aspa8S54*4 z^A9i${vvyWBJ>oB;N5k-{A$MR7w)G%9?LqyhVLJeD_x3Nq}ol(>^1Y5elMhO&!_rz zi~hW2kItB6931QIT$^gjAympWGl+G#Q3xRcz#w!u^`$<<=-| zBZ*8~VVj&;J19w3;4(Oqf{REAP0%BKYp?)}xVmfbVEFaJq#2{lVG~L`$W+d_ET}x5 zXDJeGEvsbdnqCl!5HZ+;{Tdq))9W!#-;2`xV*Bc*GA#bchb%N$NebOoU;lTD59MF^ zatOvUttadjx@47BKaHOEKY%}&UANG4!j}kV$VUSjBr%bT8IKuQErqNyrv}tMZ^9Eg z3#^qPgc8T2M%nFP%h5c*od-VoC`i;qcx`~ArggL26C7MB;CT@|Z`*@0W(#%>6~&8K ze(t;wLtiHxv6^7FqN~C5nrY0U9-?5bMcuXM_kLJ(1d*3P?4AQaE{5yU{YhG@Zx08L z!2UqXXo}L6pqxi*_5yS@$HhD8kPdW~q;}om9xLYG1F)mCAf`r{1ifwXLowi+Ug6dO zUVWO8pD4G zYvMUrX$&cPw7ai1NVq_UX$`Q!UBU?Jdj@EgfgjW8Jn5A;NZXiy^)Umj~$8J ze`eTW|4wJOl=ml-b;6%?b0q5^neKm}F?EFh!ERlG6dGCvrLkVQp4Xyh)Hgsk+}M&* zV&%tnW~ISh6?^W|qx+=3q5?8i;`XVjBKEBi3QrUO1Au7*zz`B+w0%ZbQ5v3wVoRUY z73oN2raGQqIKsJ3{zNr>`!C-2X1pO9*ycUpvZt4E9pDj6QuA1z_P{|)T-eu z>V+Jo>aaW|?RoNW8@FZ}W`SWJCFCDT+;+xqMmnDm+^%eQWvUCOsqppkyGssDTPm=9 z0e51(SoB~i@h*Q__LVWdaI!oBcktP=@eP1OAY`&$cg0iUOe563g;cT6CNQF$$+Vwe zBzD+}vTZ`NhTvOJ&*@c*`;@Y|&WwJf2{jC+#oqT2*jH{dHc?6LGk>+YF{35J;^R6( zbiXXJppvm$98u}itlP_+EsV91;x<=`G>hjcKm0KTKM@1z!5w11^`rEgR8~a&X=0{|o=O(`S3{B(LY{%2% z(EHfx5m#%LIK0@{Q^)^3g)Q=E0253}e%;Ce)OP~e3#HcAi2nermg~yQusUH*Om8-T z&INLxA}81!7C4&|+wLHb3%#}5)tMhlur*py@D-UU%nEKse3$qsV4-R=y6SaMwZ0JN z2Pk1F$)VFL7>4R&oS_#?+b*a;VD}c<9hyFwbqMs-i>WYc9<~Kbqwbqcg2gEVc4ldO zg2Q z6ShwuwK3f{xE21PRXVGVYZDAz?V1R89+F*OvvgUSZ&YLfY{ga#7#20V05{y)8-nYB z`;t#AERsJp@Yx^ZN?L9>4p1yH1I;FS5TVrz=M@%2>ypNQetXFiMMJvBO<@QW2ORH% zGMl>GcdAOH&5H#$t@+KCzjEr#&BR@`b8dVnStRgNAtJ-FqGxkBt=!s~VV{Fl!u`w; z-7k)Z+OqOO6TarbvQ2?pkokDf^Wm_UjFo@6zQhjf?L#EQp{w`Mzm$&RU(R;Wa){`D zVYX#BGkCSI;qm1Ix&kSaz}Z5|FnT)kxxmx6h(N_vL|K)(0%Gm0anQ50tlnOwlbNf3 zT-$&yrz_}VO(}hF=?UmUgeY0);u&yNymMoNo#qhrL6z$g&uj$?Bs`ahFHs&3A}gm* zb)2_VXaXz$XCJyTRSx_o^B}g`(iQ8rJNmh1R5W;82(2gv#~p``4+*d1ffmGy?;YtM zlU4rXZj?~vl$2)1_NX$?z%${>lA&j8c>@p=OHY{?>j$98$?eg(!KF0Ga*SqfPNsV- zRM^Ss#@(3zxR2WCvD4yIK-6byj6YT8=l@+Tl=f5CO@M zgKR>A7y3GMmas4Bve>b`qaVj;^wLz7}V$<1-D7;ArmGm51j zI`N#>cW-2knWq{Ex7f&Q$v9Y{k>y2Rz9edQs$`u01>&gxj&JEk*q08E`CoZ5T9`Mq z(?K6EJ}-A&Sdqn`qy$IYN9CP%L@k;e%h>K$rUWJJ#SD7fRCE2l$mp8!PecpeFW?h= z!Thfd3AelR$msS0rg1Vcq2h{0WP$BCZp!u{2{uEh=OEDfj{U+&pnwrN(%g;dghiC? z`51oX=z{66B%SMp2sPCOYuVEYX)nK{b#fx?i=itX`jK5Ui2nay^s7;=~HaX7|OXEn3mFJGLGNf5_wT1jnAKP)7n z(H!%0CK1#gPIP&$ACa>i^m*9wV8vGU=St%`jg+lkp%(!XcQTd!2J7yqtD*u^N`?%Ok z&6%Lbll~2?Q%I`L+z5+m(jsmGJoa z%?C>r@y&%qFlBj5Yr172ES7lnP+}mcbCoAcx$3;I5mKaJ?tMK```OZ%R+9s#Y=X@Y zf|=mraO^Vxt+PMIt*;r+?@?AqM~AGw32uLZ+oLrj60S)g%{?jiT%VPN<`%m_vZnzJ zs{mT`13(CpV2nkCEJeIT7$gaS=kaa{fYVAv@-^oosM@S>uD~)1AV9B z@}r`6Fw0Wt=U(qGHHBUg<2Dg~`$I*4y_F3r_p2?h6X^2H=8V2dVjx?_&?i6eUQ?wW z@DRUd3BGlf_7vP#RD9`Fm*ymVRhD$FGs~H|Cpk>KZ!-Eutc87tKi@fNL1`{TOWSeH z{UlxK+rzDAg=UZ~^TVQbZbN5pZo_A*k1DXNZC&PwJSwzJ z*CtF+Qqm?08BO~O^ob?w{@m2-RuDR6Kjn)s<+;c1(wfbksDIpkz}t&@P|JQ_K8rbmzhzUt{qO!l~~*+jp=qC z=nKa*_^XzF5F&)@SY36uaJK0SM`C+L0sl)8fi&ji(Y+89TtvHqP%#AO9uZdC3-eGt zK?8rmN}F{ig^8y7XKO8nvf8v-_I2buki%^(XE3amqbfiQSP6({7oXMt%bb|kJ~pNV zZ!D|4Z{-y>O3>heX~{@hP-s$~8_)Q6jnPu#=rLmvZ$dMX|JsW2@aYlLo;~-ZygE}I z+Lozn%sF~}g{W&#?TZ)U+OJCw8+ltEXYtO0h{AQI#}6V}X^^?j>sZwyf`{qs8SsGFns-Gbdj<- zv14uyI@Mfff9q{gaaue=x>N{_i;kzqT_T**R8$e-XUWr(*nO*>=b$J9#*kHTMlrOoDE z@Zo)n2YIHrtnHkZT20*a5FLRqP{r?YAq)6PxWqhrXyMKdt4$Av^VUaCLnA0*A3jT! zLu#6JGsDuW$+de@SMo#33I)%mG%EC zZ#SiTV->s(Zagd|vHd5C~l{h!@?J(0?gJPAEJwZSxH&U@43zQTGWTUD9k0q)qF+5)3W6RT4 zwKIkc51HBYKRFnY?5}b`MZ6~jk$sRGE^WfpmXz9fsQ9F7j*4gOi7L7=Z3uYa%*c!X zHkCumbk2UIrXsXbA@8#CJ5%;uj@u8wdCoC&+wA7jg4JpfOnS8WGBxlmj{X+Iu`Ow4 zSWilNrY&F1T=;xN(7D!xF1|Y23X2ZCroSj!yvy$0+fJ`!Oi&gVMR;zh-MolWQE+!D zJ$>d{kd1Ti(cK*+!SyUpX<9%6GxZ^HytgZOSM5!o>kohyYxZ}1VawbnWfxvEe2|WZ z(Ugz4YwHWo{M{A=(9!RSJY>RMd1EI7Np|6JSGUpahB}CU87>PBLFu+v_$j0uwiE7U zNa|!~6k+K+`jvI2pv+;sIhtKz3E+@Qs)9-`%UfA)Wc(VK>2b%b+0Fr<&ujkxWV*51hh!|em`_*DE>wgiD`PVE>u(3^?Qqw~kdtwyr0n)ycChzu zZrvqIOm?_w>+s~r9hTZL6o<&tNtIL2G~$9(LxRi1&I9YXP5nW00~h>>z1m@1Ru^|} zF{8zv=oP+Ud;$k%-etit-*;R2%mLSjLt!a5Y& zSDW4GTgmx4C}lXFJ>&qvgmB^6oiZ-Mec{$oyTG&*fIAc>l>TH6b{ zt1@4#_bAA{kpen(Ulk*ve)=Hxl6?x!lRMTU=vV0%$g0G(7C5bf((8kyFDCq|8@=_8n6ysWGD7gBF(&E&6Wmvtv^X? z)#dy8T{kRsX|d{jMp(47sey~aQ_rRG+wO~=wa4I2ndp->LM*GrIOI97Q_Dg#nZP3% zMeeK1F0yTlb9QrLPMH&w>S5B)*~=FtMUewh(3)EB{jC$G%{3$Yb*O|u%z596ISIPi zh_2W&oN@S@$~;QDD(<`;zk7KplCqnleYSj6ZXXzX1%~AyMS#;0I--exN9wgajVM{| z$bYhkNs}`EI;e7?^vCzN9Df561&UMa}hw^dti zwdCgRn3qoa4q_c+ra9Av?Miq0NoUxN9;JvgJV;V-vi?ovyEu=wYxjH>Z>bwcF8UhGxJ zye^-|454s~IA}|fDy`B(?cp$1E62q~?c{nmJjPQ~p0V#2RU$=&oT+)kzFPe z3Rj1qMcPLE>Y{vN-FyE)|DCyjso8rxJf*y?2qi(g^|N(%xUlCxJ!eu>O1ZkLlh z%M#AL!I6j@J-8@k-pPMA#zaPbPB@0^rFD1D4>z4{A~Y3Y6-8JRErdISp-m~qlGx58 z1X)i!s$}3v)pz&wj@F6E_4S3tn-polhL3X zzBcAomaPV+6zUH^3bpI&-G(*C1BHkd7Pt5{^lDu?Ev$F#g1r1#?S6rJ`=r%I4qgr@ zp!r>Qd+!=mu6&YyRQ-#xmq$HY7w1--x&l6X`;{TxeK8A4cBjV;Yob0CLBLrLo@`V7 zE6pE(ba~8&lS5a{oF_%MLE*4Qm$JG&zdBEaeR-yF*0_3Fdlyl8NA&VI-2(GB8a^UK znoUsOf}_0}=5PVuGCo8b| z(541sNi2ILUazpbG2az%# zdNt}-E%R$ZsXLMK0_sxhTf%0UVA|YQSX+j&gvEdHkokfZ@G1CtUtZ!RvSv&E5xIMs z#hU=uWRHo$iS^ef6A07d=qBQf2(S*0+jn zE<)l+kQ35fQ<4E-u07dQE%vH5MeQYQ94CibHc;0wIrc4AmRgi2O^=B~WMf@!rF(w> z2wiBP4#yTMv{{m|HPgk`rA~GFz+N z?tr)>z}tWeLUic_8p_`}Yo~_p)$LZ6P~XaaHo7nPM|vu)4#k7e|4i!L&l7k8MP%5VzoBsi85>M>Kc02SjHjE!aiR1Z0PXrrXXbd?PM2Pmhq2 zVFzw)d2`0lLXRn17*}iU@{$dx>y#}nl^&LRy+(0mdNK+Ui)svxMPbEodbf%usLk(P zxbntn|8%+Fc}?HV_3`l{tom!($+5<9MCb7wGI=yh;nGB43FD zQxc~N^hd&&>pIh_VjH_|U|tqn`hZTKIyE7$ZP_l6Vnd(EGnzTIXYmq-%eh@vJ%G_X zUu}J(vo6y`!-Al;-)=R0$b3}T4U|G*u(GHg9kA|gTgPeu6Jry6lXZ_Wk}i6|ROZva zbRDZ9O^3nT@*dE6($_U5)6JcIjEJRcB1VPe+gK{l5hFUxz*A09cM0};el954Wr^v} z!<|IxD?Sru3Mr_q^Dhq@rS5(@PFE8t?wHGiH{2ZO@dl%nZ>WdHhQ6%ouxvzzC}m8T zyMo!9qdHBmTL|SAu%Q@6du(JT>UKXZuk{HC6I|BWq&3Pa^ROtI*NwP8eql0)*s+7~d>iVSrFOIkVZT?jDJUQ>}~ z$b67QHZWRXd0NikRheAwYgA103&ZGl_l}q_-!A@DGB^jwm+#A)0reH&6-#|?wVH~F zoRZ?a3cTU@4vCE+c}`7>(FMG>wn_O74RJ0g|cxraiEya!m82#f)r?+&|Yv({|Te_mNw?uM}_+6`y*TO_eLu<%GZ zqoOVE^KDA2KlP+XiXAiAKx{*}c3 z4`68CvVz<)M2%eCqYD&DekNB)0UA##sg|YZv1SK(Uha#$7Yk;mI-Ca-&~aQPhCo3u@$?GXBfkA@MsU zSZ?(xDw~fVXG~T}agx-aEt(K8?4YM<4cBb$K4q)t;nF2uh4Y?5k%c93k z2dcq6(bNY?5tf=u_yLSEy~D1XJXKXZf#eo%dBC*UTQ%sVzDebbD=(Tp@6Lk=l5~Q! zU@`QCHJY?FdddOtCc z{oI8{pPxmTNJ$yalv${64NIr(H=@b2Wyt`Z?#{aKe-pTuV%a*;CzMuRuLa)OX{J^B z&1mn~LX`Rn3FF0kBhj6ASO&gHyZbx~FLzTiS|MVMkGX%YV`ouwm><{8z*(A<->;M! z+*p}&;BnkS+B4`WU-x1SRpb4eS9ejkO6Mi~` zN956#Vy(7tGw+S0rgbs2jR$%n@OBl$f`6X!?B{ED3Hz| zofr~L4-4QStk-E8+wb8Z{X!)3B(!w3iO`Gx^lqf z5d}|WF7rGNj@!Y@t%g&}N5A*H%(|T!PTFotlU>RGa0SpyoVmAH<&Zz1;n)vGu$X97cHf_hn z-*k<~XMcB8nS1(rQw0C)n=n+fC73;|%n;FfB*H3q#LAAsXQ(TmgLqsDQo(<4UnIKB(;qk89 zv9HgO8^iDE3ofYNRkUS75A<6?Zj}lPqrJCk-h)pzK}dB?&Y6AwiAcLWQ62IWdKaDh z6u6VD0|=fKS2YW6?34PZHPG!^#<3C`aXAvL`!8lFvH(Ljr=2}bo3=LhCu|()DJAX` z|KT!h-i~WUuBTrmdh2a=YEKPBJT+&hN7>z8!g-Mm*ic%rjExCt>S(K;G9HXfiz*jLCY^WmaI3&%(m>Dx(M$v00=L| zs3Ljrr2y>kRKtH?=l<&)nv9!~icG}vVEOqCj!v)fM?oyy%MTatjR68zj>B6*CX|FU z*v-T>wMM0(_KRSP0Iw2@vG|;^zDinhVocJN^k?&LLa6o3*!d~6t0sJ{A%np|AIA_y z(9O-wlbR5)_Y(Ptg7*aKUcS-;kGuFrWGH5+&}L~A+KUubwS;cfIi3dDG~cAC+74hW zqcQK_an$?VhRuQjW z`^f_8+F)WsPI7sHu6N{T@&ua+No|%)g&U#J98TdA>PpnUw~l5mh?=bge&4sl$$G%V zj%x==iNWE)IwI3K>4LiuNxbR@yvclAv@~#p7suQt^Ru(I5(jPbt(I$cjSMbAQ}F-?R4jtd*U;_TFo+Z>{frU#u*bk-w829lQU9$NiQF^%(y? zS0^YPsOiC_)vgaisOqhY8P>C|U6IVUNmstJ+I)_c?Zb^WYw*U3 zkt&X~x&iJ@0-Opq22VRz=Le9CU?S)t7m37Y;~M&vcd{>#jW0$E9mcPnMahXjbgchX z?DH=goUlE&4=*nI*yl8W@OMydaPE!Bvhodw&$(q0LnMWcg0XQQT*T%yy&e#ax{e3Q zK;?on<`rCg!z&v3kBe3LocSg7_KbKQLlLh&1!?dli{`oCnUmus80ukXx-{Z& zZ+%v(JZyo~d1z^SJV3-^0GV8bw3p8v2kJBlzu-3EMZAf7MT9@l|H8XZ1D#UFRBcr> zt2RzF6{OL+8RQT_!h0tCk`Yo z>lk9Ztjn<5KJ0m+ht%;i6h@?vpoMHQVJi7uNOlfFl84DYV!Omk62F{0p51~~EOlLg z|4Wk-HY!2Gj3Drd_cl5GLqp7)2A;u0`PUQaua&Mq~27=)A;MHRX`ir*nC=@x?1}lZihIZ zWMX*8+eH=a4q6_4Iq%SB?n?TOt-0Qe!4=hzW!yYj3NqokO{F_IU zD@Q@j?cCJrQ@q=dEdI3t1vtR-(CK$ zr7#Vo*88WvpFbdne_a{(O{FrlnNe!+*WsR3{zML6gD3s!xTr0=rbfZzYB?kHm_g=P zH4X1qjp|LxUr1Ns2TmwsDJFSX7f$&uuDeI&S}($2Bm%q#pp~P(P;cvEW~^YVuVyBA z3r5(WEpxdu(|$L4OpwB5hv9;B!A&Dobpv1^)Ye;S&eeK;8jFP+efcVkL>KPefpdvG z8@PPu__3O%3U05D7Tb|zHcz$^RqSAJZoCw|!8I)*2G{Ax3uXvYimn_{9!ZKN z^97qL1Fl#(ekdCfJiOPx0QDYFevxtC%`rnu+n2qf){z0nIVr2^Pf+0@Fl5(7qM5C( z=Hg`A{RR-r3{mYd9bWNcv^W|uygf^UUAJ|Fsx=foI5MRYXdJd=^YNuf1yTC3ZR#BuomAv0W%m?_=awQ_SJJ$L9Ex5mk36_`FgRx0UB2YC zQ{qzAVX%=Q8S&hbm=V=EK1A4aznAGfwc_LO+Y@vLGZ)XN@pXX6rHIHv4ymE7a3u#L zH<$tuO>`Z~!Fos(@LGCwB9=BHC-9O-HQhVdn)72ZRa>W_=WMdNtd-(kj_aIR&B6zX zxHZ84vja%AD9hq#@MmJpH!U@~hLb#y)62ra|nmSROS<%}jpLmr$L z8=)Of%H-W~^0`saM3s5TKn8O-T(X@7Gl_?(0EbG)c==^d0T)Qzt=jY3-gRh{HD*$o z`8g!(PCOw>p2(S)NytzfO5CTX>mHzuGDP%XLUOeo1FpKbJGz*=3+s4lP!69 znJY?1l=u3MsUpQ<_rNC!pE)W1DV{i-7Mux&nh&GXYmqIG7V8Yr61|o8-l8$TwycD! zbi;lF9Omb}&gyT9LiT`^Wb0jdz}Y$|mvE`5D*tLIF-?4LQRJ3Rb@tHX-yX{uU$ab$ zDPG<}-js_#81^z4SDJCvKl3kRG@o|un9%M;N8 zRfWS)dyEi1@)Fmbb+Hm>&r+Y&W*Sq4T!-5)vN68#dQCY^0`%PX9Ck#`U3AcNV#_xG z;EgGl3#otka&P1#vY=Dm@5?vSbt2ECCahEZXn8d!*uleHTT4a*vRqhdm4>txOc7U! z>bo(tWIpE^t$8^V`Cd&fbl^D--ZafSTAf~X_)Lpb{i&BPadhrd4}U=n9xf*lJ&Zq%ZaMIA~JwLC`3icLUAHf&Icvv z(%{TDe_d=INa3YL7z5%M6A1ol1T-Wl+2b}Uwy>^2g#QM5$@i)L38CUr7?E(^_{ik) z^6VVr9lwF+z7BmAQ8tf*gush7PAn9jaF*Z;SDii*JhwANz#}KC%L;O9O9~w@hd|I3 z#`aE%YE#TaQsDNBj|v~3CaV@N_%o$HRhc8xkuV<{9$BW7qTI}XEZLHpv;Oe!#8Cb* zp#6XMdKDeVJ4(-_foJa5DMw|MN&GwtXUU3vt+M@OU3&cs)yBX0)+INg#i7`CB{|4} ztLpNd&Gur5k%CKs5cxeG2E+b)TcloM^9IZ#j6U!O220`{$*8Uv- zc~w$VsJTa*))RxSwcngb+L%L^?uJ!}Y35zl(gtg?G$OgdZg5fPYJOKGZD zao*b98FzLU;|xwa_i%gqH;;JekpOsy?22BQg_pb}ar1nC3yrZ?U|fFljr1aaDb5Wx zWKlj?%ft5ECf6%S5Q_*fgshbT%UIu*_0sz7vR>hv8tgh&!SXt5ZXMibt}?P}a~w1( zL)YIe`SjDI1>H+NaKc#Y7u}t-g?@ze@y!KJEkH3+ii7MN@5@0c!q)R~$9k-fn#dnA z@|Q*Wi4W8}iNY1^XY~rAV7YW{ughz`;){jIi z*+h2Ne3nD!G!GU;b~wBn=~0kKP@D=U$a%if*-Rc<5$)O*7mR_;mm(&OlScJsV0AR1 zR;jinWl5vBgbaLI(RfdY!T^JuVMcFwQye?9B zE0VxZdem9f?i8T%oC}Ahiap2}P5lCoWzdl_!c&==`@ZoZRqF!+QFvXUfkMqe&ok!4|-&kpB*KlX%UgMji3TbyXii)Lv zZ0~A{aOnPw68>^gaeO}WQeKzwz}0m9UYyL@+v8ifHQ9y4k#7lpuLS9B zAc2v3q|&3wuDLg*T|}?`?fq4z+_p4u$OFXtBXVf?W6;U-QiqNJVgIdY+h2zWzl06< zGDj40ycRUWKC%bR`ie15HGW?x{k@n@9My$p$`{##b(^`~71New z+0n`yzZo;>4_%WUYWv*T5I?aO!$<@{N_rJpv_);r)_XXi-Z$#I_0mdpcqG?l+?-L; zQ$UC*5vF90X=z*t|Lv83-_@-S3XloDOWBf)n?)lH_ecgi($AjF(r$zMks5(KE~h&L z{4~eE&l1EK1@?M2H+`5;uryixVz`u{Sr*w>jRI;p**=L-6OvSq zui71}N>_Z;-JV$0qX(eW{aRYLU6jq)T8V1C5ey9En@{kr_(}#Tg%YF>h{Dnqc7Y`% zDQ!XR?KPCE(N;bkg!{m7Gl7aCcJ|R$yYNVgp94kk>(65^icSI7_4-$T7HgXR906Yv z*^n2oS1meYhKt;czDI5Z?ucm}1N6gM_a+fFCi-a2!Fls5N)Gc>w?SQTj~&f!TVVOZJzAcEVHPpzeYqJ6R;K_fq>osz8E(UYv5rPml!A2!b(A+3ePs|)T8kBWCmn~W4);Jewm8jWQ1uXIMq?!X z6@kn_z7tx4oSdKCbyoVhrT!y<_&eii6DwE6-&FkP56MTYV_ssarv(quNwE^VDGH?!oD7$}9Sf6;<^y z3I(3rFMTvE_*>55VLUfnF`ft+iK+KiSu`Hxy!0v^^4*2NGN_MAsu&J)XS`cW)DSV-}8@$Dav=& zJ*f0DU-xA7(2C=fpuu}j7{*65R%pWD<1cVB&$*t|h0aD^p^R&uI;9)s;A8=T7gV87 zUFnB8Xx%b(-4WC(J1ivu;j-9jY|{ZX>@4E@vD zfbM}%jp4X9rfn5%Fbw4}cX`hea;%$NSSnd%uu+!9lr)6Uj1=yk0|4N5_>Up-YI~Hf z5nh!GoZW0Qtv)y!-AoJ9@=uXxJ{-j^2VDyMWchbr428;BrQ$Omj(G1s-_Yy6yDh%@ z(smdl<>~-J!D4KJwogbm_qI0c-N{jDPJq^HJltg3l`b?!)m2|AU6qa+xM7;P?P*m+&8h-cQuTNqdJPOiVILokspnzFsMNDqPW)sSGae~efwfeO8)qTpy^Q8&v+4_@5be8fw0Y zlbw@2ULXvAu=!@agSnW%2?v7pO84iUii^}!hi10!rLhj<(B!SrYyL>3a~In1VtJ%B zlaCwcQ$P(HJt+hOh5q>n;yHskH6zX3SRTAvMK*6Y7D$~|GM!EaXi#z1QWLCWBj~2E zq-xEDkEt-+42&m9Q8J5+vNgb`2TQY$^cVs9jMTr?a1fuIOTS#Hy z6cRbNmV`uWGEuyWfXztGveeIcUrzzfJ=1>Mx`W**f%xrgvrQ8k%`dZJ9QY$&=LVr_ zIJvM!JyMcvmgbkAWh)7aiqm|4#6JUXU~d#bmTj2sz5k4g)zVh5o0z5s%4x%H&4gRV zTdXM_Zz7&tJ->+0KxR(cUsA5#DX*aIe_zTChT1AT7TycQd&vQ)w^%bVD!d?9i3Q12VU7PC|C4uF=X=&2*=e5hA2+F zUqocC*0ke;i03PoJ@+b%Dh2m|z#sFg3sCYH@eSv_P=}|EKT74|6@SXn|8%ohaaJ{L z6vLq0(JoL+X?PHgC+(KKGmb`2q}vSkhdqAHcGq?20Y0V4M7(bwK4oT@5VcQDAC9kr zFZR2|B~Errv&}Aa{%&z=rgXww0^fFt>mxX zdfgy6Y-v)f%N_I$+-NG3kPag*p>^3AiPt0-Q5P0~?% zV3i=>)7Z3&Q65KGO_F_PJMZLWHy_la4YPrO-t50K1cPiK-v_+Prauyi30ne=E6p;8 zg1(ljotPT^o=BVmwf7G(BF4$Tkloh5v^sdCnlM_kiz6yaP!P2f69KvVTr&)BHqi2TrQI+N{S&@u1%6Rt0> z7QgJxpdBUiRV?&g$?0Us-I_wG@Ha!MpD>-LaM`UyeFhzm+MWVxZV>G$HZwOe?t3=9 zNUr&kf;yS=@5?V^z4uY?6i~#4O^dBr+;1oSNHL-6gsQlf?>~L(t@1IeJ7e0?OdZ9% zZ7Kw!A5uPYw;d*w>y6?PwKwSFh==RfRSB&O-F3Zoi|r{sGaY0EhvN`w&^!gyqMYAP zy)a(7{4H?j4K571f0FL0S{ezD^lxn8sgo|>c4m}vuB-6F5;h*_C4n(Q4hWO?TyzFI zpx3MM3f)cn{>P{qjbWphSGCyVs!?xva8_Oipe+yymKQ_ z{fkiF@J=Cp$>Qxr-Jnz%`!@nl?D^O!K#Adf?HRMg nPebrS4u0v6b&7~--gcO7f#5-cP6OGJ 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ƃTN#BoLwTGrrCIGMPj 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 Q8K%8o8Uz|VvHyP)04wKb2mk;8 literal 0 HcmV?d00001 diff --git a/docs/en/setup/backend/images/airflow/horizon-infra-3d-map-airflow-dev.png b/docs/en/setup/backend/images/airflow/horizon-infra-3d-map-airflow-dev.png new file mode 100644 index 0000000000000000000000000000000000000000..24c0f75df1c7c9a1b5c79a18e63a824d24ff36ba GIT binary patch literal 50581 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�qYnSbb&{D6cJRcuPVv$__hPD@P6T5iyfrV*)DPILHSkrjQ&_t`xodzC5 zc2NilSg`}^nnU|kUws>K?PpCP#97?53dwW}x~gL?TJ`U;BY4cqmT>Z2QjWJfMolZd_c{x3&>L(;B=ayz6kF9&3N$KAbk+fHp#5mSCe zvYK#_OZnJ07rv13a{YLA>z5?9G;i+dJ3i7h)q&`(8-7+w*L?Egixcso&pbD8&@F6P zGczNZcMZebsg@_=y4K^;Nte#6HG0;je8&F>T+hX_7KC)nRJ6R5*~$P><5sH203wGm znduzbQ;`<3uRLlQwnd?)69eI(1%L7b2p#}FF)Txnn0RPcNb`5t{*NR$|3UtbjFNW! z+dLb_zpmsgKWS+4|N2}%S|rMV$d^CNFo<5Bh9dzK+#E&EgX%OLx%et#E(cqSq~`4$ zYZ|yIjj+CR4sLw$RRwvbSc21qyY_3zPR^;gQK(H*?{;nM1q3fPoap_Pbw%epm&!*j z=?M_LuuaK7&Y{}!z>rj}>i`c2O`V%MetldMj3S_YZ#4wHjAyv zEijSKEQk{BC8n<&C@7?Gx$^*-KmW+w|2@BTN+L^-Q(n|6{mp_@r&*DY;A4m^)dGK9 zegsrLmMm@>%N=N2YlCHIJNn*5ET;=BG7JbiPitzEx%?(+bMP}tQ&ARYCfG8ILqmaU zXB|w9Xzq^Wl39{I59!m>)@0_ET+CuCHs>ypRR!ct;f*$Uh}GBu;9)3x9prRt9gcMp zj#4#Pof#g`_n1)JsHkm2P-vDw{U;lTXA8wGlr2P_(ynGpm=4nxp-dVdq&wp^ zon?N^k`ePel|?$kb;x}7sI!%(UMui%RdNa9IG`^N6}RTFzSF2KONWx-a8|dRiL92O z*wL1Cc|i=pXU=a5Q)Dh2bLFb-U#&ss5y>+VJ{WkbL!VV>){A0ILg(FjhRz3R*pn}? zjz;oGWwXL;?6hywYQh!}3Ij9_KeEx~zKz|CWRzwU8m2|{J&b{86H#!BbHm?)IBO7% zeZ2~;EzWDZCHpe_cJ=`Q;qLj@Kts71E}6$|+EyJvVJKJY^AI1agxLAVsRnD?FXRQ0 z2U=z_-lEDE@+{pw63V=LuPL1zdAv^-9(7BXDc2&qHY99>vjkvUQ)oxJvJ76h8Wd9= ziyXEoil|gb_QhUqC?PHRxM3qp_4p%p&eHarP(b3U9WRg4WB`U8jzdIj+QwNNx^9N0 z+!?Y|GS5qK&J~ck72tR_&SvGg!J7K+`kr+zLr)2b25iF%kb3+CS^Hen3DKqnC=l~h zcn|sty9TaUW0DKee~E$<{Mxmm+_i*)ss`W~Gx}sgiB4)XUOS=x>XqP;AZ@zlZAwXC zNwDv7rfBK}vqxd6E5ofn;FwDN?VBk9G~;b=*RaHn!Ruq)WmN>O7`)&j;OyG8X3o^S zgrH=4b&D!~!+y%1yAIl?@bHDpEmc^%`a1a1a`$1f!P@NbS=^$~Y&Fq3S>m8jvhB8) zL_Wp0%U+>JCkYRgtfUR1quIrFg2H|UHE({}TVAolt?9f}Fh*q3XODNVCj{0-yF%aH ziYK+`G^Xmg$5=HZgte@hYG_PH3Uk~nAqL`)zbr_QpPh!)=~!2F7|~}7gP0ldM07*z zZxiN)t`B=t3QH>Uc>**LS#%5jBk^x!v$WxD!t5DoCb2!DoWm}S-XWsf_waRxQrHpR zca9rcT;`Mug_Cvz)^oY>t4z{$_(EYEoW#roLF0iqbHR9-T5RBE6YXwQkXFQ_@@-+% z$_hEQ1-?r+m>a%`8?8`aZPZCu$faOJ_L@(IyPn5koAw-iD>ktp^K~~8Y3fVA+=`0o zg9oAI_ykfGERD>0#Cy*G(+{RJSCfj0^kdnLzc z_8TQ9-;1?#V~2{qHj~N+%j6v0RVqi)nT~q7_s3~P8RheGJ5bZX(Q}G#dOs=M`dXB9 zsL0ou?ED)f>{=@VIR%6hdpN`&HGxxF1P(_eQ%0B-=a2gh4OPglDq6pq%CJ|(>of;O z=4eYVTf&+ewwu%@`Mn3-?3C<8?IQ*(p)tp}8t$wvX-Bi!_Y z?9N5%K=XT@mmG;ZZgb z2~U$^5yWb(6}h7259cGn#4e4Wn`@Z-CVEheDrM+Tht7N3p|RUjd^o%Xp(E{(fV1W9 zpWGGnn5`FMA&xLX&-EDW5Xw;FYz_%H_;^*Om?na$eb3Zv*{06ib1u6~p!suUAQ1Pt zhtY^jpsz@@N|Lv3)#b@9FCThupM5DHmtG8bO6}b~F(mBd_qJ?$W~H_;z_Q71UgzzD zwmeC&Y{lZayp@rXZDsGLPln||NJ_Ry+)#ABFfJII7oF^YXeM-8X5d;@18`vFf@w7r zuHNQ&{fXwxEOwKht%7hYD1_+`RJ5A338FPKe-hoKqquSmP$fryoH2`VbjGeFG5qrp zwurF`ba!B33r?-bX)M(fLWQfk48aU3gDQ+7pB?BU*>}tXFSB-Vv))>=zG`CS-C8H( zEwra?6{MtIF5HTgl%-_WpH z?K_P<_45m%=OSnOo5HGjWQ;o?>ik08v4Ic5ZIvNyvQDwX9YF}Gq@|h+QUNILJb|? zNy%qZL~W4izd8%Ei;w-nMCeVj`xlhAE;i0sl~qG^@g47eqs(|sQ7q;ezF*0zMP=c$ zOjEe|e(=qdZRjW2-pXnpZ@W8+x*oNLHwp#`6ifO(#QPl4M#>bp`5`AfqgdX~g3 zhwkuCMTbNaPQ~~MK|elnDRC~6VVqw8@=)2XP(g)wVYxzX$ut4nS33L_c~DW>Z18}{ zNx)U3Yy<2MR>eSBp7{y#^+39+vXmB?f=pH6RiE>$<`75-jf{!!Ez-*M z`T-o;6@6Q+a6iRdh+Em^P_H?m*082GV3O2Pp#1 zRs^VJ$eY(5rc8a%ol$!^c~$Tm#k>^%3$zsjwjwk8u@7Pqx>0}KzVX4w=#Yh(!pL)L zJ8+YERL86Gd&}f2w@i^R&u8|Ys~gWWJ?m85N9_?$vo5b12j=Kn!|9c{cbL$6LP_Qe zf6A!5UUMy5-rs5gIXK4-9vZ952B^3+D=JzSe8j0(&Pp#v8@)N{Iwuj z>(7R5N1vnc86nRof38E!sorQW{Z{%BS+MMpS3xA-afUoCkCfE!+S#b|P05tr(SPS%->9@?G{Qs&MTo#FhQ%L= z?!FgtVJbT6HofN}KQS=Njeq%##zQ1GvXWJkY~520`l9-7MyvK%YD~{M%i<`(7gkpzaF>{|Dyau`fO5l7A93vYDl)ksMj zsMw~bdf}YS7F*dpjuhT1JAO^kRqi$}D{pGbjQ_#M>nd@FHX+ zu+iSjJhkCQR692GZPmmV3h891D9Gc@(QX_2Ai))3iKdA&xym~nr(XyaFKR&P4TFt3 z?VAwc$r}Z712KuZs6r{d;RywW7YAYzRZ-1*U5n(BPMdr%fR-bgV_lR?t#Wt(7bftnEE7AYKN3 zMqFhyAGkl7lx@zw{%X^+CKRMADM^x7+j&qE*c!JSwjFzi(W90>snjim zOSUiR$(+Io%#u=cg1v+Hfo))l{24|4bV-|h#pI>8*9*_uo5tGg$~Ij>cST1f%VO(7 zMD_DaHF|m(5o3yu@QHF?JPDwK(9L~H8D$}Qb-AXZ1mxoqeI7174F0M}QH!%TXOzX< zeD!uf-X`EX?TU#N^BHop5W4v- zd}|x%edPR08s7~v2uVqB3&zJc{xkU$1v?1kg>w6&*4R23D@tXOkmiH#GU44s@0I&C z{`5ECK`n-L`v}z@Py)s($8`4B&^`Xnrd!#J7(3c%AuGUDeajIY44HL84`u$~dX;CV zif<+*4L188%s|_yRZS{DUIai=oePT1+&zOT{GrVFrX#|tdpnygaj=et$?8*cHzGH6 zxGO&l8iy4Hs#kF;jxWr)IqP>+=D_559EscR$gs=3N_~4=e3fq~=C`w;r|T3J{o$xQ z@XZX05(^#z<$fFI1+-l7{6^k0Fh6c&#y;B}sJ6Y|R8ih*2-8_qY7s5GvMo#&`>Bl= zT2}B?%7ozDY`BH=%Ln!Jjpa+irwIz5->_l!5|z1GvVq&lBHLBqWMi9&^di@kv>&|+Y;cT`)LOOPfP}j5>z{sQ{t~?3 z%_|jp{zwkRH2qERUhgzwciAoOdn3IyoU=>l++n(p!M@X7@of}QRaed|Uyr?Aq4+#q zcU;+)@ci>r2T}ST?@Myx&gFj5f<69lfj7rAm#CTdBY&|s+OXd!J4CpKpO}wq2XMtL zRMI|QG>0v;L-ONEpA;5;5Y>`KXLi#)0T~Dq3mJe!er>4QYn~bG=N816WDDYwB@3eL zJbpY}1CY*x$o1FxK4mfwCr;d@i|Pn9kx~36fP#Jliz&uxY?EbR3W%)?-e8&^c^9}Y*=XM;Af+9(s@x_mT$gm;OU`h9%N}} z9%`ABImHsCp(w2gc;+d!S6}n}1$TdOhO{t$_c6x@Eg`7koNKDBP~LE>^9*`+tRDZQ zt0H|_!h6jzCFv(*iknIPp(t*PF~g`LAqyV^KOQij(i^F0e)yU9PB*ifYhT~Cuc;x= zG>+C~$=nw+LKiYQWY4<(iX9dd)M_$@V({iM?Ewn&2+dUOgqrTUi=i@34Xr(QJx;{M zXR>v46Y1SKz!blHJI~MSYeV&`O<|xzv4kitQ?gZtD)VMk4_ved2HvE1pHaP?Xt4gH zvLdkxq_mFMO7E1SfeubSY>C#;*NrM>inKSl-x>x(f^8PcQ`ZTr&9dNq;wuel#BoTD zf9Abr#Oh=~hUBHf^qitU7c-Pc=A4Z8mRuxseqL%3ylby%Fs7({HelkZLWcMm>9zOn zolD(|aeRV*_jsUpRv=QXn&-TcF+`h)5l|I+IIyQ#5JRwPPTH(D?p zc~CbP#}}+C97AzBN@|`!rFyXa(ZDCU$grESQKfzZ`kvX8ov%ASA}eZ&>r8D7K?ut$ z^I!O8TfGcT(4`ePob9tcdyAa6mZQP85~9%6rYEPnife(4^;ej z62<>g06;X}yK6MfnKKG*wbe-Pl}I}1kje;N!olm zg*4?wfdb-6f~K@ySqsyJj@mKaIF&{bjLfrsyBzg0Gw_eJaT)EMq3j$VJ;IJNvns#| z3tK5zKL!HQ=uS4-Wna^+qGPC=a;1T!C~BxbSyj%p=efR zMObSn22XB0mHuGyJ+U_ZTPZ|ux(_I~nm4cjAW5x``n>*Aft55fcP~#}J?m=m1#(nn zg}iPz3(=s0$0){hnB_*aP8V5G0;YWDHp+(S!9_3L%aqek><9u?l^OhOJ$duJ2s&RZ zrYE%Zs#)^Q+5xFndMN;OX}!K42^!{Jg2Z1{nPtI{K9g8dO%1pOZ8nUVz>P61rlMire%mL%&NT_6)NJ zxaPL7CEzQvug)o2h0oCtB7a1{TP0>*->AN*b0wO6(0jLGPtwOhR?GUM8IkKDuvpB4 zBEj(-g?O$CB?fNTys=GeFrVuh^E}vkd%9D6a~f6H>lwO9)y26*=-iIkD2tMl>@Q`} z0o6^YWAluvW{)zXm5Kk2pWz64P9ClGdV;yINwhmZR*fqGLR39Ul-CP&!&xLO(Y+K` z?7}O0UJN0;L2oP+7uovCqbB88sTEs|rhya)ihQh0RgCHSD&J(_+(K*M`WJP%jUh9PC1jGLZEh)zRX4 z<;8h%t$x2j^{%zN&y#hEPF$RG;MSZL<3|$3A%1T7T|}m@>YuOC*n)evDey;e?e`HR zZBS1ub!@39jj#IIm*enwH+@9CEb}^!lmE>T4!g-$)r9z;vld_L zojKsv^b;q11xJw@7$9E0UebJ1HdvA5?33wP55s+4j=C53#?v!Xc~T`_?^u2+*4)G| zJLYo9wof+K8ADkSGJ@JmheGmJZ9FM<@bDEBv{T*r*CKB8iDjF}EC6uD;Or6KO_66f ztcdA{lj*wmd}<6 zUXkgRz=MzCpo_MZXF_*%W_uHP?qZ|}a+b!5uw#?x9C*1;&M!df(D1TD974&hsL^2W zgZ2ka>S(L%rESW)#r{(F+lqW3R{DEYe5m0|R=&Q)BHhPEv%0>!uYEkoFg@4D9xa`N z%$ybVQ6QEpNY=d10S6PhOB?O3kl~11t~YQ0k)}2KDKq6YSxbcvc(;8+gIT@rDFE4j z9}JpK5a4+vFM#5h*;K)y&$!t!TVz|{?rsOKvuP+=(K=NMBISw;f8vF~8u=8tVDIRC#yvTnE~ShdZ7d_ADHAu2 zSK(8a9)Ja>a^pp`8t>Z=FZYd$%rM{IzcOQC3Fd#Z-HfrWyLmJXK8?E!FlqxBxx`&m zSImcs%oz-hI~JyV4r)pOsm{6NxtwiXcSh){F;Va;>+n037EheeYoyn+ijTnxh1Bi8 z!%5O4mB7gi-}A$wF{(vY9?5v^uM*b87%hZMq z>gn0Pu(LlnyFF`u^hZr44pHa(JQRXKQHk3 z$(Puc5l&$+(F@5|44XpnK&(`uO(Jd1Ug5{n6`8KY3;oRY7h%F#&L47>f4UL# zwJhQD+p&x9kQpcW)dp;PUrGHmnG#OuaIbPki^*?cZOy$Wr#;bD_~bvGyo=po<0x+$^%1u%=otG( ztc~I~%HC5AL&+awpLyR+$%;}}_(X3P1aO89OS%mYPn;$F7#}PvZ=4=)A}eBioU+e} zoD<{2#ZnP_I38Y|p~-1*q513M`Jb`G~4v2c}R%`NIyZtcHqJQ&sneKqyU zON~Q-ndXzp+&r-IM6ZCyhj9q%kkN=(LobjzJWeUo|EKbJtBQ9m5 zVM-FQGjERjI)X1OKUwU7k%EyRCC5){OB9AdUhn3wjKA7w3A^5wdynw^j!3w3OElH0 zVE)NQWJuglpjoA`{!Yf=sB95u+?E5f9&TI4%V*)eW|)@T_Nd1C3#zNV;JSlD5Oex) zi6}AJ+AT+z|A6Xu%#My?X}@ZP%NbQ(azy9k=6=oz<%bu9u5#%@@Sky9+m3>28PPpCv!ccFPszA0>NhWT3&*Yo+?iLx`9kxlVfnd;UtQd%A0#z4LN~cGlD9@|`IEg$a$5OYIQ07@=xe=1S#2YNHJmwK=`(4SR7ewVT2`h7! zNI2>^n2IP9x_XL|H&jNSp|@&;1T{Mv4y+tQmJxfdek1e^t!Eh4cQ+SvpTfMs={CkQ zej8*f=vK>53Ti%fU8GqM2fxMn8TgO%xfadoB1UrMK8)Ea1 zEyB!WfQ z0MY=eSvT2+>Aqr`{_=eIczms zp`uYm-OTw_0xi8nfZn})U-7~Bxm~elPoJz>TakueH$=5R=PgNi9J|s_^wJ^)qfO)Q zl56O_M*F_rjU;Jdb4W~gXv|=V&AaL|U-Qo)j?BmeEqV8S&6?ChoykTH6AM|jMG_oL zc!FN?$SV9w>~Y10UdN*f4z|iXrBc7*GzDs@eK8(vi~8wLlNpMa84qmgD2m&91I9I3v1m**Ooj!y_|&vtbzC z&Os>_nK#rl>r^P=$6$&!D10A>my;qO2tTPQo%KCGsY}#sqL->$8;iFUG^NfLWg~ra zZUKt}0-HxDoacy;rX?I8jii4Oxv1;nRC!o00nQC;#U*BX!Pw1hU70Y~ ztHqzaeuzN#R||hcffTLFbN5peTK#g=luoK&e%Ne{J=<99nt{F)jLrJOv7^9g1P69) zV7^X1HeqV4TX$vPpDYR~^^H1~Unm=a+!=op@7XN9>zY?B6Q#Ttc_ie7viSe|3SgZIiQ}r-67;w#`D8fR)vax9W&1(-*P{B-|1;i@Un1 zJ~^d^Q8fu)p)|ULjsTf8?y^AzHPemAAKGKVx%o7s^8((I?T%cr0srP5OYyAaII;2B{3lc8u6D0nzY3cV7&?gT z-s8`>M()&_8KP-C`=(rHrj9Fol?@l3R!mw<^^Tj=RuPSjXu1m%j|{WN@%0`V_Is5i z{taLm%eLY?~Qyx>ZC^$g9-shn;=V)cqXvsP6a!0%%&m2%Q zD}vC~n6qbJy;BwWT>gg`4i0bk?>g)RgS};$;QZ+NUpTwhfWL60PJC=(JDyTNV7ENK z$+@89Z*_jN$wWEMBNO`savyW|%zXl)!Fj}-&^!1Bt;4p-$h7d%qmC~hj>LnC+ilY4 zQTf>F<%g@X@>|neik+`LCo}5HWH;=W^cCq^&$o!J*+AzMCX6Z!zn*{4)5Ck{EVkI; zsBIUK(0u~4kSs7~7B%zO&2AZ%D}h8t61;hNmpX&I&dNTI4rC&=3&1kmo@ZY{-<*}B+S}nXP`??M$ z%C_o)Bhzoco6!>pdL@dNd-k;>BTGYN2hk4s5US*X3lkXqJklNh6Z#yZbr@s%f(8k( z3u>#L!;CUUPLALBtR#v0-oN}@RDzw7e7)X1mX;5Bv)yaIc5Ns+`qqi-75}~( zuT!>1!((LTFgd9rvXh6+Z4bDA&B|~s7`=vf1*oPN8&!4{5|CSmN4%)TV$!Yk@N)5c z$`O%3C*Jm5NsTLtI#wV&$fW{XZ$|>c@evyQ5~Nr z?^WY+40BekEY?x2$!z<)$k!^cd6Buru^$dqm!oXDpWBvp@qKR~dZ`5??O7S4?D7A^ zH0p{=IhP?!*|&Fg43yrkX0rL;*#jl0K%-^ zJCSgQO>-RlUG8?%lX`^%p;XVuliE5H3V6<|Aaf<&JIn-X=ZxXfPZygl@o?e63PUvK z@;^748@gNx@QskAfKopGY1*yYzrPM4uS29jmCV7(E`7BhsH1RXK|SrS0NKYwYUe75s(MY8q#i z8xJe-@IHpOadj0nBoEfenkaF8dm{dzv9|k>d$6KJ9nAm5%9$slv#&Z=U61{Hub3I( zcrIEB0GWsZ-7i0li&?H`KShJBaHt>c`R{Bx!0M)?QaKmwU%O^ho4pB z#KA+wI`RGJZeQ+1C_Ic@H}T8MQhZ*Td@9h-YW8rHG&5^cf(;@ZE!D)M+pdje!umo7 zfpgKNMW2fjMC4>;nTq9xW0GBJ&?;+O@$plxFNkr>aj0xq=wi|%f!cc_BZCVp!MTdB zJwCqrCI7?t+$Zb7kle3nrDHf+$nd2JdeV6Dxy$;aCQB(>F!M=hIcN^mw@|GOTGb4X z>>d5~jc@8Q_yKvn{ zJgEV4Cx|HE>bMxjhSNA%MQfIkRUXdYUgc5bL?pb}8%pX}HE;DuFWL;)4w=zj(Q5rcM-j2L(=O5_{rk+Bk^njZ)d!ed&?^29sV9d+|AvGww+0 zlrLk$W5jR$qp5)so8Mo941LtfBeF zy|aXVDn^kEeJas?80E`(YN=sI8Kz+U) zR-5y2yJ~lGg3wV%$WwRj{kSSc5hcIyVS9L}aHD8k+@=@H&BZ2lb8}9LoATL5)zTzw zgaJ=&OF`N%EwKciC(Tql$zh8U$Or{5zIoVVYP;>#k}TVPyuE{)``zg!XRjW6mkvPXKn<$XOu?hiYWl59m z865<8IQ*1ul*v{!QJ~0h5b;Mn{3r9rAHJp;6%Q_+ZZ#}Ou!x{_8En$u0?JV)x2tM^ znis0R=?ZvGqz*@9b1)A_)_k78VPC<8lwa_Ynt%8Ur>xJlVU%;m&_UGqxg#bMoqFnV z2xBllIr@G560~IHUg@dsI~B)kUj#b*pWSn znrwyh$V=Oi$zMv3>#-WH&Z&9#W)6Wl`9j;}oxtze3Ql|nrS4G@kec4WT01a!$9^P% zB8{JEOmO}$oEK;6zrA*Dd5cbd7fP8nirS_HSbqWzD~ukzaRkAx*Dj{zrxgLgdhF1W zGSRdby+HxRJm6nGmZHPfl)U>i){&(WUotW-{3R--&Qi9^LQ$IZYA^=Jx#kq(J?~#{ zF4nJp+%m(gl0<*;qLJ=Qx~YyR-Hn}ns8?*H=&phW%{1x!ouZ#r@Vq;kMMnsks4v2+ zl2NRj*Q5m#zlXO^T#w0|j{w`l-nY+o+ignR6MR57z~LZ#ZhUiC8R`6TZC6IcU=c* z%|ym8$2BrR5IE=-F9Pd7bAQuJaMHDsvxpwPOh~2J`ThG^=+|mYm4~eu#^7u3;SuP; zZ*5o+2+s$((g4!(sEzAyLX=KGa_Y9Rh@_7q9lc1l|G4{-~HySF5?jaXdbcXCAJ^CBW zU6Me*PR<&-Q1ynwm^t^1ev2!=G)8=c1-hd!W79o2$yfeC6M2G3Z0hCD;z*}RMFD># zc2t#8=qng6Il)UP1Und0TYb$@ZuVnEKVTUWnYJsx;NU7uc zK%9iTC90eX*Bv+9`5Qemu8JX zHPIy8G!0dfnPAINX(-_BD3j+8hJBEVP5aP+u|jlZyGRWgNTkl@_U2+**LYE4Bg(sx z+bMjGlTBmJE$)1n`@DL%D&j93e^REN%5W$|F8Jqik_;me2X;gMrPSxx%*qT8?Dw=XMxl#A-w%-Ywh-lTdVW1K_{Lf*uQia{r)uQR$xp ze{G1?cDZ6ZO7}xoxcS-@nD6bz9rv_`m3uvycej{*U{d+kJGD2jv~X5dG=8D6m<8al zN`T)?+v`J}BiD>o^*n!;+54RRgqVI@ie(3a-q;FE?U8e82{xq_q&vFjsgm)_lg-YR zZWt}#;?j1CNLzi+!#D4^KWO^nd1f_E8`cCJLc9|~4tcw{bgsXk#gSP(*p=XF}OXCmvhQ{$V|<@nz0C|LR^(V*vaf+&10bR0&d2 z4gDP0E)0Yp+-OR|uhWXS_+z3Iej8*A*lZXpap})^DDqoP`xBlYcok)O79d4^m zk^Xh)!S7j) zs$dlCOa(Hw6qp;#x5Fuyoh#MSe%!mh+qt>@V zK}c3wSaPdWRojPiv(mN@@}MitYaO*P5xgP~axt&^F^o2ArRsLjdosN- z`&(;ax$kv#Srd3kQbSN{J`4YpuaOK?z%XLsK+LM|sr^;H`gW6j&*&?Z+mXX<6EtH~ zeD|tpS5}hEyzjfXqNYtjIW3H{(s@992}|=elGL= z$VSUFkzAjwxwIn`i)5|nS@cD}5UYB6)N1ylQOpbAwa(P3jPX*Fr;pbhhwZSDy*|g< z0+Tm_jVN#parMVG9%SvBawOg%9K3_c0Z`_-56rDjY)`iiEJe8mAE)Suw~fnG%;0Q; z)Sec6?CY?_>U618NraZk)ovGsEBeLQs(9W$xFUlUDOg~z;07?4-SfP<+91wWvP6&le~$zH_jn<9 zCTkHETB85wd}sht;G@ffnRy?M)sqMRg%kU&GUQ^p{ImBu*We#&-5)Nr&1d!>bEOBW za{SxfVQad%ahAUa>Zm;=)0n-D$pAhP#eL;YpMpDb-Wm+-c!5dRjZHktNmy(YIP04t z;wZKkTWa^?JBMAtQ7=U~G!Q6rf&pv0wNC^$x=qhSV+WL^(c#3cKa-kPlOpK|-J#lC zFOut!$=d{Lh{HZBDReA#g4WQN>jbI3EyoG3(!$K8_85Y`O4paGGj)IA)IrPAi^5S@ zm|F1}V!&osMU~ay;?!+PZG93wgMC~Tu|PUV+GgPqyMP_tKEZryI-HQu4`SEtAkt;Y z*@Y>xy`^QJ_qOYl&fP+z4M-uMofD|jm;>JoE2Oo^$cc>^t@kJR6l}b&B4J7jRJn_0 zyXL6y5hpq&J+^oW=lesKlOn2gSa;gY7sm(}*4+amveZZeTjlEmSl>nFbat22tv@*k zGub!EcDFdlQ25|bE$5{S;+``i>i8`Qt~8yFYv^2LDW8(*#l#+{R!)M3p{dzeE#iKeMo`>|lF++juqxMdpi}I4#h$H1NCy15!Go>fKSajZLBT zF17v!_Y5SWKLF&}x@70!MEs<~7z3f_I+Wwm@f7HIz5nQL?@sUZBSp!<6Jh66F?p$u z_tR1F5mv#9l0~j&I<=?dW3B6Hr)H`s5&|MgvOzrwN4G;=@i#!nWumY?HuGerA;zfm zp6z_?>#0yBqTRxT>RHV&70<#TA|(wHSLjQO(jRe#U^tR*(!o-a`-D^$o~~34*o}-r z#rimGFQ~dkbn`{3CY?o*Eq*0g2#bq2p|^?j1lJi@!RM;KFFE<(b*gZ=;=H!&RF-72K0prRt{Ig%1I9M>!)Vb?#`uzP~7BI;-~V!esSB&}<( zzhl;dh#lmF9XP;eb?AKHV3di)JJ52R3F{jqgt){}LudRa;KAUJ6%G|?|Z3tP;t}lXMvYU9P280J-Y1f`QpfX)i7XNC=Z+F!@!PnGS zPXpfTd@ywVf_&Gu(sQ6R<-n&j;pGM@_luy(r7bul_)agM$g*1H*9pX1?Kj8tuPy1+ zHbR00S02<=yX)x)9pIYkwQTmP=?Ne2-p3wB8V3ob-otagv545=6ba4zh{|k3I=*{U zdVsf6M{6f9y7>hK0iU2J=^jj;8>Q)H=JPc|rCMj5eF6|($qu!)AU|HGJToBhesr@4 z=dKtDT&Ky#)9h>a#BD`{=?tNeCl?JS45>c*YO5*nz4bU0dqwL8{u@m4e~w+ouQ%P0 z;C8j&Bp?FGaG5wncdZK~*uM_y5nWTib`Uii|2skquy8wJG1>mQ+pUZIZ+#Njm|0q~ zt(-^k4TxI8j=BzJnpvDKl$8?ZT+4<&VUoMBp}^=$Hvxf)au@;@zh|)_VD=tZo2C*K zD~88+Gq9^7ba3uu^o{kucrUeUR8aPOT3a%KDI(nc`%%|1(|VM^5m zgSdc;-d1d+n5(VDa!puXWWC0^PFUA->)rP&e&`YGI9(d}_2g4cC~EDI3xqO4>Rfqd z-azm}-;9w2ZuCh+h)byKLiszdx4dH&hATzPz9s9dGzE6ijjaT&~fxn**~a{3f&!b=!H z3QbGY+BO3*GQ;&$7(kw$wMhOn)z=%g&qBJ~bMBRIyO??Igf8$D?$j4I89~zQhG7j> zT7xn!t=fR_2p9_dJYti;LV`iCsU*0n%wy#;{x_uL?Z4!dar|U z5YnFL^liDJ%xS)+J?>gs%@u$(At?~45JxO9jbR7_Y@)Z_St#}9iv-*4Dg@SV3x_tz?^swrq(ZBN8Ss^X87o9Gi-9 zjsivF^o-oHbE<{&^gNW$;-?>ye6*#85RnXD%i|Cg-$>3}_}* zP+62&<%lq|=k+0otDrm#P`IeOqBC>D1DbkSnA$B5V!ec$7rug-q#fc-?B=3VG{nrP zMo(8anxYnMc~Z;kmMd1oV!yBa4^NfGm*uLOUZ`x@71q4W)k_5 zuqA+Y1>nN3PbqV9{st-c#5JUEC9oW^Vi==)bqu<$eT3DfYIq7+;s*Y3pZi&{Tg0;_ z<$?um!Mw#kbjAi+8LbT-{#OiAkI6|O)=~4W`wB!J%_!l=$aEue(v)3f(ML&PHuB9+ zLVwdLNvt~@hs#T)`JY@;I*koR%VDv)Z`1{kMx(z=59?3uickm!J!Vssnl+;L;2p&` zqTL`D`jVeAYOz~5xMJ}M;M6YBb-2Yb-5KJMp{&va^;ES_+`0v7&A8}`d=>GqDz*cCQ~ zdbqk^n0*NdrD-+R;txd|_S_i&Q4b$OBbw87r-qik=F{yBW+VN-9Z>ZUV%=>GMAm5+ zr-dPo#=P^tB>gDGv8TZt(T|^)Zf5dc zk&Uh;p+qVa>_;kld9z3(b-<1Hv~GJ1EjWY`-$=giUsyea#T%WnFZ%L9QK|hGF|bXJ z2Dibcx4zg(73?LF+KywRbQGU8Gxx$+lf_0Xyb@!{cm>OzpT1PRVt2J?{|hIRAh#N1 z*DBvpDy5RMy(~Sd%9Nz_wPV^gj-7uVYJFg98=d2?mn4T(Q@YOci_=_7eR~oYmh_=V zK(E&g+0wxp@m!+8*r?R?sIhu%=kPpA>_@)6Z?`Fgo3-3IuvgOeK`K)U(C;E=iEIGF zRHPO#zo{a6X3P@CxSyhanbo1e0rKQmT~tP1^58?_4hNy`IW`heK%kMeQgK;ButzGe zMkxKaLjGF$bk8aC%HWoLKpz>I&q9QAQT2WU@rb|_V>@{*h*Oo>l~V9$k~cMDSVq{9 zA+phJo5{6OC@izvZ(5k8?cOx#PP5`cY(mQ@7;9+sZ#;(nIp)Rkf9AaY)}8%FFI=I9 zG6Z;T;XrbFHz?TC+g9vr#O;@JScE&1UjrM3tq+Rp)xaCi;R+^u#9hTlJFcpvJnpu>WRrBwj&Vy~Z|`0ohfMZo&hn#{xee>VDLjNBkLV4u*)=w@}N+8=-0 zoBs1m{X5oWCqIHDGE+HCN)KEh2y%S18 zFQJ4UIs{(4|GjVCyqRP&Is42$=d8W<`o8t8b$+NQ$&ufqzjx!t4f0R&A60MMAcEbv zachT^m~aI4N&!sxx#^-RCv^ih$hblHbK6Sti{yfrsxZJow(f03q zv&*5-{Kk#zyiXq`)jbWj()^4cA#1NCQhw7Nlz;m6;ThSFl>^%M$@F|b`NKOncxZGL z`jDG(x=<*z1gUUjssO}Kn?j&mak`x9DS9w2_HZskqrIP*qn-H&$;7vwQ<45Q|8(oq zvx^He%+_FP+81{mg_rpD>59)_60g-@{hJ~2wf-8_(5M4u(pzn^zcA~IMBdKP&Wlvt zUyi=IwRXgBTI+x7yThFj!JZLOSjetl6aMp-V-oPp8c4(>jzXcVUC#E-d{2EBhQa zej2>8yYVCN4b><4&sjwy5VjNcFy+>sG49TS^BQM!1}+eH)ce}K#dnPAzLg`PB?GRi zXp}V&=hP{mN6sX!pV+u5v|SmcbiALp54s<9w0~tnCqj%7(_6QCpJCUY#{a8k$`j=a zN)>X^x6fd@F2V6NxZ3|v!5e|CZP%*R2%+jwzkh+aLvv~1LEj}J6D~jqofD2@Re?R zIqe@LD7b&r+zXU6`lwIyBj{H*w*8TO)OVuDuXYlcrH^Fe)gKo}^}jN4$5wlD%j&2t z{StHP3S{f)I+ONGwGJ^jDs32)F*6?m1P(9f=905AzY3X}^1MEpGIFZbudGbXF3L(j zN9B0C*QI{B5c<82HABU1pU|dF55cyytg0sUTrHYrirVBAm6%_?q)1SRyiF|}G_;lj zhbMJXA9-R|1cQSFVS&b@2~iN1m-jkf2C=nt?X~$GU0e8mOEKS!}Clm2rM(AX?N{Ic1g622dJr<)I*{U*wi{}=rCe% z@q)A=@;?_~V$^!Qc*)B~SMrQBknnj!wVtH29Qe%jiP7VT|2y>T{_S=rn%k08|MxlP zTOwHQzeA*WdMEum{~HSS|2OIXhNPNg8MXd5bUVvvxwof5(NKxw{+nC#GJN6|FB87~ z_tZnH6%knLHx_?KmQOqHAO2OnVQp7f(4yB@^f&T8!`oyt4U0|^bw5m)`bC*rtzwtn zn28Qtm(oV&H-BHqXrOUk8;-60jIL|~BzHy&F$&0X?c#4IZY^&?yKrL6j|N1n-)tiJ z#ILi~Z+qX71O!qtamztIZ=h=N+Z*ou4i#xTMon&uxHCp5$NHpg8~9cT%Ab8!=5Uh{ z!F&tI$RqQCB;g}KuI~!*Y*^VJbX)-AgWOw3Sb-d+eZ|e1nqhw0Q2~WG0Y!#~&~HsT z-Y#x{P>t7*y9%gjPCY(M=4)7^n*6?CA#$cP2#QWaDT$1X?fMIk20pv5_$y!t9}WFZawFioF?8Pgl9C%>&4yJsn$mnwRrNA743!G2 zYvZ`YuPP6d1s7%-0R7%nppT=X)z0k8?tQtahFF9-q&=-ChYZ6bDNuB()n;kulSTUG z6N|T03!N!YAr==(NcR?DI~W7$+#lh_#8;9G_q9&GAxjtv+E(oNNctATZk5`VFqCN& zOftbJ(8SxGBK)3yU8dgqZ{SjS9<+MbXLnIf*~`>_nhNNsgI!``nK#-gmB#=6_!-52 z?d&w_GqWMQ;SVuqs~n4zE@^~lJ}9CMz6$pD4;>XVX{izSyCSEjR1()(NbrUnzXF}T zm@gT)$65w+FSgBu)lDWVONkrkrT<28qT)+7N8qzyJkm{YBBboh5k5dKJ7(G55L&9sSQ#nZGF5Xm`i!7kL&@hc7 z?MgD=34p!ag;s@i0vU>B7%;tX5#)Txcsx1Ztb+PDDfX*YL{eB3D3O6Y1MhU5pV?J| zpRO@^yF!NDc1?vcK*GbSZrAs!I_X;wW>{XRutZ#^XcK7Uz(kTg>klfR5T9n>3=LdIhSd3>)VfzimhP zYN>e9Yz(^@Z|}jul9Pkm*iWF2tN=iC7%B_4(X1j`N0CbVV3VD$k-twxImP`+$&Px| zBMd||uFHlov#|n`p}DPWrz~RnNCl~EFj$pDhX>8x{}k9=9hQj=mol$A+YhNYbJLvBiI4w{Sg z$eIOBCN6_jCO_rsRs&W~Vl=L)TyuTe!33aqjnKoo#_l?3v!4q#@*||E}+?X3X0LJ@;btXBSsn;=-HCy0WkeSZqioJ<)~ob(d^wKjrP%v%k6Gr z2Uy+yNf=5j%>Ujb_?}dH2|zc@-<>0$ZdYFKq?!mIbW99cE&y6FWH&HZ&M|pQgp_-q zW%~c>)-93iJ1XKYyeGT~%W)@qzQl3=S*x=?08n!d}JR$b)@H# zYo{)PTB}H?7MH)RH5H+`IB99xeHrx?iLOM=N4b*l7vfEH{rrw@&<$_igpqaS%~Dv) z$%QvgM?u?ys%&TwQKWtWjFtY3BFH9yZUK3buR+ShA1KyQbGMtr74Wv|9%ocu(xS)5 z%T+f(_V)&3d>6Vsz*D{KH%in2eYW_l)W;q0Djp*fW$P&?oa-j+Agu#8{BUuhh21T+ zb9Cc}4#T6|JcM5k-+b4l@%T+H#S<9Yv^B_Pr$GodYb-tM>G$B)8QP(KeE!T@E}-qO+Hy$4QRKS65auaEezn@kI_DRBK?* z7OnXb-~cS{%uxqZe}1`P>1Jub56C)_DP)CX7WtmW4v<*IWdqIbL>!|VTV^7k0n*7o zrWQ|FIXy0RA>Lk1-E^s%nEQ$c$d~?fcdedk_M(R!$rbi{`-EBrIh04ZHpkm&^4U>*5tmIe}kJT&>u&G}cPK4T?RAkeis$DK2HBHCf$^8E>q z9b|J1KAk}^ksLkdWu1P_jk~P2CGZ5I&^=bzgx;^CgW)ms5ampFDo#Y#=-`FX!O)!V zHBp4bwC}U<4-5}thR>Mcw#vCEr-0UxtIwB(7e*hj4RkdUs4C1I;F(xkeo(P4*DZ2cDeVF|9&N0Ds0EFQ4N&TaM%urC?K)d=Ti1BD zgga~Z!)=sI;+jMIgvEwq+=HbL+9Fbu=Zp?wO}uLs(Nmcer0=!jD%R!ex_aE{#Kp1< zZgEllTg%|p8uu>7$*4meQ>5P;)mbi04YV?x#S}C#wsA>?$T{9P!z+2T(9^gTUo>s^ zQs{2J-Pg)-$fwrK!bT1Ep|MDST0yrAJ7n{&og^B+5bWqi$^gD-tF~-Mwtxfuq5Q=h zDz|N*L41dHVY8d%KR8L)fOT)W`1BcfcqBEmfRa>$6#5?+VD4+B zy71-5%#vaj7SO=@W4Mq3+Af@=?io}k#E3+LF&&8|7i|_w*o{SsWLD@(4^0T5%iKJN z`Jqyi{8D_G04P(5{r1{#{`DIqsN7y5Yr4Uq)mak&|KzJJEJN2=Ri5KXHD&R@u2Vh5 z7lZ`r($jtn5H$jRVG7!bmiV&K?0+sy*bvxmD325%9-hkdz3pju z&6C?tQ@Mb_rS}X@I59h}g=tXdU{`=6mDJD!^`mv+sVcPI=H(Haw#;pW+Qb4=F|M( zwdU5eS!94Cxy_Yy38O|6`3iar-J^8`@ikKbtdYQn3f=)mSqDzKq6S89c6EY@fF6br z`ZP4%_lb)Fz%~x3@oap50|2mPH~M{C0<$@q)m)q9t1bx6yYOx~m&(0>vZ!u{fBm50 z@C7M=)**ni!-J_3!#RXSn1OZ_M22K`N7w}EehZZcYF=z!pEn@Sqsc!WvYG5V$=5jD z^Z0hY*gtH!@9r+~5Qt8d@u1B}r(z~hVxrJeMlCGkWV-C^6BZ<5oBf&-zR8p?51*QY zdtZBKX27d*u*yS}dLDT}j9?dbnj#Qy#^j^V*i~UGq6g%h5AGNIX{n+vM2d_u7yEl2 zVzbR4j047ydz&bSFYlkQ=O^c3m8RTB>Lg;17sqdI>t3WHGPk&OklYzVqxybffCFip z0)LmN_B(p;P=gau!oHgAXMUa(*# zhNQQwNFgU$a){RxO&-Y<&! zK7xH7`?*Ng(U?Oi;y(*iO67$`K!H;`_K3}gx6uG_$hRcYYW zy?K2G8fl@?ty*zi^2l!yv-xs4pf-)5C?Aw~^mwi0D}hYAsrzm2+RLDuO5NnKu8jYI zHHe)?#c7Q0&?G`H?sSU%bMkQ?{Hn%BFzM((%W8RH2V}Et44F;Ij zCoWmp#nk;Nt&Ic`DV!#o-Nlr?jmAJtyT?}BE~A~Bva^d*RZ;M=7~@C{J*ci7Y9@?7 zBVhkb5sl%k2I`V*kHJw!6%AK1V<3cksqNjovhxhB4oKJWfZ6uUK}nIb@t*%hR2 zY@4$Ev>2XLXM9nI?+`t)yXLKYdopxtlwxFdwQWa)O-5PGhVC-~FI4bQpvGV}G8@}X z+xK>#2f?4f&o$)SxJ0H;c7@ZjaZ87|@XIqqT&MD1YwF@>CoCnRp_AWWZ?P>Ukswo% z05{+x%?a&8aoetJAnPmbl!)tRXy`dL_GKklis!q_pe<6!W>P8QtE^4Vr|*bZ_bSVj zpvn&0i?v*kphh-rDH9QaWUNhgW>@a-{>0ZX1ca8x_x$ zhfR#COdg}>kci#k1#aKq6_QWsklJ`d2=LpBW7LRmf`kl|nX~K2E^!$ZLrb=O*)}z) zTOETriTjsU5_N7)8Wq4dRSd8UuH`?!QGn-6piy=y{9ziC1{DZ1^jxaMEQc#dk|tU` z%;pGNX~wX$`YHY&H0E-=aeFr3Y!u*#69ygaSku9?b2PUn;T3M_W2jo8ZwT^{G=Odw z24ZJGGQGeIR+_LGu$R;*$elJcAlX)CD+Yg%$Pg)KjxMqF&lN89kwjdKR2xe~ojbYf zz~(<(xNX-5a7a!fkhq|8I5oeu$ki(BI?y{>w&)6h!UlJjIM@c3S~B@E)U&7Em#^d zrwc9+(Uy@zq>Ml&Q)n9DqS`40kY%7)s~#0s^H3wI>(Nzy_V*bmUJJ5;NGWc^Fpl8- z;+ybyy>DXgJUj>_8!0ucyuyzCO?F^gDPfwSAIw@Nu|Gp zt3KD^CNm$bncKE}tec=ClrB|pW*zES`k81OB?{X?XvJp#C{x-Xvfa>QX9jQpa(?!V z0yX&sHJSczz4Biu0;2fn8EcOgiLkybw_L*SM;cXIMcT&lV=20labd-%DeF>M8({J% z$3Qk7TW!*hy>d}cYq$xhFLYD?BpqfId3_s5Mj>npp-thZF7E0dzgmuP zQjFujGAK(Y!FbvBsiB;ohP~}VvOCyMIH#XOkNh1*7K&qpV67imF2jMt%Gztio!;7d#-la#}gd zHId+GfQkX9%CXw5hoSCeDlcv^lnT)V8n<_K3(P^lz$W*|F1B44~e&);;< zxK#}ir&5m%Jx~m0%WBs^?PgT#T|$5u%YAif%vG zE3vu$PN{_+oQLU#z{vlDxQl|YwI#+$*pjQ>23X@GIHZCMf9j^`5w`vM*ER!hk=?c` zB~^SNqKZ$nFwn3RVFj*ieLGL1Z&)I5A0lBaq=RqyVgrGTuNOHhp~-BHuC!W1&T`kv zA8j@Tqtc>4dyJBC^CKI^vxZdO-yI348%Evl06(}F;cg-Uh;`Q$vx5w3QM(zw4peGV zL5&D+7t9$OoP5)8&E-3^mC`G~O_qXA!^>msaPvhzH~p?#ktTWt%k;hAqg%QbkaI>Y zGK+zi)oKl2UaNb{ee7a;9-yrJh#>TgGq)W*XMl1Iq#iz<{3}hp**U7gb-Y#md2?en zk&_d6A9<$GC`LwTPWn$}-$^D4*~qou6h@E0YV=oy6{x&-Vnma5UmTB>%5gdy~k~U2mQ*MPbj>U$C zHnZR+x7l<)+8oRW#N4eqxLj`kxXJ@_V1S4={HuWna`R{!?j?#}%N)h{7vWvT!Q!~f z<0o$C>IM@yZ7$}@fU-(zh3j>MNHHqFjEEvWs&bk$qhk4Cl*Xz^xsnY69#0nO)~C&~ zDU0}P#)u-`jYe`DUfs1dX9wxxYh+B3=iYweP5gsa*M7Pc>{ypku%SU%wR}4vMf>>F z2|izV9z6lN?iKJadw(#1*8Yek(d%Ia^GVlq$1HdFlpK6K`C_3CoEFC zb1K4|3OdR(1vKbsBPaw%qAl`RFg(OSs(GQJvR5PDYz)#Rv+{MW)$FsP} z(z6Bus7|1xCUw*@hl{=sQvq62PBW_@taq0i>Qc3O61zj;12f&qc)i!0d5q5Hx^t00 z&iCW%WYv*=%Tch&5eXYMDEVr^5_uk!*r!?o6S1I?M4=Y0lvQxjTlUt#Ym?jCdn6BR zg8&=i)f8;8hDs(Q9C{DbLANy*3B-)XaWrbeM&gJdZBlB>kO-^0pYnTl+Z!uE2yD2? zCssvdJSJ*N7%(4I{0Bh+y1RC`A^#7jL*|{trpLpr`n96~V)vVeO;}I6=Bw9N)121c zx}nVf#KQbD-1Ls01o-?+)Ohm~4DERifQCq2L|OXeyy3NY;@J@x&oSSQ zFp|1{$=Jo0U40KLKnoC)(1)U<4my6)paVeN*vSJPaTN8ppkujA$0x`lk~o)qg%^rUa26lGymz@9CzM{fu($ zTIWN9hW9Di0*g;vNFkcTZdy>o48J-sK3TJ?)&RQsm7&s3Ygfr2tP~7D>`*{j>-=&{Z^}t*T|aiV&TH9tsbin{52jARlwf%!IL4f?LjSj=}F- zI~08R66s$+LppEsBI45K?0Ul&$s zE*s4|>f+zqFQ@T!6r;VV9@U^eE|-_DJ&0 zfU0o#)KrwSXT#Ar5ur?y^R!yWM3(=_jh**@tTS68%1U~R49vz^m9VuTeHK?;m53@G zsobz$O09ol>P=gN$6a!E*QLRNNM47qg6Nf0mAd8@#g@jS|gd3daTX1g8HK>KXqZSL1fVYI;%-paa+}I%Iga$ zwCX`|fFnru|_$#7?KCzrLh^=4AI@ z@t1@ZvWGh-O-M4V`CPB4 zLui%jF`U6v<$gdy87P8ch#1k{Ll1aZj8{lRS=hGGUwk_fr5K&SO>1Wt>&_5I#LwqkUKC>{7oF&HKWLy928fAGk$Xup4Q46c z%CYm1Zr(Rz3IlURWwNCxW`b4YqHnK$kdj^%rBm?u++bo-#Um8* zydpicleqayIm0{AoIvc+Zi*vp5%=VJ!$u+TJhjU8%f*}XKC9!D^+u$tW4-YBe{_X% z@eE2MJ-y!`+}R%d&H*{}!0+nvn5zbm@%{}@BCFMdF*kLjU>u0Gz22C{!VR?n6M55E&x+Vlk(EV8Cr?B!)q4|LbWjtu7KpE|T6D-1?04o^daoTz4 zA&2GqyDP6jjB>26wNoIc@ay_t&0v?Qf~(_b9q=Cv=}ddmcOhDl#j!aTB{3(lV$v`??msdby#khcX=lpbLBPK7#Itr0H+h-uf@y zVdri-pue8qj#)XTY(&0cl=!yU8`R7$>#hC~_blvC-lCJHKbbc}$K~gilF5>J{$SEj z@vSM_$WHIqg|@-D{dRxkSzkS%2XoksXt2E_!!V$~J}}8_0m?dvO`E^uS2>b=rSUvw z#r_irT*>ULqu=t6d@s%iC$6z|`35z& zE*@BP@^hl9GH5~CTBL-mr;4eVYcfa%(ve@b7BZgyBDe}wNQEj59!^{hg3p^8+szMi z_p1$nbKZk`s%7(vQMP3|Ii=T)ONHC`Twscu4r(_u5*Y;70W~L&JYfS^AT1wNh=HnQ zQ(Pf~9?~gm4Z57d9P$iURIyv|_v!u5B-vS(DV$$b;iqm^#k%8HMP`{c@QlzZ^uNn~ z$LRqC&}Uokpribdw0T*l6nI(_$_qO>WTj>nFL3o9ZJe(SJFcBYb~c?zki?%3r=oh0Klr1O$oRF&<_v<}SQLHf^ft3>*BRd1$pL|_HRalO#74nuN)pcCnI)q6Tz!l>Wn$G(M?ev znHlfih>y>_a`y8+U-Ki7iPJD*xy>4s(a#k=%y(hIq)^@zbDy(6I+Bm0fUgpldH_eH-1_}gS5J*+o|JLXS z{j*6rs2J#!FBhIG31noKHBQ7cxoxd4mabI@FLAA=Rado~CSg>JtgHqT|9;-{{TdQb zxaWHy=Kb=$-F!Dpwwtq*Vu)|8fOsH@&nWxjLu&3mvieU`!s=7}{Q@=VAAEpZZP69o z0%$?tAPs89a8bWGkq{^D4!>{6jO>s*7*=$Y`Ra2>#m1l$JH2m? zO;zkfKS|4~`W*gFfAN1eLP``^X~JqF=>Kbsi>ouD>bB&Y(nb)JjX?0roqpIWrERSP zrvKZ<;JD*Vu&>jPA2r$i0w2i&jg9-Q$geP(f|>(gx8=jk%uK1RZN&2gl>cja;`@ZP z2>%h;HHo3_(x561CjAy_QD&=U{pGQ+x5}^j@K67D;^Se0F+Lw=N_GlFA1O*c?oPa^ z?3+(2N2n`lRrXQ+_v&vJ-p+AwMnRrwm&(Z-w4g50V4??OJ7fRrvA9uVP8eK2Wd)17 z*n?sC01pFdDTPvv|K7|a@uX!AQsFC7pt2rs`DSk9^?wZzc!T?YBabx)K1Hf8N0)|9 z{J*mjH2GlTU!;Y}ePB$DZe_>lCqUHy8bEIT>zkpL4IV$hYZ#pT`Tri4Vpngj5Cf9` z(slFD`CsFQBB3ry+EVz<%13j+0QvtPpePJ4cyfOKqty1i+x7#{71w`n@YX-chcx7; zXL8oihv(yqb+B3JK-2#kO>XdYA>-b;#)`fqBMK}|?eYE-*-6YJ2kHH_2Oj!WA8KO2 z-8NmR8^=_{UmTH@<1FZ1qw0|Tui3;^Ue@G+-LyRX^WLMkNP|`pbi?!2LCek4=Xz(M z1o9dskfC!Y$8JNtX$Zk}QRzle?iQJ6Pxc=UtkP>Z7(ZDP=`qKick>s5_v8%DlH({& z-9X^H?j=O*7sb2@NOA-KW+%?eC|a_mMG2eHWW`CJ*^MX}wE-+l7e@ zNgP$?mO*1;bh0Vv5Zw0*f3nM@v!bk=wH2vKk61hc8n-2UQv~C=OwCti+wMAbYiU=f z#EPWc;y>@(@UlgJs+DG_&1DdvCB4jL09+0iCfUN5@L_>!WD)=;PhN-d-}shS3%1v z?A%?rl0{W5&nfzcJIwv)KM$>qylGarw?cNX|4Tf&sn}=$^Th!-aoyNyG*LoPYb=Zi zbX3ZInN($EuxQg(Nnnpuy8jID8NZ0EfgGRC_Er)C>8sqj-|SVBYOI3_7&b@EgCdoZ{@_f+lH^V$YRa68j>4^Qe) z@rGBbmSBogt&HXMkYy@bG(ALS&!=0`=_t!jL6(|MK*cl>Qe>Z{*1xYPCI#bO~E8R_>tEU`mC(_Ek1U#bDZpw*LpU%d20aP zU2e*7o^3-OmAs2zV@fTc+qiY7-)}FhKc&$0aJEn8i2TxaPlFTIU$B@nq3?}V?9v>CTDv%VQT z>-lRTSQ2%+O0QYAE6nTL{UP=XB6xKmc*SmPvDY-Uj-|cLpO*D6kn2I&R~4OpgurK^ zPYO3z|R01`17g&O3luJIusuUM6hkeao=A-C ztX%A?9)HJ&1>YbUU?NW~nmZ6bT4rn0Ea=X3-$IFS@7TRlu6JNmpt-rdzr2#S6&dN6 z1c>dN$1cpE0#()B{!`%P9!%X4MgqqvLA@<8x?w+47v%H6RoiD%k4 zSmWGVJg($VF6Sp}ZQ1G=LHbNzn` zo*JhbDhhfG6J>n%sBpWt{;vhF;oGVS2dh8?xVn7fEF2>PYps+a)0}c`Uivv z6C?EqS-K^wKJ8Y$a31=u8@c6Md*6picW_C31WtH&jfA2v+E-G#5L)Q}+Oj|-BDD9> zOVi7}(ztqe6g~6T$5Gg-fcQ6rm}#%$D4;Wa-MJ-XggGvmXL3&R^%o~O)>=n~U@k}Q zuf0jptnaS+smdYl8zm#52TRx#?MgRWyd2tJ_^B#Zz+jVCmL2=^XQZ936VJS%?q{>k zRo@NWhE&JFOcL?99ZT$^;eR;m{nY1h82FKrrDgMmmx9+C(fu_=nJ0r!I4MgP>y0}Y z`GvVZR-#7sp`2M972&r|#Cuzvd;{h02~rV!txVQ($fEplQhlVyrG$EYCwIUh0!JWw z@@=`kf0S;If?qc%Cep&BC;8~BN-SoRO)0!kE~DN*2_CJfR3NT68UCI>vA~g#$*SH< zMNh%64x9^nA4f45B0~Miy~{uCi}a!jgLYcg+CMsoxR};`PT8pO#$vTK>P4-&frYDQ zM%S@~H0)?o3TOYyqCobI%l=q@-&kw=+XUX-GMeJ|VT;@bo)vFz3j{n+&}!)Y)0Kfa zThh`I^>`ZHc*rp%AvmV*^d9Gb$-%xD+psyO z$yeyjql+Svn(i{D@4tj*@ao3s3SkeKw7OH)Y>wL~LY0kx7B{72DACbTf=f!ws~`QE zB@g21DLz^p3$547${xj^Ft-ym@OBaj&HZ#|9Mq*(f6f<9tokykjk>_%>yf0-0~WHK zO7~Fl69G=?X5{b}W&T$h6XH06-2snpF$FfiL8{=&BH2CjkDin{=Ll6!+DUi2rCIMz z*=S>u=~Qe5rNsPGZ{h4Bzuvq_(l3~xF{k(r!a0~!9qTcNlFO%81>zUM{{hbU+6D~1 z=W!AhM}uGSq;Y5$h-q{Sn#oa{V_j%b=r~Me!NaDcy_-Z}4qywcd&%N^v#1;EgUfU> z3(!^q7Rv;UOY)(mhVjC zyb9nonHA8f!STm)b3QA(34_d*Ck(O3 zj(0Bm4mCn}hs!-!o39O$QFTtgKWGS)htzl3SuT0!pwIe(N3^3{nHzJ}W%UkbN{*xB zI#~m~_Wzk-|Lt`X{zmmGlhu*Iym?z}!P(isQw~ju4rL?g^NY^wm8&Fa_OoeU|0*A0 zHRs+}XO5K6zjWm*Wqm~f`!1ZqrSjOWk$%5RtA2&~HZo=L7N7o=ov^i-Ah z!{_CCCwq(6sD^>9>>u|XW_vc-jB<;2ZZL^gB%kOmpkA{*q?U-URi;t99HmT3p(ZP0 z6;$(2oH+e4bGgjqf-4}CFGWr~WtIPOTUYmn_2<-fEn0~o+-ogIT)TF76mzKRv1ZF& z5#^rI3Fkt#x`H~~o`k`0{`2hjHFlvJx%n}m9=&Ss*Iy#_ruPy6<8Ol(&5S>{Xq$os zD(XFX-6Ba&Jv$hDM-#hG6(X9^A20<>3qR-#G1bwAgO12GoKNYUb-rj?AQ_v$U2dga?u3fXB19#8*d!9G z(jD{<$nv8b;tqq~dh-%O_Bqd->Rg$O+?EpL`%#`;^4R8Ahe|$NYvk$O2P35okM0SJ zT&lLIJqjniE2dNsoyJ&j^+Tw>310{jcq+ly<#w28$M4{sLg$aWf5CCpp?7^jKXiRw zz?=Zeh<)SzYkuJ8H(d@xqkc*O#?Y-#g_N6&(|hc=HNU~8nWKJLkl5b=;A!d0n4XOE z!Q#NO_wjb-LHEp(pLe!PDUkVV6}z!AIq+V?=DMZ&+%fZIiBN{8OIWgm3KIuX|K3eZREY)BuiClqlF#*#fSnk!!x8`CLk5uE zG|D!5+TQe^W!)D`k|b;%oJm{0VX?hsMQ>&;zKESzRW!TLn*H*(ggG&ejcW-V(qu_E z`3Uom5WXTu1G1q%dn3OK83SDlG#VIXxO5MjtL)cU$)x1Aa@v__C{-HrsQnCU-_{G& zNeL|aZV7*kQj_RVm}W51_n39N9B0&$F;#s>r?35Cu<1+bOOLc6uB9J7w2n6JPpAJn zU@!_}nV2^jd&C*)&3no`#)eAt?Y}VDdI8;_Gw(Y;q4fs33buoy`M-cG%K}DYWTo57 zMDJf>oN#RdyxeZ@rzZmC_`#uSxvY z%=vMN*1Zq+e@uIsThYB;ohUdPp_3h}*^n`0CmMbD={7xO+*q>kUkIBX3j|7V<|9-8 zJ^fd1BdmfBf8c{uxfsXoqdU3zN^2ON)fn&18|cr*YCTVN<>;KQFZ(`yVH}XDR$9Ak z*Zo{&_mb}wEj_Tv`qzsKOa##g`dL+Z^}TlmGd*yjoKFA`wv6h55}H86U2Jsl=Efq% zW7It+D@e}CWzNj^)yac**=)n!4^g@;llci-;=Z6xeqCiL*~8n7u@|HQYhs?td;3G2BI&W&?U4>F?W#63qpn24EsIb#m69UG2-?`a)rP~|x>w)=1?7`$iF}kVC z+tCd*f8%>_+VxurqHlS^+GPu0U)|~B2Uw1;(e9%)Ixa7FL<>=ED`>4mp7**fGrx%J zJg?RYZ$Q&V`Y-n>y_UKt9oO>S`kv0@_+BIl{PKdlfJ~J_<9a+`#;Zg5V+bu7eFx0f zqj!ZNUX`)MOVe80aADQS4_j7OfAjhpJNggX>^w0S_2lEwEAgR5uf(qvwB?5(MhAQ2 z+Mf+Q11(;Z?hK^}y{iv@!2?}rTxnC^a65ms+Oam5$tfO);Ion1gXYE)NWVN8E_I^xuzV&FiG2iOsEt&TI2)Fz8 zc{t5=*4kY>`B1Tsj_Z(}u&+zge_pOxdkMnyCC$7l(idN~l?@Yea6_}bu=C#qiRnkyfRQzj^?ZWgh%`sHMJ|I=#xOljt)wHEI+Vk|C zz?N6i-ARch<&&AlK;-X z1h=`e^~bzSl}Xi6Xet)|t!tOF zo!nExGg+k7U3bVdpL2mO!1HhP=Sf^m`sA!WUJ!d-8a}St2@v0JWEIm`^_M{O+##w^;WT34utGinFlWiqLt~kSo$tlXWLm z2wHF~W~Iac!czS7uMcPF>XdX5;*szs;lbVs=3f59TW_`-Mb3$D|Fhqt;ESDa>Tp*0 z^Pjbsiq3A*(54Eu{}`Pr3l{0=USagbv!lR!X>U;z8lu%D#y#XuoBQH3=37{+lE|Vf z{1e6$64Vi6RA`o`hG#GH&>m&LNp5$)!W+R?vW_2Esc0kVx-fUc# zjqkU;hRe&$>vW!T<$d>-@cv6fM#Q7$ed)&PhmZd0c}lta?{39)YlAIPejT2~4_0Y; z4h5(ofOK`AuTtuy>gD@*u_o~iPuGVG>fFB~7U@obn}rhHtNBbNn1<+E*xhq$F$McQ z2dRJZY4BB`0%0}Qg$}!IauI)jDKesSGU_)t8~JlU1}ws1FXq*G%)Ec=W$d2cFd5=% zGM42E-~`FU(}GgySp$^GYsRD-i#*O;7}y<%mz)#v<0-zC zJ9IPHg=Sj3wOCV4LwM@#lCKUrF9v=*y?4FrCf_ znA+T+wepZ;+|Dm4FWxm|?U?5BB$`g;{lphW!<;5?{qJ>t%$)laljHKJ1t)?z;qapi zzWj6jkB!`d4L$0A@_g11p~oz6;oFrMGE=A!v7L3P^p2fFQ+ZRswHBmvw!-$9XLI^W z)}#JcPh?o6s3-n~J};113p3x+=aYO>AjGJKjIwlr#N%rsaa_qv%Zo9~H)a#}Efsb8 zJ9C;#rR?jwbPXudQRJLgt+!t)CQ2^gyPRqo7;2XP02AM0>AAgJS@~|XIoBQ&-@wVJ zS#juGe97VBwH#RJ-F>n;O6KrC7&}R$&DbI81NYepgO`=wO?Rb2!d^v1i({p#o;I z!&JpEczzi6s#1NU$64*5j-=MI^)`2{g^=ErzG?rLr}1rYHT5E&SBy*~t+=#n`wr6=nB3Y0)|k(k8b&R2Ed3`)9zG&9Xe@JnHVY#<8|44kNY$TC9%}Yv+vJ$~wf65ky71I(2j2+zMJ%eD zHDFqaxA_g_q%*b5a%4+wIz#-O(AXXC)NGT-6dU0m3{=|UjRGPPie02`TIa98N%red z0drEdbkCw{-Y>kCSwXx##!kj(L6jdodC-2F_s_b#AZW(EK8a2s!~Ps)ugbnAiEEy#K8qONn;O{*&0fmj3p#iSJQ z!2(qA6@$38JgPWxUOsDP1M1ZE7^eIu`1vWP^b_7%6}eil3MN$PXc0dXb>|tcKaXKPDcJ@f?$3YTtFjqx4VK^T-{N%gjTsPH6%5`06-iITpVoXwg)(yj_xE2{z<@ z4!XpAa+$SK+Sd@%iy7;`XyWa~Z)5R}6yvp0iIZwOTJcl!R%I4q3K*cWiB5%==W0s) ziGr^=QxWn`_P?sr)QDLcg7*Ao%G1TD42Kr78lJiY3yFKn?t&d4K@rLJ2MMOi`@fV0 z48OS&rx2m*cWs{fuD4{a+Q`Yl|F-j~o%Jn%L{EpuOzMSdgZLZq&#RUCmXr0;SMogi z_GP;k&kh?n&tlx(I9%9W_UKln#F$oZ&vWqTF;-nHoW!G3hcII;E`MGJ)WrOG`HVM# zp&+p>c*w3`<)p;|RCrd*ypbt!{A6V1u90VOUP-LV*!>-xgXst*?K;ifz~Sf`n+=~W zRB2$>ZhcI4go`{S_QLonZLxk!HiNSx<$=8puynPp4dUdh0N=TeEMry~Iq`^Z+> z87tzijRK*VLVnQ@!}Rm>q*8yyt0k^TMR=s9b9UtX%*a%WpW!;kqM>p+TB~$vWO^mH zV-fmpuH->NeA`w?pXbbVb`Q(b>!W4Pn*N{*SMpUKTkFoqwemZhI@8DxLHjD)|0(#% z$Q!_(fpQ8egKb1|56(feaWOHEri)V(P_od%FDV( zw|RN&mjIK%?sTgHrYT>0)>Vw`)3GL8K#x`}JC(&?s$Ut2g-)4w#e!ziWYpy`Rd7otlDbAHM+QL*Cg)8u6@5cZyEfbAP4 z$3QJ2gtHX?ZNcRDB))9rb$sq`(Sc6DK&RuP16@qYjR7VH<1(}NG^ew)y(zyM5l(q( z?SiRSi35QSi4I~{D;DYg>wPo(bZuYV3q0@xldZMi!onsCy93A2-B9`GB?3Ppf-tDh zpXX+cm1;?YhImX{EbKG?kk8i#11$~OUd-z&tUl=@eaOryI;M0`%gB`axWA-v6@%Di zbD8BKW{`MEm%ehvd`?d9R8;%>J*=XDf*>H$pn!ywbc3`=NlTY> z4&5jXk|JFq-QC^YodXOEokKG)?-}pC-~VsDYaP}waPm{MN-@ebW5op?PO?eItx*0^at98S& z)4LzMUn}Pk(~27v=IT>ZK2q#I)gs4i`na>WOVGM$MX&5Y5PveRwWrYv62y+A?Gla} zjsj5)ep)fQYv8`#J`bXoMM)aexRrr;)hGzTDtydNJ4=1KlJ{mR@6RvkbevcucykD5 zjng)EI5#;^4hPAh!%Vgn-plSYwv5K-f)X2f+{-Q2e4(xhcc;lkK9+)m_f#od(D%1# z)4y!AZKrN;JeHh5K)YPnzR?~11q{%mqSfJp>|b$&gUMi4;a&$vD$Dc-x*9|F2yFC0 z_<3vnrd-_6D6QboR(SRi5iHb!x$kWRaZS_y8M8sRQd~>P&91ImeA4ahjMOh1&350i z2n{}oTBfIGum)}ogBI3$dzaw*7pO1O0$Nvdq(`FB_;LI9tm9bfel~SjUY*W<8oD*; z9ZE~H6hCyfTGiUcv#=HJTks)vxO8}CoF!4W$ z<&l+JNbWF2IzzhNK-{|r*w@@VK`%Na08*ZBppZ*-ZqXmAWo}Hv-EhUO2P&y+k(bqM zKz}kPEeUH9=u<_)=TeS{<2(0*!h*yROA>9ViGH*tDe;X$mH==kk`M6|g(m~N(r;Mgoswu?fXf+yaoiVY9 zX-;n6vl$gLBRfoM>9&JylHnD3ym3?u5j66wp{4D7ZrWjP#JhOu`bMxf&&7&wDz5V6 z+V*7AG$m*w&T2u_tvcRhJy_;_oQdu8%_HWmcAr+iP5t|Cb__rC=zAA2K}3>wX^&Yp zk6MNXYi##xI!kp;1{EDf_Qwybw)L;hdyYm{2Zgm|+^pHV5^s}nq#VL`=3M3|7Uy-< z{J7iqw?O3U#FlgS1BN!|h)hPzFBRla0+>Sxzb4*#i-8EGo9UB)U8eQh{n^XG+b}9d zDyEL?aP3I!;6JB&Y6KnKV1{tLcgvk(qY|o$Q>W^Sw-(#4>vi0(tO^-s9ur zq;tlEsi8PpuBet{Nqf32Kz`SSqMW5AS@2^%$kdN4kq=k4N4 z`ez%DUu>CJULnWo|`bT7f>Dmc|EIZ$U>e4<_Rx%?H+ zp3Cw_EZxDoiNQEp=Cv8{lTS=vu5qySpjF;iNRJ#ym?NPd_?`V6TQ!={x`heVf=<%8 zh|^(Vj^dwUS(h|MhKW{^YR$IXu;@54cHShJU#`V(DRYqx)|wfJ?!nDeE$A8`3XBYt zT{(y-*dX$c%}gbJ+?x)tPcwFUz+)1S7bka#G@*Zs5ZWS%SRGSU9 zF4tVNgS0I$acq{IlV?pMBQz^PZNP+)LAg>v~a&l859SJd&LO&qpb;+=)ElVbkby4rP`9I z?y1%CaY?DTO%98{%jP&qZ{;5Wzv3oJ?+dYo{t)IIgdf(i!U^pNW)v?P-PNGx(-?vy zffleG7QT`DfIvoAbz^!GeR96==EFE6vpozc`^JYHj@o_Nz?Ko#BO{o(E6Fxt^s5s5V~ zw+WG0v*o*e9EUeA$5qIm@N{lJouPe2k$#%;P+R42M&}3JfJ^TamRmWrTF#__Wza8m ztY^%X{1F2XsKQOJ5j~hp#u%U$XAtBq>6#0WP17de#zM{DMge6x=s+Jy&I zxwpTvhxhZ@?j7}tN!2)Or@u_)f;1Tx=8ScaT~yR5vzcZ;FnE^T6Bfs%tgI&QR)3%4 z60&jrq|)aY484rErJPM!Sx+?d&U9a9sl%Xyx4VCGIWU~fG43IS=m`!lRG0)`yuXd7 zIDsOKi}=bDalcEyO~%7jJZ;f$!z{FA*E~`7KM|hL$3AZRkA1FZq?hXG^tclcv!Sed zPW_+(Z}ncik|P2IE>U2nrRmcvl(KunPnOEUB3Cp=leOYl`7!dAJ5CXoY!9@^T|=0v zzcoe$%{KMk%z};X?gHw}b3B(P1Zlj{`%-);1e*Ycv zYr=KCTUSpY%)my3r_oNLY4|oD>MtRK`^coF1_! zu*&Fh8P*lVTBUIM5xLxgzidfSx-~1f$6X6rz!n!@Tm?Fg)REqj3J7btZX`#R!Tmlp z)t!XFR)r3-;j!II?t}I~9Ayosn<+ASm_yNC%kK^iYVGUvEX%rJl2C{+h()ImtP z{~9#*>^=Y4QAj8x;5VGS0>yyYY>pye9sm);kU_w4&Q1u?U3#3W%24MyFipyhbYE*QrdGT2Z9QJXdxJ-Kr_2UD zVl3r?pQC}8!`y2h@nmMXzJSn4765Dai< zDS~yhh-30cx=D_4s=tEpFs!>&scF|ZZb@kQ)%5dW`I%VKz_9TRl=<|^89mZGT8Ihx z&E}xwO@X@GRK;2XD~22NEtS_!M>3I3zM#nv%KhD!>nRlNEaF(!pvLrf7qgde&VVy2o@be*f zkHG1umC2f1y3u{p=t*Z=U_a?(2L>2UBfO|0V{z{Y{gR_-0`01}Y0;|R3kfIfr&~Yt zFnJ`gbTaoShkAc?-WEKdPEca#BKpu}$%i(-ExNV2CkC7{3U{kLHFTrAPEY>PIxzKS z>J@kZ&i_i8^>S~C%NV^;of%qKdne45LL|DHi<-gknDTdf13y8tP2sD5+p7I{_zN&- z`C=5;Q-~rl(Wq~TR7}bKSu)r|i)DshXh}sLvi%4e&ahrdkgHg8Em6e6m9ibE=+-73j`+_EDDPVNB_3A2Wlq9!~tO9+fAQ`SjODA^9r<1+%piQ+2V=edZ1Jq%s_UH~s}6GgKV@ z(sUVLzP5T>`Yuquc38Qqh!+-~JqG7Vkd$2WJWbW5HP>;G$APW}uJoq%PPHtx$hX@? ztR(%;{YR7Tj9+_o9|=4P4hdOXcDWyDJc7qwUAZ=Y+?sC+#I~GBfXCKr|Ei0*oS6@L ziZa#^LjWZjmouu5pSIcz2x{q%DRgeTA`)miGq<2* z!0L_~*@=A2@Ud4wRIneHS3hE#?O0p{%LA=V?GqZ0;{`xk-;0wTly~v9Y|%#(7Uyco z&vSl|xj+$cobB%Nym|?4*>n)7@6WK6HO%}z6Zfrh*OfZpBPeZh_xFy*GCmgPVf!@p zD4P1O@tRSez5#%gb+E9KYbeFc`{hbdIW9_9o>SQGEAclGz_S%Fc%wNb(MD=&J6^r zc^uY6VviBBN7r8tQFEf=+S@=g8eb76{{K_VUdv^{6e7+*N<5xVoH&x~H*3weWR~hc8{&Khjgd;>FC#&{uVGCBGP-6JEQnVG*%36iHv!tID5{8s zXNxPQS~`r^Fap-MRN?+9$@NA9=$bBZ74%He;=fNm^A_i`*Sl9_5@3GlZ^i1|esoyZ z@@;BrF!AzQfau*4S)N_4pOZ$BFdK0O79i>%>JlJEI{-=qukR|<{Ryv;2;+b59DhaD zvU{-jnmw7i_={On%6p+tGJdmgv26*|@|(1BQZFk;sUzt%68D;avSny>MG<>h{RH;L z#1v`VJuX7ArBC$Z;*|A%~-MajI5ewie@} zzN1lg{WJ|eNnUp*9|s`TTD`3Jq@6a~h6OBIs?0V!1T;UXo$MFh43NdRp9~9}KqyYT z1Sk82PEmoyOIJ-D1s*Njsxx@J=hHV}45rNBJI;Y5Mi#`s6>Q74=673Dzjt|BGZ@`7 zzEppP9Ao4_BD$C5*CP_QL$pFV^FhdAdg*Gd!VshhVtYJE!I)d}6`!Q0n(cZ7zX(3> zsCgL}QK!~amohtG*xzc6Bja=JRB?F}ozWo}7V3{mnH9Zf7hm$(*@|J@?`*1t);(&x z=A*Q|6#1KBI+ae}OU0T+IT3?6Vf#jh#3D);;Wt^*{zC*6qCao)I3Z5+NG?&YvlH0p*AGu-*#dHgTBu3+3mXl zaJlB^zhn2A zJkcl;RjAz}VOJ5`LIYU4k%nKOUn0m4mk1tA0=eab4!sy0!S6M?a7lX)aS5^WL>;*2 z;B3D6LaAwOBoeqkF=vidIZT(LAacsJ;+FXfRi+$x{IDX%oFT#F{6nP~>v>ZRpNh4| zYOS_8rqRN*$zpGU4*514iMX55g}%rn&g!CSCGYP6t(fyIyh%B6cxq68k0d*)uo`F5 z{9NT~a>`wco^6Jk>~Q4ttk|eN(IT+ejE!uXRa;ekxD21EsKpf14Y8mwVwrnqY)Y{V z{8HY8_(B{6;Nr9qI|*&Kk#A4dE+g$qolr992uH^0hZ)^-()8R=Pr?T#;h$Kj{;m@* zd;ybL)?&+K!Dxt+EOsgw-y-P(X46dp>ORLS#kcEDU0V(nmOQL79D2UouqgMP z$SI{yB)QY#t?|#8$)p~62k(9U6#;f)O&Ku=-7`j<&;0V&=G1R#SPhawy>&%sY<>=- zn@wYFemsJFJ_m?-4*=fe*-d5>sto{lE;)FWt11!4UV<)e&`TS=A)nd4_tqRPyG5X2 zz}JL@W5n;*_sM#-8(%JmEA#h*E;e5y0b{=62bV2wnDbCtd>7p>w$`hvNaAw-x*`#vH6ASZGRZZ&7Y- z3eb0&ex~5saV?uutEyjR<~(1N$^Rt(<|&J@?aRtT6wDx=z7vdCpE1NwIwQq#b^hsC zwEnZN-)YmI(mq<`255(@?~i6abso+#IuVdyxo%3%6w^baav8(|jEKfVq>q&)yFUA< z_~4zHLxn1X419di7D(O|@fZJnE1>JVezrQ+{weKtQ^6I&QhJ&z9OzvKpQKPf?$OiT ztk=8u7en())e_;^8~00HE@qnZt;ebY@Dx$Vy`e%?Nq^ykkTzBNo+vM>F6 z#;xO({2?cCs|BCXO0o06<#8?r6^|UGo2xm#e!UeIiTRZrwE067n(PhE9Z>2CWC90w z1fHv{58yh#HH|p}p-HHzir0K_hzswtXmQ~Gw#(GrR7t`nxNyP1y%0poKhYJ0FFll& zPa}+Nc>Z#8rPeMXLtu5(FSnHF8Ny;C$A{xXJGvUbga^Z3|Ft(~V`Yr1<|r)dGqZf* z-!*+Xn8A2E@6cWTmA|*#m4h}u^Kke+(*dO*d+wxzwi6Pm2Y^RHhT8FX9Ed$l+W`fXQfjaZK0L=xqA8w%ZEHq55Dl8rWxwN8hn7~l9*J_@}6Kebqf$4_y(+*rflt= zAXlItT}>Njtz7i&?5EWnMoK=h*AlQTEHOU?CNnDJp&1lWQ)53}hUzd<$cdfz*}-7A zZ%1}I2UQpDjS{apaOiD~tuB5)!t~eR_AmSFpxyniYFDhW8lpVX>XNS{fyJtU4r0;s zoJs$yJr)&SFER_yGV>NNvh4Ce*g^8Ylz~N`LcMjlp7-Bz;;YYQs2kh$o_k=ZlxyD!)wt$k~KYPLf z{TFmKtLV|s4xc?lkUk=ETa^N^8fAt*zFlPeoyNf4?U6`<IxjO{7)h~j4QHwQMvCA%;u3J=&lh1hp@P>v;v04AOU^4>Zg ztgruIfr9T3zdBn%?CTC?XqCa2feb;?TTl&Shy*v-f9x(m}xY{K61{=*8hs% z?*vaATqDH2#4du>%j}hKE8OD#CQ*85mi?Cg{y~K~)%3E-f1Jekpy0X&Wu-(<5us%6 z=5YSE_@fE1xuzX!$w*#o;McQt9MD0wk@mMo3e+Lk9aO2+&@ ze@wlA@E>i2#QqyZ;7a{*sM$UMgdDWBhs0(hP=Pd%Ff=jNB(+c#I(K(_#MFgRbDsO7WY4}x;1@DZ}PZ?y~~p( z@`QibQ`v&i7J&HNKc7VF`U=?UWSWYefwOfj~i4JdcLYKgy z?l~}w4mT#g_Aw_wc(m*2LAZJvaDmZM?e<|jqc?o0h{lv%=i>{grq*?6@u=cIo^_jn zkmoh$?yfH6z&iXz`p0+K`^CO%$`q@uhZ=1X`E0Ffc0IsKL{Ap@-|{445K<@K@|t3( zuRydpMH)Hsc8A||;o!jDp7vIMzUYKs$4%am{4Je?bQ1C6R5w zWm|!bWuCxl_jIjO`9P-B`Ymr3=upvd9HS z$bWax-j)lk)Ain*24*clKG3#7+}zz8ufU%SCAYT4IWLFR1OK?TniC6@a3kHl<~G@1Lla+Q*jb}S1FrXt6;77lTlq*;BEK}02^~yRV;;)P{)#`^QV@^R z5Rd2SaYvj}^o)`FV0Q3KSlh&L%3LvevSil|ND}??%0Oi%_*;p=2^t`?a-+HU-q1iF z2V&1kH9g!a&pElj=N@c#y6UQ%e=yJe!gTXW?_~3%kzYJjta07Y@7zISaZwMQM(r$9 zsNI=e_DWY7As6NGL}g|WHcw8yHgh1><+p2$nR2SwHxqvd`2;3qEg^H!@3a*aG3B@? z7Z!NblqFPDIK(ET9s(5(0wJ7esgr*)iP(l@`5giwQrNg;g24bs{UMJ7l%rY-n>Y7) z=o@RZz-Z@&*af3$OyZYf1&Pi#jtow{1wa;*{1X+FwFYD*!v$jKS)ocC=@#qacjYh4L#T5xStp5k6@5~!+C!-8!>g2O zNz9MQX}#@m0a+UM;_s-o#YPLO{?xcJ;Z-qm&pFcajO|3(Li&5QlVjv)%>)#;QsTC0 zSn0bzTAoeJeO3_tll+*yIDcG5SxoS$v<)uqa8;mt5^*y%b#_$Lc1`wMn(X&;vX)kP zTVFHdyEar%X{kxfX?J<%9Vx{%iT&_?4pnIax-3x}@>Jes(KD;Xn^XOt&BcN#timpU z8{3-dm;9+5_=3PTD>YA89+r>%hD(sHpF@^;trBCD#P38{4)S|=JVTb9ef{;y9Ei*I z^pKcWa{`qdDBm)r60#S!)CA7NDFdY*Xlb}cWcfucW!UM(0`c&Sa>#^5EiKve#U$U; z^;}76ET43y*jR()N%(w4{D!KGf_S|e0;V#EFp0l5f&LtR;mlR2{mI4QXU1N9@rBb= z9{6HKJwEOiR+Sk9bas`|LX<&faA*YT>eaYkRVr_1)S05VM4~w-nz^NeJV{bo2*Us& zhjUTRGd(R5K>lytKG9sN;P`rhkZ;Lv&=^kay8rR5Q2HpVT&vW&9oX@cLyIk6c7LtVjNmjH+f9kj~A>u}EL5+fDR+fu&AE3z&qV1JGB343q+(@)R3ONHg9tjt;gQ zPlTnMYT{do`d`h(jmWg@-`Ueq?`yB^*8V-e=RKJq(c=-=T-SK`oiCi2!}lwbOK75mELl)b-*yrP2yd0*Bsq- zri`q+zz5U^{xu4}=9RsF@w68ts5I{tVVU>6jm(^Yc|s6rD*kgLfFTmm_t`+C3{uhj zbndFe!jv<0s_sk;NJk*A*wNPg1i5qUX9sx?t^ZjOtACTc&MIA#xYt!u5{t9T)&DLE zzWS^7$ON#n=fWQegK~+Feoih-|D4PBHQ^O-Kd;T^C`(F$s|D>B-2P|Pd`BXM$I2wM zy>Ki&HmYF%*~E`g(vcWMG?lJO!NNG3F=m)8zIkl$Kfa0Y>&JHWQAdDqaL~$qgyj~9 zwF#{SvWpw}1whBN=n}V#FJH#3SkwYfV(0uGu*a!lZvl%K6${YhRaNVqHja3R6_5tj zS?E3k3}kN;Q3el$ARQdX9+lTFeA>IiVEXpu4(1UQck9w2o^ zL`B)gSy@Sog+5qX{?MhSgkQ$Zs3j%2AFfO+ACPm<1)fD4!7saJ;-KW9IwM2K$B(i! z?w>I^gDxCy91C@20TV3v1wJSiKnVZN^!7grRh2PyA|Q%mO;VN%pCT*WDMyn5*i*uQ zm_}Y<@tTS<6>uYa^Ei;!+Nq2E=IqABR3UrJTzS;PkmZ9aLrHC|Bn3s6ra)jRlBVF5 zWT6B))Dbrxnav{oJj$+9Zn0Bz_=w)T6Oc)X?Fn=jlzHL*@RO04psA)7C>Lw8vZE)J zFO0po*~50H#yQ<4`$U|j=2jfQ-MbVc8%OkkTVdJj?Jt?>C96kO7fFYYo=VemaHfsL zJP{#W<={+x&B`mGfRzjs%>h~gu`nY_xKVt$H{f;}H;@R=&>w&Y?xlCY;w`U_g=@@R!_E^y%~*>+E4eg)GIZ z&`yWXM!b8gOUapmz9-}oh`DLV3(zfxW5zJSN|^_ z@2OXbx!!zbFz__%Rn9+iP+3m=@Xo%9@Z=J5F{XyZ*q?8Bk6xYN5ea+$0bCUTIm^Wy z4|sFD{aN+66K~p!HLJCO!cf;;(^0ldnBGP~VNS(yVd5rnt|?uR(?nLk zfE{=lZZcmA#~3?Gojrlj+D{JGR_rt*AkCNek;yhKswn`I#b2oFEe_z9LzEFGM6LT* zoPbLwcTk!I$b@z|oP1rk!0MdCVAZaB$JKJr-L!86Nxz4(s9(?E3EZCH6~S-K?S%yc z9NCw(8h)Cld;6NE>kjmY-LG@82{~ZQn$DJ=bf+KhPYSPXD)l8de(QLXJJ*aLd`g9Q z&fT`ET`}=(O(P5~c;F3Ham0Y2lY1=cO6$q#q{8ujWvl){gzK}`D&UxR4iqHmTnq61 z^!vceqx8>^5rdA8>>kGf8)12w@EEV}H|~kOHg&-mr$VDf?vngVeDBC2)XGIix1~}F zZ=FiY9D1EwGYfd!s{$`qyn@aQb}&hDN)GRP510AfcDnINg|vs)I;We?)}J{at>hCR zxe@M96Cv*MI5MB0=(so1Rm?O_9OjZ``$Zj_h)4s#sk9iSx9=lc94eVbd~(}+d`h!( z-A+y2BVr`DHky(ud*9{i+LEA;>11UVdUF zrY9o|jqNt+0fufRGMb5mp`qBUyTg{ZR z%;VMUEIYg3t25*)mH+GDdwm;}_yrJ?d6@k0Mnp>?j3!sPEp1`EfEt4-`D97TN2RQh z!PRovcXdC@cOG;Sx(qvoIgw}p(maVtmZ7?D(!!b;>K!}K1tI$%Bm{03E}nE^BskxZ zmNa`~O)_6Nf?2d;m}#~)TIal*LMJNR1t6k6Nqy|YgwFgf+rn3nbm0$P)IF&#KX|Dx z!Sx@sdS9p2iS+VRfs>p=2RfZzaH3L*O@|6O3; z@gpSdPyLfWkSRg7ACwMx$4rxK-<7Qp>iCEI{a;@w9JU%OHC|FoSyVgHN^Xp6d!N49 znN7eNJ~~dlW_ z>Rl&{W)A3e{luQUhUXYBX*&PH>tw5+W;EhS--=Gt7E?uYN{hKYk2P*Wq)J;Mr1e|n z^P0MSpzUXf=ld|?D>y@BJ8;$T=KhUW%j>1kTY`wqu87MU>kZefhy#I>%p+J=WXouh zFd{N-*yE@rlNM=CiJC0{9<=u+r~A(_Kho>l^e?SB2~K+}kdI125Xqgle5)JsHBG0q zLcEWnJ}TK`j=Lx7LSCY+FhNUwgo{j5$gZf;p%m`aRkf$LzEq3zkSAt;3|-z@yL;2t zzvd3weiILxY{sbHSbl>!0L)I0%7G#q9()S zb;qn%pJ;YyBb<5C&x%$`yM1cJ<%OYlThDW0Gk>J1kM8uOg06vPuNLrH9FSKQP#V?;@vd36go1+Oagd=+YDRmP8BD`y>*~j*1bRmBCPkWl*&+9qq8W1 zoDq6TKSrdoD~+^lg2~S0FIfFqgBu`}7+Fa3#D|@2t%)*cnC<4EK)Q!d8j{0mec@@c z{5~>2ome6)bVb+ut@?1<=+u&9Mec~{O+e?6W?;0(vM2K}`9R&y_j?6GhqubZ4W@F* zvZBEasS9I^S3?LwE+7s#A2`DOZgQ*7ImNcpOBC<+k`%fTeV}sH`9bIFv9WAl5hUG* zW9z$6^RMFS#4urDU6!4#q3`EbOZZalrlqgp*xhiy37uRb;RA;-3O4jV>-}|BioK_0Sl93bQ$(>8w*F?jfnkpo}ntd-N_0+*B1!?1jfF2Al%b z-U!hy^)~lx>4CM6k%z>y`C09cJ!{r*SeEW@lIsDs!={%)cA=~17#B(okFEw{vnm54 z0V_X}MABXgCOdj@r+Ie$VT0p{vIKpyf2pzu*Lb9nZq*TSFIdAKQrPl{u_db91A#NX zw9>LVpr9}v0}O%q0I*kBuJ;9_x~^)L>0dX7U5G+aEa*8lG0i>@ZIfH$DF^7 znugD->nEANZ@i2EJ=$L?3u=4d1o`VQOBi9*Ey@MA2D=uI^N@_v4f^`GstlXg;Z-m7 zx6vndvFtahfVa?3&Ld^x3oyS)I?dbavb}KCBCxgy++TprO0judw$DNNyk*=LQQL_j z_Nq;;2#SEY0wTr_aH9e`qiD7~E z&evP6Gv!{RtP`|4gVnQoVabf4Ex%U|N%X;uN6Ng8&)AtQOc#7_4Q;BL#$CW9ty{&N ziP{b@m%7`ozIdEH|@!^E#?k#lvK7g`bvQo1YkxeDUHM27@M%j&!CUfNcTChn7|DLHW@4%%SW zDS=y0lzv{``}Ka2o(6CR4In~J67`B)n$#c6{&<`oD22)6()h9d4qsbIzkte6M;gcA z@L{7S!$e3!F7&a{mj4aM$R``0%D|;RT37c0J2iB6J{x9o&((Q(axBn6K4CTQ{$vi< z2BI7_-L*EsE)X~8zeT*b;{e@3gAWkOv(IZjaIYU}Q%?acpoh;J!Q3gb3abt;rWb3+ z0SQznl$8~w!1>pNz81Hv{M6#?VBd^TBq(kb(2N8mx4>nIf%|)OeG%2h++@764g>F% z2)oOEeR5XCG@LtjRSLw)SnF%Yq6i}?a8~v~UBIG%(%Jm9R`^yuHA5Ti0K$O?*!=mH z6&6k1WenOmtCvOWtMrK1{@mdD^Sglg8+72A1zsiLPGA-eRS3U!#I&v40HL(#B>BKQ zVt7Q9!*a2R^)|*CdLGji(M#6nGs_mYVKhmL4(pUz*O{9Fjh=pMbV;tkeWbFXY8vBm851+<(|_qEjrieX=Aex~(_D zmjR5^c*KnS*BbsWRe{*@VVf}M@x%@%1!~}G!CHYskLYQ(z?a=)w#;DHF!fKsnxE}J zB*PZ(MSJX<*=ut}Pl1Vn>2L=x!`86(voHBcYDokm=xOX!s)$kc_5$l?Qvo?#I=vF?$G1oYW|k?F6nxA z`_|uvw!BnQ5v%Nz!h002isCGV9LR`>h*b6u%%U0rKWgmY>aW5%#OM@wlXQ?U?;}Ok z`loE2g6-S^DR3m#$dY#hKq;I6Ye@Akw}(q%$wDztLq0$N_(SJ<9df4^2^;fex13b= zW;TPtWttQCHRphM;;`gm=jpuY#K!!~E3SphaK#kiJ+_4!_4l4vpq1hwXv0va6@@^E zzfXyYhb6gkZg#oDuw+3$rH?%Ma}zz&mm{Ws)X!rDM^%ym_1M*BE9A1LZVb*MLyDI7a+yo98XwNf4lkMVw*dK9vb~wb~i6vz-(WiKx8Kx!*RX>kP=@`s5l z${vkeQ8gP5fIupU9`@(MaJXP{FoncL9(7XE8Qri*1bH~Ekv5lH5cat9{`+%!NT0mW z$O%MK@c}B1DfU85523HHi_WertjvQeR?W%Y=+ve0vOMK|uuDSK{*V5!#omWZ zbTfAQgvB8mUn9|nOs&vWYi9zFx44`sgkZvf(_3X1X+p_BW#YQ2A36T=Ks15x`~x%k zT`DKg3gmT1Hpo#qS8qguz2xH3C2wh~tXSSFEdE805~K4Qrt}`^wd4?*Vuwro>GUKH>tvBKP%szf#NXo ztxM8)2@yLBr!MN|2d&MA5!5s|>N@R;%}haH)5#jiKs~{#bb@pK}scD+H<4}mP{x&QF?=)4ZXfpXp9iDrI@tHse>-C@L#zH z+66wNC}He0MismrX&^l0^$2{1($&?&YUN6E?j&VyfzGR?GWPMKeauh3uuQ1}GwU6* zoQBtqsUukR2ZbI#{!||1;E4q^;t?SQqsE*9!;kHO0<& zhJ$=~r6sb?Fjqv@2FE%Yt>f;R{qO%55n8W$)+}jC*7i>%hzcO50?e1lB*-o@wS4OH z1W6wu?L99$VO1!*ijKBecK$_SHQEwf7%}8_kT4?f4MS9YrwCr24Iped zW_HA10+cCMj3it(WCDM8s&a3+U!Ien0HU39b!}QHz<7FK2-Jr*9|wP-5b|=e-LYuY z(nc4+Ervk&1#M^omoA7r(|pj$V3=c0P&%Y2efbAAPX_O z+s^^X3)(jsmq$#?6Nf@|v^3Ptf8&9^Pms|ZGK!wtpO}`O>eVcc>UpJtfSxZQP`&t! zQRD?GU5GTjcyHHgF@J$+KzQvT-8kz%!A0!QH>~vpi>WE1XTM9Tk;&+?*MEZ~yR6&tx$EkP$y^YKQXV?bk}d%H&TWF_ zw9uvoZRX5nv563hl#f7-Yj+$V_Losv7ghTV110Dq_}!AKc2A^O>KL=6<7sgR9}oxq z`0>*lE-qbNTuO8l%=keGnL+v_;@$kxgOxr#g%vILisi#818SPw7kGHH2P1|5t4)oI zgh_2n!hygaP*{=E`Q1R$R&!ZEB}JJD@f!kV$#I0&%yeSf%V2^v{tjO?v~(9^{4+>QBx6 ze1#9GR2=r#op3)ZomA^B3Qf;=mU@OW2TkGVm z-op4lr}KTC02EqzvG8X5$r~UJ#Xoj`R8^2o_Wy$T3Y7n+cC}AW!2c~}E!;zk9QXg8 zX)HY&XjxIIK7VB-00Y>zl|6;hfdj^vPeb+o_c!f2B!uPPuYeX9QnO(}0=xF2=D&of z2r{V>VGZO;e|rHp*Q0S>!0%H30j(ub>Gl~K}Ijp~n;12E-3P7OZmXlvujttKlR zn-tr0QTz9r9S?egu#sF!ApoxM0B|VdffG8cZ{v8S>Myy;rgA0TAS;73 z5OI6a;NfNr6wLSV+y0t(@K;FLl|^gTDvP)c0B-v##y!JEJw=}~9cwG8ol$}Y03gYi zU%#kXVp@q+)AuJq=?&GsFSfR{hSdlG5GlTubc;U=FB=4Jya{iQ;zfo3$L1Vd8(C7?7J_?}VF?`g~_q40?>P#*^Er~MB``NFhC z^5^^Rg$YiUE4iVHvO`Xbm4#qa08Kqp%$h1L0a!2^%0mssXm3Dl5P>*>Z(aQ_x1G#Y zteLoWxyY6R4=goma}r#fxf8G~S@+-(Rnnh5D*9Lmjink}dFZah3yZpaz##aMp# zZI*zWq<5Slb#XRuTk;l77OFE+p%#!9N;>=kP;B5Ip;buP5SH3DX6#Ba*ktdezts_B zfKm40jqnM?GwF}BGXQi6fNQN6c|NkASRFjAHRN$}5%~o%BuA%S)Z8?(o(|b9F5S8+ zC$?*cUan->Bhvb|8XI7Agz1l`k6c#F9de@{O?ecrnAdTP{VrBh^@_?mkqEN{yBr9y zRg|NC52z%&!*6Xa1|Apn*{uDnHMi0>2;$r;Qk7=Qwh4+`(h+w**L)=m=ynt=Z-85Z z-zuN^ingwT3CdO*w3nXREP+7oCFva$OlvC&xyto6tl0OCD4gckj9=>fMVo(*QE3Ym zM&E{N=6edp-ugs;lv|K)xfy=NJd2U!d0zP3^IiLOVs^8@+CF4~pTG`cOb(oL-Rg4l ziNO7w+(tz}HZ~J9+edW73A=KGglyA^oM824Xo%&Om{=Ytqb<4+m9c+4EB_!6z_=c! zrf=^(HX^aNB!kN6=h;$=1r&FB_ys~ycWbfnXKE~oT0HyM(|tFrn<}Zo^ADcm|5Fr) z9)C&RtXA;iZtPZM8{3~yX^pkdoozvwP*!1ZZu^MSnaxxDa;m~*8eh%9cu(Y zPiybxM^lC?}?%FvA0dfLWsa5S{Ts9wSF6B z6m-5+E6+Q)lq)z$y!8Wi?if{U`RQZLdA2f`FFQa?YOnevnRYK>A*qWgvZsRRYIk<; zdbER%Ybkw*JJPZnCVx`vp?Q7l!JP9d)c~fTT$jxe)|A$EvtJBH1D?QP&#f0BTYA}g z!D#Dtk1fPZl8*&i);RLG_s}K0Y>b+%Rf2Rhv)d-;X1M= z1;toAOrv%CS6&zS1KG>WI&4@3E37axYYDI3{Yy{hb%6 z&TO@Jr9>ws3mS)kB=#AfE)2X5Xe4(FTlXSf8_Nd(tIe-0bBQ<{Nej*JlOtC^*7;PB z5c^|%cKKvF0sI94eLdA=yOwl_y@|KF^z&8u!Rb#ISTj2kyKd{L2Wa#jot`=7Dqfl7 z@~O9T5!GSwPwT&Lh1@KcCVE{9$vzWcnC2GE>D7!+2E{CKJQnmbW@UDu&}!VTdgMxf zt51;_ci|MFJu%s)rQv(CW8h}|e6>eVo?(IED=YJ)jA{k3L~SH)vn9FVDupdgLjpNzo`64QAuP_56(Awin;*U=)}}=?Y{I@-8$14i zq+i5{fAMNqPVU&7Qm-(Cx|Ft$(nqP-O`zxwOs=spnkYSiHGTPg%V!H>_@eG`h~kHU zgzOpWL>R^Qj%IK`OG~5oVdB+jETg316{A+aQ3}aVd)OLEWyC=E{n^JvK^n5W4EylJ zveFb{mah8A#o@hY%&*^ZTBCd1SI3~-UfNaVBrWqJ`T=iut{Il@evLIJ6#`6U_i`>* zlGm(1qHP{rXq@IBIyi0g39de;3?h!Wdtl*4eZC}Kv&{hw4 zJNvh^Aywa7Gx36T_3u3>7Ixm<>XXo?F~WNH6vG_hwe=2lVv$^ex5t;DTMk#tbL!u5 zs1uKbPt{|UViPH@Sld(Ol%|DtW9}FdcIZE=il9U(@+8AM=7*A$#RCD#L4X_JaRU`; zpzMS26T#0WLI4qndXv~^ROunAZNTQ6#>#E67q^5+h2XcpRO`i3AY_we%fSt3ypInB zXlQIFOK9G>68b6#^t!XM4$-_=EJ1QvXvD$a!bR5T+8WL~gk56EdLK&<}fgVzMM z=3gyjAGO|C|4N&-(H;FPgEG*H9+|Zypyb^8N+7$u8M5wQ`--jdK%_=~<;ZH*g*(OL z%P79Xvm6Q+atK}d-Ib!w&b0U0v&ge9p5KWkLClscr3_c!^2UvN>;Y2(Yacv#6+(cl zrgoJ&8=Sw?H)HXUSU4u%B#0YXfTV|-MmBl0h?hMv$~CH3gf@_~^}7y*Su5#RZ3EqJ zFtSwT|BtJ;4vR9{;)QKQ2@z=o0R@qgZcveu5|AEp=!T&iLFw)mDe3O6p+R!!8eo8- z2L^`xUOeaA`+WEPYo2*y*V=2X{aXd5h}6)#ddSDO6f}5mcNH(-7uqn&W?KVN@`^Ce z^TqI!;|r&MOCxfd@LeeNZt5R=x@i4&Ed@{eC(<8Ih{65CMf{b1)T<-3O3;zxn?@U< z!p%3dJyShA^BbI_9>%WkQUi_~D*Ljh>_O)I-`3HhTqbL|cBby0znX%|gJg-Z`=>kb45ai%bc&(h-43F;aH53*g8MfPAPCyZ`cz`u2 zQq-WRIjJKz93WJ{(tm)~_2=n%ns*vHTxR*4cOML-nZ?|JPiuv{yPP)ug*l(5y2nGh zwfg08GID%8mwm-v%y_LmKE>iPSq*$D(k(YTfTUyv!U29O5ZOmzuBOUF{jv_?kHXhk z8YZ=h^dW-FeBQ;VG-7faE# zhqVD7CmgvWdGJT(?|4n$G?E~{egr=*)1d`@IxffMjy>=!s7eqyr~U=NLdq0W(`C&Q zq#^(|MY|GeX;CKHrIv7>5mms1AHC|N)$hV@NBgy<-Qu%jL%{CD#P_+FeQ&byuq|uw zpOrby(R9En(uKpB$YI4HeNEt(S%w3fxKF&ORO5#Fevg%LR{;Bh@0(|&nA_*~f#~o7 zkuOf!?31BTCs{7ZaKAYS^oApsEw}dW=(oMcvFF?KF)n!;*4RIH8VKw^aTQ)-ie zg-p~n2h&%{)2#FXCQ`C^)Ha^$VvRHC9<0@mS~2P6T2qa8>r*>VXGFb8`+kCJrBp$Y ziQ$IGtpX~jqS3Ak4)R&QF!yl~f(-gID$j=5 zCsHR%G>Q0k|1;0bkkU*1PZw_s`wa?CNIU`g`SK?RxnYzjOGp7wD={`fOl6l}km^Zk z%FqtQSkV1IC(etXGa&b*9+$i0CE87xK}#J?wNJQI!7V60-UVBd)-yMnt)aP@Gf;rS z`PG9w5xj1Zey6zroJUl@(!5^rhO4w2nc-bgKZ>V*3m6y#Fh8)uP$7w)otDN7AB=vMgzxquss(sqA^^ z`WM}{t?=~q9BzxUDLtX2>@T5A0ND9=uX*IAm*n4*g#|=9t~1rcy|HDQG5zKG9Zln< z_bJDGK78}MgT`pbA1>)jz32_TBSi7?B89cVXoN`&g|=8<^7>yL9g?7M1*z-w^tX=@ zwE1GQH(koN=i8GWtKqEcDZSPy)D`w!hAPyoc(nUtxv+(Uzrbnl8GZTI%xm{kyQZ1+ zMWsrLQjDPo8{R?Bc@1EJbe_&mWIK#M7e^78>H5U;Zp5 zpYMfthiJTK%80W2V2%fqZ;fY?R6(UQ&&=D!1#Ea*0V!g7!XN9YIeh~&T^WebOuF*UqFo}f5?K=A$f0n68GA@gSD4}N#`xf5<7gqmz`_}; zsyEgTX407@*0l#Qglu}>Ixm_Un-^7~=gxZG3!$l8{)B?}E==KzIYrHg0nmkw^{eox zjD~oNJOsz)OxVGGWuIJrrs3AW zkWtwi$IL0^IoTsav7E(>p)R};x)}-&=I;?QoOF3Zzw}lg8ula{o<`u0f4b-~yAU-X z3YuVQGa`YDI|QFdo~aeJgXoMqN)6LML5oPym+IyK)HA|j5%Lan4d1maECUa zArI$6FOFR)Jx-~)zAA`a=E$bm+bz#aWk~V3=l|VjqURMkTw-pq;=z#F`J|+7!R&Wq zqrTm&eN49+f+sVo*$;)%9?f%GY8;a4UhRtfS?bFD>YDbNrcW-b7Vj1r;NVjveddqi zPwk8|ihr?Qj;@IxS-C|;gg+8v#+BcWFMT3E#*TWwwd3|_4KO-yvtqM1HQit1!)2!B zQ{#AI64N9+kr#cA-znk3r&JG11fZSozMdror6d1B2pmK=Y*&YIf^a&9>IPDO{&*_< z$tVbw5-j*ReB6g_9@4G+`L1vM?$t}`+nTw2K+W7;rrY{b{{c-B31FSK&ZC0p$EHjF zCkE->ZNL!maqa!nxc^}>G(fTU?|SVBPUv4Px?kqlNz|EmJ^%G7{r>C&fU%S<+mr31 zt0g{6KIahq^na^g{pZb(5gzFO_hVEThm)lL!8-qKz$9sW8%4IHf}20IU-C1J+V}st zZdU1NA5;5-8YeCypRUZpmkg?7VUh6Mlmsd?-XA_6!)ZhmBUL;e>W(r?F=#-rWI`F5jk{x4K~-4SCX`A*MQP2*7lJ>-+XC2&3%4 zt+OppA)hkR15|SRpBvsQoX3wC=n2<@p;}tth}$?A%rd8Cq8^ zxh;+o0rYZ8rNa=&Y|`96<{peg#u*Ucb@8rS!82sVO_4%;zIjI_m|FLj$>UEWzr3JZ zzpKT+3hJkjH+SL7b1?mP3H^N~Z%fJFDc}u)l!q_W;$1P_5UDK+*(?JEgTi z^e?l%%Ax(Os@a68WygHK{9r}EnVfXv$cbThS3il-wf#J@r#842oNxk^< z)r@)$@bs=qHK*-MGdBJ&Wp%XC^rcA*Q3(6*Q;Da)dCR)=^1Q{(hn#kkquw3}$S zeL?bk_VV1-|NZ-Sm+ODW_UHxRM*sVFC`|`|ER^kJz}=K*Y~_C8vmjj0|T| zI{Te(DtipVo)5e=TFHHo#)G#NRwi`Z8=3VE3;44WEOYiQ?C9({7raeJQ~lIY%k?O{o3hD`0DnR0 zgE8%27oXY$;r@!DYMj>V9w82I+D^DHr@M>Yb#s&P?!CJ{?btz~87_AjQpkZb7@=^Z z|+BsAz)ka1sr3qvA6$=huW6hlI(Py3t*oZwcmcdI7_b8vSinMv(hbe zgUnbhE~T4E>rk`4cr?Q1`NXHx6aG<^_2vyj(+Ln!lEmx%F^>{vcgF;;?7YRMqMzCd zx6@8eXmGAob1-C%{wU|BA;v=4`KYo~$n`h5d-)fFFOn{0%cj1qxxqlVHqOzk9`!AvXU-<{6Q(Y zEO*E4Jb}>O^E8~o7z(O>GEcu|AabVE-OrusD@v==7GyE?{w8W&LghAXkVsLo+Lspl zpDYtrZo!R&cH%WbETb` z&Ka0NW@%K0iNDjKqb+z8<^Cn3bIL`}VI}yUZp!-IikD#{iGjHmv&>T`1G%H zZp)isc0%iccsbj=O*{}^>`|qzRgU$sLyPx_LulzYp1;pO26E6(U0V&%QBWBH31KiK zofzDhv(KUU*Pp*CAmw$+VpBx-byO?kNT|-~6-s9B!c7hi#`5arPW>N>dahLc3>&F9 zR>R$BJ(~^CkK4^CYQeNXq8vn8+-pgI0>MN;6GSxo3`w`!_dRLHF_P9!b%X>zu~w5tB>u zXH&luaC6d%%Wa}8GO|=XC!_XWT8QR#z!uE5XcpL*X~r5Emu~Fo0S<2M{O-0!$nCbU zUpt^#oI88;#{0%cIZysjw0l59#qzW80%N`l(qgiJVD!8;&&67qC107?b}5h0_dey} zC-Y$`m4#w3G$rRR-n1YgwNrrHq%Du!@!Fs!bE0XWClA+Vql*$!I29%Vzj+~?Q zviatILYbFIU=S@C355Ke-3enSOmZKQRRX`FK^Rjt3|xLwK;9M6X-=dTQv0HP{CGGe z+e+dNN;29DS!HnDluHas-ebUcQ5buDJ)cSTb}}W|uq6iN?&=iVl-`&wY-3)UEu_D} zm}B!Um0oDHv^d1>i}H)HL{q04k2sr|Iqi1j;Q0X=oU8|(tA;VG2?U3>;`Mk&oJhrj!Ue@euLenT70u*UoMITuo}cEQh>6- zPC10#T!B^EcYA7ZF4ws7QoLs$W=v{f+s3GMU=16ON=2%$I@@ zuVZ0epNH)zgpIG#9-{I%BGZ`N&iO0)Xy6!_hBH?*BZ?%ZWo>`nS(@J!D~y6SH}k4! ztupM#1Nx<5i>DirRr(?dt&R9UhYj1K*PGC1eBXo7_i9no(d*eJ%!ncWzF3?7<@I$a z{BihFH4jDAy>K=+N||aJE6_I`!BXylImw3E>Tiu#^Y&)&!&&*+I?@3O848j(*s!uI zq`wf?HGM1jr~zj6YrdtR?^Mb?UX7x^FhyAh(Xe+^VD7H4R8a7);Ez+)uc`8q5;I(Z zO74^FlrksK-1+!0OgY9$$2p?v@H`{08e+z`+iS}_X_9DNUwxHoo=2f8xUU8o=e9tM z%^&lFLTiD-3SmfSe@b&n%~HansS@^*JDn2YG-i5FGCZnc^UcOxuD9y_{gdkvi%Vtt z3+6w=NW~=1Y3=d%PA|*Y#_&MuV37FdVWsLh*pefAd`4-N-GX}k6icmB0iE`4Jdgg- z{5(IpI(?xbp>e-7(_uky+s7i0KJR7HWcbH{>VD*?I!42`B^5fhYqvWwW>$_u<3GOk zZ#AJ_4>~A#+4?9fXYOb=zx=q~MCd*|DPw3hi6eIoI@_0MJ(pVgtK8vf zaoUpQM3R#+Z+r=VBYj@=Blx;VfEm1@#6E&pEibVyy$k9Z&NalJSbW=NbzN{^UhN%pcI9vD||5H3p76ktI}r1=*1{`e#9 zYeC@|UKrT>1A5lJFFU?#wmUIjMOqqo*k7}D+bs*~g+vi*i#+I^ z4_}QM?CLH}0Sk-EXxH>DbRd;`0t#a(85Siah(hOWM zN|qwcs=ms7GJI}cy@91PZJ1{PO*S&^@@ClDDnqD0$!UXp9AUCMq2AzW*YXM65QIE` z#GkG>o3x;=iG)=1EV9C9)%Vg>Lx9c>+1NQ=znPR=f2Zbp^{wOx1=<@mH2Eg!S`Dsc z(cT-hF?Z#5xmE~r2%w=JJ*cOPVRGe@fo9un&8<(CGvlZtLtO&zpufII%sK?coA5^=cEH#OjaOX)kR{M zbsjUfEd8(92gAhQ;Eom%7J2dVwG?3)RVaII-UWiGTiRrkU1;c0qu>;u4K64!FDNXe zL{?s?SbbS`<1qqN!%*pL7J%tTYA4;Wj>pyoGOI^4walrgY<|(0If;C(fEm-GNQO5Lr+b2~6&$fJoZwc({N`eH*fC;wA zuL_~7Ts)dWc+|6`O`Y$+fCd)$=9a7bd@UOFIE(`Wxqv;{Hj_Jtn%%M-ADbfGk31aC zSkMIP%?TiwteLe(X8C?j0#jOR3ef1h!^_(hPtg`kUsqvjH7;&bnT_l3fA@}wDQre= zEW52bOr&SB2bST}_SNG`0KU+d7q$EO_L?OmjLQR3-3azcYhe?u=YH#2h!XLDO)%D(U9m$06(vyA1UjoLd&xrLJMdSAS0tV_Co1FZQ4)`s(1YZWg7B& z9HHFYxg*^IUGrf|TG*2+CTLCZfAikBy={K)o*17Q6WY=a7n_}PeM*qjedx85^->4a zW~u^wf$veP&ys-G_+4=CnrM{$a4&^xRA_OjA?&1d!AJpmm0a7h0G(3MF^nxQ2xxS1 zyyB^0%`jm$4fu`O%80KNfdEe7)?nnuK4z^R8~Vk>db$+Tv+8~DHx7Ew3{UOprmK#- z^U>&MSz6#4%T!4(X={v$K#;=9VX~{?jov@HmAX<&ufoD8rtW+-U^MPQQ>&xVt$hQ) z*-~r&*Nsp6-i1Z(fXix*AlXiH#Od|r9bK}JxmdDGI10B&XY+C0$fsi)-L*`L-{l@x zYE+m7I-!${A@!z4vck0bwRRjb4>B=U9%3noON~ded9{DTRIYJ+O0u$bg=Fb%pJ-p| zaMQ=E*zvj6V+ld4&oSpK2qe~r*6j9U>i3B+=e&REjwNB0WL=-VC1ibvm}?zbJ!A{Z zv690XjcPx0r9h?ZZ+o$y#qGjTSj0!8SWIWF7-!BCU*6Ek;dv%!PLJL<^Vdz~ACj}k zdlFT5vuGf5}++i5b>-OUTy6ouTx*!p=}I^ZEklu19WyQ;^0oVjk!*4*7m<^~loJyoXe zULbOBord=GR!0it&Awtu#C@-8awM=+Cr9gs){D>!Z-0h(8!+;`*45EW`IIx_w07|` z+bfq%F-z?ma_4(lUMTVm59H?F#ctju*x37y#E|P;F~xzsml_0phxyuG@Qv3MW{aWp z@b5`DTwv1GV>x1Aror)k2J=;Pu@>*a_6RjC7{$XuGGc4#LguYg9#+hhzQG~6pyqAO zMs|_{J2PxX2_>Kq6y$vJ^V*m2nB>dJr(^RYCEfmx`3oKM^^jle$R>L(f436kfK7Mx zzq#V8tF8O#pU7DL0$l#$5W}!Po+Zg_(}Y%AblENaEZI}e1(!Rr#|J10Jul7qfI(Y= z%eCn0l!C8wiatob>$Fq%{mGsQ=2D$2YtQp1*=N*W2)fG3;%UGjTLL@5&yAs-}rFN z`~80S-L)1kCcj4u{Yy?i-6 zkvWT8G2X6D&)MR6_`b)>c7OHjgnYlBb|bAB>nQ5}10-)U*_}>n11ZX#v-469q*qbj zjoxC_z~h;WVYu_s(2~=qy83JQ<#BmZ=#!B*S9$lzxJ+MxjdL3Ji@P209_vjcB0*ad z0}}8h{H6mO&AV$m2m zRg0PIZV!jd47S{ROnstteK;$$M`>=V=yEo8?qpQ3Hx% z=UGyw-B2+bz$lXXFqE*(L>K0GTEGQp$g|RWqz*|B5F%ux8UOIc_=-3rC(+lBZ3W_&vfk zJX;td<=sXERHDpdPL=EZx~)$h;U;&%n|gM(oKZVtyMHb2;j@4`p2mbx2vAiq5sC)9)H;PnW*Snro6!TnCUfl}{n-(;0IMom$#ZkA+5#<~kmu9dvXH&7W z>)p7WZkDjpBo1*k0%Ny}d3TSWir;rtXMRR08Y>u}1C{e8R}wVcwj*PcZ44ct7wsRX z%gWTFUaI*15{t%TTJ~C~UbIUan#RVu^00?=B-g@JwC643!=*N$pwZ3gl}LZn1!UZ! zb)$lBQxv1PsJZF#ZKT~sL2r8{tN=L?_lm5I z7@-jI(q4q4(s~~6Ig+RyGwY)ePs50I5M=KYtKLM|kN+L0GaC*OIs_uGD#0_lNuG%N zMf3Px!sooD;!R0->r|#OACWU0{0VNFrYV)g1ZMb6O@b@C3tKpvp!T^&!o@TJvPwV> zn?u6wh5&g62;Ao{3HQyV!vOxipPsfe*EkSILizm5&0Rl@lP!C-+SQE#@Zmz~fmJ58 z-@axWp;|7g6yNLD>&qupZoAx6+bR-4b}_V1M{oAIb*{kVels7>WAG0MmX1WdUHxn# z#5q?YY$_eQEe0tcyNZ(YTFZ)ExF*DjQg*U!v2skcKoxXdrx%A#qsf{Y3@FGVG7{%#wte}88z9QUIJ!1*Exqjh_OVw(`r6K6($isl0!ld)NgeJ?mQ2Ig6X{PR+R9mFek{wSg$RQ0cNH58RNQ zGKLj6u{u`$;&EnSVf0^wk0tV99=QdO4h%0wUW`kRNFiEYfTgc;g{o7JL)W?I2q?IG}qw}@4{98{E99`<)GGgnQdu>6DdAYEi&Nz`;hyC^eKGs$rCjUXzM^vn{#%VILHCS~hQ@fW?n2G-(wIezt@V43%^ZW- zbAH|a0j5w5x#t;)hJ#0Xm7091l|6}`REe8ZDZS<2LEw+${wn1N=sQpv2GSIyZgj7} z^)&a3gsb~uN2AVQ>AgQ2$i{-VE=wsXPkqzlD9LtRWd3}wFkln891GDH#v|UlDEYqH zyf~<7vI>zroK#e~baf!IOY?m~h*j&#zKcbuWw%rtRJwS&vC#n??oqUU%;Q|T)zy2I z?ur{sHWWvba%SJyt#0p?J!sU<>|z8J;&Fcwy3z9EwBtLM&f=Ql-wt51=#u1=srB;9 z|AeI+P1q}OFtEd1R+V*L3p+kFi)gWaYYJvbb*P;xZqQCdr9g)0DO3$& z=*a+W84W6@PJWdiee4@Pgm$ldjTKz$GUI2M=Qh&QHMH+YyNYYmQZaphDiDx=RX<-t zjLh-BpUdj4u8n@y$2Vk3`r1$7^bILtbTihI6w7uasXd8D2F0lK zqi>xoX$`08Te(N!jlmh0tv5ZmK#V1FUm8&FXXbnA1a_yd{jOY#=W6SY0NwldFO{`> zr5Gm_!g6@$Nb=(oF)HVI|4NE?3T33**<#poO1e!B@5aB z?Jf8Dxa4=He5#yC2B-c^M?z9S*`7{&z`#@_b@X6deq=p!8h%0!YJKmS5?h4xH@x3A zQaseGGA1#Z2O^yCYA6|_e{d{MXF$_yrY?anx zxJURV_&PDo_Z!qN)K+BOa*G&!EMJ3_q#V7~Y!adcQ*!^yj|8Cp)SpKdPzSdf^rQ`S z20ywSlfz})Tm>a~Ez;9KOM%=_ptUmZ)HV+QjZ#-k@#*Z7>s-4~FRadMisZc>$K8~s zB}o0%F5$6o!HHD06qH{{3fq20K#)IlMyWHFXzyximN3JkWjtksso-qAZT4=y zqT#C-S_`N8_`#eu1>dQg>R|jI9f&?Voy;%&={5f}uo5U~Z8gN70kPpa9s08VC+h^c z<;Vm60kLG0-2621fbZxKo3=#CfvGUdo$)W{?`xkz(*;Ngad)!Mfg{iEmU#aQ$>o@t zuaT2JjBFg$TE@FmEvW8M1O7LA4>COGf5b{OwrwwF95w?GfSL3O03%kZB-_=lU+&1T zN#*~JC~xbdxc0DnljYIu0t3e*li5r1=VbY)=`K5**fy2BCClGGCY{U)CSfhvSdP$X zLbkXHlM81M>kSFt@l*oAHT@pFCe&66o%~wLgP86g4V5hreP*iR&aY&M|LRU6#}9&3 zJyDBZL2~IY@77qfJEH>aUe{~lE;MdTRejkLHGnwYq#k{f8$fLMJxq*|fbkdZk2!PD zSPRh6IUS@+#%O7SH7I(W!?#kS=evkul?Y6O1Z2svna|BOjOjq;E}CuO9xN;?WiD~N z!32Bic9{J86RYob<*I36^aWe*Jl1mE8kRMi&n{|ai_87L9d>Ew@gG%=&r=$&R^z8} zUi0ke`I6ulagVxBn5ix}COelFZcN}W%Fb>5`CA!1XF$VMAMD(TLowclsd_y?%;6jm zxt*B0)xUY)10yHA;HN!x;7A-^9(Vdlb*N6(op-wLIG02@<-K*eNHx@!HFe+_-~=6N z6uDt4F5`#OV_9_(@nPS3`aan`inIe0l+2BxHm`f_-$Tjx@?i{DWe$F%9ao$rh{e&G z5Z6kxGb+39^-DXadg1#rwPigsFS$=X57{9}QLglacP1M%a_|ovRK0tUZjsqV2ueQa#P>;?P+I1<3^k^jrWY z-pfDA(X6LgpZ6m$u*#bp{%%)XMTI*qE{^4x24LHopHwE3PJHYNiiE7F>s|xc#j`NG zxSCh z7+jvrjt4LzvuL-TIv(_j4uH*cX`{ZY-r`eIDAUlwe`njkDl?!P|4wDJR>_)xap3mK zmQxP-Kljb;h;E@Kf~cAzO_q}XJUSMi1W*jikRb=R#lM>bW?#8)yK&%>sOe$w91Cq+ zZxY1SJ0f}ql3;!2jAxFnyp*LU1P~}j0lU}=3k zBQ2N#1_1zDUpwf)y(0^G#A^J4EnaCs!F$q1MnnwZ>&h-ozcdDdz?g5Ussuy}gu1Q6 z(1m}Xh7^`sG4Qxnl<+E$xGwsrA_n@~`0xZNnJ<_*_?g1xSMDqPV;t*0uAOz zkke}UW%B3dJjRm-jI12S+;0sAK~ycmahrPXvo(h-d#*g4>bp4E9P62VXC8bRp=mte zOfFgx_8`KZqp%s1Y#Emcjhj90?B<6h+wYif=jNrhiy;m$q?KLjXO~!~_W;XB@Y9F} z6K)wy$8K(-y%|(w@(3$3p$h{6>KohW5Ceho z^AtH~@(}Fg(O#3u3%fiX)C~SZsFImapCN4*<#2us3*o_qGhUaH!(ifq!T-hPH0A$I zXM3jh+iH!_hyNDr<(Cg%AJ;^8#M{_4b6W{eOcm3M&_r1;&}yLfo`Z>OAJlb9gs$u! z!@|U?a`+f0T`T*B>ak-5a#F+Gmy1bj4z{qgwhdWvIHY@gH zx-L;Y#4HR~`I3of*m|}oC!q<$Mkanv%=K&xj$G2f_t5ph6oZinQqBYuT`lXSrQak; z$zPY)v+eHUH0(0!co-2py{Qfqy;{}m2vfOT)6bvD^?nnj!y7#3=%XLut*rGag}6uhN#hcFC0Lp4&IEmx=}kvGFVl1AiCzU;+T)1g)ZTsp7Lz}pQZA#*`!_La`Y)wUI+_%j+V~~8^SeLw zolaNc#XdaVH}mY<3rG>yiwy13gE?(EvkN)d(9Jd@%!B99XHpD=5Dc;K7pv5~RF#)(JPzR3AY23JQX z4x%NKgG(lhKcqZK*?t$BsFa3q_6#B_hM7Yys=9{8RQL2WX;|F2%egW*DeazG-p0cc zfYohLjfbpufRlsN0eT*;_i20fsk4JWwXszCZcsukukXi9z+RxJs3T#tZsxB07v1(? zaWU=S@T7BK;Au*AVnP2Ga4{se*%J@v@e`Vf`Qs%bN?!{v3)$fpgmWc-8S!5Zm zCU5jV1;z=%ff#RUlZq6n-(pTjCjpK^9Y&oVRNfX0>(a_ewFmoy8Oc(=id}mm8y@_< zf?7x)-b97zk`Am{CN+Nk3YrjEECL3$)}d@(`4!|)G%ATN@bJ+OB}K*Id?kvwyg9|c z!JcJC>s#Zg@2V9Q73KB5K9!Sj|2aE{Xj8I4d8wrqjQ0o zhY8^^m@Pj8hLv9~H5&xg0s)wq=u%H_$%ic()z<45TcQ(7IiFZc~GiQ%!F z%=Pw%J{|Nc2xQ27^o-nmBPJp~{g6+M|ArhNlp^U{s62jO4I$h+GQJcAG?1#RI4VqW z#Y{pu`=dgcVV9+t zPUVZY85E(@?#LQGcP^!Q@=rc%Dky&^0K{sndho2;>GIFSSA1Qvqd{5FXjNFcC>GDU zb9WzEUCkM(8s$eba0rMLuxqW}p1&6?0rCP2KjwqPxAOd{lww3 zAQFZ&8~i0#c6Y_S7O&|Qf>=!6>hn1-IK_a;; z*tk1C)(>0tc>K~nY_7RwYp3LPra!A7vb1yeJ`6DhLdiHO0Va^l{}d$ zP@sE89NeXapOw$6Yh&?*p_4*BTJ(vS{pgb&NH!af4We}h8qAUf+f3PXTox9w$+>EL zje{sTqg+&v0W+H^B6d!yBLC9B-iMzwRn`Nr4lnACb^Se6)+PD!a#=v}2}aI6~b~{FhbEEwTzwM7WA5rlKY2g_yn{L?zglJG0KA z280I&@7Jww0NJAVMk3eVGiyQKzD^8bkXuWhxW1<$%mjR$oT*dV>{N~vf?;iAMmd$D~ z>Ej^CMjCD3?(9UWmQ^Oyvq2}Tndmh7Jt0ZN%kDe-pc=%5D+q${5(@x{%}%#lpJp}; zyX{?OvC>9Sb~cwF8aM!wJErSpOT8|+a$WRBu$yO8t~dkgyFk^i$oI_RJ)tvHmx5S; zCAmLQJ1@Q2Z3PY=@V#H%YNgQZ@K%hCTB7y(K45ZRJv#(bxdQu;k}pyYASy8>)?9@p zuh;ZCU72F8$6uNP6|+hmCYhL-vn^mH$6Ip|YwcozVPWvUnL_fshf%`7W@Z$e>_Uv4 zi%0)04&4E{Q|JA<%lqD|>&@{NZ=guI4&|)c2iHNibs3m7YmM-HQH_vG=Dc5}vW%kN%F2H=6p%WN!I zuf=-oXCCFucXHWi6fre>-veGP=Oj-oF+5I~c8qzn+_Vv;%nM7@uz2!I$d4CD=Kb z6L#}hSL3nEcOYq50MY%N840k)2@LRT4F5DCjw8P<(T<=#I&`jgIcW|J>32G~!WS%a z*oruvI(6Bf%Zh!IZ6DSOpRbw1BVWL{??A9Fnz3xHmX4B9VM5Sg=cx+DrHBv)+<@vm z1mCloj<)ja5?B?+=V7v~$A#U+jNiiAHE1nu0PS(pP>RH#n~4Rl{@z1FW)xq5M(U?q zBmeN5JS?WAUCn1~mxA1b5&mGEi!?0T7!R)UOnoE|jF%iU0_C-k`9PFoc<{V2RF{~K2C2;O)P zEIP^IU|;s3n0#HVBL# zIv(BG0y^D&NiM*HDRKmnjnw~<)3ACUHpMCQ*7js|jJ zm_1;>;+NVd+o7L$s%p*8(NtCXJg^cmMS`hBnR+9smqw0%W*A=BEXrHU7FlronP(Yh z&oORzfE6v&&YwA!)AcNL2GkW4{k9~LtIbY3*~`OX>dT_~5tR+I>xfm6g*I&RPYa|x zVJfvUFi;99;CS?!N%X>>+G~0ch$@u=_`)4U#RVYE3;0N`)^^vC@G*A^_7l8zOCC=B z)z?6^iKh#+w2vQ`iJtua^CxmX)i2yCi_dB2t+;qPwaz?p4MB~5Yr&$(F5Ek(IIhj- z?N03Pe^+mz`KNF=501s&-Jqoh!$iwXMd!jfEbShbty?M z&bn;`J>kXz3#TABV2+mHmn59pY$_JABWcWO+mAYq^75Z&{}%HOU1G@38O1 z7}if~saoiyd>nOJ)Hq6$w6Ic+Sn>!<4Uu_IqG11M7@ARP2K5A_w^{m_5(S_=oH_69 z^rKEuSuwS|Q_r7XrwI}gPj!PS@-8nuIyxKmot)kXL>xiz2^K_WCZox@Utv>nvSNud zxNIPdVC3*w561_^cZAwEu9`_tw_l>yn)*OaI}ounXg$`yDd<^|k{rvV4iE#{Czq_? zBxaoHQ!+ssci6h~YGd8f=8WaW_8eXGFJuxeiQ7tp& zw{pmSA|ju=2yUeAyh<#$Mi_x*RI&Rq(LF22KvK!(UIuz-dF%YXIaLgpPkv9Jr@l`3 z(W6c}Lm?_g_1KyNg+GWS2P`(6DKgW0)^I5K0s(3QJjKd2i`UjSzG`Y} zA{BY}E`;qa`7Y4ACx76nLoTN!X(d+VW3fFeb^fm*>pli8mm7EPC?@1ZZJ*nC3R8PQ z?oh^X5=?epW7?B!{vMC`IytwT6XD}>d$2cqGx}M3bP!C)+j)F!i8zfOX`--;pb`c) zR3!VHm@;ryNsZ`K1jM044<3lkqxyb3gu$WL_Ic$(&!_+@1tX*ah<~S||L}M8Zw+4y z<*v|;{zy5G`sS4&fjJbS?N%Y&;s;CO6!1yGwfC^ zCze^}C6EhsoKKjJCJ05JW+K zS5!Q=*_VgzI1K>CW8l0DwKRJOoHAz10Vgim+^1U>GQe|YrLy$OSuwl7VY;ISHj=nt zjX674RP^dk^pvkcjQ9egpWU3n7wNEJ#LTcz&n%6Yafhyei>3k@6>jmJEvRLb)2?BD zoX@Xk|2=XMK6}y8HwMk%a@#g!)Bz%R&Z=*gCwoTl+1S|R)0nx5(>QkzA$rQ*YN4~z z%jRmwS6YLvXY4v>I}ZrpCP%$4wTKtN4qwF?!k?MrF}y1CY&HYVC%r#tUcLAK3gHuH zNJdMMrc{$sQ|n&dzjwGdk?$Gi%I)i%Cx3?ZU=YvXif_9r3;Uap*$Z&UrWk za4#@_)TT6_Y9c9Xq60N-D0UCmU@N{0wOi`Yjf!2D{HvScyJu(T@ZDWGN5_jm9l2a{ zfGG3diaP3OX)aVJjQEmIut67Yx>IeN`dtB3e6B2SY6vP zYtNx^l;B!4jFsWV>AH4}{o3(iuv4@VQc`IP0AH@~#r9l(UO>B^Z{DX|Xp3o0RX{eI zn>}S+Yn#+|e~G*$oLvPiyjX$XHJAJcvfgT`zJ;~k9}cMJp91LNTUMd%bVul?PeUM& zt@rl$Q$ks^JS7Z9MtOX0ua~l{JC#Tw7NYkcJY}m|PqEEzBIcAm`rLS9)-JsJh(xqp zFy0#n{j*P=OGbcK-_R6kl64)6E=X5c;f`FR?cy(|0}kQOA2ZJOH9iEpUhXZfHSwoi zAlOzHB3g2dbjquYHdqOu%=kp>M(Qkpi#Wpf_K*=fdwj`yOQ~Da_r8BB(|m%Yf|F+? ze%l|Tq{-C31ul#mU*mpZH|FjYTKzc2NzCc}1xHfEJuQKyQ+i8Nern9MXn-x-VPA_G zq;?1UiY$gJ^)-aQQPeYhNc_hOE4OgR;WO7$9dyRg8^&F6sulUjS^&|9k!|p(QUqg2U z`)Q}=GPU$4>ROK5IRf@6r{){mVi_e)EwvP5+|o;SKRK1Y`BPYT6OZ>hVTGbKjA)BI z0a;VI>C+#ha2LasCCqpjPX$_lN5(BOVQhEA-*Y!!>PW;rL|o27_7)?!ydy*UCn93Hy40A`lq41MKIzpoi9lgU!@vFojAuWdSfa3&Dm#7a<*XaS zLtsX9y$GeeofCrkzub&ZPI%gh!ZXX}R zUyEZaT>qOI0)AaU1pFJTREm@QJ(y2rIyRb-*t0c6WpAKSfsBcJr>48<=E_;fJ*E8D zmeQVf@6z@E$J$pwMH#N^qDV*xNF$xn9Ycx|BBdbRE!{bUfOLr{DWHHT(%m63G)NAO zw6t`?{RZ57pL^Fn_uRYAnYCO?7-r`G|M~tmp7(j4?-V_O6cYiU0}N!O%<2~zm2NNL zbZ%9KEFl~=o^WY&D3{jv#&v!D+;Z#5;nEid*u1(RHAB#?9Of(%Owp;PCs$__R2F=^ zMMRcrw@l9&W4Fn>iA{WvJT^v?MbGYcnz$~*-}86=dfITNh;{XQYYZ-CZYMYjL9UF6 z%7LV7pOrPrtXP-s%~2iE?@s66vhzfo*x*c=_Af8#BbNEV?^@8Y2<3Yd3FRRhA+=eP zq^N~vvRdWy$Y&*PwZ&y4>`9)?CLvev{m3vyUFg2cqBkU8s82*9@%Rp9ZfPz^oo{Wu(pDJ}lPz9rod9mcwIyntuWh`f5~^7tQmReV{I+YJQ}%46=; zG-2&$wJ9gfBN;lS5+)Ia7OYmbho{r4ckkdt=lYNbSZjYAIYkTw2e-&0Mj$-iyMH{;^%_DZ2mrzHeUSTuIoRsLRrj4a=>PS)&aG_}+$c`urhl zP3+Yn0Ze}|p%{o98yqEQ^B;bWpwjH>5Fio?a#_0cs+|>>HSt+{Ws7|`VEfR?^3?I! z;~E}IuEY3WWd-CqX7b{wZWKFmUZ+gRi}rE{j`!ic`eRFmb5|(_#Ls); zYOPSISj7c#*g?8Id~wD8l+fP7x8-bhtL+*34>3a<6IwsAGmUbiR-LZ zehF@kt_!kUnD579w_ASNr`Qta4SiJN<4T^7XqjE53m7J~&Jx_m_B%xn$#3;clUV1K z+KHT)`RekS(G-fFA;Gb^)Nvv1R@yw%+Va!27`13n>>{-A>T(_1+LUUR(Xk0D3D_=` zXekM~g7T*o%`?cf#8_c=Pd$U%25FrZ2`REAA`n?>tYPUc;Ky09C;0Lw$~ThPuoqc3CZJxTm8#-CpH8*@UYxYuNPQA?v~$-XWpoGXIj@-OMynqz|x2;p5YR zw#0-zKHhE5_YCXKcb}!UJt^c^n$a|2h#igd$-sJi{?q~WW3FgJv*nAJsEubuZC$5~ zXkljF30tEzr{1@eg|&?XQ%#(7cDxZ2>MWmcybfYTg1Mu+)8D9$?cNu6W>pLh{keF7 zzr88A)8)pwY_reU^x$@#QJ;*x{`gi~qdTtaQc=m>+u6E((m6vXE#=66 z*eCibuT~lypH!Hz-x3bt8YTT?=NAH}I%SUWYal*1u6p&x2tQVRf7FeY;f|vk-GWp~ zW*>LKbgwQU=2@e)b}qYY*TWw%^0K31%VmpF(!Em3*YWN%C_2*ek=5}pdJl=z4%eVYg%F+-_V}bblzQAS_cqX*lY<9MhwsQ?lqOrjTx{+G_g`h-GZ?dj1&+d|7lC z_UrJLi=Di0+@wbwN5KU_GUaR6{24q> zRo(KvUcuJt*EPjqF!bGP&3h{wwy8uKMG}Y0znSrKroUGS6ojXEsX0o=utcZvq{2U` zNohY}R!!IVdHtgNOf|X=il9Sk*G(GEnaPzlCbaso7h~rf&DS}BcF?ih>et%h2FsMX zDAd^i_C4jg1`2&z>!5TS5JM4 za5s;gWe(1Qh}`8BAA-8BY7LcpUkG8k*M9=)2#5oUhh;9YbHjnLVS?4NzDir$+z8no zOaAu~45d_5d59*f@H4?VtEOQ|{hKOndLunV@ezOa&jK+~ajJGEMn^;YcxZfwC;r%7 z8}@ynFUPI)Ch=$~Bh7Ok#b6tIv>DLbKfcDy>3v}|M||pPB1^sZ!&QR5*p_iHYa@if zwOL--+IMw5gV^p0nqPA@Tu8pwpEI+H-2FtPu_`nH=q82f63YeC%%W~%nt=HNau3a$ zAos7okBz#zm2%qDve;QTMWn}bRKUa~Qu_Mh5Z3{`y-Vo>K-w{qMIdpZA4S@jFt|KD znLQBgZR|aUhxAyWpA1(fsM-ZJQJE1_^x_LOHEB%`cVV)5e6rGH z*xX#Js;1VqL+44k1ZXi7GElMwtHt#d<&`Gf^Yh!}KXNJKuO$q`7}w%5R@SAg-uX4k zjTcXV){|fp;*j5K+H*}{vHVJA|9$Bs*Q2%sxym^HoXw<@v}^Z%b6m=`3SMjkoR__3S=>p&vZr)SSqEeTFMq5tUVpIC5qVUC+IJE{@MjafFJl zWMg)Z(}*1pjvqYaaMpPCB%BaxKO*oa@% zy7PZAgUh_=BPuDad~2J7#8PB7IV5WXtGPZgTBpyJI|a=`uqwAL@{Vt;?WN#2fJzyS znz4Wht}hX^UwJA0RVno$2MeFwL=iLRyEIf%z%pijG;9jgLCPd});Mo%AxUf}-J*%Js2W-mhwyErQ);Gn?{O&EcwUwK|RuplTjU=nOx8qX*3D&LHcmomLC^fg7@ z`MO9oR0*{fStV&FB}pixMW+3SPU*Jk=s7=m7+J5+k@D;J5K(T{4^6#=&R1n3Nqfus zw*dsU6BC`9a3UfqNzbiqp!T= z_1zoVLHeE70mQ`b?tpt5c*e}Zk>#F#xxY1(UQ!ZQFbW4p_wjwfk|}#?d(HXdXGaZf z&8{eKf2MOIy)Qi*S{c)Q`E($AMKb~0-zb(|ZwAM?O)0*iERwF`afyU)kSpXZm%~TI zVF}WHAr?PLGWGr_m%|>{FFr0AYf>AvZ9n(aP(nucR;2P591*PxrResCznrpFP)Xoy z^n&9m*xhwH+yGd*l7O#oYE+v=eqA)!5|yf1712VUv9fc19sM)*%tYqmz`Nc*+)1No z&5`h^uC2z#;1nyR=lFBIp)6y%TGfZ^P!jsI6m-=U?}7eXO2(DR(}6_{dhnyYJ;aD^ zbMvzWyS12>bVF8FubI?Kl3QVwye3lggd&wi_mB)w^?BpoG(GB}qcl~ZUA#z?8x@2y zV<;>io-yI$k;pW=@{;1|^riKDNUOE~G?Pt*NiFb!6#m6n0LNrav9n;S^KHxEh{(?7 z5q|c5q2bVXteA_xjn|&X8QPtzA7U+23<2}anOj=D@5XAWD$f^{II3Mpd`__!GjV3j zrYHJ4Cu+iw$D!5U#~-k$Ai)u;Aun`wpU#Du!1RU-uga%*&`V}6-=vZo4w>8Emx)}4 z>DbM|a^rq~tbCWSQvcYk^%Z0En&b;#LX+&-ZuS;02P;)nyVu2P;M{yHyjaKO9>!(v`RyTRi`BsNb@y&*t?jKomy$j6V`3zI za6O~pO>m;t$*NP#t|MF__z&j_xbdsAyLiI$Wjsoev7_Yy8l zLmnK?WTpL@_NuE9cG!ed8lQkntxqqD4MHjm9%ZVOG?uB_q7L=o5=k9|!e$G3Qv_{I zSKRuW@_|?}I16j(<+$7~&eBfrDW_PMj+8Z80W;3-A3_v1y}E$RX-2LEK~=e(zQtA2 zy$&9xIG!bqDM1*_&s?G@d;u1<(sGYq7`W+gpSG=H04WY1(XF3!jQ7%&#K}8mtl6wc^C_wrdrW7xnSP3l zrIjt&8?72Fm(ntQI3p782yJ>S&>);ntiH`>$Gq|aimm&kR%(8Qswqc>b!qAAH_`m@ z21I~aY@VO)L^F`^10&=YZr|U}WDpnj`;i>`Om=~8bDiYRYAhbmPv1t_4|y7*MpL&!j@m04Ie&qAhb*YnXroG z`_xU28Z>&JklNf|$b0=1;LrSI&FcEcQ!mpB97Hix0Os?+^!E1=#p@9I#;Pf+=`USx zLO`q?xC9*Tk!v9MpX0uI6|7A2QA(8jYZ|?9ceTNGG1m5!P&LM*k1}INKa!Oqr|j9R zYbL$a9d(#Ex2BQNqJk9p*5{w4Jq>2C_u!pOB2{lodyxB3b100#=!0nN#txBr!a}dc z=MRw>+(b=V!WFEn`^KGL_0Rj6W4=c()NWp7g%yr^I6I4%7rF+81xk204hi6+QLK=J zhxO0yEL)5w>k0Ks49~YMYNEjpOqZGfK%{r zBDQikC0}1np|K`>Qq+C>*VJeVVbDlq&G&GLst>}22j^FhO|2LrGOWA0x^m@|Tyn8` zwp0~geX&SG+#-Am*QOQZGvyGXC#>_;Jl1ARwBiCg1;tI&8S?y}8(hnh1%CVpPlkJ9 z2)TY==J#_Q+&dtKtodva@ez&xnl{Eivg4KX;LqWgrrelJPONCZ(=al|WajRmyH4!p zQ9OX*7|UPyWz32;Ls?DH8hDG!e_MV!cXGlbiCD24Z+=3jUU}hE`G>{Xe{$a*(1lQ^ zU8}7iQDJei_$atQCX&EZyQ^wU{i+H3PWCz6Y zWpC$_!h6%ABk~!`yCMqjky;}ncNwu*s5v$j$JuK!CYo=`Jl-jNA>D%~PVVSA3GI`) z(rqHU@F!MeIeBv}W~-+0^aCQWs(u(i-l~y;7&U4F z1P(#yzCXPDk&<#X9kv35OAfQ7xWxAg>)~N33D6fmzl6`~t)V|H%r$*!!Kr`Ts1)hb zo|2!Md)!7i63JtO^Qh8_ZC%81PlYr3j+&$Ml@-xBJf*#Itag{fGqZua{P5H0iC6TL z=F<4QXZ*bPcTXcje)8RUF%uf35rwJ)K1{oO`s$_>t@NbhDNU5Bd}YEXfeIU)j@F9h zo;xF-txy>zbd3B4O2bP687qc|5yh*e#l2$Z+O`iRTly`OvV+M`Bx{Fn_0s%)5p<2X zx%uWP=Tp3As0Luwp>+5}TK6U@2^Fu=M_3p?Ub&s7n0el0s<^Ws$ z4Yyg+BG+7>+Cn9d9X0V|lv|%i=tG)Eqx5?uP;~Mcm$$hjV_57EXX{Tqq|~I*#^|O+ zQ`YGtWd-}%=T(beD!!L7rnwY3hCJUh$wF$jJAY8l*ubNHOXIniUrN}|i0_HN*R|Hp z-~9^e&Smb{pP$K0Te?cIZRRXamVj#T^89FpO|LN`7}|rnAOLbm*_i;?!iDVQBq05+ z5Vl#L0_UHjJel#;?DG`@m7R)A-`km}MWG`vDnR;bCO6 z45z8r&WG~kyL6&D?^6x#Po1kXsZ=Ie^?o`ZiP5+D5+1AZa^P!6D>Nt=0}(_^&rEJk(RxU*zTSSTPjVT=9al+Ls&`Q zVL@%Cw_#tKTKO6dnP#u;3>QmDcy4V=tT#SE%9yeL@SIxDPKc!BNYAQ)qE>WH8b_t; zq`H+sipT?bZG#u3jDfB6&?2|hTKQz?rJh#3pcqbtH%;!Q%`Xd-%PKY$& z)}wu2X3g}BULhxMMZVIml|2U>BXAY!oTx~`URQ_LVm;u7RcRpu)t?Duwa-jWxPONC z9+gSCjDn{XWK~&F(0pVf%8Q zPcZ%aw3Vjri(V>UH=rNM38|?5RKeZ=Xmg>)G-Bkgm$?yCif9cl!vrCKb*&p6Dkty7R%Mz$j=wtaXVdy z(c)BQE3OR1%(SQghUfPdFxOPbo;oc$bUEGo?7_0fiF`wFGj5S|HHtq1IM$m`x+c_MR}L2)3ln0hy_MVo6q8|n2VafrOoe9PC&f7D!c8;R*j}pHO^?ob0n6qwI*}E z=Il(0Z^pU1Dj3&JBveDp=^dPfv;f17Kyd7dAr;EXE8}NOB9!=pG2A#85rRVracMjE z`o$03iA=Mc4KQ$BMR2YzDBvfeqlQ$9h}r@~3x!4~_)AQ8uZdrrJ7?w#gsrVS{S5a$nR$;D&t51R5F_-QGjo%lY`E%IU@?8MhG@yJ z6mvAb9jv!6cF?;;zi**1=o-WXwu` zwxFSzfP5FZo%{dnhWwqgwze)%aQTyEFS!z!nTvbV9z8?U4xoDY=U`D+OGhxa+!g;p zgMM#tp+>rz#$3kstZ`pU4EK74j>qqj4=;swyVpHFN>>+(ndUKLwtnr?n0&qKWTklV z@@~V-Bk5{ZP1nY7D3MrG-br`IcLmd~kBz*3$*{SbM&x7Eaq1AU;IgT? z=pOxEy63x-{_|vOP*BF%Z)TmpTdga5#l2@Av-CS$<9K10ykyoZl@RJJmn4vY;@6n) zCh$x*zYw3&S={FLtZ==g#7ukc%{FR$|TN!))A-RUUBObzw4e-PHs!X#udF&>9vqU>u zj%JnYok^BwD);`p_dO=qG|RlHyzyd*;PdPS6pxz~mM?s7*9UIO>0A=UUz&-tf^T_= z-u5Zf8n|MXc+d1>n=jn;+g1901LFv1SOF+g4Z*d9V(P{aE|T5M?}Xp0uir?KK(2fD zuTfz3KWlEje>+dT8PS3o$nx)`5upOR!A)s_H0&QxrsWUEcgl9kukHdWaFYdv#5GgvhwWbjJl~J3&c8!C7X-o2H=w_wttH zM(0Fpjav7u(BG8p#H@o_JBPVahoPCyhFs#};va>)63yfJkj~W^(1JAXt(Ydyb2^@kOrb$jG*C<4-BYXcu zbZ@6GSy*u}X2*Hi0s4$Y92(EfR7$Mst?_5q&pW9a;C$qIAmtRsaV^QoUZS!@*1jeB z+?k}^|4ClvcG1CEVbl#qYOxWJ{4wYES!LqhACtPe;*Y;~RI9~4yNzR}r&1fAD^QYB z{buRb-yw0Ptl(7U=*t`Lh^p^%X6p)gZ;8XxOL$js;COW^ZN593c#D2>-~$##a?j7t zIa1J<;rUDkh)XIZ#Sz-{;hM)_G(AyIfG1_Bxmgkwkx*RRk?{L6ryv8P8-ReD^7^s8 zwwYvy!q&$dCkLkZa{c}=vMBWZwvgK;f&{lAraehg6M=qolbI?$C$yU_quY(@*4L0$ zS+X-FFyKkPd)IY4YmyJoWO;WZ1L57scp_AJ?bYEZOeE#@6w7B$LYMs_r{+IjF8cj{WC#o z@g{AkzqS@KX*$ zq7OQyp{s6tf#>4vqviR$-%=$Qg6Y!h`???KN`oqTWlvo!zpQ>J{>Fo|nlpvyA}Vqr zIv|50Z{|6AnkuY%G*Yvoe<~6?qPzy0XVRGlB?WZC?}d=V?^y^}y9R_n%q)@#B`zu>3|>e#_^) zw6)=>Y{|l5eDGZ)`BbxL$2={nLi$|v`>4^*w#!&n7SnE+IQ2DyCNTXY?gHs@ZOhG# zADhTisqv$~BAW@nVqim-04!h97ofaC?d|RJxsDwEN|%btTQoPUEc{Q$s{#@~UMBf< zN=y#Kmp_d>@@}FJHK6iPrY#95 z4NJUx^TzaD!2{WMq`ST@DKukv!=uEB0x-&{t;}J~UnTDpp# zcplzN4^rH!lWq1Y$XRZmaqsjwCid2oPbWxg&lU%WihFKjE5)yk=g~U(wxa$}=J-x4 z(4k3dD{VcMIXd<=v`o4DHaz}0d{N$F#LT0`JI&Xf3M;iUfT7!SbI0)x;ifBL3TJid zNxx{Pi95Zq&XI6G+r)ga=X#gXYC2Kz=_`8t^iz>S_H#mw({0lM{Jn9TJg*A%`o4@P zfefbea1_im<8a%;8jJ{FcW3YMk}#J^ZFi+R_t>M^GFVoPG`GXkyiQi4`uE263+oM4 zsR>TiS8&P^SWhWGSa57@(geiB+%~NwGfIA`(5(yX!pprA;qFB&2GI`r{>bd(d|)_d z$3~C|tErjHBLc~e+dLhOv8J8TDUTYi=`e#`Kd*hbInf0!g-LAa)7<`_d{UJ# zKTm7CaK8hRsQ69C+Geyu(dO8zTvpGr!^OOR&uChLXH14g@WPxCKf}56_yC#BRf&w@ zK;@U$VKP2=lRFPefm*KvP2guq@Z>kG=A zAj5J3M2)uLZ}~XgKkxEkAfbKZGt(HM+W`T3OJc_NAzD^To6?*PzuGtH4=FZ^>k+5+ z)LI495O0EA7fdbhwqxu*ERQ#27MFZv7@9j}Ui$pSi=k#KX3?!vt?Q2|2bfc=wzs$U zT^CGUd0Qgdns&$avhh{}zSo(uPGV~}_%-9r{iYC$`NG@y9d~zNuhpDGAEn8mr(p)v zhPEA}PtSpbl2oyy&2~vsk`jpyrbO$0MR{*yQW9K)*8PoMP;p^H zcL?sQ42@jlxWcFrUs@Ag)qzkS7#C@P0Vp{JzzcB+dj4<=7Wp2aAr+*{=N}5D@!q|$ z73hoSbr{KO9yEHTK6k42J^?rw@R<~(KTFSw7(bnczn@@>Og-iWdR_*LD-MoEr`v%c z`jVy!!>@Y!CI%CTW@6u_DUVW2L~o| zUqbC>OV0gk!3_~d$d;%e+Nt)9bi}tM zMB7G58tZ49q$h=-JNb!O7_ODto!jZ@e7mB>=xd}~eubv41VP9?*zPL&7kF%*u3 zLhbbeFaTGwO5O=V;=U_o(qK%}x+e?ywmrqx5AHRazb zCIVW|xA@PtyWgSjj%n;kV?U+sh?mYTl^!e!0`^S)%<(q69}9y#YGnOK%!8V^0? z_YKrV0e0O7-!wVpx!WEAn^mCLq4vW}@>EAhkQE}S?>UYQ(Ehe5&g&gFUMG;6%>|Za zoN zu(NfD&Vhl>*@+Uhu)TEts3u~W;Ki2CEzOj8oon8zMmvgwI!G|d+fov)yT5KZdE{_= zI&d>Tb94$>6M12k0)HOw(|9c*ylrfHbcTVSmnuV57H${SYq0$=m-SWdYM(aiuY+Ic z&(`PN`cA4tUgOq?098PFu}w!j$e)NNyx z4fY|Cj|oy(eUw-Hr# z^pym0Qs7gM*Z%P8bI^$}!%V8p$L0S>VBxUp^jb0L5a~~sqvGB7RyEa1E~EW=Eg?xE zRy9k)j0(H26kQ^nQDmQQSq0g8uvq~0v96xaCNQ(fu_SdRhmS{j%rBM+Gk&vrlbh?{ zGwn7cYA)qgf_5(U)K%Z_h`T}QV5>IT`uFGMv@);fH@Tf6*z(y#{RqIKP#%G$ijIz+ z1tMmxyB)*PFJBX%SU35Ymg^;9X#i9$+(B-eFKpRB_WVmcwluH;v%KqNFO|iPNM_fM z|A-v?+t7TiHYVW(ko><_0ATgQZOwM-PkDWJ`{kaI23NW>MU#tb+E@3gC^*h>#~_ev zyx4dmT!MfRm2UtdxJ6}PaQ_s`^gxz0&*Myu7TSu3OR&L$6BC(z^|o6RfCY8+zfnM9 zoBJ;_Zyi)Y+0EuMUd1}B-R=5xRssMBkki)Qp75x$sodERSC6*V8Dw6ClM~LnF_DMg zfM+M7Ik*N%fOj{C)W3s($yq!2iOP~eQ{i<$(F!Y1N8;KKw;r#wW(AoaiG74!{6Kskam=Rfl1Xh7&s3g z!CC&yuwCIL@~Qr>RP6lb5oMNtt#Jk$JbG9@0`G)d$f^kMlh2>cmD1S0)YVN@Mad5~ z(P*+s+Z=1-mpwiEd{g6P`CNN`S}_V*NW{-SE~xg!h7GqO68x7|uH5OiI3v5Tti&=>aITPW3Pq+bvUe&oV;#P0nTufoSP z2^#D2ij-8r+{%6>+9t1iOmgsLWfMP`1pJi~&Ht4X+0>jGuqB$(EmWXsYRC4JHHvq7 zjB>5O`(so2LQrCkj2Bw2Vx-5nm{{^Ry-^DPf`bzY&X?pG>A7*Msts|j*8bQJI#|LO z%)Il8wWH9f-1-&iHV5EZr@!fW4w0bou>$;22}d;=@MCE#!&q+Tmh&^t9%+b;%1^JpRJL+FT-*+jM*lMZXv;lr zAqurLs9#GtT-kEaslUFFhOywQqX9O$>3oOp@f}7$#dI3vHRs_Yxv#=xBB1Wtb(t1P zp2A&Oku{g)!p>y9DmuDEtWtBtPE^49`psozr~Z@C7Y1J0k+79;DcVCjL+2M*awdjS z=}&E-l||!K5|*wYd7B;e<^R0~S#otqpkqWV<%r9J`)DP8ixK@Af7T?@3*EuQENram z&O*c5${xOoS3>EEL=5+eQG1C8Q^lAmqZ_}vI4|&|hdfteeBeIG)y}}n%^bXu=T~CM zDRp#3C|A6+F;mo26;@UPU+1A{FGT}Ctd)4EhrI@+AE>LAyqWkqOl+dYfN#x%9? ziLojXV&_2zuhT7)J?(|Qta4DUfDJpY?~~*<%qA6Gsi&bnPT9&5+Fe_ElVM@&T37cc z@#P&=SCE5un2X=0w`5}+O%ZO0qvLfhypox;rTEX_`$N(QxE)O`?c1hzsop;1ETdZt z{p6t#C{u1!?M>qsE6{!*1gdiw?qsWDE^tOFp0f_}8Ep6u6)W&r<8b*8OHk-WE&~X* ze?ta{NdIYDh=eA#mewQbq>iSwKu7=UpGv zlG98q^|}id;3sB<@>RT{0gF^PSxLNs^5i-dfE%4dWvs zErj^Lkvc>NzX)Kqv`;mij!=Op&%M#6`ZN^w0|8RI@Da(kq~oQq0%JNbj6_JTJ~x&7 z-je)L@S5Ncx>5^WCMmx!Ppa@pq^+2i)j|Z}Y7}bW^@&=vkXCtJ^Vu{XI??d_ivtER zLeQ=6gt&bkHs=QUEPU6AMLFHP=RkEe&V^g2@hn*-C8!wR5BB+^&$;^rONISq@CH@s zZz9s(iT)Y2zx-+r>W6o7zdQ#mo#X#cOZTt5^AF_{5QY5%CitJjCVF#0U`BL}KZp&K z;D69fsu5oz(71Un0TfFUNhw|%+!bxVA~?S~Kl)Vsx8UpWG{V@N$P@-_RwPh25Allz zfYa*i}@r9)UAvatrz?7hu@ex+$SqP_moFH8D6r?lBs@Y*gfC*u69=O1d zO14(j*LG1p;#fb`KfCGSnY3!t^<|VFi_8I8>=Hg(p2b=$!KOboOi3=Mp;LyLJs9m*imVD~JQ$YS}sxS~(>VW3cXqg6GA;Ue=g8LDmQY@S=tWuh_S@Dj3lQk5b zrU;1$Uj_Xcmh*yKHA~p1^MgZY-HNojZ*vNDqBGBNKr6C9sVuBjS!k5dONnmRh2jJs zJNn?+u~}1v@<9=zF9y#VE!HJ#Xa~}7M>8s`t=Kc4o3LcbSP14-n&A-;$Mc7YhAr@1 zP=Rc3z-r?O-~&9C1doq?Q+F6Bn>RpG4dvX@^LEX;&1L4qRv#*R;1h(!czi zjKl}}Gd6+*kI@{}OPXEXTOOj*nV+g!omUPYUEn4aP;VhY-E?SJe(*jmr=aa04SZ?x zdR#$KJS}7bo)v%oWD$ii*6LgZ>5LftBBQAWs;I~cyd)4SQR~m{&JGRNLlOf6iN}w7 zEXa#wzGibf?%p{?twDQ+{kQwYd7G}|w{9^V@EfW|hR^gBqW$s-`aOYBM|7+`EM4Td zDkmp0d{vsE5uQ~>!AZi`GHv^>&mZRxA(_#AaF*vqct z2`%={MC<|bG;Kzx^3zt3VgQ-~||tu8{+g z(Uw-2CW;zHP-0_DhJ*6(2@EkEKU*#DY8x@nVR(jT6XomRte;{SyH2H1gllFvO)bAE zhLCqlAvO;ywb!geDhywJL_v6w>Vzp#=vmj{I!I6iZJ7TrIQIedXCtGP| zkuYAP!?)**Bl!|11JXLT+!GU*qDUzg8eLLJ|3J$b$M6f!s;{=`flku)**0n zek+SBX(80vt11xG0dBHBz>O**R29BinR|F2>^X8J78=E@a=jMhN#^rnlg%xn zi4$YhDC!2wzFkZ?%4)630%GvErN*(O?2QSE=X-7WB7$^k>Y{9_D&E;n6_2Td>&5@n znpY3H(4U(c25wPBKdk7dBAM-T!gU_HhwbKj8~I$u8}!Crhs%37ml~4S0Q5&y zgepcCIA0R;lvj;%-b}X*FV=97bR|S;(Qs-^>EoLh%C!w2+`m7VwOWN(9*eh)i-!fR zw~_!*2^zP1pmA%NhaOn`{%w70tZErQnzC~#d`B>@+K#~oP5*IBm6XOb7>AeGjW|{2 z->k2++ZwA5f7|CWPO$A8>^7oU0F7^j)c<_W`>)a{bD4FF)oTEwzUAX;)71Y8md(k2 z<`>}dAi(~gQ30-x7f5n$%8yNd>%mV1s8|X{Ej1%=f|DVhCGUYKU_pRG4mrfIn4oxW zeFR1uDKdiu89!R!INBh>?Rcwo^=mvS=MJTA zXScE_40Bb4<}=k@*!Nxme^Niil`mSEQ7G)RMuWU{`^ymu+(g6gdfv1X?=3G3Mcr7d z(mD~ytBLl<(U z5V5butDE+Pwd1Zt{#ey3q+1X0DZppmpl{_OVbH@X zwHGf`$#_fU6Me`?1l96ZPF&SO81|U4tn-kowTCCnIgj=BAse0T8Zw{IiW5b<%1x09 zc5vf-4LY$Y=WY9{!&7EO?XBt~LC}KoZRP4q3$P~E;@Yykif7;G4-93cT0A;Zwg|1x zW*F8R9O;zu2;nw9G)A~nKwnYcK^q~jeT9}QNZ@66rwGbi}R|ol9^3nJ{SyMfxM4ZY8A}!!RfV3`Cp`uq74%G=s=NckZA(xQ4IY=RxQ|g9<~Bwx|R2x86ke1 zL!=^~`VT})eo1FnpQ1l_xnVjmEO$8ClM_c~e+%VX$FC%j2g#_MBe+$P#u;#oLA^H%>F^ z3j=CGTn`f^16Aefz7;|b$0z?_$h$vo?p5C1crrwq{8nL*kT>a~qwo*8YgG`P^rM#& z+4L}DO73KOc-4zfv?0CnD?9BP70(wbn2IKvn1tRTQCmCT6G-<}sP?;UPKD@m zLoE0mvki0@*NG%xQ#eQde)M;JsL!eh(Ob!_?TPr&P6G1Z+N5yatu&YyVBHlDfA;z{ zSB4LglaTQ(=XnRp z17hi_to(SrwFtMP*t&r+)R@_>uT>M#nDLYXURt|(6y1;6;NIuXZG-%a zo(Cpt=Z$+CijoA?_nbvy*o!5u4*t0bDH7|6jR}o^XXV~R0EFH)v43cLEATU~R*@;B zP)t1fQ${^y`#06Wz`FN#vsc!YQtyt&bpTl>qhGLSy1c~<{qdiAZ1OOY-corY zUXiNTqVRi8#~bTDFQsCZ#~CttFI8IsporiPlWGN2iHCx#ICWM#R!_}h+7xDfzK{VmN&PhZ| zU@wFNA@W$v)Z1`gLC|U=*<4&&$D}`ahf8IDJ?4$Y)IIb^hUJxlajq}{5NT!@-{0BE zsfAigOGAJO47qUCq^1jHS$z}O+%I7OKJ{4BgFdJoLvwFc1fibHy=JhKJwz!OoO>e+ z!zCfG>OpNXXGc}|Ygcah1i0I@gUuI-OH^`$h6u}b?ka1%SG6i9L2Qo$vVPQagfCN0 zZ}U!O2zh?4n}9WUdkkg9@L!%>Rz85RDY|mv1fr=RQhk>c!1nsb4qb?l>)`S8n_;7+ zJlM-GL{(2uTJ3`m*lUl6=(?PG`XKXPBkEojws~Ai(p;^e{^wwh3cyuIF~;_b9S9hs zco);A0%SS&5`eaYoF^(s0tF{;kk8zPtEnIosCqo_aGi-q^R@3qpYgctmm>kjTxvV7 z_dgr;6E9JgoCYY{iu$AHTpE#$Nj7sKJTY#&D)!k!J;hRJQ&&;Q>Ag(1%*lU~s?%U{wru~Kax!l1 zyVWz>c;W5hhDf1GfaZ`2nA3twOWxc6d02h$*KGEg8*_p|Sbpo{zDqp;O5$8y5+fHocLRDP3!Esqk%#28PT9 zKBU{lA9a4v7=gu^aAkMgeBhp#UYRbLqfxYzt31}=iF^?k;#Fr4gB{U;!ccieCo17m%M9yn?*v)>Ptpl-oQmi zbulO!O9b)-&5?nUxNkL_=Qi>a#5^I8gLG9(|3!4KIp9^+^?`#K{U?KHl){wkN&q<^ z;MVUEcieG_(P=B^nvA?@?;N+!mK$P&DjpxfN<=J3JQF6;2r)jFm@fx}#FTsJJnYg; z=-BJ9&cXX25WKKr|Doa?z%duA3mwt}7Z0BlzrVnC78yaLOhpcyI()bi2W73?6Duh= zTe_^YJZ~HYH#c~1#Gv5=(>1AqsL~ydgWxfMu4{Rh8;B15ivU`+1X?yn1{p( zurguXtF74CIapeI;0tR_KbLT`J=52NPrTKeY*?Ac(?HNDu*ihpg@-#;_+IgYF$@#1 z6bq#+R%qBvP&n_zf)nGrPMbg^z+zjKSmZg}I{l&fCMJe+Mqk`}cjf`*cCJz?a==|~ z_xwG|?h|g8;d0GzrQs9GaR_x{s*d33B>!wX9Ot#XtbRAZA)P@^Z)u0aHS=2#upoQE zuy%9El~%`Og#NFT5h~FBw9+|%!P0Va%9iOKjGruK=pJG@AegO)EQ>F@S4^rs1;Ruh zcnNj3g}nxA-j?I!@XuLuaL;p#K}((2Wnyf>rky9}fmcf{SLYElPh|0Da~ox=KT3dc zljiAm)=@g)uT1NhZ@jCVjMfSBGUuc?h{c;A8y(HqsNq0$S8gm@)d+b?I?h$J_(M_rapSj zifEe}kU8guj)>qV>?LJ-V7!M92(>^dTTn+?EC$XOmD;`0$BB1(p`x&$vA4A$a1}41 zV{y{A^XCA3kd7l3ti;$c&ZO6$48fT(3%%r(k)MbLKb_)KN48Y+>+P?r%z|jveX`WQ zLUmrqn#f$Pg?@MQF}NlG@_a+GTq9&zIw+RSgfwm9<>f6$vl0Ui5S%xnMW!?u1QjM= zsJ!rCOV55XcL9HDw4jj=?y@cJp*-i{dN9mWk&QH&^lMxm zd;$NN6IYMfvpTfoeK5`gmf^@m%ttB^TK3mOLZhrD{JqQ}ci1hO_$6 z&my~mvzR%=b^q5iknDU?_iVhjAU+-Ru3@X=lQT=hw#(YREZ)APvvkuIysmu@*FWaC z3{~dp9px90KAT1asjboiAJ&-Rm4v`5g~6;x^c!9y;AN>tyZzQ6CimmuEx~M=W6V(RqPj|m69V09QRKT#XQi;Id$HjDYXX$OnrzgC|!(+)}{7(js z?73Iw+7tIScuH8jxR;9kcE*ljHPp(6FoPja%h6XRlHH^NAqo0AJ&^<^lFszJb31Ky zC&w-tO6l?{q{6fx=wrNY(62#qeIZzxzJNC$IF+$XF3aZ_z*3FU6LDhQ!7<{c+=bT? zpT~zVxaZuDcFouY`N3A`j%dIOdhQqg#}ia&W5OAj9MNgYd+RXF*!- zXTj#Hj3%^*9ZDwh!7v}`rEDk*iIb3PnLqGT$F?a;$&{sUzfNm($R4eYC5bYGjluKk zamSIcQ#LyYO!GrAnG4+46t$@F*Ny4zw=_k_OU>1+wDO5z3J)T%coe>(^aUPz9tghS6*Bz z)y~85qTR7l2AncAHN0kaXQatr9lI{*L#Q8x{jp-8=y1@MFo?|eNevehiX|vmF2Hs( zMprWVW2IXVkv}j`U2BfcQh|r?Ns4ziO>_`Ypa2RBe5gn{PT1;h`X zqh=Cy0Q%mDio+5Fd85DND~f}dOZ@~siHGpGn|H895)69M0>^Gj*_+K^PFEL^K>s;N z)>wrKzKAxj%X14z`y}@!y&tC2?3VBcFRP>W%CJ@+7A0b{ckJ19v)@*pOZ^b@eURM7 zAi(dyZ)Lq-Q|qiMng^XJiWM8c_41HC4Jx8iXP zhXnYKah9b}j;63{Vld@NDJ8G$hT<95J_=ZK!<7c5lE1JD&tuu#`5TJu5$*mTpAJdn0}$(3Vrok8B@SO3A1ccb%KBa zkxcsyeOhPmx#;z-IFWG769u484eYkD{u2D9ruS0fMk)!1m<(B(6H)TonB=d6ZN%%@ zUipik)q`2&4aNAImXNrdxulh8wo2&_rWJ`FGdGMHQ~r3lu(6!5mqeKB)gKuC?v99V zVz%Ud5%4r;L4wF|m4-2Cg|VrZ77^>$FQ#h;ufB9RvD0Hs#(v=xzW`8 zmDZCzk5MTI^7KQcn6_HpUFK~ZUBo3nClLWm@_y`g>9-=7C~oL0HC^IYu&sjSt7{(k zF104+lZP@161Jvzlm?G>G-{70$mm&@aGzfokoq5YO z)rA>_iqb#Zxv6>@`W-!`)&wfPKE;Z|BT42!qJ%`Ow+|Ax&Dl-m6i{w2%TkR|3vQNjKC} zvk|q>4wK@e7#Csc(QluvtXy=s;P~l&8QqO{C8fk=&F2`-RTn=~iJD;$Xn~+jf zyHrbwQaYsqsj$cWBW*Ve3J4@o4=|iIOww0?7@%TaIP;~Nl3L{azkaTMc;juv zO53Z`^?RoF-T4$VLBD>B6{$SuT*~VUzi@`OdaIUq$nTns%UcTR})WdOyB9x>%z@bkM*Vs#~(u`c&YcuqV0yMwi zr)3Wld%xLC(uuWG0_v7T+axTy)S0_A%E#L2QS3K9H;nGm8^z*c7)RT951+yuqd-Jh zH@x(Wr;@)qH{~LSV!=wWp%p2a$Y7H%^A zw=-KruT7529>#<8>Ywo-nW-68y{*QAvpDa#f6gLubI~(p#gK z{4)&$;q9d0YsJN`o~5Z{jHUFMrmC!yZY9Uz1%IZ}P>GVXWit(4G3G3U=I- z+CF7lDnjawdx43l_bqLVwZ(eq4CMsrwu**i@s<&1gr zy-YE*gI+>CqdV!2k~-7gw1(IjpWKo4=kTId9mKW@J~r+6nH`@9R~7F|Q<7&ISQC!Syzbw@H3 zGeu$-i8Y*J96N?C*aGOE*_)(jZ5B!vyjh zZa;yioaG?NC;uwInw0t+GJ@S9i5^^c!8rsWHI#nAl(e3l>rd1}5J1|E1yv3Wk`$aWt3i4Vv#_|2tI)dMr_O8vqyJzjO zjgPFfIr;R4&{E#+tPv&(f0e6DI9vNAu|F7~&~@NVGE_Y_;h+Jp5e9u#AQg{y5BdvQ zIdfkBv45XQx+Cw;7m7tr68BW#@G0c`cPwBNFW!K;)TLK{f%9k{oRV@J`K~ha`_%0& zrOzc@(r=x7Gd;KL|D z-_8qOnNI0;&@gsk>N4AN;5l6mqLq?1+=_YqH$f1sfvLqPjOwE&HC5aT>b*2YZz=Mi znMxuV^V&MG?Ls~t!($LeiS#qa9@aO<7ObmIlZeiHGOFoMtq)qm#56Dz%BCY}M%Nt+FT9?MVDxrW|-O@}8+zgsTh?gv8r`&*z zAsL%p2_CmG)qr9+RomnK=z{HhQl%>kO@m8TeNS&eBLe%lZK&*;uau{Ce_5(@%kW z>$S;%b~-E{bg=j~nTI%0m}l zeJ^Iz?@tccnmSIo$6M7OQv6i2n5vf03UL5yOo0=|R|IXSX?jTt=wU813nLp-!`VuU zW{wJveslB@GbMhL|D_q1&3nf7M4p63NZX`(-RyV#2hcQ)4PIm>WOuzF$(kbz?4BsU zI%_O-H#&J^8BX55^$(tMX8>Rq;lI${a`8iXabW%{RsLUb+YUfMIey$>-UeCUmzk`7 zohlK{T=k{O-N~NM?KmTb?pq|e2-GVg=j|=*K9p0 zh&sM1WLMP8jC6@|zOm7H^LSCER-c zykl=EFGtYx8(?AZ@3T^ubDi&=E(lh0IDSDc?EJ$@HbF+OS-nl+i7P7I0X@o5446pa zej+ssHgnOG(#78z#t&xk17hGX*O(`_cMmlahigr?^UkX(*kc*ZcBmHRrKwatP7{jsdA{e6u}! z+Lq9|7@2GLTWLQ6ck#99lM7qeL_&98+5X^y&up!p_8Uz#cfZtPeCBHpqnboK z8iVOBpX;3xoS!@i33e*_Ez1L;*38IF)iCX^(IKvPoc8iN8P?X#dQUBFV5Fm zO&$cttVIOzPsUE22_Z2)kr&|eHRWN^clK%Q#z>gjuA$)Yo_DXvvr#c?*m|e%w>KvI zgls`C$J8A>^ zt{Y(~vJXX^&^%vBAU`%*{md@a$8+?v*yNd`o|s1CSDiDJ4;!$H6!DbDN)&cCz15kJ zJ+Q!WfwLZ%W0v0vB0Bg9+buca{5$dMEgj4$%(V+{mt@o{B@mx$RWv}alwyr8oi51d zU}tvrh9?XL;Ur!(A_Ky(sNEGQXJD`$ZdDt-p2B#x9Ku%c>;Lc>`;2jWj2YZyZI#1``82V z)3x3!*QeG7=~IJiwahStwai6kNBolcSu*q4R>MjP@wy|EXXrP!EhK8KXE&ILA3G9+ zb1RS!2Pp&GulJd1sb%%)u z_M6m1CGxSb%J@ZeWnL!*#E&qCi5q@geZ*scpe&{$_qiIE=N6dqBi8pP68*gkY0z`j z&T8m;hO`?=LSU)3=p`q~SRM#>jFy`Z*}1b<64VS93Xzx4R+1d%3xP=94?A{Bw=}Mj~A`HA{*SadQVF zv?kizOV_cnv-~_wiE(Z`%8l8l>nuBrSqayj?f0zvb1NSi{*PzTI|pE# zpLu(ITVEMR?3Xe#7V8Ew&V-Z=mw#{-dVJ1o8^bbhIbRI~b2`P9L@M^dsVbX#Z#6!b zE9mTHST{(xta_93Xu2)6+`gHJ4t|+ZpC2t~Ai*7%+|B2TsQCxWctfB;3ng_C!j5n< zOX3q8>67bmUH~%T$fuuuJif@YOwRer98+0Lz2}I_%v_gzWZK2L>c+S3HkiX;^lbme z@ABX+Qy|>VH_}c)qLKrsPraepGg(Fwhb`8J`SNc;x$}{j^z0}a+CqV0$D-QcdF+f= zm3^j%>3rd_k!cz#=YfRZ5nbhQ{M%Ze<~Q^rH;VziRqTP^{4s(RIqtFyX)Z6 zm_0H=EPMe(tlllygBcOBc$|;d*IK)$S7{``ete=<5jHlCi12d$`Sc6uCoFHRp^k%r z9{kX?$2fe~+vGuF=ld6=soe$n3`VLxBjJZp12$4(!<;bU6Inv!#-UGe9^s?Go>V45 z_0EJue3MLG44}KEzGhx#m0>YA z<>7MT(z=Vpriy|_>wZb3wuPX4iMBcK&(QkCE?`;#9dA!k zW@o0OXX1P`hY$rN7pv!&Ies60<}ciA`od}2Rb^TPYT3$G!ofh~`}6b{D?@6tn|{H?ZljJ)RoK!VYYUhcwbu=b z*G>q@Uw(kjlm!p_Qh3L>Plwdn5*LH@PfXta5lC|lOTGMXhgKIWv`5xwAQ`>o`Dd@4 z5uO5+%zj#ZI3G^+Yi$(u1IMHc=+=U=V|H;sZ9!_+Bvj!n^?SZgbu<^>YH3>S2X#2E z^7T296=gxtRljKJ5aN2%2#4!x?MV5RgUS;>uZkpbd_-2Cq0zs)|7%RNX$;=JR&UG{aCd$vdX zFM>i)1Lf^O8YM>Va=`?P`^_ieNb3^rgBT~2&Dap#WZHV2=E-L~2Kgs6u=G@SBS{$| z-R|ki$b(8DJ}nlXh-`gh@m}kdyYH60v|mrgX0on}&vVY3SyfQS^NmsFllZnaov@K{ zV(Y`aq0AD@l2jh28+F=fQf zZD6z(xOy^x3PpW=PDaw-9Q`XUfTbynB-`t#S{qb#Qn9{D{tL^ePiBEv`PQ{jD3NL| z8B1&n+Da_;yK{;Umhf`wRPj(0sPYe(yPtt7eeiSvdN&po8W{(l)=u+rL0hXrhMly} zR_J(D?3n+&X_!b?Brx#w#Z6pP+X8p=w?T@OKMwj@<}1S6mD0HO>sAw^dlRuPlz-Qg z3y-!}Sr@+orlaiIV9>|>D8T%u(dF`ho?2({Gwlko81T5=vKK?(34B&uXfc?mg`|Oo zwa&pTml>^+H(e5Tc?cY7pZF&cb8nbx^TOP*VfJ-@yiRD1cumgWxR*X@3#@T+9uL9q zhrJ!2Gq}wsdQ6RPjIbDz2>bqCfLyDZpA`X+z^UZ3X9ONY1CO6aX)IrIRgJCX$tQ0J z-<@%}Vg+hFLJ_R29ERl0;GIWWzpDAT5{D!`-_^V2L4#)zAdLk^@k}rtpO#=+9$^PO zqmQIwW-qS!Y5l&j=d4 z(p_MAee&?gwpwRF-J8O!%$AUz+b6c9yyem^8`$qh0({@{#82Ri2_RtMJ9Q1hjn)0) zm5C8`{nTJ$5Xi?CTO;>Ns{T^Z`w9?JQV=OKHhf!eGNokom815xCxdS9TaiBEhCFv| z7CGVPm?IY(c0$TRmiSg#ZzQz;jWqw6?V2b0`*?hTxg*a%#|AI4AvPn9(4+c)j;y$& zr#C^w`gv{JM#op0sWoZDuz=o-Qc?iNEQW=mX{dhReHhSCyJg(T@=jtu z21dcyFBvP=bH|7$E-oEL_Y>Ctupp_uudhUILy8%PDb7(ItLnM*PI?oc4GI;Z^Yt@> znpuKQ*TcrfgV_9fnoPJyN|hxluGj)L|H^wBNceBUzMr9JO&wNZobJrEZ>VL5OWtjy zp=DhXP4X`4L4Z)Y1~hL9kwz!RRMZbZBXA`%{F4(GGB%Ekx?_}%to|1_r(7Ls_nuDw zR!TFU=a1C8J-3gVns6CtSnJ_;qPn@Y^%M(}C+^{<4d5nr-^XrqF(%doI2NUggPhU6 z65oq+csLV#f#>qL0#gYbH_O%#F#AGbz7~w=iXg9W8gr>$QQRXfYjV1IFv)h=<++bK zK31EwbEM7X_Ed(ulhZF18jC*07d1M1gJ!#mLj)dhELY2cg}uDIG>un()!e;HQOtl^w=G z0E!c+%uM2bfH*)k38MQ)eAe@brI=J!&kTr0x(xeDX|(Oy{QTc2=jT#J*7ej+51g#J z-hzw|uUT(;3*J5~I*69p6Cf-RvHr=`(WwL&!=2Rv21V_8df`FJm#7-LgYD%s5p%Rc zkrKs4>&)lsxRKUXMwe(}YV(4JCnlaA+(IeqX^WJ|5+8HAiOj9pzvec=lZb1F=*h!w zg=8TI$*j>%R4f(nlkmD=sY|W?)SHj(Zm}e*h;R&Qi?J)NDE66m)Zk59GZGxpuzlgQ z!P2W!|EYJagU8&HK2f``w5|i>Mn$uFG`xw4nf~#_k-q&2A_4MS-ToOrhjNbeuk@i0 z;k*y78us-^X_sAn-C4QAcfkZ4F`5S=WPTvYg>Mc=a-l|S*&B6vRn=bfk=N_MVp7h) z(d7&U8UHm6X(dWFkR>La6QhRg$lo@nh@*yGbEK1lf`i0$}rroV;h zsEhFr1FI1psz2L?iYf@{%+-bjSJlAqD2IJ54H1j0*v*%_dmx`%;{zezS2OyPpYAKI zv|z7<%qMz8Tn+@qLtq{us@SFQ5IG8g;N_eRJfea7Y+xK5PUHzdeM8rYrfG0)FNmHIa?)xNX7phknY)x8cZQfcgf@+wAVcQ)47v3|j0b}i(q3<9b8yg)T}TZ` zV5%BFIHtc{u6Y&X3;DTqF9!;1pw#QSdVnjP>Ao-#;p^YAzHt`70$8XoZr{|Gcq`J> zj>)+K&yaB>K$wZzRtY#(pMWgC9X4aXg2eS@&4g=v>ZtftSA!^nSihHMyES__V*PLK z6v)?w;(j?Li`%AEunN6XY=#6EIOH*tFRz*y%)%TLu?@kw8T<7fy{S7FA4*Zoq%bmc zblG)fnrA>HrZjp6Yy(;P;Rvj+3{RhIZY8yDYC8=SI0@!Oye-IEXtk^yh!Wie7MfYH zyF5vukH+gRHkh12aYA75Ne{I?lOS)n&U4?+uq54ax zzC@DmWRuF7R;UL-MRO7fjPl(x-;^DSx2#~UU$!KxxtKaionDE1fs@0Ol9cQE9>r17 z_9pf)4(PxA;+K!iI!VoLJ`Jff2(qdFSD0))guk zTN8&?gxjpm7Mn7|$10PGiwg`vQ)(Roc&Rhp+C1QM${nP}chr|80|W;YGCe(K$Ax>2 zzgDY?fp#vBUTW=I?2@`h7cGu-M2B__jN|FTmSnyq!>XkwNz9MjF_d8WTS0SMB(FY; zJ;M6_ZQ^WJ1A)H;ju6-uPCHzm7*Th+^ahQnrR;m6Ny9Z>M*di=$Farg*`6+%m86_j zwA?fisNAKUIB!zRydzCG9lwW??y#xBi38uY(uh1+;f1h=I7{4oK;O_`*7vr;UvI1^ z+muY(4fyx_OKDK;@m?LX#(m_s?mh0m{uyi2Z&+^Y2&ifl%jnzd&8cr1-KC9%&}#{G z$AzMp4xn6y#Me8lXSNg^@q*nquycE}S_{br4`}JDrQzMKpw&Aa_S3t3(MW??szRap zCk`1a6ED93vbZkkP)No~W=G3MLa!dZ?Mq)mnI4@>wP?T+$dC>*Z!8?WA32DUrwmrY zK3u1vcI5gj*(#)^I{HkP!?ZOs_wN^e6um-|^!9C?zuJ|iG%__2#>2f1lRlND=Bgwj z5k8rE@9f1I(NQ59R%Rf8S=P(L3=ieMK|alU*`aP3$KVN44MXg2+3afDAmY4=nR8Tx?0j>?>K5ERa56rLareNYkC7hL+`To1+A2;GDPr6TtrO z#gzYpr~97@Qm z3wRjmGC8u<>(m%vpOYgWc4R4E3-M2SUMUu$p%muXhMH++*aG7(NynRBfH`OQVRAk4 zw0{fQJMF<4XS9_^*l=+h5`$4J-l1fA(G83}n> z$@Q5L#p_)*6YHMrDtDIT_&!sYt(ZnfrB}yj=q)Dv6$ZY1d`iOSD2#QUKes&LX4ab+ z0Jt$+Tr{HKi<#;rhu;|7{eO%UvyZ*Lt#Z#tpVQsvUeE)ON4|1uG&vZn6CnS482pe7 zm**NYbBCKH8s^a;bnUy>1BFI8_LV7girV9x$o>z3;b^{H)Kg{c))X9qzm6qZ7oG$k zPx{Q#{c`s0vkFqAucCCvU5FG_DS1xlbUe;)6XjBgWkS38W@;JHQ8E&aEzw$QbT|=D zBzCDlKs$Cy$A|-%YYCeq(Ga=)w$aJel(qQdVzqhW;i7k}^gkLt*M&P1_?4j4FmQvE z(29*r|FC8MVD(>z)avbxy&gpx;Br#5v(5^h@Z39pVvUj3{-s({@Nnvl;z35}abCuD zj6nCkg3)T|3m_W3T#(kc)JJEZ#ziJneb!kc4$>zW$cpE*U142HKAoDD8Lwi{TJvaT z&r`Y~xHu*43QMv)-8~=IYOtO@QZ)kPIXDBf1)85270e?NUea&qzxkH530p)fht~h< zI=7Zo`!iP#V`+UTA08jqsS5ookMb#)JZNC$^<`xT)S2I>(MejE#fkZ8m@+i8Jh8W- zHeF_cKkR8xrP=u}NcUi6xxztre@&P;ydjUcSU-2kaOXlV)-HFmq~IPu3u<9&wEUp9EC&3e}0R zVcu9KsP+vnT1mP*{du#8_wxGNzaS=F{pzl?{Z-hJmgZ9F|nv*Hb}yFDPv-~)<3u{mB(8G z-=f@Z@^uaOV0cUKd+K(|2NFq#KuBi0_3*A!&}=f*%j%VV$2(q8+X7#r1SWepY7 zk9#X>7-aKN(vcZ~Ht9PZuMpy1_*=4GQyMlOVr$hplBv))ZC7Mfn4l1Q&;iXrvj!34 zAUFu4S{Fx`WtARYJ0z+XiOmy%VNsJAy=3!o&8xrAEWdD1>JE~1;0B+xE>9%?1_0~L zM=Cj=UPE-cVRerA8~XN0?~;o6M=REshBR26Z%WWp7R{Q+jvQ5ocLF&3+-42u7}#z94t8PLTkI|023ulg`aRl13|M@Jxc;lY`+U!A*g> zCO=c_?7d^fRjEDGq2H>zJ@RdSt?$!%84(TNsj)>Am0|v#tl)+p(BaiK>Rnz1XSPJ_ zactmo$5?zA_EG`4laUsN!0#|WpaF##1v?%&_V(sP^@WsO6&w;zUYy3&PQtI*Bje%` zpZQ%9$-@Z`TN~ymdV&YqEysL{?p@lq>gufprt$JHRU_~s$$TlH`gi>I>cXO4wSeuH zI^K4{DJ_63*3bk<@9lj0Mny}vAZb0JT4E~ETqD^k_m))p+Rtt|4+%f8Ey7GyRj@se z(iF;|q-o!0wsNG+JFBkK2VL?R<&Chzuq;5CD75W1>HqOuLrLf5{EzD2%HU5aM~^44 zTeP_Zf=dK$n|_f?CRVs}7h9VR{XUtDXQyrENFU><@2&Ygyz~jooesy(T>8C zht?3fQ#lEkUb?HItdu&h?en8d@PnZ^x-_!dB`GT86^F~)bQExOg{^5P`xET-S!V+l z`*AS{A?`zL(-%TO8R9e{CZ~m@hRwnKk%3>w~4 z)UU~iyk;|VR`$@gX8*(Bc}OzOPA+$S(*ggk+>xxqc>I-$&qt`Re_L{6cNM}i5<5zgB;>JPC z)DaFEm_RGI_k*e9yMzL)njv-Q?iyB?%YV3d7(cSJXmBv>{1hLx=`n_G^$p}cI7U(F zYbgpr($lzX`1i2nfZgVf3ctS`tN*{!^8Uvm)c=0qKg>w6%4`wNtjmDU)xfDPNNzb7 zM)^$EWsD1S^l=gBuE-9Uq3|GsQJ4D5m~UrZzjhqXF7#WW0Vp2|MDmyc24?fY-dB%a zA?3f}T_?fbXcCDB^Y`02r2sMHFJ(HuvwAa4Oz(6Uk@A0Lt+&#K< zup>$qP1|ee%UEvm1xh{uWC-@lhm1;hAgyt(wsOdQxa9dpTxlRvPX)gK!#}LdhM*c@ z^t;+9rqYEr#5VE7?(iFF)>KaL63$WL_29D>R{zq#?e9lgi8|1mM=vGbDEft?*hMxi z>BwmN3dJR`xHjQlus(=rEc>MTvjFkEZf{1{rXNxTFY^K1V89o zvR)Yjj?cQ!^~(yMb0&o1%GvgYJvWE4It>4_nNEanM^nM27Zn|rHo&d-TeGD4Sf<`j z!Uy8KG+?V&$fB;!yuk~%YS-l-s>Bwp)W)r0F-h@F<4V5lXBV}s=o1*DX&p~umyLzu zt+!y$urZ_e395ci&?JL_9a`DUtbTLcFIrcGh-VVMhvJ;p%*;RHg zWONjtF(kTIh2>#OAemGlC5u)!K;UHV1zSXzcb>dBh)c5s;c0=YGe+H(-~A gJ-gq$8WV1@(;Kub^C+VJ!L0{wMiZvX%Q literal 0 HcmV?d00001 diff --git a/docs/en/setup/backend/images/airflow/horizon-k8s-service-instances.png b/docs/en/setup/backend/images/airflow/horizon-k8s-service-instances.png new file mode 100644 index 0000000000000000000000000000000000000000..ab6c5a809e93e3cd22a66be72676774474bf892f GIT binary patch literal 100132 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

y+ zWay|O_AlZJ|G~}@Y{`IOH#2)#jz*N!;gosjdKyW;7Siy*KGI@4+76mlGf(K7tF|hy z(-lOy^|j^Qe37KgLEe%#S)d_Bw^1C!=2g6@eZUoj-RDZD@k)njwQxRYV^|`{#FQuR zk`7I+4uAwOvHzZi*+HA1*d*M!6(vdYaAu5<@;fs{VyMHLNwNw;%@ZrKqbHvZw-+`^ zMm_QC^iCA*%Gm3MSk2x0<+hbOFS^D4ii+nH#XZob;RhBd64PSL;Ft(rRnM^5-VB!d zXEKXhi?F^|RoZ!4_xjPhJwF^>N@rF5cCBSPjeZF8pGYCMyjW24kCTkxiC~{~EuYGH zAvTQ!Vq;hk(UOOh3^cv@zIxaQKd@um&kg|wda%9lJdA9+D#T7UbcY8L*f=mGt>Zx= z2wTF{U*27&__oJ$i;LS0Um*aZjz}F>P8sAzZ;U)|{OwT#JuFE_9bsc?=xhQDH1yQj zlxuW;zc>~=4XZp9ui2dBz1er0|Fz7C{Z0a_a!Wr-&#`66jojZuzoDGdyT3Nf5nZrq*ozGuzfC*9QrZ-_BiZ@+l=pYg2ij@=ipq- ztolyG4@hBh@-&ZWM$J2;+aH5-5dgU2Jg_+wzsC}@3MThd?&54y?5s#JXs=?DClDC& zqMh?>+!xj=0%A)}1F1XQ*#v@bB4e+Qo&=g?LgPJz%-rUpLiE0U&%f}m0Wfk4he_Mi z@+!-IJ1)uaggnOGYOzxbPFw-()`4$q+*~RcZ_!m+8=35m(e_RoTt;vdJ(vD;f$Ka_ zQY5R8%PbsPN9)dxujVL^XG8dAK1Zfq4xpKfyHe)q%zSfArZOPip3*ip3q%xqMNed(Ur>no z%_xAR9{Y3JmKKe7bl6%iX(Cz+m`WPXD9cti&wd#cF>(hGh`!L#u{AKItXMP*L6oHj z(SZ~UgAhhHtuqI=Gw9rt$HK@FxgiZX?vB1%bItBeqyiOvZ+;pS01i(CZYw+Hjzphn zgaD?xz{ES|zMNuVa;Dy<-)-m775inN#LNJ*q)d-#tOen3$v-v-bVzLp1U|cmWeJjf zGir$9w}E%p?pQ7?{B{%CT99$*jd(dh!zUV(ted@XpyKQiDL_eEDloS6APDjYJ z8n1AVV&!oDsdaaA?3>b6cK0i9mzY~kA5!6L{tewtZ@zf7BFOT7-PI~!X zsJNzFzmVGv1mq^s;9Bk+js&2uIcWJ`+W68dGK$M;3M?cT)W4Zi*T}ygq=NoYPoB=S z(x$S5=b%1_1(JBgmdH69R27W8U;X`IhGN6O$U2uwPwscm+;Pu6ACCxyHRoc?7L7m2 zl0f)c0%B_UlSHoR2(3|D~-Sa`J<*PkmwVv&e#sEaev@Y{uRXcD(9rtvufklrDg|{Md zpbc8$K_j<0UDSbdG3zI;_-@AN)+-Xm6E#+74O`)ujw!Jhwb`(D68gzjK}*-g`16wvW*lJ5-IV*hb7 zW80-&X3dl7oovlz$#+=oE;w0TDt{F-Q+I|YqPl<|LY^{ceRRE6$<#lPyWw=VGTWo; zSa%a_^#qbIv;!yH~L78*S>NIleVfK?BQOa#sZgktE`Em1pWDSqSmkNo@u`-XFDB#OK zdcq$xp$ma};nXUvOo?&~EN(2D5}9EoHMyPhNycCFv zip|BIwu?WGLWl34;~ftpn7>GZP=$rI#A3$cCD_TBJzBzGPm+Idd12{YrhA=RiI}2l zM#DW4&KV&lZ_^~)Bo4(MpWNBZk~9k5f*#zvOj=Eetj?bpSg=Rli?;HrlXM@QoSOJI?aa1kE*~Kd2fM7snfp+70_t~}!_?W| z51&#hE=%0(A{?z-ufNpqPpZEUp886BKLxi3qHu1F{M zTpw}LT_cJ4A-pkW@7V)9$2Potn3rx08y}9HPX5f^w;q#wnQvgu+Y6#-S_|iO@xu{> zfYxo9SKD2Ks8Hexw252RIeWXgRyc5e{4CJk(b{S%hz|*}U(Bsl-2uz}JGcRLZeU9cUofzcVD_ggPw>ln_G2Xo%N8R{D0qs}w-l0PpLR~R$ za(zyk&Ze$45c3s!7I>4$pcR66GS?yDf-He{op{MwKc19@O3+&3Se)1m+B~-e8jEBM z?FnlDJL=7&DbnV*PLOmYndsx&`7BPY)|n`Wy5xv=>EV$byT=PwnO(@!mj*n$?PJaz zj6%j>H--eR21-786wymkloKL2ohwy4e$4it2FTK2pV!Py@VS@Wb;qz+T=k%dRlN?>ShP|?y ztsrdjZ?Lh@?PvNfGr~ZrU{sCu?Z52gsIb$5*{AQN$&)!(qDauXX@=OsQ>)0qTsGFr7@ zcdk3?a5ZSvFsys%6e+F29;ae4;HhW!ROl!}IWlwjLt+%s2}+z=PSoRiL>WI!g+2|1ndb51=1*ups=!g zYO&wN%mjS7-h}-*-k_Rjy!JzF8pP4V#ZTTCK`V~xL%Z(nxyj||t?&8Q7_swtuh%Y)(@YD0uefj}+Ssjy;~h^EWQBwOyPnl*)^;RWGCKp>{#g+`4z_3E!K zTNzE|OTm`t>TG?%eJy3B#;34zB!@S%iLGIHt-m@mooC>BUHhDtNR#`$@&OMt zCD)QXvD=Q*mJ3l`mjj;=H6;H`!iXpY{xpG_J%Y_z=l5tMWgr`~&#M@ZrPx=~Rc4t$ zf!76!7F8A|8!A1=$%E%y6j=F%84T6%W{3tcS7 zW0kb7;Bl{3AjaM1IPBnuU$Ma>5y5yz-O!~>Y#V12piADU@$z&#-IDf#+-iHman!mUosb6}f&{eQ4Z35vrg(hE zE8vBcQ_q2-1-dBHHvT#lJQ^ zw)UOj>u?0;&S(2i`NRs_e8^^N*ZeLA7Q8t=*M{a`q!0FpF(H`T+}gZ&gh^sNBxjIZ z_CV^e)?M)ZYtXbSe6@%`K}q$Et`CKre$_KQ@gbTORV}lXP6D!ck*8R!?eG51q1B5F zo~l**UbzfFHMV?=QM8jb`)<_19NYr2b|BDb$eARuSh{Olw<1~F{Yo!oh9u$TM=ybo zg@4dZlJE8V;$E-(R9>Y!)@ki<@37leh43GAPbNH%QiF}n%-&mMI!!P71%MmfMU#Cz z*Q|;E7|$Blpgx|$So89B($K!9r0tZ=9<<-{aQj-Ukdo=-S@k-l%CoMq==!sF-Hc9t zpXM9=*0;781Bb1^XK}oV^?l2G<#!#_(;fZm8>YjB8?_JiDUX46aArx`Yu`y@=}oNZ zgpQhT>9xBlGvK=w8h6pUnLRid!+ef6)okHHyif4-EIzjZT`#AO<|ioU<~i+kRFdPg z6lN*O+>Q+``fxX6nPXdyeoAg`?EJn!?VE-AoM0Cw5j$#Mfs|nv$>g#1a4i!hkJ8FT z@m!NZhAmVzRsXyKr|UCwvC|=3ps!}bl>Ozl-xHe6HthYwE*qof?|@fmj1pCT@mMkF zgIX*Bp&7mdo;ms>*{bBkpudOQ^Xw> z++q$=1iUWOpQMS6f5x9qUemNiZ-@1PjbjlgwLTj!*_#=NAuIOxZ;Q$0PCmfJ#E7|S)=A|l&pY^XCrD`hlq9hp=U}m>ZASr5;{|Eo?Kmxwf{sat zhnUyQb*v`ccgbLEmE`I+t@XP-X?-zM)S(s|feOh!^=?H(;c`M`<9JgK84dCmD(_6FNS0A_ zmyi`5C&+sKQIMptVol({uRtX$cET{H@{f5}FXs$@D)mtm=j+j#f-pTI#ANJ?fgULb-x43LcJ6$^A9OGE-~LAY7fNQzCT5y5x5K zC31;CmS&c&C>BV05*>8KAadq^xTQw-wo(V`8qdNeMfc&fL|KS z$BtSxXgAG_e!jng9i)Fjhaqv z{YM(R(f#LVcIHlPr^+jw_Q&>Or`=W=*PIvIzJ66GQK(?L^75L5qU7@G(iGt6`;DqT z$UlNJeN9I4AWrE4n#4NnDw6a)NqjX@BrL-jO7~nb*OZdxyYlQfW_IG7m)jE>zbolf zi?FYJb8@dK)K3%k1Zn)d!btgE`%WVqRLvfK@$37Ijd|VnBTu8eHoom@0zX(eAWSap zANS_ZMDt`HL<=vC!i?ohYh#JPA4JUV(}ZB=uF1iiDkvqC!^YCk_1 zD@_bSo$00cY7qi{x<-{GggjYUhFF#4z-ME?$fJbZ_fhvO)uX8{cnG}6O$`<qs^+j{6O^xZ56Q>r14Ham!WTz>CUBvwL9@<7(3v|w8hi$>r%ljrcd?{ zV20w(59ccGX?c6+=AkHMoF!++qN=}0omy0@^(Ku6*DB))iI9DN@-E3MC}Uc3>4tqD z@8w}$`oxg(pN3kuST7M1wrI-*k zIijA?-bBOdeZW(4H;YS$%BpSiBJed*(%S$S{M*?aF(t`-ipgm{Mew+ifRJDa>GDsT zKIl+%c;$(p7Gv3mUd8P5q-M%LGoHp1QL)y9vu!P>YNMERbi|cm)^5Am#mDV$GEk); zeG~q`mM2|~5ltp@=$$Gq|1(JrzK>q5N6bLYYE+vlpY%J8&IZJ zVi5N1wTXk9cWdb2ljADzl~Y%Gb$3;uoKv2VaR=j`cWAqHiaW%JuY zCeeqo1s$txDXaY?rO0@gISK7vleWiwYW55r{Q4Rws2Q=10o2!Fbu|DZCEe+z_ph!( z!}{V%qO!yVJPjmY0n#6vl`AIBxcrWdU9NmL$N#D#zj!cP; z990@=IqaZrWP882>EADRTKvCwgaoW7ieK4}k=S3Gqq|HkM)k4|jM)jPnswbE^CQCz zk1-_rAF%ZV9okY3>cF1E<^{*(elEa1V}5yFD<-Xg_SlIgaBBbT?KRE%p?=5{!|Y07?H^lo@we?Zg|^Ef{Lt zf#_=rqn}5TAp3Y38<8F=d9r(3kiKWSC+=4mb>QXfiVL_}*!``@pedu)MYp(nK`l7? zI8zx+#)B0!9TyM=No&)is=u78;Hg1N`6o#aVRw+%iD6z4KsD`~AVEcvvSC|nC?jV~ z2{qo|J}mcqSG`tlHGMS)tfK&MUHk{cdt~^Ff>x6EK{ccf0@ovsGDD)kX<{SW$4yxR zFe>;divwHmV^1Q(s>MHrwHQV3zi$|AvIJwkN7EYt=Y&TeHFAtkc~n0J(9_&%3o7nM zOF?m1JKo0;jzyf(3auV^g1_d+uIvb%89Qkj>Ld|5J<)BNK_IVFSEE2!6`S6y1@$4@ z2Oc=;-wLfAw!9LpR9CZJr@|N$ zy%tjf?Kq<-NB@|1>O+SXiZXbsdpttK(PzsS0+|s;mspv_ddRdIm6&Bk!lNPtmJh3_8O8+HPqwLj1MI?`=@laM$JwAin`1i-)*J zG4@M!?>${D(PUA5k^Ruz^Y(trn|VggP^oyXGfV8W`_jLbSI~}@A}R-wFtHayt2Qc` z0YQ(5z+c~)0ml31sC*+TVeN$x^_$}1t#hC3rLd#A15v}BnEA%CC%Hd5X!MS|9Gg`M zKUJL66(s_EoDs_9g?P5ga+i-nJdJxMW@{^ydw;k}U)q?s!Vt4k`LBFI^)n}t9wRSb zU@XL|M%GbrQ5)y^nmR8U92Y_>`Z@9(67-{h~<@P-i z>r+2{5vcbBl&Da4|KVfWIuXfRQ!~5tji@izl8H)5bVKZJ@#CDo3__r5c4;V-j%{E; zrHVvLKi)E=qd~j26A`8^5ee`SDiDePk@7o;*%ttgZnPx2*o7$&kaJ#X)? z5~uId2!awYLDsUX7zfl*P*(>S=y?*=GXqR4Ox#bkoU#K?9dV_4+wh+yq1LCoA`4E? z*e`$lY5a@|TkdUgsY@OaOD~)HAbgD77`kZF)4;+C#VDFdn~Rw;kmr+_>3%R~LWTF((-k(B9(9Q zt3tN2hu($H(JXD*U3T^VnAyt03a(18J?3{fEi4#uQ(w};H0m_^5wkC`0y)%NzoJ~vx&x7@50ys} z6{l1iJ%rUteM&Bg_NA2cN8u20S=5H$nLwY^rraB!f{L&F)sg$ui)A*zz^@l4?`eCyi`{K;SR&+KRTR4lep z#ceIAJL6oeUk{;frJShRd=a!7jQz z1bh$I*6f(D4Jd=SLmZ{*r;vfW7yp0-SIhS-jl0<)Gq_#Z|AGx`obD;&#Gf%dBp@L( zxAij(y+~W4)f%6^Z6i>N%-717BtA_TrMBX-*>?a=|Frt?$@>8SK@c4d^#nVQt&L3A zN`j*42NlRip>a3H`#$0nHTJulo;;y7Ubp^z4;`V+f5m_cm5QHLv7srCQEx~C+p1i ztu!E1j@HqdEn_lVvx7$8@^=jxLIVaLO9qgp>)467HY3t?uOx(jvWW)4$~Zb^^(V`E zNJmNk=ABuF>#3r;vOQ9#)C;(}`(*Rs!)p*>*OLqJ8mhO^KX%;_b3*~c4qMVkfXU3; zYF%2{_8WHS&aF0{XnYp>7qcZIH5K4J9xv3a^#No2ww3QS5iNO>oGEiVrE13c>K%Xt z9J~NdosDmbxo#&9^Vn5-6{s1*%*y1xY^iL!^hn!{jwe9B`W{I z8`@`NmQb>f1njn0pqaq5kG}{QxlLDJZ|w!gIChQ+89>i8H!T*SkA4+2WsQHd?HA!B zDk=_X^AEpSK=A7Fa5lFRl7ICUe!F6V*vem zqBwaaYS?90(p*wAwY<_VhYZ@3s6x^yHf$elagv%W>LQDZPxBd88WJ3)TAt?~@p#VU z*hi`vmBRHfX;1$@w(sk<_QSaBd#VM!sul>Kh1P=dR){%xW|HEN-zLE2^}GD*cQTkvN3INdNO`+2cixSAZ2$-q?4u7)!9#YenwK z1tD5b_PH3MlSIgrI3JR7cRLdnH;=uf;oXAYo#luw6*gsf*yYkEYY=nu4D@?oX5@hP z*@>34@F-UT~od9iXX+~)FUEp^vi)3dXrLkI#HUuU`Z233-z z<&LobDAKRn+79Eq@#Iytgwi~g@Lt7PkUxF;RzX4GwT$^QkAvw#j!{dGBX%i+Rp9|j zLGl(6F0^ourY8q7CHaBrpB|8S(!7=^%wYy0x830=@dOG||6d+K)tdPp{AkJPEBqy? z-DL_0Lq3q}mYn%gW7h^*P1~xYGhA!AYHDiv{TG)BL3pny+_;6reX8jV|mRFBP@o z1v5tuAu>L(8r1p6L+;giB$bu_Els%Xv3-&5!RSkoG|nb;e=vq~wL+b{&PGG9_jx9jVx;P~KxRC@82S44;2{64fgX~^V6jEUmJ z;4lhR+)`Xk6hts=v>`7O!+-~ws@+*_0?;GU)qa-9H zHB~IqWVdKHE{LsUcyzT`;KJ4A8QpWghl-OLl`O^Z@?`%@mUoUi3rM$Pk}Hm$J`Kb- zU58oT@CeUDGD}tGw;7doX=_fd~=bH zXhd2H+=t_J74t;V(v_!KujW~x4-=^-5(>9@Qh-4j26fQ-I{))nqoCWIIvk=mcxDT1 zPG89hA~2rpz9Y%!^rCVkE5kvW`1;aH!0>L&c3*HtWq;Vx#is; zbk`5x;p|Sdae#*FYuYQ1aTcxvSy;9|aF4B2NrM&3%M@(cE^+l*je&o+>@lcC@?ug~ zE?NRT@r5el)y^6Z*O_I>pbs@|V-4DoRa4AC?jvRX@H@nx{?gWh-Z38AKd_|9h>hbGP{B{bF zdt|M{h7#Drl_IW^WVkU0%UIO#dQ5j+c+`1nX=*vQf77Jrr|QXku2%lb|6lSy!h5~? z7&bBO$3nIv1h^Baj`A)eCc7!~ZNjn52kWJj?B`efh_`kiwXNDWE+}3o0?6h^;UQlkys6KPvmJ3o92V95JuUQ} zVS3#pJb;mwhti*RTj1EV&1Y9hX>#C>#{Mg$agg#gI*3j_^f`WeZEb?o9i1D2v$xo# zihiCr{XMq7bv(+-_~9C)9^hU(a zjo-J}7Vl=edY$Gc=KMbC`uL1JtCAEC3VwD{vRqIth?0NZ$E#- z1C$x&RD1_7?30`T1xDh>GNIKt10%G0|IsqacoE7qIJHsIb2C6`u&C<#@q-C%87_#=r-lc!;g59C5!~nmIB&yYJK;r8@m+$J7V}H;Scrd~0%x2=a3I~7s$9A-b z0@92RNhIWpvUVKuXvVK}!9iR#_vjnUeQN!;$2P)Ry1}PJ7FRBFfzH3+pnKCQt|s~j z!{C93@0FIo7;dHMjC?lpklo8zqUqa{hGYE{_+d) z8u*XP^MJ`$Rl0d{7!0!&oR)F%|jCvn<^Ri10css~^*v;%$`MQom71S*)I zm*MBP+qz2sXNW#DlP@@+60$U7?ffoGEo^1b=^1|vN30scXdAkT8w;qS(W*Q|89oj3 z=dfc9unI@^1NM)>=+X=Ev) z7;V{QG^ctpJ8C@;9pWDiQiPzfmlCISvlJTpR(2r0W8?L^@u{h=`)PKaKlZ^-0r|J{ z+MwrZ;~5uFoc`XFAb9)w7$K2u%;Z^}?dRi#)6C*SDed2xHN^Y_?^t$Z?&{Am1y8@7 z?U|q{k*AsxD2XIPq&5QTB2q9(CX+;5G%_{YsGlS!N0015b;FO9+5Bmhzd<;T( zNRJgOc6FDP?V9{)bz2YzHKT3ToOXn?Osy*wJY_Z{Q^4Jd^_@?zhrMoYm|69On-Xq! zkRWznt}q?O1o0~N6i3=^O-IB%zE`V3jrmCVzo)4+^IgD9Vs+!`sL{zzi_mh%<$#lv zq@NRx#Qi1O-=~m$D{b^NIv+99-{VWVA%~HPA04=IseFiYNn1V!!L`8k#=)#gAbkAE z&%;qmt<2$u#FcXqytfdW$d6VSUwj_r{M1FJUsX>SM$TTDpP!2o{IvPq2#Xptz9Uu? zuyETxO|~x8uH;Bvr<3F*-w`ZU3QdvsKs?2*BK)c%w1@|?n9;dfrHeBrsy3=HSZbPy z^V#Qww(h6w!wyuR(utF~Fg{gL>uK7k>K@5Yj0YyshaaxtYTF)F^#ulyH^s{jAugmif)^>nqt) zfxiqG7)Q`NW)E(8QeYf=Ur7(rN2#41KR=x-!v=Us2IjG3`C>vKNrx&Nnrg0eQVTD`W;aHLMN1hspg@Epcq^(%s(l{`!|g%@X7fZg2Pnc*$>_FYDEKMud-*}S9BhH`Q&~!(N>0-)II^+AFNa%+VdlIp);> zC9d>bdY0!#W+q#PIHsR#0GuCFfO$hkmLB|ZYqPtuL7+JpQn*PB3A9UtlD6Ar$_LAj(hvl*l8b= zzW}6l&YfG;epv?gXGm3KK{=g{RG~Y78|jEQ(CwW0P;wne{^zc3(&{| zYn8umWrd+_;7%;)vFk{n~*dWH&-9TC3JzM z*vxV8ANZB_?)XW?uN;#I{b-Gz*KVOK z(x3x0{7U@M_r)7a0^Kf`gI{97Y=4E0&z?t${~3|MIF&BWoy-3_I;+^LosmRC!-(wM z$U|B6x-kP`pDg|G9J%4goVRh{P_4gm%h+Yb1k}HJ+tjp?ZJr(AW{lTB;KvgMpj-b} z=$D1-Re^9CuPc8;r(%SXf^^pjA%ygQXmN<>F z;O#pjXtJGW0JZ)&Fkm!!|$vD$}>lA5`c}W4*y@xXd9WH zr`Fc|gKf9|{w+N^ATl!sVh+d%fpXgP!}bBwT6o@0t4N9X?@$vW#~|8yi{N86Mbt@h z@pH}F!T*G=ZE6kgF)JCPC~kUS0xv1@fooK!h8*B>vK=Y>r~pg)jp-=%ui<>k`z>FW)oai;Gp2?3_`VJDuApQjcV0YMvO+<(%L*7@&(baoR;;G0XF9^EQ3 zGjGq$ImeC)A>io&Iym6W4ccUevj_%cZaO+%R|zuzCnj;XgtaQ0WTGO`ynPazqbOl# zfcpOs^%Y=kEltDF(xSzRYYWASyE{dSLvbzc9^Bn&ix(?i++BjZ6n8I9aDoQ@!@c+Y z{^ubfIoY#2JF`1yY-j2P|BnozHK_T%t|rRjK33=n#>E03Pdl|p6BOpXWKoHIF zE4C7@hZIjIGB4kwpp-aOx!NQ9Z_UFx&AzDF_SO4loJz9rG4M zC$a>TRbfJlh$1=1X#Znl2;!T9)Tx})Lou}=vDma1@P)%zb0iCN6^>e4aRD-UYSG}F zN{|+#^wzey!#377_v`KhHUM+&5N@MK3LwY1BP1@wPU>s^k6-eXhUMy%EV~c084?Oo zlNw@aqh~2as_MER%#^lNGfNowkcDO=@De*IYYrrhdMVEf!0nF9PvOTROY!(O8^5xM z&5S6@h2famGWEF~CT%KK{LT4j2p1ZSjfxqJDXNx*aI19zX`J}qc5}G=uGNOeXqd|4 z_|X+I?Iu+(`RPy}z9+Y#J*G{*hiX4UM2pqwXWf39V7!xEkc*Rn3IZg7i9f#~@&82?IsW%9#K^^aV0Q*?jtk9|FS$2Ra!X zM~@uTId9xfz8!C+w$80R26mJ&U}|Y*8bO#?AxzIvkTsLmD`59|5MBqF9OhVn5s zIh^o6s2wG-_&Y++Cv%Oeb@C?m-}*%2FO<-O^pcQsT7WccUO9g;Ki~-@exS-(+}F0s zawg{Q;6?T5Ju~X&kooba0{q5Mu}dM7mQ|+am%$T4(oVwiu*FDFgKS|UV!b>MS(?Dbh*i^XAso<^W#>n1AP}|PC_jo z|A7@y3&rjefow@dO>TQV(N`?>;EcGAjQjJaRt{KxC5Zi&6QQ@Pj3CQBelSG%^P_H%0Ra9K!2YFX4(6 zNTp<*;~llZ@JMJTmNaodkwN4M*d`XiZ@CjqP&FDO<7oIkejHqqx<@ry8So{7G~C}` zgsNS92uFM(ATz%U$YxoQ6a&6hi7GTIM#+iOVhmEHgEt?(Ab%`WlY z#20+jDS1Ww_t}dj_{Kh6$LDWSOGZZ7((eDNdq~)4Gk({(5^O+lq^4{kbY4pRzbC;f zm|)Fr2p}UF>IJoQi~Ubb3v{nIvV0GSI*X@Y237*Otn?I3|6@En-QO2{_-gB3t9O{pG8%O$2d*{bfQbquw!h*ul?*Uc>c@&1vZDa zegoiLj|<^I^&`rY)L60hWBl)DQQGk9p-em=ufBCqWcx(H|dKk&OEj(xQ*La|gyf$R{yQQ`Wd>j@J;`ut{XeuV@Q?D!TqWSA}8 zZytRLvs%=MRV z*$woat%*yG5%n8tUN-kQ_>&Lnmh~hDGF^H0^b8OcBFp$%->XYmW$nnj{$=Hldl^3W58BPiN$E^?F5jJ z*=G3ToB5AtpDPAWFG~-=C?D%CQ{({ zdkcfi2Y#|k0~&&gN!}D5Vsf*{Fg(+`77I47J^ma>xqj-E3Ds<`Rci?PouXM=&yibR zuRTHmh`IUY^+aW(qm`2Vky`pdfs;?x&byEGH@0A%pUN6j5%+qkF|$cf2=_D05@y#! zk!ogAT+^j2K>P#z`^b-H$)=zHJ4B%3&+m#7ta#)=p6;TG3Q>2Hgp?yrpr#Lim4`Jv z@R1w-1NH1&o&7Uyk!Y~}Di~YLxn};ao0@)Mz3e4X2M3EVSNso1Ip&iXnc^#=>@i=9>51|n;-L-9&IfTeREN-+XU~QZ{Pc_X`z0r1q!vT`>tavG@2xL z={Xj>@PkT5Z1bBkExjOx8HficmlYl!EozZf$<*}y$Wr=8aOl+4@3Nw!AHT63&9Jjr z5PGGc_Yb6yp*6f(V{oVMeOw|5UOazDKz%lkcBP`+v&!WCi?N0ZU@w=Rt*&-6h>#zX zYMS@!8Ghz`AG7is0KTFJdP#&s5;*^e{JXqZ#HUPegjxU(A095v=fO@YzL0vp z2)(PNE?@>h07c&c1%~{_%SuqK?TU2RL>)}pE7NGz+{D`JbulO?*g{E`xRea6r9f)0 zC@74382)2D?}vw`2UfNJ#Z-|V5Z;#U(=||KOL8A6I<-u0Oj)Ijv0ahDNIq|6w=tFW+&k{G`q)o-k?$gY5H8 zICT9^C>Tvq7kr@A&hNNE=pzBO(Ie#8{b}vG5+)0urMn`(mOT=2|aY?(QNcel`~zh5-Ef zn`JgfhQ7Qq@wsTj%a?6+dMjwh)3HRHL>S9%_|Ju+LGXVdq{|!KQk!?gJI1@QPhb0E zpEiKc@j-yBJQ1>ICcA^B&Hc|oAW_v+=4w^(KSn}RR#cFgHq0fDTr3q|5&}XeHDBJ$M9f|pFDMhwWqi5Jy()n zOA9$723g0FeOc$(mMM>KE1EsH?lo`;GwRuFlM&2QFdJV7D1{;|m&mFV)DnvC36zmv zV$RCv_=-+MgzpC=f6IGRtZKIcFY13nQ3>Osc#41e^~(ccQZnMUJUAo_4m5M>`{BeQ zFAlA@bDVp9y$BDEk@m@x5t?w_eOe1&NzN49wq}S{4@Zy`-8kt(YoXw8i|L<-(8HOO z^QXsB-I3#0^h_$-(7Pd2xI%Dmr||@Vz~>0;u)J6iZ#5w&!I>3wmlYdlaCg6~R$olX zDX!vL6Us#$JtGWB*t=Dt;kaKm;I;yWA^g`j46$G8h4{|hw3-H(ytIUIDK<0hbWvd( z1f6x=hdyPWg-@HD!KQ5w`_yheFVE$ZH`TWhKNqu~pXcee8vrUo(^k+*+2~$_>^ezw zbD!0G3H*+}Nj@*W<~gSCOUUs|c=6%rc~4CmU;EPKMt-tmOi{;31XrLdWMva@+F^(G z!HY12>Uq0!zuzx7tB_O1hiK6cFnc~FP;dve{AA` zrVziu&cbfa z5a5C-DcF$UjZzhI;d>3tHiXy6@Yy|ITOlM0BV$kT(}C%EzK3rJTcdn0)8Iz0wQUV3u4v5`YvNm2 zgoIJqM(-)DT(@$2k1jUpSFvxS9*GWb9|q5~MLFhXfJ28!@OimQV!l0bV%qY69EO z;yEb-vFf4ahOxa~Gu52e;j-s*?k5U3xFD8q{ApB6RSjt21evk!aA)?;dCZvlb`!krX^jK?3l5!-^F4t$z#sn(d%hx|mq;uh& z&*nH%zU!RJugWGpyof;}$Tuok^R>+5j;1zp#Oq_lD#!_!V`z^Ee# z4k)rDAjC*G9{*Hkr^j4WG+Tk6#W0e&C~l~{Pnewd{&angws_8rYvZpBKgH(jcL*YK z!u0+GJreMH+;FUF!dnuk%w9OWhhQ-}FP_s^UWS-h6TuHp<|oH5bBZr|9{SGmNXrfC)(;)=q)bmHrT1#Vc6O2&(;k;T5#)5 zS%HRWC)iwB-*U=)g2z3Df2~B8a0_!BOXYP=34j+B5w7qu2m656*mu)Y;RUj8y}@fW zRACsd3G06H*e^4xgMyl<2jy;Ew`BvyueIJYgg82?Ki-OR5p&yY-1rkuND?Bx;;g(6 zvJqO*={-AVzxkw}@7>ArF4h8!GBlh<+JY|owd*?P_rgW{kJQJ!@EWFT$R>%WzYL7L za8l2UI3Jo9JDV{?HtFQ3bek{(*=Z*r|~7x0klBel0rgjGBpAAZMBQbzt2S|0PH&HK4i`Il~%x`PyN# zr2-;e((*}+r;{hNOUS3;f@Dl~%XUcdHT$ETRO8j<$`+E)1E=B{*ES6$ftMSPnuopf z?~j31#=q(hD!2Bnl2nK7x=hcTb=?m&anVR~SMPS|9t+Z(y?z%beXUtu!P~PXyK9V8 zwiMpjXT?%j_`AAiqK3=egrr}$G1SItU2+Ch*APb(TDik`etESSfHR5TQUzmbaBP8` zN>pGNbsSXGg?!sl3K^xBHWt;q5i$+bDyr)gszmX9mpJTezUM;y#%3&*KsnICdmJ73 zkq>gIeVhRzK3G|H6R#RrE#(v)qle4*D`k);r;X`Swe?#1_C5M(HM0tJJD~6N;Wb!4 za>n>?f~#xt1}9kGh0t-|U0ki9W8DVv5GhJvc|gUX2+Imi7yaJac>Q@g;tOD*xVJq& z1n499uG+|W-p6C9L)x5orVF|ruCArg z*2?$=!taV26=n4!9Gyk9Dl@OE@~;$Z)S2F-Qj^&g+>gTYe0hP#hFD z%6g6rk9O>3e<7jY{|gKB>mt65W7UuOX61IAXQj*2^5b~3DF1{`T<6Nl?cDo-WL5i) zY)ww6=%L{P?-x3U zZWd44{IF}#jd>ZnpN?HCUCe3tfV#8YlkwO%0jm>E(@EQK{rE-t-SYmCNA4p;Sbui) zo%<)X}Z>wjidmvaKwpb=-#OXO*m~igG8$+;hcrks}=|t4lP8F zBOqm=9M`WzBiN;@ws{ecb$jck`lqTJf(Hhsyw&mgZ6|P#Ai_WV?VT2u(p|7R84b^A zOf0bHV#8^EQ^Y+u&#}_E;}e4!W^7HC@%@Dz<0m7S#&g-2Vt)B7;3Ux*=*|Z%?NKTi z=p)4Z+;Cd!bH2G3j^n*H_@EfLG*oRwrCnFF_AqZFsKkv$$k+)<{JR;b^Il+X;aydY zpN`oI2!neiq3_YhtB9}2#F-y^+KSI>)rF<;Rd^J!|p7fv1m~ zfh_9< zkj=ppZN8%dB){aEiYrY%wUwD~)PxOmkfRsAY6tT=sXm>!{o8)cbbpOo1$-n$w_&dP z@k1QCG0-O^^#Yh4rryAg`@G8&q}+D`_4B7fixM3A5(>na&lE(o%u{TI>aodlqJ|7X z0^0P_T9}r1rE&#|j#wQ|!CisIm?_djv^77!PmgW9&f%35%^F-p-&wRIJh0A?-YXJ7 zxf1`OmWYdsa49Uc9YM|G7X4WVQ`9_GdEwya4bS$re$UF@ewSR3%+Ksrw+1Rt)rTwJ zu}oUSU1bBwmE!a{(y2Z=RL!P8D(at24KaObKJ!=#Bu7I2;?KP0Wzt(1AEiWcXtKxO zHJqQxHzcn=k+DpVw`Pcek^a8se6u@-jrn(Q{3iNX>XHD0Jmx%^RmZ6{> z3cc{C8DN1IKGg%zd|y`wCMm$^e0bNq09rT@Y7o7A(8f(;VRE?u^K^-rr&p;20fY zi|J;+2ogJmo^@*bOwMn!T3^Yu`Y=J(l9>2Ue1#BR8+2Wuqj$Ef^=33+iXoA%z-(-_ zS2Pdqs2Xv*Ze_E`d~{3WX+ED}AoXD5O;C0tgj1>UozfuaHITi&;Lm6+E1bzKbV*9rit(fds)QiJKY$8DHcBF#NIHgM^{1>HLNeC zA=|D=y*-?(FfA_ua;h`Q{r1P-Rot z8o;1Et))nu=H(yp&Y8gcu&fUq;1B@z%V~kte^5GO7^hc9JFCq7b+WgfE7h4kxKOS+ ztZG#a2=l}0=;#sT$XmATKtpmjbR?#DNABDim zvubW(`UgQhxC+7*>LrA-KH#~O6L~`s_dG}8e{Vs0FA=AFQ9W!m;YH$5MuqbR3Pmq;o&;(sdr+|1zV5EYR9IF1`Qow4KX zEz}lm+T4W*xQORU z0`dyl!xiVuYpT`>5U77(<{rL8lKarx$Q*PYXk)r&g{j+c?ZZ_*zBBa_WTligD(O{O zW(5+e`cSBwZ+)_Nh~E~9XHlzLTaz5=c^#b zL$PEBHxD|_*mT`N>pjphMAscmF@K^Gp}?yzq@d8k#4H}kKc^hni?Q}CV;ww~gC@^Q z&z&L^8N>AKe5uL%0XQ?d(m2u>u<|>rY-g*>{ua7qf9rb9_4rW2u|=KJ&Uu=tM@U>bNVUP6idq`RFN*o8dt!8PtL^%>q_}Dxg1@J*zJ$`NqXPAwjJ3p8w zI1-a)p|-Z2bM*QZZ$R?UFC&C#%pPp2)!RQE(->5FognT#vGvQ1Q(U87*`KXe+!$`R zS$Oo--|-E5#FnXZC&l_Q8yEyaUC{?uVlEk~zf;(Fcx z(%$e{92o!Xj869QZ7K(S{63wM;mE;@gl%O9ig4>b8s1QHVu?bNkN26F)<;eiGq)t! zmFol!xOC-Xs+Y=r90&R3sPB6cjXqwGHKrl6nvIwNXYimUD#>RL4;&Ncq4`bHPX z?1KQ-yo(*hC+HvCxoYf*LwGx)7skiut+_WE#xDj&u@Y=`hqjn)3O;hAE<|OS2LeqQ zsTC@ACu+@xglbRchXcNZ04W!;xLGF}vky8E4{!AS53Q5x?3mv) zv9{#=(7jlnF^H>lQ-B3bKx4Y8suMEWG_%u1w7XY)wFt4{Kp2gM&3o$m>jI`hhA5hWXq35p?1YSL{9t6Y`r^@;!M>5^*~}m4Vk$ z4WUa0RTix?XS{Af0dFVQqh?Qp7tIY<%k=x{=DtrT=+I`7-evi~78xg`TuxfHc6+Z* zrdUyC@v)CC^_xBI_3Auw+IH(s`^`&Ir%8GgGcQdMPuIISA9fL#xrFgX#ubUV6s^{? zP=DUealMV7WUAZ>!StlMi3Qk+& zhph?TuL)p0t~SA7v)69t=Hq8x$2TL^QbkJ(28GA4XYME$A$1mc&ac&LP~H?o1sCOf z3oSguX;12jQ-4u4d}DaA(sQK!X|kN-+UE)S!*Pyme>#0>GB=Dz3l#YB9=tI<_!<4^ zsjpFKZ9r_DnLX+1l?6iDH3JJA$mHa12y@&^f>u)}^jJVOmL<5eU8uUs_ zgPn}i_SkFfz5cXc?HjfYe+KlFzoiFv_zN}+9qo@HFe6z#RimxD6@-;y^6b1a#qXni zS823ynFWttHq>9eY40IEWz3g+R@1+bDwC9dzY_5Kn2W*^7RzSiVYxTA|7Z5}#^r=H zvVr!bx8Z8hD_5_h**7j@zoE)$l(v7M`sd5E>1!wcXqV{EB}HL-1hDpz578W|8YR{* z-X#U^QR3*j7@`{H-wabq9FA2uOJZT6%vOulR?y5QsKJ|!Acx8`M`&W_lqDcqtB%Gh z{chjgUesoWW|^*xw+l8_s^}9Rx{f9Xyk&a>R`f{!vnp$w_f?KnO?WnBd=|| zC}e=8GRdPx+}5LJgxKPJ;|vId>eqVBV1w~jxR`Hpj?_qo%tI0;aCzdVV5sBB2lWEbDT~@TE>@;R=p|B$|hA zy+RC4l;ROO8Hx;pRz7#7#No%6r#2H?319Ep3IPE@u+#JPNH)}P;QK347~7JMq56X< z)_c|}|HQ?`5`w>*YmhOv7V?F~>-n{<`WdZpf;4~jX{>`3C$;vp^F5P(P&9AsuXD<2 zgr%%s^RvK1IF>GYj^g=7%`azRPT6WRggr`iQPj9+PshUyG z#@Nu^j=r)w1}EUF=-Rnnu&=f^w|$1TtNk%lFp_ZizHu#Mx-$B>D4`-r^*#N?{Tl-j zgw*U-IZNvkXF{G%2iv8cU6bx{#JF}n@Gi}j+&S`k9d}!_o-Gs<$3C4+H7@X$<733P zmucE@^EQXhj=i3*bGFb_$@s6Y$M&yVP<^3)o=SgP6E392OaJ<_kNV@Ssd_iQab^V4 zailCC0SvO)&jIW1;U36U5z7c>2X@{q- zOo`PcxP;~$NLCt5hFlNY-|YU~n}g`A^sRW%t@ROsL5^-hK=teLYpOfUtu<&S@Qjkc zK#Gh|V_Ju^vKAN!-_x}Ijg04HaQJ~Kl@TD#L3$}#@H*-NzT?!G+6V3WRBsb@rLX+ zUjdvgM|yqCkMD}2O=k4JX97{^>*~w`?@!IGIavDSJW>;zt0|dY5K!8d;chK59@pe^ z9weidr{5Uyb9TSY?r_n-PKo@n1cv$|w_XUp{{(#JHUgjxEOC1T%4#w9J6V46bsHVeJT~ubPJ_`R zH{ryJppnpwp1w*nH>hsf2{Sk(cU05y$uJ%nsn_s?%tKkTY*znNb*P6AN6W*Oe5>-I z_7a7MVn~jIyiCp1sc!sC&C??O9s5NT(u8;Q48hBP-S0PsC-KrZv@s$ zP*nP2;Y?F5F_G2CotB%bp}ZC6CQII^$R<+1BFR=GYt8&;ovdLjlSnbCv#@wA~S z!`LQ61CfKwaJ-JRYMH2jpC@ai0=vlaP{SJXnTKbd!0PVOz5jmh;CW%&|W z26Ex%j-b2sW#heP_a_uG>UeV>J8bVyGSb#g${!Y{s%S{dst^)qSZME%vYzGB^ZD5Z zC5S(#RIxvjky+83D%O;jo!X$v(e|jXjV5*ttzV3hg7;>Q=u7oXihOLR_W|8W*QvS5 z5E_+FiId#VCX+?TLc==PTPgF2VX&c3rG3u5%5>Y^LkC_N?X6u}XEZC00t_N_5O zIa2am2BIrSgLkXb>k}J>yhwsc-@0h8ll1;!48?ajj?5kv4a9FQvCCJD-C~uzJ3QQT zwkVcT7P=p`@}n_8XOCVY*HnE#2nL^rj%1MaREpy+ni;~!tw9)t8Ozofha_u&DY4rH zdj?^3QPEPG z)XIQKU~SX*EcQ^4{VB^{E7HO5fftk7uja};&K{Y_!+D4O6zsqDfnpwP9z2Mm9z4nx z`s|+$(R%%OhAVB@<4my=2`gWCIW;aRYzzwcYtO zyIq>d2(ibJ?Ik7e79&~Hg?@ErS|{zvN0hmWfcm>;|1*^Zy_F^5cQ^VL0?`Hcd*0dpELK=&cO|Nl z_u`qb5Wq-0e)vfQi-@vZ?`TK)S;<1Xnl%;n(L#mW_MEr}>4NZcF%fcP(`#_?%b}*5 zPgwYGht*`}93kNox@rv>wT2LRXQDrXB;Q_(6()Mbrxywi(=G zbCpI6Hl%MMZjFmOVvd9Ny6f>$yj5RDyocRvRCgID|3CWhng>l>a}E_ z^eP~H$&8@#NIK^OOzSbX^LUSHvq;kpIZUxK4XeK%+fdd|>&JN~kT}$poJO+pbnLga zuROXL>quxzT%G_NvQkjZw8PZ&rRdJmI$Ug@D8+c&A*r`cjW2G@PwcYfDWc~h!X0uC2}N@9 zq&*Q&9_boC<5SW-DdSJ1DF=0X@$ChBgY3xyetMs;T!B?+lwG$$_jPyHBww;cJ)!EAkAMHI>46N!Q(bNYYYN3=bXbL@nnAXhiY7Q zUa#wRW&blC?Mefdm@*B)<06%R?MWLW?nOuC&*m$uooTayJS&U_ z7-^}O%750Q^aY1@L-m8QXQPkUX!=jI)Gv^YdTO7DMK!1U{NZ&j zvjHXQRrjbWt?=RG<0x`3>bm%RN8!vl+j&Kae}D+5|LLlCty`XIZQ(c4 zTOGPPNjjQ>)h=-i;pgG|j6DsxWSzMxtwevST&4EDwYPic)yr(bzbtM1c<{!AInDM6 zGsi2Xd1oVG5OmD~Jv@+)F+aPy;LgnWZ*VjN;pezoII3@;1Zwe>rpvod(tUx;Q)5l* zvC}?seZ&6xGC0k$85|!~X$2?|Aiq;nUch5Z(UgQ8Mt92HpWI7Bc_qf4TIKSqS~ODo z($~yuoHB_LqJ|9)-`{6^)En)DNPE<;M*2Oy0~P*jd(-uJxJPs>UoDUZ*8>9ku}Rqx{Lia%B_t%yCJ>w8mR+UzfO;aY zKs1>tqm$`c5;%BDKDH=H8O#^Mi8>au*V`3_t3v|fq&pS*(g#H^xb9<34%S61ej8p4 zNon4Xd!D9B_xTBqT=pn=`yX_XWP13LZqJ!jSvjIy^@dfV5%*Q4r{WaYyrVP{zTFOz zk-sz%ZXfY6$3tF}{mrz#z$?q^DvPK1@F8SRLZCPn-u0ghAvM} z^N7@Zo*ya#9AMuh6f)x29h-GDd?GV;Ylw_duq(33~7Fa2mT>KdH0LOvj9#UiMfMXP9Q?YZnxO<7bx< z%vH_0KyLN2cV-R@PbW{Sc}II+OF1*Z1N9#YF?ZF5W}gaQ)sqpi5oBFwu6Ob>*ED@h zC=%8g;dznTZ1H}|r=jL%HTA({gSxn4)bMd72%;Eux!A8NoGO!q9Unv$>7PNL(!dgy zvqM|3dTYP#Dy%awq^ZcNlmQML;gwxTto%mhyh*3!Bb-WjePN_b&>&Fz&2hx+@g?Ou zKRV&T6qy2qdbbC`jSzg`Ht{N>kU0lJGORvWa z;dZD1+|yZ2|HApiYp()G)hAhxEevMEvZ6kAZ7x^Tu=s*+x@{q^Q0s2%$xQ4@X5*Vo zVya6nlLy9v)1y~D?C!CZ6dyd`j@&cEs70y%9&$yf-yi1shLvq%;AVNXE`axRj#je* zF*j|UYN8tRilVV+MSm+Oq0q<2z--0}G8F7Ju-Ry9cqDHrK76x;+!n#Du+#Bq&jUK2 z9Bn>!*r~@qJG-EH$AVx0ezfv0QM~<^BTpo!HafJY7W6r%msMLIe2#&9}6gHjp&^ zniyl&m_G-2+gdoiR%~}BpWqinwexv|sI5MJtr2W|v+(c%b#)%%-DqN}>D1C`D*-<~ zMz_V}cF&5i8ga3@IY>;e>2>nfhRY^m+^|o<&%dQTOG0d(kjor~XzgX5KE35hQQ14S zUSC?_ZJ{06aI)uR&fxjeJA`sEPkzgxe|}BxYPj(W6SjOxYsYL(i-k>Y>>CH=!cQ8- zT~Vut#>tygclQNO5@nCq!e@HTO?$&qQx?ZmnI6I{jvKyX zS+Z!VMx;KL5;oS+9*o zcH6D$m5ywb%HnkOCrf)vwT6k!oYhGq+B#S>UE-EC2;yA}o!#}Ilik`ie$a))m6tEs z3~|3E6O3MJE@@#(oSQvs9yQhTs#q*B_&IrNK6K%!k>sM zCvmI16~8n!>sw#xu}kYcx%v&>sv-m zKm$I_#FvzAdgADQEI3msjO*17yen%yNPz2w*2I- z&7V}etk|>B4Qj+EBQwjn7v&G4)|Dp=4WD=yJ%G3Df2nh4#tlzyA71^kV_3Pg#xQO( zCqF$~e_*P(j#Q!3Zt$A6SMeQZB|J7R zp^t&tPRqZ4SzayQdWMHxA-|K0;WRkl?T?>1+C^ftksU^EEcK{PU9c*q09`~!lfuin zKDE$vV$J}3keE5fHqEF-^#^TD)3qAl2Lglavy7$`m95_`{6DK!-{u#zd7k97y)cHU zB>aq>WquEFxd;4i^>b_D`7&utSZwPbi4R~lehyN6vp=mOp*SzTx!bbsU`8R-=O|v# zHbU5)?EuF;>vy@X$@hj<&z1DkUC<-Yqd+0rF=uWn7@nv*)uXQMAR~=^y5@s>v6L&JLd< z2aS?TzCRg#hN~@hm!_~y5HfQwR&mU3&&v*QYEuy8L?aICdcshSI1C$#D!S~6Ohovl) zT<@qjS6!`+yZ80EZEk)x?W8X&uOm7XRJB?xxn^9X=a>~_Sdni&`l4rTSHZNM|1pL< zxe8!5^-RwlAG!l1v2~WZ%Qv`NiTB+<+3+o#&iWqZo7TKkemu7*2x-`$sIz2PI<`N| z*ndO9-2M0b!K?Nevg(ODfHfI-{R3z%6O-WJa^$eSIa|YdzYLON6WgQDp-mfeGO!pw z*_%J~L}z(xBoRsJ?Q_nOF3)(07g<(3lXpP#1U0`P_ex*Fi}%>2790<_up@^vrBatB zjpqEUqx1U!KKbNSM6726#S|lC7Wd%xro>$4UD8FpZhJ>^S+boP)YNCc*_D z6ctqf2D)2BM6b+%3fd`(Cb zxY79J#|J)5(=NbNlFmpuecA9eJh`OiG*3wL`!r8ncBHIaOIxp!LvDUlQKV$gH1>DF3X#?x6_%+SOn0mof zpcyLH%8}*9Y^lqDL^+#CQ)}RMd#e}m4^hA+2d-AROOMBeZOi55vL0v8SE~&Ibtabd zZ2S)$9hPYJ{6a!7bGCH#(Ohy?lVwMHfu&&l5FDNL(3{9c)6g)b@8|{M212{ao>!!$ zp7pWC$|nGx>qV8eIIR-sSR(dvq!0iu9+PgPp$#-#s?(OaZM-b5LKr^a{mtD~e@m7k z|M0Y-qiShUJV2KfPZ5q8X5F>)<&A{w8zo~Vh4w#DhDh~6J6qE7-!U` z1fP}IyI{Lm+p40csTC@+X>qY!3roxFF;B@Ak$)AQVS|h-;6yP#OPD0>+yGZMCx{=E z+-d6~$FN0R0K_ad+AOdaE;b0Se3>IVJ`nPKytzXJ!m9pJmdm9r8{_?0-qtL<@So8h)!-L0UR$kzAim8hgSXiQ+ditazVIg6<5td*I)9H5A!5lk8LgRNL*nKrI$!^ ziminHaZl|5=hc*<-6)RxF6ItPrq@kv18hcyB(pzN+4}ztS<$TmVweok34s&zQZdQH zwn_Q`eDPTVH>jnvR;#`jrmn{WFMrKycel40)I6>{<+mOo?O#6xf6whBh+B%ye}JS3 z+W1`*eg+LNYh7=XwcqYh*|FIj{4H#)^1)cM(X=|+3(C2ju;;F9GsIZ)t_ibug~i9I z%dy){d%X1 zHfuY1EMOIS)cdyk-rU~7vrssqQA)*p1<*+NeSTtH-CjVkqBVS+0U|DD@Y@?MH&!OE?D zG(lodxUvlNY0T%^7K-m9U&-6!E)lnKnMNho(j38TkkPN2Mdam`Mv#*mcy_^6@3wp` z)w4e59_}Yl{S#w#ttTs4Sh|nWkIin@qe6J#jd8_RJAO22o0Ns-p<%n(npe;vW0dG~Vne+COFr zx7~W>Ix zcX#JdLwBBy`g{N9taUz|^S&R3#hSHe$FrZhuj{(6TMRgWAauRDDPDzDk3fc33zl8J zZkndkWs}RZMA~l#x>XQD&8@nX-pcHuS-9-V2wZ(8Rl8YVbT;1; zN3c-4DX{1|M7`^^K0~NG-O@C@6+KD|U06Hh9a}Y3Cj(vdqc&U`qJh@kdpH+&mx4V! z5)w3AX`ReMuG$W7EJn#1rcdZs$ITZn9MfSLoeOJe@EK=|B}cXyu7MxPM>Ap}XZg9T zr$&{t}tqt;Oz_VS{XU$*orCB=ts5Gqa7)cIFh4k|WkwLMT_Bm}wcWGiQNY@1x3u!M_EFP!dsg!E!Z6U3)fCe_Q(LihKx7Zfe9tj|R?wI(N-mbgha^UI= zm3_Sv`}w^jbi6IiEA?}Bz3|^ba;w^hnga<1KnG1zGte&Qz=zu@Xk3E+VuZ+5)dZGl zCnajRgq$qFm!Wr@3Kq$}<7%w{)HdMJcl}by40AH1I^|_<4hkEt&o4V!wC_ z-K({siP>Lg&-X^J?;ozC^-d{2QfaAf^|>{6w-aMsUT6+VzGqx?J7#RW&@6IctmXRh zXqodCF!fRIxn0GGRUL;h@pYLy@^>BYgS^|MHQmgfmAT%io!#lNUysdf!>>&+2s)}f z{5N?;aiBV&+6C*ooTZTNw8xD_q33%V9j?5M`llX^oiO}45bSt`mFQN~W|D6IXvMqM z__n7u1aIlAqX|#VNPhP1Rz}ScpspL9wcibmI+U^nTC7EZ`ZQIQt~}6KuU5$=wja;C zpS$-+b} zH&Hw3Jbnsd(igqWE4L&(7y0!Jz$(}EN$=ufpLkd3CvT3MIbPv@9+lG^laqt{JNc0D zr_IHyRUUIrdspzO39oU*Rp&#m!=U8yuSS+Ze&2=Mx~b1deGk6bUe4!*G3)c4H=aCW z%CVK@pPX=){p^b8hSW;<ATf_1${7^`HEsrV>oWGEdKvB$o}!yp2dAz+#UmTc2}cHo~5 z8EJ~!q~wPlvpaiTerQE1KLEyR7>F^tAvhjYq|OtgTObf z6}j%qT^aY2s~0^#R(3WHIx_gz__!07*!(@I)^0KEwtI+mrTxKSQezwmD`$-Hd zTB{s9+VwUOPPh!O)YK4lj_-7Y*JGX8u<|7wMEJU;P>v?n-yy5sTY>;}^QdJ*_h_l# zvhvOym!Qj~f;~&NV>Mk}!r-Lgq0y>`@vOzZHY- zNB5&%UpIQ~k~zs7P18NvZa+BM_6B1ETd=B53LaDcm@%Bn1?0ZC(HV-U!ZIK(ZrxLX367`2+--myWZtvj>?2u~vkdHJ+g3mr9< zsM+MVW!5^WADjQW7{I$Zca6C6{g#Fx#3UaJS;;=HQ$ca_&_-{RGSd#I9_j4(`&&Cc{H4jo z+NOF6^RE{O_|i9eKAeIDpOOVtW_#LT9>*L0MkIq~%F;v;eZForlcu{{gx#unacG5u zsy&REA@4Q{-3gQojwF96h~dWrpgrYNHZt%BxfSbsF?chs=;OM zemo>MYZ@-ImK?e2NL$2C!}4bRt+$_?-c{Z^)Kui!Q6qyKta3~OfEj#}7TKV0@WF{! z%wdRIXp_;53+PI@c>2X-KMasxF=9w5#*$ZA8&&9m)C`%p0~N1svpc~vvOELU1*PIv z(+ysV=p*kjU!Pvv7SItYn}h354E!c@42;0_STzor@Tk5Ow`=aL(pVE=u`vbJ)Y&?Q zEBeB-%ioP-+jXNc<%uj&gA3Jr)$c_I<2vVG=vr%%KF}{!;--cZ^9f+Rd9pdg$QV)` zSO{OH|3kwWP;=bAu#hy3Yt@8YqoHxX@DXcNb?_ z|E5TNX;KK26v2yOj?{7m1g^V~qm$&Q&Q)S(x;V=tRzHX!n-Nu@lE90 zwUZJrD4(A@usRGpHd*1F+U6gdj8To^FD^bjV9wF~#GiKeOAb@0@mrC)L){+AJHW^AIcpWw>UU2W}$N~Mh+&E`s4(RCvo|Q6Ltg6cl@~h6h z`z!8X@mD<6w+QCDKWM)TzI*2DTg(~SmWl%AMwb}3P)(`@WA=ESP~v=d-0>@Z>$O!E z<$Q)Gvll*5*d0bX25*${pUT^Fo$Qg`$nR4?>VCPVJQ>mGMjcBC$5@n+r3iyU6e_37 zZP44FvxHRFZ%GIv2z{doAKet~tfWqcX8JK>k-S4_oB}al{}Q_lt+uUVA6R@yM0q^S z%`xBV17tj;$`zG|^a`W#74-*pn1L?@S6@qEQoCR12vS=zFMHfNPgJOt%)Kh}-D%Z6 zSv&r62UKK&Lgpf;u3EX(mfPdg8RqyGh9(h_rwNQOT0ku=^kB)oaJH>eDAa3y-6=o%D{RlF1mK9y`hHUws|)EIGKY_jFJ-0V zzt6+$R_&9?e|T2Tapc(6HoudFA7C+dpkrfMaxB{IdmjZ$yV}Vtn+EcmXfiKL)59)vT}FH3ch}Q9I5T!C!O#%d&Ti8p5B9&!%< zf?LCMTd*;rosQ2B`LDp#0sN^C7tq`J@Q{`D_n3f%&UTX73Q0iG^6#4yfh+C`vattM z%)hhjOeJiL&FtF8$7Qph0bR4^Yq$RP&|mq&WAYhYn>YotlF8uodO`grMUJuSIWle) z{kddpi%S5##KDue_e^=VxZSMJYP|;`9nYjQG37Jb-TMrmZ>??^=s6tG)w9K7W-+$n zqoL~wBK><+^-nEnx?G=J9usp&OWIV-1L$+Ag4^vC8<5%zV251LBV;34MY~PwtF71Ws~`IAbXKT2VVHMrIXPO9Q3NUcM^Y^ zC4lZ{@CyU~$j6ghcT+Oc2F>Pxm1MGz80hIpL-X81m?J3VpANF2?_a*78?L}K*T#Q&XQaJEuH`fP%&Jmi#+?t2kfu z;KtII3=W9y!iz!$%ph03crh`uwRYt=CvEGeiqmY}J?t1B1%kqRqoF@Wm$nJwxpDEvr$!wX{v@A(A2CQ2nO&9hY=2EvSnZW;w)SSTHsFM-5iiigbKhYtAOk?xfNYrft# z!zPdyxUGRVm&!sw~k&F^a&Eee7_}Z-QYWs>(tMg!q z4HvqS@G(e=_=EnjyG^o&n6>>IUgeDvc#cB|`P}sxg}~Hm?{5P$)%qhwzefU(G~Rvr zr+>2+k>40IwKbb%O7xzkKnt7`m|;8Y0C#mI$gGs>%|fLCrg(L9*4i%|E9R(g<7oi# zx1(L^?+ZUA4E3gV9)u!*oG1`miWU%l zO|GXI4>IbaVzCR%m&dBoYca=LTT8T2Ep$RxKmN+`<`=2umfw-mb-~Mye*ainXFIiB znoR)Y=~A)BCu}<>yhr?8{4m6xz*6Z;S#IQ26XhP*4)i3txo!RqJ!3db@9`uefgQ}8 z^4gHtz`ZJ&WU>>9@m~W$lrRD z$w~mz5Z&u-%={@+cO)23``Y(1x3t@RRWR1DAZ_l#P4U>J3yOcs!d|wsYGk_e zE_>xEBUt_|Fj8MASpLfB_=#_ihoid;kodf1S&^F>GaB+aKKdWt1k=+3rX;|lAa8qr z27*xTXbFpY_b<66z24xl@$gwabDE2nP$7uh>rA;MW)4S5m5ZjpyJ@pPAeZ*f+S0a%6n z@4oJo{}P{2$a71Jvo}5Mb|rzyU!Q)mxUHJb?jN^pI&_hBcl!}kcuKl`Xv%ZxlCVJ2 zz8s1bet0UfS4ojD@GGRTUcQ;F!~CJG1t_6efymzqnFI-RSK1td-GaXz7JFSJ7pw+Y zdUSlPkU!F(&{~z58NbcCD|q5jE?77bI97!~4;%Pww=mdV5$uN9=6h-+{gdzaB0PkYND!A^CbA7s4C)vM!kS1rxYP*mj>xIDFY z-Y7L#{n*i>T{Y@lj&;Pcxkc~X8sJqHbRNVm5aZpmeio0$>{=2^^tHp*C}6_z2UyU; zfv@<4Ycdx;NsKgWG1;X&y4|NDvww}*Hp^0@VLmO7`>(!0NsT4@xq(av34)5A9 zpTTN!Z%I0_Dt|bYC(lApUT&}mQd>(W6ju)dRBS-65(0N<`*GCm^HwvT$RwKm;qo1S zs$8Kc+r4ik=N_!nV(^pY9PE^g?$%eIp714xrj>D@ZA}eS_XB0MuLP@Ub<1d`p(vd2s-Zqo0@k{wG!$#9&JltV*0CtJk_ncS&2 zYF-lslkOo0FPpl)A`$Du)En}>=I?2Z$vZgrYjW>UBCpYuPAL|#n^R>i%UefBy98&0 zCgn=4KyV|lzu&u(BVV7qo0_mC7M&Xtn;?oMV!kZ;Z3ifNx?_Au+6pu*(7C_LBJ zfkfJN=~YvIw=$#h5ZwHEGvfjVc_S{V-=ZMo?8KQcUyd|3j>L1gz0wQ!4!}BiWX~Tv zalJ`St#$LdGs0>Vj#1=9?3#!YtYbA~(epNlG$(~co&U0vQudDJ8)r~+D3@*r%?iFd z(zl34xjsxz>=D7RT$(}3*N^-33~|^DslP?g48K4JyPgbOySCo8f>kew(tykf06 z{9?(e#mSB~ll(CQHnEx;I+8_)pI<@JMsG$PNbV%NzZP6q1?^~MEoFjYxDf@+vn=CV zW0Ay(Fv|URqJp*$UCzMdTzzfDM30{xe=7C*#Py`b?rumYW5n?{-2>jz88a(X)>pkol8 zS+Ow_IG8=EgA#DQXX^|qw3dHG(HAnPQJ8;>15BPS?6az8F&|C>UY%$aPAX1V3%rXw z)PX~0O>>OU@duDjXc+5!QSY@^PToiO6t3d_t5_2-MwIMIS z7-JoLz#f(=HX7*nwnFIld?vcxvX*!DBf=4RM^rUo-N^0>+Gk$aS_k3I=cJs}-%<2# zb_pvRHB#+!W)y7H2v3gItU%9Vu712j6>D0@#Wg)Pf;ySU)f`0O(XVu#a-tUP>9Y-W z-PKD@oW~;BOKyxXLzJcqGT+%Ay}qy6L9)NSQC;svTbJ@*Vi6i^Qs&n*$uCK~4MYK5 z)J$+AF@DGeCiY%$&bvF$?)bY~1dW97Mi}n+uMaAA;N(I+iD3!QN^So9x){9p4+XNxOffMD{)3XQv1M1or| z3dgXB&2xmMZq&A(&`!gf38m zmaOe)@dVFpXDMIV+c;0r+&+$Ne!aFjwCfRq2kEg7c@D?5p-X}=J)6{$_*+! zx%j2C`Kex{k)Fbbm*cms5~MqUJR?&@`N4JkQD5TGjx4v7*|;Y}y9X53W+B*1VnXfQ z0tH-Bf?A+~9moA6r+S6eW=z~{)#=yl#Mkp5U`=Cu)X#FGtNFLa#_7tP>0SYS3>e~^ zS_Z4X;m$SOB*t|ZQ;@5rfx1BZsYnpdD*SuY;teq_VWVWdZWf( zFV|OVJxr>;@Kk(sFwjYjD=QB^mYxc%FdVa4 z91eD$3+rCW4-piE6fX0&VjDDG#Hy2KsvEH<<)$q!q4vD(6P{yE?7Hiuy}eK%IMze; zpZs*Wj!Lv@wBjgFoa$!HV@sF9;WOLhZgnBBPNU!AdOIUyjy|jb;h-(#tZ>=r!L;zT zI$Pu4Hjfx%LXAu*SKae^ketdHvsJ-`Tnwyc(e0_L%xx2jYjW5<0mZ0T?3$$~Hogq8 zZryv01j*P4h6nvqz`|f=e^$C>b%LgpC50vMjryAgC8ekdK{YJF2k^lq8IRa)(sl>e zK6XE^$L#sM(0|~IaG^sp>h<8yD?88YL`7#ze99^~hxtG?O4dy_E61g)$JV!X)0pD3 zWJfmPT+Jez*B&p?K^m=3V3@Nf7g~+$4tIbkiIK(Oo51h9h!>*<1Aj1_w)N)O-*c}^ zszYUBPYyq`R^Uvz6!gO8&hYFP^Oh@BLrXW<=yW&*TSi0M2{@ns-F>TXFiu@*YNPjX zOKH#EUI|-C>AeJ5x+FW2dHAQQ38HGUjaU7L2L;egQK4HDJ}t9W)W&z$us(jBXE;QiyuP*xK0Kj8?lS5IEUo$KhJsc=!hza%KQ zcMEbabae0IcQDGo*%B)q&^r!jtd6lARM02gjnAu_A0nj`=(FvRU83wqw_KojY#h2qJURBu&~wJs z5U03o(fWB~fxIseE&9_DwjWF9G7x2x3}z$tpeRbUI=d15(XJ4kp~SD~@2#}da|lh8xX|+Cf5n~ja~7CT4JeqH8wnde z`+L~{I+^%ph9*~knRn`*pl4<*4o|GR6Kb^~{|4M+e+Qpg&U5F(vr5f5fwqoDtQZ7k zb(eA(tBUEVw}09M5cftriOAlUQQFCc%}2effR07|C;H9G? z%Fq3R+DG0^`FC|YA;abM@VN$l@pzydD{WNsO)5Wy^O}h?V%4sk>NBb$0sOdHg13md zQplrYWhP2Rv$3R=6@G%+SMk+1AGn!fu6t}3Hd42=YWM7`q9(S>xf-9H@7Duw#yT6> zAA_0WRHB?cGf1YzcR=3)z^!8d*>9~Z_>sz02__|e*|Xi64oLKd^sf;SPac4E4t!ln z;LS;;5_luepS(t|)bBG1qc@1L$gSYg%*AP&Id2D!ru;PZwn+-eQ}ow~+OdULYWdGP zS@OPxPNQZhnSN-vKDIG7BmQ?2Z>ljYu2Ej#xh0Jn4Ln+Ui7PU6`E>hAu!vW<)zaiSIaV4uWz6(Fm7ejU=xo=w5D`Y&C-*YXKyC+z3$(+X8rtB@wEV=zB zLCnwn3=d=dSBhf%m<=O88)vL<9%yrZnpJsYWpfujd};F6_gIYHxzlq|Y9C~C^Yr<` zqJ?lxhmCZ|M1s~j^vjd(!h6r#KTPj$L^;1FTUY$?gB83bDfjx<)jR)SISDzMa?`+7 z68lao{jamL%0yD-$7&fCqtvi-6;}p;BrB%OV8H{ZQ(-BTbzjpTjr3CIB+7;JvDfFC z4`C?EO=>`>HDJFSN+N3)@Hs@9NGeFs6SRD2{qvD+pH<7PXG$(%;!tu%DT76&L6dPu zC>b*Tzzb})khNc4Wyqot%;KCQy-eS;5@mv(4b@M?)xbb();z48RydHC}AB%crK|OYh0U?;t>uj zKYGJR3{uJ<|OdQmI~QX%B2SMP?; zUJ1lssv$_>4xedr%(JX<0Lq2fA8GYW`K(21?_k5o zU*9vC{xIk2D81Y^voO+%9%FtweoiN-s}%o8Fn?k7)EERSh>F#BC+J8`z|*uS&Q5Tv{R3jvkY>=ed3x(tEX}_r;e+Hg0<_uRz#oAyEwD3WyV_ zgJtxVWV7G5zY(PBTT=M_W;xqneiif!VUsoRjQ)3YzYGNrA`Z^7z1|W&zF&LzM}056 zCgmSIOo7FDX{q@WJ& z>cz*+Lv{$v;kh$+B(U?|H%OL??ttu}W>Avpma1fY>1sMPjDEz(I2YYXj=xwV8J@=T z+OK%+u!p1*pPXCq4ZRviE&OlyU00KhvTHw=sG;4N*^)`Cv}((Syx+f?5Yw8ow6@Ol+x!DqR=_^|B*l@N4Y&T2Q+@E(U)@P>>l}r z6|8cMOvVE`ZkcjM6$(erc06|N0ccx8avzm}u&I#kEQ>=kF3xxR)<9rPctqLU%u&&G z(fHQxKGFobEhvMxu>ycg&~CA06Lu_+;b7DLF<*V5>Zl9eMAwf~e9NIub;RlxVyy#5^6KnPn}-SNTfg?x|@ z>y1b7ToKhmJUY9J$T66?XNcr>H(pT?vW;CbJ{g#u&?`s9;dviy;e+~o!j6b;X$8_9xjqT@ph-me2baVg)#+d$EFY~O@Y-s6Vofs1TFD>w9iC$G z#6qaGh0x)Y9i#S&NHj=Nw=Ih@6;;zS~D>oY8hrE=VGy|5YU%WxO3&|BB0 zO1p-*M_x5RnCZ(5`eqP;;h2N?x~#f`yYv+p%snMD!ND2h_IcM}kV~_l7 zvl3)2bRJ%+Qtm`4f^SV6XdP;JY<%=V>3&V3f`}I${_||?<6SVH`;i^k_IZ0cbtNK> zGOA-G?Z{ReL)f29Tg!UB=T*vr6J5$eR;MKjE)m`{zb3qt?Ch}bFFFqnPs=Sw$uVC> zM(!$+kv@Ucb`9XObwk*SP#zl?+tCU%{N4LKY^>+=rPwL~L8kR)t)+>nY1?9>;Hstk zh8wh+Kh)397I27Q+1)mKkR2XoTL2y%Zu37rmO&s-$1iyw6L5x!gR&U=mb2G)vhuWeKEH9AB*0(mj@bnr7@wz3yoFU@`#460_E`p%uX2e&cp+l5}k)cp*)>+DK;T zqDw3A{y19*qF((q;r8@5pp_JTNZ3~G88YY*IO;`?PZ}(hURR&vrRNc1{YyeY;{kv8E)qk?Uc`1@X7M!Npr~fH3m;G! z^Ig(T$9z*8u_gI!(zUULX=-)$w-eVry_MiftNAM8$Cx`8R*0Q^@8A=!zHe^wOx)eT z_)5zWrH*h7sl2Ifb;!gqSDR*~oDaMfi!Z%(*yVe*>1#DNmeHb195^Wj571drF$`xs zm?-)0FoCF^q-J-)tl>lxpCRWSWX8B0I|)->T&Tym-U9& zZ;kqUW3-YJ^M!dlM`A)qA6s#@h3E`ftGbnPKNr~!gfzZufwMX z?#-WVU5reP->Y}7Jg5O)$Q|_S5jP0Ws-nTO z9|RYwuTM`^)FKEI%3yZ?$`qBHPo7y7Svn3@sk9b6Z9WXLE$@;&{lMX&^4@-n=esOI zwES*hvgtFDH7g&cZ?Q~=ZMUTXwwmHHf5Wq7a=@=uVRc%7l!SwwV`$7tsib1Q>rEBE zO;Hy-jbBD4IFgLNZ%+dS5C=qIanuEd7BUGmG`JNlYdAn=djuUVU|l-vXE>y(fF(yZ z1JBHNrUtL29n5!}+=yy=7B#^Q8>p*p3xNGHhD^Z)T1A7hzU{NYesB*RCbBye4#{;zmpIQK(|FXBO~! zBdI0yM#L9POKDhoO~kx8jB^qe}V?7t-)mhDua(!Nt0ceYcMrFxwNxmWI2f!jtG?U8|QCji{9DO zyR;po4ZU~wtU#5B$pg1$=xT+7x^%~Lv0gZy{5URJ+vcHntnZpND;00d@$RQfHl#~m zyK`Uw=cfK_*i~FmzeT6M+&6-c_VQZQ27TtR%IFJT48(%fv!e~Pr! z>{JUyG5}icPxFxur{_|c0n3I6P{*|a$R4}88W|gFiyfuO=Cbaq+M-I=I-NRBQ9QAS z_Y=m9{}WeiYPh(S>&vu%(<8as13!bFGt@f1Eb`djBg1;&=>9yrdP5CW)%ZJhZY7Ba zt<#_D)ksyMR@MU=%UJ!MAAk|>LPR%Mogz$$ie|}cAtN!V4Q2Q|X^(s^XEVZ!Z z$Ru7QVnp$Ob}K>ot>}^fYs=^gWvGh!cTa6m1(SIXvaNqtmjpJl{~mG^u;l(7uzn0i{Eu^WGLUxp@3#R0a{nQIfF3Pr4yL4jwgx!2KRg69IVOfv0BEO+D;?I; ze3HceiI27l6o6fKS(!Ss13LbH2Lg8=4tSLVr1Z5qV8F@hyu33B0?csqVm3cQ_i6rV zudGE5kB%~uLkj`!aSOH@7!y-jtZMfhAfc;t`wdM7P@^-5XML?iE}d1&U-eHtJdj;& zbTm4YRnJVH)w#Q9&0;KFkeobP9?{1;xZlC+L-SXakHP%_2`u!)s>BwsD2V94(FX!? zaK58*Nm)>yy&64!TH>kUO~*_k`C@YiK@AS8Z1BxiDp8Qg)h zx$Xc)DD<>?jVAH}ZwACPe+M61tt`g^5-wG(;@@%j#%{&lY%cf*kh+u?$4~uIK2CE5 z=^DCFOXw*C%`;Xtq}Y3~I6Vi}&2iG}m#NBNA*BxK5}RQ7UN9iV47hm-2&^gDC?b@f z>HvFJRyM=%QFAk!^~0Wo*liZ0@K`_vz3uW=DspkYI{W3CF?9On?}dEyiLtvCB^XD1 z?a3gxMATex%~(Nev0Yq?BQRh^=nFCLT$1wnhyWe@5aP~19)%VhU;XQ*t`8h*wENI6 zTtc*P4_WYB#|3S;hRG$lSxx9!?hxF+c6REZ_OY}+IY;s?Ftq#V5jRj#H6Q&bjZn}9 zTb)bpeIHl2Kk5h$flN!v`^;4_Uzh4dF%XN@N9s|UHlq0J1VFCkuNBd?cz5*-kbU9c zPx4d+2iC>`W=xl}T8lat?B<1@;w4; zx|sNp3~cPIYYriUR?!&-!KDGvLa&!4fAzXN|9E=sn>W)k-^vM%Ga7`ml_!WRUw*6# zuN96t?DNC0e{4ECJ)uK+gtpGziylzL9|+2MBrA$Ysh{H|%iF3t`hX>f_Z}6b&{~sA zjV>3Rp+m5$Mgl_Q*^1$kdUx6nme)eB&|15O5V_}fY~2}liW|)VsH{gg1`b7Dw*v4vLXo?i^xcwuk>#tp$XBeu zCU>{YwvleD*N~faYuZ1h#&go+mR<48{Zz`QikV)~Ko*v&zic~xthhM2o?kj~1=%mX zJnB>iLXgE_o1Dl|qyp;Cq<(n^dI#moqebUh2@nf2u%O$mS$6iPTn@U^et{F-#XjdI z$F9?$Mrso2g|Y;}eZ&935NLLk0Bcv4{fwdcMB07{>A0xw6V+Jhuh@u4Q- zp8{sA-3k`3c$mW^N)3N#`+2=E{K2P#I%<^8G6aOSDZSpa^R-W>e#G}LF7#5G$z#0f8GUK0`9lup;@Hf>dta#-OVD|3}RvCQjQiS`OvZtumXU%M=qT%4uD zW1SFlR$F6GJv-aog(PV)2a2yY%+6ULSMuG7EetHYcNoxey6aX}jRK~)H50z84b%md zcfAdvVL2gkD6r#m@Zd)R_6bIY4-`So*RMa-*ga&5o( zO&BsVrPS1T8YLofm&>6uQW$2d_DoaKY%aV=d_Xo_JvUR36FrRi^QPg>>DGF$Yf|Q8 z6;K-#Q72HO2!vu~Y=rr<_N$K%Rslrs`zTC7^QHKVPf{N4BWGDqwoy_}I?mEQR0q;0JlQMs`Vlp;{e5tf94<*w+BBymBsa$X% zZbdD7x!e)XNA|RVOLy0*=zj;O0Ny6pGj5wLflIR^c zuCjV_y!$A_THpb?1Bo8`*FcP2c(QR1u6p>WxHL2ovbSz_H^NlxR8?F%suLllJ~%;+ z1Ca0+P2n~2PekFWE0DWuSx4CTnY>me#tlj5j-a~gK3538g4>UtZQ9gPy%b~gs4$b? zSl?`jWCi{pFyp`G-@*xe-&i!L{8>BFj$zz|#6%?6n<5H6X|?MYjtLmVEeH{5`G;*5 z&sf7*gc8N#c`U)9<3!?{2<$bOM8YbgCV8GQ_piK(pM7#037sN0ho|{Z#bwhicGG~M zZNC)ulntN#KQNU6-2XRBW%XYyVJAF2+&VUvK(2Ekj^h{lyZDgAK#V_mej=ldSe$G~ z_|x9!Be{g--Ddl|fkMx!usOu{FVOB9yfwy+vKZArxIaPm6Ak0iL5|+IT`N$RGq@#` z6mUzt`5aK|@cnpic8ZbRnLvQ%Y1d_uXXz;lQ?bpe!N+O&&>V=0igU}|LC@X;?~lws=C@pIv$!VftXt)&{Dk*3d2 z9$9vqc3O--um8m=d9aqaCdG!`oc@V;3N;WA0B{2m5@HO^EH)R7}~iRWr(nsA>4!A{92!0vP6?#b*K87=LTXm zjdR*UdxSe^RJrcVpU9k^j-gzSeEB3Z`t7M2Vv44q>iGI0WAPE(?P~nPKuxIGqpaC$ z0pjtzT~R1|vu9@fU(Msfb*&-iAY4t3`Mtso)(IIRxb2K{Z33W;r;hJkr7x&p%p z)4M-nEK^wa9Y-=#;}yOLO7gMdu=N0v5f*fy;i*AjMmXu3`7J(;SHz;*z_3e`Qtxo$ zB}u+5PzAnoI_Ca~*2~?cUN|qe5}H*46nxC3g7l6g)hf3{u=09ybvqBpiRps}XtRH> zjFu;J^WiBxd)#S8YHQ&d_vTNcL!P;jw~Df^AI5qJq2TX^is)n5;OcxK$RCUJ!I-i` zhCkvi+-5lL@NxAvN$nUqO5M>(FD|OA-rXvpI=DPZYonvc&HAZVdwkawoF}J~QUB5# zcU#acywkB?cYFo6ORH7Ea_za*@kcympi)!{6M)wkRWeFW0=Oe9WJ58`pHfXyfHU_PL7o=sgDC&nwz zzxft({hRn7EdiI#aN05^-E_BM=5ia6%J~8sXl#jbj5P~A5HqZNe*BD38?qe%M9GBl zU(tcQ84@P`$5~Qpt`BSV#n!)ve)hzI9z%jyfcaJz6|ESITTD<71u0&NR&4}2N0`y0s$daCf?i|u+)x~TeQJDX8p807Jt-}FxV_~=YOkH@2HqM(}6I!KJ0%)-iZJc3sHISi+Tt?9}g@1AH~xDo%f+ATJ<2nLZ6mj&v|$M32Yye zx4rC`SiYVE3Nrl(?fF$d8UBgAfFArEhwSC(@{*Dt)x#Y9a5Mk^qxwQAWhoASm7hOd z&^La_>&473@cRP3v&IkyJz)G8hW%f(y>(bsU$`!cAcCZHH;71ggGftBNQdN-jwPMa z(v83Z6a+*Xq`MXk0@9s}?#?q8{`T*ld!BuseeXWcS$`NS<`{F#Ilp+ncf8-%cWK*9 z3w6Pr_BP+9+}ru!+qs`?_vn}BI(z;_D%tWV9R*|mMM3lc6l67`e+qwhsuKu}?5Kc< zh*PY{;2(r;wR0fvGejs^S{>=%4K;x^{?0lM)>vh4)zy^%k8CSuW%ZLYL_0#oUQZI4 zfuVlta@@m3^BPx_tMfkyJj-0`Yip62z6gNktiR-wlYBsL7GL}xp`oE6l3n5BHy|B4 zh1;-<{wd{XAk>abGk|=m_|i<9wgZ$OVK$4A1Uj=^Z#R!fIFlK*n0BWMGU+&5E>^3g z=i@q$t;b*>(D9AGjuaw?zaHg1oju5&S{P9OxL++O?Cr7e;o>+D%WykoKRb4JN_8yx zdn1Gn9-SU{O_Yc~SFaA_nCmq=Y6JcQNb5q`hJ)(X7~6Hh!Ogx08Kc>7IZq1;{5SgR zJW!o2!BV_+5#F>ve%=j7eb?>|j#wy&YF~~g^;y1io|jo-h^KW`fcHT2Khap;m~Ex3 zc8Z9y2elYjYag`SviMw6e*&a3dB7Y=Cn4_d^`Cjp8}JkKgA@Sm(Y$BB0N8`JGP;+ z3|#jZ)MoTvaVL0P2wmnpbKS*Piw{`>XZb;}(FOF3TGpe_RExy+Tb9s>zd*B$K(QGj z#8mA*K^xux?gBzm7>(S0m~EqiLSK+rN*OO#O2Y@s+V?hu1|6G>^n7B&yV-Pwyr2jr z+v2aYl(rK2?&tFZD|Lx+X`~orh)PXwv^O`EX8Wgk_Hd+V~(_s1Q*2cG6~caz9bn~&zmUTjC-;+{$7G@FV0oNci{ zg~WS&e4yabOxLsWDZ7~+0FGH(7bwn1Zc-H1YQL;=!={*RfbxB3x4xa;`EzbD=FcM; z;z3Td|G*Q>JNZ8XiUfkZ0SZ;E_eYIk{$5sJIC30itH*AqU0(N9qmpop&^GVKbnSc1vz|ur|Hf3|CQ&OX=(5Iy$xs+;mF( zM2fGmZ)KrHlKfon&6XdK_JVEl^^z+Ahd_{Eb>90jpkPrgf zd)w{_3waW3@n0^AFnfF;{Zor;}vugqmp3SQSwC_J;zb z7FI0NimJxZ-FE$bX1c7FrV`L`_Ln+pOt|#6PE3(qy%*Kz<6j7)1J*mg03J_7R!z;A zmh*S^G-;_rnl2(|;AWCCS|gJ7idYGo{cnR-)N|>20Otek)TudI%mm=F7$E)Gv!r6} z3V!Z^7OvUcYrkKZxAFDxQYeXjUF002FVi!4ZRj?R3cq+U#rfK@&W?|HqN(%f`iXkw zrn67Qw}d!n>q(6rg(D=LLXT79nb&<;sQb+3$C`!|&2Ea5e5fX+>0bN1?Z?HOx>x-n+7) zqR-85H6cBQ<-AS2MTO?Yl1oaRTAmoyMpEEP1Jz#94+E?MQm?~OgBtawqWj*Db~e2L zs_^FY{LhiTJDO&lHFe@y3QB#e%5D=0ds_v*CY@8QC?|Ou6Ek(itqg}4Z^RD_&9`CZ zQb6Kqq%2&$%{?k;^+X7$&q8;K3-|!1mPI6_qa*w08Id}jHwx#GF1IXN^Gcxy`q=o) znd#yp$IEkHNpo{#b5AS>J_};PmcGYsr`ehO&xk{-Tx_?!PhvL6zI^l+c|@tai%H5G zATdt66+y8FNLH9(2b#)f#7V^%$7hVNw%P)2rvXqQcCDBwHJ#BkbwzoRlH<;-XQarV zT)a}7xlm*wV8LbI)3>9>U7x6zY4)kEbW{>u>!8uD1H#(XQax(s^Pb{E6v3}jKUn!I4GEkb$7hPSuH!+opE_;|-bR2VgN4kh zc5Sxd6rNNa7V70Q7M~wa>XknwI8GKzT$KmW6I$xb|0VDUkr!)le?FsTirfhGcscWh zOq_=+=H&=^Yx3PB4(Hh`=G#5|>knaN=#|cEM65e zxyJ~vR4h%}9YdVd^c7CDvAcWey{=L4eWmY07&=Q`i`FH%#{10z`H^VOwf_afD#-9dTaPv=R?J|9a?EYCmnXNIf4&mGCEdq6{>T2qaO=Obqs*OH=r% z5HJ(-3?0DTsxFB|=&`Jos3`A@0j82EbK+STch+cd&si~pT@r=QfjFUdHj6dX&@eBT^1z#IV zozLF(tmooTJbL>1ppNtfO!kLlFkC#~4LS>djK0p-h}^d!bg*ASvTNuS{cFe?TGs8s zl}ls3)Z!*d9y=l5F9h^Hs+7nx0BQvDyTmI9C=C-R_XNFWDlJ4lWTqllWd6yX8j{=qVv-nq3!J;C+Ii z$L+i(e7Tw(E%5PYQD*_r%M2UYh@8_!0FZ{+yt08SzkKCOl31t1_feCY`@CzTf6p1D zSEX)f)RDKnkT;3;Oe&N&I&%AXlOQ&Nw77RK`Ow?Tx7+=LV_XaN68Lj6tp=tp& zfMUi({5=utTSG}>N9tI|;Job!xWt7CueCn#WK4y~)fiyD8H*@5LY5$jO+xEM7xj%C zJoYw_Q=$Fz$`hgS1@BuON1szFd8OZ)nG+yLMT&TL4c-8N#bk#nM}Nv<)sV@J6{G)& zBsmIyEbLtV<;Fk=(`^OsC>Yy=Ia*dfSc{aU1w@$jznz<%()|C-jIm`dMh4o!Fd~M-fxM7yi*y_zB7;Xo~%481wr)8o#x(hH@|sOe`+nS{K1p>6d)Wax94YVymTWmYMiPO^neBhAL(Zl;i;<+7$3zK$r7wR0Q~W$&P@M^XoVvBUe6! zT^*mbO4;03Yar_vAbNGY^m`m4z>j-q{9k~iJo4%q_bXHfdhIkS$};zyu@q61Lsx2m z_9dS+Y*3snfimfaG+HvS%e>EUD`ZM2xK?QWH>th+ilFOtuR(dnOIC$1+<;#ruzFqr zD5Y@F3jAREfj_xNJ_sjjN|13C_OHDwue*{i$bDO@PewRPQa5wJ0t7X7mCLgXy%6Kw z%9y!9M~wCyB8I&c9p2J$Y=TVP+P0=#zw3#~s@Z0IzgzFKoim9df!jjGZ(Iw96;3tf z8G(Tuz34R6UlGG|c3a?_)S6#|>bJIHMn0$PVQ6Bof~*w?${^(x#G9a(P>Dgfd*+H= z8IiI15|VxDSCo`3d@QI7^U+I35;Vw?pgwXoz84p}3#OB9&&2B%dZ{Wu6biE4rLC}m% zOS7&+5rdR`s0YoJ`zokLYQ%_E*t{B+Vh4EmW!(QQ4)f|CM$79^!-2j&GI+8-3!AiI zb#t$*@GslodDxaL(B~~xUIo7)5`h{p#NLhzh{RxNX@ER0D2H*_^52rTM`JD&EG~dXqC| z_`>9Cu%7o{T6t#^)sI1=RzROA>d6WpCg?@K;UJi5&(&rn7Dv&b;mdWL=?Ryk*>;m9B)UCcy`tP*QpxxVTS)eF0$-50iJvwY*zCgOc9>x7N_OH zha<`xaJ{U1-dJ}N3xn0;6&2IT8?j7h#TMIkZ{8%xx;r=S$z%2Mx!d>{3o}S@p6IR+?xLP_ zhM>K1fjoNCqay-H(y^;A|B9`D;Pk^6m%_2fe+I~70ZEQOle5Kexe}jUfLzWO(|Go7 zUGa}>DZ;midO=EsT?w>v;<`FGr{1i@Co!ja;T1g1y8^PE{AxhfO|ZFIt5FIX`by6C z^G?5U3kR1I(D|pez2B(u(~fxsrl;a)Wx;);NVs6LmeKwe?2FJd>X^W5!{tcVgtK?y znJbqNOco{n9p%55oTm8g9PVtYBnw;}!W7)az+%<|aeJe=pke{NZP3PtvSPEEL8fix z4dh$~^+Zy)6b{!}@vBmQk^T!6jB=Ln(Wqlmg3D7fcTOII!~*1Rr!YHIdozaq@F@_3 z%7L{X)Xlp0q}e27YTU1wuZtdl4aITZd_Q!5NWy`Q3CLhHJJS`sIWeI&pw&eG z`*WS?j$vEr1gy^sDzqcQ34df4)chwMKRqKi%gp>aP~dH`D?#g16LUXEZsS`_c)_L; z{mto^)Nsmpe`KK6U{HvEYCf=4P0RgIgX2$U~k*=UhHZo3Q&<*OXvj?b^*@ z@y{dtyA0)F-_hlP)bhrv3(^FD1(7)0&ddl{&JRrkvUJl_(J=+5`Nvk_VzaMRc{>b* zJMVZ{57J%t=S1$Hgn5afr(nARJ#$ZjHwZVV*cKL5wQ5e_b`nViJSC;z-0;Owaa1ZJ zxM+u%@MISX6>Q+|GYr6U<2mhd2CT%+obB=9E{SUU-2NxXqoo(GUfp<$aH{azkBNuX z)X?MFXTHut?rk0|@+y4NwC6u@_Tte2%^<1pPSsoOS*ephL1y$A&s(^Hu5+WQ5B~VL zc$^vdb-C;^u#)*RMb8N7uJ&Msuju2I_42KB%!bQ9 z`2Ih!r|VfK=DLnx8B0Bx9qO6Q!Lac?7Y~o~mkj6C)>FC!ohRlcN9$Wg96i3`)|rNb zY%94$+bg_t3Pzzn^|p%MdW4hN)F1Sq4qI0 zOgmBYqI^ES&wK;x!#QHB%}MQ)YBk$swTj_vbg*RLamNCf6TM&_dR{2M(6eDgBZ|x3261ci?w2+ z*+%fxZVs@Y1^?N0A@`R+g`6nP>f%mOcpQM00Fu$kn{Q4=TdV$OgN(puRKf338q|LH z+6wIUjcxnnJew0OdN+nFA`D`x|8s2unsjvuCBHRs`^WGfK#EP>SUdk>u=S(X@GW*8 z)r&EYpt)lCRWjx388HBZ3%(6g$dt&8J6W8=K4+zAm~_a$r}!(nT#w1vG6$daC(|nh zv%H<>;2u)!p)TUt=c+%jU+>Pa&>u-U8v!HzqwG0%2>ISDb+((gD^W0don#{bvjY?w zk<^*Beq_comZ-uP?NBR@x-vjW-m&vH?0w#1>{!znlz z4tE#+SMHTQ(b!t!rt*sFRr1Po!)g-lX;V6|TjB+F;8Dq%I0~l~gC0iL`mQ=;NhUa% zjcA+PJi0-Rj&8^JVj7IMhw|89U?cF3C*9Vuo)t-k+vkM3#v#M+iz7WY=642;)If>p zP|mdr)o+G-=ffzEBU4+ct#O>8Sgt^e@YH7onm`NbzgPw>P^w5Sn`Nl;lmbaYxy*;F z|BEd`V+e9{$-E5=&O$>ouMd&SD7i*PwUwuGOS+k+_#A(>$Rhyaj)bDdT zujt@cvtn92b&-KdOG$b4d?qEsDcijv6m~#0wMScWSgPg`KtZ0V+Ep^^N3eS1q7IZd zIx}v0q@t-Y4$hHoJV)z^-gDusie%YRP00N*%bgdA`&w+%PaY@dB!?43p+t@$Z)W8| z2p*~U!cB+6-7Z&0_Xxadw*Fm((GqHwrTA1)sX6W9S!lzlU7THGn&76T6zO#x8or%$ zv1ta~FGFidVdt2l;`iz`{?Y(e)g(*IHsBIWy`rJd9`#J?rk0s{?Z~_=y|pZgnqPn~ z@@X|T!V?a11X#C;+O}MQmiEV$EHu+E6OAS&M?ldmHIl zoEwv414B~eFxj0@^}Jq=F;kgU)Y%PrSV&+zZH+5p$TES`9-WZhQ((;E3?E11WQE6Q&8*|m55)S zR<4)3o3g!wHWecV>BVlp8*!pk4r)j&j-3gB5>9j!(~SiNMVq+^*xaJVamnBgGGQ%| z9@$hg@1avIaLY|U;g_@j`y1NA0b!F-W~SYoH`O3SblYaskZR(U0$x>by4TfV7rDsP zVR8Sue^2j<22Meg3Hx0fd0h+n6lMigTN2N!e{g|(+Oh5-?<5fVuCH(P}MZt5`-4_Au(;MUdt8_xOp;*06gYiKmh~QvfIB=00g-LWc#JDW|)G<}eVvClY zcM}QjimQ%Y4kV!zW*4R!GIcAAg$e2|$acY?ZayVlw{GIo8?U2PQV-ntR2X(nr`<2} z|5!P3Wg@hL7N)gOG8%0|eL|Vu9B@om6ohz{~nFLDnqMRg089!qizdHogzIpevA5DZ3N%-ZC z?)dwbiOcXGt6mm2Q}`ww4)P@2ok#S6?|YD{;>8Ac#xNOWY+6bddBye*`>4B+qi%u0A9t3&dIo?xGO9%jyJo$EKF*$ghepA`8N#fGYLUfFgW&IVW9F`9Wr7PFm?uPy z(5o4LGDi?R{GLBS0%w?r!j6|!=f6LkdJO@5{y3S7Fjz=tW@cGU*YVi)8L!7+k^cD! zl0qh%fN>kl|)cXq*vCopuIHOipk`nT|xN3Ae{cb=pOzTn5} z;IT;$S&kRK-wfoBzOwg!65_CT!L&gov43SnIww>325d zSsdA|S0NWA@}?E4{}YwQ2WlgeX0vmBg7l_n@M_US?D{(@*(*6(^?kXPovp7{C~3_? zv(v^ONx^X;RX$4AMm1L@uH>eauKenTQ=fb1U3mL+i#q6LxQV-R$t>k#~by`-~qkJ6XIn#n6-Q(`o#O zpl2Y#y<%P-A5Q-1xAp|verXbLp)AJrU!an<7p+Xc2x{dW9C{9XV_&567+tHh@1WNC zjHGJ!TJ0Cufav#SNI9`?!Ln@s<7{jH-_I=oNCVgJLC|hYDe&nAeL96 zN+$_kS#?zIQbBY3#SE&@1+wf-Q+tPF>AC$v+rimP2C+bf{K6-s5WpA`O9mGCm5|AB zbAF&QqAIT+66aec4!JbE_I5L3J^AfG<__2`;-e|v@pOmnh2QU8QS`nlv=X*hR6e44 z9D;DtWrN6pM?kUs0{h92 zsE2Hf!Wl-DU9o8eyO;WF+>}%i{Fyt}s53w^=EsyG1<~@4>TwgK*OKH$X_DkPgX9Du zBpe}u2%1|nkM%gB6~Mt>u*zR}Hje4l%oA2-?CadHGAOl<&f-qR;tPwRb8wH)oec$S z7JxmZB9%_i>YaAYMXEpVkWXxz>vP92ie&7voo6I9_z?)QA8VtWwzn&hi;t)taK2e7 z<1K<2-MWzql=KJ?)HQOc;8A9_E;cMwVrm2tkb@q}51Mkv$-d7QT)a5;?jav)dL;*V z_R|Z-D4+NwZm`3nl4`OYk%e$;vr(Fr+K*3Qw^8C_Zum**ZMb|%O!5epit-!Fuq6C} z_kB#{#~ng8#D(mt?0LB982cw~Zzm84EaMMys5#Ih zh1BNT&df_eF}~)S@$>SIY3xj?NS>g!A^3{7H1julK6;KPF-SLkwnWyyvS$%mIqB(F zz)ka6(HT}_Oh2$8NYZluF(5sjQTP6Ql)c-uPM^_+Af(I~N{%Sig%gCCM$u1mOG6*^ z0#8Fzz(2-apH`JTr-dQ{OTBL4NvxwAhE$bt#W?Ak*Poji9#v==5wSbzBU*TJA{WOh zS>rIgD_SD3CP^$lZ{rA-@*l86Qupl-x&4!p1xriMqvD}f zS}(wvo~(V`Mp^61vhHfF`mi6_6+@HBGlAQhmLe{o$L_u#m9HboUQIfFS;i_WY8|?6 zwCT7lGjC9|@cdNcfE>;xPUE%tyc|sVX>6Wu+BjbU0_$Ecqo3W*tN_d~VN$=kp>uk- zTS^}8*-^tbrLb(6a045mgNhZeVDTBHdX8{iGhid0$4Bm6e*tlRWCCJ1N#0Br*q@gD zXY(@^zpy#^y+gPcZqo6T(kpj?9#Vs|R<61Dq ziDRUclEu~l-P0}e!Vj`?v^_M^woe9T;g3{CC**`>ytKP(I~_<=R&p%3-ss9;hw*|daft$MoeXt5cNwB;@DxyZ$Cr* z-;g~HF~Qo5PRS+*`^Xi?4pr&XHM3dBEW`q%^t_GPms$D z!M7j4l_4x%^p57xPu<0kNiRlr4(wYVGFW<<%pSgr5#{{2zqQO#vBn#L!*2;eLw%E6 z)EPzl{D&i{Y5wU@=FM=d_ z^A(Jq2UN1S-f^{>FgXN|jpsKT(j8=ESM<=mxb1ek8!X;N;7!6YBlWL>}Wa>hV5`9#Y-TIrRuo)ERPJ5{gUY87t?pI z9LOd8DY6Tz!rCVl+e4$V4$&N=nEH1)m3N&LeOZ6_|5$Yy@fpJc8F;o9J8#*fz1`^~ z(Vtmy9C$|{`{`M5&3t%e#GCq*AC8WJChg-(Ooa(PBY--V$jbruqIAeafTz`=Oc(5T zu&1t*=eD;&ghU;oo|e6JJz&$B(aSGwng>?A-$cj$f`q8k*yk|IQSemNJa?hUf6n4X z-`;M#EgO@-8Rq~|cLdyLx9HCe(%t@?BLPa9LAnl}Q&e+n zCKg^CN?2VO4`uzRF!7#{8fMNQQ*TT0(76c-`7TzRtr{ak zi~TR@?iA^pIX?W#C`8vb>&NrFLNl?-#nyt>H4!s z9WNePJdokHZo1%P@`?pXl#SriY#9DoOBdE}$y3({Vbwm7jirs)D@ozUY=EVh9 z)K(CdnnxCPyNU4j3aO=Kn`Ujiium1^0LCFQ>$(0F-1O{XoqoqCC@D%gx#xM!lX*ym zi?Dfic~*OjQ>VcQ*v?jy>`O4Nxl_|qYYOKtpTl@e3s|f%s{!-RnZUV+ZB2ZbEtD~> zcdEq67aTWhp~R-)y`~@Ssc;T+(RxRYtd4j%Jm?=I1(jNM9*A(lEmUUacC0E^Cm( z^>kIueO9V%w>ZBAy@qkDHltz(KdJRI{TP1Pw;lX|eMsy3_F{5_4u)PNpMxt$n8P;Os$|hZZ&FIX;w#buRvyiFqvVfWhVI{1 zdo~pmI-z9V?jm4Pz;qF87QBAfVaI@Z#sy*s;CZ(YncKE88|$nlxl16O>m)d89no1c z8XKzH0UA_FBUiU;bltOU*OhAZA(K*m-b3(e4oh8o5%sfr{V%s#=Ql;B88xO#TkHPW zMe2U(X(H}(im*Dpp#?Dk8L+UCo)x8QwWn^GX~^2_IF2UF-9SAF_8nANkw1=HlgHr7 zBQ4Npod+W7Vn+^++qt?CoglCOIO!^!`7L?e)2TC{{-ePXT2)dMHFsC-UPX=b>NxK} zrE{eDx$J?^mUa6mnc$wGUh3dtLo$Reg@7EJto1$CD`U3KFA$n?Q@Do@`3N$Kvg|Ha z9iBL*h3q@xP3gp}U^tRxxD*~cr)Szs@GMkiS1pnncg{_yKlOCK+pLVDz8ID`*ZuPy zF`BoUV(Q?rV3&b4Nc8$B!{kPz&G0;`cdl$Zk)`C=O$1eOItJq2IBX zSU;mKm>CGH`UP38k1nc&qN>%D$RF!k2gUF12riB6Rz{1`@NFK_>hH3L$Ms3!+UzCUn~f(t$vpq$ z$*Wc$M7GP+6Qb)V=OtBg9e{I$$B()S3h0p_GA|)=z6?>xm8mDXx^-d$nru-<8!g|i zKCac}@;>Cc6DSi2K%qah$zyIpt$KWx6#Z}Z?U9v~M3{*If4@oQ{|5r#5kdG0`xG#E zI5>_s%@@mjOKLR)n-YVW)>&Hn2&QF!F@S8~-@sd3ghnxKMRM3qXEsQmK6yuWKFpmz zqD9PG(DUq9*@ZuVDR{(;x-feO^g~VH2aP3@S@5w?p4pD*B>L{aJQBc@A=*C0jrm3L zimc#a>cyVxF?SHr(N`-|+|Zxs@ZpWOl;5qu_DlR87Ka}nEa!W3dz&x(&bDw17l218 zH#C$O1_lOBsCWW>BwDA<-oTGktkCFz@_Pth@m@mmgPq;FnNm)feDdYM)e;ixQ+@`L zzL|GEtIvGz90JO;zsr*GakXl%cG^`q6*m0Qo~3(ywy7Ylj_Q5&SP*Hi(>8<+er_Y+ zOUFBXJkSuI!?fM*xQ3aE54LDkA%nQR@V9Tq5V5&erl#3tk$P=Pc%{0mtG=~!+Rl$Q zMQZIH$>#>FiX1#9o2?gOj6dxAh{#t$pVzVH9jdS@lHv6{{`;r5S2~XZ@}7f5JlXmZ z%W}fK1ZS&qV2f}hru%gH2y6C2D}ky_SE~_25oiECDS)nWS7VBnqSxKbV zsB!CGbo)@0>CH`OnW`gBY3!S+vJpRCZsNyJ<`vyAapQcCa^jntZ6(c|`lj z!mlfwhqG59kK>XmJo2qm9Z92$bYB0wrS3GQlM|?mB_HXDaCJ6gWCyW7O`#l(qZ@VK z@ts$(iZJDwG&F1xzV}29TDTW2fK8{Xf5l6=p8=)FvnlxA;hH~H(7EkLbrHK9Dr7!x zcv~BHg`7gnYaxvkP6oxEp6K$4h$chSzJ8?BNzrNWXsIwJMbFfEW%b+8 z@b)s`W^{!7427ZMfC#%inc>efr5pP9?@6DwMo!Y1%Axs{e#Z&a>1EO=ZTzXsKRIPo zp5`NA5&3XoL%YpggQ$?rOa>D;AAiAhX93{>N>TB+7>+%gMe6a9y-m;a8qmQpc+cZ` zN@JHXnY#;q<}9_$6!sJZ*OVzT_vKu;QMbpBpw@WPFQFVwnSXw6O!_@4ti|VRr~&kD zHB5N!Jz%vudhmFmFX4|LPOQT6{cpPF_u~d61|Fg(-Rz-J6m~n=rjO3!@fYMa>-)5? zz8_aMJ@!y@1D>oe~%etSoNmF(S@=R4I#)_koLQnD->)X@PYx!!m?>5ca}&%aGc zIw4WeNDu9Wb=cy1gp}!VxOzi?i2}8}PM>__j>_+DcNWFSule6YMc!*IJ=)=nPZ2Fo zy3L%Ks%`c!4eY_d7U?b?icIfGB%~15Z~cpN78Cm-#0!2oTu`!Db(JC8X7B0$PWb}DQo_nufm1D{3CW=lu5J(#ji0ymzNwkaJL%0S5O9+FccA8eD)DKx1`rYO@K4&DLd1RNC!w}#TRcru z>T-vBuT2x>qI2fr9_)XyuTP4&&o74D@a+%b=lF5=IZ)Bg>KA{JR{i^%*C<$xKVY+A z7pdFKvsWa4&A8W}wa6^AYNxs5H3u>P&b(FpcCtAdZPTAIq?2lwN`jk<-wZD5O?pX zc|4Wu-O`Y#=Z(PfT&a3^lWT@i*X3b<=8ev-&TwSE$ti5eob`sfEWPf?Fz~)H2>9~KJlogd=sBYk6OUR~^@+>5-NE+QWy71T zeV-d-ZQfgQ><)qL)NjSm%mtfMkTZB2R_>_>wBiLoP^Wo!nak_LK`M{3$?U%#uL!{4 z$(h9$$y;|xBWJ_(Ww+jVlx;N57v2a<(Px4T&NDxGJ4Oi%)^9W#;!o<9m=4R{HB{AC z?x8xYmNZfr!77!x9TQGXb|r|#cSY`P&$i|UoOgN=#c6SeDn9;@%^AqN_bA~H7dy$b zd&PYpH~qS>V#|guf@=PXx5akB(n4dxR}=2Be79 zm-|9>`{w%iw%a|A*VrFj*CzsC=;dk3csqr;&y7`{xa^HyD8MN zwC}gd64wJ{>^5jyc%jjJXYTGml|ny+k{Hm$n~ENB64%U0Uzz`Qa0i`N^vxsE+ZmX> z4zM6ZDo`5&>&1v$-%qA(rrpxi9LLV9S`Jd*jDr8%oQPD{zCK!8#8zmYP_(I_s%MT& z#44+Xn4U%tmI*+kfs03UEGpw`08P_#d#`~GV!jm_$Gk4P)Dt(6{pCP*(9%uVR&aB< zUtt*Xa2Z3Q)Q%#@ZWC>N*>VQiZGn6fIYdatq96>iRyny-)TQx`+?mQV2QXv$vaj)m z)Q?BOg>{udTZq1tg7a+yoNv|tgiC8q&aHOc_+Eg=|Fk9CvCfhs^IqRxCStnG++3LI zz(zmLZJUdZPZ(llj|{3F$AeiY(d( zRo8>uh2xp`7is67I?lhND`E#&xT+n7x(UycuMUH>(BWq85N@F+a3*Aw&zt7b%%aod zh9KNL9c3~EzLImuKD0FxeICUnjTrjh+^_B}L3w5Yb6vNW1C-(>j2WQBE>hizV723g zO{IR>yFxz08AsnHfw9-i1FYXqj$wW6!5;82Ho3qW5Km0o)tbjYSXQ_qJwMJM-!U`O zignh;juP#?hjlHyq&f41=};i9An9tK&skjkxjal35`Pmdxie{TmrP=Z?x+ZBBm^c= zU6zGZaDGvdNw{~N(S_ALh?!Hx<6eFGYps-OsXcWQ+!1X=(q00$j~`Qtn#6lHqaw58 zrdmOi>PaO8@SAvcdC221S>3@NXiF&Skg<<)RdGhw1-8k&%p$r*O4D&z5S-7PZ;M4& zRM_Jry>$bXP(ETjwBb`>-AwmYb7J|;_|Hc|(0A(tRleb-jKv!~>-5;RML&)OEOB&m zM*fXohQyfKg3qrHL zqp|_ai>c$l-S1qm-c5`@`uz90K0)#M^qEf(shIVU>9<|?5@b;{Ir!pqRDax7eT9kX za(8%M@{~IeSZuFoZ!d7MP zGzD@E>}*5pI-5x|*zdZnb$dKi3@Hg1`aV!QE7aT-TW!JVj9+x#eJu9301YUbSaR>% z3eLR;wY0SI@J!|drx(v?6|p<*6ooPF9<@^|YZYnaNwHDP{GO|)6$%K&%RZ){%c7aj z{#J}5CrJh6Dk+J)t(lh{Q_Z4HU!$??mk;j!`Aw>_R*Y!kTHuZO>RZ_986%T7m)n`S zbEJhX)8rS0#N!X9DJ!JWYCUhWwp>du3#N;`bD`&>$_u-R&Q~eF1hu;M$GkHknRL+W zaiojs?p-Ro{N;Pi#}&sKMlV&YS092&J1JHoQKxNwpXFWFTYvw_b0r)klpt=0w*uD+ zXT&p==8&^q)o2cL3|UGM$ugjU~?DJEygjK4PP-wD%r+xzA|Z*RJ#iJ%M;W+5#>ah>G(^^|SBqWSd^#nV3oHm!VB zjehP+4l`@V&L_a6le;De90!jHjGNk5#02+M;1y8K=w>nsmRBQ=+{yC+Ge% zQ%E5#%zO%!P`1WFzP6QO$g9-xoqcB@wty@i?*iD0w`*TA$hUOtPA?jYq`j&*)BKBX zf}X*rh*OJk6Ve&kp$noBatQT+)OxBS%2Xm+NK;mYdeC!kdsu$#3jtPHd3Y9PObDWu>vP^&7S4&>f;>p z{%72ehnVF~fx)0Z5~@S@SkPTzF#iNj?(K--O-C^z5Z8Hm!sp z1Y&<)--ty5J|~WMihLWoc!@bHW1mCL=%f>KVv@ghptTzgyALk;Z+7@6j{h zFe=q%6>E+Bp~R#B(!%lR(IbeEPekN?gG@6uH^P3AUgzc$GRbUNQV;xxyX7M=T_@E+ zo=E}2QK34oiy8Y5rDLP-3%Yb&!>H9cl$4an3k0OpP3gw#)Pa9J_8W8R&1QuEG`3F` zfWX+~Sy7ze6P|1 zbDA3sR?`~1_^ggFd3&1tH;<0B1Kxz691wL%0uWWK-3;&V<{#6H-OuwMvUMW zo%0)jDx><(aVRB$?+Wp}pbeV=&G&6SsV{qorW?X(?57uW6$S5kGsO*hTm&C(Oo zGP&qn*+&L-2{Rx^hXp%j4J}dtG%Nl=%&iz@V=Iopl}WqoS%+tL%iN1?TvV`z;%fd3 zM=&9bE=0&nr-*Rnkm$WhTh{$@XGlCJ#buzDZ)3!}DTZhK!2+hE;e2U9%>(O+(w5M$ zK3cmy^oFDHJ~LwGX*shq?rrz&6l5qGu*$WMt@HTsa3}rq`2)`bKE!Ribk%V1tZcjJQ?&RjoM{AIb_p7|2B0p!@}*C*J&p`| z*d%)nX?^%5ej60T?fYJz@+zRu=7|J+W2!5{Y8V*P-Lzy0WnYO2*$S%M(Wkt?d(RHK zPBky=DRIuogN$%!YYj|A^LS_E|E(TE<$d_F!Ixzs$nY!?&01%zr zcc1pVpS@}OONP}J<|Y;3dsJ3ZUz6i*TDB<@xPh&&T^Q-w}QL0hVoc?~s8Qsn1j<{Q|RfP){mw5VEPrL7^KQaOF zpE{7ip@N&ol3ee&h@9qnK;cWumR})BG0R)eZ4fG_u!W{QTrv;9lo=!vQ#06ciGs<6 zvRX&JMm@`yBK6#bgXWh{zBWO2w=-8W0Sa)u5zI7NekDT~?C!jzu&U!X5@}}eA)z`Q z%rqIsK6!cBg;quDGz#rcgaiIJlK+^E_pAKJ+LDk5>qE zK5ktf2kV`ci#Cs6Q~TYb2z-1V6Iht+e$@JLd3v9+kT1*5sIAx8cXhx#9u;N7+~(sW z1JPu_At1c9lU<smDF<9?NriLl_&r^q--7lIERblb`C# z7Rjt2l9}sNFEFxb@)RqVP=C731rw5y=7t%%(Gz@S3LzpaS{$=o3tVXOODr&YZ{b&l zqj1j*pAyiE~X3YaR^74Xr=dF}ztrR9nWCuemiQ6hGx|(2^ijHGM?e6~oCDT>6Ix zSL7V?!%NUaFu~3BwzRf~G=~>U3zLltDryup>WlezQKIiLNTP?Hvmp4(46gJ@8_c#& z8orvpGG|%vdUhrAj32F6c^U!Fm@{f=j05~XI{ON!sNQvbIut}eK^j3y>4pJD1qG!P zl#pgfN$Ca^38g_gL`tL?>Fx%lyF*E7hM2kEfWLFjJ?FRX|Nie@3)aBed*+*OfAPG} z`#kSv9JSzp+=Y2&XLK!jWo3%X;S<|G|R$N&L{2&9*%lKjLybKRo_&qWt*|C&L}Aw;ak~#W4;4@clclWvN?l3e?7O zL72mldS;y?-NiYz=y7^mzx4$g3OIfGm!BKh;`9s3zE652FE8(ou5l%P z$)9z2`zLJ7#|PY~G~g-w0^=Wdl6-vP^~IN5=p&e}=wpQRe;Z8xB|9Ze0j$;ewM*MsU8Jc@g${AwNaKIkFQdMb|HXj0m0#ej?ba>D&*}x!gS3$O z{L2JHiy>8;riQDBRD9y$@0(5l9NH7tJx3gNm-+qmfe`BhBqLlaoJQlWKI5x2Yr_+N zF-zAiVkW;0oyWJfB%GJ*+E(o2yo2{ zhhTY-2Voq|IyPlm;E4lt*(Jlt4ybb-ZaUlcrLueXSX)^3^Rk@M{TPEP&W`oERo-YlN>gehRqpuhGBE{?O&Hw@jaJ@VQAqpr{)@|AZ`9Vd9?L z*Zm)hdD!waJq%)TbCCdukjibFf~;RW@4VI4L~0f_ML#2m-UlpeATU3*Xbjz~`~F&5 zYg4H%1!NZymJ_mx5>FR~^Z^5qsZW{MGCpHJbBy^tko0-Ft59 zSA{%;Ri1>qZS=EABO>!>=8u&fnEfXh?Rg`!rg}m)7%<9Fllu0jwyR1P`s0dcQ-o#6 z>@r2RLS?;aZ|54wsGqMNDIJ8?2SlzesHuH)c5u~dfY{$TcxkOn^LUXzy0$!gK9kgl z^F*@CMAxix*OCG$oS;sTL3M{a<&nJWQqMl80>7Gekc$ z9=In#TGiE{SDY<@ z8xOA1nKSWz*YKix@bD@dSeggtmWT8-LtD`*7V1!fp3!&##0 z5Q#rlWlA}74b_xW4GS^vc)P1>_~TB+W`Ch;o$09bHhxbb%~ zH6F#*h#2K3owpjX>s4Z#1nzWoXrJq_dGI?rJg|}{WR~^Ygtjil$}HDOG$#5YaWE9w zNQx03vpP76stQVY3*w)ah13t`gm>l@!1scc&Fu8zw9Q3!z8Rr+!tmrTS_2U}39?l0 ze9OrbCIT0R_855EH9UTBI=Qc<+_86E>A>&k?4BR%qX~=`ONh%gc3pn>I4M=YV(yX? zrjVY^96}b}-surmMiMI*pYWq$P>-3vthZ8L+=TFgpJL1^Pd!iQ;##bEOqYUkYa-Axd4$DSvLt`T5tzm{PGg!$w z--60MBqVO>{n=q2R`peIK~)|qtlJ(EY%WoVeCI2vAT69odvunnyx`@=|N5F6| zI+!eOz*#GbDG(b;c2D&crdEg1c3rp0U=giX#c!z|Ztn2%C|pjjIRljwdZVT_n*m=c zd%eOG&Nlkk?&>JB(6>qkaOu0YIQKBl6k{Cx|(gwcp6+HW*HZ5NQ({3h4v4KHc*o&ZH(-FNGrKcMKPK+q}SyNqC& z9_{-k9z^#H1Y$)@i83Qu);WbsFGz&&%^lQQh&EVv2Q;Qz2Y)&5jL=mG3Tih8WUG!g zyXJb#X{rI0U3t8+i_;Hs%P&|iF;J@lmeXESSBsuLg0DN;s1rgh=V8OgiERlvF%eH< zn}+9E$>??av~oh_=t*wP&F$yv3KGg6 zco(x4#HZTF?3ySE*LiZ1-iA;q;(bcY)1y!4xE)M6;~F>SS4oU23fX95j@_NKsIFKx zRoKvKtkf%5*B8{d7`c^AJOIl?R}E~TmwKs*gYXm0GHx`-=XjiimZsp-%UNIv;$L!ROnn)m2zBy zOZ=oFr;yFIGcd&NjiuUD30>E0R{xU#-s6m+wSHhN^9N8#$~!k&fjRYuwAp6)^M9tl zcj^4k_~mbHKQ+gAxTu7pCyNgO+GsJ6G)5;q39bNUWa?#Z`Def28(rOd43S}ifx0zr zs`l%0{`*cqdRW3%y?Q=*xXT#r34|^3ipo`~E3Q|(#>K%S6Io>~^^R?dKAdJWG~>Lt ztnYmGDS*9Isr((+R!sxgGhQ9d>J}`VU+)HtPXPOvp&AmczpThOvVi?B*D;HL|6Tc- zzYK}#R(@T-e$Jt|68b)+XMs#EX_=4DT?P8N(v*&FpMaaEW=KPRuTyq_F{;PU^(TAR zyi&3KOK)6$V14T?lcDIpWOB)euD8CwV*)l)=7*uCD=Q4xVRk2+S2ibl0#_ensATow zGTKaJ3R^+Q{uP3(EhYUDVP}emE#dp*w+#u;3EvXzJ~OpQYJopqto#oMu^#Uy;Wd9P zw}kEAkqvq`AO))|owfA+Cb=6a&FO>Yv!pM`=RadC4lk`nTJb2W(Y^H*xh& zg{k(NU=|7-!T=VtJ?VDmXg~3-9A8L3o0U2yc@Ge95+Khk&d&W@+OMWAl@UJ5=7Mi_ zesWR1*-~|RB51hsjZLHCqs0}gECBG;YXS&s5pLIuULt|HE8r#zOL$b2QT}k#llkS^`a3o?3Vu2I&zQ2w+3f7!I77~F zaX3v9^sY|QyZNbi=tfq@)I=W^kLrPz+ zjoJDuDUYi=6QpjZ5|O_m3=DbWrU^~t{KBu0rwi#zxxHh}ooz8Yosf{@A^8>3D@MSv)9u12m9(A+ z9NK7SPC~mEFos~lyjtIjBzfk$zBbO$cAVY_(lbSydxQ##=F1Y=b>WGG-6nH3Nh68y zz%sSE`fj;cv~x5g-iOp^+0yU%q*D0IH@~L1St(A`YQbasZDtS$Lf(x>i{f_iXa6fQHhmFFja8*n=93-v=3de74y5 zzZUsc_q{&#c)tddi>HD~5d2iu9=23zTwkAwv-l!!f~@0Y6#9u_13hE^;N_0NbRyla z;#I>=HIQE-A%(gZUF(RUx{5_%T5`Z}-555N7P_;3@Uk(&BrF+&COKJNiQ`FScy2eR z?ml(3(!!ixH)C%^*Y0HoqaUj;8@XA<{D?mZpWG{^$k(SFT0dT}K_Ia0JK|HMHQR6S z^RuEgvB`aKY=B7VwNf^I!*Q$6wHqc_U2_P`#o(}$ zto&?Y&E-VnOKfHuyeik&RPVLJsQ-5|GhNllCY6{lfVe(V{TQ^=>B>RSf5doYt`K0E z?$X3x8XXPm(CbK%vbi-k%;zigv2gBV@E{;lPJTM>bl%*|q}r73+CfF?MBBZuyWRFC z@OLTYI+p=Ip+WFEYFB=}c+il;Be42IT#n^f*TLzF6-r?R*w)HO!C83Oun`#p1`Zze z6|*}+t~i*_5xG6RZH7FiBge|4FcH4nEIm`ppJ)CMGNI^i)b&26h`cB2q|N1{zws?H zS*{b*iz|O8U6aUUtrCuUu~+YTT3nM9q4*jHE7(*U*U9O+IJqs1*(o#=BTDx*bOA6@B!-T_e2b@ReDZw0QKdoVtzs4e7+f(;om## zmI|*52##mxz69kF{M09kBZcc_G!!PD#jCr7WyT76g$o7psuGdYCpIW%zPMD!f5rTd zjuUl?I-N_YtX>v|+Ei^HU1m4!sw>b}oaXTB)vhn5jQ%~^O|Y()w-nR2{9T4fAky&D z*Tnk;-z(pp$udg3!lMkC;?{E6pRr@Nq;EQ1(S_~9;Z#F?SKje#uTQWDDrwi>SsRAi z=@PY-Rrl7}+!k@NCAB+hs$_bZX7U@*S4W`?;~Y}oUsM@ObALp_+O-kXJkzk&eiN6H zp?qg(YAhe8c1+KQ8Jop0S*#`_Cm`ep#tk1lb?whxw?nc%8JD4 zwo{LX9c;pM&Jka8)_H=9jEou`tbB&e6A(ID?p&j$eyEd#YoWt+eaUz#Io<;%XN0s# zG0rq**6bRgzLVikbB(mAXh#LMEi~H}78?#|C|w@6zqwA&%i^;v9K%VZ)Z|>j(SrG~Ofb-tA>%x8^Co zO}=|vi$G75=eH14#)VXl$xhL1QO()~U@Y_+_e)dI?$7=#a_j$t-KuCHrs0c5C%8hF zc}z~5Ia+~J_kj%GT5<}2f5K|#9NiuPK$#+iKJ|C!A5JwNkl2szOw-5^1zVBpV`E{* zg+)Bv^0`}Jhi*rBGAQ1+h(|H*&6`EDD)v<8(c3(Fiz$vb3O9AF{2qojgOr>AvGBi~ zEHjCPg~jLUi)LMZG%bvkRn_O5(|~fy3zXuvW*^W{l%Ji+54M!iI&V=QdXtYCystrS zxgolthI=kfUPwL+joi4c5jx->Sxn&akO1_x*IM-}##9Lnkx`5QR+uT3LmOjnciqEWm)EGj1lC169szFD3?vousBBJR2_b z<#rq(&s911@JgAev%J!y1l;=G$xty})rJj$tqjI3@ z21q+YQgD0iR%huCVnjoz96DWf^1UG9DU-k7bf=EyW(Bp3_%Hx(yjh`E@L$yn{t?a~ zT~oa8pZ>&gzNenWn$X4q`D-Pj)2ET zN+o>h zhGe+GRko<~H(JojiXIv`Vx4B8FfZ6MrBqK{Gpxt-#41)cgLErgx(BE}su~OIiLIXP z6%OMitsZ%tBL$}Us?%L5lyCfM+H6twGxgEiS70!9*d+6(rT_+GzpwmXiL9!+4irg0 z#!`98f3{yOvVUAGtIz#q9!oX#f<{?%TS<?wO@a-#8lgWoZ3XZN84JR?R4_3ZS$eC<;;og5{if-ch8u-_; zrWFIS0AzfE(P`K5gPx!FtR#A!F9#17GAwh4vfgn#*8c3@wi`o&)LOGbw=%tL2Po*i zt=(~WkS{H=)2@1iA?*hAnDL=(;Odr!_2;?Lg4n6i#=U&|C+8KDkBka!MRI zCYHV@5ocVpUh+d1AR($^+3G%vT@boHDYdJ6X-CRnPm!F88qz;?0F)VvRuhY_zM;3P z_9c+v=qDC&yCAxMnS&&K3ECouKK?HSLjG+}hh#9S>v@LDb~UG?#hn{{5yP z#mbvWY#{o8tQhlSNxYAYhKqx09o%h<+w~61C_9b;rr_)9k6OEoR*ZHvB8tv+hd>@7 zSYUhdwu+y9T1O5nlNxKBQ4C@r1n=T?gV^(nJe3dj#Cc?|&^m4%m~etsP`%H;sV#9k zd@zu_Lad?cB3BiljhaM<|3SXn=$M)fyaHbj{fgD;h{c9mNWd5;n1!aD!~B+4zXW%i zhVAI@8;vJ!*A@$AQ*%#T3=(AH&f!A9bo}8pNu(jud3AY^3Bg{w2Nlx04&? zX=;dLWji%SQ|iL2`{WDTSorNf6@{xBiHFuiDLVDC7Q^AL+jC<$m{fgMOzu4vxknqU z#Uq?6(`|6q+e0`(i~~Y>WA-l!cl(s3ko-1AHlV9QtB<}D(F%NS?`)TJ^qda5~kTB(5Mm_e&R1o?Uf}V?mLvig$gpufOg>uyf*4 z0oMcUo{NPerk8$IA`>KUcw-6I-&Tz z{@J)%XHsUcd#oF$k)Phc>wTQ0P2OzEGK!}(nc+J^&h8&39hhR-|g&zUmxU1Ks%y-n#j(%N=z6L;fy-$uz1$a}_$*b8qj&&xFO{+KDb z7iG*dv1>t$@7SueJzT~CzgCp-g_@U?9zXjLGr^bJj4Nqa)a$sGXD&Px3#rLyW6z{D z=f<;@B7z*fw`Kq38Ampy@-f1vz)O zIlj}ZuSt!P2VuvcSk@iAD4&x@?`_ieri?i~`w=hn-bk{Bi)|<=TBjccSA;xOT**0m zI=0CRTP1m2nJW+$;Gs(5fv2t1ptG0gg-kjH28pUo6+di^v#9}l9MmgowTPN;D1^M(-=6zerEX zB2=`3-X#?c54kC79=HnV&F1+t9qo*e6hFMT>j%_g{|S>#0A(w`_uFNs)XETS92o1! zV|kbW`u)PYUj7pYBSEs`6(3IuN$Debmz{0bX8(OQPA__8lc1aRc0NfUb#5giLjs#g zF2EF3dllft3NJbj4&*{@NhdgT*j`%2k_%`SnMmfObQwKUCAC4F$glI4l7|Z)$SZni2t^W1c)>GL&G)!{PfcJV=UlM`nZCmNgXc zysfvUiOwSf4_lk6v-T1`@W1hkH` zen>{=+yU6-PcQ-W4Z6SG2U>Qwd{)k&Zi_xATko_zTT{XT8rY0YdQiuxn$Y&mb=qPa zAtmUQ(ls>j8Q82n`qcKzZenDw)%F|G>r znNPFc0u=8j<^BfvO7;UyV*s6)-vF`j?NAT-UBvD!g;?L3T96T6wmopbPP2)ZL!^4n zp5l-9ks#wwNR4MG1a7hfe@!zEqDtw{WT-d>)OpJ_+SW06R<^_`7aGB&r*Hp?Muplq zEeWh<8m;d;3XamDW`#%BI5>`JX4a42-{fmDH@8l0u(mp+U!$Z@9|1W6R>g!S(7kOr zo#urj&c`*sT($f2REtKmIH2D`E62$_;A?jt*C8NHwUM)qsHIi&EmNybEBH}qc^H68 z_19=S!JE7cp~L)SQ^yDfSdo>za8+GzTK<7=70&{?$3@ejvZ1uITZoj(I+C2*Bz#f` zCnv9MzM1t-Q%l45BYi!w25AKR_`BOF!vk41P&}gd>AiNJo7_3ol{HWe>!V1_jG5D^ zGn>Wwd(z{RJR^s!8>d2>xX|r=o`jWr606lv>K)iwfbm7n>OzegaXUxf0Q$~;dJt$A%#PQ1UmSJC>CCus^+v9tP8*#-A$&eFAi$GC>|p9oB*c2z+K zl9EaWdAir)&1$sVJdW$8m+UNA6nn9GOf@!rwsSfyh}5D1^ANoEB~;~<4r>hBV$Pj_ zeS&N#+zLV~73|l(Rbhx~+DDzM2CgLlRsjue-%Dp4Zy1pb>*r)0|0Fd*{k-WV=*`z) zfL)Iufm?KHgJz-=J74cyvHx7z@0q*#s?R=ks|SEg`B#wdHuZGBIfpKd z-?&EFGD=uxt3Lw`dX9sG)87U4LASFYC5Icx{0RwZMmHs+Etr=|HG!yk{ETXhhdnl8 z3Ifr_yLxpL-zOofdmgREIIBY8gXXlF*pZ^8vBf}%14m2=RhL;`*Rw)}4G{0^&Y_b| z(DIdgP8;1r$BYbxCu=;eHdD8!waVVBw&fJkJlq5;_B_y81klrO(f15VZpMk9OcU|r zlS@h@gU_r90n(vG9)?qqgqbr*a+UrY!iKr(HQErM{2BZ0t-Am&9j)1wSDLWe7&+Ux z9AO&0#0@e@TA!OgnrghlZ;mK|20kiNSQy|M)2(Z-89f;qbcr4(e@Cs%OdTAkTgGvTVUu`LX>z{Wapa0^}P+&xA7EJo)B z)o9J^>so`9x5w$mj%@N)`b^Jq_lH4U$_e7KA4N@s#KdXm>b}Lww7*i(fS@|Y_Vx91 zz3%7d_f*|<`!+cmBLLKqeJ=GvH0V%0i;8g+RiUASBx*Vv{|4DBSZ<{cZf^S{w&}EH z-RF(NB5Dz;iykIV>u>R+mPnU_ektGOnN<+eiiUPh7>A(?7~)g@K5e|dzVlOh(XPM! zBJbGOzY#vs`-aP>BtIHxob@?3`MXAJ;Cmeaw!UI+QDkn{IB<{d5yWIQkt*>G3KuTT zf6>~{re`=c;)Hcf;~tj(=)Wnz0kT<(ht6KNY&s@cjP5W8s;A&WBsLnre-Z6RD0w7_ zt14=0k{UxsieGl{mqy`7@UD=~%b7g0WK?vA&TS+C_xV!s{zo>=kypLZO8cfR&%CkR zW*3U^u3Q2owGx6Z>RB+wyaP@^gERb{g%s}3=|&J3{x5Wlm zo}!;0wVlmJt7qVD`ALc0Y@*-HB$X8fp2o#AeMNPq7H9AOysRv*1kz#ha+1k?c&I?5 zAfohaiI|yFXU1J`zQErYD_^#E#WZ4j8fSW8kJAG&KK(Kxv_Ty|DpeCZ5!I}BQsp0D z!jvami-vX#-%4e)O1)-LYCS-V|pS2H?jXG-7s430JLTcz)$jks2ANqF()K`~c0uI0N& zP?knF;T{(*E|EvgdxX9dlYkc|c7v8X@}!&>vvlyTKHFKPG%^IG#}cgzi|UL*i;m;_ z|583>0OeB}jIPfR>xSe3D|j5oZig%?Mp^2(E-Gr>WN&o%M=6M;T}rpOKTK^Rck_qt zXhy2byR1s+dfZ81+oD|3+X;b5uTI165?ouHgg)LFf zDKtqqVQ^!dT`yr0_06CU??$|9gNQS(I35yG z>XtVe?KmGm*h_rO^@%Y4Q)I>aHvQ=COQ+hNVeAq?S{Lxpo4nVa%b@1O9^JiG`7!XQ z3{EO$?3b^si-Ytn8OXdKY)8C~d1RX@JOf zNy;tc`ly*thv-x6+oj97kZzrCtNLG>XZq0aYR8UF9G6;xb`#4PRH zy3AduKr`1|#{+W0Q3M$j)uEl-XF*(up=g>2kt)l&9g`7f-(goHp7_G5O~r)Me$|fQ rHBRXj+CvR=l~-^t{^0+Lb)+}nbGuCf=V>Dha6EdTB$Iz%|IL2^v0{Zh literal 0 HcmV?d00001 diff --git a/docs/en/setup/backend/images/airflow/horizon-k8s-service-service.png b/docs/en/setup/backend/images/airflow/horizon-k8s-service-service.png new file mode 100644 index 0000000000000000000000000000000000000000..7fcb86433844b31f5918b19e7ea2ef476d1eca66 GIT binary patch literal 96356 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
+Historical full cluster run (30 checks, superseded by split above) + +2026-06-02 run achieved 30/30 before the mock/cluster split; several checks were flaky on real +Airflow without synthetic OTLP. Current cluster scope is the 26-check integration smoke. + +
+ +## File reference + +| Path | Role | +|------|------| +| [`e2e.yaml`](e2e.yaml) | Mock suite entry (CI `Airflow`) | +| [`e2e-cluster.yaml`](e2e-cluster.yaml) | Real cluster entry (CI `Airflow Cluster`, timeout 35m) | +| [`docker-compose.yml`](docker-compose.yml) | Mock stack (OAP + mock sender) | +| [`mock-sender/`](mock-sender/) | Case-local OTLP JSON replay sender (supports `increase('PT1M')` metrics) | +| [`docker-compose-cluster.yml`](docker-compose-cluster.yml) | Real Airflow Celery stack | +| [`otel-collector-config.yaml`](otel-collector-config.yaml) | Collector → OAP pipeline | +| [`mock-data/otel-airflow-metrics.json`](mock-data/otel-airflow-metrics.json) | Mock OTLP payload | +| [`scripts/run-full-cluster-e2e.sh`](scripts/run-full-cluster-e2e.sh) | Local end-to-end driver | +| [`scripts/run-cluster-setup.sh`](scripts/run-cluster-setup.sh) | Tools + health + workload | +| [`scripts/verify-cluster-e2e.sh`](scripts/verify-cluster-e2e.sh) | Cluster integration smoke (26 swctl checks) | +| [`scripts/wait-scheduler-healthy.sh`](scripts/wait-scheduler-healthy.sh) | Scheduler health gate | +| [`cluster-e2e-report.txt`](cluster-e2e-report.txt) | Generated verify report (gitignored in practice) | + +## CI + +GitHub Actions matrix (`.github/workflows/skywalking.yaml`): + +- **Airflow** — `test/e2e-v2/cases/airflow/e2e.yaml` +- **Airflow Cluster** — `test/e2e-v2/cases/airflow/e2e-cluster.yaml` + +Cluster job uses infra-e2e `verify` with [`airflow-cluster-cases.yaml`](airflow-cluster-cases.yaml) +(Linux; `${oap_host}:${oap_12800}` substitution works). Local Windows runs use +[`verify-cluster-e2e.sh`](scripts/verify-cluster-e2e.sh) instead. + +## Related docs + +- [Airflow monitoring setup](../../../../docs/en/setup/backend/backend-airflow-monitoring.md) +- [SWIP-7 proposal](../../../../docs/en/swip/SWIP-7.md) +- [E2E test guide](../../CLAUDE.md) diff --git a/test/e2e-v2/cases/airflow/airflow-cases.yaml b/test/e2e-v2/cases/airflow/airflow-cases.yaml new file mode 100644 index 000000000000..1b1875eeb0e3 --- /dev/null +++ b/test/e2e-v2/cases/airflow/airflow-cases.yaml @@ -0,0 +1,76 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +cases: + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ly AIRFLOW + expected: expected/service.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance ls --service-name=airflow::airflow-cluster + expected: expected/instance.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_scheduler_tasks_executable --service-name=airflow::airflow-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_executor_queued_tasks --service-name=airflow::airflow-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_executor_running_tasks --service-name=airflow::airflow-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_executor_open_slots --service-name=airflow::airflow-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_queued_slots --service-name=airflow::airflow-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_deferred_slots --service-name=airflow::airflow-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_scheduled_slots --service-name=airflow::airflow-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_scheduler_heartbeat --service-name=airflow::airflow-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_scheduler_orphaned_tasks_cleared --service-name=airflow::airflow-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_scheduler_orphaned_tasks_adopted --service-name=airflow::airflow-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_dag_file_queue_size --service-name=airflow::airflow-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_asset_updates --service-name=airflow::airflow-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_open_slots --service-name=airflow::airflow-cluster --instance-name=airflow-worker-1 + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_deferred_slots --service-name=airflow::airflow-cluster --instance-name=airflow-worker-1 + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_running_slots --service-name=airflow::airflow-cluster --instance-name=airflow-worker-1 + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_scheduled_slots --service-name=airflow::airflow-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_triggerer_heartbeat --service-name=airflow::airflow-cluster --instance-name=airflow-triggerer + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_triggers_blocked_main_thread --service-name=airflow::airflow-cluster --instance-name=airflow-triggerer + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_triggers_failed --service-name=airflow::airflow-cluster --instance-name=airflow-triggerer + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_triggers_succeeded --service-name=airflow::airflow-cluster --instance-name=airflow-triggerer + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_scheduler_tasks_executable --service-name=airflow::airflow-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_scheduler_orphaned_tasks_cleared --service-name=airflow::airflow-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_scheduler_orphaned_tasks_adopted --service-name=airflow::airflow-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_executor_queued_tasks --service-name=airflow::airflow-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_executor_running_tasks --service-name=airflow::airflow-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_asset_updates --service-name=airflow::airflow-cluster --instance-name=airflow-worker-1 + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_asset_orphaned --service-name=airflow::airflow-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_asset_triggered_dagruns --service-name=airflow::airflow-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml diff --git a/test/e2e-v2/cases/airflow/airflow-cluster-cases.yaml b/test/e2e-v2/cases/airflow/airflow-cluster-cases.yaml new file mode 100644 index 000000000000..dca81df0505c --- /dev/null +++ b/test/e2e-v2/cases/airflow/airflow-cluster-cases.yaml @@ -0,0 +1,74 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Real Celery cluster integration smoke (service airflow-e2e-cluster). +# Full SWIP-7 matrix (30 checks) lives in airflow-cases.yaml (mock OTLP replay). +# Cluster omits metrics that are flaky without synthetic OTLP: asset_updates, +# triggers_blocked_main_thread, triggers_failed. Instance topology uses the three +# hosts that export OTLP in this compose layout (scheduler, worker-1, triggerer). + +cases: + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ly AIRFLOW + expected: expected/service-cluster.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance ls --service-name=airflow::airflow-e2e-cluster + expected: expected/instance-cluster.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_scheduler_tasks_executable --service-name=airflow::airflow-e2e-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_executor_queued_tasks --service-name=airflow::airflow-e2e-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_executor_running_tasks --service-name=airflow::airflow-e2e-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_executor_open_slots --service-name=airflow::airflow-e2e-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_queued_slots --service-name=airflow::airflow-e2e-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_deferred_slots --service-name=airflow::airflow-e2e-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_scheduled_slots --service-name=airflow::airflow-e2e-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_scheduler_heartbeat --service-name=airflow::airflow-e2e-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_scheduler_orphaned_tasks_cleared --service-name=airflow::airflow-e2e-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_scheduler_orphaned_tasks_adopted --service-name=airflow::airflow-e2e-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_dag_file_queue_size --service-name=airflow::airflow-e2e-cluster + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_open_slots --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-worker-1 + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_deferred_slots --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-worker-1 + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_running_slots --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-worker-1 + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_scheduled_slots --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_triggerer_heartbeat --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-triggerer + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_triggers_succeeded --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-triggerer + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_scheduler_tasks_executable --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_scheduler_orphaned_tasks_cleared --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_scheduler_orphaned_tasks_adopted --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_executor_queued_tasks --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_executor_running_tasks --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_asset_orphaned --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml + - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_asset_triggered_dagruns --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-scheduler + expected: expected/metrics-has-value.yml diff --git a/test/e2e-v2/cases/airflow/cluster/config/.gitkeep b/test/e2e-v2/cases/airflow/cluster/config/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/e2e-v2/cases/airflow/cluster/dags/cluster_load.py b/test/e2e-v2/cases/airflow/cluster/dags/cluster_load.py new file mode 100644 index 000000000000..15d5af6fc33e --- /dev/null +++ b/test/e2e-v2/cases/airflow/cluster/dags/cluster_load.py @@ -0,0 +1,34 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from datetime import datetime + +from airflow import DAG +from airflow.operators.bash import BashOperator + +# Sustained load for real-cluster e2e (queued / running / scheduled gauges). +with DAG( + dag_id="cluster_load", + start_date=datetime(2024, 1, 1), + schedule=None, + catchup=False, + tags=["swip7", "e2e", "load"], + max_active_runs=3, +) as dag: + for index in range(1, 9): + BashOperator( + task_id=f"sleep_{index}", + bash_command=f"echo load-{index}-start && sleep 90 && echo load-{index}-done", + ) diff --git a/test/e2e-v2/cases/airflow/cluster/dags/cluster_smoke.py b/test/e2e-v2/cases/airflow/cluster/dags/cluster_smoke.py new file mode 100644 index 000000000000..0ff309c1ec51 --- /dev/null +++ b/test/e2e-v2/cases/airflow/cluster/dags/cluster_smoke.py @@ -0,0 +1,31 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from datetime import datetime, timedelta + +from airflow import DAG +from airflow.operators.bash import BashOperator + +with DAG( + dag_id="cluster_smoke", + start_date=datetime(2024, 1, 1), + schedule=timedelta(minutes=1), + catchup=False, + tags=["swip7", "e2e"], +) as dag: + BashOperator( + task_id="ping", + bash_command="echo cluster-smoke-$(hostname)", + ) diff --git a/test/e2e-v2/cases/airflow/cluster/dags/e2e_dataset.py b/test/e2e-v2/cases/airflow/cluster/dags/e2e_dataset.py new file mode 100644 index 000000000000..7523dfaef2ec --- /dev/null +++ b/test/e2e-v2/cases/airflow/cluster/dags/e2e_dataset.py @@ -0,0 +1,47 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from datetime import datetime + +from airflow import DAG +from airflow.datasets import Dataset +from airflow.operators.bash import BashOperator + +E2E_DATASET = Dataset("file:///tmp/swip7-e2e-dataset") + +with DAG( + dag_id="e2e_dataset_producer", + start_date=datetime(2024, 1, 1), + schedule=None, + catchup=False, + tags=["swip7", "e2e", "dataset"], +) as producer_dag: + BashOperator( + task_id="produce", + bash_command="echo swip7-dataset-produce", + outlets=[E2E_DATASET], + ) + +with DAG( + dag_id="e2e_dataset_consumer", + start_date=datetime(2024, 1, 1), + schedule=[E2E_DATASET], + catchup=False, + tags=["swip7", "e2e", "dataset"], +) as consumer_dag: + BashOperator( + task_id="consume", + bash_command="echo swip7-dataset-consume", + ) diff --git a/test/e2e-v2/cases/airflow/cluster/dags/e2e_deferrable.py b/test/e2e-v2/cases/airflow/cluster/dags/e2e_deferrable.py new file mode 100644 index 000000000000..d03baaa7f69a --- /dev/null +++ b/test/e2e-v2/cases/airflow/cluster/dags/e2e_deferrable.py @@ -0,0 +1,32 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from datetime import datetime, timedelta + +from airflow import DAG +from airflow.sensors.time_delta import TimeDeltaSensorAsync + +# Deferrable sensor so triggerer exports native triggers_* OTel counters. +with DAG( + dag_id="e2e_deferrable", + start_date=datetime(2024, 1, 1), + schedule=None, + catchup=False, + tags=["swip7", "e2e", "deferrable"], +) as dag: + TimeDeltaSensorAsync( + task_id="defer_wait", + delta=timedelta(seconds=45), + ) diff --git a/test/e2e-v2/cases/airflow/cluster/logs/.gitkeep b/test/e2e-v2/cases/airflow/cluster/logs/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/e2e-v2/cases/airflow/cluster/plugins/.gitkeep b/test/e2e-v2/cases/airflow/cluster/plugins/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/test/e2e-v2/cases/airflow/cluster/scripts/worker_otel_reporter.py b/test/e2e-v2/cases/airflow/cluster/scripts/worker_otel_reporter.py new file mode 100644 index 000000000000..15f6f11397e8 --- /dev/null +++ b/test/e2e-v2/cases/airflow/cluster/scripts/worker_otel_reporter.py @@ -0,0 +1,123 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#!/usr/bin/env python3 +# Airflow 2.10 Celery workers do not emit pool gauges via native OTel; approximate from Celery +# active tasks for e2e only (see test/e2e-v2/cases/airflow/README.md). +import os +import socket +import subprocess +import time + +from opentelemetry import metrics +from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter +from opentelemetry.metrics import Observation +from opentelemetry.sdk.metrics import MeterProvider +from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader +from opentelemetry.sdk.resources import HOST_NAME, SERVICE_NAME, Resource + +HOST = os.environ.get("HOSTNAME") or socket.gethostname() +CLUSTER = os.environ.get("AIRFLOW_CLUSTER", "airflow-e2e-cluster") +ENDPOINT = os.environ.get( + "OTEL_EXPORTER_OTLP_METRICS_ENDPOINT", + "http://otel-collector:4318/v1/metrics", +) +INTERVAL_MS = int(os.environ.get("OTEL_METRIC_EXPORT_INTERVAL", "30000")) +OPEN_SLOTS = float(os.environ.get("WORKER_OTEL_OPEN_SLOTS", "8")) + + +def _celery_active_tasks() -> float: + cmds = [ + [ + "celery", + "-A", + "airflow.providers.celery.executors.celery_executor.app", + "inspect", + "active", + "-d", + f"celery@{HOST}", + ], + [ + "celery", + "-A", + "airflow.executors.celery_executor.app", + "inspect", + "active", + "-d", + f"celery@{HOST}", + ], + ] + for cmd in cmds: + try: + proc = subprocess.run( + cmd, + capture_output=True, + text=True, + timeout=10, + check=False, + ) + if proc.returncode != 0: + continue + count = proc.stdout.count("'name':") + if count == 0: + count = proc.stdout.count('"name":') + return float(count) + except (OSError, subprocess.SubprocessError): + continue + return 0.0 + + +def pool_open_slots(_options): + active = _celery_active_tasks() + yield Observation(max(OPEN_SLOTS - active, 0.0), {"pool_name": "default_pool"}) + + +def pool_running_slots(_options): + yield Observation(_celery_active_tasks(), {"pool_name": "default_pool"}) + + +def pool_deferred_slots(_options): + yield Observation(0.0, {"pool_name": "default_pool"}) + + +def main(): + resource = Resource.create( + { + HOST_NAME: HOST, + SERVICE_NAME: "Airflow", + "cluster": CLUSTER, + } + ) + reader = PeriodicExportingMetricReader( + OTLPMetricExporter(endpoint=ENDPOINT), + export_interval_millis=INTERVAL_MS, + ) + metrics.set_meter_provider( + MeterProvider(resource=resource, metric_readers=[reader]) + ) + meter = metrics.get_meter("airflow.worker.reporter") + meter.create_observable_gauge("airflow.pool.open_slots", callbacks=[pool_open_slots]) + meter.create_observable_gauge( + "airflow.pool.running_slots", callbacks=[pool_running_slots] + ) + meter.create_observable_gauge( + "airflow.pool.deferred_slots", callbacks=[pool_deferred_slots] + ) + while True: + time.sleep(INTERVAL_MS / 1000.0) + + +if __name__ == "__main__": + main() diff --git a/test/e2e-v2/cases/airflow/docker-compose-cluster.yml b/test/e2e-v2/cases/airflow/docker-compose-cluster.yml new file mode 100644 index 000000000000..3c127908111d --- /dev/null +++ b/test/e2e-v2/cases/airflow/docker-compose-cluster.yml @@ -0,0 +1,238 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Real Airflow Celery cluster e2e (4 metric nodes: scheduler + 2 workers + triggerer). +# Airflow -> OTel Collector -> OAP (BanyanDB). Pair with e2e-cluster.yaml. + +x-airflow-otel-env: &airflow-otel-env + _PIP_ADDITIONAL_REQUIREMENTS: "apache-airflow[otel] opentelemetry-exporter-otlp-proto-http" + AIRFLOW__METRICS__OTEL_ON: "True" + AIRFLOW__METRICS__OTEL_SERVICE: "Airflow" + AIRFLOW__METRICS__OTEL_HOST: otel-collector + AIRFLOW__METRICS__OTEL_PORT: "4318" + AIRFLOW__METRICS__OTEL_SSL_ACTIVE: "False" + OTEL_SERVICE_NAME: "Airflow" + OTEL_EXPORTER_OTLP_PROTOCOL: http/protobuf + OTEL_METRICS_EXPORTER: otlp + OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: http://otel-collector:4318/v1/metrics + OTEL_METRIC_EXPORT_INTERVAL: "30000" + AIRFLOW_CLUSTER: "airflow-e2e-cluster" + +x-airflow-common: &airflow-common + image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.10.5-python3.11} + environment: &airflow-common-env + <<: *airflow-otel-env + AIRFLOW__CORE__EXECUTOR: CeleryExecutor + AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow + AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow + AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0 + AIRFLOW__CORE__FERNET_KEY: "" + AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: "false" + AIRFLOW__CORE__LOAD_EXAMPLES: "true" + AIRFLOW__API__AUTH_BACKENDS: "airflow.api.auth.backend.basic_auth,airflow.api.auth.backend.session" + AIRFLOW__SCHEDULER__ENABLE_HEALTH_CHECK: "true" + volumes: + - ./cluster/dags:/opt/airflow/dags + - ./cluster/logs:/opt/airflow/logs + - ./cluster/config:/opt/airflow/config + - ./cluster/plugins:/opt/airflow/plugins + - ./cluster/scripts:/opt/airflow/scripts + user: "${AIRFLOW_UID:-50000}:0" + depends_on: &airflow-common-depends-on + redis: + condition: service_healthy + postgres: + condition: service_healthy + networks: + - e2e + +services: + oap: + extends: + file: ../../script/docker-compose/base-compose.yml + service: oap + ports: + - 12800 + environment: + SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES: "airflow/*" + networks: + - e2e + depends_on: + banyandb: + condition: service_healthy + + banyandb: + extends: + file: ../../script/docker-compose/base-compose.yml + service: banyandb + ports: + - 17912 + networks: + e2e: + aliases: + - banyandb + + otel-collector: + image: otel/opentelemetry-collector:${OTEL_COLLECTOR_VERSION} + command: ["--config=/etc/otel-collector-config.yaml"] + volumes: + - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml:ro + depends_on: + oap: + condition: service_healthy + networks: + - e2e + + postgres: + image: postgres:13 + environment: + POSTGRES_USER: airflow + POSTGRES_PASSWORD: airflow + POSTGRES_DB: airflow + healthcheck: + test: ["CMD", "pg_isready", "-U", "airflow"] + interval: 10s + retries: 5 + start_period: 5s + networks: + - e2e + + redis: + image: redis:7.2-bookworm + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 30s + retries: 50 + start_period: 30s + networks: + - e2e + + airflow-init: + <<: *airflow-common + entrypoint: /bin/bash + command: + - -c + - | + mkdir -p /opt/airflow/logs /opt/airflow/dags /opt/airflow/plugins /opt/airflow/config + chown -R "${AIRFLOW_UID:-50000}:0" /opt/airflow/logs /opt/airflow/dags /opt/airflow/plugins /opt/airflow/config || true + airflow db migrate + airflow users create --username "$${_AIRFLOW_WWW_USER_USERNAME}" --password "$${_AIRFLOW_WWW_USER_PASSWORD}" --firstname Admin --lastname User --role Admin --email admin@example.com || true + exec airflow version + environment: + <<: *airflow-common-env + _AIRFLOW_WWW_USER_USERNAME: ${_AIRFLOW_WWW_USER_USERNAME:-admin} + _AIRFLOW_WWW_USER_PASSWORD: ${_AIRFLOW_WWW_USER_PASSWORD:-admin} + user: "0:0" + depends_on: + <<: *airflow-common-depends-on + + airflow-scheduler: + <<: *airflow-common + hostname: airflow-scheduler + command: scheduler + environment: + <<: *airflow-common-env + OTEL_RESOURCE_ATTRIBUTES: "cluster=airflow-e2e-cluster,service.name=Airflow,host.name=airflow-scheduler" + healthcheck: + test: ["CMD", "curl", "--fail", "http://localhost:8974/health"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 90s + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully + otel-collector: + condition: service_started + + airflow-triggerer: + <<: *airflow-common + hostname: airflow-triggerer + command: triggerer + environment: + <<: *airflow-common-env + OTEL_RESOURCE_ATTRIBUTES: "cluster=airflow-e2e-cluster,service.name=Airflow,host.name=airflow-triggerer" + healthcheck: + test: ["CMD-SHELL", 'airflow jobs check --job-type TriggererJob --hostname "$${HOSTNAME}"'] + interval: 30s + timeout: 10s + retries: 5 + start_period: 90s + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully + otel-collector: + condition: service_started + + airflow-worker-1: + <<: *airflow-common + hostname: airflow-worker-1 + command: + - bash + - -c + - | + python /opt/airflow/scripts/worker_otel_reporter.py & + exec airflow celery worker + environment: + <<: *airflow-common-env + OTEL_RESOURCE_ATTRIBUTES: "cluster=airflow-e2e-cluster,service.name=Airflow,host.name=airflow-worker-1" + DUMB_INIT_SETSID: "0" + healthcheck: + test: + - "CMD-SHELL" + - 'celery --app airflow.providers.celery.executors.celery_executor.app inspect ping -d "celery@$${HOSTNAME}" || celery --app airflow.executors.celery_executor.app inspect ping -d "celery@$${HOSTNAME}"' + interval: 30s + timeout: 10s + retries: 5 + start_period: 90s + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully + otel-collector: + condition: service_started + + airflow-worker-2: + <<: *airflow-common + hostname: airflow-worker-2 + command: celery worker + environment: + <<: *airflow-common-env + OTEL_RESOURCE_ATTRIBUTES: "cluster=airflow-e2e-cluster,service.name=Airflow,host.name=airflow-worker-2" + DUMB_INIT_SETSID: "0" + healthcheck: + test: + - "CMD-SHELL" + - 'celery --app airflow.providers.celery.executors.celery_executor.app inspect ping -d "celery@$${HOSTNAME}" || celery --app airflow.executors.celery_executor.app inspect ping -d "celery@$${HOSTNAME}"' + interval: 30s + timeout: 10s + retries: 5 + start_period: 90s + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully + otel-collector: + condition: service_started + +networks: + e2e: diff --git a/test/e2e-v2/cases/airflow/docker-compose.mock-local.yml b/test/e2e-v2/cases/airflow/docker-compose.mock-local.yml new file mode 100644 index 000000000000..1b92a6a4ba9d --- /dev/null +++ b/test/e2e-v2/cases/airflow/docker-compose.mock-local.yml @@ -0,0 +1,34 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Local mock e2e overrides: +# - BanyanDB stays internal-only (avoid host port 17912 clashes with other stacks). +# - Sender uses a locally available Temurin 11 JRE (Docker Hub 8-jre may be unreachable). +# - OAP loads SWIP-7 config/libs from deploy/skywalking (CI uses a dist-built image instead). + +services: + banyandb: + ports: !reset [] + oap: + volumes: + - ../../../../deploy/skywalking/config:/skywalking/config:ro + - ../../../../deploy/skywalking/oap-libs:/skywalking/oap-libs:ro + sender: + image: eclipse-temurin:11-jre + healthcheck: + test: ["CMD", "sh", "-c", "wget -qO- http://127.0.0.1:9093/otel-metrics/send >/dev/null 2>&1 || curl -sf http://127.0.0.1:9093/otel-metrics/send >/dev/null"] + interval: 5s + timeout: 60s + retries: 120 diff --git a/test/e2e-v2/cases/airflow/docker-compose.yml b/test/e2e-v2/cases/airflow/docker-compose.yml new file mode 100644 index 000000000000..58a60500d347 --- /dev/null +++ b/test/e2e-v2/cases/airflow/docker-compose.yml @@ -0,0 +1,59 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +services: + oap: + extends: + file: ../../script/docker-compose/base-compose.yml + service: oap + ports: + - 12800 + environment: + SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES: "airflow/*" + networks: + - e2e + + banyandb: + extends: + file: ../../script/docker-compose/base-compose.yml + service: banyandb + ports: + - 17912 + + sender: + image: "eclipse-temurin:8-jre" + volumes: + - ./mock-sender/target/airflow-mock-sender-2.0.0.jar:/airflow-mock-sender-2.0.0.jar + - ./mock-data:/data/otel-metrics + command: [ "java", "-jar", "/airflow-mock-sender-2.0.0.jar" ] + environment: + OAP_HOST: oap + OAP_GRPC_PORT: 11800 + OTEL_METRICS_DATA_PATH: /data/otel-metrics + networks: + - e2e + ports: + - 9093 + healthcheck: + test: ["CMD", "sh", "-c", "nc -nz 127.0.0.1 9093"] + interval: 5s + timeout: 60s + retries: 120 + depends_on: + oap: + condition: service_healthy + +networks: + e2e: diff --git a/test/e2e-v2/cases/airflow/e2e-cluster.yaml b/test/e2e-v2/cases/airflow/e2e-cluster.yaml new file mode 100644 index 000000000000..0638abae4980 --- /dev/null +++ b/test/e2e-v2/cases/airflow/e2e-cluster.yaml @@ -0,0 +1,35 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Real Airflow Celery cluster (scheduler + 2 workers + triggerer) with live OTLP metrics. +# Slower than e2e.yaml (mock sender); verifies production-like OTLP integration (26 checks). +# Full SWIP-7 metric matrix (30 checks) is in e2e.yaml (mock OTLP replay). + +setup: + env: compose + file: docker-compose-cluster.yml + timeout: 35m + init-system-environment: ../../script/env + steps: + - name: cluster setup (tools, workload, verify env) + command: /usr/bin/bash test/e2e-v2/cases/airflow/scripts/run-cluster-setup.sh + +verify: + retry: + count: 60 + interval: 10s + cases: + - includes: + - ./airflow-cluster-cases.yaml diff --git a/test/e2e-v2/cases/airflow/e2e.yaml b/test/e2e-v2/cases/airflow/e2e.yaml new file mode 100644 index 000000000000..922a25c51ab5 --- /dev/null +++ b/test/e2e-v2/cases/airflow/e2e.yaml @@ -0,0 +1,44 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +setup: + env: compose + file: docker-compose.yml + timeout: 20m + init-system-environment: ../../script/env + steps: + - name: set PATH + command: export PATH=/tmp/skywalking-infra-e2e/bin:$PATH + - name: install yq + command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq + - name: install swctl + command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl + - name: build airflow mock sender + command: ./mvnw -B -q -f test/e2e-v2/java-test-service/pom.xml -pl opentelemetry-proto -am install -Dcheckstyle.skip=true -Dgpg.skip=true -Dmaven.test.skip=true && ./mvnw -B -q -f test/e2e-v2/cases/airflow/mock-sender/pom.xml clean flatten:flatten package -Dcheckstyle.skip=true -Dgpg.skip=true + +trigger: + action: http + interval: 3s + times: -1 + url: http://${sender_host}:${sender_9093}/otel-metrics/send + method: GET + +verify: + retry: + count: 20 + interval: 10s + cases: + - includes: + - ./airflow-cases.yaml diff --git a/test/e2e-v2/cases/airflow/expected/instance-cluster.yml b/test/e2e-v2/cases/airflow/expected/instance-cluster.yml new file mode 100644 index 000000000000..64d7a1434f16 --- /dev/null +++ b/test/e2e-v2/cases/airflow/expected/instance-cluster.yml @@ -0,0 +1,32 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{- contains . }} +- id: {{ notEmpty .id }} + name: airflow-scheduler + instanceuuid: {{ notEmpty .instanceuuid }} + attributes: [] + language: UNKNOWN +- id: {{ notEmpty .id }} + name: airflow-worker-1 + instanceuuid: {{ notEmpty .instanceuuid }} + attributes: [] + language: UNKNOWN +- id: {{ notEmpty .id }} + name: airflow-triggerer + instanceuuid: {{ notEmpty .instanceuuid }} + attributes: [] + language: UNKNOWN +{{- end }} diff --git a/test/e2e-v2/cases/airflow/expected/instance.yml b/test/e2e-v2/cases/airflow/expected/instance.yml new file mode 100644 index 000000000000..64d7a1434f16 --- /dev/null +++ b/test/e2e-v2/cases/airflow/expected/instance.yml @@ -0,0 +1,32 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{- contains . }} +- id: {{ notEmpty .id }} + name: airflow-scheduler + instanceuuid: {{ notEmpty .instanceuuid }} + attributes: [] + language: UNKNOWN +- id: {{ notEmpty .id }} + name: airflow-worker-1 + instanceuuid: {{ notEmpty .instanceuuid }} + attributes: [] + language: UNKNOWN +- id: {{ notEmpty .id }} + name: airflow-triggerer + instanceuuid: {{ notEmpty .instanceuuid }} + attributes: [] + language: UNKNOWN +{{- end }} diff --git a/test/e2e-v2/cases/airflow/expected/metrics-has-value.yml b/test/e2e-v2/cases/airflow/expected/metrics-has-value.yml new file mode 100644 index 000000000000..ced9ce289197 --- /dev/null +++ b/test/e2e-v2/cases/airflow/expected/metrics-has-value.yml @@ -0,0 +1,30 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +debuggingtrace: null +type: TIME_SERIES_VALUES +results: + {{- contains .results }} + - metric: + labels: [] + values: + {{- contains .values }} + - id: {{ notEmpty .id }} + value: {{ notEmpty .value }} + traceid: null + owner: null + {{- end}} + {{- end}} +error: null diff --git a/test/e2e-v2/cases/airflow/expected/service-cluster.yml b/test/e2e-v2/cases/airflow/expected/service-cluster.yml new file mode 100644 index 000000000000..23bd03fc3511 --- /dev/null +++ b/test/e2e-v2/cases/airflow/expected/service-cluster.yml @@ -0,0 +1,24 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{- containsOnce . }} +- id: {{ b64enc "airflow::airflow-e2e-cluster" }}.1 + name: airflow::airflow-e2e-cluster + group: airflow + shortname: airflow-e2e-cluster + layers: + - AIRFLOW + normal: true +{{- end }} diff --git a/test/e2e-v2/cases/airflow/expected/service.yml b/test/e2e-v2/cases/airflow/expected/service.yml new file mode 100644 index 000000000000..46998441ee2f --- /dev/null +++ b/test/e2e-v2/cases/airflow/expected/service.yml @@ -0,0 +1,24 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{- containsOnce . }} +- id: {{ b64enc "airflow::airflow-cluster" }}.1 + name: airflow::airflow-cluster + group: airflow + shortname: airflow-cluster + layers: + - AIRFLOW + normal: true +{{- end }} diff --git a/test/e2e-v2/cases/airflow/mock-data/otel-airflow-metrics.json b/test/e2e-v2/cases/airflow/mock-data/otel-airflow-metrics.json new file mode 100644 index 000000000000..a2290ac2cc45 --- /dev/null +++ b/test/e2e-v2/cases/airflow/mock-data/otel-airflow-metrics.json @@ -0,0 +1,428 @@ +{ + "resourceMetrics": [ + { + "resource": { + "attributes": [ + { + "key": "service.name", + "value": { + "stringValue": "Airflow" + } + }, + { + "key": "cluster", + "value": { + "stringValue": "airflow-cluster" + } + }, + { + "key": "host.name", + "value": { + "stringValue": "airflow-scheduler" + } + } + ] + }, + "scopeMetrics": [ + { + "scope": {}, + "metrics": [ + { + "name": "airflow.scheduler.tasks.executable", + "gauge": { + "dataPoints": [ + { + "timeUnixNano": "1676140375004000000", + "asDouble": 5.0 + } + ] + } + }, + { + "name": "airflow.executor.running_tasks", + "gauge": { + "dataPoints": [ + { + "timeUnixNano": "1676140375004000000", + "asDouble": 2.0 + } + ] + } + }, + { + "name": "airflow.pool.scheduled_slots", + "gauge": { + "dataPoints": [ + { + "timeUnixNano": "1676140375004000000", + "asDouble": 1.0, + "attributes": [ + { + "key": "pool_name", + "value": { + "stringValue": "default_pool" + } + } + ] + } + ] + } + }, + { + "name": "airflow.executor.queued_tasks", + "gauge": { + "dataPoints": [ + { + "timeUnixNano": "1676140375004000000", + "asDouble": 3.0 + } + ] + } + }, + { + "name": "airflow.executor.open_slots", + "gauge": { + "dataPoints": [ + { + "timeUnixNano": "1676140375004000000", + "asDouble": 16.0 + } + ] + } + }, + { + "name": "airflow.pool.queued_slots", + "gauge": { + "dataPoints": [ + { + "timeUnixNano": "1676140375004000000", + "asDouble": 1.0, + "attributes": [ + { + "key": "pool_name", + "value": { + "stringValue": "default_pool" + } + } + ] + } + ] + } + }, + { + "name": "airflow.pool.deferred_slots", + "gauge": { + "dataPoints": [ + { + "timeUnixNano": "1676140375004000000", + "asDouble": 0.0, + "attributes": [ + { + "key": "pool_name", + "value": { + "stringValue": "default_pool" + } + } + ] + } + ] + } + }, + { + "name": "airflow.scheduler.orphaned_tasks.cleared", + "sum": { + "aggregationTemporality": 2, + "isMonotonic": true, + "dataPoints": [ + { + "startTimeUnixNano": "1676140244999000000", + "timeUnixNano": "1676140375004000000", + "asDouble": 2.0 + } + ] + } + }, + { + "name": "airflow.scheduler.orphaned_tasks.adopted", + "sum": { + "aggregationTemporality": 2, + "isMonotonic": true, + "dataPoints": [ + { + "startTimeUnixNano": "1676140244999000000", + "timeUnixNano": "1676140375004000000", + "asDouble": 1.0 + } + ] + } + }, + { + "name": "airflow.scheduler_heartbeat", + "sum": { + "aggregationTemporality": 2, + "isMonotonic": true, + "dataPoints": [ + { + "startTimeUnixNano": "1676140244999000000", + "timeUnixNano": "1676140375004000000", + "asDouble": 10.0 + } + ] + } + }, + { + "name": "airflow.dag_processing.file_path_queue_size", + "gauge": { + "dataPoints": [ + { + "timeUnixNano": "1676140375004000000", + "asDouble": 4.0 + } + ] + } + }, + { + "name": "airflow.dataset.updates", + "sum": { + "aggregationTemporality": 2, + "isMonotonic": true, + "dataPoints": [ + { + "startTimeUnixNano": "1676140244999000000", + "timeUnixNano": "1676140375004000000", + "asDouble": 7.0 + } + ] + } + }, + { + "name": "airflow.dataset.orphaned", + "gauge": { + "dataPoints": [ + { + "timeUnixNano": "1676140375004000000", + "asDouble": 1.0 + } + ] + } + }, + { + "name": "airflow.dataset.triggered_dagruns", + "sum": { + "aggregationTemporality": 2, + "isMonotonic": true, + "dataPoints": [ + { + "startTimeUnixNano": "1676140244999000000", + "timeUnixNano": "1676140375004000000", + "asDouble": 2.0 + } + ] + } + } + ] + } + ] + }, + { + "resource": { + "attributes": [ + { + "key": "service.name", + "value": { + "stringValue": "Airflow" + } + }, + { + "key": "cluster", + "value": { + "stringValue": "airflow-cluster" + } + }, + { + "key": "host.name", + "value": { + "stringValue": "airflow-worker-1" + } + } + ] + }, + "scopeMetrics": [ + { + "scope": {}, + "metrics": [ + { + "name": "airflow.pool.deferred_slots", + "gauge": { + "dataPoints": [ + { + "timeUnixNano": "1676140375004000000", + "asDouble": 0.0, + "attributes": [ + { + "key": "pool_name", + "value": { + "stringValue": "default_pool" + } + } + ] + } + ] + } + }, + { + "name": "airflow.pool.open_slots", + "gauge": { + "dataPoints": [ + { + "timeUnixNano": "1676140375004000000", + "asDouble": 8.0, + "attributes": [ + { + "key": "pool_name", + "value": { + "stringValue": "default_pool" + } + } + ] + } + ] + } + }, + { + "name": "airflow.pool.running_slots", + "gauge": { + "dataPoints": [ + { + "timeUnixNano": "1676140375004000000", + "asDouble": 2.0, + "attributes": [ + { + "key": "pool_name", + "value": { + "stringValue": "default_pool" + } + } + ] + } + ] + } + }, + { + "name": "airflow.dataset.updates", + "sum": { + "aggregationTemporality": 2, + "isMonotonic": true, + "dataPoints": [ + { + "startTimeUnixNano": "1676140244999000000", + "timeUnixNano": "1676140375004000000", + "asDouble": 4.0 + } + ] + } + } + ] + } + ] + }, + { + "resource": { + "attributes": [ + { + "key": "service.name", + "value": { + "stringValue": "Airflow" + } + }, + { + "key": "cluster", + "value": { + "stringValue": "airflow-cluster" + } + }, + { + "key": "host.name", + "value": { + "stringValue": "airflow-triggerer" + } + } + ] + }, + "scopeMetrics": [ + { + "scope": {}, + "metrics": [ + { + "name": "airflow.scheduler.tasks.executable", + "gauge": { + "dataPoints": [ + { + "timeUnixNano": "1676140375004000000", + "asDouble": 0.0 + } + ] + } + }, + { + "name": "airflow.triggerer_heartbeat", + "sum": { + "aggregationTemporality": 2, + "isMonotonic": true, + "dataPoints": [ + { + "startTimeUnixNano": "1676140244999000000", + "timeUnixNano": "1676140375004000000", + "asDouble": 5.0 + } + ] + } + }, + { + "name": "airflow.triggers.blocked_main_thread", + "sum": { + "aggregationTemporality": 2, + "isMonotonic": true, + "dataPoints": [ + { + "startTimeUnixNano": "1676140244999000000", + "timeUnixNano": "1676140375004000000", + "asDouble": 0.0 + } + ] + } + }, + { + "name": "airflow.triggers.failed", + "sum": { + "aggregationTemporality": 2, + "isMonotonic": true, + "dataPoints": [ + { + "startTimeUnixNano": "1676140244999000000", + "timeUnixNano": "1676140375004000000", + "asDouble": 0.0 + } + ] + } + }, + { + "name": "airflow.triggers.succeeded", + "sum": { + "aggregationTemporality": 2, + "isMonotonic": true, + "dataPoints": [ + { + "startTimeUnixNano": "1676140244999000000", + "timeUnixNano": "1676140375004000000", + "asDouble": 3.0 + } + ] + } + } + ] + } + ] + } + ] +} diff --git a/test/e2e-v2/cases/airflow/mock-sender/pom.xml b/test/e2e-v2/cases/airflow/mock-sender/pom.xml new file mode 100644 index 000000000000..b8c05e0295d5 --- /dev/null +++ b/test/e2e-v2/cases/airflow/mock-sender/pom.xml @@ -0,0 +1,75 @@ + + + + + + apache-skywalking-e2e + org.apache.skywalking + 2.0.0 + ../../../java-test-service/pom.xml + + + 4.0.0 + jar + airflow-mock-sender + + + + org.apache.skywalking + opentelemetry-proto + ${project.version} + + + com.google.protobuf + protobuf-java-util + 3.21.12 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring.boot.version} + + true + true + true + + + + + repackage + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + + true + + + + + diff --git a/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowMockSenderApplication.java b/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowMockSenderApplication.java new file mode 100644 index 000000000000..4aaca2cac808 --- /dev/null +++ b/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowMockSenderApplication.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.e2e.airflow; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class AirflowMockSenderApplication { + public static void main(String[] args) { + SpringApplication.run(AirflowMockSenderApplication.class, args); + } +} diff --git a/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowOtelMetricsSender.java b/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowOtelMetricsSender.java new file mode 100644 index 000000000000..786f105c10d9 --- /dev/null +++ b/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowOtelMetricsSender.java @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.e2e.airflow; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.google.protobuf.util.JsonFormat; +import io.grpc.ManagedChannel; +import io.grpc.internal.DnsNameResolverProvider; +import io.grpc.netty.NettyChannelBuilder; +import io.grpc.stub.StreamObserver; +import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest; +import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse; +import io.opentelemetry.proto.collector.metrics.v1.MetricsServiceGrpc; +import java.io.File; +import java.io.IOException; +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Airflow mock e2e OTLP replay sender. Lives under {@code test/e2e-v2/cases/airflow/} so the + * shared {@code e2e-mock-sender} stays unchanged. Rewrites timestamps and bumps cumulative sum + * counters so MAL {@code increase('PT1M')} rules observe non-zero values on JSON replay. + */ +@Slf4j +@RestController +@RequestMapping("/otel-metrics") +public class AirflowOtelMetricsSender { + private static final int MAX_INBOUND_MESSAGE_SIZE = 1024 * 1024 * 50; + private static final AtomicInteger SEND_SEQ = new AtomicInteger(0); + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + private final MetricsServiceGrpc.MetricsServiceStub metricsServiceStub; + private final String otelMetricsDataPath; + + public AirflowOtelMetricsSender(final AirflowSenderConfiguration configuration) { + final ManagedChannel channel = NettyChannelBuilder.forAddress( + configuration.getOapHost(), + Integer.parseInt(configuration.getOapGrpcPort())) + .nameResolverFactory(new DnsNameResolverProvider()) + .maxInboundMessageSize(MAX_INBOUND_MESSAGE_SIZE) + .usePlaintext() + .build(); + this.metricsServiceStub = MetricsServiceGrpc.newStub(channel); + this.otelMetricsDataPath = configuration.getOtelMetricsDataPath(); + } + + @GetMapping("send") + public String sendMetricsByTemplate() throws IOException { + File otelData = new File(this.otelMetricsDataPath); + if (!otelData.exists() || !otelData.isDirectory()) { + String msg = "The path must be a folder : " + this.otelMetricsDataPath; + log.error(msg); + return msg; + } + final File[] files = findJSONFiles(otelData); + if (files.length == 0) { + String msg = "The folder doesn't contain any json file : " + this.otelMetricsDataPath; + log.error(msg); + return msg; + } + for (File file : files) { + final ExportMetricsServiceRequest.Builder builder = ExportMetricsServiceRequest.newBuilder(); + String jsonData = rewriteTimeField(file); + JsonFormat.parser().merge(jsonData, builder); + sendReq(builder); + } + return "ok"; + } + + private String rewriteTimeField(File file) throws IOException { + final int seq = SEND_SEQ.incrementAndGet(); + final long nanoTime = System.currentTimeMillis() * 1000000L; + final long startNanoTime = nanoTime - 60_000_000_000L; + final JsonNode root = OBJECT_MAPPER.readTree(file); + rewriteNode(root, nanoTime, startNanoTime, seq); + return OBJECT_MAPPER.writeValueAsString(root); + } + + private void rewriteNode(final JsonNode node, final long nanoTime, final long startNanoTime, final int seq) { + if (node.isObject()) { + final ObjectNode objectNode = (ObjectNode) node; + if (objectNode.has("timeUnixNano")) { + objectNode.put("timeUnixNano", String.valueOf(nanoTime)); + } + if (objectNode.has("startTimeUnixNano")) { + objectNode.put("startTimeUnixNano", String.valueOf(startNanoTime)); + } + if (objectNode.has("asDouble") && objectNode.has("startTimeUnixNano")) { + objectNode.put("asDouble", objectNode.get("asDouble").asDouble() + seq); + } + final Iterator> fields = objectNode.fields(); + while (fields.hasNext()) { + rewriteNode(fields.next().getValue(), nanoTime, startNanoTime, seq); + } + return; + } + if (node.isArray()) { + for (JsonNode child : node) { + rewriteNode(child, nanoTime, startNanoTime, seq); + } + } + } + + private void sendReq(final ExportMetricsServiceRequest.Builder builder) { + this.metricsServiceStub.export(builder.build(), new StreamObserver() { + @Override + public void onNext(final ExportMetricsServiceResponse exportMetricsServiceResponse) { + } + + @Override + public void onError(final Throwable throwable) { + log.error("sendOtelMetrics by template error ", throwable); + } + + @Override + public void onCompleted() { + } + }); + } + + private File[] findJSONFiles(final File otelData) { + return otelData.listFiles((dir, name) -> name.endsWith(".json")); + } +} diff --git a/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowSenderConfiguration.java b/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowSenderConfiguration.java new file mode 100644 index 000000000000..b2936aa0a088 --- /dev/null +++ b/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowSenderConfiguration.java @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.e2e.airflow; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +@ConfigurationProperties("airflow-e2e") +public class AirflowSenderConfiguration { + private String oapHost; + private String oapGrpcPort; + private String otelMetricsDataPath; +} diff --git a/test/e2e-v2/cases/airflow/mock-sender/src/main/resources/application.yml b/test/e2e-v2/cases/airflow/mock-sender/src/main/resources/application.yml new file mode 100644 index 000000000000..02e42dc989b0 --- /dev/null +++ b/test/e2e-v2/cases/airflow/mock-sender/src/main/resources/application.yml @@ -0,0 +1,26 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +server: + port: 9093 + +spring: + main: + banner-mode: 'off' + +airflow-e2e: + oap-host: ${OAP_HOST:127.0.0.1} + oap-grpc-port: ${OAP_GRPC_PORT:11800} + otel-metrics-data-path: ${OTEL_METRICS_DATA_PATH:/data/otel-metrics/} diff --git a/test/e2e-v2/cases/airflow/otel-collector-config.yaml b/test/e2e-v2/cases/airflow/otel-collector-config.yaml new file mode 100644 index 000000000000..1bb74a2eafa4 --- /dev/null +++ b/test/e2e-v2/cases/airflow/otel-collector-config.yaml @@ -0,0 +1,41 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +receivers: + otlp: + protocols: + http: + endpoint: 0.0.0.0:4318 + grpc: + endpoint: 0.0.0.0:4317 + +processors: + batch: + +exporters: + otlp: + endpoint: oap:11800 + tls: + insecure: true + +service: + pipelines: + metrics: + receivers: + - otlp + processors: + - batch + exporters: + - otlp diff --git a/test/e2e-v2/cases/airflow/scripts/cluster-compose-env.sh b/test/e2e-v2/cases/airflow/scripts/cluster-compose-env.sh new file mode 100644 index 000000000000..a7623191a98a --- /dev/null +++ b/test/e2e-v2/cases/airflow/scripts/cluster-compose-env.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Shared docker compose helpers for Airflow cluster e2e. +# infra-e2e uses project name {workspace}_e2e (e.g. skywalking_e2e), not the case folder name. + +COMPOSE_FILE="${COMPOSE_FILE:-test/e2e-v2/cases/airflow/docker-compose-cluster.yml}" +COMPOSE_OVERRIDE="${COMPOSE_OVERRIDE:-}" + +resolve_compose_project() { + if [[ -n "${COMPOSE_PROJECT_NAME:-}" ]]; then + echo "${COMPOSE_PROJECT_NAME}" + return + fi + local scheduler_container + scheduler_container="$(docker ps --filter 'name=-airflow-scheduler-' --format '{{.Names}}' | head -1)" + if [[ -n "${scheduler_container}" ]]; then + echo "${scheduler_container%-airflow-scheduler-*}" + return + fi + echo "skywalking_e2e" +} + +COMPOSE_PROJECT_NAME="$(resolve_compose_project)" + +dc() { + if [[ -n "${COMPOSE_OVERRIDE}" ]]; then + docker compose -p "${COMPOSE_PROJECT_NAME}" -f "${COMPOSE_FILE}" -f "${COMPOSE_OVERRIDE}" "$@" + else + docker compose -p "${COMPOSE_PROJECT_NAME}" -f "${COMPOSE_FILE}" "$@" + fi +} diff --git a/test/e2e-v2/cases/airflow/scripts/export-e2e-env.sh b/test/e2e-v2/cases/airflow/scripts/export-e2e-env.sh new file mode 100644 index 000000000000..617af8fae566 --- /dev/null +++ b/test/e2e-v2/cases/airflow/scripts/export-e2e-env.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# infra-e2e reads ~/.skywalking-infra-e2e/.env for ${oap_host} / ${oap_12800} substitution in verify. +# On Windows the runner may not populate that file; export ports from the running compose project. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# shellcheck source=cluster-compose-env.sh +source "${SCRIPT_DIR}/cluster-compose-env.sh" + +OAP_PORT="$(dc port oap 12800 | cut -d: -f2)" +ENV_DIR="${HOME}/.skywalking-infra-e2e" +ENV_FILE="${ENV_DIR}/.env" + +mkdir -p "${ENV_DIR}" +cat > "${ENV_FILE}" < setup (tools + workload) -> verify all cases. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "${SCRIPT_DIR}/../../../../.." && pwd)" +cd "${REPO_ROOT}" + +export OTEL_COLLECTOR_VERSION="${OTEL_COLLECTOR_VERSION:-0.102.1}" +export SW_AGENT_JDK_VERSION="${SW_AGENT_JDK_VERSION:-8}" + +# shellcheck source=cluster-compose-env.sh +source "${SCRIPT_DIR}/cluster-compose-env.sh" + +echo "=== Airflow cluster full e2e (project ${COMPOSE_PROJECT_NAME}) ===" +dc down --remove-orphans 2>/dev/null || true +dc up -d + +/usr/bin/bash test/e2e-v2/cases/airflow/scripts/run-cluster-setup.sh +/usr/bin/bash test/e2e-v2/cases/airflow/scripts/verify-cluster-e2e.sh + +echo "=== Full cluster e2e PASSED ===" diff --git a/test/e2e-v2/cases/airflow/scripts/run-mock-e2e.sh b/test/e2e-v2/cases/airflow/scripts/run-mock-e2e.sh new file mode 100644 index 000000000000..19fbe789f8e5 --- /dev/null +++ b/test/e2e-v2/cases/airflow/scripts/run-mock-e2e.sh @@ -0,0 +1,102 @@ +#!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Local mock e2e (OAP + BanyanDB + OTLP JSON replay). Avoids infra-e2e CRLF env issues on +# Windows and uses a locally available Temurin JRE image for the sender sidecar. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +CASE_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" +REPO_ROOT="$(cd "${SCRIPT_DIR}/../../../../.." && pwd)" +cd "${REPO_ROOT}" + +export SW_BANYANDB_COMMIT="${SW_BANYANDB_COMMIT:-84b919efca3fee3d51df9e97a734a9f10ae6f1d2}" +export COMPOSE_PROJECT_NAME="${COMPOSE_PROJECT_NAME:-airflow_mock_e2e}" +export PATH="/tmp/skywalking-infra-e2e/bin:/usr/bin:/bin:${PATH}" + +COMPOSE_FILE="${CASE_DIR}/docker-compose.yml" +LOCAL_OVERRIDE="${CASE_DIR}/docker-compose.mock-local.yml" +MOCK_SENDER_POM="${REPO_ROOT}/test/e2e-v2/cases/airflow/mock-sender/pom.xml" +E2E_LIBS_POM="${REPO_ROOT}/test/e2e-v2/java-test-service/pom.xml" +JAR="${REPO_ROOT}/test/e2e-v2/cases/airflow/mock-sender/target/airflow-mock-sender-2.0.0.jar" + +dc() { + docker compose -f "${COMPOSE_FILE}" -f "${LOCAL_OVERRIDE}" -p "${COMPOSE_PROJECT_NAME}" "$@" +} + +echo "=== Airflow mock e2e (project ${COMPOSE_PROJECT_NAME}) ===" + +build_mock_sender() { + echo "Building airflow-mock-sender dependencies..." + ./mvnw -B -q -f "${E2E_LIBS_POM}" -pl opentelemetry-proto -am install \ + -Dcheckstyle.skip=true -Dgpg.skip=true -Dmaven.test.skip=true + echo "Building airflow-mock-sender..." + ./mvnw -B -q -f "${MOCK_SENDER_POM}" clean flatten:flatten package \ + -Dcheckstyle.skip=true -Dgpg.skip=true +} + +if [[ ! -f "${JAR}" ]]; then + build_mock_sender +else + echo "Refreshing airflow-mock-sender jar..." + build_mock_sender +fi + +docker compose -f "${COMPOSE_FILE}" -f "${LOCAL_OVERRIDE}" -p "${COMPOSE_PROJECT_NAME}" down --remove-orphans 2>/dev/null || true +dc up -d + +echo "Waiting for OAP and mock sender..." +for _ in $(seq 1 90); do + if dc exec -T oap bash -c 'cat < /dev/null > /dev/tcp/127.0.0.1/11800' 2>/dev/null && + dc exec -T sender sh -c 'nc -nz 127.0.0.1 9093' 2>/dev/null; then + break + fi + sleep 5 +done + +/usr/bin/bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl +/usr/bin/bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq + +trigger_metrics() { + dc exec -T sender sh -c \ + 'wget -q -O /dev/null http://127.0.0.1:9093/otel-metrics/send 2>/dev/null || curl -sf http://127.0.0.1:9093/otel-metrics/send' +} + +# Replay like infra-e2e trigger (continuous during verify for PT1M increase metrics). +trigger_loop() { + while true; do + trigger_metrics || true + sleep 3 + done +} + +echo "Seeding OTLP metrics..." +trigger_loop & +TRIGGER_PID=$! +sleep 120 + +VERIFY_RETRIES=20 VERIFY_INTERVAL_SECONDS=10 \ + /usr/bin/bash "${SCRIPT_DIR}/verify-mock-e2e.sh" || VERIFY_EXIT=$? + +kill "${TRIGGER_PID}" 2>/dev/null || true +wait "${TRIGGER_PID}" 2>/dev/null || true + +if [[ "${VERIFY_EXIT:-0}" -ne 0 ]]; then + exit "${VERIFY_EXIT}" +fi + +echo "=== Mock e2e PASSED ===" diff --git a/test/e2e-v2/cases/airflow/scripts/seed-e2e-cluster-workload.sh b/test/e2e-v2/cases/airflow/scripts/seed-e2e-cluster-workload.sh new file mode 100644 index 000000000000..bd38c7a2ef34 --- /dev/null +++ b/test/e2e-v2/cases/airflow/scripts/seed-e2e-cluster-workload.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# shellcheck source=cluster-compose-env.sh +source "${SCRIPT_DIR}/cluster-compose-env.sh" + +SCHEDULER="${AIRFLOW_SCHEDULER_SERVICE:-airflow-scheduler}" +ROUNDS="${SEED_ROUNDS:-3}" +INTERVAL="${SEED_INTERVAL_SECONDS:-20}" +RUN_SECONDS="${RUN_SECONDS:-240}" + +# Native OTel coverage: deferrable (triggerer triggers_*) and dataset (asset_*). +NATIVE_OTEL_DAGS=( + e2e_deferrable + e2e_dataset_producer + e2e_dataset_consumer +) + +LOAD_DAGS=( + cluster_smoke + cluster_load + example_bash_operato + example_python_operato + example_branch_operato + example_short_circuit_operato +) + +echo "=== Airflow real-cluster e2e: seed workload (project ${COMPOSE_PROJECT_NAME}, ${ROUNDS} rounds, then ${RUN_SECONDS}s) ===" + +# Scheduler health does not guarantee DagModel is populated; trigger fails silently otherwise. +echo "Syncing DAG metadata to database..." +dc exec -T "${SCHEDULER}" airflow dags reserialize >/dev/null 2>&1 || true +sleep 10 + +trigger_dags() { + local dag + for dag in "$@"; do + dc exec -T "${SCHEDULER}" airflow dags trigger "${dag}" >/dev/null 2>&1 || true + done +} + +echo "Trigger native-OTel DAGs (deferrable + dataset)..." +trigger_dags "${NATIVE_OTEL_DAGS[@]}" + +for round in $(seq 1 "${ROUNDS}"); do + echo "Trigger load round ${round}/${ROUNDS}" + trigger_dags "${LOAD_DAGS[@]}" + trigger_dags e2e_deferrable e2e_dataset_producer e2e_dataset_consumer + if [[ "${round}" -lt "${ROUNDS}" ]]; then + sleep "${INTERVAL}" + fi +done + +echo "Running ${RUN_SECONDS}s for deferrable triggers, dataset events, and MAL aggregation..." +sleep "${RUN_SECONDS}" +echo "Workload seed complete." diff --git a/test/e2e-v2/cases/airflow/scripts/verify-cluster-e2e.sh b/test/e2e-v2/cases/airflow/scripts/verify-cluster-e2e.sh new file mode 100644 index 000000000000..aa7baef3ac45 --- /dev/null +++ b/test/e2e-v2/cases/airflow/scripts/verify-cluster-e2e.sh @@ -0,0 +1,179 @@ +#!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Real Celery cluster integration verify (mirrors airflow-cluster-cases.yaml). +# Topology: 1 service + 3 OTLP-exporting instances + 11 service metrics + 13 instance metrics = 26 checks. +# Full SWIP-7 (30 checks) is covered by the mock suite (airflow-cases.yaml). + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# shellcheck source=cluster-compose-env.sh +source "${SCRIPT_DIR}/cluster-compose-env.sh" + +export PATH="/tmp/skywalking-infra-e2e/bin:/usr/bin:/bin:${PATH}" + +SERVICE="airflow::airflow-e2e-cluster" +RETRIES="${VERIFY_RETRIES:-18}" +INTERVAL="${VERIFY_INTERVAL_SECONDS:-10}" +REPORT="${VERIFY_REPORT:-test/e2e-v2/cases/airflow/cluster-e2e-report.txt}" + +OAP_PORT="$(dc port oap 12800 | cut -d: -f2)" +BASE_URL="http://localhost:${OAP_PORT}/graphql" +SWCTL="${SWCTL:-swctl}" + +pass=0 +fail=0 + +log() { + echo "$@" | tee -a "${REPORT}" +} + +check_pass() { + pass=$((pass + 1)) + log " PASS: $1" +} + +check_fail() { + fail=$((fail + 1)) + log " FAIL: $1" + if [[ -n "${2:-}" ]]; then + log " detail: $2" + fi +} + +# At least one time-series point with a non-null numeric value (0 is OK). +metric_has_value() { + local expression="$1" + shift + local out + out="$("${SWCTL}" --display yaml --base-url="${BASE_URL}" metrics exec \ + --expression="${expression}" --service-name="${SERVICE}" "$@" 2>&1)" || return 1 + echo "${out}" | grep -q 'type: TIME_SERIES_VALUES' || return 1 + echo "${out}" | grep -qE '^[[:space:]]*- id:' || return 1 + echo "${out}" | grep -qE '^[[:space:]]*value: ("[0-9]+(\.[0-9]+)?"|[0-9]+(\.[0-9]+)?)$' +} + +verify_metric() { + local label="$1" + local expression="$2" + shift 2 + local attempt + for attempt in $(seq 1 "${RETRIES}"); do + if metric_has_value "${expression}" "$@"; then + check_pass "${label}" + return 0 + fi + if [[ "${attempt}" -lt "${RETRIES}" ]]; then + sleep "${INTERVAL}" + fi + done + check_fail "${label}" "no non-null value after ${RETRIES} attempts" + return 1 +} + +mkdir -p "$(dirname "${REPORT}")" +: > "${REPORT}" +log "=== Airflow cluster e2e verify (integration smoke) ===" +log "time: $(date -u +%Y-%m-%dT%H:%M:%SZ)" +log "compose project: ${COMPOSE_PROJECT_NAME}" +log "OAP GraphQL: ${BASE_URL}" +log "" + +# --- Topology --- +for attempt in $(seq 1 "${RETRIES}"); do + if out=$("${SWCTL}" --display yaml --base-url="${BASE_URL}" service ly AIRFLOW 2>&1) && + echo "${out}" | grep -q "name: airflow::airflow-e2e-cluster" && + echo "${out}" | grep -q "AIRFLOW"; then + check_pass "service ly AIRFLOW -> airflow::airflow-e2e-cluster" + break + fi + if [[ "${attempt}" -eq "${RETRIES}" ]]; then + check_fail "service ly AIRFLOW -> airflow::airflow-e2e-cluster" + else + sleep "${INTERVAL}" + fi +done + +for attempt in $(seq 1 "${RETRIES}"); do + if out=$("${SWCTL}" --display yaml --base-url="${BASE_URL}" instance ls --service-name="${SERVICE}" 2>&1) && + echo "${out}" | grep -q "name: airflow-scheduler" && + echo "${out}" | grep -q "name: airflow-worker-1" && + echo "${out}" | grep -q "name: airflow-triggerer"; then + check_pass "instances: scheduler, worker-1, triggerer" + break + fi + if [[ "${attempt}" -eq "${RETRIES}" ]]; then + check_fail "instances: scheduler, worker-1, triggerer" + else + sleep "${INTERVAL}" + fi +done + +log "" +log "--- Service metrics (11) ---" + +SERVICE_METRICS=( + meter_airflow_scheduler_tasks_executable + meter_airflow_executor_queued_tasks + meter_airflow_executor_running_tasks + meter_airflow_executor_open_slots + meter_airflow_pool_queued_slots + meter_airflow_pool_deferred_slots + meter_airflow_pool_scheduled_slots + meter_airflow_scheduler_heartbeat + meter_airflow_scheduler_orphaned_tasks_cleared + meter_airflow_scheduler_orphaned_tasks_adopted + meter_airflow_dag_file_queue_size +) + +for metric in "${SERVICE_METRICS[@]}"; do + verify_metric "${metric} (service)" "${metric}" || true +done + +log "" +log "--- Instance metrics (13) ---" + +# expression|instance-name|label suffix (13 instance-level metrics in cluster smoke) +INSTANCE_METRICS=( + "meter_airflow_instance_pool_open_slots|airflow-worker-1|pool_open_slots worker-1" + "meter_airflow_instance_pool_deferred_slots|airflow-worker-1|pool_deferred_slots worker-1" + "meter_airflow_instance_pool_running_slots|airflow-worker-1|pool_running_slots worker-1" + "meter_airflow_instance_pool_scheduled_slots|airflow-scheduler|pool_scheduled_slots scheduler" + "meter_airflow_instance_triggerer_heartbeat|airflow-triggerer|triggerer_heartbeat" + "meter_airflow_instance_triggers_succeeded|airflow-triggerer|triggers_succeeded" + "meter_airflow_instance_scheduler_tasks_executable|airflow-scheduler|scheduler_tasks_executable" + "meter_airflow_instance_scheduler_orphaned_tasks_cleared|airflow-scheduler|scheduler_orphaned_tasks_cleared" + "meter_airflow_instance_scheduler_orphaned_tasks_adopted|airflow-scheduler|scheduler_orphaned_tasks_adopted" + "meter_airflow_instance_executor_queued_tasks|airflow-scheduler|executor_queued_tasks scheduler" + "meter_airflow_instance_executor_running_tasks|airflow-scheduler|executor_running_tasks scheduler" + "meter_airflow_instance_asset_orphaned|airflow-scheduler|asset_orphaned scheduler" + "meter_airflow_instance_asset_triggered_dagruns|airflow-scheduler|asset_triggered_dagruns scheduler" +) + +for entry in "${INSTANCE_METRICS[@]}"; do + IFS='|' read -r expression instance label <<< "${entry}" + verify_metric "${expression} (${label})" "${expression}" --instance-name="${instance}" || true +done + +log "" +log "=== Summary ===" +log "PASS: ${pass} FAIL: ${fail} TOTAL: $((pass + fail))" +log "Report: ${REPORT}" + +if [[ "${fail}" -gt 0 ]]; then + exit 1 +fi diff --git a/test/e2e-v2/cases/airflow/scripts/verify-mock-e2e.sh b/test/e2e-v2/cases/airflow/scripts/verify-mock-e2e.sh new file mode 100644 index 000000000000..b145e2a80df1 --- /dev/null +++ b/test/e2e-v2/cases/airflow/scripts/verify-mock-e2e.sh @@ -0,0 +1,188 @@ +#!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Full SWIP-7 verify for mock OTLP replay (mirrors airflow-cases.yaml). +# Topology: 1 service + 3 instances + 12 service metrics + 16 instance metrics = 30 checks. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +CASE_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" +REPO_ROOT="$(cd "${SCRIPT_DIR}/../../../../.." && pwd)" +cd "${REPO_ROOT}" + +export COMPOSE_PROJECT_NAME="${COMPOSE_PROJECT_NAME:-airflow_mock_e2e}" +export PATH="/tmp/skywalking-infra-e2e/bin:/usr/bin:/bin:${PATH}" + +COMPOSE_FILE="${CASE_DIR}/docker-compose.yml" +LOCAL_OVERRIDE="${CASE_DIR}/docker-compose.mock-local.yml" +SERVICE="airflow::airflow-cluster" +RETRIES="${VERIFY_RETRIES:-20}" +INTERVAL="${VERIFY_INTERVAL_SECONDS:-10}" +REPORT="${VERIFY_REPORT:-test/e2e-v2/cases/airflow/mock-e2e-report.txt}" + +dc() { + docker compose -f "${COMPOSE_FILE}" -f "${LOCAL_OVERRIDE}" -p "${COMPOSE_PROJECT_NAME}" "$@" +} + +OAP_PORT="$(dc port oap 12800 | cut -d: -f2)" +BASE_URL="http://localhost:${OAP_PORT}/graphql" +SWCTL="${SWCTL:-swctl}" + +pass=0 +fail=0 + +log() { + echo "$@" | tee -a "${REPORT}" +} + +check_pass() { + pass=$((pass + 1)) + log " PASS: $1" +} + +check_fail() { + fail=$((fail + 1)) + log " FAIL: $1" + if [[ -n "${2:-}" ]]; then + log " detail: $2" + fi +} + +metric_has_value() { + local expression="$1" + shift + local out + out="$("${SWCTL}" --display yaml --base-url="${BASE_URL}" metrics exec \ + --expression="${expression}" --service-name="${SERVICE}" "$@" 2>&1)" || return 1 + echo "${out}" | grep -q 'type: TIME_SERIES_VALUES' || return 1 + echo "${out}" | grep -qE '^[[:space:]]*- id:' || return 1 + echo "${out}" | grep -qE '^[[:space:]]*value: ("[0-9]+(\.[0-9]+)?"|[0-9]+(\.[0-9]+)?)$' +} + +verify_metric() { + local label="$1" + local expression="$2" + shift 2 + local attempt + for attempt in $(seq 1 "${RETRIES}"); do + if metric_has_value "${expression}" "$@"; then + check_pass "${label}" + return 0 + fi + if [[ "${attempt}" -lt "${RETRIES}" ]]; then + sleep "${INTERVAL}" + fi + done + check_fail "${label}" "no non-null value after ${RETRIES} attempts" + return 1 +} + +mkdir -p "$(dirname "${REPORT}")" +: > "${REPORT}" +log "=== Airflow mock e2e verify (full SWIP-7) ===" +log "time: $(date -u +%Y-%m-%dT%H:%M:%SZ)" +log "compose project: ${COMPOSE_PROJECT_NAME}" +log "OAP GraphQL: ${BASE_URL}" +log "" + +for attempt in $(seq 1 "${RETRIES}"); do + if out=$("${SWCTL}" --display yaml --base-url="${BASE_URL}" service ly AIRFLOW 2>&1) && + echo "${out}" | grep -q "name: airflow::airflow-cluster" && + echo "${out}" | grep -q "AIRFLOW"; then + check_pass "service ly AIRFLOW -> airflow::airflow-cluster" + break + fi + if [[ "${attempt}" -eq "${RETRIES}" ]]; then + check_fail "service ly AIRFLOW -> airflow::airflow-cluster" + else + sleep "${INTERVAL}" + fi +done + +for attempt in $(seq 1 "${RETRIES}"); do + if out=$("${SWCTL}" --display yaml --base-url="${BASE_URL}" instance ls \ + --service-name="${SERVICE}" 2>&1) && + echo "${out}" | grep -q "name: airflow-scheduler" && + echo "${out}" | grep -q "name: airflow-worker-1" && + echo "${out}" | grep -q "name: airflow-triggerer"; then + check_pass "instances: scheduler, worker-1, triggerer" + break + fi + if [[ "${attempt}" -eq "${RETRIES}" ]]; then + check_fail "instances: scheduler, worker-1, triggerer" + else + sleep "${INTERVAL}" + fi +done + +log "" +log "--- Service metrics (12) ---" + +SERVICE_METRICS=( + meter_airflow_scheduler_tasks_executable + meter_airflow_executor_queued_tasks + meter_airflow_executor_running_tasks + meter_airflow_executor_open_slots + meter_airflow_pool_queued_slots + meter_airflow_pool_deferred_slots + meter_airflow_pool_scheduled_slots + meter_airflow_scheduler_heartbeat + meter_airflow_scheduler_orphaned_tasks_cleared + meter_airflow_scheduler_orphaned_tasks_adopted + meter_airflow_dag_file_queue_size + meter_airflow_asset_updates +) + +for metric in "${SERVICE_METRICS[@]}"; do + verify_metric "${metric} (service)" "${metric}" || true +done + +log "" +log "--- Instance metrics (16) ---" + +INSTANCE_METRICS=( + "meter_airflow_instance_pool_open_slots|airflow-worker-1|pool_open_slots worker-1" + "meter_airflow_instance_pool_deferred_slots|airflow-worker-1|pool_deferred_slots worker-1" + "meter_airflow_instance_pool_running_slots|airflow-worker-1|pool_running_slots worker-1" + "meter_airflow_instance_pool_scheduled_slots|airflow-scheduler|pool_scheduled_slots scheduler" + "meter_airflow_instance_triggerer_heartbeat|airflow-triggerer|triggerer_heartbeat" + "meter_airflow_instance_triggers_blocked_main_thread|airflow-triggerer|triggers_blocked_main_thread" + "meter_airflow_instance_triggers_failed|airflow-triggerer|triggers_failed" + "meter_airflow_instance_triggers_succeeded|airflow-triggerer|triggers_succeeded" + "meter_airflow_instance_scheduler_tasks_executable|airflow-scheduler|scheduler_tasks_executable" + "meter_airflow_instance_scheduler_orphaned_tasks_cleared|airflow-scheduler|scheduler_orphaned_tasks_cleared" + "meter_airflow_instance_scheduler_orphaned_tasks_adopted|airflow-scheduler|scheduler_orphaned_tasks_adopted" + "meter_airflow_instance_executor_queued_tasks|airflow-scheduler|executor_queued_tasks scheduler" + "meter_airflow_instance_executor_running_tasks|airflow-scheduler|executor_running_tasks scheduler" + "meter_airflow_instance_asset_updates|airflow-worker-1|asset_updates worker-1" + "meter_airflow_instance_asset_orphaned|airflow-scheduler|asset_orphaned scheduler" + "meter_airflow_instance_asset_triggered_dagruns|airflow-scheduler|asset_triggered_dagruns scheduler" +) + +for entry in "${INSTANCE_METRICS[@]}"; do + IFS='|' read -r expression instance label <<< "${entry}" + verify_metric "${expression} (${label})" "${expression}" --instance-name="${instance}" || true +done + +log "" +log "=== Summary ===" +log "PASS: ${pass} FAIL: ${fail} TOTAL: $((pass + fail))" +log "Report: ${REPORT}" + +if [[ "${fail}" -gt 0 ]]; then + exit 1 +fi diff --git a/test/e2e-v2/cases/airflow/scripts/wait-scheduler-healthy.sh b/test/e2e-v2/cases/airflow/scripts/wait-scheduler-healthy.sh new file mode 100644 index 000000000000..b558f5c9c1ae --- /dev/null +++ b/test/e2e-v2/cases/airflow/scripts/wait-scheduler-healthy.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# shellcheck source=cluster-compose-env.sh +source "${SCRIPT_DIR}/cluster-compose-env.sh" + +SCHEDULER="${AIRFLOW_SCHEDULER_SERVICE:-airflow-scheduler}" +MAX_ATTEMPTS="${SCHEDULER_HEALTH_ATTEMPTS:-90}" +SLEEP_SECONDS="${SCHEDULER_HEALTH_INTERVAL_SECONDS:-10}" + +echo "Waiting for ${SCHEDULER} (compose project ${COMPOSE_PROJECT_NAME})..." + +for _ in $(seq 1 "${MAX_ATTEMPTS}"); do + if dc exec -T "${SCHEDULER}" \ + airflow jobs check --job-type SchedulerJob --hostname "${SCHEDULER}"; then + echo "Airflow scheduler healthy" + exit 0 + fi + sleep "${SLEEP_SECONDS}" +done + +echo "Airflow scheduler did not become healthy in time" +exit 1 diff --git a/test/e2e-v2/cases/storage/expected/config-dump.yml b/test/e2e-v2/cases/storage/expected/config-dump.yml index a95bda9e18f3..e2a37ee996cb 100644 --- a/test/e2e-v2/cases/storage/expected/config-dump.yml +++ b/test/e2e-v2/cases/storage/expected/config-dump.yml @@ -176,7 +176,7 @@ "receiver-log.provider": "default", "receiver-meter.provider": "default", "receiver-otel.default.enabledHandlers": "otlp-traces,otlp-metrics,otlp-logs", - "receiver-otel.default.enabledOtelMetricsRules": "apisix,nginx/*,k8s/*,istio-controlplane,vm,mysql/*,postgresql/*,oap,aws-eks/*,windows,aws-s3/*,aws-dynamodb/*,aws-gateway/*,redis/*,elasticsearch/*,rabbitmq/*,mongodb/*,kafka/*,pulsar/*,bookkeeper/*,rocketmq/*,clickhouse/*,activemq/*,kong/*,flink/*,banyandb/*,envoy-ai-gateway/*,ios/*,miniprogram/*", + "receiver-otel.default.enabledOtelMetricsRules": "apisix,nginx/*,k8s/*,istio-controlplane,vm,mysql/*,postgresql/*,oap,aws-eks/*,windows,aws-s3/*,aws-dynamodb/*,aws-gateway/*,redis/*,elasticsearch/*,rabbitmq/*,mongodb/*,kafka/*,pulsar/*,bookkeeper/*,rocketmq/*,clickhouse/*,activemq/*,kong/*,flink/*,airflow/*,banyandb/*,envoy-ai-gateway/*,ios/*,miniprogram/*", "receiver-otel.provider": "default", "receiver-pprof.default.memoryParserEnabled": "true", "receiver-pprof.default.pprofMaxSize": "31457280", From b810bdf87a5cc29fde3ae2d09cfa691eaf88981c Mon Sep 17 00:00:00 2001 From: songzhendong Date: Fri, 5 Jun 2026 10:39:38 +0800 Subject: [PATCH 2/4] fix(e2e): fix airflow case CI license and dead link checks Remove empty .gitkeep placeholders that fail license-eye, and stop linking to gitignored runtime report/log files in the case README. --- test/e2e-v2/cases/airflow/.gitignore | 1 - test/e2e-v2/cases/airflow/README.md | 8 ++++---- test/e2e-v2/cases/airflow/cluster/config/.gitkeep | 0 test/e2e-v2/cases/airflow/cluster/logs/.gitkeep | 0 test/e2e-v2/cases/airflow/cluster/plugins/.gitkeep | 0 5 files changed, 4 insertions(+), 5 deletions(-) delete mode 100644 test/e2e-v2/cases/airflow/cluster/config/.gitkeep delete mode 100644 test/e2e-v2/cases/airflow/cluster/logs/.gitkeep delete mode 100644 test/e2e-v2/cases/airflow/cluster/plugins/.gitkeep diff --git a/test/e2e-v2/cases/airflow/.gitignore b/test/e2e-v2/cases/airflow/.gitignore index a023e418add8..29cc0478f61b 100644 --- a/test/e2e-v2/cases/airflow/.gitignore +++ b/test/e2e-v2/cases/airflow/.gitignore @@ -1,6 +1,5 @@ # Runtime artifacts from local cluster e2e runs cluster/logs/** -!cluster/logs/.gitkeep cluster/dags/__pycache__/ cluster-e2e-report.txt cluster-e2e-run.log diff --git a/test/e2e-v2/cases/airflow/README.md b/test/e2e-v2/cases/airflow/README.md index 7b3ccfbe262e..270c35d61d1f 100644 --- a/test/e2e-v2/cases/airflow/README.md +++ b/test/e2e-v2/cases/airflow/README.md @@ -209,8 +209,8 @@ e2e run -c test/e2e-v2/cases/airflow/e2e.yaml ## Verification report Each cluster verify run writes a line-oriented report to -[`cluster-e2e-report.txt`](cluster-e2e-report.txt) (overwritten). Full compose logs from local -runs may be captured in [`cluster-e2e-run.log`](cluster-e2e-run.log). +`cluster-e2e-report.txt` (overwritten, gitignored). Full compose logs from local runs may be +captured in `cluster-e2e-run.log` (gitignored). ### Report format @@ -242,7 +242,7 @@ point whose `value` is a non-null number (zero counts as pass). **Instance metrics (13)** — excludes `asset_updates`, `triggers_failed`, `triggers_blocked_main_thread` -Full SWIP-7 (30 checks) baseline is the mock suite — see [`mock-e2e-report.txt`](mock-e2e-report.txt). +Full SWIP-7 (30 checks) baseline is the mock suite — see `mock-e2e-report.txt` (gitignored).
Historical full cluster run (30 checks, superseded by split above) @@ -267,7 +267,7 @@ Airflow without synthetic OTLP. Current cluster scope is the 26-check integratio | [`scripts/run-cluster-setup.sh`](scripts/run-cluster-setup.sh) | Tools + health + workload | | [`scripts/verify-cluster-e2e.sh`](scripts/verify-cluster-e2e.sh) | Cluster integration smoke (26 swctl checks) | | [`scripts/wait-scheduler-healthy.sh`](scripts/wait-scheduler-healthy.sh) | Scheduler health gate | -| [`cluster-e2e-report.txt`](cluster-e2e-report.txt) | Generated verify report (gitignored in practice) | +| `cluster-e2e-report.txt` | Generated verify report (gitignored) | ## CI diff --git a/test/e2e-v2/cases/airflow/cluster/config/.gitkeep b/test/e2e-v2/cases/airflow/cluster/config/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/test/e2e-v2/cases/airflow/cluster/logs/.gitkeep b/test/e2e-v2/cases/airflow/cluster/logs/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/test/e2e-v2/cases/airflow/cluster/plugins/.gitkeep b/test/e2e-v2/cases/airflow/cluster/plugins/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 From f4eb360e51d761da79a5a1d90adbb6f45fbb10c1 Mon Sep 17 00:00:00 2001 From: songzhendong Date: Fri, 5 Jun 2026 13:48:05 +0800 Subject: [PATCH 3/4] fix(e2e): fix Airflow mock and cluster CI failures Replace the Java mock-sender with a Python OTLP replay sidecar so port 9093 is ready under CI, and narrow the cluster integration smoke to 25 checks by dropping flaky pool_queued_slots and reusing instance.yml. --- docs/en/changes/changes.md | 2 +- .../backend/backend-airflow-monitoring.md | 12 +- ...application.yml => Dockerfile.mock-sender} | 24 +-- test/e2e-v2/cases/airflow/README.md | 27 ++-- .../cases/airflow/airflow-cluster-cases.yaml | 6 +- .../airflow/docker-compose.mock-local.yml | 2 - test/e2e-v2/cases/airflow/docker-compose.yml | 10 +- test/e2e-v2/cases/airflow/e2e-cluster.yaml | 2 +- test/e2e-v2/cases/airflow/e2e.yaml | 2 - .../airflow/expected/instance-cluster.yml | 32 ---- test/e2e-v2/cases/airflow/mock-sender/pom.xml | 75 --------- .../airflow/AirflowMockSenderApplication.java | 29 ---- .../e2e/airflow/AirflowOtelMetricsSender.java | 146 ------------------ .../airflow/AirflowSenderConfiguration.java | 32 ---- .../airflow/scripts/otlp_replay_server.py | 106 +++++++++++++ .../airflow/scripts/requirements-replay.txt | 4 + .../cases/airflow/scripts/run-mock-e2e.sh | 40 ++--- .../airflow/scripts/verify-cluster-e2e.sh | 5 +- .../cases/airflow/scripts/verify-mock-e2e.sh | 7 +- 19 files changed, 180 insertions(+), 383 deletions(-) rename test/e2e-v2/cases/airflow/{mock-sender/src/main/resources/application.yml => Dockerfile.mock-sender} (67%) delete mode 100644 test/e2e-v2/cases/airflow/expected/instance-cluster.yml delete mode 100644 test/e2e-v2/cases/airflow/mock-sender/pom.xml delete mode 100644 test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowMockSenderApplication.java delete mode 100644 test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowOtelMetricsSender.java delete mode 100644 test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowSenderConfiguration.java create mode 100644 test/e2e-v2/cases/airflow/scripts/otlp_replay_server.py create mode 100644 test/e2e-v2/cases/airflow/scripts/requirements-replay.txt diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md index 0d85c0d2f023..fec941aa8677 100644 --- a/docs/en/changes/changes.md +++ b/docs/en/changes/changes.md @@ -276,7 +276,7 @@ * Fix: TTL query add metadata TTL. * Fix: PersistentWorker used wrong TTL for metrics cache if the storage is BanyanDB. * Add iOS/iPadOS app monitoring via OpenTelemetry Swift SDK (SWIP-11). Includes the `IOS` layer, `IOSHTTPSpanListener` for outbound HTTP client metrics (supports OTel Swift `.old`/`.stable`/`.httpDup` semantic-convention modes via stable-then-legacy attribute fallback), `IOSMetricKitSpanListener` for daily MetricKit metrics (exit counts split by foreground/background, app-launch / hang-time percentile histograms with finite 30 s overflow ceiling), LAL rules for crash/hang diagnostics, Mobile menu, and iOS dashboards. -* Add Apache Airflow monitoring via native OpenTelemetry metrics (SWIP-7). New `AIRFLOW` layer with Service (cluster) and Instance (host) dimensions, MAL rules under `otel-rules/airflow/`, setup docs, mock OTLP e2e (`cases/airflow/e2e.yaml`: full SWIP-7, 30 checks), and real Celery-cluster integration smoke (`e2e-cluster.yaml`: scheduler + two workers + triggerer; deferrable and dataset DAGs with ~4-minute live workload; 26 checks — native scheduler/executor/triggerer OTLP plus e2e Celery sidecar pool gauges on one worker; metrics needing synthetic OTLP or rare failure events are mock-only). See `test/e2e-v2/cases/airflow/README.md`. Horizon UI dashboards ship separately in `apache/skywalking-horizon-ui` under the Workflow Scheduler menu group. +* Add Apache Airflow monitoring via native OpenTelemetry metrics (SWIP-7). New `AIRFLOW` layer with Service (cluster) and Instance (host) dimensions, MAL rules under `otel-rules/airflow/`, setup docs, mock OTLP e2e (`cases/airflow/e2e.yaml`: full SWIP-7, 30 checks), and real Celery-cluster integration smoke (`e2e-cluster.yaml`: scheduler + two workers + triggerer; deferrable and dataset DAGs with ~4-minute live workload; 25 checks — native scheduler/executor/triggerer OTLP plus e2e Celery sidecar pool gauges on one worker; metrics needing synthetic OTLP or rare failure events such as `pool_queued_slots` are mock-only). See `test/e2e-v2/cases/airflow/README.md`. Horizon UI dashboards ship separately in `apache/skywalking-horizon-ui` under the Workflow Scheduler menu group. * Fix LAL `layer: auto` mode dropping logs after extractor set the layer. Codegen now propagates `layer "..."` assignments to `LogMetadata.layer` so `FilterSpec.doSink()` sees the script-decided layer. * Fix MetricKit histogram percentile metrics being reported at 1000× their true value — the listener now marks its `SampleFamily` with `defaultHistogramBucketUnit(MILLISECONDS)` so MAL's default SECONDS→MS rescale of `le` labels is not applied. * Add WeChat and Alipay Mini Program monitoring via the SkyAPM mini-program-monitor SDK (SWIP-12). Two new layers (`WECHAT_MINI_PROGRAM`, `ALIPAY_MINI_PROGRAM`); two new JavaScript componentIds (`WeChat-MiniProgram: 10002`, `AliPay-MiniProgram: 10003`). Service / instance / endpoint entities are produced by MAL + LAL, not trace analysis — mini-programs are client-side (exit-only) so `RPCAnalysisListener` stays unchanged (same pattern as browser and iOS). MAL rules per platform × scope under `otel-rules/miniprogram/` with explicit `.service(...)` / `.endpoint(...)` chains (empty `expSuffix` so endpoint-scope rules aren't overridden), histogram percentile via `.histogram("le", TimeUnit.MILLISECONDS)` to keep ms bucket bounds intact, and request-cpm derived from the histogram `_count` family. LAL `layer: auto` rule produces both layers via `miniprogram.platform` dispatch and emits error-count samples consumed by per-platform log-MAL rules. Per-layer menu entries and service / instance / endpoint dashboards with Trace and Log sub-tabs. diff --git a/docs/en/setup/backend/backend-airflow-monitoring.md b/docs/en/setup/backend/backend-airflow-monitoring.md index 7696d07da584..46f69305cde4 100644 --- a/docs/en/setup/backend/backend-airflow-monitoring.md +++ b/docs/en/setup/backend/backend-airflow-monitoring.md @@ -157,16 +157,18 @@ emitted the metrics. Two e2e cases cover Airflow monitoring (full coverage matrix and latest verify report: [test/e2e-v2/cases/airflow/README.md](../../../../test/e2e-v2/cases/airflow/README.md)): -- **Mock (CI default, fast):** `test/e2e-v2/cases/airflow/e2e.yaml` replays OTLP JSON via - the case-local [`airflow-mock-sender`](../../../../test/e2e-v2/cases/airflow/mock-sender/) +- **Mock (CI default, fast):** `test/e2e-v2/cases/airflow/e2e.yaml` replays OTLP JSON via a + Python sidecar ([`otlp_replay_server.py`](../../../../test/e2e-v2/cases/airflow/scripts/otlp_replay_server.py), + built from [`Dockerfile.mock-sender`](../../../../test/e2e-v2/cases/airflow/Dockerfile.mock-sender)) with realistic `cluster` and `host.name` resource attributes. - **Real Celery cluster (production-like integration smoke):** `test/e2e-v2/cases/airflow/e2e-cluster.yaml` starts scheduler, two workers, and triggerer (`cluster=airflow-e2e-cluster`), seeds deferrable - and dataset DAGs plus load workload (~4 minutes), then verifies **26 integration checks** + and dataset DAGs plus load workload (~4 minutes), then verifies **25 integration checks** (native scheduler / executor / triggerer OTLP plus e2e Celery sidecar pool gauges on `airflow-worker-1`). Metrics that need synthetic OTLP or rare Airflow events - (`asset_updates`, `triggers_failed`, `triggers_blocked_main_thread`) are covered only in the - mock suite. See [e2e README](../../../../test/e2e-v2/cases/airflow/README.md). + (`asset_updates`, `pool_queued_slots`, `triggers_failed`, `triggers_blocked_main_thread`) + are covered only in the mock suite. See + [e2e README](../../../../test/e2e-v2/cases/airflow/README.md). ## Supported metrics diff --git a/test/e2e-v2/cases/airflow/mock-sender/src/main/resources/application.yml b/test/e2e-v2/cases/airflow/Dockerfile.mock-sender similarity index 67% rename from test/e2e-v2/cases/airflow/mock-sender/src/main/resources/application.yml rename to test/e2e-v2/cases/airflow/Dockerfile.mock-sender index 02e42dc989b0..126896aba82e 100644 --- a/test/e2e-v2/cases/airflow/mock-sender/src/main/resources/application.yml +++ b/test/e2e-v2/cases/airflow/Dockerfile.mock-sender @@ -13,14 +13,20 @@ # See the License for the specific language governing permissions and # limitations under the License. -server: - port: 9093 +ARG PYTHON_IMAGE=python:3.11-slim +FROM ${PYTHON_IMAGE} -spring: - main: - banner-mode: 'off' +WORKDIR /app -airflow-e2e: - oap-host: ${OAP_HOST:127.0.0.1} - oap-grpc-port: ${OAP_GRPC_PORT:11800} - otel-metrics-data-path: ${OTEL_METRICS_DATA_PATH:/data/otel-metrics/} +RUN apt-get update \ + && apt-get install -y --no-install-recommends netcat-openbsd curl \ + && rm -rf /var/lib/apt/lists/* + +COPY scripts/requirements-replay.txt . +RUN pip install --no-cache-dir -r requirements-replay.txt + +COPY scripts/otlp_replay_server.py . + +EXPOSE 9093 + +CMD ["python", "otlp_replay_server.py"] diff --git a/test/e2e-v2/cases/airflow/README.md b/test/e2e-v2/cases/airflow/README.md index 270c35d61d1f..576ffa19c889 100644 --- a/test/e2e-v2/cases/airflow/README.md +++ b/test/e2e-v2/cases/airflow/README.md @@ -5,8 +5,8 @@ share the same MAL rules but split responsibilities: | Suite | Entry | Checks | Airflow | CI matrix | |-------|-------|--------|---------|-----------| -| **Mock (fast, full SWIP-7)** | [`e2e.yaml`](e2e.yaml) | **30** (2 topology + 28 metrics) | OTLP JSON replay via [`mock-sender/`](mock-sender/) | `Airflow` | -| **Real Celery cluster (integration smoke)** | [`e2e-cluster.yaml`](e2e-cluster.yaml) | **26** (2 topology + 24 metrics) | Live Airflow 2.10 CeleryExecutor | `Airflow Cluster` | +| **Mock (fast, full SWIP-7)** | [`e2e.yaml`](e2e.yaml) | **30** (2 topology + 28 metrics) | OTLP JSON replay via Python sidecar [`scripts/otlp_replay_server.py`](scripts/otlp_replay_server.py) + [`Dockerfile.mock-sender`](Dockerfile.mock-sender) | `Airflow` | +| **Real Celery cluster (integration smoke)** | [`e2e-cluster.yaml`](e2e-cluster.yaml) | **25** (2 topology + 23 metrics) | Live Airflow 2.10 CeleryExecutor | `Airflow Cluster` | Query definitions: [`airflow-cases.yaml`](airflow-cases.yaml) (mock, full matrix) and [`airflow-cluster-cases.yaml`](airflow-cluster-cases.yaml) (cluster smoke). MAL rules: @@ -74,15 +74,16 @@ gauge (0 when no orphans). Metrics that need synthetic OTLP or rare failure even |---------|----------------------------|----------------------------------------| | **Goal** | Full SWIP-7 MAL/MQE contract | Real Airflow → OTel → OAP integration | | **Topology** | 3 instances | 3 OTLP-exporting instances | -| **Service metrics** | 12 | 11 (excludes `asset_updates`) | +| **Service metrics** | 12 | 10 (excludes `asset_updates`, `pool_queued_slots`) | | **Instance metrics** | 16 | 13 (excludes `asset_updates`, `triggers_failed`, `triggers_blocked_main_thread`) | -| **Total checks** | **30** | **26** | +| **Total checks** | **30** | **25** | **Mock-only metrics** (synthetic OTLP in [`mock-data/otel-airflow-metrics.json`](mock-data/otel-airflow-metrics.json)): | Metric | Reason cluster omits it | |--------|-------------------------| | `meter_airflow_asset_updates` (service + instance) | Dataset producer timing is hard to stabilize; mock sender injects `airflow.dataset.updates` | +| `meter_airflow_pool_queued_slots` (service) | Scheduler-only OTLP; default pool rarely queues under e2e load — unstable without synthetic OTLP | | `meter_airflow_instance_triggers_failed` | Airflow may not export the counter when no triggers fail (`null`, not `0`) | | `meter_airflow_instance_triggers_blocked_main_thread` | Same — absent unless a trigger blocks the main thread | @@ -100,7 +101,7 @@ Each row is one `swctl metrics exec` assertion. Expected template: | # | Query | Expected | |---|-------|----------| | 1 | `swctl service ly AIRFLOW` | Service `airflow::airflow-e2e-cluster`, layer `AIRFLOW` — [`expected/service-cluster.yml`](expected/service-cluster.yml) | -| 2 | `swctl instance ls --service-name=airflow::airflow-e2e-cluster` | 3 instances — [`expected/instance-cluster.yml`](expected/instance-cluster.yml) | +| 2 | `swctl instance ls --service-name=airflow::airflow-e2e-cluster` | 3 instances — [`expected/instance.yml`](expected/instance.yml) | Mock suite uses `airflow::airflow-cluster` — [`expected/service.yml`](expected/service.yml), [`expected/instance.yml`](expected/instance.yml) (same 3 hosts). Cluster verify matches mock @@ -114,7 +115,7 @@ instance bindings; worker-2 remains in compose for Celery realism but is not an | 2 | `meter_airflow_executor_queued_tasks` | `airflow.executor.queued_tasks` | yes | | 3 | `meter_airflow_executor_running_tasks` | `airflow.executor.running_tasks` | yes | | 4 | `meter_airflow_executor_open_slots` | `airflow.executor.open_slots` | yes | -| 5 | `meter_airflow_pool_queued_slots` | `airflow.pool.queued_slots` | yes | +| 5 | `meter_airflow_pool_queued_slots` | `airflow.pool.queued_slots` | mock only | | 6 | `meter_airflow_pool_deferred_slots` | `airflow.pool.deferred_slots` | yes | | 7 | `meter_airflow_pool_scheduled_slots` | `airflow.pool.scheduled_slots` | yes | | 8 | `meter_airflow_scheduler_heartbeat` | `airflow.scheduler.heartbeat` | yes | @@ -147,7 +148,7 @@ Instance-scoped queries use `--instance-name={host.name}`. | 16 | `meter_airflow_instance_asset_triggered_dagruns` | `airflow-scheduler` | yes | **Mock total: 30 checks** (2 topology + 28 metrics) = full SWIP-7 panel set. -**Cluster total: 26 checks** (2 topology + 24 metrics) = integration smoke. +**Cluster total: 25 checks** (2 topology + 23 metrics) = integration smoke. Both suites use the same instance bindings for triggerer (`airflow-triggerer`), dataset orphan/triggered DagRuns (`airflow-scheduler`), and worker pool gauges (`airflow-worker-1`). @@ -224,21 +225,21 @@ OAP GraphQL: http://localhost:/graphql detail: === Summary === -PASS: FAIL: TOTAL: 26 +PASS: FAIL: TOTAL: 25 Report: test/e2e-v2/cases/airflow/cluster-e2e-report.txt ``` Pass criteria per metric: `swctl metrics exec` returns `TIME_SERIES_VALUES` with at least one point whose `value` is a non-null number (zero counts as pass). -### Cluster smoke checklist (26 checks) +### Cluster smoke checklist (25 checks) **Topology (2)** - service ly AIRFLOW → `airflow::airflow-e2e-cluster` - instances: scheduler, worker-1, triggerer -**Service metrics (11)** — all except `meter_airflow_asset_updates` +**Service metrics (10)** — excludes `meter_airflow_asset_updates`, `meter_airflow_pool_queued_slots` **Instance metrics (13)** — excludes `asset_updates`, `triggers_failed`, `triggers_blocked_main_thread` @@ -248,7 +249,7 @@ Full SWIP-7 (30 checks) baseline is the mock suite — see `mock-e2e-report.txt` Historical full cluster run (30 checks, superseded by split above) 2026-06-02 run achieved 30/30 before the mock/cluster split; several checks were flaky on real -Airflow without synthetic OTLP. Current cluster scope is the 26-check integration smoke. +Airflow without synthetic OTLP. Current cluster scope is the 25-check integration smoke.
@@ -259,13 +260,13 @@ Airflow without synthetic OTLP. Current cluster scope is the 26-check integratio | [`e2e.yaml`](e2e.yaml) | Mock suite entry (CI `Airflow`) | | [`e2e-cluster.yaml`](e2e-cluster.yaml) | Real cluster entry (CI `Airflow Cluster`, timeout 35m) | | [`docker-compose.yml`](docker-compose.yml) | Mock stack (OAP + mock sender) | -| [`mock-sender/`](mock-sender/) | Case-local OTLP JSON replay sender (supports `increase('PT1M')` metrics) | +| [`scripts/otlp_replay_server.py`](scripts/otlp_replay_server.py) | Python OTLP JSON replay sidecar (supports `increase('PT1M')` metrics; built via `Dockerfile.mock-sender`) | | [`docker-compose-cluster.yml`](docker-compose-cluster.yml) | Real Airflow Celery stack | | [`otel-collector-config.yaml`](otel-collector-config.yaml) | Collector → OAP pipeline | | [`mock-data/otel-airflow-metrics.json`](mock-data/otel-airflow-metrics.json) | Mock OTLP payload | | [`scripts/run-full-cluster-e2e.sh`](scripts/run-full-cluster-e2e.sh) | Local end-to-end driver | | [`scripts/run-cluster-setup.sh`](scripts/run-cluster-setup.sh) | Tools + health + workload | -| [`scripts/verify-cluster-e2e.sh`](scripts/verify-cluster-e2e.sh) | Cluster integration smoke (26 swctl checks) | +| [`scripts/verify-cluster-e2e.sh`](scripts/verify-cluster-e2e.sh) | Cluster integration smoke (25 swctl checks) | | [`scripts/wait-scheduler-healthy.sh`](scripts/wait-scheduler-healthy.sh) | Scheduler health gate | | `cluster-e2e-report.txt` | Generated verify report (gitignored) | diff --git a/test/e2e-v2/cases/airflow/airflow-cluster-cases.yaml b/test/e2e-v2/cases/airflow/airflow-cluster-cases.yaml index dca81df0505c..50529ae694e0 100644 --- a/test/e2e-v2/cases/airflow/airflow-cluster-cases.yaml +++ b/test/e2e-v2/cases/airflow/airflow-cluster-cases.yaml @@ -16,14 +16,14 @@ # Real Celery cluster integration smoke (service airflow-e2e-cluster). # Full SWIP-7 matrix (30 checks) lives in airflow-cases.yaml (mock OTLP replay). # Cluster omits metrics that are flaky without synthetic OTLP: asset_updates, -# triggers_blocked_main_thread, triggers_failed. Instance topology uses the three +# pool_queued_slots, triggers_blocked_main_thread, triggers_failed. Instance topology uses the three # hosts that export OTLP in this compose layout (scheduler, worker-1, triggerer). cases: - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ly AIRFLOW expected: expected/service-cluster.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance ls --service-name=airflow::airflow-e2e-cluster - expected: expected/instance-cluster.yml + expected: expected/instance.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_scheduler_tasks_executable --service-name=airflow::airflow-e2e-cluster expected: expected/metrics-has-value.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_executor_queued_tasks --service-name=airflow::airflow-e2e-cluster @@ -32,8 +32,6 @@ cases: expected: expected/metrics-has-value.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_executor_open_slots --service-name=airflow::airflow-e2e-cluster expected: expected/metrics-has-value.yml - - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_queued_slots --service-name=airflow::airflow-e2e-cluster - expected: expected/metrics-has-value.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_deferred_slots --service-name=airflow::airflow-e2e-cluster expected: expected/metrics-has-value.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_scheduled_slots --service-name=airflow::airflow-e2e-cluster diff --git a/test/e2e-v2/cases/airflow/docker-compose.mock-local.yml b/test/e2e-v2/cases/airflow/docker-compose.mock-local.yml index 1b92a6a4ba9d..2d23060745c7 100644 --- a/test/e2e-v2/cases/airflow/docker-compose.mock-local.yml +++ b/test/e2e-v2/cases/airflow/docker-compose.mock-local.yml @@ -15,7 +15,6 @@ # Local mock e2e overrides: # - BanyanDB stays internal-only (avoid host port 17912 clashes with other stacks). -# - Sender uses a locally available Temurin 11 JRE (Docker Hub 8-jre may be unreachable). # - OAP loads SWIP-7 config/libs from deploy/skywalking (CI uses a dist-built image instead). services: @@ -26,7 +25,6 @@ services: - ../../../../deploy/skywalking/config:/skywalking/config:ro - ../../../../deploy/skywalking/oap-libs:/skywalking/oap-libs:ro sender: - image: eclipse-temurin:11-jre healthcheck: test: ["CMD", "sh", "-c", "wget -qO- http://127.0.0.1:9093/otel-metrics/send >/dev/null 2>&1 || curl -sf http://127.0.0.1:9093/otel-metrics/send >/dev/null"] interval: 5s diff --git a/test/e2e-v2/cases/airflow/docker-compose.yml b/test/e2e-v2/cases/airflow/docker-compose.yml index 58a60500d347..d5e9400e307a 100644 --- a/test/e2e-v2/cases/airflow/docker-compose.yml +++ b/test/e2e-v2/cases/airflow/docker-compose.yml @@ -33,11 +33,13 @@ services: - 17912 sender: - image: "eclipse-temurin:8-jre" + build: + context: . + dockerfile: Dockerfile.mock-sender + args: + PYTHON_IMAGE: python:3.11-slim volumes: - - ./mock-sender/target/airflow-mock-sender-2.0.0.jar:/airflow-mock-sender-2.0.0.jar - - ./mock-data:/data/otel-metrics - command: [ "java", "-jar", "/airflow-mock-sender-2.0.0.jar" ] + - ./mock-data:/data/otel-metrics:ro environment: OAP_HOST: oap OAP_GRPC_PORT: 11800 diff --git a/test/e2e-v2/cases/airflow/e2e-cluster.yaml b/test/e2e-v2/cases/airflow/e2e-cluster.yaml index 0638abae4980..223887761716 100644 --- a/test/e2e-v2/cases/airflow/e2e-cluster.yaml +++ b/test/e2e-v2/cases/airflow/e2e-cluster.yaml @@ -14,7 +14,7 @@ # limitations under the License. # Real Airflow Celery cluster (scheduler + 2 workers + triggerer) with live OTLP metrics. -# Slower than e2e.yaml (mock sender); verifies production-like OTLP integration (26 checks). +# Slower than e2e.yaml (mock sender); verifies production-like OTLP integration (25 checks). # Full SWIP-7 metric matrix (30 checks) is in e2e.yaml (mock OTLP replay). setup: diff --git a/test/e2e-v2/cases/airflow/e2e.yaml b/test/e2e-v2/cases/airflow/e2e.yaml index 922a25c51ab5..e2341ffb2813 100644 --- a/test/e2e-v2/cases/airflow/e2e.yaml +++ b/test/e2e-v2/cases/airflow/e2e.yaml @@ -25,8 +25,6 @@ setup: command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq - name: install swctl command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl - - name: build airflow mock sender - command: ./mvnw -B -q -f test/e2e-v2/java-test-service/pom.xml -pl opentelemetry-proto -am install -Dcheckstyle.skip=true -Dgpg.skip=true -Dmaven.test.skip=true && ./mvnw -B -q -f test/e2e-v2/cases/airflow/mock-sender/pom.xml clean flatten:flatten package -Dcheckstyle.skip=true -Dgpg.skip=true trigger: action: http diff --git a/test/e2e-v2/cases/airflow/expected/instance-cluster.yml b/test/e2e-v2/cases/airflow/expected/instance-cluster.yml deleted file mode 100644 index 64d7a1434f16..000000000000 --- a/test/e2e-v2/cases/airflow/expected/instance-cluster.yml +++ /dev/null @@ -1,32 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -{{- contains . }} -- id: {{ notEmpty .id }} - name: airflow-scheduler - instanceuuid: {{ notEmpty .instanceuuid }} - attributes: [] - language: UNKNOWN -- id: {{ notEmpty .id }} - name: airflow-worker-1 - instanceuuid: {{ notEmpty .instanceuuid }} - attributes: [] - language: UNKNOWN -- id: {{ notEmpty .id }} - name: airflow-triggerer - instanceuuid: {{ notEmpty .instanceuuid }} - attributes: [] - language: UNKNOWN -{{- end }} diff --git a/test/e2e-v2/cases/airflow/mock-sender/pom.xml b/test/e2e-v2/cases/airflow/mock-sender/pom.xml deleted file mode 100644 index b8c05e0295d5..000000000000 --- a/test/e2e-v2/cases/airflow/mock-sender/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - apache-skywalking-e2e - org.apache.skywalking - 2.0.0 - ../../../java-test-service/pom.xml - - - 4.0.0 - jar - airflow-mock-sender - - - - org.apache.skywalking - opentelemetry-proto - ${project.version} - - - com.google.protobuf - protobuf-java-util - 3.21.12 - - - - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring.boot.version} - - true - true - true - - - - - repackage - - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - - true - - - - - diff --git a/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowMockSenderApplication.java b/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowMockSenderApplication.java deleted file mode 100644 index 4aaca2cac808..000000000000 --- a/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowMockSenderApplication.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.e2e.airflow; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class AirflowMockSenderApplication { - public static void main(String[] args) { - SpringApplication.run(AirflowMockSenderApplication.class, args); - } -} diff --git a/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowOtelMetricsSender.java b/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowOtelMetricsSender.java deleted file mode 100644 index 786f105c10d9..000000000000 --- a/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowOtelMetricsSender.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.e2e.airflow; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.protobuf.util.JsonFormat; -import io.grpc.ManagedChannel; -import io.grpc.internal.DnsNameResolverProvider; -import io.grpc.netty.NettyChannelBuilder; -import io.grpc.stub.StreamObserver; -import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest; -import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse; -import io.opentelemetry.proto.collector.metrics.v1.MetricsServiceGrpc; -import java.io.File; -import java.io.IOException; -import java.util.Iterator; -import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * Airflow mock e2e OTLP replay sender. Lives under {@code test/e2e-v2/cases/airflow/} so the - * shared {@code e2e-mock-sender} stays unchanged. Rewrites timestamps and bumps cumulative sum - * counters so MAL {@code increase('PT1M')} rules observe non-zero values on JSON replay. - */ -@Slf4j -@RestController -@RequestMapping("/otel-metrics") -public class AirflowOtelMetricsSender { - private static final int MAX_INBOUND_MESSAGE_SIZE = 1024 * 1024 * 50; - private static final AtomicInteger SEND_SEQ = new AtomicInteger(0); - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - private final MetricsServiceGrpc.MetricsServiceStub metricsServiceStub; - private final String otelMetricsDataPath; - - public AirflowOtelMetricsSender(final AirflowSenderConfiguration configuration) { - final ManagedChannel channel = NettyChannelBuilder.forAddress( - configuration.getOapHost(), - Integer.parseInt(configuration.getOapGrpcPort())) - .nameResolverFactory(new DnsNameResolverProvider()) - .maxInboundMessageSize(MAX_INBOUND_MESSAGE_SIZE) - .usePlaintext() - .build(); - this.metricsServiceStub = MetricsServiceGrpc.newStub(channel); - this.otelMetricsDataPath = configuration.getOtelMetricsDataPath(); - } - - @GetMapping("send") - public String sendMetricsByTemplate() throws IOException { - File otelData = new File(this.otelMetricsDataPath); - if (!otelData.exists() || !otelData.isDirectory()) { - String msg = "The path must be a folder : " + this.otelMetricsDataPath; - log.error(msg); - return msg; - } - final File[] files = findJSONFiles(otelData); - if (files.length == 0) { - String msg = "The folder doesn't contain any json file : " + this.otelMetricsDataPath; - log.error(msg); - return msg; - } - for (File file : files) { - final ExportMetricsServiceRequest.Builder builder = ExportMetricsServiceRequest.newBuilder(); - String jsonData = rewriteTimeField(file); - JsonFormat.parser().merge(jsonData, builder); - sendReq(builder); - } - return "ok"; - } - - private String rewriteTimeField(File file) throws IOException { - final int seq = SEND_SEQ.incrementAndGet(); - final long nanoTime = System.currentTimeMillis() * 1000000L; - final long startNanoTime = nanoTime - 60_000_000_000L; - final JsonNode root = OBJECT_MAPPER.readTree(file); - rewriteNode(root, nanoTime, startNanoTime, seq); - return OBJECT_MAPPER.writeValueAsString(root); - } - - private void rewriteNode(final JsonNode node, final long nanoTime, final long startNanoTime, final int seq) { - if (node.isObject()) { - final ObjectNode objectNode = (ObjectNode) node; - if (objectNode.has("timeUnixNano")) { - objectNode.put("timeUnixNano", String.valueOf(nanoTime)); - } - if (objectNode.has("startTimeUnixNano")) { - objectNode.put("startTimeUnixNano", String.valueOf(startNanoTime)); - } - if (objectNode.has("asDouble") && objectNode.has("startTimeUnixNano")) { - objectNode.put("asDouble", objectNode.get("asDouble").asDouble() + seq); - } - final Iterator> fields = objectNode.fields(); - while (fields.hasNext()) { - rewriteNode(fields.next().getValue(), nanoTime, startNanoTime, seq); - } - return; - } - if (node.isArray()) { - for (JsonNode child : node) { - rewriteNode(child, nanoTime, startNanoTime, seq); - } - } - } - - private void sendReq(final ExportMetricsServiceRequest.Builder builder) { - this.metricsServiceStub.export(builder.build(), new StreamObserver() { - @Override - public void onNext(final ExportMetricsServiceResponse exportMetricsServiceResponse) { - } - - @Override - public void onError(final Throwable throwable) { - log.error("sendOtelMetrics by template error ", throwable); - } - - @Override - public void onCompleted() { - } - }); - } - - private File[] findJSONFiles(final File otelData) { - return otelData.listFiles((dir, name) -> name.endsWith(".json")); - } -} diff --git a/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowSenderConfiguration.java b/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowSenderConfiguration.java deleted file mode 100644 index b2936aa0a088..000000000000 --- a/test/e2e-v2/cases/airflow/mock-sender/src/main/java/org/apache/skywalking/e2e/airflow/AirflowSenderConfiguration.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.e2e.airflow; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -@Data -@Configuration -@ConfigurationProperties("airflow-e2e") -public class AirflowSenderConfiguration { - private String oapHost; - private String oapGrpcPort; - private String otelMetricsDataPath; -} diff --git a/test/e2e-v2/cases/airflow/scripts/otlp_replay_server.py b/test/e2e-v2/cases/airflow/scripts/otlp_replay_server.py new file mode 100644 index 000000000000..e3d2266eb2be --- /dev/null +++ b/test/e2e-v2/cases/airflow/scripts/otlp_replay_server.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Airflow mock e2e OTLP JSON replay sidecar (Python).""" + +import glob +import json +import logging +import os +import threading +import time + +import grpc +from flask import Flask +from google.protobuf import json_format +from opentelemetry.proto.collector.metrics.v1 import metrics_service_pb2 +from opentelemetry.proto.collector.metrics.v1 import metrics_service_pb2_grpc + +logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s") +LOG = logging.getLogger("otlp-replay") + +OAP_HOST = os.environ.get("OAP_HOST", "127.0.0.1") +OAP_GRPC_PORT = int(os.environ.get("OAP_GRPC_PORT", "11800")) +DATA_DIR = os.environ.get("OTEL_METRICS_DATA_PATH", "/data/otel-metrics") + +SEND_SEQ = 0 +SEQ_LOCK = threading.Lock() + +app = Flask(__name__) + + +def rewrite_node(node, nano_time, start_nano_time, seq): + if isinstance(node, dict): + if "timeUnixNano" in node: + node["timeUnixNano"] = str(nano_time) + if "startTimeUnixNano" in node: + node["startTimeUnixNano"] = str(start_nano_time) + if "asDouble" in node and "startTimeUnixNano" in node: + node["asDouble"] = float(node["asDouble"]) + seq + for value in node.values(): + rewrite_node(value, nano_time, start_nano_time, seq) + elif isinstance(node, list): + for item in node: + rewrite_node(item, nano_time, start_nano_time, seq) + + +def send_metrics_once(): + global SEND_SEQ + with SEQ_LOCK: + SEND_SEQ += 1 + seq = SEND_SEQ + + if not os.path.isdir(DATA_DIR): + msg = f"The path must be a folder: {DATA_DIR}" + LOG.error(msg) + return msg + + json_files = sorted(glob.glob(os.path.join(DATA_DIR, "*.json"))) + if not json_files: + msg = f"The folder doesn't contain any json file: {DATA_DIR}" + LOG.error(msg) + return msg + + nano_time = int(time.time() * 1_000_000_000) + start_nano_time = nano_time - 60_000_000_000 + + channel = grpc.insecure_channel(f"{OAP_HOST}:{OAP_GRPC_PORT}") + stub = metrics_service_pb2_grpc.MetricsServiceStub(channel) + + for path in json_files: + with open(path, encoding="utf-8") as handle: + payload = json.load(handle) + rewrite_node(payload, nano_time, start_nano_time, seq) + request = metrics_service_pb2.ExportMetricsServiceRequest() + json_format.Parse(json.dumps(payload), request, ignore_unknown_fields=True) + try: + stub.Export(request, timeout=10) + except grpc.RpcError as error: + LOG.error("sendOtelMetrics by template error: %s", error) + channel.close() + return str(error) + + channel.close() + return "ok" + + +@app.get("/otel-metrics/send") +def send_endpoint(): + return send_metrics_once() + + +if __name__ == "__main__": + app.run(host="0.0.0.0", port=9093, threaded=True) diff --git a/test/e2e-v2/cases/airflow/scripts/requirements-replay.txt b/test/e2e-v2/cases/airflow/scripts/requirements-replay.txt new file mode 100644 index 000000000000..80c4250e3beb --- /dev/null +++ b/test/e2e-v2/cases/airflow/scripts/requirements-replay.txt @@ -0,0 +1,4 @@ +flask==3.0.3 +grpcio==1.62.2 +protobuf==4.25.3 +opentelemetry-proto==1.24.0 diff --git a/test/e2e-v2/cases/airflow/scripts/run-mock-e2e.sh b/test/e2e-v2/cases/airflow/scripts/run-mock-e2e.sh index 19fbe789f8e5..0eba30f08105 100644 --- a/test/e2e-v2/cases/airflow/scripts/run-mock-e2e.sh +++ b/test/e2e-v2/cases/airflow/scripts/run-mock-e2e.sh @@ -14,8 +14,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Local mock e2e (OAP + BanyanDB + OTLP JSON replay). Avoids infra-e2e CRLF env issues on -# Windows and uses a locally available Temurin JRE image for the sender sidecar. +# Local mock e2e (OAP + BanyanDB + Python OTLP JSON replay sidecar). +# Set MOCK_E2E_USE_LOCAL_OVERRIDE=0 to mirror CI (docker-compose.yml only). set -euo pipefail @@ -30,33 +30,25 @@ export PATH="/tmp/skywalking-infra-e2e/bin:/usr/bin:/bin:${PATH}" COMPOSE_FILE="${CASE_DIR}/docker-compose.yml" LOCAL_OVERRIDE="${CASE_DIR}/docker-compose.mock-local.yml" -MOCK_SENDER_POM="${REPO_ROOT}/test/e2e-v2/cases/airflow/mock-sender/pom.xml" -E2E_LIBS_POM="${REPO_ROOT}/test/e2e-v2/java-test-service/pom.xml" -JAR="${REPO_ROOT}/test/e2e-v2/cases/airflow/mock-sender/target/airflow-mock-sender-2.0.0.jar" +USE_LOCAL_OVERRIDE="${MOCK_E2E_USE_LOCAL_OVERRIDE:-1}" dc() { - docker compose -f "${COMPOSE_FILE}" -f "${LOCAL_OVERRIDE}" -p "${COMPOSE_PROJECT_NAME}" "$@" + if [[ "${USE_LOCAL_OVERRIDE}" == "1" ]]; then + docker compose -f "${COMPOSE_FILE}" -f "${LOCAL_OVERRIDE}" -p "${COMPOSE_PROJECT_NAME}" "$@" + else + docker compose -f "${COMPOSE_FILE}" -p "${COMPOSE_PROJECT_NAME}" "$@" + fi } -echo "=== Airflow mock e2e (project ${COMPOSE_PROJECT_NAME}) ===" - -build_mock_sender() { - echo "Building airflow-mock-sender dependencies..." - ./mvnw -B -q -f "${E2E_LIBS_POM}" -pl opentelemetry-proto -am install \ - -Dcheckstyle.skip=true -Dgpg.skip=true -Dmaven.test.skip=true - echo "Building airflow-mock-sender..." - ./mvnw -B -q -f "${MOCK_SENDER_POM}" clean flatten:flatten package \ - -Dcheckstyle.skip=true -Dgpg.skip=true -} +echo "=== Airflow mock e2e (project ${COMPOSE_PROJECT_NAME}, local_override=${USE_LOCAL_OVERRIDE}) ===" -if [[ ! -f "${JAR}" ]]; then - build_mock_sender -else - echo "Refreshing airflow-mock-sender jar..." - build_mock_sender +dc down --remove-orphans 2>/dev/null || true +echo "Building Python OTLP replay sender image..." +BUILD_ARGS=() +if [[ -n "${MOCK_SENDER_PYTHON_IMAGE:-}" ]]; then + BUILD_ARGS+=(--build-arg "PYTHON_IMAGE=${MOCK_SENDER_PYTHON_IMAGE}") fi - -docker compose -f "${COMPOSE_FILE}" -f "${LOCAL_OVERRIDE}" -p "${COMPOSE_PROJECT_NAME}" down --remove-orphans 2>/dev/null || true +dc build "${BUILD_ARGS[@]}" sender dc up -d echo "Waiting for OAP and mock sender..." @@ -89,7 +81,7 @@ trigger_loop & TRIGGER_PID=$! sleep 120 -VERIFY_RETRIES=20 VERIFY_INTERVAL_SECONDS=10 \ +VERIFY_RETRIES=20 VERIFY_INTERVAL_SECONDS=10 MOCK_E2E_USE_LOCAL_OVERRIDE="${USE_LOCAL_OVERRIDE}" \ /usr/bin/bash "${SCRIPT_DIR}/verify-mock-e2e.sh" || VERIFY_EXIT=$? kill "${TRIGGER_PID}" 2>/dev/null || true diff --git a/test/e2e-v2/cases/airflow/scripts/verify-cluster-e2e.sh b/test/e2e-v2/cases/airflow/scripts/verify-cluster-e2e.sh index aa7baef3ac45..1f8447ae1b6b 100644 --- a/test/e2e-v2/cases/airflow/scripts/verify-cluster-e2e.sh +++ b/test/e2e-v2/cases/airflow/scripts/verify-cluster-e2e.sh @@ -15,7 +15,7 @@ # limitations under the License. # Real Celery cluster integration verify (mirrors airflow-cluster-cases.yaml). -# Topology: 1 service + 3 OTLP-exporting instances + 11 service metrics + 13 instance metrics = 26 checks. +# Topology: 1 service + 3 OTLP-exporting instances + 10 service metrics + 13 instance metrics = 25 checks. # Full SWIP-7 (30 checks) is covered by the mock suite (airflow-cases.yaml). set -euo pipefail @@ -124,14 +124,13 @@ for attempt in $(seq 1 "${RETRIES}"); do done log "" -log "--- Service metrics (11) ---" +log "--- Service metrics (10) ---" SERVICE_METRICS=( meter_airflow_scheduler_tasks_executable meter_airflow_executor_queued_tasks meter_airflow_executor_running_tasks meter_airflow_executor_open_slots - meter_airflow_pool_queued_slots meter_airflow_pool_deferred_slots meter_airflow_pool_scheduled_slots meter_airflow_scheduler_heartbeat diff --git a/test/e2e-v2/cases/airflow/scripts/verify-mock-e2e.sh b/test/e2e-v2/cases/airflow/scripts/verify-mock-e2e.sh index b145e2a80df1..9b1486dd998f 100644 --- a/test/e2e-v2/cases/airflow/scripts/verify-mock-e2e.sh +++ b/test/e2e-v2/cases/airflow/scripts/verify-mock-e2e.sh @@ -29,13 +29,18 @@ export PATH="/tmp/skywalking-infra-e2e/bin:/usr/bin:/bin:${PATH}" COMPOSE_FILE="${CASE_DIR}/docker-compose.yml" LOCAL_OVERRIDE="${CASE_DIR}/docker-compose.mock-local.yml" +USE_LOCAL_OVERRIDE="${MOCK_E2E_USE_LOCAL_OVERRIDE:-1}" SERVICE="airflow::airflow-cluster" RETRIES="${VERIFY_RETRIES:-20}" INTERVAL="${VERIFY_INTERVAL_SECONDS:-10}" REPORT="${VERIFY_REPORT:-test/e2e-v2/cases/airflow/mock-e2e-report.txt}" dc() { - docker compose -f "${COMPOSE_FILE}" -f "${LOCAL_OVERRIDE}" -p "${COMPOSE_PROJECT_NAME}" "$@" + if [[ "${USE_LOCAL_OVERRIDE}" == "1" ]]; then + docker compose -f "${COMPOSE_FILE}" -f "${LOCAL_OVERRIDE}" -p "${COMPOSE_PROJECT_NAME}" "$@" + else + docker compose -f "${COMPOSE_FILE}" -p "${COMPOSE_PROJECT_NAME}" "$@" + fi } OAP_PORT="$(dc port oap 12800 | cut -d: -f2)" From e1dd30debddb7e92f7b2046af40c73a763d6fe24 Mon Sep 17 00:00:00 2001 From: songzhendong Date: Fri, 5 Jun 2026 16:12:58 +0800 Subject: [PATCH 4/4] fix(e2e): assert pool_name label in Airflow pool metric expected templates Pool metrics retain pool_name as a metric label in MAL; generic metrics-has-value.yml asserts labels: [] and fails infra-e2e verify. Add a dedicated expected template and repoint pool queries in mock and cluster case files. --- test/e2e-v2/cases/airflow/airflow-cases.yaml | 14 +++---- .../cases/airflow/airflow-cluster-cases.yaml | 12 +++--- .../metrics-has-value-label-poolname.yml | 38 +++++++++++++++++++ 3 files changed, 51 insertions(+), 13 deletions(-) create mode 100644 test/e2e-v2/cases/airflow/expected/metrics-has-value-label-poolname.yml diff --git a/test/e2e-v2/cases/airflow/airflow-cases.yaml b/test/e2e-v2/cases/airflow/airflow-cases.yaml index 1b1875eeb0e3..92959b192f89 100644 --- a/test/e2e-v2/cases/airflow/airflow-cases.yaml +++ b/test/e2e-v2/cases/airflow/airflow-cases.yaml @@ -27,11 +27,11 @@ cases: - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_executor_open_slots --service-name=airflow::airflow-cluster expected: expected/metrics-has-value.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_queued_slots --service-name=airflow::airflow-cluster - expected: expected/metrics-has-value.yml + expected: expected/metrics-has-value-label-poolname.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_deferred_slots --service-name=airflow::airflow-cluster - expected: expected/metrics-has-value.yml + expected: expected/metrics-has-value-label-poolname.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_scheduled_slots --service-name=airflow::airflow-cluster - expected: expected/metrics-has-value.yml + expected: expected/metrics-has-value-label-poolname.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_scheduler_heartbeat --service-name=airflow::airflow-cluster expected: expected/metrics-has-value.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_scheduler_orphaned_tasks_cleared --service-name=airflow::airflow-cluster @@ -43,13 +43,13 @@ cases: - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_asset_updates --service-name=airflow::airflow-cluster expected: expected/metrics-has-value.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_open_slots --service-name=airflow::airflow-cluster --instance-name=airflow-worker-1 - expected: expected/metrics-has-value.yml + expected: expected/metrics-has-value-label-poolname.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_deferred_slots --service-name=airflow::airflow-cluster --instance-name=airflow-worker-1 - expected: expected/metrics-has-value.yml + expected: expected/metrics-has-value-label-poolname.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_running_slots --service-name=airflow::airflow-cluster --instance-name=airflow-worker-1 - expected: expected/metrics-has-value.yml + expected: expected/metrics-has-value-label-poolname.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_scheduled_slots --service-name=airflow::airflow-cluster --instance-name=airflow-scheduler - expected: expected/metrics-has-value.yml + expected: expected/metrics-has-value-label-poolname.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_triggerer_heartbeat --service-name=airflow::airflow-cluster --instance-name=airflow-triggerer expected: expected/metrics-has-value.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_triggers_blocked_main_thread --service-name=airflow::airflow-cluster --instance-name=airflow-triggerer diff --git a/test/e2e-v2/cases/airflow/airflow-cluster-cases.yaml b/test/e2e-v2/cases/airflow/airflow-cluster-cases.yaml index 50529ae694e0..38dd07c14fd7 100644 --- a/test/e2e-v2/cases/airflow/airflow-cluster-cases.yaml +++ b/test/e2e-v2/cases/airflow/airflow-cluster-cases.yaml @@ -33,9 +33,9 @@ cases: - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_executor_open_slots --service-name=airflow::airflow-e2e-cluster expected: expected/metrics-has-value.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_deferred_slots --service-name=airflow::airflow-e2e-cluster - expected: expected/metrics-has-value.yml + expected: expected/metrics-has-value-label-poolname.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_pool_scheduled_slots --service-name=airflow::airflow-e2e-cluster - expected: expected/metrics-has-value.yml + expected: expected/metrics-has-value-label-poolname.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_scheduler_heartbeat --service-name=airflow::airflow-e2e-cluster expected: expected/metrics-has-value.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_scheduler_orphaned_tasks_cleared --service-name=airflow::airflow-e2e-cluster @@ -45,13 +45,13 @@ cases: - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_dag_file_queue_size --service-name=airflow::airflow-e2e-cluster expected: expected/metrics-has-value.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_open_slots --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-worker-1 - expected: expected/metrics-has-value.yml + expected: expected/metrics-has-value-label-poolname.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_deferred_slots --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-worker-1 - expected: expected/metrics-has-value.yml + expected: expected/metrics-has-value-label-poolname.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_running_slots --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-worker-1 - expected: expected/metrics-has-value.yml + expected: expected/metrics-has-value-label-poolname.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_pool_scheduled_slots --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-scheduler - expected: expected/metrics-has-value.yml + expected: expected/metrics-has-value-label-poolname.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_triggerer_heartbeat --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-triggerer expected: expected/metrics-has-value.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_airflow_instance_triggers_succeeded --service-name=airflow::airflow-e2e-cluster --instance-name=airflow-triggerer diff --git a/test/e2e-v2/cases/airflow/expected/metrics-has-value-label-poolname.yml b/test/e2e-v2/cases/airflow/expected/metrics-has-value-label-poolname.yml new file mode 100644 index 000000000000..ba881827ba5f --- /dev/null +++ b/test/e2e-v2/cases/airflow/expected/metrics-has-value-label-poolname.yml @@ -0,0 +1,38 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +debuggingtrace: null +type: TIME_SERIES_VALUES +results: + {{- contains .results }} + - metric: + labels: + {{- contains .metric.labels }} + - key: pool_name + value: {{ notEmpty .value }} + {{- end}} + values: + {{- contains .values }} + - id: {{ notEmpty .id }} + value: {{ notEmpty .value }} + traceid: null + owner: null + - id: {{ notEmpty .id }} + value: null + traceid: null + owner: null + {{- end}} + {{- end}} +error: null

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 W_5$@8@r^<};89oAR;gC9j{HAmRB0&y literal 0 HcmV?d00001 diff --git a/docs/en/setup/backend/images/airflow/horizon-k8s-service-topology.png b/docs/en/setup/backend/images/airflow/horizon-k8s-service-topology.png new file mode 100644 index 0000000000000000000000000000000000000000..82a235d8f0da5f8fbdbed8b386151ae2f318f6e3 GIT binary patch literal 194432 zcmbTdWl$VZ*EKpg1b6oY2_D=X5(pMthd^)-ZiBlfXmADy&II=vB!K|IgF6Iw8C<^M zdER=fzI*HbxmDBEr%yLUcb~nsti3u$Q(YPN1=R}x0D$}Mt-=QY00jyFAn#+MBWC7Q zj873eB=-->a)6onI zUiMuP6*@mShw{rg!ep5+LwOZ@f=T|;@NB1Gg)(41|8{;ET%(3E+>#*&^TvIGr}L+2 z-d-ZEd_Mc0N%Ln0!=FiNCMYABxh;-)9Lcye^4oX-6DKn2$Pg(YIutXfP`^bUHA_5X zk8D+eUvvEBs;lJK(W)wu!m<1+&#YM_8~RpUQS;TgBe*oluAphfH1p7=;MU5^e@U_6 zR*|3+>vI5B54PXLX~GNiHyaA^(P$QO!IGt%WsU@zE9ie44H;bNYA}(KpIl=qq%CX) z(demJ;6JHe%z_n*`v9Q~>oT;O9!4^j7%+6%3(ne8tmybeMO#}R2&|k070Jno%htY3 z-qZ;<|1cf;ceFkxPwM-lBdq(YZDC5wR9I>Oy2rkPs2oDd3i$y^pjIm7f3&!IH zK#V&(F}z2)L>^fmSq)L>E?<`-786lVa8L$XA=nIniiE7NIrN9g9`=_e^k63zypEb5 zgZCpVm4Yw>hh&^3_PR+)=A9%kl%Xv@Ia%}N%aVfnPFgiJxUGZJTHJ+-TyGB{C1qGa zGQnS+w4%<=1Rii9I|qbJ0W_VF-^plVdpj)bVF-JuMs1fk&!s2BtJTx6(*s0QXCiUbVN zW9pY_w43~=&C>qa!JVvVKckSyugJ&QUx+OK$zX~;vXc2sWt2swy?c1L4Z5 zx*s3w1LZ~W$gnLoh<8P|=-3!V?UVt&tI+NVY+L&ZWu5n&`BkgB(lKVT z+Ln?`MF~me7xFGMwAvaA$K1$E8X6C8=9i;S#)3IbBT7Mvzjm(TFgeu{SfFvcA{3wX zM4;v6>^>K37`1B~L4_v^0VJU8BpB?1>4UcRH5hfABl-n8_j`icN)<1^S4sLY7b?Bq z!U(Lflzdz%m_mC92#F#KPYWri=$S;jWItl!<0)n;ehw(X{GsRt+7ugg9o$DdsHj`* z0WpC?Z%jgW{N&_&B}Z4ZX-sy-W;oBH6Y{)*7mSPvsHjF*IWqTH$18VsE%)s15H8_v zw;ULXcfo6Q>Q21B^k{oM*qFEPY1Ca?=}Dsf#jvCrnC)^o(Sd(WOoy4jfoEr^@jjDQ#VvR2&`#>YUyj zm(O9lW`L`vg0ZsrJWcKnf%uxM2+-xYRzvu7QlPcTE$zLxn0UGno9P ztU}_CjVNm^`gcHI9>Q4!pB<@(CDfQ@PAnDKb8%O}FZ1RmTBQb+HM z=Ur87@@*oOR%>S2KJ_d0f;vd_Z+UV5E}c^4NWJKPjdwcGrl6q2%r1rQL}s_+QC5Ve z+X%OH{(Aei#iqcCEirW`NZHSw2EZ_v9(z7A8p$Py3((Zkir+jv9sSX;icxdosJY-x&G$(Dl?-cbG8@LJc>0YE9m2;hG=P@cL zUCf@-eQ;ub`_PLw`|(%!-Ab>V=VQ`m=wZ_A$7YKj;?3E!jy6CrM(O$hq_`CLbPcsB zC2#JG0s<}4_VGFn@_3Fxb6voM;|v>Y>R0!Jh{E`oJAhMy5{{gHaPr7Ljc+vs);q`fRtFat5>o)p-y1pmu z|G4%}vN%1a`-K>v)N@!rpF8_y+Ok@ccD=+YHN{En*1wY1tsC%WBUJfxCJ5?c@>FGW zGSkj-R&GPu-QC@?9!uF``-kG?!Uyx(x2)Uol=>h4{nnz$aL3|I@4~64lw>D-^7rC1 z^FeI0I3^yg0rZ&139GvR*S^WdWPUJ7%&2fU{ou((S6kZm&Skn;A72y%ZdsrV`i)%0NUIN0yvmK_A zV_G&`pjF;m$$@JIpMU~*{fW9@6|+RzN`*_sjps>d3*+Wy$@M~A>1nf-#>P@J@M>;% z^X9r&LcVlHpVP`}(`T!7yEd?2y(7Ds%F3!{yb57WMTo$*m@G~n6tt^|2yl?>ZH})S zzA;$7_%v#J@ZO4k-EzT*qX5oQ*!e`6ng&gjoPK zyNh}k%+{HtKTZ}Nfk~if*XF6LYJFaNr<#~BJ> z=gMxOJE8^+`pH2cJfdK8Bw5OF%yu_kCOWE^=qM$ogT8Le!D#f*xnvvXrEI;`$~k#A z+e6!&d_gLDTDsW$V}pj~(IMveO@^HSlpTc+mfT$C#Y1^EqZ5K`HPk2&h;E{bP zCF{hV=r7+4E_>YBxFq8VnfbpYCr3|A^gho}@Vy~MxVO_vPyG74?uw|$!dqpkD68;a z7Tu)!BQgzBvCS(+5m)ESeR-17U2Codt*wMSPlt-BwCul%2eeVv??D;c@h9s(f@3ZO z!6ff#$&-$!oqqDE?YgyGetG4y`sEe3Y%H{IbOS8-#S~EHc-%FUz(qlBbzi_PNhj`y zYB^}H^*0RSnGhY{Hx~Z3L%M`6!$^anVGAJVfVcW#AM1HWo|uV{ka8F@t?1a#;SG$E zuGyX(#rx`1{#Knb9+&XoCle4g2u{5lcQu1uqZCOKK$F{!+Pory54#^Gx<5N3VYqur z<=GlUh<5c`Y1PGVhb=d3nj_rh-O zOhTCRc5z=zuNG}|2@ykeQj4l=A&v;2m;Rm8_=E;VDLlJS9H>griG1VDw%e-v)sk95 z3W+i0w)ZOylImwvITpC`$u+7KrhtE6+Gix2mkj7pCrcLZq)s0g8Ca0yk?z+*3(HoT z$>3cOaGcrdMw!q4_An%_*TBtNdJJX{rz5N{QDQ? z#>&SVDZPhD%JEKwfBQUtcfC~g>@BX$0}cpGipZx-pV+om8UXthtsdko>)wvW8oxh! z{!Xk{rDj=AWTpFsR`mxhX&rJVrY~7bLA|vU+kR{u{=7eNWxpjL55fca-gUOzK^3nz z53elxsvLOV37TZN!3A4Ic=qMOqmceqToWi}0m`55=J$wr-(!%l0y)jJYBoJ6JwQxb^tlKa`M@_Fs>$yoGiqDV_76L3?G{*2RYfCg!lRh;ZKJwo`?wcw;ntezDU}SfK!mGPwFCT4%zBU%(!tt>79V`}KI7MQ zzxAOIY$yd<23+Ka6T|RLtl^itt)yvX6s`mC5O;aU))Y zxrcZjP2vPhFPQ`x$>-!B*NXw7ORli9?qjcZ_=KF4rbtMdf=YCZ_hkiLWs$U`vVL%)Plu3Pm za+^fVb!|*AtJ}yfDL9nCqh=o$IM&KX01o{WrGE%VKF4^43>Vb2b|;-Fpo@76-NlNh zL)M`W#I8)#Ly_m!#0^PrWv7fOQyy<>zRq!GM5M4PstMb=>FIQrhe{`RHYfYpHNE%G z+f($LGOEIbb^rFvl2O>H3E25}=_D3QC z%})d$cwqF}C_mtLfK^PFoG4wA1#+a?R&5y{^)U(#37P`Eadz@U89#%T3SG38w>Tk; z>vHd(c6oDdkEKsNnR#7jH5I04f8txw1{aa71e%6Vm+2JO?b5$>=MepBcKiL+!Sg4PED8ddUP!i zpOyP2H|qDET=4})@CKW(Adf!xm651=*AlNirPTZ%F!Xcy>^zV^a*`_#^qwIa+E-CD zr4mkVPPl5X!$cXwNz`%ePt&6ruNNtR|7#Q*){76L#11&8a(*cNV474H1SI6{^mxN! zCKfY#mQ|UT>=M0=C+oOQuzGjMCMQI9vJ>p5yflJqfB~3I%vGG=2_}C}fzGzubrrM{ zOHZ64sSrk0>t5Z8qNS~!a0mnyide>hI26zGA5(@js7+&c2pB7J%;4I&Q}|LuoMf11 zi@=~SIm`Gh1>KDIzqjCI2lA8vl8zYiyazzb;8Wp9r&Z9oPLnr-=*w`8BkBghQ+D;m z&GPFnqD5zCYe}5jEGDi;AMdx17pxvMsur+bzV2rC%;P}BKY-7n*6wYmInx`hV9$g8 zvg7>jAkaaQ?19CjTjjb0=ODY88C>K979$prqu>2OMTGJk1lb#0}rV+LrGy+3p)ID=_Nin4jNuil6;C1Q>181ggY;ZCa!n-_O*3F z->c@!_YLHqJ(#%?9%wj4DInF?;+MxMdEwdVLO)9}f1`O<|J115v>ly5ev9vxv2`~5 z@8Jksn!-e~ z08@v>BZxy0;cNSC0dHzVrJzx%Z_m_i`imnd2y1PPFd8#yhp)7G&lashgGSkKmr+1K zz!&-t_^Tdjujn3zQ4nP!xe3ksGvQX_e{>}^zaLUJXm74b#vO}B zAV!h_%n41DS9E>yMvSf25bh zQ6+CY7kB*W8{m~+(1!LyY{h;x_WrgoI@vadI5%`;#EYiv7GEkh@WqhJEphtF{Y$B% zCmRy|Ck$E(@pYyTgmg40T}Xrzal^PvD+|l=d1v8U(w2W(U5STHqdV?cyIzQUb@)i? zoy;LcD5l5N+8w>fr;AJ@;(BKANPkOJ{Tot&aPG|-hFvLsABrq=i-z~gc>D5To>sc1mBcl9TmPKGLBE;b8J3NVPd{!!}>FpwgK-SkRe z>)4wHwQp2sm@6;Ty^`Zp67UkQ*GJUIW9q=sX`v%r)N*Mzyu7?ZEb^|64PHiZy4tyB_Q@d-yY$pedq+ao=2=6%+th4Bs|ma# zb%FQa*!D=2#f_}S!STOj^A4TrpnCneW#>$rpV|ZRuDp|xIlK&#R+xC!EbHu0O>%8r z<0Nv>d%4P9c!)qX9=6#vAC_)ojWi%@JOBEzpK*c&1JI?`VlSb2cseX0yyh(}o)A=4 z)P44r&CvNPS!H71V~Y8k&SGuYaHO2K@82 zb#hWd%)}3Wixwx-D@2sMeV3Qb7s~T}sEO;TkKFh%;Ua!5Al;5r z*yIUY;`Rh3Q{}C^bwYvM5%F7KqMrC7?#2w-;tTWHak$e{;0J*x2{hVql+O;1I;ZpjE zbuP_Iq%gxc_!OPIJhZ@$Ov@w|M?H2sLMXtq6tz`y_dN6<69&+JwZy?_<_2&+wyv+{ z<-^@2LYiIoQJn<5r>Zm7@3FAmMyoRht^D!=75!@wf&R#U^`qK9VJ;`k=h4B6{--@t z=w2%*sMCRIx|&M{oO3z!lla3={fDl~*5oKL=l&7!<1K#kS9*1L*EL%!XjfL``}HH` zy=AG+aYYa`3F8g^dW7`7cC6Ub9crKS%MzgGFnAm~nd1JQ77wE-uokU6Z1SYC{a9H+ zfrOI`dqn&=z$8N)|J*q*3B8>*A5^F1P4~k)AOU~2GXCE$${XFy0sK0PQPuJE^ZcXb zm9#_J>m3giDY2zs2(_{1+;XAB__q@OUdyy7zN)vKIvacl7)&C9UT>+9>(Y_?>E=5Q zBU-WsG0y9=V$zvIDe@?d#_I>}70;mA;JwqU-z(VsAye}=9eyV8pYL<1vlB38uYRr| z>gd@-eKU7ZewCjsMQr+DZ^0FWG;U(Yz8TA`B_9x3lX@q&4O{ohW}UHCwEY)aaOpwyjLd{z^OFmw-Cg-$ow_ z|Ayl&pb~GEO0Ia0KFmTbOV4795PgwncbyR>ph~#L={sw;)_n6ppsB;eS40nys1Alz zSepfM4GwZ>B3cs9Na{e8pU;e+gh|}g0Hhv)Dl5>N$%vILWFKuHKQ~V)-R|oqIF7C_lVAQjSiOgustdq{p2hTAvR9L5?MW7 zVv)^MAV4j~p^T|e$-MziOl}opDU)4t1Gjr?08dey1G+*&n{Y9oo5XZl_m=c7~Xey5HT?qX##;s5U+q3LgqJa>M&4Q zb@i{uK>zW%T@WZ{9ML)Ef4GP!{>R8B{t|aV-?E|8Jv5Y;X;Jj=ex=eOq+x)u8xh%Y z`V=E9&C2&lf>pse$9oGa6Or0V6MzMzZxZ}XmHVTVO&>yWwF8f)OSfMuBC6&-+ugnUCz#a{ZZpf-EyB= zK6u1g*)-RblE@Ts@{$&~7A5JgrDqn>*5)@iU5KcC>hb)|)7lcxN2w#kk6YBJ`tFzQ z|IY1Ov6{G29=#`6CiqWF+{H3sS!)IFlR-$E5Yna4O$;O!1;-$hd2uyZa~_}&S-{VT znu}P~SUeFLykD`p!#}FHqc)^J}T=*!E|EfC&2p~X{K}8j+lK1j>6{Rn@SQM3G28eFz>jkw%YFsXA2>;d5 zx16bg)Ozj*{dnFSW@gIDkCuPW&&5mk>yRkYuuI0%$Kivksz|_W;I>=T!J#2d)4(2` z;u+h!rHF5!Te${7I?u+M?b`86CQh=KsNz6z%@IlJ@5^gl!fGFi^^;OHx5H}e#l*%J z6@wO+Xdx}`w?*B~&exvG{?zI-!UfA9D){B3i0MjjqE}HVlt_XPeVe>P0uP|+0+Am` z!q7Z{LA0K?vkj!b3++5|ygqNml;SBOOo7KTs;V>iL+4`aLt95G_|Uyv^-mS|R4?t! zj`g1tcZu5{0;3sVXt=b8@=tOAw>kkI3zAP@(nXZ!XRi)<4EPr4C_6-o_WO+}6MxK4?94c;E$-f=7p8rSHFggAX5 zATV`5Qq*;f+d@C#@x(cF=S4hNoGSBtXj!M&EAm^)P&%E5-x|xjWktRMqHB{>jzC6S z&0Z;t5E!(BO$h9fMy5PH#HxX^kh8OY2yZRwq|J9U3S*8^y|yq7ogrLl6Kf}mIjsJH zc@e)Wos!Ss)O)7?B#Qu}@DkxETCuImXA%N(bRB^oYe}Ck^Z}@tuD_f6nE_;XY6w?(__K*w9Hv|*W1*`xOO#o%8uv71)pd0!x5O{mXg>%QJ+v$YJDHyl=9Tm zy8|Jh7@r*r{L)iTDoa2>N^Ii;f=6t)ny=73lYuM$T>6hpfrUpN<`8M`7Ad_$oVDi` zn=hOP!3Uh~?d`}!6`|yw5!h1Z#2Vu8CMnR`BgaTYy`v=L>R!tOkzLPJrLHuwj+~08{!p(LW{t$ zhsqbT(#icrCHxgtZ+3P*rW(4vuEY)GOZXAJbPPX5+$&5%!f{(WyY>28625640b#*{ zsRDW%73onH3yY2M^{q^FG&Dx0H&k51w>OXL|0`PXTZsE%pgB2CnT#frp%5SmAF^;e zBq#KF{-edW{oVS%PhVm3?5OvX0}_Q%@U*&qyDR*Rj4iWu#hV~l%PHD-jV4%=DWxIw zipE3S<%o0XeX-5fMIC(P)5t#S`oyP!-G{v82gM79YJ|Q9Ax~j47+bc!=LmFRc`Zg( zxV9$Z3;sI#L4^3$SBQ|5Hg4>P>tCAVZrBFweSJSzKK4Z^&NoaL@3y93`3778Z9@AD>AznFnD#^x6>9RiShWw3L zgwV+{LD|+v#J*y1&9x=STpf70J*Qx6AcA;1uUPxCEvd-3JNdds|KCC4tgyjD{ymbp5v@zlwS~t!^3XoM^&YnfI8Q%eJ!P?~ve5 zGN##R$lHUl1gTe~8?`{bYLi5+~I4QsR9* z2Z16X!f0))Ap8Mose~RhCXD?V3>^imv_Pe3Gzuz|StiAcBmfa}FlO9E8?zuXKx=1i zCg0-~9--|KYK3ty@vw|yN^mc{fK`|{FmxG2OjMSAvb_9X;abQ%$opece#lQPgR$ZmR7qze$71$XnuYs-*3t?wjq#t?JT%v`vUK z^WhwoV^^x@Ql2xPs~a7xb$fu5*k8jB;a*RU{Dj!m)b$Tu0w+M-VB8 z42h!Y(2LhuPMNx0<_p3TpdS6wdg_iJ6Q>p;jSlaAY?SRm03uf@;LV2thmktujw7S} zc>=A}TQu87%&Ajhu^=@g`4(iA`s=N;`EVqU(=&VjxxEwT0FP)Ba&=U-;Hq@DN zFLX?`yJc{O%}_}+jB2*m`rYY6a=i7nku83F7BdRAzw?{A{pcw~4lrr{naJ~xBm*~V z%GCU3U+I{4*LXyB@}>|;(}^e8wqj#nxKhnHBeA`@bxEy(9nMx$XSP_*ZXA-oGDVaoji0N`*^YLC_ z!t^83?k!0gu8Oc3cr~7+tnqil>#qg2t#U3^t9^CoXJS9}peaPY)os0>%Nkhnr+OW# ztsXWTDLG{3I}EF9zpgdVoNAh9N%LPIp05+z^SB_VwBm8-&;~C}URhOd8KxpNN#rQ5 zl)eUEo~Z1KCu4Ma=ib$NK3#1EFKYlq@8PwN58A)x!VK=kJ{)KRN%JaemBLg|5*lzI z?G&xz-19k8d7}pbRxADYH&u;QbPx2gK0~XXS75Px!TGrlmk*ovC4wf6HXMWLx%uzq zrC@32V{gyXM@yr5WZxPf@~*iF!X8C`%ELn^gnCU;ZBsT3^14*_m+SAZuT=GB+7!r8 zZ~A(E-6oGV^`32VwGC}AY&V4bCN~+Ze~S&tb;zEnLO0uQhHx}evo|gR~47+d9*{W5+DBG^O*Q!oa@HQeZ2UMEn4!TV1Ki{%N zhm|L+{RPs5Z+}*I14G$m#+NNljxL9R3JzDxoAWshuCp6cyE!@?uizY~h9{f~zB(K; z?^jIutD&uA&-VHny)ATMki{iYKUw`KvW0ifX#gAO=E3wIe z%MXq^mu$=*z0y7J?{^qB*0=!~Jl+dUNV?!s{Wg}OM=mfk?JMzW-RQq|d^H)USzxrMWLhz_iF zR{moI6_3nPd=DQ1YD{~&hbYa_SNV(G4OCf?QshDCsz*T69DU?h#ZwRPf==ZHbFX`! zY8Tvjhk~1j?qgQwp$zZ2Br`)eysS-X4&6}J^iaBry2GpX-!)MnOY~dru z%tO=e_Et}y?-o)$tJRArJGQjE`}w)WWo9O5fT5a%-s(Y8@8l8M;H%+N++e}m^-u=5 zaxirI4*aGXNImQayeWA6gs zRPYUQrvmTQ8=c=+3uF)N_r-!SWd*nObtX3V{YF$mln6gi(Sk67{ z`?G;zba(Syl!K}`yKxJKZ*pg8+wDNvx-8SJ-`^me&UG}ZUpnPpRbsMZJG|^Vjuhqj zN9MeL#uqgB!0%)j*pYr!ny9-ie=LzY8YCgSf{&3=efY} z+nc=U(tyFzduTRf@q}&Q3^#(@DE2qSHnsgUolB#0&>!0pBDBkg?Z5ZS?jULVNy+Vc zs>T(FM1a5V_2W4;@1Xvxx1d%Bl=kil5dOF=`Hs&SxAr%DhB|ctr^IXuBOiiQ@UkL%wsbrmZkUvWEuC z8=BjdN6}w=(Qu73Q#CPGKB<<>scn|=W!!ee>! z{o7Y!hf!&-&#L@k@Y1jfzfY<5*TdK5lpU9-Kr>^Wdpz#^ z?x}?eK}^>_aP&GX;kDJyZN=#a!fAlg-XgFzb?;ZIhzAwn+q}Nz>!0D| zCa*}eI>|!x=|TWqNZp4tW{uMiOgrpDCn}Zv61_tG4he!Sd>-RDR&4Vn7Vhbg8DA7c zZ=ZGO7yuN+$RBo@uAgev%HTo-zj&%urSpD{g1fn~HX3uAYy(kRE}18&6oH)W9VzCprDu|Mr#di54KA;`zoOQUj_=?u&7N2E_>XVX32czw-&>k^D}&X~&> z9WoUi5Nc=Q72Nk9pt*e?KJ|2L@9JeJk34RYz%zPq`vnUJ); zIoDQ}PoCd<=OFgef!0ByG-IYhoFI)9@%=;Y(ir=0#pAU(^PsqNycx{w7`Fk7t-d|JAXxP`m-0&&&+;Cb&J{6C` zj?xT+qSY9w(a|mFaZmiOdgUAkH^Ov-d&R5^;EByH(}wgeiYOdqBQ|9XpXuIk8CT?}bkFK+)`zv9 zU1n+?LY;qrW!o$ePRq0yxysM;HOvr*Sl*?Gdf-xrr*0HlSz@J1d%)6-`J7jd(W+2^ zyZQCi5tUtJRhsBSz|Bzu4&fl4xpc=nBkrT`cgqIDTRQXl3R2yy7shY@2Vxc5*It4L zZE(HwX>AaF;{kqlbC%NN264i-c>O!XOPeJeowtsV#R;M7^S*cT&?x#JjOm5=!)8o&`-RpdTNB-W8iYA z&MO97(Haotd6v+y44OMtLyw;G(AQqEjyH!>imlFn)unVf15LXu`Zg>!~dFXdNPI=BU--|+*c>8CJFQ7sa zhLO!#3?tUp``vH-ZEz!@wbVFzt%;Fkjz*=SbPYHOdMm!Wo9#2mI#*h+hgYI+Eatr8 z8}gAxLy~azwPO{y1)8ll-Z8=RRaMGR0)O?#@hVAiGzxTQ8_lSc_&JoFR zn)NT=>gG1qO6^W56Qs?1J-e9~y2caYr-62^`bLx`zMR=J+UPEPD%eELj8!Y)kv}H+yutgyU@yR zs`9PyNZ2~pr7|t|-FJDMbKb<~-c`CWEl}halObbi^wvXF7@ry>RaFAU`576RRxHGO z`bV!!}oO0Y`R^DGdTwTDPNxw!ib?)$XQ-aeGd0 zpUM_6nqa=egXIFoK8H(SF_ys|2VXZ=-->fm@VSxZ2=M!y@5qQDITzQUC|8hmR-l(i z!*=a0)vDk>zXDsk?6DkJN7@U14z7Et&z9W|>;t+(ai5bL(*wi(h)s0+;?8rljlI^v@uU@n!udXwBx@bV}RGCG#O+tcLalAG%%1nQ(u}x~f81JeWafzz2 zUMc!&ytv6(O)Fe^J72*~dTb0W zYkMr#sM!~fIy+^I<^EgMxop4m=vOoqi@W5pWq+0E{?vLTcy&{yq?I>WQNZ4HHL3>9 z;kFn0mv#Jp#>utWXj-B~IKbWaFv9bQPFEtH^rX16!SsyoQ>0zBdaC*VL`j)K=VlHw z$1g4g5TpLr+dQQxA4?8f@Jgl+C^WK$cLfK95k7QETt?k%{4*c3(*z=8!uz6uDe?h( z070pcey3T1BCI`y1-s>@cYZRfd3oz96;VRo*Y};x|ERz_Vl11NXY(b}QU-cRK~ny8 zk^LEhE5?Thd2x6W_hb$IU!+Gu_ijC#@@H-zEU`MaxblzdfPp`_7qr@j5N}2hktVKa z*|Q?}f}G6H0sd<=z@YKF`8BTI6qaZxYS1H<9sjg`F*W@ZZUld?;=XeWD`zi9^+>Xt zwps8V^lb^;`M#sE3ONeXKqrgG#s|1HURT<8wkwvt_6~yr>IXI4s^04}X~Hpc7!!qk zBeS9{Ku7;wp}{~&&Xr+Pc`7D@h>L9}H;8QSYZtjDkRg&hN4B?Z{Pj#}{AV8nJ~L_~ zeT=`Y;u52$aLQ?bOXJG)YMi>Ip>HW7U-Q)GH(Sz_clG*`Vv0PBSQZyT-MBADmU;po z6;tLLtg!QI29?R}u8VvZrfwdMG~gIwK;<~339$Hctxy;7&Z$oY7ZL3Ukl+EYMYc8H zQN?=Ml-Osc?+aOO-e}u%IsMfQv-6~y z4mmVhVT%lBXwPiatt=WEzU@~O`)Q@4Q%3h} zZh}?X2WIT@iKUh@0vavkMH~McY1!Qc41D`V9Hg=)w1Z5(^s_m7&FeA`=vB%@=TtKqu|n-cRpl3)pHKXxq5weh?bXaYwj%D#>qy0O?SSm z!`WNH=n!Ap?^QekHVlOjYLSM`!4ECZ3*|} zfgi!+bZ*#xn)6d1t}_g5tE4n+9dNFgu|-!E#)XAqqDCn9-J7K;5ZDO1ZC`As2sAV| zg6BZ78bW!%}sci-_n@U)PyY>K(`61F>QDze`H{5i$PG`iaMgy1Q?B&L=*@OV^^zVxMy> zF!4DGtGXI2D2<#_9s15Tzin~d{c-TtGb+x?-3`EQ(4!_y(N18R-Fv9EoKx~Wglz6l z+TZxR-e#Em3^RE05UkXYf+?1(f0-(gN}97MNK>3rFT2EtpnNoZD#6_`@R|5ruMpVZ zA8)lOY1k>STroshwERYgFp%AJv{tC8=0VFC9TsFlWmjx9L@(^ZX`Bzy&}s0H;#ir? zL8}MnS;Nof?|U9=PO_MwsD(Xu(U8lynk(Do%bI{)a&30tBh`g{puXyjjRUm(yx-Td zI^X5{gmHIVWR{gpxt+i+{D7K++gQJY2A__x95gQsM;Zx@?|6_0usrPqg`sF_iSRYCSAHTEr7kb_m6_nL>NeeGoT_#+XzFy&2+UJDHquRI|il&jFPVIFFeVi(*I2OX81sd-W z6c^*60T6B6kK31{2sK}2P(4J!<4@|h zqF{f0FJrgtH^{0woeTGPJh?F~X{Uu2)ubyDm^A7P7QU_))}PTIGV0#bZ=RO8r>c42 zck$${SWXeLdw^+q=k`|G-iVyd^D^ztOY|Q3qQU$V8rb*iP!{KpayAeIgni1ip=2Cp zg-}_0WS-T@JhlmS@px6xvzrnB(T~W^Ip#Nh*XTFNH_Y&qrahh-IiwXHompR((?JcU z9nH?SRkb%wL*&Sa_$VcIxp5^3h4Vd4sG*TYvQk)~^i9GJzrM7M=YF zs~tOBKeUU6nyG!(6`+}Sh?UQn(%e?{ezN6uj#)Ws5XhTdiT13xv&j#U#aMlv=_9jN zr`JH_)MnY;u8A%aGTG~^MwW;#0*BQS-cn_TCMOdZSZ)v!5yfuwzitu4{bBv_EKS>O zIr^N>@#hT%nSN3jspp40Cn9V0PE;*ie@&~5uU|iZ=JS0oJ$pqji&FJF^U~eq>nn)3 z1?JBp47ZB3G|Sy>OM_T6Wqev?YGc-1I~(c=PAj%*b-BxfU5X;JC>Q1o?&_I}2L0Wz z9Qx7u(X&mzzYk1)!q!{YLUS75U?K^?_DrpD$I!6>Wn{z7t+jDU*kuWhewrX&{7zV33rh0d!CeOZn%sMTZ++{%x7PeaGgDn%ed<)5 zefHT!jRGn?jgW;SIf%a%GLJ7V^J3zHE`r8iVZ%cy=g)LZjpOYjhpPuO7LihaV2leI-#XrWE5Q=6Ik z<-SfU7$&HfM)%O9N@7y(8@oN98M{9@%boNL>|%JE4UuI%h9*0?95PUaFQjALey(S< ztHh2*&h9WKQ&Om=Xrr*ubdsUFdC4A`QVN#mgA&L?f*W8rH!M%GbL%IbvQl2L^k=JF zaaM?G)ider;uXEqmTYtXdY(M1R3a2Nts~eTQ`ZZ05b9m21&X55C1=k*K4M3&wb(x> zio&Nu(`P?s6-86l$t;|C)QS2n5*@S$Hs2+X->Gn3A$fr8p#8Gk^_N_zR{+3C{d|i; z^7Z26-me5^?AkxDRB|93I=*6xQ8H!o*VQudN-)}rv*EQ#2!hMe=Ci@uVEzdP!l)%* z!i)?OV?}aUz?ohs5(R93lLd0b>t-V;g>OSdW@lfFr)$gisUD1q(-e_Oo^~P@ZA8!t zXcRir*;&aWs%Uo(`oOtJ1cpV@T1xOH+G&6^(BH-)lEnQ^n;q9|^5w3INZGftv;`T- zMB~d>V>p*-?vgrvqmG;q*S9M)EE3u0S?CgHf4yKhQL+8iN2j~{^z8dHDvzbDibpL( z#xX-3iA_EVep3Th9q@2~2@h8E2pCFT3C*{Ff=6zP!EQhMw|EX~X~;0c&$P>u>jxiP zt*yixt?SwAbFvmellfWO`CIk7R^xK)oY-3%bewOc3ds?5fN<1G*IUO-N9l!(>MeQ) zwP74)o%{E?DSMfrhi4;^n%WlLtUrnR`Lx2h=euWZoJ-Hjr}J4DXiZ6QN=I-krp_#T zr!#nUl$bX00A(@p)RI&6vY(i_O&<=I)a?7l?P-5^A=lKh-BDXHZlg$j~nMB)+ygE!r71R$~^ppuM76T{Knb) zC3P+A?$LrH)K6J_a^ZhY+a!qXTS>+j6rNc`mFlxa*WQ=3D0I`v2z6MA88)}IsrxNKoh zILt#ite`CxQ3|?xwYBAa#c~4u!e6W;KlKgTy_d0?&$l#W)75&K3OIUj-UT&UUyXXV!)h^JKCLq-kNGU{>)OYSxf zI4kH`>!zWt9ko;L4LU*qY=*5D$2l3qSXMOwWj{0;Ktzx6&|sn;E!v>ElFYj+e;# zYCVc(yR*8bqEhk`i6Y(Brpeo31MsOf`Ac)dpiP$YXkc-Tty=Gp6b{1*{)VBjLNKpg z4=lq|s^1sOctp~-)X8O>6F*=9t1hCPYC13SFI@;f3eS9{MftMyanEpf*|6AjdIP%h zf@Y9ZHx2=DRD2~eJVJOs--~~8>C0%%aGQ0UDJNm00Mn_VKDX`%4!NCOhKLlz!^FufTx&N3uxGc)B#a+c z2sQ<~yp^hmA(}-L7Cv#-L34M z4j``&GcpOl=NYd>L`2B?*r1W@TPKS|eWQZ_lwcKAcOpic*vv0uB~h)|hPLx)=$X`5 z>N6gQg@R3v*_=ZvVM04Ji+vWb7&42Fxj6C^1r!EsV`FaVJZ$12sN+Op9B6x;bAu`t zBU~S6y|WI>)G=}>qHUXEcq|ONM(h|y;lDx&ma>qQ3P@{fBO-QF(UA$JX2_&mOhpA- z{~4_w?Kc*3!WpFdPQ}|q(vlLxf}aM-47($aD{*%647)%Q6j#GE&E2wDasB;Fz~*=D zdGi0^l*~d&i@ebwu#x)`u_TYDEEFK!ivfa1BRLo~toirRgFyLZI}+G3yjkUZ?qHO4 z+n(r+{e3b+2Oy}7{{72QI)?|ljt_Ff_8+kV)We7_-Tfo!C|u|T{95F#m508Sac(+B zRCRvg{3OrdzYL7^gTlflm^D?^=fq=!{JEF@YLj_iwcyV$wZx>jB%kVM2->{<aD&c6-z!)QiSa}~Ii z{fQ%>`}YgjAxP5CJRjX!9Gy<}p`7Uj;wp?RhJPQl3mx`ZbBA3)TJ!VH_L&a!pgk<` zn-S-~KTZn;f}b@$g^-4lGP3#U$qDiQI_DYo?|)`PKDs!!POH$g^kw`bE=7gR^Q<7% zA{*IJ-PB?mTcJ?G2A(o!`>#Xhxj@p~GX^hDz12T;cG>Jdb_y5VbMB5&t7AG_9m#xJ zNG0X}Y7ZQQptr2e?~ytiSp8ow(gL4*LCUty5^j*4pmpfu+blhl^M5z^N~=d5vsH+; zO6d3!qc%nS-?;`r%s9{bSgvUAuwMdP*V8v7B%}x5f3T%=HRqE-`HT@Hoi(OYwtPzH zS#wu&U8l$@erL)*54vB{XC9RP)i9P6qs)+j8CbBYncQE$LQuxM>gY(@R%v0nohF&# z`oT9811i_(7He{?qrS}Yyc=iu#B3+{&S2x&tx%JIejIJmMw&l+nh;;wHm2&5_b^6W z0K&7DCP~`T1^5oT!nt_=kg?t5Mlwx|-~>@&Gz{IDg1ONPdij~p32~qJ(2|N`VTJRP zo6l8L@;umpU4BZ;?by`f)Xd^@SD0X5etQSoX1-YOtkYVK1u1WiO|nZoCs7$yo%O}e z7DOYyx@1zZ-vEBc57%8_#%%Zs*ZXb=lZXt??&luKONAXr4-8mmO1T-KxT>FH=##Ue z!lR1;PVb+RAC0-Hi+b~KYF_ig|GuF|uk_lviOmr}C>R~uPI6=B6pr?H(CKD;Azjf| zyRo=|EHBRhz(Rob7>OPkUGm0|W2;x{IJ+rD!EFsn+E`!`ei_b_#-GadyH& zF1USkx~f0i6HB$zMC`ftSQ_#I7GsT@ed(Aj2uvb9k;**Qo%PhEEk<95O~+~p``doN zL{_Xer(V=3u5nFg!sjfFT& z`CUgLWuhtCc4P5rWxHNn;C}s5QFE7}#hy+4^b36;57y4<7Ms5Pb2hk4ErH=0K|#1P zyX29gJp_jTTq;{GI|oB|5F7l{3d8+qE|UFeK0^6b8Mhvl@F2XCY!}1)&zc}XcH&pZ z2>ibQ>yaLN9(Ep!oxveGrcRvxSH%hj91IpZ(@pY&PTO9CJLjWB2Xz5_UzDc{N6YuEb%kG}INJrQP43MR)w9 z-CsEf;jzH2PBs+Ay109L&}JJy$-Na2%vJGTQ2_j+Y&6eAzk6dOV<$=+72I zK2Hs{k7Gf}O-xo}-$|KAQ^l z%uTM6Y}co_96}dxS(VdwCUJBheRe;7UraeLq0KU_=y7mZ zcuTp-MXT3x+lT>1rrG{zVVC~rErp;~e2*$lob)r3|2(7shPxwcsvVP18CAXD{ivafT-JhkGuOmnLDbywlY zjB;C)nv}6ogXPU>CO_1F`F4^)MT0JoW_5oAejG=zQ(RDEr8}o3*=Tfr||ou_5u76g{RMv654r)1GH* zkSfbvS+c{aBZ~Gv9yomlpF^uQCZJiM_pvcp;;}MV;&JW122ni&=am;wq=ZgF+EKEb z4%SJSdY~K`SVZ#)bAJ*m4w6L=vg>`Od15u9^Y4aK7Tnm31}Z4=FfA^BC%*vRmG5WH z-}IxTzXxVszfx*#S!VZfy9zxI1BYbC#m}p@DBt4H2=SnO=MpAVIn?6)Es@ajr4=tZ zBDLO7orPS@hn?i}nA`WLPlxo7LI1>;a@0b*xC8TVU=!yBcf)=LAIOnpM|^F?Za&mr ziW7T|#dM4Ikz>`HJg)GT$O*mf_WHrsMslYXUUQZ8cyRB8+cl&~k6v8g4gDedu(bo2 zlU;{^=8h((e$+Uh01 zCv1HyTQOcZUA~iok9pE0nK{^Z+9$^%;s6|~td};kVGQ?9VXkLZFjZLwWqL`(h#c^BQ|XlN z3uxlyzVyQF(~8TTi{99LT{{U=^^KZ%um2={*a$s(K8o`*r4avm0IukDc38fhB~g0J zA8!jCz}<8gWw;?f6y#Zo@|TWub7u-OR+K!O^{~}eII&{FC?XWk{<}cX9QUo=g@gaR zQ|WsWC0mZ{;C4his|a;6JNqfA+{$-d$jzC8oqi?@r**U0eS0m*94=llDYJ%NFhCRs zwT^~XWB0PdahVRh93ENknxo#}zW$`{sYoH)0v;E!LUy_`VKZ#SRLs!{n?0W~9>{9) zyw7&?e8?j{i)2o_TN2t7^$=d)tXABX7tAo8c3|sX;sr&#?sFTeyeDUVDBBt{mQ}#R zeu>c_l2c^+#Muz1$v2vI#p$tOWXhB%rvwX%ZawE~;h4?79%T^$Zy|#uo>+6b4ObE; z&r<^HC?fiL7&ob>99qM4Io@MU#`ew0oQVw#sqL-b#XtYTZ`m^hB(VT1@_2?cnzuP7 z9x?v&4o70bcIlzTWs%3Xd3{vxa|9b&=T-dQmj){MQ+W3$nqx+*XJ%HAoXsb1GvLG5 z?7-0qj}Ke^2t)$#xALzpDpP+tY1xc-&@^%IQn`N>X>r~&`rvoS@w%{!xYg? zFIPMim*n!LikGExx8u#u%c0D`O@(9^3(g)w-B_x03>1y0lPzQaCJMOeC3EQA8xmsU z&qoxOd}(Gi*5PJAxJp+i=gj*PDSPPZQfp{FMHr}7ArxBhK6FfYsXUYF0SNxI= zV|#;7aM+G8L>MFaVL+Bm=bnXSF|Z12YwZz`A39Bq+sO25*x22g{B_d@7SX<>O5r34 z-fJnT^c)Mm8B$BazHOiOT${FwXup(rkM=a$PFS6OPFEMjtslW3yJqq*8q_r=2+7C=Ja++Obu zp5&r#g-2K=dwus^M(ei6bE?%BpCFZU`^pq`TjY{vn}MQ>bWAMfFfFi|GCj)npsxlk z^|x@LzXip`2MfRpcfANxW>Me1sa_kMU{%P!7R;F`_ATakx+UV1RgR#)@BK5-(I&<> zGkb}A%q`?@p1U!HHtvO6i}Oe!Uh!qmR*^hN_t+Dp`8LPYy6G|&$w-mBOLHUT>Y-wN zAoRTIPt3AFf&faKh@0@bBRPY4C=Hz{VoF;Lrh}+BoE5c%-c#P7cj2nM5+?{;Qve^s zy-Spd5pr)vH?e@Vmic7aI$isQ_E)>F_>9OMf24BiMkWCJUh)4v`$UV4D~9LtWlU;C zSlL9$n+f|BD4QNKP9X++{>2CL-0vk~LdL=pH^@m9w6FjIy;G%inoOKMz11z@a*$@i z#tXv6TX&@Y<$o4@v)qctC8UHuE!v8eDLx-FxmA&$OD3TwGV#HSbml--ZNuL7(UnqZ zgX}^XfgzeWGQK!lE4|@G5$VwBa`9MY5jSdgpAzf=hWz6|u;*GsQPWe4B0tu{5FyfRJs)9Ogj{!*1XPePXzPqW;Yv~7{qzkDG~rucA^LoaAK zld_LIO2g!Q>)W54V9fuO^AmLEz);yROQ39lU!B#`r5Lineo_5b(K(pYOT4r#sT( zt$oYsNyW**o^MCxuBRFF<&wz-Z|MnB&#Bcf!N@~9N3U=0x}@JkE~vKAOM3V2b~d(` z>Q3+)Y#mM=1Uj{0#0|QPV(nAsLELtK!1qEs_?xkM(FZQyOand&2$4$t(&0pO-L*yU z1PwWwl$u1KD2w9kRx{mdPOsj&1@D?>z0<>wd(w zPqa)b`DaSSXTEbg_>03M+6=HEk5%W$IfGqhqd??Q2X%xR>ch;NHeuFkn7-f1Z*M(lRNqLcSVZ+%q~U@*BdKzN#mf zq2ci5U@+rdZytMfhERFk?940s(RhXSJRT=CsFwA(Gg`GH)^|%{!jr9^JXl_un&XaQ z$v=u$yy1r#`-;IW7e4_U^^aYmK21~*vg8LHf{6(RL3zidS%IvOj2=54UdY0XehN>DO79Bmva4({3c#sj)*9WWkM%R%ssk1nWA3RSlpy zRY&AQ=A;veBhMb0LZH`H0-VJJ2vA`hLUL5znfzLAJgajKXW2OYxtQ)`iL;Pr#ZuJu zm-dh`zVj%QR0u0;f|l5_ZCl)o@~sSdS4%0QqyDz3JSs`-m3hZFW&~!N*>7y}3I2u5 zz^}P$jU4CP!$aP%4>YjX#pwS6Fe;{hHwaOfB2eIe&_10ti zJ~Yt2wBbMUKYAnb(4!ZPQQVP{`WR{Q+4K^PwW`1yv@Oz#>UG=_-OOn%^^w>xFlpVN za9w%=M5jr(zKQ_m2*_66_|$M+U^k`5rhWSI%a_d9@3OyLR}{6XHUtp$>xiDTvcua~ zvJpN|bbZ&=9KZ_E2^D;^HFtk&*a_RC^PX#?iShKp1#A7Piuz`I8gjbd4rUlxWY>xr z@mb{FyHfYu@3pcNAEs$LKN0Xro5^RZ#V_q!ow2f+-g1R|?SIRZQqhRSgBxdhZul5b z22!ek!aZI=ozOFykcU=1iR0d4%5;({o65jct`%epjQisPjurJ9LMBIVSoE5D#qW{_ zFWh1+rO2?)kWyZ*SBzw@G|<1L8u!!I`1 zvYMKGUovsS>AdJLZ0Uj<2nq9`tN3Z-JYprxZrfK2e9Yzvu7Ujv?O4!%qqP4R6VrWz zq84xBymGW6iZIvY%bN2RyEP*~d`Uq?u+{qnAXPqLHDmx@u6ziLp8c-)(~79PiW%by zr#EU2xlXS|x=E*Q^GUw|tK%Oy^!77u`epZhmQv_D%u-94f$(diTL+A9ZyGB>CGMg@ zWF_QKWy5Hw!xH^Ed)Z`hYHL`K!=+U_O{(3es=vZ4A_Vo! zP~FoV{_GGtu|9znar40}1sxc2cE6rfa-cNtf^E4t+L=>tL{UEV3N#;7o4YtN85UA@ z_SVhR8DE$}g%9n_u$7`QY#aJ6>&6~1YW?B!$-gk40lFIl^6OAQlb2#b?4^(uY9eje zb^nPuEm^jNbB|-Rl1W_cdFmU_z2v)iQv{V7jIos#+%^d04x2bB-X&p#*!S@DQHveH zL^o&-t@0pat$%RzwT3%Em|+ckrl{Btn)uS5E|hL=5f>VQ_hw)IB5LH%Ocq0<1kG;2 zmgTR$bOozKuI?v4M3pVVr|KoRcAI(|-7SfJ=>%a>7)D^-z=o{OtUXoPW%T$^u`6?#eBv!+J+TtN@AiU%ql{l5XPivir>F#`6sGkMLkR~$`i$RKIM#EJ_FF$>5+f`0F>2F?i`rQEoP?nfA z4&o;oICBciPFAi}Jb!~Q@mj)#F({D;Ps^(Bup}iwe8g0sZA??su!=s8W0yf z1ZTx7ZC<1pl-d4uToGc=@auTeNrJ9JT^xEe$wFZT+Zp~ib=?SO&_vaR=7F&Wmht2M zBbH z6E#4_yJ?sAJ9Bkw^h-q>Am!Uhh8EX-y03Bzh2BxDzeqkxjXsHnrV>~Ug?|(eLLjV~ z@08I>=Ol0MDb-dA$M5h>HKRe7xIDtD)Jq<%1Z?J5v;mY9rh|jnT-(laDDhc6!{@-s zA2iEh7}%?6LBp+J(B24p^`g0T z`y#&p>3qUOaBQR)T2FUrX{9kK#m_SnJ$@G<26N6Hq;MS=tpt~m>`EA|6Nqra3#<>| z7HmT0?ATqNBGcOt`Z*0aDr%(Jm6CD}^7@4lE$0zObV@Pu(H-URPV3d^P(s77T^`Qv z-Z&tr0?`4|DkU%yekz(42s2L#)IB0aGv6Lil!|vv@rztp;po6nb%qT&(K28pArdZ@8?2Gx`ut{os}QjH3)681;REec zvd>AZw-OsD7axI?GHAWn|8pF!FerqYjiTdSQoL2@RE6dTDTkadbTVADTk_vH%onui zM2U$tHkaB^N*)_Qg292282j0F6Q*Oro|fCaY3G|rOy6x0un`v<5j=O3is*K(BW=GT z!BlSlP8b<=_xDr#R_hmyf5!MJIP>(^$Bt+N>e=nq>L(ly7pReSma%!jFZg^%T)ST>LDl;xsW9bYcB+NE?!|1N{Al+WoF z#m~P>QUMO`i$@cPsd9O0*zdlb-=pFjTx7*In8F8;#;-p$22K$`Auy7lUy+HNv!)M_ z@}ceJVz)#3{wMiDe4TL}NYM`?hcDJFo&4E$rB9wbsEz7bX;!9U6yDzSXRNv~HbTzZ zVnOOTczT( zf9sB*ag?GkH`50m^vK(^Qj9Rs;42BVX>9pZeyhByF1N+M(=sG0A z^CA}U{;P1{ zanv0to__N)%P2XEp0Ep>pyXW@hT>-ms%exMxFv5hVhZmY>eP?vNQAa?SZUQ>Hw=5ha=zU3_ezka7OHPz=>Imunk! zr@Vboh&f+aSQBDwULUYyvV@J#`eeh{-<>5KrE;P?TTLvO{wXAFfP ze78p^-C2(4_1Ejrl*X2(T<_ajbTT?;5plb#OLJ8f!hP5JG!lm3P}a3xGHHxaUy$Dj z>mJgX!3{h(O`Ie3Tbgy{xG#O2E(=D7=&}QA*tI%jm0NSC_vG2%{7N5tM`F@SiQg55 z!&R``UYvLYoDkN`CO!N0%Nw?@knm0eW>J4SHZk%Vg0c>^!C(=_wI7;ax`LeewSZk1ol(5Djd-+OYBoJccXz-hJR9X5B%?^6j#hR4kt*yosvt z>uudjOuB;>UC`T9y5qe<_r93}yCOby?=#o^Ja9{JGE?#A>X#N`h2%QEE7@A74RRk) z{7%eqScG8UKbjB__KvpLAQ;@nu)xHVxfimVFEoNYR_J@(S=$Ug(Koz<3_iWF_sxGN zzI`{YZ#4H+ z$A6Hly-w@muOrqhjFRw$fAovP*Sx1j)NH|{e$dLEj7Az=oBa(~_k-HvxVMP3-?vb) zL>IQ)TLDsUX;*~pa>m_xQVkG(j>6bXBb!AYZwwn7d5wM23Z=2GE2TLG23!VeC3r@9 zSDTizQlc-WQQ2!I+#wz)^fAbP+Yo9UYfos&JTBqklO_nSS&j*DE9vI)3d`c9#S=Fq zkKNY@-}p%=1p;;FAScyYL!mD^Gctb0p_aBlsds|E`;GXi>V3L5;rDPsaJQQedAG>F zmSD_v1Gj)mryqrnuvlf)y)$Qb3D^c+aw?9!@VnxqWRfbOgqjhGtyZFBip|G% zOHL1IiuV=iCx&CW6o=Gp^`e}dPh7wn0@rFG$dh6UWwbS14(AJX z_HQ_Ny%wvkWwe(@Z!*EIn0@Efy`x1hUiEW5xATz-8NXhJbFDAoHUWzr@6Ca|21i;% zY1WYAgB`-zb)kj%yP?lC;dlHS6jzZgWmv`!SQ9lE6E2o?5!&1OQ!Jv%{+dJvwy6^= zZD`>a*iZas&E&^ya!$Hkl}Dz#D^i5pWR%f;?U?83(p21TqCdX0RzVG}He>8OElpu` zU_w4_8o>mRLIxac`~8uIHYtHp7{l0m1yCjRo%I8DsPkoH}-1ncjqA8|@b#}}EbW-WdF=88A#Py5VlWP5DAmZRvdd14D{Rr5Z4@12PMhj+3M7mvIe z?$hr3R;d?(3%IsE4-|S&gb&oc2*PKo??1}10{)npz3j^RGq?#CYq=7e6$XkF0o6Kl zLOCdt&`SK!&OQ;F$SK}|l;OeFymm}U)h_#mM^7zegd!}?;qK5??`hNf^He>ov9o_t z*DoFRC$8U4{&;!c8%eI@y~Hi%uxGSl^5asC+Ro%MsnCh;kqrh%q_y7FbzVoJM$%oO zIM1oA#93B6Va3YJrO5`R^#;DpMD7TRq@1>o2ykHiYWTYBA!cX2n#q0ul5k@Omouay z2&rg{Lw&K_BanH~t*Rb+6_{kR)jlvI{nZraWfDv-KK|Wo3F=ls?&~%S#h-e~N21SE zf@KO}nuwLb-xsRj#IQa@;bPV(>V8R04}i$cA080032+EzJ>*4Bx2MB@=^T#~QUAQdX#;g<%g#VP(EYSllcPRy?9-0z z5sMl8uy5gXIx;aPFP*C$px#U&8H>*Zbrksalrm>;~<&d0j?zx)}0(z&Pa;I#@;<{xjRE8_|x!S(i>ouW8 zF=_=$Q5xMO?>Tf8Rql4w$%pG-`dZ07P7<0vW{$o`TUh|=6n4uTz5ogL=Yp69d8J~J z22DPQX42?;w{4KmV5+!d20iIl55^yPMD%j*hq}5|QA3!-_#sj0b939tlZt>$$*i$d z)}e5Ujr~$|uDpq1fGEnBKZ3QYOW9z4DZU;kR?fxmR@^-5(jxO#E9~d_=YRtf@vE&U zmHmBeCivrMIe*TyjZiz%>W0s#mQ{qy-3lf+|831d2jOZZKME1c7?K8=Q4m!`4Ge!z z6F=n;VcMsMW#mi|@%B2^JLmF9OlbNk3jeQzaj}4H=BE%t*E5tQ>>V{QNB38kw--vT zvCU}agG4mX3JfbW-w6zXnvyZ#crS%pyhQU(N4J?XjTZ3+HNI3?=YWdO6jOlGm{XW3 z5S2CIq#L_$wwt*3v&!J!A!e%Tv-+Z<&4}qi2-w6sO6y?*ee%20qY)VAg!eI8uBq;NyW`47K`0d_IC z-U8bRoP4k(tIeh3mr;}C4u08ya6ER{aVpE)E5!d{p9+XAvI0GYd**ooCyekRSH8_j znG9UUu(QxPp>nzR-md2h7Y#B#AL!So&ue?aBshc%LNLhR1^SyA2|kmdyXX&^AvK92 z<0EyeyvI4v*)}3#Q5v8QR?A}&B#Mlj%ozM+pPT>v^-qttwURCfBPo>L>S}>t+mta3 zR@> z(?Zexe4x{=l&{u*loZZ7YB7q?v^QUaFv%JTCeW8%^?U#*0Nm9+l1lT*H#8YK!8*}3 zniE>6w%Nn1$PMr*K+{aOZy)eR;3RLR zbMhS#+QHZif@<%KJ@1rN)0%0P>V|XjPwEfk7qMj5BgJKYH+%#?NT;5giz#G)q|Hrd zTn^~%k}6$g>o0EeyGFEt1)npKV!^t3Q;98p)zrTEQfZS8&XWDLm``x1@;@Z4DYgZ{ zmX?(FEwi@5N3Lf^?!)qU1dm;NZK!hoD3gzaJ?D zb!FcI=6 z<+Mi#vQ4`@;{dmutMspsZXrTmcK< zQt&n$Na8X0n5vy1fDb9IbUF52jxFRHlCzNvs{%h;cgQjVf!t{^X0rebAu%%Y+tm_s8CJ^jm#?1k@CBFumOyeCKB~~i$C$( z)3N}e#DWb7<}oI@eHq$qgE#jyj24G?)BGCFq$Lo54W;;};H~TAp<{ETtYaeOG5Oh1 z$q)Sy({^uk*7ouMa*er{ww3O4s%NLT!|h&$;4BmuEywc>C#`l)S^S8#b01t^@%fj6m28i(TjY1NUC&!Xz1~Hh>6|KiaS+rhkSe69`bkt z<+Se#FVQr<4`CK?%13QJ)9+&?sst%&jL9M{R9?qGJ zu6aRVLhpPs6^7r)PmBJiwqQM;d?s%K<14VjaffHI0EkfgDO9wLAnMfm=xq4c3M@LQ zFw&mfc8|Uf&dYmmaGgiiYeS}?DFBXN3^dg9M*~S3 zK!i#5Ndr|kxQi$i-*gUhGYhEt>giUpS_#HZOuYW=SA)wbb|b)_5^gdzEF9mLN;|3` zt(sxQ`no8wbE3)(8!TPwi}Mdi&f;PWOiV`+o8rKflb%zCLE? z%$&gRNGrnAqZzw_FLZ3K(VlN%0qhBS>U>RRt1Nl7#hf^r79OQGShYbq{mTOMP{h_Z z@d}_}T?%csp1vfAO zCcNhLN)y(Kjqh77+adNHo`CXHNS$^aXp`8Vf0C4$B=a zK|P(01=F1OgNdRL8t+nYI%4S?y^hrTM_RE+lauqg=$v1DX*qW)WkyWo%n2M)SO2-; zTHvx##M-cy9lk^BVbAg9zWUt{i#~mqgyp6eQT8pUO)eE(NuwCFf^`@U_j{V2PIBz) z)kVhj)+AQWz)6Hl;*=g@tr(1n3~NU|7NE3{P-V7`kbd8r#fqJc)F_P&qfH_<@Nf4X z7=hFF7|$!srv7YUN{3Ww>bqh=mEve&q&lzjgl0z+g`K59U52dSU z^CHwP$}Ai$P4fQG3f;2*@n*x7V>v+w4|$+`CK^FO{DFZV5wV|oM-O$OCSs=}vADe7 zqC1zO-`vd0oHDII`KPd=$uB3_F0djYA$OX9rLZiC^P@(5l6{Hl)QI~>94dK#w1PlH zUi2k(F`_l6EoNdeRI9ZaRs!!fldL&wM!C2ML&CHGGG~K`1~V^5-sY3dO?q3gIElCk&V;O-(Cky2>I(spaKp_ z_jdjR{Tg`TV(ak_XZ#um0+?T8dhq_=N&oewm0jPtpK9LNvmpn0$UhchrgQ#F@aLF| z)lAnGVG-!4!Jk=cRYS9I>w&odYUC}+PT zk02SL1ENj7U$`GsdBhWy>Hnrk{9(PjWxry`RTg=r+c8}CnzyY8w!DQxdGD3#XNdaoFOFbM%Q&u%|+C=dGR)3U6#6p6Wr=1oflDrI!8 zqk=V}xmxW5stDJk>K0Xci~eHB0C#%rysU!V4H=LxK8f0Q=v*T8Ls7-!_M`EE$!OhJ!(C*wd2ynA~5Q zy6{n{BJe8Q^pYNX)1&N?A%yCOoq=f#5+(r?rm6b40hJ)exE{CZ!S_@Hg=oa)`@lc4 zK~>u;dEdQEn5>UtdiBBle=+5d9M7$rSTZ*l2BnNJv}%Zn{SmuX_BEoIr$7E<@-gpU~AtOgrnCwd>HQKD?#2d%)Hd2~;Xc##&X8jYth1 zHmvaksvWNlHPD{ndC-z9c1-q^%V%aRM!Ghwv?I(l zlu{O$*cIS)McH(jg^A_|RSvcLPy9Ukzmxr9OstYU7ZGt=Q8~o6)MZo9x_tqt({WtkRG!eXFDP{{+p50dD zag90GpNu(UmzSrA%-CpaUE}6{iQhizh44nQd+kr3hgowsF8l{KiVnl`V+l7k;+#VY z8v+L97>J)&n&W#Vj=r9QUcwywd`WdSW=29d)-x5`>`;I`YuhiLujBuDQ(D89z6eY9 z>VTJwhs?V))j_7O_D#p^zN+nPO5nG53vLBG7RKoHYf+KB&&>J9QtbZC1?2hNx?~nB z+t%eYx-w4TgSKkhN0nhId|VB_fmnMM4pIHk5Oq5(7YCMVKQ^h`KFq>{(u|j19ngC< zm3uaB#96rI1j%Vnr(cZUY-2Gx=6J)&M(@UDpp2Wt#ihts03+Zp1_uEx{^HDKu^>QOklkvZcsfKbkJd(;ODE{Jml z($B2$QsxwA)Oxinuu55+Ie7AM_YS+u`_n9%1oD1QYT>cZ@x|*5(&oEdeACVEJIG|y z0xi}ia(jZUr*oWRSdU#_=;cgp#(xPQn|{F2V)upuReq6uCqLM3y-^a4WunOf%a$Ny zr$Ct}A2OUB$f&o&tQq%XN~MX>OUGRKt&8e@_X+w@rjtrbY2A%+fX44VhyH-%A?cpx zMl%DPmC=inFZD}#jh83B$(DCgjcq&$4in!CJ)C{QcveOZ!NgckisU}jX? zy&u2u5d^T4!fZ3A>8pVwicAG8bR!SU_Z#3O)cq*h1d!<#8xJ*YCo$7!3Q<-+%bL!h z^FxJ+Y#1tYkQN-t9!_!-k=U9`DNjsk?eE)Qh;5q;bsBQ+jNHr^>$-h;)_KM{ktIa!q=Ay)tag${OXJerNjHnMr*lZJ% znZZGUgWGU7)fc|)G_ANmfzTc9ys=$JAp5PV20x@B_jLxPuosb|(U3P;4dC&NhX;fs zmu(vI6x0}1nsjx>KB>0xlgCW7tXNLh6OX6Ya0x;qTsW%v6w@~rL98#ojdVCdI}d^P z2$V)PFWK+>-Wyy#%leqY;4sFuaF`+wzLdrdg8}KBt}Y)o^5#i?IWHN7QyJWb9ZFav zE`5jLd548TRKnupxIwMA{=hTz4`l@Qbr*;fAU@>vecsSjExi)==|`M74ZZIu8GoY| zKkk5z*!R`cXi5cM_cheSZ+y-2dG8^hVHgCs|5N>Gjn(ao=kN&lguHo1>M#KbPlokH zHTV_a4+_d@Bi14?Lq7&WbaF7nlE61E==4 z)%;H_BqN=Ni0}RlMM9YWHaaeCC-cCY(evIh%t9O0Wa+USd!t9C=PZ-bhPW&WYp6K}#7PRZ_jaaU(}9__5`CD+M!X#!3(rQ8~zj@!$9D2+7d z@9ms=li^CtkZ^_Djf$=t;L;Eg&_E)B$YJwFHQlXX}d#k z%Iusl`5!{EVa99ppoO35!Hd)X&+EO}x~aBw&|kKS&JhS5V;FT_kinUuLer5+01k}P zXewU`U{X-k{Gpq#5ta3+%f0-1|(*5xE)gmsUA}aVXPb z!dJDzTc(G&7^Rc5T8V}NVy(+8r3jsZE8gRL^ZH^w>k6Adwrf!%wT7* zKmWtdT$3s5fm;#x-o5SDuirWiJV<=5@ooq&G19}UXaj?VXH6ifcjIX(p+k44p>%yK zP!a=w3-U9K3V`4J|APXUOMP`{Cs%H-!}KZ<@0ig2W_*!dax$~$);~1V-JMzl0^J%y z$sW&A^ek3h4*#xy1E1l2e=DA|UhL}zmaUNeyt7}tb8$wpocq7I9zGlU9ICv3KUwK= zry+*+JiMi3Fjt}RIp)S%i+%?;xE-U}bGkV}w)4zeg8v`kw}JEv4@~RxZCZ~tTreYJ zVIgeA&Q* zx!bghhu89@#^-1n04%kt zcB9Y#A?rV&nhLh}0Te+5qzgy~K?Ovr^e!SGq9D?HQ#yo5htQ=+i-;8IMd`iw4xuBx z6Cm^+S`z9zc<=rF*L!c)(nSu#qppiV|cX6 z_|&gD+D9g5cT*4&KJApd^BIgQc9D@|joqR0-c2bx^lp3dJuh+ZPf}%8Y8VOcD_CD( z8A!4#>x=$>g?RTrI9E3@z>9PPWSaFt$7FH%K0Pt^!{_2h@0`p`M+;zuGDS6P40TK7 zL4GZU}FKsq(xv;H~DFLSW5p=Hq9(-}aD@Q*RDPOIR8d zl-aQic<-05QIUXLla}_wf{zKxvlZgv4p^@`9*>O9`vLFAJG)v1tNeF0?W9%x;D`^5 zH8~S`WObZ{V6t@HYBWOG`B`2@Mo$EhVmQb7>SZti_5(RNGTXBB^fKDd_KQ=?#DIz$ z1(gk~21WLOF6uB>=WDQhkE&O;a?*bsw5UGW-Pd@ALE-eKBF!W~t$1XD2%kVf z!JQ`fYtWHyw&?t9@JgH(1L$C>0y_#&SD;7k4dO$9qtIWqOP^7NtvBl$9Lc}@@RUPc zU|NGXB)>5#7{^b(iY41CX>Bg20JoI|`(ZVX#@ag_;Xgs9zhfsZCpZE9cDF1CZR0>t z&7#j_4fgBMu{Vln*-9!}8bTN7m9JrGPqcYkPH%ZHyM#qp(pQ z(}IfQZ&R$!#q=^o^37lidcM(1&up$oj3Bk~k)f+rTXW!9NIOJefJ*-7{)_NGwx}$d z8|%vEDtv4P@kGt^LDVripWD}`d}zxm^zD?POG)6BW1H>99j7b*4&VN>gi5OGuSeKE zH)jtAfg^^l(sjT8$=m|Z(gcp;wI2Pg>ig-}t)OhL^kGrE0;l8*B#a7Pz)YAn1ESK_J*> z_=53m?|tg6uSgwYmWFG;cNV&2+JOER5iYGl0@7rvhie#5K)H&4)W(>rAbv{4K+rd9 z_hakJq{_Ef$-~mjZU92rp64a0^sPz92Er z^MolN-v}j;>!Qs?r6f~6u&%OcqTI*x&rH;ZwWKmTH*i$g%HP}qw;YchwzRgLmn*w( zwe2%3mr2t0ea;5!Z&*4`kigS+YJM-R*J!^ZFGiPW| z>p$s#dpz%hX&-V=p4|9M-aHpW|5O!o8TkP;(YUt_Dc>*3xuV{@G|GI|Vef#b zq^+zLCF$fx}buH2o4r z*RTB`entC5!q&KLogY-MU3lrZUpj}1>rv(X6rwNRR+0#5e!Hh}M8$2NHpR0?lCJ5> zn?sChi9W+`325^d05mz(>3cur0iEBkBBG#e&~mxBBaP;!+iEtUU9<&4lUG63fGnW+ zD)(b7J;!T9&FiISGe$N{s+ha7wf-$eV(1-U8^@O!{rgssim=exoM#vVyqxk zXH*OpncXqB9cNLUrSDgH>Fe^caESCta9k10HfB$KgK%`8Vn(L?VfxjD>D%MDmK#Y5 zuG_e*vl5|v_wJee_*|tK#(13g$Z&MH6ry^yaqRV$!kaN(VBmQ{!o<;wQAA$LLO)H(g%R8Y4bxD(e(sKrButK}lHvgUB-cy8~$Es=41;XX0o zhR?98#iV}$w&7^jhjfvE#fJ^%T(Y%6YgW2^vD(xlOlT+@c1O-mA>h&CO3E6|mkOwy$2?$PQ6lg3v(}G76cyz( zqLS|guJXLHR!a+jd-H@e5f)X-VlvbrIFi;gXPXR*#nnV0p$i|r(fYO163`-@;X$L; z=xM)3JTNw{nmVMS zVR#dxC1Dmg#U)fqZg%atTB4r?d0b?PX&Q4|(znw>Iou`&$OZVHZDZ9%T?NpX`+Ks5Z#l=%VYiXpd+M>-ZJ&dfMjKCm!U+pkLpO&pK^zNeN3&~Dl@f(Hd&ii7 z#sgg5svn#5g|w-ax`ctwE`%NnQqDIIy|8_uX$6|3L6%!8#3_hgTVe=~2O3fVOtoS; zUl*v}v6G*?;*vwp-CUnH`~|~z|C6a;53tPb@Ns<5@zsQ+VTvl5VR%1xICb1JqYKNK zD~>?xW`il6E3uZsui@+KIyQ2_T)(CkEF)PHfXOsiH2LfJ`2qXFy)9iWmJa#;F5=3M z$pyvFxm#pT>(`P#)2~#v-NPKK0#joO$ZgcnO~=4PjfOO*zSIe3XLLt%A9C;X$1Ugo zSNhtx#tEX7G!YO28U5`&F+_O<8ND;Ut1wMk1n@5@>ixqbr>yXp^(m18Kpnc_HK7Vj zcF65iAo;*!qOe#e5F#%C>l88;mmE4hH5H;AiNyddowzq2hu~*d{W0|ISt<&FT%+>~ zEAQ;1!7yX-B`$Rkj%Dd*bOFY=J>m$nmsCEABwx$ddC~DEjX3TWMA!=cv%sGSWpZPH zesPdRb;|>pd8B@h>GyAgZPs}!&Z%yGRY01fg}u$QN3Ywedv;#x#2j`_=zZ9Gq^dVQ zgG~M`x8|`oB+lU1^?}e)^tH}U=j;?GFAsaW8P~Opf?d4(S%4aLQ^$z-2^I=)5H4b+;CqX8H_zJy8*L0q<00K zvep+ziIy}~T)Nm!9_`RutL309Ng>d|?c%C`>k6<5-uiLcm_w7r)!Rk0`JScE8!J(O zBO<4J=nsfW)v^8$s?+~J_$!p2RiwFd{V$KzJBj9|hy?TANhHAm|_%4DI>Kok20NCS-*mtb5FgGZPPpspNT!jwJX+^!o(V#>iw=Q@!cy z?V_=zeOsW9sj3fkd;-0qRnRX``%)M^yvx5bv^5NHTtLF9tSid2`Ny4|PczF>gT?;4 z+4_|{v%}xYwh`Rvb`m5O8WHj8({Jz_2S7;<{Uno647nFFT`5dTFKh?wVWyAk{>SZQb zvh&pkqOTDsKmf{}w)sMsIVJ~4d8jX(QP(TPDdMy8dAjb(NqUCrc5jL?sD8nNBX>z4 z1v4W0kBq*LWf#NeH1J4}VLp^MY&Tdh0}xaNHmLIZmHv1(%zGv_N(VfBfkUmLq&PUK zsy5sCQ7-xglJ57EPZ;mnBr6x<{=0s=RuN_p>{}>#!eNCh$3^+QEtzky>#9FAq8AUI z^xFypOeNxjsYjQYiY(zhKlj`hE zbRGr2@N?XeHmu#C>GIFKT;eVvo0Tlz6Fi^?$S^a$nlWYo0V?Bff|L~pkw^rTXZ!N~63 zvA5^8vdNW8*-mL({K401v5PixG$m1)tc7-;0s^IgKJ7+~A#w@Lb}M7}<3x8a^zGIU zfrw;-h;M*si}dr?I0-nmUH;rV0RQeSI9JYUK1)P|rw;<;#{j*W^(QDH%A96mA+MUH zq!m3;jhX1jmL}VN4&;)6(Bi&9~;TDl7(PSB49g_ zOR(pH7uaz$Hw#0;xf|5d_#VbbLR(3hL2|KQTz@~h*dDPuKk#HQdF(w*8<) z-X+SN=w?gsD`m05Aep71OUn1;!^*5t{!Nj4V{CeAmDVDx?8Dy~;Mx2M=P_-$SNm{u zbEWKdjKhKi`Hzk&mR3M=UR8s#!Lyu5x~ad=@46STcc6b?tCBG=1a$i6Z30x4y1CTs zoZdyDx$KF`UD=m!tY}!X%*ZGi0=CURZ*KC5bO}CrLP?rVrEJAm}mY$FA+wYJGSyn^p8nxNR_L~g*IIaLl3qL25GI`V<6`%gmWkG?R`1PkT z7D|DfsnUJdc;S<~nMcr1LcZ$>081^N{%=<#)PWsr!U;G;@VSN%;O2X_o?=IFgjw0z zw{59U08){!S6VfiLs@`sy8U2Su*ZwIYA!`3Aw}iO=5Rk@F&6a z@)bZvNf=8>x92;Az11kJPvMcrG{h&?r*^lwPqMB#ro#^Q0*@zfLaG?M>fgIkWjN%7R*;QH2 zk_9_qIP6gu5>IOH{F$3HQB)E*w;XJ(3}0PdnSd_=n};0A&1{!EV+LV;V>6 z6tl`-vCs1K8I{w;*B6}3{T;;bllizhq0c>oW&LkOtf#Uyzy_2t0egg5lE04st79B8 z6y>Uec!1`j1`_Z79r3Y9O^ZBrxt%k1jT=|#AsL7{L(-bJ<-{Kurh7Xw@4S9IlkMKj zvFJwWr&d{W=fC1(){7-!fVMMw#RMlaU9pq||L#I;l&sW=S33NdW@$ zSR8=Z--(mrtsJt(PexbW6DIdH#+%{AB)nNQP0TgCetD5dq^^#D7GLSjqXARCL_CF; zzZsMA{2k15^k27zm=!EkONVHcbyYK_3RLH+zGM)$zkDVb5SbgvL6(sf;g65af^!%9 zNuAOooVwEs^CHbE+r1`RahLs{S5mu>oeJ%V)O-~~o2fjfP4l5?M+w6SBQKomT1FZf zCx`X^yltB~9F&<q1!&U4Yd`H61V49k+CIE@!ey6=Xv&UzH0UwaxtbV z6$CanZXKg{y~8W%pMyZsv}_Sb+8c66eLLNe;6rsj72OKmUHDRC0m!Uv?w`}IL)$x0 zh3&`mT1!JhhN4HqxrRBZt_%>Fd*dw*+^PFa&=Gnq1nojxjswj8d5!rj*iv1rM3MoK z{8?f)J&X?jsfclZ?InqL}cV5S^A3Y z>1W-NsoZ;Y!?LonkByewMXX9Gc_2zIypSel7oTO!-lSrZ%l-Sa^i+Yx^5%bE#r1co z^HSFw*YV5B)_F3x88*}yV(mwIlia^gcO-r$hu%gNcS=MJTBKo+!%Od?e0NjWEdt-~ zOp`7bz!B#G0a#cYE9USEmg2aRDpFa-%<3UDQPBm`$>nz=@Kf{bK4O98APDr~!*~7Y z=5mS`HuQ~9iG5}>S*Oz6>&$>$<#$?%b)`jZpISuP~P2`9N;3vNz`h${8&} zfzjTJMKGsT;Ef&3;<5MPiF9}BAmhFKWFp$VZfKT~BmB+CU@6h_UuvSu zHRO|iyb$WwXtb)hW5=}5apka?o{YCCKaW+YEW}r97T=C2{Ris1&;M2HWQ% zMh%^04_UsT<}bb(;%J<*>b(C`df^tZ8mc z&MrtEt~|Uv_m|#99X-|QX=ze`YyX8IVP$K7F$r}Z6n`;aZ4d^M9(y(ed@|iBm}cDb zD4a$Jfkh$0(<`d2;M(qi7V;bcmBa}-xe~m%y021qe&SvS6;FasJ%UeQ(RC=C?{dQV zN$5403lC!P@87>~rg@Wl{LLLUr2?Zk(EDcIBEpQKp-!{(xfEz+m;SmFbwwua+FpcS zodOLycy?Plo|+|QES6usXx!MTIWnvt1M{IX*9_Czq+mYy#!`gtCfnFt?PKm{E3RCs z+hWwr7qjmSP{pUB$G~f2n1HouH=}R92Cvzrp3MzhjFpQl$H<&ku~_kqUn-`oO{0nS z?;PyJ7q5ovU5F+fBbirtNwc|YxLSx>l0EO7!O?;bxy8RjslAfC99b8URc_`Zud&>T zWTb)lwjVLPR8S#ej>yEV+)pbmab{USE2abn1k8t_nU7A~Jn<5f#*LZgp*X3GK`3dO z<(jM3L~7P#PcJ}~Bf0JaRgnivJ7Ug^fsYEy>~g}CUu!`X_$?;}C)lkR;O%ml=@lBOd;vaj zVnjRt2{$T&fv2iYD6FT9y(Fp`>ai}08VG$m83w-d%A^TV3y943Q#Y~Wxc%NSH$9(Q z60pR6UYMqr6<+Xb2ef1#XNGI!ugypxdAUT9Ag1hNRD>sBfxR;|B7YF!@)1U?BO`G2 ztr{7k(jGI#({OfYkW6gQ-nLqp?Z1?;$ zdRbcXGQ2Xo$cX-qgWN;!pxe=t0Hc03wM3PX26=EN2OoLC|1o%Ya z?P&_|YIkfc3A{tfSDXx%nxTETWdO0`hZ{vV@{kNHpi^|#s;oVzU#p^DN!=eN9ur$D%XtK;d6)!46#H%08o1PY|shlNE;$Ius8I^+FF8n5Ir z=@)1P4G!e6N-i!JZ*J!CN6|7bOP~L;kJyhmM0f9syGa{f*6n^XY*in&&_3T&C$E0p zYK66ltpEx?oU_LwLug@gPYWVl?YCP=nZm)N(XF6^&~oqG45VVJtPH*Dsf52{ zA?#C+G2X~4i#_P+4ig?90it0`q^Dv>U2GrDl=c;=^Np&z>o6Ek3tM2r?6Q7Brv+|M z@3{Xf{FnaLif8*>ll5152tkHPDJDc+6yR~Xs6Fc=rO*f*D7y<5mM5Dj1O;i_=Hjtk zzHa^ct+gJO=W}AxJs@4^SqkO-%5Eyj1dI7a2xnqAniZI*uBuRRt>!ldPM*6+l3Y|c zw_{lq4Hxn{0x_)<;-r` zgljE=X$_KRuNlOUFE9T{#?+x-zDw>K=DOOlfCQE}lr)_2yj$}G#!XPtQU5I9bReE7 zROTxA;E2|Pg1RXw4FwT-_&z!K3hGkHlH2SmwPv~@%x&5&`;UMFKxi#4-=!_P()ahNn`LFGsEDJ- zf4g?Kc0OxWvRFT%adK7cNsjY6M}Dhm4mEBP?oLcnTsFfz+q$N48nE=d!yv-lJ!FW> zy@!{5kknKwZS5KHt-&uxEDFgVwS(=4&+cQ%47oIF81OZszSE2Q#XC|4z&QCEivtH? zfxZ-w{((9gs8|BO=~E_^{d>~Ui(-wg&x%1?%CSJF)1Sd2bX$EChhT9oU&w2?n;s`R ziF`>iXgy;H>|oy{)Y3Xi+UjQf+dQEIv@s$;fT$_%4t6QXE2&sFTRESI3U>>!NO{MM zxA8?=1MRs>+@c@0Q(_oNYsuZVRT2v~0A&v&yt>Vm)65?wBOG~sy!Sp9Vi~sbCj1cr z-2DCgEGO`KrUOHxXcJ9q+p)55+qg@bJH^n2Z)*_z!u0&}%Wi>R8<^Cp#tkh=J{Res z&N|VDTe#rp>&gKR)I8x~q?hEaMN&^K1g^O)h8OL75#sQQrN&7G2O5LkIsOzIsx+9J zKc;Qmm={@2jlU+-COwKT_^+|izpHQLoc~=6DaEnP-fN4G3I%_}b38%Q$au-i9KQMb ze30rw{1ADt8)$taeZR!$`7d$@caHXU?GuCmVyo~AlHBVs(VF~vLv_8oy7}ZKo}-nF zk1)L`U8@qXeE*5>);Z20xun6Wc3zq!<~KUd_c54Pnmak7)~%Ae?G=4ETR>`E!n5JR z6|iKT3yB4TwGoj+d-dK0;_$5-zKALPx_L&~ATT_5wFAVYg`J(c?DW)A5XF->7<}ib z^Zl;;A}7b5Xs6OHmzp{dMfKjsIsS_UF-G52gZhhpZ$tOjq?09M)RErqXzH`BD|9N8 z$xhs=?i}sb-rSE{Q0Rr@>s(hS4bnl~wV-2`!8_{quiW!bTREp%hYbOXRDj-J+GFrx zTCoTZ8~iITPg?MlMx9^dhJgF<#sPLV6aIV!6Foam>#rc@_-3kp=7eB#8ENLFhQaLO zi@^GxJAjwk(=uYMAeQCc_GoOS*pYiHb4AvSZp}Cu!HmLwWdzs*?lS2RA@jcDdI-nP z1i-X`0i2vp8?kA1@9XpoQfJ=RK^oQeLLIMtU9c4Q+Mw_wRv(u$CWgaKj?0de%PuY4 z^OKY;$F(v3>odFa$u(65lFOqOh2=}ebv^!TE$MuSiVV-a()B!&%MK7L!cDp>ymB~*I&zGI_E?TfSsHWlU>qnkaoDI)gFB~?|AHoPq-t34f8}`u7 zmKKu=pmsW9q8hR`8>m~1Ml2zMUP?!0i}pKAu+FRRb~UDkX$bQnAA7GQqe8gqtSI%G zFIgR4NTcx8o8y7gnx*CDdl!xS00hfm;u1tbK@2~jHoR?Hg#J`5>daK6w|10q@~c+^ zHGf9txcY6Ma3CTgEz#p9!+mM?;0~He8iQ%z)7*dLdk`|I_(uM=S~e5W{INP?MtCwa z=$#B;$!@8kUd=wTY*3%s?up>^=zQSQQzp@)1@tuS8ni-V-#*HFBbMOibC4=?rQEVU z0AYw?ue3JWw7+guwM>ZR##y99j9C_CgPsE+1`vqYYF^z|N>n?BZ%ay2HBX3fSm8f& ziq`_GKeKu?5hxe+oww??=D$Mc@XtHie?O?3XH)-+Wj)z@$v;n@Y+U*e%~!fTi!y($ zmJmQfrz5YX;U3}y5)peJm+qazlpW;7tR;15Y>=iIXa^I$)+eNkYtf;Hy>f*ARn?}N6l_|{}_P+IaE)3T8 z=eCjm6^)PHNoj4l-r^%trkNzTxK;8C6l`YW(kYvBmk}hov*lZ~yJKQ6pu_tF6lJQG z?A3OhOnC9_w_(-)3a&lm3vqYEp2ERu-X@)tMTvXy3o8>Ud2-;sWr1rn0@d{NX$EFuV;Vv z+Hzyl5lKIuyCT}XzaUZOy%YD*&C@VZ)cSsRWLhW?Ojk7%*>G@#vF^@R;S7W3K3=Hs zqBkOL@9}$v9(6O)1Tv>ldr17hk>t!-7Uv%u$Mr%p0*Ho9kYgiSwr=*{oVcw*7aWFg z*U4U|{O5z0^QCzAyMg|3asA)(e)vFU3v|%*@yhvM!K6`Oy0Jrq1&8P zIxBC#ve4jaG8MJK-)#9qkA>s^iWOw|$?hx?+x1|U_SPE(SDXt=1w}#{(dGvhJsBuf^jlAUVY`b0S+!k?R4+rkaQN}khE6}OGZ+s!h_2Y zo4?vav=%~u55*z`_vt1%PbHddnX{qv{k-=v2EUKJkq_%CY>9v-Ur%k8L6AG%w*O%( zZoe*)Pafz|hh2aZ;kAQ@0gwJEtC2*Lav{t5CYN_Y2B5r}l_Fw73 z+OvmtSbn;FV8Jo+OOu$ zx-y(LGMwhFrvJuQ=M~t}WxvstasqE&XCZgZ4epgxfV)0kt`A)x$!b7T-64m6^DmIE zVg3mX2Ld|ay;F2x<-}a7n9iZ4Vy0!_s*^-O@J~sN$6AMN~52zyR+o@$@ES zIVMVE;Jp2jDHZd5mA!C(4mLawhOS2JE^}Q~Fqc8!pPTa5o5wmZ4D9Zajz;IWs7j)t zN1{1TrN&Am_xg)RpJPp|-?ejvSMYREf+Zxe|AL%zLSy!%V4$ZWP*PsSPy~(Ikq=eW zBU>wnA^F5Wh59dPNbj>>Ii;7A#-_Wq4kz|A0UN0c_^(@!^nHU|Y?+F#8$rYTI_{h9 zCLMdH2hL~jI$vYypKluoIdlkD&72dfnp|eEBfh8F`OH2wVuSwB5teb$V-H($%opqrc6&4bNwu*f z)GdMGDG?QWHKO+gOu+6>IkM*$Yq<47XO>n1tk3M|jlqv0OF*%4(<+uR$_|ynAYZAU z*(0g4BTAJZ8mrg3<@)pM^4hw=?>e!qAN@zAV58Eboo?c&*&fDE)n_R$7>A{g1-qkm z6f7;->tU)dwWq93PENF1mOc+kI!kvW2nx{)2yu;92=H_ofS50lt0AXB$37*kTekq( zG9?+v?3N1EPN}+^!+TfDpr2VxxN84l;WQsp2&3=2^Jt4dzX;<$%ulOs{w<9jh+xh3&41ys^rRxs9Z>ZHcOaX-o?>!%Vn|ivewMN`)g&Q)UYMu1 zv@l<&Bui7Pj2ns~^6w}i#EWY^4h%^y3NQw%xgbRz(K8`M`T_+WmBfIh{i(g4r9V_0fEB#> zj0JGq#VtUfqndj4+1~h@v2p*YCy#;1<-Tj-K`Jyzu@-buY+UxUulP&bzRhsGK8Grg zpVS@!-RvmEcTF+ThBq5ik$6lqg@(V6`@2yOrZ&>*C6f(5wx`yv)AT{+do`)d=}sEuQn}U>qhr7v@y&^{r1SM=K4f3&&-LJtwSA`f%ZN zFA|Frte2z~0}P~gIw?(l_DWF1a!B=^izaMBi!GWTXtV=d3LaeLAT+ttn7;ftRfw*< zP?HjXlQwB#i@xI08oCYXeI@;JGl(AsQx_CD66z~p1{~TPsu&5|cK!!EYgZb~g0?v} zdzbeZ+IwE~l|QkZuWfq9Kwl$DfoE@3ek2;Q7FE2On+Bn zlKd6Mgn4{kZP$I7WgLvN!5ECUe<4=~a#lF&FA^^FV(@NKG~Z8_E0gif8!wKeCmWW& zAHwJ=NFsIl;oX)e_H!Q(QeRy_WNV^1;Y)gF%`&v+`XRk5>(z_A-U{&MvLfPd2UJ1C z*M9=7t7v{Ra`H!aPT1k4= zJp|H*fGqa{8JSs%;VpYB%eya(j4Y_SV!$A3TdJ-(o&_vKYwm95&m^v<{P6P$MQRrV z&{Sdn@NcW3db=2b5W%%!>=zk#pa_~!45m9mJqY|GA=2`l5KJuDTPwCW-_BvW zO&j!-w*ANLx2lk~eQdFow9mfI!L;v|gA$6s-j1tfqK;_$^&)BHf&zVa}Ujm-Q;)EiXeGZHu8p@}qG5Iafg_ZdWi)$4Ke7z5*! zjWE+wLh{c^HP>e5r=4>&@eh>@G$@DP+&{6#T2Z>FjaImLd>E9l@(Eqw_}t-yRiKfC z2{YT^Ij6Ga278H2_qv7QZ#CE3Yw|21a|b7Dbgn)EJeChq4#G((ZF$4+Kqb_XEm5Qo z@lXvMrc5%R`Ho(nl72mTWIFcN9l=E!?uPH{cJ^1eY4097%(`IePqUNugzD;@3F@=i z41d?jV(P~@ehbE>z{}R2P@!Yye zRov*8huw1lYK?gH9MIQyh-Og2xFi-2{Db(oj#mMam3Ow;22xsER16(1hq;YhbTHQF zw8-?AOEXvYbf~{bm!JO~E-0~T8@29QpBrl1JH;|sgeLnaQ6CS^3LvUkk(E4#Y^e(eR0T5+2q5EGvmj8mfS#B@t;CG%t86s%U-REM`?qyp1DaMlz=o+;;&Pghp zTWEEpl*W7F(RCu+qusRb@2o~nD%*Sadr8LVpsSO8JOR_-`}%S1&Nx`=r3E092pEB~ z5?%hxQJn4lzL8oa1;6Y3UAsl}la<4wAz9f8Dv9PlAAX1!MfZCS|K4(64%(X@qHZdS zezay|fhs%8bmxXj8FVc#cMgKSj;qkmCU0=`K27#CN>P@`^I)O_#^>=^we5 zoB~0y`!c2|fzO(gEJOkzJ!y$^B$`tU&G|CiIDy5AKs-;}@_{li0wKx4&WM27yv%2q zWhPR(Haa#5qqLh-c%;9h8o5Yu^+V|=l*cIxuhy^B!tZqQF_|9jt~X7{cYg6_7$@12 z@D{GN_u-ib%srp;S312N^V~vUk@ql5)YjKuE_%ZjQ2Ll3bp|Y^FGW=zM0`G0iL}t= z{if{mIp@5}mcaFo4 zFYmT`NZT?`y*+fa&S{tQRn{1P@^-DRa>rKx!OU*%P@6f@@L2c zL?W;pNDsMq`yk8u>#B(!!%qPok4I67>1F(?#ViH?n`i1O0$jX<7ED!bZ}SHeSqd-a z?<>EU-f1jKJLR`ziV;fDvlFOFxM6$}4;Ii#XL1VO;`ex9=_>B7XhmWZzH;poF`FY` zfWC*TsY$8%Mt*0<-8vi7i7zN;<*~Zl=1d9hyt3(AUVadjXfUfJ{cr|ZsJD{)-cC^X zkjzAF#@$djthn$0_g=vTQ31y}D{YSMqOdH3D9LxfRDwfh?Bn9s8>u;zlEQ11;(ym^ ztspBz8K)$J`6T$E(OrU^Gon+3ZyS@iff3{hx0PTdq=icEp7wMo_$oLpG`Ex* zv<%|4gYNv5%+H#CV$IZgSJB9b;W9b=_bUY@3*P=bxvp>Y;KjgLG4Mxah9nH}m&1&; zN~?{FmDq$YqnBZY(1ZHn@6L&p1s$c zX8nfV1zSG^MSj#4J&bqWvJHO9A{9JSz>k*d_GW(<_x?;AWD7PQ+KVtxQuf+iE+1kf zvU#^m3kP_g&#B0T)?qZs{%eD;TNQvN%{eTWg8#%IoP2FlJK9WZuAW;30hx*{n(%dDNkTcI`HD|UUNf>7KKtJ%+Vb>dc%3m3gd z);r<;;dvte#nR*fdPscfC6_poGKG;+@C%jt3PIiE0|pNda9~WfqjaM4R@OQv2`M{I z#V^SQ-LUr|AH3i-{_L1MqAdM7~ zymNlJY98-o|B$|TxJ24jj7oig+kLke)%8@@jw|P#SNl9jn&;qX)UKu6<+peAU1R3w zo5CLhnw?I{o+OP`uCVb*XWqY0U~^jWRX&3WyQo#RMpUQMT+OOC54@X$Xjm=wLM1T1QAoCt_5js>Sa zN{BxiC5m8{Auz9pnWuTzlgV2E8?=}(1P$;0;y1=&P*-(Pl1ptRr!l(udc1=FW)oM( z18#`M3>V+=TQwi*2Q|@30nfhqRhk9~2ji&mMXL}E`v z^+4}sFFKy{?Iix2Hqg=mZ;L!$VDK-1F%ou$)d-CQm7r*ift4ix1u;I|i_sh7QA#{! zJ)=rr=SChpV%gp(;X2v6FgLKoty9gMq^iydG zqtB<-mgM^7flDHyF`ATaZ(t$J>QSqNbI2dX!`jkAQZnb$YX+Xd6CV0$aPQqOoXrVy zn?HVB5{>m_W7>bJ2UX=D8>uJu-sh7N>_}I)|M&tV1&V_YnhzYroTWsiNEo+HHgA-A z#qVSSaLpLZV2&zgoSsE-x$e*UE5%rDYQ8NPWrWu>A(+9y6qSX?y?4LL+c23bPDv2k z!2+ZZTx|JVww>pD+ydZ$L7~q?nseXwP{5H*wz$H~Rb)+WM!_h^8uhe&_p13{+ItH~ zZ&zH0ZE@_9qy^$#_xmE=Ys`)l2Q@e;;ic%bMgOr4)mQ9(gKpd%Es*OA9pCY%wU-@) zWmn6JBVK=H-OXlx)!Ht*=t#OyIq1vKvk&m9t57dq2Ua+SI-4Hfhn!_9BRikPFX4c6 zLw_w`RhM)P!p}LHs~{BFSD1~%=%*p(vou&OB@HjkVp7fe69u}KqP6^cz7u+ zS-I`Q=ui;6zzApG_8qSi`gPnbtFk3Q^4SCAsJ3LG{)Rcfz5jg&$F)Llws}bX{R-bW?=G<)O@D64Rj+# zE@=cT8T~-U*SL_2BVLoqT`}}>i?KgImI2Jjd(W}aZNpMBCyB|Gb>=>KkP;&weTobQ zi>Gn(#e60Bfe~tm6d~%2aAAfps~prbGGEULAmdOAeuIkK-3`|^uH`e8QFusXP4YM8 zO;5(nlqj&9&mHO(5UtjJYSh$KR}vOTtflp7cu7|WmN5Jbm#c2`#y6I`n zP{)t1jb-KM?1-N=O{B18?8cqT4*xlxF8zmT-<~dKP89%jb<{1pT!!c-9h7K6k}2_7 zfabn`@2@1I?=^EzSb)uriB9SFJWa+ceZj6$K66;hc0kO8=kT+Nx=ZoLSZ2sG_CZt` z4B#MoD>e#FF4zC9lE&V4T$VGUMiIX~K0J_27OiPfijTLLQa)28XW!qJlLwab=uZ2} z+Eg6=Zf7VgigAvd64-X%osQy1ux;*s%y(WUygswQO5n?Yd5U^>Upvdr)O;53WIJPn zqYdPfKo_|Co<71u*D?p)f{X)W+iU1adt2n?y75xJ{?r|cZgaN9uN2U&R~sxj%f~Xn zsgtXA>x4Oi6BP-Lh20^LS(8Ul6NY^L#Q1rs#~!Ne3y$BSQi6Ua!^q_nL!fmQ+wxbG zQRJWg;%+bK&U*EHIBXJU%;;1avU|YWs_fZtnk^e_(cbktC%J4;(Tyg)T?3SPf;e~e zkUdzB(*nAKYJooYID=3<-39s(!2I<6&z$I4MQH}OpKwmDcPG!;iJ#7|kMi&iM#b+! zSyc>X6$WmedUJOD5L6FLF<7hsGN!FRfy2a_houeO!6+5Vyc{=9ive*OJO)8#r*%fn z=ZubjAp;36e4d^;+be`Z54NZBV$X)%YV}vB6=h>%|G^65aMjBz+Yth+ z>0m=DhZ|Sd5v|M|5Rd?jOIkqb1ibZwZj87N!fQCRuUXrt1L|GzZ57h-FOWWTL+_U3 z`OB$x;ql(Q7*dsf%=o)%vr`+9p@||MBs5MXR+Q}F>aM5=RW9A)=#^AYanT#G7_(lV zT7NLaSXo;cW9QI)>tsQM{ntf(3g$w#AR%eKA;ONK-g{%_sy=^eb2Wv-n5-s&xT{M= zSvcNVTA1q=ECVrDop8=^M*a;GdU{PGd5}u-Z1rO02bXZ1dUmuhDiC_bQ^Hz(jBcrX zFFom9*h9O~&h07|zh>!D_$1krQodK5XK!rg8!dp{2ByJ)=VeIsG!sfSKv@-?j8hbp zRUL={Qfedu7K{puZbB%Mv_h@;-Fi9snxhFxq=&T_rsis^18w&D8 zgu9>Tv4eNGTUrf$YjGr8cUz%xM&CXwZzaX9nUAcV26_I+CCVf5qr| z#SV-eebx>Z`krry+0BtSt0Y8$v9uPO9?nUS!e)GZ={zO;!N-dcqy~^XR25#_`_1bg zAxB9lv*X+?(L;RA_hhXxTykfb)PnShPY%az+i_?@Qj3ZI7)JLjy_@f0a7Y%-dBT(T(Lk$DNgnzAD27QU{P;|D824G#iV)xd)M?M%k}qKd7)!%OOnU^dX`I+XXG2c zBanQv3<-#qDG2UQyqq8G3%RsWCj{NvP6(n;KgDPKg1R8*K~&T8KPkV}aCn`_rA;}= zl_?%l0|MQq(69$a*ndshMDyPReTGunx-TPW(T$tQ?$EuYl@LVuw5E(}&{E@HwGRq5 zSUG_r8{#+NB`xILmha=ekXx>ln`_gZ910K%a}1hEdf+`litskA!`p2l-5pdMmP3tf z)qw@y_Q)ijBn1+s85^ygBYA`JM2Pqrc5V0?)@=Ap-2%6|H%>BWf4dUqzl-Z9Gz$-Y+An-%J6hUhX*=mpuI42#?de(Hu57nh*E3A=oR_G{ ze+Z_O5}i5UP(FX1P&=17jKJIZW4F3Cqr#^mcULeo*%*`95p-tl-cL1xl;N#jJ%wdk zMC-znp4q6ea|R;U6W%kjy4bzeaDn>wG70DO{aG8)1xE8+uqD5Y3g?N4T?akePAc+Y zg1C9lSCOY`>k8}ZGh9o;$HRAuoj;|X+*7sLhc4?Rpg7<%`t2WL!vOO5*li5%r`P3k zek{2qPi(M^y5U(9McBI< zNh`&-u2g=^xs~D|Q`uqBoQo6p1Mg9-*6Kuz3*saswMNxh%#Ip(kxkpG-LvlC%J783 z9>_-4S|lJ1WVqC0&Oh?p{*}T;E`ifq_0U6W-@!ZCKo|i%;niqlIm3w?2dy<=hl~QF zCThHZ#sktM!jRsyi#d~7ufb_B`V3r@-CymOJQ~Kj?vxvv!VS0xfG_ARrNG?R@O&!Qp@NoBffk~Qp+?OzY3H0VSU^0Kek0FV) zP^Dq$3L#5Dd33d;8u!Ik`1u!OKd1q`9nqN61SOBJzX@gHa%crr2PcHb!m>Zh0C1MH zGW;W}Q0A2fXpd8`I~yAxif4|V0;DeYRtoQbP!h7+3!lnH0CKzxaHURdr#`2h-P~8@ zwzI~FRtV1NiL+L?DU=oMw-O@lS2W<`Qui<6>q#iSreu+tYqn_e0CO6TDN^X8>Ui6BnbZ(5q2s9T329jrKq`nr*W9f(+ zjQazq>*6D9ZR`hAMsMK+S*>gqQ(z{Ag8xDCPDBFb8mph}UDOR3U#*7_q{`{Avm zouy>`u0Pd^bTGm2y_)0|6oR3l@g=(30kUCS*vbKC&~G>88gWE)KhT^1It{(9ZPVTO zc7$We-^~A|Fi+dQCxo7biA6fUjynype>&r1My{CMYT+r(Khn*dFlUUzS0LbOkGH6~ z@RH(QaxeHK8qsfKRy~|y)Y)lca73-BjA=>eVcm=~Off;HrCck5lbtqT1932MP^Q;F zp$8;`mwdgnmnHh|4Y>pk9H!Emy&udwomvyVDQ3MKh**=5m^pGdXOi)(eHDBpF`roE|Mfm zW$!i{15ShK=R0LTMv`{l&Ma(cSdSSuRlN>b^@u_7BUbZRooir4Te7pKc0yI`GvBAk758-xO|<5**`wc`69ahkI5rzG6pRk&aFW18;8n01?O zS##B|2Yb@0`f-`}7sg*?Q8{^6u^6u`EWhCZ#Yk4Vx&`CLI8qHu)q~<259;H^y z^H6_CZP>lEqN=?yiI2(4idVv$*~N-#Dx!wH4O%eviCsalN0WwIus&+8UR`}pH`8S;I!Kt zm{l^rW$Co~27cVdYv9nEKa0QFmG7pj!JF5eX`-bY^)Ype`S%4z;)wKUV9 zMFv^wT+Pj^OKN2sin}RJWdz7SNjugs@VEeRB%`;uT4%aH4x>e%gu|}vU@^KsXQQU3 z30oUucD$j#`)h*e6#>gIoAf3xY}lK^cQF(-Uh8o|9sy_;{3ww>-k~j7M-)1BiscR? zTz0{Is2^s^&;4@oM}vYA<9=DCc&q+`mw&qPv0!(lN_UXX&lPWjAvfgO6h3li19Fte zU{`kRbz80KY(kaAF9_2o_pWiJN(IC?=lIh>(QJM@-Y&e94)#);@5xGOoP8OH;hWVO z#~9GrZx_kCB)Hn$JMy}-BJC{H1*!!DLbYJ;+{&B7H0VHUSD3jeQy*;7@Z8kzU5fpA z6d1Pf_F0CK`9KbZyZhVl$uBe6JGYoaUJ_AEb03Bp>(@jXb*mz&1j2$L8XOmv+#qFR z>hr3BoggCVfaLAy+-RL2h7iIH$;fr$+L5dB5Rka*1=ekTe#q@{vL(YGyej$r+<=8; z52`C}I+}Z3NN$nHnE_&b7V0T-8*~+nWQVRY3fofAun`6}#^6O8B2oI;X_Ca%pmIK<)4Sh`` zArvml*D+fgnl(^;)lc?r4J+mQSaP``Q!#n{ai#yBDkeS;YG_()m2vWyZ4v0R>kKL4 zsNK|f$34mDq}Hm!2EPXi*cFTB-NK#!q+H_`__#V7wKj}Ai!rvVrdD*!=frIE3d@ST zt~sO|>GQW9R$5tY8yFFzukl&~9#SRWQ$t12tPETyl)*95(u zW=Hu8a1qcTy#)&BXa$G|7&ldBbpM{yUn#V+I<}hY#c>6{v`nu`ky&1joL~5;f5^W# zMK@y9uJ6}dfF?-@!?o)Hx9kZV#GB;bwc!t_fGK$Hm0I+C&T4_h( z3c=4Z{z|jU^ML|e$XKeU?YdFJ^Q661enNg?(^#wDj66th^t^YpoOHKx zc4_#gwB8Ho>~{<2#>}E*1}|riHa5yw@X;ZW`p0w}Nk`LLL?zmZD% z0^)#4jps_f){m_Mv`{)`Y@Ssjduo}ns=mA*Iq5=NpyhS!?X9L%{CTOP3+E!_hbBSG>@8`zQ%N9wnJNt%=7 zbQQYt>OyjF_?@0d*PCZ=potCPl6RZ?Xi&j3P`Y^A*3pd^_dxNeWc7f%Rs&XsuBDzq z#)4ha&S2jksCb#?bSPpsrh?|s*bK-Dw!bSTY&g*Db7UnlcQhh{y|Uk~w>d6$;Tk|m zq>%j$n$8$#_@HDB-2e-lowM45>)K<6ZaxO^JNsR?G%FdL3Rj5jkb6$IM6wv}-+yA? zo#?#k9hirPWD?j-baJp>!hYr12`*qCyT?2E*!!2?=Bdm&GC(4b zj%!I*#Fw`|;P@1=QLX0j;+8$<*^yaM^BOPs{{BSt@%ovZ^GTDPZ|0HV4zvI1auN2l zsPFX`p0Go3ssVyX(E@)qsp?@ea6`>Zl;N{o;X>{7&T#W;iPZEJt}dVaWu93>jpwNh zZqNFGNRnl#@6?6166N#tqtPaUy@ql5G-YPEQLAD>mJ3#;ll!0S@Z1`Z*Dim1GOBP` z>iW~_RJF2OwQ@vtc>{$gNhfDm6cQ9MAaoNg%IAkW34~>@2Q5iw7N|1#2jsM;qy>;> zC`Y#fOz4D+*GrH)=R5ES*kW#}FOJY=)U>_mhiNYVrQQfHk`X#r;=Ku6@p6`sk{x|`=dQ&Ne(I2=Cg8cPdT;h{7-sg7B}=RE1) zplG)`YckAb>MW4)yj#G8ZuUmG;aIr#FkD))RMgeWA7-L!SmC?^^6OvaS?e71kssLdFE51dtP1w1Re)m zbs)A!ta0Bj6xdb5YrHIw+eRf$D>h7!f=)AM4i=}h-y)yZ_aF_#T&XA0M88~Is;+|L zNr$XE`Ak@u-~IjJ4uLx+CXb@}u1!(OLn-RrhjhkITN|3j3Jt*>>h!DE%(maum0ug! zF4T|OXQ`pk6Yyt~FABc@c>u%|E{uGB8Oiz7hbbVg^Uw9F#6X%=&&tbbmq0!YAy} zM#xdkxAV!x1~rX@i6Q_D@GW>sw61-UYZ?U0@Yc9hY>i))v~N6&@*Dj|)TggK(U}1o zTJwKnkQaDl%-JHi?AU=q<2YPmW|J+taYmUrmd|WEW5Z&w(@*eg_5!7_SNhv%IP_o7 ziNh!UvQ>+^EWs7Ge&r+`97Q%{NB>iFAXOiDrrxRW;;K9h<<{A-5jcLv!qS*aLL|9Q zIvzN6ia4xZDV|+F#;2!WmWNJ&)3(PlGlq%d4~6(rUKE@`>|^W4ihlVJX&fPWU9n6j z(0Q4_sG^3`e~5mmvYdUw3oWc{YTB(_AksTOy5PtJ?u9;Tr4pzHd1)v2WQrNQ-}m!~#Eh^s(~+Ulh)xApoNI_cPY|&?}osB5uo4 z(*@u;?9NaL0zyWZM9wE^Kgt9>SAQQ_yajH_4un8MB*pC{v2sRc4Y(ET8rq3>ZWLYM zafZ$ktODtE_+9@z!UM>>)!_fVw{Z8fS26-O-H4+*Ve7}dKIf`D7N=*0 zjXF7v12pG{k8cg6c}nt+8h3%BcCWp;3XOdUl}fOJ-o!iqR=?WjMi=FM0yiG3dg7xY z*98Tb1Af-BcdfdhqB%DG14FKKzobfF=V}gC=L^P~U5rcP$Gk8k8D{+4Q$*kvF6Qk> zxD;1ov+AXH**qo(dpkQ84pTHcyH0HaE+?9+4d;&jxUiyG89je$5nJY04)FoBD;T+` zf&inPtV}WUGkoHQ-2>EqeegHGIyw|Qv~XqWLo00{bA!JPr-m;Q=X%{{_SDQWLvjUV)@8$J1J}2wP4K>Fu>w zm2ielTIKW0(HDn7M1k(`LRtoG!7$PKd6oQ{tw_nEMTyx`T{+36H_@}K#$o&CsO!U3 zCpT(m7BgIT)X*&roCPleHXitI{*c-1j>AGHZG!;fh-EwRFDnXMLSEk4IhCPdsr$#} zcoK*2^7FLVnc>2+66w2Bn7R>dP8XQ9GTE3AJ}@mv)|c5REZWTb4#bF9eQ6i7jbRCp z(MT?(P&+^3W(?SQCOJQwX=4{@w~ByDF2yNmde7jwECHdG zX|Bc=#Y>%4_m$arWdvG;tfiAowBGrcgzJtd8h3SsRecZt;r8@tY#-406t2}iZI@zB zuqtA}Q6)MK>9)iT($Ly@T8Z_<#fo4=(pACvWYsQFigYpQf!B)*)4dA* z|0)<+#+B_}IGOENXk=12zRB!QdT-+<+z=4iX6e;L+DcD;;Wv)1uh(oSd+)1pxf-pv zWoTZ|);Ll)IHFFNt;G&7nGCr!c;A_HMTZ=mXtEG52s9=X*8jtuAH>UiFkiWOyT1}# zaFvRsXoBJ{ifGDR6xo-3Ula5(RY`JpP}!n0jRYUtaC$S)4aamagbaK$wT{PZkA-5) zaf@uOXiVT+fzwl|V!z3VH2r-^W}kx#aQDu1OYmN?pF&xFW#QfpQM%-PC^Js@P?D8& zc3=3sJrTj3kjaNqGS?-TFyN}snpG3-c1Okh_r(%ZJN>}E4wV4n+zZIZ9#s|F5ANW+ zbz%A+7Vz7ZlGKK9G%Gt$? zC5`!BWft8vgYn*sJ1q75Cg?O0XnDzGuX6f_Xe^ia1~KjIHb$0+(Vc$syntm|&31|0 zz+wH@;JG_z{A3MP2Bj1;4(hpd)Np7ye%O7P@$g6G>^DowCbVDR>mV_K^$R-@%;c-% zA#+@<7=IGIa~b~XWrOpesrN92J^mBVCzMe^W0?n&LAB}oPqt&ir@ngkUQ5&Ir?L#5 zAvzJ6mDhlu%~+Jm{tH?-tgQCbm4xrxWl-1imy-9Eo-F@UM>C^6))ipz;xP{D z(h_xbtmK!g$ymq0CVl{p)|d*{C-X~;>GyKj6@EtW6LgnUB06S3bUCaM8%+ho*JD*o zG)Qqjxjk1^+!-0y=lV_JpaGu;J&*jsH6WW4ypZO$NQTXtu``DKiBpB)Di}%OVXqf- zExJA--)Nt$XQin6@>DI1my>bd*?-SO@N5EFLG~JazX3fF?>>46cL3aGcMqe%H@kFuUNqfzY2~FH5330}e}@_32EU0LrnJ^bYM*@XsgvRifM*9X_z^#-U`m|0?I>k4>cT0~q6Bwx8N zB;zJX3A$KF+52RN8cT6uJa<=zBU??h9KiN%v73VBUq3!e)u!z(jT)1^2eD5s51VB( zsXkwuy$>_pboD){F=+^LGiXqtiq~m5I(d;U!I%BOEpgN$b&5|sH8eZF-$DrEW?1^C zkKR5IRK8kcqIF04db@Fi?^R~VnsH_8J8ezJy=nps4&F3XLiH1k<5$9j7P|PGHp7ht zagM{LDh=Y{Rp|03WaD|fI~_?du`smRL$<5-g-|8>MFT)biDibjW-EYGnbj+~SCD|EDl!Z^-|zP; z_UPorpYay{I;I@Gx?)=_v2VU`UVm}wZ0-hQI7!Kl+1Uk!W~PJR=cg3w-XL=y&qcdV zk?T#bDPLGQ|Ne)}S7;Mh_qmdRYoP85gb|+|rLcU7zT2?M>VN$1xMVdW+p;N3`GWuD zuJtT|ch&d+feX(etvH2G1=iTC)I^V2#e?>SK$`T^<9r~zMVTb6EBeSZw5swV^v zt!J7z}FDlN;KhPC1BCerB=qPS>A|Q2!lf*;}!`p0~)Tv zeJFW0jUVHQO8`J33gsCj-smR5Y1N}(#-yFD@Pd1tj7mRtU`o?dYjP*;mV~Y|EPT@*I9#HMj+IQR9inbWf|QfD1s?{bSX z>e~h-5adFStB+^1ipTX5<9{hlP>BJ8N*AwTq5wpn!k zJQe(E%Sw^#r4RG~^fyM!vdwHiYi-QgN%Lj^*S7_*)kypOd(*tBr31{@p<=~t@QiZh z%*=fo(m&V8jyBu==oY2m`Nz>w-= zLuu25y7j}U$av#U3>iC>$#a>}#c!Tv+I=6%DA#K0MQm7%&w=~sCAWi1)n>rfhrvCc zY+`1^zHC#E&V&ZpWQVGo8C6-~qQFHj#&vqO1$DyUF0lZKxIRF(L@DJ|^Tv?%GHuKP z9!P!9=!F=9(_97O2CL4B(Drb?UwEZ*nH81EPHa~=%ZdvA5?_OrOz$9_+>Qku?$=zp zGD^t#{Br=LJk(r}qC9E!SG6IBti^~bf1$ErQ%&ILrl7>Q38y$ztCW3(|2zF&0?m`* z5tT#Z$>QMR8eKrisXum&Bll( zJRT1U?}rM}HLbRcn}z3MT6E+$-ht|;LKy_lfgv(woBBr6>_+#ke|6_=38NCKXKyWT zOc|x)ndk`CFiBMf?F95mS2EpD&*q_IpZ3`jnH~MU=+8nz`TYB7yu4|bo8`LS`SQLO z`tTR>=ww!oh1#o#Ti#8!u58gA$7HltS|f^^`t>-`TBx#&k22!>rDP*KV|j-38Y`-N z;88HZneIIiRlq8}3%nG!_bKx#6&JyB#HLwth;euuj+;N23Y*+={E85gNtEn4GTq@k zlXwQ0>Az~jYv}FQ(QGWhy_=39#p=9AebAl|PeD%zto#LSYneYonJIxwlQkYcz^GWu zU`+O^bc^b-n;lL(QJr7FrU+MSRV&H`@koMK&{^xp*x0{N>{(}UO^NZJG0wgS$b{W? z>~xS?bwqIE#oa_&R_Dl$)uzB6)lJvghuVb6k1cjC)tiHI1uaK1|1dV3W{s@XeuQH8 zCxpA1^QK-?iJMdubZUS&8UyK*{q|jE;=5X>`G~~lVU@_1aKy{wA9zM3=E`Q}SMGZL z#$!H>v!tN7f~tNA>z18q0fq7Z1lZdC7!)&39#?Z%Q$JcI8s0c|>37X9cf-0wm@LFX z!#V5I``oH4+EE>WfIHPo%Oj^43gDiOfSJ?$HI3D2I!KlegQr=kY41?7dH1J-QP~P1 zkA^YI7AI4&Brh*+uvAB0BmME?>^4HbFzSzj&V^3b)) zj-`gF0>8>rMa30FD-YZJKPoo)V%zn%n(_l&!YL(TZZMt@aogV63KhLs>?rygjULd^ z0m;Ppy$3Dx$pI?b?A??9gp)xwep;0wGlZQRaGf$lFzyu3-=(bs9XHgSekKWv>~jIx zhyY5l=qJCbmQ((Gj3`FssTZEj3LFCGg)^;}f-LIDe?e|)WFoh7G<^0UQm*H0+4hx~p7#|*yCMxt zCS}%!oh`d640ss_9(gEE#w5S|qOwiYj`2rjPC(DxiW0G`sOE=MoElj&^?rM+jcIbH ziyN8>P1kRV8pkm=7ntl&D0fKxUgGb$VlQEP$>+JI8F_p4vBU_4E^=NO}98SnU=JqEiu zAds(7=l%Ifw^OIIS5aaAHxytpYMFf`u}hJudTH3VyFG$n zXR!kucAo5sXeYXhVVvtVK?{%X%o>yctM9YsQ!oF}c-9`WJAQLjY+9YxA}9`%?@~E$ z{EsVjDNIqj2cPG^Jm?Ulh1y|oyaA>##LcHILuZ4sn|;lhnOF}gk1DqO5$xynTNrn{ z^o0vsXWT2_xT_wf74+gX26GG|={u)dy0kaQ-rFUk;W8Pt#&xWs89W39849 zO5Gc>fc%c#2$vc82()D!DRP7b-xEsN5Ox2s{nT*$tv1$4T()!meUfl08D&{Q5cJeW z%gG+33CL%}IZZa!Lip{-hpGk|?IOE?$F&T60$~ZBg?aV;fnDBn=0*K4ve4v=k0R+s zoFB|j;nz}S$&JLF21Y=YW(pi;HUQr&gPxKZNpC|O7D_kh%$ltiXcsYvU5IVPm#QAKf zg)94!!EAn)^ZcT$$_d0wvP15ND`BFQ_v;tz3)h}2k+YbR5^Uq5-PB2tGWTS)8cR?F8CALR)!0nv456~j{LY()mCd4I=s-5NRk;8UsQfUH&&WSA z*19`{OlcIX3ah+r@;2H*M!;J?J>5-etAri3=Tk1I5i$&y9CQ-d&5i%Nt8YZT9SMMA zuY1c5^T*@egcCkRlnIg*etanc#AuP1fvl=7Z94|PRXSkpHmU@SWy!g(sZI9CMJn%h z(4sxSuJ&Ahjf#(TGdW6aCWLxM2=?2y6NvPO(>w$RB)O&a!q{B)fT)_y*X=j`gBxY4 zoq|QYkTIH){*JH_EbzUvf0xllqNaL9MpS6Ft7A6ir`fu&{_$2!0ub?vUUlN3%{zP( zk68RtX-TD!mcVv*Ri`+K3yz4(9C6fM*7}a_X;Dm$)D71M>aj5mHB(%@0UUbBWQI~~ z*zPI})uOCg`k921V)omLmE@Ap?yXga+^M`{`Wu6$_AcQ6_)oQg^o@&QSL)!Q;c@##tR`#GH}3QyC!x-2HC`hy;gM?1uN0;_``|P)$lzgU%NVd)qNt z`$0PeYuT-0BuC~3aWjePUz6nwotgYhiJ|4Gx?zW{yO@m0^L}vDb$yCr$nMooDOx8S@n8NY-7_#_!Ywz2sD|@bUk+IoOlCB8Xen#?bZxb}r6n9x#F%t`W z!km?}WsJY0Z*ZUD5dxrIY080UxB?s4xEagpA?%0OD;v*_?+5%K@Y9*__`mxfx?a@k z41ChIiJdCjv0sTJ=7kyY-jY>6VGQb7@ieg6Kast}f)LrWD1cni`TMfE)5nvzk*df; z&{}sx*gkhn2l0Y>XMq&LK(+m*bqR4GxeLEc3uCzQlu+>evOX)}j(tPQ9_yGX$N6z- zk*o~4Oh<0sZ*7Figm?cbbl5W)Hr!ONbPZb#yGI$w3TmJT5&|-0U)>M&E>rQo&G)ps znn<~bZwMeNSdc~As;*z?T<{s$A)Jqiolf*MA70 zqR7*5?8T4UQk*ejh;h&Aov|0M-MZ;Gkv8@8u4^9~C6ZQd-BYC6pJ;F^hb^Fxf98kZ zzi%4JEJ9Hin{5FGmUXavC=L7ekBsT?J5-NT3!15C#WjQHC~|pi>}YdtG}L47Hg{9R z$ae9}hrtoLvP90_(poPK=0|NlV;oEZR;RsU;cP91(M{0%(hUWWK^iCk%MtQvoo>Mp z^1ee)+0*pr`^S1h`(=Cp=u|F@Fzq^Ua0a<4wD!uEl4hF|2Ny}iR%Frb^iXz%^re$I z9_P8^UnWF7i2<%)(1d*hP^-5_7?7ABSJaQv7G@wL9_}A7%T}#FTOB=oLm`nh<2iFY zN0leX6|+~(-F1{CJhh=Eyka{be2#of+*PLc{E{JP*6JP$-%buDkuYIlk)OQA-mKM< zDd$(;4^KNE$90jdZ0GI!k3WEgrgn)m=%(RO)i-mvbXGrn9^%xxqP+KBcb~DtJ~?Ga zY5vETc0w=EM}{h&;1+DwHU94N@@3mht$&D46OMLbG#eVVovh z&0DAY6R)$Rt^?3!`N=p$vmy`Zjc@k276Nth6G%tLIOvfidw5k`W`RQE8nZ@E(A<%K zl3(Bx{g{Pz=^`TyhIzrk&vRUk(p~_f`coj?h?WJ31ku2Zf&M9wY8FVZG8e9mU+K@C z2jC)(1DhcQ&Fz}|8OhxYiZGvSadxy*=byqzo6<3h8Q;KR(ssXW<^~_K_63wW;kyB; zr|aycjQcg4Ye~aKi9hT|f!%Ri&p0%*iyN@y;k!Iy<^S3?oSPLNY&tXj!}Ap=HznK> zJTYim!t}hUNltUj(%eJs6%X#KI;bnv3A#F(d0p9^$hsmO$o04j!`kj5N_Tg(sh4~E!4wVysa7OEOEuStgG=- zo)rFd?-&08pP>sRv*g)nk^DyDD<3mS)*G(z0&}O!dAe;q6QlqA)~B@^6dmjCBkHit>4zP=c!PM}S_Su7VcW?K zyLZ&Mz(dLQJ9I9u$!aJP>4CK3PLa6iki=xN5%kkS{DA&_r_b3C$A{YD(3qL;;@4J^!;;t&; z?A>$TwlA^x;`fWY#s?K@hdl>je?)wz>WLe4!ZuUq2GW1Cn4;`A_DfG&9yS6*XqVb^ zgox;TNA=Ntot)&IgTZ;in3HHC)yi=`66j!(%-9c4Pz*W&!JJ^;3lsqT*?nM zsu8{2k+7!%=Q#AJqEihP(}RAp2~Ez?s8NCOSMlU52XpJec&hkbdNNL%vKZ3u*!pK{ zq(%YY)WcKmbiq`%)>2xdW~WQvzx%tRV?)_yp#WcI^gRKSu%3of(TL^_Z%k!jbDux} z9ZTJ^G~ej}3G@uy4&K*O$Fy~41v}YrQ?2NLma%gBhH?F>w6U-Fysf-ez+gg&cVSV~ z7mLW|-k{^V{)Z`gGe+kdJSQtMQ?Ks&e!gAAN~DsO`PfA3vZp!Q^X|>!fv=LeMxX$5 zge-kyE#xps>he+NbIyjDbnDddQvC8(%Dtidq(n52XN-Av-G57^b)|GNh=Yzp3On#h zR3jf7S;fu;OI5w$=|jHsB*1tSbl`;ksSy^ascoJ0fGn#zrs3gLZ5Deez$kbAmrxI~TG{8KObOy;wKiqgpDatO)~8PXqkZ6AOVtw^ zoHX^S2i;xNz@@XwtQ71t)W8523$pCEbnJ)|8o&xEV%)U#l;c6P3oN@gfJA$n;0nYa zY4><$Nx*%@hYAAJUDk)n^k!qveJ?$qy$wI@&BIR!)KUs8U49iJd7cjWbs{!}3<>XP z2{8+}JW&)VGFkt=GG*vPD8%3m2g@N}p+P-Oq92)Qr2rB99aYp~TfdiSxD3jd!iPoP z4gbJh;U`&w@s8I)-{Tjf-`_~TIgwtySUazqideJ6VZV8u{j16BdF9OhtLa^CJz*!u zYW5sko^JgnUn9*VI<7Ln#)?v2U23Zy_vdW2>X)*Cif9au9e!Mf6Ec5{qeKui2E`<*lv7&-Y7?BN&MV{;b}I=EWB3bcOZef`QR zpqcLeYz41;Vz42C6sc3x;4e)wY&oy!ASUx{10aa7t$uew^x!LpP#`a=GzbPrGQk6N zQjt=!byfrGk5s6+0_GqXxU3JZ>rS;a7`rpe`wx=J%I#YDZ)&?JZ=7Ie5vQ*vsV1X% z<4r<&C;iBLdm~kk@k)6?(bf)?mw;K@UEsN;c$BZTMDet>qcV)lJr8Fzhu^$ zX^4aTae!>C5C8f}rx?QH9IW|cFrm5FkC8%h^&h5xwp4q*%yZTSdcK43YyREqtf+VH zIl_5l65IL+8w(>(9)+-+sJL7=E{TOceqd;okwrl_U+?B{V%!31m$0Sgm<^Vx<04`l z=}oTqoR4KMOX5WeMMBhM1oYtmg`{%ffEuwkHZw_K-((2 zN`vu))O@VdI7a^EP+@K$|3=-R_cQN-xm!E=whXY*Ovud0-%Zxa226c1A zNifc+ytKKx58duGk+hmg*^JR+emyx@X_@2;FRLlLHe7zqJ(ujoK0m@wtP^uRZji;L zrDuJkDNo*mx_g{`ykGF37dhU}4G2g@-gJySW;8u#|ul+##-&Gc^A2@jC z_-@FERMEFO=wGId%X zm6ulOdtyFxx0Tsh4O_5R<-S#iF7qd`0 zJ`6 zDgEu!XyJxC96^4H?w_+P(!TRfdqn(CJRWj4+^Uw+FvXo2sx#Zg<9iu<{o4MPYN9s= zLND(5q6snBEkecQQ-;$t!UDAX_ciupc16tpDZ2&&@w5l%_y;aEt9~A5B#G|obY371 zuhPA8Y!YL0cewFGrEf7}5ReD=PpYw@CvEzGnRYnY6 zmg7RUGj-|5wEjofaOilB2V$YLXx4oERnh4bL-CDk_(B){);^b@f3kNSn| zemzW#N|MWSUD@pjn9%7`h>Q*jqV`0YMW{9Gx*Y7x`YcYG7DU}nXftm!tG#fo?c}Q0 zS!ERQJWo=Lh^%<_IvK!~2aP*B9QP0^+h0^9(DTA+$&oi<>RVLIL_q6Qou85y>u8#! z3wuZJz~YR*V5?D3s&TaTkl|(g8&QcRcAT|B}>9DCmp{C}U$ViA(y*eoCMjp$a;z z_r7z9s4u-r6|Fq3!9vmzC92dq+DHzT@S`3BJugYdMbUtw2ryWfFGue083#b6drv32;_ZRm3WT9M{RtFi&)4tvuAr= z{)%o*+{hy@hQYhaf!V)bAd?a&CTn9rZgfy35vy!gR2+Zf4~^qDtIl5Fl_Jy7xbU z-}&l09pLOgKWhSAmr}4NnBFQ!HIH#SUFJmyQqVIe6a1)tHo@q^%nt26hr{8ne%G4K ziOm+Q``JIj-!*?O5YgrL)D)r&T~8IntEH|-cx%9t34;G=ze-x*Xq)6#Q&e2t9N#zN zU3a)WJ#x?GR$MzhCnluIp^j8Oe_p!Y@ME5&oT)AlM;7qteJZK}hTt1sOoeGzqeh(v zHCX~Hw#TsFo>#>SlgC6qtjq$08#CP2zmc|F@$O5jm&j{lzr}p>(S`Xy6b~l)IZ68o zB={;dx&OgvyFtl)|C6($BYUu=$kcAc2Uof5uVveJT5E605tCe%{2r~ z;HB2lyf%{XvBga=)PV-ZV`V92Zpnl@Zsk+)c~)DSLQStK@lm`TfB$3QDAE*!a`NbK z&)=oP&#jfp4KnJ>jyc#D{BK>)u(FKeWTia9bozp5IA?O6wScUcLDMOq^dD$@X};@qF%RNOq6Ckbq5hLpsfw`ugw>p3}7~ zRT3Fa#p{pc)^dLn*3Rk#0>;ddWM1!zKc%kbBf6sY6S63s zoT~3N43gdKOnrdYr-l+ACY!Z1D#x#!8YMWW(rdMVAz0gjPn(8ukvvr*7 zrv=cV%3~RR?uXeFcIGXIxbf0E)7JapDy3Jba=UgvjFcJH7{@i2R=>;vli9pioKK>y zHc1PSC26#4W=t%6Lt!5S{4Oaqi&ge3YIr(*2@r@U3tnh3p`9z-bpzOley7+A>bX(l zXgxq?FcWq72wHpXhk?OGvQW8=4QXQ|552k%m1kb}{>-RMjd^E>_I6 z-Tiq}Tf;RJ7e#scQ0JEvgm(p4_@E0qEz(PsUZt zmr#*2{Glj~KN6tpJPP5&nqSz`MJvleRsx$RBD3E(8GhHs2RNbbm@+0s(7Uo z63e<^CG;xM&prwaSXmE(mY<0qjIJ)_iJ(KIQZeO{P+0n)yFEeJGvoy(!F>+bmuZ!1 z2C{#xFRdkRg&D+uFDb}>pBD6my*sUiS|&CBXSk@|)84E;(X2T-TG9dBK-qkj`ezv+ zB`irztAOGxj?$IXQ#cH zIe{H1&EahIguvr8DXes}?rNmH<4+M^Uj6dLylAqc-~G7~Frl?n)Z^R<;Nsg4u_YcW zHdw}wftQ85uA|}<>qEnCDi`*wf6x02X0qPlUwXCRiBN%oqmbt#S)F4yWDkZ$$i{(j zYUS+IcFujFCB_rEb4MEwhAelF#$%CWr{@W#fccFEk`cyr0xx2_WFROJoG8w1vnkcy z0f@b-827JPFcyC2)+#<59(hzxv5;lTOb(x#ShCZ8TN!E>W~uQzLiv!4r3_=e_5{gb zYsfRF#JC2vcLvNuOiI=5@ZDon^QNFWTIYAQ+Bed~?ONicZ#;kllHJ~Komp>Cw&SrH z_h_=Qt> zmG^FZ46IJ1*9p`9AMmbA#roEXi(*2cL*aC(kdVNwjls8IF6DQr**8pZ9equLP5h-K zucxfYjJxG2nIBk`dzlQ@)%d4R-tCs%hCpySwV|*dn#1qsOKXn$@P-gYJqttoHo_QU zYX{&+s3b7R*2a%{W;x+;_;GCGw77KGpV?1WyZ#?jZynb38uyPI2R$fpPyy*9DK&%< z8)+dRFr+~SNNkg48!4rNprni#gAoQGA*sMfrDFq?4v7thbV|qXgXejE-{%jn%RjvI z^1~hP`<0QYb`8f1HI~of<-}gA3f!EN@HUnLZYQkj7O)0yGNk$I0ONH(+HzB;tpGgp z-tEx$L03#Y=%Kl{cbh%}Ja^$hhxM2UxQUXO3RmDDu;Te3}ZKqJf| z;LwHa3 z0|H^MeMpYDbF9`5Tqos6`w1J-E34lB?`n|-u9oDMKR3%Fn}iR5tT}=yAA!9ot?>QJ zX_LzoN>%(D)w6^+38&s zS37nrT_J9C2XQlO>V@H7)g9F&v)XTr4>zu7P5~m?^F7u4nVovN14pG*>{_}Y@eXrh za|}XbBb;MlJ9q4w4m9su3m5)^{GgXkUzV#)BS_|2T|VgTfA6b_%Tw)bPM5Zn-4dHj zd2hIm3}|*!m9G`FUa}R$5ubGCsLX5kDzo0nwt2cuTH8EXy_}~tfI+- zlb~$wZk)Jnmp8l$K#wXlt1)<<9v@-XWt5hq1lKQASNe#_K6>9Y#$5=L(36CJIu zX#G}y!*iqRnh&YavRUD$e;^dnhCl$jj8jf5DrP3EU%4YZ)e4jMpxiRP@)lJ6)DP1+ zQHwvTjR@dw@s6bhdS!Bd7Me75{e*2*cZ33L`BJTd`C}GBi}OqDpG)hmWgj@L0Qi3{ zsA};9x=H=7qUL^G2P%-=IBI8t4sY%!4PRvy0DwGTJL%ryicP{=vj3^i3NIJTST2LN zz0d`o#SC-$+2VQ~(b?p&q?x`vqC9BE2mu2DHEi??8E!V6XQxh4PH8R536a4x#z8NC zAXs9I^5Z_MmNx+#!MsuM(y&>lg9Fg{;e8f%FtX&da{`^AR_K2 zIxkMNW=zaIs6e6A-AGkd2B@0#$3);w;-qt4UTI3!r#6kW9(b5+(VpS??bL6jQrr?QxfX`Gua70}R^{4SK6B=L+!HPQbq)T>juc zx=10tdfxt2YqWFtyE39#?(o7eeTP(b*#z^gu#~c>&i^2nWdwL3YQ~Q67L$Q<`t0PB zW2?4{SP?B30Ki;C>nLXuFO~sqi)utC?TTAYW0q)t{9Oj*#-$?h{{}3$auCH0>mIMa@mOwdR^8In7-738Q*WRqUA+3`Y1(jxguD7> z$FjLgA3K|xf#e$FH9H^@OtG>L-l8LWY#eFjDXupwhK9Xxl@fC;`cQj4qdNaVxiEAv z&7YAK=ha`WlMLY2P<|KuUlQ$P-3kRlVQkmi5B@p4#aID=BqGv)jkM^s@wyk5HaZsB zD_Bm{7q(5obe7i2>t<*?8@&P;Y|;UBw>b_yu864f*i@IC>U-;zdC|CZ$@?^=)o&V% zO5slsLnCvWcprgk!rs2xU$(XL{z3HLSlbbj1Sr>qGw|v~DPF;<0F{A>KoRwWCEG{7 zJ}vO{!#p60XwbextElfyR^3g2)E%_sa+??c$~FJTG)T^fU^Y-MIvXP{*KM2)gqBL2 zp{AgyyaL~yJF4( z%!W<>qA=ZOmM{%L$+DDD!{mqt-nvpB?X$qD7Ve{;>wo~SBF$9Eyshw1$w9xXMLoxg z_yDg*(|&6Vt3cFTT&+rdTF7xw;Lcfr7QFitmR_4}pTJe`pHGsqve@216p>%ToNl4Z zp4m6FiFUn3-k~3xWD~pFhs(bMS zUqu(H(n3*cTXGoM)=>wduA!?$Jvfl;4o+%6?#DWt$>K5m=22E?2{JOjy@Q>2(Tr#z z7?lum-_vRK#e3#jAvo{8g;6I3!k&h94|oTQA}1yQcswtD`(pIAet3UrLP;r6?)OjL zhPawEuQ%$DlYGz@Y+lOD$B3v7(%Zs}6*BzJ7iwTJF2UJxUYy8uuh~KJu zj-_3c7ygs6{1#?S2dUi@>lFXy+jaLIe0#~J)^#?6?vTUK(s3^G zKQ$KyS(?Tw5(_v-V) z&Qok6MW%yKCzxj#5*&t5vmZIbb_uj{eTK~xPnU#I7k9}tcl0#!J#kScD(_~RuJU>c zW<7n{i+kQ4@Fqys>~8A}@n-6&+T9oJ^%+AYOxf`Zn5Qi&azdm5Ao4zZ1q^(Z`hVvV z?7288hKbR3$>LuvwnY7^K4H^Ejdk7rppkd5R3r20$2@Vj*Z{>-@SoYU3^JH^vzSK+ zp|Uf9`!kjCZ=CTKZIWZr8C$sbJObS9*8crk@s9Xhkqda=Q?fP4CcyP0W7FOjm^KWKPE0tQp_=iUJi=&+ z0rvQn_Z3wu2Z*Y_UIEyuF?^km7hI0Is`?GnrZsd`pj;0lXU_8(I5(%G^etgMsOUZrDdufcarB8fR?!Sd?y$#iRERGG zQT>iNp`TCGx+nV9)=tgBbm|}QMf@Ap0y-G~?pDJI{T`($mhraSs!y0~jp2@6_!%3q z{1<3%hXGPM(B1Sxz$QGRRk~U8c*kdx>R5XyV9@lYXX1H}jTb+t{y==Qvv`;s z!a9CbJ!f%vxKZM`MzC1-&1`)TkPp575=klpyTO1H_?D4(=MRol{{*g%e4?_^0QmhA z(a+!bE{AHu`iI9@&OZ)Uw8wK<0YXTdU8&FOQ9O>|*$ddT`4XQHVw-g-*UE<$BiNze zz+AU&%~ilE)8--@gJIEXzD{lL8u1?M3Oo9y$lg!oG6qG0Q+6BUr>%f@QXA=JL+?}b?N1-!Ni)hek&NI) zgHIJ5Cqbw5wQI>iMTGr%gu4o}7PvcI7Am(P4coqxEDi>r%z1d^MAWF=r)&`**4Km@ zY^ld`^>9mWTawE5E&4jNm3#Yx>FfZ3-+zdP6LcVHZ&ntB)5&Qo`lfwg^d%%^YvSk0 zN={EI00=Wc08!MM+mrDk*Q5H9?Lq(p$70Pz$zsx#O1Gh~S%F>kdhb!=FJnTUod@QR zf>%JQn;SBd%apW|-6EMu0094XCvLKo&pM@Hx@+f)Kg!PC&jj-LdZ&Uz_#*kCIHyy0 zyh&2o@VN=5Kv|WaDO0(NX4d)r@UMALAk*dyCZm)+nG4>rEn8D7A?quQ;P;@6 zz0A#xEaG&|&%luo93 z=>m0Gt8aZybQbOJ)(5}iWGbt7JdQ7{DAj-WA7uF~_|)1ueOjlGCtXgk20w-6w2dr2 zbe7JkTR#)Hx85`5{prbrZ{Om{?v|i6K+O)nUtRLjNNxj(k?cljPIA>>;srvMfUlda z3}m8zSyDBYlmb`cR%rLqxt+lQCJE=i2(1R|te217Rjm`!LMJR$`Jb1`Ge4h>dvAcWxn>+oS$vYoh$8MkE*%vi zwY}W`%G~LIx@|hEte=xSvgm#CVdeHmJ~Rz0j-Q)?Z-LFRWHa zMN8$eW~e$mlYC6J338Cy^Nw$flNp(r)oOAs1d8aC%arhRSS+j?(CoH_vQ_9-?^=IUC zSqPyOfHSOcRo#3E#657>*#iqwoT^$HZe(0;iaW+smffGG{+p=O%fBQ|` zwZc*O3(}3;jcVYqw&!mXNq_hV%sy&^59X125DRVc3lRczM_-&^7kpg4fdZ{lZP%9F zp+BE{1Y@|C=QYl)?9KOAQG27%lh}qYoErWjiVj@$*#5d9`Hjyzla)uz$9tTkrR!|t zu1EW;N!gn%X66U|UWE;F`&Id46aZ9vmLU5s8Bn?0Q8sCpxP!cc2&bg_OL@I7M5)Gb zHDKHgb}V5noY>2-sK`9QjeaRz=>zIHVHZsx7eL_IvNmbGW4GG^k+T*%-Tjbxxt%se zuRbL6v3>h)s6K8N?a|05eAym=PA9BOe(aCDzn~k1LTaj@-JAR&yaSuvQs-;G1^P}VkaaRgS zk*ry%kKJ2in1a4M0k%^HkQn5*3JUDX_vk{VvtQ{`WUd54ica1GXa5bd$B<~MGY>x& z0cm#YrV|o)Us}kc3)U6AsxLvuq1panep+`0l-yDy(l^?k>n9(kzv2P4>GZnR1Z(`- z*3YQvEVpiG7;SlKSPF!uTzSSq{=q)-!^&mO?<7-IW@-IM&jR%COwdAgmXxQsEmoiN zbLa1AXB`HTvI)THoxh36&?clBCb`sj2P(%_=7VNj6!%;{zheOY+-G6t@5CzWrY!4| zr>-e;4G@FE@7u5z@qRN8mU;Vx!+0ZFPyl${V)E1ZuCSxOttO9Ws=Mb7CXA1C-1C)l zJ&3dKlKSoB^SO=s=_ct>aku}>zUdW@yFcI*n_{%cBX;2*aO--y5+&GI|JT*!TA{+9 zYOXf;J%vFpLp7fy?V<_R;GX!xoD(l0C|i_U_=oB#XVPx$*&lUp--V?91Y(~atr{}{ zR=Or5x=w40^mQY|cktzdRmN$qNQr29TeWvMPba*+0uQWZbj&CBf>1ZvQwMJj!oJ|Z zrh7xY`ITCbwL%HS78!1ZokGnb3KT-$Eni)*zi1kI2eMBtreB`|sKcnMnuQrtGqXMv z)Dw}3P3@M;inK9~LG-{?U%wQ!%wE(J-O^~Qa8kqGuuTuRUZ)I8A6X- zC5f=V$0J9c<>QR%s?rA1YqwPV#8UZUpRb-6heXNM{Rnm~|%}@~%x2StBPk z%&=%etUWYV6hWK%&d+zpMrEJk;tZX8e7}oqV*89H2hc_~oeobY;w+J~YbC(0(@RwY z{RZp)#MvfUcg+xZk~>WIN#8V6`JCS>FG+WpJ~9=!sq^`Nx#=z^!09>_3%CwSl8Ipe zsX$8fvSSk=D3d+eXWgXF^$bBRkgHP3_VT%T_kZ^j{~dH(-YhHyoaiUl%y<{6D0wVe!Vo2Hq{rSQhly+`a1P`TBc`IcljRS;N{9H zMhY=1;=L;SUhNf67YK$M`%Wn_G!Lh!;LeG;857a-GB`--%zUgnbseWt`zTI6bU5L? zt#VI`jk$LXytQcx!vv^>jI=OhVWOK08w!p?qHwZ&sSJ0Ai7&(Xd#x3mSgVw|Ii%B4#fLE zNc8@HEJMLwm^rhKNKV^4$Mcdo-U6D=TI3%92Yq6N&F0cxR-O)kH!gjAxIQ%PrJ7)Q z%<-qifCJk}J5naAyIyq%zR6Z;qJyWaXCXw!hBEU@nra5OiJaMX4O&?BxP{zcj*F?+ zmK%=lDhs6mJugZQqT4E0O`f)ZWcX(Jqq_dyyu9|1SBZP`>kGs4>5l=31Xdc;&E`vKQ_k3~`K~;(%X5WFJcQ z06kFj6T)1U1*F9VWJgMNKs?gQjsm2Cfn2kbq_*U9cD__LE7h6>`;^)2PZVvF<(8wF zARoZtE5;5HWwB&o4rTUx7X8@|DdAWvY4?a;`$jnjDcuq8+ACNFouW{Eyo&P-q^=2% z;MPc(i8U2piFVGX{FbiMAY(|v^TI&bT!zL><+Mk1V4-x4BMx?p{^8% z6|2PUK+1>aFk%+vZHD2b3H}H%+vUH7sB6FeHAtzGQc;ue(P=L0`S6bz_Sl#nlpY=B z$%qfuaypjI$uC21k<;x2bR%7pXS`IL6DV_#D#!w65jAnyQVBp+v6nj*QR4UtE}(G> zCc|x&pdaZMltctzk`sGxnSg>y>({B9J`+gj;W4)kV9PQr=w6zpDK!DMUI1Epu^J7u zoS6w7aZOwkamu300W`cCKH)8i*)qjemG=Bl`O$Y2UG|lea@u!b;*P2oKn6l&q=eF$4C7FF-;E^jz?VxDAb9mP+>|XYrgR-=?C{E8*+jaDn|nvzHN|r5or|Qz4L?hGw}{AYq)>g7 zQ)%hPIF*s^zS-F8M#LhSJPBQBOeu|}4s0_rlW->0Eq6-%Yr7nCRL22Mh0Sz`j4d-X zzlN2I)e$TB%aX40Y*&wAg!eS)99S>sXqar%+~*(>kWU&1?I9$n}Wo-5v41rRsYkJrT2I71baddga)`K4&QQ+>w&ydl| zFrZslE1rA9b>369?+L&rFO&^=4puqBZBk=`pIFYzLEVHpOX33;ee=O+_s|v~*W$^~ zt6ZZeu@-Zcf4s&LBw-30=i=o1+eZIUB>C!7rnikAXSB^N#fCvecNqsg#akbx3%iy| z6iM({MmpsY+xP)qB-Q1KD@HlklK(2eg-XW8pe(?yt_!qayH8P0Qv0`5G-kYl{9zRm zx*B_Vzod8$$qpS+F>*M^M8Yf960v;+XmvT0x=lfur9C$%vggLkgMi4ZrvO%es0aQs z6H#*}=j>hC=nF1j&Y@xn`HZ!s-$vnIr5s%4b(0V@MqN`}rdfK780@0rADw`@B9Pwp z!`41O3^E!#l@c*zuY;R-jC*H=tytoiRi&kQj}QF1{P;00(TOkgBNkj1^7iag8J*bMae;5@-btP9edtUw=wffn5LvSHzkmfu`%k2_A-&`tFlTP}A!Qm<2k z{R#W*YweF=6GfDOzI?34&JLwy(5WO$#8CaSv?}1)bbLIdPLqtBdoL@0h0EAiba0K^ zx$FsG>zB@Z7<$;FO0u{=K)mkq5ddrS7%vg&iJg>4xqGX+%oa}i5N z*~)j3o97z!t1Tlsvf+Ehq)1)=EpYLO!#8j}iTqfW6On%c8aT+dfuZv22FLJ?rc_aL!r##M??b>lEBL7F%{Qe{}aYIH=DG zwE(6PdZGQUn3bOQ{}4$TCrUUtC2#s(2w1NT9bRXn|A${AM1R061oqfrr*wyK9b<6`Bq!c>~cW;^d;-zvQ zVgzKiRWabt-?>OoYkK+03Z3`CR-sTsQQ2A9(h3;GJg7e@rIWAah`4nH+{RZ^_Q)El_`A z^@HRk?FWMWZmvKHgla6_c``iJ1XKEqo#bkF!X^{_xi#z=Gtc(tSv~pwQF-Zy;*>A0r|8 zU+&c>)V&(92m4>q4BYSg8pwM~jb^nt=A)hgbXlmpu9vw)2R$~kw#%VSEW}6Xo43`b zk<@2!%7V0@7Rdz= z4;Nsjf&MqsB*b}p>x_K>E&R0$D}T?}OLR(=fp_Gc21Xm85(qePIC97Bz2PR~Stn(t$EuCe!- z>H}QrYjS(~-J`2J&qiL?(t)$igq?~$VXYd>xOq9z^hWcc&(&pqALOpyp-*TIprct zqf4`EFe-h=<(^)26~h4Y4X##}HK--fdQz_RUA=U8HJDXwmq+EqcboZ^63a2?YG{G zN2Y5frTi8l+av=zOF)zllJtf)0H>OBJf-hUC}}Jbhz5dNE4u&HC415we#*rMy7}~n zPiXLziqrZPUawU<$gjyJ&z<78nFwf=y zSr}*K+qg=tz;AXz#ZqF~f^sX`PIP5!UJ+NaA8H8vt_U?Uy2!^i;r;UU*tONN>fXtE z?1-wEuZ%qQ5!Zrf%I|MsNH*_=aV%z0PEqB2jP6IA|+_CIF~ znfkz_LS(rlpygx}&O8g8D-d%!;DE|&S6%tgG-i@;*u8=nZ?_MQOPfV@_3z4Ne!OY14Gq7;yA=OJ~StkMV%=@bR|mbcvGwJ$)wH6FV($VjWef^ z0-jkmbwnT47ySh**`MqZVk@kDgPjNdl{)nY3?^Sb%@+G^~_Tz)g}8#^DI%@ z7{7){bNk1!Odw(b@_queEYmb*yH!T? z`NfxMnl^4+y9DDd_?q9RYgd@yyvn)S(|cZGg^RO->=1izGQcGH};Lz zKaFa@=%&^IhS#I17ej%gm}nJuwjA#>X)6!I<3jfK{kS7&i47r2M_V)H-_@Ks2PXEf zRL2pblQM0d{|@oy<1ny(ktUE9dzn-3_H4#d)k00?m)Rp1_HU%WqmJkJAVEjMUT205 z7vEJKNeX-|GaW^5 z{^k!Don0+5M!u`L{H1kf2j8$S|Bz=YOF0!Rb8K_C zL4mekFQYe}MJMpCa8*>wP^o*bW>zH}`B71%o5QTB2~Vu0mR|jOp1QZd&02HVI%PJR zmu2rBWhHhO`VX{01IY=RGO9;rMm15U4H%#Nxt3l(ab!`6R599(U&EitFZh5Z5^RD7$Lj=F!*Pl~!sHiuNh4juq828n&RZ?pw9`w#&13z!I{5 z9C)>jFdF$J*I_K(_Djo(Rd`ZOF3mec_M&aguZvY~;HMElwRp?%Qx|%}d5@5vUWG?T z{uX6BdQyy>b+-UVlc>EA7q81~N{fgp0dDLn%xF~@*$cR&j47w=ZGhQ*>QX=aheJZ| z+BHtltn9G{K5E~;Fuf2t4vrSgsYqT6c4$?N(~r}q8_E&(+TEL9d|rTf!ABM+hno62 z&mgs;9YxhUlprz2;!Z?eh2gYKW%Y`>Om3WAWC5+I3Y#z$d>*L$sjr$*F6z=vSy^nJ z{+-gAuaR>o$lKN`E9_f$iH`2_REBY2(-fK}r-O2+=n(Fn8*#efw|bTz^5z0F+EuQc zaA7iYoYNO0K&C+7GBQ*g^w!Z_)bFc+&mQH1RL+>ZBsrX-#r&&hHsTLn-50cT$8`|& zF%TyS4_B}Xt2?ItvLbx^?1NbZCf`a`F}&422|r~9H)3*5AmDG*DRudecbTG6vqsFK z059C>)oMV|MD<$Eo9;W4md9}5kp|y$D!B=zGbPY?BOIQd-+0%JWg$l3`L-`e0S-;# zVXG3*#%(=R=fc??OiL^M)oi?4MzaBGxwre%*gFGTw_TL7cMI^g;WbLdEu9k|TaaE3 zBYKlz4Cmiqn=VN07qj~X?_U`6qJ<8*av)no9Y#(Ux2#3@PR&igUm;kFTQ-1F`4!uS z3!`G>CUlWZ%gDjs?t8`TL$zD`7NpZRSA@y^3#yxc^N)Uiv8!7j%}Vs;p!+PaKYt#H zfVrNQe}{TaBg6_SRT%fY76z2@6M!-va)OD-L#Qe-(`*_|4j4lsEcqOkq0DSO+E5&i zN|G<{!ahjlS&wb^Oa5_xQ;$=Ga)ff$Ef>>t=1K7mjTL&xdW0Hc8bnu7`D0aiO%X*J zK%|mi*fiuHMJgYgnz>VKJRWExk)D-RvNUp(s+62l4y%LpM#zuu&Gv+f1 z?5B@Rdyk`j-AL!=^nSq0$irNjGXK|*LV&8oB+J#1CVA{<%iJu=VtfQM-hq2QrRT}W z@9CjFc;ZSV&mI0Xzq?}sN&qUKbI7?i;kHrh3eF6vgUyJ!VbQUukwtspJ>6O+X$T+3 zI)&(kfA2}mvsKh;-AmlL;oMDfjnWNp#F|XYKWe-&Zl9!p8V~f4Fft!}yy!ReBFuMr zY!1FmNFg0RgaKl61CPO5hMd*a&x#CB`K;WR@%jCDy4h#tTMz3>W0AE)SGMfW;hN4< zB>`OOzH8Y#BgF&uBa$*-a%GNrZ3gqqFI>QABb&>jnh8vVH^p-uObs0-uPENcQLC0b zD@B!bl>D$meZpgmD9D#jK`gO5GFLA#oe%hfQq|P(S`EczB9~rQU&PTg0hAE)-v6ob z;#6PWk`Ex;$`E%NV2o9Tsrn#o!ejhG*a!G|dc5w}uSMrBWgVtYoz_Dy0?^2wJ74iZ zVGaRRIwESP*8M7U9A!FIb;oM4PX>@jFM24egZC$R@i=}|O1F3^I#>rNgtP!e22ylD z1IxW3uMt5ymd#v!{}VT>H}=h5ad~pfcwde@zA^=m(~l(#JFo&Q>L*HugKaE=LU733 zOWCcN!UBy%?77xSB?pHK5lHo5N<*6ZJ@W3NXxq7_$>@!>hXYQJFDDD{_FIe_SE$g& zkbt!p@34A2_ZkCuimEEGHMAjQaT~vn%3>F3{mDUm(zwZcpi{?wDYeaW<)>uH!9dzt z`9g45cM-_T$9oDjc=$Kq_2+76*zi$38WMWaYac_1C1K;<$OkB{7YVHF^%{R!d{OnQ zhx2WvFB?ZDR&VRA*VgUY-LTq8+fnLB%);V&N_DZmyGQ1)AIbUA;OxCK+@)HwO;rMbU=~; z0RuRhcKdj()N!!}p6poS1FQ{95l^7181NyUQWpE{)ACvlJaq8E&WiBoGk?N5zXsz^ z>^tneRvw<8=18anl%MaS-|5PO?U<^W29M@gJ})u9fzw!^8q&eJ!2WmrB4uZD_UOfr zw(g!o%QyWK4VRQu$6heZ+CJ|(UgArsp?_c0N>}o@vjVkk^aawwQ7gw+-1j=gJi!Ch z)R4LhN*=`6UX9-#RaC2$)`Hf;M$^n4`DMjQO8>(#uZ4F*Y8#G$N9S!@oi-*Silwq= zam70Ya~2`J+i26ds9#xGg5Rag2Sm8Y;NUzgnR+SXO7W2Pr3wr7T+13T=*`thQq!4S z%bvi>N{JP@;Sa+rho&j0mm(TlrK$0vIm1R9?$6^|_DyRuQSBlc1Z#u!ya~n)h$Cw1 z1qsB-!(yQB-TPPtOKyA4r9|?A$BMU%SjC`_n_ynlP_2qX&7!SR)7Y{4@*r{iqpam} zBjReS9F|^`0a$_2TmnF;cbJHHI9Kn&)%{M#a^~tK{(C=sS}v`aqwUzW^cEbUqCO-g zSdjkU<(yylF*zsVg#X zk!pW=XeQ@XqK(wwOQ#M86{=mHZ6tOt0M9gmHd7*?F8ciP*sWU=o}L!7wkiviN#UP` z_)Y4y{u^8X-nm#*-DdEmTA`rSg)^v`RNx|yD7UQPNL@=*>5)!F!=P*oL!F`XS20O8lV5L#=gT{ZsoZ;q3^ik0rd1#I^q zii+1Mh1YS%B>rj~-37EnSbKMbY%S09kkP4+`>cC<{d{}A-*t$sp2aS^^_4k|s{CU) z^>b|pA8AH5^h0U1!RP+E@%`aN8_7jnUqZ>IEx7oX!ze9L?U1`j-C;mA`j69)hh}yk z5FOZc<-{o0lvQ|)Miv!)Pm%Lh&RJ2qyx&8N$#|9UtrCF+S}Q`cg>35n+5jFJZW?tA zJYF{*H|P7V%cm!OU$#~${kQ^6SNl8ih8@+>b+khB{K$2v_v0d(NS~uOU_WIhnASk8 zN<5+Xb$KNk4r3{*wSlt{J7<3sYLPblRpb0S=u%W%?=i!gtlQKhpDDB2zN5IbNBOOe zTw0yJaUO0!Y?eshbYL7a{cy%!zTL!I1TUgozrzBwygZ`q#KhZ;s8R!86|8+*+)UZC zL+hN6i*W6616vn)+%NYsShv)vk2tLr4xAkKqL>X}H!HfT@rXT_3?+x=mku=5RJ6JY zoWFO<4t)^>xM|5#DO%&?r01P`r}AIXkz<|LrvxeQ0rdv!xK_HRft%l%xTCo^zfFUX z<~rZvFZt(}Ta0-!z7+tio2JRcXM(^uZt6XrOh9tGax%XxJMS32SAm094x>#&R-$%&(jLLOcwO%@4 zd4nN2-CLYAhKXqY-cBO=$@sVFX)8QCV8TYgjqdhPE{%eE;#2k37B})zMGP`%Z4A>^8KQ*+tR^;WM z)oyK`?i2ZH;e&RJ4MhTAzkJ*9uiPHQgtmQn+#5nyCqyn*Ft%)$5x>e3{<2O8gRSq~ z@0g9Z*ZBqH$vlgFxtGuu__&$`+%a+hBM)Bm9*Khi(MxMv@X9$ume6o%fNwPkpQ&qR z`ptj&B%yPm&%Wg(n-EZ808{AXNYL$2DK36ruWe?3(hlj8CQVUy&h@TVo$!lFD*kg#r%0$Xho2mN!4_vZ`aZkn!_BmyPawa(qtM1Ip9(i80qL~b4 z|4fb9x;en<)6B+mOJ;*(yowr6oj(=7z;So%XZw!8Y#Dj~-Ajb(?<1aF9N)iPZpoJE z9j*Hx<;n#~u~)W;GV)@x7Z(oh+I~nVi><`Fkkmc;JtZiz^*Zl)Sp~8`CZoTN;ku4q z_3cJ?apqjm#prft>Qt=rcn>foFK{7h#=z7u84-d*mh_sxs#@yo> zmCxi3K6n@6z%THUB8x@>$;Lltuua_{yoxP%BcB3=>7zZBlX3rSOue~^%nU62$$L?} zxNKt|(l*0Kn{_3ryWcgc1MVR6U*~Gf$!mf7DG=xwK(@#!5Lb2pRbJS?azmdVTK9GpzpK9~wOEId!qj#aP!RnDlkGFj!V* zNw(E4fY~HcX8PSb+&?YUTL-URFtNkhb-!zSUX!tDT3|TdGTM`rD1jNYCn*>m*ahTS zIjo&hb#573FfPqrf2()tt>4d9igu!L6Zb#~Dy+lvjj3XbqRDvWRcXd?^y@2aw>&>v zXwkrj?B-Tq9&TtQNr>H~=H|{&mo?M|;hJtcg!bniB2Sp?_PXEhn+b*Z%FcXZw2I5) zZB}#mc%{O7LiGy0?W*vjWUf}$|h82DSb2(+TH*6?+o%x#eQ{5$^~^(522NIkIa=l%Os>b+CRTaXaqw z@fmekpH+FmP*Sn@q-U!pxS;tm#-wT8N=g95A*#_mB_ngdl_26Wl-U?;o`re3X*=~R zI7#f4*z|mArYwf0d$;K@YDUxLtBld7`y`H13;UgWuk_b<$qMyDv8Jw?pUv#rP33=R zJi6}9FJrl&Z=p$1XxIE;(SFH*QMaP`y5*vi?C(-?Y8eJ2jEK$F=sZ2OW0r>ZuT?+y zskF7yj`?C?X{&h}6Z$mqv zh#+Y4Vxxc;cI{y@E!Hz9%A&mM{u?^fxYRxeaz_+zRFqZm^qqv&HDged0`l+SqzGiS zQCDYiG&uX8=(OFWf5eTG`#;R(wg)$v!x$C^N=BX{G$K&97~*9EPAk;TAPA+*!%tjw z38<|w=JF{|!NLuJ856K|X(#u1s?;tcH1+s3ZMQhCX>T)0u$OlczdpG+lX>^)xodZB z`RAv3FjTB_tUaAOlaVyI#qGa9Dq-)&r6W6hna1SW(vwvq2dU!^pvO}?3uAn4) zzfW|@32V8nekNH26`#-RSo<x4bE`nax#FI4? z9Km`X0Ja|7(QPB(CR-x?b`xQ6G<(Q3b94Wjix!kq*{PgwlDh_F+k~W&G0Kq^o!2tX zemr7J(qk#c$Gr|;0{g1*1qbD@Bp-w=a^H=Xi>k$ zg}nscf0pB%ftbI9*7fumjg^LA_9(O^RskMNTK`}!qGni>?vZXoX?vk_k5~7rb~wlP zFU`^1nO>gWWnq%Pjhmy4`L0d$YaX(H@O^GAT(JIJdg`T)oHIJ7WeJi)T9azLWXlyX zr5y9S?TKmQ#o-yHODl5uLq^a~Zx0s~U2TqdfUhuVu9Umek{~Tge-<*HG5O3c)bi&| zo`DjCyvwuUD=9XoSSaBE3+1%^)=Ha;5m`@6q#O}b?Uyg+W33W;$FoJXb%uT^fOZc5`ms>uu{@Dvfg>a0-#MkJO7kjWAd-J3F+0Sop z?;I^wj;iP05Y5Z%HTek@{iGm+9R_OBc9s0dOl))aJ99F z#q_X?*0}fa3$EcQEp;Zua6W^Hz0cg#rm%Hc*nZJu#Hn2*pZe|zBcOrS27xkiO92k)(1`FMj1tZ$= zH>vC%cb4DZ1n=Pn+UUSvW1hDnm551Hp>469i8#?W_;7{A62j*%JG`EcW4q0xN@*Ld z_$Aj5Z5F8IE*_I}j@62@dYMf3K?7d;~0#6GGWBLC6a|}2<`Pk+H&xg!&{9i9v z!5GA>OtU6A&cPUb_x}8T z|Lw8u-eZq*pL3t<^}3$dbEebVzKTNG&-JPj7(Xz6%lt7>l6AxASPzn_?#j6%JRp`{8(jm%_Jm4-hTS~%fR z?nT|FwF5{ES`j0Zn@{K^`R}Z)y5y<;+UuK2O#EHjxC=;KE8*y9Wok}NKV4S!iTJ0u zxx0^4bJKze7{^%#R<@@Y_*`{?@wVjcwzC)jK{qS%OP=~q7!~>p*yP3m9sso|H$RvN z>>cUla`OfjiW)M=ZFA!Zs)!qR$8?|Yd8=wr;gd#o1EDxn`@rr z%TCH_O|2#bBJcP=K2w;0Xsment-@(I5_8{ev!JG8WdC=ail{LClzxn=GE+L*&xzZi zBf4%Tx)nB9XiRBzKfp5Vs8O`a;P|v=Lvs3yw|=7V2OdjOwRw7mUX6y%ElYb2V`Sz!_xM#b$v zZ>qtzEv3WuUDxNiVjh7vN-~uEHl<5sKa6qIBR;#;VqYI3W;1*;QiN|LjQRJz@z}Pr zp%LVwZqckqt!sfJ`0{OAaDLa4DIbxa)n>b4Rprkd{2ld&h)ipES0lr2b$MQAj9!df z%l3C!g=POSmv?t~@=TYU2r?5Q{q{Bmmbq?Ja9X`2Po9jc>A^c+W?WwHV3$>$h@)1= zUq&_s<1PdCt{si5cMu5m^sNiS#`G|>E^1~Nb9QkyF0Hh5!uux!4!ARAyyO(!w|Gx0 z8o}^>?)_v%pV->+f!1G*!B2(frO8q3;FNy2NXM|p*3tt0!#3X)L%IA@VRLO!qlwID z1*Qk*g@qP$H}=$&oht7D6|I27-fOX?_8-(~v#po;kSOGlZ4-l=c9pF7AYNDkIcsf0 zVXaBn&EXZ3dOsyAA%V3A!1*5)|0)ZmY~5^~vsg$Q1jmYAZ6Wdro*A$MGFntoy(~A+ zRied+nQs)zhOFj!W?OWv^p?`r{}_gx9?8~t4oT1QYw2yViLq_Vu^iX^fc-TY+~oA@ z(UvNt4L#z`8Ih3cUMh3N!$eRg;03YMp6>>Kyf zH@aQddn$jlT@F-XZ;?DF|Mu&~;22#UPZ17&If(upCoR;B`C?DT?pwMPH%@6J$?>_9 zbF-w(xo<1Kq?tks${V8hr_-)y%&d78N62M`Bst}|_Mp0y4u%;6RAWawjJlPDr;4t1 zJL9Z4tDkKn9Ogf-&gKS;InZzvW9eqXst$&rf#AiX8kO}6n+Ml;O`fM1G_>^_C*fkz z73G+M5XR4wNybY~MD~Fuh|0fcXq0CgwO<9w_4*|^cytnl#e_cFruUn^W;(X1Yx2qO z_xGKWUh_@PxDrEy{|mNqEiK)+mX9Hz{Wf?FtP(DAUkM*wtv*00nQ-b95c-629@?-L zaX*!Y{NaR)z7BnQf_ze9w%P2Tg#F)1;BZ*X{&3<*h04wko}w43aqkE6tmF1SnCPg< zb9Ry5?j_F-Q)$UrHzxCL_p?&zSrz%s7AHN5su{BFjyKO4GZQ*1v#*f&!bnOw*H{W4 z@`CK;9B8l+_Mwu6J0;5&u1BZib2!K2t=PDu%#DiCV^uT?ig6-UdDM!`hJONRjJ(`B zoHtguV#d*LkClINuo>Gr%H!tx~Ae3 z9WcJ1!oav2mav7}AzoY2H*KjZAN%cIo6gk-P}mT}%6bc>a&6%yV~G*Smsc578pC1wpY~j?zej5fYh_@GXWSKc6=(bLP0iHF^X3QSPPN0_KIXIF$W3 zDKcFQ8!j3M$eVbAU!fOiA8?2`_Q*4E?cUiDafoP=!%ynC)x`NCH+luuQM*?m(D^UcL^YbvzTvr=)jm9HLb8&X zo|oQ4`x3$By*it)qdsgPd54HC%Mf+kewn$SnamcH&nMRV?0)pGkcaG$vN~D$g+4fI zXEMLcc$~Gvce<8Fjppi}FTv$;2hwfVbJga+7pF0+FUSYi{YB2tT?OVK3E03s58pxy zI3pkqJTx|urG8BvFQk#Kb4g{lj2YjAoGc;<^wx>WFlq`K#<~<}Od-%+e(1q`fLSmH zSgXA`iJQM}I`5?EJ_Zgt3UqQ_wSMuvwmb*-zINz+(_ob-UZ9cfU=8yp1=GZFmmA~i zNF6(i!d<|UVnv;sa>~q*$-$qyLqj+TuYWY94=FefYNig4U#z9~kA4^OvZ2%(DlUOB zX2*5&kUtbmyL3-x2kH1rqszbH;cy}I7~*MBX^5J^uL2c_dgm>Gcxt_2#q)Wh^0)$$ zt?E(+auGXenHSe!GxL#4-7$ZU0Kk+Q@mSVwa~=z#@rGl4snx1kwf7BR(I27a#_P-& zs(IokR0NRCNZ)azglK)tA*=N9dyj3ZxuMX^NMfDt!XH}NshYzWc8z^@w?Ltwd}ddD z88Ugi+(F`bWV3w5&*pG@+_-0x+wjXJLzewG(Ls9T_*aI_fIE|b+%USOe~g`u#wX{J zI-aqk-wVIOkFKm%;2l;W{d%2Cp~_-O>yv}Ar-dPa93Q6c|K1|AA3PmjvWG8YuLcvg z-=dB@74Sfx4|D8Hfjf4*y0_Qv&6Z_Qu6?I`;v)A5lhsbbn~~a5&lVN-1PbvsG2NE2 zh5Q=leNS)0;_Q*BqWsC?q`UU7HgE6-g|tbw&^9(alG*sKH71|u7lp`7eSm1jHw|ma z0sZk!hox z6P+vMy!!PT^4lKD3h-s109wx~@0FE|sCthm54lij`CKru{T1mBQ=?ZDOt2t174(DmE-eEB6VSzYp#3e3Z&otIT|2x-?f# z8@SZdXvTN*E&%W=-kqYR7{TiJM+XE>^YPTQ%c0c{ z_?}ckOFYbnhNY)y(}ZX?TkhPAVrL9n`0?UbWbyxm8oaUUH8P7t7cXP%(_Px=ih1kh z*^nY;YdJ^pwNkr7hMxkYHj@U#Qw;huTG?o5y+OC_s;%Z?1LE4sM)@5=H{JDI1IUe{ zxjR321>UXS8QZd}>|OvomL^79d~NbBVc-nI9br+Ca_P>0qvkbj8I^iZlI6>cS%o7a z{aSD5$LylA+!lr)0gaX>3zrI2CFR{Ua$NPpx^L6@jAM`DTEO$C$IjJ*o~FmZ zmG~t`1c_lq4{EuUW!#R$fN2qb*V6I8@uS>8X1sZ^&zIkEgqBOV1i2)&VW_iH(W+7H2OGq-L*9Ch8#nG$hRI)Z-FkRwP{{ z?pi&Xm4RZ2LB$V!!cZ&+MTe3)fPh~8VQYkL!v<}DOF+2Mr)Nfss^Q6~Uirc53qA7`5Dh({Y}g|6#BhAPlH7aDXeY-L1NK&w_rKln zNF;Y!Vq^yie_BS0Cti0``TGA#w_PbScCNVp)|I5+8Q-sAPt{Fy%0lMY%7{-x#Sh<> z#Ce4GV76T(kyMM)_fw9^okQ0gdnS1AbkYstDc3y3#!j2aa(tIq&%%LsR5YheB%K!s zfla@g+M7@czdQTtE)j7L%5ZF>pu;D)VplmZ8t8XixaYG+4DVg@!gP4(k=$!J^Lbds z=DZH!JokJ=tcDp0IbwSFZD6%+2&~4pl4%BK^95pfiV26zj;3t-pmnu6{ncTu+4aro z?nLAYRG5$|Dy8ef_LCRcPKiCCr0V?rQr)|PFRB2nj35_gEg!j3aQ3I2<~kRQZP_Bx z^O#b0&q1D`bDYvv!Ldnp#OV7>|0$$3NjfPP3zQ+x< z^-*)GwoF!BHls{dWT$6=_7COz2luFov$NK^pRA`Hj;xplH~`ik6?HybM@c$9V69o! zwcqL5M4RONJMjTrkIp&t%pcy@2LK*b&CK7#-*Y%$-cR~0Z}-e@s04Ck^p8$@zZ;tn z!M)F>k#sQ|BC;DV=>H@Fp=@4FU{F@r#Va`^+mL{Tr<(0cD*ZjssAXc6iElpK#uz@f z#I9@z(g=#~I2W_NTxdSda|B|O`6GmK=Ts4o0U^Z<_yHd6{o_@Q=eiFXGqk1N?RntwFJt8!R^$@W2iVBlx3a)9vYMjISp~r5NQ|-ELM`RanH? zsUw`}Bw&y30b%4vax0Emv2qb@cxLffCG5-Nv~KA4$l37&N_+oK{E?RMvp74Vxq3Nl zBd*@*krMsku~3kd5YwMMpcvcK5gQAfnnU$QKgm}k z`7^T_ZVe6J1W(fl)$36KrX4|3wnw6pG}(Z~1JDP);kDPvd}W(72CX($NXs4`tVr~7 zCw+^{v^YL#(C1KQqg;k`Fi`H9W2RB>{;2Z@l&`9q{Xq`DGTz|lN{;MA-4WSZz=dB(J9j#N)g8R&Db z+%upyo7;<~{V%>-O$j;>i?sU8s(Di>i5kW${Or(dQnV4dt1K5`{+CrrXf-=YQ?<_i zz;v`f1Qn8Nzo`g++fwt}JXuLVaf;2hm=7n4Zf-S@5SL&J9_dzF!x#@oj1HGx$-NGD z{FM~^bp|wn_7h&w-G9&t|6WP2@s%!cr>=*}()a4egSRb>r=J?rb9+|Iyq?>Wiw66x zxG4$L_|pbBTP_Fk=kvunB1cibv_YruCtx&hgqMw643^=~+T&PnmATmv^Hko7S+#E4 zo#l3`X4clyERG%jZuuEKD1h1|;hT~944bX*mclWy%>zMN%%UxG$Ur4I8EX!`9BMbL zED9=pihp@(A@C++FzeFdQyD{FD~o8n;3{HOvC(1o=Hb<&gD+)OTeu^U3OFpG^H?4Ooesz{}>k$-7}SwXTY9*5yk9_kAJF$G+oF zuRCrZXu}L`7q>;75Dp=SDx8}R(L+!-?ETw%SK`+^AX zSB&sKv~)ThBNe=!Y}||`%f=K9AQSIUJ9gCWWzoA~O3OB#19^YU61!7FsoD7i9!1HU z#0>6oC&T@>$|_wI`~y_Z10tPX|GJB*-r}}6STV=SEfziy@vf!h)dE_`8 ziMn~$uPQe3A*~CKAaWF*xqVH zvD3@3MKt385=mw8C^7r-ew{;Mryd>3iH7@T!CW)6kdRMnuG!HI#Weko*}Iz+0l$x9 zqPe{GRF3=(&;V#xSph<`W58h4mE9EO=nAL3YCvxiVoJ{bA`jFz$&9BSi07NlXm@H} zT4uEq`DQOiX1j7oDW?hsaooTpItKZ(2FYq6jy~wdM<@QLj&A&Y9W|FjO#@w73g#Kx$CwC{=SPnh{7Cl6lgiu<)egnB*+=t zJ>lO`q~%7RtdfE+^oM6X-cY4$*!oS804Rz}ujh+OT^Yw7f|qh*TKfum9O~B-v0FuU z&|la9Sx1*ah+YZAZd>>YTQawkZY|3R zCrcud=Z;6vm)V$DpfmGsK6nPU7TSBWCiZ2c>Dv>U-uHV0^eJfbO}OLx)V*3Pk1?&u zmB-Itj)8XNS$AO=;DBwO*gNkcEQ-1{VChnDV6RGIbB3_z#*odW9i(+rqELx3s&E<3 zF|*C_)WZkR^I^~E z78pfQR&1*4D*m+R(Ver)LQ52zl>jZq`M(<{N3*Rqg zOibdsRXg;YJz^T0pyM4Q_pI!pi-`iJ4yVf8)C>e@>8-UOd*J9d(uG0Zfr;?lOe3Cp z%m$2*_OADhlSicXe#Di5Hzk2%ch+glc{$9jIT}DNEW3jN#s4N;%*ILUFcKQWF?7ce z)L3RqPiD)iN5HUCmu8swp`s@ZV_BI>P4B(uDDTO{kDdeVV@7C@;tov-cVuIZ;I|W3 z3QLyG5v~h70t&LI`43js_9!%7E?+Z+L^)^QfBcEG*Y_kY+-ds=wP4W&kq`Vw3mq6K z`mGqYu;M99e?d^cKc{cW_0DDMzjptM8^r*rLmTeY%;JVbr>EZz{crRe`@nCqYp#IK zDUX1<4c_TOKgEQtp&=QRStJA+b*-UBX`&pV?oC_HH0YdRT@ayRThQ(DROnh$J5Kde zHACCs$#bo$dN{DNCaAjIoCfHMv69O*CMTM!mM4TBrpc8|8x|#3Lxz&NbFu1=hEWyk5-TGx+TV2I8E;!K37l12X3)gwKI8 z9Os@0sCcj=uo<;l7O|bTo=yz}t#64>ipS7ub~!sDBWiFB@;x`!9yO1xw0jTuhvWOS zsV~KEOLUsPw?vqs%X}yF)|vMG{*{9_1l6Umh0eCH9SkN;aCx(hQw;jY+oM@OI&ZV1 z7)Ownl&#rP+!)2IkS&!kT6>Dkom}G*Llx~~U0G5}Fngw3Hla{YvC?)i1oT@FpULcnm3;B~BP-90Ot!n2h9=rd`!kxkNye8HnTzFt z$?8kGiy}dH3>8NwFFesxd(;p?Gh&LL^jLLOf7|!UYV&mvnl*qq6IyF;{_L(dQxdNK zH25Sh!wQ&)1yd)*wa3S77VL_V72AtZi>U$o16p6QW&}6Pe$NRTJ??qG=1USG;c5RK zaYp8;oR9c51!wH$?Ue&QJLz%MC+c+T+)w}P79X?GkmaX>co-bdxT621{4M>|=KaEx`^g3NhX@(f!%qJKh)zCm+n@x(W44}r)2x{e&SMx`10+HzHRq}18R z;c}M6+;SivRP%ZfZa*oZM3_+7cIlTpwnQ@;+U2)9_0_yI-vSl?O^Kw&N}}!NOh-pu zM}}Y(-%NWl2Z-K?-D65P)9QI_!Jc0vL?;u+Y>bLn))Y5Va*9wlA%ZDTP-CMo!&-#n zqDUgLZ0nap<3M8tDjaEOCqFa@ww?WR&MB1aV8H$dpkGC=>Hu7>^z%3{n(I@)|7m7Z zDYRouSUqVyViqh|FBvD)p6qFbY21Q1?5r0>h3xQsV#4sT`P-+FXK2~~S^X)Nfyf6; zzwLmQZn0cqco*S=(o;5`swgkUa$wiG{caIF%W=+AqRPDbk*(tbkzxv;UU&6{sgUcnKrDG zHyA}4HC43q;o_=)4{=@?$EI~*6DoVyq#?^SrJ1|>meQYBSq6>6WL6_J#W#w-bVz(f z`RuCFF#efjt7}Bc{_HBIsJl}f5Y=DpIFz*t>jW+wl|0MdxN_A}f2Mo%>9!cUf2ueI zpIx(qa%R`in9WW0pT1v$S}7jIVmptDDD{HdUH%vnFNgVF$vZTtr8?VoYvJ|glC4cB zSHq;6mw|;Dj{)17y1ViwgQL%3`+sf6dWLU+;hkO5e#WEXZorAy+Fj)>F##IwN!?!7 zSw{H&7vdX*e=+h74==`fuKup67Twt4E!CTeWpfvs_>uCGWv5<6ysNS*#}+WPTC18! zV}Fq_RSyy9pNarv*ZOnX=A-`Z3QyC8n@x0a`Hh0~G4h|Sz{a!Uc&Vks3|GYW#~1f$ zSH2FSK^Yu>?>%Ny=AUk;_a1qt*GTWrULa#APz9;J0l=yoj$js#ejKbN!t{z*cyWko z!#Cu(d1eu>D;x4X#6m%!xAw5|BN%=N>n%h<7UIGJ9Z$z2B)eBS6?W+2PhY-2&0Du2 zft~+0H8Rww(x1_g^TTt19w}ABmJx`7+Zln4M6DBO%F`}ct>qTy*8Q44-N=4wjZA!xgmvQE$`Oo9>)vG0KB4i1gG>n56O`;`GTXYvy!+oh)m z=kIzn%4g^HcNvCg@c1k&+BNBbm&1yuKWqL`{K-DIY1>LP>WMw|=2OaQCNsJ_6 zLRm8B4EljETu~HyJ=?TzKmRdRCBsy$`l1$V8(>!Gmg)phpp$o^BV(#`eQxk0RH1y} zqvr-HszK#o7=H_1Es}32cxTzfdAGAT3cY+xjuq6yOD5OdI;`DQ%BVoE^i6b=&uo4G zmk&!ObbfJtr?9WEoNl1hXqZo_(hd?(e{bs{sYz+hUS(IuAh7+5ua$0h_AHsJ4bt8- zVEKLoSJmdSpeL6>KVHWl)WQYaU0&&YBU+naY?F(lRRP5BtcjYxs=w>Wm?P?F@Z?-| z&0N0ffG065LmDFy)Sc|qlZ4Nt2c`|1t0fw@60H6HF2A?)!{TA);gvV~_Bj8tidE0*qSB4enOBK$6q z$j_6IFFlmQ=uJ2#cMdm^*Xh^+(ci=j1UWm)W(jXuf%;q=18ERI<>) zb_6~!LL&OQJdc#k<9}KA7B+yBMy36x$o7yfZ}87cZH+^`i6#mP;UE+pQ~^Nn{J9{$ zCgQ^?rEjR=8t7VNGl(NAm&M2^dcBjDorlCZ6|e!a5hcEbSQ{Dyd@Q=c)-O?I%|-lN z$eCe0clBXk%!peaaqNw=M%PRaA zDx=Z(5`l6?_9%v5P`11rauz#?8wOzwW*t=?DJ6L%P~rG^6t{>w526jo z&Gq|ZUYcV+*D{T)uP^rJm58A<^?5Dgqs~Cy?#Bg?XrLs|n4aXF)qMSUi*8U3uo=hl zN?>bPBt7Bmt<|6O)XBG>js+-5crA}b4zaHo8zpvS?v91$<3?-KsHC}RBIT-@FVVxW$AN@Pw!2>F zzCM_H`c8a9I@#%o31m~eF~W6R3^IzpFmX<9;5;egR98#XLJ9t^k7IC$z2_%h{i4F@ z!6=Y`qCOT|lR!kSAz`xd{J>#;98R$|p>P(e+!PfRR$<57J*SEyAlU)mG)VD;c+ROW zOw}=7Fgm%?$ZKG(JCB)t>6dsp+R~}O6_R?UUeMmaF#SZ-*S9J>oxh;fjRWL@_2KbLn=6a8=%aSk3RA0q`rP)cB+J;Oo zC7l6nUCFaCaT`nubIVvJn)#R&1)UC@Wmy|;$_*^f^7{}W)rT3WHlKI{0>Xt-? zBOf{vY;8XDeCwCcOvY>Y5-$}^mZLxK>iosAuQ`**+ZTXc@W#v1l5hYjbBU><(NE$D zNjj~zsI|H%yEv__cKafJPesPZctg(LD#sELp&#)sr8B`yARt<;mONtXv|A`AK!OwBhJ~VtM-MmQ;2n)-MGRX-lS2W5B`l zW-e3of5)-wsG@6_Q%CuufN>ruo1cbSq1>S zrm`KyoA5UBSltmb>Vr`)X^bSiUBPJE!G0FT4tU59c=}30zO6G^xyIa{jb^%Dxn5rF z7FlJLC`Of9J%wwI^HsYV%UY+8@w4!o z(}MdS5Zn9%Rv0$TrePmFi&jmX5H%f?@1vxy8Vv3v%{NKI%PG<8ku_B#s_|IRb~ske z+r|~xVsgN*9?|crQ{|pUMSfwTYD*gK7pgvjrY+Wlj>uj`FY$OM9<3AcTPPY@%lrPE zn!g&C<)0v6SjMQ^lwS3J7-TZ*#McWsNWmwa6#v-M;=s)HQyST`O=9+dtt;N;71R^o zLxdMkf#ag+7S3x3B+-Bv%?keTH9roi=5?@Ak|<8HpE zODL4h9f0f(zUf3$y12zwfeK3`6)_7hcHF?urcBgybEOlGP^Itp2^Tv)FTn3Owd$Yq zg*#MB^4D<)Z4b%$r}Iu0CztUFj1j7Lm<}Q6?$lxE;al zV&+zQQh6jd?EMCAUc=WDZvGye6ta{IF3b65+m}o3O1%MZw~AcIiq4vh7|H^})6FZU z9N`6@OrXhZA9uf`e^51T&!x2#c$7OQaD_o%7WP1+fBN-la!xUhIZ%in>-R7ki;Tns zh12;^_bYjW$W|wd!j`inRv8ks^hIIKM{cOvg3mn`7k?el4GYbVl7F5LUH_xidD~}Q zVmISO;r|x&IL3`?mW!K1fOOMdjzw2BF}K4{ zC_`4wP>NRt?E~YKYnxOI%&n_ZBny%10hx**V<|mGzz)d7wLO*dRq}8NJh`ZjBAbi& zC6XEd`{Ak|KhPu904zbXCF24LBtm4&@YHWCiK9C%Vk(vRa~_y35Tb`W_6M7797%dZnMr(|l%M1!B8fTjs-)=9N72%9{D|Y3Qq{e=+B1*l~ z{aI04<13VTJ^Gcu5zQ43ty7C$$R5)e5EKVWRYN~2Y)FXaNX}`gbU{bs`a0!3GB$?s z@22Rxa~%3dPN~Y6DRfRHX4=9xhHGy{XdW6<2HqLQEW)odG)uD+WMT0Mhbn8D9=GhL z%2}w8B;O=!^oqI-RwN^wAsw#pwffAG&$DIvwZFIgY zbEU(-f0^9Da?Cmm-zMYnDFxq`=08tz7Vq9YlarYiW?~of^gG=C0gfl=Tmp{w*zw765)|v18rz^AqB*GITEu zrMw^_iDL%B(t(EM^Qsgth)TSFzG-lzI6e5g`-=^*PBcxR{P~fs$-kiM07A+A$C0c# zg})@KzI6{nrR%#_#kI!3D-J z;Jol=W&wOeD~TX!-U8%4-nBIOqrvoF`6+@;fY8jiz5U$eA$OwsKA968AVKvSpu9{l zxlh9$#l$%@G@~|C2m59RpLnDCKRTMwHsxh%t#1nwanEzM-ZmvjO=0W^g}%v+fDp%F*Kv&v#8NryFaG9afCnw+NY+SK`@*`2wlMY-9YIr&O&BWd!di!h`I z!+MBigv?QiIW7hr&-`iY<0v_LITFR&l@V`b?%e9BD5=HaksjqFT@clf7O`@s_)(fe zzaN@2%k7U{Zi4x%c!msW<(h}ie_j-?(A$-B3+;Wzo6cspN@6opZU$-(^9)R`(gUS* z6M(YH?1rJB{g*;&Ls3cc1N;`renqpaK#KQme=z>!%xIce*l1ZO=FklE0f9Kp3KtJw zspjmZ5y9A8_Z>1^VvR4UJDc960P0i}I`&^uEzY2{`Fm}zBf6N!gJ-Eg`&aA$G*D1* ztQBo$-^eT4;S7zy)+TUkN>LPx#zCrpsf|qXuOa)N)5q1NBytMqHX^@X&a;VWBH4H6 z-f^gnS8pcqz+63$dCeR!qI_3#&F|YvCLy{l&}h}*1R+958g*tXOH%^ack91m8j-44 zvXG#;SKe<<7#Y}%i(Rw_B6qVZ|Gx5s%4^~#B+U!n%)z5t?PxC3vqF2FMw~w=*ZUDL{_m8Cr*ZCyO4$Y~R zWUSJiK&XtNj5qlUdCwWDa-X75ASRw78V*VgB~f_?mb_Uto+rwa{1 z@q2YA?IaRZpWP9KCo>@CQK=VB+RU=+D?CZw-60iAO4_M52hyW5g1yH<3adA1LDr5O zKWqtF!~^+S04KeDyFzi@eA?&1#Q#3Jyu!okns})|qZ{3@Pd9Sykt-|3CEsuE?)qLhUaEwJzLCQrk-3N zdRWK{(+S}z4L?X-jJJ+aGFtA-2}Z{Do=C8Iwnr zgUqhYiwf4lSpTh98$3a^eO8JowEzbTpB;YlxV6$@wZRSv+w|Jl8jG=^DVCip7hsBF zQxxc~vU@eAYO~Oayd#bW#!tWStAk`=661z9mAh7yM$i)ld+~pYZ&&nrv(hgcMqJq{KH7ynZ&C@ zKV(0D)S9h>hK2!S!89Zf#S?oD-QnmAE6o6a}w0RGi>lwtS?3hN6W>o{F$=B1=m_U4(namLS(P@S{3KqG*%=R?H zv5+x6h1VJ^oY3_PdHm6!_+IH> zYZsOO!4YBdq~eqyRSr5cFSghcyEvY(7`{l5Q8%Jgm6^6jIzTAb(kD@&bnQFWu9_HWNx9ZtM$bEf^o&J`+r5AjU0HPbxvR9P zV;G~^^DV8+($GwoNLZ>(!~kjGwr&@LSzMI^I3)6p@I;=ben*EN^!wbUJe*Hq>HN;6 z{2k9#iJgjWcc1TI^goMQ?XI*p0g-Zp1-Yj#D5rG#Lr?-)K3d@t$Z?oy$Y?N6HukiO zAp#-NX2G(rn)#)pTCafr7O4;PV;-b(Z37D_c=n$@kM5i`?SXYboO$we5D(_ssXH?95`0*V!=_q6BZ?!5@Yq=# z-{4{%)zz=qcpVHQEHUbrh|^9@*LJ!tOGSs1VUxJbcSbGXeRjr-rvGX^ubW}psMG32X(A-)&ji}vVt?a)ZYh~@yuP7>>zj&+f2`8mllVGQ@W zSl{Q)*8oL{F)-_BD1A66A@d^USIr35-$jGKfym+hQQo_way$L(0rTTn6rXAaBUy4R zaoZdT?B_LknqI4SDpl}T#GSvke;KiOv&mmp9Hfy-BRTJg4VnJ3(4=GVEPaL(G*pkG zORkx2chgTq;q*mcep=eF=ql#6q!~lYsGWs-JW?SUO|8X|96C;M;`9k zki3U;;Y6nwNo!rl!C-+Q+h*0C`mHcJwxTBOX1^%@tbrdbf^sO;C&RDS6{h>DSd+7I zxr+Gxmig?eE8Ao9*hfzjmiD^)3W!Q7pL!LK1PI2U{aYuXH1eKp>qisurFO=*Tnjt2 z0~W3dGUx$EK4X^uLfLyYifR?Sc4Xdj1QI|A{m0;x?Y$ zF~WnZM=JRyx_aHSUh(*SoT^YTV%6aH6}60ttm~jN_=lv2P5o7vU6{8~+=8-wA;qsY zkqEFYQXXwvT3+1Ga{#up8c(%qK^<@*27_K|6@X2>_)`c>AI*a}7 zfE1=(mC0v@mgZjU;EijuJay&^gRK}?Qv!rC@?zLpaSC%}{9ogjEK>Jdl=12$pq;IoXUS5t0OIod!cP~2R7*H?%hD>{eDj1gZTkl}7?M@fg zFt}o>;hHKu)+wUQres9<80WQe(}NKI!;0yg;qSDb5=4&OM@Z2=Ll$X7>32E%L ze`~J?$wlfLC#$?<72~_A-wpP@9`xBo^Xc!XzjouqfsQo>v6l=?%DVZhAOoL0N*K~nJ zmAm=vIM3ackcVFzJdXaDc0OpszctnDn#@L&N~JdaNRE9>1rMbV1KHg{O%i#0Mb~FK zYz^NI>$pT*B#5Be!J)5bS&SB_lXq2WzMIPob8eS}!N~Ax3`y}Qy3)G|<~uEAcEmJS zO%MdVS_e6u^;>mFQtfZG1)b8ae<8Kem2XRUH1<+yT5*VTo`Sq~? z`Bk`X@>SevJnzJTmJcSGjY=#P2SY7qP8c25onGio^+M1FQpEK{B{tc}9qe->IM-pi zm1Fhr&%9aAN767L7GkNKuXUrVcCTm^2bL4x{tGe*(CAQv%)XO}s4O>p3GoW_3cx$i z8&c$k6zhMQamUdV0eX`rKFGen>N-H(lH047U6h?YuOupa4-}jVPqKh)=`CEHV4_zu z@2%vO9OlKr*vwt)UHJ_Io*JHn0|U~vwoqlc#@bqyih~mzLQcp(+6S>!l%CgE_Zw!~YstB%E&&PUsRF^&=`_w>FB^j1h)_GE1&+*!dyZN=OU z1B{IOS-XK`=*jgZRU`rnm`%S~O_)hvB?3cQ{}c(BshZk!L=n`Y_oo%cFGaHw+Q_8$ zB5?{H1Pvm`SKk=+7t}GN2rkVVR4>5%oB1ZHGMO9$?l4%j{&AMZ{OnM^rc}F2;l9Pw z+z+JKy`7RqLe+@P9IDYXj)d# z3e~%0Rfq~*oy0$>rm4T^I{Z`KN~YhWpOQQ2KrWucmGSXq(nYGLfX=^fq6;}A+rOIe z>Rr~;&74U}qt(ip=jzz667hIq@Jw`@vUpGgC#-DqQZ$}EkD*N6Q3VreFQ|C!u;E32 z#4J$x4qUW*k-tpv&en&RCO%AYP?UjDeejp^LG?0&_YtY#9~a6ws`4pQSaMk!<>xpZ z1AUn({!B0209eamyM1qDap-E<(v_j;-8Qmmx87(#EWc7aa3?G`9#zy%VV<00^H;dE zP5QPKVqDSlS}}iUxO6BfF=gwAZai}=b8)xj<4)$|s{ZTC#?L%h&O;{BP1<*@J{7a~ zYiqQT;8x7Cw*;GuV$^)HH0z zLbGE+YN(;4hWDYvx8q}@O)Zy89|?$(!8cR238#~Cf~cZH?@yzty{|nBXD4qhO<;)n zz5-J6<(*IVTmzb^L`wTJ_$K1C=iZ9bS-V}}!uiS1g*IYJ)QK+l^I7*rP4$zX(wjw+ zA4ft&E~6SaqKC8Mhy#09-a1$ zoo=}Xo(DYa()_j+x)(?sV^dtD6q0MLf3ei8c}v2Ec_MW~QpUMV|Ixf`N*xXzShMhS7w6 zikOQv`5@@7a@O6yj9m1*vUE7-=ZAHPF`}R^1TN_*RhU5g*ot$57!MD(%`2Wp)9ZuJ z;QL;)c+oZj-<-v`xaXh!DFO3~gDCNT4+v2_eb2ek zi|#8qR|)v3*E5Mv=$&SVaYaNx>=<#;6CZ)O|2MR$T&TLvhTTt+5DCL zqF}ghX^kVLTYZ0zeSgkR@F#z3P9WdHHs|6`8^hl$cm$*IldZsFMsOI3Aa9Di(z0nk zDRV^2G*8FY2-EJ$RLv7Bq55hI#s&J|$wa$VU=n@p|1ouzVNJgA+b0A>>Zf#zO1E@Q zML=>&cgko+HyfaUk}6%Jq`Nz%q`P6%=OG4{2uH*d|T>$lF=UH z20xQ(s6s%H)97m_|1(3kIb?A0DG_x^*P-cg*Cq3vTAI|U+R_cd@tt`(y}L+wtP#`c0LWZh>18`Za8&J%)G={U7A;}Kl$6c6Pb7)j&2~gq)xs} zLdc*u=Ku zGFK;}MlPOfMNz8x$3~E72dw6D#}&~=*@5D0nww5`zAevmr&;Fki{!~T%j^&=e;ee+51%@YhR6<&@~Jf-E%;)!9}k$p zZ>Zn&x)hu~2!w(ny`j9h?%mV1zR}jczDxE5+QJTi>}Ov<5+nAetUP_D&g18mp3C?L zKE7gX?ChkAb#+#B>}-E*l9?2QsKyq5txsuFJvertYz<;t#WfG*YG1yA`%oNM8&6Ap zOD>d?MtxGcmys(R9)P?{#PxVw=!7E&j7Rrk>Kksb`obUO(eCrDr5P5pGUUn z*)=3Qk|zBXmQR|EM-{-$qi%?IQ9JGv6IO#s!hPaxf$-;S?0xppU|AI-NR-xqf+uDn z1_mVT6YPUEq7h*YdaRK@sPipqX`KHKxmiUmtr0LKUg&JUE*7C@7`cJ9UiyR4BaA?c z+2{-&yWZK>r6<*M0gLRXM^gOVeQ+;qPxK-G25$X03^t1d`mZk#`lEnX>nUcYGW_+D z_i7nEer0nJsiqI=V{7!MDeXx67WcbBOuZy=LqrDN-3&eEKYfLjhBonEU$$QFBr^>| zyRD$R?@gt@jrX<1EVg+Ip)Oa_Jz4{c&BI3RY7Z^JyBYeEy#t}Xjx z(aFcsfHTQ*|8%G7?OVwNfK1QKEFe&YzkTo9MXPY_oQpG)F)uzZVTD=Hu1~}a+n3lT za%q8uuX1jRT-$Azm{|4aLv!GV+iiW*I=*&=zQZ>?P#lpQo};r7b{GEjXYt=uy8wT- z9xp>g|7?@<%l!0bR3aJ_(j@oQuKTK`{D`GGbOUB{E)lSU8k0|IvXWv0&zIroVSX7D zo9KJb$l9;-l@DFptwv|9zX&DlDzTK^hdb~O;LSO%Uq!+VZQlZTpFH1unY)6gH$&DV zGvMlv1Nj)oXeudZ#7}*(jhOME7k&9j`(xt6#diXtdf&rN$BX%FspA{ql20G>-(B$4 zge$dWX-};jWz{0rI_@L-+E#jT;oaVqM|SSYv*h%i_d9i1HKN!_sUgi)x@)qY=Z2?w zWKdc%K8IfJm514z6R^k(ibbKDIVQYe%UgJHF zy%UF{gpQL$StSS&i8+c~UDqp2yurKbf`Zk70UJa#I|4g)*eT?hxr958LOTwE-a8#Q zBfGFLHJ|0u63mdi7T;2*e#&Xdc#$koP5ojn`=zAXfy$aZV7ynqwrG8VZrp6amfj4e z*MJ$&3)O6TGH07`9XGGZ8Ag*|^Fd|iKr#9 znBqoIA7J~%%qym`r{JM&0u?vQpz+DYcN!pBJ_Zj&oD){F>gvhf>ZyFZt-PnXN9F5Md~kBEA^6bC{ESW+g22oC zwEdn53`4>?RP+y>Yt~t%1b$=B9B2D9f1kdy#MWx}vdeptcH19GEB)J?t^C5HtiBW9 zQ!9NhpF=MGG`p|y7T3Od0}scG9Qm!Mq;lg1A|9*mGMnwhOPfwTqxabz?lTh!UFqgf z1*dC)GcT69>Sc=SS=mG39dvCZbJo85F3HM1#q|bH!j445Am`ln{YO#t;ZaIhGcPa$ z(WrzHLlU8$F@i}?&BHU|;VlPC$*p3q33!~&>Mi9w-d$#kYsebpMt|NvqR-R;7aUqY zu)_I&$vfd|Wnga55HVN-;e%r4@ns#)YKMDxS#aBI8rH)hesiy8+Poa#i+IA(AU zf3Ht2QU~$(bi8Eb_n`|ks+uF4$1pl}LDg~EdGXO@VfSY+FMjpkq?a$eKKfC6y}TEp zw-a2g`>)7e4Sy(W06-^QEfcQRYc!^{rnFvZ&L)3Uy6+^d`i!P;$*YmS>FgQQDW`32 z5>T+0KDlF?pz6g(ArDjg?ph%+GL?B)bZIlc5Ox|f1K`x2-jhAPJRM@;$Z#U(`xvW< z6O*-EJ!63t$xQcmBul+|c&c!?+&F*+LD&zeBiYx>7~c(j#4GnTyJJbJNp0|T5IThef@E1Oi`OY7V0 zrddd}XTR%+>)8z$ZmqInvNYnvF%o`%sa z^CQZ{zqiz=YRzhzY+NQU9=Ans-}0NOTW7abr{b&b^4%Ocwesw$Je$)xrp~<^oOoI^ z0M%>5Lrm6#WJnL-#ve`El)wDC`|p~@9=&$@srF)VDkETgP{8NW-O9}kjbzGgc0o6( zs=mW6xGViWCFk#m@WOaPLE!f$MPZV5sr_O#-sM32gF=jGG#9NL8ue*IuK&`e=6MdC zeN0w3`UkhI9!%mAnyU7odslg(3p#3dV({1tTWr62#W2?_q!Oyv&s8g5Vuza-__Fb; zYae|PuQw+Z^+gQ%=1?EiraS6$9NEUURH^9nGhwvLwSVDhHDVrwDI6$n){;hOzo9W= z9QY&8*ok+m4b?sdD2}~a_`zL#A%%gF-dQ=XHbvz#wbH|NjlE=08}K%Yqq76;*#|0A zUq-8#yR7VC3ZM_(3i;0q`4_yd8NuHa$_SD|Ir)20T%Erl?IVnNNoO*{qrfU1Gu;7; zN#rvr)yDPNY5%6(g=pH06slXt9AWDtQcitAENI7i`&n?;)F#WQW2NUv5vO#6{bO84 ze5|o13p{mzJtkWl>lDP`q%b5ZVp2wiKbs5{5Ub$kupR3{2q8m2v3}drvb;(xJ42o% zgI&WKor*bg4~Di6gBGt(z-hIjBDH1^NSUKJrindQpNcgW`nWvT-bcF?qy zQ<2Wz;G>8{c+7fwwi8>f5mgu!`_OP=YpoTnWqjnNWS zUQ>CjEGBB%po6CS!Mu+4``s5)S-&0+@G?1|4i0NLT3MLc;XP6dNX0&9{ON!5)MZ_ z=&m92klR1#JRRmwy*3O*Hw*_qb3AVR|Fo>}->;*i)s4>G`1?i}0e>H+TrXGgRU>1} z%^@pprX}fcsV~gOsoe%`H*Hr)Y~;FpYGpQPJGC-|i{C44=sl$i35gR{7d`IqH|;Qxiw;8y2_w#6Zuxs6-i!Yj=2lj|XSCi~ zDV7||)PSGub6vE4mstH;_UM{K%pAKZz>jga!Uo=fA9=8-#L%o+qRWc>@p2D65oj&` zv!lo~P#nbDCQRb9OP6{|GA&j1Jfnv$xia3r;Z$G{d_(jj4m$ocA%B!mG=xms3Kv=!PjlghuMAOEC@*j88!- z_}4Qc35(mu=Xj>&3c*B;dgr%sGA!FKiEjn;9%zfQ2HxHoFIm2Vb}KseUhA8)w__ip za}w8U;=hvnVGJ0k^*=WYBTK~s|$Q_^ZE3ndKoU@myZv4H9 z>+2cJfKuv|Gj$)NXSDfPzjR7p1`y-3$4y^i{JB73%AZ2n$Qm80M(#CyKE=wQS^_4|F20DoRs zzgS^gl9*yBZU0mFU@vOsjpk!QuLB;gMF1u`ji*m34JrC?O5}0@2F}fK83xTK9)E_J zO_d^Ee_WNBvJ&|#7J0ntqZiy0OeECZv?oWMWo6H-V1j1EvQ+I|e>enff_n<^+|u>U{`G#>>p9rEO-{x;H)!y0R1bKp@H~WvM z7=~g0B6mK!dvBL%=$_~9<)@Ks~D@j?q~PH za*n6{R`wm#PAD?2N%NJO|4XIGzs74kONqDf9^Fn0N7BKSQ|L*< zMf~6C%JXtC9e>Y~{FzwgiWw(nac}R8BYk{UJT^Wag7#Z1HQDtj-NQ2zkcyQdH0ASi zIwpoOBzK2*o5{O1Bs$m(tY2V`SHME#cL`@(xp?GSeFe;o&cqub&GWYBRra^Ag~J@u z%XLj7i%PRSasR&xr+@KeghmC#CkZuUhWvEP`%cD={JSjo6!nHEOB<7A$-O&!bhBG? z&ik)g+h`9MlHb{rx7vz=U)y{9yxO7>h50JJ&7Md=#8_`67=sd2C2@Z_Pn{qSMv8CH|ujG60t=60RY)rGrI z-4!;0H4odChVXg50+yL8sknfn%PFV*N%slQmD;%4gN3NG1U53NDXmM;=VF=;3+X5u zsK3P9EM&N)+L)#ytddbge=Dc=0M}K2i6%M+U81-gc!{Ag|D`zUWQHz>^kjIFQ`Kwe zxEQLOKNkM;!-;>YZ17SI-vSRA5sTp+A)=#66N{z< zW3E(}ww?TW?58;_oo+e8~X9H2Ko^F4W&5b!cg zlh>HGsi}r)#@X*Dr1!~n1d*h4+OEfdPfYaS8brknwaG^uBVnFqlEEuf3)U&7NNAbK zO2g9oTksoRNt2kt1>95ADCu6v_+769G4g(#1U+Th?O%VHYwG+FK;>j-*E=+%b)k?k z@i!~X=q;i*Q;&C{Y$5O}G5xC?GxF&~z+@V8)t`lHuC(isrUGgyuVD-5u&IHT2q!H| z>OEdyzD`u3G_IWl#R>wPmFhg>kYiNDkW^8R=hSG)@=t(i*pcjd!eF}0pyZUL@mjo8 zM0{qo6#3LuW^WOr;--)$$DpC;Jdyv;=q5NE5b*WfPxA~4w&qFfS-(*;&G>;=K-y7I)N;JFYxP&`{g}s| zRnh^?Z{%4%|K+uR?5mOFv-(Hm9Sz49pE%t1yK{Vu z&*QPGb!O|{*2wdxDnadZ^M>O#_t(H~Hd=|1)5+FJ9-TsBV`tZMlpz~Fz7{a&x;2xt za6RMUwHhgso@9WfkjG0pY~Wr;W8|;F?^|yagzL$w5O!^jT;;%@Ne|xIq7+{0WH1rI z53m;niI@{Vb8eMNa1HGfX4=xO>wbI=!9~?M)MYFPH(INH`7dhHXA9S+1auYGZpzIC zuby_Xc3gyW5P#xg26AfXxNZk;8cPxb(7n&;xmCNu6qC*s`|yU~xACt3QK_lEd(b=W z&U*R;SD#5bp2x+rg=c0g+s!5q-xw@I;I^pX3U-mz2q@oaxlY?I=|auIzR0BB6@IX^ zdR{`2t9;3Ka9Q^Qo47>gX>VYk@x(+_dnzyeWvXhYN9QoWQd{wtZX)n9z+~-(h=j=7 z#LX*GPlC&R8f#_CD9y8U>yJ1>7(OdW!DfzQJO!R=-zl@iNH5`<1&L^U??3%dU#WgA zr)Lb6ybs($_?Z!1l{ZQnRh=&okn(9q1cZC2f3Znakmv@48(zEI9oAMEYs@ca4(xeNrRE3sY52 zeiqHN1nb<_oj>=Gz%a?e$O*DU$T>L|^FTOwxSge<9yc`HSU$V?OmXTf#yNZ9< z*|(AJ3#Xiunhck^dNn5@xiKLQ0EA_=Hjj@_N92L-@@(54CF?%)BH28{K#9}6Nej-f#`G`uPlaP80p^lMz8nwn@#owngD-ig&w6F@ z-tPwD$p0|aH4)7a&2OQ1w^7qEjGiyI*)|--#=;!G>9{YXCIa|9SMEoS*bW$##xE1x z3i^YkeHl0-2DsQleg#p`qbC&7-5O=Qhl<4Z#FB&6#SRj2$n?*O&S|Ui{juXP&01%@ z|F%%+8y1La?p#BmknE%qliXh;&H298{b^wfL!<_|AK&R5MbTq4UI`8&+bY_q_oMDVG<*_;;stF)r!9TYQUhTH7-R~LNbUfp0A@z-Tg2xx z0C3EwWwl7|Wc7Nb#Ya0x%r`oBmj8kH>?~34F6IZ~lrgAC38k?Wqck;&m7ek7|yay^LuT}Y(XjK}HJNNza zG28Cf+gk}tp4(Xj!ycfgB#E-`9{}o&W(Hcn%Z`k!RgaFr$rL3yAp3{7EUZaNge1wpSx>&?Jf+@PEs8_moRw02IjiOe0fOwm^nlK`Lh=4b42r3$~imDAafl&_%ApEqqm_2GBx;uwwP0I>i4z@ z=-*9nTBZAdUzhg4kk+y*oaVKbYXd&+h+QmhUv+>$sAO901teVh8`ad*F@OK_J6*E% z-F#1TPtRy31szpLULL_0F_aq^j7;SH~gejka`3x5o z6A=cfI6PvrCB2zcYo=DNjYn5?GwIZ|z9pF0>`*&%LZ=IyS3ndbq4}*=@2|w185>@c z*S+yN?s#2-(2V%cO8CTt&vLA`h&im6wBhB5-%;+)&W^Ox-3lz<%N*iFYMb&xDdmSS zD~1riVNmdzbf$2|!W@#I%jg*3B6GW8vkc zD3hj}Q6_~a38Ld`E3Z2_=^y8!vrn0~BJB*)G4zsTW|w-|WEf6FjSt_ac5^>=2K7gN zKS*Qu3A66%s+!CHM;>kauU6F8@a25t?X96(mWH?w{&Qge)R3G7);=t4oV-qt=1uq2KR*lGWfg5I(MQ&;|%dmY`c8H}9$^=f1GA2jFD0LL{fQ1M7s(HLyaPE4GiAKJ!9QB z=cq|s+@fuV{BXJ1^L4SEecEW{>I-X^`X9-9@nq(79N9(%I+xI4Wn+M+DxvB-s@yr; z=+U_a1Fl&gjFpi+QTvIKAhk)f{`mozTUW#hV__E<#n8#&MIi6T29Xn{3$8;ea`9&G zt~KHX1+AcQijltLWj=~?05M1nz00}8v|OB zHalgM0~t1khU|IyY)kToR=P$W3|Flr;^Lygg-Qd8vjZlo>c84c6p;Sp5r}KeM(X3^ zgT0=ml9JlrbSLp$^;l-fZYhTte3%Hf3UWb4BO}fUMi?bfIP`76Wu8P0#?siY)yqp= zs+@RzD|sn%DmjrcS;2r)yXUtRDj}whK?Yo%r6Szy*8e*!vcUU0^H=weOB%L2^ybA7 zn7MBgF1v>Z<++lP5+uXTyqv%uas+$}X+@>xC(izU^S4Ro$^ry>vU(Mdf50`OsT0{!A4Q_sriBM;M)-iThW zfAE10mv7eA+fwUo{% z8hXaFrJCA$uhm4zgRg_^!;rHsD?Ot`Ahh8&cCOvat6@;zPmvmAohKk7QMM%MGEb@d zubT#c7&(MN+u8QSBqTSJ_y)8d(MuM-@QOMopA`uHMt7^8Ic14sRMoqlC^~K^>5aSMlNp(*Ofy4??rqubtaWDpS~P!?h%sqV!V?R%GphcYF0>qwZL3bwsM* zI9;Fuf495M#xJU{wxbwWEgm%JaQ(GYZL#VuvNp6$gkC`Oef5xe1vSa<2KPYk>qjU2 z08Zb7kC}GT@G-))vA6Jm6$z)4i&rtTubuqhhlj=5({}%w0L`=fMufRR$s$d3Q$(bS(FMsJjdz+(z0T+vCrMm^?WwMxXgGND4=Q$(SuPnnIb3o@R7sGniyK2;&!n9k)JLL6i}$76YcmR9vy<_pXM@>qPuFJUZB6+vz{tJ{58op;Ty9^C^xY20fHaOVsp8nd%%MaQE8GL&amIL+J@ z?s2Y)>8(y&EaZxI)2jy7hhUKz(vOzBIsl#?^a82N)s_i^&)p3tNsTH+xkG-^u7=4$ z^e*Rai;(%$fyYN#6`?Q49v?9sbtOW6nfcn`w4a>qJDb^LGzU>gncTsaDl!7j2yYHa zq*^^|@_2W2ly!x%M>P@Xi&rNnkB4u1k%m~jyxbVmF-eD+&BFERU}{wb)@sD!Q^Fv3 zn#m}Y$KsV?QDRV`<3uw^*6JIBV9Yq z?O~0M1mcR91|{#qYxBWaFXjA#@6H0g)0VZTh51eseLQ`^qf-Bf+8)}5AxymI(P8o^ zbp1j4^ja^wt#r}b?ti?KlmC?0p^VGls6{?fco)mHlGi|)wJ|IEF8Y13uxtfAO`2C{ zuJ~!UTEjz~p`b`|KygK5BVKFq?6gtJ_-s8LwTUYpmKg}tG!YV*cGF{LjD_`PKim_G zYJ;Gf{rr$IUHrH)5mS33hu_@k8u`3I&{xcjDYaA*HQ4iG#X}qPr6es#;AR7=D=Akz zLs98e$I|>Br_zuyv%Ut?71u9H)YaknBs%q<<}5Iu$mprvN(&R8iPpob(f&KaTNQ_JIBy@3@Eww zuR)68*tAd}3B9Pr#`k=N>wsgJR6Cw!VBzW0qUmrkrU`x$z|GU^E_x7dQm~7Id~6Tv z7p?Y1GCEbf_K)8}@~>6k*nwA|)e;jrF;6utz!Lauqw>-3g+w9BPKj13fR{zxxe!2< zCRs#}+_t(5OxHlK@4G6GU3MtojcPh*$YAW8lGq@tS2Fp#p!A!`x+Wzbm!~6(! zhwWi$CQ*{PdIdxfx!TZqU)mz~DY2y3iDe;BD$%n}?|j`evvGj;i_ojXuF#Q#Z^q=e zt_Gz0zJn5aF4Mk|EhwoE*H(D$(ig3tGZ~G+5=3fW9BJB6hK+ZbSL8kd{}ohM$h{xN zCz!T}gyheF?7gfkgnQFW9vBqecueEttUt@dKWOW_vL2a;Pyn6_*x@v)_CU3%inY^g zuM~%I_C-bi!Fv8T(&;g9;3zJl9g$ zvQ&6JaMCa>Y&7<$nqqyUG=BV*9a70fjfFL~TrGKh(TvFuF=7xdY2=2Z%|bH?RYxe_ zo&Mn)sj+c~)1ZjmO-o|TzHoBG!u9Pk-Q?p4NP{a=e?QS4gI*p_IRM#uhdOO8sg)M3 zh;Rp=je2%s&54n;9K4DUg)J|MVEZGKnog%t*TDN}l>MHx#M}G&bl1g< zbQ&_%af8{fvn`~+2sARP`%Zmed*pjRM8wi5XlbEKwQ!lWWsCd!A^$gcyV>LA4X)b> zx^wm>%)|0IaNzX&myW66&b+t2i>^@m9v(4{;%VF;B91eDfdaxL$S0%X24#b(%p-Z7 zVRpYh44?(<2unt`3W+a_0$JAS~!l@R8K)zl&c6O#zOz@4&q%WJ+nN9X=VPnuZ) zh^b{_krLuT8}#1twCs2@*}(obAJy`nrJ*YSlw)voj}n5?c}2B-LGQ3rg%wCZij`A+ z8up6i8>}D=z>LR7;UHT)M{TLrg_=M?Ss;2=DRD)3C zB8C>CUJJ*e8w~q2h%rN~Ez~F&V%q&ld*fRlUZPA^I5dV8X=NGkHt`U8gqMhUKvPf3 zP1}07voN#O+}$tDe7T@iq`aQk&)KMPHex5o$=mg&i30PsKqY$P(c|V&-c3vh8=|S> zwMu5t_Fk-XkG(9X8lU?7AQ$iCq@Xk1uW-eBa>(>XbM;~JPWZ#Z%4fk0kdSsxb%!xS zLfwNjJ%^6_ny$^WEVH?z7xv*?_BEaH_WFKaY*KrOZ(C=@!drlp(HHS2n}ltArdXwp z=}9nHCL^V))02hN(&q0+c3BzKO{OF@<5oZ0^l6wHD5MO;059)M6cyRqZllV*FQ3gM z#_|8R7CxMln@dS_UTu_q7Kn@dv*7O$*2iCr|G?q}=M_?FYQ+;$eP$Nj=wxm8klePx$DbCCB@1h(_F^B|OWA%FsPuOwF+q z$y5I6yXZIHlB>?jE8U{EkaMQJ$rEG~hiE_3iNe6FJhi$0AH#^4IqzA$f6iaTAqL=M zj2WxOve{#UXK3O6dJN`1!IlQ?v}&Z@7Z$6}tcN=84$5>7@L_c``B_M%q`r)JKVM{m z9QT6qo4ye#%`~Rm`Pbpac#hVCX^nw@HaDet-eI(-pCQ5Phvf;qv2J=i z3Fsy*#O#LeRJ{j1Q2v>u?D>Ij3;Mi%ooZgzi^$3UVLH>vsOlJby-w~6-v;-vubklk zcE(2G0aVBSr&Mqt>te9|%7Z>~8S^18a|;uD`#P@oV!25uRSQ=8J*O*f<`QO$ca#?J z9)R=4wu@ls#Dfk=gb&A(k~(me^W-w!SK{RU$0H|Ri`~l`DatN1(fb`^vj3LP4dz!! z@fd^BhLCD%ZrB{J_8s+oV7m}|62CI-;%euU&NXS^gS}EA zznobDxZo9#HJ-kW!CU{b@mL#0!aNtYmK7j=OgnbX1a(gxtPje{eym*Lbh*dEeXO^r z_U6Hu`@i zEc5o*qrs1v_pP`9$&iddWTWGs9p7Sf1p`QLbM|D zEpAoH7z1}2jtbMrKcA00or0GlVmL}z~{1KWd;YX(ot{vhfes$^07Y|Y7eGg(!QnbJ^c4J zfVt6;26wgv`?!hCQ22UtcIAs#du$z<|JD8c+kyU3)AcQapmXT{;Z5n}J7$rCl>O6` zb3>P7MF{!q@`;C$|7l~x%{o!#%6Uy?N2@tWY`%d3f|b;c+;adzG-X$NQC$PU%^*j zu8SWzcj&z6*BJH5NpqzM7ZQ7IK3dW~TPY{295*O8@RakCAb$yHB=Irt<-mjLfMRj3 z@5bXBu#TR4$$@;rY_9&NEAt>sIhzgagY)+dy^fJbFar()dq6oN&7`EkjuF&WNnd@< zoOzaq=Je41sU1M#0a`|P_Jat*AX1*-ILkEF2acD6&u4ZvU# z-z7k})b#IaHRxX>hAWX9_Jq6Rg7WfwT4jq2-13~&UoO0+_1<~jIW(R2{ICD*W~3h0 z!O=7}p9=RHwQi5}Q!uPV4G}GuHGa9?_{(m)D6F7DUb7+`uXdu$sW#Ffw|n-ln2 zB*OKX+ffi^Zh+tsi^*2lISWuA%xC8Mg4b|-Wv%_tcC&-Yy>x;RwWEhghlYmLEg_H* zH$cFk4pv9N^-8=9Ngg2~Y#c#L{Ebc|CslBmL0j_Ex*zHMb+TY`n`eup$_EV7AYO`xT7ja}4U>>>C+lH0wNCBE(x zcyK(NBB=5`rFL@M^y)$gR<7cfGqtz^?a|Fu*bcGOG)k(o?TKp8!bI(AirE+;*n67(<;JuJNPnwPc5ly zsHU`aaJp2*D`B%qwJH@cyX^zJJZx|x|Ah@TKdD@~UMOFDge87aNpQAN%&|T1h%G1f zz2NL^$@#e(g924d1$InEmFe6=io)n)H=(s;!+JuDy*tBIjiNerF?_Btjarnuo_8ij{s_X(c{A?pThJTz>j}VC>g`&iP~FxT z=m_%G@YE~ghQp*bm)yHY(Phvh70aQkSQg4Hdzv8T3jmL(q7RbMs1v`_MdocJWN*}E z*Z^y%+qV3c19jzwJU{S4OE@8srQT@n;8nV-Awh^R2QZB~_lUDj=SeE4)w?%wdLZ&m z$Axg*FN*DFBoBm&TCf(4o0{eOFH+;<B=fJXMwTLEFddqIeX^s6PU8y-aYTNnG_IT-uA0wAe$`N+6{Q09m!&=J z;_18#;iPzwFK>xOQBK_T?>JA-e1UUJw|BY{fut^ovN6cE#fz__oSfUb{W*_4Bb=88 zr2n)Zw?Ch28ehCFJa&7l-ySo$;ncU(C{xS2hYA@&L)_t~i`Pf(*L)+~@mgwl4MR9( z1yow#-xTk%@~DK7AXOm+7kPD`UQxBeB9Z*n%9mQSn%^`*vnv!|?(=nurzV7LXQJQk zR;;?a5mo{D(VQI2q8~YGDZXitW(-F4whbB2jRMl$zwSPgOIc{q(5K!Q3V$~I+=1BD-4t~FBa#Qg37fuH! zW~5hE-i4P*D@dcPO8?RJ%@aG`dX*K1*u0^TC$i;p2gvMEDIFJseqs7Ssg!VVS0FVJuD`w6G&yhU<>XeX>X+kLiWU5mWv_e%sv%l z{QeJ%E`rBLjmX0W#Cb-~A|JTNvOa+E`i?9E>tcO#-y}T3kL_ef2JT*#Z_IA*4emUK z9W$;P4k{R-(6VIgmh4PF5+^S&%r_I@-5%`$LNn;`#nbTNmp8NY5Q6gi!&K+REE4Y? z<`#Nt=x%AlQNkfs-Nt!&6BYPwF6K+1io?TmHZY2@Wf#}W!gQ3XWt}n+d%K;n9eRi# z3E5z4*{z2VWGqca1f4X5%E(2*Kt0nZlYF&=)Le}FFe9lvcI!``T)>lWQI>axdMMG? zU$T}MsX1h{xAPP6lTy;U{{Y(H#$$F;!lIF7WoKcwm|QgI7#^UAAi|b71>DZnEwH1b z`4}X{86-C(Mq4Q`5*CZ?kwa9hff()|pqc(3lJ9H!bg{z<0_Orw;%3d2FNKHBD4<=i&+$-|3`YU#t{}V2q9XjcKOGO3+uN=IMDQk2v^Q zQ_qXfH?+zbUwI<(gazA}7?zK(jgQW|z7=qOy5|2(8sO{tEJmh^q&Oz0&1=PtzXubx zOV_$dZGSz}kpI-7?XErgJdwLWS|u)DNqCZ`vszt*M*7P>NZ7V1EI;$(>zw4uNM1I< zDW>?~MRo?2)a=ek%|qK2R!vUo{O?&7+#hvi)j2aXNWU9QsvZ?dYe902{PR#0MQacR z%fgGrk_;w>tc(j+Qh%Z}VmD(hdEyS5FYahe%h(48bF+@QMg!*EO0HVV>S0lszztI! z8}69~e$TQ$eHk3x^Xp zjS0j>KSLDD#PaX98v|zsI zh{?#ahe&R_>F|I$Jt8R2#0XV4Ize*Olio4FSI?v~a|&7AVz1arT!{uWIps*{IE4d{ z;Usfji`FN)UQNb!QO9AY*Lc<4`Nm${PPa>@8(#d5J*{H!ucOSXj5&Z_=!yi+s-00) zF6DjOC9OZIGChgmK@x>BW$x`B7;b1d05v5XBC%1Zm2{d`bhEbu#m)izTQ&c3B&_kU z;c%wig7$46NoZ^(*pV`8fLBw4}C{_u3+6vOet#M$j#dw1n)b#lA$= zB%b#IJ+1I@7Z@*+;$S%3TltNJebVP#KtC(Cgk?=ozPr04WjHB1A1#hv5=d(nIIf=2KpOY}dj75%5(UQVuRE`~-Wem2z$N3w&uX?P zA}vVryGm-M&H4gu$XW#*@TnY4O!tMuff?HcOZJr^ByB zeSU-6c-%rAudfWoOMLnx`QB|oI54~$^k#sWSd3-(kKMbDMyaiRd|e2u(OpclTu^pk ztuo2`DJf9XocU+L;pa)ki>ua|7c6USS zv>Y|MWz+1^viTu$+24ET1ZD1(rB3- za$?P30c-`rt0@2Na^BviS6XwN@$F*g_BbH|GOcPioP3<4zo~32^yH}Iad01j9YZz4 zb3^Gg2s<9^pDO-YYiQ!}OrD2yL7&CQ zqwt63{yBQZX;lHvT55BFFMaV2p?Y2M$)9$C82rb+?(3InrW@Qt*v)6Z(Z3l;;z`hy zMaOaoQ*oAOxeWm#X{H(?=l0_5K^kFd4R0=|m=GBQY?@D`CKD2L5&_DEZ&yko!l#D8W%NK zjH#wyyxNpXV;$+c{}~0VP5nhij<7ueWh-MtVmKWDw#cb(Ri0&4%JyGi?Y%SWyJDX8 zSSP^LF1L298D2R8keJxd9TWR?aoXr4SoiakA(8I`Stf+P%F*B<&9xlpN^ezVCfhTKAs&f#|^?0+--w zy~AbVx^CHzIuXx%iAW2i{?3bN1iaE3t{zF|){NajSEW<*dho9n!za58WlcMF`6szL zadcF}k6qd)l^-}X4@r;e-}Ew6a0BmRCi{d0rh?D*5cI41I;L4udBU11w$JN0xwoZy z`PyG=_w9i^^(P-&Tk`D|wY^OQ45XIB@S=~B1_lteL5=qj0I++>h0Lx0cvg(lhC6kQ z;ip-3j+m?$6YcLpxPu&zna}1TNs_z&~Ki$&Q>%$7wZhhY* zY0ovvjR*;DNmDxy1n?lv__X*C9EPB_XgO^Ac)S0@)LVu%{r+#6$@zcQ+%3($dUqC{anJwnzK`R6ut$5aW7p^UT=727_xa*N zg#Ecjw$|&vcv-i|x{jz_9IwbY|FR_j#Ob z0`Wv^XTK-2P*W}^JJRdN>`@_ac)QQP<(@)r?wnF^Vmu$jx>Uf!a zaa&pK*guNPA`{R)Cw|tFJ|9a1gD)YmKySJzd#5n>@4sN(8RPBY3%0Ju!Z2;6Z^+Ss zWl>4VO+_jxvhzX7pSoW3yqKpME~58q3nKsfW7@@$Y~~y`rik&XF&|*Hn#pw;I7oYO zl?5K1bIJ^G~T&tK2H|Kmd^bIGK2PG+LO@ji5$18u08*-)hTm^o53T z+0bZLluWs*v*dufLlSJm=B{gCjNZH7fV^Ky*?bT(+h83^0R%)dCSQE}hhiLgn#;Fm zr=gMxgn6@x;fd;Y5Cp8I>hdLs;?+m1@y-r{2sOVP6Bvn_JJ&_&tn}oy&go8aKcf{p zMWn8hjRcxT_tC2K;U1*^wI(0S8!ehl`KQRjUdk4qCFgvr`g%9JW*wSVF)23prPU=p-@$m( z-iTF=z%|nSYO%rPnQ3+U;-A@Paq*dO2PO{HF9hlPzi6(1aa=zmsVoZfF+mXrFq`PQ zo*stdF3FXp+G%&JA;=!{s9+6k`Zt1Z!gh6da`Eh3cYr-G>zkT~taXxVrRvG>32AGz zKpESxV6lNe`phOaB}JIfoPU^=Gf|)*O(?e$4w*^G2ff3!BL4uf%{HF#{|2f>i^F$z@ir8rX>E=o5 z)3dWlXmsct7t~Pj&(QL})~Ul0pY{~1G`&t6QfG8=K_zc|Ie z{?2C0sLLce{j5oJ<$ZX>%_Z0~J0c__xUwAdE)x0>cf0w54}KnnS15%Ln>SzD|7FDK zHm-b}t-*&0d8kJ#TZG>!<{2TDJlc^j2+2I{@d=(+c*+25A1X5))uR|6p?M7zbF>-w zk?|=nOo+jbAYQGY=q~;S5P&(mJU9O>6As^bkyGf_10>_tjt%l&K=9RuNp%NDh3Q4N zl|1Mn$6Bp^2Zwh!p4I2{w{<{e7fTHqBr?#u60~xYKW#Hm;I^&vX_)9MZ`$+ALQNS1 zI?=etc}&wYIzhn`fYiagu_7O;bfG^QtS$yp&}PDh%EYvCHPCSnSSJpY9^m~u;Bt7F z-}VI`Pphkp-y>cbS*M!Q1xe0SYP9jZ2k^lvk%F-n9Tttn3%Pwl`X`jaC}#;+Pw@sejnvq;M#{8MIJ~es>v95t@{<649nb;-juOAyMOgAd;Lk^q`$g>W zc)Edz>ItBFLilUZ)8|_bQnvwpJQ9X1(Vjce$Uw8OMQB4a5)6=Da!KBIZ3+J8Y! zgiqMSc~?bs8-u|Yc;FKNZm$uHfwr- zDS*J=xWvpJHfKb9X!A?|;g4V^@6He&vnO^oujopRS7VR=Gq(k0DT{6$c_{QxL{lVi z#Hc(L>)c_Ltm{6{r&*YJ?bn`=g1D)Uemq5ea`?GmU$Qqy2tVH>^ya=Dhv<6y;Couo zJr~F3a}=hwK|#O$ZK(Gxx~Rj0W_Acn?{ziu@xp>!rFlcTOf@TgZRI~L?~p=iNx924!3nQ|;@U@`9Kco96NitJ4p1@y z)M5R(wL?^gm_nQbH5i+yPn+H%2e4T4u1d5)?lV1iFH3er|EgU6R0uIcB7C=1km}WW zQO3_MXKbpg^U{7TSM_=OPW{sM-fVVt_bQHe;cLz-r}LNtJwPi#Wdu|{+S%Ka{HtUg zj{Nt3YEeAR0m9H<@A+_5bWy1Ut(>-pYgvzBnj(^kXo+nmYG3MJuf7S{O6#Y(*vGrP z+df%<^dO$i`!1W%ji;;^)^_`8;I~H}Y4_C=GC6Pnq8dV!# ztg|-vJLi})1cnW!g5BG;#EbpTo66eKXS5jH6}RgdYh_}WO2qFlT>jcgPJJs?*}8X2 z>HWcfm;Wq8gm`&8jt5J-_dNE)WS;TigooZK`jdG zR&z6omNgnq)_zwqZMDP}X%_uzYV>0ps$5gz)T_aKG{vc}v6E()M|}Ig8iG&#R^_mo z?0+k9>S&tD=9hM8Z(#3mGNGyRl2Qz7OF@K>)xVr>r|+Hq(e-dDEv2Z5vC=C)@mM&o z%)G^Xkf8G*?WHnlNDo%fv;^@vxmwzC!i57`S=PopU)%->%O8Qf4n5d>(>OeQ($22e zQk}3c|5vh$0HTX4qGRTrP=B$XUN70xSisv|++ynX#=CUXbp8^#93L5PzC7;DwcQlG z#A0J^`_x-ovUC2mfaEGB$}J(411chh$b~Xbq=`%tq36+d#YXK@aRx^+#0fOzjK4K= z5D6)y6}6>lU#4`Mo23mLdjH=EQS3eBN7j4$6(60EY$*no&R1tWqj|5SUU5h|*M*HV z^7z9@vtHC(j!g6oShVK$4{>guqD1a;gDJ>X7IITIcrWuin-ci;MxzryHg_NZPMRrQ zb1E4>eE+Xx4?pnxtVvq?1`_zARV{hVTOA7 zkKs1G=GtZYzZImKW@>tdLu@N8Sk(?`O+5F_@j%~1dkc7^B>VY z`N6qXjo+MyU%jN9nUu>35DD!*7DD*OS+8yxPd*Zc&waK`H0;7ps^ji2VtIYoVHH3pCUj}L&n-f2HtBj z4xJ|mx<5J5e#v`wjh87pohPqEehD`B|9w$inOgA4UxV>AtZPI3yoO^U(jMWn z{Lg4b`2Q=oiyFE@k($(>FPz7HU$6OPGiE@JfhP6zvow#L+kO~Een=1nr5g!4I@Jwm zbS}K9^U)k&qW*4PAuK^HAq!a?Y?(CXg@UbdkyIRy5haa z8iMw}ju|%jj;$<>cyrz?c2r}1Xw}7Whvope5~%PEBt}|ou=aR&A6j#oY_bT^*0^sBt_&H`2?n!znJx#emU z8t#P-u2BnA8um{OkK$vKLoyMFi3yTbxV&EHJp5_e+_^@Cbq| zy6Cw6l$WQBb3?HAzYGj?&YMJChdk9%`sQ~`b5tlPnL${p&cg)}LkROhqj{9LL0f}( z$^4VJ){%MCwYxvm!@@t$jio%!!E9W>!)NukwOPkKYq)?%Q1)uhON(BwWRaSpbjcy& zk_??XuQ#5(hH`r{c1@}#63ITT#R~{E^w}@Y&B}&uS|h);J6Xoh|C26sF7y}F8p(f? zjvqVyd=SzyFKyrv8E4-Gdo$sc{Byv zsed=yds^S^SHJT@7&)0~Yc;s&d_BTtSE3svyYqA=`C8w37T+(X&51MCIR4mNE!aih zIPn6Qs-4+GGI?pCg(I!HNQbaBwgvEkm7!{xdvQ4DiVU zBf8c?g&dV!;2c6gurEDEl4)FU^m zvLau}tbc4c*5eRUR;Ipk6VvhU;!QB96#7tCP*WZboxF`~Y>r=8YZVte|0C(Z zAKVfo{bw|1?URGXzGa_BME19piyR&%@573>WAp79&x*RV`aBE?+0AzoU)0%2aSLiV zjd`F}a;&XME12GPIPIfCYNATMnv=9D#d+Wjl&BI0b6%!FGgi~4w6txPBh{LZ^Xr@h;u9|I9UVC{sY+~y zSqG6#E8ifFPg*_1%j~#Hj4ZdxjtpBA{`_~xABhH|_-4DnAQ3m6alvygyH*UnYxDY}RbU)p`HRk| z>T;DW$y8*s-X}N}{uP~ZZy$JdSSpDjF7H_335XyBi(cy`VXN2G)vmP(LYz)F34kxq zpSDKb3XgZU^)iiRaC+$kojd}Rb%9`&xFRZ2;SGB@~>$&Z>2>PzkNvf zB;a0&d+C7NpO58~*NoWI?R{tlAICLn$UM$;734&q$yq~6qp+-In)kjE?p%~Khr%+# z-|ZiZ{0IyP*h<~$x_f!|vMap%jEa(Tk#X!qyi@>W&j<3Qk@dgx@Q@?EBJH|ozV`8a zNyb8B`^l5taku1vp-U4ZRx{H4M4O7rO{ZqQs?|6n0vFyR%pmv4X2d>b1gZCG=HB|L zm14+4g7us-*Kws#<`zYLzT0c-zMQp{sCmb)RI8lbOhlr%p9%GMX=0jeTF42ifY|lX zv7OiQTh}g5Gb5g!kk6~)IF}9zXjh~B;17yWJ%+?b24%sJxECq=sahoW{_!@c4cY`hYUd=$zAl_`W{h71qYTK^83PkeK}88Q;S&)v0z8{HiGUn(*8+J3WX zYhWCw{A;&L>p*O3oY+H)PwTF|m7BLajFBdEVFg0KzRXL8Vw1)eZ=y`gD97uyqx|K% z!?lijOSNAHrER}HuBsY`A3b(n1euu76!WOAoI2sEem~xw$y2o+HZWDDmoTB0QWHX-ow;lOyj&a)Cz3Lz~>Y05)`Tp8QB7*+>b909ObuA$ZC~hiY$k}T>S%ow5 z(RizAWfv;M-q(6av7)o)US$N!W^WT){-A>tcS#!e5^|nHs)3xY71y%9#jws54-2gPne^L zu!B^ks1A?O2p4Bc*nRGY;M#V-`}o=bcZOiup?wt8w7;bcs+)zomN3!riqA>I%>7Lv zgs)u_)Z50E;P?&!i@5_7po@SCbs{t5tOsV)zQ3$C1IOG1-!|zE1&O}K>gElc)76!N z_;NUd|NNq5`_`yN&Z7l^tnckoNOl7=yZ`GDF}gB#Y5(#GS2=gl5qr~;2<)V*scJj- zlSz!K@VBkox@r)@0v+c^EedkUxDo+GCt^C4VgX77>`F++U(!q!ODU0ULWnkcizU&yg48Eea65e z<+kp=PV@$BXAFBtQ)Lp8@yu{`Gy#}1Xx}&M8?tH);8=R#M=umq?Z{v_fBoM*HR0%p zOImZ=Z!M4BT4O)Pk&A2%d=*yQVsiu8bx_W5lFyfM(Cq#E7q1OItP09C`lR$zgZ5M1 z3Ee*OV;mzP^ea1N8RmQ*8TkkGLa0uzYvGOL0F7dyl;4Z5XX=8{CnuJuksS3GD$Z2P z4q6ldL4?u6s4n-w8ye>4y7)(`@dd^Y=Ed_jiY%1t6O9M~Irr0cYE$ux{!91r+~&ao z9(ti_i~GVKFHlTE3EZVwCxjNdpR@CINbp>@Mi4<57W)U#^fDbt3E$rp0G&ct4k(9d zs1v5t`X~v|MLWzi)5TvdTk-dF0#rgeZxknDI{g`^==O#prp8odzJDIvHtc5@A2RxG zJhE$wWEKaGIa4hSm1VI}<+D5`ImwP&5_j31Y6$eMsqFiDvfFQ5w=8g!gB7aKbvD%i zhlfA?>y4FCzcAK5i4vhS*=z)Q5b;NpGy*9X%D&NdCBjS#_~?tUq8O+)mkE-sd-H_e zp!FdbhQ>Iu!Dte^0nHQEs41ER7ojjhoYCwbWz+8GZ<8$_xDp;2HJt5ryN1-dHXC;UAn1Ao!{8kco@io6*;aV&4$dJY^R}r(-M|RO8A;i}A<$Rw~%pJT- z8CoDC>`OpAf;J=9SO5^Oab_~FvFhDHKhRnxlZ#|=#yP#pDHhGhf*K9$uG&De+oj#0 z=!Kl*nL;cnuf5;aqfE_6250G-&&*bCS2ms0N8`@!yx8>;P^l0Z3XtvWa&z{m+*9KQ?H0o_g7G>_grPT*a0=N}oP#iwrM z8#$Fcv>6SoX#eyY(Ax+Ea#_BzlH<-B$ia2)A$8L_YO~Hn@{DxZ^Ty2#{iUCkcP3H@ z{&6Mw&Y=71+y7e(%a{?w8}?XQPx;*;68-z{z<+r>)%ImRMTxTOp}%}$Q;X>h9lq{z zzbwQ=@U-k;_D$R-Av;c%UPdfH^Vx_d$@fjN8w5JhsOP`WB%e=ySblXnMUdP=65pbK zE#LY6f5C~?u5Bm%2YY4D__$@`+E_u(Ot_pPNzFH!|`vp-OU^6_s{XkI5>j5pY$ z-6s*!2TBjp;c-L#*A+v06aujeC}H=1h{W*X-@ejtc_oG;nIr~k$+~YMGbbNxE`Pgv_5~mZ?2yOg_Hm*`)`r4N4BZ%qZ#LeKx@sPGT~$^@A7n>NWK<);Wp~x$ z{}nZ4l_aWVWBl+gr$ii%^-I6Z|n{i`|p zdMXsq`ENW2sKp1LwA|&&k%@B{SU;o>wlhFk*$iEW2kfzi^y@fL$kwY%y@)5)3GHJ& zO=NuYROx~q)nwC3rl`*`1yQ!QPN0d{v^jli;)h#|85g-zP{+p0niu}?4{-B%FTEV; zl0_kj%(r0&9m#hS?ByDrfu&+(Y1sb=Yzxds=v72fCF-V2!wqsRTxCCCS!@`j@!7Y( zaxU#zWKZV6LZt+so(O2d8u!%Z6+ilu9|clv{Y=slB8Md-BWnN{tc(>k++p$EI(i)m z=;rw@f@e~?0&@-sq{%mFhn4Fd-WA=xjmqyq^RHbYLqZBysx`83;lyj_(l$dk)?V)@ z`KQ=+Mb>or4@PVnfhBo8{GH`4(Ob_J9TfuLnlDBY+fQ0WyH42sW#h_6Jjfwj3{n$? zOBEVq6&^KG^9l*gJptPg!W>Neu>W;2mYOJ8es1q1 zNUs{9CU2b&bLyG&pt6+FYq+L}%Cs+=4i4qR5_)seaYdn7|M`=r=YnDCZBSKTpEf8% zhV;Ef1GHC-Gc|bJXxJ_P>XU!~o#x`iYhQBK@@f*q^{l%)-zz~%9fJV^y9Yiu3zxXM zCA5f;@%dWPj2zXQXWvdQxW0C;dX=-iWIjo!mcm$s@v$zeD(cJ!O^R$VimYoz9Kkly zMZ!6B#_F|m%&(UoF{WwD_M}GH8INVwdTte%_b9|h#*Ji{Z9yAexf?9b_80T*031F7 zi$Ye#{uF>abcD(sjK_EVK^BP;+Udm{B@=P{x%L)>ctHM&5L3PQW3Ozh-+jL7tpwXJ z&{pVoK;A>uxBBfxN@wUF$@{!JsyM?1o;Vh|*^qB@AE69>o}3>1Ie}cJriB^HvNa!O z1vC2lkx{bMO7uTuDRXx3Lj_Q+Pttu2hnqcsIlPOQv6bYW)@$5|N z{_IPCn^Vo9tMsjA!C7Vw)keMt|TNyIJ)E1-1cz5cD8 z5XYsPBfd=6di@*H*P8xhC!<8bt*Ltx?-6 zag1fr2m%tfsgK|HLC2Yy;jTFsRkdPlKH<+h{-~ewFShj3sB-3$E|d0fgDl`;`M^?5 zQ;NfciX6#*2E9m`g1ysDt=)&EmTih7ObR-SKAokSd>iHe{}dkq=jSTf#$xEP2a19X zpKWps^~mRa89F)h#bqnS$3<*Nq7ZlR^uV5D)y_>g{`L(Lym=weZ4^vUXXzJ(7Vs?|+uX8M zG1>Dr7{6QL6GampN4|2i1RD4wU=yE$$7-S)ybao|(S0>rTbx*d?I`qaTF6!@L8a4QK!4_Tb{n0$D4RyIEce_M6Uo1*X7)YrXHmSG?}J0nXNh6h2Fk% zLL!yhz{K=LYvL~>8PD^(9RKls~X>}j`m;GBg~SH6GsQTlb4yW)<)oYlC+T%b;H{vNGC zWM>vtrXTl~P{nqDEIjdhiVzU*89zH}ac1#Fwj{a@{{%@dXF@CVT0kkoi%|#rWH;2( z5I8T4pLnmm&eU#DjZt)QBp#+d9OvRUHSLHGJ1aRU0^Px&<6%UcH-Rfj9j7=OlC?7z z>8&L^^7te>VLb)B62w)2O@I+`<>IT2eV2?z(l({|Ti1%`}xcd;&{kf^A@ zTd#W7J^~|r6ejNUZgHZ7Fi3FK02`5tO0NUxk_>Zf1d4~qgiEJD{5huN;4!ogpBPM$UylZ_mMOl56|&_t?V*@eRQ?voSchw~Zal4&{dV1%Qr1Mt z_WILX#m(Jb*RXarD!~jbnlUqqUuR@bU83t*m_@mXmvq})9M@j3$u-u9AP&doL3bh7 zLlvSCY)l1`ZxgytlrY;3$Gt8}s7R*UwRqfme-)(j&Zt*!IPfN_60(@^v*EAe(WMPW z2y>Pc7cvLJ;C&9)fWzLHC1))*6i4$htJ?652pTB8nTcbJ{>FL=$0Lj*@O#-rDGnnh zz?kLjPTH2KYd|Nw2P1-nwT22I+(9!PBc8+4_jTBS#WCz> z1`mJL87&3nen0wC0E{8rQW3xM-mcjk+`L|ayy9Qw{HXos{FwvcZlA6t9W5+cbNa?5 z!ouUQQJUG>GM!2k^P8!Pjn$`A6|i3SI}QZV*- z)zoi}s`VW_!8nqx=W;s^RiYbtAHUB`#54?@QVcl;M^V#s`6yXmew0PwAf3#a2VE4$ z*q_pHI1P~r?j%tZzM(}aV*X*F>*`C$&3MhQ83ot@51=K=upjfsvjZ=WYHIx$Yl(=i z9MxYc8`_Vgj{6?cdns1%RsPaS7_pA1zNRh@Pavez@_1&watj)L1CiOkOvBh8AY4M` zV~wN+f|n6ZVpHq~qpG`StNTn1?ZIt_R(^JEXPkQBnJa_z)H9w%HMWOxo2uR1k1O}N zoQyrObCdhZl=21+Aw0I*+5Ww&v6WhgBJv-Ewb{7yit+SEB1a!D@G`Wuhgcaa0<@jN zg`WWMM?0qrFi64zA#=|M-Ld|bmFKAM4sHOvVRA%VjlXKyVq=Z07KY@@7Lu#ET5 zNbcWYzzhWt}HmuF@6cWDS2p zhPh{R&ayzvrk}oRG#Yi$kD}#GAyqh2=DqU@icYm>(pjBGtBAPe49CZ~MA@N26qTl1 zgx^y|KFpYSV$m&9Vs|5$sf+Zb(|59~xzwQQ`kv-r+_?q4lNyAcC$6Z2?gocCujKO` z{hH0&eWw%_yhLO5rNKyE@|6Sm0xX*4)70+DIvJVERPlPk&ck`}$fRnoQcGPEs{IVz ztw>g{VR`&O?nyWe)h5(r?e5uzn(sb%Emp+)GrxLd^d_MJZAU8N-W8`Jr%C6L>I(8Q zc;jP3^rmD@Kez|W-in}Se0_5=@pUs|z8hPG!iCbnrKMJ4A=in7i3Z>I-RxFjDrg}( z>%lXg)^UOq=OJD9;Wt6>)_owNMMgfCSSEfCiuVX~XeyA2N;>=6Jj;Ll_JE;WATaZj z_S&2Fa#r#foAA{Sy0UuV_xwyQvoUW5giH*o*|B5c*_d5_kvd=B?;5gkly;X~2O*ix zdg`&JEbq8137)OLb*D|(a(|Di{O*jl;Nf16$GsF{Yz&7od9of+R?Se48ItWL$HzM! zrjA{dRYrW%@3hP9WJ^V&v0yk}Q6_~nVWbn~U(<2#$MVt0Aq_`y0FeTEW9QVenFdZv zRDV1`XtlPFSa3cVqlRz3>3I87HmeRVlVKSkV0{KXJKbAYiw3|J?}WAP$Vg#(YBu9` zM#QGj(_z}5jwR#?$r4ULbJ83DTXR&^*G62U>6^AEIhnjwW0xth;ppXSmjg!Y4*oo+ zso!f7%MNj${k!Kg=jC?^75Pa|LM`2mL)RlB6q~jcF zjQp%5?L6s^T`1{VMvA3pnlTNP7@&toe)(4TOg2%}UT}6NCFuTfQ=Sh}?O3d4tTRTl*XW)tW~-6AcGP-hp+V7)4xLNpJqJL9s>cZ~>EV zf{Ea{cuG#}s4hGhw`a#u;|kil!z?W8LR{;@+KnbTImobL8W9)d_znKRy#r^j>0t1% zx#G8!mY{{hfJf5tVs<~P2YC97LwWdZgNH?i^wK*jWye<+3gwokPe>+2 zd(F;NqZw0Tl&IzB0x@-nYWZ5HrTx=7NECbgL9z-z?;%QLvHK2_b>qE(RoT{%B@$cw z8R}@wm$Jqtp@CyHNl~Qzo(MbpKmjlJAtoej5)h0uKPt?PkP;bgB%587jPzMpWB%iT zB4Gg1&Q$WRo?d00-CLZtI#CdUI9RN8_nXVEjRT51tEa7MTo(==>{v_%InUO!4eZ-- z(~Ng-I|a%TEcS0y-fUjWI%*h1lr7FDMmo(*EkmGGB~wZ>Jb)guI|b|Pd8BLF-piT( zMNu3J=i3tuS$S_qP8UFzw~SXXi72oL$9C=GiENMBzw4GMl3r^>?J6|`$cAVaNEA~C z4ac3J)fk#CxY`NrG0LuUe@E%9nqBR#|MAnP5%7i;9s#!FSWS*(>d*UWHxV*MWeVKm z-Fr$C1M17~xi-e2EWC#BE8{wU6fqiiJdpD3I$d9h zrtdiFm&al6oFa}-TPU9vQ2ggWo~b)Y*tw#Hzf{{#8C-_%C)1 zqETvi%@K<1G9T|8u_@A>1nzu@x&fkYb=P}v#yb;R9HFfg8a;U8FOLU;WKEqd9|exO zh#U$QSJ^xmPokQ%{WP3?RJsjN=w}D7`n`@42kh3(c!g&BXG}Irk96eij8C*g`A;KqE7N%7^qG<|g<~>S7eCnXXxI zh>l+R<2DLN1XZmAFxr!3gg2T3bS`oVRKm}ox>c^W67g_l3>>nO>@Cvypy!Mi^Z|(B z4Bor~?S<{R2f%Jo`NjYvh z4zsB<^EbIY$Q3H6uH?KMo;to#aRu7{lRpbJlUX z-PHRx@OUH>zjbvoaG+n#5AuIG%t{T*vcUjADI)lx8{gGuwU>B;@P$$9d3P`licw3b z84_6yl2*bWn{1BZ(d#}V108iPt~@E;Xfh@2zub*v_|lti5Pm+(9>1Pv(-AXycEi(J zI*Iz1BY~l?&r8PoN5aI*UR=4(1=j}w$P*@)f_AvVLdA2yi7BU(akWQpM2hdFA?``a zv%igx)}PAw_p59N1u|u`TE|gHxpI4Odd-=8q~sUSwCrU%MYuF&JMRVGY=z5~a|V5b zbZwoAs=}<_pSm;~g}26MIXeyfsPKuvH%E}Q#j8ht;ir*Keb+`Wam~jdXL(#B5%7BB z{a1x+JFN#tCG8iwXca)xmy~UtEjOEwZqxXWvu^>sUa zdTaaANX!4t8EqCo;o|`OhKt$#cDyQV-~nuXbKA<`E_*g8!DpZbxZG(@p0zM z!J^%LYPa#pj=;H@t9Gk)`@g?<9c+I6OH%{|J=p1j^~Owd>%7ces->feR=C zgPtj84iy}snY*lXptFKV;#v#ozkykQxJ|oUcig%LULB(u_m?cNj!mCpvr7I(2mCeEaB@lEYTomXivMlQ5YnsBGC% zV;Njh_ScV;51+ez80YO#)fU8Wh1#1@vSpT*a3P{x)$<==ZPTfRsK{YtUv@osx&AEg z{IE7{tL!VrSA9=_6Y}4gv@<#5mlIV%!f3!lUM0_K{-PBSd>y-=m8K@Dp8~z0ow2m7 zb3EV7xv_hN4rN%bE9ZIlic!$|Ll^A#F{?zqX?xtoPo6uj&dC>~tDN6=V!jj#>l)0L z!*AToR5_I#(8IzrNMGJ+Yq=>D!dK-mC|O&#n(HD;Kl&+SRy9cL#;z{l$L>hbC`ur; zj4Tz4!g~MwH5cLqYYw@dnM?x);NQD#0L3Qn&eT*4%aqEdviI6VCY$qjwyDcXn9LiJ z*w+#F>9vV4xLk(?6l0k;3ufIQ)xJ8M2_53yFMrp7G;F|1gz=Gan9pnLIcTkGn%D7Q zwQ7BNCsfK8!!%5-R1>57&M8YC^mv$>{eAu>VVtY&R0Vomrwn_e1^6jf`<`xp{mAc} z1Pit6clbD)R`;}ODfIA~HzT1Yejk{p9*Q0R}`MO&-l&qcs|FjRR?a>*G?4xXc9(fPKkZL zG{ABn*8~36s~mjMddU~}iNbK3!`{8TUQAShi)K2B&c0IO8R)Y{TVMzmLV%kKaqK4_ zG`_^&lqkkr^;7a|7&9`(c_6=}?Du7=?}D3JFxm9=@*CJ!oCZR}yj$HayK(tY|2n?W zqkYt~>+E_U>#ls%v+0SS!Y|UVvI{k^**i%|TPG-Gxr9M>&-QE8$=>aW-;-F)sL~QE zFB)(%Y!;040k^HbT8;Xo@0yPL-sWv?`x{^XHH`*9Kbz*(7k_I98l}lciJttV0X)mD zFwiSH$jDEQA#LU#aTnGvBYS=U6^A%=maYH?B}^LH&KR2k-BnH7zsn@x%fKJR!{May zXR3$31X_z$gOS)|%B~#&P1ci!?lqN7Gz3X%ft)6cWT)yK1$N8!u3i;&P6Q2Gui7QM zRd!?NO}nK)d_6dxl9jsck7N@!AC^MwE@@01Xl163)^N#-e7a;tJ$LUQGQ$Kwf3G`! z?-Jz$oVNx)z?H+W63Z|i^;L2z@&$#va~Fr{E|Uc@aJ92_?n^E4`4vMa)rTKtm0G8f zIU8^@r7*W_cFGnuRo#}U`iZjaP;Mn+l1jnZ z9be%>{$bVnZO?#qFfxTfI-KP7KPU@T< zRy{U=aDxmhUCg-DSXnXvKY-G0Bol#Ux_<;O>M!&T+*>H}vSfzQF=sT=AN+3`p9SV* zK`E$Hqu%#b(tsVqo^n?zZQ>tn0!& zPNbppfUd6-S={6Aq1lHZwgSKcPkCNWNf6Dd&EKb^XLQbzR$hqrEI)-S9)o^`PPw-q zXd1g_jEp~Ib=DW|3FqLy*c*wk|9<_dW=8QLwCs)`?sHT>f8O29D?yWFV`g1+NN{J} zZuSb$TB$!p-;jv|94vJTn3E`Te3j$vzazAvket~Pe*Kw~u0f+^x7_O~rR=;D%cn~H z9>;A3&(_*Gp9m5C8n1pN?`B3@iaUJk7MlSyJ1Oyj%bsu?A&^J&N%JT2bW+72DLbdb zB*H2!J3ocm-d=xPSTY@S!LFIDXMd4(ECa1lIG(C26bXJ7gSm%#S{A%xtb2d@?D@~Q z(|Mv2L#>38tsjDjnLKy!Xi~M$>*#iV`I8>bKKlV8?l7SSTHRHV$zpgdMlpdU5gTTBW7NE4b|} z!|?jgn|3SfnZ3$ggk*PPu~>DPWS6ju@DGA*?>7tt^p*HM)s`Y`8UI6VWcNTLkGhRI zD%rbQB}-9`Cf`9#>?Z>0*Yl)@%5LgiXx6Ii+aDt~L|XCLXKG>*JU-`tV*zV^;kl0| z%tY_3a*h0C<``O;(qmJ!i#DSW104xwIjH&em*P?l#n`Q1QD|`kqy7@L1`;2sZUkwR z@y)!Wa^lA|?zC*;Ciy4$vC}U6nnpzt>{E4?+(MZ}GRawCQmqLFuGxg$()o~ua1Amb z%^TO1x&L&QvP&m{zZ^CS=D389)CMSm&HfOd!4(RJ|&Os9M zR^oakTj6_YK;!kOa=NG6y16}Pvp)PjQ6s-OAgu%JgAGdfPom(Vi5blK@QfcAa&Vn|{w0NX?#BT5YNwcQQW?bBk1Fm`b^aj*4 zR&$J$-pKd10+-+qKwEK~81=lHLC%dD@aj8GE6}awOCpzpHd0U&Y$`;at}F{BTbH}m zmBT#eI>h&%5?@MS$>L4IIpeO^YtNf6c`Z5NdVG)z-u2?2I3f7^Jzt69dO`rJ$82}| z+axT^Tpqq`?g1@cPZ9ynnQ1{#22gtympW*EKqle^E7^m~J6g=GRZH*JjF5Ex;~T0* zbB`v_wyzE*o{8Taf4Z2BHUfmdZdm4U;=ftYi`-e5vh{06C-LkUe4TcOX790@(Av?t zRz{h}T+6vX*{lYQ?=8#zh=Gr!Y)5jt=@)z|3y-4#mP?!o?79}bOutOUytx^YdF@+5 zO#^=ur4Mraqs}gZ00@$u>%n#xUTLv7xXDdk_Q>26`Dv)b%W7xUQrH#mWUK98o70o|AC2>wU{=uHV+G9L9(&Az z$wtK4UEBpHo}4CfKQ|=8RnfZJma+TvFF*$`I=XEY%V^U|(xA#f=;UHkqkhv@$Gxyw zX%)Ny>p?D{=D#@LaO6d)#ezpyVS79-&vZxD3y|rV%2V;nA81-ULq_xiQzmI?WUGIH zE6Qe*sp;`NsXC>d^OovGGSr%Y|HKlPI5|BBdP70vzfC;qCi8plv$HRndsJz2!IgQ& zA|=%2Ov30Fl9V2WPo(LYCRr7M9&^EI?uZ2$N=+$&w3mv_jycukU!Q1MWx(!lYlv7* z)_-b9QcVAR?71qmQ`48{QPLdrP|N#XW3k1e2SmL1R=6<|^26|Xz*C5hxn8l^OMp!o zuG=|f`wgvorIHiN?1J8*O;vjoJmJz`M#FG#+;ji&%``>The5w0YkKk09<3ZGTCX=Y z$BnF?>T2l&%rJrhTv7-Sw5)$P>Z(fiw-m=*53!5wV|LCl*ZG*h!dXf>q$#$8q$g#2KlI#|UtkVFG~l{FElKMGaq`THe8BODBcJ+w z!DDB!<~M!(T06nnJZn9clYTrPB*eL_!BbzY$@i3G+x~W*?B<39X*1kz^rT<5H(v8G z_llkRvyF+Lt?Ek_9#u`du0NN(QrwRE0vOP%gIO%{^1Fbtw;c>ZJ5P#06A|Nc@dm#_ zTQ@tJq*h$6vfA^0Raf|Ali2J2O7pREFq0}b2%ug6sUu1Ro7Q*oPw|lMGuECW8yvPP zPpL$w2c`Nz`YhGPz$yBDrEC+`zgE$$FDm#<%7Hrqx>iAkzg7LU94==5J$72XA4Urc znw&#|2(7gB6Xn?jx}6V3`bw!c`CIMfU|rw0zm6V%VLkI1=jp3d+LvrY(>-jW1xCtD zD-_)8)eVjZyeA)!*;F#vO_Zb@o4Xb(+7h8|64c0FEGJJJNfh4kSPIo>s2C1)2LST# zBhNkXz8z$h8B{miI}w7n=f?Heg`4i66nwHT?YCbK??HE44+^{kkUN|Gm6wXDrzwhr z5cz8gPK~rpTfRK<*;o(hY;y2UrH+wqk)4!NC(t8K8$VL#+P*J=x8t!Lh!m^ z!>=|61*{VV3cFMBm^P+i=anlHJnfYt*+vqxC`>832J^FK>kH_DE~5wY|FHE|aZ!HX z_c(%r^jiUGP!W*sj!{vOmhKji?v6nzY3UkDdWa#UV}JpMM!Ittx&|bNf#3M~zW#Ur z3of{t=Q+eh8+H2#34sT+$)1yzZxV^K*puEpC{#s$4hE(23Sy zz;DvD@SiRbmP9a!FGT}g<0jo|O8HnXczXK*j`bLAAKoQ~F^+)=j^qoH*cztA$2kae z5^Hb>(qf!9u%Db=5b0>P5)RNiJXy1z=Z*XYG11>*tbI(cJ549NuH3QPZ7Omqo;o`4 z85O}zsw7apFOQIcv`tJUa%@-tkJ&i3|5y zWD+wZcR8=pP&2Ml?B5j$Z}CAwII?}W__1@@)tF5+Km*l!HL3*JGX7+7jI{9$b%)29 z#@gEvuejHXNO1V0g?_{zgszben6R}_|!<}oFYnk77AGJPZ3H8p}SWWv?h2~ z`l+*~0<18&jRqe)cl?IhJv^@RxVuir; z*Q&zP1QmA!p)dXEXLq}exlWBQW7EoiMKKGPXkF(9J^N7h+dpDW!va_QV%g&mMn=UhoC;l0TaYpvZREVv?e*}X znntKE;NG7JSI{%PGA*{q>xN??eO>BDkONTcg z9=p>Ar?<_Iv2HOq(a-pLVfQ!jE3N{D7pJ66cJrzZZD%G2-O@%^Em-v5#JuiF zKaout$+x>|em73_;Q)S^0iTtF1@V})uYGJf)qLZC)u*?F@0);h_vuW!h?{a=U9C&{ zhw8vV&D;>FMJla{X`{Tick7;SOhr=FgaL=9IK-oFIeQg|^3uP=BNgm04`4R;^!2QT zLcjTO*=P;Pz8$CBbHO;0s}MJpXymc&f1fqa(C>V|k48TI>mL}P+$&tCvZt9{WRyuk zR}Rs!ueq5XhA21FJ{BoI5D^p7fBJdE!!u;jNRWxT`T|mNgOP`-iKr`>(&U|)pmp6J zk?!SQ1+0M?OjCMawf*tHo5wAQm&S5uJ3E~(r2>4GO#b4QdW;j}SQ5Z-hG9#-IMp~T zFdY8xR9xHYS4KDyWG5e{u&Xz{FHpNr-?Trv=rWtV+8JjxyLQe8kS~ckzLSAlKBP9T zK5T+m4_~ob z3(}7`F~eB|YtP9ZQMY&Y_s*V?;_xbM{-REFPN}t{Uk&xY(hE#zwqz-3c4hy#bo1B2 zc2y(C8_|mBjG{K)GJf1R^JnvRhO@YtU{XI+5%S4aMWMfT=2hQsXT@F9m!R1{Nac`@ z{5KKJollF!i>*)`hdMf(tvZJ6FxiP1X@=nr+#glf)5;4x8dnapw{AWi4Z1V8Hzchy zx{zxXcd@|)5olY3LOI80ntE%+rZ;8n8+I@08qBMF11CApFZX$Z(&{_R{b_LgbBiFX zZqCoCR5!QFcuQP<$qGE07>v}_ts)>P-+I6)QH@*Y7vt24rKa5gu5J1EzZ_y*7sjk$ zhljQI@*K9TEL7I@cd6OwcvPDOAIg&a97xKo@oY$)zsJ^j&01c>yUw1pDC0RC@g0iU z#($oFVq28?0N=}lg3l|qYi0TR1EfibOv$xMgKwn5BeBl;H6YzZ1ya6Abm6aj9jGz4 zwcQS^odCYj#lC$hBC3rs6f+k*$(dyxlF&?SUh1E4YJ;2B8V>7Pj%~Kz@i@wqW^k)8 zK)179Vd_3N*s3B#v*v~C(3`({zC4jMLFoJ1p2Dh@s|vGh#*jpeYDZkFsmZJMCU zrk+IVjtKI2OXQw=joW#%-ftg{e-~l`3^9jZVrm_8FxfY>wp`5ZruoP(NZvUpqW4W8 zCKiw7>>1A4j9D*#wWXBtt5~A|S{*ZX(S_*Zl9Rbq0ke5Jaf zqT+;e)o@_JiME!akb1rt#3$Nvp21y*H4fPy*mO$M!7`In?;j+*vZ}5g<_kzIA+X-@ zs0|kS@|P0vI)t_#3(Dgtj$Dj(<81m1*COt0t16B(>8ZSpRKK#R#Z3*XZ4|Q0l!&1+ zs7J$U)^UD%rZ1OBQfT^eEFo1xrJf(TG`X;?=ap0z3lj@-S=rsIu8=bvzMA7~^e3q3 zZU7{gAK6UFx)zC^X)g#CW4GAeO=FDI0sG-GSxJfZ>DyPUG5aa%@Y3EYTwCODd3lT= znI?+;ZCw$c~RmHTkJnvofAbZ0n*pP@K$0yX12>Z6i6D?f~Q^Jq6r zTX71(Z8;6<0%8$d`ZdlUoSyY=+Fl#!;KUZtyvyLwc+5r}nRe(>FVSe@FE2eIbKbP{ zCZ%o-Q2CUS5EnXZki;*ZN25wN0z)4ocM#DA2uD1>o>u3G-%6hV#%auJ64{ccMRL1W zkW!CgVHYhH7QNl_;G;tX9(_?2^AImyS`IjTm98y1ut-`Lltv1c2~8P9Gr0CCBXE1s zL0p@E0}`A>xyR=%N(Ci*6-l*&+M}tFy*~ee5Ovt$pmU3w!ri9JVMq zUQN%o_jU084k2*C>5NL*Hk%(rc2>z(yTWPsy=6ac@pL}++MvxzNT!|q^QBME;URUq zAD#*DOr*1K5d_(*v zx&KSq$4~CQJ$}$&G-XeZzG%NX66deIVAFm!>J73^(rnn^1jF{7FQ79Hjy^I@O}_tr zh2F(nU1WWxL{|x&I_OWKbI>G}PU=*dF_5j>JY)ruvX&is&^$;g$jEE$oF_1pEj`3( zyKx(5nda=<;$XIO#v>wnc4=3*c$HR3Reo!O zK#C-ME`7t{;?lzn;=UQ%|19=rglO3b;xin`qaY2^9?nd8FSopF$>OnL_$x ziMCxA)G5sUnAgT0u3Z$rAPv{9(@t7@iEM}!0J*Y%UQv(G)NEEH)YX-|jN-^zTpH&1Y$m&rxkX!x(3)s%zfe*2~KQtw}>KOF&%(+BRMrpZ#T74CPfe zEn99P#?J9MUw1gEa&|E~zzX>#om{#OXica3hB?lv4y7Ip!{#;8LJVsx10HhmnuJ`_ z!1M&8LwpYGuV;bsGbUqJJpHo*Xiucn0Qt9hh$MW5I(j$yAdsefp+a2=?FH{!bQwz( zD9Ncjw{x@6c5=6JYvnSN$omx~Ve}soYt9y4dYau5tWft5tq2bvwq>KCz5a0YlL+ly zeI`|HB>m+=$NIw-BJ_}Pj3{$}(K7z}s4`imi+1(VNORJdhsTacxu7ar6fPpYX?-#!!x8{b#%p6T{jl zJol}eUdM=+=eOf1OfcEA?E1{rC1diCl=POYvoryB_=upaRCGF8zca%^szCl=?DmP~ z`PCeDt4Zp=ZXX=JjxeBHUB8Nht$DE{qvl+`;Hs^9ONZ zluEBcGWwD&M&8uz)1uu`6WVcE+ARi*(7xn8lFXWVq`G2Vd|U2D#ab3ucde<`bsJez z1Fk;)=f~yNIv1dVU7n$h;mU;Vw|v$2*Ty?1yAG}T59CxaWVTVpBhst@!*Kp`e*0%u z;CSubF>IYD4UeftNy#ENAMig=-4wJgEmSm zz#ea%s;vpJ>^yO+pkac=9TNCH^LfaX8f)eNpSkV!#%?*7TSZ-6*!Eg?{Vs&~_~wEw z#$2L`Xa)zb^)6xdzN6yWZ^C%d8yALEH!6~)d(+PFgy>ouZ12y6@fyje^1%DAG=127 z$2q+I8#_4RyJB4}C$cF-n{h!3Gf>Ca z`nF428T5oi^Sk+v{Q1I+1-@TqP#QQO03>igP}GoYr#DdJ8w4v@Ua+6|tgb zW|3KSO9t)3M_Yvk&>yQ$?<|TkjC4jSlEr`&A(&U|!RFH-u6hEFSV!BVDCXDvHZxW0 zXYg?f3b+I**elQX?6c&-So%VS)sZ)fcKi2&7uO%X4xL@-PsXCxBUzRETJLrYVX?H4u6pxnbjbfrbvoQt8{kc79R~=Pht|=sNoWI&ze3ygA;X0MQ8yS{9r|Zt^*Or|$&&&@`n>)`|VFioi;i^00HFZ4O5=LYaon#@q5UxqLrYj;*-j_{g7Bk7mFj~m`Uflh- z!rr>FJDaTZp2(($ab>KQ6S}2^NxW029wEo6C0V9s0qcyjn45Rbnsi>pD~8dzCHwo zvJ!8+j#=ZHghHqcyFZ-xR&aR`bs+VD_+B}l7Q(D&#uP@oS z(RYJ_*Nk6m#Y);=-aUNh)lRi(+C3qgX!5)L7jj&3&BxHpT=LDrh}))jSnRHwR2o*| z5$_h3ze@dL6sYSt+W)$RPkC);T`uzUy%xMgZ&ue;t2f>XG(`l3zuf+I1*nfMDPakgU8Q3{kPkKFcEtED74X0)r-0H!t;)IGL%Z zk8yP-(}DGacUGWsqdx8NIaJ6@9>a#(NaRIXQNnFKJ~Hx3-W{sl;yryz37#@Nd#-gl zJ&a}I){2Fu9&wF_MeCZax-W*D{GJ)8UfL@xuA4RD`9{Q9EMd{L-U1ALU>;=k@1Gjj zp}BssH=mfo8~1l1XKcS_IH%aFGm+zTT=B6pNcta0T2Q?QRn9UJXu?^Z6LcTz`m79M zT~2jGF|C7Cv!J+X{l0gJhmn1vDbc|Zt>DAs&h;6!Q>SbE^X`9o{5a9Wj=g}dz|HJl z+6+zX0~%zQ3Iu+O*m;yo;e1Q{mPQZXJ%7-CgmC0+C!{vxv0SaEte($7v&stX(Dao0 z#Vh4m!Fq!BY2+aVV%RsjqN-Tl^K6!G2%=01tgX4m%B8>1RyxL%j>yYi&*2|xgb48& z2Jyx*NyIo^K1>T)Ec%uR0GIK^AGvTa6=sUt==a(G$XFkq(?`qpC|(HwjcEmc-0QL%dQh^QO*>zOTGc%x z-gh%;*}!Fx5hOe7CVqQlA!<6H#+5dv&Ec(mZvAWdrez(>;5h|RH=fKXE76K0Dx(cS z)nNE*3mGWQ^`X$2&wlHaZ<-QMuaZ7%e(+3G^yf6m$XpuNIPg1osKo^NCl2a{NH)$a z?0&`SCcgU3JyBWisv8z^5Wo+vNXqBRMZ~%jXv)eLHbo7JgMDkYZWGeG>Op_fq5hM@ zmNk-~4}&GmJ6FNIrYiHz2+|(3Qse&ci6lmjh!+j(q3`T-ziau`62On^0U8#kx1KlE z+d%qc=fD?$R97*yLN#9phz?e+U)5IoDd4}nmclHS11YGyQ(Wb!CZ%_+iOu@Q7Rafz zIE!I*F-#sT)|b>X2v@@B7I-Vkdj>G$s*MO6-GS|r_(v~~5Kmm0uj<#~;no)GiPLlK zXRakUG6o8P78rT^&z}WGv@0xpg{jNx*^nq@GEvU;y=U&a8Bta)x0MuA+;sl;kl_k4Y*>%RBL%10=i z>$D+?Nc@-Hw}DA48ajNkuRD@}-~i7Fa+O~DWLl*Q)6`vh8OmIVL-V%pA7uwfexB7w zs$Rz+01?gKW$g*HEUsS{&A*qmJ0Hv+HEnuWXC1qCEu)6$iHv+6w8nXtb~6-Ng&+l8 z3{KC93{J@28Eo;6t>N~q-xgF&lA@pL zF2BMJ*%8$K(!ggi;LY>QCcH}7Pa+xvy6)fbk>#6^tLuaf33qv{m%?LJ5Vq+CeSyQD zE`U%THg$OxOoFf+L+m8La7aFG@%CiYZLRH$!)O41r3Jr;yI(Mn#B)D1JGre}bZj9W z`?ZRuXI_l3lL~r z*GGN`t0_S68=HM$n%xg0JXmd|*C!B1#AKvHT?oxi{X7M+jcYLRAP4DVg45WCkB7qO z8`D~TMw?vqNOf0RvWy$pXK3Cf_!7Hr9Xx5{cV$55 zu9D)U3kXx3QBTNyfs-G>###OrBw%^Lwc&XdalbDl2!hKloOBughcGNxh?BF}9y?@N z?Xzo#(>d1_DDJoUUoZ*F+3A`2{n=l+JR$7COg>w_DHTMg&bvDwbe_GzAI=o{ zo^b6UE8S?5RSDlLq>uhm+c zHOYE^f@|v+hna&X!$?1wR)6}QQG*sD9GCvHp?AYM+1rn*W^t=#JGQ;odmb*EW&V=| zlEp`&A3!B=g6^k|OEQZLcP|l&U}&Vy2c*w7y$U{6Iy&SC@&UYRgQXD6t!gS*^3ueq7xDevIS9a7`LwuZm?|$B4@$>2xMC;ZeUS!k;uYnTs#C!<-fjG@2t? zSxkHXwV}ku=WgE>Yn=9ZFD2$eAGxa6PV~%$^-So`F?CDeCsrMIS65*%!GTZiRw>~V z2VZYHKapZfO&8sb^)tyTt;DMe>8NSgXXq3r9q*6$r&UnVf0*V^@kwt3HsWmmV@89X z(Z&;iHGs`YAdB;w05_3~Z|pXlxm!(rlWOJZWDqL8yRDPCn5y$e4TaZV#dNZulR0ni z65ObI;kQN2_nA(nb{L=QLE&LI%9K{^QHood>-^Qa`1|gn?(wT&(nG$x-BXmR?>l+5 z+Nck6E-1^04_=o|i3;!B3azM2)k7}ahxiU>)wnpEe@nAQ#pJe4_2;wBM4aLWQBN+- zf!Q@QvfWfz^Ca>GgC1g;SZy|uyX{;s=e)dL$CIMw{f^v^efK6>tqRH!N%zY#V12aK zHdcWpx}38Yu=6L#2Bfn3_TkH8>8{5+U`BmPU9EpA+811ARG;a_xVr|fLh;p<4&FW~ zrHq;PT?rRpU_iV~*%a2*%F@km$xwV)Gw|j(AWFqrk67;*GPmQy%RllTO~rkvTiqqrf%0!Kda_PU5IF;nf2>metlzq zT(O07#31vBAuZY37Vf)Wee0(!+~@9dSITNaygCwOs)0mUSB4P|Dj?UrjdX!w=>fT~ zpQlmLEmaCSjQ@kgdO*&XaBGL6Tdk^}u~YHdbI+5Ua-6#f!}1YPl;5Hhq+AVDe;-gG z^d!KXBv2hA{UZL_uAlc-%;s40e$T`SD^I;s@+l6TGDVbdtFI1{B>1;bjL@AByY}gJ zD89p?X11ZdioO)WaQQEP%EpSwZRZQxKLkY}3PNEG8Owv^#D}Zoe-4;de||X6eCceh z5mhkrY90aGBl!%w5J-Rw?n3@F(=qYw&RSJkp_=!k#<~~}`(s?22X${Kl{zv*PPdei zf9#9PZ-k0n0e_Xw8E-qGk5Gwm?tb%_9!338zO?h}OwKo(SKv z;u&i6ys+T5IYFU2^&Cg{prq6=B}#J&v`qY!Y+lk_yS7xLBcUe02 zc^~|_3wZS-u8kuFCd{s-d?s9bf(PyR??j{tcFeCOy++cv!ZU@Nf@Og>A3B_pQuPCV z^b=6Rj-@jnL@Wp80ZJEXyFMeys;%9~+w}>I@=$-87Kmp5_$W?`FwxEG-C5BUzPg(_ z0B7fu($WH`7WD0HXz|~SHniK9E}>>C>V2=G? zEq3vHFvz&7aJoAIrOa+1DGY;d4@Lte zA8IMolB(Z3mRXW`;~kEaSN-xa@nVvjQ}lD{#eXrwJ9f`fLKC^KZB>)y?YU)F?rLb) zu27mPm^<|fHxOJEJ-s0b9=oT!%+pZUFJOPvfa*4?THt1jbJ4pkkl2HU<}e^YMbDk8 zH9PZUSm?Aq+4H4x<~~m=C^=Pp;prj%!d+#vX-ikM&R!_g-w9zy-74kU8z0AQRP?>e5K8I3E= zf$DbA^rK(>PzkP$3s)fcJ}chezgEpP@44YfHLFyQznbYo=~@hC8A_D=SV)*-9#=NG zc1>tEA72F-r&!gMcs_5E@FjaQLBd#eF8`ZkNj#iX8JY{f#p)#jU#m8sFXyTTI~@;7 zHqV$`HOyqzV)Nuy`)y6(Amz7{FoUQp``g&il^^}ms#I^>wN(P+;;`y)YNu1#^=eg9 zX#CfPSyl#nn*B8;rUMwe_Nx{Asa^1rpYXAb~3-#WAqxhz7LXW%Vd zQcUIrP#vAaJ;Qb`uk)?`{-$gLLNXeb5gLJE(^_3^2X8Y+loU!FemL;nS=j!NAP3g_ zob$;~L|8|bo(EZJRTE>E4$e(3uWr-El>0ta9%U9llQQzECN|3+p^M5>Fzd@-V}S** zBhwUC|B-K*@0&DN`+XqV7tVtgPjfaD*&fXvVCS01{A*akiV9{7>>VXD^3^B%zmv-+ ztSKr!#S&r+ygyExu(WXcU@p8bmXLP1*)8)yo!2CZb=)fek++0ijgDrwF(QIJ1J-gX z*~O6}yzBxlH)O*L@mo;gZ|=1^1ycY0YaXvM8a|I!;!k&66kX$W*GPeB@AQ~ktaXzGg7$xjg3aeDpz%|!ysE2iQN7VRQ zGm6~6;T3ci4CI*q>pNYV%J=5@9vaRio1g^mA0SJjB&k&^U9{Q%^&W^GS_iP3$3oIO zLQ0%_&JE8QKk7c%j^j!DxSBvV)33d$2tGd9lj;im?2NB_`(hmn)4Z?|2YW$%pp(KT zaEA$Nw_KonMJc;wgwl=EY_Ubk;YL>9_S1HVy{Cc95@&cTv|@0bd8=X zk+#YECWY^(*Llglc`B}@zZ+(og!(vA4qh&aj9wkN%mxCZ+W>zxi=;C@^a}n_`EF7f z_>Xeo$Z}Hiya2+*nE5wA!1_@enW^eMZ&By>DP|*7+RAm7R+gYRa=k}d$mDm+ZP@Mr zXaJ>4>2J;cs=?#b?w_k?s{*V*O$o|N%_67a8EVnvhl|v;A64Sg?t0)SQk5g};sxHF zIeH~FICCPN8g0T#z9KMln8Ogj%nPHCXboxmSTvjL2vF{kA5s%C5-2_;q8|!vuTfQ_ z>Gs%iy$Y6?9Nw<^P42z|1^F~5ruy{$?vn)Y_BNl=O$IYsL9O(|ozehNnbOji1s9Ot za)enwlZfOHh2~UVS~(36{UCUQ@&h2yT%*cHQ3g<`b(@zV9L-TLJF?WG-2NkD(7x@I z^O^V1RuiE3wKi`gY!rvSx)M8895L6{)@}66TPe8?{IVG2)7i%tYAxBR3o#*`<`L3j z3?)t}%+zRj;hq!5pnZfDMfDw@uenhTnUc=f0j96__D#ah(~QbO3K|Y~*->J^zz8y@ z%6bmRNvFO`N60Zq*MamXy=1O=Wj9MvLU{HwM~U9>am`US>P|m2HpzrF6*tB8 z{rUBTUOTRB9An=3UxBjvt-^)+)(I0Q`8dYUZ+iu&A1veAR+V=7KGU2xzA;sM#^pk) z89{(}TXCys8T9F<)f%;zX~e6qIvt@O54n*|3{7*@I2Y^qo}q7Z59Xe?_u6B&59dA& zqM?WEg9~#l1V(C2d6K@{i`Hu@8dOFYRzm+O8U+lb_^jPQEbnfy+@~82Jf3;BRo@Ue zKqc92tTYE~6qvnznr?g#~eoK6Jcz~|*0O7P?imEG#!rYjvIW2<)HNpih&xK_ZQ+_2X0 zoDQCKj)sLtl8n#Sa8oEu-TB{WX_e(}5rHw2^?jJ!gfxB0u7|x=|yKQ@)yC^Rf zwXPXOWR!2g_o%F)rZ=o_H>BSU@|_RlZdB^s4z6DuewyGD958j~!@k3JBnGza$JzTr zw(QxN8V{CGiBP~2<9B+M#H-~He<~ca$wsDbsa1^ozonx#nHs$NfbPKtpfzG=cnVBy z?SdIiyCm>pU3Xmt02B&8x)FC;l|EvA*>J#f)hX}Xl@c8cKbrqh=hQ?rwsP??pfKCV zsq)vq{4S}w&%1Ui$SIEh4Wbk-2%|%C-!ibFKyOccE8_;6O!{O>y&3Z%?B|}v8mRKE zvWgnNLSe7lPVEKuuA2SxJ0xf7w3N1Aa53^Acaws2{}0XEuYh zeK|9=Ox+o&Sad{=q&{-LdXv?W7&_WA)IQck~))&uPQd+B7R zud%ex)eMXt)pOZVUT|Y6W)h-QP43?}21|i3kHVTKs_YYF)s%1T zGrw}M7$$d#t$W*O|A~}KC}lj-`B!+3ID;jkw&Wl;`0btMl4tk$Nb|niJC)9Z+y#)% zyf9p>$~0|{+*)IUSIkehj&RBNLugs&Ql96n6}Eu`bw% zjT7T%>nuIe(DCvnVIu|k)0bQVkdN;aMN0JzItQ|v6qO!6l3slbOr(As?Yi0g%tt`YUg{H7Xs;AVI*R^+v@Z1!SOOD<{5C;_z{uDCovirYJ^^O@weX z1%Pug&N+59ngxh56m2smpkBaEIhCr$?6P~hXLpymWOuMO1p0#<8&${dr+~J_l zRSEqkA;3qCYpM=cf40AI0ltp~RA-~I<3#;O`TrHCuq=`J(3ZUC-#3m6BUeXDbSu9` zY6HXwbMe`{uLhg2QJC(0TBJP!UWSc{;G1VQQI?#$lrDYV$ueGAK#FOrvN-F4<@^j| zS3z-P2Ms(fmy>}D^0waj&D@2{g6DJYE;2mTM|*wpH#Pw6Q;|LnReYK|u$A6(fs$Z_ zY-yzwRd)b3eVO`>t04CY7i`{gq{~FqC!|~SJd>+*R2Ez-b+&1+_Ga7j>st|}CC658 zMr`!MnXEq^JkC4Q4R-Wi#~h%OCbPevwd3mQU`VU_#rhLL8XR%fok6lS=MWdauPJ{$ zd^k;%>zsl{VwJ_37LNsg%H25BckGdLTxE*^zmdfmEEAjHbpA0sS-*D`io5TE_ByNH z(%tRYP_LCYb`Ufkhqe4{XFA6IlFQ*0#hkDo)66l}r3_)c-UCE5Ky#z)04}M5CCRzuH`P|YFK^@ z1^}+HpM?D?O0GO#R-NfR{@r%s=y3NReQ8WjX2Bkb7SsPF!+P}rv5@)5GTB;hY;*wB zEz8yLe28N0yf%C80GR)4$chm35^mV40{2bOr$5pRYId z1~p7E3Yupec`eYrAf~S!)?x!2?Cl?Q#ZMZo8v#?A%aGrFGn;l^=z^nM$#yWRnQi81 zPoy=oz}`n{C)26=qi#7AUv#S;H|6M8^BdN0Y)i2f<5XlbC$-_MeEjp3G5%PawI{@N zbHkPo_fB_6xxZnGV{^d%R!*rp{uyau;N5`Cq4I z9@_5Ic!$n#@<1lmlfPZ4!VHZ9{}KS`LBA zPpWd!3TquBb0H~BCw4f|Rq&f;xIl*kRTTs7M~F0e0lINL-=vDi!2Sz%t6PqO%&|QY z@o{z|buswqAL*m02(3q?iOhn8xD<>Hpyz?KL>QDeuSl4Y=@^V%eY}!Aiw(PT~Cz>Ob8QZ9A5GIti?zS?z z0W@EXdkWEm&zhG{tctMLYmR2nkFx(7I&dZ=&mc%xP&|Kl$rZ0J^?JJ^DZU_6=riEB znn=#ope!e+dwtkk{D9+}*-gqd!MeW`qAsLzf_+jRX z;1RC}cZ$>?M~ceqEKw%|T9t z(Ww4bxYRIMUz9F_am$UgyKuCq0jsk0*=_}r0Z!zc!N1$jmH`pio|NeU$~k@$;IbqM zscHD-${p2`7g}wj$o-p$?sANJd->c9fh)S9C#1^A5J*~ODtgd1*0OC**pRGHbb$vTZqlAYaQu>snySgY9Q|d#@1jYgv-*Gx$!rrk8a8 z%IjFVwuj`e-(!>haq5rXcSo5b$7*xo72Sma5Wcl2MLs!e5ozC@+LbROB#zgabe5mE z>gt}cKQmEKi77KGR=N`#UEo|V^s-g?&&N^S%DU*>>jS5K5!k&hc7GLFFH7c4u_S_Y zNLQfehv>Uuou+(^hfVw?Ng~cJIBa0bdxDTy9xD?~E^d1V#^Q^|84IOMFv~seVkP#X z9!<=t4_K@m7A}=eeOwwRMzvA2!f$K>;Q%!jT&+5q@~zZTjA7<%_DoIM;NW|IMfeuValGEzK2ZoF*~ZSmL34Gj%}~0Zxh)ml&8G`X$r>*^UT#t z3DdJL>BG3Tc?C+BHhDc-UD-^hKF=Ga{#HKH9r>`JjV9F8FOrQMnbECb^rkp31#1B2 zDTg|2P4@(^&P&{9%{R|SCF-pki6*_xu9EqzzKZsY)SJaZtaT{(Mc(&My!oxrWCb35 zQ*j!044$?>>BN}AsqaoSeeCuxPcDJ}Vs|^x``OKg-SLQOyK}m1<%Mu8zTlINgLmAT z2b|!w1-c6L=^BU6@=ZvI)gk0PAG@k!x5Xm?m z@})9zTgT3S8}0Ce^M|1;fJTQ>@o}ba#SwV7)q#nn3&i#=6(b$T89AhpCg}D3ol|M; zwepJtk)qA=pJxE99mQqx@kw#U&`;OM(CcUR&!CT#GRv+Wds}d$Q(R{973fEb~ZJ1+MlB`T*rP6uSAC<$4c$TXKqR#dHPyRCaO z;#y!e;C_oc$mzdTb+iKQD{1ftl#!QRMU$6S0Q>B4Y<$gCBuvB`bP*?%YnanLS)p79 z658VKBdoVN9jc`;#}O~`n}y{TO8fu;C@jrl)@{u z&Qz!2D>o|Ap1}8#6H$pEh6D|NHdprwD3mB_j%NgZ0=mPN@A{Sq#kq7Aq`v%gt&yp! z@W`aH)9Lr<*j>IrPq&R9|$Y3?Cs)@O7hLP*hrwI?W`AY81Nml5sjI_HHq4?VST$ z&eZpzVdJUSdx!1gYa*XU{_b07BmH&}XLM8v(fD6X~u*kKyHJFrtKoQ6W-C6G55!#-hU?g?zU7x~HtWD|R#tZLwZ7vCQQ0&4{@ZN_H(tli8Df8o1~x z)S&*pKDD=idqo_h>uz!HO=ApewJ)X_w9`L@d}0f!!>W<6L$2U$zJFcHq1RX_iELf%!>Zbg8@0DL*1mzq zEb*P%+^DMU>6vPwi^MqImP3=Bi9;q4bnfsct<=Di@sV9jl7ia#5ZeB+1^u0gu+jYEvcFc{jsQrA-A;V$*zi0*D;PI zaxB1PD?o3C)rHcdky`OZQo_;KxikeZ??fs6OnoU%6LE0HnErR;k*5q_pM}fy5*Lth zrCbc_wO{azb9Y@UyYx?q9x2xpwCOZ*V579S7UX3d*VA=#>FHd0wl6wEOHA4b?B`@D zxT8i6E^z2xc*j`brwex<0O*;lenO=B;SwW+AHHj@(>5_Ogu84BVTL+uh8cfegETS+ z9*uak9()ZS&OnW%*K5@Lw$50PB=kyN;K|qjPO-2)%Q&P>tLGZ+7n@t8K#IC=Dd_zClPjPS=D89A`pMRBhb9-RluNY;A+aT2pap3L-S=c-A+z#Zt!>{kdDruLNH;iY-%Cv9=0Bz; zNV|iBqu;!TKllu*KzoUxcTFnOz{jIl4^WHGE|D#!=>sa})u;`qP!@utQcw!N^=h)f zg{6xT7q1az`T83i>4mjvWZrvRn6jU(phQ>$)HZxC*K28hDRX6nG>=Y11WMq3 zT>eR!DFD&?%0wAXp4v;Ec{ZVnOOFr+KA?YIr*_F>;Y-9{BmF4-LP?r+ZkOCR6r_J& zs6VTA@pw<_a83sJ@(z_#%V2|Q+~OYk8t4&0_oo)L8gQfZtuR}2N$+fnXfEBw+cXxD z+qB2>j_3cwo{`JZ+I!h`ZF|vx8^^@Tt-d|ro!!jaUST!Ta*X@O%6c#GqDSjV5q20< z3_yp4x$XQ7JKOqX=ih2NE&pK7j|__i%8x{(BKP-+0vQuGWNlNg&J&gIT zLsVMj441E3mZmTo*~&Gd*|`m+Ko4(@ACTTB)6Bym=I`$fK5Kj3WNeixHvaI_R+FDRiZRx+YmBzV2Qi9V{<5$#>iWK^S;Fo< z+gy`vbt~e@{$L)e%d0gn(-(N}aRj&hXYqbx zMPk81)*~6{A<17@Pb%I2e@`kh#)acp7L16@Uy0+_E+4%{Qnbh>jnuL0W6p)LF1?lg z&k`qi03c3?XKe=_A2x=s5955i5Mr<*5rheu1;o7m35N-yA{2xp~w(1&UIP zdi=r_H!$RbD4(0h2=HbB3|(5xDRoF<@|qeMx`2q5z?Tgpku3#$ngTd>j26-e6Br4^M+`bIc3W=Eo>qlhRmIe?Ox&?v9{cRpsOjA3zZ!{s$#4uL9q!b#rb6znef_00eaKCIrf=wh zYFogY2OwIFms`>w=*JojvTA2)uSy5ex>2n2ygZk6^Cx2H#9_|*8R=}Ty@KYbzKJX^ zPRuvJwuj&zd8SmhMM}_ixDp`g>ern~Rx@so8*AQ%l~`GII?M{C8AVVi$eS#{A@he_ zGKcaj7?a4Jht+?6C2Rx_v6}V@>k2A-`d?byV-W!tSts|+rVR8=S* zO@)u{AE+h|(#IcQrADKU8kPo0j@S=bEU*zeHf^dsZxjxPw8D}?tSC!TlN5u0|s$r7c+~-{g`sa21o`jcd za6~h0m| zR6hkE$=>nnH;9-AFCC(_2Y5-BEbDrXZQ2%M`4I<98YP|aXNk6g$g*sA_ zSH~@>6D^*~K2jks=U@trN^xDX;IO0e&~wU|!vX^|yKZBl^& z(^yNE0b9n@zrs?vQU|+qBYZv71V{64V{V-ULnoOPvtKw z#7@3O#p>}RF4;MtL#o&NU+wyIz;B&%J?Pm`qKkEk7!7W=b(Q8sg}Ppd_FJW| z=551MdnZ}}p)bybq~-8B{u9gy1dPl_5?r!Jde2?VE-1PyUr&+yuVfINrf(PGHZZFU z(t3rbrt{*sr}$uffjnh9zAxm9&T1t+RNvpWi*lBXew*nvENCSS64&s7|@~UPC5Ko3S|4Jmtg4)vO_Na)Va2JuDa122bLq) zkP_w&{Uc84R%PJ^D%9@!tLpofu1r7!^0;+fLDYzx5TXIBbgS4>_{?c7p{ujo6xZkN zfmIm{)LZBL{chxv%TK?(2Gu5f%A%vL0VX%f7ASld!iQ zF;|bbuGJ{%qqTm%Nt_`p%rN}wZ9Ifq5Newoi?dQjdLakEBt2_#iZ^(nX5w{+=6QO{ z<21ot(Faf}u0I^j89!(OX<9O%!_`@O2fHa0w{hZZ86sODe=c6mkoHc*)8$9R!PybN zLKd$A%uVY=6OC21CrgS8-&Lb&)*mnOJ*6MuxW_f|q?AC#x1aHep9QAZ@hS2J1WA6Deobb@pY6<>Sj$Z6q!Pz>+|H!J7*7 z_`3vI2TVkqPnd?0V(&@e^{3g=S1B`A@{&Fzo*M}Ie&X1Vbnq3E6`3pHOQi2kjw)6yrB0R56abXlz^>jn#;Jw9ANC|EXT$IG zwOv*f8k@f*XaHciT^VJ!R_Q14Q$ykCbPEkE%PWK{P z8rZi6YvURiQ&HXqdBFiCh}bK#f(Km<#ei0)f%+|4U3DjAP_LC-&!!LU&^kroYu^m? z{a)Pu(a@LcJtDa=Cqn~V7X|(uJ3@IhvvkrYH`K}$JvG+_Sd{KysULJ$Q~cTz)v3I! z6rw0>ih%i2v}bDwQZDD~3!awj(-ut}(gx_Q4>cr$CgAL>3Y}JhTs=KEu+O(Lo&`JOq#+eSvHcP~zrD+$5t$ffZdxZhy@*uRjNXryD6zA@r5 zzG2wc3Mmqs{w>cDLay60rhc>4(!<7SQ4$AMwaU6%9+#c_R7d;#C#{1&Jj^EHgqUgo z@}Sfo-{QSa@$1eAjVI8ZW)ko9aRoZMs}x>N-{p{`MCauSmy3x9R(rc_#>I#Ry0rUr%Bw zN%|bJ?@Gm+JM<>F%qK0rP|0dbAl%W-aZ!xQ5zMgkA&NC(3q1EqwfNtmx;XYL4IeqJ zzNX$D!LgI<9XCI;5cl1Tv4`STqId@g7g#c)*XOOxUl51U3+YaWsMMWKmq=`kn~u*+ zKPmY(auF(ye|_2o1@KuaK7z2K`_b=CepE`6ht;2_ZQYG_PmWd4*E?-0D!fvU&eXyM zh;E4TPz{2cpVMH@hP<>dzUYrEk#?Yo>54>iRXha<3+(SdSQpIEIOczY$ZWwN*o_?m z6`=~2mUDH0X6_uJnU+zVA9klH4~Gdnu%x?gc+#>!MuC4 zVh6A+|EDtesIJx-1;4pAb7tEjCOP*sVaJLyJi5RcCsH8RK=dBawe(pl)$p3j=3GR} zra;xf3AbH620gk9J3LOl$fONOiN3Gf?V@!Mk&cOYkXiEjg{*~g!JOckTcb(j&t3j^ z+AjPD3pU07Chx~!(8viq|8cu@@*V7 z9WT?$OR8x6PX=uv!oGX2I=cgbrbRhW#%)uoKA}tg2)J6)99qPFuT!(PQAj-4*k-BH zU;mprAEqyoRXBWXLTm0=xKUj5TIF>GhJEVwDt9fUlY3TiT&L?DvZN^8C2p~FJ*_0A z$FAdNzS+G*i}rx|x3O!Wc7Z!+uio$SA z@|>xt5n*^7tbXewo4q-sj`1J@)NO!fb;S-m(BbRSMcxxR9w`POb%5Nx*Gv2uN|O!C zB$y^b^2m21IB#rnudF3jKHxI8QSfUYYpplqy0y`=sna@R1%Om>MUozhPbm0}1$pTl zeNCFzllKM>9b^R!*-{smPsB8PyDaExBT?kXm)mKL&cWAlW0_t zpbTM)NWbL;yyRDIin*CPrQ z5-@sMw7*~)`TK98@+XDt8nPW)vEMZ|){;cA+}-OTAJUW&9?INoyoc9K3k(@4WPJQ< z-rDA5^`s#0=zgPh{?vmecNfX!DRy?Qq){gSR}*2%tR!&=`~CeNWDKG-3>AsjBN!b zm9BOAWCJj!5iW1kX2`_5&+wb(`B@9uUF_HT&FBFS4R$)GMH>bHp;fA7}O3j6?0<8C8cVo?G_OOSgH*hFf2nZ{qjKgoqtz!YL=R zmN=1S{Ju~e%5mITXbwJflbQ{6joBU4cXj8FsYu7WYUQjbr~1!18TU7bYqfID;cGv$ zJCtO*S{WA25}hD|`=i?r5#Jw>!Ievcg)wGQwY-B}fbiAjok+j`XryA^k#nh=w)Pce z!dY_rb8lMRZb>+c3~>LAa#YCnS#x@k&`MezXZ)>g-YQts!mCs5R^T1;L~B^(u|bsx z=MS1~gF=pJT-Wb&xC&@VC;_yd?OgMbU;IqiSu{6hurN#!bss3VSu--Al2e6puLDoI zx`d4c3@&s`t*A5n4v2)tK_9i#tIm1W zK{9+w=dSmXo3sY4vDU9E9|v_2J})*DAStHISK{)I?h7S)wi`9oIhBy6@(Hyuw`@+V z|5P*{SU+GjEzUE&P!kAQDk09Dio0#9DAldc8p9)@}mh$Smm~HE|QnjoevFIY5tm-iCfNvFxaZ?2(lYTXF06KaIfe#%bXzcxt)(GmR&= znG636dES&CRzSdB*{*&j8`bC*{rjrxHjE}ui=(@*50gv`7Q7Y3I)*C0WsnXB#6yAW zy?NeHL`g$Vp8X37jTbV}ETbC3+_=j#TYmFX>zH9GKWseW6M)|8=b-%$>uiBs5SVR^> zWwzK2-7&@dyX@yw2MJtZtu(XHRmwaT#(1$!7hSH1yo~?i7?|whYPm0tW7?Vo0Kgd_ z+ndT;G;m9_zssDUQ1qESAE;7;YpDKkXeTkmJ=e^|3Cc89@lMVQK@^5Usktf zz?Ga@6d2;TBSZ$bUrL9+*mUz{4j=uC);$PE2xKi**DS2=w8iskz4Mg38D*=H$k#W# zJpsm8B|Pj*QFeZ%G7bNzmZjGsAgoc4*MZI45v&y*WQ4zvY}fkRTySgjsQXqn9Qjn7 zXy^F3^fUI=e8_*YuWpK%qXTO%>>$q6w#d=+Wv(Zw9uT9d!C_XL2!&u*)D~?mUdJFK?2>ubWJ9m8YXzUZn2u{Zu+QZyk zZrrDyV7TV=e}eE6mjTG_Y7d~H63!@?nZ7GpkjqGCs%=&f;A2=mP_|$LD$q!JZK_m$rfFH(PyU5PYg7;cE^(>K7l$pkoB8^NBIZ#*d;L zM7~6`j*Sw~SuS7|N{=MF^#uFwbCjeyl)jj^ z%}^PK@e;DRV3_-J6Wrg1 zr8NVZD9&ivJLH|R86^vrfgrJXz$fdE5(7)GZREAUN4+T>fA36&j4?5+AhGp^o3f%Q zBF@vD-FocpOPQ%J>psOPMkXjU=lcH(SD=WfLLbgHEbFjy8srdh|6M^W`?s5=(H(RD zt$QBCVVpjkhIcQiuIKouD7uITf7S|mYNLTK6p}*kl+Ucg|E`cMv@aYnbA(#CDcd=z z(jD+tH#4>&nlh4y6IokmkU!hj9E>5@Fr*Lr;@CYXzQcLT^iEu65#+9oWs_X z4IS=>^*A;hE5OtA2Y}|9SqY+Otgpj#NG$l9+&)W@m{H}Y^ikdspb)Xiq+|hg+l|K; z&n2{{!JA>a#LPb)ck}76%Fu`d2xcwMB2G%1oeZ> z-oa7mVAmfq-F$9W;}fzstov}#+giW&U+)Zf9cM(dn5?edVS0U&=!3&u4Y_<5BJ4KHi^L2R9Pjd~Qo%~EZb*Nb*| z!k*+RH?TJn)6cBSw8UGc*zo#9E+`7mYM$XPi1`O)yLioRDe}?P*a-~Zo5cO9Ket;p z^(W&4&Y}g@900u%6DKN@CjJE8DE6YRVWr)SM9=hs7{NLUP2|7{sCDDR&kv|ZESL4p zpaN1^hClCtd9_kd=pJtpgtK^&w!7ltL+*Fg{j(RT2;KPf^i*DwF^4=;fey+)onev- zzw%;0aD2L?nIxsI7I;R*|jK@Y3@?Nwb}Ej`X4u!Ls2=X5-`Rj@wOAY01gILw=1+ z{HnC7Me8)QKpMLj3WLOzM^0-5`6;3QdQU~ng0 zSO>HH0cFRq!f*39Kcg>9%RiGBH3vyYj{x(Jh*9j39Ds@81ioHs7fVrJxdaN9eZb!b zpU)@Z=KRh&tdWhoT&?6KM$z}^c!Iai&y45F0Eh@2D>Z+f{RRljNKtvwmbdK3)W$IZtQ>%EDK^`ZA30iuZw2RG5PqpgyC zjJVA;no&pH4fCG)5zcw;s#6tTaiQtpkjiJP2{kZWd=I?RvESPE2k3diIwN0m@};| zRcB2qL|dP~n3P$$yQT_C(^(@hW$c7)!!BiaRB3_$p9c2FhbTDZTO_NbQ@8#c?F_K1 zOeP0a%?9Rks+VPxOkJAaa7e*uxV#1+y0x2stf}j|FJ(d9r#yul#H9kljoeb4pQKgB zgmdG_u=fgeMWbahTV&j)gKIZWZ@6vCE*rW}FB)nM1Wnmq%3JP)=X)m21tStC&$dno z%1slg4z2C6T$4x4Sm!0%Y8Xz%#6yw`ydqEB)EOoSK6iFFC6J7eXTffVL5YEL^`HC^`ZSeY1G_n@#?T^hu`FojwwA9cHBLb zFR`3vwNM@B>f9PQrz}>G70Gmf)qZMwHm12!nrSDIf`F?z% zpg{uXC3&>88x-oS)g1XGbz7k7ZxHuC5oG|7zr_PUW+@m&J}n(eky$idYAshvpIv*% z$#t&(;X8xa-4vQ(p*xl(kBHoSi0Rx>)TtPo|J8_GxOxm|M1tX)kI>jPt1IGe8@=2n zI>pVT^lkn!=ThpE6%WMMub*BjM>@=Y%@i?Q-fENkc<+dkagy%_hXKy`Z`4*>6n>#v z(fHfQuWrCM>EwB-p?I0Ohh*^|VX9Zck4HF((UsWLey6ID&gIZ>-eG)816BFyq5;iX z8w1cFC@iPqyErm#SN8SenmH9He;x<@;_MfXpmrb!3asZw-eI=;1x`v2@Iu_}kh!xj zAz^t}jFE3WjOY2OnC4WTO0mz^ur(4D=vH=Pb&uU&zZccgT2PT4vBp{T;8KthePpU= zV!aTbkuD#VV{zMi;n7Dm0vUe&zv9zfNK*(F5zdecb`>l12B>$vRbvD`I;=Tf9Wig; zAAOHvB9Al+jC|84v8kJT{=5+}`T7QFnBzI2R;nX@Qdvs~qf&dv#@z2A|3#Et)A`oU z#P;&m&f;7fjq@VULKo(hl5T;wE`KgG!dg!v{~Y}K>~Xik3z9gexm;9e2{8a>XFZUr zB0(?eJczhG`lZ6^Eo_timd2rYSj&PK#38M2QA)M86T~V zoc*C=-?U~w-NawB%i~@=9b)U@?>8r2$0&@gBPwYm9s6J@$1vG2Y}CYMfTAC(xMQCG zOL8*I^6#6E3$%qzDiI8O+_&WybGVw9OpB}5q$CbhQ+X=aX~BBqEZ;$WCA}>Ew(T-> z?q(Jn`_*d3guZ8fOd=j%p>y`RZeC|=fB4&q+A)u69#|c5fguY9fk8HD4(Hr|6*M%1 z#_v#pgcvfy+{eiW@nxkV&zd!o?#tbxUeDC1Hx_oI-^iVZ#GTO}%p>fbmZU3&Ba?h% zC+d7bcc-I0whLpRP7lj^ZI(SW+x(qsnRTIkI}Ub@pXG41qV8)BRct-l=u?52n=sCB zrieeSZW4l2o+fNdo&mKjDuniGHPkr~(!M*{=Mj&+m3Bh}>nM`6)|cHpm85#=I|}7i zDIJtq(Ja6j3IqXi=k7w15y(W2R#8}A z2OuW~=)8JfN@|+`N%`dKo2(MC86dsZQP;Xyw8?2_1l~iLED9E|Yip;^^){|58T(6p zk;&H^$NQYG@BT}y!llIdG{bqzSKX!)fB-Bt|G4j(=t9(Zg}N9_u|5%IsdYNmJS1`S z`e&EvED*-kklXCVHB!1;;9<5Uoz=K6wvE(u?gKg*OSN+(41P@B*AB6sbVAxIcZ;qk z;-|VevJ4y(66~iE%0cB{KdLR=FykyPimA<*txaZ4tWCRLtXuhbI+We=d2+W}_e*H( zSLD^pyNzkwzFtSjI*4WVH5+wad=Zq`%yJNWq0IKkatbgB(2__Hyx%|gxMfp6DL^X?lZmd8IP1LtkJ;Vd`ehtJMoB|ppPk2S zcAQg;?SGWhbZXObtM*m0>Yd?*ZfN}l=PLo)r!qlFr8Y$3B^ziYis&PMiI-^LjgKSye{N1RJkYJAXD@xw?*TJ-Z$r>tZ*nTsmE#|uKvzl!@p5#C5vb;z z9p)zPnT(DsV*<+Tr2`lqHFuUqE+y*aP!+4t+fxB# z@%EVOX2t3m$F#BL#DdI1&xKoZ7UW=DVMXoH!S|i+?>6hF@a@D zu(qmXO9ieEfrX^bl?yg-Z3&Wx&Nk5RKX&FDGsfAJX*>%PEU)|X z1^a;@rL}Dh|!@ z?5N`^hNod+X}`I4+!V@tr)5*nqg+4hMB_5Sxi~Wpm}@AoK*}Ynzo`&QbQ$TSSUbQU zWz9*1BuhPo>5Je)=ilaOIiPFvVltcQ`>d3m;oDJ z4eDMJre?|0-<&%gg1YKQzi@fmztQPNoq!7W;Dc-g_}fUYDj{2dJ0n5c9}pkC6y5G| zq^ddw^%N8n>@b2gFdFp+8EOZOt~Zx=xWoBlX7i@LzB4GI{Dr7v2r>_&kYp(`ucQbm z=|59bX(==d~lbv;^ez-CN=If0v%iROh-m$)V40 zCkvToj~&R4P#((6Ig_kgQm8tzbm;};8*TR5=?~v7)vrx8+w7a&Ttn6scWK>d2XrWr zOjBpw3EiBxi$gveX!Ey9Su$GcL0dzuj&eNg-XEyn0}}AkIu5M2PvB3Q2^LS&a{AD@ zzO4B>R@(CUC55Nh1K%TAe98|1+k`OxBP*BjHt{GWnB#~hq;u;mcTeDgVU~}Ijw8Gg z(AUzyWGH?VS8{j1Z0~t%E${#*NG1Sq9C!D}x1T)_NjSb2??4W%m zJkvKZCv(Rt8K5>C!w&4kl`_J};aSYr2W+lb?CdXT_K*T=x^%}ofkqHD!7?~nr&+lc zvSWkRCtvAB*XE}aii7!=K0WGr=wKG902t7{NcLaI{}e?=b`0VXQl#ALDzomV&dH- zMFxW{v+5xH;E_)`6q{C~@hHQqi$c5cyM1~i^VVFtt#mJ6e4uG5Y>CJGEdUyN#Os8Y z@^3{7X3@WG_(cSZ{dMwKTSBcpd--+^INe5&l$QyyA>XDVd9+RoTdr|1 z*bB7z(g1X|YS^2Fo=wHJ_kuv5cMJmm~lIyD2+dQAem73t2C-QYhFC& z=%%F;IHc04kFBfFG_O_n8O9mf&(;=qk!+6F3qY=>=`Fr$|I>ffF1zpK z!`z#k^5>uttab6XbUx_CdyiN$f$-wFVWqQaLj*ha9)MCWnHp9+mIWEX7Du%bPts6n z8VAmIH`{w?jc!p#0WQ&sz+cTDw4iCi+*;b(PEJL91+cx&j$T@44fMwnkAb)Wg28p)~HMyc$bRI3JKeUAsMkQT;U{$0e-Z>(u zT#oj=tohOZO*_f_u;Mo$5;SX{15As~u@ivSwl_g=jE)FZ+(F z7khJ9A@GXOGVSfe3F$Aw=f2DUGQj(R9Og(-;uTfnvcn(m)4lOmCps^L95-oYETjE5 zqD7aGE-%gULwd?QEVX&ifxw_ufjr`g9|0S#c+wm1%D8DK#-WdfcW)h*?ah@FiTsR@ zu~_~7L_WR)^%(qztU4u3(5#g~{6`;;vCKlyq8JdUf>!|3QqzCEJ8-Hm%saD}qGDZy{Qg5 zWsysc9cVgQZhAS^-8{%GRi~KPCcU2g%MxJG;(dzY=;u`S*PXW(4#-8m??qm-)1l+C zd1*9l|GD0S?UCSj?crZjq`mvMA6W^t+}cRwwU1Y6h)N9mTGBPF|4`NH2Fzw$P z#N1E&t&&JYQ(+ote&voRQ_}!U1_;Ksp>h=M z?9pkBDQ?wk0yA^zpdmarY~F>#s`}DcC8nGFKpe^$NH857+p<8PdBbU0mj8S zR_KCY4G}dPrXj%@OyukL)uD=!dCUF2Q4*xQAYwse?))dK@n8>5@oq*~-j87V$=l@A ztih#gfs{+FQB11J$sKvsF&bww#l>b%2-@h0?)fZewK>eLP$hs-oT+V|YMp{izP0%nSq2ws@aTa*OxWpZQSbc!pb)@S5L(ht(OonDYR42U~>BT z6sy@`h&YO#fkiT@;y_%gT@wV%69s4{uD8(#sDzvEmiR)0_%eByd#HEOC-@_n5*Ct%*#19;B)T+`=2pd zBg~a*c1IM0O5vQcqhc-G^O;J?O3qV|xpDqQ2)(ATecn3!L4nU*^Q;u%B-0(CQapvh z!Y`*>d;trU>WyB~?qp;p*!3HY^QQ=ZX8XGs^`ODWTtG>y`ai&q6;a$;NTyJ(y=Sfm zTY)abjkxPMs%w!o>x2RTXl#{g{p4!Bxz_|Ba8=nsU@0BWp%a{CpMgQS}xJhbNiM%Mekp-$3aT(E1o|S1@DO4 zssLVA%*`uSmL)ac{$;OXVFib;)6i#_)0*|LU|noUZAu%h(KIy`jVy<)PLSaO_3P?9t&6V+ zL|yCOIbSKW`tr&Tb(HeXGeft2Gks$NG*dd+t$uhk)YB$Y$NPd zBTZ)Hf8;yRv93c0TSmI25vl=hroYRCrOfcz%Q3Ds34((3A2wxQH1gdTQ?>FFR4;q& z{46dYv8>suHdn{se|#x%5haX2i&lkioCRwbzC|X|`Bf20noVd}*PsNSSEUf1 zw{FpqIh_bPTFi^uB6%-$78Y%#SBKa>$is6*=RKk!+4az7{ATMN=827Tmg;jyJ+9E5 zh-{6Mc$}aNjMvRM9+vyv0<{f;{*2J8r!;e#utxRn2|*BMfZiuZU=5(UOR8H~U7;mq zBFZ7&Nm6v=f6woO9VZlMRRel4;)0gm6%eu6J%KYR^@O~@umq>w8GPLO2_`R4G3dCa zRbQ{pGIsW{UUAda#ef$$s?^Sj&LQ}_qI&cwDBTDo1p824ZArRjDxF=WoEK-8S()n46DDuMmC zn$#%%2G1|j4g0-)3?GwHVUaZEMG}GP-P*tjjkVU4B?=b|byp6#!{+YL2S5Ri`LdyFB*`lukF{6$+Proef%xA-BqT+ zFPUbfPyFaIt}63IYne(Ay3u4hYPiBKhImC^ID3I^S|mgB{tGWxU_5wVDJ&0FCU(nf z-J2(j=@C9;aRjcrLGw@GW5n1ghazgCGB2}j=5(JytQvr*{z_-$ZxFr_kE!D{&Zg zDnw7wzKx4#tml(r1%5%O)x~{AfS@Cw8XIS@fx$@}7_ z=0F0z$;Wt99k`D{05jerDI~7Tx;br@$JMh1%R@S@*R&zXkjeE~q!8lE7uXYJ4uBL{a>|Cv@9 zU$I5t%WcZ?1|4pvH(eC)xPQkHU^{o!#l@t15yRAeV5X%7#S_BFgSCYc&^T)Z6xg+Ql+vZ1fFBx%rgK^bL{vnm(ri3$d5?Qd z*ZA=xM~No>#kxR9|4*73md&<#hGBfVZkh8WIvpFxi1$b{8-t3;q&Y^~oOAuY-x z?p|O1zhzRqewl(D*Zf*pe0SJxOP>jPpXf+M%%E)fOQ8%S%Z9K?WslLV>0s3b$`b25HvI=(x`lw+q1Um7lmjQDQTQtqt{{sKU1d;fF>HiCt>@))dTk{98|7 zWv8Jce%n}=v6?-iu%y~#yFtKC8CR>NOO3ysa&GYNerUNGGL%HiGdd6~juqU4nv9j? zKGdW+-e|XDt+c+6)y+40qDcc#fpg^-NGlV60W8tfhW)!hXug;}IXIk86QrIc7rqd$ z1E~H<*vlVRO4fr|;wokBn^TP|t`N2^Bv1EBP8m06_HLdZN8Opts*()2Rc~)=5SGvr z%u@xPeQA_$By7D`jvkAri(B#9bg%2Bh{0&{y1vYS)%}tR;gSCDsRGR(QS|mKM zwn}QL+lqYz9~r-y7Yy|2oHE|P1^;TZ$RddxXF!!ko{DxZH&_4`MNxN!7P?tvaNUlP z(LuYdQ(hk?b(CxrJEM5ua{#Q;-Rm``+V88kt*NwfWgud8G(c)(!J+Hg?bW zry(+Nkhdo3V!6lZ_ocrMFS2=5b~t;`nXsAad&XY9P#Ad>={^;{CPk0}6V}tmw!ili zS2J$8dUV}6XO{Y9%3%1VVf$Lcuep15>j$Zh-=F{Td*+KXWNPix@wvw2u?EuRy=~%6 z*Kj_52Zy|~j`OaZE6YMS%yCQ{rdCq6R?nw5h8{LpQw4`yksw?-x9Nc#xsOszN;1}N zL>_g@*ms1?T*&D9Jv5w)vahAiJnyG-oZ4! z5wxn^Y5paV34vg|qmia2DV0;Lwttj7AI!GTi6hFtL|crSD=0WmtC&VXR+oOqwa0E% zg#kMMv89VfE~I)h2o@H2Yk6Rr37+`b`2be`0ipu!{<{)7aI@4;xbiKR7h-Y}Kh0!J zg1z9a+fNiWYYon9o;s3{a_UL>br7M%+ z3)~y-a3@&EQJc-!+GqJp{T;m!@ZCY@jGg3EnYMD;w*?=1(_auY>9*+(qj!VW>F_b) zSLi2#OZ@P}9v#5z27U`f5hXQ@(x-uk^MhL_w%A6dCUbYQR!-@_7E2@f9cykcgTX|+ zpPtYaS*qMm(1K{{;%{2JU)kC9M1?hZ88+M3Qh$NQ6>MtCMvUf>a6A^|73E%`=*@9z z(XOh%yr+ABpyfvTf^Zur?SDLI@9lVm)O%<|^FPL=Fwt$5)Ag^GMJ82LhXs1j%I|u# z8%ZS1Ol7O|+1Qqtv+nR8sF3P3u ziBDX~V|vI7OY4%}Gh#Fqy1hpm5k-d8hpa7siZ25Da7`a? zX13lr{hi8YyXAe@Zwi>}x$-GYN=w~{;A$gfQ14-EjuZd%Lb&cu<6h=;6uaDRitgx0 z;{hLss5w#b**N!nV;*Odo?a*+K zou+2qLXQQ)HlF+Ry42wuqU_q0zTe^ry2Ew)fL7kNavL+{CX+7#tkr3HCCVRSuGew|7*>?7*i4 zdh`eQHeYu+KhaUwLm)&8z}z`Q+@#4>8g51%A`L0mbTl8M%SC%9zPuiJrz~q%2v%)f za6y&Buf=uew(fcqtHBbA{{N_ExbAmo*iQYT!|8^uP1mW&vrdNKv&58ao;7UyAI=Kf zT~L%Bglv;#9zXZR`gZ7zw?Vz<5{3WRta93OWcpwK6gr7dt@6E{d0uO)yVG5T!(|>T zV@0yvuNv*|ZndV4Y_@IyK~d*Qj1lUvz1^Y7kEPnR-q;iRs9CC%o*KBLzxl>%-3BvW z&%RQMZ3mu?j<#ZL8r{noIr8fA*dU1@f%l*D<_YaZ2eSO8q}?cv23FOs$i7l1m6!c> zLyP*|=3oH!H=f)xy60rDGos@LwShndyRWb2Jm4Ar{uSkO)orrq>w>CtkTkw_kz;rD zk5!A9TTq?1^qb3@ zEvfOo_VIvNx01qM%#TX0q@HnYqekz_gUM}-xKyz5S)hFBMMRFsq3o4y2{hXOJL)|z zNmH)9UF*?rvAPxMsm}vXO!|)Pn@Q}7j6( z@I(fNlv@#7tt0pp-QC0_5!D>utAsm5$;d10!BdTIygEPw^9HE5SRaz%d{X~#Y;2Kuej7*T;-lbiJrE1l z@qQ>oQinL0eR@2XZjCcKk6&a4NV*v-tP5{)@I`5emrEPvHV#G|)m^!R?;QPqe6Bdb z2OD)f;!0wF!C-zo2tHVfpJF%v{2+{(BNf^wfYuf*O3S}9?$A^J5@M2K{f+YU;yL07 zW9kp>ohIlRXu!Js*mkV*Ni zl|#RaqrjxOBbh4PpfS;>k~zdh-JRB?`s`OdA`9O=;h(-oaIOV2C!k_<_KaWuEz*w!m>?nz1^tA{4Xx zlYLB+f;zx)i>a*-3cIGG_8bU^99@ox!y*>IFI~lSt$gHlN0ok|-cxTiy!t}~ZKm1M zZ(pQ#+4iZj?N|~YG3CPO%j6zFOby=)7+aP6V_IGZ?cHyr(}VvN4(0r zRb7Efgi^&`=x*z;qQS_W-?z2Ljzfr7;o^1=gMK9@e6K75WX!_ZJ1okN{Ft?N?ucH784_xbBB54p_;@AxLpjSI}JQ@TL zSWbs{9FrG)t;tg(<^etePEP0xX()iT68f_0xq5B+L0vg;sBc(|jU%{z`pyA(%e+A4 zDzX_v@r>IYmC+r@9{pfCZCd9t8r;e~0B+BYJVSN5FDV@QliafZZ>kjC`oN0umM0Vk9V{ z)F4x4G{CHN3X(OVpugDP8nfV+kPyqcbQS2SX?Zu*wWsK}sJSxa-UV*o>CzXE&XbaO zK^=_antdFzY~5B%g(tBKjPcfYowS-S?!3F+J%+aotI(($G=b1-I>>yW_*LPn|MBt> z+DzF|cSJJ`G>=3viJM9PR-)>8<*v;i%*RNRqRL;73vto7e1>=2Tu$%SumDgo3&!iq zFZB96bszcN*9E4eCA2frIXVkiwPQIbD|JDwRN0r*m!Bfg4vHn8RD%PIY6}I|Lc2(w zXqw2C)H(DdRP-?=wA*PwF@cwRaZIf|nA+h~KV@8pBBc8`aFv$_!{%hZ;DsJpw^sRS z<5}&1eqmcQ^Pl*%c}NGv{9B8W!?rd@dPeb|fvPn$4M_OR+oAQfLQ%j`!$pZ@P#;#b z-yFrr&{{a|yqkJRzgecuAPs;IjH>g*q}p#S&;`Br07PIU^Yc3~T0(Tix*Y~?MtL-D zfx9)g)`~b9{sdn$SP+YMx&u(o5T_|&HiFt6aDc1kZv$TZ{Pdn34m9N>lpw0b#*{M_ z2nTAM2jz~f48YAs4Kg@4pEq)1zYzqqY((8WP9Gmg)jk0Bzs=au7}2_q8w*9WYCW0p z7S}K5B|%GL%id&~`ciw~`Fd3W+m+WGeRpbOY1he`y`B^p7q9|HpZ+yqU_p79y~&|@ zPgrx@rn)0uKHf7?UPz>bfZlEeAIy{Ff;*lD12q;TK^jAKUd|UaoL}=4U2c_2Dlnhz z#PFCutfeCU{_T_mYu&!bYY6DA;_ps8yd>3WF*kbI3I(IN$L?x!X~KyA$CrWuFkz|x z=w>zU!(Uu7A?h z_5vY;y+JRvRM;(70s(plo8xD_AlAt)5YTs&e^LG)udY9(V5_ZzvZguhYLyVrKb`=m z8QNuF;}29xM_!f2*`9CFopo>m`1F-yS5gllg{lMPN33o7?G_m<(T9hfI6Af&i{%u_ zgz*BtVuVC~7Kr&{_mRa*HmCoxCC&evE%)V*<%RR(fRtbZr?Xu*9)HZ?dk9Q89iffa z)70rKz;0i=U`Zso|MKNYNXKP`3&A+q*=qbV>8Y@?3EujpJ$xw~z74fs+}-%t>b~O~ z)dmy1Y5B5Z_2@PJ6$lzKZ^O|6>KKLAW)y!;A5~5cT$kGrZx{Zcy?=KTp-9KulleJM z#!e&5o2r+NG22lI@)VV|~+4z&m zS^?deiL*-BC)YRbrlkzO9 zp0A0GTBt&ttIM2>MBf_^VFLsBN`0i-wVs_f`T;pLk_^spp$)mTL%0mlAG5(R%460r zmez?&Gn!QN;CNvleY#j3Gzgp}%UQ~eE2uVA6f+eTdVultp6A&yVRT)*c z+{yi_8vG-TU%1XvrT#(<$Y(#W;I-4{nQRIO(BD&bHWoS%w*OSRH+2n(PVq^CILaj+ zx~kO!OjICC0G#s6eIlE{>1?EFR+P@sv&gMKJ?#cGcfu+?R@fwv8@&I#7snBO9sJ@M z-_&VyV>9aKB_ygormApQ>C~@N>AD>#UTHdHBnS!Fdp%;;P7g%w%9VKzwqE%(?!0Jn zmc!lLdT|n+oSfYB`}bWVHw=QO#^l}=lTrT3GJNJa(-o8U0%wPX_r*k4(nK7uUYs^b zia1%&k2dVc0VYC|J@R?GzXNBQqHI-7=YAl!{~+v}0E;n)z2$q@i#x{cF|8qU@Y?9q z+_5mw(kynDt3}!ew|4p8YW9G`D+AJijT%JutmY z(}C)|bX-}6Po=uNv0Y}i5PTr7XX9^)cb6P?jrQToZ?M#KZ-d$dREgF;x zzuIfM3cN7ka@k=0eQ8{v&yZ?O-B9Z$k^hX;Rxgsw*vCJW)ScVg@;3S0gwFJrEgP?! z;+2vM3{`e#3%Ye4`SoLzsgjlyfGnMv#7QUG_rci_;w<991P7}KM_1!I8r zibAsh-IWyYGgL*~zk$)&rTV@zrRK)PKYiUec71Ixc&cd z_1@udeNo%+h#DnYltfD+NDxDaULsn85S?IjlITPkM(eJ0z3zMMwYl6ZkcobsVew0CUUkTZjaL=GoiFdK7B+DU zIRj?Vc<@@p?U+F6pxkjiVhIsK36ydz3-0?mxlO>Wy22j;ca6v8b=ZHQeCeA5^V1gT%tqZ^R0n{NpI-18dttG z9&c^a#km956FeHwaorp%MZ76>B{3gN!alG%0xr=TsPAy0pNT z-oOq@et3Pd8vYf#x>3tRDiv1XtAzttYaoz_D=uyBSHLSBPMKy#?zL#eADSbv6C znO`mas3Wp-y-ru+{3aJk-?i9b;@U|f0n9>JnPc}T$Q#pPZ7s3#V79UW3m%|f@m@wo|_d^=gsjg6qZA}VQ10%jx!leFf8aK9i%7-+7fE$L`NlWTPIo1^TS$@Q@3+o6X1BAqm#*sC$O0#X)! zm9g;M@&&k`1L(++*Mkd`&#E1Y|5WCU41Z1WA9RYB7%Z1~Xse2k0keIzBVD)D0Z1~X zyht{41H2TKWDHX1{KMI7+h_K*JCzGeRPDz>)Y31+j}W=|ZnorkeC%`gi|zMt2rd}4y~&Ca4cJU(I#&Py`erNqsloZI$bAP6=c6jWPG0LL2Xm4}1? z#|*a6RIZ;dPGf47i#~gZ2L=X~0Z(DFdH2Jt6R;Tv*sgOBad%cDXxZ!F@!mwlah#K0 zM0WeT1u%J8a*>8Pl&sajZmSd_OKRYBMxVtWb+k+(I3QHBvaJXG+4b(6>p|Ln2XNdU z%5xgf=8RgzJvuCH+Z7;gsW*gGlaF}KF;5jZ+|i0tyOtLJR3eH7BIsi)eh%8Zm}vld z`}1QLJg|TZ(RD{MR(<{Va&*(`Vuv6t05|32m3WEMvSsCf1D|mTc2izkFn7Y&(W07) zb9p+dtQ6%W^W)DjeME%DZJ!`IKCV3WO&3T#m9E?hw+Pr#0MV^eiWcX@P;d_BGQL>= z1(y-ZM5K)=uIPW151ciTycW(IYL{O8(d@tKisHbJfO^YmkIy?H%-f7XI@<;}Qkd{o zB))zRSdeAIqegbNdK#g?kps4^m}9fs+B;nj4E8#JdB&W5ado!asZiRCwawK`k2#tf zdPHNm9+_JX_>y+>|1287`QPzNjYJTCVDn8FB^zsFDP{ld_P9Z0yusDCB7K*aL!aIF z8Ql)(dO&(dp%Y6L90s9Pz_Huz3( zNWqp6I6!P{PJI(Oc;3}VT?qt7Zm;i8Pj{w6l-7wc(~p!mz+2F_WycI(CJeSw=D;Qv_4KsCQK)vSml_$jWG^omH(>dZYx%PCtg|nkse!86UwRc zS?xT7z6R=tn1A~J*JV-^w`hMX-UnecC5ab&?t_cbjW_@Enp^dCA;-Y-wOOJv!$o87 z7Q&j7-u=acMf)a8Ko5THEG#xwSJkF7g`}(E_rRQwBT+ok{d3a<4XqDX&H)^=)moJ| znSyn~I(uMuEY>3%Uw6}H_?uqm>#MhA<2e<8IPGiB+dR>{^rrS={+2e-93BFosdUG# zM}q6KL|6SMfA#LjkXtZci1 z_K)Z{&6n7#y(&Bm@bGw2XQyR9Qs2=qfciCnz_%GjziLzd8C-rrnv8{G0#Fcv5)$HZL&BUW3Y9R&r0YhSf0ro0sp& z<8%K`KdhK;S$5y$fcRm?W#D-ccADvex>hLy1R0RwzN7m=yus}=bGQ%@W;VArzE$6~ zffxOl&bh_ULqy8IE{Qg7c6bGo&I=Z~s5w)jP8wR3ij#tUn>Qx>-jqyP(dD zW}B>8$6Ida4jhN8A9BQ#n5-!>pyYI`A1bU3N!#jh{wF#2d{{~IvcTqVJn1;EZvdMA zY4Ew78efCMF(eObM@2ZYg)^(N42-Fz`XpZ|7dHkS{;KW-Q-c$R2I{5jJQJnbcl>2Y z7<(2VKajMf7XVYbd)o9Nwa+ygU;qTBYsKyj&AjX@%0uj|b2=uVmu-w{9+E0nhR$kF zkq)WBf2RE7Y}e}<&&k%fEja4j26u;X)!p;DSOvQ+0{!gSLBI~fi+CFe^jgiLNR%h# zJnFcN2F`z3aHMl~$8U4CPI!ttZ>_o35hEsnDdmJ{Y>D|juD{oW0c~E+JnKC$Tat5C@sT1 z)>E6V_`4Q^wz;tRASCR7eW&FPYXG`Aru`ac$7{nGcDy`e*KaW&WGTlI$7Xl+N&@@( zQp>JiM}5uqfqsOp=i!{|%_T1FJ?`?e`?Dwcq>HD6%hg4sb1ih12A+(8NWn-3gBxtv zK~!_#ecg(2JZrVx!Xc!UmoJ`?l%I#{)DXnp^S|DMbm^}k^@PYB*Lzc6oAIhSZ;!d( zfY_kX0AL{5F;$l<1lo6XJ~sjO0P_s0wX$Yi!iBM%-$v|dryD2fiZB$9Yo*d~>V>bv z=ZgKXKu2p+g+i7{v4$D(!#bK73AhA{+g+slVJ?#^9sg_vR?8`AcllCRvK_N{RMe~k z8{;z3UlL%lo9`PU{als>P?cD8Hc-0e<8$s3*m5$30UKl2M%&Eco-Y5wsL6gu5Xwos z+Vj+U(yo8zKqQ%ZNn;Nn7o)VkDIpsFzY-!*}L>^on-RBgsDsa z3fZCSx%G-nxk#HQ5Zt&fc3xGw-?b4}+A+Aj-&D_~CazauuMG5?&x=nq*#9koe~O+GMNALuE&*vVG_XF9lIW-~^Z|uj?68FFpQY5L>Y|Pk6HNyDNeb*a zAXaT_uio5FQ5P}sm|e}r2MO^f;MnlwBElxL0Ax{(zP_O+WMD{0iD$H=qF7y)&Zw5+Q*s`wg+{sIA=K@c{RIyqQ{w+hg z6=4?3+paf**4jF>MB$YkTuL|~yR5~VxeeS;-?eyNcV}l_A6n;?Oa*o;FuYZLR?!&* z(ymA+JFWei2Wx&j*5Zj5H)?`q@ykKpS#6F(aOIn9he6V!FLt6E??@S~099A!uAjgs z$IM4fC1+(fsj{^{bF$RyN+u%$#b!oUgu~~8z#zLPqh~@3h%Z3~G4}|xb`K=C@B0!+ zh?hc7CfxOz3**=AIZ&gNyYWo-@O%@cUgoOrHDB`elunpY-AdaeAm6IU_2?Y z6INctN90F>Uxv?da8CLwa{)%u+;Yh{j&1oC1#Cq#XWY3;>(273p-;BFIk#SHleN+> zr`M3DbT`-dv)3Vf@~5a~Dp?!xxp5X+X3*$&0>Z=dkAC-z-r+_$TqPDeG4P|vc}JDY zN9nCn8>!2ZhIfBey`1Punk+MGY1LnawyoPDmjBM&fBH48g*>W2hG)t6K%fTF)?NC2 z0RaXF{r0$)$G=@0=U6hfQ?92>8{m4Y)>{<)N7_6EXJLGo!o_#$SQp`7 z`z%=P^%wP?-G#(M{UrHDxOg4}au}_pJ?#Zt&WU-8Pf-g9#Gb z5_Go3sK*pn_(6+b zJCnQ^nHm+B{ZoUqKAcg&P`U5jJ3y5;Ff zdcuYm-L&$ds0S(O>&T9@%8(Lb%HVt3eDB!q=#9K?APl_ zvD!dg+?`?KKvc7doSVZ&v+3WT*5@NGjVMFcZ!+M&G1oKr&F>Xr4*rEgc*2_f1L{bHlnWfd@m*>p~n_^dr+bsPMb>#KR&BHQzYL8ZSsQU*7tqX4rbUqM9 zpk5SNDwj#s2VA z3G`dS5CyYpE2C0?L1Jr)CtQH=Q0`wg#%8u!+Mks49+|JLl04`MD_EK0XNPw3u8O~i zqgmKZ>~lxVO0oX_R=MHvB29a~(tCQw^aQOK(O7=@Wmv5`5|P)5)=w3>%UXgUAap?z zO?M?|-R2a)qGvtV=V)vHM%_(c{9=_O%ks&qE98|sxSbsn@|e&!e)0Sd_|C7(z)eJQ zSxTl$Y#KF5+0s~anDOjxf0VB|-}F~kP-x>N5~ zN3Z_CMZz@ZJ!t3aU8ty0hfbW0%iHJUO@(D!4WwBovpVc<_l*X^oa7Tpaa`dE7{$&c^Wo0f@g|(Tq-_@CQ=rHXV+g) z@&DQ<5FWd$tCly4H^BufGec!y<(cy#{$&BC|b#a#rptSx+3KjW@%Bzb++#_P-*u*61DzUP6ytn^3E z+k-B}^26mSn5z2RhheUH%i^%fSW^UKXOj7iAY0@^Jj^c5!4<4 zW4mW4$37*g;JA<9G^4aZUEt$T!+{O!K5UM218%>bKgqyJJ|YfiP3I~hqHT9hiuu3ufX3-Rl+}t zks6?M2hrnkz)jq>RYqD3&#?(ZW`h=wtrl~{$;|rEuH!#@mP1K1-a*piCp4hpci^jG zcDZncZzgLR$RIB`Zmgg}UK-9`@ry~ymu~uI{m;ATJ?CdbpLD(c;p|wbIVuujnYhqB zSWMu1kQQD<{|A1w@A0Voy~FzZNe@1b?g2S^@+JpzAH-gw>DJWt(@)@nl=v`{!&TX> zGzU{<+K7w4eQvt7TvE zjwG4-Ifb-3vmV-b3jir1TW2XHNvj_c`zGWsk3V($9T=&J2a9{Rtt9E&l0xgS*ol{9 zq58<=#2VZ^vA&YxRroG8i_MCkD%2;CeV^QsG%=ce9%+sWLWgwLdctx4p;!y!E&7`B z;G(vfHRZU8(CSE>w)FP+Cz+3&$<%}rzOG?@)?wd&k}gxV@|srluu@)qRMhekeqxp6 zcHiLz45F?KCp8z3#+qi`VU_~#nP5{LVL?#?jix&!aj*I(E8z&cg2qlbqdqgZ6k?j+ zX9q4wINQ~EyUXG5UkOp9+T01mh?T=O6)8=tIBzFbsC4ZyS?yEoUp+iq*} z359wf;mpY&526jQ`Kya7G`hw-5wXR(8|t3L-~IZr zC!cr05~zfRK*8WMQ5__mYxd917fgff7pJfVd*)Js;8EI(bgFs=W2~39x0it5TSLTS z`;xaVEEwyrrn8Ju5~Y_#-m@z#Ztnl<`@J&?ZsN2U$0zjV_9ry(4K`o#ONI0$(*l9! zx@;(j;1dd)r7Hq0%%~~qrAG#g5|~hLpR>J0s0KKFy8jNbj>xi#8FoWmA7r9gyKXeA zcTw<{|9P+D|JQr3p=3?+(AV6^d*5tFkJ?_?X08J;9U@OQ{)i?%`k0yLJ(<7w{g9U% zoAsQ5av-`G)xX1|V;K*=Mt$Ep|GmO@T;HHBY4Z1Px5;9v0#8;tLHrCjv$T{3#C?~e z%X8M{pqR{~7Gklk*w!x6?Bm-$Rck&g_`QDGzQ5QdqxSd1iEz3g1sd=Z@uye<15J-; zW`-8G#tN5~WFIz&$?D9{Ha-&c+9M9c!&lMf!xxC3$6Ug$p+)4bU?t9!5tC2u??F?|JnbnSyBNLydRBbkD(gv zNk&U44e-x<1*WLqrflMqS6r8uvpuP=8Gz9k$+n%G*V=%U(yr-w(H4t+ah`g0f1{L7 z?;h2unWtwhQ{*5M0+4j1%YAViOPR7MzKNCg8CAIWXI=zaaw0kF$oAG&s^1o-i+)Y} zOUJ#k121YJFOPu-Qs|IoA}dJ_{M7sR?-4;)r%xQ;@#Eo@7`FfJ6`XgFRpXW;benl1 z={uUpI5v}grdJJ@2phORCFphz5-+}^UH?4PnwS)sQ5tyAdrSI5#LTS+k_A|Tor?=- z>+H!&%W@Yy-hF7GiT>Zoa97=#2vZrlZ2(`SwV~X@Y)eiR2wX;A48>aDT}}1fV zwUf>dK*QtH_dq>8DZv>TPmfPdGfQh|;<@zSy2(=SoNBMy|72B`lcn^;CIdwn9N^BDYg@2r2(EUs7A^ zI;pXZ3{iehFk`81oXT+hx%t2yz%?qrxsR;4k1}X~gPK@YkyG3pw&voT5n{?Y5CbDJ zE%fkFW4`F<+on9&{2|iUTccv5Bgaaj+#0?4s?c=dBu>DV)R%x@>yU*&BKQyEJluvx zhJ6*EjO5&>ge#?SV(g-B%IELgjI1s(j}fK<~tR`ZafI|D3Nk_ zZZ71*PX~LCLs+d|JkMT|{rivo!zo;JA8P0365N;X4b(T|ELXA`8!iwkdDs*GtjIOo zi&*VRc4jcd=K52e9<>|RTc@T|0xH8A{K)nL{v)JL;Fk&T>EDGEJ3QqtUg-u86ny|Z zO|dl>8HinJJsc*};k+ppzpguEsOrpRPCb{N(mprt_5gQ6p9wwjV*jveD*c%FWh#x2 z>xH#d%({K*rqdCYD==dnIRJ6+l-AWY%?vp%IYvY)A0RpVqI4Uuhw9d*JbCyoGmGtt zQ~~;4W0Oyx`@oFl!<{>_!oke5445&GP3(jlf96*Cn_~dW%0VfcB3@~CbI6mm{fLdh z)0Mw`E^PCTjJmg{ukB)u(%2QJ%*c4?dy0g+yrOGaubj=8r}61`z53xI!X(}%LssEw z@S?+&%tPuy%#6MoG-$VpYD=jz`yw>sUv&Sc{e~e!YYE-zD5#a>sBd^~_nm4CWzd81 z#XzW;;OMao;*>TgJ4((5MQrBYT7m`Vtsy3nd*F6LFum(Mkmz2?ss#ikKR@jE9|v1= z)2?wxiOj#Ae)yeHL*iEcWrnM1{WTEQj%@V2{k(2IO>s3%d;wA&+zBcy&=#quDU^=4 z!ojY2H5N5P8WR~PTzUfQvvc3K{Kh;Ow$wz z;&C3$*w1ypL;<=5FO#dk|KwuO=4(=aC%1ch{M?b-O1uB9v{RMqqy01Lqy7Eyxd(jA z62^VwWBoyjs}oJK)_AB-*5abN4r z^rLJ1_I{{W_2D>Ztrr!2=t+D{lBo03?t0QlF(JVZFmdKLucS8LTy1TU+0;4lVPZV@MrmS^$iyi&u?(S}fM)26%GZW5_x9d0#kB$Z)B}9tqMtSGQ zS4`P#*bV$o6|7%0K{Hqd_yh?W<{}ei1QxWV#4g?3f9xpAYz`9H55AdLI4@@=cakr= z-0OzXS$S)5PFE}3)g4o&d{?d6{@joXMITPIIQY zc*^5W;;TK?SD%*sR3bO-KSL92sIRX)WD7NqPcMRzgVGB}vk?u#`d`EyACt(DF770b zwlm*J(f?J_$c}&CI+?(Ovy-79T2rD;(Fqo2P8a4k5^sBp9K%|@>m3V1?;cP z=AT~*u#edNVI+~;ipz}e2wTeBR`{gVKm+{$2I?E^{H*jq?CZhDOeCTg13(3Tlpc!R zPhPcDWagEC_3<1rgA6|MGW7zljC@Li6G?LcTgIi`xN z1TwV{&Eq$p;Upnby7s+lq!hm{h_#pA%_w)q-Ve||USQ69fs{0-_m&j+e7fICbobfs zm*mNJD(!|7&sagFjJ27&UDFW99GtBwYOM_{pGNm_uw7*<3V{^9s1$fr)MPxW&$JSgeSo5xT?6pI$Mrp zr^6CfyKziB@%^bFx3q2BoN7q(hg|z32WJP7Z&ritmEmr#A&bla&ZipWYQvs)zh_27 zo$TE^#{x58!3`Kze~Ix z`^i;@JCTKLz4!Hn&e}~wQi@FQAz$@`AVwYL1w3IuT1A0q;ehgoi-_DMPM)h5ZnX>B~ z8>v;#KkuE@)$DEE=CC!M{fRG0%;8DX+;TVf;NRGuj6(%wWl6ldbIWanJZ5F;?NtKa z?(|ANCfJU-d-01J`(w)m55Lt+NMMdfo`>bD<~wud=oZ>}t|P_z-`^kOJ$6aYu?Jn4 zaV)AM@j;j1^!!ckQ`?!4n-XnPWC~b`+=2eEytPwpav#sz{9lo7WC5FjWE|6J1kWa3Er(_M&{>0LYlFf;S2oZ*7Y0Lf&f^@9BvgG-Q< z5t%^Wwi}RuyaI9)7UXGujKJ~Inc@o#NP3M0VHirmti6Cg?0-@q70C8f@D^8pAUyxa z8330jzH+Pj(h6O3!9+y#zX+;E&EMJJ-)3EsT+5x%x!%lshTi3QVgpkX>0P?*gyJJf z6b!p*vHpj^pSPB#r0?Ni|Al=T_agN^ed$cdH0k5TA&#z??}JiBJQ?>$B@7}2ES)pz z>mSqY$E~N;eZlsuaH1*Dxn_&f=xG{cp)1Qar{Nc?egMAtJY=g=Ly-t#Pn!#%x&Wa$ zKIyAP1SwE2ElxORTuxnKflk}y$_{C);H6?gC*Xq=XWR;iZGi-WI_M!h(|HsFFo^*ZcUzM{OTfQUE{yMgKUJ4t`tC9My+pk{(h$l|fAO&H`Q-LWx% zfQcH&Ipf1IfZ&xvuR9cV#O5lVy3~<}W*j+GtUFUp3|74bu$A0Tt(VGpYdUYou!%p+ z1N6eV?{fy0;2$0P?E-89%EZtgF-v3kmhup{XAAY=qYxSdTsoO3*y;B@(2fgLmSH-1 z6%#10P)f?>f&8zPVA6Zhp^XLEFP!S_VRzzB1(?om7Cd9wQV^$1;{I>IX*jIE@3Cwj zEWbHg6gKX0Ee-9;)q5$o>TyGS-_=Xsjcr8;`V$ErpZ2>R&-AM}8IUB! z5UJ?s1WJK5j2w&UT3`Mv(vBo~7u4W*QF*>@`>_k?(`Yp4L27gaXM70TRuL`Ql9`y{ zdWKeU6PhId9JT)OKN+G?;=_)?;}75hHY9!_bPu-P4 zUvZV&u2Qgw(*8MY!O`y}A*qpyYzsCLxUD{BM1)2z50@8{^z%xfWZ56yqOJ)CH;0DM zY%2PdB+2Y-S=LCpbDdQ7`yeQheTP35-;Q>a7+ca}!HoaBC%1QIGSMQv6(Ta;IdgE% zC&$Gra@zdK{$*#MRPq+2?Wq>; zoEbV$^$*P5780Of&+Dxj*P|+`o*L}n2r9;fj~CZp%WB3KBesNVX9orU?26GliG2E0 z|0%I+fA`t5dm#){zmg-hx-Q7=0S+c&wiJPKX~y$90z!j2iSVyL1pus)Pd&$$Q0z;S z(g$NfkX4$UFhkUlUhn=#StnaGHU%WS) z5RQ9B{cUNe&v+#RyIaBrZ|5xYxfh5H^*PGPQfFqIz(tAYSH6B)_VXQBT$6w9lbK;J5OeEMpg%O zI5+8b&kn^)dLbBgsUI}*4>7%m{pImMdqmvMV?$RPn^kmy>m!mN`$iFJ77e7~ z2hRs7qguwR=+}JLtIzc!jf-GK_Yx!3SLT4Ww2pXoORerp^hIj(!J{|jwVqSVwQY%h z13-yo=B6l=)|v}MNvI+uhChT3c!9S6Rm&?xPHUHy?F1S^cP4#Jo^}TbE({!&Xj^V8 z8*y7ah3B#RjsEbX(|px+68YfYoy-m)TPCTq>39VN4!O;WI9thxXz)z>30h+8iK{YX z?|3m)qVW*Up@tNR$Q)6C3!a%n^_hYzoOn**`?&Ms;e@?O0K2HTZ5F5?WUQx3$6M;w zd~?K^j&N%H9eH&CkXP?UPGY*Y2+c#-=tbZjn$LAyNvaa^Q__SqNwz0&;F z^Xc{SHI~DA$g9(oIM?em_D`?Hsn7c&C`AN}I&|57G+lo!YRZkiiL}F4+L?;HtJ@VL z{$Af2kL6H{7?tggI z#gu#9UF+=8O!z62&Gd9#O~G3Qod0YJ+L2poDwhkq+8#j9!9Ai$gCkLhYt4wINTX=R z(3j5PgU)tpJqvo&HLM(w6-Xgt#jtL4m#tQU^@)feaQ+l>_GI6 z6B+nExn^VLz+cy$yo$LC=;1+U0(@&R2b;FUGYpbu&Zi%Vx_53KDsI)s0gGFwJm{P6 z(bWXtz40*sukpG%S)Sj#SERLHm2c5IaIWJPcf1FnMHxUG*OO?#>3xaTkCy;s2MoH> zt6S>sEX+#Dj%o>xDeShNjth;sTPL3t5n#+kU1{xD?@+L@JWKIMJUsrcPu;=nP4eO8 z*NsgFr~#!}-dkgb$8K}S^~}L`KcW-vxzt=Y|Cwqn5jXW4v-~oMehj`Np^qTMDA)Q( z-7*xlIIyCCCA#5_3saVFL+CEb3IVx`k1T+{}Z0xocwRHuH@&# z7W{(cCCgw7qro$7d8V1bAX}vX4|)-gOVT&z2D&a;S}D=NuFo2Ptw46t6IuV3704E4 zMwdnY9@Kc%HszULjQpkt@aF*)umEF7w|C*rxf@bB|CklY+7{08hj4htLmJx!U=!yQ zIExZM@fx}6IfXyiwaH|mbDvbD6J`h3uPiL6QPfn{WB6P4QolnX`~mCQz`&x_)xO>@P3mC2-Q%kxDH z-**%?;%>{O`<#%uCyiszTDseO6dN6Ot*aTInRy5pdE#nTX0KT4nmBiW zq+V}F==#Uisqde`0RY9J(|j#VkPOJe|92II7y#d!79}tqSeV#9r$A`4p*_26q=d9B zWtb0LVEfvQ#Bp8?6quaKs_j`Vkh5o;qzFFBQRQ8&i?U_OV6}d3stSfWNU~t-On)*^c zS6;BOezZ$oTo1Ko;YkZvGE@eN%+6mIOTiN_0%Tee%yQ~`Bk}HkCEIYi)hdjdlCwT_ zwAcX?_Jf{$8^@fL&YgScRPX;|#QHYEJI*Y;5m#0&H)3slYYv!uy}V99SePFL!vj+nsD_ z@G$WE&UFXKI7X-P;(~@J4_-c|6Q^Rk|45#VPz^0EYTM@4I~n%vmsV_Xp%c=52?v?W zd)$#9Gw$b}BMZ@LyNyy^m0gut?QIn$I!DI{?;S#boIL`m-EFB3c_KW0^1S|Fl^6i_6iJyePpb>hxLMhReV|)%K3i!^0zKmLUw-b61xQ^5*@> zc6h2g!wr0Z^&{MOn)KEiJ+s$dS80%Wa;B+Y6g7I1Z?phFce8S4?Q%41J{X;-BAZ*WP_`#t4~*Li~yZH zQKWU#76tI-zQ6=v?xiGI2;biR5HovVB^Vwk;fDkfzzD*wN0@k;(g^_30n5AMBg>JE z%J}Ye9dDm-@V3XovcxjLfdVqOH0lq`EVYPw_E@CZ-wZ+erA?vZQlwrMPNgtQS6Y(6 z#_(YkUx>grA%WKq(5ViBf;nKx%6;>8)QMl}4sbnNb~s{9gH`VGT5w>yskA)AWlPkc z+jEqNv3v)*kDdPF7zA>qYF5iNz}HR)nq$m*7=Tfb?8fPzv$Ak>>U1o&Eam9#wQj1V zSrQgCqacdlgpd*?8bB4v7iBCm?X!A((U*$TzDso zz~axA@yt?W1XO^l6?n*b57ht%7@k{I4gLG)_%OlUq|W?Od0S#U)kQ0wD7C~H5EzW7 z!{2@Xu7@!{ZR68$(jSG+w+&iSWCUXkAz!Yb7**Gd-qnZTvf9hYmB5 zCnp7sS`4(0bf9n7qZVbD!J*5P6nvfN>tvhGYz3O=A3p+=CGtC*cx~V6!9*WN(j$KN zstu2Lewd2-cJ2vUs6qiZ6O_4h@kP*qOr~-@BR7|bElOYkGX=o+`L?sp=s$vAsGjo7 zbamlchaDz`eMgBJkgISQxTf{rXXOPF zy}0J-BdTE_)t(@JmyRPzOhf5tJ`Aj@Mx>IdRQROlkd^S4%p|IFc=$c#5gc z411SuxJ#52pjJz_EU1fKbMRr}&*&t$&(ZqOlQ(a$0e*LQChL{9u zK-Yid=O<-XH%(4Q7Y2uO0e;XOn}5*4%G^oL8g3r7?pl?n%ePnq5jdKPCT0;kLt zEX%1|Q#biMlm4F?zd()ufdSN?+>_z!qtM1ica010F*!e(QkCim9LbIUU9l6&HLB!q zSa_Bsn%C?%|Kk46&JHs|bayXrE3^dMp>A}qzaQbzUz)ZEhO}?0u^sd&-?0%Ani~x= zD?in+@C0%533>xkSWJu>paK7jG_Klz{P< zFYkHvRUO!kjd#xFUsTB8;RhWoHj80QKhzvKsxOcQZQwF^r>IE0v`qiS(pu8XfT_zu z>EEu(7&8ygBSYN0(Zoo=PhrqY9N_(T#>N%d7YA^)A;gC|AlNM$&j_uoD0O#MJASbg z3pz}s9GTeHbW6c{;_^*gT;y|*#n2;c^E*-VKA0v;(N8o=Qtj2FOMOb{Fy6L z!4yDsmCAdolsC-4gc)ofV<%vnMBnh)EOs#zO*m;J{+w9bi8Uj+7rZ$XldE^S;HjD+t)YoNitZ z2o}qumo2nhVQSiZa+?{VUVGtt$FfIz+uKsg$}~$$%RGXD{*jSk4z?V+61)^YW6Fy% z2@P~FYXHl)ue*5$ND<_elzxB%C`?qN)&9h5s2c&M3fS*3fE2iD0QQdMOuf6a)14~w z#-pk4sJ*m`B(Ttcq%AQi5E#6+Yqu&33Q+kf*JF)uKi07GWSu;qrrUNM`MveiiPfm*awOo%d03I1Bkj1QuJyiJ~wFMOj136FcT=JYRW(5cbW|%{RFMd z@1jyB^PeAn(~Pr-Pwo{_`rPX!9n`DjkVFh+@bB>Oux~Iwz5WMPOWoMQ!V@n2M(@C^ zla0Oan~-G=6iyfc<6+X5c43q4#|A%1>HEc#VwX#q{0`>K*MdGqlx&XG1!^5*amXD5 z@l4>mBL^TP1IrM}-j>zx@%=4&E-Pd2U~a%~(@jyYATDs$qKxK3UaxukdncKZ-ytgH zkz^VJ_*-(7=o_;&4?qfGy6JoL6>R(qU!Bf)jRkbQH;p5SLp%qR0?A@sHw+ghi- zO5X$Y#HG~KG4*3SAJbI|F$r{L=xEsEy~a%LV7k>N(FV=2furt6m+v)uYw*v23`rUH z$}2YCbg%AygasBDd0K&>5QZz~u0UtweVc}znpO_`2!Zk-PKJQXtH z6QPg&Wfbx&*Sc*@PUdH+88NWsRA0qrrDz|m1a<}#Q^`cQWyIEZ1c`X9lw*N5Myd&DGA zkFDV9F;C81q{W~B4Y?AJOBLLkuWzMaIIulvbw72Did^y=B*Ikf z<*6pi*rpTwAbp7V=w5+K&-)D)SXDLo%Z&SRq}tHYLm)tw3#db5p9C*r zKt`~+>uxSR7L95qlhb?g$CBY>4(k!3eUQjY_!+&ZxNWV{TT!wlHF7RKK98O}UKMbla`nMl474U;BMH;$Q)=&GYc z?TgP=F67B^cw#VhLL=dqtrfU&&qHo}fMTJ%@~M@xgxMAN(>m<;26CdLH-P5GjZ7v* zGOo`kFt5o}{falBRBXJl%QGE`N|0ZJsCIh*HOmznKrI1JNgBQ+88h*JkMH2|`1bo6 zxv`6k3@pTC>1q_?>af8h!~um#3$>IKws%gqT~XmHY1CUDMTkmb-X{&VEM+EtbYh5o zR^xc3H`w;)*gxJkXn>+`OoYql>7S<*ULA#pa-uDgW!z7Jg0-3a{^Tfm$YFSzF>?2KgVFbPep@MQ0B_Sa` z4c*yWd@=67tcrqq6*{lE-L(hl@>(uh8-e>->!^$r&Usw=%?DF=N}gq9aK77-gLYiq z^~f8{6i`pbMUDqO2@bZ<(|h+f3X#tE(=qoMQ2GP#JUlXFCV~Hda-@;?f>`8xpJk@Tt{^D(N#I-Rs!wENx4=>AH0TGw6! zDp7uxZL!7ePF^X>vy>+e_d_%1zz_pr^U6Rg>D2_N?~^WJfP*Q^{;mA_+B6|Wglac_ zdU#@c9I;GE{~pI7GgfMU9LlB%y z)aQ}BM}fjSmWpK31c?c}9WIM>X$uGJZcut}o1y3x<5^ERa*8_J8-o4oRRtEY#WnVU zv~+E2PxL#^WQkr8wjs*5{XXCRrD@=DKpwtINhhKLp*r&SYGpCh~ zpo4jo5me2C24yWzI>8&<9Nh-W(qz~7NvhZ)IH}Uo?4ZVzi^`5=o|CamDk@NMEC~wZ zG5jL>5lS4MY0S6)atEla1$hIgtkwuMh^dd#y1W|MtS?$A;=yHcK}yMP%ek(TGA+59 z2+$wdw!tg}BGYzpK+l!n5g)4Yt~Xuwm%k_r1JI{!#PMOVJ}Bns6L)VQ^6s4OdUZ6b z&&1A}8l7XlwB+**R(41HJLR4tgBQtAYP~mB^$J3#CPPq+`Yq=Y9x{D%i3+4;ckxe! z-Zqx$r+s2E&HrOf2 zGk|;Cul0hyh1^pc`FRgeV~o_2Yk;8UdG0-ya|ndjZoenNDzd8bNr!{Q0O6<6byUjn zZWn()mm327&pwD9(U1GwlG0*H^K=i@2d<8HCTl1J(BzruygQ(bB*GP1Jp^xpa-2~q?E4er&!8O#WSjTY(TDSk%u4VpgB zx8>S?(Y^~H1%59Ix5#~yToy+P`#A;;ZB3Pc8H=y`?~}z^2>aQ8J!>$lIgMRe5j7R@ z{)I{5cZ6D1{I7er>#DTy|f2{YvIRzFiY*lefubTvQ zx~qBRID=0k>oO64V1Izd$vbx{B}?lH>EZ;dya2fbXc2TgCp$V??m3$O6{DKNOA}h) z*1VErCignpwLF#!DANSeud6$ORG&u)hDsNS0K3(TdX#;xA1>yynIkzL9r}i;X7RdI z+}Yc0Tle~htfJ5BN{c*uQf~MZt?}mD(#p&CD*-$W<^t~Mhe#Z89ta~K@=%Bzb3r3( z`|XkB(0NF8#&PD>8nn+q`LVbBj+cZ6Va>Xw#T(m^qYLS8;)ck74&n$D822iT?*)~_ z-FMM$3sm>Iy&W7E2K}JP3zkrdTenwRjQ~&fDBwXLe8A|jJKAXqlC`V!1#?rjW}O#P zSSn*wWt15RlFH}$n*Yt~Y(V1?3>aw-})7o{0HMMl>AW9X9C`A!akRmN0 zy-SxaO+ZQ@bWj38dgup5Ab>QFv;YL=GYdN+%qI(2>x;iAT84cc1(7 z=GpnNGtaC&Gka#Och-8>#9S##`rVVha9BBJbI)>1T4nuqWB>X>Tge^3<_0JO6Ne3t z+^Klg`)%~Ik4mF+wbj;1)r2543r_BxDd3M?dytNmc%wh$us5H?aO1s+a7j_?n>g!a z;#N+IQXwbIx+mUR3SMv!ftFw2v-;37!(=lD3BHq=<{4()mrE%|drl;0>28f;R4fE- zxBgrS#fdV{D4*M=2;g9ZE9;tZZjMXL_DTY5qbvYeWC#k++@_CzrX<})ZtU%>6tf7z zif0>12ehBHOLfQW{$5ARb1B~i_+#=m^rR~3K#oUhPwVz=BP3sJ|IPOO?8iyts|+&I z6)I(?q3iuqnherL@+Kb9&vzBd+lU>T+?cCUA%}6>ZkyaL+YXV-ZW2fpU~tMa_2FK;?Sm-hXb!nQFc? zd+7p9{o>QEv(qUfYz8m_rjfKQdE(brM9D78;+0cBbwToQ-J{yqYXU&0pUogg5xAk> z!9OGwlLE219I+NtTFPqVVMt9$NkK{NqM_?r$_TT)M(MSwx#m+`d2576o=yDA7c9O! zxlGe)^vk4bZQbGHVJ?(eyJF(Jzqb*AhQNoCn9{Y?mvwZW>2wSs^8oBZw-=GNUrzHX zEl;lx{6${sW0`;8YQFSHm~S5{WRD4O!XihXirB#_aKQ!I^TT@6u} zX}HrYaqpN_p^pQ6OY~Sj#?gY`eqClxP6jVI!8rVTOM|$t4m{T2b^f}EVG>zw z9gts7&@>w{pG;vGHmRa#S2uPnw3xsxm$wzrA`pKTq0bIV4F=X}=pXk6n$K6%y5%`u zq+v_6+dBwo*6iQpy=e#>Fr>Z|Yi}j_PlVhDDb8oa*`Yz**fu>Rj^>4nsDRdXV^Ce? zO$CnQ#)|KN^o#uwGHvTQCz!ulAjH+{YWVE6BFS!?_r-wNr#eb04CP-i>qpSEzr786 zRb8?LZ`Gb=dVVagVT zjOEYC+SQ(`=8|m9u}I*ZpVCO6Wey~5dzcL^s`>dzg{@7PT!j>&{aK6QAUEvhJ9PHtVY*MXQ^#?TxY%4VpOw~QtP}>VriQ}*AmIj8OU6I znArihrT&q}chsX5Yy{nSdFV8f+#7%k&-aR|8hUZo17e-*9WJx-^8GTz`O}gGKPe%8 zes2GKRQ-^0$>%y`-DjL}NxT0kk+c*yOIqsYpRDucwcfBZIY?1G=skKLVA$YgU zk5V=!lNnI59*PM;A}CF#&rCd(TBvMtfPU4>K+r;5XSclJ?%avEcW1|&mct$TEZlJ+ zc@jifTt1z-3R=B~E%oqfSY5Durk!<6F>}d^n)*c+rIo9?@thsedT&0x4P`FAEv!AL zp7rUna>mgFjuPuwZVf;!na#`)@|W705Ojc=_qa7UVjus1k~NkQRc_+C{2(k&y&9is zOX`^J@NSJX3#$?w5??G`fO5{z%Ut|e zFPtk{4_%b`GP=m!Ki(L7{=0cXkIyTCa5Q_dXU*iQ33YN>?BX=PPrV9@Cg1`Pi|J-! z2q@R1WfLp@a6ATSwapD?d9K$0LBas=rx+ps{J5WA=8v>jK{_?F@@`Ygu6_xAZQVUm zqgCe{SE;{se~v=35ofc+;B3$=BLiicym<~pw=F}r(6Twsma8%yV@-WjlGX1hobroM%Gn?v^j1;x;sfpccvfOiRyimU6Yc*v^W@JGz!|+$Td)?rQb&4Izp zrfln+{$X5Wf3~ZO)jc>M^l|o-M%&}yUiW_EzLdEY0;Lsc1z)mqkvZQn1!PraBbBd^ z6HWLC`uG?0t{unS7rg$4&l-lNeCJ?p;reh^O^*9o5R)geA%bJne|n1a!g9ZzE-gVJ zqPIk5Dp^)UoR6H7^zVuB5EB*gwZ8Uh9AX#izf2*ZddUo>0z7#Db8S5kNFMezi z9BmRf;0z2VWM=}%0%?lHV9vE2jf)tf9MhIA6iRj)z5RP`NzF#BfbCe*on^(wDhKfY zl6%@_9-n?-ca^U&?%MC}u&sl;Dcx`wRoR9qS-k$-EPaKoF9UP)Z~6J$;&RMGHogq< zFgWBN5JNw^Z{y|pez3&iai;j$Ra%|q(EgBCYzX1)6h9#80!oP5>e1jr zfe(iiib3`-GD%)~#o9&(OyAYQ=N@qmp5Kx%Qp|r@Xnrfj46pC-eZI7mO!@QrYts9z ziq~SyKYbuOS(PDe>ce9v%>c_%sFSOOFv#w6QwpSm@b&|?)RCE{d5*WR-H->-k^vEV z@^@0-fEse&ul|HUuu|O_FMNIVLgf;_Lcf?SL;AuY$HEg?h-}5oD}H0SCh8D7OTZ?> z;=e?D4bRW%Q9ftW!;U?W!Q$Zh39|DSo(c#w+MPbuASeGAkAdMqPS5h*{>3kC3+(|1 zVHlG=D$T=Fl2RO60|zoIt*Hx@4RS1+-MEK}J=&^X!c<934~e^s&tAE6{cL>8VvSM2 z(qf+@Jp2V0D-r0Kd7>YW@|DMNN9*OXTGXs*4jBlU4rYab-hkEK9I#Uqw~B1xs1 z>BZN|8(=ivUM&#VXS24TURw@jF%rg7724W;u|8aLT>KcwWDSmZ>DUTrv%{Sa@}YDK z+L{~YtYtD1){WU0lKD|v*5MnHNs$^<=dqA{tE;9GM`eWc=!_f6)p&=(zA-Jb0!AtS zy919dI*RgCOjZBTX!JBjyJI6(wNU=|tJ2tTc!#eAQ1bj_;z!&{KroMuSMBvMw{E`1 z+oO>^Yw4s9S%a1#0r@U>^k$qW%2g7V4+-a!tDr_o6E}L*87E`*y=3P^w46C1HZA$J z@XlxBc8SHi9-q=|V!OJo_bI-q`qZ#_<#o`@GxrRQ%7_zQcf*S4%)x!NSn|>>7iajIkgl@?`m~hKkPr5N3>_~uK`_MdHRK$c=JGK3vtRU*iEm`n7Pv zsm`wsctqL^zTn=W|DxR2$g$MX%EI@iJus_VG$G$4&6MGoA8?iEuKCIc3Hl)6@%s~V zZYU0|-pDG5sQuw+!z7B>IYuP|or@UgQv5HTYtL;KuF5o#x^sB;r2pC6Xne91MQhq{ z5J`iuT9Ew#4yIrY+w2zc_In$jdg@`Qct*O5L&YTIXHjc(+19P9Ns-SDAU37pZKSeh9naQFn_J?=0_aVMa=^4%BHZzo#pRT?C! zIZJmdygE>3t1f}{HSA@4;+++WNtW%w^4UBoU@!FQpCjAO?X(A6i_am^ OpenTelemetryCollector("OpenTelemetry Collector") --> SkyWalkingOTELReceiver("SkyWalking OTEL Receiver") --> SkyWalkingMALEngine("SkyWalking MAL Engine") --> HorizonUI("Horizon UI") +``` + +## Proposed Changes + +1. Airflow exports metrics via native OpenTelemetry (`otel_on` / `OTEL_EXPORTER_OTLP_*`). +2. OpenTelemetry Collector receives OTLP metrics from Airflow and forwards them to SkyWalking + OTel Receiver via the OpenTelemetry exporter. +3. The SkyWalking OAP Server parses expressions with [MAL](../concepts-and-designs/mal.md) to + filter, calculate, aggregate, and store the results. +4. Metrics are displayed via [Horizon UI](https://github.com/apache/skywalking-horizon-ui) under the + **Workflow Scheduler** menu group and can be customized on dashboards. + +SkyWalking models an Airflow deployment as `Layer: AIRFLOW`: + +- **Service** — one logical cluster (`airflow::{cluster}`), keyed by resource attribute `cluster`. +- **Instance** — scheduler / worker / triggerer host (`host.name` resource attribute). + +Horizon labels this entity **Components** rather than **Instance** so operators are not led to +confuse it with Airflow **Task Instance** (a single task execution within one DAG run). See +[Airflow monitoring setup](../setup/backend/backend-airflow-monitoring.md#components-vs-skywalking-instance-vs-airflow-task-instance) +for the full naming rationale. + +### Airflow Service Supported Metrics + +| Monitoring Panel | Unit | Metric Name | Description | +|------------------|------|-------------|-------------| +| Tasks Executable | count | meter_airflow_scheduler_tasks_executable | Tasks ready for execution | +| Queued Tasks | count | meter_airflow_executor_queued_tasks | Queued tasks on executor | +| Running Tasks | count | meter_airflow_executor_running_tasks | Tasks currently running on executor | +| Open Slots | count | meter_airflow_executor_open_slots | Open executor slots | +| Pool Queued Slots | count | meter_airflow_pool_queued_slots | Queued slots in pool | +| Pool Deferred Slots | count | meter_airflow_pool_deferred_slots | Deferred slots in pool | +| Pool Scheduled Slots | count | meter_airflow_pool_scheduled_slots | Scheduled but not yet running slots in pool | +| Scheduler Heartbeat | count | meter_airflow_scheduler_heartbeat | Scheduler heartbeats per minute | +| Orphaned Tasks Cleared | count | meter_airflow_scheduler_orphaned_tasks_cleared | Orphaned tasks cleared per minute | +| Orphaned Tasks Adopted | count | meter_airflow_scheduler_orphaned_tasks_adopted | Orphaned tasks adopted per minute | +| DAG File Queue Size | count | meter_airflow_dag_file_queue_size | DAG files pending scan | +| Asset Updates | count | meter_airflow_asset_updates | Updated assets per minute | + +### Airflow Instance Supported Metrics + +| Monitoring Panel | Unit | Metric Name | Description | +|------------------|------|-------------|-------------| +| Pool Open Slots | count | meter_airflow_instance_pool_open_slots | Open slots in pool on this host | +| Pool Deferred Slots | count | meter_airflow_instance_pool_deferred_slots | Deferred slots in pool on this host | +| Pool Running Slots | count | meter_airflow_instance_pool_running_slots | Running slots in pool on this host | +| Pool Scheduled Slots | count | meter_airflow_instance_pool_scheduled_slots | Scheduled but not yet running slots on this host | +| Triggerer Heartbeat | count | meter_airflow_instance_triggerer_heartbeat | Triggerer heartbeats per minute | +| Triggers Blocked Main Thread | count | meter_airflow_instance_triggers_blocked_main_thread | Triggers blocking main thread | +| Triggers Failed | count | meter_airflow_instance_triggers_failed | Triggers that failed before firing | +| Triggers Succeeded | count | meter_airflow_instance_triggers_succeeded | Triggers that fired at least once | +| Tasks Executable | count | meter_airflow_instance_scheduler_tasks_executable | Tasks ready on this host | +| Orphaned Tasks Cleared | count | meter_airflow_instance_scheduler_orphaned_tasks_cleared | Orphaned tasks cleared on this host per minute | +| Orphaned Tasks Adopted | count | meter_airflow_instance_scheduler_orphaned_tasks_adopted | Orphaned tasks adopted on this host per minute | +| Queued Tasks | count | meter_airflow_instance_executor_queued_tasks | Queued tasks on this host | +| Running Tasks | count | meter_airflow_instance_executor_running_tasks | Running tasks on this host | +| Asset Updates | count | meter_airflow_instance_asset_updates | Asset updates on this host | +| Asset Orphaned | count | meter_airflow_instance_asset_orphaned | Orphaned assets on this host | +| Asset Triggered DagRuns | count | meter_airflow_instance_asset_triggered_dagruns | DagRuns triggered by assets | + +Service-level panels aggregate cluster-wide samples. Instance-level panels are scoped per +`host.name` (shown as **Components** in the UI). Do not sum instance-scoped samples into service dashboards when each component +exports the same instrument independently. + +Bundled Horizon UI dashboards chart the primary panels above; additional OAP metrics (for example +orphaned-task counters) are available via MQE even when not shown on a default widget. + +## Imported Dependencies libs and their licenses. + +No new dependency. + +## Compatibility + +No breaking changes. + +## General usage docs + +See [Airflow monitoring setup](../setup/backend/backend-airflow-monitoring.md) and +[e2e coverage matrix](../../../test/e2e-v2/cases/airflow/README.md). diff --git a/docs/en/swip/readme.md b/docs/en/swip/readme.md index 952bcf8af3d7..1f06ffc48558 100644 --- a/docs/en/swip/readme.md +++ b/docs/en/swip/readme.md @@ -82,6 +82,7 @@ Next SWIP Number: 15 - [SWIP-10 Support Envoy AI Gateway Observability](SWIP-10/SWIP.md) - [SWIP-9 Support Flink Monitoring](SWIP-9.md) - [SWIP-8 Support Kong Monitoring](SWIP-8.md) +- [SWIP-7 Support Apache Airflow Monitoring](SWIP-7.md) - [SWIP-6 Support ActiveMQ Monitoring](SWIP-6.md) - [SWIP-5 Support ClickHouse Monitoring](SWIP-5.md) - [SWIP-4 Support available layers of service in the topology](SWIP-4.md) diff --git a/docs/menu.yml b/docs/menu.yml index 169644a4d57b..542640bf65a5 100644 --- a/docs/menu.yml +++ b/docs/menu.yml @@ -152,6 +152,10 @@ catalog: path: "/en/setup/backend/backend-rocketmq-monitoring" - name: "ActiveMQ" path: "/en/setup/backend/backend-activemq-monitoring" + - name: "Workflow Scheduler" + catalog: + - name: "Airflow" + path: "/en/setup/backend/backend-airflow-monitoring" - name: "Data Processing Engine" catalog: - name: "Flink" diff --git a/oap-server/analyzer/meter-analyzer-scripts-test/src/test/resources/scripts/mal/test-otel-rules/airflow/airflow-instance.data.yaml b/oap-server/analyzer/meter-analyzer-scripts-test/src/test/resources/scripts/mal/test-otel-rules/airflow/airflow-instance.data.yaml new file mode 100644 index 000000000000..2a079a2bafdb --- /dev/null +++ b/oap-server/analyzer/meter-analyzer-scripts-test/src/test/resources/scripts/mal/test-otel-rules/airflow/airflow-instance.data.yaml @@ -0,0 +1,117 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +script: oap-server/server-starter/src/main/resources/otel-rules/airflow/airflow-instance.yaml +input: + airflow_pool_open_slots: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-worker-1 + pool_name: default_pool + value: 8.0 + airflow_pool_deferred_slots: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-worker-1 + pool_name: default_pool + value: 0.0 + airflow_pool_running_slots: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-worker-1 + pool_name: default_pool + value: 2.0 + airflow_pool_scheduled_slots: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-scheduler + pool_name: default_pool + value: 1.0 + airflow_triggerer_heartbeat: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-triggerer + value: 5.0 + airflow_triggers_blocked_main_thread: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-triggerer + value: 0.0 + airflow_triggers_failed: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-triggerer + value: 0.0 + airflow_triggers_succeeded: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-triggerer + value: 3.0 + airflow_scheduler_tasks_executable: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-scheduler + value: 5.0 + airflow_scheduler_orphaned_tasks_cleared: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-scheduler + value: 2.0 + airflow_scheduler_orphaned_tasks_adopted: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-scheduler + value: 1.0 + airflow_executor_queued_tasks: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-scheduler + value: 2.0 + airflow_executor_running_tasks: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-scheduler + value: 1.0 + airflow_dataset_updates: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-worker-1 + value: 4.0 + airflow_dataset_orphaned: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-scheduler + value: 1.0 + airflow_dataset_triggered_dagruns: + - labels: + cluster: airflow-cluster + job_name: Airflow + host_name: airflow-scheduler + value: 2.0 diff --git a/oap-server/analyzer/meter-analyzer-scripts-test/src/test/resources/scripts/mal/test-otel-rules/airflow/airflow-service.data.yaml b/oap-server/analyzer/meter-analyzer-scripts-test/src/test/resources/scripts/mal/test-otel-rules/airflow/airflow-service.data.yaml new file mode 100644 index 000000000000..a4149515d48d --- /dev/null +++ b/oap-server/analyzer/meter-analyzer-scripts-test/src/test/resources/scripts/mal/test-otel-rules/airflow/airflow-service.data.yaml @@ -0,0 +1,80 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +script: oap-server/server-starter/src/main/resources/otel-rules/airflow/airflow-service.yaml +input: + airflow_scheduler_tasks_executable: + - labels: + cluster: airflow-cluster + job_name: Airflow + value: 5.0 + airflow_executor_queued_tasks: + - labels: + cluster: airflow-cluster + job_name: Airflow + value: 3.0 + airflow_executor_running_tasks: + - labels: + cluster: airflow-cluster + job_name: Airflow + value: 2.0 + airflow_executor_open_slots: + - labels: + cluster: airflow-cluster + job_name: Airflow + value: 16.0 + airflow_pool_queued_slots: + - labels: + cluster: airflow-cluster + job_name: Airflow + pool_name: default_pool + value: 1.0 + airflow_pool_deferred_slots: + - labels: + cluster: airflow-cluster + job_name: Airflow + pool_name: default_pool + value: 0.0 + airflow_pool_scheduled_slots: + - labels: + cluster: airflow-cluster + job_name: Airflow + pool_name: default_pool + value: 1.0 + airflow_scheduler_heartbeat: + - labels: + cluster: airflow-cluster + job_name: Airflow + value: 10.0 + airflow_scheduler_orphaned_tasks_cleared: + - labels: + cluster: airflow-cluster + job_name: Airflow + value: 2.0 + airflow_scheduler_orphaned_tasks_adopted: + - labels: + cluster: airflow-cluster + job_name: Airflow + value: 1.0 + airflow_dag_processing_file_path_queue_size: + - labels: + cluster: airflow-cluster + job_name: Airflow + value: 4.0 + airflow_dataset_updates: + - labels: + cluster: airflow-cluster + job_name: Airflow + value: 7.0 diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java index bb702d5c1ab3..0f269c973604 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java @@ -298,6 +298,9 @@ public final class Layer { /** Alipay Mini Program monitoring via mini-program-monitor SDK */ public static final Layer ALIPAY_MINI_PROGRAM = register("ALIPAY_MINI_PROGRAM", 49, true); + /** Apache Airflow workflow orchestration (native OpenTelemetry metrics via OTel Collector). */ + public static final Layer AIRFLOW = register("AIRFLOW", 50, true); + private final String name; private final int value; /** diff --git a/oap-server/server-starter/src/main/resources/application.yml b/oap-server/server-starter/src/main/resources/application.yml index 985d22bd1a67..ec2d3d7bae4f 100644 --- a/oap-server/server-starter/src/main/resources/application.yml +++ b/oap-server/server-starter/src/main/resources/application.yml @@ -390,7 +390,7 @@ receiver-otel: selector: ${SW_OTEL_RECEIVER:default} default: enabledHandlers: ${SW_OTEL_RECEIVER_ENABLED_HANDLERS:"otlp-traces,otlp-metrics,otlp-logs"} - enabledOtelMetricsRules: ${SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES:"apisix,nginx/*,k8s/*,istio-controlplane,vm,mysql/*,postgresql/*,oap,aws-eks/*,windows,aws-s3/*,aws-dynamodb/*,aws-gateway/*,redis/*,elasticsearch/*,rabbitmq/*,mongodb/*,kafka/*,pulsar/*,bookkeeper/*,rocketmq/*,clickhouse/*,activemq/*,kong/*,flink/*,banyandb/*,envoy-ai-gateway/*,ios/*,miniprogram/*"} + enabledOtelMetricsRules: ${SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES:"apisix,nginx/*,k8s/*,istio-controlplane,vm,mysql/*,postgresql/*,oap,aws-eks/*,windows,aws-s3/*,aws-dynamodb/*,aws-gateway/*,redis/*,elasticsearch/*,rabbitmq/*,mongodb/*,kafka/*,pulsar/*,bookkeeper/*,rocketmq/*,clickhouse/*,activemq/*,kong/*,flink/*,airflow/*,banyandb/*,envoy-ai-gateway/*,ios/*,miniprogram/*"} receiver-zipkin: selector: ${SW_RECEIVER_ZIPKIN:-} diff --git a/oap-server/server-starter/src/main/resources/hierarchy-definition.yml b/oap-server/server-starter/src/main/resources/hierarchy-definition.yml index d8540809f683..fefff6914f4a 100644 --- a/oap-server/server-starter/src/main/resources/hierarchy-definition.yml +++ b/oap-server/server-starter/src/main/resources/hierarchy-definition.yml @@ -67,6 +67,9 @@ hierarchy: KONG: K8S_SERVICE: short-name + AIRFLOW: + K8S_SERVICE: short-name + VIRTUAL_DATABASE: MYSQL: lower-short-name-with-fqdn POSTGRESQL: lower-short-name-with-fqdn @@ -118,6 +121,7 @@ layer-levels: PULSAR: 2 ACTIVEMQ: 2 KONG: 2 + AIRFLOW: 2 MESH_DP: 1 CILIUM_SERVICE: 1 diff --git a/oap-server/server-starter/src/main/resources/otel-rules/airflow/airflow-instance.yaml b/oap-server/server-starter/src/main/resources/otel-rules/airflow/airflow-instance.yaml new file mode 100644 index 000000000000..00518d344773 --- /dev/null +++ b/oap-server/server-starter/src/main/resources/otel-rules/airflow/airflow-instance.yaml @@ -0,0 +1,53 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Airflow component-level metrics from native OpenTelemetry export (SWIP-7). +# Instance identity uses resource `host.name` (scheduler / worker / triggerer hostname). +filter: "{ tags -> tags.job_name == 'Airflow' }" +expSuffix: tag({tags -> tags.cluster = 'airflow::' + tags.cluster}).instance(['cluster'], ['host_name'], Layer.AIRFLOW) +metricPrefix: meter_airflow_instance +metricsRules: + - name: pool_open_slots + exp: airflow_pool_open_slots.sum(['cluster', 'host_name', 'pool_name']) + - name: pool_deferred_slots + exp: airflow_pool_deferred_slots.sum(['cluster', 'host_name', 'pool_name']) + - name: pool_running_slots + exp: airflow_pool_running_slots.sum(['cluster', 'host_name', 'pool_name']) + - name: pool_scheduled_slots + exp: airflow_pool_scheduled_slots.sum(['cluster', 'host_name', 'pool_name']) + - name: triggerer_heartbeat + exp: airflow_triggerer_heartbeat.sum(['cluster', 'host_name']).increase('PT1M') + - name: triggers_blocked_main_thread + exp: airflow_triggers_blocked_main_thread.sum(['cluster', 'host_name']).increase('PT1M') + - name: triggers_failed + exp: airflow_triggers_failed.sum(['cluster', 'host_name']).increase('PT1M') + - name: triggers_succeeded + exp: airflow_triggers_succeeded.sum(['cluster', 'host_name']).increase('PT1M') + - name: scheduler_tasks_executable + exp: airflow_scheduler_tasks_executable.sum(['cluster', 'host_name']) + - name: scheduler_orphaned_tasks_cleared + exp: airflow_scheduler_orphaned_tasks_cleared.sum(['cluster', 'host_name']).increase('PT1M') + - name: scheduler_orphaned_tasks_adopted + exp: airflow_scheduler_orphaned_tasks_adopted.sum(['cluster', 'host_name']).increase('PT1M') + - name: executor_queued_tasks + exp: airflow_executor_queued_tasks.sum(['cluster', 'host_name']) + - name: executor_running_tasks + exp: airflow_executor_running_tasks.sum(['cluster', 'host_name']) + - name: asset_updates + exp: airflow_dataset_updates.sum(['cluster', 'host_name']).increase('PT1M') + - name: asset_orphaned + exp: airflow_dataset_orphaned.sum(['cluster', 'host_name']) + - name: asset_triggered_dagruns + exp: airflow_dataset_triggered_dagruns.sum(['cluster', 'host_name']).increase('PT1M') diff --git a/oap-server/server-starter/src/main/resources/otel-rules/airflow/airflow-service.yaml b/oap-server/server-starter/src/main/resources/otel-rules/airflow/airflow-service.yaml new file mode 100644 index 000000000000..cfa3bdd7e611 --- /dev/null +++ b/oap-server/server-starter/src/main/resources/otel-rules/airflow/airflow-service.yaml @@ -0,0 +1,46 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Airflow cluster-level metrics from native OpenTelemetry export (SWIP-7). +# Requires resource attribute `cluster` (set via OTEL_RESOURCE_ATTRIBUTES or Collector transform). +# OAP maps resource `service.name` (default "Airflow") to tag `job_name`. +filter: "{ tags -> tags.job_name == 'Airflow' }" +expSuffix: tag({tags -> tags.cluster = 'airflow::' + tags.cluster}).service(['cluster'], Layer.AIRFLOW) +metricPrefix: meter_airflow +metricsRules: + - name: scheduler_tasks_executable + exp: airflow_scheduler_tasks_executable.sum(['cluster']) + - name: executor_queued_tasks + exp: airflow_executor_queued_tasks.sum(['cluster']) + - name: executor_running_tasks + exp: airflow_executor_running_tasks.sum(['cluster']) + - name: executor_open_slots + exp: airflow_executor_open_slots.sum(['cluster']) + - name: pool_queued_slots + exp: airflow_pool_queued_slots.sum(['cluster', 'pool_name']) + - name: pool_deferred_slots + exp: airflow_pool_deferred_slots.sum(['cluster', 'pool_name']) + - name: pool_scheduled_slots + exp: airflow_pool_scheduled_slots.sum(['cluster', 'pool_name']) + - name: scheduler_heartbeat + exp: airflow_scheduler_heartbeat.sum(['cluster']).increase('PT1M') + - name: scheduler_orphaned_tasks_cleared + exp: airflow_scheduler_orphaned_tasks_cleared.sum(['cluster']).increase('PT1M') + - name: scheduler_orphaned_tasks_adopted + exp: airflow_scheduler_orphaned_tasks_adopted.sum(['cluster']).increase('PT1M') + - name: dag_file_queue_size + exp: airflow_dag_processing_file_path_queue_size.sum(['cluster']) + - name: asset_updates + exp: airflow_dataset_updates.sum(['cluster']).increase('PT1M') diff --git a/test/e2e-v2/cases/airflow/.gitignore b/test/e2e-v2/cases/airflow/.gitignore new file mode 100644 index 000000000000..a023e418add8 --- /dev/null +++ b/test/e2e-v2/cases/airflow/.gitignore @@ -0,0 +1,7 @@ +# Runtime artifacts from local cluster e2e runs +cluster/logs/** +!cluster/logs/.gitkeep +cluster/dags/__pycache__/ +cluster-e2e-report.txt +cluster-e2e-run.log +mock-e2e-report.txt diff --git a/test/e2e-v2/cases/airflow/README.md b/test/e2e-v2/cases/airflow/README.md new file mode 100644 index 000000000000..7b3ccfbe262e --- /dev/null +++ b/test/e2e-v2/cases/airflow/README.md @@ -0,0 +1,287 @@ +# Airflow monitoring e2e tests (SWIP-7) + +End-to-end tests for [SWIP-7](../../../../docs/en/swip/SWIP-7.md) Airflow monitoring. Two suites +share the same MAL rules but split responsibilities: + +| Suite | Entry | Checks | Airflow | CI matrix | +|-------|-------|--------|---------|-----------| +| **Mock (fast, full SWIP-7)** | [`e2e.yaml`](e2e.yaml) | **30** (2 topology + 28 metrics) | OTLP JSON replay via [`mock-sender/`](mock-sender/) | `Airflow` | +| **Real Celery cluster (integration smoke)** | [`e2e-cluster.yaml`](e2e-cluster.yaml) | **26** (2 topology + 24 metrics) | Live Airflow 2.10 CeleryExecutor | `Airflow Cluster` | + +Query definitions: [`airflow-cases.yaml`](airflow-cases.yaml) (mock, full matrix) and +[`airflow-cluster-cases.yaml`](airflow-cluster-cases.yaml) (cluster smoke). MAL rules: +[`otel-rules/airflow/`](../../../../oap-server/server-starter/src/main/resources/otel-rules/airflow/). + +## Real cluster topology + +``` +Airflow (scheduler + worker-1 + worker-2 + triggerer) + │ OTLP HTTP :4318 + ▼ +OpenTelemetry Collector + │ OTLP gRPC + ▼ +SkyWalking OAP (BanyanDB) + ▼ +swctl verify (GraphQL / MQE) +``` + +| Entity | Value in cluster e2e | +|--------|----------------------| +| Service | `airflow::airflow-e2e-cluster` | +| Instances verified (`host.name`) | `airflow-scheduler`, `airflow-worker-1`, `airflow-triggerer` | +| Compose project | `skywalking_e2e` (see [`scripts/cluster-compose-env.sh`](scripts/cluster-compose-env.sh)) | +| Compose file | [`docker-compose-cluster.yml`](docker-compose-cluster.yml) | + +Compose still runs **four** Airflow processes (scheduler, worker-1, worker-2, triggerer) for a +realistic Celery layout. Verify expects **three** OTLP-exporting instances: worker-2 executes +tasks but does not run the e2e Celery sidecar and is not required in the cluster smoke matrix. +The mock suite uses the same three-host OTLP fixture with identical instance metric bindings. + +### Workload seeding + +[`scripts/seed-e2e-cluster-workload.sh`](scripts/seed-e2e-cluster-workload.sh) triggers DAG runs +3 rounds (default), then waits **240 s** for OTLP export and MAL aggregation: + +- Custom: `cluster_smoke`, `cluster_load` ([`cluster/dags/`](cluster/dags/)) +- Built-in examples: `example_bash_operator`, `example_python_operator`, `example_branch_operator`, + `example_short_circuit_operator` +- `LOAD_EXAMPLES=true` loads the full Airflow example DAG set for scheduler activity + +Environment overrides: `SEED_ROUNDS`, `SEED_INTERVAL_SECONDS`, `RUN_SECONDS`. + +### OTLP metric sources (real cluster) + +| Source | Hosts | Instruments | +|--------|-------|-------------| +| **Airflow native OTel** (`AIRFLOW__METRICS__OTEL_ON`) | scheduler, triggerer, workers | Scheduler / executor / pool (scheduler) / heartbeat / orphaned-task / DAG-processing / dataset / triggers (when deferrable + dataset DAGs run) | +| **E2e-only Celery sidecar** [`worker_otel_reporter.py`](cluster/scripts/worker_otel_reporter.py) | `airflow-worker-1` only | `airflow.pool.{open,running,deferred}_slots` — Airflow 2.10 Celery workers do not emit pool gauges natively; values are derived from `celery inspect active`, not Airflow Stats | + +Dedicated e2e DAGs (native OTel, no reporter): + +| DAG | Purpose | +|-----|---------| +| [`e2e_deferrable.py`](cluster/dags/e2e_deferrable.py) | `TimeDeltaSensorAsync` → triggerer exports `triggers_*` counters | +| [`e2e_dataset.py`](cluster/dags/e2e_dataset.py) | `e2e_dataset_producer` / `e2e_dataset_consumer` — scheduler `asset_orphaned` / `asset_triggered_dagruns` in cluster smoke (`asset_updates` is mock-only) | + +`meter_airflow_instance_asset_orphaned` is verified in the cluster smoke when Airflow emits the +gauge (0 when no orphans). Metrics that need synthetic OTLP or rare failure events are **mock-only** +(see [Coverage split](#coverage-split) below). + +## Coverage split + +| Concern | Mock (`airflow-cases.yaml`) | Cluster (`airflow-cluster-cases.yaml`) | +|---------|----------------------------|----------------------------------------| +| **Goal** | Full SWIP-7 MAL/MQE contract | Real Airflow → OTel → OAP integration | +| **Topology** | 3 instances | 3 OTLP-exporting instances | +| **Service metrics** | 12 | 11 (excludes `asset_updates`) | +| **Instance metrics** | 16 | 13 (excludes `asset_updates`, `triggers_failed`, `triggers_blocked_main_thread`) | +| **Total checks** | **30** | **26** | + +**Mock-only metrics** (synthetic OTLP in [`mock-data/otel-airflow-metrics.json`](mock-data/otel-airflow-metrics.json)): + +| Metric | Reason cluster omits it | +|--------|-------------------------| +| `meter_airflow_asset_updates` (service + instance) | Dataset producer timing is hard to stabilize; mock sender injects `airflow.dataset.updates` | +| `meter_airflow_instance_triggers_failed` | Airflow may not export the counter when no triggers fail (`null`, not `0`) | +| `meter_airflow_instance_triggers_blocked_main_thread` | Same — absent unless a trigger blocks the main thread | + +Cluster still verifies `triggers_succeeded` on the triggerer (deferrable DAG smoke) plus +`asset_orphaned` / `asset_triggered_dagruns` when the scheduler emits them. + +## Test coverage matrix (full SWIP-7 — mock suite) + +Each row is one `swctl metrics exec` assertion. Expected template: +[`expected/metrics-has-value.yml`](expected/metrics-has-value.yml) (non-null numeric time series; +`0` is valid). The cluster smoke uses the same expressions except for the mock-only rows below. + +### Topology (2 checks) + +| # | Query | Expected | +|---|-------|----------| +| 1 | `swctl service ly AIRFLOW` | Service `airflow::airflow-e2e-cluster`, layer `AIRFLOW` — [`expected/service-cluster.yml`](expected/service-cluster.yml) | +| 2 | `swctl instance ls --service-name=airflow::airflow-e2e-cluster` | 3 instances — [`expected/instance-cluster.yml`](expected/instance-cluster.yml) | + +Mock suite uses `airflow::airflow-cluster` — [`expected/service.yml`](expected/service.yml), +[`expected/instance.yml`](expected/instance.yml) (same 3 hosts). Cluster verify matches mock +instance bindings; worker-2 remains in compose for Celery realism but is not an e2e assertion. + +### Service metrics (12) + +| # | MQE expression | Airflow OTel instrument (MAL) | Cluster smoke | +|---|----------------|----------------------------------|---------------| +| 1 | `meter_airflow_scheduler_tasks_executable` | `airflow.scheduler.tasks_executable` | yes | +| 2 | `meter_airflow_executor_queued_tasks` | `airflow.executor.queued_tasks` | yes | +| 3 | `meter_airflow_executor_running_tasks` | `airflow.executor.running_tasks` | yes | +| 4 | `meter_airflow_executor_open_slots` | `airflow.executor.open_slots` | yes | +| 5 | `meter_airflow_pool_queued_slots` | `airflow.pool.queued_slots` | yes | +| 6 | `meter_airflow_pool_deferred_slots` | `airflow.pool.deferred_slots` | yes | +| 7 | `meter_airflow_pool_scheduled_slots` | `airflow.pool.scheduled_slots` | yes | +| 8 | `meter_airflow_scheduler_heartbeat` | `airflow.scheduler.heartbeat` | yes | +| 9 | `meter_airflow_scheduler_orphaned_tasks_cleared` | `airflow.scheduler.orphaned_tasks_cleared` | yes | +| 10 | `meter_airflow_scheduler_orphaned_tasks_adopted` | `airflow.scheduler.orphaned_tasks_adopted` | yes | +| 11 | `meter_airflow_dag_file_queue_size` | `airflow.dag_processing.file_path_queue_size` | yes | +| 12 | `meter_airflow_asset_updates` | `airflow.dataset.updates` | mock only | + +### Instance metrics (16) + +Instance-scoped queries use `--instance-name={host.name}`. + +| # | MQE expression | Scoped instance | Cluster smoke | +|---|----------------|-----------------|---------------| +| 1 | `meter_airflow_instance_pool_open_slots` | `airflow-worker-1` | yes (e2e Celery sidecar) | +| 2 | `meter_airflow_instance_pool_deferred_slots` | `airflow-worker-1` | yes (e2e Celery sidecar) | +| 3 | `meter_airflow_instance_pool_running_slots` | `airflow-worker-1` | yes (e2e Celery sidecar) | +| 4 | `meter_airflow_instance_pool_scheduled_slots` | `airflow-scheduler` | yes | +| 5 | `meter_airflow_instance_triggerer_heartbeat` | `airflow-triggerer` | yes | +| 6 | `meter_airflow_instance_triggers_blocked_main_thread` | `airflow-triggerer` | mock only | +| 7 | `meter_airflow_instance_triggers_failed` | `airflow-triggerer` | mock only | +| 8 | `meter_airflow_instance_triggers_succeeded` | `airflow-triggerer` | yes | +| 9 | `meter_airflow_instance_scheduler_tasks_executable` | `airflow-scheduler` | yes | +| 10 | `meter_airflow_instance_scheduler_orphaned_tasks_cleared` | `airflow-scheduler` | yes | +| 11 | `meter_airflow_instance_scheduler_orphaned_tasks_adopted` | `airflow-scheduler` | yes | +| 12 | `meter_airflow_instance_executor_queued_tasks` | `airflow-scheduler` | yes | +| 13 | `meter_airflow_instance_executor_running_tasks` | `airflow-scheduler` | yes | +| 14 | `meter_airflow_instance_asset_updates` | `airflow-worker-1` | mock only | +| 15 | `meter_airflow_instance_asset_orphaned` | `airflow-scheduler` | yes | +| 16 | `meter_airflow_instance_asset_triggered_dagruns` | `airflow-scheduler` | yes | + +**Mock total: 30 checks** (2 topology + 28 metrics) = full SWIP-7 panel set. +**Cluster total: 26 checks** (2 topology + 24 metrics) = integration smoke. + +Both suites use the same instance bindings for triggerer (`airflow-triggerer`), dataset +orphan/triggered DagRuns (`airflow-scheduler`), and worker pool gauges (`airflow-worker-1`). + +## Running locally + +### Prerequisites + +- Docker / Docker Compose +- Git Bash on Windows (use `/usr/bin/bash`, not MSYS-only shell) +- Go (for `swctl` install via setup scripts) + +### Real cluster — one command + +```bash +cd /path/to/skywalking +export OTEL_COLLECTOR_VERSION=0.102.1 SW_AGENT_JDK_VERSION=8 +chmod +x test/e2e-v2/cases/airflow/scripts/*.sh +/usr/bin/bash test/e2e-v2/cases/airflow/scripts/run-full-cluster-e2e.sh +``` + +Steps inside: `compose up` → install tools → wait for scheduler → seed workload → verify. + +### Real cluster — incremental + +```bash +set -a && source test/e2e-v2/script/env && set +a +source test/e2e-v2/cases/airflow/scripts/cluster-compose-env.sh +dc up -d +/usr/bin/bash test/e2e-v2/cases/airflow/scripts/run-cluster-setup.sh +/usr/bin/bash test/e2e-v2/cases/airflow/scripts/verify-cluster-e2e.sh +``` + +### Mock suite (infra-e2e) + +```bash +# From repo root, with e2e CLI installed +e2e run -c test/e2e-v2/cases/airflow/e2e.yaml +``` + +### Verify tuning + +| Variable | Default | Purpose | +|----------|---------|---------| +| `VERIFY_RETRIES` | `18` | Poll attempts per check | +| `VERIFY_INTERVAL_SECONDS` | `10` | Sleep between attempts | +| `VERIFY_REPORT` | `test/e2e-v2/cases/airflow/cluster-e2e-report.txt` | Report output path | + +### Windows notes + +- Ensure `test/e2e-v2/script/env` uses **LF** line endings (CRLF breaks BanyanDB image tags). +- OAP port is **dynamic** (`12800` without host binding in compose); scripts resolve it via + `docker compose port`. +- Use `run-full-cluster-e2e.sh` + `verify-cluster-e2e.sh` instead of raw `e2e run` verify on + Windows (`${oap_12800}` substitution issue in infra-e2e). +- Setup steps do not persist `PATH` between infra-e2e steps — `run-cluster-setup.sh` merges + tool install, health wait, and workload seed into one script. + +## Verification report + +Each cluster verify run writes a line-oriented report to +[`cluster-e2e-report.txt`](cluster-e2e-report.txt) (overwritten). Full compose logs from local +runs may be captured in [`cluster-e2e-run.log`](cluster-e2e-run.log). + +### Report format + +``` +=== Airflow cluster e2e verify (integration smoke) === +time: +compose project: skywalking_e2e +OAP GraphQL: http://localhost:/graphql + + PASS|FAIL: + detail: + +=== Summary === +PASS: FAIL: TOTAL: 26 +Report: test/e2e-v2/cases/airflow/cluster-e2e-report.txt +``` + +Pass criteria per metric: `swctl metrics exec` returns `TIME_SERIES_VALUES` with at least one +point whose `value` is a non-null number (zero counts as pass). + +### Cluster smoke checklist (26 checks) + +**Topology (2)** + +- service ly AIRFLOW → `airflow::airflow-e2e-cluster` +- instances: scheduler, worker-1, triggerer + +**Service metrics (11)** — all except `meter_airflow_asset_updates` + +**Instance metrics (13)** — excludes `asset_updates`, `triggers_failed`, `triggers_blocked_main_thread` + +Full SWIP-7 (30 checks) baseline is the mock suite — see [`mock-e2e-report.txt`](mock-e2e-report.txt). + +