From a922afb08991852d4b64677fdc5f9595a8a79317 Mon Sep 17 00:00:00 2001 From: Sergio Date: Thu, 7 Nov 2024 11:50:31 +0100 Subject: [PATCH 01/16] update trial messaging --- package.json | 10 +++---- src/constants.ts | 1 + src/plus/gk/account/subscriptionService.ts | 27 +++++++++---------- src/quickpicks/items/directive.ts | 4 +-- .../components/feature-gate-plus-state.ts | 22 +++++++-------- .../shared/components/home-account-content.ts | 20 ++++++++------ 6 files changed, 41 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index 26ed4f07a2973..0a497692dfe45 100644 --- a/package.json +++ b/package.json @@ -19322,7 +19322,7 @@ }, { "view": "gitlens.views.drafts", - "contents": "Cloud Patches ᴘʀᴇᴠɪᴇᴡ — easily and securely share code with your teammates or other developers, accessible from anywhere, streamlining your workflow with better collaboration." + "contents": "Cloud Patches ᴘʀᴇᴠɪᴇᴡ — easily and securely share code with your teammates and other developers without adding noise to your repository." }, { "view": "gitlens.views.drafts", @@ -19334,10 +19334,6 @@ "contents": "[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22cloud-patches%22%7D)\n\nStart your free 7-day Pro trial to try Cloud Patches and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22cloud-patches%22%7D).", "when": "!gitlens:plus" }, - { - "view": "gitlens.views.drafts", - "contents": "Preview feature ☁️ — requires an account and may require a paid plan in the future." - }, { "view": "gitlens.views.launchpad", "contents": "[Launchpad](command:gitlens.views.launchpad.info \"Learn about Launchpad\") — organizes your pull requests into actionable groups to help you focus and keep your team unblocked." @@ -19467,7 +19463,7 @@ }, { "view": "gitlens.views.worktrees", - "contents": "[Worktrees](https://help.gitkraken.com/gitlens/side-bar/#worktrees-view-pro) ᴾᴿᴼ — minimize context switching by allowing you to work on multiple branches simultaneously." + "contents": "[Worktrees](https://help.gitkraken.com/gitlens/side-bar/#worktrees-view-pro) ᴾᴿᴼ — minimize context switching by working on multiple branches simultaneously." }, { "view": "gitlens.views.scm.grouped", @@ -19516,7 +19512,7 @@ }, { "view": "gitlens.views.worktrees", - "contents": "[Upgrade to Pro](command:gitlens.plus.upgrade?%7B%22source%22%3A%22worktrees%22%7D)", + "contents": "Use on privately-hosted repos requires [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro?%7B%22source%22%3A%22worktrees%22%7D).\n\n[Upgrade to Pro](command:gitlens.plus.upgrade?%7B%22source%22%3A%22worktrees%22%7D)", "when": "gitlens:plus:required && gitlens:plus:state == 4" }, { diff --git a/src/constants.ts b/src/constants.ts index 8ea0def7fd01d..f1d326c4dc8d3 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -178,6 +178,7 @@ export const urls = Object.freeze({ interactiveCodeHistory: `https://help.gitkraken.com/gitlens/gitlens-start-here/?${utm}#interactive-code-history`, startIntegrations: `https://help.gitkraken.com/gitlens/gitlens-start-here/?${utm}#improve-workflows-with-integrations`, streamlineCollaboration: `https://help.gitkraken.com/gitlens/gitlens-start-here/?${utm}#streamline-collaboration`, + gitlensProVsCommunity: `https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/?${utm}`, }); export type WalkthroughSteps = diff --git a/src/plus/gk/account/subscriptionService.ts b/src/plus/gk/account/subscriptionService.ts index b5cd8912ed1aa..51afbafddbf06 100644 --- a/src/plus/gk/account/subscriptionService.ts +++ b/src/plus/gk/account/subscriptionService.ts @@ -315,33 +315,30 @@ export class SubscriptionService implements Disposable { } = this._subscription; if (account?.verified === false) { - const days = getSubscriptionTimeRemaining(this._subscription, 'days') ?? proTrialLengthInDays; - const verify: MessageItem = { title: 'Resend Email' }; - const learn: MessageItem = { title: 'See Pro Features' }; + const learn: MessageItem | undefined = isSubscriptionPaid(this._subscription) + ? { title: 'See Pro Features' } + : undefined; const confirm: MessageItem = { title: 'Continue', isCloseAffordance: true }; + const result = await window.showInformationMessage( isSubscriptionPaid(this._subscription) ? `You are now on the ${actual.name} plan. \n\nYou must first verify your email. Once verified, you will have full access to Pro features.` - : `Welcome to your ${ - effective.name - } Trial.\n\nYou must first verify your email. Once verified, you will have full access to Pro features for ${ - days < 1 ? '<1 more day' : pluralize('day', days, { infix: ' more ' }) - }.`, + : `Welcome to GitLens.`, { modal: true, - detail: `Your ${ - isSubscriptionPaid(this._subscription) ? 'plan' : 'trial' - } also includes access to the GitKraken DevEx platform, unleashing powerful Git visualization & productivity capabilities everywhere you work: IDE, desktop, browser, and terminal.`, + detail: isSubscriptionPaid(this._subscription) + ? `Your ${ + isSubscriptionPaid(this._subscription) ? 'plan' : 'trial' + } also includes access to the GitKraken DevEx platform, unleashing powerful Git visualization & productivity capabilities everywhere you work: IDE, desktop, browser, and terminal.` + : `Verify the email we just sent you to start your Pro trial.`, }, - verify, - learn, - confirm, + ...([verify, learn, confirm].filter(Boolean) as MessageItem[]), ); if (result === verify) { void this.resendVerification(source); - } else if (result === learn) { + } else if (learn && result === learn) { void this.learnAboutPro({ source: 'prompt', detail: { action: 'trial-started-verify-email' } }, source); } } else if (isSubscriptionPaid(this._subscription)) { diff --git a/src/quickpicks/items/directive.ts b/src/quickpicks/items/directive.ts index ba5b010f0dc62..412e02525f4f3 100644 --- a/src/quickpicks/items/directive.ts +++ b/src/quickpicks/items/directive.ts @@ -65,7 +65,7 @@ export function createDirectiveQuickPickItem( break; case Directive.StartProTrial: label = 'Start Pro Trial'; - detail = `Start your free ${proTrialLengthInDays}-day Pro trial for full access to Pro features`; + detail = `Start your free ${proTrialLengthInDays}-day GitLens Pro trial - no credit card required.`; break; case Directive.RequiresVerification: label = 'Resend Email'; @@ -74,7 +74,7 @@ export function createDirectiveQuickPickItem( case Directive.RequiresPaidSubscription: label = 'Upgrade to Pro'; if (detail != null) { - description ??= ' \u2014\u00a0\u00a0 a paid plan is required to use this Pro feature'; + description ??= ' - access Launchpad and all Pro features with GitLens Pro'; } else { detail = 'Upgrading to a paid plan is required to use this Pro feature'; } diff --git a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts index 0f995ad28fc07..b2c4d36f8e2c4 100644 --- a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts +++ b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts @@ -1,5 +1,6 @@ import { css, html, LitElement, nothing } from 'lit'; import { customElement, property, query } from 'lit/decorators.js'; +import { urls } from '../../../../../constants'; import { Commands } from '../../../../../constants.commands'; import { proTrialLengthInDays, SubscriptionState } from '../../../../../constants.subscription'; import type { Source } from '../../../../../constants.telemetry'; @@ -139,31 +140,30 @@ export class GlFeatureGatePlusState extends LitElement { case SubscriptionState.ProPreviewExpired: return html` +

+ Use on privately-hosted repos requires GitLens Pro. +

Start Pro Trial Try GitLens Pro 

- Start your free ${proTrialLengthInDays}-day Pro trial to try - ${this.featureWithArticleIfNeeded ? `${this.featureWithArticleIfNeeded} and other ` : ''}Pro - features, or + Start your free ${proTrialLengthInDays}-day GitLens Pro trial - no credit card required. Or sign in.

`; case SubscriptionState.ProTrialExpired: - return html` + Use on privately-hosted repos requires GitLens Pro. +

+ Upgrade to Pro - ${this.renderPromo(promo)} -

- Your Pro trial has ended. Please upgrade for full access to - ${this.featureWithArticleIfNeeded ? `${this.featureWithArticleIfNeeded} and other ` : ''}Pro - features. -

`; + ${this.renderPromo(promo)}`; case SubscriptionState.ProTrialReactivationEligible: return html` diff --git a/src/webviews/apps/plus/shared/components/home-account-content.ts b/src/webviews/apps/plus/shared/components/home-account-content.ts index 43e14d99f2e28..fa916c4f971f8 100644 --- a/src/webviews/apps/plus/shared/components/home-account-content.ts +++ b/src/webviews/apps/plus/shared/components/home-account-content.ts @@ -361,11 +361,14 @@ export class GLHomeAccountContent extends LitElement { case SubscriptionState.ProTrialExpired: return html` `; @@ -395,15 +398,16 @@ export class GLHomeAccountContent extends LitElement { return html` `; } From b21e0f8956596724fc7da9d2a40397c994441961 Mon Sep 17 00:00:00 2001 From: Sergio Date: Fri, 8 Nov 2024 17:17:48 +0100 Subject: [PATCH 02/16] add changes to messaging --- package.json | 21 ++++++------------- .../components/feature-gate-plus-state.ts | 8 +++++++ 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 0a497692dfe45..3da195e41e5b2 100644 --- a/package.json +++ b/package.json @@ -19331,7 +19331,7 @@ }, { "view": "gitlens.views.drafts", - "contents": "[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22cloud-patches%22%7D)\n\nStart your free 7-day Pro trial to try Cloud Patches and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22cloud-patches%22%7D).", + "contents": "Preview feature - requires an account and may require [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/) in the future.\n[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22cloud-patches%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22cloud-patches%22%7D).", "when": "!gitlens:plus" }, { @@ -19375,12 +19375,12 @@ }, { "view": "gitlens.views.launchpad", - "contents": "[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nStart your free 7-day Pro trial to try Launchpad and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D).", + "contents": "[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D).", "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 2" }, { "view": "gitlens.views.scm.grouped", - "contents": "[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nStart your free 7-day Pro trial to try Launchpad and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D).", + "contents": "[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D).", "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 2 && gitlens:views:scm:grouped:view == launchpad" }, { @@ -19454,7 +19454,7 @@ }, { "view": "gitlens.views.workspaces", - "contents": "[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22workspaces%22%7D)\n\nStart your free 7-day Pro trial to try GitKraken (GK) Workspaces and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22workspaces%22%7D).", + "contents": "Use on privately-hosted repos requires [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/).\n[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22workspaces%22%7D)\n\nStart your free 7-day Pro trial to try GitKraken (GK) Workspaces and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22workspaces%22%7D).", "when": "!gitlens:plus" }, { @@ -19492,7 +19492,7 @@ }, { "view": "gitlens.views.worktrees", - "contents": "[Continue](command:gitlens.plus.startPreviewTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nContinuing gives you 3 days to preview Worktrees and other local Pro features for 3 days. [Start 7-day Pro trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D) or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D) for full access to Pro features.", + "contents": "Use on privately-hosted repos requires [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/).\n[Continue](command:gitlens.plus.startPreviewTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nContinuing gives you 3 days to preview Worktrees and other local Pro features for 3 days. [Start 7-day Pro trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D) or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D) for full access to Pro features.", "when": "gitlens:plus:required && gitlens:plus:state == 0" }, { @@ -19502,7 +19502,7 @@ }, { "view": "gitlens.views.worktrees", - "contents": "[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D)\n\nStart your free 7-day Pro trial to try Worktrees and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D).", + "contents": "Use on privately-hosted repos requires [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/).\n[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D)\n\nStart your free 7-day Pro trial to try Worktrees and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D).", "when": "gitlens:plus:required && gitlens:plus:state == 2" }, { @@ -19540,11 +19540,6 @@ "contents": "Save more than 55% during our GitLens 16 sale!", "when": "gitlens:plus:required && gitlens:plus:state == 4 && gitlens:promo == gitlens16 && gitlens:views:scm:grouped:view == worktrees" }, - { - "view": "gitlens.views.worktrees", - "contents": "Your Pro trial has ended. Please upgrade for full access to Worktrees and other Pro features.", - "when": "gitlens:plus:required && gitlens:plus:state == 4" - }, { "view": "gitlens.views.scm.grouped", "contents": "Your Pro trial has ended. Please upgrade for full access to Worktrees and other Pro features.", @@ -19560,10 +19555,6 @@ "contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nReactivate your Pro trial and experience Worktrees and all the new Pro features — free for another 7 days!", "when": "gitlens:plus:required && gitlens:plus:state == 5 && gitlens:views:scm:grouped:view == worktrees" }, - { - "view": "gitlens.views.worktrees", - "contents": "Pro feature — requires a paid plan for use on privately-hosted repos." - }, { "view": "gitlens.views.scm.grouped", "contents": "Pro feature — requires a paid plan for use on privately-hosted repos.", diff --git a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts index b2c4d36f8e2c4..8828ed6d75bab 100644 --- a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts +++ b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts @@ -98,6 +98,8 @@ export class GlFeatureGatePlusState extends LitElement { const appearance = (this.appearance ?? 'alert') === 'alert' ? 'alert' : nothing; const promo = this.state ? getApplicablePromo(this.state, 'gate') : undefined; + const feature = this.source?.source || ''; + switch (this.state) { case SubscriptionState.VerificationRequired: return html` @@ -120,6 +122,12 @@ export class GlFeatureGatePlusState extends LitElement { case SubscriptionState.Community: return html` + ${feature !== 'graph' + ? html`

+ Use on privately-hosted repos requires + GitLens Pro. +

` + : nothing} Date: Mon, 11 Nov 2024 17:46:32 +0100 Subject: [PATCH 03/16] Replace Start Pro Trial for Try GitLens Pro for consistency --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 3da195e41e5b2..4e65e73325cd4 100644 --- a/package.json +++ b/package.json @@ -19454,7 +19454,7 @@ }, { "view": "gitlens.views.workspaces", - "contents": "Use on privately-hosted repos requires [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/).\n[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22workspaces%22%7D)\n\nStart your free 7-day Pro trial to try GitKraken (GK) Workspaces and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22workspaces%22%7D).", + "contents": "Use on privately-hosted repos requires [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/).\n[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22workspaces%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22workspaces%22%7D).", "when": "!gitlens:plus" }, { @@ -19502,12 +19502,12 @@ }, { "view": "gitlens.views.worktrees", - "contents": "Use on privately-hosted repos requires [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/).\n[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D)\n\nStart your free 7-day Pro trial to try Worktrees and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D).", + "contents": "Use on privately-hosted repos requires [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/).\n[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D).", "when": "gitlens:plus:required && gitlens:plus:state == 2" }, { "view": "gitlens.views.scm.grouped", - "contents": "[Start Pro Trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D)\n\nStart your free 7-day Pro trial to try Worktrees and other Pro features, or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D).", + "contents": "[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D).", "when": "gitlens:plus:required && gitlens:plus:state == 2 && gitlens:views:scm:grouped:view == worktrees" }, { From c06668aab6b0745d17e0585e158512290b168789 Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 12 Nov 2024 14:18:39 +0100 Subject: [PATCH 04/16] remove 3 day preview trial messages --- package.json | 38 +++++-------------- .../components/feature-gate-plus-state.ts | 26 +------------ 2 files changed, 11 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index 4e65e73325cd4..5f58fdbaeed5f 100644 --- a/package.json +++ b/package.json @@ -19338,6 +19338,11 @@ "view": "gitlens.views.launchpad", "contents": "[Launchpad](command:gitlens.views.launchpad.info \"Learn about Launchpad\") — organizes your pull requests into actionable groups to help you focus and keep your team unblocked." }, + { + "view": "gitlens.views.launchpad", + "contents": "Pro feature — requires a paid plan for use on privately-hosted repos.", + "when": "!gitlens:plus" + }, { "view": "gitlens.views.scm.grouped", "contents": "[Launchpad](command:gitlens.views.launchpad.info \"Learn about Launchpad\") — organizes your pull requests into actionable groups to help you focus and keep your team unblocked.", @@ -19363,25 +19368,15 @@ "contents": "[Resend Verification Email](command:gitlens.plus.resendVerification?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nYou must verify your email before you can continue or [recheck Status](command:gitlens.plus.validate?%7B%22source%22%3A%22launchpad-view%22%7D).", "when": "!gitlens:launchpad:connect && gitlens:plus:state == -1 && gitlens:views:scm:grouped:view == launchpad" }, - { - "view": "gitlens.views.launchpad", - "contents": "[Continue](command:gitlens.plus.startPreviewTrial?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nContinuing gives you 3 days to preview Launchpad and other local Pro features for 3 days. [Start 7-day Pro trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D) or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D) for full access to Pro features.", - "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 0" - }, - { - "view": "gitlens.views.scm.grouped", - "contents": "[Continue](command:gitlens.plus.startPreviewTrial?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nContinuing gives you 3 days to preview Launchpad and other local Pro features for 3 days. [Start 7-day Pro trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D) or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D) for full access to Pro features.", - "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 0 && gitlens:views:scm:grouped:view == launchpad" - }, { "view": "gitlens.views.launchpad", "contents": "[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D).", - "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 2" + "when": "!gitlens:launchpad:connect && gitlens:plus:required && (gitlens:plus:state == 2 || gitlens:plus:state == 0)" }, { "view": "gitlens.views.scm.grouped", "contents": "[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22launchpad-view%22%7D).", - "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 2 && gitlens:views:scm:grouped:view == launchpad" + "when": "!gitlens:launchpad:connect && gitlens:plus:required && (gitlens:plus:state == 0 || gitlens:plus:state == 2) && gitlens:views:scm:grouped:view == launchpad" }, { "view": "gitlens.views.launchpad", @@ -19433,11 +19428,6 @@ "contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nReactivate your Pro trial and experience Launchpad and all the new Pro features — free for another 7 days!", "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 5 && gitlens:views:scm:grouped:view == launchpad" }, - { - "view": "gitlens.views.launchpad", - "contents": "Pro feature — requires a paid plan for use on privately-hosted repos.", - "when": "!gitlens:launchpad:connect" - }, { "view": "gitlens.views.scm.grouped", "contents": "Pro feature — requires a paid plan for use on privately-hosted repos.", @@ -19490,25 +19480,15 @@ "contents": "[Resend Verification Email](command:gitlens.plus.resendVerification?%7B%22source%22%3A%22worktrees%22%7D)\n\nYou must verify your email before you can continue or [recheck Status](command:gitlens.plus.validate?%7B%22source%22%3A%22worktrees%22%7D).", "when": "gitlens:plus:state == -1 && gitlens:views:scm:grouped:view == worktrees" }, - { - "view": "gitlens.views.worktrees", - "contents": "Use on privately-hosted repos requires [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/).\n[Continue](command:gitlens.plus.startPreviewTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nContinuing gives you 3 days to preview Worktrees and other local Pro features for 3 days. [Start 7-day Pro trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D) or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D) for full access to Pro features.", - "when": "gitlens:plus:required && gitlens:plus:state == 0" - }, - { - "view": "gitlens.views.scm.grouped", - "contents": "[Continue](command:gitlens.plus.startPreviewTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nContinuing gives you 3 days to preview Worktrees and other local Pro features for 3 days. [Start 7-day Pro trial](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D) or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D) for full access to Pro features.", - "when": "gitlens:plus:required && gitlens:plus:state == 0 && gitlens:views:scm:grouped:view == worktrees" - }, { "view": "gitlens.views.worktrees", "contents": "Use on privately-hosted repos requires [GitLens Pro](https://help.gitkraken.com/gitlens/gitlens-community-vs-gitlens-pro/).\n[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D).", - "when": "gitlens:plus:required && gitlens:plus:state == 2" + "when": "gitlens:plus:required && (gitlens:plus:state == 2 || gitlens:plus:state == 0)" }, { "view": "gitlens.views.scm.grouped", "contents": "[Try GitLens Pro](command:gitlens.plus.signUp?%7B%22source%22%3A%22worktrees%22%7D)\n\nGet 14 days of GitLens Pro for free - no credit card required. Or [sign in](command:gitlens.plus.login?%7B%22source%22%3A%22worktrees%22%7D).", - "when": "gitlens:plus:required && gitlens:plus:state == 2 && gitlens:views:scm:grouped:view == worktrees" + "when": "gitlens:plus:required && (gitlens:plus:state == 0 || gitlens:plus:state == 2) && gitlens:views:scm:grouped:view == worktrees" }, { "view": "gitlens.views.worktrees", diff --git a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts index 8828ed6d75bab..cd413791d30af 100644 --- a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts +++ b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts @@ -121,6 +121,7 @@ export class GlFeatureGatePlusState extends LitElement { `; case SubscriptionState.Community: + case SubscriptionState.ProPreviewExpired: return html` ${feature !== 'graph' ? html`

@@ -128,36 +129,13 @@ export class GlFeatureGatePlusState extends LitElement { GitLens Pro.

` : nothing} - Continue -

- Continuing gives you 3 days to preview - ${this.featureWithArticleIfNeeded ? `${this.featureWithArticleIfNeeded} and other ` : ''}local - Pro features.
- ${appearance !== 'alert' ? html`
` : ''} For full access to Pro features - start your free ${proTrialLengthInDays}-day Pro trial - or - sign in. -

- `; - - case SubscriptionState.ProPreviewExpired: - return html` -

- Use on privately-hosted repos requires GitLens Pro. -

 Try GitLens Pro 

- Start your free ${proTrialLengthInDays}-day GitLens Pro trial - no credit card required. Or + Get ${proTrialLengthInDays} days of GitLens Pro for free - no credit card required. Or sign in.

`; From 327c2454ecb2f5701c09c8702a2dfe205412e12d Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 12 Nov 2024 14:18:53 +0100 Subject: [PATCH 05/16] change link styles --- .../apps/plus/shared/components/vscode.css.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/webviews/apps/plus/shared/components/vscode.css.ts b/src/webviews/apps/plus/shared/components/vscode.css.ts index c06e6459adb31..b33ad6693330c 100644 --- a/src/webviews/apps/plus/shared/components/vscode.css.ts +++ b/src/webviews/apps/plus/shared/components/vscode.css.ts @@ -2,14 +2,18 @@ import { css } from 'lit'; export const linkStyles = css` a { - color: var(--link-foreground); - text-decoration: var(--link-decoration-default, none); + border: 0; + color: var(--color-link-foreground); + font-weight: 400; + outline: none; + text-decoration: none; } - a:focus { - outline-color: var(--focus-border); + a:not([href]):not([tabindex]):focus, + a:not([href]):not([tabindex]):hover { + color: inherit; + text-decoration: none; } - a:hover { - color: var(--link-foreground-active); - text-decoration: underline; + a:focus { + outline-color: var(--color-focus-border); } `; From 4ce4b8faa9049ad8fb0f4a953b789f825cdc8e1e Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 12 Nov 2024 15:29:52 +0100 Subject: [PATCH 06/16] update notification for commit graph --- src/plus/gk/account/subscriptionService.ts | 17 +++------ .../components/feature-gate-plus-state.ts | 38 ++++++++++++++----- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/src/plus/gk/account/subscriptionService.ts b/src/plus/gk/account/subscriptionService.ts index 51afbafddbf06..4d6879d05cbd6 100644 --- a/src/plus/gk/account/subscriptionService.ts +++ b/src/plus/gk/account/subscriptionService.ts @@ -708,19 +708,14 @@ export class SubscriptionService implements Disposable { this.changeSubscription(subscription); setTimeout(async () => { - const confirm: MessageItem = { title: 'Continue' }; - const learn: MessageItem = { title: 'See Pro Features' }; - const result = await window.showInformationMessage( - `You can now preview local Pro features for ${ + await window.showInformationMessage( + `You can now preview the Commit Graph on privately-hosted repos for ${ days < 1 ? '1 day' : pluralize('day', days) - }, or [start your free ${proTrialLengthInDays}-day Pro trial](command:gitlens.plus.signUp "Start Pro Trial") for full access to Pro features.`, - confirm, - learn, + }, or [start your free ${proTrialLengthInDays}-day Pro trial](command:gitlens.plus.signUp "Start Pro Trial") for full access to all [GitLens Pro](${ + urls.gitlensProVsCommunity + }) features.`, + { title: 'Continue' }, ); - - if (result === learn) { - void this.learnAboutPro({ source: 'notification', detail: { action: 'preview-started' } }, source); - } }, 1); } diff --git a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts index cd413791d30af..3bcc4ffcf00e4 100644 --- a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts +++ b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts @@ -122,13 +122,34 @@ export class GlFeatureGatePlusState extends LitElement { case SubscriptionState.Community: case SubscriptionState.ProPreviewExpired: - return html` - ${feature !== 'graph' - ? html`

- Use on privately-hosted repos requires - GitLens Pro. -

` - : nothing} + if (feature === 'graph' && this.state === SubscriptionState.Community) { + return html` + Continue +

+ Continuing gives you 3 days to preview + ${this.featureWithArticleIfNeeded + ? `${this.featureWithArticleIfNeeded} and other ` + : ''}local + Pro features.
+ ${appearance !== 'alert' ? html`
` : ''} For full access to Pro features + start your free ${proTrialLengthInDays}-day Pro trial + or + sign in. +

+ `; + } + + return html`

+ Use on privately-hosted repos requires + GitLens Pro. +

Get ${proTrialLengthInDays} days of GitLens Pro for free - no credit card required. Or sign in. -

- `; +

`; case SubscriptionState.ProTrialExpired: return html`

From d35902a4e7eb1fc9ef7c1ae21afe81eeae5c9ac0 Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 12 Nov 2024 16:28:15 +0100 Subject: [PATCH 07/16] change 7 to 14 days --- README.md | 2 +- package.json | 8 ++++---- src/constants.subscription.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fe76ad68ecda5..54965230a5843 100644 --- a/README.md +++ b/README.md @@ -293,7 +293,7 @@ Yes. All features are free to use on all repos, **except** for `Pro` features, w While GitLens offers a remarkable set of free features, a subset of `Pro` features tailored for professional developers and teams, require a trial or paid plan for use on privately-hosted repos — use on local or publicly-hosted repos is free for everyone. Additionally `Preview` features may require a paid plan in the future and some, if cloud-backed, require a GitKraken account. -Preview `Pro` features instantly for free for 3 days without an account, or start a free GitLens Pro trial to get an additional 7 days and gain access to `Pro` features to experience the full power of GitLens. +Preview `Pro` features instantly for free for 3 days without an account, or start a free GitLens Pro trial to get an additional 14 days and gain access to `Pro` features to experience the full power of GitLens. ## Are `Pro` and `Preview` features free to use? diff --git a/package.json b/package.json index 5f58fdbaeed5f..9448e8328ed82 100644 --- a/package.json +++ b/package.json @@ -19420,12 +19420,12 @@ }, { "view": "gitlens.views.launchpad", - "contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nReactivate your Pro trial and experience Launchpad and all the new Pro features — free for another 7 days!", + "contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nReactivate your Pro trial and experience Launchpad and all the new Pro features — free for another 14 days!", "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 5" }, { "view": "gitlens.views.scm.grouped", - "contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nReactivate your Pro trial and experience Launchpad and all the new Pro features — free for another 7 days!", + "contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22launchpad-view%22%7D)\n\nReactivate your Pro trial and experience Launchpad and all the new Pro features — free for another 14 days!", "when": "!gitlens:launchpad:connect && gitlens:plus:required && gitlens:plus:state == 5 && gitlens:views:scm:grouped:view == launchpad" }, { @@ -19527,12 +19527,12 @@ }, { "view": "gitlens.views.worktrees", - "contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nReactivate your Pro trial and experience Worktrees and all the new Pro features — free for another 7 days!", + "contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nReactivate your Pro trial and experience Worktrees and all the new Pro features — free for another 14 days!", "when": "gitlens:plus:required && gitlens:plus:state == 5" }, { "view": "gitlens.views.scm.grouped", - "contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nReactivate your Pro trial and experience Worktrees and all the new Pro features — free for another 7 days!", + "contents": "[Continue](command:gitlens.plus.reactivateProTrial?%7B%22source%22%3A%22worktrees%22%7D)\n\nReactivate your Pro trial and experience Worktrees and all the new Pro features — free for another 14 days!", "when": "gitlens:plus:required && gitlens:plus:state == 5 && gitlens:views:scm:grouped:view == worktrees" }, { diff --git a/src/constants.subscription.ts b/src/constants.subscription.ts index a7fc5e5349e36..1dcef837048aa 100644 --- a/src/constants.subscription.ts +++ b/src/constants.subscription.ts @@ -1,5 +1,5 @@ export const proPreviewLengthInDays = 3; -export const proTrialLengthInDays = 7; +export const proTrialLengthInDays = 14; export type PromoKeys = 'gitlens16' | 'pro50'; From ca96bc2d6d8c0cdbaafc4f1202a300d6c59baae0 Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 13 Nov 2024 11:58:53 +0100 Subject: [PATCH 08/16] apply patch --- src/commands/quickCommand.steps.ts | 4 +-- src/plus/gk/account/subscriptionService.ts | 36 ++++++---------------- src/quickpicks/items/directive.ts | 12 +++++--- 3 files changed, 20 insertions(+), 32 deletions(-) diff --git a/src/commands/quickCommand.steps.ts b/src/commands/quickCommand.steps.ts index 72729c473ebfc..01168508eb927 100644 --- a/src/commands/quickCommand.steps.ts +++ b/src/commands/quickCommand.steps.ts @@ -2637,9 +2637,9 @@ export async function* ensureAccessStep< const promo = getApplicablePromo(access.subscription.current.state, 'gate'); const detail = promo?.quickpick.detail; - placeholder = 'Pro feature — requires a trial or paid plan for use on privately-hosted repos'; + placeholder = 'Pro feature — requires a trial or GitLens Pro for use on privately-hosted repos'; if (isSubscriptionPaidPlan(access.subscription.required) && access.subscription.current.account != null) { - placeholder = 'Pro feature — requires a paid plan for use on privately-hosted repos'; + placeholder = 'Pro feature — requires GitLens Pro for use on privately-hosted repos'; directives.push( createDirectiveQuickPickItem(Directive.RequiresPaidSubscription, true, { detail: detail }), createQuickPickSeparator(), diff --git a/src/plus/gk/account/subscriptionService.ts b/src/plus/gk/account/subscriptionService.ts index 4d6879d05cbd6..0ad5f9894ea9a 100644 --- a/src/plus/gk/account/subscriptionService.ts +++ b/src/plus/gk/account/subscriptionService.ts @@ -316,42 +316,26 @@ export class SubscriptionService implements Disposable { if (account?.verified === false) { const verify: MessageItem = { title: 'Resend Email' }; - const learn: MessageItem | undefined = isSubscriptionPaid(this._subscription) - ? { title: 'See Pro Features' } - : undefined; const confirm: MessageItem = { title: 'Continue', isCloseAffordance: true }; const result = await window.showInformationMessage( - isSubscriptionPaid(this._subscription) - ? `You are now on the ${actual.name} plan. \n\nYou must first verify your email. Once verified, you will have full access to Pro features.` - : `Welcome to GitLens.`, - { - modal: true, - detail: isSubscriptionPaid(this._subscription) - ? `Your ${ - isSubscriptionPaid(this._subscription) ? 'plan' : 'trial' - } also includes access to the GitKraken DevEx platform, unleashing powerful Git visualization & productivity capabilities everywhere you work: IDE, desktop, browser, and terminal.` - : `Verify the email we just sent you to start your Pro trial.`, - }, - ...([verify, learn, confirm].filter(Boolean) as MessageItem[]), + 'Welcome to GitLens', + { modal: true, detail: 'Verify the email we just sent you to start your Pro trial.' }, + verify, + confirm, ); if (result === verify) { void this.resendVerification(source); - } else if (learn && result === learn) { - void this.learnAboutPro({ source: 'prompt', detail: { action: 'trial-started-verify-email' } }, source); } } else if (isSubscriptionPaid(this._subscription)) { - const learn: MessageItem = { title: 'See Pro Features' }; + const learn: MessageItem = { title: 'Learn More' }; const confirm: MessageItem = { title: 'Continue', isCloseAffordance: true }; const result = await window.showInformationMessage( `You are now on the ${actual.name} plan and have full access to Pro features.`, - { - modal: true, - detail: 'Your plan also includes access to the GitKraken DevEx platform, unleashing powerful Git visualization & productivity capabilities everywhere you work: IDE, desktop, browser, and terminal.', - }, - learn, + { modal: true }, confirm, + learn, ); if (result === learn) { @@ -360,7 +344,7 @@ export class SubscriptionService implements Disposable { } else if (isSubscriptionTrial(this._subscription)) { const days = getSubscriptionTimeRemaining(this._subscription, 'days') ?? 0; - const learn: MessageItem = { title: 'See Pro Features' }; + const learn: MessageItem = { title: 'Learn More' }; const confirm: MessageItem = { title: 'Continue', isCloseAffordance: true }; const result = await window.showInformationMessage( `Welcome to your ${effective.name} Trial.\n\nYou now have full access to Pro features for ${ @@ -379,13 +363,13 @@ export class SubscriptionService implements Disposable { } } else { const upgrade: MessageItem = { title: 'Upgrade to Pro' }; - const learn: MessageItem = { title: 'See Pro Features' }; + const learn: MessageItem = { title: 'Community vs. Pro' }; const confirm: MessageItem = { title: 'Continue', isCloseAffordance: true }; const result = await window.showInformationMessage( `You are now on the ${actual.name} plan.`, { modal: true, - detail: 'You only have access to Pro features on publicly-hosted repos. For full access to Pro features, please upgrade to a paid plan.\nA paid plan also includes access to the GitKraken DevEx platform, unleashing powerful Git visualization & productivity capabilities everywhere you work: IDE, desktop, browser, and terminal.', + detail: 'You only have access to Pro features on publicly-hosted repos. For full access to Pro features, please upgrade to a paid plan.', }, upgrade, learn, diff --git a/src/quickpicks/items/directive.ts b/src/quickpicks/items/directive.ts index 412e02525f4f3..773560aa02344 100644 --- a/src/quickpicks/items/directive.ts +++ b/src/quickpicks/items/directive.ts @@ -1,5 +1,6 @@ import type { QuickPickItem, ThemeIcon, Uri } from 'vscode'; import { proPreviewLengthInDays, proTrialLengthInDays } from '../../constants.subscription'; +import { pluralize } from '../../system/string'; export enum Directive { Back, @@ -64,8 +65,11 @@ export function createDirectiveQuickPickItem( detail = `Continuing gives you ${proPreviewLengthInDays} days to preview this and other local Pro features`; break; case Directive.StartProTrial: - label = 'Start Pro Trial'; - detail = `Start your free ${proTrialLengthInDays}-day GitLens Pro trial - no credit card required.`; + label = 'Try GitLens Pro'; + detail = `Get ${pluralize( + 'day', + proTrialLengthInDays, + )} of GitLens Pro trial for free - no credit card required.`; break; case Directive.RequiresVerification: label = 'Resend Email'; @@ -74,9 +78,9 @@ export function createDirectiveQuickPickItem( case Directive.RequiresPaidSubscription: label = 'Upgrade to Pro'; if (detail != null) { - description ??= ' - access Launchpad and all Pro features with GitLens Pro'; + description ??= ' \u2014\u00a0\u00a0 GitLens Pro is required to use this feature'; } else { - detail = 'Upgrading to a paid plan is required to use this Pro feature'; + detail = 'Upgrading to GitLens Pro is required to use this feature'; } break; } From f152efb8daea545fed0e3143c4cf2ea81bfc924f Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 29 Oct 2024 15:26:01 +0100 Subject: [PATCH 09/16] deprecate current 3 day preview trial & add feature preview trial --- package.json | 9 --------- src/commands/quickCommand.steps.ts | 6 +++--- src/commands/quickWizard.base.ts | 3 ++- src/constants.commands.ts | 1 + src/plus/gk/account/subscriptionService.ts | 7 +++++++ src/plus/utils.ts | 9 +++++---- src/webviews/apps/plus/graph/GraphWrapper.tsx | 1 + .../shared/components/feature-gate-plus-state.ts | 14 ++++++++++---- .../apps/shared/components/feature-gate.ts | 4 ++++ 9 files changed, 33 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 9448e8328ed82..4b16f76472ca1 100644 --- a/package.json +++ b/package.json @@ -5726,11 +5726,6 @@ "title": "Sign Up for GitKraken...", "category": "GitLens" }, - { - "command": "gitlens.plus.startPreviewTrial", - "title": "Preview Pro", - "category": "GitLens" - }, { "command": "gitlens.plus.reactivateProTrial", "title": "Reactivate Pro Trial", @@ -10276,10 +10271,6 @@ "command": "gitlens.plus.signUp", "when": "!gitlens:plus" }, - { - "command": "gitlens.plus.startPreviewTrial", - "when": "!gitlens:plus" - }, { "command": "gitlens.plus.reactivateProTrial", "when": "gitlens:plus:state == 5" diff --git a/src/commands/quickCommand.steps.ts b/src/commands/quickCommand.steps.ts index 01168508eb927..39ca0e450b0b4 100644 --- a/src/commands/quickCommand.steps.ts +++ b/src/commands/quickCommand.steps.ts @@ -44,7 +44,7 @@ import type { GitWorktree, WorktreeQuickPickItem } from '../git/models/worktree' import { createWorktreeQuickPickItem, getWorktreesByBranch, sortWorktrees } from '../git/models/worktree'; import { remoteUrlRegex } from '../git/parsers/remoteParser'; import { getApplicablePromo } from '../plus/gk/account/promos'; -import { isSubscriptionPaidPlan, isSubscriptionPreviewTrialExpired } from '../plus/gk/account/subscription'; +import { isSubscriptionPaidPlan } from '../plus/gk/account/subscription'; import type { LaunchpadCommandArgs } from '../plus/launchpad/launchpad'; import { CommitApplyFileChangesCommandQuickPickItem, @@ -2645,7 +2645,7 @@ export async function* ensureAccessStep< createQuickPickSeparator(), createDirectiveQuickPickItem(Directive.Cancel), ); - } else if ( + } /*else if ( access.subscription.current.account == null && !isSubscriptionPreviewTrialExpired(access.subscription.current) ) { @@ -2654,7 +2654,7 @@ export async function* ensureAccessStep< createQuickPickSeparator(), createDirectiveQuickPickItem(Directive.Cancel), ); - } else { + }*/ else { directives.push( createDirectiveQuickPickItem(Directive.StartProTrial, true), createDirectiveQuickPickItem(Directive.SignIn), diff --git a/src/commands/quickWizard.base.ts b/src/commands/quickWizard.base.ts index c0fbbe2ced9a4..392faba0f9fe9 100644 --- a/src/commands/quickWizard.base.ts +++ b/src/commands/quickWizard.base.ts @@ -704,6 +704,7 @@ export abstract class QuickWizardCommandBase extends Command { return; } + /* case Directive.StartPreview: await Container.instance.subscription.startPreviewTrial({ source: 'quick-wizard', @@ -714,7 +715,7 @@ export abstract class QuickWizardCommandBase extends Command { }); resolve(await rootStep.command?.retry()); return; - + */ case Directive.RequiresVerification: { const result = await Container.instance.subscription.resendVerification({ source: 'quick-wizard', diff --git a/src/constants.commands.ts b/src/constants.commands.ts index 1e9424933e90d..cafae2cf499a2 100644 --- a/src/constants.commands.ts +++ b/src/constants.commands.ts @@ -150,6 +150,7 @@ export const enum Commands { PlusShowPlans = 'gitlens.plus.showPlans', PlusSignUp = 'gitlens.plus.signUp', PlusStartPreviewTrial = 'gitlens.plus.startPreviewTrial', + PlusStartFeaturePreviewTrial = 'gitlens.plus.startFeaturePreviewTrial', PlusUpgrade = 'gitlens.plus.upgrade', PlusValidate = 'gitlens.plus.validate', PlusSimulateSubscription = 'gitlens.plus.simulateSubscription', diff --git a/src/plus/gk/account/subscriptionService.ts b/src/plus/gk/account/subscriptionService.ts index 0ad5f9894ea9a..39ec190317b5a 100644 --- a/src/plus/gk/account/subscriptionService.ts +++ b/src/plus/gk/account/subscriptionService.ts @@ -242,6 +242,9 @@ export class SubscriptionService implements Disposable { registerCommand(Commands.PlusManage, (src?: Source) => this.manage(src)), registerCommand(Commands.PlusShowPlans, (src?: Source) => this.showPlans(src)), registerCommand(Commands.PlusStartPreviewTrial, (src?: Source) => this.startPreviewTrial(src)), + registerCommand(Commands.PlusStartFeaturePreviewTrial, (src?: Source) => + this.startFeaturePreviewTrial(src), + ), registerCommand(Commands.PlusReactivateProTrial, (src?: Source) => this.reactivateProTrial(src)), registerCommand(Commands.PlusResendVerification, (src?: Source) => this.resendVerification(src)), registerCommand(Commands.PlusUpgrade, (src?: Source) => this.upgrade(src)), @@ -703,6 +706,10 @@ export class SubscriptionService implements Disposable { }, 1); } + @gate(() => '') + @log() + async startFeaturePreviewTrial(_: Source | undefined): Promise {} + @log() async upgrade(source: Source | undefined): Promise { const scope = getLogScope(); diff --git a/src/plus/utils.ts b/src/plus/utils.ts index f1fd1fffafbc2..7989fd1519d6d 100644 --- a/src/plus/utils.ts +++ b/src/plus/utils.ts @@ -5,13 +5,13 @@ import { proTrialLengthInDays } from '../constants.subscription'; import type { Source } from '../constants.telemetry'; import type { Container } from '../container'; import { openUrl } from '../system/vscode/utils'; -import { isSubscriptionPaidPlan, isSubscriptionPreviewTrialExpired } from './gk/account/subscription'; +import { isSubscriptionPaidPlan } from './gk/account/subscription'; export async function ensurePaidPlan( container: Container, title: string, source: Source, - options?: { allowPreview?: boolean }, + _?: { allowPreview?: boolean }, ): Promise { while (true) { const subscription = await container.subscription.getSubscription(); @@ -37,7 +37,7 @@ export async function ensurePaidPlan( const plan = subscription.plan.effective.id; if (isSubscriptionPaidPlan(plan)) break; - if (options?.allowPreview && subscription.account == null && !isSubscriptionPreviewTrialExpired(subscription)) { + /*if (options?.allowPreview && subscription.account == null && !isSubscriptionPreviewTrialExpired(subscription)) { const startTrial = { title: 'Continue' }; const cancel = { title: 'Cancel', isCloseAffordance: true }; const result = await window.showWarningMessage( @@ -51,7 +51,8 @@ export async function ensurePaidPlan( void container.subscription.startPreviewTrial(source); break; - } else if (subscription.account == null) { + } else */ + if (subscription.account == null) { const signUp = { title: 'Start Pro Trial' }; const signIn = { title: 'Sign In' }; const cancel = { title: 'Cancel', isCloseAffordance: true }; diff --git a/src/webviews/apps/plus/graph/GraphWrapper.tsx b/src/webviews/apps/plus/graph/GraphWrapper.tsx index 9f95da0833fca..7b5fbacec75f0 100644 --- a/src/webviews/apps/plus/graph/GraphWrapper.tsx +++ b/src/webviews/apps/plus/graph/GraphWrapper.tsx @@ -1530,6 +1530,7 @@ export function GraphWrapper({ Continue

- Continuing gives you 3 days to preview + Continuing gives you ${proPreviewLengthInDays - consumedDays} + day${proPreviewLengthInDays - consumedDays !== 1 ? 's' : ''} to preview ${this.featureWithArticleIfNeeded ? `${this.featureWithArticleIfNeeded} and other ` : ''}local diff --git a/src/webviews/apps/shared/components/feature-gate.ts b/src/webviews/apps/shared/components/feature-gate.ts index 9bba2a5095de6..8715c3bdcb19c 100644 --- a/src/webviews/apps/shared/components/feature-gate.ts +++ b/src/webviews/apps/shared/components/feature-gate.ts @@ -90,6 +90,9 @@ export class GlFeatureGate extends LitElement { } `; + @property({ type: Boolean }) + allowFeaturePreviewTrial?: boolean; + @property({ reflect: true }) appearance?: 'alert' | 'welcome'; @@ -126,6 +129,7 @@ export class GlFeatureGate extends LitElement { .featureWithArticleIfNeeded=${this.featureWithArticleIfNeeded} .source=${this.source} .state=${this.state} + .allowFeaturePreviewTrial=${this.allowFeaturePreviewTrial} > `; From d37e33ca2477c19ff06056f103efc9520bb85739 Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 5 Nov 2024 14:06:39 +0100 Subject: [PATCH 10/16] add 3 day local feature trial --- src/constants.storage.ts | 7 +- src/constants.telemetry.ts | 3 +- src/plus/gk/account/subscriptionService.ts | 7 -- src/plus/webviews/graph/graphWebview.ts | 77 +++++++++++++++++++ src/plus/webviews/graph/protocol.ts | 12 +++ src/webviews/apps/plus/graph/GraphWrapper.tsx | 13 ++++ src/webviews/apps/plus/graph/graph.tsx | 7 +- .../components/feature-gate-plus-state.ts | 26 ++++--- .../apps/shared/components/feature-gate.ts | 12 ++- 9 files changed, 143 insertions(+), 21 deletions(-) diff --git a/src/constants.storage.ts b/src/constants.storage.ts index faada399620b4..8eec9bd50e90a 100644 --- a/src/constants.storage.ts +++ b/src/constants.storage.ts @@ -1,7 +1,7 @@ import type { GraphBranchesVisibility, ViewShowBranchComparison } from './config'; import type { AIProviders } from './constants.ai'; import type { IntegrationId } from './constants.integrations'; -import type { TrackedUsage, TrackedUsageKeys } from './constants.telemetry'; +import type { Sources, TrackedUsage, TrackedUsageKeys } from './constants.telemetry'; import type { GroupableTreeViewTypes } from './constants.views'; import type { Environment } from './container'; import type { Subscription } from './plus/gk/account/subscription'; @@ -77,7 +77,10 @@ export type GlobalStorage = { 'launchpadView:groups:expanded': StoredLaunchpadGroup[]; 'graph:searchMode': StoredGraphSearchMode; 'views:scm:grouped:welcome:dismissed': boolean; -} & { [key in `confirm:ai:tos:${AIProviders}`]: boolean } & { +} & { [key in `confirm:ai:tos:${AIProviders}`]: boolean } +} & { [key in `plus:featurePreviewTrial:${Sources}:consumedDays`]: { startedOn: string; expiresOn: string }[] } & { + [key in `confirm:ai:tos:${AIProviders}`]: boolean; +} & { [key in `provider:authentication:skip:${string}`]: boolean; } & { [key in `gk:${string}:checkin`]: Stored } & { [key in `gk:${string}:organizations`]: Stored; diff --git a/src/constants.telemetry.ts b/src/constants.telemetry.ts index f9483f00af88d..71b2365e3d8d4 100644 --- a/src/constants.telemetry.ts +++ b/src/constants.telemetry.ts @@ -413,7 +413,8 @@ export type TelemetryEvents = { | 'resend-verification' | 'pricing' | 'start-preview-trial' - | 'upgrade'; + | 'upgrade' + | `start-${Sources}-preview-trial`; } | { action: 'visibility'; diff --git a/src/plus/gk/account/subscriptionService.ts b/src/plus/gk/account/subscriptionService.ts index 39ec190317b5a..0ad5f9894ea9a 100644 --- a/src/plus/gk/account/subscriptionService.ts +++ b/src/plus/gk/account/subscriptionService.ts @@ -242,9 +242,6 @@ export class SubscriptionService implements Disposable { registerCommand(Commands.PlusManage, (src?: Source) => this.manage(src)), registerCommand(Commands.PlusShowPlans, (src?: Source) => this.showPlans(src)), registerCommand(Commands.PlusStartPreviewTrial, (src?: Source) => this.startPreviewTrial(src)), - registerCommand(Commands.PlusStartFeaturePreviewTrial, (src?: Source) => - this.startFeaturePreviewTrial(src), - ), registerCommand(Commands.PlusReactivateProTrial, (src?: Source) => this.reactivateProTrial(src)), registerCommand(Commands.PlusResendVerification, (src?: Source) => this.resendVerification(src)), registerCommand(Commands.PlusUpgrade, (src?: Source) => this.upgrade(src)), @@ -706,10 +703,6 @@ export class SubscriptionService implements Disposable { }, 1); } - @gate(() => '') - @log() - async startFeaturePreviewTrial(_: Source | undefined): Promise {} - @log() async upgrade(source: Source | undefined): Promise { const scope = getLogScope(); diff --git a/src/plus/webviews/graph/graphWebview.ts b/src/plus/webviews/graph/graphWebview.ts index 4a69e82a51d0d..712b884169186 100644 --- a/src/plus/webviews/graph/graphWebview.ts +++ b/src/plus/webviews/graph/graphWebview.ts @@ -20,6 +20,7 @@ import type { import { GlyphChars } from '../../../constants'; import { Commands } from '../../../constants.commands'; import type { StoredGraphFilters, StoredGraphRefType } from '../../../constants.storage'; +import { proPreviewLengthInDays, proTrialLengthInDays } from '../../../constants.subscription'; import type { GraphShownTelemetryContext, GraphTelemetryContext, TelemetryEvents } from '../../../constants.telemetry'; import type { Container } from '../../../container'; import { CancellationError } from '../../../errors'; @@ -97,6 +98,7 @@ import { getSearchQueryComparisonKey, parseSearchQuery } from '../../../git/sear import { splitGitCommitMessage } from '../../../git/utils/commit-utils'; import { ReferencesQuickPickIncludes, showReferencePicker } from '../../../quickpicks/referencePicker'; import { showRepositoryPicker } from '../../../quickpicks/repositoryPicker'; +import { createFromDateDelta } from '../../../system/date'; import { gate } from '../../../system/decorators/gate'; import { debug, log } from '../../../system/decorators/log'; import type { Deferrable } from '../../../system/function'; @@ -136,6 +138,7 @@ import type { DidGetCountParams, DidGetRowHoverParams, DidSearchParams, + DidSetFeaturePreviewTrialParams, DoubleClickedParams, GetMissingAvatarsParams, GetMissingRefsMetadataParams, @@ -206,6 +209,7 @@ import { DidChangeWorkingTreeNotification, DidFetchNotification, DidSearchNotification, + DidSetFeaturePreviewTrialNotification, DoubleClickedCommandType, EnsureRowRequest, GetCountsRequest, @@ -294,6 +298,7 @@ export class GraphWebviewProvider implements WebviewProvider | null | undefined; private _search: GitSearch | undefined; @@ -681,11 +686,58 @@ export class GraphWebviewProvider implements WebviewProvider 0 && new Date(consumedDays[consumedDays.length - 1].expiresOn) > timestamp) { + return; + } + + if (consumedDays.length >= proPreviewLengthInDays) { + void window.showInformationMessage( + `You have already used your ${proPreviewLengthInDays} days of previewing local Pro features.`, + ); + return; + } + + await this.container.storage.store(`plus:featurePreviewTrial:graph:consumedDays`, [ + ...(consumedDays ?? []), + { + startedOn: timestamp.toISOString(), + expiresOn: createFromDateDelta(timestamp, { days: 1 }).toISOString(), + }, + ]); + + if (this.container.telemetry.enabled) { + this.container.telemetry.sendEvent( + 'subscription/action', + { action: `start-graph-preview-trial` }, + { source: 'graph' }, + ); + } + + void window.showInformationMessage( + `You can now preview local Pro features for 1 day${ + consumedDays.length + 1 < proPreviewLengthInDays + ? `, up to ${proPreviewLengthInDays - (consumedDays.length + 1)} more days` + : '' + }, or [start your free ${proTrialLengthInDays}-day Pro trial](command:gitlens.plus.signUp "Start Pro Trial") for full access to Pro features.`, + ); + + void this.notifyDidSetFeaturePreviewTrial(); + } + onWindowFocusChanged(focused: boolean): void { this.isWindowFocused = focused; } @@ -1874,6 +1926,16 @@ export class GraphWebviewProvider implements WebviewProvider 0 && + storedValue.length <= proPreviewLengthInDays && + new Date(storedValue[storedValue.length - 1].expiresOn) > new Date(), + }; + } + private updateIncludeOnlyRefs( repoPath: string | undefined, { branchesVisibility, refs }: UpdateIncludedRefsParams, diff --git a/src/plus/webviews/graph/protocol.ts b/src/plus/webviews/graph/protocol.ts index f0cfd83c1b5e4..24c4970487b94 100644 --- a/src/plus/webviews/graph/protocol.ts +++ b/src/plus/webviews/graph/protocol.ts @@ -25,6 +25,7 @@ import type { import type { Config, DateStyle, GraphBranchesVisibility } from '../../../config'; import type { SupportedCloudIntegrationIds } from '../../../constants.integrations'; import type { SearchQuery } from '../../../constants.search'; +import type { Source, Sources } from '../../../constants.telemetry'; import type { RepositoryVisibility } from '../../../git/gitProvider'; import type { GitTrackingState } from '../../../git/models/branch'; import type { GitGraphRowType } from '../../../git/models/graph'; @@ -129,6 +130,7 @@ export interface State extends WebviewState { bottom: number; }; theming?: { cssVariables: CssVariables; themeOpacityFactor: number }; + graphPreviewTrial?: { consumedDays: { startedOn: string; expiresOn: string }[]; isActive: boolean }; } export interface BranchState extends GitTrackingState { @@ -380,6 +382,16 @@ export interface DidSearchParams { export const SearchRequest = new IpcRequest(scope, 'search'); // NOTIFICATIONS +export interface DidSetFeaturePreviewTrialParams { + feature: Sources; + consumedDays: { startedOn: string; expiresOn: string }[]; + isActive: boolean; +} + +export const DidSetFeaturePreviewTrialNotification = new IpcNotification( + scope, + 'featurePreviewTrial/didSet', +); export interface DidChangeRepoConnectionParams { repositories?: GraphRepository[]; diff --git a/src/webviews/apps/plus/graph/GraphWrapper.tsx b/src/webviews/apps/plus/graph/GraphWrapper.tsx index 7b5fbacec75f0..f536aafb54877 100644 --- a/src/webviews/apps/plus/graph/GraphWrapper.tsx +++ b/src/webviews/apps/plus/graph/GraphWrapper.tsx @@ -64,6 +64,7 @@ import { DidChangeWorkingTreeNotification, DidFetchNotification, DidSearchNotification, + DidSetFeaturePreviewTrialNotification, } from '../../../../plus/webviews/graph/protocol'; import { createCommandLink } from '../../../../system/commands'; import { filterMap, first, groupByFilterMap, join } from '../../../../system/iterable'; @@ -282,6 +283,8 @@ export function GraphWrapper({ const [windowFocused, setWindowFocused] = useState(state.windowFocused); const [allowed, setAllowed] = useState(state.allowed ?? false); const [subscription, setSubscription] = useState(state.subscription); + const [graphPreviewTrial, setGraphPreviewTrial] = useState(state.graphPreviewTrial); + // search state const searchEl = useRef(null); const [searchQuery, setSearchQuery] = useState(undefined); @@ -318,6 +321,10 @@ export function GraphWrapper({ setStyleProps(state.theming); } break; + case DidSetFeaturePreviewTrialNotification: + setGraphPreviewTrial(state.graphPreviewTrial); + setAllowed(state.graphPreviewTrial?.isActive || allowed); + break; case DidChangeAvatarsNotification: setAvatars(state.avatars); break; @@ -1531,6 +1538,12 @@ export function GraphWrapper({ { this.state.avatars = msg.params.avatars; this.setState(this.state, DidChangeAvatarsNotification); break; - + case DidSetFeaturePreviewTrialNotification.is(msg): + this.state.graphPreviewTrial = { consumedDays: msg.params.consumedDays, isActive: msg.params.isActive }; + this.state.allowed = msg.params.isActive || this.state.allowed; + this.setState(this.state, DidSetFeaturePreviewTrialNotification); + break; case DidChangeBranchStateNotification.is(msg): this.state.branchState = msg.params.branchState; this.setState(this.state, DidChangeBranchStateNotification); diff --git a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts index 341adbb4f2dad..06ebbbf70d082 100644 --- a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts +++ b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts @@ -3,7 +3,7 @@ import { customElement, property, query } from 'lit/decorators.js'; import { urls } from '../../../../../constants'; import { Commands } from '../../../../../constants.commands'; import { proPreviewLengthInDays, proTrialLengthInDays, SubscriptionState } from '../../../../../constants.subscription'; -import type { Source } from '../../../../../constants.telemetry'; +import type { Source, Sources } from '../../../../../constants.telemetry'; import type { Promo } from '../../../../../plus/gk/account/promos'; import { getApplicablePromo } from '../../../../../plus/gk/account/promos'; import { pluralize } from '../../../../../system/string'; @@ -73,6 +73,14 @@ export class GlFeatureGatePlusState extends LitElement { @property({ type: Boolean }) allowFeaturePreviewTrial?: boolean; + @property({ type: Object }) + featureInPreviewTrial?: { + [key in Sources]?: { consumedDays: { startedOn: string; expiresOn: string }[]; isActive: boolean }; + }; + + @property({ type: String }) + featurePreviewTrialCommandLink?: string; + @property({ type: String }) appearance?: 'alert' | 'welcome'; @@ -100,8 +108,10 @@ export class GlFeatureGatePlusState extends LitElement { this.hidden = false; const appearance = (this.appearance ?? 'alert') === 'alert' ? 'alert' : nothing; const promo = this.state ? getApplicablePromo(this.state, 'gate') : undefined; - const consumedDays = 0; - //this.container.storage.get(`plus:featurePreviewTrial:${this.source?.source}:consumedDays`) ?? 0; + let consumedDaysCount = 0; + if (this.source?.source) { + consumedDaysCount = this.featureInPreviewTrial?.[this.source.source]?.consumedDays?.length ?? 0; + } const feature = this.source?.source || ''; @@ -128,17 +138,15 @@ export class GlFeatureGatePlusState extends LitElement { case SubscriptionState.Community: case SubscriptionState.ProPreviewExpired: if (this.allowFeaturePreviewTrial && this.state === SubscriptionState.Community) { + const daysLeft = proPreviewLengthInDays - consumedDaysCount; return html` - Continue

- Continuing gives you ${proPreviewLengthInDays - consumedDays} - day${proPreviewLengthInDays - consumedDays !== 1 ? 's' : ''} to preview + Continuing gives you ${pluralize('day', daysLeft)} to preview ${this.featureWithArticleIfNeeded - ? `${this.featureWithArticleIfNeeded} and other ` + ? `${this.featureWithArticleIfNeeded} and other ` : ''}local Pro features.
${appearance !== 'alert' ? html`
` : ''} For full access to Pro features diff --git a/src/webviews/apps/shared/components/feature-gate.ts b/src/webviews/apps/shared/components/feature-gate.ts index 8715c3bdcb19c..41d962730b646 100644 --- a/src/webviews/apps/shared/components/feature-gate.ts +++ b/src/webviews/apps/shared/components/feature-gate.ts @@ -1,7 +1,7 @@ import { css, html, LitElement } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import type { SubscriptionState } from '../../../../constants.subscription'; -import type { Source } from '../../../../constants.telemetry'; +import type { Source, Sources } from '../../../../constants.telemetry'; import { isSubscriptionStatePaidOrTrial } from '../../../../plus/gk/account/subscription'; import '../../plus/shared/components/feature-gate-plus-state'; @@ -93,6 +93,14 @@ export class GlFeatureGate extends LitElement { @property({ type: Boolean }) allowFeaturePreviewTrial?: boolean; + @property({ type: Object }) + featureInPreviewTrial?: { + [key in Sources]?: { consumedDays: { startedOn: string; expiresOn: string }[]; isActive: boolean }; + }; + + @property({ type: String }) + featurePreviewTrialCommandLink?: string; + @property({ reflect: true }) appearance?: 'alert' | 'welcome'; @@ -130,6 +138,8 @@ export class GlFeatureGate extends LitElement { .source=${this.source} .state=${this.state} .allowFeaturePreviewTrial=${this.allowFeaturePreviewTrial} + .featureInPreviewTrial=${this.featureInPreviewTrial} + featurePreviewTrialCommandLink=${this.featurePreviewTrialCommandLink} > `; From 6ca913d724405a3d4ad43cab97faf177e9c14296 Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 5 Nov 2024 15:50:21 +0100 Subject: [PATCH 11/16] improve messaging on modal --- .../components/feature-gate-plus-state.ts | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts index 06ebbbf70d082..d70d3ef6ebefe 100644 --- a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts +++ b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts @@ -140,15 +140,23 @@ export class GlFeatureGatePlusState extends LitElement { if (this.allowFeaturePreviewTrial && this.state === SubscriptionState.Community) { const daysLeft = proPreviewLengthInDays - consumedDaysCount; return html` - Continue +

+ Start ${proTrialLengthInDays}-day Pro Trial +   or   + Continue +

+

Continuing gives you ${pluralize('day', daysLeft)} to preview - ${this.featureWithArticleIfNeeded - ? `${this.featureWithArticleIfNeeded} and other ` - : ''}local - Pro features.
+ ${this.featureWithArticleIfNeeded ? `${this.featureWithArticleIfNeeded} on` : ''} private + repositories.
${appearance !== 'alert' ? html`
` : ''} For full access to Pro features start your free ${proTrialLengthInDays}-day Pro trial Date: Tue, 5 Nov 2024 16:23:33 +0100 Subject: [PATCH 12/16] get rid of unnecessary prop --- src/webviews/apps/plus/graph/GraphWrapper.tsx | 1 - .../components/feature-gate-plus-state.ts | 22 ++++++++++--------- .../apps/shared/components/feature-gate.ts | 4 ---- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/webviews/apps/plus/graph/GraphWrapper.tsx b/src/webviews/apps/plus/graph/GraphWrapper.tsx index f536aafb54877..43e7260ab3054 100644 --- a/src/webviews/apps/plus/graph/GraphWrapper.tsx +++ b/src/webviews/apps/plus/graph/GraphWrapper.tsx @@ -1537,7 +1537,6 @@ export function GraphWrapper({ 0 + ) { return html`

- Continuing gives you ${pluralize('day', daysLeft)} to preview - ${this.featureWithArticleIfNeeded ? `${this.featureWithArticleIfNeeded} on` : ''} private - repositories.
+ Continuing gives you ${pluralize('day', proPreviewLengthInDays - consumedDaysCount)} to + preview ${this.featureWithArticleIfNeeded ? `${this.featureWithArticleIfNeeded} on` : ''} + private repositories.
${appearance !== 'alert' ? html`
` : ''} For full access to Pro features start your free ${proTrialLengthInDays}-day Pro trial From 46ad7caeb9f65602cade86b9b26bb0302cff2e20 Mon Sep 17 00:00:00 2001 From: Sergio Date: Tue, 5 Nov 2024 16:30:02 +0100 Subject: [PATCH 13/16] remove notification --- src/plus/webviews/graph/graphWebview.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/plus/webviews/graph/graphWebview.ts b/src/plus/webviews/graph/graphWebview.ts index 712b884169186..183ad9f95ce7c 100644 --- a/src/plus/webviews/graph/graphWebview.ts +++ b/src/plus/webviews/graph/graphWebview.ts @@ -727,14 +727,6 @@ export class GraphWebviewProvider implements WebviewProvider Date: Tue, 5 Nov 2024 16:54:33 +0100 Subject: [PATCH 14/16] undo commented out blocks --- src/commands/quickCommand.steps.ts | 6 +++--- src/commands/quickWizard.base.ts | 3 +-- src/constants.commands.ts | 1 - src/plus/utils.ts | 9 ++++----- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/commands/quickCommand.steps.ts b/src/commands/quickCommand.steps.ts index 39ca0e450b0b4..01168508eb927 100644 --- a/src/commands/quickCommand.steps.ts +++ b/src/commands/quickCommand.steps.ts @@ -44,7 +44,7 @@ import type { GitWorktree, WorktreeQuickPickItem } from '../git/models/worktree' import { createWorktreeQuickPickItem, getWorktreesByBranch, sortWorktrees } from '../git/models/worktree'; import { remoteUrlRegex } from '../git/parsers/remoteParser'; import { getApplicablePromo } from '../plus/gk/account/promos'; -import { isSubscriptionPaidPlan } from '../plus/gk/account/subscription'; +import { isSubscriptionPaidPlan, isSubscriptionPreviewTrialExpired } from '../plus/gk/account/subscription'; import type { LaunchpadCommandArgs } from '../plus/launchpad/launchpad'; import { CommitApplyFileChangesCommandQuickPickItem, @@ -2645,7 +2645,7 @@ export async function* ensureAccessStep< createQuickPickSeparator(), createDirectiveQuickPickItem(Directive.Cancel), ); - } /*else if ( + } else if ( access.subscription.current.account == null && !isSubscriptionPreviewTrialExpired(access.subscription.current) ) { @@ -2654,7 +2654,7 @@ export async function* ensureAccessStep< createQuickPickSeparator(), createDirectiveQuickPickItem(Directive.Cancel), ); - }*/ else { + } else { directives.push( createDirectiveQuickPickItem(Directive.StartProTrial, true), createDirectiveQuickPickItem(Directive.SignIn), diff --git a/src/commands/quickWizard.base.ts b/src/commands/quickWizard.base.ts index 392faba0f9fe9..c0fbbe2ced9a4 100644 --- a/src/commands/quickWizard.base.ts +++ b/src/commands/quickWizard.base.ts @@ -704,7 +704,6 @@ export abstract class QuickWizardCommandBase extends Command { return; } - /* case Directive.StartPreview: await Container.instance.subscription.startPreviewTrial({ source: 'quick-wizard', @@ -715,7 +714,7 @@ export abstract class QuickWizardCommandBase extends Command { }); resolve(await rootStep.command?.retry()); return; - */ + case Directive.RequiresVerification: { const result = await Container.instance.subscription.resendVerification({ source: 'quick-wizard', diff --git a/src/constants.commands.ts b/src/constants.commands.ts index cafae2cf499a2..1e9424933e90d 100644 --- a/src/constants.commands.ts +++ b/src/constants.commands.ts @@ -150,7 +150,6 @@ export const enum Commands { PlusShowPlans = 'gitlens.plus.showPlans', PlusSignUp = 'gitlens.plus.signUp', PlusStartPreviewTrial = 'gitlens.plus.startPreviewTrial', - PlusStartFeaturePreviewTrial = 'gitlens.plus.startFeaturePreviewTrial', PlusUpgrade = 'gitlens.plus.upgrade', PlusValidate = 'gitlens.plus.validate', PlusSimulateSubscription = 'gitlens.plus.simulateSubscription', diff --git a/src/plus/utils.ts b/src/plus/utils.ts index 7989fd1519d6d..f1fd1fffafbc2 100644 --- a/src/plus/utils.ts +++ b/src/plus/utils.ts @@ -5,13 +5,13 @@ import { proTrialLengthInDays } from '../constants.subscription'; import type { Source } from '../constants.telemetry'; import type { Container } from '../container'; import { openUrl } from '../system/vscode/utils'; -import { isSubscriptionPaidPlan } from './gk/account/subscription'; +import { isSubscriptionPaidPlan, isSubscriptionPreviewTrialExpired } from './gk/account/subscription'; export async function ensurePaidPlan( container: Container, title: string, source: Source, - _?: { allowPreview?: boolean }, + options?: { allowPreview?: boolean }, ): Promise { while (true) { const subscription = await container.subscription.getSubscription(); @@ -37,7 +37,7 @@ export async function ensurePaidPlan( const plan = subscription.plan.effective.id; if (isSubscriptionPaidPlan(plan)) break; - /*if (options?.allowPreview && subscription.account == null && !isSubscriptionPreviewTrialExpired(subscription)) { + if (options?.allowPreview && subscription.account == null && !isSubscriptionPreviewTrialExpired(subscription)) { const startTrial = { title: 'Continue' }; const cancel = { title: 'Cancel', isCloseAffordance: true }; const result = await window.showWarningMessage( @@ -51,8 +51,7 @@ export async function ensurePaidPlan( void container.subscription.startPreviewTrial(source); break; - } else */ - if (subscription.account == null) { + } else if (subscription.account == null) { const signUp = { title: 'Start Pro Trial' }; const signIn = { title: 'Sign In' }; const cancel = { title: 'Cancel', isCloseAffordance: true }; From d537ac56c380e8422e93abec29edb44e02c2453c Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 6 Nov 2024 11:50:37 +0100 Subject: [PATCH 15/16] Update modal messaging --- .../components/feature-gate-plus-state.ts | 22 +++++-------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts index 7b5b1759f8071..cfb1b3dca556e 100644 --- a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts +++ b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts @@ -142,28 +142,18 @@ export class GlFeatureGatePlusState extends LitElement { proPreviewLengthInDays - consumedDaysCount > 0 ) { return html` -

- Start ${proTrialLengthInDays}-day Pro Trial -   or   - Continue -

- + Continue

Continuing gives you ${pluralize('day', proPreviewLengthInDays - consumedDaysCount)} to preview ${this.featureWithArticleIfNeeded ? `${this.featureWithArticleIfNeeded} on` : ''} - private repositories.
- ${appearance !== 'alert' ? html`
` : ''} For full access to Pro features + privately-hosted repositories.
+ ${appearance !== 'alert' ? html`
` : ''} For full access to all GitLens Pro features, start your free ${proTrialLengthInDays}-day Pro trial - or + - no credit card required. Or sign in.

From 21ad0733c9b12618287b0f0a5c7e92c63d9b5cca Mon Sep 17 00:00:00 2001 From: Sergio Date: Fri, 8 Nov 2024 15:30:28 +0100 Subject: [PATCH 16/16] add tips for graph for each trial day --- src/constants.storage.ts | 5 +- src/plus/webviews/graph/graphWebview.ts | 3 +- src/plus/webviews/graph/protocol.ts | 3 +- .../apps/media/graph-commit-search.png | Bin 0 -> 92232 bytes src/webviews/apps/media/graph-minimap.png | Bin 0 -> 98154 bytes src/webviews/apps/plus/graph/GraphWrapper.tsx | 1 + .../components/feature-gate-plus-state.ts | 96 ++++++++++++++---- .../apps/shared/components/feature-gate.ts | 16 ++- 8 files changed, 101 insertions(+), 23 deletions(-) create mode 100644 src/webviews/apps/media/graph-commit-search.png create mode 100644 src/webviews/apps/media/graph-minimap.png diff --git a/src/constants.storage.ts b/src/constants.storage.ts index 8eec9bd50e90a..ad8a0bcca327a 100644 --- a/src/constants.storage.ts +++ b/src/constants.storage.ts @@ -77,8 +77,9 @@ export type GlobalStorage = { 'launchpadView:groups:expanded': StoredLaunchpadGroup[]; 'graph:searchMode': StoredGraphSearchMode; 'views:scm:grouped:welcome:dismissed': boolean; -} & { [key in `confirm:ai:tos:${AIProviders}`]: boolean } -} & { [key in `plus:featurePreviewTrial:${Sources}:consumedDays`]: { startedOn: string; expiresOn: string }[] } & { +} & { [key in `confirm:ai:tos:${AIProviders}`]: boolean } & { + [key in `plus:featurePreviewTrial:${Sources}:consumedDays`]: { startedOn: string; expiresOn: string }[]; +} & { [key in `confirm:ai:tos:${AIProviders}`]: boolean; } & { [key in `provider:authentication:skip:${string}`]: boolean; diff --git a/src/plus/webviews/graph/graphWebview.ts b/src/plus/webviews/graph/graphWebview.ts index 183ad9f95ce7c..3036f1b4b2514 100644 --- a/src/plus/webviews/graph/graphWebview.ts +++ b/src/plus/webviews/graph/graphWebview.ts @@ -20,7 +20,7 @@ import type { import { GlyphChars } from '../../../constants'; import { Commands } from '../../../constants.commands'; import type { StoredGraphFilters, StoredGraphRefType } from '../../../constants.storage'; -import { proPreviewLengthInDays, proTrialLengthInDays } from '../../../constants.subscription'; +import { proPreviewLengthInDays } from '../../../constants.subscription'; import type { GraphShownTelemetryContext, GraphTelemetryContext, TelemetryEvents } from '../../../constants.telemetry'; import type { Container } from '../../../container'; import { CancellationError } from '../../../errors'; @@ -2574,6 +2574,7 @@ export class GraphWebviewProvider implements WebviewProvider_x?{aG((rf3?ZG;%}~-IEscO69nuX$cXx;&9TF-!LGM_#hzK z;3>kSwBIA{=c48i4G=`^3Fh=HF21mF0%0UcN-xkIo~}KvU9KG-CLmzoC#@U;KMn&Y zw-v<#J|lU{UC*Y|m%|M+GxIVJv#JAhb>-p3My)RLeO%Z*|L?=|T>r)-jZMGz|9u7g zn}>zPd~-bC1RMH-O6+ZyFL^2)4&wgraWSK+I@~ct=H0LU&|ZsY7FdymoBi{#)KTu` z(S!*ij=-v723DJbT72*B^3M@4m;+Z2T=_f3AV)xK-BTf9@=n&75qg z7fbIO{Fob&)uQLY?9;~%>;K+)cp~}V(-IMitFkMP^8EK*@<91>Clq)JwJ=mbL!zNe zoY~Sg|L=A3vk{Caa5I`)aj2%={ru+T`dYd3Kd*D$Ei8rmVs9pWELTKn=f{UlH@fd) zUEjRUUaoeBeek_Gy%k_BsxoX=)u}dOM#rVXhq@AGtt=|ga4Fcf&RdM-2z_u^{8De; zhdI~mm~Z)p4Rhk(Q^!n^-}kZBeA8rk^{GUBN$hF?+U9+cRIc^$r5x0-$v#OUz@K;? zljwPY*Jt^7YW4^`nzWRJQi#sM{O1pb%?_FkZ@#ZX7)aO+=>6_4Q|B72vyrog6o(#0 zl9}T9Yk{*4)?1BOo~-pT!ITRNbKG@&ZVta55k9bM?MD%_GFs<2hjaaQI9%|m_kXx0 z5~xnm{Py0tbtU*L7re_Z;;}y=7qBsys2yoQ79|%;p%_iVzHzl2kPbX7nhxXWHY-s$ zrZ<_m_p=y1C|->LVz^H9V{ysv>p5{xUbl9t*m4veD9m&G}2&k66ZPOII7 zUyv-SjanD##?!pc{tN-*z8Owg?fH(SqVn}u9nF{3MnYC=y^)8;L~b)3pGUJ^D235* z8h?QGo=UrWNBtmcSK?@eHQCPlJ(jDvUmO-VpG? z3YJd#OSN&u_TP!vzk|;E?zo(kO|QUTGnV3oHfIKpRg}L;qm9N^fM<%q=eOl*tv*){ zLWwIM-4EtpjR|d0{R{wJAv6RHC+YQ9k8%$_kNsI9J49QEIi02G^-9QY@5BAsI0aqT zvfv_7j7^$}|BWoPu?5ciW)!%!ONBRo7Co1LQU;#o=xmJT8Xk5$`NtX*@qD=}n)#(G z2$P0{{Ta(;WlG+N(u<`ONV`1vJ(BI%&Mfh8-k_W(Dl6=HNYAQU{o@N_7$$KNL^f)> zJ%p7PlQ-Y>-St>B3LMU7)Gh)<3QV5;kp8F%&*K%khZs8r%b#T$#pm;MXkppEqCh9J z7V)22&Q3>a%C^IbRAAFtFYG>ZKz(VEoT(ng-L?yyn6I->5e6jLR%cUi5aa777@w2= zhLUM;G!?Vm$N53J-y^#I8O`*5H_K_Y;%PTiJrw|~jMCrgZ!WWmRzvT4{nI&Ke>zCm z>s>Af*A1sILvbkhChU@p6V+3&pb_e_L`;)DIF$U;J3~fWlnyOYHONq0j7UAu_KcBh zY#h=x>5S>){S5|nzD0w{uAcOQ`^;^nAX zze{}eXo)r3<@Asl65shA0$D9{Txdv%oBhv7mm`VOJ~-dgqp$^YJ>H+G;ZR7Ae!2K% z_;b87g7LZOe538{BTO>?VNB#mJKzCWNGu#J`_VKCc!9g|y z2NdSvuVy`HUTcv|MzV3Sl~Q!=8%fcxLw^71P4hh+pn2HL4|q&WVo)0H!IRji9`T>S zKimH7ci2km7VvbpT;bh@OC`7+I+d^e{L4}MQ`zt+H@+|acLchX59!9*-1v#6oq<80 zkkDm%w!ZkDPYxg^Mh`NegaND9Cb!@b^1P0Qf}Sp+&F9J^wif>Fc9+%L*yrld^$4q6 za-gn^aG`!H&u1xD4Z~|C2;Fk3RKC>K3D` zsd_6VraxYRY zurBCzALxTT5y4EkNr%7i7pJrD0wW*u{XaoCWx~SPE9?($vg6UAy+K{aGe~ii)4+cR~0%t{`j|G4WWL0>)a3KLTkkN zcr@aoJ#fL4_(4Mmu^J48;s6(s@Gc|E+wR{9l=s}a%GsEk=pVAQ}v((w820ad%>y6P{xEEhhACZJ_339q3f2A2BOEhqbXHa^_p+^nt}?Pxv0QErWV2azP>lM8Y@IV`kj z++H2!uS|0~@C~d|a4``%p+u6HzoZN({?zpDw@!!5vDZl->H0phMz9}#ZlKJ-4MAHN zSN97#bn?h=&eP0zccbZ?`No7}@h??m*XBQHBdV|f%l=i}pEN@U=dG_xKa+_MjpRkF zeIxSFrB(99{eDVWf1;y{fTO`!f#7945}y_0^y>3ldsX(s#YWqy7i@`WlJvCF!*~++ zWm-Irt($LRix3aztn>YhPxu|Fp>vQ_Nn|8SuzHj^jj^JO_bX~x(`rRO<#4Ic`H)R(QR6+h#BQ@P+g zaPZa?zoG>u)v76G>XKvqGT6NiJC@tBOG6q zkGPS*t#@3FSBswcOA;{ed5Hmt_wIu0_$$Mp12RFUf=c}cxvL&H@&&#|)Mdmq$+C@n ztIH-|CCTsZqpi`*;$V_Hh8o%@m!(LPN zPvW|6cZ#F>-OL-OA_R8w@^`9^p}5)kGwnJSeJSnr-dS{>qB}EE@1K;ee+O4M;s}b4 zH*qHL;Cg#=AA1ypmqE?NHO_s!x%06&6F(zlOmfZZ9H*V>Rb0MR7-s@Sy#h?D9UkO79 zE=W}un!=>g>Ln{O{Z(V~QA15l{3cX*s7`3Q{*$0&iAu3t>`$q&MCjK%3DpbtnG0>R zv8@+KIZOHtZ{8Mf<|w7Il!J9()~ogsPxn|X^aveN8!&afZ|@_GlNVZD`Dam^~xNps$_V0EpYBW#c&lHD=__5K8xGxB$P{2_3L$S>>upLOh5KFj(*r-|J z@mfaKsuazoDhX@Q5eUZw(T=N&KCG{^s(TKB{KpWKU7yEO6O{x(Ufg8+!^*wqi50jXsOnp2g z&~>#rDd*V<0Mn}4`d+=ggj z6JYAwU)Yw*@7H668&FJm#R%Ki^VfV5q_=-NcD%|D?D7`xQQNq_=CR>HDJ$^^YS#A2 z5%gJd?n6`rJ&ECJ8&rjdPe{QCAc&JFf*Ej~jc;9ueHu(rD+kTXIv+ua(E*uhVHTs` z`wCHW)Jt)}lOYOWt_mp_cQS51w>uwymP6kn4PZL`!v6wal3bugS`EhHP?wJ_LvBB# z)uXLl?G$^uKie(P$n@=nalviwN#w!K^kiei5%Df-zL0rZRc^drx}Y&Ud9s1*y`Ikl zwj0K)1#33R$~cG&ZRJL-Nnf{e29*7r?}3mfH*U7{tyOq2?rx=+l~E!RF%=KLQxp8I`FLLxvrg#?Lh#;7Mt2jasueY;t zxTg2>2aX?2_~z1kb_QLaySM2IXnpBDF)7!cCu&k-v!SJW!xdzIn=KpZ_FAHlRtvZj zYLMS`I@W?4*-=>M>*JfGS70{9Rf*_vM=czyD*|2pznQY-7fSq`0(`Y8FS1-WMPLdv zH>gzENBB7{jI%hq+?QC~RJAfWB9}otXChZ-jg`&HxaTPJIjO~1Cn*Wc$9lbW@u%ib^(4iu^!3vphOXA^Sx zg=+p={tu3>oJ}%qnLzT7KMX0R=IuyqPpuO!_}?9T`d+~M9z-FnZgHF^iQE@OEnlvE^CB{7@7pfi9y#VsRmIu;b_j)t| z_mT9ez;fLa>o{oo&1W8CC(TFGTHJo~CtFfm_p8UdT+_MnNTOJ6^#YAj0d8)2BQds5 zSK!0~yP30%0h$08^JPn>VNrZ03N~?k*0KuNs`CSw>xaurk~OsM(EMN7)Dw9b^YXdY z^Bj>_4}OZ6_B{lR)Q18^nC~#?MzF>jKR9W;oyDC`b~J1}Te0ogr>Vthl%aV+7Ppd0 z*Ggkt`G>bxQoM)pWQ_{^1O5Yo$)eX=RJov4jnPehh2RtZTI#&;wT9gOyJPOU$yo## zB<=uJJ0EW%9~}j&QhdDdsj9iS5gEoF$}=1kD~*8cKW zR-_AO8KDmcL5Dt{Xg%)|F&B(iZtK3;n5E)vXEyVnH|K(j!`U_z%%21cjeM%@w)v>z zO~COA;Njs5^C)VJlE_aAYWO4-x;3TUKOP^@7e2?wf*_bUTen}2+C8mW<%B&%<#Xo} zq4MSGT$Y3Cxw{vaza3F^oUzb<)AA*1?S_#WPnQS7dRJi)(Jok|$Gu{YD@I0e^A$o%#t6H z4lvY-xRZC`fZ4U_VG9>icW|4s<&7 z3w$P-j44xV>iac;8wi)(hs?nJP~>Hi29CFS`BPGF2i)n=$qs(Y$DNShZAlGm?ayGD z8)e5dN*DjDoaNYWrxyca~gYM}mV{lmc+JL$RXM@qKc zpDyi5i;CqnIK={o{DhF8!a!Xb(zIQfvbB&kL^^cq@Clw?3RNU)>_=RwTE{qL1XiJ@mi^(e2 zI>p*I#(Pc)nL$Pp9XyRqcF zf$Ushqsv@LYziEcUdA3O{=(GvOj-XE{H5!MEJNZvtiqrU7H$8vnx zhQ!t@@4U$!f2Xqh7uF9EpN@G0zZ)1an0O65&$w%qkUePx%Nt%ArzzHzx$?eXD&n zTXh}kzRy3YKizzuHRbppkpPho$qnTmBbYk_sEa}z@G<@IrNl?a6znFXj(HVd!=Ca? z>2A-kwbzvrKSiX7`5t}FnoeSbq#X_lIlx6L&*cl98QbPBdkNKSQ1G?xp5M=B*;#3Q z);pmeNo3RXa}Rht9c-Rl#_W{!OSS6=3UVpmJtY$V@85YU(5QZ5oA(Y}k~Kk*-ILK$iBB?Gbw!W)ls z@$1O!8T)XA5!dDcCHdn3j8K|V+8+8r!yr;GtED%0f;R~bKNUtqU}g^^yeWAN!_=@T zt#dBCB$=z=93;q<#jNIdK8I_WJcSBrDRUEtMBNl_Bn`2l=z5eM)g=`q*3q3td~*b; zu0m=xA?DzqP*8H-do#@J?rAA(s5BZBW3=iKn9lCP)^7-EL_z!?ef*j7KgKAu_ZC&a z_0F_B{>=u~-O!$J3Zuv&=jEAQ-J?YLc82bxOb%eZ-mB}75~($@nnnr*Yty`Q)=}E^ z43O1^+nau}A`0ddvKGd7iUv4xANA>VTm*CWYAb8nj4z32nZk5Q(jZFFCEmh?iT--@ zI)6SYXZ{d=@r#LNi4?bYNCq(7$ClP#?*i3jKst{-rUr+SihUJYaf@W6(C+DONs^_3%a?&nZUJ?h~!fXd{0Gy}@xdb@lli*{K7 zVGVA}k*C!xb8_JoyO|*ZWhtH9!o+BqS@u7?j^yv_fR!l_FMkSM1&|)@)B%1yP!E?J zf$P5o%7)GXq7%<+BCTzfB$BZIInLwnamp`4D@T!}NruKF2Zys>Xu52TRo&G1;#Q7A z5W=Dpu&x|imj6@k0)r~o4`YM&g<|S=O@TsClSUynUUU@-iI6OsXv?Dn^4`4b-im8+ zUc~>QjrR2Vz2>ORIYO>ci9(Ws<`h)j$_7d5?G@Lh;5Uq2q2Kg?t#)cJZSu^7A*{ET z?f+rXK{k38^VMS#4kJBXTM?%f$;A zl8Jd|&G(z2A@A$ujf;f_fY>Q6ee+Vom>m0ejDBF=Q@weMPi0C*4)zs9;#OrMAg-&o z9bli`_pns-!pb!kYg4@% z;=+dvqmZSFO{hd~QYzOsQ5t*3y6)RtcN^xyrG~-$o8m0VGIELL+CgoVLeuhsEK)%Yk#$4UN~qqXsEIS_83RQ> zxDEn^x}(bdXQ{?$1^I=28tlKF8CqQkbC;7o6=F$5zfySoxn43D+`fxNIBf<=Gqc2I ztNWVBte`+9lJYf!>U)}qED{NXJyAh41OKglEEhYqI@sa7bhebazR-Q)bn(qd8vCs)qiVx)rq_Y`( z<__{BCr9*saZ1l={7nxT|3~&0_q}0Y!Tq3LK6^1^1O@0@6qKM1&?)?za4}<>>hur$2AI0#_PG-8 z7YTR$h*ARb%)UsyCj|q^c6}Fu|bq{^im$y53m&*CB8bTPeU!uvr{0j`?+E9$;sHZiTo9 z0AF3P;CDO}(^@2PzX2XiCFmrnN@B}l{@VAX?`@;_)4eNkr6@pyTJCSQ^8ezr*41!I z%d~sedzfw#h)G&Q@1Otp)4;RvY*lpA6x7lXXljisog(|#~ zUg-yjRaRx!CVFSYs5Fqu26jY&ND=H8s14AAUZ186EWn&XRtpW`9) z%5|bZ%6l2V`MFY0IL?cSz_PqiOeB(E0tod?tNmQP%Vw(Xu$sh!n>3_el?bFaO4LpI z5tnw>ihht`u}Bt6=xV|Bh0|ukxVVTdBBm{ixkll9vm<9;6mhafvD{D$IWN-k>R=J0 z%jwP87M@SHeMA?O2^^ch?0&TLn$o6LI&(=q==9Hb){m@wR59y-bW%M-L&qx49d8=} z(gXCVFp9-dNh>CEc2A_&(yXWK?#qN#VVM5)I)^^1dlK{wQo+9Sc)PyJ%F5q5&OB&y z1P`w2tjF_e69YvD-+LwI3<~>`&QGq9x&5eRX!`Q$|00eY8we3jSu(i|=*a~&(H(NN zh`4X1A6lFy1d5M{=NEgc^&SN&FIoB#+byIU31WqBt{^*#6?=MwunuwK;S%-TP-EPOV->j6*0XScDh{=QO zyoVUlx0g9P?&}=_c0Q!fsI;VYQbjCRtH> zW#j%?rtAH&>u|lHAWERvMtc!D3T9xzKz8*fA$z*Z{C&(QAKeN;=cxXrL7O`DM8^ju;h~f zzsgP-2v4rP*qBYfext>Y=f`xhJYKHOXc-W}WWup0k21Q4JV8s-&Fy}7!`qX^pWpHJ zrC#=zQF(-y7f@9InB_KaCo16Sp?Rr!#bRO!VC~lLmj3|*A4S^pJr><(b_&>$e_b2s zzIIQ&g@FtepCR;`>@Bo5jE$P&CxNQ#EG%@-EA;A$w9C|`0NtW&ZI~v2-Y+oCa%KZs zv>Yk11?}I4)~khL-Ig-z!)=cqLr(8?J4W2Mnv&#w+)^tKsSbVD4R2icl_OOP%Vb)e z4*gOL1zY;hD^4t!1^kSvhX7hxr6FK{H_AIcXz1AXLA)wreA(~n^@a5gIPjzQ zsL5Z+<|T}yEh~}ZEX{=Xb!Ga8O#vnmqZe>KK^FbDmqUG0>Z?d~656_|WXK{83xdR1 zhizBJe(~I$k$*io|K}j!e>Y!dpwQEgzY=Jn&4nb`2ZWAz3S?}0Gw1sydEY_mnP&i@Vz5I@JwAk_XQ-Mb6e!)OZvyX5Y9sB~}N z!#TRvl%-duc?2WJ?eV52@xh)3D|hn}6Y0UHRS?oOWL}I%F`3gILtSg~|JWzG;X=AC@PcGap@+sbw*np{34)Ch9U!G*X&D2M) zXhj!T_HDRjUM)?`!#=(`KC45$Hf`*ve*N{W*oN3atnSNumL?fa^8jQtY;|V}6MV{~ z91lPmB#Gnr#KXdj0|((ySiEGJrgZ#P$P_dwZ7CUxOG3$|Lx$Oj@h5mqVM;ynm!zq5 zFA@vV8ew?Wcw1I9*z`BRz;rn2^Tm!kk-c#PY2|t(3+RMH6O@TOQtYNr0c(k>JdxAz zoP@@6IGO#^Fl$ZO31d3x5m+e+6A6K~mafT*4lBfM;F;%k$O=qO>|nM|1_vEakcBc9 z3o&T;5wBo*6VE?Qo0v@smMQjErTsD&m_qcMKqs* z53`+x71A|nyI+97tU^$wA%^g>+V>Rh-doP{gRtjCRb2C7E%LcAvLa-uHdv%QQ7`CD z)Iv1osQu32!H+9ua54@*o$J@M)jU~%kJ%)pQ?JuJF>45$phx~-Mc)?8QlrM^YCoh& z%{pR?5Q*{%Fa(otV-e7W;-O=a za$v(!X%pyD7-W09Iia^vLDsjS(tD0p#p#L^W)4}*jnt9+d&z3i zkC}`fM=#v!Mg7)MHS4rB^jqGB(5IK6u+cW*$E^4X-Oeaap5EkVO5t-v=(YH{R-MF$ zbQC|u2+9TsyHOqznxlkFf^3Xrf>rNL>#n4D35?RaLeK{&-2xNBR1-+ltxui^vy3C1 zK+KVkSm;;y0T=;UMyp)|a$h_1g(tbN&^2Q1)C%w$tjdZ}s#mZ|QBg1^-wd7fyURC6 zI+7UpmH;t}PmlsjYte>CFkUcK@OCKIPU%#rmoVpbFA@iR9PgdANmrr-NRbRy6qYd@ zQAV_2Q@)^$w6a#P;#%iqGZ#-9iN8ecy-oK(sS%8JK$yBdNSG?q*C)mJBT8tX^RX-t zZVunX1^sWvcOzvSrBm>@;!(gZpo!#KvDN% z7wHw{)=#EyA=fB;ETSE=aGMz86T2wb!rKv1oe=OJ1Yu?S5L`E^Cw?+WE)&s76H}$d*GQJqmZju9p#B_AV zr=r=rJvkBB_POg7;^b@u8dTwA#Zo(Jd=CAtvwB}!`JM7GN(1Sk3z^hu%F3DXc;#lCP6K!WFMkQQm9`Wpe>CXwyXNnh_N60-{*W7 zxTu>#Mj^lLE9owj_ZrR(K}60L9oy1npxc`KsUH z)U#lY3{0h6>ZDZknSgw^+$MtM3l)rO3I7j6>NZL!izTV1X=IIxrNmlH_b<~Ln^zFR z8W~$DG`Rj+T`{@b6PP{3MU&tRL|)zFw-TWWfUh!S=gUD|#F@NZuPgQ4N z4yMeS`sxYgGD^$uEKD$)VRD2gHT8lh@$^FN=F{V+F%R}pjlt`WK1@} zZgDFtu;hNWI21Xvge7{O|&`)2b{X&mF* zk-*!xRA9T|V8Z4v!ZVTQFW@Sp_$x+(@u^h40i??W`Gl)MAhwQqT8xJE-~AzuUM!W{ z>1jYvwj1n-<&;*nTcJ+0OSg;ebS=_ZlhKuw7t(-`6nvx?5coL+QGv1Ls7pgb!bozA zu}LGRZB4uAJKTfaqDWI`_Jb8xI6XiOZA_n8a z=G0)Q#8$w~yEesyZ1uba<8G2Cn`ck5+;4VCKwtGA>#efg&f@Ua%*VoleEp62#OUoqg$xW z`hrLkj>B)bt+-3l`pr&N*)3Jby{EvUTe5fwxZ#J(#y?#lP+pm*D5s$P;;5jB7D&#(&9IgCy%)z(unrgjix(AU>h%r*N6yIYD zsRX~0{Q}&U>cz6~-Y&QW*>jpA^1BnQ45ujP32^aqWESC6a^hS+y6_twuuBA;83ob6 zoBXB8u~8>>cub*`t6wrjl^YL+L+JDr)|iCJ9wc}jgI79*j^6xv7)9DSxwyV&Sek6N z94CXE4K*)}&bW(q_6G@m_KxNCWr*ZpH;5X=xb&90UP=s;1Nm8jJdGb8*XJ3}%Ihn@ zfdIOXySyBP#-l7vUCxckWHgaB**0f-&At9V!8)c9MS`u7X3K11f-@l%|9n|tXN|P) zB@0{+<3eKRDeNrw+fmT*T3>nzNKc-j@rZQ?Q@m)rf(jSbfoevQCf%aMw&S;5Ao5^% z6fuCF_@a=u;HEq`GxnTBzszSFTcfIIpKud zQ8neM9$(GP*?Vbe=FRCuLSx$`TY>i&W9RRc@n@Sk*WrN| z-gU6XodjEswh4rT-9Aly5Ki7b8Ql7%e~KI0X~WOojeKHDUa1T!ZQ=D>erK2z!g`q|qlz#>$Q+(Xf$ytYx}8k6p*W)a_mVGzWz%!M z&WODG1GneY(>is`J_@aDaZStY@hu`ec{Y^vx{0)$$;Bz&^7mIEhZNOwM5Y#5YTYq6 zPD04?YTLkOFXrpbaRmzFk|<83kpKttwEq*X`Xh_4M;$F)tCXzN>gHY8d{pZr1qs-1 zeknUi&!Qy;f9T_iiIFLSkQBO&VlZ$wG02Y@;S;=P;mD_8X|WV)QQB&&sdCS(EOV-+ zN@WWb8LDIZa9P&Di2FL+VAa0QqNj4|kQ>k)TA49ORWD$II@E0D zo#V9#_h~!;bip~zueNXu-G6iwrid~XSNfUDO@d_h^pcEXdHTJsMS@h;h|4{5)qXb2 z9s;?^)>SV3sG7+N(M<7P2D?VM;G8tDozZL+{gF zcp?Q|)FF7!mfys^`OYlAAoD`$95GT*%1U&&XXcr}>9Kz-3RbvXwBEZ(z48#;IMVxv zyOmc8%CrBlzCoi2`F`{_oA35mDapb2rh>Vlzvv_Nj57YVu>q1ZStc?IH(Gk?wJJjh zr2`Aq8bXB_mFRl~U8`F37-t?+;>2K7tU;hLW?h*9o1{khUxYX)I`PqhKk0@vJkeP} zQb2ApW9;uaEs7D&w+z3o}}4xYL@n>LO|C5Zpr zCr`B1{fUa{x*6zMi)+9ePGeG|ZhpPrnrJsv!#8viboJPrgI>XFU?_g0PSc7vO?enw zlb^P-_#bKtbuWXb5`jCpRQXq7Y`YvION_8g9;*_SY<`woTH5`^ukwJxSJkaCQ@x0y z(sg8UwB&cXl^=lC^lq{!jEF^B0S$+O2tW4ibQvAcyQjs?X7|gU#XOcq!Wb}H*DMRz z{ZjsS;of_b^ zI$hN8Pv#B$)(mIx5K#33=n*|oW+Vf!z;0R#u=JMzjOCVmQWM~u>5E@I_Z&k|7lE%{ z-kfgc%o4N9MiC``wwu}A0=?Xuaa8AK@wwdpi(QDn0zOiKazJ8irxEd}jM4gQHQi9UUY@Cw+z^xMNnjzvDH(g_5 z0{skdlFiT-GYb7TfNO;wXaDVFk*pOUMw{n|JB@qp&zg-ZuQ!Hv>7wa1J1nyF@5lh{ zj0gJGIhsK9%sExg=2rpQ#ddr1;#fq%b)kbWZ6bW;O|zG@9a~?4N7*_5_B~r*$FZoW z2&wy3yYG#gff)dYUac6k`?fmBP*=RL`_-Gt6Fx|+3|#Y7AW~5+0Di%ab3zVjY~aK9 zH=n88glDf#H(5*Ec6c02R4gy|=MK9X6@j6QDG7mx$ynzYbHy%msp{TiBdniy=ehTn zhXaOmX1qj=hdVqsX?5dr?eZkPck|lC^?%0mYnFMxPsp3!Bq%% zqUlB_i)KkJ;XH|9-ai}m-+2a|k{Po$-bi7L;+mfM4heUTk}0|X=F%Y0W@8C-zp=dK z&h1?PNO)RQh%ouex7})lgt&Y*jX6X-pBOR?bmm!}ZZNaFk(J%l0NZViJm+)SnxLy!qnW(P+Qu9lo3dmW zVbSBVOc?LEsO$h}#!{s2QS|nklk|Je&2>iSYGtbi%f)i^#7NRaU6^>?JnhV4kJuF} zp39=*^;jE&`LMj5bH^9AouXJ~vO~P9WLv*V5<$;HQQde}rLP_b=f-C~D0P5~RpI5a z)kwYskmyvp*jU=v%FjaVu@3S{FZ-A-2RKX%%I&5(U8?GEG(2JiX;oEo1T|a>rOINF zV+654rc?N`b^0(;%^A_(&5kn`1}S-FCAjl6$Y4w>A%vb*AbJAZpk#d_p>N?+JaNZxh%|9rR0-9TKMd~WD#5-yJWsJGwgsJ)`+ zE4SDmfEDf$^8MoB%+$uQk<%AuzX4!H}Tpa7xn&cO0Gwo7s4k} z7FQKZVIk2<{tVb6R)rx^L0A1bE@wq&yM-1bCj&9$#j2I#9hN0=QXyzNJwbaa@(Hg{ zcl69loGE;hl#Hi|sh316b%An1Du^zh&o&7&c0u8j9dhQ{V0%P0%T+W+!&Wsgu@PZ^#!{ zPn-Z|Sh|w$Y8hNod&xCeZUkkXY{G#u>(72U@yCthD+=K@#f%|0#T?bSQsI5wh_@w^ z+dal5jKi4FxfyL%q~f1{k@!_~%hq$&;j#4D500Ja>v!O~x$sA9k6>%iWsZ251oc|u z(b)Fz6on?4x5RZ|-eyZJ(!L*{tI( z!2~C^KfgLBHngqq5TZ&4N#qD=XXmc~_9K>gb<&$W@7Q-6SDmI555$g~4_mWB^XL!y zx3b@ABjIY-ir4RFm3*0cU+**4T=)9;%lLGgSSGXro4vPvC&`rK=_N%+wBOY7TE>35 zzbF#fZx`Qrs+tm9l9gh}pZBXADc55W^%L@E$T^LkaYGlU9(i`56JgKe#4xOZIdn)o zUJ5MQ;f3-2)Tz316ihIM8OcE*LQm6UQXSM(LW&H|nJXzxq|Y?MH48x?=V4i@hC z$vK!v@N8lzV|!VD5~YEs=Vz2MK zI#b_HFwfZ;gnV)qeKK@F2v1f8hhv4vp`%@7qazF8DfhmlY+3F~)TOQtXc?#Dqlk}q z=FUU~Qs?8qyTS{CP!$#v!}V6>xCmIXBZT=KmwdT-7^lf|)E_VK-osQ5h1}`iH{wl3 zUydoH)2M_3gC1}b6Nl#h`!}($=zcP;{_$>hI1o}Y}tPXUYK+lb5 zLE(=$xX5>Be#tpnh!sjoVS#pT*`-z)pr!_nRw4Tn@v?{5%=VbIG6wJlPu z?)+jrm_*p^;hpq;Hb2ayp9V^|jl9nJ1O4sqrmD1{%MI&>_dY6jt9}09{QLH{Dl2?p zH(DXOV=1r$LDc-3(V7TNb$N$F%FJ(1|AEh#pKne!kzd-iQ0L%X%|~x8OkGQMo(Chj zhxnM0l?QpN`AI_ymwR0^te+o{e&3AY9hL!Y-vg=JNNFy!X-JK$x(hX7~-OYf~-67rG&5$CULpKZ((j7z3J^tf&?_CR6z#5o!X3kgp z-TQeL@k0SK@p{pv7b(48md8E7zu#17?$iMeyFREMwSixsKYxEOxL6}KPgUBi%<2927m=j0Jf zZ*2{1IpK@S)V%2We-M3+kle$~mNg`LWkp25QCF(^_6d zZe6M|<8HmQAf>5!YHVzRkewmyWAJLH<8>K5;EK>uU`*PY^Vjz$btaKiD zIqTEM^ah04K=8P=vtk{BQ}_8fEkcT*6B6DpM?r*D_3MKr5x;d~PC)1{sjZKlmy@OZ zs!)Mk)eu^PYjzbv8UcoK!NJ|%2~-qCpTF9pTn>YEJ9eedTXM{z6K#M~WxQ9;*SH6M92eFhhEHOF-xQY_vN)HkW8aJC7GwN6{f;FA-IcStN{#1C zm^R)v-dN{4lQmBKAtSil15(ZOIS7f>KyHSv8fW7eA#VufJkauINuD)OaDQwvDdaKw zh8BHq5*Kj*Nc#enG>H zw8S1YhG3VLs=`0wiYe&VQDXM%oo^B@$xAXV(usj7xm>P~NI0Pk+}h|Xp`B>6f{3$Q#`>le&*=TLaRU|zbLeRR=gRuJBKM#r> zzoiDf2|jNNZkU%OZP4RDjW6wp#Nupl56nUu-tE71A0-R4*?%ZGf12O5EA*FNV+RO4 zEPJA}ACFLY5%mKhTb5-M)tkg#AB8^!-%q~nqvy3>)p@s<%q!@fi5ilOyYjOo>d&X9 z8!T1VD`ZgL7jL>r4?xl{9V{J{%4(2RB#ivyL)Z%=Ge2HB`7VnRqc z_%xDS6wB+Ed>yF+f^gnDfl0D+^>Ll}xU&95gk_PS!^_D!h1e({!of;7H8=)zC&{q5i@Y)jx}kLhpq?#e7o1NM%t zjtpv#{kw(uUdZ-ShJ^3iriI(2TSGq{iI^SOcy}Y0Bs&IWW-RNwH|Hq&5I4CP5_A!= zM-jDY&p#1i9B-Iv1s><=ewLsLQa?rz?FVb`3%q$V zezE)**^TE{Ey{+s=fKgx9Fp113E*{ z`@TT046z%a&uQ_QmVqYJudidee5N>te$M|6Hvs^M5P#LYQ^Fi)~K#;>u{f{DvR< zD3@BDyiFj2TN=HTb^m06|NV$Ug}jaIlefE2@BKcBi$W-8nM~F@ME{vi*DgYH@E810 zo1XhW4^|s^d-;r`KeEVdOy+mZb;aq`cqlil8Cm)pa=H-q-x+;^KXogZlYdK6bSI2{|kRG>MCyRAT_K5r_c& zC#vD72vKb3eYal|Eo)RTNAV5pn1_&W~ej~UfAbw@tMK*<``^(FfIV-2X-z3+`Wnb3y$)?HSvF6;|(xtM^adbJ;`w0WCh*U*|OS?Jp8^LS^swV zDl=Tu898!MgqR7p2CgN&mr+WQiP@mF))qjjh}kSRrYS#A>Aicodojx9a@sO%?Eh2* z1%O9-tl(|ayGzJN!8P`ufXF8Y{I2lZ6lJ~F<=4CG1*j_#g+_&z=1JEBD}!2L*gsI=Ow^8xCcm95o*Y~3MtI;jeQH20`#A*p_4r1+Ss=Fikq~ zQ6Pq>>q2R`Mwyya4dIk2kYHs5OsPeHe5eAXu1YpPydvu+6Z6XyDydfko`$Y^JQc9P zmXj}5>T-3WOD3Xy;AbcQkS+gVOjX={7jjr_jAywedypL*N%(*b|IYv(*jJj$1XF`E zJ+YV+@WL64=1BxH2&AX^y%h%|4C6mbRT8k7lEfFpGvFfvr`P;^)Bs#ct$!*1+6H~9 ztlOw9rJwAodM)-WZin-U4C=+-u4ew}<$zY_bTgMPr9kIRlA>+or71;v1DICzvo?{` zixrdEx^5-l(nDpc1#Kuo$Ql6fB=QKb*8yZaazNZqe7w6v)H0+lKLE_-saZlE2R=cS zz}qbsif(B|O)&L2Ohrx@4u-9$S9YX?%2htM*;rh7SK%5{kl+>Hw(WnGvO4nudIa7d| zQo+3PGg%K)AfbD626oev;w~uh{{L zJL7N6fA&=Ata?~KzA5Wov{?}^vUyDO{d}){z zH}VvPqzPu8ghrT2ru;t*^N>gV=wE8^l_ua4e+4~VY0)lL&SC_tn$2C9Hb0B;QPj7; zvBk&h0&fw4lG@;vKn@?1;Js&X+8n|2WsZ-V-r7I7lR!;%*F7U{J-7AXM>Q`MN5(Qh zLajLadmjGhhk-t_NslS9Iu6!6=HC7FgW>(nF&$v{Pjo+CmWw4_u)ZP${}NVJ_0l8& zUf{Nr*i|FsZ`-@3(8bp`z#Nd1&J|fdXjJpW*hb;3N;(2@Hz4+l%|+z0oKVa7e=bmt zLP5e9o1w?G6j&eSfXRYKj(du1|E;}G)ky!&bGF^ipTN-nPi9Vr}->1t!P=U|Li4{Rn8ioA~l4u5)5NL z3}bnch(tJy!In(@Qzs`JwVXtePziG307O%_1imqw@FF95(a|r>ImjhF4kzQi^WPyx z55qZm`_|I3?a@T436CuOxwu0%Yf9s1Ub*#WzeY)!LI29-WG4C46ifM-qa}->pkYp@ z3E}XOWc3M$1-*fZOe&^@s?P?77Qdp2(^Ama+jz8CV7>H^4u)+dz!1Jr7rrH>u$F(Or@c z>!lQH`HFqJCVH#)FAZsbBWg9vxqiU9tyD0!h(BeXNT)Kt@4x-r2H20e)0r3WRDVe5Mf>frV$skXwXNO-prN2k4KkxsKk0Q_Qhvqgj9bF0=@|@4 zgZe%U7o76g762A|lQk7=SxA*cDP_Tj0m(NEHD#t(CH^CcWNE&32)G7bM0c z$TxLFO~V-ilQQ-=B+YLIo#@G?5`YS9+`~z`aqOr7W_a+V6f0Xb*c`C&kw1og+?Xb^^Xyyl7FerQ@sMV`HiYlm%gbBA^Wn=(XK?2OyDcRrIcK?!4mu_ zo=d@o*Df(BPDEczpvD40x5=bJ(eO)PI$feoTVs+B>mj|@stB2&RkiTrx{CA0q{%Q* znpE|{ti*{sbY~*X@J&n>1H^Y;2AB=}q(?eaJ(66~=aZ{3I^qk>{*GlUiF#kX+2`_2 zxFQoVw9FOuy!M*D?3k~%mpo{I?bJMse&?9ECVX5L(Uyz8pg~x- zGm6|Jz_H3=x=`+3;Ld4?jvLsz)Xr2UNK|k!%EHjyR&PRgo?`D6R_5J`7HSH1292eM z?D#z5-K!3VA)V4ASst#558lo3;SJiu+X90gm<>{2U2w%RY}cC&OPG$={eQhRUn(>h z#>RHymMGVzr>i2K_gI-oji0fkr8n1PHe5co4E4Q!5MOF=@ZY#R(rp;Y+uIUim$a{I z*#I?{YHQzoSj=I@diNt@1sBAOk6nKAarX*Iy+f8_A#H*!Qu@gUZO_31l46K17*BBn z3Nm-9p)#3>udn|BY3bt;dhd+-WJq1HNTTGtn`Tz8)cUBxKr6i$li^J~Jf;kJVV}A_P43_-o^?@p5|P-2l!g8Aiw(m=&5yd=V})WSVy&bnko=~6{sJrsaa(L8(40~!~8|dD7BIf zeMQ`Q5uL3u0MdblarS8T2O;oyCfrQ*$VGWC3 zT$(_O6v7=OIjiX5lfy7zPAinFlD~LrXc>if5tAD~a&R8;##iG!_g&);VfaUDVnw!n z&%N)3)?sxlWUt8Ikn&T*IHd^v2zUa%?KRqWo9dE2>mK7xn%4Y9Dih+=Jo=t(`wc(SkYNodt2Az| z%ZcS~BQINx+<~++yfaiO!3Vn0RiYfFh~l*qCQJyXIP&1AhPnRglqQQ#NHvp}AF)n! zDo=!luS11F72K7oA6Y#&Skk(_1^YdZj(RAJqd2LLCW*nd`VTpzXU z7b#WNJoD~LRD2f?`4v*=w3Qk3*o_ln9|~6%c(U||9xZG%`vOQ#mab0N{15BwyK*~y zANSm*k3y2`y|?i8Cks5=-4;Cl5zUX2x;3VZkmD{8FwjV|e57 z{{;iBFdk!PC6GUQX*}RIknAY)0;J<1UH$_WCZ^jDzz` zu%X58BXGU@%vbQ?MPycw0ew3xge=-z(6oh@<@%KGv|Ilfb{ty|d28xn>=gcKJ^tv2O--CgwQx}cZgS2uQT~J1(Y=jkrQk;OIn4i=Wy^A6 z>IruwRiy?_OE&HV&pj0J$1xFe$>Q+WRSn7W?|!xvu0|{ z$)eZJld<0nWQEt7T-#k#28g=4dBn`^++RZGhA6A=EJ639<=20NR2STY7Lwg^9(i4Z zH0TZ0NDrKnJD$g5iLTurXz&H8n)PdXfZaf* z;?-<6sO}YuouI-za-3gLfTj`=%G;zox2d)IZ)oor>;1 zpXr}3W1Wna#IEJWK-F^|%j3&?MSTsrNcjI2%4C{5d9bzkxJ4||^ip1o{47v4CFnWp zxQF0o6^;|~%o^yHnQd0VT$-dDRVB<+)3V{iYtm;4p{!S z4~!P_r9STh)k)mVrbK5plgETf!NXtPPln|cibmE!I83td7N=Ih^@BE4IQ2P%$#m82 z;?l}FY_P7oEc7IJ%H5L{uX?AI?lQ&J^&G$*;JiEb z=kfgh1Zw*O5;o#}KLhRKzec_`rfL|Fb@cvbUh?xNGU#J~Q{VP9;2DgqcGW8VO!1Ua zCbQjda)3RP&Ml_eWGy%sXFkJ_=X(CAmM?2`x3i#%{U=H}ZCYwOG$$0PYw&vq><`(* z57vCN!$im%`C&>`wKkpS+6Q8G>&ysEmlWp2u3qVV%N38~gckq39imMlTo+8KdTREn z-P7|#^PxV5`foed;KR8V^SkA1<<~+`p2cHEY_v3fUHi5@Uj{YyZsMZS>X3_INOwxC z|MBkYya=@>UtQd+ukD!3#7nDyZ5)8ASwwdngq2gA0B`J-zpJl!>>rewrxYJ;yrUKS3?RXkn@WpN-=~`QB z=n$&cMWBlL(_a?l(t}M@m5JH~kGo~JbO%(T_QSzCMnR5uyE!(3Hs@+0vAoLEK3nZM z+X5a+m=M6pL1ZZgUUj$Rv7z37J7W%{U0?148;#85S1P>7ivKb>DaYr7IdMjv-bE`{ z!a>%~KG7cp)GkBp7HfN6S9+48df$7n4Luswl!XQGzaKLbX&;83iZX-OcBS6^O%62c zPFZ0UROt4(!K178zwCHc+Pi6{$Qg>s%Nc29%Z_*Me@Es~nGpPL=$0)zIjdJR(Xdx6 z6-IiLr%a29*L7Zl;r2k&-T5c;EaLu7A7)Gyx%ME{-BrBubaT*o@uznIYzAWXk@ls) zFmkc~#oFomU{SvUY6k7mah_EnWqr!wn>b(LsbmO*`fCUkHTe1Jw$M0R9RGru>q7Y~ zP9Qb1=fCePQU4D!Thz`n(RwgjGeXAb-6Y~T83o+1419Q5#(eaY-dL(HmEG~@ z)m;s-VWm2_veIcGud>|%ztM{Ra21+Kwd?;eW0R^xZMh9Lg-B_+;+-%yWqURgh0J4KpSC+}|b0 z!^lj|W3k)YKR?}{$GKYCy!V&8m=NqrWPfy2J7|a>E=nB}A2xqTYzyZi8VmVI_D#gH zuQRsc<>cR}gCFiAFl{&M>YN#6?KViA((E6!K+#zjeiC5B<@lbyw$Fb}+Wq|K=|9-? zwAYe%VPE5aB@#f5PIN<0rK-f4+F+MSFj1;ybkcV9A-Y+BfcvLLp?K1^D`b0)xJ3>D zmNEGpUGlSH_v-DN&ZjtAH^@H8#JtE>_Hl!sr(APe*TB6P)FVJvcg=572&0T$twPPJ z$uJP=qw(;;M;ep|!hCaKFWj9aY9pfPp#OMyNJR1w`yg^`H(R1I+^OBCEaQC;a#HWH zojQ>M$_KrNdi3}ma6K$Gw3;=v4JLPfSr_Kq4jgR6`0dgS8-?wO<4)4)h-?@(#cvsQ zNBR9$!f%{8op5@J;~DJg_4}H#D~!Nl5rLbOrrc`zdCP3U!LZY*0zIa&Qd^TqgM|(h zqN1vLx+BDzOt8?hDbUOFu`nObe{)%~Qw295@jQ6}8PYy!Q#>8*6=@q8RGx)j&-q*l z3|}5b(m4RL7BQv5d|%erarflW_o=Kb2csZu*A%PEx6*eWS|||G`*fB=ZJe#yfGf@C zChH<%-*r)yo0F`atD>~~K#DJ+psO8JR@oQ#ISy-DQ7FF7QFxrA)ynfI3( zN>+U@$J1YABUdE}-U3rgLc!D&r_Bv#nQ=(~qup2!ddQ;=vItPiPU1OimRG#OT4NRc z>4z_jh#AJopU~&1{lRr2RG?LoKABOkPav}zC>-K=5-lVN3P zghNpzZhTS2!W-VKCeQE)IiajGohk#}r8cuvt^;t9eA=|~_4-y&$@CBCgh8WD?2ljW zlW&9IQ8|^WsxGN43og_jlFE|&V@PVee$hfQ*e+A591D7AuK3z-PLidYtoZ{|K3Qv( zljH1;B@^L}>|ZZ}Eo+SaP3!H4s-Gk97|F*E=H^Se;pKYOQM4m;&QVbIIhURhO|=$l z+;RPsh2)HH;5Oy$<$AMFu9V=SHXKAg+oiuZh7=PtOi5zh?}buyR)LTO@N}s+E#0LB zS5Z1z4En+oFs{_fg!^js&+PuB;99#aGb+twjmoma%$e>1NCIB<*4dR3zSa5fX|2PsPoOgxT|*6&mcgqMYoGA7JBD@ao@3_~|hMg_~be62!@o#Ata+YxloR4qQS zl8H0;Nf+e=I4ZMCyhQKVohlt|^(JbJ;ybQO%z6d%Div=~S_kTr8+t{=sakIE`2C7h zP_@hV;HxFo+BakKpoW)s+tFli3k7EnQ*AnCf{rc`FfFiMwf>wCh2~Vtsb(8KP zBhL6=aeI(-PhOU}^iy37mRkKdUS7SI_|o3aDm1tRY{Y(P8g6sYS-;=+Y>&$6lw@_Y z@V{Ppc@ZH5yBl4Qck}3KHw1Z3yOnnDiK(Huwo3Uu`eeqKejPRif8#`OZSD5D=jDs& zP^x}9?N*-cx8#ZUVLheCZ@X7nqt~tvTlKKOe~LkVanM}zE=p7#f1ZEv1!mPZZA*iP z!r5vaT5>#^H(0@oZ;MM*F>JKxSuEGi6SzH&E0uSqiK>e1R;_8R|NcaqOH0zyLD^$HI|3b6-Zh!{L*lk z649;JYY!=Qw6G>yvnK=^vN@AR&dPIiUg&$6J*r~h(S_2E%X%BTOd3Ql_LEHL7g=7{ z1jR0NuJs7Z>!hK}Io9WyQzukuoapY93+G{gqjhSE$N6hBE{%}5`8+k0l#g$j2dz)c4Jm2_BcbIpJv1`og z_IK%>>KXZa*JiH2&k^XD>W9H4H%}r)Mr~McTA%|}?Dp|7@P&=wlv6@L4dGxC5 z9!{SnNql_|)LPNF-HC32s+jADiTvdkFJzAKKkwHwtFew({6FXCJCC@DOr-R~4Vipy zNaG|BFGrqW2J~JR+euF+K7!xMlpNCyF1E+Yq)|+Ugc7Jqloy7|TqbNO@pIOcQ>t~D z4*4ABN-J-37vb)-RGX549M=$;7INykoKgd@M&A#ohOa_S)}arqsV)+iqXD=~2rJm- zhc$9NzFybje(mEc&BOIPHm{~|kzxoD##2cf@3XoKSGOup3<59pD8{hz+^GMCMYyBc zXsF9LMGC>e3aO*us`U1Ugt_o9h;k^!B>PTWyF(^)2_*cE?8?e)H|>^izojN5j>iNQ)$191A6s@Wo?E5|Y%5LLiq$hTPSvT0#n$KuOT!&?9sSBAu^4($rcW5D)k z)$ywnGK}sG=55yrGZvo+sB-}y$C=*5OPb94NHOVFWo@)$)GXbW^1mGvNH6WGY|kZ} z4HxE#{MOn&qAfJTqZjFavc=-Gmk(#vfLLbmswWpVf^d-@*CQ9mOEJS2Q+r!x6o2?vh?`H6S~7nHW1c}({54$mPDBth@+jfyCi=J&M#i6bF#-`^rKht&F1h?~hq+7wBtA^0(+f zp*HkSS@w->NyPoWySv?);$S^He)T0V#6WT15*L!9IoW|4Y;s7_=e4E?&O3h9NuJ4>zGwS5n)|QCw2M+=U9q)W%S~I*OK_c0mxvQZtmt}{ z@|84u_ielfjsfN`VAa$Xaw?P9r(}E;96(m*dQ9uJ6n=@Y_5xd?|FmX}&CHTzT2zXD zF)Em8LCA+k+ePz+jLWbj8I6ct<9q!JWoeI zM2YJ255JLh5Rw}aG23+A8DaO1uJ2&~Zs~Z`sqW)iE=Rrj_?sqJ|Jtdn&G*y6S>B)q z$UWM^-XfjYN!1S5 z*?e86@W#bBL zZc*KMuSlMV+r1B^EUofkNHwC`RLRj}ki1W!3D*y=rI;BRW{`)2KV?&4gK>TY5B1Ep z%tmNuE3MpE=MP)YjSe;LD-^j54lpXZigkm1;WLg_QyqWn=*y`%K?7=KYDGyOoRt4G zXFcpl0{ug#v@3Y+6HF3|%eQ8`61G_P)vdQ~dd?230LB}?S*ujb+hB&^D&pDHapj--t&}ktaT1tG^USdr_vQp(3rsXDDFqFWocvk;NZMLl;p!1H znm!H>kvJ8TMNi*h403fO`9&*|qjr8UqCD4?!B31Lf)$4ztayU2H9*hWG?+o_(d2jrWf3zRE>8 zuCTa~7)WEWc^!#>!9GF)-EN@&tfj}gsfO3h4W0;=tu_s2oMxdE007KP0~#vZWFHw8KU zLTZT-Jf_OyY(YpPUj8e`xWBCW#C)k)^A%q$!^>R^$)3J5 zn~3lJX<7TFVVe^&{ASqL*q$&@h|x~fg%yeL|238 z12XZiyf&{4@tBR-3QE|fA)a_J*WW{T%3uEI0vd-uce>!M?%36@)RR_&feC}XzQ(E_ zq9~&8AFjIRe8UDKBpb1Jw;_?Dn4s22uLRLr$NDeqF%NwkbdUr#I6)Z#L9OW;?NY5> z2`eY3voUUm*V8h z@8XXX`E=MEJ> zGbRJ!N^5)Oi&ubkMCH=B4qFdEIn+9h+S3KtPO0`OO)L=$ySBN0Gd8AGHrkVHq+dEA zLYBbGaait9XVjoSc^!8=QMW?q?oW`$*&k6Jr_OG?s)@}WfUA(KrrBvQyy+BWDnb4Q zEsa~3_1lVGV!PPl7Ne4Nmk-oPx5=+SgH>P8zVr4KxI-ODsqbW*0^IoXmB%Q}+V#^m z__7F$^VPnsHe=OkDfr~}4;n{EW~L^7qYX=op?BV@&$R{P*^#B&P_83j-(0&e{{O2vCLE0NdAmez@PpKzLD%)>c6gnDb-8Vmf$I-tXD^Z z7!Ip0O|G_DG9=d6syHc1$j{04=D33{V^_g)q8O4)nOD1O$P50fLk47g%gt`PC+0Q6 zfAX(o9CutRCK)`=d1fHtCd((a7dnx;OOV>GM^|#w zxEUkPo|in^ZLajUC6nQCAeY;IJ409U8Lm20G*`to6lwgF2M!Heqln>i;g|CRU z?%sX%g7uK<@ujp+h^X>xM|tgKk?}B^#8=?wy(9mOuk%PF(@c%jg+xyG_8kg4h1DkhPo&3k!ag~)A4g?p9N zaqgENKXp`@7(I@-GQQcbKXi?%d>XKU1}8(k@Nn*)P8(VWoFJyf4=`d5DLbYaoTsA< z8XI0~@3eMS0sZn61_}&gm+T}4BB8BdhAn1p7v)4jYq8-|Dcyajg{voeTmuI5ZtnC= zDXR>rdN#<+k~Kw@3s07Gf$XUe@);K|oYB&nC$RW7Jy{-KdqtWNSqpN*KG*QEslHB~ zHhrD?ufkKO%{=v{Ng7eB;E)_Ym*hzu!ZQ-gHDcDT2g_Kv#egg_w#PH z&|w)BL*_$X+r(!Cx{&}Wn?k>}hhGpOU2mOyK=D+rw z>c7odFT`CQFa}HV#2tpyH(>ZZkH3|KOTS?!aTqTiKY6M8xrCb8s7V@~A1e|UVV6ap zlwgY7W3DGxRqgk)@!f&Xct(FxhhMME$URFP27%V&iU;!@ETl?*r!&U~sgE6dGVvke zN!i(SB|SQ$NVeyd{rk;0<;2yx2k21E>6_;wD()5c{=Yur1`o|}^3E>F2&eT*MNjr0 z$roW4-q(kxSp|d{vkn`3brX9mj<1%aLEUx>_Fk6{Ic{wfGmLOTG1WwfS(lEc({9~G z<$9}}{GeFi47)PDVsCqcpIMfkf`o=d!KXZgxIwp8KZ5r{JXVX1Ud{_UBv}Pqx=;)v zzR~FS6Ei_2k|uM`1(~PMk1c{jZPQRyRiyiU;6y@abt@BVgJgXfBO*wG>;%hs+fW2k z@Hh<9)?C2yyb8>5+u!^WLke5y&LN**UvoOzg}d1~)wt6lCu7jm=}=0ai#~vYe6MH6 z>z#YG%0AbZ`ieLfju~`}gxk`@LKmijU|n{*MuusBX9gWyn_UC5R{#~nkd1Bk$97bi;tzxA{H`mNahcT{;|$=Bbc4tKOUuzj^6=3}k6{r9Km5g* z++;TIb)F$Q*MDR9iBMh^q$Z7LtHY3tOUH&{6sdm)Oi}V2N-QFAlZ-=@QJ~5!0qm->8_#z*d{&Z7 zOvM)g_+3XOatSK5V}Mh@TMfbNV%QZRXJU<6#CGD}wgVkxI4>Vkx65LEMt>4UYRD1^ zT4Y~&pW9~+C_8-60PgIZxW!#MGP1 zD|v1c-5xak`ZD(ugSQI>e(L0zO|V0T|Zc-;@9#)Be} zX`Ii{4A$vPg-X=JCz)bQqlYV*i=n2q!c!aANMkV5HPMUkLFm0zobT>JfVbIM9F{AlAUgDf6j%~Xf@^H-nG%1Q z)Wy|h+e?JI`n1Mc)4t212!BR2WQgxEdZR}>Zb-}K_tZ{MLMq@wl5&s6D_1t{qcIsE z(%vxI0S>m98+mM#$h)z%p06YXgfpNoHPFw2J`#VBHs2iacSUuZJkacoSdP^PM#_b) z+b|r@IT-ppHQctJzy%cgiHF0mxXhQYXnkn2>G%#Z={O~%D$xe}*n0VO-_w5< zcTO&+RHdmHGO^75Td7m?JK=BNbZsBWG-hO|2KWFTBE$&k5? zErs%J7O6lF==wk`eIGWkVXOrhxY_gPndyGo@i#}j%X%q@$*<025E@;$+eoIx8yWMp z?L?5I%3RXzy4bFM*sWt|R1>UNC+>$JNON70}AzzwWntmhN!;TvRceLA5&lQuRwFhMf^COQC8G zi{ekwxx6mtBjR^qK~yNVtCjus<{Tx}+kMvtb$$&f2;01zoV=1N@ea|#B&5qk1=C!s zBGe`CreY)+HolDOy!V0Y@`RVN2tsEO^WO|P$rwScBg2*k< zoYrk?_eGCv3fXpa6HC%OArajq*{TWA03=-C?L}9(JLAhOiM=67{(HJuniNQ8RJj>G zKx@51$MoxXm4#?xNh&lc)`OeXvG41TnLW^yrAUvbl#V9>&r~#wPn2%H3F7LXagosnllqA2^Hmi6>Cg)KSepXB~)3sUQL#pHmij)YYccn{p^C3kgiPzlI~X*jUn{WEfF=PZ1#7Cc2AcE1W^ z)~i>hN|L=dYEecE4-ZS?>n3FAgr^lL>-Y+L_wv~HITzF7JE(TYbiih6(m$avrm!-Q zr1Pds%~;A_wz*k6%~ug&CF_3CdsTs}Y+TEasp@uMMwtS1qUrk|3vBPcRy;MLW4`9L z6VR0e2wQQ;y#olxQRPk1DgUsS8SwZ%y3FiK4bhUqfH=I%O* zrop3}B?$d~qL%I)cTFDG-@}qOTz>;x3vm3d!8FinJ^D8#{yYGXr|AULS-q}3E;(r> zLsrXKW|k&K+{6x50rRKkz>5VwGmGu*BKuj8cK*X%{V8BLXepMq06h)ne*cchwBV2w z-mu#S)EXHdy$QKMDdx1YrlRiB0}ANY{}q#nUow$m)v~hF6M7Enku1e@`$90V|8lC@ zYNBPrjk?vB zSh(Y?lf`a#=W%EGKWV}t|Np+BDx+q=W>N|d zk7p*<8l4jM+My4RMWd4IqxFd8Z)SGrn&fHM_ax6*Lwo!V>}9c zx*gcE1IOyrqosz?e5puRRfJwy#wGOA6k(qh*`NwDtn^6{-ZGycl_UHABuZps3~tYd zFLzWr!VqQhX-pT~U3R0)^O$f3p7Y@5PVj^+W=fT8^GKaAZN62<&gy2M?eqViL}Uff zWhp@az>g_x#uOp(8uet(l=In2j7icT^uyV&jQ^9ToXI*u9FcdHs>Bh?nq=oB04Vc` zmAddbmkd5Jb?vSH8>U31+KMZeWu`<6i+L+KL?BIT2E<~N`^uRBQddeeG2ekD&|V>h zMZfu5Bi?6-&3q*TiC`uT5HLys;76lm{#OfSAz{Wq!i*e^h#Rvw0(hh%Fs^b}{`CZL zp4UAt0_aioRx@9tZ_+u;LRO4}NDF`fky^Qi+)}4ci()4K6i7@m=7RtwkeW&b5=v8? z<7r&l|C(z23mRzWNd#|~S5zkfai5VG5+QQ{^~LG;81xzvzefg@4uqq_K&Ck*{SG(} ztOEasskaWRD(bqorMtW1Al*ne9=fHw1q37ok&-@iiXh!0NJy82bf+NQB_ZALEuP== zzVEmHTI{{Q=oqlc6ep=Dy;CkjAO>+xZ_GZbUme!~wWd7W2p z4t_4RawbiS0a%aHXVV3WR!kCD+8tljGUs?LIuVI-KeB{_)c*7`qk1*qkmF*Ks(tcP z>1X-hkdM^~#M| z3qUB97B;02Z7}kEp^Rw)y(}ONl_vtrszI}7CUE?9MZEh{;CFjrcyWJwY2OIYWt_m- zr{`KB6$tP4Z-tKN-<^cWyS)OLm6OfEnxPDw&IJH-I4IYY7B8lI8MgOM^m2jo$D3(Z zrjudJ3t37yJL+7S*JL z$E6loS$(r`JQZ9IU{fW(8YZ)SG4^4(!b~zv!Y^!Vj2`dKz&5kc5)(YLrHEJgn@Q>t zpDccbl{9pE!PsETG=67QzW3*XYVRX-U0(y!?FlfdiAdXjiIj)EfT;mLjCR!?c%<*v z#x(%5#H&W^IPyc7G>;<>MVe;Kt%Wib>UeJxRZ+r@|3epC#fth2!Uk-ZD zJJs*rKA9_H$fwU!XF~ubLj5VEOknMcL-{9gR~5n5*oYN<>jnSb=3YFArW1eLw9$>o z*5RZ}7zMGq`LIdLJ^2ZKQr=u%T;urX6-bra00y~fpD;gkwE?q6x99eYO*$DQ^b9te zUl7$P`2Tl@@RBH=?4%0FdLXDhcbu6zz0)G2o z>+7#}a)?uWqhj9=!W9_W+^Fa=weWxiu(a1A0BS3JyjFF9L)RC~-Sq%Vrsriz1uoq| z06Y4c@H+YE{!-FoJ3(I7p8l(0on!9pa^x5%@$LS6eVm#-G-S=U z3N9Gsaow@q^PXy%MuPJDOmJVBOep%B5Yp{)z^NDjd6C*uGArMJXdn2CRiC`POhX4V zJ5}x@!tN1DLIpwe&&MgUPX!{WX%AXAVR6G&1b@o+`JBz7>}=EtC~GL*1BGKgUT zwW6!6@>5aSkBo(>!91aiwT^$30t5pd;4|^Bz^-=4;_4DCLL=sqkST`Z^XRnsi)a3j zZ^Y}vy$30jtROSd!)CbLk}{8G+)5${ERfkAqxOm3 z8Ed56!dedZWvWCUA%9UDhrthqkxQs%!eEI)LMK>QZ-_pXw_cDFDJ!%;{QHID@PcUa zb{5AHYx0=d?@Tl1?H7>QxHSR)^9g8!uB-xq(lXMcABWFu^lN3nbhJ;^Kd~Dq72kTV zzU~MLWtIBGWu`V5k_zBjBn}UyE}HRo0us1=LeBW(ZP!~yY7I9kp#>m-Z2-8`iq|IC zDq7YCB=pDy-P=4p%U^*afzDUy)RjGz<&oZN*fkvCmL%UY&gwLti3-=zUOD0at*ldNdg>DJY0c{| zgTZL&L#ELJ7X$!;?$tJaalHL2wAErsGC8H=HQ9e{&~@C!kjjDNx{Z&|l<#fkDDXr8 zDwi3lZMn)S{GmrZiOr}kx}364TU@dh?7dc8>8Q~N7y2gH4$XipB3|h_-3Iq}F69)| zOkM?R+)@(W#n?M7;P)+XS*8D?9@(|s-Y9-Pl_c`cdA4%Z5c?;WR#DCVa)4BQarEj) zjKj-jt0wyGH6-d2T_By%=;j%Smg;>WH=uT%YN=nQ&qK8FyJ9&PRcFsk3gla#S>|xv9>nS(9uVG`P?$N`iNu;6T6sY^;4|hla#J zg18U1xZWX7Crw@Wsp1=Ii9@7uj|cxEk_?n_#|(}H1T*RgntBvqY(NyHS#30GSnw72B>ciFONRJKDr zo)?x~3PjQKHTK`Vo1TtIM4h|{3phn2iQHKQXHf5Zkm^o8?)eQ=LH{*;7SLe2@tKdR zaO;}ZcW?3vu0qRV)!Idh*WH*byNlw|M2lf(2U@DS>`_EjuWFZkWrV#z_>}~dD}gx+ z@t8rA$(C4ahd1gY66$Z@hb*gkGi^x2`jjyM)&)Mq=_@!%$mL(#wGLrs;<^=skX?!X zd2XjqL;`94N{G1@1tc|m^ai^Ox7fVracvQXF*rp^1pEUvyBaW=^UTALm4=p&KU2(@ zA^eq+^ufW9h?sS{H=hHmT!OI|yd0fh-L~xqGrz9GhgIStl`w3tn6;+qx^sMgcxj+LN2kMv;k4=6A?j?(q6OaS=#gt${{hdUMLn1-D16yMw5B=nfg$)Q!N>y zoWX$zCt)>Ccp(hzg)huDn_X(@!EIgemWt(EU>rs#B3z%cXm;pbuX9W?vCw_5#!)c6 z17bbU(Km#jcT$RY?vv`f^qo$sOBOO$!r{Ri$-+c+!nrVhF9UZYj7?zCA+EL|eSJT(jP18ZIVljmmzf!RRgW&(<4N4DlRG zk)|^~0FR*#qZ;$`$s$4=Ut)qJS#0XaDQ0#MFa@g0m=5XH!1Os3HXPfFPpOkiwn-z> z4eLB_$ltDF4ajeI9*O?+8|yEiw8v|dHkeg!aC=4EW@sZ*$-7PEwSc$HH?R$PjR_IY znOp=>69;`L82UAFE7Py8(~;Q3HjW@S15x_ab2Rge+RJ#UAhe?}e_H38wx&FmPkUtP zQrf@C6fOMzV1;l#d{#@>=&ONGV_wDhLa%Z$LRZA_sD{N0IipE==%pz}_ganTK?Skb z{t`qOd(c2TGvEC-_`t#OWl8}HY03R~2U$BJC z^_f%11U%!RuX4f<@<*zR4h%NOW0RmrC!9~$CsWg**hPZSe-Ao6aLe8rN+USBhnaM= z!sht)knWW(ssW(wK1=6MaGJP}=ZdogFGc@z;;tyh(7C{JW zNErf}f)04kfaOaEVw=Z^*zj~n$(~S{>mGI^;+Mt;ls_LIZs)E)0K@+aS4nKVQiI=M z)}7^ZC`<)sBdZ_+jaKsm=z0-DGEAIPa9CCrbrG8~xKFsV65Ah@xOFt?Po%UF+Xwh= z0)r~cP-E9_BJxNq50TW)NC<#xvfW4TmX*C%>|MzN>;kn+5qtUAY5KOSwI~o3C(;0{ z&^4f_n3?NnJQ-l)Z(0dNp&t7IUjAAlGRn|jnO;jJkhdYe?y4?b;`Iw|QKoz&aB$}B zAK^}R^5fp1z)l0x-!>^ybvywP-OF7u2Nr+&`81wQD4&b0n!9DX>>o8BN&Kf8c{vS0 zfiW-(Q4uBQ*7FqKe;p{r&==_m4`XD`Gv%4+U!lX#-bIg_n|{=nzRmycwL2jzx>n;% zqbh53QCdO&X1wm}Xf%{yIw@XbSUVGZCwHAIacVF`9->VrFG?nBTpdw2J9{dF*bf3P z;y5gBoGPiBHWHPm2EP1{DcEpsuSdM!jtVgH0JJNvoH3z1<-gt z?{vDriyVYVptk)ge|AsjwlpS~BaTTSppw0c+F66rW#UMb4YGknEhy$l@ya%$4;Gv2 z4>6kMC0_&X=m$zfrW@8-_I-%wXOdf~_znT9`W=)p`Ck`w4Y)|utZRHZ^34ScXMUBp zAk#+cR`I&3IfLe&$MJa(CISW2BbH;gTlG?k(IqhN|w( zXsslG9tVq+Osw4?;uzpSf1`XqYWF7PU@(wWizj)DTl@ZMQZrq^>5C^S>L2-q5BpWU zHCnwjqS+9XD+-J7*lCb9mD_72=^^p{AK%_`sU8=R4-6h0)NT7Al`9C+_!i=HX(zz+T!*_!RK1+OzzW`v70KiaPr&IS$P4@A8yl(^M+WwX>qL+2}Et@j&EfHI4` zQ#~#(qrc(r`Zj~jg#(uj54*|+bnh&39_7qZwy_bi#nu}*jjIdV-~CE)s~{yr8?oPn zz(xF%!92?&J5R8`IYTJPPM$1^&k~^=F?jJ$B)PiM$L8~nqdbF%L(Na@#x@)w!M-+j z{HHGuR>vO*eo#2a2nWu>iW>eJ8pH&Z+hfcn+8Z`0ZJCT)oE$E=hIO>dzJhx!h@B7~ zOO=ToLX%-+`gptiSTm_$i!M(fjj0(kLYki`wAB8UD1m-IPK_3li7M%VN;+NeQVvyc z(>fWG8K)N`bcCGBRE~L9-%UlN^p2V?;)Hg?l?wOk6;`HF$n$0CA}|Pya3Zr`H{Nac zJX|mkRrH|U?ZOo%S}@pZT1A~`TnhDCJDm4EnHkNKjCshK^bBCad|*w6nyH{6!`sYymHoTU(wQKu`+)F;)wH( zp=7cWbKSbVny@+CjtX5MsDsTB#}D&{2U@~=o~FkPO@Q#4A60&y<+x#(#f`;7uS2F# zPS1U87l5gwtvazi{t$PI~k_|xSi8x{w^~0Hi_`welHGQMn4#etu7|%Ynr}E|X zsaprj!#5evGw}z$UsqMtC(KmWg)ZXbK2+K}S7$P*O_39^fAA*%TD!yWYDbTDTGcA1Z$@|_^ zY=lg-SPElokql4*|MZ+CUA1Pw$BQ|EC>{G`I}aW?fQSfJ-M6P~6s}^XLgyaw4JpPL zB3dEQ1PNiY+qndkEs+%4>NUh;5!MWZ#Yt_uVv{VL*AL*Ab#W)cJB4S+O*zY*x+>U> zN_@lHM*f;Es^dfjs$`1o_ix+X5TW5 zACws{ZePRw;cijuhGFc!Jue)PPb;%w%&3~sd}JDwW@ZQa6c*irwt!7>kIqI^o7zi{BJDIJ_X$-=Uzs@k=|4ozs$mt_-yZ% zOCzUEsi~WL9_FCrK{A>-#7i})K;bEWFZvR~IQaIDDYv2LrV*Vy#L_P{{{}s>@2SLv z47VRce!%WDJurO>%GMivHL_gGme9?-nLgrwfR;e~4OxG9InW7GFC zsUupFQ_;vdp;a?&6WyYXShP2~|MZ|HL)sD<1cZ z*1M2qBA~;7i*`^ejOtLpCST@-+kB zHf%&}o?e0=q3_IU4(nY;f_nyEk;Rxm>#wc+qDnMW7U=VksQ3Tc&b8hN(L8j=j=i0g z%s*yqD8Sr94JMuC450CT{#>bpJ5edx;THu?!9fsXjd#}Wl*N8Z_EtDmM^?PsGrXYD zzRd2UpnRJNgtj~;frxeFV#u?B9Z0yZHjXD=vuXgU(XdyId_PQX?u`$(F@M)4)j`_7!A$8`5~ z!?9up!;w++l{@e2Ksm|b2{XyZdb5ttwq$Gc^QR}HERrT!+u#2TPDbV983dW);S+dk zW7|fhy!?an_iv?-tgR&Bdjkeg7t4_c!9sF^3HlL)JkmUAKSYegslOeuqs5M+sgj?v z901MY#Ueaqq2vu8RO;!1YH9ehCn>`dtoVQ%4{Z$zB4W1@o>wg$9%YOqvBpAo_w@@& z{9)rZ^9)q3iKKxsa}hzA7nthYNWo!fgtkLHRH|Cs|XDB1T$? zYwLbv1j>_@5|xfkXqODM;jroNnHbvcrSh^n$86ZRZaGpXF_nhIDCX+DTu+clXuOiB zEN0<|)^aMna%=*RCDX`H=T#)42oT(cn7qu`esImMTn|ey ztoh!|*!UX@m1DkIZvvlY7;_e9AN2ye0}d|;^?8?XRw2}Ud|5%UE4rTL_)p5pC|<;! z4CidyiZt9D`DnmCol|rl^*(tW8C}>y#rfmrUB%d{RVaJT&{v?WB9!4Ez( zy9fDhyAIyD;r=+cmXSOcN&eWuHXV4|z+gq>nPsP0UQM#tuiA61fkNtAFd9ZG>%mJ; zJca9li?TK*icLZ=zBRVdLHji9XEFz&EZoX7S zr<=tO$16-+a$L%qevX-?3+Qc=rk^^Hg zdS%K^@Qn6@k9J+g6m8O7sMJmnTn{BW`{O2Vn6V#<*psQ4((fnJR$GMS%MmiwXgG*l z_QiUOllI)lU7W5tEJ@mm9gRgr%st9?Ki=#n_>LS2d$n=3&Ba?VAfG3VycmfLzko7j z3B05z9Mf}6*9_%#k0g8T6E{~F_hHhktdHaC3ydoP7peS3s|s7t;&gis1O*A25{8@kac zwaYVfg^xyr@{!OyP+R0z{#}S#fe{5rUU7cE?GrxPjy`>`^N8+yuw#i=ED|J(aA)qp z`VFN?*zq7tt$H`5N#l(^OX5hLZFTxy00pNK?jqKXoTe4()1iAkE#ikQu}^fH`(Wh| z6c;LOju+O%yAo_`i@W)2@b@_+Pd&z}4$j}ULAFoMV5n_u?US*8F_y5-z zF4B4V;D7tTFdr%h=Pv#}HiYv%;sVZIZ~%6w4=4QjN1ye-iLP&?9(|o>E)kBbe(WbY zh2HjEz~8@+)D;3eB;F^878#Jggkw`-meCWdwLGE3cscE#gYwyR@1y=NLK#F-U&9bS zL_XcE>QKw*E2)JuE!LQSwB~=m<@6I)If~@|w>78WSo2KFu5**`Y$aL$Covefw~xQp zB+nZotvnl70vV9U(hOfl)$O}*;8-LoY~B9T`S?#OmcdgKqe$U7v9JRlCg%EC5E-pX z_^DPY7KASKg9E(onoCTBZhtqFeZ3}p7Y2rW$wX|r)Pfa~CES*Ox7#WH6FVzR_oMUV z`%_=Cgsv(Om;NR-W#DuRDt~c9SxeUKtg6^Vl!Ov9nFUDN(ocoH2@-3G`THllafxx` zkDqPpvGbcj7$YSA+Z+CcDi2D)&8O5zBFBoxE%I}=$@Hh_JAD8402`$Kp=eo4vSR)r zC#DECwz5i(8&GDY6&xsi=G?3+EgT$u&7g5+FdQ0E1A_EEJ;lN%McX3kXO@FLEO5oh znzY(%4(K!)gNC2`|AS_Ne|cRyY}XxCA>jV}vzm$X^3T?CUbR?$oT%`t>8|4gVh+QC zQg1#V7|T)FMxXzG(j-ZLE`hvP{yen6$UoBiNefO_Az-?z1sCNTC$WcNhKU!mW2Jky z<*rLz{;DvNvEZ^7ElkYJceJf+U{{aM_MK8}$3XH%{hIs3)1R^Kwi-y7AX8r*^SB1H z2S2%qv>Nsri}$J7BVvZ+S6Slyqw3?JzoGLB0K{yG^npB%6xZ(y5C?#HE~oqU$mAty z@E~WiN(|x~PY`Kb0NOU?cok3SjNkCSnznxNIP%XWj|74U`>%}1g`m;jsVv8al&4-k`A!<2 z?cVivf07Z1G0Y8f0SU%#tRIhyspHu~Z{L;@{1+A1vy1eAWvRh@6@a+{*?%U%@YCks zlmtBfec~l7?8LS`fuE8mkfGGDL#S^kJl^W)31X5;+3iW~HRzEsq z^xrRmw+pa~d`prC^gKdoDwqlgG%QEAqx@_I&^K%vjJ~Nr_kf(&ID47+T=|9f(@4JJ zR;KS87^&Y(Ty5{;NPh=2M)IML*-_ji=s|N!k&h!V5pq|Ji|s5f6gN(n0C{DhM52i9 z;r0ai2!i4!WcuK5dKKkig?bfBH`E<_ zWz}!(gI}l#bEH-HUQ0sB_8AW^kIi-{)$OarG*I~puL0@~hJT7agJ;w>9>yEwH*Zb9@=U=Q48*#R?=4Fdi(;0!fgy?^EZL}7aZv|*TmlOqkBt$14oUO8& zHUs>un1`4nB@IN};ZQS$DS`(of3^q0f5O>xVpZZliPnghZ($YSow6el@vk#nwt+r! z4+MGd%~xUlEDvuhR!PgtBkv^oqM@y=EtO$uc2{IOnswvTB@pzIQ6)9!=W~BXe{(~Q z=y+?qD0qSr89E`MRYyX~@BlFGiaJaIAiRd4U=uW;**pldbly>Bv!j|YI$w$XaIG-LA~tj{fSXC0lobbubaeb_C| zj+5QppQJS8e={|9z)gJg^R}Gbv}L2g3a=z2ft3GE^0#FupZLv=)kGagBUn&nwY129 zomsxgQdem9a(2A3{rlT#19bB}<$ipRG|KkBNn7xkRDJWcNF|MxN;E4!Pq)p#%>ha} zZ-LoJt#XTDa+1soHg4cyH2}w*T&>5IkcNK=0K-sw=rj;9A+*`vx{vIBMaB#~cnZ<{ zHLxQM6eSy{qirs0OD^`HnIFrlU2ZIkR6fLRdEF;P6VW|bp=SACMq~!&PWDZp-uhXG z@4uv%G7l{Na6fS`!_0%stNMb~dsPH}<{zx39~*G{Vnd~?)Q_C6$Xw8By=c&SB!rPA z2IA>nYGXpsqt-#INYF(EDkve3&^g0U*>Nj$H+XbCpN-LWS$cIs_3-wqSsHm_4U@Jc zrLkI`S(|_0b%M~0ZRWd_pYry~sOf5U1z{S`g|0qLAZxbyBRG9Tl>$PhSGg&23Ykwg zouRSJu$I?c1@JLTW9mWrIBPN%8Se{oM9^2veFS@6?y)ei!mw6kU!pfII|qx#q6EMb z1ED9Y?HajF1kdZN`(NFcc^xg06UjDOhL#112&R4g`iV_%?=MIyP6Qd&JK&i-pb!

jHNd!5_au;~xU5wRt2}wa1vj)lig@ zVyLg)K7uPOz&l%mVq26x7eFOxE_|SZMevCjQ8PeFRz7*xa`-D+tVlQ(Fee8Grli3f zJ7()M}zSlH_EFP=w^e6+|tFi_#&FDK$@Ny?aJqUl|%YE@^@W zDxOU&Z;Z&*Y`ce;)ER0$M=t;i27Ox!@khq+Cj3S6oUU-0X(9i~ zIYl3mu7PN1ZB4wmbd==gJYTm+R;zDCG{Su16B`w{)zTY7QL&xCVdN=(u{CT|pjABb z;Xs|Jfpg(f1CQA|MflRw z!bt|1BbmRU*)>ib2{+p=eypPU$&@pAMT`C#Cjpf@Ajawz@#sPSPTAzx#xkIz38#(8 zuK%wDWm3SOnF7Tm?G^f*z{})Mrxw4dwdlMh!L;n-V;V6KJ+6jaBU&1_jA5RCd`Thp z83?U9$gwOzRKwnj^NYsqtQm%N>b+AiEyzVXNi_`LQ|bEsg};f^^hn@5=WZ}@$*7Md^L2_X}r zA$p1R$3JZT<2+roCqxJmY!7r2M*m*Cbkp(%LHxK^=?lM54NP~?z1Tz8{I?N+E6%Us zDB?$_q$~`Q8EKY@`{)Y#`hhHAt3@hBVee(x(Q(u3i@vcscaYGLPPG8Ut3!bzfHCQ0 zo@ymwLLlIyy#FQ;ikC3ONt(Rzx4c;`Y5D%O^l(7GOpcwz8M zKt(b9;pVA2Lc-g%jH6h^du;6keWCF~B zXdBOe8*M(^9_e+U{pwAYpYs>$n-9GjX6^vN`}{A6Qq^Npe^=Y$sM3$}cZDsu_Ga>$ zw?EVQ`~S8$II~BucW_}2Cw-bdB7jughx)7M5CoDzz3~c;pIEYaEwrsgJbxEb0KSsi zOKxMB&Prl{(w!{HZGwHgZ@{JvOxj(ME+SenA%$InnYhx3JYk zQaJ!lyU2;zNhDEyC0BWk3Sp*oj>39bb}`2EZNy4~@VJ^9pj;hiuG;_Oz9Z51S2md_ zw+LqB7)&asP0~r|l-4+q0m*h+YEdK@;Cr5MF?eR4Z5zF;@i5kSW{eZt;SWdU@^w>=cjE|!#J9x+(XC>C`1CX7(4ogym=%jNJ^gc$wPi6Y1A;j^ zdfgqd!K)QHp7VI&lw5f5Yl;QS`V_QD@a&=SbYijO{IB#hq5rCg-2X=hBt#@7X%Q+x z(XN&{t1awZFcc~A=ue6V;W6-3P=U%`GX9ol2-&pjYD>^Rj?{lr|A3ir|5ML%kiCb= z+SN*f3>>OTCX-}cCbpD_@Fzh)ss{k zhCcCLrL?lT#EgwkXwr6G04Mw|5IIrPO*~abeW?jZlMsoOP*EB;`cA>&yJ7vLyO5Yz z%G^df`FiH~_z(X_xCpg%qWtI~ob!}F zLK`B(%;P5;z8nBNx6$YfG*Zoj-(0{2Atq)GX6J3m!5bH3XYLA>me{%+i&3X z`X!r#unS3d8VtE<&L74TwwCBn3u|Gr;kX?UYUVOBhHkk812UMC#p>$g{4MLTqSm0e zIsr1%(y^ZFq+4E&K~iku&r-&iOqK~K#|!SGs&%mLHNFBdg-BQ^OwLw>G=x#t8as4E zh=m9UZxi=FNK+LXqkfI}ZkTQ;L~LV?hd-d)%8kdyiCSPxf@~Yyact@O`N?=rp<2d4 zXKG>V+M};_4>jGs+l(ct!afwE^}gs*pxV~>pnEXSMNsb~NH>W35!T*mib{Zrf?9v3 zqaX7C4KkNae|eRI2^$0lP(D01D)TDlEQ^lOiUP#KE2J_~>w=&ES~jxA&DwSA0C(ax zRqWUG_qeS!=Pnk+SNl%jF!FAd=|ZRet;wS2+0J;A9U(nw@H2;*a^QhwWaRb9xWtpU zVxVVyAk;~*2OO7mL=8|rWvcDUvg1IqLL9<9Nv|?uk+O?D5hME`7oStzRi_ji*6BXr zap1qb9XmM{q?g|5+;9p;zFU^fv7TfoS;g)i04?arooEw_jZR( zVt2Y6;a+z@6miqlI#=1npE-MUQ-j`Bf<#77kN>Q!(D`rkN9YsueB@P z5<0&e6BLV9?3F|!z}hDsk`m9O5Vqx!@NJ*Y`AbysLPm7Zhd)+_I>Z#J=jD#W{VX$u z%ZVe}THClGC^7e%PZ%B#CH8(zIn0*w z)0dK^C7?fDb6CloN!~iUbAadZqc*PpH{yM`X88gk-tem zsSinFNR}vHJpavHrlJ4p?q;S<4G8Pim+ud~+?$ev0Rcxy^0Fe}o(*UL{O!Nj{vN>a zNkOvB^4?-N)F2H1q-)5sY?~X$E>&=Mn*BJmDY6m&((TVQiai|;#sLD3823?XzS@kj9A5;H3Kn7LBne_nch^t8Hm!CPY3&jHT|99}kCrp{>| zujF;7YN$$|7lhQk-~6OEu?&=@fOC|ixW~%zZaoFMnzXH>XY%P&OY6lPTc+EB;~daDR>W><2)DN%`iSEwzuDZ_V>j*{+?R?C?U}r9n#|L z+l6hnd5y{#3>&_YPuCb`S2C0ET@8~*T2WYn3*1J???>Y&d-yG1{)u@mI-!7bP^7Z7 zOsc2T<Q$ONWc- z5jtat?!pFEv9z{B$1!Sp5WY?h$%W2nFW%vW4UxRhVhrKCWY#S>Y?Qi^eN~_IOog{) zd-}ttKilp|Kd8#1v)P~KH3pSw)rlUp@C{0RK)HTy##^3n=Vn5RQttF1P~n=ur~WnS znx#+hI^8`%Wa-_x_Rk0=$F@1>kOzYufs=w+RY|c)P~~LXjr46LH~&$RGo0Tynnn4e zakZ`I?g`!#%Ns?8=pZbxT-!4B~)K^D+mgRSBJ^yWR zeY<$%|5**h;Tn%#aY%uOH`j>J>^D*LEOY{6VC2kL1V&?1u=6U6MF?4z8eG-bbrtZ{EnH z_T9eNtE?EZE{odox#1w;ISv^5=2ToyL{p$Yij%Tp+463zhaavAFrWA_o^P-`eiV>* z`&RmcLb4qnjU{Mb>MgzDV*X<3*nu4tBgYLm(ml+H{cQ+6Ts9{2cFL~GEteKZ#jTsRfzPqL z6L?O%D!RX1&RD9@>~T3I?)8LLZHPzKoY!tQxDondraYUQdXIGE#I@9u+Z=7D?4eBXXo7Izo6@}h#w?5q?uIJeA$)Jlcs%MrQ=a*x;U z@o{nWQHs;|$mhD!;1cbW$>t?w{A*6PP9W+FM<9{cwc(_x&XO~0AZCaNkXrjpYMo@z?PU2># z3=@8{QwEEfxDPqXK?%G2`9QHLp=HjFZbZ^E`j2Z+#k>~-Nis&V%w^L4eUtpwm_acU z>`w2BRoIx2iZwCw-z3(hwxp>xmZQDC*ApSATOO`245v*L(q;pZb{E>lw7d^m1QL?9{*Z zI7JD(*_bQFoC}n3pxpDa|H{-S%3fcSUWNVH#M8iZgEot~m2h(QT2JDju!2KvAGx_0 z9T5+nb1t&8^n0|!CHZ{vss?Nx-bweJdI^3A>Ps4!2)vtt#Adu_Dp6fwP(?N+TT-j@zqetM7C zBP0KoLY1Qha84R>a`FSkXl;Fy5EP=~-|56_uD+5Br;{9_+9+tuil*QG^&>*XlH+YT zrZ6WB!_S&NpOdJC$m>E@_kNyqBdJkz6PYXzxb&Co{p8)6+Wx1AGNJpQ%AG~x8wcd_ zPpV|1E;9~os4awFW1l2&QGNgJ-amx-P6jjZ=7&CCwi^r5X^gzlqiT=y@Hrp?uR z-wj{?l{`?A=OLjl#I-)dw0aqEU4JdUrSu_`C)gP3e=~d)Rkh+Ql7iLhGK1q+V}9|H zuIfLh7d*x{1F79x8@M4-4W@zJWo<0MgvgP(nSD3<(#gUD#In!4I|iUj#^EX_3e4!_ zg|x}-s5{28`yskSvZG-^dc%5#1LUGE=L~WMn%^;GnUW22P+0^w^KZmtY=Bm9lv6~3 zjM()2YaCAKowO+nBorS{CRf_9$~q4g>LBeS(-sOWntiBxLT$3wxF#{ieN&PPr?^Vz zU0OBiV)Pv7o;B$nc;v+6?Ay$n$qLP>=f5@2%?-9pH^?xkn-`5Ka>>`pF4befdWx_Cc@@I3RO zoV&daiMgv;z7Y2+y|l$lcn>bTh_QR#NZ=c>lq&&U+PUBE{*xql=>=cB^51iwS1krL zICzMdN%#IrJ%0Yxr=u4(X*Vn^6`RgC#NiRey0@vQbJ*=1vu1V8p%DMgI6cF+d`nL? ziSwg5y|RH$!VG)oH=xrRsuy@O^e!QwzzRF>HUvpGx%FGNEZMj8WGXBV;t+@*>(;Xk z(;=R%?^lBG8tFYH!EgtKl4rKK+7DDsF{;E(tUnS=336t>5bQDuyp9(C;1u#ggZjoA zH%-91=(40Ai4P}I)Z#y{5c=4_@^Hn)SnKJ`VmxLP1+t_UykSJ)vQGE(b8Rf2V5pb# zaMcL?ciHf3UMVDmoQ(g}QmP5SfG0Hc)kj=uWDR)Wue)l&=rQbxHR@`R!qjBlL!cH! zv4IiT;JT`uzf34$Qe+lAv9f=uiRO^ZdRJaPbW@8JDw50&4K@)+kFT4ghG&B`e$!QR zl4YLujA5$(IH}U9~4WcIn-Zubtp(nS6{;t?JrS zlAMRDUpX1~FZ*X01#1h({Y3I7e>jCeYUQUSHXguqa6)}}hin*EfB|6;PLhsW2gg9k;6R)Pw z3$+|?++o1081HT1F&&bg_NbN2>~Y?5BR28qe;-@EAt+MB^Rlh5dWYb0B5H?pBB_q| ziW4Pa=qGcEJ`%VNP$LZ>@L`2xz)_QpV1`Cx#`^Lw#H-C=tEU8V;xrvz@*3YA) zKb(r07&#|woWW-1t}kxNa~a%{Ajm8^7!jP&@cZ0|Xt7-*Ii>+bJN2k}Dq(PCAFy^1m}F zYnCH9;@G`>_XbTtAd0$xtI))38YSOL)vuvbx3{UzoQGQ&;EZl6i%ypuoHwU0sucJh zI1~!)T_<)np?OOI)H^tkcrQ5D{=h9}{4e#BxD%t zl%`Qd5H-rwE%7i=e^rKQc@|YVqjG|QxTlOgFsAYf1aCcklj(mIP*T`zmmcI)LR8QYDCfu%ouQ~9vsXd`F9 zrQk#yhKR&T-AN={`D~HF@0>TK*QPv|Y^jD*&6*(*6~{uZ+t=Td9Bu<c`W`tq)T)=YrJHQLtL=<#2z!I8x<}8i$_{WW9HHcIr0p zZOSiAYQB4VWZ$+T5No+AQ94xWt1!p$6q(K`imYDba+donuW9#?s&mkJCY1g&wev!6 zY|DS>vC1$;891Q6b_oA)GI{S`Q7;FZM5&Eht_{dwwad7!zxX=3-1f^-=32&-)OK#1 z^rWmVraPC1Dxg{Y`u^=I@%2co)SVB>x2lyrJf5m=7_D++k4qL-&L8S*;~KZGx@ys^ zdW+xY_Y^MCAPrJ!CYk+eNEj)A8g)cVH}Ln`cjq!qjaqG~@UmEwl37PXy!!|qFUlO~ zXduwQ%RoxTzdNE9e;Cwh9#d%k$X;A~HSG7cTDy1QpJnxr`mjj4HTa(vd{EaX3*8jG z?_Sm1|5VcQk69SBwFwDLdw8Lj7GOCt@%o0Az3|&P)BK(ZTdkG;rP8SQ z%~S@(sg<9xGWTaP(OfI<5o39huX`>%(aX^k*DB6`47r`8P^juok0gF-_(*P3-l-Vw z)H-NwyT&Zn3nb_xLsCSHjT#zjeyirk>mzAJ$ygE%?dKH4P>Zv&$(%Fjo;T-!%X|y! zllb&D5ei?2GUZ} zW=zkc(nFp}3PLMU!hx|bnMk7eW$gP3n56&YoIbBFGS09xGfA8?eVtvcWXmhp5oG%< z0{cv6@c5sKG>8oCH}TnGigBj?mnoz7#Ds)HUvS$J3PlFFewVP1ihQZnk(QQ!nXbU@ z-=TtLTnl@z9^q&q+Ch83r~ z8j0?G<$7IOVihOO`S~8OY?K+xFBaV6d~qzJx^=`sWW$$=Uc63RxGobCDeu>TC#d)_ zU#oNUooaQoe1eJQ@#HBJ<~_iaY;ZmAKM(RE1nK)Mhij9Kdp3B~giqHHX-z-=AiY~K zmOvkdG80ZTXYUE|P~J*i{bq_$0Sfhd?#zIPw)C>{w;;nyg_@&M>QQW|afYteSH$Zu z8H8>m_`;`}2WQbp_(DCmjVwYps~rwF>KDFz&(1gr+i2bUR$497a=GMF{MpQ3ID3em z^vS7{6$}m7;%l}&*=c)hWy^kFXsniiuL3%l^#jnU5z(WJb$0RF{oddDsLV&J?xW(% z1q#c4m*V!oHrIbm_j)dfqi$9#JF&=Ap$rTL#fCA*P==b%e}TWL4M`JF09Bg)8+BCN zMqsM49-MeLW5ShPsjKn-ySPttRoP5>KS$!NynsZx7NaI3nRS%GLWvFkKf2yJEUNbF z`@RgMln?{~=~PluTDn0%x&($8x;qpprMpAAyHmQu8A4i`A*FNRJ^5Yt{k-@6yvMu$ z80P>FX3xw%_qo=0eb#reF*p1Xy=<8BsPCvAy|TQO%%o5}1OD=_P_dxEXXH8ulty!X zZ;w*}SGx6?YXV?4>3VlA;Pm9x5A&D6cV%(VUm>pvoV|LX`Drf0;u=eB$2s8Vbj`a9 zj$^IlS|p^Y#vcdpcsCMffLk=g$mH)Iky>^|k3reTX$zL+f{sj#`2}`gZ-5jcJmB4* z0jix|(UyuoiaQILU=7H#Zz4>%hTwHwgfQyK6u-{cbv-+hp;Hn(l@BZMq%ufAt@?)f z#E&E=JJrvmsQ4>|0OOOHG}l|6jE{b7tK0}O>)tnt$S9}%<^78ZRizCV`_9C=IrHpi zme#kDdr2l1IjcERU?h6RJA{1tV3s22nuFf98nju?kiUqH=dH`-$UN7MbU2UCGraU(4&btP&hdq)gYHDC+J?0m4u978$sK)D*gZjhal z>akm$wqD}xVCuF=FrRt*#X$q*@^6rEQ50L+vHby4Rix(6*=;Z% zz8`VB@7g|cSbTdmUCr_OY{=l2UFWeq^<%^WQ1)g7aT-68r;_rX#AMvmNXB~8;oZLh z89I~L2p!7kCy{*pHE%RMpAj7$+8@k+MJbT*E5xohe5@$=ZT+1KODN--md}&sv;f*1o1S}U6Ic>=dwcGi1H3wTGVr%G?Px{~gGl2Q`S(sD zU}Op5z%W22UGVSEM^$n7Xy)x#+r{fmWG=sdT-J!17()k=3q4dQpAR9;QV%!f&9ALH z{SPl8QvSr}{e%WyKO_~s852-(>;Q%*6UMfiUYg0$v=vRqTop{sT7#>g z(lM%T3Z~@RmeEtpq_*`NJ)L<{vbuf!?9%!6ax)+NMi|dn7>Q6ySutM#ZX%7P54W%W ze8n~;1frwQ8}GjzK{HfLOapC~BQdJ?soZ}b9m8L_QCwIVwirGcc5Oouxd~U@=;9?Q zioEM<^4}@=_?)jUxX@Kh<{Q4{sJ1dvspRug#L~684l13`gYOVlnD4_FV~56O(+Wl^ zLz@nJNgUHQk}XHobE$6$hS<~%&>DFbUq%9g-?!0f1)|nr6gr9j9E;3-ElQiDE#c7^ zfAY%)r7B6|$;ZLWe_%XTzyHqb59*Zi@37vvAiJ>XwLQXLzGXijT2l-v67?+{06&f+M^Pm()S$U924;7c-z%8Ty5LN%cfviu`Rk! zp}ws|Bu-rUedUZ^9e-M4N)>cISkP@o^29uw`kkEp8wd{duqGu82E^T7AcldebI zz&q?!`yh zr4nD@J5lHY>X$csa?$fZmHKO-Ni+oPQzQ8&l#Y=cB`H{ZTbU=NwrSDmN$#6_DXW~6 z^4l^|l7VVv-d+ZCOy!yatpFWEe13E`Hm1HREOlXZ4L+ zl~ll5(X;ihVEfh@v{HGl=liy?FrAJ*pLNfDbl!WX^OL=A@X{~!NF_Jhb|ZS;^uKfgi| z9I8oM@yC{w{=+}NSVzqC=7!3VI*8BHtqozawnUaXe&$d4{edZTBhfgVIOh&>pK9|3t&R)kVN#)5hp4Vnd)@ zhmdv?hnaNW+kiZ$M=RFMRsC7eFDO^}mzxI(%;DY9-vt`(z@~L`xz_nc^Ce{qs3@h$ zi@QHD)Ih11A<(yNIrJdr+*+mh+v<5fXrHb5juNJ+TRG^!`fw*VL4TCR|BCKm9)HhA z0VX$K4s~3u802+@FoPWpu_jzA2)sR=+J{ZhU47)2Cc*9L49O*8SN`LHB(n*9fLyQX zK_S$o*bHzow$HU)!!3(^;9ZOa?lqM)mm3+Q;)a?LlWRscjs)(dJp#wWF{`D8^+$pH z5TxsW-yy)i9lPN@1UgJ%zn9J881Z1KUo(_2TkKW01#CWcnSpu`+t4R%5HF+bef#ey z>OY|rehrp%Nn5cM??7!?c2Eu(^^#&*@;4s6d0@Z&e;s+Co6Vz4;XL8z{=LfZzYY#T z@Dl&?TEBnJ2EUKc|MvlZftBJg4#aMq4@Uoq=HyX_LF*3!lp>v)KoETNEeuYK$yD)P z+xv794x+BxZ*Y1u{M3J%I-ZcM)iogUQcRN_Uf^^3scNUm>I8I&6O(>i6<4FL=X>S? z;IKkwyUt?Q&VedeM*Ig!`ZB)4I4?U38)RW=HU9=!q&36rL!1J^UC{anfg@@7>pJF+ ztkB`&&fiH>-cKD_-zp^&hm!DeE4aCeYd0yCds!T1RvN=~sHJj$!GG+caFF%h>N<|Z z4WOV-hGw8&d4sD&;dq3{K*+f%6InUxUcGZ^P)YP(oTaw>iJ>m=juW)tt6s*>RdFneApG9>{26e?}p zNJapzO5V1W%UWqBE`j}?P-twSmJDT}Q72`JtQq?J;1OM8`0r$3^_9X+O(zAR1c?k` z1BkqZqV{Wk&W9+Ge&ezj@8?|Z`UQ<6j>2^-=8l*@T||XKD69B5aWpozf!CHP`$H|e zX+2jHBV&(;hU;mb7t2A8M3F-vn%1SP%zF^8>o8CQ;&4;s#QbN5Sr9GKQ^uu|K8pMk&u+?o`xz-Ba6^Qk5q>?Fr)3m!3lgUEf}$q<*FgE6HDADTox))4awMqaOr zzw#fn-h*L7I(%U+9h#nQk~2l;%96VcvwGPKO=QhwvC@d4x$xAceyJHvN6oD-4ux_D zi>=kU9RST2s&r&L05=D|gJi9LWHpl3N^cHR*&E9Q2DfwZsr8jr=QF+WQGbw>F+8wEjc51n<6an1=sp&r}b0H zq0?{H%0qhtT5ihp1dl<$zwTnEr@gO6IK6hD9mzO(qBo5S<1{r5Ogj$$XU`KvZ0m>0 z0YYyTy)7+~j$o_e3`?n4Ir4F@0l>@BXzU2l!7v%D=GTSb0#GdO9# zF$x`A;-|^jM#7pw^h8fNZ*=3im|xnAAVt4gFeQW5)Pd`Z-SebRi`1<1VlI)i5cz(RV~1g} zwMb7<7kAs77f`o&D@-kfkmHJq9CMt$&*gfF=i_-+=F31eCerR>$R}M}n)cYPdCWCv z|G@U~p`xeIS{vW%Vi)DUaPIc9icSm!2>bhwWSe({kE6K13F%qaPSX7fsX>iC3?S6+ z_rQ#n@TOa=M;1VQNewTb&p%)r-?1{OAX?Dv2 zgri6(ydqMwn*QJW-FP?~6eNWi12LuO3*BB*T4p9yt01^{xc631{#Njxgk3uT)?2gz za)eZxG(dXnTwY~I2qm8_xGwEtIKgD-O;8R%N~6$zHCcXCeZMQKqj~Kn-riSObL8o+ z^jv0W!I`V`3S+E-iz&IZh9Tc`w^B-dSKuId^R+7o9zE0*{qUPWgjwDBc|JP4Nz3*Z~13BK@Nut?;6;vI%za?P?zw`Ib>)bKu{8ZsFt{}Bnc)XT=U z!M3fe5Yrxw1qO@un|0P|k^pYuqkd{fq1YRF$rlM7Yh2ZmYBNM_JBv* zY%AARKRs9yKBrw*xO{Ck`}WEXpdQ16*;QaKuz><|v{CoMp?jnx?{Hmzb@e|W$sYk$ zYuP$`C$Qv|Rxmz{x3RfsJ$Y${*4IbwE5Le&BQ{GqApK+u`+%XRxd{jJ!^CMWsa?q9 z)g?{#@VW(;xtp>ljca%sYpYfBAQrAi#$_YBjO$n zJ(=?EC3fR!QJvqw5DMfL$B&VNpfpO=aiSi)$(nDrdCEyuW5zYS(8@%@#~1kw5>_cY z8c6~X6%5_EPdVGM*Pgo@kBYO56Y8416(g&f`eB*K=)J`mjOE`q$XK3w`jA~w$m!)+ z1%w9PUw7}GxQR%cwQ1fvayBt;lz#$4?`OS?whvoN*x9gb(zM!08fzWe&{Y>SG^Fw6 z3u?rV%1R%k_ZB|`?IUxB!A#DuvS3Pf8?ewvyv=;z>Q1fW3tLJ~G-zqKGv$IK-zqOn z1zrlz>RipL8emdW?jB zJITH7QbWDVmvnOn(%Ute7t8MpIf$e}UxbjyoDi9%M#c3|Bo@)cqo=VGP06`PF=xsz z9%Z^I^M&8np2aCRn8c%m3G&oFkhy|uO1|L3D`c4Y;W`2 ztJdGcQ5kl;u!!y3F7jJ8MjvTL+2wm&=p@A8h6>MckmlJmSVF$0xtG9>a17&zuO)}I z*Wl}X$ogN9?TyMJfx;5s*O$&&8SGd1$Rx#q3>h4Zp@EJx3nhjdzD5{}_-j_Z z&&t&KheC|mYuoUA_Ihac=gYGL3c=P#>6?D04{&nOlPW>Pw^q4ETK%)CYmdj+6r@Q* z)2-Nx-Uk&DdQ1}!mGv>vju;563G#2Pe|=cs%~%jw-0o`>a;U8SV2Ms(zE*!O$Ru`Z z@(o3kjic+8c}q0)23}REa%y%Y`3cHFAa9@7Ff(5#{kYcWG72BunLsZJ1A$fd?zp9X zlB&=lj;cpL%Aej!{v!t$2+E}A7%(9aKf#5x z$Pdyb_c^7@W0Y~o_wM(im9sxmXI?-3fDh)IN!S4cS}!9JNL8JV%#Z8>Wt>D09USTb zrgyJ#38battm|gzl+Ng!Wu>_GF--jY2%3|aN*T~y>X|%n*FQ-58o|57mG9G&MGd{gqcM>DQQ@FO!^ol zS5beEm6axedy-qkjkC%hgD@8${HzfV;`!CGesZXtbE-pKie6t`>C8zsEn@`!$%If7 zWvBPbgFuRGS>?I6wlgDVn{nvQ_2)`MCJ6%)Y6A4r@r*_CgDTfwn&;st-)L=pb^dvo z;d5N-ds^?>@s5_i|M^&Rf_(6~T-)FZ55y|Fhg7Av;i!2tPD;Pmhq6-Wi5A}e!fcBy z+LV|lmB1;X9FMgXZoX~HIZ)g=LYM5)q##LSVaO{5BK9{%A1Oz=wCU%Q2MW-n-j|Js z^}lf>R(aUZaTQRrg}aFBz{r$V|Ro-E0s6#wFHZ&(XN&5E48@a z2E%4y7a8aXxQ4vYX$Qr#Zg6#-9SeuX3^*u_FngGYd%L$Yr#~~!hu6#sXuwmAj zFVGMat+in2oMAax^~G~VRidGZ@*wLeQxzRys=z#c(fbK$xwP2qs2zpfTS@PE^6xkj zocIjmER`wRrE)jw64^_g0e+%#A{xT#`my$dWFL=-Vc#|1rmsJ-2%53s++nuyLmPX; z;I8{vD^K|^ef?0u&9B?u-Wn_%q2`~W!&${bbOfB6WkmbAlh?#34p9FK z>|Hr?K{LV{@0ua_o$;SvR%zzHdyPk%M3rl;{m`Vxru2Gmm+~YWsNyY;cC@Us!)hKx z2djLnMYF_YFu|vljn2Nj`kqbCvZ| z4ZV_rK&x|0!=J(Nrid21rz}~>1je;4_K8UKhd-gbAl2x1CCgbZrpG4{m8I=Fr7m0Y zOc-HWQ^~q^U@0tiOi`^c^?3TzhK z2|MJ~K_YLYjkwRGuoO2HWFD_9^!@0sul-PuXj|teeBaD8ZDq!sEf+o5ZPg_;fBxdf zIcTGXpdi^d=*Y$M>Z-JeyA5&9Ao>jrDV`^`-MtPYj#q+MWN*o~zRmLM)*xK>v&CRi ztAFt!FZ`I(C6W=C?6r@bGrZqw$uVJ^-d9!vJ~;9_E@#gx%QN1~5_$Oef-&q=w2C(z z9U2{>$*hBrZE5Z}?;-7Wm+C#iyb0dP#KMC4F(C>HO3i{-O% zT6v?4vqm2u!zsX8!QV5P_n3G8a>_5u7?-6DUzA?)FlF8->|wVaPLkw|a^AhX%NSIN z`TJFO?NMrjZt%lPnFzmZYvJpeu?-KE=o~F_)nc-d5$m!LVOlg{+N9_5QAS}sD_E6o zKOdk%o_}U{1|I#Jn42p$--|6M?$HM zMVh#6`z3RJv=uy0UY7Y|htJ2_Iu%&fs1o{d$_XZJL=@8_$Ujoo&v|kWE0lOwh=?Pg zh*)C&UU@WTf@Cpo-55W=x~#=8s`)@PNzDE)kLEUnzP?23slpJ2_d(2lScsT!2B;Xw zt7B^WeRDn8Qr1Fecb5t+s&FdU|3jqVlER=ukXFW{@{&n*fn=;FTrDo~5bFb9XYPot zy{LR@u%vQihNa6`4q@J1*`whZ{M|e7ITmecyUgd7c}%kGGcFou ztf9&GcbJ1Twk8f~epG22u?!|652c43qw=a4g1GGkXJy>i$){-XsWCKCKWiebjfBH( zWL33rywK3k{R2W;7!1=B6emqMnd)@QT_r*iamtE~bMobJy|@Qyz1yV(jaW*R43Y<> z2e63LbvyI048MTB4jdL-H6A5nmaD#lUX90X)@xYWt?fce)2HRGtikl>eTp@=+~hsB zx7IBn9aF24<-JklcB}6!67^8S4B0MJvHyCMZVkwl8EiS=hm20n#+<1K!3tScrUq9z&j_3hZz zf|SQ8wA(w%AeH8ohh!{jzX77B9jU-dai?pEpCvN8{eqp{$cf6fCF8{F6z9o9d%|8K z!^_>p-_pD0!EPC|xagYXM{DXk*|5l?>C6srze}rt5H|hF3<6rH zJo9WyHy)gyw>Yu-T zZ`^sIabp&}yDKAJM}sTa8l33U zDOp8Q^p^*UO>7(Wzm1Mx?N(wOE-8Yqqhw9!ush~I<;%8{{M4gTnSHT;SR4L4oDrUH z?y7IoUtTwE2g&@#`IF0QP7wbULAz>ly{Q zzXYF=3sI#AOUeHb^7hDYzdhZ3_4zsUEbYLHKVhJm?|l9^2UN@X|Ah*NQ zEf@<*RX=55vp~15GMSt)yDN>~OuVnn!9llBs!Tz-_ufuMKZ!C^n!(-G^vvM)R(5-= z%c6U}yai>m&&_HECn>sagcvqbH~heU7Mj0Vr4L@E@E-g4KgTC^vEtD`Cd>}Ng95aD zga-opAQ!Yb<*J=O>FCkk2E#W7d_$6YPX89>&l0R+5cL)vj*DSiH}wjB@CXY>*`ISw zKiMuW=Zfp%AE?EBZ0QS>1>%ja6-yvB59c#ss2KdOx&>QtmLpJ%&0q9JkS9FB^5SUz z%j==jQbH^h3-qP~&Lywo`q#`4)}z$!TbSU}ZD+MkKrS<-dWxVSNIQ7bfXM>Z#|%cX z<+Kg-M*zWSy#D8>mf~JtoXVQEx3y=Lxb*P84(0!!_jmu~le%biyr!ZBPL3W0VoFq? zhhwWI)Zb-_j=ED;z*C@ZmQNYf%ER>I2TmQ>6t6L zpBK^w_w^`5&8?09U|q8Wt}%MrZp#udptbdV{J%aMiWE+TK*)}c4_xJ{#KktT#H z!`BdO@YCh=N)&3J8pJ41N&%0h(()qS@fN=Kk1EUl8>Pu@}49M#iy_IDGR z%VY%(I&sF29iBZ4X}UW2p9SX`(y2)yYmsUib0P?P3H~xYeHESem}2*yNiBlLT~)-3wQh#FVp|$X@TeAAw+h3hWVnO{_9Tk zZ>8@3u?C&v^M48&|DN1`Kbn)6O3RmkDTchkEwh%2m3ri~O%+>vtkAQzf6X?1G1rtls99?sZv|_5yv*c~Dyh znfG#%(;bIW9=*QL+t!<@&zz>61rxcRMc#BdEDPe2#B*$oWeZJt3a*P3)-}i`sA+d# ztpjs~=3UKxyk!mw;Xy_oy}GtpW6hukV-7Tc*W*;0#HLws&oi7`aJtYjU)!@JDc)dJ z^?$AYPghx>As0HzyD5LKE0|))l_;)2oDuAYYmJJpz1iHPJ@!VvK=&jzm4-&AIRttC zBAu2#W2=nuHszyi?xfh+>hbZ6wOd!8n?h@!smtEAp0#n(Zs`x1g)HzWVlUpBdzk(7 zEEN2eZ5C0}Q$~`@qwmFGT`|H3-Q8-2|I}Dggku&@&E{H8vmk(PsUrMge{q#v9hxT95hxdCSGcnO8v7{DeBait%r8+PkCl~yJ^B=az3(MXDQGSNLU8EP?rWmv5^PpF@cxXFDB1Edg3_EqIdj>)Zn^VZqM;z ziX@M^ZlS2xyfsp1MB?@lNo-OaYY`xe!-Vjxx1m?vJlQ`IW}Kd2PrInc~uRBaiD- zSJBAFzTwGwC1N3~kEKklRa|qKV6r`tpt3vY)K}eBwG2sb^;k0tn%E|d ziQL>w@+~8_pAdY8v@>T8`?mM?+{DeNsF#nx& z$?%tgm3nmY0=VF_D9z>ZnZKB5R6mdZye6vo?Dmtilg~E)Qfgxw%MJVmbSrZ?V=D!> z_UIYWM@CmWmUJPNKH)Unh#)u zPlI`%FYv%4B|vCoO;>5tupBrMCDM_Vi9C$(wSqfJkvf08=acA*b6CMHdLR8+I9{Px zcY*HQ^cR=7)I#aT45NT7Jf`12^#KmWom$H_jNfVj(w7g~hq>_P0hs^ozL1@82%34v z)@vzV(@f=5JYa+LM{)vNeVH=W=H05K#95;dW*7*zmSlP*s438yVMVJQj`xM(!-YA0AAjweT-`3qP|(`J%zL^U&QSROgte8Opiz(sU6~LmO?PMhXUrbN8W4iCoqAta)~rL;DRVRLH4fIM@Ttekdg=_*Q{?h6d>M zI*3UPgOPT`^?jplOu;=Mc|WND25M$W1I)&mrH)o2ec~z7B>?TCzb{B?T|$-qWZ^I} z;MPnCw0h<$a;q)WIws6|ryU`~@_q?M{N_D1$T3K+ zzY~Do25cz!-VL-@_rUXA7ulLiD79HGR$n02^9>Y+O3w;w;37IEE9T+pg0Qcy0?9Uw zyY0{fu{s&=js2LqS>x)OlR>$>JH7Mwd|Up4@Qk+ObNR*L`adm*L~<`7@15%We6?wv zx7O`<@zAvj+(z9^?bmd{e-fkfEIstDcAodNZOvf0=vqf~oulU0a_ezfH^HA2TAtf9mah5ktly1@ zF9;dTGBa1NJg=<^l|E>nWant#$Scknab0+ay!gFjs$w0$6))rIWte}Ge{f5^ciXrJ zFCN2|2HS~_wrMUcysXxDCj~6I^_%^s{l%Kq4xRjtgJ-hSH#>PXzw-$c=SV9gn%2lQ za^txZY z*^*&{dxYY8H7RFtc`m33<=_c1Z-IO)m>Tz;OT=dF7j6uOY^5CfFlqR|q(W@Py@5e} zhUIK6#wBC6Jtb?qrN)>509@RocA9GDi&?;@2Teked2cy5c2iv+n;(N* ziX|fA&B-_WZ5pkthIB!v+=4EewuQNFW@iu>?;i>Jka8KOW07`+t7r0A) z+D1#P=WdHHm_!yvKrBT1x~W2#qWgr!P#pYGcvn7K6%9T9dog4jOHJ2Dxing^iDM2U&Y&BOX**ue;_o4z~MoPZ`S2blyC?&`D=ESc?lR1K(+>K@7HlvySOO008R#WZSFp6&j z6{*kQ7sOF@d1;hhc`gd!PKH5&A~b7VWAi(TX8tIiOaTc?1DD|GxMShL&2f%`izd&4 zH_{tX>6tOQHldiYz>=m+{Zmtkx&4YAv6w=qX5JlT)Z@I+ZmYm5d~9(wyy+^xV^b;V zv0q7e9HM7y8?P|WuW&=gVIhCzSvq>m%4slrm$+d0c(QZG0^0YeUY5teLCRxmv=7dg zQXW4w<5YX{mo#E?Q!4yrTp9me-pS$|dEVIF(gWz8w!TJ&qp@Q7m~Jb~z{gH;dotf_ z7Fj_G5lSR$-1+wE*rJR0ZE&}?V~iR+-$H!JKuK6wN1pP8?zI^y zS@U&a4bn#^FIPi5OLDh0R$bpU;G|dX5q-2l?KQ5tUbCwL|Emf$I^wABLnT#^+4X85 zNO~Wy*TZCYm{QOOdg8Tc@*DeAFmtgDSZLHch96WNa%5b}r#Ez+T-`f~V9X={q~Zi1 za-4X|*Spn9byMiMd-p~>!0Tj<2H}O=F&LYU61r!PT~L5_5>r)W55mPf1LU^G<;*=b z#)v88B7b*U?yI0ecVr3rst2a{kFxP~LEPnT_Kc_sP$v-DuH!QIbO+ZfME>T&G)2H} za1~wldub`X-SkEmfRk-(t~&!!$kej9=y_uo7C%5JFeqpd=k0gi+Q3?|sy4BO;kEp9 zQfztE;2Q*R3K)Wfx?BKvkW_u}GI=$T@A^nxb#E0&gpY?gF10Ww?s@b%F5L+|v+r#) zrYY;}TM-|m0gQH|YhWT(q3kso<^X2U-?BF=n;%n02vo@o7zH?jDA&wHL;s%dhua=y zeYS2~k8flS2Q91f=jAO&vZ^zCY};~}DC_yV(7vrM0K;*_5Dx;Fq-cmCNg3vTv>Z#r}zhL&Afd&PRBaKPc2|J{|+g_39RYH7W6zyuCk~Ai3agi=_M&2-cV|rWe5w88) zIkJIEmga3(;dE-NBN#Q}-nzM)q_^iWGQ*+6Y_I0EJdi-|?$aOCWnt1N%v{^K0)>-K zE9qHw5`D`Ni0Lvu7l=d8#9q8)YhICQU+O&0eVg5vH+ReNYvQ<$@iu|1WwnxcnXB?{ z{%%FJe4~BI&HjDqJ~?LbwT(ATE6-nK_t`3f_;vn5Dw_L&0(S0;X?;*DJH-OcKi%yv%3Mw0LT$r;H(URa$$KBDPN1X5ayc*Dzf>lbn^r!*}s9dDx4 zq8q#Cm-L9>D?z>Q<&Z(L^owR~x>X7ng>n46`;G+n4rpZ)m>Q%cYDB3czd`T=jIDB_ zQ)PI7kA{(ef{RJJ7GRqb)PfDj^cIRTzvzNjgC_uNHe(M-!KZ!x<=(8+bOk-iv7a&s zBGF|-*suu(G7qkOm$ifNkQxAr#a|vyMXC+>sM5f z0!m5ogq>sUr<6y#*uEEHbVN9hm#!Djg>d<$TD^UaVlvjeYQMN#{)+I4^*IbNfKbUN zbw0!-lAr|BEXArH`T#{@?M$pC&0+AhyDrrBGSy`knq+s=N!S)C(=2IYi(>ugA-drU zr1TH&y7zaQ;zajQ4|RI5tNyi4s{M;KzF)!J>;w#3i*h-^u5(L&NZH72!Hult_c4F; z5LJvHD|yHROq7FU*KmgjrZb=ZvE~EPv#7eN$5}1CM@>6rDF@0tA*x3*$(0oh(psb2 ztPU_wvyQ3fq1g6%!>F^rUy2GSV!Iys`MnOfocf(hov75$oukldqS}w`@HLepC{jju zMbKDL>dLPXuTXsH5G#sjO%97*m72ew1?m4@VZ z2L%6N=+jV5IkoYO7Eh7CF+U(#mnp;I^GQ3c<=a_SN2*VbVtqE!G$bM6n|v4(eW+T} z2RXJyt}oWoFa3px3A%z=`3l1XSLuw*zBKmU$VhP#{)%|GA%Qe4`!#ySS>lHzfD|m9 zK<&wy%>9#$<#OSD>ilUie@?spf|G7b+uQ)p6WNgS6#i$Vr#>EzfB&9n@4NvN)aPTVPG4SR;-94?OofDNiQ9^yy zZWdPKPTzVoyffonen&-~BE!8t4P6-sQ44*^ceKiGXTEz96{l@dB_jHaM1U&n+I%`w zb~vn%8bSBbg}@=Sm?f>ccx6#)Pg~AY)Z_Lrp_<=7^?K^D7guX#Tzl>7o%(-NF!sxF zO|HG{6HW%<<)*peJz6gonp}t0$+_J$ZG;;RSLPhqy!PG|ND@qQFjNAy=d*y0#(X9&q+V^?y19phl zErE7qL*>grJ$dosD4XpA2DLE1`Jni+Sm+0s*KVl0kTes&fk?rO0w7t<9A_Aa@cCrX za>r0B9}bEv7e;Hw_FfcVGQQXocYh#@!~R|6wfB1NyXoegf(%bhv)8Pm&kh6pXH8SA zj~wyeUTWT`Dryz|L(9WNkK;P{a$HJ;OtYkj#6R99V!>5!DvnU3sFC;6D!TdRTHdU3UUMZ( z9%R1YKsb=0_=cV#0fEBNb-|?(#l`KrMFi19<~=2P0SV^~x%s=-RWI^^c77EmKoNlugnVk?POb*f(|L58vfyqf z(kGvX;-}Y|9M6_C4S~CoJ{RG6=;&9si85(9Z{yI!_8JYOWVQ=DVk2ELh3AMvDv2c5 z`WXH$GM;yw3zF?ZXBL)n^)dhjB@K?B*}6*Obk(0W{_QJTVieG|t_?_HpJ0*32S&V% zT_h4>Sva3Xg??0sY-D|xHif?$XQn^YF^Jl7VtTc7dY(IN@G8<+dW7phH|b~7`9=`z z8R6m-K91n$i{O=g%E8H(SLY*l`bL*MDI*ciQG`07h0V4N!mU^HJJ58WV@N_* zK!P?~>&XP;>&ZC&qsC>wIhbB8d(|I|mb=j)=r0q3(T=sv()IS=FwFb`5i2Horn0(a z*`%L3Cde1C4*GpP>d}qF-Rk*kkFiNcogC)&jeJ-p@gWJAWj#qKM9`j zGxCc+?5WEAG(ITT7=9*&=73~M^w?5GhSMAszJW0}#>gi^s0$A@B_&BRf}g3Q5U9ku zhV)7zIIs8@Coj%pn;JrguGBVVV99C5MheU)A&1WoAx!&WX%;0(TDYsd32%S>`ZB>y zm?CFYGb3*-qfNX0=#)JxYB)G7tw>*)b!cTNhX1r$zw8MPqi$WRnKTZG@F@vuKjZWO zufO{6^s>-P`d=O_^N1pdcBbRzYi+)fyM|tc>6$Mv~eW z4O{kp&`i7HH;RH9c$6HPs7~Zjcj8eZc#-t1DQ~!yPs75Jre2oe59@<5LrfvnXjM~W zY)t%{cZwGb<97KIzKfS|Oxw1oClkN_qFkRU2{wISWozLM=2r?8jy_0hsXE*Ld2ac5 za1|QCx~oeq_+(S{lB{X9^5k}o9E51(k;Y1u+vw--rsUB|H8Myd>lTmU&_&`0&hT8< z9KsAQ-aVJCGid)GLui{1dHejS|HMz?jwAE1ikZWorEp0uQPj)hwMSzR71No?c$xG0 zi=Xs^TS>}Xlogv%{AM9VEL@!yv2Zj?sIdJ3oY(Hkke)PhBh_p)BH+w_;^U&nQ#bcd zO*>83u+bo^1nyaz1#O}Y(B*mao_P6V@4yy0Q0d~ZcmuHg1;28Si%2O~)78HaPGBe_M!3rOfa8NNm5q%i0-M6{mcN%I1ul?t_w{ zThF~#Xw2TUQiis3p*$Z}X{~`Ky!B*_5gMkTKFSh0`1Vh3;oNJi5d0;V`eJ&nx59LZ zJC9lj@HtWODhHB9O&kd7gCCl^vVV@v#P{dIJ{LN-J1_P-MM3$(g*(mL{BizI=gnfb zZ4|^cdVrgD*v1!Gxu3qO-N)CrPs!oY9IrdQn<=yOFyvt;hTLpvK#g%w^h~>JAfsM( zB8HmV7}M12_*kM4x54jq&@~Jkibs1jRUfJxWjl->527O_hV3U5AlSc{#u&HUSpghv$CEmrKkwWdPc*TA zIo(}$jHS&~^90vyz;ms2J^A}T5^jAfo$X^tG#XGK0~eZD_~8m?KmRAK?^2h4+u?CNnmj-xWo{#-LHd+k%g4sn!cc*$ktgq7%X{tP>( z@oF?_Ad*sd!XiokCV}x7-Mb{Gp{?>GF}t}YF~6zR)!0(GT>agqZxRhLkEw3cQ3lUM ze@bIj^PivtA5Blw6{^Eup6SUny>VXUeCNGR*J`e2A#Wa!XPyV@M*H*C8RK%zPk|0SqtaK9j z)zwn8E#609`jt)N+NjgmDRz#?fv-UP==BI~?OB?1_@e7^7XpErF}6-FXau>c0I)?A z9zC^v?cYADBuo7ACh1Ai}q2o%kiY0H}TNL8?$!c{8KE;Vyar$N}@j$iC z&K@Gf%JPynbtwOx>B9@D%da@u__BA+OGumWq@E)M{w5wpJu66<#<&ZG_b}cAZ^QYz z$HrgT#{{REWjhF_voRpK5~N49P2=osI4Y&Im7&V^jVfoMfw6S zhi)JoZ%U+b*Cz2i=N=yCa`q5}!h>+HHm<qi8J1oOp0q+#7g)}a@8(ITF+x+3!r^i)!2Utva? z7{zaE?E7#V)Wo@mU{WB50)vI7`}TQQC3HF3-NS82x?|ri^Lpo#3ra~H=`?(r`z%q{ zgZO#G<*Q($$g-8#FaIG-Fm2G+T&kz}9hi=CyUp2s`wv^OVvMOQqX3 zyx29Y;$?cEpsPW$<4G}ew;vY@slP?ErWfbCTCyX2&kZv6eYV=6{V9(5ynJJ6rYLre zbJrowdGPStQ+dlQ-)#fM;e31y6=6q1QM_L>C++B~)m)1g=&LHzLTM@yJ(m3bkLFCH zOgg+l(RzZQ^?W^Zq<0H67DoNYuH>n%>%u9*AFnOC{0=y3C{;g{N23b_I#+F;U8pn) zoRAgpD38+JBloc8ZRXS#8t?aO-`P{mw(ZG-` z?9{58I`e5it71fye&iqAI~grpk!9_CERp2bk5Fg`>g?GmdZy}|iZgtNs(%^rhAU#3 zXeLecRS(h}{Eo^lkk03IFJzMb2kOoO`$(`pPA76D@h{S;882`D(CD=O8}k3*>aC)( zY}>VM9|S4s?vj%3MmnUVyGvTS8F#c%8)@n9yq|Z>`M>jbfiZMN#vRug z$F^@fcQdV=>F+mUoel~bjRV7cd+rA+WheQ$y1EsvY;Q~6&d;(;DN~JGywD_HJrQ4r zG}Q`vTfC>(k>~LW<6D>^lW#8mCJ0B_j9)XF68;Q-3%|8mcfVkJeLKH*(EME1{M@Xs z|LrIoM)h%by)S%yTeU9j6LLp9(pp(%ag5$<7rDt-tACl!plsI;%H;i!P)b`}fOM`% za$0$2AIui&?xozvG#E=p$+dl`j=9ajK^`3{SVYxT%zem&tk4>nq>t?{$q&7 zfq7T6qkmV|8{b}k8;2VHTNc{RKNspA=XSo+hyx$y@tf3SwA(}^BqHR~!`2kAClCEA zg+(Oy{VKg&Dym)C7Xj*HLo* z#z_jLaly8!f!yxtAHPMF_gF-ygJMbY$&8!xPaT<38@HnII2c!7u9OeLWNhWOBuDZ4 zpT;=OG63AT_p!pqDQtZNt_Z&U>AuBcASd-?JL87BN;X3OVM+aRy(s&6t5BTkx7!Gd za=i_;M0(c`btMMnqNaf~cnJoVaA<;or*E9niZu86}?~W$r-8 zY5m!zXz!G83+|YCLGcqZHU@TnyIc-cESLm0)Kj#JJaY}lg_N-Hly*FO+&MMHD+m@e z3XQ#j4#nz+!%@_9_v#kk`kkH) zb*|+7F4qgw8883yUku2+V3bc3Vqmd`59F>91rs{gxrA+wYUhP{%!- zKPceys&C#@LPtgXT;8-hvfBdg_*vG%;PG=IXdC|T8!s0NjCg5&W;L1YQ9>=y`jN*$>uHbpfQ>R%IO15X}{} zVU-4$$@CKHe-lsrE4F?=N6V9AdV4BRO>!6Q`?z%+MM;c~$X3;XYTr-jXkAakd$(<8 z*7X^LkVnPVz`!RE|971M)#9<>?a}-Po0`$NIwyru8?v!q0KsL452Z}%1noA-@SH7k za7|}kdo4|w^#Ja*PUW{kA2=1%mke@$h-+#Wx^^=-UmpfP{LNO0b((^9+|tDqNKrF zLf=Pwxgs0V1b*dUR%@WYTD*|vXTp|~Vo+1d5^e6KWey=}KZJ5y|I!_~NN$yCnluKD zO&SN_)#)0Jd0@OB_8JP`Xh-4yW55gCP#26{;66Ffi^(AZYu+?jH*5IMiCuQuU=83o zD2ZGa_NZwo{CjwhK*(C5`D$v|p%m(lv{H!l)Xw*TFP@)5-z1y&YTsVS_Cx*(z-6)m zeQ^GT|72x)2DSdfSx-aptM))|g;JQv=5bd~qtAWaZRYMVQ0oD(A(az;vV;pUs8rpL z=ar)oQ|pZIPsZlinaKfQiEW%;B5f2dg$yB*_P|7}pmgw1am*TO1InQt;{fWc0an_Y9=X`c`#vuDq3yVw8(||3@?2mwNW>RzP^m98 zf-fw;OF7YM2_^Vbll{bxxGr$>R~FmvFakGxTKt!Vr665dEkMIVscQ=GFOYs0z7_tX zidNL^?^M#I>H}AA*gb^o{{Qi(oux2_=B55UDiTH~Ko+uSko(a{)03fYM#){ybo3p2 zWL-)fHpOdDcpEhrcPcL1)Svcg#qbSWSJfW`^y=Wrug)nGjC0Ac{gBz?@a7j5Q+pb` zXu_ip2ht4)ruKhB*EM6#>Eo!CM*5q_(q9-Gf5m#|v+My|t$%%&TMq^;Mn>)OB>1IVQ1@5v) zClE+CB}cl$v~lTzr#4Cc(2vB_yl>P*2w^Bs){L#jAN4WrzI~35nnnl6a`G~~e{h7c zp{hcy95Q59RhETV1n_pQ{{~kL)S#*d?gy5TnlRs~V1+P#`%LEZ$Z*R19bS05l9`xq zlZ+28!ahi}wiIWTsRyYWri!S5?8A|e36`-xX&nFXYl##*s|5nvMl$VS%@UT6e{O-W zVxd+dvb%YE>voiLnf?RQaYS87YplIU_rN&sB-v+VB**(4lnOFaD-@IX*rk9QJ`4Q3 zSQ#L3oaqV=M!LB`B3i1?`_d+MyW*%|7LF$L8n!*vw&N*^kng=b5k9}$Cl5f_r?1?# zCX^Ocj)xQgB@`)QFhq+2>rMiK1+unnmt!p)zt26|)dit`wLjkz)V1mrx6L@3b#CHy zE@u)qcD^|>pBFN10_H@=d-{Ubzw)0{zIsT#0K{$h+7}QB(|`p{F00`uxI@Ng=hjv= zoK7So&CkoBm)dGn)X(B{yB|PYN15&C8Ll!Y{>54z8!%3bfcvcwta!{ft4upQ~!tj zj)M1J)#i0ZS)>p{jDij|JwdH3za|j2fq;K~lK&>-lx&!81rV$n<(h{;RGK(g09fLIdPT?FS=l<3j;K z(X7JgVu?;@T4-m*Jft#k6xr{K$I*oR!K%|_$U7qN`gip{y9hNw*mYeGdblqpjupAP z7&BM_g=6MKNys|AictyM%f19`mcEL|?j(MfqyYWE^zPqE0+26?@C!Dxp28jxq_O&g z_gYMWg0%iB^b^aR19Gc~Q13nK1{bt?4}Cpj*;k{V&o%kCZU1(+ z;t^g)Gn`|kuOeqqGoUXouBzqF)0yMBwjx@$53@^X6Hu_quzjbNs7p`tnXcG>zT}-6 zhrxX*l-N9|2FVVkheD=AUZr`d4^`LIO*5hC(3yoFK zxySv)4wZ)ro6e#Fv06KnG9Jy4R?UcKHgd2whBRyTleeMj7`ec>7x5dp+^I>vQ|27|%Gbo8+!57cL&AWSBB_-^Q97hGMzjA#X|x@_QEhFRYGt!y4}JUJNzV zx?NN>ymd=PU?cfk!47u zsA?rm*-7P5Q|dhar-jbQl?5IkN&ma7bRNV0Gp-$WiK&OLY(<7wG}`dyB0U2({z~h@ zshFuDumuP6t(_rsHMRq!Y_3JLy8)3rX|kZ#0wakFv9G?Qy%_4_WxJv)twP zZ+S8+|7&gkcMIqu>KWW)fe1gB_DGei=iSuAu?BYKcPe7J_RxtH#QXD0yixmgUpSIy zoR25)U(b2HE&IPlvww3Eug&UGMwJn+#q{LltoIaZRq4{opG128vzz*NOZD%Mkv`Pu zV#`>S3EWLraj)`vgE0CkXtEN?>y-ZgUnV195veiucHQ>_mMn3=XaklFc@^}o!@F$& zI`9rUx5q=8mpni^=l_@+!3)48iUb6+N4V;eDcHzVPZ{g+$)%rZZ*x;ZR>= zVM1%k8R69u*wiZ4cils}WMI*ihRPdC*UTkPkE!+4i<;)iBX}n^@A8Z&*)D$ z5tX$kze2SMAhMqpxwSxi zSqS#(oB{x=y=zca)1(x5{<{TP&kbCH2kRM9fR|?)9B8ru^^w62A;~F)RLJl_1LTy# zqXdtpfju5rklKClhRPsR;qc=v6ig4yXNz73A_dXY27pAy#Vu$^Qf?kW@bq z*G&8m7(Q^bgf>@bB80jKjC5CvV5w$C!eusyJG#<68;9)J`h{e~l3)k}rpU*-{s1r7 z=vn)o&EpNQKWVf6v33J1{WLHJr7vN$;e2kflIR@yRs}%ncH{nn0!vo7q+ydDLHzbtij4X!FQyKvSbDcsTD&EQ3h(rag zmI&hwjuICJJvmxe26FItz&;IDo?|$w@qa$1z{Ki`ebi`!fxT-62jkt|Sn>}3%_sD_i(vg-Qx<^Pa?#O(gymvGZ$51|Bz9baC=rQ-l>Kk-*pC1EQ}kj z{b7j*Or7PPF*UQf*4!xe#998i3nHhLL$tpo6W~8P10p*{U}`p!3l|9sZ4TODoElqK zG&`U`4%iRXHTdI|a1Dv$v=`E!UPsi=QY8@GHIi)GR6($79mbvbujcthZ?E$+A0SV_ zqRv2At{n{b;eNKE-h92qRfY5T}UrOxP#{)#gZ<=U*<$_gy)0|6@4rki>pFce1S48^bN`f}TCF;Hq&)QJClbuW! zz3Xm>*ZSq_m)SpMZAI@EEP!mlcP?7jTe$s5QVg@ifA=2N-gI);#}}49i2=2&W1%<}a@RTxBwXm*kfzV=2J>fp9bJAhT_pFiFc!mv9q(Sz8NUrw9$ z~}|f+=lp8C^*FzxoISPE;C?fBja# zDasWJ;}0_hn!XO4Af&DNi8Yj|DE(0g&c=dwcf?aCo~N}-NCz@3Zf`)Jjf@8w z9SOG7fai#|eDbEqpyC?@B!{sMfUa+No%p>*9_V=$+;e&esyosz!RTkpAytD;`sn5P z?B(K;eujo;$-lZwYm^)n?=>Wj!}y}!ev#+|(pcNNe5MZ&W(_B0Dmm%q`;XAoAFbfV zM>Z>OM35vMyN2&PD5 z|AWb%M0jW+`)L~plD}U8*;OIrsB&A?ejdT9IB^xo4or=wPGFHVhtX=W$4LAN9htCa==&1#;sE#?-_cmWufW+wv)5^zLNnc&?!EYjjxNJ{- zjWvChz63^0%J&UGNaB7YjUS}V+cvV}VH0Xsq{jUX_D&$;%g$g8F7I|$3j2axn4eKG z$|;Hj%wtXIt3QgV;JPN*Zw2a^3ilT4^1a^d=A)7`eg!Yk#z2aIFWRB067L9PLiUbH z2y1+d-}_`|Ibv6G_~Ku$k!@`O29Hk74W>+@A&vfUcEhjiCdl5h{0ZXtgk<{6&Wx+V zg-A&bcq_m~Zu|~cs#ITUUW9W}XH_O}KF?zYnMB**ckry6oKKn;_NvmaYJ|Zy0&>6g@W^E$c2NfGA zkbKf3gE#iIQz~gO>09&t(EH@_d=l%Psm^_UZR;xWIlFzl`zK%!1raLiFklo2TwrWo zeF7)2VvFPk;slk~4^{od!-2~(8^Qk`7CMhZKEZYEoIr?hwIp!9pYUStgVahEddgh@ z4pg7b@B)19X%%{;-a1@!b==8i4j(PHl> z2+TE4Df{>;n`vB0v2D^6U+O2qLIBw@t{z|HvV#zTrG=h4uDx&3O!cKC{s6ElqTw zsbx*79Tq9H1LNV|>T$7iwK#KuuCLN2t;IJ&2PwU`o_gMp{J-hWpC5TqLnnnOSED`; zC&^_2$0C+3pyi>ci3m*#B+_K4uJR36a25VU+Idmj#y?lm)D2pOMS`YkI(yWcR!l_w{^uVCp8nIk#~5`>MmlBuISup^haJUa`+|) z$OYMndLCEN4CGmpmoX^<_jR|?KRY&OSEBB6HYadS>-}n*?y!OWx?_o|6jHb_Gf6$r z7h~U-d^4wiQRM0O%+mj{TOvk|<2JTnSL&ARIZ@n~z!;{6DUGt~tpO8vZyOKPa8CYT zbY@I7geqaqw!jxKD#yZ<-fBRDn`HjUK$C)=@>lM7<$>O1KwRvr_^ zT4q7b!&kxMCPXdC*fUcS9vXkeCX}=12K0vX8;=xqy6D#>wPx9^<%4!`zXwLFgS*`e zwq3Xvi4=_>#rqh#Au&apa-9U_u+eQ&hL2^nzrhnw^0_=MvB9N0_s=IUR8dTQQwhR@ z@Q_<}p6}wBH0?{>B5F-tnYkY9m4dF>(d^ytKKQjx_y~UrI-==C8z3I?h8CH9GgS?~ zkx>E2A#}`Uwc;sfM_XSe^QDFqe8sXG)zgM7&6gN!GG{9BBV5Yro$K@?U|O;bsMAFb zdE9{0;37Z_e@M}}AZ^w!ACp3C{YQgK;e<9c8O5yP%OQ$)U~ApLKSMspf=BBbmHwP@ zY67*1E=V|dCn0__^}S_Z`T|?uCVx0X2&gZEQ#TA3Y_99gb)Dc-Ermxgd&6wNEI%rs zt7Ui|49z+oqir8X7{tM>+u3R=$X*l^DMfY>C+j4K-`=KgzaXb^)z=E+L_Mc>8p$)+ zzrIHK4puYVuVfx2U-E^t;(+lYnWTD%zqEbm*x08CC*|9q>7`CWKcNjV%KSjot0T8` z*84S`z=Zs~A8g*=1QkgrQ1^?j4PSQ^Cvaq6% z8ZnOI;l#p}r5)(^fC-Dp$e0pMb;u4~6Tv}Mr*e+J0m_jI>vQ2IgH#jq@DfAqPm~i> zuHo@*3KpO&dBOpI0Iu z>sDpUi(OqF@gQEFmzJ*Rf@^P?#RgvSMqSkw3Sg`!{6Usc64O)>khh?(F7T;29jxni@dB6{LA0scIB)~Rax?>-HA20xi!%Lzz zF%SYrp)Bq^R!sgZR~}61@?>}JWo4@K)D|1%T^_GlYHM z=#Vd@HK200INLW*o(Lv{rdc;A%)ncMvG+}}JA;vN?^o@d*r?o!gP<$KEvgWaCk!=J z7Ile;i9vhVDn;xpy&=lcd+th@8k95v%Ygvl2sEf)W4^PnbHk%BP|G$Oi;?Jv-5VxN zvwGCp;N7A7GX58+J5xRY)vOos`brYmgveQ;E=9U*7EvA-)^0yf!2NC@4ifkDhY6E* z_-H7S5qDE#C8j2Kq&!Ejf=b~6BUhd99y&VsOWUTXo~5}BVc`ti8?zaD!7IEPOJmGX zldj$OW_uAo1wV1pmkw@Oz?{gPV=RXSOVQ-J%p@TG+`cT!1$&JBbJ$q@7Ke{>){wovuw8URundNps>- zUvd_9m8jlEkA4--5*2eqb1qzr+AZE1{iQ5~^I}YE1m?FjTeQfSY31Z;WqVW#!%{g9 zBJm0CiRIhgG3UvjyvPv*-d2p?VN(clG?uVxu|@l%WC9Bf-*TiIZ@1p9t$Z94Cv2qk zXCEOl47DvMm!Wo5vePgKezbwVlICT6dX0ziEnG!dP$s^Pn}}*2qHVygLJJQ@#V83Z8 z3SKPyq;P!F#hYd`Bljn<8Dg0ekHX9JCk}cq3&)i!c*#hyFn~{FoDs%(K05<@*9I^aacvW^cf8bedgN zXh6Qj4=N%XL`yW$Dr2zT)e*a7qY^-whpWCjjT1iw`=-&tX>Sc}&36?2F+A;ZD*;}C z;_Sop?(nRFl-?XXCG>Nu^uK(-M|?NfIpY(?>8pU?BjuifyS;4i{d$|ur|}pvuaXT5 z6T&eGPn{8yUG{zuO4l>G$Eo_)cy}?SHJCmHFvy$3j z#=%z(C?Y?2lJDS^E0^W)9sq@tj-{tIqyt~_5qn4dZ8aov*Ro|LDW+l-QcDx<xpc%FN7m|eKCRX2^H_VBNXgqdLF*3;3q>(bG?5_ zs9hg{{@7|yC7vDCm@*;LY)ibLv)}3%PGSE zf|>42G|aZ29DI8BJr3wY4u=)(+-7d)Ob{#`%%pyUA}!h{-%`mi8;NttW3;NnQg8~& zIxk5b23Gv{sp&uzlT*z&Fig+{842e`A_fEtrz)E5US2!|Jc#NdJdKLX zj10X9=dY`_f-#wJkqd_qShlY^+~4v@JgVSsW*hiynUN!igGqso%N)+eZN~ z8#vGm0dfQp4ygT-I`K#E1294OvFhrU^@_xOdy>j=k>qJ#a&dDPf>Ghnf(|ApswU7* z{_>1M#j`kV`<1;_QXca%qZZDkg+HiC)pC5qhXgP2xC(0P;6r)0g^0BtQcDSorLbFHb`&+Numi3>p(5^)dYxo-J z))KOt_n0{bm1zfyj!`QpAdO}&!%$~p^LsvzmP&=cp$lPn?=j2!rm574^v#n*Y-LWN z)Q=7aX>-sVUrhU;%liA5sX4gF9NNA=^SOQC_dl$GG^I>~`!w@v@our9o1m&sbxY^k$16YMYXc0_)XwVHYeo5~iHuW}FoQC0!Z_KJ5>~lg7+m6C zAMQSXk|G#Y2+_B2A20T$VC5$r}8{+yj-}ds5FVtZVKFYXn zd81tZ{WSJnA%WsT71{lx=(1S){B4!_Of;0nx@~*g87b1Zgg^n&OO$e6@e{f3I6-<} z;Kh7&>fu7VYHrlMu;-7C=aQ_={P7t!qb?yrE|Lp*?bxI3M)N^E$8T~XTcY|B=@u1m z2J{t1xol5{xg{svx(#SR|CeIHK!!XpF6Yr{h6MmC){;zH+au@Ytr!oA+snildAZ{ zIwwZ@%G}XKm8yxDWu(@o5m%%U;a*_#dvMlPnp0i6Q=mqz8Qky=_o@=_EIY-nrE~Y< zlW>lzb8Z*Q$bDt`e~JY+F!wsg^MmzTIGu^Pihr|}rR}utCzNp`h103=AUEdZLD`F= zE*sw7f)BN__OB7mW#L9HSdVu)5I>vAg$V=$30J$lIa_CH*(dEd-lVVU*^q_Su z*1Xo{xf7bQakA{X201(yf_7AeR1>r!tLxeMA16!e@euRBtP&CtFMYqE{r8N)4Nz?} zc8k6Z4&CneCw9KcFM|6yuctw6Q;W;l*y6~|^8?9`SVsb`SR*RafCW%0!teOq;Dq`p8Je%m~@=13S6JZmex`a4voBwhj(@C;D~q`mPhjM}wlNelSTCTtZ7NnP<1v9I(={Z+C*5o_J~@ z=w0CMUzUclQ(!2rR`f>GnpGaaCxh}=pAPXmytbeqB7l)7a$+Y(EDlm^8^&2A4%2zE zi-c>~y$Er_PfVSfic1uR{)(cqOt$iJDE#xMtN4#My5-+vhXb1B#w;7}b*}9Y?5@`% zmueMx4wuUm-Rr~?{Yo29OPIdh7W=riw)4-LA1*UMEvQ|hkX8i1l_*Gdupb`XbDqF4 zens1FnB)$Fk;`NG6zn37ONp{&>YZOqx4*pW)XiN`N4%6wsp|M+T?h$R{~FeA^!Spps{%UL z4o?}MHFvhm(obD~ANar!x-J3KAOof!@@wAF6kce`QuG)G#}g0%n&t#+D5yKUV+FHk z_=UERM)7~%)mZE=0>2nz=rJ~oS^`rEvX`)9bja-svYfwCDD2C;d$}t!}A@R z(^i!QC3m<*!^p|zK!`U4>3G>$XY6-{&8Pi3ujKVm{AN(=ZH{{ZUajmv)f- z!cU#ZN??~?%VXdprF6$lxI^@ZvdDD)nKhC<`%;XffQ6E5Ag4Z&haq zLv>S?f$_hH)uBfzX5@_Yix3eZvhTsE4kl1K19yP7_nE!1+*05&&@)QX?^xuO8q4R2 z4X3L~{h{sLX7NX|lN{ZS%gnRwBlGO12C8|aIYm&SSN0@O?c$3T2&0U0Ci{eJC@f66 zybUV(|GY>ie@mLR0RE~W@;v` z3x*HY|4t@2pZaWU!5zZTcC^9QO(B+U@5@nt4yqB_eBb%O8Pfwk&XM6k_h7fFS8mGfeg~}3D4y^$Ou;7b?R!88W zIm#Ffxn^sRa#J#63|~0~FJ}V&o#U0{^FD2VA#knnP3?W~b@RzWBx`7+v2zr%rZxWi zldq{qUag1B@<7u)ES!>fG1WXP5fry%9zPH4ux?6AYkxTdG~RORHin6Q+F{<>q^%^O zz1Tg7P)uUN3iD-vBLEotsZj+wlsfQ?OOFU^Gz( zpb|P*Lnjd#Fr-d{vZDyn5TixBpb6lci~n@}vipYi)x&(pbKTYBB~w1fybeXS>{J|& ziw>1+>?f!;y4TqcWTJ1108;uMLirw));y;v*o)Yb-KM0sKVHz?36`hB@y^-lAogx5 z>9_BJ#v#{dZKB!rb)63c3Ge>fZYYalUD^4@9SM`A?a+8j9`P8=rVq+nPKS>8-eEI+ zzu|ZHv1D1-c9p+48{6v7AHzsnrynXLt%Estonn`OR{<5Me(yr3yP$=#(JKQ)zRa|s zEJW_qyPo#~CxB!Xy3y}TaF(HSKAhpfPytPj7TC}$GtfGFQ2m>s*W=)lJJHx;HgFj& zz-r?cm(^`Y`jKBqGti3Fga>eI;W{4Bu7e42(&}|1RoKo6`m4;|ZOt$W$N zjQ!uq4c0x+o-!1!dr(hMtNb#2+(75%&OJb%mPvN_elEj&A9Bv02fl<1S5mmCaK>hC zU(Xw$`5aKQfvOpn!JpT0wDACL7FPHl0<~ZviYAWtmHcHNzTHJro@!@dC3!s~U(tTA z#SqPPu`nqQDX}{ZyzvvP;j74`>U&CK&+&BhU;VGDH{Lh6u@!-qW` z+%}fea$ItdCgl5$mj|{wh!Cb$Z(|c z^K5W!pM6`Fcsee7vrLVd5pF%C*l`w$POxvcmiy^9fVUJmV@n(AFUS%8>X{A~y@9I+ z<&OIp^Gy$Tm?Itrf+OT~EAZarF-BGYV>eAfgS*WRSVS~M5;XSPwm=ri(=a9vB1G<6 zEhmN^l6ClgrzI zEsZo1#O?M%itF5srCP}DJ-Iq3!C%Yh0>RFPFWvbkshON1i|@$zUu8?T5hB*`_52|y zF8m0?wt|oL)buI%DybXqLphqJ&k8Y(1UUk3$@IV@UxM@@CgYl=Doh5fn2q7y7%3*CHyF~Rjm)iO&pz4%AdCKy+Pz7bV(Q#aIZWhxCfw+E~0xw85d zpwBGGW*gr?di|P8I}gMnn9jqV7?5$kXzPG&!xYdd$F+exoD#8pn-^cmTQq73N6%cc z(BPP^C06lingD+mPi2-uoA>pzYTBkG@>t^5EKD_D00wdGV0fpjrilFvn$mZTj5u)E zD*z$)E9KqUN7;W%a{gVZ@ItHKWV67<6%oJnBdo5Q`bcLA6|POv(D7bFwvS9}<&qE` zTTO0U@WJ}I9e7u!0L+pKnW~Pok#?0v#>!6a{Y@vW0N=6~vu+AoZ;`E@w09RujN_aB zrG`Bf2=hWhLZPd{+{PoA<-vk0Fug|(0xM`l=u~z(akZN6b=0{_%$0mp$lX*F*qYCy zOmUP+LqBSb@i~%)$ZIP--WS=cK=Wyc8~THX!8BW?r*LON4m2pl{hvQ6ZIe0%w|>q6 z3XZucT8I|4b3;?SCJw~1Q&xl1Kc8>G&DRG=hwR;q`+38o_QqZ1Mp&JK%$>Zn!R^;1 z4O|X9Hl(dQ+RrHwRaT{XoZy=)YerW2DzM>C7vi2L|8m@m>3`ne|NRNblpbZz#=rHH zk#j*CsX89l9c((y03C54b;Z`BZ!b11C=_2H`OLYAi_yS6#!_1Rm)ikH%!I{IRD%ID zd@owdvU{8cJ(4w%fFXY1f3w5?f#5o8$?eQIe^6fxnSW%VG|>}9A65*7vOmu|UhnXA ziM1E|4)iAF;4MfzUf*}MuZq!rq|h|5KXE7n;gXz2bF7gFnyu>pW$O%Xptp#>exP)5 z98OVUYByVj&-S_)EcCsc?Wu;x?<-*brSdkG@)OSHaBLW$ckODZTfpp#T5D@w`~MoC z+cww*i%_ut!@wa))0-qJ2#BTHK?|>@^OaYDsD|P|NkA%AWS1F8;-p}tVzq5yMD5t!t_ z!W<$097PJ$7Z_pUDOe*kDJq^f85G`sf5Rf-2$xaTWQI|O+&LtriIsa3^F$kU)(B?D?j?@MtdcS>Idck-s;n%CuM z_NVun+JURRpc2yeh+{`5DL_;pM1$iZH^YJwr4Ri+yBr(|-S&>^m$@=quW&_M-X z9d1C)KWjsPlnwIR;*oC+DzSz=zIKe7-~j0pq4z26s9I7|WYFjW8vqvnta@xUUIs*L zcV_@nXN#97WgynsB|ZQR^))Ax)ZN+lXq*u^r=vNJctp`}$eHht==w*}Ho$Xb&O*d!5zA5NoA}KYC=n$B5lkBh zoke9Yot-4~ij=1u4A_wiHbNwM-2QBU6IrqG*!uq{kkc{8eu2$%k|~4f47Zl&N!?|D zj|Baf1V^oS4Uiu;&;p-pwx%M681ID7u#4=HM#2?(ZD}s4v1FTJmekA&WFl0OMuReI z191!9#LNalf(#xX75wJRrG~(zJNYm+>^ZmTQq=+siKuVrNpV|=1`t27#nu5fZ*Mvo zRF=A{U;C;?d6vf(iF)SULfN>E?n~kFSy~@{$W_)VzG3WA;$S^rBom#c;8^5orwL^U z$XEcc7OTH$1O?eZ1hD1N%PEkSfwN{L|GfB!X|oup+G47G0HT|uL0LzVp08>$%<~gy zsIm7RT3RwX|F6}5UNCx}@^5LGCc0_~y|4C+ zrb&ud$vzz4$d;NWQ)ISXXKm+S6s2``MZEHp?4qi`HHB5`2qLEyD)M~dU>A)`I>=&7 zK9<5~1^7WD(xk)0tkb*gPzqR7Ay*AotX#xqaViNOEHN$4Z>s~3nC4J2!-6`GV=%Wzf z6Df<(`cEWhZM@aZQ{$6rk%ymG+$7qEiaTQ9m*jkdgCnbzT##XMj2%J9rAI=ibb z>t**|OF)~{X4*L${oE2f$)WE{YQIju5N|rsP}-ku;Mq~sq_8cxAD{?92Un^~9|;Di zmx>F58$D<%d^kB5#un60gynfZB;vkxhr~X`@SNb7wwehOF z*fYZ3d%r10W)!Vu2`Tjl({=8R8k?hzhGDiy z-6Qu#{w*W+0|S)5EwRX2Jl(V0Gw$tdQ{p3=UGq1cC?3Btp?OmE%_q{l6;Z0Vqcw(0 zn|xuH)GhKk)|gZiOik5DI+HQ`ipLRmvTylk6uPW+JOaNSfADYTT?8lEXmrGR3vTNr z1V6@CwDPkR5WussT`dBvJNaR8#YS*8>B@i=aK&eKpT&zaM{e(X&axtrUZry_jXr7y zH!%q5=MzYLI7D>hUG1!!AbHe{oG-JxTD_|M!<5nlDf`nzxMmDKw_B%5JPat!Ym|yO z?GQ_wu=`!BQ*`=MJ+k&AhGl@y$d4J*t{8T6n+x1EN0CFV^pw4{5?8I(8`q+8-KiB0 z5vzg9rLlg()u{>h`vUkCMyr-Mlzg9qwyIU-d1?~*%x|*3N1@V(bsIg>Ws-FAY;~yl zQo3H}y%vyT17gc3Mi+41+Zs{`t@w$)3qZx?r9BG*)qk8SLQ{>tMw~B$>zS+}7s0&vlJb!5^EWvt8Y z0?DSDPg31*?lwPC3M7wbOaI~>C6o^{b?~2^ z@+scLh$0V;({S}}9M_DGA%Jn`Ng`yI;}zL8sq;$w)K#Y^209_+sG>tK9uXoKEsu7I z>A3QFzRWh?F#}NY=!x{*OrMK27?`gVveW)p>b3)WOXv3a7I$F7+^wH|_IUu^tSO=4 zem7I|F1{7bhsCvEqgV(jr}hTJpV2S~(zOGs8E{Nt_8=D(Pez@Lk-p%6h@X+sDh&bE zHwt^^v+GbZZr^ph!9UxP=h5_no4pPP?LpB8S_+s^+w6xrfr6V1$FafuukHNchQMJp zg3>}C?DOO4FK9zRw$Wf(L-i}f4|ov8cRFAyI@6dPz!V7*tt59U2Km7^YRE%r=b!9g z@`)hzU4>vd;yu$k11o+iE~F7U$@gVx9w<0KFmby*KAH0q31h*91+-14k~vVON}Ffc zOAzZVE$J-}#FNXw3xYlkHZo7p__gg*9V7g8aQQEUSew3WzinF? zTRH&r*TmX{&Dw17fGX)RY0=a+88{w9>ANAe5c;#bX@w7&X4Em- zyKlXZ1?o0xDy@*0K4l+x+F06~KjMtwUTs{g7dS@te1u`}lO?qqu)mMwiH$&LXn!Rz zkRk8l#LhR55^jH42WI2MWUyPMU)3gQ(QczD+V z;*#%&b0^sHMau`{vov&JV`5DT_jGRUlFD{zoh4-HNS>s1+bW!-9g*>hy)Il=J=gJ* zH#K1n3v34Ho1^c>_~pi?d8~C(Yes^%Ndja@K3mxs%R5BxJ(bCcW>dTz8lGxH&RII& zvm+Z8*khu3*rnb#ceIykSqvs)CGpfX|5Ro6%mvLjHT1>MYF@5VSE((W-A)RZ+NBXE z?20@;;Q!bKOE4=3Qek$9-8E2^ zcaCB6BV+1cEch9G{mgbGo-w80A&R3Ke%rVM8kmKv43~-ZB`weD?TakBZ=jkL=4Mio zB=g}9fcu9{U`0NztCeX-z?=lVt7VhAQ$)dj-xtnHULJwClP{#}Fi6?NIDl<}WwZft z98-~N+A39 zD=>`e%--ko&Mk`xTk3LSmA~q65z!;1KvNvx=phJRT|l6#@%a2YXdVK6^6Sm^@`<_6 za$?F=E^JU0uSuzFG55U^C%HRZhp_XG?T3b5htxx~4&^*}sP=3zpO?Be#ZzA|y+yM? zqZrd}jIO6{T?SEJGrg5BzHqq7eOQ|#8i@_}mCd0kZfh9E2xP~r5ip6tNw+g1(wQ?= zl<0J*YOfE8&V^=HGYq_})Zb}yQ0Y4g4{6rK@f^NG+L|^}%*M;^i@FtC_k7ttz(a)J zQqwi(LJvQ_uyrr$;;p6p%(nGzz~*G%8ecLXqRmh?HVge0nmoP0)81OqunU`p%Xz zZj?3Iex>WoNgU(8-O;p`QAl)+MXr<$3t#X-JH6#&cnlrU{YIP&jAD3ZTF^Nq4V)7&zQY}#uX^O$XYv*?T5l?s>HUe%}$ll6DYu-~SdY6T^nJp&hRz|PZiGNN9g__6}h56n` z2o>34=zgGaHm;{p>oPMwPKA;DIt1DznNEjg;<~Hq1uZ4&k zDJ6|zq!c|#3^Ej4tpCJCY_#-(fGT>);f1)c2&rH7H#$=ES7b)^*13OyL5LB9m&&Cl zy7>n|Zy1(XzH}3!Ly&_xYtagAw)j4==W*chZgtJ`N&`F0WT9qE>Gh@chTzPLughd{Z(>zn#>jta zob6LwE5eE)6-c%y)zjooeE^Ns7nk<|=$MQ-Lcdi|#4x_}i~Jan@uc_}0ZZaMn}s$V z5>WaS!*M@!hUtlbwG)Ldd6&0Q^)-ye##&99{$nbuh2&5htLm26!a2Jje~E7X&q&(n z1aWsu-+VQJ7?nQMZFVF73T7>Y zPHjVgEFkw-Xwsn?xjxey!V`jgC)?;NVP#F92vVOcA!GbThLR;@i)*pjLhh4gA)`Wn zfN+ENn|oPClYQi&zY$a9lsTr}a*V#9tVlWKGPja(-evEn`AL0!%=ctJJ%B#tH+hFe zrFpI+fgS~PT+kk|Ig2Es>mdlkN*}qX4e1;Dyy|-08d6Dr(l5ic9;vB+=qlmvDG!iO z=wq&vyYwf|S3__V%zh{&R>3TZMnqQp-OKgo0jU?D~%dGB6XdkTN*WfTpHJNp6o`bNxIgEtWmYa@{rU!bs9dl_Dt>5 zdB(O?ryi{%u`JRe#*2j{SO`QMtg01M#ES|dsop{=j^?Fou?nK}NS{j_C52^Hz4^H` zEl{~NnJ`VVp)keiIn`Kfo(W>Y?^PF`YT99O71t?F@w;c@xq2eDN|04gi(>_2@<)^) z<-!y{%Gg{QRdDap#z;eC9g^<{KlnkmwmRa7BQgO)(V&b!U8&60|1irb3l6&vE_9eqKs zG{1$rKG|6f?-6A}rrOL#U`?+>f(m9{%ve*5f`WEJbCX_NpOrtI-+n!H>e4N}&~=_k z7JQw$_ef*9^-Od3ohL1|P`}i#Pp`Dhq6?;8bM{Kz=j>A>vp%x0$cn}IG^kUzG_Xsb z)OqCa)Op0P8DFc=f4(4MrjUdx@#E>qCrtsr8sRprPhlldz9!d&j z%tC_I3?hNso&_iZCfoqy6IND;EQ%4Lf+dq{7TfMIxkm7F1e!^C`+6c%}X=`8YXAH-VX+7LW0T=6t#g?6Ib<*bHE~c%KoXTJ~wWT`!?Qeg} zWFVKb7|#?=1afQL1p*PgTt6y@K4R^rT&%V%mcngRT>~ty)OY{=_s`@UQm!?GOnbuO z%2=RW$M{kQ3nqP{UfMm}H|t?chow|oLC(laACfCbD`l|AB*VNP+EDw(`>u~7Mws^0 z&dphRDVyiCskD4A`H>Zb@ySvl7A^&Chp|G=X;<>V0=u;5jKhbc$E4vU2=rtT);44s z9mu#Pqor~gc24djx*)~OTa$x%Tl(a*4IJ-W{XtI=eBS&^-o?BY2laSY zSqIZ2LzYJndb*jiyRJMl;zZtQ3Hn#)Xyz01o-v^P=@RA;bFp?cr?`$F^qY3kcIG&r z2sIF!%*K%C{2g8k+A-#GdP>C9GREk1bTPlnBMvYDy07tRJcUO@TP>LjIu42@R>3Tb z5PXOEdpO7BxQrlVTTANVbdn7kAstObW0~y1ApUYAZQWlh9S%UyzK@k>3CS|*AvEyWchRC4Ict%{Gdg3B1x}?pz z#$uZFie2>}ybx*fI_ad7nijl~4>VeI8=GPi9eL!DIZ(MgC{`4S=17Ww1+#cUv17>< zPJYT~k#CZZz{Bpb%VkGWuy1j5;?%NwsFQlCBbP*r+bgb^cyc5K7BPbSVVM(kV7bOc z201~g3)i!H#EE}mMTxPb-?-t4D;4Q;r)&iIA!b+_g_|5DGlGVSg~h^1%q725fWp-; zpnvqQm}uc{DmIOFVx^=U0*kAY{`6bavD#;iU|b3?kKjYBQk+?Z)mvgA;Ec7eeB~=m zryDhwW?a`F5l@VgsD91uJ{kk^u<)P^B3ZNr1uufaBiWEr$kTB7tGB+1Ymv9M@eYYS z<#}W5gcDB4q;gATufli}?BBSxu&03PSAFSz#IP7)`lsq1fJ{WDAqA0y>PLZYDX;cM zGD~fBTGI^)GYwASa)R)QFi$fu}W3&YneSH-cQ3zKgvb>CcG5^E}lc#YQ z7MFs?Rs z->VT=Pt@e#hz@+BW_y8bu~|WH3JVzWdP-us#ax0|GC#70LS&FFbQyX;b1>KW(Dlp_ z^?FNHCP|CMcBEfDK{r5t`duth^KX^pBKycazk5&3;nE>%ZRptq^jugDRYL`I1egmD zMdoLlC3I4Kuby-n;~@gylV!$3oT}|_^G$5RYCoH)^fv7oUJwzGUmPp*j6CQqbT#RO zH9fg$ZWZU!{YWhHo_5z~#!Pj?NZHNJ1+yRW>T1OmSDfbBiGg2GFs;y`73|Kn$>f0J z(zvBpPMZyWDQ)9YSmpZct@TKeBwJEmb{CZz6{pOrel_F|gR7EK@Sy-$ zxJbt{^7FjBqntskgfhmO0_hM(QAdoVh!sI$@{EaF8myk=@62FZ29k859qN@r?J8aMQO7tPrrPF_rgCs!Q%=@B(njP7evcTchjvge&xd)szEu`^ zHK!oU$8+JT7Zy#`K-jKn$55E%5#_B01Jy_J^n0{#l+8GaUDt4fb4^*R{Ssr#GxC+b zGRnVte0bF)KcJ0_A-}~KQkK{uj(JksD1Q)E^3^Z$4(q>0L}dN@qKxv0bmgxNj0faO z1iIA@G3LTLC&;9T{p7c3!w4!KN1`i>a``RF?6>OJ1ZC4s-oGlDs$B9>XU{0NbhH)H z5ecgf$RmpF_rL%B+y*h$tK+jhcgQ2oRP_`pWpyp;tgZYz+%6!-LA)pAfO{fVjC7;! z>JaWM^?BF3?-++MW~Cdl!S!%=m2Z?w8ptiz;{-)*8|4g3uj<$fnI)ZYkBlAmD05h% zc2vC%VXUq#EmR{W7FX-$5PcM2O(Hs^QT<#BR;m|d!Z5ldj=-ZyrS7C8nh3g&Zq{!J7 zHhX;9fHYieO7DL-D6P6=|Fp^y3#O5yYD7hs zPHB!F-O@b0Y75yuJ=5s%W77=}ypSGv@trjG@NcH^i+w6}ee|x>^@a=6%z%+6{xW~} z{LZ0iR>t&nZ$e@L3z?Y#6g`$(aU!D~+~5B8wY2wpfveai*h<>omG=vdgUgXA;keK9{eGVv(ykB-KsYhSinB^^ZZo>7q3e{mgS5-kSR^5x4ToP2ea}Ti;YIzU7bpL z2`#Vsdh?;IkIOX$H*QJCPspA5EN}FloYiRj7ya9J8|S!(Si32lvlOL}$iB?knHjcn z#+HNw?G)}bYJdB7Wt@+)b&mQ4m>t@0iUD{ZH{UNOWvCkNWh6B5c5DVDnf(zFa zoVz09CZy79xf2CtmS%PIU`iccvVPswO3l@Rlh#WAp!_qJWIDU#ew~&#_E65!yrN<~ z#JY1+002Zm*!uJ@w$-Lt%Mt(p*t-7-u^8+Q#7OelV>yd+3eH|u?Nq*T%+FP|Fgw%O zaZp}L${behSf5O)L(ZD7MCqlx@i8eP60B*`7ipCs?a55!b`3>Gw(&$K{kiDU!&r000000NX%_1;miE zFeh*PiS+8JYCU~2hkB#~9d-#>&dQ>k@0I%5&P|H$fcw;=`vL#}003aCT83D5Sg##$ zw^6lPWw0s`6+s~P+ZV|mF_S315C8xG003LnGQ`T|avB&I_-i10xEssV)YPW??F@l( zxh!L%TloP100000fOu*dVx>|k6^lhpPEM|0OQ+My=kppG8rpQft=t+J8KFuG00000 z003>*2(gSY{Tn~1R4U45vnrKJ>(_kWSD{d7`bERT!^&hbEq8RWTNVQV000000G{V* ayM6;HXIVbojq8zc%5 zs*TI&rUe>5acTbSPar1HE*Xg&1~65r;{WgS$Im43@70 zihoY{NQfx%Fvyu|#Lf&I2S?WJcsH5D07F9lkR&n|78MN*G32n=&Q~Q*Piy|~Se=_a z-JQF1BN7c3DkK$_mdejn8Zda%{9w(*(X`9)y-BDw8&FJTGb(Ip(VMIO!ah@?mKuUi zq-bGL#1Du-LKxNUe9-p19OJX-4aIaB7l6w9`E|5C9F{9u3z*W-(a8)P)DDm{Z$o0V z67$;H+KR_h*o=O<{qnm0YJ)vEIGl0*YUxW}1BaPjno1`8^&poVH!Y zww*&rA4ptKCMwKnYwPOjX8nW@OABaeXrxkD^z+AY!YKS&WFKhBB0@NylB<1WhRUts z(9Nx^Y~f9adjU-hL@nc4LQ2gJtL86H_lee%3$C+>=!AV3{Re-_Q|E4fYM0aMCy>V@ zwEf`zXn(mkcBs*ZPBbDBgftXOCiE4)*@*TM#y zUzz9IS>^aP)opnUi!)B<2!8upYTxK{@1kF88sc-aXmt_7?jvzTJW)}cPxla%2i@4@ zdZ;n87%sS#AByb}@tYVwWt1~Kqf5Wpd9HKwU9|@<=V^(D7rg~r>nCIcWqoI7bt`R6 z3a&a(p?9Z59k5@MiJ2*JtyflI6LMYW3$ml?C~FbULrBT1s8g)Y!WEVRd6{4DPf4kY zJ-d3ojgIY(&jNnb&~bhgTjK4Sx0>bH4{d0pUgPE+2l0%@9X*=8M5y4uY3xQ-{0Zj( ziM@;3snhTI+cueOG;y8=&r|4lOy%-4lUt2;R|`s z=j(a8sod`BUxy!#5j;321BKiU3)k#$V81*}r(SVOOVxc3Y&z|DJcO~U%H$6T2|4r) zIrrJm3;U@Nd5aT-NSLNBC7+hgZS|F+@Pv@vm}Lxg7&N28cd(Hqx-bc~yk3$}fRPl^5bs*PV@zgt6(mmu~gb%0LS?!D9g!W<%kCK{Cb1`T{!Zdha)B zPEs@RQs;7lF*G`aE=s{xzwRkBJw3fUd(_FW+-w(*NYPf=_sNL=_IGDOty~sM0hWl4 zESXCK#(V$xzYA>=Xngjimu)A{$Ri|QUL#l@|C%LxLf4)$0wzDRWau2XdTEm5sCWQ* zh)}eod7-nLF*2eR#XEhbaCDiO?}#6;%|I7BLxMzSPxFSL7_W!+>p6q#;h-q?4n3)$ zA&?b2AqMe)+ZaU)D}~2KpmU{qmjBEB()zmpt8WC+sN0~WIoAZt`AEy=qWyP>5csHW zup5vTO`ZpKo-Nh*QC;!#r=KJ*ZorN?dGFE84En#{+-wZ1K~rhRw^7c4QnDzO$5HNy zQt}Yv=&Z++-={w-ec!Ut(dqs-Rzzx+!9R#r5_l@($wp^_# z9BM3saM2hT-w3>V5*eS&;zWuSIgzw}da-{RPUAGY0<5fi#8FLa<^m{FHl^;rYHe)a z$Jj1kZ?}H24|iiv`y`CO0mGR|iAVV^+Sh)x-PXJKS9T+lUaL!ym(a%Na8h#+u0FQd zQw`SVhxy~?b>r=W-gXkhD}|125hPw&SK&|#SKm2pe}LHlCpjZBxr&=nH4lf=hBzJG zS!kXpWld?+m*+#>!)~N0*SD1kb#Lk<4E?4}(BnH)NDSa&f6@Yrfiw z-+3ctUx73hGfRK!3Y;=#5nb#NSyDa{QPRIYuD^b0Rr9zfb6?4$6*h~T*!lVUEhM%t z`i^Ew;_$@d-ae->_p6+j#sKVP^JoxXDWGXw*S4pv0iM{>PaijNXdov_7 zWJPlQqt%a<6+r_Ykjkdr+Sb-ojxtZ80L zZx!qZVt9VL!OM9)ey|Rjnl+WIY`#3phx0yswNH-h7=UOO3e7w3cr%gxoI`1710q}w5rA9cW}shc2T8oAg{gkYBq-_UbS zB7L}YnEFU`awJMBUSd&U>}#caPr_le2yr}+AbPee&?J2G93~>@7CUtNZMrD650HqE z3l0&LWD$A%Tfao^u?g^hI{zG3Q-JYZ+6zl#9=shdg{8sHgp#m#rr32CTn53X7MAx= zBfHFm=*rVuE})mhUX;oFpfnn`L@Ve=&JR$>Vf8{8Z^43uP~)`5xv4 zR2ED}?)>Ew)EW5CGv*AF885m8-S zc1F#LI-?QFXv@46Ng&6UM%Vo%DYRd=DH7ZCgO6&@y2B%iMOty9b*JZ6gJBb*ESM4& z(ZzHn^LY%JOi5}&a)NG0R3I@=cKQe&r#{i{`cHF8rrJ#~o{<0=<#+5Q6aFukb=FhV z$GU@QVz2iTm_Pa!h=cnRtT~F$1L#;%9wjI_$Kz8gG^rS>J08B$DN?7f3@Lx1}8>|-2)DQd4eqa?7Qky8)FN5t^fX&;-3x)3+b+mK>R zC`Xq<=?72;J{diQrlRiPA_;9$21~zHwV!ehhMB8B1tBM*O>YXV-^YG9#i9C(0#ks( z6jlOr%Zo#QeqHTvq}w7ubP--Rix}H|gt$E-mGEzwe;4S5(NhZh>iL{dtc6>iVq73-({AZ7AzitnbV&!iMCA4kmWXk@{J{4x7kNz0QLWSGjSR5%y8q%IU$+H8zd!sr zydh|jn4LgkSYHw?e8;FTF+8`<1y5}<+bwt0{v-15ijTn7705zW+*l&M@f`<|c*D%Z z8Kq3DqzMnWM*3z->@OnK_e@heNpg_L&Qf#dvwfCs3k6rK8FBd&R$lJ{^z$fuykfK# zyfm9RP9a*~hdQpM-ajxyK|UPVl07(7RWZaRjxK!DU=XR=tc?(be358$`rBRw=z z!kGHh&X`X;AJ=r$^j&AIdhc7D?|nK9;&T2n90k}m4&b7pQSsBm>fQIT`ge&Ldl!f` zyhZ&4-^5m^K|S3$i(G%SDIC7TiHvw<_tK-A+nitR|8P)(srH5+&XQddzDs=s;{erj;-MHftmY$l7?8dMh zVDO*lR1V6(v*1A2-tqt|bbJZdT<&pxDa;ReAK;@AhT+lC_6_?=r>8vq1O;SK)-1t6 zf<4<9({#8I^Z7t&LW`|*Dv=EC!trSCmn|ctA=HFOAxmK)8g=6b~2)VHmd*@SKcCRFC@LbNz6~pmk zH2XN8_{!6HoPPxqw;358{hT79w2Q~BOl)-wxCA4s zlDQ#rOV^gUeb#6CMA=JKeFjE|_ldV;L<0=mW}>(D`2=J(`+gqy#L~1MEKn>Jz!clnR0d0VMTbyRrRpJGCePajaoUxi-;*Y)Ww(!*i56KHKBujYpn}AX!?icBZXn|7$81Y66_-&_cxw{{%=j=w#(bbonFP26Mx#0 z_4iX?y+_Bc5OQH{DV+l3C0J zj?O@)OsNnE>sT&50W%Z%z|8aa=uA2y&JJ!}_Wj&&kGBD(sqmtqopeLOr*A%K1Pm2K z=|j|*XviS^TV8cl$v^kwhmZ@H(05GUYGkruZed3sAB6uEi{w_t<@(M;$2=#?J!%6Y z>ZL$-Ttw*XZD-#F&%3CkK}h>k{2sY#JysjyN%ESkKw3h@rUd?A`VEoq)8xF0WrpCb zw>ec;_lJb9K{+2m(}l7{o}JVu*g+&>$&oSVA-dF3*Z_A-B!u;hgn%gtx=W$*vppWf zgC6wW9Pcw>VvT@HN=_Igcpx6*jsN5F`X_|}oXtf}03&{keXd;_hce3gcghV>Vl+3Z z6lWPDt#8>;!b$-bVfqs_Qx>O8Vs5wXr@m?m=#q*k?B+5eQxUhUAMx@rf+}0vYR+nc z97?||QBAd+{5k>y=#X)qgC=K|CUNqSkVvJbg}Lxh4`0Drsv4%S&1%BD zC^8`|xyK|EIG~n-t!qh&0U8KIo7zN3f07;N*O-FoHJPXmeYR)qTNU@2m*oqs2oh!z zE`Ho(;VG#uBq!Bs3IBG8fnB5)iVa(qoRY0!1}?F(RQUS&GHi73+dgAhrblSoS(niR z$s)JuI_k9l9i!)Cx?EAqI|UZ=qqmh=xfzzeWD7Z!&+WRue~`H3U7Rg0(P%)S*!y|@=uGu3Z>VN+Q6#BeLxR}*`as?b4GiBK135%luV z*(O6hM!EQNARfBDgn+s-3e^txC3+tz@X9dtw8A+4a?mt8sxHq?f)*}2v=*#@bA-PTQ|&P!QL1rVQRZ=&Qi@Ri zrF1xZDMQ~G-_n=g89Vpjo81eU)FTd*S-^VE7iiLHHtJy%+D!K#ZtTMfz(FQ9$FcBG zJ+Fw6q;9Y7>EbW)pN3KylJrKC3NN4_=Vwvw?kk}%316Q%C=;Y3bw?s&uDu_O*^|F= z92_1?dRFCE+EekC67{}Byv|p|d>9O5$f3bk>r~Hve5?j?7BVe#cowW#%~A~vCLWxQ z?Dxja8|sh6(19!u&7Jp>`3C1=jx6pvkdcm)sZNC-(+Ex%*eVepFnrNH74BHJS9!Bd zIJZ*_9Bl9cCB&q4HhIt!dK-sG_Ad)MM*dnv_xsx3Ty zJ%I`*+DA52oI?`|qnYhVr0y>44?6yI^q-|}!1Dw(wb#;{P(jEo#@j^|iW0s@Tg%w% zd%Ie)8N4%1Z-necCHMh=@=G)-kFYyMo_1CSW;a9IP>)Y%5eO5*-|f+z%K;Y^7E1it z;Fk_>Yz*U-QHonag}sW>nIhsQY$y<8(fl3cCug=wOIv!6N;cK-`F!V#wg`NwPqcNL z>fmu;&wnYonC^+~1$UiyTTu_0nPF3E`_w}-diQb~e40p-Xs66Nb(}vqkSHOCa8Pl1 z;N2uFr6(mGBfDEz9X90_Xv&$2MdBn=Eeh zS)SIjo|1}Fkfg$cn^>QuL-tN&!z*TpAr)ovWXHzL&=54nv*gadW%ZnMphVt#&)vgU0Gnh38ds5=dxh*4eoG;Rdvav(xi14HEnD(Rrw?sPBCJnMI~ z_64UBj{J^WVYTS5z3hJHV5nwJdH+LIrGkcRDsz1S-6BHWXc?1vjiB3 zEITX;Z!r>Gn%xRp{R;XXri@=gs<|(IMEg`8o|1=`BH>K zP1ybwpbW&jrQvG=TJ%1vS8$pXD4z5Zmt1sy> z0x}T)U3u%5hdSZi`kYb(9UbG2D-u!J?1$~RBBz;$A7*G?SBaOM zw~yiOI@*n3MDv*|-5j*R3OpMYu0acMHj_+9%%vVPOJzK!Obogw>;4ieW&O8(&}_)x zt4{~3c{edUIy!s%<#_>_eMd<8=$yUZd)}nBS_8ehUGzSs>2PC|Vh)KF^$q8cr=P5- z-f1ZLc0Tj79iu#hG{_1wa}b|=iRbO^{+41)>t(0dT5Fu9iA)&aS|)kg|4d*`@MoB` zPRRTf8y|s8!9A3X@Cgb{QwAWI3$#aEWKw?A<#)I>0b}|5r+&9W_lpyLbF^e)gm~E% zh%zs4>(xpx%Dk2BF*Djo`(}BI#8-HNn}uB_^;rSR2(Awq$$gO)8+wa}Xp3kA9-*+D zn)9B9d}}+q#GW_-@f=kVl0W8%b#Wl6rdQ)B8QR>?C8j=erJiXg->c>u^V*dkCaY^?l`Bq)EVoHQEVG}TG z^Q%7h;745nn$q9hx56~>w>ricP&Xo|szluUa&*Hh|In_;dmBd_hggnI+g^C@e&N#K z*rkX+_x)Viuf#)S6JU=XLscs-`z;pZy?3tb-#IPbN`0mgOFznF1w}$B^K->QZlJ2y z57&_q@YU?EBvZP`J~)q*#Ng>~e`ubn@{IHU1F#3yFbKaZOi9zid+PR*-UUzL(dyXd z|50Fh>$^1u#L_N#1-v%_np-NZ_?eP_p;%^3os>){|5#z-M$0TBsy2WB?!K<|=e@hm z8}$A6q7hQw47DrALvM&#fu(FPDS;#;k^b1*s=i^C;2{1_UHrOJKUc<*)9ev>6Yk_PWc1yBR+Nw8 z{pTwG@NECT?aMI#fm;8bvV@V@_rL7*auO7FO0|l?+}5ZS7?KL<%~xhvAR*M;if#;jcq1pV?Pa+NcqaL@`BA)^zvfjDEQ$yovG2nEx3-Ij%q%@4sY!v-9(* zo%xq|G^fqwZaM251{E|DXJXh3`vYgRKFh9zl_2n1-o*Zyb~_)L24eDBt@>!K(CR?P zv;Kgr-ax0SR|CAcrR4`E)ccw@_H4txKUm)xZGWbxr8U@1R}`DTn8>`6bTQ zNbrH{(qi>&rii*c$kpg(&!N-pXinu_kaoFF#J|JZn-D!XI2eDj`g`ODk8R-_MFzw+ zp#Y*DZjPBpQdrBc(^#LelmF0&G9ZRT74^<7*0f9~GL9dxW&Daw{%#*-(UoYmCCn@n zdEqtuuvwz$_BGViP@rBcPo2^hnyz-$5g9?pEM~H%>i9Wv8L#Y@F}6iU#0+S^ zFZqBa_&8oWC{6(oArsP?x6~1U90TREC1spAp(dfLgc_xgulyD+86jWCm)v*h{x_v1 z$lDS7{jwu(UW(ftG8i$0x6`L0)3U;Aja~g(tvcuyDQ`%+vTk;NR_KS&4)VInz&ov}+v4GZPo<((- z0pv`|H}H&GkFoRBR>8n!Hek(VZ3=mC;?%QBMfT5|3B{T~^^G71?B@m*=H30RpV*m_ zqeyNFuBc#X-3%q&dGki3yis|b;gJzrKkwUBcZ;pQh>Klze|^6 zTH8MUlO0Pqm7IF>t|7{f@3yv~VP=g&>J!dioh4172~EGH?^dOy);{4d@@i`HN44kj z6%SoOiDsX@`KX5j6D382sIP&)cj#w&kS@q+&4l#HQ;TEMe@y}|ii%8p(e!JY19_#! z&;JgRTx3m$lAoMfvk)s?F`KIz#3L^1r(YDXXEVjM-2}FYdDrqUk;fasBV&ESvmVbB zs52YDvO(R5=Wst+30{r6povOl(bv4pIw;-GUm5A*zCBqr$RTZ@jrc>wZXk<&IAghO z_amlHGJSucwty>cQ^9pGp6Y$#_1$({x#YJuS$O1fLX6$u%?5GogTNp(mafsyV|_Qr zC5lRA76zIB;%@}V|4oe}c{{Dd-d{w^Nh0aBcoJxj8bIMVG2;qAHD>uu7-(9`a;Veau_f4pdrVHdw)o5wl1SqB}5 z*Oj&Q-*mw82S_wYK^?xM_zsoZ5&>OOmY3eUhc`Lp+tGRh>2;&$<(`*&j=4p|Q82^a zQde8ey5Hl$wbf`E6)B$sxH#8pBAd&k3#Ky8dMnVI^7p-v{pVFwY5^pgn$|ty2eC-Z zU1izcL~W@ZfCV!nWBi+K=W9;BW6d%%b1)EtTv#veEp3*4L}IiXMb7biuxWQwr6_T1 zLKsq9mrlqMsNdzADn*aCWl0 zaiu|XO>Fk}m$1b!!Q!&`ZwW({98n{Stx}DGo%Y)`TV2vy{?CNbMcc7Ls&Df2D;*DK zW@-|vP^1zqt6n!5Pfgs8rPbkW>!QA<=I6QnkR?&yhkXE#_s!qcE9MO5x9Nd(2w`Uv zD)#Dmzmuf)$**9hCd$ZTQzRWWo!fena`7$1ued?vUN%Y#&-*nINKHrp`HE9d*zENC z6rv1h-ZBI8^!FFnH4Wt9hsx#MKXH4sh_$PBv~w1zM#YfV3BQ~ARXrI&C?b(zE-fM2 zb1O8v9G-0{*8=Y4rn$3Hv7G7YXueukEsbx@L+bN;91e`C<~6VK{ zn?k2;S|u8xlp+uN1<76JTy{z(a9t>&Z58FKU;OSZ{#lMvxv%@Wmt+4;U3*j(+#O&? z;UnU$4nrH}F+QjfH;QK(l{hg!yt^Gt{mmj%x%+P zOh+YCfZ;bs^J)X`A0u#)jun2pv_BlCc62!tZ$}K$A)lKYtJdPM>qqto+AY*r8kBaW zK^MzrAb4V9s2GIeBGcJ8V}o3WAul+qFM!_D7+=Drv9|0(_y?HX?`K~f)QinOJ=nkx zLl$gQDU({&w03Eu{DN1cP^QBUm(bd3O|CO9@bY2bPnRr_#s@YDaf4W|r!&dDV{fn_ zcn~+OZc}0}NRpapy3;dp@56FxCd+c9;!X!q@vM*g-(XIc#i6hf?3b4smM`-yKA#5w zpy+>yv&&Is^UtiW{BIE2&H2>P|1pCW-HZRWWTlz4@$q6n>_sDyZ1j{x_TqDm zN#NC+vByo*To~QoJ|x^0#l!N7Z3#mJ&DZ127M2)oqU?KcHS|xe9G*Mwhn2{rQtK2d z_;b8!NmXl7h5hE+vLJXfT?NRtLO4kZDpudX{!)$MQE5SJVtIAP=M?rY9RoZ9qRJk5 zXXiid@#Gda7xZ?Nt{P3Bjh6%RM_2gfPF?l<9HULUTMe5<`xBvGQTsz`#Fvn$qaFhE zqP2O4qr;{*!zije3-qR}l}s$^rNXeT@eq`)8w8B$D>s1z5T#SPIAmB~c)VaiDnOFp zmXJJ`{%R*;|iijlWF7f3O&pj3i{#r!1?ZQ{0TVV1;N4+29*`t3M0-n-AFX(M= zp@+J#?;uF)NQG0JOkBg>Rx70!C^wX}R*;qvSHoGm$=;LZXD)o35Eim%JR7q%1$!07 zn701a`sTN7u?<)t-msw346xeHCQNyc3_!9~)0Ybf@F0Tg&w{xpj^-z4gIto(eLf9%QY7l*aF`_d%ierNc=SU#}% z$8i`)H6Z-u%FS*x*q?h5=v&5S6bvM9wz#)3wvatOpmbvCq_gEf%dRo=uB=DpI+j&(Mhj0{PQ=8zEYeeI`m<=>D%11&4I97pvgzCcUp#wI8A{#RvjZb; zjDKQ4X0y~fs9sMKwRXC5j2HyEK~J4ZYJbij9$!V-%XvTA=YcP_SA$Qqmh+jfdq=K_ zVxxHc>-HyFpn4FB>(Lfz>}}D(HK+DvNf@a5=^#>)2oU?*A+J{~l%LRla@AVM9Ig(F z6fq;zHeZQO>MJHq&1B5kIF#G1KmT3!)EUZg%-|Nud0I%9DeilAmL(yQgdabszX%^Y z3D`{QwO*wB=9z{X5alpZj2X}~&-2;&oUafj;3K(|aN^Rvc`Rc{`Bag)vrZu?$d=$Nmj8k(?oA8IL?d-`TLKfOA_`VB4dv? z`(3BRA+V)DdQyJ~{SVH(7k%nK#8o8yYt-UyIu63DyHY?ri*Vf8uYwa}&)wuz0uC@s zkIb8OQ~ZAQ)Q^Fb*DlCi&;^`FP>BzFs+W09ZwLi1Tajz{v0A5 z$WjBK9t_gk3;~l&XtbfU@ZAQ8L-kI^(9q1|8b#(A4#ajPY{ap+bZl&y`3CaDomdG_ zbZ$NT`*7uE;|*7c(t{EuJuv2>FCJBS;b(S?oWUo~*oSdL6eQgs7stcsqchSdm|Dr> zfXZ(nBKaQlCrV_OYlfMu3KnJ}j*RFRxO8ah*ur8Hirza==sfXt{MTR(O~*l1n%YvD z2h|3yUdM)aZe!ku<2^Tb*VyeNv#q#+!VHR(RBE$4w`P74HkIWu>0#MR7zVr~y*&kvFeD}2dg8I*dc3JI3>X4SL=dmoJmGy5jJgb8VD4){NSvSl%pKuHVxP-^bl&e7)Z~O28=@O3`1JN>VJI6n+@JEhA&Ii)+ z0MVcaeSY&GM1hkb_au6iX{%h3gOQamzmZnL4=T@-op-U`&TR9!ejZraVW(x-OX&|A zpJ(weQjTak@3Wj0(xbbYTVrg`D>8e%A3pldm}4J{ch(8a7}FEAVoyZGDw4ztT$!CH zELLP~B}l}!!zVGQ=~R0@Ap2gtDeaAZal!+|aQo!!9e4SA-(!fbG|Wk#F{|Ix)K*|G zo6=Kt#n3V7RICGVbS8$>I$UD`e9jb@3{QuZx5F7ZquPn(OyYAiw)!>yIPp5dV&nd{ zp7o$>>lk$WL8kCgcbl?Km&@Wpru2_6@qF{A?m$Q#XT6$bqQ#yM)IOZX3+WnrT8vTC zc@dEVXBjjU7e0;33|7A0zP{u%p}UMb4KtNk`+{Du{qLmi-^#tRw;n$n*@nBi>Svb~ zU8wd;ehdt0D^`W&BFswhtP;W12f{`1ik~njjkmVh5iXWn$SDNZ2X_6s0Qc^Kg9e6l zU+=!?H+@TDF=$q>WYcFNZTiUeDJyfSf%)Ob8VE{na|QiHEow@ojfa7RY|O_I6(@3& z_8~{PI0i8*od`2_S`wL$E7&QOdqP+%nNtu}@qJ#TRhFAhOk$i<;1et(B92N)w%1QI z)T;X!M<1yW!~iFO*QZOj4UY3|u7^L>e%c{|;-2{!j9w^Yeo{c#c!Qd26b>-Pc>7MG z(iLAY>G#M}jRt3p=N_Vtnv6O_3J-EUuc}@Ie9UO6>_)mC)*kWhr?;0-gh1wIHPN^J zk7Ia5n<&sC_k^{KOgthOMkd`sWztevu)*C(90kPU%kf^Bo-r9IJ4SSJW#Xowd_2*h z^P6*J^@|7|1w1(>1W!>^5e6b$2NSX+j12QVlQXt^q)+V&Q27TDfC~X0jt-e>;NFJ< zNfrT36kl*y@H-Aov;uaz`8GjXUIcY0u7prpi4rj}Z5ziz3m+FINx)_Vo+QZuDL9?T z<$J9|sF>n=X8X*j8re0I@C%Z}SixF=bIKWMK?K)~oQFepAkVIPqN5BPVO%e1;s(?ZxaviyS<32;@)tJ$5~9C{XYpW9|bZc(Qr-+?T>T z6b31Md!x;lqHk)owG8@W`S>Vr-^yar6E!l;FH`p7uO^~}-u(vi7+)4p+Sp;5k;dOwuKY@Z23JRp;KG51+6;@M|pW*J^)e<9>IfSSuE1`=u1< z&V%d)>~L^&?h1HBxE=#c1Q!L}6O3l9lIYyKzl-@6D4svTNnYX5!Z#sJQns$Qo$_nX zbBd-#)Fu6hbjpY{J{e59*zdbf1axGDR1d+KQ*a5bP$WpL#Q8xyEGrDWFY?FBNULP@ z;|J#A1hOAC9Zr)G_)T!Hrp`h!*w1g>>qI!5MS^tTc(pEKYe z_$)T>`BMevhKVr`Q$-cliPOEJ}5{ z?~e-X1KM>DD7RS-egHXp`^}S8E~sx3WaM++&k6M~N54q?D1@UI9~5n&nc(x5v~(8( z$P~yDz9TN)XPx@UDKL&p8Sir=yYRMk5g60*Zp;SSb+O&gHFp$&n4>xdl|^4KQae9+ zI?mg%o>dI0(bW87&$gUNc0@;5g#ZU7BZ(CzU5)sgYMU0E&hfUfLzNXLi5WpIjmiPV z;nxAZ_PAXb6S&Ap9{umfpaj_QQ`c{?5*+y`xoztDC>Y|%k^v@X8+nN6G5Ha7GH|`k z>wX69QN$ea&NxiGPU@;}CJZ)_6sUv=5M~AyHGSKQy% zc>6rN}+RAEA= zJp=z#^$R1}rOVgn_M$%eK2|g2YQi1(q$b?=v&f120lS<;uWb@X_))F%6hO5YQjZc>*+xwEgj$Z+H6#v5_nU7!E{P zYG-7=-E@b1xRuaJOMQoezev0V{v$cZKQFIQg?o%?y+%a%)6A{cn}G2*g{%^bWRGN5 z4|$#;vyLibM{^rD5K%|0r`*BLd&P-35ch;`t zva{A<&Cr6@+c;bKCVD|j{LNW={1a^f9ur@FliNei_atP7ayt{fz0jgx` zgqQjChyrT`BQWTj1#8i58%qt%Bz$1fbi~Odjt2fPzcl&!&buq!U!r#(B6E}&u|%T*;;GDjZbdxX!`7TkrO zLv2m4B?I*J_#i^RKF-r(qH;xXcIC^M1&}XSY9Y5m@7;G-(=T_|*IyH#Zi`I1fyb5t zuL}{0F+@KZ>;TEkuH%`v6iLtS=TUjh&8{8$XT!~(dWYY~O~E^K_GpZxJ6=Yc zW1~!?_~%}s^T_Dy)g$F2ZGZ5Ni!4c*`l)NudZ$7R;IjnZ+_Y+0EK-lIsnFta@E1c+ zlX6D8o-Fo0-4}FRy$F~(_>9*EEw$vt4Uq>EGrnmB{s_baDLJXBCh1O$PxMca9klO& zO<@e|U^r=HOh?on4SGAAX(o-svq;Ie9CF5IXHF%r64=e33qO^o&$@kA^P4)DkR2Xw zB^+5v(>_94014@Ckfi|Azpk zkCm_(gb3~ZR~JO^oNK&RF5Wu{at*$oalpxGV~a-EZP++5c|mzadLr)P{dpWcl#L}k zNiF0z(|fR2hW?;|76`pRh^TlhelAo+Fk0W(N0u#@C2y4D+`uoLEKqfez@>7#H8D@n8&xG()tFXA=WF-J3)ZX9BHv5 z2bHQQ@8ltva+^Ts_>mI!pJYy`mh7NO5F zRCO#g73gyzV5Uh zIo@xv>|(HGA<7Lo?r4m$Jsgu9##mvP`_SSE&YK7su?)pE8%R8tB%Hb}gL-JuQLb~k zuvY7O*zpi<-f+;23-6hVG~+sh1$0iT&a9R(IaerHW&s?!c}eGFx3To)y%&8;LOMd6 zH>`YFfi6GV%#~#(RHpK3kVb;uRS_Kq9KGQNn5!VrxPV-{A2D)pImy1*T<5_u=1@uK zbFb-pjrTCC*wp0r7!tkT*${Ai`BM0NSPEsw(Ekd1+}7g?v9dELiP8Kdto+Q-*#@;y zAdrU*a^E59yz76jIe76HOyq0VUBpW*DqNf(B>NuDoMWwbmOW}~p?+ajdU0dbZG^RX zc7-q6gYVJA>|;2O@Olfm#r@lcn-yy^I*srWF*?m0PRFgKX*>0t_=wTU2rOU&hw2jV zgQshp4I?cZT@p~wtfNC!AEn3xWLqF`Z3RiVMcXbei_ z_BeWyf1Iii44gTN7*aI8ZlnX7I4O@?J*PA@{xTA|Ns5Tqos$R7PO_HZ#<$$KbRJdx zR_zSxie!K))CJvqACz=zXhKd2(hEQGO8QbhF0pkeAHw_`I6FvM5(w9vzCi6l2o8BmX+3<+d zlAS%f$SJ2Il0=oPECRd(R0ZdefeqraGmw4UDRPOq+rNv}>l_h1zKr#|0ku2pds73R zn;j$fvh?~Q2CB3sW|g8_UE@5CD9fDFT?Mn!Fiw5I7~32UdBaQ3e&?$`nJ5yD^l?*D9pjK%je#IKDn+RxGwO?p;=&`sxs}IC|)5`ij3KR7au!vf=fI zTEbk#2kOG%2+c}IJnV=GVdGQ(*}FWfdBw0NdYCFtx#x0Wg1hw3mhSS75C$T%Y_5fq zZ;hV7&sA15<*19&6!-sl#^!1Np!3?;Ch4(antyy=y08n`&BfK5Wd<4KgPi`nW3@QY zdS6dsY=%4Pz*XU>rr+on^>lS&_4V6@&wY^o!&g=HW|h@_sytdkB>Wh)Qc{O}7{oXU z?8h}?JZ21f8zeTguPih@!qq4ieb@MOBuGN!>Io=JI>az}!8UoDcy*>Zo5f(Rq-15XI#OTWo|BSUMJc6qc^S@v1asXK1)<9-8AxS~^!Seg3GuzXV#6P5kbm9~iqmoOePI*4tZrvUmBHKad z0eM4TMWvJ42T*uu=D&d=cy~>|5gSaMf@SzE;^ntXs* zEut2&UD<>J3KMgE>fO+j@1H0}nTgdMmbFJw;4`#Xq%%8a(|DW6#yBK3^m;(ayDr># zkz7+HcC|DZhoM~Rd<_g{sHPYe>ypw`o0OcCRxBhe#}l?eVn7@RS+_-i|mz?gyspiRTu!D05(bu$2`#)Y}!o6>u^H%8=tj$UJtjifCcV z31M~;HA{f@cIDaktVPv|zi#{(B(Lgj6|U}1gwgsITNEomD0TQp_ea;O+zo!5u;f1a}Aw?g0TTF=U{$eqC$vycn4lH8)oTqD#Yg%P(WN#HS`YdW*{jznAR z2-WtIxkr9VyGWT!@$;g3_;Y?$ci!z1(igXF8M!^u?jbC+tCvi5EiQDCaxW(PgY7-W z?-h7XY%|ZxUYPrAJ8RRs&4M&XT&OW|<6PrOghT4e0{W$+(DR-K;fOdLFZMlSezNgz z<91lRrXe+XGcf4femB;pE@>Lu?R_x3Lu1Y$G{KR0N@#NEb8KTgMKBgP z(oagF>_cH|dSU3q=E7{GJ*>~qL>U)$(LVcI*fWq|ip?Mmk@O(;uC+D@jPe2s4de9OW#Fh)Cs-A%Y;VDY?PjHU1B}4> z%upu^v1(D>2gAgq!Er|wqGLq3;;>JzXH5dG1FB0wHn#+k!pE#rtUuO(9Hxaa5PrKS z#)*eQfS0%gv2u=qr0g-PDn37(Nv_#7?KHhLG4WJjk}iNTu&nFiaMjE4$m zoYU(=LAF&Jm3M@h{W7Rbh@VkC%qir+Z=uXg{!ZgtzyDUd5@1RsR{LAWt{qbTp)?Stpr_8b<8@hjuN@pnuO=ia?>A^mc&!Ngu&BL zmtdX_MPnIvl7SGXaA*o<5BMMK>U9kI?Gp7YNu=dDQh6UoI$^s(&@`unYHjQffEq0HaRZHmU= zVOlO{ZGKil6&_lU{>J6(>+?P(R{G6?UvoqaBEgBe45m6g%Nu85yJ6~#AP%nCJ%T;F zcK3itx0X-yHJ(tH1>vjGbBIjlzgN-(f0Z%9T+5Q>tSy|QEwsd2nx<2hH}GCCyl0xS zk9^n9b3@XLfM}s6Rh=ocXw9F1n`qsX+4Su@kb|w($g#OmN z5y*J4us#-i0%||0&|V37g-WZu`i$CtU7z)3yM)o~ueci4>2kg)MQ!`}WfrOc)>u#7B*6f2HNz}s`lyIb zl{6c&a5$LgXspur91Gc7l$a{GoYa&aguWc-q!caA-%SJl5TKJtF|HHW{^^ z4Fn*pu`X-I-LnQ&3OFW?ElF2L~a!NdU7$)#|Am3y&vY5wSmEh@t(BPv7 zT;P>WXlX#2c=OE>znpRaI%ykbY2v zGn6%*Txl7o;=LOz*=&aO}qyE%vV$t<_OE0*tj13Y1azi$c+UE;5> zMT#qYUD3E$IcTYE#UV2y9jnpvDsu)Q>ghT)y1OQL4XWe zBFWf0Ezy_XP3|u4U|8f!g#JY%oV?ve42!=}G`Yx)&jO;4RSK#UV z7f0brOr^@rtNBb2NpxCDZ5(O2IiAY^f(fl?oL{>&yVyjT!b0s=ipp`7ytJ@#PN9+> z|DZIUTklkVoe#q2guJ8yw@l{9MpzRvrp+64%S}`tq$+)56ZalrYJQgOhMxqWS(!ES z>g0Cp@nV#pIS|%uoSFqWzRhj^wLW3LBNCa9a}6dsgGFJ-d@D`0m3kf+Hv2aE@E&b? z&NAnLFw4d!Ex20W`y#K^S^dRrrMQv{5U`ai{UO?|p)zXFGdASSL%mMOX%!4jh-_iJ zjc|L?S)1Xd*U9XY`qBEuA$0hCV#8o8shE4!o|ulVnXk5)g4a22QsPh+g^%1t6-|Vo z1zy72pMlXgFy_qN)-E_Y?ZQ>#X*!Yexsg0vY(_lOB$cc88y;RWU*0ENA%iz;#)PSp zoBotLoIKUhuZA8zAGjIxeNbF*;o4}z5xg;4_wFrb4M-SdE~}T2)N&kh0~CmkNqs`- z4mid?9f&!MR9kfhB8)~h`4CGg&TRxFu%U$Gb-OD^5I?Ce`PDUi*pTy5f2oXlXFTEo zz^2e*N^>bbDKIcHCpBeS>)CJLL?8dy}tR&avVARP$cd&&_W-tyfT<&Ip z(nw78MdF%4VZ%nP`~{R@NkdNTf!!_Bq^U+>ou(ZF3sd5QaVpaYbc;vca}=NLx4DKU zaHEJ1O2_MeM-ID)1TzqhpC5x(-;0I*mHH2CVMfHSmWBF6SQp8ZR=8b z#i@%!iv!9kK%ZQ|(y6G&WEqxoCqCIwG<&cd4NukN7-YNe6}n~j@o*+FD_Q>1OW~## z&+Du53suLDA-I3_rP(SKSF8gJ2FyJxvT~a8n@?<9^1O0=38!+_o~kB8H};O?E#?x2 zLYcf*q_Rs=!XT~DS_`%K8AW9ITDf9=s+g|oBGY_XofU5v4+xVquLn76!&2h0d*m~= z^v51nEHLqqy?fNchrZaal>6*LinN01c{Q;Gfkgwsqs6}lc6_@Rmo2l+@f>0jVTEuK zEj(h4F3Hz6`FJh&0FYPdl9$lG8uBRd{317M8yrlk*d!uMod!r!(p;GuLm-m>r>gdW z;v1w%qL|z2vYTVk7b0E0N7uqV9tkd_9J`HH707~|T*>5cbX9AgUkwEz^{*mYO?g0{ zT&vWTw_75@_Z&gje6`{W1ydyCal+yTRZbR7<>g~|9u{2-6N*4jv53x8CD`BV6PL%* zmd|7NE+m+$#Wl@U@2S-sq2#lCq}`E_>)sEfbF%-4yQ9rvd*697Z?1R>ET|C3No&B? zeks``^`cT!%d3{8U_9bf8ib}Uq&@C+Bm%uH%`{VUe@HWG)~!lvqfgO?PE)_RYPZG> zv!Le^OYgRR5R36*`1!9qd&3dLm)%k}%pKHE>`q$-s9je%LTHF$GBba916GO+rbw4? zY4f)X?a3XJiJPJSzNOc9_KCTG)pnek3Q$U(jv__#Vjvdz`$G?mjcHR4wMGPKt(*@3 zU+kUi3J3I%Fd*7yVPkWG9-3ei%c8^Z`uOqV$nM$N8DJIo_sslr`EYd)23eHrvg z5#iJ68^72;`sDrRc>Mb!3yn!rIrs46oBH+RM?+F)S>~j0#4K?H`yr*yE9`;=2 z*7%L9-g$xl>z(m-4=MFk;f*$Ls!#^@+6xW!~(IlH*z6*BB=&`Ad% z)4E6o8?nDF^}#L{6rrcApaWZL`E8Xy>eRBQQqr1vfG5tRy-3q|J&XqooDwu#`{S#I zm8gsJ7493yy8q9ii#C_6rk8g$Dp?#aRHrX2DOv8)gR>Ptq zrhwaw>%Uc1Tq3jXk<5&Y6WRdVu;XpIEd>07Da29P*b{2ie!ae?$r-6T!Pxs#+Lt0V-iC#IA zrH|s-=3?TLAmN`$#(I1>*A_hxhh)8|8Jt;kX)h-fo ze~fGe5LYl;fM8LLi#gKg>3*OvKa<+~;im8|nk)VDpD^dY8zK85XipEf7||kc>qlen z1p)2sZGD^Bsg$92%g9ai!4(T_g&LDQ$n1_su8;+-wPc#3qnYS;?(R2q2s*|0NwcXP zau!`>W7>V2S^1NPZwbS+{zr6BT3~;~)+WlaxN97b1i>VSmJ6Hw&MQ1OCf`LDBUz^C0Md-^t z92(D8rWhC;RC8c4f-ei|n+32-EPz=)dpMcX@N})g#nOr2S~3l2XVs_jn#Tft>zR_S zG%4ieHSfwOilM1(p1Ah^?tC54X;5k#G;Y)q6umGW`1YU;!6J3&*E?&@wbQ4{qfw44 zI*R^ZO+H|q@p?n$8>1E65rAM*fM2dd`RI6kFyp-Lhm#A)Hq|J?!`=HUK6KfD*+%^; zn3$PYj_Uy}^kBAhg!ur3_FnYJN*YYF5edNi;w**|4|gl-61%XXcx6pB^K<2;$DGtM zG8^dq@Fe7=ozC<@@O(L+TXO9TC>ghVnkaBFjRdk*nP;qY)p-9VuRHwu*Nj1Wp3PKO ztZ_9jJ9tmVvMti5V6jW3mM}*%UX|9m9}DbRJaCw@pXGI*t($XqM$+o^%ZfP8&hF2; zFrb}_z;y4EDfjo?hAIL7i5#%8MAZ=lE&!6IfWyBB?3Ml{dX61%VBB~lMl(D#%t+CK>4{3(bHp?DJ1ffPV}Q?uv$tiY)x%t)B%@%Y8*WP zOipNUKfi#CC`7;3v*_2pZ*)IqDsR5HuwT`kU|?iS0NOia7acTG{({j%hczYa8#k_3 zop-b6@6}xZwKlV?8w_9xt)V?2y_W>g#a_232i|aqWWp!)X0)`lnsU`+q7Uzfjvc3i zd8JJ?cU=?1?Q=lh$HQW(^K@Yni?bG~gstXBcaVos2T+Y|)BhZEFUq%ygAb$(Jvn2s z(`1Jr%X{w*iM@2+ned}4!;Dy(gba9j&+@0d&ue1}*3y;cCCN-gL#wLUua-PLYyg>< z04#Hx(AA6Wp@iHb3_vuF(Vv^b<@BdpPZC2MFf@JfB6FYrsivn_^pM92>@$3T8j=OE z_(NClzGWy=D@`?K#nc9%M$W(8@V>GSN0;SUL=Dr-$fN-lfZXCu4W!nh5Ja4!u%_W( z;yNqob-GEH^`zFa)nSyR1;SEe&b33(8HjjSCk=klU|_bDc_!#5Zvr!&LLO=m}3q)mUlHD1ssC_6nuPE;^mBWTp-qd!=uZx=pJdIKiD2 zRDIRlnxS?Q22BGyz*|yBz@yT%()8`chxp?sSbUw|9~IA5@M-(%gLm7Ud2ksY`2Yhl zU8O`l-Ol#5oVw~{{`*A3MpZ68^M2olMtSQ(d}XG_Xh=AlBn;g8v6$)-@$I#i@oz=m z%u2&Xkyv)3y6*hpgj>?$vbDR@XC<||@`M)jjsttmibnl}HEx}SW9*VWdkowyi<9S* zSNotWb2d|3U3{c~(0Eud0*c)!LU(@?q}FZU9t5`76<4c%!Gp9q{bU;!h)v+vfd8U; z4rPpbm2C&P-FOGHT^%cvWUs!=_=mRfzD>!l(R) zavt21b3`t_-K0SqBOdLaPsY9`T&HwiV<>7xRaHfFb@5#jv*KzmnIc~O%MC6tdenJ4 zaGl@cR&k1%^3yb2F>q_~PWeLHty#EcN8<yXU4fMSH&s=rwr9KD4QMkQB9Qo^%OSau-_UGOOPr`T8L5NlYI@y zwbKJNWG$2N$m8^Ph=s@-UxvBryi*v2C#4gjGhp6_3QMS27m!|7dBr7z;H0&YK2 zjECPGf8=-|hZbL_MwALR#T^_nS}cJ|9TUt;QrN6WcI2&fKPZ;*zSf8AU~8cAVdci0 zen4OjzofO39rBd681a^IC%t&fNahr7KIUVPO8b>_z!ze`^^9FOIG8ltQ(hR+be!9j ztHZlRxZrfAO>6UfnVLMU?LjsG>l`oEspXEUmD?B{Q`CGCdph~s-^burn1|-iC7v~H z1~PQnB{Az%4OepFJ?i`-(fEgschKISj9T(H!eaT3Z%js8#pPu)i1s+Y-~Ca?QAt=b z45u?Jr%GM8%$&T!K@zvnm0Hug78g??rZ;7 z3~BYL&5b8G7Nle~WD>ekcNm%UlLgQ0{RWAQdpW}TGAJ@GQ2|wI>{0*la6I7b=|7k$ zwh^I=dO=1;_5mrru{T~WDJ-u*MBSfZLL@T%jxVEYKOy7gY($dzu6$q6_d+uD?r6A0xM(H#PdvNBJTz zlT{j_WaT&P!b7SlkO2dI*y#J|o*zK2!4QG{J=}SRb@&vRQ0^55LZ@rP$*`p|#xkMr(I?Awm!zaFLg2tLiP{a@QoD zm5Q||-_VFTVxJ00Wn`q)zb#^jTU5zNCAZRkuKl>gi$x~nK3ySkAum9B47Fu*xZ0A| zx>jwazJx+AqY#}D1&487YW(!ZCnwl$ch6H89@L!dK2a#S8lB6ot&(RR$_idE%h(twoCY$hXFYmIXB!2$$tfKSPopUFtBb_qacJ<~1RMbKnbbFFHtE^8*LtxdstMO_jVzRJeKLccmmLG#(KUlvb^XLLE^|PM6AonXSEQRuYfFuR+kS zR#zH-<(4I%p^fG5j4(eEV#aN^+$8;RB7ik31arY)f9LJRL20STo-!#s z;?n5~nc{<$+Fn$Kfxhc9iEX>PY|l6k&eKJ9E5*p| zVx+Ror-{@SJo`uQRwcs@pv~dK&h_Kk!-I;@z4Njk7z+0UC71*;CdqQCs?MerSPjS? z4YNPwFmAVMdOw1ZLL;cuxUK?CI=(c|(th~7U;M7jP21izIDGY?NSn`$kA9CP@PxPT z1j4e+>F%=j()7ib7QMrT;A+Zo`vRzRb|(3zg^Fnr(`MfYl@T1@!Wp8DJe`dS9;zXg zW^O`X{1uyd_ja0ZT!b5J7f0DyB{*)!3~j1+I%Q*dKzi{G0rZy9cHC(Ju14^!LeXUt z^SREfWwr)Fm5|r73#9hrmv#%yS1)lA2R1VwpSI}JmHP3LU2yl{@~ZUx+6t%6)2Gx5 zFk%?oB$wNe_4CeGSIZ_9OnI3MBE->i$jb?Zt6MpzNsT}3UtN@dnF88!1qJ9HDC*Ib z!zKEni$*w^l~}dem+|(P`2yyk&xW*LXNbl^V)Lz%KiuT|Q8(`3ydL+DFaqxWcg2D< z%0u3H-3raW z-L&PFn}ox!L;hVy4$G^YDbvIIdHx~r~hb6FvQIKR0a@S#!WML@%}e3*ExE{r)N1ml0!-`9>M<_%0GR3kAQfWb|+R zwqF+oEpMO^%Lj)oPQkOw`6NWDq517e|-|$`oRezPu zm4SW%n(Ip>wpMQEI$qdS;S%odTsT`-E-ZWF^!tI-+sNF~3`XyVD|hUni82$=Yc9HF%en>fo0&RL8kbj>Hh@ z01R3N;v%6$Ayb>|56AaNS_o^l&J_Mn6tU zC;`=|uSHBKf?5qH(P2;nMNG^OjN41zAq85&bXRCvoeSp})cP+MDX^pW-ZFa+!|M)- z2X8)qoTL0a#&mbmXE|*^e^DvYA*OxN85sSokh(qbhhwws0;3s#{!iKTn<%4$f`%k`AlbT!Z1 za?A!aUR|S0UcQcvzG4hW_~k{vg=~amoh9FjdWtqG42bSB3j8$EElv}yrB0hkr@V7` zQM=TufsKhM3P2N-7fIrR&JZ;_&X28Tvx~h#-?GzP3xHla<{Cgk>>bW?kW*JlSYs~8 zLhAT)K-FQeCf9Pxv+R0UWg=Xvwm{x^H;UOK-XYNg>@uQ)<5-RGeSpfNZfDB3-a2_M zEeON;_`)}tndpn!4+Yyes-@MW13Mc4DNs!!W^jG9Ao&Vz2Mj@w0CYj{tLju2u(`(R zM9EOD4`_;yBD*7pGx*slATgW@7|Gu}Gza5WbjeYxELi=Z^P-;+VkSd^!Lj~<8;>q3 zh%Jwg=uJ0WeeL4jD4hR^R3MCR=z*ey?Pg1EF!kke6m~7T*0)G3)_ktLszcTa4C`40 zHeZ?);;JMel>0g$9rLiiQgkK+L2Oje5JSwhltJ__IsmKbg;FEt9PA|Y#9)0MEl>@; zl{6u&T4~7rWzAr1J@L!8U@;pO&)b6l3i4CP)LJy51U>fFY9E46NLP5Tmm{D}X|w;* zNPXyOPaNIOujznmm)7bBH6a%!ef`DX*OYGxcp#OVTsHt!=t;@!0g0MTvR+L(e$*$X zqNb|t;wo%(-o4w7wMih5b%zv(J|=`urXJEyoj3=U@skdIE($`t{{&A3e+PNFDR-^go_&LIv+Ye^gdR;gV!$cQ1^twXM!gug zf^+5Rp4)baA3)|xuH{*dSzdu8ZC}vGFg)E@KD^8GqZ*-yK5oef7-qAvg7{OiP z{ui8L>XJvSj?fy89A=C)j3C10(xR@CslXyyWOpin>^C{H`f%!P`U%f` z5m<4GqZh(yi2ypKULh(GSowRaC3dE97_A&@n04h~&v%VmIM~0k-QkZA`K3`x*eG5D zz+0)P6-%yi1O1}>n><)E@}4XX4T#R6`=1>+yuR5#2hx%P7mW%QKMJ()t|BnC$?h2^ z;>(Z{lC0Q>c?rR+9dB&safusb>(=iL1HSD2f`=I^M=}g(>u;$hvxzrXsj?ZumZSe! ze41QMvL|%JAsq@Y6#Xk6w+MBjmT?u=>RW%FuTJhB4YKP>{}=~li>Si2W1xtc#l6|q_?P(hF$O{>{a{=s^>tOKO_A6+wxPnd zeWOu_B~OStP)iZf0GnFp4ZBS5^`h~`uP5Ez{f}_DT3X^_25zXXkfYFiyNVxp6KL2W zB4C!+iYFg2PA5jQkKC)|mCNvI-=MF=hKekzqLQ^4{<8CD4rJ32A=jeGD)Z+i=NWjW z+@f#Rm}UlTndk7Zv4$Sn@?zC_3s1wLr+^^kt}4IODkIWFyvh1YzPo=4hU@UtfWbxT z31vW1AdP@83GY%!oF%2%9qxeMU(@1J-dXrT9p1hEjIcz4gYdWd?DYBqal{8iQ}jA{ zq;v^)EpE(*@}Whfz?WfVB&K2-E$!bl{AoMn@(VJovBdDIP=fbpPC;KwEs8o7m?_&n z@kvO<G4?++-#0!iazYqTSx+T*=!~RFNMjUCl+OC*- zKr7(Jp^#&$Xqhdwy8%J~B5tDFzC}G?V9*vDk2wrZ*skux^U}7bQ4AJhk}!aiG1XKO zH}M^VT)oW#-!JZ?p^we$i_fb}bRTMFZV!K@WJ3MO{szSYxLEVytEj!6f2ZQeG2Mzn z2+Oe~`llrs$8FwHsBy68*G?!#@}yS{jrX$!bhyNNvAHbh`(-{ij`Fd>2`7i&wn!me zr|W)~Kd8lXBmZtW79D1+^(O;#GSag7A?FR_yk|l1RKl%*SWBob2i;dLUA2;mznaab zd43|3`p#=jEr!QTr=UbL2R|=Uxl4!+GVGTMQ#Iio;g0&j%m)pSyYPaRCrp5o5RxGu ztIBEa4hzM}K@ZSrR}o|D5tblV3CZrqm`$q$&4Z2K70VT?FzkO;Uf-9jCk`i?yEc$5 zMd*js^to4_w2R_SYW_*iD%YfrPell|(OLE(a9E~4COWp6Hw<<&HU_>QZ#5?uvncnJ zhTU+1Mx!v2BabZh_MT}W#n^I}S!LdJxjGTmG^p*8azw!20~J2#OBbvKH7Zrj=KyR? zV)SNiSCms~+M?7B7%>-$bL2tQj70naeW_6Ta>!QX2ZOa`dD4MOmNbx+q?$@K~3XsN22ffA{m*y122)VT? zo+?A`@UJekI3e{1T>L7ZZYNj=i(w?9$N8Gg=B-%&=xQ#uc53L6T%ozsp=hNsH=(P; zlnK_!idF5v$xJSqbeOgVcU9f5?MM^>0$FVd>0K(Q4a}=TCCO@xSW7yy>kxTg+2-9F zuG60%-vlb1&!Yr*-eV2uJjgweJ$kN9 z&cd&GMTqk?jtS_M)H>Pih9Fx&kL0lJis9PyQ=F*Js;o2q2P^P+CloZiT1ka1k&bFt zOjVr2GXfWZAw{I}y}x3RtqX>$;akOomP|W ztiB^I2+yQbTt#@Y7Cv|YVsa5YJwB7aqZ-5UccGWGoH!H_yZv`D*m~lAOJg~qd46BO zpFWI^x>rA+8v8!>D4b8|4P39J=Sx>^^KENU|2mp%mFt=~m!C>DvmHHFB0g0!Vm@V? zni!o;=ftCtU+0>f3-kVA6B!GKE0%Y^k|Sh z2ZjZ_i;CE&<`pT$zXxkdxal;vZF)9wNa%3#lv;u)0`jA&25&$cSa@57U2G zW4B^KB{F_Ao^L;>;C~55KqW_czsLHsIu54rhq0J-DQL}!%kf4I%=dTPJtvf<9szn|L;LrHG zQs9$yIIKddeW6(dlnQc=X`H$QJAQ;Ia7Gru^e9P#zR+=vg43>_Z`ieRu z00%`BTPAO6-l=S&Ln4KMBU9lVJSRQ-xH}EDbK6#IfvrjaMqZ046%92lZ(Kd9M;mFY z=rTrgU+DPfCQdw-YZSfmjv<=0HV^KIZxoFTu~mm{HK&|GjB4(|DPc;BMa`B3)4;MR zoKxXm8c`gm>aV@{LP1*_PJ^V6vp3-jO~Ofs%#$7^^=oSiC@{Dw5%?Op!vRXWAa$yK7}hGK#^7F+Y_{WP%_Vdhp}%h)NZ33)dkimA%6ZzMqSJe z9l!(QiFFmQ?ttf6uY%3vpex{7hK03dikci@on!ejdeReNcW(vDvrk_s3U=$+QMl4_3hl=Fm zsDdG)ZX`@n|ILsu7|Plnn>8-6qpt4p60MN)QedQkO+|f9EMw`1=^`*u`{5}VZdq(q z;}7lX&pM4AxQOMws#Iz!W(f_1CpkW&3F-NM1GCMnXV{K^N?kxGQwsyBpnG6 ztFM?G#&06B`6U}EOXqsAV8U|%%4#PSn#sobb}(AH5J#uVc-?Le>VdF~uZ;N%4x$>_ z;S~mP)}qZiR>e5AdtHD_h=nz-T6ynU;Q4Ilbl4K?f-%PiYAE#wKrIjv9idBZQR z()~;B*bxsuHS^jEjg*z9#mI>tmVeD~OX(ulnR`3tataS&wke;Ovp9%S$Q>IMQhWIu zf~c(f)J9b^~@C#-(gBiVD^`LONS9pTu9gvg+l!9ZE( zdNL4d+YY^vQtN_~C}tUz889wQxiAw~Uo!3n;a8b9OD_@GvmP*fCwrmYTGt0{{zWB8 zH;q6+x1zq`!^=?KWqN*Y*JNFKzcc79AnM`_4DzTjB`o0(AVre>ah4BGDbwJ~H%`eR z^AlCaM_LOH#2UftGeV>#a{nS;-_>OlZmk$T^3Mn#_H|)iYh`(1M~A16R=Ia-PJWmP zfvDCO&2CcGR)Ndaj6i9!nRF>Z%(Q8WgT$e)0LV}*8Xoy#AU#vWir3CMV|g5aY4E7h z0otCI$6doJPnU<=Wt&3=X6E9#CJrlbiT|+keylc2v05=Lca1#!7T&=91u0{xb$TB- zfBg%dZl1qfBC}AgjZsm_!bW<=|EkmY7x{QkT%yhKOUtP$fFRH9;Q@sHJbE&w456*T zkl#uDE$q$A-1ucNgC?rnW_^NDY6~1U68o1YrwP;H1V?lp$2D`{|HOHQ0Ty_lmj``| zjn1IS)V-Ca@2F&gJfEL=o&a(J0fPA~o##ozZcpr2-)_AcYfZ(!CM+P1UjVs4IqTd}8l`luJ1!C8bi3w2Vw}D{6XH zLW1V*Q`a5j;=!wSA&z zIN?>B^f)m&!E$m+f1K2(;no8r<=BZw>fWJnP^f*Kp`>i*acW<^@CA~sJFNA zsvI|RQ5E?2{X~L_8iEza-Y!%rRL>^KSqEZ^qqB zujs4&DOsfA({C?c7XU}wu-xNjAxqt%6cEd$0MVwx=iPC{*!y55P!zou8g@ojxuCP0 z^26?bpzFX(^i6bCv^T9twacbe$Y~vdp9P^%ZaM1yQqGP`?@f)`?9cDrDE(Qb`gMbV zsI6-0HiCdXG3)s%p9?sYD{dzM3n(5)w;KR*=Rm(ddgC`|F<54LHU^VR_(zcmY27S2 zyi4J=O9fcLgLv9s#iIoe`qwWtbX&iskh%A5XJ`UQL^Y%`H5~dfxbpm~{ z=k`=qUoWL3a*gYGzi(+B{j&B#jtnltumBLT2aMMM*>a%iw3Qi%>`Z*ReJ9rFx^Lie zl%J)P^l;i{3}`8NgdNx0p`3R!Jc{@<%Z)^~e+1B-sAd9TqJsbdlPt!Rc`L(Xb>=h} zoh&=7JBd}FIK~tZ#T{vk^lQ4;6A*jniZ4I4H#?zm`v zY|TyRZi_Isu$UqDEXnq>#O1v&(fw`Rst@QWzi5g}_=Sgu`(7>9UZy78SFOO_l~z|v zO-{Pstz%a8za1JJ%&TxrBS-Orb3bB0?yunid~+f<^|`-(4Jz`jfYu&XJ!Y6Az8Xbu zNf&=Momepa#vT^+u&Jl{r!w#u5snCMQl!{xWY=zc$=q;X5D*ArmeA$75rGPIJ>ME@ z+8VIT5W>YSv+N%mOZq)3s31~^c-ghd{H`sa#E_(Ng|cFvv!c41M=dd9l;J$PvGF{u zJ;-HHIfYAFlKkQNuo!k02x-QR=T?4xI&JESP5-2dUHq)1OGcGZgxxJj*`+#QeNyRx%F3i-RDlu5!|cM7^Y`WMQ2 z$1N8(AW)~_5c_{V_qQ!=Q0dZo>R8a&8ntG`>lgyf++Lr`idH|jMDld~NnW?bDdOun zfycn{%PH6XQcHw6?AFB1A8gOdIM0i39>PqTLdT~U%Vlb0F?9kYJH6iQ7vK!1-hJX< zve8V~HI|mU{hqrS^gvi(N%P-7C|s7KTGu6l8-bhK?_P9sGL_@#Da!5&^#olp97_HD zl^P?cjLfwSoPvO*qZik}ZqzJ=(-ud%8r%E{3%i&Nn(8(PW+M7-!}YTrzoILRq{ zX^zQjYlOaIwoMHJtZg38hY`LtmbT|>2WUWlgv1Z&{jL6CEK}s#lXM{BBYkDIka|nt ztP(aem9J{q_#VY=w>A9_GUj4Qkk;AQ(rhJ3JSxULm_zsUzU=%7#KlN0r8bSWC@iF| z_VqX7zs3XS?5--0+=4lNMpDP*E%q#?!i2mkH?PX(i{}!N=u-J1A|YOIlJ0kg zeLVIv+b`P*+B~u|$(%Vear;1$Y%G8a9vn_-qNXDMybhJZX%>9KqJy`0fP&8wzwq0# z*hs|dh7=&QoldSmLm|zc)^955wuwskVmbe9hrt*Gev!~m;c4w3hHH+|$-*{%2N;`{w${%Den zXHeC2b|?B(biU$%ceul5)_^6SIu@e<-2RP5EWt%*E$7e30lDYR?Nt^-*B0}YW+6NK z$N>gM8?PH$u$~DFJZgb`IA>x)0v<xmc01?2@P@Gg3y#C))K)vl2@&2`%vk|MPD#BrXze4kG7Deo*z~j9=Z9q*A zVC{w3uobZOiUEaSo^W}RMjpbJre;I#sSdlYeo~=FV%NlC`z#;=vy5u#fqzrkU-A)! zzJxj6u_yd5PLBYfU#v12|KWGfCm262i9+_D4<;8SW<0W3_1+j=R$r!whx=eC;PrIc zAq}uh>9o97C$-2)AEG&Q{C5BUX(klqe$_$>iJz{v&A zpS|G&4@wvwbNsjw@NXs(RnvrB?soq7rZi7yjyZe!BZNolLIT|U<8z$@}y0dL4lTz@qx2Gl?!6FE+B zs$Hr_`&ugQ{1o`R9+0Py#8zcBMVBJzR^)mxEhiI2OzY5mE)#{C#bX7DPfGgdQRHH^ zm71Db_Sz{>EvRW}{c1xa<|)|m!NbG50P28&y@?!JZf=*lD%*uBX;I*>CT|O0jZ0c= z4<5L?y^g0>fqd2||b1|f%Bmc85roZlRcU$?|*3^0p1<4t!U5>9SKg~~Q-ZP@-Y ztAuIF`KDANu$m7!po>efbqQS=4uOpIGTYT=T|+l+F0S}=34w1wHu^Mw_nX&n1*T)b zUomrQ*yNt@Dr3AkUea8k;CK8noFSx*#H#fVC7s)HG#*HuAbRK1oY@5mRBdqFkZ8e> z!i~d{0l`by`M%$5w3#hYrFjz&_+a)`tPHrdC=5YypmTs5=q=Xk9v{E9_~_}SMgj!g zH8XHUcGoqkFbRm@+X&%~ZZc24auypqO;0kXZmdR=%T5&b zPiy}5e;kBeu;vPF$^auE_Lb#5>l3y&a>mDp8;RqlgoLs&eh5OplP$72do41TNb{%V zBZ12FdLVh^7|%|z_2*{{A}*-}cU)UK#C{MWMJTaWtm^$;#0L}Pcg4$uP$g_3E1q}5 zw;N)sIWz z84s5!YYha*Bo;d&I8?VgEl>doU)Ib0@IIF{0kO>)9ECKQ2##n??8T3weFCJcC|f!u zP9!Li+Rb^NIfIFY`pJ9kSt!{l56)Y~gT=Zf)u<@^24HY)5N$*4WDos=Vk??IZgdF; z+Q4kl_i@z)x|C6lQT@pNZV}zx6wv_F8Q%J#z=3TMu#DKF(4))RK>fK1rJ)<@kEH>z zv-9ocGy0(pX-)b7!S)?%R9>G;1xZVxuH5fwFL_;9Pb(QKkgTI)L47|%$g|~p053o} za>R$WryG>yE$BNSAHYUS3 z2>;#UTq{%E+B3mh4&s2Pn?2zb^T2;UkF}3*g`kPTPEU&8 zxB~5KgAcp`3>Yd%Y97Z~wzH$uA#z%%4n$f9u4}iO;>jdRYrsg6%}sKpxk~1 zTd-TZgr$%#f`!B&NE2)~)IFQjH%?@gXiAanl%N7`8S)>IjGjajLoNbIWg6DBYWk3@ zLU68$9!z2ZJJQ0!&~{cNe#`=>gY|~@kmbe)kU|0cQnQFPjk-?q9-w*UhVjP{t6kGBhwEJ2V&+C+OTtv*c`a3b0_pr@jE zYS@hOl*w3p>@$YU$|b=AjEXJUXkko2$S%^1V^Z`#o;lb|`uw2?snvDw#3+=$?9TJQ zL?!zI+Lvwa5`b*JE+9>JQ;I(w?@kHu48R6wam+IF`T-ky-alnAK(ua^>qG~m22bV; zFC@z|GZ{@`e1xR`Je%s|e7l#bpCW2FR}#O>fGg7|ji{~5&1Tqs$YYr}I!ad$SU9*BbV1xUe(_+8mLfDw-|%3AFaXbRh)?Lt^b zUV;9JJ?#dIVvfOK5$_W|^>oltve`v*?lpU+nKBcHazL6T6ec8IY38^Kgm)ra*fQ6g zW4FNrGa(Y?t&Mqz@_rZZ>$QpF8U}Z22NZ?}_?QyG8|c=>n-~PM3x;OR9%CSQ#v;Xh z16GalNbxBx;3{s}oGACvPaN+i#8xA@hNM7%UD}b}352zoe76E%%y)HDKmOG9hN1KY zKGX%;tI~(}0yigUdPnU%W(?h%ME&?6X1;uaZmLL#P-OuY723s2X0EQ)6|Q>(y!8yA zU1v=7e0vL@Wmnm}4Lh-C)D4j^LRD^MpaW1mB>PNhXGlZf(BQ>2IDHWkrI#osdaW2^ z{{H>z@{;X1Vb{Y#&B9XqE6_056ORkk$lsCV7c4CI;A^y}{ghp;@w%gc&p~Umk2uZu zq~L4g{tZAPf~^WLpAp4NyE!~`ldwY?#X>R~KuyDM;FBznO#^O{D-p2!iVZqBjlQ zLL`A#JKa6d@-RY|B|zB;@LBV`2FyW3Fea7M7G=aW1aNja~(#ot&Fc}^8E zenE~pZHH4G^G(FX6n*E$g-VE4K8O`~52Dqm7VJ1Wv<1FD>RtXt$7yDuRoESfY38XN zsLy7?TM%w*>>O0Sq3Ady}=bK`V!krn>%)jojpivAJRI6ObW{aQO(Y+AnmvNz^k>wCqT}HtM#z`df ziU{NSi>E^;_cw#Poi0D@N^g0N+HM%fO(Vr656km|MIozEfEbEl3$gnWZxFk*xEdpv z0r4IuaYo!q&7d`>f?<0rLLt}=4w77Dc)&PYUrWQZfb5_~g3T_eUQf&d)HN;+0o=?P z9IY#^2c&hR4H5swHLn)*SMI0@sKX8&s&d;o4lH{HOgn;@g)i6f?{Gq@c>boF4-jye z$1ea($4Y%cldbnDYR_27eQ|}iv$wMG-k53Edo?@D3CL0HrfB<+_&)z7+T-YYYS8h% zOSKqeZ{Gh^HqS))&p)d5YOv}I<$P7ou#woEHvX@hiJ@(pF`}f00xg(0Z8k|z?|{}- zXnD(VX<0xI?#N6)yyv2>D}?xU3~kU8u=Bq>7JHsikl1p&{E}b3J~2YU?O~9cZe1y( zi0(WZa_1&;1Qgh9R>?ov74p;65OH$6WPAS8!ka=dcDhmWl5}eM#PB~wDDQx7v$2z^ zuDrcHTx1(Jl7M8G6m#5cW$SnXtL6c%|J zaN^S;-Eue)?yBE5i)CNoMH)A{Elx*cr43CJX^I;2_dJTk5Tj`%8Lx^g*X?|}!QbEr z#VRH9$?dDojcWgGeazhcgiw&p{^LB~cl!4h1f2>04RLnc7hTN0c+cFG!R6@2$`

1;=C1%Rcen1nU(O$PfdWm51%4}$o0Ll?VS75U9z$*@U-j0XB1V$Na)x= z)c3My>^K@cPn4qLe)*(lgZFGRRnH^*^~}~+T^V{C);OKhsP_Q7@H;s<96`j1p?Rnj zZ4w?N4I0TH3!!AYS-=~h9sMT)n`eWV)=n<8`5Ew*Aktxwxsc!@c4KTF9dn(+GUX|_ z1^B)`?>9M?|A3U4G?w?e1ow$r9Xkp8B~F~k=TT{*1-c%EOuW?c1~5@_Hp=FGvO}OL zgWIiqzR9uu`yjip*5>*b#%Cyo^ex&U@dOrI2KQfp#~)PeARl3$&%vVYd!R!>e{)GP z%+KL}Q{f9WuHR0g-q)I(-tFrCAXs{OmzpB>10@-MY$3Ind^{+F_W$IJ8Ir^1lgcn^O{@F-B z@2Y&)ih@Aj_G-uI;Rbh3{n|Z56J_+g@8*{!7`Y+g532@2-|hf!CH3ChPv2G#1pfC& z<5DL*hY<=3N#L4l(>ezv!NsFffhtc9HzkQRiQQK`?{KrC)2Ii)$xNQl6JTZ#$!Z)e zUsz~&SXUXGqN*ddc&*wG%{P;iMLrTDQ4Hf9<3If%jHBMF3A2G8j^&RS#xgF79jVj1X8bZgNBp`OnS_$NNU1= zVD^YJa?+5M3g?xR64Md2cDdiO$dA0OHraMO>Df32#t-tNsIgJ9l3@b1UhDgsiPU%N7`*P}Gf)1819 zbtxya;=~(2EiH$2#IDBZ$cXBeswNJKLDCzI{!;{ODBuOb&G_x$_+h^#*g&({&L7A_ zp1DOS^}GxjVFc09-a}nKgSFzb32Y-$x3{}ROG-9$)MCo8wQ6Bx?9gd1pkDYq} z&nzAcnUajFNFLGgE5X^q4^7ryC<= zylTxLT?qUQ_6}xNOpVRZ6%R8-W-4@x0XW-E#zqU_5UFt-PL!<)xoMl_oibA{35r{}t(tjIno zuvPr|Wjl96JYpPQpYQMrwVNsvsN={UdZ38DUq7xoPARRh)Qa5WIy-fD4laaNbL~X^ zb>4dKOpSTz{v%<9$m^2)35c*t2!8?YfmtyxY?ccaVHBp%pAO`BMq7TpETS$XYt%U} zs|R!09}is@YP}G(<@#Nnr4k~)#Guo@-NE-^_CcBz)M3!1obT)rfUucH zrHR_MKJ)A`!g4fSNf;*nATR zq-Z^gAy3Yni-OE8j{N-*k1Q8{1sqv=A9Sp?Q=5h!)Nqq|3yOC|wH}U)xH!=i(|K?@ zei%j7nP*^wt$)x&7@AE$Gs0y_H!o$I3A z(bU#IUL!7KtG#W@?uxx3s2_F-h+;7qn-5CWgK^L;7epm-qJDUC8pqmCfvNnKRaKxi zGR7e<&o<~s#{kqw+Z71icTv2N{)VI2XrHq~20|f~y4!-m_#3zZ=bL4_uGNYDFa>Yv z7ZNQ%SDx@ec+_lNNgP#-swqZJk&QkzGT3^1`)NVj_G|o)L|!zmv%n_2z=Y=_+9V8r z!?ILpd>6)DTx1Qm!L)0?Hi{syU6NDw>a_r9rhYfdjg*2bzemG65-pTIo;app8Y>M& zMm6I2_ot~g7al@pEH8ke!JQsg7m=I*N8c0$7& zlMFT^VnHYj7S7Im5VeLIj%hlh$ZHO=;REex3_=Hc`Lb7u+1)pH4$JKPB-Y!(?4vqmIy=sZfwM{mh!;9>}dk#sj;83hHMbYH7q z@rd)B9s`Z%^MPQL$*{%`?StDu1$BOvC(gY3&v$-3;_5$f>_HqeH7ySmsXFC0(*jQ; zQ`@cVQM;e8r|Iu@w_1SoQNuk9(3SFs(rOUxhrD;fi-I8r@uHj84tL1bRTh7)p?$#B z_^ZbzhkC}H5~7}rvrJ7}GAg2g#=-JZIY(e2X4{q9q57Dto9hHVlVYJx8K-gDCr}>! zu0&>z5zY084G+fv)p047&(gXfNE`svaq1_Ia`4#8)k!AlLx50$0nG53>&~E`F13-o z@Bx6i7Ek`Brg64Fg42O!Yd9qIqxBA88;JR@(QBIeB?b4_PP31Ot}uGTR|!zkJ)_m^ zAa{RpNV`OAr$@1pwb1F~wK*(~%OTIAio#Ac70l$C5}KsT(D^^^QOrFkK7Mb@D=sKL z-1tlZmmh&a(JKw;NnoVI$` zmfY2hQA1+}fS^nJvDa}oo)?+|Y?T8hzgLDA_f>Y!WHsJjZVw{`F{0jB=7lqKz1G%F z>V&2l=wNi+H&iX`rno=tshhk#JNw5A)MlSZtnTHw?`t}D0hmNrC0I0;o<%cxz|##@ z$z^X{q=_S767M*{GUsBggCXTJQ5iEsj`>tYOxuif)xoi9Co*AMy}A2A8c#`R8;7v* z@%|9llm6SfPu}HAe!mMl8Tc(gJ1TF1EL@^%dR0E}`grF%mqDcGb<2lHD%i@^CuP($ z%*(+G%NSDm=E1fT&9VO70UJvr=&Q9Ps&){UJGtccJ8-uXW7Dj#GVzd;^L*G7#TbTm z11us9U1I>`G^zV^>@nQB_zrrnn*iak44!o%%d?Z!Ed zD^Q0b&j&(W&6(M5OutRiYe*h4BiH-C8;{vyw!JT5Ka2|4u1yoCIF`lxD|gcsIJew% z&6`SyPSY}MJEhL%0bs6vvi1}}=X;F2(myA8UJ|3du$RYa5rR}yL+7)!$n7XNX-Je2 zgDB8b2c%O3$2Gy;BDEeaHbeYEc{cfQ4^$WR;%~`QC?t>$IJ-Sz zdjo}9Eas)(2&TRzRL;y??e;j5CE%H1SxN~zVjo>1!o0o%#?%(gcm(7LNp9&Ls34HA z4+ViBK4dMK!8%(%9agNHPTZ;W0Dwo0QRDZ?RlkF9ui&nocN^6pZx+^~B=1f$*5010 zi_OcCg0EU1;t*(HLjM80;k-GV?#+wZ;PfZ+l{IxAFE z(%Pc8UcPe}mhqaJM*7B^mIs0NDVP-qRNrCY{H^x(B+NWTIFBgJ8`-S7*%24{N?>(=;^eU5WI=`I zPexlwb{1kB(jk%iZJgjT`fM%a$(g6gX3U4iO!X);XwESe&>3FiL0RVu-3E(>d$}+( zyqlER=)xFwJ(6R|cFFaq>P1aYA(13>pkyh@&Ixk?-3KEVT5x6Xnrn&nbtY~&5ISA? zH=zOo2>X6GRd(|VDAWBHlke?#C2 z6g)~?&MMyfrJY~+Z)N%<8TGyQoaPTsl?!1~i-TA%Rf%U{6ik5U(IJ`i0YmOavL= zZP@3a(}cSltpEg>+?Q*$J44!lf&%RL>l$%qLlI3MUpSW#zB{17}`;cVMA!JWWRdMw|>o-+L%9LMzxdK`_YQ|%`R;DsHvkW zZ#NrT>%$$=)ELiD>}y0h(@~CU7=r{2p+TeRHfn!o4a=jdA#KB}O@z2Q_2Zw6p#((S z;st>4xK;Q+)PT>LaJ@usq(YiqF1PC3@3Byjf5J}S^3Yph(a(ad_$y-cQPwM@jRTon zb(SvW5>-emu1jf4bpr!p(th!w4**i}caFzy24-l*%m%sm_`VZ$qILF9cKZvYxqzAJ1LZ;o<>PSA?Y0EvKGB3d5I{>#kh_CGcB zPaa^wA7~&7T-37)Q&m#ZG&`hI;sUB$v8cr4M6nHjnSY8u-=9_JX&^JDsFXJN@yp$c zmamCCMMJn}lM!B!$53eUI-7izzy+P8I;L5m|J?x68!<6`S!$F=7|YCF*vsB>*0^F3 z)0Z+lGO|!TU_PZ%1{Qh0to?;b$jI}!g5GlsP=D>)3PX$2K<-Eho&3+MPp*c9WAEwF zrKg_Ta~#W`&R2V6ioVd;>8v|;>*ewptT<+5$inx-g^Duz=k4G*?EIk`9_Wg8AgABW z4Md!E2?!(M;>*y~j3AY;!VVXcZ)`oSU~l626a}qk@72?Ro(0Tu=KEpjK9|ksw^h!}%hls*b25VI<_eB5ofO zlE+O$4Eh4au6n7yl*D9Eu1s7t>x!!RbslJ10>)#Ea^`Pp2l{_Z9AJ>RA#6KBA$Sf;<98m%y-O0+;gV8m)EMlm3aosJK$< zx&#y>i}Lf8G3m6(KegL^?Dy79y-@;Vp6_H`PS9e z8oi5ukU>N|^xcCr&RnHL5pm`_9e*cAlwbz^*ZyNd>nAO4))K+qF2E~DnJ-fx14{o+ z0oVYkMK+sPlhFHC=_?IQqUa7V!W4kwDDq=GjRXiJQh!~L_;o%GlobNV;V08cf$y$9 zC68`v*|I9RxA)8e@M@Cu@Mw)9642WpPp8RXw+61Ycq?KP#(a6z3wR<~n7w`rI9NwO zm@;?ODdCeO^^q>iZo7^jcZ88J-u=?_$%F#f^WKoW{+gVIBou_i`Y#U`Ra2w+vYubK zXgu$Ziw0MJu~`-ZeHS^2jaDavc#$RmKS!0}0+4Z)vJ6Oqr9Gw7@AQhbH=c4808ZEI>JVhIy6GRk)9+0%`z$DAW0BPsrM zyMfmKA#<FYA}m6VcJ$r$C8Aj@;wta4)Pelm(+ z&?rkd7JwSF>GSOo8|+G{YT0*`9!9Mun=EqFPa+w>C{_WMBG?aitgh6Rm zzZQZNO62f+&ou|(cQgJNKnxa0@y|ZZef4B9=kar8wKfwaaCFe#2n#;w@sqtjFpxF; zBC?#sQD6_@FY0NWrpO>(&x+NIwKMjt*1mo|j4?ddDEmbSUAP~hG05VN!0i%zRamIf z?^<~f34vG2fY`?9Xyqr36ua#0?FIOe221Fo`J4%0n*OgRMD;R1E+4WGGLq(i6UCG2 zn4(4zKgaW&>#mx6JB;kRy-{r%Ac+x$&!w#1A6+fH$+A_@OpdDa(0bBYPBT73llgMq zR<(ch3^)>#B-yWG$mQ_?57n_(9mcD%bXzYdp!74oc$c$oj1Uh`(xyB*^_wN&av*M za^X3rBynsH?1P2=XY34M`(hxE>=Hg#zbK5Hz8PiXW2eU9i))a8#Ya>AWg2y_X^no} zN>{wJZdeIpX#d&_X?XA|=3>ZdfK1%R6*GX4f%TYm^B7q(#b%5H$gALo&e)h}i}Vdx z%Y$w)f2ow=yX1Io0tBc#1g6Fvug39*9)``2DV}-xS+GzRgx$HI7%;UV_B?%x`I{jf z{ry|QHd=@_R9tHWI~?S??R7#OzsA1FyFZS3Q&-J*C2t(BU8_6rjhdbfJk97a-CNh6Iq*+^$n?CyRvP|`|eN}LBuRyxy z$t<+#(JV9 zDbQn=Ux(}$eBHrjOAEu$(6vGBd%trt)WcpKAIrmU20QOjo2k);-gR1?&{}17pJG|V z-n4@qoz8;QITY*RyQfJ#uYK;-oGBfu)uAJ(VS?jMdeG_Pu$N2TObPc2f(qYILuV_8 z5nlA@@=czYnwMFA9iG*pIJ5-@tEdd#`Ww!e7Zsw+F&5>IdMxj0NexSm(NjXb38dvv zG1u9wISG?ImC!qjNg*F&PaxD<19eX%irSm~5%vr)?JJP>J@;ky)%5ny2q$ka)j78S z((@ibeop<=_|JCRhEY}S25hr)gJN46cGB5w*W3BfM}G$(3+n{?0=V;trdbvS?|7vV z5+QFhSCF-tj_3M*GJ* zlmlS)Jq$yI&j8>!3eNM3pUh8}bD8FoK+()9W!fFj1WzL-9AcHY6T?^<7QuL~VUC!d zYF3dYVV29uJq;7)oTuonVLC}Bve0o2Q`GHWuYo=y0+v3^G0n~6K@!;qH;GGy3%Jx9Z43g2Xb11 zZysg&48gB(rZ}=gvGRQJ*sV(b*qZPRDGjX#){3HO>cnm|bA)gn*k{H=6U*WU2{^*v zAA)%bE3$U(u$tF^ip%5gZ z%25ckbp_vNmbLKsDP+AMCSfCxYx!5et9kYW^;)824?tin-`)VoF7akcK%k^xo$bLB z;Fj!t7J>#&fMQu$`|CB0!xZ0x`OfQoQY!0(TiJBzFGsIyJYfS=L(E8D#sE}k1Nm%060PXHVnA>;*K0OB@< zFai#&io1cU{diNu)LW$EV1Aoy?xbWFhQt2A?m^nUZLdN7w8JgEeM2m{v@6+qfv&|A zw6KFsoF~g2V%*ix6BWptAFyM%aM4j%Q4nOS&5)+MxH?3NRJU-)e)n70l~bOh!*3*A zoH5+2Q;PgI<#RbG4>}o+Eg>TyG&EBd>xQ=k&~%kkT!*9h5(N2?4&FWmUGw|i$C9*h zJaY}WJVGn^>O*)Q@=g%mqhy4iIqn`x4bAiE?e$br{cV(Aw{+FjsI-(dczE!^{HGoz zrB6~2V7T2jn8g!sP}_2tAL)ep*(hsF7)XkKKMwkvaloODs{Z0`QNK!QK{DItW@2OJ z;j=9G?ddl@lfPUJzlaDF-9ebUAxJNbQiN54HUI~yS-H6Un0T{l5`s(AXk#~0G&B*7 z>UzG>v=fkQVDPz;=GqP$VFu761S*{lk7OY4+7;B6$sv$QkA0`NT3Ys`#MIkgL*wU= zHTvg{-Gu2e$d*PkUf}OezOdS3zuFg;5^~Nv#)X}1XbS~*Qit4F-9vcay15=lB%5i7 z^&@bCCTXa5k~8L}Z_0{9M;!H%aLTZZ#`EfRj_gUhxiL6@pcL&G-ho!FalT z#M_ry(Cx4(akWcN&Reug9ZVZ@aeZ?8oV2FYc_?RtY*L-n)VBr2 zd@}q>Ge!j|=xjT4#tlba?=Np54y+*>TfCN@ldWL@2m3>j;h$jD{S%&w*rxs+12`{dH^>HyhkfSAMsqR&Q{Ul zRl9yjYh&{2;Eo}%L2Bm6VE4~_u%34s%%hIufj7wp21x|a9~B397JTm_>j&T4Opu{p(1l*C(8i+{2Lq+RXu1nC zny%1R*HuNJGG`TCeYaG3HU2s!=Q((MTv{?UYmj^S3ed%7f}YC}vw+?*hv%c>KN8q2 zBS3;llk3sc-8=n|FvlniYRs-Bu7yY>QZF=W#sW)L_`19Xow^JS0d}ypXRyxbc5JXJ zd>?v%);W}RpfM%~=8wiu?lrTec!xs%8UqC{PW!O`uUAypx|-l%b}4|=u9NDk@< zKW)jt!|XLLMD`|dNbsnemRP374}d(r0cT+b^Bxu++op@%(|}7X+wy^(0jjBZzgR{l zix5tAhVfR458RBhtlP4y;Uw35WfKGSx*J%yu`RTVGo7I#q_7HsWrZgjMVgh|0d3VuzPkg{!3Rs=WFWp?7YZy zJebP4z=Q@;3@0K?B-%#}@S07HcDHa9w=gjX=n}-MWP0SC-r$R2fYrZJX>j@DIX|*< zm$tr|5s%M9_60OjYzUADUCl3U+wn3D_!j=$m@=?9p3b6cH@fk5?&{Eoz|ky*84T*I&-`zJvRt)l#OUKF}fk~0RU*l{Ry#l_kmjy~yIP;%@9^pIeE+=2rZBID2FQG`O z-Hq5k({|0{!aHEi7PDOLg#4k1gS1-Y<@(Ju&N}UtmUL=EjPw@GUtkl>S5ro6E#qFJ z_b?)OcHk4|8LXxEbESBhT#$~aX7^_3+a|uZb`_a-bWV}!9H;y6Vuq!Z$UzUbiFNe3 z;jpe1?4V|cb(8_)t)-KBcyMn|0N8be7-A$CX0-Gc=`9H6WT z6quIjF!v|3PN2&ir{3JE-74dN=Iqvi*^T%6hoqmMREFybTOX0my9!%~qpmX-qC8%J zmv0?YLbmh_ltEV;$F|OGdW02U)}!>hx5LC{(#^8Be9-FOfli8~I(UO2F&F*9Q=owe zGq9(+E`D`iLH`RT%(&+`z#`2J%1e8Z#=OZM{174$`KKZSvHumF&AH)+{Po&3dgpxf z`DKW6;$Xj20~x`SU`WY}w%LLH^{%EEe__v?G`~rJmh8`tk~`VPCnW{yz9f~khA(#$ zu6pk!ritHr#_!rWl}HCRxa9Ks$rf`>?Bz0t4O4tdw>zMu-bz%Yj}1lP1((F~Toq*SB7e5ESH2YpN%_?wdX)Pz8qQoPGjAnV6?m>K#en@j$3F6MII9y2 zEW-9ACo$b}gx7qnyz3?S^2QwVOk9Sa!4D{rWyCQdk@GyR=?```juCCud1YJsJ@^nG zgr)#!Odct3OMFP76%t2i#Y#B6^2A4ED?SV-`&>-1=yAAp->ml7gC^;-RGrsDS~gg8b3IlC z9vT0m35_JO(D&_x-j$AWs8DRv1(OnhGVCgSfZ~O(u5On1eQ2PEXSMeOE@+R4@Kyv& zTzaz_KG`O3wIm~7`pfF1})n>(m?||A* zQ{T`$(b1&CD5KMUiiVTsDA>vl6I zi|x&xunPJ%%fFs9yw`WIvPY$e?2U>VJ)Uiil?c5gzrq)1{aH0kS4r-f(te5k=qPxp zulm#eyplR~F|_rLJxSx$l_K|dky~9;dA`gBOHM2EW<_fV;_}53JN>yTCniQlAokL2 z<|@AOjio`wZ1RunvBfX>`tZ&Ea>Is#`Lz*U^Ve#q5;Y-)|M&ZhWx&hl^ce9S(Z z9Mzha*&(+ZPP7d7$&*uV^k)~v!#0m<2}*}7D zH5IWEWZ@J8d!{`l<%}q_`ivY1|IrVpXI;9jN7IIsseZ|TT) zCQudXJuoicG^y-2fWBwQ>TTzTZS5f5$X1JcdxL=sWBNEi{vbCCnn1R0Oi)leC%mj%~}mT&ogJw77KHUj~GI8 zU}$SW)7f4Xw(zZcWNk?q`M?YT!wt+k0P$zFUOqo-qoBE8_q^~U#_gPtZ$GV;j;eq` z8?<%wmXi7@XeYLp<%&7F+;Fn$4T!R|uiQex4Flb^T()#ZI0OLWirHj%`d)543`YjJed?tJ_l7i^9Z()q>xCa+FiT(t8~4j)aw@S~X)qKOnJVk)HAX{W+81xQ?Z`c3$yv$soXz>Q z;~pECfrS;5#c-~o=m8t>lKr7luj2>a7`>vh^7gjHWRAcFMA1;~i3rhiZXI&pH#iwu zP|uSecKrroI%l0PP6v$~UXPdemeu*VKyNSa!>VJ?(^}TvU!d^YfG`t0kBO<${I~^q zh^7if$f+_Ig+l}UmnoMv3=zp_T(;6Tj`J|TJz7hxRqU4E)z!l-aHw520A;!sFsf=b zE>o{c0jQr)PiztYZ;T*0qSsA43ta>dscTA)a1q&)pF;;8e9yFNjme1eKOmaOD%%7~ zAg0H2f35*GH5aoq6JTiMmlnZAQvzVH5abJlF&d;U7@Nz$DCgrfFfhP&0fLL2jemcC zuP|&vM6`AFC2XQbfkbRP;KNq`F{lhDN~*+lzhq3n72>=I^xNvTmOBFGNOXX3k)6X? z%@F*bKYx-_^?fvfvK1vH*#G7;+-b#0@fcZu3rzb4_JLWF)~+5jm#s!FW0upnUGIpcIMOQ8xj%ilvuE0l-2D zpSNZUwheGk@|^)fdJS#N&zt-%SP%ecTHS_7Ln}$Q&{);^T-t^dZ~~l3$v|&<3EyQ~ z&-9<}bH)nBn(E5){oKT!X8AP6o^*1fh|lfR#(cYVlqlhalqlsl8?xsg3B zPM4T!0X&s!dzdO9Oo7c|mpYxzGG)ayjsOm(8__VhjHr7QwuxVoB8+ks!5LwctGuZ? zpR^NWL3K;;`i~!c+|N&^D6(R}2#YMPXbHs}=%>sCnz<(jCVFe(;FwnShBwJ97sA&d z45R?zo7EVw&$cGGFHOLgwjyfl>Csy*Ryu=q10#Bda|^qPWBbn&2VOcL#0i$ERk-jV z)9W-(6R42F87B=64*E4~(bCaPoMVeF0;CXXV9r)437mXZpEtpYa~>;7%E}U391lhT z%$e#__lWoXap#;9(*Ri+mJ=Mb;l)pz^QbV<i>V^Ku?(yKFPTPtl%}eEyRp|K71X(y2^&5{7iC29J86%vO-f`V9cVri z-wN(7AL?t2)9AEwC<=oG!Y`aM{jdL<4%zDskhy}HT;vQGS^Nl>fp8a-rCsPo0z|Mfijp`vdI7Ft?wV!f>&?wg zQ~b}rzvbwCXVp=oUO(}4D!iY9lo8wI=Pr^tMK!6S8c5baOwg-5Sc`qwlED{pZBUGn+9*g@dE@(t&9W;UcvOek?s!%Utt+e$z7PQ@uka z`h_QyXen=#fTB;A{E8uNf&>4Cp{N?)=(`e5b5Zucp?&`GfXpJTx%4-c0CgeyQq}d| zTGxupXyA9FIgr{=R3z34r+UD;5AP45B~D&=ToBE?J2YSf{79aJ^{xs=`u{t?K0gQ% z_#o)oMx%j<`wb1_nhcPfY{8qQ)s;qmEK_D|cpjvf=Iahv1TLf%F%AyHvjp5WkB-}c zYfb$Lf@w^zSrS!V{m(hOwcd3>zbA}J#Q%dx=z-AFXRSenMS|J(&){(Jve?h$QJeXz zxBuv;@2LjuerG|Lq0pF_y5cA`Rz}q2EW~AM?U5~QX!ubxOQVJOOle7popiE|1OdOo zN;L%g^}^y}+u3hdv69(8-Z2hnDSps^X?9k+evI>eefD6Tpl= zqdlLg1yJ}x!+vO8B0qL~-oXd)tM`^=5qPkV*?|V}{D7=UvB_6OmnFoO752TQaKR%& zCZm4#Aw}%@H3AA-vjh!k#Uj!gKws=wlD;G5Bo2?+KppH1++8TAAhRB3l*68_EwY~! zX*i)WPNQ|FHUVT93dG+lNbL||T0QCZP;MIPtAMFQx;`K%C|yg5CM_dF;2#&!AE1+~ zE1Bc7p6(KQDoP1WI(y(VsBCM~SLw~B+D43ZJ@fG8`pJ>T8usg~3OS}ToIM=KU;XYI z_}Z_$#j%8Z%kkP!gl@U*fczW5;AxRAz~?=#G>iHh;+De;^t^S5>tQ8fNFIgN)*r}N zqB8#}jNXNPkNWm4Ni&08CJRLqh^2D!HWD-tim50(n$uNr;6vz1)A&iHiprqx)&brl zhBhTF&ttV+sH~u72<@MW3hS;A$D{Rq*Fj|p74DCe5r`5BJQ!ERO=gv(gB4I39_4l^# z=v?vx?m+5Exxw=rF^3xSE!H5%4n8wXZGg+s`0C!nP|Pt|Cgu~s2Tu-| z)(0UNO5q5h(MM)CD_%x=dMy=C?rJt$R4z3{^LyZa?R$&7M2t`m%#4ARZ zQw=jQKQWNaGmZ%Ihd9g#@FRN$dNE`SuTVwdyv>WptDP)Qs6~)4T=W<~WQTkEi_Eu) zjN9sZ!EhBBicT`HBWDwgK4rO4LP3G8MjYSS>9`nk^jJ+Z9}x_|japFAY)DUU3rja!VG`_dU;ktTjf{%u1n!=@HYp@*{zsaYXrXUB@m1Ty%H`)HFW> z0Xj&tMjwG&i zB>A&bBAf>&L3{&yAQQO$o#5|qt-T^b7t|{%{n)fX^9IqHoRsmNr>31G1!F0va6oTTXcMn=K)>v7*&KTnJRU{U-F$#Qgu}z# z7@q^Ahvfho*8Gg5{cA=bUhX8yzTkWr_Bi5Q%$=IWJM}g``0Dq0W?^(Yx9gSmO6JR5 z^W=BI`oNWDsH3M)-5ko^GOH zB*mi4jG(`;caXG3iHiB{eYi|JQRASh8@LPcr-;+-7Rb5#DHrvysouIf( z)jC4Tf7*w(fs&7fhsr>@AxHRz=!{9ox;un6m^L(b?38IDT~gA+RFd8QF2FDAOhAPOcoCbRV%bZ-IW7aH^5G|e96s~Maj$oX%v-Uqa7 zDN`}Q5YoR&e&?*KelVA;UZ?0(VOQa~jG^u0M--?-2)1*>^Trd{kFpc5g2|kfXVxX# zi!ke`ww+_V`4n%n7u7y=B!~o~^kR1wORi6F#_{Ya3R3ef*Jtn-o|e-`KatK72oC-& zGXKRn_mOG}qMv`LfXE3E68OCyUPq7wU(I}*+}c;VbJB0@bn=Jv z=CmQkPS?xf?9MJRXRA%iV}zd{SNymmd8zmoW#cTTdVP}e>%n&{2>qoCv9q#~?u_5k ztL>1_`gs-o5J#K)38%bc>W$wW@Aum$AD@dqc|+7pMatZW=dDY8Gu=_TC+Gdf@Pxv@ zdMB5P30GFw5!*MuMkVWnCQBJS5=c7R^6(z$yq4>Gl@}S6#TXOD>Ep3#&4FhO<61P% z)!!yOf+po#s>e<{$p3(^`}(C&&E}_SYT(B7m&$@N+Va&VeI81q!qG6oL=-F0=N}5o zeU#I#bW%*G)i+lrw<~ox~vTn5_#dn zK>&6{vX8UMBJ2EUuY}J(J&D3AY_+ZSkV#dMCbb}z)?!0f_EP_$+D9BBJIItMmMB9& zw=Xld+Ng_`Et{iUbX4qQr~c#57v1Ti`tVmX2>3c!hjmrpwQb^ZQZySvp4m-sx>i{& z3wndZ=GRQ*k)J^`KJG@X#L(nJTIYYk`MTnS;&S4TfZNaJnoIMX z13&5Oc4~);08q{oquSZ>egBb6zD??d? z@7bIT2m?!190+>*uw@&|8-r;dJ}dX9Nre%1KdIg8GtAZ3g${fCE9CQVY{z3V>Wr0j zWvd9mwVGo)mE;#GIQ2^D&(>`06R}h_0UK`;y`ZMyX@zH}U(|&1l^$(8m6j$Xtv6NS z6kDo%1W9rjjEfOEV#}DMe2ocBSfTKYqk;ss#68v!`?UYLz@C?B0EZoikIAwmJ#>Rw z_()7g>drM%Rwyc>!sI&LIJD{dtw&WS<;AFQXc&IfsbnXb(jc3D;T=nyZX6~1C0s{ri zFpC)EW!}txJ4~-h6|F%z%}2&MjgDf37JFW7VC$KL94l&J@BG?LaQ#j*_njCbMMG6% zEH3TMGWd5mVHElnKQ4mPg<}H)ziIvjqI^x`K6LZho+OTE+`;$4#gsjJzgAl6N3jAs zOsN1)tPLE7ekpnQ)S+|R?%J2WNB>o~^di1RK1ll4$!~?p_U>=yieIBfUd$N3b|v+7 zAdR36$;~Iy(tc+=l5HNV%lb&RV)So8ekAu$a;5U)`lsSns`9Tj_PJgVKss7@Bx;HU zX*#)I3!-yJmg?ePDwh`S&y!I~lRiO-B3-97TK1x)j3e)hv(cENFIRVVqKssp)@B-- zMA}PG5F)aZoRAT@v!|5Kzt5{*nM~2!MDe;eOd4sSc)pESRq{(%1_?^%ro2` zUR;h(iYXX`#-U6G!2)!rN2ytnvSYkWdF6MaWB1h&>DlJEd+#rqk$lCksg#|^8ut(7 z3PuCCoU-7*5?!@mdTa8J{r638;A9RE*HRWL&MVC?ljXVx;$ODeBPmCiwf~J1%@5Qv zbO<12;B!%T^uyKSsMb=eWtUAwrYObgqfc5}FlpZg^Uu7!yDB}!g&$Q9yx2808%g6; zx_UCreezu~1$<%04bSGwm0A9yW#*^XHm1aD3qd#ZAr!*DVaEdt=a$Y1jiUTgf^x8O zjPi#IW8r|@r;h_B_6B-~P~+&CRN#5^7~3Ujuzr&t2aiI~H*lpjmN2+0a3bFjNy2lG zNryf<{H@8~2;HI+H8S~*OdviaPbt==+__!ms~#cstl%$G>dwy3c)T)pa~yAoPkbYc z^cB*KI5jnr=XiznGbw}8G?E#sMLH~2rBsca^PEqG+oE;2o~5N<&mLoiR=mjxfIVg! zp*S8cx)pQJP~%h&nsrA-hznRli`b#oeG;VcX*JhGY><9sc6}3WYEj<+kz#w;iCnq7 z`FjgelH@QyB{G2yftqo7H0X*3sU^#VT4Tq4@K9m(;8q&C9mjlX3sx-lQwyxC(ZW)C zqEjVLZW2LfOCiyipC1I=nX6@63({Jvcvf{6(?7wsbPb0HD;8qhit}zhn^kCC#^tdf z+X`Hyy;RO3>w$5CcrPLRPOlTvjHDFVUOer3T)hk-Pb^ z!MbwWq*ufVHO|HGDU%jFtPF>$xItb^nkOSIE*Yt)J|u9tI50@^sg<&8;yb9Bs%cLn z>d)UlDQ2|QA*fac`Ly|QXsge~-jS_m)1eh5bnHn&?t>ATjLP z(!WAOORRIuseFHxC=|7_@Oxbbs?f~U%&Y<;+v(HflMuhawhkZtN+O5#($gY#x39$i z)?Qe7y?Sf$)2G?U%s+p}edTUDfyRXNLS9ss5vj926QOi%#Y1g(#ko-!yG=5#t&skc zQjxpjD+e0%UFWpH9oN2&$Mfx{x?1byQbgNUh62A_wd6%{{J-E#8$h@EdTjW$5A&pAr@>QLF>?4QXt* zn5{(92kx1Z(ep~C3Udd>q+^2g)E&>`S2%9jn>bo2A$dK8azAj1WzD;ae#<1ENaRZ6 z{ZvXU_~^%S2*v0%-ojjjy!F6H`a8;Ie)|RE>c<5UFfOIB8hp)&y^LH4LOVn35%b_q zcYS&ev!(OO+tuq7WMMIFs(db68ZX|_txHX|#TO6lKB$35We`5g9Er&3Hp;~9o~P!w zygs>cF(GJ&G1762?CrT>f!DV2YVWh7p_>i8wMIt0=nDPsxN`!_eYtO#nFjY2)ZI3N(*X-LJ)l$49lp0ZUW3}*?i^iw0F zx{aW(rT>oE%A+gH5jwo!(7ANSI<=X6->9T(${?90Q@v{}7+Ayb&cXLJ<1F>Z0Al_6 zXn#m@z7j`jMqxOp?fsqDVrM91*@m}%{P@aH5a#}Ie+jp*F^_t4Db>(@eL>}_{Rf($ zH@iXA$!MP*ZfY}Tr9Z<(9+_gzzOlNPGGt4e7}qvh!1+grDLRU|hGjYMSZuLgo(me2bkRt>!l zRa+y&DeOHl{k$DC4}vHmz$Z=UUEFMPxcWcHa%|oA0Txo%227FIf0Cv* z(JEFSpjDtzYjhwMtmAe3sURBv@QV*=4+>Wp&R=_9`3V?(W#kfQ?9vy5^V9Z??RQaw z4nr%`ybs1hxp=&AoIFhu6lecVG`Vh1lvUI>@Q|pQDSH;*+>~a;-3#4DE*?(~(=zlh zXaxxVn=Dp)=q}1R1YUgdv_dqi-1fJm&y=kmzS^XT|^-S@ydD=MMC{lQ=3 zUB+c9@&ZWkDxM?Gw+pkZmf6Ujd~Ta7PB9x3y>D|-_zqp?iXbeFL}VKg%JtcG$8IV5 zi80XPEi76`gGvKtad{<-xpUuT`CD=~9P9{UR|*m0xBx@1IZ1F4Fow zL&WMWOB4GJ?lleVmo#170_ZsjOa|0qJh}rZDr&!uGZWJLUcSMZn>%gUtw?zoVg=b6 z2MAml3L1ybc4}&m{-I6Ld(YJ8@2NO`7YOjx*@TDJan0@!Py|Bh}ok1uKE1earUCM!jPVEdyp?OvaRL$meug zor@u9U5Cj(B+{^tfw`uh7@VN+tHn(b7Wd^_hh{LnV<6O3T6q^k;qm)ZjCvZMQ*QbL zCD})4V`utUcbB#-|C znG>L@X31GdsXEnPAYYM9%-|xMuh=pbDUOkv7z+-{5-n5^S@0YL)yMxju4KE`Q=x1V ziGkTy<8ROq*Rk_PqZe0W`6UJCX8e0hAj}0XPBAOtfnoPMN=RGmr@+xAHuT7eQmO|H zUIfqs?ywf@x1amR^tRkx?XCluz;RkTPJc$gr>DbK-L` zPT%|MnHCa1g!9P{8UEGXhem6%I*`K7Z1fRtA|7JJTbJ8k^7-itMo5zxU3??XudaT> z^mD5FRA%TQ8s8K(f7MB~#!1O|RP+odU@Zt8mIaF!J~ zq5v=B(h_?_(_o#zvC&b)5(bkBUF*IbQK00$F(t=kn*e5WMMK^mGfx=Eo zDX~7emb803>eUP`t1$pMwv=QE!;k_a zl-zr_WTiDPFAD@6{^yP}etmO7g*_zNaW3t-5-ojnm8)@K zYS&o(o`lOX+ojaT($ZEGmGN=a1nnQfP2U={Ur!#ggzY;nUlM0oAFeWt1{MSLdCi04 zWaFz%$HJXAn0$zP2(xg$IUL|m5zBs4{K%ZN^{E8h>BSLx^G&|cn^pouo&bt7HxEyp z3mf>iw=wH=JH4dUtOyMT0%SqrApo~96-9k;$HW7!`Hj)rqkeLKk~qJQL!f8LNOkiY zEkk}CWVleo*>lLV=Yif0GEv7DWTqg7;6wNdaA`Vt9*^)Em_#GM8sEw}5wCVtHGcg4 z;aly$2d`)JTQ1@5I%DG!hiJI65xyWCB(c!;{o`w1NB{!!Wj$Y8{_Qe>45~jZU>`KCmd5kskO0 zbDPC{-BL!{Y9t{`x*sQWhd|~AcQS*-;K9N~A?MbMD>DQZw~a+&cV;|{`(dE{=}IkS z)2_d-yz^?bpYC@&R1!rN{LRN98%TVf6od*plokqcTQ`W@lOK%Qx%WoW83} zo~HXk%`0Q~2_1E|eYg7W;SAgi%a_9c=8*j<+4lmYZIDE?*OBdtn!Ocs2)d4p~7LsfIj=C>V6#~MVR zIiB!k?Zv3x!x#I1Pf8ABR|T|8oW}KA5miH2T_R?D;8*VbuX7IU$?~E{FLc^-R4cAd zMc?jAk#MkLh#&lp{d@K9V`cG*R zTVGjgV@HvC6O7eU7JrH8-5FPZRB#N&?=4HKTIx{r8f;Uq#XNAaviNl39uT)Gd723x zyH~MEwzt2oe%oA2nRb^3`)n(4Ve!w#YY*O_|G#53N-XzL;TgHeo_xNn7umq-BsE<^ zc5-1Ht*e}TRS-a7$xhCUg~W&mPr2hL^?_k&Otk%WV&?nZ(>>pqVE8nG$SU<7@f=rM zF*MuO`Y>_7ZQqdO-K=+6VSJ?dFp;(~^we*^yzIRJ+T>UaqW*1MbzwK;VHY`yyca@j zXz5P)9a#Ve_dp3K4c+fYKOBQgkh6*7G_6%Wd-Z?<{C7!ab;5aO28%ZBVbR_hY#R76 zL!(O^)NhY$rV;;A9FkT~9pp4+d-E^LuYWXmjHPxq&ABWUQX;k3($DoSZzp;xuj$%DBirgC2z z>|XzUq?>_uxyAc`&oGUavUaonJJDTt!+k@z+|oqzf85W*->Z>%C(o+?mK(j!>^e{@7rP|& zlx&V%uyvibO80{n#rR_S<=m9sX^6bP(#EG7Z7cU_)z-WkckZRkN2g(*5%WvqUXM;v z^j|gVuAECXw_+eSG0cG@2=2|Cph#gx(8+i zsI`84j91Qy+j8U|>7@agTn3tMn6SsQCEbo>Db=rS89NVmi)d~S8}gSM5Qkz<3izJd zhDi7`^upFBIG3GyC_W7c%f+rIG?mIQw&=ZuP&fI^O9onLLRgt$?Z~;ovkzRRum6%P zl0fXqC)!VEr?qvO(f|CTkqqT?KiJvXu^WvB%*M!Ns+)%#3egQ1fpI=}t80Ch+{%Qu zbeg_Z!NrU;#^+YN%^Ls6liPJmx$wP;yKN|*A~|WX%fz2^ux73=xi9Zcd;R-VBLoBr zIshk${o5w#xh)Ss%Kb@S$|T>}DwBPS*%s)o`A4(yZ1IXE5E-~Vq^qp_d#6S)QHFJf zG%PWR$CS}BJj`)<8`IJSku(}(bX94@GbCi%`&4T`b0^CHk~58Ig` zp(X)BL_n3855g?q>Rv?-i8Fvwa7b}`NhLjwhpby&#ca4h8CAWEx&W>G-RJ!8+PEMlg@APvSU#UslT&SE6e z-=Xvh`r$oPi~KJ_xEb@$GQdWMuTB>#+!>WJ|IR1voA4!lB;g!j z=NCa@feZYiW!Y`LM+pHB`U#4;wCM(cX?I$GyXdPBG+!ERPeOof^3%%07k(3A#21|l z!RrVrb=4Y0 zUNRc&^?vlgH74f8G2umwizv)u0`>KEKe1Ff;<-3n9l5Nl!}1?|*d{qgD#X@r#B|e< z7V`$0lewlSl{c`E=IS$sEl#p&ThDo_9c&BT3`AZ-m#T*U(<<8)38}?9uBzUC$p4rOXpzxx6yA!*{ZOHYVIxPCx?TJIneNzRlBm|HhVtk`ECUch(M87$b(e#5RLTW;3L%cDD;tlg=^0J*oAtdO? zGcIhAq=HM%*h2(XMKnpiw3>s$CC-(c2>N=Ne91P0Ee}>%Hrz` zCJ4nTU58;Wjla8ADYz5AjCZm-euQ~1G z!u(`1=mf3C2i`VISo?791RVXu=KFKba)rMcpVo;`NQHjC3MQ>lNkPc8cp3U%Z_u-K z?DD}`;rK5Pno^uy*p8gab;GUo5@M4R4iJ@gr9@s3FSX^H5AQF1J#H=zEA|meJ-)#P zj@vGYSt7)lT8OA?gkFTw&Sx%Yo9jAR=5F?WYFH6D)T|%!#-N#qU7rceWatWRr|mLD zNedH0U!p>iItNmjDFcuCtg{ z9v2W9^bNH2SeW1s@dWt4>@m4x!E^Zr1a^2qn^TxvuC<03t1x9-GE4j_eg`oQq*Z?S zXcNBmk3*g|E@!{uI8HWF={`w{rJrwRAa|`YUe>Rei^HcYUOVJEgHgfZ*Dpm=LS!lJ zn(B#oZBP8z_}qkwl-_w>3VyAsF@DwiE(<)P%UpsNH_|d+xjUha>q?%L>tkRqetUgG z{b@pTw>tZUzCOppYf#qfJ{S3=E?ceZ@Hc};OoEVbG31=tfA6TIpKhS%6G@8`+5|}S zas#ZYH&-W`Y|CuKVVZZ<^8iOxX(7y~*!34+!TP%*l4!v& z6_-)th-vXWKki0ll?mzS!X9Gc*g5nhE^SvOoKKPRAFpjj4iO(yC|n_jx)I+9j&l*<5T5VN0GGYc!mcxmy7>^_`J**@tePY6gB z4$~S`N}nH%U(xy3zoJt}{IExr_&8sXm6-ks)r8C^%^C%9N=ZLuVmO-kC)<)>)s$_0 zE@m`Ot4`G@su(&nXPeB)%Cly58d}$F~#|L4PNP+cy_cKAVStKk>}TAA!+}JS%NZNWG~lgsflO~5qk)n zN>W-c>ervmP(l?ttWWct%IglSmv^2{vY3S)Vh+mqiy0o}D;4!oSaE9B*~M!`C}suc z8#WtV6GP>Mk@ioAi`QNo@DuI?M%s4xbR?xNH{f`Z$tzvsoJ!w)CY?u3ZFXy1a8+52B+`Bo76Y>0+6_?7By)=aaa~rMqu*^VlL0Xe2UjUW-u|(v$ zT;8=3Qq1-cpotp-Wx$23vAKZiDvv{$amVkutPQ<6F`4M-EYhucHT~~9wgFD>OmAr; zIJ^f*Q%Nv0#Ft$dZA-A!dw+{3pzsHAt1lU3p?4rVOeG7m^c~#BbBTDiyAs2=ZSwbH zY8glo!B8#RUJ+II^FoGdlTX(M&iz^GC`nRg-OcUrGY6`;-aibFQ@J%EW9^M=n1LVd zy8W^od$oGkz(1|M8%lSk+UzS`gHH7sO`>`vy__286$6#`OMYZ~RdJlI5 zy0Pob*X|NQIgBf$hRsXpO9uuYcagKW#EVsiaT6&;9|>$u(u&9Cbmj2n*NCZZ#rQ$u z9#^Q|0oJs&}2R zk32OLYtjYr&3%3&?1)-<*4C;P0Pi>v@+hz9n~J2DvwCVNFlB3*PF-V%}hF z%JI7sB+j`vqKGh~P1NT}Ea5gk=M*1~PT%3##5aN<;DJVH5KRm6ziD1mBJs8h&lHv} zFEAqDzujA$exD=l=v*6?bR>;&&CH0sh@}ZR#SvS)>#|xFU z8|uoP2)tya2;Jt6-PcCOvc$PTGaEQ8P&O?^2t z5FOiZ5cttS>6Y`oV4sQVbpKpok67T0z|T8mW#%!})g#1*k8Q3)F)=7*bvI74I)MRP z)V4k~@VpE8MDkqerC+WoqOyvK+>{5_Ivc}8FMp_w1PMHMgQtJy?kBMj=b2Y7$4Tm) z|B=1(Jw#hq#eFiTh2vG6o){BM41Qwc=7JT#cc(xJ2uMcJ7Lwu9f9~F1I8aFt!Rvm z9nk3Bqe~e#qLR*gmdBlwEeI!!;UPj8?*@Et@rpL2L+7Kjp63xd66Y(vd3~0M z0Q#uT)5>WNEjz21dSBD$ERGlMll}yx52v|)URUzXBIrC|9L;!Lz0U@UQ0);N_{j2W z1Xg9Qpgo^FBrXplsIa6eDtN3 zz71Mogv7*T*ZBNL)xJfDMyTWcBa_QhiewM+pc?Bqza*nIGOKjjy^lCPsR3>CS;f42 z*c4i{;>Ykz8cxpU@Jr>CmYDFTBVi{rkCUVzjinh9*JQw>JwE$Bz-z{h8mnUJiz3;% zY*3NQXBS$@=PJ@I#v3AW3QG*6N+)dntZQ8460?<5SY7+)OEE_?U+fa)43-mv zCk0l><~29#U+0vI8SW%|9W9xtB_+7cT$rW~$x*)jp!`TK=(_k=J&nkfkjy9R@cZm| z*9m&Y?j#B^ZIU1SxarKhzXleL7z%5qF^Kb!+|MS(AjR0R-+JWfY0xM(x%okpTEx|G z#%!?J`)wO0E0{w875svwmdxhQ7Xe_HQCGR6W8>^Qg*ONnM;!|eHLkF)Z(w*qC0O>s zhIuK2Z!_HmG`pA9fopTu<@kW`P>*qn8vk3NH85)rT^2D>=mSJ^0Hh7m+%jUWcf9%;ryA zOx(+LcWkzZ9YjhQRN+wgW^--cYvj^l$AMzSr-tg$X2q90?Q5nExaY5Qs951KR|N|> z)hjEd@QZd{h|iLcmCxbKC$}mcQ!{KU#$njuhluBPbh~)If)$^-$2a5F(upA4kvQlS zkmtX}(W}>3Hd##_!zOsotOs+&XQ!t6u^m6xggS?q76qpk6h{(cJC)&U2WR`3ndI9` z>sQ(zLBtcv90D{`nrOEE%_!G_C_?6fG@rYXIp$3lj)#7AKI5%gDv_(VKX z>X)}rc8CSm&}?qyIGU^BWOc!<;WPgFmPst^tG8~Gsuhf%%r!>Xjx;su%XZfUWymn+ z0#g)0_9yYuvHH?PYU!7mj-#Z?mU?rCRp2&y{$~RBsNBIemTdUpV?0m+5hzWHfTgF0~Uk zuZ>_FB;2%*!X{kyown(D*ymqn>ubF*8XU3!9%X0@D+}L0iOv4mw%;9^Pgul)1l{uq zzTcEBFvol7M)ngsJbPM9B|jHZi==876lF8zx8IxwzkpN8Zp+xazjrrXlPLDz+J)Jc z#1{l)vk1JDJ?_E?k6|2fSfn|ea?u;+JFo}!_n&y=9fgy3w?Pk>06JD&8TuRSpX%#4 z=+B2*?6nRORG2)NKg7Iz+k1_K|$9 z<5#BL4o2+!`!6#8X@zd*_NGDr;hMZCPB7unw>#{}nfzb-r<$j960(-iM zawFsjyYQ#V4gFKOp-THKzcd&lRj06Ow>y*$YiW>;@S9-IV+O4{yBnV^Y!OSU5WIft zsjU>f@~3L`45u=khX#=P=bWc>owi1|`eJ6O2i2SQa76FS_@oqijqpoe;g)UetxV2a$@B6dvZ-_5JeB53K zs5o;qZx^Jk-yDn5f!}tYuk0RDcZVyU+HQtqI{22i;#`~H6M#wfz!Xh}?!~rg9R+6K zC7A3et;Nnf1uZu8OkW!TOiIU5ek%9lw>3T&Jygk2>{qJF1xprZf9LjQww{l+IgS$> zw=GVl3>IgTx4>6FddT(EGEl1Yw+o$r<4}O+QDv4EuQD7_Y*;8e45fh$f;#_r?@{~ zG)a+QEIO?f!ksNi93X7c==DW-QvT32+>yb#nNlTC@`Rd-i~mP=v$X4tm= zt5xcy)0S&Z8QFU6?IFGVnEknUUX6@)UcH}3@9h%pyi!dSEEZ5R< zKR}3xZd~m;#DU~SxftOyl4gJvEjoo$SAa${qW~*fF#d+6wY7chkBcCxo340`kPwv7 ztG|GHa_1mn@3^3CRKWo0Y`p)$F5bl`&)oV+shl|kp7Z^Fbgu6U(x*1gJMSg03n-T_ z`e&B-GogQlB7B~?-hazy{9%QMQ4sxHvfDF34#}+Kd)mpbP`XG?qaP6TLpi4d zp7TahQQR=dSDVJ`j-^|L?uDCzIMA}z86i8L+rN^krRPO+=;JN)(95!X_Ou}hPl@JZ zDFrBCk1z`$JD`>Z@n%ewsx9KP?!QWTXlc2k2z_pO8xxgt{V89qfNc%%i(c76Rc=!x zzAeMn?5zo;4QO@^An6q+KlS@i_a?l=1|t1YbmStzlMk0 z)`xImWs#%!ScsETd~Mu30Ev)RH&eQoZ=bAgvbrAt#pHdu_m$_Sud2wuPv?R*9EhqO zY*8WV;(cfO9|Iz1Dl(3~D;P$Y6ZZ*p$zaHM6;Z$-pDeJJX;absE)xi$o5AX^F{!5H zG}C##UsI=f^$@}$7Gvi$mIb&e!#`tLGxltl+jRpk-sCe9Wz_SM<)wTdcrm zpqcU&b?`&v7Vk%~t{ZSWLuVu%0d!UsA-3q>`M4H#R6 z)FOQSltuoG5bwx zikH{R4lXlbbeV~1*l#Z_P|WWZJW0^~=%geKXF%8>{;l++3vN8P?L+K3Icgzo1iA%o1nPXW*#TD`B-q z4jT@y^we-8YT(+CGi$Ta`$mp=OBw%s^c}59auZ8gwa(0cJ@au~>VnVdoFs0(tVSK* z`sjM`o(291CAW{$sr|q|%(R5q1ToGV6;omx35*9s{|L%WJT%KJPdx%jte0%_r|2+N zBWxmwWid-YRQ=$R`+ckLrldY*L^Zcr|L5N`OA83($2?XO^fIQm;AGi}{%Vmws;aYS z2K*nzVGnd|AlAj=VI|w}UcSy0Tpm|mRy3xW0Z|33tNz;s3~`oz@3kt*9Tuw9-FHUD zI2`xG%7YhJ_GTpF4poeQGU=dsaKPFp;JMYaIa$6CyOY4>R-P*Ud# zhpvOCRDRQMj$C}T6#x#Zqv`xV2?-i1^Vs5BBk$V z&jB|xE)vWM`vAgcxAuK8UxZ%1HGeRz{15p-g>#bLwXgl?7CdEfV6pFOUfiyj*2Y+J z9-jX4Gfo#-dKox5YDSTID9T(0VwT97C~cToJFB#hexl+S1KAz)GTr@GVFQ2G;Lyyn zcDNAGEGeXXEXnu~p#ufka80v%o!3hT=`vG*Zo=9`Et1_NMB@*kz-Lr+)YN%I3$jeB z*`I5dT%QUin@;WlF))kg(O_W%Gw-|i|HMFCd{V*zNCHU&!JNF*Ykt&O;Owi}yZu}O zwQXrh(+0!}#UA>o4C6T>gNyUnn z`swy7Xg@;Yy^vhP6C45H{}oc<~_`jJPVJYZGLBwXZQ#XV`b%J_jBD{DpuD?hNyx&J~|I2ABb0bPzHe%#RRLN1Y37< za|P_!z@#a#3Ei}-P%&mb0c6#}o`fvU#m)}dX3eIaU4BjPL`K&G+t(y^41E51!!P?9&1Zn(yXbrB`)Hw?x$iBaB(*7^M)#}huF41F2sta z5*3j%b0@wT&7mR?yu%ar-=1*)ugOB@;qr}~Sh@v`7W>)Fx;I(F+l>G471W*ztf|7= z10TQ=04dqGcs3JbTrSITG2*e}+Ai6Uiy5+UL44Yfd|2ZFDPF{eyjI-%-u#UXL58_R zkp@b3n?z!HT9hM`oI1Z-RN~G^fTOSq+4T8#zm!54Y zgglo87g6nIS4vKCjziD^hfnrZd}C8`7qi$Kxm{OUlGtD0*g&&;19|!W%a&Vv2sMPz zUJfbOLG8}`+a6ib;~#PXh_9HYs%~Vuud!e; zA5PZHl`~+7*SaQl>VB=M>bZr{+huJP(RyUs1Sc{B;b_2;Gy52pK`~RlaLBifTs1JU zx7WDr1}_r6`Qp-;xsd6*Xn?LcR!Zt(Z6E$86JCVwC7jr5?e`Ja2KWeYt5MW+Vr z8j!utRf)?4Q~SXc%kSn&d81h?!lfC5BXQH~t$+w*F zhTUu5oRfhz*i1Yt6aFmAhuYxl>4sVv&L0p<+(K%ygy7bS^Qw((J$gefRn*RZ&zNWV z^#13>K0K=?T9WDyKg9{d?0Vbk><;Fi({2CXVF7}O@kbtgvV*6ECP3#*v;xwGPJVj9 zM+(RP?<|4`UO2)qIwD_+NRN>Wd>Ld(No71+seqNgsiHOge-g0=6yvp5hJv-deKIax zsDle@8k;ECsg6YJxt2=Cew}UZ}P%IK)b#TeCsxVetvR;t7^ggG@hC_Sjyxuj` z_PVxa(I3%g+Aej|<5gmbM8jGwEsDQ>U9-zy@Zu7moB#8At>*tfu$;|tI(j1XQlsS)k0_Krz)R*$=PkFY@HZtS-V2$yI)B( zJ)y&0;yv(=9J$qqV1gt92p6gxVbaZw5HmY_vUZns-`Yqw#W-!6^|6KGDb2(eL`ts4 zeZngD`S7TW`EF-NYxdht^sQ3!-n=SZwkq0)1|z*@R&bghuW$!~Yh~=q=l(^aZFTPTAI@4QU7^3 zjq!jUJD~t~0P>?i2hVOlom)GW22T#RPI%(16YrnhGVS1WQpWXG%A$<8_$LAsJBikr znHhOCHMPo-?sa}(K$@$ui1IG}v4j{KOZkKZqM@MmTwGkTNDk%YQeYIf z0>FU%9c1d`#Nfci3t&&0oSbYj6Mk$+l$4l=0HYw+Se|demWq_ydeZIq^8&la8hqV?CSG zn-eVhBYC*>>YE8Z$8_`7$138d*33p%@O5r=$j8@E;~)yYvUfvAHM>;YY;RI)E8Y`n z5=9Kl$LHO z>24&Xq+1%KySqcWBo8IsU4n$bq2T}rkcM}-pXYwR@AXgQa^~9Z*)w~uwSJ3i%myyh zyitruCYL6mLxOOfTacpm!)Q9vw)xF4hng10ds*rYU89|yf#R-urO^2Wgi+Hd8hxw= zzY~G-s*2>hKLk=U0bnY|(cj8M@WnG8hYer`(G&X2KH zScz*cT%(8tme@60TbbOX=vxhTKZ@FT42rnXmd_JJ9?@Nc1gC&6eyg;q>PuR#WbYr{ zW*`(HvwBM)=w9Wm>pV;uHhjGNLr^+9j+jpg;1S3!g#uD<)+HYDC~~o@RK_I&5fibw zN}W}P#w`Er7ayktq0Uc9^8+!%qi!@sw+)A9wFpvLPGTRcM<)#_(l=~m$SG2=<5D=L zo>ZWfOF+M(xm1&n`=B0Uw3|Jdi2cWs2fua4jHYG-z(<;|ZE9LVUH4$Nc?7I9rxaKy zIPz8XrZZJl^_fhi3Jq52INa6AJr-A-CTH&nxxbVpqY)7>5LhH?tI(A6Yy<`LS5z#s z+z#B%&iTog#K-%-rLSQY9wx#qyAgFoCX!c#zB5)9k-qanDAS4Y z;|D!Bkaui|-Kr*}J$-r*lT8N>s0m*uC4TW>Vv2D{wwa>G4wyppaHPWtS@DP75Al#_ z&xV>A6z$c8p3iNPEZxz-3{euaq6hVe4*4>elWb=@%#1lb9k#jtAyPE9(7b)*=E-{( z_%?N;dx#zG+U!6wMF9y&i{%tzL?m544;irz?rWJ>#xZ7>Xse7~Z z?)cB;ySb5($R1?3?=h_5%Lj~U7u?q2$_J}}{%^y*xBju??qrukJ|K`BPio(VMon-V z-^bPSk3|nJL^_hM`vtn#x;l|$KuSzaSNC9Lu8tJ}@#q^;k7pKs$2U$eugxF{!}(Sq z=UGlzLl?a$JJb0@RI&5?$7P`t4Z^3{Q^Ah!H0+d?itF>%uqZeKLEav}X&k<=q^zVK z3rheNKic}E<#L0R^s5xtsQlp0R;zY zmx!cEyE+~kt>1mRYl!e6)axIK>4U?Gqxl)(wycU3`C=ySJd6#vGc4-tww5HF;9^C6aGITvx1{2Fjfed}ms z8SVlIipdrsRdZ{O2`FR4$z0}C?6k+8N0a&wby!j&U_=JER5MI}k%&Sq5k0=*;E$_e zy)okkaZoAJN?fE=xacGfv%yx7gsy}Zv?nwCqRUjCRMof3U|0 znO&z&3|(NKg5ygZ41DvLkFl7`fYnH?Zrat=jFr@+$hit5s*%L=-*V|$6%O9Ydy4u{ zTs}E%j;b=bNa&We9LwOli=y|Pg>Fxl(VSrx_ggpA~OM8tZ<6z_9CHp;3xvWZdz>cI{a)D(!k$78^QaY;!dXBbCXhtidZ*%*9{=%q~b zZglVG8jNgwtHWerdc>n|SHEKRd51|Q((|lnJiqG9@xv!|ix9tntv(JMavYL3gp*tj zE*Oy*k*^|gKp~8W1hsaE5lrbF)ZL(6*9UC{#Bkn+LuUKiKlCq4o`D#(57G zhf!}pwMfLU_~XM=Nt`0H<{6JW`?@!(LoQBeIO|?c5H(pRw&++513cuhVJcoNA!{7L zVJ^W)!w#`LALxBUn*c4OC=8&&kY`&`35&PZgPd_;c`*uF+uYx3!5$c4p67HhQX{`} zlW3>NOB9kPqXdqb6<9eaR^m&zAj-w!cMK2m29(}RY7w^lN_hpj4A_sspgl=1ei<)0 zF48iWpH0IbeM_k8U!CNR-c820=U2P>nV?#a3+DJgv_&;riWHn)=*zL)ac(DbeC#f+ zeYgI;mLvYvquS|$mx>`AR~sWWHm4YRrA6svP6a_iSmFa_|2Vw7*gOI9XgB-lS~mv7!8t|b$>S?^F|S(rXaos)M58A zo+e%;0Qf$VL_Y>Fv}Z)V1A75@ZzUpXW08Ad=+(1_41Hcq&qFgD%8eDx1~n14{tpC>DPvo?IQ!h>34j4Z{g~?^R?HI`i6SnnU0zKLi(wJY?~tMuBDP7%hF0O zs)L#;tLjvagM%k)q?+50Y&MI7sdIIusHPVhW?E;$!kkcsGq$Ukl9(6Pq%D=X%{n_j zyLz~egK0I=OOU|$ zgdkpkXP&W&q-yRq6PWlWq4!EYR22gpXi&a--6+CP>Cm|=SK9^8l_fHf2_M@zMIGXgkcIR`t3U)|L7{5Fs*BL|oG#cP^Hx$(La zo)n!(wOceqQaP;Txo?u8^(#H;89kLUv)f4sI(IhL>gC=#SB9Vu9hhD2kw$#_yzl#N z*INB928liT$qVN z>FYewRlo79#mB!_Jp6WOgzy9xz?r+};L(BT3xc^)A4hwbB^W@(UrvidpV^*^A08&d zb|Ts?f(FLkjNrcW%g9^z+(z>PtPF0vkb2Pr=n)`Sb~bXkPeHD;nj@ zi_lh5#3+TxpaEmQpCJRq1@%ga5sPb(NO}3SAknuDsS=haSSbXNl1^_=zv$ub^kjCi z35=KE+tqxbj&p{8yX>xf0OtMf6IE56MpMFGb)ONXYH&Fr?2xx0FOSPgEA$EgzZJYG zPyEhN>r-|_qEZQG{1&>+7pU<%XfRT|VEPpFo5cE4Nj^tM-KuI@x`qSVV+Ri%Dmg?P zhVIc7Pr~547SkE_NDc_Cr%giMDGHE_DY|2cF?Z|uLq*=uZQVq5G2|1 zS#*Y;p-`8df@OzcQL?W+CsG+vp0_*NV4zDa>)sClU5`%r{Z)U_>A)lOdC7nV(rNG4 z1sp@J-cm{;j1gL96UM80czoqEm;EyFeW6p34yelx&!YBvTXzqc3wls;@1~4-0!loa zYw6QPMgP{vjo7yy2-30a8Ue*UyA`a_!s5F2X+a( z408vNlHWiy#9-xUsbzF3b2pkx1jm4Dy}F*v|A8ZIh+f30#(NM5ilg2FOaXfT+cD#8 zp;NCZxdx!!was!8=!s)z?|5gM#z}Cv@QT~dpy~_mXW)F~M>yuk)Yf;pu|p4;AwA;> z^qTb%JzM;TbYEmEUgK#gEjy&{en`I9H8Ev-6JFsdX3x{ujzxzp7a^$KYtk^qo_H7} zZ1B~qNdeBDA??X_r=kq+c}}~kdKM-mjCI5}XyE#K36Wz|6vJ7hBSnUBn=F}vtV%~j z47oTMfl@0C6>YTYylNJv1XWk1l-r-|uT4(C1B-09Q?GFq((H-*-rj@<+ISTW0yuII zgbXMB7Ct!ycG1%2Z8G}P1*%0@2ZeupUiXtyv<}iijpyc_?Dd!82a)DOm~30#=^h|f?h4+{i2zN!Zlgj`EtCCu5=NuLzR5CX zp(U_O6c~6oI?d-jvoyzkvczicP19UQr(N)O7?4j->7PiLd$MgHh2+Hz*@Y(yg$jm| zs`n(#8qsmWy-Q3r2kId0J zf1>d1HUN6oqcgDRH0O~ExTYI8_Ux@@H&a{rYH>H|H!0@`X!<=}iOgem2sx3dvJuvG8T(H)wxL`D=M9jscqwXs;DqA zL&HvP_{iX>qqpNC5gimUL4-Z(RBZ5Bd%FaD;C7t5drW(?+!P}IDq`S6?b5`exV~~8 zR>AO-ij`-&jSnT+DuXnGFD4Svjhe@t0z3{SWKYjc75p{1=c5X2R7e;C_ihjBTZyL* zMs2mwZ4!m+P=nyR3INPYRt;xP%{rPrdKU;_=%Cbm)+N6?)mcd?20WhhmUT2@@07$o;A{_E+N_toSu_j;a0V#WFtW-KiYM)ula~(H4Ri$Bq!Y$A79&?oVzclmo z*Wud21-a z8FbnJoD3L{!<{ZJfW|3#0MVSG*`?zM6VA3+3Dm%bwLb%N5obI@AZz{R&5yic00G2) zJC|qg=9QM5JgV$}H}@x#I$LlPNILD$z6SzMtHPo;Ju#3Brxok(7SY%%_zAcX161)p z!!b27$ojcwfr$GWB-kE^g1lN$jBb$Pq#PJKOXXrDmi`rHZp>5;ze{1+Ua*AD_AM70HuzS);yXUOH5^%3hZ_B1N4g6-(>R zcj=Wp5r%0p?ykEm84l2|^V+pVC`L6zt;jq@kLR4YL2gZTo~m~WaUkNTm5f%7wZgSU z!1#QtrR#C&=Q)EO$gmTOjiK0Pq3_}iVJ{8*b$sq%;FccV>#l(mgm9(nk8=T+@_0_7 zR|%1_l;kxf+4FIF5-LOU7@T*4Vb(q*<{FiZYjP?ccM2(p{rD$^?O1mX7xBu!qZ<

=GlxH4@*cKgOebsda-3wCur^4QhU1RSR7t!N;0Kr&s*@T%aE$ z8;ofnwF(qXCf&YoB-RHgJkU8;^*~!q5lQ=C-h~NlZcP41mHWC$!%M-HEWa|d$Sz2d zZnUsJHvAo7aophdxu@z2if#3a0?`txDZ)9TB!wNbb=7Oz!3gE%!>HGP9M}pto*!&^ z?AAU8omaIJQx!pkMtyxOeN+)>tLCW^H^2kG{*L9lh*v1G-BFi0Hh8|`p#5&gx&M5+%#Ot=Q0TtGc)AmylkLXjNBR<*X;OI>YzT_ne4k>r%D6zz-q89_vaQY--G;iepozhkqGIW(suk?wYS0)tCKd%Jya9)yy}5>3YK0uknBMeWd9{7 zqnsFVxpWM|;1VgTZ}Fi5^0Q~D2)4bYB!p@$dn-?w$D`zs{*oj73$2gaHe${Y=R|PE zow_I6nFY#}?I+WN1?~`P_ZHR3jQ%=zO|0b!}TZhI|T=QHf{~xR%Hj6-(a`J z-FBg_$KU=VMcp@`Z0DOU=M9%yklAX#LI(Tc&eDl_8`U!SYc8PoJUGHzg{x@W8Yi-wXl`lgwIa3H|g6ZJhlA8at!c1 z9fq?Ary@N?jXpfs?U=7GHTEd5Po#KV?6&bg6-KeS<7w&m`rggurLy~MqCnfG4C9^C z1^^X)@1=8T6xb=y(q}sc`GBd(6SC|<;mj6{i|xj2gQBYKnVJxDIH&GYA8zxbc;d&xU?m z(RC`)sjC;G^~Wn?SUQ}wdFP6#BCqqK@OVGgN5?+n-g*NLG8VsnAks?vJu1iQ-SJ_W ztyLoX)Bcq6cG_fWf+WJQpZd_4GTURi!F`xFc)%;Fq}Jr=;TDGDBK(Ci^ZN@<-x%u~ z%VD|!VEv^PjMS{u8hgQ~EL-Mv<{Xhtg##^2uU+H<0WT6M^t+`$P=*bZ|9*~ zg6$&ry_`8Y7h70y8;m}H@Y%AuSvss$f6Zt|RA8I!di?u)Z7lNekclr0D3x1=9#+t>a_ zQ+f05kCjcVLN@CgYA;TcKPEj%W~vL0Uf<8(SVyC#22HTb-S!&G(bPwEA~mY`^P}Xd z+f2--rD&R;4pUV#tMDM1R06)lZ20Ig_d5k0 z0lu3cb7`F4C3URW_BDo|V=zi`>=kZ1UPA$*mU74I9_AR6Qyq)9urOP)OPOCp`o`3& z%HD@%QPSLl+^U`4M7Rya2EBIlzdNubc{@~7{^Ds|`+=lAimmkCh|K4VlK<>y2AiSz zt1qptfX88Usmnd&M=w>lpz||;R&!f40#06%fHDh{w6Aj8Wj#PClR=XG9vUpDPl!#g zQMLglN{J}sgZvIiOy)<60fHoiqU%{Tk>tGw)X3`tm3{*sW9)0N#^#+Rt?oOq!?EiG z9ydt~uM-A2DHMz8d>Bp}@H;|o#{lj|n&OHsDXoRrK&&inSgI+!Ni50X<;;o0BtA%Lfu zA$$f17bv$E*9+RlZk*Aif`cVUqR@-HX9*ziy1%m7wwLR%NiY~odQ`PM0{DQglLaBI za}%06QfR2I)LZtSbO&#nY?t0cqwtg1yC0mzzQnj6VE;&X1!?6|3r#c5J(6YLa&|g7 z^}F`xw45YKW8WDnOgDTRk#=>nt^7W!o>AT11QUJ>W9VEq2|f;)?n@= zr^aa*yPUMZ+mGuTic8&basF}kB=c#g;bmEXUqH~54Lc%bCMRCL@XxzA10TRO_}+OG zqrU>Fhe1vJE2}wRrucRBR*qZYyu!Q0@sVqm`x4Wd;GE35Je@6Npolg@dkeNjhL}&* zXibgr_hlkZl|L^3X4?qdBn zEYq{If}xy_WN2vRk_A@LEGpVdM8@1?4$HgiA8RI_9?Rn)227P(hRY$KzH}X&+#4;> z#2rB6RKLr?Hv3j>e%3*55J>M zO!AI}CA{VwRuccwsQD+0gyRZ|W?ZMr*%R=WeSwB`{{|kLr*?=L@NXadl;oOiS-%MY7IcL8$0U;mJnp?AP%CO;jtp&~=f4x0G z&l(Y-919NZmTA3(g(Xe{6zXh7iUt6rG4iU^B;@?DTmSt(ei??fuxJ`Qm{nt+bLo}~ z6U(}xx$Ecg61&c0>TA*46Js<6BU_jrQv*<)}-v z#;Tz-m^ zTIrT!PN4mFpd{_{%Y9tW5?x+#unTm(*BSeebyS>hqgf~7kUE)9p+`ZD{6Y3p9b^h& zV&wDkuMSlkJsSY{%<|6-8Gh(1ODb{BJ5}JUHGtY|Bs5s~Cq1y%B4YH=S*GAbMD}Bk z{OQ3H666!6sfST7v7Wb9({)duhy2x*1E(n*B<3pie14x;!x9WezA_$ilZ`7gVFK?6yG z^ky^1*vm8U&oppHCqh(AoS0Ke3ItFiI%b-S*8?cb#Wt&-5{-WtA#`1cg)I$Haq!!M zGdRmV6I~H>>=oJ94E3-kpi2w>F2$)m@vQ%hXU+%Uy`$;v_gmKl*Un2kwDvIxmB@$^ zXd=Wg`U_SN|5T8iiYxa?HK8BCDg#=3z0UZFCy|47f~Zr~+>!;WM+a@Wa!snyRSY@=#2y5FrOli;G?zjzGPTc09MWdx# zr9p?UoLXaQbD+T(iD#i`dUdJv2Mz%>eq}|#+WH_{u%y7_ALraYH!#PRP6X1I8np)P z9)hEP+XY1v@~MWR6EpHO#mvsHvh2Xg=fG>ZDdy0ad8z3c(ZSz(so@I|93CB->unx2 zlzz&uN-kI9d)ij3-uhmtNGi$>&XcKkE))p(9+4_bB8Tb=~=n+Lt z;(=Eid2_vqwYyenGq&b6Y0zn0usB&YqW^G9`dpW&kJ{NiFMpiE6& zWa+<*uP;gHZmnE*THKzSL-e?MM0&;C?7LmmTGZ_D_h&zPrY~f7apj9??;S~lnMc9* z__?&~-H$a7`(4^4{0@NSaDd87cc@1m9&$1aU*FMT5c_`X&CAB4q^wK_Fby$dh}^^j zRki&&mgDF|+_Fr}%pRUk?OTy!761nn`g`L^3$-nZEkVaM`7QN_;a~M;7Pruy2Eh9R z#FHOi_rTWL&w4?QrYD{gW~fIkMj>9xWud|EQJ}nHbqg-l@A(Dr<5fN@HF5-5~V(A50vpz4CgA{2&7nAjXG zLV@rhhG=IcTjZDePN~C;hhDa(RsW7IKIYNUQZ2ruy(BK~iVBiRa_Y*;@fN^!r_dXU zA;xD=Jt_u)^m?HjHI$kfBD-pUW+Q%ilzaFaJoeD_(!Klo8gV?GqwlTmW*Q7&hjks& zt~Fu>y4WTohYKf46|;7CUqg^u9F&WEK8BzYh`!rt(`2uS$3{SNlhSfIV_79g_JHiN zsx7bjzfq8!DkytrTyqC3W$GIg-Or~6kd*05U2my!9)v7aDE)#SwSkMWn#SPT72~TVbtte(Yq3#6f|@$%u+N5eMY%WUaW zUu2qpx1NhRvx23CV#;1@?(YN<7;z-=I-7-xs(TXwe$JhUAo=H@#w`+aDV?6Rgs;4p zBotOmOibBWeLg>bgx-DvoQ%K6F-Wf@|LDuQl~!jkXV6nF_K5-LvE6sZBD?H)8i!W7 zXBWp`o*{4A^)^C0B_hz0rjzKE-R)q|MQ;9}N3g6wfUJS@^*j9Y;}K0TqTPGWc&F!p zGViZ_AASsT9%H__Jul%>ia)0g9WCK|)~v7zZmVYTkgWm=;f4WOjpfA#_i(7)(%R+< zD1y*F@^ywV65#FI{Nl$pN(TUOi`A5#x+4l9pZY>a(mBjlAAWLpqWlyZ<~L%QM-UjP z(5ze=GmthiI#S>jqpyMFb|QKl_L+P;D8iY*ff}#T;YJeD+|fF&wL`RS<5*_^W8t+QzK!4mpQ- zFbRsMIB?#8#R^P%eipv+x;jaxmJhalFY|;cv0A$eu9&7mLC(T*XR(oudPs8v_tcU-=|3N)CfzmgJ>|5)!RLFVUTg#SJ{0)sOYU)W}| z;J|F8CrF-EJwDFoeG4$UCx=9pub(QsV-~5u(VfT(Tp}ID+Quh2Q|0}|pG@d#jsPJy zya%`Mimx=LC`(ZadL=YtVTu5ry<&ws1IbL1rLW&>nlPvk?Z9bS0ta=aPn_h#FIi9q-^DRP2y_F_W`pzGTc$hG7h z1n)(-KZC-ekQNAwSMJ}vM1!v`vWU-3zABqudH6vX>uE<#+QO% zu-;Q5y2bRloSuN?{WjjRTHEw~x)l24MV7a#{em;+-i-^67Z%x>cOscs#4rKu)QXN?d@cHTMBXgkM0O#ei1J^6L))R_BzFvdV@KYRV-X}iF1(}x0H87B*+_c;=b|8wW zFF8%%)oPsc7*BCgKZ6ahv9T$TkZB_9_5j*Qhi=&(TG57q_%*+ z{pqRt7QDlw@9pyR{MTgeq>;TOsNj{eXnhwQ?WlpI%2wmz54E!gA8;=#M9?`ni8Yz z7|4w49!2)VzYPvbo2a+4NqOFXbWcMOb*(bE{{B3wub?HzW_k<7eX&H1A&Q*A$j}(N zFKh3-0R1lxL(zy0zf@&8Je9ZqMHIaWe8C{(_?@p`cP;5U_(GHRMy{4N{;d84q!0~{ zH6RH)o1m9>(@(#nU<_g)xL%0;rFQo51_(J)19EiR%klRxUg7FK$Nh11j!19@3c)?G|Vx|vhQ*F-e}D|8E1#k7tNihp|eIfSs8DX1TB^Zm6m ztHU+SC=p=q3q~;1u7t@GQ*#s^@**sBxQiITMUcn2jVHG*mnIP7puxc5htPIvK!iW# zUv9!;hzD+sb;^^31b#WR`LNC~X#*4VC3{;WSu|Pt5R-oaEnc8tvX#7zQbdChU7yOy zU@iGZK{xqJVKjsBd`oGZL}{vXfXgQomi(S=#!5epHacbVZIP9f)8qv11YBJWC5ZUQ zB2=9(dymX~y949{P1UHbcxA1QAs-G@8n;fheA@(R_zs2X<&@Ksp=fB1CPeU6RQzN{ zQdnWQX8MlN)C-)HC`zEmS{r}2+ZQGBBx{fe79;+O*U0RfFtT zzMkQJPFZx#el4_+aOCIBrCTLeFePcteXlO`?3fP>p*LFDy~$1bFs7L&U})cV#NoBu z1fN)GLe_acNW24_dM3TF@ks!5bnG;h{h`~E;b}*o>!Y5g=9RSl~~(+_?sqGBNv!tJwz_XQjm+k+l4#JXO&?o<+2=8_~U@uGxRE^WA#Kt zcZ0jV^Fb*#x4M6BdoC8B(x*pkHwSkde)F9wM^bVtvGJ!>l4ieKmuK0_1)D(U7mYt_ zJ27a#rnIWsG7VrWa*kxlgnvL}*(j+98uQ``J#fz$=N zHIx0gn|sNrG4?L!8lm%9p=EpH3pc4ddKT zaAtf6eXufo9>|7gX6LGD-HQBsF}NLYyvlw|ckOc zGpa=lYLyZEb;!LJlcLf=R@F!BmYy= z#V1HsUc#UW*+5KP8*PhOMZH-Wg8P!#fyb&-Sd@N?$qvjx~gq&H2{LL*W;$`Su-W+Isu560NR5F=w2uV5|dBCz{ya1ca}v*qig|n z1=NWW1#hmu-NwEG6g+$XL(VdXGoH`5+1e=K=gupQzy|>SrfS5eXS6i6x(LDCSgVks+9`Q{a)48l!6gcQq+@K->O!L zfulKE!qL(=={vwfYQ>jqHH+4QbU;-(xVS0kR>&59I9YD5d?5B{y~>S7rx*{8U1_AY z8s`De66la#!K8%wMG^-NN|+W@N|htPVqj;lw3K^8HEi(@2dmyY!(E!)m4W&zh)GXM zPima;)I#hP*X8H?%cAzAK#c_VwqdIXH=Z+ZV$m{L~Jm^KORaYpI1zwlaa~CN!t&2ZBJM zK3y{-ubq?=N}}{3;CzLx4Tz+#dARc}Sjx(HZieXEPfFvt%L+kS&31rRB1}+gPI~ckYV4 z{eqOdy#>q2W~<4ashA9|T4C+S}j$VyQ6b=D{oii5?rBw%D8GF1B zdL9+=wr!3D(4*{&Of8v3=}q1lg7@HZn4JY!R9p77Ce`5dyPDvG!-#uXa#~#visH3C zDJ@Gp=R@ddueu@kk2Z3zedE=z2asTvUayKh_}eN<){U*8X?3Z6GZ8s6s($icws}nq zsQwU)3CY>aFWbgEkiflQT4;|j=r_Y-o=7cT*rnGXiPr)8cY_VpX@``!u9Ez2H_JLl zuo&H%qB5&~U;YNCB`3P)Tk(z0kU8i(z9W*YDb>d{YrOGh-Z)@O$q+P?9)NNSe7rFS!C{3Lpv zwT7JM|Kx?wY}@-S0t#5=j9vuW7C1_Bcb56v*sHnc$BpN<9Mse9=dQnoAN{Y}pKYhO z*6MoK&VWUv>t(OzToXB-(+^hT_X9{ypfx0NpEH;=2tWy80Gw>q%|`n$?=v|)f6=*V zm*sw_2xxwx92J~%Z6x>iAE@075z~Oo{oJonML+P8U+ObPE{;iuby3WD5K}JjxTzWH z(xbU4&Q8xWNXnq5jLgx=N%~f^_*y1Z>2|4Ub+j8SV#ha^OH+ASG&FAcEGM?K4}+bEe1e}gcr61Bpp9T*;8hw zo}>hN13Hk~OlNV`u$U8S^4W~&MGc_TJ`o;mizJyFQvMH;ErAUfYYT>dpxAJPiX;6`m=+oa9rf0%R8W{= z5jVnK(d*ziywTCEInqE}yPCw=0e>9H4M~BWaSYjPh)7fTR$pIu8gcm+%8m7B6wv@D z(8V$+3@FJY5Ui+kcYTg6&Z`+eI4t72nol|UA+0@@Etea6msATVg&5=P83v*a2VAQd zP9=*;M04yNBa+&@)Up=vD{K2Ucfzb`0Qdqexi+0P>$|^LCexs-_!ZN2!_`6v>1zT@ zVJ!iJ!_ZS!N#n;#^WaR+>JGif3KHJ4cL&I=ExhaXnglM~c;`N|lpl#SwU^94VxTP4 z1duLi*L-9TL-@*fN%9{#tM}(p7bP)9w|c5Q5iOr6r#L!!vmU~Z=IH1`B`qGNrXtKI zP4(aVLEU`Z1GIz_NwZLAIdIBo$L_YdqIs#5o=u6*dQ75ryOcYlD@pTrI(FJ_PO zJ8y*E8xjFz0}~oR>)FRDL_4xLt5O~*m3#t+S83|UCKKYKn0xyCKxLgu>Mfl88k1!k;1JC=W~W`J4SoZd9GvI-tX1#4uXyw|nlS zXg91#QQ;e>0^os|Ei{L*o3L(1;h0jXq}3mPMFHjc65+r4V3m70>equPwYH_};x^OJ z4kLa^`NC~;1K$`8tpW2Bs86{=^cZNg0164E($!X{Ks)ytsr1#BPkrL2sLM_13XwfC z=9FA@e`xNrY&V@SD>e8>a&!G=;79l(kcQ^|qwswSi`TwQMa{fov?lQinvc7$n@3+Y z-nFZEBf?lytHio4fHPd6xq4m zfT9DG8og>MwPIfniN`G0WKAhJQTp55U!RA1^FK)GeKq+S^X0mPG^CO|(cCXXDzg%x z-28h*cWHtM;QAo6WA0)4TAN&{E#MezbmO5Rx$}bgpz;@8tHP|6U7>Rrt@yDVY(YRP!>F z&+CKLnEsXgfdTlW9ij`sKoBJ9^ZVaQ0q-c$J#wyp?-Tg(_0N}GrpYhyGUk`M!hilI z9)*F8EfJ{Z8vPjv*YLG%RIeFOWPm1Il85Sp`4#u$`1EK}qNJdXW1}rzUV4k$!PcrZ zk~B}_m8#Wv?Eh>|m=kAwyDvt8=>qB};%m)61sxe1OU$CI*95M%ARXt* z9`c4(cNg`*36+JdOa05}cxe9mF9zsR2EeL}01#lLMTz9Nx?Plz)L8_{=KtIf3YK(V@u&In*>_N1m_QyS zEO@xJ^U$~SvUBmlv@5N0(3TD+XB6lxklLyvEFn0*jk(WSsSkuE9wTUf{mVQ zD;5U-j7z#^64xl8$!qivz6d2evE{!lNCp0;z|w4Q2>N<;sI;c7u8zGbC;?cfl5itZ z$fJh)-+IlaFc8%T{3POIQC_r{la>5YuM>LwkNWzHlIB9b#J#soO?0yei=FI5Hrwig zZluzX1Z{#8ClZRWdsUZS38Z@N}xiyS~(>EX(kqrPUYQ}xlU=r;C`NDMH|38C7 z81WFO)-=@=o8H?{kq_lz)bq`gV%}3|v`CUF(cS9do=eoGizrl0Byj5BMiZ7l9O~F; zBhVUuE&ywGvbM#@R#uwKKIcZ(al!&S)PE+^bPEiBaFo+(9B13fsXHEha7d?-}Y(ZCck zA0=6mtolIqZDt>Vv8-D=Q4_^{;wM*0g-?aXWUCrNhg+}<`?zA`Z)13jW%DeBPt2bC zbUs_7?_Xy5KX+8{+Y#`w4Fd=1dtG_Xqm0np>uef;yXYlmK9F-%R9IE@@$m4FCgB&a zyb#RE*w|QcdAS@B5mAdm-UTh~!0fMI^GdOV&g6!4^#~Yb#{vojwo5f=0^&u$`ejJG zFvsTfTC2(_2UXX#I+<=!{&x5+ps3Q7^z;?BHmV?_MA4+Cof44aKMTF}aPatyBSh_T z7?*&{sax^)CKJ{3N;OmXzss2+JVz&Y&C;hZ z(nAAMpw#ioz4ssh4n2O#XP1l9@sF4X1ZYuA5j=hPPW=NocV#lZUs*B-6jS?_fxSF` zqrc0RaAI|!K505qonK^*}dCh9kF86p7hfu5(g=%NJi z;1Mykfvg4^AccQ@fgys^&0-V&`R=|usvXmJm`DOpgez|~0i$7>i=@zAcH9U+`T)lY zLL7w#J-ROJEIY5lL?1X>ulN6~vyTa$vbbIoITHg7r9gu%6`&)Avj7QoBLEq8jrl({ zopoGO{oBVC1f-=#GrGG$8l<}$DW!XKc+)8jA}ym~2-2xE44AaijkF99VZ?Lp`}cbG z-}c8jXWu^8^|{_31OgGDeh8TVZc4^Wuiyin{;#mmp-y$2vpBtRh|2+)LG6Cs#cuB0L(KLd^o2z#SSIB35HA_t9|t-CCy42>2VQ73D56on;TFv#E}a zcLA%Bybp={g&8!ZSN)eB;?KCZxkY``Ex;xD5E6d@sIK1uQ-GM04Jh=( z@vKfK?lWf=Er&N&-)zEX`F?q3Rd;qu+80@>(7LU4n|0!Dh9}T8^PEtnj<76lz%{J! zz%naiOC(_o1>ki`RLRTb5+?qs59q)0vodoTdn5?`3=s!AWxc=cN{X+uM$iyHGct%5 z>F#5?^Msu5WJzA(gf+QtxF|gyu5lB@X&};q$s|H9-{)B&xM z_x~+*tVNt8Rju;8uBZm9=%O2{z;LE5hd2FjT%Z)xgi z}1;L9~?H@05Xz~v8 zB%a(nK~{yjE;M(-XZx!9iWnOyG}Jr)keB4YSdq|#z6Y#c?uSqSe`ZyD?Aekppb5{e zHmK~}|CvlFWGNf5ldckcC1IdzOkd74E@*8aSZ63YVewWer*u8)tuy5) zy*_=hoV>E@pKm<_CWR1E%i+>@(Y>Lj9X^g;r<89CA^q4RUB0Hi0>u>-PJML5ru-oaAEjWs{fo z@;skSO?UHJ|FyUDwfFnGcAcZtkiYd2S1%W9-8RFABo5zSG#4(ER$vK(vn_VFq!6cG zAFB_G`_c+VU*s6Ut9CJiizD1s?w@jDvn1aMGBEYs_imhN4u&l~_Mhx6de<~D7_?hM zHsOKKEsDIQ_h+uO+__{C{4-aceV);%lpLF*@3N^j<6pQkE4lZ1Mi1P6f&zF64 zH~B6ru?bIU!QnQl^D>)0Z_rz2%53Ct(q(qR(!tI7@Lxg)hk}-1Nm%pAUHB%vu*Us9 zm;fEFI>iLuujW(bc{nt_Hjkj4PalU}WXXolOxoD~z2~u7b;`ftW9Z-JUHle^PZIC~ zmIZG6^e?Sg5pbT1YVW7o2K);l!G!YAMx?^eNftT3Y&@Ry8nVI&YzO{hb@AiR1OK^n z(-)uS0#HIa^5grDt}y@o4eqZyW0}i+sZ=69`8U_7^*+(|v%V%EWd5(iI4fJBUxsDy zK{=p6*RUIP2Mp{48WmsjShQ+d1HZb1PNX(|QQUg%Xg#m!`i~WY&TK(q4ZK#1eb*P5 zyyr>b%WOh6y=&*pK>o9QE2ml){ zIf|5kvY3ivd491E5~OcbTEILQ(qL2bV8}avi>mm_POB!n60-h89gKtLD++3^>3+(s z^La)eBet(*!;6-WQ@0@RI&28bF+K=PELTseOBHBPu|YR8oET5&Q^KD{cTj_N%vH1L z+uL7}$OATd5)@K&@U!ex&Kzq+(K-z@hk=k9uN$XzE~P)Ws9zNJoU#>pmPQhzf{k@r z8a^M1L7C0GK{w@%X!qV;$(IKi)2RF$>XgH#4p(Hp!C`4)!Y%Re3Sq$SE&Jii13oPF zNf%Sk+e7#+H>e<4b=*x33)|A?2toLR`Emr~mC=|uj3aZ5SZ2G_fG=NOzi9Ly_zzk&~1}_K+$#o;g6EcxYolc zG^|KiyfUYHv(?c}u;K=GMdKeZ-`G&{=o-S_Ovsf!9`tY&xMm0wp)cB%a+t2k=K1uZ+^X(k^F4sm+xd!4=m%3isN1MI zBDW6wb|5JiAbo_LggBK8SMwNmRtAsG2075?Xbp;FIYyU0IpCBQw>jdsBx;_6a z>OD6W58Xpu4_&8h2R#immRj9NQ~Hu$-gqo(*`gp!=)gs!Uq=oqj2L$aZ3yH@?x;{q zRD)OMz=Y0>iFh#+X<8!d4UUkglq*#Z-*IG6>_{ta;`p`|b=QG~k~K3oNx*61Ph6^JEw9XcYhv-LARS)HmX8Cr@X0eM&+r(15uU@u1V$Pnqt|U&jInu_z${c|)zl6u zphG1dXx69$QS~$MA~dNO`s~H7kzM2;M#5WAU-e4|BoBggrxGN1$(FKP9%ej-HdXF} zF?&}n1T%_EkP=t1xOLp?4zJX_#6L`N9oWGP(>&5z{?J(hYmXD0-XBd0R=~VXl6^C( z1AkShukyku%WPR3?=Yct+FSE+bZ5LGn%Qxy?9}^COT;6LeLBu^bVB@<^=(!w;q^iL zr@PB-x7D<2F<9m4a4L9RW>`&UOaNI{=(oa=P!{z4A=w6~vb)4h34t>6me6drzIroW z#Gy^SUF^g44@Hg+TweA`T0$=he5JE)ppb^DmR*W=<;XNoySX60Na~xHI?=ijkG;zx zxk-=d{)M%o5+q*XE3(cIK3djrCanF^0BdkUpG$Q~%&Oy;#ckauS}z{M4B&9J!}?}2 zSRP=Zf7xAf?K|63isyL5SS2$F)q?dsNZu^8!F;y!tnl-SpCV8|L6eEL)cLc0z2S?< z8)89t8tPZtV83Q+9P^v@gNbaj_6=Vd&o!xQOhv8oSu0PV44aoR!FX4UuR%8vkW@F& z2VNA!JvA0IZN|d=^YKj^1urKKC?)2GIB5{A-zAJ|m4tgI-~3}a2mKej#@9s~mf`tE z8iLo6te!~@A9YP!BFN7Dc_-YfxEPW`K}Qqk?7Zw^&9rhqm57Xp<-P@F2^sAeI-?(k zM=A^n$yxRH>vEB`c*$XA31zt(iR#hKn?H?7T34@1t2Ae*M&%82D_F;qk}77A!7ifo zeEAYf&2g*eKlFB>kJcr!E$WL|4qU04oMiLwPVHTM;)Ti z%)Dj2K{?Q<``3`GhD*E9X2dO!INRNqC3Y+ra5}B22UnA2*zn=7&{f$WjrEh8T=Sj7 zM@z0$3w6o!BHy7L(bO;XL?L{d0kXRbO}@pLw3VxO4+Hm`tJwoLaj7@=@>boUCfqGv zPs6*=`XXxa)E8z%U9zEJ#kb}6E$jLSb%0uT|I)~+JaRZ?HeBuAk&(?Wnf<(m*Yz;6 zViD@YvhZ$8a*rV+>j&Cp`(IbPt^>T=_JxM>RE0yZbV?& zvbh}2gm=xMN9A72v87NF9|5fDQ1ueD(?v-Ikn9@G30$HjxxBYs2ixj><;T8IT>jp& zWPvq`ktLgXef?P`J_iT4G*;*HT)z%jLmYbPo$ua+_j>jAzwG>4RMiM@maqc6-o^ff z>~Qxslp+*(^t&RB1CYmi@1St511av#$Uw#r+1SdWU~@nx1XPmr01RUT0I?%TK1!SS zxc-RB2KdoxAl}fC!hOfD*(TPzd**wcJ=bd%fbiQ(Z2h9H>({3wblA4;b;c8o34obB zZ{`OC2WT@)*#-Z`UwCPdv1i1se!~JEgB+-i3ke3cl-7j-=9m@M^sw>KyWt;c?<@h* zX+PRn(s`Ov9zJPSPW+sqiJH7#2kFi}MqfTnJqaXHS1B>-DCmcXSPSpCE7QQz%n7b> zKCQG<<_!75{RHAkze1@%guc7Usl}7>r7+`&GKx}7&V*=WrH3{xhf)m%s?P|t9y5v{ z{JVf3E@_TQYF#|IB{@zgpT+xCa1ol3+ubjadbj>DoRiXEKFErv045)A)KniG64!E30`wSLT!7}sg{y36E;e1Mg z_;&(O_NOpKx?*NLM46vN|QSdHhJ0r~NR)-rp>L^MXobhM~8F*;fvv2j`-k?|# z(K8Y9cQY>Prb~kU3!yKj*c|q2>xcEnQxYI&68E2j#g-%z(1`zH{Dbl=@pFYtob$Wy zi?Ob$&;>z{Ug!CD0l~R2k|2?!6~O87+$wT?Fd<csM$`AR1;2`U=Vq`_zW)>9@Jot@`U^b@cAVP`)ar)BQj))VBr zBfY^n;%70c_Qy_lq(%>OR*LqkPAk=hgSq2qS;zD`VIEbxDVUP`V(QF`K=Ff1O9_az zbC!0ohDDdc#l7?&8HQ$kGn$yv99(mMqE_F3W2l9Dgbg7>dZE?gX;BXcgA z+s@Uyxr|ofqYd}ZowyrL^;;>$k}>u`g_U>sIL!^W#sQa`emT}I)2}F7Y}lLJm-#=a zI2*9kNoqWM6J>aj>pA(#rtE%>#ezp--pFvf+u4m@F3h=GVJcu)(!&I8N1AUBfaOmX zv<*AKPKwU!BANdNR@%e*iR;TE7lR{l1+C6u=n4#!C;yLR_5XX;ZTnxR5O>!uEHG3}AEY5H8 zA)R`R58Haf;uXwUXpzyr?5b(}RDskb6hv=dt#)R8eQrViYsz#59$+1v#y9=}6QO)F zh!GbuW?=7mevVB^YJ!ww1vvvO%bc-Ym27b>1N*Oj&p=UgM9)$?*P)y?6r(Yb6U%Zb z2{Cvy*V#H4$SRH0B1G)nX7J%Zp{h1kF-?u9B|1)c^blFVI&ccG5ff(q2NQi!T&M7< z550j2kJ2xTOUg)ZbXkxYg$qNR;JTis&Mn@FT5;tm2lxh>SXy?U?ovcJurbAra~(GeLN!z7SE^^kN==Jid-A0$OFcyEhuI7uBIZ6$~Rdk+$wic_aLS+-fq599<_ zFTajOi+%r32#qhsg}*4D(+70GbA6F6O4!1!Mtc<3Q*7+}Q$3E+j8PX4wej2W=sB^g zl}|wjGvz*GEV+rci&0;42|$aBe$6P%OmRZlPY++@2Ig{JEdsuGhZ9I(n27|P50RtC zUZf=B_VqS9HhlXIezE?@u0}w^8Pp)fl+Hul)XsDe`B{vxhy#BNN8afsBrU8hM>=dXK|l zaY>!Pd^?jrRR46ft#`%6S1&<{CC7%nC*k(|El?GxnP{>?JNNds?d>hAHIE!=%}(iP zO@B-z9K!C+u6-L@+brna*|0vH{lIPe7bKI0b7!ox>(?nQYhQpqZh3ABXkxr#!Taj_JYSy?pa`ZevBwB>eShv_{O!!w^}F2yo&Lig23{$xaeu^G+An5tuesb+ zAk)v5z+*ZiCFZXWPs4*PmxpvTj?`pn49G=z%7~*jQTIL$xDHIna%gJ`@jB6tx&R}w*DqpO|CGrub#u5vf=mVBp&Nt;6EcEh-y)& z{-h0O{=%2{_~Qp7H`_A!Q(!v2Q1%EL^U4c-2B|mwB?NvX(SE$8zvLf6Yr(^Ep20aK z4{gGjh>Y>r6Ilx?=o?6jVSQDW(w75$Oz&teUvpNIx3_%u%*#5h#um04#HL2%6Zaws zbu!tIpIt;$w}gS=x!KvRp2U}r%P(_(v^O=skGN`uJLcLXkg)l)(UxBvPC>ge>Aw46 zPI5D*ypB$jV@fmSSKxj<5Q$Gr&mhOGtQtS*rc4idUaE{fQ#FtFR4;&QRgaZWSxfRj z(^`912~+LDPzxl%6YfRPlZ?Dv%7)FRus~G;njo!lAphUxZE(8U%M{>|8iaWt{gypA zC3i~Er{@TzpBC+BgR;;Gy$NvUZT{AY3~@Bo405#Zur$Bn<<$xAXqrqQ+>9U0Ty4tJ z4BeLI0P>>`U;22?6MXF`_(-g(Q?+6H&M#*F4yrCzmJp}TaBGRLNb^*p_HafJxMW`RYyWLO5F)R$(Im4&y-!_B& zn(^@61Ilh)5=>on(6*xDc7e?Zvi*BrWARidaObX&A6iJ_^Sp^XE!awi4x0=n1S^`hrD<5!So*%KQ8L-s|(`| z@GnKhDsg|MpC4n!ANbM9+!v~oXjLZIcXqv_^41@|*~=o4^I(%#@F8u=VZ7eBsogM( zMXc0K^A@u;=t{*9ril;Vy=!w&lVp+cHl8Vd%#Kz+DwgWxFk46CiJcbZw{&LOTlf~z zHA7>N66s{*Y8PsMRLVtQ-r?l#l*w=ST~;81g<`3@D24^E%&a#rLjlCsLidb6;n$8_W*xU(%cnTGPUOB zK7zjEo9F1&){#$`<_?>Ec4{iOR2s}8f{!-!K?B_X5_bPGVlZE*--7qI;$Npx>p7(dDSjwz-r;Yk20twSz?N!^p9zBe1s32 zC0=3kz1I*1P9~Y;%nv)sN42gYeyJEYJ5Z*8bFz3+ci6fxnMu&oywDIYI4A z(nWoO#)Y~yK_mENmy=)$-17Nmx${BbZ*WH7rEF1PcE$=|JHIzttUglqm{atK^3`cJ z_fsTPoH6fFWwB{6adLzx-1|%0_3Ah|wtR5BUfgwDU8G*tE$1mcL>fI-_O*m&;UoSX z40r=huAfEBAONNY3k!=m*Y(SdV+xN7HweNA@}+>q{C9Wu(wU5Cq(RZ^mhNEZD*k<` zM)T}6ok1V8>`QT^$nIu;pl0q=fCy*@`$9uO(&m}f=S-iL9Abmr zE%Ju{Yn-y4Y6p`Vd{b_a)qu@Qef%=Ab6n%AX3quEMj-R1#7H!@>w|C`na7Q^2T6!h zr7Y0EohV|b3I3)eZny~8cKuV=vAGcBoFHPEC9`@+AyPS zJ>0@$rG1kw7I-avC4)K^3J_>r?}Whbm4A1J-ZW`yYmaxG^&UOrnGygx$>>l34ZuD8 z?@x#(xs*M15xK($CJ?KGQCUrV_T-ygzz$weNQfyaDr%}L5i82*h0McW`?kKmzIANN zG{pYu2g_KnKLpZ2oll-)>&BygE;Dvbn>$qMsTRILzS4Tvnkfjmiz6=XWj`O&Af8&w z*6pCL|CUJKBI*6o!dMD6US3JkA(YVd0P+kGXDnAz7tK6qd(cj#eF?qpKhxm$HTvJv zCI2a%(N*}|p`YUaiB7(@CO(FJD6XRcFsjoMD|qn~cN)hQw={7x)@|Q2mIN8L@%5?L z7b#ym20zN!=?Bu60ptC@0~~EH#h@Q(!u)OQ@=4=*Pp~c4bG*WrNSdb9kW+o?ey2(E zWOpB_pVg#gRmm#C`*O>smIY)vA|JPC*rk^agX|QH`*OJo7hFf-ab?qL`*J`)hRWU?@7)?}E;z(Lvbc(O> zC;wq-yLc(+d&vi-Im!8T2T@zSVN1}8*y}O6n1bWHh1ykfd(&jHJ{m9{+-I!ca0zDK zzRFv_?$S?$Xe`!8xcM-^kIr$jS$1M^gUMW~j=LKb;OJOG|3BQQBNW%WKPUT_STnTN z#Lv&pZV$3YS6OxWcesmruKBG?G2_v$02Ppje_jThstV@$Ei0?2tnw?eMu_2+NsnC@ zn}R+wT4jX(^~~tJ=F4~UZs@Aw`rP&ldZV$Z1G}gY>({NCMwV&h$?({Ff`r;d+$r;99Bf#%(Rgy8_i&z9EuW@m7!+Ie6kwqp?-=K_oXX z^X5i^G9i?gu%DxY7WL6VCERL@L^fNOgKZL?m}V4QW0Gw$Sob|qC(mhw^iL5W?{MP2W|y6n>P>Be9;pyqWvOITTz33%nDoY6}%X_oHEakV3e8 zhh8XGwgej)adx?}r9kFgpEWDbN*?xTh}#UcO-BC~n#Y`VHB18AGI`!P*PgRZ@YR&% zqV(wk!_6DlObIn@`m@-w>GA2LgLjZM)}w4%1Ct;~8Li%RwQ@Kw-@)hW389oE@>aJ} zc3kV5CK=%}YxecIVkzo*N#17IlKPcu*EbYfp>~(2?9Tq>Wix6|dRSmbENBufydJvk z)*kOjp`5>MY;y0ERc6KSTi?~72V@& zw^=nYH8Hw9Lb&SXAh{B^TdpH%HWSAz3Q_w=5;k^JV5$>G2^%*?v^$72sExs0 zmRsFD9u&kTe9MW(;I%}GkB$maG4r116tGt|HpQ-U(xHEK&GGvue}^Wg+}s2?i+m9K z($;1&JUr||ry|9X#QFSpeju=Vcq*oFP<1|+zM|N9>3{6yEF&Ys%ZD~-ga^Np@+{Cm zS9--Y^P!ri_YSFH#>dz1#9|qpEqqxiakIL4l< ze0_bJ%+emRrrC6gLLE;{`jvVz)ys_sMua9JRpxr43w^EU3L3L~XRc3IyPAx|L;rpz zDU7^gzLAqC!wUy+tdMM9*Bb5g=t z>k5(VW0oC&nNK9y)?w_1I5~~ZPtNsqM@2$}>0h7Y>GH|yU?rR*H}0d{<%&>kwigBs zdYGTfTS%}4aILdeFBtiOojf^~-Tyd?MaK(=eBY5h)abVDEaSl)eP+7QZ_Ri*Fir@1 z-g#&~s#?>gflQJx`v4yw2oWkOmEcP1sN*KfVYVsAFkD19a{3!0du&|oh-%Ta5u8Z` z{DwMpZ_bFy0hnu&H91vy_lA?#v{&V3868?njw`IW+qeD%@dXi)99ub)R%UK%enfY* z(zg^uRiS)6kCRkH?&~`~AK}q*Bpm#xylrsO{aVJT6Ej6;oQ^S>YCcd~S7xy@oC!rl z%Rd^0zq&t$y2@eOqj^=wB=stsS=xHVAhZPfUCFo6V7*JO>2e82so z&uI`#n&M*$`zI$x-jU#0~8kO!Q8J^ja(dl+m)*nZbzniF6j4T} z$2Qtj=^~!f4o8ufi24U5_(lveKFVBy7zj8kJ`?kuGuHpE*bu);WYBz|3+dn1!5vh% zl4PJ8jBDPwm7Ghb69^~K?#0G+3ibj|&D%a%;bXsa3QkjjVvQW!t5HWt`b5m+d-jjV z34iatvMJ^#VmqBYUy@s7z&hUk=*F}npNjRq*0AC^VNe+zXBPe+BL5k)?a3>N953gO z-ULB|(%3=~BqlH-VM9n&dIi`PFGpjhDuex73$~bJVkoQIL*NU#{vlEPvI>R+Y8ufB z1oo!f%GYB`FPme!$AD}%s z9Q|YdJT@Oe4}O&s-eElU<^jK2I&x%4b`;AQ8r=3Jqjip$@KfpF(thIQeK6+Y=WHX$ zNl1Lu9(Zv^a=EzSb_E0eaY3w;f+WHuIA>I-UnywU^i+%PFmb0I@7%U`4R9)h*Vlyu z9G05h2t<+e>0d(GJ6-KUNtSwrzT9Gth6(PyNosi2`$Tb0^CwrTJevwflvCvodZ{KY zUCro`o$4pNhnld42!j#*N?ok#HbMx^73UeoX#)fdsUd*i#uf%A53E-s?;D2B1E3ByqR-VFe$=FMi)`#H+4!ou+*Xuzdl0S>e z9o4iC-bm6U-^~ivDw1MXQvC>)-mw0L)V$fSmXn%)eJv~NX7X(@^}@@_+3N*t*Y;=W zykMo5^p!fpiEwv8nO$is|64%$_h9ZABugs3M zukTDc`u+q7R_W#V)}+4lTl45U4q5nfup_sr=Tk&`aLUaQRv7C$!GFGi3p`WXYuf7_ z)exISoPoDTSP@nSe2RAqM^8~kzqf*rmBq1Iv#%}^nm1_3YPqB}vQ(}-m_l#Gc5BIw zAt$=eW3z>6DJi`nq*uq&Why4c9qPK3R)9Y4%KY}HW%pa=-6}0syeG$tYW&m`0hONZV9&}@;QWmAGuQf8uq(R z4-0idd_{m0o7o9JD}=RTF0ye`X_I|v4kuXHeh9cXmUpLgBRl!9(KFz==6H;LoM$}a a^Z@45&k^4A63~1CeAHfPE5Q_ANB$of^iJ9U literal 0 HcmV?d00001 diff --git a/src/webviews/apps/plus/graph/GraphWrapper.tsx b/src/webviews/apps/plus/graph/GraphWrapper.tsx index 43e7260ab3054..1ee78e65c799f 100644 --- a/src/webviews/apps/plus/graph/GraphWrapper.tsx +++ b/src/webviews/apps/plus/graph/GraphWrapper.tsx @@ -1547,6 +1547,7 @@ export function GraphWrapper({ featureWithArticleIfNeeded="the Commit Graph" source={{ source: 'graph', detail: 'gate' }} state={subscription?.state} + webroot={state.webroot} visible={!allowed} >

diff --git a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts index cfb1b3dca556e..1aeb0f1210a02 100644 --- a/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts +++ b/src/webviews/apps/plus/shared/components/feature-gate-plus-state.ts @@ -1,3 +1,4 @@ +import type { TemplateResult } from 'lit'; import { css, html, LitElement, nothing } from 'lit'; import { customElement, property, query } from 'lit/decorators.js'; import { urls } from '../../../../../constants'; @@ -90,6 +91,9 @@ export class GlFeatureGatePlusState extends LitElement { @property({ attribute: false, type: Number }) state?: SubscriptionState; + @property({ type: String }) + webroot?: string; + protected override firstUpdated() { if (this.appearance === 'alert') { queueMicrotask(() => this.button.focus()); @@ -111,8 +115,6 @@ export class GlFeatureGatePlusState extends LitElement { consumedDaysCount = this.featureInPreviewTrial?.[feature]?.consumedDays?.length ?? 0; } - const feature = this.source?.source || ''; - switch (this.state) { case SubscriptionState.VerificationRequired: return html` @@ -142,21 +144,7 @@ export class GlFeatureGatePlusState extends LitElement { proPreviewLengthInDays - consumedDaysCount > 0 ) { return html` - Continue -

- Continuing gives you ${pluralize('day', proPreviewLengthInDays - consumedDaysCount)} to - preview ${this.featureWithArticleIfNeeded ? `${this.featureWithArticleIfNeeded} on` : ''} - privately-hosted repositories.
- ${appearance !== 'alert' ? html`
` : ''} For full access to all GitLens Pro features, - start your free ${proTrialLengthInDays}-day Pro trial - - no credit card required. Or - sign in. -

+ ${this.getFeaturePreviewModalFor(feature, proPreviewLengthInDays - consumedDaysCount)} `; } @@ -206,6 +194,80 @@ export class GlFeatureGatePlusState extends LitElement { private renderPromo(promo: Promo | undefined) { return html``; } + + private getFeaturePreviewModalFor(feature: Sources, daysLeft: number) { + const appearance = (this.appearance ?? 'alert') === 'alert' ? 'alert' : nothing; + let partial: TemplateResult<1> | undefined; + switch (feature) { + case 'graph': + switch (daysLeft) { + case 2: + partial = html`

Try Commit Search

+

+ Search for commits in your repo by author, commit message, SHA, file, change, or type. + Turn on the commit filter to show only commits that match your query. +

+

+ Graph Commit Search +

`; + break; + case 1: + partial = html` +

Try the Graph Minimap

+

+ Visualize the amount of changes to a repository over time, and inspect specific points + in the history to locate branches, stashes, tags and pull requests. +

+

+ Graph Minimap +

+ `; + break; + } + return html` + ${partial} + Continue +

+ Continuing gives you ${pluralize('day', daysLeft)} to preview + ${this.featureWithArticleIfNeeded ? `${this.featureWithArticleIfNeeded} on` : ''} + privately-hosted repositories.
+ ${appearance !== 'alert' ? html`
` : ''} For full access to all GitLens Pro features, + start your free ${proTrialLengthInDays}-day Pro trial + - no credit card required. Or + sign in. +

+ `; + default: + return html` + Continue +

+ Continuing gives you ${pluralize('day', daysLeft)} to preview + ${this.featureWithArticleIfNeeded ? `${this.featureWithArticleIfNeeded} on` : ''} + privately-hosted repositories.
+ ${appearance !== 'alert' ? html`
` : ''} For full access to all GitLens Pro features, + start your free ${proTrialLengthInDays}-day Pro trial + - no credit card required. Or + sign in. +

+ `; + } + } } function generateCommandLink(command: Commands, source: Source | undefined) { diff --git a/src/webviews/apps/shared/components/feature-gate.ts b/src/webviews/apps/shared/components/feature-gate.ts index 99d178b7893ea..9f0f87e0e912a 100644 --- a/src/webviews/apps/shared/components/feature-gate.ts +++ b/src/webviews/apps/shared/components/feature-gate.ts @@ -113,6 +113,9 @@ export class GlFeatureGate extends LitElement { @property({ type: Boolean }) visible?: boolean; + @property({ type: String }) + webroot?: string; + override render() { if (!this.visible || (this.state != null && isSubscriptionStatePaidOrTrial(this.state))) { this.hidden = true; @@ -125,17 +128,26 @@ export class GlFeatureGate extends LitElement { : 'welcome'; this.hidden = false; + + const featureInTrial = this.source?.source; + const featureInTrialInfo = featureInTrial ? this.featureInPreviewTrial?.[featureInTrial] : undefined; + const shouldHideFeature = + featureInTrial === 'graph' && + featureInTrialInfo && + featureInTrialInfo.consumedDays.length > 0 && + featureInTrialInfo.consumedDays.length < 3; return html`
- +
`;