From 4a7f2f191e7140f65ebff75cbfee345a499d4109 Mon Sep 17 00:00:00 2001 From: Madison Ficorilli Date: Fri, 13 Mar 2026 14:10:57 -0400 Subject: [PATCH 01/14] First commit for architecture diagram --- docs/architecture-diagram.md | 207 +++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 docs/architecture-diagram.md diff --git a/docs/architecture-diagram.md b/docs/architecture-diagram.md new file mode 100644 index 000000000..02b67eff8 --- /dev/null +++ b/docs/architecture-diagram.md @@ -0,0 +1,207 @@ +# CVE Services Architecture Diagram + +This document describes the architecture of CVE Services, the CVE Program's automated tooling for CVE ID reservation, CVE Record publication, and user management. It is maintained by the [Automation Working Group (AWG)](https://github.com/CVEProject/automation-working-group). + +## High-Level Architecture Overview + +```mermaid +graph TB + subgraph Actors + CNA["CNA Personnel
(Authenticated Users)"] + OA["Organizational
Administrators (OAs)"] + ADP["Authorized Data
Publishers (ADPs)"] + SEC["CVE Secretariat"] + end + + subgraph Clients ["CVE Services Clients"] + VG["Vulnogram
(Web App)"] + CC["cveClient
(Web App)"] + CL["cvelib
(CLI / Library)"] + CUSTOM["Custom / Build-
Your-Own Client"] + end + + subgraph API ["CVE Services API"] + direction TB + PROD_API["Production API
cveawg.mitre.org/api"] + TEST_API["Test API
cveawg-test.mitre.org/api"] + end + + subgraph CoreServices ["CVE Services Core Components"] + direction TB + IDR["CVE ID Reservation
(IDR) Service"] + RSUS["CVE Record Submission
& Upload Service (RSUS)"] + UR["CVE Services
User Registry"] + end + + subgraph DataStores ["Data & Schema"] + direction TB + SCHEMA["CVE Record Format
(JSON Schema v5.x)
github.com/CVEProject/cve-schema"] + CVELIST["CVE List Repository
(cvelistV5)
github.com/CVEProject/cvelistV5"] + end + + subgraph Publication ["Public-Facing"] + direction TB + CVEORG["CVE.ORG
(Production Website)"] + TESTORG["TEST.CVE.ORG
(Test Website)"] + end + + CNA --> VG + CNA --> CC + CNA --> CL + CNA --> CUSTOM + OA --> VG + OA --> CC + OA --> CL + ADP --> CUSTOM + SEC --> PROD_API + + VG --> PROD_API + VG --> TEST_API + CC --> PROD_API + CC --> TEST_API + CL --> PROD_API + CL --> TEST_API + CUSTOM --> PROD_API + CUSTOM --> TEST_API + + PROD_API --> IDR + PROD_API --> RSUS + PROD_API --> UR + TEST_API --> IDR + TEST_API --> RSUS + TEST_API --> UR + + IDR -- "Reserve CVE IDs
(sequential / non-sequential)" --> CVELIST + RSUS -- "Publish / Update
CVE Records" --> CVELIST + RSUS -- "Validates against" --> SCHEMA + UR -- "Authenticates &
manages users" --> IDR + UR -- "Authenticates &
manages users" --> RSUS + + CVELIST -- "Hourly publish
cycle" --> CVEORG + CVELIST -- "Test data" --> TESTORG +``` + +## Component Descriptions + +### CVE Services Core Components + +| Component | Description | +|---|---| +| **CVE ID Reservation (IDR) Service** | Provides direct and on-demand CVE ID reservations. CNAs can reserve any number of CVE IDs, in sequential or non-sequential order. | +| **CVE Record Submission & Upload Service (RSUS)** | Allows CNAs to populate details of a CVE Record, submit a CVE Record for publication on the CVE List, and update CVE Records on-demand. | +| **CVE Services User Registry** | Authenticates and manages the users of the services for CNA organizations. Each user authenticates with a User ID, CNA Short Name, and API Secret. | + +### CVE Services Clients + +| Client | Type | Description | +|---|---|---| +| **[Vulnogram](https://vulnogram.github.io/)** | Web Application | A robust CVE Record editor/submission web application. Can be downloaded, installed as a server, or accessed via a website. Supports user account management. | +| **[cveClient](https://github.com/CERTCC/cveClient)** | Web Application | A CVE Record editor/submission tool that simplifies the creation and submission of CVE Records. Can be downloaded as a server or accessed via a website. | +| **[cvelib](https://github.com/RedHatProductSecurity/cvelib)** | CLI / Library | A Python library and command line interface for the CVE Services API. Can be integrated into existing vulnerability management infrastructure or used stand-alone. | +| **Custom Client** | Any | CNAs may build their own client using the [CVE Services API documentation](https://cveawg.mitre.org/api-docs/). | + +### Community-Developed Tools + +| Tool | Description | +|---|---| +| **[cvelint](https://github.com/mprpic/cvelint)** | CLI tool that validates CVE Records for possible errors not enforceable by the schema or validated by CVE Services. | +| **[CVE CNA Bot](https://github.com/marketplace/actions/cve-cna-bot)** | GitHub Action that validates CVE JSON records and optionally submits them to the CVE RSUS service. | + +### Data & Schema + +| Resource | Description | +|---|---| +| **[CVE Record Format (cve-schema)](https://github.com/CVEProject/cve-schema)** | The JSON schema defining the structure of CVE Records (currently v5.2.0). Maintained by the CVE Quality Working Group (QWG). | +| **[CVE List (cvelistV5)](https://github.com/CVEProject/cvelistV5)** | The authoritative repository of published CVE Records in CVE Record Format. | + +### Environments + +| Environment | API Endpoint | Website | Notes | +|---|---|---|---| +| **Production** | `https://cveawg.mitre.org/api` | [CVE.ORG](https://www.cve.org/) | Published content is immediately public. | +| **Test** | `https://cveawg-test.mitre.org/api` | [TEST.CVE.ORG](https://test.cve.org/) | All content is public — use fake data only. Separate credentials required. | + +## CVE Record Workflow (Sequence) + +```mermaid +sequenceDiagram + participant CNA as CNA User + participant Client as CVE Services Client + participant API as CVE Services API + participant IDR as IDR Service + participant UR as User Registry + participant RSUS as RSUS + participant Schema as CVE Record Format Schema + participant CVEList as CVE List (cvelistV5) + participant Web as CVE.ORG + + CNA->>Client: Authenticate (User ID, CNA Short Name, API Secret) + Client->>API: POST /authenticate + API->>UR: Validate credentials + UR-->>API: Auth token + API-->>Client: Auth token + + Note over CNA,Client: Step 1: Reserve CVE ID(s) + CNA->>Client: Request CVE ID reservation + Client->>API: POST /cve-id (with auth token) + API->>IDR: Reserve ID(s) + IDR-->>API: CVE ID(s) (RESERVED state) + API-->>Client: CVE ID(s) + Client-->>CNA: CVE ID(s) confirmed + + Note over CNA,Client: Step 2: Populate & Submit CVE Record + CNA->>Client: Create/edit CVE Record content + Client->>API: POST /cve/{id}/cna (CNA Container) + API->>RSUS: Validate & store record + RSUS->>Schema: Validate against CVE Record Format v5.x + Schema-->>RSUS: Validation result + RSUS-->>API: Record accepted (PUBLISHED state) + API-->>Client: Success + Client-->>CNA: Record published + + Note over CVEList,Web: Step 3: Publication to CVE.ORG + RSUS->>CVEList: Commit record to cvelistV5 + CVEList->>Web: Hourly publish cycle + Web-->>Web: Record visible on CVE.ORG + + Note over CNA,Client: (Optional) Step 4: Update CVE Record + CNA->>Client: Edit existing CVE Record + Client->>API: PUT /cve/{id}/cna (updated CNA Container) + API->>RSUS: Validate & update record + RSUS-->>API: Record updated + API-->>Client: Success +``` + +## Organizational Roles + +```mermaid +graph LR + subgraph CVE Program Hierarchy + TLR["Top-Level Roots
(CISA, MITRE)"] + ROOT["Roots
(CISA ICS, CERT@VDE,
ENISA, Google, INCIBE,
JPCERT/CC, Red Hat,
Thales Group)"] + CNA_ORG["CNA Organizations"] + end + + subgraph CNA Organization Roles + OA["Organizational
Administrator (OA)"] + USER["CNA Users"] + end + + TLR --> ROOT + ROOT --> CNA_ORG + CNA_ORG --> OA + OA -- "Creates/manages
accounts" --> USER + + OA -- "Requests OA credentials from" --> ROOT + OA -- "Requests OA credentials from" --> TLR +``` + +## Additional Resources + +- [CVE Services page on cve.org](https://www.cve.org/AllResources/CveServices) +- [CVE Services GitHub Repository](https://github.com/CVEProject/cve-services) +- [CVE Schema GitHub Repository](https://github.com/CVEProject/cve-schema) +- [CVE List (cvelistV5) GitHub Repository](https://github.com/CVEProject/cvelistV5) +- [CVE Services API Documentation (Production)](https://cveawg.mitre.org/api-docs/) +- [CVE Services API Documentation (Test)](https://cveawg-test.mitre.org/api-docs/) +- [AWG Charter](https://github.com/CVEProject/automation-working-group/blob/master/AWG_Charter.md) From 6c3a405d48fe86377f49ff6c3adf6a15930385a6 Mon Sep 17 00:00:00 2001 From: Madison Ficorilli Date: Fri, 13 Mar 2026 14:17:24 -0400 Subject: [PATCH 02/14] Update CVE.ORG URLs to lowercase format --- docs/architecture-diagram.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/architecture-diagram.md b/docs/architecture-diagram.md index 02b67eff8..301ea13da 100644 --- a/docs/architecture-diagram.md +++ b/docs/architecture-diagram.md @@ -41,8 +41,8 @@ graph TB subgraph Publication ["Public-Facing"] direction TB - CVEORG["CVE.ORG
(Production Website)"] - TESTORG["TEST.CVE.ORG
(Test Website)"] + CVEORG["cve.org
(Production Website)"] + TESTORG["test.cve.org
(Test Website)"] end CNA --> VG From 5b016aba9203e406322dc47fde022041de55ce6d Mon Sep 17 00:00:00 2001 From: Madison Ficorilli Date: Fri, 13 Mar 2026 14:21:00 -0400 Subject: [PATCH 03/14] Update references from CVE.ORG to cve.org --- docs/architecture-diagram.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/architecture-diagram.md b/docs/architecture-diagram.md index 301ea13da..b596260bd 100644 --- a/docs/architecture-diagram.md +++ b/docs/architecture-diagram.md @@ -133,7 +133,7 @@ sequenceDiagram participant RSUS as RSUS participant Schema as CVE Record Format Schema participant CVEList as CVE List (cvelistV5) - participant Web as CVE.ORG + participant Web as cve.org CNA->>Client: Authenticate (User ID, CNA Short Name, API Secret) Client->>API: POST /authenticate @@ -159,10 +159,10 @@ sequenceDiagram API-->>Client: Success Client-->>CNA: Record published - Note over CVEList,Web: Step 3: Publication to CVE.ORG + Note over CVEList,Web: Step 3: Publication to cve.org RSUS->>CVEList: Commit record to cvelistV5 CVEList->>Web: Hourly publish cycle - Web-->>Web: Record visible on CVE.ORG + Web-->>Web: Record visible on cve.org Note over CNA,Client: (Optional) Step 4: Update CVE Record CNA->>Client: Edit existing CVE Record From 1fffe35192443a5c3238359c4a910782d8eb2838 Mon Sep 17 00:00:00 2001 From: Madison Ficorilli Date: Fri, 13 Mar 2026 14:56:56 -0400 Subject: [PATCH 04/14] Enhance architecture documentation with CPASS details Added detailed architecture diagram and data flow summary for CVE Services. --- docs/architecture-diagram.md | 55 ++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/docs/architecture-diagram.md b/docs/architecture-diagram.md index b596260bd..42e1c2f27 100644 --- a/docs/architecture-diagram.md +++ b/docs/architecture-diagram.md @@ -2,6 +2,61 @@ This document describes the architecture of CVE Services, the CVE Program's automated tooling for CVE ID reservation, CVE Record publication, and user management. It is maintained by the [Automation Working Group (AWG)](https://github.com/CVEProject/automation-working-group). +## CVE Program Automation Support System (CPASS) + +The CPASS diagram shows the broad end-to-end data flow of vulnerability information through the CVE Program. + +```mermaid +flowchart LR + + subgraph Vulnerability_Data_Ingress + A[IT Product Vendors / Vulnerability Researchers] + B[CNAs / ADPs] + end + + subgraph CVE_Services + C[CVE ID Reservation - IDR] + D[Record Submission Upload - RSU] + E[Authorized Data Publishing] + end + + subgraph Storage + F[(CVE Record Repository)] + end + + subgraph Access + G[Open Search] + H[JSON CVE Records] + I[CVE Program Website] + J[CVE Repository Search GUI] + K[General Public] + end + + A --> B + B --> C + B --> D + C --> E + D --> E + E --> F + + F --> G + G --> H + + F --> J + J --> I + K --> I +``` + +### CPASS Data Flow Summary + +| Stage | Components | Description | +|---|---|---| +| **Vulnerability Data Ingress** | IT Product Vendors, Vulnerability Researchers → CNAs / ADPs | Vulnerabilities are discovered and reported to authorized CVE Numbering Authorities or Authorized Data Publishers for processing. | +| **CVE Services** | IDR, RSU, Authorized Data Publishing | CNAs reserve CVE IDs, submit structured vulnerability records, and publish them through the authorized data publishing pipeline. | +| **Storage** | CVE Record Repository | All validated CVE Records are stored in the canonical repository ([cvelistV5](https://github.com/CVEProject/cvelistV5)). | +| **Access** | Open Search, JSON CVE Records, CVE Program Website, Search GUI, General Public | CVE data is distributed as machine-readable JSON records and made searchable via the CVE Program website for the general public. | + + ## High-Level Architecture Overview ```mermaid From 377899d750cff9ffc47f56f41c4584a2020c4f85 Mon Sep 17 00:00:00 2001 From: Madison Ficorilli Date: Fri, 13 Mar 2026 14:59:06 -0400 Subject: [PATCH 05/14] Fix typo in architecture diagram documentation --- docs/architecture-diagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture-diagram.md b/docs/architecture-diagram.md index 42e1c2f27..c8083794b 100644 --- a/docs/architecture-diagram.md +++ b/docs/architecture-diagram.md @@ -16,7 +16,7 @@ flowchart LR subgraph CVE_Services C[CVE ID Reservation - IDR] - D[Record Submission Upload - RSU] + D[Record Submission Upload - RSUS] E[Authorized Data Publishing] end From 1aaf71362ac62313ff1033ec502df5f7b80402dc Mon Sep 17 00:00:00 2001 From: Madison Ficorilli Date: Fri, 13 Mar 2026 14:59:37 -0400 Subject: [PATCH 06/14] Fix typo in CVE Services components list --- docs/architecture-diagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture-diagram.md b/docs/architecture-diagram.md index c8083794b..84c5197f1 100644 --- a/docs/architecture-diagram.md +++ b/docs/architecture-diagram.md @@ -52,7 +52,7 @@ flowchart LR | Stage | Components | Description | |---|---|---| | **Vulnerability Data Ingress** | IT Product Vendors, Vulnerability Researchers → CNAs / ADPs | Vulnerabilities are discovered and reported to authorized CVE Numbering Authorities or Authorized Data Publishers for processing. | -| **CVE Services** | IDR, RSU, Authorized Data Publishing | CNAs reserve CVE IDs, submit structured vulnerability records, and publish them through the authorized data publishing pipeline. | +| **CVE Services** | IDR, RSUS, Authorized Data Publishing | CNAs reserve CVE IDs, submit structured vulnerability records, and publish them through the authorized data publishing pipeline. | | **Storage** | CVE Record Repository | All validated CVE Records are stored in the canonical repository ([cvelistV5](https://github.com/CVEProject/cvelistV5)). | | **Access** | Open Search, JSON CVE Records, CVE Program Website, Search GUI, General Public | CVE data is distributed as machine-readable JSON records and made searchable via the CVE Program website for the general public. | From a37f1c862425f3b110334efd7a939a77f27b610f Mon Sep 17 00:00:00 2001 From: Madison Ficorilli Date: Fri, 13 Mar 2026 15:36:08 -0400 Subject: [PATCH 07/14] Update architecture diagram and descriptions --- docs/architecture-diagram.md | 110 ++++++++++++++++++++++++++--------- 1 file changed, 84 insertions(+), 26 deletions(-) diff --git a/docs/architecture-diagram.md b/docs/architecture-diagram.md index 84c5197f1..19fe05b0b 100644 --- a/docs/architecture-diagram.md +++ b/docs/architecture-diagram.md @@ -7,6 +7,10 @@ This document describes the architecture of CVE Services, the CVE Program's auto The CPASS diagram shows the broad end-to-end data flow of vulnerability information through the CVE Program. ```mermaid +--- +title: CVE Program Automation Support System (CPASS) — End-to-End Data Flow +--- + flowchart LR subgraph Vulnerability_Data_Ingress @@ -14,17 +18,17 @@ flowchart LR B[CNAs / ADPs] end - subgraph CVE_Services + subgraph CVE_Services ["CVE Services (REST API)"] C[CVE ID Reservation - IDR] D[Record Submission Upload - RSUS] - E[Authorized Data Publishing] + E[Authorized Data Publishing - ADP] end subgraph Storage F[(CVE Record Repository)] end - subgraph Access + subgraph Access ["Data Access (conceptual)"] G[Open Search] H[JSON CVE Records] I[CVE Program Website] @@ -35,14 +39,16 @@ flowchart LR A --> B B --> C B --> D - C --> E - D --> E + C --> F + D --> F E --> F - F --> G - G --> H + B --> E - F --> J + F --> H + F --> G + G --> J + H -.-> K J --> I K --> I ``` @@ -56,10 +62,15 @@ flowchart LR | **Storage** | CVE Record Repository | All validated CVE Records are stored in the canonical repository ([cvelistV5](https://github.com/CVEProject/cvelistV5)). | | **Access** | Open Search, JSON CVE Records, CVE Program Website, Search GUI, General Public | CVE data is distributed as machine-readable JSON records and made searchable via the CVE Program website for the general public. | - ## High-Level Architecture Overview +The following diagram expands on the CPASS view above, showing the detailed internal architecture of CVE Services including the API layer, clients, authentication, and environments. + ```mermaid +--- +title: CVE Services High Level Architecture +--- + graph TB subgraph Actors CNA["CNA Personnel
(Authenticated Users)"] @@ -134,6 +145,14 @@ graph TB CVELIST -- "Hourly publish
cycle" --> CVEORG CVELIST -- "Test data" --> TESTORG + + %% Color tiers + style Actors fill:#294D27,stroke:#294D27,stroke-width:2px + style Clients fill:#294D27,stroke:#294D27,stroke-width:2px + style API fill:#274D4B,stroke:#274D4B,stroke-width:2px + style CoreServices fill:#274D4B,stroke:#274D4B,stroke-width:2px + style DataStores fill:#4B274D,stroke:#4B274D,stroke-width:2px + style Publication fill:#4B274D,stroke:#4B274D,stroke-width:2px ``` ## Component Descriptions @@ -169,6 +188,9 @@ graph TB | **[CVE Record Format (cve-schema)](https://github.com/CVEProject/cve-schema)** | The JSON schema defining the structure of CVE Records (currently v5.2.0). Maintained by the CVE Quality Working Group (QWG). | | **[CVE List (cvelistV5)](https://github.com/CVEProject/cvelistV5)** | The authoritative repository of published CVE Records in CVE Record Format. | +> [!NOTE] +> To search existing CVE Records, visit cve.org or download bulk data from the [cvelistV5 repository](https://github.com/CVEProject/cvelistV5). + ### Environments | Environment | API Endpoint | Website | Notes | @@ -176,9 +198,16 @@ graph TB | **Production** | `https://cveawg.mitre.org/api` | [CVE.ORG](https://www.cve.org/) | Published content is immediately public. | | **Test** | `https://cveawg-test.mitre.org/api` | [TEST.CVE.ORG](https://test.cve.org/) | All content is public — use fake data only. Separate credentials required. | +> [!NOTE] +> Individual non-credentialed users cannot directly use CVE Services. It is intended for use by authorized CNAs. + ## CVE Record Workflow (Sequence) ```mermaid +--- +title: CVE Record Flow +--- + sequenceDiagram participant CNA as CNA User participant Client as CVE Services Client @@ -229,26 +258,55 @@ sequenceDiagram ## Organizational Roles +Roots and TLRs provision OA credentials for their CNAs. The OA then creates individual user accounts within their CNA organization. + ```mermaid +--- +title: CVE Services Account Onboarding +--- graph LR - subgraph CVE Program Hierarchy - TLR["Top-Level Roots
(CISA, MITRE)"] - ROOT["Roots
(CISA ICS, CERT@VDE,
ENISA, Google, INCIBE,
JPCERT/CC, Red Hat,
Thales Group)"] - CNA_ORG["CNA Organizations"] - end - - subgraph CNA Organization Roles - OA["Organizational
Administrator (OA)"] - USER["CNA Users"] - end - - TLR --> ROOT - ROOT --> CNA_ORG - CNA_ORG --> OA - OA -- "Creates/manages
accounts" --> USER + TLR["Top-Level Roots
(CISA, MITRE)"] + ROOT["Roots
(CISA ICS, CERT@VDE,
ENISA, Google, INCIBE,
JPCERT/CC, Red Hat,
Thales Group)"] + OA["CNA Organizational
Administrator (OA)"] + USER["CNA User"] + + OA -. "1. Requests OA
credentials from" .-> ROOT + OA -. "1. Requests OA
credentials from" .-> TLR + ROOT -. "2. Issues OA
credentials" .-> OA + TLR -. "2. Issues OA
credentials" .-> OA + OA -. "3. Creates user
account" .-> USER + + style OA fill:#fff3e0,stroke:#e65100,stroke-width:2px + style USER fill:#e8f4fd,stroke:#1a73a7,stroke-width:2px + style ROOT fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px + style TLR fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px +``` - OA -- "Requests OA credentials from" --> ROOT - OA -- "Requests OA credentials from" --> TLR +```mermaid +--- +title: CVE Services Account Management (Ongoing) +--- +graph LR + OA["Organizational
Administrator (OA)"] + USER1["CNA User A"] + USER2["CNA User B"] + USER3["CNA User C"] + UR["CVE Services
User Registry"] + + OA -- "Creates / deactivates
accounts" --> UR + OA -- "Resets credentials" --> UR + UR -- "Authenticates" --> USER1 + UR -- "Authenticates" --> USER2 + UR -- "Authenticates" --> USER3 + OA -- "Ensures individual
accountability" --> USER1 + OA -- "Ensures individual
accountability" --> USER2 + OA -- "Ensures individual
accountability" --> USER3 + + style OA fill:#fff3e0,stroke:#e65100,stroke-width:2px + style UR fill:#fff3e0,stroke:#e65100,stroke-width:2px + style USER1 fill:#e8f4fd,stroke:#1a73a7,stroke-width:2px + style USER2 fill:#e8f4fd,stroke:#1a73a7,stroke-width:2px + style USER3 fill:#e8f4fd,stroke:#1a73a7,stroke-width:2px ``` ## Additional Resources From 9ed029ea7193677c7cca4a0945d12c6d1090cabb Mon Sep 17 00:00:00 2001 From: Madison Ficorilli Date: Fri, 13 Mar 2026 15:49:09 -0400 Subject: [PATCH 08/14] Revise architecture diagram and add ADP workflow Updated the architecture diagram and added ADP workflow details. --- docs/architecture-diagram.md | 58 ++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/docs/architecture-diagram.md b/docs/architecture-diagram.md index 19fe05b0b..4ff2ace85 100644 --- a/docs/architecture-diagram.md +++ b/docs/architecture-diagram.md @@ -21,7 +21,7 @@ flowchart LR subgraph CVE_Services ["CVE Services (REST API)"] C[CVE ID Reservation - IDR] D[Record Submission Upload - RSUS] - E[Authorized Data Publishing - ADP] + E[Authorized Data Publishing] end subgraph Storage @@ -60,7 +60,7 @@ flowchart LR | **Vulnerability Data Ingress** | IT Product Vendors, Vulnerability Researchers → CNAs / ADPs | Vulnerabilities are discovered and reported to authorized CVE Numbering Authorities or Authorized Data Publishers for processing. | | **CVE Services** | IDR, RSUS, Authorized Data Publishing | CNAs reserve CVE IDs, submit structured vulnerability records, and publish them through the authorized data publishing pipeline. | | **Storage** | CVE Record Repository | All validated CVE Records are stored in the canonical repository ([cvelistV5](https://github.com/CVEProject/cvelistV5)). | -| **Access** | Open Search, JSON CVE Records, CVE Program Website, Search GUI, General Public | CVE data is distributed as machine-readable JSON records and made searchable via the CVE Program website for the general public. | +| **Access** | Open Search (Search GUI), JSON CVE Records, CVE Program Website, General Public | CVE data is distributed as machine-readable JSON records and made searchable via the CVE Program website for the general public. | ## High-Level Architecture Overview @@ -165,6 +165,13 @@ graph TB | **CVE Record Submission & Upload Service (RSUS)** | Allows CNAs to populate details of a CVE Record, submit a CVE Record for publication on the CVE List, and update CVE Records on-demand. | | **CVE Services User Registry** | Authenticates and manages the users of the services for CNA organizations. Each user authenticates with a User ID, CNA Short Name, and API Secret. | +> [!IMPORTANT] +> The CVE Secretariat (currently [The MITRE Corporation](https://www.mitre.org/)) operates with elevated privileges across all CVE Services components. Unlike CNAs and ADPs — who can only manage their own CVE Records and user accounts — the Secretariat can: +> - **Cross-CNA Record Management**: View, update, or reject CVE Records owned by any CNA, for quality assurance, corrections, or policy enforcement +> - **User & Organization Administration**: Create, modify, or deactivate CNA organizations and Organizational Administrator (OA) accounts across the entire CVE Services User Registry +> - **System-Wide CVE ID Management**: Reserve, reassign, or manage CVE IDs across all CNA scopes, including handling disputes or transfers between CNAs. +> - **Infrastructure Operations**: Manage the CVE Services API deployments (production and test), schema updates, and the publication pipeline to cve.org. + ### CVE Services Clients | Client | Type | Description | @@ -256,6 +263,53 @@ sequenceDiagram API-->>Client: Success ``` +## ADP Workflow + +Authorized Data Publishers (ADPs) enrich **existing** CVE Records published by CNAs. Unlike CNAs — who create and own CVE Records — ADPs add supplementary data such as affected product lists, severity scores, or additional references to records they do not own. + +```mermaid +--- +title: ADP Workflow vs. CNA Workflow +--- +sequenceDiagram + participant CNA as CNA User + participant ADP as ADP User + participant API as CVE Services API + participant RSUS as RSUS + participant CVEList as CVE List (cvelistV5) + + Note over CNA,CVEList: CNA Workflow (record owner) + CNA->>API: POST /cve/{id}/cna (create CNA Container) + API->>RSUS: Validate & store + RSUS->>CVEList: Publish CVE Record + + CNA->>API: PUT /cve/{id}/cna (update CNA Container) + API->>RSUS: Validate & update + RSUS->>CVEList: Update CVE Record + + Note over ADP,CVEList: ADP Workflow (enrichment only) + ADP->>API: POST /cve/{id}/adp (create ADP Container) + API->>RSUS: Validate & store + RSUS->>CVEList: Append ADP data to existing record + + ADP->>API: PUT /cve/{id}/adp (update ADP Container) + API->>RSUS: Validate & update + RSUS->>CVEList: Update ADP data on existing record +``` + +### Key Differences + +| Aspect | CNA | ADP | +|---|---|---| +| **API Endpoints** | `POST /cve/{id}/cna` · `PUT /cve/{id}/cna` | `POST /cve/{id}/adp` · `PUT /cve/{id}/adp` | +| **Relationship to Record** | Creates and owns the CVE Record | Enriches an existing record they do not own | +| **Data Container** | CNA Container (required fields: descriptions, affected products, references) | ADP Container (supplementary fields: additional affected products, severity scores, additional references) | +| **Record Lifecycle** | Can reserve CVE IDs, create, update, and reject records | Cannot reserve CVE IDs or create new records; can only add/update ADP data on published records | +| **Example Organizations** | Product vendors, CERTs, coordinators | [CISA ADP](https://www.cve.org/ProgramOrganization/ADPs) | + +> [!NOTE] +> A CVE Record can contain one CNA Container and multiple ADP Containers. The CNA Container represents the authoritative vulnerability description from the assigning CNA, while ADP Containers provide additional context from authorized third parties. + ## Organizational Roles Roots and TLRs provision OA credentials for their CNAs. The OA then creates individual user accounts within their CNA organization. From de3f7aeb47f634ca95479360a1dae0be71c7003c Mon Sep 17 00:00:00 2001 From: Madison Ficorilli Date: Fri, 13 Mar 2026 15:57:56 -0400 Subject: [PATCH 09/14] Change color styles in architecture diagram Updated color styles for various components in the architecture diagram. --- docs/architecture-diagram.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/architecture-diagram.md b/docs/architecture-diagram.md index 4ff2ace85..84687fa1b 100644 --- a/docs/architecture-diagram.md +++ b/docs/architecture-diagram.md @@ -147,12 +147,12 @@ graph TB CVELIST -- "Test data" --> TESTORG %% Color tiers - style Actors fill:#294D27,stroke:#294D27,stroke-width:2px - style Clients fill:#294D27,stroke:#294D27,stroke-width:2px - style API fill:#274D4B,stroke:#274D4B,stroke-width:2px - style CoreServices fill:#274D4B,stroke:#274D4B,stroke-width:2px - style DataStores fill:#4B274D,stroke:#4B274D,stroke-width:2px - style Publication fill:#4B274D,stroke:#4B274D,stroke-width:2px + style Actors fill:#F9D7FA,stroke:#F9D7FA,stroke-width:2px + style Clients fill:#F9D7FA,stroke:#F9D7FA,stroke-width:2px + style API fill:#FAF9D7,stroke:#FAF9D7,stroke-width:2px + style CoreServices fill:#FAF9D7,stroke:#FAF9D7,stroke-width:2px + style DataStores fill:#F9D7FA,stroke:#F9D7FA,stroke-width:2px + style Publication fill:#F9D7FA,stroke:#F9D7FA,stroke-width:2px ``` ## Component Descriptions From 764fb45a0b101a7419f2f7a1aaeebc60192571c1 Mon Sep 17 00:00:00 2001 From: Madison Ficorilli Date: Fri, 13 Mar 2026 15:58:17 -0400 Subject: [PATCH 10/14] Update styles for DataStores and Publication in diagram --- docs/architecture-diagram.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/architecture-diagram.md b/docs/architecture-diagram.md index 84687fa1b..b74e531cd 100644 --- a/docs/architecture-diagram.md +++ b/docs/architecture-diagram.md @@ -151,8 +151,8 @@ graph TB style Clients fill:#F9D7FA,stroke:#F9D7FA,stroke-width:2px style API fill:#FAF9D7,stroke:#FAF9D7,stroke-width:2px style CoreServices fill:#FAF9D7,stroke:#FAF9D7,stroke-width:2px - style DataStores fill:#F9D7FA,stroke:#F9D7FA,stroke-width:2px - style Publication fill:#F9D7FA,stroke:#F9D7FA,stroke-width:2px + style DataStores fill:#D7FAF9,stroke:#D7FAF9,stroke-width:2px + style Publication fill:#D7FAF9,stroke:#D7FAF9,stroke-width:2px ``` ## Component Descriptions From ace46cec326e16b54538d25dbcc81060aaadee63 Mon Sep 17 00:00:00 2001 From: Madison Ficorilli Date: Fri, 13 Mar 2026 16:02:52 -0400 Subject: [PATCH 11/14] Enhance architecture diagram documentation with TOC Added a table of contents and improved navigation links throughout the document. --- docs/architecture-diagram.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/docs/architecture-diagram.md b/docs/architecture-diagram.md index b74e531cd..84df1e7ff 100644 --- a/docs/architecture-diagram.md +++ b/docs/architecture-diagram.md @@ -2,6 +2,23 @@ This document describes the architecture of CVE Services, the CVE Program's automated tooling for CVE ID reservation, CVE Record publication, and user management. It is maintained by the [Automation Working Group (AWG)](https://github.com/CVEProject/automation-working-group). +## Table of Contents + +- [CVE Program Automation Support System (CPASS)](#cve-program-automation-support-system-cpass) + - [CPASS Data Flow Summary](#cpass-data-flow-summary) +- [High-Level Architecture Overview](#high-level-architecture-overview) +- [Component Descriptions](#component-descriptions) + - [CVE Services Core Components](#cve-services-core-components) + - [CVE Services Clients](#cve-services-clients) + - [Community-Developed Tools](#community-developed-tools) + - [Data & Schema](#data--schema) + - [Environments](#environments) +- [CVE Record Workflow (Sequence)](#cve-record-workflow-sequence) +- [ADP Workflow](#adp-workflow) + - [Key Differences](#key-differences) +- [Organizational Roles](#organizational-roles) +- [Additional Resources](#additional-resources) + ## CVE Program Automation Support System (CPASS) The CPASS diagram shows the broad end-to-end data flow of vulnerability information through the CVE Program. @@ -62,6 +79,8 @@ flowchart LR | **Storage** | CVE Record Repository | All validated CVE Records are stored in the canonical repository ([cvelistV5](https://github.com/CVEProject/cvelistV5)). | | **Access** | Open Search (Search GUI), JSON CVE Records, CVE Program Website, General Public | CVE data is distributed as machine-readable JSON records and made searchable via the CVE Program website for the general public. | +[↑ Back to Table of Contents](#table-of-contents) + ## High-Level Architecture Overview The following diagram expands on the CPASS view above, showing the detailed internal architecture of CVE Services including the API layer, clients, authentication, and environments. @@ -155,6 +174,8 @@ graph TB style Publication fill:#D7FAF9,stroke:#D7FAF9,stroke-width:2px ``` +[↑ Back to Table of Contents](#table-of-contents) + ## Component Descriptions ### CVE Services Core Components @@ -208,6 +229,8 @@ graph TB > [!NOTE] > Individual non-credentialed users cannot directly use CVE Services. It is intended for use by authorized CNAs. +[↑ Back to Table of Contents](#table-of-contents) + ## CVE Record Workflow (Sequence) ```mermaid @@ -263,6 +286,8 @@ sequenceDiagram API-->>Client: Success ``` +[↑ Back to Table of Contents](#table-of-contents) + ## ADP Workflow Authorized Data Publishers (ADPs) enrich **existing** CVE Records published by CNAs. Unlike CNAs — who create and own CVE Records — ADPs add supplementary data such as affected product lists, severity scores, or additional references to records they do not own. @@ -310,6 +335,8 @@ sequenceDiagram > [!NOTE] > A CVE Record can contain one CNA Container and multiple ADP Containers. The CNA Container represents the authoritative vulnerability description from the assigning CNA, while ADP Containers provide additional context from authorized third parties. +[↑ Back to Table of Contents](#table-of-contents) + ## Organizational Roles Roots and TLRs provision OA credentials for their CNAs. The OA then creates individual user accounts within their CNA organization. @@ -363,6 +390,8 @@ graph LR style USER3 fill:#e8f4fd,stroke:#1a73a7,stroke-width:2px ``` +[↑ Back to Table of Contents](#table-of-contents) + ## Additional Resources - [CVE Services page on cve.org](https://www.cve.org/AllResources/CveServices) @@ -372,3 +401,5 @@ graph LR - [CVE Services API Documentation (Production)](https://cveawg.mitre.org/api-docs/) - [CVE Services API Documentation (Test)](https://cveawg-test.mitre.org/api-docs/) - [AWG Charter](https://github.com/CVEProject/automation-working-group/blob/master/AWG_Charter.md) + +[↑ Back to Table of Contents](#table-of-contents) From 83c606f0d32677f9d6f1b0af212fbe7eb9b3f036 Mon Sep 17 00:00:00 2001 From: David Welch Date: Fri, 13 Mar 2026 15:09:38 -0600 Subject: [PATCH 12/14] some high level docs --- docs/charts.md | 80 +++++++++++++++++++++++++++++++++++++++++++ docs/inspiration.png | Bin 0 -> 107806 bytes 2 files changed, 80 insertions(+) create mode 100644 docs/charts.md create mode 100644 docs/inspiration.png diff --git a/docs/charts.md b/docs/charts.md new file mode 100644 index 000000000..d02a935a9 --- /dev/null +++ b/docs/charts.md @@ -0,0 +1,80 @@ +## Data Flow + +```mermaid +flowchart TB + subgraph CNA_Tools["CNA Tools"] + Custom["Custom Tooling"] + Vulnogram["Vulnogram"] + CLI["CLI"] + end + subgraph AWS["AWS"] + API["CVE Services API + (Node.js + Mongoose)"] + Mongo["MongoDB"] + Publisher["CVE Publisher"] + end + Researchers["Researchers"] --> CNAs["CNAs"] + CNAs --> Custom & Vulnogram & CLI + Custom --> API + Vulnogram --> API + CLI --> API + API --> Mongo + Mongo --> Publisher + Publisher --> GitHub["CVE Records + (cvelistV5 GitHub)"] + CVEOrg["CVE.org"] --> GitHub + Consumers["CVE Consumers"] --> CVEOrg + Scanners["Scanners & Defenders"] --> GitHub + Consumers --> Scanners + + Mongo@{ shape: cyl} + Researchers@{ shape: text} + Consumers@{ shape: text} +``` + +## Process Flow + +```mermaid +flowchart TB + +%% Actors +CNA["CNA Organizations +(Vendors, OSS Projects)"] +Researchers["Security Researchers"] +Tools["Security Tools & Platforms +(Scanners, SBOM, Vuln Mgmt)"] + +%% Core System +subgraph CVE_Ecosystem["CVE Program Ecosystem"] + direction TB + + subgraph CVE_Services["CVE Services"] + API["CVE Services API"] + Auth["Authentication & Authorization"] + Workflow["CVE Workflow Engine +(ID reservation, submission, updates)"] + end + + CVERepo["CVE Records Repository +(CVE List / JSON Records)"] + +end + +%% Downstream Ecosystem +NVD["National Vulnerability Database (NVD)"] +Intel["Threat Intelligence +& Security Data Providers"] + +%% Flows +CNA -->|"Reserve / Publish CVE"| API +API --> Auth +Auth --> Workflow +Workflow --> CVERepo + +Researchers -->|"Report vulnerabilities"| CNA + +CVERepo -->|"Public CVE Data"| NVD +CVERepo -->|"CVE feeds"| Intel +NVD -->|"Enriched vulnerability data"| Tools +Intel --> Tools +``` diff --git a/docs/inspiration.png b/docs/inspiration.png new file mode 100644 index 0000000000000000000000000000000000000000..95f4b5e54a0e7c10f03ea08be37ce31b3e307fde GIT binary patch literal 107806 zcmeFZi9eM8`adpFBBg9)DJ5i=EFnu&${xnphq5!4?7LA2g|d?oSu*x*?0aS3*D==Y z%NSY4I{fZ=pYwhn`ke3M_Ya&rc--AH_iMRc*ZRD!>kd{^k*6eQASWUsqI~}Bu{seE zNjnkISv1)>;EpWQ#WEtIGhjRz$TT_t$l#R7@??a@MfG&cv_zIyz2>GuS=8}eg(R`vz&Z(njC3XN)F z(9%il`S_UOg1BW&!>CM*Avpu{2ZYA`Ri$3hUAEvc>3Ht(4jyXKg!TBjmp9L7!s*9e zlhf+08@;*^YVx6#!D&yb4qJmw@*!FQzwg_Ji;x zQq%ne$En&KIs%k_V5>0HuFYI0%V|cq`+l{oR%-^d8bQ z@n<0N!?+~y178xmzc5DcIN$ks?f$sbxOb-c+V1X%Ed)(@uK1b&Ss~+DSu@eAWD!)O zv7>3DJ8cOI^zk3B>qM8Do0@@qW+v{iva-V6eo>l3%=dQ5ynDUXtYCXx`Y^ z;1P{IUK7-k#>o-=^^Jdht%IJ0r~T0L@#QPPGbI;F%F57H*jj5!N=n0#NWm6)2VEg+X=qlHI<_Grmmu^bgFf%h#uSLlgo3_WG_P1AR=u=Q{ImM{{GsYPb z^}90KF|sx)0e}dZ6xB1@RZoK=nZ=!2boKNihXxZ880_5U2f+}iVl3bGyqKcyjL_Rt z(soD3uYjlZi%<}7S4k9hbmW6BHV?1a{T13<(ds{3;P(5aUa3_y@bANe%Q|3iY?7Gc zPZ}f};+e$p;U*M~gc?TcI5;@0)8w$8GL6?+>pz=bcjR6q0~CLR#~J0J{E#AgL$`)5 zxFq8+OxSwJ?N&TH22$%)(HVc={Ch!8RTVmMX0_!btCpUgweNm^@~?UEgROp5<;xc> ztgVX``6|Afb;FrmrKC=q=Xe$wQyum((!a=<_Izr47_#GE^z-M>@*DatC{vfYXt2jE zofj`&jJfU?6z2`AI0f1q9D3>Ld={Pc40w5f!xXW=JlM7Rh$lTHz{nMusrNPdsb?Hk=1i=E_Q}%n2tx=sBGLN5js}hYu1@SD+#A1 zu=GEt%Q8-Uu}Nu%dFt?AGwSN&dJ$gKkn}Aq%3LV z`r9o3iwC97G!|{49L<20ut16JYWFfk^R)}k(nGu)gzokWw7*Ki8zJe?Pu~m zJQ#qgS!m747Ne^bie=H2&e=OO9hu2K;tX-j5-uHZZ=4Rg@Kw-Ka6Hc`opzdW%AVB;wt$HqCFSKw6l#eQ|Il^q z^A7$9e^BF>mzvsmwe!O~=DYMs0usS!$OYEe0!BWQ14M11fkktJb=}=7hLg5ehS48H zCoB@aD$$xssH*bar7-*|TYUVm_m#Xsw62Ou7-tm4rOkm_Pu%Knc7%SVt#*i8I=IDCeGXdH$RMy)9cpqK%-zV6|E4AStqXq`LKRJF2r= z>YzhhT)f&WoJs5@hbnw4@Fg7$jncd(Q|Kw7RMPb;u<3g%L^u;AX&3^*)z4jSv19FYD|MVkZu2 z@X}&vXx+oUY074r0QSS-NCEs@Pl}vjbmDQm>;IcD*Y6bcgM5;f7PlMuW21g-D^=*Y z1?R;*q3CHuzdW$$Zi!vXuD^nFkV{U|QJV$DTKbeUHa0%1nii$JfWcsd17H3uTtD-V zJOGlR&I3q#NP`$NL8Sx}V=LS8GhD!=^IQ$G-g$yN>kNxnNA!5M>f{r{6e)_ObbQV7 zJy67w8)gO3vGp2cVari=!xoJ8ZyznS&Mg6$>iK5O-e%kr(IWp-^iR_Ul;V%6&zA^% z^Y~0B_k0kHjtw3B`i*qr~mSI{Rc4?*Ua3KBP1PjI>SnK+(`iCX1o>rd9=W8 zQmX%<*&iG)P6|+6#k=bRFq6qUnU-v#%^=lt=T!qU`6*oQ7f2Q@-$w3ozgzpImAZ1o zcNXVR!x&Owg3OIevSSF*(bSyvwJa?y9YUe5<2%St3+*L9Xq~<}st|bOej zmK&{c@7~XWI*SononW6Z@9WZF9UIS8?Et95`O2imGl}y&?VaiMI##FF86ige)->Lc zfAIo=#B?xM#>$+E8nlF~S6=kpJBl|905+j8Sx*GO#0j9q>es{J1A#_SWnA9F6 z@rZC6CUjw}y8Qbx+A}Awlw;`4<7u$aW=P(5P%>NFk7{P(sudCw(|cw^C&iX!69~Zs zvG5*N!hX_;!C-oHvAkXmvX#xG*T|aX(F^U__C+Zl(Q%XGH)WKlFA+S|{W2EoT|N@k zr%lijVD%M`CBK{}D9};T!%Wcr3}=vuft<+q#{BZG^SI61g%*5th7}&5fLtE#txN8J zX3njxm0Gj^!^AAn0VDmbiqDaK8|5CD6fNOsShrSNryUn-z>OGxkcjv2&SZg_cZ{KZ%f}W0{ z$%hXghS2ClH90hG%pbw^($z0TJO&$|2_8_301Q3u^|F*VNo#n3c16dlBCc#a`I|IS z!-TiM&PG_@*=2lh5VycMk8VT-;ATVf_2lH5BAQB5($cH$?5K(CHM8^nHx8E^oj{fyp zZ`NOsS3ZpC9%Y$Q2@M^ct}WlOm4Zo=$VnnS`#^NOCnenVnG{%i933%4_kK4+LRAhj zt7!#0MSd?dF`uVb-&CB(r?zNicz6U+@#CxEaR9xc1uZS@*R|$Le=qZ|1=nkmQ^hE! z^Fawb*RM1+%4V9^9EwRxTs=mqF6ZL(^>)dB$qI_%eR-aQ8W{USham+$wcgXRdYTM* zT%nkUPSExkUM(FRu`LSZNl$}_n3D$Jwp${ZvH%q_-qe>Wwi$@FW4?wlSzBNWYr966 z%;aPR`5!ZWPOGSBp6@P(wzsXqok4texkIW}SMuv7Jg=G=7#KJmM1u`2xxslQ{{H@p zB3dVfj0omLHd|h|dvRY+MZB^>4DgEqia(kP9yOF0z2d_#m&xlblAqr+KevTqJl{2f z%D|1>?O3c6yUqQvOtH%qWa6l3}HA5n^X94Sy`>kt6tYcI7D z74!A>bS){%_w{O{=%xwd&Aa=-wr&Ii!Em*zFkz8$o!-5e1&{Nq5{eXGVW|1e#2W0@ zq%~Pfs#4BLiprcL_-^&eUnmHQK%5kwvr@Xy?bIA#;^R93T`onW%4(3&=_3@#a|?6P ze1@s^Hd^c4o~4D|36-pohw`;A>~V@^Qp2DGZ!tB~r)qTa&F4=tRtpiJfG?I`a3UD1 zXR&@@)U>sdeD96n4g7&qPK}c|= zV?0$Sip4{N5xNP7qEfXMS?}MQ(Uh+6ZU#BrrdpM^T{=aF!tQXd zy^77r1;Pf%*UKUYJRAuU%aThRp1fK@&08Zv#Q@R9HShD;y*^5}eKv33&h0!tG?IdB z{)7n7+si4O^qII>gw5q-6JWd)bIQ+&P>1z$e0gr^`rtZ2ztn49IK({;A{grg30jMQ zpWEVtV>9gg*s?RUag>|;9hm;4)9U4EPf_idsD)(Af=ljrgA#2cyIWV zU8BT5$_~&XY4Uz`(P_;|#RMhDN$b`Diei=+hR$=fu~&Y!S}Q6xD7LZu-Q(-*HSb>@ zwl)zgf??i4H+72Se`_Q)BaO5QdUNtLh+wT`7x9eUCb~1)1b%|Orx`)_+{;1~Ek2>V z&m2F`NdYJf_F|?SY{~wdBUwB9o0h_pN=?8LVC3i2eFOy;fg%pSVOjV}*+4{~RX`EE z_p?x3?^e^1N8lUP_5LqUkd z8;Lzv3_v;uvw_d{V>r4iDq5`+Y@W05NX#Ogo!HD@AH8vA)~Z8%F6cPFzAFg~*Uv(q#ht&ByX<)w>i2V->&Yy&)P z>u2Y=DO|8J(5k`YVMT4a$Hu3Z#ttk^&`O06P^TFh$=uSq`iAG2e7Wm$N!g8~Qrhu2 zJ5XXiPINPjK+k_jqvQz?+0vJyf(SSxBR81I!*szHD?tqC+^lbHbTl0aTN(n?rN@bQ zXDx%07OiM{w*3U?iRS@cj=BJtp6k4n1k$Vhih81w-sIRY9PciQpCE8Q;Jn)~Og^k6kp2DL zFUD~in%lxtje@)r0v(*<&Azq19rMvSNMYI^tcL86(|c5MLl-2>JvP)a;GQu2LSPaNZBVBM!WEBUZqnM(xJB!C?$>KM}OQt_y> zJO%hrT~h|OCv>ZpK-!F~`XRPCGxX4iC4C$o_lBBJ$XaDI`l1C{hMthCj$m@Rdovri zO({idp01(kU~v|g;wa_UTPIg@tr&o`;<84r5XkF8tQXtioCLR~SfD{?4Rxg%)O$WL zUj_5ij$#sHMrlRup6OPBdGky5ibFpQ-Jm=v??l8ifN(M9Upx5AAyPA1>9e~ zN1ig5|J#RxKuU&3&X#2S1TXzF^0PYN4EC{SB>&roEmQ<^UU9|g6!!P;Iau((X)o2C z-}+~)6GH&53}6mtpY~9mB=Nt$0NbLNy;#nMAO9;J0er^iQ(H^@xFJ0|R1B}4%~D@_ zf7Z$t?Z5Z-uj#J601o@{joQb+Y@b-yacDdALbC6TVQpL6yy&Q?kzYSTp?e#1T84(U zqcO_ufbVBZJ~7{wWF2eZ62Aji9_}tZ$=@>b7iP^3V;8RwSZ|X=3csb{xjP+{o1Xpy zfKHX3)TF4jc=GC(_t=(CpR1aS(X&AnnNIB7S7rH4%Pi?JaKnA}O4Z>;JG4JTIoS0j z_X(*342CQ~Hky}?T!0uD!X_pRt!-?!xLQPP$1KFe#D*p(?VO#RajhK5BQxRBwtIVf zxafSZAAr*q3sP$izbP7D@E;vXxB_53?U)O$Fd!6@86var$>;aoYu7R`z<^=_pcPfz zEoFUKaw`J=JKVPS ztiWAP0s#52NnZ;J1Z*Jzj-&axxt$@Qp~?qKAWco0vPo?z3+*hfIhu_n=e030jl1Q> zP3N)^h>e8xgFzI^ve>*E*OhL48K;<%f>@P*YRWiE2a0 zZX>--XM(U{!Pojl04ppc;H`<&%Ery;*@H#_d*jt;PidCwiIv!n$pe*a{YWG&tMPOTaj=#~e-=T0>M zPF7-_Uo$k6XRso+vcKg=Y>=I&Iz6Eb003YE=V=Y-N(Ig0vZ#AH+~-=m$*foSGJxI>zYMP12z2Dq zM11?U&Xqw^vZNj0Fq+4*5?gnePXEm^Ob7(!B-1cTTNWm@AMki(RJ|6(rei{U~BK9Tq%df%d zZh6J(zYcaqkymS`&j-C51xFj#;W2j5p&T7tuAO%~MKK{0urujfw`6<)K_Y>z-c+Ks z9t9i6G10nZabdm(QyV64=TWKMf)fh_gp#A-9?P8k1^RV9HS~|U-g-{K&gXpjQctlt zaPBmPG6@u#aLr=?JRz1ZYR_O{f!D2CQe@dE&uSW_yZY|_`p7E3TCo7%Y|P{LUQ%?~ z9t3-Ww8@=l-gEMdR=XF|b>NcoBp0C-ty_}uz!4HbhQc#q;U3&C`-=~+NhbAqn4si`#<5@<}&iS@K)i~Me z7>TysM2sAA6#}Ymf}%k4ce)FWZI-OcqtE*XnbP=HiJ;M*JxzC)g(O!GXv^YUECiW+ ze7Jy{@Wi?|XK$qEU&Ci5dMt4_OVcu~MD197!SO1chZSD;UQIJ~wpuL7TBRc$gAT{zJ$v z0nu7=LtoQ7qc+<^u_2OJI7zi3X|&Jz+e^jGkgRa4SL2n=hHUYpA49pug@iPQzjY_r ztuAFI?+SCX$)F2BrNfZXU_X+$Si_GIQ64KW$$CMk#k>; zR??S6D9@Pwg(CfJwpIbN-ag^k9nJbz-UE|XuN2xS2y*3&>N|XiXzZhUOlm>yxD}-Y z0&~)A(1YA8;k=|Ok4SY5wPor_+)b4j64-z_5+kC$l+BKt! z%fIzOx2?UsW;!WBUU}g~eOgKa`B$3nS+~0&G=@t|>`A2?AxSuB$NUO)z=RQa7_X?q)o@v z9gJhE*Plm&61E@>VK;XzcE8erWcNZFg+Pgx+NrX40BGOM@**z5Q|PUR@h2pwzPd&FriI&rHXW!k%kC(mW9r_r zZ|W0Rydf*^>lg1bWO&^u#h)6-%2qdkjNhOKeoyZH6s@*b8MGrmBb);o^kSIL+8fc# z%CI&&ePVzU+un811p-bifkenP_W1jg09EobO}2FRc1_9*uKT3o6i*$3RYfjR$EQN(gaddz6b>n#FDS*1EZ)%Lxev!NH7WXdy&d}aOyL(ry}lwBC|%@FCQJwXo51WHGY8CD-W^q9^k6wd|4UNz}M^a z(BYk&r8_hr&D>sy{U+ zopR`aec!l8s{EC=lCNg#j)Fnrag@?FByz<%Oi1~A{&~vx<}bEKYP}DtSHL|PD-r2j z%QTnvjZss}MN?vjK_nIs<->d#br`&wHm23fzMlRe{8aWRZV%wH`^PsN0|1{Xg_yiv zNHs=QP!j(FWWaDWORS~D;L!+vXVOl7%w9P_PCop`b|93?LPITW`W-^0pUH%fH$tRo zUdhNb!t%4tEWGaM{6=?aNWaX1DCIbywp_VG@ST=h~$V)d;A@=lsNSyl=u5pcmQ++pyh@OzB~O;BRk!RT>7_hr zUoy~T;Xwu&U!JLEYp!QliPWhg)cbu#>@+PS^e}hztfV!4EoG?D1Se}9Nd%K%?OM#ZxvXI#u%BojE$21$3 z+L?$sCk*+#kUj`Me3o_qiQEg_-zGSBu(Ri@jWb`X%_SoC2F?fgzj-5mtbGbmFq)^J zis?M`?4Z5vS1&}XR-YcB#1E1Jl-xBTx7}1+znUy2lPhZ)NBsuZ``LtihK7vuv--RA z%$F)ZQX`ZaV!JZc6hP+WWB${FZr$0|J=JwrnASyZar=A4x(%H$HjZfYE_m}Rg z0Z{5{^^S8-o}t&mJVxcK*tf8-X3G3EhCsk7R%jrMd*|F4ZH zsR3K@w`U6cWB-Kz0&yf+yV-=~T*#mE5r$_6>Qh7>J-Bodh5LK@ICp{~#KK=c`ETT- z28>uD3sca4TTjPBfClldsuj2Y&n5v0yg*3IP=z)9xApw*IDs?!|2fVL^9eQw;7kPi zN#TfIew%)p91CU;c#%+|;#O^V1k>fai zXz0GcOVOJv7f_+wH4{>zovsZ!Y`$Y3$bJ%_!;`E8C-U{24FYam=Pu|cHK}U85<$wJ zmM&r9VY!#kNgQ$1d;Ley0d^|clpRbeGWyvha;XGt>XM3vyMoNnS%Qfd*_uy6 zE=0ulRRH1nIj+t}23z7R=vV%koMRmO>dJa{2Sb~@k6OL<=*yd@*%%hj8X@7x7r_09 z2)4vEMOpPQ`tx4vPwRCB@9>(d?(gc|!cBeueB>XUQC~v+&5;_bI#iOt31wf8=L^^&Kb{6`r{?JI$(lK(80~v4GpH5PqAt_P>Jc_C{QE;ftPqJ@_ z)y}{hj7(9S=2@+*_7~kwjmRHurYuyv~LG9GTxbPR&L?g`aVc zJ@qo88)LH%t4GwyJId!LR@tl$ntJCc9^=NYdqN?_+uN75V?8U)^c2IlD_woF?CdXJ z-t8AlobxXl8)G^+>ZDlh3Y|~TI~AG%{M;e{(D!21EvNG^8!ESDrC3ZBrU-T6KXyy?tQLR{Hk2&^$oT0Mi$!uBYx7il&IolMY@?w&fok)!}PHMyvpa^6)HnV;RXZQUz@k53r5ruAFyAn-SQSX z4519T$V7K-==%7*-O|LxNy;Bg#!{ue&P{wb54^|U4VpMmvhVg_xH^|dB`}a15=+it z*!8c1)G~z^PU(bag}~1KRbTYr45?{K$|J4Db#A_H1t%pnA=`y@dWXc9H?J<(7h>P! zo*Rz55=DyEh(^^t^yqu7uZ~Nn$P%C!EjTSRX>tH>FfV_mhVjs=-4&q<>71sWeRsL= z>RYfwV&lzU;lb9txLa!vd>w6OrbMoiy81roG0XoTC>=k!;WnYy<$}JC6-AHk{c!Q2 zbd3AZ9OiwBHZT*w>tfT3!T}~+iMUsQD*^ljOx$$myeKV-1G(~rxe;>lQf;b4z}1`A z#u*G8&j9kn84h=h?s!KlD znlwa|f+wV`y(NF&8jWD)C{M{Op7h!8;LMIo66Iw-Ocu3+)6&tYtXqkl_DWjxVPhQ_ z21z+0*mdryzWg)vE>9r)V_4#n@>nFLc1uk)e(Q#Jg}1ZPI;~|lO{%4oP>m+@e9aiL z+%d4J686j@bBb@2K0nDPA36!SH=0!}IW!1gyZ}EkjP$jWT)4s06XWK#JgcW_OF`cD z+R+i(4VQG;m~EXEQL#Q{on#nDftnOnsm!M=dZhZcbEJ^z6);V-Q81cmrva@4{T@>v zRByFWyF>M>C^mPD*a~e6&iqH2kL9)S3LoRl8%H z9klfm+mY$|X>L){gDw3oE3|A^Y`!AH^3hKe63@~~1k{km0#&^gnMGztUhWzkkJ?Xc`z_$t?y>>E`!cEiwRGd~X|@;z zwo7$~_^}DtpiyQsjSuPNYbEf--6`bHA;bR9FSE484M_DA<*mA+->>MD*(P~!XG2N> ztQ@FAPIPv1()K;xTJjaVnBmAMDJeNLHfAF_=~e8#ATe2p^*ufi0V*e#yq<5J$gjel z1Dvg#5OEIR>}q0&p`qCa<{I35;ry+jb8?7V5G%P~k9jLs3Ywcqp$<2zU%lz{F@~l? zUA;}NC)NXHC)LcfpO%DIC9ml@u13qkA`WgJm+Q#}Q2{afX6R;a>Ro;&1c?TMBo;2<7TjL>OX{)SJK@CLgI%uDb*ZC! zgT>@IhGL}jGU8fyU_dB<9UK@?$`Acgc7nur zUif7ivtNnK0QSd3%$K|YmtDGw*yVWf6t1}>nbJqutF%=Ee|g=TO=?1z!B%=Bs$)b< ze@^4spz250T>0+wO-t=Xfivg_eBlOH;%tdyAwCtNOd6^W2G^D7{@D{?K|z25(!)L+ z{veY;T3cB;#s|^5aS4&y5Gz}dG963IBi$1cV0h&7af+M4=Lc@vpTBHe(xcy#(&C*_ zokW)}=d%^pgY$->c}eEzSmp56?S3x`G5kfEatso^TC+1zJTWnG-OXA5>WO&d6+lSF zL~74lelnj(=jrL+2EF_V@_B-&No@f8Bl63qthd&=8Qxd;@#v@1QS_%qL&+C!^KV9)6m+!bMU_$eq>OFQ{!as+t=stg12c1FfE5oB&lQoFXboT@_mvO3Pk0nENb>KoswUaQ!$2LU z{(dh`Lm_meaakz>?y9kDQr zUe(EpFRy*+0*j{Gn7kJ_Msljk9Dq%(0tx6VLO>xO>^m_;!VWI%vNZx!&jhUscOK2`W|vHklrc$K8^F^@5$?Mx>lJ<8QU8ys!4YnsDctV1e>lO9)p zwJ^HB`ZYY^4TQ}U-<4>!%B?rATiZ6G{kN$8+iLf**MEOt`E}tt(40r37J!04b!@zdq=a@fz``m%?+6)NAgf4*4{(Y(U&YN24Jb}dK#zBuaF`=u+6YgzcObLgFrf9zW zqPn9-V!gRQ2zynAl4C6fz(S9JWJE8h$=d|btXdF=ogScmxB4&nZbT-J5USjP3P7f} zUGgV{1yDI21nr7FkjGw$b0Dq)bfg=AZo{RU#g`d#i+|hfGEkF3_SyM3Ll35y>3v81 z3~GG}=d{4+-($C{jG|Ivr>UEdi|xVLWrh&waTDbx zRL9h~FAx%_|6>eDhnXKAb|2du>|l4eS{N7@a?;aHnIswAhldS4I|-R+f}V_yVJ~a5 zoxQ)wdqSH4jI<5#l!jf$bztE%ux4vd%;3JET|TZh!dVYKM^BG7rRPB^n(-IXON*Hv zNab(Vh6h08-W0B1nvVP-d9fbj5nyeNUfx6I-yg=6B`{lHk>;vF-R|f{Vzi;~K2;06 z_RPWbee>1Jo{2f#xn-qWBYktlxi!U;T|*zdwP!*G(}%|T%=2qqyC(M1I@erMP{|dU z&@Rq|k(ON`)9rbHDZ@-2VJ1`0=)8LMO8u;07D5n{f3%#x3Y1_L)*T7nX+f-29#h@wqf9nyfFm}^1x7PsOjHDj|Uteo>hDgv}#=r2N#_SxDo z^V^|^22Z`Zd3g%Rcc%P`s_l2TUcbs`wzw2z+i+GwUv0P-Z5Mvyvb4edYjNHaJ<#Jx z3TNEDr}>Pm;PLM8gtYnK9I4CpsJfn1ev5cz6Lfd-{3N&80($I|ewDB5S7s>&##$6= z)Z7DK2Lwi!!(B(b`TY8uNS^AFlasHehVm8p?gsg;%NBtl-h%{_4X zQ1n6R>t*`(R&0~ADYil?@$2*Lg^c;|Y@=w@N7kgFS*~{ViY=$@L_=w>-SU93-R^vS z&FMhJu(3B|WBS=Zmfes+r_N#KY1K@a1W+-L0x}J}2fg7wCg(3PU8}fK`{Xo`xlW?K zS*BV5ILFz4mGLG~=diB~J>FjvMwyo1ifby(?#X#67vPNC(QW_uap8>TbhtTG#i4e* zz^BW;^GVt9#^5;#x4RF)I!>?rqjB?w2eI-h+Ifm?PZ0u)UKRzvlp0Wg^JoJU+)tPs zW9yD%OCoL3{7?+2TB$l=TXOIK6JFW0GT&NDyP6n42%D8A3qA7?s3&v6ac|^RZ4t zJp0D5Vj#V~JzpYP~Os+X`0ce~gdR zk+N7UM7f)xxtc{dw0}8PNR`)HR4YDm$fM}s8aF=6ClIRKCS9Hsf?9h-T)dI8p3iexJJz`(B(Igvz*haprSyJ7hG7o2P?f>c#^`M;UVizN&kOjV zP1aTsa_Cj?+2SBb-uC>pD%|08&`XgIUlBYbH%ZM7R9!{~trc?nBws|H$}|CnV3}lB zZ+HOJCrGTry*_J6YMQhb9NPre`9Qyb-_Nsm)*0MQev2And@U!?ETZ(f+{ax`kpG40 zuwUtom1{+MnVth?j?J@O_tJXn133({%1S9hq0K+2^Z6)*nooDd`PB;m{Y8hB+8yIAfI!i%>&R36Y$kaUQRl_FRIMq?C|=r;qB_ z=q`nay>;xkn^>xj`Yh$m)SC52kx+XWYESq{L;jyg~;LL}A`Z{fIENE(~xLcd6PzxUXU9d{XdUEkN- zF4DUorDKTiuAnIC^;5MU0B%Y{HmmX|Q7D**SchwUH~5n0uV;zQE>-plkxLwV+lJ6g zOdj?|Y#x0cTg6R=Px0W0{SpP$UazGlx`Ps=wf?!)KLkR+FIMijITWi~x1ySu=q6qMaOY=FN*uL2 zxmiKy)V}9Ig3V;cYd!FN?(+CknNvXX+yT-QY!^P6QMI_hCU4l4#fFzvzAP#X(xJY` z?d)sS=>Rgwwe36VjX~D>tSl+6jaeRvZH|=~Z}NY}NO1{-f;^mEFEWRS^=2CFFOb(} zSFW;(9&V17rX#=PueUoC$P3o=97q1(UU3&=4 zeCe1)n%$l-uE7JMjOloSDRaH-rh1NPXZrm~N8Z3>X#AT>OkxK#Xr(fzwsd&D z+xV`Tpn)aDDWnW|6NV^2pUA6js}|Wc_Gze2&^+8HJ~h1^6kD2YWfSKp<(k?lH9*y2 zT&wCL%01jw^$A9D%yBm1tRLo!zv zcR_^bzS%+i0Hr)=`t$N$T$xRasvqSE;sR1cfJxYunqg!tUxINGRWIc(YjE~qxJES} z&8I(sQA>N~prjs-i=?YIT>Q*enXqsq)Y%&9qtvSKCb2lDQ}Usa$_p=$o`Oo(^HYHh z>^c{)Z#g@j*Z`m-O5aigF;A-KBxzS+l=Gd^x7yYrr?P|5AC*|Soc9>7Fo=x&AnAh4 z?G7*v$P#B;I9UpEhQzEINcz36`=QT5tiih8lH!OPgFOW|2p^6aYdFqpXOHI<<$mR- zdoSr((uzy6dajo|pVv{QhV^qENH^17=C(^Ne+F=$fUHH#Lq%O# zmMW4hp|&gVXYpL`rEf^Cu_dOIuY=%gMI$qlF5Gw@==tgSk$DuJoB}W{cUeK0sPS}$hNmzqx>}{P>?=`R(1Ni1yJ^O zVx$&A-}7qKg8n_?NV?q*iP<*89NV0}zh>>3hvm+RdmQ9ua^Ra}+hgXmzwtMVGiD$g zS2MB~P`r%ox!+jKAJ8FBcOH@{$pA?oVhbjJ86-jQbj{6Ge+nG_F7WK}gLlNAiMFk9 zH%kgOSX%OQ1t(2D`Xg8g|ibL?)x6 z=XBP~NE~R=QVyzmeDg{R3+(((a$)99l9Q#5@40QR%}Uv*IQN~mH%`y-3V<>gL$4kH zIHl&7+^WgSN{_F}I@h2286*B>tWTb>4RFF8wbEOc0GO{w-}G#X+Rtt78S%&3F%D&K zFa19UR;o`dc>gHy9@Wr^!3cn%*(X4-lqwVTDTq0#c84+ohL!`3r4AZ`X+A^u;r^Kc zDwCe_-6#EKmMTD96dfEnZj-&&`%)q>sSvthW8{|-*EBuuyr)pLc}Uvi-RW|YF9C~p zk>G1jCCUv`wP?aT`Se#2?fW*v2hD<|p{%%-4!C*FQqOthR3E?gkIG!uHHnY>3p8_j z&mT=ZzBG63kFkV+pg(=@oV^E0##cW?`;o`WYp{WcQFpDc)2M;0t7FZ!(4da5YFR}l z?VZwNSA)XQ+Uh*^ENI^!#Rf9VK+a#?yfdCE?gcS<$I<)-txNY4#nq#ou&SQbmXZo7 z%3Is>G>X3>C68AT!npKp3g}u6F`_M_lOGm#Iz1`}5G6370Pya9-ks`%%mZ!szuTf+ zurcYc9&+KU@YtKjLvWw6p`%s*3fwpr5*c;r$|tsfk5B(T4_MTN#aq~*zgF#^7ZYpow4frS{KW7Q0%;(ZP&M|;Fr zJm_BNB18}_`e5iJN~C+fV(LAx8?zXqW3XiL8VC3d5%DXkmd?)7!$Yt3_E%Sr?%5aq zdcUDRq)O@k2rXNDn3f7c7oRuw>_l1~GR%ZQNt0?N@GT$6t z`R!38O&rfve=KaioRk9jLs*|**=;6HYRs?Mfowg;YFj|vF$JhZj zM?0^JZoRZ(yHYqY5h0N`3`*uS3YBD17_{)fFUM=(R_MD&j-4kJs$4Kkf#&RUVZCHP zlM&zt+2KlDG=r9SGf}sV3RxyFAhVh*ezzR!!sQ19+4mEn`alM3W)ZHuP9 z<3ZW;qeZ!cT1b23+&pDu1m*NQP$Vhv`Z$n->=bQOJo2P+hM|RR; zCXmXE(W8xhD?K$Ws)td4zZ-WB(6{|l?7dI^Spl$?cl6ho!nT)#0}GeZe!2Mkb_&O* zc9kTNN#X9LMxc+$Zc6 zv7s-H?iua-vhwe(HN2QVIv!;kbSX(`9o21A9np+NQQK}DCsi@72DWoy`1LK2sfc%b z9Z%&nIPb>F$_4lQ1w*@n*h#ArCUCGz|B%8#8(TEe;YA@W?fcS7=plZZ44~L&Ko!p( zJ~(C5)$gporD%hT_X^vPqO_}e7aEJD2ya9|eE@1n5*3OIH_}b&%)r-&MuyCJ`KYXy zE~4V+4LvPfYm!`2w4EIG%N+;rd3q*}^s(==6L?0EdcQevmu(p> z4IDo&Im5FBB?kLmcABHdO(!oXf&6J@`G$Ev(S#7y(v~$SSA}j8A(e{ndpHj1eBVlzD zm6@o029Lw=8IQ{qDl2D*%&Ww6Qc?yoT@*&oDmKV0MOKWJK0Q$u)r5ZcaXlQA18U#>m=DOzhx z{!e~`rIc8;()~w<_}$I?cl8~y&#<1Ei3{0v(nCQTPl};?(G&;F{1oyASPxjg!N zrWsRvuvV;`D5CS|5e!J|#u4*VvTBfJEZ+~Xtng6(s5g*@v$VBE=JAPM$vI%sFTtz& z?njm)ksb#abXj*^v3(o^jKkmwDpEuLg-H1ViP@Vc>c?Vn%Cw!F zMd^C<+CMh>%Ii6!YshgN*B7?Ay8^AVE8UQ^JZ;7OnF-a)#nZS~KvT6+E}#Pj_WOVW zF(ow_*ho8n-D(XTudd0?m}9sB&`e=ykshH48_M^^Tj$Fv!QyaPKu=Cr22su=o};zK zb7z$B?ySz5G~?K#)II(~F@ZzqQB|WTbEZP+-sXa*oHX#xo?oQ44dlYUzJC|K8d;Hy zea1w>TmC<)t}?8uZEMSBODNsl-6h?nhzJS@NH<7qx>FR87NpZ4q)R%byHmQmJHNTl zJ?DPs{_}a%z2;nN&Jpi;$2)v!#AvyagQrKyRNrcuw3*6TKJLz1%aylPH+(C%$d-3{ zC&Ni^N^5n<4pD^@wVW%;0e}*NCFpfgygOI_2Ykr| zGk>%9nXd(zdV70UIIKPw0lfucpl7PWW%n&yZArtO|8=~Fheurqyw*MqCr@{m1O2L5 ztNUR^&hU!;%0tiv;?W`_aj}3{G_5pd4wRfqfNEFYn<71%B<=8jK(%(xjK%ocmk-lC z1n(H+C4Q3{$GcUE$G>ulkK?_&^W=S#@YT=`5D^*y z5@OcE^I}&KO=tuvgU(x{%rM(hcI^t;03O{^NLh3=PSNx>U=j0wG*0U1)mKxmu$>hy zn%?;}p;xw^=GmXz^5Qt<=azLs$I~M)dHkudU=hoV)O@_&5yf*%?2jfMr>h;Q5p2mbRJ z#cKkg8lsiR81uoixtT!Z?*;ky{7mT8P6C!Mt4uss|8%!a3#_ zs@IM8xBCUa=6aH3=MJ6>ds#jj8uk5$4nb5a8Oh4LJ@&ycAl@SD3Exl%Chs>9hVD+C zyv60^$U|iU3z5>?M*_J$UgnFjGXOi9&Wo*wU<2Klq?i}}@oU&4 zvUj;Cq;-5xp19*~Th+eLD=jUp(#5N?{B{ekYJoz^#z#{Rhb-y*W~sO}(reIb2>fU> zh0led=T1pST?Jl}<+Gf$h@Ysp>XuobZUk(mO+Y7Ix)|uL9O~vJ&&b#T4yIgWugbU+ z5n)OAznUXNEDLwD5?BH!+&DfD9r7ooO2TOa^-E^I1w~v@E<_hp zbd1Y@*twhX*OQ`7%$5_`ZeUDj9@nIK9Vx)>N=U3mPP=cDVRR?rsKr=FF|+h=?hByrOWZy+v0|LFAS_8)x1UDzV QQzfofx4{%xY!{D7bvKl4HtKT2EfTbu*O}b()668-u={wu^CfJ-0sJ_8JiJN3VA+0XkhlC%kJWAI9`)f@-o|#IOD(evs`o0=d)|uMF?D(?@ zQF9OTzr%U|64aBEpnT3|FH_neP&^O2FkqEh!K!4wp}r$(Y-}bEO6!;pJx^rEy20<= zVO`wH{Uq#vOl-m7nBuhV`+I9sGKYI&?u=%LQ_4<8}GxW2>Cf^PIkw=vfAVE zp8I7LPnfcKll14seZXB-vh7h?&QFCqt$)JBe2A@24pfF~IUpZ8BIt)7KY8qzwZa!x4fCpyLvGXgep7Wt=t2QFH;U88bO16ozOsT zZf>9;lZC2gg>eUlm5t3QOBY_<&s-&hw6rfjRg@8u816JO{{St%pbxe(BxV4H_zR$y zeTerQ?Ss+R*y|PVc)@&>9YW1;ege1mhQF7W`*Fotre8S8{h_7A;l~jnwc=HkRBj2o zLwfD=$zG!MOL{6UP1G(hpi_5`7p|~74G!8uIm_a=@@w_mB_Ig zNNRh)(#KahwO|-Et$ZA6`P%2#vILjG_ISaZd7suAjI_5DNJ+wivm%bqNBBQlB+2yc z$45+@H;bd&h7SCVE<{N--HMDSQ?eM!W6f>25ZBP5G?c44O?+iNv96>0RJ|MdUNc0h6RV_2EsdeNu)Us`w~HI{=iIhkF|O$Yl> z7)uS#t+06GBQHwL@I5kAzzRQXL?^@24EG^@*>e+FXa3nw`t|!^wwgs976<|`o)3`n z{*AaqQTW61nacJWqQp)&g(m!;y^E!)Bhfj1QeH_*F7iB9bBT|AJpC)9aSs~7AgASI zdMjFkEeB|F1l^7o`2Sz20TAZ&!$%H|`CJ_zab?nig}g4Fyc-)pQF!{>c=>nrB(i#a ziAi=7ip19)=wdE*Ck|K&TlJ6*!@tTsiJS|8_0`DhbUN}1?CrQdm%ANFVGoV(Tz%~S zuy3zTxlX7*6)1}qgDlRgy`Psq!?MdnF#%z-*7%$U2id>y4m4a94s3;Dd5p$DB%+c9 z#RkFmDec&S5A%>}c3Yyew@oRDg;&$+!-H>*@d|XK4Zw+{BJz2GVzy5{pMKwcQ z3w{<;2z1@!QjT3FYW=9B{it8EkAqD5`GB=TTav1Rd+1q@_V_^MHGePW&cM40)K(wr zDVJ3pPRJBHzB!rDR7mOzuBIkZw33J?3eoZ^6%1)^E7+U z4=qK9Nc!(QMx$u$N!CxFcg$6kv^O;VY`^Z6DAk}MXv`X?(p^{DRd?Wr^1vG%9rw`z zKl#7ENVN@B>pI;%9pfLASb&s`3~f_#-;hvWyhcQg49~(IiruI#k4|6CoylPd7-`A)i zrN!7k{OqNTlXZ3*KGt0<2)88PB*OD+95_JQ4UQK2{~WD$R3LRVvF{jjD{*$$_0>C+ zfe7_m(T1xq+Zna};nZN)J^q*5zPL8ESakJ)8ulw^dNeat8tm)ctQDseC<1f|{N$40 z1wb19|LiAHMePSl`gHUWXB97%oZmFDkx_*adHp;_bqxF*F~*JPat$bLFizdA-02xr zB+X%(jNIQ$zQ3;%rfoB8A3xlK?Nk?bM}x@sH7oeiZ(;ra!!0nzQ?WamRk9WQ@wk-2 z`}`u~yF5xGPPS#qGVMHa02U`xtu?Wf)(d8KD|$JhxOhSgR++CpkHcL!vy0;&y&KWc zB4{WsT@r;oJHpdrPy!wbp5H^6tpD8@2k#k*o$yX3oT>*jz@oFX(vCSXg83531RS)+ zZz2yHB5gtotMSiQdioT1_A59TnI4z^u=MU{Bg9z!sQ6Pj*>k6r)%i_SeEiWIo(7@T zDLwuh%{Ng;j@uuUFv*G=YB2JE6vH0DU(--CbY$S5ctT+W+am$@Bp;;#2#K^Uon;y>VJ2&I7>c2MLPv0#=Rz9Ch=i~^X=y>h{ z#f!LV;qsjJ%oiydbQq4(ICZVP+|iMbCH?83m?^&-q%=M;w4LhERY#Mo9(7gB6+6*W z4Hq>1UHYPq_2gf@51={0t@opea&^>;!#7OP_PdT>$FnYvclG!5OhhEE?x#F)1#3fi zeDC|xqCU`lfTBQu;}EpaB(p(EbNnEWzEQnr3kc!i2~5dFAq1 zjwYCj3WbJ->J`5hgpS&<>$x;esY|x+`cKWizD$w&AJ-hS%Bzl!uzAmy>Z#dVYW1fD zm0NXWjh^|vJ!odW5-zC)_Y-5COQ|sxA(*?>&NHg5=kX8G+nBwV3Z>aF)4V?r%hQ@ zcxAI+5Y*afbh+3g_ks0IL6}b)Pb-2qYaNWR&~!}uQ=*E`4Wf2?M6%X;O|BksBve=$ z?3uP)^v(b5c>^$c=xBeRp_q~d1vXpBAa4F*OiL*e(bJ2qOF7~BqjF@EE@2@#Z}5}N z@H8aQf@~7+7P-P(PlIAe{WSl(`_-QU&i0Uraq&T;``w`SPHK!Pk?z4|`ayhX-EqzP zZ}$KG%90Rrnu8vpyrrzfwmFmCSNYvWK1O%B8`{rw_bLAfJzT9kepFQIZY6Nc8Co+Y z(Y2OZl>efUHQ`st&mJE^!+WKrSa(+AyPegKQE%Boc3#L$`OT;a*QbmL5EKTtk6GzX zW1)#GuqA#!(1qY^Kp@_=R2bj?IbwgGwn1A+jCoNoX*Or*6VXjOr4D_o5J!@j9*wj6 z%}Gz=!yhtB8y3?m=Vw|y%Ues#seya+b|*iuOQtq{8EtgOvKl)tPiM=xz;egJz2|sC zzb%IUQVbYiiZj?-!Rg&12>yBg4&o7ay0vt^L_a8k+MCGBsONRqrdefYxDQ=WSNzX1 za-SI-v9cN+^{%EKF=;dYara&k)~`5@l-B-(H9!sJC9qGc8H;jZ*f1og=dzGIR0(Y4 zY_rxJt8!sBd#EeMveOxN(3`*`@PeEpZy!f)Kl5KazQ@a6z#c;J(~@4mR0_Bk0wByGDY|%g{cbB~Je}JLaTo z%w)}EUSIfaZF(*9GXrnv37a-$s_<1f`t!r6%kjzve2I%@%q^yMGj&KTZIidd;zz=E zpum&5M+hy0`Ck7i`D0tF&VieyRtW_%8pDEzt+>XWSm)V4|48#K<3vf0q09(cY0Vtm zEZHhZ*o@AmOqy7!1vd*upDF&ak%Kb;N;fDD2{wne^64R=mdpBi?`FMBP5Lk%^HP}Ew(hWf zWxTrD{D_EF;lc~L8pTIK%dJyx}xS8Fs{T*mhK927>9f)3}{+-6lW zCuV{^QIhzmRpwgwi>`9RfNUI^3~Lag@Vz-);r^~Nj;|Ij13W;JHY!y_L`uQk>;}jp`KWSL$q@Gu9~t z^vpgnt7iR}G1*Tb=}MY{+vY)9R4(dfTy+4$%?qw27#p2z42c~H*E7M_p)0o#NEqLG zs@xdImtPoCmgyFFwvC&NwnJJ}z=Buu=J#}FM#24Dx8?4g@TL=!L!d2n(^BI7erv(f z4SqQH^2f{)2lo;u`_2p_%(A`1d&!mEey&qj&bFh6Y|P<;CrwJrD1ei+j-HoSLyw(zg8(oHyMU51PN?^x*nR zET3wY)=)>J7mpw3-0=ADS}BNfm0j02_&jko{OqKf($La*#CG9Ih&B0ja$sBLWAVwz z1gX)`4gSN;b|VDa5_Bci^WYb=nep{+cI+!N+#qHx-R-igwAYal>`&Dfem>MyL6WET zpMyK_2*so+Zhl%<-g{vV*)op*Mo}J2{@dA{5!-kCjSd!-fdKvxr_g(z@}Yo?QC6VNzL=*>{I)gE~|~RjrDfi*kjE4%ab0MuZz)6 zW2*9N-S{Y9g^VjGUQez*(%Rn+6dtaDmk}vhLibthHw%6i-kfo;Ddmi<+Oy4sS$dDV zOY=5y)1pG}!B!zk3d(D|9?ol*NMoI%JVL!SeilhoDNGq0W!_5m}p+!j^rdzerfhz@VgZ!q?lx>&2wcF0P73fhInBc(^63PHjI# zP~fB2uLRhaJ>lbqS!306ufzKs}20<$}?~fm#s`>k+nX3EQM*lZR1&`h6 zf);uj8s6L-R^vCy%9c2M&8-zUgKg5lJl^RYI;*CX#9+R+{G_bm)p2LKPR`45cduWE zSEjE=fMSM-j2_&eyJ8q8+M_a4!zAi+e4=^PP1-kh{J}LW#GZC0J3sV*Bph0k;>Y6> zPy0j~{+|E)a8Rvw(^NlrV!F1?ed*3WrB7;`TEcWESa4DM-rbG2Am#CVZD>=i3mHK+ zxj4VPtuPaPiO1NMrm9|2Os?(q!jo_-+J=id^5sl)u7qNeDeO3UM-z%_dj>$U9R!i#}e?$dWXNWzATLda(KTZca_* zio_f13t#Q&17Fi&W{skE!FPz?-5gE>cMZq!J%~wmc^gyJMK2u;4p zq&0=^OKNpbR;K=SH7Ux?4)321=6O$QPzgT$)|>ndq1jqel{&$uNjeu@tp}?+t-;u= z*Y`~6>&~|Ur7*-(rtLrygD*H69`L6Rj1tlR=RE)Q^g&P5g;&3_G#_cS`MFNnaIyto zhia%Jdgc(bNG~KgRz^m8H_CEp&l25+ur~{{CVY)`e#0rl{ggD;j5doG{rBNA%qS;FKhde88*6G0{-{8 z2#*B%g8YDL`5(7E&I4`H@e|^wrOG9bPDD^lMK)iJOMRi>@Xy7a^pl%WAE+h%-%$Ep zaMS5Pe`xxx`It|kwgcWhv!Lpxn#lY>Mp^5|g*0oRM? zlY73qnR4n+iBgY_*NqMpVUJAbZ)YOxbELIAxjj;#??S+>d!kNeCjb9OUlMYvNVRFK ze#Vj~nQ^WbThH-PsYKdJxDYwZ*#>Sr_<&sEEk?tSlL3Xe3_TQW9 zN3P!;IOMx|o7VJ;e`H;B9icF7Vey$|U_wB3LI+_=;i3iGf3Fz)exE`^< zNfqRK&^z3u(He(hBQE7l41{Rtza{92&kwspyv{`XrOqKr_pQMAfFarEe#dR~@N%g5 z8?}4sDKkGqEy`ExryonVV(XX{4O&o{;%o$EjQ{uTQK{rSR#F=C#xX0vhhA$E=RP&K z-wkZ1PoEYS_iQ^!xVss)(EL^5bGAECiB&1wm`El)WgL^;w#|Fr@Y#1!$z^9Txy?L+ z2sas~BN{jYPVwjyu%Q|babC{jA%^n<6_)|2Qt&G*K`CKaXPq9p-Y~H@~cO_IqDHe9G5&%JfWS z8+ZQV1jD|yzr}mYl9yTHS;ifB`(wVu9uNO>!~3A18?MN0>u2`3!fHkU#=E;(-}}46 zgBHw=G|#=M8(lH4g(M8IlfeWD-#g){S+iuDr2Dn=WZN2M`7olPn^a2p^(~iw;4L*! z>b#i~ThQ};+E>?c@9Z#WJ+6Ji=kRr}kGs}!X>U1QnTfjDPjg}#;s`U}`o+s7%Xq~R z`UR!H&a>U$#=C>5GwJ!$tM9IGHr~N)k<#eJUzQ=G1DlA;K=O!$^^}9Pz7tnjl)F8G zT>DC0*DH-_=tWe#|UD*e0BW;wrzE_cwPSo5L+O*E|Jx{=&it1yjy`^~} z3BhM*5{nK?Ys~KP{?f==pIzt5qQm9sE}zGzE^@ z{AQykiZ}q~0IxW(^qTf~HGPMLRbE!Y>y{OsrsrREP1)0Ft9=;rRuDqVd8 zUr0fmr48D{h`AltdMzw8tsaQoT`Y6E?#&SKm^`Zkvt~9~4#<)O?Tx6=i0D*a8US5X zz5NE=(PWR=iEThCiJ*-XB~W z6KCn0t+=237R3x!=wor*O5yZ?qWT5@iK35-*v4;4O$lErkd!e!z`>3OkN(LzdNKVA&EXufTKME~s=t zH4`JucaH~IkC)RqdrZ)j>A9G8tPWp^wgR=w$ zuV9x5k-VZ7Th5MWl{!)SPOSc5U?3gCi-f_HcGGxWg4&%@#pC(Y8|wY8xFW+Kau*9{ z&N8pC{r_>fpFn=GRjhXWx_3DLn6ARHUnu*8RRV;ercf+Ix7a|y_z}erT8SDix?%Hw zgSrETNLu>VdOdiL6GJ3Mt>eBL%k8kz>BP*@yn{-=_2gecvr`<1j?BB%4@K*U+)DK= ziMWkqQ@oD4GW9RP`DUWEYko-BYTrR#*A6?EEY-ds|4xq6Pw{5?Vkq>ZleI#V)(i2Y5z-+-O-feIw-Fvl<$548TFX~IYd+` zj?s9{kBiHCvY29-_)AgGIe-!YwV~tUaCsS7;zDW%kR4`|H9r~;c$O+9@paKB;G4l5 z{`GEt$$)R*()~?Fs7nt$h0kSYQtNObgGrCJ3g7vL!AQy0 z-ya_vgZ}bN{fS%iIJ)E3)xf|&3Rjz0HZoZ?QH`mA!jsLPvAqG7aFFKjAjl~Ve3|tr z_0t!1Brdbg6DA*w!y<`!vvM!F?NLV`Bcz!GucIMqon4U%J6Y75%z9Nw8vxDy!AR zYdxshohZ`x*8fsnb4BD-r*3NIxT4yvpPF16VMyV3>*oRXKB^=&;Vt{$I3rt z60??hKB@46iRbW>;H)nSZpJnXnUHuyTTcpMy2AHgO&_oh$F4rSv$`w_+E3KUu%1$l zD>ajL0}ijNe}Q@Ji|P~Evd@c8EUDs6|nmDGNjYJRo}9TaJ3XE^&Wpz-uUy zzQ>}sY!muGek4W6aoB9%7kJlY?|n~wFQ77S>+{w~dtGD86|EX*Pte1K=NY8-jVZ4+ zt?N(6)w#)7ocpp=|3JB{fo4OO8YA~RcRPq;AInsla+;{n-BEnw59Cy9FroApdhg8X zbI4R}82#_Yi#ARVdPL5*kW_lV@Ib%!=4<4xGoP=>+Obb~gH6MzBfx}H17Ar7@x&J< zQ@qzupDoq&kV?3uy#fh0lJ?fz@9pE9?-9>$k-fWsa(mj6jY1T4Dj4P<0+-USY+WZL zed&jMd~-SA`_g6a3$v=xT%Eh+Dz-FJuU3Emj|x@<{*+(b!0wULs=ONDIXk#$WfaGT zdH(scWTk)ow!>j-2xo%<0uHm*4qz%D0>OA@8=Qz{SuvX~gRLyKe1W%Na$&NqJRi(N z7tnBW9zwLOOXTX-#r8h|Hg>Z8lxh4!;9m?$$-aHwp%$b z?!H13TxyCW&8)X_<2@*aT%ejJ7W-*}9;8jLiIv0GFS$ z;lk)<7v>u(gCRsmo?aAM|2&;s>09+bS^xkXH~3}>1^~SHjdpFj=0|=3bREjuP>C1< z&~%jzz`&E{Zj2Ay6;2r`Q=y5UkYsrnmY9qq77@hV&~Xkd%*P(i)rN6nk6`gJ4-9wN z`t)?zV>GTV3o;^akv1Na?$@E*=+;2LoCHU@{SoHxNFC_1kG7p-6k5mM7xsBt&aUKp zu+Y3Y{d~D|qNk+JflNqj9#lUIX;rvO!n88B3u`(0nUK_wP)Au1!r09ifHs@I+x_*t zKJHX&aZ7^RdF{L|?j<)a4ilr_*Y>dea?6ou`&yuS6-T)={~zb!?}BUa4NDtspQo-} z{NyWUL74!(o?-AKwmfhj&64t)Sy4-N0P*>yB0qMYrdU)Pbjj%YLBFv(<=oIJ!mHj@ zpH;P*eHiowL$1KI#rH{@%GuY%$BBMQ{YQ%3CX>a6eb?R8WQTsdXZxl+iO6XsjZ=D_ zyRp`$&?iu4+032P3!v!zqu%G!MeA}7KMTSYrzK|WLtB2sWxtAvFV+muw;;deYrt@;( zSnV+(e~+_-f8E1v*%46O0DM9Rkm^sb!zlS)@(Nz7as%|-C5gLbiRem_YI94D-vnu4 zC~j^(CE48eM+T^8Q}SH2#f>D+Xw4Xre08-%0-`5_GM15I6%JCtnG~~jE$Ce$wnN|K zHl?1WC{F{4b-QWKNU?JVF_T9ARj5w4*h5Gx$<5b@V`&X;^U17Kqv4f`5mYw4IzjibNOBQ=RPtct zRRkDK+}>(asUYP2W9cc7s(%)RVX0y%OtL(%_eZ}jJNP`Xni_;k_2CQB75^EzELqn# z`OSTwIWCCX;i6dJI^p&45`D1i#1Dm-=!LdY?QYI^_V?@XnLBE6Acr%-31OmaFz;e` zkH3CI-s7az;11qWRuC5TZ|sJfRnF`nQL6INa$e*Qg2V0GkL}}xPr$agY-m3`HTr1~ z>ep_MOzCBpWWspwmi<|LzU-X*4<_~KD_4o@sR4$e_$w#i$1{;%%{YxH{iJ~BfXt7B zf92CHF5-Z%f9k}79E_KUt?GD0cJjPm#?~xIxzo}g;)Y2=) z(G}68IA#`IkfAZ5HydI?%rH-PurKVfdYIk@hOLNBG@;!9k?Y-D< zMrV_y)=vsMCQpz|Lp2B~%x?NipS}rS@oqlgvikXwTCL;@PIK725c1(kVeQ^?Bm6XT zsO*!vt^>D~PkC+~)IW~6Aa%=Fx(bw-Jax?nH^Lxyi}vfdBvaO1d5evF9Pl}q@@x3E z^iB`L*Z7kQj6*d4&*j)&*fH+#{AZ6kLvvhACtUr%;Ve8Q*nlF);^_rr)V+P=w)6#A zG)nV*P}Tbh^qwQEj>&D*#V}J(HW(|RB39dEONh5s528`%+z2p5d$3jxQRq}zn70RZ zireB87#yxa|7sINx+cZxgcQ0c$-x%5A!2=k0?49$OcOWcMywrF86}bA&VH*=Y*Vc* z#iDi;J!Fovk_p{&AJ`7r3t(OYuN6OVLIB(1jb3+;$n_@mS}EC=Z6@?!{a{x%0fuzw zmdIh8=PR1K(tYAIM-=N({Z{P{l2EZF9#uJxTwhNC}@!9gxLaG0+2b$M57Phv^eHu(kHZj%5edO+UjOsBprX( zy7E$@kcHM#MOp5;I!%5N_oI~)zTWwpHGwYAFdn)E(>EL})F0xI_?H_2KXv3z&;4Hi z1LGFbx~r=sn#`n3j+Me-_mZ{`j9p^K3W;_}itifu!Q?HW>%9`bnDD!@rir&?J^=f4 zih$=9Rqk>ByMA=&WMmkjBJ&}J%nA#>AQqA4+sothdr|kOMRg~D2WF)#>;}XWEuqet zum!a!qL!dbg}I^slJYAxmGSJxJw$G1dz=nbreHXNS}t7<@*h-Xsq1bulY;Hq-KVxA z(J!$z%c9yTEJUlLvwxNzP7ZgHYR!L_~uppN1@J;&h}b2V1OOr>rVUx=DF;_ADKp z3%&e+E;E7CbR42|a!4lv=o(%Hz&m(=Wg5aH zS4|y3T~}f$ah*ZU^a^v5E8R4-RblF=wJWZ>%BqMh+OO?NF(Y3$Ho>1jwr(uB+<^88pg5zDqw(!PwGKr z3L=IemDmtYb0{Nv>5#}bA|u2eR(Nc;V&epIr=nvunP_7LhP3A>rf%7bHXq#D*Y*k? z@|&5bmmT>%3+No5KI%JK2HosXCd}?Hrg0$uu$fjw8%NPb$!xqDD;j<+FH7J3#lt^- z5tzQ@erkHzLC~qi4d9N76`N;5)P*J4gwnWkAA^ff)Y13N)u)4KMCG43>Apqam~JzXoB*iL3(upQqMxDz{67jR~!z zHy_l_WMy(#bnl*dTXs2O`G@l<`m)}Od|yZyp3m`xC(bzSSaoj0ERAJ9B|3aIWGJ6s zZ?0x$X0ERZy00%HOWYksE=MbJC@443DHnk*CmalT>sZ!x#)%so-O+^uOxv0yG5>qK zA3{rA2PaF6N3!;JblV!#g2|TK!xfcfTSo%XZ+j3s4)7E|5Qs)=HUwP+QoW*ZtD!P_ zVf8hW5wF4}f8I6a0fh!iI+&Q^`_{Ho&k03ZGywr7*~$(aD|yGVVW404k?a|#49Y5M zBHOFp(?xg^it}_I^v)zav3m3NEVwF!E99KS(|gsflRD@}wh4_+ED}_>m1USwIr!a< zzkHGx2Ra)*L*$Qvl3*Xo%g(2-#bhU!nN!&ASCTYezo@(X3e_2S^^|<9POXe@?!12A zTY<@I<7?0`kE+l2Ia;LB89q)44zUh^xJgc6ZK&oPz`XYyCR*!XvN2u2Ly{4sP(B9` zAJZV5NmcE60EZW=PkL+rvziQaNU#=)0h||;o$e#N)|(j9 zTHMF~hs_0Kp_49uY>YdjsE5E*61)+(NOA&bMZ_6~n=B#;A1|Eo?ilJcWC}MbRJ)cy z^iVj+pQ`GU;`{HSdBz+Z7X%DU{l7OX0$83vomc{Zh;eWQ-z6~MEffSkKgxnI$Vo(Y zie<<^(q}(o-_ZtoZKl~0Zujr+V1Qi1dWuEDc5(5SQKohHZcq65WPu>&k*I}@mU61jx2b$AgsoS4OLF8a`W$b*S|@}7 zaJvaiv0T2|E{X(gW}><+wR5M1@YHm89n60dKcKk=_9LpU1>lF{8Y!-gA?D*W6`DZU zDp|!AUe|x%plWgpL+(C!d28@GR>N}()%($UEb>y9Jzx$W9V^~5__W)-SbJUBMd}HQ zi->t1d0qx`ClS=q0!?|u8}RPw!D99^UC-VcTB3%}vKH0h09|wqQ82=>x%V;%pw|_tMAf;QR&W0u)qPnta{Hf_CoB^!7D55{j$)gMe3vL5aNP4BP?psKKVQ zmnS^k!Ss?)(GV=P1O7ioq3px1cN+IlCRMb@dvLy>gbOI%IB(%0b%JA`;0NpLKX?E4vijAfu!>bCllhq0JV})&M)UmFBrH>T8~~xU+y~qJ|LZ+ z*eCL?v>;Ks58hZM^p!IXJ>`|u-XhY7(t%QtNlyR-Sc`&+p=D{HPhgi?yCtAG!phR! z!Qj^b8wi$}V}>nv#nijJ0weJ9Lji2`OWUi*e#O;VmFzKtavGWM-En%1fjqf52+oo# znL9gN)}&A*r+~@kYeqj}R?H-yWzLRosAH*O#RDBMGHW+rVBa zQ!vBRJR@K`(9$;K42+GD5c$T1u=M8+h+YK|`fDMhLG@5xw)Vl;4p+#AwLn?)IHnCN zFd>u5HjY0oZQ$@n^1uMn!$Y2H<&4iij2GHUP_%x?UAYadimvQyla3C4_5w(lvVAm1 z&m;$cE6VwB_aPtZ$+%nu1Njt!0+XAp4g0Oc#pci0u*Ml)rX+0fohA}GhiPD3dUo?XuKx05H4V}JwT8pgaiWKU*pknp zx(CcoyyIYr7mi|Oi$)<2ciKl|Y#swnK|kUpoyvW1@>P6MHXp^XNf+Z%-nBH+!SC5uShf2=6!d@;NG8TymQv^J{_}6 zPGGyD(NyO#5by<>|4J@%zW3+8*{JK!vtVyQWbp^O^_uN_j2VMpdjg|#Dk!O0PMJ37 z#NBZ(H#O+?lH6=6`#wi!L7awpEt6Vmtu@~CG_JJ7sGOzldoiMerd#ucCaPFsFcid# zi~aP6p&Zn>u>c;9_dU=76J|>+hQ8rp^4dz=EMlsDSM(uz!OMCCN5$wlf~9+di!}(> zl@qwA(RBp(L1^g{vTOtM)K1!55Jj2|B6E0#bBP6Yw`c1y!w}xcSb5m=LP^oTS?pQ_ zo2ZEvYW6wrM8Id=vsE~5J_^Y*WT<3_n3^m44MB!rT$N^NOFm}DYl2J7xH=k?ay+KT z&|Wxp*6)WAqeU*P+8x4Jx`-+W#7|ZZ+tKhWVP$>%%)*6;S-loU#oQ<#7^RskqqB8g zrs!V^t$vA%KCiWVSROuART#TiaKZSaHOjT$oTHqCbUU+BIZAeL4`}j{Lf$@2PB%zKJ!iy9owX1Q4IY1Bx?1 zggqf1T7plw^)S3K%viisxP9tp;?9?rJ`734wNQ)a$Fl(+8AO%T$5J0d+?;Pfl zw%>D8`&VuO3YfK#Hcuuo{2Aws0!ry2x7fRnD+q7#VkRan8PnX1wg$!tvl~yXA(M)( z^WLtdhuA8_qz1L~07UzV!9CvW17oEsHWZ)^UPYC&raN1d-S};0METO1k~960qWupLF-4QRy#VWegrf zG#`L^(hvDKe_?b(g7-v|Bb_7MRD8F9qOTY*5BxGO`lJG>tIKfvbzuDjktVNWhmZ9S z1>_dLpeB1AkyMm27E+Rh_Zx2RCFw-u$cRoz>RwOhxTCQuHi8A?PNsZAA|j0~cZg3M zcMdx!DdCw`UeC@#V9xssNy&xI3F-Bx9mtqa^x+`F>z|(~HSa-g6x_p6%ZB<0g+ApT zsM0f_Vxc7Ong9Cw>+ABmDt|A5k)WzCRy)^+9MUiJOT_c`lr(tjS|Z(~2#*)5_*C|> zD}^ebl%O3x#!gDK-Fq^P&`PH>^-~$eBKY|X?dUvc8s|s-MJCgb(=pRQ*5h3TlGaR5 zJkD2Xk2<{vs!=?NyinfFv=C_$sX>ROQDi!$iD)rLts<5w7%;Yk*P8-8lj;9ZUNj-U zPGxurIVBrPuJ|Nqp;+Y;!N{@4t7*q+$7Xa)2-F=~1?3ie0Urfn+FVp(Ln23eG&2s$ zyZ4=}DjOXh1W`%qKb>!Ryl=-4u!+2>SQ1;33Ii3a(Sgz+W={$unkmYH*D@YzELQxB19bPkN@)JiwtG@mwMH+-v&D5`#Ofkhd3SC&YaH9)?mYn zIt}Y2&qDWu({Bz0Zn-a4h#F`)mR7u`)%t1cQ+yk;!&iknRr^IcqV8w1Dx6Y(^biHO zIW{u^*RWCJPYMg4+lOxvnu z%_hscMejmz8tT!`U7SURI*Pf4WGa=!S$7~!Vs1w^BNS;*wEEmanT)K%`E`77a(O3= z!*i*7)1Hlb0-M66y?TbV8ly;Tsqg+Wt*Xno!L=$v=e(2GpPS}1usk^3>mZSv(cK^M z5DS^QqnTSM;w0c623v}&<2~=VBXyl0YRBvr^H05PNz6P9=2ONQM z%nY!hM9sx^It92`qO8tce0%_QP*QdKC!LB z{auQqnx)?E)FjJefx+$8OuJ|hcHVU|4U%V+hJ>74(}-veqSV-JSjPviZ+p$fW48Er zQ47yRR~}GvhMKkp4Ye|C_eL1)*v${UiMo&U-Z8eUMmV2?=fkbI2+`YI&obB{!6T#I zX3IZi%FEC&o+F+T?PDQ*Ai7=sKla`-s>&^D*cRBrMskC6Z5oko=?-aw2I)|c?%dLy z5-K4|D$)qjjUpi+Esb<{ziaC`$8({+c*^;CXm#;1}H%L;A<%6=eOf9Z8a)(Ftghhu@18F6C94{3MNE(^wD?pCOvwvL?P&>E}U-G*p>Zp;3|eBFnlm@W|A8AZ1DE z4g_}UEK9t;i@Xd}^(ws^R2A#7djmsD#b-N^M#Zx!q)EP`s*{?DN~ganLHw+Yr&PYq zKw@PM(Rr^KB*$>5-fThBgyGfOVsV#-SP`N!v|uio9r29Cum|Xb+6CA5u)g?EkxB6N z>1ixC#23#O*G*Ue%i@_v$Z~MpV6w)r-f$QNQ_}T$)VcP}A-p3zDp&~PEXAvP z^yWkoH<9bB>Raj^!K1GhUJ6S$l+c_QkmFZXbF4pDg}O1FFl@bTkMxqM1DCZXWmu)! zE1d=YZ!c>4d^yrPFFG%je=slbIX>-jOv>G`!c?3of~;z>y^)g6x3RlL7Y%Jp2|0|g zz^1ky(p=N+RKrlCSLy6IB8=$GK#xO*Z4r|Tkn;$m?8>0^%)ID*)(l)T2oxS1wr&!# zq4Kwp^GdPDy4mdkY1PX&xzU${cGk1sFi04nP4mu7_Xjx0g(9*LEMYqVucfkho2sSQ zTG60^*Xf_Bh1WT-DUW@Lm1D40WmCpTx#+Akb1=q+0gUF&Sg|P14}`@$QAEO00@Jel z@F*GyaWWVwx69*@Rs5zb8SHr~&9Kv+3#pnNL5rxJS1IW3avb4=>im%Tx(6h!7-qp| zcqljKAu?!a>GND%PTq*-;BV1VEh3$!Z4PWtFLc9lpYk{>{8;j1!I_MOVht%kswnYC zVC7u0ToGjE+agB-2NiWx*@n&extC^q&9R?)#ljE@wJnjN{nT)5a)y3t)FJj&Iy;7p zxQa1s=$>ToS(sP!5hFVP#lwO;feV&j=}ID)Tp9}7SwFJ+Ea=|z^(SvrDD$qYl}sh8h;*Pee{4{l+ z;g=JB+rvPDsB48zU^E9G61{}0uMhg0r5Nk?Q_~lkT$x4Av$v0;dtW<4>|D>rGsCV< z9w*B=DX#1TSsRiy#+rAAHsf9Qujgvy3lc`Wc2#ORc4&;xa82d|ba!IftyP?MmL6(+uBGdZa8~ zZ3Gcs#hxvHUZ&#ax+Wcy@6@BWA3C^WP9Ip!C0lK|+ZLrHPE1UxKVIU@ zHtoo^mXn1O1jFg$g2X_%u3e8Vk1C6dG!dYPM={gPc*1ppAq=oxn$d zpJgD8Sz!Ua3%$R<>)l_G)OX;kpx@~v0pXgH(r6ltJf~gdP7Cgd zxfT}J(ME(a0rq>Z#GCC0^tkJ&LD^e=N3}L{BqC6Xpa7fz_FWKQ!IvZFuRa~a0(~;j zNr77%xF)|nGoDuQE+s&F3G$2cUXyKT`+dYv|z zN9Np=hG&)9(}6lH=`}LSeJ{^rK!w;2LpV`Aec-s!&0#N=I1)(=_LMCh42Esg`IXXunYFK`Yvn zf4s(pf1#^}kLzd$cvdPLZ@d6FIaLw24t@>BV7zQ zw_9+jxH-yP$`+&9ak!(eQxT@as2+Qxp;?iu3A2$C3%gp9g$1GrJQgkVdxEI2sb1mg zw$kXrLh~U%7Ik2{!Y;W@#U;A@3Uix{Kd6g2S}^*yDN*NcZ)K$$Tj$`h8$(6j8wNWM zQ;j4n!i7ZK4|V4v2^g_I98g`lzV4b(Iy@@lBhYqU#pW#{jF9po_7)JWJZzUtpKbU; zr?;X@Dxn*{#JcKT0ByRnKrvre?}{z+LRSTwybZePj{OK*#3KoPlNsb@x{#ot zvwK)@ZJVo$*SV3YXk_jf%d)-UG~NCjP_-|BjUUcU3liCC>oz4WR@e)%2Pg;f? z{78MYy>6TkpA(-0%J%WCA+52QsXjf#`1V(pAf|C5zNUwLLgvbC!`?SpT)w6febBk_{cvGu(W!L7E;VA4~+xy~5LnHlef)&_VS282NN zhNwq%jA%`_>z=pKm(HC9nptRVScMZ@O^1FCp0GnUfr1EkDd$RvE&lG_!5hZE&kK#% zCoy0i>0Tu}B}r`}rHI;rxM?e(?X)E98~2K2Gfd)}z)H3U=G%p$%9;dPnda+uFC(_P zFcRzA4-Sz=y4$|b6tr2{5+`M=<~Ycm#5P8Gs2kfNhLkraP~@*P4jxT^Yjm# z&+MR6#8^!#i9%LMk1%ktJb>(*S)1_^w)gyyE@L~w zUzTvN8qRa7ktrFhgL(t1Jo?&?4$&4>;UT-zK*YYZ>BpyQT987aV#G1B$(sMdYrwaT zeV#^Sj2?g+AfMFHm?L><9b|31a%`Oht{~*GF z?Ib5Kd+(MQu^T1U-o54`u@QOUx?vJ0@fCdMy!hC>_2rw#JsM)DLomzWl_;_RGZr%! z4Yx3B&qJZ5I4{|(&F#62*>tb(4-wu`B(9|K5njoIIUnxXAHOu~lGvIAWnqbz_QYI^ z#1Oh7ZLScRL;mJPYL4~9=J)0{GhP#gS2>*^Y@Uiy@`qVRny?=T=wj}}-Q-^tca241 zQVt&@!9WwkU}7STo11MmelCzPzcN88`qN@>QgFZVWa`V(8Hg<&l0dOFIkh@%A7+xV zQ7^-h7YT?~tZlYJ-^@WAhOwiU!0;bB!Ewej@1bCxA+~JXJ!s#>556aS%(hSt$); zw`Ff34YcquAbF=-&5=C&ts{Ai4QM1{&E8^4crovp44Uw)^-%qKu7ss1`3I;d=@ z1b9}>lD=%>FD8(@Df9j|UXsO!yv4@F#_+&n7L1ORMZ{h>bLb>=>gUye(n@z;DG4)lYN_+Lv)2g~jnfG7B zAki6um_s=_9XP$VH(x#*U>WqBGyQVJM~?kebHL_RTJ!0W|K-v`yez!}vm8dx7U2zh z5^_p%Zs8+Jq0A1dgN)wWwU*_tB2X}*ahH-JEcjCSrrH$5NdvyJSoSDlm?3<=kq&(3 zz4keS=}yn%I^Jbk8tjNJl9OOel%1$LGbq>cl8&X8brVbqUzSS)S~71CW5M+H9hyAq z$=Ah}aqllEKi{9^-EZUKeGq%C10|i8SF1X1-mQ;E#Zsn#c_?$B=^_9nJoRe^3u*t? zfSoz<)rbJ@rg{Z&F7Y(iR(xi^O}kaL5G-EzFwd{Oj+94t&{>bTJ9nv$Fzgh(QCDd3 zk@c-?8)&%vNNqJjK@b-o3R9Gt#Kr!QJ&)pILu<*;%d8J{F1%e|I|MdFy)BZ-7ZyEp z4S!~2UFF!fV?8??2lsCKl&F(SqhX^ub;}CQBJsruTWKn}{;h}Ydm)#JdtW9Xy*=6L z3TIyH5CPe|KFbwGo4FNddv5NGqY?`nOa0fPR~61V&$RTHQZ9S>w_B(eA5sgp7-w*C ziWQ&pRuOvdmN8@qkc$NEV9n!Dm$VN^*}m7q^Z3TiA=72bX=*fj-!`Pr9H$CC&z$XS1ff^EyasgiE|n938z?cAgT`tt*4jmFB~77 zYYXeu@sGkYaky=QZ20#4Zii{IQJEBpO5=G~^*fr4&cixpQgFkV7qa>Xo?xfSQyFK>JuqH-HGDR9hvBX7Gfo*Fzu^^KmUd-uWc++dtD+uDgq8@7%Oi`}yR zD$CtiyA9rK42x(eTA#sX5@9wInnaMOj4P&b6VJA#Kuk_5>9t7=m-QrFn;D%pddq7y z%;g%-qcaE0P7IzJCtXbqOt*DQQhy_vkLF{(Y04EMdUj94UgvHIZRAdX_qkxhPILt` z<`Jli?({82BX)wP%!!&yoa?4dXzFKr2Y+)k9-5_E2&+z$JV6GB$097YIik`tzvAt7fKpC zXBZ+#vts&)KABr!(P&ou9^0C=l9!J?1JW3}E*IFL=SR+;tY_r%O|A#W{%PE@isN1n z6?QZ=4u+AYsMZU4dcitAMIZGngvFk0otgCm{Dk9}X8!bRy!yJ5bWbgB<2zYzTZdhN z;)MXx>X8Z;qGkG~3$HMFfG>#Si0e`T)m{Xm-MAYK$HJyn@6ub@-`S_eM0yhHW{a&f zHEM-98@E-XB}|o^J?mGtefMEt5SsfqUg33QQpM$W(c?W zhH7J>L#PB@vn%|Zx1N*N4YB*>op+-haE~x!$H+u7jEA6s7rFv`7GzX{EelE;&$=*EQ>vu=jHF`TBdhHg)kv`r2ZWeP z;}`Dz3#jg>B^z(6)|;*N3`AR+iWI{|z*qu)x1^8M#^efLVx{T2J~E*$72)9v5`%{F-NYetn zk(7bH7{r!j-KXR3sIH0{&!O>TYa8P{zsG$y12a$EBqRDN0!}8aJ#mvHM%QQzE_hp+ zKc5+w?X7k7Ra7&iLS!$x0K1<$dXJZRO`AtxZK0b&-hx zHt$pVZ2CmZ zeLY)IN}eX1JX*OKPI#uBPBirA&&R)?h$7>yKN95Ymqv9&#vIaI?a&O$NAaAN-^VLQQvhL;0xmWJF`=%Hef|FuGPKu3^5fP~HFhe(s zc7BB^%+%$p%Tr3_(}ieVA%jAtNatlfC5-q8Nd+l-`6V^_S7@F;z0ue2TrGsw5i%Qr z6V@xdcasGv84AqFnNzKm1Ej5SAyhlpLR_pNF^pRa&&{|E?#AXM=E3srGpp`))wpOF zFiX?5=o4>vwFIA*Qo*p%4bH~ncu+tsJ%*V1_` z!aJE3)qSl(YAS4<(RUNjWErFIH&q25OB*i7wYkR~>si~b$ zQ@3PR@JO_ZY98$kM2ccQ)JxTuk!G?SGIutVC;l8Aedty)$&zps;vQ?VBTa&q@<`{U z25F>6B5l=9ngCs2_0O|#p9G8n&ic+8PWw(Z2lym3$spo0DQ)kH;~QFWm)^FR8xyq`t}n?*2|K`R%Meg$3j62s07# zE(}x5#H#(~QS61##!~&2=@sXdv(F^iHw4fx*yyO-o_N9=>x2oH^JW9{a1(2`C9zE= z0|f8v(0!^Pvb<^J$;K{cJQo~|xYkLGZ*aegVmu;mypcC|&TB7GrS$t}k!M6B&!_^~ zgS)<@V#2s5Bo;k8Ib>PPzGETEIzs5F=h|b;RIbyYF7}x-9#W{YTi7bp(C^b3@StZ; z0qtyGpzYyvu^lR*;%NL%bE#wne>{K5E_nBJ|ATw|?dX^I8`Vs8)A)V(c%{6zwkS#c z=c=2k6U<8Qlg(@N)nw+|uX%S-?l?%8?wJPCMbPS)De(Hyaje=^B|3j<0Jlc$gvdqP z{hHf!CMvAuT~R=)v`pv`wD{mUxs5Eh(Ha(CHdL|h3!3tPM-gY-6{qit@*1VIcpB}= z;m5}M-Xj+l7xcPuiZHC%6^W}o34O8P-k^|I+WH8yl`M}+Vipo|Q_*$k0)+`yU&%ng z&I7;b^BCA6a7BJN(IEFC_l&~F#z zM6)Yo`dH7x+NU9hMDjPK-bQ>&aqD-e+s3u@Y6-V<)}QE(4MiR-DnIgD_2J0^0HgXICDc$=?3iUPX;pGYsdMHms8lmzx-VDcamyT1jdA zxuIor-PS!YMf@O0$t8$S>!*419x~2QnmloR5ha8x_uK<^jH?;$NcqlL5kp+pHW21r ztC{QZkQRG~EaqHm^Pzk_o%mc2VxE+S?vPd|zLOH;;MEy?;_VRaDyqdp>U?z}Nrw%{ zDpPlY?(8=5jA+A%x8%eLUnNisZK`i&;Cx3(Iz6)@FUAbN=0r7G03n5`ukde+xyIC$ znTCBfBGpvzl&Gjycch#ZMF#T=AU;mb+GWne2y{46gyTNEx^5mo0^abD47qEq3EJ)$$=Jpk8hu<{+`9$pyb)tYhn(iQ1Ze1HeSZbAEwe*N z+vqi3fw%;l@7J?&GsLj_VUhSSk3Q6!2B~m4(q?5!b-3s={1^CwI-c?M2q9v7c<BQ~?rfic5*RLDD5UYFVIzG) z<>$%49KFmqt7xd k-VDA=&b@A7QTL4;9?7_>z$ld_lLA`)?-d!GrZO$j3~XAHDq z*v@{+#fbR=Wv)&cn7vvrt?DYHkBKqZ4dYDxdDUqmjXI4R$1h`ziEmh3bU(Uuikzb9 z!8nydWyhENT8)ekZ$Kjzb|HosY^_`a#P&MAH%SeX0ay464kx*RW-A8lkPLWGtpJr> z!=_%Bwt6?(vr%N&g{2G`#Q55`r`#gZ@%zPBr^TOHR%}LoJRE6FAWX(7!G7MX!HDXu zK7c;+Sw~o-PKjE%#CdEvp2Rd=EER<* zS>Z*o<8dZGDXbYbI7y|&bP)vbk4+|9P?`DK(c17~=vtXe1sZoPvmDo67`>d`{$2{DK*frk0aNLAN|ix z{T{J25PHgcL*kzY{?#mS4t4_#tFK4*xcDCf@>lzMK&a>o&Ex+yUcX=c5j1RVgTHC* z?@Z$Vw$B=%7>1)-@P3PQb;#+_77Y##PAT9VdVQ(#+^~QkbEk(M0)h1Rz(`&oQ;{>v zc=CQfByBul_c0n&wdMzrgnGM0G>jS|5P&f9mK6t-D|%_ z3IqfrlM_HJqhPM;OJY!e{(U>!i##KhERYfnqFf09KR*WW=n6;@w+H^2b;%1@{_>{) zzl+lxM&5(a&y+{RsMt?E4ps*9EIIBhwdYv!-)FFVdmS}8I-01_J_MVLK!L{B1(`9# z?Xf*GYL)40db~aR?PKwtB>Tw=!O z^dRUOHD8!^9V=O{(0mjC_G|uv1R}$DF)b%~(J>!HUL&MH20{X+W~r&%IVfIIprxgv z{jV`gL?+6W)@;NpP?L=qIIB_uE*=q$hHFA>-T@uzI{O|n+j@Phd>+6`iqdXRgZRLC zaJ}w~jF^f5l>vB>$QoWxUV4InCXkdp*Nj0EW)%;d5rxh7kA+%o7dhf~!fC=*$ z(>%h+h1HB_TY?KjKaQGWiR}x=aHb=y=#QE)nP1@}LvfhRcKH6Rbi`wV{8XKgonvIU zCNik*SGe$xEkE}tQts>*BTvT(teKh;(m=*OD=6y_Pb&D-pv2LmC9oOxa|s3y`5@EQh0te_Nz!Zr^ee${2+Q-YiF%y9*K z(z|_soxG5HC*KT}h_Kt3&$>VB7|ESP;!X7Kbx>1_tJTLmQOEl%tZZr7`-<%2l-HBO zHy~!%ug7p~Hk2kK<70^BVUp|x`7R6#hpgAc zwoN~dKYmBb|M)@sQRW(grJmtm!ywG0p;;Og{beVjX0`C$9H{Gl*8qfM+WZ{vNfpr! zB+chA{KUuJJz@POT9`zMQz9})&*M4m_}q!d=}KN+bjuT*?&WW9=0S`vKuT8A+mWi) z-2dshccs^DU$hiz5ooK}m%ELIj-7w7K5Tx8pH>hGvb8Oc+2^Go;O5rMu(?v&tv~HS zisCmAR@UVBJLpG%SsJU%S5fBlP7CFYF`IN;FnI$NfWIO$h zEmDZ0%oaQ#zq3K(`#41*vj(-ekH_vaX@-NTm49I|h8elCbX>lb@R@#}3qw3jtmB}( zdYmZPx*L|u59?kMlxvL$yL|3D>i+TsFz^(!&M@~kE*St0=RXn?C_!6C#c9$yo6OWb z2N?pfUuqD7$~ir#^FAyh)z{yQ&9~G+eV=wh?6pokxOWKyayit&v*aHsfYfmsYY_R3 zNzPN87>~uH=u+#)W_-j`Qh=Z-XY4u~eSA8U>#_ObA@^)G%C}LCq1O^O&tw~iZa#_V zLnaO#;peaNe4Pp$yZv{b09dyyj3uYhVeNzD%8k3_kWWcXT~ucs=Zyj#nVbehA{jjJ z5c{>C7KS&fG2{j8@7@>nUMwUn)6FF1<1x*P#R+Tl@qNhVW2s7;K{PQP#mX`McxW?$ zM)Z@tZG~s%@|#Gt+B8q&4W!UcFXLkVXGpR-35{v8h_GHHboM1qKYHkKCA7P~6Wox2 zWl&jtON;Gs1VRSO(e%L)PGRQx?CQZnOD4lM6UzA8hs6q_jyo@1EoTRxn9dHqn-c9( zw`uI=7Uyf{f!82E6(92f7O4`UFr9A4;(f4r4zR4Ht9 zHt|AeStQVOe-rqJmz(7p8kEiU_N_Rdgpv4{3s-qw1&kgHqGkJ+ayNnr&G$#e%CL^Q zb>;r>d?!<@!|%#nBT6Ly(f&iOcUR9gWpJ;v`i zniFWYPkqDUJ6mjFt|2sU(C-`m9*un%S|dNp)TLZ-Sz&T$xN=q`X4F*Cqq?JU+S0uh zv^fNpRtEu1Qh$3;^oLqt3b+cI%>PTHDngP~^zW}@4B>AbufmT?Ru)~KEv7`bvwl={ zU!yTQWRty*H0kLvRfMf1v2P!;zq~Lu<2%lZrq=BcJIKD-?e+Mxm*Jlg>VWbQP09LV z$YN71iCge%@e%d)W}CL|Hw4QITq=gr6NTD8Bgp4MVA8D9@IJK(`yQf=MxPJR! z)r$bdJ1^tG3!}(?uldzr$ywu31?E<-TkLzc5Nd?W?^gS5+%j~;P_-sjO9d_dBX$0^ zFc9QO%9`1AQ@6jB=-(#d@82jy=2CgBtLmb@e_~wxHw)mOw*UPaq#Wx&Ca35iQhy;$ z|JQFIR*`Fr+WY>$biuzqmCp@K4t_1TrNV#Z!Qb{OpyPKJc1|VzV_*Ey`rs{(qks^I zCJGyi|Ia`F-KBhLU{(JAFa-arQ~$5q|8KVcHo1{2@Bc0Ge@mo)w%`A!z3mrxe-qG< z_P3@b03Nxa*^vwZ@ghWk0$3d{_@89Ie*Id|uxf-AA%N*%|K6actY=>IU(yG_0gwkY zs+7%{=0Gz5Q``B<+c&iHFx3_FK}HiG0mjSz94oid7I(a#B#A>f3h0Y-fHMRX(ku_p zlYedOAL>Bhosqfg-vAXP9oIqr<_<8}+xJ%nYuTyjlO@&ZOMtnHgo+Q=mpjb1WVm@6 zff5L+#vt7Wt1g)a*v>ljUaoobJF@>4xI?@^1POD9q4Qze;(ztqe?!v_5~NlVz6x`w zmmA$dl?la-My3%VX+^1`o=#t1@GF~SIUTDOgkXYiGm9S-sJA1*XGoy@SCI0@uKQt@ z?Ir)ezu|HRacM~X2BwwN1UP{i=mNl3c}19F;G{(9(l3QXnHe`Bfp~h%O@99C`XMaa z$MdnB;2c5%G7gogt%@=iISH0eAn4enac%RQKC@Um@v%M(s$C9^qu|=U%zonr1`hd6 zQ2bSe(4~lK{^*}!18IBU1dEbW^Ic27T^po8A0HI^Q-NY;-T-S+jbZRS1&;WFPs(el zGJdob&YTgJo16QE;V~;gJ{qc7XG}E6eQaI{0cf~kNR$vV zQ)=_>7mt5rzhn>6P)f@lEr}}eAG?+JD#3_?IPni(7@YyT(N6wwPaUSX#W0aqJWFhKb6j937$uXO|S41nqR z>*T+RG&reKJp``T=ZWa zmEW!Vln~&Z?8>M*4}2D^YBOJM7e|2uTi#}H**yns14p?@u!4RQ1phmYtg>LNq_b4P z-T5*#s&WcPbbBO;yZXYz2v>lv`_|vDku#+F-|8!Il3PfxQEm4$2o?Ol%^wRujcB2^ z#{SR#{#Ix8FTvDrarhS-{dZXZdQ}#(XaOd+1afx%+f?Kv?>|L4!)nj#z5ef0Pk?%% zEPkd59+iw`><05^K&RtKA$kL99gki~P6%e*U& zRMf*^e`7*WEGJ;@vE4Q=!Cbk2a0}81?rVt}D2?yjH z=#e0%HUR!30n}HeY+d5D7xa7o^4I+y*9XtRus+;*Sq%=bw|=PvvBOb%T#55-$!c;T z2jj09Vzs(#6nC7=DS@Mf+kUFf1El*VW`)EBmxSoJ0T@7s_}Mxk(klb>$2(oNwdqEG zcyhW!3#Jl-H%JCf#Gq)I0M!_&fM45r_bxp(s*x3vIyMjTJyccFh50cppPL#B|Iaz? z7XV{cMdld<+O-71FGTtj7A`8yKPTvvTdJ;C466OY90OY8;6V3vEaEnhO+xLF8ci)G zjNh#D__GMLDZm`t2;*&)0kjl@NtB0922xez93#~w{Ib-nvjdO~hyZ`nTNGqsa$9^! zVu+yaqVm~pUI|v9XrWZ*`IS5LIR4tkpzqO-kyrepX1aGTK?)Z`b0&>7J+n$`T%Gkx zy!}9k9=zn!@}?GtLG1yGM6nU&w-P$jv2}hqi8?om#fJ7S^O+9c>??V8*%|HM{Y2bA zVgul|NKay+%r&Ve=f^vxNO?Y}El}?s2)jM~@y7^83E~=Li zw^xR(H8G0ul}C6f-gwo-Q;KzjfZce-O%i1>-6|zY;2c$(rmwTG7hr+Ef_+4~J0yz; zn$8ZDAD!NNp$Ly<*1vdy}NRaCn0Yc12CttL0c0aDff5P(UHZfm&x4U55+Tie8 z19mSr)%PrIre352v+}26vrzeV!y^93ha4e?Z{}SzzoZvh++S&;NZ1xiO*Bo9!jOPWmvdjgrR{PX<0*XmFlS zCuF&O2Wq41A#;-+N0e(@ytOM`lnMD-wZcYeQJqyiX2wgS-<- z99TQQyc+e!TdpqTGd#QB+g$Z3(e}<#KqA3N|L~>y+u|Zz3a?2lAA4J@9 zt$JRheHUB%Q1j$6qY z;3>uxAIOXJ7ep3>qW5+Dm zVJg7lQfch|fl&w=u-gOmLt|bT2lZLYkejdPj;TB~<%%r;s z$5GX5xz`;Q00lo45-1mRl@exlQV`iJLQJmIR?OkzM-mc=j4@DIZV0baJgv`clq7`S zp3GFw&#$3RB!s>QP%QkUuT3%2A`8c!dkKAUNT+=}OHCh?=wmSys8QvyW6Ie(TYWr> z=WmTPx;7$if7tf?`b^l-A|Lr#Nsy2q-F?Jxho+UN0b{FXDZ_zgMGOX2hSxqySlq|F zniz4uS4Q;cwzjU0gV%lJc*P)tgR>3*gYB$e$-rE+ldR+Y z^Xe{^AUQfO3v=`1w--Xq_=C_)28c5#O@HYO5kimiiFx;I(jv?z$oXE^N}%&PsOMA$ z@<&HRMpBjblJ%eNw2Xm5KQpa&U@H%Pjb<|D_C=UXm7~=9QaKPU1v?5}?5L^)%YxmD z47GH1@Z`-`7I)NC?!&+oBWGC$j(<7AO01VF@T->;nD|CYsSLBpP_rNdwU+`tBN6wX z)tN5v&<{a7$vnFO4|i5Vfk6h2)y6ex9cEnT4(cI!eI%bF?d5TL84soS7WItFeYu~O z#wna)15gxpaVt$)Lrym41zIcRH+gzOR^nG^z;{U*n~vu3{I=1&fuOE;7O=MDa=g2( z=P#GV2pQN*U@M;(d#00%)%TSu-}{)|B;NwrJFrGW0@})AX5SZq*1Djg>_)`L(KKTV zjdu)e$U5aiyjlB zz?RKXgP^ml?}~~l)g>;5LN!AK!rRWl2_!t4Mq&!wI$&|y0_>U}4vqL^ZLf}BcQSk4 z9$3e;sk17rHCp%Y&j**lA&HBaXXerf*R|mj4AL+c~y!eP8z1 zY6XLv3I-P!{X<;B^V#@&Sdc~qJ0 zIbWmDpY&L}FM3kBTm56^v6pnMg&188!OemAe!>_(CW;&zy{!$nl@bq1Jd(Ly#Y>(` zLI+2s!fcCd~} zVz}EX`XsIAhXc^`;@=T#ahYE}Ie`i8+q z;<_ewJWeyV`*l=`r{(ZRWZfk_;BIG%qw(A+6EAwwN~#$V(jBeK!9Gn}<_NZaf1D}bEV*z$V%2Cou<3AaCHz6+bS#1;<+h^wv=eCmmXQ_v)?}|^! z*wf_7OYuXYA5GhDY-yNf2N?fU9e0>%LgB2^w9lttukaHi`6Wo`C0TxggZftbC!f4q zOQ!EPUVr$Wp_1~3t=uZXVxiXj>cSA3OXpQPjQijTa)ZE8po(nD0qO5KA|&YuMnAc} z+Y!=krtP4wfSd1F7s5SutUth`g5TBFxbCO@+J~$tP8=~*BEx+gqW+iXI(E6^--DqG z`$}ca&iCzRo|DJ8y#A4!8-bM8E%^P#_gmHqSci_^9+a4So>`a>+ zXh4MHuJN7_OvRWT0%`u_B3b>#_brx^(>G>6PKzu3E|`Xm-PBrs0>07uo_cOh4u7e+ z%M{bA41=WVWHbdQm&a=F^$PJaD^8`$iykrQ4t!}__2%<_nV!B8djZa{qz!J zNmE@Hp+e%{0#}Wx#CDA53^*9--^5}Pb@7tCQ2vnkGOs66GKIP6gwJtKR{xWWjjXR@ zLfB%`Q90~6nr#i1Ypj+Oo7u2QP@PgD)0iBIp*bl09;J1VxAyw#>~LexbE3;#NnBah z)3@)H{7@k?C0(_-;-?~Y8rqZCPr}r3Ga)I$? z8gjn`PL>^5la$Yn`9v zynV}8qw_=}>jTi@O=^rJqS*qb(cxSq=V{$DkY=6E$oynDC}tdQJO(TsaM0Bu&OCcq zPk>z3L9`{7J>)W6FGbux1eFDit*u&X(`wxJ8gOg4SUN{=jBk#{Bx-rDzqRwK+H@h| z`ILrJSGSS!c7gRJm&r3jK<+pM{x%)H_Og2Kqw&Ir?`**>Ji!;Wtvh1jjHp6XY3(mR zN2flo)faR(EkLT^0H~}=)`m6{%wF&IucbVJ>9CZ9@fy1Gpi3rufCn|x|FR~UjJKm} zEE_pJ`jD6n+mgPknxF6GuW#j;r{cVre`TVH-#w}bY@g>zNuzsx5?lTx*^3`c(9M~I zbV`hyb$!24(BWf2s-FUqQjpzPSv$=;f^Jij;(Q#iGz`-M&T9-kw+c4EUj$rNAJDiF zsz zyeYu_bV^@e^UNloF_j}BD<8qBu`Y5G#;=cDHw}z&gCjMDn~(Ldm3vgmp3Q#iess8z ze4z4cQT@`qbj(>?U%SR^RFQ@TEx=kGotl3G@bW_L+j`pU)wI+eGbj?RdfFR-@42B6gm;@6Qr_g7o4==F>c#Pw(m@UsLvnkIkp>0$`nbxqP%=EC-+OtKE-v|{ z?e)OKBA>Ig8b)8}PhZvAUek9ZkE4+jiTshIgK3aj(rwrsJp9u>;Z(^gtaeJj&arHr z$MOlT6gl``ai^%pU;XnG7LbikP#D<34FA%6$p7M#A^1ol#_aafUZ>_sb0xAXX=lev zeb@WvH#Y7{rm$>8Xg`nq{cYsupAk9;>v|cLE#jPNadodJo4?uA5{QFH@C^C>>H`Wa zOc(Xj-S9EPHz7dn|J`aI{H{$if%Bhy`j`G{$GEU(W4^DXx#rEb3V&&D2PQ<~(}p6u z;$ht%JNLI}e)tWnK2aa9(q3hIvpp1@xbCMkY$YEt%cliH=r91KO?(tF&hV!%j!Cjwx4$C)4Dh+pkS)Ivs$|{ zye1lMVRdaFGL;TYaq2kL6Qagw`uR{rWVf zQou{PG2a)Bw|MqD9?<9IL_phEQNk@sKUocN{52Rr4u#R9>T=w4UUnZ~DNqH!APs%Jp+?RzSRl3apo)6HxsvMLiOdg!X<&rkkm4iegqxpw(&$s8JWOz zQP14PTCtCLpF}dRof!b32S3DoyO@y4^c|PI_+!%kp&e%+#@U#E=t>k11e_yTGxk$;gM@4NU zoCort;~mhXl$42q9OVrFXDYim!#hT3Y9*h!4)+w2PTb!Zc~yUQs9WS5mk$fOS z#B1;<`w*}BePLl4(QWNdFPXoM4I42_KBz@02h%2u@*y%NDOs<;JHH}b($_bTw!z(9 za8ba1%64z5?<25KyKRQ0D`Y+>m)}SkYW%P|ksli+no?U<>%6uy<%V_ZacM6dy!3r} z*OOYXee9Sd^P7Rnc@jxnZ?dGG`4oUO)!78qKNgH*S4BSD1`+*O-Q7KFrbSxLz<$Ey z61r`X7APK0G#y{R9ostGzg!C;}EMraZiC6Zb@|u*jRVbbaCg!ywtT;FG}>aacw> z8_G%zckPoQE+EOAVSv#Y>U%n7CEz%~pkFe>glVyan%npLwDH^6&{H)Al;+Lc^+)6_ zcWfk*I4dongL^$Z-qpI?G7myubKI0*SD=Nn)92?1CrWmiOr-VnS0P`JbpQcCE8p8} zEEUQeX?6^c9{zPg{H2?LHvrCMzN|sPW1hb;RX-6!EjCX5GOSw|!!Z5vEwa3}QWxd~ ziz6+lrNQR1(0Y=5ievTt?~E|To2V02cDy|BI1%aJO8=L9M#|B|CeOj#6UrJ33yY1K zwCcjz1xvv_i=PD?2em?D17-7t-m5BYr_jJ+ry=jV#Gn1T z?1Ose&K(Z>G0bDScWXQyeT-fj6DMe&-{sC%QqlNGmW>`87npa zNMg{EY?Xj;r|O+HmCR<_%(S$$j`ssAD=V5)FA52PS^oeP?So>aS!{aAdIJZ9S2*z| zGwa=hS~TRzUUGCi>5ue5u3S_U%Y%tV|3+VsiCX2kXDQ;bon=p4ejZKA-69`DX#+M@ zMN-nuiOMG_MS7KA9KJ^Zb2cI(qIXsL;lt;4qb1E?pRNwlM^Om&f_evLU+G34tbBVD ziq!Y^c?A~x4Pcv(Fms(JKe#>p!2Xu5VI$|N)EqG6l7-In#E^a)Ai#JKga<@bC)>(e zhRT}+Jj-b~EOl*O=CM@^3^hEW_!sm*mpDTl5<$UP;0!(l7^VqOr$Mc6GgK%f%oQBy z$H4`los8idxwOg zdFGKH2yj51pblY9tYBa5D8t{mC#as*Vt2D>KrPQV7mwG{+RBb6@>b)24Vctkii%20jP^-q3{^R} z6x0RQ4arSm+j;J?*P!?fuO))s%G}7vD5^rO#~KsmkT#|moCMn=ErJYcJSo^fPq>1o*h;KOVVrS$;Igb5>$BN3?HRFdFhbp3##2D$H$vge-Tpf z$lS98gwiRgWZ8l2xMwWd8XEY!F&V&WX}gW6YqrX`+8I|rxa|jYc4Ve+LB?+->T(Ss zMnp4y`R4Ze-o{liRgv)Axp^L?MRRWB*inYv=*KqJLU*0MSK$KLOQ_w78`M6N1^#3V zDJdxwyq`BGKK5ZrV4FL-?Qi~=z)Qv~HkGXPK6*;yCKm`$YbzKH(HNh6I-1g&`O(bK zCxcuxB_^(~#rSVN9%KMnrGuTSmZd#Ifs8uh3o57VMPdB%!AHZumbt}Z7om)oeCm^}n zfeV2scHOczP^iin#7pk@!@do_*PU+_9J`W|lKolT^g2W%QxdXh698-5dB$Nc)WTbL6MKMk)^Jbr0_g|gAT z;qO8>hNY!d`5FCF|5udYa(4cjy`Rbo%O+XJV3y}9YNF8`TIpA#oej$oM)_mTFwp-%*AD^aQ;Yu1)@jp%?d5<|g zSz(h%L_$J=%DTinO&DhVsyOV)YzwPyRV9aPP<`c-5ii7xs_hrgbUNIdCu^K9j)=Bs z7cM}^u5h}#9dKV6=`@0?0$&kW5bWx3^GEmGaJ{#C=1ZIus%Z;w4>LkWc`kjb@JkZI zO@K629yKhE`E9sX1W8_eCZBNFz9ZtWudH8xru(k2$oBJNzqA*hSkGM60;?)#441fS zr{s?se(dr_q$|3(ZDtT_lg~b@X6;fB>Ow3Bo&`2@1R7HsFl=1{qTq}~E6Ov9K&d_8 zCY;51EmV+7%UQwIB`aF^{{6m*Zb3mF$884>xFvAEowJb;uJKwwErc)A4#eMlWk=Uv zVmJw>@jHI)Ub}s&AaNQG6CaMho^k`1qAdrMU2bj2f zAhaC+tINC}#!$u}^ht0;TOD!xtYy-zUZpEwa#&hLIcyyG3rd2zj zPQWCd53CP=j|FhN}0Ny22F%4`kzfqj{`cVF}SGQ z*_5e*`B2-c``6;4^peDg1+n+Sf=W8B??9!}F@i0GFgz|kGiQ2~Vw=3&3oy$pF}PIA z6#tP~-t3ODwwvC1)JAi4tYDPEK^X|u4)P2o?6zi}784bUb@1DvYC36u3xQr$o2R7{ zYO@8~Idc2}8St0h;cnaMO-^CfLJXgqJ3PO7UH~7`nVG)n*vgM==HG`ve4jvY5maU8HB~5$U^--_BhDH9qAf+jm{n367Zr#b&?|}gqDC?QXXGs zGL8R9vOUHeZVW$|jqv6`*R&nH_+?;N9H2Q)-ftGr#VB0?cdyazUrOzck@#vOK1n_^ zGFf)%I){dM?eHUf)YKKco$w7!YhE?t;XG>e!|gUA8AE7l7#>@w%ui4Ubx&Ff-wQnu z+%J2~63~9Ak(L0rR8yhLr5rn+ux#RvfeLJddPzkOTMO_JQC0;L zFKE~8edF>MVGGd(ao{HO`5XZ@v0m|^spdhiDUikjOw0ab_>XckyD}vp%fW*#E+7-@fbx+Q>1Ghs3&?>&v=Bxqy5tfp;=vzyqgf2Fi zPuYeM&muHCdFT!R;*tn`7iA4f7grX-AL{`b3C#~Xf{@+?D@K@;NbbM(H04+Cz8*FK zLqVbtX@<7K;A`b%;=4njG4?8{RK?W8c61dJ#095S2?zs5nlDgPq-d_O_GjOnf~ zXZX+xENVXDEwL;FLoQ4+)qXcD8yAzw7P@%th}OML{_{Hd{50Y82QW}Qb**q>Z^z%` zENI`2R1e$v_KAV6I-)vNhi;orQ>6Jep|hVbQv<7quIUR1QQ#EnsY(Nms;l?X%&^|Ct8B3>7&@O}v;MLDrnQkrv12%qdz1j9# z5ts5LWuY*oK8fyW4O^wykMdw8W|Crl#6NE-Gaz>B=OjDEJi-DNwHihqwaE;|W$UR2 z#>PEcn2>`V1D?^_7V(~slZS-U`?r4$Z|QFOBnh_0zzN0_jI){0 zKxb(<$}S=n{QjOH0F%7ITj0*B12@sRWrZ#h@<%TwpAYbN2!K^mvqkRSh=*n+nT5F_ zx09T2nh++jtyfn#!}c=oUogmaEK4?d23vf{6BgMHS*-iId{ry`0kn{0;J`|{I%N7k zu$T-T`Gnp@y4q~B>o}{nhhH;ct;7S7^<189u`=}GyQ1p$ggM>I;P z0@MxV#5nW|RBbm*;VtAGbX&KnzjMIl=_Im>7@J#P2TqJv;Aas7#W~mvY>rGV-3Hea zQRC)oaAYvQ9u__nRK0(AU33XY*s!GG!s7`Ja?+K-t-$3m(7HFfBl2_NNJNR$(#7k| zC1Lp8o2}9Aq8`UmGG5Cf@-+*-EMQCwE)AV2-I2&R_yGQi7-R%@>aa)q6#1E@qF~`W z&^5X27}*I=%{I6Dr&(ffrg;40so1S9vYQyO<8=HBb^+Q0$wMIji#qrJM0Evt0}X!i zpctO%JycqAg`~xL%udh1JtB_v>BlL&Q(xq_b!|o!#RKOrqfbHCZn@IfvwXU*B_~aY z6hzYOT|&encHjeyNWKn1Ibu>{IeEUXDN)97dfY(~89Bm(2LZhMZc=83?95DY&^98T zyYRbkS~)q=tN_3b)Jrx>R?-5PXLdoV4>e`Dv6eZ+gGPJF3}R~ z9b*3RfGU^zCE)6RO_e8SNWv8C5dqmx3byVtrXRi)6sM$~i}y4-0P`wDasf1u2IQQ> zyixPo8*qX(^PRbO^5LyuoNL%u=TCar&%sqe?L_e)JbE1ETr)hE4S*eR)c=tI{q08l z##MiRN~cD@WV~+cIa0sFVgPV=k97dq%au-UgEedDMI9j@Cofw?2TmeY;(v$!2Jt7j zAs6$$MzS(>)&fDPMnL`-^DCFfZ^xs5)9pqftSj)KoWb#@oMM2QxLv5P+m z)`yH-lXfL#&m~00jazCtN()4TPalH@p1j-+A~+KFJo8FuChh2F8o=TnrL`S>>%~2C zzGT~d?)rv}qqbSO_oALnTpZ;(?WCnzgmPOO=6XYn zHkps8L8gSX-iH=QIN#@&u^f6dL50E`)?A#f`*WHsig$qTMZo*Spts88r)cjDA)5x> zaElPSn$&dPwRvjruUoX7Wn7+QNFhj}P-2*rneVL~S}5*tOelY%&9spbt0IQ!iUii! z9woH!fqDNeq~Z&~R8FIak=#w#+AXBOm<3Ho&lmK!OhybT^UJ!2ZECU&^6<>dnkMjK z1AyY4-ysSJQoI~ufZyr>p+gLalJwMb88NXwF5j6oK%xFbZXh8v5dM))3x3&#L9{%& zN`dtZ*JB^V+O%ciGqan&2c6e+il|nL=1|K~U{ikIYQ0y%1apz#v*WHsLFOPINc-9- zW0gDf+TMh?iR;F0v$0Qt<-~!Zb0JT=YaL`bWI*gEB9%7Cg`q z33t&L!JT$(t!+K&;Sc1o(sy%T7bJaXjsrFq_t+}i+zK0urLUjf-eKl)YsM^7E_+lo zwB^kZrO4bN9PsZDIJ(h(smiBvh(pt?b#tpO+n^ffQc}Qc=xd66qwj&lx;|UHcm6iL z8j!qn3yxF$g(6LnG7dL-3(e#?2^Cz=I;8AM^Z{??q3Wsq)K+dsR=OuOFlX7&SBk)Y z{QTDJkK;?kaon@@aKZ_Laj`F7t0M*IUWoXE zvp>ZkUBk$6Xd0L-S?T0mx_z+Jm2{_a{COno??daQR-N-)Iav}N~6fIM1GcDfxOx|Owv8Ha(5-$i9l6_0M;=i5k$Tvfe}W|B|S;0MpGRfqYcS{S=htG^it-P9I7)7 zdBq%a#*LReHcefc&4Oo%d$jE#DGx$$iAzXTKQTTqO~%Gjo3_t5X&4z5Nq5uEt%~cM zpCUkLIp6^stlAj<1G@t8XOn3jGpk!>9tmx5ehrW+Q6#1`FBX2XNK@ml(tsEDz(|3* zaL$nL(dH*263+K9LMAW!TB=;|kqH2=-J3&eanQTpxTdtH3k#M+;>`N}?hk-O4|TXA zoiH94mb63A4L7(Q@jAHZ&_`%8hcT z&J|p>q=yTkWiEe-7tz!4-8v*~bnXR)zgh*Dg4RBhR3uc9GlY>l0Db8IzP887w;lnb z#~GwEtujg^{N)(L@tvPq&pqQ#yzuZJIdEH#`=Oi8Ah{b#% zxM7AACzw+P8+L9b-d9nrLF zhA9+(P~(TUaERP{J4JkSlTL=wyPPZyb>LHtXCRMu9j*5~j$9lURTv%Y5L zV}8kuvnvH1Muzb}{GtxUnbK5~T;^SMNg_20&F$E$S<=_AroG|ZR+s#qtTZM_>f8~5 z6CdGjjpuMhF8>3ZISPQT!6iX_$!#}wNrz+Up6$?1NN}P>N(62L3FEXydCGhHESK}F;$PyysgK6l zT56*peK+E(AB38vy0K25km{2Rl(>Z|;P$UZP-k4lH$ma&vDv%eY;5ZIOZ8?(BV~gs<9`}=+A}=LUIhL zrBjqxyAkHI62sj>w8>geH=L1$`BXjG~!S-vnQiKb{9T$L9hV z#PgaQYIVW+j(Az{vl?fPHF>x^tgW*3rjt5O=`GoUuX5=umhD$O4nNg9a0%Rlig-d# z8HI8rs+XDiW-)-!ur@a2A z>Tw}>*I%~=ERun3?UNiH3@|JBl7b+rlf=`I2QC$@?1;3O>Q*~k4m#E#YidWDMh=`( zxtG6#Ut7x!i6%kPNS7grEYza zHY|+&n~%Q04f?R>Ctg>dK}jq%K~P%Yum7lrsr>ev=oCM|;TmEGX$Jn82A6bqaknT3 zKWt|r$KXOK+MX`T(Mz8W$DIkpND~@`vp12<5?++~gV^K>f`weO`d%is!W?Sshy{VstBW&0xld)`Mer-o9&S)`f)p;IGa%wR6b z(bN^+>Lwg_Ip`S7C32I85A?OxZRPavt-S=;H+xXTG&elhED9pr!GpVxY$>6KOC%Dy zzB&n&zsT}0soieEo(XJ}cij|1=JQW+nnE4q_U~L5LuIJ&nb9IUTHpAyv=;E2G{!!_ z5m6-lcvmI0J=)oAIyYjlW~>L*-LL!>a)U7@{mvwNFp|EKFf z_COZhay753re1mSP)GViIrsoEL&Wx{0ZY4q5D=dAY8S;j&060*8@ABgl<6Gna#GrK zH`IFN;CJpP?gATE90;5fAXKZ!-P(TaH}T51ul(Je(Ar9HGSwO%&MobpZYqinL3p|D zy$EJtxcuN|R(Rk_N6TueJhD*gV2RPMacN!Smk+2%OVL`;WT{5D*Dmau;f5UFjU3zY z_0jj->>XGDq$-axOs~GHIY7)T?Pk;X3fTfs=*;t*^nW?6L0A}hLnEJS7a<%NYxEqY zk9Sz5@fBYy!4k2_zXle6@#L(rmGkVWmNR#TocDj$bu34Zxr2N3#@r7R^zZ#ae}=Au zROwVIe-!wrsM?$wX#{A;YmL3r1FB~|#`Xv6=JIdc93C*L>OD`f@BK=&rD|Ps8$fb9 z7_QSfwnk@^j*C@31btwC$wbBbQTKb}4-S?gF`Q#dkL_7Ar-p;7#@(N$(u?*M%ls?E zPN%nX-3_egKD#u<6TbMJ*k3iUeA(bJJE|%nt|t0m3hLYTgQpZ`;!!E~&!y1?eaN=) zuy<;rmwsmat5!>!@3_QbX;fchuNoTtwbw?dU>ruP?iHD!m9-P`w&W=r z>7Uu?*nKQM`P!by-Nr=Nw}V?#Gu`3tFZaZm#bk>kvDpF{XcbxGA8OEFG?Ns-?{xCR~P6ZLAibtDG*c*B{;%cB?{-=1ExcH!PYq*Z{;VKfJHre}9rq zwfW4H(!FC0Lt>)aGy!(YeXEQ?yUG1E{nX63t8d_1XW4JO%f^HL=Ak#!f$PK)jv)j* zzBALcrSiQb(dv@jrUwq5XPF0UzX;fLlRT>9g-~!pM)7mO^*DI)8AG$D6sxP z1-114sle$dfD~9$>o2NmW3K1s#@0|$Y`@rcZ`=tVnDs>e2Lg(aL4lc~8_&MwAFi6k zb*HIQJu<$$I6rKQ;+=G2I7{%IS|v7A8&qI=_cGNY>;69CZ*M9Ke`)`oTkkn7 ztUkBxTh-`f?}vBgUUd1B4(>!88@dM!p1WFZV=E2uA3WL!O`TOJ4FBT=pd9gBdG4nK zp`pm#+SX+ls@zfjs20%Tq*;4RsKFq0(fyFw>FR&N>M-w|HY_7?bxS5F$00%dBI1Y6qTJoTkXDz0$We!F=MUIGn+$oLE7G# zJOW0xK$^_QRU@ET67KXKi( zc{r@R1Wjo0ekQLF8&Rn3FEWR3odYk>st>fX=oa=ZwMS=OcHb@-Ymz!vn$kNB(n`zS zc}Ebw;V#;(s(TW9p`M3fDLPf- z@^(}V10y92zEWTns1>Js3`% zY8V+AF<)_dl`t!jSBKNkGCrNei=K4scf!NgaFs$d{&ViT0NJF}z^Q4HfZ+G$P!?-f!JDZW^J@k| zPNiw}o(50cE8V__*WypS`8HMZxU8O?6SiU5DUUlf#N0X7e0gnsraozTWw~x>Wae;Z zo1wHl+~rhwuFA0faDqJ0>)RuQv{DRR7V^?zf+MmducHh;fm+M{i?{j9s&AEtE&#Rq3>qpA<(jUZmO5F(K;~6 zxfOaPH`%@f2E(E~o3Vzdo}SgzF6;cOn}y(kz}4_OzUzh6o5}UeE4?<%hTElh-~uw`087_K;V$I4nE!cwWoc>RQzZGu z*{|>RYfE>x!t|w4C{+1I0nD>7-V#8W_C+Tjsh|el$Hmad=oBGrnlCox56c6OpN};v zRcEfBa^YA3{bvs)@m=F@F5(B5k zN-YO#YinmuBnei0LMb*CJK%hOs-R9R<6201?^}*3KojBwsDUeixp94ff!fFkktX5Q zVVN04#uR@^>%>z9@D0;6WeDn$-@Gx^%z1o>i4mzSOQr721{Q}(`d z;e~^rwbwy4`p`#_5sLm`50ROH6tT|GCq^a!_#uRzsG+DmOn7(8ofxady~ZWCK%A*+;0PAxu>^S_E z$0Q)jeSNl{fMBnXNqUZBh?f(#Q>=ORY%Xj3K1X3)T^GRBDJW=|mOgV^F<$J_dykze zG!W)}b5&#=dAgQ6nt>W+0nSw^akqgAf#?J&gM3847Fb9RN0@_e)$&Yo*M6(9{xmN%)!!Dng=jk4ltBUv5(w){e2JCEC6qZa=?Wz&7JuK zkdGZ()aLh9DaF$L+U61dspvXC!!w94+6#t$ez83}v!b0%4`z|5dD|x>A6n+>N!sYL zs5rH}^;%QS$EObUbYw~~=JxW`n3n;@NRzjAI+$>^>zufnc$+kD_o@|k$TZ(dK2Gb| zJ9#1FY0?Dz+3&Xqru+2yUP3*`@7iMlZ;mRP@9Y_IG0vJ};VTiOtY^kAm#wGXu&JCq zM=No1d7J7s=jQe}#Ys5IW;p;}*OJcjF9T_LYD&Sp80sr~&U5UBFS-#>zYWHlU31A( z%aCd+EP%cngQ1M0g`A^rI=1);%iQxg>GB#OnbW=X!oK1SF6+X?xG`E(4r%*%Tdx?PW#r8 z?e?ty*!a03F!6WVIVRKyimVd$8W8e1*!WegME_&zOrJlO-i!6-3zV&`ZNtmZ2nEvs(7Ucs30pv1*5D-XJREH-VA)4~ zz$EcT z2$iz}h(&nn!8l@3fdzg)QU2_Muv5B~Y}y7ubgW~I(@_(qeo2oS76L|0+&yNMVP3d$ zx@}VJ5YS~FYdrax;yAw_W_7#bdaFIaHT3|{7Uo@#z@Q+sj{h%E(I{42=+hQ?GE@-W-QGTdqoN5Y1|)?CMhX9 zcZu{;yfluX|zXVGy3Wuxr-S^}sM+ky4 z9vnf(4fOTbKM}EWd9BPGZHOHiNCccEYdaLzR;`vFGY{3V-U~P_{D+wt@iOL@dodBL zrq9P*+A@WhyX>4YrLYNO-C|}gxq|K$pP=> z9x+`6AXhKA3i}WO9#)i+!YhjVM!2K>N)G(O=uSQTR3oWec2yL&-3nX z#TA2Sf9o?~88AyI*7xBUnBVTb8-8Kr+RGL&>2@xkwohC7wese$CBO?1nqiYvyiY(j z%o@wDE7Jp=F6}z%}XO2UBcI10%nABtEwgDpuf=+7G5nrt`*% z(>;%H06Rp)JVrZrQtEh(UG<=8Z%HnOa)DrI*;N(_2Z!x|XT)k;eI^kdc|;ZkT8&3M zmcDB6(3wwz!+w>+UbIVu-K3+5gMuTmqik9Ns=w40EuteL4J;EX{Q1Mj%F2@GX}6;s zo~5AUuFdsxY1gI5Z++?A%^RD$_E^;=FNxg1K)+`8p^CV8xUR}LNj07Om-@NvF)Bw2 zc0H7%0Is`RWvSZ=kFUcp%Tc{#-=#KQ#;;5tQo`-~qJ6$%b#P zOAREOu1H~lsW?`=-$1H-mRWZ`IkyJi1ak2suVJEH%l*~i!>H$HZG^I5dN2)d^H~{G ze5-z23frp|;41d42uNH3hIP<)lgt;OB=X=XfP}j(E$^4bRCKl|eUS}CIO{O)J>ZF8 zqZP8>`AE3Mfuul+bWp(`v?-@>O&jL4yd)C|hSaVas0TZ@&bu!*i)2~zs`5=NWEzxP z#;Dmx4~3`PiY>VW1aZQ1mTN8V!!(J*$FA6_*aOl}6FOix;7nB9P!kr>i>0UvRrdfK zhp+)EU_M&5x{YoEiNdTlc4uGK{HObkO9a) z$gU44(`B$K#d@r)R%1p>e<)Ud_Q!vhq%*PLIqN1Y`c3unu+lOLDHk@oW7}Vs)(8_0 zzs*wPxOnuta(u32-SFcjf3{MZ3(@GL|Hz?u1|WMLn8ULT`kQv&f^cpH#1IChTAjS_ z^eAzy^lv=Ux?-SKCniwzR|Id!s^(%d5>r&A^0cQ1h-@f>3822n;+xFLt=)+IHwMV1 zUtmTGIX;?IR&x-vv!>IT74t)m8oz@Ue!U}8VXKJCk;(NVGX+MqZ8H>1Mvc^2L{)xbR@HAq5^3ID5o9@A@#CBZkLq+&v5 z+$3t|FbX6u!dN7GK+9RV6|iXW0BcczWFQD8WlrDutj?IRE0tA7(a}`ge1X2w9P=*hGO%!BlOd|9ezGQdAf=9nhujXI zhH%kH@mt|gM~dSTm?>o&XSZw#j0K8A?|2`rf&~D39#d#AD+_F$rKXI&Dk!&iZ$l6* zCjtwVCCd0NeHf@dPoPHaI^Cg><@7e^@d0)NFazF=mD&3q`s#b>52H#p7x2z`yQc_d zU{bVJ$Yzh?XlB~SN_7DeHJ9$_F_*)oQ}99<&O!*4_L|SkcwfdvX8Q4(o?z1r+C#vQI$v)QmS&;?TPR%6e6&FY44*D9dUYZEsZD|R*F>vf3m0L!Ph-})Pt(?l6 z>C0$!vak~x^sX@P#q&7wbn@F{_(&PbGh%OBjT8^&bV$8hG0tw9JI^QS>UXR5EGY zXH#`1jeJcC7KBax@PH`E5w4d=$q}__t1Fe^dnw{@Op$YPLEmV4PlDn zuOv^ue3j#5VPU*kiW`sTNpDIUS~YKPJ1Ez@8n{U2jB(<8`=ut#fU)#00)Gb2KI8PO zFhX3HQCO!%+FA$bL^#9kE$G=z<|ha(6)ff;_a4m($b|#~ZgwX>pF$7HirW)prp-iS zWluwmsle|rW4{WHR1dIz90Z3hNK@IG+acEJn7-W zVQPwC1}}D`)|D&eEJg~Nc5h{Erplq7P>F7Gt2u7PR>e-LxIn_OKJ}sQ3UcuwD(D7w zGm1B6g}N#DJE z)aEB_@n^Qlep|hf-*Q~v+`W5GFB1rB?{o~rIDUNQ3}%Kgftl~m@7OrBl6Dk?f$1Z3 zg4Barkl4GDQ+px#tg;k8{RD?kUX#^dzVOJvc_yNNG8|a{=FqU`IoY~vVJCt zN@yRz7(cYg^;EQta7xBp?$}h12lTNYCiHfIF$EeynVJ2+P%1E102 zrg|rAoE#qX5FU77C#6TOQyJXeFu=39o3?odrB`clw#IjGIm&h2}k|{8t>G> zKdv-2?VO|nHaFaNQcE5sD!ew+i@l3h8Sy`SP}`?_3CtCL>&9gN`|b4-hVEMn>|5o= zm-8298LUM-fQ>~|il1uQWA>NwJAnPt?*m+%+kO+C_R?d7EAL(9JAvjI_Nq#Rd0)yO zVKvs?Ojn;-8gbG%hD}$@E2ao|zqu?VI){yAyuCeNXSXuBre(K5cw|6+He3B=#@*fV zV`{PRL{LchSxnZLky53lfqvEc6{GFHdUcT?jW+@gu9wZF-_m_kcMeK6?_qm95{oL( zr{(P!f^uImmrXg^(G{xo3~7|c+j4Z_a)fS;8$`t!7SG7#99H=vyU#fy890ee-Pbyn zLySXf+^^W6@yMudpqcA~N3MKX%cKz9ia~zIZv`>m;k>G411w4~ zrsJe0zm1Y-+C>UuO|a*PfqzVkPzSqkb5~#ywY~cKI&P>?0f&{dU1`BT!cwb za>jYE8I^KJGn12!n>$_xKPQs}ichnM(SHSsf#obQB=eTan~Bb3&2`|IM7Bd%)4GmyaPH4Ad6#pk=U(vBO{^}mb6?Ni*^w><}zzl`ADAFng?^_XJt z?B{>+&?U)i2+_Q+w*+AI3InQke_?aLel~SKz!4X9>Ch>eIQdhacd9F-cnV`CZYWhQ zrlQvG%$$@YlC_~h`?O+6;Co%AI5U#CBRk2+r#H%=rsIkzf#3Skg;`V@`X)%dweOwu zaVtrK0hl=oA}ZBQ)OjlkY#t#NwEE)m{K)qyNQs68^6^#?t5o+>$_Pc|F@|8#4FLxm zQcN3x1+T0%NQlfEyF#nx+{X>Ce5W!9qr^zfo#_lcCM~3T0~g)f8i~=-D10hzqE>TB z5F@;PNKSlyT;wq%QKSH8H*S+}@y-J4fB=$-Y@t2Dc__cAZfzfySr8RLfwT>Cj1wvk zB<AS-a2J@D&>$ZrWxkh;^&FW5MxXWzhV#9v>ug7?4&wrpYz9IVzf+#-cMkX!M-UJ8#R8$b}P{Wqm(A{ z!&00%=Dm=fFl6UA`oeYN9|w!nl$NlVl(v9+;bgb@y;8#lKxWJeu4q`7O}20C-7_ZaFk@Mz!P) zPMrcAfRnbRZC1=L-?(LqTdsP&1FHIS4CY`vd1odh*)Wbt{)A{d#PJvv>co^@>JO&@ z!9cg*FajKK8}R~Fmb*xrE?zuR3@59PcjKZ}6lvXACK3sW?cok1v8qahI=|UBa_4ujE5jdxcgl@had@|o zb*WwfK*@J}bVD}WVJNBjII3BMyK9$W8bV9j3Q1qRLClS0VF-fY*&z(}C4bO#VGC$Q znysbJ=KHJyk30ic6u4${jNqzmRyTs)om%q-Q>qGq_&VyTg^EJPKZ z-^Oplj8)Gg-h)GyD%$-O1HJoQWf>m8We{wF}f)xXOw?X-0xV4Yp{!+d~USL(&4wd0BI1+4vCh#TRY?SI^= zF|`%Y9(?~6w}YFZVPT;UH@(1Fx=A-QD19CG;nKxLGukcyGL z6su!mU?vEoLPKL2Q6ooP=Om}{86OB~75r=)xT{c|Vp(}vH%%h_OqM9IfYNZyEg10b zLPylUZU%qJ3LSL0033v}xG{$giwC)H{mdmka0P+Gt;c@^+<5^VXO?54dzD80R};Fc zcn!+kOgIb!%K@lfSKdra#KT95K4FIQ?CY&sT}SRZyz*fbQ$K7p9g^Idsgrj<2K_qt zUE$sOw72K)zDs65$hVmkVFS`WRnLMtwm)g#YY`A6spooEHWw8_3Ased6QQYWs`uSD z9`eW%qQG?J#OB`vi-m#MsB{vt5lA#ZcVAANR3r2s_uJ45m$C(5qL>Kr{> zk7_P{eAQITQM4wy!EW|7FYmCH(V*O@WFwhB+fdifX~lf&v`FCeU23X%`=hYaiff<9 ztP6Fuy$eP@-xpccpfz9Dza#RH?6|n23^aSPR`(BM;)T$4SAEHymK#zlRNh07pl2UA zUK%UTiXwFTC>{+6cL=zCYSsMPi)O0Ahdde#*_*V=@Ww>b#Xr7iBO+;9G0^z-?OU3z z_NeVs&RpLDa#UHl>JujNhVjwMH-VJ~)pFbOb`H;LPWEF|2%jQ0Tn80J&8sRMhWFC0 zc+4x?H!6YW@aILAC{wzpsZg=qYbE4&yc01t`o}wINDKeR=$M|Nzd3XG@T%Kpq$c?Y zpB}#G9Rp2>Y1{I!X_q;}A1??s*I-=_pk0I2i+$hn`Kt!TRcfpz(olarlVELqCf{m$ z=F>M6${oj8yTf!Gu(o3TN#i^^cgzGlHmSpGpa1m3{#LTUyNlAx)Mx;5=J?a;;252U z=M3EITSN5?7*yHs3W`^M0d!2*qirXT1U8jKYLah&;@ID)97wUI2BRMbbaySo`|*>C zVXh1clCP#=19xNcH%E%yQooA{a_!OCl{q$& z6~?~6puz7qsz}vB&F-*0*n3C(IFbCTCU3e(9IKEW-~R814vOobsGRh(Y=_CZ zQAc<3l*cI^0V!5-_I7yE7sspy2cwVb0T9~(m{?SpM?6eeJ;5NnXjRiH!@!M40C=;T0 z2e5;WvCk;~ZMXk>H5H*(ElK-)@^6mGf!T&$7zNUmOj{LNwA&2eop8#hLN>CAK&*1_ZiFZ*qJ71>=F_L~fR{)oFyLz0ia++gw6?3OYs$pC zy4Ugx7*0_}a$6?#-(pQ%-+e)W%ZRbb&3kZ0Px{dd9s`=Ot_#U-?dg5)N2qVK(6HacN{ z|5;L|v@6GtLwfPTpCF!shTN)rK`t&y4O^u+`Y2r(s=vSVSY$!Wjklw_idDLNA^UPI z^nX_2zfb0cD2|?E*wB5BWQBX2j?*Q*dHIOgB9VJo61o@4r>q&nWmZq)BD}ju72P|5 zKJ%CM|7`BRTm0{P9d%Gc0|NCB*vOzwY8+;Sv@+3qidtuPoI*y#1`we zHF$1InVCj}h4rMm0!}5`5?-%6%5>3R(Y?Il!Nr zo4d>#ySBDwU+8A)Fx52UH9Ly>C`>igbdHy*I|g~G<8!dJZ1p_mJ{|&2JNk%U1vnG? zwr)T8FMq9nf4MetnIANwrZpDkud88YWo9eH*nOZ|47kn3Ye87;9A?WpjRKan#Gkfr zq{k;<+Qal7*_yYRnH&7jFTE1H!nWxvpZs&y{`;lChYw7A0cX0XfdR*b?{3XcfUj|C zwxShsEJLHwZpDxgm1ocBDmgL&20XT=X-e~9llXCqUC}}pc@fuuJ@rfE|GW2pegU3` znSg^0V4yXqq4}M~@%$%u%4Vdrghjo_cBHQTE3ZWd1ZmKAdz_R<@SL~<0b9R|U=-kU z^G!oT13ke~$iNGHb0;eOne^3#GRfjYf}Quw&1>(HQM|AFtJ=LnRyaUqlpp)+&MQm<1Bs0uUSuo0?`xk~I=M+38pSPBaT7 z9K_RL{l%RNX8#=)+a0HaR^e^79h5q1aF}aq4@~M3xaV5nzrUMvm@;=Upj~v9_k{UV zZ*MPPBp!M2Yo`9mEwlGY=rJGQ_|qSJZ1;CXcR+${z7JF%tT$Hyo|Rpl6)XHm?I)x` zJW81b1%3XE1%Rz3o~~<|oK4*{@v{&hd0}DU^RtcwJm++Me0<>RcwF=%&MoP_7Yf*! zZN_q~fl~JcxcyH)E-tQWo#%n=0S75_=n)d>iVs3}4sy0>-oGD66CQPSbHkwkNFiUo zGQ5ENy^Wl!2jx26Hdmr1T-?y?yky5D=EN$6A+D}%vwg)LmT z{jq%$qN$Clv35f0Y=?EK&OHUCIp!f-oSPfopDH@D?Eh9`zuz3QD>$UGKarQ7Xu#q3+jJ6ykk|wU{!JJ)M2?sptfs8>HAb+M#5 zRbrAoc>YR+l44JKYq}P7xb54UDBgWrv@tB{RwZCsaxy9GD<-ThD;u<2t9K{c-R;e$ zPW|g|0GsCIaMN8GTkSBn1+V7@I24vx%SAD+V7B7T3wn&jqh^ z+Z0z@O9r$M+;Y52Zr>3RzZL8hvgsUYW2gEo#oxCd3iW@+@quIK8yD|XTWGcZ)2B~= z6Rv%)VR^lQ>pxTPUX5W@^y-Eq+*Q;5Bb zRZ&6tkzoOQA+Ofxp?-i%g(l=}GG!Fu&~s1jeWP0QUO?CZy_8x%*yor?XuTAjKG9+Rn} zTU$pZRK?jh|E^>>69bs(?6LHvM2dv>NAk``gCE!$zSN=912JqIa`aUv<3@{eV>vY` zDv}!`lS#V8>5UCN2Nzhz+vTQVTuZp(8)K3SbT%T58k(ACV$&ref#~}wA|`${qxxqI z4i|4z5HC}0YS7@)mEn1K(;;UK=CpnYwO-ta7C?*e%lTHQxqCK;_`6@ zDNyx9dIjO}mB>BobE$y0tQot{Of7KqyYmD(82%rj>Z6=7+FKJCeZaemiO0A`GRyJX z{bY@kvdjo9J=@=S4=mBr6sTV}F466YJU!+dHR(AAr>ft|oZ7T&!iJL~=xt5y9!fABxK8d;o-rDa&kj%Ag@WK};9 zQf}sR7J~_c8qBtv>N~!ui4VG_p$Osu*3+!Vcv>~~{pX}wzW$j3Z*6^_4nkX^1ER$D z?|;ehxLq0UDfV!bn<(bbKcmI$B{m*tdj%C2PGtoycEwgUpYFz;6=Y)Co=w#e6*5X+ z#r(mhXKMfZir_6i;{0})Cv&AY@JP_&s*rqF<=?bW%MXal1L3L-6s0x-;U~6D-Fxa( z>m8I~=(aL2Qxtnc+vii?8todlxcF3^=ep%N_NY8dJ`66o0$i8m6gMV7di>}1tV=$5 zUsuJH&~3pnV5k6)D2>l}+SdLb$#1H{wecS%CTt!@X`T~VA>j_4-x6}(o`mxtjEo$e z8cq@o@BhZ(x=Z7#4`*@GGcgH@p%+B=2k31xxH~SO-X^|DU1$^3^pmPM1Si2G>`1zG zi~`b8#U3GsV!qn>?0jI0&nuA%GNLFlyTJVFf3x|2Kj6!}Ea}2u?4B$H4t5Mr13#ke z5*X}&UK_RBh~&tqilG(O^Y=fu5s1)UVg>TKGCvL>%B2^3!xZ8Yw9#Dx#>N31N9}lCK(9Up&HZ|7~0Wk>$T$!^|&bJbKxnlMdCe zil7^~NXptC!$V+r%w&6W;I!29s%ao^$}Zmp+sZaXS@xn(m3Bq7=qAsjG{=$P0J3i% z@r4K0HK;99w~gJ^{@2!Ka>1Yf^1<^UA@M_^ZS%!JNR`>jfFPau>$_ZB?vV%3so2da zKu@Z&`3<$A3%H^g_L%;@_+TCWSWy#(dQol&Ova$}*f#XM5be1CEwQpg@)Oy|6*3f= zsc`=PQ6EJZ)B(;i0bUT$`{ zt9&L{E`XrUA&h@vmzrBx`Ty8^@2DoXCVW&l#1adr0c;deR65cHsfs8NS`vCukrFym zr3#9u2m(qAT}&W>(0dh>B1jEIItU1a-aGtu#B2vIq}Je1(Qj6~^$%Ih-{#92bOcaw zKBq^CcDb#P(W*E60dnMNip83AwzP;3bKwI|WZJ!)BGWbK8ri>y&U3I^xUc8BL|w8; z;3_j`nDMX}?nzzy5kX0*`wPfX|I;9!wtS6ZR0b(E)OtR_he9K_UJ55_j+oY1p$9TM zm2}O7N76*eQ+ngvO84$%#mP%rliR;K=S6=R3Ju`Pj){rMA$Oc-Ytf|y<4Vd6zg0{A zOxr18nhfLBU_gU2zVkMlxxb_r;BD4lLusc+RHgDjq+Y0RI?g~;IpurSr21Qc2~V1! zq-5h2)i|phz9WE!BtDZyI^J^^Qd}I)9z_ z?}d%GxGe=%1INZkEG7_iB6OZ9)v(NH7!BH~?C=N+cf2^pkzb^xZzE`CIP`9Pe0==g zwSd*8yYrhscYd8JVfMdo?9t7bU+rfa9u{_vO>^Wi zXRVGSBxiK=V@>pp9dQYX+A+2%lXq8C9c{7$W;DjHA?n7^H{DK|fVKK?4B7Fwg7II= zC8KpYI4;~2aYZ#dG&E6UXB)i=*uFgxT$(*U;n6cK!=HI?<}|q+RnWDu31XMOF`bo? zGQsVy4OrduC8IkOjlHGj=pS-?SG%85?eKJraUuTQp8IEfvY&NM_|kwVe8%@I$@;@p8g@+W$GcGFXY{$TH7LoR!jV1M+L<8HO%BEmEa^}g; z{=Ih@*~F`E3>;jZGn=&esRX7?*iuXp4XC@#X&;cslzmW7vT+txCyBm#g|pFox82{LX7eWN zygOr-u`C3;##{Ex@t|pB&7KFX)aO`Q=9s^N!IiA3;*?r zbTX_$;Jw76j$;6x{MY5co8bo@=x|?@Quy!hLU%Y2yk~AB{D=Jic=IJYxDBP3&Hw8z z{y%ez!RMw9{P)uMATCkHNq}CaB#I1DcyzQSP~q(?v^Tcw$;E@-i^kB193i^EM101td?~ncf0v3vDnbEu*{i$r4Be zGS{b|4d+Cx%==4R3P1~8H##}?=a#mI481#B4lvl>SeF4EoF)DF6a6~}sg*x(A2j!X z{A(lnyyM7pp3!yx8D$1yu(-^zh6p`P&G0<))+&qklwqT(9m;?ae=%q$@?JiuT(YEr zhQrUxhK_o<<{@y5&{yPx&eA6iEEpcZhl#&M72#Vr;ZH3r8Po~;G+9cpLtvws@pyds zL%1g>Devj@)h5MW8W_}~18BT$IQrb2XR`NIg{Sq|??&o${%s=bcc_7OYYx!O?4gi^ zlLZLH;9(d_T?4`4YM4HtAr?~_9;KFxM?;m;Kr_y6k*_esnjjSrBVJ_L#Y>sPFsBN5 z%S72{2fd0v4y5Q6q#HOi3U?MeP5oH&4FVt5f5^OYD%*=J4sx#*Pc=17HMRR(TItKO z-4yvoFo$6kaf|*7DlFfkgVVA%p9gU_wf=bOkk_ej6hD9RzioF&n;L3C(Z*)cr&Q=g z+?FSP*eTH)>sl(4n1vOq{V0YmK$2x@&uGq;?!Zn08 z1CxFpnpER&fN9%+>n7a^OatvG)l>$_DzV!_Z52B+w)tQz7U+X{UV-a0j21KtLK6ic zuF$UbWGT;0?Fe22MP&zlz~*fPQY(jSL5*h(Wl1&zY1U4=8tOBiqROpRfX}u8abx)@ zl?MqpA99RtEsx#$l+hmf+3oHWT1*dNG7P#sDrH=AOq$0D$S_E815a)j73QRSNu}0; zkk)C1NJ*K*VVF}_M$KOVmlUqO_OA6m41!`B$m>*)>(B=<=Xf$dr?$L0Fw<~6Dw96Z{?9Qz5McKiVHq-N(b9HJ}x z9cifOrvSyn$mn;}v3i~uFf#+ssnXSYeRCTK#V=NpT*{Z2Sia+J2|<)0gjS2AU#05W zmR0;TpeO0?Qgkt;gx>q(?pf3mBMf>_I;hi*hK znknL>8)XaxZONlj&>hG!EgwBGaC7y$v53P@WtNAW=7{P+iVQq>GCz4%TuB1|sygDHEb>A0?1;f$%`Tw*pBmPer@Ld1f1?3h^MUYK+C;oC%>Sv^=GI zKyP^6Kq{}OGWg=H?KQBqENn{`UR1=TCqV@R;fdj#^+<@Q$GY7hV-c9GAt7b=t{aT# zBKM;jady_BdgJg)!xo_ve$JRpHxgWQk+R zxc(1M`BaAbhO8-3ql(UorPc3T9#N7}qk$Zp$wL{KKJ(Z`@KdP8KP?Y^9; zLnTmBoad^JQ4xJnWCb+=NJRI;z=WX&M=w&Xd@P9?%A9=0t8^ptpeTN$qVr80}zz{BnCPDe;zn56}VC zE1kv2Nui!_&}@N*7LUV>Z}hG}i^QF$wJ)6D%tXw)f)Oy?I%ct`?Q)z0p_oTtJv72s z-p{Ex2p7T`j35;`v9P^eW0_Y9V_@Y@Z7X=&bm{LS;+I7@`LLS5I+k89cm*ZR!Ae3Z z%&6h-D^|Y4nE)`8lwpm#uR!9wq(?VDQC4Tk`R%oo$fA4YQeU4w%NqznVntUrygUOc zfXd-W(Ws8zOmeD5uF%uiK@ZXMbJ&p_;lf}6T5zv3b@MDX=I@Ol#v-dkA%4XJK))GH zFh|@?Q7lOiQ0cJ45C~);1JOteyu*|r&j8DX)HT>F$A$LXuDUfRL&yWmzD=|&;x2C2 z3+N)13#d%xOy+fll2l{k!?mf|_ZZ)48ygG#=lMsuxi4i;eOdh^bVrmb5t%2n9@Wx| zp?UcI^q?WWlNhKCj32Fwm185WU^xXLDo`)qA&y0TObuQ!W8%QQS|OW0G1L3F7NsdH zWT$<_(HgFBb3DeuV-R-0g6TTM0b0HM(&n539TGk4dE@qM4}N4t_ie&tOmTS)i-+jC z@*Ia6>3RsyrkE#gDoj`swR56|KIWEj*=+ID_OdeE7UdM(gwM1Fo}hO$06MTz6Rj?=%N*ZYRRWR;@Ra6WpYwZ!#RXI zo$%y4%>K+l$m)Abw56voe5KuYPd6S;l3fwkzQiLI7mqR;nlDd9d0%+*@3_&2lOsV* zN%kA1$iEWmY;w%`5pq3A#uStvC@mM8e#@v3dgX|Aj3I#)VV)0E#G@tM^U;ZJJmyAm zd9~#nkySjgMv2kBf-ABJ*{em>3#e|aOsaeUgO_-UZ#o!0y17!9d!-vB$upn%{nTVT zBASw_w~~_8IAz*Z-b0~zN{#I&%7?oxRn~^(WG#v>aGP0u>I4vE=NAa zEd`zvuBU`fpu4$C+0qTKt9^kbvPe&LN^)3vyt*ADu@dt^1H+&CuGQSUiP zxi;Erc_@YmUp7BoS%}u?b=@r`(v5~**lYYAc^v4qSb z@<3$Q4gBoPACgR|iu?wM=o98^N|2|R6ND^FNf8JN*jy29rjW`L5DCSR+Er0mXwDSp zMx+|{#rS`*e*f)8pX;Eq$lmeD=f&C~>y#E&uA z+1WwPX9qGqfP4bAT+?d(&ve4)3!U1K0C3hUh8!?bP!RN)FZxZ7lSXAXgi(L!S;_>f z(nSn48|pUNErFq0EBGThBOAk62&Q2TYxsov=3Fzb-%?$^|`mh0&Li2%^5>(Sdw^M&yk2WZcq#-RI+AMA#!~ zqB?@ti7C(%;6t5R#tJOq=+D#;0|JI}WNf<%pNK_tNdTF3PZMqagDBsx+^#cxKfOYh z_`EliDwL9`#jO((@1t+)iHLu75rkD| z)F~8Y%SL*%_08)_w2q!4uoXO}e|grE=S@K%h&GL9Acegz4X) z2{^*n-1TzKLJ+xhG6ozwEG&<(OyGbW>r^1QCN<-|yw^$wS9V@aTkTfs?PJB-xEZ+%Em-|2AaVATBq(rfksNt4_EIx|peGCsj_XNXj|+65tE zH1rp{kY)u*-J_P%;@*i39%!I4Y6ux~!{m&iw%kK_d27o~<&25!`#eu&*HuwzqLa*#u&O-hf75xesKi#8a<(4?| zGUk7MEbDdfg-(q~2|)j8{=dF~&pXy&w^L1(9RJRuWQJhS>A{LY20qXibK*iKXg=2g zAtCprOCzw=p*rm15=E-w)@~peHbY9{%mb7GJutRS7#uROL zgdzUrb6M5Ysi8R7dkP7Uk_nc8?sA?RMT=L0;IZNzpz1t*D;p?IbOG+sG!W&?q}0?W zT9Z5vII&S-n!+L?%#vfBF+g#E_>JENG^c`SBVGrTZk;AtDvMp_Y`8SjG66kpoi#1Z z-To_k#JU3|@n7w8Xr`2nh~WGIIXW@>#CRDU*kOJXrh>?SE{+d@FBrfCgcrKy9z{-* zZPn*QZLH8}beKpcB}We6D>s*PTh7dBmg+rZcKV8PCdjk(Kw{+Sii*or_W6D_-s2&( z{G5>aP;*#Z-0ZCkN?#mr$+UoXd3IGAaCB{yIfNAWfilOWT-*vIU8_KHv-Je?O>Kg% z@;J+l#~%THK=OYgumi@LPg5q<0W2ayyu8h>$PNp33JNO0_-~+RDEbHx7SC&eCHj=~GXEt&u6aw$7z4WF45b4p5Pqy~EgXTgVOv0&6k58y0p zzyBicL|*440^~eQBKI}!^-ZIhp1hrNXmO*__U1aLhFoV1AqVzwax4x>q0kb%x7%MLljFU5GOBTN-hiW0UT?WRKkNk;@w-ppMqCpC zQ;DQ!?_czSSGGs0fH7>|<*YD-Nt7-)cZuNBO;%CyQ#XstIon{jZNT~IeO0U?DA7;p zX(qS+T6F8a-39})AegRmzF|1FKlOkVSjTTXpYGOd?i=!j_%iDtPGvTT(pj8FZ?izh>B^xQqmfZYl~wED5Y6)fG6sxo!c4&9hsKvB5Xe$7UU-0g(%(FW=SP5bR)0_qMVVyI{b@*5`Q;L%p{fF_rmsat$-6 zP0&A=*Zn3H>5GqLp}&cLI0Y7AxkC$DfOJ{`2EO^4;*~azQwhzeH`9B7J15b529Nf#MuV8Mz@UEaTa0_6E|}nft4xXz2`Tr@S-a|x^%mE)t+lI z2+2XuHG@HUhzsEYDGLm#dpiS03vsSC)YmT>M`Xy|TzSP{2+pwi0rxvWzs??+Fb1)? z(va1ul3DHrf1MpFE%@H4n~z7YtsPpxpxoX#?q^9p=2SZcHo*Co3n(G@pP_?w2bG3N znGZg1!xVYUGoYzI8>4%{RJ|Q9-b}GeGX;aI!`+}6 z&)Ql)F9zpWe=nZnHu5em7>-c+qj&MmTjNs{`^cKTnk2iw4}_=z_BwBwF=6zr!9vSu ziI_d`Q*z%P2)R!?xe<9kxN)WN+53`CD?SBs={Y>U#-1xrklS9mg-oWvaOxf&J!Gi69cHn#ID zsr??23&#;*0VRCkDuL;vXN2L+?MU?%Rp7XrU>=rOpA2(E3)Zq3=)$NzYu7c##NjP+jD=^m@k^y( zo<}(uJ{;eaNWQ*eK=tquso1&|9_9=^O8=T@Z&@L~YE&6tbK$vJ>)@D^D~L9#95T*w z?0f4YSMA17Bh%$uiZ4tykII2u#dz08VwnF79p!zQYc$9eY^Ea0sB&5Hxct+8VWmEffbL(P!j@pi|bTFmTe1-a?2wL zg)kLJEhL_4CK>m}qW?NE2j|6^qTy8N%SX(^5w4@+m{QU8KS9g#4pI>n0U!}s5>hdc zLwwW?%z*Rk=mX_K{Zf&rCYH1%22URAP}Y*gAdbzgQk4rnqhHQKFYWKL13sBY9B13R zdy1tmC=@hg6tZpd814f_!F1GwQwTNe{i}})?)k}M?xd`gz;2`a`GlDSfkemF;NFf= zw1_n(;}ppr+5k)7uxdN;4l|I#su+)-^uUDU>jfc>x~GA^s}h7f)*VsqYK1i|=2B36 zTcHF+UcZONHE*u_X#;4UCC?BemzKb(;)B5udVI$ToL!q}OgaAe5hM!tT0D^b@CMt~ z2Y$7#uzPBz`y6n4lskwG({;--3L!5i#-Ti9RT``~bT;%yl zhRwZNX=ZL_J%C>KSJhk!Fj}J74^wZSQu7O^zC!HCdpxFSgu*HcqO{OEL=FV*J4NHU ziw#kSO_%_siv^Sk;S1C`u(QXMu&fIvj%C2kOE{+u9%I#RH%xr*{E5QBqJ%2W;6#c} zC(7KT*Mq)Guh`xEVaKIe`0>7V)$=1#eHtd1&9qn!Eu!vNvbsg10E#eq4%)aJMQF;+ zdK#{&_7aO@RT_>Yv@&pO54mI_Uov_yKgr1B{tN~QTT#Z89CtWRU3ZHF2SppSG(Cde z!N;Fk0sxN^Q0TK3-bIg_v~NLj>N+cYX+MTzy$Go>@Pxn0RG!M5Fp5C$Cp?!wJe9lR zrw3xMQ+Uqj5u;BD!^SSdSqlKHANMX&Ek5h7rnq z2?9lU-~-lh_Q6xCggEkuqsK8J{_M?+(gk* z5uIsu2bH0V3)eEekK>rnTQmQ>Ac9r)mJ#eW{p_`0=D1D+yM|W$NQg(WWBq;k{O(l-1p_Yvgf~rWS!{K`UUG$%+y2T~J-36mDoN>P^&kuwIk;;=5fHyLq&; zxhM4I`x6E$o10=KC+bwiQ#Jl&LrzDgtW}H^Ok@*XUnD#u4){?xqZ>Yy1dy zokygt%|pBptI8UhP1{03_wwN;>@MdrDLsbpnzXX~(h6Gpq6i%}hK52{#555@DZuhw zZUJhAQ<<@6MDxEN7LvM4-yx8;ff70HW%MMTyZP+bemxxfw2Bk{3|W`tw;*cMH_^2T zm19R)P1j^a0rM@7XVySaj3%9O}|B(0> zQbA|o6DR4uA^pY3wY56Y`TqQV>_n#)ndHq{Jd@wM4UTq05i&9U@^WeVLjW&+(fGlE{Wsn#$aI)w;TXfmZ(cC=a=Uio z@NFnvxV**uehuCy7zzZ&SMv8{9)vOP?Dnaze!6wT=9nd6T1=qro%QGwC!+Tt2IYLr z@voYF3Yh||?VM=y-hY-VzMrPM-K_@82~6Si^!Yhaf~zq!f%OvdcW}MKY3?iaQwOx} z{4xT{OXlaTkJNvq`bc}9(f8jtrKpSF{yJhQFLbov^B3$GC;r&qM!#=xAHI~)2RUGM zwROVjfBgFQe_mh()qYwRAF2O^UwrWcu1CM`p!i=`|Bt`=|1Y{9;`~1>Z}2(V*aX@? zmtN+hOenifUfQFEdc{0Uo(9jQOMn}I;1*{83Jo}+BfERCK~md%YmKpoYOk)qV~zQ^ z&s`tD%# zzJP8mko?$m=2*yYb?eMKKTdvqw5r>PC!K&RluZm6hMd04S_!y$w*p0Oohxtt}&e2En;Q1{8>M3q>f zsg9(d>YuZ;YHhQ4^iK2y#cqVZ)0^P>`q-d_9{GyB!~u(CFR9PDoN6G^NbZ0aco!u; zvG3~5trwDPM{0G}OAeM6WsQw7Wgptjsu8jNwh+Id^yA1hsFLI0v1D)CegOP-mTrU$ zGQJYky#t%027@*W0EIvoi0@g=4U~y^58SjIEPn1hxX?-3Nc1vld<2Yi`-uyN@~W4Hs%^_yGs;oM(Idsp>h7@=?OM#vmPbm zd=1tWsW+3@!#{z+?pCvh%z6VQXq+z_68|%Sa~!hudAYX znHMGB&g_SADVM1rsERG?t1Q7z=0;^=m)(Cv1&X+@GIKr7Ve3klyzjm?swZ1%uN>lt zkEqI#BkG0QI)8#%H%*uRP$w5F_34^ViT>PN1FM}Uz5UbCduKq>aZqGu zwyV*?nybbNBzw(-!i^;Y@m7>K{~Ojs8h{^7bs8z>F-bUIZZAA@3^>f-mlVX*RqO2O zeeY?{HorCKls$ZFY6HseG&x60%&S&f>m{SMtPAuIX&=G|x}MNpP{KrFU<;D2KN3AZ?muo&~nsdvA_YFaQ0gZ@1V#@%hR7@!sZn6qrp@81YKv`SP-( z^yQu1j~6Kx`laB29(DEFPNK`ck3j19B;GpzJ<6<|=S02N_7eMQ&2t`+TAtjD>NPIT zYg|W_OH7+$%X&?fdrb=VT(fotpILg|@62;JzSTNo{dT%ar!(S7M*R_*9H&(M+DZQ3 zC&Is6xy+9veXgEI3&Ot-OIvJDm?>G+EF0MPO!*?th03Q|JUf7jE?enja9__lF2z69 zhJCTZq9(ej_B)H9eDCK-5UqU_jeD@4Sg3_icM!1J0Sp};XI5sv%t$3bowL*Groz|y zpfdxm4gu0PtF2GjExG81t)*V@|9$#^#UBETf5hwAS?2vO8g?-_=J6<@zqmd3GUMH9 zz21VZnPWp3=bu)jV%<`wx4VCzK*&&Fxa^ez0aK3|>Whik)!$zqWT(F1cxSH*d~{}i|9naPv>a73 zkUjpNmVsls?1^|UBn_7FfkdlLEEnP&Zk?J)})#X5|QrfE23vrL-mLi&apxO z;wUz7Kq0)LGvB&P#)mD*#|>sTB1F31<4dM(_ed+z`Y-1GV?i>(`cn_;zxbW&-#q+i zjxTqTjK1Kw)2S z?tTdE*!H1q-@orzoN~wgj}N~2^(z^V!x!vGf+%Yo?vvF$)7S9m@&>7ObN5##$T^R+ zAmP(-m$}9t`-GcXFyPyiIl8*wwUVyhq7qwa#o@6A4T}cCz4m#Qn61wavLrJp}xo3%kRhm-=V$L{m0BT{~P+1E0QZwGks*zBHJBY5_n z?w!%_{Q9`VOuE82YphVJ_3x@t6@^}!zSU^{`zQ#dmVyBy$mP@vaR0K6Cap2C#kz|G zLkVx>A4X%HsR}$>pXVfco4w03Z?n3Ln#cWen!h&TWdhiL9|m-4{Pq{44#Mp2(Qkhw z#e8PQCBJ8Ix2Gc`N+iXbr(|okX|=(K$*^m>P^G5w&sgjLHA<7!Vxx~!;)M7%l-1nzW?7#4;7J6JsxG0pGt;ZsdWX!4 zGELm=|1$L3L9ud!-Swb|^yc(FnxS~=u07xd*zY3x9lr*}T4-l53#(4F@$%&aC2JLs z#2drFur%Y1=M7eLL;;|n;YWEjA5dnC(D-IZ= z91BmL7*b}y0r~y=JbL-LpgyG&z`zrNv?iq;W&^r$t^Ma~CQ+VcXB zUOIs))pNL)S2?JRY2#X~TM}e#c1oX#c<*{_f!XS5;Fj5gXbmUa0Ty?}Fnk@~9L}xt zki}!(rvqGXU2sLdOU*B$+O$pPO-ecFe8$_( zVh+(VY$!b8O|KVV%FskQ)`jylL`wP$=b2S zc|@a%UCL#1_N7x8m!j51APx@bIZiQWX{L2Fcz)I1QmqYT^tfdvf_YgCx3loL$i z>tsGu0(jhMNNpTv9-tZb0y+s1=Fl_un<@I74x=gf{8*h^F4Vu9*vyRg(()zd4FX^n@k$HPkCV>E;15}5ELd9=) zCr2II-}As_+ugl4r=Z1asl+5*AlbwFYf!+&;!$oM;jawbea6yT9jCUuZO;7+;fSI! zrFVJ@^Zf?!q?)(h{pX6GVqG!@oM&I2Oeb4pnwXfN+D(k(v@XUG%3yBjbHm3)`|e{- z;5j0pwlGR2(QN2C4A}zINl)Q0+*z_G(u%8wSip5R_Q^w9ei0M2@dar@1L%+t= ze8fTdQH7wvzaJ=*m_ZL+ir&OSMNpm`rHB+pgB!{A6N$K|@XGGl{*oQlKqGjE4dyX{ zRkdajSsmSkolFBjy=yV8_}fz89>`nC*AK!k#s(qoau|Cu#0WknlfeWzIBl###T-o6 z;sS6o$5g7D5!|5gK82fQEFR-sQDvmSWJB#BEsAw>NPoG1BBanr#TSEi*OW1aI%)l) z#pDtRow(?p^`TpqR+FKM1R;qa3DA*aRWQ)jvueVq`$#k72kz18q>kGRend>zzlN^G zD3ads+PwB`6$jB1D?jYMJpEuiPOz#;Y~)y~dd;TMbrp9x7A{A1*N=+afM24>50Q{1 zZ5lvvVCvT7=L}HsT(1}KV$RR)N$yXOi9z1$Z}gqV;B75a~!Q+k7(C&M{X+$fZKQ1uiF zyj5ucirDZ$X;3{5Xg;}d`@wshiG|w);G&Kb4sLCriP=v;K?l_F0uf!H93L*-49W;r zjnSffQh~}8*qKF}Fh}4-)VTt^nsqx3O$-^&52yFql>Dfs;uDMe7-W|?g^e(@u+}$; z#&oKZHf=VQYdH%`7HZBPX(&}0+g>ag-09RU*&>lp@@wn*Qja;MzuJEeFKK>$ z>o?{r&;Gi*7$4hbwEiwlq2MzWiD_@35{02(M@MB;WK}bi3{9t6AL=(U=Q55n{d)cb z^K`RRX?SP@N7}8e`qW39-8pvU8lOJYUy2>10cZ)zd&{JxjwA>01&RBw*a+sq9v;qtjh41YE^?)sO z3Y7gBWM_=wY&gddA}^}*IY}&6C5Cep_K~a&2`4yH+_Hz?K$KbBB-fZD9O4Z%pobX( zYN(f6S`CpP(w|iBxwTm@P|FnDthgQSrQ5$OcaIA&_gV zTmK0H(Q^jB(=&G%pU&5_iMI_rXZoGRyQ_5vB8k6!pdNA|X6d={cw^CIH6+yvOu-1s zdrYG5&9k0+7C$i;o7M$=gIvJfzaxv%fy=(>WI`Z5Vf}-&4kS&66O<87?{HwS(uV=W zL=rh?;*;ud9~i$f#ud+&fvp#UC;@(>&9_YM!?nmAteW!q;~s$CS?;S?8JCXdpLWF% z>PHjE#YcGyKWUY7(6|F7tQ{B<6$Ck$)s)JrM!GSU_*w`xHMtG=HA{1;-UJweqz#L~ z_b6LtO?sth%;J;d7CStkZAe*BK+@~YHVKGz>eTT%q%l*4cewWGmtxr`oSjC8hj{XA z2(F%7O7<6#Nl959J^dEYfNmP8Cug*cI~7z7?z!(So9%5$NbW?V5SnNjaRB7n11cT^ zV}Xy#etH%Bom$?{zfY*xO0SIk^k^f)Iyub7!1DWAMOV*`y!2O$Xv6&5Y}h%``b_FI zPl$ z!q*y)?g6wt7>0wU9jQzV!Gc3(2YDRZ{0tu|EA2!C!LO^Tw6OEpuw*nbmm;LjLU7>V zCav@qa&p7ZqE>nrL=21u!6gb<-j!!`L1~0n)JgD$^Pf0?fJ_Xx5EFtb(N|yw%1P_V zjGX@}5_yL}2bUroCOM!89G?*Dxa+AFDi@=C#r#4yJ=q-m9_S{)D|K6PHKTFC7Q}p8 z@qS^kt}HJ?g{0eR_Jj0u8pb%LlXZ8SGc9zYyaLM^cyxa_Jbz(!m{pC!+6#Ny#J+zj zA5N74Sm)qL#E4OWO+{mLMXi=2G9%8yx)+(lGB8k+%b@+pvbFTbt{k2#&&d++x!0M$ z+MaXXdi9&ZZX4PrHoIcGD4=X*RkI+!Eu=zi>a(&|x28JiMg6?F%!D3~(Q~fWkT(!z zZZ7fM(&Dv?@@`M(xX|jR_4!5o2w~5y2!7yPF(L6qeiiWsRtEb4BgZcZn@BmAmWCtq z_-R;RI#bkcQz-+!kY`?4XDy&%!pGY0P(inaOw^BVD6AP=Y@!e(boE2JG_;e4cr-!r z)eFOHL4I3x6%I$DFbvbQzA4({uebFpBYjgQ8X4M+%90ZhB+-V`htYlH0L}?yl*ofB z8o)KR_g+D)-FRG}5-52%cN9Bbe3cM`V8u-lUMu@_Q)o8N8tclZ1R*wr=SMO6uy2s@ z;{(#&(j9{~1|=K9q|kR(H1##& zoJf7{;P#?W0k29pZH;eEQH7}9o>U&deU#4&XJ_q9k7JYnI9MCk9-ofjz@xF$FW<7=Ziy5Ds%Ytm zSL7(hhoV2|A>buaob#>kl>koyj|pi2t#hV zT}b6POqz`_D-rH*cRcartHyYTD|JaytU}kz@_cHp{&y2|gvW}sc@xb+&R!5LMnl&` zN;K)7vIu|CBPNsh;et^Al52F;JydcS{daVqNq@;mS&irosYW=@n{?LgE91iwzt)fb zs@X;jarWOMej*xRsDgXKeBJlu1~}$*D|Rh z)}7Z_BsLAig&PHnCv_Y9bS<1Llj)5_H_sSqr9I`e1!HK*TmemzF3(q{TS*ord0)>J z`R!PCa-QWzS*Zra7+CtDV>6-z%{HAXmT!LV)=)s7OJJDx-kK@!{PZ!H%bZZ$2KYik z(64|DA$Jj_$$^y6^oyt>*lMhN+?$zjBeX!Ph^*VMkM%glFk=ky3N1(?_PV?%%4|{) z6)Z1OrfCve^HD85ZSD?p#<=*MFgJ_}9`v~x_1qj<=`vb7e^5DIs{fEz>!3uB<&D%u zxTm^Wic^CxZZZ%bnDlhW!E3*!zzQ0>y;%Ol?DUUbt62==#4e?sCKps?HZfVQ zJESODZ!UjE@UPr?PxBmEn^h2oSO zepC5qqh%oPj#Pk^xFIck5?OcptPP|Vt%${aWKNwdUA(C&{I2Pe5zz!E+|kbBXGmdG zf|B4GT((Io8a{?Z$VVzK@A8W}A&0xbIxdvJH)dU|AYcf(JdNs%Q0~RF&|#rCK<8=J)A!mKD;LNr9UlWioFHJE2Oy%~ zxS^oN@AOs-^E6r{-(@bu;#?zJZ|TOA#kmNhkI7eySVu1>J1I;ZopYx`?H;=zc5N2- zkyGs)|NW=&zWBU6<|m^krN;!c|4<58u^je938BquC!DH%<>!Uz5mPTGJ#=Av<`R}< z{o&#IG{!u zNYe{}!9|l&j!5l%x!#-k_~-*ZzcH?)hlaHnO@5e}uCr|B zM!c`$$)k#>sC{#G#N|CQcn#ZoP4=QbkZ$l`L0L0&!)DQq!f=xq01Z&4VyQ}W%tnG) zEIvS#t6<$ORzl#|G2Fd_#+~bYfI3`p8dp^eIm+OwWc}2x=Bycr=__M`x?GaFoJoE# z#e>nDb^1HypmAxM!h`9s?lD0OMtuFAWxR7K@&%qC@8|cMb3hHyMj7Au-|m_YN(BLv z%0x4#($T}UdJ~;oTXS2T@6VLr^mz>)yDs@S76|@av$ZznE3}(w6fJl!7Q{FVQyapv zDqIZajLhA7sOCwp9Dux*H1Z+Z_X6s9zjLqkt~-bVgawN^>WVB zq3ON}h+07KZF0#1G|62L3T4?yLHR*UDd-*;K7LleYzEX4u;L%Ej5^NhG-N`@|J zDuGWtORj`6e#?uHJNpXLl=?{pAuG%bEY3;a&f9TdX!qJpQeIN(ft^?DznYv`--8Gu zv2^CxxqYM#akb^+J=~TO8DCEaCrtOZ+`3l#Hpbm|@EMB?9_O9%lrI||qu5On- zVpyJa>{wOa&(+D~UV{}V>AKPbzxm^ShEQu?)^XRvuB*bDN&s??qTz4Jg4gOUSSrDER|@!u(B2g71l1?ha$pW(_R9SL~(4O3r&rPS4G@ zmdXnUJnQ>5^E$$6Z70ut0j_9onP%Ybl=C^mpo{jWz)toV|EquAwv6x5%=4zcgZE$T z7tCZ#j;85E8xL;GdPumq-rDLc#B~A`(mTb-WiRpFSfSG=7&b6Ivm>0hA-^%&LG_*( zO8b%X-XE4TTLt;6VK)8x!HhzvaDZB#Ed5AG)As%QNklv}hQrSKGS{qy6SMJxFm)e3lB zo*Z4pg{kZ~bFFVK1N}cg3&8VY=2!DI{Fxk&Ztcw{A5|)A{*Nd7iVJih6|RMc>?8Yh zTGZ~VqfyLy1x&ddM$@@u9XyaCwBG89*40*g911RL6UejkaplIwcb%w;Cd01ysXdeQ z3{b2QtXS{acp~pV=)!Jmsl{^5EB>$B1J9ZdTxESN^5k!-ffjZ57F7A|BhfDVnVy~1 z?)OYy{n_8%AVF|P>dD8O4wmN^vB&#{p@erFI_h_@9zm;K_&=Wf@oQsKUI3*VbS=z= z3$X4VnS>WIA<+kmn*B`OQrL^;t;Xs-MLgZIJ?C4sY9$Xt^t<|n3fA3k9P0b<=(n}} z+CD*m^foP4DfTBa*V=e`DY)=$7+9r18D`@5F)fYGknqP*yA zT<1bA`N8=8?LYV20qQY2F_2A%Cox|5tMC-_h-&N+2{$A5)lBknaZDfER<%JxP-&&$ z?{EP`5YOpA`ghUh(zE?`Cf0HwJ@Z!CrF2%WafVosul-;kWK9KSyH=FfoL;t2_hB!j ztC0|HMY~t#@6FY`GJ}gAm-o7`w2}DXR=)i$m2V?rziKGIUJ@)QU^8(`-u5?&dJ3e+ zyl1w=&s(-#1CV2Lwuw^qvjUawGwpuDsc*SAS@gv~S&`W*Guc~bVso?By_|cgaLDy< z(?9%N;VC+DxTx#RzIKWa;z~j=nU?pdc%;^7#zwD%M32s`^V-=Aw5g*&0O%p@PFb?k z&7Jvkrha~=?~;*yj*W`Uyb*s3G>EByvvP!H#P0WsT#Nsdi^98z-LyY1@sB`6YNvpE*HC*Itd&LIiUsS^M4ic6oBgQFT`YX%40T7Xgs z=eC>v0iQ)E3%FZ@9ZK z8eY~@(lWt0H@N8b6mns7Wh;lP8=1X4Vu|aID`xtl%;aqrwr$%41l|#!ELi~70#C{4 zhZ@|ed~%1z>kPaDxzD@UC5%VAu&a|OIS=Rk?D9i9;Z7i#qO}rz-S|bU`)rYYAEKB+ z#0Oy8dgVvIk&6c7e;Jg|I;iXi%x&G8+xN>Ui_|yLUt6uzTa{Fz>`jXKrxGhxGMASx zTeh(FOZ!soPS?&%KLy9^rHV@PPUR)#@@ywHLJMk9lQauMV)DRS!EY<~R{dQ41*_-07cF{bgh_9>7BX zgV}NU`BUPW$fSpnqx| z)Bw`kNi0fJ4X3L}3X*zBPR~v=+VcWTCjG7MW-n7pi>t78&+>%P&}kY@?fam~N2)Yd z!X?hYZrHE$gGm6ioNZr1L`)rQ&eQaxTYtI=8!A67Xk)vGb)7wlcddI}G=IG-&oWu3 zL_}wGP8w~=!FzM-%1rB3k?)IqIo70~&(h^)=0EK8R;05b?kgyH_*{;t%eU#Mu_>K2 zvZ{J6I{o6jO)k&`&;_Nq)86xM_-BFkaE^6XxTDUxa?7>ry&c2By&6KDQ{I;g&y z^ZQ%%o9E`(BPnXPdA5TCHl+(!&P!V4&h(V^uFf^@){xv!zwsZAk@I=;MmZHx5CoF^ z7Wi@7Pq@>`EpbW|Bf3gCvDw@_7=Ig?3g&4ijI?PgJJx+q;`&u6_9?+7x5XP&f%L;3 z_|P*j54_@kf96BGhMf7-kDXehV$FPSKjPQ{UmE-Lp@j7%=+ zbVZaPniZCwYk};TEQZAXVMrmeTho;<(`(?z;{PyH}&N_eo z*7~jATKr+XYi7^;?!DhgGPhb^BhaY|C``2&V$oB97-^LA**ERdAuo2Hvk=~``Xj8 zVgySwXpsIpQC`f;wc};RlE~!o8qT*(Tx&^5Nw;IEHlFe-Djojp0hs=dXAu#$ zS1B1+$HkShKpd1>tS?7(3SewvPM?f;6k0kw(q zK~TAhrd!t>`|6dRMS&}3IN;W;2eZ`O+~YM6YohmXp}6uP9yb^B3rU&qb8=wzjd*b$ zsbz+-1Bv}bN7a(=o<1XQnpo3MaXg_is3h0S+21hyvF zYG!68GA739h{LB`z&Ue`y-vh{Vs-*RLc$Cawd(=tmgAi}ca$wRXk%k^gg0zZJaVKF z1dejpe4;z$^R;}Znkpf}&R?FOx6d5z4R|hQzI!~00~iEmw*@K>)IXga?jp+L zy)6S-)vQrKa;gG&uiCS{6X~2I{>!owq5~v^MLaN%vgN}RZ3QG4;0XIBXKtp@X;Pj? zd?x!ky}#ep0`G*cPf#Oidh}i=MX3nWl}FvH9;mc~V_*O>1wrxpmO>;lUemJ>U|6;Z zx&UUbn8dml5ph4X2Y%!bT!yWX4M{JBqklF5iZU}soX=t3Zbgf?9(hd98eUji*?k*A zrHu6omey=){zyUF%9;vh+?n(CPT^-$5*F{&Tvt+(p<-Hj3L1<7$csFC!`PXy%UbHL zoib1ne7qK`bFKQfN6@*6I*?tsEx@z`3q~v*PXDS#xeuT{8|=2N4Xr3*J;-mr=sZy=Om1~2Ya_?o@3az-4q(;`<-!jT%P0k-%D06p zRfEm?zw0FWeKD_iot8H1zEyl{OXu#BgFjsYT74$vi3|nGk zW>zOb{(NeE)zxyuK>{=LXih4|xA_(1m z5-$TXo2Nk5Y=$4ne=a$Z^&kfrNKI#?18jM47Z3xN@V0#<{CR5xxD(~{7X4HbRyqcZ#3 zd$OD;2`o%YRsQ=0`@Azf-b&A>DiT*SE#)gJIk|1O!a63Y}IP z>?0zjcFWXpn$`0&AE)N~$vIZjGb3jY@!LJAP^gTt4522QklKl2rSh24I|{eS(d zkdrt#W0aIOH)bieAPO1JbRV=z=7UV@RP3|Hc0ej(;5$7u-niWze(-BfM}?~Q$IBI_ zr9Pf8n_5XTqSsBtxzwt0Q)?p4rMCTi8>sZ#HgD0Ks-CC!M;D!S z;1Y>K(iKDB$Ld8b=wJtoKYQI3DTzO@B?h5gX=xxxLTo9xX@j1f!~^_NR6pkv9F`4| z6{zWMd!-LS1k>dWO;k)pQv1T6Dk*7YfB0IRl42|ILALmMf9*xzwjd6G#3`6&zn00u zWd0HA49HYnktwgQHtsjn7x2Mi<)}rDTe#7wsK_+A9j&FH6y1*>*Ro^qbILE@O>Z51 zMEvQb({*VWTb`j!oThUf$j8|co7iRJ@c|;DJu6VeaqB^%r33WOq4_OaY?vSHu=yMm zGg}R5M(hiAx4fZFQtB;l`#IIu6O`1gyitK&6KZP?f32%n!mn?mqzUG& z9?KE??$wNJIo4co(=NqP`$MPRzs;mVDY! z>gbIp6puAey$a(1u@of-L0%`iy;mFd7H01e7JC%M$jqc>S((Tm;*}xKyg3B9~RMC0E6NLf{vekXG~5g zo%6BDIA}3Q5{;zG{b?UI(Fw2hqqYg!OB=-X>ZQq{ zBuIsT45;SCOOwCCOC%f;?xbcqS=e*udbUi>^q9=u=_wi+N+5C@4F$D+JC7v;$0Z+R z)wR?}qkpW`j@LiY3`!kYHmQFU^w(-X{F!O|d3SkcH;)Gq(vHk2b>iM083u?=5|6(O z?74*A92QN}d!zvs4IU9b1Vda41=zjg3D9Ljk#RCmjl}q_-5@;wGBP4`>tpU`lD2ZT z7CA<&{kh52+Jv3+9=9**`Evu(I*}c=drv>iJ*OPe(xWcW+k_3@=|MbwAy&H{R9P8x zB2=4$+{iGPB5)QdD2Y#}07Hnx6c1OFjWDB4IXD0#;i~qBOI@)sm8uYAa?Qg$8oX&T z&3DKPgD{e|uaAe))KN{>0V&pNz_M8M0bNTb6FRsY0!Isi08mS>fr6U=2S6DF98m7a zaQJurB2C${WKfr2G)#~=TC;0>SOS@+aZ-J5pYsfUE%b`wx(A8G6eW9FCU2Ge4Z z9fukK=VxiB2gl*`=~TEUMWbAX`xT4eamO&ouMGuJMc?*I9dn9^-5=czB7z0usnt)y z!`)fOhl(pTOg~RD8)*QqW`JzSJ@FUk##+p~yX~K1P&7lWAQg4s87r{@!bRLVjtykJ zDfds5UNPK*PkwNoAN`LJ_V(Z&G|vF86E7OT5rNT2D&yXjjzIGP->2f-mZnl)0wSqn zc&^tg_p*YbqK9zX@FeBx)8U@3E~4C%X3p=XaLBjF$L5sh;&fWj&zQ{Ue(_$~&{H1) z!*7>yzA3~J1K}>gdIUM!C{?HED@fqD-3m+uJ2=r(4LqeIcKsaC=b%nJn+-J7q_{6 zLJI=?_P#2N<;3B6_dvXTwX)@Go|Ku1Bcs+1J=(#2%Le@U19k)`+{G zE6(`*3EH3Qw}1e9s579TkiC#hev_X+m;6ESqRQ5wQ|oSBl#ZJDVxD};@T20mE`6RV zgy&p^AbH+inU;s>!jAb^7EmbpN|&*x13CsISUDX@WsdTx;)5>jC6C~Jsc;_XZlS4| z#xC&V@1Gf07ImZo#vj#Q5HL%yXuA+q3d%BUEA%E?nNuQ%pc{Wz{b2wjGtJJ;E2&>M z>Ey8^JU$a@v#{1>Z~_JD(O$(nG+YC_isKd3ASR(>NTq^;f{j$c&`jbfhsCF3GQc^6 zncC2n(uJ{Ll7&)AL7oWR0bY6=}aIzyF39Hvw)>O;Q{sRu3s`fGX7N%zTj^F@0mlp!> zx^U#ezkT@vSa65`T5%-3G~K%Y!0fN=3$PD(&aS~8(UnhHY_U4T)wj4RsHv0Er+ZE)xZyX$gN`1MER3uqoG<%J zcsk_KMN7=JxHT-h?b@>q~?dN#c0zzUk zzdqz$7;iX8I=^S_-#%OY#p+zGO3C~}SzRA1wZ*DtSk(;whnnG`{2>s6YN3GohJTaF z&O(6*JA!PVyO3C~@*y3a4*Q%9Z~8o1(1hTnhFAH+Kc>LBoMTXElxGogy#Uzw_)mJP zVrKW`78X+N9UNLgQEK$Dk2{xsa(9ED)=Z0;*)BY&+H(TYdsRTFEiy2Fuy7w*bPazy z#LL^e)pjfmJvUMYx3u)=aM``Mx$54l$Vn`3=^-b!gdYfN9UHq<{Ta7UO!1JkAF*-0 z7>f*{(rB%d9V!P7FyFm@URYY%E-oSA!ttF8@Q>-)vba6B!ia=$a#X!DfUW0pC;pr9agWF%J$T|)8l@@lE9tSrCQ<-UG# zv)2cX77RZN0*fq}(6DmqKYrtU0GiS~)S*)V? z#KewR;tst6K4x{&{`VwpL;{!6DSv$!rpO2W&YimO2Tt#L(Ek8&u Date: Fri, 13 Mar 2026 17:11:05 -0400 Subject: [PATCH 13/14] Remove IDR to CVELIST connection description Removed the description of the IDR to CVELIST connection. --- docs/architecture-diagram.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/architecture-diagram.md b/docs/architecture-diagram.md index 84df1e7ff..130ec0b90 100644 --- a/docs/architecture-diagram.md +++ b/docs/architecture-diagram.md @@ -156,7 +156,6 @@ graph TB TEST_API --> RSUS TEST_API --> UR - IDR -- "Reserve CVE IDs
(sequential / non-sequential)" --> CVELIST RSUS -- "Publish / Update
CVE Records" --> CVELIST RSUS -- "Validates against" --> SCHEMA UR -- "Authenticates &
manages users" --> IDR From ea2f06df4a1790d671057f92c7aae404e1fece32 Mon Sep 17 00:00:00 2001 From: Madison Ficorilli Date: Fri, 20 Mar 2026 14:24:34 -0400 Subject: [PATCH 14/14] Revise architecture diagram for CVE Record Repository Updated the architecture diagram to reflect changes in the CVE Record Repository and data access components. --- docs/architecture-diagram.md | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/docs/architecture-diagram.md b/docs/architecture-diagram.md index 130ec0b90..3fad529e7 100644 --- a/docs/architecture-diagram.md +++ b/docs/architecture-diagram.md @@ -42,15 +42,12 @@ flowchart LR end subgraph Storage - F[(CVE Record Repository)] + F[(CVE Record Repository - GitHub)] end subgraph Access ["Data Access (conceptual)"] - G[Open Search] - H[JSON CVE Records] - I[CVE Program Website] - J[CVE Repository Search GUI] - K[General Public] + H[CVE Program Website] + I[CVE Repository Search GUI] end A --> B @@ -60,14 +57,12 @@ flowchart LR D --> F E --> F + F <-.-> H + F <-.-> I + B --> E + - F --> H - F --> G - G --> J - H -.-> K - J --> I - K --> I ``` ### CPASS Data Flow Summary