From 52172790707c1c33c4fd047fe986e4fd89a20be9 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 2 Jul 2024 15:10:44 -0500 Subject: [PATCH 01/48] feat: Analytics module --- packages/analytics/README.md | 65 +++++++++ packages/analytics/app.config.ts | 21 +++ packages/analytics/build.config.ts | 33 +++++ packages/analytics/entrypoints/popup.html | 12 ++ .../analytics/modules/analytics/client.ts | 27 ++++ packages/analytics/modules/analytics/index.ts | 19 +++ .../analytics/providers/google-analytics.ts | 13 ++ .../modules/analytics/providers/umami.ts | 5 + packages/analytics/modules/analytics/types.ts | 50 +++++++ packages/analytics/package.json | 44 +++++++ packages/analytics/public/.keep | 0 packages/analytics/tsconfig.json | 6 + packages/analytics/wxt.config.ts | 12 ++ pnpm-lock.yaml | 124 ++++++++++++++++++ 14 files changed, 431 insertions(+) create mode 100644 packages/analytics/README.md create mode 100644 packages/analytics/app.config.ts create mode 100644 packages/analytics/build.config.ts create mode 100644 packages/analytics/entrypoints/popup.html create mode 100644 packages/analytics/modules/analytics/client.ts create mode 100644 packages/analytics/modules/analytics/index.ts create mode 100644 packages/analytics/modules/analytics/providers/google-analytics.ts create mode 100644 packages/analytics/modules/analytics/providers/umami.ts create mode 100644 packages/analytics/modules/analytics/types.ts create mode 100644 packages/analytics/package.json create mode 100644 packages/analytics/public/.keep create mode 100644 packages/analytics/tsconfig.json create mode 100644 packages/analytics/wxt.config.ts diff --git a/packages/analytics/README.md b/packages/analytics/README.md new file mode 100644 index 000000000..06f041d7a --- /dev/null +++ b/packages/analytics/README.md @@ -0,0 +1,65 @@ + + +# My Module + +My new WXT module for doing amazing things. + +## Features + + + +- ⛰  Foo +- 🚠  Bar +- 🌲  Baz + +## Installation + +Install the module to your WXT extension with one command: + +```bash +pnpm i my-module +``` + +Then add the module to your `wxt.config.ts` file: + +```ts +export default defineConfig({ + modules: ['my-module'], +}); +``` + +That's it! You can now use My Module in your WXT extension ✨ + +## Contribution + +
+ Local development + +```bash +# Install dependencies +pnpm install + +# Generate type stubs +pnpm wxt prepare + +# Develop test extension +pnpm dev + +# Build the test extension +pnpm dev:build + +# Run prettier, publint, and type checks +pnpm check +``` + +
diff --git a/packages/analytics/app.config.ts b/packages/analytics/app.config.ts new file mode 100644 index 000000000..99c54acb4 --- /dev/null +++ b/packages/analytics/app.config.ts @@ -0,0 +1,21 @@ +import { googleAnalytics } from './modules/analytics/providers/google-analytics'; +import { AnalyticsConfig } from './modules/analytics/types'; + +interface AppConfig { + analytics: AnalyticsConfig; +} +function defineAppConfig(config: AppConfig): AppConfig { + return config; +} + +export default defineAppConfig({ + analytics: { + providers: [ + googleAnalytics({ + apiSecret: '...', + measurementId: '...', + }), + ], + debug: true, + }, +}); diff --git a/packages/analytics/build.config.ts b/packages/analytics/build.config.ts new file mode 100644 index 000000000..5f3dbc679 --- /dev/null +++ b/packages/analytics/build.config.ts @@ -0,0 +1,33 @@ +import { defineBuildConfig } from 'unbuild'; +import * as vite from 'vite'; +import { resolve } from 'node:path'; + +// Build module and plugins +export default defineBuildConfig({ + rootDir: 'modules/my-module', + outDir: resolve(__dirname, 'dist'), + entries: ['index.ts', 'plugin.ts'], + replace: { + 'process.env.NPM': 'true', + }, + declaration: true, + hooks: { + 'build:done': prebuildEntrypoints, + }, +}); + +// Prebuild entrypoints +async function prebuildEntrypoints() { + await vite.build({ + root: 'modules/my-module', + build: { + emptyOutDir: false, + rollupOptions: { + input: 'modules/my-module/example.html', + output: { + dir: 'dist/prebuilt', + }, + }, + }, + }); +} diff --git a/packages/analytics/entrypoints/popup.html b/packages/analytics/entrypoints/popup.html new file mode 100644 index 000000000..eb37be630 --- /dev/null +++ b/packages/analytics/entrypoints/popup.html @@ -0,0 +1,12 @@ + + + + + + Popup + + + + + + diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts new file mode 100644 index 000000000..6d4726a7f --- /dev/null +++ b/packages/analytics/modules/analytics/client.ts @@ -0,0 +1,27 @@ +import { defineWxtPlugin } from 'wxt/sandbox'; +import { Analytics } from './types'; + +export let analytics: Analytics; + +export default defineWxtPlugin(() => { + const isBackground = globalThis.window == null; // TODO: Support MV2 + analytics = isBackground + ? createBackgroundAnalytics() + : createAnalyticsForwarder(); +}); + +function createBackgroundAnalytics(): Analytics { + return { + identify: () => {}, + page: () => {}, + track: () => {}, + }; +} + +function createAnalyticsForwarder(): Analytics { + return { + identify: () => {}, + page: () => {}, + track: () => {}, + }; +} diff --git a/packages/analytics/modules/analytics/index.ts b/packages/analytics/modules/analytics/index.ts new file mode 100644 index 000000000..9e779c04d --- /dev/null +++ b/packages/analytics/modules/analytics/index.ts @@ -0,0 +1,19 @@ +import 'wxt'; +import { addWxtPlugin, defineWxtModule } from 'wxt/modules'; +import { resolve } from 'node:path'; + +const pluginId = process.env.NPM + ? 'analytics/client' + : resolve(__dirname, 'client.ts'); + +export default defineWxtModule({ + name: 'analytics', + imports: [{ name: 'analytics', from: pluginId }], + setup(wxt, options) { + // Add a plugin + addWxtPlugin( + wxt, + resolve(__dirname, process.env.NPM ? 'plugin.mjs' : 'plugin.ts'), + ); + }, +}); diff --git a/packages/analytics/modules/analytics/providers/google-analytics.ts b/packages/analytics/modules/analytics/providers/google-analytics.ts new file mode 100644 index 000000000..faeb567f7 --- /dev/null +++ b/packages/analytics/modules/analytics/providers/google-analytics.ts @@ -0,0 +1,13 @@ +import type { AnalyticsProvider } from '../types'; + +export interface GoogleAnalyticsProviderOptions {} + +export const googleAnalytics = + (options: GoogleAnalyticsProviderOptions): AnalyticsProvider => + (analytics, config) => { + return { + identify: async () => {}, + page: async () => {}, + track: async () => {}, + }; + }; diff --git a/packages/analytics/modules/analytics/providers/umami.ts b/packages/analytics/modules/analytics/providers/umami.ts new file mode 100644 index 000000000..e04bc41eb --- /dev/null +++ b/packages/analytics/modules/analytics/providers/umami.ts @@ -0,0 +1,5 @@ +export interface UmamiProviderOptions {} + +export const umami = (options: UmamiProviderOptions) => (analytics, config) => { + throw Error('TODO'); +}; diff --git a/packages/analytics/modules/analytics/types.ts b/packages/analytics/modules/analytics/types.ts new file mode 100644 index 000000000..7387912a0 --- /dev/null +++ b/packages/analytics/modules/analytics/types.ts @@ -0,0 +1,50 @@ +export interface Analytics { + /** Report a page change */ + page: (url: string | URL) => void; + /** Report a custom event */ + track: (eventName: string, eventProperties: string) => void; + /** Save information about the user */ + identify: (userId: string, userProperties?: Record) => void; +} + +export interface AnalyticsConfig { + /** Array of providers to send analytics to. */ + providers: AnalyticsProvider[]; + /** Enable debug logs and other provider-specific debugging features. */ + debug?: boolean; + /** Extension version, defaults to `browser.runtime.getManifest().version`. */ + version?: string; +} + +export type AnalyticsProvider = ( + analytics: Analytics, + config: AnalyticsConfig, +) => { + /** Upload a page view event */ + page: (event: AnalyticsPageViewEvent) => Promise; + /** Upload a custom event */ + track: (event: AnalyticsTrackEvent) => Promise; + /** Upload or save information about the user */ + identify: (event: AnalyticsIdentifyEvent) => Promise; +}; + +export interface BaseAnalyticsEvent { + /** Identifier of the session the event was fired from */ + sessionId: string; + /** `Date.now()` of when the event was reported */ + time: number; +} + +export interface AnalyticsPageViewEvent extends BaseAnalyticsEvent { + url: string; + sessionId: string; + title: string; + location: string; +} + +export interface AnalyticsTrackEvent extends BaseAnalyticsEvent { + eventName: string; + eventProperties: Record; +} + +export interface AnalyticsIdentifyEvent extends BaseAnalyticsEvent {} diff --git a/packages/analytics/package.json b/packages/analytics/package.json new file mode 100644 index 000000000..c08651030 --- /dev/null +++ b/packages/analytics/package.json @@ -0,0 +1,44 @@ +{ + "name": "my-module", + "version": "1.0.0", + "description": "My new WXT module", + "repository": "your-org/my-module", + "license": "MIT", + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "./plugin": { + "types": "./dist/plugin.d.mts", + "default": "./dist/plugin.mjs" + } + }, + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "dev": "wxt", + "dev:build": "wxt build", + "check": "check", + "build": "unbuild", + "prepack": "unbuild", + "postinstall": "wxt prepare" + }, + "peerDependencies": { + "wxt": ">=0.18.10" + }, + "devDependencies": { + "@aklinker1/check": "^1.3.1", + "@types/chrome": "^0.0.268", + "prettier": "^3.3.2", + "publint": "^0.2.8", + "typescript": "^5.5.2", + "unbuild": "^2.0.0", + "vite": "^5.3.1", + "wxt": "^0.18.10" + } +} diff --git a/packages/analytics/public/.keep b/packages/analytics/public/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/packages/analytics/tsconfig.json b/packages/analytics/tsconfig.json new file mode 100644 index 000000000..47d6ba416 --- /dev/null +++ b/packages/analytics/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": ["../../tsconfig.base.json", "./.wxt/tsconfig.json"], + "compilerOptions": { + "types": ["chrome"] + } +} diff --git a/packages/analytics/wxt.config.ts b/packages/analytics/wxt.config.ts new file mode 100644 index 000000000..0ebb6402c --- /dev/null +++ b/packages/analytics/wxt.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from 'wxt'; + +export default defineConfig({ + vite: () => ({ + define: { + 'process.env.NPM': 'false', + }, + }), + myModule: { + example: 'options', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 602ac57c6..673250ef9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,6 +84,33 @@ importers: specifier: ^2.5.0 version: 2.5.0 + packages/analytics: + devDependencies: + '@aklinker1/check': + specifier: ^1.3.1 + version: 1.4.5(typescript@5.5.4) + '@types/chrome': + specifier: ^0.0.268 + version: 0.0.268 + prettier: + specifier: ^3.3.2 + version: 3.3.3 + publint: + specifier: ^0.2.8 + version: 0.2.9 + typescript: + specifier: ^5.5.2 + version: 5.5.4 + unbuild: + specifier: ^2.0.0 + version: 2.0.0(sass@1.77.8)(typescript@5.5.4) + vite: + specifier: ^5.3.1 + version: 5.3.5(@types/node@20.14.12)(sass@1.77.8) + wxt: + specifier: ^0.18.10 + version: 0.18.15(@types/node@20.14.12)(rollup@4.19.0)(sass@1.77.8) + packages/auto-icons: dependencies: defu: @@ -1913,6 +1940,9 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + async-mutex@0.4.1: + resolution: {integrity: sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==} + async-mutex@0.5.0: resolution: {integrity: sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==} @@ -3553,6 +3583,10 @@ packages: resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + ora@7.0.1: + resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==} + engines: {node: '>=16'} + ora@8.1.0: resolution: {integrity: sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==} engines: {node: '>=18'} @@ -4279,6 +4313,10 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string-width@6.1.0: + resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} + engines: {node: '>=16'} + string-width@7.2.0: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} @@ -4742,6 +4780,9 @@ packages: resolution: {integrity: sha512-5D11VcjdGkA1/xax5UWL0YeAbDySKHzWFe6EpsoPNUMw5Uk9tKk9p6GUOfcaI5N7sINKfBMZYNsTBiu5dzJB9A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} + webextension-polyfill@0.10.0: + resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} + webextension-polyfill@0.12.0: resolution: {integrity: sha512-97TBmpoWJEE+3nFBQ4VocyCdLKfw54rFaJ6EVQYLBCXqCIpLSZkwGgASpv4oPt9gdKCJ80RJlcmNzNn008Ag6Q==} @@ -4825,6 +4866,10 @@ packages: utf-8-validate: optional: true + wxt@0.18.15: + resolution: {integrity: sha512-rzFLinUyugBsoC+mJZFMIQILrA4OUk/XG0mAW30zF3pqegIwawrEx5JXFXg/D1XW6//uew/FLTm12t3mcpbw+Q==} + hasBin: true + xdg-basedir@5.1.0: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} @@ -6173,6 +6218,10 @@ snapshots: assertion-error@2.0.1: {} + async-mutex@0.4.1: + dependencies: + tslib: 2.6.0 + async-mutex@0.5.0: dependencies: tslib: 2.6.0 @@ -8008,6 +8057,18 @@ snapshots: strip-ansi: 7.1.0 wcwidth: 1.0.1 + ora@7.0.1: + dependencies: + chalk: 5.3.0 + cli-cursor: 4.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 1.3.0 + log-symbols: 5.1.0 + stdin-discarder: 0.1.0 + string-width: 6.1.0 + strip-ansi: 7.1.0 + ora@8.1.0: dependencies: chalk: 5.3.0 @@ -8770,6 +8831,12 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string-width@6.1.0: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 10.3.0 + strip-ansi: 7.1.0 + string-width@7.2.0: dependencies: emoji-regex: 10.3.0 @@ -9354,6 +9421,8 @@ snapshots: - supports-color - utf-8-validate + webextension-polyfill@0.10.0: {} + webextension-polyfill@0.12.0: {} webidl-conversions@7.0.0: {} @@ -9436,6 +9505,61 @@ snapshots: ws@8.18.0: {} + wxt@0.18.15(@types/node@20.14.12)(rollup@4.19.0)(sass@1.77.8): + dependencies: + '@aklinker1/rollup-plugin-visualizer': 5.12.0(rollup@4.19.0) + '@types/webextension-polyfill': 0.10.7 + '@webext-core/fake-browser': 1.3.1 + '@webext-core/isolated-element': 1.1.2 + '@webext-core/match-patterns': 1.0.3 + async-mutex: 0.4.1 + c12: 1.11.1(magicast@0.3.4) + cac: 6.7.14 + chokidar: 3.6.0 + ci-info: 4.0.0 + defu: 6.1.4 + dequal: 2.0.3 + esbuild: 0.19.12 + fast-glob: 3.3.2 + filesize: 10.1.4 + fs-extra: 11.2.0 + get-port: 7.1.0 + giget: 1.2.3 + hookable: 5.5.3 + is-wsl: 3.1.0 + jiti: 1.21.6 + json5: 2.2.3 + jszip: 3.10.1 + linkedom: 0.18.4 + magicast: 0.3.4 + minimatch: 9.0.5 + natural-compare: 1.4.0 + normalize-path: 3.0.0 + nypm: 0.3.9 + ohash: 1.1.3 + open: 10.1.0 + ora: 7.0.1 + picocolors: 1.0.1 + prompts: 2.4.2 + publish-browser-extension: 2.1.3 + unimport: 3.11.1(rollup@4.19.0) + vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8) + vite-node: 1.6.0(@types/node@20.14.12)(sass@1.77.8) + web-ext-run: 0.2.1 + webextension-polyfill: 0.10.0 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - less + - lightningcss + - rollup + - sass + - stylus + - sugarss + - supports-color + - terser + - utf-8-validate + xdg-basedir@5.1.0: {} xml2js@0.5.0: From f99c1aa7b54a305933568632de1e6276e668315b Mon Sep 17 00:00:00 2001 From: Aaron Date: Wed, 3 Jul 2024 01:25:24 -0500 Subject: [PATCH 02/48] Implement client and google analytics --- packages/analytics/README.md | 94 +++++----- packages/analytics/app.config.ts | 13 +- packages/analytics/build.config.ts | 24 +-- .../analytics/modules/analytics/client.ts | 165 ++++++++++++++++-- packages/analytics/modules/analytics/index.ts | 14 +- .../analytics/providers/google-analytics.ts | 75 +++++++- .../modules/analytics/providers/umami.ts | 21 ++- packages/analytics/modules/analytics/types.ts | 33 ++-- packages/analytics/package.json | 9 +- packages/analytics/wxt.config.ts | 3 - pnpm-lock.yaml | 3 - 11 files changed, 336 insertions(+), 118 deletions(-) diff --git a/packages/analytics/README.md b/packages/analytics/README.md index 06f041d7a..68a45e301 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -1,65 +1,79 @@ - +Add analytics, like google analytics, to your WXT extension. -# My Module +## Supported Analytics Services -My new WXT module for doing amazing things. - -## Features - - - -- ⛰  Foo -- 🚠  Bar -- 🌲  Baz +- Google Analytics (Measurement Protocol) +- Umami ## Installation -Install the module to your WXT extension with one command: +Install the NPM package: ```bash -pnpm i my-module +pnpm i @wxt-dev/analytics ``` Then add the module to your `wxt.config.ts` file: ```ts export default defineConfig({ - modules: ['my-module'], + modules: ['@wxt-dev/analytics'], }); ``` -That's it! You can now use My Module in your WXT extension ✨ +Create an `app.config.ts` file and fill out the required config: -## Contribution +```ts +// /app.config.ts +export default defineAppConfig({ + analytics: { + debug: true, + providers: [ + // ... + ], + }, +}); +``` -
- Local development +## Providers -```bash -# Install dependencies -pnpm install +### Google Analytics (Measurement Protocol) -# Generate type stubs -pnpm wxt prepare +Follow [Google's documentation](https://developer.chrome.com/docs/extensions/how-to/integrate/google-analytics-4#setup-credentials) to obtain your credentials: -# Develop test extension -pnpm dev +```ts +import { googleAnalytics4 } from '@wxt-dev/analytics/providers/google-analytics-4'; + +export default defineAppConfig({ + analytics: { + providers: [ + googleAnalytics4({ + apiSecret: '...', + measurementId: '...', + }), + ], + }, +}); +``` -# Build the test extension -pnpm dev:build +> [Why use the Measurement Protocol instead of GTag?](https://developer.chrome.com/docs/extensions/how-to/integrate/google-analytics-4#measurement-protocol) -# Run prettier, publint, and type checks -pnpm check -``` +### Umami -
+```ts +import { umami } from '@wxt-dev/analytics/providers/umami'; + +export default defineAppConfig({ + analytics: { + providers: [ + umami({ + baseUrl: 'https://your-domain.com', + websiteId: '...', + hostname: '...', + }), + ], + }, +}); +``` diff --git a/packages/analytics/app.config.ts b/packages/analytics/app.config.ts index 99c54acb4..777399a7c 100644 --- a/packages/analytics/app.config.ts +++ b/packages/analytics/app.config.ts @@ -1,12 +1,5 @@ import { googleAnalytics } from './modules/analytics/providers/google-analytics'; -import { AnalyticsConfig } from './modules/analytics/types'; - -interface AppConfig { - analytics: AnalyticsConfig; -} -function defineAppConfig(config: AppConfig): AppConfig { - return config; -} +import { umami } from './modules/analytics/providers/umami'; export default defineAppConfig({ analytics: { @@ -15,6 +8,10 @@ export default defineAppConfig({ apiSecret: '...', measurementId: '...', }), + umami({ + hostname: '...', + website: '...', + }), ], debug: true, }, diff --git a/packages/analytics/build.config.ts b/packages/analytics/build.config.ts index 5f3dbc679..a515d0f62 100644 --- a/packages/analytics/build.config.ts +++ b/packages/analytics/build.config.ts @@ -1,33 +1,13 @@ import { defineBuildConfig } from 'unbuild'; -import * as vite from 'vite'; import { resolve } from 'node:path'; // Build module and plugins export default defineBuildConfig({ - rootDir: 'modules/my-module', + rootDir: 'modules/analytics', outDir: resolve(__dirname, 'dist'), - entries: ['index.ts', 'plugin.ts'], + entries: ['index.ts', 'client.ts'], replace: { 'process.env.NPM': 'true', }, declaration: true, - hooks: { - 'build:done': prebuildEntrypoints, - }, }); - -// Prebuild entrypoints -async function prebuildEntrypoints() { - await vite.build({ - root: 'modules/my-module', - build: { - emptyOutDir: false, - rollupOptions: { - input: 'modules/my-module/example.html', - output: { - dir: 'dist/prebuilt', - }, - }, - }, - }); -} diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index 6d4726a7f..e6ce5bf84 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -1,7 +1,14 @@ import { defineWxtPlugin } from 'wxt/sandbox'; -import { Analytics } from './types'; +import { + Analytics, + AnalyticsConfig, + AnalyticsPageViewEvent, + AnalyticsTrackEvent, + BaseAnalyticsEvent, +} from './types'; export let analytics: Analytics; +const ANALYTICS_PORT = 'wxt-analytics'; export default defineWxtPlugin(() => { const isBackground = globalThis.window == null; // TODO: Support MV2 @@ -10,18 +17,152 @@ export default defineWxtPlugin(() => { : createAnalyticsForwarder(); }); -function createBackgroundAnalytics(): Analytics { - return { - identify: () => {}, - page: () => {}, - track: () => {}, +function createAnalyticsForwarder(): Analytics { + const port = browser.runtime.connect({ name: ANALYTICS_PORT }); + const sessionId = Date.now(); + const getMetadata = (): ForwardMetadata => ({ + sessionId, + timestamp: Date.now(), + }); + + const methodForwarder = + (fn: string) => + (...args: any[]) => + port.postMessage({ fn, args: [...args, getMetadata()] }); + + const analytics: Analytics = { + identify: methodForwarder('identify'), + page: methodForwarder('page'), + track: methodForwarder('track'), + autoTrack: (root) => { + const onClick = (event: Event) => { + const element = event.target as any; + if (!element) return; + + void analytics.track('click', { + tagName: element.tagName, + id: element.id, + className: element.className, + textContent: element.textContent?.substring(0, 50), // Limit text content length + href: element.href, + }); + }; + root.addEventListener('click', onClick, { capture: true, passive: true }); + return () => { + root.removeEventListener('click', onClick); + }; + }, }; + return analytics; } -function createAnalyticsForwarder(): Analytics { - return { - identify: () => {}, - page: () => {}, - track: () => {}, - }; +/** + * Background analytics is responsible for reporting events triggered in the + * background, and for reporting forwarded events from the other contexts. + */ +function createBackgroundAnalytics(): Analytics { + const config = useAppConfig().analytics as AnalyticsConfig | undefined; + const backgroundSessionId = Date.now(); + + // User properties storage + const userIdStorage = storage.defineItem( + 'local:wxt-analytics:user-id', + ); + const userPropertiesStorage = storage.defineItem>( + 'local:wxt-analytics:user-properties', + { defaultValue: {} }, + ); + + // Cached values + const platformInfo = browser.runtime.getPlatformInfo(); + const browserInfo = browser.runtime.getBrowserInfo(); + let userId = userIdStorage + .getValue() + .then((id) => id ?? globalThis.crypto.randomUUID()); + let userProperties = userPropertiesStorage.getValue(); + + const getBaseEvent = async ( + meta: ForwardMetadata = { + sessionId: backgroundSessionId, + timestamp: Date.now(), + }, + ): Promise => ({ + sessionId: meta.sessionId, + timestamp: meta.timestamp, + user: { + id: await userId, + properties: { + ...(await platformInfo), + ...(await browserInfo), + ...(await userProperties), + }, + }, + }); + + const analytics = { + identify: async ( + newUserId: string, + newUserProperties: Record = {}, + forwardMeta?: ForwardMetadata, + ) => { + // Update in-memory cache for all providers + userId = Promise.resolve(newUserId); + userProperties = Promise.resolve(newUserProperties); + // Persist user info to storage + await Promise.all([ + userIdStorage.setValue(newUserId), + userPropertiesStorage.setValue(newUserProperties), + ]); + // Notify providers + const event = await getBaseEvent(forwardMeta); + if (config?.debug) console.debug('analytics.identify', event); + await Promise.all(providers.map((provider) => provider.identify(event))); + }, + page: async (url: string, forwardMeta?: ForwardMetadata) => { + const baseEvent = await getBaseEvent(forwardMeta); + const event: AnalyticsPageViewEvent = { + ...baseEvent, + page: { url }, + }; + if (config?.debug) console.debug('analytics.page', event); + await Promise.all(providers.map((provider) => provider.page(event))); + }, + track: async ( + eventName: string, + eventProperties?: Record, + forwardMeta?: ForwardMetadata, + ) => { + const baseEvent = await getBaseEvent(forwardMeta); + const event: AnalyticsTrackEvent = { + ...baseEvent, + event: { name: eventName, properties: eventProperties }, + }; + if (config?.debug) console.debug('analytics.track', event); + await Promise.all(providers.map((provider) => provider.track(event))); + }, + autoTrack: () => { + // Noop, background doesn't have a UI + return () => {}; + }, + } satisfies Analytics; + + const providers = + config?.providers?.map((provider) => provider(analytics, config)) ?? []; + + // Listen for messages from the rest of the extension + chrome.runtime.onConnect.addListener((port) => { + if (port.name === ANALYTICS_PORT) { + port.onMessage.addListener(({ fn, args }) => { + // @ts-expect-error: Untyped fn key + void analytics[fn]?.(...args); + }); + } + }); + + return analytics; +} + +interface ForwardMetadata { + sessionId: number; + timestamp: number; } diff --git a/packages/analytics/modules/analytics/index.ts b/packages/analytics/modules/analytics/index.ts index 9e779c04d..f654d80f4 100644 --- a/packages/analytics/modules/analytics/index.ts +++ b/packages/analytics/modules/analytics/index.ts @@ -1,19 +1,27 @@ import 'wxt'; +import 'wxt/sandbox'; import { addWxtPlugin, defineWxtModule } from 'wxt/modules'; import { resolve } from 'node:path'; +import { AnalyticsConfig } from './types'; + +declare module 'wxt/sandbox' { + export interface WxtAppConfig { + analytics: AnalyticsConfig; + } +} const pluginId = process.env.NPM - ? 'analytics/client' + ? '@wxt-dev/analytics/client' : resolve(__dirname, 'client.ts'); export default defineWxtModule({ name: 'analytics', imports: [{ name: 'analytics', from: pluginId }], - setup(wxt, options) { + setup(wxt) { // Add a plugin addWxtPlugin( wxt, - resolve(__dirname, process.env.NPM ? 'plugin.mjs' : 'plugin.ts'), + resolve(__dirname, process.env.NPM ? 'client.mjs' : 'client.ts'), ); }, }); diff --git a/packages/analytics/modules/analytics/providers/google-analytics.ts b/packages/analytics/modules/analytics/providers/google-analytics.ts index faeb567f7..06d0cf8fd 100644 --- a/packages/analytics/modules/analytics/providers/google-analytics.ts +++ b/packages/analytics/modules/analytics/providers/google-analytics.ts @@ -1,13 +1,78 @@ import type { AnalyticsProvider } from '../types'; -export interface GoogleAnalyticsProviderOptions {} +const DEFAULT_ENGAGEMENT_TIME_IN_MSEC = 100; + +export interface GoogleAnalyticsProviderOptions { + apiSecret: string; + measurementId: string; +} export const googleAnalytics = (options: GoogleAnalyticsProviderOptions): AnalyticsProvider => - (analytics, config) => { + (_, config) => { + const sendEvent = async (data: SendEventData): Promise => { + const url = new URL( + config?.debug ? '/debug/mp/collect' : '/mp/collect', + 'https://www.google-analytics.com', + ); + if (options.apiSecret) + url.searchParams.set('api_secret', options.apiSecret); + if (options.measurementId) + url.searchParams.set('measurement_id', options.apiSecret); + + await fetch(url.href, { + method: 'POST', + body: JSON.stringify({ + client_id: data.user.id, + consent: { + ad_user_data: 'DENIED', + ad_personalization: 'DENIED', + }, + user_properties: data.user.properties, + events: [ + { + name: data.event.name, + params: { + session_id: data.sessionId, + engagement_time_msec: DEFAULT_ENGAGEMENT_TIME_IN_MSEC, + ...data.event.properties, + }, + }, + ], + }), + }); + }; + return { - identify: async () => {}, - page: async () => {}, - track: async () => {}, + identify: () => Promise.resolve(), // No-op, user data uploaded in page/track + page: (event) => { + const properties: Record = {}; + if (event.page.title) properties.page_title = event.page.title; + if (event.page.location) properties.page_location = event.page.location; + return sendEvent({ + ...event, + event: { name: 'page_view', properties }, + }); + }, + track: (event) => + sendEvent({ + ...event, + event: { + name: event.event.name, + properties: event.event.properties, + }, + }), }; }; + +export interface SendEventData { + sessionId: number; + user: { + id: string; + properties: Record; + }; + event: { + name: string; + properties?: Record; + }; +} diff --git a/packages/analytics/modules/analytics/providers/umami.ts b/packages/analytics/modules/analytics/providers/umami.ts index e04bc41eb..aeeceeb79 100644 --- a/packages/analytics/modules/analytics/providers/umami.ts +++ b/packages/analytics/modules/analytics/providers/umami.ts @@ -1,5 +1,18 @@ -export interface UmamiProviderOptions {} +import type { AnalyticsProvider } from '../types'; -export const umami = (options: UmamiProviderOptions) => (analytics, config) => { - throw Error('TODO'); -}; +export interface UmamiProviderOptions { + baseUrl: string; + websiteId: string; + hostname: string; +} + +export const umami = + (options: UmamiProviderOptions): AnalyticsProvider => + (analytics, config) => { + throw Error('TODO'); + // return { + // identify: async () => {}, + // page: async () => {}, + // track: async () => {}, + // }; + }; diff --git a/packages/analytics/modules/analytics/types.ts b/packages/analytics/modules/analytics/types.ts index 7387912a0..1e50684d2 100644 --- a/packages/analytics/modules/analytics/types.ts +++ b/packages/analytics/modules/analytics/types.ts @@ -1,10 +1,12 @@ export interface Analytics { /** Report a page change */ - page: (url: string | URL) => void; + page: (url: string) => void; /** Report a custom event */ - track: (eventName: string, eventProperties: string) => void; + track: (eventName: string, eventProperties: Record) => void; /** Save information about the user */ identify: (userId: string, userProperties?: Record) => void; + /** Automatically setup and track user interactions, returning a function to remove any listeners that were setup. */ + autoTrack: (root: Document | ShadowRoot | Element) => () => void; } export interface AnalyticsConfig { @@ -25,26 +27,31 @@ export type AnalyticsProvider = ( /** Upload a custom event */ track: (event: AnalyticsTrackEvent) => Promise; /** Upload or save information about the user */ - identify: (event: AnalyticsIdentifyEvent) => Promise; + identify: (event: BaseAnalyticsEvent) => Promise; }; export interface BaseAnalyticsEvent { /** Identifier of the session the event was fired from */ - sessionId: string; + sessionId: number; /** `Date.now()` of when the event was reported */ - time: number; + timestamp: number; + user: { + id: string; + properties: Record; + }; } export interface AnalyticsPageViewEvent extends BaseAnalyticsEvent { - url: string; - sessionId: string; - title: string; - location: string; + page: { + url: string; + title?: string; + location?: string; + }; } export interface AnalyticsTrackEvent extends BaseAnalyticsEvent { - eventName: string; - eventProperties: Record; + event: { + name: string; + properties?: Record; + }; } - -export interface AnalyticsIdentifyEvent extends BaseAnalyticsEvent {} diff --git a/packages/analytics/package.json b/packages/analytics/package.json index c08651030..7e519a07e 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,8 +1,8 @@ { - "name": "my-module", - "version": "1.0.0", - "description": "My new WXT module", - "repository": "your-org/my-module", + "name": "@wxt-dev/analytics", + "version": "0.1.0", + "description": "Add analytics to your web extension", + "repository": "wxt-dev/wxt", "license": "MIT", "type": "module", "exports": { @@ -38,7 +38,6 @@ "publint": "^0.2.8", "typescript": "^5.5.2", "unbuild": "^2.0.0", - "vite": "^5.3.1", "wxt": "^0.18.10" } } diff --git a/packages/analytics/wxt.config.ts b/packages/analytics/wxt.config.ts index 0ebb6402c..3dbe7e1fa 100644 --- a/packages/analytics/wxt.config.ts +++ b/packages/analytics/wxt.config.ts @@ -6,7 +6,4 @@ export default defineConfig({ 'process.env.NPM': 'false', }, }), - myModule: { - example: 'options', - }, }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 673250ef9..3d374cfa6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,9 +104,6 @@ importers: unbuild: specifier: ^2.0.0 version: 2.0.0(sass@1.77.8)(typescript@5.5.4) - vite: - specifier: ^5.3.1 - version: 5.3.5(@types/node@20.14.12)(sass@1.77.8) wxt: specifier: ^0.18.10 version: 0.18.15(@types/node@20.14.12)(rollup@4.19.0)(sass@1.77.8) From 328acbbfe7c2054e67dfc5162fe37f6b3b7c1b52 Mon Sep 17 00:00:00 2001 From: Aaron Date: Wed, 3 Jul 2024 01:28:13 -0500 Subject: [PATCH 03/48] Cleanup --- packages/analytics/README.md | 2 +- packages/analytics/app.config.ts | 7 ++++--- .../{google-analytics.ts => google-analytics-4.ts} | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) rename packages/analytics/modules/analytics/providers/{google-analytics.ts => google-analytics-4.ts} (98%) diff --git a/packages/analytics/README.md b/packages/analytics/README.md index 68a45e301..980953084 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -2,7 +2,7 @@ Add analytics, like google analytics, to your WXT extension. -## Supported Analytics Services +## Supported Analytics Providers - Google Analytics (Measurement Protocol) - Umami diff --git a/packages/analytics/app.config.ts b/packages/analytics/app.config.ts index 777399a7c..7024f73c8 100644 --- a/packages/analytics/app.config.ts +++ b/packages/analytics/app.config.ts @@ -1,16 +1,17 @@ -import { googleAnalytics } from './modules/analytics/providers/google-analytics'; +import { googleAnalytics4 } from './modules/analytics/providers/google-analytics-4'; import { umami } from './modules/analytics/providers/umami'; export default defineAppConfig({ analytics: { providers: [ - googleAnalytics({ + googleAnalytics4({ apiSecret: '...', measurementId: '...', }), umami({ + baseUrl: 'https://umami.aklinker1.io', hostname: '...', - website: '...', + websiteId: '...', }), ], debug: true, diff --git a/packages/analytics/modules/analytics/providers/google-analytics.ts b/packages/analytics/modules/analytics/providers/google-analytics-4.ts similarity index 98% rename from packages/analytics/modules/analytics/providers/google-analytics.ts rename to packages/analytics/modules/analytics/providers/google-analytics-4.ts index 06d0cf8fd..8419a773a 100644 --- a/packages/analytics/modules/analytics/providers/google-analytics.ts +++ b/packages/analytics/modules/analytics/providers/google-analytics-4.ts @@ -7,7 +7,7 @@ export interface GoogleAnalyticsProviderOptions { measurementId: string; } -export const googleAnalytics = +export const googleAnalytics4 = (options: GoogleAnalyticsProviderOptions): AnalyticsProvider => (_, config) => { const sendEvent = async (data: SendEventData): Promise => { From 8ace11f3cbf650af9fc60d0cb00ee26d2be09eb0 Mon Sep 17 00:00:00 2001 From: Aaron Date: Wed, 3 Jul 2024 01:39:12 -0500 Subject: [PATCH 04/48] Add missing file --- .../analytics/modules/analytics/providers/google-analytics-4.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/analytics/modules/analytics/providers/google-analytics-4.ts b/packages/analytics/modules/analytics/providers/google-analytics-4.ts index 8419a773a..348f7d86f 100644 --- a/packages/analytics/modules/analytics/providers/google-analytics-4.ts +++ b/packages/analytics/modules/analytics/providers/google-analytics-4.ts @@ -18,7 +18,7 @@ export const googleAnalytics4 = if (options.apiSecret) url.searchParams.set('api_secret', options.apiSecret); if (options.measurementId) - url.searchParams.set('measurement_id', options.apiSecret); + url.searchParams.set('measurement_id', options.measurementId); await fetch(url.href, { method: 'POST', From eba8788a76412d785506a9f4d58ee874ef83ba3c Mon Sep 17 00:00:00 2001 From: Aaron Date: Thu, 4 Jul 2024 14:36:50 -0500 Subject: [PATCH 05/48] Umami provider and cleanup --- packages/analytics/README.md | 10 ++ packages/analytics/app.config.ts | 6 +- packages/analytics/build.config.ts | 7 +- .../{popup.html => popup/index.html} | 5 + packages/analytics/entrypoints/popup/main.ts | 7 + .../analytics/modules/analytics/client.ts | 148 +++++++++++++----- packages/analytics/modules/analytics/index.ts | 7 + .../analytics/providers/google-analytics-4.ts | 61 ++++---- .../modules/analytics/providers/umami.ts | 59 ++++++- packages/analytics/modules/analytics/types.ts | 63 ++++++-- packages/analytics/package.json | 34 ++-- packages/analytics/wxt.config.ts | 3 + pnpm-lock.yaml | 119 +++----------- 13 files changed, 324 insertions(+), 205 deletions(-) rename packages/analytics/entrypoints/{popup.html => popup/index.html} (65%) create mode 100644 packages/analytics/entrypoints/popup/main.ts diff --git a/packages/analytics/README.md b/packages/analytics/README.md index 980953084..fd87e178c 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -37,6 +37,16 @@ export default defineAppConfig({ }); ``` +Then use the `analytics` import to report events: + +```ts +import { analytics } from '@wxt-dev/analytics'; + +await analytics.track('some-event'); +await analytics.page(); +await analytics.identify('some-user-id'); +``` + ## Providers ### Google Analytics (Measurement Protocol) diff --git a/packages/analytics/app.config.ts b/packages/analytics/app.config.ts index 7024f73c8..3481aa07b 100644 --- a/packages/analytics/app.config.ts +++ b/packages/analytics/app.config.ts @@ -3,6 +3,7 @@ import { umami } from './modules/analytics/providers/umami'; export default defineAppConfig({ analytics: { + debug: true, providers: [ googleAnalytics4({ apiSecret: '...', @@ -10,10 +11,9 @@ export default defineAppConfig({ }), umami({ baseUrl: 'https://umami.aklinker1.io', - hostname: '...', - websiteId: '...', + hostname: 'analytics.wxt.dev', + websiteId: '8f1c2aa4-fad3-406e-a5b2-33e8d4501716', }), ], - debug: true, }, }); diff --git a/packages/analytics/build.config.ts b/packages/analytics/build.config.ts index a515d0f62..e08cc7978 100644 --- a/packages/analytics/build.config.ts +++ b/packages/analytics/build.config.ts @@ -5,7 +5,12 @@ import { resolve } from 'node:path'; export default defineBuildConfig({ rootDir: 'modules/analytics', outDir: resolve(__dirname, 'dist'), - entries: ['index.ts', 'client.ts'], + entries: [ + 'index.ts', + 'client.ts', + 'providers/google-analytics-4.ts', + 'providers/umami.ts', + ], replace: { 'process.env.NPM': 'true', }, diff --git a/packages/analytics/entrypoints/popup.html b/packages/analytics/entrypoints/popup/index.html similarity index 65% rename from packages/analytics/entrypoints/popup.html rename to packages/analytics/entrypoints/popup/index.html index eb37be630..6725f56e6 100644 --- a/packages/analytics/entrypoints/popup.html +++ b/packages/analytics/entrypoints/popup/index.html @@ -6,7 +6,12 @@ Popup + + diff --git a/packages/analytics/entrypoints/popup/main.ts b/packages/analytics/entrypoints/popup/main.ts new file mode 100644 index 000000000..fc1106d5f --- /dev/null +++ b/packages/analytics/entrypoints/popup/main.ts @@ -0,0 +1,7 @@ +declare const enabledCheckbox: HTMLInputElement; + +analytics.autoTrack(document); + +enabledCheckbox.oninput = () => { + void analytics.setEnabled(enabledCheckbox.checked); +}; diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index e6ce5bf84..a2a7d3df6 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -6,9 +6,19 @@ import { AnalyticsTrackEvent, BaseAnalyticsEvent, } from './types'; +import uaParser from 'ua-parser-js'; export let analytics: Analytics; const ANALYTICS_PORT = 'wxt-analytics'; +const interactiveTags = new Set(['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA']); +const interactiveRoles = new Set([ + 'button', + 'link', + 'checkbox', + 'menuitem', + 'tab', + 'radio', +]); export default defineWxtPlugin(() => { const isBackground = globalThis.window == null; // TODO: Support MV2 @@ -23,6 +33,12 @@ function createAnalyticsForwarder(): Analytics { const getMetadata = (): ForwardMetadata => ({ sessionId, timestamp: Date.now(), + language: navigator.language, + referrer: globalThis.document?.referrer || undefined, + screen: globalThis.window + ? `${globalThis.window.screen.width}x${globalThis.window.screen.height}` + : undefined, + url: location.href, }); const methodForwarder = @@ -34,16 +50,22 @@ function createAnalyticsForwarder(): Analytics { identify: methodForwarder('identify'), page: methodForwarder('page'), track: methodForwarder('track'), + setEnabled: methodForwarder('setEnabled'), autoTrack: (root) => { const onClick = (event: Event) => { const element = event.target as any; - if (!element) return; + if ( + !element || + (!interactiveTags.has(element.tagName) && + !interactiveRoles.has(element.getAttribute('role'))) + ) + return; void analytics.track('click', { - tagName: element.tagName, - id: element.id, - className: element.className, - textContent: element.textContent?.substring(0, 50), // Limit text content length + tagName: element.tagName?.toLowerCase(), + id: element.id || undefined, + className: element.className || undefined, + textContent: element.textContent?.substring(0, 50) || undefined, // Limit text content length href: element.href, }); }; @@ -62,42 +84,67 @@ function createAnalyticsForwarder(): Analytics { */ function createBackgroundAnalytics(): Analytics { const config = useAppConfig().analytics as AnalyticsConfig | undefined; - const backgroundSessionId = Date.now(); // User properties storage - const userIdStorage = storage.defineItem( - 'local:wxt-analytics:user-id', - ); - const userPropertiesStorage = storage.defineItem>( - 'local:wxt-analytics:user-properties', - { defaultValue: {} }, - ); + const userIdStorage = + config?.userId ?? storage.defineItem('local:wxt-analytics:user-id'); + const userPropertiesStorage = + config?.userProperties ?? + storage.defineItem>( + 'local:wxt-analytics:user-properties', + { defaultValue: {} }, + ); + const enabled = + config?.enabled ?? + storage.defineItem('local:wxt-analytics:enabled', { + defaultValue: false, + }); // Cached values const platformInfo = browser.runtime.getPlatformInfo(); - const browserInfo = browser.runtime.getBrowserInfo(); - let userId = userIdStorage - .getValue() - .then((id) => id ?? globalThis.crypto.randomUUID()); + const userAgent = uaParser(); + let userId = Promise.resolve(userIdStorage.getValue()).then( + (id) => id ?? globalThis.crypto.randomUUID(), + ); let userProperties = userPropertiesStorage.getValue(); + const manifest = browser.runtime.getManifest(); const getBaseEvent = async ( meta: ForwardMetadata = { - sessionId: backgroundSessionId, timestamp: Date.now(), + // Don't track sessions for the background, it can be running + // indefinitely, and will inflate session duration stats. + sessionId: undefined, + language: navigator.language, + referrer: undefined, + screen: undefined, + url: location.href, }, - ): Promise => ({ - sessionId: meta.sessionId, - timestamp: meta.timestamp, - user: { - id: await userId, - properties: { - ...(await platformInfo), - ...(await browserInfo), - ...(await userProperties), + ): Promise => { + const platform = await platformInfo; + return { + meta: { + sessionId: meta.sessionId, + timestamp: meta.timestamp, + screen: meta.screen, + referrer: meta.referrer, + language: meta.language, }, - }, - }); + user: { + id: await userId, + properties: { + version: config?.version ?? manifest.version_name ?? manifest.version, + wxtMode: import.meta.env.MODE, + wxtBrowser: import.meta.env.BROWSER, + arch: platform.arch, + os: platform.os, + browser: userAgent.browser.name, + browserVersion: userAgent.browser.version, + ...(await userProperties), + }, + }, + }; + }; const analytics = { identify: async ( @@ -110,13 +157,19 @@ function createBackgroundAnalytics(): Analytics { userProperties = Promise.resolve(newUserProperties); // Persist user info to storage await Promise.all([ - userIdStorage.setValue(newUserId), - userPropertiesStorage.setValue(newUserProperties), + userIdStorage.setValue?.(newUserId), + userPropertiesStorage.setValue?.(newUserProperties), ]); // Notify providers const event = await getBaseEvent(forwardMeta); - if (config?.debug) console.debug('analytics.identify', event); - await Promise.all(providers.map((provider) => provider.identify(event))); + if (config?.debug) console.debug('[analytics] identify', event); + if (await enabled.getValue()) { + await Promise.allSettled( + providers.map((provider) => provider.identify(event)), + ); + } else if (config?.debug) { + console.debug('[analytics] Disabled, identify() not called'); + } }, page: async (url: string, forwardMeta?: ForwardMetadata) => { const baseEvent = await getBaseEvent(forwardMeta); @@ -124,8 +177,14 @@ function createBackgroundAnalytics(): Analytics { ...baseEvent, page: { url }, }; - if (config?.debug) console.debug('analytics.page', event); - await Promise.all(providers.map((provider) => provider.page(event))); + if (config?.debug) console.debug('[analytics] page', event); + if (await enabled.getValue()) { + await Promise.allSettled( + providers.map((provider) => provider.page(event)), + ); + } else if (config?.debug) { + console.debug('[analytics] Disabled, page() not called'); + } }, track: async ( eventName: string, @@ -137,8 +196,17 @@ function createBackgroundAnalytics(): Analytics { ...baseEvent, event: { name: eventName, properties: eventProperties }, }; - if (config?.debug) console.debug('analytics.track', event); - await Promise.all(providers.map((provider) => provider.track(event))); + if (config?.debug) console.debug('[analytics] track', event); + if (await enabled.getValue()) { + await Promise.allSettled( + providers.map((provider) => provider.track(event)), + ); + } else if (config?.debug) { + console.debug('[analytics] Disabled, track() not called'); + } + }, + setEnabled: async (newEnabled) => { + await enabled.setValue?.(newEnabled); }, autoTrack: () => { // Noop, background doesn't have a UI @@ -163,6 +231,10 @@ function createBackgroundAnalytics(): Analytics { } interface ForwardMetadata { - sessionId: number; + sessionId: number | undefined; timestamp: number; + screen: string | undefined; + language: string | undefined; + referrer: string | undefined; + url: string | undefined; } diff --git a/packages/analytics/modules/analytics/index.ts b/packages/analytics/modules/analytics/index.ts index f654d80f4..34b6df2a0 100644 --- a/packages/analytics/modules/analytics/index.ts +++ b/packages/analytics/modules/analytics/index.ts @@ -23,5 +23,12 @@ export default defineWxtModule({ wxt, resolve(__dirname, process.env.NPM ? 'client.mjs' : 'client.ts'), ); + + wxt.hooks.hook('build:manifestGenerated', (_, manifest) => { + manifest.permissions ??= []; + if (!manifest.permissions.includes('storage')) { + manifest.permissions.push('storage'); + } + }); }, }); diff --git a/packages/analytics/modules/analytics/providers/google-analytics-4.ts b/packages/analytics/modules/analytics/providers/google-analytics-4.ts index 348f7d86f..21372522a 100644 --- a/packages/analytics/modules/analytics/providers/google-analytics-4.ts +++ b/packages/analytics/modules/analytics/providers/google-analytics-4.ts @@ -1,4 +1,4 @@ -import type { AnalyticsProvider } from '../types'; +import type { AnalyticsProvider, BaseAnalyticsEvent } from '../types'; const DEFAULT_ENGAGEMENT_TIME_IN_MSEC = 100; @@ -10,7 +10,11 @@ export interface GoogleAnalyticsProviderOptions { export const googleAnalytics4 = (options: GoogleAnalyticsProviderOptions): AnalyticsProvider => (_, config) => { - const sendEvent = async (data: SendEventData): Promise => { + const send = async ( + data: BaseAnalyticsEvent, + eventName: string, + eventProperties: Record | undefined, + ): Promise => { const url = new URL( config?.debug ? '/debug/mp/collect' : '/mp/collect', 'https://www.google-analytics.com', @@ -20,6 +24,18 @@ export const googleAnalytics4 = if (options.measurementId) url.searchParams.set('measurement_id', options.measurementId); + const userProperties = { + language: data.meta.language, + screen: data.meta.screen, + ...data.user.properties, + }; + const mappedUserProperties = Object.fromEntries( + Object.entries(userProperties).map(([name, value]) => [ + name, + value == null ? undefined : { value }, + ]), + ); + await fetch(url.href, { method: 'POST', body: JSON.stringify({ @@ -28,14 +44,14 @@ export const googleAnalytics4 = ad_user_data: 'DENIED', ad_personalization: 'DENIED', }, - user_properties: data.user.properties, + user_properties: mappedUserProperties, events: [ { - name: data.event.name, + name: eventName, params: { - session_id: data.sessionId, + session_id: data.meta.sessionId, engagement_time_msec: DEFAULT_ENGAGEMENT_TIME_IN_MSEC, - ...data.event.properties, + ...eventProperties, }, }, ], @@ -45,34 +61,11 @@ export const googleAnalytics4 = return { identify: () => Promise.resolve(), // No-op, user data uploaded in page/track - page: (event) => { - const properties: Record = {}; - if (event.page.title) properties.page_title = event.page.title; - if (event.page.location) properties.page_location = event.page.location; - return sendEvent({ - ...event, - event: { name: 'page_view', properties }, - }); - }, - track: (event) => - sendEvent({ - ...event, - event: { - name: event.event.name, - properties: event.event.properties, - }, + page: (event) => + send(event, 'page_view', { + page_title: event.page.title, + page_location: event.page.location, }), + track: (event) => send(event, event.event.name, event.event.properties), }; }; - -export interface SendEventData { - sessionId: number; - user: { - id: string; - properties: Record; - }; - event: { - name: string; - properties?: Record; - }; -} diff --git a/packages/analytics/modules/analytics/providers/umami.ts b/packages/analytics/modules/analytics/providers/umami.ts index aeeceeb79..c1deec3d4 100644 --- a/packages/analytics/modules/analytics/providers/umami.ts +++ b/packages/analytics/modules/analytics/providers/umami.ts @@ -9,10 +9,57 @@ export interface UmamiProviderOptions { export const umami = (options: UmamiProviderOptions): AnalyticsProvider => (analytics, config) => { - throw Error('TODO'); - // return { - // identify: async () => {}, - // page: async () => {}, - // track: async () => {}, - // }; + const send = (payload: UmamiPayload) => + fetch(`${options.baseUrl}/api/send`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ type: 'event', payload }), + }); + + return { + identify: () => Promise.resolve(), // No-op, user data uploaded in page/track + page: async (event) => { + await send({ + name: 'page_view', + website: options.websiteId, + url: event.page.url, + hostname: options.hostname, + language: event.meta.language ?? '', + referrer: event.meta.referrer ?? '', + screen: event.meta.screen ?? '', + title: event.page.title ?? '', + data: event.user.properties, + }); + }, + track: async (event) => { + await send({ + name: event.event.name, + website: options.websiteId, + url: event.meta.url ?? '/', + title: '', + hostname: options.hostname, + language: event.meta.language ?? '', + referrer: event.meta.referrer ?? '', + screen: event.meta.screen ?? '', + data: { + ...event.event.properties, + ...event.user.properties, + }, + }); + }, + }; }; + +interface UmamiPayload { + hostname?: string; + language?: string; + referrer?: string; + screen?: string; + title?: string; + url?: string; + website: string; + name: string; + data?: Record; +} diff --git a/packages/analytics/modules/analytics/types.ts b/packages/analytics/modules/analytics/types.ts index 1e50684d2..ef5781334 100644 --- a/packages/analytics/modules/analytics/types.ts +++ b/packages/analytics/modules/analytics/types.ts @@ -7,15 +7,40 @@ export interface Analytics { identify: (userId: string, userProperties?: Record) => void; /** Automatically setup and track user interactions, returning a function to remove any listeners that were setup. */ autoTrack: (root: Document | ShadowRoot | Element) => () => void; + /** Calls `config.enabled.setValue` */ + setEnabled: (enabled: boolean) => void; } export interface AnalyticsConfig { - /** Array of providers to send analytics to. */ + /** + * Array of providers to send analytics to. + */ providers: AnalyticsProvider[]; - /** Enable debug logs and other provider-specific debugging features. */ + /** + * Enable debug logs and other provider-specific debugging features. + */ debug?: boolean; - /** Extension version, defaults to `browser.runtime.getManifest().version`. */ + /** + * Extension version, defaults to `browser.runtime.getManifest().version`. + */ version?: string; + /** + * Configure how the enabled flag is persisted + */ + enabled?: AnalyticsStorageItemConfig; + /** + * Configure how the user Id is persisted + */ + userId?: AnalyticsStorageItemConfig; + /** + * Configure how user properties are persisted + */ + userProperties?: AnalyticsStorageItemConfig>; +} + +export interface AnalyticsStorageItemConfig { + getValue: () => T | Promise; + setValue?: (newValue: T) => void | Promise; } export type AnalyticsProvider = ( @@ -31,22 +56,34 @@ export type AnalyticsProvider = ( }; export interface BaseAnalyticsEvent { - /** Identifier of the session the event was fired from */ - sessionId: number; - /** `Date.now()` of when the event was reported */ - timestamp: number; + meta: { + /** Identifier of the session the event was fired from */ + sessionId: number | undefined; + /** `Date.now()` of when the event was reported */ + timestamp: number; + /** `"1920x1080"` */ + screen?: string; + /** `document.referrer` */ + referrer?: string; + /** `navigator.language` */ + language?: string; + /** `location.href` */ + url?: string; + }; user: { id: string; - properties: Record; + properties: Record; }; } +export interface AnalyticsPageInfo { + url: string; + title?: string; + location?: string; +} + export interface AnalyticsPageViewEvent extends BaseAnalyticsEvent { - page: { - url: string; - title?: string; - location?: string; - }; + page: AnalyticsPageInfo; } export interface AnalyticsTrackEvent extends BaseAnalyticsEvent { diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 7e519a07e..460c6ff99 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -10,9 +10,17 @@ "types": "./dist/index.d.mts", "default": "./dist/index.mjs" }, - "./plugin": { - "types": "./dist/plugin.d.mts", - "default": "./dist/plugin.mjs" + "./client": { + "types": "./dist/client.d.mts", + "default": "./dist/client.mjs" + }, + "./providers/google-analytics-4": { + "types": "./dist/providers/google-analytics-4.d.mts", + "default": "./dist/providers/google-analytics-4.mjs" + }, + "./providers/umami": { + "types": "./dist/providers/umami.d.mts", + "default": "./dist/providers/umami.mjs" } }, "module": "./dist/index.mjs", @@ -21,23 +29,27 @@ "dist" ], "scripts": { - "dev": "wxt", - "dev:build": "wxt build", - "check": "check", - "build": "unbuild", - "prepack": "unbuild", - "postinstall": "wxt prepare" + "dev": "buildc --deps-only -- wxt", + "dev:build": "buildc --deps-only -- wxt build", + "check": "buildc --deps-only -- check", + "build": "buildc -- unbuild", + "prepack": "pnpn -s build", + "prepare": "wxt prepare" }, "peerDependencies": { - "wxt": ">=0.18.10" + "wxt": ">=0.18.12" }, "devDependencies": { "@aklinker1/check": "^1.3.1", "@types/chrome": "^0.0.268", + "@types/ua-parser-js": "^0.7.39", "prettier": "^3.3.2", "publint": "^0.2.8", "typescript": "^5.5.2", "unbuild": "^2.0.0", - "wxt": "^0.18.10" + "wxt": "workspace:*" + }, + "dependencies": { + "ua-parser-js": "^1.0.38" } } diff --git a/packages/analytics/wxt.config.ts b/packages/analytics/wxt.config.ts index 3dbe7e1fa..05b849ff8 100644 --- a/packages/analytics/wxt.config.ts +++ b/packages/analytics/wxt.config.ts @@ -1,6 +1,9 @@ import { defineConfig } from 'wxt'; export default defineConfig({ + manifest: { + name: 'Analytics Demo', + }, vite: () => ({ define: { 'process.env.NPM': 'false', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d374cfa6..8bc71659f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -85,6 +85,10 @@ importers: version: 2.5.0 packages/analytics: + dependencies: + ua-parser-js: + specifier: ^1.0.38 + version: 1.0.39 devDependencies: '@aklinker1/check': specifier: ^1.3.1 @@ -92,6 +96,9 @@ importers: '@types/chrome': specifier: ^0.0.268 version: 0.0.268 + '@types/ua-parser-js': + specifier: ^0.7.39 + version: 0.7.39 prettier: specifier: ^3.3.2 version: 3.3.3 @@ -105,8 +112,8 @@ importers: specifier: ^2.0.0 version: 2.0.0(sass@1.77.8)(typescript@5.5.4) wxt: - specifier: ^0.18.10 - version: 0.18.15(@types/node@20.14.12)(rollup@4.19.0)(sass@1.77.8) + specifier: workspace:* + version: link:../wxt packages/auto-icons: dependencies: @@ -1689,6 +1696,9 @@ packages: '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + '@types/ua-parser-js@0.7.39': + resolution: {integrity: sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==} + '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} @@ -1937,9 +1947,6 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - async-mutex@0.4.1: - resolution: {integrity: sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==} - async-mutex@0.5.0: resolution: {integrity: sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==} @@ -3580,10 +3587,6 @@ packages: resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - ora@7.0.1: - resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==} - engines: {node: '>=16'} - ora@8.1.0: resolution: {integrity: sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==} engines: {node: '>=18'} @@ -4310,10 +4313,6 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string-width@6.1.0: - resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} - engines: {node: '>=16'} - string-width@7.2.0: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} @@ -4538,6 +4537,10 @@ packages: engines: {node: '>=14.17'} hasBin: true + ua-parser-js@1.0.39: + resolution: {integrity: sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==} + hasBin: true + ufo@1.4.0: resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} @@ -4777,9 +4780,6 @@ packages: resolution: {integrity: sha512-5D11VcjdGkA1/xax5UWL0YeAbDySKHzWFe6EpsoPNUMw5Uk9tKk9p6GUOfcaI5N7sINKfBMZYNsTBiu5dzJB9A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} - webextension-polyfill@0.10.0: - resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} - webextension-polyfill@0.12.0: resolution: {integrity: sha512-97TBmpoWJEE+3nFBQ4VocyCdLKfw54rFaJ6EVQYLBCXqCIpLSZkwGgASpv4oPt9gdKCJ80RJlcmNzNn008Ag6Q==} @@ -4863,10 +4863,6 @@ packages: utf-8-validate: optional: true - wxt@0.18.15: - resolution: {integrity: sha512-rzFLinUyugBsoC+mJZFMIQILrA4OUk/XG0mAW30zF3pqegIwawrEx5JXFXg/D1XW6//uew/FLTm12t3mcpbw+Q==} - hasBin: true - xdg-basedir@5.1.0: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} @@ -5914,6 +5910,8 @@ snapshots: '@types/resolve@1.20.2': {} + '@types/ua-parser-js@0.7.39': {} + '@types/unist@3.0.2': {} '@types/web-bluetooth@0.0.20': {} @@ -6215,10 +6213,6 @@ snapshots: assertion-error@2.0.1: {} - async-mutex@0.4.1: - dependencies: - tslib: 2.6.0 - async-mutex@0.5.0: dependencies: tslib: 2.6.0 @@ -8054,18 +8048,6 @@ snapshots: strip-ansi: 7.1.0 wcwidth: 1.0.1 - ora@7.0.1: - dependencies: - chalk: 5.3.0 - cli-cursor: 4.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 1.3.0 - log-symbols: 5.1.0 - stdin-discarder: 0.1.0 - string-width: 6.1.0 - strip-ansi: 7.1.0 - ora@8.1.0: dependencies: chalk: 5.3.0 @@ -8828,12 +8810,6 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string-width@6.1.0: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 10.3.0 - strip-ansi: 7.1.0 - string-width@7.2.0: dependencies: emoji-regex: 10.3.0 @@ -9047,6 +9023,8 @@ snapshots: typescript@5.5.4: {} + ua-parser-js@1.0.39: {} + ufo@1.4.0: {} ufo@1.5.3: {} @@ -9418,8 +9396,6 @@ snapshots: - supports-color - utf-8-validate - webextension-polyfill@0.10.0: {} - webextension-polyfill@0.12.0: {} webidl-conversions@7.0.0: {} @@ -9502,61 +9478,6 @@ snapshots: ws@8.18.0: {} - wxt@0.18.15(@types/node@20.14.12)(rollup@4.19.0)(sass@1.77.8): - dependencies: - '@aklinker1/rollup-plugin-visualizer': 5.12.0(rollup@4.19.0) - '@types/webextension-polyfill': 0.10.7 - '@webext-core/fake-browser': 1.3.1 - '@webext-core/isolated-element': 1.1.2 - '@webext-core/match-patterns': 1.0.3 - async-mutex: 0.4.1 - c12: 1.11.1(magicast@0.3.4) - cac: 6.7.14 - chokidar: 3.6.0 - ci-info: 4.0.0 - defu: 6.1.4 - dequal: 2.0.3 - esbuild: 0.19.12 - fast-glob: 3.3.2 - filesize: 10.1.4 - fs-extra: 11.2.0 - get-port: 7.1.0 - giget: 1.2.3 - hookable: 5.5.3 - is-wsl: 3.1.0 - jiti: 1.21.6 - json5: 2.2.3 - jszip: 3.10.1 - linkedom: 0.18.4 - magicast: 0.3.4 - minimatch: 9.0.5 - natural-compare: 1.4.0 - normalize-path: 3.0.0 - nypm: 0.3.9 - ohash: 1.1.3 - open: 10.1.0 - ora: 7.0.1 - picocolors: 1.0.1 - prompts: 2.4.2 - publish-browser-extension: 2.1.3 - unimport: 3.11.1(rollup@4.19.0) - vite: 5.3.5(@types/node@20.14.12)(sass@1.77.8) - vite-node: 1.6.0(@types/node@20.14.12)(sass@1.77.8) - web-ext-run: 0.2.1 - webextension-polyfill: 0.10.0 - transitivePeerDependencies: - - '@types/node' - - bufferutil - - less - - lightningcss - - rollup - - sass - - stylus - - sugarss - - supports-color - - terser - - utf-8-validate - xdg-basedir@5.1.0: {} xml2js@0.5.0: From 06fd7e4eac1a7075890f66ad4f52ea43151fd250 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 9 Jul 2024 10:27:32 -0500 Subject: [PATCH 06/48] Update package.json --- packages/analytics/package.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 460c6ff99..dc541c55c 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -2,7 +2,11 @@ "name": "@wxt-dev/analytics", "version": "0.1.0", "description": "Add analytics to your web extension", - "repository": "wxt-dev/wxt", + "repository": { + "type": "git", + "url": "https://github.com/wxt-dev/wxt.git", + "directory": "packages/analytics" + }, "license": "MIT", "type": "module", "exports": { From 107803bd8f28accf7b600da9695208c8a803f2be Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 9 Jul 2024 10:28:09 -0500 Subject: [PATCH 07/48] Update package.json --- packages/analytics/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/analytics/package.json b/packages/analytics/package.json index dc541c55c..6afc62beb 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -37,7 +37,7 @@ "dev:build": "buildc --deps-only -- wxt build", "check": "buildc --deps-only -- check", "build": "buildc -- unbuild", - "prepack": "pnpn -s build", + "prepack": "pnpm -s build", "prepare": "wxt prepare" }, "peerDependencies": { From 563bd4e10844821d756985485ad22d992a465624 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 9 Jul 2024 10:41:58 -0500 Subject: [PATCH 08/48] Fix __dirname reference --- packages/analytics/modules/analytics/index.ts | 9 ++++++--- packages/analytics/package.json | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/analytics/modules/analytics/index.ts b/packages/analytics/modules/analytics/index.ts index 34b6df2a0..0e0a5d862 100644 --- a/packages/analytics/modules/analytics/index.ts +++ b/packages/analytics/modules/analytics/index.ts @@ -1,8 +1,9 @@ import 'wxt'; import 'wxt/sandbox'; import { addWxtPlugin, defineWxtModule } from 'wxt/modules'; -import { resolve } from 'node:path'; +import { resolve, dirname } from 'node:path'; import { AnalyticsConfig } from './types'; +import { fileURLToPath } from 'url'; declare module 'wxt/sandbox' { export interface WxtAppConfig { @@ -10,9 +11,11 @@ declare module 'wxt/sandbox' { } } +const _dirname = dirname(fileURLToPath(import.meta.url)); + const pluginId = process.env.NPM ? '@wxt-dev/analytics/client' - : resolve(__dirname, 'client.ts'); + : resolve(_dirname, 'client.ts'); export default defineWxtModule({ name: 'analytics', @@ -21,7 +24,7 @@ export default defineWxtModule({ // Add a plugin addWxtPlugin( wxt, - resolve(__dirname, process.env.NPM ? 'client.mjs' : 'client.ts'), + resolve(_dirname, process.env.NPM ? 'client.mjs' : 'client.ts'), ); wxt.hooks.hook('build:manifestGenerated', (_, manifest) => { diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 6afc62beb..9efe9fa64 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.1.0", + "version": "0.1.1", "description": "Add analytics to your web extension", "repository": { "type": "git", From e0d0618325a2db01afb44e885dfa1c48421289d9 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 9 Jul 2024 11:09:27 -0500 Subject: [PATCH 09/48] Fix missing useAppConfig --- packages/analytics/modules/analytics/client.ts | 1 + packages/analytics/package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index a2a7d3df6..e41497a2b 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -1,4 +1,5 @@ import { defineWxtPlugin } from 'wxt/sandbox'; +import { useAppConfig } from 'wxt/client'; import { Analytics, AnalyticsConfig, diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 9efe9fa64..af3fc5c8e 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -41,7 +41,7 @@ "prepare": "wxt prepare" }, "peerDependencies": { - "wxt": ">=0.18.12" + "wxt": ">=0.18.14" }, "devDependencies": { "@aklinker1/check": "^1.3.1", From d0623fe17320ce3f0a4485c817009e05b604e3d2 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 9 Jul 2024 11:09:47 -0500 Subject: [PATCH 10/48] Fix missing useAppConfig --- packages/analytics/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/analytics/package.json b/packages/analytics/package.json index af3fc5c8e..b2cc9ce0b 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.1.1", + "version": "0.1.2", "description": "Add analytics to your web extension", "repository": { "type": "git", From 5216d752096cd7d427ef7b60069972f292b7584e Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 9 Jul 2024 11:16:41 -0500 Subject: [PATCH 11/48] Fix useAppConfig fr? --- packages/analytics/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/analytics/package.json b/packages/analytics/package.json index b2cc9ce0b..474bd17c7 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.1.2", + "version": "0.1.3", "description": "Add analytics to your web extension", "repository": { "type": "git", From ee53bb0a5e86c49c57b5ea104533f1b08aa6109e Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 9 Jul 2024 11:22:35 -0500 Subject: [PATCH 12/48] disable auto-imports --- packages/analytics/app.config.ts | 1 + packages/analytics/entrypoints/popup/main.ts | 2 ++ packages/analytics/modules/analytics/client.ts | 2 ++ packages/analytics/wxt.config.ts | 4 ++++ 4 files changed, 9 insertions(+) diff --git a/packages/analytics/app.config.ts b/packages/analytics/app.config.ts index 3481aa07b..37df7da3a 100644 --- a/packages/analytics/app.config.ts +++ b/packages/analytics/app.config.ts @@ -1,3 +1,4 @@ +import { defineAppConfig } from 'wxt/sandbox'; import { googleAnalytics4 } from './modules/analytics/providers/google-analytics-4'; import { umami } from './modules/analytics/providers/umami'; diff --git a/packages/analytics/entrypoints/popup/main.ts b/packages/analytics/entrypoints/popup/main.ts index fc1106d5f..6245ad6a0 100644 --- a/packages/analytics/entrypoints/popup/main.ts +++ b/packages/analytics/entrypoints/popup/main.ts @@ -1,3 +1,5 @@ +import { analytics } from '@/modules/analytics/client'; + declare const enabledCheckbox: HTMLInputElement; analytics.autoTrack(document); diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index e41497a2b..b6adad92a 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -1,4 +1,5 @@ import { defineWxtPlugin } from 'wxt/sandbox'; +import { storage } from 'wxt/storage'; import { useAppConfig } from 'wxt/client'; import { Analytics, @@ -8,6 +9,7 @@ import { BaseAnalyticsEvent, } from './types'; import uaParser from 'ua-parser-js'; +import { browser } from 'wxt/browser'; export let analytics: Analytics; const ANALYTICS_PORT = 'wxt-analytics'; diff --git a/packages/analytics/wxt.config.ts b/packages/analytics/wxt.config.ts index 05b849ff8..ff3e157be 100644 --- a/packages/analytics/wxt.config.ts +++ b/packages/analytics/wxt.config.ts @@ -1,6 +1,10 @@ import { defineConfig } from 'wxt'; export default defineConfig({ + // Unimport doesn't look for imports in node_modules, so when developing a + // node module, we need to disable this. + imports: false, + manifest: { name: 'Analytics Demo', }, From 50d2170844a9dc2fa42c89539c9f1c8171ac44d1 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 9 Jul 2024 11:32:42 -0500 Subject: [PATCH 13/48] Fix storage --- packages/analytics/modules/analytics/client.ts | 6 ++++-- packages/analytics/package.json | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index b6adad92a..7bf6d3005 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -1,6 +1,7 @@ import { defineWxtPlugin } from 'wxt/sandbox'; import { storage } from 'wxt/storage'; import { useAppConfig } from 'wxt/client'; +import { browser } from 'wxt/browser'; import { Analytics, AnalyticsConfig, @@ -9,7 +10,6 @@ import { BaseAnalyticsEvent, } from './types'; import uaParser from 'ua-parser-js'; -import { browser } from 'wxt/browser'; export let analytics: Analytics; const ANALYTICS_PORT = 'wxt-analytics'; @@ -86,7 +86,9 @@ function createAnalyticsForwarder(): Analytics { * background, and for reporting forwarded events from the other contexts. */ function createBackgroundAnalytics(): Analytics { - const config = useAppConfig().analytics as AnalyticsConfig | undefined; + const config = (useAppConfig() as any).analytics as + | AnalyticsConfig + | undefined; // User properties storage const userIdStorage = diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 474bd17c7..eb5a41e54 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.1.3", + "version": "0.1.4", "description": "Add analytics to your web extension", "repository": { "type": "git", From 55113d654d2f809fd0a38273fc8c13a402bcd3a1 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 9 Jul 2024 12:29:56 -0500 Subject: [PATCH 14/48] Remove wxt/storage --- .../analytics/modules/analytics/client.ts | 28 +++++++++++-------- packages/analytics/package.json | 2 +- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index 7bf6d3005..4d2ceb22b 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -1,16 +1,24 @@ import { defineWxtPlugin } from 'wxt/sandbox'; -import { storage } from 'wxt/storage'; import { useAppConfig } from 'wxt/client'; -import { browser } from 'wxt/browser'; import { Analytics, AnalyticsConfig, AnalyticsPageViewEvent, AnalyticsTrackEvent, BaseAnalyticsEvent, + AnalyticsStorageItemConfig, } from './types'; import uaParser from 'ua-parser-js'; +const defineStorageItem = ( + key: string, + defaultValue?: NonNullable, +): AnalyticsStorageItemConfig => ({ + getValue: async () => + (await chrome.storage.local.get(key))[key] ?? defaultValue, + setValue: (newValue) => chrome.storage.local.set({ [key]: newValue }), +}); + export let analytics: Analytics; const ANALYTICS_PORT = 'wxt-analytics'; const interactiveTags = new Set(['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA']); @@ -31,7 +39,7 @@ export default defineWxtPlugin(() => { }); function createAnalyticsForwarder(): Analytics { - const port = browser.runtime.connect({ name: ANALYTICS_PORT }); + const port = chrome.runtime.connect({ name: ANALYTICS_PORT }); const sessionId = Date.now(); const getMetadata = (): ForwardMetadata => ({ sessionId, @@ -92,27 +100,25 @@ function createBackgroundAnalytics(): Analytics { // User properties storage const userIdStorage = - config?.userId ?? storage.defineItem('local:wxt-analytics:user-id'); + config?.userId ?? defineStorageItem('local:wxt-analytics:user-id'); const userPropertiesStorage = config?.userProperties ?? - storage.defineItem>( + defineStorageItem>( 'local:wxt-analytics:user-properties', - { defaultValue: {} }, + {}, ); const enabled = config?.enabled ?? - storage.defineItem('local:wxt-analytics:enabled', { - defaultValue: false, - }); + defineStorageItem('local:wxt-analytics:enabled', false); // Cached values - const platformInfo = browser.runtime.getPlatformInfo(); + const platformInfo = chrome.runtime.getPlatformInfo(); const userAgent = uaParser(); let userId = Promise.resolve(userIdStorage.getValue()).then( (id) => id ?? globalThis.crypto.randomUUID(), ); let userProperties = userPropertiesStorage.getValue(); - const manifest = browser.runtime.getManifest(); + const manifest = chrome.runtime.getManifest(); const getBaseEvent = async ( meta: ForwardMetadata = { diff --git a/packages/analytics/package.json b/packages/analytics/package.json index eb5a41e54..f13ae9b59 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.1.4", + "version": "0.1.5", "description": "Add analytics to your web extension", "repository": { "type": "git", From c69e99db3f1f14d655c3c5609ce95ef1131b8ad0 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 9 Jul 2024 12:33:39 -0500 Subject: [PATCH 15/48] Remove wxt/storage --- packages/analytics/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/analytics/package.json b/packages/analytics/package.json index f13ae9b59..a4aaec6a5 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.1.5", + "version": "0.1.6", "description": "Add analytics to your web extension", "repository": { "type": "git", From e4886af90a8ef84c6223b885da21a72df245534d Mon Sep 17 00:00:00 2001 From: aklinker1 Date: Wed, 18 Sep 2024 15:00:46 +0000 Subject: [PATCH 16/48] docs: Update `wxt init` GIF --- docs/assets/init-demo.gif | Bin 140518 -> 139166 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/assets/init-demo.gif b/docs/assets/init-demo.gif index dda435d49c7fa7a076edb6c24d6feb9636c5417a..bdaa3b4542409fb33a79862d1510ef11e303ed5f 100644 GIT binary patch literal 139166 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

3xAqLX6}x#NsZ~=aGa8T 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

lN%Z5B7<6Ng{^g zKtE1acqUptZm1k?c=mL26MCMpfU);7$@VR zdq3Fs(}g~Vo4u>Rtr4kDR16@hh*ZOyrJt;qGo^1Ew>^RB;FQTF#LjeUiLsj;RVH=> zMWZ*NVG#7E{BOE;q8kgi&+DP$FXtoQ9H*nlH?i(8?_XOi2>B)6a1bYUWSHr#@8X4C zFA#_H2s@VOvtki|<6unzaRep%{D5)votr5FaY_@}IPg$WJ8myKw{5?{@uEd*u9+Xk zyi?*1;QFQ=Y-oL5k@y7G(*?oHh1|UZQqDuwcmO~BKv&N30Aej0g#P7>r_J0{&s9zx zkaZ>gLL?}hi0!^v1C3=Ho?_U%yJ4GOSMOZTg#~d`pc^BI)1V34lo3ulqW^i2*3Ava zI<5;$OXtr~S4OS)7If#rtGC7?=n;M|c${|q^@v<&7@W`T2v*|m@VYYpnDF7Nw~mH7 z3Tzp~WO{{62n5|j}{YY(P%7Ro*X)1f8Pj~`a~2D^ zu0*HYxtZ*oCaDKbd^o1w3fevMPQI{K>wF?V^vRnuX2VuOT3LxI;s*5LV%qiZ;C|*? zOFlZDhQb7)k3p}sg-p-JpFhB^@2jP0cRH>VvB)<~=}lG|rLXI+o-gfu!fTX>YcM=p z2*J!zL5fOssFyh97(=bdL`CcflYrr+@1?O437>=gidhq>eo3b4FYV75g(@ZED+62n zU3+iVa3#H^pL?{2|>ty6x#u1(mm9ZNVuRS_DCIHvS{g169jbLk2n}gpJJJfAbQJV8dJE-m?>j7 zqXz>x4Q7*FYiGm&PRVmjK7LGDC!tRM_0xOrcK_Na?L+iD$M}YQ8NU;gh7F~s#M(;$ z?vqh<{Mc6)yZV_ z{o8|d@%5VHea0!wcZe|`(n*m)!)_9&8QwBGR10ddE{{&msQt>62%L16B3 z9Xo=azbiS89Jl_d=%<{0$ku+8(NK8`>_c^eiaxvy z`j2tQ{E}ZdQ6S060maz3iD7<+xgcuoAPqWr8&0Qv&f_kqfAs!d8I=ItzydKq{Fbf5 z29|l7Y^2%YWMRZnzNU|j;4s}$4(a5ujYu#W=j1O)i0Q0G(-~(SZN@~j4&?M<-rXb# z4Yo=zxE=ANRwhs!Gll4CvpS#EL~uNDwXt(X`zrB|t%{7fpu3$8%Q~CuW;wep8n8&* zu8D?t!gxv^FL$8t0haj_f$rLU>BpIOdS~73jb+NaBx<^3tFHVj?2@>2C(dhJwjF+E z4=MjZ*$&J7)M@2(@vHo0F8RJL)^1LQXq@zMmwdmak}apo*<5)@vfqKSlCO#EpRbs) zD?uQYfbeh4ua#BHm8&Cs6g0k7ObIJ-U)6fLq%x)~mC&uyPF2=9%T~S8t=oMiO!u2W z@Vc~E62mD3n3Drau<=?);K*=s7VfGEQ-zI_ zm4lYG*AjHJzZ+aW5I+0esJ+&pD)K;}$1E(sPBLav5MCL1P#a z*TG{g-Xs1XQeRljL8{k5QOz+Go`X3gsrNeBsyVy%I$wx#Y{xzyBruk!xVYBpAt!{M zM+m80)VBF#dUry~<;ksjLmduw!G4>3*u?I1uf?q&yJIF55tZ5a~D{rc?wm?mcQsoQ_YZye7d>NqFtBCfY<-01JW z@mQlVH(C57QE$0_EN4tv+@OC{Gf zwMaDlhDE!Yd#GAiyGClLMp3&~W2jc2hTja;*=pCj4%J`KZU`J|xUAiHZK&~e@>04>x;V$7uTw43|2n>_%T>d2++*yfg@mX_G2FWT+LG@3f8tvt51F;=>B zsO?>B>(f|Is$tuMp=RM5(tn3~Y|r*O{$>~;Fs+dp>Hz;&ST_8F4i&S$Sps8jY+v9F zWF63~c(L!=gTBX9KqmVEV<92d^})k8XCHm}#V`)AV2z$1-C!2S*_Otdh{>@K#+eSu z%;FmHheR}9A(*R+Vn#h#v?B2TbnTRO=oUz1QV1vyGLYdjh@oi zT{gXW=k}?v+n6fUP$(#Ir9V!S#}G44V3>=W_t2FkB`Ag8)O5Sa?HSjj=sU|Ywr-oa zLd7YDJyaJkVB08I{-XQl_;11OxYci`s^1etPKhGRH)p9hAvd7=`7jfsp<3%Hg@1JG z*kIPyP-uXPg{!79jFWe2M}<#EcId{0?Lf2d;-DQ5-?Zy}?EjbJ_;-iJa7GF@!(upl zY`~UFmez{LxFs$<*E;E)$rTNj>LeQj*9Vc;^$jj3LK z*;6B($YKTQHkw*{02&QwsZhZ#*S^(Q~ZYf=w*!gAT81qhPd{`8MUt z){|oWs`#6Kj*s@*&zuBkKFbv=z%>Wo!x?Lpv*1+o5cFTO|G;nTt?VZ_-NRVxw!)vi2ahYeWogx@Q^P?x{)Tc%7B+cl#He^| zvqkz(h10;EXETo3YCX$C)n~YA_|1%5=bXdrnZdcB0f}JxaO~ct7?Cb$i^zVc)g=zc)=IoC;d7QeD`^A+NR~mlf!e-u-j%mlF$q(-E8BQc~hggSb*9ZY$ zmDv_Qe2``TcU@$xU480mFG~w=O6pp`yvwVL{~f zZ5CZ7eqMSincqlaMTg;8CYwh%h}n%oL{b%EEdPbGwXcr*X|}z%@N|2r?A}+iQJ>7@ zd(V@dy@01SY=;6Z^6XzrOxo&P+*T+>?w8hgioJI~&W1Ca8dd+>V`6j;wDM=>|QQZ9g+}?K6DCII{9QAqFQY4w%fmZ&bpWCFN#4ozf zTSRvW@%yKkL;iFJ$5-a$D&iHBBU$Gxp?N^vZwYH^-sZNcmk3V?*pZLv!ID}1F2*B74&z_7E01OFyi%q8C zbb(0seHxa@-9TqxM`SDn0Q$5F(0|}Jsv^fhZ`lC>6XFvh38EV#Bg}~c)^Qeyo+_Msa-0ULB*fbLxB9xaTcrXNj@FN(LS7n~&fy zk18f5BI_0f_l`@vQYu#|>y~sa&#My?jo3~)x8@qIqY_iy&-VJf2un49*9^y;pR26| zMcd`2>hsj{y+l*D#YBFYnerK+pBLo<^>SF15aRsi2%cFPl)uyU_d)NX%v1)2cUraOr-*-Gj(L+$e`FL(rk-5hHuH zpVWhK&j!Mex@quxt*5tsKd&5$-NUh#En2?5N@R-KGJKQ#G;Wo?hB>>*Sc%>qEn8SC z_+#G`$LEljQ&=aV_TJpS%%SLhVf~q?_mutt05W%XSMJb$`h8e@&mS zVlHYjmTGB1!`hZ{Rp*uN%&k*TD_oP+=c<3+TYUrPJ zmTj(~1g`@RZ~pT~pSz%<*b%n65e7RQGF{P$vC48N3{gSq@h~2NU`Mh7rmi6$$9z$I zO`#^zS5VOD{>1oOL@-y=7WZ%vTzZ)R=BRUl^4mdFV!UB$nmo*^cp|3&qc_Ltj|UP$ zU()S|P5(S13VtFdbC!UZBRUKP*6?t_eg0K85*9R%r_)@fjr(^S3aU-QIAtl|MCm(l z{mB%Ta3WK9lc6AmoFX3A0lFWH1}EX^)Um{D;mkyCJ)SPjJJoQWR?@hn%~AQ5)p(m8 zg~|BRq~h8LqpqX7;4?c2lMyC$RPK4oCF;Xft(7;G~jB3vY92 z2kF&trk3iJ4|q7q_%OjspZw%mOb=fi$=gn~c8X+2=(0Z>96n&k_ZCRzOt~B6qzHm3 zN)zeC(H}0Hkm-`9da8o)$pKR_2ziV~+g3*C%`Z1@cqC)*ZW6OCuxKzFS|N4<#4I;X zfc|s_Dlb^W5YmnyX#jS1V=0Rz3vZM0gP65hjTAmn0@Gu<&o0{|xq>Dj9H=M>4lGC| zv6gqlpD5}17jBygyh++Qeo7P?&}t!0&Eatf2MUO#1Asj)Q4+b73&Op*_WA=FN^gS( z^JGy#AybhmxhSdS1j4h=DAR|tA3?0rB(}y~7?S}cMA0{qief_$Ss3RtLER*_x2V(w z>d3dse)auijp5b&`B2$+Z$WZq(MX$cu${O7hdc#Kx*itPVo8Q{oyEcM8+#&!51>ND zovK0PfZ+zpo5uJEm=*e1acm2uKu|s#LyY2D6xmaiZa=lkS|4MnIyp0@L+1T*a;p{n zwMKHBMU@hB@0L3g&wd=e2@o4FT(%LQ23l|2$Px^X`!O8-kQ1+XV(lQG}0X31W%xu7zQtoXLB(hbCA^E5QA`^^Xhrd)yhg z4Pk!w6I0W{4WDalM2EX4D3- zg#RALF)3gdJ8b`mqF~Alr{~YmDRi8^rkp-|3VERj6|xh&avS>Y3zLH)tk*qg#O|XBd6ac1(hI%I11_#P8@wZOY=cLoY^l zz9$m}Nj4CHg~b$BcERvJWkmKT_djiH(J7O8Z?zndFtgf+92!{8Y7C0X3?trNB`b+= ze%0g3o9VzYl`uoy$#fM=Q{t4PhTETG7dr(|;M;jp(u=Q3m|?Qmkr>d9DhS4x!&l0{ zA9b5KBMdbdamdvrdGVP>*wTwS5r#MbnM(o9+wex){AN286l6f?cM0`he2wr%#8T+u zDcr9QXlOfZAshLT8Cr?qhvmV1@RGq_B`2=P2O6&aYnu|t68zlCyD=izn#COV%)pZg)wyJXOey_;Z>C{;=~$dj7@S+!wo?S2K(s*Q|c39|Uc*@7fUHzik8~ zZGJhm@QZY7++Ui}6$ z`MMwd=@Hcq|IUofKw_?y4J-mvHSv!W4`Zbl#<%dyYC%4tB^d_qFG4*5Gj_{oHjaFk zu#kVm)58!Lp`C011WT%#)~fcN@9AZXFzHmaR1wu==s9Y&Gvy!M%MCT_K6saL2yVx; zbB&sMABn_$?&?vs*@+YdAIJ+cfx*_+oCd9IwYIMHZ6;*)auGUJ(pKM$?Q_`&|J>WdMhG2QH|0+ zocDU51{BafL2!t8WJR{u6@>;-_}6f}lPoUDQEnG}R%s6XS~fh%&Q;e(^d`3ffZe3|jZ{q*acfjOd*Vll&ET!tQx>= zFzw_LouC@f7GllM?w`Ec6c^p==OW_sGsqd!>2xPJG&(Sk>#CbNEH>JI{kw5ubWrbV zBcquOHZg;Cq!D5aR*+M2;&SkNLikkgt=@qC9ofnDE`T8|V{z3lc+}q<3+9@IQT=Gw z7HscY?`$0vihR*{ng+&TtA0CGVJKh)KxO=Am_Gn5d=HkUfb|F$AsR|11cLK%X3;SbVXb!5MZO#h?)#m=WlO1sKTyl$7GM8s?7%!d?K(Xu$K1B$xuk zA4e090R^mj2~8-W0GBjkvbnD_p#dVGfN*>JJV!0Llo+{TGan2((Nta0!6e&0cgw1G|KqL<()tl5zj| zRyhsFcJK$05Nj_OzyLyE?N&NE!H{q|SsVvDjx!&qr=pF4G(4P#6nod8N*N1Okl?hO zBEO^(m<*us@Bk7#rX#maz#JKg zA|rXopa2q(!0o`(y_eLUG+k1MP9|orF#x1Xp%Uq#1b}?)+67H!Cms+255Nfkij+P< z29&SGK}g7~0ic8ge2xKrx}}y=VyU={%ry`S0Hp!9SxZ4NF?qkDH6{kKwASl9@h||5 zC@Voi(XMrxv@d~Ikbw$OGYK>pj%KbP0P$$BI;9wlP8TEr(%5OngtY7uB!ZGCppn>L zf?yhAFBzll=>sOxnIx+1S=sRI}eZBNXf7*!FwHGHaWAQcSyGO{RhZEW&q(7L)5=s zNev~@?i@gJCIx~A(g>+{@o;*NR1x=<$LbIl?S!agD9JJL9jUN*9o7&7Upxozux%?S zX=O5v;EfI6iR~Fg2F4XWXzWxIc3=R<8k=z({_ zi&&;6Zvt<(*3jh@cQ8GnkBJbrF5kmn)>D7ByulP4ODQiU#j>DNC$PY2610mOi2r>b zMjD>I0hFLS|MHbDyzCco#-fwwyZTE7@wFl_Gr=@q?d1`cf9Oll5J;!snF|<>hd%;x zV1(3k3IH7s^FkM1wM7r zi;s=ZlD#T!C&2iU_OWKCc65n* z?QIW#t@1&dQu6xuM4Q0mH}lC&o;=^R*hEcO^hO#T1^BQx2E)>VdrD5f^K>=CzFBK! zyn3|GH8HI{{U$c6UFT`Kbko~kfKN>3^h;b*+>`PW07`&(O4A+zH6qs$0J=AKV}9%2 zw7Gx-$#ZaB8!CRY;K%UuwzQ`=u043a4sy8;J%6@JV6cjb93epfqXqhH`2c3oXPvp1 zuWEP8xPiZyw`$;@cdtGt-c7nU1HD985=8gfOIAs1(yn(Um6w!pbkZnxy;;!fT2940 z3-YDlNvF^-Aov_)>jitX7Q|ZZzSfH>B^vJFI7S~KFi5TpW4mkndk{L_zh)DsuGn~}WeE`vdQz$)#$`WxWhO#= zDR#;E&Ubfe{fP^3I1tDhhO=GMy z{Ko(HWvFqJ*-Wd}RTE2QW{U^W+a0wG{0e7>%kGwlw!Q3S^F@yg1z2+x1%7<_FjJ%b z^~1P7zyC659*%M=g&z)hzy17t!lB+qU<5Z^+Ts!4Y9>GMFe&!Y*W}EDhHgp zl{(W(Dkd98+pM;#-lC=@E$4b1Z?Whl(up9Sp~DnI~aJtg@%wB=Q)? zce2=qK5FgcHjGcRFE@d2e+uQNWl)q06L7l~k;o%iQ#o|R3g_@6 z#;bG6Pv_(ue;-Lf#h&_o%TjPXB-NT&jgS)+*8RSjLM>yF32Y|%wMod;`{c2uNuK)I z=aT|oFV^2VXQ@C_1-I7y!J>6{2Av{VO?cev#MRcQC7D;a&B8hsXZ#CCCJfL)5hgqz z|AiaBI)@hVYSnKQG~sq7pLxdQ>IZwx;@;y0A8jtpV+bnXF$u4NA z@7y25b1b-Lzj z7g{8(Lf)UB7s=HU^hoDJ#O=6GzBWIXr7G9I@FvlST`H(&5;_}yQj3i^aRoycrZDue zIPrB;v)J!e+`z_dg{B|m?&Jea{sA!mDy2EXoGCn%XN3lCWRjr#F5zy%`a=1@SjM~I z_4&fEOT`L05bil6!=DuU^pER8KXZfc@}ET13LG?<>fg)Noo=Gud|Cqj`_G=vCZvlw z#Xy{er&OQ8E!3kMAhE?@?xL27HxJ4aQ2VZ`m1R9fC?|xB#*a>0;*6zS?i^oJIOK)* zHr-QJfd?OqotFj2tzD60MpV$8OHGohzS~pYLegw}UXtOONVZPfxpoim5zo+qH-=vxS5PDiTAMun*8UQ&07)(KIei;Axs}*~c-(GJi~2 zXF}+jQ3_`b&}%J+IU?T1cF`2hQ8|#ySuyYIP_x{U*Aj{kpQ-LR9-U=lt=yvbN^-q6 zrnNA*LrAyHeLS52HCvXmd-mFca{QOP@oU?3f+-{M{c2OjDTy-|}$HHZc zwS-N-umoYN00#E*T4OC`wx~O>ej|mhyxTfe;zvl$r<9TIjKto*nxb@)c3&;i{}83> zv5gfatZXslB8~xk<80K(ZPi?mkN}u4gc?P1jg~a%)X8lAbwg}#lq6wxA_EEFD|4Li zr{iRMDuvKcVrD6g4Rn%ex=hbGN)!kqGM$SFq#8tr7jX$cf$H)=GLPIQ-Qz7pG$4(3g-nI)gSc0Iz{BwK2|rrRz#@{>X9 zMMSU}xkB1tza@x)*wVL`ryLP9W%jwR|1s0&htj`XFY4h)|Li$z0^SuUOc7wrkmvNO zvM}+cL?zlXr^kzppg{oDsgeTJ&(7LMNIDqqXE}*$OUQ}{;#h)uiD{OnU?r^U9k;ez zn|5yo=hD6kzK5f2*xzt>{1{hLYp!sI_Z_yXftXFy-GSYgXvj-DIa*Z9*;hy8en1VI z&t1-Qug;02x^TnJJtFR+`S#9#eQSP59oXsekvYrc-q$2E3PKS`I~=wbxtk6oLZ2Ad z3NHQR9T5E7({l45tPz=iNmAe~s!{spTU+Goc>hy>ck?@ie!w4*Ejh65&xMl4=?=$@S>_YRti|vp9ez|=s zZTO)r`HF@k!dI1i<=PiGfwF=7Oe4i*l+22R`K z$)&rFQo3FwWmBJe-Ha@9iI5=El<SKlyPc{@9w) zxkjXyHlrL50#;M^?AfNA~Vo-$9rBpGD=ZVh}&l%1N zH*7+APZ+ejX0Tt$kj~5HeXkAM%?L%XcBjSZ^*hfM8}{BgAL)(0M1uK8H118f0Db1ZQsUxU;RBmQ3Jlt9P<+pPemr_gzvQ5(q&3RP_J*j42#f+44Fm^#R z`PXs)+P(sj*Uszkkm{e~od!68SMtH?1w_@i@{hi&F}#=9HpMlKhkhS*DrdMPbWnYJ4F0reEzgX|BhOtTJ&l~3tPI*5lId={O zPS^7NVUWe_o8^?6_4XKr?(l9aD1{p)W8cRwyRnMp6$EzVS;&-ko0mr==pB;i-!zGd z0Y!&nsRH;MS2&AHdJ(Z0dz}rwSzz^)x?2#!Anb)%TTf*ghMZ%sP9W*BB zx)pew z6?^YUC%Tvl96JEp2*Z3321|oCgfSFhqi(&!Lq-fq(D$du_YyAg@Y`T1NKok=NGTWH zR&d+%yFphWt|PG3e05p_qHPC64y}=X#1%?{t#?9PSW6bap)Uc-tm_b>i2?mc;K7!w z17Fsoq^jTMtU0{-eVV2AG5LRez)obDN(aSDHPEzo4R_6L7&ENYk*uu0p@JqhT8G9* zsVT4C91Qb|4fP@^znv_Qa@Xm^25(ci{0g_yFYC3WL zSSo=gVbG}fP%=KWM@Xp;GdaTx?JMzPZD#Jqh+siCRv_k2Fqt2!3WD>6zFXGTE39TH zNt(MM`LZj6BS?d&K1k)ym-lb2M@R*>9r?6gyk0FiX7M)izGxywi4^p$w3#!sle?U| ze_bz!+$qrFIkFW%^#+UC(cJ^EAD(wsEbB#KQ<)6|4zV1;N_Q_tOAnu`!#koc{^E@o z<1)_!UsC3k?u5{0)^xEjKVN4&WVqr9-)8dSSugZy;n7kTVqlJrgImmye)eK)8p3bMR z4fi6!Jh19>A-s<>>kI6Id7nYt?BN^iE?(hoyQ(QSciaD7@h-@tZ52uA^IF#p$ZT7% zhP{G$QXYAR8+5*VG*f=_%GvyZpvK8>#b*iD4JNvfPW*+P$UoZDrUW@QrEqll@guKX zwnK4SE2Ep91kTNIID=(~*0j;V*~hLxqu5f4tKI!-xlu8zQC6bfNS?!Nhwvu|L(ZY7 zNK_yv9$`|8HT}kza(Jf46r5PhBwd!qYsOMc2@v`~G`33k^IXgK55(hVZT((?%pvsf zEULml$8tECIC#OfY>DIzFkMjU~!&{aoUsKq31NC;@Do^fZPakk_?ylC96P?q{Hr`!~;3y zcm$ggpuSTwjKgko+Jp2&(4DK(vTms3U|HhxL5aDUwolXMzvUjvou8m_eK;Cij zP6V50tYF1~>GtmrdA6;!C<=t@5dK_g3B18@oCqe)nY|QVAKczc`x&yFkD|BwM z9Y}ET3Ehq5z=_6Vi}_+my`y*0vgh$cS2fSH0omT;QUcmM(EFP4t84tVh zIZSdSsP#|9lIqkvX!B_k8{~|*CCl#_73=5XpTPVm5GI3`rhCp$%h8N-%!qVnT>~p) zL9Ap5JqpA@06lCKP&fp$5|()mW5g(6Dw?|T(&z4?z`SV%YLQFVbup14;M|tL_0&M{ zIqnF$k1JQZSMLtokwiyW9Z#^EKjrBF(aEujbVP-=DMIsCuX{CHr$#1kUSVegvzk_> z>xO96ts%xUJ<0Z11kNC47C^Ejg`*C?F-{{(Z))za$R2;9p$hrt>mQ2AZPhrb1p0n z-+8jMS_~eZl*@D4Rd{?hez~pX;34EPH#rETirgTfb&my1nwS4h6y;{(xS= z@?NXG({b_5v2M9_r?^0xxT#P0)f7-BxU@oS5i@ktGjxQ*)FCE4+lL^qJ6Yr3>9+Hw9oL*4 zt%y2Q`Ht7;oeRvnf=chaZFc>Ic0r*3=`H<_<1PJ9_woOK?&JR`*IW;905t$k|C?V) zA}9VI{7TWW1o)Z%#R@|y`9RJ8!wM5J4ltrwVU`8rJ~S)rZ9UDe6nnPeu0pfIw45`b z7Crms)neJQUPG+!EgI}<6(WB--CJqWxlZ#dRX^I?#}_$B@bt+qcFN4%n|SZM`?6o* z)nt<8@&4LS46bH=wzzhq@+QRgRBj-A{9y|Fh2fTgPV8ikm|@NakCOky9Yy|zd+SPj z3+eialj{?c48=C4)b1_iMC__!9=)WQs3Dv|L>ZqI{HN+O$5n6P!b6rZeTLiSX_4L! z)Nu^F>e9B}ufQoKevb5anNItX7@r3hP_a1`eIIX)FsEqRRGg3xVR?yCF|V|uUQrs0 zTQj)Ntdyv)VY1Z6eg#sZgPWt*h_WkO6#bWO1*r^Nm>`i`^fpo6IHiZ^G5v=;U+G|v zFUH_gL`o3?NX3ENaU4%!lTUzjh^81)1bvMNJ)D>J$d-9+mH_2Ky%)>Isz-_&n2MIx z8CVJ}Z~NK01n(5N1vE>TLkIB*#mGy|F2xthPz@#iTTg1Ca-?Ri_>;lrRS=j5zXyPz zXel>IfHJ{-0dr)`PB*og0OoC)-laoMaMa!B1M%9o>fNel3*hzVcfMv?&q6v}; z106C>w9E~*K1&$|1(Zvuu^$|iE6@ag_0Bfr@g$6O6&MeadQ2SPP zIDj50o&lH3fU~u6*oI{nOQ(BK%_V6t9Te5lZ?ujc1J=~fL4o=j2B!`>RGu6c=tNf0 z<~y5`VJ%hw7=5H)uMIS1KZ;ct(Tq9=j56mkw6`+8f|5ZK=gWd8v_OkSowqG!JFV+i zZ+rpqXIXVIz%hBDtRR7VS1c9m4i5+D9d*8$kMw;cGeV)5wuQ6Bw3QDpKZ@93Tt%}q z2iZi(lh(E0BLyOWG83S2rNqlX;$$3WEVs>z9R!)lT}`>r61YmQNEZA_AITt@fS^yO z;E)mU!`q%rW%nmR`PDjt+L&uZ&;}6O$errf65(#b~MN3h9A=4?I9*(nA*&R(u>Fa!^ zCh0EPCEq;+K`)<*8p!CaKlB(zR7(%8&^V|6i!-!GL@htNNDcmO?18bK5y zl)>DKXgWR38kXD`h_Grzx=oS~d->G3w5U=B&T|CO!3~ix$;-GaiLqTk7n`A zBKHdJZdtev&I;ya)1`a76E~lJUX*k7?)7b)ywtQqmrYcyc)g5P`ZNLfpUb5G&n=U5 z07+0VboD>qD9F>|8q!Dt4n|GR>>x z*4|5Ra#N8S0<9$x=1<~lV^ta5J9lPF)`!|Eekt!Qu*>M*l;@4y9KfC0;G1L~*+OtK*R$jEao~9=(U?7=RJA?g{s2ef8HK6k zFs1V@ViqcTb)>90t-V4xm*&pfTq8dJO{A0#Nt{7iXHgt#Q-k+1kUULHpwTb{@j}lU z0Bk6YB}mXq=`@Seb57}6!8npB zd07WF#$S~5CxwNB(!2Rn9WjTCdPdB zL)vpjk-787=kt?{{${ca<7=5$pPhC=8IU8#fQnm7HC)j(aFbEmrS6wVw4M<)n^BR{ zA-1qqgiq|_`)i}sHFZYrq_TDt3})y40>{_M`j-_d_v^34 zDSasDdcCwzcjZx2t6IV9>mM2t7Y05xepASM%Hak)LHBYzodlbyw4HvH)S6Gwd}{{D z(4?68{#d6h;t~<7Md1c8?@*?U<<-pE9PK$q5lC!|0Xa*1jZnk*E1(6!tf*Ac(T}*9 z>8P&g;+uL}vXs>#BgSyPi|fNVi3fL$6(V~R(H~>(46e9$5IYSP!T!oaPa>G3`JY!D z2&A2zd`}laya3E+}iGcr77E!T)NY`$Ta1cI=8Uvs=K@;-H({v<+ zxPlvA(Em3e@F8dt>;{0&5BP>$c1ToRUNZgE^VLVnPekHNGga1J?@FP>n3RmJ`J(Hn zyhN)&ktnX&fc8o*M9xbcFvc!cGC5UO#YvcOKY6<9-Bs9-m6jMEK$KqYLfyxXu?Ueg zFAROJf6qGdoJ7a0<_Vk?;-Muxyaz6fQ_5c7Aag!1)i+2;h0TPgp1p&G==6TM`QZ@4 zKuaWO>*0~#{8Bho4{zW5$;AISmyB?;Lq_2Q%k{r}^%2HO%l15%`9C1vbhHBWLuvz{1mGWZPsMkG8zzX)`_)bRmssr=v|zI;`z^Z7x` zoPCk~xZ**UPNwFsCy9@g)-PVY`eKEbTpH*5O*&>-@J7eeT-V!5r_?}50K!~|NaWu7&Y%UxNTtB(WCg?y>2TC%h9VY*q?+EJQ&{Wkw!)%ah5}PCL+3Fi2%f4mO z@vHHC!0Mf>{fkjuzNQo(64iLY{Yqa!>=|jcisdsKa}UtB05cJub@<50tjk$d(;bX>5%D@Szw~u@8HH>HgnH4~-V0OvM!*ggFrtDUfAO zy$+O?*QkZ*Df2W6KxKSG>k)IgVh_8^Q*wwb)SoD!;#Z@%k)m^1C+Sj`*dSKk8AVkU zuA#(as0U*>Yza?K_om#2s-XK@WF{>x=-sU@mZ4645!uuVKYpO{Ir7=tzdH=B4sSDY z<=A6oYW6>5%C|_3l!fOl(TtcSp{qDKOjV|n01#0!|5^3{Q-4m$qWLYP717x$lTzu2!%lA9&Fy-hz;gPRk z!|C$Z>ZQ-#{I&Y7uJI|=@F0e)_i!rskzYGWCepTK$ zGO~O=Xc#enaF?FKehyD*6Rva&aA<}t{rvrB{P6R2kA1ML9y-Tka8$6)fo($I#jVj3 zU5vggGN?x;H;Ufg zjDV_ob~ti!2DLZ@H$NkicyHW!7c3DGmr)Y;YXi+xCh81b7oLY2Q2^J%;w2pk_o2Fh z{H{~a2z}}-@)S|~2op{@poLVxHZDLWEa26>k`5faUB+S#4$@uBy*oQ^4tA!WiU9&tkwn(a#WCT&A!I56EJe!V#p;H_fZ`O{(~eQLES}M|Y_X%DB2CY2>J$bgDfzzt-?9mYj-3 zoFhIj^Mz}A_iYwvj0TEtrC;ZB+}H5#KFogQnBy=?O7Q}jV%Y!6vL}bK$kR^ zxZjzYXP>6Ml~Z#d4`<8kcu)v1&*hX)Dlg3C{ewf47f4hU=J49awY%L^&lxmNzc8O& z7NJ#NniJAhh8&;1}0zylhtv~^9{*ligJqCGO#%df7>D|bHHJ=8ErZyeM$~@ z+rj)Hzjs$rNq4C?MgHc1`L$XuTNdA-W=&r>&>Q6#tq74sbvLoJg6+T+6_McCyS`k^#uK#tXUWU~_$U#n?3>2)b&^ib5 zw3VBP1py{OhVEo1ZK#tP=t>Q6uFd*I!&6F-demxY#oafQ zFVEVHG-wqZXz5sQAv&C%w2KdVtNZ-DExxhUNH{|GZoA7u`+v{Rw($B}3v+o6xy;iN zY>(T``kVb1I)aZox;~$`0V9A(+PKK0ub-Lg3(WK7N+0)0vvX55Ehs!eFoH zaLM5yAruxJQgfOPkAY5CNnBT101sSP?!xU32^-lPVW1bcyY&0ZAI5dp-R;(8>g1_T z3N|1K{3-hf-EGd#JK~;)TD8kpwRJ8$?>&CrC)_ij(=+7UGZNP`cDHBZdC$~B&-8H* zRrtjlofostFW$$!n7{ktDs?AJm3%;_8jxc0pF+d^-tKQre9 z38z6V(aGQAULHR0QKA5Os4xFn0r~NXSCURKj$gJ0@L;Gfe@~+M0T8AvaEr#FO6YUE z4#H4?5;R^3d>^Bci!ZnTkMMxxW3&Jc5`c%w$3wl)PzN%LD!JE^6QoKWkarnW6akxY zg3Phd05VJBF^UHZJE0(Vu}EhkP)G!9&U8?s!GeLjOqsTv%b@xq`*bN--q(H9tnGlvLglUqzlCDZMP?vyhCmeCPMX!iSy|C4bx z;+VotR!%xEj~i^c5A_s2XwM0Z#Gtw!Pi&Epb8fF>m?;%EY0#tsN#ufo56aWYvVG&SflHOjn8t_%-`&!7i! z1b|xtrY%E(4mb{=D|-j^)p9Nu2Ee+CN3{{Ax8vU|O-`=?SlOvBnbyZ}3c^H$9mV*B z)`pG|t^4f?-zufNJqH~7GWk}P`1T-L-p;mzw9=cf#LZa?-&+Xs`JGqN6^|g(1fHF>m&<99qQwP}g_id2fm@^eEnAMPbnr08kVL z^#hG~?eb2Q#MJ+N)a@JAM!YnqgYUbbnIq~(*Lnr|M|0vJxEb7d0nMCt*4*>(GzHFK z=X+hG?8Cr4t{-(MR3z}F7GY7JI;4b~V_-i%`n#x#2C_B1n`>EU{Pd}YabZrD3U1Wx z*PwuF62LQm(X)ArYlwx-Pn;Tnh1UqyMIvgH3|Tp~tnaqKG4uLi!jfVDNULvX)aj!J z2L1FeGh^1zA+h}V`r-y60L9e1V&}zm-&gM}j^BIDUNubl1kT64d5(kpdGV3szjuQT zpEWR_Zhu;-i~CTni{`;WX7H#50E9yst%L^W;$Ek`K#Wo$J{su4DbzBFl@kXNptJ1b zC(LmmX*9^$4S9lx+FS&&Q{YDNFjXAej2m*N57FBPQNZ=%6W65yi&hAT0CAnEI#R+x z+Hi<*AbjxKL!cDOh+c`!ITJWSDO}j`k-8& z)=E@Rljx7|UBDa}wZYVXxv|d@nEq2lD*+-BjAgoZvzL&`OE4u0`&J(+pEe}S2`Z-| zOTnn3x&g+04}C%&H`Aq zF90`)sAV#0ffi5Y+&PD)xzr-fjxVD%;HWQ6g#)59JdDo&ATj3PNs>kUub} z4kAmUH86mVSVOaOGM&J9=p%+TG8phhf(%=TfZmB>B9TC*}b z`2KqTr^%q+UlfJGTsLIT#b3{-Hp9`o9L+#y08?YTw@#Vd$07Vkzt}jzrBtNVgfmS0umAM6ki3Ak?(6i@&S0SG~ULH|yBt2<^D3m&OQgq5X!fOn?}-R{FOM(*lA=E!{c>`Tf(R$j z=>hDO4E??P`3F6h5EGSXwMEz}>8SD29`5xr&+@RQfry|1KW^@UNPu9pu zHx58^j!@T)eYa15-5=sILiu_Q@ob@ZnRSG593W7+UIQlNQ(p@CZbVntB+?=4Pj z$j*wZQn*Cg07?BazVp3`C=cme!W~wi{Jo381HPg^OH@R=uu437kSb}Xo*T=BO|iG9 zoDF>KRLaHyI1Xji&pMk+u!%vvvWMs zFbr~TfW!2MI^*)f0xSO0HgF0%aqBI7Y`P`(OWh+yqpzR3ecKp8eHTuB?DT5%)e?5V zme0-D$X#2&9&JITr{+ShwQmbNyK(y2LzK?O{u8hDB^$7}{xwsH9}4X6>G>62Y8DTR zy^1Y;kSnv*6hn^FLs%n(#u~*4rO%>j%xNawY|MShSk;8r!L!+f|5~c5(JIMm4M>@n zs<|J$)^|yQ+gr6()c*-#yONb_x8{DxuS{GO$9+xHN>3iv>oBKZmZPP)IJ(JGF+)~A z>G+X9>4iLM4~RLwdy=w}cj5>9)b2Cu5;=UfCFDv4tPe+1g>TKU-C?WD#_)x0TR<7v zPno41TH(IUyUijc5?{*RVe1oRTB*E!w|7Cb&S(>sjho)-OG!`U$=a0`->|WyJZL`Y&c;UirR{`I4mQVPl)qdAaWi=6!!Gxj5|C z%$dDfWBp5!`;yU~KeU2TS;=RRe?P{iVdW2Lsn04`?cF5l3ef9sVwgv|<|E8G+`-1n zn+yib4RFRAgyx|Vp+m$!dc`fbU0-`?XA3$$!QG0~T=jF~e6Rj1G*^xeVOST^U}uYQ zKpB@+VP`Vmtb89L1`a!GJ7}fL#hKLnhz&a%4SGM6-qB+4InWn;fz=(&o{+oBUGmcg z?%sUs23#&oHM1YFX`H0y0v4ZkT-LYkOLI5{4oRJWXnh2AT}tymWe$IJtveF>m5}2& zi5qyp!K>&Pj0NCm7U*WU|+`6WIUf5a%HWs(<0J@B@L1`&j<|gXf_JC7>X~sv77{Q zr5IE5xw5(4uxVP>?tE{{MvZF#M$|OxVt1a`sWl2JHW*G-{C}E^H=Ox>Vd-H#Mgq5H z-%0N`=Z^RmfTE}{Ye@hk#zhLcAV11&O9iK>%ScH|WNDT0aJj0pi_di$#(INlE51FH zi#UR@K7NP_o}!#q^=08UYp(4@lR*54|5$j)X}+6-f}@s_!YiS-+(yzK3(WD z-%WIH7QnQ;Q~K2+epMf;8o(FvsBjUmQ+F~%D}Go-e*pQgnynupmXsedn+Xz3*yiiC zL0vn+IFNcarIq}8M0*S^uFH#b_avoOW9fH;%MN&%9xVe&B6;&7<5C2-}rEDn=9g5Ci0qb3HSN?}D)ydUYN*|eG%t6IAS{Y^@l(VYSm261 z>y@|07FOQ@MazJ%u_L?4VAAaxpHn`*n_f@Z)7-#bbd$4fjkJ)6w@;#*^8Ra;UlF59 zx~&Q}R z`!Ncz3QedY`s+48dP$fIbC^*X96d8?-W}3mZYFC>%?NW@h2f=udb=~uLW)CE|5)mf zNtxXD4$+x5$1rHgg3DP;Y0jB6ldo;_4sP+QBKHT)YIbe%Bgc$Vb0pWIUrXekR+I*9 z+Hb|0so&u_F|lx^AR!}!EApD@q{zOf7zKRxzY%gi;NL0{qSY!a5-nQxzOCkKRlfV8 z*1%|$skB_rJFCPSMV(u8(R$XE-|kQU8@xY<@V&kjEgkoECpyEm9|014`pf5>N@f>R z2=07xICd}+)w};9B(bs15>E#4u;>vOis$>6Dj$V`UmxH?e6LEl{0>_i=yCG#t+Mb= zPi_k21Ur{ib1G!Y*XuWzoHn`eIv)DIGA#~b@RKeSb|mqU>&0gJIic>anGuWD1mLye zYOz%SREkSA0{7Tm`0()TDU%D^y%pLoV54qU3ymgaiQxAF75kb2x{bWFk0L`<^`{4$ z0ds#pR3=-MRAm`TlO63+2;J@N#m@@r#)0sHLBkaxGaJ*w{DuVk~@(-UH(FYk{#I z$gw*{8VN~G;H(dVXY40) zXeoE2!MfbqDh&p$WKD$}`5nQlFMyfCi-2raEhDr3W1ihYho3yS_E;nC_VK2pFk-Vd zpXOwv%q!sB2UAu3Qh75U{7mUHC=l{>PI>&`xni>p#qjL6 zF&)u2x9`NA91NJPU6%BqJmyBOCVkakecQ^Ku`XjAyb@NG%ZgqOJ zVH@dTiHH%O)Dhp}k-tFZ$zHO~=XB;cQiY!H38+oW9QN!?e#$DY!&;So7$aZ-}%Ul{#am)MYcP2D;98_T5X)k#AY7cb$_WA zecRK#+QD4m4>y8gQqg^r(0+1^Z7PyNlan1jL){(#EQK1}Pe|Ys*0$A0l1`BJH+B6j z0&H&^*eCm#=9w@@3vejdpHz6nrP_DKU=vu_K@^5}C-cNNk5>2Jwp5f<jaW@6ktwt zWwbf;s2PGjyp(q|932faCFIgSCkN4Pg;UaWbAfK=Fn9BeplG4H@LOy@&ij)=%3d>L9{@7s^fGqHz?(YdXsrazlyd87Kj(`9Zz+)&m`^lF(HRpy~GS*5wz#IuL# z(RHx5EY(_N{h=VUnblF}Wt(oLC%yu(uh6mU#*MkqbaxD1Rl zhxnSq6p|=DI>YSJc2C?dR-B-M9ii4`Da=DouQD-z`IPUecSX_ZJw&K=XOB8Yim8d! z;q1kirJSKKE#&DTM5q7{LjQAm6gGprFfS@EBH`2!wFz|wq~3o7@yEljmpyUiUF?@x z9QY!>dUzqEGkrLSEx|GO%;rUQ^VAUE7N)uIj-Q$jYYIhKf7qbava6h;cWv)EVjJu7U4I@L7 zPh~kcLK8G?(>9ab=i5TNTojt;?5yg<${-?*uEB@U7EH$Xrca&%#d$8TRQAWRW0URa z&ZB>!ZbVS_)DV{zS3*_E_x9{wiGBfm+6}_u@&!@Z@N{Lo$eo@(`yL$xx1I&yR=|9^ zk%FY@rr^F~k_vXIl6yIXp0+>E{Kv=$z&BT>Knk&!#=BC(>oSg;K82#8{!W=<^N<*7 zMl>ybG66Pv`^u{`i=ykF#eRS0u_1cUGh|jXBuBV?m~I!cC8Z2}eLh{7kJsNZO-XY? z!$R@0z)C2!i3bOg^cE%DfF|N>I3E!o{(^;c<}T#N{GH)T_^kJVC}0l8kv>GW8=aGBDEac}`Qn=7?~EXGu&rv6 zhk zOt0GK(U4CU@KXCu0jqz`2qlBQeJc{~WO0Atl}Km$i(3tjfEM^XS>d8$T9!C;lgPK3 z)PWvkhgjo$nF2jiK&nb6uyMZthG*KB-B>J1sm7WqymeL-R<^ORWV{<`%QDHjFV&g| zvd``f7lK%p72UzB_*_U8$MSFI0Hn)OOgmXpr&ICfET};YdLD#}PEC8Cq7)5?LIT;N zlXV3AO(`jyM?f4a1V>x_O0Cb1+!i|=G!uYyo+*78mXdODvspF(C%`jqpLOpsLfSml z2EfvN3fpz`8bJmaUA=czw%`{n*?7z^?O*EsbX7EcSf_8x48YR)9ANPXpe3JXtjXsE zWU)634EQB6_=dnnmaEeSfQ8MKFtQUAqW?WoZ*= z@uEOLKE>F4)9Nr)Pr!*mVUEvef$zVARpzyl&wXDt4Ho+k$WESFPb5mX)(dA5Hxj?| zArPw%W-|NkUa7WOX<*Cy9&F!|g{I1{e)cW;K-@|MY}^8%<<%AJe@HZu?&bVoJ!D5y z>wX(63MYJLHAe~Gws_(`- z`x(bzA(@A%cY@go?Ckp6!u{u33cu2-b}re3{I1#g^`8C|^J62J{xC84_k9`t$01)Y zeiu8~6^DiGpF~$^1c}Q*Q7xiB?DXi*^K(CS#cNa#KL7V$ zx-a#XFIl+Zb9(N7yJOv9mFquEqkfrX{L0z=DOSU)`o=Rp8piybu=x>2yNUnJtSIOI zvXR@j)wprx%%1*B;5GAf58r){`83na>WfjzXiU22yqlB$zU#*Re;a!iKR!>{5wDB? z?wWq)K6m4q!*4I2$fR@S-Wk7rOMm-q^l*@g2uft&%in<;zk^=>##n{>^B;uD9fWDr zoWdPMI2_z?I8ccO*=QU@mmb8_M!D=~#El-r&qXEFLKW)|Zo&?U{L#LP2g#?Sedq^C z4u@$zhw0*KDH+j>c(X&#sKe}MhdHB%x3Ug1&7%7!5A$JvNc=I}AEGmV92S`UDR%gC z`zfhV<1owTPg&`o^4HO&`iH5te=6qw+$)W`yBt-v@rTTRROJv^ITuBiJ9_AF^k^=; z`gPPppQF0cqk1{t+S2HX+M~yFM@@6~jW46>eu&Fzgd?=dFKhq2gS#Okx2Lvo)Daa| zau9nH5ciMsxMdXmoPV#C|M=&XV~v>Om#~xK{Nt|Im6B%1J!U@#&Gv^zkAI#!89|+l zmBy!u$3Lz;R`rQHGde2GkCzncKp2ofR37gwEc~koL zL*?&@+UUHbgprKDjP~UOs!zg4*gx9oqqooEPsabQn#H{^`?t#fZ#^o}{Mld1wSQj@ z{%$e;ZjAo>_G54JW&GD432RUPeVzNaD|d5k{oh}U8$WLTrXPfVJDAT<)~!C46alDzcw$VSl*Vj%jEGI zuM^a@9M)`6d|&JIENo|cUumA=K3aGx;J5O}HuKUJ(fL{B_YDpj)9*A}f?bOI5B7Gx z9-OB2CBwK?0?R@c7#$&#VMD@myC!22G8^r2hidCncQnGkfBSRBw?FHHimY>&^q1M% z>h$29BlU0dEk19bG~M|1=8cC#iruT{EjzS<4DQpxCz^Yd&T`q*wdnpkIXd|HWBEweU^&g} zn%Ru5sbIiAg-%QgLi^AS59sEtWTtfG_(RbCoe~+Mu}ptBh>i8if4nm?g7#sLG(TmW z>OPdrRh{O0pf8nZFKLull}XDwZz?B6GGNz|F7TQ0t#)8(sqqXk(f%V{Y-1_-wt(mR zh-Zl7wx&#}YwRB{62o5GgpbYZPK@jwzlJW^yFuN5yzekb0NHytKE`Y$y5E7wRVEz$ zsl6M`t}S1c#^oRb^#paxSLe0($v-Tx)ZV(Dskkj)Q~u9Fq4r+vQN2U#e}1>~o&4Dp z8|oXn{VzO7_9?Az-X2zLYX9i3ls796NDgl~>i*Ky&#n{r&`BUpxn*2(GL1{PVqdAP zgj45K`@6^(AVk=$F{oo9cHtDn!%0V_>&u-umF}&E=PJ*4x{pnV=1K?_E-mNNFn8RGdTYE!C%o;4NWYIf^}nsXJccg}xZBu(o+-8%D1cQXF$8w+sW z`Wy9Ck+T&j)$NE`OXr04p%AW5o6{N&JM!BY4s$N%bem;P$dcKknXyh$k))m+KS4~Tx}d?vVUrNBx>`BtBSj@EklTc?<; zJcW9#&8nzw`Hy~$e}Ar?%jwnr8U=Fd-ZIje-hbV+kodefar)xn7E<+=4!xhd{&=g$ zsQ0+0o#W;CpW=J3JV%7Z=g;rI3phOgNu)KmdjC`0^0nlIgR+)iR}*gP9eu5;Q9IE2 zZ_52>cQXIe#LA%d*WZk{uV3mjhTpyXxMW$PddP$ppt*U!K>~Vv%_!|e9Sn=qW;x5p zd_DGu=1VTJ{fIC;mM4&Qgwrf9ivN}*dR~J4-JStwjrDnaXqAVp{Ggy7$4w1E2}F3^ z;H%k?484=jp&wa>B)Due4V5LiiZ+Fyip^OU&%(JY<%bn)o3pR=du*9=B6lMHg9y z-=>ARcnQHY%OkFEmmkdfXkHV*hfdFgwF+I+_tCmU^rt7qoUhg2iGG=$*qZ!j&E_mD z>vf}P_N5x#)J?0aE%<`$f`<`j zws1P@)g|BGdMUU2S^5dRy|rXluXyBlL8j$x$zJg-KFd6l)7!72e!orHIp6S)OPe<` zeZTIvQG?B^SnGTD8Ep;MdK&&?J)9!<^5pxqXS3CAXg#m7xoQ1kbK;`({PUIDPZMq^ zUNjkd-_hNkQ{1+uZ~4b@%=BE*?c2&;K57$LZodnW{f{Lj{(N}#Uq>sVS=q=u&gq?s zXYu|0zyO_NrnUYH;*|w{*y(u*0 ztMkeo+wMGgP^kJJmsS6$?z$V_Lshk0zWrA!!;BybT-In`x#uSvdS~oo{DFLCPgEpD z$K}U&j%zg*d4B)C{P^l7ckLhFlNZNdTyG+JxIon!FSZf%>f(*UBU9-Q5 z{w#v0ijv3(aO1dpYLLODCzg;^>UO7@We@?CazRKtkhEJ9-WMyvIsK=4EYH;1iGDTi zcTy9Zb8O0X9k;udJ1p?LE!@c@tbjXi)%U;4POcZ!Znwfc^MgKAY1M3EgW^5q-`bBm zr{2E>4Y1-e?ZR2RR9SwW|ALD=GpVogt>R_*?9=oQPdzSL+PtZ{yxm)zvXH@@xrtv>_}{SGeNtLcd3y?H0-Y4F{JPq!l5 z^<%%AXT&Xr-wp3wcoh(@raf(?t5N-V$K*|cijTh%CD|`*i1+ne??Kv~EqO7ycUMma zpDskl87yj!8n_I|@W+g(-*W$;P>}=Qz)t2w6=mHO_yR8xO|}=?&8c4dBEk4G{UL7U zXryOd$00P^PvvLHX_ui(!lCgBE)fTcf7e7#cfBjvaKGme{nf$@OS~!)(G(!^Rjjg` zdNrPQyZYXiLxlG9^~8v$qtbX+Saag(;MUH&ibf_4$24sAF8}uV5>@y|SXS7+dgJ`I1;exO_R_D}i@M(o z!jIj)%`9Pb-eiVpVI&PWViub~xS5VY)jK9>F)ifNS!r~bP=`RwWPOCp#<>>C}}6uQV2wZM1kgOoJq z`}ED-Cg+vOlFC$j%PLOwu;So48DB{jOybs3!dDQ8kSRx$Z{qw^np_cH8m<$N@P_5K zasI>*#=56-cXg~tDZdU^)*HFIZE>^omWaB=-Mi_BRhRBZ#q2M=U0j@-&vpNRXw1IfF?81pNYy);{dw>F4%5MXQz{8Cc5dTwi&4U)iTvkOo-4i* zR_uV3*IF|?;nr%?b#v1i_42f0HZ9H8scfaf){EL-PMH8@mp8dB;{ut2ZC?Bdpvr}3 zsy|O}Kt9RsGEW63B4<*w=%V(Vh#(hhR&EOFlqlyo;Q6*a$Z}0u5n_(#|6(L;jQifky0x$^QuM^#un!f8#ro|OPHjz{oeKXN7oxU&hZHBngMhwdRPb&c@=MwJ`Ummhr{_bG4Z%&Xl)YX=F1s zWmBVRoh7^82WJK<3c7ID9u-Vvj8YAcAZ_|YHg#qx;jt?5#A86fY&2|`j-e$^Aq~=l zbA*-3ZlPH%qu~k$7(4(X(@VQJr5KQkjfZDpEnaCskCq;uzA7O00*8gQHht#}W=$Fj z9_fQ>)02kBKTNZPCCMpQi!HicFfc@?*c*F@{OB94k2TX?I*|f}N1JJ>aF(Mz4a94= zL9Z7H$OIRl61yW*pIVgxX);RPqK~LDI??5+cybWdsd67jPV)>L6xpYmogWKDxSj7$ zO7Mm-&t zD#5+D>8?vyR&9uw?P|~a>pg-rP8?f>Z;@a<1xJOK2#)2Q~EWD zmJ>jd%HAiwQ5(UTCd-or{-N*1Vh=MhesnFaQ!YNZ#f;q%B zQXzn?jaP;5ovf&kai_S4hUU^L%mOtZ`~JPK=4(1xoQRA413>misR zTzI~2CXJV7WxYU5$A&c{;se3PPYI@qX%Z6%B3-CUpx{i!E~31~gI5cq*z@L~E{#Ct zSwmN8Trs|qz<5|KVA%Q}T!=HTN3BkDiPAu*w}Gp8-U3+?pc=!9xn8rIqSHjs=M{@j z+fE1FqU9U7Z3}pOv=MS$)j&K_;}-t00f&pDk?KSh%2%K?*{+kO8gU~9-zG(F&E#P9 z4n_K`@l`MVHC0^%q%oN)o<}lf^0K}psqUbJ{a+Bh_rN^8R0$3b0E_y{F4F02r{z)S zh|B;XO(_+~Jx7<35~z@O9P<#JrOiE!%jt1aJ&@1 zk35ABc{xAiaT!LUGfBbrL!M5=XLjeZ!E=GubC$ttFz3x(Uir^?vCRNw_q%c}dZIM^jYGYQ60m23Dq-alWJ~Rk$MQ@!}Y;_xu8Lk}ky;&}qo` z%|$9?DyjdQ$Id9vo_Gk|L%2%7C~J_;>d$O%FV|dSCs93AJg@VtWx`aa7q*o)+#GbH zAu0(r=~|cj5q;5S=d*1bz6l-Ak6rA*wOO5)MuRJ9kL1q2kw94#e^)_m8mKMV6Pr3h(C_v`|4wuhL=jpN0LtshNGu2-2|Q6VNBy_vhPp%0;h= z&f*PORA?ovYi@#g>1!RBxMwi>SJ4iFBhvR@o-0>~h&Sg5DmD>({b4AtfR?$Mb0Z0s zyYjj6FyoCB0A%{uV);<=$nFTM;J8SnMRoQ0O5)Q)Y0WSc`N*{xohNtW!iTcgJ?p|_ zfdn1lkL!PcTGNJak{;uLS<#Ab1_%1_bg+;v?)#a`(d3&h#K%?r5dH=P-ZH8ZvVeZ6U)Pb&XD=wpYL477H+!wp*^kh2BrnZT5%HSUm+u1>pbilxZ zDUtu8Aga7)$3Uz_whCi&QR%nYWFPQKkl5-ASpPnYF^x_&@07VW>MFz=1XhJI1FEB# zB#;5ngMOv^7dJIbXqF7&q_eE|A#}0Ks3@3$1{bYBhoNp?sW7-H(18XœoGRVmI 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�ByV%>i z*?VvWHcuDRDESWKg|or;Vb8X&7qO`)q57MQdl&PQ8sV8?(5KSSvwztZn+(lOh6WCn zhJ}M4FJ#2NRvfH(m%)%O1Kh5)S<1MlcAGP1z*0}aEXpzDXJ^ zcM;HA@QSOLi9{Ftcfac~GE=m-?`_rO*L&j(GNLoO3)Cm`<-cCnpyJ2IT@9L4W^7e! z(n{*3uy1|wkjnJ}J5S+%-C{o=JeAJ2n_y_tnQE!<#PoONZRxo@wmtWh#tJiL&>A-~0%8TY}8u1sV8_)m^UXQhI#o#x8>0_^AzcOh7b4it3( zbyrwTd*}h3^?>JK2_LqWYnC==UOfzI{tBv3S@+v$kT}P!8h__ohHwT}3=nN+bclpgfhDDfBmSh{@4MYD1JPN;I|I_-y zT*3Xl1--|zM0(h-hq$me1+UB^97ZneIY*_3(%@0ICer5ssJ47k1N$f(XnTrNTz~gr zm&IXfvI}`?^0majUvL#B63S!7qu?J0lifjg;9NjP66R8uvGeRl%T2f*_UW=WeCLSx zDuv}?+4Y@Eo_x*$G$%*MHlE%0@511#8TjFJ_6-?B1|mO$1~*^WDGLtzEA58ta^8I4 zFhn>FR zBj5TjX$9E3&sky9F&8KIB!})%#yNsxuk5?81b`eCOqf#hwn-G6SuaLMex?Gr2c|Qt zxPUbcb3M#Ib1OLznTwKLTOq;Mfc?d)8Xom{4#s7lD=wWybJH!rZ_ORPbxS*%EA86T za9!oy8?TdMzGoTDbi0)HJ^51?;HjRs{nqQ00|$VMB>kl)_wUv1B(@%0MF-^k61tsB z`d;@J(EH7JLd8tkcw2qrPNsa~K0+8^TSX&G^7t-?>% z1sv_@UFnxj8oPf_`Eoj`O7U|}|DEf@Npjk!<)9H&Psc6HbHqNW(JF;f%+J$T6rcy` z%aZacz9UowrTLVM?ae}!e)Fx|r*IF5QM<46tIBq&hjZDjaXU&nZwlN}bGg*ScAh(f zJTP!T2EV<&O}oOWp$sIU$HfAXRw$;F#qYJJvS)TB?k{!z{fAksB(mbsnUeZ?-A|Rj zmw_qBxT+;zDS9Q?R~91<$QaxIX`F%v*(ppoE{}nhSh52*b@jJhw66sd8w;5ki?$!+glv10+UuH%0ICM3n=jH{Lr)HYm&qF(d|^NGYt zH?6IeTfQ>57NVc?^ZN2c2)!zN41BJ&Y|wEPaEd9>e}%wE+=`^&;I@RX1F~9(@+}$r-Sm4;kv}rQ?gz$s zmN5JG%h+?dJF~0CUb1J z`0LiBUTIrSMyT<(5|dxAQOK->D0>_PfP8thLoyPTFNB4;* zA4uyB0P=%JEjdWer>PzW=w?2@yb-5IAsJO%2?@Q9V9_D^T!Q|&j8di7Bp=f;`Lk;o zvdLCUvN*BgHhu`GH*#6MnnKhume02o2Nhjch*q17LM6HhWP2pU<@JKJeWaN)=ZR+> zIY${<)fZG7xy!?@EI%R)iK<=|psrE?WY68OY%(~X6bWIdtQE6m<8@?nN))rd5vtJiK^ ztiKpoLT<+chg#WZ5a|DO^5-Q)_#k&=lb*(12Ngsl!_{LRn_U;A_59CBZ}PS{jbTbK zG9>cEfq|vOb8~e0;?q)kkq5xFlW<#r`G1xs+p+>?S-43aK(a@Wo<2*~E1v99aT*7u zq`ODj5bW7xL1r<7|L$KcC^Xj}h@$FQ1W&Tvq}-r4%o*I99&I!CWlYQ|taI`VKd4g_ z<~wTWckUr+fre;Ubrp9}zuZ&i?bmCEmv~G~T|6wto^-}(b?@Px_S$Goh3ewi0Nd8G z2j6c`9CxgZF&H?^Y0vB}>uihcGM;|OxCjMndJo&EKN>aUo2bQ1>cWlyB;f|2qoGwi z%VSr{5qi-Wr@KJddUthP9n-E)c+% z@NknrYEf3D4lGDGWL=gHO%#$EoZ2zwAEsn7jp1I%u4v`s=gU1-FRNEkf)Sa76FK6r zZufr(7&B0|{Lfi!*)G<%<&j!U#9~P`A`bBmFLM~M1cx4r$I4zig=%A{f9e{tsL)=N zGb7Wp3rBZWo(hu~hR-D|W&b(mFRi4Kg_cf_M`XmX_ zAYVF{5tx}6>okf`R3Uo-jml!wi)Z-?A5Jl2JC+hDVScK1KGVl^T0+h#(Vhlnmc(}1 zLE5i*>PGz9Ek&MIR!%(^IH_Iit!bqBz)J(xNPUpTvU~ivi|urmm|*fC60CqKz|B!r z&^=h-87^7R_!d)z8xNG+^r3PRfsePb&6Us$`*+H&^EyqC*8z)}h|(AwF(~l@3G&0KXYub+&Sb{B#%oK`Mv*rN^H2J`hZSbcPH;dw zx*+(7zbA9jmymV(R4uimQ5Pby@P^1>t4ZmT2YPf>Zu$ihG<(VpB&Cifv29#bUL5Qxe&wOts@ulK*R%>4b-v}D(T=5>_Fv@DA{+>qu#$(JYC8( z4HSDKvzKZ;97@VTQO!%!FR{Z4<86L9U-WF~v|-Ncg*x-3<@?;NtIFMBZ+_40`d_V* z2gq0v^nQ;-W;$3YQjv*??CV8c%%>U^A3(k`3eA^dU`7HIj!_@1S3ZZkiexs8?zDta zo&C=#yX=p-bTw?)31)9R81Y_9oD~hx%$I>!j{IZrw==c}9D2q^ z@k;#@-Z5eS>h_My1t4$x;l@=mvU08|?!>i0lGCQ;XovnwFXQt8)*d;rLmk`t47!-e87A_Yz#!Qz zIDmg=RTY!|tg72jce>xfc;EWh{`K20j^E$iBeBDA^8EdB@B_Ki559^p-s!y$p*25p zNE6RgQT8M)6P{BCslR%DVu3MG>poZwa%s*7J<)Vo0pr&IDs_X<0j=6f*l0$-n#I6o z<;?#55JcO&EuNXwJ2Na7tW)M&+A-x{MK{eu9Vye4DI`Fa^PPKulBkz(CxZMkU2UFe zWqd*M6UilP)U1)HIZ2Qg!~0!?Q&g3Pj(p2M`IgQ7ssns573|_f94PNs^HqTIB3>7} zIisi57ZJI=7Z6itWfz{yOoFoXK-yQP=+(aP6hLtb;E2@Tg_9(Mpz;pAiPetpeQ&e*9n!dM!jMP%2Rh~RM-5Vt@R+nen6d4;*EW+to?zdjg%-) zf0t%b2ghA7m;|(s0+4NVX&ynovDd7J>XN0S9oCC0DU{0PyVfj@RS{&?Ks#9k+X1kA zo7Q}KuYPgAHQ@<+5MVG;a+OF@y??p3=arLujM=jn=Imz{$SR7{)g1A492~&ff0<=* z@yPxvkKD`J-4oKwbZ$u__ci^>0`|mxT|&V{-BI1uw^c4{RnD36F0F4oHe(!`#T|9H z(${p45mwEGesfx{EQ=;H50Fpvu*L+WhHYh^{x!NgYC!H{Z?ee(CJ+$sAkW_)A8B&U ze_H$cEJ$gCUOvQ+xp<}jg39kUgESAxb*W%H1MBB zJXy1K##XNn+m+ZT7-n9cyFnU4$q+@ro(l#d(CLk zuIbS(^KSB4gAW!_GKHvtTsPhZ-M+G4x(WaViOEe3i z)p7Bkcr57@ItmK~!h&HTG3N zYz9IquXheyE;2{6wzi1-+Jhf?|1rWjn{Xld0(^P^KDnA6j zjj(I^{;|_*k$tfGmbvIvN@|l=1xbZlp=|(iNhZmV^X->kNK;-*14vHweOjL(J056Z z9_<%-gg3UQY#cTQ9Xx`GEvDZ|JRNE9co)I9yBw^KGg&JN zi3wy3kmJ{VIXCti+=&G$!e%x=(YDQ!N=}5Qfdt@fO2=nNOu+TjT{U)1ifcokS$2?1 zw9lg48Jo%^@#zYDrK9O8Yk z(-eH%i*xoG%QhKkUzT4Q$hVPr{|t@)Z9b=Xy%caj{{7sW3-4A*g{@bmTSV2Z{=C+v zcIgzfq!nU4IcyzF{|r7uhjHJ2@(|BX;LcUW8|IL3H$EH*lN~A8eXuWjO~i+(v7r%I zJu>jdv+0OrzPa=HiS}zSlQq8H$oNt*kUvI zMN0e;7RY`DY|>1poh-GSOiOHiXIhr(vC&)@2{PRZyuC;+_99Qylaj=HD-h+EgJkon zKrI|WCy+oXx6*VYISi1t@rIyOI*3O6B>=-pZ^CYvbww&kI`OBp!BU_44_|vPVO0p{ z6Xb<%k{QvKD5f-(Ai<>vnH6bY1j=xj#FQscJjlM;%}UU(s<3#h80-@E7>3rtK+5C^ z?PC?1dD3BTG}C4OjM`1E14%e<(p8COpo_1XGN#HT%Zel|`ZS^R$$yz|*FmzK?f}~K z;l_Hk_R=xAS1gT9yaAxw=qyWMYV<(5|kMM&*9!0w&g`x*aq!^iPI>dcGxnsI>+-$Xzo66KrD5;^aBp(fo# z;|D<}*G&ftv~}gREX=KTFmMEBTqD%sAsyxfP~-L)_|oGW3t$93gxnWRCx{74TU2VoP(j$lW}~FvN1}^ z+ngGbLvH@s#X&I3&3=VsIzYf2UQ;U0pL_PD-T(UUpz9>G-(QJtOhlg{t>W5inkp|w zYry=tu2*(m|B-D#DC7uldq(B)zO!2Wvbdf4r=B?UfURq?K?xz%*ZFrq#dY`M{obUf?)r_Th{C*5Y)dqgbt!%K?XG@a;@&2&WBMF}T{ z6Jph2t&~w-G&FFAO1S4!y zHBo9y!7krk(65WTb(5aH@fPX-PdoteZYX{B&I0hWGYuXkmT3_)~9Cj zTnYIDVAos_Ulbud({BS{W+0A8#rAQ+eilpYw8~=CeYwnK@ns_V9c#e4bh`NSvLhC* zv1*Yn1fAL67G={s5oucwcucVs*Ywl6JKNzN)_2lmq z-OgE~+cxKuzg!-$OgK*N@9AnrYo_q!V2^TWu zLV^z(p+H!{46pP)lswqA@U0-W-<2b)?Iu;OyQ?Q__+8~x*t@aQXan`VIX9bM-;K`f zOW$SrX!re$LLB+ep{3b-N50hQ?>>`?X-nEleg)9}R$GWZuy_I7$)xSP>Mm;96~AMT z>-CVIuWk*Oh*ab;2Hwp%Uj;jE9sRxj*IT}?f9IVYq&2&Cu^uv?kDOVNem-n8ruPd~CvsiuNt%szFZTo}O-!`0I zt}iQ7k4U~X7^`*}UL0M5x!)W>-`l9&ekMMq8t*!nc1A*HxbghF=`P)3Yk-%>#hg~6 zjt+8$ClMBYpxtjwgb%dI4Mq%i(M z)=Z?g!OIGf*rgsZKD$zEau8A5hz1 zp~^XTaAei(;Z*`br#idUJVB|ODyuZAp1pyEBB6vG#Xzd zyBwi`aW$i#(2kvxi&DPoK?k1s=^j}qfCy$G6*#2aAXmwQODj;aq3}*oY=|+;BtrtJ z+|MB(DqjVAlUMAgV}Fnd3#!5*6SaQ+P zX9>MvZTa%y-0?fbnK3m-gumG5ZZ&leoq3@iPGs1(Hoc#s@m674xg)juF!>)x`>tkf zOnKgM)O-QM)!I25H8luQ95A(6+a4MBCud)E`0ZPDxJk6@ z-MK@N2ifLOBd$^?AS)bS=GeG8^fwbHY9)hQ=-HC%64MbP<5J64slAo>ne{E zGuL$KJWWtvdL$i;I_h{)qX%ett2RaTK-uIvI_`?_@0V;)4_gxgmV?(h12+cxwp-h=#mMxL$!ez458qP)13PV!pO4uva!YL%Jg%2J?k7 z44P0r8IeAr{aInbv2%eG9T7!7c_gS_N1o}u=UPx$?g*HcQ8J&btCnz2#5U83H43^w z3Lei?YSvq_aUSr~S}xO4(t=9qO=e{Gh0~E_aqpsHpS(1hcq{fM6KY&5eIEN93zL%w z6}K^Zgb@(@?l02ZQ+-0c<(G8dc8+ZzF1YeJ2q8L<|9czx6W0qxNSYRHtIlf#OAd~I=0`ehAb37b2j#<1Vi)f^^d zB17;_d3^6Wu{bw?kvpA1)>ZcA(hq5eF^>}j@chOCa}}&{bxsLb1>c7?)<%YQxhbAO zv*ZYTAa`tImxK_^gZj}(X1yR~x`A@a&Z6h~Ra&pg`YY8d@^_J|dL}RQyW*PxyEkJn z2f2jPyxKB&y#RJ8WmpY#3UpF57=sBK8MyK>qaSCYxGJa6Y}ADwW_~IyfrJ*L)5yk_>14v_m)RN)%d&{Lu_n}xwcR%)?OJ1 zhbf-(2I6|6RR_}ho58AJZ^$17>Ufw=$%2$Uw!8V_GqD7u7N8f=r!qVX)jh`lu9we~ znn)TrVNGHn>a|6Rd^FnZzOA2+>(iKQsvwA!*XTJkW`*jwyTo~pdEbs)C#gY%mY`}wlwENkc@TB)A`V{ z`|LlS@X*9Pi9l>2ec!@1G=+howI61DiI!BMTf#Iap(9%P=v$NlnMt2Y#bf{^6c05o zVr-!Y1PY^eur2(3P_p4=v^}mFpS8$F(~x3i>wtybrQ-~(7{%$lYnsW#Um#Ou9agiA zAgW?P;mW`gU;%xG_|N!8#ziDbs`Oh(lt0o(QdlaloDP-O7R*Hc1FZs&08q4Aw3>{9 zs7nC)VLC2;(uo#KOai3OL;_tBCcGmdZjnG`KB6uXcA1Y*iv*ei&Zsl5got}xdB8dW zds+R!7JqSXi|i#g;9as-kTygt*~tVTFA9{tyEnVZ?hWK0h!jAR=}1vTiAr-M*qZ<$ z6AYZNAOunUv$mEFR>C+EBSPx<(ie^VcLqkPC<%ZMV9(~uLEf$Q(_jBP7Y)Vn7FWKi z|F?SUk+y;+LFJ7(h`^tX{{S+QQL!CtnE$G=jqs)h1dfi}u^#{Z?g!9xJC=CE20yN$ z#mCzALugaVX04iD&3cj*l@-b0gXP-8dQhvI%A|Gd2{RDELg#7wqS_7npeKtq0R4L( zbPrD%*uMp3R-m7?8)7`QpO-h!v$bCKFWEd%Zh5jOh}LRZ2NHOir<1kQXjeJ{6(`Ey zXg*oYfraxkrvf95&%2GLKUp+wRn?|JjR7FdNT4DQWJkb>wEGT_BcVoE5S9SMVnGiE zZ_EaUEq?|gzX6Q^;Jv)}f6PZI>&9=)ap#%1(7@k6zUqm9kiD7Bl$(nV7NZA0VRY*C z%uGQl5X(1moy#Q#y6b}1<@%+Q4Xx`yw@9Q$h0UI)7W>=R6BA!A0`G!SRXwzSSoL48 zIc0k3sR=&Pq3M)n5=aY81lEm9M^X%VQ5scW)t!gIWB@c7tMy|+xdIFBm{Qm713U4N zpBFUCh(H<^v;7<5!YLD_Ti1VB>eTK0{qLLleN(KZF5%ayD`()uG?s%o{i|9m{T&bb z_nZCiZzd*Lmd07)4la`UhTHcT5;4etTxt6K7FpyKM84EVIyFYN)hDQSkaum6f;-&r z8xcJ_NJ$%Hr4F~FR_+PYS_$4@D*(t?a5{7PfWay7=O-X5K8OV+CwPbXMnZ}@D8okH zdlbWBtu~le#KV>DZ-p8?45a@z50VuLs_1^9&S$@(U#JzyOdu0U()^fMEiNa-_CC!Y){iz>0ZlCr_HDAhKl-4BVH%TXHFO426F-PUO* z>!Osn*@wwkP?@$?CIA{CPKB6DAb^;4y7-@gEGO^!o^6Q?!v4%A>h-GL%s!F{R(nEs z6In+o9gI@#jM4~+I+`8&N+;SjKU%AEr#0L6zm4dh&-AqfF+>|scy`D(tlDDl&E;54S}P;*S`)nKGyM60fl^e>#MpJrP2O{iCZk3&0-q1bdq(rAVbsZ4DR3 zt<+#j2}6teLt{+4X3+zr!#2rBXG{iWXx5jLhkqo68iK+XF|G9Q zXEv#iKY&W2Fr5rc*MeGIugc6Ltd;0A#Dfk?7C;nDQndOG(D+EB1z;?1msDu#p6@`@ z1wXak{VBneP&Qb z2a^tMq<;(XBVh8sX+;oVE_|q6@ImKnsFl3=turC}pC9y;#dCiiuC+bVaOg-}sPVp( z*e2Vo7eP@A2P{1VdmIh--3s+wu!_2KD0j*>@7bZe7k4aFJMtFpM5XxWF5Nly>F2Sp zw#UC8I{xd<@k`Oi{@T)^IdloJt9z3!UcCSS?OzZm1Rw$!I|2>?UjgHR0E7r2YC!)V z)tyM*C}O0owx5I2^{%0`*A1RPTmIjwyNadWQ@EX#5u-O79-qa>JgV`!WiVQ4CpkAi zdh6=MC9&$Rq59U!x4W zac9fRJ2Fony+z(>eRVJA)cC9O|3`I~=H{o`)wa;jRgp2M>1tmZPEonc^6kDE*Hp1% z@9VK{%ZV|B^9fDAa6MXn!_Mn_oxgVY&$Pu{Kj=s8{PeQsLBr4q z_x$}G8nAbwl`?gOl5UIz$UOab(Not zqU6$fFG{H%qf?+9@}jqik=~@&@$-r|$sny_VZFFIOmzw=A@$@EE}&y-pLQKujsz{P z-v9oBguZ}tvV8L@_h`Bmfl+m8VLz=J)wXc)xwXHQ&8 zj+{FSl2CSvtj|TG)PiqL``eaE z=-z%KLHNk}%l)&@&MQCo<96jn_+MD@Y_~EpIX!z#vpIbq#B5EtN5a*(eRqdn^4CFh zLi5)l^+Ri4hp`;v^%1?Z$?K!ItIg|=jPI6?%RKM@0-7kJN;byHbH=! zY)q0>QZ}Y2hAkUUd~H8%Jf(V?e4h>qP5J&TETQH5OvIs2-=9ZvOn%J9o=y4jf_Am# z$6WHAPd{F!51ag)&w8Hn^Ht9KmY=V4e~Lc+d_#wuii^=yQa2a4hOL{6#kQX}m&!a% ze=S#rrv7?cmC*X@UCp7-zuxmWrduoZXH&OU8?Ux*eQ3V(dFx}_u<7r$j_0YrKXtut z{r$P;=jY#F_;9m7!U2`EKVL@-Z~R#wv;Fet+oY%2-;L?ew7=hH6K?$dF@NaG-=6}G z*}u)@vuXc+tz5nFZ)@$&mw&%&^HIHjHe3lrL|lpx@ONWpSssGY2FAiDe9L9P@hJ0N zB(IF?f=Z`Hjc7u*B4v)PFFL-X#?B7Cd#Cx=VO)t zLkgyCWhwyzwp~wDpf5_?t*}%uzd7U}8V43Dl?_1bt$?KDE}%Y4AA+3)fX>P@r72(I zw=H`(*AOKLdOC7Rc04z?$$aaYg<_f$2~u81z~L896!HcgxwL`ud7e~)R6nw2Q`X{O zlr)tK)XK{Q>tVIw*+Jgg<>_GKYbdRIBaFW~lLG~0zRW*dt$`1vWSb@wqR8b-KgY^C zl*B@VCS#o{`JPCzVCx@hNY)0WXbZTEK7^_djK;&GQ86;+ZPnYm8M6DZ47N-m9kXa& z5^rOvu__qCo?0i`SKj18KT?pqHW}KZd^vLh7P>61z?@x#qXFJXy{|I4&5N*$ijUx~ z0i{QBb!x0J@#dw!L?|gLL-`7Vwv7h#+i%lw?s){!#;?zh*4eKr^c}H#e0V(TpC0ri ze%R4NE}%XarSLHfZXoos%u`dSmT6y*)-B6VRqN2v<~I4pc$Zf{$+{v>#A&EJDraYc zHNNC9?MC;HYlew+1`VsErInV2Lp3ld_zo?l@`z}VuKLFi}mPsvdj-WfTI!M%#{(@f7Ia>>_jY*EgN8;DhBKbJQ+ZRV7jS3*Yhuk|_8dY;aW|PUT zE4^!x6+MQso)n+0^zsJjeYB9i$mfHoows8NV0bn)`Pq}Bw>M=w9yF_d+GOc0EK&Q+ zVJJW2QV19wEdeb_M<~ zd=Pn4h(Fogr9}F;hnQHNoA5+y)ktD`_S`j6R5S;Mc!G&n@I~#8)>2#a?6Zh0M-mSp z;SOZi?73e#s$UvcE%Q(cP~dC&{tm^bOgGyXzcJclc_x&lv<>}^scKo=6_pRZeHNjP z$km6!H0+rvYkSN0DB2`b>{Sz7u>% z%FiXn)o8666~i#H(Om1S3bl>v`m7}(nOmZ}&abB);mE0k@{Quv?!+UkXX{+ClbuzL zx*g~wz1+Cs3f1?_zBG{Hd9xTm3^3C-#F%Yb=%vdq@zU4oo!A#pKdmZG(_Po$_4yb> z3m2#u!`C;Ji4iYN^t*mtFAMIy!FZ+=i@)1AK=_<~(0W4MxUXf9^5K~DWOr%fH<_l_ zsEBR9RA+qM>~CtMCnT>&c=)>7KM#rCTe|VhFvPxr^x~qm->9js6!n?M$?rupC|tHK zTX#HG1?FErJvk;xH7+zGhHc%5b@O7%T#yiQa;K@+1W1daI{fJ=`o~Rn(N4#k^LjKp zXp6iaP|GxZ0F`w9!-T}#B#-A~R8jh#-Nn}Dr$$BxlGNTdE7p#tW3=BUCrNrtetgDn zaohOi#H-Xb<{U)T{uCG_LESH_JMCr{sxa!CZg(>T-STq*1p&QNNgyH82`(w^Lxd^F zg06bMX#;#`&0S#jk@_xLh-9yfrm%Cr6!1A1-(wVSvJl1=rrGzq*grBOhVFesDU!H6 ze0MlY-S;P$JCeS>+-w=wrh3Kvl)kejl)is#nwBeOt;m=#kP%}Qsv=>llP4b+TR*MB z1UeY2B&QD*Oek(qsveW0nGeQF6!~StM&?t>GIf9lqCEFEXM&bzcaQ7k! zA>jKSDun2kYRwrqvtBZy4(8qC{eo+vP60>LNLTpquSGCAv~RH z{YQd)MW(Wmi9ZNo!A8OuF=S}h;>{&#ROgV6ePFm#4&_!-aWYo0jaa*yw27B*<7-dG@ zt6q=)DvGK@QS8>C7lJ*sMp->lPF{l49&Cy>6z{heq^*#_1k=P82?rYjlTunJcTsXx zWGQB8{`+Pb5vDC2Q9MD`tn$`wlqE3;Um3)p;FJ{x7zp6nf!&Y4lkDP>n-LTeA1gH> zUleDoh|&f{o_?mx`lm#xrdVx}L}Fv#2}qr69`-QkPfr>YWF~cE>czO7LN{U_Z$OBz z5T7>SrcI?LnJ8r8K-hXdepyI3dzUPw14-@7FU6?ZCHOlbaf%*u#aHGnu%8a`TI+e} zC%l(&`1K5M>I2S!3_2g#9JStP0TsUPC?QsGvdC?V)O~&-CFKhrX{zKmCRHb! zZj?C;`k5vUiVCn`!GaDY)bDh}M3BUH>$8Z06(PtJ;{A@Intdbd#rcrr^fnfeG!FM3 zz`PXm$=7&UR9RdhQPCZ22_{Z6kff0#@7Ha@f-qYKZkcgdhU`&ny;-9{M*muVf#iQF z(fcICFA^DwsL;|nQ-{N4y5iPLF@8euh+Y=iJV7`$17wS1G%%YK%QJmhZxaP7vFL9uf>IOX1kt$Ak(B#_hE=MYKn?| zCZ!_gX9+TQ3W|p5u9ZcY7eKL-a$d5sEFmn9CPoQLF#lNlMKyxbgs{LMz61z;5}7PEs&+;yu=1hI<}&&C zMJdK-gn*B#m=+S>LfD>P#3=@H;2Cmg2Jau7vbO-IYDIi1#J5YZNg~JENWGWJmqW+X zD2KrmcsBqcq+N>h^QQ6@R4RBrUI#D&0EqVo%^urteqSHj)3VXL=#cXd)3ljZ{Qgl&m=|EGR&)b)!B8E53lxVL=b7E{!b`%<#BK&m^xBX(iS z-^>sq!}py&$|lr#5Hke8xn}aUrYao@Y`qXA6ygmlNlPr!_B;58&&bC91?1O-%kcyu zaP!SM48%r0YIM5ROqQotJ{Y(@_mkwo$8@t#EJ3w2H)1(E`&fQ;lwa=7bC>;4H8OQK zg6?BXm9FejIUC+w!_m*1f4)`Y-4*(Z2)S5-iD92zb^NLWA9wZ{T0IWVaIZHDt|xIy z2goGE)fibEvTX zHRdNgek*$`iSY(#jQzyz2mLpm3eZ;vG^D6I5(T^_%)S$ht1Q9YoxQ1M(4b1W>m3Jf zoGbFZhS;`Td*OK@Q&2j}MwQz(SMGQ3#a0sM?)-C~{4m@_iM6wBKXGXUvueNYNm}g7 zdcwhpCbm1_plK0Ph+A3_6OI9~X8ej70Ga$9SUP&;@3|{$t0}27S4x(!_N%c&?gySH zz^etMsS!-@J{Uy+$S^KXOdOGdG{aaYUpC)d+XBlKR0%UF8WKQ80t_u@P#8%6)1mW| z+lz!PYxKh6(1mh=9ZHEch6Tic_rkD|Laj3>4So35tO~Y638FloR@iJc)4Afa*u+9Z63-# zay^Y%fLWGO)5zdf`MbqzycFgXejIcV;%(Bf%rQ*M9Y>cxBuhUTiGeH?jh71959)Zc z1iANCHl4AH!;Z&wy+JU{P$JSbztYk(o85j%*YPgf+0 zj*16=z%d_Kq-j3frqSswnXpqlC_}EWvBb%#-90EGEs_cAgB@l)!9I3*!HQ{{>^O2z zLhv|;9pcd&jSALUCXPbbH_fQb)4AX?q8bV#rK0w+yVkg$F#~W(cL-zRq!A$eQ+4a- z>IZ2}Rg@8oQvtCCRdP%TUIdZ8hzPH2(1)D~Ht%t>k*8x>!%{}vS!XbeefC>#H+}*B zR#4F-ab;ItdKN$-(NBM65U!1&4~kL8f@Q|Yq_0Ap690_Hh}Sd&_vZSgLz`bRjSYQxdi1Ee2=woc`AcKhhgz|h=J;f@&ZYO=t6A=_SGlI1K1!N0I zl}#>Fkx7wF<%cdK{k6|a!4V=>{1vMz-#f%fHX(oF#_N@$9ebUz!>rK#h4?@bW-;Sb z+IrXD>0a``#xdHpqpaw#e~vhaalVSA7i_}M`-vVbUsibE5+7?8?7gIg%|{dNt-f$g zu%{O7JT1gAep0B63%=pR9ZBOKq1rXA+w>W@#S}i{?Tsg12^m>ouM!DUWYWG?-0;uQ z8~o>xMAHiTF=@SGKmZpf~EC)s7sI71i0 zGWd8!E2mfJIm;XQev&NMFN}Q>eYqZIYwCXAbB8=2gH-?pZ+YvvD-75sjdz!hkF$cs=}_MS=tanL;85TrWmt z^A|K%u(839OJv@^UO9>034y%kJ1l<3_{{{rk(6`Gn%jcWhHJheA3Dypom?Ep6qusb zzQh=8BMq?8A&}cn$rmEUgT(0Yf7q*^`q^)b`}fb}Lw~UZYnkUhXPA6c801!B>Lw!p zQ1#)zK+)gXXTLd z8)CK@T>1~{&aNqByl$^u?yvjKNI2^J|BJe-*GBFhfHX9&Z=2nAefy0x&jp57FIved z5J}q+Jzhh-m*Y~pW8VMHftT&6w4I*=n~%&-^_1@Xva3DmpT9^|UrBIhDnZ@#yzfG2 zZ?>94nyTN|z4y-=@9sVC_bq(5%>ERL;FE@@Sq3&@Zj5zDJ*h_CJy_;{baeFc%9e*F z2_eIG;@%||oj8^yld6#D)y>@YY*3f+Bwe6!}+8Pa| zRVl2rc_;r|+VPwEy-K@z$KRsK7?=i3#?v_uCNpJoGmDr6hL;>2UdR=aH`^^-2D(%Z zK+39Y2m@|tWEp>|I>UgK=2s5etS&RUCD6SXCktR*dFJK#1q$jkHKzY{8duM^OZDKe z^O@4f;h4EW(_%S6qZ@# z&c)$*(>UE?GJLBUPasC7020l|n_LtsFxU+exk}?C$55B2nA6gh+ic#|9mk*VyGpa1 z3^h(sc+0=-Dza=8UNW7yc1WZJ9Bv@2-yZqupQF1H8jh5&19?^D0OEkq^m#&E(pi73CRLQB990}L zqD-Ek56--)>c~i=p>Aa$NcNH2wJn8uS&@Yr$CV?NrgZ}p_Y`aS+AR8Oz_cOdzP3aC zqpOv|$GJxXBe$=LoIE`3!i=2nd^Zshi+qx^ucXlAfenag+`Q7VFXQ03z}!!5Mf7jc z6F*;T093EJOQ%dG5Lm#Jkp&~i(?B{!%m`J20Wh%fbvS)G+pIpBmgtN8MVC9sf@O5) zO@x-k`COQ5Ed1~%lWTq63@tqwYTA1_=;*3U#HhRPfpxOxP2A(=XB9) zIGh*11OXma|BSwC8$OvrF&9cN+#_W)5ZIG!a{xZXh7RWFOuU9v|2P03gh1TVxj|oL zc>c8|07LnR(K*S1Oa=qIp(h4)6Z{+xR-Q%2y<1UN5@C>#D|w)4XpOFKhxwawQsj^Z zEJLFDu^V;`GbVvoTnizrm$Y;D($g!fM@g60^XXGkWX`(L&lo2z#!d`(t1sWjWrBx# zQV`Vs5Jj)J4bRN#(yls&B6QbvSAd?G?%#)h2z@sqQwZSGQB7py#5&dRJlJ(P-p87~ zmjU5Cju^~9)JO2OL;7HVsPt8TWS)pX#M*piV))|51D^~uG~z`>*}BZV+R4=NelEYJy zPq-1#lxF}SnE_V%0dQ5i`;`@W9>QE$3nL3`;KjNi9#V_8GzMItQc!^1+(=*~!pz=9 z5}{NWo&kvCt{lPBy-xVh;qQ#F4FDOjZ+8B`AwzCUplDMpOis&uCJdwhzJ*}Pk46Vc9@o*3T6OH z8-eTOP!E*OBT(f82gEvYTyM$btAQQbkG%(SQvmoe-?a5lIHW`=Y;er9hj<}jE7|Tf zRZ0Z2pRLO|@bNWeO4?OF2zf5O_9+qtf86E7PTspt6Wy1{Fk7t4+>_%{0t9oF+k*i* zj}wC116u(LgqpiNL|5k$DwGVKn65U}D90@-15hw(HQ)$%3MV?F#7H$?s~<#hn6 z0WXvTJ@#l=bTHIy_2>#u!L{N8`JG5eogCaksP2eDli~P+GgVd3bXjJiy5GHun3J0f z#0a-WK2w&fr7B0i=}k&Hucb09LG2u@%cKI?wex)RhMRTx$o^!SsL^%!ps8j`0Y7Fj zqeCH7k}v8dcWf;o0%S1)B@bbD(_s|Wq-ie9sI=&TIyl5Y7=5HNEvStA#FezW%41Z} zO1JX_MdB$@73bpVFtUuq?QD1n*6SeGDa4#*6z$O$6AO@G{9YY2y`6nqUQr17)0@`r z?&;7YFNdRa<(v8mdqjz6zmou##(is71_2mIQ9X1TyDQQufAg8jq_U?z)>DTCB++{g zOQnkPyFc!4Y53dg*RQD?3b$z$lVt)sloy$OX77cmMglzJ{YpPs`$8l;Rk5hAAVBlz{3Mt5V)Bk zBFXL@_Wn5tY;9Q$JD2#vAQR+|zfgjQ2S0@48Lt>tB25=fa3!+S_6j`kHokwY+WM!! zBs~5uK%5GKCju{4`k^gttPjT`)?LBxVGvg>!VEiXr%1_5cdmweVLkm}PQ&U=I-7x{ z=_hYeqzCrj(6cvQ9vD-(%|a2lqHP=bH{sq4J@X>GPVq-)-T3Ykmlg~-5TG){PuKSp z$06AoDvP4@Tkg?Tg(ZB`M}J>rUY4C!{<%L|VF@~mk@UgNo4l}zU=$k+=E8cmVv(E% z@vs#j@{r>IqLZ)2JDY|n0PONDnyBgvX4ElM+^6=Bx>O`$<_qJYnVB#T$ko2FJhg6R z8ugZmw!Xl>fu0CeTPE9v8@9;N@bwjz)k4cOWdMj&R|25tzs(UJL0qHlpAcZdQEky0 z&;;^Rxbn*JU*nU!q9;5eXv>lX+$fmEeQHWe7bI9<%f3|?%j?hL za<#3fuqAUCk7IP$$z-~Hh4rl|%Wtg`xfyQLfHAM5%1R)LO4j`Bul_83Vjp`A^PD zR#bSSOJ1xsywQANM(dLpnD_;ZIjSdt7g-1ZGAsQS!0EP?ovk7QR3J?QqV)s8+L*yd z?UtXcE1V1@kMnJen!nER2=TBDS!rgzc^p8>qd`g;JkG){L%sB)>@?Mhvr2E$m^Jsf zk$0@$X0B{nSJRSL=j91w|8X_~D(gz>|JYosDap}fSdAX%yo7VrM~gQXfB=u99mfR) zYKrH_Z3=OD7>W8;N9Diw3TBi$u)25ocYoGfg6Y z2ceE)-L2Gg5%?%mJ#WJS_Hwn)0O!XBVm<1IN*yPD_muFA3(kWpMs(U( z=8d#ikC8v<)rq}FexqeE5M5}zWOMDHCNL+4lBwC#nHy7>`6th~WNH|vHWfE_TkjiE zKVDPhe2$YKZ|ZidD~En>`&{wKF?6?fUeBMjUTsY3US@iV!u|Ro_ioS37nu+6xc!se zk1$>rVeTlhOSrZ>g85*Zoxu}rki7R+1q_&wdT7b=Q@5b!S*>fTq&qWCSqkJt9JUkynCKU*^3+nhW61%ci+Uo){r5*O1ANLSI#C``Vu$w8Eu~? zEVg1(q!A__Veq|xzkX~4fMc&bN4cpOrtr2jQ~-LCJ~N>Elo(QrM6UFD4xNf03Y*}} zsq&Prdxo9an&Jx%d2+13;$#`NJ%jxl&Y3+lB5WIgsz13RG-Q8_ZXhzxj#GQ7J!&}j z%2wL2JgXF-LtZsK{rfxM{lJUv)}l9Fg8IHQf^A}F53W_OiURb=m!O)|>llzd`-`Kg z2crXA)y!H+-KIUxMF-{8ab}p~vOrR1jfRl8JhML2uM;1C*7t$6;5u!+e233(jLG7o z#DXo!0$}-1-&(K77WVy?sod18G}Xq(r!Yo`c-==Vcy@$Bdo{d+LQN2`Z8%Ppt=j3- z(^wtNI#QwNYLT3uxJ`~XrfUUAcQ}P{1B3>0!@|htOI|CJLoVL)0~%Eww8{*unFrd+ zzV?~@l{h>0)>3!B&0|%CkAg35h{`_$w>x0K)12?sAm1)I3&Q-0XKP$%8GUQ(JClRD z{#<)<{7=)pXFj$ceRgD=7TF1NM3DWbuC+k7;W8LNcV&fLm2+>WyBgbfm4@UK~uOF}bnJ6pJ|~JFaj;%=SsEXQ~f+8t~gc0no#L z0=Id(KXO+%x48ZL1To-KX@m#&g%?*&0D+A?D^zGld7Fpe61mvUA@6eE_}R|BSWca) z+~p&cSK2oA&7}Pt6Uejf9U6fnCocR9K>flcA3=gq%=CC>$|(Ur6x(XE)8a8LH0UYU zDxlRPpxt+}BWf~-2bwSu(ufI+V3K{l?wmYn>Okoq%0#=dFM_U-;xZtk6WFEW`k(>y zt#N$lTvnwq3Y!3(ovzCF%9#46g;+FzIG^Rf&2mv zfD;P5Pc_dDdBPqsNt0#Z3on?;M3BtHw&pnbeR(^+IYV!b^h^^}3cu4H=wy#pDSptw zh+4Z2OP;Iw(orzZJ1q>-H#Keqz2XlApqc^l$K=@f^hh3f`VYeDJ!-v_ZMFnzlTr3q z)-4)KMBQVy1EAhlR={$QPNs4IA}*2_Dn(tMpUfU|U(oN<9&)dC-`rYXNz)DNtgyOR z<_P~tdvX1)$1d7HkKHE`sCX7EH_B-64szytL#6Mut$PP;hokc$)$Mn^3!sz%ckkYu zlgS&uhKvUzDQz5(miZTa|m4qVt;mIPJW zJvehtt3&M~j?huKSDHs(z4B`nU4xtQSbV;9f^_9Yw#9Z|U94~5ldP|Kbobd>=S`yr z?kf)K79>&KUbkCBo7W=f#mibE9CWB~HE}QSI3a%(22xESM_J$_#foQG77}itcYNtPzwMQ*@%4WSZ%< zb->__P`kF3=2Atv29*6~?dx4mGY=}r7)bZy_}}+e+fTZw3fs>_`J8HcX8d<t5XmaA}!A zW^G&{d{$DGh=Yv6celRKJH|<>D;|U8e+{LkEpP#=L(|bA$usXT^43O31U%=gss0iO=nK@tZbIoBHuB#ST(+V)~zl67fK6JtUtm4Tj z!p-Q(z(k0_lacrL<<|(qLXiqd+Uqj>jd<`i!Cv=_a!I`R@#+d*9R+DWlUFRN zgMs)B$y-RWjUH=waHGaA-^@5YgX8HB<>`VRLr38Z^`|H0tQ7{P1CPK0T=Ns_pc9+3 z(cIszyh@v^dMB3F@RCa%BEmGu7w*-0>BFL3KDf^2QyV!n9tbG%2&_CSm2z?;q<;y> z|I0&vR88U`{mn5~4lS!T!XIy#U+Z*&B8~ezUCy6+3a+}UTyv3dXqa^%-+Fd<4uIZ> zSf#oG{W{_&@i7mVNMJNCbtGInD!i zGYh2<=F?dmGcs!T$UjmZXvE5y?=P4S{{-%=FLO~R*f=`aEu(iNx)*1KCSse*9+mAh z;mA(tlbx3ml(QEjR(@dr2* znd}Vh*}EPlg+W09*%E9A$6w4Nb3_}?^S%wqTW9lzuf?L9xhvS&9wZGSv4!} zOqV;PX9{e)hGI>y&E6c})T@7ay{GTdv}8@7^Bi!pz-FVQ^RBtcq4rjv1;vNQHb?Dx zcY5jJwC%Qg#YrbJofkelRo~Nd3QX9kx>eq4&t@B}E_2e170s80C^AfXs)B#??hSd9%>)alyInAI79GW`?u zuarbJUt@E;EntT5&|6U^kadxI1NLr$4C)Tjlw2NT-$F!TW z$lePA(}xOUij zu66B0DFtxth$GH^-Kfj47AFKrPq6OsCfk?m9+Rl{i){Iic>_9r``av@`a8(N#zUqr zi`M@wPO_9XguOTu2ecHpu%}h_cc1?e&Rb3y_Ij;<75**Re~MFk_t>kr6=SP6iu-{=~dI5V;8>SE|;E6n7N)rTz+;wceBlGUA2kz z$D8+d#mqqUYkuB`R#oriicDVCuL(FHDDgjdUB+4Obr zRGwW4-FZKaSW>#luTPu5*SvkvR+`v#9Q zz3_+Xc5nHBC!EZKY0DpO$NEST^LQ`>oqTUd;}8cwL`C!hSYU@RQ_#e~&XJgjptLPzg{cTQikQYSxDo9DDz3TUUjktAM%l3_x$b3lXe zkh9UH?p-4&U6Z;@xfckP7jCUzw&fk#*&W*b=fgdd7)p9+WEWYHZ*LI8=3UyT)jQJH zYk%QO_9kBuDHnFv=E>)S@nglZlOKD$Fr65(o+B3F=h~(Gl~3JTsrh>XWnx4}Y|R?h z{&3WFlR5rOqEU*vl2FH7Hvhyi?RVV>kg;O%=vJXs98$#y;8=5So&9z~$4E;t)$jSE z!p+?R)ZYd7wqHIR5&lY->j)57b2uYv=rzK&oJ(jGxT{h^=PzI%r0Iw-<2A1>N~?Gd z+z0mM(J!p@QSKCxqkO6F9@=_uoYlviqB!RZuey~VriKYXZ>h#*(YNb_N;#+?X3+Cs zn|Bh&c(e(Kf-1k~#g3D^DNIq%BEw~z$I2eWl`{;_34fnmD-#*7uW~6EA-3Hl-rz3_?Rzj!88VZ7e0E4YtEk}2UH-rZq z3E#Qz$M%A>BjJ0tNBM;v-LW=Q-{OW=K=teAvrqUP+Y4gK=K5x3wzS^ythIh;IQYk- zsRed)kFCL{E*R{;>49TNbvOus0DzH(38aC7|HKOZ{o#M$mFxj-!l=L+>D%4@pKONy zU#xRK`L%=Wf3g{5+W(%-xK%kI&1PKxU)hXJT&gsiQL=FPL8(>j?0>Qu##O?q(F&#l z>fhm#=3o8?C+dHPs{vTK!ILl?JCadyns!U#R}L}>=0WGAQ5u)ixlVt!N*-M7%cXBj zt0X&hSmf!se60xX+4MouBc!>T$s$iQD~b>qoasj@io_uYcDY zxng$FDa>Yj)Yj`eZy5A6Z?E>gxw}o~te^SJ&U}})W<5!>(jy*_$&vT)wFZbQe^ z<(8)hceUCq{(WaVaVS`1iB#8ZonVJ{n<_Yj+dVt{wnSGoN*blP-39$`p`ic4m-6qU z{(pZ2|D7lQmi7Myi^hM4>)*2ecYXgqFBt!wC;yi9{{?0Je_WXUJC6U>`@i*W^xx_5 SZ(09a*8lF#|36>+w*L6vlqB}o|=7#JBDnaI_c=;)Z}n3!qVSy%~JSy>>oG?2MD_MssT8fp#>4o-*= zmjFK3U3_kCZXRk?9v&WE$|t;-($eB1=H$!H<`)#;udNgC^t|Q7C!}~=$innC#OC&G zA>pVf5fVxfZ6Oh78&OeF@qqye2?{Sy@d@U9G)cU7uJ(Lqkj1UQ0_;TSrH`KvlcHUl*neD=X0> zy`!fG({Iu+FfcIE(>F4cHTG68F)=ZfsW&w>Gqq7NH#fJy)H5?nOG_)wOl$LSYisL! zG~D-u#qT{xwXq?xwY9ZVakbB}wr{d@l+$%wuyn@MdutbvyQ})N+mi>Fdidzk6L;4q z?oXbKxI7uX|MblR4-XGd>sMah-abJ(K68(KF_o_2TkGNH?-zinA+Kk~N6&(So<)QQ z1_lP%%m)Pp1!Jl=E<{)<1XE#Qp`oE+?*hYZ_rft15fK>~866!R6B84AUn6!RA`Vjt zv2h6r@$vDPpG58Oq@<+eEQ6Htr>Xk(si~>yUIZE0BAJ<)S$C{*a&mG-wQ_TF^Yily zoIDB(3(LyNDn>nOYisL}$_=lcHa9o7z{*-*w;(Y!Y~HTz)YaA1XXVxRq@@p2(;fr1 zz5`ByL&L+PqoZS(8XupWoP2Na{V4mnhMjn;WbfEVdgG zn5wanGE`qxR7e;X8w(4I?Hmsu59q(2(Sp;e&KR5}8( z-s1Lg>{Z?3OWXc9X6@JYOD!(5wbtXWUwnAuzCKo{{ifk#hu`t;$MH8WKfevZC1KG) zHm>%^Pz&6fKsK!pr*LQ&>9jR(j^~Iy_%zYh@?{F49M7WL-nuheZB%#fUHhxAi;WKB zMYZTad49Y-TW2%X-F5lnV12w;?``+b%d_LJpQqlw#Xt!GFFFJdm(@tHbM z+_l@K36i_pWhrX>JLMUsZaWn@&b2$01wOkwRfs75-Rklzx80iR%G%x9`q#^LMDlw# z9AE2O7cA;TNkY)O4V_vhVdSp~7$1s~WK4f;8sYw4*Elg5SJyDACh$$KQSyUe(-5rg zRx`WT*KcpoQ3CtOjV#6nvISA?J%X**U-vr>h6MiTJXv_~N7va_-5=dor(gegi$y4S z(1Sh{xpDAc|~-htHt^4&WehC~Y(%AH9?uwO z^NSPE@FHH}kQ-08YN@Fgdd)jVYvJJ0f_n$(bcF5j2!PUwhA8#BmZu*J;uN7cs^vF_ zLyU2}N4^ZIoCjD0N&*Q_=Pv6nkJeMvh0ZrJ%pRX_=G<>M-zwm#&&E|N@73fk*He<+ z$=J5T!-pUd((BE#pU(GM7aw1KLw;$v-0%Fc-_b^E1Po;hc1xj3Zi@P1YEE}aaWWNu%TYZR$`wvEZd<}QGrxvN29l20tBKs53z`5jKr~78vXhr zaWzRjVtG>C!^s+XQV!ltJl@o{EvM24tjo9u0d-i|Pg1Z*V-V~l8bb=`RlqIIaHj9b zVcFWlIDQ>Oh`z%Lie{uwH4y>W6=1>R$dQN9*x}HXkKjZ+rEo`w(f>fJN!;`tCOvCh z2g^@qPJp9(K(dGWtQ!5KRT|2s<*V2fz-1L5l=2geei|QyGJEi0qJM@mHBdhkTkLfo zPrHFWyZ!(ti^lN!5~Y8xUpNH|ugDFtB<87~V3?`w`*EFWbd zCn|(|{Y5*ij}|~S95&v0kFIBJsJcZwoFk{);?g*b&x$r@&tZ_Jv061Y zP@>*pzQ#OXqWjeat)2ic4i6_lhiKUyXZmRU&IZv!Xbf%fg_Zpr`}yM75D^|}20}Ys z9ZIsH-?Wv(0~Jrfvq#U7JALC3eB`{e(C&%{ih*9lRhbjrSQrGK^rKn7JdGV9R>9S` z9g=T1h@#lbG|%vU;W29*N~VGc-K)FBPP{5lT92sn`S?gQ4H1fCfgs)RBb1ClYs|B} zNF3LFnJa4^3Z@C8E(pc(^#Vk(7-+s?o)LS!39a`LrE1w@SP@bna4sD{h#Go zeU}C6m_1X(VNW4Y*68y}7gk|lM}!c=v){@O5Que$CR%qY(W7k%<&djU`&y@+g8_{R zqnxd@od_HXjZjKM#Am{KTf8>>rxdJq#D4X-%-ir`xt_xq>e~06Yx&CwReM}?owoS= zenkr`({>7K6dmndgfaw&*ms4)nZ6!G2@gzb(45lTbQveLWHku1(se36W;k~veTWEG zAVfJ2)0&2F>TL5%e0#vuR>whSokDj^IvJUCQn+6WRA<#6OPg#hkpn!i z!#K;UHSiR2Na`9~8*sG_p=cXXhaIKmUv2Q-=(UZRO&*o4Rcs0;w@uuK9p`yv7| zu3fXKi-nHs?~Tb_d-wG&mp@#eBB#3ceWxxzU0(m_q3Aw{*1K9`yg3`u>pse!y4sSv zIiF7MKB?0CxodfIftu<*eKYlQ|JltYn&R!v*|6UAQU1-EiB++3ecy}kZ%V|;Op*#p2KIMN|_8X?zaA%L6^Vq^#@Dg@>mLJkh4k`ASThk`Wx ze4mCgAVZl@p)6;i3s2Gx)!RRD#Y?^dz1}Z!S9-EUBn}>|W_lqq!i$#FrN&$XF z(s7l3an(6-x@K{;sJMo+xJHymJvhD<9{<`eUP~e#iHz?=#djkOqQMD$(g_3bgdx9# zk(`7vWWoe0Ve%|t8k{&Ioj3d66NQfAKb<9_!Abtvp=kQ9Y0OhW{s|sAsSItYOiQUOnlca0QrTtFIL*_z{nO5=(s1)laW?5&h|3T zjsqn79%(B8{aw5!gxQMc%a&zL^auVA7{YJA>=yTJ~pC`-YX8Gsl z$oPe{zp;-BB% zmfxxA*|wD5LtoHG?@@1FFcj;Tm|HN`Rxly+IA*C}n!a#Grm*X{V9vh~m0P%cF1pZG z`02b5OL4JV%GL%rsme5#~fC5Uuc_j?(B}~gDEEgpZhEjIf zQcjCf?toI>yizLB0>R}{p<0i(=cS^uW#asX`~hXsd1bQgW!7e83KwOH48|f1)e#qA_5sx~3aHCX{QC-CaL_L_p_nxcyu1Ve49Y;CzkZDl}hbzW_4du{!4 zZNo)vBST%YY+b8G-RpolWL{l+dtK*pUH3&@4?}&QZ2f>mJ$YEoNM8LOvU+T}eljk0 z;-Y>=_Jyx`&0N3>lx*Bk`-_$37oRR(pcxw0WE(at8nyx&w(}Zx+Z*9JxjS_$5Jn173b3@pw3PM{6L*-cEBO%MTZ7RF{y%VssHCf@vJ{*GqB56wcC&BBZ=qH-U?O0UAF2ozGC7pGPZnW`s~%s zOd-7EmDPt=CIYW)8DHDWy>_&G?fmSuOa5!Oj@R(rSC21WyOR`IFuw7!eB+~?rNG!4 z(D8;V`%U2Gn-Bq$hjPdWOJvkDWK2FXt^;Yuh)lXf%71y2BG;BtXP9Q$mXqHG@ovle z&{p)oAc3*HRIa_e&b#1Av-#%wL7{m zJ9-#9DTX=*EIa8cI)?H)Q{p?vK6E}G@0?`pQWWT%`%padtP9lvo6hfA8E=}u>_Xo# zcCTHEeYETz>gd|a?l#ngi% z-vhCKOAy!t2uwT5?;&03A>Z@guIr`}Y^0R$1r@x+E9hnD>}6W%Wx48wF!iy^_iJC7WDCV_6e@^2?Yw$G4&T(_KI5d&uaBc7W9wB^~}ohnek9^b*SBCe#wtJhreGvt zFVEv@B!y`-O@1`PYBVcwG^b!RuXD6uWwb~>GLdO4r+uW zq8e|{4qK6)?yZQ2&^d2tG}~*W(BH(uF;b3pHVIWxXU!0x_0i7*RsLROr^1jVxq-yP2R*A*tWeTjWgRL8MKiQ904A*;N$0GAfKhU5 ztUd?XSF^=31vsxo^F|@pbhrX|fie6^8XWh9maCN_`!)b}@l;{%>>;ANeujx^eKF-J zZz<196@dc)E(@k+hbbwg3`HPbuvh<-h*^?Z3b{*zzCMx2c278&+az+s>XAR6L18W* zJ(a2PXxkU7pxsz11ngYK#Z-@|ow_tib=0Lu8D_SieWc2>Q@&i$$G`x*IcEm|~o6Y+n=AqhFqQ~X=##&ky_raJ`xr8|1@H~#DnHsxo)-`x=n zTuv9% zCo^%(9K&UcD%2R|m+kqvzwt(Ti*^>J+{e(@VBkAe&D-Yp_89Oj^{oUXMW zFD#^dP7h3Go0X33Dk$*-2oe)NG(g=6Dr%!-bIE{)Hg^+W*h|W}H*!no9AuG8`|Kf* z+?F&-V@rqSJB8w;?U)Tr^ZEnp51l}4lwwFhR9AZO7jMHKA_Xm3H zqY5(NFsUg(lM<-_3P|Gh=>W?rl{-^|Tx>o?IYD5+7Pn9?Ifkwvi7StTlxe>)9VYwa z`sjn#+&8}@Vd{|71gX7(Hg(dd_cHns*2{=+a!KK37X()kyst8!MP)N2mqDydzqmce zHCQe+)*$u^f> z7QY3Yin$g9nn0;ZJv6yid@w@aM{bY3SNFRr7TU-Wb&uQKUjTvsFaDJNJO0@AQow%W zj}6H+eStJ(Nq;;Yn^yUV0YWtaLhH7NI&{!TU{I~bNXbs)WJG%QE41%1_#^BznV^wY zrddd;ep(NvcF`|VCc75j)pIcn(@vBP+HK;Ut<2P`y0KO$3+h1dL=1iw`U&O!YOaLNXAUR9N@{5oC{`4 z>RC!Zh4w$L(V(l|0uA-z$bH)I&&%h`Rd@*FmcJ>sGK%mDdf%-R5>mO`rcN#iSo&@q zf7ayqm!#aLL2e~%6Z9j|WC6gjM>rJl07(b|;MzNU_N!KnK!lOXZevB9Xu=_8H6?G* zcx2aa?5LPwF{~;afC#o&hOiL!P?|9sdvT7eGjsyWg5OM{j9WE!GXDiFvlu%Jt1MQu z@@&;ak-ug=7IpzP%+SV>cFYuD$#u*!o{*1Oj`Fy*`FRc#Ma& zN<<41a*HjKY8@C6^osf)J@g;R?e)Jm7or!x`FC^iGyF|%f5TVgpYV0~zu*g6pT<%L z{|#Tae!*AOU+~rT7kpia1$fySmg?l!`t6Fj8P!VbEv)1nRnC-(wRwEM@UDT?Fg?q9 z6+k1P^BVdwE26__Up=Y>n(9JNsvW;0K=e?O^s?_g6UU?_dM`>E|%Y^A76(tk+O29_P$efaXL#UxG< zu+pgFmrpVLQd2$ldHsunDI9X3i)|=?#Sa3w!TZOOF#ca?07|(37Y+1#lKdZNUA5IS52+j?)*0&wxk#?cCEL7Mz*EciF5o zIG1lCk=2+w!J;5*{kAVd)5wX`VGq@7&erE_82Ru+X&|HTq=@iElZoOo*H21=y$VRdWbih5GwBSzAeq&o0d;PIPx$pBVtf!TE3eWbC zCb(6}sN0LhcdpBIbUw?t=3VvBw~nv0cqQ5pf&_s$%pRwWvF2F42YBXRLi%rDV?Ijk zb8kU#4Ra+zWVcuNuvLhMGO6Chh^q(Uh+k|wcrdCAN$y2!#gimutihI* zhTsMwa}xY!53BpQE;82RaJiO&WT`YD{7}}@fwBoaE%@d4Gqt*McKDi&Hv?(6>g;iZocxa0UWu*Vg132c zC3&F}i@W?oSQ8lNu@^`yI8Fba4iTK)U+GifCFLHUCj3d?bhGd8u}>+&!Nj_ z_|4#6={MvnndswfhMJda(G>aAQPlQr$7bK+&o= zC}jLH^l=_RGo^sfyY0SD(V-hXVe|x9KwPmsltUaDgNj;F@D_COvn5x^0YGkFg=63@ zxv^4`!W5?n)CxG`I18f*cFs_u4sn^{;^GX|mEY`X(oYu5B`A+;BCFA-`;1hE(T)~4 z=VkvsZBGXbSFx-wsUX zaXnUFx?|el7bsLA3kZ0Y(GQa!+fFGkP4tLdi+G@QkxVvLke-xfFFmqTR7^}$6G`;q z<{(B+B#VPW%+Q4nlp(-{jZN#Xfz_HsStJUFO~PPu&m?nY&THCYVJ?s5pn5F zlw)+WMZ`KOb%Y2WqRWW#;r`%QxjkcQWg_Z&rKCF(wy8|WB&DxCTpQ^A1Q6>0#GO5}RYG zOC9Ef58=_?&8NhR4Wy=!+c^o`l}bL@wBwTV>_1Wh?irGIS**M%h`wtSm6v*o%z`FyW;)6X@adzyWU&0v#dgW)#`@VvXmYunlrna|IzSshv&)aP# zR;IsuW#{|XyG<@^UWH>%2N%NJ#)DrSWI-14xW1Bi)``Bn*Uj;20bkJYz_L%0t4Ng* z^i;1g!Bh5AwO_=a&VQ2S>+-EBgv>LEPVZ*r8B<;5dRf0)hI9HRMiNUFLVFd>bf1Ls zF6%yZH5Bq+f6OmSqIe#D-zf+#b8oAn@JD2kMS$&Y(+j$xB+F;^%kLg}N`LwG^Y97n zAgy|qRgvh%cVV`X@4ki`1g9EK~Acb@#pQGjJdse8`lPtiN!oNwkbDMW7rKbF^V*<2np`Hk{;8| z&hN5CZcj3`H95kf*!>N4&RXpBO9*2@)_ycQipARbvL@KCs*S5mo;$aWns7~4klgqA zc0pVJworgcFhpMo9Y;h0(gDM9gd*x?RNZ1W+>#StQ*YPDMG~mQQi&|gX^CT3nm=df zF<$>6I2ug_%s9M!Gaf}irV#w|+3TLBrIELjcIl<7;pEPTYh3B}c3~NgXFj(Sk5Q~D zv>^Uex#$W>I@ix5ngU{WIAGUJp>O*y7RjZ9?8S9@))UPo+@I~Y-<+Sm({tSwm$Kcd zoYGs?`eMb`@?``Y@9tr3sLTz#J_d~1_KYPXSt*@@G#rQ#;{oOSD8!VcZ5iNViNayH z?@=w<5o6oyYV7-f<7~bwP6w#Dt&<}g-T<;phe}e#2nO~F=_jR;yeicb^3Vlms!=Bx z!X#iWp}G<#?gnI%cAO=oa@o=$W;#%FVSx0eMkt~5ZSGzj86R6VGU@P`=psedklrFt zW+O*D89%U0kKI1RC=vXQFSAq)vJJ$@bm(IZA`(s%5%ZC7dW28FwKOowQ=u%G87S=@ z8vx0J!nj1Lt(1oV^1xaeT@W=`;iQwWjh&sUo;81!vw$xLhZt9rT^&yq=QsqDBt zdF!14klq?ePoQRi>*I^<7xe4qzE$waz<=PrPOi{!a1i=n0L_sset%++PeVN@1yAzq zU_FNTkxU9gVFJSV&9w=$h?C160CBBF4lsg&fY-^cUhj-I+>(IxbgsvLUTz-AY8^>4 zK&L54GYFPRpzSwylNT8-3L6Y+)cqm6pDq>(T)xIwpETUEbZ(8q( zr&ktQ*>2+0NTrvG`=vFFXY&{+Bpm+nc|2d*VeFwsy2EHVm)AZM-{Jj11aY*Ipc_r~ zbO~oZgG#Mejb06ZwW$-B_N(Fx%bzs^npvB(g_4peLCe$niB=|UMK~G@N0o$pI~c3O z+kq4a@lvsnh)co`XDGMQ+8m1|c*83N5P3$#2 zlL$rQNuxJH!Hc_6$n!Zk+tpRBV);O*KgEHNJg(X6P<$}tc4?Q|D@Xza9m3(& zmn1jZNIfMc2^WR{uJ5!`hEiA@=*ZTlatsk;69eoF?YzCGA$v?Y6E^tXgtSJ4hdrcn zJB`ZZAg*$7iHYJM7PH(`4mE|CCg8_>B3Z2TG_g&AvJKTldH56uud^zrnPBi{zuyQQ5es2!!2KB@dRLYb69-!YtA{z{@6?v#b#RUP7%t4}r5WH8T!%V;ySz7x`Z zWHj^1=Y_#iW$QP+k8YflmXBh03oSO%UiFB*imS*n!yCnq=FXh^6&w0A{y_JDh0o$1 z)-0EM4_@}a>RD?4O$S2Ge$&@HC>0k+(TiiFHLMt%VnT(qQNM%;#u42*U2uiOYYg| zNADtv{fa#VYwZUK2}wl1N>{$L$eBPeD*|JUJ=8-P5b_=-W7G|9M?I9sj>5xPK|}6ZG+<>+ykbTuFQ_uQ3*26?*V+o zw5Cug=jwG;u^G5QiVO^4noQd61WaT2WU`Tr2c=(46U)0_MqOYR9-XE#sZpUJKT@hE zgVbqMB7Hcd2#i$laiqlaN3O$UW&p|)MSaK;%T!)2muW(U0ej5C#hFJgx1o{-D$oru zE`!T*vcHo#bmZ5QP2vYsr-KGniGHh+Q1-jHrpbKZJ8E1tu+2n?V})MyNOH1aP(JjO$eEX z!tTAx%KR0}c~5A1zhl3hc5aX6cGFuxhvnrNT+|1J4Sn8`X!xWvX%%{P|acW_J&nqj$Vicm8)SfE>zH6 zlo!TV2q#*pxPv0?HJk79^T8Yx0yl* zKWiC&T`5c9p${lSval(F!s9SvC&$gb7vi%ibZf-nqLvuwGqQAZOzj{Y zLqx828!>z9Q|-5pVqr1HSSWX%vc@Byd6%FO28AOe!5fQvN8{YOK>R z@lG=kX{o}RW5`Ow7=s065A!b55k>hOC(6^VQ5NI!J0k6(sf8UVq?275LqMWKVu-j2 z8DSg%!y4`&J{>1pqCy`)q!&PPW=9@La^SZLpu>~dz_$o=jw54Dz`_nWD+d>cnvP{v zD3qZ>KI362jarA^%Btzjb!}L3j(l=e>TI(eYnz*=;OpdK-9Bw3PezXh#s(&dspUqvuFTy%ef zfkMuUOLW;FkRGL3bL&E1OKPvtlU(e+4uY;xel%Mn$X#4=nwTHJ7D>);ds$!46~k7< z#E>X;5J@!=m>^IbECAV+v%|wf4*ptNIY+QdAW# zG<*Xk0^))>THdwcrHbMFuMnHL%`a^;i7b1?zv>iGuU*X!XT7-dY{Nd|&aT($7?EA4 z$%hUp=8h*)syVu&dV_Z<8U5;I`jMoCp3iY9U~Pxt#6W6My%5{}Kct!o^A~6@p7cS1 z3i88X%7EsPL^HC|Q%rtgyPeW{P)Pdn$+xgKU)@qnJZ%4%@>C~zVRGf+_IWh(fi1ab zzh{s1j_fU+&WrD~OPQB9`PWY(&X0$u>ZJaVbx_&*s$QNvbx&^Q$Gha0k00ITeM>u0 zcxvrcMwb0KV7X(nsR^4?%&uKmXTNwI+w4IRL%2obhbxZV7<3;+Q|9=Jd)HBQcCtlPhhQ%y}Y-WWiO=(S7ACts`T|u|>UKu^Lz+i4DMrg#aIveQmLM;JQ z=K%U8l}9g=APCzIyWFNZgeW)$I~pwMb8)i7F}!D(Mua0C|`@YFBr9t4P78 z?co9Kqx9A|BKz7yj_f^3X6aZr@0R=flrGEskL0RP-mTnbCgGmLH{fHDb7e4wu$qIm zBE&M;U2j4g!_auVA21MBahKgIe&I6@9W$>1@e zLt!ojA~E7eUS;?I$dy^X5e~Tq8%?&xdXmCb#7MHjA(DeF62wiHOANB@C5^4MKH#Ct-!dggkW2yCGRYr1&uMwN7O$+7Ciol+;K zoT@MaC7_X;>`o(fvbaC*tW$ch!ctoO@)DX*42@Bw#PiP31Mz4VgRp#xra2d=2nx~v zS`ywKMkc?FaVO@KT1(-xm5j@+CHR-l@F0ITOZcW?Bv04A>9c*)@7-@+n*0pLf9Y^! zzYVfD&&!|fz0b9xFHS-udr*;S{P1uPY*Qc02)uHj>f~DC61~Tn{LsVeUyX>|e_-5S z?;@atslPd2>X(_mjZXb#X2Di88rg@ENhCZrVt||)F*hoInpxU}i8{enxNH^U`9gMM z0~(&3n(=bXaVLE59j2oxV?p=<;*N<lSzOU0Q4UO7OHfL&MdzN#k^0*fUp$PKrIL z2@Hh0&DZE=QD3FZ^5~32<;#A!C_DGr#FPJg@Kehk`-x819ekL3Bcdt4r`cY-Xiu>} zuGYS|l+UR)qsnn(Lo;4tEMvzcwbrF)#dw3*?BZ;6XjrJQ3w7n5{sA}iyTM{|+hwFsN_0tnnx>X7>u(WwQ%eyzPuu86QWJ8}Wx$AddMZD?` zFZFV@(?j=0da^to&+ZQDji9ewya!CMMTc?>c-v6XLHuk3{$Py7HAfT1u)mhbQWWaTSql-XwOzC21+|uF%DCAMOPzv` ztrK!JPeMT}BgctgjHp+U!BKrskRV9DfhD$&JWdoHh{#Rg(GQ7s$ii_wz?a;g%bLtT z5~d!q=O2r%RD@_W#Y^oEtXC<#pEzIF^d)XpB9-OLMaJxV zjRPRLdLGTdgXEXEFKl~p5>!dPwa#dDVA2==uDBn=>O0*H< zU7*@8fI}U}lYj1N%~x=)!NLhYD>x>TXp{tOd*`2O0CI;W$?b)3 zBnb4`rjyGZ8rv(UM&)fdy19q+yT~H=ePKM=QGAP8I7F+O;_+!lWI`4pwwer?CN)3| zD{r_dlS*H!3e@6cLiQTnCi$I>yIJDvYgTVP*sGZol{0UZQDS^l367=9G9_ehyY*&M ze@8ERymWJzE3>?AzkRRvtH$H^4TuFC^63XpFo&}COWc2Hy8lSQeg6#wLn3}t@X-I3 zf`4nic8~R|JvPJ0ZtQpGWLhfK?4@*zIyGjilo8C)raG<}Y=$LTP|&0H16SixV@8WE zixj^37gmG;k1o8b%(L&bn34sYKD2nH`1D=@x~CVX19SFl%YLs@DG}fvz)IIJsxd5N zDQUvCi$rxh-hc|w14gYL7iWjF!wnXKw}32l*7?SRgv`j5r$eAy77`PO88S<93%qbZ zY|rZY))aR)xsKlKcz10`E?kpRVYrZIu36C$pdgCZNo5aGU1jG;oVFvEEi2{PgA zRkkHy87b6K3_X|%<#0hqi0-4xFouG>vJQW+v0XntNXhvF4g+XIk$x;hc~a&O6`rhc z7D%m0$_4pS>XAlC11Ei)phPN$vORt$bDH5fil>ycMFGdlM6g;jaN4Ph?hP2}l5&Kk zL}bDrn<=H>J|e`Xnb?bpBA`pcTOgJ_L*S<12SHSXF1*&G@x9|(GmEDVaFdv^s5b0G z&%Bg}@glE{%ZW*V4#{^q&h#AQbADa%M)*m>cwrTSySHjj&nznP6 z;C@o&gsvSeW^={3i5LpLANZ8#zRm%~TeHlNMQaQNi;hy)|LZEb_+Lo47r*8=2@8S# zPo{rpO&ZH9oxi}7?oaUichg_%pdWJ#Yw7RR&^W4ubEWn4mT^VRg&Wt2(w<=_w>~cP z3IQ^h?r3H)Qf1CYj}H^%N!9UZXnOWTJWd^#1}_a?-Yvx85rlVQQJ_t@z_)!6cB+P@ zYz|0~LH~?qkHex~{=ucWT6KMKtJB;j6;i9Kvz_(mWNX=HEl$JSgoJ%=1-Z8|B%H{I z^x7LCv)NC~1rI(Fv9T^0O#Uw4rYNADG2C7Zb&m+VIU}R4#s_ROpJDIuN8z4q^VDWr@mVn{kvMPlMV>p-Eee%{Y%(&TBlgpzZo5gqWW%Y?t)QD>o6BIVKVVR z?;4Fl3-63n`=GJeg0cmqy>5MNM)q^DSGSgTahkwqgLpL{@m{(j61m<+kkh zG;x*Wsa_g9GI`DNQ7!VBfsj!Nq zD~=I=V;HQTJ96rllEB>*wBT{=@`R?V2AO$VEaY3iiM(UsW3^oQXmRk?QR{u$?mL8U z)k6Y;d8#!$j<^y((uOaJC{H9 zKghu;|6w3vjG$@52!Z-Z>EoFJ1j=Q0qXLm4l99y8Em_E5n^p zvSuQeF|bE7gJ(1%>q%-+`MF&fE&v2y-V<1;ila@UbNRGqt7Oofk!b-etu)M3 z;-K}isQ}8ht*hr3D+HaH%H%LCA4RClAnmAOlONk)9oEq%7tlE7yVE$9c_BQ+K_T}xkZ4^|0CO{8UI?34k#Rcnl-$F-5U#rCPwrw5 z1BLBShDYq5IhQhJjkuHrDAbmgrGbdopXJ2q+eGAc-^T`hdu3ju$hD2hZTDLO>Ib<*v@3uFN39}Pl_X^_9=px;l(@!$S#5FXb56H50sq_Gq}{2k4b`oE86 zO@?xT1l2r%weioQF{RHw42%^ktFM?#i^>S5(>B5n(x)Kkzy`tY?{5F z%p`VKL>$t6>HW0RYo34Ul3Uk8=GjHhYAm)r|NV-hS-Y=l5B2HAlgkTde~^yjEjmG2 zObwKV?|Y2dE9MB>g@PX*?w#kRoJ!15@WnrOj#k|y&hC(Cy5asHQxEvI)BQr<97l=E z{laz!smO8~MS1q#EI#z@-3XOW+Z^!}CtWlJ)O06RtPg%B9@vC5A1D@kn^=crJw*)a zFDg=F@ggW#IZX{8UeeC7ML^=tC}SC@yw;-G40Gn)N%FQ=LqrJP&?JJhw$~E*#;U=| z#oykPDBfPHw%1W{_A4jWB&gv~0RfEHlX25V-eSJlp{N?HscHFX!;$!=KI}_;2TsoThXD09*Uz98Q+=HI)yi z%h9LR!|nTU2&o0fNcmfNRDqHNBHB?rHBf|3G)n;@(n{WErXT~^p0T4*MW7wh)1O=@ z=XqZ-MdCw7SucfE<6-}>&M+zr9$wqo#uk;M5{?OOnrFGbdoFDTbH}n1acC!DrM5c6 z$n;YPzL$z9xUdBojOB&sV4io43WJ7&!uZp^yeC&4$Fo%w#o~Zwkq3oXQNLW8#vo7M zq+FAp3ST$;RoqF)-QWY4=EWFyDiBL^g9`;qK;0-GYP7 zS>Kx3>$j9x1Yq0XcTfl<1pTh{eJIXWc9JJ4cTAcop?Oba;HMy(!mu@ZN4BWFT-B0j zI)$7PVyZZCdnjvzRQ7Y`SKC%G=HBpWJg&(z`)6w}fc?oLfml%r6mD1>$sFb28GU`O zv;>g>AP1?~Vfk#Luz{M47U|DJ>Gy;Rd-i&=j%lNlxlU>HiDcGs+ZhB3SEb4FhjW-O z9Prla--@CxeHBI~i--Bbf$-%J_G11xv%WvSZ~(65+*+#lnXSD%F~d#zLwT-R9#v(b z1wUVPMnElPjY95j%Cl6}1?R++SNzMhxGm?@Q#iS%Q|1e$>HuCodE+{Us=x=yxB?T!)1SIDAN#sm&m^a};KUZfH6>7aTeXf>X> zT^*AQh0_LhllKM|uYX z(gc*ys~C!a3YbC(O+p7j45)}=2}Pt>LKP4-peQP6KvYmfK>vt}^74Q7ex7&lea;@| zoKI(rckIt=WMpNoJ9Ex;&+GbK_XE!LrL2Fu8Tom&>}~cbgMc-KVoAgJH;;NWo}=rI z#?LjOV_ihAIN*qDTkG^o-bN><K%L!~ zpv~($nStZ*n6%HCcaxT%2YDg?ZrBKIi$15KR@1zwsMAc=VSqz4i!Sy;xPlf5HDHAY z9~+uK*ps8m&E7he&ds}2EB1yV^XFZOm$sLGP627mNx_DpbAA}2*kpemM%-;Inmib0 zh5!A=AzQd$LZn$ER~Am2EfN$^Izx(I3q&MHHKi4>gLtUkCcFI68MY4?o@`ncgF`r1 z(2C7AhJ>(|Gc&-be5qm9AS?SL&XzCq=c2r|lK#i&^C~tbZBq}|1Km{?U&m>61 z)HkFms-3F%7_MgfZSuku#HHMn=U4P!sHlXgQ*-!fxCZa0PuFj6_O_~!a!t8#q%m=& zZA7_nrR~4U91i@4Iq9D(*x0|%AhU9m6SWWNh zi#Ecs*tvpd;l9^`F5bN+QLQ$8^H}lgoL3@?vzLyyRS_h+zT9umJ|gn@O4uOd9}txI zttJevTrci=k-$(uSK&L;camq8-&~+3u3mibVm_wva>(7+;;%kOKf74`NampAVl3xc zU6$|UueV2^_KUB+_upPT!s|IDlXo`bWAfr;;@%GjrI(I@8qZTwtIv zdd>CVs??|UDDTTg$z@7$oAEd64xr-4u`!;ayM)G2WG}~mq{{oZ-QleG!-?l*Luj%wMK?DNvE2Nabg{h4*HT3p*U{_QP;}fcyo`r0|NbT zyUl-lEC0t|FasRf9c%4fqvH+0j@G{^S9kst6G#4LR$*$7B{8|@{$^H1UhM)5?JLGx zTYlQox!_!=V9{V++rH>hsu-LbuO`$yenvcIVW=fpWxU4n)N9nsCsC7U9TSzW^>{}< zsowAB5W!aw?Q(W7-bvv1oS)TXUiG9?Rp8&us*&|}|GPqp06Y2r ztdPt8e`}lbkU}=~#-4J+g($7i+bxM<_9ar*UMs5Ya${uzo|fB2|E6v33RmlBb~|I3 z{OIY}S4Ed|O4Ncq{ADeU=Os%+y~j&0dDMFxy^=DTvglpzrzbNzevHMrPU7?ZUE?$C z&xrD?GUzkZn(iV$=p9x!N_f^Iuzm)O_@6&7K+_!12#5ty{^3&I;gj0Bk=;*+@%;-p zCt{aQ{O^Es8PWZiu9SD7Rms)6lIBV^*C8jx{mm1>8sz^7oU6D1HGe(Zmh9+rPFK^Y zE&(DiSZaC2`^7~e5%1Q20_ToAxiq&J;=1Wt)8=SniGu(`Y~I`xQf`?(u3XFRotQnV zVAc*n;FLBkPn&af7~>_{MiXuaNxQQ1eQ6>wwO_}lO0=4CuO|H!eQOsumx>gXZBy4t zSzV-|E&J6}EZASl7Wps&%8vt}?D#^Gj$M;#GD`k{w)8 zZy`MlleY>jkF+C(M$hdJ&Z^Zm<))=b4d#mwLNlm2sXt3$pgmtJ`|VLT1j3nUVzhvR z7>K{khKgUV$QB7Ew%7~m6cJwS0_SSHj|?Cht?eP!B>29~q39BG@8eHczHllVBt4-c zGR1G%O?40iXW~aB$X5L%>i`b$b(m>3&@uI=b>4_X@DQHq5y6=ssZO}sHd0CI1v-jb z?(Wz@ z=J7PYw1Zpr>s?J;{rZ*OvS)EO?o zCJV^i3sPKOx+Q!Lm~(gMDs!kVKyiCNO0jxdQ_8C%sC`s&_k5-A-EaQSJpsAlV3FgG zwv}(8KYHiX47=6x=RiD%bj-%evu* zIE?|FHZvGaHU*s7w(=PgW5(mSi?mo!Z^G-;y--83J8kdMjSJf}5vCL%{A}f&6_}W7 z72BpO>gfvJM#7ltP^KYY5rT53#oLZq;(j$>aRJ}ix^I>icoye4Qm4BVEOrfgN5C__ zb4cmU_IrtpfX~0aC|qIQ;8!=dGe9XvgGMK8MFogpT!3l|Ngw+bJae_!S=fFxf=IBg5v=^I-;SK2thzzAo4R*2YjkwW5 ztF`nEen+r~E_mZJy61_ss7eD=iSD)6As-2%ehn)~%GkgO$^9c3cJvviz5 zQbT~IqisylAxs_ zVEvlYZQaL*0!eOi@0(m$FFKkrDb;8E*d~;PN*e{s&X64R7bnpnBwN{AY~Xi8x?{Fy zlEPyfdX*IqYBY<&#Pm|$4RLnB-^lj-2g(Mh*>)EgOJ9>DHO8PL3cKdz_;ULUA;QD= zkiAPB+K&HxW%otd>(O#m%e_sL5yJqKhQL2RS>~{kdoy0nD7BlZ6r(*4Ue5FHoR}t&Hfw2UDE&Zc z3e-LHo$WCiw465N+x@LdD8075X6jpeO(nyY*X;y#nFGxp`>HAiy4fUaP?kpE(Oy+Ymr?Nf#7BT=W&ooD))sAB3VZrO+xbU-c{$ya zJj@L8JiqniJ$N5ypH8K<^U2?EY$xgZ=&=jgh5&jGn|ThI@xaVs<-@7_ZjpJ58keA5 zRj@J+D$_e`2koX+hD)WE9Nn64Bogw>uE@Qo8uJ8rT=>zyl1PHTqK_Vpt-#(bmxK-j z+MHivZ0pTb<@Q{4DwAS6)@;8OzABib!BCYT(!v}1wPBRoUdLI09QECKIG{Vl&K#z% zpJB~U6qBf*O91N$tMbA)HCP=(v8^Ms*h!dYwn?1t-#Z?yzHjP@K~;HP652oequTMfNHiH{Ik1V7B`QmE2m#`L`v z&)g9~boI0yIiaDL_2zw;!0-3ce?GdfbK~AUkcC~+({z#-5DS#*{ve4dQ>yb<}@kwQ-6v`+`S? z=#=?2nG`>kO8&IZyTs;hU~Q6b^0Kox(Mk6BtXY8m%_UKVDvR3%gV~97OQj zx#|uAeSu%(?|WN59r*aqi9439F;$r_cM+n@`*%KjaXa+A{$Sz83zEnEqB%x_GGCR8 zhw!ohC!00Rtx3-`T^DmA$Of+%j7tXTWGaPZ=BvcwCauLiW9x2d=Owv**hrQ(7LOYM zlR@bsGg*6=vPLc>M~I%nv_+0~!Mao+-NYz5AR>YMczj;HVe$sUt2T zJy(#L>EC`rJ3Y_$YZkF)nKU&(8|I5#3MBb zyWg09l8jl$qputQoqva!BO6=dAk2{~;v-4Ml_uOTl!s(nnTFnM}||H|i>OL|M-d$p>_o4q9?h6YKnQ@3cL5kYDfPYIfv9KCt7b0ZS2^$40Ab%p(L)?IkAgD$nNhiw0#-ZJ9}J9{|G> zJEPNtonS%+_&_BTw3RA$lNs{H3gygAg@gc2$$S$;^du9NLICCiC^u_;UPp$Cwt>Fe z?&X7n2&Q|A7d}qdSt5$n1v|FnQkxO>D8YhWo27wq*GY-RpG;nrNkLby@ z-3~I~qZcR(2+V8*{()2EU}dm=VKODZUq#l^QCxOSKVq%GAXhI0Z-thFhB8YIbl}_^ zG-dMzu?w<7Ue%B(>hB#OjKp(oTF_bdl&uJm2@w~6>k0ebU+Y(WELo7ozfSm?=;ao0 zCEinVh^b5aD_W!xNDXObpD@Y_1!j4+;>86pL_S|AQodK6rsRJda7ocq;&rG*S-%84 zmv-p<)oVbBPamk*Hi^b{@v+#e4+pNQL|<#}y%r4=O|nMy5k=DzTVY_}y|s`M0z<(E zHnfIZ9Y?KLRnG1L=K^ks14X@nB3oqP_1Zmq#KA&5#2o%ix>ZF(n^3TT$oh%s&6j@z z=SmpxSsrGY*cN{Q1-L9M!Q~s^wxxQaKX5Rc6r?#X$+Q%)MQRh)xPjXR&ONxGu@ z*%7S+e7u8e7cnDjGEw4YF?t#u+LE0%yTCae;3RK%dgxrW!b}hl0#1Je=e*+fs9%um zZM$-y?q)#W&0=eT+oS(Cz`6KWU4H}TByS~|{R236@>Y7?tzF<;#;aRdzi!<)Jdj_N7I=sdFVEQutkBJ7kTL#B1*}8XNbcMIM`5~ zfaw5KB^*9Z!D6NQrTWA3xqLnuBhgp+^6_~mg+#V-d|&!R{o$|xe6?aC(1yq#6Es}O z896A--X_)ZSkT|5g3fEgGfQxt9o~R}o0}fBn9TxPUEO12<*m_taQ`=?DaSBVPQZhL z4*rJDDi`GHAtp#Z+y~e{JU%3u6Y&wCfk*ztjVS5>qj>1Y53rMU>vDLW8I-?W*`up+&yBChxQw(;o8aLKis7fY+&O{Ke zK|Aa0By_k?_Xi5|x~YI^I+yPR46`3S?O|^JE%~YZVsG35m9Ga(hFI8H?xc5SXljb} zY235@M=*-+X1x$#?BJC3XPdot&xYvFa{GEBjx=IZW)wr7GCq?`9c&a*o+dq<5wd?_ z|9fTxJQMvHa6)>9Y0=cK_*93-w+DIu^byC6m4i0|T3e=lx(XaxwFU%2fU`L4dlobY z*@|PuDB%WLpilWjreU9-pHt*ye1@>b&~ahS4X-3K6U8mJU&T)KUVZrT)QTvE2OeNy zX8`byonNA7Z`a=_2soTt*L&yHV<(J~^lU3yOy)Os8ZE{D zl8r@pVEa8powZyg7I+pf>JLoWUt@jiTMHT^Aj<;x5N6dvfc`|xu6$JU8ZgufzSS8S zkgDvWOWJ($*8DCkWLf-({rd#c_~sh=JVnvMa{P4@(9%jDDykEs+pGh~{&+;I+U|Y) z&Lij|Kges~eY^)eVF`aQcgbS!ewqo++H$dU49vTk?%d$B1ArcC*HYimNhQgA@}mc_ zmW4=*P8$j5vPjofKRBP!l{l>EOoH1ciEo48DQsBTc`%s-=kwbao&~#}gAW#jRf#mD zg~C_nbv?f)hzbrFCBrN+GVNDzGPcX7G4Nad^c{+7WD+cxDf&?tXo!bKkd(V3k9-r+ zU?ji?tlIAJKBusqZj`NNY6Fb%c9-Oyb{_ge5XSuz`01_1o5kqt zATvWN_owdoqCn zy5oe1=(}d$`c|;*-0_-K$WGSR$-pIa8(@gCR>}jjaiUWXQ2Bs$`ttB1`w5SY^jNF? z!$g?^{t{^eOz^N91cWmM>16Po&H_KZ1Z^c(yqf4NVX2>;2jp|GAD9T5z+&$ThG-=o zMZ#_aVEmWB_kN)b0q}9=ccCt%^*0Nt4_F=>P9&Urv$&Q;_zO0_Yf(nMEW$oX;k&yh z_t5&+XxX)3;%K(sMIHtFlY^O|?Cu&~Uw;QFA&+yvV4my*|CSmIA7A@wrPO|}aB~{B z4DT(%dYX(AF+3~GmmRek+$54cx5(ogT8sBswqIG}2edT}?W66u_}8#PY)}d7Y-cKk z2p*t9cc{F1HJQ8Vi=4{BDD4JiNfCFEZI(i{<}+em3tvY(nNu zj6J!J#!l5Jg;s<)K63D?5#l+8eM(&F3CDzc5W9TZ?qA;w(qeDPhc@bMrOx>CpD*%F;&nL@6KON}eue%#;x??#pbco!qlfg4p`tfPkasD^EJ zuB0P*_I70lJkZta-eU_Bu{Ij!?u}IMYNzn)^|UcyRBbckqK zIq!O^l_Hz=DoroGIQo)9OYiLm7ZL^+Y37J9ry-fN(U6f! z7vGTgx+h^VNzJ=C9BL|GVK*N)r<2db?5LdVZrrH0-cYqa^Q@aX_`s;mPH?QTSwgp6 zvFPcdpx=ekJgE@%u|3YFqv}p{T~1qGeKaX?QQ#opiK7HT(_(Dz?Qco#R%%kqkTDlV zTOMIBbc)3E)+@FXBQGR6mPhb`tl`8`O{m^Ono^6N+GX?iv}1pxThJq@hR6O1oq;5dDNp)xYWL9N=}TU3qZ$OCmzLHBKe!Maz1LOM_uB0 zY9at4sh&70<$gEtom5PQs`i`qsX%O9Y-r-5fBY2Hy`Yeh zpCFY;N`z-SImo0o2&6#uzsa5bmNwUaDP`)1_`8>Uoh{0~2gIVJXkHVEfe5mvSH4oU z_oG|Qb&zS%;iT?Hg|B=fEg;o2Mo(4qh-5H6&LadAl8BI6lXHpZ`BOGWRPaA#5!vD{ zB9a5aS-K`+`FF4OZM=+cUWo}Np);pUl(Wh^MbClpIAq$Wt+-Ejtrq}6#cD1G)~~yn z++Ih#GoirGhB@lvHi2QB4?E(9#MdCf$>OP5WV*@=zjwW*4F2B7(i3Sh(?%5M5W^18Y($C2pnVgSvNXbEHWJgJ8uE>NrTdxql3Lkk=XS4 z5a3&(0lg~kLNR{`s2QJUk)p(T7Xnnhls^w2%DWdEtwn`U0a9$BfmZfo5H8x+Pu`J5 zbK?lb42?*veE^5DJjBh@xz^3!sjjy_2_S=l*nfvz92+1Yyb`S}K?dn8gu=5Az7y=8$=P#GpOHk2hi2Ekyz$XU6~PTT zl`|%a&?M>_H1wZR$)|!p#FRbaft@aCDvI!)pyv)kAc{qf;-|qhtUpCeMt5HKSa}ho zQ8@yK1Dh>Ui~EO#;zu+YU|2u;vw4IAZInaEU)E4w^LHc@iTxWAsIfTiXTa&qsNMV(F#X*-7_qt6V$K7OXg$Abfi(IT1e;|)w3*B znG_1(*dro3!)~xnrxsvz5h68YXsPp?ju*``PQXvd9 zq))Pe4=1e7E!L)AotBrNfC_G}LkE;XROg&*UP=-9lDH#=ZD>*QV!zF=Xlsd0&PX`2 zokp;Oie3&$*z9EbMK~SlspL88Um#G`_2Edb%LtQ&QuvsbPzBFQ&03j&ILd`3T1=D} zNm<{%sJSdzR*o`!+LCkZ&h>p$s)LC;dBw=Nb+94A-GE%j!w%sE@$1}jl zPcHeIZia}6m%}%f0h)4Ax-%Z{Ke2tz)>}^Wzwx!U7T;QO5L-LO%+|ahhs}4gQ61>> zc3Lh|5rZJv;wnEyJ~tOZ*seSh;OkYy+{Qkwj(TL>|F!pvWQ0@Q9{ug2+<;@a zIrfbd>MiZe3i|kFDTv4h=6b}asNZz5X*T!_mXvamo!FvX#Pi@kSpC3Y4&0~B6Qj93 z$ai!S#Iin!CKQTcAIRkjnO5rk;DsD=mAmi9*#>H@l!|+u&lgHbjoz7cW1Wt;a~_tB ze-z7;gFV>T!cghR=&WXyFMCKezF={-FcRnCt zWS%~xryq|!o^t2NCTZl-JIA>Uch=LL&K_)y0QUIG!I=!<=unF=%*1gQ@y)GVv8mjg zL$?G=G|+~ueD~8~PZVDO{@8S^lNv#(bL$%{k(myyP-7>yYZlv4HRj``lzuXjZNO^_UY14!!;I_-H>T4CqReT4QdGGhF6I{WuJ zGb(Rb=X&CCCtLml=kiC}r2J>e2Ul_<#6wMlE+%zu%W6AzoC%@HoH3G6GQO2;l8H%C zmKW->H~P88l+m~-TDI(wcb6f1c4xLQdFoDHsX8N9$s`Y?&q)?*X4mx+!By>MW+wz; zsiWqqgnR2JZ?b;D6C3-MCINv@%nDm*ci$orfZIg{*ZMWg>rKq#oo)j==mDl2u_AaR z59C@)@z%(5RR!)R<@xvn4?4m3Z{^t$YL({Mfp4uj#IqS=+J=8uFx}GF^P}~eeN)ylxdea}vCpbUsH4}G59?Nk zD}o=E>=(SPy=`N?&_)ps?*ayzry0YH#q7PZ9lV~>ewsK$FyXrLu&_X&BWdIm8MiE#Z}aSlxatI2eft&!bZHl1Py0HMEoAwlC7Zw)i8cqTkX4HhoHzK^ZdiY} ztdQ^1+k1x_2ZwrXG5Q^AlzS}nKl`CFz(PD4?ecpqTSmK3iPhHBb22Ytg-R;#a6S``wIZ;Wi z$0)SqnBT~KYMZUO@A(xy>&2cmMxI67zJ0HptUirC_TH0(aQ-DZ=3-v-`@zr^Fo$m| zCyA5i5`E1k30&u9e>Y&*I>vtGgne}@EtXZaW0!u3QqcZGi=pDlUP$c}D2W4;Wt4jT$ZOaD-#2fZ0yn2Ufrt3t=}x&5 zkX@S9I?$I*(^NEeoqg~%!1(vf^Vmv(?`K!hFqUu5Kc>odH*)vJS@oiN{SMJ z!5=}e0lPBz^D8I|1Oxku$!XD5bUV|MEd~kKH)P+S^;z3!|M|44zZPd>I36E-GOJ( z!ag2c;CS~J+I+;_c6?f(l->32xEhu1^)(wQm|~0BHEu4YAK&)@v5IpKZChmkTpxOT&TJzF~<@Bl|TLCm6-H{CdRkk@mLj|@=dvJ*(>hC`lBrhvoj zePf8eF*&c^wKXUb8|Qv#WC~4otrMn-r@=u#>`Rj=Ij_I@Yug2U_?YiPp)9LW zow^T^{i)ou0QdCS=Y_%Z$%?NKbA=45H4z)hZoD~7VV$8ESBy@ogZ-UyWDTL9P&k(Iife*H(yMH-vxBgp3ZF>;yCN zc&kTNmBF_rY(X8xvRzq4vCP~X5`Hz&gL0O+KIAYzCx{%;r(~V(#|_)hYx!#lVqutL zr&@B6-IUHi+dq5jCkCm^3DF_E3m8Gkr@r-Rfp}u7dj?-)f~FXA-tt2WmpJeUa?S=c z%*OhS#)Mb+d+OD(qJVTrZLMb{ONV_HV01=^Ost-~0!iC~rE+gKft5CfVL|B-ccf<2yxg(8GQYs6a;LHSn$&*wb-JWX-sghp_)9f{Cufn_@`tmo}S zpibHD^Z?zD%Z(+#Z+{Xzb}dkDcPG&zWRVIr_n(nUN# znK_D1kSed4Xqk$bEdL?f_gE`%0vmo3Q4}(j7liuZ6?=mrQdehXJ@#|~Rvkre36=#QPs_n~S=h0>-J9l0UWJ`v zINfxH2*@T*&%;yGNkl!P{glr;hB+JgSF~H8@sz>|LXIK@oUoP`oz5*J)1pq70B+=7 zYXeAad=dAPj!BP@t?|@&4nLKiOS@a=(UP=Rl)SgQW(SIgfp0)CDWJ%;yd*NS96%Lz z0%>j0v^gMIe81rNM_-S9{aw&-CLMMP=h_koR1<^7uxkB}=Q=WJ^C_y5PS8_4_)*o% zf=(du4??Mt;xRRAk57M2Xvxv0eEX#MEj_*||A}d4OMP^Dwj$fJtzEwHveh>>J$x&7 ziTO0x9~@MbJQWEeJDr_iKy_3TYPeK8_Mz$Zys&hS-+xM9j@FMP3idgH^o{B9&o_@e zPbJj2qg!YO#^AONq?SLOu;oPo(Y_tr z(G0ktzcg{Ol(Zw&BM;ey>Xa?U^UV|uh8PZ98}*}HMKSLF@q8@(=OjQ4_dUu_QnO|& zMZ2)Tlz1tJV&{a+$?VGjrqN6GD(Rg#imjq^sp{#1^eWlL$exw@o*Q_GDFxy%z+s+Cc?3n-1AhY{Ox@6g2!{h+hi3=46 zeh#+*9^69eJ3+YnA(5QCo$p~o!xq19PBZO43umjUyxIAEvp6zS_xG*B-(a8OU-NUb z(SL3hXI;eqd7Bs5ESo%!ZI-Q=asAxh6Rr@d z>eCjlOJ3Jv|5AT;MF>xR*K0N2k-jQrG8(%XKP_mwaIsZHK{=pRsrSUR{O9_+PKNR$ zpX+->QY%8iCo-LJ>zDG@NM&B=8U!Y%!4^Q}Q zn)+U-?A_4v=Uq_!Ep?)SF!&G@-9jwMPlw{{EiQ)^eG{mE}O`>e>koqg6nV|)i7 zJHO#nmrax6LeE6ZKcCj)bR?QIEBCdAn?1`UhEmnt2Kejy9=&CA2;zcf21 zpN+>~M#kf{x?aR0)oxawIq|t`zQ8P@ZZ6=bR?qU4zUzhWeGB&Xt&f}Ch+iE!p?>Gb z$G$HIH$6UT-UA}d3C@3Ha<%*UG|buk0PStU&?m$ABSXT0nyW*+!?$(rk9nBK-Iptz z_;_ETE@R`0()ruE51M9wej-26c_0-vqW3Bzxkvjzk=|pAotE~;*2sr=uB~LIezLv7 z9sMUYYIFKeJ;VO$eCiWuv1i&Z?#@jcpU*9oS}7wZn6K%L0F`?L3dOhSO&;H3Z7$Y2iG0F*;uz+K|gzgvE+h5r$1 z@c%J7-TgE?S?2bCw*35Cbb8EzvqV1A{~Dbh=pZfG^`D~CMNbz?{Kx3@y5z<`(*KH1 z*VJQsjQlG){ebj`p?^lFH)u9>GDMUEI+=~VISj$(uxgoqMyKZ@K#+$sEj}H-zXMWN z=Kd`@{l_aY9p8x}X;$wsK0)0gRp4&O`kdt5e~V7%3ObKpoeWhlpO_JZ>~gd@xd1+m zuC!{jZf^0;&M=_#l<5+lbsTIXI_IOaM55DimgyuHeh>dw{8J{`jX8+sPPqulTt-N) zbe2J=n^JunOoFU9S;McDP643N6I=iofdX(c1y`O5AV@1-Xp|f7Ecgk0%AL)9PYBpV+zf_KS zv{Lk`#R*3`aMd#Is$@Xl7vFj!YNN^e=pCiGx})6uVeV0Jp9_beBEj{&xnj6HZxA*F zA5R}Rs-M%Q*ayQ-kibC#f9@QE*yL<-KqMofkLZ;4aee4sv z7fq3y%QvJ@V}(afd6Vb(opzuNVyhWV#&OfPE#0!KUHy zfv_DlF*{fQkFK=)_+9Ta(YM#YTJ&w*yW{)vFg! zJBOO8zANI!0U**rKnxDBFrlmp1&!;k*1d1Sym^gfZM3QaAqsbI(Hnli5dLWwbg_S~gzwiDbE5yZgn9-HC zLUpUI+Dy&ZwwaKkOFwXs2u@Dq9Zz&bwERVMDJlkNb z<0d|e8ow@!yVM?bD2$h_&1ghL;J~61_Om%#0AvWxR;-(sy_6pgwrrs#4+CJD8Ctay z_H?nWaIhwYdfSIhRS>0F=#%@;JM(B_7hbg>)x*K&%z^ZK_#CkyiX7C|RxG#AK&O5l zB@`85B|Q|nhkxAlVm*aj}U9a*)0qD z(d24nc_5b9tesm<&24{PxosIP7rt*M*uijvX5S3fuK*(1ZZt72OZ`BXD0)SlitA<` zTIKJ!ZjYglSlxcJoOSSo`Ib#tY5k%eqko4FdpTJ6wFV4ypL0(}E;j3&cn0LV0r+`_ zjvZ$YVdA|PIy9IsqouPnGcVXI@Byt++kmyW@Q53#OX3(O872M@k{%!=thG|rb`Oc%;#em`)we+ot2Bg$LL z@tt@55^X#vy4u_*)OX~|oR1hHg*6|lG6ZA#CGcgCVa98p70&EA$i|F3Mt)=+i3y$* zA0Qvj$pG+Q%sb3=!9y$(LryADXqTt7DXT+HcyZ_r(Rv6{h|vH8!e$Yh#s5R(FOW?OhAYY?}@}t zu%Mrk)GWEjED3V=MX-GwbhvK7It85o@Ol0ffp%0LwZT;4EF_qaaSnOEAhz)>W{Lu{ zc?X`MXl_!l3DMY9T;4nO(Kh*G{$hE(x!6sz-UYs8USwfkcqvBg z=46xk>_V|@JbIOr?=_0fT02rI>@r8`?luv%E9_IbmY?;bO(x zY<^;z8l8k0YR}Jb!j$k1Neif8t8~7@Ey;?;;eIDwHe3@`VE%Y0kplg7$(?fxbi~%x z9{>e4r{z5lkw{egE1KrdJ3J%m_UwKTHSc5;3o5&nuBEE`ydyoBo3X+;lyn~&egG7} zl20In2C!r_ny7{0;3Ep^GVgca`XdVMvLdXG%aoq@a49T~36Zp=8scClRA4?kJV^30 zZE|_KLC=13qEpb@y{~WK7W34DiO{X|&=Z$p(nkbGlf%%BKs5wh@4YSTd>VUrNY3bktM7C&=8i&wKSDW8x({xL@?T1u$=km zJTv!&cHS*&u$8Ogdq{_OloufMHx0V|J_KJ?vo*zJ>&N6=mKiIr2|E~i*%zn81q~kr zVh8{fi)cfLy9vv-X^FFsHn{y%(&CBlED5`7j2Q!9{D&}`c;x+^Y8(y+Tcp?z51>Xk zsEiuT01gfbKrRzCFSejYm~o>6C`nPU|B`Pr2~H_POj~JgvGy54fwk#+A6O_l0G?0L z8bg%r3kA>OOlNrfr-^*ygmb(X#rvHFgz(4-LQ~8|lWPV|svr577lE;ihAAe3%!7|m zG?xMJ*ZKu#{n1%u7>*yq#zR|~TD!Iax?myeE#|`%ddv#t0&f`OrZ#(fn>p^qwE@l$ z&aD#3r94C%1^t3{!M+DHKxx_)os9@$2XmVy)^=5MK)Nn4fOmFe0EIq-7^gHWt~DqK zfFFvgzn<9>5_S3z{j@9*+R_xm?cet~Le*!7ShvFo(g0Zq+oUJpVVcVVcy<;d49_nQ zIi^4h_?q^60~$b-6MPSYif9yk*qh}mw|JlCC+>dZM7r<-B#LSB zsy1w!U6&JD?pW=z0sna;h`&9NTO~iZ@2rbOeSnh% zTuAH~?v!6H%+=n%^;lgbI@&280!5q!Io%}r71@9^dWgREXIc(*+0vb0jFE<-FOVIHrk zmyCmN;(7;|kW||FpKK(Ktn?Fyon}FC#Q#Onc?UJ|eQkWx6G92SL+HJS-a@2z5TpvB zBk)B!s3@Dzix`Rs2pXEwr3;7}kS0G=iXt`)NVA||1x54n{(E<3cXnp)&bjA2&*wqV z6FJ9S8+#&E_wnrhv@A1M>=rX`nT$eTNi;?k;r1XV4E947o$E7=4S=4_^^?`RiR);C z@wcj7V8A-A!f}bF)qpy7IP0(sJ`SjT)l`!#;Qp7U4E=N8hP!$6c#2tH^{1CMh)jep z6OL#J3Kp*E(t-PYd1W#>Vi$!xYa2o4{o5lgnwnU!`W4{_B&tR2GI zvTSym5Ju5GT+Mw-cX}G&2B#muR87)jRg1*a#w6((9w~|GY^XpV+w>g8}C3w0SIf-EsaQwD^UAPi{}V^ z#F|4-OLLHjayT0L4Kr^6j9p@fI1}09yg3=hHZp>0!E?lUB(!!CagrhNSqtJ1s*S54 zV`m&Z8M#l$-6B%%CA;WLOyq-d8(t=oUxaG`Ko+KPFU364wImpXLd4Y`mrTIM<8(H< zQ2JBiB1hHiMUMGTcW!k7oGcLaAo?*c4ZgzU+=^qrcLEdsf%6UR$<6NPur>!f^1?Skg z4oh}Vsz{ej5_p~oPvTuqiUs+j*eAkAsw3z|e!cjFpeYr9+(D}5F|p_QFKuC~N+?*E z8{2gF<^P2pa+M!w*)f~-G!+7OdzGcbYdp-K_Qu4B3KDl;=k5l>6wKV|?=BR@(|4%*F>sA$$(wNH9Jobf_qyBR8T zC&1MbcYj!#biym1#XiRax!^c^YvZ=^SsCi>r!Q_1JTlghm-IZ`{aY)syS!uZd72uNhf zgmZU8DxA0{FBXeRiAn%~9}VFHs_6H~$S`JwR%ho%j*P~{ak4|bBH{^U#$XY#o7k>6liDX@ zTk&6y_J0>~@m$=Z!!`KF*Nf)=-Pj|?arHrh+0;L|vN`;1cKZ92r=*#ez7cN*DP|5T zZ{aqzb)#vqZpY-}P5&ITD`aI;h z?uEaQZ(DF>{6c7l)Lp^0Qw)_0wjHGbH+l!yL zSV2=~qwN1it!&$zo66Sc_!}r05ZTnxC+YU~?B6rWJdRGGu#=3oD>K|P)x9drjm6I? zs7_ssM0G+rGm(l2N3=6`qWM3&F_Sgy=&KSBR?q$WR`*%!5Y7Yd7C~yl)xN=9h;VaF z=-rbzj9{&$&?DaYtZqQ-)~83tj~_+MafIe^1mD&@7O~z*TX%QYI`SmBeCC|RZ=9Jc zcn@+cFxY2yu??DNhfZBy0QHu(pHKT;O#6Lg``Vb>{A&Qw0#Ti0_L;apGYt0fVvY#> zJK<5Ivz^w?xR0M)IWN)BZP$Nif*cMZTz50J7iinvjE#%M^C;ANlUnv!(c$|n*G{%o zpnrEA1y8;^cz1N4OCWBfWEU%)`p45#b@RwWJosTm<{d8%$**kGdY=^=tqQEJKQN~v zI3z49X=IF4#OthX2x--_0B*6r?`}P7T^u$hTjK4uPEv?_OcajP%;6(Mri;N##)E{_ zJZoh4g5F)v;X!-J#%IbG3DjHlr^h$Tt=X2y5w=0<#P+;ST;KS%k7f?9enct$a2N4N zMBImUxoZ^hSWsL_@TEbfbfKNSKx8#UG!XdY7$5XIQ|(mEF3d8^?u$c7ufs{8<$hw$x#J`%IO_ zb{`q*!t$#|!Qeiz`hCI;Eovu)SDbTK$2+|}&0iWRP!@P1dcJ5fpM*1sRGBDpwQ*Hz zjQ2`T7{U9h#W8m2ZFie0r|{$LN)NPNqyZ0KM=o$l1#H9~i2ECu5%vX0We z*vkf+p=>oV-jthJ!I79EA@U5aSoy2;HcTq%T?bxa(mptwN~qk$PK6(n$zKm{hH~aD zs7&A2eT<_??@;+d2v}}+DSLijS{)!FLS%qPiP1n7cO(4UL(ETxyu`W6`Cw|v3EK^^ zlr>7z7*`s3@<`4u42M$X4IYT5u8msLS6+waiqp^u0IMS5^{9e?Xj&$o>-=(jt}uGG ze(|yXqrP16guyfNB|-#6G}MR@pDUg?ym!OX3uCJAP(kpki*U?riH+pRWHr7you@VY zb%+n4Hj*}CmD@0dE<0Uuuai4BYDhZ=KdxiuX!6g!1wb;_`Lz=Hd`#)~WNl*UL;FmJ z>G-K@fmzJ|Al~v9r}#r8dC{@Ope51Zqr`60nBb#U0Eiq{tYcSoI1uUQ>3{@ZLr?x%am5E&kgAQaPZ+{$;};R zWa+e!e35$By}N%3rms{bI;%^WomSi)c>U_}#Tu^M2ONsiI!{_l6&4`}@MRPe~CD)U)g&T}ZBh=_!l&6`tj!w~q?*8+t z>_L{1le$qygDLUzbF))&+3A1BSTqw~4g4yuh;g_@adE8Ht}X z8c$SLf)uI z&5T*sEw4V1_*@_v=epS6({$;-}NYfVlf98@IDv82E5k!ZDbc zpD>~+@tPb=XdJ!hQPmKHp?J4`*U|#B>-^uxp#;xtPjJLKYvAXob2Xs2!!<|b}km%rca}f)J|m385T%Q`&R-dkb`O>_s1xk-|XB5 z%F0QWwrL)leNLQ@3Gzb$8b8j6XGM}j-MvR^2;Qm+eo^FUZWlg-n-kD9w2mq}q!%@|{Jw zNo0LrGwJ=$+1RcbDl`*k^rFgLOU`}k7lH4d^j$Q^9VN+&F_t*74moL)gtvcl2;4IB z8Wz9)_x6AL&!I3ADUgIGV{t4O4zH<87&OGA61Glk*C!A84#MH&D$SNQcYX|WRYd}&Hwy-^cq z*1S@RCX6c>fC=4W<|bHlmmODK>MreX_qZH_yNT$Glw6gG4s!5&{Z(La+)6#MuCVpL zB*76jX$?cO0YZu+N&*s&iV^D;Z8JC~6nYNnlQctfJG7CO%ULl!IV=8oJ4e#q`0c#W zSaZc8$jM+Lwa}w=eZPqyLX3Rp)&u2`?K@T zuI#-yasT7&vg6IP0O>HUt$5;Aejq7W-~CtR_Y~d!uZ4ah^dSzH8?`3a=&ZUC{QZqH z1p&^OK3I@k2t~_fuwsi;7u? zN}jHkx!3jaR=z4-V2_+@lF|)D;ryL0862G9T?6yf5>|Num=vPzOTpr^w;H1Cg2l3f zI{J4pIyY(reUlVOJrmE4Q}ozTw+as z-IUc;*C%j8(?>1y*s6KKEzNzr;YC5?kGt*Lre%G$7p`&9|1;sivFoP63R-H9Rcs?q zvJxk|Gy0CHu^_k@Z~4PV^1l`yo|4kMF;CBlIz6lZySDjD)u)dot*gJ*UP``y_A_Lm z`&bTx8-C;mSY|*{#pSd{>qLH4ObY+24p2*niLE#11nnu0-ZgqfU1H1pm57RMuAt6Q zvx87^WD_a~H~}afDP(+io=|g^T~Kc5VELOp$ecxS;?+S64yiwXBy0n(F?j>eA$3&p z@)JRX_n_?}wJZb`qc}?K0@TR@uX-AD9N-_d(W)WHN*Pq5HX0i_Iy`LfPFiN&sA0oh zX6t3XUI8lH7K)AJ7R4ilRS}Zy4d)+rmMs)wY?0}<{5IZT`#vDLn^j{h%gSOJT9ulE zO7*97+D%{FWd{x{6!*bYi-nD)3yK>|X50y@XZV)-wUWqyK zh_tHYaqU7l+-@w8?=Uhkf+1{!-kDB)=xaR}U+qDrPxb0lw${xU>vxU65goZERHT6} zxW%|q+44Xd)Ac)^d&_~UnO5B!sR=E_aZHcje5hl|t_V9<`oypIOFUXUzvS0@jl22d zzm+aMJI*6YyqHJLm&1xVpT%CK5(0JtD4opl0-N=GOrObnKRfw*K!9#HL^22*i!It5?KpM(ZIJGGHVEn^hR!##!TZ9Z+0N4L~$PEn{RP1FO>B@Ql??LBhmVK&R93f=!02V zGP~9s1xv4`GpIst6rNp(LL3xV^+Z~#zJFSF)D#JfD>^-{sB!PM@vSo?3rTVfGhkCA$06r-eNHB3LP) z8|!NO$$^TUoAUgh4E%$#?B4|p`+Xi}f4(bZr39+PyqUqY)iwns4XBcN6t29|;`M2T zGxEVgj^`LT&H&CpGy8Pft;BuAour3ppxtcELrf9;JSZDCm!(U;=#0-jl@IS20>smD zj-Su5m_wTwa?a=ft4gQ-hhl+0C(8y#m8<+bqpWTv%mA6uB{LAG&0e>qfjtwaRSr z2K|H_&(Lx#cWI@-GHKpvB{V0y1QjL(r@mpo?+vk`S;R14ss>&LU3TY~xhLr(J`l?L zA+}F_zSFjo@=|8`!LCDKK7X_5m1WP_XDXbR3jZEicWAvaFd8Vso2_T9GkdXj#{|M>^ zIq<*l6Au_|cUC5%VuTva&y+>&&rz4n!)4z3z2Q}@JYipgib+Gp;2u?C%QL+}8%0!Q zZ?0?sGH$!v;{cKF!G3;TI*ftvO3OYuEuGnd%vQOqvAk;Rh758=#%`CVZ6m=_KbE*F z@@Y|SMBWU3Jx5_I2l~1u?oZD7d{kU>j_JxfhpzfVX@SHbWUws~Ql6XG1#=$uei%b4 z_G{P*7Noy+l$SqPzn1`T<_F79lwZ?m&Z$w`ja3s)Ur0X`&b5B(au|a z9g6=wrO<^7b!?R#Ubhu=I3dccztYHf+8lc2U6p~L| ziXPr>zvmEXYbwTP29kSV z+7(h~4C>9_uUZz%du=zEKm3$3L{y5y>#p#fGZ2cpD0L2>%d(kXzsBs8(Jo8AC`A;` zl74k}VjF3EN-*jfDpe6tclDj1C2bUsOciom)+%uetor*(zi#o=K8T0UYxLcfS z-&N1!P0?vat_pm4^BHMFJ6T2%oqpdOGU>cuD;Icj>#4An@zt%rA2`*RQ1#}5T+O@a z1Jr}7O`1$-<20Grf8@;R@!^4~1D9l4sF?hze=)`{3%5%4L9wap8bZ;Z<;2CXMP)xJ z70quc0{PT?R*M*ops9&0+$TEYbuW%`N)Up9((F|zN+;hRRb;*wqA76r3Z{?6D_G8I8 z){2nG{tDf^GZ&__lfJ<+7^oN=H6DUW-}e#C+HeR!s4r*7lJ`x*kp{%G*tXJ-Qi7Q2RIDj#7)AZ%7gaUxpie%zsy(dw58Ek@+Aat`x)F5^)ZXgaaXd(;acX4gp-M@2R+&b`63+6tbs<-k{bgTfofX-_ zAo_8n9n`(?s0CJ7FkcVbL`o$sd9Op=K2&Lt(u4Z|B&U$5s7HZM+4|UhA@A+HGY7ZA zJ*crrl(o!y)HI9VBx_R@9cJZ-BQcITppz(D?rN(dkW2m?E@XlT^cXtPV85hgjb0Q$et-z@#zVy9(T-B zcb~{bgc1JE)PC~ruyK~hKSo2~63=H(Zsfa}=>E&b(LIzkRQW}C$KwiP?|ZDCys&RU zet^HTeq%N>|Ml|}idK(oDIC7z17@qvYL?}}aOG0HhJB~qUTi`9FH~3pb#nI|d z#l=}S$|KlSGv}59sM?oZ$50}XG}r3*8AAm}d^0|a&wCq_%@s58-Qq|{O34<;wlA?{ zw|zW*gVT9Cf1*x{VHe>jx2xGK;As$)iPW>*%jO+WY9z6fA}Ll!D%9`Ud>1xul5X00 z)I~HFj5WdpZ*~sh>U?+c%1sUSZi-!OEm;Ub&*|(Ew&<_S?Q5jNcNS5i2CI`t8dus& zl%8x!L>h25_zChN$wUR%jcCeoQKLTY{Zmr3H z`OAr%O2U6KT}51>9ebxiiXH)x^Wizd2mrKis_k?Y&F<;m5Zyj>>!J9QXykb|!SM%wkM;H(lU0`PX); z+1Pp4^O(aah(`{QR@zfeg+rb&$1-`VdoFjT%PDCnIk0@jdMXASFCqzU z#cAo<<+l&zG&7YPv(p(ESj!mOw83ncc5jt^jU3_Q_Ux(fudrf)1qdgV~w z;Ep#`spe>R93_P=wmeQQR<528RWNxzXx#5ZtlAqq*?f0PqQRe;QRAe6= zX{t!#ZJo>3_9%yCA5A!v=kwkB>ILp9T1gr?6eaXENc>f_J*K>15ye*~W2$6-ymjGn zPhXSzc_qgX<;ALnz8iXXm7Eh>7i+)v-8B2FA--A-rTakQ z^kBlasy3Hrs4ALNZd)?NcHt#OFp1vZdENpYOd9AP9vBdJ9Yw3Ry?XO?;I=j|$j!M6 zTeWBQ{;O%m=z(wt8kLViq#~R9aXjsKxIl9U(&#AkRxxqlMgM;(x-`GHrME{mccOd{ zT?jZHgrFnGASPH}_fn?;OI5$9&&B~wHB7h{9-&AK%2%lYv_vES6W?d#8L6g?CJ#c{ z9BIBhcnTN$y{^pDMC#%8?R#5)HS>;{EaLJ>T_q#sQSrf+JjH50nR`jQL!Rf+5 z`M~Wlw!cpQp=mfY5oN@n4_crn4|$tfhwjtFYcA__ymx9l-s`*al^sckEmZ2xCW!Z5 zeWFUWzjc(o6yJMwHHND7Waxg!27u~$1s!NV)o)9r@}I@UScCQa$#IO5W2H;t_*J&i z0V=;3$0@t}$=ykv-;WeoJO3qKtpo$)NryBWa`JggEtfbTW={9JOxY8gs`Onqr}e4l2;?f zTuHfz%nO9_S0hy^GA3^`pE=$>-udrKy(Aq8;hzP!QhTj*#HS6f z1$N1wJB^3yPap8l(!Pr(;aeEK5L8lZ4yUZ|d!x6M_%kP=4IdBL&f5+@ZrO#F=dQQP zccs;t#zBQOLUkl|^QU0!rA2qDzPgy?Lnrvv-rm-qTZBI3r=k%p&-O`nUB=dyYa>6;t-oiVZIyLv5n`` zQj|5J)7Lcy)8qXKqz-!jcD``F!n}1m_*7+K_r;uw>6k$dD`&uW=2xHz2!s9y1?{86TCCNr6UadWe+Q%z; zkA7~lM!&9nJt1+ToQV1a$e@M!Vx{<>j!tROQG^<{pLPH5{yr+kag3XffTI(9%RC*^ z1@JJLoWzRot`j>YRQ`5PTomIvg(Tj^xR(qlELn7GK@kLhUZl79caY%&>86Z5^;uoY z1{vK%u5>AEyYE$DvT%S{&*~H^lrB0m`$YG7=7t}tIRM;P;epm`t2am<0r~iV*^95Z z(8Na_Znxe5pHD)b{Sd@{0zP*$kg|U0NRaz8L$R8H=o1j7Lj9@&FkL|^1{NrPQA8XI zkb(>S>tLiExMtKbFt6VT{v>8~*OFd~y{wZ$Ou{ky(jB8gJlkT6K0vLf7z&4N2rXZ0 zNG4X-5uYNwCA+}u?RFWa0NZ#FO^d8uA+G+L-n~;V(%FE#C&kDnI=KS~F?@H)7{50I zS&6qPmh%a(wviy>_*NkFt7~qIjDD!htZ1!U0Jy_As0APe0OoseZ*pB=YjE)+ao&6H zrYVj4#w!cthb23H&X03d34Hib6npg!ok4 zI8}Ou-4P&6zMd`F6j59GFm&zUK<3X5gHz1cWxI(}Oe*n5cv*j)3n8eO0=6B@J;BIf z2Z4~_EcbW@r)m@NYu)jG*F4lGNEd3zljH8_(^0h+KjKgapsyr*hLV5 zV_@|d?07)>FTS&Qiw5Z!b-qPkg6b~S!>+0O3~h|mc3ED zLtM)f;O7&C4S=Dg!eIg;wcMdmVViALVB+ICnwD=v_d5SD;b>?!q-;$(SBU$SIVT9&OEGeu-h}hNKvW_G%K)7l!k-` zG+S&2djv$1xfRd5n0o$TcUCJhKRuBiiy{Fe1D;Y`DJh zhjfZ`MMjTRM#+ids_U@G4NP2E;z>w#g~HW=*0#;^tFacd2*|!6PpCLqocW&r6TpwI za`>rKSzS-OQT5x?n@p;T>ygQ<05dtmMj6k{e<~L*R5cBp%#jdf`<|6CHl93FdowmV zbhzo=!wt-S2>R&M%TbABf73S5cIUGPcA61Y%<_xw`5@lGaNpTds;)ces3H-zI0nY} z*8?f}jG;;SX{pwar@-Ez<)z8n}AF}D36iXGr6@*A2LyC_il`;B+v58}?m#z7VFH=?arYSe+} z?U0^C9OtId4bK3**50qQ7v(;|&QV+@jES!+{Uiow_2f(_8Re)JmG$w0*^0@`I&n4pS8swMU2rVae1pN3q&h#7kXF>jZYM(b_ZS05@^BoX42%o+w6EAbwsM;%sv5Z++AMoqE5G1+nPZw9} zQ9kufJMz#;QPD(+x$=7c2SgG_l9XN6TB7_q`{n7X3MBRow!H!U)#707MQ1)7OV*(8 zQT`0y5++t(q+XNTuK6p^tm> zV5zA{NGt!JQ{J%$md`jha+Ex|UWXKO`*wG0Uh4s~!#`n@u8AF&{ym!Yp`*TGvZ!pJIKSn_mKEdeKDd=!aiTu1DW_QDL6S5EAa~KX`49?fay}Z~DY9x&u&t z#s6$W=a66gnVg2cSDzJ%_eD8q^EmR*jAyD^y#E4WN_&ZO=JG%8x8ci|ZI4GkC#|)P z3d;sR^UqJRpGpduC)fsx%GUQGw3l`teMh$Edj}BQ1pDP4l&}v1J{zi1=abyu6I>Pv zc7e|vWG&qpMin{WKq2!$$?-6y^t%hD0-Z~%|K{IIXVsC zPrLOud?5TZOD`gIARIlHRE+1E&&GBtHRHo%Et_4_H=#eiyFAJkk5_`M`f~ z^3Pu!c*dvY{WOFz*(HPIn8Nk29D*zH8W z)RYkYBqEl0I_0ultrkVetizo3$qsk5J9KA2@=KsZjEdaR!lv9Iq|?Ug#1 zn_-ZbJD7LLApgo>{<;0A=)r4PIgy z&`?7(F2fQ*)=-J0VX4AUsfJ;h{!p2@VY$svxr^atuLG|kph92AG4xEuIiV{qLKP}j zzUPN7Um2>p$z4?lzY;QZCBm>WdWb}-xq98O_W2nBQ{bA{hiuj{L=5qo7f=y>grk;4 z@;O|8XZThv3p>K_Hvyr{A+GG9S{I|HORk7UkaL`f_;dy_PGoy+TXzQxPaEd+0KU9n z+&q1@n|#2QX4LvNFJSCU(-WhP|6wWwA!=P?qD;eaC3uAbQ7Rp(!e@bCYF-nCs-=^- z4Zw;*5Mc=@bWx>*C_>7^SVba~Z&Xx>B=1O-a0WG;@R-f^*;xUqB% zRcaf;J4=x$I#h79K$tLG{YK`l9NZGLkjImx6p84x5vLoY3ZW!!MS%Y999tvgt_`DJ zFqH9NC)@R~7M$I*Ak%w9K~muh4nJ`HW6 z%*$0GxVuR5jiU`JvCvtI+ctmi-eItP|NHjN1q)8ISse&sy&}X4P*J2VUpfy3SubSH z!@U6&jQMZDA*{){_o5^=6Y#6bp=_Qpr;5V0KX+xxe?MZ=KbZr>!#@hr)+H_leDU>1 z9(O6rJhrB0d~g=AP*5xU>0n8S%_T{T96rO+P`fe(w;LWqrC|rvuIk5c zJ{>BHaJgWceYjx#SLFM9e6(jf)X&Pj0<{@%dK!?q_TTXP@RYGA)$o^ z<Tn;hN6Utl{!u##RvDJat= zq^QAG8^89pp5MQok-=g?*mw0e%?hP1IvTu~&9l>1lBMtu{MqWAyZ7zG$WcMNL&5r# zgch)A#@&MM`&QmEgSa`mP4N4~%ufgg6?NYzI6?bVrXaT;$zkb9iX*H3Zx6Tmwzl9bE?}D0MttaL{_> zvFP;o?59UAN1mk;mlYZvDk#l|&cYNhL;D{!AIDSl`G(vwJ-l3r<+%%$>PtR457&#? zzOOx94k>Xu@gl71{QU8U@@GPxN)xkorMb=0zDXV1BvbRH+1zByTu=8addbXC?Kw|x z*&Z`p;sfeloO$2zeC6EUBYlM}*^>3T;}TgsGHqfk&3c@#{PFQ&$4ISlEZh3sif6~o zsysjYPFSYKE&F-%lx) z8SW%Q|5V1l+PS@2>=#>MxlE)W25Sm73SIdjnciPc04lBeXNBWFNK__$o)A9$dT+|= zTHlbMEq+y|&9!MndCaidBumEajp)~TJB>Hr7ay4L*gZC6``bN5x-aH1chdUJ&sXtJ zPNwqn>$m)RL*WY8U(MH8*?(8!5^!+D4p}+as$*RW`2D`+*2?dX-A@Ak>#Mg-tE5Qw8?$q}S($kH<<39Be*B;~QQ z&@ti1yRw2Y7Pc|oJfgw7GR7lPHlg@T;1GZiT%kayD@^wAy%C|DyF+I(4V2I#?Z6pEUWx_jt-9@gHnoh z02DZK(&L<9Vt9auL6)%TvVyS#5V#Nn0PrAz?VDsg9|*7kk0N=FR&YVqzH?A634HBG zF$Mv_s7b4C1?-6obM86ts55mPuBZs{9UKoqrBI;5Yo%|N+G3DBqwn}YnIta5PE1}h1vT66nbqEAi9sY zUPhvqn*;QJX99VTTWf!O`u-C$FO1`Z@F9ps2qPp6E>Iwm_lbyd1%TNl0OF|z-;Uyj z;DWl*nqZ8QJ%BtCUbyczulbTQA_I3p8YBRGH+Oby89?Ex}Kc?{%^0da$+32 zbK(>c;8w1Ls{uf|Fg}nQg|9!R2vVP`z@94y(apVInZplZ1pxpYBcR0%w}%T>;PWE+ zn|U~CYX|mZKtT=w-@Tw7D1R-)m}$ZNYQlBDJVvOYK@PNLrfSmQqmQOU0qb)Br2Tp4 z|C1Tm@Fa`q-f3u84e>~@g=Y87+V)W4=EUE^OE7>2ITBF1zlvI+W1I{~C|P>%kbKV- z!29$D=iPA6TQ8ITa}KJ>B?DMnz%ym?8~gX!2zAzDG8(p>#G5yF3Kkkfw?PwI-yJ{{ z#8#h=t&qxP{$8^CRsp%fDa~hvBXOVImG(w}*Y8)JI&tah>q{!9Yqr=S(K&`d^fsZ{ z=Fx`VMEtpAD@`?TO!Bt{r=BJDIu@a(K-LDzKa)D~E%oz)NUuLjN!JKWP=#sp98%C-DWBD{nUTAvt82HpIrYJJf=Jm zV*0W86E74dbPR?jKAA&ju>%`P#KRs9ctLa9R^QxaQO8_wb=E?3a*lUtOSU zEeIGBtsX@mR-#8nVL8G7+M}_D9aq`ewvoWgE|-^40B}U*Kx@#KKCJjR?`s3lQhPe7 z^Q!%0EPp)rrI71IwC9_#?1s=bC>`*5{1&ZIqfTPn+u^Y(e8A3};bcNTHOv@ww^YyE zer(61L4s-nKps2)UIB#AwlB0N5MQE2WFYfE4$C^ggp4%|MnIX!JTmqu0BnGWA^Z?1{r* z7azZ`S#K7f*v#B?dqT1Wcw#@;k|m$mN$!p92(2@=PqAJoV3nkq_iFJyk=mXJ%3 zrUWBYdk##3f5qCyYkp-mhqEg*B`~Lt3Wyx<|H;JU!R;B+UJOg=Qt2RV`NVoj3zCdR zz0ChGS8n9VR75HSo@!mOmCsI4jF(p9X_hToP&AiTs&ZE{tyi+CSGrWH*wUjMD6QlI zRle@7+?}9uM_YDqL3tuU^u1 z1dW3p4c6bU8W0^#M53n77~GNxcV@sHK~3RaE!{Cq?&DhGiQ3QIwYa}&Yb45AGT=ra z%%m4)L`DdFl~Mf$SNuj0?j~sQYU%bOVnMc9275CdHdiET&#N2%4X%<4Gdj{QgRl$V z^bPTF_eV000PHM-hX~=@r=uJh0*3Vo#6=w|ZT*gK`<20{Sti>+ukp|~q%BhpLDISf z@>MMIbmFya>Jw4`y+?Fd!8fCgveNAbn*3#EbDc6DCN)1Efd!;ZN*Fx8K}1Xvv6c>t zr!m-vpR$p^BaMh^M$l&@I*dew8PN$uqLtQ~C2Ms~ zIl|TgLinp=x94H!M1~zX5eN(y4F>5z$NpKcr9K%(0N|DEuF@uH4tFG?uLkgLzh z5PI|iP##?;VZeIxB z@-r)oI({JtMra96&oVOr*(_6t&yz!sS0GN1wREB6s$^@yo>(I?>ZNYbm0m+P0Hz1E z3F+hie3?5bDRkb$#85A4Zz|+8ozoT)_L0HXH^3?1&;Of@l1;>0f{5Q>sD*{iv4Lnc z2~YFs zyblBVTR>G0Aan?XO_VDI=!F+1S@Y|s9puKBkV6lS%4G%|*Q;}j!G^9w$$BLk<5N38 z{g&WFs{vbGJ?GV*M04^vJ9jw?rr*UY2+nW5^nRH2ZT@zE;Mt?|k!+}SBJI6?hR_u@ z>jBQQ0KuX+MQ_sVLyni#5>GpTa3$)Sk)bK{7>gjiKU&GDKW$aM!!;8O-C!qc1u6IMd-qcBJxvms9VLUmSmJS;Pj_V zCuo5G1CvdWnE9fNVxH=m>Fqh1ny!oC|Bt=%ifSqh z*K|4wHG~#I3mqvEK#)%8AVrEGO$i+oB?u}aLK1opD7^&)q-rQCQk1GRF%*?Zaw*9* z$7kq$FK9c6!@N3vomO@o8~8#XHup!4>;jln0ukQNkHCU!=-K?=vybbRsOuK7s;^uv zDVI8~;dXEe_|UQSSQ!u#XZSO~fT`=u1S(-~SQiPl^uugOkrjZ_gaa>AQmXnRuobQ1 zxE|zdlvaXbj@5Ta&VCHvEY7qW0`Uk_T!ferAa|L$_w;B%rPpEIxuP#gZvvvc$%3Dl zP%A>Rfk$0b@#W-G*$MkH6kP;osfqk|g=bGS-xup$2SC4z)}GgGm=;K?-Upx6cOze| zA2^H^bTzOg^WP;w)AnMUg-d^XXhi-xw5Mb%Ba3sjL$pSsZ@eqjHJIguMVou;x5$^px_8CcN+V+lAY;6~9-+DwpW=HTJT4H_ zNB|w`dbJkXNHg!|c@=w;t$_w~Sp~=DTM(36$;8zpaF2&KvvtDD-snDW*OwpzBp*)GzzXMfXnfYy+81!>HK6rHbl=VHl{j*Ze z@t)p*=)NryC+@VFHYpYSnlt(q@phRx|F5nC@2eKHhgFMJhvKifx&yHLZgAd@ISq-I>PDKEKQ!jK%{q&M z4g0~zZp>UWic#j!JgueqF+lpAjkbE!oPp=H#FgBCVp^<%8`=f0r^4<+vd(Ct*U^S{f}Mk_CGtSt1cto&VBGg^IrWA$U->X*N(J4SDQ z+<0@)_vY{4H^6wksnA?(*ps|0J#J&BP<$A&lF1b>hcsp*f8S<*_))Gp@RaTm8!CI` z@w<%=$>9WqS^T=?zm#LEvhG-z#q2xJ#}^o(2!Nm1px=iuWAQjY1fxNAjva&m2sr_f z|41HkkKd=qd!GG=92~%$i~kT|ykVdSKG%;(@e{ik57q2n$~4}(nW&d^cgtZ!=w$q- z%~2uQFac})X8G#pzQMhTIeknUxT!GhV-w#gkO2~95h2fz}L?&EB4d7hMf<>*5X5jLiw_Lyw>jD`ao7zzRfXwV8 znHZytV~sO)_GS7vIJKMR8c#KQ^<`)`ziRdAiT%r|(=y){I8kbpsnfc6KYXdX;KcTu zRFjd0Z*c_*vFtl#%65Zzbyyp}T0+46``5%E5| z8<)mzS|ZvZNviiI^9oy?xjN*A9LJ*7y;r$5UqA{XuK)hWW7xI5Hk>JDl4JO2_x)s< z!8Z>Xm~xR*ASA*>A(J4jhKmBC$s{I#4aW;8! z4mF=gXQUnr22`B6{?d{_@fdy}V6iQs%ksTJVm_RW5J zg|VsrVZG?A(uGXqrTrzp!zIkof>3t*^aai@JXZp#c8jFNv-%XAfBB^;+mMPYtLY(? zv0wGv(-T4krf{VT^Az9tBg067&Z{~H4c7K11(x7s{T!v)fAE6S>-3tmdfG5UN4^ z;B+$h%SLg6E%{u4&6R6mjoCWgOtTY5!@G-obtv6QSJwK26{-e#?ZVrhN@j+)k8}Pm z$s>DldO%S&ghXDQQK}0<&7Q#utkceNB6DkmK6?%NVEI8dXC!XXj7xsBf4+H@r^E#& zL{ccV-B55F=(FwZcB-kbF$mHqyWfxM%}&1Q$t|zS6*-JLX&*Tv?91KOXQ}@)l^s20 zL_o!2w!@qk|DmTSB1v238cR-lsR*U%`fTkHT_-R^VDt0qm;|S7Vqb&Hqi@bX50~Cc z@jQ}?C>_D3|J;DE`?ug@m%T$%UJRda)3=5bj%xS)`EsfweKWVmGz zk!{9RpZ@;zFB!MT*)TtHnvB3SAQ`!wwL7h3aZ2o1*;%RNa80@WTxTtO)_^7+fIWVq zYUkm;3wy-s(Yl(`zw6(oxlYcQ$^SVX`*Shk#f@L939L=HHbEoLVQHUNNt^UX=ztvx z;OT&g{ISUv&~sCgU^dV$!CC))y@5)^^ea_4mp9#dd#CeS<25U3_~5?}rGI}!Q2ue5 zb8kW)bDtw7ihrhYY{->i%BL=%1{{MiwH0bT4g0^;~48Z@N2FmEPe5 zq!=&mn{(@S@QbjB6C!Jyc05ki56bSpa7U^>g_)&1L$@#?Cidx7yO)6o23#}#7V1Xt z+&xpX6!*)u07-Mel@4&2DB-bfpvg9sibY$mgwYrz;CqG@f zIoDFJeJ|Z1y`Uk<_fkE?o@3xQcbKC5iCn*@9Z4woEL4L#)i+eG?yqU}DQA#FlNW9@ zaCg_2dqJ67y+oP1&MP_BoN8@yyO-g1PjKgGTx8klEfjCyA2LL@bsELAK8nW! zYAquN_B~v=@67}$n7V|7Sz*DQK;^raE-yIkA(YQO$ThALd$KcqTJsb0PSci{-fT)kl*TzH*$`D}Fg67<0F=HN%Dq6lwqz z^0WLt>Nt_nbtD2#u(qu!zuJ*iCtI}8t4C9g zJ5SGcoX|CW^(ZY1eFr2qJ#uLTjzWB>FA)ma(C_ZvNlf5g$Flo0l;uKh1%fPm9Wu0N zc><=&1j?BM5^bFa)YS<C7hJy0IyGz<_ABCbG35Np4 z3C3T#A58|G%=z|N8>~oV|4H<@@hNRQ>Op;s2AH!5E+bd=EGU_z%MX>#wUR9cxO43n=@H z{%?i>t7D-~x1Z%=%`?PpcWWJu24`2s-9lec&J1Pr9sFRYW`_ z_PE0Cwcm1g%pR|5^TTgTJ@McwsA?DP^k9mBwPj0}hRf3&+22X3k2D>}3$>mMw>;9a zovJiXfT(qUx16bWwOcRy^>nyY$gbaAjc$>i)Bv8yxnZyoe)mD-$q{ej2q)?;f6D%8 zf9SJSkguwobU8LU30lV0%TMWE=7nGV!|IW)tUkXaetJ3OsPREIzr9_|{zDnR12K#Z zQgDqth)B_1L4t2wa(gHk3Cm^xV^~SFvk1E{50Hs0Cu^EJET2iiujr*B6Pb~8r%ODX zou?cIq~&VxQgRp}a35qv_f=`HzeyAx_(YX39kKp(07WKu7du`q+ zne>pNxrcfhLy^f&N=tqE7qvJ0?HciP2_4=z0vp6x+{ z!H6%$b_}2eH%*;wu)s(3HEPTE3!j`M5M?=R0Q63v_y8V^G;ziQIMx4z12_!DcL1U` zILb)p7!C+LhF=DNI3QT_N7%Ag6mA%na0%=WVSpyoG8Ntc!zb-621SbtqC!?U@kvj4 z0)Zr`X{LT>un?O3T>$3PvOZgxjRit9BUCK_O#c;6E&((yWsDnu?B~?Yyimfe3BV0c zI>7tyE)}%K;gMPqtVj~ag?AF7%a>-=NDnFAY-0`h7Pki2WIpc9+w6rD(mO3Amb8A$ zPNARACf5%DL19-P1ptv6dq}`3?7+$$F01`z1p#UN=foj!iB-nnj6| zkx*=L&m+Ko#M!nGGuhgH6TyB`@`L;B7&INGayygDXPW|jOd})zJOfMEn8Nh8$$StH zOfhtT*KC`NiX+30#|%K-KLl~K4D5Vx8Q}Q`hD(1ZaEZdr&^btoR&8}O8)}Q1VI-Ak zO#No9w&S7boirQ!8dTBfu!4SMx?n^9`qL18kvJ?gNC_m+$9!TtpncXDDTZ%h6feP+DchU7vIq%6nq>k1DbBW!A=XSQJ$ zkE@Xx_KC963pTdOnt8W;*5za$jam8U-%Jk=6cyYio1$i9VJ686~Vma_KmgF(>PFMr;Q}h+44q=mAcQheLLjK>4>n3WgiDFJfn0E4Ocj1c5;RUAF%V z5zYUb_1pk(2w=bR`cFL$3n8dfLmQy5EV%!V;&pC$wC#TtulCw8cJXTR`JcrrV7%P6 zto)zrIHp%8>Yd zzv+3C!C2Foi3eZY%6aO#E6SXYuH=WVt*&^_U9@Y`c7sdW7vtUxr3t7!_V9oX4Q7g% z=k&I<1>GzX3i+^v{t%p2Vea+M{!!=0S$}iB@~qOMTdz>oxeB(W9iRFhdcKM;U%LHy zg`UVICF%Ta7$tw~L%c(r>fQ&ggkN9b%RizYz9ze$KDvVY{*9R^#wtoH@A>s|V<_Rq zzrHun6PqOiya-wje4Yz3o z@P%yxlv^mt6v`*F-w%#gOLDhVEWPFLbEQ?6VX6;=`~=w@A7r0M`dqHYaEf!G0Bg9e@o{QLjI(u{}H!hgeRi5An?=a z0#11X00<>s@?e%nXRzft$>nC;0)nGQs9YFy-W???L!30sig;;Up0kBnj2FaBPaKJw zCjxT>hl$qG<PyL*XU!#(yP6R2}%!a)_XNyceiKv zM6-S8DrW0mZOy{lJWGs0WjpqWoob77Nl9SQgPJ3?9djo#o7<%NUSlb)X#Y{USXC^A z>vDbbQTLqo`7sI^|*0QbF#?7oHR^E%> zue|iJW96dcN7H7j-&-vqQ`g>GB}@#9Wnd|A#W+sgpL-0B_k)}W!F+^_*iHJCm59JW zTZr19y$k&%>t6=BKyJ+AL$33r0nVdoI8#WhPl7e4&M-0&=~}KiCdMkM_)M}k{PgGU z<)JbMkoh~k(cvr^r>$j%k|KWg@06C~P{o#lO+V7PE{+Z1hKx8((IQ_fztDppkly1GbI4zZS#`c zb|FcK_D$-OH(F)!*W-OX8vKsaupl;?e9aBZ#xx}f{HYxPy~;|G53fcz?3)h7@domh zk4jX0FoXK%P=v~T?2+@PCc^E<`vTUkFY6AiAiiC$`%U0K_cf$}L zyshw+yGoYi{xDQpgT1`1j^U)10KFrg%+Gn9gAlcgXA$192mE@O zr&MJlC(7T8yYr14Q;UgjbX&sMmUfk}PM&JJdCK-vNL!(Hvs>N!sz2p$voIS90;mj4 zF1FZ3YNSG(u;9C{bymj@`H_ZL*vdN#esQcFk41kh#uaeXjRugl&nr5*{r>Q6U1EPL z^Y*i277$?okYm5o*WRX5vQp`V&w+B;ze$CXrXLRS8uw{+=gt{&j4Q_|U$(YuZ94fN z?4=rF%L{V(lYaKl)IEil4c#au>-uw!*LRg^VbDpl*(N9dmr$?_#u>U=XXsTs02A~O zv*xh#$m!g=;9X04Vt3$L@(u3-uW^kn%;+R$gv)LF-?UC%B=9D8S#SyyQ+pn1g7`-9iJTLwKOG@XmN*NA znSO9=AD}bR8;~lqG^61Dvt5fPSVW5Xz`p!KJKPZ`lhO^^s&wp${BwbLd&#QC_IY=5 z940xt$M&0Uz4ZOjkK(>dydXSWMw~pJXbY}>-%#eWAmj2#{JYxKYVSO0 zg1ONL2Vw{R{3O)Ral$FfR!JvdwnEim8l z!A6th$&gox!pe-gx0m)=k5I2xE*ed~)w@m4#az@-l(63rHO_yrVq}{h73a^W)$Ngf zwH?l7WQ*o-d72#`7zI2CMV?j+K1d&h3lhyO;@)xGc3e4C2ygw7{`$~DWL@v|$SIJBSY{GqNTHu=}T9~MSPmXo3DAW2xT9DCf`olc1ZFFqZ8 zFq-6IeOmRR zfI4PGxhM^^j&z89rUKjcSC1>9~ns9N?MpE*_ z)qBJa>4uFw((mQ$2ftT-IqsLAzuseWwX-^?jEpWmeQm;y4EZPhqp2tUwmJjgpNS+N z-@klz@%nEE6&%7gP6imRQ=A-J^)vSQRhQUpZqhs zoBKB>wCeZri+I)#HPF9|q^ck9MV|beeiENsZu0k2#Em~aPi|~aJdxfIvH2$oV&!F3 zvA!QqI1EW}eHIUalRiF7_|DSwiQAA46YXTfDMjA11n7xNvteB8kFeLFk;9{R}p^*;%A!p3kI6LGAcn5 z&-~(3p@PzhMiKbyrtXl2_a5?$;HQ?MIf8~Y9APRVAy;8B)mP7$oQ^8Lnf1ERukiJ? ziBKE$5buliQToEy9&229WtCm97V>n|CMqy`x%fiU8a9dwb9HhS>QBf2O5a9HzR~1> z)fCln}6b*8`926`c$7@Q}gz^kI*z z{GV4xbz@)chcB(6e^sAZExsml5L^h$d-Wka>vfcb^4UZmC`5 zC4W*-!#(tVQDeSZd`V$Un9QjkD(4p52q3q4m%@k=c{vax9Zw|NIDr8ukb`r@!PDWi0MSRPJ@01|SFsd+1f2tW#m z)>=E)xOmlhYh<~X*5$S7wAt|g0GVuA^2-r3&NS88x8((w)|->-&MnqoR3F>aP}iAzJgXizg+zVJ1{F@6A>4bLkEfHvLzd`LmJfrRM*Oi!DbcU5$VfXX(I zm)6Eh03HRZWgZl9jVK`d+mK8p5D+BZ0}!C!t6?>Pq-bobgqA$DLyA;D8CP)LERB-s zbdKrN=ejF!2_;X6#FwEdYn?g%NBn|+^147R~ zfD!>9TEW&KTZ{zjp>aohKODz%w{OFp=zys`kuxVH`Y0cz6v7UK?*x20(pCP#r)gd-j^90xh>|kSBmWXizuCqctGN za2v|u-Qz`qx=LDqfe2ODA`I{5Io9iU@B)T+=CBewVjs2nRazMse^yJCDB+dMBA2xA;j zaY;Thljo4eH&2HlNnO@;UD3Ap)*d-wu#mBSzMW=1_K`=*3F!}bvTMNE_?vy{Fd`9V zjJ%5_fZ4V*e?nhVGdL7K*lUNCqC%qSFd}kD<1;MO3FbqE+%Q0yAz}Vh2(B3|-w*b2 zf;lnor&R;JaDBGhZE9`Z;@lj*q+X;S*oz3O`Q3YB8YGE?m@`J+8h{B|04NslC4*mp zz%h^H`^@Cs!9LkV@_i-nZQ!}h=!5jSdmulcpA*jxTN^}#X>;l0JdgFmvoK8XAc=3C zh3EZA;)%flrG40H0p8_)-j6iIvRJdM4@{~TDLn}#B4M|iyLD*y{Rq!KO%Kj`!+aUz zzDU@S&#)jWWMzWimIS-Vgp{(KcxKWXFTuBHuonVo)09x^OL+!NaF*=*|C$) z;<-m(Ym6GXj%r1Z4%0^G@x1SuoV?pWGaB~}fOnF~TckSKQY!9?otWxDHgk;=aN~*H z-Sw(3nAPK@EK||v#)O?G!t|X`4|`$VhEs1pf&BrKyf;K_SmBf6t*BMbyMjBD zvfMLs<$@|$69Fbrklje#X3yR~h5_2f7WvkL70x;-eJlcDdi}M_pgZioF_(yp*`p7kq}M+tY?bKFH?3 z8hqikHsV@p`RGS1&m@U&90wF;Le`1AlUSa@tTETqphM5sKM-TQ&LB0eR|0ep<%?^A z8vkvcSO1ZjH$vV%Q#H1;(5N;7GJS14vcTI05}>zL^MHKM(B8C-Rg@R#0LE*UCr_8m znm5l1rbe!~fRYP4irCeBb>;hXNj04yDrmQ7ea%d20Oxt;I7FqcX>$UGZD{mc8 zyU*Vsok7lNYi#X>_6^wON$e% zclgwtKu7}s_cjDV00XHl2*;_=<)@Q0XrmGE(rMUBCNJBH(nWj1wX^PngBLInl}JQ9 z7K$OX=W784XwXC?qLP8gC2-gRfOWR$^Q;>$E?xkdG2wR!ob@<(tT9@68|aIJ7vVSZ z=p0Vl>oKh$e>GSR15t{DyD6UvcGnEwn+;LQ4v#5nrP*yA#YBLM2igmfE#)Xsv&|LjZ{K9_mS zZ&cPN#kXtR{|NKgb0_ar;I zod8f1EfiZ*Z~0MI552b!MksBei!*BN#DSEzlxYsAGf);DxW#h z5R(92z#4Cr(UsL=qqiD>!^;1ub&qTQoqd8(6ZwCoydBx-k6tD_AzjO zs=Y9Qt!rvs7rOCzOtxr}7agxwx1cmY4CdA!q!;uQ z=XkeUAVg0Kdd!Rzx2QPxMj)Nokb%`?d6Iuj3;Pox0)-jc?#JI=n(a`aPpzCPnoT|O1slL zlF;;he#c|FNqdjEE^pt3D6v&DoF=d1qAjJ~?y)t#7i?s*Fh8QE9T6A0__EM6r@Rs8 zGb65Mippx5PG>*r$|86=Z|*pVnNDgOAUTaXXSBMQFH8_OX+u0}#(z0EVK;SmrFc3? z@3^I-i5){Y+NOGk(ATIMPSxptnWwlFxNN%OWu)xPiJ|_2>NMo@nbT)q6G2OXd{*=% zVJ|A1lvoJBrimi=rAf(rmHoWoZ`(FX)cw8os*JwdrdFK82P+{0-sV|XW**H5X?KgG z15}0ZR2k76+x*np;<4%4B$RO}UM}DMFbs60c;L?6K;yJevP!qs=2`DEV_)47KN*ew zd7Cf1YyJ4uRAhm z6{l~Mpx!oa9aS$X7*T4z$7^3K=L8$z@I$LB=7)UO%aF+YOqTz451%H@AMxGqASmZc zx>Z)`*dZV@^t0cxOcB8rrc0C@$Zlb4Bt>zLcCLNkwi>&{W;=aZkVjqjI9V1D){$NS69zCyn{&BXPF|w3Z`;vz1{yCNMShEm!m~ z4y#M@v)=-~PCX@`f@6&GgpxpaPcRcTyG%L1>L&t@jL3e$16g+K0_Lrq{U$~gran&I z19urnn1n@;yZt8-c4AFVK~xo%>IHtNxp)6(($)?C{u$A7hFXfQwA1fBR71ZTOqy^W zYKEqY4Ks~#r-;_BoWAYfPt_Wq;c&Xhd}Crvs}?F)OZ|ByvG4IM8CV9;DOA@S4n?P^ z-FGl^f}bAH6i8HV0rK1)&*mEjq$+ovPX-54(MilIQR8iMgF_H{RSu>q(*kMCe<${C z-b(+HsnPp%vfyX%pk|ilSZ;co#sf;JOHqmDdN zW-GROz6*j%bvfQmIrEU*Z;J;+rK<8C=1yM7k=P)l7(aIA39r3S9}OT^U;!NAxK1&E z(YdcReu)waLwA1yIL<&_`3C^^RE=${SQnOec!I>uMKAxgJ4RzxeQ30V14uR6E_ECzF2eUFilbY zOl!qqUx*>`@@~G z>xN+QA$T1wYykG$@P#NHcXX8#$mNk=aK*Rmj?v}F+?!_RC*=hbk*EE9bhf`>HNH0r z&Ew%F!jzs@3>hq|m}9ReK=J}>{+UUB#*@u#9A6v~s~Rb7^S*5W4E2CYZDJoizofoT z{1d=AyUFzf+Rhgkz9ct%_3@87p+d&{=LQ9MPO|>q#p`y>L~V`ZZAl_(deL?%ap$f5 z_mMHpP6LDk>tbG%8Fw_vTxp(^>v8U=(q*T0IohnjIq=M=^eK(@4|IN!1-@XS-KZLQl#cl05g>ME&6K0%=dhKWZHu_<)% zUG39UdtA>bSX|uHkX6xs!K@)O#Uq(N1#Q?QyiT{#uEnX&>As8z5ru0FGY~fjvO@d& zDPoVYvv(y&otM#R21%wkSxn->PwG?azjb;~`+i`F^Fv4D_C$R4OIoGop(ey%S%!FN zgfANExE#rA7{dYan7{T`2FPL1^|l`T_sn*US?cvmvi!@tK*`!_of{T!=Zr5`E-Jl4 z7%a*#a->1^G>rxanU z-pEN8sbiC@zit~xJd&A;XHV*#GcPfoC!hC_l!7#E2c7_B|KzydU>eEei{uy4?NnM^ zS>PG1dL;E^dw=v9pf9N5&+65Ae=azWOoKqXaQ6?gmzinSohNdsoq)qpYu0ahM(=1Q zpCPJ7eoq$fZ@fC8K0gbPEH={UqHB+7>dMfc-=^UY4CfXNCDFBi5&c8pzNzz_fMc1* zo7BDlWsU(J4$T^RA?TBUPEWIJFPUQz{CzmKjfTDb3fByX zrLPOi2XW}rx)PA!;Fy$<`D7syfQL?k5)-qJAav6ZLi+%T&4=9tm=qBJCjmI<;3$IV z4J__?mr^YoKk3mxJ~7M}`f#9UC?pNaQw%Wn0T?o2`Baz&K0TorphkdEaH+n8VFZaJ zxA~yrQzN23@ghMqm;~a$@p3T8d8jNqUA1<)Zo`at95ppG2A8#;64ReD5Kx{U(5#GW z3K@L})g6Q~C?Wk77i}P0q0OaRFeMVetDF=-cre^ZS#ZvBqo#xuH$l;sa5~wSdL*hL z`Q$XoW;=TflxP_~?5x}Tlv8qK9!ddVE?OAEJ-}~l#1)H&rce?rA~6X{uz(X2FFA=_ z+D`m7U766;A#G>U9rff^veSqtHhNp{52y3F_J6jNs$0T5 zL=jyZ&=<}=8S;Zk2GCljz(u*&zO6%M`nL8oP;t&SLUi2wk|5Dm0Lkpvp)QXQ9k8%nae@e-d02;0 zVc~G_Fg!hvntEz()Pkh@5uF6T3@-sNEJd9_4xlhBBAf`OmXNg2$HS4sscFEIbd|(_ zG{iRK4I}l06509l)4XfVzVOOPo2TLfT|6&As-&D4U5;5w;<@N@(ciZJbe%cqKtDJ) zk;Ev8YK}rbU^{`26I3rULDWb=>3v(4thf_giEM#Qi_(Q93`27}Q+@U)#GzoK#i&^# zB?Mg-(N!+{+3I4KP1_&N%ubFV8_Gf(NsflOf=xZqb;9m2b#6;=YO>}F^OW7*T*}b% zz;rcYS?h#gFSpo~iXaB@Xpq$}%S|>y3W7|U1`-cQ-r0sLQ54`>p;e^9Vn8i=TUI0V z#Q8=wp7{dp;;wr!HN>2UAiDuR7kBvUfML=K5nbO+?OC^24 z(zmcIGI%D_?H%^0!eD`r&A@~7G+w!>ZF8_1q4`!|v%B`mO%;>|lk)3Y6)^8!2()gY zd2sZ$qSk<^{;WL`@p5P1_Uahsi*Z{EcQPChR*+k zpWod!iAJ2Z)Xg8h1LDwKqzS8(FM^9_>*bHdS;mmCTrRizVYItQQ`{-XRHR7S9D3N>uDuu~Z zXF~3bzN7#Zn83S~-Ik7oP+P0^$?pd!`&P=z+nkgM6@EmWL?lT49hqm9pcvY>&}nGB zrpCM4s?2ngGZ@EV-JE24{T&uo!?liY&ue>nO6OxaIqlxg0Sx_5%Z%OQ=0r*2`D9A5 z{b~fzQ_$L==9&+Ar2H0>Vz#G3lVcEgf0C8yI7GKr&2Z-8fp6ZKsz0MlL=IV~fzSl? zV3EgA2l+=6OR5)sQzE6;R>$is2XoS1&Mi00v)~Sj&F)`j1Om-YA>tO7(~Na-p55jP zhA<(SHb0lV$MyGn1v(0k%D&S|arbnY!W`=qIOMBt6$q{nyj>yud2Xuii{t10DaAiI z4L|6`mH`mIVi55p3{L_ANS6;6g>{Fnx`e`VTrM7Vm7AJlQI|9gmjN23h`FWUm6poj1iOz zoV%se8YthI46O(Jf2V!YzS8F)F9K@1#qsuSFi1qGu+VydqD)+?e_jsE=}$=G*LduQ zNiRZ7-xNCRm4xJ}D<#4|cH*doC|phZSFPjq()_=d1fxN2?(*$N&mWwi#8+4E2w*TO zSb3O`Y!koM4Cru%eDlxi;bXUdU7PsTFn2sh{n=T5%S%TME9bQr-l>0l$HHT3MJn}r zFV>qGSC~7lZ_0gyf*3p-`o2!@%4T^k@5ek?zZMnt=?I6CB1djuSW!w?NqrdWnZB>;d~yDxo$ejc zI40--`sv9&G;KcvjcZe;Qk<@+9mM#*bS%6LPBc}F#=*h+R`Sg{RWRcLyPDhF<_dop z6fo$y%(Q~z+gh*Z1%2^Yy^Q)d%U=cSKdtt@>@LLm{LOc~zK-AB3KOCLGmfbui>wia zLfbUkKOHv8-%U-vJ0}!ygNr#bG$uY!9G`vHGwWQGy{QtJD4daoE79UAqyS3=VPVw2 zc@gLjGFXY;aFE}^s$Ae3g_D$deBS&whM@e??N!HqlN`QNAraegsCQPH+Y9PfPX_@I zMKww5o4i$N4Kg+lujuZB?nvf+o#MtoB2HexJyDH_(fh`#&0aj^KJoJ@@9E0L@RP#L z_ai`Ez`u9NS9ZT$9oJS;y2OD$a30Qi@z*BEBiXJi=>!pq&)N>F-@ZuSrrX%ku*(lY zsS$wGE4QYr(9S|O5+(Vkf^g8{qH7UYvGZp~VvI3uwbSQZ%NPzkm={aun1^@2#fFbU zB_Ecw?MG&*q)T&fS}!EZzXluwa7_87cn}UHJCz(D`v3<%L1pD*wOzxnu0iM>(yv^01Sb zom+InaM>%-FnLh)1n3B^9yv}IpStkF&R&E|{v|jK#e$(!{baet)eQaT37d4kEVL}# zncWxy#x!*L=Qq@u^bXm^R)HzX@ zYG%cLG=S!yrJPUGG`55{N;Gv&++yrN9Sc}!XM@FJ&nRX15Q5`mYxsfYhXf2D+|S%1 zEp4(uaehGfg=B}ifbu=+)0{KCcJf&JVkRE0b$zGz3mHeG6fS@5o^GSP-QP(S$n}Q1 zs+~2wSn*13oX21x3H6KvGyJo3MV71cf?^)5PpteUOQBpt;+_}!opP2!Mp2H0mKa3( zv+^^?DhV!CCV&h@>5{$0r5|DwmAPxle8bGWRg8dY=$zyZ{br5=su4ie+@J^W9o5lw zDg*1l19A=4ectxtvHRGpl=l`WA-H4oyBven1|2H6p!{8q;fqsk_zMg2{(J@-a*2h| zC;K5MkLafbnX;7td+;ol2m9qJ%kYvcjT}_-BNtrXoAN?kzWfNLTqAD!G>W)*?aryx zg0-O%?0o;o>02WZ5L_ybPT{dlT605%in>A18pq+$bp>xdMT8Y?HNxtobgOR)s8|F! z`4IXJToJ~%c5e9>j8K!rq}6_&Y;rUmIl~>PS8XopYjexO>{6xla0?L={S@P8PiWvh z(>h@8oG>_$%!54@`{krYT3ZU5hpchoKK_yCCWpo*Ah|=sC-x&pe@)vFQ=RW_R+Qrs zf-U!7yKv4~it@V&3S!eO@@kR~{5Y1$ckq%Oa;_3p$< zSLz~mxZI$^6XY2@UGU0_b)iq_HC<))-09luKa!KZ`8aeu0#oJPRj+1ibC(2qCH>Zz zA$DT{v!E6lai+E;_=T2FgQ6SvuQv0XT1XgkSZnw5t0lazrfjak8*cwKO0@2-jhz0U zq4KDmQP*rVuPXBywMTwX=c?iSGhSU3Uo8dZVk4^)`^f>xjs_*{9rug>_jc<1i(Uv> zWxeb6NjYT_QMx*HXb$^{&q~)%Tj(s>JVoq^?qI6lW7yM|7`U`wrutLefb8Qgb+Wm} zO&cWDL;Aa%BV6-=R9Sod^g>wUzGAMXV<>(e5^cCKRd`0>qNKqp^7?F7NByJVG6BWs z&bFnXzs7$xZt$yAu>=pUq0!drEvBe(5;|AZk~2on_wOfAigvlF)6lG~w^dML7fD*R z(6#^&p1Pd7NV|{b5$(5GCR(sAHz{GAGtU=ww z_8431eL4o&Uy;VCmDIL|@hR*d?`&4x#@O6-bWwa7Hxasb^Td;5p!>zxAcA1qge`4E zF!RE+BKP%42kg_EwQk``L4W)?Dgb8Ex|W=hb_7K9Gt_N8 zqGb`sZYHt*2YdG!)KnPl3xB5)AVBCvl+b%`0TBYB_YP7+ktQG@T}leQ2?z)X7ZhGLY{=-@c_7~zoy80kR~#f}vFp<)BYu8SFP06RM|bLG&&)H=;!980m1N}X0_+}B zmnl;Fh^S$R$OwuAFLDAK|D-apCW*fnYSQ)Vc@Q^0QJjV8=R6TbHhU|Bix1HRDIw-e zyh}L?H~hqfId7U7h^;E`A5=SH@UkNNhKk!OP12m(kR)z=`alz~cK<8A*;Lxjl4 zEfOIUT1*e=KnB>u;qUCz9RU|kva1}cE1Zl2$r=7RmZA>RK`dF9?5Q0n71RZ$y?pfkt^(n7p+7BDq@^Vgo6@Xe)g+T%`zMlvT@I#7;uJljTx9bvS z5*7>DI5;kRZ#4B#g&dugkJIaR_NU&CTR1k=v_qvQ8}aC zBvIz-^c^aaEpCdlx652lut}Hs#Zuk-3~&A5Rxr~ByGY$W$f;^HZ~gmc3e~A?-+$Hq z4P%t5r?~A*UxG`^` zynJ}Vt;*&`Be68JHf3T{7h@ra#dsO3XO;4Qw*sm*F3OsDO;bVdxiy??F zMKKa@KHpF&OdqIvaE?o2o{dzTL6?~x6lXku`>$cue%)t3=RD4}qLQ87@nc5Hsfi^r+6uW!N^P2`e=Jy{o_^V zF6ybusf649dMdceX)^I|r2~?bJ^org2Eu`WJ{`}_Y^OrYCN63)t4^1)Oan^q{mo^k zil%XI6y~8hpzYLb9SMkVqI-d8HXLiH0X?ODIR6TrO>#e_eWU2zxb2Q?6`Vp`-}Bcq zp3?3(#p+Ez`yq7mLv+np21X;xh-0nLJ(U#xfmd@|hF4u|%E?bl`Yy!AFXKImi{^>WkhQ z6)?G13*y5Nx$%Z>$AQx_$o3SIK*fTt?&p)mUcNOG7XF69bwVwBgmxmaoM+iOv3QvQ z-E6M?>&*;JT3{y;t>3>Ain3B}$YTpFJy3;pzcL zl}$_9GG{Q#GDUJXQil(A^; z1b>;KK!K!x-o)7~H?cH@fCs@m4TuBGi)TA3yChNwf)) zFf=D{GTH^*ku;;zL@-cBfx!^G^g9n3|l&3+?h&k`8IO})3hEj+c$8Ww?l2w+8-=pZx_}4_W zlqsD=vI>^SCIQLMxI8Xlq_f?CV-e5R*N)+6$q z86$*u{GM~O?5*g0pWWwiqUX#6-q#0Rx9ex^!$Z9pY21BlCd<&2ZlLi=Xv^2)$${r} zeU|6Se#8^y z>VK-E-KU#NOpOb#=jgXlgB38L3cs%l^RhPPtO@J*jp?k86q7C@K+PFEnhF-8LU^S5 z;nHi6_6AwMsUgLGNl1dM9d4u9WyG}ssPB@`6i*Rd>R2QUrS)(Vbr5X{#>sxI;ZHup z=(wazyi2{OZf&k$L?ulFCnX>lfi7tTk=-1kzX8E46EA3(8)K(0oeOxEh+N_a!)c~{pqzABJeK+VPlB}Z z)ItU0MTy*&yeBtL*4rhk*l*j~G*pFgP5FUrB6qan=zL6jzSVrKwkWX1VCYt6_`4ymD-<-bX@&gdT7WI^%-n)))w4ZNcCjt^To?HzDCiM_ z_-;Y@&;@imZRJPZjl)@2(ORK}kCB4zQN3N*vkP8D$5P@X(8&VS$SnTs9TntN$zIO) zi+W+ED9`UlBx_ZU9O0NKCw`GR-XWIvUioUtm1@qcIj>pxuO4iTtD1D}#-lCy zA07zEt6Icm5aLutzp6UWRC(Q|S@u;e${mE2d)xF5xEdGkxB~|7O|>P!P+&>y88)); z8rL@}jIJW{#-ePTA38NHbLFd0Bueh8T3v(MKL+MtY%J$F8~Ea$jC#48lWU?T@A13O zmu9{Oo?BDA74tU_FObqFdZkbP@z+axA4XSW6sEq~Auk5is43fhle^iVFto00RiU9= zqM3e6Hu$1c)hoG&YWDW(_VZtVD_+#N?yHTXb3%vKYM*@53{XGQsBT>xBV*+PFpAMo zKt{2oIVbB50qK{Me`lEidFJW)u}(i=8Z_5CVz5$XfKL#F}t6f?#BaBDp~6Xp56 z4OOEL2PR*v%=tBp`Hc-5?Tq+MtnS9*gZk?gsOS{j)8=f!lNu78u?9>7_8giF9>-y< z+ZOu5L0QvDd%(#+)A{HdOFx!%9?NR{U&Qu#q`r+5v zre^_jTUXT?j0+SgibqcBq(FkwA(#;Q67DI0vxuM>OnAphuW1@dW5N0 z3R>ZFgW(SkTW?t26;z4%FCIrLf;B^Y7jhXnbh@~7?C0PiFMN(GA^HtO2Lomm9g4Nn zj^hwQq_|AF48>p2PDmI^PEPlGGJ+RB&QZ9}?E>7>=Gn+0a)!PLaWj(%vP% z(oSGEh<~^|l_RmH@&=Jxnr}Drk{Tw{?b!2Mue#@O z)&)#PY^g*pEc|kIzG+TA#=4xr;~aBvvqawdpXYH#%6)Yzf=4PY=v+-0xtgw1 znLSc@S*MD@<6PINZXKz%XTKQQ(I%eGwB>igYbA3#kL5NHs0!U z)6-_Rr_U!fD}&JCI1F-%>kmlN9*4=msZu7nRK{8_Q~NlkwA`me{(#VlDHwa4>Ys^u zjxmQ6J-Mhq_w)aV@Q@h+Y9g!DV7uGP9A{S4lV%_!O?TYld5BudpE+@y>IPxh_t!m7 zh$aOr=RW?}GgUz5kE6i!96#={6Ye3Ms2nn`C2Yh6q^=B&Kf60#Eb{k$!fj>Bq^R(u z%J&ouFv)fNYj_>28V-5!d-BC^l5&ck<{v}WKmxfRi$v?o0bsP=UlnuxO;3m%hK^z`obP&`W+u=68)R^|3ABT|{hXqoxn16G>NsG#$ zPo00}8^N26q``!=T@iz?()8H-shIsc$c?KA?C-a9A|mBi-#5K^+_Ah5)~~Y){j-1Ux@cOM{y*e#cy-G{ z92(6^q+CYJLY-Re>P^da%fnnc-FkzbjJnX#yzNgr3{M2JYodC^?24!z42J(Mm^AE*2q z>~F5*D~?IXN9W#|jP_@~<-C8PQV|mP`Et6of{N~~HhIS-&CT$~OWIonP7f%yR%~Z} zYt{Z;2pH`f(j=y)o4(m=|oXEbsavZZl&2MZ#9ZLZ<=ZJaKc%GL_@W zup?`9ZaQ6Yw!zPp{%6ffCHijwiR+(0(6wE$e7D!RvNtwf=kMs1)=yTJ`{4w|tay#X zvJ7FxSF-D+Oq}`tX+1Bz!oAOd^iWA)7IZb|ep8$Dd2{DFk^R%gK-u`vc<@1oA2TXn z5H1)-VGq{tHTru9n=JLbF;bnHgfXinvwME*y{Gi-V@=TuxGCRKnCrEOr=*Hks1vRh z=+S>q4n(3#yqpzh7Mg>u`FY5JKHlQA^E#Lj-Wl3>2D)c48G zS$KJCdy$@JNaDp;^OoZ}+WcUsQa}Q^?zRsqUi6IWJb01x<;Bsf^p9S9k`hbzV*~*o zF*Uw7Po<^{O6hku(W}1IpI-_2%>PZ^^FY@fJ9$HW{*%W^Sw@ypNPyh%Ao#_Nax4jW zXXguk*xGbG_16MekMv)BS5EtO=~d~2tN+R4uxaEOzUIf$f7qpcm8U(Axpnu) z*Ux8g?i`k)a@@tY@vSO^?cOJE3$q-tmX20L}CMP4_&&AnizKcF| zhh|)1E6Fhtel3!P$Y_orD{2;#IO_#WWW`jO(Wjqt^j4ZEMjki{QUSR^&RLZ^g$2)K z-aMNgF1#%4k7~n;sVxf3sV|fiT~ufk;BbIAM3-Dn{r*NIJx~#Q>@Se1u`SA(YmWWn zmuO{9Hxd&Sw6JIi7ntzlM5|U=*hH3|76*t(Gy&yMR9eg{2bO|X zXY(F`v>y{pF;!OHpG&WnmlPm_1g*1&DX{mKUL_kdTl*V@GGj!sh&)3#5;+JM`7;mdLbkwVyJA&m1rtoNT#r z{qOf31CWqCk)45gYwj9yR@-MXcpSF4U7VXKmuHjzg}(I=a;kdJZ?61F$|kznsrF6=ba*?|E;aAU0!Xt>b8pX% zo*U-u#pTju)|_h-G3wNA`=rU%B+MZ~&6)CUy4`r7!+MluwZ*^O*xp9gWupqrQVgKwyTL79>Xu+)V0T{HU^s~EHhPbJK z9wrk8s}#GKbkBRv9rE_sH-C&Sxo^jn0l=&);mRsRu<)X&z!J?wC58ZI<8g(ZIYWeK zZ6SS%>qjQqB2~7FAx!%Ny^>U-dNn7Khk`|2%lRTTpHHgHz(N8Ol?3Oh^!%Vj5R*&} zi9nu!@^lfPGjTm3S5EjbUx*ozDV{q0awT5|gA;!3K8NYsDmdMbg?eO8fD?&+hR+R! zH>oN)msVg*{e)!64FEZPP;}0Cf^Tzw|1=iKEQ}d|pemQud=xUK-97{Wx1U;&s(Z=(#iKU6ZU_c z;MD#WHao=6eT!)F$4rvDE1JC zdI|>)W9=9*mYSDG1YLT%VgEp6n;hK9C5&ON_UrR$osHa>N&t%a?Gx7}K8hAFWKy8+ zMlVi)gf@CG)x896D!}cp^(|&3)hX(7&GwE}f9Bj`7L6@w!0UnsS?J?y5T6_}zx2lO zNqq$-;eEaB8;U+? zO5k_T@bmfW}bxRUUw}ZoC=3FmFWr-4OOirU#rPwfgh{ z$Qk|DoCe*!KScsTXcvy&-TY^a2Wxfh(<=e^ZIgo*QTV^h3kqF=)ygb&%D+C^g7qoC zZajpTTsS$Z49;c!qtJsWMEMv+2s0F}3ah{Vc=ol4&-;--4?n-(Rldn^PhtrBEn6F2 z)4K#V_(0xIcn?I0`o6{PxD55X{|jjR0z!Hp@ivM*Tax)jB;*MPoKQbyv=6QLFij#J zfoZU>Mo>L8jEw_!$DYRb<<-}Y*4aXMtsPY5;d|&7F!1144+ot3fGu-*VONF6#KEcJ z187(QvT}LH8V#W=|Mj48tRwG1iT~uJS?}SG^X%xyg$Mf`t*!)QgvvuTWv0_#zS&}b z6Hs7DRG(?DVC{;{!p#RYTOhg*VaJFH#iIp|m43=8tXZnuAYI<)>V*k9oXnt1)0RLg zhF_~cb~h-Wc%(9uT>NHG8F5v$uTE9u2dDXTA@U_?8R~aOiVCquGqs4W&l7f*zf8+@ zLs?6}gT;$^96g72Csi0X7yu@N7EkiqYUpfzdBDZF{O!g=s6CBo3HkRkC(lu@q<5)d zL-aunk+}iQT#BYnFA7HCp^q+)@KHqXQNX(B8|)6kmkWiDZa!jgXc<(dQnWyW4f`n? zZ*7bEJ=~u-*+o7|j(?S(3ivdvaH5*H^tw|}f@AqJ;rr_d5V#lGYtLE>+K_TQ z=;~bR_<(-0by5oir?Ymx2O@r{^)lgiOSMKX?Ew zj0bH|f#7F6*cf}iEEf@|!#2Q;yW2NpaDD1}CteDzJH(UMvZkIl(TE71S6J;^M(st}@=htA9 z9wGEE0*V^2E7xe-k4;Jov*YHq*Nk(z0OnHucrtAQWK6Tp1w-+GaBKk+mf&=Dz(o-! zZjXjX0Zb}OxLTvpAQz}H)g@`b?N$TS73+3UN-ov~N?3I((L8&d)Z0Mnu5>wDujxTA zAz5B0c{Km<==~wxH6S~v={f$xb3)T=CeG{LfY;IwuN6)2Cvo1Ivh15bytm>6-^BTN zmrKS?`Xs!z+>7(|f+p(SqR%zzs@a1_L;6UBmL7 zGt)YEu{BWH6=ts$K0K#eD*i{86m3{asf}IM?uBT>GnAr)8l@h}MLwr2~awzGqju7lvH@5ub z(?`jY#|;E#pbrlhAS9lgyvBgU>IiTFEZ~@6Vu}UmEC4774-dg-x(Sfk(D5Q-D*p_D zY6?gQ55Q^6S@=vrbS5W_;XTH!O=UP$0!S=dd?G@KlH-?f#(nUdG$!w4*qOuitRXZo zTVWDY35NqYE<@x^fXs;pkW>H;fRZcOSg27WgBjKy>giB0LcR$EP9OfE;QTnF2^*!CAvu!Ps&L@Ir%H9+8Ly@Z@WJq@O$`xk>dg z(g2hI1ff}x`0}h{fbN{gI8_n(vH%N~8BSr~l@;glX)FYI5CHPW4~JmN?T(bx2=Sa0 z&@A>^XjR5a zeHxUA(d%#zxSVcHI=-2Mz$Qe1f7Z#La!t$APQ0RxU=-gn&~X=M3nSdq75S3FXwBCt zO?E;Z##q<&>)QevkdfeDQ7dHl1GT3~UJ$Z=gc>j}JL#}9iue+plRbs#IKPHT(C}iR{P3I2mCKuV z{XAB1pC84Y%nx6H_){nm7}ncQ<3{%?VQ7SIEvR6)z*h)FU#kK|QrlDYI=E9?>fbLO z4bQLZP2Ut+3r$|1NX-ssIrmn#g98vXem~!RHup;kBGx^di2zhQ9n@j!P<;L@B5c0> zg=kUDow3xGkw?B$sWideX6F=y%5d&ET33-5;`nN5940MYDEA81-s3N#4$C$=8hTC( zs3u$*!h)3!>m$&J`Kw*sXK11ow6k|;W6YvR!VEKYf!}Al$O}xpl=x*N&dM!~{cnP= z8xUg}bVYkN-8Ide|F#>nW#Pu#+BBl^P@>sWAd9@Gt)1YWe5OC`gPW#Q4zs9)|Kqkn zc$(G?OQ1^s`9R*`-sYVYx7|X)~s4-Id7@9IXN+d1I1Sfqk0Gxce3}+*E6pg`{FM>!EQV}`etL$ z*ynotzChg2;dgI?hCh5;QrPppcMtv2!`kB`BGQkN?jEJmkBA1xnd!&5caIC{$0Y_o z%YE6eyEHQNtlDQL{`g;={0*-7UjdX4_35hlahFwa=Hjluk^si$HbP_2rl#B*Gs#Rv zGq?Eu9(pA|_Ue{2A}Ilw+mWdgv{cZpC|A-x=x`pHb>3Eh;oD3gL*d9=sv z9M#6zLWI>c0X(-PD6MK5rI)MLyil&-IhsOeR&QCX(m4P0cCLEsgIc{yQn6dFXY%>v zQlxl@8tslvbYneZ53zfK+9As+E4>qKt_3F&Gom3`b8EfqE|q8U2mJ~pT-Lj`xX4}4 zM`Axb9naUk`Eoqv_b-!Ou~{~>mgTZ{-bTAqwwM;i@YZZcF>e+8@&EYdHRV(S7 zM&&${x;h`(G~FhADU(CSKK6FO)@=8&X5@38c=v`3cGZ%*_{;1DcmDkR{^8l(%Wg-a ziFb(Ms5|A1+>Y$!vn|n_b#cpELtF@>j9$8_fUW}Knwfo088lOF26fiulxy5eTuW{5 ztoaw!9REDI8}t78N{5nQ#MlJn;RU*0)Efida5TvRUd0GK6^J#p51`|zJcg%T?G2;M z^wGkl`D`J=F(Ih{OeiYE!9AMEA#^Q&I5ngGvO+h(q&n2q0Uju--%mn0mq#~L{uht4 z>0f|Vcyz50;|iR+f&j@%lt2VGxBVf^7P|;rPL|M8JXdh@*;An)CLxOy`)0$dUw>9- z3WT*iV(IAcAPGdSjTD>t8dqdgHNDI`e`ECXg1l|oS66Y=kOAXy^B@RJz16rCed&LQBi&ngiBGDYqBJPrqlv$W>W6@GI?ov z9J1o6ocw+C{_MZMtq`X&R7K+JD_`{5V zHq=Pqrcb{SmviXK`TI(Dkrx*g^NS}6{tlENG}f_=tbADLNE<>KsK2jySK%ua25H|X za+~1ZKpjlFfeh8tc1`ymkD?y&3^#H~;2#Hvn{E=Uu9+zD`Q?bh`6bGu_@>@AaGG)n z36y;m3?}$3Gx<_PO-GGFCJy;6^!PhbVfma{d>0Y|A$+b$(op{MV}-+pl33BKmvz@2 zvN+oQK}hVJzo_&net*0}C0ho$1bPlZM3K3@df4E6`UPD{JDq>8K(`|1B0J4WFMZzH zsSAjHVJNbJ&U{~RUUhR4dF}S>H54%$UaOYQk#_w0a{9BI->Hx#v32UjrJo<^aIeM; zL)=5ne0#!#fjIC4uC{af08HG!kh&j2evte|-&^+jsfYUK1f}zkrF&sB+8Dk||rA0?+pA0cEtkZZ8c{VwSQJV}D3()-5L(6CY2q zo}O-o(SM@Yt@Iib8C|UJmgM0s=1YPX=QEiVn*yb8<(Q2M@PB2FDb7%65>1s9$9_Tz z?ULc*q0r0cHQOyF8?OJgB@j73+IfB_&*9bfFM}SL2kTvwNKe6a!&%zU;70)8#<48x zS9@6cMVw#{khweZ7HMJ5y63enEAzZCTa^lS>7lfxr_kj6=V|YIfGmj{qD6yZL5glW zQ16NmwQ9&aeu*P%71}=QPfIXgKfzW}B|Eo~+~CrLe{d-9fLTHpH_FmLd~5%f)sX<^ zn_iY3cD`7^sU~jFcx3be*%iNc+uKFxs%>nkabc{rm{3f1rn2>noQE|6v2o?h2f;3S zR!Q%Ks9oNpvX0nh_)p%#c+<>@=M=V4%qz{O`wFd#Us8^yu$AW6Oxu?P4~VGY2?T=8 z2=M`~y)0PR24ryGb94?_0a|t89WMWHF!{tqp$0f>EAZ}4m>KVfj3Ax!C>(kRwy2&0Vo9pCoU`Sr9*)Y(wbjTu zJwWLYsQidzXwW>fQW>PO&#Y05SX`q3vYha(zTaX2bBrnX5{(jcK<#{}3eRTl#(Rh( z5h7sADs(EU-pLW)ea?&MM5mX@xiF>eDYzCkpjLT1x@RdiSvGc|kG`E{$#Uy<*yFh$ zGIxq+EwpOep>52lO>)tHPQ3jr+Z~m6MlA78tXmV4Or4a28HIEi=ML2oS&8@ax4H$vmKhfy$U&Ox^L_3$V<~kA%%uoQ6EaMOu4?h z1*q8ysOz0a-DjUTBXv`=Ui6+Xi1a_FKR0`OB?5_?H8Bq{Ef$s^ET8N86EdJmYMBq* zy#FzBXzW!jzY64owmeYHnzN?wjeKi>%U72wX&`a-i}Gs-Ek1hW8O8rc+FZTE;RN8^ zgggBnZE-f1yQ-m*gq~sQe?*uwhy*P~-h=Du&Ue1RW4JO6i@Lm8%zKQ&PQ-%P-I6ZX zB>s#p{=(0`culkQd9^E}JxMM0(T_)opFUKYtuRjw=Jl4)y-_xe=fOJbgcvQhp=Qpq zTda;mGO(cM9&zpJ3)^|P{ywoLJ7rj2q;|dJT1jl9-;4blV=ulG9aXB_3%V-^x?z~b5ktK9l7GhPLUOOg4kPr)_i>(y^oO%IVF=N){ecqNBa6Id&P3|1R_rj5FOl*C$Z(HQJ|3Xv>{0b8I1qtIk^bMg);y+zt% zhUZi;I+Ug4lCqg7dijz@Yl>{6pr$)Hdi&y?<`n1zM1R>!Unccang65~YTA`^n-pFv znt@O=G{=xbsIl8a0TnJvdRKKCX42m9%gZ)8L=rM04^E%T^!m%s31AZ7ZP}ORv-c}N zn(7y@J%sAm3t{nWck82gmoL21432sO#=1D|7Y7UCxl&BU3wDy&T3K!Pb1)be*w-|- zIN!BN%b*gqk_p)J`n*mVSUpU>Kfqd2j1EhCt2fG@fjhor#GleWoY$4;!40?et4~8r zp>CUIK4EfmpU2Jd1x#yrbw1AT+=c4ypMsuqAB;&0kueRN%;JFreCf|~>2V7&$&Pe5 z*W2fnw2}Q`zUWh%WBPmo$sLp-leqKkgd!#JWt>G-6ZmBe@tp}+YJw<^Dz26g|Gjl0 z0uQQ9(DFDZd1F;Jo?E+l-bF@SrYab>Cg898I zZHaf?mhy0xa@5GkcGxXC+g|R;OjlRpRj}rgFx(>CbpX?Qoes%h4oadpKDY-fo-`;> z%EYE^uP8@3A?hw(W#+PFi}Ps z@fbF*g7{_J)&OVes9MPs2u++n$7G__UT}UOGpkqD_!v~v9@sq)u#uQ$(yn6`ntdB~ zKDxge`uLKAh3fBwB2I3|EykG4z4DpRnmJjiG_cHHPz5gyOvmTs%!`-z2XRm;#88an z0Y$GwXAL98psjKijmtbgH90hJ9{vFyGcNil_gN4)ls{I-9X8=?UHck(ZYL&WIm6rh z;!#FbyIG)JM!Zm;={;%s6^0pT=bRakcx64fda1J74|S!Q9N*cl^Oot_JF#nFCf8Vr zlDj{RE$>~6MTohCmbFL2i*sw_7aA1hL{{URg!aKmreKXeL|1*HG9&f-`w6ukf>AG` zSOa9~O!NzM)>Oqp^cucR=I`FGL6n z;=wCC9Y9E9>FP%6p!ZHuSjKJ+0J4z`V#PMmsYEmuY#}EuT3O7CR_na0cFazmBQp`k+fHc=`2xJ^7&e4EhwHY0xjnR7Rf z`vM(_F}n6Qz8H0LIcJ@6u{zT1<$1>WkWbJa+aaCbCwqy1VNd_?79yetF-0|JZm)o> zfEAYw8v7Ba#}Hvz`p#&`8OJ851`llnR9%^5lh+j;fHrbHd5$b=!uVCHTzYtjE)5dr zO!wIHSM1r4b?LF6)X5URXFVhV)nc&i0IVnLVj_ebUk=rc8qi1UMA@70I8wMfyxck= zsqzi}^Fyi6^cpu?F?(U27_%BR8zc0P=V)0;kk{IV!~OL()~Pze)NtyDA#T1J`8SY| z^N`p}@I~XA-=&f={6p39L!oUtSF3SS&3(P{W4H3n$3%lF0xicu9QFg?d?F8)aMgd1 zEfvo3K@(*3q4NbZ$0}I+?xhZvGSJ*;zvFp6k>!@bGHAA}a`To^lmOh9;-EI)EqsV0qRRWH>;+YYzra%6_FO|N-CgidyP+zPh^`T zG^rjZLYmf5U?p0TGNHJps*;i$T&oy*1Ds80L^E%l4OJi$8ey`=lyNgAu7&pZ^^%(Ir!DH#gkIA08%{GeXcf(DaNoA*;G zY$~7on*b`u-Pf4!f`*BfaAI_=7iYp3Ss8)I0MxKtbJhqkN>yjkQ2fO`Zc_r1WbBIe zA&REem9HtzgHZff*MAu>7nQ;ZD>aKMM#IaD zeB8(8-S$)%<`X$tA$>1nMTiTc*l%T?wCED?Wac9sEChf&UVzZWORNACg#z>URB)7m zP{SZ0M*b22!lEIP#XO!Sp1M!hg!Ypp_Bl{JPo6ZOK3YF)_^KBah;M!J&|nf5vJ)+M zeinIUV>4N6<74#Zg2rITLw*WK&`K@z>V}xSoMdr4p9f#DcUxXdt zmMB?x@tnVCYbKY+y20SYKM_5(=-fe2FcYs?G)UY>Sj?W03iEP%ga&I+DtCh8(YgzT zG+D#atL;;KF%AOW@q+BzhM$YfdkH5`35%qKn)SZ$ZhUR|Pee9t`$sD6XB=(6uX#1( zjdRhP!H`8&8YCO{+(_wNfbF}}qAI2(Z?sbSf_>gae13O9NkjyXJ8FFw6}gj8w3GCb zD+HpJ{COvxeV2HHQ(0*@GjccU6zabbO8WnC5YzvjJk)<5)&C&~<^P_4ls@1HY61Qq zG$w^g{{PUJVpAlz;(zI4C{=%`#ee8xr%Zy38M>I&6>s5>tw~3np^F)~ z6hSTfcP;91g>v3uoS}{__KixhqmCUe?RvM?ZZE{OyViM6$u(QrcWqJvU244Zzjay< zMtP4G3J!gC=!^eGvhEyGo*VJ}%Tk9(?Agjm;gG+Rlh7MLbQZDF-$?9xGhM+O@E{zc zwlh;_kPt5?)W7_Q9%i3rF)8_I0%{i6h8M*xl2p|LkApok!-+HfC(HJ~Ox|UgyO6)i z<`13NM62mtPc{5Gw@wOpSh0NK2(itp)pjdKvm8nWv(ehU4|;xxy;+=goalg0+fY z7Sd-ImD^iLBO$GXooiEMB7+)?R9g~jU|g&7uL=a#1h`Ycg{=W3y+Z+UBb=+NM1ZDa zg+z&!sqEV_XV=iTrqJ?bQia=O`P&M`*n1U`qZX*jO8*ksXOSV*aR30D4kZBKvSleZ zNodcEKmbzJlv^8}u;T*OSfSRlAsv7svWFy<1Bvd)0&$_%L!1?@2~=bbR}=y2oo07CUD(~1W}>EuPvPcv&yGbZWt8ksGS76 z7&Rl%zovom3TpT*{X#SZ3eh9VfDPIfYW;CY1 zC#T$CEUcn*NBf=%5v0*3uSCV%Lqk9?kvuAhNj%&MU=lbT+RXKa2g^Mx*AYIey!Y$_ zXo>joQ3q^3FN7Q19~5I%#f4WG2F>q(xi2|BwpXuie?s+v6tg|GD?lMkc3GOaXQm4W zP-PyeFrzK`!V4y5g~0nEj4a`{AEj!-%qXCiDMxXFWg>4-)5!a-@q}S_Jq=(vk%Qu7 zmM^9xyp%`K`HYxkB)%sgGWa8pw?vBxi3la08w%h~&ruM0(dM&4$~zf62p z^Y;^hb~4cR_-%e`(J@P=SHhd2}{Jk&Jbo1Y@J^7n@zu(_| zmG*_Mam9#rf5+hNzn=;8@jy`mRk+U&sy6&aWSn5AJgr(39oR_Zh($xCWhPim_erRl zDZ@TLlC3?8%=d?ake4YE_KH*kO=n={0W#TmLhuV}PWPp1Q9>6^SZjKV?ILDM=<|NI zT7e&O0JdU8q)_-ZkqunI0>&b<#kuw=Vr;Jtiewnye?^oC55$vsE3q(16(S;v0uiPW zn1a3=3auxas#S9qM#PE>ugE}!zq3KnDu&3H^JcQ#AJy3tJ?Q0-#si{YTW*1i`V{k@a4+&n(h7lS;6rUYxFg%lOK$FEL~4UmiJ@` zKXYuie5x3Ep;<%nS-8%atI~t`s76WUq}=<2|6WJ^uUOzV-xO++_+`OY$e=vED~_# zGPmiCki?ib_bb&em0P*q3citT@UZ)1f74rP>yMUy8#ark@|#p4E&)=C8>NWEp6$5=al z`}##&KYL=h3SVfT{gc`#62!V83d~}yPa|BBka3?tJ#(4nD;{!t*aC31Oe@hxD69}2`c$^9sdQU}bWQ8mUL&h1z2j9u??PBdL-DC? zFf%uHUlJyUP2TRAepI&2T!{xWBV}S$&H54qKxDWJyYnQ}bRV26%)Ws(>$^BlB*T&Q zQD%Mi7}U&2<#W+FW}g0^c5xUiiJAMu;0FkcN=m*3zY4*=yR$MYaLsjq#l5Zq{pZU2|N&+jqK(JS1W|>-fAn3aaiTt4?z~MqZpx zzp)r&a$l#F3gP5Yo#FA;!;;7|Qr-QQYX`p{oZj44nbUaFb?X6U3Bd(ndEydGf{^r1 zTC?8{y!GJp2WxI5w@O)*PaHdjJctg|5HEV-9>6sN33sIn7_r+yrt&dg+NP}7D+9@c z>K+%*^t6agboIDCZ`-Z9VKS(o&n|NQDVsO)n;gyQ_z0f1l(NBsGQ)-0UFys?H9U|w6}er&$^ z2%188Po2xVIuYrs++(YpTB+!rd{}*%T`P5{< zcj**D5>n|MLPtOi9gz|`A|N15ngOK2bp^^ncV04opZfSB@KC^$MJJ&g8&L54*>eCij!Sp#9g=Q z@$b^2z&p;%Kz~SHdzahKS0sR}ul$V8SSP?p%+4!GsmKwV0WExHto#o{(e+#~hZ`2e zRYi)|xGaHk?>BsZE5lbNbqS{Lgew@5PDr*Zle+PymD}Ggv%7vt5*}|p=ee7}%kx;m z>@6dWrx()uDpp#L0yDOh0Aijn^z%b|J@)G)uIDdky`Dmf5RRR-^-IuRkbs@aSPk$z zKcJ?;S#b>h$$xE|0yo8s=y9toS~`3nSjmw5@@OKF7Cn7}q0v)2n}60Wp? zxwYsS5~_|Yi}T~8?E6=jWN&!Or~bWn5B67dkXSODcbq3%X#KLB_^gdnOkD}zwdGOi zmxJjqt`>2)$}9YVXR`l!3etHhqd1LYgNc00!KYUym@`hUCC4HKi4zD%I{8%EXVES? zko}7{h$HTr=vY!0dySDfkCu_>8bCmE@e8ur6IAf_D;b=-ZQ{E`gGkPzMF%+3ILH7< z?h_BLZXWiCUCE;Ov|{juH`*xchTuvS&ziuJDO3>tW_-RM^rqRV?v%|eX!?`ot3L-j zwH=Ee?fTs{PtMHFBh|Ey&wh5$rbPo8XIEam zBRE>c@&-dMd?O%ia7o@zr36g30k*YCFNj)1wv9|FbVqn1x8>usJ8p?0eE33iFaToe z$9_17r*O&h`#(H#@lEFIO2kzne$5;6s9|H6Q%@-OW}f=)SiA+a@ZS$DaELbX|M*g6 zqdwhX$V7SH`NPa_#-k6}9^N^&Stn-Asc`11;O{-vOl_VKfLpTp0&y3n=QTB!MUQ~s>-P^yg!Z`vV!r~ui*3+m#^>owfay2oqqA%(R}ui4OZLyK*uM*TWGnhgo%2B! z?ZZ{-BFI5Z@j+r+n!FCYeLYMO_Fi#?zizxHavWbMA?NvT-=R3VUquiM&_JZU)N1a)%4rLV8!lCw%QAG(fu!qnx0MNToo=8EZy)fMOABGcm7bOcC+Qrt8ZgI54!V~ z)*rI25_MgTfh9J*($2PVYBnXk=glcoXx;5PGxOW8zpsT{p^L^`9ZG-(tQ8O0Eh)(y-naU2(Jj=Gc(N_@(2|4@Ivxj*k@l-I&_UGh2F)-Slw$ zPjAiiW=VaNWad@p}@fY@%dfLbJAapv@h<1v{r70=&s9@0CZp5aY~!U zwIeveh}jPtgPL6LQ5mu5V7Wo=)#G+!4+|8>bphbkgT9}7F`O;uhD1BDEUWPL3~#FE zz*<`!tj?SqJfeoiSW;3hUwY>(ZP2Dp?JDeWvh66!jhC?SdW*ZM-5 zfokY}0Z8C)D3Tq?Y5@zrrqKh(ncScgWRQ(UkPtcSvIFpfqsQHftE21@#btM1{O`5GfYMVS)#a-n=3skkoEV`a}hbO@hvN*=v0PAJku}Wbxfl)xy#fZU{1? z&aj({uJBm(u)SYKcAA1ds-qv`Ow(7Ql~#giJ!DTlA1W^Mt)gg*c}*45Zu?NPF322(|_CY_s39IoqfP zg_D3|z@!*~jCxzr=w&d4AGBQuci=_}Fo7OMZk%$!85NKgJxa@2G^zsKP6i9p2@+&b z5Wsw#3>MtRd^K}icS<<}a|-ZFta_U^>X)|ri`rO!JMImU_eB~-J@Y^&U7%Sz^HpG{ zUqbmn=1@|+TxAMS)=A-O;6D>eptB9Xto-kR1h^f@gtZO-`wN~x0}J5q)X8TUz7sg% zsN3OVIVuUe7<`_KXo45GaZ3&>MU0*IO}2P|Vo*VcF`!#Uy6toTlRKr03fyqIdam1H zsGnLJd)vx99&$6@EK$W_FHPU+&XmtZ@uAE=_iy*Y;vdJ61M`CUoHL`lAKb{x8aDR} z%FDSE9)6AQ;@vZpsXg1+W2eu*H3Zdy_I<7=V1Y)GnMQ*7De`AC- zQ8yWgEr#`Luzn~3C`(s-YhWgqL(RpZ6$TzSV#w$bfHS%t1m=*A}6!^bM$uPWw z8!B0Sle6uL3WDvZGo{Mt*|fK*839yc|`V zwA-m1wV=Pp9^2opalo(xZY7u7pa_fi*&4WxVN!?8`m& z>=+zKg9_3(T9wWRhN+x9K?FU^KUe1ombC%NV!=o7)2mmqfZvM{=L5pO&UK*=TNQ~l@#76u?$uvGEg>HUaB4sOsz-dnZ1SH8fo7&Q; zr(3dJTY5Y}?l|alouVvfttrFgy?=|ba$||>%kqeqrkT{6L7)$pxlDLv6O&%*?=;l8 zw!VmHRR-#TO1U05x-=iOG9vg9__kixw*H7VOX0Tih!^r*ZNmp`lMi`@@$Ii&+uyjh z9|2$}EYsa!H3W1MdwsvgHb!;ARe-ZB7IY53r==c@Ux%aSB zMxyiZbjOeCj(uSUNQc4p2>W-gljX|bXk#GTI-sMS@OcK8P8W|-D@Li4)2&OWtxE*i z#IMu&bFNELr(60eUHoc?pj)>>TenhLq?}vFvH5NlogTGFpTBu~NZyxH(x8Foqw zpY>s_HMvLj`zbYF6zMhs+9uCjy&^IYWZ4pcWav{KhCLd%{b<1M%#Db{f#y6cS!Xaz zXCNVRkm@>M#4;Ep&kv+M9f&y`ypuMV?KTuxJ$Rz74BS{Id}XNca7gx1FR_g~zilWV zIsD|&a7jzQkqA%L;qdc~0lM2@mD|V*x0t7GgY`;7bvi?>mLp9fqurxkxgtD8w}&4i z={;?uqmR`3Mtg@MN2e@bj=7D!nHQdj9EhDCsUIDSJRG4!j(s|69%PN_O%2YojoW=4 zVLlpPIvn4AD*R=h`;}5r5WH&V(Zv2!f$tl2Kb7vW4r>l{CfN#j{#p(L3-A?glgJN~ z&Nn8tGbc6A52M|u_@a2Q?#HJsN#w?EYF{@s+ymw3kl7-qqLEe_tag zuk}%rJ1sZ!LuXziXI!GD?FwGs5J;_Vb~@0kcXfZm_hH7Q_=!*Zo2#One!4G*=idbB zz6I~RxhC>9xZrKTwYPa`Z*Tv7dv5G)Xu%BGeOA?~Z;H_$>e-+0VOGo?O%;8YrTZ>R z6w^%yWE8y1kK!Gedsl!04z<23(S2X${=Piw{gZ8($zb@z;je0vi zmO5FGGi?uh0c`b@e@p55Sw6R3G+`$Dy6T_{)Hc+?VC}3pvM;5 z@PVHnK9)p$^i;Ai`sQ)++eh~3RzSw2X8UVIG!y;rBV23>A(qQ+J&TE6#JlE9x-EK* zE#lJ`aboqHHB%xUg`7Uq5`~|xpZ+9ue2Q40c(P_uLGQC*^al>H$&-Pf(*wp8dc z;iC7&?%&dx6JH$vEgM;Vx#|()6aD3t2%YG$e9dEJ@b~BAVoPEtK8Gx<;Nw>a)+=%y zE72aSO8v|BtP@{ucYID*SZ$A6b%nI=Sn4=U3FhkB7#qejk7RkzlT) zR|EBb<99|(Pkz7naU;s|cO-@<taG$#CYisR?!zamsX*G>< ze`oKcJzOhoW94R|i~i2)uQ|j1Ep5%zc>G&E#}oJH-^R&b7eD^n7H>%tW&OYye!s}t zD`M?;vJOA806XWHgct})%sAI((J%oesuw3<`^h+k_qa!IuI*>j3{l-^HbJ{3^DG&w zLgPHUWs3*L-8f3w;lrw)$GGSG@Sv znnQE#;yd6v@yL0{t3UmrSUHClX>lk+P|Wn|h3`J&1-gkmoGxk(Q;&`KHI5sS)~1mc zs{e_&{<`|Uo^}3Q6e{B9wf2@r_a}{$m8$rmZirSJ=RuRMCa$C`n!Vqr4dQ{J1i)k02D1bd5Xd~ zz1;%RH6$_a3%yQi`*(PgZiqP9R>S!HB6h2tjej229cO$<@1W@D>>TGnNGhAWbX+1C z@7U-(G5KTPHes^QQ)g?&J*J8^l1P-^RYh^8?(`35C}B#)qDE`G4hY8bLuhzuh6xatgslGHlEOe7?cR=#(<$9~OmvO4rYH}{NBgc!Cu3IR4E2|lj`or_xLIr{f z9$np@=VVQ3uj|}1)fA6cv!gGS@r=V(L@bAlfPJO^wIKCEEUskjCE^b%5squuBcOj z)^i%k!0{x__+RQ{xHw+xTpR^z*sPu;{;$b1;dn^1XR=I<)~6}Xw1tNznljNe~`cX|#^MD8?m-+=`^ldFi_?LRr-cD?(j*t}#XW;l{< zQeFJRjcFsN`HcY+r`4NXP>cxaH7n%s=lGSJdD^Jp^Y-F-MX26h#Ph$uY)&=ZYH+*R z7scD>-Lu>{>IXMznhm^LaIRCVcqMzmJszrmsF8fVX~N-8%+GUz$3~;igcV)YGq-zo z(&Odj0Ud|^r3=S3qSg8L3-{Qx7#x`xZC- zZsJ%oEn`Wqinvg1iNo^xZt-wM4};rG^c9{y*5fl)T4`c2ZI5x^eo|8pA{OJ~oQ+i; zWNMgM+HvXo^(pA>xK?oS{dz5D077x3`m6Etmc|=+H_F@2s9wTBEa<_zh$%vM5hR z&&zZ=8%g`v-D?o}EO)Er$fS{R>qU?2ntfBtM+f7;o9E|FQjS^9dZP1&+}yV;nohrq z8oQo;kox7Dxu#W}_xIfS4O!LuLuZ2?+&tdF=Ciozb9%mIJl7w*qKu_peOkF{qun{C2(=9oWzarZ-S)Oo|p{GI!>dBVJZ-qHI} z^&5L8>$dl^XP4pw+*tQUGTV3qg6{`-{B$|hx;gXw4&-V`oRD)j-y3?5;D#q}tMfV= z8$jX@+Yuu_f^j;4v%o%}+kf#e2bhRCoo2wx;!cQ>R@okd{lxzA0RQ|#72VS#@mFU1_mz*$xFe%6V7K({=>=)kB&D)9$)jCwl^G*#LRDGQ7==HtaLR>m1L$76ze#uN1-CKm;&%HM)b>Hn1 zhbps~`>u*&u!aL%quFctae3JE>iy6YjovvI|K-_SMQGtE7v^u2-o;x7yWEF353*ve z9BX|2b_UYVKH9f|%a8_(%aA4rP~&uI<#j}z~=Rhi5+(!!C1)wmI>_u~U~+R*QJ2=Ml$SQJZVNZGqjxmi30*M2U3Wd2`P9hKjvZ zSm|=mJxc+_wnx;|L-IXXK0m?pF7-^>e&4CXM>}`@5%|yUV#@ZCW2ZKQzas<`mj2#- zvz!G=6)TD1wKw3K(SnARDRT&04n+L4qhM;@%7;=v3*I+3WQlze@m5O_8J+Fn_{691 zrNzKu=`-vor%p}G0c`+K|lo$g4Y!XB--$36yl!R+M zF)poAhJ{+;ME3xR+;Pkle|xxaCAAwZ90Yt*3l;`nHD}q=!20r^g*WL$H60*?cl0a#394E9s3gqCTmidV7u@Mcx9RuTjDR1R}Jx0EZ_v*Z*#Gj7@Z{DTQ* zzp6GT+>@YU?8}fd>PUW^WE_BPw=~mCl1RPGio8TW@|^2C%Aw?Aj09^)eNxASP)biU z*aK~@Q0yp(t2iFo#r#4@6`sR$;}d_YO@i)pF|z7JTrqD{zh-uEvW0Z1?XR!|KDs|uhvNkm^8=SN+Q29i`4x}l-*E$-esF8N#!$pBvULs=^T1L0OsdI@Zc`{Cg zOZcwwp|yk#q*#2LfsDv46{^&VRT`E-rTG&pXQ=EjCy7*Fwkfe;{HBrPTkYi4#vUUt zQ_{Vu^ey6N#Dx@!C=y9Lbm)0$%$FcnMV^2^?RqjgX)I~6^Gd#oJ1ivr9o?-G+rB&V z{JMgHQrc5UJORh~kq*`R#ZW~MBv^v`HvJ$11AKvQB={AZ;IFrxdiub>;+3?W%(Mm& zuX9qgpAlf>y#A7PV^Q#z{J;rgv&zfaibBDE#gq)IkjK=nfL!~^m3Z7iqK9gtLo`LU z=*9G#%+k089wTHcf-|8XED~TX%yu;6CDCFybX?=Iy487n`z=maNY`ZN92P)+x~t7d3%puV)Y=jBJSrZXN|?M9 z8s=F{pS`ExNXtiT1Y`H&*th1d#P(+UQbyAf!v>9nMm%5v zwfpV5vr=NCVHewjan2#x;SyMZc$Hj<1UQxr6s?u0n{ZPybtxj<;W)<;$8bVfcFM%876Lpo+JPjSd z=rCoq)6rHdmNB0Z&uzPsk7-YDJ?IwM&;3#K^!CxVAQ+UHt1XH=Nrlr4b_n88U93au z^%1EFth_lgNun>rm!SFd4|zNBQD`q`@2&c2?4R zoG3X<27I=;jdhw)oDUB+5=+x84dE~9Gju8~v|+4GN=%EKTa6Vd82m&eddeW=OOr+I*`UtgB3ivjKls5pG|WdPti=rbM#|*=HUR_#dD7sI z@f?AB3FS8M{-69V?Em22NB$9%x+AvwW!i87@)ZA6#QJqkaT4!DRz z?QbI|UYs11u^phfa!g|yv$U>uQ z!Vl%OUBLlR1{wgN%1TZ@!M4=J!w0eAG;j?K3a ztd_~p3)!TCz2t=k^|4i~I1}7LNGZ=fmuz#QhLKXb3nUScGYr&6Cdvbjc6l2$qAWnd z+4eG0r7wpVYNq|k#r6w`37C)@_K-G{(y<26*~>`CDPZ|_svL}K%oN!armR7N&zYb- z@^UZcp?7UER+3`Z1~c>q!2}q3d)E8x4C+U2+K6)!%Jcf604I(H^u-~k8TXUn=r35w z>7MNRri)g`5PKx_(j+S7&;533gm#v&>nAiI2D1-%#JGY!*(W?S5O=iWF*YEn@D<%n z1XuseYFvek+xg8B(D~cIyG(Qo9n?Za=hHyZEcyl5G*6Lw_P0dHt`01(?0 zom+$6gF{XqnUTj@vb5EK(|?d23{`F$NVg+GnT%N3hAB`}dTF2nvdx`x(8`%?!-_() zcZI+og*z8gzF*N@4k~)?$=`XTa%B^wZ3SfjbeDwgCDX37TK6!X0V2`G?+hKt{ZalV6&T84Je4hDSb+nanDKMH%dMa8$6jfapt%W$36Hjj1&oINJqT!1p~jZ%K)I--!a_` zbS*)rqqYKzeGXfxD1@b0ge$Uy=(~B?4o_XjprRdrVBloHM?6e}NdUk=euPx7N~|)G z_9*26$G%)M=aI{9=E0v|(d7!YLGRA<3Mrp_m=p0X=g&;B2xm1vu2$GC_w^6h40pVZ zV!X&fb>^|B*?%$ypgO7?mO9mGT5G~TU))WXO>=~y?~>|l_b_)IZJ)JZn?1|eD;j=& z0e=`q#ZHRYA{w39l|p4|g_vwZM9c>|`*jd>?|s&&RKe)vbE!#@90q1|7WKVZjJX4x zV4{<;kI6pO#>Z++FVr3hq682{jr7`o96AZZ=t`O~mdVj6kI=ybxl08-@i|TA4}6Z* zGgeS~(+#nNV-r+#@?_!}!f`C3n@6!bRn~cjA-$ynbQ(o>5(3r1 zAbnnpAIY=g$gEcaS0-LV<6+jX>o`BN?U;7G1_AYFLguDueX};@{=K6~y=MqEUu-z~ zB?a$_81G^GMk5H-NZ!h*a!Hf-9r#w=}hWc}z z&2bvV>qnsjZlfN`#BN;La=rdskdqq^+h?GMNR~fKfL|UXeYa2FiR6^NpoBfreF1=; zfGb~c2#%k?;cd~zZ6LpB>Nmu>3~UaOfx-o&n{lnmbb3D(Jx^y8vz}rlkSPzZVq$4P zDfcNvkB;voYSIY$SOr+V3o}?o>EMEM2uDBEC?aVJkT=z?lZ#^nf8l}KiKZq`Ug{T7 zW;##RK7s5r+!44pVYMMalJ^K!#sAV$yiw>nGSrs5bRl zSMFcfP!5(%SO$UtnZ;uE$?WdPy!Qts&Z&8P#yMW?0Bfx6uSuo9T-U^VA-dmQ72NQ- zl7J$S-T*2K0ag=RVCZ$3sF-iB;3_~*2FhRKIvoZK0HAk>7&{U#B}=Cn01c-@lL3f! zUd$A=WTMG_g^J8%LZg}RDJuF#LKMyoGK!C0Vr|1tM8Ok#(W3+%gzYQ%jaQzZ;2d$N z8f;AnF(Y?BKJmvwI1|=MIKRVe@H~h<843?3vxieTW+qXNt0T>OFhdZ!lL-r9LaPDj zDXbkT`-z^~vn-2BiB)JT2h{R>mC5`Yv-uQ5fUjW;YKBN2rXwU8--=TNr$`Zrb=5o9 zt|?>X_iYZaX%yt=6VY+7dt%BS0oRO&>0}VBjgckXQ+z<_J?zEV z$rWlD=4(7V?~`FB;L#Ep<-u}K^`h5==CT=dqZgR$w#JpuAdp6>0Tzd z-1~rCV@_T#Rs&{unB3=$)>=XHwD`qtqyB}jx*j{5T7rQUV)d|Re=%*6#C%%;?mwop zalC6Kdd|IKYr}*QjL;{_YU7yO@ls#1s{4f-o_GbQv+1|bMr3-Sc4r{CT{{_~v&8f7M+D&9SL zj<*UHNz0+#`fRqbL_k`~2J3Ajc4?TMNmSD2Lp(d=H)Vx)N*v#fJDhwnMd!Fkk3)Du zdugG7AoL8K!<%I)>E+A8GC&jlV9sE1Qjp{AlP_od8bp)@lIcUYCUE~4r~rb) z;|DM?dz0UCs2XxOZ9{x4kw5wwru3I|Gwru8cI%NkOk40#+u;D%vDze8eZP5a6C0QRG1$fly|7D$bb~$yd5jyIW)K(BQ=5vzfaF@T?Wq-zyK0u zz4}Ky%+TCxWlAO?Uq{Abw~N^c7w1JK<+Yg7+Qod zi3jqXipucvgXB408@)s1a!_~=|1?m^P0xO<^`s)c2qHHrcz-aNy(;!Z!J;rYy~6Cw zzCUiI#x)D>#%_|LW_}i4832Dkk9hY)R!3t$#WMFsX*OJ&9r9~R(zjPC1dds1S*zUs6ltY0v4dXAi#X{`Ap~L30VHY&y~L4M)*zePaO3*F7qWgRdP+1ic&ieQ@XAVn_NeC z-eGeiGggo;xV)P`YQb#pG^BULCtp^hK?wbNX6F_mB~Tmto_n(Om-UZ9+@N%-A7~Rt zq#LI+*JENhS;Z5I0LrHt!f)9p&vj6*rZHXo2>%l!O7Tl|XHRyrsah%z9KnJ{!b9Ac z8b1Rh9QtX|3#7VIrdmEI>so8A`}K9*x#eF+{s9B1O!l|{L#vd9G?^NV%?tivD+`xH zJPs}q-Fd2ZUgGbP{rPkH5OsU5vy&9TD^;1MLRV*Np+$j{&Wq-@&~~+w3%<**CtO39 z8=Z6wwkb+c34H?v*9&VuD_w*);zT0{Yj3@?y!q|COThC!zA~<>dnS38+pK(Y`jv9k z=9KmErg;}5<=?ugR?bYjA2l}`+1B_NPTk*E)ww_J?S0^0I1ZF;CdOh+b1f0Flf=aY z!4NI4B*Bmq|Ly9H?qoJ!x~u<73n{<*y7}_GbEcb(p& z;$aU*o`?Txx!U;F<6tAF$LDllOJm5Kck{{-0Hdu3{t0Ynu^(RUNVh&s>cN}~+rIzT zwC%>g2Zwp_e({R7AP=dc`Jge)37+rWr=YsQ2D)Z0!LQC~y6%kH`nLZ>oe9+qd8Zp2 z6*71I`QMNa?h{d=AFa0jhAwJiqQgFmpZpiLj5-$`zVbcrU-;K|8PT`b2WtM^{`S@J z@Aq$=E7}p;1N<(LyAz%7B7eLUe|a$dF7e`}pPwuAZ~R^#&|m)ZedW%=-vcP_#Xo)m zXy2aNFq}D8S|e{IBvWclpz@q~RE<*E83Sj79})pPfrl>dT7^?t9a+^cu1&%Ypj z9xgcBRP&)VY%ybYr0My`&WP_EVwTPH#hxVY&ydmF+D`*isk4QaEp^^$>8iimM_cMw zCTK>f)>SP(R$o0iU+ppG(l}TCEHh?u8)&>S_a9gkwWDsmps&A&|M~2FDV%Xn@#6TS z`mKk;PR?XJ<>gPf(AD$DZ?s3ip9ob2u#&VE({w{N>1U=g8spdz;vEG=28ztkzn|su zvVc&;4`+KG>s$=F=X*vR**$iuW*h69nWnL}n#q2xfsEgKBsHcyB>z1vZ`I5RDQcw$GTxT3ZFOfFp9%fT$7Jq?bOmh|juouHmLuspkW04H*nao1^^shwPupRC(cm=28@l!R^7YS z_AwI#R$7s3k~CV!5g zZbo{g#ICV_=mnlNxXT)woYrqW464ySNp74#4E_yywW^V=0wY&E-TT;ZOUHlG2VfpVPQW{$L-}EVwdiEf3m~EAcHrrNQxr_V~L19Y%d;-{;kyVM0UBzjH zn^nJ5G78#~IIA)$@|i;fF)CijmxDF^o?)A!63GBnyCy**vG6Z~mw2p61erD7YB*0mNMx< z&7XzKRNg4FCK+9EalWX^L3@?UHw+Q;lfaxO{qkk>#LLo`u!`~qg1P*N<2*ay)0XU* z5Si33%OJF(`J#~?Gj4S3x`cQxnMXl_z+cmi!pVCfxjdixKk5;kA7rXVcg0I~d;^Er z6d`^?WBU6xGpVB^PQ?B=Q=SrRFp0roO69)x2OS2l1@Pp0-VH2ElE5WV6w3_Ip-iL8 z1fAmhIAUU0*s1}J8KZXu0+?NkBKwmuA$$yEblD|LLXeEoJzxUV;4*0E?0ci#pAc`6 zVX=L>j7A(VUPQSUq=Sbjex}^LngtfFHII=vYZIf22aD7+44kT3WVf=R>Pj85>;LFt zos0ZW4300`+jc}N`;`c9lFp|`+d_O(R>eKTe05gB*_|I9v9u)0dudRN^J#$6%F#6(CLlv}xb-0(5 zpi9y@=@kp7W;GKwY!X8ROMy9>mmoNB6ohtO=9#D<2_f@t<&7I}bnX-R@iPOOC7kJ{ zDsM2FQF9-rIT6q_9Q)Bb5 zIpctcG!R-!GgB|5pdy$(qN7;Qt`|8qsJT-3@tUd5kIW4BSwa(>VyOPoUdP9{M{IU4 zUh_r5IsBxC&~#G&)Dc3W$o2wf=upiNAetmEB{++#I33*u-grQ0b*(e2Ei1n3f7tDC zchb+y{72f4s<$EqRqVH?T5$~ulkCIh@<&gK;W1Pyw0^JM}h^!kh+KwP8lC1G~oSs z713UMkp3Q3q|mvCpFvN!lxrkD1pr4Yks)@nr9K+lai>eV-fczV_*RIfTnS&_UnhSS zAW=a)&CFzxoE~o4{PF39+}VpsNlysLb{-H&)K3CQ1jO=j*;f8CWb4>nW!DO!u-o1#Cj0^<*7Acu z!nvPx76y$39$7&HgJI(Eg(t>wc)x2-pM-xM0oS%8q~x1}v4Ylgitz3nO4R0B|0Zjd{nTY3lxQ~Z@R4p*wJ7f}W^no3 z{!)V6Fb#4%iDI-TpC~KxGDiBcFw#vRz9&s$wRFN2s_`AD)GU*xVqfe?!kX%Q%0xmQ z{#hqB4O?vsQPku?oO!vuqFmURuHEr_x2$h@rFYHhN@)mfP|ZxYKC6mfo)ya>m87{= zVSE^7u!IcA>0D1?{3ibz{K_}|JYYhOl`rJ+-ioRk$ta$1bB2=w5D{VbTHF4BS|UPE zWihbOd64i&5?j<}eVz4HUBP=s&1gm!`X)AW3!!Bcy`y~1-xaWTadO~P+h6S7f{UOH zEdwG#jCI#Z7HDA+xUd#3uMUuy3u8?zvrl2-P=-WbH@16Z?}Qq}a8bDX7Klx0TMV{J z7F?l2g_e!H{+(h5ZrUJ{OTllTXcKSa$`y1kjxEwGs+Va|V3TSThR9-aY}zV(|8bva zGtGrp*%!!|39KTEg@dR#piGtkcg#H|q}hiDBGHSHzsS%>nqCn^*n6LkgC;DT)j^~N0{r6$6yKo;Vh!_3`v)J8xoeofd+td=p0{V**BCg zg+tk?s$R*HiUVXhZs(i!kAW@(D2YL?egf(9)-h6rp~1?btCXfEaM~va91SjYAExm- zc311Jhcb4f40K`=1Sf{1&|rBq=rJl#8hecNHqJE8_qlf{hb{Y^Y-C3+mfMD%tsm)3 z7CC!fa%LNX1whn4flK?qEG!rehI+hpk^Bs;)Bw6{Bad*K3tj1!ycKc>sJ+dRwG2~c zX(-;OD&%AD!ZS?^xV5b60S*M>1pNvJCpZ9ibi{*%vjNL-*D}oYbDJYK8!2 z3{)^7$LcftS0=g=fB(m9e$6{B1*#b#=B_jz@`w<3oeHAFOUK_=W^38Ght&6m$<#lK!qG7sASAE0CfKr``uN%9YJ080y+$PDUJ2TYnB1Q54k#g z1~=1=&>-w~HVpomL+_aCg%{9F8oXcAj6_d9Dmql)!3fqRszK7@F5R1-`{CD_*@RQw~h#Oas z_emvk3dqW1h^K$@U0yzx+5zy|u${+4;WU8d(e?1`>cgN!Uz=uZF!9k~ zON!g1>;(P(_4Dit1oT}RFm_v3k%0Wlgs}+FWdPccSy00=L5JfC(-SbW+gZU$g_z?1 z0GW+EJ7ld{x+n158O9RSUd3k-IlL95jJR*t@V_w#45%mhhJ z?P6Xba0sbb(BiU4)dO*0N&PDJTL^r`)2?#=>2fym&1?yzKPUQBX>54uv5HdcP^qzu z4UgYVjHmDsfc*F8X*GxZT5Z{*D;WVx;5w4q`2N!;{%&t(!rk(p?^khRNYE?>M+Fsh zjP%gA0%l1C@ZmrpJL+|zM?K+Bg0(gIXpctW#l^j{8%z!sljG|ooHYsGAR~^_;FWD; zii%eaq>yS+nC)Nvph{Mcig=iRFCrUHV_B#l1@G;j&@&9=*ejifyG1}DFo{58x6p6M ze~eA8MhRVPdzrFeQQQT7+HIlV`@UGR>%mZpj-$-EnMobJ^?Lmg-n=;WQEd|S&?g+DiF!i6io7z5vpX?~v4+RT#) zh@ZS`vd8Y52&=GRQzigAyXc{&p&z&DYM+i!XHZB=#qE6OULs}y3m&pThueU{$!>}^ zh!Dw_nK^Zfm4r;~$`$zS90fL&In<+s@l|#8O>wR67PvX{oYuD+{TH5k9*q0au_bt`cnR)Afh2+04G%qbD<0O5P}x`akSc zNhqD)*I01L)OVq1vU1|noFRYj^&K4# z;dF1#={i%d^=9|A{O)2ki^sth95>kS1S1<-8%F*->jHz48JGzMb)IIcK}2uRz<*4j z{(lNgBWsmfTfgG&k;=g5S5RR}lFC?kFjJTa?`K00osylm~Q37rwWyfDAys>MwvF9Bg^4`kaXtZP`z;*pM3^1jD755mvt;L z)@Bi7NywIzv1CgcOQERQ%#3V9h?0;>`zT6CV+r}Gkfc(LC8<=SRFax^-uM0U{B_QC z&huR7obP?#pZn3T>kqA6^i_p!=O8g(1IZ z6qk;0B~*A7^GN17U@#5#pX(Gn|NcI|ngu3Qe-6NDQkc-RR2fEv-(}nc_-p7G+>xbK zx}B&lo-Pwwbu=MMef<} zc~D7VUxQ7xGFU1u5159dcfuCLs3D>Jv^VaUgqOS^=HJIZ>v%PqWrkX&D#Q|wc|Nrb z0RtUk6-qGEf103g$BqOF&}gyjlMG});24%ha0`?>YIo1>9QabWd`z&jRHgSO=au5M zwt```ImMq*li6pUAKAUXOISG}g!+iUKG=t;q0`zizs}Xu#fsi#59HUyvWV;w4~V==ptJOUL%u=gNfUBUh!$KW zSyK6uRtZ1S70-BWJHEt8;~#q_tf@K?F+q(os_p1_z4*OF+F}T-5QcB90jZ*A97_6h zzgda;pf?ECi@~18B806x{1eDpAQ4+ioiluM)O$LLZsPR6x(z-13GKi6-2)-lx)fr7 zef(oXXqYG#7k3R9Ac$Cg2l;FOd&0*JVPhK?U^8fiWt?oFv~P0{v>hN1NEEHbg8TTm zaWRy8eeaAYN>E{Vs}Bq_gyax*s}5N&H$}~zm=$l_%WZKwW&L z`0|bvGW2o6V+t_@et0`I5nyfDBddEcQvKq*)3z7P;tc*jL?{*_%8&tg%WK(RCy9}e zPU+b{U;YBVj46MmO20GL6N-~n?z?m9uAvw%pVjas01NqE8_`G8eYELoq(JUY_3^cj zi=2!hPZ@lz`6R{%&aZ#- z9w^V^FFiOsq1+1S5~Y8SH-93Ki=^}9j8M5}x1@hHKB#7K;?aE7wQH_7aJ6=ycHNO9 z2`q0_AeMl82EQTC({B3B%ci|W4GQGwWl&=l777AKk17( zAr;{Ojqm#Jt47b=Ey~_B$UBCTSOs2q5~Yifm+Tbw`Rh4aYg!&Y5+i}Uudbit=l~KkK4s>AXm|hM7oM>I|mb*Oi@aA{_Xa`f>UH@+Nmqb0xSswnq z2^tW+Ny}A|j3yPIeR$&AjK0yn?e%RKV@(%fLRl21THds-{KD5-6*)b>Jj&eho$ZPD z2MDyS0dLP?_T+kSHWUSR8OupcS2-81KQMnHJabONM#nj=Gz@>#?DnbCGRi_q=KB#K zLidJ5T&_GH(I1i;QBig7@b##h=BM>oypX#p-tZ* z`tNqWYg?~LxBYUnxb0n|clfLC?%(p(e|&yBbT(RY^xxmV{}-Nu8wm(t1y39isva-a zQw_nyu;uIkjcmBh0FJD>o=H&4=mfTEr8Ng#P%qsiJK9$Gqp)^Q4XPf=|UZ)^X5}-ga^`A6125S z3kyjV}}e@l*Lpq$=Pb_t!X?4(lUry^hNguc_FRuuL~7on|m*4 z?sf1Xu{3o)j%g=^ox%nja9{u+Iu82Yr);uLAJ@|Npcwh5R{9KZ!gJUEE5j-OT~yaQ z^jE~%%xl6EA3_g%}Ujn6Ix7|L0kucHjC?^6V(lPukDi{r*qZ)6x%58+P#V`?I0tudEv5CdX3u$CXB> zwLnm@Y1^nZTYs+Vp*{aiH=WIW^C1C|Wvw4qd(!cRepMn&A!);8?Yu-gA2vHqI2|{Y z13IPCS^IvU%*ga7&QXq#se0H_tNr!N2Uw@Tc}n&EU8kQl7x~Wh!gJNm@|wHOugG^V z-u33-(;uiOO2r~QuG_akiwjZYhc-ibE6rzPy!CK{kKOLynNM?)ibdY;2cLx}-a9yD z!Tn2oo_JB`CMIp@9(!Q!1M2NdLoJ=ow_MYnocS_ukKYA`@jbck&nE84{h$Yraf!LE zZlaMo9W$gm*kiJ%Kx9+XllT3J_m=!0hTNXNKc92&Q(tz(nCkp_I_ps%kq6kau`&;* z0-$&T2sV}vPu&AlMPTFd4Rzs)kDMy>o4@aF(EbVVR$9M9kUumgVd+6;d(rqlbT!V- zaf~RtBMGc^6_sz1)hM$UPu83o<0uyCyh}?Wom>@gKmM7OFOY_()Pi!IuhuD6b$FUM zju&oc&w2A(`pv?|kB1M$sHg^O_V_tob_^1ag*sD6Y7=~}XS{*xU5c0EM0puI-pJV5$2V-E;^aWQ z$>zI00n+f)S;$_qtO*W}NNb=g;8B}^`@|+$tnX=U-xT1Qp*>r2NZ)j(5 z^_~+DBRW!sgag&wp1k1ncgQc!7bKU8zPRP@lHYb3Q!UT`0#3+KreVQ~fM=H)H;Q1* zF3%KHtg{?Xe+mZxxj^W<;n+OQ}9#?A%s^E+?gb`V>J8e0Stb_}_H(}!a^=);hV_5HfDRj&nP z-Rmv*j0;w)rwe8^GCp{Y?22Utbf0QZyh3vN$j$nqpKmfT=D$8>Tnz4K&dZ+`s#kt1 ze)56_N^0SFRHoa|{}41@tCHtT=mk$$tcV}ut4^!LU%&kc$dRzYd5vZUkq_3pyOteq zLg1cLmXN)|5_dz-e);BY>gL*$o(b3~REYfjU`*@h_XfYW25KUv9j`S%)(Cve zk6ZV&@o^rY9RS-5;Mk{KJE$^@y=W#Tx(~cj*n<~Ab#PwUAY8Gecw zIVX_s>>hp9J+}{iW8H0rs;%7YG4=G`b64)P1?Hu)Q`E5g@btZN_MEr7wAFKf>VYJ6 zk&JO3!zjM*SOm!|)yg!F@mtVm8bVSYEfZ;Z^hD?sk9mCY<75W*6hxrk|A7VE>X8)O z?RCsLh2O<9qQMUV?hh$$iHPI3JKr}Jv>%?{j1gNY5g5}W+@nj}JuN`g61`k%tdzMC zjo~Q?z|k@A1iHN38Yo%B^%K_?@uh2K%L}}g4!t1!1hhV|EtE}yWjssPvt5jL14pc36i1UiV=NB1*(a0L5h&N>Yck@LV8*H@fc!TDD2c zrAzB;^u`6BnpdYvV@B#Om7US{&5L(w>GnR`R^FIJFCLS#qR}se4F03Gw_LqEyf)O6 zUU;s1=*Fr>y^-$?pUsWk-ghP|r)YG$;qG`k^ZGJIj_!Q9&3m+|?55EOZKXRJ!ms|I z(UnxP+ehq9yNI?H!t`dZYy&_QnY-Sx!no~Ix~cSGK~-WOrwu{E6n-8 zNp1zdzXHq7focVgFtqP8H0)G(%)q#|h&*WN3n?u26Ue1*XX;R-ywO zhM~zVV~OZqhr(io2;dex%<3JC^rN)wh5Jvz({~7)4B=D5akgsPX$%H(RAW+FFsRgB zltksmVXynr6w|02Ps&q|GXPiYN!h)eAR4nZulPQn8A4HYx~Hl?rXh!cqzWe8Hj^_k zQ$7zko_zPSKHiSyp;4`&_X>fofw0siSb|xBN-zg3cTd9WF3)23h!s)=0C{EK2#=v9|B*2XAN@1XRS0!U~PxO?J)l}T0 zrzr#<@fctW4rX-?me9dYl+lDsPekF^(b(!c3)Grei5+2hvmP0qOa)tQZ;g6F4nz-o z?N^A$;_0h4d}!_p>{vQP%dAJWg?&H}evTHAzfH;cwe@F>h`ls6R2vPddIE0m4|!GS zD~5>=W0xj&n9_-7e=`ZSg)A!9w*`_m#@#I%Q&|~fYGc&tfNLy(2K`2~AvlISa5RD| z$*0<_Ra{a{iu@KZ0% zoR@J$wnQ#kPoMKdAb+bvW`~F|ZUwZ$lu7a%05EPa^*N`8?!G1np4a^kxA_Q;8!|RI z4FTHnV3MtfaWn3LF?P}q(Pn_R8-;TVkC>&v@T=WF`P|FASz@v}N&qa_-2X%em5M+4 zDHD=`xpSH3lyRcSJ7UU+3d5?!9-xMvY6a-G6lAWw#RkBW>8v=MzeFMcSgj#&d%%b?eP}OB{EKPi%ag(jj=1B z1{At1nt@S0kF}t$J2zGlM#TOh--06^*LtTXftqTOJSB& zLPl&pz~>%7v*NIYEDAT13d2QA4Xpy#x}D|3K#9W2j1FhIiqaZ{UGO!D&-?^)<=<19 z9>}OEJSC7#ZD0k5&1YK%HulcA`j^Y__M944I{J{BuynUf%t)!3OI-5!I-#3CT=4w! z)9DfyroOb@5QL##o|g#-7t|{FP^1%S#*`BTk|y@sJ3{`pf&(E?vpOL^N!# z=yv#bc6YA7<#atOhZ9eQjo}6MQoqO=Ko18^2;_{ZeNMv5B_N{V4Lj~qIH7cC0tJ4A z0>9pJLWT~iKZ;d)7<(isemkLGQiNtj1NQF~7w%R!K)RyRE3haph zekG9iD2mk;&uM$Cn}#dOLc^{smn#5LkuIXN@D0-=Bbmx!~j%_?+iIVX7ZZum9r#_Xn*=LPO^hIMKLtg~fXrIWV2F0+M)MvDMb78U+$S3u_^pY3!@#>GU?K>E0BSDsu(P67WXTLR_U zqd|ITkS?BcAh5XcOCZxN1!{Y>j&$`T6R1K5Qfr3apt_Er*-$gbf%RWk-*ovdrARE7 zWNHPB-8^{MZa}PnYdWhWhh}vMIYE@9z0}Sw`L~j>eHmEzULi=2pKVKp<0P(x))9T8k4A-{)NpXF6qTiNUWOKhFylj|9SS zVus2b(6t4Y2jIHl`V`Qhoi%Bxc-Fb?>%sV%eLQQH)LZAzTQvj3Ogv!0ci82dE0Ng`YYs#N z9dDR@Kvq->RvB3x90n^%Jb4tH_qdV!rmU+x#dC=B{+wd7HNv+~;aa4@kJGGeXYFiV z21|d$oP&6xUBVvt-TBXls7q2RKf&EL0^!NU9-M@zZ;zHFgeeXhzBe+G_J|6rirC@2 zGS6vo)e%UA5kl|7bbgU7Xn6~QCH&CuI1EqKPpo<2`b&;PX^qP@0wtDVh_`Fv*c<%# zllL;N;I#ZRHl1-zcF}IS{_hE>K5dO{JWl3>Rc1S}D*7K~S79Wmk#Ztq^1~)a{V@zW6}UL|47&R+0pM`rN0eZ;<}IrOrUG}2g>Y2 z$ZL$Ni-x~H(kNtJ0^7cy-Z8REp^9$?$^7_zR2^-${-!p}_c+Y?Clw64Kwak}U00%F zH9eI=4Y#|Mcgrk60uU?(=S!mB3ar7?lzH8UD{UoijB`Pot+2-4RP=btS>KhtUe=PaEl#g$J;n_CYh{VGB$cb{6SRpvF8 zxxN(vsTW9j{iW`))GJpgTjW|UxVMXiXxbIWE->!GhU#8&LB5F{<@dzGkdj7tpn1Q-J zydz)`y>(HFctJ4QpqkAUj}KW?`ZXst`|u+BCqlmSU=jB}!1AZB($7vRFRVN|>~XdJ z;25>;`_i#HFZup1E5cUX2Z_Qq{_8`eR9sBX;11nMl|n<2nB3g7RqH_A><)>T=xklh zmJkPk*ZE3Jv$ZN!Jc48qNc`7x4y0O4h3I2|vQ#XBI(bf4UsDnJCtX3~iy=mc?N1i)fC5gBY1VK!R(sc~Al2wC}?{#&pp{WvUvfH~yjS-Hxd( zjzaL>VU~6p0Emz@G93ziHG^?=D|;Fh4iy^&=LosZrNBX64JhWMpjX+)4v5Fg1{(%3 zKFu{Eb@Qlf!#V(_snG_%XGq>Y4hE@T1G-ML^qz>{QcT1J#vWiK<3$rz+4fd^yq%G` znB}qBirI$Qa*dZ^&$=mK%Bhq4D9^#j9HDEzs9OFvz)@tSpCk2&)j5_!a=GRGxY}H3Pa6 zo6jNN;fJ!c#mKzMzQXC5e(ik;XZ|L8V;UeuW4y4EP7QmF%bElEfie%C<&47_Di0wY zi=~M%vXGFwYBZ7?^z53vYSyXL& zRm67`&9P94L0oXXQ0=_iZFp4oBkjJ#GBT?lDjl8=&N^c}?m;xVeOs`hr>SOFcTL*U*r1Is!W z48tz}LVb##s&&D61_#6SuL|7mO-UgiR?s}30r9C0clbn z#BqM%4|v=hM-qf|Zs+lfZljGdsz%HNTal_g&JcApDi*3|Rbj~ciE^o2Js#Yoluf<~ z*fBb;{B_`}{Gp&hV#A95zUD}~&hw%GQNOMrM+__WycVpo29_LM3bp=u{1j0wxX2hy zcAf*up)4B)9dGxRb%X?mR>!G3?qHxE(_z+V)5<7XvebYyE(s;+Ev)eMhBdF+D(^18`dPQjX>H8tJ9h; z@E+!}>-H_P9~qG;zgv5)S6510d!NEblaLrGr3JSH)~1coQN!u-S|NtIk(h)YoU9rG zTbU4vG?r+;-1Qe_rNd$KWIe>kU%52t%iIQdr#HsBWtQkX1)A)K6;gR>;5`jLFeKPDh_c_6&lukD-?Br->2$2Di13 zx6|S^`xED@h!vwEQk%W&sYe+bFvkjdL5djs(x~y0 zt#+tWD6*7jp5T4hO;2(AbQo$gE1#Q(adYf|v^xY*(bJ7K z@=$kAncrqsOd%?-4`yH4_~*5KztcFne-m&ye&=%ed1X4F3*tPov)1mLWl67bUFz{U zImB=5BReNQS)hwx)2OJBp*O)Pd41xn#=Y3V!QGpI`uI8Zhi3P0Pqf0^J~{u{qtM|t z5rq2o^`FK)Umfk;bkqjO!!|N%jc(ULcJ@4#_F1Mk8KBYuc5ESlVndYb9%uk|r&OLI zg>s)*X?vm`Ih*zCG6;GvSbefH8$>)GP$E>2LW$a0p?J|B4(Ugm?-=^`W7m^sY^P zTHQp=x>=3t#y2X=?HyEv4`kP0t)v0E;pE`Im9tU`^nO)M?H|wjWz=H+_Q#-}oY5$Y z&m*gLV2#Qr)IE1470+ZN5Gqkj+$t77Kz2$Zj(;fAyBem{5krZh%U6PQeZacrWQVaK zYyTmw3z~>XZ@~WlOni^4AVVgsc0Yag@Fkl)S)yX0sW6qS^Zd2mw6h*%r4NtqmEjYh zp1rcbeveW9tHNQAkT`b$3%dbCwuQs^0ZGf=b}ax~0SlEub|wHdQwO6O>l@2M%u1gv6qkcnK8!%LHNLCrnXCG&miMm)@op~f^m(zHcoev#>a%9M z%`0KS%LA;IqpUej{Q9upE1~(pu-@POJJwqb|FwcWW{kY7jqO_=lMz_pA!#d<3dkG_ z=8Qq{42L?FMQVks8B4YUM2lV%UL;3fJKx%)Tp4~Dt*yS z61tu8Of7&QOOOw99)R&;Ow33o0_MI6=DyAZljUtag@Ej9RriSruG`Z~zI%2m$jWTm`+oS{K z(C+OEJ1GbP!F`6M-9UevBLq#-QT$#@f0n~wp!+h}9m2w{36<~w**1bqCEuxZobs1E z&`3n$0b2<~)9QXrvlo!b*nP!J_l{Hf97v^hjXP&-;oby1 zBw0w3@Q0Dn$8wfQ)Rc*Hyvwx+&rZx%FRo=rpGEPe+8(B*8?(_pnl2R>NR!`;Yrm`d zJi65EGpF%0w0CdlTZmbb;`vAR-OQTm4>cnsgVbbCVTt>sw>9Ll#W2WGz}ncfbRBaZ zX2%nr0ox-|YDfC^1rEWNgdt&jlg!9*D%%kn-qJm9N2i+zSQZf%osC#1B*?j=T$Koe z!#1hhoxA2MySrK> zn~Z0TEBcJn09mP-qn>B3|~ojD4n8ue)FPpvrXh%kts0bb1Pq zIo?wJ(dTi&3>{$G+>gBqD2`#FD*K${YZe?6uSar6&7U6sdwDnPlOQFe_1pQz9?__o zg(uD;e^P!<_kv{s5ovkj{hk--9>5zxLU1SniRly7J^Qi1-jUCo>jp%{3n7?Z^^CtJy|ixB#fSiZgKHgQ@36 z(GwFUmMs{5ace^7n*Lq>blh;i?gH~lGBMy99Zc`t8A4Va_CDatJ-A`DP^jaf zv}tw^5&#&<-2W*eJEyC%uVe+%?987i1;u<4V|` zyg++vrvoh{8<6i;wVmc3G>NoZXK(Y~Q?Ao=+yL2p!@#HQ{H1c68}&ClibcBl^!1-D zRc$xa8|`im-gq>20Cl|*wt$VK0wE3d7Xn*vN5*X53o`YjgD{Oo;u0S>_FLYr?MbJ7 zc*48+`p`NrXtY?xpYF5q=q;NL!xbRdnNNOv($cXKns^&`z`gEsndimP`d0_qX%B2u zQ-p%%VX-|u3bjiiCF+dRaIh*~Xk`(IF0xciwD2owY9j6m(mHssTlO(*HLn!zl;m&< zK}>&^Bvr($Mg2}|#DKk#-T2;BJi)5Y)QW3!8`}bJOy~F$RPZdV`z)-#5HgyMy_k-| z)3M!r?qM@oO9>Iy(kgRJSiqNOg^W52i7vDo^k$H&8%RTke9GXuypZI5l~nl+u)mJ= z(cQ-#mR8--Z{|=R`j4dXnXw6O6f*?XaoK53-E_@l`?GuBmdiac0}*!Ym5oTisozrS zRibydv8Pe5SqI6WuDD!Z!?s8#%9G?h%v3Wbn)817>X@HD>WvfmLtEy-C84_ydyj}F4xXtZpw<*&89fFQ3!2+12UB;!47rVM@O|t+j%~; z$Nn@)pNg4KCyJ(MM)1*-_cs#;P)HE;GvDn1<*2Go=vF8-A>3A9`SL1fxpcqDG`2vn zB2UWb?z{Ho*B8-H?@inT<0-izvh#3^XB}f`|IW~3;O&2|nO3qqhMB8uc9MI4xSsCA zFCg+z0m?xGAH^(bdU5<5vWs@`_^r*B|E8SUHs#Sgo!5FnW=U7(*;NFYr9c%v5XT?(K#){~0NG)>Ol2Uvo1ikvbeNI`X_(+)fDD^( z_LD5Df#FuiG8M35i|J52$+?5+AYxe}i<=jK&Z2(PWB{v!__C%t4ZP{VCkc3AkXx}X zw6FYFTlX!!%U7lY=uwQ7?hCL8)bKpA=T<~k8C$-%&}l4{>fC2G4cxK|pe^dBFbbO+ zoVP4IH<7jfUUI!{yAT`bW}oAe4#7mW$yV!h9Q4GxPII3zdJT)2TEm?w*ilR8v5SLx zc!e7y{li<5dP{v-*Zh1nJej6-z|m?Uu5qwB}nym@*yG4aupG_cApiDM9Y?)%7j%KyRCS zw|@YfIC=Ull@4z1HI479h!gU+5Fn$AT2aD+<<+qAMvxo*#94`_tUpmvYE$&=suEqe zue)D{-COF>4~IO`z~pOOojh%7xx-ZLsCJpVkoZx~OSk64%^xXAbzoOI+4=+bD-CpD??pX6BPEZ@W&t9&ulmlz-sZCk5>gk}3LyrQNWGkZHNbI9S9!4(6jh?|mdV z#(Q5nolROXWuZr39F>rb%{(2D_x>|tlKB0`Jfdn6kRZ(Epz3;}96dI6bkJf7F73P(876;*MFHzOxn*L z;|Z~*pTpzA*qMJ$G21rhk6ex*d=i{;&8`X?2u&sLbUS(`V0-qtQ?Ib_In#l$fzsWb zn^o+Om0#E%Sp%J$t@xsc&PiI<_Vz$O0qWJ*el1`9myT6@T;nsht#=3`w72`VU zJ!l}UOir-ZIfWD-Z%oEWFR6=T2}lFFtOl((t?ZFZ?kh=K&K)e2dr;)xIJfHTt${FK z7glC0U)naTkiAZq@2Odtbzg(j(Fe15y{V0=1IOVmAJk}juf{j$Y-4#op1r84ThE>_ zP^a)3_}h_%R3)D`IRv13R3I+^scS~6@PC7zW5_r}U<(`~g5qTnpugS_MJ17^qUV=D z0&BZIWi}vEoI@>8T$p*t#9i+7*0iD*e|o6E7Mkd0D*527;cV)l?$L&#R7S*FFGn6> zDP(G7)6%IBEw}QE+78XE2CeLgph20j*tG{bc^TsbVF6-eP$#pQFV}NJg^4Xc5Vd>W zU2Z|CNiBC~#j6OfIsqs>uzX4Ed+?TI0VFyg4h*+8yWHxnhsVaZbo{-XG2q9s6rR({ zV@o}*vxKq6?yQQ|`Qj5#2;ib66{XSeLluo=ByI)+rDiC_oNT-{(`u@lTp44clg92H z#Ig@%APfq{em@LKhS8>HvwzBLYR>mM%spw8V#a_d`O*OVgm1N*YK$G00HGIi4a9X> zf|#L8N**S&cF}EMsfNyuUOvBjTEZn_slNVdiIGx zCEl0Ixo4uYzC2gx*-*N^U(4VU@-%S@FkeipkKxAY`VS@D9I-y4iJ}=Wp`|uLI=GrC zY@Lrqr?xcTJmAJ4BONv*6cgRt&hpq5;MOa)wVMMy$VmO`C%=PryjE&Y`^})^N{E%^ zrn;#WEj*V`g8y1CV#JgooeZ~~^F_ENK~eWXFw*5IL5ba~mW-T}ix>lGM+M0zPrmn1 zC)V4E(@S?Z0QV-Xf$B7sSi~H-_DOLAW*J+Yu>{tNK)i;uNhg9eWDUEgbtc2(XXJ^c z`g#cOC?bebnvnE1zzk(M*~=2 z@garsakk=AJoqT_I)t?3MembdAA5-hvGBPKYGs~mP%RBNzXgjXj~Ih27LF6G z-7XemmYdV#HQomrdppN2U(g&CR6VJWalco5-NtBZ5p4Lo)f=~Snkz!@G6Amc)y~E1 zigpjYevFqSx`DOVT1Jes0=s0^uo`bit~yk-C>+U(L)-4=fyICuee|{)hXi^H&B686 zhrsQQ?QqAR;xfz7_bxAbTcC$x@YR~nHq)GN&7T!^zc zW;;KYtdWS&LHJ^k!WE9jM8s@Le`o0IQ7RhRI^^8ki==NNA9mF?XT&Q?$}^CCru(pP zy%Xs{wX*u^(+yTmf_FiD-#B%T_Ny7MdrMX{$#O1+^X29skb_I%l^azLoXz`D$$2VT zeYh|Dq^wdmyZEyF%2J zmd3d^f#arhmBY9E>#rST7Tv6Q2UrMIMm^7q+Z-EIs*_oLZaHUbQnnInv-teEwg-dO z6@VHUqdqNdEAGLwF{L?1EQ?>MOBR83vn#Ua`jx&j(mszrPmwf}+n*8o8!YDN0U;($ z7NX}6^Ov@$7WxbGB^d-EP^Q~?`NFzr$i9LG`?jY z@d2|qRAMMk)&Yme6tgg-2tzLdpS?ST*6g-F zfAz}0oHR^@seOSgLWovaC+bb>68{f(y|gLbT? z3(PZsZaG>r->_TN z386xzP>@wofVmj-U$Kn;) z04j(`a?L=!qrH}?RI8a@R2ms7D3rE&Do2QW1Vl9m&9uQvX{PAq!ej5pD08J*jp3M2 zkL9((fXEt#-f&Db|1mtHaeeBB<^Xn?Ae1>u{2B5|dw3seI?dDsfU1|;o@ccTX0P-2 z$89i!EJfh7!YHf=8PSF)Tzy(4eECGW)GY zXO;eaR$@0Q>ktunU*3C&kUu{v9^ZZwOGS|ybqjk{>9}QHzkJ)po3MD`Ws%|`#?sTYo=epF$89s#IT=qt6$p{lP9%*`R)8g(^;eh>Sv8BvBK+a$CtrK4g$D&0{Yc>_XLA2mUjQ33>N^C6xMAQdd| zI8`<)Q}#F(sv-o{FTbxTfv8Y{1`UWTdlcUus3L;APPh2bU>;<7gvYoTgf-pQzoZP#^rZMqJVZl*Iy2x~*0pux^k0HcJP6Kfjq*HL9@b zZwOS-WxDPOBE}cEFwE6p_sU#&42l&h;7{DIiBWCFuFv(Md>Po?`d1}W-;)Ud)X`at zl78pH#ij}(vH~F6Oh81*z1F6yk=_kx1k2Wr$a~%2^|dPD7!W9i?zp z<3**4K4F_g-;GjEd0oCZN>tVcPzqE)9wLp}M<8*CQF(xE&Z@hbtt6Iye9vVQ4H7hV zA?Q76yR?E^G#O|+5_DwMJ!NH1(}5xvI!sUVCfkML+PCef+ObOkB+3H$iUQO{2FH9u z^g_YDRjTgoDyYyfKOrbZ_2tWu@H1XPuS4GYU)~OFR+YrGdtYi-d6fXV{0!(J3YX&V zUKhU*{Mdr2+8+fD^;_`?YX~|zzbh0Qr5LQ2+^+JrU+2CjRF|%zN*J#}8TN1j%;;fy zLZB`IOrb{a41z{cp*T87O|(ac4)VmB9t~amQWEYr9=?AF=n*RitS;{XxlW20U|jLg4Yzx$Q? zkxb+TeLZ@wD6nwP>DzBkeYUKcO8bm5Tnt;3073)L*dI_(qrFHt(2hv45gNR1i0SN= ze^Zrqa*CQem%jH$u<@NVn}CcTQyIJ4GxDo5k2Ga$ex9!9l;M46&Lliwv6@Cy&&-ZJ zxbi)1t9nKdI%`unZQJuh`|f1DE`Nb*0O{v0G)3>m;`e8QJpnNV&$EEJwOtI1ST?6y20^EV-i+2L0=Ej2nzt1 zF8Cd_#j^|(GeA}Pn{x=c!lP%X>`i4>k_GeNE%<`aoPwPl1-sV@V(^@I>VbL6R!KDh z-B(Qk@1Q(O?%uV6)(={pzqo~%3VRl!1I&XCD9S12o;%g$+3t+f2S_g!)U4lFqYypH z(54a*IT>fz4kzBLvSb8u3k@(&sE`A33wE zuo@i4=p0ONyM|1&tu} zVaA!a&Kj^@m}Yjvrp_j-^`<9xPjkuV#+m1ABX2g%YF%a&dUQ6!!>zH{^UCKE_I5z_ z(B~dEK_ao%|Mb(gxv;{qUW({n4 zUwwzU{-N{w=k@C=E;l4U4&V6QdE@W;4WO$4dPE@8B|!ZVD7v<)9%`=dN4se{K<7+qNEQ^XY2a_NOh#wLSDm`_8WR-GAC+TyO6^ zayz-}_WnP&(_QZzJaQ+u>rVckI}F#3f+HP;T^%KVI?7$|Rvo!p+jaNMpSz8&o#&5q zUh3++_NTMewX6L|*WIqJdw-TyKpI7Q2_2CR0#ZX$Kt!5~iV})|iWngDme7$Fic&0urZgd914RhENXLST z8mgeE0UH9Eop&GX|32EY55D;7G_9jlK!K5uudn{@t&?fm_? z^UroC$dm<(W1-qvm>rgYY1gi}F7fs*>76b)({81>?%nOYRg!KU)1JL?J^R{w%yxP# zO?z$Qdb#%Py@z&sT}=Cq#PuC-?>n{A=WW`5Ca(W%d;f)<{t(lF@VJ5K_JR1F0h;Mx zYTRIE`(Vz_V7}?l<+!2J_Mz)LLlvgOHF3jr?ZdZshVPg@y&w0qt^Mf}&sq!iEw@Jj zqrVIKq%=EBM^#K$IVAk-&gdjtwyKR>O%T{&kG`F?eik<_9S8m>|9ewz;?JD;{IRm= zaapk0#6>mnsIqbCKb?BZIfHYOuS=y;KzwVrEMMB1!e7b3X;SSK*Sl!aC2-h*qo)0~ z)5%-BofU{a^^C6=)ExFg_Q{Jw##6D?f^azj!7j{So$^@#lM+8ONgRiij!DyA3R#NG zRy^aL8H2mtoH+(C;t1$jA|F*F?E(Q+KtxEKdedg66%;>PYCM(cjCkj(359|=EZL&w z*Tb|I$BirndoW2>wVJ^&Cgb&d7pfZaiq$21sp*=x81|#fgwd;1*>17yF6^_+S-FH- z{>e%waj<{Bl(x*mYL%qmjS|@;k;9@6)l~BtOBpFSvwOXP`yGxSHxiV3s<(J5)i!u$ zZSIo7-{nIw^CrthS`0qFE@5hiu%DdtMAO2qt%b)AdiQsjt5*qnJ1&Xd%aEnznRewu zk1uM{%&*BWhje@rIQ}93feXk6VbHNq@p)}rMq?tue)8`tdV;*wU+XI!k~4BL41zA# z^&KIOcLOZV4rW9%b3pX-uk<<_3kS~7OF{twVV#lzVP{t^7`$GuNs{j zqOyL#`%k~6)(-EBEeu}pHVe4GLZlFWgcA-7Ey+4r{D>ws`4Eu>EcmtKi&x-Z&IGR> zt6u&bsLL=HuIPqG5q_kSejseJf(Sq22|l4m5$;}gSKe>#rRAOOLS>i#K5lWuQT9j9 zd&EYP7sKL5Axn6rN4S8noytN`A~v%U|K!V-XP3+Su(rD_e&=h#``>RKD?bC0Ps7U@ zAKfv@(5~oCMN1mTA$2NyGlln@XwT58>d%ofiP=HwRuASY9xOA>)U6p#<$ZHp<)$6> z5X30#H*G}8qf8>+5}yTaeq)P!&(5?#21X|Nk}ZXrCN>(bJ`Q~@(`N@Ad#@=i8l(#q z;H~6^b(h2}wOS23xsA`*9|X_8hZ@g(U)q@b!5+WYTwfY?K(kCmRpH+lJZn`UJ$0b=+y}p&Zl7)PIoZq``9jip zvwFOVsKMpGmUi`_UrKIUUXQ8y`)6l+n~Nh+!B{&I4K9OpJ*d^EKOL)n<|bF@u=&!5 z)BeWnjg!V7C?A|mr>N_+WThF)T$8n+D6IK?it8~=gT)_5JbW)JT|aR4v-?wpr5S~O z%dqlnePE8Fag`lAYypQeywIlGMM879iFdq%)mdAswsAH2JC zzUk4I;q%QMkD!H)B92AVPG*)+FtVjJ#%XWovu^ah{YMs3icxjE4RPgyLaw7)3wglt z)Wh}_yoXQz{UkoQy1p?j`#4{mx-k_1o!Xj}Pq}a2-6gee#IwL|_sALrD>W&nPZN1Q zxG*M@=W^hH;ZO1c0*at54QO?)Z9LWMu)n*mDbF8fUo3q{d(g1Se8E96uT`F>o+Txx z_j$e6&d`?U3XVEWrkHLh{Z@w36!z1q92GNLr|z1(&kzu`QX^{bHkjPpc2J*uJ(Mki z^IGfC{K-?X>Xg~I4rwh`D;(CfvUx&>uBWr1TH3uEeU$cW(w|l z>W0Ew(h&xc<~~>XL`dt|X3I!lJu9WPBxM8pI7Sj5wiP_)v+(gTm)@p#^YIs_{#u?Q zbk==);Yrlfz2fG=hw(9}W1mwFdGlG4QAW3JL|6*;^Z2alSasn?e0xkoolI}cI9q-H zm;j~euCaNlV@3mqhHZ=b`4r4&E8C-Fa!N4y=NqA%H2s>kuE%_Y8AfL1c-)`7I{Q?q zMV2+1$VfspT1r%YOxePRg4BzUQUOHL*L!SC=@C%4O;7TJ?9glkUvP?|dIjomMz?Ui zvz&+r-BDkgXNbDufjbUpE_&y=#}Pvicc@~6I(jm!&j)QY5mMNwJ7PRR)FycnAvOOv zY_c|d&2B&XClMPr;SIb0m>-P;(|E>L(#7_6s33w;1h=)qo-YK@vAN49sm=;ymStMs zJoe<%y0aqILu_9!z(P^yc6Hm?pnul3{e1G3jtgNat%c+|nd0Ph{r1PSQtj$XKMER9 zuR_$kvGMpG_~A7<(eL?Ke}Ho^m)@s!j|sL>p27~1_U~S6?e_c_THL-?qm_6(Uj)uy zEMVzr=vPO_%@D=6*!xEXD?uuX5ZQOs9#Nb;G>o|*S!b02adg2xrVC!uwJNroxr~-{ zWQBC%t)86lt5J+e(usDpLudD68wNwcUUaxQ3xv?v42#5dRsCQd5JcE1nB8(2BNA*Qm0(yTu`6MrvV(pHj@O=-V9XPv-Kcy*aj*CxlfkdIt6sQ_wSt!DsZdNtpaP z4mET7+DFPQ)6aFZlp)4>`SWR_wi!HaYxW!iL|xDCvp~o_Q`=b*H%Hbfw9AdT>MCAp z;2+AVuO0KcmMnFIOnnk6FrFAkMYK$$SBYqYkiFsHuveLT#OmlMcd*nZVZZMD9QGKI zQH#*2m9d|CLYc7^F`zfV^qIUZ*NDn2#YT7vJ$o(#)D)V^A_;ltg}TdE7lIKYDaIfj zQ)}6Ak3tuvC}CqGkro$)M)3=ure{A!JZ%4bA(*yhjvBjKx(rL`L+97mITLAlM{j^$N4^4`@8}E@Qv0=NwXBKO%##BFJ{>F}+Gt=gGUki>Wn7au3oC zWZu_;&-E~02j~k2J!bKMu{4bTPNh%+r_4E?e?jbNRKNZUC35CIcVC^7R9BA+`cj2- zochDI@$2>Yy7Q-0d>%HqJE|bnoiVYBJ&0gHFnaW|Y|IViNjPM~MZ1sh7OlI*SpL+{1n5htI?35s04^0@tsOSDgq^j~tufomURJ}Jmt zx};~sa@nQ$B5JCr=^nR6>l8z>v(>XFJOfruo?V1T53BQLX zq?E@>C4l;HK325|WLF~`s`(v+^+d}H^lC=j>16e{&VeMUO6dwVQ3pOsyN`;$dM|Oh z3thL;^YoHW+Ii8+58BpxsFB|OJ!u!#d~jC$rPtgmgmgjpyCRbXf6|2nz0qg=Lf%xW z4g846UZwKKv7uT~*7_QrzOQ~xo5OXL>_2DxsoWAja5_BP>&bJEg;IrCSQmmtdTTQ= zR~@L-jE|T*YC+|h_T8GW&}_(#QnZ&DVHlRx#LpB^d6OSIuy8#&&2kZZ`b%veRI`2% zAyhou6Vfw$oU1wg%sHn=ChcLnZTqkw)fVYYPZC+-AkR>0rPd5uUybMfyw@W(mwr`_ zm2+-(E@Nwsxfvk;^HWMEscIgPe>J=a{b?=c{sNcD(hD?4ZeQLZST&`d{H5*j#x7w4 zLnEqLWoCI&0!0g!wZ{IO6ug~CgoprHn5IjvDnZ7xR}NYE*U-`i58v3Z*>mB!K*W!W zhEdf=bm?@WlX<#fY;M z=SpJa&3y!_?jqCUNM8V+4ID_1Gt5ZdSDU^DI{2Gyhc9BBj?QB`NU#yw9{jpIpE&~TG8=WWnrfoT&AMxsb$=!q z2Lf9$be8})mVLZ4Fgacnb^JT}1e>}k3b_wRj4(hM?qCW_YKe$WCd1E@Q8UgM4_MTR zzyt%Us8G3xS-Nf32ZaC@<|hY}$<7LafyiW;bvBg0B4e%^?ZmVEVDso}rf1e8_OKCw z-RPZPS)seKoWJ8dmau!Lk8g^S8f#q9>n3Xqv=BRswHbd6NsV&O-)qE!H@X;Wo4UGS zrx>tZZNQ?x+8uoM2?Sz?gqtEk_73I>(b3CP+-2>!4Ker#fK|PTDs<1X++Aedmi!QD zYfM1PU5^QdGdBA<@dMmh(GK$@vsnOSE{t`KIJ7Q((6lKfC;wbvTY zL4LiAJydkmYs!3+jeYCPpG-nzax^OCQr`z4J|KD6ob1pLxXKYKRt~zv!Y(oSb4fvb z%W=YUzyLw-Ih`*7K#=K(o6eYZ0ELz@^Ol9aPDMnMQIqpW$t;)hpO~LD=v)$lOhjZ7&>!-#-p=k=4swgFcB>%O#{T;A zv)3U9jJjO~P7`!wmoRUE8*GBm);w_9c^{<*GsC>d2KJf2!RF4Wai-XoGjD{^wHyq5$keH1_oG%d5-_r-V|xD#0yy$@hfHE`QyI{TbbJ*wx>d zb)wo0^PehYn<)4OQXG(G$g>l!J)u_2^6Ti(S>FO_sYEFHu(YbP+ zW+yOYg%}2scc?c5B`|L(cu@vSTd#a$0@F*jxp)h-2MmQAOg$6k-}p_P zlkxbHLEVf5JgS(~Tt>Z0rt4y1Zprd7Do7x^`DeX8AKVQc0x|#)dDOeb6DSI!nUr!XnbRE2fQjN$cq~d+0OWz^ zwp^woJ?TWr4@pO;2>Do)!W$o%ZG2+|O#VE=q@n2||HF_yMl2uPFdgATh6hq%hu+{r zmH-U0HE?qmeET8Cp;qt?a2@YdK?b28fbE&^0Q$o}3U}n!Y1RkxF)Q`3?T4R`z4ygs4hn0vE__K~wA}Gh}(!+ID%JaB2Vc zg{+R%h7MJI(5BYcFC`?#PV5U z?cG}F9-VeU5qjd@_N4j-Ss}9P*T;d21WYaovR#v8(4M60D1awoUsk}Zf_e|F^&W1t zl3?=%+4XfYP#$E^2mU?@ORr(=8z<5I-s=6a3dS~T)EdKnnMo=?wdd?w|3&mbi26X7 z<3M=OKxFnnbmKtm$UywsKq7jOraqYLIG7qVn4UeD**KUrGMKYAn1>$9S05^L9J(Ad zRGd9jqzut@hU}dHYtV-()Q8LTVjl_e4pgkB*AJ3cQ0@vA|$}J+p<#B)w3x1pf0ntZc^CP;z=(V`fXKQ#3#`v~6 zgwZ|<`EycBM{kJ3-%Uj45uo@@(Dl8?LYL|R*X|+ht^`%(wH-s4^1NyOGGFJZ5 zv#E*xKLXFJMM;&LDn zXCO!$ZcT@UT!#hWp%TCgJ^|n)e*8G_GQ^CROXDLW)5+3CtTRdlhNcnhf(_OTdI9^6 z`D{ln+T>wsf^|$D&_S)ibyA;$H-=vAym}h<(*OIbXpz^pKc2t3_PXZn_|t2zz2foZ z=r=Onk}o_V01JMO0YAhTsnR%JZuaKZ=QsQUuUT*L4={iw5dzg7zZx`q8#7zC^IQ-B z!5MHp>f4iV0X-@p%6`*30@tU%oiUp_L>%uqG_!g=PBX=qqYR&7q1Q*zGKEI1-A9(6 z8SVi<_VjDYVC>vI{_E0QLWT4jR?fSI3$Mp9!HrK|{}{oy{CN%5c(W2OaQ`j%de8^} z0E266l;&%g`J8~uY)kyCXu=yy*4zDfVC>NR1ZK|EPg0Oa9jC*fJV#FQg2E_(r;hVk zj@VEaEXRPQ_;(*KEUNhxMf*dX=upQSP%j4g=cz04dZHVdxPz`J`;k{kW`gtHl2>`6 zTW2BlF+rajAd<|oIFZfgA|y^;*5y18{`(yCWCZ0RRPYk)Gd3UGu`D^cEKUIJp}vqK zf`z{0ugWVf-DGvh#zQ#+I#^ECoDdBXJ~&Tfc^u7*#mWvu@){({G>V} zn!J{1qOOlV_8|Pd#OFPY-u7E~Ov`1Yy%gJ1Q*iHkmJD+UQU|)(gcs*zT^-52app_J zSnkpn&?j@yRns>ymdP^suQ!%JH%to~KYwU6p|eU}u)iG7==g$Xk4yi3vzGt?X&t+2 zx=IIeHj8Ixb4EZHLBB)BK^9+^PYW4I14E_@zQCtgK-x|sHSveCj(uug7Rb}rb`-&Fv0t(&_j5BZvb?jj-Ddz8oOnD`Kckv1+&TI z@}J<~!g@dFn6NeQ8xTCyk~s%x1BOljj0~tt8za_N045Bo4fF>A2H0OP{07LK4JJd4 zP6J>72+Lc5Ggc7-##iG22ONxgC~gg??+4Mx1hw5gUu3=IIL+d9%@76r=w3o3G(?!s+^k6)Ql_1 z3bjkkZxGK~9-d5l^^UYTiW(m!6IuLcc%{SUqI>B=0!O~eme`>w#5&fNF znjZv?@0CZtCf5S;dJ>#)o!1}F&)hjPe)H6upBHA^!oM!Ree>%gyDJr^a(Xt(ia+Yn zoX`~;>ma=S%$-k1=YOPF&aADPsC<597`Hj{`I0yHEdz7r%i>&5zj|4Fa5r=H&6$Pd zZb6-uUK5p|zL5EiY5BC)zacDv(3NSHDIjo;Rtw;xl0e{oF@+3`BG(H5aE>mgIQ}dU zpn;wZT4fSi2-$FmBAo;+bymm*p#4T68rgV&NUbn6C7~yhoPDS|{zP^!NZp5#S?qaN zgQ?MC7m^`|bOWo4|CP*82kH7y2h|@q%d2#wSDfLWbO+ghyjUPHN3Mt{Z~(3zyIu~| zBa?E31sI@va<0OZECtV?L0ce+s6K%{QvZ!wfwgkSz^%3?)LJqKYYj|^@88{=t#^gH zyB^&8!`@~^PTSt;}%CQ?CAp2ctDe`QzGh@)iVNXDO6q=FsLBTrD2-H-$H^7an$`G z0F{UWgXF;YJ=5Z13>ua4TpFNJAF^7~B(To;G~N{Y*&#igHtUd5*~lR<=-HD<>Y?a% z%E5Fnr)4bZm6CcEm{9A@K<|HTwHLx?uqh9xkVaC0AWrM<6aj6$w@J8?U(P7FvwdLR ztG=u{J4_kH26N3()vbGTUj1a#X~ ry;IBoj} zD;WSg$H2kQpzC*)V00E3LjZ_<@B}1Jw(B%~4|HV@la+*mZdQPDfWVA7h`R3X@5<0C zW`F`73#QgykgTZS*PH;pgWVrb_1tk73nWQ`O8^Q8>3kNzNu09;Bl++GG=z9l#V?IY z;dv*#CX)@udE&YUAy5`Xq7^_IOlVYJpz+{FLOlcm=-Vg@kY&EMxS2++e*!<>fTHrZ z*zCinIj1NndZP}N+`il9aG~X#q?H4Q=EpO=PbLG|a9xlJ52O8dvpXK?0|`~+=R@mG za5ZKt^3MLANPST-i^BM{kp*HE1vfx+ZR=m0V%>MgVsWE$=?j{4i3~JIfx88+hYx5 zkP7`~1i>U4h|C+))-tmA07djs4nfi{NB8=sW8i+bvgvB&m#!rS9=C5xYMA~rphU;J z`(k?K2N5Yu{;o7L0crth;&xO7R#+rwi& ziDn~iACb=IQe#tPo~|$F_u$^C7fgL&Q2{DEiZUr?bgxO6H8@l_Z%8$9^f%V z(6uSm!Fh$hz{@*F!zW51PN%rv7q} zl-j{bwin}<32heEfbCE$&xmGa>7LTUSvb;LqI}>dZn|-it5Uhqb}ZF z2J8<7pEFvq9O#Xxf)BDTNcs!#*3}`@@6#KOF?K6MRA~FYQGwGEZi|972lYvsSsJPi z*FQ3}ARrK7Z;Ak%Km{OTED)9nN$UdT1kvNq*Ckmc? zLmf12DzMLBsB3}(KpY>qy8b;y9YI3~VG?dvP}y)_mHtu%c!jO76(_tCGrsjEAFF#= zB~_*>pm28HJX}3^R@Y5T$-*KiT05;~ zQWXhh2%I)WCGGwi+30>ZBHQB){pi6HbNm5OJ$3s)rsU*(R!s7#`_Zc?QxDlVr4K{{ zRx<0->uD~FqelS(k|-Xs+y_k1uuuzlDEC*X0<{w6si`I`O7)gewS?ohdAvyuQFSOb3N1s9rdP`5{rOG zQ%a{gdy{tI&JdA6AXs2gv9w0~Ga>ZK8DRAgy}~YA!F=Y(#g{HOqB-_;&tO3RCAjOj#aIik@^ZDrr&`-h-!1haud9>&%gqg}PKC(qtH zg$}kH_IsDsM0Yml1_#U7%w~y2`n^aTe08DhCpqur$VDws&$FWE#^6zHi;`l?d5wdo z-k6A!3bO+5T6EX*u7}<}N&|(DtR(Y?wzcj}m5eqJ`P+$T_1rP*s}pV+laKH5Z{8$Z zCFd@v%dt`^5-Iu9v``Wv6rXf83^-zxKJch5dE&`m_7kBEGcu~<Rok=HvCKW0QI%@z6N@+9=Yu5+Qx;1nl)q(ud3XBIERhVgyJ4%4! zbGqW_quoEm6@FP;-OtiAx1w^+W^7BUjh^d~*u0-90UFru{B}-5Q7XqQv{3pu*wzy) z!~kH5(*4}?#QWB&Ed}LnTX=b6ix(}u6&Y&MBSdGktqZyjv(t`sL_XetKQhj!z9dJU zNrsiEN%^En3npLPrt+|@QFbYbB~%R1eeuM#{yUb*EKBdrUcq_GEskYF21uI+Zm{Eh zI>@2v0tfYJD0-8?dR48O?rCdaob zMOB1il6t)0owLTAXAbSfNbz+|C|C-0<9)+K?J#J=of+?neU#MPykF%NWf+O(*A1 zAKMhB~ijjwZslf;-6C_IGs zs&mW^{L3-PYyumq3VSYzl%>PF>=9=MQ@u9fp>}D%S+|ZXs0i`yb%etz6Er6~ybpPN z-7)DKMJ~7`w|cGO9idoGTNK`!X>3eg?8*Rd~7z@##i9Wh5hW z8j=A*sXkp>bF=v4HvGz|VKA?if`|>o`P)4U@PNs#T-n9-01g1@QA`Axl;&5PW^aZ# z!vqCyrQQ95 zB`g7`a}wAi+uBlrpi{87fv&A3Cn}Lxt9HI%&Ka*k&4Bx-E$bNY_Ho)TRYaTt?YJ z-<*6tDDNx?ris!C=A=K#MASb=1l1;8cQo-0w2atB+-N@&v=-wkoPbc;C z-rJo-aaHhE5~#hebXS2kguGmWhezFzKY6p1bFjT6Tbz^()-Lkx$#k$s)i@h8@!dn$ z&Iptkgq_WLb!n!#ph!dFRPPbf+q+wfFsJ9FPrq-yiK5%hsDdyv$p=5fKYZrV0OekX zfe(}5L9BoHu6iE8DWwd-R!L;-)fe0l=tbny$8n~$sgPUJ6+6ywa@6U~)b|dl;FcdC z@7lBgGNgVn=NdoyKD|J}h}Wn)_p8Ym%p_H-WdOuvbuow@9wf43N!7h3R^yY^NuKy$v{| z%jbAh#cFQ2cS?Bv@FAm?O`34XoE!=Aw~)%TDg$Q-?#@(r??RB@RFjm+&Oh4@PzzngJ5677ddz3;JY(Gl1!QydpcjhlR>xr50+l;k)|zV=uAEE2AnDf^upIq2w6)3aUGd0z23O6|1^+k%hr zYDic7)kFv7uJOkaDdl3F(EKrBwd4Jr1xm+mce|bPKa<}kzjKl{DF(`|Q_ywY-8fN? zH8Xu)TGbGO^vRv}=&vcIQyD&ImTi{zpFmo@UgF>EMXZjTGFUp9;2WwL5Z151L`MV> z(oSu{e4?OotVP$~{K(Bzg%~ITc}JI!=Cu;wPfAzbavM3#bxY3vq^(&C$jJ;hR{*uCPv zfeew=G^SGHN?_U1)vnQ&r0(zU$bpL8a6HyU!H6ud6)YUplx2b8%DTYoSK>ydG^n0kib;ouj8qRt$Zo z|DycX#o57NaOW4FHvKOzu58P=+X`~tI&m5ZoUb>?e9fFUCDcH2dejU#qV}2P1PFqA z=joHIZC*G>&Q^9#*5SdiACN^8L&Wmd7nmUF+I5NM1*FEg0mgFA$+foxe#18c6QRN4 zTA>OS8wy(FugYsoyjJ2Tc^%yV^R z!}Je_?e+RLYVvKK9A=Ogwy!+QxH-(EGt6{6%Me)?;;7dM=Qi}03>@X?C!wTSRL9C5}g!vA7K zKw?B-Uc}k*h;z*m=Q|^U#v?Agj|l!6agiHA#zlt6MuuudhFL^X4o8N2MMhkVj7*G- z%8QIHkBn)KjO~n!8;^{CADQqqGLaie#YNF%qms0uk}aZA4o9VWMWtPgN>7Z+$cxG> zkGj+xmDRav6iJ0mMCHDZ%KN&Ri?hm>{hinhEwqR(Ivic}6>0*UC`gQs{e>tkk1pdj z|1KLygE2fx-v5qy7+wDBcL4kJ4cVAzZZyxqkMZ?%rB_Ut#a7kfn45Vq;gK;_=`nSk zTcNkM${)rwevKi&jA4kzG|O%WBVw<9h-o>zeco`p>_F`O#MrX|v1O65t`ZB|G0jQo3e;^H;jMg^~dE{{ENi+!;$eb<$oND<6n2iJ3Ne^egEgc z%lLQPc-vp`Y}vn7q6zaB2}Hw$MX$eR#}bwk6HFo#R?7bx6(@Y`OwfOru=f71*2{!1 zjoiPxe{#IqZY3Ay#8pj&uD%4o|g?u z4iwCu2=!Mj{^OO08X`UqQUO5jHxvd1xPZC|&;%v|S^$9Lt?<@~*)bVi$!dRhdk!+^ zx_9BF)aiC1m3^0lrB!VP1uA;-Fe+=4?se5eg{lWn$GFeG&nVXR9lrKkuzD26-dUX; zx*IT#(mcyobM~7;25cry?Z*%Y5@ zE=e~$Uvs<1|GeqU>lYdaTKSg7mh4}AIn^HX%jdSqMCx2m1|}Bjd4x080TntJaYrne z)J4Y}V=;)9N#iKvV>8U8Q1^as>FuX$K4EmyDIP6)p~@vY;lFmSgbn#bY1;}`{^Bfj z7VE>JqMy|xxUtUu1+l+@1fPs33ACR~%=!GwfD&i-#*O3*qL`PQfFmJ^Pm^8jb##y8 zIw}R5CN`JMiPs$fx1MP|c`o;iZMS59j_Q0i=S)Ew7*}-D`{D^{m4!U{j^ZK7{iejE zOB3raDvv5o*;UamYFDuGqon)f{fT=~i+NTOt||G7?sbY+xJGR?Db@)UM3h}jD#OFC z^sI7`>w}4#?iWwnUXd%biJC2^b__U3C@)3@xI~}0{2b}_9ko)WBfnuEFGgxzD3Gsa z*;mVLsmjS;t0pGVihcaMkbJ_E0fjdVR1bg&^qxmP2@TgDb@PSAbzi?$dQJBLOjxSa zxo+zIWlOM|SdyLc3He)g0w_~D%?FWtypgzvO0*J4b*?De`%^-fRQvk2vaLw*cWnUIv^4#p;ovML6g7qaS`<8#2gIm4lP)p6hBr#rdC|$1^ zy=oNpk=GnGTI@x^1e=k7CO1DTdP-tDM(GAKh;qxpVqd+2v0!s!nw!NE=UAyE2t>LNC-E zZFFk5c)$OL@yiP*TYMAK`c4*qJ@q6y@(XOXnB&z&yNKQIS+efkm+7mSHe0gcJEU)D zJUh~M_e0{pb^Xst{a=_U|H+4c>-vB4;qae0{#)1op78&V7V)1%`M2Qz2Ne8&!u4-m a|6AAp*7bkk)#tzCul_CH|K=BOlm7+OsW%}2 From d96840b2f51acb5696c47f9cee6523a64b9ee620 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 22 Sep 2024 07:16:12 -0500 Subject: [PATCH 17/48] WIP --- packages/analytics/modules/analytics/plugin.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 packages/analytics/modules/analytics/plugin.ts diff --git a/packages/analytics/modules/analytics/plugin.ts b/packages/analytics/modules/analytics/plugin.ts new file mode 100644 index 000000000..e69de29bb From 15adc77d23d177ce2437bfdeb6162a414046887c Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 22 Oct 2024 10:47:41 -0500 Subject: [PATCH 18/48] Refactor to generated module instead of plugin --- .../analytics/{client.ts => analytics.ts} | 183 ++++++++++-------- packages/analytics/modules/analytics/index.ts | 42 ++-- .../analytics/modules/analytics/plugin.ts | 0 packages/analytics/modules/analytics/types.ts | 20 +- packages/analytics/tsconfig.json | 4 +- 5 files changed, 141 insertions(+), 108 deletions(-) rename packages/analytics/modules/analytics/{client.ts => analytics.ts} (79%) delete mode 100644 packages/analytics/modules/analytics/plugin.ts diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/analytics.ts similarity index 79% rename from packages/analytics/modules/analytics/client.ts rename to packages/analytics/modules/analytics/analytics.ts index 538d05bdd..f51b65510 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/analytics.ts @@ -1,94 +1,33 @@ -import { defineWxtPlugin } from 'wxt/sandbox'; -import { useAppConfig } from 'wxt/client'; -import { storage } from 'wxt/storage'; -import { +import { UAParser } from 'ua-parser-js'; +import type { Analytics, AnalyticsConfig, AnalyticsPageViewEvent, + AnalyticsStorageItem, AnalyticsTrackEvent, BaseAnalyticsEvent, } from './types'; -import uaParser from 'ua-parser-js'; -export let analytics: Analytics; -const ANALYTICS_PORT = 'wxt-analytics'; -const interactiveTags = new Set(['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA']); -const interactiveRoles = new Set([ - 'button', - 'link', - 'checkbox', - 'menuitem', - 'tab', - 'radio', -]); - -export default defineWxtPlugin(() => { - const isBackground = globalThis.window == null; // TODO: Support MV2 - analytics = isBackground - ? createBackgroundAnalytics() - : createAnalyticsForwarder(); -}); +const ANALYTICS_PORT = '@wxt-dev/analytics'; -function createAnalyticsForwarder(): Analytics { - const port = chrome.runtime.connect({ name: ANALYTICS_PORT }); - const sessionId = Date.now(); - const getMetadata = (): ForwardMetadata => ({ - sessionId, - timestamp: Date.now(), - language: navigator.language, - referrer: globalThis.document?.referrer || undefined, - screen: globalThis.window - ? `${globalThis.window.screen.width}x${globalThis.window.screen.height}` - : undefined, - url: location.href, - }); +export function createAnalytics(config: AnalyticsConfig): Analytics { + if (globalThis.chrome?.runtime?.id) + throw Error( + 'Cannot use WXT analytics in contexts without access to the browser.runtime APIs', + ); - const methodForwarder = - (fn: string) => - (...args: any[]) => - port.postMessage({ fn, args: [...args, getMetadata()] }); + // TODO: This only works for standard WXT extensions, add a more generic + // background script detector that works with non-WXT projects. + if (location.pathname === '/background.js') + return createBackgroundAnalytics(config); - const analytics: Analytics = { - identify: methodForwarder('identify'), - page: methodForwarder('page'), - track: methodForwarder('track'), - setEnabled: methodForwarder('setEnabled'), - autoTrack: (root) => { - const onClick = (event: Event) => { - const element = event.target as any; - if ( - !element || - (!interactiveTags.has(element.tagName) && - !interactiveRoles.has(element.getAttribute('role'))) - ) - return; - - void analytics.track('click', { - tagName: element.tagName?.toLowerCase(), - id: element.id || undefined, - className: element.className || undefined, - textContent: element.textContent?.substring(0, 50) || undefined, // Limit text content length - href: element.href, - }); - }; - root.addEventListener('click', onClick, { capture: true, passive: true }); - return () => { - root.removeEventListener('click', onClick); - }; - }, - }; - return analytics; + return createFrontendAnalytics(); } /** - * Background analytics is responsible for reporting events triggered in the - * background, and for reporting forwarded events from the other contexts. + * Creates an analytics client in the background responsible for uploading events to the server to avoid CORS errors. */ -function createBackgroundAnalytics(): Analytics { - const config = (useAppConfig() as any).analytics as - | AnalyticsConfig - | undefined; - +function createBackgroundAnalytics(config: AnalyticsConfig): Analytics { // User properties storage const userIdStorage = config?.userId ?? defineStorageItem('local:wxt-analytics:user-id'); @@ -104,7 +43,7 @@ function createBackgroundAnalytics(): Analytics { // Cached values const platformInfo = chrome.runtime.getPlatformInfo(); - const userAgent = uaParser(); + const userAgent = UAParser(); let userId = Promise.resolve(userIdStorage.getValue()).then( (id) => id ?? globalThis.crypto.randomUUID(), ); @@ -131,6 +70,7 @@ function createBackgroundAnalytics(): Analytics { screen: meta.screen, referrer: meta.referrer, language: meta.language, + url: meta.url, }, user: { id: await userId, @@ -177,7 +117,11 @@ function createBackgroundAnalytics(): Analytics { const baseEvent = await getBaseEvent(forwardMeta); const event: AnalyticsPageViewEvent = { ...baseEvent, - page: { url }, + page: { + url, + location: globalThis.location?.href, + title: globalThis.document?.title, + }, }; if (config?.debug) console.debug('[analytics] page', event); if (await enabled.getValue()) { @@ -232,6 +176,60 @@ function createBackgroundAnalytics(): Analytics { return analytics; } +/** + * Creates an analytics client for non-background contexts. + */ +function createFrontendAnalytics(): Analytics { + const port = chrome.runtime.connect({ name: ANALYTICS_PORT }); + const sessionId = Date.now(); + const getMetadata = (): ForwardMetadata => ({ + sessionId, + timestamp: Date.now(), + language: navigator.language, + referrer: globalThis.document?.referrer || undefined, + screen: globalThis.window + ? `${globalThis.window.screen.width}x${globalThis.window.screen.height}` + : undefined, + url: location.href, + }); + + const methodForwarder = + (fn: string) => + (...args: any[]) => + port.postMessage({ fn, args: [...args, getMetadata()] }); + + const analytics: Analytics = { + identify: methodForwarder('identify'), + page: methodForwarder('page'), + track: methodForwarder('track'), + setEnabled: methodForwarder('setEnabled'), + autoTrack: (root) => { + const onClick = (event: Event) => { + const element = event.target as any; + if ( + !element || + (!INTERACTIVE_TAGS.has(element.tagName) && + !INTERACTIVE_ROLES.has(element.getAttribute('role'))) + ) + return; + + void analytics.track('click', { + tagName: element.tagName?.toLowerCase(), + id: element.id || undefined, + className: element.className || undefined, + textContent: element.textContent?.substring(0, 50) || undefined, // Limit text content length + href: element.href, + }); + }; + root.addEventListener('click', onClick, { capture: true, passive: true }); + return () => { + root.removeEventListener('click', onClick); + }; + }, + }; + return analytics; +} + interface ForwardMetadata { sessionId: number | undefined; timestamp: number; @@ -240,3 +238,30 @@ interface ForwardMetadata { referrer: string | undefined; url: string | undefined; } + +function defineStorageItem( + key: string, + defaultValue?: NonNullable, +): AnalyticsStorageItem { + return { + getValue: async () => + (await chrome.storage.local.get(key))[key] ?? defaultValue, + setValue: (newValue) => chrome.storage.local.set({ [key]: newValue }), + }; +} + +const INTERACTIVE_TAGS = new Set([ + 'A', + 'BUTTON', + 'INPUT', + 'SELECT', + 'TEXTAREA', +]); +const INTERACTIVE_ROLES = new Set([ + 'button', + 'link', + 'checkbox', + 'menuitem', + 'tab', + 'radio', +]); diff --git a/packages/analytics/modules/analytics/index.ts b/packages/analytics/modules/analytics/index.ts index 0e0a5d862..1256fc989 100644 --- a/packages/analytics/modules/analytics/index.ts +++ b/packages/analytics/modules/analytics/index.ts @@ -1,9 +1,8 @@ import 'wxt'; import 'wxt/sandbox'; -import { addWxtPlugin, defineWxtModule } from 'wxt/modules'; -import { resolve, dirname } from 'node:path'; -import { AnalyticsConfig } from './types'; -import { fileURLToPath } from 'url'; +import { addAlias, defineWxtModule } from 'wxt/modules'; +import { resolve } from 'node:path'; +import type { AnalyticsConfig } from './types'; declare module 'wxt/sandbox' { export interface WxtAppConfig { @@ -11,27 +10,34 @@ declare module 'wxt/sandbox' { } } -const _dirname = dirname(fileURLToPath(import.meta.url)); - -const pluginId = process.env.NPM - ? '@wxt-dev/analytics/client' - : resolve(_dirname, 'client.ts'); - export default defineWxtModule({ name: 'analytics', - imports: [{ name: 'analytics', from: pluginId }], + imports: [{ name: 'analytics', from: '#analytics' }], setup(wxt) { - // Add a plugin - addWxtPlugin( - wxt, - resolve(_dirname, process.env.NPM ? 'client.mjs' : 'client.ts'), - ); - - wxt.hooks.hook('build:manifestGenerated', (_, manifest) => { + // Add required permissions + wxt.hook('build:manifestGenerated', (_, manifest) => { manifest.permissions ??= []; if (!manifest.permissions.includes('storage')) { manifest.permissions.push('storage'); } }); + + // Generate #analytics module + const analyticsModulePath = resolve( + wxt.config.wxtDir, + 'analytics/index.ts', + ); + const analyticsModuleCode = ` + import { createAnalytics } from '@wxt-dev/analytics/client'; + + export const analytics = createAnalytics(useAppConfig().analytics); + `; + addAlias(wxt, '#analytics', analyticsModulePath); + wxt.hook('prepare:types', async (_, entries) => { + entries.push({ + path: analyticsModulePath, + text: analyticsModuleCode, + }); + }); }, }); diff --git a/packages/analytics/modules/analytics/plugin.ts b/packages/analytics/modules/analytics/plugin.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/analytics/modules/analytics/types.ts b/packages/analytics/modules/analytics/types.ts index ef5781334..13f57b496 100644 --- a/packages/analytics/modules/analytics/types.ts +++ b/packages/analytics/modules/analytics/types.ts @@ -27,18 +27,18 @@ export interface AnalyticsConfig { /** * Configure how the enabled flag is persisted */ - enabled?: AnalyticsStorageItemConfig; + enabled?: AnalyticsStorageItem; /** * Configure how the user Id is persisted */ - userId?: AnalyticsStorageItemConfig; + userId?: AnalyticsStorageItem; /** * Configure how user properties are persisted */ - userProperties?: AnalyticsStorageItemConfig>; + userProperties?: AnalyticsStorageItem>; } -export interface AnalyticsStorageItemConfig { +export interface AnalyticsStorageItem { getValue: () => T | Promise; setValue?: (newValue: T) => void | Promise; } @@ -62,13 +62,13 @@ export interface BaseAnalyticsEvent { /** `Date.now()` of when the event was reported */ timestamp: number; /** `"1920x1080"` */ - screen?: string; + screen: string | undefined; /** `document.referrer` */ - referrer?: string; + referrer: string | undefined; /** `navigator.language` */ - language?: string; + language: string | undefined; /** `location.href` */ - url?: string; + url: string | undefined; }; user: { id: string; @@ -78,8 +78,8 @@ export interface BaseAnalyticsEvent { export interface AnalyticsPageInfo { url: string; - title?: string; - location?: string; + title: string | undefined; + location: string | undefined; } export interface AnalyticsPageViewEvent extends BaseAnalyticsEvent { diff --git a/packages/analytics/tsconfig.json b/packages/analytics/tsconfig.json index 47d6ba416..4c52c24a0 100644 --- a/packages/analytics/tsconfig.json +++ b/packages/analytics/tsconfig.json @@ -1,6 +1,8 @@ { "extends": ["../../tsconfig.base.json", "./.wxt/tsconfig.json"], "compilerOptions": { + "paths": {}, "types": ["chrome"] - } + }, + "exclude": ["node_modules", "dist"] } From e8e00e4e04b6c503232b139c56e2887d6fbe9ff6 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 22 Oct 2024 10:53:50 -0500 Subject: [PATCH 19/48] Fix build --- .../modules/analytics/{analytics.ts => client.ts} | 9 +++++++-- packages/analytics/package.json | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) rename packages/analytics/modules/analytics/{analytics.ts => client.ts} (95%) diff --git a/packages/analytics/modules/analytics/analytics.ts b/packages/analytics/modules/analytics/client.ts similarity index 95% rename from packages/analytics/modules/analytics/analytics.ts rename to packages/analytics/modules/analytics/client.ts index f51b65510..f9cf1abac 100644 --- a/packages/analytics/modules/analytics/analytics.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -10,11 +10,16 @@ import type { const ANALYTICS_PORT = '@wxt-dev/analytics'; -export function createAnalytics(config: AnalyticsConfig): Analytics { +export function createAnalytics(config?: AnalyticsConfig): Analytics { if (globalThis.chrome?.runtime?.id) throw Error( 'Cannot use WXT analytics in contexts without access to the browser.runtime APIs', ); + if (config == null) { + console.warn( + "[@wxt-dev/analytics] Config not provided to createAnalytics. If you're using WXT, add the 'analytics' property to '/app.config.ts'.", + ); + } // TODO: This only works for standard WXT extensions, add a more generic // background script detector that works with non-WXT projects. @@ -27,7 +32,7 @@ export function createAnalytics(config: AnalyticsConfig): Analytics { /** * Creates an analytics client in the background responsible for uploading events to the server to avoid CORS errors. */ -function createBackgroundAnalytics(config: AnalyticsConfig): Analytics { +function createBackgroundAnalytics(config?: AnalyticsConfig): Analytics { // User properties storage const userIdStorage = config?.userId ?? defineStorageItem('local:wxt-analytics:user-id'); diff --git a/packages/analytics/package.json b/packages/analytics/package.json index a4aaec6a5..76dbfcffc 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.1.6", + "version": "0.2.0", "description": "Add analytics to your web extension", "repository": { "type": "git", From f75c5ca1aa30beae280c10120ed92275babdd477 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 22 Oct 2024 11:01:27 -0500 Subject: [PATCH 20/48] fix api check --- packages/analytics/modules/analytics/client.ts | 2 +- packages/analytics/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index f9cf1abac..96dc01366 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -11,7 +11,7 @@ import type { const ANALYTICS_PORT = '@wxt-dev/analytics'; export function createAnalytics(config?: AnalyticsConfig): Analytics { - if (globalThis.chrome?.runtime?.id) + if (typeof chrome === 'undefined' || !chrome?.runtime?.id) throw Error( 'Cannot use WXT analytics in contexts without access to the browser.runtime APIs', ); diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 76dbfcffc..2f42ade6d 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.2.0", + "version": "0.2.1", "description": "Add analytics to your web extension", "repository": { "type": "git", From a861dc17361af2cbba354443fe504e724cfe90bd Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 22 Oct 2024 14:05:32 -0500 Subject: [PATCH 21/48] fix code-generation --- packages/analytics/modules/analytics/index.ts | 5 +++-- packages/analytics/package.json | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/analytics/modules/analytics/index.ts b/packages/analytics/modules/analytics/index.ts index 1256fc989..3451a07b5 100644 --- a/packages/analytics/modules/analytics/index.ts +++ b/packages/analytics/modules/analytics/index.ts @@ -28,9 +28,10 @@ export default defineWxtModule({ 'analytics/index.ts', ); const analyticsModuleCode = ` - import { createAnalytics } from '@wxt-dev/analytics/client'; +import { createAnalytics } from '@wxt-dev/analytics/client'; +import { useAppConfig } from 'wxt/client'; - export const analytics = createAnalytics(useAppConfig().analytics); +export const analytics = createAnalytics(useAppConfig().analytics); `; addAlias(wxt, '#analytics', analyticsModulePath); wxt.hook('prepare:types', async (_, entries) => { diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 2f42ade6d..7965f8957 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.2.1", + "version": "0.2.2", "description": "Add analytics to your web extension", "repository": { "type": "git", From 7879fabbad3679e7572b08247f647297a59ebdc2 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 22 Oct 2024 14:56:25 -0500 Subject: [PATCH 22/48] Cleanup --- .../analytics/modules/analytics/client.ts | 29 +++++++++++++++---- packages/analytics/modules/analytics/types.ts | 4 +-- packages/analytics/package.json | 2 +- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index 96dc01366..c51119f64 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -26,20 +26,22 @@ export function createAnalytics(config?: AnalyticsConfig): Analytics { if (location.pathname === '/background.js') return createBackgroundAnalytics(config); - return createFrontendAnalytics(); + return createFrontendAnalytics(config); } /** * Creates an analytics client in the background responsible for uploading events to the server to avoid CORS errors. */ -function createBackgroundAnalytics(config?: AnalyticsConfig): Analytics { +function createBackgroundAnalytics( + config: AnalyticsConfig | undefined, +): Analytics { // User properties storage const userIdStorage = - config?.userId ?? defineStorageItem('local:wxt-analytics:user-id'); + config?.userId ?? defineStorageItem('wxt-analytics:user-id'); const userPropertiesStorage = config?.userProperties ?? defineStorageItem>( - 'local:wxt-analytics:user-properties', + 'wxt-analytics:user-properties', {}, ); const enabled = @@ -184,7 +186,9 @@ function createBackgroundAnalytics(config?: AnalyticsConfig): Analytics { /** * Creates an analytics client for non-background contexts. */ -function createFrontendAnalytics(): Analytics { +function createFrontendAnalytics( + config: AnalyticsConfig | undefined, +): Analytics { const port = chrome.runtime.connect({ name: ANALYTICS_PORT }); const sessionId = Date.now(); const getMetadata = (): ForwardMetadata => ({ @@ -200,8 +204,15 @@ function createFrontendAnalytics(): Analytics { const methodForwarder = (fn: string) => - (...args: any[]) => + (...args: any[]) => { + if (config?.debug) { + console.debug( + `[analytics] Sending ${fn} to background for upload`, + ...args, + ); + } port.postMessage({ fn, args: [...args, getMetadata()] }); + }; const analytics: Analytics = { identify: methodForwarder('identify'), @@ -209,8 +220,14 @@ function createFrontendAnalytics(): Analytics { track: methodForwarder('track'), setEnabled: methodForwarder('setEnabled'), autoTrack: (root) => { + if (config?.debug) { + console.debug('[analytics] autoTrack() called!'); + } const onClick = (event: Event) => { const element = event.target as any; + if (config?.debug) { + console.debug('[analytics] autoTrack() element clicked', element); + } if ( !element || (!INTERACTIVE_TAGS.has(element.tagName) && diff --git a/packages/analytics/modules/analytics/types.ts b/packages/analytics/modules/analytics/types.ts index 13f57b496..241fb962b 100644 --- a/packages/analytics/modules/analytics/types.ts +++ b/packages/analytics/modules/analytics/types.ts @@ -2,7 +2,7 @@ export interface Analytics { /** Report a page change */ page: (url: string) => void; /** Report a custom event */ - track: (eventName: string, eventProperties: Record) => void; + track: (eventName: string, eventProperties?: Record) => void; /** Save information about the user */ identify: (userId: string, userProperties?: Record) => void; /** Automatically setup and track user interactions, returning a function to remove any listeners that were setup. */ @@ -25,7 +25,7 @@ export interface AnalyticsConfig { */ version?: string; /** - * Configure how the enabled flag is persisted + * Configure how the enabled flag is persisted. Defaults to using `""` in local extension storage. */ enabled?: AnalyticsStorageItem; /** diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 7965f8957..4e9d404b4 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.2.2", + "version": "0.2.3", "description": "Add analytics to your web extension", "repository": { "type": "git", From 93e6dd6db732b0c0bae308ac2b13e7ad573f36fc Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 22 Oct 2024 15:03:02 -0500 Subject: [PATCH 23/48] Improve debug logs --- packages/analytics/modules/analytics/client.ts | 8 +++++--- packages/analytics/package.json | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index c51119f64..ae17fcf9d 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -117,7 +117,9 @@ function createBackgroundAnalytics( providers.map((provider) => provider.identify(event)), ); } else if (config?.debug) { - console.debug('[analytics] Disabled, identify() not called'); + console.debug( + '[analytics] Analytics disabled, identify() not uploaded', + ); } }, page: async (url: string, forwardMeta?: ForwardMetadata) => { @@ -136,7 +138,7 @@ function createBackgroundAnalytics( providers.map((provider) => provider.page(event)), ); } else if (config?.debug) { - console.debug('[analytics] Disabled, page() not called'); + console.debug('[analytics] Analytics disabled, page() not uploaded'); } }, track: async ( @@ -155,7 +157,7 @@ function createBackgroundAnalytics( providers.map((provider) => provider.track(event)), ); } else if (config?.debug) { - console.debug('[analytics] Disabled, track() not called'); + console.debug('[analytics] Analytics disabled, track() not uploaded'); } }, setEnabled: async (newEnabled) => { diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 4e9d404b4..a7bd06e86 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.2.3", + "version": "0.2.4", "description": "Add analytics to your web extension", "repository": { "type": "git", From e98f29fddb7f55fd4ed96e6c0f937c0383129985 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 22 Oct 2024 15:07:57 -0500 Subject: [PATCH 24/48] Fix page upload params --- packages/analytics/modules/analytics/client.ts | 6 +++--- packages/analytics/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index ae17fcf9d..050488e24 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -122,13 +122,13 @@ function createBackgroundAnalytics( ); } }, - page: async (url: string, forwardMeta?: ForwardMetadata) => { + page: async (location: string, forwardMeta?: ForwardMetadata) => { const baseEvent = await getBaseEvent(forwardMeta); const event: AnalyticsPageViewEvent = { ...baseEvent, page: { - url, - location: globalThis.location?.href, + url: globalThis.location?.href, + location, title: globalThis.document?.title, }, }; diff --git a/packages/analytics/package.json b/packages/analytics/package.json index a7bd06e86..b44dd6442 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.2.4", + "version": "0.2.5", "description": "Add analytics to your web extension", "repository": { "type": "git", From 26cbef5a4200b33a2525279553a3d72a6d814cf5 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 22 Oct 2024 15:14:05 -0500 Subject: [PATCH 25/48] Properly track title --- packages/analytics/modules/analytics/client.ts | 7 +++++-- packages/analytics/package.json | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index 050488e24..9dffbe874 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -67,6 +67,7 @@ function createBackgroundAnalytics( referrer: undefined, screen: undefined, url: location.href, + title: undefined, }, ): Promise => { const platform = await platformInfo; @@ -127,9 +128,9 @@ function createBackgroundAnalytics( const event: AnalyticsPageViewEvent = { ...baseEvent, page: { - url: globalThis.location?.href, + url: forwardMeta?.url ?? globalThis.location?.href, location, - title: globalThis.document?.title, + title: forwardMeta?.title ?? globalThis.document?.title, }, }; if (config?.debug) console.debug('[analytics] page', event); @@ -202,6 +203,7 @@ function createFrontendAnalytics( ? `${globalThis.window.screen.width}x${globalThis.window.screen.height}` : undefined, url: location.href, + title: document.title || undefined, }); const methodForwarder = @@ -261,6 +263,7 @@ interface ForwardMetadata { language: string | undefined; referrer: string | undefined; url: string | undefined; + title: string | undefined; } function defineStorageItem( diff --git a/packages/analytics/package.json b/packages/analytics/package.json index b44dd6442..59908823b 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.2.5", + "version": "0.2.6", "description": "Add analytics to your web extension", "repository": { "type": "git", From 0416ff7ec26cb65b35849b87bda4a74d049eb93e Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 22 Oct 2024 15:29:44 -0500 Subject: [PATCH 26/48] Cleanup metadata handling --- .../analytics/modules/analytics/client.ts | 85 +++++++------------ packages/analytics/modules/analytics/types.ts | 32 ++++--- packages/analytics/package.json | 2 +- 3 files changed, 49 insertions(+), 70 deletions(-) diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index 9dffbe874..1e8dc0b0f 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -6,6 +6,7 @@ import type { AnalyticsStorageItem, AnalyticsTrackEvent, BaseAnalyticsEvent, + AnalyticsEventMetadata, } from './types'; const ANALYTICS_PORT = '@wxt-dev/analytics'; @@ -26,7 +27,7 @@ export function createAnalytics(config?: AnalyticsConfig): Analytics { if (location.pathname === '/background.js') return createBackgroundAnalytics(config); - return createFrontendAnalytics(config); + return createFrontendAnalytics(); } /** @@ -57,29 +58,24 @@ function createBackgroundAnalytics( let userProperties = userPropertiesStorage.getValue(); const manifest = chrome.runtime.getManifest(); + const getBackgroundMeta = () => ({ + timestamp: Date.now(), + // Don't track sessions for the background, it can be running + // indefinitely, and will inflate session duration stats. + sessionId: undefined, + language: navigator.language, + referrer: undefined, + screen: undefined, + url: location.href, + title: undefined, + }); + const getBaseEvent = async ( - meta: ForwardMetadata = { - timestamp: Date.now(), - // Don't track sessions for the background, it can be running - // indefinitely, and will inflate session duration stats. - sessionId: undefined, - language: navigator.language, - referrer: undefined, - screen: undefined, - url: location.href, - title: undefined, - }, + meta: AnalyticsEventMetadata, ): Promise => { const platform = await platformInfo; return { - meta: { - sessionId: meta.sessionId, - timestamp: meta.timestamp, - screen: meta.screen, - referrer: meta.referrer, - language: meta.language, - url: meta.url, - }, + meta, user: { id: await userId, properties: { @@ -100,7 +96,7 @@ function createBackgroundAnalytics( identify: async ( newUserId: string, newUserProperties: Record = {}, - forwardMeta?: ForwardMetadata, + meta: AnalyticsEventMetadata = getBackgroundMeta(), ) => { // Update in-memory cache for all providers userId = Promise.resolve(newUserId); @@ -111,7 +107,7 @@ function createBackgroundAnalytics( userPropertiesStorage.setValue?.(newUserProperties), ]); // Notify providers - const event = await getBaseEvent(forwardMeta); + const event = await getBaseEvent(meta); if (config?.debug) console.debug('[analytics] identify', event); if (await enabled.getValue()) { await Promise.allSettled( @@ -123,14 +119,17 @@ function createBackgroundAnalytics( ); } }, - page: async (location: string, forwardMeta?: ForwardMetadata) => { - const baseEvent = await getBaseEvent(forwardMeta); + page: async ( + location: string, + meta: AnalyticsEventMetadata = getBackgroundMeta(), + ) => { + const baseEvent = await getBaseEvent(meta); const event: AnalyticsPageViewEvent = { ...baseEvent, page: { - url: forwardMeta?.url ?? globalThis.location?.href, + url: meta?.url ?? globalThis.location?.href, location, - title: forwardMeta?.title ?? globalThis.document?.title, + title: meta?.title ?? globalThis.document?.title, }, }; if (config?.debug) console.debug('[analytics] page', event); @@ -145,9 +144,9 @@ function createBackgroundAnalytics( track: async ( eventName: string, eventProperties?: Record, - forwardMeta?: ForwardMetadata, + meta: AnalyticsEventMetadata = getBackgroundMeta(), ) => { - const baseEvent = await getBaseEvent(forwardMeta); + const baseEvent = await getBaseEvent(meta); const event: AnalyticsTrackEvent = { ...baseEvent, event: { name: eventName, properties: eventProperties }, @@ -189,12 +188,10 @@ function createBackgroundAnalytics( /** * Creates an analytics client for non-background contexts. */ -function createFrontendAnalytics( - config: AnalyticsConfig | undefined, -): Analytics { +function createFrontendAnalytics(): Analytics { const port = chrome.runtime.connect({ name: ANALYTICS_PORT }); const sessionId = Date.now(); - const getMetadata = (): ForwardMetadata => ({ + const getFrontendMetadata = (): AnalyticsEventMetadata => ({ sessionId, timestamp: Date.now(), language: navigator.language, @@ -209,13 +206,7 @@ function createFrontendAnalytics( const methodForwarder = (fn: string) => (...args: any[]) => { - if (config?.debug) { - console.debug( - `[analytics] Sending ${fn} to background for upload`, - ...args, - ); - } - port.postMessage({ fn, args: [...args, getMetadata()] }); + port.postMessage({ fn, args: [...args, getFrontendMetadata()] }); }; const analytics: Analytics = { @@ -224,14 +215,8 @@ function createFrontendAnalytics( track: methodForwarder('track'), setEnabled: methodForwarder('setEnabled'), autoTrack: (root) => { - if (config?.debug) { - console.debug('[analytics] autoTrack() called!'); - } const onClick = (event: Event) => { const element = event.target as any; - if (config?.debug) { - console.debug('[analytics] autoTrack() element clicked', element); - } if ( !element || (!INTERACTIVE_TAGS.has(element.tagName) && @@ -256,16 +241,6 @@ function createFrontendAnalytics( return analytics; } -interface ForwardMetadata { - sessionId: number | undefined; - timestamp: number; - screen: string | undefined; - language: string | undefined; - referrer: string | undefined; - url: string | undefined; - title: string | undefined; -} - function defineStorageItem( key: string, defaultValue?: NonNullable, diff --git a/packages/analytics/modules/analytics/types.ts b/packages/analytics/modules/analytics/types.ts index 241fb962b..c93fc9714 100644 --- a/packages/analytics/modules/analytics/types.ts +++ b/packages/analytics/modules/analytics/types.ts @@ -56,26 +56,30 @@ export type AnalyticsProvider = ( }; export interface BaseAnalyticsEvent { - meta: { - /** Identifier of the session the event was fired from */ - sessionId: number | undefined; - /** `Date.now()` of when the event was reported */ - timestamp: number; - /** `"1920x1080"` */ - screen: string | undefined; - /** `document.referrer` */ - referrer: string | undefined; - /** `navigator.language` */ - language: string | undefined; - /** `location.href` */ - url: string | undefined; - }; + meta: EventMetadata; user: { id: string; properties: Record; }; } +export interface AnalyticsEventMetadata { + /** Identifier of the session the event was fired from */ + sessionId: number | undefined; + /** `Date.now()` of when the event was reported */ + timestamp: number; + /** `"1920x1080"` */ + screen: string | undefined; + /** `document.referrer` */ + referrer: string | undefined; + /** `navigator.language` */ + language: string | undefined; + /** `location.href` */ + url: string | undefined; + /** `document.title` */ + title: string | undefined; +} + export interface AnalyticsPageInfo { url: string; title: string | undefined; diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 59908823b..588768235 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.2.6", + "version": "0.2.7", "description": "Add analytics to your web extension", "repository": { "type": "git", From 3786c7b6d17c05ea874e5277f45934d99bced158 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 22 Oct 2024 15:32:34 -0500 Subject: [PATCH 27/48] Fix types --- packages/analytics/entrypoints/popup/main.ts | 2 +- packages/analytics/modules/analytics/types.ts | 2 +- packages/analytics/package.json | 2 +- packages/analytics/tsconfig.json | 4 +++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/analytics/entrypoints/popup/main.ts b/packages/analytics/entrypoints/popup/main.ts index 6245ad6a0..55a996bdf 100644 --- a/packages/analytics/entrypoints/popup/main.ts +++ b/packages/analytics/entrypoints/popup/main.ts @@ -1,4 +1,4 @@ -import { analytics } from '@/modules/analytics/client'; +import { analytics } from '#analytics'; declare const enabledCheckbox: HTMLInputElement; diff --git a/packages/analytics/modules/analytics/types.ts b/packages/analytics/modules/analytics/types.ts index c93fc9714..1278b735c 100644 --- a/packages/analytics/modules/analytics/types.ts +++ b/packages/analytics/modules/analytics/types.ts @@ -56,7 +56,7 @@ export type AnalyticsProvider = ( }; export interface BaseAnalyticsEvent { - meta: EventMetadata; + meta: AnalyticsEventMetadata; user: { id: string; properties: Record; diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 588768235..d4f648ecb 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -4,7 +4,7 @@ "description": "Add analytics to your web extension", "repository": { "type": "git", - "url": "https://github.com/wxt-dev/wxt.git", + "url": "git+https://github.com/wxt-dev/wxt.git", "directory": "packages/analytics" }, "license": "MIT", diff --git a/packages/analytics/tsconfig.json b/packages/analytics/tsconfig.json index 4c52c24a0..9d173da1c 100644 --- a/packages/analytics/tsconfig.json +++ b/packages/analytics/tsconfig.json @@ -1,7 +1,9 @@ { "extends": ["../../tsconfig.base.json", "./.wxt/tsconfig.json"], "compilerOptions": { - "paths": {}, + "paths": { + "#analytics": ["./.wxt/analytics/index.ts"] + }, "types": ["chrome"] }, "exclude": ["node_modules", "dist"] From c431dafe089af781d03824116c21cecbc9050d9c Mon Sep 17 00:00:00 2001 From: Aaron Date: Thu, 31 Oct 2024 08:47:09 -0500 Subject: [PATCH 28/48] Fix readme and required minimum version --- packages/analytics/README.md | 3 ++- packages/analytics/package.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/analytics/README.md b/packages/analytics/README.md index f5184e100..17e5c06a6 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -40,11 +40,12 @@ export default defineAppConfig({ Then use the `analytics` import to report events: ```ts -import { analytics } from '@wxt-dev/analytics'; +import { analytics } from '#analytics'; await analytics.track('some-event'); await analytics.page(); await analytics.identify('some-user-id'); +analytics.autoTrack(document.body); ``` ## Providers diff --git a/packages/analytics/package.json b/packages/analytics/package.json index d4f648ecb..df0b25c6a 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -41,7 +41,7 @@ "prepare": "wxt prepare" }, "peerDependencies": { - "wxt": ">=0.18.14" + "wxt": ">=0.19.9" }, "devDependencies": { "@aklinker1/check": "^1.3.1", From 90c2b7f9bff8873cd8fe1e0a5ff75ece99a562b1 Mon Sep 17 00:00:00 2001 From: Aaron Date: Thu, 31 Oct 2024 08:47:36 -0500 Subject: [PATCH 29/48] Bump version --- packages/analytics/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/analytics/package.json b/packages/analytics/package.json index df0b25c6a..518c40dcd 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.2.7", + "version": "0.2.8", "description": "Add analytics to your web extension", "repository": { "type": "git", From b727453509ba279d78e4139786735549befef665 Mon Sep 17 00:00:00 2001 From: aklinker1 Date: Sun, 29 Dec 2024 22:12:30 +0000 Subject: [PATCH 30/48] docs: Update `wxt init` GIF --- docs/assets/init-demo.gif | Bin 135118 -> 134105 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/assets/init-demo.gif b/docs/assets/init-demo.gif index ee6e9ed8781e4b99cbdde870563ab9ea38247b13..59f8427b05d71bde25b629f5a426f31b6eb501cf 100644 GIT binary patch literal 134105 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%0A4#rqvf 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

Si^f$zZ34t-=+WTE(l^JY39P7)uoQ;s8o~J* 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 P From 6fb1463a3219902b72193516e2ccb513e2b32c42 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 19:10:19 -0600 Subject: [PATCH 31/48] defineAnalyticsProvider and updated umami config --- packages/analytics/README.md | 101 ++++++++++++++---- packages/analytics/app.config.ts | 4 +- packages/analytics/build.config.ts | 3 +- .../analytics/modules/analytics/client.ts | 1 + .../modules/analytics/providers/umami.ts | 20 ++-- packages/analytics/package.json | 2 +- packages/analytics/wxt.config.ts | 5 - pnpm-lock.yaml | 16 +-- 8 files changed, 103 insertions(+), 49 deletions(-) diff --git a/packages/analytics/README.md b/packages/analytics/README.md index 17e5c06a6..14f52ad1b 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -37,7 +37,7 @@ export default defineAppConfig({ }); ``` -Then use the `analytics` import to report events: +Then use the `#analytics` module to report events: ```ts import { analytics } from '#analytics'; @@ -52,39 +52,96 @@ analytics.autoTrack(document.body); ### Google Analytics 4 (Measurement Protocol) -Follow [Google's documentation](https://developer.chrome.com/docs/extensions/how-to/integrate/google-analytics-4#setup-credentials) to obtain your credentials: - -```ts -import { googleAnalytics4 } from '@wxt-dev/analytics/providers/google-analytics-4'; - -export default defineAppConfig({ - analytics: { - providers: [ - googleAnalytics4({ - apiSecret: '...', - measurementId: '...', - }), - ], - }, -}); -``` +The [Measurement Protocol](https://developers.google.com/analytics/devguides/collection/protocol/ga4) is an alternative to GTag for reporting events to Google Analytics for MV3 extensions. > [Why use the Measurement Protocol instead of GTag?](https://developer.chrome.com/docs/extensions/how-to/integrate/google-analytics-4#measurement-protocol) +1. Add the module to your config: + ```ts + export default defineConfig({ + modules: ['@wxt-dev/analytics'], + }); + ``` +2. Follow [Google's documentation](https://developer.chrome.com/docs/extensions/how-to/integrate/google-analytics-4#setup-credentials) to obtain your credentials and put them in your `.env` file: + ```dotenv + WXT_GA_API_SECRET='...' + ``` +3. Add the `googleAnalytics4` provider to your `/app.config.ts` file: + + ```ts + import { googleAnalytics4 } from '@wxt-dev/analytics/providers/google-analytics-4'; + + export default defineAppConfig({ + analytics: { + providers: [ + googleAnalytics4({ + apiSecret: import.meta.env.WXT_GA_API_SECRET, + measurementId: '...', + }), + ], + }, + }); + ``` + ### Umami +[Umami](https://umami.is/) is a privacy-first, open source analytics platform. + +1. Add the module to your config: + ```ts + export default defineConfig({ + modules: ['@wxt-dev/analytics'], + }); + ``` +2. In Umami, create a new website. The website's name and domain can be anything. Obviously, an extension doesn't have a domain, so make one up if you don't have one. After the website has been created, save the website ID and domain to your `.env` file: + ```dotenv + WXT_UMAMI_WEBSITE_ID=... + WXT_UMAMI_DOMAIN=... + ``` +3. Add the `umami` provider to your `/app.config.ts` file: + + ```ts + import { umami } from '@wxt-dev/analytics/providers/umami'; + + export default defineAppConfig({ + analytics: { + providers: [ + umami({ + apiUrl: 'https:///api', + websiteId: import.meta.env.WXT_UMAMI_WEBSITE_ID, + domain: import.meta.env.WXT_UMAMI_DOMAIN, + }), + ], + }, + }); + ``` + +### Custom Provider + +If your analytics platform is not supported, you can provide an implementation of the `AnalyticsProvider` type in your `app.config.ts` instead: + ```ts -import { umami } from '@wxt-dev/analytics/providers/umami'; +import { defineAnalyticsProvider } from '@wxt-dev/analytics/client'; + +interface CustomAnalyticsOptions { + // ... +} + +const customAnalytics = defineAnalyticsProvider( + (analytics, analyticsConfig, providerOptions) => { + // ... + }, +); export default defineAppConfig({ analytics: { providers: [ - umami({ - baseUrl: 'https://your-domain.com', - websiteId: '...', - hostname: '...', + customAnalytics({ + // ... }), ], }, }); ``` + +For example `AnalyticsProvider` implementations, see [`./modules/analytics/providers`](https://github.com/wxt-dev/wxt/tree/main/packages/analytics/modules/analytics/providers). diff --git a/packages/analytics/app.config.ts b/packages/analytics/app.config.ts index 37df7da3a..757be2844 100644 --- a/packages/analytics/app.config.ts +++ b/packages/analytics/app.config.ts @@ -11,8 +11,8 @@ export default defineAppConfig({ measurementId: '...', }), umami({ - baseUrl: 'https://umami.aklinker1.io', - hostname: 'analytics.wxt.dev', + apiUrl: 'https://umami.aklinker1.io/api', + domain: 'analytics.wxt.dev', websiteId: '8f1c2aa4-fad3-406e-a5b2-33e8d4501716', }), ], diff --git a/packages/analytics/build.config.ts b/packages/analytics/build.config.ts index 850b198d5..fbdb6c573 100644 --- a/packages/analytics/build.config.ts +++ b/packages/analytics/build.config.ts @@ -8,11 +8,12 @@ export default defineBuildConfig({ entries: [ 'index.ts', 'client.ts', + 'types.ts', 'providers/google-analytics-4.ts', 'providers/umami.ts', ], replace: { - __PACKAGED__: 'true', + 'ipmort.meta.env.NPM': 'true', }, declaration: true, }); diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index 1e8dc0b0f..fcdac8373 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -8,6 +8,7 @@ import type { BaseAnalyticsEvent, AnalyticsEventMetadata, } from './types'; +export * from './client-utils'; const ANALYTICS_PORT = '@wxt-dev/analytics'; diff --git a/packages/analytics/modules/analytics/providers/umami.ts b/packages/analytics/modules/analytics/providers/umami.ts index c1deec3d4..fc99487f6 100644 --- a/packages/analytics/modules/analytics/providers/umami.ts +++ b/packages/analytics/modules/analytics/providers/umami.ts @@ -1,16 +1,15 @@ -import type { AnalyticsProvider } from '../types'; +import { defineAnalyticsProvider } from '../client-utils'; export interface UmamiProviderOptions { - baseUrl: string; + apiUrl: string; websiteId: string; - hostname: string; + domain: string; } -export const umami = - (options: UmamiProviderOptions): AnalyticsProvider => - (analytics, config) => { +export const umami = defineAnalyticsProvider( + (analytics, config, options) => { const send = (payload: UmamiPayload) => - fetch(`${options.baseUrl}/api/send`, { + fetch(`${options.apiUrl}/send`, { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -25,7 +24,7 @@ export const umami = name: 'page_view', website: options.websiteId, url: event.page.url, - hostname: options.hostname, + hostname: options.domain, language: event.meta.language ?? '', referrer: event.meta.referrer ?? '', screen: event.meta.screen ?? '', @@ -39,7 +38,7 @@ export const umami = website: options.websiteId, url: event.meta.url ?? '/', title: '', - hostname: options.hostname, + hostname: options.domain, language: event.meta.language ?? '', referrer: event.meta.referrer ?? '', screen: event.meta.screen ?? '', @@ -50,7 +49,8 @@ export const umami = }); }, }; - }; + }, +); interface UmamiPayload { hostname?: string; diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 518c40dcd..d1facd75e 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.2.8", + "version": "0.3.0", "description": "Add analytics to your web extension", "repository": { "type": "git", diff --git a/packages/analytics/wxt.config.ts b/packages/analytics/wxt.config.ts index 8b3254ecf..f4b6f665b 100644 --- a/packages/analytics/wxt.config.ts +++ b/packages/analytics/wxt.config.ts @@ -8,9 +8,4 @@ export default defineConfig({ manifest: { name: 'Analytics Demo', }, - vite: () => ({ - define: { - __PACKAGED__: 'false', - }, - }), }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bda60feaf..1553cd1ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,11 +87,11 @@ importers: dependencies: ua-parser-js: specifier: ^1.0.38 - version: 1.0.39 + version: 1.0.40 devDependencies: '@aklinker1/check': specifier: ^1.3.1 - version: 1.4.5(typescript@5.6.2) + version: 1.4.5(typescript@5.6.3) '@types/chrome': specifier: ^0.0.268 version: 0.0.268 @@ -103,13 +103,13 @@ importers: version: 3.3.3 publint: specifier: ^0.2.8 - version: 0.2.11 + version: 0.2.12 typescript: specifier: ^5.5.2 - version: 5.6.2 + version: 5.6.3 unbuild: specifier: ^2.0.0 - version: 2.0.0(sass@1.79.4)(typescript@5.6.2) + version: 2.0.0(sass@1.80.7)(typescript@5.6.3) wxt: specifier: workspace:* version: link:../wxt @@ -4805,8 +4805,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - ua-parser-js@1.0.39: - resolution: {integrity: sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==} + ua-parser-js@1.0.40: + resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} hasBin: true ufo@1.5.3: @@ -9489,7 +9489,7 @@ snapshots: typescript@5.6.3: {} - ua-parser-js@1.0.39: {} + ua-parser-js@1.0.40: {} ufo@1.5.3: {} From 95367203bf31f59d36d7571ba50fe5416370bcf2 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 19:15:21 -0600 Subject: [PATCH 32/48] cleanup --- packages/analytics/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/analytics/README.md b/packages/analytics/README.md index 14f52ad1b..71e67972c 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -48,6 +48,17 @@ await analytics.identify('some-user-id'); analytics.autoTrack(document.body); ``` +Finally, you must import the `#analytics` module in your background: + +```ts +// entrypoints/background.ts +import '#analytics'; +``` + +This is because the `analytics` object sends events and other data to the background for it perform the HTTP request to upload the data. + +This also means to view the network requests in devtools, you must look at the background's devtools. + ## Providers ### Google Analytics 4 (Measurement Protocol) From 3b9f395a7d20a7cf5d9478bf2f076516f9e72cb7 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 19:22:30 -0600 Subject: [PATCH 33/48] Update README --- packages/analytics/README.md | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/packages/analytics/README.md b/packages/analytics/README.md index 71e67972c..46a2fd607 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -1,6 +1,6 @@ # WXT Analytics -Add analytics, like google analytics, to your WXT extension. +Report analytics events from your WXT extension. ## Supported Analytics Providers @@ -156,3 +156,33 @@ export default defineAppConfig({ ``` For example `AnalyticsProvider` implementations, see [`./modules/analytics/providers`](https://github.com/wxt-dev/wxt/tree/main/packages/analytics/modules/analytics/providers). + +## Usage outside WXT + +You can use this package in non-WXT packages: + +1. Create an `analytics` instance: + + ```ts + // utils/analytics.ts + import {} from '@wxt-dev/analytics/client'; + + export const analytics = createAnalytics({ + providers: [ + // ... + ], + }); + ``` + +2. Import your analytics module in the background. This registers a message listener so the background can perform the network requests. + ```ts + // background.ts + import './utils/analytics'; + ``` +3. Use your `analytics` instance to report events throughout your extension: + + ```ts + import { analytics } from './utils/analytics'; + + await analytics.track('some-event'); + ``` From baebe28a3ed0c0431917cbdeddaeed3618e2955a Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 19:42:42 -0600 Subject: [PATCH 34/48] cleanup --- packages/analytics/README.md | 224 ++++++++---------- packages/analytics/build.config.ts | 4 +- packages/analytics/entrypoints/background.ts | 4 + .../modules/analytics/client-utils.ts | 15 ++ .../analytics/providers/google-analytics-4.ts | 120 +++++----- packages/analytics/package.json | 9 +- 6 files changed, 192 insertions(+), 184 deletions(-) create mode 100644 packages/analytics/entrypoints/background.ts create mode 100644 packages/analytics/modules/analytics/client-utils.ts diff --git a/packages/analytics/README.md b/packages/analytics/README.md index 46a2fd607..530f5e2d8 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -1,63 +1,83 @@ # WXT Analytics -Report analytics events from your WXT extension. +Report analytics events from your web extension extension. ## Supported Analytics Providers - [Google Analytics 4 (Measurement Protocol)](#google-analytics-4-measurement-protocol) - [Umami](#umami) -## Installation +## Install With WXT -Install the NPM package: +1. Install the NPM package: + ```bash + pnpm i @wxt-dev/analytics + ``` +2. In your `wxt.config.ts`, add the WXT module: + ```ts + export default defineConfig({ + modules: ['@wxt-dev/analytics/module'], + }); + ``` +3. In your `/app.config.ts`, add a provider: -```bash -pnpm i @wxt-dev/analytics -``` + ```ts + // /app.config.ts + import { umami } from '@wxt-dev/analytics/providers/umami'; -Then add the module to your `wxt.config.ts` file: + export default defineAppConfig({ + analytics: { + debug: true, + providers: [ + // ... + ], + }, + }); + ``` -```ts -export default defineConfig({ - modules: ['@wxt-dev/analytics'], -}); -``` +4. Then use the `#analytics` module to report events: -Create an `app.config.ts` file and fill out the required config: + ```ts + import { analytics } from '#analytics'; -```ts -// /app.config.ts -export default defineAppConfig({ - analytics: { - debug: true, - providers: [ - // ... - ], - }, -}); -``` + await analytics.track('some-event'); + await analytics.page(); + await analytics.identify('some-user-id'); + analytics.autoTrack(document.body); + ``` -Then use the `#analytics` module to report events: +## Install Without WXT -```ts -import { analytics } from '#analytics'; +You can use this package in non-WXT packages: -await analytics.track('some-event'); -await analytics.page(); -await analytics.identify('some-user-id'); -analytics.autoTrack(document.body); -``` +1. Create an `analytics` instance: -Finally, you must import the `#analytics` module in your background: + ```ts + // utils/analytics.ts + import { createAnalytics } from '@wxt-dev/analytics'; -```ts -// entrypoints/background.ts -import '#analytics'; -``` + export const analytics = createAnalytics({ + providers: [ + // ... + ], + }); + ``` + +2. Import your analytics module in the background: + ```ts + // background.ts + import './utils/analytics'; + ``` +3. Then use your `analytics` instance to report events: -This is because the `analytics` object sends events and other data to the background for it perform the HTTP request to upload the data. + ```ts + import { analytics } from '#analytics'; -This also means to view the network requests in devtools, you must look at the background's devtools. + await analytics.track('some-event'); + await analytics.page(); + await analytics.identify('some-user-id'); + analytics.autoTrack(document.body); + ``` ## Providers @@ -67,65 +87,59 @@ The [Measurement Protocol](https://developers.google.com/analytics/devguides/col > [Why use the Measurement Protocol instead of GTag?](https://developer.chrome.com/docs/extensions/how-to/integrate/google-analytics-4#measurement-protocol) -1. Add the module to your config: - ```ts - export default defineConfig({ - modules: ['@wxt-dev/analytics'], - }); - ``` -2. Follow [Google's documentation](https://developer.chrome.com/docs/extensions/how-to/integrate/google-analytics-4#setup-credentials) to obtain your credentials and put them in your `.env` file: - ```dotenv - WXT_GA_API_SECRET='...' - ``` -3. Add the `googleAnalytics4` provider to your `/app.config.ts` file: +Follow [Google's documentation](https://developer.chrome.com/docs/extensions/how-to/integrate/google-analytics-4#setup-credentials) to obtain your credentials and put them in your `.env` file: - ```ts - import { googleAnalytics4 } from '@wxt-dev/analytics/providers/google-analytics-4'; +```dotenv +WXT_GA_API_SECRET='...' +``` - export default defineAppConfig({ - analytics: { - providers: [ - googleAnalytics4({ - apiSecret: import.meta.env.WXT_GA_API_SECRET, - measurementId: '...', - }), - ], - }, - }); - ``` +Then add the `googleAnalytics4` provider to your `/app.config.ts` file: + +```ts +import { googleAnalytics4 } from '@wxt-dev/analytics/providers/google-analytics-4'; + +export default defineAppConfig({ + analytics: { + providers: [ + googleAnalytics4({ + apiSecret: import.meta.env.WXT_GA_API_SECRET, + measurementId: '...', + }), + ], + }, +}); +``` ### Umami [Umami](https://umami.is/) is a privacy-first, open source analytics platform. -1. Add the module to your config: - ```ts - export default defineConfig({ - modules: ['@wxt-dev/analytics'], - }); - ``` -2. In Umami, create a new website. The website's name and domain can be anything. Obviously, an extension doesn't have a domain, so make one up if you don't have one. After the website has been created, save the website ID and domain to your `.env` file: - ```dotenv - WXT_UMAMI_WEBSITE_ID=... - WXT_UMAMI_DOMAIN=... - ``` -3. Add the `umami` provider to your `/app.config.ts` file: +In Umami's dashboard, create a new website. The website's name and domain can be anything. Obviously, an extension doesn't have a domain, so make one up if you don't have one. - ```ts - import { umami } from '@wxt-dev/analytics/providers/umami'; +After the website has been created, save the website ID and domain to your `.env` file: - export default defineAppConfig({ - analytics: { - providers: [ - umami({ - apiUrl: 'https:///api', - websiteId: import.meta.env.WXT_UMAMI_WEBSITE_ID, - domain: import.meta.env.WXT_UMAMI_DOMAIN, - }), - ], - }, - }); - ``` +```dotenv +WXT_UMAMI_WEBSITE_ID='...' +WXT_UMAMI_DOMAIN='...' +``` + +Then add the `umami` provider to your `/app.config.ts` file: + +```ts +import { umami } from '@wxt-dev/analytics/providers/umami'; + +export default defineAppConfig({ + analytics: { + providers: [ + umami({ + apiUrl: 'https:///api', + websiteId: import.meta.env.WXT_UMAMI_WEBSITE_ID, + domain: import.meta.env.WXT_UMAMI_DOMAIN, + }), + ], + }, +}); +``` ### Custom Provider @@ -155,34 +169,4 @@ export default defineAppConfig({ }); ``` -For example `AnalyticsProvider` implementations, see [`./modules/analytics/providers`](https://github.com/wxt-dev/wxt/tree/main/packages/analytics/modules/analytics/providers). - -## Usage outside WXT - -You can use this package in non-WXT packages: - -1. Create an `analytics` instance: - - ```ts - // utils/analytics.ts - import {} from '@wxt-dev/analytics/client'; - - export const analytics = createAnalytics({ - providers: [ - // ... - ], - }); - ``` - -2. Import your analytics module in the background. This registers a message listener so the background can perform the network requests. - ```ts - // background.ts - import './utils/analytics'; - ``` -3. Use your `analytics` instance to report events throughout your extension: - - ```ts - import { analytics } from './utils/analytics'; - - await analytics.track('some-event'); - ``` +Example `AnalyticsProvider` implementations can be found at [`./modules/analytics/providers`](https://github.com/wxt-dev/wxt/tree/main/packages/analytics/modules/analytics/providers). diff --git a/packages/analytics/build.config.ts b/packages/analytics/build.config.ts index fbdb6c573..4c52f16fc 100644 --- a/packages/analytics/build.config.ts +++ b/packages/analytics/build.config.ts @@ -6,8 +6,8 @@ export default defineBuildConfig({ rootDir: 'modules/analytics', outDir: resolve(__dirname, 'dist'), entries: [ - 'index.ts', - 'client.ts', + { input: 'index.ts', name: 'module' }, + { input: 'client.ts', name: 'index' }, 'types.ts', 'providers/google-analytics-4.ts', 'providers/umami.ts', diff --git a/packages/analytics/entrypoints/background.ts b/packages/analytics/entrypoints/background.ts new file mode 100644 index 000000000..1873a9a5a --- /dev/null +++ b/packages/analytics/entrypoints/background.ts @@ -0,0 +1,4 @@ +import '#analytics'; +import { defineBackground } from 'wxt/sandbox'; + +export default defineBackground(() => {}); diff --git a/packages/analytics/modules/analytics/client-utils.ts b/packages/analytics/modules/analytics/client-utils.ts new file mode 100644 index 000000000..6b6a329a9 --- /dev/null +++ b/packages/analytics/modules/analytics/client-utils.ts @@ -0,0 +1,15 @@ +import type { Analytics, AnalyticsConfig, AnalyticsProvider } from './types'; + +export function defineAnalyticsProvider( + definition: ( + /** The analytics object. */ + analytics: Analytics, + /** Config passed into the analytics module from `app.config.ts`. */ + config: AnalyticsConfig, + /** Provider options */ + options: T, + ) => ReturnType, +): (options: T) => AnalyticsProvider { + return (options) => (analytics, config) => + definition(analytics, config, options); +} diff --git a/packages/analytics/modules/analytics/providers/google-analytics-4.ts b/packages/analytics/modules/analytics/providers/google-analytics-4.ts index 21372522a..39d0e8985 100644 --- a/packages/analytics/modules/analytics/providers/google-analytics-4.ts +++ b/packages/analytics/modules/analytics/providers/google-analytics-4.ts @@ -1,71 +1,73 @@ -import type { AnalyticsProvider, BaseAnalyticsEvent } from '../types'; +import { defineAnalyticsProvider } from '../client-utils'; +import type { BaseAnalyticsEvent } from '../types'; const DEFAULT_ENGAGEMENT_TIME_IN_MSEC = 100; -export interface GoogleAnalyticsProviderOptions { +export interface GoogleAnalytics4ProviderOptions { apiSecret: string; measurementId: string; } export const googleAnalytics4 = - (options: GoogleAnalyticsProviderOptions): AnalyticsProvider => - (_, config) => { - const send = async ( - data: BaseAnalyticsEvent, - eventName: string, - eventProperties: Record | undefined, - ): Promise => { - const url = new URL( - config?.debug ? '/debug/mp/collect' : '/mp/collect', - 'https://www.google-analytics.com', - ); - if (options.apiSecret) - url.searchParams.set('api_secret', options.apiSecret); - if (options.measurementId) - url.searchParams.set('measurement_id', options.measurementId); + defineAnalyticsProvider( + (_, config, options) => { + const send = async ( + data: BaseAnalyticsEvent, + eventName: string, + eventProperties: Record | undefined, + ): Promise => { + const url = new URL( + config?.debug ? '/debug/mp/collect' : '/mp/collect', + 'https://www.google-analytics.com', + ); + if (options.apiSecret) + url.searchParams.set('api_secret', options.apiSecret); + if (options.measurementId) + url.searchParams.set('measurement_id', options.measurementId); - const userProperties = { - language: data.meta.language, - screen: data.meta.screen, - ...data.user.properties, - }; - const mappedUserProperties = Object.fromEntries( - Object.entries(userProperties).map(([name, value]) => [ - name, - value == null ? undefined : { value }, - ]), - ); + const userProperties = { + language: data.meta.language, + screen: data.meta.screen, + ...data.user.properties, + }; + const mappedUserProperties = Object.fromEntries( + Object.entries(userProperties).map(([name, value]) => [ + name, + value == null ? undefined : { value }, + ]), + ); - await fetch(url.href, { - method: 'POST', - body: JSON.stringify({ - client_id: data.user.id, - consent: { - ad_user_data: 'DENIED', - ad_personalization: 'DENIED', - }, - user_properties: mappedUserProperties, - events: [ - { - name: eventName, - params: { - session_id: data.meta.sessionId, - engagement_time_msec: DEFAULT_ENGAGEMENT_TIME_IN_MSEC, - ...eventProperties, - }, + await fetch(url.href, { + method: 'POST', + body: JSON.stringify({ + client_id: data.user.id, + consent: { + ad_user_data: 'DENIED', + ad_personalization: 'DENIED', }, - ], - }), - }); - }; + user_properties: mappedUserProperties, + events: [ + { + name: eventName, + params: { + session_id: data.meta.sessionId, + engagement_time_msec: DEFAULT_ENGAGEMENT_TIME_IN_MSEC, + ...eventProperties, + }, + }, + ], + }), + }); + }; - return { - identify: () => Promise.resolve(), // No-op, user data uploaded in page/track - page: (event) => - send(event, 'page_view', { - page_title: event.page.title, - page_location: event.page.location, - }), - track: (event) => send(event, event.event.name, event.event.properties), - }; - }; + return { + identify: () => Promise.resolve(), // No-op, user data uploaded in page/track + page: (event) => + send(event, 'page_view', { + page_title: event.page.title, + page_location: event.page.location, + }), + track: (event) => send(event, event.event.name, event.event.properties), + }; + }, + ); diff --git a/packages/analytics/package.json b/packages/analytics/package.json index d1facd75e..98d227605 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -14,9 +14,12 @@ "types": "./dist/index.d.mts", "default": "./dist/index.mjs" }, - "./client": { - "types": "./dist/client.d.mts", - "default": "./dist/client.mjs" + "./module": { + "types": "./dist/module.d.mts", + "default": "./dist/module.mjs" + }, + "./types": { + "types": "./dist/types.d.mts" }, "./providers/google-analytics-4": { "types": "./dist/providers/google-analytics-4.d.mts", From be74af40f94ab94824d589b71a433380c4f719a3 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 19:49:02 -0600 Subject: [PATCH 35/48] Add plugin --- packages/analytics/README.md | 12 +++++++----- packages/analytics/build.config.ts | 2 ++ packages/analytics/modules/analytics/index.ts | 6 ++++-- packages/analytics/modules/analytics/plugin.ts | 3 +++ 4 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 packages/analytics/modules/analytics/plugin.ts diff --git a/packages/analytics/README.md b/packages/analytics/README.md index 530f5e2d8..3dcf50c0e 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -48,9 +48,11 @@ Report analytics events from your web extension extension. ## Install Without WXT -You can use this package in non-WXT packages: - -1. Create an `analytics` instance: +1. Install the NPM package: + ```bash + pnpm i @wxt-dev/analytics + ``` +2. Create an `analytics` instance: ```ts // utils/analytics.ts @@ -63,12 +65,12 @@ You can use this package in non-WXT packages: }); ``` -2. Import your analytics module in the background: +3. Import your analytics module in the background to initialize the message listener: ```ts // background.ts import './utils/analytics'; ``` -3. Then use your `analytics` instance to report events: +4. Then use your `analytics` instance to report events: ```ts import { analytics } from '#analytics'; diff --git a/packages/analytics/build.config.ts b/packages/analytics/build.config.ts index 4c52f16fc..2b3fa2246 100644 --- a/packages/analytics/build.config.ts +++ b/packages/analytics/build.config.ts @@ -8,10 +8,12 @@ export default defineBuildConfig({ entries: [ { input: 'index.ts', name: 'module' }, { input: 'client.ts', name: 'index' }, + { input: 'plugin.ts', name: 'wxt-plugin' }, 'types.ts', 'providers/google-analytics-4.ts', 'providers/umami.ts', ], + externals: ['#analytics'], replace: { 'ipmort.meta.env.NPM': 'true', }, diff --git a/packages/analytics/modules/analytics/index.ts b/packages/analytics/modules/analytics/index.ts index 3451a07b5..3d5ba5fe0 100644 --- a/packages/analytics/modules/analytics/index.ts +++ b/packages/analytics/modules/analytics/index.ts @@ -1,6 +1,6 @@ import 'wxt'; import 'wxt/sandbox'; -import { addAlias, defineWxtModule } from 'wxt/modules'; +import { addAlias, addWxtPlugin, defineWxtModule } from 'wxt/modules'; import { resolve } from 'node:path'; import type { AnalyticsConfig } from './types'; @@ -28,7 +28,7 @@ export default defineWxtModule({ 'analytics/index.ts', ); const analyticsModuleCode = ` -import { createAnalytics } from '@wxt-dev/analytics/client'; +import { createAnalytics } from '@wxt-dev/analytics'; import { useAppConfig } from 'wxt/client'; export const analytics = createAnalytics(useAppConfig().analytics); @@ -40,5 +40,7 @@ export const analytics = createAnalytics(useAppConfig().analytics); text: analyticsModuleCode, }); }); + + addWxtPlugin(wxt, '@wxt-dev/analytics/wxt-plugin'); }, }); diff --git a/packages/analytics/modules/analytics/plugin.ts b/packages/analytics/modules/analytics/plugin.ts new file mode 100644 index 000000000..f3ab40766 --- /dev/null +++ b/packages/analytics/modules/analytics/plugin.ts @@ -0,0 +1,3 @@ +import '#analytics'; + +export default () => {}; From b34754b36351d96bc68926d959d36ef47f65345c Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 19:58:08 -0600 Subject: [PATCH 36/48] Cleanup --- packages/analytics/entrypoints/background.ts | 4 --- .../modules/analytics/client-utils.ts | 15 --------- .../analytics/modules/analytics/client.ts | 32 +++++++++++++++---- packages/analytics/modules/analytics/index.ts | 5 ++- .../analytics/providers/google-analytics-4.ts | 2 +- .../modules/analytics/providers/umami.ts | 15 ++++++--- packages/analytics/modules/analytics/types.ts | 2 +- packages/analytics/package.json | 2 +- 8 files changed, 41 insertions(+), 36 deletions(-) delete mode 100644 packages/analytics/entrypoints/background.ts delete mode 100644 packages/analytics/modules/analytics/client-utils.ts diff --git a/packages/analytics/entrypoints/background.ts b/packages/analytics/entrypoints/background.ts deleted file mode 100644 index 1873a9a5a..000000000 --- a/packages/analytics/entrypoints/background.ts +++ /dev/null @@ -1,4 +0,0 @@ -import '#analytics'; -import { defineBackground } from 'wxt/sandbox'; - -export default defineBackground(() => {}); diff --git a/packages/analytics/modules/analytics/client-utils.ts b/packages/analytics/modules/analytics/client-utils.ts deleted file mode 100644 index 6b6a329a9..000000000 --- a/packages/analytics/modules/analytics/client-utils.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { Analytics, AnalyticsConfig, AnalyticsProvider } from './types'; - -export function defineAnalyticsProvider( - definition: ( - /** The analytics object. */ - analytics: Analytics, - /** Config passed into the analytics module from `app.config.ts`. */ - config: AnalyticsConfig, - /** Provider options */ - options: T, - ) => ReturnType, -): (options: T) => AnalyticsProvider { - return (options) => (analytics, config) => - definition(analytics, config, options); -} diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index fcdac8373..f97457a56 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -7,8 +7,8 @@ import type { AnalyticsTrackEvent, BaseAnalyticsEvent, AnalyticsEventMetadata, + AnalyticsProvider, } from './types'; -export * from './client-utils'; const ANALYTICS_PORT = '@wxt-dev/analytics'; @@ -109,14 +109,14 @@ function createBackgroundAnalytics( ]); // Notify providers const event = await getBaseEvent(meta); - if (config?.debug) console.debug('[analytics] identify', event); + if (config?.debug) console.debug('[@wxt-dev/analytics] identify', event); if (await enabled.getValue()) { await Promise.allSettled( providers.map((provider) => provider.identify(event)), ); } else if (config?.debug) { console.debug( - '[analytics] Analytics disabled, identify() not uploaded', + '[@wxt-dev/analytics] Analytics disabled, identify() not uploaded', ); } }, @@ -133,13 +133,15 @@ function createBackgroundAnalytics( title: meta?.title ?? globalThis.document?.title, }, }; - if (config?.debug) console.debug('[analytics] page', event); + if (config?.debug) console.debug('[@wxt-dev/analytics] page', event); if (await enabled.getValue()) { await Promise.allSettled( providers.map((provider) => provider.page(event)), ); } else if (config?.debug) { - console.debug('[analytics] Analytics disabled, page() not uploaded'); + console.debug( + '[@wxt-dev/analytics] Analytics disabled, page() not uploaded', + ); } }, track: async ( @@ -152,13 +154,15 @@ function createBackgroundAnalytics( ...baseEvent, event: { name: eventName, properties: eventProperties }, }; - if (config?.debug) console.debug('[analytics] track', event); + if (config?.debug) console.debug('[@wxt-dev/analytics] track', event); if (await enabled.getValue()) { await Promise.allSettled( providers.map((provider) => provider.track(event)), ); } else if (config?.debug) { - console.debug('[analytics] Analytics disabled, track() not uploaded'); + console.debug( + '[@wxt-dev/analytics] Analytics disabled, track() not uploaded', + ); } }, setEnabled: async (newEnabled) => { @@ -268,3 +272,17 @@ const INTERACTIVE_ROLES = new Set([ 'tab', 'radio', ]); + +export function defineAnalyticsProvider( + definition: ( + /** The analytics object. */ + analytics: Analytics, + /** Config passed into the analytics module from `app.config.ts`. */ + config: AnalyticsConfig, + /** Provider options */ + options: T, + ) => ReturnType, +): (options: T) => AnalyticsProvider { + return (options) => (analytics, config) => + definition(analytics, config, options); +} diff --git a/packages/analytics/modules/analytics/index.ts b/packages/analytics/modules/analytics/index.ts index 3d5ba5fe0..2d8fd8922 100644 --- a/packages/analytics/modules/analytics/index.ts +++ b/packages/analytics/modules/analytics/index.ts @@ -27,12 +27,11 @@ export default defineWxtModule({ wxt.config.wxtDir, 'analytics/index.ts', ); - const analyticsModuleCode = ` -import { createAnalytics } from '@wxt-dev/analytics'; + const analyticsModuleCode = `import { createAnalytics } from '@wxt-dev/analytics'; import { useAppConfig } from 'wxt/client'; export const analytics = createAnalytics(useAppConfig().analytics); - `; +`; addAlias(wxt, '#analytics', analyticsModulePath); wxt.hook('prepare:types', async (_, entries) => { entries.push({ diff --git a/packages/analytics/modules/analytics/providers/google-analytics-4.ts b/packages/analytics/modules/analytics/providers/google-analytics-4.ts index 39d0e8985..66931d7ad 100644 --- a/packages/analytics/modules/analytics/providers/google-analytics-4.ts +++ b/packages/analytics/modules/analytics/providers/google-analytics-4.ts @@ -1,4 +1,4 @@ -import { defineAnalyticsProvider } from '../client-utils'; +import { defineAnalyticsProvider } from '../client'; import type { BaseAnalyticsEvent } from '../types'; const DEFAULT_ENGAGEMENT_TIME_IN_MSEC = 100; diff --git a/packages/analytics/modules/analytics/providers/umami.ts b/packages/analytics/modules/analytics/providers/umami.ts index fc99487f6..bf23ee2af 100644 --- a/packages/analytics/modules/analytics/providers/umami.ts +++ b/packages/analytics/modules/analytics/providers/umami.ts @@ -1,4 +1,4 @@ -import { defineAnalyticsProvider } from '../client-utils'; +import { defineAnalyticsProvider } from '../client'; export interface UmamiProviderOptions { apiUrl: string; @@ -7,15 +7,22 @@ export interface UmamiProviderOptions { } export const umami = defineAnalyticsProvider( - (analytics, config, options) => { - const send = (payload: UmamiPayload) => - fetch(`${options.apiUrl}/send`, { + (_, config, options) => { + const send = (payload: UmamiPayload) => { + if (config.debug) { + console.warn( + '[@wxt-dev/analytics] Debug mode active, skipped uploading event to Umami', + payload, + ); + } + return fetch(`${options.apiUrl}/send`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ type: 'event', payload }), }); + }; return { identify: () => Promise.resolve(), // No-op, user data uploaded in page/track diff --git a/packages/analytics/modules/analytics/types.ts b/packages/analytics/modules/analytics/types.ts index 1278b735c..9a6d35028 100644 --- a/packages/analytics/modules/analytics/types.ts +++ b/packages/analytics/modules/analytics/types.ts @@ -51,7 +51,7 @@ export type AnalyticsProvider = ( page: (event: AnalyticsPageViewEvent) => Promise; /** Upload a custom event */ track: (event: AnalyticsTrackEvent) => Promise; - /** Upload or save information about the user */ + /** Upload information about the user */ identify: (event: BaseAnalyticsEvent) => Promise; }; diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 98d227605..155723918 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -44,7 +44,7 @@ "prepare": "wxt prepare" }, "peerDependencies": { - "wxt": ">=0.19.9" + "wxt": ">=0.19.23" }, "devDependencies": { "@aklinker1/check": "^1.3.1", From fdee7c615cdca843322567afb7c921f0234823c4 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 20:16:13 -0600 Subject: [PATCH 37/48] Cleanup --- packages/analytics/README.md | 2 +- packages/analytics/build.config.ts | 4 +- .../{plugin.ts => background-plugin.ts} | 0 packages/analytics/modules/analytics/index.ts | 42 ++++++++++++------- packages/analytics/package.json | 4 ++ 5 files changed, 35 insertions(+), 17 deletions(-) rename packages/analytics/modules/analytics/{plugin.ts => background-plugin.ts} (100%) diff --git a/packages/analytics/README.md b/packages/analytics/README.md index 3dcf50c0e..f3c7b953e 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -73,7 +73,7 @@ Report analytics events from your web extension extension. 4. Then use your `analytics` instance to report events: ```ts - import { analytics } from '#analytics'; + import { analytics } from './utils/analytics'; await analytics.track('some-event'); await analytics.page(); diff --git a/packages/analytics/build.config.ts b/packages/analytics/build.config.ts index 2b3fa2246..7aecfeb1a 100644 --- a/packages/analytics/build.config.ts +++ b/packages/analytics/build.config.ts @@ -8,14 +8,14 @@ export default defineBuildConfig({ entries: [ { input: 'index.ts', name: 'module' }, { input: 'client.ts', name: 'index' }, - { input: 'plugin.ts', name: 'wxt-plugin' }, + 'background-plugin.ts', 'types.ts', 'providers/google-analytics-4.ts', 'providers/umami.ts', ], externals: ['#analytics'], replace: { - 'ipmort.meta.env.NPM': 'true', + 'import.meta.env.NPM': 'true', }, declaration: true, }); diff --git a/packages/analytics/modules/analytics/plugin.ts b/packages/analytics/modules/analytics/background-plugin.ts similarity index 100% rename from packages/analytics/modules/analytics/plugin.ts rename to packages/analytics/modules/analytics/background-plugin.ts diff --git a/packages/analytics/modules/analytics/index.ts b/packages/analytics/modules/analytics/index.ts index 2d8fd8922..4291c219d 100644 --- a/packages/analytics/modules/analytics/index.ts +++ b/packages/analytics/modules/analytics/index.ts @@ -1,7 +1,7 @@ import 'wxt'; import 'wxt/sandbox'; import { addAlias, addWxtPlugin, defineWxtModule } from 'wxt/modules'; -import { resolve } from 'node:path'; +import { relative, resolve } from 'node:path'; import type { AnalyticsConfig } from './types'; declare module 'wxt/sandbox' { @@ -14,6 +14,16 @@ export default defineWxtModule({ name: 'analytics', imports: [{ name: 'analytics', from: '#analytics' }], setup(wxt) { + // Paths + const wxtAnalyticsFolder = resolve(wxt.config.wxtDir, 'analytics'); + const wxtAnalyticsIndex = resolve(wxtAnalyticsFolder, 'index.ts'); + const clientModuleId = import.meta.env.NPM + ? '@wxt-dev/analytics' + : resolve(wxt.config.modulesDir, 'analytics/client'); + const pluginModuleId = import.meta.env.NPM + ? '@wxt-dev/analytics/background-plugin' + : resolve(wxt.config.modulesDir, 'analytics/background-plugin'); + // Add required permissions wxt.hook('build:manifestGenerated', (_, manifest) => { manifest.permissions ??= []; @@ -23,23 +33,27 @@ export default defineWxtModule({ }); // Generate #analytics module - const analyticsModulePath = resolve( - wxt.config.wxtDir, - 'analytics/index.ts', - ); - const analyticsModuleCode = `import { createAnalytics } from '@wxt-dev/analytics'; -import { useAppConfig } from 'wxt/client'; - -export const analytics = createAnalytics(useAppConfig().analytics); -`; - addAlias(wxt, '#analytics', analyticsModulePath); + const wxtAnalyticsCode = [ + `import { createAnalytics } from '${ + import.meta.env.NPM + ? clientModuleId + : relative(wxtAnalyticsFolder, clientModuleId) + }';`, + `import { useAppConfig } from 'wxt/client';`, + ``, + `export const analytics = createAnalytics(useAppConfig().analytics);`, + ``, + ].join('\n'); + addAlias(wxt, '#analytics', wxtAnalyticsIndex); wxt.hook('prepare:types', async (_, entries) => { entries.push({ - path: analyticsModulePath, - text: analyticsModuleCode, + path: wxtAnalyticsIndex, + text: wxtAnalyticsCode, }); }); - addWxtPlugin(wxt, '@wxt-dev/analytics/wxt-plugin'); + // Ensure analytics is initialized in every context, mainly the background. + // TODO: Once there's a way to filter which entrypoints a plugin is applied to, only apply this to the background + addWxtPlugin(wxt, pluginModuleId); }, }); diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 155723918..f0b8ca9ba 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -18,6 +18,10 @@ "types": "./dist/module.d.mts", "default": "./dist/module.mjs" }, + "./plugin": { + "types": "./dist/plugin.d.mts", + "default": "./dist/plugin.mjs" + }, "./types": { "types": "./dist/types.d.mts" }, From f218c30825a692662c9c4b6c3875090f4554f393 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 20:19:41 -0600 Subject: [PATCH 38/48] Add background if missing --- packages/analytics/modules/analytics/index.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packages/analytics/modules/analytics/index.ts b/packages/analytics/modules/analytics/index.ts index 4291c219d..9af8b89b9 100644 --- a/packages/analytics/modules/analytics/index.ts +++ b/packages/analytics/modules/analytics/index.ts @@ -52,6 +52,23 @@ export default defineWxtModule({ }); }); + // Ensure there is a background entrypoint + wxt.hook('entrypoints:resolved', (_, entrypoints) => { + const hasBackground = entrypoints.find( + (entry) => entry.type === 'background', + ); + if (!hasBackground) { + entrypoints.push({ + type: 'background', + inputPath: 'virtual:user-background', + name: 'background', + options: {}, + outputDir: wxt.config.outDir, + skipped: false, + }); + } + }); + // Ensure analytics is initialized in every context, mainly the background. // TODO: Once there's a way to filter which entrypoints a plugin is applied to, only apply this to the background addWxtPlugin(wxt, pluginModuleId); From 9ad04d325bb9f4010ea7a9d9f6ee41366427ae56 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 20:25:51 -0600 Subject: [PATCH 39/48] Add missing docs --- packages/analytics/modules/analytics/providers/umami.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/analytics/modules/analytics/providers/umami.ts b/packages/analytics/modules/analytics/providers/umami.ts index bf23ee2af..99a4e4914 100644 --- a/packages/analytics/modules/analytics/providers/umami.ts +++ b/packages/analytics/modules/analytics/providers/umami.ts @@ -10,10 +10,7 @@ export const umami = defineAnalyticsProvider( (_, config, options) => { const send = (payload: UmamiPayload) => { if (config.debug) { - console.warn( - '[@wxt-dev/analytics] Debug mode active, skipped uploading event to Umami', - payload, - ); + console.debug('[@wxt-dev/analytics] Sending event to Umami:', payload); } return fetch(`${options.apiUrl}/send`, { method: 'POST', @@ -59,6 +56,7 @@ export const umami = defineAnalyticsProvider( }, ); +/** @see https://umami.is/docs/api/sending-stats#post-/api/send */ interface UmamiPayload { hostname?: string; language?: string; From 829525f824b1d7ac88c9853700740b2300d0f57f Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 20:27:33 -0600 Subject: [PATCH 40/48] Update workflows --- .github/workflows/release.yml | 1 + .github/workflows/sync-releases.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 76e21651d..bef482b96 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,6 +7,7 @@ on: default: wxt type: choice options: + - analytics - auto-icons - i18n - module-react diff --git a/.github/workflows/sync-releases.yml b/.github/workflows/sync-releases.yml index 35f18d26d..40f815b62 100644 --- a/.github/workflows/sync-releases.yml +++ b/.github/workflows/sync-releases.yml @@ -7,6 +7,7 @@ on: default: wxt type: choice options: + - analytics - auto-icons - i18n - module-react From 95369ff2c9720d25b60d7bf6937a05ba658491cb Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 20:29:51 -0600 Subject: [PATCH 41/48] fix prepare script --- packages/analytics/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/analytics/package.json b/packages/analytics/package.json index f0b8ca9ba..0d7b02abc 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -45,7 +45,7 @@ "check": "buildc --deps-only -- check", "build": "buildc -- unbuild", "prepack": "pnpm -s build", - "prepare": "wxt prepare" + "prepare": "buildc --deps-only -- wxt prepare" }, "peerDependencies": { "wxt": ">=0.19.23" From fe8e2ed23bb1c80216cb5e36ea01eeab1288140d Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 20:35:32 -0600 Subject: [PATCH 42/48] Fix build script --- packages/analytics/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 0d7b02abc..a343ec8cf 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -18,9 +18,9 @@ "types": "./dist/module.d.mts", "default": "./dist/module.mjs" }, - "./plugin": { - "types": "./dist/plugin.d.mts", - "default": "./dist/plugin.mjs" + "./background-plugin": { + "types": "./dist/background-plugin.d.mts", + "default": "./dist/background-plugin.mjs" }, "./types": { "types": "./dist/types.d.mts" @@ -42,7 +42,7 @@ "scripts": { "dev": "buildc --deps-only -- wxt", "dev:build": "buildc --deps-only -- wxt build", - "check": "buildc --deps-only -- check", + "check": "pnpm build && check", "build": "buildc -- unbuild", "prepack": "pnpm -s build", "prepare": "buildc --deps-only -- wxt prepare" From 2faba91ddbfc19d58a99cbb57b06ca7986989c17 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 20:36:35 -0600 Subject: [PATCH 43/48] chore(release): analytics-v0.4.0 --- packages/analytics/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/analytics/package.json b/packages/analytics/package.json index a343ec8cf..bd76eaec5 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.3.0", + "version": "0.4.0", "description": "Add analytics to your web extension", "repository": { "type": "git", From c2090d64a034c19115b5f1dbd5880aea8102e646 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 29 Dec 2024 20:42:10 -0600 Subject: [PATCH 44/48] sync deps --- packages/analytics/package.json | 7 +++---- pnpm-lock.yaml | 9 +++------ 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/packages/analytics/package.json b/packages/analytics/package.json index bd76eaec5..d172de245 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -51,12 +51,11 @@ "wxt": ">=0.19.23" }, "devDependencies": { - "@aklinker1/check": "^1.3.1", + "@aklinker1/check": "^1.4.5", "@types/chrome": "^0.0.268", "@types/ua-parser-js": "^0.7.39", - "prettier": "^3.3.2", - "publint": "^0.2.8", - "typescript": "^5.5.2", + "publint": "^0.2.12", + "typescript": "^5.6.3", "unbuild": "^2.0.0", "wxt": "workspace:*" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1553cd1ee..583c6595b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -90,7 +90,7 @@ importers: version: 1.0.40 devDependencies: '@aklinker1/check': - specifier: ^1.3.1 + specifier: ^1.4.5 version: 1.4.5(typescript@5.6.3) '@types/chrome': specifier: ^0.0.268 @@ -98,14 +98,11 @@ importers: '@types/ua-parser-js': specifier: ^0.7.39 version: 0.7.39 - prettier: - specifier: ^3.3.2 - version: 3.3.3 publint: - specifier: ^0.2.8 + specifier: ^0.2.12 version: 0.2.12 typescript: - specifier: ^5.5.2 + specifier: ^5.6.3 version: 5.6.3 unbuild: specifier: ^2.0.0 From 94027fa82e88fa9cc07d0ec62f059f7adb443c1a Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 5 Jan 2025 10:32:57 -0600 Subject: [PATCH 45/48] Update docs --- docs/.vitepress/config.ts | 21 ++-- packages/analytics/README.md | 95 +++++++++++++++++++ packages/analytics/modules/analytics/types.ts | 29 +++--- 3 files changed, 125 insertions(+), 20 deletions(-) diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 53ee29cf8..da1c7f044 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -14,6 +14,7 @@ import { version as i18nVersion } from '../../packages/i18n/package.json'; import { version as autoIconsVersion } from '../../packages/auto-icons/package.json'; import { version as unocssVersion } from '../../packages/unocss/package.json'; import { version as storageVersion } from '../../packages/storage/package.json'; +import { version as analyticsVersion } from '../../packages/analytics/package.json'; const title = 'Next-gen Web Extension Framework'; const titleSuffix = ' – WXT'; @@ -23,6 +24,14 @@ const ogTitle = `${title}${titleSuffix}`; const ogUrl = 'https://wxt.dev'; const ogImage = 'https://wxt.dev/social-preview.png'; +const otherPackages = { + analytics: analyticsVersion, + 'auto-icons': autoIconsVersion, + i18n: i18nVersion, + storage: storageVersion, + unocss: unocssVersion, +}; + // https://vitepress.dev/reference/site-config export default defineConfig({ titleTemplate: `:title${titleSuffix}`, @@ -97,12 +106,12 @@ export default defineConfig({ 'https://github.com/wxt-dev/wxt/blob/main/packages/wxt/CHANGELOG.md', ), ]), - navItem('Other Packages', [ - navItem(`@wxt-dev/storage — ${storageVersion}`, '/storage'), - navItem(`@wxt-dev/auto-icons — ${autoIconsVersion}`, '/auto-icons'), - navItem(`@wxt-dev/i18n — ${i18nVersion}`, '/i18n'), - navItem(`@wxt-dev/unocss — ${unocssVersion}`, '/unocss'), - ]), + navItem( + 'Other Packages', + Object.entries(otherPackages).map(([name, version]) => + navItem(`@wxt-dev/${name} — ${version}`, `/${name}`), + ), + ), ]), ], diff --git a/packages/analytics/README.md b/packages/analytics/README.md index f3c7b953e..aaa300f02 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -172,3 +172,98 @@ export default defineAppConfig({ ``` Example `AnalyticsProvider` implementations can be found at [`./modules/analytics/providers`](https://github.com/wxt-dev/wxt/tree/main/packages/analytics/modules/analytics/providers). + +## User Properties + +User ID and properties are stored in `browser.storage.local`. To change this or customize where these values are stored, use the `userId` and `userProperties` config: + +```ts +// app.config.ts +import { storage } from 'wxt/storage'; + +export default defineAppConfig({ + analytics: { + userId: storage.defineItem('local:custom-user-id-key'), + userProperties: storage.defineItem('local:custom-user-properties-key'), + }, +}); +``` + +To set the values at runtime, use the `identify` function: + +```ts +await analytics.identify(userId, userProperties); +``` + +Alternatively, a common pattern is to use a random string as the user ID. This keeps the actual user information private, while still providing useful metrics in your analytics platform. This can be done very easily using WXT's storage API: + +```ts +// app.config.ts +import { storage } from 'wxt/storage'; + +export default defineAppConfig({ + analytics: { + userId: storage.defineItem('local:custom-user-id-key', { + init: () => crypto.randomUUID(), + }), + }, +}); +``` + +If you aren't using `wxt` or `@wxt-dev/storage`, you can define custom implementations for the `userId` and `userProperties` config: + +```ts +const analytics = createAnalytics({ + userId: { + getValue: () => ..., + setValue: (userId) => ..., + } +}) +``` + +## Auto-track UI events + +Call `analytics.autoTrack(container)` to automatically track UI events so you don't have to manually add them. Currently it: + +- Tracks clicks to elements inside the `container` + +In your extension's HTML pages, you'll want to call it with `document`: + +```ts +analytics.autoTrack(document); +``` + +But in content scripts, you usually only care about interactions with your own UI: + +```ts +const ui = createIntegratedUi({ + // ... + onMount(container) { + analytics.autoTrack(container); + }, +}); +ui.mount(); +``` + +### Enabling/Disabling + +By default, **analytics is disabled**. You can configure how the value is stored (and change the default value) via the `enabled` config: + +```ts +// app.config.ts +import { storage } from 'wxt/storage'; + +export default defineAppConfig({ + analytics: { + enabled: storage.defineItem('local:analytics-enabled', { + fallback: true, + }), + }, +}); +``` + +At runtime, you can call `setEnabled` to change the value: + +```ts +analytics.setEnabled(true); +``` diff --git a/packages/analytics/modules/analytics/types.ts b/packages/analytics/modules/analytics/types.ts index 9a6d35028..d14d59f81 100644 --- a/packages/analytics/modules/analytics/types.ts +++ b/packages/analytics/modules/analytics/types.ts @@ -1,13 +1,13 @@ export interface Analytics { - /** Report a page change */ + /** Report a page change. */ page: (url: string) => void; - /** Report a custom event */ + /** Report a custom event. */ track: (eventName: string, eventProperties?: Record) => void; - /** Save information about the user */ + /** Save information about the user. */ identify: (userId: string, userProperties?: Record) => void; /** Automatically setup and track user interactions, returning a function to remove any listeners that were setup. */ autoTrack: (root: Document | ShadowRoot | Element) => () => void; - /** Calls `config.enabled.setValue` */ + /** Calls `config.enabled.setValue`. */ setEnabled: (enabled: boolean) => void; } @@ -21,19 +21,20 @@ export interface AnalyticsConfig { */ debug?: boolean; /** - * Extension version, defaults to `browser.runtime.getManifest().version`. + * Your extension's version, reported alongside events. + * @default browser.runtime.getManifest().version`. */ version?: string; /** - * Configure how the enabled flag is persisted. Defaults to using `""` in local extension storage. + * Configure how the enabled flag is persisted. Defaults to using `browser.storage.local`. */ enabled?: AnalyticsStorageItem; /** - * Configure how the user Id is persisted + * Configure how the user Id is persisted. Defaults to using `browser.storage.local`. */ userId?: AnalyticsStorageItem; /** - * Configure how user properties are persisted + * Configure how user properties are persisted. Defaults to using `browser.storage.local`. */ userProperties?: AnalyticsStorageItem>; } @@ -47,11 +48,11 @@ export type AnalyticsProvider = ( analytics: Analytics, config: AnalyticsConfig, ) => { - /** Upload a page view event */ + /** Upload a page view event. */ page: (event: AnalyticsPageViewEvent) => Promise; - /** Upload a custom event */ + /** Upload a custom event. */ track: (event: AnalyticsTrackEvent) => Promise; - /** Upload information about the user */ + /** Upload information about the user. */ identify: (event: BaseAnalyticsEvent) => Promise; }; @@ -64,11 +65,11 @@ export interface BaseAnalyticsEvent { } export interface AnalyticsEventMetadata { - /** Identifier of the session the event was fired from */ + /** Identifier of the session the event was fired from. */ sessionId: number | undefined; - /** `Date.now()` of when the event was reported */ + /** `Date.now()` of when the event was reported. */ timestamp: number; - /** `"1920x1080"` */ + /** Ex: `"1920x1080"`. */ screen: string | undefined; /** `document.referrer` */ referrer: string | undefined; From 00352c2eca2dbc68e4d23dc2e991a348e510da54 Mon Sep 17 00:00:00 2001 From: Aaron Date: Sun, 5 Jan 2025 10:34:11 -0600 Subject: [PATCH 46/48] Cleanup --- docs/analytics.md | 1 + packages/analytics/README.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 docs/analytics.md diff --git a/docs/analytics.md b/docs/analytics.md new file mode 100644 index 000000000..6537a274e --- /dev/null +++ b/docs/analytics.md @@ -0,0 +1 @@ + diff --git a/packages/analytics/README.md b/packages/analytics/README.md index aaa300f02..d0355f0d0 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -245,7 +245,7 @@ const ui = createIntegratedUi({ ui.mount(); ``` -### Enabling/Disabling +## Enabling/Disabling By default, **analytics is disabled**. You can configure how the value is stored (and change the default value) via the `enabled` config: From bcd906e51b9621d97ae970a38bd99f4b8d85962e Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 7 Jan 2025 13:34:52 -0600 Subject: [PATCH 47/48] add dependency optimizations automatically --- packages/analytics/modules/analytics/index.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/analytics/modules/analytics/index.ts b/packages/analytics/modules/analytics/index.ts index 9af8b89b9..a6f76562e 100644 --- a/packages/analytics/modules/analytics/index.ts +++ b/packages/analytics/modules/analytics/index.ts @@ -1,6 +1,11 @@ import 'wxt'; import 'wxt/sandbox'; -import { addAlias, addWxtPlugin, defineWxtModule } from 'wxt/modules'; +import { + addAlias, + addViteConfig, + addWxtPlugin, + defineWxtModule, +} from 'wxt/modules'; import { relative, resolve } from 'node:path'; import type { AnalyticsConfig } from './types'; @@ -72,5 +77,15 @@ export default defineWxtModule({ // Ensure analytics is initialized in every context, mainly the background. // TODO: Once there's a way to filter which entrypoints a plugin is applied to, only apply this to the background addWxtPlugin(wxt, pluginModuleId); + + // Fix issues with dependencies + addViteConfig(wxt, () => ({ + optimizeDeps: { + // Ensure the "#analytics" import is processed by vite in the background plugin + exclude: ['@wxt-dev/analytics'], + // Ensure the CJS subdependency is preprocessed into ESM + include: ['@wxt-dev/analytics > ua-parser-js'], + }, + })); }, }); From 150980929f3c4f8325829f89432d89ed2f5dde03 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 7 Jan 2025 13:35:13 -0600 Subject: [PATCH 48/48] chore(release): analytics-v0.4.1 --- packages/analytics/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/analytics/package.json b/packages/analytics/package.json index d172de245..d5ee4f6ee 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "@wxt-dev/analytics", - "version": "0.4.0", + "version": "0.4.1", "description": "Add analytics to your web extension", "repository": { "type": "git",