From 5327a5b8ca3a6af9e7c0d7ecdfe164a9a3367d2c Mon Sep 17 00:00:00 2001 From: Mark Patton Date: Thu, 9 Nov 2023 12:06:55 -0500 Subject: [PATCH 1/2] Add temporary Emacs files to ignore list --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 7c30ceeb..8e05b9a0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ target/ .vscode/ -release.properties \ No newline at end of file +release.properties +*~ From a8422fc5cb5d7b499404faac567c5f087fd04b21 Mon Sep 17 00:00:00 2001 From: Mark Patton Date: Thu, 9 Nov 2023 12:08:07 -0500 Subject: [PATCH 2/2] Add updated documention about the model from pass-data-model --- docs/dev/README.md | 1 + docs/dev/model/Deposit.md | 39 ++++++++++++++++++ docs/dev/model/File.md | 30 ++++++++++++++ docs/dev/model/Funder.md | 16 ++++++++ docs/dev/model/Grant.md | 33 +++++++++++++++ docs/dev/model/Journal.md | 24 +++++++++++ docs/dev/model/Policy.md | 17 ++++++++ docs/dev/model/Publication.md | 18 +++++++++ docs/dev/model/README.md | 37 +++++++++++++++++ docs/dev/model/Repository.md | 39 ++++++++++++++++++ docs/dev/model/RepositoryCopy.md | 29 ++++++++++++++ docs/dev/model/Submission.md | 62 +++++++++++++++++++++++++++++ docs/dev/model/SubmissionEvent.md | 39 ++++++++++++++++++ docs/dev/model/User.md | 28 +++++++++++++ docs/dev/model/pass_data_model.png | Bin 0 -> 82405 bytes 15 files changed, 412 insertions(+) create mode 100644 docs/dev/model/Deposit.md create mode 100644 docs/dev/model/File.md create mode 100644 docs/dev/model/Funder.md create mode 100644 docs/dev/model/Grant.md create mode 100644 docs/dev/model/Journal.md create mode 100644 docs/dev/model/Policy.md create mode 100644 docs/dev/model/Publication.md create mode 100644 docs/dev/model/README.md create mode 100644 docs/dev/model/Repository.md create mode 100644 docs/dev/model/RepositoryCopy.md create mode 100644 docs/dev/model/Submission.md create mode 100644 docs/dev/model/SubmissionEvent.md create mode 100644 docs/dev/model/User.md create mode 100644 docs/dev/model/pass_data_model.png diff --git a/docs/dev/README.md b/docs/dev/README.md index fe22859f..6049d884 100644 --- a/docs/dev/README.md +++ b/docs/dev/README.md @@ -34,3 +34,4 @@ Only Committers on the PASS Eclipse project are able to make changes to the code * [Docker Dependencies](integration-test-docker-dependencies.md) - Integration Testing and Docker Dependencies * [Components](components.md) - PASS project components * [Releasing PASS](release.md) - Releasing the PASS project +* [Data model](model/README.md) - Data model of the PASS project diff --git a/docs/dev/model/Deposit.md b/docs/dev/model/Deposit.md new file mode 100644 index 00000000..345d2cd0 --- /dev/null +++ b/docs/dev/model/Deposit.md @@ -0,0 +1,39 @@ +# Deposit + +A [Submission](Submission.md) can have multiple Deposits, each to a different [Repository](Repository.md). This entity describes the interaction of PASS with a target [Repository](Repository.md) for an individual [Submission](Submission.md) with the purpose of satisfying one or more [Policies](Policy.md). + +| Attribute | Type | Description | +| ---------------- | ------ | ------------- +| id* | String | Autogenerated identifier of object. | +| depositStatusRef | String | A URL or some kind of reference that can be dereferenced, entity body parsed, and used to determine the status of Deposit | +| depositStatus* | String | Status of deposit ([_see list below_](#deposit-status-options)) | + +| Relationship | Type | Target | Description | +| ---------------- | ------ | --------- | ----------- | +| submission* | To One | [Submission](Submission.md) | Submission this Deposit is a part of | +| repository* | To One | [Repository](Repository.md) | Repository being deposited to | +| repositoryCopy | To One | [Repository Copy](RepositoryCopy.md) | Repository Copy for this Deposit | + +*required + +## Deposit status options + +These are the possible statuses for a Deposit in the order they could occur. Note that not all repositories will go through every status. + +
+
Intermediate status
+
A Deposit with an intermediate status indicates that the processing of the Deposit is not yet + complete. At some indeterminate point in the future, the status may be updated to a terminal + state. +
+
Terminal status
+
A Deposit with a terminal status indicates that the processing of the Deposit is complete. +
+
+ +| Value | State | Description | +| --------- | ----- | --- | +| submitted | Intermediate | PASS has sent a package to the target [Repository](Repository.md) and is waiting for an update on the status | +| rejected | Terminal | The target [Repository](Repository.md) has rejected the Deposit | +| failed | Intermediate | A failure occurred while performing the deposit, it may be re-tried later. | +| accepted | Terminal | The target [Repository](Repository.md) has accepted the [Files](File.md) into the repository and they are pending publication if not published already | diff --git a/docs/dev/model/File.md b/docs/dev/model/File.md new file mode 100644 index 00000000..9aeaf366 --- /dev/null +++ b/docs/dev/model/File.md @@ -0,0 +1,30 @@ +# Files + +Files are associated with a [Submissions](Submission.md) to be used to form [Deposits](Deposit.md) into [Repositories](Repository.md) + +| Attribute | Type | Description | +| ------------- | ------------- | ------------- | +| id* | String | Autogenerated identifier of object | +| name* | String | File name, defaults to filesystem.name | +| uri* | String | Relative URI to the file servive which will return the bytestream | +| description | String | Description of file provided by [User](User.md) | +| fileRole | String | Role of the file ([_see list below_](#file-role-options)) | +| mimeType | String | Mime-type of file | + + +| Relationship | Type | Target | Description | +| ---------------- | ------ | --------- | ----------- | +| submission* | To One | [Submission](Submission.md) | Submission the File is a part of | + +*required + +## File role options + +Status options for grant + +| Value | Description | +| ------------- | ------------- | +| manuscript | Author accepted manuscript | +| supplemental | Supplemental material for the [Publication](Publication.md) | +| figure | An image, data plot, map, or schematic | +| table | Tabular data | diff --git a/docs/dev/model/Funder.md b/docs/dev/model/Funder.md new file mode 100644 index 00000000..f9759897 --- /dev/null +++ b/docs/dev/model/Funder.md @@ -0,0 +1,16 @@ +# Funder + +Funder / sponsor of a [Grant](Grant.md). + +| Field | Type | Description | +| ------------- | ------------- | ------------- | +| id* | String | Autogenerated identifier of object | +| name* | String | Funder name | +| url | String | Funder URL | +| localKey | String | Local key assigned to the funder within the researcher's institution to support matching between PASS and a local system. The value is in the form of : `domain:type:value`. For a funder at JHU, an example would be`"johnshopkins.edu:funder:8675309"` | + +| Relationship | Type | Target | Description | +| ---------------- | ------ | --------- | ----------- | +| policy | To One | [Policy](Policy.md) | Policy associated with the Funder | + +*required diff --git a/docs/dev/model/Grant.md b/docs/dev/model/Grant.md new file mode 100644 index 00000000..070a1c9b --- /dev/null +++ b/docs/dev/model/Grant.md @@ -0,0 +1,33 @@ +# Grant + +Grants are imported from the institutional Grant system (FIBI in the case of JHU). They are associated with the Grant's PIs via their [User](User.md) records. Users of PASS can assign the Grants associated with them to [Submissions](Submission.md). + +| Field | Type | Description | +| ------------- | ------------- | ------------- | +| id* | String | Autogenerated identifier of object | +| awardNumber* | String | Award number from funder | +| awardStatus | String | Status of award ([_see list below_](#status-options)) | +| localKey | String | A local key assigned to the Grant within the researcher's institution to support matching between PASS and a local system. The value is in the form of : `domain:type:value`. For a grant at JHU, an example would be`"johnshopkins.edu:grant:8675309"` | +| projectName* | String | Title of the research project | +| awardDate* | String | DateTime the grant was awarded | +| startDate | String | DateTime the grant started | +| endDate | String | DateTime the grant ended | + +| Relationship | Type | Target | Description | +| ---------------- | ------ | --------- | ----------- | +| primaryFunder* | To One | [Funder](Funder.md) | Funder that is the original source of the funds. This will often be the same as directFunder. | +| directFunder* | To One | [Funder](Funder.md) | Funding organization from which funds are directly received. This will often be the same as primaryFunder. | +| pi* | To One | [User](User.md) | User who is the Principal investigator | +| coPis | To Many | [[User](User.md)] | Users who are the co-principal investigators | + +*required + +## Status options + +Status options for grant + +| Value | Description | +| ------------- | ------------- | +| active | Grant currently active | +| pre_award | Award not yet received | +| terminated | Grant period is complete | diff --git a/docs/dev/model/Journal.md b/docs/dev/model/Journal.md new file mode 100644 index 00000000..2f438e1a --- /dev/null +++ b/docs/dev/model/Journal.md @@ -0,0 +1,24 @@ +# Journal + +A Journal is associated with a [Publication](Publication.md). In some cases, the Journal may be important for determining whether the [User](User.md) needs to manually create a [Submission](Submission.md) through PASS or whether the publisher has a pre-existing arrangement with the target [Repository](Repository.md). Specifically, in the case of the National Institutes of Health Public Access Policy, many Journals already make arrangements to submit the author's accepted manuscript to PubMed Central directly. + +| Field | Type | Description | +| ------------- | ------------- | ------------- | +| id* | String | Autogenerated identifier of object | +| journalName* | String | Name of the journal | +| issns | String[] | Journal ISSNs - Elements are of the form type:value, where type is one of Online or Print, and value is the usual ISSN value xxxx-xxxx. Examples would be Online:1234-5678 and Print:9876-5432. When a type for an ISSN is not known, it should be stored with an empty type (for example :2468-1357).| +| nlmta | String | National Library of Medicine Title Abbreviation | +| pmcParticipation | String | This field indicates whether a journal participates in the NIH Public Access Program by sending final published article to PMC. If so, whether it requires additional processing fee ([see list below](#pmc-participation-options)) | + +*required + +## PMC Participation options + +These are the possible submission methods relating to PMC deposits. A full description of these methods can be found on the [NIH public access website](https://publicaccess.nih.gov/submit_process.htm) + +| Value | Description | +| ------------- | ------------- | +| A | PMC deposit route A. Journals automatically post the paper to PMC | +| B | PMC deposit route B. Authors must make special arrangements for some journals and publishers to post the paper directly to PMC | +| C | PMC deposit route C. Authors or their designee must submit manuscripts to NIHMS | +| D | PMC deposit route D. Some publishers will submit manuscripts to NIHMS | diff --git a/docs/dev/model/Policy.md b/docs/dev/model/Policy.md new file mode 100644 index 00000000..b01e7254 --- /dev/null +++ b/docs/dev/model/Policy.md @@ -0,0 +1,17 @@ +# Policy + +A Policy describes the access compliance requirements for a specific [Funder](Funder.md) or Institution. These Policies are used to determine which [Repositories](Repository.md) a [Publication](Publication.md) should be [submitted](Submission.md) to in order to be in compliance with its associated [Grants](Grant.md) and the User's institutional policies. + +| Field | Type | Description | +| ------------- | ------------- | ------------- | +| id* | String | Autogenerated identifier of object | +| title* | String | Title of policy e.g. "NIH Public Access Policy" | +| description | String | Several sentence description of policy | +| institution | String | URI identifying the Institution whose Policy this is (unused) | +| policyUrl | String | URL to the actual policy on the policy-owner's page | + +| Relationship | Type | Target | Description | +| ---------------- | ------ | --------- | ----------- | +| repositories* | To Many | [Repositories](Repository.md) | Repositories that satisfy this policy | + +*required diff --git a/docs/dev/model/Publication.md b/docs/dev/model/Publication.md new file mode 100644 index 00000000..75b2711f --- /dev/null +++ b/docs/dev/model/Publication.md @@ -0,0 +1,18 @@ +# Publication +Publication metadata to be associated with one or more [Submission](Submission.md) + +| Field | Type | Description | +| ------------- | ------------- | ------------- | +| id* | String | Autogenerated identifier of object | +| title* | String | Title of work represented by Submission e.g. the title of the article | +| publicationAbstract | String | Abstract for work represented by Submission | +| doi | String | DOI of item being submitted, if available | +| pmid | String | PMID of item being submitted, if available | +| volume | String | Volume of journal that contains item (if article) | +| issue | String | Issue of journal that contains item (if article) | + +| Relationship | Type | Target | Description | +| ---------------- | ------ | --------- | ----------- | +| journal | To One | [Journal](Journal.md) | Journal the publication is part of (if article) | + +*required diff --git a/docs/dev/model/README.md b/docs/dev/model/README.md new file mode 100644 index 00000000..959d2bba --- /dev/null +++ b/docs/dev/model/README.md @@ -0,0 +1,37 @@ +# PASS Data Model + +The PASS data model is represented using (JSON API)[https://jsonapi.org/]. + +In this project you will find +* [Model Objects](#model-objects) - a description of the fields for each object in the model +* [Model Diagram](#model-diagram) - a diagram showing the relationships between each object + +## Model Objects +The data model consists of the following components. Each is documented in full on its own page, you can see all of these pages in the [model](/docs/dev/model/) folder. + +* [Deposit](Deposit.md) +* [File](File.md) +* [Funder](Funder.md) +* [Grant](Grant.md) +* [Journal](Journal.md) +* [Policy](Policy.md) +* [Publication](Publication.md) +* [Repository](Repository.md) +* [RepositoryCopy](RepositoryCopy.md) +* [Submission](Submission.md) +* [SubmissionEvent](SubmissionEvent.md) +* [User](User.md) + +## Model Diagram + +![data model](pass_data_model.png) + +## Notes + +### Identifiers + +An object is uniquely identified by a tuple consiting of its id attribute and its type. + +### DateTime attributes + +DateTime attributes are strings formatted as per the Java DateTimeFormatter with pattern `yyyy-MM-dd'T'HH:mm:ss.SSSX`. diff --git a/docs/dev/model/Repository.md b/docs/dev/model/Repository.md new file mode 100644 index 00000000..c77cb017 --- /dev/null +++ b/docs/dev/model/Repository.md @@ -0,0 +1,39 @@ +# Repository + +A Repository is the target of a [Deposit](Deposit.md). It is a platform where [copies](RepositoryCopy.md) of [publications](Publication.md) can be [deposited](Deposit.md) in order to comply with [Funder](Funder.md) and institutional access [policies](Policy.md). + +| Field | Type | Description | +| ------------- | ------------- | ------------- | +| id* | String | Autogenerated identifier of object | +| name* | String | Name of repository e.g. "PubMed Central" | +| description | String | Several sentence description of repository | +| url | String | URL to the homepage of the repository so that PASS users can view the platform before deciding whether to participate in it | +| agreementText | String | The legal text that a `submitter` must agree to in order to submit a publication to this Repository | +| formSchema | String | _(deprecated)_ Stringified JSON representing a form template to be loaded by the front-end when this Repository is selected | +| integrationType | String | Type of integration that PASS has with the Repository ([_see list below_](#integration-type-options)) | +| repositoryKey | String | Key that is unique to this Repository instance within PASS. Used to look up the Repository when its URI is not available (e.g. prior to the creation of this Repository resource in Fedora). See below for a [_list of currently used keys_](#repository-key-values). | +| schemas | String[] | Contains an array of relative URIs that the pass-core metadata service can resolve to JSON schema documents describing the repository's metadata requirements | + +*required + +## Integration type options + +These are the possible types of integration a Repository can have with PASS. + +| Value | Description | +| --------------- | ------------- | +| full | PASS can make [Deposits](Deposit.md) to this Repository, and will received updates about its status | +| one-way | PASS can make [Deposits](Deposit.md) to this Repository but will not automatically receive updates about its status | +| web-link | A deposit cannot automatically be made to this Repository from PASS, only a web link can be created. | + +## Repository key values + +These are the repository keys currently used in PASS. This list will grow as more repositories are supported. + +| Value | Repository name | +| --------------- | ------------- | +| pmc | [PubMed Central](https://www.ncbi.nlm.nih.gov/pmc/) | +| jscholarship | [Johns Hopkins JScholarship](https://jscholarship.library.jhu.edu/) | +| eric | [Education Resources Information Center](https://eric.ed.gov/) (ERIC) | +| dec | [Development Experience Clearinghouse](https://dec.usaid.gov/dec/) (DEC) | +| dash | [Harvard DASH](https://dash.harvard.edu/) | diff --git a/docs/dev/model/RepositoryCopy.md b/docs/dev/model/RepositoryCopy.md new file mode 100644 index 00000000..3c7483f9 --- /dev/null +++ b/docs/dev/model/RepositoryCopy.md @@ -0,0 +1,29 @@ +# Repository Copy + +A Repository Copy represents a copy of a [Publication](Publication.md) that exists in a target [Repository](Repository.md). The Repository Copy either (1) was the result of an accepted [Deposit](Deposit.md) from PASS, in which case there would be a link to the Copy from the related Deposit record, or (2) was created outside of PASS by some other process. In this second instance, the PASS system stores the information to help determine whether a Publication is already compliance. + +| Field | Type | Description | +| ------------- | ------------- | ------------- | +| id* | String | Autogenerated identifier of object | +| externalIds | String[] | IDs assigned to this entity by the target repository | +| copyStatus* | String | Status of the copy in the external repository's workflow ([_see list below_](#copy-status-options)) | +| accessUrl | String | URL to access the item in the repository, could allow Users to see the final result | + +| Relationship | Type | Target | Description | +| ---------------- | ------ | --------- | ----------- | +| publication* | To One | [Publication](Publication.md) | Publication that this is a copy of | +| repository* | To One | [Repository](Repository.md) | Repository being deposited to | + +*required + +## Copy status options + +These are the possible statuses for a Deposit in the order they could occur. Note that not all repositories will go through every status. + +| Value | Description | +| --------------- | ------------- | +| accepted | The target [Repository](Repository.md) has indicated that the Deposit has been accepted| +| in-progress | The target [Repository](Repository.md) is processing the files | +| stalled | The target [Repository](Repository.md) has detected a problem that has caused the progress to stall. This will likely require some direct interaction with the repository to re-initiate the process. Examples include, when there are incorrect files, or when a user did not respond to a validation request in a resonable time. | +| complete | The target [Repository](Repository.md) has accepted the files, and publication is pending if not already complete | +| rejected | The target [Repository](Repository.md) has rejected the files. | diff --git a/docs/dev/model/Submission.md b/docs/dev/model/Submission.md new file mode 100644 index 00000000..79e66825 --- /dev/null +++ b/docs/dev/model/Submission.md @@ -0,0 +1,62 @@ +# Submission +In order to comply with [funder](Funder.md) and institutional access [policies](Policy.md), [Users](User.md) may be required to submit their [Publications](Publication.md) to one or more [Repositories](Repository.md). A Submission is associated with one `submitter` and one Publication. It encapsulates a User satisfying one or more Policies relevant to their Publication by either (1) [Deposits](Deposit.md) initiated in PASS or (2) [Copies](RepositoryCopy.md) of the publication that already exist in the target repositories. The User can start a Submission by describing their Publication and attaching relevant [Grants](Grant.md) to it. The PASS system will use this information to determine which policies apply, and will help the User send the Publication out to the Repositories that will fulfill them. + +Note that the source of a Submission record is not always a PASS User. In some instance, Submissions are created as a result of an import process designed to ensure that the User can see data relevant to their compliance with Policies in a uniform way. + +| Field | Type | Description | +| ------------- | ------------- | ------------- | +| id | String | Autogenerated identifier of object | +| metadata | String | Stringified JSON representation of metadata captured by the relevant repository forms. This will hold extended metadata relevant to the repositories selected in the Submission workflow. It may include fields such as embargoEndDate, embargoText, pmid, and anything else required by specific repositories etc. | +| source* | String | Indicates whether the record came from outside of PASS as an import, or was created through the system ([_see list below_](#source-options)) | +| submitted* | boolean | When true, this value signals that the Submission will no longer be edited by the User. It indicates to Deposit services that it can generate Deposits for any Repositories that need one. This becomes "true" when the User clicks "submit" in the UI. For Submissions generated by loader processes this value will be false when the User must complete the Submission, or true if it is merely pointing to an existing copy of the Publication in a Repository. | +| submittedDate | String | DateTime the record was submitted by the [User](User.md) through PASS | +| submissionStatus* | String | The current status of the Submission, derived from the [Deposit](Deposit.md) status(es), [RepositoryCopy](RepositoryCopy.md) status(es) and the `eventType` of the most recent [SubmissionEvent](SubmissionEvent.md) ([_see list below_](#submission-status-options)) | +| aggregatedDepositStatus | String | Current combined status of Deposits, utilized by Deposit Services. The initial status of a new Submission will be "not-started" ([_see list below_](#aggregated-deposit-status-options)) | +| submitterName | String | Name of submitter. This field is used when a preparer nominates a submitter that is not yet a PASS [User](User.md). The name is temporarily stored for use in communications with the submitter until a `User.id` is available. Once there is a URI for `submitter`, the `submitterName` should be null. | +| submitterEmail | String | Email of submitter, formatted as a URI e.g. `mailto:first.last@example.com`. This field is used when a preparer nominates a submitter that is not yet a PASS [User](User.md). The email value is temporarily stored for use in communications with the submitter until a `User.id` is available. Once there is a URI for `submitter`, the `submitterEmail` should be null. | + +| Relationship | Type | Target | Description | +| ---------------- | ------ | --------- | ----------- | +| publication* | To One | [Publication](Publication.md) | Publication represented in this Submission | +| repositories* | To Many | [Repository](Repository.md) | Repositories that this Publication will exist in when the Submission is completed | +| submitter | To One | [User](User.md) | User responsible for submitting the Submission. The User will be the individual who either (a) created this Submission through PASS, thus claiming responsibility; (b) was designated as `submitter` by a `preparer`; or, (c) has been assigned the role based on their being PI of an associated [Grant](Grant.md). When this value is null, it indicates there is not yet a User record for the designated submitter. In this instance there should be a value in `submitterName` and `submitterEmail`. | +| preparers | To Many | [User](User.md) | Users who prepared, or who could contribute to the preparation of, the Submission. Preparers can edit the content of the Submission (describe the [Publication](Publication.md), add [Grants](Grant.md), select [Repositories](Repository.md)) but cannot approve Repository agreements, or submit the publication - these tasks must be performed by the `submitter`. | +| grants | To Many | [Grant](Grant.md) | Grants that are associated with the User and are relevant to the Publication being submitted | +| effectivePolicies | To Many | [Policy](Policy.md) | Policies that will be satisfied via deposit through PASS | + +*required + +## Submission status options + +Below are the possible values for the `Submission.submissionStatus` field. They are listed in the order they would typically occur, and with an indication of the arrangement of the data that will result in this status. Note that not all Submissions will go through every status. + +| Value | Description | Data determining status | +| ------------------------ | ------------- |----------------------| +|draft|Newly created Submissions _by the UI_ will have this status by default. Only unsubmitted Submissions should have this status. Submissions created by other processes may use a different status.|Default status for Submissions newly created by a user interacting with the UI. +| manuscript-required | When the PASS system identifies a need for a User to submit a Publication to a particular Repository, it will create a new Submission record with this status in order to prompt the User to provide the document and complete the Submission. For example, PASS imports information from the NIH Public Access Compliance system, which contains information about out of compliance publications - these will appear in the PASS system for PI of the corresponding Grant with the label `manuscript-required`. | New Submissions of this type are created with this status already set | +| approval-requested | A Submission was prepared by a `preparer` but now needs the `submitter` to approve and submit it or provide feedback. | `Submission.submitted=false` and the most recent [SubmissionEvent](SubmissionEvent.md) has `eventType=approval-requested`. | +| changes-requested | A Submission was prepared by a `preparer`, but on review by the `submitter`, a change was requested. The Submission has been handed back to the `preparer` for editing. | `Submission.submitted=false` and the most recent [SubmissionEvent](SubmissionEvent.md) has `eventType=changes-requested`. | intermediate | +| cancelled | A Submission was prepared and then cancelled by the `submitter` or `preparer` without being submitted. No further edits can be made to the Submission. | `Submission.submitted=false` and the most recent [SubmissionEvent](SubmissionEvent.md) has `eventType=cancelled`. | +| submitted | The submit button has been pressed through the UI. From this status forward, the Submission becomes read-only to both the `submitter` and `preparers`. This status indicates that either (a) the Submission is still being processed, or (b) PASS has finished the Deposit process, but there is not yet confirmation from the Repository that indicates the Submission was valid. Some Submissions may remain in a `submitted` state indefinitely depending on PASS's capacity to verify completion of the process in the target [Repository](Repository.md). | `Submission.submitted=true`, and the Publication associated with the Submission is in a positive status for each Repository i.e. it's `RepositoryCopy.copyStatus` is not `rejected` or `stalled`, and in the absence of a RepositoryCopy, the `Deposit.depositStatus` is not `rejected`. | +| needs-attention | Indicates that a [User](User.md) action may be required outside of PASS. The Submission is stalled or has been rejected by one or more [Repository](Repository.md) | The `copyStatus` of one or more [RepositoryCopy](RepositoryCopy.md) for the Submission is `rejected` or `stalled`. In the absence of a `RepositoryCopy`, the [Deposit](Deposit.md) for that Repository has a `depositStatus` of `rejected`. To be clear, a positive status on the RepositoryCopy can override a negative status on the Deposit. | +| complete | The target repositories have all received a copy of the Submission, and have indicated that the Submission was successful. | There is a RepositoryCopy with `repoCopyStatus=complete` for each of the target repositories. | + +## Aggregated Deposit status options +These are the possible statuses for a Submission's aggregatedDepositStatus field. They are listed in the order they would occur. Note that not all Submissions will go through every status. + +| Value | Description | +| -------------------------- | ------------- | +| not-started | No [Deposits](Deposit.md) have been initiated for the Submission | +| in-progress | One or more [Deposits](Deposit.md) for the Submission have been initiated, and at least one has not reached a status of "accepted" or "rejected" | +| failed | One or more [Deposits](Deposit.md) for the Submission has a status of "failed" | +| accepted | All related [Deposits](Deposit.md) for the Submission have a status of "accepted" | +| rejected | One or more [Deposits](Deposit.md) for the Submission has a status of "rejected" | + +## Source options + +These are the possible sources of a Submission + +| Value | Description | +| ------------- | ------------- | +| pass | Submission record was created or submitted via the PASS user interface | +| other | Submission record was automatically created by harvesting and ingesting from a 3rd party service e.g. NIHMS | diff --git a/docs/dev/model/SubmissionEvent.md b/docs/dev/model/SubmissionEvent.md new file mode 100644 index 00000000..a76ad133 --- /dev/null +++ b/docs/dev/model/SubmissionEvent.md @@ -0,0 +1,39 @@ +# SubmissionEvent +The SubmissionEvent model captures significant events that are performed by an agent and occur against a [Submission](Submission.md). In the current implementation, the agent will be a PASS [User](User.md). The definition of "significant" will evolve depending on which events are useful to capture in order to e.g. trigger notifications, or form an audit trail. The events that are currently deemed significant for capture are documented under [`eventType`](#event-type-options). + +| Field | Type | Description | +| ------------- | ------------- | ------------- | +| id* | String | Autogenerated identifier of object | +| eventType* | String | The type of event ([_see list below_](#event-type-options)) | +| performedDate* | String | DateTime the event was performed by the [User](User.md) | +| performerRole | String | Role of the person performing the event ([_see list below_](#performer-role-options)) | +| comment | String | A comment relevant to the SubmissionEvent. For example, when a `changes-requested` event occurs, this might be added by the User through the UI to communicate what changes should be made. | +| link | String | A URI for a resource relevant to the SubmissionEvent. For example, when a `changes-requested` event occurs, this may contain an Ember application URL to the affected Submission. | + +| Relationship | Type | Target | Description | +| ---------------- | ------ | --------- | ----------- | +| performedBy* | To One | [User](User.md) | User responsible for performing the event | +| submission* | To One | [Submission](Submission.md) | Submission that the event relates to | + +*required + +## Event type options + +The following describes the types of events that might be recorded as SubmissionEvents. + +| Value | Description | +| ------------------------ | ------------- | +| approval-requested-newuser | A Submission was prepared by a `preparer` on behalf of a person who does not yet have a [User](User.md) record in PASS. The `preparer` is requesting that the `submitter` join PASS and then approve and submit it or provide feedback. | +| approval-requested | A Submission was prepared by a `preparer` who is now requesting that the `submitter` approve and submit it or provide feedback. | +| changes-requested | A Submission was prepared by a `preparer`, but on review by the `submitter`, a change was requested. The Submission has been handed back to the `preparer` for editing. | +| cancelled | A Submission was prepared and then cancelled by the `submitter` or `preparer` without being submitted. No further edits can be made to the Submission. | +| submitted | The submit button has been pressed through the UI. | + +## Performer role options + +The following describe the roles of people who might perform a SubmissionEvent. + +| Value | Description | +| ------------------------ | ------------- | +| preparer | An individual who can prepare a Submission on behalf of another User - select the Publication, Repositories, Files, and Grants - but cannot approve the Repository agreements or submit the record for Deposit. | +| submitter | An individual responsible for a Submission. A person with this role can do all of the tasks that a `preparer` can do, but also approve any Repository agreements and submit the record for Deposit. | \ No newline at end of file diff --git a/docs/dev/model/User.md b/docs/dev/model/User.md new file mode 100644 index 00000000..0fcab431 --- /dev/null +++ b/docs/dev/model/User.md @@ -0,0 +1,28 @@ +# User + +A User of the PASS system. This includes prefered person information that can be used to autopopulate [Contributor](Contributor.md) records + +| Field | Type | Description | +| ------------- | ------------- | ------------- | +| id* | String | Autogenerated identifier of object | +| username* | String | Unique login name used by User | +| firstName | String | First name(s) of User | +| middleName | String | Middle name(s) of User | +| lastName | String | Last name(s) of User | +| displayName | String | Name for display. Separate names may not be available, but a person should always at least have a display name. | +| email | String | Contact email for User | +| affiliation | String[] | The affiliation(s) of the User with their institution, for example `STAFF@inst.edu`. An institution may have multiple organizational units, and a User may have a different affiliation with any given OU. A User having an affiliation with multiple OUs in an institution would have multiple values, for example `FACULTY@medicine.inst.edu` and `STUDENT@engineering.inst.edu`. | +| locatorIds* | String[ ] | A list of ids associated with the user by various system that PASS interacts with. The value of each entry would be in the form of : `domain:type:value`. For example, `["johnshopkins.edu:hopkinsid:DRA2D", "johnshopkins.edu:employeeid:12345", "johnshopkins.edu:jhed:bostaur1"]`. The following values for `type` are considered deprecated: `jhed`, `hopkinsid`. The preferred types are `eppn` and `unique-id`, respectively. | +| orcidId | String | ORCID ID for the User | +| roles* | String[] | User roles ([_see list below_](#role-options)) | + +*required + +## Role options + +Role options for User + +| Value | Description | +| ------------- | ------------- | +| submitter | User who can view and manage Submissions for personal Publications or those associated with their own Grants | +| admin | User who can manage Submissions for personal Publications or those associated with their own Grants, as well as view Submissions for all Grants | diff --git a/docs/dev/model/pass_data_model.png b/docs/dev/model/pass_data_model.png new file mode 100644 index 0000000000000000000000000000000000000000..d0962ec06c511a4dfbaedf284b65b0d4a9096489 GIT binary patch literal 82405 zcmeEucTiMcwl0|_H%OA$1QDcx1{x&iEFdT#NNk`9lB49Da}ou~DkvgR5RjZRC`wkM zfHnw-Z-a$Qtxw^a9*gK+Op1!VV7~03)1`Eq)#z|+EtP@6h zY8#idKu3{`t98RGJjpzqnaAFP%62)tQ*1N;fLEFea!tMbjUA5#l;(xAI6_K%MBRw1ym*&*=Z*Phdov$CiSx9iTTsd7!! zc7#3jkVt7MRJc!J(xlUag@qkquc)Y_uBiC;C4q(H1g1)>b;>byo8NsAq^Gn2TS_UE zFoM#!mFaUUMC$Oq{bAw$oepWQcE^MXe=;nbHC~^P&eoLK1Ydp|x9fAa`Uho=Q}a7^ zl$drm*{@&x=bCXN?#J32s8Wx4&T95pSxVI0ATaw7?@TJ!7BK|3(oUnYlWh69xQsE4 zu&tFnSX;kaLyH^0?v`=2SgT21s>Yr%=O9+G4EDNft!tUfH03ZA6W8mKv&&B+C2U=s zw%f&KDLCJuK~fX;it_fAXnn1c0JhDl0pIufv^$OA2ZOXA$G82=VB4~>GIqaxB(&-G-{@Zu^zJ(kJ z9~YA%d`Nzm`8JE}yB%XafBCwL%+(c=@Qug6dHDVN`~D{fn$KEUJ-ysZ`u%XPVPTOQ z+XEFd)Y6o&a&h8ES-V)G`F)&Rf$m{pNy+-SqO2Uyo-j+at-Z4}`_}tbc9^}jH2Xaf zErgbFFvV zAn@?vL;i=t{4Vac0)pb=;sOXE0U;qia0j1#)Di&&gFw>mS2Ad;CobKpp}t! zg#OznJoJF23fw_^xOll+p_RSS&Ym3qJcPB?Kc08>a(Dc*9BV59v?JOH-0A^7Rq$Uv zQdM0`=O0g8ion+1$@R}uK-m9sr>DKme+lbf=5~4I&vO2GBH;0VjQcNl|9$O$ZU%R0 zX-O!#Sb1GePhClx{qplAtX-_^ttI~aDQGQfg+f`1@(Eg5q4|&^RtP@Jn}T9|BBCfU zOYqNH%trj5hEjL-@I*OVp)ZF5gY(;iajZl{P?px#!hA?UYXl$CN?3?bOk6~iPaG{` zB_@uvL?K1Q{%MHY?)E?{QI7vStIMIR!B7YkN<>IdO znqAZ0*~{m@F6h}iq3?R4E~P0bDlRU96h{h)BY^~j|62B+@eI)J9zYW>#}q{H3nTwL zez`3YU@<_js7pNs1N?a(tVKf69gXsIao2Nkag=7i90GRvo1GC zi+20#)n6|i?f;k(4EDz;Bv4j=Ex`ljjkf+XPcYVBm#pki&bDaaJ^rSye}CWpzflF0 zDA*)HVH-Yiq^Kw#Qryy#PYfsrpRll%HBv+ri4a8pr3(KT-NVJk^C8L|EpH3t2xJA+ z^N*}x+p5Q|F-Ra-SAI-6o}@p z_ke!}?q1*@{{C+=16%Sx`SUk*`=9&>80?B6jv01?;f+kUGC_ zmZtY-9gM3Ue89K|*A-Aqs&>6F&@FAQyB|;cLeCyw-YBE?1|))60m5eebZ=vDD|s~i zU?ee4jV+6Few5YMCapiKrfKWpQNYb)Oe0gM91PkbX)?LzBjw3DLn`&0k_ZncRBk~m zsl*sug5crUD}mQAs2T?qco8bckoxECk1>}oU@0n`m-mDs*)Q*b{OxI2qS}8R{r@2* zgq@8X|`}@YN9Uc;_>|ldBj50QudVQr>8fi*A zDx_E_-ZG3{u+ojxIZb*g>sq@=vrx!{Ukn7HW<`75!eA-Mm-{DPLPFLlrq%o6#mJSA zLHxbWQ$*4-e9)b#*NtiQwID0GHseXU)9jG0)y!a>6BFA>{5Ie8JULy;n(tusw&){` zMOJ)y3kj;5>1)2Tb!43uC2_`^VoANrM+RPMGM5U2WOba4`b4Yz!Hp?zZD-e^xreLO z`WG{MOKj)wTGpP)D)Wxp9g~amg*T>*_glq+_I>YXMou2O?!QvFM-&#KxVU>5VxMhR zL3h2A`ua#{gL4>cz47Os-?X@0c8^;QcU(Efuh}dBUy^nIbFsY;>xbo?fX|P*2m@qT z`3I`uOqkoGwksdG0LdS4SDkG}8uWhH&^GNo3Qhi*@Dtz`xNnqDK)>i=|o1S(q? ziqs1K+M$fjzuxkA8c*!DdfJn6e7d-;;fY9=WWoz_Lh9b=NbId~@HtmK60!SS^rM-o zih)VFYJ0Kmrc_^5SiL9jFF&E^5mU6jd$f(6w`PezN`g32m2g zQ=9F=b@||JsnOl0Nlf=nq1tJX>?D1PWc=E9r>?8{*E1wMcnfFSrkCaxU_uw4*LD|Q zPq!`vw9s^A|7F^L_T=9);vBxjC;iq_n2jheEx$3!5fMXGd8EXWd#%7yE9Ab5co-Km zS4|1AwQMezDeo+!;Vrt;=hw0&F|=pe4LxSqw&j#nzo&J>+F`wJWMpK&n~Y638q0Yh zI1J2Jqe4|w-<&ntHGkt8bBx^UR9a5cp8t95?#ev2hzii9I& zEjB8mWQ^dq<*b>@P^>I7uLxn}t^HhEX+ERg5y#*v<_9<%N~V+IN$H%iU!V%{TVnE1 zJ^k+c(pp5mH&_MzyV###i#DYObkRnj=*=n~Yl-SoUxPy4zEGa)nRsfSJ^Rk3_b{wI zoUo?2=goS9bux3CV(9fQ{^wr?u=VxPMk8kB)5~y3!$ON>k`;Xvr@A?F;T|)R{fdem z|IZztJFh;G2sEXraaK29`541znLbdRqg~=+9Qk`c1(2gv0JNhHTm8<98%x zXSBSk)&$1`Di{ExirtoywH;v+osK?feReX#nAX3t)E&RP<0FwvtE`*$d|Y!0mLvIT za`NH&7#mgWoY$nOOg;rR*U*^Qo@`vn6v09T{SE_pG>x+OR@3g2hzFx}C}F!87e9V_ zwy4sJIdt?x*1iu^F%QejxF&7w4qy zUn-hTqMCY_ck0-ZXIA{uIf>dy%LVf@wfJ0U)++4p!=Qb|)yld<)*s8J_tKt?d$pS!COg*I9PVU2SSx7swxt zZoo6KdWSY3$_u}XF*G{37d%?tQRkFV^)B(1|9V3>e$Q?bioR@@JdZ1z?=YZ+snu-% z(^zx*ve<+|d)?-~PINCz3W|Qynv*kX)RigP2uWWRL7dr=(dIW;C(NXOj})^QDLBnah%BwohD&_%@TptS`d{8~&!mS;ThAMh1qNHqp*9)x$d*?oeKIIt=A$g$U$r~iN%`~8xQwwbTYhYapzs{vaY`V z_*>C3a`}x;5hXDKYHIqRiph9evO911z7T$lxp-|4kjX0iIu%hu?O^-$L_0DyMzO0! z+%3B!k{+u=-=}NV&JN~-f32v)4aQ2u*Np?-l;;e#^yx5tr{#VP4d_Vk=p#lVEg8IUhs=35>;dNf<-bc>U!8opL=)Y&ALaH8v2YT3Xt$AEDHNE?xCg2e@-12y3oJe#oduOGR=nA86fIYP;*_>hWrMq7C}q#S-xkE1s@pu;UE{ca(Z`W&fvT}1$>R|VSrv5n_3Kwp zB4hL;+`WXOMa;yTTP5R~K1;U~a-tm=A$V#1&tVY5*M&L|oUyF~MMq1)@CRZ3AyTIn zh?qEAU}rpI&l1|9thS%Ti|%w?-P?wP?al=XdbIy}i9C)XKMS*Qkgly*N@K&yz>jBz=E9 zhYv2g)|Z!)FVV-khQU06CYG0LXMR&+4@F?@+p?!ZA{8Kyg7>Fwff-%FW1}X{Dh6R= z1kaNEHSx(+4A!wodOscxc7WVC($2{BDe#z4l!+=;A)clWnF!PP=}9L(e`a&b*yJ@h z_8`U~cIGvS1GCpIp;68fb6e_)y>hS2aA!=B0%$pjZ7pzFkInqPCrSQ%BJJ<}&iM=Q z>-t`c9g!EivKO7Zr(3}nC&3p7!M0)ad#)hieXn82HOE%1d(A$3)!3!E7HBhvY7$sx zBE8_!SO2ZZN4V<5xrEcH8ZYvESF^6?2i(!6=4PvyG&V6gow7=1mh!1Y2f8&ONS7Dd z!+`>R^7>M@$#b`O=!xL7vNA`oVLoGVMTY@0^wLo7$jC^5cO4yX3R64Ier*XnNn)0) zjMLL6i&W^hrur;2ZeZ(Ym5sg)dIpiLkiVmSg!ywy}Kl ziJ;YRwn!0on3id^b^rKn*=EOSA;cntW*M?}UnpqYpd$`F%lAk_{?5g0>)EXTR&%uR z@b0Pk#qs1l^T55^!N+%7gU+@?T>Gbar;%EE#O;%+&EFeDSGPBrdYL6W?ZC9lj0i_} z4e2Xi7c8f~y#`T0GStF()B8Eo)r;v+FXZEE6l@2p3r;;vle;a8xF;qj6*Csw7*pQ4~w8yru1kvk~UOSR5UYV8R4VLUA8HHo^?l$`Wj2JmGtIZ!?@QM zY+QmiF94K)a28#~pb)!kT2g{VMMxNyA_rA$8%?|td!5tr5!*ZwV|76RmgKOPDbw@P zQsNso=t)(c=^ARj(z_ubK%onTuj_C}5C;aN!XW+DX>RLcIHXKaB}7amCPi~J8-Q8+ zNw0Q1hA0q|UX#rk}!?1aOOM}9z+PxdeeZMYPAdU^#HSe%bbOQ*~EI0Zhm&qN?z6 z3}OUU1LcWuBE;{%AJpcpl0g|oCu3r6E)d5~D)#cKnnd0jTRq#8`zbG0d|8kT{5jVK z{F=W$b#DCLNg?~mD;J+mSy#$ud!gQKxxS3{R+c6K)oISs(@Z3bl0+^+>Xl1ypC#_G z3iOEZE5z7r{H^JGZ>?-3QKL>8=M$0b^L8eMC5}jX4a%$^YscryJsoj4yirpua6VmX z;3;Hii6ddksCBD+g++XvP)`Xm3i>FDTSJu}ZltEb(0l`+3{ z`^6odpxWBn1fDARtw}Gq?ws{{$IQ%q^|X#fM8t!WL=I8ZjfG9$X0r{am(WfGz)3eA z#dTZ86;V@DYd%4Q+Q(N{SMwRyh2YVHg#qCklo@^i8ySjASR}NyoGe=oJXWLv3`4D) zg+Sr_Qr6ceBM9fcS1uKFDz>x;KKgEn_U2e&IHs|*H0W?K8fuJ>j}JV<+&h=~a?|%J z$t+($eCl;$PwgAZ5*E>VT~;<%@Ahnd>)HRCJtburEAUgsvOcF@A z)?qSpIx!6v$N+QC=lAe{`NQin}(ZbNeEJnLMbzM8B{`kl1WH1@>Xz`>PxWoDB5kNC< zF^y9!F{5j|0sC(g6oF!jpfN#g^PjMf$w=;Q88*Ql%mS#6Ti?<{Q|`LOW$nSO>bSsQ7;xRZ(gwzg&)yfKG8-!b58 zRFCa$u|8G^0{K*+T3sL4z71bk)5oh-v*IG-^3(g zvo+wzUB!zXz1oN=4{tU$GiwRHIM?CUyLXSU*}=#FPWx2KS7?fI((9(nR}(Wc^84t% z6gD77)7l50*FQXyZ!R}$o~edwjaybdDJ|W+nRNJhpK!a;WRj1Y8|z-r27|Khuif3= zM8?UnvF*iZ*5iPdpI_b|U?xWq2>>d!ThQU50H^@5O(6Iv9!395C6PhWdt=}cuY8O{ zwy0H4f+pAQLF)zc4{s2wt$LHb)H%(9-wX^40B1~szrGDVF1honqoaejyxtO^J0CKS z(Yj3_Jtq*tkAHs;gEj5XIHVXrR!saiYm=4%y%4{P71s)OY+6(n(R$d#qqb2TTLE2OWl`feRovW+}xZ34Ue-N&68dm z$@M?mn^a`!uXddEcJ>wt*Dt|H?4J68eFnA$u#Vc5*}7g3rXPHIIVyW`+Ly}V`mE4= zk)$Jwn}HC|Ij$9}v;@pDnmY?=e+S6`yu&1rE(jFw9(=x`o(8o9!hTkc z@$&Ne?wOrR%lCr3o!>fo%yHJN#)j)C#e zxQF(zt?2E;D8UyXrKB@y325L{&o2Jr*2_F9wM#m>d*!+|lbGv5;?1wz>K{Eo#=&~A z!)jPHZM42l6KQ7xW-p@UU}qO{;#D4~3H+zMFpmhjaia*m}^s#b?@xq$g!BM>@}mnNH3JUj%B6mpANHG>Lp`9_Ep0VZ^spZ!20|9cnPqv_uiWd{Ze^nz_qw;OZ)F< zWM-1H$^>-B(L|vV7;o}JAsLSz<%+qnGbBnR)z}PY_orV6w%`J+6Ts5v&!4xnv@|w0 zzI^$zyxjTd*SG1en@vG|41?7_FqqCoSCDxUgacJ`@4v>>8weu1p;@Zh3WyIaOL4qW z0sz~)6C*1tCUi)dNBLc-~BWj3E8 zp>|NtJ&^1H-v$-{?5QK)Ch!aFxhvbXYuB#d&WjKvi5{vhd%x8pDJ#pG@VeN3-Oz_X zRC0s<2~X0pBjC(GjDxW88{~L$d6C?4H^2Hk8(s51`0`NpZ~<3mU`nsFl$;&`VZVAlYH7(^u6Gp+*y*No$gZ;;Wl8zbSYBcLjz3impuUuA z7BZxrK#fUMQ+;b>zAh@XY!c1JQ z-#Mhqadjno146Ei72pMf8rIk(qUeu~j^2IoX56RjbptY0;&ul12)vU#^h4d|VrTTj zjVVEvWRCBvVI=%9O6*f6eF|celacEMMcjQW9mZXLat575ooM2)6zvic5|Z{6-ng*Z z%^jZ`ydaF5#741TCM)vA+$_OHfuT|#KL*+5T4d)UZ~{n{C-1yCPGtV9i5aKH>E1^ zdnj-BVIW+jWf!FB41hLrCb5uB)U3C?{dcf#YUNlZ_JRbUX&^5!(bMzXUT6pC4@6s+ zd6{vfh?XMDFi_W98XCZ%@0bJEaB{FE0Ea8VG$!}-Zs-Fm(9_G%Pk< z^~+t&Y=ao86Z4Wy8|x8nHcO$EdYYcTwC^v@DTFSygM-7}S9+XO@@teP9mji^_7`GF z>HXHFuV2T<$AixSb~(Bm0I-SH_*`qSY)r9>S4VZ|6}jIyB6no+w?HBhX@h19?Bii# zYI%k>0-kE`iJ0g5*kkh`A_m&0ggn*rpZUUriFQKO7{k!L~^ zP<(AcD)nVGSYD+Be39`Xu3$IqZ~QEFB_w_zZh*}E;m$I?e8^W~g76nFUc?n`%)YAt zaK1xr{Oyk)KY)`}a1%;|1dnVTaHL<=^a=`U>0O>~_6NzQtH=WfhxSw!F;|PW5NzNF zq+A!Ua5l4xnWg=xsrl)gi3Z@5pEe#mMNLO% z^|U4<-@BBuwUm6v1L!XR8{Vb|QH;(2%vKh00}s9GD?=M^pKWmGjyvYfyN>qW+p~2T z3)_NvK0lyR`2LBe zs#@EVoB`7qFQK5)(Hb|YbIdBos5RrxhI)m?kU#*DZw?GaUmstvs~&E`6Bm<`3et60 zCD5r9oJ2_-aAhD6Y%WMGY2&+>cdUhoo>rru{Y%m?fx*ZGZ^-dV2^$&B^2FFT#4`Oi8~a z&$W3-tC3^w>Sh2uzcp2bYt2=5l%35mw(+vIExYSQ)turSnbJ+LDRS@F$DyhWG`+F|{sEuOl-oIap@e2w%=X*C7<|^h)`J4UZhXuk1>|aMwq;YYpuw*laD$XTT5sjtA-0n~DyZ((M;`Mh(gF0oDI^>%!> zWuI#}qJw0N0XmRkhp?@r*x3RJw@b^>DxfY1f$#GBz3wB`;{Hv;H35;4k`TVU;J65S z*U4)hzsO?Kz{|$D5&B5M(#SCLk;V%>{lsp|G)}M08BkJW7IVcSp_VM^_m=MVwxs2r z((ZaUSz$gJw)jeq7+Jh52K?w&%gN7Q-v+hDHM!DZ0j{PlO*<-ppIM-;9+wF}7Ihr7 zKtSFv9>Ja&acxjYgTScY(YuA}tt4ihtTd&H z1ftS06V5KrVgE^>vE10m$OwSKY7*Jj!zGeT>%Kd9Pqm&^(mpQ7u&ZFHP~$uV>{2=A ze6J!n@cd|vZ!lZfb_6(n&+jiD1G~C1jVvwIeu6-a7@*0#^H~sN)o1aX<_b@!xmk4j%-IDvV}fkPVXh*>;&U^2HEG zpa(MxpJ2Z)xavo-*tn1;bY%cJ4Co5-Xnp-*?e7X&qIV-Q(Nz+}oVzuyL_O(MG$6Pa zeXtYCQlf_X#zQ&ON=x6oF|D#xMlwXEDH@PJScG0hO=lEf>1sS3{Bk~WlqLT_@!le3 zwHXEU+ILTe5p!K#T{QX|2ufPxa2_6`)*$KQ_@Y4eM#4~TC>}OG6_k4$uKSgcgqtc> zPPDx!`c{cO!yT6bMv#2f0DT_he_sYdC`gs<(r|n^)u~2z;f%x$d)$!z(b3)yl_M5= zio9~y<;^PBVF6;3UY8_^<5Xpyw11Ihgh-rZxN+Q!;b1i&4Nn(t2{dQuFR*jEg8Xj& z;`{)h?*Opt?|1uF+ccQP-K~NDa&_KDS8297*u{xl>5bb0JU2*l#=rjth5)jjNP2pX z@jQU)bf2k6A1;L7%7h!$yDoxHLu!qC1p+iU_*megTOeo$a5>a8G>bZ=rRSS2!4C4Q zl(Y1)V`Jm60NAgTL9E;eKNkAs?IR0J*RtDc(n84>i0h1N(vE-T=SV#J*7tN*?af`t&<0``VEX$+g^}hyqt03*h5ekKuX=|?JLz~+H zpI++LBcJ$z95?ja@Kllq^AcKEr=dqfXTk~hgHk;iygaqvy3q?mAo?D#yTH2X#av;= z{$j=xFdQLJoG3UVDrY#mW@yIpV6Bbx^W>z}UePf$0PFb`j%~wma>!`T=CJ3;yYzRI za2DLykXKE0P8=mY)n)SG1i)nj8VArZ+~P{aY~PH&YXY90JFdIC+m*+nWNmG2S#Z74 z?C#y=gA>Zv;U<`=Dh?(M(@EX5hLlz!!!;0XG$R^zAXgb*A_46WW$-?}Zmrw5=M&~4ruH!Kjf1$_NI!d22k z$NchT1&U$i7$Au-7)VKMgsyUSJyXyff2+iv+I-=rDf$wxv96^>1_}XXA)-6D`?Pux z3EcYf*%!ASFD)$r!h>_YW9UIU&((Uy>7P9OP|b6IH$cLuTAAuf0-lBx`c>NeFl!^+%s-Vb$wOtJOiq;+?9*DWi>LJe*qs5f@cqI3jCA54Ii zPSgqde_-FBxQT2og`?I+QAU7J1-TUQ>Mmf+)$aG;DdY3_-cUz1p>K7vb;4laP?eE~PD=S?;K3CUym$dwQYhE^0?bF0W_5RhARg1R| z9z2ln`Vp}r=p&3qqs3rxwV*!#`{ONqc_2JO&+86cSc#AzQZyAPhb_7qW`2u{BgRu5 zwLn*XWaV5U2$vUatEsE={@UaVkV~@6@jCEzJA>zECzpeOaNK;f`n1_h;Ftj6L3KU$ zS?;uGR6J2KQ);16jm;*2JOdd#3D_(EK=rZ)CwQAD#jR*EMuOX6 z%k|3fv}E*%g~y=t0z_70#AXwcQF z>NWv?N=rlYsuWN{1~1@{0jZ(+cDg1rhaR`rs?u%~Kr@$&L27LHw(*b?4fR?w>9bTl-;k4Yx& z_R5~S{rL3iZn0)4bFLca*T4hQ962c#S=WWOgsZ}?exQ^E$Se)6bWj_n#-0;Md1+kd z$aCWcAS7Q~8(pUCV4XnIG6l?ox@qnOT%62DciiGi2TT;peQ{WIVm5J1kiq(}n~ATl zc+3C@e1hpe-Z!F?mJ1k^pb>`fsN(}A_9{?|TFdh%pOzTY1l6^m?RLT}_6TSz05&Oa znd7^sq!jRsMxU&q(!!LT0CJxP)683=V3yFka|b7yAnLj|{$ml7^GhHE^89%}%p0Iq z0IIT-ymejd=#Hnmq_(nM(v=J*p3i1ODMqpAR93AT3} zDX(13Z&_yKynDBJ`Z><6HJhd^v=N{&ZawCw!9xK|J@)enCN@4SLn+%+`1&Vg15?j@ z$5TPlXD?sc^`~7kt9S_R0odL46}L`)pK2#TZ@!@+UhKC%*Z!ZfUfLDBk2KhVvcAkw z9@G^VuYzg>6JT4x&PlV30*dhb{Gj!cV$j@xRdLXhF5weASCsD{lJVKLxbcVq7$IP& zOef!zmz&i&PJ^8t7#yr3e_dK?P;MfQ9>@TKOIoh?l*rY10V;XYoC`2o+@P4F2{B_) zYeB*t<~VE9$-wo(XaWkBp&s5E0%VB{gd}r;U~%Fm5(%r1+)%2dEf8w6jOD6z}K zyRr(B1SU{Vu+0yw^H|enVoFqZlj|ZkdJNCRYj3N=b;@;jT}F`!pLohk=u0|oY)$ST_cT+-)K{h`|9@;SQYpKL~_ zK^FiBpTBE8Bm2e+k@xyJceK;XnlJ9b#Ux+m!iC>fQT_94SrFyy#(SFwm1I#a@;2D# z8O)QQKjw@gOCTm6pt*gK5$ow{^liYvgQkH(DG(nEfnEnq?s*%8^k0Wi0Gz=_N%@@B z1pD`w?iJ#7wTj87np{q^{M_6Ktt;JqFZYy2@FBPXX(B`&Z+N-6L)^lb!>i#7;Lj!y z-Xk5v<$DLxCdb*4!9lAAy0Q}n(K7q&b?PV$`3XWAg{WGg5atlNP`Qv7cMBSE-G163 z@87%EYg4~;RBe;a)XNjsasPF`18&mVkwD8~*szWGuqDQ0B)j9G4NXM~&LtnW8Dd^! z9TxjU4i>^R0$Pg{se+Z)q$4t%X33*FE#3k`X%SaG2G$rJqYbB3#H0MmShNngD555f z=VD0?$5+S}iN|GAr8X`Cga}J=NnKrCWhK;2Cuupw8ebLYHQ+|&7!;78__!h?*A$j2 z8*qqtT`z{~7Bz8Q)04e*SylF!vRsfh{tW25EMVn#oTn7`8{FmatR#m)MoD#Tbi0Or**)3 z3$qO8sMGMJaUi9lL~N_s`R; z5s#U>aEgeEw%or}?9X(60>Fj$kCdQoJ z7FA&?Wh}zW66tGg``CpmCvfvqP+^u1NPApjKygw0TObTwW*VKGB?7Ax1g*v})JVc&u8(pF`soP&C&8?D~(k6A~Aol{h1JsIryC4=xN z0Ki^q6qHOVJ%fEL;Jl^EOED(PFi|m;gjy?a8pA6#KJ7R*iedEjt9e#p^H|<8hE-z$ zDZi%b;IF7ONg1cYhCG9^!Iait1KGY*r1$#l=9A88RN7 zRq}5xe1wK{QC8+cK^kuL{gtM zp|OO?gdK81KJko-Djhu@D%s6PP7n@dFH0@%T@G!D5RGJ5V6dfYD^u*@kc{3aVlvSA&*O{^fOjVJ3QXesEXt2t=s`Drq>xe;Gk;kpfgCP3WGG67Epvq^jiWY{^@<=fjy zKnLd~YQNWQus^!-L~B1qVIMXEf0&y1&|>~+pf0={COH`rNIxHwzwvk@eG=4_WG{|J zGiT@>3#*CH@O2XVC%IgmBKyzUwNz~1ZxFWA66DcM8m6^VF->hNPe|dT%K)7M<_?^N z^)P-zkE0yty_-*Itxr;E=&ES&39p?@qbs5vYlnY1)@1F{qO_jEMfU~0SIq<4M>5ao z>R2$V*c=oj&#ofb15EZa#n&q{4K=PyI8{+Biz|dz6Aq*iPj7s7+<(d^Y(ghPag(8y zkolt$j+|JHwa@nHw0~*tgRUC88vo|6fSv)IIzZ1MDMP7g#pCUu_MkOhR#8Ftu1AQ% z7!jS95*~s{7SArn1c4mrr7}wYD&*~WB0F@ZRzG*3K8^Rm?rm`~ zfithAHa+~&U~FFm?ILF?OZR}kj!?WIxzxRk)X*CRk}9wq<+luk_|`n@E(VLUai56R zW7IftX7iQ9?TDzVLn*J>ZG^d!M3q&Sk@fJe_?QA`%&^0R)Bb=H4l6A7`eK*UP;9S8 zrD!Md*#9Q<{(!qeztz5y`}13_iCI06tePSQoY1kKNcO=bY;(L1V{u`w1p!9>!b)|< zocB^vmNQuy&}_?;PEXsaJdAuL%JRj&2;wZli#~Tzrb36f#5h#n9$im5=Vf62mS&;# zVR4DnZvr|anlh6_?VTw(>|WXaxTqfTCA;q>kixU%m@dyx%peiyqBKqwv$&=eg(~<( z_m-YdUP09G3A734eP+0Pe*1F2@yF{7xw?ozgO~x^;4sbezP%*-X9`ubBA<2^W|t@~N^ zwJTXoFpoM_Hrf)(LiNa~gil{T^(Dj|hYvRP5fI)Zpuh=WjGcL}NRp_PqT`Gq=Tjs* zTSqFW5)i++-vv4WfeFfm&}2k$`^X$oqMK4meq%WfQn z$Slp(wKXf14UlrI4rT4eo1a<&cAZ($+uF*wzRZXloUDqdahVmJ{tAGV@*8}d`>+R7 zA?gakQgj(+3#(R~wj|o_TmknIA$Z~KdN*ER{NS|4pd}2H;a->i0I*&VB=r`EzF+SI z8MAhZKrL(SNR9IsXk6>BJ{=Ms1uaG%fSOu=AJ0}6!%=sYL|iz*8($8guL_?nF) z%Y*}_s>}W~=?V5Q+n^N)5DY zmEO^>^=+9%kj_c>x|s#;>6d*1j`T9c14i5B_GJC3BHLu6EqpoM@?kVVG5l;%gzWsjwjGT4M>#T0pxpV6=ziBC^5z`1d za%~mtKNKm)6@?)B0*|)Dv~N68;1OOq{T?%L7d^2M*3hH-Aqr)UnKGDZ4D;0+OG@Kx z|Mq}oKXzG6U%x~%OUR-P>kmq z3@;#3_8Lu`(EDR_y80qiu?77kOJ(9yGC2JreL5aYYoN2B0VJf`C!k055R~0r4;2cb zr>($8B%m68Hez5IJ;|)WC!6nTlCG9OyjO6LTEbew^rT@Q(BePlkCW$%C=2%s5N)fq z`!or1kV6${+IDlc{FUWbfJ7@QDguN%L%@2 zL3emG2Vn4f-E=ZplCRT~wrqEhyj&u5fS5ixlPH0yQ$3gPgB}OS`0QS!sdNRdFfc~S zorm>WoeP=On6JvXI&4eO#-lbBdUNi!IjJVJSC@g#h0CUGi1|F|mQYP%!Zr%sW?RK> zcgPWOpdAR|2W`BdVPy@pZJq_W!lvTjsBCa*tyO?sohrf9fF%De6$Q;fWnb1WmGa@I zE-gg!ZlF8>@+{69S|7B`CigD;OtNhA(jA8M z-oZ(7@w6X*k`j59&1}*AnS4S6$9c^}u(1?Z+n4`o%ZU>5JeHEW4n8{4U|v4zH;HKQ^l zcaQ=CTcE@P+9Sds$AI8AHZ+V8-@NQAaGH(jUt}Qb3@K7x3??67Rn{f#wBUz32=2VO zI7}qVno7AdVb03((BYw~6wB>sa%SMoL3JhQ)CYxPE6ei;G@X)KbbWF(CpGFaUH$FS zSPf2wU4lG%nIBTq(iRX z`d4VXB;D7fu$3ez@oV5DZdYgPD(aWwK-ZCYk}#+d0Fo?}nOV@X3jk)o;)41mU=O+D zbO`7DZn~?E*vf*=zZ}}9fy7SzFKzeh$PB&Xihgg-(#h8YCe1`|AD!p$o~mES$02(a zI1h_wL}5C*y6tXE^rv7+fB{>+`o(>a53Ww?DCR-i-j&v_4SO4t+*fTsRX$Wps=0cd zCoXK8Hb^0@z8v&){oFk&*aj(p)L~?T%_&G-w*}u*)~l>CFWqc7N&xTY-b%7-<8RUma-owEs5nXnS9$ zQWnINJ zcq^1d9~W`I^(VsXn2sD>t8qH%rZe9dE5xN@*2$}~`%naUvvM=DihJX4_vKV;d#C9@ zCvsbSY3YrLq?a$W3Gh=d%Rm*a=YDvcDXUhq`=D)(mhXN9!o1~LxL zdVsR>mqst+N(=0jgx=-LEbH?419tbW6amS*=#OjrFDWliAz84ewz=Hb;iyg$j;H0j zapQ)2@b*O6Rd7Hk||=8b;*w z;1FyM%}}o7y-c*7j64+ZRYW3S;~pNL1(C8@c#&+P_-*`i2)YA;fxExjjDNdl>)>fI zQ8l3IcFGb~^Zb9xU$f&%mv?>YU|drQY(E}1fjT?2FqfA1wTH-S3dNS1-4;pGQ_Gp>)ZNuayFLgbITv_9yxpkf|ZRYZKDL zkqlZd?o4}fHxkU&fodp?G9_L+g4A?!Ha1ZO2F)f@`(||}r*n|7tpyqxTq&=eZa(*Q ze?J~$*D;vqOk$JOvCs%=KJqKs#aU{c7S)Rtc4gsXH&p^Ye7X)6;+^Pz7*h?GOyU@< zp5KaAW=T{L%pw0?%+&k6QJbO4i3-0m${mFz)TB7}8x%VnD1Y0-pnx!2wkaUtNdiZx zN7(cHe(Pl3sIiD9-Sul?tbBu}S z2zuK5Wj^{MV=?RRy#RVa{x4I&Inm)LO)gwJ0qK%HQ&plqAE;JhxI{9>lDGqtKY~24$*S_$dRI zXuqnXhd~H;2V-YJ?COR?_L-?pPc@t|s$FCPORy!6h9j(2ZkpZ84Y(g$%7q z{;~%>f@(E}&3+K*#hWwG?4)tWKzf8e?Wi+?{UkJIBgyJm4z@>`GENi9TG-AAJYnC1~7+ z$<=@(4WPF)s1-%;_yd0m{?}Iz*oDh6fij?;fdQa&o7H%~`JRKCI;fLkF+|ZvVb4>Z z38?@1%7Q|t2TB=?BcRv|+*o!oTYCp00W_ucAhq=M120c}_1XOOeFYJsrC2^Px!SFu z$_fq$kq?j=#oqJvJxUJx&9O>XTB@=8=erTcGIu}+>e+^^?6R2l+Bw|(UzELvKbCL*KaOmYl_Z-)NycR)*|QLd5QPvK zA&FA<-jcFsva=#ecF4@gE~7yxQtzVD?|F59zJI{)emvffyU67_uk$>Pz+z+SMQ^1?LUGY)ugMujH?|D`1a*G3%s{DkNofkUY38MMPP`m+#091#=y z;Db^ElnzAl`9?$GE{qV}Xx$hEecz56VIx>l_mSSl<761JuGe?7|B~|T{H|? zHLPbMjvs~J;!q@inx8E67wY_T4dpIV5Wfha19&v%o(^Vp01$2Aix9d!UZ1Cra>upZ zRWIUK+`$#}qNm=gu~hAVCQW^LiR0u_@Ad!Pyi3$35B5-#+nQ18-7}i$pFP^*a#t|o z<0dMri$LCS=L$AID*g3=MNwe@2&W+{%#oe$3IpKCA?(Ll@3~mvJW=)gx9_8|r|9rt z5qbM@LnkqK&J)<*Sb=)wqEMmbv;Vvm5(P8#Nh7qKP>3@2(-ZO1ZZJSt37+zYBXb3H z29=NI?z=DGWR^U(44=;36GWdO7=+E{fE^I8z_fkcMk1O6-f7yU73p^}(yD+#II4~Tf4>l-FnIFP26F=-fjTFPeVQ<0H2y;ZVl561(% z3;HBd85KrWjU|ZI{r-&kwOkiHd^kokFVq?>tgg^-$=OGEP#N~gh%!gypDrTur^$D9 zh343P`95dsmFuvRc@>Vf83!@Df3M2^#bG>u?r|BI^8`j_mK0k zMdc*tb(qZy)fbd6hpO^bJSQFj46^H+!NgFFf&*+)cdC)DPbudEDj%M;wQtA*QRwoLnR8K?EBo$#1E_yAU)o z;Yobe<_f`|A?&x?-8nt^%$u{1amYVNP~eLhf7yHdgXm;!U&A)uUaRcO6PcG{l;oLJh>6t+HlA4!8Rztv3|De7|wcl1h&w zLLD8Bnp%*{lzKXDg`R)h;<~qF3Vj&~_E~vF{(%jHNUIb3b*e;r+|#MJy_K=87&2a< z55diR*V=B?x;J~~C~Wh*F7!eA%AxT=s08#$-;K;Z99zCCSOobw95yJoiF_QmJ%(%S z)a0;8?DkC1?A2)2ttNUJ#;y_9U(h0?WPuBEu?rAWF)XtyC0Oq1A1+tUe8`oJ4otd`+0#tTuz*qf|P)(Ugt9VFo$2Y>8 zuL@V#Dbr%p5caVNQKVFjC>@LE+}FrlVML`+KQa8NHC1bPdcHyIPH?WUe5?R9*)v<2 zXWTBQ#3k_Y^i<6%*J++ob8ed=`5ij&vCS#}Zf-g?Ikn=_#wLARb6eZxVS-+wAXZN9 z;^DwYpAVVHtNt{ZeFe^=+&$dOsVP?|j(Z*-Oiz`qnf<~!mI!q@&Vp-+jdscxZH`pG zdQ#x{{P))$C_wR3K+w$Z%YC?%pNveofA!df1y-@ zkXtRs0OiCr%To`B6$UzOD!moNs8w&>x`pQ}(NS+0PXw#RFyWfz4{wFrO*|*ii&*hc z1gZE6oP3(0c&i~-7}|7#9!myowxW)}he3V+%8O=fnK1}%+0gXnWO;D7N0NSr*UmG% z_l#TL27VHsBELB0KRzSmG3TVcD>G~R?4H)&k7Q_I?)}YR`lr@KE6=bh{rRUe zEg`C`;ECHpBiG> z$VW#+k0B_37A4f{i8^n0`mhx#_%@n*h>dRRY@2HaK{;){EY*KuKj&E`@Q-YKSHqXVI zAF|m)TRvnkWizPItt({dKisb~@3RdxwKwz}o|a+m^lB#(^WEg0LAGu{SL?E&kfke> zb$e@R&w1~hoE%^TrUSROzNNsg1&dAi=y$ZnyY|V@Z_&K_H1V=@vtXOgVC|=vLpEAI zs8!YTUcvh#Lx7hh{lo)Cnnb($h6c!nTa+{h>WSr2Bf^YBlCGAQTB>0q&Mog9@D|0%x=AAE!(4S zCmQa!_K%qlPKZhW$CuB%y!uAw%-ADgzLtKKBC0!)~&_`Iik~#_}{NTw>#areb-u)w%6lukDhG8)D1TvoMz9zzdk3e z7j%2KhGDYZFk$W{b`Rf~`UO=3wun+{1=mjZ2G6CTBBO_Rr;>M1m=R^df;#hZ`olH< zLl8`u5m{#Wv=#s@G&OM7z3WPVc;qke zm8~CN-qv5eRP$vM-XzWlbtK-P?0%D{wd)^Z^6k$TzpRg&t5bDnO-zKCBRu72KIQJV z+4qJroFu5v&GH9PJt2FAyPc|Z3E2befdXmL*DUuqtM$B0a&Gxyd?0b{ak=t;d0NZ? zqCMGt=YHM#C3KRyXZO9{uY3c!>aJ3`{tI#ydC7JvTwfKG;8H=s%g;_93&-NwN9R$H zvJ7kx-T%98uLa>-^Z0dPh7|KTH8q})ngMw8;H0t(m%DxI*71>3@)Jvh|7CeObJAy@^Sjv}^@7`@$m!@y45_M~ZVx-%a`4}+io~rWaTc2Phz``pm=7{PD zrQbUQfz1As$v7o8HVeRv`uZY6+=2BRovln-VH4uj{Guv#)*YP~EXM#AhP4r&N*x`YwDr)Yt#5ocyffk5opS>v-iB)MgYXi84zl|@ z-4%p8D+ph5C=+5z+}WATVZ%8AgNs_`LmVw%cD5B37e{L5Wy`9> zWA&AuZ^WX5;LuaP(Pc^|^P^OXE+lm2%TPf!z?X^-bADZ}YgAXr=)#32_XSO3W1q~o zsDbg8@QD7x(*@l|U|=8!4mtkn*;|S{HPVjl=_CYB>RaPxr3d(u_)p48)2lI(zo^K$ zcBQ9SEp`E-?)c+R6B>nLewN7xz5f+parx$0SFk`&1&Slc5si(-&0Ru;x5xOX$-a?$ z9anIi&RropFid!QZTZFTE*R&j$v)>47ypYpa^@(nJQHO1P9!q%!~+~zg3LNXcj6U3 zPBOQK_*a0~nr&o`AaA`1krn)&kTZ&}LpFs_0f?aj*-FcoKfh@_#u3Ax#(EZL5H!`U z8W6mmo2rHJNZkz_OY8#5{E;ioPiK7;QELw`g@#h5hyF8W6&DNL(TSdNvWv`fxkCAy z-0?qn&-rP7p_}-r?C2;mv|(^Nn5$J?XQNQkRr zxl}fVAwh(?6}nAZGa;{Uy?bheQww}Ren3y5Y~M0=<%*)w-|auJd-rp46}BZmIBrf` zT&#LpfFsv&5@B27$jo{)_J8L6E6}K;2vOSXK1CMbpDT<7-vC18Hi|iz$hbHK67>Ns z^aDS{2D$&(F|OX>yf{T#u85HfY)MD8rb#Xr?0rbFuK})fIDt`*XXqn}s&vy<(hQbj zJCYa*u25%NV`G#bk}0C1qASA>2OzO^(-l@AI_A&tGRE8OeVgmZA&`|Lz~m7q{d#ba zB#nepoxtG|Q?{Zl@F7@$?&)bmAk77X$2ZS5M>6utO)Bg6rR3Dsny_kEj`?JcT|3T7 zE4^tUgoExjlzY5%#Tc8JT2=$6+tP5?cq(0BTMP! z_;l~ZSt+L3k!xHc!B*0c-iTpOL0JmBF+gp1&avuC1Hf=`dPH^1`tv8TM|BYN)LIlJ zJxyn11acGfg4SeCNQ15St?StN-wtb^k@ajH<~e$jQ`(7wPiAQ2#KH6_;k8`T@Hmw)RHf&9ByN zp(;;){n;kU{-7$y;aOBz*kvnOx&wk`?9g<(7^Ww_GnvUqv!D5A>r>cO&x8`I=*(p_ zoGAGR{X(s=yv`i#C^Vd^#e-_j!BtHc+r!EV29$h{;gJAB`k8|vg@W{YFSs`p zcHO0)peRep%DR$j&!0fTbc=0@HD1&C!Z9{!TZ2f`%U#@p>7?;gU7@?0IbE-b%>I=} zfl8@SC``*vjcl?UJO49RP2##d+hD=1!kdQ58lb~+L;3O+Y$qm<&i`rS*=Dpn%jgPj z6?fwgaEf|dD;%Lb$MvOBdRs&2K=*7RjQ|V6>RmA}^_&~~QPRF_8Uw1OAHU{4nk8TR zpS9P6^Ey7l>&vfqntf}rssM{sN-vP1-}W%L(t+rAhjI|++tBy<#h2k|!oC{2wckLL z*ODnjnqDA9x3wfRh*}`KxcKGrcdx}k(gTza#yO7C*yvpil&1Jax&UKW)7w)!r~1cR z0TJ#+Kv=Gl%hSevU9AJ3XQmlW?oPN#rp7`e@MItAMu1=Cj;Rn;0&1XYq<_gp;AKvj z<S-${c#FN_}Vr8pwx4Z~P=d{LmqjQg&Ha&Kvgx zgd!KL)KCH4yGM11#l0Pe5a1m#%LWj-8e`vyPI7Fe;=1Q%E<46e{D!J&oCLC3{C{cR zsgvEJtY+224p~dPE*T2Y1{z=wP!vGNwhWT`SbbLcGWRjB(wdr)g>_`Oov0c{iRt4yfuCcq>B&k;_QT*+Y?nJmi8;c&fZ{` zsYlPZE{n6P_tX7)adrRWeN#2_xuy#yQ?+nM!-=7yLi$oQuqAuoBcvv4|Cye5ICwWO zDy7>t_m%Ku%H`C8;>$QybA=nq_pq@c1ZE+sSwcBTRcn5up**b38uW!cr>>~#?!}a` zz>}YQ8=fQx41FzSIO(Kmn)yJBrJtlL6ZtXYl!dP^huLSr%@!y;NS-y#Fmcf&yx06X zziR0A7l-Kp4~mMwiGz&$$wRH1^G>r;L@y&$Xo<=+;lS~T){@+a zuhkkC$4o1DDVg$VsG|bLw9`13u`f+>v=kuFyx=)ky_pE%rx;;LyGBc5KGwY+m zL*G+Iqlt-$FwhikdMhwwQ*^IE#B(}uZ28*L8Dw%@e%vtQYB`qos<3l`luYFnEk{y| z!LaXv_ApZ6Ri&$+fASaVKa{%nWiJ;+L~gi&Qq9GZ3%wQ#bu?0U4ydHmxflq{A2@ob z{%(k#jpe)XoZ`4Ql&ur_^cj%P!%Dn~lc(Xwo13VEBE=7%HoyJfry`-zJ%cXVOu3wU z<q~JVR^)fnOT3#tjJ#E*e`)()c!;a(Qt6pZwMf*tD zk6fQWPnTP}C@}OS9on9$U3bt1MaPE20n%vGfkKPcEO~gz6Fst%=xAA0)987(;$lgj1jlwZwcxKG*(}A=V)1P)mBP>W1iSI7p>rPf z244qELW%zZh^4fh3>Wbo1`6uru8&kyz&UGnTmrweSFcwuPOG0ii0z=wcS=aCH#m`Qr)4%um6gXpBz$;L|bdJ(+LNZOJpZKn#Ckr)uT|$G$ zbOj`Vc{1hIE(=VqdM&nQ-AW|>B)fzSN9F#_aHJz1v8iOgNcQhbBVM=EJp(_=F>FZf z#WfRu%rxiJk*}B6DE{wf*5w@3qiN?kJ~oLr{=59>NsIj=Nf%sc4u7zdGO=n8f0b~8 zId*}dclGHEQW}m6Sy@%NKA$=Kf+%3d|r9$DG&d=r=`|RDx#$jhU@n1gm{`R8KPS^15 zha^%qil_Y&&yw(4|58ji%a|oMo`2M5FQsQRTmwsK*m0-qVsxgg4=O6wmL6s$+f5Mq z0K_kVWPZo7aj?|n&>2giJC#$oL|=qw5$#nY#1;rSbC>F-d@|1>rjVe3RGZz134HJI zVA#=eEbZqvT>;)Aln>cg z<9Zav=DK{&O}(21)t5${%yn#(_zcpL)o2HXEFgGe!$5%8MB1}!%A`rtFTgCi1?f=} z%B?d8uPwyLKF3a||B&Sdll&V(A2_9pAZ$20k7o2^t;bCtdD*C(ovtQeeHpZ!Wzvj|N9Ww$ zjm8er{cPzv*gBGzSLU-zBkWLA3gfGK0*U`(H~hK!{Prnn{J!R#Rdje!(oE<`I6Dg-BQ3PlI_Tk zNl+X~>oYHVO$;;`F*+5(;sYWZhiG6VQAx+iaFr8m54YcM_op-Z^{L*bPiGirXl~t6 zIz{Wxdfh2i$iV1x#jxL`L%B$z`(d_|P~q%&gw^cH+Q66^dV)#aFh9yin?xq3%qO$X zysS{&7ZP3Y*Bv%y2p6H!XGR5B+<4L z`2TGN@~lv=SXd}rd81%^mPD_E&X5(dh^=A$V~5lF(6#>7-Lti6EV4jD+*&TD>NcgvNmB&$ge#5EysIV}5h$*a10^a1h zDVN9QE;4Dk!ah^6VUFtmwySSajJXm27#reUkF}CXYXqPax{D`vs0~%DqV&k$kpKIq zBa_;OthN*3xpGhqUGBRv1au+}S zNBo@4k`W&kIXw8P>@aKb|J(JG3=}KT8r;Dnh?K(6SOWb5;{Fhw)CrNLK@9|9-vjMA zDjzdN^R9Sudlg+G?xyyGA&YCJ#h;*~g6%G@1`(KLCWi(#P^Lq7aUMcai?+5SOBXpR z-&f)w)_8M6vd)C|iK_$PnNQ5@Sx{P3Lwsaug<6;iKHWG#1}wV3mIN|c8o?-NjJ=tpAaR+5EU z^cy=x8z-Z%#eRPmD36K1)Lv(}=6Ich&SZRxj zU%vm=|L=M~2zbOSb^LqBlsc>(04~OmrIi;y*Pn6Bs3-{qUA+ZJ){x(+1rjmilho^T z(}u4^V{w?|)#?-%6NAYzFgD&#-3lO~y#516>_XLqGZI7i5OUULio130fMK#o z8fC}7p9D zz>(S}bu_j|qkCtY1D)P)bFqZ_)IR%H_a%NjDlAf!Vt8f->M=Q6>2bSOe`8>{+>6wp z##iBV($DYJKpvPF$v z4(XSoUqF~?s}ODA+Si^VIC9I~UmqPODR7TU`|-M6^y;e+#%_Ivs>9aAmgWt}%h@3}{s+qs%J}FmRC-U2V z;$%Y&reP?k134>JG}5BHG&DkTg@yY_PYkkE#hh!g4o$2!FGKo*-_JH4q7QNl``uyW zuK`kRxc;TQxL8of>ZghS-{u=_rEV4Y<_u6)AD{ZRIUEth=rB;!fc;>0@ zQ#1pQhdBKXfxw)#6|ZBohpkjw_A5ts6ZCrXE^$=a-Hc@18_w~v$`^YXBDpRYvX1w! zv6h*X^t?w7joPUuXPGEPO@rK(wRiRM>asDml0Hai#i_Xu0j!`%$pXN{Z>)IKL+BSO zdUYt|XD8dAl|d+Srkp_>17cfCd;8lSb~*B&Clk*gh7-YgXw85)TZfYhXy!BN$arwx z0|O|wCmmU|hanK<(bE+ClDnJbZ9^SrJcmdvv7tlStRYZw4@(#&h*4uOAFjZ#E}afy z9MUT9yl znjMBQ`|7=+?r4aK0=V$lsZ}q9i*U-pp@olhcqw>uAeQ@If)53?#&@?f47r)DIG;7=G=4~Ra?2<7v^G?`H8#hZwkZ^OVEP}@UE3Do8JaguEuS?* z-r@0^GGlTtKSR}Q@yvUj7>63S^&^%?DRW&a@6Uvev9UIQ$UFKEfm3w4GlZ!bvL*(E zTGy1``TEwNWHkKO6>FKa)mM2`;zPR+nKWC9>s>`~6JeeF=B}N^!nEhbU!H1}c+sC) zU}k7Y`W|wg%js8#2`I7M4H&3-@YK7>Q*x3G<-?ViJ4P-Wwg|Ol#``0& zO@pfFoSvg&k)RG+l!o!Bfw1}@LedV)_m4D0v^F+-$;A#6cCKDdFp7MljXp#M((i-K z*}4I2F_FW2DQz2&c~UZ(+HEVOmumai+rKD7s)}#?x1v+OQuz83v)~mP2A+&@XPIMmFIk^# z!^-{(*?=yo9{?x0KHs$0NksjPbV+RfAIO+gZ(TllfeK~MLL&_1*u@g_i2d zvWi5#T;XQ+SH+P|n@jCgqEWf{)CCf>aUO}XL8g@`SU0uvHYGuip8Wio;0bRMnOM(ZOhnXD0xi^^3aT_*>%dnp%3us36$UBdEY96h=D&a`5WI;Lj zYsE71u!`DzDM{prPpm;0ThxR6{C6nC4~mE+2-5tD`aw<>pvCQz5AuqHdFf0YLl#ZP zPaq?E_8{(hK_+dd#_RBK=zvN_ZvbfC#X$%s<&I8uP%mea3<+y~KYO{E8-jykOY{x& zM?MJDTE%F4i=@2pr-0yjs_qLm#EM}AvOfnU0yOB54icS(+gqB9RuASWjD!pKYPGUn z+cSxS8{5TG#17IQJHA>o49(XJ2y9zP$Lfi6{R5Bv)C8+`i&99q9K36e%t;8&)gp+$={MA@Jg@u;`jWmaZl$Xe9t7*(JvwBRNue3WdzaHusDqC>- z=&S619!c3&x^c<^fRE}3luH;}e!$Iudr?!v$`v%X&wxGCu|4_3NKd5s1&9%qg)Ei+MJjBoAN*T0>ZD;yq(C9o*7lGhjXQ8W9O}Y@*FiNZQ1Srcc0ze9vr&dISH1 z8d|bm&R_4~L@nh!lX^PE(Zyxe=+yC$Vpy`Pkt6^aw5|TD6s@~t+a(Vk1zEFWkxaW* zPavr^Mt##%)E<@dKo(M+Z;X4n2r{%UGS>Kg4?&c!AoHSUI7_}GdU`pIGfPoF>O#zv z%ghAKMcF1#dhGSdY{K$WHw-onW=og2NZC@n_@kv#qV;ggaaHn!8|U|hu7mpd(0VLU z5N|i;M%H|~Ky~@G-X`*WL9iaCgH(M@x}=dSjOt>>;-cE6gO7z~gXP;Kye`uvox2rq z0TMfV+vL{3dCKYFS}9&J}ruR7s+ZOUCbL)>uFCIgS@oEt} z_h`vk)RJ3|Y6oA}YFziw@({UEl~z#iG$vLz6{B{}#Dp@Qs_Kn>HBlI`z32Ge!qJ<{ z4wswoeOvlgxy9FIQ^-0h+V((+UeCVN66z>^Iq1)G_dw_jXbz-X;lz_hAT&`7d3}Ub zFWNfe`MKiN=;&j^1irnv$I?zF1djJ|gTk*o*QK zj_f&U{?prj0$0#5CEf9#AeLu9N39MluDT(A187T+B*mVoUsLbd$LIm&p_m0~$t_$73u21gKF#f^Z6{^H_ti+Vt3ZHDLTJ?uV< zm;SNT)O3k=V*}bjkr8IHD_j;eoUq24>AsfUpC+YC)|0$F`o^P8fB$>|j%#0ybhK*_ z-C*08{fWLn{_==0`JFEf%VPAM;E%K$tW9j+FbgGH`4LktycPQYS>K?{vAC~T0Lt~% zMeyh(%&>;sNlT&GJw*G{A~7E%qSXl-bjf`EjMVH%g+yw%!F>s**P_ua3m!w4iEqpy&<^eiu^_2!+x4-rtBP~Zr{LT(O7G7gg6 z`{POxPNLFj!lIsJS6^GpwyJxWtp^S(s*miqETA+1P3t~XX5wUQyu0c}G^dU4n`Ds$ zZNw)<<~mfG!hbO+e1G8y4U15CF7-Xgd}2tZCdo?Hl!`>tEOG>OmBo~kH!5m+#OVno zA;P~AU1F0eq^U@p8o}<9<7n>UQYIV;xkwhwM%@3Qjf6en+S|<(_td9;da6$KBDRMo z|ARWA-d@!B#H-!WGT2)cZ^_HlftkUH{h&Uga2WM6QGFd}6AisF)vd~eGt=|){Pq{G z+o#K&;Z*!Ks3sQ;CWl+XhWy~Sb%#X3?@Pm%kO`!HqyZqrESu3@%JdIv6(>GtG2Xx8 zks;|h>3t^c^7)OvRiQ^vkmwCp1U)&`CN2gA0%TgcLKo|%(0g1fujKyA^Y^C~?&|sn zP@TNaZ^>^T%Z}|jcq>FTb?V+p}VJ$*8iH9>xE*Ku^X z)J<9UKF21vb`y1K{B=kH+4P2?zj^ZF>pRFv>INCjU2P7Vh^F;@o~Z7$ubx{6w0tX? z`h(B&XU{n4?ATvmXCW2XP-wzK@H3p1ZA(YCvb%si6bU_7DOC4eC*&{$m>-HvywXi2 z_&_8f^Ya>V6gz5MqB@|rf3(;T8%@h<<%>`~>fWeaZvbLORBnWq2jYZzYPT8pjwES$ z+~?0Y7J2uat* zGB$Gt|Mqz?J(g`@meOaxv1ZH7FqfI|Ta`0r35K0*%(6JxxC;YEFJ`>GylN`}wT31yO@;^$FQdylH)|Nb#TbGc((pLDnYT zfAk}#Lp#{htXQ{$clm!U9cbdvaMWw(DYNFD?Cf*yeLq>yneix5bDDo!K>oSp&J+-KU8Flah6p+`tAze|gu5VmzBlIZg%?IQQ;{CH?ZOUx~di zCo=TBCYzbxX2PPx2tD1A4}M-;ZNG?Q=qp#$I_Q7fo4Tr|8*g4;YzhqxMM;tR0ZHCP zmOZGu&shj3(Epz1{Q*OT)hC)j6iGb7k;J4|g^NgWT2sPMgpGB$n=OHw{dB(`->U_ijGV0Z_M~Eu=wMI!#r@F^s zZ2)c#+PNjKr^MLPro)+GYb2HY-uw0m_Iy26we`wD-G7JY3CDH2;G*o)|%tB zN!xSSynW-@@De9NMA_&Zy-_5G-X&leCfT%yhJ?@@G{DgDy#2mWY9Z(aE&ARWlMH(t(vK(&Dql4_1#=l z^t8 zkPK#P=Jj+2{&kKR#f@GmC@PM>Pcp)}YgIk*RcVv#*f>6ZB)zvTtT$@~XF8Z26>uo_ zkF8>h+Ml2ekD6?Xu4)#aHMvXaD^J|R`kBuV^C29{nPoc9Rx(0y>3h&IfV&X%YH$QjXBO?|g3KzGui^JMnPX z+gDf$Lo*=mja6G*WGs@QR^$e23q9&TL$gOs63PiU;f+52ZV{=fNc`G(= zTKw>}i+ ziwchkm9@n^`qnjS1iN8k{@dRlWHI1uEOPYnC}H)$_oUUeCYmFXDY^hQjEVG3p)H8S zB~P17<;+4VUi&K1HbX$P>Hv?S`hlVQ`jue#K;YG(NC7M8Sn6}gUOdwFx7F0Lv zt@9k-VJ^-VWrw3w>>k}xi1?!T9!8zJo2TS166R7C&O_5uRET?yLy{PE?$b zhq(!a_RjYntC+f1T1p?p+;U*nQGD37TIbkxymB68w%Xlf?yZaflNHDFSO0NZffSVdBdFx!qjBk z7`@O{72W?JK|3F<@7AsdBHpAF5!Sq*l8q#xOZ-XYf3Tt|Xp<0`E0>`!&YaKJtEFvf z;ClY{IinZ@sVdQvi9nIMEBdMGRc=Ii@-eSS>uqfM3cG#1(TFqq$t7cBNE+XMc_@D? zYk-O;A(x)<*O|(T+aJmA`mV7w-*FpvqbOTzY5aRvbNVmeVYVnioqB@~MW3WlS|$0Tgt24y&z<#(CQ(jZs{6t^Wc651Fid7- zvf9hJb4gp0=eJ4gUtjQfv;3X^R_u#_oIH`|8j1PI(sQ27~$nb)Rz)rz3EBR@EZ z((5Icuv6Vs5%pbp8lz(s3KKts)Ogkpb-O9dTFdZWw0wzG12zVX`Tt1n|G$6mGf{1% zi>w(u6YV4#dOY@rTF_^MgTc(XY_flkJo4JR?{f7-A;(wY6AFg?(Qk_HJDoaizJ7pz z{=u{PI-$n{-wgC#7)$D3Y$w?4+pkSvEk|r8;kw3y4R^E?abaZ$#09(WRQbD{hdwQRlt445q$2N5emJp80a+ zLo~~!_QH_Fn8PjBCxV4uNN&B!E!u6r-0ZBC7yO}#halE%D~V?)_w~X$r~LxI<}a2l zwwA+rVn>V4L<&W5eI~7*81&zFF{b6H8{%Tg&36`4Oo}OO#!ONr%D2z^PYkZVTa2dE zjJ~hwY^^`HZ9~?W&-ak`KFOmT7t@WmaWk%AXEdUO!rD|U@9*V$eEJ=S%E|Cwd5b}` zeJZ|WmeeB>dqP8AbR@su-6ZXpmtL~;N`BO)Qu&mW{lyX5@Ci??(%Zbe=&t)G7mLaq zIT(8uJd}{%e1pmImc-A%i4`q9Y+ii_D|?EIZFJ&nnlOZ`&%R9#(=D83_B}h)%ZQ|H z2<~@(YDx|Jty!F~r8(qj_Gw4v6_<6~ZjSZw%e>4~?9>%a&*Wl%NTE~2w&2Ej>9M(l zWZ?T_oYIh!qw1m$Du@)I^|qyo{+Oe;&c}W#rr8#}Bjn^hrr$d=w&}> zTFk9F5J3u)weNRlLBT;Qh7x0DkjrXqmsv zJiX`g*6_}Z>lYL{klrCp4jU2C8px#~wx3Zysv}YVp^MB^_kk=0>(*eL#ry&VI^`n# zAwC^fY=fn{OP9cG0$BqR)*?-*QvYJ}7%0A&pBpob14eH+?2rHbikwlT7^^7xA+EtPO3n{^PbeZR9|`eEM>N>4AU_javvL9dywA5yB|0wp)}d>S5JYlz+Eq_@%Kw4B1L4)* zG4Ul@GcPiC_BeSimQ!%HLp>vT>%K*b?O=-bA4BOkwm3K9N8Z&|PlzhU6vPdEB=Ko; zie0EM(+b`iVzf+UxLj$9u)`x)9RL`dY4q>wIEHX*J@wYwPYs{Fov_6&GChKp<5+2+4b81+by zFc1F>uXB;v*BV1KoF3_^YMUdGS}1CnN)+s_qUU6f^JQJUftg;v*E@+f31cfldasfc$9WEJ^jtGc9~m`~z7DJZc!4bPW_11kj4t%YYky zn&M=j`nv6&FL8xKRVl3xY`8$u(zsj9capFRyR=?Xa!`2qAqN}>97;e;X=;t1LSwR< zu^7@J;h1RBw(%@i7~7Z+{1n8j z5{N`9(G+KWz~}3AQ$E8>J|mF#H=HQ|rW`FTGv0pTL1DO4b{chDvqI-d2kw=dMZ4Re zL0Tu;o2j}sVa%({L^6#mJrhSd9ZO`vl8sSni~GY9>^C^;sIN5sKP|xh3yFe|mV%bQ ziIGfj=~y|MTB4Tz1eO5G0wQB%`w;U`d=?mQrRZWD>eHE60js(x4Z}0WyDd`x4NQUW z$d=+s>_;CJMuR^ZFF5WU`$c!L<(f7$nZhzf}$?^I}q8 zqI*SAP7stAbM^+i;*SjOhYoC*&~-$GQAj@>i8XLTOI8Sd4*p=obIcsL5&*319v}{X z;0m7;RK9}zV&d33B(Hq?^~bvg{m07=qThzd!gkmwW?g~Rnn-oKhB0>|Q>ee%xf?cEB-;afw+@Hs`dIE}@GKiE}8+G|w>2de!UL*R$&uN$&z@0<@yGj+4LEcwP3e1X zhu;!xV~Wb^vxg)K12U9gQv*n!KsWCxf296hB1GQ^X=y!+P69IUuK>34YRN;-A~>HY zhwh@MdAEeD``n9=mK4uB1~> zCt9-~NOx;R6$h9I6V}u|9Zc)XbZe!#lCY%BXvp*ER%vnZ4WJ1{buYG=i|l@eYnuoC-kR9@(HjpU+&8Owq zDY>~|d^|2txB-VinX-bb0_*+1hFVZ(3*&BJ2c(xsrEB7(Lsjq1HcS{e`Y|1l!WRIN z^}TwbfDfJF9+NXJ>CEehuQG9A{0kh#?!o8Zv4G4V z{)F(hIrQ;Q5v*Bs&d~4`c5RUJ(C6=X?T*{6kK`>P$$HzAzyb9~-Gno6(l4+?96SfM z1t`vQcrt7yk0Qwd`{7}WCl!c*$5ux51&&8?y=wdod@soa+mZ8}u*^1qd{qmj-`xI% zqUOS`AZOI{$gB$%yz%$X4|F!dkstuZE39G13kytF@_UZBIH5aem4hgEPFC5SM3u;& z;LqdrA>|VMZYo@XS8}uj61w0Xu{1S(0v;Vgd1880PcNpGJ_bB%CC(n9K5NXPf1BE% zy!-M6WE&vd+Xtg>K-mOf$717dBMv@8KC=amEf8}jb#x;7?4J?`5dQgQ6zG?20RC7G z-e)-I7}w&J$lv_;>rZn4#IEraI=cRWmHpog#NR?9WoXDmzi4j|CipguQ%yNFkheLY zZ31dN>Wgi~K|8|oxTwkD1I831vmig9>J|4%xk;|&MLX#v;>*XmPw^+L{rcmt2Dz!D z9yl9zO7Tp#d!I9}b0kbN1Xk#1v9YouWQnt>yd2roxGrjPY}jKkO-cQ8}JR7@^Aw+yWTLu>MmtmW21i@CDzd8S~rlT#AE#mo4pHgW`ik{ zlDqs-3InH7Btt%KBGk+>*)FbA3ZYmK*dICn%o|%qiY}yiumQV*{lQ}S^Qq(!bkb&c z(XFM2M@%b7c*xGJGBW@6Kkj7p(1TMJ52nr?Az0bYVXzE##K1VB`3j>kEkP5*v0+x@ z!1Q^e3d0i+B$Ryk9C3`Jr@W<+(FRQXGq-=OZkkAz2-7AJlE~%a8o`F#flX zo-*&1@R-GZiTY-mmTR5|`G%ci@`Y*N9enS@H@L&i2{TI(UAN-}agb!L1dDG36gc-M zcY^q_$LA5gKLaz5Q68l!`E3JUj3-^g8b#~1Z|7AL!z4DU^bZ#~6I4GB3Ridz9@CU)3meRFc6zT*BaRSL4BiXp^8?TyUrS89hn*h7de)G~ z=gt`x9EHkLFs%;)V|D&@d=13#gWOyjRKh8`1vqB$2h0NYdWs!?6`BI_vpE&?F^3Wk zlWjnn`J@c;t5vVOr=1d(bs+qS1DmTvaRO=>!XqcnF4(q)MTMPw5AA|#&LCpoFdW9L z;Q=1s573YiXY^v0D-cys?+_q?m()`4u%gF`ZC_X?`gahDY5tH~#5{AK6KO%%iH&Jt zfoBN7EOeZNYV!9T84s40RZn?4v)ZXu%rJzY{oXwkKNddk?}Ac5IdeEE5}2(ZbMuP~ z{R3;q{Yhtq)B1!k^Zf!~Jw%x$5hY&Zuq49IJBhV`g5Y@-HZ6=RQAt zoYW?BnS4E*44t@KbwlDInr#4^6UKtQeECveekq?gt@V&e$u-;=ME8-gRY5&d-7jB) zj~^nO;BR3|SDTZI!{WcV$ufN*4q(DA@D`I(nlK&-Z<>vqFG2e^CM8j*9-?l=_lPsq z^oH^JCMG8Tm0b99@J=^T?T4hGo6oy>4p!vwpHzSC&NM*x`oVoVN%l1vokR>(G(5BP zTh@KhLKY%DXeLRhSh;J*UF)EpQ7{y`Ln?*p4KXpbSKe-eEss^_M|F-hu}QS4CTP36 zuS4hy=#-ca0TZR6q5Guc!-(7`J{$Joa7^nTeV+s%-1zKSBuyw6Ij9AUE5uqyIbBPO zD-_wQC^r)wc6#KoFm0`3GA>mj6-G9*@zzhqZ`){J>#qV@KF<@imw zPw!$Atdi<-Z;{GP1itU83zTnv!B|v{{m8 z{Zja@i)~$xax3^(=E2NB#@fQmAVqeQQJy%7q$p~+O9dLDZriWOB56-)cLc*xXAf9g(h!r_x-~L7N_v4}JZg(m!w^J3OMv!C6*e6#l%)8nRZ81nVXn_?trVI2 zUlUOb$m`z#+)D4WCzcs#Pmn`pD_IX?7%2V>#B79Gi{d7L`esyCUKReq#m3Ie+fv6E zs4##kmU~c^fovRY1xmu~283gUv{@s1%K3571P@iOmjBIQ@7>wIzl11niYJ$Ibb?HyH!Y7PL3(6%`k)73uDu?Loj+=Wyhj6J>#luM3X;oqF@CC|y_ z??Yqn=atv?np==+Dhl0DF%8;G>=yLL{ASQL*Sh(ergz6?} zr+W_RC@Z-c1h}Z4GuX>HDwJ3l;@kcj*%dHS-$vOGe)1Yj8ra+@-_9Oqycb_qTs-fM zHjp(~x~=jHBt4+N?dzr>ceJ*)#sH;n=un9USFCF4Zi=(n*x#T#Y30ggjBHu;5_qa> zJWAAez+7GzO}{HjZW+p-L0nIeic8oFpF*--9}ZRpbUg{s?sz^;jKxhdQDca-W_PVi zBPYy0=6vX82-o$eGpyo4=Skl&ID?#nN}SwLn2G+a z{wtG2YTF`Zdc%4b1#Y4o8Yi{_1_$8TfY6>Dmet2plpRh6rKsKz{>fNidYJB3e6>ml_6N!4886(o&iT zYm19}4B9<-^P##Bu0ax}yUermUvMOzGd7mSM}!w50&keI_Z*(}k4O0H9P3GtEE35p?rif);QTZ@leBbfN{0w}DJS2Bd1&gUY>m z3x%Z0ExLA|ySi>M8h^Ah45+4Qx^KEkXE(1o)*D@oJ7Y2Ae}Q#hvj*h|%_BgmNuOsA zAta->2&YAIa&p0Gk^3qYjaC;)=hUZxkMX-u{n=?nLK>z_%dE)ul4j@*{m1E|J>Hsy zhe&A9eBh=Msb=7d^BbH0A8T*^Pxacq|C_ChOJp9FAtV(Nl46;OT0)zm%%Myn6q)B) zk%SB-se~jXnN<>^s1!n!22&x$_gLMZ_kZy1haUUB_fBiQhU+@7^E{5{L3G6_gxbl$ zS38G_9X}HLp|@Jn35Gue-w*EhTXMZzU1hg#*S8vQxfiW1u0=PI@$oaJZGTisuOrqY zZqhIrv&$G)feIzleslzIVDiPI(rQej6fF*7qMT)G-nYSlZm4) zrk<0V2E<<;YRdI?2Sdtpy#eLr6UkH*5jcDJsdEk`|2QGzF57p_kY}?#Ed9T>(l(y5=DuW9~k3{P;R-7^82tD924R3F^ibp>f0| z;<`(RasIoaU3#Gup>nTH?8%6W4p(~yukYt06Cp*zm6WD$02V30{XpkLW+Dwe`t ze^@)HX~{jNXzQ|-tOhhr)JXsYRW2`b;gU0R25IpsieW4XwtjtjFnyx#pA|)4A|HK| z)4~r<^yI_7#c{+PFXx0H9j)|5CM$upvphFn5l4u^vlFs*CJI{)|LlEqp5wI_Hjplx5aA9N;`pGIed$HSPy&FytDTN*u4;>6B@A`{EHPb?bpqK*#y(r ztMr3e_2&zM*)tM{kF#{qZik5%D??OsN{&J>j{+Nw5ar0S?6iu)?!~mh8IO@h#Arg7 zlT(7OHeL;T4CU1rD^_p??|Y-d5W6TVC3u#H5_(zkt-&nKzykWI7^Pp+M8=2fw>BTB z0so2yO{9zNJv+*l@BiA`^8s4@A8@=P*N#Oo7efb3rd<@Fxg|2gZX$y*&Ynp=^!NsG`VD;PmS8?iUVu zbXGWSa_^doP~Av{RG=*vd4WcVa6jgW<%`y$m#>Ste2!pjhFwyY*^=QiiJ*;A71lLa zq4?yji1E542XySiGu)#*q>R42xi^KLomYrPa?L}j6zYs|Frm8q;6{Y3N<~=WQ;xFkCc>F9HG(A zZ_sH~7|q>9ude(33Bdd)#MS_|Dh>$mc0pp}IJ{1kxJ<{_e-Ap@+aR+5Dj9E|^FMDL zA1e*UYuBrTld3LTrkql^o@DL*4?||T!NO8)a<#cHauq}hB59BQb()&~EA+N7Uy!L6 zdyRtoKq+#O3$@CS%8r9O=tfv0a2xvk|H6PZpnL~~Dad|PE08^JV&WEMC!bWaNA)0D zHj1MN5OgY@!vxXD#Uxz`tuFB$wYi?xFZSxjZKs$={l?)MY!lcT;x}Hpa6o;_WfQOn zfb77D{K7>H&^MsEqU<|WdtaQ>IRaP#(U9z7o%B|RUU!+k4pD?j!~FkaL< z4pk}zsm(Xs5{YMG4VC{sErt$(`nrGzg#DF2B#%e$Gwu$KkT{J0f;sg!Oj2Y`kzmPD zmR5yNFY?}DXVuVsm9~<^M5xe!>cpqpwTrHl7^kdERLPOp(s@Kul(MC$R&++5piLrb z^++nI$ zVv*X37rB7Y;6W^?It%|2d5 zRENE(i2>S$Y41J7_60BBw!Vi&eBPWSu`The4A=IA@^fuPJjLy9Eh$>kG=ZAxlH-qc zO~VstpF-D(v${GQ4mjdHfSbw65YI%o7O*PNYys74+P@tGfu)g9v3niJjoF=Y($%%% z-8V4dG|_54gki_=+_Ouc0gVcRufqWeF*A+-a#y-xKKoeE;88YFpWC(Y|d70Y4!wh5N7j}K- z_yW1M4(gUhov35RiN>Cg>UWG7G4I+jdfa$d#Q1?tzYX{#3q_M`98*u(MGj1I*xMP8 zKo{NVy9F?-pHJ^`pCm zIh0jPhG23VrESurT;1vNTuWuo3qnEhC*Db3*4|T52mU9~8l1^f^O3mzruY!A4>76( z8}0Dp&`>F>Hit@#9prde3hn;mX{UxQSD&-BeGi{=I9n2Ma_AIzp<9H%U618x<4@6# zM@;!1z{}vX;V6H}_8Ng;kg32o1i_+LgQuMKfi4%n)^0=P2K}{%fSMq~A7h3n-^6xAkGu^ahiQMob@M9^UyJdJ6btjb?5&*Yf9?IZ zGp#qs-=D*0KzouBv4@3?bZL`b^S9l?DY!g?|9lSa@EW(Nt_sz88_R|(s20!5Msb~* zMV)w@edE=Qin1=ggqi?K)pdRPgO zS3pE(QoDoeTQqKcxIS_0au2K5-pcLtS3EA!8^~$04RfX@p;#^f#0;~mk!56>8_jma zEZ%}`%l8$y#|l3(^=`XfSV(J^50vp_7M+0UF(;y#zA~ z4`bXQ66%U%jbVEH;!DiNcZ41A4YtDM7ShAmcCOS7?zA^`D^G@Lq$wE+g`bVwagduc zY`(Z#s7-ZVV=i^TfxhNm*JMkq&IMW`eQ9+4`6#QjL*epDm>P#Cu8{&YS!RQ%2p_dy zkP3M`9rk=cBA}b)X4`r8y@jO+?7AaszaC)K272brXFqLO^I;)c`cfTCq)VbpReSwI za3ilNc;}0IKiwncY?NG(^1}N09WS!f#$PNHTDgueN58laV$4@0r@hr$#uTdMCDvWH zMKSDFbLurJlEu&ueegqvBBHi9?T0d!OvKu5OQF#C3RyFicH#=$v_zuL$8e*lkGxL8 zlzG-e<)?4#Asg`W@wHm&g>cMnl^sOGj=(UxjpE{MnQk8Ax|KIp!(vvG9i=O6brlFjxFmv_Zc=5NHRP9>B zzK^u=U$!)7+4;*|YYtP;Zt*!&v4+#PU^3>t6ErG4fBTP(S`?|8%JOJ0hrL}3UxI{1 z^N`#?jOq@fLu$eubvhm!@>w-7YnB~KZH=Cls_L6XCh9vm_Nx|;j8=+Dg7o}LqKcJRKgl(LV=LDQ?fZG0Np+P{r%)finh z3EuMRk595uQf;M<)l$jW=$J#h<-{>zF#vuNFhtWm>ZsM@T34K<^ zzfr2A5~Ev;dufUf)w8d$TJu-zZc>>L(BU;#70dph+?A%G5X^DAemE$(PO|>A*Dlph zy4#X#I~qoG_WZ6})f=a%rJTb#mYV;*%>6{CaL32wp~-M z{v+)F=B)C^o))ozQ60-y=#s9X6h-f@Tj44eW&O*O2%j%qZWqpqe zM>JMNi?*}-&fC?2yt^pkeDp!G4og`#hw?B=iHL!+S056y6Lc| zsA>D`uc!Wh=PxPi=>1!*FN{jWdWpTwB`zc2g{PTgUe@Pz!9f+Fqucd?LkUd|Y|?eNNG-au?U@Ug zjT7}t^nGr(VaUwYE_>?OR=TN|>x#dHpx%X7rNusLfeC&|a}nR~2$WPSN1jq2_2<$1 zrfKltx`vmhoFjJ^)BTqNY;1YV*#<8)bZzhSC1!pJdAjA=OP#}mZKd1Xb@j|n?`bEq zIMT=;?H<3rTGx?Jb8+p%N1pX&Pb;4G;j$C6Lci}RxVSQD?-caQZO*j0{sfGO!MN%8 zu$Ucc{QSzT@@?b$P4$;WpHI5S^U_ob4-O?vPXE5Cq+b8i;F7GncvMW>DQD>7p7aH2 zZKm(IrM;^v;@T%@O?LX9@tm*8D(6w;jqGxBXZz*IYjy9A<{PozxUUsEAxm5*?5d-= zTfo|9l2vHc?Q&1-`Juuw(_yopBHc$vE}i~c*CBnu)vYVLP=H{st)$zlo#$Lil{2pA zax%Q@>)6njH%#Cy9>2c(*Amy!qC=-L`r}s2m5*k3_*95^sjw!M=t!0%iWmIv(_zRJ zq?&CLY12Pk8I+Vmwih;${FLHZ(xYEM8n1R}=OZOohGd zIcnN>4waC~fG-R7Z=T!lKf}kbsrD-y7x2Z{(|klQfbXhWO6&BvqwV9kcpoZE7U+sK zG+QunWyuj*vOadK5eB+bDi85H8XJ;o(D`96P(YFs?D1!D+TtHNeS0vuLuu;8mbQ8` zrhc@E<7wxX-Uo<%FnZ%_8e^lhuPp-;=dG7bo>j4B75gb*%a|*b@~Ft47NeuY9$ub` zutfWe!>6Y@AS_+VD8pHxUklhBS)LZ%gO5jk_^JEb!lB5&EyXO)K!y_pg4Fb)ry;`M zHBa{D9hd^NCE?z|jYwF$pUHLFL}BAwg(P%CFzvJZh8^oMnGx%>P4oG2F`Uf9tS2;j zG=B{_N*8Nfi*P4c&QL=ybckZRhWT4HfqM{Ju~DgsG#q%cdOj%1|@)b4ZQ+ zzBb{*@;n1V+qUSxGS`h~<0$)K!Na&CW&CW!<~T*nPcRA4FE;gz|IiyDn{GJT&ZX!9 zI>TiXCK*KHeemfNQP@nKzaXbNZhy*=ZS5X5{;w=c+%hUH;V#{O5|aR8e!43uBU}V@50Y0jqp6vGLBou`Z4Veh4LXAU)Pl|6<@vN zXWQd)57#W-PC@r=wf^%*MP=@IAoa{9)I8y*srzP&3R@!{A}<8sA%f!P+0f-NW`~m< zM}tmY>B-&A{e{_(>GAJXJVCAN;(H~JA#&6}(^ zC(`Zqo!st(Xpvxp2JUaB**zihFC5EhnS~a;mup^Sne-~_T4%xC2=-#qy+_Ed!fQi% z3(-F$R5)!Sfe}rN_Js!duGGE1hA>P9>pN#)r@}K;?Fst(72tFwTR={EhL_#!rubB4 zqkt|uGpA^9E4%8GD*1$u^qd;dQb(s14$fdff(FGbPQMsd*KHqFp|a|LgfNU^zVo62 z*i>-^2>%GqDIxO-#*kA;Rl(_!AQ*$jHk$Kzk5Ie};9W z%x!FWXkVi%rDRkL1`@m$5ffUHqSkdCU^C~*Ud zxV)0Jxsun!;<)SmBjVD4B(NEP*5ey4N+{hE^$KAGQbx-=4yR^!#a>jRpNmjAW-~ry z*qEO75C`CP2Q$k}8E;+gHCK#>?t6x=@$jb5q=6UlLLHCL>4mO&r7W@iNC zFYPplr^G{kFb??$Px-0uH#Ww2zG;|8^u)5xhwolWml+lrq=<^Um*c8`bPFsM1-`@x zW1CS1Zq<=HP$A`(l|dm#SN|wVyKrS;N+)SvV?8zWPvj7rMAaLLISczCVb)yErOFM5 zpu}{`6JS;u)6q6|t1B_R(((7iE&Cw>5b-8Y7k)-`$;Gqu{NpDAxEFX&crvLfs(QyQ z588K}JbFj}xoL9olTLKg#gj;P0)Zl-V?ELksCb&scapIf>$SpOk@KW92D_Zy@g-@W zy1oCa`|}GeZ%UFcIyUG8>m6H5*t8Yr{n;B(xe&ahAAQi+C``NQ6DkXoQQy2+b=a2FEc7HG*lfIl1T0w1A116Tqom5xWnTI0hzMXk!Y022j z?(}lZyJ?#w&x}jtT-yG5Up;u6HY@ivoQKjp7__pLXvn|Sc0GP`he(N}10}s`>rSLG{3*1`g^Bj@s;@-i_f|SV zf~XQ@A0DW%u+3|OK*q%Ff?OQMB$<-r?mpMg1&?*(wiS^mfbX@DZ*qc=rvRaxj7V zt3mQH7ml&_gOLIKQ7SL} z)BC0?7Cg~EmwS#r*33JAdzA5lAlovmzj6=orYLunSf)8~Wm$2nV`dkrBWW*=KX*_y za0n4nyBC6DI+UzVp zMj?Y#@w$(3jBfcBHnqbePbvMMNC`X{^1aI6P)cFov?F{?@~cy&6_h0BVUd=Uy*{Jv z{+9pBr=4{++p~vC!&HP;|6szR)LM8tN5+EwDS-&S32g(T!!Jl7iIg+27ITPds0k)# z)JElyt*QlHvp0!kdQ9pof|?z-XP(Pjf^>iGxWW!A7j`a{ytikHKXbmVv%ge1ib8@S zca7zUSiz)fr*^!Fq{_(noW`J!FvCPz3gh;V&2OlOzFJLz1JwWgD1jp>L$h zMIW5SocO3bFJ}DmY|kbl^bNjzR^0q0j5C;%Ln24j{titR6xuvOG?BzNftr(UJB#kf z*ljpD>8Gx^k8URB>L`0#QeDTKM{oM`Z-C-m9uV(lqU)kI6M_By_6t+4?|44cFqRZO zJ6%XktUa|CZtLZ^`toy+j$KG5zi`~hAPy?EGkNJYM$W7vUTBjV9uXH9V9RD0h?h+u zMocr(KiKpb%Hls8zA)1^*tC7L8j<=)cX40LSJCpy<{fRS-=#8*$%&F?SpzCUgSq=n z6%Iym`r8@=sLt1!WzY@^YtqWmke$1pC`$~U(oXo@4XHC4wG(2;z#@~Xfp%rX{vdco z(e+`!MPzr7(d3N(6=&M?_G;K(yh4jZ6yPrCnsWnkxF+#tr$wl8jHh1ZO6y;srg+IyV@`FQfh2C<#5u2c#PTu|Q&YqP~!~Zgmao;H1%>MP% z=u3q?#LmKJ?KbNfIBj$eqe46~s)=+%mArS~Vm$JJWnyJT1VWM@)NVOI-aLOctpL}? zde4VTu|}48pRd-Re1G)hkFO;5BDyNCh+6$5?Os=#kJ*>oF83u#FJwPAk^W@X$A4k^ zf^N5?iL{xcvfOrg2c8WHigE{W z_lMzZXc+l@p2Tk`(!8x{11RT9>!hh<&B9mUtS)nh?B6+kqwTKF;Lp>SGh2spg4=o` zTEFg8dKl03SnWsJ&j~Jj5SGw!{>_w-rTgNBU9v-Q>r%JPWm%iGQN7R*yeN& ze>(phE1jH(_ace)a5UPEoingsIb^Cjwi(Uo4@ z=zYh@`o+}3^+Qxw14^?hdA4Fv_}Cqv*L-{Z`mip^7#<5P-7oHym4M&zwDDIP84qjYKOC9rKwCtPQM2luTlzpC_o=j8X??nJxSV1j{ z5)&#HThCHhyEJl|69qqv=yk4A9@9LCkr}cX)MI8$Js5UC%1CfuaG-$!vwQ`V8WKsI zcezZSzT#VT60knVPB_2Iwc0L8ycqiA3#43lsx%}ALBc7HTc^!QIQ`KI#G_T#r@j+t)NNeXQ9Q2tZH zNY={M?pL-Q#7XvLZ|`ifS1|qLYEmT@WW=T10>y-VAbI7hbzoYx9^nz~AMNVx-YHId zAGroEY6O#&B|n|s9VHvoP|dj{wAi~zuhK(kV~I^g%%1cK!SiSMW5R`oM@xvxiXZvh z)92Ek6+j=Y2K#EP=-If=+N|xicq%RO_l4X3PZX;!#Am(v2Y@t?8igTlE!fDi8?;*g5vG<;dWeAI- z26CDOq)^$1I~r!`+@FmqJ*#Q}Srs)atdt$u<7$SHX6a5|U)dOP`#&oyU)ZGQBYXnv zfn&reA_TRiBC4~)6llc@!QvDulde?Lqw5PKH``N`yI>QCB% z=?~m2BWGvsP)`blHx_Pa{@p;UW!mpbve*&gX_S$VtV1dUW&7CCk>9V;^q!{%1@#}n z6ZZ&rjIdKN@O6w<5<=NhSoC%GuVG%h1wvEV>xbN+^PAp;@IuwQ%_aB0uuB=8whdUB zpG;EhS!i5(^n-fMAl!Zpb>K2JK)l6!lmQqcYl}9G^VCXmAKV-JgBZFo!rmP-xh~pJXwq` zxhb3K08vTWk4QO;U62_^k%bV?2Y~L|H=ah#$BD68h-1PC)oQVrAWJB;|78i6`D;7^ z0s@Nn$Nt|<$cEoSHX)&i3T8#Ge?x5Rwr$(ims8i{q}vgqt=KWzO}Xmng%w4<3&9%S zzkGpQ6Z+)S!ZN&xb>&E+d97VY>Y9h%8-Ib-K`*9oe9h@ifvJ4Vm-cr&<`;a9wG-Ths=Qb1`7v+BfLFH6 zXr+mJ!hxESIWRDwWtR6&jKM*duJFNu=l1K2tZ!=&*Xfqi_yZ9*T}mYfN0(#H?s+vI zBJXX2zoDhZqgA0dY_5r()8y*D_cb0#ASsqfL?qu{jo}z0{ca4!q_p@um&c1F#gV1Lyl-kLKUP!5{mz_GDzlkp zL^c8s3pK5Vbol#f<4nCPCn2^q+vR$hTqD7~X}UWl`pOgjb6;-Wuo;ZLwkmKUw-Tos zlQjK)8JCw_SU92%a_;+(b;yp z+Bw4u8pdaTzHA}tDI%LIAYdJMO}cME`AdM5f{C{&l43K+Xr9qyiuW`4HMj8IV=0I~ zymxNN6Dd@VRq~p%P4or&`JBaH2RlDPKZubvXHpV&ry`4aG#)=xIx^2(zUGosBHzU` zJ;PoxX)_4SJeR7ZLexAA2(e$b6#Z5Xzf8T$CR+E^Pao-}?3=lLuPLI&V|^-g?S!wd z?@I2`BbBM`pgKp=CR5=r&De;R(Jk5 zQ!*vlHRn#|Oxe0KBGgIBrV=bd+?zE#zV=C=U37{BXf?3+9D#HW**asvt@p^fIW?O{ z4&1)6g*UN7H4|6*@8^SaBk-s0r*r!OA0wlR0R~A7nTIo|-!d>TUnW7q<(qLvRBOG3 zT==?_5q0c%Y1`453x-+FmX?M5K`69!F27YaHOf$Um6{sK8Lb_>_RWX!b{J}0Wt!H1 zu9Dzm{nY?+QvPWx^XGpEl^;bfm$Uzk8f{(cV#dVFarC}n)~AXOM~b!|}w zydoc`y_2D8At^dy>33zc3$mOQJ5IejkD$JMFylJ1ovo=^Yb_y3ipVnPU4gerSw&^O zgtaXBPne?x(W>X7omxtk^WQ&Hnjp3;G~lyixVQM^7_=&-C3T-muJrDR(o()7t|$@S zd$eFttl`P-s)r9(v3$W1uH20U64tKHU=-M<@@k0!c(P%dC(v+Z8>pQRC!zNBrw`PkEhoBMHmxWL{<55hwE;{g^kVCi~)&?t+hDw zq!&9U6(0M%XJqAoEDr>F*yme-bg~_6A0*2J?w0(>6hI^gqDtKnJQ5rD8QD1YCJbZ+ z#LT0FI-7r^?2AaiFtW-fxl-%B7MB@P-!n(8(O9%yG~O)bcpe=Zr49&G_|bs)#sAVV zp-4;E3I4F`V{QBo(f$~l8?95z##;4!VFwenBlhAMRHThZv~G)j-Jm?mO!fv;`6KlM z@iEZ0yohAxjCt?~nzOsXlUuDifFz}i2BGJme+slk6eNXVOHz)RA-xw2%plp~? z*o9Pp53}?*b&4&bsm9|-M=?Vio-~6!-o#6MagF!@5OQv~gHm9l!R`PFaAk=MR8ipA zj6%oSY^)}FFuOB%I;@-&)l7<8K2~WpjJygdqv>3z(FMM9MiewQiYC^f-vn8%(8GStt0fuH=$jbkyk41VOIms}| zaG9agbj737N9po&$gF1H=Ry2E{GQB%xG2xE(8;aG$!wJVYH)A%q|oc+UnS?#r-e}=yv52rI()(iAJZ;DY|ItxBmM7sN4|cJxpDYM56y-{O zP9~y61dbB58Zp%NzPn|mmF_L!ERKW{isw1V#!j9*>2Lc$ekOu-d(+HCz5znSto@HJ zp?P$tPoB>@sEYK)h5-Z=tvWrP6Vu>%6f*MT>(>S>I&*_!xZJg3H&niOYV=@e(fDHo z-M_#*OqU8&(=FyW-pNc4V4RUt@^{)mv*obH%ESfCTxd!#@X!}Z%Aj_X@%~nfeQ#Je zV6l$9HP6KKs)e<$#!H%0CB}Z^ z33OYCwu5~)5D_>IH#O`WR2nQL8;1KSY6$gMFM>lTvK3X@&78r8G`@obrB@1tmwXG>R)lhhMM(O{P@E8hDi#~=Bqu4 zMYWK^g5yr~*hJl}p4(tv(520nX3w8)*yfXqfDU@weCkZw*LSBQ+Z)}B`k@6sO_n9j zD|LRWZ`GV`&HL|rUQ<(BrQVf!1+hMVTa(iU8J}PnUi;=1x{8y|IH(`jOWdXpC|%9^ zKP><=A%Z6FOqD#!_lZ-z_vTQpB8IN~XoX!fj07*X3XWPkcn&Z(?r=yd&1Y5}-KF{d zhT7`adxN*Fxmlu-3KoJ_Z0QacRnb_FeOWn`UeMmj^U_dFo}m<5D~g1Mn>2mk8?enJ zYh<4;R=Ly#+1lhnQ1v^$yM;vCFlk(c>PkKDwK6-iV&1MeW4LN+YHHB(S55^rkcx9A+;;oU1Wtpx zFvpGl&s2k=;-?_dU<0+F7<&MPsV8#{W4*M|pvMon7pGIRO9YbjAzY;P95tdJ=>0O+ zZ#%z=29+id|7sBpR~Wf8_I-WoZ_DsoqX$&*1eMxk1*OZLG^!lLx8a+^O(SR`%V&W9 zHFKTdOXn~+Dr0;|z!3p0mranKrgp&GydUt^CtN?cdyAI#DvmF@ojkb*4^v_AGFM~Q zoWsq`=vCoP0TjbiL9+*f5tBX+gfjdIk7DAiZE@H_n$l88zp}?WbhTZ%TAM)|wGlqg znR2hyMQCm*S}=E94Iz7|tTB+o80yMr z3Up4H@gr|Hy-5h;ME~h4CGlqsg=>psKP>-Ww&iYyOYohbQA#&IAO^)PG;y_e2Tyt!aG_g8NUs(=U@2O)Zwr-{1IXJ!I$QBq~s0 zl$9>^m%+WfPH`I3esFbX>R|zgDiM;meu$tU>(NXBb6I{rG0IB*uq@B$30SACv&QFY zr-HJaeI^UWg`of^6P@l^k1SQ5opcB+Mts)y2D$sl_8(K_ql!-pr`-C?G1xHc3^ z(6l>gops$!&{M|;ynRc{%7&p_o;+!NjmBZ!+RM%?YL^4Q}gh6DeCfQgsaKEfolZ05--N_$`b+tAf7kXH~J~orL z=x#Ed*vWyx+i9VwhDzP#C-vp~GosYwuD--gg>)~M|M%Y({3DB1`MkGlA*J;8ZC(G3 z^Q2&c{`O1#{xCN4jFM^-GK2^HD__ke_ezA$k?5~^o%*%D(?}}*ptSb2i_dtM=ep@B zxzB40lj+|tG=Q?l#O60F84y>sx0m0>M1IF>vDg>PSv%&I+V^Lk`!c!a5IPc`y*1uB zJRt76tXFRowYj!ZA8xR>Cvq}eYim)ot6A*PR(8TMrX*Eu9ahIvf0pL}mY+nWRr!Ks zXG61IH20gdk-CA7_xRh0Gjh`_Z$@ z=R_U|E>55-iz*f@V5eLp5k@)xN$ijvXn&U{u^lHIFBG#74GJcIyd68b>%T+Mn_9*t zXhdVQMH!l!Z^vzgUCiW~LsH?d&V>dH+aP>@H84Q>l6~Mtx*5~EW+D1Z#orEQP1p;BTbR(G z=3#za7WJ%_+H1=9s@Zp_qw;s2H~=-dqobqrh4{{KXfUWo9K@~mBzkH|P3G5=2paK; zO5BwFXd~U|pFAH_NCEfbzD0paR~5xAqiZtlaMMW)H5l{`VHtr|xL0|bFo)!b07vXt za-l=b!-p_hI$bh5W&v;|93~v~7zso0@M$4vR@O?u$Fb8#yO4q($^*Py@V*{vu??EA z8+3vHJ*$-K@>b(77tgNEM1mNLE(cev?u|4O;YRN1gqeEOUS#gGl~%zh4PTerQWrco z8(ZFD!{8BvpWK{hBX?^_MQf9@oS$$4xizECAYe1N%M`S~+9X3JNkukhW!^+sPh>NV z$82Z+!(Vw;siVoGN**Fzh3oeG1up|NJm0Cr)l^k&v`D7N4C}@%lNypHPQnaOTB`Lv z%btHa1t+<=K$|S*>YH};+Cdu{=wKQ%5L!2pGDpa4rx!J-QJGk6xCdcC@}M~laTr%F=uMC%vi}h>BLHHTS+b^LM&Y!a9zfeAd9thwZ zvP38dr~m{OUznqN&yTO3SGf`bN-l+z@P(phMk(6~P6QSaFifuXyU9LmL;zNna~>`_ zen2VHCFd3NM$kHJ?|f6~7(1?p#U|5vccyXQ3vqNM2%XY_LTuCGKw-cdfsP+irtu_F z9X_Dy9Fyfy*d?k?mdzc@xms$iCwRB0sKqB2oEU7yi`P~gM?QQwcKo;)^v~5>5NwFu15tupAL^N3nw_+gcg@7~9(B&wn`x=d1GPv}>k&-l-)f8mwe#*;g56DEVZ=NBJ}wz3;@|!EtxBS(ATO=Q=1e+_ll$L-P7& zxA$W;-aXk|911Mt{(|6j$vNoza2+e(c41{#;>V)KA6{>&+Wp@{bCe?xZ1GA20a}6ztUz|+WkS1y zvS4%>E8l!{YV<}*r;kEb)XylVz6U7|7UkC>A9YTBFXAKSZ!N#`@S)I!GF>wO`tWqY z>H*c(qw*P;4DxoK;Bb^j{#s4VcIzr9j2e;24od|(w+54C_WZSS6q47h7ITQyMsg>k z7{p`|JD0Mg^iwmOeY-KS5Bd0?GLMzquOLgJI0c{`-%b z!T93E3tfq3e(YKA5ObQKNJ2haLWGfthA772>@w{ReahYN2pnqD)hT^bxG6)?#hN#t z<6)YEIQ97oDJIZK=xN08#_PhvUA5!(iQ!@?qhad-?P>I)tmxb|IVL~UG z^}c4RWTL{@ejdOlgL+#KaP6As1Pl^4X#EwCB$dB75yP$Z1QzvpofRjWERQ;LBmWpr*yJib9#&Rz729b&AT&9c+pof=Y-3VL z(TbKSrG8^e5&`E zy4bhF!_WDJ5Ex-N;Qt=%8>A#+cH*StTPG}LPk6wueY1kou<)T6v!3e)jPnjoDRfXm zn2$w0-;}byd=4iQ6tH*hm|j1W?U%YUC3UCNB45E<#umjSMW|;VK2*h8j%hDsE)r?7 zgcfR(MBt^963Fl)0O&wkbQR{%oRa(1)$m6P%9nqN$SG*l!9ZebM_i4J+~I75%3kX;OHITMN=i;V~H`9VKnqC3&j@o0;bww`^e_*pw%c{hQ zr=f&|qOdNmfNeZ1PJfWjlj2;UAmW&v<~kOcvaJibWXSdvg?)bie%5Cz2Y@d_V?#wn z<@?+FT{Rv9lfIl8y~o4Uc4xDVNdCElExPE6D9iQHYyg&frjRO+=FWfr@u@Lgm&J;v zEU1vs{t=DmqeqVDn%O)$yDLeife`cLR#`o^SwHpnIPwP_lSoH9pu4*pvm2(RQG4u# zn((IL=If!DvPKKd*by5)urDY(#o~1-?SdS!P)Cvo=xHV=Coijct8VMUGzWP_=T4lE z;c4O;@bK~)sr7LL9X}$kNH&{yLw`kOW##qj=**Dxk`fV*I*xX9k_|UsirXG-db4v^YhH&?E^yN}PPx zO0cM-1jSC?=#X3{04KDj^Bl|#Bq&~R*_S-;3B+I-gc?$W?2Hck;-3e z$75!Ey}&S~kayM^=}tUBX?qM}CDfId|H#uRN{kIL@aW)-J+MXbK69bC8Vfq-)atM) zF59h>Uq^ORiJ#QQa3v)%p0u7R#q+7!CI&xf`}&z4hJ6t^Er*c0?{+jg35vbACJT&dN*zqiQV)S2F7M;Q;+y)W)} z!6&Uyly=v2nn-g{xG0;+t8mj~J}w5@dyC6^t6M;V4A#|Nr#ZV|f4Dg3g^%!ri``qq zUAh2Qa0T2v+;MCyc6gS-{_tU+Yi|KIQ<3|LNs7-AYrvAE*st7NfFFdB?KJZ~ zi5as^lhjw$zq(xQ9^&eKA335*)#Ra zfct~Jm}h0G?d>@vW(0P1 z^0!u;_Vc|`vO(PVLuQ=x&eOzHZic;fNn|zAE6m**gqqebEq{B9x%5!!`h6}iAodp& zyy?C-IL(DV?T}rTGufG)#e1mSwIr%H$t@?l&P*Vs9;>v)32xpU#6oIbe6Zv(9w+3l|{zZz-7~v?R?cQvu=sjE(@RDUn z*?+nFW3|5Ace4ntkpt)b-E3YMU!VsBsbR!*?6cGpkK$YId!_CtPj1pPy3wCg^0_{x z>EEn+Iq;%^@!p=+HeW)pq&v%+uPxs~q(Tmj2&50ns;bOn1;pC+D{tMpRiqR4<6m%b zv$clR3*DKW`>dpG&2*)0Da7gs%;~OXul)0Fedc9}MyE-GRY&I3yN&~quOPy+F>!r- z{m@N_wmSHC{CqZfx;J7rvu@Gb_VfYICli-E$o2+rvS8JQHDH4{U6KEb1;YVl@UBnAA5mkUU=q%`g zURTC}99YP(si0_W+Ezuhyc>h-%E~_b9pPz5tLLVAPD!6u(l{?60aZyOpd*CyE#^@! zstxKUw{~P2$}s8o6K0O?CLV}572xl`>tZ83cHecSuV^w_ zd;C6>a)L5&v3IK-FTxGDsX{ynlZ0z29`DowG;CEk65J%bVsDqc0{RMakdUF!!=WA zjHHS^Oz;&C*4@{&L4VU96$SHi=T;&1z>yQR3In-9 z{uW@Mc$8JL%!&|N0>io$dMYj%-$G{Bfnk+T1*{oDEMENB5P#AtTHIEh4&6^tS7UE(>pk zu_|IS5cUzP)c6plPv}_yeh{NFAt51=&PtD?2pPy?Z^aD-&ky$(1Z|WsG4^c2Y8ChI zzpAt|}3lLt0bdv#b)`+yO$+z#`!61w@9^}&Eh6)M^jd8F<(DVf@&P#Iq z2+A*?!6f%yGV4f#W+*gLC2m-B8TWV#b2@tdzb~?dmto{0vy5U$JrFjRO+XR=J_oXU*ptwRKLMph#u z*l@XUFkkUgy{CGfiYb-$R!DKhf{XqetoAh?s>;f+$5R;)j@xmkAm_YcdZlFM?7pka zt@vK2Wi~zCui&Yt*N*0rvT0)HIEBU_nKQ(^bGNL!F$896`zl^vRLtsjNo@Z}<@%pp zbgey0Tsx2Hs(2B=fPj{UJqAsQkOnFsULfe!j)Sm*_5#Dz$pz@AL!mB5OpCbG1lLNn zQU`x(-Wfl?+t3_=0Ez+%v+7`!hbTmzK2u6T^GaKc=Kc3x!^p3@%En9e?s_#(anC7Q z$r}IRxy#Ma47Ank2yTWLyBPbaF{%=XxUTVX_1oY3CAIJ0yjj5kFJ#dd4HT`;WQ-!zt=T5_< zK#dUE42JHVIGkIt31uBA{>>XfD%dJ~KTg5CR=8Pa?=r`p!QZpj#w9l>@)S{I?e=ZB z-rH!nf9CHCS!p-POB?)UJh%53aY>3AKvVaI=eaK9obL9vczNkVEQ3H|I|RK`LFtAJ83z??T;t=oQg;*xzgW;1ijmzM zd&4lXKNh|2>`%13WHX5>o2wB~&!*^p)iE-aU^`>+PAwP-Pt7e#zH%aG_!T#N_GS zZ^izdUIM?82y|@+#&)>poIyw&mD`DvJl*=Z=Gu65{{ajI(Hm5RT!^Ymz;II30b>yc zIzZbRlSGlVIL2o#mx*=&LaL!EiWto~Sx!yJh466IYyFoOn1%`&aqA13>ybB_Zakk_ z_;FAlyAR!%RkYu!P>p=D?#eVe3C`BPLe_;wmScXbQj7PW)b4!*$uOfD65>IBpLYul zAiHJDecOlwA4#lItk^=XaJ)j}3=DE1Bb*T=(Nxxmup?LSj7Q-V!61p0Z>pX`LS1UH z<4cR^R>c1v+K_%`WNGDb{?yH~-;a4qrRFH83~R@NL_^i@$lx3q$gnS)G@9Fj!X3&m zNIGwop(O!HoHQZA*}8m&+D%6X$wJN)(SND2sikg$-#E2*n91|%ndxS~uaY0ux_vC; zns#B>IpI#S6LJLHb9fnORUa?+V~bJz$mPRreXyUA?#3nCGnXNw_E?9c6)BwlQX6-J zTL#I?R8W4AESmD{v8_e2Oyn?~gkQ{K+#V{WdtGyI$S~=*;L)R&)fTq4-&P^wjZ=pR zy@J7lq|u{e=^LaGsYMEgp1e5X`k{DV@$~@EsL{}Jb9cuf2-|`v=b`3P>#bsIBzU2% zXE~nY_#s*)kEa^P0N*NkOn=_hM3T_9L4zGk?5jPJT7u}z^awN1UXoTS zyPb30riRC5PgP`*Z29rWYcP5Ke~rC)IF#=jHeS|=!C)}EFs0%A{0d- zlx?!_$x_zHQuZWC7`w`rh_Z`P*`tWxHJ|VM`|~}Hw?8^cG4nk0-1mK5=XEa7BLHn> zONF93WaenBIxOIw+&JHLH#?Zs1AAEIpEh4er|E()+e`q=LRLvq?rEFFCj+tdR$~0F zG#700omcRrH{OhF}Spzg1vXsle|T6mrTHzZ#=uBeTQ z6yOPsQGpvgwInCCW=^|IKPynLP2oJ^QNiRren8VgM|&MFYNWO5!9Z)siBv1%L%@qM zBE>VKi zRO8taQk<{%)bG%lEtTC$LdPu> zKaiA{z-WtIOCFYl1)AqQ+)3Q@hU71P2_dd;E0hncBSiJQz#L4FM{^AYuB4582ynM0 zsvUFy?X#NkfSL)cg`A8=_Jl(O_^!k~5=3;s`{dccY$`k6jdZL)<>wuWVBPI4%UOvnUOfsCcd#noy0Q;&GZmh zx~U)5`b?SsCFsY59l$i?Hn;%XX|Ade`}8BqjKVH+?$5?ot?9Av%@T25=61zc zNTxN{hdv)Gdy?f0>E{^?^M`vg>T2K;wvC=3q4133VI~2uxHtZYZxj#~gjK zCRJtd)z8K$t{y35@vB!;jXyz`t-=~F)lEutRsqs|c4^=Jslel6rv<}@?kQvzN2CdD zL{M^Rdz|b1ms85`7L$qGUeLxz?I5Fyl03B}!+&vKdd)=<4vFiv7#Dy7{)AjY>rU7b z@IWUub_{<@7g5zPgP;Ix?86DlWrpuEWqukDFwT}KE`&`XqiaL=dxJCdQwWbwYpski z7y>cXgI0&n|KhESY^ApUb(+0CG9(R0xfR*12p#?_+Ww$S5aeN;^*uhuPeaqFUGhqN z0Ac&GD*h-!ywH+-FfBP=02N$6v!@_pGU`iCIoP@e?jxVcEzTUks30&A#GQ47U>qW< zwM%43u1jzY-0Gm_6Jd%4QegfW0d?NLRI0(r4u_1p1^x7)8%0#1M;FTzhMtN05WQ%%S|Bcg{& zZDa1L-A6-_N9aU7#<*=2hK!H7(uz@1jQNX3o-345@gHA2+i=*VJHhi1e4{ZkKYgP# zFGMkXTuEn++Y)#ogK+^#!)KYV?4yUeQA5ym@%wvrm^BPtgl(>(y)fkW5Z>R=upytGYeFqhm_`gm@V_to8Cp*^2+!cXS)g5} z>?~GYgf%EBh_0+YCpzomn;>LZ$kX;#KZC`sY^d_bh22$L2b{&d7sF+0I{uA^^{|Df zGNNuCKbn(2oO1l^IGttt>(xEt+~NF!^P@O0*haGM3@ia$eVCFAPd z|6D_ULNA&cm87jU!(|>i=Zi0}UWQ>Jim*U>qy`2L2e%QQ z-oYEkz(VuczxgUDJ9znhyua-wKR!dI?~Ey2^Yz#Ny7K#9yho;>#&~t25l8?Rv1ngb zIB*;Psd0U_%zLm@Yx!~XT*qter#J5SGcy#2{Ce(kyP)KFZ4Z3UfN6cj@+F|3mTK? zVSqkiY79w}kb+u~@Ixug9!jDWz$M^9n`%e5qCpIqVESf827zmL@OH+;Ks~jNK zxzv-Jn;Q@n0)E?CtSlt7-^=8WziJkDOXA}hxzGh|zq7O#$Q0chdfG;nCR^qhre5?m z75AgxP+mGV<|xh*!WJ_F+~)LG6dkotUi|yIQLoP}f9p`KIjQB~L2^E;{|j~(Qpyud zNdGPaBO2`Hz$gz|OXy^m_@%LeTZg(7-rPN!`V=D&;{@aPOW%mq)P7>WTENa22tw&6 z)XC9h6=JuHj7Pn%UJV1=VQ@$QYmeovgM&1o6X{NXt)}YexHD3|@VyyCe&Vw5!TlFF zts#mMnwT4#%{Dp+hE+g<&XBDa$TBs2=K6Mqv$p5wENyS4MNPuzEBMg!AGd3D4#U=Q zqVhsjExe+^Tm4tI?Fv<2sL*TjaXm@c`(raU^Ih~{UHHf} zQWr@C3S5-MwJG_@Er_h^c!HI^d+7lQ5V?ClRYF%a4;u%KCl~#BYwPwB2{es@0HBxe z*%qBs4dE;fWD~mpjYX7NI~(KQNb2rle9LPHL*RQBAua#8-fLU}F%O!chd{E$yyBo} z2R=Et@x@Ml0D?1VIs(*rC=LPSg(+*D&uu`1piY||K35KY>m;L85GUZ@7GmRoBJ$YH z&Ya5JIshb1AhY(&BjvVGasfOHSOrA#%zXGD>(-w^(r<~EdQJjeP1gc~op%Aa0wUr` zLk^(J!AuiDfAiulu!%W0lK`9qPCD?+FTA|I1jLu86<5^qZ*hra8()RNFkmAdT;MTT z@BR)bLtq}^qx1+gt1U`;|7l6IOi5Sm636)IUPfS6DNIz;`yONCvUKK}C5mzY@l=Ko z8MqA41{#%&0F?<4IpH{GU_Lu1=Pf@1J`h~!ox`ns?w&s*4_f_!8dQDpRpaZ|uj}i< zD&67cC%1%JV2krTATg^z7%&f7JSg-)sRHC{cX8I+z&+ah69U1<@a+w*eQA6Mhw&vk zB&WPLN_PVo>jq$n46#urqu}lJ<;xd1&_R1xg^hzY#BtX0eZKk;=*S%3goVQF@vU{a z6(|=!0=RPt=(^@uS(ubVgY*gz?(*^zBjt7Ckk6xm0*6)N{_9zGml(kVT~gl?f?ui6 zkwOWfQx-P%z`OvGz#vRpoV8w@6crtv_Si_Mdjx*%ZH&?v@{R37Q$~}IYe^kWm`N>Evd6dhLe#o0hY}`D6%_7EG zcZqi5E8W8Z@GY3@boHFi6>5!^bKrz6X0RS<$(=ZQ<)uD+d%b_36 zWl)5U*V-ELx&lKm_!vAaglrm!s(4Z19dGR*TMQmD1eFPmuw)p za4T&?iVO<{9xy(b*OZsXig4SR)gP~3DgI&zm)FA~*!t!X*OC~FuV>);i?EJ=M;>%1 z^IpSr|N8Pu&II@@Fbl4z_znu8bHI=kE8_rZcd9{wa0zIhii-u)`=CdwJGUqZK`a@@ z!r)KaGjJK^aI$pI72$$CVS5C)A9PBqhy4<~f?O=+}m2k>s?!N3J=- ztEo0^4{zC&zJ5;^vDw-@*u~VbS`ZTZhIW;G;q6IZzmvRQHhv#|<6TNjSUWn^?9g;q znI_BPb9~?HKrdUxn979>uXg>L_^fS0gT)scBG^@+c(1WS0uHFq*XN`aU;su;(y1?0z?Z*r(Z?&!ozA7b^ zL?G|U9}Rd7gx~QU7^O z-$~*q;4uGMSpgDdeo@b#nkT;9(n!Gv1BGK0mqh7pdi;hWV#(2}sWm)%sqca_Ec}+% zo=gwcvT=SO+alwZTxy|rAq&uZs{gj^Oy=?YSAW7PX&;jj5q<$5v{~YHvn)LrbOjUF z_5msWr-)GZ{o5cO&!9k2f-jfSXS=}23(}PzC&vRU5L7k`;eHN!f1b4M6q~bC<*zoc zm~_O=={9-xlK)6)Nf83(Q~@he6AcXh_XVeZTn>o>A}ki&bZqF!J`YIM@;7^5pdLM; zaPCY#TFN+EyRLW)CczwuaYb1JOE7s|22+VvIHgNVON)z(Yioyh|ACQM+m)*F@@)76 zoZD`8db>O>-VkdEXD>VjfcwJsUQzLD<_!d94Q>I^5hz74DFoAKJO=)CbFr^Z98OQx zpnkA*0=*MWloZf_z2&{8SEdQAjdR%z@#zvVsh zFV%y7>TTNKC!8Qw-ii0=*g4O{+d?3q*`T_>q<9ARp%9=p!FabNx z5U~cdhA^B>1Y19_x4|xiK(XQ5kK|FY&0GTFAq>cXasqpzfzT%KC(p>q8Kym64VKUK zxpIXAd=J3G;#42AR|Le-BoaFfLK2;Bj{V+Qm6s86ikig zu1+>4hMO<+BXb7X$Q6>Iyq>KcR{Z+)KXB3R&TH@f3wiGdw;5< z+&HO1O0|Sq5hlDHvZUmk(3$G8vR+r|y`_6vg%HO<(GKM_I8vPUcWC>~aF0m9!x;jp zn;M~XdZd(-ncHisHG%)>XvPDGIG&JoO`gO~q&4P8(t@m<9Bg)@I6&B=$TR9`JDz|P z3I<|sYSlNQ;`f`X_5r+8-J6Y^0ZW5B+r_*f8d=BsDYC1;*Wk(YxO$aG+O-#mimiX% zUDFbnHRx%bUBPve>^4?1BEu0q@JGg!p$MzCJ){l7?Opg#rJ5EXTObVdutz(NM?2K&d&fTq zkHQ@TG6;l~?m#A|FX38hWk+&<1eALq@t+`mhe%iFvk%F!`UPM#y#HqI(`Rt$ zoUPym)$3kFaCOYPPk-yf7i&`Z>Rf;s>d z7AZ=nZHuA^^xS*INoZd%C5dX5ti&j%vUiZGdM~+o)WP^1&Az!Jp`uk52V|hRfFYWQ zQHm~c=+A0KK~i@nGm`Jvlg;b}0Mh+P+ycntqd{=F=8r2WC*6R3`08}aACkMKtS6Jb zCRfi(U`Rs;9Sqr6(4{a`{bo7uPDf1hzC=h_pC|x1j4n;0ntWxiXz3tujLr$L73)WQu-rEn=u;>4cT-y@$;y zY@ILMF;rKa@iy}!1Rj1JXGWW6Wo2#8`E}z0MUf_$n1Zd%$#2ug$cZo8m`#j@Qj+&h zw7sJBb#KptDKKn>Ii+BiKe&ZTiOL6aQi?iV3y711ug4Vuu<&E%%^Qes+iHOh3IZ~U zb9shwoin~~A>q_B$1|tqFECGOEI|!8kCptVkDx_@)vJYTjAi5*$;~`1E6gUN>8wi# z#Y4+7n(zyESMLpm*UO=45+QGpC;1jMjQ;)_Im?#4LA>t6TT?M>FRN}3>#~sog&;cO z2l(efuFOq`0~kS&l2Sl+e;rN&aM@$3kg0<7Fvu?T1}Ff;^tXX+;o}2gRNvHLaJZ#& zG3eytvhK96um;9sX7OZc)8S^t@N^*0fzpO}Q|{7tbxjluMpt-aix6&;P%Qy&XAEKI za2P}H17{y_Hldk>ML;rp(bm=m4)jAY?`Hs)@N@c1$)l$k?`~3 zm#tY4&wI7QN~(Z4c~`9s|4UY6YvKCozCkTJJk{ixU2a<=A(z4;n5p0P{M_9vk3!s- zBipkhN^<72nS|$Gm6}--!{1Ml2EHLsv-%<^X>F<;f?%ciOg5Z21qLe&Dx1B6fgi#2 z!WZ_s>{7ThmqC&9Z{W>AypSQu@&xdU0ZwZ58Df&zaqVmdN9_>C_1PfH9290w1;|r{cZYgF7$D_%xl5CBtKQ|QDsv=CIJSP4eFy4f_ukR<^@4#rP(}K3p8RG0+3>R&i( z0NZ`N!H%*uN|8oII&LN*(-KrKcyt6+wWAn_O^2~>=7PuyFd1c6tnl|g35_4MN z<9`<{b{5Pu!KoTZ@esGv`(#hzLgU-57CS@PaE%mZdSX9Wx77X^#nwb1g^my+lWU}Fi@ z3~^O~>n`AutZjJ=p=}1T+>I23+}Tt$*Ba--hri4Nme^&!o+V4ze%M=L%7TcnW+FBiLqvOPEWXT!?0d8`M2rRF}TT#^Dm`zn;Fo$J+FZ z}0IhFbsa<`Fb&Qw$30;_WEKkbX>JOc#6l0?WHXah>yhmnJN{oi-*VZ8ou_M z+nQCqKGwrVhbudwr7}xwo!R`MEHGGvwXw1?&Qr_Gq_G^gGMZp037xu&0coi8+3SV)kuwR=`twfg4oSoPkgxcaP6(|)-n zvwLRU@ousv+PYXVhrs)yyiQ~%z>46&;8NI5*!rY^LI@1NHgEG8V43F@d@VS^Lo*pr zDBlp*y>l@DoyDR7Zv}^ecS%le;^JvZEdx9k&wTT5hGsuj>EOheRMqPH|HQ4;j&E9P zYo%D@=|B@b+2D!rD^5)vH(hvjSAT%K(7aYd3H3}Z(9M-=cr(1$_hq1HU5Aso@xLhL z!`gQ{59Mlqgrt7ErLWMf5!C5IQMF2v_mb-1!+-l0K_n~088Ch&ecGhJB1OA_Iyi}W zL)P12i560#B>1#a-#~W)V`OSEk2^Hf8#R|V@@TfdZjC3o1wcvN*#$=&j?ge10v!Runjiq65gMe7?4Tu$7O;zJNOZ_XvldF(Bw5Wi-kfUXf$446PUJlsa3 zPy+0O7W55>puqJjC--P?^vG+?*yU-(p!%Wm{>y#oj=PquEG%~3>=r8mB@$M&5=|#< zrgBP4pP86&jC$lsc)A$7jIjBPVy0SaoH-M_DSfQavJF~X2AYg4sU=v2{m(ytEa&at z+4wh@zHm%%9(QBy?N*S~OBqn`zg&K}zkitbW%nQSnEn9)7r~#up@U>QGXpemQkp>w zH#^0K`Me<}T7TTc*-&>zO=l9-BIL*`F7&-Sc9M#SJ6Dd*V|X)Dwvd& zmHnhybRk-v&i<>wD0QmV6>j~%_bMGK$A-Ab`;79j_de9q<=IN~U7qk#DjYdI@F9Wm zCe=CAaP`^o9q1b_TYUbb=f%1yH*_-I{jd304(68(wK@xzInD^;Kxb$9zDgFI68&iT zqpr59FaSaCl40}ErDH>En=y_wfcgct@?ehj%30w)Aum>>P4C;vN+77Kt*pPixpS0# zIWKl1cQ5eCnv~;a@44_(gMM7Lw-@tRh<5URlDu6L>n~*Woip~qy9apUIGl!zhCzys z_nv_1Fif-HNDYAfsJUu?SfBS943Ype$y!g45srev0}-m3t1p*W`J;TMpm$&S_Dyq) zf+FFUgbME+uc@0a9RL-20^x_DVE*%z>9;J+SCDAI$%B`Mv`}dy?n4Ln{=?V1jnk&e`++n9q67Spg%? z@)u%CdcZHXn6KN@=2H1__D8m!Z1m-Z(Y88IiyTn`eU~Vx{pkwOcY53 zTZhw^S^}YxH=vX?xd8#+r0SxAz9y8Ail)#MyWinJnc+RkL?8etspY}XRJ97R8Bf0; zL<|4PzPn#iajZoxIPK9S?aikS_w|Zv!Cex#IR~)w7a7(pe&bjgqoSss8|7T~R8zoh zzc+m{ionkQEjlk(!AI&MplY)`XB73vgb7cwZM(ywDdwMp~QMkXx%wWuY?@rAX5Q zt{y<$AU$ya%5m+kq{X5Hvt-T28qb_YpXKX{S@nUEDXJhdl0{$8nC!-1I7W+EqYZtu z?vydeO~*?>-2@}UMG^J6v2;AAUq{;|79P%u$V{PcFlN!X^Sy`XHgey8pzbP|!GXr( zVba6f33^%|mFW(F~&p`$~v69k;L*5P!HXe=Y<}zbk z-BChTgFa?(IhjjQ>nEAH4R+xAbNepM`FlB~_^KyWtBpPoe6EThLl$VPUc^}M1gnB# zsg2LnwRFL8LBWk=M+`9`gUhMhai=-*U;@nm%viuF_i zHOoZ5R<}#RNU9(y|E7ABa{fCV_q1W@GyW}34@YFLzx>SBx=yKUG4z9G04RCEP`EcY zH+SH4lJ&2Lcf>|r@wgH>A9ShYT%n#FDNr=oNNCdnMd?%Q=|I4ky6Usp*sAngxY=W4 zI$w^mlAM^DijQXU6Yamv)n!zC4AWt-kS-B!8P_Q1tnh`rksIyj>x+`7W8cmH_*clY zr@SDz#|0qy0$=Q~mn;Xip4d$$TI{T#&Z;%9K%bP-eEh=|xgNh+m%GgqjXrj)a$ik_ znAWS)EMMC{bN)x@wZ_O( z&NZaCL@nU8`b!yaJJy}41-T4QdsAmkFLusUEu+A@T^=BO1Y=YHV7WLrI&vs0>6c0L z_kXXU9eJ;^W$axU$rlKAn|u#7Q4Y{hgXI4=Y2xfV*8yXIg2+A)3H!nHsmBl0M5hdy zzH*;?xecft_{o9N9VUfR&Sbiu7bkPFo+XMed?^eN+1}TQP+hkkSs_@4KJ0A+$(5ow zS|_USR}hE?bYgZFSshx0<37!uZyULzLW^ndXm8hCT+^^9yUVRlc_C3NZBIMn$mP7w ziK2k*aTcbx$^p{eTCoufk_5c(*v z()Z%8U8@!!01zzz2+0s)M>24LMfCK=i`~-PtKU~v%4{n4yw9dJ0H8y}WUfD1E&Zs1!4^zf#GIzRkPbqWM)A5fzPTFx!ppuFXCJoxi$9xifj+xv`=f85LM{4g zCwHz<3ExizoJ#&z$&L%A*XBB3%k>hv?xilJ;B_Bj_8)K&GCri6KIx;hl6U|PNER_x zdUlzlauIq>5{5-jKVL0>ZCX5vBtV~C?<{(X?FT9)qts-bTl{iR{?WlQBwAm)cI~CZ z)oa((e>RMwx-=_SVEb>Qi!V9OE+F{9_SQF9LmV05Z~M_kHZM5 zyui_UJ!G);mB`g4sfPUz`48&q=^k$A^dUIl_9l@68Y~Woo3+vzclv%s3tdp~N!T#eiY>U7l=ERv(&r9phvD*xU>7h`IYrX0WdUyF~T-;Wd0Ptdw>$?vbQXvm-0 zu`7|iXlvoDP`Bsl$a_^oY*FNB87qG>G|>E|W~1oUw6C5d5XC^rX~>{R zKanRGehHB}uvBnz!~NY}Ah9s6tKr3qaleP4^PhhKXgIi$I!L&jO*(=(A8V_h!MI9r zbWt6J5c9caYPaeHvY)u_)5GYLz1U?-j4oqATFzmrG zaAr4^IsB(03!_VF7gEJA4W$-doRI01MQQ8C6iZV%LHGbteRIIudYWdfI;I4SX z9Yp~HnP$K~l}Ihfunq5x(HJ zlNO?>0~q@<9Q;wM&AodbUS5@BSIEi9dmASpolATG&K>A)LG5^tftTl=7%izGVcD2S zQAfEuV+fgUKfk;>kMNrgTIM$ZSK2WaY2kW-ZgTlOJoqL-wjq22kSRE> z#EK4Vf==KT*do#LgGvlV(GHxcq5Gx79wgz&PVhf~S@pj2jW9#9dn`dRO$e-j-r^Df zW8gQ9v=LNQRRs!{j0v-(!h4G|a2@Vk9@+P~!?jlgHdklWxG|VO=(nM=xB*`9bJ?wH zYhZf;cn5}k5As69FEsv$J5{Ce?80;VP}qAdjP*PdLCgtmG4J8%N?`f{;fP#+;>z;m zkqiHJXY!SARiWmg;h%TyS(Zi;aSNXMCic3IU0M4r^?xak9KjyVKC=rHnsTd-3Bg5@ zrbg^O2{;g3xfBZO6n$QgXoz?U{}CQ3Z3~kPF-} z`*@p*)`Cwf*xHE1m>L0s{r2zQus?>VnPsp1X9v>|(TSS;Z}vWvo2qm@DDU!ABOX)g z2_}D8&hoh>-2yO8glw4gIbw`k(g=Ap=>f9f+_1ztx7Z=m6m_3cd4){#9LjakE_?xH zN?Wgz0f$LRfq=hlB8Z~zkHc>zL)aU7)#9>wdhG;Eo;+Bj+g*OdLYUiMdt-LPOXNGp znI!V1p(4Q(V{VN@KhH+rbq;JGOT2r}BI%mQm1e}3sEyJsiZSVK>U#4j`9SG1O6&nw z8NP(xCtso2tLWDmsn4fb^ToNo$2eD~SN?O(a@SUkWjX#c8F+}Li!pQZqo+3rp(M{G zJO+$m{go2`>Z1LM;~0OLN1ZOl!sH$JtGR4O{8FmlJC#ck2dk(BOny1|t9w4ftIEa* zP7h~HS{Fy;NsQ{mhK76-p(B!${DP5x1vJS3K9|n+zIILW!9dmO_vWP95sV=y>r7T3 z+Z=l*9QXJRDljC%eAfT1#iO^w`>~c+MsdtfV`7T%r4r(&w}Y}L9_`0Q^2cZ)WS2lj z3?}_A%yTvKj{={_4%7kT53+VB#x%c+Zd&Dj55@mr{A*oAE&Iv#+4G1tnx3jtRj5Ut zf(>hCt%H#6aY@6pk#DkZ)%bP5mSgM+mg4)`+8Jb|9;PVTMCEJZ39&M^D~)oDU&Xy0 zrMOx&G{VmhS_t8Ona00pjo)=lxWk>QduN-x)R1KumjH+0knOPsTa{D--lR@BQkj;D zIziogx^LzrLHTxSBrUD%PJ7`e4U?T#961oLIw%Tx+)w*UjywhW$8hhvx~Bj=r01rl zC3c-i*ik51=5_4T=&T-EEF1PH7>r!o2awUG650izp#hh+cdG@49LOo7Z40f{c5nGg ztP#`~ce_iQv3N|{n+L*n&NrzgKNVwwLhS8#X!7<%aB4mDp^4>QTY;udyu_XJh;S)Y zK|Rh9ofyVMUeRwg2_Uq^>1Jv#!MvS_gUS(xioxDpARB!Nepmx_!oD~A zPh8?&d^-I8x(=i4z%iL6Z=I($8P`r+c47YIqtB@I;fqT@_t$BQOXPBLrEY9r`4VRf zvux^LJ9d_Nq>v@mJZ}_j_~RkV(e%n;yes6Skv;!tNYVSF;dr&Mb67OV(w}5_s)+(t z>heAH1CrO+`C#eBEY0?|gwQv~!w?A{F28KA>Us>L-WUqAPZt6#V!V}hplyC#> zW&J4Yl`nIO%zLc{Y2PMljx?&i!AtGGg6IaBd*jb8+=9n*-i4Hg0cP(vEYPn(8<$fG ztkyD@vk1o8x-bgq?^=&i1iocdX^EJ#Phd}#5>v~M_NnX*mosN~F^sL`u zMrt@>LfNYnw@&_=itCCt+iH9=iYAN^Ivo zm}$e<2IBt)91k}EsYpS79vgcOpMQeAEHaXlU&?s(Qw);GMF&~$w??4WqPf*Ua^;QW zJimNJB(%FNV(C0o5OyghR}muFi{@+626=YgXT}mRAUzB&ZX?3;Q)n%X&P8yJ~`<8XfT zi9k5=0GGRHJ;sM%J#F6r_D>;d$yDJux;cfV8@;%vF-RHq#gua){MX=+1JiT`{}mKX z7|sDiR3zjAh|t^jtmxz24Sy)RWu1t6U5b>E2gkBz+Kh8hC_##P(%&_{{oV6WTEo+* zI#_HkEW6K2JS_;v3tS585nrFQy+WavN>y(R{lLQ7Iw31g&qx{+8|`V#PA0y zrG6>_VvT^b@xVe5&xnc1=;L1#c+BA*$eljEXuWUxM5>UKuLsoSMaPmPir(t*+FsmS zopwJR0y}w%5yx8Z_x(c{&Rzq(5*QG=goy;xzXj)nc52?1?UA#1#`!<%<&FIYa-?^K z`P!s0!PV35FY|m9O*T?q{UC8XHZzXsUuw*91~g zS|3(-3JVLVc>9od*!XB-ChVgVOtAjnG@4Ks!UwnV&y@g7wJON;C>PG5b@Lbo1Z3 zwgp_YV&x#2~#?fP58_%9WhJww!HLNPa)MFMt1iOe6=Vs z;kYJBV=l!+Y~Z??*&qa7@BjTPYf^j+s(~0el4%9RzM!=BEELBx@DqBjS%$UGxp+<` z@)e<=UH=R@Fa*5$Z4UJ8skrN)zlYHnQc=$1avT|QI!_uo1&^p<0VAtbS|E_-AP!-* zS_nv z^GR0S)U|ya7vM)xsOBna&AaFR73T)mb4epl2@s8$I4!Klz(;0`Ev^Vd(9~rk;P+aS z)n=QklGiipSpUy|>cB+_B$XKfL#TDF_>oERa2Cvq?4tC&#Pao^w^OJm;Jdr^;GaJ{ z$>lklMxogG0>C&3XAk&WC*BjCu7}6{_pVMOgKPLhuu&T6=Vo?ScY;wAP}8V5j>?V) z;7w>iq*Oh=3a?Nt3O|;#YBQRjXHWN-Ms@p6`VrtTyii za}Vlh(LHaOlj*}TBhIhLyv5wzxaZt-fvz0MHGvXU-81egHJ@-Kvv1VFWq z51x;ii{UbH{qOS%D)TuL{E||0on*fb{iPol^-pgkab3j>@&|EXFMb5z*a5zH`0lIw z!JlzR8U7l0h`OozliDS=fOitMJ*+>c{BJlpY#SH^V3eZT=PHeez{UZIOe9KUg>jT% zN6$|1(II3DUB}!CggiP(0Z{?wQANe{%_$!SwLK>cuO{6pM25BDvY5NJYcO((T*a?=2b5Ct5m#(vW$_2L0I#~X1 z`(M{gbNj#@oOiFu2^`$KTY+97kgJEN^&A!U4~7t2L#0QVZZ82!)9D@>Lb2@0{O{3= zTTsC5;b{7I|AC7=XUzd=hVcdtVXYV_w@A?d07%|9dY3JuKPo%8#S{x43lIVG2e&+3 zVUt^kL2hNYi5R2_Wf5vhu_OfaP7-UUK#UxazGEIIr@Nyzxk?t~blQ-Kh81SRUo~KeTiba9?47jW$+u->mv2;)7aZFCm+9-|bX^y%3jx3r z*a0eSW+`TJ6Ubf|58(b~+Gn#`2)8tsCy(W@fOH?3#$spfN3~4W0 z2?e&6P|c-keG4?j@rE~_)RJw@eOY?dk!*ek9mCiDn7ZezFBtCr6fw<$O(bWfDtZG9 zYaLAOb>DaS)?xj*EtxhbMrBj&mB?!T&<8aXHSDsepR@8ssDm)UEBCguV4EM-eUWq~1HR=JEQ{y?_`8&Vf3o!|%~Xp)92YSAE(!I2>6&QXVqY1f(2;I4<2Ln;8{Dk#gRy5@*4JA(spc5 zB{1nKc*N=BXm7z-jzrUa@AP#fL%z@oX*iiP^xw8Ze25g}_=p8NSh0SCbz)QBl)Vr2 zf8UK)d*o@*9HaI%h5#{;%@Rx=8xNU1i{Fw8T4FHse+vSHVb`B#SR2jEC`Q1FguB_HY7ew$IlxG*!~#LYoa=}%`Tz!hd0mc^ir5{j@$ z?f2qt!YAQ*z`gY=bg;ah9RY-vEn^+h{}RrnL+2md8)?QNF8xN1R*M?8mu()5cu^3ii>l_2Ub?8Txc0OaNx_j8)}#aKnsSD zx6FSV%-!J_S-D6$r$^chTF~8picY_`eZ-sat-$35m&hYiUd8LKApOGJ`tOQmg3uNS z#`D5flh$G^qq4==O%*e1Yp@H7`{qBnrLw{r1&?5lAK$&WB3EhlZRwML9?JW`#|L4Z zBeJJ+-%)8E`*IFVX~|UXKC{*0Dh(MCLWZTDBswn0G9L^?;}HYKBsUcPiTg&B^v2j1 z6%~2QV^`$(b>wroE4L!Elj_75U}_0o>bLiQzUb;X%fjw{z0FU@-6)bnS-R2O`@A@7 z|zGJ4=76a^Tqpr@juW0E$4FV#SUa({mxxT;JF z__TR-=b9RjQZ9pxz`z@-?3WH71GsNqfhd~G3i*Q&^GeD#g4wxp;5whQI&&-qQitmR z?$=0|Z51Tc9UlD2HYQx-`R}>&j*AI5aozUFkq3Md8YR#}e!+pm7!em0eIAQ8k6I>y zkw60}in(SoDvK0EYX66wv{Vn_2I{`=G_N*;bT{{1$F9dzBS}{-l5V(?h!Q|*XWe~n zPiF~;9SHeT6?e*LqhEdB~Lt1a2gK>@&%*jp~*7>}$shoq;$xw(1 z&h%6RD>0UX&!mhy5cU;C#^`i&MuFPdF0%*=hB@hd6ODAttir|O0~k@a9Cxw%Mqtm5=_mMzYE%r2=2;inT4KSI`kjr@tY7^QAGDr@U> z-w4dP;iJ-b1D%;oW!~}$e&9@#j&+D|u<7zLN&~50<(Swdex&xyE?jqb%;gT56NQkv zu8HEi4qmNR*3YZ}d~ds|eI=QcL2`e<&7jmX#~_?tTUY0RiTVWfHF%=5huyNihA+gt z%@DqH@vese*=@iHBaw3mkUefK59Xh_mRIVD>pBG12(OYq1h0+CvPoW20WB|NCH&sr z-rn6^Z3f`u09sDqcrQbu)HMtNQs*GaeS)JG>N#1F|m+BJSL|!2!xA(VUt3Vg(pFx z5(ISLZ_U$RzQCmP`zf$3aI*vX(xvM2Vk~99Ag!t5yXA=fZmma>OAC6Au57mBM>3jh0KrUs=+KNK}3XJ@$q8T z=;Y=qZL&gJ7lr#L^kj6;%v}ltwGBv0-#72EFV$@LC1o0tcH!=8)>;U2l6R@aRRo=e zW+6BNEmLYjU=Mu8v$GH?iq(Tv2@DXBJn@{(a)Tbd)YHBG)8S!QmL(jIH}RO?ySv&J z^D+WO7>{%Un+}bcnHeOzgF*r#M6N5&>{^zi-EoO#&a_CK7DmJ~Aw$4RV6gGkd>#Xl zllb(uOP1~xwox1RV|c(EDe@ z$$`xd4F!oi1a~2o4J-ut2kP8_pHYbAd850b=B;UUl7NQ|)HBCpa%5(P;b+vOrn$wy z+P)gixLj+v723tB=l@xu?i}n@k_UTjt>8U9W{{dfC;YSXgN^V`|h@p z=8u%3SPS&0MzGj`_N02!uc)1bRZnbc8Cnqf-me zil{^6`~cmKcQJMrMDRmTe%{F6cX)2Ed))-BtDnSG>vJ38a$(36xqBVJlK*8~tUUcP zI?Aj&41^uph3jyL!8{U2Qy#u|bZ6R?Jx6ICx5AfN5jO`}wIl^xsi#ts3~;~CO1z}_ zn|J~v+i{q|MBwLWC}K=r+Xs(+l8e%xQjQxIi=o|7M0j3lPHXfaPXe(hAvf^P(u4EQ z?BRTPed!JuD&kq>I1&L`f>pk87R1}%$0{wJSd?4w1TCgwO8^JPLlUQRKJFAMIRuCq z0G`JSOXn@mm6+}XY1^aXjE6#=I7qTx_Hed6m(hvE=W{f($`BHoJHXm;|IMu$26_ z5r*JV8cAcSBlTzTzxvX+giy^0)gH1B(;r%?Ca(OJRcGfN!O&(Io?0T1H{Nz zNOhkd%UAfpF;kCJc;HJ>*ixN4=gau0A`^bT75xv1Ed8WeCHj3k8dYZ08N(pa=JekW z8!|6UE(Q75i;f`l3Ym;)#s3Ll&*nZM9SZhk3B<<^ z!eRVSwNzAK3KP`Y@5+B%$qi)$tVt`iLdjS}VS}`yn3wsh0R$9QC6nJb!m;@Kq9&ZHWciU*6soyHs zV0|`-Bo@WoELI7}hqSSrAP(V>4rD}}_&~%@165N>vz=TrEd$57$FYvLJ|ojL&_UJj zWGOAseRT=dT8Nq5fQ#y1zh=OIWpYnEI!$OepnQDQV_J{ir&+e<%bx_P({$GwvV|w3 zjMC5);V7-~fKD{&&Y*ls7dX$Uxh%Lh#pCnkC60>+TzB4DauOb+8s z{M>6|>tm!(+TDB69KlF{d*z$namiIU6NeOa#mqEyR&)Gwy&@(sXa)@|VBcAWl+>gV oD~!BT;kW-DlK+RlsKp+Uhpef6wXSk+IR?KBbxn1uw45UTKO1m+PXGV_ literal 0 HcmV?d00001