From 5b0669acad32fa3f8ac306b5107e51a724811b37 Mon Sep 17 00:00:00 2001 From: GalT <39020298+tatarco@users.noreply.github.com> Date: Wed, 27 Nov 2024 23:14:41 +0100 Subject: [PATCH 1/9] fix(api): fixed validation done in update command --- .../workflows-v2/workflow.controller.e2e.ts | 19 ++++++++++++++++ .../create-workflow.command.ts | 22 +++++++++---------- .../src/usecases/workflow/index.ts | 3 +-- .../workflow/update-workflow/index.ts | 3 +++ .../update-workflow.command.ts | 7 ++---- .../upsert-validation-constants.ts | 4 ++++ 6 files changed, 40 insertions(+), 18 deletions(-) create mode 100644 libs/application-generic/src/usecases/workflow/update-workflow/index.ts create mode 100644 libs/application-generic/src/usecases/workflow/update-workflow/upsert-validation-constants.ts diff --git a/apps/api/src/app/workflows-v2/workflow.controller.e2e.ts b/apps/api/src/app/workflows-v2/workflow.controller.e2e.ts index 5ed9e099fcc..c67ba184a5e 100644 --- a/apps/api/src/app/workflows-v2/workflow.controller.e2e.ts +++ b/apps/api/src/app/workflows-v2/workflow.controller.e2e.ts @@ -113,6 +113,25 @@ describe('Workflow Controller E2E API Testing', () => { expect(res.isSuccessResult()).to.be.false; expect(res.error?.responseText).to.include('description must be shorter than or equal to 256 characters'); }); + it('UPDATE: should respond with 400 when description is too long', async () => { + const createWorkflowDto: CreateWorkflowDto = buildCreateWorkflowDto('nameSuffix'); + + const res = await workflowsClient.createWorkflow(createWorkflowDto); + expect(res.isSuccessResult()).to.be.true; + if (res.isSuccessResult()) { + const updateWorkflowDto = { + ...buildUpdateRequest(res.value), + description: Array.from({ length: 260 }).join('X'), + }; + const updateResult = await workflowsClient.updateWorkflow(res.value?._id, updateWorkflowDto); + expect(updateResult.isSuccessResult(), JSON.stringify(updateResult.value)).to.be.false; + if (!updateResult.isSuccessResult()) { + expect(updateResult.error?.responseText).to.include( + 'description must be shorter than or equal to 256 characters' + ); + } + } + }); it('should respond with 400 when a tag is too long', async () => { const createWorkflowDto: CreateWorkflowDto = buildCreateWorkflowDto('nameSuffix', { diff --git a/libs/application-generic/src/usecases/create-workflow/create-workflow.command.ts b/libs/application-generic/src/usecases/create-workflow/create-workflow.command.ts index 4d30515b0bd..8f5eb79f2d8 100644 --- a/libs/application-generic/src/usecases/create-workflow/create-workflow.command.ts +++ b/libs/application-generic/src/usecases/create-workflow/create-workflow.command.ts @@ -17,32 +17,32 @@ import { BuilderFieldType, BuilderGroupValues, ChannelCTATypeEnum, + ContentIssue as ContentIssueDto, FilterParts, IMessageAction, INotificationGroup, IStepVariant, - StepIssuesDto, - StepIssue as StepIssueDto, - ContentIssue as ContentIssueDto, IWorkflowStepMetadata, JSONSchemaDto, NotificationTemplateCustomData, - WorkflowOriginEnum, - WorkflowTypeEnum, - StepIssueEnum, StepContentIssueEnum, StepCreateAndUpdateKeys, + StepIssue as StepIssueDto, + StepIssueEnum, + StepIssuesDto, + WorkflowOriginEnum, WorkflowStatusEnum, + WorkflowTypeEnum, } from '@novu/shared'; import { Type } from 'class-transformer'; import { EnvironmentWithUserCommand } from '../../commands'; import { PreferencesRequired } from '../upsert-preferences'; - -export const MAX_TAG_ELEMENTS = 16; -export const MAX_TAG_LENGTH = 32; -export const MAX_NAME_LENGTH = 64; -export const MAX_DESCRIPTION_LENGTH = 256; +import { + MAX_DESCRIPTION_LENGTH, + MAX_NAME_LENGTH, + MAX_TAG_LENGTH, +} from '../workflow'; export class CreateWorkflowCommand extends EnvironmentWithUserCommand { @IsDefined() diff --git a/libs/application-generic/src/usecases/workflow/index.ts b/libs/application-generic/src/usecases/workflow/index.ts index 3084619f907..5be92e68ce9 100644 --- a/libs/application-generic/src/usecases/workflow/index.ts +++ b/libs/application-generic/src/usecases/workflow/index.ts @@ -1,5 +1,4 @@ -export * from './update-workflow/update-workflow.usecase'; -export * from './update-workflow/update-workflow.command'; +export * from './update-workflow'; export * from './delete-workflow/delete-workflow.usecase'; export * from './delete-workflow/delete-workflow.command'; export * from './get-workflow-by-ids/get-workflow-by-ids.usecase'; diff --git a/libs/application-generic/src/usecases/workflow/update-workflow/index.ts b/libs/application-generic/src/usecases/workflow/update-workflow/index.ts new file mode 100644 index 00000000000..35417311611 --- /dev/null +++ b/libs/application-generic/src/usecases/workflow/update-workflow/index.ts @@ -0,0 +1,3 @@ +export * from './upsert-validation-constants'; +export * from './update-workflow.command'; +export * from './update-workflow.usecase'; diff --git a/libs/application-generic/src/usecases/workflow/update-workflow/update-workflow.command.ts b/libs/application-generic/src/usecases/workflow/update-workflow/update-workflow.command.ts index afff4658e89..894835e48d2 100644 --- a/libs/application-generic/src/usecases/workflow/update-workflow/update-workflow.command.ts +++ b/libs/application-generic/src/usecases/workflow/update-workflow/update-workflow.command.ts @@ -24,14 +24,11 @@ import { Type } from 'class-transformer'; import { EnvironmentWithUserCommand } from '../../../commands'; import { PreferencesRequired } from '../../upsert-preferences'; import { - ContentIssue, - IStepControl, MAX_DESCRIPTION_LENGTH, MAX_NAME_LENGTH, - MAX_TAG_ELEMENTS, MAX_TAG_LENGTH, - NotificationStep, -} from '../..'; +} from './upsert-validation-constants'; +import { ContentIssue, IStepControl, NotificationStep } from '../..'; export class UpdateWorkflowCommand extends EnvironmentWithUserCommand { @IsDefined() diff --git a/libs/application-generic/src/usecases/workflow/update-workflow/upsert-validation-constants.ts b/libs/application-generic/src/usecases/workflow/update-workflow/upsert-validation-constants.ts new file mode 100644 index 00000000000..73d6bedf5f3 --- /dev/null +++ b/libs/application-generic/src/usecases/workflow/update-workflow/upsert-validation-constants.ts @@ -0,0 +1,4 @@ +export const MAX_TAG_ELEMENTS = 16; +export const MAX_TAG_LENGTH = 32; +export const MAX_NAME_LENGTH = 64; +export const MAX_DESCRIPTION_LENGTH = 256; From cdd8b4954a1383ac2045de26d5cd210bfe511f63 Mon Sep 17 00:00:00 2001 From: GalT <39020298+tatarco@users.noreply.github.com> Date: Wed, 27 Nov 2024 23:18:22 +0100 Subject: [PATCH 2/9] fix(api): fixed validation done in update command --- apps/api/src/app/workflows-v2/workflow.controller.e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/app/workflows-v2/workflow.controller.e2e.ts b/apps/api/src/app/workflows-v2/workflow.controller.e2e.ts index c67ba184a5e..83de5476f4d 100644 --- a/apps/api/src/app/workflows-v2/workflow.controller.e2e.ts +++ b/apps/api/src/app/workflows-v2/workflow.controller.e2e.ts @@ -113,7 +113,7 @@ describe('Workflow Controller E2E API Testing', () => { expect(res.isSuccessResult()).to.be.false; expect(res.error?.responseText).to.include('description must be shorter than or equal to 256 characters'); }); - it('UPDATE: should respond with 400 when description is too long', async () => { + it('should respond with 400 when description is too long on an update call', async () => { const createWorkflowDto: CreateWorkflowDto = buildCreateWorkflowDto('nameSuffix'); const res = await workflowsClient.createWorkflow(createWorkflowDto); From fd76093290405fc261f53d5573100c18158f759d Mon Sep 17 00:00:00 2001 From: Richard Fontein <32132657+rifont@users.noreply.github.com> Date: Wed, 27 Nov 2024 12:39:56 +0200 Subject: [PATCH 3/9] chore(root): Release version `2.1.0` for all applications (#7142) --- apps/api/package.json | 7 ++- apps/dashboard/package.json | 7 ++- apps/inbound-mail/package.json | 7 ++- apps/web/package.json | 7 ++- apps/webhook/package.json | 7 ++- apps/widget/package.json | 7 ++- apps/worker/package.json | 7 ++- apps/ws/package.json | 7 ++- lerna.json | 2 +- nx.json | 60 +++++++++++++------ package.json | 16 ++--- packages/client/package.json | 2 +- packages/framework/package.json | 2 +- packages/headless/package.json | 2 +- packages/js/package.json | 2 +- packages/nextjs/package.json | 2 +- packages/node/package.json | 2 +- .../notification-center-angular/package.json | 2 +- packages/notification-center-vue/package.json | 2 +- packages/novu/package.json | 2 +- packages/providers/package.json | 2 +- packages/react/package.json | 2 +- packages/shared/package.json | 2 +- packages/stateless/package.json | 2 +- pnpm-lock.yaml | 29 +++++---- scripts/release.mjs | 16 ++++- 26 files changed, 143 insertions(+), 62 deletions(-) diff --git a/apps/api/package.json b/apps/api/package.json index 2d40cbeaaee..514f65faa6b 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -1,6 +1,6 @@ { "name": "@novu/api", - "version": "2.0.9", + "version": "2.1.0", "description": "description", "author": "", "private": "true", @@ -132,5 +132,10 @@ "@novu/ee-billing": "workspace:*", "@novu/ee-shared-services": "workspace:*", "@novu/ee-translation": "workspace:*" + }, + "nx": { + "tags": [ + "type:app" + ] } } diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index 6855a3be320..cc8f78c7a9c 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -1,7 +1,7 @@ { "name": "@novu/dashboard", "private": true, - "version": "0.0.6", + "version": "2.1.0", "type": "module", "scripts": { "start": "vite", @@ -116,5 +116,10 @@ }, "peerDependencies": { "@novu/web": "workspace:*" + }, + "nx": { + "tags": [ + "type:app" + ] } } diff --git a/apps/inbound-mail/package.json b/apps/inbound-mail/package.json index 96b3fe96469..6233289ef36 100644 --- a/apps/inbound-mail/package.json +++ b/apps/inbound-mail/package.json @@ -1,6 +1,6 @@ { "name": "@novu/inbound-mail", - "version": "2.0.6", + "version": "2.1.0", "description": "", "author": "", "private": true, @@ -62,5 +62,10 @@ "ts-node": "~10.9.1", "tsconfig-paths": "~4.1.0", "typescript": "5.6.2" + }, + "nx": { + "tags": [ + "type:app" + ] } } diff --git a/apps/web/package.json b/apps/web/package.json index 996db85eec6..38dfccb4912 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@novu/web", - "version": "2.0.7", + "version": "2.1.0", "private": true, "scripts": { "start": "pnpm panda --watch & cross-env NODE_OPTIONS=--max_old_space_size=8192 DISABLE_ESLINT_PLUGIN=true PORT=4200 react-app-rewired start", @@ -207,5 +207,10 @@ } } ] + }, + "nx": { + "tags": [ + "type:app" + ] } } diff --git a/apps/webhook/package.json b/apps/webhook/package.json index 57c5f18f014..4e4cb169ac4 100644 --- a/apps/webhook/package.json +++ b/apps/webhook/package.json @@ -1,6 +1,6 @@ { "name": "@novu/webhook", - "version": "2.0.6", + "version": "2.1.0", "description": "", "author": "", "private": true, @@ -79,5 +79,10 @@ "@nestjs/platform-socket.io", "@nestjs/platform-socket.io/**" ] + }, + "nx": { + "tags": [ + "type:app" + ] } } diff --git a/apps/widget/package.json b/apps/widget/package.json index 4d0cfecf33c..cdd5d6a3b47 100644 --- a/apps/widget/package.json +++ b/apps/widget/package.json @@ -1,6 +1,6 @@ { "name": "@novu/widget", - "version": "2.0.4", + "version": "2.1.0", "private": true, "scripts": { "start": "DISABLE_ESLINT_PLUGIN=true react-app-rewired start", @@ -121,5 +121,10 @@ "**/@babel", "**/@babel/**" ] + }, + "nx": { + "tags": [ + "type:app" + ] } } diff --git a/apps/worker/package.json b/apps/worker/package.json index 2a89ccf88b6..51d66911c9f 100644 --- a/apps/worker/package.json +++ b/apps/worker/package.json @@ -1,6 +1,6 @@ { "name": "@novu/worker", - "version": "2.0.6", + "version": "2.1.0", "description": "description", "author": "", "private": "true", @@ -92,5 +92,10 @@ "@novu/ee-billing": "workspace:*", "@novu/ee-shared-services": "workspace:*", "@novu/ee-translation": "workspace:*" + }, + "nx": { + "tags": [ + "type:app" + ] } } diff --git a/apps/ws/package.json b/apps/ws/package.json index da9d0b8aa44..24dfb66b00a 100644 --- a/apps/ws/package.json +++ b/apps/ws/package.json @@ -1,6 +1,6 @@ { "name": "@novu/ws", - "version": "2.0.6", + "version": "2.1.0", "description": "", "author": "", "private": true, @@ -84,5 +84,10 @@ "@nestjs/platform-socket.io", "@nestjs/platform-socket.io/**" ] + }, + "nx": { + "tags": [ + "type:app" + ] } } diff --git a/lerna.json b/lerna.json index 5fc3035b39e..81c41ba6d76 100644 --- a/lerna.json +++ b/lerna.json @@ -15,5 +15,5 @@ "message": "chore(release): publish - ci skip" } }, - "version": "2.0.1" + "version": "2.1.0" } diff --git a/nx.json b/nx.json index 05c2b8370ab..ebadc5f9821 100644 --- a/nx.json +++ b/nx.json @@ -18,27 +18,51 @@ "extends": "@nx/workspace/presets/npm.json", "release": { "changelog": { - "workspaceChangelog": true, + "workspaceChangelog": false, "projectChangelogs": true }, - "projects": [ - "novu", - "@novu/client", - "@novu/framework", - "@novu/headless", - "@novu/js", - "@novu/react", - "@novu/react-native", - "@novu/nextjs", - "@novu/node", - "@novu/providers", - "@novu/shared", - "@novu/stateless" - ], "projectsRelationship": "independent", - "version": { - "generatorOptions": { - "preserveLocalDependencyProtocols": true + "conventionalCommits": true, + "groups": { + "apps": { + "projects": [ + "@novu/api", + "@novu/dashboard", + "@novu/inbound-mail", + "@novu/web", + "@novu/webhook", + "@novu/widget", + "@novu/worker", + "@novu/ws" + ], + "projectsRelationship": "independent", + "version": { + "generatorOptions": { + "preserveLocalDependencyProtocols": true + } + } + }, + "packages": { + "projects": [ + "novu", + "@novu/client", + "@novu/framework", + "@novu/headless", + "@novu/js", + "@novu/react", + "@novu/react-native", + "@novu/nextjs", + "@novu/node", + "@novu/providers", + "@novu/shared", + "@novu/stateless" + ], + "projectsRelationship": "independent", + "version": { + "generatorOptions": { + "preserveLocalDependencyProtocols": true + } + } } } }, diff --git a/package.json b/package.json index bfa71af4fe9..0956d2d880c 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build:dashboard": "nx build @novu/dashboard", "build:embed": "nx build @novu/embed", "build:inbound-mail": "nx build @novu/inbound-mail", - "build:packages": "nx run-many --target=build --all --projects=tag:package:public", + "build:packages": "nx run-many --target=build --all --projects=tag:type:package", "build:storybook": "nx run @novu/design-system:build-storybook", "build:web:for-dashboard": "nx build:web:for-dashboard @novu/web", "build:web": "nx build @novu/web", @@ -39,9 +39,10 @@ "pnpm-context": "node scripts/pnpm-context.mjs", "prebuild": "nx run-many --target=prebuild --all", "preinstall": "npx only-allow pnpm", - "preview:pkg:build": "nx affected -t build --base=origin/next --head=HEAD --exclude='*,!tag:package:public'", + "preview:pkg:build": "nx affected -t build --base=origin/next --head=HEAD --exclude='*,!tag:type:package'", "preview:pkg:publish": "node scripts/publish-preview-packages.mjs", "release": "node scripts/release.mjs", + "release:version:apps": "nx release version --projects=tag:type:app", "setup:project": "npx --yes pnpm@9.11.0 i && node scripts/setup-env-files.js && pnpm build", "start:api:dev": "cross-env nx run @novu/api:start:dev", "start:api:test": "cross-env nx run-many --target=start:test --projects=@novu/api", @@ -83,12 +84,11 @@ "@eslint/compat": "^1.1.1", "@eslint/eslintrc": "^3.1.0", "@eslint/js": "^9.9.1", - "nx": "20.1.2", + "@nx/eslint": "20.1.2", "@nx/eslint-plugin": "20.1.2", "@nx/jest": "20.1.2", - "@nx/eslint": "20.1.2", - "@nx/workspace": "20.1.2", "@nx/plugin": "20.1.2", + "@nx/workspace": "20.1.2", "@octokit/core": "^4.0.0", "@pandacss/eslint-plugin": "^0.1.9", "@pnpm/filter-workspace-packages": "^7.0.6", @@ -168,6 +168,8 @@ "markdownlint-cli": "^0.33.0", "meow": "^10.1.3", "mississippi": "^4.0.0", + "nx": "20.1.2", + "nx-cloud": "19.1.0", "ora": "~5.4.1", "pkg-pr-new": "^0.0.24", "pnpm": "9.11.0", @@ -182,7 +184,7 @@ "typescript": "5.6.2", "typescript-eslint": "^8.3.0", "wait-port": "^0.3.0", - "nx-cloud": "19.1.0" + "yargs": "^17.7.2" }, "workspaces": { "packages": [ @@ -239,6 +241,6 @@ "@types/mocha": "^10.0.8", "rollup@>=4.0.0 <4.22.4": "^4.22.4", "@nestjs/common@>=10.0.0 <11.0.0": "10.4.1" + } } } -} diff --git a/packages/client/package.json b/packages/client/package.json index 86072212561..4c58d9ad194 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -62,7 +62,7 @@ }, "nx": { "tags": [ - "package:public" + "type:package" ] } } diff --git a/packages/framework/package.json b/packages/framework/package.json index ebb7789e0ec..041953b43dc 100644 --- a/packages/framework/package.json +++ b/packages/framework/package.json @@ -244,7 +244,7 @@ }, "nx": { "tags": [ - "package:public" + "type:package" ] } } diff --git a/packages/headless/package.json b/packages/headless/package.json index b02b6274615..e0a3c5120ac 100644 --- a/packages/headless/package.json +++ b/packages/headless/package.json @@ -49,7 +49,7 @@ }, "nx": { "tags": [ - "package:public" + "type:package" ] } } diff --git a/packages/js/package.json b/packages/js/package.json index 560fd9336cd..18b739b6201 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -138,7 +138,7 @@ }, "nx": { "tags": [ - "package:public" + "type:package" ] } } diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 7fda71a6d63..771f07deedb 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -94,7 +94,7 @@ }, "nx": { "tags": [ - "package:public" + "type:package" ] } } diff --git a/packages/node/package.json b/packages/node/package.json index 83661d20fbc..82c072dd4be 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -81,7 +81,7 @@ }, "nx": { "tags": [ - "package:public" + "type:package" ] } } diff --git a/packages/notification-center-angular/package.json b/packages/notification-center-angular/package.json index 1e629068548..e493374618d 100644 --- a/packages/notification-center-angular/package.json +++ b/packages/notification-center-angular/package.json @@ -40,7 +40,7 @@ }, "nx": { "tags": [ - "package:public" + "type:package" ] } } diff --git a/packages/notification-center-vue/package.json b/packages/notification-center-vue/package.json index a0d60305f43..aed527b67ea 100644 --- a/packages/notification-center-vue/package.json +++ b/packages/notification-center-vue/package.json @@ -53,7 +53,7 @@ }, "nx": { "tags": [ - "package:public" + "type:package" ] } } diff --git a/packages/novu/package.json b/packages/novu/package.json index 0e7ccde46bb..f097b1b1a1a 100644 --- a/packages/novu/package.json +++ b/packages/novu/package.json @@ -92,7 +92,7 @@ }, "nx": { "tags": [ - "package:public" + "type:package" ] } } diff --git a/packages/providers/package.json b/packages/providers/package.json index 19abdc889ad..c861680fbd0 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -114,7 +114,7 @@ }, "nx": { "tags": [ - "package:public" + "type:package" ] } } diff --git a/packages/react/package.json b/packages/react/package.json index 3e5a9ad4279..716289f34ec 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -98,7 +98,7 @@ }, "nx": { "tags": [ - "package:public" + "type:package" ] } } diff --git a/packages/shared/package.json b/packages/shared/package.json index 6acae16d3ed..ab4aad41454 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -44,7 +44,7 @@ }, "nx": { "tags": [ - "package:public" + "type:package" ] } } diff --git a/packages/stateless/package.json b/packages/stateless/package.json index 6dba100421a..71dfbac156a 100644 --- a/packages/stateless/package.json +++ b/packages/stateless/package.json @@ -75,7 +75,7 @@ }, "nx": { "tags": [ - "package:public" + "type:package" ] } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2dc968dc3ff..28e98150b52 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -350,6 +350,9 @@ importers: wait-port: specifier: ^0.3.0 version: 0.3.1 + yargs: + specifier: ^17.7.2 + version: 17.7.2 apps/api: dependencies: @@ -35314,8 +35317,8 @@ snapshots: dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.575.0(@aws-sdk/client-sts@3.575.0) - '@aws-sdk/client-sts': 3.575.0 + '@aws-sdk/client-sso-oidc': 3.575.0 + '@aws-sdk/client-sts': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) '@aws-sdk/core': 3.575.0 '@aws-sdk/credential-provider-node': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0) '@aws-sdk/middleware-host-header': 3.575.0 @@ -35516,8 +35519,8 @@ snapshots: '@aws-crypto/sha1-browser': 3.0.0 '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.575.0(@aws-sdk/client-sts@3.575.0) - '@aws-sdk/client-sts': 3.575.0 + '@aws-sdk/client-sso-oidc': 3.575.0 + '@aws-sdk/client-sts': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) '@aws-sdk/core': 3.575.0 '@aws-sdk/credential-provider-node': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0) '@aws-sdk/middleware-bucket-endpoint': 3.575.0 @@ -35743,11 +35746,11 @@ snapshots: - aws-crt optional: true - '@aws-sdk/client-sso-oidc@3.575.0(@aws-sdk/client-sts@3.575.0)': + '@aws-sdk/client-sso-oidc@3.575.0': dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.575.0 + '@aws-sdk/client-sts': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) '@aws-sdk/core': 3.575.0 '@aws-sdk/credential-provider-node': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0) '@aws-sdk/middleware-host-header': 3.575.0 @@ -35786,7 +35789,6 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 transitivePeerDependencies: - - '@aws-sdk/client-sts' - aws-crt '@aws-sdk/client-sso-oidc@3.637.0(@aws-sdk/client-sts@3.637.0)': @@ -36171,11 +36173,11 @@ snapshots: - aws-crt optional: true - '@aws-sdk/client-sts@3.575.0': + '@aws-sdk/client-sts@3.575.0(@aws-sdk/client-sso-oidc@3.575.0)': dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.575.0(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/client-sso-oidc': 3.575.0 '@aws-sdk/core': 3.575.0 '@aws-sdk/credential-provider-node': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0) '@aws-sdk/middleware-host-header': 3.575.0 @@ -36214,6 +36216,7 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.7.0 transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' - aws-crt '@aws-sdk/client-sts@3.637.0': @@ -36443,7 +36446,7 @@ snapshots: '@aws-sdk/credential-provider-ini@3.575.0(@aws-sdk/client-sso-oidc@3.575.0)(@aws-sdk/client-sts@3.575.0)': dependencies: - '@aws-sdk/client-sts': 3.575.0 + '@aws-sdk/client-sts': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) '@aws-sdk/credential-provider-env': 3.575.0 '@aws-sdk/credential-provider-process': 3.575.0 '@aws-sdk/credential-provider-sso': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) @@ -36754,7 +36757,7 @@ snapshots: '@aws-sdk/credential-provider-web-identity@3.575.0(@aws-sdk/client-sts@3.575.0)': dependencies: - '@aws-sdk/client-sts': 3.575.0 + '@aws-sdk/client-sts': 3.575.0(@aws-sdk/client-sso-oidc@3.575.0) '@aws-sdk/types': 3.575.0 '@smithy/property-provider': 3.1.3 '@smithy/types': 3.3.0 @@ -37275,7 +37278,7 @@ snapshots: '@aws-sdk/token-providers@3.575.0(@aws-sdk/client-sso-oidc@3.575.0)': dependencies: - '@aws-sdk/client-sso-oidc': 3.575.0(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/client-sso-oidc': 3.575.0 '@aws-sdk/types': 3.575.0 '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 @@ -37284,7 +37287,7 @@ snapshots: '@aws-sdk/token-providers@3.614.0(@aws-sdk/client-sso-oidc@3.575.0)': dependencies: - '@aws-sdk/client-sso-oidc': 3.575.0(@aws-sdk/client-sts@3.575.0) + '@aws-sdk/client-sso-oidc': 3.575.0 '@aws-sdk/types': 3.609.0 '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 diff --git a/scripts/release.mjs b/scripts/release.mjs index bf34b461a08..2f0f8286758 100644 --- a/scripts/release.mjs +++ b/scripts/release.mjs @@ -1,3 +1,12 @@ +/** + * Release all packages in the monorepo. + * + * Usage: pnpm release + * + * Known issues: + * - nx release with independent versioning and updateDependents: "auto" increases patch by the amount of dependencies updated (https://github.com/nrwl/nx/issues/27823) + */ + import { hideBin } from 'yargs/helpers'; import { releaseChangelog, releasePublish, releaseVersion } from 'nx/release/index.js'; import inquirer from 'inquirer'; @@ -11,7 +20,7 @@ import { execa } from 'execa'; alias: 'd', description: 'Whether or not to perform a dry-run of the release process, defaults to true', type: 'boolean', - default: false, + default: true, }) .option('verbose', { description: 'Whether or not to enable verbose logging, defaults to false', @@ -29,13 +38,15 @@ import { execa } from 'execa'; } const { workspaceVersion, projectsVersionData } = await releaseVersion({ + projects: ['tag:type:package'], specifier, dryRun, verbose, - firstRelease: true, + firstRelease: false, }); await releaseChangelog({ + projects: ['tag:type:package'], specifier, versionData: projectsVersionData, version: workspaceVersion, @@ -57,6 +68,7 @@ import { execa } from 'execa'; ]); await releasePublish({ + projects: ['tag:type:package'], specifier: 'patch', dryRun, verbose, From 990bb1b109aab6ab23d805cdddb6622701e4ff26 Mon Sep 17 00:00:00 2001 From: GalTidhar <39020298+tatarco@users.noreply.github.com> Date: Wed, 27 Nov 2024 12:26:10 +0100 Subject: [PATCH 4/9] fix(api): make access internal to self-managed bridge (#7145) --- .../execute-bridge-request.usecase.ts | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/libs/application-generic/src/usecases/execute-bridge-request/execute-bridge-request.usecase.ts b/libs/application-generic/src/usecases/execute-bridge-request/execute-bridge-request.usecase.ts index 90a5fea541c..2049aa7622d 100644 --- a/libs/application-generic/src/usecases/execute-bridge-request/execute-bridge-request.usecase.ts +++ b/libs/application-generic/src/usecases/execute-bridge-request/execute-bridge-request.usecase.ts @@ -1,10 +1,10 @@ import { + BadRequestException, + HttpException, + HttpStatus, Injectable, Logger, NotFoundException, - BadRequestException, - HttpStatus, - HttpException, } from '@nestjs/common'; import got, { CacheError, @@ -20,11 +20,11 @@ import got, { } from 'got'; import { createHmac } from 'node:crypto'; import { - PostActionEnum, + GetActionEnum, HttpHeaderKeysEnum, HttpQueryKeysEnum, - GetActionEnum, isFrameworkError, + PostActionEnum, } from '@novu/framework/internal'; import { EnvironmentRepository } from '@novu/dal'; import { WorkflowOriginEnum } from '@novu/shared'; @@ -122,6 +122,7 @@ export class ExecuteBridgeRequest { command.environmentId, command.workflowOrigin, command.statelessBridgeUrl, + command.action, ); Logger.log( @@ -243,6 +244,7 @@ export class ExecuteBridgeRequest { environmentId: string, workflowOrigin: WorkflowOriginEnum, statelessBridgeUrl?: string, + action?: PostActionEnum | GetActionEnum, ): string { if (statelessBridgeUrl) { return statelessBridgeUrl; @@ -250,7 +252,9 @@ export class ExecuteBridgeRequest { switch (workflowOrigin) { case WorkflowOriginEnum.NOVU_CLOUD: - return `${this.getApiUrl()}/v1/environments/${environmentId}/bridge`; + const apiUrl = this.getApiUrl(action); + + return `${apiUrl}/v1/environments/${environmentId}/bridge`; case WorkflowOriginEnum.EXTERNAL: { if (!environmentBridgeUrl) { throw new BadRequestException({ @@ -269,7 +273,11 @@ export class ExecuteBridgeRequest { } } - private getApiUrl(): string { + private getApiUrl(action: PostActionEnum | GetActionEnum): string { + if (action === PostActionEnum.PREVIEW) { + return `http://localhost:${process.env.PORT}`; + } + const apiUrl = process.env.API_ROOT_URL; if (!apiUrl) { From 56eaf3222845a4f6337e52c8c13b4230e0238859 Mon Sep 17 00:00:00 2001 From: George Desipris <73396808+desiprisg@users.noreply.github.com> Date: Wed, 27 Nov 2024 14:13:08 +0200 Subject: [PATCH 5/9] fix(dashboard): In app step form fixes (#7144) --- .../workflow-editor/steps/in-app/in-app-tabs.tsx | 14 +++++++------- .../workflow-editor/steps/step-editor-context.ts | 3 ++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/apps/dashboard/src/components/workflow-editor/steps/in-app/in-app-tabs.tsx b/apps/dashboard/src/components/workflow-editor/steps/in-app/in-app-tabs.tsx index df44076655e..9d534693130 100644 --- a/apps/dashboard/src/components/workflow-editor/steps/in-app/in-app-tabs.tsx +++ b/apps/dashboard/src/components/workflow-editor/steps/in-app/in-app-tabs.tsx @@ -24,7 +24,6 @@ import { buildDefaultValues, buildDynamicZodSchema } from '@/utils/schema'; import { useWorkflowEditorContext } from '../../hooks'; import { flattenIssues } from '../../step-utils'; import { CustomStepControls } from '../controls/custom-step-controls'; -import { useStep } from '../use-step'; import { useStepEditorContext } from '@/components/workflow-editor/steps/hooks'; import { NovuApiError } from '@/api/api.client'; @@ -35,22 +34,22 @@ export const InAppTabs = ({ workflow, step }: { workflow: WorkflowResponseDto; s const { stepSlug = '', workflowSlug = '' } = useParams<{ workflowSlug: string; stepSlug: string }>(); const { resetWorkflowForm } = useWorkflowEditorContext(); const { refetch: refetchStep } = useStepEditorContext(); - const { step: workflowStep } = useStep(); const { dataSchema, uiSchema, values } = step.controls; const schema = useMemo(() => buildDynamicZodSchema(dataSchema ?? {}), [dataSchema]); const newFormValues = useMemo(() => merge(buildDefaultValues(uiSchema ?? {}), values), [uiSchema, values]); const form = useForm({ - mode: 'onSubmit', + mode: 'onChange', resolver: zodResolver(schema), - values: newFormValues, + defaultValues: newFormValues, shouldFocusError: true, }); + const [editorValue, setEditorValue] = useState('{}'); const { formState, setError } = form; - const controlErrors = useMemo(() => flattenIssues(workflowStep?.issues?.controls), [workflowStep]); + const controlErrors = useMemo(() => flattenIssues(step?.issues?.controls), [step]); useEffect(() => { if (Object.keys(controlErrors).length) { @@ -62,9 +61,10 @@ export const InAppTabs = ({ workflow, step }: { workflow: WorkflowResponseDto; s const { previewStep, data: previewData, isPending: isPreviewPending } = usePreviewStep(); const { isPending, updateWorkflow } = useUpdateWorkflow({ - onSuccess: (data) => { + onSuccess: async (data) => { resetWorkflowForm(data); - refetchStep(); + const step = await refetchStep(); + form.reset(merge(buildDefaultValues(uiSchema ?? {}), step.data?.controls.values)); showToast({ children: () => ( <> diff --git a/apps/dashboard/src/components/workflow-editor/steps/step-editor-context.ts b/apps/dashboard/src/components/workflow-editor/steps/step-editor-context.ts index 5eca9aab64c..37f49a75f25 100644 --- a/apps/dashboard/src/components/workflow-editor/steps/step-editor-context.ts +++ b/apps/dashboard/src/components/workflow-editor/steps/step-editor-context.ts @@ -1,12 +1,13 @@ import { createContext } from 'react'; import { type StepDataDto, StepTypeEnum } from '@novu/shared'; +import { QueryObserverResult, RefetchOptions } from '@tanstack/react-query'; export type StepEditorContextType = { isPendingStep: boolean; isRefetchingStep: boolean; step?: StepDataDto; stepType?: StepTypeEnum; - refetch: () => void; + refetch: (options?: RefetchOptions) => Promise>; }; export const StepEditorContext = createContext({} as StepEditorContextType); From c7f0b395362f41b2f62de7f284064f98fdcd66c7 Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Wed, 27 Nov 2024 15:48:02 +0200 Subject: [PATCH 6/9] feat(dashboard): Sign up Questionnaire (#7114) --- .cspell.json | 2 +- apps/dashboard/package.json | 2 + .../public/images/auth/chat-preview.webp | Bin 0 -> 29428 bytes .../public/images/auth/email-preview.webp | Bin 0 -> 97250 bytes .../public/images/auth/in_app-preview.webp | Bin 0 -> 45256 bytes .../public/images/auth/push-preview.webp | Bin 0 -> 41510 bytes .../public/images/auth/sms-preview.webp | Bin 0 -> 158446 bytes apps/dashboard/src/api/organization.ts | 6 + apps/dashboard/src/api/telemetry.ts | 20 ++ apps/dashboard/src/components/auth-layout.tsx | 2 +- .../src/components/auth/auth-card.tsx | 2 +- .../components/auth/create-organization.tsx | 18 +- .../components/auth/questionnaire-form.tsx | 217 ++++++++++++++++++ apps/dashboard/src/components/auth/shared.tsx | 33 +++ .../src/components/auth/usecase-selector.tsx | 87 +++++++ .../components/auth/usecases-list.utils.tsx | 57 +++++ .../icons/onboarding-arrow-left.tsx | 13 ++ apps/dashboard/src/main.tsx | 17 +- apps/dashboard/src/pages/index.ts | 2 + .../src/pages/questionnaire-page.tsx | 14 ++ .../src/pages/usecase-select-page.tsx | 152 ++++++++++++ apps/dashboard/src/utils/cookies.ts | 31 +++ apps/dashboard/src/utils/routes.ts | 8 +- apps/dashboard/src/utils/telemetry.ts | 3 + .../update-external-organization.dto.ts | 4 +- .../shared/src/types/organization/index.ts | 15 ++ pnpm-lock.yaml | 44 ++-- 27 files changed, 709 insertions(+), 40 deletions(-) create mode 100644 apps/dashboard/public/images/auth/chat-preview.webp create mode 100644 apps/dashboard/public/images/auth/email-preview.webp create mode 100644 apps/dashboard/public/images/auth/in_app-preview.webp create mode 100644 apps/dashboard/public/images/auth/push-preview.webp create mode 100644 apps/dashboard/public/images/auth/sms-preview.webp create mode 100644 apps/dashboard/src/api/organization.ts create mode 100644 apps/dashboard/src/components/auth/questionnaire-form.tsx create mode 100644 apps/dashboard/src/components/auth/shared.tsx create mode 100644 apps/dashboard/src/components/auth/usecase-selector.tsx create mode 100644 apps/dashboard/src/components/auth/usecases-list.utils.tsx create mode 100644 apps/dashboard/src/components/icons/onboarding-arrow-left.tsx create mode 100644 apps/dashboard/src/pages/questionnaire-page.tsx create mode 100644 apps/dashboard/src/pages/usecase-select-page.tsx create mode 100644 apps/dashboard/src/utils/cookies.ts diff --git a/.cspell.json b/.cspell.json index b96e205cec6..5b103437191 100644 --- a/.cspell.json +++ b/.cspell.json @@ -703,7 +703,7 @@ "xyflow", "zulip", "zwnj", - "lstrip", + "SOLOPRENEUR", "rstrip", "truncatewords", "xmlschema", diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index cc8f78c7a9c..0bce890faa0 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -53,6 +53,7 @@ "@segment/analytics-next": "^1.73.0", "@sentry/react": "^8.35.0", "@tanstack/react-query": "^5.59.6", + "@types/js-cookie": "^3.0.6", "@uiw/codemirror-extensions-langs": "^4.23.6", "@uiw/codemirror-theme-white": "^4.23.6", "@uiw/codemirror-themes": "^4.23.6", @@ -64,6 +65,7 @@ "date-fns": "^4.1.0", "flat": "^6.0.1", "framer-motion": "^11.3.19", + "js-cookie": "^3.0.5", "lodash.debounce": "^4.0.8", "lodash.merge": "^4.6.2", "lucide-react": "^0.439.0", diff --git a/apps/dashboard/public/images/auth/chat-preview.webp b/apps/dashboard/public/images/auth/chat-preview.webp new file mode 100644 index 0000000000000000000000000000000000000000..6e442d3e8d57eea1c1f7c31ad8aa5fd22f00701a GIT binary patch literal 29428 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 literal 0 HcmV?d00001 diff --git a/apps/dashboard/public/images/auth/in_app-preview.webp b/apps/dashboard/public/images/auth/in_app-preview.webp new file mode 100644 index 0000000000000000000000000000000000000000..e450283db38f7d82cee24ca07d38657f5e1e723a GIT binary patch literal 45256 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 literal 0 HcmV?d00001 diff --git a/apps/dashboard/public/images/auth/sms-preview.webp b/apps/dashboard/public/images/auth/sms-preview.webp new file mode 100644 index 0000000000000000000000000000000000000000..8844be4ac92ad57338769e1a2e5f3b3e1a01732f GIT binary patch literal 158446 zcmW)ndpwix|M-!^gv=prH0F?0qs^FxG)@JzmG>>vf+w?&>PJEF*Qn#qrenQ%Aga zN=Zopx1SzasSbdYgXbxCuPG@hX>d-I&hcA)KiuBju8rjKRngDMtA$9L?eLyl|97v9Qz-2V1x4yxL%LFz-$=x&7V ziu`HZDO0qj{YT=`?KGDb0}`CU%2*5bL0Zvt2=f1@D9XL^VdkLhA38-T%2k^9GIO$J?m@OPqxeN9YU^*RRvCD=1N;3ch0BiMti5%@22Y_sO*;&ga z%O8hB{D+Ty7=H8`m&y~e1`7szhgsfR=Q!5~e(!T#JNDltSpCWH7rvFp6uYn!Mo~Sq zrVE|_L02DK6>we}AJ);%AH>D+8!V4SeyAM`@;NzJ%cNEFI@&vYtK@hMpR}rUcw)b~ z>2S7LX$h|Z!fQy3#98=O_9KLY>&)Xk-@K5cKD_pzS~CqLjR?9HOh~v$i-r~9*)JYX zG~+Ir2?;QvgjLax%XjVayST_PHjOYXUJ5o<%Ij|Sgn3qn_%i)QqA;%mSNUtsSzT+` z=)h1Y5UL+`iy=))%;57gsV z*<`IZ6E@t|@u6g*dHw3@;zCzeC-Kdz=dP8Bs1-smZq{jWa!+v``|#lsybsJbN7;A>i}*%6{9jBpdVk<%-osCEn0zNePb)(}Lv@m`sb}x{&&+hD_rw zOY<=6J4Ht5H^8&$vRhJZ_U&-x+-LU2nX({&BF4|i3HtL&UpWM4I%q!p)tW^H@o??t z2o|%t!Mg{7Xv0w&XdrY+Lw0wtPjPoVF5lCe>{`sLS7vb>G6>}j-aK6PbccBmtWuHJ z(b2vwGw6g4*-G?aP>|SfP}jI9#K%}zVQG#*X#1EAn0M?_P#I1i3^J{R)M)T>SY%_E zhKAC%*i4M7X^#mYSw%g1>OKIhq|p|8uMko4O?VFS>OSv#0JvmA=416n=-!*AA2cz4UL*U%KKQ z(=`2lA+~jFHeu}(XOq|80aYYtO4-EU8s7=}GTT(U`F-i4O*PDEC1I_lW#d!X+YTk{ zVEKTdlN6@|&VGGtbn83ky?T6V!pfC|rUFAJfc0+k`VQ*Ty>qQaYioBNO>;hdido#f zj8MTg4(Lfj4z7&#-{0I7?bGu)nLal6u12<9eaga39q2BcpFEj*;Sg^md+e+58f$+V zjo^y~1nw-DPqtctB?R19c;~N}UUBaYAdXIBv|fK*`#bqhLkhc2>YK&+xA3p87xjWe z!0SIXUSA75Z-3G&(`?7>*_D+ajD5fI0={2JGe2=M|7j5?H5D5Y{%Q?u$96h#QsWGH zC8Zi)+^wf4P(-(8WVlSi4J7r`1hCk7BNz+OC%=LNXB&;-G3#8B{^()R1czR)d zd*I&I+Ob!1n$~yS4W(jIZ(e{s2x$FvEco)ZzxL3#fB)VHIk53V&53vdEbICEKb=EL zKR98R^r255@8T{^-^p5uQV`!(WODt`oDJT|?df9~f) zt+VN23R++1pL?g>;{%O^BX_d?e7#fN*9`*<*&icDrLLDk9bdVjn^X~6? zriMn^!egJ>lT!aHIC8hV< z=cDO;xk0GnRn-d&ch2&KJli>Y>*GhHYc4VS#uW7L0(Z&|*NIv)j80Ha-(!uAjj5eI zDPw-8C0kB!?a*C@EY>%vc*812OYyF(%J{Us8P+M*=~{@OA)5I&IcAYqx;`iVll zQmLV-yR0k~Fq58!VkaI81^juCf0*%`i1@Ne5=}ia>D85&9z6>EQgt5Cn3|3GvL8E4 zl9&E{yfb|*;YqsycJNgq2ymro$IA{C&r|;^0Poy{N!O+;?Ed)-t~J^Ul(sU1=47|D zN$Jh&zY};!rx=qm<~83{L1eEk!ga6xGN_6^?>X~zKpAkXtfUr`eeMQ7=SqShAo|Qh z5r>vmFcv&0IB@gZGqA?o7R8_}4$#;F*8J%Mv@*#h-p@S!H6^5uLQQ$Lha-~$g58!ZrMqEe}<+zmZ(Nk3!v|@b9Deo4-QR~C1 zeIEpF%xizHU16pKkoqKealudckuTu1@A5{!Bquwkey;o352roY@`M%(~JUC)vg_vib9zm z)ibo!7`ox52R6JH<8sGgS(ZSTpI`T@FyV0TCr_d)6sF$!tmXaR!*WK z@S~TM)(&0WCh9*#7)4n3@q!#_Z>HhY3?Q4o&&TLsjl@A8@-tM&Z zcT;L|J;iqe$`YYCb-U9tGSOhu=q4GNBVkhVTtv}56QYceBNy!@9c8fCT__{-$60YF z8*+Hmup&*WDy>MCXfJht?@srmsGC-9zf)PtEatj$0aPYCrW-=d!k9el~6H($8GC(E6GJ*wZNapOj5VBoV|10?Otp>J@v&(i<62y|AamG4aYRgdmqytZ@%8@ zFd`=V@-|O!$KsvecI6Q`sZLubhHm;ESOvxE6&!xNfJdws6f#`2h|z7e)@Sr~>Ax2M z&nvqw%pKXo-j(!H>Rbwpw52;d1?X&cH<*_to~+v0K5s_ay6Gi{JfF+h)7&5j`0J+$ zJmy2*s;rIm>M(<>P)nbftooI=t#tn!6TkS><5F|9m}i4boS~+T(UiB|l`iX7|6p}o zeqNSq+jKjvsBP;?O&0^<7ObeHluIqhBL2i88P8P~ukKs%(gkC# zkjiHF=$>iU-$be8CnmqU3;@*9sARU8&vA8jk_qvT^T@BQyRg)aBV1pcHpHGtUFb0A zn2(lEJsbJA4SD*X1x-L9`tLDX!qooxh7zf73f~Kx*Y~Ov?@kp2ZJo=!vAb_Skvd;w zPy8Mbg?aSxn7xL~E2(acyv!o#+b!JE%GgFjpy`yJch8PYJ7~dP>9PIkQXyNLQKhg| zg%X$kG+Ae;p1WMi38KupP8F$kxoF=ll9bEbvaPgZ(HGhEE%&oMgD1uK@do>o&cK$d zXHzEw+88B0@u7!&_*32mm($L=KCJES?d%IZ+h;wstpsA-u#?WvA|`gZDH465E4e|> z;oRFU^;|Dp=C8xyHuZMFzbj?WxPQB9C}SnPuw|;BwGc0;JnVO5qA&!s6Gx&a_^ZdS zl~S+uEj~$Gz-vIKUl_&bQtJHwW~NCS+4X??OmYH|lLXd7=7*cjrZtMtUKq6OR3?|| zTpUsCiSJeFdAR?kKj;C?UHhSu>9eJ4kAZ(|Wl&18>lZG@j@jBgxYKaoA?J^UoEQe( zv|?pn_e5v>KH%^t^Vchcvfj^@-0}+Uos>x-Fpf*@eL0 zlSY7apAoY>aW%H$HI?dg`*EVrR;oH2S?X7*rgiB2{}jID8|fYi(cF1pAX*sPImTkF z#j5HZ&-r!ae^Xj#@4egnF{K4?x2;9*bv;u*Lf6lHxA1QoHLQn}fr~<3&jdO5yfI26 z-Yig8f2k<5F7(|zaUlRN@wd|nGcM3^FSBnSTY9l^clr%u-!1&_zYjbN3|dLQ&rXNMnLUDD?@#L*&N&dJ&&Qtm0HcBNx1I25qP(j@)BZen%eP=t}5Dg^i@Y`lxBIyH9$r9DioSZiN*{5aCKt z>oVM@3lEJ4uG;--@nlxSGuXS*1Eln)91OJOkJFk2jIa3+Q?I_t9k*`))fjS+3hb=8 zPEp-aguwgNIT`m~Xc_LmZ~f#2M@3(E7Z3aZ*ov<{`j?uiRrVrEA;aOYFZp&0QR+vA zdq>>fWxV97xcTUj*cGUKkFKod+pm3>L+kx}hF+aKk@&PmWm-*WDO(=@|p&2 zy|Po*Zf8gA-Vd)n!}lbq?f9X@e$Tl~A)c`RgDWwk4bmcbAGjCJ+AsOsbd|<0e~qY{ zQSW@ksMt-lQc=9FMbA2(a|W9{jdD_g0P>!dw0yzKLXYg+*8Su$^V&QgT0$k{{p%f5 zXj!FUS$@ce;6;>iQo3oPkCE#F(;QN^=2@A&#=Vy#yo6qIct~=XL(%k=lDNP{&?_!D z{j%yAYvr6(YA7fUEBBgXs47Rib_Q#`OV3p|Ah5)rc*I58Iq_q#?Pfqkt4brQd)ZN> zO`f_2mi+^j&24Eri8TmoG!wj@(EfH>`dfd7J8+gHP~glMtW@SF(gDzwg0C45W$G2J z6WW44H_qZ%@=0*(1^LdRHy&?Ke^C>f3rWmf@*dN;12V&T!23?%f-(eu{2f6tzw8b) zKx+#9_7}A=T)PgvSfJ1+Jh6m^@=sG+ECn=`e$n#f`m(f?1LZ(H{T{n~8S(kfD!+nB zg17pD~b;dn2Q^s8-XUqlKi+aM|H|91Wqs ziVHF%+aUEX##5v3xC$4$u(7?b?woxkD-BkqADs8PB8^&@ZOZT`(2@o|mqXLiq|}yy zu3t^kq7T*kmJohlF{@R&YMBP4&VUUWDe?u%QsJZ_Z#y4K5xlGk>uH| zLL~2cg_?0-FjUp&76+qo>=`1sF9*`;+LR;9<~6vv=a8Jp0+Mk-M4vv_jL3kTaa)!R zs@-c<{Lm-HF%(x44Go|q*-6Xh)H$p-^4njHg4)zhVlwxrxnGyh#c3E}s>f_epWJCk zuzwBFO`c|pC3hva1feE%;nwZ8N;2^@fCLG6xmVre6mrniv|u3b>?NI3wvWF?_hoO8 zqRi)o&o^8T-@F8k`R$N~a@g-+CjgVoOoOuX8mqr0%4ymZLT> zZS)TDrrT}m6)Ow9qUmUK+2R2h@X?;f<#sz19m~?##Y55NpweR7f+I=ed(3;T%d)L^ zs`r^Iwdl8-7pOEq_|yI~t@<9rvWahfLizE1w#!$HmFT~Lz5}Ta4_P}ks9qo&Z92eJ zl{WqA{^Bu5)AJbJp97s10yGY52r6Y(jzm{%xSjiUFpyN0&)S~{SU57wg3RV`{gb`9MnmO!xshdxWU*NbBp!| z{+ov~2yKdQ9ci;c);;U!$ycxIw*YzHUkVx}t4A(o&zi^Cx;DEbH}?N*^XX$>>>~_W zl!y_xTE$+JWj!^4jHI;A0XF%F*C4=VZ?uV95g#Y66p+4RItk7-`Zf=T22vk8K7%T< zqH*vRQg01Yrdo@Lp=Zkd89?1g0>`=zzR4i)QX*Jg*vx?Vy=51*J;kgm8{3-(D1&S zhdfBwkt#tW(R9}$$jKx&(xIN8ij_w1eIwFZ1T|6pBG9kyuhnmAXg>TJINb#!AXbyg zrpt`2+tp{i~Vtan6~I{N%pWbZN1%J&KdbKHM({L9Gn+1O5NLFgaa3 zUW}=+DYdW&@1e*aJAylj*|JV={|ZdO>v3ok*7#2d9BGhGK}cF_KQRmDBbu7n(U&>{ zLoq7;G@qFJ{!?{Hwv(~3G zu4uyDjD!O82#dj@uEACqIx2rl?xf|*7&8A@NEi;v?VU7#$pok)aC73l#cihYTIn<_ zv}XuFpSE?AG^5v=@9ES# zjBJKnEA#?AF!$h)Ty*gHm`JzEN;)YV@wX{HTr=mTRYVW`Y(4f8fy;Q7$WU31F|;3% z)qexNNkvSCb`P;87%Ys4V!INfVPYj+R~(6o9u|r|Hk9oT~ zEJ&GbD+>$Z_W&*Zx>Fr9m61_!qCScytYGm21>DBe68EnrfPQ6;-?$A;fIccnhW8@t zx?BCu`B0wwKp=Hy*qj+uK~Yj!L~>DT^6qD+I^H~(uZ+4h*$i%pqoZ`Nx=qYfAH|O* zX`79K#U=Q;z?{z56V9$Ui{FQJva|k>+Xy2;UFa1b(F6;@5sz+$$b38a^N9|u1=rDG zfbWr94JzCc0rtv$?8Yi1E5X+hjHyu-_fM)5!CUZsWw~>PKkgqy%m8T@V6(hU zAfvPWj*`4aw)A51&50*Sw{0=J@iR9c1tek*%wV&aC6 zj@Z$_$aX&~-cf$&9ETgPYOxqoGVry}QIeP)Y=Pnq{dzev67siXdpVS72fDGxhBj*B zN@npEX9j7hsU0xQp9h44ln^&&KOvYlB_ikamkKsRYL#t*8Xx2{Z6ESJ(P!K)f)HN5NUAZ#+(k?B)F_AK2m9I#r|fQl+U0mAJj=x7O>edpXOK)RM_T( z_A@3vZ0LXJE(-%J(+O~E2oM{ysj;?QHLiPUHXa9AhODu5SRW;s+pO; ztG>_M&HB1_f$l@raxSVd0_p8U>O_zZWqQx>b4>ha!I~sS7a->!eXw zsL;gML$i^865g392lC&5l@Sh$%T8Dj(uw4y6M-(FWM<9Q(w=WbXi8s5m)Zba1O?4)TPJ^Qn0y8W{(R|$ zqPnjfH$RGpH6*{YP|jj$Mb$urV9s)kK^0c#*m8Z~gDOl7w!g#GunJO)pBW1xK7)3C zIYgi%gaSNmZSN$!-nCBYZWw7l1nK2EK{C73T?K!_IViM`RWXZ`jA^UY!8^R&$&FZvb)wA*y32Vk zqHfhnX*-;b)k9U}M0Es0cxaJwD5j=Gv?DgkrZ!bol#P;(FQt(s z*0K=sXD+4IkkHb!eVtHOOpYlQ!-P$)U&U#ih3B`Kjo@Yiu*Pgfa-S-4B@s>74l`47 z@FuQC z$oS$B&B9S9jp9DOC20uW-Fn(HsBisi1q+nA{j*_D?T}D&JYq2^&VnjXGQm_lLHBJ0I1RTCh#|IH;01k*l!KAps zh4qnJ7l{XIGJtiFQG{S_vIrhKW_?pcqnqiJZEZM9DssranV7%k9j_=kvW6Y+M+UbT zX^USB`oc1L(coK(pF&A+n;@EqkSQ5M1B0jX`gh4=`7}r-M!6I$z;i@f4Evf48Gh#^ zqmJEM%%nA;!(wapV1w80|8RP5cP`C^Fe=@rKJTgv-MV<;s_rQsN#C1{z~8mV z$Vy~zz1?VA$wlcPtP@9h0LMp@zz~shQJ3wmp{>#I#kYWnN-B!(fGtJRkUUrKSbfjixI+Qxc6q)F=_TL>(Dao{5ImYb~JZ*nj03+9x2&c zYU(Df!%#?4xSJ?yHq^Nv=t^HLO##z&93_V&iIS^i$t;|}jD4a1@KL~Rnb{rSBE3wr z4v@An7GfG^^O;>zxLl@e@2k*9PrhHmJ{;ELU;{@Q5ZZRdN~|0lBe~}9;E_XD1{eq% z<2(3|<9;EukMsIc`#a>LYIHIiY47+$`XXiQ{o$Jv>z3(UJ97W~H~%3Zcv3Jw-p!d^ zb-}&+@SgH?C>9l7rYNx^SMb5udlSRIU~#`M0#ErVAY@%4C8LG-Aa=nNH@@p(^sf3b zjnnnJGCf04-eNnfV3AMfqc=Ml)29_$6=Z{TJDGwfm4d+u7SFFMhrhBf8la9S6p3uYjRJkCXn_j>*pBP~~|;QEq+fEDR3EKKgbecBaS9JEL5x1s(t_li1c zw|Q8oYD`%6J`Eju9q0}$=#Obd`5IK_VwI_e6UVGYPDkI#Ahwr0^JKLlwlfp9%HSxU zk7MzUj_K&=@2g-8y~xc;2Vn*ST`!&By)+_bkhjA?THeC zO~^42elK225r8dJZNHsr2B?t~lSE7poW%O})ZnRtIQ*iCUkdC1Ar&h+3n$@*t&?|U?n{#6^KVqRe-t1(V$|)BwPq? z*$qZbpoJ7JJ?V1FGe}Pc&^xLptJ!ZF=BJbqERdaMFg3w6 zQC_DLD1kj2laYD3Yv(V^nS?&)OuBOD(hmk^r_av*UskObY?doBQ) zB;ZV+;}J!U6^oCqz-|`Iagss*Lw!uiefY(8iaH(leBx@?A_bzB`;bR@9~(_xeU7nT zd<(Q=<^89dIVc(J2#nMT4R?eID;ARE9F{9`W-{n3tO8P~k5^U94e#;H&e;|)$7PJ$ zXwc%37<_&;MpAmpb#GqlY~FA$q@lrEN*d$#0JK(bZu5+`@GdBA-o&!;sj^Pg2wn zYKA!=b4{$T#12!G$uK+^#yvWjQt-hMnEo6t+V+lxw!1ilhb*sq$WT&B{yS$fRgKR} zhP%?~5YH!A6t@B37`0~k)s^})H%93?RWfY+f)|e`%!p6~6X#aBVL)FYiEhRNp(gJI zL7L0?meWDv3yJl+f^H1)e}<5i*{UQ#qD=xB`2J{EO88FVw7qi_n}S$zB`|n_BFbqu zZr#X+&|a-!m*bbN1;3KOsSgKgzng$KKqtMwmhwQ2Sn^Cae6roF4pF6yafS(Dlk#h( z(5yxKOhYA`PWTaEre9v0^`}y-vkFC3HPU)?^KDN1kQ#`-kV;o2kNf^hnqvmWv z@dc;jB8#R2|L*&hq9E=3?h1M6Y|G3$*Xu7`3tnI|DXX7k7HS`mI1hiA7htm^Yfdlj zt%xpsf%t2wKYwYU>|c=dn3hc(nSoe|s`FPTZgq5UD(^{41Ap6c3CgX|^<%8NN?UWFBY25+OAzhpE8^r^kW&7ERPYnG{#8<6R z#?A^(-t-PYdS+UXbth^&HEm(J&LIg8QGnIv{No`hQF5~LGTR6#a6oy{9D=8S zFN*mz3YZXl;C7_-l1@2S<_Rc^J+ObDYe^H&@*`QKk26^5^vj0NCfK{EneQEFioCyA zH>8Z8eHlGxx)9%z%=pkZ7?bY!WCGf#)-R5~R2)4Zic?N>bu$S|Nl^P}!u?c58iINo zlOdcL8dWmhs@6uqYb;J@cvGBuXkI%PQAQm>%PXP@22xKWE9GBhj%2#9(y4pv(VE&SEa&B7=CM7wo&!oKOB$G>nsCB>(FV6Kb zjoqAlIA1?m0>-ROB(o*R5dHH$K6IyZp~=7@U#{%ZQH~ z(H!n1aj_V9XP=s5&O0V!fl~$JHg&_?dr6TGy!NR#9Lh&-)HI!Y`y*%=N>^rg=;#tX`2@C}h z;&KyJWA#X^i6$P*v;FWt8U6BQlmGMt+U*+H$BHx*H~%h^0q&KXj2^3x0uM1N_hY*V zuj;7z^nU7^^H54rphKAy_`ENIT_u`T9*T>wAm?CeW^p2M6E7~3W=X?`=0J)BfY<$)yF}Q4oxzRxwiNx{$Xohrk)ss$)@BAlRYj6=pe@p8Se3%<$oVmqWxQ7x+3Sr}C1WH6-n#BDLy?JTwScWyIPqTvz;6#lV~FunjvwdG430DE z6i5hVt%JlHGs_gN&B|YwFV~MeUV?{-*&5YHx;T52U-wOdmx0fx4ZdA^VeHb^BlANSX z-*lL3BkdvXD9+#F;`Q9M^*9hkq4Ao;mXjPsLP#7+B~b;vj+8>+j;CxVlO#bl?h zL&-k+UoTR3bTzG;AI}f$F%&{D!E@+@8z*{Zto$Ra_&BspRi*=NW)RU4XY`P%DEA*` zqsr*5S0CH37$S?$hg}8|Y?1A@8XSViJ0D+{>U~^j8$Cx&j9X%4a7oxbfRhq+v+5(XJvg-9bD}@g`I7mZ#ZJMI6&RKp^czZ@Wz7CL!VF@Ht>(w4Cuw!Kw*gwF1?2nWXw?mTK#C6*AmoaSfqfZA6WM*e^S@4-Cz>t$b7 zUX;f2#$bSiNNlHMZ>NRHq?tO}$~rs6#m#)@Vw#RPL!XS0%`K(t1QgK6nvP^ zu>fb~{&9yGh<$1JE?Wge;$uJ(eNs|#bKn1!4qCnNln!-dhjM3JJr>txGG;@9bjRce zYr&EI66=*hXWa~yj2mQ3$pPWFnD^&ecXZng=r1QbVw-^2lPiuQKCQ0m6v_rAe7gEP zxo=d(wTlsNok*G?n%rV1778qOsMKIYzZf&bRZeff^B zfgXm0q%ttF#j@-^p}wote10cKZ*f6yn+e5=XRjkP(HT$U`4&fdAmmF#Zp=9!lA&`k%|Xx{-@R`c#rUnk~W(ww|_M9=DhrO{#Nff-bPf@2b%w6043C0k|kn#~Yn-nMaKb zC%N%2_|2MvF0Q3`RFBO|W0byQdi5X<33ESLw~IYFzK197A~)1j9UeQV|9)PIPXzCD zL=yb687u}5KT}(YO`ST}i8`Vps%ms*6`Ws}s@4 z1%g6o*J!qWK&5RH=69IA`mpMshX2}&9d4RIL{KqUk)vC?WOC+Ws!@@MIwAte@dA;J zpK97JEpjlZrR&1`YWC%FnA?dxN4=YkK#>+f)gkI<8edn9_wxReu3)_O?jnztpu=#U zsL4{l>~4H4WuuVqF#rYUZ&waR%er~#NPk#+)^AI_n$hMouF z=CC5WIHreH`;$%go$fGhn~_EygWZE75$W~7<{27gJ#H~<-{-Wo3iZp}@tpXIQ7ahT zlGu&bUe$F?mE2Zb9U5fd1^6D8J|Nf6N?VK_>v_M~i)b$vB+ofG!<8~nAaq!yZ|r21pt}vH<*af3;`^U4q29r%E86ggB7AKIMXc?BT0!swiQuO(hQX=MX;8`d z?HE#^IGO2mPoXF@YEJ*j$b0&+!}rU>p)y6@Wtr^+KBdFBg;DWH5s^4oyt3&D%sr6- z1S9#Ds44esDy|EzTuMzihZeGa6jXO>6(W?{$;?DQg#j{xlsfHQ)571krc$#*tqe8h zXQ=2nw0nLBd9#Tb8@w|=3x_aERF3zH7l z?Y{2AlL!){%}lu6D^|gCXb1jA`*D~?gAr*k2Ryky^3v7+I#1y6h4wr~}m}h;x-f1&ZmNf81mY-RGu(_^b z9U8lff_4h}yqL(7R1d{mim(M#E+q?xE4QrPy5Y>W=9Y%GCq%|#0*{CbR1F9C7djJY>U1!-SKQaczJO9Ud%*}G;n8y`hm&aH;=%8%7;Tc#Ty_w(VG`tqdX4)ew^auk4PvaGxIq zna*DZb;6gc~C%WF%zow<-d&3tta1gm8-7L_#|QXfjuvvpfmpSWo8;)A#I^Z#>}iY^N0 z@2wdUvJFwts zq~D9xm)A+Medu9>D-mYs8w`_YD=Z;-6ZBNux5+$uDo?*4C zQN+?eL9-R%1mlf`n9P?H8ZdT1P%oj+Dr_ z$&G*ABRRpR&#L&JL7dLD*p`w|K5?Si!?<^o1>8|8uX{rWcDU=5imPPC*yghui#FZ< z!Ewd=o60wfob%7Wn;!tFBWMNN9W%jXl37Q9__tb)l-G{yWnsgVX$oA(p4nl;jmNTZ zB?c=K@kYRrQzDW0J8A`;Fxutb(MP7^Iu;nlAAYFC-W*7~p9tyD$}mGKA@wqpF`8BE zu5X589YYoXHwZ7#B*x0MQBhm+Ca_1@01|dDPxgokxiP8>Y;ZlVjhmcbT`A~t=+mXY zFbRej3yM%^Lmh$+s_+F5T?@tBOEgPe;FL$!z6&OoS{31&T|f>tgQxt@532pC&VoKy zwR@uP{t%1Tn?aF8h%iHfMqcj&GKRS-{c$$_#cjA8Mk5e2+XFl*38kf-AyaqT1CAP zQxcKre``9_)tFQmLCYdNLT_2ObV&m&RBZodWFEKZ1feqm>kU~WbTQbU$#>hieafj3 zwJjZ+;H7-yQ{R*#ku}8GmsNp z$q8>t)Rl%rWe}tI6i3KA4Sw=mqSdOe-T5vzy{uC&RW!B!dB@nUmc*eawHHq)VrSYZ z*M9@lA5}@)J?I3vX6d`~yA&I-^onw3AR4>keaTvd7)3HQknDYE95Y8`QzX_xhjUbf zos4;TcwjY7Z0B5q?wWCT8qB#-y$>>Z?oY&>-l-kdDkrqg8X3OlQJl?{RSw|=;@1>Q zFCKm6h<7jG9@3pBO$0Eaf}Pcd;lFu=1Nn3AkdTKW0_t4m({ zuHe${SEU4bJ3$6$YkVfA4gMm)^|o$pG^5x~`O3t(jAo-(2W7hp zW!FLtR9K`CfTVdyEe?kdm_dYXR_`6^gI|J^L%*oxB%@YN@DY)ptbIX-S z9^N)^&n9Connm<~^ZCZ3zMpTs`-|_Gf$#$ML-EmpK!Gh@vmG|SQwxB^*hne8<%!Y$*xBPp zJ&6_QJbl*!lV|=n&U)Udz`)O`8?@0}B#blLWD35bpH%HyzwlYn!s5u)5#PCyM}GU2 zQM6Q)u&S%8fe~W_h{b(jWsA9Bww8*Db_0bU9*A zObJ_fD@)n9GJJykiXWu<6pM!-2w+~b5fSF3qo=9#Z0Y#txt9qYP`$E3u##yD?%rBn zuk1~d{Qe#-7SBwmXw!&Z0U0|}^$7LBTMW4piAd@g#;dD2P8@P4iV#P}Xuk_;=Cgz1 zU+e&YbzIk63L#-L_9e6anA!%+70NM1}YGO@8WI{zt=F>%L+Zb_d2w zC(}PpG2cSs(}LkAYeK^CX1@l*ztM}MeO`!R0! zi({V~PFCgZ8eBl&32J-_gd4vi%1k54cWS@+0H5)q??O%bmDMTPkly>~n@sM;G^yBA&lM~H* zdi{fF_eqqbl7+Axz#NAP_~nxbNZ8Z|+IASA<}Z1}qatzA{c`3obq za2ThzfBvMml!ez}W&Tp=?dAJtGR-&-znhcU(Q&uA@hKti%TIY{nBoOkH!)%oG;^!K zV*>riV?##2lREvx_C!-|8=O!v1n2%gp5DYQ$+Um}Z*dn5mkc#j#2hOn5SLIhSFprM zn;CP#5>d2VDi9pgnsPx+MATAHD$Vj~CN*&lZF31Q5H(A1tC>;jhYvV4fG^!C0tpeYi{tuj5 zCYFqJWh0c*^9hUXxh|)nri}wpxmWWN@-(pW^>tR(t&F#l_n@8I#a5~7MOo5}8|Z%_Ox3!UuSsFRe1q zItYt3kc6AD&rPVTPQkX-op?(6tv9po&o<%w+Zlh|rOfS8?HthhKZf)nsldT@^(-`8 z9CoI}wN}lG27mF%@bv^TQABX$M8qf3W--Hgqdi?p$Jg|yP;4tu+$?96w9~kg+US>| z*EAnPix;`qq3ft10X_QUi%Y7s=4tQ^-#)vDi6b~_i{KuqJs&|OJBGvz@g(x$SZn2; zUq^vcGc>L}0kewI#1~|%rf+Mi;yBGW(B=8VG~K7u%~MH?0uSf*nciI5uHX06|8!>| z3Kw#mr58!HRn0l?>THy^ZVzb93%Z8h2Lvl1>xy`sQ(r@azkd%cwPZ+p9GH;u4QKl4 zK^?~V!o*&l=eN}b%NlM;Oa%9TngAJ(Y7{;7 zdZxBfI;&k$c?)1FY9vMI;fiX9Q=p8O;*JdG0mMQS48}l+Ltg0&Dm9#(SJ7j)F`oJ# zqP0J_@tz`3uC9ZOd1;h~nk6=O%VuTl!x&V4Tna48-f524Ugv>tk?=bu=t}r-BDOjb zR})fcD=#TZVq8c2eXw;tq%>El)LV$Kj2Q1#XWutk zI9QB$+E$^a=?9{drE4KkCozqyFMnuKeiGBnD^W~@05sh|JK2MhyA_Tv^ZlNS(%E-z z-*9r&8a`m%VM)|W1;F*9j!-ewjm&ZNxjP+oo9h+y-kp>hV!OQIJ0s(T>jxf^*c!yj*7Q zt=DIC?mKu?>A9Ma)B2GoNSuC+Sdng;@Vs$<(oXtKc0c83egP|Li!cywv=t87r|8t&+l$3Kg)4S{T!K?`F&H!_mQW#YoIEap|^#=@k5!P z-D% z_T|Bt{N@rnDWojQ_kENoPkbyyD=fd%ol542;^_5bEX)K!JzHa3!V=__(-9Z* zfrM9{oGda_pSsLxfBuV0LynD(n~_%pXT0sEe^ig)W9@A6Son2*Jn;ou|H;WeDkNQn zD?dtY15y z82;lGwZYk(gy-+($d=$6kb^qF6OM|A???!q74*Da`byE;R^FOWm}l zV3PB#rMpu8jIi54M%xQUEk70@Qe;GqmSrB|P{ztA4*KoZ&zz=tujH|cIm)#xay7{q`rxALk*P&r66mye%did&`DiW1lI5VbNvc6ajAhdOp}U|RtRpL5<7n7 zBYpcsYkGV27)u+_B$}uhW#Qk z0zIz_e+NkwJ=jUKq_XfGR^FUN^MClooTBW7Nio-ht~}cc@3({agN(c)4-HK3MV2>h zJ}=BbN1OBx*{i1caAvfw&^Wv3_#v%%c6iGpUU1_uLO$-3eBJ;0Mnafq&eQIqheN_+ z3t&Wa?rbZ`!i!PAgL+LxEq_<+BIte~!>rCmk@V=rP|{>tT;!vy(^cOQOiO(jZ|iML zrEhVN9=cDt*@TAfBvC zk8k}es(EqbRvP)N)}kKfJDk~+gFJqt?FZdK`=5{}_8V1p+2?Iv@>_gjjCQnze>d0t z;G5`wQfgAHd3VI>>oBb)jysxiBaVECI+rU@&+h$`y;~5S$vH?@GBunHUWdit_sVUv3;`F%Aa}dx&7RfyW9q^u zOCW2Af;DZ;A2aC){TR|0-|D%=)V3+81v0rn8KG^|0QX6bx@ks~O<%Yk>KFQZkxO2{ zwp7UW()vTK-UFAWf(zmz%k6>Z8o?om5ZTwM%V=8?gz@qz7#Q?y)`~H;3B>6K0s&A< z|DG8f^iUddU?h1*@4*aWmN)&$tJFc|{{Aqqi*=W6Nw zpD*E|!}ly5xj8qV@j5gqQ>e;REM?@NSM9^+tS0}qlaVImwqc9Q$Yiq)QfQkbH}0*| z&pA-)%Kz1nsTpnkO4R7*MLf=`G4lau3}p|XsnAHaU;TR+{a)Z&j=wimK&P?J7&_a=zD z+81mLx4dO5+MZEcNsX0MnUAPooHX2#t+Fk@n>HBVe)5X3muq>STb-r9t5%#{5oVA{wpW-*2 zHt^!tmG$^6+lji`3F7T9p2>Xg);(vBI)n-FsE$m-)UwzXc@ya~3c7W=3 zszho`8KECSlJSu9#dEW=r-C!kkkk*>D5ohhT|#^081%?^iB8vlmD+#jJ9s! z?bAf=&<_5(&E3!|>Ryp4FiJBZ7d-*`P4nE*i?}Y+3OHMY(?2Kc_t(dvHUYKWbC2E){|D5H!unx8INSYhN6r_dzRQN z4X*fX83dj#of#wxcTRqF1h1Pd%(Z!5|JR<2z{jL(dtz6zRuv)nuT!A9lmypj0XSLZ zRr!`@KFsX~rGJ9yhJ7QH5eycNkCo8^2G&)~Y)`kdpr7(((|%@1p58+B6_*Dy|4j!IE6XINP^DyMip~WW_;eyGX~I#a=#?} z$FgSxv+pU;TCkK7rh`FKPiqn9R!@aFrv}z!_ecaxo`0f;TKcfphuW0vw^|={xSh~( z{CtA&L9&vU6;V4DvCM_z@cz*9xmDvw6Zaf7_ zf9r1cGpUGAl0l|T9_|S`6QX5(>lv#S+8~)#`(o{raZu($Tdw&QzA@?KheXUbK?cu~ z6&2-Z=?ZE^V-rf4(fQ_=LT7n#zg9<&sW*duk`G{&Y&9)J>)U+RLxa#As-07Rek5aY zc=12>$;8``~TGy7w!q~qTF zu+78}t9G%TK_7=eNuq)Hkf@NHPj|l3m9x)3b`71w3q}tlDh4?5xaF{+A>R7QaxJ4X z)^_kyA0G;?aj`tAjM>(V$<-u0IW6 z!YZ!cd460fIg~jo%IF7q2h?Ubul@74XzQ%5_^4M25R6%H@;I%&4lPhv8J=_VDk#^Q z*1hI!qok>rJa16f4(rS@b{3mT8z=p9>nmhg!a4sEY^nN!Qc2G<{S_`lkGH>dUHivR z3$nrY+1s5I{_6DMOgF1T1u9J&uOsG>qb3&!{uVVK`1s>3*3v_wVdYa~K9?p?$E2Jm z_P;978#@Py*_P9$`|c^P%CnA&4Dn^rq(=f5Y(g{d8*TaC$BEKHq_${0IuKC#REqau zj&Dmy+p#~}PmT#lqt$8SQXLvvE$zd2Tj6zuvpBZ;8P34w+pVhW=SQ%_;qw~P+MGE0 z)Y;MVH!~>Z#@RO35t~{P0L#R?`?xmfDA8&rsd#RB*Lx|B5BE&lRc-0$+-$T9{!yd zV+H*D;`o!<`{d4}84G-)sy`yS!IWj!${IA0`!j!Q{A<7sV0M>|I))eJ?S^nXO)~w z4wxj`%do*RL<5i}4&?~;shLls>P{B=)ErzV0vD-|FD zFC1HPr7v-tgyo1W9+<@~K$1ee z|BG$J@lf?CdhQCia~~W!Ohv+yOYUSE*Xlmylv&n>+?X`Uea0gu=m7~gkFVfH@B0Zq z{VKfdC1EioGAck-1f|Nv59Aq*dgrvXOeWg&rdEE$%pG?$L+Rv<9H<)N#r;G4m)>0Q z8`1R&fcC{pxoBb;2SvQnHt>QUUT))G@Zt48U;gj&jmK-{|2%!H(E1~25J(zCHRP|` zNYA6&Bj`gE;WGaLQ&D)fddjZ0hRRUcG;D)w>^ZzDv>0N$IXXDJOCRJ~DUD|rOHI5z zsNHoiXyA}R`43--P6%)VG(Vj3%eG{L%UzPa*BO?K|`N!l8Po+GqKGk@P^cE<=;D!^Pnv2)yT} zm2t;R&XG5np9|= z|6}xfPT6?(5$|xB;GP93z>HkNnUz>!YeQEF?)7;giJr#Yphj{-k?80k+H5fdT3Yik8!a*>t4xdv*w$1 z2huK_K|M{1KmzS3>)S78LQw0lg_c zFQ2upZL;5>0MAt~JZ)!$i^N>c7kBjP*#XLuMf15OT1FEP_Odsc%z9IO1Z;- z?0$@P05bj-jdr2`cvaL$&WkcEvWtHCBITOj9RrVG)H=i-l+dQO94gmm5OpMS;my0| zJGH+dMjg76nz>ibmsHNBc%9M#Y7(^2z{QWS4&-5>q5#^LsFmG!e3ge$6GALiHWc#! zm6M-Nsbif8ak>#~Xf`NT);9Q4!=jgd$8Kr}1Lp}L-w!oMD)=eL6T1H0#shl2DM5Sv zc1JcalhEo(I~UTPHCEG%SdMj5@-}AWl#INib6PfMV{V7G3b2svaEYji6v7l3-)_Xk zyozMs348K+{2R4hKJhqfem1Ep3!?NTTB%|}BmFLGgj4OII?y4nfKJJQkH1MFhS66# z^xDC9XSK8;!4`?pZeqpRk%c_z07rn3TlD45o!~unHD~vKL%dKx10$mIr|4jkzt@W3 zh|83%VQ`AMok;9aMSaynYK5sOHxk+Bqu(j`2{e++RG~>H3+-L~uoexaU^kFzj^?FX zGaJqFv(mA5tB`ih-*8D1MQQ2{SF!~-|IdOaXUu;b(j=$!j@WuLlCGnxrCr3y<8Mt@ z37){;Xv6;aGEMM)emt(Ujds#xVreQ~=(EGi0%!kpk2&hgqmxWjDt?=U#s*Rr$TX;u zxlp+nuvhDvcJO}E&lO;SnqZ!u*(Zy4^Jauo=3JgV*mSI4AJTm?#E`g+p6CqkTM8M< zQ+cJ5pi7i%jdrIjz>*M;a(}(p1}Vu?7~gq22`29S13*H@&1SW9{7QeI_ZgejrXGN( zQY%yY%{w6<0=&xUKDwDw+Fy27RS*#kfy2VUp z^|*gz&r@VKDW8zF%8pK9p3JoDh)p^9i+LJZ=+;4kltK2a**m2+DV_IQ=JMzH$a~2O zn1DR&-fwW2?*+bHad+U9dFD`yCHL)(b%Cq8upaO)7fuaoee{6;K{Y+BrgtiM_o>f+i1Mb47{KgJ@}TF7+4?hoO1u-ytTy-O zg(Sp@1#A?A?o$-MIy&hhSa}lm1e%(-{KiRdm%m3ct|#%DtfFVI&-dNk?&-IEBrd>04^hUeY^k?wI9fy)e|VJkp@Hf}-+Hw&k?#iDnqk}$Y` zARr-vxZJg5YVrc_M{c;-^jA7N{)2tr{iVU#o&&M$o?!h8V#pFM72^E@)lGU!N605D2&)r_`5gvBPFMV5&6MR&dD$|J zhXNJ)NcCzLCLe2>myrkg`;eIhy#Q0wa^;|UE=^RK)swo+Iz9=MZz@2H0buIU9eOUE z!x`bK$?;q?32RuuV_>bf!gWI@_Z&OOv<=FcbWhR!u(l9vx81x77f;uC|A z5VG&-SKh}iVr)K6u|*Ar_P@P-6mP|>&>#O#PL#Ho5g2&16?VF+;xpgUnOaUD9rTvO z77gtIHH1xrs7-LVTEjUo_9rji0{iogFR~{;*!`CJ_;1jmw7P?%nDy+L@iv0G_x!?| z-g76XE$5eT$U6__LVixzXeSLf$JcDE?B0O-Ig7g8Fy7cBu)3+H7P;Gy1N_D91_b)f zV1@WcX1Z+Z&o!q3MNO9P>6-OeMugzKRq#b1=^qn9H|MzRpsv7(`~tO zc4ZRqN2$PN#9N3ujnkw_pPuSJf{a_dhEUongi#X0%)5%xspG-5DpbDYVr+ZRW)< z?PW&E>uy6GGglq7clVp#83G!`A*y2f$8Hz`eyJDhdo*^g$-CEBnYRQz4F97EhvT{% z64*<5iMOT*JJ7?tz@!zQK{p+02Fmm>&KSRB`Xpl0tIHg`WkGhIgf~v;&>QjYfPPnV zlRNz5PUUee8uMH+0@`1TQVKG@hfa}HPB)3{VsIbN+hZ+z?(7`HBoSvaIi#^$ds!BI z#v+qB&zyUu_Ck*ujl}Ch)$G*Pz#7f07W?j|J~B2+l-U?)GNXupTiizU7#;B*9bW=m zR7~cOPx2A(Q+f8bYUq`WDjNZo;$X7D2VTDgS1)JzNX{#?w~G4qrXi_V?+0iJ&w)c(7^n-NcVValXivBy3xnXB~fL_PcyqB{1g&1i%VGJrE?$BE25$ZN+;eg+Ob;rswXo3#) z1`pM4BV{UiBM$1DE7say9agBvV|ZCaxT-cuDX`=h6E$`#gaor|b>B6;IdYr<(LvMF z>=`;G(Se4rL}!Bt2shLyUn`AMW~UWQ#DN$UZCI%lv%fxZxpBaK4^&6o6r(_iUBwTs zp;c)dm9LoFk&AEMNtBAx87%5B%_ge^16R%tRT4T734H{~jN{^2m&-=pR#gXOV@B4o z;LCi;ELyU*-T(J9A)G6sV9~k512H|RLwYwuX)o?vsL~qG;4m0mmXIal&K8}AIFgt1 zT{t<#BeqBWZSYWpdL+h!un<0Q3Pyrl*An#L&6nY?cKzz~M{#O5q(tczr|LbFBJvmo zW4Gn!;=i49T09$`0s+DMK8L^H*fJOmcn*3kA)`;Q=s$2wLJP@0ASYxQlJb3u@VRS=|;5TZEyeS9gq9!WLZD=DhUJm}PEhwbbar9h@gjmP`l4j%KTa z(95)-){v`fj`zX8O+0`KA+FUq;x?kM@!!?R4?Bq7K(og$dAAXCUP@7&)u}_P_1?BU zR9%0Tu>|O}zKPFQ{dIUAxcwyfF6R-k*HLqcvHX$anHI=Jj)~B1(uua8!GmTal9A9x zrrqARgsV!*eVsbdp?rR014YIN+hO8Ok=2U;kmLxfHBL<*t9T)ufibvZnpmjnCFu*w z9#>3MaPXqSnA+^<)7Po{ZWO(ZGzG2?vwhhY?_1kTnAcrDBBlq0#YUCT4leadVR*{^ zs$vg+Q}XAa`Li~I?>?@<$c`1xE9Z++AKOj7NvKORL(l2>haah0B%skFf-)|P2Ynpz zBj)O-^Sv8Hmdz{Jh8VQ4O?wj^zv#gRaq(Rh;gN3U;Ekn)!i zEnbr?@UkB`%tP0$%fKG|HU)6qSMB6R#dWro{dDYu`bENa)sp8yH~Q`nbbf7#KW@X6 zX@^~+AK8Ph`vEX_k@2rQ;lT{7h&G1s9su$=QE|#zw?O->z(bGTS28V#96PaNLBCJF zPnHq`6$=a+=Hf9wnFWHMUm8kzmYbFd@>fd3Me5cFu;i@eg;mHTVo_M|bT$j*J;Xxg z{{Y&!Wxcm|XIkw`lUQX!T$5y~5k4^wHLpsx^=Q?5G6yE2I8D&g@Z_(GgB%(&-d~jK ztUi31KB#z(!&WyGMGvwzRR0;)JYjKi%87AzH*-yf+_ITk`QjJ7VH6{e6Oxsk!Np#N zrr=T`r&xiKH*ck8^xUiXIm5ady*|TR%A@xS0u4(*D%4OX((0d=sdVnHbg$24;*HZH zy2ZrVK}PnnM?z4blvX1c#iXK`+|NH=wB>1EyI7f)7{zeL%I0gKmR@<5dD_<|QGIC! zV8Gwl39FqY1xy7j58AyyM8UQOwyw{FkNCd$?TMQ@;Mr8Izk;s^l~4BL6~)m^q*L;> zy@iqf_MBAfJWl0Pv6x!J1gI12XpNG(cMpRUiN=Fs3a&1)iGzqiXEeIhE|1r+&~EY7 z47Sv>OKB?wCj>0l<$MKCkZuXBRTAMhl1CLOdmCR#&!6;P4r}H91ZYVqBWQVr?u#GJ zz&KDjs;_xw#i!5N7O-pWChNvgTDq-uLpm-hMyD41WJ9caR!xpk01laaUOr_&+bNc~p*u}pe9i=Oi0;t!_&7f6;ETxTHHKtT|!IBkj-h;pkeZlbY2rI_Q*?S-_1x=4t*4m(mRUL%8*Wg>lVNZ6F zzYxArr5#rhu&w#10VWr1I4{j;O#SXAUZlM-BzAC~Ba6TjkDD7y))j?O7l329mO)YA z!JE<`ZHW$z-1XN zwj+CClrmaqey6gwg5cd5y4*N*_>4tRaX+ITzYWrHQ{0F87e)DaFF5@is|)A|b=FI= zF{J!{J8Syq)R3<*s%JcSp5TetY^}}s^x_fkVS|%?zuw}H<$`jA^PM?gRS1`1`Vl=P zjdxfhvpFDC&O9%qgEfg7%}C!4e(Pk{+Q1gBcqN-3qQ3V4VAN=8oN06>NidlfPm=Op z-nO(FWN=bjjf4P>Iw=@I|MaRfZ9wnm#w$pA=B~yf+>h(Y@9Gr_El5%Csl`9W@Jy)yDct9AGB$I(09wabdLnp&a>>W z%T@J4(ej{arhenLb=(eh@t(+r;`bAu9E%t0bc4WWN@?+S0cIQ8Fd zkkoSf+n-6YDMfDi)tq_3avjMeEt3Ew$--qObL7@TY^bIEdud;b*3b{XZpInSAt3pJcB5pt1D#k|w)D6aQUGc4hqPs_DP)zCyVH-ZP9i_o56i@Xg1;P zohfY-vJgK+aZD{5Gr^c;ZnygmTV;};-Kro0UyaII5QW?%hyqV;CShbfFUV56eaU0N zy}9L56;Dv}9%FWq?7vx)>|x@D-S+ZN&K!9knj-UV#!=$>9xC?ipWBXC@C2%@ciSJQEN_fy{ zS&6aa2fJ>AE%+j%M)*(8K}7ratXv+^f?$zNe^MO1ATzHT;y@SQHuEh>IY7y^#v+tG zwjv``6LHSZX6C0S+D5uC=maPVwoyt@zgocF^-JFD`dSBCWiKT~uzOINPxoP+&T&!a zq@@E9V}dtD_vneWIhni}6j|isEo2q;vok|;?jIe)_Gb_6``fp?K`NLbsB1^PDS*q1 z*LOZ67&5`{>PIkO`@UO7J*=hb1psqijKzR4$EfJ)57{zq4#oH>^C4qoo18B`a5TNs zEZ@Ul>-EZ7zYTr(%>W(#FRf}a7Octd;m?}cNvPZUdD+K%iV-I@c0-d<;dD#rz%}6> z&Fpw`2};U+mVs8g3hOPcR*WeKuXEDVpp@;rqR%LJK0=XcNT!^YV)Xh7KlRuzadIB} z8-5)V>~9K8U>LznJKf%o@c`dgq(okDta?!3nm8SA#;_aLZfWAcS_x(JfLCIx-hBhD1sw5s z){6qXKBEhVE?aUP0xwl&srH1VY`5#-mt{cLPF9OeBo&? zTd!*fB4xq?Jn%ZCTY#~F;&IIJzCl9Thj}j$xqaA_7*tD@0f0&%q>QX+J|61u8}RJL ziZMSK1>(`~c>tbj4*80wy5Mx!%_~$H~JuR@!4&vba~6~SNO!`q;qD{ z#MZ&*#e(-HD`(5w4_W{&wE(J132XR(R@FfkS9(5EA9D;B67>_F4NQ^nfV@g6#ds^y z@z=u&3N1)t`IoprYQ_`xwAP_NT;#?HiL!-irL>9Eik26OAL6cm$=j4@c5Wysc6ALA zg%eYk4s3~*KE}2wVB(b>uX#lRM_|M;ymX}=LJ2MknW=<$GEdnyOkcqy318Pg; zbN1A2zDVQO(*mo`RzK40T5r=2POHSWzHM)llAwltC%+P@(Ia&scP%-c`fY*unrMzV z6E7x}&({W(=X~W+doDr>QIS!tCL)p+Q8q4(?;!&Din(eQnhH-bhulPsQeRI%Vp^@S zn2B4v0H@-+`U9@V!0iTR{int+LCsfoddrwDYKkn1*;TlGg>d0EUepiq&NHTxcYKfY z7lS^JU6ycfRhp^Lfx+Tywyz#h3uFwdW7kji)Jlxv$&QY@dyXBBtFn-=`iM4JXZUu%-t&V zxG`hp0tlFW-fZezK^@C#H{9jC_mPhUeeVQ}vE;gjb+pz&f!2u^i0sxpLvXrGk9q{# zDo__uZ5v2e_;k=-kFzu#)|Sm?i%){^sxNHKObBjeCtew2zvtRrc8Zz##o-}lOT?-? z$Y$oYhn`s=XYtt-$mQ{OkqxHRN%`Wu%ucbhJcN3Kg-K2zYdZ}d0o6&U zoMNIhGlyKsNtPabr&)Fk-?YIUec>!8??5M4%~G*wN2Y0H5Y+Im6mzh`@rlaIEm~Qd zskIc+O46dfW-^CaQ8LBmBnyVZBb7s}J*bnPa=~i=kypau`3v>*thBNBbx$U?9*{=s zbj0>qK1T&ru67&z)Ix!mNCWgE&g&WqJiIdP!hjkXz?~js30hBLRwuC?_4yg6aI2!i z_=e%8H@*NMeCXBN=^W|*OXDWN4{01~AX+{p#RQDKscqgG2wJ*XIJC)fiSda%&+CB| zJ6%=7GUJ!w$-zAlvUz7S+@*rTn~j>2kmx&8^%4w`>5iSQNUGVMp)o&Yj_mQM6TSQB zs&MKQ#miZ71V&v~ng38n&% zgj&0xh&TK1Or^6=%sLl?_ijA6p8YLxY?tj0H+27=%ZF-MJ@E24C;zm(3e2K@e&ypH zk~!Sc0+at0GPUICb=ZCe4zR3nU9;MUlV@4TfU&d2UaB2IzdEtmz9f@1#8vsm{swL-S#~R` zP-j0$c588FgP2?3J~wq7FPy0%`EI*i!W#kW#U_>l7@J@@5asQ z*>&pMGlBRi&|r5V%Zg1B7wb!<{|_>4>PW+BU<}JbZopz*MR{3D4TH|zh>-!4l)5Kd zu_tIiA8{?g3DhCUg_@FN4GRku)jiuCPMIMaQJp?t&IkN6?E+eHPBWsm?AmJ=%y^@- zo&yaOOC=>~HE2@vU^}7I&XE5sEd1izth8;ZUfl#wJt$Dsu|>=0r(L}tE$@>hSQ@05 zt&(v1)O}tK#11I+1e^8w&Hn(CpXcXCD99?s#xu}?QN_eOe7R>nc%t!h6( z1zB%@W+$;f{#ZV2EHK`yWWw2uOBW|kM=AJ4aUbF@OEIfQR8t5l_Wv=a*NlTE$W&1WTqVfZdCASd9(4D#_<52|epp1Sp+q3>z+}x38%Spzjy4DAV`Ixs z3hlkx^6;WIWD7~*wcrG#$P8P+nHJ`DrW@IK<<6CMIzdeUVLM2o+*kjjOdJISxB*eZ z91VMO%R1`?qBa%~$BY2G8?w`@UUR55(DDW>@q{p5@x0yGJnmDU3HhFW#uhj`YI$+x zfm^cG5K?JFagn<^>wKZ5?}{ID+`qZM3HHfQh+H$FEDtCO5p@(7*wHc>J3?X7BaTn0 z0SB~46@ymX@6LE}(nUIgWfiPrY}3RsF$RJid=9qi7D#~tqLm=>ol{;r`LHa{EW8^f zXR&k8QCu`9wJo%bvhPNt8|8G}%@pwQS|rS_>yl_ADa$@I@FEJcA1c*NPO za;$>sJjo9Q5xw<1l7SvjXsgc|GdoYYyW43)n8P!girQ0AxuI~u*0#QU7-8oZn9b!% z1#W7$;)MxTe{(M3f1pX3Chc_>Sk(3>22+=xb6Cimxc{FtX%RVk^kI$~P)-JRIH}p? zFz9-W9KRWNso4K2DnCKorEl@k%E+2xOCmp_-f5D_TC^kJ$X%9zRv-h5WDr7BcP~xhUlkok-_w zwAtjt_1Yr90~dtxK-|oRXd_ROIa<>XEyJ?uyB~+!VH-fPs^SShAs5W!gsx$p=_ z(J6D#n$z-5IK6&2lssj3)y-fG% zGDKf`UNrmg!HsK|?)v$i*m%innW4yh5b6gVp&+a3dmaD7O;4K3yTQ)o`rZLgyGy&b zLiZ}too`fqF}ABFSyZX9HQC-O5V;y^=^7xw#gW5{;1z!=6e}KU9Qt0GrXJ6nUlra` zAor}rHR_!)cOV9^!(OS+w#B>s^A~R_UGIl*CtLaELTvx8Up++$&)j!+*gPXa3h)c< zLZ0=C#_2PEOX7Zy#&yOBq)fl}!L=M~G{f0t?dgMwOFZj?eiDDK$;c{@FOCFWVli!) zlZv}DBb|!sYQQJ^FL!UR+zw6cnXAmk3?bFIb1)A^F7H8?f5$~Z7`YW*PQ8(eb4->& zPf%~%`yX!lv|Zwk8U`{k0MDS`!nyS(Miu4Kfg;kTd)sv+4%8D9l({jx{3Q=HuTkmy zklq5W)z%k-^SM|w&0#!~pc^JV@A|efM>Li`7qjP#XIjeSpFdG#bFHfy@lY;7b0>ab zR9mlX3z;miz#jPE#=IVYTh70gF)uLMo)0WEA>Kwoo&{l1KkH4S zy2XuP##jDy##^kmS3~IRjdw!({f1sz#KK*tvkLf`Q!d4CB?7~hoxO=_$FF8MDN?TA z_u%w0Dk@*oPV|tcb(Q+ydTJv5O=DW8q&F6elW+_7jhFNedpW9VQyp-o{GD|h?5GIb zvZR)iJ&FM+=4f^nW>IDEYg#?rvCdg%6(SJYP=(mmhES=^Ors#O;5k5KEF7_u<1T7M ziif&+Qx#&(c*M)RMv47_g&4t@95r-}dGf>PI=9Pf6r#ur5PO zEACC$p)?B)|Bp2ZR>NjKq7x{_tKHlO88{iyVQnNz7Ci51V9}{xAAKlWV4gYb-Xt#| zi{mvG!?cpH%#3fNS?+2O_BfdW#ddESob4+>keq^ui3oQPrKe=7xL)E4Y2sC7$ubb6 zSC&-U?X3}Sk$xUmZH261Qo)$XN5DUb(T&SnapzMCP_{i&rqJ$EFz7 z^q^D_RI@milu{n8*F@S4U#Pr%w~}X^>`2m0s6|ORK$pofk0;z;L}#n(--<{Vli=9F`>Uwv}jL#~wfD_%eG($P-x=O|~R^%%GwIBW1;un~oY zJOCmdA*t|}jnH&tlyA?!sA9Cjm=%J#|0}2*AifdFVY%|O| zx9YBzy2;0zS-`(xc4mLE{~d?Xx9yt!S&QzbfM=)#|L7ic{ER0u<&y`gr#8pjan6Gt zUpFt9t+T?44jXKm*1A^U=C;QTs%G_vcaYo;Tq*t)IIy0=anijiBRDuhsC8N%jN)Qm z%}O2Pb4QLe8hXhxoMFGEi3LBjdSB`B1{C@dW72Jl#u?6N#Zv(caLd{CVAK1OT4OT{ zN`N*JtrgY?Pq1y}$4XvCu)QB|znk$Qm@MilTR|}okp|;MQB5MswGQW#X38aNsSe+r z^4>ITNR^`+Y_n1C|7UrKI z&?#DI2kdg-E9>`FsU047hkke>4YIDnsBLOH-;~coXB3kpX;JVPsDx+Ce{be)u}F-H z!f6zIz;(}FYdb&Y6IVEPChF+pe*638OiFqt*fbGM{rD`r{9aiehsB*Fe3O!G40onm z>*QZqRP^T_r!NXGe_K=*ZIraP+>Cl4M3k#}0>t2n+j@q#Z{EN2)A)0RSOdX^$W&Aj z?G@m7s4C^{-Cb+^I_88VetvY2wJ2S|sEt8`xxl);7M(;aJ0F-faOn6|W9sX|*>cp&LhX(A*QT9@vbavl==l!@hJ#3X+e5a>x99j>l6UF+ z{q(egxV!^P&w&*5r~8&2@sL#CQOuKVvOL+f$~5W;@8k4nmDhm6q`;}WerP(W1-~Vz zW7D*q!XMW&OC9lEv#bKj?^2(-rjLdJ*Nmy`Zsg@FNKn}3Y;qcCFy^p#6@k&8nNss|!I{gNacht$ zZD(QfbjtD|5}n+Fc)jD8w(?ArEX}4Pb{k4hb>MA&1))f_5zyC_*J+)A%8bp=hDwL% zGx3_peyQku6e$lhqouDneeiQPA(kI-QU)tgU2UQu329imA4E0w6*}81(tZ z929sHm;n;&z7nN^_=Hkc0D;1yyuV8Ij%p?0WPkngSI;m1LrNpI>REm}G>M#8v*>6o zksBQt!!2lwuiOV#L~Qq4-$M^GS5veeD^Y9;wwig5Q5XhLpB~Tei^^fKYuEzcdFpwtGC!& zXUv15WIPPX0yv{Y0`vNJ_j<2IZ{suOe+{dfZ80^ zP!e-f?C`#;YV!_DZ{deex_t|i|J{b;YaLiH@cAtAUeNjwk)M0lEJ@Ft=UzqvIduQa^z^Z9O8 zTmA}N&vg`Ela@9UZ2eSV2DqnxlO~EZ)ir_4hrOPvosMhsIoqXOq1_~_%MCLH#z{dU zydwTlj|BN*t9SdhI&D|gbQ2E+@;>rul8~KM=QlZVXn!9p0I&lu&h)}jM%BVKhS<>k+vzVEi*jU2KsVlJ&8tEK{4Ks9S z?&@@~k(;hVaY?81c~|G|`~9UqKy2^#>+yO#p4U=7vm%uL^1**zFpBl{^8-P2s;pH!r>VP)CFr`?#^zo4F=4)= zJP?dKBnKnrpx0)Z3As`H&IQ(%f zJ-TU*9wUz=orMesx3^oqy=?@A19X&=P{U_wcsqBDoTrPD?5e-C+@{+Rmpb@==E zKBrtNOTRvkTr5&H>vj<@j%|+(u3tBNqJn>GX2!!La`8!0w~3a?6h2e78JO2;$(t>2 z`*?Wrytf%<00A6YD>5DT9QX9PyH1po0QF8UQ(9d6h-*$zwD+{Y|1+xjd_Ch8r<`aP zqPTSpEAP}uXP|Z3-S90_7M}=_wSAm6YKf;s<%u^Eo5xh>#q+N#N4NKFSl`G6XD52f zGY;0VB5m8?hj!;B?<(R_IvjnD{@%sxN_3@&jN_e*iV~!ImP3gin~v?>GOn)3MIUzw z@oNI{AIMh52l)P{jAO!mJM2LSf8Ye(cZ+E6OBi77$&eS15yL+1?XZuiMVpObLM1l9Th7Ii2JbW(?N>`SJ+ShDg1Vh@YguIwV(${{%sgW)ol#H1&nWwz`fcXTA z%1czkmJ}c~k8To9y$CSr8x~KCdE8x^VHsMA&?LJ>NL@s4t5hM>!pW(unP;4rJ0{L^ zb37@%aCBzjnz8jC(M|2m%;|HslRMexpBo_E$A{Wb-kJ2iWk4f92zAJjs@v?4_20c` z@~m>Pn%yjOk(>fTiZLFI&-3DKHaKhJKo~Z91#UN4B5b2uF1F&955QZ_2Las@F8ve* zgxPep$e}S}}o~G0;U_(2P9AZoj@R4%b93fhG$dgCW>ff|C8EzbCdpLFkHN+7jycH1_*lR(#JA?0n%g5ns z!|y3Grxy^NkP+#mOFwl1f@=Y#bK`-Fw)dZr^q@;FFlq9OKTZ<#5wQeiS!}5%0QJG% zALy3fN7RJ3$1$N!b}P*Rw-Q4)E<|t1ijr)p8Wwt$6$HpQNG_uf;v(ovF3R8o$4f_-(4fF|G+=sGfROMHH{|Nm83kv)Brak%XF{FkNMx% z${K(OzgogQMUY-HB8CuE=@zl>HGR9U9lK5QMGg7NS+eLm?5lkcl7?6z9DR7i3t0ht zdJ_*yWDR54t5ajP`=MSX_59vBlxy4Ycwjkgbq_KxsJfJD-jnEkA1}Ak?_5_%cq#&7a*TPUJUEJ} zYmg&D-&6z>i4qT)QER)uGV^a#)E5;KT`-FkUPp z*K)C(d2d;5f-!C2IB{yeu@n+~rfIbd;^|fWT0Hq$ir*lWxY`HYaVx;)8t`+8h3_A~J$x&fY}>ih z*=vEESW+mV+9T>xnz%huw-zkQh0amV4y^MgVAZOh z!m;?4=qJH U(}y}Q3&Vt4Mdi`3O0zz3vqL)V(#)M5clyUP)V>M#1jiM*tlC_9>e zS*HC;63B`uqU41=N({X6iGILFNr@lJc(5VjizOM0ayqUy?|UMcU41HxE-MmDnjg$^j5Vv$T@r^NDe?I4&l~p!rM1}v z6pFsdLjs{KIwJOc*9XC1<1srRx71vbAdP#RM+U;%9p)zAR1s42kqhUpBo5 z4o>DRkI~%Z+;PDkjGw+cT>KG|CQq~G32&57l|=S%X6t|<9}CmRtiEsk3aRUB(hP%v zE8*-R!?^?Pj`zX6xCmTmao(D_I`A#d4ZDn5@jY8J!x)}Mh^ri;%Y2icR>4yO&ly76 z=3;ML45EZfcro>!9(18Gw}7#<$>p{r^6BYTnR^_J2mD2N*}(}TQ$&UdvY@{-xh|EC`=>y)(wf9kldybHd zd9;#Eqk~{vF&b9uSG=ZK6uWx*^yGg8rs~l1YdPI}Y_s&bMHlub3^Dm;*Q`b zwGW5AQQFHvUDf;FGQwnOe~Fm*{gS$h9tM8vonv`#k++!f(hAhOL1NJzSWJW0lF?KwNo z2#nLj0RYaWYVtfGyN#1P8DIRp(M#J5cKqC?shx`2NiQ&1J3eAdWc za}kmkgH)R0@w!yG3CwP5@rAVSe(ngq!n^()usdu)Az5^k{V6=nLTg;+$BpmTtQ@1E0yn{qX#L1+oU9wACznDn+XBr8gyXKCu z+35pMEr4#Y$I3VXV(xh*Ck?VTEV~6@-x)>JCNWQR0bk5^Gwj)I#0a(%7fIX*V1k!l z)nF!>9rpk}jH+W$`L8yoj@6>+{Ej2b}n-{W8W9e%-Ycf4VcStqypJ>iYw`2uaWLuN)Whpa5orXPho-^HDM)M49v6jj)y zcl8*=DxpUMnzRE2Ln_Pau?tTUJa?{cGI^kFQ~kTsP{U}d-4J|eY~wIXS*9Z1c<+$r zteq8=dRnI~kuL+^bi_-L*sG%4DG4AW5hb0IA~TFWk{DK(Gt&-+b-TZI!oNOe<782q zM^5LkQx0n(v`1m5nh-l04|xiJok>=j4`V9TqNR^m-(H1~3L>?=Hb2dnjM!*os$P5r zGZi!(a#*ojkjgQ3?ydhywAoV+G}h>;lIh!AR+H;wrdTHFrvO}UK=&(aRi z(s0GC(}$D17upi%P%A8KWiu5dwmBM_rSDw<0&F;`^kb`4r(z6g9~-<-;}fAi7D^XH zfieU^)u&5m_7HB5+713j9n!7{V>5h9XRW#EwPOO*O5;mbdcvHMTvq(YM_;A0gddXYW$yIq ziOk@^FK9?fOc`MW6Z{x;Fl5g~nF(4V$gaaC5IG-7Y@QlPHOz2Gn~mn5pA|f1GSVP^0EZKjr)$ zKhN!!$P)08g_eL$y;ZD%J^AH)^F`k(iZB0)h-fe76%1q~0N!^?LcnAu9`B*F|Lh?# z9%11!w;!Fzb55{dwiPwRdtxpb0KePlgwM6VVPiI$>g^Kp+6 zEjM{4U4@DIPhg{`UNJ6c0bjbmz6Wk;`u!)}p;K>Z%+cA28M&~^JF>UuB2UsPouJ(D za#=)pg<}K)_%e2!LLN$Yy!&GXD?;)R+Tz@0>lG)JzPGfUx0D65ugKz%u00dY0!Ryo zp)2l!hrwe#8f}scV{c&Alh%HR7|Wvk9K7vuU}YJvkCOs@`J^t<;^)zE@S#FLyEE%4 zk}#=T43rXlYACyb@k@%4O%xqbfOOG79!w5cN`A34hKRn`n;(;qY};&hawB=+c9j=l zW8-o1M^_GucP%44-YUYx_6efYt;3UoQUahLfprpOVVj_bev(ei zXnXV1wt(io#V5CziM#GR*x5Y=j%I452=P+(tR66~My-GA`I!ijIQJ1g z)0`P;*c>O-UE6*TcyKad$o_Vb+64PPEk)9i7F#nRqW?+g)z%Zh_0fPRSphoqe9y zwKHH{c(?nIJ~d+T!ER1%=OfT8Li_t~973=b=Pp-i!K@NCi54pG#c`4#x+J-8h>#F+ z_3jn!RiXfd6m{XSbrUkTbgWy~rBJm#wsZ!Jvd*jjfC#2R&ANE#`q95A5WBw3iB^%B zl_z0cK=pHHot{p_^DVn3ZlX&+@V$ZmOzc1m4JuQ`G$mF~Cn??rLTghHSyQHz(xgi- z6WT2j3wCWdw-2m4diOMhln^RU9OkV#4Rv~mq@w)F8Nu(*?OZ8wRx%oRR1vd)?SO-p zV#c30l(1p4(TB1dOJy1`jg~+8kHKT7w`Y<;M?yCtTzgW%zqY5P4xiN;QQ!V+(?fHp ziK!C!Z$+M{v zFB!5Nox)#j=sm$zV-VJpb-RZZQ;06OD*7cM0O90H=f*yHdfD@KZ=0K5G-E0WmJ9D3=-bHv&4yc^Q#ehd)^bZUbQb_j^fl(C~>R zamHt-D0I{_yyhKFj?HfDC4*Zg(L+gQkE_4B8FnS$abAYrV+R}Qa8tcL0{Psj=z?5? z+G>4s{K{36$w!1pcy7J!C|-PN>)-Te9DX@r8_}eI7x^|wyZP7xz9R|}kVy&4k>|hS zq~1Vb0*xudh+!d}tNM_ReENDZ_585|dYQMXWvRez@mOo5iE=GT26ukBW#r!Go3DN* z-80LcI$sD}Td`=Fa=EdB&Czlq8roE3peQ%X2e;89er!D~&x^-HP^}9MFcG76{bC-AI>wLo$r(IrvBnSu6jCjg{OfFWRfb#%$tA0 zt`(!|ul-`rz~W2W@~7TGpl5S&Km=08;>{kLJ$tN4uRVBO;K9p?0Q?*s@>oq*33$CbsC{MJ-OtY0p41@J%q>kI2u|3VIq=Fnj6xpTtMprjR8k+1L6_ACo&YPUnNdy)L(I8K!xr zeO==^BF3>(41u1VVk)v`Eof(H@@XT6<`Y?>(`!xughEu#3OsKxW8QwJ%vzUVNP}2+ zR06l1XhD-VWdB<+^Gf1&1{~ioWgA70f#^~mn)A`BM=%OEVD2B>qZCQEBGF5WPA+Md zH0@`1`BlL*nU_ANBaKTQH)cVGr!vhDr7GLGci-%_&H(=2-QM`iMqHeR^zY+el8O}b zf0CXsmTp0m$>|Z(W{|7$(e6=U9w>V?0wUKxR_&!99=N7S1!bT&BDyf`7_^S<3TC(W ztAs=4nDzDc=~VaJ3Lcpr#aFhnU5kE@i9=t)_v)tgf{yS&r5kXShqPZkQj z;UUhkO5(E5w@cLBg@aXiqQ;ad?z1WsnoeO)&E3Ilxwvh-3s_;^ukdYhG#Ulo4c~D^ z{b|BpQsW^H`G-r7Fc)_yx153SgJ@Yo{3;&j6uO41pJzZ)U6#a`zXB|w+g`?7>=B4oBqn%T>x7H^dNjY6XNprjMj6Yb;m)d zSZv&Ta30bVc);~I!6lut@J@H$@5q2aRey1wU|}~VGe9C@R`h!O?*c7w&Q~ZZ*4+%q zLHf^$hIw<+)@)1C%WW$;X^(iTGjq$hyT2H*3HGH;`jix&gf>HxyQhZzen6BRn(ND$ zu9Kmk3#l@hXw#_+9n#A|C%R`yp?Q61$_}e3i)X;#)MI^u-0IW?WX%TQF>q!79t@R- z2J04o|Mp%1i~#5^;W$oH zay{ObqwD>szm;@$^R)dHd3mRrD}m-%znZxbD@$}$qJL_#0~~&u;&?B*YHZ1A+Z@N^ z{{ua&_m6l5vlIvcLD0k(^YY@Sr=yz4O(8TPG!{=Es9>=dIq@%CKVE}GL-5m1u(>P4 zNp{!Mu_Yr`xq~rsi=jQ!9G>rs>x~Vcq#y=$&W^KxlW6bU%SZ}Z!XjZpa>?&UcV98u zyMAfKMiGq4z6an#^dIjn28FtR(Vp#51gOf|&R5=Pq)#wx|KQB<+}ib_>q1-UM>@(=#Uos4&c>={$BmWFFT_e>3vQ~vMAK!ym^Bj*EAqm(L3a?Kx@;?^_G6O z_te42CoPTwtWgY%OSYfv_!;x#Kq91XlZo(ZzDj{`y`Q5jfhJpORQTPR2CN_$jmY*4 zB+Q{`Zkbj@Nu$IrKes+g?Skj_pNY}luxy?_O&1~BgdB>9g%h4kczn@YPZ$(ix)ItWR}LRw*p?{Uho0tBW?JL`CL)Z197tQiSxIDoGEQ|hid6i z@Hj@G2jo3sR%5_BsxzfTCsk6mTkoFctMf%E5!_#PYW@aG?cqdZa>)6BA3iZQ;em&& z?n@q=FChFtJ4>{hG{+@rr9hDFJ`h5;Yh7Ze(-W2=gJCU$_gT}29|q>&q`)=3q_Dr3 z&(p4mbez@>A0`~BQV7hPyz?H}_cUfP!XP-1zA@?zQd5~yC|cOJ#5}n<{CS!hVCqZ} zv*|9C!a&7^h#|ZwLdl!s5JwXrzm8q8YS7C6rPRMK6_$$)iX;R`c~iXjjr_4v^*_C! zXN`?iz1jSF9_$Ua*{wx48(^K&O0Vj6a9)V9&Z24?E?UBkq!a|i)yx*%ORoo$4B=t| zP^xp+otjD;P9VbDd1C9*@oM-_LHV0XgE~;10X4f$>l1{qroAuG)%)+)3~*0g%>4AP<-9*v!+X8M62nNYm7TRM;BU| zL=)KLrpJ9;{fqQ~)4Xz^W_@~As)tb2Qp4GQaUNm;8YbFpW;;70OK!w-B2kONhCijC zgE{S81L_&1tu4f2##qZynS~}{ubwurUy8pQIxyKBnWYY+v#xe07f-{NhgNdV*=%sq zF1Uj0qw7MOW#k$&4Vc&;c$^Y02Q3X6->abl7ca|+}guzmHqd$qC zne5Y!7O=>Gh)-0oXd?Nr1L?YG%M$T+QjJ$-U=VYdQ=vN!nMzjN>ZO=G@f??5j3_;| z^KOty_hdw013$Fb@i4J#U>ijF=r7L0bl9I;8b5^~$x+Cu6#sNkB%x_oOTLh}A?E3& zY0b_#0Fmt=IaUH&*%k1ru_FsP8#au7D$-3NNI(VY2Ty^RGaS)t(q&CK!2Q&t;~6$H z$9|kyqymtK^wOTrE7b=(Yk!K-Nz3`XrG0Z|-h+1|^H*P;x;y4?T_5CiBo(3-bI4*g ze_&G@HWzr#cqD_IO>ow6`BiWka~i;YS0jTw`pM4FQ%7FxI>LSpSlRdl4KZnV6}Hjc z0gXcJX80Pe)@GHSn^HXq6ROQcTuj@@@c4#&i z9!upUvfL;Y3_*KPTmhM@5)o>!0xQZ~TAD?}pNt20MqpBRNGs9{v9fyJ%9XyldOsV8 zNJaO!`7Iy|BH_rER2f7$$5?gCXclQd&~n5q=QIoRg6-%I?Z8?)mrVKa9Wi8i^MD;2 zu1RPjDM4A_MGI;ye^D>_P~fY80SGInZV*v$Fj_s>cG*eH(8owoVsjXW5~94-tEqalpC3h# zF#3=U*=Fl$C{NAz1d#SYS|mZgRjdAxg7k(R=23fR^pH?{o2*WBwhujIH`LvgNG6mG z=RrMRz{t&7Und)WCkuhXSRX`jK6~4F-dO<(yNgGUei!apiCT|*A7L5|++KoL0Qabq zw8&?J6pLl14I2(e?@R2}GqKt6wy^WVc{-x5SF?9#bGP$Pb$|%O$g-D)T4c{3uz4pf zN6FlWjF#kzm;16~?6B$I0xP$}LTcHh2dtD#uIf$vBMLUU)2Jf&0Cbo@N_2UAM1Bp( zpi79M#n`9uOT}N{P8>9rVz2rx{dOc{z9_d;O|)>!3$S@WHr2NIB3oEO z43)$BE%U)OyS}96))GwdvN?iL7P!&M6kijL*Yth+vrObQ5Ei6nYMeu}SbSim(@u~| z=%n!vNrkVUt3S~GMx!d{K6}X3tA@JC%RU=0fE-~fXzfbEdM6lmVFt3u$@y?zp}3zR zi^zU`I}p2E@{28e!}CVmUNn9H(fN^t@+zCP6OZjm580rRkX8`<@=PH#T*4L+yj#71 zrPX3ysn_1{o2J*T_ySnsTO`qiGy@{hX3y`PPi3tpbX!=cd(XFrV8=6_*-bM>&l0gNHM&9<#fRjMa|6)^ z|InR6Q>W&>R^GwFgg8z^sBCdhkB8Bh#vG%~PU#VA--xG4MZ7-vkR}El7DT@3%+m_zKk zYNIK7?)K*Ke2QSTzWdt7#0^T`J>4aVg}=TNK_dY&9Ml9Ua4dC>yqm&5;N?x4H{kyC zjcrkFL7sjHKs#MM-J*WAJ0R~ubvfeSCZ1VrMsGCqHo|x{iR2=kOSx&9J$rye5U!qu zn0{8D4nTvy(T)}V84=e;6jZT$8B?h|U-;3|O@-5LYbs^z{Ogu5GE1y23@W=!1OXnNYJIa@*!SeLQHdrnwX-Y4&6DR#56asH)Jl4fE;FInlNe+{@H}`8P!>Z@ds~ zki7yE#nX?22@D&VdzUY8xLXHqlwh!%EyMM)Kip(0&Ku_;Ut{VWpE%M3SK92~4_MJd!QPdQ$SOTQ>j?x%h<8aF zWZmYi33Pf@q6LMcdRtAf+CFUqn3+i)5@)fur+!eJnCzC`%;wEr@#6ntFmM5EJEUf2 zRLP4B7?6@FAhSiG(Z|sBb>>^@tm=me0U!5?9eXwK#U{{D*)YP0l=xv?U?#@_k~UVK zxx;GjJ^%MOYn6X6scDz6;-RGX6`4hPBwz3xY*&{=U18_PT* zX*{MWm86Rn&l%{Dfi>>AN@D1Es9LP2UsPOllZ1F%*iB}y+49X=d>(D7BO4y5*`SQ7 z!9rWcw$#-@%>uU!3-wD?AwVs3din8Af3My>N_3XLo$r*#5Ml`a8inZh1QZ|ybW63! zk#t=EY_++1p{$`x=WA9&Pv0)xb*1Ii3(%1{W3>0qBoJ8_w$%`~Y5 z9nB0zr;MCWs4;0rO-8hSsm+-iQcciDteN-kQ6Hnz1gB-HmNmmSI= zKB~c{Uq$bY^}XnjA8&Z&7rTAyVK05^V*K1&%_A#M%k}6CR$plDoe!9{G}L;^H%+oWq~_4h*wkf*Qv#c%!#^$0YC-gMZ^4T=rm0 zmLkW>j$D-RVn-~Hn3I1}eLWn5R6MFTS5E>&gG+G-0`A@hH^fmv-ZGH8RFr+$dh3sedZruyRDS59+{x6M@h->?0x|6fb##}G|T3ZoxGg9Ub;HBh+zyT26 z!_QbnSE~s8If9Q`aZ7xgt|^3;_PIj)yG?|fh7|XvUIV`#XSvrB$CYpRdfg^n(~xwy z@kRR!v0;yGrC+gR%98Q7RoYh0EyNGAJaoKlPfz`yS-C5h3Lehi>1`Yq!$*Ed78x&{ z56w;R{epS^yX1{8u7mZ99>8^qivTR@ha~cH!`5cs*$SX9vqi8 z#2a-a$^Kg^fqN@mMvb)6p{l}JcoI>XxU>KmKO3J^v)pXkc%1@0W@1dsb!_HhgQMAT zwO`J01ROHR*q(N@uGEA+SR5SsagbDVGj3nh3~UJ%iy&}BEVsQwd9y!RFQ48!dm>P( zPjg&qw7VI;7~q7Hp+j%^CDCrzTbck#xs*Y}b{SmgPE?xi%yKAof2#MXD0el^DlbxA zpOhuah{+2uNeL^;6N|xXm_J$`LxJ9M5?+y`!|7*aBP&Gfr9?$;z7Aw?|A9_3w!#$iW$XL&H`> zb%-}#I&zFgTGaHw6ljN9I<*Q$VYW>IM>PB^CF~e#hq%G ze)W3i1F(!WYf}|&KU5cp!Amf>rZ{|B(&+8a8M$?O_uOga$XSzT4m+6J`Vkz~ z2mUK?!K5nMHqmWorp_>EMGCB3xj;F(pzluLv&@|**&&P@Y% z-Q2yJzLrDz6?t3bwxNE1!5_(Ux1lL2FhQe40Nt#!J>ArJXR+ugWutLmSQT+67u9BDpK z3N9E+7rtwjqaECfD$IHtDCs!}a!B!z*lvjHI7A%0_thb3?TU3N90R>Yvs$)|C1hfe zup^53>$4t(J%mV8b?f{Xq8umMgb!7EV3>&Xli5P1MSp~TIdDb!MumYPNXysgmP?P( zBDFS_;aJa^`MP{eO|~@}sqp;R3>p<8#NW(4_@*|@gMQ4faO%NRr71?SmDIOKRP_Bh zuZoMwPo1;aVRq>`?1Of(-+Dv3h_1HdIJ&0c^2Hy`^4f#Jzp6k=V6y}iTt=Rc8qGN@ zKt#7}bU{seJWuF2>R~H8F0ocjKfoy8Y2SIp;NBp3+ur86FZ_;Je}40Kvb03V z<0Dwv?1u?*?eO`R37?B`uL%R*z@vcvy8(e;3X!xmK%YLMukvS;jQkaK9d%#j%}@yK zzy8m~wZ}rG0QKzY!1&L#YdYwfKL71OxEw@)L^g_89>1qYCe3;Y0|%_WN9J}`nPs+5d1L zKG=Jb#}eePAlo2e;;KWa#`(&eU&plWYZ(NOz?}$FW82ytN9V`#ktAcSPJ36zc>n|2`_D&zi6VWlYcd%sH%3}uIqBZSqp|J4WuMW+ zt!sB?a_+U8d9h$18*e7AxBQQ{!hCG(JX&sOF+duZu=3hGJ{-{$xQ2Xt-H@Hg?c;Fvvso{%n$~$~@aKo(6@7>%|-^ z115Bf5m>(w1j=~iZfIQD9n{EGPax9R^dVL8#C^8}6?;O6Xek_wez)((pDxE_m0nq0 z8uOlvX=>GKNZ;d3N(=?Nj4pg6X z?HRm zLkPt=D9A3l)AMvf+b0qfTC&v%S2)x%S48G(VDr{!R&V{iHZmh2R^du}1~r^J(|8CX zV#(~%;`&k?AZ?KYTK`4lB17NOcH-N{@OzmP6P&?`MinI+*sCP69b0S)j*bZOsU7lKs?jdb`mY@Y_ zKQoY3;8LqsV5btXJP;j6f+p#c&!S6r8AhmEjZEtpa+^vmDKG`1F{;dga{9%tmBbs) zIyRT^@f~he*>EKl6(>yypoX?!pO8Qt>jkZ;V>l_}m=o z#(060uy>bicj2Vi)<}4e8F55&Pi?(Ui}MPddqLKdZ2Z{ys{-JBl+JNPic|?NC?@tR zmn=$BaKZ=LmcZ)BJwXJlviH=F;qXeVgk|B=GQRhx!A~)-0gh^Q`von!P`}C-2%@EEq^!}4DTMBUN!F==Mo#pbb>NKrcbuvbYcg4BV(fCPxJXD0S zKESus&`2=k?ymx31gvt{Q$*JAS8a2D=iqdqVqULf#dy`~zH}&LZFUXwxd?agJM%fs zJw|!RXb96D1cP$h?(YusY&w2I-Qs+$i%o$H@K#0~`+;8*GOjjYSol_7WdcEYUWu>ib%f!>|E53LT_Ii@?<9fVVWmGw zd4csAGMRfnDqU?v&FYcuWqjaIoQGxc8F!#v(t45c-=YuW*WP4r#M5o2s3Aax0V`98 zOJ$hPNx19-rN}fy2Subbr++xNM3v{c%jaLddJQsHcY5vu4^!sWds3mUS(mQ6WKmH^ zU5;A~+S+LvB5g00AkL;BqnWznI7wJ;{L-PA%{#FtP>d7C(2SF(+oR&-0vK>na7P7q zz~0VFeglHCA`vu)i4Z6gSYIfY{H6G)Io;Ty26aVYIns!s`@pBEU#H`dg&ixH^*2eD-TF{ zJaxd5$8U{Vn+uGtyxy#DO!E0_AgiBz#+}mZ?VbbNuiE!M-@vyY{oi=1w54d(=vc+ zLu~F`=*CZy&zh$d0sUh-){jq6qVWseQn;-Di{vx7T_fGU*?uvUc!J`(#SHiyQZDVh z$^8U@XhgEHEV@`aVcI2a?lZ}E>g`wkH92HW^dniE&6G*Tn=Q#_i-Ve;YRlDf#vd48 z(lmzdcD+3)gRel_vby2e$DX~z_MbL~UJm(Nh^PB}O(Q#YUl=!I$hdChQ zL`f6z%t*S@R6M|*HO3TKI2DnvrSX4>W?s%u@o5^9u&K)Ch*-b{y?@F4#1Qbv2f;FP z?*&?1a82it7a*h?VB1smlEc$oR?$Gj=guvjtMXk0KM9>lub>iM8!RObcjm0~Dz#Kg zfZX)HeNEy^zM(Yt;ppL{)th2>4Qa3e&zloNzMfnj6EJ1r8e04YxPOmNaR@u~WqPPC z1lo%)6W@j;uZ|$3$u<1xJX?oR%}=^d4&wgyxn(zFlxrivh{wwS-REx6x+4G%0>2Fc z$7>F_hX?UnmaJ7Gv zRh)|^G)$}j!thB~yY~<0|1J!oVb&*!-dZNrl-3dL4yO) z?zHj84s8#~<5vB$MAb>{Uo~%HEwR7TGu*2`@O|eRM~9=xwL=f_i#lJ4gMZQge(iGM zEU3gW#k7b!avtb@wVS5A3k8MnHE#xk(?VXdx6vYdAifLfP^8K+)_bnbZy_6&hufS5 zN!U|mA_FkeN{%{pQy0@mrpfb|Ne@5Ir}j~a;g|7pA#+?aM&7VVEI?Qtl2^K%Il^hReW1k* zdTzhsYnU+@F>4K&AJPU$4}7Jk{PX6J4RMdDSE#`L?3O8s7{x(ik4zJ?kMfbxMid1| zL%huZN0PT#L6gRcXNgNSycVj|-nom$^Y)UN23C$`qGNS+#ZuPaD5%Hn0s@myHg;7; z6rZzSajN)m|IZZMzWw#%13YxGHlp890o_$2|qFa{khM)bFZS@EIC9-1xn7q4+jszwL302U;An z-a4O?+iCu^zLUDfpyX`COx?lHV?#DHX>y2*v8*J8ANIBc85%nO!10aRZ&$AJ*P%y= z5NFC{Ksqo=!6PfMjCTKN)DZf@4{w6Oo>Zn?E^>$)M|yc)7dts-Y4avAxzFgF5kpbe z&hc$O%rxpv_Sj3X;qZ_z{Yu6k*9B|hcUO4wH?$wSBJ&3hIv~P_vI))c!!~2N=IWiXjLgMqtw` z?9>!u75L)SA1~CbBk#M}--y7?_{;oF12y~LK7OvYI@lDV5zv8q6_tOg!@jm4#zp~n z;7XThQex$y7;ow<8}O+OvWG3{_Cq`*^?Ffl3&{IV)8~>yU*)zHEiy~A&?jR=g1peN zYfsPW-wX~?o8?=zInKvb6lQrm{1FaaI(hlw%k>>384fGo7AD|@BkxBN=IJ>^Ptet7 z8OO!^DpS&>OrYB?L9#>}Q})Ek|HXmw;T15mJfyY`ULOOTaEf1lr;%)h{#OaEK^&l# zSL|J^2bHm~-X2BmTX!8OnqVr;P|EYv>lwCN$y=RW1e|)j-Iv*+7>x7u!JfoJy%D1n zp0^n1NAr@`ncPJc&e;3^Y?Qy5;9ywQTY_{o?gHx3P;VlzyIIhLiZh1)lxGrs8mx5j z3_}cE>O;~*7eI#3`tT6jU$+!VEJqB;*W*L|>U#$S|Dr)Z$7f(`()F`B5dHd+HB!Gc zta4)M%k+>54&EHrZE_PM_oPD+oeVsuDQMWNA5_VWY@jN1K zQilAu>+{PWxq@~VWdwV+WJ)N~8~u%1EM4)UByNx%Th|97f6JtBGV*2rt*x!-3m}$- z&x?8d(L;AFwH$_s1h24S8tBL>Z`Q^nxs;=_%!gg&u*h5U9c#n!=-92cGBj}e=r0iD z=@)>CeU1pIv|2=z!WR)%gxb8gn#~o?=BN{#(15a~he{r|OJVtDSdDKH6H|y}%yS4+ zB@$^WqnRd?5H$~dFaAgN!P$yCSe~IFHPqCr8d%LyHu+uF=MtQ=SqYG5R7OOfA(oL7 zUU*BpF3G~03&J?Gp!Wl1GJF;&Or)nPj!=#9HqSKp*95KuzRAaa|K4My@rM3vJ}`g9 zr^Zf4W&S@PXxr2q?*;u?gT{|J{0!c|IFORpHeCnXotanf`9~L1ebhT=$7@l0`1 z)Iu8t?ahc@IJUOgz(=BG^nl@{o_E&fHEPrY7uQmkPydBx4nf+RS};yhcF6HUHtCLjGhxpmrvV} ze-oj~X9@DhIx;klvZEfRP-|gUZ~D@L(~^oJo=n-hA7kvaT0To8B2Bu%llVhkd(SVQ zHnME;8g09HVy>w-N^U}|K|cX`e;mAD9skw(hvT}>7)JRnCEEfjdcPgbTarqI9`^oC zoArVF0BW+1#RtIdkdTKx^{doG_Aed;fi+K=KmPhfZlq}ov5V(f_^0qA7G`zM31CBR zMcCWDp^e?CWq9YU1@W2HucDrlFhyydtj$NW<`DQB)$({SV zbLYPI$78Wpcc1Qa&fc}Zs`{$-*}IG<2_z+?|X&5;h&LgafqwR%>TCP=XtsD#Lg2yTTMs^bXUOpL`ntH@iX2zA2KFq zx-gDh>S&jjK`KcwHxSYnxW>If3}4Kf7DU($EdkV*>%?shV|!^7-Hu*(WypKO!u_mK z`G?3!_<|y_=3dNm0AL~^j@uEsg-Z%iOKCabs4u6R@wkA^f!ps}!6C--sLH%XNd!Fq z;NtRXVhdo*)nqIzy*~MA;A1r|v=nZkghZve!FC4GB8S;YbLGuq`8eZSbtf|RV^%_Z zRobZ71y)gvz7xW8V{GWu&_WDKJj!!MqU0=7B3jC^d3NyPFj?QF__^yd33QS|FFFkD z@`8_FkXyp^xGcnvfIs(wBNTA+z-Ph9ryHigUotlx(z6vDdp z-^|f-iS;3omZ?JVZdQU;9D3V#Ea9c$OX!B)qq0zJWLH@St>=9d?dzQ2LMyd_xR4|4 zan|bkVmzY#kzlDBEZ}BD2nM!R*z)+5TMnnkd%BQCum;Ct=pQXHmHCVxzcCV}iHN71 zlU0|M5zpVq;=x;m6R=TzL9Gvt@@B!FT+Y%|CG7K*#1_c9@guDjALL*dh;g%y z9=#2pf2C%`lN{!u&Ru?=kd^L&cy5=m$cFq3387z+&a*3xOLA*mSS2aF8oKm?%yOzl zBEaos5VC?xm8z_IxE)bPf_|8|^LT6t5V~93hd1w05rpVc_{fvF#1pavOQO?VEK;^| z{HxJk%OH@RxSvm*%YIF8L3&v&o8}_;Q7VUHuv*zg-yuVNBW&iSq;`*jnmjKoADaz4uc66ex1QrjE?E9V!LY{gdQ?OnuhV`XQ&)1Ln@JYh}2Fv{5 z5dgCbDVOP>o>#leM8oHJLY_yu*ISA*v;qch!xr=4_cv+VLUlmr<4c>JYGW@uT1w|I zNuqb^q%BWl2T9Pyy>OfFvO)SfZlhjQjhY?=U5 zxNo8PbR zoKz+#To}z-h(U&n=NjGT*yaq=XFkqqtJVw8$J`&5-vhlK{&?C&FO?6ii&L|a#l;I< z$N!v{BZX^D-$dM$RK-q(f-*{CK8Qa8m`@~g9DxrBZUk>9Ku znJxn-4_BJGoy8FHAYNUt)RAYU-b;-(YknH6ljrY+Tgut5#(h)xEWu;aRr9UySDc}{ zS1>RXg=34u;7~b}>Q2O_wh{4;UD3>mla{|sb#;06%|`Oukz;vI9MUvXa+-ch%tDsh zSge0TFs)*WTl!K9zvi2yhX|N!zFJ`bZmT{nxD}oEz%Zm-2)edfZ-TW)7Y*x#-9$zB z92q-|=-g{H%k~I&*1SbIC-O{h2=C@W8hy>jLOjSwgolm(${0Px_~?B0W*OO}-(k2~ zUY@3-!PRJ?$4+-hk88|9l0;=&~E*Bj_shK|Sj828Fmw;{{v7lQs;Z8O9fzi&^RWu^eM# zH&rgZW__{#w3Cz=I)ViOWQgc%iqRibnBMETo4Gh_3QIpX4PvHRaZV{e2o9J(9zt(m z44DD3^NhV41`GE{8qdSqR?ecJY}<%z+O(f!dc_niv}fhharTX++2f+WEGN`yBHrw* z)J9e@G;TjZd!Ca=LCejW$+4R!m9nol^bwF6SBweWUgHG%tFiZml>S3Izgb4lzM^P9B(5EK=Pc?<%- zx2kH$9f6!xgM`$#_kFlqXp!novo%>|S#f@$j|bkK zzTZppC1knRl!TVzVUK{;p&5>4xk?=P@|IO2S109GYHHJ+nAvAz(kJ-`{NbrrrBYa$ zvxEQAkjPR+3KAu_*Z9k1ld((j+wT%9(^HlKkz*=IM$5L{3p7p%djXm)y z-dlw3fsEo?;)-9GC$WJn1gSI8`@bz%e0f2-1Sd9w6d7m!*&O?(1kS=Vb!Bl)=ffcDSpp*&a263?_ z%Cpkr=kh5FqP6#`k%L;t=k&48+KN&A8eaD*W1KM)VV*g!W`&WyJQ}In)X4`HupMe{ zAq1RGFs$dMpsok%WiFJx&oeGJWhI@1{%D%4$PX7FK6z;x;(yy!P)li98N34~45MJS zti-0eY2Ha3@JoWhK3pTGzCWRF^pZpha)?L)SX$*5%upAMdKc(h?eaY{*6S`ELhhm- zn5D|?M0>t6WfbFUuoQ>&xLZ{wX&@5~K9F@;Ntweg0S@`Rnhm=5 zqReadat}G_V=R7_Aq`EWjR~KTVV9eHv8`xv>shQqjfjYLmqv!TKEu<|ecSRX-u9>s zUBS7LA?1z=Id1FfIW}M0X;0VLJ2ak*FZJzX?GyFZmC%eqOOpXMH~IO}Mp`Zz`MnBR zl&a)r2L1{!SDhQPeCtPrPRtrI+rw0%?_;-5-amZ|Cs(5~rnJ%?9~Pb)-ml3*>zlIO zn_>FO_Ohhlk!pYbo9OkVzq{=uRlQzQk4_7(QZ&}mS;MZ8XKIUkdVygWF5TL+I|uJ| zqv$TCvSd=~Qn0i^7&eB*baiIWVqtLpOWwJgcdyiMUJoL6-ER|=v_D^i#-nBtU^PBr zutY5)wWp?;pKrj6w~zds*C~*Gase~xLIeP`sE1;z!@l9MInm%UFxE|c%wOyYJljL4 zG-B5QL`$WQ)5Pis!+Ct^!Z9a!R}51FnfILh4K{+uP4OTCY=5Y2Vu(!^?9{S=T@xn~8RVAxF=hXWgjMQ2+zppVc-p8Q6Crm`_EJ+SRBFVXKus2S!nBq z%(JOq$L8z95G*{ot^iUG9@MIFiD(i?4c~abGWsxhwh}Cg@wZX%Iw; zET^}<&E7hgt|~PlRA{@!2f9?u{*2rMk;cP^1p7XH?OPVtaTs_D9z#4#FV(n-yt9N` zZC?~?B4BUnNf5dJtLM^375VlPDO)7@JS8huo~*@7oEAOuY7a;fczFCiHbN(wF%pf1 zBQ2plU~`eTD<#@)_uM*1F-DMt*hAnu?vsr<@r)QmUAkcKxE`08Ct#a6`V(fFdt?S= z>Q%e?N~bXKbzOX%9Ds|hZhU|FW#g7z3uZK8M~Z+6>N&YSti&;zSa|YTa9gfEtz`vb>hdzwJ*x5R znB9@fz(I&8=;l~6mB-UlZ~FDYY5qRW2WYpRM|2NSmT7y0|(7M=T^**;n#zbd&>Z=^J5cB|eczz$I!hkNE#2}wN z&|61wu3Tc~G*FF$Nz97+3y2)!#El*4llyB7Ni3p6D>Kh*4i?A8!q7pz^FFC0SHfZl z$)?r1Xe{g_m!s-8Qx;o$k(!12#&)}unkflINcX)@BSZ*CcG(~f=Fx<_;(PYiqclNk zO*zAN%f`AqI#XZzSI(2;rQ{6%w$Wu5lU&=jaUZF3&h^e(|{`v77h9<8Y(tI6Ffn5*Sw&OoK=frj4 z&Gi^lF1=hVvWG+tbGP6*U;;ZK^h0gX!Zf^dn&+3q+_SOi?QIp&K1ye~mFwnkWKW|z z$+O6*vA8Pi*+d#bd1@2d4TMG9TB?E@A<0Hm25i@U_b?F=K7~N?3g7}awW6((Uvq3e zcGEpQGbOUPa;o>*(-fA3WKqC2RT3Dz;^sL%4t%0!1ZF?Hq#k*y7X+);nk#p=_s8|} za;airSAv)Uxn|8aB?US>2wI*kcL_&&zitGIamu++sEFfJp=Gj>xb|qJHe1UonFN0GDIrxL_)cwY%e(Ub=GD)F!7&yEd{iy|ZQ>J(M5}>U7_)V9Y z)QeW{fU~WSGMSiS@d&=cUS2cO2AG9=X)eSPyKaq30vc%)&dQw`K1|PE>y4V%)dqQ$RtfZqb!HFRv99`cRm>w(T^&$JcbRy~@WHaurBR&5xFTlN zd)(~-=?ll0uVjO2eGHiQ8#{+HHWgtv7%2kezBR36`f3+1AC0pt17EML`0i5>I z<&YnNvQGtmQMD~;?5sA z`1-Z?psY&JTgOvJms@sMdm@Yi2U}0F;%lGbZ2*=tU*~jC;5Wr=VZ%h9=y2Fp83;D_WJiw$*?1P|TrTyu8%?0+L#P9;P@6?uojd23&zHVX{ zvV|#Q;ALBT8`j;P_)+WAyS zGpK*Du@+@yf7zw09YTkrV_OrFikN57g$~9=5xd=SxVgaf)6e;edJ+HLxT#$qso*(& z3hl^(NrasEH-Zpoog3`7xJzJV737kw4%ygt6`ivxsR~=dKRcm;pu$BQZX>l25e`{# z=b?;t&i|^EcbY@u5c&Mm(#}kvxgS5oMSwyK4&LU4Z5T)di5c^0?g$6BIFa z47oVR%w;Wl%s#$+`RE96A2~MuBkzUe>5b0L zWCWPAIv?GAj@iaC$9en<3}H|(U|((?Vq&6|uyxM4-_QaCM}>278KsHqa6NC$PGt{F>jLC~N2?HHX$Oo)ku4#|GoDj>G2~`0w3%y>_{rmLcyzftOVLZayKhCKeB`f{TR( z3)?gYIX(4i3s~@Vb#rSBM@L2uDp-0aa+S>bQtVr8q@o!k_?AWZv7zrmb<4)x&FvDD zsfEbFl4h1aJ-l5&S3(&vK8!uAUfDDk-qmQpCR2Ioc<9#FLw9Nexz!oqoX_4iOnHlG0crqF+4#Uc#m&_VKQ(q`?m)!h9&2dSUWV zY@K>((XpT6px z^0!_r?$CC`Kg0*c4yGC=@Nf=ia9N%^z@(%TVbv+2=cSFOjc+%Pw(v$3H0HT_|~Ah(ULH25I3y6V^g0g$=&K1K?Htx3gz^HYJ8I{}cf&QWyafKEEt zVgh8M9ZwU_kqO^#r&x_r$3b4&F)>9OAZF!URFn=whl|?{LzzxDG{J3VW=4!rk&j|a zT#EoS<7i<^TB=vXl?K&lNo&m#V@8{^Fl%IjLO?>gh%C{beA~sODT%M4h5kBH)2L^H(8&UF}p09-JGKGRuM^^mzQ zu*y2CW5B9~mf~OSX;+UBg8=Mvu`S=qxPhv&?a{-MvwbI~V-L7y8lM}V8FR9tCdC$PTWDR;a^(nYxarJN0=ooX+%9&tRBjw{RzNqLXfT47 zVI7jzozkin5^9pRtxR$!0O}0Ao79OOVS$wZ2e1e5bFv4d**ixGnFfrgCu+|QN0RVy zP{wcYF>gCpUT8Ty?#{G3KHh-sy={iP1Twv6V{O;U{JnU9ajD=%9|x_8ExrAk<@?!U z&$avW@ukZzu@|nqS0$u#otlszHYwz6;|({<)mgw6kZH?Jsls{Z&30zf;U{R7XuBgN z!Ajq%$K6Km+-2tBye%8Cuml;BIwCkO%d>hEMG9Cs3zr~TBWJ}Y==nr~d#hI5INj+pTb`(9SpDQIEs;;y|2&rwbsgrD`WB3D>o&*8a!(@ znvQ+v*>>Nczi96@{j|)uqrszU+?nzpT3z#m2&)+wM^aJu-TQrlF9f3i0CZNHKhnz{i~in}7xqbn+DYUHc`*&4i~@4VJ%@e#jqxSz z{#w^LCfoRJUoErNL<6%ei&~pf`7Wm!>3)g}izC6fvg7!b|K1|SdEbEosLOww+#us3 z+#LF_gsnD6r^GE&Yu0>N0K~Gbv&x#0yP9zf`O+W`4qr$u_lHb~wsY@e0&9%`bG79S ziif;4CBXQ1<+>9M?fT5QUb?IP$L6z~PvX;*k>684c|YrdB7_L#2$V)+3SoipRwfuG z>D4Jby`0*%#@gkD19_A{9lBYa**rjI8b0nz7keb>u?F*u@{w8|ZCe&*TxLZAV80Ht zqGGu?GcKrBT8j>PH2PgVA-9<}&`igcnA;L}*2KiB@~}IirBN}7N4t^Ewj$I#D0J5( zT`M{?GLk34yjKT=3^aott%=1C4r8`WhejX4U^^2XMfC9oQbLZo6zf_#piW5xXv%CV z-r6}gW#DXP7{(56u$%z#)vI*`9ClflCu1;_eej$~rhK9fs}+FfN-p;Jz%_yczUYD8 z-dZhNZFa!bU2PVwf+0cd(AF{q^aeTObEY>#ndE%OpsbjZ7T)NsW3ABQaKMk^?vPp!t|^pa~5E)6)`+8s39#2cea)tgSZ}S$F0q#sD%s6tio4gW2Kif zGVvQqNK23b{*jxW70iOf30 z$w;t0pBDm~zszuJ+I4_le%N}wCp zW~5^1fa){DbPKIbrZ}u(K=lO1F`&ii_HnC>;RV)wq88q`aZ>}{B5OWw!j4-;h_Wn< zh6+E0a}X>{wGU!8EaN2n0J2DeWVRx0;iqCM4eht=I4IT*kT{(xoIdgc(VKI(Dv0;k z$|q6Lv`zuh#$8#UpT@(Se-Y%Si0Jk0WZkzv`+T?UwHr^LB-zCH&Iyk~{>G zN8SxE@H?MH3jueCcAv{!KK+{El2!2XCU>jF%&YDox2luN-*$IM^QQ7f`OyE|zva>9 z{tTjY2Yb}?W3rlj&+#B!*N{WBp{v<%4{`~y?)dKSe)06N3Bpz}G?fVqz6xGnyQ040 zS}cP+*0E)DwfZ|h*gZ^KnBS#dLyjP8kVT07kFK-0TnN&`+I{Ms@-f-Q+L4FaCFT)i z4^noad1JVmyX+qYVY+*9?sBVqBf8l|+97_!^XPtUcrLO|{sAHgdGm;Q?|B=jNr!4ZOaE{e3K1~Gl0zjZYCH-hj%6z;<}$>%Z8 z<92h8A#MH{5ASbuALt(p&vWlOFh>A0XQhhtBScx{OC=9u)!|F@rcl`O>_@3#*|E( zU+#j{J`D9ifTFiO6IW8k-+Ym`jv}{ifn^19+&y%6SP$&cAs?$UYiR1Z${4By@w;u`PsDU*4qLC$JhGQ9V8HH8oAN8i3ur+TNVUM~|E z4q;hxL*>~H~acN(o1BOSH|Z?vY7u@b+Jh|wu4y@gvY z)UlLSgA;fYh!R9gz7!h*x!{jD^oV)qKlov|Q$&z38@+&l8}GS>)5#j$yF3H`FC+$< zPjsxXC%w#~q#lgxJ)DTP^h-oR)4lNbYl;c7UFG=9CVq~^tGt4BvM156kfuDoP7%_U zc4_jrGd{EmCbl}ixL)JdtcrF@(R)8>?#!0>sbY)J)IW<+(?Je#s#8xOjbF3y`I>Cg zQ=a}rr&Amn*?6p6=`jC-A6Ik@v>u;(<<6c?IO%eLBFga$ayCKMt#*~mYGIn3l9A~C zjletKALOOk*)CD!8)T`%?2_4?AL2~j#^GI+1!tEw;CPcnZ?@pObE8m$cW*>f48V9F zo1q*vwXd~;q1evXLEsD@dz3qi1|;X^f7+KNBiS$2NRfI0-^QXdMIaQj9_ zZ&a_}Pkj>|Y(Q27($5%*JjJ3p$=wz?bV=VQjz_CMcXGGoopUH$uH_^ut>pqb8?Av+ z>eT@;?OPg&lI8okj&Oy*b;h84T8_og?_n!VH!Y)GD|cSx-5_(MqqkhwnagyYii?a= zoeT}wZj`tPDB@&?x|!6NA-h3((VNZW#vYP1*+j7=eQhVBX)-i46H(YvexF80Z3*8X zi?fT$sO)lbZxofR&LusKu#w4fyvs~Ho9Pb<1MDwfsgvrJrXXQkM+u6}0bG}8f@DFn7Ve&;5 zpK27S?XNw*2iyo2YRLETOa+SYzn~~~X0Gq_T7Tg!o;m-VX8GPywMiN}V5BJbXH#N$ zKpMOb@6dbaga${TMq7WRP`EMyiG>RxwPgQ{=r>0fVn6OGgDr;`xtXQNti>}#kU98M zh@O=jJwFRgT<`srHVdVK&g+jPpwntbX2iEtn=gB9R@!(}_#eJOyE(d**`7f{^P0m% zEwsqkqeu?^_iH2B7O@5i3PPk$&dIOpA6&T+7-&+LYT=S% zm=b(ascu-M&h$c2P`J!}T(x*3l3)#YHZBX1Svd|Wp`etGZ|hX!;*E1&?O~zNl+|XG8!$VU>WGTVvvBsW z<|D#hGEAy8J>j_v5eJN=sdK3w)TB~(@O|B7>zCbRj7>nHp(^g$dK>qfarsR|-GtFb z3)yTKnO_kOBP4#d-p5*Z$b=d42A;jy1 zJ6&KNssJBeb|>p9LhT^X2ANh?%2HWS8UvsjbZ2|~{SANmQ;nTD&3o(L^rh54=fb{d z&MH(6QlDenyoGy-68yU~qc_V>JDy=GF=(YHAvu1mjE}i>Rvdnadt+`bas+Vq2b0+( z-}kR(=0s?lJX7d&XK(@{bQq{fBTz+itTBF;V@WY}N>{IrHoEfe`(0Gf5l%3xCw|Vd zaSq|=#u#-;e%K7CvUvkN{MU6}W4mehSCsp<@(wyOZziP{4svGzBD2^SA@b zua|Ui9yrNqY>77zm4v*@0sc9=+*Be&uY=CQk5#h;tX{`JU4X(*K(O!$ZGu;u{pxwB zc?^MD=WoKv8Tdb*3;+Iu^v+d^%7o#w3Hge=e7u9L_u})Xld_$$wN~FU=6(#0csur7 z4}AaBCb-S={`KdZPQY*Q{MpD(g-}j*ni)o+pN`zh6@t5;&>?zPU3Hv=;i z!}~=%;SlXN#rbs=15Fjf*@fSs`STzJf9EhE?+Dd8kp_)~ z?Z-`(h>p-JwZ!|YlOk(Y7sFKqne^Ymym8)WM$ukpOy&0WAX$CpE#5l-FE4RtouP>) zAB5-#)1%N^STT~j_V^K1sM0s0Dr?#tPEHGPmxcY+{n@wHGo}=K3=!-S0@?%lNmPf7O2Hu3=g_>c6 zV&?fqRebuPS~Vs@R-tX%(5wza;-H(+_7h&eceu_fFfNITa<~@0RBQ)2ca4c1sCHr! zgXUGAqIVv~u!4g)2W^`1KA3%(S~$)@*3r%BfjTMa~dNLGRni zHAkWgOS$t@NNYFKG@N22iB2({)9nA#i(C;xFW_)4;m{2^{*#Ybng9Al|?mCa7erl=L-J;-0I%pc156AT>@=kp`d!7&9D(ZVTgmlCJbi6WMhKF{PXP$Kyte-paJCh3K^q3T=s2m-a^Jbu5Zq*OzS7IL%Op1CVA7eMErQ-+Lak-Wx> zJqVqzfpZ0%$aN3#6{(cLAEd?}^7U}@KKp{vaC^SP_RB~QWAr85ecCbY3cBk-4r) zU$`7{Z=g|~0c1J2m9O2M7(4bTHC4Qur9?LU__#=LMB8z@^Fe>%FdC6X^& ziHrTyUHxGXels_h%0$F#Rh9|A8*qx9DrcOdnf^UbOiG3ZGamLzql_S|HEB6e@+vZ+ zvf`OyWW2zs-_C-5LgkmbY$<%gg<#HulqtH{L;)i3XUlX#x#_l*Gvo2F@Gt_lugT}w ztqu|2M3V$wpp2t2n7;USPURjN8wBhAV2SY9y#j0EYub(r_nqmwd#b6UMyc(sdDuDQ zs#5xtnGW-_V)#t@U{3Y}V-#J+xG4qsU6iJsg4HFDP4Vy2ct6coM6*0S-IF^kyHKBf zHuxnOV6GNlvuh|uu7C#?Wx#9NhhP^FoZ*r!U{p3VDL)@cIix%HZSc!L8oMZ+*w6xE zAbWyy){ghsf7>F%B~0@BEX10kkC-)2CTzwe7-s`V5) z4v7T^j0e;ircSP|=w#N>%DVL{5KDROn_ujx-?6Iq zoI8rZ0Ga*HC~B%nknI88XBoji_`#!h;0a`3M|_t9UXUp=X;w!Gv+@mC|o z%gM#syT-0uaAP6YDz=!MeXm1VHwtm@C(u{1BtzC1yr2de{!~(YD@cN9=2{lOEF|ALg+e7)ewyr-ax~C@RTrPs?;X|IS!FRFe3Vv2!h&fqhc&Ddf9lJ%H~P*SIORtl z2(^i>?)t9_iWQcwr(7%Q$9iauQE6j6({ZZU(a!=Fg^<2`9K5v&$iB5(G{-FQdD4`0 z=PJL$c9Cl@I`Rs30KZZZ<6)@dITjMpr(IsH6L#hK5X8=ZDw80Q$DU&o8@{%X0Da@sq)BL=Jwgpw0NgH$u(H@?n@lK;W=kp2AXat+emRM^Ps4 zRJ3unxh{e??xC%;leg7hxQ{Q<;C6LJo06?2IVEWscP*z-vJD~{ zgPk@N{6DB7t#r8>MHw4?L zg~Jt&U26WMRhs*p?~JGSerK#2o>v)sGW&_KD#=z-$huoMM5j?sW14UlYj@dE@t(-`%Dx70Z_!n4m8;f~4OyVJM`m z0%$c$sdh$f1e>Y-i`Z-u@(8#5L}B#Ie$)NGF|XQ%k0fSkX`-Ccu=zzGqJh^>t9@lL z5LInPM0DdB8;RxSg?-(0nPbwK#@J@@+wU^tSbC(;LS^ zg#Au!OyY$jTFfDx|LRqtlq9&I6Q>3_!bFkde!#d$hl!0B(*pAfmi%SlUjXq}p8)NP z{3Q7d#UZAY5bb5OXRH3UjP;3quxdH{C}#k}q}AVb^$!Vr02rM!isVDaW0ommNk((R z7gdQ}^jMKjCA1Ge3l%%PE|Ok66BWL45ia-{XZ-5yze(_o^LpTe*Sz(}i)wz z?MAIt*OU^GQ)HI2GMhus)wb-B`&V4^Z&w8Ie|Q124Z~MyI2~6)c;-tNRp{9k@@lPi+na`Qe|YYFo9KY7_-*!Z8L0oBO#T`iQ-B3P+0RaW&ENrEW{ z46D+jS*KaS&9nk0&3^_?f2Hz&oLv5vQ9b2}5JCFg73pLqw3Nfvdx|fea>dbE3koGV zuK2A@&g0x3sqm$Wnxy}oQZ{(6T9!!dtgC!wn1P9Ey(eUEafDZ94Wv)W^1g@*r?`Ae z_BTrVClV=<(j%S2RV|`QPT+=C=_!c5SAn*8x}fq}!N96z_B41;_C ziI4yd-3>Y0L-`)pI~GYN|0{5z04#T*+6t5*kH%fu3=eX0_xRy@MuGS$2WwgK9byUD z)n`%Pf5qc}hWx)&(O~YF#8h}j;N^E=tnteS`FhIwm&3bznxq%66lOd$=v*iB=_*hr z^cYNjnd1LME+tZF@O`b;=ee)#%GV{XeX6JS(>c5L+bMh@t_%J$Jw!R9KVy==9e|#3 z*HCBn+AGd_3z?8~jB*g;uJ5z26OATA5l=x{Le`LuX?6WBrtEwaI@LGWU zBNu9Q>HisVv1a;FYvzbpVo05GD2gid_mUibtVPXRnQ2vivT?wn)<-WSJ6|!>3;#Z7iGcxGoSM}-sc+_ zRcDgG$fV3(q)TY7DWtPh_?D{tC?S4v6VD=PLc}rlA8+qKNeyNv)CgeO6jDmcQJp`+ zIpZ=ppMm2Dx5WOpM8lt^?GLzPxoReD3KRBIWGK)zIOJOXG`SOZeskN zMgLoX4~tLhSF#u)ZIA~A#@54DzPo=)VfhJF)}!Y%GUJpY#KT7H)rVG|uMpzD_YAfq z!)^G;FiM3YiJ|bf?YxU*qBz_dwoF-ySidJ6|BG&wGE-3QrA3|!z9^i3M}F~gGK&_y zVQ^r?6(WPL@^v`J&9yM4^Dl|Me{+bxsmUAX9m`?haU{a``X|`LC*}JE;zNbFU-fG$ zZ*KIuK?}b5{~ew;tP+@Pmv1<^dOef^3f?fzh~T+>{7j8fOUy##`SJfSkbe^!vak^4 zrs|K~=nKcJG?m0!W+(gm|>g{t>tP2PWr-~VQ)1F@a_MciclMk(xopXq2CwnF<>Kdj$G_e3mwq(Fn$a74K%toJ^{gTfklrTt)2dP_qS=5 zzrSs#LU6_|@?brh+!LUbqI4w=t!RLY7kK_uhrpqC?N4EHMjuPB8=;j+tPLuOUFX&yrfkqQ|jSoO=h<7Snu2d5p} zWH|cF!ILeL%7%Zq0Mw0y5UPKtaP$?wg0n#!0qV(`tP#BVa%aKw@j8n5?f+=|0kKT( z9S!5v8EA^2A*fsb%4N;dh46g@L1JXLs8IU=2V37iuwb!BY+*e9vKJi3!}7K_0xt6M z$2-|$q6W$`0w_;~vWZO2b0}B|KPuXgaFSc;w_r6Q(AkW3Qr4rl$LA`_s@Md zq|nS#%tn=e&&d5!lz#(q`41I>SzK78MCaP%I8{7y854em!Q{ddtNOv!f95?N8*7vE z8MvDDY$#Z)MhdEIo^nJR;7r`7#{;tuf}%0RCWe2B0sn(|1maM6w))gE6K#Eaz2s0- zhlTg@%amjdn~lig{{qX8lVH>=2^i#TKa7Ykvct3XTBkqU((=E1zDj7J{h#CfjzePz zNYq^@CbXs&oBa%z7J?Xphk26e_5zJE>W}Q@-^nV3G+2@IDK;J6M~(-jdQrPsjmtqr z%ao_XuPGOwm=*tfy6!Jw0n}bD-uvm1Oi)&pOWdmw4WUHevjbvBTbcaUEs`r`IQ|#G zBu}GLJvV9m{hw z=1Q{E{^zJDLv(Y}qB|gQb(zxBj9Uw(uzXX(Rc))4 zX8tOyJ8`qRFarxQVFCh7P7*ozUXQQzcM$zEGWZ4-nhZ|wUkxJ|Ba2$BTW97JcgZGj zf6s&VPo!LDFj-FTm3W1hlD?nzH}0MC7ZwGNuS4c2O^Du`N{ID^*18V7{ny0hf5=>G zCK6z+1Opdq%I&=M^k%|6>?FuIxW+guJ!kqK$Oe;8iT~+1UlFmSW_R+(3f2W2|4Vah z#$1jyep|0LgG95cPv8HTEB%jK{xs$+rgB>BpZeEUou1^#E7F{%zbOz1*zlZoB=_GO z{Yy&gKhFM5E$IW2>uJqsKEh%42e3qCm8*Rs*fG~RemHkw>mvQ{IR_|3dfHPW;wHjs z6O$4g*U-`H^e%?HP=nu}W|eU*C}?n>@}CB%Zd60rb@x4kDQZSH{IyVKQ#Fs%qvY7k zXj9RUvId9@Itl)-8L0nDRDKKltWLGyKW1OZKMLxjV8&zGR};iHF-g+d)?Z2pYCkhX zU{`1PXLt{{oe2rW=MU2Dq2;Q4n*E+9_h?2p?%^|;V@%^qWH`7y`cG3pRjd4WY)IW; z3|khZqGptLLjAV#%-FT6|F@~XA|5CuJ@h*r0x^viOZYGCP`)Uc*Lsyby5A8#X#-^9 zlpeRU9I_8!tRn5tD$*X+V-qnr+vLcVlOV)yOBFoAyy5I$>(Cf!wI3c_mrph#zK zThD`%kI5+(=$gxZU)WC> z;|SSU-*ePQN-M6O=^0eMdRtygejkEN<5b+`qyB3)QUlK5DnoPN;n|IS`V0F^I9;pu zE5{H1A1QekJ!WK)qsL*F)0B089N=SpUks1tk3niO=sR@Bu{KVeVALAS1w-tKI zn_5<@LLFEAZgz&F?pnA_Jf&~-a^0RYTcuXCVeul@cR>^uI=17*s;O~;E zs8qF03Foj+;q=GU^fz@*NN_wPQH+5c&#s2wH=(tN&s?C*EOON7w5S})Puau2<3xG5 z(>~;Cz6H#nb`BMt(yQ6@ZEPE|65*f0h*oj0)yd&ibFX}w-o^B0 z;FSuv*YH*PR38SM+B>4AP}MO4UQ`oG{a-BUO)o0880(K0xMJA@L-jD>slxeksE+BS z9~x=X1iy(3gueIiCFl;fc%qCtqV(SELpfjnnan^R5>ZLSGil3`A72R+EO$!)dn(I= zV<Z4xMs)88q!te!!=V8*2dl0O`jmyCOI?9>&j%3J=?ZSLI&ef(~(sdUVuWi&ps zF$z>mPN4T(X4?pVs>)lT)3jBlQQ@w~?|g(KuNw)Mx`#X+NK!31u(A>;1oP>2O;}l7f{(f+JrC z8w6=2f9d#ACf);l8Sl$0K-76moonlM^;WFT5HWbb6x5r+vFVXy%-2p?tlS@6cf$Jp zAutM2fsd&5w)3d0oPCaforNQ!(M{ugddFa{+k^m2B*DbY74!jDZrI}`Q|{i)Qb9i% zmby*Fn>FGmOC9S@Yj1Y9l&HDgeS0t8U(M|4+rC1Byeq}%N0QCH*>?cx=+vmi)7G)= zUR@`7ONbGqayGjUaP^m}vQ3TFG0QJ1cYh2x;}mCzk1(Lf&eU`EgtOd8Dkrq|DDmxH zX zFgxR@m?r7{9(>6@mu+!?r&B%8z4XrOAFOj>Ug3&Z6w--XzM+QkZeG^x&Tt11`F5NN z89nuTpx8vPnK11FH;pu@)8()*z4}5ys`{P#MU!Tm6-8TtK&U3q%J&OdH|Gd`+Pj9e ziKXwF*GS_puwTEV>@y9dH8J!UTzR)f)_~s;&;pl!(YY{!x}7PqPkhlBfk3WDRp8BnFC!L4my_O@wUz9iwzR?~m7y6%LfX03 z1?04?A`G)ed)e#exPE3)!&hKW>`3;^x64Qdd5$tQpXLei`H{$3q}7Pr+mz^cX~`R( zZsz4&Xt8q{qijidQ*x@lRm1dM7QoS!$_^l32*R85_J~Q8iywFhg}Km?obSy<51i>f z-KUS2jX}QWNPHq32N^1~x9>Ra`3M+D3%A?B3u`|;4~l+1R(M2&09l#n+-U`En##VY z5tk_3^zbZPnUI?`k~P#>yK`LO*|z1jOgC9$aMOz}A2W~*if^olQoN^jse!9y3iyqz zlAS_i1i;akoLrVjF6a7Sn1r68lD(+K9s&uWUq5+i0ApH`!5X&^XwV(Mp07PSoJ#v%_iE4^oH2N<3mN z*(@_IpK1#GC_5+$tX-J$wpRHAb4M9$^Hnhaop{4xLa7`OjT)Y!L3{Y{Cs0+1N(g(k zC+!g6h4{xd4;RS?hZ)$LHG?xN&10G8JUL$&f@qnqWdCG8RSfZ8sL!?JMojWxuPzu+51s3xwpyBvX zl@@opJE79eG3(Nc+Q>%ykot85!Nc^(d@AICC2 zcpY`6x~yb%YDu~}&o7v^#*^tYkaybPALbd8iL>ztEDi66Yr68!;m|B)W5eB3e0*H=z#e8V0h=eK+dVa3(NIdEucuyD34Iy1xRJ}Db z1Er^E!Ly)It>Bt`pE`a=vzS>HUz6?t@04QlG=Ex_ZMBul$=;B61vU*AGwhK z%+%FJ{sfenhqkIT4UCecupN7O5=;sOxl43Suou3$CIe zRE2g{RJ74|oyia{q=V1Reg7x_-!FN)-}9Vk@?V25V3#uU@&Az~1Lu|WTW3G}%vx~> zZtlx*>4*U0-p!~8!lVqd-&ad&MD~*@4{D%nJpm-AdQ7Y|LFhi)s?&!Yz)o#2-jAr5k?x zj37dr$zrovZ!-H|t~D0B|M|jF9_g_Ok+uZ`^??Ci)4@o|SKYArWnaiyffgf-g%&X< zBFJNmW}svZ(iO@`a-oo!g&GS|Ci&WU@2MLOG;f4T-eswU$0sEh4754T`KV4Pe0!Ow@cr2<)MQrJ~bG@NPO8V>!zLNc3d}c&Gjd4 zO$Q}nFJ=dh9xu4(W?b=gg$=OX6Oky@NmPVs;_k;9mlih>m#JbhA?>1!b=H3;F!yZ6 z3fgbRg-75xB=)9DE)6w@mj3m`KjOHC9w4(qr@W%eJs6(mkoWAWdqZV%5c8alrm8H@ zi%m147?<{(6YQs3MmtJh`|2|5Yd0JkBi3FBeL+z5vR_jZ8JLJ9#REk?x@5pWrQPeq zhyus>;GieC^bQCCL(6MN&X}%M#=rhU}x3VMf{2$XU=dkQmHS4y(+W^%c*w zN0A;H4=XhP0hxyjjpC#ME#lwR-3SE5+@lYbRxs)yK<&W#;Gicu=VnbnJsbOM%(IYC z9^4INwQj<3P}7s^NmS4@k{D>G<5mo-17tu;bFuMd;}L}xSCAk-%ikNP7Q7fVWOiZJ zhg+X9t9x7zBEwUZ^PlE=DSY6>)ZYj`fagU3fUpF@sJU(*O7pOfPSdaa&ngkMST=`M za;z&;fB8zXf?!E;scLef-OR@^JjNBLM`fu(+)i+o+p80rTTQoPh`L5OxeretfC1lT zhpv~Kajv({(fLw7@sV`hXp}rkd{)E;pJRDjt1XSp+q5CnzF6~aUVaJ?Ecufj6>D7{ z@xkm@b|38P&#%V$A`qG{mSeVK{X7mANze{K{`pAmO@g3Qex(oEvb2EY+FK#n>xOFS zz4wbEu=MEOOtAC2Ho#`&bbhpJq6%6GNbkJb;)o!?x584p#nPh6IO)Gy$ag=$&wG`( z>}SM2>%Q#urHRjNlro`7V3!A*Ix5jT<)G0l}_&16d z2_X!|CZmqNs!QbfT=RLFASp@-^qN^=Y`*f|3i#o@Tr8W{hY4J+EgAIzY|kNcB=yxz zN{dr7n}(Lm*qh3B1uFa0+;W?eg(jP^6@8hb(wbcIl-qlC%SW0u#O(3e`63mrc`+XS zxjZYN@ev&3wxAIPel~AhZa!oDp(3B3W5(bL>bk9eQ}9nB{wUaPsf6uy{elW$)G1uD zxLy$x-GowibwphcK1cH!qmHNCzy;Sj@l(sPtm)ZQcA_vI%0N>^*M)dU^~_qo-X}d6 znf?(!`sI}f91#^`0ju2E*6g8Edpb46RK1ixQOzA2&k$7ZOtzaq+v zU(ItS43^-+g*rClRz9JzIPjXA-Y$l*Mn72L zX^-K9|AW)+k0{PF)wKM6CU)-9cnWFU!HVd%7b=I4YPS&#Sb)VT`y5+#@dJH^Li#VH z0@vRn2AxnCjtpVQY#zXn0{#uNU$-Vu3_E66L2V}>7!u9Og$Mbi5#c0ms|FDfA5xxM zl{N-S8yeu%ZGN+I=5I*Gfe&Fa4#7YpSvHVPra%0#zsDgB84tJjp7=vQ@#@vYc}wp? z*7*_bzsW#dhXk&e@q>6=1za|eRtpk%P>}8*yYMK9Mw8mqFSM?^4K(^?e0J8c^B9iJ zGD)w0&N|NOL=HNOhNCGx;AeMvEpa%uBxJ%Ap(K9h*>r;VcBX9|o;PgA4~?PG_x7Vb zYFtaczAAdh_5NXtfJRMxe1)<@Iiw`=Mb0~%J1%}KUIGs1yDz(A-EcR%b;e0A6wW!z zH_(<6BFOQteO1v3)Q2mu(%B)o>-7)cu9+PJF#s+LSw%!BA zF1QyvOJcT8{7mI~4Ahl2&^%cychvz2MLP7KvYw@@HgwnBVQQGKa+YG5$4)SLb{(Y4 zx)+-a|q*27F$Z559gxFF6X(h^+XtJ#?Eu<0C zqla?=^EbT}j&8!v8g>6VDnK~LLF@;FzxwA1zvrnt(3_U=e?vrePVR7fO7VAh!@`Jn zHKx;xRmmdbNdvrzXAPLCU%h@IuxqQ4mJg@lJZ%m3`r(CruwG|L*s$J1jrY(tKAk(b z=TpctB$c|@xpv-oq(=^22g!a^ilfrYPm2Yb&|_PCJP1&&?rUl!1;EH-jv~+2p4mp2 zujImYu`fe{FAh!J*Bo(2&}dZcIcYy+XH(?;da)yZ z6yIUQ-WAKm$J8%5(KxrORmLlr`3syu4`nEU)*MGyQVfAooPj=6PG0-k#nqN{F=f|W zpm4n-X&G=IXEjtZ%Gna4Yt^ab-GybBo&fD&{BKaQUU_?_gvw+y!%@N`$XJLUdRD-Q!DVsAYu0Y$mOHzQz7|EGR+n05*;- z-L=oJJ>OC2)El0z4M;!%d4#m#BK;xQ$n;>2Ft%SkN4C3B@bjw%m=c|`EwWVFY^>g2&gsC_;57!VqZ18=DFtzr;sR5?s|6{6;|6sT4e0>!D5<4MG| zZ`{9!ZMi!8kkQyHbRNZeFR12WeT5NqdV8SN?x!|;9YS;l=NFSoS3iw52dvY3*mPOq z!vgyis|VlHg(76J3|SRK#OxaX6>ROaVUC+CLu_697lU@LaMP5REo4E)G&2I14rv-~ z2K#xTr5OK%f0ziDw<{mG!XCcdH22`X%QgrI;)#=RE+eG)$#6!%mqu)Tja@zqNtoi(zdv5*4d->2+SqX=3$Ea zlg-pp1b6HXK`ayc~*W^1XHrBAP~+c zNU5#7X{!pjXoUQtKU-r_oOpo(UWpo1aoELfQ-c z2t9^evLne$BSwg`9#x`1Os}2mKL)9Fcm~dk*5F_Op4exry&i=1tJBQ*0IjQ=ITJh4 z6+DwtDeE08uLB2q^w_P4><=X*IwM*LXh!!db#){_HF~Tq6%+u&_uUD)*m$LDr9Kh! z&_zBD^*K5=b=Yvk?S&(eHK(L~k{u5Vcz6x76mzU>D0?3HFnGJKPs~{UE;V7_gwKmP zNR8qS5;c!_!x|$KB1j)<|Gub?^X&oBC|j&|Z8U2Jgr2_5CxmS&g!Vsp_dQ5aw6c8n zK5X-zn;X;N!CGQ8;T!67J5RiTd(mkG!MoOPFJscrt+^g>oG;+2aCyC|1J64%!@d&$i>7qtT<6PH>j1xD46*OTtIgxD*lZWU${}txyjM9P}^}cppoNOSGWmBrI-J- z&2-9k_o{rQbN%nIotH_dFO|^_GR8t>mpv|Qa^Fn!9w4@^n*?~+n4Qn0SbBwRM?Alj zzEIjtocB?3qZ_WQ%HU3dk~E?=0P-+HKf7CG%~17hv#rqx=3z zM(T&FFH^)d{dMK}GfPPS!`m$laVN?=P zZq5JXz$+q?Lzdv&ySbz@Z4#G_U(Y;W@z6_ zmIc;9!LUU$KXA_}YwChCWG?WLj$0cc#ypBM%q3YwD17`IhQDZ6HBJ>oC7H78XS<=TfVec${a#zWCnbu(u9hYwlsf2f3n{ zMIBjF=r#P81gX#ZG)l&A9cKKt#d8^C8tNYtnwE9-G*A9lW|hAYeqk&jJ3XoDsjf%F z&!a4wN$&|1HON6?V%*H{sfXrhy|mY;e%EOO_`g>Xn87H2_^XF+&0!NZ; zgr%2Ou0q*oPrewCRo6qp^+oW6MbI?;YFM-vxO^=4vZxmnPOIAffVEC92fk+u*{-Xa zSjL@iZ)g^f@z$m|;i<5!Z4T+=v$oS^^A}lR;ZqqJ9zTON0buJPw;YW1o$a$VrR~WE800SBBSd?>-;kzb~Nc z&xyO5%$>Tmjc(w-KQOu~PZj`}GdqrG{X;&%y?B43wChKh2v7`gWCE9qm$Im5LO{u+ zaw3>Wpmt|d_=p|f_~2+|OwP5>jX{p~iwH-z_BTCab)H(^0y=y(J=9X zce4M2@BUas9>`TkI-@*yAmVPAUwrD}yoMsKt`)`51(|DZB~9q)E9DDvcP32NcZ7_I z3lAM8IlAARg3rQtvbCqK)#BzNIr!Vdng(7;XFvE~CzgQbBI(OnJAh~5i zbRFEnCLOnm4tB|#6KL?uMDo25SZ_*gak&ixkna^C+Cle~(}slSKw2!R`{&@rV5e3G z7k8txz6TOb`QP8b(mJ@DBU^&&06zSK_}&^-Q#ywgm zgnr3L^qH@DGO}n#d$r_!xpxZSc)4^1a11)NNQhtt>XJ?r7_ntjE!vpaW**;PzqNY^+5RolTVL5! zcQv*v1?Kw~HBIT-99O-!RVaQhUkh(2?W(njm|`&UzA6q%IO)5;(zOJFl)ajvKzl*# zilwB0fvr9%``tJsAg?Z>U9l4w5o!_sl7ZPyEPZa$?Nna6FSGYsqo`m)QdeOcrM~J= zh~EZiwjVyXVL+DG#QLR-jWZ~IOi65nc>5I0EMqeKpZ&Ijmf{ZUAJ}IyFC<&$)3T_ID^eh8`Tx+NR|q| z>Rcq8ug5PCC|a@Y*bTgbm^5m2bs;QXIr5Q-UxWH8yE-@#P3E~zVF0z!_FRiEIphWS z8ylmHUJ@lUZDgO{QjQZf;TzFF)tIDSv;@GxK7iQ6nv~fUlYl62o{txufJ(ar7KmC8 zhvB~kpJpC_u(JdN=SLt$reFV;^O|!2;l|G4PitYxK_dx}W+{(hKkQsEoWiR`HOrVm&auUpQ1 zwf~72W?RLXiYmXU%XI^x-uNipc9_U~5tGQ7adC>0;1fKIRV+N=$%uRzBJFV9AvwBqAX{^Nt|2 z4$cEzzNRy>YT^viAYC(+8mMqE?%r$L!boIKJ+B;1i!LPk$81deOl)Y7TqZ>MdtWb0 zv^cHn>fo7Zq|e#(LU27ufr1ElbbHD)X>LorIws$Ipn%HVw;FqkJx++4MKR`Wy^_Zddu zJRvln#uPVDhTm$lZKXFv`q(vX7!dT<*55luHlsmFwfx(|bu!KVS}^WvQ-0fkI}-e* z!*iQC#D;RI2kl<^Ka5-G*RVrv1Tzpu3@$bf?JouP%Q&j* z2uGhBd0?owD>&cW`6pHOZ@tc&AojjCY`Fs1InGEA6{vRb+))d)rfsp$-HpC?Za$+%_;ZtfQGIgm|AYogO-1X6*W_RE)&%||V^K{}IB z>qEcbBC>VG95p;G~Yha%<08>b<)0VX9 z0cqY7)c2(pdA z(_MabMLsAxMjXar>;dFGD?WDK?xNVS@4ILK%MM@1jh(wt@Ijw40e_BlLSQ@aiYmoK zDbf5l;yLM)?{E*5#m_iVdhyy=0F-@E-J(NW=tJ<0`qXlU1`~mJm@7<+(r7VCYb3_; zC`Z{Xhyp9Pvj}|_1=N*esKjy8ZZ#;RW;=Ic#Z7nojm>9BhNpg8Ov4HjzJSw1BdsQM zK7${B9eE|c3z}65qa%C=rvA1$eLuOC?#3D}#&hEB3FXOFfI>AumPihZ3+)2 z;g$1(89F3CWofLW_=O>w?OV)}wMQ^AZl-K)M>M?z2HYvm?I`|=)vBN22cd9)H4F90!~W?j$%{}wPkP`GsbPD4`Nfs+t+1ifaI zZ3`BE^I6j|Vc^Z3%iBRBIBTj`!Bt#7 ztwJ7_86gUOw>V3pLCs0Y4QpiAEEj96*`Pc4$S!P@es;amehvUuRdKmYuS(W~yB(%B zNbd*D%E!#+r0`1<#O45vcgMlcpqE2f4bXG1^tiT%t6u0J8~OZu;jp;3NyT8Z&d0cz z9B%qRnTw}Fn3iXp2+S{YDrK0$j!$f=)c(cD-!92WA4g5??qr-ibq#EdrYBa7SPn27 zt{~I=S{n&G`qOC(G7Y(;Q;75D0!)A zF^dk}&5Z_zHE?(+dx-gxxJQ(3qqZN5s`)C=C)zycs<%;9NU$QShE9Mb}AVX5vq-iXryF5N?Q7gM^ z(Tz!hS+5{F^~Zuu?_9Co2gx*Jby$tesP?Xwgd^M3H^j8g(TKGe&UD9WZ(Akqh5RkH zbvUvMInu$v9)(9-SKdc>LWeX&v>!x1%kCym{MM4A_*RUE4)0q!7%!-PnyXIQrp!?3 z*OBG0IS01o!;U%^ILCPWSPCc0Z1a!q7d6Wqe?Y;t9XF8o5!RvG2<}Tz@2FS?wXiel znhk(Bh>atz8eouOmNber;&q@H7?#NBp}>ADyhq{}l-n;r0IpB)(*S%8JhJDZG5u3K|OHo$*O%e1^7V84vdSYTs2vw?-aR97* zw-4506XhqFMJU}>fXCqlk)T_6ODWuf)d#Wk$z{e~2T26Y7=#{f*NF>Z1HjB|+6RL> zcSS==0slPLZ5o4X*=xjxA3XpoD+%BeTe9p<_I8nl9PxUto9nAef%yV!5j6FxD7*#N zB5qEB<2Wt)zt5WeVtj^xpS!>gBio0_E-NUe+0m z4fpb`Zv2%DxF;VAUlsWmcpw$Iq~-Wdsv-`%4!Wk|Jqms>@1@~w{dyVv!|Qp_)4Vwq zYjxa&be(${QZ7)N83j6rMWcGm0yie|z4#V6p<;&ts&rypzi0&kEo^PqQGS6=N@aMS zU29=|lq!b5wGM%j{Sk(;87`DSyD}-@JbglVCbM(OM{)Mod!P8p;Q-^ z5lKC2AFETR!vs(HThyfbEtk_Cl9O04{jLofPV2JaA&nP^Dy#*t5z2pH9QM^FKpF!T zmA?H6uRNe^(FSgyK31A3-+<_~1ygpSKZ`-hqzA8(EgsTwrxcaVU05o?-H?bFSv>M* zT!8Jw4tTdnzql*v=ZXaG?7Kf?fHvW3U6T6vgLf}}i8(7$DfmSZ#|*@*zpsfp&~cAQ z-)akofq9;QOn0Axm@)XwZtWnY*50T)N>a;UYWHgpazQV&e6dXJ71$U+=y-sEzLTk+ zRARrsPM1rxB^{ zMvrIIU{ZXj@?yv+bXJ*2<90IE*j4`7!Q+heRT4}$L>NTBO`-81Hq&(r+KIaGtY~+i zzi%4vc_IV$V8>u`002PQ<6Wd_y&6*;4R$z~YT$jH;UY1MfoSZGE0K&iHbXvrRsJRaRNI^mm$u6y)0uK} z^@_)IDK`+<)PgarcI|Vke#IyRvNg!-@P}<@Ad0w-;L6vqZ`{qwJ#*)V4X|^+!(Umq z&m=v2Ea|N|1+i?LpRM*Kern&Z8`jWg;rajxg616i*OvoPm1zt@Qz*X3W{0w(uaWhj ze7h|b`^!Vo5F@fZ`BXg#!i~|^ax{NA=*}4Mr-S2MHsJfcT^B7K;~<9qrCk|JE~%uf zc@GFG^2dPo=--TuWX8@7$S%;Adi!biP+^q`a1X%r(WcRI@S{4FXA!tcpWOJLWY#6x`1=S7Z-QLoVT3LTMb4jGb#vUmqkzgg%ZMF(>+ zJ*m)?GUPM)eLJ&2%bw=S04uz#c?Y2*qG6pJ74MjTy?hjmOW}SNoUJ=V((M#hU8YJi zAa-!1G#5yiSlA->YiUb4Ye1zDYj}C#0${9BkAo~`gET27^>wEtib;Lp=J0Ot8Nm^` z&aUDV?kDPc-fPQ(LdLP`8S<3c42NmiFoSpYin;KWeBhwdUlX&{4D3LctPQ612v+eV z7r@h|?7pKBn5#~7quy0yH4xzryEo`_?@rda+6qd?CdqaH%~dax&WGZO$oN8Pk|wR$ zV=0wfKQ1&iW5ycRa1sZ`#+MzYJNA4pUDJgtv0Flaj_A~PXxTNqqa;eej$*76+I2*t z-8dwaN$XdU%FmvLG-+L~wo8DCO5nnC{tcP%Jr#wl;{_x+cV$uxs{K>W5oBlk!W*H~ ze9!U~07uSPX`dzWrvVT53)s9F2p^kcGRJrcQ}B=B_sTrkln46>E|{{WI^uj~y3#TJ z8!8C3=(VSeAmQ4c>(i$b3t{o{mG2+CJhAC-Beb_&#TIRiUbDTXd^d9*PDqhQH{&|q zot^FeM{ve3c|U*PnL|B_2ikKXLuu@T#4-4pC6YY0bUkHxrAyOGb%e#th(XOS=-~?P zZ29SNhDFKVhiP-(06HD3T#|qKxq3xnB%l=bf7Uo|TXI@$;C9PV7yw zPI0UV>t>N^)M^=f(sxoa>%?)HM*jLKqU-TsiN{d8xADoCILE@N*6{t$5%qoCRv!r? zSTV|*Y1F)DyD9$~-Vn;ciXI~Zy=Tc2kRKAVyK7wyg{9l4+K$ary5?rx{q+vY zkM=+3{3ng?6~aeE<8o2Z4^BCHhVk%lGey?4tVT`Rg8XCqJNVXJ6451SKRB zzD?F2&H-Dc8zohCO@pTz#^@_$*J^p`{kXpPm%3`v@x_?$Qt3G`&PvwXV47r&Y2qBK z)3VNb>uKwP47DYXL0qIU8g#3}n&=}8J-U3#D*`^sSQIZXeP4&>PsFJ^bsxV**Vtqv zpdzW1!^EKmHs^%nLJyu>>L(8ZE=^lBq5_l4hIZRlIE&omN(Zgl{+XBQFt^wUnqcc| zfBuxZ&l74k$D?~%Xpby$;obmm>U{=k5xpFGRnig)f5A@W4UBw7jF4q@+v3|^!nabp|n{hn{UVltJOUodTzZ;*imM^6KKel9f}U6w|NWJ;n|C(V_qBnW%Hau?7B( zh+zJP$3S}62Ewv1;NfklIpV?A&2RGd2v(e*+M=w0P{1h%ARWVk6={}kD)Kh|c0DG; zfT*|smaY?`Pgitbul_SIcO`8Td?Buyq-qTaQef1zEI)608Ml6GUWajzK#Nr265wCk zkexG-S>_zNjjJ1Ze5RjM7*u9Z0Z^@*L*Df#_ION8fl?Qt#1u)g6P9qB?xKrp_+p^W z643KT7LBKslDvShPUqXflHLMdyqi6-UT@!FNGRSdp`uEb1Cgz6fIgi<*|l!v4%d`i z7dzW~YjQPxG)2U_!nFVoV>`iV!r1+VKR0oIqI1(_157S*tBDA*DOUlxJR}FR?A)&;~Ws4<3TIe6zskoxrL&o{nwtm0QpVeI*{=ezC`rv zK5@nkUew6VU(?>CGs(;k2fd)U^*=(;kgl>R+_XSM8-lG8%_-^!p% z`#{hVRMazDUQjBnrb!xqX=9wY&RRED4I0)hDg%^rTx*?ig6Z5oRYO zRC-x9vYe5H=ZqiF2}1S07O=CO`JIB?{IQHe((^yC`M#LP{wg8PcIa&L5+@*p5D} zjNcS3a(p+fc~8}1t7knxk(zckRuAP!LhR*j_q$_9fYtZQFT5f=WIIPmmY{^+*JdN% zvp#Zj+D=7u)3(>pbnZyXIaZpsQ)_qfZ=14=9A2IukMy{{x!`%EwG?BwoOncTzc^<@ zLzNp_li%T6Uh_`#ekymiPJ)G%p8v}^uT37?H0Y$vXnXv_LuS$+JqgvxP|TYvR#tZKT${`gDURrPbS#ytFO3m{=lQPH}?x*pIgY4x0XAG;<$9u|qlGzXnE?6}1++_9Lv~!;Vj8`Jqe7dZ2Gm=9}8338pWP=)&X87+d z?U+lEb_@S4pON+$7#=%6YvpZ((JaDeZ@QayS%3_Y+d2E_((93WSwvl5W^B zw;m~HdnIKo?cf*`D*ZmFX9B*{l`icc2vgW+OR=G4J9 z^?*^0;a0OX7J9BCeK*)lQ?Gv>2ra9@P!BvebN#lH(RH~q3XGYCyF)DqC&)jeOXRhK zoWm|&i8Nz{0DE9hSbwF-hm{T0JKMYjxaBcjHw%75^wpBsg6pHw{mWTP5KL0WvL7g{ z7VEUxD&?E_&pR|w!L8nlxLgrwFniI?x6MBq_PpKrAf+Dn7vP_N@to6u*h;q6CvG9+NOOI^Y|?TP=^l z$ZgB{RszB{Egxn|#k91SdeGG1;w_&KKEYQiV)k_-8hlC130DK^Be0Fl6Q^LweSYb% zpdR-D(2SZVNkuf$piLELO_#lbQTwG;H^=kNaQ#>+u$9FYsEC z4y&7dmsXzfK#-6bmNA1d5Y)%%O5F8;gcbC)tiupjIcj;G)j&`KDrezj4i-`&gP@4? z!o2Dmt9nwBq@c9cp*vh*}|7UGz)%1o<#;Nop;RlD25=8uD< z-X#E<=ejXOyRu+z$a4Y-5GKZi9CF0|$ex(WjItSZYk)$uH=yLh+yF#nCQU%F>^o>6 z!1X8hN9=AG%=%w%?0K#yOb4xUn6cq3(9QBUC^Y&JW>xdzRgzg6(xP?>~;qMRKe*UoxDq7D383TKCiG1A`v41Qh@Zur`MisC)>&xVSb zfdGU~LFP-xT(s1bVf2NQbQQqtm{=cRK1u_GrOI^`jhMXNtTg$xR`BV>+Yq|@mvYf5 z&8Gv_Hwnn%$3Em2z+NwPnXq(LKYK)^wQ}_w2JNVkh0H7#(fTjZk^K^F8J8LuqARvnyT;#~Wr_mPy`m$(HH(da|P8>+= zPx2A!CO`xLD95EqR?3OJceG|c-$L(Mr(KPFS@r#4zkhwz9-_VZJm*Qf!ZFEgZSK+R zC{7NaT#+yZers_a5jS)TB&9{&e{sJ(vzXU+9( z#z}|JEOgS%5&-2x(CB}?#3T(AGX(ha*ugIyEx2Q!QnaSJ+O}Pf6n%KdG?@ERt(Oq0 zs+04WV{cV&?adY28Xx*3scoM(DFT$o3*bM=2WnHAAnjiTIdc-FimleS1PxB}JHsQ- z)S^-^^0z;4=gP;GAO%$Qqck41wi_wLtb3K$NHR63(y!=k^h{mf-6IX>3@eqpwmsCF zVbhebm=$Q7+LJu&RFy$xVJ-Ao8=RvW{Q$>d=rylrx{`kYHnS6{ANPW4^gj+MJ@m@=d+eo;CN7 zm*aS^k+OBkP0&gWjGi}07~06`VfM2yH<@LJ0&&O1Vd0~+8zzHD1timi27@yu5|`(5 zA+tI>5_Cl09)9?=ZbjB!EZyJ12ZPyg1QSaG`o9F*{Ih*j6lTcPj?82;)T?v1PJUZ$ zq<~jY$8CLwjn?4#c0TAgQi7WE=0;4{Rvu5G^$=p#R8toaCu@`pAV*#~3?TbKI%qZI zQ>PwWbDX9y1tOZRRN9ph5eGyqm$-ecmJulb0Gn<4&NgF;wx172QF*hHx2<#Emyq^% zT{Y!Zzi-07g9yiWJnKO`$m$|kknTrxmf3w9L9-%qnD?z)Tv_$-B&3{sk<>$6z{M$ls{CP zi`8|bg~_20yc`0vXpmPwwo2h@n2}zIrK2TPG0o@U$uC!Uwh*Q)x z^$m>)APNvQ8=88p;aJsFQE7(|^rOTEJ3FJ45iMAr*K`?}JG)^wS_}GTbyrQqy0r8r zf}+AM{6PfD3U)zMMgKh!>MR1pEB%Ens8LJ7)_TfLRc!c;hAYcgV8p*KAD2eF+95jM zz1VM=bopEc1qZVE{f_~YKox>(ZbTw4$F|Gau;6@1|xb@)U+c0tN!loMx%u-AI==4TBw8m-HtgsjS>HAQ+{4{8NRC4s{ zGl~C(*)<4HmDuV6SY~K@6AlSN+ZR9sm1g=7moJ#NDppC4OZafaOSm31$ZcDLCUDpr zDAt~v(<9Ygb`YnC^Isde#kwRCVuH_&NMs+-BEcv~-q2~$kTDqe`iyqZYD-t9(oNwX zQQgQUiD+XUNX=bO*DM-33cEj>9nIV!scZ3Vv}m3SP=_$o(1_H)r8VJ zu`O55nPQ#~m?SkvQeHIH|3B(CIkK^Y*zi%pOqdiLr$+=Ask9+3SZV*&%KNifT-lGa(d3XcTq5zQ@{PUSViX| zGOg_mhGDwwfK5fJh}|n!W+Gd&u+J30nI(EbLeRX}fysQ`9zJ~|GPvrq$?T0P4#~^l z&haTllXQy!B`G-<<*sO0&qY#-xon+L zwo0Z72P4P<5@%XxjbBv$8vtQIp1+iB3T+kFo^JaMNdGMA`OWG{#HjvB*OU?2Y^qi_ zefH&~A&;12&90h0)O zLTk1HJls8>jRWI36{KvlPb0vR8hgjoQff{_K~Ohuf7TkiD)BzaMlR;9A3h$?^hVSi z8hi&RGsq;wCq^>+yj4=4We0ixeR7$0CE!M&$hE=YhKBstFnsjBkdF*86wIC9Fu({t z@sSJ2W<*=67^{o|xVd;3xE0$@L-F_g*H>5S-MtE>OGZ5XYiBkE%&R z%-nW~L_5R_dEBNBv@BQy7QN{H*-RIB>@Mf#r!!sS@F=gMVlD09I&t*338Ni<1(hXD z=Hv7IVvVt5?$-&F91*xR$A2_@Kul&S#)7dmcLzoUCF5If!e>?n!r^AaC2u$;Bxz6x zl`VC!9>QQk;iKej6I>~0KeRKt2;aWcUNamw(w_`8hhy*)nzz8y7Q_KbRMHVFcM`f} zk`p&B7T8Q*^Y%C?jt*^AgBkM?7`@O*t3lxX1FQms6hMYQ&d8^Dowzg)WR882nZZ`M zWu$QxvB}k3B|JI72PGN>vw)2=lXJNB8{avyhT>PX&aq!V&10bW4 zD1K-~^FR@9kUy3!F%%FAMhTt!Y?xPhqQDi261tdsvGPh1+IOPb9K69<7uTcwxf!4& zi0Zj1S_7R^B58K9EtArd-gd>On|vtCzu^N~1^uRseqOn1Mp%%4%&XGjVKcy=ujX3T z1N$*52It1WJY%>L3U{h^Z;%U!{ir*shQik5`RPtlDI}(hp&s;FF zS30Ckoo(lrnoZ^7w{~AGcbduZZo`Q|ea&G*x?^c>o;4P)7%D*<8T@f{>3-mS|7z}_ zQ>0o(im4?XPh_HCdeJWGps{BSQfkr0DwwBTbT;Ei&ubj%>`lSE&7XWI&DRyG!C#IBgx?qmbb>vJKFEHsuE zCrc73s(OHtRSeA1IqXaX_v=K>0!{kX8K=luZpc@>OZSy zbyAy)p4WE1$;neWg+eAt|eaYHc+iC!DFx>iuB&=?#o{Hz!)Z zL(@H0F}6?jSYLNJ(-60>^(4%$dqhJoCQ4~01jAunZYkEKzW(y1SNFU2eSI1E)vWyz z3Q@I}{jhjbrVnn7eNy>mZ^1sI0L+SaAiv}MX}B?wdEGUDV+VHi7PN{6 z@l_7^j(_!!H)VeARZt(8=JsN+f&Y-RsqMZgyYGx2f%C?1D}QL|UyKc{jVGQ4sOnoV z$l=W&1N&GiF9U3zpB$sBB+Qv<3eLz`wQsQWgRS(h-~}^)7C%H;6oxT~-QFhj2&nX$ zA#{}INaY=HDWQxnH7Q7@e}1jSdyw9m74)HZ`ZFM6tbZJ zw60$BRWVgQ4(+LYAra&mw9yoMPR84SkfYAVmU`eqxI+6Xk4E zNJt`$nfC3=MG!oJB+m$u`F(kAMjsDePPlDddCB;>w1S0gkiLovnNCivT zD#x6H&E5U0x_O==O&n@uQ)d9xXZSI2Z_-)Tp(oSI+~xOZ$=wMaZr6(og5Hy?0nJzu6qkXK=`BBk)*rO4CJSGZlD7aAG&bD)h4pP$_3HP6 zGb%ejl8Ow+|7)wFcDuAP7PjE~x8$kIFDwfOYYQC9$9j0jDSHxbVl!w_6)yq;l)NrO z{*jdkPF~oGVXg7l0lEY7LkOE2Yccs}1~4fDxGY_ByIKvY%YxwB_o++`lByKH=_f24 zb@@J07w(cq^>e{hF?El&hMp)j2RlO3tL9RVHt?_H4bW*)C1XdS7vwMasArr6;u3yM z5<4d&EX{l!k4Ty(tF@z1WTb<-4z*zz5C@X&!9%nOpp-VwFA9iqm}27%=od^R5r+RB@0~fpEz**07{o(Y!RW1 zxw7LVgY^9WgH{yXD%3(yC#j8R z3JWIdGg*LoaCN-ju5+D9f5%xQHerAw5bXUFCnckp(z8W=KKeBntA@=jJ0eB2CgHm2 zw`@z`3AbII!c$mEuMZd8YOL_Y?jdfFlaBUR?<$QTQV*OW(%PG(XkC5^RwNc(F9g-Z zP(~g_AV8V3k$v5sJYg~&$rF5tI6{6SC5c75iLwsk_>3F?*t9Mc$}R@n#Anvh9_DsB8T?LUjcEQJ0x*TM5Ob8(>^f zZ_B$V;P3)VWeeS}=hgCa8rN$YX*->e{U}!&3XtSDf?&okEK$M4F$B9Sb`u~hPSeS< zUDkoxNe$?4`w8duTGpCHL4SzNo0)=W04YLpZc};{i54{vt7|5PEF10}uq@bNP_#v9 zN=?J()AinvYgo;5^WGLw*L1cP>2c%P7Ncnsre2fwy*G7xZY)3R+JRGZ4o7yW0rHmv%w~#e*F!7M7mv;2 z*sKQlvMLg)y|~|t^oU=6B=ImvXPuc_{6IaIU~04OG+JdB?}zVW1rWFfY;v)_(PHbf z)6W0!4EH`hNbQh8=$2^)5K@%kmnxmkLDzfEQ%9#IN?h?wWpa|aY8{t zNoTT25u=~=A1}7kOfgBHPaieZ?7*H>SJM}g%_Cmo~q_i2a zo^+f_-DSePk5Yjaz_;vhW9590SO%r&%FMFi^WKs-#Fj94jrksKh%bq`+|_gj;qTIf zcX~6Q#N202M&dF;!~etKrXNFoDS3Zf0n^2&nJfw5{_gTFJH)oC0{s~Ne-$35J+23Y z)4bv(n)N5Cu`qLRsFdTm(udmGhyw3HHnPQ7w;n6R*uUIew%}=j(9mdZhP4uT`oJgu zgS5Po18Wm@7G=c#=KY}>ZaQEMOtAid1k?a5UE8=iQM?srunOoVUImuQgXCuaU+~6l z*8Zd6o}@V|+!-yacO2MVCNpNUD%5zwEa%8O;4vJ9s&WZ|4K$Pe5VjtL!tS~kXDq>g zOydN^mIlB|EDub^{ZN=2K$liH_AvEr*oAQeXABI@=liuKrX75K)<_U{$ zirb(UndfK(uv{0yX4t6tnr+XKlN}0DnUtlr7-kHdWB!j@Ztb8fk7ra1BvTKb=r>#x z>|CP&WMvjWU)tf%b8-ym??bUf7q$x$iR_sE4-)Q?5gguJopq%>}{zZO6s2o83Aq7vVjZ&kV zf|9upB1Co6>DHgof;B&HK0>u@RK}wz%IG!2`>&c7@z}o6dKvj94@I!d@1|83A5p|< z4PG8>d>2z9%}b$2W2usWIqR0?i1K^k1DG?vb!+poFaYCJau)_A=u7Ex{Id}arL1^s z`X@hp^~Aq(9SrR|2#)Qb_00WGw3Oy>w&&qosf>LRx5S{Gh|@W<>qYGexDd~_w3S>+ z2eDVdpo?6M$v^-E<#COB7efRe=ejZ51R_%YQld>*`?*}<0`UE9vN z2W(C+fqC~T9jGb7^vpjZwr!%U>qiOV@rd#%eLD(u|LHIijlFAAd$Gse1tS1mPVl=; zziiht`-9JuZVbhp(qXtOVmeS`a8IlIAfcp9H;Tz{q=pW-SQzSRHR6zDUnX16M;lrm zlMMI40-&)fx~iU^(bvs#3mvoc%sYhEO;e3y#I!f*cPNx5=bqS08yFEG5ReSF zNE|FiKV%#+B1V&Rd25ziPIg8)n-z#jKCOwvLldUZFSU${sTMqM`mB)r8E{a&2eF8& zfkSZlxds>N?(JL)Belh3)EOkB@R$=`j6_fX000001GGK?QOzoDO(;w+1@u|Z|bo9A928hTSL5l#(J~43oD#6^3!3i+j!V~ z19N`b$6^0+DNu;%o+SX)-D9ZX7Z&RpGoKB=2c$mbpk@nc@o9!og`^qL2SS0aZKzQi z&+^W0FlQg@Bq}lP%?Eha4r^$JM|jDb)F!IIj!6Tb#5S9wPKSIg1=Ko{bbn_Y5KbqN z&Vnf@ftJM=^&&kWp))#of=X|Nf)=T+I`n^$VP52doluKP2cG8iRG#w(31UW4GL(@I zr_?9G^R^s`gF0hm{(_#g@V%<-Iok$ls71>ogx7S9Wb$&P$vX^3)xitv!fCcSuH)FS$B#HiIA?jF*QVzVd3g2BLN^z3;K z=IwKz_}V#)D%guqgrn5OUu+?*)h)^xIoMee?K%K-B-zBD$;eJDwq1g;zyRrxqm{_0 z1)4Ulg4NB#WHZdSK%<(VJ*Hu0n=L$EwO!zk;F{ZLBz}wDQ70C!@O6GhX(+ydh&bH~ zz__emWl7B`{Zv~{Y=KBpZNX3qLuI`}Twfd|PBWBlSp>ImD>y>;OuHBL2)lZqZOU&? ztiPEMJ(Q^8%UF&6Z8jZQ7Rrhf(Xr$2*oCp8ikbzGlTp`g&D+*O@umF;V^T{PoM>Dd z!Asx|pl+vRz2(`S$%s1W?|Si+RdnIwuEJ^l1c{rig#Kw~ePo(J++uRcS$CBfj+R&2 z43tF;%H`8#MDsIv`W!4}DNGj&oVVb_Q7o1em*vXgt`ge#8NE)G$pS)UA80y#XM zOUJ&v&^jwE<+oVKZx?6H#1s9vj!wJ<1}j~>w|%%nW&An2Gy*^wA2ZXC$z3Lni7WD z|6(wn$8T0y41y9h_N=KgggaMWbbk`m+hH%dC7V=)-hj-vR_@PSglm$U6Lv3pj`D@5 z_hb`1A+<}G0F{U9;YJ4I@YDdXqcBf=N7af5O?q8PWISL&fUi{EECT$Vc8x+UQu2W$ zxiRm?>}Ts9E`~FlI}$SZh8Rnfuorj$cb=iqN1lLLraOEJwmGjgM=E~G3jc|B>r`3k z!|*$knLQYDace+8-Q3`IkL0BUbf*gUBJNKM_N>Z1YWae~7xmN%?JAd^A5|nm4jdkU;Hg~_rQ)*^HpT&eQ3oP$b<={38Q&Oe298R=ju%bS^=p^0 zr02~`pt}3B-Of;BJ-d=Lb}=U8nL(EEM7LFlkbf*Qh66hupB1fP*|QEs@f#!8|5cmG zUJ_YxGV_RHjJ^|x*O@}_?IpF0umA<8rZFvn??6jho*Y8QLhce<()$3I?xan_^rMO} z_ZNCnYfIStMSWT6C88_FbWkz%1#CbxC8cF(e~?wF>SK`_l1FW%@Pip62M1&Yx- zh&5G5RKHp7fs*&=5YNyPeNC`nDUT;p`LA1K^+%RADD#dZe#Ya9TGF!Ff~bJsi$I?= z`~-e{UaZOl@*L`Ho!^pZt%UM}pYXa4GIvVL6b0)+$0(VTgL^jMi&gF?5nhPM*Y7VV z(0VCbSHScMZ*M&>>09AU>cnV#PjO8(m!yUjNxx*WgA*%1&Xr+T_aYR+Y>;1M`p)pU zJsrpD`uyCjWn_?vD>MY}nsvbWpUhsWW}6+tu4>@27WqBk5YxwedlwSkD+*IpH17AR z>VK4)zmx6yiQ=ZVZ12f1B(L5;7e_?6PW`0Yo)2hPHSFWRE65I-1M%MK)i7pOGPA3= z?t<%zQWYt3g6hn$`Ic44hJ)iTUf`r!*BEwa3k(a=XbCGVY9>+4G{Z<30Hs3T{?1j$ zW_-ariEarq*k!PVS&KIrb6vjIf&{9g1KSbxY0<;FR&J&Z|8aNGNf@!^pPz#NVRJ12Ij5-(BY!)FJ87~qiQkq z^6fr_xXxu7n>S_hw}9j622Qw;vK4(ARVZ~z`G8PR`)yPN#hF?}+O0Mmrw18#{%DE{ zt%hKN+Hf>`R7Qz7-gx5Fyq=^dKK98+N03wI!QGob;9pn7pkC|>krYbJkR+%Y`_HOEZiOJOhUJQyHaWANrT7aUl^~KMt zL&nGjQ@9(IwICrxN>(#GvrBxR{S>9(^{8uaZvR%ra{}Pg+e~~QD+Nx6IUUV#igFdN z5~M?)-u%Z;*#hVfh9U}fV%cEodd$XUOX;tA-hJy$3eE8#@q)p9nyEo&WT13 z&k2)EWq+l|iu*ZNiyDM&O`)0-f-aj*`4e-{-!Q=En!Z3rJ3tVgyJ{P7>cei#z&rh^ z;rX4g0h$h)aeW54p=H`vd~RGif~oe1l0_%H479f6uK-jh+SIodtq)L1&e$XRq*BCw zMc5VgnJs9fGRHIgS{|;FBhw`ExQ6A$s=VrIJTjpfwX#UQHsg##G6^c!v$Stk&nC9x zmG4|xUh&u>Q>XpZu~(e-hQY+`b0BulgE#q?ieZA+5VcJe85Ne~z^x@-q` z&BD0X`pWwVU3sqVH=F7XI8vK7P`3BJ#nM?RknLqBweUr^Wyq)}k5UL3K7$)3jf&T! z7+pO8C=yMf+OvgDMMSI#em-)X8^Vm=k5$`-sA$~XH<4#E=0eKX;4ek+ir0cs_DmV2 z-OrIVxM+WIs!4a%16&ln3sYzhRtG50Ya4-LQ3pQd7@&O-UR|r5`fk{#-rmf1lAt0l z#vJYRk3%=r&BpydC|bZ-73XF)T!C)=lfdG4G1_-+Wj2ka5-3f$#SSIf&tdjx`7FH_ zl(io5d?a-9rwd>WJ%!U#Q27Sttddspxl=}I|1i`{;vk>DUG8<}E0&ty7m#ze9oANK zms;<$$Je2JYK)pO8WHcav5*P>GGw6dMUkmfr;$g}$S=aj{P!4TlTr?72km_X_*_S< zbC#v8{Ygv4nJ0L3d+HusX8O7LZAb%$LBsurrUA?>Y;5Ctt9|bSa^$ASGaRfN=%@IG zMIus%7$%lH1F%?D4reG2ldUs|hl%Kj0KuNM69(wDc2els?RUORZXUq*Wq* zXS^9&p)%>h=_1Gc)z>7~SW;Z?`nnop#dW%@5wR-B>A(F?+4dfFCIBAQvgb>Kn-4h1 zGhJc}hOlbi5b@LqBwH$7Dqxoh8(PY z_CfjJ3e`kesL6uPtI|;<)lN;}OVlEO<#;B7R7EZnx`xLQ6cLi?5=s_EfslvaD>G$P zyHxP=k(=n6$uPk|a0K1tp|*^q7LTC=2y-?vtkg_-8&~yu9f#w4 z=$7F7db~$!7`AuRn=o9VXrtgMXzfa)yG%2^ycHOnJ~^OhaqeJOZ5 zfc?v9a8f%3x7T!zSHtjb35_9u&Cn_tT**tRJe7Jmnw%<^rWHLw!9x5%s>lWWKo~Mb z$C{&9Suq{}bg(&}^y)ab?J>2Xj*KAlCLcOKq>ZdWK>k+CgkYbvkye2=rvz*#!6k-{ zR(|FHs3twAa$EkXyoM-&NT+d)v9UQ)7Ykv0!;MiG-YTYB11koG(4kR<9tlsjlt?e> ze74`9`Y$fbbC%Gw1_-5R~1~OevCt9m80Zl?j_Sf$$vNP#KzO1H=KsY=yBxr z)(ht~?-cjYtZ6yS|GJ!E#GZyNXDp9@l29}HkoI?4rrJ|pPZ;6yR1IC)jP%=t{|xifNVUJfsKY)0yE7g&Ir}1%w))jnsOhc2AY`*_N zewhIjpB5l7%>Oe%Yv!M@|v^`I@_*nIiZL{G+tdAMmD zuYf4y&E4Eg<28K3Q_JY6oxR(YQL#&^dFzbOP`#v2f`)M>sVb4R)Z0wS?Qe{&noU1f zE)bbJczgoaMXH-^c%q(5)%;KO70r#u+ww>$ic$PxSnrS#YJLg(_}ySfTfh+<938*O zvP%JRD=9fIWin(^vU(5G=le~02mi_~>QKdBAjf140T8)Y*SJ{Ormt(vXa;=j z^=sRIfDjG<7ba`roe#=GY1X=8Cfxs0AN~XOp`Ak#q$}qRiObYN@{TY_A zvfaM#MJoB*9d}nXfnD=unA*75kT&5wNvZt2#Xs;@&9HCAVh2uMMvC9rwisPE*6&0~ zHX#!ZDx-iEgg9Uw;y0z+t6-jyiBm9Pq$&T_xn9D+;Bz^N;@dmHbEJg+h;m7{tCS75HUpei)a$zwoyLMh>TY-A^e2$ zMOKpz{~<)_B?Kidp|ZdIDfkcKKOJ)!fv-2TtdecjXw!J+-wxn2HSD3}*xPkBCj5#+ zJ-yJf^;Mtt9HE;a9bF>PKxeGmb6T%BJtItBTY!Mdbc-1Nc^fe*7zYn?n}4oFmNm&$ z6MMe1Y>xQl#fo`Vavhf`fytT|L}o|`LcPo%Ul2Tui6(%2g*jx-&beZ|lgSfM=XR&lNe`HA~_ zb^lo-2kw?6w-Hu#_pLEUPO5LWxS8Mswj%()@m`ru2(%^Jl!%YZ(`b(IV^+}Q)Y;ad z%3FLNCYX`$XF>HkoIt?%NHN?xeMAwlvZwwW0Ya8$VxZ(v>5&5G$5l%eJSQ`I>caIpIcw@#B2yC)z$JWP*S}>~n9*6Ed{Hmp9tjtkWkCYe*qDi~ z5Tu-mXQ6eY&^QuI%RQ|l)Aj!4TDQ(AI%RLlVNT_}49aFGmUfz2kWr)1lVv+yez#8h z!L(7PKjn_EXslH>8?n^5O~o}6&{V78;n3rUI-}>2L6?<1kKHWbf62v?+#)0d61>H& zpa(+nbSjxEF$v>+**p>lwD`SaKod!h-~3Ph<_s5Tjm{Gw^@B}%Nrn!Lq!rj^BYbsO z@cWW94NdGXP4TMMRKrmQ_nVIs!nb@0^Vj@DcC+q1d-34qV)LDW5i(l`GIi_`Ns=#`PhhmagildBYY#j;5nlu_ic>RB@Tp(S6uab&Dzs}{6hi>gJ;=j7Nv`how001$+5C8+P zzxZ!ZNBCrx>$OEUYvRq=BHOKV-jv^aorkMuWY|Y)UZteu_JrOhD*c~n2PwL2hb-me zvm-KM5VM8H>vg0DJTrBn_rh00B>4y87%}&rkk$k`uCPYbCBi`=tW7iD{wLN+@Dc)R z{izs3muw4hjQt>B2jJmM?(g#6{-7Z`E6Z3ti80!hAAz_fs(Ndsg z?&8Bj^&6I93(nUFz2b3_Zi#re$cQH}l$MeeZpR-_?lPu256DRHxkfQ%M8!yB=VRlI zj9TeJ^#*~eQFmoJ)#N1t&Bmmfj4?Jy;|`XYfjH`9Eq)R_Jj1k{M~BNU|2#6hynd++ znur?0AMPN@vvTtNhjs312T2a`flW3idJ@urcxu&wxB&uA4^HmXyWl5~iJ%&BkJt>t zS@r9#u00Wi$$yx%jpy3Da?qUV#lgpD!6*-WjaaliGq@E*2nsz7-DnEQRQN#nlz)f1 zjTUs5fE=7xvujzelKyyA#MbrQT*67~Gt|MhA;Pm;Uib0^|)Bb*W{6W%%2aS zs)&E#pvjgUM`z-)62bRGIvDI9y>2S)1T0p2hJOe&ehhKm0qscvYYS)T*m#GN_TJNc z!9{%QTVSDXXF62Da!aOuDqw1wcZO80XxJ&dNI<3Or#H#y1o5AEQ0( z7iGIDJp_Q_&;%1F?oCoVWPbQ|c>&wS=`bOpP^wR<30W(1py6x0gHQKp>i2=OPruO_LY9z{C`JDT5 zOVMs?Q*69Wph98LMso@NeOzxwO_CK&F6=2sE4cy--iS-%N8&Op{7py|g^i*Q? z6P$k9;jPyXj&VGof*?{h%#RESl%mtdcE--DJ(3#uWZmizpEBt7%4Mtkh+DtB7>}%% zr(lNf_`dFg5>rCAe#SSX8NsD1HuSC}4>A*}*C>(Q=7l2#UIayMVPU>+IpGJJxF56JRxYc=Bn$W5iT~Z5=<72h)aT}p z0K~M<&PMuaSrdd=0G-gn8ySI;@;>y@fL=r0P-YtABk^Bo*V>0D)IF@{x90CA+0F#W zXT!F|M>0E`aMR(nqb_M}NutI{)QPAEbj^VZtO@&2t>dyS{ZKv?vI&z}Gyn;ZsoF^F zzADD&E7QIAOY4wZziaSHqVKfvgR*nHlr5^dhf82x{H;rF#hk#b1D)V5+FHV%%?Z{T z00au9UkeJRusFY`Zmv>6>7;)XPG0Ukp5#}uv!qRKt_b7L#-_r52;OZkLe2x8P1A-Y z2I>+m0WixsN!0*a;d&LIRdFCFjP-F$i1;86Oh`qIXykMF2>{jW&mz{H`F<_EtcGzx z{Tm&oNTe>CmEBmTmPfV-T1@ti1crfR|Rf=rN;~K^?v5R5?Ro` zZ~y?z=7InZJxm*E5Ktid!pBBN&1)vS*Ll<*K9@#nk6oN}rvu_1|EM)5I@(!9wNuku zyv+QLwXy+f&u_vDf{X{f-lhTr+^KfE?Y+R0r0Q+VrE0NQ}!+~2CN zE>7yYaz{XsNT|L_s}fI7(+J`_eGi$pIjeP!bp5z@u5 z1irkVoSG1Xu2b(e|}C*!7mFv4SXjLx~XsNa-Bo+9|VMR?#^@_TF4P2bqNgVvsP zL~i{C!nX3h9ut-{RGqlj_G)=em+p*(toBMsE5U$pD?$};Qgrg48C~dD7u^N{697q| zkA=m{=ZskZqQcDgI|(LfAK%~K-{0Tg-{0Tg-{0Tg-{0Tg-{0Tg-{0Tg-{0Tg-`Ve8 zuuJni6@a=>1)WKR1!0%el{+9U`HEwTe9WZuW~?5HIvr~+B3TaBJuVg83tX^z&^4`b z%R6O+Os)i^z&O}1fttdMLF7yl@O+4>T)?Z{QWOKBBCEh1fIN9Eb=u27`*g{O-@LI9;q_jPllk^*`vlR##U;>A2>&3)rgkp2N*cn zM})V*2;v%B$R9Mros|rAI`1$1U392boqEVy_2hqrux-5T#FuJ-Me>Lf3%{DdQJ8di zm4QYTog~q+eL=c2*`2D)Z|*V536H{&ko@U5*CbmJ7lYgD@pE`6GK~D1M+dwKdC1U^ z?L=bYgjM`Xde|E0snq>#2@x+|M%T8&KW)}QKHD8!AMw_n#sbhM5~^lbx|Su zp}zvOj{MZ2wR!bxkzo{6#$tjdjmvm4@Znk*W1?A8tS@v%ya4$wokHTNyHE{K==RZJ zM1SML;)dylN{-_Wpa@#k2D6>J*HF^CR$F5L%p|uh2O=b~9!iP*y-5w~Wmu#4os;!Pz{#^RGiBou*ju3YQxmcfldVt{C@=F6+9y0Jqy z-r{9vq;v;7-2?({@&%Bdj-u&N#umq`Y645}45xQavUuc)^ZEDn-@^^S$(i zUbmj@b(EJog(8h9eeQX@Ki1KP6sCA!DG=0zUC*DeI$pLWR8_S4U?R^0FY3Rj-u-&^ zY*N+CTUQq*2WR8GDukf&000E~7mnwA;DA1WK$0F5JyXY)n>sHZAOXd!KwGZKVjU}e zeUQTQ-a{ccFHKgFF%((5cd{O|9wQxE6yeDJ6eohH!fm6bY!+uJ+{=xYpt-OL`@P^s z$$`Fpi9CZ2Y>AgwgPX%Fj$UR9CB?ibz3^q3qb`#LV)_U?&$?6%)RTzwydmT>60 z=dCea#L^Lbfy(}es=ORjTy4^CJlFigfPalSr5F@yD0TeiR~;svzG9X~l!YM+Q*#tb zTie1Zh1w(Aq3DIlkN^NPt@EHCJe+hWm;p9UjNzJ??n9&)oaw)sxEtNJZ`gmw3%w4w z5R!VV8^GOP$;jR{;ext3LmeMO7miYxb_NGwbUQ*{lJx^CfS22^MhH1@WO8zW4)#H-J~tC9f+$?`9{0(abB+0^)HnddL7Sb*dRoQKf2#2y?bUt&>;Z^`GXF{ zbvZmeH{r~Y#WmSl*|Bbv(0><0)Ux*!;+T@(a5p>iEc$@J;?dR;s}`^P)r_-VDdsPE zEPjaY)5HCUCKW4tCGPvRLZO?mDXd9p&!YzX1EA}bM%TFiX6xUuMJD#xwxK z#_RGnBdEF_21C*=#Y;R=rYh@FYz|d6S~xZR7$JU}J*h#7|kkW4BfNgYZT?sNq8vyn{VB48YN_nw%DoG){4uo@$n}l z)ehopQFbB&YbOK}Yov_XwgDY_4C%+P)~6yVA$KiC$$4{>qFuc^5U1MYVE*R!7X$zR z1ESwL0rQ;)5C8*!lva6SU>;>eL1qY&r!bv`kmG)A1$Y}{>&QSWKIgh^Pd_=Ph3c?@ zLI~N?+363A{b<$HZW)59d$Qg{NrNntPaYE7f&9ARf!yMj7FBR_zfN(Icz@IqH)z4m zyEB0;mi(vMLeWOnGUaE(H{9BLp@@_qkqa&ww42~>o!~8?ejZO-{VrIY%Q$?}sz_of zJv7)n!jh9O^abokfuEkXP`@dF{xGBh^)0fWPOP9(8-Ke$YAvDo&NH zjwF*<$zWlaqfrMlB4FsX58xOfz!5>bpU9bA>|8qD<3mJ{h&4|LM31O}ZzKwx#eGxv zZ0KgpjA(l1qx08x{Qn&CepTx3!KN*9FlpPr+cAU(gs{;;a9mhqo-&cn_C}pmgQmwU ztd7WtpDpU$p*~4M0>A(OgjrZU4tx?q#W5}C8(-R3m->Ha(QCaH;(wsRh|yWm0*cHX z^SZUlPn?(IzrLCYNv59Lwd(W+JM8U7$e8|}TH?m_o%myU1v1+^{$dUyfjuTTRKg{V z=z(~b^U65({;I@8A+fN(VZ>7g3d%nVm2x5&8djrP1^%fRdv2PZb4Y~Cy z<#)*_tLo?T*zyCC6^n1{LSYp3N4y~}h7sC52>i|Fs`25oc-K`};}fQCDtTEU@dbcs zOdq7{^xb4pOse_N4=6T?)tO!^&zO4h=M?RFT%n1<K3^bp+=b$tPn0sQi1=6pN0?Wmnfg14U% z@IKSW8kGhp$Y>D~nsj>x;?LJf+c%8DWLc z1`n#-SjlR^y+Pnk7LR-0qFN+s{}gW_N}QGV1)QZq0pMh4&8fe+x7D2pEeSXT32x~r zc)(!=5sfzM7>GC+*O47P@QOWjUf>~z$MT{{7=fWfl#NQa?#&pbaOg0d3|VVJ^)azH z6+M^KN8vg^pio{*NFweWSz8wV(IFoAs=amh!uDl(OHLa%L$YQ~mYHb0JE-5ypDDJU zmfmsw1r!y}g%fB9Z+B%|8j3sI*|M8bO6YI*=}Q6A{PZZJtz*s_*a|2blChPZn#)I2 zI*8_6n1gjKyh%bwz|LPkuVX+6K2(XWDdX?TTdU?5eGCsfK!%Uyxj^M%M-7YSg4=6? z(s-+xNdHnBA+Xke=(w7R0siPu2EKZ*8^QSz8>A%<()hzEZd^w9mF_?bq>4)b00ZNb zRW(InU`;PK(LxRT+w@V|xNW(}^iH&|tgNWlJwibr9AJr#2G@usQ6mSBA|2;GeNZQP$suGSAd8* z6}da(v+;MpZt&PO@$l z5#dSniK6-bg>MHO{v-*Vn{G_iUvL=ax)RQ9a7VmqNXgcIxYGPZy|~@>s$wwe!s<&k zl(#wQN!o?tCc5b05$HHsvVfni9#N@cUkU z(dAtIlHA~W#v3NCIU+VfuZN`+YM)G!kFTA<$p_xLFGgjw!O{vw_0^sqCA>t-OWZ|y zH`?iS_!1XW9b@Br{HXerni(A9Eiu`hvonvz*V3&lS*qLx*+nP8N+qUgYY}>YN+qP}nwl-UD z)z*I6s{Iq^zEAh*z8H}4Z?r>$>Je8-#~O5rLTATvZc?S6`s@&Zkd>Pg59xKq!<&?7 z*9Wz3-yP#<)C`8_A{bI>;1qGbNHjk>6|SsyWh+7IpBRgib_EAbc?h0cA8DPH7J+F$ z>a#~v;>CWaYesXpBJCSQ;nzMV;&J3CvJ&{^vGn0-H}7N$fMY0UwyY7Mv)cCLkpHFuUHOgW)5q^(P_V9envzH!j zly47XHiu}C%@$T2-7cwmriZcl@k7nyy5r=*GQUS~a$lf^=To3Xh z$B_9qI>7eoOt*_Ta=;ODQJ_t&U?*#x25Q!El$Zx@dT=e4SKQ9Qyj$E~vB_@QZl`iI z1R*Zp=)p_+0eR#yQ+b(cWGmA01R>kX{cu)zNixAt#PRx$TJ{37Lf7tne3DI1Hlt?2 z76?>)koq`5Q#!@8Ejq>|s-Sc?OZ*7wNGm4Ylzkh?MYexIGFgSI6!7b^(>g9Bf0AivYnQE-~u?kjNjNG^FE|o@Fiz zwru>TA=l`5#4j{OM3@7R1HL3WM$A$QYvkD(W9Ys2gROkvJQQz?n)(5I{=XcLp)8Z< z7QxDt;o7uT$2}`-x{rb!?Q!T0ct9?*Cn%h^6>Z^DFFlaBx$*_DZLv5S(7^%&Hr_}u ztXslW&lEv*5n`&&6a_4e|8R%&Xb_D&P*fmnxT@5KGAFiOn?n5VlAB|i(8e=PLz$B~ z80&F>j_;KcD^n~mANH(tr-*nU=zmJU&bY}yheP+20!s%CFb6Z{NHPuTRHgrgpM-9| z-sGHDyXq25#d6lw*L1DGop+n%j^R79l=-smpmksvN+kC7Qx$cpf3RDDKOI@%Jzl=~ z(0e0f@)7?f37*=qib2KtvvM7z-|P$cBH-{7qi?wlnfaz<q_sZ4miV zz}Ee%&HYA|olAJGbUz69Q- zGvh}FnKJe`2e$vs2Efvrn!ezh^78C??7}IE3x2x;IYF#ork>}&ed`)}mOGD2^?0fw zYF-3_=e?X5Z)WsAX2aT9Z9arKi%w2F*XOiy&vYkzc}KHwzOA6yMHIr=5hjq~>qd7X zt0bvjF$N&nU{@l>&@#x9%Mg;MUSVaPzaku@m<9~@ z0!TbQ8KIc0gR4&G0(}shw8z|4c;oMV#1azit`#pB27DN3v7aZSjZxY$(?^LXr9b`n zj?DT}O_%K#%>p0Y0Gb7r{Sbxp4DGOAIxn?|^3qP!R2?AVrqQVfHM@`!&ZL)r@jG_| zp_;;ly+4YnkEM5+jRXo_{5jw{HOoMTAZL)Dg9_6|Zs6yuwjX0lkVl4=>bz@yzN2)2 zw^afNg>rD)44_LQYXv>+R{;iquqPy9c4$=#W4*6(TT492Ni*~IDWegz9Xv=?s1Jh- z4HobFHeU7!HMY3Uek4=OaC&~XRjIOZI{Iq9dxYQzf*Pu2rnv_w-X`Ve834`-aw1QF zdD2(MMpzYV;omF6bs+Mm!lW6>rF-^>p4GR@;&b^doAtp)g#NC1_f1kps(_8!hq|fA zHVxoU5M9b-F1&R}3Q2eRYLi?^Q5o@>r_p`>HOGdaK*NXn2N@{&b+{p|v$c!Lb>ZOp zwiyS7Z*WjhNl!f$|4jtxO9XWfhg4@FW65& zkQpmwlWGFl7wG?Go_BJCJ%T*-h8rnuK3mULzs1GW;R23{GnNB?Lb3PP)| zgM}GLvAr)!;t11<*FVaR{|3e_7v3%zkc9AY9wAk*%@zOC7ME{@j zU(HDob?Q-2MPpZOf9z;Bw@oMT5e_^$ufg$6R5!*9wBMT>wsgk2002~?$t&+=f5en@eu7DRvx$f;QbkMsS^&g>r4_`MNCW5Jne^5^&v-&k z4@rrnbfS@borIWyDQOM#reKTB%`LMFOtFP@Tf`^N;+75C)#MIP zTML?5N>Q>$yo+KmCxeKt->3vWwU~s@0fX$ok^P7$ z`8dmze}fm*;!BdA$~G)v%DSf|j?IbXKZlhn{}rYxRuI6-Kb{>il{S2<&sz=@zF-2s z(xA$Qc~|$SY=5des4YzoNQ%VN)H?<#lP(`#o`Z{3EZmRQ68%&sF}8(537gvQF)$<0 zQq|QS-}V(~BF8y4D^N3QRUn1#yg5u;&Z{lPmikBtl&dc(Vx$1ULSHg=xBAY37^6&f zRm|APqMvhdZLv8pl&=B+;Au0zoQU=R#Px=|{sjZIzP@pgeN5)k*pCo|J@Tdd%3UZD zUzKvGow>-ODa(iBWz4jDvY8vIZdnyCMHjl#cczVco^Jy|)O7&&WJ{*@5r~5U&8S%l zl^66X6Q&{tan3p+LQm{LlE5;LT|(}ceYAGn%yJ^`gLt!J zWGhG$N{`omgebF2M(!k$)YY`RIj|iiOwFUuTlaQ<>Xhbz3Q(W;Y~uXmh^Z5YyS?_W zh^kllbJaM6AE%;e`M?-nGqQ~_tb%yEZOH8E?l+91bsZC3ibpc6S>WaLofo@aCFV?l zfpR&6hP?>d7rj1SR_&DOsNxiGET?RGPJ;u{v3I~=73?jYjr-yR67fkb*V)97k)9l>G0;5=%?%;<%6r`Y^-;$zYUWZ$>eAVtIPf@3e*;_U%=32s)&kXIfNYexV~Pfbx+h0~{e^@?_dc`qv&}UL znj)O~XZa;+WEoFaL48qdgOFuqbB64+gs}g~>9ns3yOgKs1aoQznGbZUW)zj;I7i3Y z=p`m3f~vs^}!!j)n{?b{*8A_7dF{4l733VX8s9n?Cnwd zq+5|zp0=f9q!KZoeN&nDL^*3bHyov|9>_ak<(Y$*^AYG9Q;~>t76COy{&H(U-nm4i z$u!7Irb{)IFsnPL%+~w^`4HxX&j~30j`=i?hX-|Y`FoILH7I_o{{)t`cnAOh(C&xG z(7axSIB!J6)Ha2d@?ekbDpzwkbj-P@EYhoGiRt^UnihhcC(j&d(CHQwk?&YJl&Nn- z`eetP<)Lvtda7cLh08vxp|{k-qY^tf!%s9h7*fzpxMC#O`<*KY^D(iRD4xKQ@qd<2 zcE|5hSKw)jLTsTyW~m4LQ5B{qy6V~GC5O(*K?Mfy3WeEPFKLkz_Y;k<{`PfF2~CAv z9uM|B&DXvb78j*;-QmEk9iG~@YqbE{Zx0#fP+%pJVRCNbw1FovB4CJ;xX^xBf3zaj z>QZK)U4NY+LoQ1%@z~#oCMu=lI@txKxuc?dSV!OFQYv3li^? z;?OmM$>zHFrG$yPMvS!t$SeF)Dkkfr$8=h}Uy=JmXNne~(yP5j5z{{|itpDymI*p+ zcQDkc$Wl8MmDT)DK)05vj#~jsLz8zS6NE7kLRLYQ3Rm$*F_VQ!3w8WOwgo|rK}!Qi zTYbaLS*bf42iM82r1 zYnI|sDps0W!QFviJ_!x;w0@g+wGPBVBCh6A7tu+CB1%a_p#0fy^9iXC=U5cCSF^Qk zqz$Yb(T?+Ls&_&GNQqi_pQjgmi17g(pze;U5KQ{?vsrH3d0tZ_1X)B9skd`soqJ^k zRKlL>biQ9chOA|*Rb~WGL8EZ_%?Mx8mLMj)I0Oh^{qa2gGW0^v&5q-EHw1H4zOBzi zk?$0EY!oPpMBT6uMJYb@eX%RaiHL;=B{Hg2gi3DB{g)F7Impc_{sg)pQfUM&uq>&i z$1f^!)A7a&rKzhEvm=!@h`J#~fHp+rJ8Q)Oqg$hrP>*zJE<@#r{fK_DP%`WMrI)e| zY1?1pIzz%AzZZTl-}liK%P{>!6G4N=LdaWTP-&c)A&4>BvzHRAiCqIWumgZlJVXh6 zc@jMIqgVQv-wKIl-KWW6mWC{iVnb1T#L#uCVWXBpedqpr#y`c)ZSe4mPPs*mb*#l0 zVDQS-q4(v6zf)sQanGdvSN`i)qhC7~5u>!IECk_CGN}LB6 zc8s|NwcqV=_=+QOZE3i@4eOzF??!Gmd9n^5ChOP?r#=<0AsN*y6=U`Cpf)|UPvSMA zcrk}GN?Q4L;$$+Kf8*CQCnC9A4I+!ziu165sUD-8@pLExcrd{H64R;IT#@=oP$BGV z8mcUOd!ubS)IOs?@rvz|{liTX+35Ysoy{qrdkS0O_qc_~&RPcqqlMs(H!_q*ZxLDXAWMe=Ofc6pA<@X^^aPSSf1`yYDWfpJ|`?X`&3VS!}S_v9NIJ&@M-M zUu#7B2!`D0nJ0S?_w9vL|Dtk^QGzd9Z26JSf=J720F+UqB&H+^0D|6kP4cQm%pn~k z@?+e5p<{T~+A9~zV0wZ-e4Ty9Ob_rwO}NtVJ~~f(E7(FE8X&%OU@Skk;ruoVXBqG4 zl4Y!atVQj(@Qr%BhspI1of-Ubghy@-FS3w!xqF3XkOC!Cd25Vl03DIT8-Op@fHwIGs$0%NU z)Y9kj0yCHt6zkL-PMN5l9n|*;vg4A?&z(EtOcvG`=b%8i%>7u37k`qYtyxh3Gfy$S!-ZH_G3tHh^7 zk4Y$sbM)Ek%C_JX7Ldd=*gijWewOoy6i&;Mi?hBsTyJNg5vdQ|=IrwD=}Dvg3@-We zp=@A|We0l;|)0V>El1t2$042!zmrwCN{InWwP}GO6Zi_%XHf*z`-D9%D(s38dv6N?m95 z?)rYsBkW>|2GTm9+f5UFhkfWs)Y_Vyn~GUUdkzYFG>2(@>djxiheJ1Hwe_>%>mkx^ z$8bbf=p#~I{yW4ViHc~yb9StAkERa;IwCX2<^z?ohy|p5(&jleg?LE}3AYxfkoO?( z-q3epHAvB9VoyUK;-&XB&vUnDp~Iq#AI+_<8Y5*(nu&g;d46ht&&H^S89upQpL?KX&E!c@8a*d!-D8R zEbr_fYcljvohrN#?MwBgI^x#nS0*Dh)e;%RjbX;Ot@U1{T-z{_OUI z9O-EYPO8lEuH@f;tqU0~XmH+C*+^NiCDLpUHS}vUAU*D*<<)Wl3t_j(pWwtUKEMZn zR+q8MLI8#HRUoQd4_>$zzC)kN_a_1|6djAuKw3!a-BPcx=@SW}H+)wKzr_*R&CV^G z>)0`;rS|vUI(9?JmOf2^o6toQ+;yA!Hauixy=C%Qjfm1PrNy`J-OLU7@gE!`YQ@Gq~UM)56ZAjH~`%<#3M~SnAa}LW%nSu;3z-*j&#G@oImX$ySuxkgGdX zBR|p;5LJSUeB*R6#LIC)*xb;Hc(5z-W`-Xhyu4m4%%z;SAh3%vQo0&cFPZD&#B<=u z#LA(qhl*cLyTT*xi=zwk#9PPLW0tM#sL#5<4C!?%Ti0VH0Zu&n7P~!D{`lJ`)Wy*DZ0qJBHOT@)uZfmoP^<;NY}T@kBS_F3L#+fD5jN zi(JHK>FTh>C{-~qrpaO02Q6rpZCwBW5Lm=m)^kXq{2~TSSX3|)dMi&-4Xi{xhO#i$ zW4u4j`H->gWuMfKUj!fblB*>H0cGovIrEkelQI9U#PB?e>tNzV%59sbkIrmw=DqPP zWVKWHwxQFAn4UAs3`Z4(&Fae=PXuE|9J+aBFk1v@KIk@)<(2INvBTbHu{DC*n6l1- zq2T;TAw6(j22QjMRZXTTt4cNxGec>PPk7ejX%`ggj#6!kH!WBf!qzRWcVRH)znR|u zXsf(#VSLncpum#-K8xdsGjz!+Sc&cMNT#uM%jw_ps==&YE33O|wx^s^x9DPu&vm|+ z@leh^I~dnbJ?#gs*h-Imje77sfoSbW<^n!R9O10C6TWGo^fx-h}_xS3J1mM5QlTQ7Pxw~hEW7oCg;$z0%h^&jO z9KlomP>r%sii(?KZT5gckkvbt1eMomUO!jQZZ@~C1o<2ZS&jAijc5)*JyLfqy8&Le zkN6ofO(l5(0KgTQML?MX_}hF~tPZxe$FTxIy_Rf1CFAz#CDWRq1sbn#>R*c3*+8>; z6Yb8R*dh?F3Dn|&l?L>BN~s(nvE3`>ho*wU5nWgj~ z36O|ID^8BkS31VvyF-Lm1@-PkW z%dbttY1Ds~6bE@T-WThe1&A6a2A1+|dmM3qM7-;idY6uK0pu9p08%(2k2Q6hAC@4d zQYfu6*K7#uO4^@m%^&PMumVc#QWdDspSDzcm@b;Qz*h*Z^b5Iz(OQddre%|2b`yIj zmB-)6MdXO=k$}4ef_<6-1_m8B;2Z)No$-A**eVL31rBn8c6m!_~XZ==MX-dn4#Of`CL5H zCc5tiA|ii`ZK~F_ODJMLQ41;r?HRD4zDfKOtgkImDN&v-n8&v1v%dKLp z+eX`h!zd=taal!zZ3OQrf!JNzaxAzOc)_S?!}y+2yGCZr72h5K2lIw0D$iw<9AdOU`1fBPf}F@1 zB5mu*TO;yQ#Rq2=EKS(w-`FJcyuF~$(g~R?Yz{5a#V&KP$6tZNs2~rJ0H8wd{YW8O z^`1fn1*5&dSG}S%ln_~cL%}&^n@&9T1A)9!&vMPbTP&<;e{Dh->?WkP-aBGH7Ohx% z2cn`J1XUoa3N$C3Am+y}_Ine3{$5G#kpGp9+J2t~+JfNjpwoaW$_XqyA?puzLQ;0E zdS<4=z}f_w#8cvi*jfYp4Y{3H;{$_%=b?Ya+~(~(0ghttAzd{D=;cO+JS^57$qf}b zVaX`Q&-a&Mtk^PDqTwfsaiy)9g?=N3=}CXj@U>nXY|9@h3PR*Z3AG>&n*Z8>q9q|~ zO+JwQiyC9NU@G1?Mj*w2v_q9XZLiXW?b?IG1 zdv}!T9}G7K-~b>z--j~MZx|5aNLzYb#l*+|?)GwX6h?;YO0nOpUUdt;llP@WV3(Edi${e1 zY9rQtYvEFL-ESggP92Q^MYc(C45r_LuesP#eh%DpLsMdyU|Y7!AJ(Y%xLU7m*Xd{5 znQYq0*@)r4^`(vatuYjOT2T_Yf_mCjq_LSVM+wn z*G6TN8LsiVNS)4tdEp~h+#dET-y8>ZfuMf9b6%YN2&-v3(x93VtMR)^8_mKPrpLdnh+a=JtyE#3tg;BX z>qM?Z&DSeu4}C!BlgQ1p5a-sd2WS5k>1cvFk!)4~f{E{f#ok`)*VJ$VW=~3AQMK6G z>^b9hZoAfId6Ioe4|RH)wfg>b_IEw)pSu(kv6DE=rF4qi(h~##03Kn<9z5+D09>m= ztqE@`sNG?R?gPcqm*>Pkcw9ig#@|>ET6+DIf)|&8@8|2?T3%l|jAo;bWLarP9C`WD z8#qf-B__Iupa1Y-SO``T{gSA+8t3KjVt~BvZGGYzu(arhA`L^T$rnLx5tUS&m_h~y#L5cIE(`q&^-75@XY*Ic8cabgb#~2mFT77Fi(2O`JP%@xzhFjyz zQzoynZ%SZ4h_NqL9W4ZE=_Qa|jekr6HeK1e>g$hz6dr{rm;1p>bi2k&r;f+y0Y;dc zeK#gYSquliTpZR>*0(J&H7Krc)BN2#8kUSm%oJ6hOD?)39V^w4c8OteL_mIDEC2vt zTCAcYUF6JDRsLLH6~{2|BcpF7mR$>HL_-7f?T=J3tZNPhV$@^}P1ukjRHcOG;y6kSETxW~J$$dh^? zSmvqzqr9$8`FGWu1J>=Ss*ywrHCakVy& z5Fz`zy+6XC9+Z>an0&>Xr`9R4-t@fZwyq&S6rzJ8lo%PlTN3}&?8V4oOFiPCqim_V zzkrjJsMDx#Q=}*@kMXFLs&VnMV?Gsel=fpl?A?H0F>2b(%ghOB5&N2D4LysxyM-cM z?`05i|9GltKa)0ALN?Z!+$tl8TNc0y9I^sEAw;{hFbSF{jkikDai2&byD#tizkQZJ zqf*%GB_R?%+cf8G#vAJ6!zs$&?<;9G3sC100rLBIF5n#0M1wX)JH%XCuqFUF><%E8 z8Y7akoAC!sRg8xKr?);*@NmhF0PGMidq)z^w=TT_2}23g1VKe^JnZ=z9{{Kk$*}Q^ zS&;cBuzsuHOK||mp#C*=W*Tlg>0EFwov-CrE#tcd$QsPLu0@FPl_)jea>(zSd@a}r zjL|9q)6J&ULxcTaD<5737E-YXa*J?@b=rPqV<37y@d><%pbrgE3zGbNG}roSN?!KH z^3|JcL0wFU!K1(fnu=Jy?nLtt-{4 z-E7&y=y5{Du471AtvRtl((K0`a7j`8vkKc5)x=i79O|`ic}*`QGS)yW4942jb!6Ep zL~F+5Hlq8re~4qsR_*tVX1Hk|lp{0&-9SQE6EbPUI9(q4Gvs&x@)!9g>Gf?fuB zspHeTH_UTz`>8%=jJmLx{NZ!VOqv{n1en8PKI7mj)8G02p)P4D4VGZ@4||I8!QYqr z!qHAQ)LZeHSGZ%okTM9;x^SBsz6Bo*NwWgH{L8amVBeqk*s3k_??hxWfTnzE;={23 z+v$*{QlEb83>ZcqFCpqs%#~zA?w$D&>o^sClNt+;BQ^*7l4t@Pb8f`$VjyFG>7NFr z^r_rl%9S_{9E5dCB*;?{q$7_J+(2T%(uwf|7AbmzNbeDyq}mHRiY~kmQkgZf+}Pc(KW~HZJ$fSs2du2>UQMS%38wEt3m(x?V5{f_<{>gU02K`TA6?q z={J+HAiF$|??P#Yn0s@(?6VXqQA&mTrJc$(AOK+7|Kj(QsB9Tj=wQ_szuLqsf9DFi zEguyl5=byQ9PUOGvu5Dcgt~{-bY@eHw;K)*Q8l)O`Tzjt;hSzK3yNadp*7kR@VErd ze^1VpFP+Gk7aN!TWM{T6V0G(b4J5#|x{Q}v|kKn8+%$0)O!1lX$+ zV*V8P^^GMhtH~Kp>@Iw(eT6-zC=ThKcx`)$f&=+hoaZwYwNGO9?W4p`7M_OP@3nOZ z0?+9$L(I1x`f3<|lq-<~A42BsyrkdzI>tlC*t3dkJI2F!Q8)0h99*$d%BhYKdR6Zu zcTU4|by9*b$@fSD_&m_G_tvaa2KVDKS+O(}uDa>FZ3u^G#fhzi*l;IBf8CEo45uw3ET-YC0TvJ*1_8nzLl<0dUqJFEoF2i3>SMw5JTdTZetr$&y5uL|j zTQz{Zv-}8Uz;!s#9vYFql&EheV5$s&=<~sNLo3_WZ@*_gm0{)0lA&3tMwv!AT<=-q zDY&NB-wuix&j|n4UAr`m_ITWKYAP=L$viNSK5M1od~dO$B&n0M6`*q5Zx&VXGx9l^ zTo9v)Q7W%~UW7>zZ9Ez=B6;WY)HJm1BmczbHp3n4xeRJN#t8)pS-^djt56qQsqSrP z-kAdZxjs$WxMNIXzIrecX0NqOkF<*G&sIJb>>ST#6UBCr%ZiPWp_*G`rX82+$r7`D zSv)Ze`NRThOfhgyj3)cs<}kh>RQ_;ab(if$qXJ2iJdHz=JXF0dC&Uz_7|{s6fo|v$ z>|U4gxJe*tgH$8RE~ON$yOkcywc3on%gFs4^EcT?PXW4lQUKb7&=NK#8g!+|#=!=E zv#)#G_+vf08Qim|4#5beIoce#hh?4bNv2NHV-qj>dw$qOUhG}(1#Lx^hj8Ibz@rUg zQSnb>1wV5*$hh@|~anbFl^4!JH?amj-3oYJ4GV$dSim|U-L9&T8 z$I&;}R4%RZ0YoosVEek?LPN(6@o0;Zy`_NS7jU{aiJ5o=rwk_Tbf(-kl$3e*U5wwl zhfeA@J^JD-6#4 z=o1=E;w?Cv1(ww0^b+@3ME8B2=)1Z3pbI3L6- zS#H;!9keFfIxfI6$5D7Hbi3Rybw;P4IhI}FCAzz-vp}*eQ%}KKvULPYSs6Dcp@H^f z55vMZlH>2{?2b!!PYLwkX2Ejkq-!^+Zbd*C(~urMLoO)dc=ZWHFQL|4yJOxo3yg)! z2{MjRG&@{41fxLz__=-ghw4KL~97QE%rR=qWL~* zV*L+4Biu{bue=&;l)4Yyf~T)<|LQ|Xvj&6T;_&W-oh#1Axdn9}`mEu!`os;);u7MxLgctrQ)~k9u83DcWVvBgnXRF%x%Q>dAU#O73czo(deY{ z6_g5M@3c^&mcgk|5(|0WdP6lGyB#kYlOe(bt0?PqJ;MXoCFRx+`#$NNztqvK{+|N* ze4;wR6sJ5LP}_V%b*+4Y;7>GDuQj*wNoizaxII9bC0@|^4lmZ*3mfU`R zu)jjv)Y!n3LUcig7n*%cvYS+ad_z_en)Y}R{mz|2Oz=koF$ax~U*A+=fmzm#mIzbWc%7FC^^w^NohKA^tc% zYnMVz)6xyJq%F3Nj5TH~sF^DLpt0Ed;Cz)8;L|MLS|J+UM7qo4$&L;-Suo0 z#Fy85IDGkKFE`goOeuT`9sB0Nsdo}k4u4*A3<-xXYp8X`jnJCf1TyCRZJRagTB?y- zo?dQfgX%%0u-;S@d}9}1**31bO->N4s`^>Y(RBr)FwJ6`NgQRTnb<^F552=oXq+&t zrt|OHNVhBX8}O?hnlmEGYqk*K>u81;$eHR2yqS%Z6kdlQ3@A4oUDvdTsqG9TFY?gVme9aUl2QCJFkvW@@?50 z5h1hW8#X*ADAu58#-9S+r()|xXo8lmqrQN+fK$ug_p1X!$Y!g*e33s=WqN*+Fe1d& zgqzXDSD;?Fui5oH$re(tc1|GbcZ!_a% zs2_TLAf_v=m-UI?V0LXi!}ZKx&FX{I-)9_Sfst<}%qf;ZQ-M2nx~U#6pJ$JQfee;s zSrKa3;AOOgTA4=(#46>*v z(~RLw=~Y+~g@&M$`;p}J$%7J3eU?@((&oMYkL@zoBAsJ+3qTy_Z-)zS3PEFluVfAN z?$Pze7Myb09qonTd~<)^+fMi=e>?xepIQ#`smSjf+F)H^IXYC_l@n}vWc@ibCpOR> zx!Q`70pg}NtoIcOuHjjoCL~AiOjf}x*;A~I=@Ycp1Ot1Kq9E@$CCe_^vfdi zM@vv4i|d@lu-!Ff*xFg^IKq`zyG`mN7mnU#badaO?0s$Uz0>hR0lA@i(6~4XG4>TW zi{Vi}nAOxqm@Y`|JCyGplm^y>okm1=HO+Y~EkAjZS#P^xbMBGk65oIw|4u@jvaoFW zW8-Bwz2w-_T81m>kvfW^l!5ncV9?R;bz~^7I$X@>1)Jte%-1|dfonGm7FgetX#fDy znSgNM?e-Lbxy6?ow4x7iqYNDo*0slHXW5;imbtGv5Qq1W1}<@mMH8@bRF!<^9fgsp zbRE$QO#iSVdY;XmCY*i{F$r-c6v&=qjwZzC>Je0MTaI@-bgtnSWS~DhZJ-oJ$%p^J z%{HOMB^UX$J4JlwuM1);2*6RI${$4BDeRCcPfwjNW~(Rb0Qsz11Qd3@=&5D!H}d6s zg}pHHz}>e2t$!FM+PV{Vx1GJMPb1q+L$TzZ0?i_5c`68jYGIkO5{|Qw=@fxsy{%^o z2eH&)5jJU^!RN!B`TzRCWtexHm!YQqF?Lk^UB`4PH=SQt(E`nn!-ybP{l6nGa}Y+l z0abhbV^tD#^hy8LI$dA#`zfs+*kGhGsbi3j-{L$+s&3yAQDn^Ro+-#xE6{m+MJ>qD z{!A}(hSvPsE8rN$RDJLsJQc01$Km);ywqOFURSkajA!bB7y!?g;$u0D9rVb-UQsDv zh2;Z9nz8wIdt%PHeQXMeoI_k#a7!t_3}9{>g0TPt%4eSZ8DfQg7LUV`G1BBSc8A`p zvo93Z1CXi2>d=p_M0NF~EMf_rtTLK$;e2D506!d~D2^Grh%zDglf#0|dAIKr`B7rm zkR;QL3wG&Hy}oqk0)ts)5;-~7(-iaG#}{Y8>U|x(R>roj`asNfV?N>Jcc87|; z)K;4KJKA(ACxRa&n?CMCI5U+h9~ia|6!Qiw?-$;{Nu8g@92tt-NmC6}wVvkGjf#J} z73A{IV4B>bzJVB#_BSabZf8vvAE{MmNMr9KM~}rf*ZLEQQ@~s7|E8ak3ezd<`yyh1 zdd1zDX9I-#J+_8Pz*4jObU5U~j2THry z(?K?Y$xW?dWjeoNU(B<*>T`ro@pk*Q1je?Y4&_yta~`!sT5kCbtnsMap*5#K90umm z$Nt`x{gFjq;!JYSzk$kzsmVuZFmD`!IDCxB`RBEb=ufOaNsjkkduXBo7%R}E9kSn8 z$Iv3sMVo5Rd&Z|nUkFqy1+VmU{Y)>}YivaP*-{dO!Mt+Q^7iXpDS-t+9VOmb&^-%k zP3-2n=FWgS#?M=w5yYv51ld0>qVCftEyIstexn1mfjy3snnagv#|xi@WwmwdvBNd$ zHH^W3F%-5ow5ghonqJG3_7Gq#cT_C-XvfcqfzTUQLxn*X&vsIjt2cM@`*5*+SXqu* zv~xs!b%pGyy^q=zDZX_w7v2}O@3}c6aYh9sltKuQlo*4f`<4~vHxbVE$;H**ol#V3 zN=lq5aioLZ(eFYHAxu@|H(-?rW39ZIO`^N5;NexN1?m*eAQO=2q=&qtm};$(!UuTC zGk;->CyDb{Qh~OSPdfmBnn7pr>E{-&BewdsKn$)-Oa0qxn?-a%tt=GXr7+vycD|}h zOh$LFBFaAeBO;_vX=zmBRo}n{mk9D@INz+Dkk>_*_JIHFX27M)--BoNr1zv~+c6vQzV%{)AQ}1N)%#9Ak!V?~2 zIzoPJH^FfZ&o#dd*bNzTKDRIGWZUu;draAf1;2cr{sW#1fkq=Z%X*AdNXc8eV^R`& z_(>t4=m-&RCE&Wza~jE5RgycFMhD@F$M<)8H1wLHComSwra~^BtlBZq^LMEN+sgMbzj!#|+drf=dN z>S-rqcF23mxt4A329$B55BF!SzNCwnQ{&~+F~_K6A1W9KoDH?EIlk&*jxv93)1cAT zmxqJ@$g$mz%HXu6oBrFmRCCGNZMUV`*GlPSL`-5^^B(Sen9jd?RDP#>*oOJ7wKNI5h=k!7d{- z5YyFccfq!cHv@dGysfHk+RNnN%x15jna+UCy)_qC=nwv3IaN!0PaJ>9;KUShXl^|% z4a%{5n6A5cuht2`P`|cC9-^dWU=@W+`-I2QPslIyoRAGf+{7`R{F1Jq5%P{k4fE6q zwIEDaEi~HX+yL*^B(HUL+q3hv;rxyMW{~`F&asQHUnolExCm^Ea~nA$EKHLPGW0@a z4@Mhvzlp>{z>9xUi>DShvR zW$+i2i*^+w6y7(aZOZRhD#5S#ugreZvSC4nknlI*hj($#y+I^1GOOF~oOG$-jJY536jj-s?=l^7Fy?%QQ2A7K+PURzKM zL80VjUH~9URk2VEUpxZVh@Tmv+lE-SS%ce}koQc^y_+{YS8Pj0VBbf$eLmvpx?#5A zlz^Av4}Q8Vk5b397yxajb~M_vP1JVkApQ>;CS3Z}vU7?lRd`S~`5aoOx`=U&B!fuZ zEF3X;8__SPV+PwE&$XVYT!p%j*H^>^d9&7YiiOCA6>w$f{CRokxygZYm6NtooY6Dw ze9s{h$&a~0dm`eEAWGV|Rs*`wl}BBIN-op8LW=BLt2XrC33w~qe^{ph6BFwtMBUh* zss@wI3v?qGr3LE0Ui8ldxY9w=+Ya>pRz@G2U7`t?w)2$L8&;FDbo`z1Ge=*mTBR0A zR;lf+f!%`h@x}JKVWPnC9NiS`ox}u_h(*=pD3BSoB%{!++xEd3h4{EU6Noobxna|f zTAvgwUG5i4F7@?CuP`S$!ebl&XQUPVQ(skzmln@UA#IhfU1S!5&`B~z$yJl+v-?}* zZ&9PH^6&ji@Ayov0~Y$x9HRv_LlP$~dO$qpW1R5ZLHfY-M45g3t} z?SX6bO-s&^7<>BZ88mpT)lU4-KM*mnYo=%|)H)~!8d;RSF*|*ueZ+BKh{NpYuaILW z`0npu8M4}VEYZfjw(9_L0bl`u;2!w;Nr`N#>tlJkPp>^$TuC>XNM95fvqDvFE-yS( ze?+S}Ocn>D67Rp#v<#Ytei zb;ypd-*c7OrHRb=E=yj*LE*m9M}OA&$G;*U9R@&pUo$mqOaF1m7BmLSFGTVmHSxQ( zJ(yW|_3j^s9&I4la+UNg9NAVf)%CzNM5JRH7DZVt2>!@gNspUM)-*=@6I4EMKwuGl zG=I&QhZ-zyl9Qu_3$u&=>S7$Dn%ogLujn>&{);Mvgz_e0vRp79-y~ij9T;`lBn1ok zshQ?64_j7=Ij$rKHR6?%vG)cB0CJM4u9gPL?KUu8gX`NE^4wX?j;F!Lu`xM+OCy%9?XN}6cDYU*w+ePhLW6OmLiz{TL;` zYKJT}h4la`oh%CM`FKhEt_)MW6?1NNmV%`%&Q?y|lxlwrv@;!G9XL?lU*UU+qgfbR zv7qw1*M}l;=I^(aK)1OqWZ<-$8z1OqfE-GXAxs$gGP`cH)h9Yt`Gg~yz976}8%C+v zR1TT;b!1U*EL-;aG#J+C-6i&4U|#o#U9@jEe+}LAlb&!b41)GPmDTp9$VJFwoU$yB zJ8nsGmP1pIxl8Sv6<5Q4EhtJaoJ6}s(f1!nrLLXB*%PoEF0ELTm-ch%{c&?xn|@71 zrOD_FRy>=D);ch;+TD)aY5sY@r{lv<{~XcuZfN4 zm98KvfTbC&a#!}?+K-*grx>2PsWKK=0vtD@-Xf>wCsJY9g@PKE4) zy;TEgPA~W1a7QEv4`+%b7j76uJF>KxEq@Y2>PK0K`79UFP<%jo6}oXoMtUC2Z_Sv1bsxcS0i^H%68AD)Q8-;1N<+~y=v)Q&iuV>DVEsR^Ye z&(LZ5Jx0Gqm3weuAVb1FX?*Zme>YX&Y)md>13O5&mi{R@WeW!!8Hj#g^9=X0`0X_u zl*n6@*0rnpo8;r-SPZ+DBjw}VA?PPz30L9W>uhzcJQadFuVJD_26gT!{a((BOWk!! z*Om-SlsP#Xn#ASLHGWwrY;iWp@m(lcXaSucs; zug4gp=4#F#saZAIuPnorP_|)BD2(g-y%9$`{sUR}^$HTn?KdUHd)-NOAJZ=l>);ZG zEm;0r<+US@`IJBxoJu!X=bbU{>$!89GmX`UB88@>yF1>t7@0C0c!2ae3#i-#zLjm- zIke;TD@igdn{w_}ev?^;V`KX_Do?yz3H`-F&-N5?UUZU{3hzzDLSRx&tK`7CQJ~2q z?{wvUN>$D;mDs1V<8U224oL8&TlEm_*c|{86v^rGKT3$M_U7uqST(70W2Gn9PQ*(_7~o`B@TSk zXrs$%y0P_+TCy$97+z<*%W`%LQj&}F*Z1XNRlbHD+s~#@s7Rn0t{Yvb;Ccpj;5hw8 ziMM=ilPFt@Srk()cjK0AVDvxF0)e=J%;ZFBo|VoLm!ZGNC#!&w@YqT-iVrjeW2Hq! zApU;v)2A^*qXFLo%sGRrQ;cJQ_xsdGFt;5z=+(9t+8e6W4!#SxE=tqb(e^>JsazD^ zsBA z(>$Q6M>9FvVN?$SP_GqF5;v?@ve@0;YerOhLZIkRzHKy|u2Bt)YG&iA|Dx?3n=}F1 zE#0ToW!tuG+eVjd+qP}n)x|E`wrzFUoO<`3ed5H4I5D5*FJ#=A8JTOXYq>C)@zwro z05~++NB~i@{mXq%(n|M~#)X7ab3y#@RAU;#T3b=ye5;U+-BA@TGMav)gZb%i-!tCZ zHw~8NS4_7NON~T|8KXlh~6j?ero&*=tBiTt? z!swwmp^q2n(dO!g_ZO4vwe>t+Z1(}kx*E5uhbexU$L$v|*OZbOu5Wg(T=GROle}Q+ zk_tIDbk4OC-T*JWJb@ms2un=~*!BGq2C{eaoUQyY^ZXga{QiE=3t%tH~axC^Wwas_(?gXvfDM!*W1@S{v*x=Fd| zl-FG9ZFut2U-x4c?ydLjY@>JyQO}M@UyCMOd3se`r4I#&QjEr`a`xpIdm7!AECtcb z4R?@kp5Lx|3qAKkqj7jDD2Fue{t1n-<0TCq(mb|B!P6*kD0r+NMU;wLHC&5hTldgg zp%l2#2xBA`2xY7W#@6AqvD@0SnNGG56&Cl+;`D15)9&46lcvve;%ZaUq7PC}!a{B5 zDo?(M8urkb1ELlb007Y+l!pXzFvC5topq!X1N;`%7vK&AjP1+%1MI(5I>WzkcAQ2W znYktG_ko_zgX#qTMQ7QnmDamaX!j*+7YNZ>jF>rSZ1Znrd7lb%;E3ux*Rj-RyW+b9 zA~==+_yoZF2~DX8v@aT0{9L-e*+AO8xzoiDX!;#&GaDvSt}A-4&%N6Vxfv*&hQX6c z5IU-veVOkzNHAJw)3MUK=p^r;Xa{TGl$Y7VzCwYN4uf?`t^L{CZfG|T|Gh^=PT`LQ z*-$chz4uL&b_|cfp;+=*&ybw+|Imu}d=+4teId8C>MHd%Vpk^Ll{Yc{L*z?9vJ_54 zN@`u%`FUm1g{76qBU|(5yRW5i@xZ;r7q14HhpWg1x*`2Nz4Ml4CvYU6dVsFI>kkM? zl5a2;IQh>kW~tjaiRsX5uw7JuEhKzFU)G@h>YCJ*0Ab$V68!6Fz4Xy=`g(`BY&0?RC!DFi#iI~eZa4eJ~ zl#={%BWD%@Kkm+i;GBkK5mR?L2ejlm-6-kkAf;I7Zbgf^&KQTQMTE;0B3m>F`|YcI zWhnLY-hl5uTqd$q2{RwXb!~!v{MkJh`m}Uu5 z<@2jDwQSQ@-~t}1gT-HWzju%))|2lQI$wh@-$a4hP<`)tw{=*Qy-pmPm{xK|J}S37=_=JRfJjd|)O8?T4<5eUOn>0adsh~hF|0lt&UCg8 z`GD$)alndo!rpGI$3?>uy4WdonL?hI4AdR=wYj3}ZQq8PMN6SLU0j;xhDhK4@9jb8 zz(iFn@<9P#uMBIYd`savMl?EiDw~Vc_~&XM---Tr@OD@vZ!>+b$ZeXdhy7`-+D@2G z#`*!?647-~Q|n^V{zqJ^@K&wsZ$@)|;t*emFx=p{g^0;CwxVN|*w1w!6j_koOR?Zz zp=2LMwPhL-adHXTDwx-=f!!!$<1Dl|>>LJQi!1vO7u%sXV$;T2)x^_dgY24h{FInB zuEC*zC!Dwv>M$Gjusbgj>R{p|NDREzXHISw-Z^6(@K_BvuY%XB?=gCKyKn!XgYxf# zCW|wN`-=cz=7$gZtU9w(VmS_wTf2Mc&pX#Y89Ql(Dq9%C)`e(sEZT2p5!JVlIE*LY zB7&}~G|!JJ+%ta&Jj{MxodTrYqnvBDckQrNnbxx9muxaP^&a-x3`7a&k!$RipvN7S z3AoNSv4GXEVj{T8{iU&YQ=cZp>Pca5Rv@oPPcRZR`=_QiRAYjvkt{zI>EjqY#_+2J zIPzC);UblMS`g3hntmB%fEW6@@WkXI%Td7SE$E_?BilIJ zUjiSkTSG3i&d(Mos;wIuLBX&Rsza4d7?u25SDyb$hK#CHQ>=S!Qih~?hVHVa;Sgg3 zL6B3i*bxBh*aKzo!oK-R5p zrX_jj7J_?sHwSIy`}qaDG`2bf2b!TL0(1G~hRnX0N`cULQmrI|_jxWHH5{$%C|=g* zoVdWW>z}Zia~DlWLtRBK%?c&Zp6KVVr4`$h_X0peypL|90ND5_!`3Iw;Az_!DLEZm z@V$XJzE~>s{1a6+lYY`-Bx|S_smiXe?#n;qFL$`hQ)B^QSNgtP)rcvZ?C5b|>92a( z(&Uf?p@|GU30wHj(4!ciM1=Wrxq!mFBYX*g#W-qrG8O7H$$-*ORbjFoQdnc-8DSj0 zogkgWTiQp&WYL!Xz=8G&If^f*CucYHrgS`QI%pncXHGu#4L+%kXeoyR<_l=hFq&+y zuXkil5BJ%1tI+c?_z>;XM0mdi-T2eQ_NMZcBRE;kAE##~T?%Ou#ryLICXt%!X+#oi zw()`7YEhq*w`BF{Hu-No2KE{EKt)5^Y>;0_!I|3=%(<8%NUnE2)cJdrfdlClCH-je zEEk*0TW#JKa|OQY;g+9~=WQ3tF#C$F+qHwpXaY6!T_Q_=@_nPq11lcvq%4YD+fsUeGJ{o+HdjDIB)m*Qm5n!*NKa>0LErH5@G3z%0N*p((2 zi;|DntKM(HC=)VPULRxfn%}R;2LKM|&%<^GwvUiWQly2ri|0?9*Oz&j#hBIZjkuH8 zQ0jf;k-SiNLGNx%kwrS^4>%0XPLixnMzj#Pp;6z?8cWxySbf{6&Mmlg2 zY{8mmOH5~#z=Y|{<9h`Fh_VGj5#iSJAOY6hZp438#aBF2>r}F@%D86PSS9f4;77kZ zYUpH?etTgG-O(vUfyR-j^_b?SsQ08m(9bkp6lFm#yn^-Fdumk0Dz6*_b4;C2GcgOa zcbas#a;a-O27{W44FO{gk975RG2O4qDz{tfc0OxRAj&C2)){e_~YLO|q?O>}mR{cUXrj@fyhHk;l`I|?n@8IN5Rxn22(Ng4W zU;x{Dq^;GYuXp@uzyn7!(;SXaDtx&Kgq$6ndJr|ruRx^&T-V}zY5eu z{wAmbbq!cLbqSB-OK}bs=y(a<(Hw?>#P-pN0f$iIk44v*cH&j^(h^#Rr6bZ&w;skQ z{E%lTRe3UjA`Bs9eHIPNDn^qT8l|kL7&h&kyv0v%9#q}8vB1!@^5#HQH$XX0as381 zKZ?IP=r_AQp7zDzK?q*d-CK3be?k7#WUj7s4AB)Tz8}04?}ANEi4GbHKj%kt`R@@Y zL2S1^gl!G$BBr4!AN(W)ShS8vPOP((Wtz&0PQ0U5sH&}5bKBJ z_byrRzT-qvAXg0kqvt`kF$2!?SH%MzUaw=lF}i%k0N0>*rt$iM|rL z_~v6@y7b|0KO&q=(e!$4L3KQrv)h`mNEMg@9>MD#XfN1k!YUT9Au+tgrxOanvX*hJaxI}LWGCYYV+r%V2KC|xo0*dNZ0S~28Hmw6Ct z+omD3wbGz*#E6XOn_7*}U&#Hp{uD65kYK+gKN6X+`3$vk{>?4SWL{;9o|^QF_p^Zr zB5>q3p+P;ZI1cS#Ag|e~_7O)r;zN#2{~wYZWT+G^+J9{=ezaFNpE&{}AkYFX*V8SIhh@rHUN5JxPk(uWNegbz~z$=MkrlPeQ{grS|*lmyg zLNV@#3=ToSnUEXLr%EP~mCEVjWhSl7TA>CHLnu)x#^2L4CP{##^f862vy*Z2B&{to zILgg@nGy<5J~3&|*Hs0fe%Eg148vAw=Q!v<5#JXUf5+_3NDI*IF%b}kS9qM`U`)Gv z+_$lRRHwO4k^s93iWk)|>vSsQC!mkoRAh$SqBM z!nAu?zaJoci|my|)tr*FFCL?mbvaf%Lm+h#>^Ah6WLcfF2E|xJwt)H%Jd>9&l^YWE3dt1?K{Wsh?ml zRk|>mIrYp9@=NMV!r2P3hA3J8yd5zMwNzj;RSbK)JdpD1;g)=1p{oxrMQUd=6!sH^XOyBQ*R7MeRyl@; zBS`f}X(o~#cD67`U9SYw?9$-`D-0?x%5t_BitFPX%1$}LBE_8|_$y~ft7WU~b}>Qn z5PGAZ9u64E%ujO zp0b{nzsA)!ALsIV$~&v;$2K#$c@F>xT1stFx93GZYLgjleiuvqs#s|H#VV-~pT@*@ zKQ>I@QPZt@e3h=MzZITni4X2VsF`B>Vq<-!$JrQ%i?ZqW7)ie-(|8^#003NZF*V3N zg&cq%b0Uti-3)LSJ-mEd2b8Vwupvm{m^M#OQ@h%}*Y~-=z+vt+ zM)-?LD%vNor0B<2vCJUwc{3xjtr+2P3+lgQpr3#^Sx+yQThgH2w(zt7iAT^M6h?DCcC8^ z?4jX2zlevp5J=9h$R>dV#|F=jxmtA^{S=$fn3L4F~|2>so zdst|lKj%4z77D%1HTbg06MGAkt8;&YzG`vO7*9BvmN@j@$^#bT72Q4SBv`!0*N3`Q zZ$LF5OJ&}oWvxt!m}=Krii#P2akLptkqd<}QU3>A0_te<8e5_b%S1Y0^Z=6Xn zpY$x#mx54ur}qcES}j*G9|Ap8tL>mVEb3FRz*h&6T7_sA6_pptF|B-n8iP5@p7iNy zJz+VDDdP*+w4PW~_%=+=(2}7_UkV7o($45Y7TP<*f}K!o5KeFH%3cko?zrt0&ip!R zqa*ZQ{6BhI!dzYfnezRZD~YL5pUICWz{3@-!kP++bYZU27USb>>}?*H zD~e)_d29~@Jy9JQO5ejp^%y?>?;%NAdc4|Y--u(wpA8_lexqaiR3ccocR^RaMMnq~ zHWUlviP6{e4c`Sn0cfCbLa*W((5P;RF?~@DHJX&e55tKPJ>4#^_ z_pp*MX_1||8XH8FwNGN34N))(k@l9@-U z1y=oX^Fu%y&Ss8AHn_wnH`#3WUjrz5IV}Qn_j*dsVZN+6V|9!-^soGx9z9GJ8$sKh zO-$mkg9+M3^4~8%8S*m8Gn5E!9{qGMDnzGp<3-xZ;MQ(+I-3?4S8|wO`#i zJAN>?x{kKRv3CE1x7xq?3u%Rqn4XVDJzPagG(FQm#Wp0aoM|lZbQeOAp0rzA$fy8e(lba<& zdWN(fCiG)i(!!v=_$G5F5Bx5BF&P-4pe&0vYeLh9DG(KNxqwrI67Y@xXDvlFnwg(pUcg}3d^5n+h za}Jq3fjz+ky>X@#-1UVTnVcPlu2sW;*?O2nu>>e5H8ip5sAhhmY4mLqY+k&lh)7uO z&E18}9)lbI+rPm`tBX)A>3+1^M#OhOr3H183~m0XZvFs3L~^NV6Zax&JkSAn6J+^! z?;$}%>&kmJm7zVwj8a5UG*6Os8FrOnxh3_PF~zA_V=Z#+eOpbkO0K%VI|g#_ayt~dABp~LDWG?fP5!|0__4<^Y(e+#1;eTz@O+r%eV>)ko#^bhc zx6+apbJH5vR}sJ%tpo01;^;T=$sU-p3A9**|03(zc6|5^;l5Q_sMi4o>f#3Yfo_TC zdZ;{1i(`2->yMCx%4Y({i=1;d2>uvF)vPc$L)E<~NIz+3EX=UC&`sF3w zb!XF+ubT7QC!}*Rv}+|(?o&?MjU9K`=_d3~d>v!TxHa~9Nop4T;Aiebt@FxP3eO7AM@g{uLI5g4H^xmvxko31FYANy!$4`21qBUue_ zIPQNeHqb=nkW!PN2_+t=Knm@V--P(!z2`UeOY6_cly`!^tkt9q-FN<$SUaH1_T!zS z;trC@4loknZrw|wS=b+g9S*7{Q16&1ebelp^Uf5s!IidAGk%Vy+*`|$pAM-zE{uOJ z`E6=U&Ra6C(OWIG^A@1q-u-7$JDA0vD;Oa+M*yiJjCb7dQ|* z50P6KK*$7Yi>BF+ja`mBCQXD5r6Gn|{!s|Ww%6PU@rQ;H*m;CIBO3bsb;quy3*pG- z0UF8zWIftbtI~kOFw`7Txahhs2YA?tNhD?$3B%?}&|=KeqW0~SjZ02hM2n1tPl1@B zJ-!piPS`ja3W4S4rX+Dw=+^X*SWw8Casq)(s~T!S+x4)#kz!cptkA>VjOoPghO1I% z7%+Vq2WPsz2ReNzb+6|RxVh)ZV1jZ*Q`eF-YSj9L(HbU()8}XV)a9sqpFm*xs7gEg ziX?IDL*nug$ zemyEhYai>!jX}%3B?XXSQwu8TXq~jtriM?I#b$CXV3N zN)R$NYp2WS2w-mkbUeU6a;~#`2j(f5rfFl#7i=Ak{D z@kVXk%Y6s>rQ>gH*G;Mk{Z)e}B8z)VCYOz8rRwWBpn`{)Dx7yi=}Q0m6an!(B-CoR zst#{q^iBZUBZ;gEzmQOVEP|UhcWPg6RLjXuwrD*GyHxZg?-|xB3 zZ4=U2Y!HyoJC}SW>InQ+Cyay|GrEjeA1Or>)aBA=3plyUEP@Kt_5A+{K`@Y>cT#Oj z(r393A*`9@^V9ZrKWlM`lp}AGifF8A&)Z|jM+A&R#kT&pPJk6EQaj+L?|&_j&ekewy)+f}@7+nL%;hC;0l*{@7YxpEV`A6)mt($aeXs_*2qoEg8h*hw;-QUiMO z0ve5RX$Ds5pJ0RtBoZ}eCz#&`5_*Hg)`bkY5!>;*En0FnmW}@}fkD$0ck^z;!l#Qa z#!9yihd=FS;(-}|(CUz?e@f1Px{$Hq_2AuJw#8)SHt_w*tmWoZz?w2#F#2PbMV;sop*@t&DzW8x202<{(xyOI~P9lpaT(RiyChJ zZ(TwD`kfJybiAH*|8YYx@p9~i>Le!;%y-w1gi+hp68)A&daDYt1BA5`LNn;1yP1Jx zlmXCU0={Tcr&MjuK{4NsOIr0U+VohrlX_uct{?zAOHv?-$f`4z;xi>Y1#;5(@j&bk z+r!=iSg2!Cs%I>#p!&xxyI-fGt;I1*)5U6c=27SJAhY~(33Xo-VCcT7&+{5BbfF8r zYBcE>jf)|Nrk12R^E@gi%O)A(=UG@(oVbew&wnx~T+cb^RkI^2&-$+8e$QU$Ip|dP zVRsU+8w@Nv)~B6-IXCX7kDYW}6TkQ)Dd1?0$T#fmFeY1nUvx=(TNBRR;mw0wV$qvi zIoXKjQw4AV6UD(8!{KxC{YOcVh!uW(((3}5=*_()&t=q{a)c`?P37!TM~lkzaLU|% zCgUgb?J%tGc18>;$At_x{m$}4x(E&~t+d4Akho2l7Ok@*SB-Q%>h=ZVRE_%0E)DQj zL#exX-TG?SUnHk4x$b7GGE;-08r95RqCmIi=CfJv9$OvzZboo9tWC=<5U3QW$4Njrib@0+hu4kq)QGp|Zeq?L?~poHd_CPB{hBCDXc zWxE_v#8479n$Wv|zW6E72=VIAZgR}wb%yR68(l`o_bUOtw)bP3l(pQ`9s9zksLuW{ zr4=j>7vKmWw%CI*HE0kL<4RMxU%|{T@agh)cM?U8<4L~VsAvg;gIh|AxMEs&MFY)C zu`QFyunloCClxZGRdTNC!%QMcnWvXQnT2{ecM`{_J!f}u4A?DZRiu-|J{DvAPqz0+ zVV0`g4jPTNQp6 zs7>+ps+)Sgg`_lyx!2cB#v@7~jrs#_SF6Jlb}w{>flWwRJ)P~G&D7`QkmupqZi#HuG|3yy&!};=InCu$6USpT-JjT<>~MhG}H+s*!5P zC)HZ~m>|xK8PP}%Cb^{KqFVLijm=al&!P~b59`J0=>P|(G$5-5wBR z?S~;P*NpBs$gtf>^T)J^BO=IL!D^>Qp6dHEv8{X#F}f;<54C+o+aFfQ6)}tRTeEYy zo^&h;0@r9@X5^Z52<2W4j;tmVqfsEpVSs(`j;L`T`AOm>{-&+f@z~3GJ-B_7k6TL7#@p!zu~w6_dX?)t=~AZTQf?moP>*bcv_4JGhAR z$&}bJ+v(c!yZh($NXMU^P9QRhj3rFWMNa9ou;cSWP1T4Z?E{ZH4>53)Q*H1*42Kr_q>X7Y38h|y%-`QDGh1qZqP#YE} znn{gZ-D?iH`{cS1m+v#5sUkRK4(>Jh)Q)6K7>a3coPm#-L9PK-tk`Ua9I`v*&E8f1 znzn7b0_Tf&QaRo%8J_7FjFH2Ix(4?&0!BoKLDF3339l6_z!t*tm6Lc zhXWe=ek7Ok@0Sz}6t2pp^uyNC0z3WL*LbnCns%*YVW`Q}Nvi}3K~7@GooaUU{yGh%GO%{d|({Iy9KCBo{p3BrsIQRR@n zvW4fZtr`8f@kr#e#aY8#84IhngJ1Z*HTbIT;p{TBx#tSV|%95^7 ztuMCDoADXuTYdPkb9hb5)s56Hpn_=4c17ti_vE1Fg0cS3K@G3Ig{5L6#_6Fgg*nTe zZ!cuow*X!X`$%nHdBBKhuzSsAr~bjv?67Y&X{*wiM6y@$f{Q+rKox-+m=mZOb6VS5 zb>`s7W|hFiqY*T~wJD^h_R6+%R~-rg03LXpuEm4TC9roPq`NdN#WR+0a+3&rKdg?= z6)Ad3uow*Of&4PPDhFx>pVp_npLV9FNP(mj_>LhN9_@lfA;bEQ)KJ8cvYO4etL_55 z=<@wSH6B9em~G-{c^r$ZOEau*={ShgyZ@gBVJx||YU9_aiHH2-y80Z~=K-Z$%j;Y@ z7o*Bat}c!^Afo7~g+kDp2Gt7HwbJuWX-ydmZ~U!Qz6>t>8j**g_yTBC!Qey^1(cpl zHc}VZBiv|_!N;8!i1BxHQ0n7q-uTdne{Ckc-U7zTqC!1eO^?4ZT(Ez8XL!RO-u_gy z=rwK;I^Obs*eBW3Udhsfz4^*}QZOW#Eqo}TLq_DyGQA|r`pIW0AO4WZLuqY2yY0sn~V*6=2Vxg zry*PT?91`T?C9?AB7B>yJ$NjSP1!O_#llTkA=oF8*RocN;AX^)(WAym5lz=z5o^lN zvQ(=7$s{y{8aBn`7JY}4Ne*e#1nC~pF-fZ#VeQA$l8H9^->RLW7X+0bd5UsK4uhvL zKCjkCQ}36}nN57gz*g!WeY7i9u!$O?0l5{Nm*IGXhFf{I#sat!K$QV_UqUaS+Ic^!j7Zr5C z)rJ?rW8_OCztwf)=Ev3?SQNh={{22Dm;^x~JddHz%yRyF8QjM{Vv7%S>6n@eTKkDVDCT*Dm$*n$Jk$*Dq{{ zpT8m9DMpWDS~p^`U-v<({y*Pg_B8yfVl?3U#U0#$nbe`_P~Api8`VNu0&B90Cp{qh zxJzsnJYg1ox;&|>0i^wQ(|bE{llmI zN#dDnk6QJT9ATR$1!)6uOp`}vDM(sn6;hx#z|II!`{_W0dMlrUu@Y`4<4;)Lm=ii5 zfF{vbr6ICS@2+NJ_kQ&f6sLD9^IB~=uod>|9bbf(H)8njsze3vMQI$3b1t`J&2|@N zN@c|>RF)zCas0#@e;zbMMASDefPgKnjRtpHRs|pEY4*L6h2p#es0`!HOfLB?W4rNp z6*=FuUeK!3V*{iu*@ek@tlTl?z`%dmyFyQ`7k;B3fFx_-}vg^Sdnus zAHFM*dNwS+^A`B&Q&VuH-%ea;MPfv|Ynxf!orK))Sfp7G)Vs9$<#-yQ?1k!Q%v5#obcIPW-gX}A zkS+mHYY8Y1w^2A{c$Z9{dW2WoX@;FSC%xAhq;>TN9a?3p=1(BT#V3<8tp<-qx!K^` zcI@&Gx}Zwk(OmzvQ-bfY&5+xMB-^1PBnl|39~CJlu}&xbq0$?o-n>O__)Fh5_B7a& z^>m~6)Vu!OsR_IuSv7pb&!*VLyKoe+sE&jeM#gzf&v@ohn6SPf0JYAnD{eg4WWbn6 z*<+<6F$||X{bP-=W^t&G$sb+Tr6*UI`imC-2A)K^E5luJs6Hc1_)iwi7Bt6guq!mbG2Sm1HQ@=+BKu0xmjT)ndwBToiNa|}tHcO{VwXeAfsC(NTQMmJv-7TRg^b4XZ?A#dD`w?lcg?N{ri4l;jI~&=j zx$Z6non7RfPCSzs(7!F#d`}P@gX%*>TVV|=eR*wIEyB5h1p(h1j$&Mw!`NO^%|IaD zI-M>-3gUFcc@z2GF;Yi&x4q&E+er#&t#)?I}ez~iG~K$b`$AIiDadhCI{Sw*WdI&KW0W-4$JO z#k;%ofT0qo55~yfVU!lpC1{_&Qh);4BL^f{!I*<+65TBfC@B>~5l?7bP5krmdiRlr zK(S&!og|bj>`;PfXjr)xDCi} z=RQwZx`{9EKKU%gPM^iew_|V$tzH@yxjdbZPOW13`9f;g^8i4G{!#$dC6`aQznr-M z4qPb^O_BoFZX#w#Dv|LGcO7ZmG7Nu@wrpG(d-zSilI9kx`F`jE`T&k})^1YjoL5O! zBqI_gF{uES8Rs8xUJ_M;%pV#qC^A(MTR?6l_AHk)Qu1bNh#<1XZj;l=Ks2r#4a3>F zAHHvJ2DJsQNvB5UP!b8Qw7~a`pZM_gCzr2eM3VlZRNjoVFE~8h`yagHAPFffG=-&_ z0flBu7@b~-8ZMPw?~yZ_KFv*jkwt#=I^n&~f2TtRJSihn#&z>2k~kDvl!=;1yAzIm z_ls~zIW-%AW3sV)B`|f|NT{=Of7#I&AGIs8{oNOQNOexkNIjZ|lTaX($+r+TXD$s;k3b%7}$oF)|uneR@=Mt2tuu zYZOV@yM*RS2y&WzB(12>{|gg3d2C!S6q&-J5Tew7fLoBNAr^ZwGIDxiB=>(e8*)pG z1p^odBDMRVHPvFF!SQ@6u7g*fX_e3>vrcMc4Qg4Ii;-1z#Zo zJj!>*!{P8rwDzRYEFa3flgNqbC}&cgvL4R|Z0) zxO3!6|LMchIu!bdoi0$(iut~DJPG5sE;0HqW4}ifGHE2$V=7_YhgM#hIYsLUJPgEO zy)!%<-8BhZCC-A{TN-F(8O#Lj%BRZ-N;4co6*hU9>Ok7N3OPbK2<5TuKZOCfe(YZ$ zIJIdVMtwb8rG+Epcck*3jDAA7qXTcagPh2_M{o#HvK( zy87fMtJ023ad{6Aw_luJwlBa`CIz~{6D8ymfxN9nwfzYM!VdWt5U5voXWglPn)Jxx zwZxS+R5N%Fpxj-}l{peHp95qJ0J^&^D>`|6ZA>0Q zQs4ZhRr(Uy-r0uRo@L7s?lc!vTmRpkr7djFC-NML>&LY%=RSnL2}VHgfCyNRmL0aF z)vl9|+y_E}d1V`_>~L4UT|}Q6^snwH-T*}r8nWMy3Y>mLYl@4(RObO)j$6YdnAZYJ zc$Wf%jg{3^H4XgaeYQ?t!{phLlHxXCvVV50-Y1)qX;u*+h>*h=TBYGtAttb_JYI8r zYl=orVp{q>a52bjrt^oZ;ieaUC$(beVr&VZXw(cOri(J2Qarn^#;c2LEyAe`mDJm!<9Vk~zeV3WSka9;9nmI}$-ckox@1&I_cDrPXQ-E{{UZt%Kf)GvB{ez)W zNtdah!}UZJ%Es1{GjTR%;JX!)GOx^x_rAEG>hjNh=`LI`v%5s*US#m)6niQ_SK06V zAg4d1tCH33lRG`6^g1?piagOQq;vPMJT~@?HmZaZe;R*(u!KZdJ zr%#g?xIaAP7dR2Uq^dFy8K(^TulPj1ZHU&K=>}04qYZgYDJ~_aa7ToSGgDF}w6O|2 z^P+LMPOGzj&lqL~X)3`~KtISN&v~-hFgkMJR57z!q`6iG(pdlM;WCX7BOEpA5j9_O zuk<6COb$Y$V>G_m55$L{Tnj|(tQR+U^;J?wP%b@tfF-C$ua=STO=1wa_s28uY+wk1 zfpoaVVHpPXZFObEhO$fg&rZm@x{RT;jcTQ=(G6;AvUOq~T94FEP5+Lo9kdA0W`!u| zHNAB0cuj|)uz~v5w&|(+A_G8PRhxCVnzBzd;AGQ8;4u1ef({#sK~ja85z z*n_?V5tPd!@s4M0$2exo^ws&dcCZbi@ORm-e~H^+8O*=I5ywz6)gF3tV=W86OH+J| zT5G3jNksnvIiVtJ?0gs)w1u?vSzOGd?CRI@|tr zKtxkBnKkJ{1eqoWTDmGahDM>+w4jX9`jD?z>18W^PnX__D!Uo2jv{O7A^3ewIzf&M zior5434~)&IDVD4%p|47T*aDynFqj9*B|ynMuO;XigCa@UNkT8w#b5|9A|Oiknbp| zBxW^_v43{Fz`BkHFff!|J*R{EH( zUQ0Ap&NB_$w(2r=$Wi3T@Oxg9df9ibHQ!}oRd9AG`a z7cnOy2*f`Ry5bC__cE#!1&bum+%adnt1HAIytGu!(OTHOlXC|nK*GJjSuLm|n^V(%R+zc`)ctaYjLi9vSs!B};}xiESx zNAe;~vI@rj3PI7q`zn~Xhzq{WgP4>oB>^Tth#tUGa-*Qz#Lp8S_YefrrBg#MT=ZeU zt_0~jk=4U^mvJov@PWTIF8XyyOy)za@Woe!f0#|O4JJg(>KIWfJa#4@SUZ6>2E#-5 z|1ZkUp;;Im?6SwUZQHhO+qP}nwr!vH*tTuk{%%)w4|>$q&m_MfsU)@b+QeU8)fd{H zTe1{cPvDYTy92npgaD80{BFg!u&YQ;Q=gZ1D7tJC$xUZxeDuXH%YqUg(RJ^s6dhA_ zwvpi*ADp1}TKZ6CG&|@!aGi+L^+7@tbUjtbU5kJqQTiDn@HwYw6bVD<?jHN zV>z%eZ>(ww zZ7Ja$vP>LlbX_!tif>vE?!iXQBp$?ra=Y@?GAA$r+{B**9^(zgRXTHX(Z5K)qI=FN z8Uw_p6*)U)VOc7lz|cdaM(>bZbb(1{-)K!q>`P#r*Z@`1&FY0*Z@|=7&?$9iq$yV) zhK7Ur{&o?z7&D0edrE-T^>h-{cGnjZqI|qf;H)&o_!Fjug(dr|LoPtp~nlJmnOFiy?=mmaH`oDR{_rEL%d{Ur^+z==E1LN4lbza+WI+lwi?&l<%h-6%fs+abe|0S%TymltJOjQ#A8dXGb!bOpLvuL` zv-@^v7*^Iht=F`N7up<`Yg7_#7rnrS55?|R+gjz>hTe+4JWi3dO)7ATT;%DMvokb-3!=xJ@cJ-|@pci0bxV=&B+IeG)-a~6IKXArP z$>;|&>u-0PBUsM=u=*>aq>e$^r4viH5n50G;Nyf}yb?H$L@mQ?2|f}4{kXqJeX6A7 zHp*+M6)n^k{9iO7afoOUd%wx+LA}PoLkI8GZe?Vw-9)9gptGyn#lAM|CQF z*SmOg$shSqaQNG{gS5k1EexzGy|s?n%nPa+??*q{tQGw_nmbkjc|*3HDN33!h6j;3 zs!=2$DG(Uf{p)|5@o&i<7vl8pZ=y3wRVwJr>CP;Sc9fjN_c8&;qm+7Qg=eN6zKs-Y zPfV~-j4GHIS^rwjf!-<~>xlyx`r>EsnAMkghZRc`v*fVW-YHX~m?S%nVNHPuXMJF; z#|6LCP@rjFZwbUSDrYXExEf)fq^`q7!lf6cul{kRI-DdeIN4VrlZ_kmzm=R%n#PwTQgrwl>fdJU z-d?nv2HeW=MGG;-_sI=nBn-bv1)^VBQV+QGa~aZ$AP9FMI)R}c-V+?Z3+jQonwMQO+MUS~DQLS$sBl`_sE-%`&2Ha&s~Yp?Bw4u+&@*{%qg>kJM{iODNOt z464nA@QSG&Ni?9(R9yjoFmw&kV^;0pwLKbu#?E=vsGr zeZjnmnqI%9`X`kXdd-3(+m8o^<8;a0I3}&t5J)zHQ$$Allf64130$ij04pBpHvr^u zSdczxZ`dXimjhks-n-PY4@CW93gz@!<~`F6rJ(3W*1%jqY z0|tGyP5{#Y$v&uQ>IzOVY2pOH=~bh{rgcnjF-zI3Cw>ecHcCL?6k0{T{|d)d-9u5Z z#VIA#haSEGCgzQMfX>eH}8Va5aapoe%%xFAF}u4YUwOxx@&0fxC1$u8q{ z)XBideVH25o%l1^PsoaeYEwcp4$JK!{WfhZuWNTjLO0g_)wQKQmqjpNqMRsFh|e)~ zCBm*ij9(*JHQJx^wXFp#@n3<@2YQnvb_*IFjTmeJs7*=Ls^WI1JQbpKp4E!D1y26o zTm(}c;b61#@*`(%$fUef++e!yq9yJ1Q`V3MMO>4l_A!quFeIbrTSyIj;J=^^wcaW3 z8y$?Zxjkk4O;m~;e*);<1+T=F)ET`)ywSPshCQS-`~}O2;Tp@%lBOj)O_<2|l+IQ3 z7ZF1h_tu@T>7-YX!r1l15VPdf7POkb36>MV71n7LCp+h+%v+)iLF(po%1A?iF+;~8 zum0?j*(9Gl#@E#99T(MBv(&?f*axs?t1FTM!Z)x15mXt5PJ~Ai+)qEM1pLbg?AFCe z0Q?@p&|Xst%d=IEM6&{VzML$ZOn1_VwqOc;ujn^l#H=aambZPrb(@b7!kvv6IgJUe zMU!;xV5?gLqi@6RyJdqC=a9OeuJw%!h@oZ%`+JAwU#EU~d_Ad5s)55*fy-p>6p)>4 z?%Tq(l5PyAx1ot6f$(VGC}?Z^2te6mBCp@<_MGnZdQL5S$KHy%=|Sd{AW#Nz%sc)6 zbcHL8)&(y!X#!=F!3{L@hG)%1l!Q$yTL-DbINlN*6Yh)&-aJ_gw?gd{C?WksA#yJa zz9e%_cK0fc6Y-LQes^>uX=+x^76H zbU80G`IK?W8{r5ZB%ER(X5kjk3p zqJ6^dHx1}+&!PA!^ER+wtIU{8_wr+>DOYe&CU7L3X5&euvw)#Oa$>afL%DHX0=BWM z8AV$x^PWPC%#3-cQ}_jg9(oL*fC+&F1rz*9V#4Or(#}0y+=)zo{`!bC8ci2KBmpb2 z$Kb1+!{LiQ_+f#hItGWjtiD;zCu^XfgKFB$GeVO&J0{?U2DQs|-?+#>9Uu?sV;FW=nM|a`Pe1{)vg@$s_ z6HL8;i#@BD58O!^s7*)CawhCD0oVBUfziXKuD}G`_E^OapBS-|{vXs{BS~ga-2PP^ zjzMfi><5kAe12%^K&`K%-Z&Y0$YvFs+MRTbqiB)n@RjT+aa;oMv5c?^p>e-!udBTniQts<`QD$iWxT`9?bu#M#uDD^6yLfE$Q)J&hhrCYI)Y3f3 zoOgLae##cD z_K~}A!?jA>tkhrP)RiYd5N~zANuakn;m2ybxp>-P$&pc2>#~~5n7e;Qw47ciWEe0# za4v2NCsCwg(+jqO%B+?J1y2j4i~IhHU_8?h^>!U}=+J<==+>m5yKSdBuOxq5AM<7{ zj@s`mL!oP>?9^4rQD_)wA*#!v8Lq6)i%GypDQFEpp+X#|PU~hZTD4s*eC~9|9VgMI z+!>wO-v5Fr$BoT|bbdb4WD*rTyZ9!|*GdC3Cxya0&)Wo)h))#Za=h_!`^M|<*QXXh z%e4|C4u~VFDF-I>4GRq2s-|Y}=kH!oO5JRsvfZ9`|LWV* z-YJU>Pi@X2`HCW@b#4+41Rlc`m%8pUtB*&@Z)saFE30McudvCL7q^8?#LdS|IH>;e zHzF=;q^d#u#}NO?<=j+%Tv#RsQ>O3!_~fS3Kv{C$lVeXf&sU;_lZ?;{Nh90o(8d!+ z*M}Q}tW-th%%$JdwKeDy-!$C(3Bpe7ZBw&$Yg)G>;sCKsVBzeV7N`ar@sE8m=z zF@Z9Df)2JKgDTr}Xz#C$WmoRebRik;NI-hIxdw|>|5|?K467=VIfHYw3p1?zahANp zh&|tLHAuT5XUW&W*pjD#sVjw88pc)XWvVxm;9BW{dif_l8S_NHWd#eB8X+|(4x)2#iuVkKeE_`6QVWwblhHLr3W8G=$% z5BpJ>Du-I++w5*jcksRW8Z{+?14R?gSIb{n%M;jn9~_LgPnlo(XIsK4_(xr!OEJ_r z?FdPZsW-vx9fa*;TpPMxffdxfAJ8pCf-zVcTv8smDw&bT1Ox^J``$z{>Q;tB=%A@hz&cE}H!p$~KdGn=|W=xD_h&ih9W|@f<}Zvz=AQ1Uq!A#x7V9hW&h*OcuHHzIN>T)zecsC^6(96X+}WblG=aM4gN5p)#WoFX97LO zf-xyC??M{Yi(V`XID_j)wgfxp5%nOOgr=4FL>x9|vwXI^efAC`W_toqKH;8Z{}N=(y2 zJ5q7foQFhsPUc$Z*_5h#SMuG|Z|%C*dUZ5EqzV+K$Ut?LC6$hY&@3SYvqliEG->wt ztKYZ;jr_gcC>(AC{>SJL4AFFuhs0LZ#upwAd@$9R$QS&qL9K1%-yH8EhobmeLB z_G<2x!MmD{EDlyx3Q5xnH4TDXjVE_F8uBA5vhoVlLr#@)G{!s;^k`=Ri1%Q zI-NS~vATCV8=F6$E?nFse3|)+nZ{XdnjtvQU%c zj!C7rX37QP>-w-jKifM6jBlRDLW`!@I7@sB8jYXi}rRCq3Q7LMSK5)<=qefpoJ}6xRWlDRd6s=w` zSxH|m0;wRITCuL4L-tc$+TplHXHgKs4^*8bk=Obk_oKTtw8wawrlgrg+F zWX*jBHRMy@>?s>e;5T*Qr{JLFOD7Gxh*tdd{S6`cE$9( zpYVE%mlC6vl?_z*vlLDfr9SeN8+NT8ykY5GOv76eL@%`U@sn?9n<;16gB`E3IXc6; zk~4{U%0K0Q^#s}j$axYdkw$AQ&6BW#5CrLLnRuD=ipl1ZKP=DZu0hdX1^2aZbc z2)cS1CfHdGrx`YAh%@ z$|r5|o?dox1W`uo7HBn#_~@;)q*%nSRR(1i{byD7!N1=^6cDTO43;7#kwd+z8gqP< zV)TQ~q|oGZut)4K2m!N$1Wm2=w;V*zIx8{j-6)f6ozS6&mw%I!!pdV!TKyTM4ci}R_CyVf1&d$h0k0zXjb!_I zjO0$d{_b9sKX}F&l_3U<+6KEzzX#NO?#@?EHIN^wSmJZ)R7_iFa%)X*t0Tr{ejF-d zTF!(PY#b?vBGMvZNX01_21;L#&dRXx>pbKJ&u;!-ay)(yP)^HQ|Lq>7#t%B-XKa+l zahgc6-`ooZW;pn=!?sjnni0vV5!)Kcfgc}%x*hl?_t@O}_N9h+dBF@kp&D6Jr|55& znYvC2npB*cCg(o#QkC&a!KHoB=GAQLaNd_zE_)7jP;xUp+v#sR@Shu!5h*HM2t|Gd z?H;y#C6WI^!oLI2JpqcT91ixbyDFCE$J>l*46TGCp9`6FK-qX;BtOsgj0u(Hy!Ya^oO7Bf^{#?5oF@^+;T%Brp) zbt3h|+mQI==~>5SXlCeTW5|@R9dlG=C543R(Vx5;b?;*Y@PBFHFYPer3TrZ zMqkvBdAK8`hhN_7*-KQ~65q9x(kCscoF9PFttOo};<*>HhBTIvlx`-c_YGZlu20xYcHZD0mq^q&( zR-Z4K@(QO2)_HO$ycZfJO$?(4W~fq$sLGDqy9rNIdq3(R6Zz^#YU!R%N?>lse*o_n zhuUjBQHB1M`k_}=)NFh3M~YIiq&M%JTl6P3@5qU3?m38d^4cH&(y^qW-2;EYZJ1<- z-9mvxy`kf6Ho-G>ZqLkq7QWX}J|fik;l(_5a!5tJ7+)d;d}G745iD*KP%qZCOL8uj zcmSzOn&%2KsTqIEoTfwo|3N&Cu%GZ;N<>nx~ zuhTqlx%f+E2g21Y49#_VI=_cEyu;h}W~)VfJ=n#}X@6M6b^oA`)W}UKSLX3^m*k}y zrdypM#GwU>*f^t>c=vMe@*=j<0RKSha9GzL%QzMpH~ZB|Xppe{(y6GZwCa!5 zN+4m{UW5SPf9|cS0oSsUSA_8P`4l4>wgW~PDKTm8bhf4*OWu4Q*?%3}& z{GdqhQ9&DVA$Jur??~3!ghGs}EAqcXvJwTZ_GU!#KY5DfmpGHl(#icBa>j*KXZItG zZ3-T%-cPs*$lgMe#$6-;WDqwxxZP^wXl9xLWNA8(V7ex`Q7xW z2Kd>2%HTeSt(43@aoSD#c-ZPC!tbXTH#GKx&div&I;fN}IK{(nzDb+lH?`37nyO&d z8Vp+L_%Rn6Pc%%h+KDf8A~h(j!MPo-PhXDX*QS z7mc1LLt(BWv-96kP${et9?zrCOh=`m?!Cc1naw5)O~U%YahIpRVd@kG+|e?tX!w>$ zTtf9xLspFDW`$pLX+ptVV+`-wGjv2i(qP39wa-A4i3AHrL|Fs0SXa&8gMii)w`E_5 zb)E)j7){isXMJm=ET+U`w>8HBD==fXntXNt^a!E@`20bgliLzkT@2NI&_ymHWlg6} zBWsyU0b|3>5Y7~TRATiy196~yE$i_4=W}PZ6|cVs4ybkk4{Q3*^IvKWEgrQ|&`~2) z5UMj~%T^K=G)np+u(HVScYYOYdCDH@5(0E!u>|D_Xk3xN+@Nt=I(~)NX!8s%vc3**H zH)6}v)@l!aWn)>^6BZ*o?1@0{9u&B-g-ee zWS>13II+g^K2t5hz`Bv1Y}n%7i2RyFC87+%$tcvDE_7$Awc&YDQqR?_9)bn0KD%-7 zG;?>g6q8HGTw|*pWtS`vPaokhxHlTn)!u+E}T8;3sv%Fx8xx$NVQJ-|IuaE0C zIwhwB&iEnKT@6@v7B6++!NQP9!q0ej)7)tv8K?NyT5&!NiRxu7-rH3|b|I*2zmC4N z6=!$@uT+~*7y8i~h)%YMPHv7U96S`6X!wG`Tq&ZGf8QWG`SuSz@>L1DBRSGlK;N=X zTmMGyQ5t#UC$5gBG=iB5FU{Xjh<`8D2TvKD7_% zrglWpM-cKdB>lCtK* zG-&)cGOg6Ui#~1{m*3rid22p%Vu^{pm-2k40>15N#-jpwqfI$}4K%qXlNaHp0T9K# z>y8VK*W8L;B}oVBNCCnlspI6d;LEZZU_U{QFmOFy+28e9ky*?V6IuCF##O?4%N1!z zanHqKU#641#Gi=KgWRCwUctFz%+tU?JZ|%yr z;;Emq#cb@~7skRQ`JB5~`*ZE?rU75oMzbtBUSACdE~BxDve>=z+I8Q@R{_n@iLigZ zf=oavGUrS$3|iVM1#~+wT`f2v+y-xi8j8l%`#6yiT-4ZByr$e+f$QL|nr9Xmjo>_(HsfF|8+cNg!Hnr;NPJ81xV zGLomt9Olx0saoZ9dhM2RFXOwqSTr0E6gytZLF&n5U_Mvt7@Xc_nF=io`52I$r~xhA z&;32d`wmn9f&Euree52aM)&U87b)E;#ke=c#n{-MOCEFpn>D&)#JrUORSs&4fAw@E zw-Jq6tl#gq-@zPy4D1R@A0a{9ytooCvx!x0yECIe5OQ#dqqxd=E9m?}3Ak*XT8G+O zZv{4l{Ms-nbu~HKoD$R6PU52{p0YP)iV9_RI@%zun;D~Pg3KWsK*63J*BH_F^@14% zT`1N#7<^j44ozZg9vaXS2)1^K!}lf*?E(Km>TwXTP-Ci_5z|i_jEh!;%1aU+*L*0= zh1r3I8MsI}=l37ljw-lZtY{c|1m4~b<)}Yo_O9~2oz0%p9&0zgA`xyJa;5X{M7Nj| zO%)dHE}vv`5O07_n`?1Ai~N3RiW z-29pDs$nc;McU?>bTWDC&|Vf7QjNfc3UpBE5c)@vYSUi+G@hp<`)hMf+X9d+B`JUv zfEyyU5ANuyyMVUc42PHd`&Fgx^?Z^3oX^tE34PR}o?WwAIU=oAQ%>|l{h4SI!C3)d zo>xfP{pgyIjZZ%#+i0EOk}wVaEG~nUm0L;UMjhJEYftUa{Sjbp9jWjf^rx@oJY#Bf zfO?!*7v>sRrTi^PQp_L&EI+UB??Tfenq~| zZoMio$H|X9!M5J5fEgm9W-Zi;;#NM;eRx@ok)Lwy48MH9+B?a2WOJAIDM`KWRvc8? zInV=+2rM#}w#H6Hco7h4soB{em;qz?x4sw`B)K_9?l-|We$bR@?VbFpyrCn3gjTsI2M^7r_hm#Y`JqRpX4*tj06>8-!&N>`oFs z7PN0IKyg7*fo4Nm$K~8QMW#jTV=idkwRFP}SZ6}FjXQjvHD+$IzR|&bb&xc$xXp6;%ggbQ-N2W+pN2uw>Wn2jstEHD!6?< z9`*<664fVRvzs7jfdjxyH1TexUlKE7F?@o{)EYEY_JS_a7*XYkYEJLf-vKZdc?8#F zkLr7i>-GjjZzkWCxVC!`b-fV1KdsQm{n`Dz&q3bNZoy5x+V(s<=xz^4mZTHTgS;Wz z(2+wFKm((pelYl@Mx`@_A%ys#m-N}W|B?fAO zddy+UB(L3C!Ji?#^8XD^`TvC+pmaJ#h{L1Fc*LYV2eCu^N{&K5>u;zw$-j!YjQ&>l z(U9Aeo{9+v{a0D$pyAomFwS+;)#!p%elb|X0W>FUTJeuA_%deH$X^cu@ZV_Hin(;L zs=9{55@M6d189=NcQ};xSpxLLEj)B&UqYw<`0ZA#;02-R)jg+Lt*ZB{qh?aqDT^4f zPn$BBN>RXRm2xn{6Ri`mW1hR3Jk}u=<@sWVN{67KH=HcARqZ)dMn1QTZ$GK?(PJ=b zqt?wUqB!Y}Pq{GeaF;E0&glUDI-D9Fgq=19NUEt6*$TJH+Ak(TaTr*Bs_fFY7lOuv zqOnoi4!QzvwL4GuVIeEer0LFrhF3EY2wjp^>%?ITYrl{d+kEA5jn+p4cHMGK;54s_ z*!vNqiKs!8@Dk2LgQCmw+%p*nC5&y%IK1+KrUO&t&B>s5bSx@Sy4H-yX%k_rBq)vu zw=UhAQ|CI0mqMAUX^^eP=mw|Y(9LWgwh5<>{lc<~+7v{H@sSxq ztgw&^TL|&q)AfIRzxUcL?ekJ@z>;Sk=}FTgQ&MfX{SodPEJG|8YG$pjanmZijxR4} znn6Ge-m_5-ui5st+4<3VS}ICdC8fgqBZZ6tu^CZ?xOu`c8VS;HP+6ptA5yY7Q8fCM z&jSd;zmTnkih|8`#s?A4`3B-u`dWhgK-QVG5jGY%~X` zIK&KR;A%_O2cBj+1{>t5J_Y~~z&M~mo&D5CFudijf|`U#Er+sYbZsRJ9?{Elf~GDW zzX^NSNok_*ygiUpNMTD#FG&QTS_TnqglV1mL%utl=gD;`>mb1TrX;@|wQl8~Eixic z3dxM!zTZX#Yr|Fm17$g7H^lqX$BFDJ4H|QHzmn(SDj#x$ycG3MUO#PSp zEwhzl6*-1UHnv*A_tVcroKWMhQV)ef#0Fr=r=WflTsiu{uctfY?SprmjaNVg$WNZMJo3qN>k2e|VrIwY^ znk&R@#90SElL;(p^lef@u?@y-6qe*pMTK~o3X&hh8t2yjG{2v;^x;X$kYNiPU}bS= z?3t)f-JM~dn~VHTT;|LDvKY7-!3hoRHjEG^g%tieimCLTdM??W6O#6yA_{0Zd}gR9 zC;ZIU{7h?{3#91twsm{Mvie0tq_jT`20AmW<)0&6R$-n1Z!QK3-4V1;)Rsc}a~ONG z=?}yVFu*t*OB~^gQZ#;V#HXg;V}rx)i-mh7J~#40iihqD_bMgG!xRKGa_urEX$vqf z%@*~%fhxA{+e>K$bCLSb+Q||SB^kiR@Bf-VOu_h{|7#%9Y6I^YVU?2cKSuYL|Fa_> zk-fUqf=Bz*U@fZyZSB8~Ss(4PXDw*|)P4;S3IPCwgKjRq1)HEyo89Zt+uP8H>XRBe z@F$v-IY`waRXx=X4G`sjq@})^AMCGfVRYVyRJ6Y_f^ZsE%*+nqxT&BbFPhwc^f}~F zLWu6+C&#)n9>G^WTA)YbptuQveoG(YO$Z<-T;g< zg1qk64<>FYs#%6To5~cb4N~z_t?u^Sb{mzqGavH-quD)l?09MI42=L4u>)!4Fmk@Q zFoPltiZM7zdF5t^Go{3JVYRpzl~etR`Zlk(;P3ss;VLKtVVL=kH$k^xT0vqdy<@f2t`rOx|K06ZH$pi;38E){Y+H+CilS7kQ_X? zKu_%>!XwE_|0;+1H~PfQcReu%*y9EUD3{_5&65T=alvWbn0e1oSysiH=WlmIhHx>p zyb~Tow2}7T$g6{zkVLoArAQ)SlsI1d!Sdxc56}u5fHu@4%!TlemCw(d_wf2l;kV3nP3zb$mqox#Qnl`%>T0}K2q};Ta&qB!WT1O?9;@Wmq4X;m*AfRCdjEVIG z%KM^H9=EJ`!tJTsX8tv3_DQ>nhwAM{1CLIC4aixP&@{<8%xadA)Pzx5NITg~u8rdk? z%3VFus`XdYqE1Hju6`RZh=i>NG*Q8|9=zKG8vLQnQJS-`=PwYh*DB1I?`v6HrMLo{ zI%=rH$E@9B&8u5}&`;P{ndwZ51=UL>paLd;$y7CO|H9PskI{s8^l)z7)~Zj5J_zM( z@%FCpkcggDisUB84E-qDitEkfyzEEtM(oy4h;WnH2=qLD>zSJNHsk^f27&xMETAR0 z1Xv{a4pS|F@qr48gNS~i!fUYhAZ2gR_jRT@FL`4a#BE}4pPK|m~3Xw@4N zi?7SQyb^a8kt_a`D|Us0!E4{5^=ET!9|9-!CBtlI=Zqrfwq8hvEiZFP_$anTr%z32 zSfQ0>jAvl43`oEq!mObOp?{BkAz-1)Po!*W5}w0vOC~1TqG<{+k3#mfm8RJ1$IDu^ z6%d)~xU&}KwBGm+c=-c|z2gf(Buf~*=ml_LV7*T0VQ#t;P%S}g))EpU zR1a)PD|>UsZH%4F^>GI3r}$}zx&n~Rg0LyZfb|**qJTm5g~nhu=HAw`a*V5qTOD$3 zOX6kx7oUMrU#JG(H_-aaN1^k}Aikburx)*>fkwy1-)MSw{xf|_GSdRON)(gfORouK zDLq3D1Kh`==OV!YVRuzx#)Xr>ozW8&(k~*ad(#e~au_V@Q^>CI5pNpK4hM?EcqMjf z+THHDoOqp-M*h=6X&v4A%x@UuY~lwm?;e_XwyEyJOSOAxMHdiKcAKcfA_9C;9HfjL z_0aeShCRZL++S?TZfa;Nq4zvBmj12I*Mc2SOKRVY`k0}%FRqcP{Ki&wrHzuEb^GG*MzZho%~S50G(+UH{;Er} zfPGcemtWT+2;lp?EQ>N9dVW~I-3TpnRQ-7e$D3G^4Cc}2C%U<37>c9V`wMyQ`2fFB z?(=J=`7l^Wm|U4LG*&3SgJl27KE|DKDG_w4>LIja)olWJTyGuj`)-GXGAq(%L|_@T z$Efcbv|cpw%YoBY%86hb4E_(6yu8s?-U(gQ@y-PhQV~oWB6p*(Y#bb8WoS0<1owSg zHaIwY@g8)v03fVba&n6%@&8;8e!-IEkOK`rgCXcJRSIHQ$w9ewpFN^&sj%-O-L5Zw zz7I`po=&xfsl>psT1m{=h7%YGnb;11e{_r}NHKmCx2Y3DcF`3nx-B zSud$ihW~l%7`OIAMVynq8lVGaRaM((6>VE%PmVah;-r0>C6G(?MKW|7JBb(Mr5@(t z4qM`$n;Ldlqy1D;v{c8o@li}7q<{f3nFMai*_iMu8M&dcmyo@+si3QD?W=C~MABVE z_^erTMBl_4A{3I{8(~jFHr8iPvb05=H=U2&{o6gY8!ne+p>1X zo{=5>V~B6bdymf(`?d4TD!EZ-P4KBUB!Lr?n?v`JXG=|MMCkKoR#d&XB^Zi`2R>Z30HlTs0Dyqq8yiaE_pl}9d zX5gZqeph-a%#Hi=8J6>PMKPV&pD^qZ9;OOvb)=FbHch&S2Vq3EcrA%}Pe$&$U0UuI zax{90W$NB?Ni?Py%fo`{y+8F(m3WkYHruO;U?2mSj4Mhpg@;hRhg#uy?;X+R5$af1iFI7z^IwhVFE_4=a85X$h-GrlrqtkzUgwm&h9z4!;EJ2Cb7HZkJU z$uNd))z{7+o8auj_<(*XzxXf$aw;N9LE*UwWN^ex`G!%;KZ8iLcyXm5(KiQii9ZyL zDEc)wCsPM0GJBvyfmEMMbnwv?*YIN6*RRfrfS{6y(S=+hOMb_HdgGApVFn=4dy+W+ z^qSB&`uPKZ(M1EM$VfN-4*G07p@=@R4fBV=iE~7<ns1`SVua_}CbrSL9` zeCe2zD8=Yr@jG7^vx33R+Wl=XXa8%7#`6^PlppM}@XSs4L)9j!7cZ$Ih<- zH@9~Mp^`ePO@DmyAHyY0@M{|8A{X(aQ}#m~kA;nPttloe}l>82WvFVcf`j8lC4 z+3PY84%c^M^uIg7$5Avw=Rfe=*s_DqEiFvASHn`k!3K#6Ki)}a;q%}9`+A=StrZ*h zf5w#}RFIJ^9d6lKtqY6dWk&Nh_HhL;3vX@-#>QQ}K&!8+C)dbRhj-PE&}a{`bxI9f z3IQYpbq~pJ1#Rt8&;p|e2QQ8b0nn4w{QP2|sc7!uMO&ZKFXX$V4Ieu^QyVg3**uh@ zjo*(JMk>uvqC^&`k(-5YIWujGW2GS-%NZe8?vj+_k@ve3&pmnfMe`sMj%~%?p_bV~)=`!ZNI%;i}t?>WaGRvvT zJa1LxM*V_p_ zO*YkoVRxT!u1mLp>$j%Sv}Fo@E@m7ywmd+!h{Eds z{Wb~Sut0C!0Fs{8R1GyqFpKYL|Kn0-x0ZxU@uo2)yEFM}@61C_Sf0SbvBD~P%dJR| zWZ%eteXUsSNxV4^7M-c4GjZ`Bf4zM*Y?u|{&)-c5;s5}{C;u7O&bU&|7#WZ`DR*46 zNumsumS6FVuI+l@t0%${vs-Gt9NGf4Y~wfi<2yhVyo%%1pZXcKOe#5WG`U6S1(XGx zBY9!MAz__=m2OyE`Q?S}{`TWXf3P4WWdWH#N1EyF^ep0yIXzeU0EWk{GcFpB;ZEWv zy|EFDX_BzJDDM@(HRd){)q|a1q(MgDLh_Lnd$GFpb?b~sK8~NRU=Ay{+=Q(l`H@k< zT-xd8Gokr|U2D#o+gU&?lEPb>P9&~b(YvR(AM+ks3vv5bvv+#VqDO&{pVWleGg zU#g+kpGy?MgPSr`jgQc?@dC8%+Xw~nRY*kzf@$`cyeBONXcUfBxzz@c?qO7MZA0VD5^lETyD5M@GmrcYENWxfPb2l2>ya$S?x71UItWC=$ZTe%>WhTB zeX4Uje5XDs-0rAbO$Yo6h^al749W#pJc&^4n=+lBaGEq@u*%UFby^`NM>sdUS0|42 z@4RkIS}gc?Iwf(qDz})+Rdr4K@zi4MMaoXOl1gBbJ^-0GBQDHg_?Fp1t$8$~CqbD5 zY8hC5TBMYK+%nIJkd@_fAD4D_uW)2@Ki}^|Zwqh)or8TIfX>4Zy#rIa=!E+_$+Zas zu;S#fu18|kh%{$y)_O_1IVH_GQ3oxNt z1>==yxWjEN%Dg@Rc!r4r=Rgf^D4=>p@gcf+Kd1X%-X)_!JAIvqiJ0!-l zs}@zy&2-s)abojyo^ACw*$S0Ad?V{$l|eeDatWoQ?}fCWVjhWvn;JtQd47gPd|-z0AdfnBDE~bz)r~1zl{S zKDZRKk6V!dEOb&0=zmQL4<9rg8Y}}Gf>ks|T9m+Ldfj-B_(R&06J+TdQp1M9GTMGr z<8}7fo=Ka_9Om00TXiCR-I&pUvuK>X8uTp2d6xXh>hE=|Jn$oR?6IANQ+n|VCA0o2vAr$}7d5h_1X zdqZPFm8#tVyrkb<2W0J7Ar?hJaB-W+5j)is`A8(~PT&Kl^)@OwSE%&e4FM>r%|NN+ zUpSx7kOy&o<l8}vB@Q63UZ6w!&=BkR39+vAZGp=*|V_uPr&hx^dT5|u?U4qiIQvTe3EEARJ zQnswvXh~ zP%SFzXm$KKQ$we=n^C#~?@Ds)gfc2C(*uP+tSAw60q9%7Vk-PmmX@i#76yK5??{5?}lDLLq@)Z!(T zuc|rKuyz&JI>g)Bi`AK4I!0Sr!p`G}!(?vjmFoukgLvItK17q&25Q=i9`N0nj^FJq zx4)g~rWB@7KHFq1$P+oY&LHcNFFNlGZlS}vj_c`w$iUYH6p>2oZ@`v__ClHfY&BO? z&H&!c?t%1{Sd;@P8(TRA~vbB$4^w8E3m88#a2z+_1i=MzQ zbQRwKnn(Z~xHngNijR2cRgAKgg= zn@ZD%BN#_5oar*;s*nPeiGtemq_|r!ibslFyCt>#Uk3Iw4ARViG4;pmHYoi_79%hy zgk)h*Z!8nQdiKo03y2qB#=352d{}5yn|oSdxL)wtZ|i_#a39=W5B9FrL#C`t`qAd7 zOhsV;Vfs)>0w-#Fi2IW`?UIS(P$Qo(5{>xNDCE6!Xka0wcvnXC)M9pM&qcOm%Ifsc zI3hTr;?uSeVDXy*kt&_##5Qp}Bz;aj+b|%J)vF`I9)VLlE71&Ab_bB|kwjrCs9stD zSH0rcCumJ(y482*(s~Adz?K1nsO$P%T97 zjI)(FZomGj(W3H=n!mV2Rr)UFQO9Kj;li3HvMo%6##{Xrt|f=ZAK1Soi(h6RPvn^OhPpQ?bC9HPY}=2|Uc~rni#M(2j28b&v!~0) zueg0Md587>l%id*QXvnLYQ|K2esQYTrUQYjaZNNaS9R4nU3rE>>YVj)ifXml} zbhm$khZ|>xh6CYyXa@;?M4@l5Pj}sdI7nu>isMR~t|s!v6amo_*6N_R1Eu zQ_DM4Y@L8S$oZ3v@}b-{VKUNbf0p%4%a(51%Bg=3R0-Yuh%;G4`S$1D%r8c^MAJ(@ zzS?Vn31Wgvz^abvIbV;1)Dpy)ms-#hzAg>gb*0)NdM=_@3(9e94IK9@=`U zT4*!_9olZJS0`Ir%}LpnLWtS`@S8~$^I*}r2`uC6#B~Lrd990{z%PL4Cn=ImIlSBK zg`UF33MbF4n>R0#{OjvVva4m^#PE^zIQMM8f=5=Yj|h4NOz^KnFkXbvWI)M4;8m7r$N(uk36MspJI&g1 zx;PJ>&dd7hHe9LSy8%ip*I?sg`Cq$wNwXiU>_bs}>f`9XYZ};aGjKkaZ?ysneJHJM zsS|BY6>=QPEBK|DblS2Us$?NBbdY*Q_ENDJVAB@gilk>Zjl9XM``lMpJ2u8Za}=3k zbTFO5OCJg0A(0qDt+xh15g6f%akI#YAfhBKZohc`i(Fs6;a{|x8O@4v^UqI{@=w`djGu@*SfJ0-)F$r z9-NJP4=bnyjypS$!O~N2)hynudxF2$166sCeYDTWl9#+K%LT!+ggA{ht?UTnT*gKn z)KJFQX%JtFUd!y#(2{sX@q|b7Unj1#ORl}uz_?QxM9B^~%%SaAZ5A+u1LLZ~)r|_r z?>zQIzwWRr+O-(_PI)ju?|U*h)KiQCtPLJwjKImLXzT=2qIb4=ol@yS=L3E*NbU^+ z$ORVl*Ja>KNfo;wu`T5d-gIZ#ZV{4sZg*7rcX<2*PIjDj9`cg zuc;RvjZA?-2$Wz7*>z^P73P#zyy=%mu9Us`BE)nTK8^9FejUP1{rK38vtre8& zdt!Sf7nYffWz2=9k&iF&zAfJPr54kN6nA7X9VP94&Kt}}KHOj*e zeXR|z8avC^IM8tYvyfWFQT~CNfWnvUpqnOvIS!3yye7zP;INhhjbQG|%s7EQ8;6mc z(SUo#U$kGASYVqD+LQ=H^IAxv^05fl>GMEV+dw+k!6ZU0q{DFQ8%5=29_zOi`)DO< zLS(^JhXjdp@a$R$zxs7jNe0)SGPWwMlDo#z!>hL|?>(O-P@;w6(5Ucn$;UFoQnuPj(8jpQDcBHi)!FEdKm{0 z^yGdV?jqby%rg!+a7l`r$dn~>=Es(jrH^681=@zH6A{#6}SzeM@hCUCR{tiTK_l(dpNP}r)Q{;sUq)!#vH#?rir^A?Cp5Eue1*CG ze|S;BzzHauIHpgU<^}{f0G@5{A0J9-o++^XQL{n-N1dC*Mk({h{hz&90U#~tPuuuD zOB@%ORsn__d9eCe5O~zDwU`Qlfj~p*u0d&70%o!Os< zNXtvr1Lh0u-YQ@T_NV&51wkFj%@{a%4Zf59SsMPEF{(QC9!WCF;)j}`r4Jn ztv1uJtx*TQ0?r)gIR68aL9QvrY{(z9tuqk76pIx7gSSM1`Xnno3vyl=roHcV&Gsba z8gyEMCCZM%0B;;(+Fz^9F0L4l8%Yyop0w3}$0&-#S0l~>D1!!l@Gny>X=DmQmg`{5 zV3wX9H4<5EBHSMCo#X9)Nt(OlClb@*|4NH45%RaqkNb%Gu=g<@xz}Ygp;vpttAiLn z41oT?GPZi{qui#fCqb1=fgo(^-2b0jM21Jn!~sj}^toL8oxH9Qia|a$q*Po6U{U$a z7fPopT3HgTlLX`1bq%B%myETIM1Zt*Dh=sHThCvXFc|UzO8)SPqip#fis*A4ek>A~ zOvlBv43%_{AP!2i2%Os7A14=X(UJ+ZUa$;t5P9Wbok##bKM-9`AO$^pZU;jf{FHwc zzB#?d18gHFYz?_igjz(psE(7KW#w`&p8#H8MtYj-W_cTl<7W>VVwD~*%4Gv~$uQ7` zaGHBnc}(rDwZPUa)wdo~v>-#|>i|(MDzqo#M_XOeucLHr>PEGHXb6Dd^M=)ollvDx zn*uy&o2i06RLlG4@#7z-lqp<#1>4v=Bp~=pLWWIW%ghGC8T$z?gq>b`gHCYAb3|IA zQjULh5_<=3bw1-}(k9Qkp(bE|BUB6RI?|cV#k2oh>*@f?i4AdD?T!cnXk281qfX!B z>EPG;kH0qHtJk@+TsV*nL6044muJg?R6mcKs_nN|3`dQmiL%dHYQN)6HBnp&sOk>J zb?i!54R*7vGMgcr@!30IoY4z{sXPjyv!)S^&$;w~_!~6}wgc+ZLlSTun?4;nfUOFP zz7A<#$73^Bd&2{Js800vSRv%TCiK@zub6#HTB6!s*hXM9Ne=kK@qk^&iZFgJ$?J60 z{dWBii2v^Ix+?Pfq}M7mC@#*A66m$XO;|1RO@GQN?YCD9M~)p&5f^0RKK}ysxRKB~ z7GaEA=91kGW3R=6Qt6oZwt(baPRS*6p=InON*odShCVwmwxSSY@|Rpa6oE5mCb1Wl_u70iukbs z5+Wfg!~+;LoV&c~8iKm1XklO*PH): Promise => { await post('/telemetry/measure', { @@ -6,3 +8,21 @@ export const sendTelemetry = async (event: string, data?: Record { + try { + await post('/telemetry/identify', userData); + } catch (error) { + console.error('Error identifying user:', error); + Sentry.captureException(error); + } +}; diff --git a/apps/dashboard/src/components/auth-layout.tsx b/apps/dashboard/src/components/auth-layout.tsx index f0d6e28b5bb..d03447b651b 100644 --- a/apps/dashboard/src/components/auth-layout.tsx +++ b/apps/dashboard/src/components/auth-layout.tsx @@ -2,7 +2,7 @@ import { ReactNode } from 'react'; export const AuthLayout = ({ children }: { children: ReactNode }) => { return ( -

+
{children}
); diff --git a/apps/dashboard/src/components/auth/auth-card.tsx b/apps/dashboard/src/components/auth/auth-card.tsx index 9a2ce51c7cc..743519d3ff1 100644 --- a/apps/dashboard/src/components/auth/auth-card.tsx +++ b/apps/dashboard/src/components/auth/auth-card.tsx @@ -1,5 +1,5 @@ import { Card } from '../primitives/card'; export function AuthCard({ children }: { children: React.ReactNode }) { - return {children}; + return {children}; } diff --git a/apps/dashboard/src/components/auth/create-organization.tsx b/apps/dashboard/src/components/auth/create-organization.tsx index 3488943e94b..68c61ceb3a5 100644 --- a/apps/dashboard/src/components/auth/create-organization.tsx +++ b/apps/dashboard/src/components/auth/create-organization.tsx @@ -2,7 +2,7 @@ import { OrganizationList as OrganizationListForm } from '@clerk/clerk-react'; import { ROUTES } from '../../utils/routes'; import { clerkSignupAppearance } from '../../utils/clerk-appearance'; import { AuthCard } from './auth-card'; -import { RiArrowLeftSLine } from 'react-icons/ri'; +import { StepIndicator } from './shared'; export default function OrganizationCreate() { return ( @@ -10,7 +10,8 @@ export default function OrganizationCreate() {
- + +
- create-org-illustration + Novu dashboard overview
); } - -function StepIndicator(): JSX.Element { - return ( -
- - 1/3 -
- ); -} diff --git a/apps/dashboard/src/components/auth/questionnaire-form.tsx b/apps/dashboard/src/components/auth/questionnaire-form.tsx new file mode 100644 index 00000000000..2e4744213db --- /dev/null +++ b/apps/dashboard/src/components/auth/questionnaire-form.tsx @@ -0,0 +1,217 @@ +import { Button } from '@/components/primitives/button'; +import { CardDescription, CardTitle } from '@/components/primitives/card'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/primitives/select'; +import React from 'react'; +import { StepIndicator } from './shared'; +import { JobTitleEnum, jobTitleToLabelMapper, OrganizationTypeEnum, CompanySizeEnum } from '@novu/shared'; +import { useForm, Controller } from 'react-hook-form'; +import { updateClerkOrgMetadata } from '../../api/organization'; +import { hubspotCookie } from '../../utils/cookies'; +import { identifyUser } from '../../api/telemetry'; +import { useTelemetry } from '../../hooks'; +import { TelemetryEvent } from '../../utils/telemetry'; +import { useNavigate } from 'react-router-dom'; +import { ROUTES } from '../../utils/routes'; +import { useMutation } from '@tanstack/react-query'; + +interface QuestionnaireFormData { + jobTitle: JobTitleEnum; + organizationType: OrganizationTypeEnum; + companySize?: CompanySizeEnum; +} + +interface SubmitQuestionnaireData { + jobTitle: JobTitleEnum; + organizationType: OrganizationTypeEnum; + companySize?: CompanySizeEnum; + pageUri: string; + pageName: string; + hubspotContext: string; +} + +export function QuestionnaireForm() { + const { control, watch, handleSubmit } = useForm(); + const submitQuestionnaireMutation = useSubmitQuestionnaire(); + + const selectedJobTitle = watch('jobTitle'); + const selectedOrgType = watch('organizationType'); + const companySize = watch('companySize'); + + const shouldShowCompanySize = + (selectedOrgType === OrganizationTypeEnum.COMPANY || selectedOrgType === OrganizationTypeEnum.AGENCY) && + !!selectedJobTitle; + + const isFormValid = React.useMemo(() => { + if (!selectedJobTitle || !selectedOrgType) return false; + if (shouldShowCompanySize && !companySize) return false; + + return true; + }, [selectedJobTitle, selectedOrgType, shouldShowCompanySize, companySize]); + + const onSubmit = async (data: QuestionnaireFormData) => { + const hubspotContext = hubspotCookie.get(); + + submitQuestionnaireMutation.mutate({ + ...data, + pageUri: window.location.href, + pageName: 'Create Organization Form', + hubspotContext: hubspotContext || '', + }); + }; + + return ( + <> +
+
+
+
+
+ + + Help us personalize your experience + +
+
+ + This helps us set up Novu to match your goals and plan features and improvements. + +
+ +
+
+
+ + ( + + )} + /> +
+ + {selectedJobTitle && ( +
+ +
+ ( + <> + {Object.values(OrganizationTypeEnum).map((type) => ( + + ))} + + )} + /> +
+
+ )} + + {shouldShowCompanySize && ( +
+ +
+ ( + <> + {Object.values(CompanySizeEnum).map((size) => ( + + ))} + + )} + /> +
+
+ )} +
+ + {isFormValid && ( +
+ +
+ )} +
+
+
+ +
+ create-org-illustration +
+ + ); +} + +function useSubmitQuestionnaire() { + const track = useTelemetry(); + const navigate = useNavigate(); + + return useMutation({ + mutationFn: async (data: SubmitQuestionnaireData) => { + await updateClerkOrgMetadata({ + companySize: data.companySize, + jobTitle: data.jobTitle, + organizationType: data.organizationType, + }); + + await identifyUser({ + jobTitle: data.jobTitle, + pageUri: data.pageUri, + pageName: data.pageName, + hubspotContext: data.hubspotContext, + companySize: data.companySize, + organizationType: data.organizationType, + }); + + track(TelemetryEvent.CREATE_ORGANIZATION_FORM_SUBMITTED, { + location: 'web', + jobTitle: data.jobTitle, + companySize: data.companySize, + organizationType: data.organizationType, + }); + }, + onSuccess: () => { + navigate(ROUTES.USECASE_SELECT); + }, + }); +} diff --git a/apps/dashboard/src/components/auth/shared.tsx b/apps/dashboard/src/components/auth/shared.tsx new file mode 100644 index 00000000000..d3d1931d93f --- /dev/null +++ b/apps/dashboard/src/components/auth/shared.tsx @@ -0,0 +1,33 @@ +import { RiArrowLeftSLine } from 'react-icons/ri'; +import { cn } from '../../utils/ui'; +import { useNavigate } from 'react-router-dom'; + +interface StepIndicatorProps { + step: number; + className?: string; + hideBackButton?: boolean; +} + +export function StepIndicator({ step, className, hideBackButton }: StepIndicatorProps) { + const navigate = useNavigate(); + + function handleGoBack() { + navigate(-1); + } + + return ( +
+ {!hideBackButton && ( + + )} + {step}/3 +
+ ); +} diff --git a/apps/dashboard/src/components/auth/usecase-selector.tsx b/apps/dashboard/src/components/auth/usecase-selector.tsx new file mode 100644 index 00000000000..4cf8e89fe32 --- /dev/null +++ b/apps/dashboard/src/components/auth/usecase-selector.tsx @@ -0,0 +1,87 @@ +import { Card, CardContent } from '../primitives/card'; +import { ChannelTypeEnum } from '@novu/shared'; +import { Usecase } from './usecases-list.utils'; +import { StepIndicator } from './shared'; + +interface UsecaseSelectOnboardingProps { + onHover: (id: ChannelTypeEnum | null) => void; + onClick: (id: ChannelTypeEnum) => void; + selectedUseCases: ChannelTypeEnum[]; + channelOptions: Usecase[]; +} + +export function UsecaseSelectOnboarding({ + onHover, + onClick, + selectedUseCases, + channelOptions, +}: UsecaseSelectOnboardingProps) { + return ( +
+
+
+ +
+ +
+

How do you plan to use Novu?

+

+ You can route notifications across channels intelligently with Novu's powerful workflows, among the channels + below. +

+
+
+ +
+ {channelOptions.map((option, index) => { + const isSelected = selectedUseCases.includes(option.id); + + return ( +
{ + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + onClick(option.id); + } + }} + onFocus={() => onHover(option.id)} + onBlur={() => onHover(null)} + > + onHover(option.id)} + onMouseLeave={() => onHover(null)} + onClick={() => onClick(option.id)} + > + +
+
+ +
+
+

{option.title}

+

{option.description}

+
+
+
+
+
+ ); + })} +
+
+ ); +} diff --git a/apps/dashboard/src/components/auth/usecases-list.utils.tsx b/apps/dashboard/src/components/auth/usecases-list.utils.tsx new file mode 100644 index 00000000000..d2f62cdeb96 --- /dev/null +++ b/apps/dashboard/src/components/auth/usecases-list.utils.tsx @@ -0,0 +1,57 @@ +import { ChannelTypeEnum } from '@novu/shared'; +import { IconType } from 'react-icons/lib'; +import { STEP_TYPE_TO_ICON } from '../icons/utils'; +import { STEP_TYPE_TO_COLOR } from '../../utils/color'; +import { StepTypeEnum } from '@novu/shared'; + +export interface Usecase { + icon: IconType; + title: string; + color: string; + id: ChannelTypeEnum; + description: string; + image: string; +} + +export const channelOptions: Usecase[] = [ + { + icon: STEP_TYPE_TO_ICON[StepTypeEnum.IN_APP], + title: 'Inbox', + color: STEP_TYPE_TO_COLOR[StepTypeEnum.IN_APP], + id: ChannelTypeEnum.IN_APP, + description: 'Embed real-time in your product', + image: 'in_app-preview.webp', + }, + { + icon: STEP_TYPE_TO_ICON[StepTypeEnum.EMAIL], + title: 'E-Mail', + color: STEP_TYPE_TO_COLOR[StepTypeEnum.EMAIL], + id: ChannelTypeEnum.EMAIL, + description: 'Sends Emails to your users', + image: 'email-preview.webp', + }, + { + icon: STEP_TYPE_TO_ICON[StepTypeEnum.SMS], + title: 'SMS', + color: STEP_TYPE_TO_COLOR[StepTypeEnum.SMS], + id: ChannelTypeEnum.SMS, + description: 'Sends SMS messages to your users', + image: 'sms-preview.webp', + }, + { + icon: STEP_TYPE_TO_ICON[StepTypeEnum.PUSH], + title: 'Push', + color: STEP_TYPE_TO_COLOR[StepTypeEnum.PUSH], + id: ChannelTypeEnum.PUSH, + description: 'Send push notifications to your users', + image: 'push-preview.webp', + }, + { + icon: STEP_TYPE_TO_ICON[StepTypeEnum.CHAT], + title: 'Chat', + color: STEP_TYPE_TO_COLOR[StepTypeEnum.CHAT], + id: ChannelTypeEnum.CHAT, + description: 'Send Slack and other chat notifications', + image: 'chat-preview.webp', + }, +]; diff --git a/apps/dashboard/src/components/icons/onboarding-arrow-left.tsx b/apps/dashboard/src/components/icons/onboarding-arrow-left.tsx new file mode 100644 index 00000000000..976674e98b0 --- /dev/null +++ b/apps/dashboard/src/components/icons/onboarding-arrow-left.tsx @@ -0,0 +1,13 @@ +export function OnboardingArrowLeft(props: React.SVGProps) { + return ( + + + + ); +} diff --git a/apps/dashboard/src/main.tsx b/apps/dashboard/src/main.tsx index f3c2f0e9834..548e225abaa 100644 --- a/apps/dashboard/src/main.tsx +++ b/apps/dashboard/src/main.tsx @@ -3,7 +3,14 @@ import { createBrowserRouter, RouterProvider } from 'react-router-dom'; import { createRoot } from 'react-dom/client'; import ErrorPage from '@/components/error-page'; import { RootRoute, AuthRoute, DashboardRoute, CatchAllRoute } from './routes'; -import { WorkflowsPage, SignInPage, SignUpPage, OrganizationListPage } from '@/pages'; +import { + WorkflowsPage, + SignInPage, + SignUpPage, + OrganizationListPage, + QuestionnairePage, + UsecaseSelectPage, +} from '@/pages'; import './index.css'; import { ROUTES } from './utils/routes'; import { EditWorkflowPage } from './pages/edit-workflow'; @@ -37,6 +44,14 @@ const router = createBrowserRouter([ path: ROUTES.SIGNUP_ORGANIZATION_LIST, element: , }, + { + path: ROUTES.SIGNUP_QUESTIONNAIRE, + element: , + }, + { + path: ROUTES.USECASE_SELECT, + element: , + }, ], }, { diff --git a/apps/dashboard/src/pages/index.ts b/apps/dashboard/src/pages/index.ts index 592aab45674..0c500c8d250 100644 --- a/apps/dashboard/src/pages/index.ts +++ b/apps/dashboard/src/pages/index.ts @@ -2,3 +2,5 @@ export * from './workflows'; export * from './sign-in'; export * from './sign-up'; export * from './organization-list'; +export * from './questionnaire-page'; +export * from './usecase-select-page'; diff --git a/apps/dashboard/src/pages/questionnaire-page.tsx b/apps/dashboard/src/pages/questionnaire-page.tsx new file mode 100644 index 00000000000..01dbd1b1041 --- /dev/null +++ b/apps/dashboard/src/pages/questionnaire-page.tsx @@ -0,0 +1,14 @@ +import { PageMeta } from '@/components/page-meta'; +import { AuthCard } from '../components/auth/auth-card'; +import { QuestionnaireForm } from '../components/auth/questionnaire-form'; + +export function QuestionnairePage() { + return ( + <> + + + + + + ); +} diff --git a/apps/dashboard/src/pages/usecase-select-page.tsx b/apps/dashboard/src/pages/usecase-select-page.tsx new file mode 100644 index 00000000000..30f44a99ef9 --- /dev/null +++ b/apps/dashboard/src/pages/usecase-select-page.tsx @@ -0,0 +1,152 @@ +import { UsecaseSelectOnboarding } from '../components/auth/usecase-selector'; +import { AuthCard } from '../components/auth/auth-card'; +import { useState } from 'react'; +import { motion, AnimatePresence } from 'framer-motion'; +import { Button } from '../components/primitives/button'; +import { ROUTES } from '../utils/routes'; +import { useNavigate } from 'react-router-dom'; +import { OnboardingArrowLeft } from '../components/icons/onboarding-arrow-left'; +import { updateClerkOrgMetadata } from '../api/organization'; +import { ChannelTypeEnum } from '@novu/shared'; +import { RiLoader2Line } from 'react-icons/ri'; +import { PageMeta } from '../components/page-meta'; +import { useTelemetry } from '../hooks'; +import { TelemetryEvent } from '../utils/telemetry'; +import { channelOptions } from '../components/auth/usecases-list.utils'; +import { useMutation } from '@tanstack/react-query'; +import * as Sentry from '@sentry/react'; + +export function UsecaseSelectPage() { + const navigate = useNavigate(); + const track = useTelemetry(); + const [selectedUseCases, setSelectedUseCases] = useState([]); + const [hoveredUseCase, setHoveredUseCase] = useState(null); + + const displayedUseCase = + hoveredUseCase || (selectedUseCases.length > 0 ? selectedUseCases[selectedUseCases.length - 1] : null); + + const { mutate: handleContinue, isPending } = useMutation({ + mutationFn: async () => { + await updateClerkOrgMetadata({ + useCases: selectedUseCases, + }); + }, + onSuccess: () => { + track(TelemetryEvent.USE_CASE_SELECTED, { + useCases: selectedUseCases, + }); + navigate(ROUTES.WORKFLOWS); + }, + onError: (error) => { + console.error('Failed to update use cases:', error); + Sentry.captureException(error); + }, + }); + + function handleSkip() { + track(TelemetryEvent.USE_CASE_SKIPPED); + + navigate(ROUTES.WORKFLOWS); + } + + function handleSelectUseCase(useCase: ChannelTypeEnum) { + setSelectedUseCases((prev) => + prev.includes(useCase) ? prev.filter((item) => item !== useCase) : [...prev, useCase] + ); + } + + function handleSubmit(e: React.FormEvent) { + e.preventDefault(); + + if (selectedUseCases.length === 0 || isPending) return; + + handleContinue(); + } + + return ( + <> + + + +
+
+
+ setHoveredUseCase(id)} + onClick={(id) => handleSelectUseCase(id)} + /> + +
+ + +
+
+
+
+ +
+ + {displayedUseCase && ( + option.id === displayedUseCase)?.image}`} + alt={`${displayedUseCase}-usecase-illustration`} + className="h-auto max-h-[500px] w-full object-contain" + initial={{ opacity: 0 }} + animate={{ opacity: 1 }} + exit={{ opacity: 0 }} + transition={{ + duration: 0.2, + ease: 'easeInOut', + }} + /> + )} + + {!displayedUseCase && } + +
+
+ + ); +} + +function EmptyStateView() { + return ( + +
+ +
+ + {/* Instruction Text */} +

+ Hover on the cards to visualize,
+ select all that apply. +

+ + {/* Help Text */} +

+ This helps us understand your use-case better with the channels you'd use in your product to communicate with + your users. +
+
+ don't worry, you can always change later as you build. +

+
+ ); +} diff --git a/apps/dashboard/src/utils/cookies.ts b/apps/dashboard/src/utils/cookies.ts new file mode 100644 index 00000000000..9dfd4546221 --- /dev/null +++ b/apps/dashboard/src/utils/cookies.ts @@ -0,0 +1,31 @@ +import Cookies from 'js-cookie'; + +type LocationAttributes = { + path?: string; + domain?: string; +}; + +export function createCookieHandler(cookieName: string) { + return { + get() { + return Cookies.get(cookieName); + }, + + set(newValue: string, options: Cookies.CookieAttributes = {}) { + return Cookies.set(cookieName, newValue, options); + }, + + remove(locationAttributes?: LocationAttributes) { + Cookies.remove(cookieName, locationAttributes); + }, + + getOnce(locationAttributes?: LocationAttributes) { + const value = Cookies.get(cookieName); + this.remove(locationAttributes); + + return value; + }, + }; +} + +export const hubspotCookie = createCookieHandler('hubspotutk'); diff --git a/apps/dashboard/src/utils/routes.ts b/apps/dashboard/src/utils/routes.ts index 386a5543d4f..b7eac995309 100644 --- a/apps/dashboard/src/utils/routes.ts +++ b/apps/dashboard/src/utils/routes.ts @@ -1,7 +1,9 @@ export const ROUTES = { - SIGN_IN: '/sign-in', - SIGN_UP: '/sign-up', - SIGNUP_ORGANIZATION_LIST: '/sign-up/organization-list', + SIGN_IN: '/auth/sign-in', + SIGN_UP: '/auth/sign-up', + SIGNUP_ORGANIZATION_LIST: '/auth/organization-list', + SIGNUP_QUESTIONNAIRE: '/auth/questionnaire', + USECASE_SELECT: '/auth/usecase', ROOT: '/', ENV: '/env', WORKFLOWS: '/env/:environmentSlug/workflows', diff --git a/apps/dashboard/src/utils/telemetry.ts b/apps/dashboard/src/utils/telemetry.ts index 442f0c72a33..33fc0df2dc3 100644 --- a/apps/dashboard/src/utils/telemetry.ts +++ b/apps/dashboard/src/utils/telemetry.ts @@ -2,5 +2,8 @@ export enum TelemetryEvent { SUBSCRIBERS_LINK_CLICKED = 'Subscribers link clicked - [Left navigation]', NEW_DASHBOARD_OPT_OUT = 'New dashboard opt-out', NEW_DASHBOARD_OPT_IN = 'New dashboard opt-in', + CREATE_ORGANIZATION_FORM_SUBMITTED = 'Create Organization Form Submitted', + USE_CASE_SELECTED = 'Use Case Selected', + USE_CASE_SKIPPED = 'Use Case Skipped', WORKFLOWS_PAGE_VISIT = 'Workflows page visit', } diff --git a/packages/shared/src/dto/organization/update-external-organization.dto.ts b/packages/shared/src/dto/organization/update-external-organization.dto.ts index 15d70176052..a250aa737cf 100644 --- a/packages/shared/src/dto/organization/update-external-organization.dto.ts +++ b/packages/shared/src/dto/organization/update-external-organization.dto.ts @@ -1,4 +1,4 @@ -import { JobTitleEnum } from '../../types'; +import { ChannelTypeEnum, JobTitleEnum, OrganizationTypeEnum } from '../../types'; export type UpdateExternalOrganizationDto = { jobTitle?: JobTitleEnum; @@ -6,4 +6,6 @@ export type UpdateExternalOrganizationDto = { language?: string[]; frontendStack?: string[]; companySize?: string; + organizationType?: OrganizationTypeEnum; + useCases?: ChannelTypeEnum[]; }; diff --git a/packages/shared/src/types/organization/index.ts b/packages/shared/src/types/organization/index.ts index 796b5c8bf99..607b492574d 100644 --- a/packages/shared/src/types/organization/index.ts +++ b/packages/shared/src/types/organization/index.ts @@ -29,6 +29,21 @@ export enum JobTitleEnum { OTHER = 'other', } +export enum OrganizationTypeEnum { + COMPANY = 'Company', + AGENCY = 'Agency', + EDUCATIONAL = 'Student', + SOLOPRENEUR = 'Solopreneur', + OTHER = 'Other', +} + +export enum CompanySizeEnum { + LESS_THAN_10 = '<10', + BETWEEN_10_50 = '10-50', + BETWEEN_51_100 = '51-100', + MORE_THAN_100 = '100+', +} + export const jobTitleToLabelMapper = { [JobTitleEnum.ENGINEER]: 'Engineer', [JobTitleEnum.ARCHITECT]: 'Architect', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 28e98150b52..646be240d3e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -754,6 +754,9 @@ importers: '@tanstack/react-query': specifier: ^5.59.6 version: 5.59.6(react@18.3.1) + '@types/js-cookie': + specifier: ^3.0.6 + version: 3.0.6 '@uiw/codemirror-extensions-langs': specifier: ^4.23.6 version: 4.23.6(@codemirror/autocomplete@6.18.3(@codemirror/language@6.10.3)(@codemirror/state@6.4.1)(@codemirror/view@6.34.3)(@lezer/common@1.2.3))(@codemirror/language-data@6.5.1(@codemirror/view@6.34.3))(@codemirror/language@6.10.3)(@codemirror/legacy-modes@6.4.1)(@codemirror/state@6.4.1)(@codemirror/view@6.34.3)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.4.19)(@lezer/lr@1.4.2) @@ -787,6 +790,9 @@ importers: framer-motion: specifier: ^11.3.19 version: 11.3.19(@emotion/is-prop-valid@1.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + js-cookie: + specifier: ^3.0.5 + version: 3.0.5 lodash.debounce: specifier: ^4.0.8 version: 4.0.8 @@ -18340,7 +18346,7 @@ packages: hasBin: true add-px-to-style@1.0.0: - resolution: {integrity: sha512-YMyxSlXpPjD8uWekCQGuN40lV4bnZagUwqa2m/uFv1z/tNImSk9fnXVMUI5qwME/zzI3MMQRvjZ+69zyfSSyew==} + resolution: {integrity: sha1-0ME1RB+oAUqBN5BFMQlvZ/KPJjo=} add-stream@1.0.0: resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} @@ -18647,7 +18653,7 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} argv@0.0.2: - resolution: {integrity: sha512-dEamhpPEwRUBpLNHeuCm/v+g0anFByHahxodVO/BbAarHVBBg2MccCwf9K+o1Pof+2btdnkJelYVUWjW/VrATw==} + resolution: {integrity: sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=} engines: {node: '>=0.6.10'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. @@ -19205,7 +19211,7 @@ packages: engines: {node: '>=10.0.0'} batch@0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + resolution: {integrity: sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=} bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} @@ -19415,7 +19421,7 @@ packages: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -19485,7 +19491,7 @@ packages: engines: {node: '>= 0.8'} bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + resolution: {integrity: sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=} engines: {node: '>= 0.8'} bytes@3.1.2: @@ -20184,7 +20190,7 @@ packages: resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} concat-stream@1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} @@ -20289,7 +20295,7 @@ packages: resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} cookie@0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} @@ -21332,7 +21338,7 @@ packages: resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} dom-css@2.1.0: - resolution: {integrity: sha512-w9kU7FAbaSh3QKijL6n59ofAhkkmMJ31GclJIz/vyQdjogfyxcB6Zf8CZyibOERI5o0Hxz30VmJS7+7r5fEj2Q==} + resolution: {integrity: sha1-/bwtWgFdCj4YcuEUcrvQ57nmogI=} dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} @@ -21466,7 +21472,7 @@ packages: hasBin: true ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} ejs@3.1.10: resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} @@ -24126,7 +24132,7 @@ packages: engines: {node: '>=12'} indexof@0.0.1: - resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==} + resolution: {integrity: sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=} individual@3.0.0: resolution: {integrity: sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g==} @@ -26276,7 +26282,7 @@ packages: resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} map-stream@0.0.7: - resolution: {integrity: sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==} + resolution: {integrity: sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=} map-visit@1.0.0: resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} @@ -26496,7 +26502,7 @@ packages: resolution: {integrity: sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw==} media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} engines: {node: '>= 0.6'} mediaquery-text@1.2.0: @@ -28244,7 +28250,7 @@ packages: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} pause@0.0.1: - resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==} + resolution: {integrity: sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=} peberminta@0.9.0: resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} @@ -29349,7 +29355,7 @@ packages: engines: {node: '>=10'} prefix-style@2.0.1: - resolution: {integrity: sha512-gdr1MBNVT0drzTq95CbSNdsrBDoHGlb2aDJP/FoY+1e+jSDPOb1Cv554gH2MGiSr2WTcXi/zu+NaFzfcHQkfBQ==} + resolution: {integrity: sha1-ZrupqHDP2jCKXcIOhekSCTLJWgY=} prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} @@ -30122,7 +30128,7 @@ packages: react: '>=16' react-custom-scrollbars@4.2.1: - resolution: {integrity: sha512-VtJTUvZ7kPh/auZWIbBRceGPkE30XBYe+HktFxuMWBR2eVQQ+Ur6yFJMoaYcNpyGq22uYJ9Wx4UAEcC0K+LNPQ==} + resolution: {integrity: sha1-gw/ZUCkn6X6KeMIIaBOJmyqLZts=} peerDependencies: react: ^0.14.0 || ^15.0.0 || ^16.0.0 react-dom: ^0.14.0 || ^15.0.0 || ^16.0.0 @@ -30771,7 +30777,7 @@ packages: resolution: {integrity: sha512-zEMsvb4GgxVKBBTHgy2tte67RYBZx2Kyg9mTYpg+JfATHDqYJqhuC3zG1VoiYhDVP5JaB5+mPKcAvdnT0n3jxA==} remove-accents@0.4.2: - resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==} + resolution: {integrity: sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U=} remove-markdown@0.3.0: resolution: {integrity: sha512-5392eIuy1mhjM74739VunOlsOYKjsH82rQcTBlJ1bkICVC3dQ3ksQzTHh4jGHQFnM+1xzLzcFOMH+BofqXhroQ==} @@ -31119,7 +31125,7 @@ packages: hasBin: true run-p@0.0.0: - resolution: {integrity: sha512-ZLiUUVOXJcM/S1hMnm6Ooc1zAgAx98Mmn1qyA+y3WNeK7hOTGAusVR5r3uOQJ0NuUxZt7J9vNusYNNVgKPSbww==} + resolution: {integrity: sha1-cWpVvRICd6nZDaX4IzO3C5GAiPI=} run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -31270,7 +31276,7 @@ packages: engines: {node: '>=4'} secure-compare@3.0.1: - resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} + resolution: {integrity: sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=} secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} @@ -32708,7 +32714,7 @@ packages: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} to-camel-case@1.0.0: - resolution: {integrity: sha512-nD8pQi5H34kyu1QDMFjzEIYqk0xa9Alt6ZfrdEMuHCFOfTLhDG5pgTu/aAM9Wt9lXILwlXmWP43b8sav0GNE8Q==} + resolution: {integrity: sha1-GlYFSy+daWKYzmamCJcyK29CPkY=} to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} From fc361939dbee34c9d842bde6e8f0bceb75a84b3b Mon Sep 17 00:00:00 2001 From: Pawan Jain Date: Wed, 27 Nov 2024 21:55:06 +0530 Subject: [PATCH 7/9] feat(application-generic): add SUBSCRIBER_WIDGET_JWT_EXPIRATION_TIME env variable (#7105) Co-authored-by: Dima Grossman --- apps/api/src/.example.env | 2 ++ apps/api/src/config/env.validators.ts | 1 + apps/worker/src/.example.env | 2 ++ apps/worker/src/config/env.validators.ts | 2 +- docker/community/.env.example | 2 ++ docker/community/docker-compose.yml | 2 ++ .../src/services/auth/community.auth.service.ts | 3 ++- 7 files changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/api/src/.example.env b/apps/api/src/.example.env index 9602a31fe4f..e52163da0b3 100644 --- a/apps/api/src/.example.env +++ b/apps/api/src/.example.env @@ -87,3 +87,5 @@ TUNNEL_BASE_ADDRESS= PLAIN_SUPPORT_KEY='PLAIN_SUPPORT_KEY' PLAIN_IDENTITY_VERIFICATION_SECRET_KEY='PLAIN_IDENTITY_VERIFICATION_SECRET_KEY' NOVU_INTERNAL_SECRET_KEY= +# expressed in seconds or a string describing a time span [zeit/ms](https://github.com/zeit/ms.js). Eg: 60, "2 days", "10h", "7d" +SUBSCRIBER_WIDGET_JWT_EXPIRATION_TIME='15 days' diff --git a/apps/api/src/config/env.validators.ts b/apps/api/src/config/env.validators.ts index 3fde5408cd5..706179b815e 100644 --- a/apps/api/src/config/env.validators.ts +++ b/apps/api/src/config/env.validators.ts @@ -41,6 +41,7 @@ export const envValidators = { LEGACY_STAGING_DASHBOARD_URL: url({ default: undefined }), API_ROOT_URL: url(), NOVU_INVITE_TEAM_MEMBER_NUDGE_TRIGGER_IDENTIFIER: str({ default: undefined }), + SUBSCRIBER_WIDGET_JWT_EXPIRATION_TIME: str({ default: '15 days' }), // Novu Cloud third party services ...(processEnv.IS_SELF_HOSTED !== 'true' && diff --git a/apps/worker/src/.example.env b/apps/worker/src/.example.env index 1328ac6c1ee..3e936c036b1 100644 --- a/apps/worker/src/.example.env +++ b/apps/worker/src/.example.env @@ -77,3 +77,5 @@ BROADCAST_QUEUE_CHUNK_SIZE=100 MULTICAST_QUEUE_CHUNK_SIZE=100 API_ROOT_URL=http://localhost:3000 +# expressed in seconds or a string describing a time span [zeit/ms](https://github.com/zeit/ms.js). Eg: 60, "2 days", "10h", "7d" +SUBSCRIBER_WIDGET_JWT_EXPIRATION_TIME='15 days' diff --git a/apps/worker/src/config/env.validators.ts b/apps/worker/src/config/env.validators.ts index b6177c17b48..837f9568f44 100644 --- a/apps/worker/src/config/env.validators.ts +++ b/apps/worker/src/config/env.validators.ts @@ -57,7 +57,7 @@ export const envValidators = { STRIPE_API_KEY: str({ default: undefined }), NOTIFICATION_RETENTION_DAYS: num({ default: DEFAULT_NOTIFICATION_RETENTION_DAYS }), API_ROOT_URL: url(), - + SUBSCRIBER_WIDGET_JWT_EXPIRATION_TIME: str({ default: '15 days' }), // Feature Flags ...Object.keys(FeatureFlagsKeysEnum).reduce( (acc, key) => { diff --git a/docker/community/.env.example b/docker/community/.env.example index e83cdfc3972..e987a5c79f2 100644 --- a/docker/community/.env.example +++ b/docker/community/.env.example @@ -2,6 +2,8 @@ # YOU MUST CHANGE THESE BEFORE GOING INTO PRODUCTION # used as a secret to verify the JWT token signature JWT_SECRET=your-secret +# expressed in seconds or a string describing a time span [zeit/ms](https://github.com/zeit/ms.js). Eg: 60, "2 days", "10h", "7d" +SUBSCRIBER_WIDGET_JWT_EXPIRATION_TIME="15 days" # used to encrypt/decrypt the provider credentials STORE_ENCRYPTION_KEY= diff --git a/docker/community/docker-compose.yml b/docker/community/docker-compose.yml index b15831ec23e..1fd7a984106 100644 --- a/docker/community/docker-compose.yml +++ b/docker/community/docker-compose.yml @@ -81,6 +81,7 @@ services: AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} JWT_SECRET: ${JWT_SECRET} STORE_ENCRYPTION_KEY: ${STORE_ENCRYPTION_KEY} + SUBSCRIBER_WIDGET_JWT_EXPIRATION_TIME: ${SUBSCRIBER_WIDGET_JWT_EXPIRATION_TIME} SENTRY_DSN: ${SENTRY_DSN} NEW_RELIC_APP_NAME: ${NEW_RELIC_APP_NAME} NEW_RELIC_LICENSE_KEY: ${NEW_RELIC_LICENSE_KEY} @@ -118,6 +119,7 @@ services: AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} STORE_ENCRYPTION_KEY: ${STORE_ENCRYPTION_KEY} + SUBSCRIBER_WIDGET_JWT_EXPIRATION_TIME: ${SUBSCRIBER_WIDGET_JWT_EXPIRATION_TIME} SENTRY_DSN: ${SENTRY_DSN} NEW_RELIC_APP_NAME: ${NEW_RELIC_APP_NAME} NEW_RELIC_LICENSE_KEY: ${NEW_RELIC_LICENSE_KEY} diff --git a/libs/application-generic/src/services/auth/community.auth.service.ts b/libs/application-generic/src/services/auth/community.auth.service.ts index 0ff2cbc5694..c542eef3bcb 100644 --- a/libs/application-generic/src/services/auth/community.auth.service.ts +++ b/libs/application-generic/src/services/auth/community.auth.service.ts @@ -223,7 +223,8 @@ export class CommunityAuthService implements IAuthService { subscriberId: subscriber.subscriberId, }, { - expiresIn: '15 day', + expiresIn: + process.env.SUBSCRIBER_WIDGET_JWT_EXPIRATION_TIME || '15 days', issuer: 'novu_api', audience: 'widget_user', }, From 5e938d83af3fa2bfd0036a607a8819806d0936db Mon Sep 17 00:00:00 2001 From: Richard Fontein <32132657+rifont@users.noreply.github.com> Date: Wed, 27 Nov 2024 23:53:06 +0200 Subject: [PATCH 8/9] chore(api, worker): Instrument workflow v2 controller and bridge use-cases (#7150) --- .../preview-step/preview-step.usecase.ts | 3 +- .../construct-framework-workflow.usecase.ts | 9 +++ .../chat-output-renderer.usecase.ts | 2 + .../delay-output-renderer.usecase.ts | 2 + .../digest-output-renderer.usecase.ts | 2 + .../in-app-output-renderer.usecase.ts | 2 + .../push-output-renderer.usecase.ts | 2 + .../render-email-output.usecase.ts | 18 +++-- .../sms-output-renderer.usecase.ts | 2 + .../build-step-data.usecase.ts | 6 +- .../build-workflow-test-data.usecase.ts | 9 ++- .../generate-preview.usecase.ts | 7 ++ .../get-workflow/get-workflow.usecase.ts | 4 +- .../list-workflows/list-workflow.usecase.ts | 3 + .../post-process-workflow-update.usecase.ts | 8 +- .../sync-to-environment.usecase.ts | 8 ++ .../upsert-workflow.usecase.ts | 9 +++ .../prepare-and-validate-content.usecase.ts | 5 +- .../execute-bridge-job.usecase.ts | 5 ++ .../delete-preferences.usecase.ts | 4 + .../execute-bridge-request.usecase.ts | 10 ++- .../tier-restrictions-validate.usecase.ts | 2 + .../delete-workflow.usecase.ts | 15 ++-- .../get-workflow-by-ids.usecase.ts | 73 ++++++++++++------- 24 files changed, 160 insertions(+), 50 deletions(-) diff --git a/apps/api/src/app/bridge/usecases/preview-step/preview-step.usecase.ts b/apps/api/src/app/bridge/usecases/preview-step/preview-step.usecase.ts index 22db671f9f4..2a1ccf7dfcc 100644 --- a/apps/api/src/app/bridge/usecases/preview-step/preview-step.usecase.ts +++ b/apps/api/src/app/bridge/usecases/preview-step/preview-step.usecase.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; import { Event, ExecuteOutput, HttpQueryKeysEnum, PostActionEnum } from '@novu/framework/internal'; -import { ExecuteBridgeRequest, ExecuteBridgeRequestCommand } from '@novu/application-generic'; +import { ExecuteBridgeRequest, ExecuteBridgeRequestCommand, InstrumentUsecase } from '@novu/application-generic'; import { PreviewStepCommand } from './preview-step.command'; @@ -8,6 +8,7 @@ import { PreviewStepCommand } from './preview-step.command'; export class PreviewStep { constructor(private executeBridgeRequest: ExecuteBridgeRequest) {} + @InstrumentUsecase() async execute(command: PreviewStepCommand): Promise { const event = this.buildBridgeEventPayload(command); const executeCommand = this.createExecuteCommand(command, event); diff --git a/apps/api/src/app/environments-v1/usecases/construct-framework-workflow/construct-framework-workflow.usecase.ts b/apps/api/src/app/environments-v1/usecases/construct-framework-workflow/construct-framework-workflow.usecase.ts index 1c429ba1d02..59b53303a4b 100644 --- a/apps/api/src/app/environments-v1/usecases/construct-framework-workflow/construct-framework-workflow.usecase.ts +++ b/apps/api/src/app/environments-v1/usecases/construct-framework-workflow/construct-framework-workflow.usecase.ts @@ -3,6 +3,7 @@ import { workflow } from '@novu/framework/express'; import { ActionStep, ChannelStep, JsonSchema, Step, StepOptions, StepOutput, Workflow } from '@novu/framework/internal'; import { NotificationStepEntity, NotificationTemplateEntity, NotificationTemplateRepository } from '@novu/dal'; import { StepTypeEnum } from '@novu/shared'; +import { Instrument, InstrumentUsecase } from '@novu/application-generic'; import { ConstructFrameworkWorkflowCommand } from './construct-framework-workflow.command'; import { ChatOutputRendererUsecase, @@ -28,6 +29,7 @@ export class ConstructFrameworkWorkflow { private digestOutputRendererUseCase: DigestOutputRendererUsecase ) {} + @InstrumentUsecase() async execute(command: ConstructFrameworkWorkflowCommand): Promise { const dbWorkflow = await this.getDbWorkflow(command.environmentId, command.workflowId); if (command.controlValues) { @@ -39,6 +41,7 @@ export class ConstructFrameworkWorkflow { return this.constructFrameworkWorkflow(dbWorkflow); } + @Instrument() private constructFrameworkWorkflow(newWorkflow: NotificationTemplateEntity): Workflow { return workflow( newWorkflow.triggers[0].identifier, @@ -67,6 +70,7 @@ export class ConstructFrameworkWorkflow { ); } + @Instrument() private constructStep( step: Step, staticStep: NotificationStepEntity, @@ -154,6 +158,7 @@ export class ConstructFrameworkWorkflow { } } + @Instrument() private constructChannelStepOptions(staticStep: NotificationStepEntity): Required[2]> { return { ...this.constructCommonStepOptions(staticStep), @@ -164,12 +169,14 @@ export class ConstructFrameworkWorkflow { }; } + @Instrument() private constructActionStepOptions(staticStep: NotificationStepEntity): Required[2]> { return { ...this.constructCommonStepOptions(staticStep), }; } + @Instrument() private constructCommonStepOptions(staticStep: NotificationStepEntity): Required { return { // TODO: fix the `JSONSchemaDto` type to enforce a non-primitive schema type. @@ -181,6 +188,8 @@ export class ConstructFrameworkWorkflow { skip: (controlValues) => false, }; } + + @Instrument() private async getDbWorkflow(environmentId: string, workflowId: string): Promise { const foundWorkflow = await this.workflowsRepository.findByTriggerIdentifier(environmentId, workflowId); diff --git a/apps/api/src/app/environments-v1/usecases/output-renderers/chat-output-renderer.usecase.ts b/apps/api/src/app/environments-v1/usecases/output-renderers/chat-output-renderer.usecase.ts index 1cad2b13e25..9a3374f8521 100644 --- a/apps/api/src/app/environments-v1/usecases/output-renderers/chat-output-renderer.usecase.ts +++ b/apps/api/src/app/environments-v1/usecases/output-renderers/chat-output-renderer.usecase.ts @@ -1,10 +1,12 @@ // Concrete Renderer for Chat Preview import { ChatRenderOutput } from '@novu/shared'; import { Injectable } from '@nestjs/common'; +import { InstrumentUsecase } from '@novu/application-generic'; import { RenderCommand } from './render-command'; @Injectable() export class ChatOutputRendererUsecase { + @InstrumentUsecase() execute(renderCommand: RenderCommand): ChatRenderOutput { const body = renderCommand.controlValues.body as string; diff --git a/apps/api/src/app/environments-v1/usecases/output-renderers/delay-output-renderer.usecase.ts b/apps/api/src/app/environments-v1/usecases/output-renderers/delay-output-renderer.usecase.ts index a0ca156edcb..3f4fc681aeb 100644 --- a/apps/api/src/app/environments-v1/usecases/output-renderers/delay-output-renderer.usecase.ts +++ b/apps/api/src/app/environments-v1/usecases/output-renderers/delay-output-renderer.usecase.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; import { DelayRenderOutput } from '@novu/shared'; +import { InstrumentUsecase } from '@novu/application-generic'; import { RenderCommand } from './render-command'; import { DelayTimeControlType, @@ -8,6 +9,7 @@ import { @Injectable() export class DelayOutputRendererUsecase { + @InstrumentUsecase() execute(renderCommand: RenderCommand): DelayRenderOutput { const delayTimeControlType: DelayTimeControlType = DelayTimeControlZodSchema.parse(renderCommand.controlValues); diff --git a/apps/api/src/app/environments-v1/usecases/output-renderers/digest-output-renderer.usecase.ts b/apps/api/src/app/environments-v1/usecases/output-renderers/digest-output-renderer.usecase.ts index 5ac7ab57bc6..a54c89aec85 100644 --- a/apps/api/src/app/environments-v1/usecases/output-renderers/digest-output-renderer.usecase.ts +++ b/apps/api/src/app/environments-v1/usecases/output-renderers/digest-output-renderer.usecase.ts @@ -1,5 +1,6 @@ import { Injectable, InternalServerErrorException } from '@nestjs/common'; import { DigestRenderOutput } from '@novu/shared'; +import { InstrumentUsecase } from '@novu/application-generic'; import { RenderCommand } from './render-command'; import { DigestControlSchemaType, @@ -10,6 +11,7 @@ import { @Injectable() export class DigestOutputRendererUsecase { + @InstrumentUsecase() execute(renderCommand: RenderCommand): DigestRenderOutput { const parse: DigestControlSchemaType = DigestControlZodSchema.parse(renderCommand.controlValues); if ( diff --git a/apps/api/src/app/environments-v1/usecases/output-renderers/in-app-output-renderer.usecase.ts b/apps/api/src/app/environments-v1/usecases/output-renderers/in-app-output-renderer.usecase.ts index 44236d2f5e5..9dc621ac43f 100644 --- a/apps/api/src/app/environments-v1/usecases/output-renderers/in-app-output-renderer.usecase.ts +++ b/apps/api/src/app/environments-v1/usecases/output-renderers/in-app-output-renderer.usecase.ts @@ -1,6 +1,7 @@ // Concrete Renderer for In-App Message Preview import { InAppRenderOutput, RedirectTargetEnum } from '@novu/shared'; import { Injectable } from '@nestjs/common'; +import { Instrument, InstrumentUsecase } from '@novu/application-generic'; import { RenderCommand } from './render-command'; import { InAppActionType, @@ -12,6 +13,7 @@ import { isValidUrlForActionButton } from '../../../workflows-v2/util/url-utils' @Injectable() export class InAppOutputRendererUsecase { + @InstrumentUsecase() execute(renderCommand: RenderCommand): InAppRenderOutput { const inApp: InAppControlType = InAppControlZodSchema.parse(renderCommand.controlValues); if (!inApp) { diff --git a/apps/api/src/app/environments-v1/usecases/output-renderers/push-output-renderer.usecase.ts b/apps/api/src/app/environments-v1/usecases/output-renderers/push-output-renderer.usecase.ts index 326fe07f4bf..313c9298cf5 100644 --- a/apps/api/src/app/environments-v1/usecases/output-renderers/push-output-renderer.usecase.ts +++ b/apps/api/src/app/environments-v1/usecases/output-renderers/push-output-renderer.usecase.ts @@ -1,9 +1,11 @@ import { PushRenderOutput } from '@novu/shared'; import { Injectable } from '@nestjs/common'; +import { InstrumentUsecase } from '@novu/application-generic'; import { RenderCommand } from './render-command'; @Injectable() export class PushOutputRendererUsecase { + @InstrumentUsecase() execute(renderCommand: RenderCommand): PushRenderOutput { const subject = renderCommand.controlValues.subject as string; const body = renderCommand.controlValues.body as string; diff --git a/apps/api/src/app/environments-v1/usecases/output-renderers/render-email-output.usecase.ts b/apps/api/src/app/environments-v1/usecases/output-renderers/render-email-output.usecase.ts index 25fe821c97e..e3bfa56781e 100644 --- a/apps/api/src/app/environments-v1/usecases/output-renderers/render-email-output.usecase.ts +++ b/apps/api/src/app/environments-v1/usecases/output-renderers/render-email-output.usecase.ts @@ -1,6 +1,7 @@ -import { EmailRenderOutput } from '@novu/shared'; +import { EmailRenderOutput, TipTapNode } from '@novu/shared'; import { Injectable } from '@nestjs/common'; -import { render } from '@maily-to/render'; +import { render as mailyRender } from '@maily-to/render'; +import { Instrument, InstrumentUsecase } from '@novu/application-generic'; import { FullPayloadForRender, RenderCommand } from './render-command'; import { ExpandEmailEditorSchemaUsecase } from './expand-email-editor-schema.usecase'; import { EmailStepControlZodSchema } from '../../../workflows-v2/shared'; @@ -9,17 +10,24 @@ export class RenderEmailOutputCommand extends RenderCommand {} @Injectable() export class RenderEmailOutputUsecase { - constructor(private expendEmailEditorSchemaUseCase: ExpandEmailEditorSchemaUsecase) {} + constructor(private expandEmailEditorSchemaUseCase: ExpandEmailEditorSchemaUsecase) {} + @InstrumentUsecase() async execute(renderCommand: RenderEmailOutputCommand): Promise { const { emailEditor, subject } = EmailStepControlZodSchema.parse(renderCommand.controlValues); const expandedSchema = this.transformForAndShowLogic(emailEditor, renderCommand.fullPayloadForRender); - const htmlRendered = await render(expandedSchema); + const htmlRendered = await this.renderEmail(expandedSchema); return { subject, body: htmlRendered }; } + @Instrument() + private renderEmail(content: TipTapNode): Promise { + return mailyRender(content); + } + + @Instrument() private transformForAndShowLogic(body: string, fullPayloadForRender: FullPayloadForRender) { - return this.expendEmailEditorSchemaUseCase.execute({ emailEditorJson: body, fullPayloadForRender }); + return this.expandEmailEditorSchemaUseCase.execute({ emailEditorJson: body, fullPayloadForRender }); } } diff --git a/apps/api/src/app/environments-v1/usecases/output-renderers/sms-output-renderer.usecase.ts b/apps/api/src/app/environments-v1/usecases/output-renderers/sms-output-renderer.usecase.ts index 47a34748d45..1558a371c12 100644 --- a/apps/api/src/app/environments-v1/usecases/output-renderers/sms-output-renderer.usecase.ts +++ b/apps/api/src/app/environments-v1/usecases/output-renderers/sms-output-renderer.usecase.ts @@ -1,10 +1,12 @@ // Concrete Renderer for SMS Preview import { SmsRenderOutput } from '@novu/shared'; import { Injectable } from '@nestjs/common'; +import { InstrumentUsecase } from '@novu/application-generic'; import { RenderCommand } from './render-command'; @Injectable() export class SmsOutputRendererUsecase { + @InstrumentUsecase() execute(renderCommand: RenderCommand): SmsRenderOutput { const body = renderCommand.controlValues.body as string; diff --git a/apps/api/src/app/workflows-v2/usecases/build-step-data/build-step-data.usecase.ts b/apps/api/src/app/workflows-v2/usecases/build-step-data/build-step-data.usecase.ts index f8f4dfb52db..8225b0ce2c0 100644 --- a/apps/api/src/app/workflows-v2/usecases/build-step-data/build-step-data.usecase.ts +++ b/apps/api/src/app/workflows-v2/usecases/build-step-data/build-step-data.usecase.ts @@ -1,7 +1,7 @@ import { BadRequestException, Injectable } from '@nestjs/common'; import { ControlValuesLevelEnum, StepDataDto, WorkflowOriginEnum } from '@novu/shared'; import { ControlValuesRepository, NotificationStepEntity, NotificationTemplateEntity } from '@novu/dal'; -import { GetWorkflowByIdsUseCase } from '@novu/application-generic'; +import { GetWorkflowByIdsUseCase, Instrument, InstrumentUsecase } from '@novu/application-generic'; import { BuildStepDataCommand } from './build-step-data.command'; import { InvalidStepException } from '../../exceptions/invalid-step.exception'; import { BuildAvailableVariableSchemaUsecase } from '../build-variable-schema'; @@ -14,6 +14,7 @@ export class BuildStepDataUsecase { private buildAvailableVariableSchemaUsecase: BuildAvailableVariableSchemaUsecase // Dependency injection for new use case ) {} + @InstrumentUsecase() async execute(command: BuildStepDataCommand): Promise { const workflow = await this.fetchWorkflow(command); @@ -49,6 +50,7 @@ export class BuildStepDataUsecase { }; } + @Instrument() private async fetchWorkflow(command: BuildStepDataCommand) { return await this.getWorkflowByIdsUseCase.execute({ identifierOrInternalId: command.identifierOrInternalId, @@ -58,6 +60,7 @@ export class BuildStepDataUsecase { }); } + @Instrument() private async getValues(command: BuildStepDataCommand, currentStep: NotificationStepEntity, _workflowId: string) { const controlValuesEntity = await this.controlValuesRepository.findOne({ _environmentId: command.user.environmentId, @@ -70,6 +73,7 @@ export class BuildStepDataUsecase { return controlValuesEntity?.controls || {}; } + @Instrument() private async loadStepsFromDb(command: BuildStepDataCommand, workflow: NotificationTemplateEntity) { const currentStep = workflow.steps.find( (stepItem) => stepItem._id === command.stepId || stepItem.stepId === command.stepId diff --git a/apps/api/src/app/workflows-v2/usecases/build-test-data/build-workflow-test-data.usecase.ts b/apps/api/src/app/workflows-v2/usecases/build-test-data/build-workflow-test-data.usecase.ts index f3af2e6023f..4a78e81e600 100644 --- a/apps/api/src/app/workflows-v2/usecases/build-test-data/build-workflow-test-data.usecase.ts +++ b/apps/api/src/app/workflows-v2/usecases/build-test-data/build-workflow-test-data.usecase.ts @@ -2,13 +2,19 @@ import { Injectable } from '@nestjs/common'; import { NotificationStepEntity, NotificationTemplateEntity } from '@novu/dal'; import { JSONSchemaDto, StepTypeEnum, UserSessionData, WorkflowTestDataResponseDto } from '@novu/shared'; -import { GetWorkflowByIdsCommand, GetWorkflowByIdsUseCase } from '@novu/application-generic'; +import { + GetWorkflowByIdsCommand, + GetWorkflowByIdsUseCase, + Instrument, + InstrumentUsecase, +} from '@novu/application-generic'; import { WorkflowTestDataCommand } from './build-workflow-test-data.command'; @Injectable() export class BuildWorkflowTestDataUseCase { constructor(private getWorkflowByIdsUseCase: GetWorkflowByIdsUseCase) {} + @InstrumentUsecase() async execute(command: WorkflowTestDataCommand): Promise { const _workflowEntity: NotificationTemplateEntity = await this.fetchWorkflow(command); const toSchema = buildToFieldSchema({ user: command.user, steps: _workflowEntity.steps }); @@ -20,6 +26,7 @@ export class BuildWorkflowTestDataUseCase { }; } + @Instrument() private async fetchWorkflow(command: WorkflowTestDataCommand): Promise { return await this.getWorkflowByIdsUseCase.execute( GetWorkflowByIdsCommand.create({ diff --git a/apps/api/src/app/workflows-v2/usecases/generate-preview/generate-preview.usecase.ts b/apps/api/src/app/workflows-v2/usecases/generate-preview/generate-preview.usecase.ts index 849cea23a80..0070700da6f 100644 --- a/apps/api/src/app/workflows-v2/usecases/generate-preview/generate-preview.usecase.ts +++ b/apps/api/src/app/workflows-v2/usecases/generate-preview/generate-preview.usecase.ts @@ -8,6 +8,7 @@ import { StepDataDto, UserSessionData, } from '@novu/shared'; +import { Instrument, InstrumentUsecase } from '@novu/application-generic'; import { PreviewStep, PreviewStepCommand } from '../../../bridge/usecases/preview-step'; import { FrameworkPreviousStepsOutputState } from '../../../bridge/usecases/preview-step/preview-step.command'; import { StepMissingControlsException } from '../../exceptions/step-not-found-exception'; @@ -23,6 +24,7 @@ export class GeneratePreviewUsecase { private buildStepDataUsecase: BuildStepDataUsecase ) {} + @InstrumentUsecase() async execute(command: GeneratePreviewCommand): Promise { const dto = command.generatePreviewRequestDto; const stepData = await this.getStepData(command); @@ -45,6 +47,7 @@ export class GeneratePreviewUsecase { }; } + @Instrument() private async getValidatedContent(dto: GeneratePreviewRequestDto, stepData: StepDataDto, user: UserSessionData) { if (!stepData.controls?.dataSchema) { throw new StepMissingControlsException(stepData.stepId, stepData); @@ -60,6 +63,7 @@ export class GeneratePreviewUsecase { }); } + @Instrument() private async getStepData(command: GeneratePreviewCommand) { return await this.buildStepDataUsecase.execute({ identifierOrInternalId: command.workflowId, @@ -67,9 +71,12 @@ export class GeneratePreviewUsecase { user: command.user, }); } + private isFrameworkError(obj: any): obj is FrameworkError { return typeof obj === 'object' && obj.status === '400' && obj.name === 'BridgeRequestError'; } + + @Instrument() private async executePreviewUsecase( command: GeneratePreviewCommand, stepData: StepDataDto, diff --git a/apps/api/src/app/workflows-v2/usecases/get-workflow/get-workflow.usecase.ts b/apps/api/src/app/workflows-v2/usecases/get-workflow/get-workflow.usecase.ts index e0f3164b340..776b5d7b744 100644 --- a/apps/api/src/app/workflows-v2/usecases/get-workflow/get-workflow.usecase.ts +++ b/apps/api/src/app/workflows-v2/usecases/get-workflow/get-workflow.usecase.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { WorkflowResponseDto } from '@novu/shared'; -import { GetWorkflowByIdsCommand, GetWorkflowByIdsUseCase } from '@novu/application-generic'; +import { GetWorkflowByIdsCommand, GetWorkflowByIdsUseCase, InstrumentUsecase } from '@novu/application-generic'; import { GetWorkflowCommand } from './get-workflow.command'; import { toResponseWorkflowDto } from '../../mappers/notification-template-mapper'; @@ -9,6 +9,8 @@ import { toResponseWorkflowDto } from '../../mappers/notification-template-mappe @Injectable() export class GetWorkflowUseCase { constructor(private getWorkflowByIdsUseCase: GetWorkflowByIdsUseCase) {} + + @InstrumentUsecase() async execute(command: GetWorkflowCommand): Promise { const workflowEntity = await this.getWorkflowByIdsUseCase.execute( GetWorkflowByIdsCommand.create({ diff --git a/apps/api/src/app/workflows-v2/usecases/list-workflows/list-workflow.usecase.ts b/apps/api/src/app/workflows-v2/usecases/list-workflows/list-workflow.usecase.ts index fc54259789b..dd0c2a3fdcd 100644 --- a/apps/api/src/app/workflows-v2/usecases/list-workflows/list-workflow.usecase.ts +++ b/apps/api/src/app/workflows-v2/usecases/list-workflows/list-workflow.usecase.ts @@ -2,12 +2,15 @@ import { Injectable } from '@nestjs/common'; import { NotificationTemplateRepository } from '@novu/dal'; import { ListWorkflowResponse } from '@novu/shared'; +import { InstrumentUsecase } from '@novu/application-generic'; import { ListWorkflowsCommand } from './list-workflows.command'; import { toWorkflowsMinifiedDtos } from '../../mappers/notification-template-mapper'; @Injectable() export class ListWorkflowsUseCase { constructor(private notificationTemplateRepository: NotificationTemplateRepository) {} + + @InstrumentUsecase() async execute(command: ListWorkflowsCommand): Promise { const res = await this.notificationTemplateRepository.getList( command.user.organizationId, diff --git a/apps/api/src/app/workflows-v2/usecases/post-process-workflow-update/post-process-workflow-update.usecase.ts b/apps/api/src/app/workflows-v2/usecases/post-process-workflow-update/post-process-workflow-update.usecase.ts index 40322f1ba1c..fd3e7f46afc 100644 --- a/apps/api/src/app/workflows-v2/usecases/post-process-workflow-update/post-process-workflow-update.usecase.ts +++ b/apps/api/src/app/workflows-v2/usecases/post-process-workflow-update/post-process-workflow-update.usecase.ts @@ -10,9 +10,9 @@ import { WorkflowResponseDto, WorkflowStatusEnum, } from '@novu/shared'; -import { ControlValuesRepository, NotificationStepEntity, NotificationTemplateRepository } from '@novu/dal'; +import { NotificationStepEntity, NotificationTemplateRepository } from '@novu/dal'; import { Injectable } from '@nestjs/common'; -import { WorkflowInternalResponseDto } from '@novu/application-generic'; +import { Instrument, InstrumentUsecase, WorkflowInternalResponseDto } from '@novu/application-generic'; import { PostProcessWorkflowUpdateCommand } from './post-process-workflow-update.command'; import { OverloadContentDataOnWorkflowUseCase } from '../overload-content-data'; @@ -32,10 +32,10 @@ import { OverloadContentDataOnWorkflowUseCase } from '../overload-content-data'; export class PostProcessWorkflowUpdate { constructor( private notificationTemplateRepository: NotificationTemplateRepository, - private controlValuesRepository: ControlValuesRepository, private overloadContentDataOnWorkflowUseCase: OverloadContentDataOnWorkflowUseCase ) {} + @InstrumentUsecase() async execute(command: PostProcessWorkflowUpdateCommand): Promise { const workflowIssues = await this.validateWorkflow(command); const stepIssues = this.validateSteps(command.workflow.steps, command.workflow._id); @@ -107,6 +107,7 @@ export class PostProcessWorkflowUpdate { return stepIdToIssues; } + @Instrument() private async validateWorkflow( command: PostProcessWorkflowUpdateCommand ): Promise> { @@ -117,6 +118,7 @@ export class PostProcessWorkflowUpdate { return issues; } + @Instrument() private async addTriggerIdentifierNotUniqueIfApplicable( command: PostProcessWorkflowUpdateCommand, issues: Record diff --git a/apps/api/src/app/workflows-v2/usecases/sync-to-environment/sync-to-environment.usecase.ts b/apps/api/src/app/workflows-v2/usecases/sync-to-environment/sync-to-environment.usecase.ts index 7121b19547c..32e39114570 100644 --- a/apps/api/src/app/workflows-v2/usecases/sync-to-environment/sync-to-environment.usecase.ts +++ b/apps/api/src/app/workflows-v2/usecases/sync-to-environment/sync-to-environment.usecase.ts @@ -12,6 +12,7 @@ import { WorkflowResponseDto, } from '@novu/shared'; import { PreferencesEntity, PreferencesRepository } from '@novu/dal'; +import { Instrument, InstrumentUsecase } from '@novu/application-generic'; import { SyncToEnvironmentCommand } from './sync-to-environment.command'; import { GetWorkflowCommand, GetWorkflowUseCase } from '../get-workflow'; import { UpsertWorkflowCommand, UpsertWorkflowUseCase } from '../upsert-workflow'; @@ -35,6 +36,7 @@ export class SyncToEnvironmentUseCase { private buildStepDataUsecase: BuildStepDataUsecase ) {} + @InstrumentUsecase() async execute(command: SyncToEnvironmentCommand): Promise { if (command.user.environmentId === command.targetEnvironmentId) { throw new BadRequestException('Cannot sync workflow to the same environment'); @@ -55,6 +57,7 @@ export class SyncToEnvironmentUseCase { ); } + @Instrument() private async buildRequestDto( originWorkflow: WorkflowResponseDto, preferencesToClone: PreferencesEntity[], @@ -68,6 +71,7 @@ export class SyncToEnvironmentUseCase { return await this.mapWorkflowToCreateWorkflowDto(originWorkflow, preferencesToClone, command); } + @Instrument() private async getWorkflowToClone(command: SyncToEnvironmentCommand): Promise { return this.getWorkflowUseCase.execute( GetWorkflowCommand.create({ @@ -77,6 +81,7 @@ export class SyncToEnvironmentUseCase { ); } + @Instrument() private async findWorkflowInTargetEnvironment( command: SyncToEnvironmentCommand, externalId: string @@ -93,6 +98,7 @@ export class SyncToEnvironmentUseCase { } } + @Instrument() private async mapWorkflowToCreateWorkflowDto( originWorkflow: WorkflowResponseDto, preferences: PreferencesEntity[], @@ -110,6 +116,7 @@ export class SyncToEnvironmentUseCase { }; } + @Instrument() private async mapWorkflowToUpdateWorkflowDto( originWorkflow: WorkflowResponseDto, existingWorkflowInProd: WorkflowResponseDto | undefined, @@ -127,6 +134,7 @@ export class SyncToEnvironmentUseCase { }; } + @Instrument() private async mapStepsToDto( originSteps: StepResponseDto[], command: SyncToEnvironmentCommand, diff --git a/apps/api/src/app/workflows-v2/usecases/upsert-workflow/upsert-workflow.usecase.ts b/apps/api/src/app/workflows-v2/usecases/upsert-workflow/upsert-workflow.usecase.ts index b1fd3ef556c..898487d7b02 100644 --- a/apps/api/src/app/workflows-v2/usecases/upsert-workflow/upsert-workflow.usecase.ts +++ b/apps/api/src/app/workflows-v2/usecases/upsert-workflow/upsert-workflow.usecase.ts @@ -24,6 +24,8 @@ import { shortId, UpdateWorkflow, UpdateWorkflowCommand, + InstrumentUsecase, + Instrument, } from '@novu/application-generic'; import { BadRequestException, Injectable } from '@nestjs/common'; import { UpsertWorkflowCommand } from './upsert-workflow.command'; @@ -43,6 +45,7 @@ export class UpsertWorkflowUseCase { private patchStepDataUsecase: PatchStepUsecase ) {} + @InstrumentUsecase() async execute(command: UpsertWorkflowCommand): Promise { const workflowForUpdate = await this.queryWorkflow(command); let persistedWorkflow = await this.createOrUpdateWorkflow(workflowForUpdate, command); @@ -57,6 +60,7 @@ export class UpsertWorkflowUseCase { return toResponseWorkflowDto(persistedWorkflow); } + @Instrument() private async getWorkflow(workflowId: string, command: UpsertWorkflowCommand): Promise { return await this.getWorkflowByIdsUseCase.execute( GetWorkflowByIdsCommand.create({ @@ -68,6 +72,7 @@ export class UpsertWorkflowUseCase { ); } + @Instrument() private async persistWorkflow(workflowWithIssues: WorkflowInternalResponseDto) { const command = UpdateWorkflowCommand.create({ id: workflowWithIssues._id, @@ -81,6 +86,7 @@ export class UpsertWorkflowUseCase { await this.updateWorkflowUsecase.execute(command); } + @Instrument() private async queryWorkflow(command: UpsertWorkflowCommand): Promise { if (!command.identifierOrInternalId) { return null; @@ -96,6 +102,7 @@ export class UpsertWorkflowUseCase { ); } + @Instrument() private async createOrUpdateWorkflow( existingWorkflow: NotificationTemplateEntity | null, command: UpsertWorkflowCommand @@ -113,6 +120,7 @@ export class UpsertWorkflowUseCase { ); } + @Instrument() private async buildCreateWorkflowGenericCommand(command: UpsertWorkflowCommand): Promise { const { user } = command; // It's safe to assume we're dealing with CreateWorkflowDto on the creation path @@ -278,6 +286,7 @@ export class UpsertWorkflowUseCase { * @deprecated This method will be removed in future versions. * Please use `the patch step data instead, do not add here anything` instead. */ + @Instrument() private async upsertControlValues( workflow: NotificationTemplateEntity, command: UpsertWorkflowCommand diff --git a/apps/api/src/app/workflows-v2/usecases/validate-content/prepare-and-validate-content/prepare-and-validate-content.usecase.ts b/apps/api/src/app/workflows-v2/usecases/validate-content/prepare-and-validate-content/prepare-and-validate-content.usecase.ts index 382334c0e73..8a58b125684 100644 --- a/apps/api/src/app/workflows-v2/usecases/validate-content/prepare-and-validate-content/prepare-and-validate-content.usecase.ts +++ b/apps/api/src/app/workflows-v2/usecases/validate-content/prepare-and-validate-content/prepare-and-validate-content.usecase.ts @@ -9,7 +9,7 @@ import { StepTypeEnum, UserSessionData, } from '@novu/shared'; -import { TierRestrictionsValidateUsecase } from '@novu/application-generic'; +import { Instrument, InstrumentUsecase, TierRestrictionsValidateUsecase } from '@novu/application-generic'; import { PrepareAndValidateContentCommand } from './prepare-and-validate-content.command'; import { flattenJson, flattenToNested, mergeObjects } from '../../../util/jsonUtils'; @@ -39,6 +39,7 @@ export class PrepareAndValidateContentUsecase { private tierRestrictionsValidateUsecase: TierRestrictionsValidateUsecase ) {} + @InstrumentUsecase() async execute(command: PrepareAndValidateContentCommand): Promise { const controlValueToPlaceholders = this.collectPlaceholders(command.controlValues); const controlValueToValidPlaceholders = this.validatePlaceholders( @@ -234,6 +235,7 @@ export class PrepareAndValidateContentUsecase { return targetText.trim(); } + @Instrument() private async buildIssues( payload: PreviewPayload, providedPayload: PreviewPayload, @@ -338,6 +340,7 @@ export class PrepareAndValidateContentUsecase { ); } + @Instrument() private async computeTierIssues( defaultControlValues: Record, user: UserSessionData, diff --git a/apps/worker/src/app/workflow/usecases/execute-bridge-job/execute-bridge-job.usecase.ts b/apps/worker/src/app/workflow/usecases/execute-bridge-job/execute-bridge-job.usecase.ts index 0929bfb518b..25c49e1bd82 100644 --- a/apps/worker/src/app/workflow/usecases/execute-bridge-job/execute-bridge-job.usecase.ts +++ b/apps/worker/src/app/workflow/usecases/execute-bridge-job/execute-bridge-job.usecase.ts @@ -26,6 +26,8 @@ import { DetailEnum, ExecuteBridgeRequest, ExecuteBridgeRequestCommand, + Instrument, + InstrumentUsecase, } from '@novu/application-generic'; import { ExecuteBridgeJobCommand } from './execute-bridge-job.command'; @@ -43,6 +45,7 @@ export class ExecuteBridgeJob { private executeBridgeRequest: ExecuteBridgeRequest ) {} + @InstrumentUsecase() async execute(command: ExecuteBridgeJobCommand): Promise { const stepId = command.job.step.stepId || command.job.step.uuid; @@ -183,6 +186,7 @@ export class ExecuteBridgeJob { return previousJobs; } + @Instrument() private async sendBridgeRequest({ statelessBridgeUrl, event, @@ -222,6 +226,7 @@ export class ExecuteBridgeJob { }) as Promise; } + @Instrument() private async mapState(job: JobEntity, payload: Record) { let output = {}; diff --git a/libs/application-generic/src/usecases/delete-preferences/delete-preferences.usecase.ts b/libs/application-generic/src/usecases/delete-preferences/delete-preferences.usecase.ts index a2219bfbfcf..e5c4eba18a5 100644 --- a/libs/application-generic/src/usecases/delete-preferences/delete-preferences.usecase.ts +++ b/libs/application-generic/src/usecases/delete-preferences/delete-preferences.usecase.ts @@ -1,11 +1,13 @@ import { Injectable } from '@nestjs/common'; import { PreferencesEntity, PreferencesRepository } from '@novu/dal'; import { DeletePreferencesCommand } from './delete-preferences.command'; +import { Instrument, InstrumentUsecase } from '../../instrumentation'; @Injectable() export class DeletePreferencesUseCase { constructor(private preferencesRepository: PreferencesRepository) {} + @InstrumentUsecase() public async execute(command: DeletePreferencesCommand): Promise { const existingPreference = await this.getPreference(command); @@ -24,6 +26,7 @@ export class DeletePreferencesUseCase { await this.deletePreferences(command, existingPreference._id); } + @Instrument() private async deletePreferences( command: DeletePreferencesCommand, preferencesId: string, @@ -37,6 +40,7 @@ export class DeletePreferencesUseCase { }); } + @Instrument() private async getPreference( command: DeletePreferencesCommand, ): Promise { diff --git a/libs/application-generic/src/usecases/execute-bridge-request/execute-bridge-request.usecase.ts b/libs/application-generic/src/usecases/execute-bridge-request/execute-bridge-request.usecase.ts index 2049aa7622d..c283a6edbe0 100644 --- a/libs/application-generic/src/usecases/execute-bridge-request/execute-bridge-request.usecase.ts +++ b/libs/application-generic/src/usecases/execute-bridge-request/execute-bridge-request.usecase.ts @@ -39,6 +39,7 @@ import { } from '../get-decrypted-secret-key'; import { BRIDGE_EXECUTION_ERROR } from '../../utils'; import { HttpRequestHeaderKeysEnum } from '../../http'; +import { Instrument, InstrumentUsecase } from '../../instrumentation'; export const DEFAULT_TIMEOUT = 5_000; // 5 seconds export const DEFAULT_RETRIES_LIMIT = 3; @@ -104,6 +105,7 @@ export class ExecuteBridgeRequest { private getDecryptedSecretKey: GetDecryptedSecretKey, ) {} + @InstrumentUsecase() async execute( command: ExecuteBridgeRequestCommand, ): Promise> { @@ -190,6 +192,7 @@ export class ExecuteBridgeRequest { } } + @Instrument() private async buildRequestHeaders(command: ExecuteBridgeRequestCommand) { const novuSignatureHeader = await this.buildRequestSignature(command); @@ -200,6 +203,7 @@ export class ExecuteBridgeRequest { }; } + @Instrument() private async buildRequestSignature(command: ExecuteBridgeRequestCommand) { const secretKey = await this.getDecryptedSecretKey.execute( GetDecryptedSecretKeyCommand.create({ @@ -217,6 +221,7 @@ export class ExecuteBridgeRequest { return novuSignatureHeader; } + @Instrument() private createHmacBySecretKey( secretKey: string, timestamp: number, @@ -239,6 +244,7 @@ export class ExecuteBridgeRequest { * @param statelessBridgeUrl - The URL of the stateless bridge app. * @returns The correct bridge URL. */ + @Instrument() private getBridgeUrl( environmentBridgeUrl: string, environmentId: string, @@ -251,10 +257,11 @@ export class ExecuteBridgeRequest { } switch (workflowOrigin) { - case WorkflowOriginEnum.NOVU_CLOUD: + case WorkflowOriginEnum.NOVU_CLOUD: { const apiUrl = this.getApiUrl(action); return `${apiUrl}/v1/environments/${environmentId}/bridge`; + } case WorkflowOriginEnum.EXTERNAL: { if (!environmentBridgeUrl) { throw new BadRequestException({ @@ -287,6 +294,7 @@ export class ExecuteBridgeRequest { return apiUrl; } + @Instrument() private async handleResponseError( error: unknown, url: string, diff --git a/libs/application-generic/src/usecases/tier-restrictions-validate/tier-restrictions-validate.usecase.ts b/libs/application-generic/src/usecases/tier-restrictions-validate/tier-restrictions-validate.usecase.ts index 0e3f01d11a6..7fd3afee851 100644 --- a/libs/application-generic/src/usecases/tier-restrictions-validate/tier-restrictions-validate.usecase.ts +++ b/libs/application-generic/src/usecases/tier-restrictions-validate/tier-restrictions-validate.usecase.ts @@ -14,6 +14,7 @@ import { MAX_DELAY_FREE_TIER, MAX_DELAY_BUSINESS_TIER, } from './tier-restrictions-validate.consts'; +import { InstrumentUsecase } from '../../instrumentation'; @Injectable() export class TierRestrictionsValidateUsecase { @@ -21,6 +22,7 @@ export class TierRestrictionsValidateUsecase { private organizationRepository: CommunityOrganizationRepository, ) {} + @InstrumentUsecase() async execute( command: TierRestrictionsValidateCommand, ): Promise { diff --git a/libs/application-generic/src/usecases/workflow/delete-workflow/delete-workflow.usecase.ts b/libs/application-generic/src/usecases/workflow/delete-workflow/delete-workflow.usecase.ts index 02bbe302b8f..b45a001fdcd 100644 --- a/libs/application-generic/src/usecases/workflow/delete-workflow/delete-workflow.usecase.ts +++ b/libs/application-generic/src/usecases/workflow/delete-workflow/delete-workflow.usecase.ts @@ -5,9 +5,8 @@ import { MessageTemplateRepository, NotificationTemplateEntity, NotificationTemplateRepository, - PreferencesRepository, } from '@novu/dal'; -import { PreferencesTypeEnum, WorkflowOriginEnum } from '@novu/shared'; +import { PreferencesTypeEnum } from '@novu/shared'; import { DeleteWorkflowCommand } from './delete-workflow.command'; import { InvalidateCacheService } from '../../../services/cache/invalidate-cache.service'; @@ -21,6 +20,7 @@ import { DeletePreferencesUseCase, DeletePreferencesCommand, } from '../../delete-preferences'; +import { Instrument, InstrumentUsecase } from '../../../instrumentation'; @Injectable() export class DeleteWorkflowUseCase { @@ -28,12 +28,12 @@ export class DeleteWorkflowUseCase { private notificationTemplateRepository: NotificationTemplateRepository, private messageTemplateRepository: MessageTemplateRepository, private getWorkflowByIdsUseCase: GetWorkflowByIdsUseCase, - private preferencesRepository: PreferencesRepository, private invalidateCache: InvalidateCacheService, private controlValuesRepository: ControlValuesRepository, private deletePreferencesUsecase: DeletePreferencesUseCase, ) {} + @InstrumentUsecase() async execute(command: DeleteWorkflowCommand): Promise { const workflowEntity = await this.getWorkflowByIdsUseCase.execute( GetWorkflowByIdsCommand.create({ @@ -47,6 +47,7 @@ export class DeleteWorkflowUseCase { await this.deleteRelatedEntities(command, workflowEntity); } + @Instrument() private async deleteRelatedEntities( command: DeleteWorkflowCommand, workflow: NotificationTemplateEntity, @@ -94,6 +95,7 @@ export class DeleteWorkflowUseCase { }); } + @Instrument() private async invalidateCacheForWorkflow( workflow: NotificationTemplateEntity, command: DeleteWorkflowCommand, @@ -112,11 +114,4 @@ export class DeleteWorkflowUseCase { }), }); } - - private isNovuCloud(workflow: NotificationTemplateEntity) { - return ( - workflow.origin === WorkflowOriginEnum.NOVU_CLOUD || - workflow.origin === WorkflowOriginEnum.NOVU_CLOUD_V1 - ); - } } diff --git a/libs/application-generic/src/usecases/workflow/get-workflow-by-ids/get-workflow-by-ids.usecase.ts b/libs/application-generic/src/usecases/workflow/get-workflow-by-ids/get-workflow-by-ids.usecase.ts index 8a4801fccba..2658ba189f0 100644 --- a/libs/application-generic/src/usecases/workflow/get-workflow-by-ids/get-workflow-by-ids.usecase.ts +++ b/libs/application-generic/src/usecases/workflow/get-workflow-by-ids/get-workflow-by-ids.usecase.ts @@ -17,6 +17,7 @@ import { GetPreferences, GetPreferencesCommand } from '../../get-preferences'; import { GetWorkflowByIdsCommand } from './get-workflow-by-ids.command'; import { WorkflowInternalResponseDto } from './get-workflow-by-ids.dto'; +import { Instrument, InstrumentUsecase } from '../../../instrumentation'; @Injectable() export class GetWorkflowByIdsUseCase { @@ -25,15 +26,51 @@ export class GetWorkflowByIdsUseCase { @Inject(forwardRef(() => GetPreferences)) private getPreferences: GetPreferences, ) {} + + @InstrumentUsecase() async execute( command: GetWorkflowByIdsCommand, ): Promise { + const workflowEntity = await this.getDbWorkflow(command); + + const workflowPreferences = await this.getWorkflowPreferences( + command, + workflowEntity, + ); + + /** + * @deprecated - use `userPreferences` and `defaultPreferences` instead + */ + const preferenceSettings = workflowPreferences + ? GetPreferences.mapWorkflowPreferencesToChannelPreferences( + workflowPreferences.preferences, + ) + : workflowEntity.preferenceSettings; + const userPreferences = workflowPreferences + ? workflowPreferences.source.USER_WORKFLOW + : buildWorkflowPreferencesFromPreferenceChannels( + workflowEntity.critical, + workflowEntity.preferenceSettings, + ); + const defaultPreferences = workflowPreferences + ? workflowPreferences.source.WORKFLOW_RESOURCE + : DEFAULT_WORKFLOW_PREFERENCES; + + return { + ...workflowEntity, + preferenceSettings, + userPreferences, + defaultPreferences, + }; + } + + @Instrument() + private async getDbWorkflow(command: GetWorkflowByIdsCommand) { const isInternalId = NotificationTemplateRepository.isInternalId( command.identifierOrInternalId, ); let workflowEntity: NotificationTemplateEntity | null; - if (isInternalId) { workflowEntity = await this.notificationTemplateRepository.findById( command.identifierOrInternalId, @@ -54,36 +91,20 @@ export class GetWorkflowByIdsUseCase { }); } - const workflowPreferences = await this.getPreferences.safeExecute( + return workflowEntity; + } + + @Instrument() + private async getWorkflowPreferences( + command: GetWorkflowByIdsCommand, + workflowEntity: NotificationTemplateEntity, + ) { + return await this.getPreferences.safeExecute( GetPreferencesCommand.create({ environmentId: command.environmentId, organizationId: command.organizationId, templateId: workflowEntity._id, }), ); - /** - * @deprecated - use `userPreferences` and `defaultPreferences` instead - */ - const preferenceSettings = workflowPreferences - ? GetPreferences.mapWorkflowPreferencesToChannelPreferences( - workflowPreferences.preferences, - ) - : workflowEntity.preferenceSettings; - const userPreferences = workflowPreferences - ? workflowPreferences.source.USER_WORKFLOW - : buildWorkflowPreferencesFromPreferenceChannels( - workflowEntity.critical, - workflowEntity.preferenceSettings, - ); - const defaultPreferences = workflowPreferences - ? workflowPreferences.source.WORKFLOW_RESOURCE - : DEFAULT_WORKFLOW_PREFERENCES; - - return { - ...workflowEntity, - preferenceSettings, - userPreferences, - defaultPreferences, - }; } } From 6a68ce114742e1213e27989db4cd14d7da942f83 Mon Sep 17 00:00:00 2001 From: Sokratis Vidros Date: Thu, 28 Nov 2024 12:10:27 +0200 Subject: [PATCH 9/9] fixup! fix(api): fixed validation done in update command --- .../workflow/update-workflow/update-workflow.command.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libs/application-generic/src/usecases/workflow/update-workflow/update-workflow.command.ts b/libs/application-generic/src/usecases/workflow/update-workflow/update-workflow.command.ts index 894835e48d2..0d1ffc3981b 100644 --- a/libs/application-generic/src/usecases/workflow/update-workflow/update-workflow.command.ts +++ b/libs/application-generic/src/usecases/workflow/update-workflow/update-workflow.command.ts @@ -28,7 +28,11 @@ import { MAX_NAME_LENGTH, MAX_TAG_LENGTH, } from './upsert-validation-constants'; -import { ContentIssue, IStepControl, NotificationStep } from '../..'; +import { + ContentIssue, + IStepControl, + NotificationStep, +} from '../../create-workflow/create-workflow.command'; export class UpdateWorkflowCommand extends EnvironmentWithUserCommand { @IsDefined()