From 5fdb8ea89afeeea0b9face508b3efcfcc3d63869 Mon Sep 17 00:00:00 2001 From: Sahil Malhotra <88040167+smalho01@users.noreply.github.com> Date: Thu, 17 Feb 2022 12:48:31 -0500 Subject: [PATCH] Revert "docker dev env" --- .dockerignore | 4 - .env.example | 3 - .github/workflows/automated-tests-ci.yml | 26 -- .github/workflows/docker-cd.yml | 27 -- .github/workflows/docker-ci.yml | 17 - .github/workflows/gradle.yml | 27 ++ .gitignore | 7 +- .vscode/launch.json | 15 - DockerDevSetupGuideForMacOS.md | 356 ------------------ DockerProdSetupGuideForMacOS.md | 258 ------------- Dockerfile | 18 +- Dockerfile.dev | 14 - Dockerfile.mitre | 10 + Dockerfile.tmpl | 42 --- PriorAuth.code-workspace | 133 ------- README.md | 31 +- build.gradle | 79 +--- docker-compose-dev.yml | 179 --------- docker-compose-porter.yml | 111 ------ docker-compose.yml | 111 ------ docker-sync.yml | 35 -- dockerRunnerDev.sh | 32 -- porter.yaml | 78 ---- setup-images/ClosingLaunchChromeTask.png | Bin 182235 -> 0 bytes .../java/org/hl7/davinci/priorauth/App.java | 5 +- .../org/hl7/davinci/priorauth/Database.java | 3 +- .../org/hl7/davinci/priorauth/PALogger.java | 2 +- .../davinci/priorauth/endpoint/Metadata.java | 7 +- src/main/resources/application.properties | 2 +- 29 files changed, 69 insertions(+), 1563 deletions(-) delete mode 100644 .dockerignore delete mode 100644 .env.example delete mode 100644 .github/workflows/automated-tests-ci.yml delete mode 100644 .github/workflows/docker-cd.yml delete mode 100644 .github/workflows/docker-ci.yml create mode 100644 .github/workflows/gradle.yml delete mode 100644 .vscode/launch.json delete mode 100644 DockerDevSetupGuideForMacOS.md delete mode 100644 DockerProdSetupGuideForMacOS.md delete mode 100644 Dockerfile.dev create mode 100644 Dockerfile.mitre delete mode 100644 Dockerfile.tmpl delete mode 100644 PriorAuth.code-workspace delete mode 100644 docker-compose-dev.yml delete mode 100644 docker-compose-porter.yml delete mode 100644 docker-compose.yml delete mode 100644 docker-sync.yml delete mode 100755 dockerRunnerDev.sh delete mode 100644 porter.yaml delete mode 100644 setup-images/ClosingLaunchChromeTask.png diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 2919244c..00000000 --- a/.dockerignore +++ /dev/null @@ -1,4 +0,0 @@ -# See https://docs.docker.com/engine/reference/builder/#dockerignore-file -# Put files here that you don't want copied into your bundle's invocation image -.gitignore -Dockerfile.tmpl diff --git a/.env.example b/.env.example deleted file mode 100644 index 0785d4c8..00000000 --- a/.env.example +++ /dev/null @@ -1,3 +0,0 @@ -VSAC_API_KEY=#Replace_me_with_your_api_key -COMPOSE_PROJECT_NAME=pas_dev -PORTER_ALLOW_DOCKER_HOST_ACCESS=true \ No newline at end of file diff --git a/.github/workflows/automated-tests-ci.yml b/.github/workflows/automated-tests-ci.yml deleted file mode 100644 index 26572873..00000000 --- a/.github/workflows/automated-tests-ci.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Automated Tests CI - -on: - pull_request: - branches: [ dev ] - workflow_dispatch: - -jobs: - automated-tests-ci: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v2 - with: - java-version: '11' - distribution: 'adopt' - - name: Set up Gradle - uses: gradle/gradle-build-action@v2 - with: - gradle-version: 6.9 - - name: Embed CDS Library - run: gradle embedCdsLibrary - - name: Test with gradle - run: gradle clean check \ No newline at end of file diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml deleted file mode 100644 index 47a9e3cc..00000000 --- a/.github/workflows/docker-cd.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Docker Image CD - -on: - push: - branches: [ dev ] - workflow_dispatch: - -jobs: - - docker-cd: - runs-on: ubuntu-latest - steps: - - - name: Checkout Repository - uses: actions/checkout@v2 - - name: Log in to Docker Hub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_TOKEN }} - - - name: Build and push Server Docker image - uses: docker/build-push-action@v2 - with: - context: . - push: true - tags: codexrems/prior-auth:latest diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml deleted file mode 100644 index cbc4e105..00000000 --- a/.github/workflows/docker-ci.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: Docker Image CI - -on: - pull_request: - branches: [ dev ] - workflow_dispatch: - -jobs: - docker-ci: - runs-on: ubuntu-latest - steps: - - - name: Checkout Repository - uses: actions/checkout@v2 - - - name: Test Server Docker image Builds - run: docker build . \ No newline at end of file diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 00000000..1e8cf04d --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,27 @@ +name: Java CI with Gradle +on: + push: + branches: [ dev ] + pull_request: + branches: [ dev ] +jobs: + build: + + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt-openj9' + - name: Grant execute permission for gradlew + run: chmod +x gradlew + # - name: Checkout CDSLibrary + - run: sudo chmod +x travis-setup.sh + - run: ./travis-setup.sh + - run: gradle -v + - run: java -version + - run: ls -a + - name: Build with Gradle + run: ./gradlew build diff --git a/.gitignore b/.gitignore index 28828e9f..140d6bb3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,3 @@ -.cnab -.docker-sync/ -Zscaler_Root_CA.pem -.env - # Ignore Gradle project-specific cache directory .gradle @@ -18,12 +13,12 @@ CDS-Library # Ignore all log files *.log *.log.lck -logs/ # Ignore Eclipse and vscode files .project .classpath .settings/ +.vscode/ bin # Ignore Database files diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 1b5f6637..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "java", - "name": "Debug Prior Auth (Local + Docker)", // gradle bootRun -Pdebug, - "request": "attach", - "hostName": "localhost", - "port": 9016, - } - ] -} \ No newline at end of file diff --git a/DockerDevSetupGuideForMacOS.md b/DockerDevSetupGuideForMacOS.md deleted file mode 100644 index aa81adf1..00000000 --- a/DockerDevSetupGuideForMacOS.md +++ /dev/null @@ -1,356 +0,0 @@ -# DRLS-PAS-Docker-The Ultimate Guide to Running DRLS PAS for Local Development - -## Purpose of this guide - -This document details the installation process for the dockerized version of the **Documentation Requirements Lookup Service (DRLS) PAS Workflow** system for Local Development. Be aware that each component of DRLS has its own README where you will find more detailed documentation. This document **is not designed to replace those individual READMEs**. - - -This document **is designed to take you through the entire set up process for DRLS using docker containers**. It is a standalone guide that does not depend on any supplementary DRLS documentation. - -This guide will take you through the development environment setup for each of the following DRLS components: -1. [Coverage Requirements Discovery (CRD)](https://github.com/HL7-DaVinci/CRD) -2. [(Test) EHR FHIR Service](https://github.com/HL7-DaVinci/test-ehr) -3. [Documents, Templates, and Rules (DTR) SMART on FHIR app](https://github.com/HL7-DaVinci/dtr) -4. [Clinical Decision Support (CDS) Library](https://github.com/HL7-DaVinci/CDS-Library) -5. [CRD Request Generator](https://github.com/HL7-DaVinci/crd-request-generator) -6. [PAS](https://github.com/HL7-DaVinci/PAS.git) -7. Keycloak - -### Expected Functionality -1. File Synchronization between local host system and docker container -2. Automatic Server Reloading whenever source file is changed - - CRD and prior-auth also reload on CDS_Library changes -3. Automatic Dependendency Installation whenever package.json, package-lock.json, or build.gradle are changed -4. Automatic Data Loader in test-ehr whenever fhirResourcesToLoad directory is changed - -## Table of Contents -- [Prerequisites](#prerequisites) -- [Install core tools](#install-core-tools) - * [Installing core tools on MacOS](#installing-core-tools-on-macos) - + [Install Docker Desktop for Mac](#install-docker-desktop-for-mac) - + [Install Ruby](#install-ruby) - + [Install Docker-sync](#install-docker-sync) -- [Clone DRLS PAS](#clone-drls-PAS) -- [Configure DRLS PAS](#configure-drls-PAS) - * [CRD configs](#crd-configs) - * [test-ehr configs](#test-ehr-configs) - * [crd-request-generator configs](#crd-request-generator-configs) - * [dtr configs](#dtr-configs) - * [PAS configs](#PAS-configs) - - * [Add VSAC credentials to your development environment](#add-vsac-credentials-to-your-development-environment) -- [Run DRLS PAS](#run-drls) - * [Start Docker Sync](#start-docker-sync-application) - * [Stop Docker Sync](#stop-docker-sync-application-and-remove-all-containers/volumes) - * [Useful Docker Sync Commands](#useful-docker-sync-commands) -- [Verify DRLS is working](#verify-drls-is-working) - - -## Prerequisites - -Your computer must have these minimum requirements: -- x86_64 (64-bit) or equivalent processor - * Follow these instructions to verify your machine's compliance: https://www.macobserver.com/tips/how-to/mac-32-bit-64-bit/ -- At least 8 GB of RAM -- At least 256 GB of storage -- Internet access -- [Chrome browser](https://www.google.com/chrome/) -- [Git installed](https://www.atlassian.com/git/tutorials/install-git) - -Additionally, you must have credentials (api key) access for the **[Value Set Authority Center (VSAC)](https://vsac.nlm.nih.gov/)**. Later on you will add these credentials to your development environment, as they are required for allowing DRLS to pull down updates to value sets that are housed in VSAC. If you don't already have VSAC credentials, you should [create them using UMLS](https://www.nlm.nih.gov/research/umls/index.html). - -### Setting Environment Variables and System Path - -How you set environment and path variables may vary depending on your operating system and terminal used. For instance, for zsh on MacOS you typically need to modify .zshrc instead of .bash_profile. To figure out how to set environment variables for your system, consult the guides below or google `how to permentaly set environment/path variables on [insert operating system] [insert terminal type]`. - - For more information on how to set environment variables consult these following guides: - - - https://chlee.co/how-to-setup-environment-variables-for-windows-mac-and-linux/ - - https://www3.ntu.edu.sg/home/ehchua/programming/howto/Environment_Variables.html - - https://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables - -## Install core tools - -### Installing core tools on MacOS - - -#### Install Docker Desktop for Mac - -1. Download the **stable** version of **[Docker for Mac](https://www.docker.com/products/docker-desktop)** and follow the steps in the installer. -2. Once the installation is complete, you should see a Docker icon on your Mac's menu bar (top of the screen). Click the icon and verify that **Docker Desktop is running.** -3. Configure Docker to have access to enough resources. To do this, open Docker Desktop and select Settings > Resources. - - **Note: The defaults for memory at 2GB and possibly CPU as well are too low to run the entire DRLS PAS workflow. If not enough resources are provided, you may notice containers unexpectedly crashing and stopping. Exact requirements for these resource values will depend on your machine. That said, as a baseline starting point, the system runs relatively smoothly at 15GB memory and 7 CPU Processors on MITRE issued Mac Devices.** - -#### Install Visual Studio Code and Extensions - -The recomended IDE for this set up is Visual Studio Code - -1. Install Visual Studio Code - https://code.visualstudio.com -2. Install Docker extension - https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker - -#### Install Ruby -Note: The default ruby that comes with Mac may not install the right package version for docker-sync, it is reccomended to install ruby with a package manager, this guide uses rbenv. - -Reference: https://github.com/rbenv/rbenv - -1. Install rbenv - ```bash - brew install rbenv - ``` - -2. Initialize rbenv and follow instructions (setting system path troubleshooting: https://stackoverflow.com/questions/10940736/rbenv-not-changing-ruby-version) - ```bash - rbenv init - ``` -3. Close Terminal so changes take affect -4. Test rbenv is installed correctly - ```bash - curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash - ``` -5. Install Ruby - ```bash - rbenv install 2.7.2 - ``` -6. Verify that the system is using the correct ruby verions - ```bash - which ruby - /Users/$USER/.rbenv/shims/ruby # Correct - - .... - - which ruby - /usr/bin/ruby # Incorrect, using system default ruby. Path not set correctly, reference step 2 - ``` - -#### Install Docker-sync - -1. Download and Install docker-sync using the following command: - ```bash - gem install docker-sync -v 0.7.0 - ``` -2. Test that the right version is installed - ```bash - docker-sync -v - 0.7.0 # Correct - - ... - - docker-sync -v - 0.1.1 # Incorrect, make sure you have ruby installed and are not using the default system ruby - ``` - - Note: The versioning is important, system default ruby sometimes installs version 0.1.1 if -v tag is not set. The 0.1.1 release will not work for the rest of this guide. - -## Clone DRLS PAS - -1. Create a root directory for the DRLS development work (we will call this `` for the remainder of this setup guide). While this step is not required, having a common root for the DRLS components will make things a lot easier down the line. - ```bash - mkdir - ``` - - `` will be the base directory into which all the other components will be installed. For example, CRD will be cloned to `/crd`. - - Note: If you are using a different project structure from the above description, you will need to change the corresponding repo paths in docker-compose-prior-auth-dev.yml, docker-sync.yml, and docker-compose.yml - -2. Now clone the DRLS component repositories from Github: - ```bash - cd - git clone https://github.com/HL7-DaVinci/CRD.git CRD - git clone https://github.com/HL7-DaVinci/test-ehr test-ehr - git clone https://github.com/HL7-DaVinci/crd-request-generator crd-request-generator - git clone https://github.com/HL7-DaVinci/dtr dtr - git clone https://github.com/HL7-DaVinci/prior-auth.git prior-auth - git clone https://github.com/HL7-DaVinci/prior-auth-client.git prior-auth-client - - cd /CRD/server - git clone https://github.com/HL7-DaVinci/CDS-Library.git CDS-Library - - cd /prior-auth - git clone https://github.com/HL7-DaVinci/CDS-Library.git CDS-Library - - # Optional if you have access to the private fhir-x12 converter and fhir-x12-frontend repositories - will require changing docker-compose-prior-auth-dev.yml, docker-sync.yml, and docker-compose.yml in configure steps - - git clone https://github.com/HL7-DaVinci/fhir-x12.git fhir-x12 - git clone https://github.com/HL7-DaVinci/fhir-x12-frontend.git fhir-x12-frontend - ``` - -## Open DRLS PAS as VsCode workspace - -The prior-auth repository contains the **PriorAuth.code-workspace** file, which can be used to open the above project structure as a multi-root VS Code workspace. To open this workspace, select *File* > *Open Workspace from File...* and navigate to /prior-auth/PriorAuth.code-workspace. In this workspace configuration, the CDS-Library embedded within CRD and prior-auth are opened as seperate roots for an easier development experience. - -The Source Control Tab can be used to easily track changes during the devlopement process and perform git actions, with each root of the workspace having its own source control header. See: https://code.visualstudio.com/docs/editor/versioncontrol - -The Docker Extension for VsCode has useful functionality to aid in the development process using this set up guide. This extension lets you eaily visualize the containers, images, networks, and volumes created by this set up. Clicking on a running container will open up the file structure of the container. Right clicking on a running container will give the option to view container logs (useful to see output from select services), attach a shell instance within the container, attach a Visual Studio Code IDE to the container using remote-containers. See: https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker - -## Configure DRLS PAS - -### CRD configs - -***None*** - - -### test-ehr configs - -***None*** - - -### crd-request-generator configs - -***None*** - -### dtr configs - -***None*** - -### prior-auth-client configs - -***None*** - -### prior-auth configs - -***None*** - -### fhir-x12 (optional) configs - -1. Uncomment out the section for fhir-x12 in docker-compose-prior-auth-dev.yml (service + volume), PriorAuth.code-workspace, and docker-sync.yml in the prior-auth folder - -### fhir-x12-frontend (optional) configs - -1. Uncomment out the section for fhir-x12-frontend in docker-compose-prior-auth-dev.yml (service + volume), PriorAuth.code-workspace, and docker-sync.yml in the prior-auth folder - - -### Add VSAC credentials to your development environment - -> At this point, you should have credentials to access VSAC. If not, please refer to [Prerequisites](#prerequisites) for how to create these credentials and return here after you have confirmed you can access VSAC. -> To download the full ValueSets, your VSAC account will need to be added to the CMS-DRLS author group on https://vsac.nlm.nih.gov/. You will need to request membership access from an admin. If this is not configured, you will get `org.hl7.davinci.endpoint.vsac.errors.VSACValueSetNotFoundException: ValueSet 2.16.840.1.113762.1.4.1219.62 Not Found` errors. - -> While this step is optional, we **highly recommend** that you do it so that DRLS will have the ability to dynamically load value sets from VSAC. - -You can see a list of your pre-existing environment variables on your Mac by running `env` in your Terminal. To add to `env`: -1. Set "VSAC_API_KEY" in the .env file in the PAS Repository - - or - -1. `cd ~/` -2. Open `.bash_profile` and add the following lines at the very bottom: - ```bash - export VSAC_API_KEY=vsac_api_key - ``` -3. Save `.bash_profile` and complete the update to `env`: - ```bash - source .bash_profile - ``` - -> Be aware that if you have chosen to skip this step, you will be required to manually provide your VSAC credentials at http://localhost:8090/data and hit **Reload Data** every time you want DRLS to use new or updated value sets. - -Note: How you set environment and path variables may vary depending on your operating system and terminal used. See [Setting Environment Variables and System Path](#setting-environment-variables-and-system-path) for more information. - - -### Add Compose Project Name - -You can see a list of your pre-existing environment variables on your Mac by running `env` in your Terminal. To add to `env`: -1. Set "COMPOSE_PROJECT_NAME" as "pas_dev" in the .env file in the PAS Repository - - or - -1. `cd ~/` -2. Open `.bash_profile` and add the following lines at the very bottom: - ```bash - export COMPOSE_PROJECT_NAME=pas_dev - ``` -3. Save `.bash_profile` and complete the update to `env`: - ```bash - source .bash_profile - ``` - -Note: How you set environment and path variables may vary depending on your operating system and terminal used. See [Setting Environment Variables and System Path](#setting-environment-variables-and-system-path) for more information. - - - -## Run DRLS - -### Start docker-sync application -Note: Initial set up will take several minutes and spin up fans with high resource use, be patient, future boots will be much quicker, quieter, and less resource intensive - -```bash - docker-sync-stack start # This is the equivalent of running docker-sync start followed by docker-compose up -``` - -### Debugging docker-sync application -1. Select the Debugger Tab on the left side pannel of VsCode -2. From the drop down menu next to Run and Debug select **Debug All REMS Applications (Docker) (workspace)**. This is a compund debugger that combines all the other docker debuggers for all servers and applications in this workspace. -3. When finished debugging, simply hit the disconnect button to close out all debug sessions -4. **Important**: Make sure to close out the **Launch Chrome in Debug Mode** task that gets open in the VsCode terminal space. This task launches chrome in debug mode in order to debug frontend applications in this workspace. This needs to be closed in order to run the debugger again next time, leaving it open will not properly start the frontend debuggers. - -![Closing Launch Chrome Task](./setup-images/ClosingLaunchChromeTask.png) - -### Stop docker-sync application and remove all containers/volumes/images -```bash - docker-sync-stack clean # This is the equivalent of running docker-sync clean followed by docker-compose down - docker image prune -a #Remove unused images - docker volume prune # Remove unused volumes -``` - -### Rebuilding Images and Containers -```bash - docker-compose -f docker-compose-dev.yml up --build --force-recreate [ ...] -``` - -or - -```bash - docker-compose -f docker-compose-dev.yml build --no-cache --pull [ ...] - docker-compose -f docker-compose-dev.yml up --force-recreate [ ...] -``` - -```bash - - # Options: - # --force-recreate Recreate containers even if their configuration and image haven't changed. - # --build Build images before starting containers. - # --pull Pull published images before building images. - # --no-cache Do not use cache when building the image. - # [ ...] Services to recreate, not specifying any service will rebuild and recreate all services -``` - -After rebuilding imaages and containers, start docker-sync normally - -```bash - ctrl + c # Stop running "docker-compose up" command (containers running without sync functionality) - docker-sync-stack start # If this command fails to run, running a second time usually fixes the issue -``` - -### Useful docker-sync commands -Reference: https://docker-sync.readthedocs.io/en/latest/getting-started/commands.html - -## Verify DRLS is working - -### Register the test-ehr - -1. Go to http://localhost:3005/register. - - Client Id: **app-login** - - Fhir Server (iss): **http://localhost:8080/test-ehr/r4** -2. Click **Submit** - -### The fun part: Generate a test request - -1. Go to http://localhost:3000/ehr-server/reqgen. -2. Click **Patient Select** button in upper left. -3. Find **William Oster** in the list of patients and click the dropdown menu next to his name. -4. Select **E0470** in the dropdown menu. -5. Click anywhere in the row for William Oster. -6. Click **Submit** at the bottom of the page. -7. After several seconds you should receive a response in the form of two **CDS cards**: - - **Respiratory Assist Device** - - **Positive Airway Pressure Device** -8. Select **Order Form** on one of those CDS cards. -9. If you are asked for login credentials, use **alice** for username and **alice** for password. -10. A webpage should open in a new tab, and after a few seconds, a questionnaire should appear. -11. Fill out questionnaire and hit next -12. Submit PAS Request to http://localhost:9015/fhir - -Congratulations! DRLS is fully installed and ready for you to use! - -## Troubleshooting docker-sync -Reference: https://docker-sync.readthedocs.io/en/latest/troubleshooting/sync-stopping.html diff --git a/DockerProdSetupGuideForMacOS.md b/DockerProdSetupGuideForMacOS.md deleted file mode 100644 index da234950..00000000 --- a/DockerProdSetupGuideForMacOS.md +++ /dev/null @@ -1,258 +0,0 @@ -# DRLS-PAS-Docker-The Ultimate Guide to Running DRLS PAS locally - -## Purpose of this guide - -This document details the installation process for the dockerized version of the **Documentation Requirements Lookup Service (DRLS) PAS Workflow** system for Production. There are two approaches to doing this: - -Option 1 utilizes Docker Compose, which comes with Docker Dektop, and requires the corresponding docker-compose.yml file from the prior-auth repository. This option has minimal technical set up involved and allows for the customization/modification of the dockerized configuration. - -Option 2 utilizes Porter, which requires a seperate installation in addition to Docker Desktop but does not require the use of any local files. This option has the least amount of technical set up involved and is recommended for non-tecnical users of DRLS PAS as it **does not** allow for the customization/modification of the dockerized configuration. - -This document **is designed to take you through the entire set up process for DRLS PAS using docker containers**. It is a standalone guide that does not depend on any supplementary DRLS PAS documentation. - -This guide will take you through the development environment setup for each of the following DRLS components: -1. [Coverage Requirements Discovery (CRD)](https://github.com/HL7-Davinci/CRD) -2. [(Test) EHR FHIR Service](https://github.com/HL7-DaVinci/test-ehr) -3. [Documents, Templates, and Rules (DTR) SMART on FHIR app](https://github.com/HL7-Davinci/dtr) -4. [Clinical Decision Support (CDS) Library](https://github.com/HL7-Davinci/CDS-Library) -5. [CRD Request Generator](https://github.com/HL7-Davinci/crd-request-generator) -6. [PAS](https://github.com/HL7-Davinci/PAS.git) -7. Keycloak - -## Table of Contents -- [Prerequisites](#prerequisites) -- [Install core tools](#install-core-tools) - * [Installing core tools on MacOS](#installing-core-tools-on-macos) - + [Install Docker Desktop for Mac](#install-docker-desktop-for-mac) - + [Install Porter (Option 2 only)](#install-porter-(option-2-only)) -- [Clone PAS repository(Option 1 Only)](#clone-PAS-repository-(option-1-only)) -- [Configure DRLS PAS](#configure-drls-PAS) - * [Add VSAC credentials to environment (Option 1 only)](#add-vsac-credentials-to-environment-(option-1-only)) - * [Add Compose Project Name to environment (Option 1 only)](#add-compose-project-name-to-environment-(option-1-only)) -- [Run DRLS PAS](#run-drls-PAS) - * [Option 1 - Docker Compose](#option-1---docker-compose) - * [Option 2 - Porter Install](#option-2---porter-install) -- [Verify DRLS is working](#verify-drls-is-working) - - -## Prerequisites - -Your computer must have these minimum requirements: -- x86_64 (64-bit) or equivalent processor - * Follow these instructions to verify your machine's compliance: https://www.macobserver.com/tips/how-to/mac-32-bit-64-bit/ -- At least 8 GB of RAM -- At least 256 GB of storage -- Internet access -- [Chrome browser](https://www.google.com/chrome/) -- [Git installed](https://www.atlassian.com/git/tutorials/install-git) - -Additionally, you must have credentials (api key) access for the **[Value Set Authority Center (VSAC)](https://vsac.nlm.nih.gov/)**. Later on you will add these credentials to your development environment, as they are required for allowing DRLS to pull down updates to value sets that are housed in VSAC. If you don't already have VSAC credentials, you should [create them using UMLS](https://www.nlm.nih.gov/research/umls/index.html). - -### Setting Environment Variables and System Path - -How you set environment and path variables may vary depending on your operating system and terminal used. For instance, for zsh on MacOS you typically need to modify .zshrc instead of .bash_profile. To figure out how to set environment variables for your system, consult the guides below or google `how to permentaly set environment/path variables on [insert operating system] [insert terminal type]`. - - For more information on how to set environment variables consult these following guides: - - - https://chlee.co/how-to-setup-environment-variables-for-windows-mac-and-linux/ - - https://www3.ntu.edu.sg/home/ehchua/programming/howto/Environment_Variables.html - - https://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables - -## Install core tools - -### Installing core tools on MacOS - -#### Install Docker Desktop for Mac - -1. Download the **stable** version of **[Docker for Mac](https://www.docker.com/products/docker-desktop)** and follow the steps in the installer. -2. Once the installation is complete, you should see a Docker icon on your Mac's menu bar (top of the screen). Click the icon and verify that **Docker Desktop is running.** -3. Configure Docker to have access to enough resources. To do this, open Docker Desktop and select Settings > Resources. - - The defaults for memory at 2GB and possibly CPU as well are too low to run the entire DRLS PAS workflow. If not enough resources are provided, you may notice containers unexpectedly crashing and stopping. Exact requirements for these resource values will depend on your machine. That said, as a baseline starting point, the system runs relatively smoothly at 16GB memory and 6 CPU Processors on MITRE issued Mac Devices. - -#### Install Visual Studio Code and Extensions (Option 1 Only) - -The recomended IDE for this set up is Visual Studio Code - -1. Install Visual Studio Code - https://code.visualstudio.com -2. Install Docker extension - https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker - -#### Install Porter (Option 2 Only) - -1. Download and install porter as per https://porter.sh/install/ instructions: - ```bash - curl -L https://cdn.porter.sh/latest/install-mac.sh | bash - ``` -2. Open `.bash_profile` and add the following lines at the very bottom: - ```bash - export PATH=$PATH:~/.porter - ``` -3. Save `.bash_profile` and complete the update to `env`: - ```bash - source .bash_profile - ``` -4. Install required Porter plugins - ```bash - porter mixins install docker - porter mixins install docker-compose - ``` - - Note: The exact command to add to your system path will be mentioned at the bottom of the execution of step 1 and may vary from what's above depending the operating system you installed Porter on. Consult the output in your terminal for how to set your system path. - - Note: How you set environment and path variables may vary depending on your operating system and terminal used. See [Setting Environment Variables and System Path](#setting-environment-variables-and-system-path) for more information. - -## Clone PAS repository (Option 1 Only) - -1. clone the PAS repositories from Github: - ```bash - git clone https://github.com/HL7-Davinci/prior-auth.git prior-auth - ``` - - Alternatively, you can download/copy just the docker-compose.yml file from the PAS reposiotry since that is the only file needed for this set up. - -## Open prior-auth in VSCode (Option 1 Only) - -The Docker Extension for VsCode has useful functionality to aid in the development process using this set up guide. This extension lets you eaily visualize the containers, images, networks, and volumes created by this set up. Clicking on a running container will open up the file structure of the container. Right clicking on a running container will give the option to view container logs (useful to see output from select services), attach a shell instance within the container, and attach a Visual Studio Code IDE to the container using remote-containers. See: https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker - -## Configure DRLS PAS - -### Add VSAC credentials to environment (Option 1 only) - -> At this point, you should have credentials to access VSAC. If not, please refer to [Prerequisites](#prerequisites) for how to create these credentials and return here after you have confirmed you can access VSAC. -> To download the full ValueSets, your VSAC account will need to be added to the CMS-DRLS author group on https://vsac.nlm.nih.gov/. You will need to request membership access from an admin. If this is not configured, you will get `org.hl7.davinci.endpoint.vsac.errors.VSACValueSetNotFoundException: ValueSet 2.16.840.1.113762.1.4.1219.62 Not Found` errors. - -> While this step is optional, we **highly recommend** that you do it so that DRLS will have the ability to dynamically load value sets from VSAC. - -You can see a list of your pre-existing environment variables on your Mac by running `env` in your Terminal. To add to `env`: -1. Set "VSAC_API_KEY" in the .env file in the PAS Repository - - or - -1. `cd ~/` -2. Open `.bash_profile` and add the following lines at the very bottom: - ```bash - export VSAC_API_KEY=vsac_api_key - ``` -3. Save `.bash_profile` and complete the update to `env`: - ```bash - source .bash_profile - ``` - -> Be aware that if you have chosen to skip this step, you will be required to manually provide your VSAC credentials at http://localhost:8090/data and hit **Reload Data** every time you want DRLS to use new or updated value sets. - -Note: How you set environment and path variables may vary depending on your operating system and terminal used. See [Setting Environment Variables and System Path](#setting-environment-variables-and-system-path) for more information. - -### Add Compose Project Name to environment (Option 1 only) - -Note: The compose project name is to disambiguate between different set ups on the same machine and can be set to any identifier. If you are following both options mentioned in this guide, it is reccomended to change the compose project name for each so that they differ. - -You can see a list of your pre-existing environment variables on your Mac by running `env` in your Terminal. To add to `env`: -1. Set "COMPOSE_PROJECT_NAME" as "pas_prod" in the .env file in the PAS Repository - - or - -1. `cd ~/` -2. Open `.bash_profile` and add the following lines at the very bottom: - ```bash - export COMPOSE_PROJECT_NAME=pas_prod - ``` -3. Save `.bash_profile` and complete the update to `env`: - ```bash - source .bash_profile - ``` - -Note: How you set environment and path variables may vary depending on your operating system and terminal used. See [Setting Environment Variables and System Path](#setting-environment-variables-and-system-path) for more information. - -## Run DRLS PAS -### Option 1 - Docker Compose -#### Start docker compose application - -```bash - cd prior-auth # Need to execute commands in directory with corresponding docker-compose.yml file located in the PAS repository - docker-compose up -``` - -#### Stop docker-compose application -```bash - docker-compose down # Removes application servers - - docker volume prune # Optional - Removes persisted data -``` -#### Updating docker-compose application images - -```bash - docker-compose build --no-cache --pull [ ...] - docker-compose --force-recreate [ ...] -``` - -```bash - - # Options: - # --force-recreate Recreate containers even if their configuration and image haven't changed. - # --build Build images before starting containers. - # --pull Pull published images before building images. - # --no-cache Do not use cache when building the image. - # [ ...] Services to recreate, not specifying any service will rebuild and recreate all services -``` - -### Option 2 - Porter Install -#### Install and Run Porter application - -You can set the flag --allow-docker-host-access in the below commands with the PORTER_ALLOW_DOCKER_HOST_ACCESS environment variable so that you don’t have to specify it for every command. - -```bash - porter install fullstack_drls_pas --allow-docker-host-access --reference smalho01234/fullstack_drls_pas:latest # Initial Installation needs to be from remote repository - - or - - porter install fullstack_drls_pas --allow-docker-host-access # Subsequent runs can use the local installation - -``` -Note: The project will keep running in the background when you "ctrl + c" out of the above process. To stop running all together, use the stop command below - -#### Stop Running Porter application and Uninstall -```bash - porter invoke fullstack_drls_pas --action stop --allow-docker-host-access -``` -#### Updating Porter application - -```bash - porter upgrade fullstack_drls_pas --allow-docker-host-access # Pull and Update application images and recreate containers - - or - - porter upgrade fullstack_drls_pas --allow-docker-host-access --reference smalho01234/fullstack_drls_pas:latest # Pull and Update Invocation Image in addition to applicaion images from remote repository and recreate containers -``` - - -## Verify DRLS is working - -### Register the test-ehr - -1. Go to http://localhost:3005/register. - - Client Id: **app-login** - - Fhir Server (iss): **http://localhost:8080/test-ehr/r4** -2. Click **Submit** - - -### The fun part: Generate a test request - -1. Go to http://localhost:3000 -2. Click **Patient Select** button in upper left. -3. Find **William Oster** in the list of patients and click the dropdown menu next to his name. -4. Select **E0470** in the dropdown menu. -5. Click anywhere in the row for William Oster. -6. Click **Submit** at the bottom of the page. -7. After several seconds you should receive a response in the form of two **CDS cards**: - - **Respiratory Assist Device** - - **Positive Airway Pressure Device** -8. Select **Order Form** on one of those CDS cards. -9. If you are asked for login credentials, use **alice** for username and **alice** for password. -10. A webpage should open in a new tab, and after a few seconds, a questionnaire should appear. -11. Fill out questionnaire and hit next -12. Submit PAS Request to http://localhost:9015/fhir - -Congratulations! DRLS is fully installed and ready for you to use! - -## Troubleshooting docker-sync -Reference: https://docker-sync.readthedocs.io/en/latest/troubleshooting/sync-stopping.html diff --git a/Dockerfile b/Dockerfile index f7458ff5..753917d9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,9 @@ -# Base image FROM gradle:6.9.0-jdk11 -# Set working directory so that all subsequent command runs in this folder -WORKDIR /prior-auth -# Copy app files to container -COPY --chown=gradle:gradle . . -# Embed CDS Library -RUN gradle embedCdsLibrary +EXPOSE 9000/tcp +COPY --chown=gradle:gradle . /prior-auth/ +RUN apt-get update +RUN apt-get install -y git +WORKDIR /prior-auth/ +RUN git clone https://github.com/HL7-DaVinci/CDS-Library.git RUN gradle installBootDist -# Expose port to access the app -EXPOSE 9015 -# Command to run our app -CMD gradle bootRun \ No newline at end of file +CMD ["gradle", "bootRun"] diff --git a/Dockerfile.dev b/Dockerfile.dev deleted file mode 100644 index 3c83922a..00000000 --- a/Dockerfile.dev +++ /dev/null @@ -1,14 +0,0 @@ -# Base image -FROM gradle:6.9.0-jdk11 -# Set working directory so that all subsequent command runs in this folder -WORKDIR /prior-auth -# Copy app files to container -COPY --chown=gradle:gradle . . -# Embed CDS Library -# RUN gradle embedCdsLibrary -RUN gradle installBootDist -# Expose port to access the app -EXPOSE 9015 -EXPOSE 9016 -# Command to run our app -CMD ./dockerRunnerDev.sh \ No newline at end of file diff --git a/Dockerfile.mitre b/Dockerfile.mitre new file mode 100644 index 00000000..ee989828 --- /dev/null +++ b/Dockerfile.mitre @@ -0,0 +1,10 @@ +FROM gradle:6.9.0-jdk11 +EXPOSE 9000/tcp +COPY --chown=gradle:gradle . /prior-auth/ +RUN keytool -import -alias mitre_ba_root -file "/prior-auth/MITRE BA Root.crt" \ + -keystore "$JAVA_HOME/lib/security/cacerts" -storepass changeit -noprompt -trustcacerts +RUN keytool -import -alias mitre_ba_npe_ca3 -file "/prior-auth/MITRE BA NPE CA-3.crt" \ + -keystore "$JAVA_HOME/lib/security/cacerts" -storepass changeit -noprompt -trustcacerts +WORKDIR /prior-auth/ +RUN gradle installBootDist +CMD ["gradle", "bootRun", "--args='debug'"] \ No newline at end of file diff --git a/Dockerfile.tmpl b/Dockerfile.tmpl deleted file mode 100644 index 165109f77..00000000 --- a/Dockerfile.tmpl +++ /dev/null @@ -1,42 +0,0 @@ -# Docker file specifying MITRE SSL certificates for a Full Stack CNAB invocation image -FROM ubuntu:latest - -ARG BUNDLE_DIR -ARG DEBIAN_FRONTEND=noninteractive -ENV DEBIAN_FRONTEND=noninteractive - -RUN apt-get update && apt-get install -y ca-certificates && apt-get install -y curl - -RUN curl http://pki.mitre.org/MITRE%20BA%20ROOT.crt >> /etc/ssl/certs/ca-certificates.crt && \ - curl http://pki.mitre.org/MITRE%20BA%20NPE%20CA-3.crt >> /etc/ssl/certs/ca-certificates.crt && \ - curl http://pki.mitre.org/MITRE%20BA%20NPE%20CA-4.crt >> /etc/ssl/certs/ca-certificates.crt && \ - update-ca-certificates - -WORKDIR /pki -COPY Zscaler_Root_CA.pem . -RUN cat Zscaler_Root_CA.pem >> /etc/ssl/certs/ca-certificates.crt - - - -# Install Git from Source to get around TLS errors with Zscaler, -# explicitly using openssl instead of gnutls -# RUN cp /etc/apt/sources.list /etc/apt/sources.list~ -RUN sed -i -- 's/# deb-src/deb-src/' /etc/apt/sources.list -RUN apt-get update && \ - apt-get install build-essential fakeroot dpkg-dev -y && \ - apt-get install git-man -y && \ - apt-get -f build-dep git -y && \ - apt-get install libcurl4-openssl-dev -y - -WORKDIR /sourcegit - -RUN apt-get source git && \ - cd git-2.*.*/ && \ - sed -i -- 's/libcurl4-gnutls-dev/libcurl4-openssl-dev/' ./debian/control && \ - sed -i -- '/TEST\s*=\s*test/d' ./debian/rules && \ - dpkg-buildpackage -rfakeroot -b -uc -us && \ - dpkg -i ../git_*ubuntu*.deb - -COPY ./.cnab/app/porter.yaml ${BUNDLE_DIR}/porter.yaml -COPY ./docker-compose-porter.yml ${BUNDLE_DIR} -COPY ./.env ${BUNDLE_DIR} diff --git a/PriorAuth.code-workspace b/PriorAuth.code-workspace deleted file mode 100644 index f3fc018d..00000000 --- a/PriorAuth.code-workspace +++ /dev/null @@ -1,133 +0,0 @@ -{ - "folders": [ - { - "path": "../test-ehr" - }, - { - "name": "CRD-CDS-Library", - "path": "../CRD/server/CDS-Library" - }, - { - "path": "../CRD" - }, - { - "path": "../crd-request-generator" - }, - { - "path": "../dtr" - }, - { - "name": "PriorAuth-CDS-Library", - "path": "CDS-Library" - }, - { - "path": "." - }, - { - "path": "../prior-auth-client" - }, - { - "path": "../fhir-x12" - }, - { - "path": "../fhir-x12-frontend" - } - ], - "launch": { - "version": "0.2.0", - "configurations": [ - { - "postDebugTask": "Terminate All Tasks", - "name": "Post Debug Task - Terminate Chrome (This is not a Debugger)", - "request": "launch", - "type": "node" - }, - ], - "compounds": [ - { - "name": "Debug All DRLS PAS Applications (Attach Docker)", - "stopAll": true, - "preLaunchTask": "Launch Chrome in Debug Mode", - "configurations": [ - "Debug CRD (Local + Docker)", - "Debug DTR Backend (Docker)", - "Debug Test-EHR (Local + Docker)", - "Debug DTR Frontend (Attach Local + Docker)", - "Debug CRD-Request-Generator (Attach Docker)", - "Debug Prior Auth (Local + Docker)", - "Debug Prior Auth Client (Local + Docker)", - // "Debug FHIR-X12 Backend (Docker)", - // "Debug FHIR-X12 Frontend (Attach Docker)", - "Post Debug Task - Terminate Chrome (This is not a Debugger)" - ], - } - ] - }, - "tasks": { - "version": "2.0.0", - "tasks": [ - { - "type": "shell", - "label": "Launch Chrome in Debug Mode", - "linux": { - "command": "google-chrome http://localhost:3000 http://localhost:3015 http://localhost:3005/register --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug" - }, - "osx": { - "command": "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome http://localhost:3000 http://localhost:3015 http://localhost:3005/register --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug" - }, - "windows": { - "command": "for /f \"usebackq tokens=1,2,3,4,5\" %a in (`reg query HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ /s /f \\chrome.exe ^| findstr Application`) do set CHROMEPATH=%c%d%e & set CHROMEPATH=%CHROMEPATH:ProgramFiles=Program Files% & \"%CHROMEPATH%\" http://localhost:3000 http://localhost:3015 http://localhost:3005/register --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug" - }, - "presentation": { - "close": true, - }, - "isBackground": true, - "problemMatcher": [ - { - "pattern": [ - { - "regexp": ".", - "file": 1, - "location": 2, - "message": 3 - } - ], - "background": { - "activeOnStart": true, - "beginsPattern": ".", - "endsPattern": ".", - } - } - ] - }, - { - "label": "Terminate All Tasks", - "command": "echo ${input:terminate}", - "type": "shell", - "problemMatcher": [] - } - ], - "inputs": [ - { - "id": "terminate", - "type": "command", - "command": "workbench.action.tasks.terminate", - "args": "terminateAll" - } - ] - }, - "settings": { - "debug.onTaskErrors": "debugAnyway" - }, - "extensions": { - "recommendations": [ - "ms-azuretools.vscode-docker", - "vscjava.vscode-java-debug", - "cqframework.cql", - "mitre-health.vscode-language-fsh", - "redhat.java", - "mongodb.mongodb-vscode", - "VisualStudioExptTeam.vscodeintellicode" - ] - }, -} \ No newline at end of file diff --git a/README.md b/README.md index 941e5cbc..f93bb6f2 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # Prior Authorization Reference Implementation The Da Vinci Prior Authorization Reference Implementation (RI) is a software project that conforms to the [Prior Authorization Implementation Guide (IG)](https://build.fhir.org/ig/HL7/davinci-pas/index.html) and the [Prior Authorization IG Proposal](http://wiki.hl7.org/index.php?title=Da_Vinci_Prior_Authorization_FHIR_IG_Proposal) developed by the [Da Vinci Project](http://www.hl7.org/about/davinci/index.cfm?ref=common) within the [HL7 Standards Organization](http://www.hl7.org/). - - ## Requirements @@ -27,10 +25,10 @@ To run the microservice in debug mode (which enables debug log statements, an en Access the microservice: ``` -curl http://localhost:9015/fhir/metadata -curl http://localhost:9015/fhir/Bundle -curl http://localhost:9015/fhir/Claim -curl http://localhost:9015/fhir/ClaimResponse +curl http://localhost:9000/fhir/metadata +curl http://localhost:9000/fhir/Bundle +curl http://localhost:9000/fhir/Claim +curl http://localhost:9000/fhir/ClaimResponse ``` Submit a prior authorization request: @@ -39,18 +37,9 @@ Submit a prior authorization request: curl -X POST -H "Content-Type: application/json" -d @src/test/resources/bundle-prior-auth.json - http://localhost:9015/fhir/Claim/\$submit + http://localhost:9000/fhir/Claim/\$submit ``` -## End-To-End DRLS PAS Docker configuration: - -You can find complete end-to-end fullstack set up guides for DRLS PAS at the following links: - -[Developer Environment Set Up](DockerDevSetupGuideForMacOS.md) - Follow this guide if you are a developer and intend on making code changes to the DRLS PAS project. This guide follows a much more technical set up process. - -[Production Environement Set Up](DockerProdSetupGuideForMacOS.md) - Follow this guide if you are not a developer and do not intend on making code changes to the DRLS PAS project. This guide covers two options for running DRLS PAS, both of which are less techincal than the developer set up. - - ## Configuration Notes The server on the `dev` branch is always configured to run on Logicahealth. If you are running locally or on another cloud server there are a few extra configuration steps: @@ -61,7 +50,7 @@ The server on the `dev` branch is always configured to run on Logicahealth. If y ## FHIR Services -The service endpoints in the table below are relative to `http://localhost:9015/fhir`. `patient` is the first `identifier.value` on the `Patient` referenced in the submitted `Claim`. +The service endpoints in the table below are relative to `http://localhost:9000/fhir`. `patient` is the first `identifier.value` on the `Patient` referenced in the submitted `Claim`. | Service | Methods | Description | | ----------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | @@ -90,7 +79,7 @@ The service endpoints in the table below are relative to `http://localhost:9015/ > _Note About DELETE_: A DELETE by `id` to one resource (i.e. `Bundle`, `Claim`, `ClaimResponse`) is a _Cascading Delete_ and it will delete all associated and related resources. -If debug mode is enabled the following endpoints are available for use at `http://localhost:9015/fhir`: +If debug mode is enabled the following endpoints are available for use at `http://localhost:9000/fhir`: | Service | Methods | Description | | --------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -299,7 +288,7 @@ To use WebSocket subscriptions the client must submit a Subscription as well as 1. Start the Prior Auth service 2. Submit a Claim to `/Claim/$submit` 3. Subscribe to a pended or partial ClaimResponse by submitting a WebSocket subscription to `/Subscription`. The response to this submission will contain the logical id of the Subscription used in step 5 -4. The client should connect to the WebSocket `ws://{BASE}/fhir/connect` and subscribe to `/private/notification`. For localhost the `{BASE}` is `localhost:9015`. To connect to the RI on LogicaHealth use `wss://davinci-prior-auth.logicahealth.org/fhir/connect`. +4. The client should connect to the WebSocket `ws://{BASE}/fhir/connect` and subscribe to `/private/notification`. For localhost the `{BASE}` is `localhost:9000`. To connect to the RI on LogicaHealth use `wss://davinci-prior-auth.logicahealth.org/fhir/connect`. 5. The client then binds the Subscription id by sending the message `bind: id` (using the logical id of the Subscription) to `/subscribe` over the WebSocket 6. If the id is bound successfully the client receives the message `bound: id` over `{BASE}/fhir/private/notification` 7. When an update is ready the Prior Auth service will send the message `ping: id` over `{BASE}/fhir/private/notification` @@ -348,7 +337,7 @@ docker build -t hspc/davinci-prior-auth:latest . Run the docker image: ``` -docker run -p 9015:9015 -it --rm --name davinci-prior-auth hspc/davinci-prior-auth:latest +docker run -p 9000:9000 -it --rm --name davinci-prior-auth hspc/davinci-prior-auth:latest ``` If you are building the docker image locally from a MITRE machine you must copy over the BA Certificates to the Docker image. Download the `MITRE BA NPE CA-3` and `MITRE BA ROOT` certs from the [MII](http://www2.mitre.org/tech/mii/pki/). Copy the two files to the root directory of this project. @@ -357,7 +346,7 @@ Build and run using: ``` docker build -f Dockerfile.mitre -t mitre/davinci-prior-auth . -docker run -p 9015:9015 -it --rm --name davinci-prior-auth mitre/davinci-prior-auth +docker run -p 9000:9000 -it --rm --name davinci-prior-auth mitre/davinci-prior-auth ``` ## Questions and Contributions diff --git a/build.gradle b/build.gradle index 3d212f74..f622bef8 100644 --- a/build.gradle +++ b/build.gradle @@ -10,28 +10,15 @@ buildscript { } plugins { - id 'java' - id 'application' - id 'eclipse' - id 'jacoco' + id 'java' + id 'application' + id 'eclipse' + id 'jacoco' } apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' -processResources { - from ('CDS-Library') { - into 'CDS-Library' - } -} - -bootRun { - if (project.hasProperty('debug')) { - jvmArgs=["-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:9016"] - } - -} - repositories { mavenLocal() maven { @@ -40,10 +27,10 @@ repositories { maven { url = uri('https://repo.maven.apache.org/maven2/') - }} + } +} dependencies { - developmentOnly("org.springframework.boot:spring-boot-devtools") implementation 'org.springframework.boot:spring-boot-starter-websocket' implementation 'org.webjars:webjars-locator-core' implementation 'org.webjars:sockjs-client:1.1.2' @@ -83,60 +70,6 @@ dependencies { testImplementation 'com.phloc:phloc-commons:4.6.7' } -task embedCdsLibrary() { - doFirst { - exec { - workingDir './' - commandLine 'rm', '-rf', 'CDS-Library' - } - } - - doLast { - if (project.hasProperty('branch')) { - cloneCdsLibraryScript(branch) - } else { - cloneCdsLibraryScript('master') - } - } -} - -task updateCdsLibrary() { - doLast { - if (project.hasProperty('branch')) { - checkoutCdsLibraryScript(branch) - pullCdsLibraryScript() - } else { - pullCdsLibraryScript() - } - } -} - -void cloneCdsLibraryScript(branch) { - println "GIT: clone CDS-Library branch " + branch - exec { - workingDir './' - commandLine 'git', 'clone', 'https://github.com/HL7-DaVinci/CDS-Library.git', 'CDS-Library' - } - checkoutCdsLibraryScript(branch) -} - -void pullCdsLibraryScript() { - println "GIT: pull latest CDS-Library" - exec { - workingDir './CDS-Library' - commandLine 'git', 'pull' - } -} - -void checkoutCdsLibraryScript(branch) { - println "GIT: checkout CDS-Library branch " + branch - exec { - workingDir './CDS-Library' - commandLine 'git', 'checkout', branch - } -} - - jacocoTestReport { reports { xml.enabled true diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml deleted file mode 100644 index af79e492..00000000 --- a/docker-compose-dev.yml +++ /dev/null @@ -1,179 +0,0 @@ -version: '3.6' -services: - keycloak: - container_name: keycloak - # command: ["-Djboss.http.port=8180"] - ports: - - '8180:8080' - environment: - - KEYCLOAK_USER=admin - - KEYCLOAK_PASSWORD=admin - - DB_VENDOR=h2 - - KEYCLOAK_IMPORT=/resources/ClientFhirServerRealm.json - volumes: - - keycloak-data:/opt/jboss/keycloak/standalone/data/ - - '../test-ehr/src/main/resources/ClientFhirServerRealm.json:/resources/ClientFhirServerRealm.json' - image: hkong2/keycloak - - # Create crd container - test-ehr: # Name of our service - container_name: pas_dev_test-ehr - ports: # Port binding to host from docker container - - '8080:8080' # Bind port 3000 of host to 3000 of container - - "8081:8081" - environment: - - DOCKER_PROFILE=true - build: - context: ../test-ehr - dockerfile: Dockerfile.dev - volumes: - - pas_dev_test-ehr-sync:/test-ehr:nocopy # nocopy is important - - pas_dev_test-ehr-gradle:/test-ehr/.gradle - - pas_dev_test-ehr-build:/test-ehr/build - - pas_dev_test-ehr-target:/test-ehr/target - - pas_dev_test-ehr-logs:/test-ehr/logs - - - # Create crd container - crd: # Name of our service - build: - context: ../CRD - dockerfile: Dockerfile.dev - container_name: pas_dev_crd - ports: # Port binding to host from docker container - - "8090:8090" # Bind port 3000 of host to 3000 of container - - "8091:8091" - environment: - VSAC_API_KEY: ${VSAC_API_KEY} - volumes: - - pas_dev_crd-sync:/CRD:nocopy # nocopy is important - - pas_dev_crd-logs:/CRD/logs - - pas_dev_crd-gradle:/CRD/.gradle - - pas_dev_crd-server-gradle:/CRD/server/.gradle - - pas_dev_crd-server-build:/CRD/server/build - - pas_dev_crd-server-ValueSetCache:/CRD/server/ValueSetCache - - pas_dev_crd-operations-build:/CRD/operations/build - - pas_dev_crd-resources-build:/CRD/resources/build - - # Create crd container - crd-request-generator: # Name of our service - build: - context: ../crd-request-generator - dockerfile: Dockerfile.dev - container_name: pas_dev_crd-request-generator - ports: # Port binding to host from docker container - - "3000:3000" # Bind port 3000 of host to 3000 of container - - "3001:3001" - volumes: - - pas_dev_crd-request-generator-sync:/home/node/app/crd-request-generator:nocopy # nocopy is important - - pas_dev_crd-request-generator-node-modules:/home/node/app/crd-request-generator/node_modules - - pas_dev_crd-request-generator-databaseData:/home/node/app/crd-request-generator/databaseData - - pas_dev_crd-request-generator-build:/home/node/app/crd-request-generator/build - - pas_dev_crd-request-generator-logs:/home/node/app/crd-request-generator/logs - - - # Create crd container - dtr: # Name of our service - build: - context: ../dtr - dockerfile: Dockerfile.dev - container_name: pas_dev_dtr - ports: # Port binding to host from docker container - - "3005:3005" # Bind port 3000 of host to 3000 of container - - "3006:3006" - volumes: - - pas_dev_dtr-sync:/home/node/app/dtr:nocopy # nocopy is important - - pas_dev_dtr-node-modules:/home/node/app/dtr/node_modules - - pas_dev_dtr-databaseData:/home/node/app/dtr/databaseData - - pas_dev_dtr-logs:/home/node/app/dtr/logs - - # # Create fhir-x12 converter container - # fhir-x12: # Name of our service - # build: - # context: ../fhir-x12 - # dockerfile: Dockerfile.dev - # container_name: pas_dev_fhir-x12 - # ports: # Port binding to host from docker container - # - "8085:8085" # Bind port 3000 of host to 3000 of container - # - "8086:8086" - # volumes: - # - pas_dev_fhir-x12-sync:/usr/src/app/fhir-x12:nocopy # nocopy is important - # - /usr/src/app/fhir-x12/node_modules - # - /usr/src/app/fhir-x12/build - # - /usr/src/app/fhir-x12/databaseData - # - /usr/src/app/fhir-x12/logs - # environment: - # PORT: 8085 - # ADMIN_TOKEN: fhir-x12-secret - - - # # Create frontend fhir-x12 frontend converter container - # fhir-x12-frontend: # Name of our service - # build: - # context: ../fhir-x12-frontend - # dockerfile: Dockerfile.dev - # container_name: pas_dev_fhir-x12-frontend - # ports: # Port binding to host from docker container - # - "3015:3015" # Bind port 3000 of host to 3000 of container - # volumes: - # - pas_dev_fhir-x12-frontend-sync:/usr/src/app/fhir-x12-frontend:nocopy # nocopy is important - # - /usr/src/app/fhir-x12-frontend/node_modules - # - /usr/src/app/fhir-x12-frontend/build - # - /usr/src/app/fhir-x12-frontend/logs - # environment: - # PORT: 3015 - # ADMIN_TOKEN: fhir-x12-secret - # BACKEND_URL: http://localhost:8085/ - - # Create crd container - prior-auth: # Name of our service - build: - context: '.' - dockerfile: Dockerfile.dev - container_name: pas_dev_prior-auth - environment: - - TOKEN_BASE_URI=http://localhost:9015 - ports: # Port binding to host from docker container - - "9015:9015" # Bind port 3000 of host to 3000 of container - - "9016:9016" - volumes: - - pas_dev_prior-auth-sync:/prior-auth:nocopy # nocopy is important - - /prior-auth/.gradle - - /prior-auth/databaseData - - /prior-auth/build - - /prior-auth/logs - - # Create crd container - prior-auth-client: # Name of our service - build: - context: '../prior-auth-client' - dockerfile: Dockerfile.dev - container_name: pas_dev_prior-auth-client - ports: # Port binding to host from docker container - - "9090:9090" # Bind port 3000 of host to 3000 of container - - "9091:9091" - volumes: - - pas_dev_prior-auth-sync:/prior-auth:nocopy # nocopy is important - - /prior-auth-client/.gradle - - /prior-auth-client/build - - /prior-auth-client/logs - - -volumes: - keycloak-data: - pas_dev_test-ehr-sync: - external: true - pas_dev_crd-sync: - external: true - pas_dev_crd-request-generator-sync: - external: true - pas_dev_dtr-sync: - external: true - pas_dev_prior-auth-sync: - external: true - pas_dev_prior-auth-client-sync: - external: true - # pas_dev_fhir-x12-sync: - # external: true - # pas_dev_fhir-x12-frontend-sync: - # external: true \ No newline at end of file diff --git a/docker-compose-porter.yml b/docker-compose-porter.yml deleted file mode 100644 index 136ef75b..00000000 --- a/docker-compose-porter.yml +++ /dev/null @@ -1,111 +0,0 @@ -version: '3.6' -services: - keycloak: - container_name: pas_porter_keycloak - # command: ["-Djboss.http.port=8180"] - ports: - - '8180:8080' - environment: - - KEYCLOAK_USER=admin - - KEYCLOAK_PASSWORD=admin - - DB_VENDOR=h2 - - KEYCLOAK_IMPORT=/resources/ClientFhirServerRealm.json - volumes: - - keycloak-data:/opt/jboss/keycloak/standalone/data/ - image: smalho01234/keycloak - - - # Create crd container - test-ehr: # Name of our service - container_name: pas_porter_test-ehr - environment: - - DOCKER_PROFILE=true - ports: # Port binding to host from docker container - - '8080:8080' # Bind port 3000 of host to 3000 of container - image: smalho01234/test-ehr - - # Create crd container - crd: # Name of our service - image: smalho01234/crd - container_name: pas_porter_crd - ports: # Port binding to host from docker container - - "8090:8090" # Bind port 3000 of host to 3000 of container - environment: - VSAC_API_KEY: ${VSAC_API_KEY} - volumes: - - crd-value-set-data:/CRD/server/ValueSetCache - - - - # Create crd container - crd-request-generator: # Name of our service - image: smalho01234/crd-request-generator - container_name: pas_porter_crd-request-generator - ports: # Port binding to host from docker container - - "3000:3000" # Bind port 3000 of host to 3000 of container - - "3001:3001" - volumes: - - crd-request-generator-data:/home/node/app/databaseData - - # Create crd container - dtr: # Name of our service - image: smalho01234/dtr - container_name: pas_porter_dtr - ports: # Port binding to host from docker container - - "3005:3005" # Bind port 3000 of host to 3000 of container - volumes: - - dtr-data:/home/node/app/databaseData - - # Create crd container - prior-auth: # Name of our service - image: smalho01234/prior-auth - environment: - - TOKEN_BASE_URI=http://localhost:9015 - container_name: pas_porter_prior-auth - ports: # Port binding to host from docker container - - "9015:9015" # Bind port 3000 of host to 3000 of container - volumes: - - prior-auth-data:/prior-auth/databaseData - - - prior-auth-client: # Name of our service - image: smalho01234/prior-auth-client - container_name: pas_porter_prior-auth-client - ports: # Port binding to host from docker container - - "9090:9090" # Bind port 3000 of host to 3000 of container - - - # Create fhir-x12 converter container - fhir-x12: # Name of our service - image: smalho01234/fhir-x12 - container_name: pas_porter_fhir-x12 - ports: # Port binding to host from docker container - - "8085:8085" # Bind port 3000 of host to 3000 of container - environment: - PORT: 8085 - ADMIN_TOKEN: fhir-x12-secret - volumes: - - fhir-x12-data:/usr/src/app/fhir-x12/databaseData - - - - # Create frontend fhir-x12 frontend converter container - fhir-x12-frontend: # Name of our service - image: smalho01234/fhir-x12-frontend - container_name: pas_porter_fhir-x12-frontend - ports: # Port binding to host from docker container - - "3015:3015" # Bind port 3000 of host to 3000 of container - environment: - PORT: 3015 - ADMIN_TOKEN: fhir-x12-secret - BACKEND_URL: http://localhost:8085/ - -volumes: - keycloak-data: - crd-value-set-data: - crd-request-generator-data: - dtr-data: - prior-auth-data: - fhir-x12-data: - - diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index fdbcece3..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,111 +0,0 @@ -version: '3.6' -services: - keycloak: - container_name: pas_prod_keycloak - # command: ["-Djboss.http.port=8180"] - ports: - - '8180:8080' - environment: - - KEYCLOAK_USER=admin - - KEYCLOAK_PASSWORD=admin - - DB_VENDOR=h2 - - KEYCLOAK_IMPORT=/resources/ClientFhirServerRealm.json - volumes: - - keycloak-data:/opt/jboss/keycloak/standalone/data/ - image: smalho01234/keycloak - - - # Create crd container - test-ehr: # Name of our service - container_name: pas_prod_test-ehr - environment: - - DOCKER_PROFILE=true - ports: # Port binding to host from docker container - - '8080:8080' # Bind port 3000 of host to 3000 of container - image: smalho01234/test-ehr - - # Create crd container - crd: # Name of our service - image: smalho01234/crd - container_name: pas_prod_crd - ports: # Port binding to host from docker container - - "8090:8090" # Bind port 3000 of host to 3000 of container - environment: - VSAC_API_KEY: ${VSAC_API_KEY} - volumes: - - crd-value-set-data:/CRD/server/ValueSetCache - - - - # Create crd container - crd-request-generator: # Name of our service - image: smalho01234/crd-request-generator - container_name: pas_prod_crd-request-generator - ports: # Port binding to host from docker containerdockerß - - "3000:3000" # Bind port 3000 of host to 3000 of container - - "3001:3001" - volumes: - - crd-request-generator-data:/home/node/app/databaseData - - # Create crd container - dtr: # Name of our service - image: smalho01234/dtr - container_name: pas_prod_dtr - ports: # Port binding to host from docker container - - "3005:3005" # Bind port 3000 of host to 3000 of container - volumes: - - dtr-data:/home/node/app/databaseData - - # Create crd container - prior-auth: # Name of our service - image: smalho01234/prior-auth - container_name: pas_prod_prior-auth - environment: - - TOKEN_BASE_URI=http://localhost:9015 - ports: # Port binding to host from docker container - - "9015:9015" # Bind port 3000 of host to 3000 of container - volumes: - - prior-auth-data:/prior-auth/databaseData - - - prior-auth-client: # Name of our service - image: smalho01234/prior-auth-client - container_name: pas_prod_prior-auth-client - ports: # Port binding to host from docker container - - "9090:9090" # Bind port 3000 of host to 3000 of container - - - # Create fhir-x12 converter container - fhir-x12: # Name of our service - image: smalho01234/fhir-x12 - container_name: pas_prod_fhir-x12 - ports: # Port binding to host from docker container - - "8085:8085" # Bind port 3000 of host to 3000 of container - environment: - PORT: 8085 - ADMIN_TOKEN: fhir-x12-secret - volumes: - - fhir-x12-data:/usr/src/app/fhir-x12/databaseData - - - - # Create frontend fhir-x12 frontend converter container - fhir-x12-frontend: # Name of our service - image: smalho01234/fhir-x12-frontend - container_name: pas_prod_fhir-x12-frontend - ports: # Port binding to host from docker container - - "3015:3015" # Bind port 3000 of host to 3000 of container - environment: - PORT: 3015 - ADMIN_TOKEN: fhir-x12-secret - BACKEND_URL: http://localhost:8085/ - -volumes: - keycloak-data: - crd-value-set-data: - crd-request-generator-data: - dtr-data: - prior-auth-data: - fhir-x12-data: - - diff --git a/docker-sync.yml b/docker-sync.yml deleted file mode 100644 index 9f93c6f1..00000000 --- a/docker-sync.yml +++ /dev/null @@ -1,35 +0,0 @@ -version: "2" -options: - compose-file-path: './docker-compose-dev.yml' -syncs: - pas_dev_test-ehr-sync: - src: ../test-ehr - sync_excludes: ['.gradle', 'build', 'target', 'logs'] - - pas_dev_crd-sync: - src: '../CRD' - sync_excludes: ['.gradle', 'server/.gradle', 'logs', 'server/build', 'server/ValueSetCache', 'resources/build', 'operations/build'] - - pas_dev_crd-request-generator-sync: - src: '../crd-request-generator' - sync_excludes: ['node_modules', 'build', 'databaseData', 'logs'] - - pas_dev_dtr-sync: - src: '../dtr' - sync_excludes: ['node_modules', 'databaseData', 'logs'] - - pas_dev_prior-auth-sync: - src: '.' - sync_excludes: ['.gradle', 'build', 'logs', 'databaseData'] - - pas_dev_prior-auth-client-sync: - src: '../prior-auth-client' - sync_excludes: ['.gradle', 'build', 'logs'] - - # pas_dev_fhir-x12-sync: - # src: '../fhir-x12' - # sync_excludes: ['node_modules', 'databaseData', 'build', 'logs'] - - # pas_dev_fhir-x12-frontend-sync: - # src: '../fhir-x12-frontend' - # sync_excludes: ['node_modules', "build", "logs"] \ No newline at end of file diff --git a/dockerRunnerDev.sh b/dockerRunnerDev.sh deleted file mode 100755 index 5b17a28b..00000000 --- a/dockerRunnerDev.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -# Handle closing application on signal interrupt (ctrl + c) -trap 'kill $CONTINUOUS_BUILD_PID $SERVER_PID; gradle --stop; exit' INT - -export TOKEN_BASE_URI=http://localhost:9015 - -mkdir logs -# Reset log file content for new application boot -echo "*** Logs for 'gradle installBootDist --continuous' ***" > ./logs/builder.log -echo "*** Logs for 'gradle bootRun' ***" > ./logs/runner.log - -# Print that the application is starting in watch mode -echo "starting application in watch mode..." - -# Start the continious build listener process -echo "starting continuous build listener..." -gradle installBootDist --continuous 2>&1 | tee ./logs/builder.log & CONTINUOUS_BUILD_PID=$! - -# Start server process once initial build finishes -( while ! grep -m1 'BUILD SUCCESSFUL' < ./logs/builder.log; do - sleep 1 -done -echo "starting application server in debug mode..." -gradle bootRun -Pdebug --args='debug' 2>&1 | tee ./logs/runner.log ) & SERVER_PID=$! - -# Handle application background process exiting -wait $CONTINUOUS_BUILD_PID $SERVER_PID -EXIT_CODE=$? -echo "application exited with exit code $EXIT_CODE..." - - diff --git a/porter.yaml b/porter.yaml deleted file mode 100644 index e1e83eec..00000000 --- a/porter.yaml +++ /dev/null @@ -1,78 +0,0 @@ -name: fullstack_drls_pas -version: 0.0.1 -description: Fullstack DRLS Prior Authorization Workflow -registry: smalho01234 - -dockerfile: Dockerfile.tmpl - - -required: - - docker - -mixins: - - docker - - docker-compose - -build: - - docker: - description: "Docker build" - outputs: - - name: invocationImage - -install: - - docker-compose: - description: docker-compose up - arguments: - - -f - - docker-compose-porter.yml - - up - - -upgrade: - - docker-compose: - description: docker-compose pull - arguments: - - -f - - docker-compose-porter.yml - - pull - - docker-compose: - description: docker-compose build - arguments: - - -f - - docker-compose-porter.yml - - build - - --pull - - --no-cache - - docker-compose: - description: docker-compose up - arguments: - - -f - - docker-compose-porter.yml - - up - - --force-recreate - -ps: - - docker-compose: - description: Docker Compose ps - arguments: - - -f - - docker-compose-porter.yml - - ps - -uninstall: - - docker-compose: - description: Docker Compose down - arguments: - - -f - - docker-compose-porter.yml - - down - - --remove-orphans - -customActions: -stop: - - docker-compose: - description: Stop Running Application Images - arguments: - - -f - - docker-compose-porter.yml - - stop \ No newline at end of file diff --git a/setup-images/ClosingLaunchChromeTask.png b/setup-images/ClosingLaunchChromeTask.png deleted file mode 100644 index ce0cb60bfef101361ed0310d81ab51afedf3a2e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182235 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 (7 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%0ADvD2Ed_OKS__$6f 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

27U{?T~aO)AA3+sm8zP%pj{ zdII8AM3(tS_w3(Z2t;2Vv~~A_q&tW1JLiqbn-3Vk`#~Kkm_g!HX-ogMFjRh%v;97N z3i*vrsVYFq5E4!J*6SIngVIYlDwh+C?9q# z0{OA9FJZX-cm#>7;wJ=DBwjYrpY9X}*tK+kf#}0GPIpQ71FVK{WFRS4=(1yPiFC0s zL&ri85tCR602@xIV^_E5q;1r`Im6E8cDSjQ1z zP}O!+5x=I*5rcahn89d>iW``j22ki)9v$0d9o8H~lK?5CS@#Q0tlZFfN^ z#lA?3+6O#D^O(eA5vJzjp{W|p>17}q1cY2SG~B;UM_IUxF$u3%eKd0aFRTw5d`2uu zWceNjs)`M)r;dE}Ba?+n-lnU5#PIrY&j&pi3O}|v%`|IBBoj;HSWohlZzLKab_`ns zwaTR~d^xD*pDT+;J>okl>U0bqg6C_9TQ7S0_W|7nva+`GAcK6SFh_s z%MY}k*x6D%^RWUVk+50Q6KY73LI>_7%Xp1g%No}G5b#-a+o~si45Ao-438d9o6Em3 z%*Uy4I995Qu#2$j_C4VWw|@~Oww`lYHOhVGO|o-D12KWst0G7G_oMmxX#iD^0cwH| zz6|mi<^>N#3A9+p@qPP-!*(~^!%!&S)>i0sk=DVHe~ge52Bfw=+W@%K*(r&A%P)X9 z!rwPhEdLb}#SLl*t$0J$pIyQA2b`}Ush4$_>5ptr@Ug#yzWKOH8_S%65z9J}PfQaE zBgFJHo6XR7?{|u|^s9&R;t-2rjN#5eQ_gtN_flb_pcb%Z~fNDj~#>j(|H zrF2BjOD0Fj`K>0!$FF^Cp~=X_87dF5nxY)M)d!4OvBMqem+eEzf*Y=UKB6h=jPqz$ zG68?8(*lYz_2FA7f=#B`*Xx|=->!26NP#Jo0o4OAM$(~e2CniL)Wt}!+K{kxb#HOh zEvcE_&ua{x<#wfysV3>Jznu;Z5_%UIBM#nczQ%2TSHaSU(HlvvDN zo}jBb-uaZ9ob$5RC5Rn@0+MQ0ajEj*rk;5V&Rjq=z}_)_`k7g&5TvcN2S~Cyb#0A~ z2PW29QbN;FHZfo3i)Te}wIuUHz;$eCSpC{|PsE{9QF3`{!9?8B3T4H~Dj7?x2dbs* z`RQ)7LUhb)lzelj_Gsyj_s`U^kvO2Nlf0E1*v5`I7%7nW3ksA_U%S^r@h%%CHV9%o z#{v20#+GcIJN<9KV zH;m%P(Gf--OW%fo-xeH_6Zr?v$h^thz!XD_GlRlGNu>%gOQ%isW*PS$2k@zdCd=sp z1|akQFs04#JYY*9R+UE~c-;@_ zhB##5PU`$1CxL*G`9Atm_~l@G#+B8|B;)O4do!o_3&l_8ixBG zSo(1mPq11`YSVH76xD3xt@K~aKlH}F#|1x2x3{Mm2DkHte^1`e8%n~~)^S-|6GmW& z;~q)nW~;V9NEA7qMDVcB5VJ)~mm(jN>tp5NSAP?K?n;>~c|_{;k>HQarrR>=Msnx3-Xv)668d8!Zn1sPJ>gb{`~*pF)ZuQ61n#@xlPmbV*A zbF@`Q9Ey)f{wHlH zn4P3;oG-hv-;oiJ`d;tmsZ*8DHm0&4^`B*+m5A>3WJL()r=vL|A_#!ABg=T-Sm73E!I1H^ZfW9_H+L1Pvj6ZhQ0x| z)28qaqPZ7eN-bwiQfE}&j8mh8Pg-C`xC8BD3N1yi!y?ck^`a;$rRGG(Z{43UUcasZ zR19H$DRik5J#xhtIXu&q*Tiy3NS4PfzdAQGc=yAE{pDsT6D9tfYW-IlT}7Sb+G-pv zp6Idc%i2MH7;J8@P!3TLjVFaGSd_F1SmZ$wwFM~G4&hQAZ<*+0h-*#&46b|(y%mQA zQyy8-0$Fn7Z@H9RgB=$T)=w_Rs4djLfG@vGEHlcM-Up2cXh6o~yuXOeuVfdi@-%@M+DgH{~v{i2if-h3igY(BeJ?2k7g6y+H~)E=cPh7!db;90GI&E2D$Bn2_x zfB3n1yf>?WucX6LkaVOskRhr8W}c1oF`Vp)^iBKO^6o#kA3I@*FpH-c!N0$)ri9(+ zrVk+WQwgE_FXz=_%mTUZqI&#-q>N6=phN6F2}!o6*u&etSyS$axUqLrDgw`D3k$-LR9jO4qNrHa}kk(CD&#!!PwA5eNWaOORc};`g}ch z7f&uG$OJsoMkov#_)BUkT=43m7Eb+g9CpkTZBA~OWt3i0iB92r6s=Av|F|?wnlCD^ z|GmNSk52<49aMHZ_noB^_$rDx4xG>ry#Kg0sYpWMsH&Ky^GTbL7XqkAB~UVj#Cb5E z2D9S?7A3ndlXzC6$c(uT18bz5pYQj^vga;llE&zL1!WY00brK;rP#q|gnT=MLZCns zyPvq|oh9Opc{P+LKwCXUi69^Rh7z4DPbLg4j}k-;(lAxftBmeF1XdsoH)5N8UEhaW zWa<)jqRTbE54oH!NekGVEc8$kI20UsuQgR(W8TSyiETzC>th2f*!T|6Gkp97BLus3 zv>^y!q$H0$NtB6)=#*fXh>=AZ|4ggKfS<`^k$kL;$5sD_udfb>y3N{FL$BS;u&NV7web!(yHHAC~Q;tRhNbzse(rY3&RQ$4ieq7kYMv zVGOy%UbMdUwN#yxM05wG3ae7aPu*!%&{ zM*#}>AB!C4OyiZx54cHR4Fba&c6rWfVq?ujvc~1?sI!2E!m5rTSL#-5N+Ett?&tbL z?<_ge3q_R%ewe*S-m?|5lS>B;6I`LP#Skj`lBVEOmP_Ti*aG9yPGRC=pj&6)&~wb{a+Y+X9Ta zAAg;@tr%5yuoQhN7$g^|?kbk#x!u*0lF`scrlVCk1%T6cv2>{51JRzAt-SX-kLyFm zvddf0vSKKm^Yag-^f*s*FUXy!TbARShZvD5{{WCDj#7dE6u`A0v0td;8)JydnA6nb zAraerBPCOilF^|a&(A-g6!oD;uqQ4^r|4yb>*T$H3U2{l=^dSOd@m9`f#gBps!-MI z&lx`q1iTfd&1U8#den^mE*bWf=|_GskG19{1u0ZDugd{mV=g}jgbT^SKU6<91|AW9 z*hoCUwX{GicSnicwR{aCXS#uZ-3Sjf$DZ4~PfkPI>;dGiZ0iY@FkV5RTrZjliRHTt z9IEg&ke8NXNhw9BMmG|p4E%|GE*1$CSYw4iy24BxWKj*@p;7nk9h}^+eO$f#RC6aC zd~qA2`F#8OdqvsOk{C7^OBphI)m*hkor2C76_fIV^YYZp<+2X-b)%>kDuEJ z$&_0(Ne1Do+KT|z3!(3!v{P+{E*43;uZ2G0rLi>}x-X+UpRO*`6SdacmaxWjBuLE> z_1HGDM^pA%o57BF?Em1l_x+SB~~?kN#pd2n1?$Q z%7wNO)5K^KCfWyR48rw4WbxZqx#6r;r7yBE74QPXL-os0Ban$BR2Q$unxVcKecQ}+ zjTYLpkc3`TE4L=U4JOR|-toUHcB-cYEHa9K5%&l(4uFi5B=~W3bUF-WD{vc&$ev-0 zMCDbrJJNA(*E-X>X1p!ZNRU-SClevpblPtxU{N^-rB$}R&K`a1{fJa`y;WP0BTisa zL9SW%UG(Q&AO^1;{oUEp7tT_=Ub%0HX7KVtdchWC%E-#SebkXHU@BCUfW^i`tM*Y5 z-%73Gkub#*qCr_okG7RqetxvAP`aq0VKdjoogXiSQf`Fb$pP{=&Rz&{B|U}*UEu3k z1_GDw`2N|K4j|PDJ50ZSHsSH4s>bBK+;1UNF#f|qC&s`FflX>+6&~Ck<7)Dqz-so; zh)TO6>0^-BGl-b$Yw@~aoCr?3yP_OLHDjGDBWw3QD2-(A9Gin~UFdGZmTC4a0!XKZ zB&F$h%J|zz5Tv;xK|lGqMtdBsIr9b6Ry2|)#U02d%2;*rf`d%6&%=~gE5MPv$;5SI z(zIZtm;vsxNb4|WS#7NM;^WnYLyhlFA}4CuI-f;6rEVPr$XN1wCm+KplO{DxDl+8} z9Dpu8w7K^o?chnOp{IY=QzEpVAjl^+l|t?+ZVyihQ5%~V)t4NW#YQj^#{qRW8@;(C z-ZVI5JE;if5UK4iokfoXvmRwU-j!bYl5<@c$AM+_7o#{kF|k$2Zk8?eXjsFuI>p%q z_4R#YNIZX~Fvmd5`J!fD_DSl@_~{U=s(#|wrwnenu{LhU?TtP~dl9~?&|pj)Warxa z2)4uSVDelLxz~HlYP^BPI7y60tT-Ta*r!+}gmqIgO=^RRH zM-#+Kc_r|9KLnR*m)NnbVgO=$R%Z?77cVNFi-1`*Z{q~$k09YWzp2!G6|=I9WS5KU zcO9`{yEZr8{>ux1{9ySy$@wQiJmtbK;make>xn9}$)|*$a$UaPhM4NOyAxl?+sjen z;o()PoalH@NBWDlh(qV|yF=c|Pix;8B2a6ZaFwYmtEm*sB+Yr@r3gm91Sxz6RHMyu zT8eVAN40X?O490+aD}WEssNp95@dC4|ABtza~u6FezeH6V%7pQA7j7YF$ zP(HYHtNS>C_Zx?0$ZAhW-s*vTh`f;&HER(vh9^cXfl_kTtV!wKh;IF;TPS>1f371o zAw3R=4n^pmNKn#psD6b$9XWOZR;cO&;OPU`5=#hfZVW1GCiarvIBG@Q>1PtBNgQzH zRYtVv8$rP#?x3;ryCs+G&fbgayb z3M6^7*g<;a0Lx&25FfvD9i{V?u2IM*`W7vcxEm6p4lS5W^g6oXCtFJ931>MM**{~H z==@Ouk?}U9MggI(SC{<9jDG30d~Lf!W<8W=czD^Vr;vd$6?T?G^$y|0gOd1{8?Pgu zGaZuX-~t>#W1Uy~bEQ?c@gsJEVtw=Nnyi^)Nb2B(J?V8AAyb{gtVv2?$>rHM9j%GCp7~~1@ZS+^|p4Z?! zSj`G_jxt{sQiV8d9^lN;nB_iLI_27^?p1kty16borG5wWO8YWI%1%0P==)X9i%WDm`sxBkR4&Yph_NMKpdgj$gtiEZ_Aa{3XOq| z^Mf{z;WIm9%JPv!!}K)Z&2blTfl*xreTR~Up-&2pYczi4BeQsu3^EQ#$Z&hhH`af)M0xyd8r&6Y!?8H`t~Qp{ZPqhZ6zt5~uG#kMu zLHt-75f_DZo1eQ;a6?qYM~cuV>_ep6ZNeRa^xqHMV`}&*?YAe&Y#XHX1eA(A7#PzV zo=7z1Cdw4REh(`tjR`pBm%M<;a`WD&+^ z&6E)msQJEAsFabA_%W$6ysqF21|qVxP4ggC^7(Ht5wV@afA?U7pI+xI0{B7?UZUSR zTg9^pBT!CN-&E-&w6ZV`;ax%!#&A3}Y8pMg54sx|Eph9FJ?GA(3JW?!)cV)f<4dW& znk>R&NW98E9Ghw4u*vxTbKm~2`J!&LSH{h1Cav;yNdOX~cyFhHj{QU0Z1if%#zMji zh)*0uJFq=j#SJF(ZZkKBL*w3$Id67$R|vW9zg}bQbU%k7igh_N1{LzvZ2#OC+pm&Y z_5T72+Y}RPGBKk}v(qUfZ1!Gy!{;#Q6z`Sff%M_KNPdXcNaB}mA=C3pc_!p!cYzVB zi`7;L=nb@$kI@+7HFOSx+>ISJzTLuA)FMX&d9hYsosBnx19}Hr#7MylCCQAJ#CevR zD)W$s;;D`pqcE{YWiV$LA7dr~u^N?9w@VIA$-kZScWr5D+zA*zUXlKcU6xdI?Xn7! zkKSk1IyY-gZ@134mGQt(7lQmcVT^TOQ`yJ5z^QOyu#@(qciB$Fb|-2+ckhRY!By1> z*3(Pyx|pAjN6#T4;20<0_6}))mkQ1>S%ivmeyN0nwfeqKNhtZ{69!Sc2oFomq_o9A zfAH*z-ENIeDl(mdn~j1q=7U&;{@*FaKL!XTrA`B7@;qpq$)dliEsn6eCE zVs-eckj`Jw>>Dt815SoCyR*}Sz4Oa*U&G?zWoJ;PnlIhjl ziGL+_hCd~AsYqJue&Slhnx9Dmb?T|ACJ=${3`3`YKWMC&r=;^Gmn#x;-DS1nK0EB0#3oI3 z=KkpY+5wh$mRTx(jqgU)Y@QQgP@a^K#87gFPfFE2diDA-HSSmISyX0$JloDIC2%fnX+K%KGz@Fc7u5+ zq-pJZ80jrIPD`K}8zw4hd+=rN6m}#$H&7MYrf#~ZGB>&*M?NqJV1=uEr1Bi#F-5T+ zxM7r+b_`QX`!nK1Jy~352sKc&UyXfvvCm4Kbqoq?wR~k4_;?eQPk)s<=sqK_wjUrz`3K!`&;3fVnI;!%FT-6HoTFlh0orr`|!GRO|$ zDso-yPO=4skPEyc;u%e$gPv+m%NJ)gyWgba-w#-W6eNC z4`Pbh5A_-0y?%-!SU5f{E@TXP{A1%7zm%z zlh66$9Svu6*4(gp=Ob=vfN6YS;I;F!((pqcv_SeWmsoBSs%f3jMSh!}hnM<^hMD3A zdBdXTQ;S7+{jP?5&*V6f;rlzr#{Z`%za+a!qyJQQe1GqJJgW<-p5b*ZGx2=R5dTEV zj@mVn{Mkrsr8C0^22+s#`BT}P56CWXXx_R~5)UTR&w+4Sn~_?{BlT^QgUY6rfhtjJ{Iff0*%uas`oT77sy@lTFz+JiZ=w1{ z?c>JaVf@Fa(vuENV&E~Y-AhIv6**REvj@!*j<1mRGn9x;K z6xdp>J4`=zJC_W%PX7B35ZfoxxjWBOJNlbLQaLJ4aa?UsAEVeKH1b%J|NDvl#VPXd z&upj}A20hk9Z?%DIz-8_8;cIMVvu8Xoq=abUugII490(9$wv|Gio9HD2TKCRdU-wO zODQv1R5H(DMxgdJNQkf2u8m#1rPn!&Y&{*1(}?x@c@As1 za`}0Z8iX7@EJ+P2@tji`Y%V7Ct=NZoUb$54o9)4y%|BAKPu!=e{|hP3e+qNJg2lcm z7+yw3zxwZboqzliGa4s7+s$HEHf<&#jvnEM`&|Mkh#L0)zAK{n5I`?L?xEk=mw%hb*>9v@r6TE&k)GiQ`LJuM9(n zR-&?_`Z1assN%nWuK>$;anxhjMz?%5{;B`l-~Z3ooq#u#OGGme9oS>jqM zL?aP3RcJW!Ioi`^m-0epm*YEwBi9^gE=xMRO&R{pmfLYD>$g|$u@uH^SB@&rI0^v0 z^D?m4U0=1uDH5MYRf|pgK^*kaK=$uAW%IR)F_w~OD_`Wez!c!2yV8Olh~;Hu^R55 zQA@@=+3dY()9I?h{xz_ePrzKfc*RV0*#@Mv$rn3zzAWh(9z6f+^!w+Bp%eC2C2K*a zlEJbf!K1VW+ix}soZD|ci3?Xp4)D0TQQ!Vv&W7Q{x{Gw znKmAeIZ0oFAliicltMK#?d<84DJhS*5tCLW4+!ePr=$ri5lq2=#VIiRaa*x#Vu`h< zs`!T;wHEcK-`xNX<2;ONK$UXpf%P~=0UTiiV4!Xw6`0^r6ckQ#=pc!5A7kwY07p@2 zB%v!%J}LYL?!?xzer?EKgRrqseKeWe)7n8Fc5NVn&|4S1J{=SWaBIs1h-2D990RYv z_q47qo3)XFO`UhK+AE@v&Vpj%qcrF%<_Hi;#&DOy`Gq4`MT{uf#o<*CO9_1^xs#&p z5TLpVCj(jsK}QIPC~<*3(bTo6>Jvq3nO;sc8fVDdJ6SW!J4qM z_gL;jw)z=e#4oNJB2hJeKJyCEPTUV0Em$1Rdqt?IoM%@jOHK=~BibiYsv}XX#BLzu zaJ(#TK=gEjn9Y?{DQb?eCnD!Fd$6?*sI{CWJ)lGhS#KJ*_G&ht{S4%6#;}|LhKrNU$Tr6*+ zglGT0egFB@`XjWyTdSD6T$)8Y9oTwdRKW_xwW}%Y$m82s9rFV10Vn{Ok&~dl{lL^|CJACMo?Dm<}hyyo^CMaDm^ve z6RQI%sz3?o?$FnVP$*9!2!l zzkpk_4%<%99EvCP5YBp#-xYP;o>&HGwp<2?7O|a`7>&o6Na6!jOxr#6-9v*FiqB#C ziZ!w0LNu9pz3jEi1hNCc%M7Y{-XQhM9<4yP1A~Cc!zjuURDLcdcV-V!tgFAcN5oVl z#kyFGH!s3?Ii}l+mF7yC2H+}lof&JLZcC*2<;nG3r-ysz2g~SXM-ReO_75DkI8GF5 z+tG0?w~YCW6D#9zl0J3#0@>)aB-X-PxN#MDYt+H2Wn!g2b#PT%T%3&FO*SF?; zeIq&e^IaIfVp&P@*q^DEGW7sC@7g4@2a7;(tXE@|Pj$Vw+32lNbW&ZP$Xcv%*wM(@vRCwR zX=f^E18Nppt=Y#v?|B#_tLkZV76bmO%8~|>(Ajd2;3y{S zXt5*6D?1ej>wEnW<0$xmBw+~b!!@#q2c^tt&@qW2)fFqmiq9>h#~KeyB&A@h$rjU` zA=d6DBDa;)nKIn7=^{3kNK8hTQZE6L(}SS~vUeR3zyXJGP#BpuYJFc@G0F_t+j0kQ z)pH+i?iy<0t&nw0hDJ=<2R3oywEV&l0wDJe+LXhkKEQ*t&bb-cxcAJaCO3rl2`?VP z#^P@(#v^)k9uH|bp=A|9y=5IlQ7cpsd1*zVG1oevB9+f(gxH0ro~-F?2OgF%uwPSN z(X;Q|6;yo%!=$r3+c+I3fP8EUNzV*z%P%?n*KZz|IK-cyQM$rt7iA6CW*~eAgH;ol zTZT)F$YbH{3#qo~rh$46+r><)GQzRu4yD~KuZdGjd|v{YxwQ=ZdLA8{YDvb2!k*5F zuZG=Q(aBrT^B7%S4xo@m;+vc5flFi)8}&a_6~fe_xu5AA$%>x6jPBLcCwb#`I+<>8 zUm1u?tcbS(6xhGr&x#V5Z++Dgng9sDCsCO~yfH-Cttu1Lti}9z1lrrobcW}X<6L&g zIbUCMKKP#xT^;ZBaJ{u??x+#>4XmXPI@SD$)FownIen;@Q5j_66O_*N*`w`}Owe6) zSiF+A>$VWJ64B7Z^~2_!_=cZkznY%S^ueA`$)HA(cU9|kl%O3wIaS1J37n&ee>92Z zYB)s%C8^w|n;XOX6xbG#nRJ8^a>r!Y|M-jH<>LjY8(V|QN>hy*V^iKNh^cUJ{Mew& zQMXR(CL|R2Wc7yW(ktuJp+~Hp0+Qxryw+OP%y$VUfeZ#*V2Xv{V3OJ1RAq5B`adln z*v3PIctfVd$&z?{oDPusB-m^_F0ws}>VU&GX>vy2`$E%Mr6t@jOs$x+Jvz_sL_s%8 zUrraFPjP3LUF7O;@6^bPzRU_(csL2NKbzbHb)0>?w*p6FWoniL{3oz|jsqeh>BI^+ zMe|nCSA&+tOQ5mY2ux2a}6*RI8x*PRFk|MN^%NE^}ffjrU=_Sg{;3 z!jGOQ+MewbWb`XltYmLGSyW!?*R^Y0Aw~zO3TNm=COVtn7^<%%T7Jf=^z;XAcaYg_ zGb*fs@@E;e_s>z|!LRX}OW8Zy+tQ$<3oz|@$6VZ$923N|XoW?}1C3Dt_WdN?fMSP5 zp=2&Q)d9+tz2f2Lxe#~l{XA@^LhR$N#RCx6kWPgtaO1MT|47_Y_GLT~NT9x1t|Df> z7<8_xjjVJ<0dQC71NP9yu*wS&VoXFX;R@Dw?rNX%&~L_fI&Ueb@pG1}@7_l9dnb)y zzlb4i=st$;no`mALIY}e)E|S*f3J`OqcgtSIPB>39TwWITl4u$VJM!FW8ld|~>W}~)2K7MG%y7u)7sB*t-r5HvL-PJ@mj#l;3|raLl!WGCAK{ugP(Z{1 zf=gj6G8j43b%Gjd#p;vr<;VwCx6#&eM5sSxf$ziit4g~XwVVJO;5k2m+vbk~+l%rp zT6j$vey7#TMDmc{q+sOvFN@5bj%Aom*)imtygl#>*Y1aFQ$@dzh8v^d6!!aPKfZb zVAf_0)9=&6Lvlxo0E;g7f+*NHNA!_w-v==mLVA^u`k4`m_~64aQ+(PX-K(DA4Xnd= z>pfes`JBHd>e|+_+psY<0>g)=+BQ``^}MY+5c2wQ(G7c+nLij{oTmmcc1SzeVJb-( zOSLy*MrOK!&|9e&>0UQl>D>d@}4T{%3{q2h%`64UC{1|Vm z??=hwVcVqI)>(ednHf`#UJm5184%baBB)Q|&u7PTT?yZhfYOH7aDTwM8S80r*Un(d zR5h*A=Yynl>&tXihRkJ?43AZZofk+#q1Gcp#c$Ur5dZy*>-*?7$x*mXCb@5yLqNke zD4#O|r7;YlEUeWuKk`+!{U3ELK2vqRNUYc1M}lNBfpQ!l{!0?sm?QIFfXk_Wy^$zR z?Aeyy-ut<&`13Jj5;qR{c<(N=S7>)VM!(cNLyO>w?%bKiXf=VFNP%b+B&dyi#83e^ z50nks{5pYOP&f~X&zxEHbSDKN@ok>k(eNByvTt+-$M2i<3+zXDsC@n6ZRXH**onq# zDxHyv5<)mw;m1DX@XjDxdJi&;$7YQCVr91p9Q^`AvJCjj;5qf{Or{PQm2!y(_jj!) z#Mb#>pwpqpOQ>oaGu(C}B4l@+mh=h^OdR*+D%ORau22v~+`K^T57H@(Nx|cWkf=fQ zfF#evQciQbZYDEH6Tmw&gyYXqkxO^V&`y?d(9A6eSOYrec1?cIVg4c6o9OS{&JC}s z=8k*O4_f5%re%!ZbyB4?BD}-z9_TaLSePVZ zka>F#JE@UlTK-*0L5$ARoloddeIz=JIZ?rbeZ6~f9nG2W{f84P6d^WrFQ|i-G4Pc0 zyX&+=XKi{TxhzdfTYgNP)(`6YNbMU&ad7!ckP21Xu8$dSf%EVQHC>xn1ob7Df{q3y z$^iXIvF(IH4jK9wvS`O6aulOe(}yvWjwdLMT0< z?|CP4hqCTCpeuHZb|O)eB3rjdlwan7!kKg7^Rn6vaX7j}x>_e5#`il$!#9*{u5b)^ zy5-6IP49kGbREUf&@#FW(YRi?y9j|Nvkq7hq@S2@;?hv^jD%*n-1?r5X_$PJx2uI0 z)D=>V(qwPY{0sg3nw9zo+L%Ur%a_ z#NAiosP<7#;pwIzksy<#`wn*eNBGV*loStK=2mSf$=NS)?z;Mf+_On(y8prEx2rK^ zkO&@(G5D3WL#*!ymU=T_$E0OG_5}i@k5q+m;}fMo$mcBc{Dx=-cI6Fm;;}Y!(W}oZ z@Qo4%T-f!a-6oRr>9d1CJtyzkNve2zkGcImiS^fgty*`oKQ=fyH*oH`wR8rLS|(PF z`&mF6zgBpY-ksHiUa}Gp!(4m=L@U$&$hW#so+ta(>al>)Wg(bV$vFAgK?A!tDgNM| z3B7hXRMyZBx7l0$i(|(){1AgLL#H~WNtV{!QJ)r3QBL*)ar7Qw0DD| zsZjX$DGQlzM)O0VFHwmS=Q9o7IS!;o7e}L+S3iDD9dwoj(|XMHIhGVM&$XP$_VT9Q zKB2S_34g{|DnUl#q-=)nNKLQXH43Ct+Es-_3DHPeCyfRsk0y7ftOOF8ekI;t^a>JD z0e$3sf3w&hqT$?Z8a*6SoxF`InG!91g;OTlTU(@fb*iO?-UoG%5PwhNc_+%UY35*LPrqCpJJrkmrA`E55qIX zW9&tA5$t|M%IbN*Xd)c?Xy6y=1pDN`L`;EFXqf$5b|waCzm`-R)iMdq+xA7Uu7T~* zA@d64Fjkh*VbWsxERayyei@y3QcKQ+Knp&G#*`9A9hwz})`9^q@LXe0c~U9E;TxC2 zE1xREU-t^j!^G_X0Jw*?ZAAgNA`_OmCS~us4VsIFqs$f)rAHOmYo%oMzcd0H06O42 z?Cc0;(A{}-P9JVY{w@RL2sc52ob(kswGSKZ)he5$j*oH`h_StmA%s^FBa-!4ru>G1 zX`x>D%s+8+N-PIyS?iFl!=1(Uud*8~><33(HS-$4Ju`)?(QT!ub;iddN5dK_E)#o& z!!;ibJIa~%bJAbI+9}D4fEE*uJT(cR4fC;uFS0B(f&F4Wi>d+(=ZIx#5Is*B-8&lQ zOj7Jktq38AfqtwGm`-r!^?5<9p2*PEMb53BcV(PGM*w6`+@M+^iqwNXN7di1uego}`6=#u7x=@e zG+9cfE*liIB|0qv;YDup+#TE4r-3j0$Jpri1WDcGWXm1kTSCl-6uTi7QURXt}DQU9w5PM@M6PRva^+RC91 zVTyr~KGqjv=hL9FO!JzihYbhcNyd`km}JV!TqRi$EGl$eHeZn>V|U_ipi&V&e#O_c zDj4nYc(nzJ+b6tiX_v^A{1;|Bs9yib0)08PQSG7D+00t?ls2UC_OY?1U(BRmmR{jhbD&|mPEQ;tcExH9CCjd<8%jr*B`0oP@?znLbhRrOwhgT%* zM}RN!+sK&04?SOAzozWbG5E2Oi;nnb-V<;xV6Sl*97MaebBgH{1LDQDDh5xoaof98Aj-^=mLlZM@UW5E=@?{(X1;mnf-_N?`{^ku&-rgZ5!^)qO2 zD^TO<`lfH+RUl$Hl<;NP*#q!gzns3iJD`cAcQp1@l>d0ylys$I_T5rKjLiRN>db&? zN2fQQ5-FEKt#j5n+|dNqnY@93QSc8hJJw9RjBgrUp6d4RfA`Zqfw!g;(GW{+Wg z^L1A|nnOcm0L~xhApS&KFq{Ore&w{-7DiG4_ZHhX%`iDaae>x4SUQ!kepG>ZtlIESSu-g%V66!ukF%6G`Y9>AOQO* zZQoR-jzu}SD$Jv604^$qIJ=#^NlP2>+nwA=3B?If~9zqQ5=>U30lh=zR z&m2v^Myh)(IIyUR%-+O^tIhze`Rd*FNjENPby2+YTG#R zL&?ivc`rr^nlAhM@X+m{Oanr$4>0^9}()f zQokxnrz{Gb3S-L9VhCF=1^u!+F|my*G&?R#Jo%kz9R32S%}uWF$+z#9g1X4M=565v zPan`}*0CX+So1;+UVO*)$Ilf;CkW^Q`zG-|30IrGV?#hm`%Z?}uKWZ8t4>l4aqJSA z6Vdbnmo@gR3%|pv`BS zU%0u*I;}IDN946RH#G6&?CL0DDL!(%oGO-nLgrE51@8GjsZ)I4#R zhpgO$`NybKZ_YcO*O$nO*WS3)*;SR#FWZG=b1BH8O69t0WbIDgKHTaB#H~yUx{^Kh z@6w&4WZN`@UI~a-MaajNA%Qk-A}jj+?p|OPOQXHB$af^zKrwf-Y|t>#|F%KfJhPG9 zV{;Mu%DH2BB^ckBr#`2CulbX9qtnp2-#e@ii}TLsC3okMkvSY?UwW zppq21>#N21zcnjfY|H^KLdnw5VC z(75md3|MfF_3SJV-UDMrs<*F$eqtjuIFIGLJ-80Y&mZib z3GTX(+x=u)B)?0XCvA!^FsKw2S@`GR@_?gm!PtH@>B}{M0MXmKaDJH|VaPVH$44}1 zGAmm*YRYpnS_ArCr`_Se@Eqp{kHIgUG7dzMPq!{`LVd1CSL%N?J`_4Wq(lg_d30}? z98TxXCDEfKBup_-6z`1-b=!di()N$>TbkphSSYJFQ zAtU{Tlm=KpfkKj`l7!^+JeBjD@{vp48FusL_fT5za7v8CQpwvEXw(NcMYCpyt4>QA7%Z~b096j zvz4onCxFoYp(6L}Cb~CVj!ysW79Hg49L%d6Ocn*pI|1P}W*QvNQRI)>C0Sm@uD5$n z>VC2}{S?X=7M7aakB{+Z?er@gic*#1VQ|u@gwM|WSvUi|hAPfWB!cT%0n`4o-(Fe8 zN7#L{&WYrG4sJkU+1+fVu(m%}TV47S$<0Q-_qd8Qa}t}Uh{Wc!C+0+s8uw=rf+QA*m|s_0A*1;3IUn%1f)Hzr}Aq-kuCvp z9bULb@kDduW{0|rN?m@m9%TA*@ZUYLk*bD^&0Q!+hvMK~3vv0BZ9N0Z0k{}hz9MOr z6mk71WT_MPR(=`nB@2 zZ&cbSp#uT2jlSIQV#o<${|(0(+xQ$8siOg12dt-N{%VXD&hFo(>WzGXol#o#lWpk5 zkSzDS#@9brSKZ+ptB9PoXIVn`9<5P}I$`~OC;iS4@CVFggCCQd1oJWm29ZVHvQ4!v zmzUXGbk6|PKC(4MYH!Rk7N_mEc~RcPRYp6-nFTmR6+7}0cUIi-GEPB<(T88pkHB2` zWh>>l)P)zDbR}zb1LR}|_I)~MJo}=I{H}VXoc!T9Kl6GBY1nrTjMua;MvjY?BqYr; zfGX0!+owO$AqM(p{+VnA9V6B-6fp_Lefm_?xgirsFYB6Fe>Xe!ITXzs1!NrOfiamT z(K6H^!9tCyfb4ImZqVUn@J& zo0;!s{cLd?K%uyC3+XOhG$GETFLa*bdR8b5d%X;e0C~SI^^bgbY({Y~=_ajxnrT)> z$sBkJ6c$YbAT~*BglIamg7lR>&!qn`y{a8RENqwXQ= zTUy1mHH!0(mmL$m?>HC@L?dzoyeih@T1Ge=3-2CZB$RkF`~u_k@=_E!VpqEg1Y;{_ z8j~qURkf5@ zXT5J|iauBG$zQU|7hbI`N)a7dmZO4o4Z?nNy9v<^a-|$eO`-pz`%-6vEKK=XF!gFa zpzDCLid8`C0pVZTlGX3Vqd30cRmw>Y>0XTSm|*Wk{@wJLy3LYpr{%;lV9w}(8;FhB z`_kYlwnuuYuFhUOCn7@7L-t_THlcFKql9J8Y^$;O$au+8R>Y%o^zOlc-=ojnugXr@ z3E6?n%6yve{9@xGB+AWXf7t_Kx#o>Q7F@Z?TB%y4I#KEW{xN!_O-!B6K~X1PtlaQR zc(zNb2eYLv!N;y;FC5wjv{I5ge3jlKe1vxg4KpwtbT2SylrDm+RWL37F&zBs^&@tU zmz3utAC%ulzW|`-aRzF_4hi1ZYac?#xZ?A}FxccI!sokE1a8MgV$g?wZW)%Rm4;hQ zCt@nPZuBl^1&*$Qr06~N?*kB@w9KY_H!mDg9=W+qbBNw08O=Y}&G?^n^ZS8@7R})R zei$mF`)g(l`8Tyn2YG5@Q}e#01$IjlaQqcbKL=?=F~8cgqcw?WgQi=pHS#Cz3L6#A zfsdV{c}aQCWBu}O`g+B0Td-_+emKOeN0Sp1B2?|OxkQ}TWGM@B1guloHt5z;tk}Pv zH(1_S5yxvP=Z`w@pvc7P^j6)3CLHY}?@)R=(Gpk91~h1{aUoA%PxR*GgB*-=qUxB@= zldA8^oeB*KOF42V<@?_)UmF-@ z7w-0VfI6`=Y-#Kh3sKNtFD@q6<_jL;*D9as1`t;tHc)$(NDC`F1Pv*{jnLObIQ$(cxHn|CtBRC_% zs)*xflCz&h=pR8}5$wEXbnf-y4xl1A z37RFpUS=|5@_FVO8McSwYM6yR5!|iG5iDlrh=!hfoNeUKu!Ty25snToO( zmm-rJl@*c^KVuE7&*^;ulUO;CbzhIrkQ*NXx$FX_7vp_iu9@u^Q72-%;AZG+WYVIh z-q$hB=k4;WuO+&0A`)-BGsme z1`TY;`E>9{FYu0;P_9{{BlK|ld3i5G0J7^lLj#6%n2hK4fSp3`yR~Ktch_?7m@;S4 zcNXJIbwUv!+I^&GaPTnXkL=gF>ZgXSqC3!%*B|6pW`Z&F7yC3-B10AXl0PN0SrjHj zaM$l4JeVhtE*hjTEOZD*+$9NFvs`Jnd!UCghiM6xY@Xi#6h};CO4P@6&=r(rcD*+) zw{kOzG{@&@ogCg0Uodk;<_HkF_$oztKnX|a zl(lRB({X<6#6E1yVR(}lV4H=FE&Bj6g6V>BZ|AvTU@gPtPDe1=8Jb6@C_vN~fBq*k z^gkG~_x%il#hQwLQ@+BGLnA*#b9in={n|lNB{0^E5uPk%?(YD+N0o}3uRLXqhaPV{ z%l`C0Rx&0rl6SHzuW=4`&Tt_`oxG08=U_3S8>+F$$cR<;sqGq&$!L^k6fxegMyZK} z3Y@ua$JTdm}%u+jwvK<^c^ia-f$a`v->F#BJdwep0Q40wT5Au%qnAYI`E z{%mFsJitG%kS2H7dPkz_TXy++8x(Hw;H2YfC7XVBg^kTyKL3iy&iXWb(JI7i+ldSq z70kud0+QluWR9IhVeUaL#i{J&pF%$9T|t)}ID226K2+O)J;J?JVM0rDDzFCCVly>a|e=>KkHQcz(-JVz`riINx?DmGu;hM{i$GnbQ3`O8JljWDgNyP^ z>4880W-R-MewGEH9m;v?>TsV%Pz7I@xjoj!gU|_@`}Pq7VTa;HcP<$mc)tAldCEA4IAjbBK%xfS{Rp;K^$q$a0WBDlUAj zuBo5Ew(XB4>iYAIY7~y75HyjNiu^VWyk(v_DLk_~o=Ks6rmwsP?@9F)(4X`LFRPW} zsdeV;_%qQ<;uC)kM<>W6CrgqQqnQRJ_xsySSG2~Ez()K6-n$;e81#WpCb0#llHbW( z{AS1E*fozAz0^B1=&c-leERMvsgHQaQ9v|ifakmF1sLSyY6D65j#^JxH*F)vpjS?g zetTw8j5r=~_+<`zdo=HG8+GRsp?KMN4(m1O6!~hl z)H#QWkyr-Pgf9P~!2l+-j}3HM%f}4AFDc0eR76(=&{YcTIN>9QTa7a-R_{gA_qbpl zO;RkBMlKI+65T!SN)E^hvQ7%8#@2Z^AQs=%d`W>(iFpeMm%+O)|1n!?Q71uWbsqq4 z4taid?M?qRa%@(pDgJ^_2?JQJl2lAlspR9VNL{1_lTdIg+w)&?>0z8=%0?NwXk{ces{!QQ7XB zv5|;NKuzXu>fNvP!WY8r+ks#3j!EUB@^Y);$*TEZk$C=zR16uQi*UaF_V(J!F0NnA zgfkWMHDk}jaqqAeG})LFy+~S`P*q?R49BMmR@X3u7LB;RG^@N2A9{Uv8`J=)S*Hs? z-#8xgw37Q7zy16-Q-Gkmx&(|>kZ_y7`wS1phfGHlHBZ>z{FT$Ed%WcwAa&MFMP2~MHROb&MmsaTP-n}%T5L2%tUR+IktFH6m5hjn9Q;qQS<>iA zPOOi%LHtgzFJ0;LS$I)%60Ef6{DY}OorkVtH^YqJ?G_rWSTlx?-eya?MOQ;YU)QtY z0*(wO453Bjr+17RlK&iCPkU8VYUjp#$JOj@)kTaqIetG2$JTV2Zso(tWiu_R8ta)I zrIU?fohBy;z%u3X3FOqVryf0W3oAmpE{zpggBN)rUg5!Uhs7RnV|B9!pg&P((kL-aarY_(Q>yr;!T4Qgz$mO7d9IAbB>QUy z5HX^xBkv>wg?_(fU+zO__a`-Otb?3nIVq}S7F*DrU*7an7V;IQ7zeb}C&@m)f5ihc z7ci0$ZY*c@{p;52AN_nI~BYHcsG6tMv5p+m{Z%AFq$DM{PniO z@ll5iUK<^i!R(d6zb5;jZk35wujBva1puI>b#9C!IpajuSFiuI8UpFQq3!i@G^eG( z&NjNiT~0vh7X*0F8om@ka|C}hMp>OSPn=d2^GPgFlzfqcFcnh(YeEJ^ue}`sZnBDZ zkQ{eInop!m0uO(0H&R37{mMZMI=~=t`5!)m017vwPyvPj)rkS zXHMw@$G3M^`+r%qX31)KcyQ^r{{n+?4PsC zhLTl&u0g-`>%)x?$066?HS&3YUM>C_2tU5p;wVL6mj88B#GXVRi_pZDvAH0|I1y6y&qGGP_T zu^8llUTw?z8|4ff&!`k0(e8h&i4L?gDhwdlPGNnE2_&>!Tp^qHN?vHyqO1*X+}vWi z_qJgEB7o|G`gA0*>D>k3zjHio%88CTRW3pZ%N+E;?mqb{DR{aFX-;}FK*j@o!R(A! z%?531bZ}H#I4`#e|+P zd;CAjzB(+*bzOgfut*aeLPENRR$5R(l#&t#X%Im=1VmsEWI$RPq+7bXM>-{>hL9Ez zkZ$quHU*Y{!o?+X1@8}=X;*}xdY5I(1=Wu#kBTGs% z)moN72E|F>W1Tt!e}%{LnaCCB+Yxi>TZ%H&vsabzCwVF6L6#R)>h9-~TRoq>P#S-Y961b7hShEqTTrbk9wgF5?OSDnP7|){|tNc z#+@4qF+3?Cw!l_|9$yp`Ft=@>fa&AR8{pnTW>VEjln;j{1{X%|-vyL_qXiZTKx^So zdK@_Rl=@{^0pGOYgRk#(zi$1o;pJie7ApX8oTc1N~`_YE|yY3vNzL~O35H$3Q%?U62BB?v^ zkHohCE_?4nc<7BNtBUcqms9h?o`Fli09TbI12YRi1P4 ze|Oc^cm%cEQ+wk_#)<*%J7-P;>phy%Gz4&jaLE03xEfzyAPxqjHC*$@^; zdAIBAx2bOcCDVzbJ30Jk?Az0Z_D8i{&P@OviaP}|!&fqI$DTf<@i^VGyu$wQ^PAW^ zEl<8X|1qQH#=m2HZh^X~@!?ZVOknR;S|jbL4R6_`6y=Ks%Z?9p*8Ge!_Y+_z$nUQ% zBaZ)5-|ea{B4WBQ2_rc>1`1yYam_4GAN@`?(E%yl+u^{oWf}db|!WM zMfaT`Qit=#@mk>~Eb4nSWZveDlsb?Pvo?EkqYna_zI));feoy6k3#1g@%z- zGBNhZlZXe|@w9g)Ql|)94rhJCp_8n5$p@Kr!|?k7x#8;Jl`7zS8V)VWdWjw=x&Ca% z^Q)14{KNT=^vZ`bS7lI;%yG?nYrVgPe|XH2DW4_PWrWJijNk6484!}013#eEWk=Ua_Bx< z=>hUXtDB)}*yBPzFA>+_PKUe%SS(!X)(sN#YhS*UrIHop0JHSb9zCWc$oTXgoBX4D zkD#!BsPY^jl-zDKEsZf$HiX$YDG4XCBG;h6uH{2KW=z~;g(D-3)=iy>*!~wW zcWY=tK$vZ4owv9L?`yedMuYACQ6w;I$hE2ZYj5C6e~rwI**}hQez?lWUcK%BGzPIG zL=I-f(zhu3>Dp@soeytNg19a;dI&HPR}!@g2E1=GKIqW>71u?q7*eGO8nt8(`X-fk z$77S{eqND~LXeWq;7pp~6?%hLlg=ItrvBw|6ekIkC-)xy2|mI50i5${OF^K1)>>|4 zX=90gzji|X7RDu@utiNv-xJ<>ef2|)5W7R`Gu>RaxMIjcpR*F$c(!h%%e>#PldvhI8tpv=5T>w! zG}&&GvX$_fSJIGxs01uNL|KB1Zy0G(AH^F73&%%MJ`U+b=(~nZeh!4rXG><*4#wIQ zKe2ePJstkcY1=#PHb9ZXEURXHHuk}~DEfM>(GX~GT1(O)U1JYdl-+zA6IJy42zMGl zmzG_o?Nv~qJb~1s)qc+(1&yI>=TC-4ix(M!W1OfVzocwl!t(ZEDL7Y(3(3XPpAkYl zA;L@Kl`%U&5yeypB6KSmF16Z3o-54ZudpyGBrtE510ID?uU1RINIl;mE7ip11+y^- zv8MoQQ)>Pf3ibdTukEHciaxwqs`6$Iuaq$H+OYs|LUryTmbQZR{!5_NGm^gowFJFg zz#iTmm}yYX-X@mpks-n9CuG#bui8a@YcpDb)IO-@l3%e}`IU(bUnJWYJOVEvI<_Ad z?=}M%Uz5*qRh>+ba`;P3^H$x03mAr<2;CqmfkVk!gY#q5AXzH_^h!;8&F~+(fX`#C z;GI;1VsN5EscLk2@8kYtOp+Ni7xTSBy&C4@1}BP>acNGFvBCdZS6OE3JpelLZ}`W% znsqi`3J$>9Q+Uugu|f>pJ_4?sNI!_i!%z_Ql)3+vuvH^tx;jN0Esw-+=U?uINQwVP z#unmr)?{Gz_5_am+d6$=>~#RNI6pHNdO`FcJiQ|)w_vpkJ{q%oR9Ls|?_|IKD`{)$ z2KVgkBV&eUFztRjWAIty zP%(I5d`v(PK*7&tCVRFb*0xkCCq%(fa^!X7Melc}#MBV8SzOa_>AUj^!%Bb&&8JU+ z^{u*X@2MQBfio*3$QVPs8d-4|(BQsRGe(XcW41AV6lv%3>d&W5CE&!IQ4Gj?knV`n zyLG&#x%dx4P-r5Gc#zzGtrjqGWSn)VP!H>oTAp=G^o;BUCU2va`3e~=czBhxYRoUi5fbItTTg7Hdtw%JMl z&VswgvP0tmQv4v^RU)bX;3Q%6Wa|*Q37*G$E`9fs95!8M4jxo@Grr1N@-2DS36M#% zz8~bsvu*+E1aBEFi&`KOtG3130a*d75j}6$viEL%Q11KOgQP|+Z2Gye>1uVdmC!JTbvtG=Tj~c$8 z+XJn++VL&_xf`%<1donMo;JE_}QGg_YwmC#>oIcJ*+04Di6&^$d z5d@CtI_nmG=--qMeHE9*E3LH#tOvN+C70TXhL0Xm(JwiIBzdcpMboIJRbQExQ@s;N*onz+o^7X*FvWF7~9L*i1KbtQ;ijoHX>G z;t(;++PsN88QBgNZmXb`iyoQze#=GvIT$VKFrck-yRO{!Yjm87v#N;IJnV^HzeIcZ zcAh%|h=40UytMSl9zq(riSQ{YXF>}&rp}thz**HwYSnhXC_+u4 zY=@aJH_OI?Zj_kugy+vkT|!%pF@4(R{t0BeIcIr+RBFrI*;`{iA$Ejpn0<_X-cN2f zfy+|~sXoTehhifw4sREGD;8Ouc$a<#gQ07qSYB!yUw_)f9XRVdr9BMV-syKD+PO3>2G8I=1UpXbdjI;l;Ga` z&))jlMy>B#sbK>MF(ZpV8&2DvDeGzB65V8;C8`Gu*HLc&ZJB!>aIP_VB_bQyhCjqC zmNXA^OtraTdMaFTAbAdV<@NKem}sTCJ5tIbP3U)zNfyh>R;ffI`OB%hx`x>rdGyRh z)7yx4HWoHCPKtH22rwZZUvWstCmGkSufZpSMK``D?3!xFmsvOlD~@t!CONV@cbM=* zm#W?S*g#`XFce&UvAVsGYhR%uO|CD>`TEYiMAY8K!i$ubz+VA=xlK|tG$T3{|HTo? z0>PTgZnA~OtyCW8SBTy&7J76~xrIj_+c2iC7T)MqHReDnhDhc$6o1=#`v|?Hw8`*94xEIw>jfpqf-hJ`XSIapmjO`!~n&k%u0n_P}=!JnwS%y(^qYwAhXx5pGHR z@Np6FV?Mw{r{!q6Z~)WGFHXSfV}F?I9xy=Lu|B>|w3<0|9IzV zAG^+KnbfL~;hw_1w&_Z?vzjZ>ZuL23?^+*Iv#2iNo|!d9*rS>6(%4z$T1`57Ty!U@ zJ+6HuaxY~3G@vSb(+aM?bdU7`9V?~pidGDgMlJD@vVg>T*^pcD0WjbAallwk1I3G6 zSiLyE@yuUAu~2(!;+{l$psAs-u}8>i-}2|WMHtrgYybY`DduUIHg>b&`}`Wl_5=pI zUv$IsZZISyHW3wqVH6Pe?<2-at*FO?@#QJ%deGPpLx0Zo>NypElG8)X8MrdQOu8y4 zzgd_^R3koovyj!^HIB;!^HuF4$2fDBmij(Bl6O(T%D0G$_XxG6ilMu!7vs$0EI4tM z==O^YPuzkpUNYuL_>~DS)&nfepmz!2hMHuV_y@z@7VYyzSoQf=V3igXw+|nqj#_q0 z)w$}qOc9NGRch7VCIQg>F1GMN>QpE=thtjVi3*nXWvb=1MvN`)6QsP7#M$oP2NPK4 z_I1Q*dzjDTrvXvxbK{%TFDEuLGi=&z2NGr~zYIp82twAki9Wa1s8BT%;-hUiMq&)e z2m^QoG*IVD4WN&N!t6}5HUN~jKSCWtQe@!G=MtOT@-%{b&m@$5wsHo3KV{M$BKI3} zAK+=`(&fGu8fk8arPIjND9R}xMJJ~<&t3eYwv1R z*cj&-cWbCwmy|Sr5lW31vlc58nl0{gzm=)BR4{~`oVU~ppdVEdU0<-wWjXB~q@fM; z?rOL6G{G3~(j;H=ZTe)k_M^mpUcbC?_+_Khk!H0I`icgjB6)uiV@FJf>?MH_yZUT< zjak(!YSlJ^T#r@W{RYMLQOBx~lV>JvL@fWYG~s63?8)~&R&spQy#&23UVlc_Z8>Rvy! zBenWEs!;0d48wLVe^UQ)uEXzca;)neBr*3kdDZ*1gajUB2eit;*tJ;aOo-9lFu2PW zb_WgXMB?6)+u4He)XL8yzF;`L85$X!t+Oio-zPL9@ zNEvs~*y#iZQlf^Q(~Oe^U8k#5YHMUm6hr;0)w?zEhG%bPl@^Um0_rbTe@aul6OdJo z&o^4n@!RTIoyeUB&c>@ZJ(YE&c)tM+Sw}?JQ4l+3m5Z4spn%zABvP`qfIcHT<`iBS z!JxsRjB{W4eHVx0tOr2yYSfg3ahLx{2`LFOWQA<@oSwD%Un8VCa#LY6LV6mop-D}~ zAF`-_V!E((lQk6Mt^gEkY6tulQputlK1LLLz`O5=LGI3o4-Y|P4gT9OZ!M?K_Wr$3 z+!p>kUvxqHqNH##N|XjKC$_zvxvLhFN!8PS$a=fXz$l6iy`Cbu_Qvo;OBZp!Z^l)z zQi_F3BWl>#Qi6fD!p?}s`i!qfv}_KFQ}Bs4uZ^p+5xtqJbh4%6>BXu;p46~kUU;-V zl4mpEtBn4UslLK}W-hTx9qby>YgCaBJYY)k^m7Wfbc=`8m#n#S7w; zfjRf4~mfEB+7MIyr z&1+5A&Cr6Uk-STQ1A=n9CG#^{(U-Ydj|jua{1F>QSdqAi5V~*%qERc7ktf$h{W!B) z=NHAbIbywuHkUMC1+tl%i+UfmEy&glJ3R_AH3^#4%1Y8g&W4J6W#D;pl6&mL&3H$L zpL7prt4)Eqb-l4m7x+xowN@vc{V)yA=lyv#k{-jk&kbAxkhx5RtzJ%3g(z)y!JTx1 zMBX!aqPjbi;kMVMY@eX+Mk!njX;mQbhwYt3*3n2A;Kg5{`RBP`l zv88EP?TTec_FkO(7^t+6mge@_*Sd-?43q$4JUkZe1fq4*5m z6R=(|hWwB(RD5W9)`K3?c;lpZfH-K#5A&GXue~@wq1Nzp5twb52GltBipjP8QY)`j@=a9Oi3PDI}vuNY9A8{+NUcWPaLzh)vKr1 zor-2A$6Ov1Vz|rWv$yiBejFt26kUw%v9~MrXB$%T_8VvSV;Lfskbu+Pvy$Xc8vbDJ zk^2>cz78?R;hw9+Dj(+s1=XcP@)PS1=xH=+4}%Dqob+hg6z$r@B<}Dgww}_A*UQ$c zF72?1k;>vo-~YESgAsZjOVV02nFhQAC8v9bEs7TrV?1yzgCrb4Y2)$8VgrC_pPvHO zXCGWIX2k_|6CJIM7-0>A_T!C@v;i6R)T9BvoMEB|nH#kybpmICA6Ebs%0?HLe}i=m zLF3r%m_4^->19+CvLpDvm|vynLLmj|h%IMs;P3E)uVe z5;?Pzbw$}$ z=r1j@g~hxM#HyfX=;{Q!-qW{?NBMW5-AGR?wefa0eebK5?K@0@ZMi=WL={RCYCGt) zK7GGAQp%c;dU#|Tz*S?mvzAgeQ zN)#-sOZu-uU`ONb80p3W?Ir6zOeZ#LutW#8(4q)0Rt&bv?hk5E_mWzj% z-||Q}VB+8HlvMkn*4ugagx{8wIPz-0=hxU)NURjPsYV;;ynUj6Cn+Q$x_v>HRAA{S z#cvC~bimrfZ6dC(u7BkB7XSUff8Bp%FvjYHBI=gmzU{Ko5@1v@QW8D-7GGa^Yc8Ob z2}UT%zYm+P_=5l|s=7GP$Y0luS4(E2YW_+i3dSuR3RXQ_n66^&#XQvlw-_g=HFcwz zb*Vi?+sbT2INeSdel26tRG7V=7BUf~43{?c3~ES-7CGvT;r*=5(VRmaa0#v+j;B!x zpu#!JfYzV#%RCkE9y}tC)|-N z8l=~c;qxUyy@x4fMkPQ4D*_7whIO#Q*CRn&J=?1z*SmFqhe_O%#Pu^~rTFh-Tp!l2 zfhPZ|An-gy=NZox|M3FD5yj>-KH~LU<9RVRb0ZpCbGK|})5-tSdYGKbpF~5sCHJkO z%HC^MRGBSutG;DBzRbE^Y9AZMunb|{F3~h`s;l(xlv8f^@Wkt<+(F0|b40QP*usr4 zF-3F!9LMyk0`M4U<8US5J~N0}N)xVkq=T1l*LKGDPxzHU0IA+%;>Ch5&kVxXl{1n| zP>Qce_p<3F(Jg?F`!zw#;40hZEcc0)_q@mXA%dXg` zT^}ejj&H16XrQl%d# zQhn}{_bo<*`e(6YBbN}bile8!%Vn}{Ef@mSoQQ{l#*KXPksWbvWY5e};72_5%-yjj z*H&0Lz!UjZR|C9JX-m?Ycl`rpVV;=bo9y*=r_`j=1r~SM?iQFZY~JEt0}Os7ydf3G zEBRCFXbxPU1aSsTD?3l3-JAXA$j-1uDORw7MIR)_nIs&{kaheHH-7P0#%G;7KY zsJcp*;X-FYt7xnNLcbL5#p0D7?>u((t7>o z9pICu+t_L|UT-n(>`%s36AZkDZ5~_Nt(yg~?TVhPms=beXPs`(8uzJ0NIodPX zF<}2^T{zZy)?f8*k@Iz_B12a)E8UjeACgJEGqRRD{zhc;T!aR(*8|>% zONO1=!pjos99uTy3C;^3#}kT^Fn-_&>^(WPcq@VDb`+7+Lb~6+RIE@LrPRy=3Tq&h zeGL0EH#K)q|9BiZJNFvFa-!QDa&q})N&M5QLj{Y|0BRQV=aHo4e#nFfyKC8)b!AgM z<*YNK<;Cnpg&3eIFxR47(%%<*cyY(iZNA|2Z`Mpj}9 z%I`PUXB7ZRgiS|3=fn8>W3OOD2<5RVieL?OjBtHFA0!kozAqWTO`F^0E54foXVnPE zA>?LLBxsK4et#>7xCX)m=;CkM1ijA zKt(Hl9H4<5Oha7L0LYEWXx8}b@*uQ}bQ@uiM-L|L`Sxu$K=O2d)y7%cLYgT^J~`{e z3293VLlw5N{ZQpRjV4iAnLLfwE~%_KjI3pJlOgL!jQ`xy8Tz>O=kso9DCOg%njE8v zIeS+!@=1`hNF0Dtuvbl?Gx8OKFK(shS5AxEdh-2U3hF~qe7&_V7HY#w7Lf&}Ad~x7 zUW_|5q3GsRD$k1ks07=`!wGx+CvgJ3wG{J+KpPeT76#&-DCqvGb^Obk=dYP^&i>>f;r->h}1}b!sy6nolHtz(lEA1mqkLJ!6UuFxIK7p8g2$C zNy10Bt-&6nW1}9bZI=oJ7ek*l4kJejCfBQWOXH91m_4QoloWL=+L`u#4G&$|ZwB}5=%o>= zZ2_#L1x?$HwUCA_h(t($3rpZE>hgYd!emGbFEQ}WxLa##MB3B6N@7h1T+BqHaCgq5 zY%uq)ldW(7^3OAQ;x-et4jUuUboE38P1(tUG3`kVH^WGc^7DmCGLD>xo7JF?JuU8% zXv?QxF%>0^%zD{q>)QH-J#uj zJQs*kN7unFN1Pb6uw+E~b%!M~MsvEr3{&fvbun4Y32gR7VPos9%or?)uw+8V0w*Kz zUVaK5kyI<6)cPWv9`$mUgJxgG$dVv&5Xq5OBpHB8fSg*#VNdF8FJEly`(!T2dLFGF z-&Ro|RFj;X=E=#P)(jLrI z#|Ci54M4U4o&1`~ma;uBY7uOKyQu+hMUU5a=6*y97$K!-X;CNu9XG1#;jniX+GFEl zaYK_%Ds{=2Q9v~i2~?PfHi6yrNpTP-#|aZ~wEk4Oj;BJC3LmLJ+$F@U0p6K4NCmLk z0#0u~SCUD$du@=VGUFju9FWO$p_x5M&HmcQo%9Fh2u1{G1i99s3>=vTsaPc3gUMq{WY<)ZDv~;|y+UDViQgqLtyg@M)+p|9!CzT(2r|!8Xe)?YP^An?vcNr%h0P<1x{2ht zlMY*0PW8_zms^aRF))2NvA#l>zG#4!Y5Fi1R#38(7&YrW+h`u zcLh;#j|z56GWYUq_rdUS#{NGLZl-Tco~jdck@Bl&(OsqKUDWkz?WMs4&iGB6umJXT zZ|;Fyt})2%UvDc+rUs~5%5_UPN4w^>;yQ%xi>6Y&0;|f3mU$c$YRqb{Yx~xR*WP&k z(-7J6Oy>_1tBHsi6VfV0&m8vl_m*j1sX_sR6pLEm=$yeo^pfum*%EH%AF#;R4-6t0 z$7rrHaaG^}I;2O8RxaTVF=rtuWB7te*FhQ9d@+H>YmgIWFPiVDuz2JvaZ0Bqlqy#7 zq0_C0^ek3$3FCS4M|Tlx{{onaFTV!eN`=KoAw^hL!L?> zqV*8(4YzYk!%qFsqMuaHhTH*Xh6pfyZr z7tdWixyHWbn;>JNa@8flj^0G?OUS-F8_TKcJcTQ=FyqCysf?R9~{)h6{&wa9)z0EuohI8+3QGOJs3qbIs(}!yDY71|LK&eh5k| za{q3%$a4pum?Jq+yC;)a8Gt&<<6A;xyB+&ad^dqBZyUG2T+ zQ-{_d{|0s(uYmk4sTNpGNZHuzi~QSEwZC%kRX6>*Af{Q7c$0=Pe4 z{&jzLu==oUsZJE?-a?r)2i>^O%64=;33ttH>Zd7h+{s&4CY$_#HL%j9z|-%y#i(wM zH#Ld{M1b3o-#-b0Q0@%7=p8u_k-7F{g`+e2&Z5z!y3{*+oxX|`{pdT}2dY`8BDz z(sbcg+z6huHMY5oFjB?r0IPT@87$SJSL;GNUoVapy2GzV(?;)%u2ab?As!da=uUJj zaYtYgQOWFJ&yg)&kHSnkG4_G>=KC072xnYR(kc825x@KKtN0)SLZG6AtFIcJx1Q#Q zlYT8{RbubAEok3Fb(ZsUPE%yjn^Xe&3kI^qgH3Y#VBFizY+G+?9=0~Xo8p2qCsNp> z-OhQJWn9Qf26-!~V_B$#9cmw}4SDlsaJ4;!S2q9InPqj5**G?D@; z+I`YqL8~2X4Opz=6v*zPhB&ge73la)-;#d{T!O=Zsr*z3QBh$2lSF5gW5LllaKtbURE{Y4A}H*^&*6qc|^iMsgheH2WRuGN!z52Qjt$2i#{u zAh0fruD+R(S0UG1#xT*P;4wMND~w~C`jT+j^$|*ybPJZFnWWS^nASpjP6hs?q*m@X zeY4M|AbjTiDQF~GB7XzT0I=ph3w9}32bX+xyPrkwUey=H1mY8PI3FM9j-D|g-(kfP0r+^W%~svwB%{K8q(gpJ(tl)=;c9uw(XQibUJ z7H|fP`d$+m4=;mw?N_YcPeXys>2WEm!jyg6UtMb9`=^2Wg%kZsCCzP)N9S%uUSW-0gGbCT%Tq0mGtk9ycE4IH9vz)E7I_*&`wr2mHx_@;^ zP<<{f&+}#x;0k{Mk{GKES@jBX280`Q0QRn*C4Iv z2mSTmtvbvSn?5N20Nby$x-bodd!F|X&=96XPlC?Uo&K#Ojh^0i*eQ|zAv*cwxcUhq zA|Jx>h>5T*)e`7a$}=Ml{fCIL%Jq3=?bw#WR<)x|k#zUUsXjC5=_YH?~{p64szUA&Q3+LwcKAUboTRH0ZZ^G&J&kmbg*gFgqpMTQJgs{8A{ zoFx5SJCJiDCe6GF=`){e<%j>i=^K;n#LKK|NRF3cD?C zJge95;L2YB<{d?YN32eFbzf$%VAFqrV^ws7{{Hysz6okUR*+=}#3;F$jHL$(*!D#fG8D69$)D?={0M7Mgabhkd7p}{qGg_2L zD1QXtv?W(7x4Sr^eTHy5wVhc!!MJFI=WEE&uA_sq*12U}0>R#eO zUAvvf4=~nd7&<=qT?_o5E|!7q4e}^|UDi6t_dW3t1oq9I1BQ9@Ak>gf0TrRZw`1To zN_()~&0Px#+JHDk!ahAbnkfoF-_26D4 z{O46q!|buWhJ*Tk#dx6swFbzz0pKs1a&DjsI&Qvh7bPrAyS4?c!Aw3d{MmrqGPUDS zST-QiCaMaUuN7COlKN06Y>;!E!JQ?#s)2KMS=l0cZr&W{lf7`MsXE_h7lHXUjjN*} z=LB&H&eP)zIXOaafM-J$ltv5cjJCgSaf1Bp|9!Up$GbAPb`AQJvUM&1&R7LC1{|in zKm&;EEuBxtVySG(v4EO26U1U5}Z-{$LD;~)o#6T?sr^&jR0 zpTgPyerUAy!mN#Z_N?O77yh>Js*IgrF*72 zw;-GQfkxnu=Tr$+CvwHPBs{vm-Nyfh=>(nN2hs-098OkX!E&Wr3)uE=)=8qF^pO#; zX08Nnh;RjiD~RNzlDksaaGY}j7VR5RS}!O<1j-u9fF)EdIIE4gN08|N@I#M zfPUu`#9fBz*giNIR(nzn3C=bELC}m%`}KBch+9ii1L$ZW(Z<30Sw&@iulu)4w6;*3 z7Wpvb=r10EN9*=Q7fgJdqd#zn4501*8Tfw(`*XC!-Wm(aNt+rbmATa#^P)4AN zKr~^`2==wzmjx%kaXKuXttDnf4Q=Z_50#k&(Ohh@w8%qroK(1GDo3kA`%JdzWrLQfcra(Pmvjxl)6&ra1|!+=oV;H%b>qd7rm$ zW4h%2$7%QvNBh72jn5U&2l-G_*`^7S`QNl@b0E^#P=i4?(3`Z;Q1q z_|_uTxnwh+=F?WLhz+y1(c7zzV!wr3S? z(zC=Fm5`!z14P2uHv-vUspXpeIJlFjFgJWkfCRPnrl!sS$9-z#;VcSnJpYxGWzn@; zdwLFtsMHTYMuaE_mnCFg?%XH5Tm=@xtUH4305V;voLrz+S+MJw5PB@-c>N*hSQ-`0Nl;`*ON)~rkJyJ@smDygNmtS{-(9e}(xw$k+kGn05^ z{5VhoClUOR4#Ag$jL;5&xX9awFI7tiZB8i{G!+Iu0|i@IGrYW2Lr(wgR0K#Vz^ex8 z5f=^z@h@=~Z?q&z0s-Rbp#;_rkPTErh++07XdbTQu1_Im_=SPZ5+E4#rc%)$&i!v5 z-!Z0;oQW{fgg-$2ooaV}jr<09(%Tj9(T^a<62IUq=6}`D?oEQ!o52z|xa6eIKR_63 z!6PlSe$N?0ergeGU~w;<9Oc=Kh!7`WqLp+{P6P3@2A~b4a|Q!HASx^&BWr&QHiDgO z8w2^*odS!jj-EHFxbH*W1kw3G{$~+2tb*EK62Q2qTj*tlH@+7* z@%(McRYGfgIrS7(G9>Ff6oeo|4eL`*&SpUD7q8DCFHUAm<#f~izH&tTP>>9e0+hmh z5!tRia6xLB`~c)GC@P5ivBx-*p={d(He(Hz@^Jh~DMJpiiVCT*bH4uZh}kM6=uGW9 zyw`85T#@GG<_7xO1O7tLmI^o=d>)V%-dS%tJAs-sO+2O+Et&7(ncsZFZjX#hHrFKV zr9cmb*^Hjvktk+FZ@^9PG5{7O?y$=Go1Xu_r;`6gr03}%ASMXV1qnbknlDxblNshaCi#W&ZenYpgBy6NmaGeLQdeZ$X&!va%1WM6 z<~s@EamO>jcs3G5D>0o^I%PENj{#?Va#{SKx`&WtnYqH9!E(%}=+PL=2BgnzYr|51 z7_XZeT5(8=ZjSPn$0LOJ7b}Z?uo?}96w5tK2q2wA|NPu~2A=yZv3$2MmNXzPQ0ptX z=Cz1vG;-nI%&FN&USBo#fZC{jnMuEN@a}TS5R?Y!kS6xdgsZ|RU7YpvDVQ$$3Z5j0 ze6<42h@P;Y6@?-l9!k{M4ww~~&h~niGgovIbMlOr|1=|XP0{C`a_l|=^e-4J`lOqb zluYaS^@A3YC!|24p2%8O+)BURfF|U4E@x%?u=r{<;NHmPQd{>wiU+#S!aJ4&xW;|u zB^7M`EE0cf4m-c`!AKMD+%g05MXLh25G}r^9kSwcT@?yzAJp@^D=stm>417cJ(QC+ zEHekHmrayxEMEucZ%9hm8UmYC4eXAf{t9TyU$GxE(Rg%RP zv|cFUUiF_dS~A4}$3S?zXbqkmdm7VFkLe70oi~g33+NDg>?FtU3C=h*#`uOA)o<`i zQ2&kT;6BcuES_{JV<`Kl5-2M?Macm5B{J7C&hL^aR{2Xr2pMS3aZl|564F3 zXUJM%3RH`wd|tcDi?JUrA;A^2%N%wDO-1$NaOT+r0z&=Fu}GKwW>8G>^%nwYk9`l+ z#V2jWWGN!nMXQ$ur(UT6;)g~w{(+MyQ{~LrhBHN2#1>20Pfg8PevbE4|FLfTuQKxM zuevNeuA>g$rT$EzCm)GemHV_yl9}*iw4fNJFUs4kYPlH`4L#vqxIJjBeLJE&*o+n# ztXa4Wk-x|VPMM!RM+Gv2Ix5~CWAC$NH2K0aNXXLa03^McHzjGsJagM>#bXTmdZ#uR zHxr7j#H@yLitXH}7-!3h4{Q7p1&j!>kczJ4qfTd~e)c{G@(4Uqoa>~wiV-7a>e>1v zF3-f%zpjXvoGK$B1C7lmGhkM$2HgQXKor2yL>jN_06(;}VINHISv(4&{m>{kz6eGw zHivGyzg1PM2#Dod3$l`sB5A=lWOTK_uv)?h#V_?FILDN9c@c4aA43-^obOjQ9?65O z_olbEXPuC6RX6@~N+{LZ0i3ge7E@@7n*I>Jab^598e*k|W>XkG{Rj1B(B1%ea? zUZpaSZQGr1A^A71uU13HdDbp@a_8H-t8XNZ$Ht0{OV^+v_ay<@s`@z)C;M`GyjU&n z1(t7I&!b4;rIZ<+AkJpoCodQOtchj=fvYg<4 zQ^ugqBoSdg8Mnk@DWq%w#MR!Cf&K4wo|HH~8AfEVVoTSiNKL(QLzT`v`ErXW03la_ zOuOz2!-1Elhg%SuXb*hpKZNW93*#!ta`O%WT!N0(G2zW>_67s((R<^yJLhOCGAqno zQiEUJXCKswTe=EtQk;IC=m*NvZ|=&B$4i2Z<0bC5F@&k4PQXLqHEzaj^QFL9C^1q5 z!xeH&Yu`bqMP0wgq{DGQZgTg|!@*zuY`O5OTS)W@ajDizp zX+2hu24`6GrA?{%L(E67P}KY((1Vy{0Vp8L74!z1{VSIsKO3Tab`z{yPUiN7uZ#H4FdQ6y)$(C<|B1dJr006p_>a#wtl&=S!|E(`fLC^eU^ zfk`7c&Z40D^yu!WPWaK^yc-V*dIanjIxen^7(u-ygzMM>M}R_6U`dwdUk$|J)nI5W z;<+Nn3<%xzjTNgoxitX1CG{b?H!gk!Hy-E%Id-k>(weqE)1H5cu3kj=QR zr;YCyUZ&dYbqWWCTUY!&;CStnaFSO)I?)FU$4lseOjd%_4im4`&1S|Le% zs)X7$uM71a=t`^%7~pWkD!5fD&IcD{I`r-4bqxKVLuM9p_WL{*7+_~vFxc_mLT zz4IsO$VR;kj}f-4MPH+jTG2$^?^H*CQLtfii81$@Y^LG@*^or3f8Q%88f%>G!1ZYc z7d?b^h;tFXIm+iMmA-^Wm|k&t9zb<$83k{H;{V1|h=&xP*gQa23dh2id`MUrPJeUpQP60R2yxV% zXoL}g&E?Cj#US!9!@^3Vvca+Y@r9mo(B0FDPnFYe){^s0b(MIx#$h87809AE2YETk zAAE3yD>N36Gr;K>^RN~D4Q$YsZ~h7PI;LAT^73TA?Il$4JB&05@3#J?ntHC{q>nvK zh?IoZ1@}3zp+TXZo<%McG2;p>iP8o!W@$l_hg)q&CJ&W%$w}Ya6Y;}Lf z@D`MDsN>sM$x3pXIUcE;1hDK7iYg-g@2oqTZ0W&^pB?^~696_+ z$qYqctwLPGmwo?l+={oc-z9-fOXGX?l)v+<|3Yhfo`E-Y*P^`Aoa6V`_y2k+JUIBo ze);4O>#nkm(xU8}8(?cp34-`Lm_)+AmY;w9b2FK1%_{zFUS%MLl{~{3Y8>sKW9WQ z{;(t2&1h`dRxpticidkpg)oBvuAnLZ`WsRW0T04s=u$-w+IEf`m(ZhGs+OwZg^*&9XUpCG^Esh{r3Icv~;$N}NO&dtmWZ70MvHRIl9!alp8M z)euagtF8Nf*JE*J*8WMb!#I~8bm9&)>VCP>PO}!pUqP+9BM+!muZyX6W{oj6z>nGy zqOeW^ylF}Qq4t~IXsC^9X#Aqt%_tx-I6Ey2l0>H7UuP&0KL*AMy?_X03=|*19Cfr^ z+wDnYDZo7aBbb7xmjJdaQC*1K%SAOqW_Cm2j|^4a=r@zU+}Zk2U*{^ z>vzLWfJ@%@ckZ)9`nEs-(fpP*kmxkZAoLq3YZSKkfB^a$p(sawSy&vX*Y$(A^EVp% zhu_WgD}U_ZRw#_y03Fy+{a(I}BjnPXKw7&R-nPoVLk&|0Dxsw1yeMo3?2X6Xt?OF4 z#YBq)OWqxS?eJVH&-bFmw_nnVj|vEc3V(nH>}3kHs_&j%NR{ zRNIXPCZsh`)h)AjnuSQCZC<8?i59hNZenF%QmMTPHZ#`1`=+Y|4>2b_t0`c6nGI%f);yXP*%k@Sr=L;y+IYi!wG{qE5^{; zQ}f~vC^)%kk2+-CYC!l+#I3vL5t?tLdB4C&w`bSIDv*xHTGU+i@T}s;!kJ}K><}px z{^ZzxoIK$mYbJKM{sNv5!_av7i0@_sNuT#jY%0%TDQk-j2CUzW3zaSHgfiP0xB{L* z0KaC8v0b1mk)e*{z$RF$)o2@{Zq_CJKhoYj9O}34|Nqcti$a!=A`He}_9*33*(D5P z8yb?G?2Hym8IiK@WXYC&A4_A)5M|%@p|UU0VECTzuIsw5`*&ZT>-rtv@BL4QLq}+w z^FGh>`FcJdPjdd-)U5P((EiZ%<2b@1Mb;(bXdk=_uI0~tLy`yRTfent#dYdzO@NW8 zf21xyAt2M*{cf_rkoSfBt%K_|MKvI62EJXhAw}y4Ay<$XL9eCVgBKWfG~?6CJIk&S zjDdnV*WNbl>< zqt1$5(H{W>!JJ>a;yV0&}7{*cb@jE}wfGgLIU0;tJff`uZYPb;jehd#BO;a4n1=aD1L3 zym^y4a4C!HMdJCM%|f4oF%0DC1tzlnaj4y^kl=vZXu~W?nQdZ#s<}0GH*ib}SeK{9 zfEQSj@ATeP^Ncs`Kz@{~nt!9dr{n|3Om)C!RQPD1zEy(K>a)NR`U*>v4jVQ)YR~9G z3Auni)-0y)N31Jw^U0eOgp~l_vUY>LK&m8Z`jqmwXzCgacn6$22{Pj}OfT2x%|!Jq z_~Rw>!x8>1KiCGdbq>#iO}8;sw`<-L(A`#>aV>3gOYYT|;IB6Z#+g&NCtl9wK z60PhQIQNFgk(k=rrwd%PgS=38BuP%{YU)6t`)8lRqVw46S1Hd68! zrVL5$8n+#gV)^T|;-I)F8Ne1l##1BTZAJ1vYh8ifZX*?vr;wkw=mny{?eR-=eP^k& z{^FKqbl>L6PGp1v0|2?gISS5zZ2IR(%hA$K(WS$wqy2!x5s9N2Qn{5HI6G<pN6RyD|ch@078#RUgj-DTkee^6LR*!Jv zuY^{kc6`B>jSCX4eB!m)A%HBcfm{f{xPPz{>^Bo?IX&Syl^k@pV@)r0?|$~d3r2Pt z6MmR?iHKk*57eFaooq3)@@Xd<7JYGhOULM}a<9sI&H>cDOz!kp8(A<{Bj4Nq{V1{F zFyRu*D!<7kYLGU(FBT+#T;DY0x94~mQ#+i|n%PaZvCX`o+mN?c$GGs6$NGIz8=lhu zPWq9$|JuQnU15`vgF)5ycvj&}dbyUVsw68AH9Bq-r$SNjP`G*c;0_WT8pQ1wE%HA? zlln4iqP`t?XQ~~)qIDmCU+~PDkOl;5b)%Qf?tZJ6+K#7eQBn?cDY5K4h}!)VTyW4k zs{(X=3^HzZDc{egyo><-Dr=Pi0A~JkEvs_U$8KxWZTUcvV+jGos62*dH}~j8YOlEB zXa(Z5>3xA*`P7^+&8RXx?}XY0uxPCBZhRG3v((U8mj`1O=zcz=+3y!yJ7JYCgx=tYX9`?O9GLM#;WMm>elJ-uLC`#}8tkbhun|}z?w%oAd=Wcj z+V&BvERk&ez)v7S6LqH!G-*Rp+UZ)y2Nw+}cb~by8dEj2%9fJ565@K!e3gY7dBX&P zp*=q>y&ek@Ks8E)uQvX+(fj~2zs~UmSs=S`j`8v6ubuKGb;SS!y z!soS7$e!B(#2fdhQ8yBoO|R5q6stcdFPq#xN93m*Uhw8W*V=pY3aV zcAiCQ7#||()JWcGa4LHr((9unwwVa7$n`uTWXqNpXEAiviiZ%rw2AWgOyU_9PFd!{sZu2CjT5HWWBd&wu` z3mbZ4z(kK&&|0k}(_xdg{o9OwP(KIT=9Id-K zopR&j)tv?rjq+zU8v7FMC}D{opOf<5Ym1*8UK2*9K^RZW7_zL1(O4fc&HE=eTS_h{ z1F1bd)-z{2wtt7?wf6}IVQy|lMKG(z*jpww8K0TEWmJEs7EGb1gyyaq++3;zMs!^Y z6ieo+zq*P9xt3Z~V#VT|Cc6M!v^~oEhS;bW-0G3sQcGD44?zzn274>NH6OKDQtH~W zC$%d1rzFdmZ`$yc+OuH55Zm)c#D{*72QB84(#^v!zx@0akl7|0&6`}Wxj9y19yl85 z=XEdUXU8%aF3Md@H5id=RMIlmR>Atf{^fh7zkX&uya`2N3vru- zcq5;#CBt)3RT>&EL)|J%M#0Ew<&ARb#W4qoe2Mwy&iilq3ASQIBARC76?)61&Z_OD zP?SvfLb^FfYQ>q=S$Tm7y6VrH{}cE2iPn#)^82^TaDwsJhP&NY$_0Qt?iY-w7}8sk zxtN|55`AuM9i+y3ms}U}nA{V3>2pmoXjqP~p6mf4nRF)#0$$dI^5Pa%JlSNdlc?sd zez)#4XDaKmUR((W37*U1H*#TOu(skePGdI~iei&viLAle#Fwfkqm;VxaWs{c;Mf))!) z5MyP(A~-|he)frLnaZ%t-x;c8=efpK2=q|1OQ};YdA>_)TfHbX7zv>;5QR_06Pt8O zuq$@~ecyq0A!3_jG~p26eo8fT)P3|)kh(gBa8mzwoAwL7_SwgotXuutWuLw23#4W; z-m3_Dr@5(E14!s)z<&pUNE_Cql%djqj5TDZ!UEeE24-p;@Xl#oB(kKq5qtv@PgtANco8}lv)}*C?vPAH z$I<#>-A=uLt)#k{=REed{pY6GDZhz0LxYbhL3e+tI6*gdYzCkLabszB-t^(eBE>el z6G#KshRlJrt}za;p5}oJFfvgn_3Bbj1Bc&sUsNk4Ed#%1R9|nN+w%SHeh-+iUd{pD z3(8fBb=AGCL$0toMmFud+ffU)$A+I@}hUmHO`|^Mh}gF{N5?*+uF>d+VMBi8+hSN zbYH79mU_)RLylxH(YnCt?=dh-Yz}6JO2RvfVD@3$G#AqOt}h%z&}C?6z@MP`_E3=) zCunD|WU!RF#QcnuTO^rS9uVO4XPqE7k0tHkt-B$9C@NMa77NW>T7xeAxH=2=<7i&I zHn3O<=OdEV?jXdxRe3vd$@9-(w_muhUNs$!Jtj6siY8pS((T~$;h9mw%c#B2}VKc0KLd1P>=$Cntkak z^P!nHMTXHH#j?3`w+Og2?v>bkTEm%bydR7l@us`G${s14TZ$~;vSqr7$1Q>ZNb&BU zUuFFmq8P^V-4;&oY#iS*fZt~^GPkc)M7%7QqcN~XHLpp#5r7N%md#Kh$?x$EM&7_4 z^OBxm!8sdCiF2BNd9!A@44r@M)1#&5|0nCM)$bbCfgc`z5xzWPsXTTTCHUMyyZDLj zW%!-ZN*L}BUNN|fJqRyjbhGXADH^i>jK`j!Zcr*`eFS4m0^*j4d55%acSfn<2KG0C zi1?yIEbKQ23y)K%sr!mS{2?KH8txo~WXf7-pG^~a;mTbsq6vcrvmVCT-yTv>*eH%fF%q&BO~0PoJwRa&zHmc(L*E0o;uCP^{NN%H|$ zRcMN4YKU_N4ZxwsBrEL!iF=480Bo82$raY>>3|mi=^KSGTvlp_hfF{vZO77^+<$V*SK_C7zK;DRH+lh_^RTPhDw$wKK(K(W}-OB za*OH1)l1$f>!>BIf5(7>;Z?i8)ZQG%7_hS3+1fShTlw-58_fr#)t*lwD{Ao}$VR#? z`a-W#;{CV1E&gMKN*++zUKufVx0YjeTY zik+q+{fZIbYvOTMJOWf*d z@zpx~^$9((#HrH(Q6J9kf2Q8DP`9XjQqc&=(o-l~dUp7n4Z^JEFDG!ptWS3m*l)i7 zfV)l?bb^VcL{sM;YV7g@;1zQ{b-^pmGlU?ByZk_btwG~K2@#ZwY@pURWDz=Y?wf4uh%Tmc*jm0g>_e1Tgh8uyC<5yt}jG1;cx!`9xa|8Y^G}JbN zuBv5}wSPX(bWJ}axNFX&c>0gQhyvxZ*NkOe1K$tJ6lL20bW4%hREHqMge>@M-u~nI zSmMm$4Ga(heJ2|Auc6|I;riS&Beg#9sZ4Gd6I;M#hWVF>w>PPpa_ug;{)lGNsO8qF-Shtnii2BNo}jw%66^5dz08)( zaV$@E9NOW6@xDdA)Er?vvapflAX=w2(VGJ<1UTbr`1O`Ggdr#2I2iLJ8HSfg- zl@x9-<5o*n{gHe}wJV;0`Jzxjxn+;{uLqvEJ^PxW71BF3xqJAQomjIfZo-MbQ{rG3 zhYw`TcL6t<_@<|^&zm6oRq(Uc5Ln=~7D%^@8N)DpJ=Nt zMY#p&dl|o?B{XE4tOK(c z0jF>we>?!iBQbZ2En+GG7oD^26VIWp4m+6!w+C=Bi!C5tj0&G7vI+wI{=eblaC~pM zNdF6d9R7q-T{llP_3q_+^EPhr;>yTBDnTV!rN14B!q}^u?Y$;{khncpRd}bimB}t& z{P|geNf-MNcoP>;Wgn+eK>pEM8c!Yi%f9gQ)m4Q`_W6jtjA?f;q@@4#*&bpom6T>* z!0z3TO#LafiK11j{7EO$#7uO;zE>T(cM$5;GG3*>30_nL%x0BAAaG;l1#kGn{4IA29?o0k-WiL-eN(3}~LhpM{|BU2};G`E*((W@Q` znccKL6BrOve`T}6BBbx?1Vm7OkKA5~-v{D9Dei%lOXKK9{~`LbX6Wose1u#F08aQD zjK8%%M%cgX8xj<>4RzKbck_@J;M(!)hn>f>ln5V_f+f=q46a0ICHEkeO4^4PpA2tP z_xMo+xh1aYYg&nirRsO)f%*Gij6ZL_g@`&dtT9-#>zj-(SX*&aWwAq7jH;)@Bx$hf zaONa%!ZX4e|Kf35HcCr6)(OiVzWQh(CQN@GoE_JZ4>wepM;z-`N((vb0QH$j2(dK; zm%dMnXH%*=#pn#@wQNuI-hE|w|Kvf!BjvsK4%Drk2JqsqRa^H28i6my%Z?9GVde59 zHevqhKq16+5d$abgI>8V?oK9a;yjf9pYiZVRm-o+{}k@5(o5XuW87M*?3Yy4A zXDuJvy%E4(rt;s1EP(ef2h{%{8w!?)p1?~E0hMGy&&F4oCHNmuxrkoXv^X#LlaZZJ zbf{@%#l;hXrNgXm&AIOH>`!Q&tuWnF#UfVli$(fIY0~P(Eh0#h@=aF3CT8+UW|Gl} zJ;$HjMYUiyDSAyht6%kGy2_0>lx(AlZE?7zp^$de4@AqKk*AGZTF;RqOHm&m0F&G9 zpcHPgE8t(Da>YT6YL+lhQy^yR4q=;;s6?hW#%`uQg1}$>s0h5qvaBv34zNtTQ^mw+>ybx$ z)#W_uxb7{UsCR6HI6GyPG>fCz{q{rhT#0c4o<0}s41-G-Lo#FmPi{yBU71l#-nLR| z@z^-nNUQ^FkLieC%s9jXx>`GxL;in*(#_I{JqUyqS-(hcZFvPs((~h(kSY1wPwF1PkCgmZYK25v_(%*UvCl6sI&<@?r$HR4;soBuRWK~yp-BLG{fDX9s^!UwQlRYohRu~a zbEwa$Hi4_S_N~7##&U}fH^9p+vu(4~A^DwOyHZJ|gcc2N<0`n{l<06?x8LSQbi}bU zd-jJ)KH!c>R^gr#9TO-qWxU-c#GL6lYAaB5#W7S-v-0LSQM5)Ku@Pk6Y_@FR@3j)H zEQQ2Q09I<_)j+|6M8TrF>J309G zVbm}C>S1d*)74V7(9v6sfO!3)f5qdyl-T<|Ov%>f@Abw{RTvh+@?zO%q@=^!H3ta0 zl3xNe@r$RnXd}{Fd-=}|H!CK1ysNGR?sZ?G$Z+ip zT#BKzM~V1(-xY6QJWYlMwHk7>xj88W0VAKobOwJ|UGP9g9-cByu(kN2BV!CTfYty1 zVdtix=^seb3Y(k4+0*(5wAiy8F_#RZWbGq^R>tj-&oT@$=l0hfDM+?3fxF= zeOC^#K2kZ=jsYp!Gb?kf6>5?yyE1&9Ukr9{(0q zlg|~#F)q1TF+%V+f=bbXA6Wks+MwG)0vxiMihFyV{ns-=(t+OEbyJl>Su{(m&2L4R zG}|J$*A^}9%^h|b)QsOvmN$i}Jd9uW?JyVxmYXE20@Twp=?uXvDtOnOT2SgRnHlhR z=v?oAfX+35Nn%x&g_|U$gwyxn?J_cOcI($wkbD*=~wi?lE`nWcI^6hMW1K=-pY;GBAED%B3UgkDeh+OvNZ z0SMqn%65hk9wvK6-3PL7m7NT8_&-$4z3~AUV7jH}n=_EjupYtIurq4c+<9yq9P{Gt z{Ea1jNn(Ou3VH)-3bUcDg69EiaFU2_iHemg`R7n#*<1;zjIo6G02|je zY&Q!6tx`*Vqk}5>^z5tw<8sPNU2(B|?T6kLV0pl47sw)0l}~v@dkuk#SrNk))|vf! zs>S0@u40MeL)y4Xec}JXo-_XOWi`+x|IXeBy(-amRBYVrYumVZgqFV;odVkgxFhdR z19s4M&oP+P1^0g4)i9}U=So-@BdU5jrKr&;AD>$2QFn=KuZ+oY5Wb(!LDQW5fH9m2 z;JN^}Ray%{_H{1+xUMiw*ODuViXK*GI$7k+t@Q)%hH&Uu1_&~4uRw0J2Pwx;M4S-Z zng{SXEw?wNyJ93sH%A(x-|J^txgRegPNVl1ByV&~5ggX)33!8z#pHPEK^|@S@0k<< zU9Zjz7Zu}aSa2&P1iuCcN(a$4rBmg1^R|0|G!|2DcmUZLfa9X3w|FLqzpY37+FxIu zZ(Y=ehETc^WtC0OI;aJbUdPASTzV3#&mUL9fNl$8ANdYdZWQ_y>lA}yq1--W5-TSC z=cNMEWMG!yZ*zH*1Rsb(oWm|1>Y?eKc4Ai{85`rqf{q#Dw^B7gmD~)SU|`(w{uB@XzS;IIT3Dc=RGfZ zA3_6Z?EAqi)U$~3GxAo=j%I6>_ysl5>|#a0WT=^oP@WWCSm$^lSuUcMUhE92<_rng z>$ybx*pJYF7*T!`A+7+da>&YKoWLT&JvLlgYW}y>0_F_y62Z~|tN*UJz5%$J21WS? zSwPn;MJm18CCE^Zj3N)m*Z||-ZYV!|^QwsbBCThjDgjK*B|2w+hYoVX3pHSVL3ox)NV|e!^(n8!$}iDuLoPT50@-5s^aZkGNb$jhvoa7ujY_+sKU-dy zYk}gTDt3ZKO_u;x4%0tXaDMaaixPQ|Dv(mY4-$T5iYx{6iLF8@d>~v!j&Tv;Rw9lQ zZjEEgx#!XbQVZFkf>?dt1Jmy|z}k5Uo%Bg)g7Z#qcQ?ViQ^ol&)4Xx%~4 ztyr#6H7h2vDK~G=|Jzm;xy=hVNlCF5aOboa&oY=g$I~klF%OU0AZD2xUM@*cZ8P#L2KI z)3ZDf!3a=HQQrtR!jx!Cg959VZ0Pa z*kTCybu-)fmbZQSTT-0JtVB^))v;ZQ7?jcD1qR~nA1sHMcbD66;!&8&n}~47YTe%b z{v0KuvX4cWh2v?~QEuu9(!mH`a$Hgd7ry!Mq2}*?X`t&_uw~i+3(z|=>yLDNEnoHo zS%TP$=&x<-D6LV-&G!13`wFqk`G6&k}=-B4%EIFp84Tb&L}I zCPi|gBzEe2teYZ+0kE43Pc-TgE((*}BOI)*Fc|jMax3y~VbyEWw?lkQq9UrKJdhIAqCeV#Kw544iMjVRNxhq`$ zI6?cZulIPh%Vb?1QHavhN-0$gDbqu8K$%s69dm!mNa@$S*wlqC>YGcpnqjFE1+l$< zxtiHVkLShjv+=k;ponjM1!$?4g0%3};b10746=h)P68{JNNn-s zYr|ohV~W62>j+FDZr)gNg#4qbCmI;|W*|!&d;+*OO~P?FI=;pxHnaTy#t#h&v-DyV z%Oa0f=ptCgVHAOH-f(Xi6?YGv4lpxu<#sNbFLZbDFZ(P#H@(E}i2QMl<5#RrZ`zX&_+z5!hL}!%4LX0beBoj*Q|C>iZ!z zPQ)~vWib2~ajTi(#tkA!i2Za#UQ~N^o2N%{E39hPk|o>^?{sKYa9tO6A2EF|`2bG# zBjc}#XdHfG-G++MXsgsLZ+wlaMZBgycjAT9_fd(|?BvBxt3wa?6065VIKp)ln54@{ z6b=uzSP4&vPcpnIHn5vioequ)j3I|T2440f4-V&Typ7|&_vOslYv^2;wnG6|=9buk zQ*!3}52`Nryo24YVZ<~(B-_?>%bpXgn*iI!Dp0JerZE!Zt5T~WP+}h$+)0W1{tzn9 z>R9AxBOETk ze!qnH4V-LAwNrwYP7-D_N{UCHAj~scsk6isn=kVUVH*1!84mq?JyHN+s zn4D@(cZM6fxHf6N{RY7MU9%ho{((=6>~3cFbJh>VtGMneRGPC!3xIWw(T(3i$!c>6 zyhxN3dq0M`WJP$b+%6_2NWA>2-wSnUUBbxs?tq2B@%q#jFDzMaBt52WXX z_;z!ev3fW;V=-LZbX=bhAMv(F46d$ZKjEfi`SG6PuSs5e228#OIPu0rAQIS=mtv3` ze?0*Z`_0-Kd8A}X>IfK=aKb%P z424g0<;N<<_lbbQ0nFDpIRP3w``G@~n}1l1M|c$D>ik=TIFZ6qGS-e0pLbS0ObNY) z`_YlPt5C1ep2Q0m24O6$vJjwo4@s}4VzkKC@3+gqv(P=^b0B9od6cTPn-)xrN{AYT zsjYJ)h765X|SMQ9`89o#1mX5cW_n2#2L_P*A$* zFEFR~8dhx@)E=WQ_TP+?u;N5!kKLy6<}33nFhU)44aIvFQT2#2{^gZ>0l*JhKfDW< zCkWdH4YaF$0@@&pPlpJgzzI+y7Ev2XvGahF$GY8HqrH-54=tHAj^kauruL%%ls8;W zGsOvk^3?wU$}=kw{$GIdfaEC!5?SgKf5p?ORfiaL?yOJmfjHHB^*`*c0mekt&6&-H z{nh-$q*?55!HSNDGIwmr5x`fTzh^0P)CJf%2eH3n=K!EYm{hBX)a#4?yS(){_6c)c zZKq-G-~RDGr7rNbnmAQ{E3od=#j4@|mvO9HX>tHC^(Z{+-amnMPf@p_RxCCT_k?Jn z%pGAzhrhpQzu85Ns^@RNbaVF({m)UUru9o{g=`_($UOeP)QA86$uClrqoE}>@1rCC zMaOG`t6A(Al~3kX{>xwetK#=BpP@4b|F84qn(vdMO z|ATx-u=rn*?;!X6>Y2EA3LV|Gx#4UQc*vmU2m-%7lip2ZnkL>}u=K#o+ghB*+ANHl z`m;h7bZ!bP-=hmWPxti8T@{9pP3MoLqfcjBC49Ut&UZ2<{A1L0%D69ecY{AVwhZFu+hIqL*leui0qv+#s)+f_H%Wu4Q;fN!m~ z{|E%4Yd~f>TOG&aBlZ*`**F4Yn;Un)LCOAlGlQGL-e;MqYIf_mj}SV|5o(ZMpZ-{5 z>)ZTP3+L#2YzPY2tb!oB2aLuH%nw&VX8PL;M;9k0VCV6xoAlo`mGS$v9{w=)e5Cf1 z{Vxz*>Vp5at|zds69xLuf>-5&cAC+U!d4v6GJ2+#+QYe)Qb4pM{6U}I=*S~4h)x6y zbR*-yGcpVPYzBron+mW0*lGnTLSH=?q^*M7lp~ThC(%(pU{yi@&I1xjg-{Ti^E)&e z<1z9}5F*bhNp!-?s-bwTv%lKE@vlKk^NTOl<8n(@F=bZM$GY141BT}A;BaLmN&??% z41(KrY(SpzL-Y~|czVjX%-(8$Mo$nbjM9{u=wAWN>KF>a0+62}X;le%fC!5vb$hX? zxKPHhzBOkIh^cylphfV&FLAL&LZX9f1K+%Ki~~q@I$6uEB#BAx{W^g4Tzx%YH(t< zG|6LAhl3KKrtmN*>(gKgpbO|rtsf+JKcs1r3fpR~}`5Cwe_=9Bt)+tMUw{b)5nxI~4 z^z%|#Zk!)T?t3ccC+ZAUyUdM$isTg`INj}(x=NDO)_k}K;E_vXFI9|<^R^=x?CBNP zulKb5nD=i3hNSrq)w497pb9EGzpvrnKUuDe@vR>@@hKEPhsXvT@{iv;jQ~10@dI$~ zjvI7?0;{WH=)0e0g+ftK;(s5^DSv3mf4{s7UbXocUE&|KWl*C@Mt{)NOfb#(%=)tR z!)jCrH>NuHGoU0Sm6zSABZM6b<(%ok@Z_e6fRG0YO?x8wPf74y7x=%=FG*K@mH#4goG^Z>F6-&Fg5F8OTh(D_ zl)MuHe%g(dg>aSyTT(0sdWuCyeyx-%dKA|!UK^x$P)$4gbke6@=0{aH_PP^qG2lx4 z=D2#&X62U`)c(kuB#1Qzr4NVjp*T@dB%L?{BWBC_Q~>C|t%ec}^#_}srf;GPduXO_ zW`g3B?9MfzcJFZF#Etg=rXu9`4!aZ$?=MJL-nzGvcH{Y*O8!U@s%areh~HFu0Gpnsd>!;KkaYp~ zYcRG=m+GG4zJq8KP+5k}ouQ zn*q%LEo9K@@)LE47CAohQLDkR@YN{DUvDc?B67R#eJM?OVDxi(7{Fi5WKxORPIXq3 zZylfSsHXK%iE~?A2z{K#@#pBE-soKMW7nGPa(u`>(4yh zK84&-RJP3h0ea7NX{^$H+lKdaLgi-ynHYm|!QijC&Km;`j5xGaRIAr&2cy#XY>J98 zT=$(^~v7d}N-Q`s*5{|)!=s2Vc zPExR>d0l$7jyDT6z3OFLSq6N#{AhE)5V%{dI}H?%pK~p>ZPJt$}JyeiPyPdrxaQd)q5Z^n3}ZBfndc zZ+*Y~uh71KJO9+bz1}Y9QCPn->e%#zB1PJ~KcS$MAk;ytg@x!NzCadqka5GJGoYBR z+4o~ahKBbO;N;6GhV8@C-Y;PKxi&S0q)Y&e3&S&YV4LF_%;|mRd)xQ>BM1J|q3U4! zvwp*QBB#8Rm9`3ZvHjXD6a7)9)0I)p&TpX0u+C^z zq9BQ9%sS%v02KSX9BR6wG8sPN0W6N2<`4T$?bU!n4sQe8m-biFps-_2M{5rNTHx3z zQ4lbPhD&Z?TR=bm_KT8(_B0U7Oh3;y1AggB-_KoQ`zteQ-hF6eIQ$lTSTzuhz5Vuym?HO3ts+?Vku2PhQmjFjh*g zaywO30L@Ce!qv|)Uog6b59M0af~oe{b@p}d2M%<^_$~sR>$jeBd!6pGJ&q{p5w|!+mC|Fe<&d`9ab6|TP9;ew_AI!U%9SLBhz+#7-FgclU1g-tr=uO< z*T#gl3`}+*I%l{Xa zy(qrk);S4p74?1Etzxd<`oZAUF@h1lH_e~$`LwiPp0lAmaQa|8r8uo6c=|grLR*!b ziAFFU&xHL0Hp&I&L)6;Hi`R{W$!W(f!)h+CYMyHnMo34aG$AR>{I4Y9>->M z5!`K5>P-U1*Aml{dh_l8#~Xv?P$FZg1G>8I zgJ*Zy_CXkCb3ehFZAaO9y!im#d@U<^n-*IL)6Xen+ZcZ)EUyHcQPfgj#<_!Se7DC` zkv48!qj?m$l#^Hv%9PBYKEB=& zp|!2Chm655vAGdj1Kq;opJmj;P7^oIYU)z&GY6A&J_arhln1Wea;6si>v%M{qfwmw zMm~Oc^vXMA`y7@&HQ=zu=`;a`Fjpy#YmJ>r2WLRx8OMor5D3D#o}g7o=M$Gq_j3Wy zFMbkq%HI8vU*r=+$1>(c5vI@%u#35En#Tt%5q{ToCW~Wh5l?B%y_CVc=4*4TbQ<^Y@ap6_mv<;U- z>m4~P2#P>Vmhp`hOJYDoRfB9-ZD#Ymzz$$`w7t>z+IRt{C0Qxw3~n_1YSiO>I@PT- zXVgm4d2DKp&_!d9F$ISg$60@gT#tOaFOKICW8o@;i#p@J`B$*--uNNR3m&*vmKyG7 zMtq(&@)#c*X?#sVa|RLF$;5(b_NM%EP3p_02%BS`}US0MW=ZHqGd1>1U(Dd)jP?2ZOx8cRNT%y#gJ-i)r1<;Fy z2PwP<4OUsK`6XezyZTYy5YyG^Y@S)NYIv(zfGVL|ovFF(hhOfpzfAth^HU5vU%OHd z*F%&a@Y&wwbUdxu%Z)Jdi!Yqu`1Jg$xDv~>6=xK)w@2W)!B1W>a30vHj0c^!t*HEp z5y<#X8s%Pw@SCF~^D8qS~KPDQvrgE!gQkYvfHg$E~CNQAcP_m;$+5qc6dnBrVx9h3Y* z8#z|GIjpq#i8s6`@CXbSJ#@uor=J|d1qqFIs3Vzg*4|8zpod4HU$KY!R#(~g%dot1 z-lfnkpomLbzCA)UXF1N^2(>7d7_?D-DMmFPP;%31!#W^{y%{xazEbuJ8=|$tDSFOf zJ|B?ZQ=5f)^#UCE&+1WTr?Ix_%k|)0saR(i7bMWEvjo^pWA^kqHI@nA+7`1a3G%}E z+wo`lZnOCJf=li2aE8>NH=^a1W%p9tj{fK8Z{S0W_-AYcn04+S=q6~i+93AbCt*N& zH48y2B?mAjI7#-;tfWM*l^#v zeb$}msdaF?Q4Y(awlS(kO+Fdphu_<5udkal$;fU>N-pr$*6NM9?G|AbezQ^I>FFT< z0w-579Ds88bLjlp_W6GF2DT>ry`r>v7cP81$7mjZZxq~EVyo4x58@;67e(}|Gdmv< zF?B_rOSC<-+25YLv8Z4Ave^<|M~oQR3G~R&c{U(&*-lAIQSCO&Y~XF_mI1*B96-mR zUNL5@ND{p+a0uRl2QuV*XgX z2i2B(nMNyTSxRet#tL=n%VHH)OjGkIv|n-1&l(`0DD_QT{%LXgG+LC|r$oti*Y?BN z1(IqZugnkbE#%~l^?fhUp++KI?V-kT&#=cXniU*a8*PXZZhrr_G@OLK;IbECWDuHdDM9Q4$$)8lFm9Px81dpD#P@Pkg4d{oah!hq%0N{TBe0zi~kg&FLC2VIp!ljXaLBXET;sL@LC znx%HK<;|Cq7;>oP9GmT@^nv9E-aVE?F>5o{N#*u1 z_O~$iuk_3ZzdGLtnUoTi=Bp)#e4{Zf;l9!GR-2V|$%xq5$*1dK%$NtLmBxhxyKyiO zwymofliV_(xqH;`mRnUnFv2lUZTY8R)+Aes{-Qd1tar`DZw#$L*=$!u#L8~D2+a+| za)vp)e^!MyUlrC{2u?RjtKhEOv%|U&#W*&4xsrO(8whE|N^J5E> z8v{wR^#y)Finz-%9&m?nwi+Po-l*Og&v)&PbLP63q%ha^Y72GPnluCuo+nj^g7D=` zB6L!!S8sdlC$$IlPK&A;Rd-%3u^Za)B~&Kw##&Ftjk%~n+ zQfQ9VjZ4?YUTKpDz2KhyOd+(y7P8nfdG^ngfMAcSk4kmdPqQp#{q}mb2{g27c95@n z2|zvTyi&pMFybw|t7!5yD~Lfs_Ne5=r?Mcy7ukL1Mk4ADL!**o`Ga$a>0KE;awsxb zIw&(dprKyh)TQiE(J#D{-Ptp?NIJ8Nqv}CKT-!mI_1@cz0%1V2ci}|nc7)CSA62`ICbthf@IiaU zmb=_X8{CufAIO-6fgG>@u&PqDE%NRym$J6NkK@4q8?y~+9X>u_ZjN2N`#`8k#8Ya`>}R9`dvmgGs3H9wFK zhzvWS#_vP^bzXDxk~{8{(X=|QF} zu#TKL^PrVf`+FrJ{63dD>IE`=m~;NvQf~?TS_LJFMwbKP+AzC#Z*8xnU)I%CG@V_v zTXlAp*e^yd3!-&|U#%v$%SE8gsyj-1Yc&<(jL+na7|h($(_t7EbgMV~uC-ikm@CEa zR5xb3S{2_Htd@ZuOSu~Ulkh3gZqo$ic8@uHbAjzAq0*{kC>88sZR>PJyKy9o!E4gO z0EGM{zB7|(|cdlpdPRR!7x1dosoVnR@I=P_o|E??B@E3E1}j4!4IM8mz8g? z1|z-X{1=lwYaufBZe&s9P1eUVe=r+SNp@bC??h6SZqT12A~;c(1{;RWf#~ix5Jn-k zu>W&uQN#)13)DX)S|7e-^6u1Bqw|_VYhGxyI`ZV{^YhUyI;*un+kd0@S+OV7`L0k3 zqd4E6vl_M{ijy$=RoGotp_f+)IdezaPuymdkG7QSC8tkv*iQrHN4g3ONCc>hf1FcW z_U4ND8eS}NJR|NkpZCxMsXaqjD55!5#zJt@%P+e7afyYK)LnFa~`V~`_==d@nw-PSO-~$UhJz#cct~$=AE+2boDbP#=&CCBK0NItaqUr7J%b^Ms2QY z<&B-Iwrw%JY}KUhe_Z(b4C`b|Juts_#P(O40RZtU91k0|XCVH_>Lb1-R;dho18J^jr$XjI` zCjea$4DaG6*q@)^DR{n=~bMjq_(Qf;}M&om$$A@DFN>)_Aw#@^H zzch_@!kCUt{NhU|{fh;2U>vi2@0CCM1hFZK%C{tp=bkZ((Syjx_g5QSRO54BAbffa zxK0tKX`SB|+hc{xPPaP&iNB}o5$%ot!`WMhMcJ-x-v%n7C^d+PC`u2YAP9n>AO;-* zLkkFqbPWs=f`pPv3?(IkNOzZ{w1Cnf(jeXa9hdjL)_UG&xz_i+-#_=}jj_#KbIy4l z=W*=&ZyzCX)L@DL0P+Rrkt24GkU*k#mci91T|W|pbGFMjOFvgXew_1KW@SzHIANn^ zTtZ4_)QG?vC4-#NXt=M|oO{Qb67uP2$~7j$nSRW=fH}%05NXo}iD;aVo^$JnEz(zg z8s{;9aPc)Hv8^7yRVxY2IBA-eVp;dO29gQ@05x1f|42C2WT&c-;G#O7cbT(Pg?AJ> zl`U!I74D;7=XVqY?XiXj-oEB#*D08!9;9-lLqECUr$d?0v>t9H`YN5WIg&#?cDkS{ zilOCP#rtmg;$iU>k8YW8oMuv{D|<%nSj&mX+G9T4Kpi#TrSH;KW1TA;iu}I+esm~x z8*H!l1?O%=3#6$Q`k9)CJC0b3hMg9FKp>v}bCx`M@=_XJ~hx<1U7Eq64US@`V zEqeX&{L?Oe3?0k`qmOAOJqf*wCv@*h%0@?xL|4_F>Q-hdthgS^iJ%Gt>eRZyJ-63A z;%I8hwH^a^fTk`BA1e$#cSlIF;PbXHjOMm8+B)lJ=lVs@b%keYbv@{qeB@9ezdz(4 zWK;08TYw}7n%C1E<2@@8ZV|RIQyodZuNM1yVB%Nu;r1m)$>de8lu~RB?~d@<&IyBI z?cx=xG9-t|)P~7&b<&jqG$*7aWmli#bphG1f`T*q5%{>(+szuAX*ZO= zQ>&Y?_ice3{z}Vdaf@gRdZWbHZ&h0~#MV}dHJ=saS+1=_!+xK7<5q?Af|n6d{o=3m ztqu@h{!F{wK5wz#=$vy*vcVvn+*q|x`y_`kZ;mkfbpIB&#gEDl0m>)vesfz~Hq0^_ zWlIPuG3^znvc29mwN@M4Kb;lwj}=Zx9VRz0&~Nt7kuJDVMxUsJ`4fcWFXc__3K24= z*KUZ|5lW>2MCkF>RIcx0B~Y3dBNJpg`ya0JFaj#$@sS!Uf}_)TfJ0Y&5*V&4wQ)jN zDCU{DBwp9-5lSc)iX)S1r((7PBrN304ybh^9S^rL)B!1E)3jBR zYH0Cr^#T{>v=RhNyKA`|4UC$79}_Lm6*})3d(`+JHS6huIKP8}2ByeO%d-MjPkz34 z3;n88amWQQQ&B~FcW7oI1W0oGMV=3$DJULk1uoAOsY7=6UX@MlL!Q~#hWs}1F^>#6 z8G&(1JHX)=e)T3Ez?^{wePdb+(8TK`N={B|+5gc^<)5t+ML z@jU+_^I+;to^heR&$!1+CYA-gL{+w-*y#q`Tm4h9jkrNL{mBe8c=B)8F`!GyT6t1G zk8!LkPiw!$<}pbBa>_JO@58xFxBk7u$kh=qh^daG4)-rQ!UKF>Jit>ms#6FXKy!D) z$nVR?X9gzZaH+*adi_}51lzr3;cyk(>6I4rY-(;6G4-;YSMI1oMn^`NWrl*b$q=@{ zdUdLuG{Ko5!{GqDOx`CLkGx`XVN+Hd--J~ z{tOg^6G*ST#+-t_?jlAoe=?q7kddCgZ_%qGlW2q2XR^2I2>?KBk(lSX?MWMJ%b5Ma z=4^~|zAzhiN{f&zGIe~NBAbI7k&EZSPS z&X3mc4t2kX^MSNIo-}4~^M~hi*IO0ks~wW~NB`}nt0i@@Ki}nqZCGgh%j2h(y^kP~ z)T3?gp}QkKvOf3QSvfFuAh|Q%mF!*3iWBp?IWQSpQ!@_$`s5me>ZoDiqh9Mir{(Iz>>+l8rS9;xNT2U|qS-<7iv zC3;yN_n=Pl8N~pfFU0m>gG`(GGYOv%KYe)TfHZdVt|lUC*_NAjLWN*VbT8?KC@C*- z9#Xw~vYyoLb>bldDlk;JJfxi7+#c?$QrVqQBTCVlcC@%hL>j8Jd(9w@gtXC+?8=;X zeAHz4T6=!(iDUO$IZ*WX{Lbln&6u?iQ*_I=3)zyG{QQjM>X|_T;Isk*vB&E7G3e(% zKv|;GOY(iio@$;B4Z)E=*Saw){I)yYW*4!uEP4vg4`)8sBaxY2&8P1dX&R>M58HX% zi_PEJ?}*w+z{0MxzqCU!!W791n&D>o;y zSk|n|V-LLubS3IiS`jvQHLk0FLxC;Vrez?1)M4`Gmtxcur1&iwE+Zi{@XC4?>U>K= zD01dl=RTOf3qmk9BKN~-^&Y+nFx!kOSYb)ay-_wR#D|?)|;(u0P-mW31NpQ zp6`8sq-DkIX;?BT*}Uhs1rsXmWUshD<*@eDqiXM*&~D@^{Msj}KA_V~v+`k-biX%! z7@rm(^{$%5aB1nVw`#K-9k%V9-nNK)i5 z^*<&1(KujbpHFYMc&jtMXm!K!vt$GU`_kXAWFZg7(B#vb8FgM$Oyzd>xtRDxoPJAm zP=mlzU*WhJ4TRP&fAA|MoD9hLWNPVcv&L`v&cX8}%}*xjh~RJHLV=+LQ~YD&A5FA` zJI#Zae$W+Lj@qkr?8(v>IHC38ZW~DH=<3yDEcSsCu3nCWDZ26Et6}Jq?rw?a9uATf zo(4Iq&lRpwLmzVALAZ9$aGbqDv`_c64tGypyy(Mh0oS}Li%d!3!;kv(k|!rTEde(i zZYG?)oX~c#>Z}|cR``CrOORO%FW%&1lrny&=$rd&el&YW&q}fC29dF0JO@cCCNpOT z)qSD+=nhMBgnR01pSc*nAk(zn)%>BtkDaJNE(dzFnwD}gc33;YR=aUVGQN;o$h6cn zQU&WU&_7slZ;qs2^9o0IsA}zHbGX~97l}{a!V9;sr$|Yv+eVh3kki7%c$hXV^(^_6 z`Rgt#g?H;TECFQ5qgpfD@7RV6I`i?{TK8ceIo%=*P2ok7+5uiK%NEjtQHLAi@eHP? zLoVyql|7)t897J@8i}BOt^-l^Txf7+jldapD*T`-DkKz8Fa<89$X zSzEl;vx^RuRo6Kcre*OTW@Q!($K~Js7j@Mnd03)sjPS6H*-GCqw^qdZTz@yhr+02Y zVk}L;EYs{{q?X`;IZ>TPfPa6%VJfc5Ha4s}v<=Dst^QdLRi0u3O&Qw)5`j6W&H0Z;gPR0ZHf7 zmg|AxHE~SLTI0LEfDxH46r(()eq70`ns?oUmN6LJ*NnSm6dt@N1|JEj18@AGVyA8W zUV`Af2b32}-4sH;ouETu3 z6K?Pr=v{*zm$nsj%|e`rM;lh)P?d89W|B_BeXXRofjsC9O?v-l4}YYK=2TM19T zOE!f$GU9ehxpTQ(*pO@lQc{;2{h(~MynNsPSC8=82hTmAgf9|@v(Q!@#0Ln^JZw=> z|4XXhcegS)<&zn7PRwQ)%J)$6STb?*j)!+2KV$gXIGYh9fMnZ{j$cc?i$th;q^)7C zV!rYHZtS_PL-4f9bN&?6zxDZCKZRDVDw=nHw(L~N9sx0?kKJS*T_iS%YLiVwp1I2gYe|sYTxCz0B8pZ~CbmQdnSX(tv zz7G;$VqHMsGl1wd5i1Z@C1d-qSANsC^25WRQvG*ObTmoxv|N9!KwUx2Rk52bxW74S zt;tl69ft~RP2x$`R){Qt1BvT=;l2Zj;M#vMFaP~KV#^2;!86l#V=hf0?|(_I&$_}t zIEW~RwU+F_%85#Y9Q)g}gj3tbN1rJD71#AOg$P|d^}gJtkSz3n9bkX`@Aa4$Xe@8c zCyD=~<>OjKFywOJR38Jn_t-rGo4vf4qG$idpZFio=r6nui_GJ`pASP6{_~~cPon;R zyiGa+2lv`^Xc_mW0f?VhNXvfYm>nX)tuea)AO6LQ(UnkF{2~lg~eX%V?d77|xHlY-!XY=nFjJ#tGl zD@D7)*$hU5>7TC-+H`*ZH97aj4AH3rOWjN>u-RT~*9ms}@cIZEfw|nyV&tPQSOCf} zo2HGdkzuc8Qe(pPFJ_H$*xd&rNXi)KsoR{umYtxk3B~eet6lkM`R=mhfl6@|pCL2-573Z9ZVWd~={V1+$Cdt0frJQatp5EA0H3(0rhoFuHQ0Wv3OoUZ)ZNn>)Mx~iv zaYYD~ZM7G0V`O&lYVPCTn<%ooBBF9220Hr>w;~w|z@c||CLZSuK8LY0U!53ENO?^C zPd&P2+!o!&RM_MDj-4}kmtWeDdh}; zzGx8X!cwJe1_rHy;C*-i8kG~(ystn0LSnVj;Xs?7ir7OU?GZ6OlYjma_ZzH208t|k z!b>;^%pD?0&YsI%ZZb>B&-uk)(?u;vnzhwvCH0X@&>3;?B0;c748jbAbKu@_{l=1S zRTV`r>(9oYPme-^SX^woD-TEQQu;j@|d8IiKis)Xzg~4%qlk&`qlvoJ$ z!)**MICryaT4?{=2zOrGp^@O3A!#z!xA)`iviP0w1EC_O(7B!YkX791=ygnq6{|EU zkQV}oNMmvwT+}`~K%O*n7zM-c)NsI^IARX^ByW$tX(=fwoDzO}>q1u6t{GQm zsJR2xrG8mIv%3}G2ev47Tg!42kRKws^DT3cbo`JuMvj6!ffASWJiV47yb~!upr!X# zc;_DPJ3-~G&o>>cC}Rm?@sb@#T$o-TdTt)$IR_Os{=?*1da-?o9<+mEWYzoI+~(J7 zMz>uLEil>dBOSZl=fd+ha+l!PvqH`j7#+<$3Fp1+- zq?#f^a7sd~x{bv*6+fz6l{n*aHte*EC#DnGckbS=Ha}dx`AE z?ZC^4VTo`Lhf3aAn`wG^f3uO7Qj2uyeK41J+6BQ@H)d~Q(ya?u(xoz8&%~*BwiRKbF%>v8Va}WD}8Ef{Hl!X zxQW;!=%0ob+StPvA(nkG&m$Y}PmN8ON)(7#|IR?qEKZG<6r`Jw0bLo@U`hL%J z+C&Zp>>!GRVHxzHR~BM*(W%s*syl+6NPld38XD}|AMjfIxXqqy&@}Mw`pAmdb}!+q z3d^aLauayNi}Yg4zlK?}q0e-avUlpElbmQje~jF>os5HRE;|r{@#Pii&l}$IGgQ3u z>FS>jZrA)Xn=aP!rk~RDLKa0&q@dCKm(5F;JPRHz!ypuQj4b#t7D2i^n!d65t?iZmC(XkghQh4vnw3*1jqF=Q{zuMeB|s zVk+#q^Hc=oXD>kI%&3|dr8@VNlDf0C$1;}V+L|i8Zk=ms)>i7!`~Kw74X9X3kffqA z$T%HJ9ss4oFU^>^i}s-Wd~Qb$BJ{9r{tXc5(I2=4J6me4jI-PBLJW%S-p07t&zK3lnku}F8>s3XWXr=q9!sYOWhx#aeZa}DgW<~Vh!5it-xxp><-OE1c>{nc# z$GFP_CvVunVYNZRIlu#nMA}&OwT*jP&d|E7VFy<6@7@W#jWOQ-P0KM~0!gbE^0*RmnkVXm-J5L3*sK6X_14&NX-Q`~w zcoFb==9b8q?K~jFR=w=8l~GK}#<&x8*3`-c2#LQm)%5kGUK1FVxIdAkRGt>zj4eedjRbhi<}NA(hH8luh;t0ck92WTK3DbRy`q&A z_rfzF#Nu$uGr{WZa~>(VJO<~JzZp8Q@{r=aOkwZ#Wf%!ts-`=FO1C(?1Rve^N7j&3 zPy}a4Pl$_HjqS(caxyz zw+!|;BfDdHP}#J8kGvDknBO0H4q1*vy`yHcH(7b*^%TYPSn?~+t(BW}C_xGkh6O_{2FVnX^1G&Z>Xb;>nL&n%%p#X%r zo5h}A4y6(L(@Z0KhEx>_8qy!CH5n9E9eO~M=H!58Tngmj2x699=L(d6c15EmP0r*X zNpPanf4pNJo7ju*4WRMDaO(Gk$k2AS+R%t^M7CFOZ@hj##}?#2oYx+I|9O+@SoMq+ z*{9Icv&Yx_Hz62{Swd5p(}(@zJ1g(u7DzD2%}-N_NzhUEV3z1asH$a=G?aO&*Tqz6 zjrHObOfd91lxYnGVE)1xzeeN-Z7Wa@Ck8R?6k?kH@heMxV8o;3U z;I{*X2r_SGLbfCBm|F1CQ~H%dlp`GySpzQ(qimHoz}L8yofYd@dvai>*dJ7mvFMO<&-y2&#?jVsFYa@4RkDuOB-sno*!*LN_e1k!XGN{uG1f^ZMi zD>RRDvn9s<<8bq*>{g=r!|OXQNpj(Z)|Zsk?oqnwYXl+T2^+oZy;f~5P)k>{(EAH$ z>(*yTjvr%4b#i>L2nyuw=M)=6smCm1zRXgKs~CO!-sDB;H{XrXNxMm!wek80VbB$& z40U2qmfv_O8E%>BUpK&v=IRf_-4U$gGSM>;Oc{g740^G}@{6*%F^a4iQEhtD>(;~L z7aGcXhK?q5uI4&LUjB(c!JBg66b5-*+f6V-IyXXVa>bcrWG^3&4MS@GDsw_;LSOmkQfVA({z_+_ieS^-=U0jt`uspFvtx^co z>%@8*F`KCoxy&D~1kLI3>yGZ)BMKs;Z=AN;`b#?uciI z)GH(@!`@(LEg!e_S5gKCBxSt%yuh-@#RjioOAn{}_He@KoEam1&cYvVLsZ=9o|qa5 zlEy}4&05iq@}HD1E&r9>WaT0zuTiB-L*fZciT5gvgiZGvJdRC&t>u|FJ#p$BCDRI? zOuny{cNIX|O7W?#YrJP8t+;4LUUnQ_V)49`3v;iXiZaHdh)f^3kkE2JdBAO#oy!vZ zLtzC*p&MPY)j~?um^bknJz(&?j7pllaz+Pfq+-O+lZ)i0MZ8@}Xqd%#fH zkiJdRiAuhKSV9)V&H5pW{Aj&43zE~w6OO;7o$RaK6a8MN^~8Mp)yJh(I|NQ+!gnG; zjrlr)0d7_&Lz73(Jda75ws4JN>*lBpy_Jz-71zo=dfVa3gz!?vyH@pQY=T@*yEj#7 zd+S=Ybyr3_19m6_C)fMw(TiM;e5b1YvOPEE4TJ*pzkBst1$z`uF8WU*AU}yNy`Mjt zO3)f8q+{78GRxXbJ$-gXV<7pm$aZ@GH&qFc_K7{mu-k4oYS*>;~e`+2TxFSecD3HY1&4ALw=Ev<1jaU zrS2I$&+J3^5dPCS1nd|>)DbP*I90||{chealFW-ihL*1!owipWQmSV%NeFx+5i1PK zJY+1PnW>vzHE^uyA`9(X=c%u8TB^0n?&{m_3ujC)Jk#fT z;=)w*ZgmH>{?{8bPg-BnUI?D+FnbXsMRr&b?|xLd3G+z2$YX^dp#{jfgX*W6*o&2Z zCuPWcjN9y3sN}X*gcS4BKlWTE)4LNnLhoNNZr;UDIj*}_XVw&LIN=%ooC-g`DaK#V zuU#~s$>e1lw|eWy_?1Y-_aDCC6domO6^PHirm2vRzgGm%<{|Y4vGB)G)my?6&&dch zUPIt>I<1#c-=vYS4CHD;KZ-kA0A3q~K53ziWCw*+$4}hOYcu9H=-lS2vNwhT`-NP4 zfOuT*@+uOExSkRvUigT{t7pf3jR&i~UhF53kz(<1BjpP}Cc07tSoW3|X`38$L{luFsy)9ePPl>Gs}o^8yRIQ^}}q^ierJq!Hw(xB;!Zv5hPF zb095QtY~T07L|OPHC{VG660l2jk#C6bRRY|5>*AyXV9RK_waRao zb=*_89b8(!W_7aGff2gA7Cw7trn>Kxk2DkJtXPpdHqL~K?S*OtTR&XhTj^l5@Q{qf zI&MJJ35j5vQEPriCF?A*C4DLc6?8oD$k7v|QnmaAU|MCgEF`Q-&|^vbLRr^7Y~UwG z#;G%SZ6te=#@1raqHPN?Pl{XmSfe&f2WBmLpEXK%@tr+)A7wi`c$!1DFwJVvb9~Gr z#h1RDpVL@=4AH$s61`jai5*T#Fm7<*&2qEd6Ap%CnZCcQdC^t z>aqNKobc6shXzkj#Jt@8VsMs!C>4tuQP4lHJ5SMd&|}&=%eP*dUd1?Az%cq42S3bO zal-~^n+WQy&~z@UmcI>58gJ<9dMmOglwfNg@@J$H3DB`2nSiImZ zQkUJnTOu!#RVk_dtKgITw(|M{d}0B01Rpd!~&SIhW+{&xyTkT{2v zZZ*3`QqROuD1M8p zo+uPc3)E5AH>FUO(3Xb`RiWei_w4Bw5&o#cmJFnPig=lErf!H|af z_bCly4M7~3oKsXK*};j8-&7PW8t77$V+mixo(WN&Vc3VpkR`MRm_7r<%A2-Y4w?Nv zDR@P7iITr#?frwA-6NkB+*uoc-eZ20l(4_J?_XuFW--^V$>YBbD#NTR5I#D3jTs>EMau$Lw5D)T5T;qs=MuFcs zdHr4c^xJnRIR|3=MfU9%%vxGGS}z4(Rc94%4V^zHvQ0O%(F5TZ8{Cx7#Ec9CeJqIJ ztL|SU8_X)g4ofY+5f`Q8Vxqxbe+jGgb$-dm6vXwkDT}>~rqcr**ZcS!WKOO8z06p` zBYSqgtUq7od*r}7zQnedwefgYIb6JlZM=3&oakKE@Qcio8mm78zwh()JU;3*e&d7U zyrIr>L07|`3x6&Q98j*?5j3}wxQvX|&|#UcOx*&B&4S(_QVN8%vOXdw;Nfv`;Pc}w z*IGP<4FBhkmxkO!)h19LwGXxI69;v4TpvR~!iG;=p(^y{^`D`hrJ+$~_P9osH>Gkl zR@5X(=tYgcrT2LshW1{~1)F{x9~~D?50R?!u=8o^!z1@g_ci>dfWMYvpPHv($V&4J zNx{3z>wy&1zDV=Wo`2gBkn6tvaFyIsDLQ)m(!RvL;!4 zPUlmO8Z{k7yYIFg>;`~Nr@x~iXpei#30{7`Lv z)7wn{SS_!*dsb;7^K~L>2M*2wXV7+n&(fowNS&4_(u1LjiNz=`w$|+&p1RRV zHR3#hlc^yevXjtklwYBm{>ZPxmRLtbh*s6cnhh7{sz;FJJx3JxdfiXq7TDtA? zeU=XYu@DtQjf&^{MJrZw_bmybx(t7_E!zKf1v z<2%FOH^EGoIl_9YI8&vJitIg~PZ<&isZRRy6nHO=3SJ|2*^#Bvt9U%d=8kI5Kx5q0 z3Q*%~*iR);i>JQh-YPs1CU`G6Xc#w1$IjHdtZuvv?@jG$Fa8r(!*xbE{72Rz%L-zb zifZmzj~sNMhqsoFNKRuzV~h;amuHd>Vv?4q(m6E2g4Jieo=Ip{CE)X`!qKYeB}5PUvv6fj^x7U0pq>FghLbdFKitR*qT`N*rEZ(H^UY$U zG*AJMhw%0$Jjg=1CrFmXPCsM;&lVHAiuZM~NTXs>g$8+@M{@4=a2nrOQJnWmeEc;P zJ{p~p<@<^pFVAP%m6(zbpN2Yg5xVQ=_fDdxr-mv{A!P z`-wJkY-nkhq&{~42kehKfdk~M6lT6#I}#WwQ_51O6kAq${O+ckH?=mJGfVDFL{`D7 z>cp^En9f-wuHw60BXyAY7@&36ICJeUdH>4olzGiwubc;HpAMs$JRa=%4qNw~wHcC5 zeGk1lS1a8W{XEw~13&u7q#}3SOXo;T-t`-OQWyq;QE47|YF`$ArR1ZT%9$>ttZS~- z-Au5?h~Sx<8yk!>$|gkZusX$TBW!z3DFy8~RCR)2UwC(ga&5hZ(Koz-wu{n?vG~Ec zypN5RXln>t8lrZ6Uh!K`c~4vFa}cj(dFe4u^*f~kEG`xQhAPxg*KsZ}j$K6QBqs#Y)YNwY{usW=8H z6_~$LD!g@7(Em)S03*yUK40ha2N+6|`rKv$ta8k;GTTe&yycRHcWrgA^G}|;{)PQ@ z+<+}08L!|X1W3hOb3Xk1a{KoptIe^0{T)?8eYK#jk*30jZ>Ug4RFwS%zM}E>wm5I# zr`@A$A7N$imais})vDZPa&vr;S(L76iPFf&AWIbs0`Px z&z9yd>*l9j@ap;34wzbHNUiuRU(YXJJVtRgq|2SgV#~n?cCiK|iaPBYImuxCOeFB6ptnnUxviV6HJ`7_hC3=RxxhyKBL`jnwBV zp9TK5V4O**c;F5|OevGn$--Qg7t$s;qC$u~9-lVE3 z=iqml?fSD}R)=>6RMhewYrwhuiTP3ie8*6u3oqyitCVw z2Jq4cm0zMXK0BoNf**d7_bAuoMSqSSa<}GlqC-qK&N^>*IEf!4BeLP;$N;z1^pg3R zkUHtNAHzrG+$Aq`D%Zl0t*&90h9tS#>vYB^@1i_b?Dz9imjqkRRv;qktVj0?1R$8A zAGogZ=#waMl`+TZ)+LeX7m zD*8z0dg{bP0gUEiq)9!~Q9)l=4_niDBpg!5kZ5ZK;xq167gDKcT*JlHh6af1H!y}u z1?uJ{C1oCZDsc_{D$?DQfip2`^#It95B4o6DA{qyJ>=fpmy`_o@*Yc;zznc=jTV3< zsTc~dRy%6R<1Dt}BoXN2O0y(QcVAbdR4pbA%+6$M^k>P@s!@&#nR;B$anad<(^9<9 z#!wJ2_E+qHFvILp_{PW!`t(V3;^`Il^n(So63esqpyp%goOo{}4-H#vs%-1eW~e7s zSd7aYVFoYNSoz&TP3{A?hY;$l&x5k|r5}gP)s=^AG?np`iC z%iHc|9x8y@)aHY$~FrQ%%c>q^yY38Sv@)$YaNeqUv^qsLp4-)mZ9(dO#w0=yaLeazQa!a``xAcVpa z%tW{ClT_T9rNZ7|P9he&pbbg=n_i;D4S-PB{~Q5MUYzuVo8ZW%3GhXaSqpR_Xu9Bl}`F~msZM>ofS>^3!qvJT2tOE`B4vb6px^TV=EuKB)*_X%(8&DQ-3KR z*3YXJL&qNch^qc>CZ(=+pYGOixR~hYW=f;d6=Fi(4s{HJwzuzoPOK$}_7j2%0Wro{ zv<|dBZ_fHiDl$Z^lB!iQYdPJDOq1{QoR*8Ie@BOd{}LtwvNjjk$c$Vi=7+ zsMLs48=MjrmN3q-S3UN^L9zHt-5n(TDUHs z2l`dU@Ydt}W8TsXB1y`aSvp9?vR@hMaKI@C3b};3H zzE1j8DwOl)_*)=9DK1BwzZFMWf@0R@<@tk~0}nTH-V2e~O1=KyjqKkY?L@WTi;3*I zF$p>hN%?v`%ZNH+VXA8d;5pT==JkHGp}&AdSFx^q3&YX_5~_DjM6DzhU$@V6r9(%- z3XwEyUq_3|aiPlXm-KyV#zysni6jJA0_Z>p?0*dVJnOaKi_8A}?+q?7n^136@4cVP zbpTBjGTGLh^`Z0Xanu*^oYt!|hn19;m1zy%V`k21`#Wd%6F7nZ^Y(meX4|e}CrTt# zAVVPZ(761xMnEu2fm}Tt3%`gg$9=7&Z{%WHZTN}gOC-8vK@nVs zv{%IL=~rJHJyV@9v!;^&mu5dwpKTio)Pv%Jq9nQcuU#jPcDhV;?{0Zy--R2ABt zgTPb8jFMUasCj*ZPeU0SS_=Hd)`8RSh3=}Gm}EVp^zQ~sj(SlzM%@u~fQ|wz9`8W( zz}x6tmB?aBBMaSC2JPn%RlQE=-OM`8cMSqbg9 z*hMO0&eAsi(Ua6_wU1BAk0D%tCx!GAC1$Ut<}C^PhrJOnN(^O_MlX88GKL?}DjH8Y z7$5e$JOZnEKT=6d_}n$+`*gOCbYFX)zU!-cjzrn3MVG3LoYo}sPKy&ql(4~Y-`%14 zvm)~^yIeGQNa=1~pT4(Q(h)U>79_p4@%lrjDe)s%)35a*iW+OGH+gLCLPZa@Zh~Yh zfQF}TVObExHtS_XSpWA#9~;dYUcvA?-6Kh_s>Po4$Ef$>(K?5yQ96|M=F!taU-$Mm zD(no3f`v+5o__3~PsLhkU2blZ^EHTmMxVT>uCwr~s&o)1GHVlkiTOWtV@O@60b@d2 z5S&4-`r|g)F>zKj@sh_St~x2qk5kkHukN>d*WM@}xZC~=P;dAFb5&ox&zu}AWvLbW z+xuKjzD~upE9DyQ3IO;P-Eb0&Gq_K6(78gg7@byX5xelXEF$?B0gLj z_4mru#{2}LcpfwU0rt6}_avq( z1JycNmvZ~glsg8@Y5&5Zni2-*&;&xv^3D7;RzT0H&EjQJ6F38 zXAgoa&{_%5ZvVIQ$p2{o#}jV)9C5LUkZH>wH!Hc( z5+8Qsb{`B^4Vwqogi(8TM2()wkEhZJUIjS^&q4dq4Z?{o3!UA!SKp=6Q{#8_iAdVw zcn9G=`gQ*=COEW>T(xd-Q##|(zZCA zTcZQ#Gp|x4ThmNZthcM%M^w?{SQkCaJ`p>Rfm@fV5X`bs`n?Ssm>M+ku)7_bDJ|b3 z7~IU5vc4V9)KPJ-jUxE%S|mvfjBM*F*o_~_rUY1L7)Ix{-kjYWz9n2a7JyUY@7DD< zP~J6Cv>R-@8D*GKFFF3lsxa5{c1Ctj?GbJtS_m~(5M|eht+^%pbgPOytMK}hFK6n1 z%Bk_!>CS@b31dw-d&x@e6bh;c(ouF|- zgWbqj^E^@^^=>+Qnn^l6q1aDQty$$-7mD9P+9@((Q4=9U1vdHx(^k5L*GIRFzs+a< zwX^o*ujWzavr8F{+^grHQFs{7PN?cTB_~Vya_b%*XrqG!y4O_UkR>OAm)~ z2$$6cQb6RCUFfy!EfUj8g*#oPFRZd>2>VUJH8TnOxOHJwwSG{oV$63VqdI>&$xI`+ zBiX7X(8&sOx#nVgMb)XLk)ny`-R#nH9jk6iAG@391V&4rA6WI>q;(*rbGS@AL74 zs+BJ@`KDT3_qt8B%55Bbm#W97z&JeVqht1BZ7>&B@$kW(Hoad08@m5V147_kAjw4c z$6Q}XT~6`UR>tZ7jCPn|_3EG{_vfk@H>#aC$j>1RwGnCb75nAHplKMsmn!Vh?d4%A z*{k0+o4Ou664)B^eZuD4y50iCm|r;cBf5$=*GwNQP=w;cunPA;Lgt)X{e>Lt<7?jrt}aJ=KDT6kNRueu@%}13+f5H#RpzxH(Tzf0*Q(Sm)3baJ zT3wJ;4qsai6{x!pT&@H^CcbXnm|=g|)zT*71F=JG+1pz9k86_u!Dab{;i`0uu+y`a z6HgLmCipe*=(5!g-n1Vc6kL(Z1d`_quU4&*dux^cIH`SPd|dDF;S_C*5pF8ZYxk$E zmfFv2d%_-Zk>D%Z`+3xd6wMM5;#FFTY53u@2X#=l`q_99xP92LxKq8&o z51cnH=?hOU_`U-R-f6G4i@Lu;*?J*(S-z{1xJSdfWgLR>v^VWi1^e2}$t%hbb+8>x z(}G#j;&(bziSF0NG^vjfxFo5E%>*3P?OU^v=Ja^wY9497PUQd8bjV?-k=gtq~uyzPWIQpB!|Q z?fkTRv32Wh%a$DPV*}QNCXQj^P4aE(SHj9vM6>wQ2!gvsD7`an^6MfZCg36#GyoZarIgn*+n&V%HyoH>1xYLxGsF+t-oiGPdN^= zV)O7B5)dl!Kj)FiuU)4-ewW_Kf z^ISwsZDOJn4dGyUc5myHe`+X2>;4yhKJa${q5p+SZ-GW~?Z0MH^xeCiezxCJjp~1y zhCo3tl|YafC9#uc_Q#{`j}rTT{qS}@IT*?6N&U_-{UM(CkE+{${qSlY{N?U%H?ZKbN`St5Nkq{n;3RxW=718Q`3%{w1^`#w$*4tE7Fr2`d6KZX ztQ3Kqw8sfdgGF?Ezz`WY$sg`qFZwsIjN{C9tmbHoDAJGPVX4!j? zX)p+O-XD+$VQUA?CjQ2^xuKPyOPohx9v{}82Kz=w<}xT^z^#XVZu+-z!!+zZ(I381 z|I|wT=@$-6u39NQyx{F90g0!8{7luk4y1;;PvoOH$clKV#EP1qfE`Yz&&YBu{~thq zSt~^53?g6d8(VN29E>Qga%UlQLV^Vln_cLdc8^N6K`6&urf>*8W`Fgg zzt9(G_61h6a3c9d4Z_4SM*10ycubWkAVElPcm*$k?5g--5K|FiZ9rN}ZiU%=e|ps#dTlGInckkXpTUJQ6!&fwMnm7nw4Z%SKx(~76pYkvjQa8vgJY=r z7O+MTle;y1i=_jx;J#lU0f_uyfVtI0<`)W->1e>V4Mb4-a26-Q;+q=~T4^4&xU+@$ zz7Tibt;Nctq&GZ$jqor;PW8obj!nM1XF;|NpVGF)TbEVWtlExqX4e`2@0RDqBM6b6 z4IB50_sN$x=cqkcF2p^`-QS)q>68^29E9*R-uP?)mlY#1+Ps#(QXvV2*OKLshqoqz z?|6TmiV28&$LPEjMYbAb2OveXU0juzkzq#cA+uzbk0YVCm=e`rsPBtZ`2kn)4WhG8 zYT^o&A7zn@ql1Kw#luo*4mj$47g4;5HJ~YjN926_AzmP83R)FSBf8wdNQ^4%9adUz zejVA;9!&V#n&_`7BkJCH~iA>koTWtR30ZgW7ah zmV*d(hG;re+qt(4Xir1Ws3lb40haB+opxHwVVZFRY!-~uQ0grpVJZ~?9$b{q&!jqf zbVWdD;Wc{m0|X1b0z2rA$oeM|eQwGe#3qUb{m(f`#SccILXhn_4?UQT?=9dVeH}=R zZ_0G10%?CK`8<sa+L3Y^e zbCWfQ%P`HM-GK5_)w=58tjX~40#kWTyfbX8d5>GRBJc7MTHLydCG_@!h^a$TUVrR8 z|KUOYwa3SvAfMu|<)pM|=B1aogXxTbI9WH8k37=+Q2Btp@tx_fS7eFW{0&XzA6>s=B>f+J zssHi&`gMm;s^3Uc6h|yhLy!<7_sNGpI1|CzxsggfRK+H&q`R5i9FpSQ&D zu(QLar4gv#rD`Z$Mf|T??7xO>{qv8lUN}N$n3V$iJkj9cqsM^^AlRxiO>~Vh9ocOf z_Q@sDBm2-d-rh?-urM!x251Sg7a$qLk~2A0E&B2QfWo?6CccBX!*(DuV2o-SUJf0- z9r)KKv9qvd7aOrfM2Y7Ksd6%z@c4>@y#>-6{)JC!Y8kCy8!iTN*v?gGQk{FE5vpoH zLtg-8&lPXg#2PAu5&Q8kMr_GgpyU969T&jH;|gX@g{FxdXN zgW|&6b-NKLUO)vLBc$U=AO&n^x7OJ+h5}4-`R5E-oJp#~C5#zQ5ul9*5i4lGNGsV! z_%7_4_q9IH!s%`U2&x3ejeh9OwB<0sr#}n_!;?_!1walzT=yXmO}M_z@?Y5c|NHv# zy9AhWBDg7&)iiL`ZQEaP{^^6#WCiL*am**~4OdK1)wyrr2%QmPKCviXV2^Cvo9D!$GP?5U^!sit5J&a06F2b2f23C*< zqxv)usvVe~pAGxu!dSEZi_C5Ng+uCB`AEWUu>Kl0vyIQMa=hXc4~;FPeV zciz;I&O+R!D!+8ma)p-3+kf(9A5vcOEq8P#Sdi z)9t4^smZ!}$xr7X-sqoS)&DQQuptDu^9Q#IU1@Q6&esf^mw*#2iFZKfOML52AO{=Ni6JYK1@%EbfE&qY1HWu&y`!@eB@O1I_ z1)n<>+!2l1#dTY99&==>ne{u+9Qm4qGdD%ew0Z`--a+LjaE@R?izwEViAV5-Ehy1y zmuv)ewstLRo_med(>g zFlG9=M;rZ8H(hYzjx?y+4cx${S~(xsf>DtX=2#n;8fg^`T$d@Fy5)L&z3ob-@6(_C zDgqvu|LJ4I>sc0siw>7Q1~xw5g8HLBe*jxvN++*tG@zb9xa)(A&+^l^jtfaOaeJ(p zj_-metff$)G74 zfwOkIK*J<;^=*=Apv|*$xYsJHa{iaC08aT&-U7V6c>#ZNCYN_$#0)Jh;EldMlfJLn ze6DEqx?QUdyUN!`=E-doNz3C2k4R+Q4!p?8VslgI`g5Q$IPi_6`Jg?}(>4M}V_r^O zcA}l>DscKCYJErB@i^dp8|mw01CLp~*>HH0UBcfSU?J{z$^tmhJK2Eojkxevb`SByDz!y{vE z0*~v7dkvbqXjc;NN&zlP`Of7BJ=*OX=x8_KF*PRgy@#$yWv_X7SVJw*GjrL@G_UlN zciazV0*@j6_Kqn~#TwWioLmArT~yk>u4YqyW8vdtJAspml}lHG?#=j^Zj^Jwpd45^ z-^kk(3!G1!tGPgRBFYJHe}OH(+jD_CsP^TqUbCqSe3#UzjE6TK>Rl8$u%>B0@F2KO zrMtkJvF2}i3hZN)J<}6}9tHQVftl|^eUId|J3fv*p8|yz_b=S?*@pYIs!w%+<;k6` zlkTnvTztvX=sR$pDq6n(^vOk)M%+P5NGnV_9NdLpSaio;r~;i+rY8WJu6L1SU%DW` zu)_p+GV9saZl#HyQ45bhy1A&K6gWV-1K901=rnWHi&2p)x!~9t6d9q`S@;>WUs^ra zWn#yEVD)?iG$G_!sqyfN@GD89l#baZnL$C*m!3ae{qN`V-M~Gq)}Nj&UD#7~e8Vr- z{eeu)<;vpiFaJeLUyepPxa`6^VC`!+_pI%Y`nPutvlb-^G(4>T&T-3|<=`QaxWm~M zM$*#W*4EOBW?~z8p0LCn&^yC_YMoBs8Y78MH*(WTzjTIH{M@&F`{(ojY%Fv3#?9~j zFZy}!{{801AAkIF=f~ftEE$-K_;LFXo&2u}kx{zx52f{r1~4S;1#L#~&}d{nl*u*=3e8eEoIV_rHC8Bz1Pj zv`v>^n*9E|uQOY8eQVkGnhQI!iVP&Sd<rovI@{fX`K$)t;F(O^ELQJ46wEMO@ zra9O|8eJT2Ol6S78jhIi7eqPS2-VG#$LcA}BrOCCLZ%cSOmnb_j0QNC)HNF5Sjx%K z6pp1RAiqeNprFdcz`)Go>EalIEn}i)_R+wnYT%CsI5Y$XQw92iDfPS5o4@?M-M~XK O7(8A5T-G@yGywpUDliEE diff --git a/src/main/java/org/hl7/davinci/priorauth/App.java b/src/main/java/org/hl7/davinci/priorauth/App.java index 1af6379b..12107289 100644 --- a/src/main/java/org/hl7/davinci/priorauth/App.java +++ b/src/main/java/org/hl7/davinci/priorauth/App.java @@ -44,12 +44,13 @@ public static void main(String[] args) { (System.getenv("debug") != null && System.getenv("debug").equalsIgnoreCase("true"))) { debugMode = true; } + // Set the DB initializeAppDB(); + // Assemble the microservice SpringApplication server = new SpringApplication(App.class); - server.run(args); - + server.run(); } public static void initializeAppDB() { diff --git a/src/main/java/org/hl7/davinci/priorauth/Database.java b/src/main/java/org/hl7/davinci/priorauth/Database.java index 5aae74ef..acd01a87 100644 --- a/src/main/java/org/hl7/davinci/priorauth/Database.java +++ b/src/main/java/org/hl7/davinci/priorauth/Database.java @@ -60,7 +60,7 @@ public String value() { // (so that we don't lose everything between a connection closing and the next // being opened) private static final String JDBC_TYPE = "jdbc:h2:"; - private static final String JDBC_FILE = "databaseData/database"; + private static final String JDBC_FILE = "database"; private static final String JDBC_OPTIONS = ";DB_CLOSE_DELAY=-1"; private String JDBC_STRING; @@ -80,7 +80,6 @@ private Connection getConnection() throws SQLException { public Database() { this("./"); - } public Database(String relativePath) { diff --git a/src/main/java/org/hl7/davinci/priorauth/PALogger.java b/src/main/java/org/hl7/davinci/priorauth/PALogger.java index e15dceb3..8554fbfd 100644 --- a/src/main/java/org/hl7/davinci/priorauth/PALogger.java +++ b/src/main/java/org/hl7/davinci/priorauth/PALogger.java @@ -16,7 +16,7 @@ public class PALogger { private static PALogger singletonPALogger; private Logger logger; - private static String LOG_FILE = "logs/priorauth.log"; + private static String LOG_FILE = "priorauth.log"; private PALogger() { this.logger = Logger.getLogger("PriorAuth"); diff --git a/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java b/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java index 0e7c58f4..08db41fc 100644 --- a/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java +++ b/src/main/java/org/hl7/davinci/priorauth/endpoint/Metadata.java @@ -102,11 +102,8 @@ private CapabilityStatement buildCapabilityStatement() { CapabilityStatementRestSecurityComponent security = new CapabilityStatementRestSecurityComponent(); security.setCors(true); Extension oauthUris = new Extension("http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris"); - String tokenUriBase = "https://davinci-prior-auth.logicahealth.org"; - if (System.getenv("TOKEN_BASE_URI") != null && !System.getenv("TOKEN_BASE_URI").isBlank()) { - tokenUriBase = System.getenv("TOKEN_BASE_URI"); - } - Extension tokenUri = new Extension("token", new UriType(tokenUriBase + "/fhir/auth/token")); + // Extension tokenUri = new Extension("token", new UriType("https://localhost:9000/fhir/auth/token")); + Extension tokenUri = new Extension("token", new UriType("https://davinci-prior-auth.logicahealth.org/fhir/auth/token")); oauthUris.addExtension(tokenUri); security.addExtension(oauthUris); rest.setSecurity(security); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index de90521e..ac91e43d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,4 +1,4 @@ -server.port=9015 +server.port=9000 server.servlet.contextPath= /fhir # server.ssl.key-store=pas_keystore.p12 # server.ssl.key-store-password=password