From ad27e3a947d518585f2995d65496edc8fea9ff83 Mon Sep 17 00:00:00 2001 From: SheetJS Date: Mon, 1 Apr 2024 06:44:10 -0400 Subject: [PATCH] react-native mobile refresh --- .../02-frontend/19-bundler/12-systemjs.md | 14 +- docz/docs/03-demos/03-net/04-email/11-pst.md | 2 +- docz/docs/03-demos/03-net/04-email/index.md | 2 +- .../03-net/08-headless/_category_.json | 4 + .../{08-headless.md => 08-headless/index.md} | 29 +- docz/docs/03-demos/03-net/09-dom.md | 1 + docz/docs/03-demos/12-static/02-gatsbyjs.md | 66 +- .../docs/03-demos/17-mobile/01-reactnative.md | 746 +++++++++++++----- docz/docs/03-demos/20-cli/09-nodesea.md | 84 +- docz/docs/03-demos/23-data/16-postgresql.md | 7 +- docz/docs/03-demos/23-data/25-mongodb.md | 27 +- docz/docs/03-demos/23-data/26-redis.md | 8 +- .../03-demos/32-extensions/02-chromium.md | 191 ++++- docz/docs/03-demos/32-extensions/12-maple.md | 23 +- docz/docs/07-csf/07-features/01-dates.md | 33 +- docz/docs/07-csf/07-features/03-hyperlinks.md | 147 ++-- docz/docs/07-csf/07-features/04-comments.md | 34 +- docz/docs/07-csf/07-features/05-names.md | 79 +- docz/docs/07-csf/07-features/06-nf.md | 14 +- docz/docs/07-csf/07-features/07-vba.md | 55 +- docz/docs/07-csf/07-features/08-rowprops.md | 3 +- docz/docs/07-csf/07-features/09-colprops.md | 3 +- docz/docs/07-csf/07-features/10-visibility.md | 13 +- docz/static/comments/types.png | Bin 0 -> 167191 bytes docz/static/hyperlink/tooltip.png | Bin 0 -> 44217 bytes 25 files changed, 1208 insertions(+), 377 deletions(-) create mode 100644 docz/docs/03-demos/03-net/08-headless/_category_.json rename docz/docs/03-demos/03-net/{08-headless.md => 08-headless/index.md} (91%) create mode 100644 docz/static/comments/types.png create mode 100644 docz/static/hyperlink/tooltip.png diff --git a/docz/docs/03-demos/02-frontend/19-bundler/12-systemjs.md b/docz/docs/03-demos/02-frontend/19-bundler/12-systemjs.md index f2862a3..a0af2be 100644 --- a/docz/docs/03-demos/02-frontend/19-bundler/12-systemjs.md +++ b/docz/docs/03-demos/02-frontend/19-bundler/12-systemjs.md @@ -46,11 +46,11 @@ This demo was tested in the following environments: | Version | Platform | Date | |:----------|:---------|:-----------| -| `0.19.47` | NodeJS | 2023-10-18 | -| `0.20.16` | Browser | 2023-12-04 | -| `0.20.19` | NodeJS | 2023-10-18 | -| `0.21.6` | NodeJS | 2023-10-18 | -| `6.14.2` | NodeJS | 2023-12-04 | +| `0.19.47` | NodeJS | 2024-03-31 | +| `0.20.16` | Browser | 2024-03-31 | +| `0.20.19` | NodeJS | 2024-03-31 | +| `0.21.6` | NodeJS | 2024-03-31 | +| `6.14.3` | NodeJS | 2024-03-31 | ::: @@ -203,7 +203,7 @@ npm init -y 1) Install the dependencies: {`\ -npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz systemjs@6.14.2`} +npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz systemjs@6.14.3`} 2) Download [`SheetJSystem.js`](pathname:///systemjs/SheetJSystem.js) and move @@ -215,7 +215,7 @@ curl -LO https://docs.sheetjs.com/systemjs/SheetJSystem.js :::info pass -The script is handles both old-style and new-style SystemJS loaders. +The script handles old-style and new-style SystemJS loaders. ::: diff --git a/docz/docs/03-demos/03-net/04-email/11-pst.md b/docz/docs/03-demos/03-net/04-email/11-pst.md index 9c509e6..770a2b6 100644 --- a/docz/docs/03-demos/03-net/04-email/11-pst.md +++ b/docz/docs/03-demos/03-net/04-email/11-pst.md @@ -2,7 +2,7 @@ title: Sheets in PST Mailboxes sidebar_label: PST Mailboxes pagination_prev: demos/net/server/index -pagination_next: demos/net/headless +pagination_next: demos/net/headless/index --- import current from '/version.js'; diff --git a/docz/docs/03-demos/03-net/04-email/index.md b/docz/docs/03-demos/03-net/04-email/index.md index 57b603b..152457f 100644 --- a/docz/docs/03-demos/03-net/04-email/index.md +++ b/docz/docs/03-demos/03-net/04-email/index.md @@ -1,7 +1,7 @@ --- title: Electronic Mail pagination_prev: demos/net/server/index -pagination_next: demos/net/headless +pagination_next: demos/net/headless/index --- import current from '/version.js'; diff --git a/docz/docs/03-demos/03-net/08-headless/_category_.json b/docz/docs/03-demos/03-net/08-headless/_category_.json new file mode 100644 index 0000000..456f04c --- /dev/null +++ b/docz/docs/03-demos/03-net/08-headless/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Browser Automation", + "position": 8 +} \ No newline at end of file diff --git a/docz/docs/03-demos/03-net/08-headless.md b/docz/docs/03-demos/03-net/08-headless/index.md similarity index 91% rename from docz/docs/03-demos/03-net/08-headless.md rename to docz/docs/03-demos/03-net/08-headless/index.md index 69f7d1b..ac4a221 100644 --- a/docz/docs/03-demos/03-net/08-headless.md +++ b/docz/docs/03-demos/03-net/08-headless/index.md @@ -1,6 +1,7 @@ --- title: Browser Automation pagination_prev: demos/net/email/index +pagination_next: demos/net/dom --- import current from '/version.js'; @@ -406,7 +407,7 @@ This demo was tested in the following environments: |:-------------|:----------|:-----------| | `darwin-x64` | `2.1.1` | 2024-03-15 | | `win10-x64` | `2.1.1` | 2024-03-24 | - +| `linux-x64` | `2.1.1` | 2024-03-29 | ::: 1) [Download and extract PhantomJS](https://phantomjs.org/download.html) @@ -425,4 +426,30 @@ will be placed in `phantomjs-2.1.1-macosx/bin/` and the command will be: When the script finishes, the file `SheetJSPhantomJS.xlsb` will be created. This file can be opened with Excel. +:::caution pass + +When this demo was last tested on Linux, there were multiple errors. + +``` +This application failed to start because it could not find or load the Qt platform plugin "xcb". +``` + +The environment variable `QT_QPA_PLATFORM=phantom` resolves the issue. There is +a different error after assignment: + +``` +140412268664640:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libproviders.so): libproviders.so: cannot open shared object file: No such file or directory +140412268664640:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244: +140412268664640:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=providers, path=providers +140412268664640:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=providers +``` + +This error is resolved by ignoring SSL errors. The complete command is: + +```bash +env OPENSSL_CONF=/dev/null QT_QPA_PLATFORM=phantom ./phantomjs-2.1.1-linux-x86_64/bin/phantomjs --ignore-ssl-errors=true test.js +``` + +::: + diff --git a/docz/docs/03-demos/03-net/09-dom.md b/docz/docs/03-demos/03-net/09-dom.md index 62a7a29..f84a1f3 100644 --- a/docz/docs/03-demos/03-net/09-dom.md +++ b/docz/docs/03-demos/03-net/09-dom.md @@ -1,5 +1,6 @@ --- title: Synthetic DOM +pagination_prev: demos/net/headless/index --- import current from '/version.js'; diff --git a/docz/docs/03-demos/12-static/02-gatsbyjs.md b/docz/docs/03-demos/12-static/02-gatsbyjs.md index d35204c..bddbf01 100644 --- a/docz/docs/03-demos/12-static/02-gatsbyjs.md +++ b/docz/docs/03-demos/12-static/02-gatsbyjs.md @@ -141,7 +141,7 @@ Consider the following worksheet: Assuming the file name is `pres.xlsx` and the data is stored in "Sheet1", the following nodes will be created: -```js +```js title="GraphQL Nodes" [ { Name: "Bill Clinton", Index: 42, type: "PresXlsxSheet1" }, { Name: "GeorgeW Bush", Index: 43, type: "PresXlsxSheet1" }, @@ -155,7 +155,7 @@ The type is a proper casing of the file name concatenated with the sheet name. The following query pulls the `Name` and `Index` fields from each row: -```graphql +```graphql title="GraphQL Query to pull Name and Index fields from each row" { allPresXlsxSheet1 { # "all" followed by type edges { @@ -172,8 +172,12 @@ The following query pulls the `Name` and `Index` fields from each row: :::note Tested Deployments -This demo was tested on 2023 December 04 against `create-gatsby@3.12.3`. The -generated project used `gatsby@5.12.11` and `react@18.2.0`. +This demo was tested in the following environments: + +| GatsbyJS | Date | +|:---------|:-----------| +| `5.12.1` | 2023-12-04 | +| `4.25.8` | 2024-03-27 | ::: @@ -188,9 +192,26 @@ npx gatsby telemetry --disable 1) Create a template site: ```bash -npm init gatsby -- -y sheetjs-gatsby +npx gatsby new sheetjs-gatsby ``` +:::info pass + +For older Gatsby versions, the project must be built from the starter project. + +For GatsbyJS 4, the starter commit is `6bc4466090845f20650117b3d27e68e6e46dc8d5` +and the steps are shown below: + +```bash +git clone https://github.com/gatsbyjs/gatsby-starter-default sheetjs-gatsby +cd sheetjs-gatsby +git checkout 6bc4466090845f20650117b3d27e68e6e46dc8d5 +npm install +cd .. +``` + +::: + 2) Follow the on-screen instructions for starting the local development server: ```bash @@ -222,6 +243,18 @@ npm i --save gatsby-transformer-excel gatsby-source-filesystem `} +:::info pass + +For older versions of Gatsby, older versions of the dependencies must be used. + +For GatsbyJS 4, the plugin version numbers align with the Gatsby version: + +```bash +npm i --save gatsby-transformer-excel@4 gatsby-source-filesystem@4 +``` + +::: + 5) Make a `src/data` directory, download , and move the downloaded file into the new folder: @@ -253,6 +286,27 @@ module.exports = { } ``` +:::note pass + +If the `plugins` array exists, the two plugins should be added at the beginning: + +```js title="gatsby-config.js (add highlighted lines)" + plugins: [ +// highlight-start + { + resolve: `gatsby-source-filesystem`, + options: { + name: `data`, + path: `${__dirname}/src/data/`, + }, + }, + `gatsby-transformer-excel`, +// highlight-end + // ... +``` + +::: + Stop and restart the development server process (`npm run develop`). ### GraphiQL test @@ -322,7 +376,7 @@ displayed JSON is the data that the component receives: 9) Change `PageComponent` to display a table based on the data: -```jsx title="src/pages/pres.js" +```jsx title="src/pages/pres.js (replace PageComponent)" import { graphql } from "gatsby" import * as React from "react" diff --git a/docz/docs/03-demos/17-mobile/01-reactnative.md b/docz/docs/03-demos/17-mobile/01-reactnative.md index 354586d..46ec4a3 100644 --- a/docz/docs/03-demos/17-mobile/01-reactnative.md +++ b/docz/docs/03-demos/17-mobile/01-reactnative.md @@ -16,6 +16,11 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; +export const r = {style: {color:"red"}}; +export const g = {style: {color:"green"}}; +export const y = {style: {color:"gold"}}; +export const gr = {style: {color:"gray"}}; + [React Native](https://reactnative.dev/) is a mobile app framework. It builds iOS and Android apps that use JavaScript for describing layouts and events. @@ -322,7 +327,7 @@ Xcode and iOS simulators are not available on Windows or Linux. 7) Refresh iOS project by running `pod install` from the `ios` subfolder: ```bash -cd ios; pod install; cd .. +cd ios; pod install; cd - ``` 8) Start the iOS emulator: @@ -363,9 +368,13 @@ npx react-native run-android **iOS Device Testing** -13) Close any Android / iOS emulators. +13) Connect an iOS device using a USB cable. -14) Enable developer code signing certificates[^7]. +If the device asks to trust the computer, tap "Trust" and enter the passcode. + +14) Close any Android / iOS emulators. + +15) Enable developer code signing certificates[^7].
Enabling Code Signing (click to show) @@ -389,13 +398,13 @@ D) Select "All" in the lower bar and ensure a Team is selected in the dropdown:
-15) Install `ios-deploy` through Homebrew: +16) Install `ios-deploy` through Homebrew: ```bash brew install ios-deploy ``` -16) Run on device: +17) Run on device: ```bash npx react-native run-ios @@ -505,6 +514,31 @@ F) In the "Targeted Device Families" row, change the value to "iPhone, iPad". ::: +:::caution pass + +In some test runs, the build failed with a Provisioning message: + +``` +error: Provisioning profile "..." doesn't include the currently selected device "..." (identifier ...). +``` + +This was resolved by manually selecting the target device: + +A) Open the Xcode workspace: + +```bash +open ./ios/SheetJSRNFetch.xcworkspace +``` + +B) Select the project in the left sidebar: + +![Select the project](pathname:///reactnative/xcode-select-project.png) + +C) In the top bar, next to the project name, there will be a gray device icon. +Click on the icon and select the real device from the list. + +::: + ## Local Files :::warning pass @@ -525,9 +559,83 @@ The following table lists tested file plugins. "OS" lists tested platforms |:---------------------------|:-------------------------------|:----:| | `react-native-file-access` | `react-native-document-picker` | `AI` | | `react-native-blob-util` | `react-native-document-picker` | `AI` | -| `rn-fetch-blob` | `react-native-document-picker` | `AI` | -| `react-native-fs` | `react-native-document-picker` | `AI` | -| `expo-file-system` | `expo-document-picker` | ` I` | +| `expo-file-system` | `expo-document-picker` | `AI` | + +### App Configuration + +Due to privacy concerns, apps must request file access. There are special APIs +for accessing data and are subject to change in future platform versions. + +
Technical Details (click to show) + +**iOS** + +iOS applications typically require two special settings in `Info.plist`: + +- `UIFileSharingEnabled`[^8] allows users to use files written by the app. A +special folder will appear in the "Files" app. + +- `LSSupportsOpeningDocumentsInPlace`[^9] allows the app to open files without +creating a local copy. + +Both settings must be set to `true`: + +```xml title="Info.plist (add to file)" + + + + UIFileSharingEnabled + + LSSupportsOpeningDocumentsInPlace + + + CFBundleDevelopmentRegion +``` + +Once the options are set, generated files are visible to users and can be shared +with other apps including "Mail", "Messages", and "Numbers". + +**Android** + +Permissions and APIs have evolved over time. For broadest compatibility, the +following permissions must be enabled in `AndroidManifest.xml`: + +- `READ_EXTERNAL_STORAGE` and `WRITE_EXTERNAL_STORAGE` allow apps to access +files outside of the app scope. These are required for scoped storage access. + +- `android:requestLegacyExternalStorage="true"` enabled legacy behavior in some +older releases. + +The manifest is saved to `android/app/src/main/AndroidManifest.xml`: + +```xml title="android/app/src/main/AndroidManifest.xml (add highlighted lines)" + + + + + + + android:requestLegacyExternalStorage="true" + android:name=".MainApplication" + android:label="@string/app_name" + android:icon="@mipmap/ic_launcher" + android:roundIcon="@mipmap/ic_launcher_round" + android:allowBackup="false" + android:theme="@style/AppTheme"> +``` + +Depending on the Android API level, there are three strategies for writing files: + +- In "legacy" mode (supported in API levels up to 29), files can be written to +the user Downloads or Documents folder directly. + +- Using the `MediaStore` API, files should be copied to a visible location. + +- Using the "Storage Access Framework", the user grants access to a folder and +the app uses SAF APIs to create files and write data. + +
### RN File Picker @@ -541,9 +649,10 @@ The following libraries have been tested: #### `react-native-document-picker` -
Selecting a file (click to hide) +[`react-native-document-picker`](https://react-native-documents.github.io/) +provides a `pickSingle` method for users to select one file. -The setting `copyTo: "cachesDirectory"` must be set: +The file plugins generally require the `copyTo: "cachesDirectory"` option: ```js import { pickSingle } from 'react-native-document-picker'; @@ -557,13 +666,13 @@ const f = await pickSingle({ const path = f.fileCopyUri; // this path can be read by RN file plugins ``` -
- #### `expo-document-picker` -
Selecting a file (click to show) +[`expo-document-picker`](https://docs.expo.dev/sdk/document-picker/) is a picker +that works with other modules in the Expo ecosystem. -When using `DocumentPicker.getDocumentAsync`, enable `copyToCacheDirectory`: +The `getDocumentAsync` method allows users to select a file. The Expo file +plugin requires the `copyToCacheDirectory` option: ```js import * as DocumentPicker from 'expo-document-picker'; @@ -573,45 +682,29 @@ const result = await DocumentPicker.getDocumentAsync({ copyToCacheDirectory: true, type: ['application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'] }); -const path = result.uri; // this path can be read by RN file plugins +const path = result.assets[0].uri; // this path can be read by RN file plugins ``` -
- ### RN File Plugins The following libraries have been tested: -#### `react-native-blob-util` and `rn-fetch-blob` +#### `react-native-blob-util` -:::note Historical Context - -The `react-native-fetch-blob` project was archived in 2019. At the time, there -were a number of project forks. The maintainers blessed the `rn-fetch-blob` -fork as the spiritual successor. - -`react-native-blob-util` is an active fork of `rn-fetch-blob` - -When this demo was last tested, `rn-fetch-blob` and `react-native-blob-util` -both worked with the tested iOS and Android SDK versions. The APIs are identical -for the purposes of working with files. - -::: +[`react-native-blob-util`](https://github.com/RonRadtke/react-native-blob-util) +is the continuation of other libraries that date back to 2016. The `ascii` type returns an array of numbers corresponding to the raw bytes. A `Uint8Array` from the data is compatible with the `buffer` type. -
Reading and Writing snippets (click to hide) - -The snippets use `rn-fetch-blob`. To use `react-native-blob-util`, change the -`import` statements to load the module. +
Reading and Writing snippets (click to hide) _Reading Data_ ```js import * as XLSX from "xlsx"; -import RNFetchBlob from 'rn-fetch-blob'; // or react-native-blob-util +import RNFetchBlob from 'react-native-blob-util'; const { readFile } = RNFetchBlob.fs; const res = await readFile(path, 'ascii'); @@ -624,7 +717,7 @@ On iOS, the URI from `react-native-document-picker` must be massaged: ```js import { pickSingle } from 'react-native-document-picker'; -import RNFetchBlob from 'rn-fetch-blob'; // or react-native-blob-util +import RNFetchBlob from 'react-native-blob-util'; const { readFile, dirs: { DocumentDir } } = RNFetchBlob.fs; const f = await pickSingle({ @@ -649,7 +742,7 @@ _Writing Data_ ```js import * as XLSX from "xlsx"; -import RNFetchBlob from 'rn-fetch-blob'; // or react-native-blob-util +import RNFetchBlob from 'react-native-blob-util'; const { writeFile, readFile, dirs:{ DocumentDir } } = RNFetchBlob.fs; const wbout = XLSX.write(wb, {type:'buffer', bookType:"xlsx"}); @@ -657,14 +750,36 @@ const file = DocumentDir + "/sheetjsw.xlsx"; const res = await writeFile(file, Array.from(wbout), 'ascii'); ``` +_Sharing Files in Android_ + +`copyToMediaStore` uses the `MediaStore` API to share files. + +The file must be written to the device *before* using the `MediaStore` API! + +```js +// ... continuation of "writing data" +const { MediaCollection } = RNFetchBlob; + +/* Copy to downloads directory (android) */ +try { + await MediaCollection.copyToMediaStore({ + parentFolder: "", + mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + name: "sheetjsw.xlsx" + }, "Download", file); +} catch(e) {} +```
#### `react-native-file-access` +[`react-native-file-access`](https://github.com/alpha0010/react-native-file-access) +is a filesystem API that uses modern iOS and Android development patterns. + The `base64` encoding returns strings compatible with the `base64` type: -
Reading and Writing snippets (click to hide) +
Reading and Writing snippets (click to hide) _Reading Data_ @@ -689,40 +804,28 @@ const b64 = XLSX.write(workbook, {type:'base64', bookType:"xlsx"}); await FileSystem.writeFile(DDP + "sheetjs.xlsx", b64, "base64"); ``` -
+_Sharing Files in Android_ -#### `react-native-fs` +`cpExternal` uses the `MediaStore` API to share files. -The `ascii` encoding returns binary strings compatible with the `binary` type: - -
Reading and Writing snippets (click to hide) - -_Reading Data_ +The file must be written to the device *before* using the `MediaStore` API! ```js -import * as XLSX from "xlsx"; -import { readFile } from "react-native-fs"; +// ... continuation of "writing data" -const bstr = await readFile(path, "ascii"); -/* bstr is a binary string */ -const workbook = XLSX.read(bstr, {type: "binary"}); -``` - -_Writing Data_ - -```js -import * as XLSX from "xlsx"; -import { writeFile, DocumentDirectoryPath } from "react-native-fs"; - -const bstr = XLSX.write(workbook, {type:'binary', bookType:"xlsx"}); -/* bstr is a binary string */ -await writeFile(DocumentDirectoryPath + "/sheetjs.xlsx", bstr, "ascii"); +/* Copy to downloads directory (android) */ +try { + await FileSystem.cpExternal(file, "sheetjsw.xlsx", "downloads"); +} catch(e) {} ```
#### `expo-file-system` +[`expo-file-system`](https://docs.expo.dev/sdk/filesystem/) is a filesystem API +that works with other modules in the Expo ecosystem. + :::caution pass Some Expo APIs return URI that cannot be read with `expo-file-system`. This @@ -736,7 +839,7 @@ The [`expo-document-picker`](#expo-document-picker) snippet makes a local copy. The `EncodingType.Base64` encoding is compatible with `base64` type. -
Reading and Writing snippets (click to show) +
Reading and Writing snippets (click to hide) _Reading Data_ @@ -764,17 +867,56 @@ const b64 = XLSX.write(workbook, {type:'base64', bookType:"xlsx"}); await FileSystem.writeAsStringAsync(FileSystem.documentDirectory + "sheetjs.xlsx", b64, { encoding: FileSystem.EncodingType.Base64 }); ``` +_Sharing Files in Android_ + +`StorageAccessFramework` uses the "Storage Access Framework" to share files. + +SAF API methods must be used to request permissions, make files and write data: + +```js +import * as XLSX from "xlsx"; +import { documentDirectory, StorageAccessFramework } from 'expo-file-system'; + +const b64 = XLSX.write(workbook, {type:'base64', bookType:"xlsx"}); +/* b64 is a Base64 string */ +try { + /* request access to a folder */ + const perms = await StorageAccessFramework.requestDirectoryPermissionsAsync(documentDirectory); + /* if the user selected a folder ... */ + if(perms.granted) { + + /* create a new file */ + const uri = perms.directoryUri; + const file = await StorageAccessFramework.createFileAsync(uri, "sheetjsw", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + + /* write data to file */ + await StorageAccessFramework.writeAsStringAsync(file, wbout, { encoding: "base64" }); + } +} catch(e) {} +``` +
### Demo :::note Tested Deployments -Each Android demo was last tested on 2023 September 03 with RN `0.72.6`. The -simulator used Android 13 ("Tiramisu") API 33 on a Pixel 3. +This demo was tested in the following environments: -Each iOS demo was last tested on 2023 September 03 with RN `0.72.6`. The -simulator used iOS 17.0 on an iPhone 15 Pro Max. +**Simulators** + +| OS | Device | RN | Dev Platform | Date | +|:-----------|:------------------|:---------|:-------------|:-----------| +| Android 34 | Pixel 3a | `0.73.6` | `darwin-x64` | 2024-03-31 | +| iOS 17.4 | iPhone 15 Pro Max | `0.73.6` | `darwin-x64` | 2024-03-31 | +| Android 34 | Pixel 3a | `0.73.6` | `win10-x64` | 2024-03-31 | + +**Real Devices** + +| OS | Device | RN | Date | +|:-----------|:------------------|:---------|:-----------| +| iOS 15.5 | iPhone 13 Pro Max | `0.73.6` | 2024-03-31 | +| Android 29 | NVIDIA Shield | `0.73.6` | 2024-03-31 | ::: @@ -782,54 +924,67 @@ simulator used iOS 17.0 on an iPhone 15 Pro Max. There are many moving parts and pitfalls with React Native apps. It is strongly recommended to follow the official React Native tutorials for iOS and Android -before approaching this demo.[^8] Details including Android Virtual Device +before approaching this demo.[^10] Details including Android Virtual Device configuration are not covered here. ::: This example tries to separate the library-specific functions. +**Project Setup** + 1) Create project: ```bash -npx react-native init SheetJSRN --version="0.72.6" +npx react-native init SheetJSRN --version="0.73.6" ``` +On macOS, if prompted to install `CocoaPods`, press `y`. + 2) Install shared dependencies: {`\ cd SheetJSRN curl -LO https://docs.sheetjs.com/logo.png npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz -npm i -S react-native-table-component@1.2.0 react-native-document-picker@8.2.0`} +npm i -S react-native-table-component@1.2.0 react-native-document-picker@9.1.1`} -Refresh iOS project by running `pod install` from the `ios` subfolder: - -```bash -cd ios -pod install -cd .. -``` - 3) Download [`index.js`](pathname:///mobile/index.js) and replace: ```bash curl -LO https://docs.sheetjs.com/mobile/index.js ``` -Start the iOS emulator: +4) Start the Android emulator: ```bash -npx react-native run-ios +npx react-native run-android ``` -You should see the skeleton app: +The app should look like the following screenshot: -![React Native iOS App](pathname:///reactnative/ios1.png) +![React Native Android App](pathname:///reactnative/and1.png) -4) Pick a filesystem library for integration: +:::caution pass +When this demo was last tested on Windows, the build failed with an error: + +``` +> Failed to apply plugin 'com.android.internal.application'. + > Android Gradle plugin requires Java 17 to run. You are currently using Java 11. +``` + +Java 17 must be installed[^11] and the `JAVA_HOME` environment variable must +point to the Java 17 location. + +::: + +Stop the dev server and close the React Native Metro NodeJS window. + +**File Integration** + +5) Pick a filesystem library for integration: @@ -837,7 +992,7 @@ You should see the skeleton app: Install `react-native-blob-util` dependency: ```bash -npm i -S react-native-blob-util@0.19.2 +npm i -S react-native-blob-util@0.19.8 ``` Add the highlighted lines to `index.js`: @@ -864,6 +1019,14 @@ async function writeWorkbook(wb) { const wbout = write(wb, {type:'buffer', bookType:"xlsx"}); const file = RNFetchBlob.fs.dirs.DocumentDir + "/sheetjsw.xlsx"; await RNFetchBlob.fs.writeFile(file, Array.from(wbout), 'ascii'); + + /* Copy to downloads directory (android) */ + try { await RNFetchBlob.MediaCollection.copyToMediaStore({ + parentFolder: "", + mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + name: "sheetjsw.xlsx" + }, "Download", file); } catch(e) {} + return file; } // highlight-end @@ -877,7 +1040,7 @@ const make_width = ws => { Install `react-native-file-access` dependency: ```bash -npm i -S react-native-file-access@3.0.4 +npm i -S react-native-file-access@3.0.7 ``` Add the highlighted lines to `index.js`: @@ -888,7 +1051,6 @@ import { Table, Row, Rows, TableWrapper } from 'react-native-table-component'; // highlight-start import { read, write } from 'xlsx'; import { pickSingle } from 'react-native-document-picker'; -import { Platform } from 'react-native'; import { Dirs, FileSystem } from 'react-native-file-access'; async function pickAndParse() { @@ -902,82 +1064,10 @@ async function writeWorkbook(wb) { const wbout = write(wb, {type:'base64', bookType:"xlsx"}); const file = Dirs.DocumentDir + "/sheetjsw.xlsx"; await FileSystem.writeFile(file, wbout, "base64"); - return file; -} -// highlight-end -const make_width = ws => { -``` + /* Copy to downloads directory (android) */ + try { await FileSystem.cpExternal(file, "sheetjsw.xlsx", "downloads"); } catch(e) {} - - - -Install `rn-fetch-blob` dependency: - -```bash -npm i -S rn-fetch-blob@0.12.0 -``` - -Add the highlighted lines to `index.js`: - -```js title="index.js" -import { Table, Row, Rows, TableWrapper } from 'react-native-table-component'; - -// highlight-start -import { read, write } from 'xlsx'; -import { pickSingle } from 'react-native-document-picker'; -import { Platform } from 'react-native'; -import RNFetchBlob from 'rn-fetch-blob'; - -async function pickAndParse() { - const f = await pickSingle({allowMultiSelection: false, copyTo: "documentDirectory", mode: "open" }); - let path = f.fileCopyUri; - if (Platform.OS === 'ios') path = path.replace(/^.*\/Documents\//, RNFetchBlob.fs.dirs.DocumentDir + "/"); - const res = await (await fetch(path)).arrayBuffer(); // RN >= 0.72 - // const res = await RNFetchBlob.fs.readFile(path, 'ascii'); // RN < 0.72 - return read(new Uint8Array(res), {type: 'buffer'}); -} - -async function writeWorkbook(wb) { - const wbout = write(wb, {type:'buffer', bookType:"xlsx"}); - const file = RNFetchBlob.fs.dirs.DocumentDir + "/sheetjsw.xlsx"; - await RNFetchBlob.fs.writeFile(file, Array.from(wbout), 'ascii'); - return file; -} -// highlight-end - -const make_width = ws => { -``` - - - - -Install `react-native-fs` dependency: - -```bash -npm i -S react-native-fs@2.20.0 -``` - -Add the highlighted lines to `index.js`: - -```js title="index.js" -import { Table, Row, Rows, TableWrapper } from 'react-native-table-component'; - -// highlight-start -import { read, write } from 'xlsx'; -import { pickSingle } from 'react-native-document-picker'; -import { writeFile, readFile, DocumentDirectoryPath } from 'react-native-fs'; - -async function pickAndParse() { - const f = await pickSingle({allowMultiSelection: false, copyTo: "cachesDirectory", mode: "open" }); - const bstr = await readFile(f.fileCopyUri, 'ascii'); - return read(bstr, {type:'binary'}); -} - -async function writeWorkbook(wb) { - const wbout = write(wb, {type:'binary', bookType:"xlsx"}); - const file = DocumentDirectoryPath + "/sheetjsw.xlsx"; - await writeFile(file, wbout, 'ascii'); return file; } // highlight-end @@ -988,12 +1078,6 @@ const make_width = ws => { -:::warning pass - -At the time of testing, Expo Modules were incompatible with Android projects. - -::: - Install `expo-file-system` and `expo-document-picker` dependencies: ```bash @@ -1019,11 +1103,11 @@ import { Table, Row, Rows, TableWrapper } from 'react-native-table-component'; // highlight-start import { read, write } from 'xlsx'; import { getDocumentAsync } from 'expo-document-picker'; -import { documentDirectory, readAsStringAsync, writeAsStringAsync } from 'expo-file-system'; +import { documentDirectory, readAsStringAsync, writeAsStringAsync, StorageAccessFramework } from 'expo-file-system'; async function pickAndParse() { const result = await getDocumentAsync({copyToCacheDirectory: true}); - const path = result.uri; + const path = result.assets[0].uri; const res = await readAsStringAsync(path, { encoding: "base64" }); return read(res, {type: 'base64'}); } @@ -1032,6 +1116,16 @@ async function writeWorkbook(wb) { const wbout = write(wb, {type:'base64', bookType:"xlsx"}); const file = documentDirectory + "sheetjsw.xlsx"; await writeAsStringAsync(file, wbout, { encoding: "base64" }); + + /* Write to documents directory (android) */ + try { + const perms = await StorageAccessFramework.requestDirectoryPermissionsAsync(documentDirectory); + if(perms.granted) { + const uri = perms.directoryUri; + const file = await StorageAccessFramework.createFileAsync(uri, "sheetjsw", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + await StorageAccessFramework.writeAsStringAsync(file, wbout, { encoding: "base64" }); + } + } catch(e) {} return file; } // highlight-end @@ -1042,35 +1136,161 @@ const make_width = ws => { +**Android Testing** -5) Refresh the app: +7) Restart the Android development process: ```bash -cd ios -pod install -cd .. +npx react-native run-android ``` -Once refreshed, the development process must be restarted: +The following app will be shown: + +![React Native Android App](pathname:///reactnative/and1.png) + +:::caution pass + +When this demo was last tested on macOS, the process failed to launch the emulator: + +
+warn Please launch an emulator manually or connect a device. Otherwise app may fail to launch.
+
+ + +**This is a known bug in React Native!** + +If an emulator is installed, run the following command: + +```bash +npx react-native doctor +``` + +Under `Android`, there will be one error: + +
+Android {`\n`}
+{` `} Adb - No devices and/or emulators connected. Please create emulator with Android Studio or connect Android device.
+
+ +Press `f` and a list of available emulators will be shown. Select the emulator +(typically the last line) and press Enter. + +
+ Select the device / emulator you want to use  Emulator Pixel_3a_API_34 (disconnected)
+
+ +The text in green is the name of the virtual device (`Pixel_3a_API_34` in this +example). Run the following command to manually start the emulator: + +```bash +$ANDROID_HOME/tools/emulator -avd Pixel_3a_API_34 +``` + +(replace `Pixel_3a_API_34` with the name of the virtual device) + +To confirm React Native detects the emulator, run the following command again: + +```bash +npx react-native doctor +``` + +::: + +8) Download and open the Downloads folder. + +9) Click and drag `pres.numbers` from the Downloads folder into the simulator. + +10) Click "Import data" and look for `pres.numbers`. + +If the file is not displayed, click the `≡` icon and click "Downloads". + +![pick file Android](pathname:///mobile/rnand2.png) + +11) Select `pres.numbers`. + +The screen should refresh with new contents: + +![read file Android](pathname:///reactnative/and3.png) + +12) Click "Export data". + +:::note pass + +`expo-file-system` on Android will prompt to grant access to a folder. + +Tap the `≡` icon and tap the "Documents" folder with the download icon. + +Tap the 'ALLOW ACCESS TO "DOCUMENTS"' button. + +In the "Allow access" pop, tap "ALLOW". + +::: + +An alert will display the location to the file: + +![write file Android](pathname:///reactnative/and4.png) + +13) Pull the file from the simulator and verify the contents: + +```bash +adb exec-out run-as com.sheetjsrn cat files/sheetjsw.xlsx > /tmp/sheetjsw.xlsx +npx xlsx-cli /tmp/sheetjsw.xlsx +``` + +:::caution pass + +PowerShell mangles binary data in the redirect. + +On Windows, the following commands must be run in the Command Prompt: + +```bash +adb exec-out run-as com.sheetjsrn cat files/sheetjsw.xlsx > sheetjsw.xlsx +npx xlsx-cli sheetjsw.xlsx +``` + +::: + +14) Stop the dev server and close the React Native Metro NodeJS window. + +**iOS Testing** + +:::warning pass + +**iOS testing can only be performed on Apple hardware running macOS!** + +Xcode and iOS simulators are not available on Windows or Linux. + +Scroll down to "Android Device Testing" for device tests. + +::: + +15) Refresh iOS project by running `pod install` from the `ios` subfolder: + +```bash +cd ios; pod install; cd - +``` + +16) Start the iOS development process: ```bash npx react-native run-ios ``` -**iOS Testing** +17) Download and open the Downloads folder. -The app can be tested with the following sequence in the simulator: +18) In the simulator, click the Home icon to return to the home screen. -- Download -- In the simulator, click the Home icon to return to the home screen -- Click on the "Files" icon -- Click and drag `pres.numbers` from a Finder window into the simulator. +19) Click on the "Files" icon to open the app. + +20) Click and drag `pres.numbers` from the Downloads folder into the simulator. ![save file iOS](pathname:///mobile/quasar7a.png) -- Make sure "On My iPhone" is highlighted and select "Save" -- Click the Home icon again then select the `SheetJSRN` app -- Click "Import data" and select `pres`: +21) Make sure "On My iPhone" is highlighted and select "Save". + +22) Click the Home icon again then select the `SheetJSRN` app. + +23) Click "Import data" and select `pres`: ![pick file iOS](pathname:///mobile/rnios2.png) @@ -1078,11 +1298,13 @@ Once selected, the screen should refresh with new contents: ![read file iOS](pathname:///reactnative/ios3.png) -- Click "Export data". You will see a popup with a location: +24) Click "Export data". + +An alert will display the location to the file: ![write file iOS](pathname:///reactnative/ios4.png) -- Find the file and verify the contents are correct: +25) Find the file and verify the contents are correct: ```bash find ~/Library/Developer/CoreSimulator -name sheetjsw.xlsx | @@ -1091,39 +1313,160 @@ find ~/Library/Developer/CoreSimulator -name sheetjsw.xlsx | Once testing is complete, stop the simulator and the development process. -**Android Testing** +**Android Device Testing** -There are no Android-specific steps. Emulator can be started with: +26) Add the highlighted lines to `android/app/src/main/AndroidManifest.xml`: + +```xml title="android/app/src/main/AndroidManifest.xml (add highlighted lines)" + + + + + + + android:requestLegacyExternalStorage="true" + android:name=".MainApplication" + android:label="@string/app_name" + android:icon="@mipmap/ic_launcher" + android:roundIcon="@mipmap/ic_launcher_round" + android:allowBackup="false" + android:theme="@style/AppTheme"> +``` + +There will be two new `uses-permission` tags within the parent `manifest` tag. +The attribute `android:requestLegacyExternalStorage="true"` must be added to the +`application` tag. + +27) Close any Android / iOS simulators. + +Stop the dev server and close the React Native Metro NodeJS window. + +28) Connect an Android device using a USB cable. + +If the device asks to allow USB debugging, tap "Allow". + +29) Build APK and run on device: ```bash npx react-native run-android ``` -![React Native Android App](pathname:///reactnative/and1.png) +30) Download on the device. -The app can be tested with the following sequence in the simulator: +31) Switch back to the "SheetJSRN" app. -- Download -- Click and drag `pres.numbers` from a Finder window into the simulator. -- Click "Import data" and select `pres.numbers`: +32) Tap "Import data" and tap `pres.numbers`. -![pick file Android](pathname:///mobile/rnand2.png) +If the file is not displayed, tap the `≡` icon and tap "Downloads". -Once selected, the screen should refresh with new contents: +The table will refresh with data from the file. -![read file Android](pathname:///reactnative/and3.png) +33) Tap "Export Data". -- Click "Export data". You will see a popup with a location: +:::note pass -![write file Android](pathname:///reactnative/and4.png) +`expo-file-system` on Android will prompt to grant access to a folder. -- Pull the file from the simulator and verify the contents: +Tap the `≡` icon and tap the "Documents" folder with the download icon. + +Tap the 'ALLOW ACCESS TO "DOCUMENTS"' button. + +In the "Allow access" pop, tap "ALLOW". + +::: + +Tap "OK" in the `exportFile` popup. + +34) Switch to the Files app and navigate to the Downloads folder. + +:::note pass + +When testing `expo-file-system`, select "Documents". + +::: + +There will be a new file `sheetjsw.xlsx`. + +35) Close and reopen the "SheetJSRN" app. The data will reset. + +36) Tap "Import data" and tap `sheetjsw.xlsx`. + +If the file is not displayed, tap the `≡` icon and tap "Downloads". + +:::note pass + +When testing `expo-file-system`, select "Documents". + +::: + +The table will refresh with the data from the exported file. + +**iOS Device Testing** + +37) Close any Android / iOS emulators. + +38) Enable file sharing and make the documents folder visible in the iOS app. +Add the following lines to `ios/SheetJSRN/Info.plist`: + +```xml title="ios/SheetJSRN/Info.plist (add to file)" + + + + UIFileSharingEnabled + + LSSupportsOpeningDocumentsInPlace + + + CFBundleDevelopmentRegion +``` + +(The root element of the document is `plist` and it contains one `dict` child) + +39) Enable developer code signing certificates. More details are covered in the +"iOS Device Testing" part of the [Fetch Demo](#fetch-demo) (step 15). + +40) Install `ios-deploy` through Homebrew: ```bash -adb exec-out run-as com.sheetjsrn cat files/sheetjsw.xlsx > /tmp/sheetjsw.xlsx -npx xlsx-cli /tmp/sheetjsw.xlsx +brew install ios-deploy ``` +41) Run on device: + +```bash +npx react-native run-ios +``` + +If the build fails, some troubleshooting notes are included in the "iOS Device +Testing" part of the [Fetch Demo](#fetch-demo) (step 17). + +41) Download on the device. + +42) Switch back to the "SheetJSRN" app. + +43) Tap "Import data" and tap `pres` from the Recents list. + +The table will refresh with data from the file. + +44) Tap "Export Data" and tap "OK" in the `exportFile` popup. + +45) Install the "Numbers" app from the iOS App Store. + +46) Open the "Files" app. Repeatedly tap the `<` button in the top-left corner +to return to the "Browse" view. + +47) Tap "On My iPhone" or "On My iPad". Tap "SheetJSRN" in the list. + +The `sheetjsw` entry in this folder is the generated file. + +48) Hold down the `sheetjsw` item until the menu appears. Select "Share". + +49) In the sharing menu, below a list of contacts, there will be a row of app icons. +Swipe left until the "Numbers" app icon appears and tap the app icon. + +The Numbers app will load the spreadsheet, confirming that the file is valid. + [^1]: Follow the ["React Native CLI Quickstart"](https://reactnative.dev/docs/environment-setup) and select the appropriate "Development OS". [^2]: See ["Array of Arrays" in the API reference](/docs/api/utilities/array#array-of-arrays) [^3]: See ["Array Output" in "Utility Functions"](/docs/api/utilities/array#array-output) @@ -1131,4 +1474,7 @@ npx xlsx-cli /tmp/sheetjsw.xlsx [^5]: React-Native commit [`5b597b5`](https://github.com/facebook/react-native/commit/5b597b5ff94953accc635ed3090186baeecb3873) added the final piece required for `fetch` support. It landed in version `0.72.0-rc.1` and is available in official releases starting from `0.72.0`. [^6]: When the demo was last tested, the Temurin distribution of Java 17 was installed through the macOS Brew package manager by running `brew install temurin17`. [Direct downloads are available at `adoptium.net`](https://adoptium.net/temurin/releases/?version=17) [^7]: See ["Running On Device"](https://reactnative.dev/docs/running-on-device) in the React Native documentation -[^8]: Follow the ["React Native CLI Quickstart"](https://reactnative.dev/docs/environment-setup) for Android (and iOS, if applicable) +[^8]: See [`UIFileSharingEnabled`](https://developer.apple.com/documentation/bundleresources/information_property_list/uifilesharingenabled) in the Apple Developer Documentation. +[^9]: See [`LSSupportsOpeningDocumentsInPlace`](https://developer.apple.com/documentation/bundleresources/information_property_list/lssupportsopeningdocumentsinplace) in the Apple Developer Documentation. +[^10]: Follow the ["React Native CLI Quickstart"](https://reactnative.dev/docs/environment-setup) for Android (and iOS, if applicable) +[^11]: See the [JDK Archive](https://jdk.java.net/archive/) for Java 17 JDK download links. \ No newline at end of file diff --git a/docz/docs/03-demos/20-cli/09-nodesea.md b/docz/docs/03-demos/20-cli/09-nodesea.md index 5625bb9..60f7924 100644 --- a/docz/docs/03-demos/20-cli/09-nodesea.md +++ b/docz/docs/03-demos/20-cli/09-nodesea.md @@ -159,6 +159,7 @@ This demo was tested in the following deployments: | Architecture | NodeJS | Date | |:-------------|:----------|:-----------| | `darwin-x64` | `20.11.1` | 2024-03-17 | +| `win10-x64` | `20.12.0` | 2024-03-26 | | `linux-x64` | `20.11.1` | 2024-03-18 | ::: @@ -224,7 +225,7 @@ local NodeJS platform. 4) Download the test file : ```bash -curl -LO https://sheetjs.com/pres.numbers +curl -o pres.numbers https://sheetjs.com/pres.numbers ``` 5) Run the script and pass `pres.numbers` as the first argument: @@ -257,24 +258,54 @@ node --experimental-sea-config sheet2csv.json ### SEA Injection -8) Create a local copy of the NodeJS binary. On macOS and Linux: +8) Create a local copy of the NodeJS binary: + + + ```bash cp `which node` sheet2csv ``` - - - 9) Remove the code signature. ```bash codesign --remove-signature ./sheet2csv +``` + + + + +In PowerShell, the `Get-Command` command displays the location to `node.exe`: + +```powershell +PS C:\sheetjs-sea> get-command node + +CommandType Name Version Source +----------- ---- ------- ------ +Application node.exe 20.12.0.0 C:\Program Files\nodejs\node.exe + +``` + +Copy the program (listed in the "Source" column) to `sheet2csv.exe`: + +```powershell +PS C:\sheetjs-sea> copy "C:\Program Files\nodejs\node.exe" sheet2csv.exe +``` + +9) Remove the code signature. + +```powershell +signtool remove /s .\sheet2csv.exe ``` +```bash +cp `which node` sheet2csv +``` + 9) Observe that many Linux distributions do not enforce code signatures. @@ -293,6 +324,29 @@ npx -y postject --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2 - ```bash codesign -s - ./sheet2csv +``` + + + + +```bash +npx -y postject --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2 sheet2csv.exe NODE_SEA_BLOB sheet2csv.blob +``` + +11) Resign the binary. + +The following sequence generates a self-signed certificate: + +```powershell +$cert = New-SelfSignedCertificate -Type CodeSigning -DnsName www.onlyspans.net -CertStoreLocation Cert:\CurrentUser\My +$pass = ConvertTo-SecureString -String "hunter2" -Force -AsPlainText +Export-PfxCertificate -Cert "cert:\CurrentUser\My\$($cert.Thumbprint)" -FilePath "mycert.pfx" -Password $pass +``` + +After creating a cert, sign the binary: + +```powershell +signtool sign /v /f mycert.pfx /p hunter2 /fd SHA256 sheet2csv.exe ``` @@ -321,7 +375,7 @@ The program should display the same CSV contents as the script (from step 5) -13) Validate the binary signature. On macOS: +13) Validate the binary signature: ```bash codesign -dv ./sheet2csv @@ -333,6 +387,24 @@ Inspecting the output, the following line confirms ad-hoc signing was used: Signature=adhoc ``` + + + +13) Validate the binary signature: + +```powershell +signtool verify sheet2csv.exe +``` + +If the certificate is self-signed, there may be an error: + +``` +SignTool Error: A certificate chain processed, but terminated in a root + certificate which is not trusted by the trust provider. +``` + +This error is expected. + diff --git a/docz/docs/03-demos/23-data/16-postgresql.md b/docz/docs/03-demos/23-data/16-postgresql.md index d15a6e4..530d788 100644 --- a/docz/docs/03-demos/23-data/16-postgresql.md +++ b/docz/docs/03-demos/23-data/16-postgresql.md @@ -36,8 +36,9 @@ This demo was tested in the following environments: | Postgres | Connector Library | Date | |:---------|:------------------|:-----------| -| `16.0.1` | `pg` (`8.11.3`) | 2023-10-30 | -| `15.5` | `pg` (`8.11.3`) | 2023-12-04 | +| `16.2.1` | `pg` (`8.11.4`) | 2024-03-31 | +| `15.6` | `pg` (`8.11.4`) | 2024-03-31 | +| `14.11` | `pg` (`8.11.4`) | 2024-03-31 | ::: @@ -275,7 +276,7 @@ npm init -y 4) Install the `pg` connector module: ```bash -npm i --save pg@8.11.3 +npm i --save pg@8.11.4 ``` 5) Save the following example codeblock to `PGTest.js`: diff --git a/docz/docs/03-demos/23-data/25-mongodb.md b/docz/docs/03-demos/23-data/25-mongodb.md index b43bc1f..40ed9d2 100644 --- a/docz/docs/03-demos/23-data/25-mongodb.md +++ b/docz/docs/03-demos/23-data/25-mongodb.md @@ -1,6 +1,6 @@ --- title: Sheets with MongoDB -sidebar_label: MongoDB +sidebar_label: MongoDB / FerretDB pagination_prev: demos/cli/index pagination_next: demos/local/index sidebar_custom_props: @@ -24,10 +24,11 @@ to add data from spreadsheets into a collection. This demo was tested in the following environments: -| MongoDB CE | Connector Library | Date | -|:-----------|:--------------------|:-----------| -| `6.0.10` | `mongodb` (`5.7.0`) | 2023-12-04 | -| `7.0.2` | `mongodb` (`5.7.0`) | 2023-12-04 | +| Server | Connector Library | Date | +|:--------------------|:--------------------|:-----------| +| FerretDB `1.21.0` | `mongodb` (`5.9.2`) | 2024-03-30 | +| MongoDB CE `6.0.10` | `mongodb` (`5.7.0`) | 2023-12-04 | +| MongoDB CE `7.0.2` | `mongodb` (`5.7.0`) | 2023-12-04 | ::: @@ -81,7 +82,14 @@ This workbook is typically exported to the filesystem with `writeFile`[^8]. ## Complete Example -0) Install MongoDB 7.0 Community Edition[^9]. The macOS steps required `brew`: +0) Install a MongoDB-compatible server. Options include MongoDB CE[^9] and +FerretDB[^10] + +1) Start a server on `localhost` (follow official instructions). + +
MongoDB CE Setup (click to show) + +For MongoDB 7.0 Community Edition, the macOS steps required `brew`: ```bash brew tap mongodb/brew @@ -89,8 +97,6 @@ brew update brew install mongodb-community ``` -1) Start a MongoDB server on `localhost` (follow official instructions). - :::note pass If `brew` was used to install MongoDB, the following command starts a server: @@ -107,6 +113,8 @@ If Homebrew is configured to use `/opt/homebrew`, the command is: ::: +
+ 2) Create base project and install the dependencies: {`\ @@ -179,4 +187,5 @@ There should be no errors in the terminal. The script will generate the file [^6]: See [`json_to_sheet` in "Utilities"](/docs/api/utilities/array#array-of-objects-input) [^7]: See ["Workbook Helpers" in "Utilities"](/docs/api/utilities/wb) for details on `book_new` and `book_append_sheet`. [^8]: See [`writeFile` in "Writing Files"](/docs/api/write-options) -[^9]: See ["Install MongoDB Community Edition"](https://www.mongodb.com/docs/manual/administration/install-community/#std-label-install-mdb-community-edition) in the MongoDB documentation. \ No newline at end of file +[^9]: See ["Install MongoDB Community Edition"](https://www.mongodb.com/docs/manual/administration/install-community/#std-label-install-mdb-community-edition) in the MongoDB documentation. +[^10]: See ["SQLite Setup with Docker Compose"](https://docs.ferretdb.io/quickstart-guide/docker/#sqlite-setup-with-docker-compose) in the FerretDB documentation. \ No newline at end of file diff --git a/docz/docs/03-demos/23-data/26-redis.md b/docz/docs/03-demos/23-data/26-redis.md index cedd8e3..a5046af 100644 --- a/docz/docs/03-demos/23-data/26-redis.md +++ b/docz/docs/03-demos/23-data/26-redis.md @@ -17,8 +17,10 @@ import CodeBlock from '@theme/CodeBlock'; **Redis has relicensed away from open source!** -The original BSD-3-Clause applies to version `7.2.4`. This discussion applies to -KeyDB and other servers that support the "Redis serialization protocol" (RESP). +The original BSD-3-Clause still applies to version `7.2.4`. + +This demo has been tested with KeyDB and other servers that support the "Redis +serialization protocol" (RESP). ::: @@ -40,7 +42,7 @@ This demo was tested in the following environments: |:--------------|:-------------------|:----------:| | KeyDB `6.3.4` | `redis` (`4.6.13`) | 2024-03-25 | | Redis `6.2.9` | `redis` (`4.6.11`) | 2023-12-04 | -| Redis `7.2.3` | `redis` (`4.6.11`) | 2023-12-04 | +| Redis `7.2.4` | `redis` (`4.6.11`) | 2024-03-26 | ::: diff --git a/docz/docs/03-demos/32-extensions/02-chromium.md b/docz/docs/03-demos/32-extensions/02-chromium.md index b8989b5..1af8385 100644 --- a/docz/docs/03-demos/32-extensions/02-chromium.md +++ b/docz/docs/03-demos/32-extensions/02-chromium.md @@ -4,6 +4,11 @@ pagination_prev: demos/cloud/index pagination_next: demos/bigdata/index --- +import current from '/version.js'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import CodeBlock from '@theme/CodeBlock'; + The [SheetJS Standalone scripts](/docs/getting-started/installation/standalone) can be integrated in a Chromium extension. @@ -14,7 +19,7 @@ tables with a content script and a background script. :::note Tested Deployments -This demo was last tested on 2024 March 11 against Chrome 122. +This demo was last tested on 2024 March 30 against Chrome 122. ::: @@ -131,7 +136,8 @@ for(var i = 0; i < tables.length; ++i) { The demo extension includes multiple features to demonstrate sample usage. Production extensions should include proper error handling. -
Testing Unpacked Extension (click to hide) + + 1) Download the zip for the desired Manifest version: @@ -142,13 +148,186 @@ Production extensions should include proper error handling. 3) Drag and drop the downloaded zip file into the window. -
+
+ + +1) Create a new extension using `create-chrome-ext`[^1]: + +```bash +npm create chrome-ext@latest sheetjs-crx -- --template vanilla-ts +cd sheetjs-crx +npm install +``` + +2) Edit the highlighted lines in `package.json`: + +```js title="package.json" (edit highlighted lines) +{ + "name": "sheetjs-crx", + // highlight-next-line + "displayName": "SheetJS Demo", + "version": "0.0.0", + "author": "**", + // highlight-next-line + "description": "Sample Extension using SheetJS to interact with Chrome", +``` + +3) Edit `manifest.ts` and add to the `permissions` array: + +```ts title="manifest.ts" + permissions: ['sidePanel', 'storage', + "activeTab", + "bookmarks", + "contextMenus", + "downloads", + "tabs" + ], +``` + +4) Install the SheetJS dependency and start the dev server: + +{`\ +curl -o .\public\img\logo-48.png https://docs.sheetjs.com/logo.png +npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz +npm run dev`} + + +The build step will create a `build` subfolder. + +5) Replace `src/popup/index.ts` with the following codeblock: + +```ts title="src/popup/index.ts" +import { version, utils, writeFileXLSX } from 'xlsx'; +import './index.css' + +/* recursively walk the bookmark tree */ +const recurse_bookmarks = (data, tree, path) => { + if(tree.url) data.push({Name: tree.title, Location: tree.url, Path:path}); + var T = path ? (path + "::" + tree.title) : tree.title; + (tree.children||[]).forEach(function(C) { recurse_bookmarks(data, C, T); }); +}; + +const export_bookmarks = () => { + chrome.bookmarks.getTree(function(res) { + var data = []; + res.forEach(function(t) { recurse_bookmarks(data, t, ""); }); + + /* create worksheet */ + var ws = utils.json_to_sheet(data, { header: ['Name', 'Location', 'Path'] }); + + /* create workbook and export */ + var wb = utils.book_new(); + utils.book_append_sheet(wb, ws, 'Bookmarks'); + writeFileXLSX(wb, "bookmarks.xlsx"); + }); +}; + +document.addEventListener('DOMContentLoaded', () => { + const root = document.getElementById('app')! + + const xprt = document.createElement("button"); // sjsdownload + xprt.type = "button"; xprt.innerHTML = "Export Bookmarks"; + root.appendChild(xprt); + xprt.addEventListener("click", export_bookmarks); + + const vers = document.createElement("a"); + vers.innerHTML = "SheetJS " + version; + root.appendChild(vers); + vers.addEventListener("click", () => { chrome.tabs.create({url: "https://sheetjs.com/"}); }); +}); +``` + +6) Replace `src/background/index.ts` with the following codeblock: + +```ts title="src/background/index.ts" +chrome.runtime.onInstalled.addListener(function() { + chrome.contextMenus.create({ + type: "normal", + id: "sjsexport", + title: "Export Table to XLSX", + contexts: ["page", "selection"] + }); + chrome.contextMenus.create({ + type: "normal", + id: "sj5export", + title: "Export All Tables in Page", + contexts: ["page", "selection"] + }); + chrome.contextMenus.onClicked.addListener(function(info/*, tab*/) { + var mode = ""; + switch(info.menuItemId) { + case 'sjsexport': mode = "JS"; break; + case 'sj5export': mode = "J5"; break; + default: return; + } + chrome.tabs.query({active: true, currentWindow: true}, function(tabs){ + chrome.tabs.sendMessage(tabs[0].id, {Sheet:mode}, sjsexport_cb); + }); + }); + + chrome.contextMenus.create({ + id: "sjsabout", + title: "About", + contexts: ["browser_action"] + }); + chrome.contextMenus.onClicked.addListener(function(info/*, tab*/) { + if(info.menuItemId !== "sjsabout") return; + chrome.tabs.create({url: "https://sheetjs.com/"}); + }); +}); + +function sjsexport_cb(wb) { + if(!wb || !wb.SheetNames || !wb.Sheets) { return alert("Error in exporting table"); } + const b64 = XLSX.write(wb, {bookType: "xlsx", type: "base64"}); + chrome.downloads.download({ + url: `data:application/octet-stream;base64,${b64}`, + filename: `SheetJSTables.xlsx` + }) +} +``` + +7) Replace `src/contentScript/index.ts` with the following codeblock: + +```ts title="src/contentScript/index.ts" +import { utils } from 'xlsx'; +var coords = [0,0]; +document.addEventListener('mousedown', function(mouse) { + if(mouse && mouse.button == 2) coords = [mouse.clientX, mouse.clientY]; +}); + +chrome.runtime.onMessage.addListener(function(msg, sender, cb) { + if(!msg || !msg['Sheet']) return; + if(msg.Sheet == "JS") { + var elt = document.elementFromPoint(coords[0], coords[1]); + while(elt != null) { + if(elt.tagName.toLowerCase() == "table") return cb(utils.table_to_book(elt)); + elt = elt.parentElement; + } + } else if(msg.Sheet == "J5") { + var tables = document.getElementsByTagName("table"); + var wb = utils.book_new(); + for(var i = 0; i < tables.length; ++i) { + var ws = utils.table_to_sheet(tables[i]); + utils.book_append_sheet(wb, ws, "Table" + i); + } + return cb(wb); + } + cb(coords); +}); +``` + +8) Open `chrome://extensions/` in the browser and enable Developer mode + +9) Click "Load unpacked" and select the `build` folder within the project. + + +
### Bookmark Exporter
Testing (click to hide) -0) Go to and create a bookmark in the browser. +0) Open in the browser and create a bookmark. 1) Click the Extensions icon (puzzle icon to the right of the address bar) and select "SheetJS Demo". @@ -203,7 +382,7 @@ chrome.bookmarks.getTree(function(res) {
Testing (click to hide) -1) Go to +1) Open in the browser. 2) Right-click anywhere in the page and select "SheetJS Demo" > "Export All Tables in Page" @@ -255,3 +434,5 @@ sequenceDiagram Note over P: Create Data URL P->>U: `chrome.downloads.download` ``` + +[^1]: See the [`create-chrome-ext` package](https://github.com/guocaoyi/create-chrome-ext) for more details. \ No newline at end of file diff --git a/docz/docs/03-demos/32-extensions/12-maple.md b/docz/docs/03-demos/32-extensions/12-maple.md index 32ee9f6..5d58847 100644 --- a/docz/docs/03-demos/32-extensions/12-maple.md +++ b/docz/docs/03-demos/32-extensions/12-maple.md @@ -30,7 +30,7 @@ flowchart LR :::note Tested Deployments -This demo was last tested by SheetJS users on 2023 October 3 in Maple 2023. +This demo was last tested by SheetJS users on 2024 March 31 in Maple 2024. ::: @@ -54,8 +54,8 @@ The extension function ultimately pairs the SheetJS `read`[^2] and `write`[^3] methods to read data from the old file and write a new file: ```js -var wb = XLSX.read(original_file_data, {type: "buffer"}); -var new_file_data = XLSX.write(wb, {type: "array", bookType: "xlsx"}); +var workbook = XLSX.read(original_file_data, { type: "buffer" }); +var new_file_data = XLSX.write(workbook, { type: "array", bookType: "xlsx" }); ``` The extension function will receive a file name and perform the following steps: @@ -81,8 +81,9 @@ flowchart LR ### C Extensions -Maple C extensions are shared libraries or DLLs that use special Maple methods -for parsing arguments and returning values. +Maple extensions are shared libraries or DLLs that use special Maple methods for +parsing arguments and returning values. They are typically written in the C +programming language. To simplify the flow, the new function will take one argument (the original file name) and return one value (the new file name). @@ -125,7 +126,7 @@ with(ExcelTools); Import(SheetToXLSX("pres.numbers")) ``` -0) Ensure "Windows Subsystem for Linux" (WSL) and Visual Studio are installed. +0) Install "Windows Subsystem for Linux" (WSL)[^5] and Visual Studio[^6]. 1) Open a new "x64 Native Tools Command Prompt" window and create a project folder `c:\sheetjs-maple`: @@ -137,11 +138,11 @@ cd sheetjs-maple ``` 2) Copy the headers and `lib` files from the Maple folder to the project folder. -For example, using Maple 2023 on Windows x64: +For example, using Maple 2024 on Windows x64: ```powershell -copy "C:\Program Files\Maple 2023\extern\include\"*.h . -copy "c:\Program Files\Maple 2023\bin.x86_64_WINDOWS"\*.lib . +copy "C:\Program Files\Maple 2024\extern\include\"*.h . +copy "c:\Program Files\Maple 2024\bin.x86_64_WINDOWS"\*.lib . ``` 3) Run `bash` to enter WSL @@ -206,4 +207,6 @@ The result will show the data from `pres.numbers` [^1]: See ["ExcelTools"](https://www.maplesoft.com/support/help/Maple/view.aspx?path=ExcelTools) in the Maple documentation. [^2]: See [`read` in "Reading Files"](/docs/api/parse-options) [^3]: See [`write` in "Writing Files"](/docs/api/write-options) -[^4]: See ["C OpenMaple and ExternalCalling Application Program Interface (API)"](https://www.maplesoft.com/support/help/maple/view.aspx?path=OpenMaple%2FC%2FAPI) in the Maple documentation. \ No newline at end of file +[^4]: See ["C OpenMaple and ExternalCalling Application Program Interface (API)"](https://www.maplesoft.com/support/help/maple/view.aspx?path=OpenMaple%2FC%2FAPI) in the Maple documentation. +[^5]: In a PowerShell terminal window, run `wsl --install Ubuntu` +[^6]: See [the Visual Studio website](https://visualstudio.microsoft.com/#vs-section) for download links. In the Visual Studio Installer, install the "Desktop development with C++" workflow. \ No newline at end of file diff --git a/docz/docs/07-csf/07-features/01-dates.md b/docz/docs/07-csf/07-features/01-dates.md index 760419c..b128f75 100644 --- a/docz/docs/07-csf/07-features/01-dates.md +++ b/docz/docs/07-csf/07-features/01-dates.md @@ -6,8 +6,7 @@ sidebar_position: 1 import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -
- File Format Support (click to show) +
File Format Support (click to show) Dates are a core concept in nearly every spreadsheet application in existence. Some legacy spreadsheet apps only supported dates. Others supported times as a @@ -254,7 +253,7 @@ if(!(wb?.Workbook?.WBProps?.date1904)) { } ``` -:::note Why does the 1904 date system exist? +
Why does the 1904 date system exist? (click to show) 1900 was not a leap year. For the Gregorian calendar, the general rules are: - every multiple of 400 is a leap year @@ -268,13 +267,13 @@ the `@date` function: ``` @date(0,2,28) -> 59 // Lotus accepts 2/28/1900 @date(0,2,29) -> 60 // <--2/29/1900 was not a real date -@date(0.2,30) -> ERR // Lotus rejects 2/30/1900 +@date(0,2,30) -> ERR // Lotus rejects 2/30/1900 ``` Excel extends the tradition in the default date system. The 1904 date system starts the count in 1904, skipping the bad date. -::: +
### Relative Epochs @@ -292,6 +291,8 @@ of universal time. ## How Files Store Dates and Times +
Technical Details (click to show) + XLS, XLSB, and most binary formats store the raw date codes. Special number formats are used to indicate that the values are intended to be dates/times. @@ -310,6 +311,8 @@ Numbers uses a calendar date system, but records pure time values as if they are absolute times in 1904 January 01. It is spiritually equivalent to the 1904 mode in Excel and other spreadsheet applications. +
+ ## How JavaScript Engines Understand Time JavaScript provides a `Date` object which represents an *absolute* time. Under @@ -632,4 +635,22 @@ A single `Array#map` operation can create a fixed dataset: ```js const new_rows = rows.map(({birthday, ...rest}) => ({birthday: new Date(birthday), ...rest})) -``` \ No newline at end of file +``` + +The `Date` constructor interprets the dates in local time. + +:::caution pass + +Excel and other spreadsheet software do not typically support dates before 1900. +If there are dates before the threshold, it is strongly recommended to pass +strings instead of `Date` objects. + +::: + +:::warning pass + +JavaScript string to `Date` conversion is "implementation-dependent" and may +misinterpret some date formats. When designing APIs, it is strongly recommended +to pass ISO 8601 strings when possible. + +::: diff --git a/docz/docs/07-csf/07-features/03-hyperlinks.md b/docz/docs/07-csf/07-features/03-hyperlinks.md index 4d7f6b3..b506932 100644 --- a/docz/docs/07-csf/07-features/03-hyperlinks.md +++ b/docz/docs/07-csf/07-features/03-hyperlinks.md @@ -4,8 +4,7 @@ sidebar_label: Hyperlinks sidebar_position: 3 --- -
- File Format Support (click to show) +
File Format Support (click to show) Traditional spreadsheet software, including Excel, support "Cell Links". The entire cell text is clickable. @@ -31,17 +30,34 @@ and writers apply the hyperlink to the entire cell text.
-Hyperlinks are stored in the `l` key of cell objects. The `Target` field of the -hyperlink object is the target of the link, including the URI fragment. Tooltips -are stored in the `Tooltip` field and are displayed when hovering over the text. +Spreadsheet hyperlinks are clickable references to other locations. They serve +the same role as the HTML `` tag. + +Spreadsheet applications can process "internal" (cells, ranges, and defined +names) and "external" (websites, email addresses, and local files) references. + +SheetJS hyperlink objects are stored in the `l` key of cell objects. Hyperlink +objects include the following fields: + +- `Target` (required) describes the reference. +- `Tooltip` is the tooltip text. Tooltips are shown when hovering over the text. For example, the following snippet creates a link from cell `A1` to with the tip `"Find us @ SheetJS.com!"`: ```js -ws["A1"].l = { Target: "https://sheetjs.com", Tooltip: "Find us @ SheetJS.com!" }; +/* create worksheet with cell A1 = "https://sheetjs.com" */ +var ws = XLSX.utils.aoa_to_sheet([["https://sheetjs.com"]]); + +/* add hyperlink */ +ws["A1"].l = { + Target: "https://sheetjs.com", + Tooltip: "Find us @ SheetJS.com!" +}; ``` +![Cell A1 is a hyperlink with a custom tooltip](pathname:///hyperlink/tooltip.png) + :::note pass Following traditional software, hyperlinks are applied to entire cell objects. @@ -60,11 +76,26 @@ general hyperlink styling. ::: + +## External Hyperlinks + +Spreadsheet software will typically launch other programs to handle external +hyperlinks. For example, clicking a "Web Link" will open a new browser window. + +### Web Links + +HTTP and HTTPS links can be used directly: + +```js +ws["A2"].l = { Target: "https://docs.sheetjs.com/docs/csf/features/hyperlinks#web-links" }; +ws["A3"].l = { Target: "http://localhost:7262/yes_localhost_works" }; +``` +
Live Example (click to hide) ```jsx live /* The live editor requires this function wrapper */ -function ExportSimpleLink(props) { return (
- -
Extract all links from a file (click to show) - -The following example iterates through each worksheet and each cell to find all -links. The table shows sheet name, cell address, and target for each link. - -```jsx live -function SheetJSParseLinks(props) { - const [rows, setRows] = React.useState([]); - - return ( <> - { - let rows = []; - /* parse workbook */ - const file = e.target.files[0]; - const data = await file.arrayBuffer(); - const wb = XLSX.read(data); - - const html = []; - wb.SheetNames.forEach(n => { - var ws = wb.Sheets[n]; if(!ws) return; - var ref = XLSX.utils.decode_range(ws["!ref"]); - for(var R = 0; R <= ref.e.r; ++R) for(var C = 0; C <= ref.e.c; ++C) { - var addr = XLSX.utils.encode_cell({r:R,c:C}); - if(!ws[addr] || !ws[addr].l) continue; - var link = ws[addr].l; - rows.push({ws:n, addr, Target: link.Target}); - } - }); - setRows(rows); - }}/> - - {rows.map(r => ())} -
SheetAddressLink Target
{r.ws}{r.addr}{r.Target}
- ); -} -``` - -
- -## Remote Links - -HTTP and HTTPS links can be used directly: - -```js -ws["A2"].l = { Target: "https://docs.sheetjs.com/docs/csf/features/hyperlinks" }; -ws["A3"].l = { Target: "http://localhost:7262/yes_localhost_works" }; -``` +### Mail Links Excel also supports `mailto` email links with subject line: @@ -145,7 +129,7 @@ address input in the form never leaves your machine.** ```jsx live /* The live editor requires this function wrapper */ -function ExportRemoteLink(props) { +function ExportRemoteLink() { const [email, setEmail] = React.useState("ignored@dev.null"); const set_email = React.useCallback((evt) => setEmail(evt.target.value)); @@ -172,7 +156,7 @@ function ExportRemoteLink(props) {
-## Local Links +### Local Links Links to absolute paths should use the `file://` URI scheme: @@ -195,7 +179,7 @@ Relative Paths have undefined behavior in the SpreadsheetML 2003 format. Excel ::: -## Internal Links +## Internal Hyperlinks Links where the target is a cell or range or defined name in the same workbook ("Internal Links") are marked with a leading hash character: @@ -218,7 +202,7 @@ The defined name `SheetJSDN` points to the range `A1:B2` in the second sheet. ```jsx live /* The live editor requires this function wrapper */ -function ExportInternalLink(props) { return (
+#### Miscellany + +
Extract all links from a file (click to show) + +The following example iterates through each worksheet and each cell to find all +links. The table shows sheet name, cell address, and target for each link. + +```jsx live +function SheetJSParseLinks() { + const [rows, setRows] = React.useState([]); + + return ( <> + { + let rows = []; + /* parse workbook */ + const file = e.target.files[0]; + const data = await file.arrayBuffer(); + const wb = XLSX.read(data); + + const html = []; + wb.SheetNames.forEach(n => { + var ws = wb.Sheets[n]; if(!ws) return; + var ref = XLSX.utils.decode_range(ws["!ref"]); + for(var R = 0; R <= ref.e.r; ++R) for(var C = 0; C <= ref.e.c; ++C) { + var addr = XLSX.utils.encode_cell({r:R,c:C}); + if(!ws[addr] || !ws[addr].l) continue; + var link = ws[addr].l; + rows.push({ws:n, addr, Target: link.Target}); + } + }); + setRows(rows); + }}/> + + {rows.map(r => ())} +
SheetAddressLink Target
{r.ws}{r.addr}{r.Target}
+ ); +} +``` + +
+ [^1]: The primary SheetJS DOM parsing methods are [`table_to_book`, `table_to_sheet`, and `sheet_add_dom`](/docs/api/utilities/html#html-table-input) [^2]: HTML strings can be written using [`bookType: "html"` in the `write` or `writeFile` methods](/docs/api/write-options) or by using the [dedicated `sheet_to_html` utility function](/docs/api/utilities/html#html-table-output) \ No newline at end of file diff --git a/docz/docs/07-csf/07-features/04-comments.md b/docz/docs/07-csf/07-features/04-comments.md index 2a8acda..16a315c 100644 --- a/docz/docs/07-csf/07-features/04-comments.md +++ b/docz/docs/07-csf/07-features/04-comments.md @@ -1,11 +1,10 @@ --- +title: Cell Comments and Notes +sidebar_label: Cell Comments sidebar_position: 4 --- -# Cell Comments - -
- File Format Support (click to show) +
File Format Support (click to show) Comments and Notes have evolved over the years. @@ -42,6 +41,33 @@ The letter R (R) marks features parsed but not written in the format.
+Comments and notes are cell annotations. Cells with comments or notes are marked +with a small triangle or `¬` in the upper-right corner. + +Excel notes are standalone text boxes with adjustable background colors and +support for rich text. Historically people "replied" to comments by adding text +to the end of existing comments. + +Excel comments are simple text boxes that allow users to enter plain text. Users +can reply to comments. + +The following screenshot shows a spreadsheet with comments and a note. + +- The note is associated with cell A1 (the cell with the red triangle). It has +a green gradient background fill. +- The comments are associated with cell A2 (the cell with the blue `¬`). There +are 2 comments from different authors. A "Reply" box appears below the thread. + +![Excel comments and notes](pathname:///comments/types.png) + +:::info pass + +Google Sheets "notes" do not currently support rich text or background colors. + +Apple Numbers supports "comments" but does not support "notes". + +::: + ## Basic Structure Cell comments are objects stored in the `c` array of cell objects. diff --git a/docz/docs/07-csf/07-features/05-names.md b/docz/docs/07-csf/07-features/05-names.md index eff370c..956d871 100644 --- a/docz/docs/07-csf/07-features/05-names.md +++ b/docz/docs/07-csf/07-features/05-names.md @@ -1,11 +1,9 @@ --- +title: Defined Names sidebar_position: 5 --- -# Defined Names - -
- File Format Support (click to show) +
File Format Support (click to show) Defined names have evolved over the decades, with new features added over time: @@ -27,7 +25,62 @@ no way to specify a Unicode defined name in the SYLK format.
-`wb.Workbook.Names` is an array of defined name objects which have the keys: +Defined names (sometimes called "named ranges") are labeled references to cells, +ranges, constants or formulae. Meaningful labels can make formula expressions +more readable and more robust to worksheet changes. + +
Why are Defined Names useful? (click to show) + +For example, the `NPV` formula function calculates the net present value of a +series of cashflows. In large workbooks, raw data will be stored in separate +worksheets and the interest rate will be stored in a separate "Model Parameters" +worksheet. Formulae may have references to multiple sheets: + +``` +=NPV('Model Parameters'!B2,Data!B2:F2) + ^^^^^^^^^^^^^^^^^^^^^ --- interest rate +``` + +A defined name `Interest` referencing `'Model Parameters'!B2` would greatly +simplify the formula: + +``` +=NPV(Interest,Data!B2:F2) + ^^^^^^^^ --- interest rate +``` + +Judicious use of Defined Names generally lead to fewer formula errors. + +
+ +## Storage + +The `Workbook` property of SheetJS workbook objects store workbook attributes. +The `Names` property of `Workbook` is an array of SheetJS defined name objects. + +:::caution pass + +Parsers do not always create the `Names` array or `Workbook` structure. Code +should test for the existence of the defined names array before use: + +```js +var wb = XLSX.utils.book_new(); + +/* ensure the workbook structure exists */ +/* highlight-start */ +if(!wb.Workbook) wb.Workbook = {}; +if(!wb.Workbook.Names) wb.Workbook.Names = []; +/* highlight-end */ + +/* add a new defined name */ +wb.Workbook.Names.push({ Name: "MyData", Ref: "Sheet1!$A$1:$A$2" }); +``` + +::: + +## Defined Name Object + +SheetJS defined name objects support the following properties: | Key | Name in app | Description | |:----------|:------------|:---------------------------------------------------| @@ -36,19 +89,7 @@ no way to specify a Unicode defined name in the SYLK format. | `Ref` | "Refers To" | A1-Style Reference (`"Sheet1!$A$1:$D$20"`) | | `Comment` | "Comment" | Comment (for supported file formats) | -Parsers do not always create the `Names` structure. Parsing and writing code -should test for the existence of the defined names array before use: - -```js -/* ensure the workbook structure exists */ -if(!wb.Workbook) wb.Workbook = {}; -if(!wb.Workbook.Names) wb.Workbook.Names = []; - -/* add a new defined name */ -wb.Workbook.Names.push({ Name: "MyData", Ref: "Sheet1!$A$1:$A$2" }); -``` - -## Ranges +### Ranges Defined name references in formulae are internally shifted to the cell address. For example, given the defined name @@ -73,7 +114,7 @@ The recommended approach is to fix the rows and columns of the reference: { Name: "MyData", Ref: "Sheet1!$A$1:$A$2" } // absolute reference ``` -## Scoped Defined Names +### Scope Excel allows two sheet-scoped defined names to share the same name. However, a sheet-scoped name cannot collide with a workbook-scope name. Workbook writers diff --git a/docz/docs/07-csf/07-features/06-nf.md b/docz/docs/07-csf/07-features/06-nf.md index 4166401..f586d37 100644 --- a/docz/docs/07-csf/07-features/06-nf.md +++ b/docz/docs/07-csf/07-features/06-nf.md @@ -1,11 +1,9 @@ --- +title: Number Formats sidebar_position: 6 --- -# Number Formats - -
- File Format Support (click to show) +
File Format Support (click to show) Modern applications separate "content" from "presentation". A value like `$3.50` is typically stored as the underlying value (`3.50`) with a format (`$0.00`). @@ -64,19 +62,19 @@ To simplify editing, the applications will store the underlying values and the number formats separately. For example, `$3.50` will be represented as the value `3.5` with a number format that mandates a `$` sigil and 2 decimal places. -Number format metadata can be attached to each cell object in the `z` property: +The `z` property of SheetJS cell objects stores the number format metadata: ```js /* set the format of cell B2 to "0.00%" */ worksheet["B2"].z = "0.00%"; ``` -When requested, the cell formatted text will be stored in the `w` property. +When requested, the formatted text will be stored in the `w` property. ## Live Demo -This example generates a worksheet with common number formats. -The number formats are explicitly assigned: +This example generates a worksheet with common number formats. The number +formats are explicitly assigned: ```js /* assign number formats */ diff --git a/docz/docs/07-csf/07-features/07-vba.md b/docz/docs/07-csf/07-features/07-vba.md index 543f14d..6ea04ff 100644 --- a/docz/docs/07-csf/07-features/07-vba.md +++ b/docz/docs/07-csf/07-features/07-vba.md @@ -1,4 +1,5 @@ --- +title: VBA and Macros sidebar_position: 7 --- @@ -7,13 +8,10 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; -# VBA and Macros +
File Format Support (click to show) -
- File Format Support (click to show) - -Note that XLSX does not support macros. The XLSM file format is nearly -identical to XLSX and supports macros. +XLSX does not support macros. The XLSM file format is nearly identical to XLSX +and supports macros. | Formats | Basic | Storage Representation | |:--------|:-----:|:-----------------------------------| @@ -27,13 +25,39 @@ no way to embed VBA in the XLSX format.
-VBA Macros are stored in a special data blob that is exposed in the `vbaraw` -property of the workbook object when the `bookVBA` option is `true`. They are -supported in `XLSM`, `XLSB`, and `BIFF8 XLS` formats. The supported format -writers automatically insert the data blobs if it is present in the workbook and -associate with the worksheet names. +Visual Basic for Applications (VBA) is a scripting platform embedded in Excel. +Users can include user-defined functions and macro code within spreadsheets. -:::note pass +The `vbaraw` property of the SheetJS workbook object is an encoded data blob +which includes the VBA macros and other metadata. + +The SheetJS `read` and `readFile` methods do not pull VBA metadata by default. +If the `bookVBA` option is set to true, the `vbaraw` blob is created. + +```js +var workbook = XLSX.read(data, { bookVBA: true }); +var encoded_vba_blob = workbook.vbaraw; +``` + +The SheetJS `write` and `writeFile` methods will save the `vbaraw` blob if it is +present in the workbook object and if the output file format supports macros. + +```js +workbook.vbaraw = encoded_vba_blob; +XLSX.writeFile(workbook, "SheetJSNewMacro.xlsm"); +``` + +:::info pass + +Newer versions of Excel support a new JavaScript API for writing user-defined +functions. Those addins are not stored in the spreadsheet files. + +[The "Excel JavaScript API" demo](/docs/demos/extensions/excelapi) covers usage +of SheetJS libraries within the API. + +::: + +:::tip pass The `vbaraw` property stores raw bytes. [SheetJS Pro](https://sheetjs.com/pro) offers a special component for extracting macro text from the VBA blob, editing @@ -89,7 +113,7 @@ function SheetJSVBAFormula() { return ( ); } ``` @@ -129,7 +153,7 @@ XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1"); workbook.vbaraw = blob; /* create an XLSM file and try to save to SheetJSVBANeu.xlsm */ -XLSX.writeFile(workbook, "SheetJSVBANeu.xlsm", { bookVBA: true }); +XLSX.writeFile(workbook, "SheetJSVBANeu.xlsm"); })(); ``` @@ -214,7 +238,6 @@ To ensure the writers export the VBA blob: - The output format must support VBA (`xlsm` or `xlsb` or `xls` or `biff8`) - The workbook object must have a valid `vbaraw` field -- The `write` or `writeFile` call must include the option `bookVBA: true` This example uses [`vbaProject.bin`](pathname:///vba/vbaProject.bin) from the [sample file](pathname:///vba/SheetJSVBAFormula.xlsm): @@ -241,7 +264,7 @@ function SheetJSVBAPrepared() { return ( ); } ``` diff --git a/docz/docs/07-csf/07-features/08-rowprops.md b/docz/docs/07-csf/07-features/08-rowprops.md index cb8cb50..b6c84a8 100644 --- a/docz/docs/07-csf/07-features/08-rowprops.md +++ b/docz/docs/07-csf/07-features/08-rowprops.md @@ -3,8 +3,7 @@ title: Row Properties sidebar_position: 8 --- -
- File Format Support (click to show) +
File Format Support (click to show) By default, all rows in a workbook are "Visible" and have a standard height. diff --git a/docz/docs/07-csf/07-features/09-colprops.md b/docz/docs/07-csf/07-features/09-colprops.md index b4e9362..5a2f173 100644 --- a/docz/docs/07-csf/07-features/09-colprops.md +++ b/docz/docs/07-csf/07-features/09-colprops.md @@ -3,8 +3,7 @@ title: Column Properties sidebar_position: 9 --- -
- File Format Support (click to show) +
File Format Support (click to show) By default, all columns in a workbook are "Visible" and have a standard width. diff --git a/docz/docs/07-csf/07-features/10-visibility.md b/docz/docs/07-csf/07-features/10-visibility.md index e68a2d8..0e0abf1 100644 --- a/docz/docs/07-csf/07-features/10-visibility.md +++ b/docz/docs/07-csf/07-features/10-visibility.md @@ -3,8 +3,7 @@ title: Sheet Visibility sidebar_position: 10 --- -
- File Format Support (click to show) +
File Format Support (click to show) By default, all sheets in a workbook are "Visible". The standard "Hidden" state is controlled through the context menu in the sheet tab bar. The "Very Hidden" @@ -20,13 +19,13 @@ state is controlled through the "Visibility" property in the VBA editor.
-Excel enables hiding sheets in the lower tab bar. The sheet data is stored in -the file but the UI does not readily make it available. +Excel can hide sheet tabs from the lower tab bar. The sheet data is stored in +the file but the tabs are not displayed until they are unhidden. -Standard "hidden" sheets are revealed in the "Unhide" menu. +Standard "hidden" sheets are listed in the "Unhide" menu. -Excel also has "very hidden" sheets which cannot be revealed in the menu. They -are only accessible in the VB Editor! +Excel "very hidden" sheets cannot be revealed in the menu. They are only visible +in the Visual Basic Editor! ## Storage diff --git a/docz/static/comments/types.png b/docz/static/comments/types.png new file mode 100644 index 0000000000000000000000000000000000000000..13795a6f506349a06d0f79997b7b8f3b1371d2d8 GIT binary patch literal 167191 zcmZU(1ymf*vN((cPawe^g1Zx(MS}$h?(Po3bpt_yC&Aqz1Pksg!7UIxgoMR|yDZD@ z&Y$1C_q}(|_w_k_x~99Tdb+#1rmCjmUu&s6!KcPYLqmI_rmCcihKAXXhK9j{i~Z0u z>!;9-hKB#uMN#p!nxZ1(>o;DGF76I!XsYoUSvdN7`^0bmu3dfjLCnO+dc~&7{x{CX_1XFS|pT&31!@97BIlpAlcOdc)xH(D$1Sgbz{xGlI{ z3-+DPzdQMT=d=s?3(VvY$T{KLH@(uQW7NoHPJMh~H_Fb^q$cwg18V^t{V8s%I>8}_IC|hhmZXr{mvJ@>OVQE zR59)*q$Lo0I^<3`O36)O0p(4G3HhUR4v}HC^-Rn!_q9nbGwv?uO1EB07!gZ3q&Ewf zDva6&sYA@4RUcXLJh`B$q51qf)bPgYhI@m1dAD2{hx?X~^3aNBCuL_U#ps5O_#P)| zc!*=mK_X(pv}p?0p+{U;b$@0$S-1ZCH^S|ozi@ZNUQt9VB?(2#KmGa~Tj)8?Hsf2l z4{u3_BsPN;ok)Y49WHl1Ews?Spy+n6ePPAblGh*566l9b+11RfvPtI#<72Ajw(Hw5 zK(idh#=%KVy;JZ+qgBT!UP`{>aYFkXh-ohQTz|}0B}{P{4_6LL)H;fg@-3cm6t8#` zcTg1nBRSk?MG=<%S5FnF?QIHXVq(5N#xJ2<8hFVOcl?#)W&mCM@e^;1=>g>qe6e*x z>8OCcsH`724AyA!Pl**&DBly>zR!OC;yv?#e9uQTmdEi*#2;8#$UZXR+dprj<$S6B z;f+0xZVatL%5$fWld3cqX!~*@AKS+$NaN;Svwca;EhEt(oKRMrb@s!~O_-Ly{DI*o zY8q=;dOsU-#S=o-`>w5we>Q@4UEiB0|JgM8=(lt4jSeMqe619-B<_KXO)ekN4mNXw z6Y_exTl`xp?IGba_a5Fg5{9JIZv^MQXNl)EXFIT7SO_8*!5fCtM+6kevF|-|$EANH z`@HajdbS1!OFD4?$pJ0}ZXm8jG?5b1N97jAu4nJ!@rL|1F*dn24Q+YPA2%ldR6An- zs4B@q^NE5ppM`Pf1HM|G+PzwpnwXkJxwbu7)AN;&w5nPx8sm4{x)-t+oEMsJ#Dd?J zY6+GFy&m9Xnh2Yqp5Rj_*^#VB6p~vkHhtaud3M3?K**JAcX4o-I6lq|0%uT!0IU9c&cDSPWL6Y)%m#F+{EIvYC2KMvtkRiG3pEosl4 zj$9wH(eMTOhT|IECBC`(#lAA6a$Frraau{UR+aqUcs|Qz)4(q$=6^i8DEzFFolP_Hhq#5wS;l(G{-bq zJ;nL)N&?LqO@>^ZDRD;^$Gj=iDcM}J?9rSC0WX2m#vg6#X4@wEX3}ltW^m)_#@d!1 z59O9kV+Ui8)-Ic5({AG`6C-1*c6kqT50)2Z9>3V0vUO;G(E6P3J(KA;+4{Y;uI>1% z-Ac^L&Z_9o-a=OZ$UbMc~v(i(|)9m+&Pj)`;G}kn1U{rU} zJ@GBcNs)}X%o}OKP{h8=Va`V9OtaIcVV3i9i!{mJq~1rCQa!(VSJu?lK%wpTly|sc zT;YXxxv+$=!21B-x{m$d$luEmHxX|jl8{tsqBW*9DsVpd1NbA@?X9ESE4kqQdAY6r zh5m#7KE|wKEP1CWyl*An4x>)bukREh$RPYfy!JX{cdt#I^__$FngtF8f{o|x{oagi zU#Br>3+6Eu%snOCK%8A~XfyFJ?JCh0spnG*w%Q(Cs>Y4QeB{+h`fQ?eUn;9~uiOwH zL25@;_TDAMAhCenjO<=;8dT3xFB4&lD23JFb>V%A9#PV@b>BQ0Lb;&NztB3&JrU~l zhX0`=7vBBeA*~naxI2~Byx@rENTx` zv(XVN-?PA~po;YJtMZVFdhKJ)OEqrIP}U8#30AMUck}I4;3?dhpJ{^GR9Pl@%G2r- zl5C6Vj;b>=FS2F40`jI_8gjT5Z3#MU<;ws=UOLO zXVLD+w2Y9pU7_Dv>)q0&(e&vw!PLD2dPJnR{G~!!%p`dL&nDlmMoN?Xo{r%7@lR2# z78>s|Pb^+qWHufxhutGSA#NwPGR4UDD0q1H5YPAG4ipv@f;W1}3c1^W_khlY-JyC_ zMxIdwKQWmFXB$5sFRDwu<6uIY5R`!w>5z2rKcrq3U0otxR$pGT_}lF175`GrQtdB% z{P0lhs~D+A5X5I`WU^wqVpU8>jPpfnR!oMd=Zil*0hh}cEf-Q`5oE1qS8cVwFMMj8 z55If#t-7`ydhxHJcAUm%ZUY}3e{K+I;Q6EWJE!~duKuS5FT^{d`d3|dchGIS%$&?| zDD!P$!<(8fzpC23G(}D8KA-#ng#*c$C>&}xcej9rCf7uw0r}x?6mg#j|H#mWbll92gPibTNsVq0QwMxsaB?4FP2=1J!rq^#0GeFyfGhSloQ+_ZGG$?~bC z3j(`bG_re2VDn1eF5&akWI442iP)VZZKkE<1NLerKITc3P=fP4=0DyTR$<$aCwZ z_2O5I6pvFe#9z&(lfG>aMcczed+Z)ttVNSk9fw7AM?}d6)0P$rBueC#d*T@Tl6j5l z?Yrz;eyrD*Sd`R>rQzuQZ*&j#5K_`LMDgf14FbG4xLs>RVlLl64)!U41{7!!NMEEv zxd2#)X!uVnX4zLBOxOemV>L%jO*F0t7#HmkIyD;B1BCuiWzlK=7k-J(frk07ehf6U zI2W`>|H09EX#Xi69_l|d|86lq#iHRnJP|+Cpkj>w!N%+_#{3@`gXLiiO9U+X@LzJ#H}*5ud?jh;<-uoT?`7-2 z7v$mn4<9t?Ajt>N!@1Pwf>*>qM2C|rH;+-?+SdrnSKU2P^7+Y-Aw7CVMJDnifBRTYV! zV!W{|xA`)dD_r;YSkmb)Zcb{lC4NXQGvp;}x8FJ>bgx&$ZK*cuQPn8$qeRi==4jCAdSF3p_@$y_>UrY2fG>El|w8Es?L36Y8-a}CuvHYWH0br%kpQN50o6q{|9p;bA${Q$s?vQ(8*KME&-ucs8cZr_ zUJW+L!wB~mM>cQlHQFt`*qiutqo)WVHRm+P!uvz=|3=mo|EkprFmcWf)Ase9mpF$^fwhLgIOib2hWT?V7*mfF zOhm!r%&htS!!{vGilX>P^iapnUQQjFlfPKJ(k~!x^N(gzcLuCS&!5RY(`^Ir{-9`5 z=rS;BCn_T9YC>AdJau#{o*HpWwLg+Mq-|W-sYBBz+n^*!$lTg3BbD}1E~ZJ5O70>^5Hi;VsH-QZXCF4dq*`HmY^Td)vtD8}#vCG{T2(Zm8s2JuX$u^&6xzciTvID`|t{VOu@O((!4RwxgC(sgyS z7<^?8T}|eK&vcA_8wU?sp+OhLzX}X_08d6!=p4%RLU)Ot1EyBGv-rge> zT2O<&_p@wD0AW@&IXmmOe_;J_$ALdtRmMDC4Isd5`y7C62ta!imvI9CN^c?xXv>xWBG6=Df$QAC5xkM-=n$i`=7i4K0% zk<>}jc^c}_=#e>`$-bXU{jRzUt=YVW0z2hRowT(0q5OUGrlzcV#;TQ`@MLW~+awP_ zdg{KBRx~N{D5B`YSQ4ZUSwt8y0=(;ocKT*b2!6=qGqFXe(4bz!v(8l7Q5tZf6Tsn~ zdll-O0@73gINDQ)hC-mfS(V_)<(DrTFn)yjkv`&6hUSEPSe9S- zneO?>+lD|veQO7lcIgyYl^8{a^P zUZ7ObQ&@jYU6im0918anE99t)QejXFJP_3e{$(+g9s|jcTT~t-5zd}kD>s;bxRHlP;5ZdkQ>Uu-;_(hvGkcxQ>_~#Z zrag?W{2NYKJ7)@-s zSwGm>#=^=X)pfDtJJgRQ7Lq=CT>Q02d}|gIqbp->`M`!o;%CCnJr~d zT@#Q$>hiD_#bE~~tTtd-XBzOVW3NYW28&eLF&I}xW#ccPlxSWa=Nfdoya#v(Hhj_n zJ6d^%15U5x9rMH`KWf_n%*7WsvWxbOW_hW9yjYi0~(# zzHrgi=(?;Ys#>gBQi|iWEfEthdcO-(K8Y&He_CIlQX+RQ_&7}N1xJ#I!C%`C;s`_~ z1NYH(-G_KIAj8N~?av>J{Wdc%5?-wl;O=jcMjE@e*0NRLpN>I>=bX_T>14C{>K~>~ zR&4NO!wqR&bQ@b99CIPt<(z2#8=Tv#_vnMiwC&dGwkM8FhQ&XNYQ)u*kxs+yoyr>V z;Q|K6pW@!73Vd+tbdjlgciPnbox_qYY#klc4k*$Lb5Vl6gs!X*y7hN|Ej>>_8c!C?1`Jx}a&w`%i=8B8Q^e&c? zK@9_ZkPL-iG+sPx|-2)a-^TysMK*0_e9gve-oo8k{x(45DoB z5Yrx=cxP}0qRLP}YX_Q(VP3stkqJ)tRgPb#fGjm~H2{%lqAE3YLy~m|C!o<$w(-Dl zHF$9uLiDZF;xY?|KOM@>0G>+tzB#Pn5RXvpLdDX!knbCCdVyf5G?%~AbXr%lscS`s zb*42Po(8krv}x;-7+vj8U-vwYcpP=g7}1mdtF|n&LB)vE%CiJ+AU&h6$q4KAd%BeQ z-E1yd>`!)mzVK*=6P!W(E69U5xxuoLiPy9g^J_NVwEdPuEX>J)?mKHVIUYapduscS z!yIlJ_0-QMipZ?fSva-%WKp^iwW{%)^N+2Y)-fY+O?quNZR*J8RU*~H6B;7beO@np zrSJCmJQq1*xh0Ed-S4%~1zo^! zlUpk2VD$ue?D(b=u={vr{H4(rKq2>s&PiOpMPa2(4mr^SRFIo}^TgfEN)fL$gKFi8 z+|f59=}iEU6e@l)etOe438*Rt-^}Twx@P1GJa1!L1bw0{jU;;!L3lA za`5MuQC2PpAG!qpf(8_YMzO(4F!|pfI;N)2AcCB5q&g}N>#u8B6B#jtT z+&>>(s#?lix`G084dp9F=ALwvi8_lC(9)?MZpNs)of_|yzjyLMHc5>Mo42N=uJ-FV zcnKo-KPl-@pk-)FC;gtZS7%1ri`%s|@%PH+%_xU^&nxGxAScbTtLQK_w}7N8?Q z*wl&(zvldEKK%CCvcs&@QXh8uZ`&IX|01!Q0TU2iq%p12~p8;*+Qj->RYA~|Bp2ur|tkgx0MSAq8& zt3_;xmt{aT|8Be*+{gG%1aAyh-B*yo-Ng;PVfY2?KATJHBkzXZSUiFx%K<=3JcURbS_}$;*uy$Q5Dkr$>|ro~WOg}N;B-MD?uZT9G{g_iFSz`uGS7x;MFw<=C>tL! zamx3(s$OGX1}v&c*)mWD1!J3J4;_hwe0s#E`BmhQ(0cCgii5+J_~xBqy8Cl-6sCD1 zizEFp|4af-*rtHlaaxfJwJT2g%+7OWiS-)B2=@FN9EA9ul25`7PMEn&8283te>*Y9 z&%tjqFlNK1+a95m#sRBkttua55oqa&rqZnd$g3=M}5mmTnyWv((Rp?14Bx0j9#;}}< zh!R)}xu@eC5ti9cH28@G4Lbeqh`tAH0W0f7yi_W2WuVFV!%?WTi#!5;zPwDebKYJI zy4(DGs~ESYdD<5`M$&MN$l6&vg9@L6m33vgs@SWTt;G2`V!3x9=Ny0|R?v#j_LIeI z?vK=EH!P$5u=BrvB6{?)BA?8}vw&+Tuw)}+@5$iWW1Q>i%;f5Ry}4;)xk9eVbtk&l(eJl(_oruf|g)zEjN4j){?Sw7I=exCmTKgN9fSe9vMk;&9>HK~6ySsi;JhdaK z3LXJ>DAf_Bk)Lr~f77kVuaA_HKUzdO)g}W&yIQB(-ZD&j;LWeGXYkg3@cBu6rlz)L zvVPeuP!~sZ@LVL?AqTTvD9kL1%#sL_g{-Z5oB9?P)v_)8ZS>2h+dmj!r^ZKJx+Veg z8+InU_WPWYXOFTwcwRfeF&QE=y=vFP6ahHAif<+DSjJ_9LE{<5)%Z0LYC-wOwLM%| z=fimwN(07D&&(bUQt54x^z)}3T~(kKsT zpXS!|oZm`I$0AxsFrt_A9_-H(o$Evi6zkE0kU|=Ln8(@Wsf7O*!ztbkueAum~mIN=P zl-0S68m@Jg+bri-?_!eToPa#bZpc6Du3Puk|WZ0X}juH(y(YWZn!$TN>37i zmPw?{kN`U85#fNmN^OoLLQ%9v~F`It*iqIi4d}9zX z@Ma~h0>Y%|OQ2W}e1#d#bM#L%diOse{-I>`=#aSYW_>pEU;Yy9Er_jZuSWdWmr<*= z#kjZ|;N;|_#lL1GduKAe^2I-5B2#DFs9U4OCiupD4#|M>ZQEiH0g)k1$PBc>r27wF zC;v}+Bx$c4vDxcqix7vS3UCc}He#&v-D&6uB1kmz#DmTyP9J!pF>+&nJp38?rivi-ET;-9bNk zJ>egS4@c@xq4!pRfGK1(+>=#lL8^=|Dv$d6DPkJ3$Zw(WWK4GAo6i}&D&#T->YKgg zrq2S_or?_mG-v4Owa&;TaP|mW8v%<)?{J+R?)F}EzB8kLyimd0KOP=93*|qfx&tE;`K0Nu;JuimZrP+VOdxyHy z2J*=`4m{h4KMlo3!uFH%p}gS=Hp(!uJlL`c zt`ZLk%5g+2U_bR0y}_}0P%$3Z}#NtH&Dr94RtP$xS=xF>vSxwhLXd+ zN!X^)At?NIX75iSr$XOz1%>~F+bzcR2{<;5JDn#!x%Dez)+npegiLw7bI=x0BD@PxS+c85GP3Z`$ac~j zxabIkM)0;qyqfHDst~O)>XapSE;_g8v};>;&8b_^n~^RPX*|N0f8Gw_Nf2 zSW8LCnMpvhRcr%?(-Y8E(Z=cTM!mbMD)rSl0(|gf=J)+vw}wTOnRhv8T?udTanz8&X9!jkJ1d~VMg==<8)7RRmVq$F90+Me7~dFMPR)WMt+ z;7-&iHE?r7_=TsHw}#Y1mw}lFOzosdr+O&n{&@-HJt)OC(Ts3SmkLn7CW(=tbcnwYj1f>He%3^c=i2c-uXr_;VZ=Uu zmpMk!AWotNy0he=HhGqu{%pEIML?IZoF6gmWwwDl%HUU#6hg;dvJq1lo;&QZLS zXs)Ncx1GzoOD(j%q2)TzZ#{6YxB_xN0xhr3vdEOZUzssIe@FT{3nREXZ?8#Z;?#FW zCaY2_=hITHS(a(Jv+UIv^Zq|U+}pKKudd5!sk&{Ut;x0Go15ePQ^;k3{;X^%1JKBz zt=l@s5PqjoubfG*$7`Yn-v{6EhYLAd8j8_|MPpG)U!9VXU`G&5WUKE>>M~`!7oNX- z7D$s;8bd|{3;*I9T|<8CA{2{eE1+C$7#X#x95GDcpzw6+EIh7m-4WJ!n|1UxNMrov z)2I6f8)ZX9k0AXFHW(H20%yWjtn&m_VBcY*X1$3aQVQ*6 zhxsb9IY`_U6lQ>+rXoPC zepWNuZm22@WAYCOG?~b*S+vd%WL#X{F+(Vyv6)DinhV<8o(de1Iy;ZF{+K2rOCua;0kGG~d9AEPsn z6TIL|GLtJ+eyTN|=vT{IQOBtTLHOP?6YKIG6CFETQ&WXr<(`99Z^U#TVze{$fR!^` z%r9^p;|N=c`HQbBovWhjo5zYhd+~9Q;Jxs@Z+c3zLCGaYfhN>-A`qkow_DDfa|VtC zJ&Z6Dn!a0#mX-lIi1<=ilB6s+{g`2}B~jfF?aNF@f}+KTO?~;r$cEq)9t5%}!861^ zEiw4riD_Y3Xyoyi7-|XFj4SkX+0(EPl&)j-z})$#Ox2bVDr$v%GvS1KHDm0HK^Sz-o_{r#Y1A+41eb8vxS-O$W?S# zkP0u6*XFYw{85NpH;y!*6?Pi9&e})=k3d6LoPXlaz)0%TFBHzK!L;{Zv|?vaD@W#R z;r1|cMlJLr#jhONc|83T#HgF&>n!&65XL8^oj$9W3L9pE>3P00Bm7!-!6UtoPB&E8NZ3n`$1JKx!bo2p=p! zv#pL$X+^lK7s2@z4Hjw8XCd6D5XSxQk|6^~SGNsUl%k4dI6x68D}`B0C= zn|3VLIg-RU?bJ*;^gmcbnX2oUT!T0a7p-yUFVQ}0Zo*QOzKtfRNk4jaHggu~&jpi} zfs3475<8Qwr>&bkCH8E>7N{va2hqT$t}J`s#MI*QVtESgTX#iCX>o)Kl^L^9b>s*Q zZt`pY%{XL02=fO2B{F@Q${uA!`@!MBjPkOn@~!2+!uO!$&Lk(xyUoTO1l+2XhyppI zP8P14A{gKe5IO9-ulve<8kO2n22Pi%5v$@(#kxLLGg}N>({JutUCEvyA@qIhhBH{f-h1b6t;-VpF#MDcQ{K2P-wy=Y(@=1?`08}KdBR@*ABn@S<}&pYThJ3j^o6A zDmW~X`EAxJO@$>s;=8#}F1XwZBZ|lY>=84uKo4869i%=qU&_f+GU%*0$jQsp)FhM3 z!(&26{O;8Lu0d~NV=^?QlH|`TdXaLq?@#u3vF7Ku4cRc8nElTUb|f}36cPIAjh}$R zKR)6mW9S{QxIJdq#*F8)-w|xCUv4y(z?b<|a zX}Emo+x=n)GN-1j-I>-u4l5l&gp$dGMvB}vLsQT=rymy=Hu6|67!i(}e|QX~A5KM# zX}sv=LYSKGD0n&0&bVAhgMI{;U6TmF&u-~{7FhV==}ty@ zFK*t|oQ;Xwg9_hIa zs%oyB*l6xXAM2m>-Wt0otQgSP=kUBTJ$@&ExGST*Q|q3*X4p?JdX%2sn<>W*{%In3!f)0S7HmbZ^ViGpaxJ`sxi1l-zp6Y6Mcy z9SHYanQZwpk_l-7@}`rLtEd6#9@E$3tLnD>-;bjtOCz#t-G6jhUrbE!pu|V?r^l@k z4(8Ka{LpPh#OKhUUvdX?oIlLOyfnF6#g<8GqA9kTM%~%cGYE}5m=$3R0=~b^f%H>Y zCPJ%gl^KNK0EV@D(48qKx>1B~yw5sFv z`D{42e92UFLM75#>p33lk%FQ7i&D;DcQ)q;OotaA^+^Cw%n5%+WHOO<|u7#l2y z0vz@`?gCn+ zqG-B8TOOHGiF*l&iQrYiN4;>{Mf+QWK8`Ij=%f+9O^i#t9=651@^Zlwu}dw$W@6wd z54&xCWD4~K8{mI6=d}u_d|nuXwl4RMgXvQ-eT4nfGx;cI!T!}5Sr$B)0T*#bPhwou zmYMckvIydD(R?o?4yqyMx-Y!`VxPJ^r`fTR=%Jl``;SJ}-fvyD)Cm0JZ`1|!-ODY* z%Ip(r9OqzkB^7E(#p(2C%yo8N`(b9?~(`S)*Jn0tZv0mJj7p`(ap9dM_6-~O` zi`ONbSz}&2eJ07|#~A&ZZT;P-%Lc{QNbSzGh`%0Hf1frI;DM`14`T?(SxBu3xct2> zw$^nPz+~VI=tRv~>@=?CIyRk*!fT%qEB+sHgc{<06ENnm973iPmlEk|9N8Mo&wtr? zR?2XJXu^1xXH(=B6fZJisiH^?nB6K$B^^awLrEZU*-!Fb8K`=&wu>qOJNe(uZtV?o zWl5dD>0D+CtK@87MN9+Pu_lCB_a5+PP9pzg!+M2Ox~`r&R|@t?{v#YD)3 z<|s;@5EpXX8pkM>#1WRU18wc?d7c^S4o{KQlb;Ek-3BCoGn5970UIElJqBDkC`M6| zA!#-Ig$|u*d=dzTt7=ava^!NFyptV1i8XDADI@)G63j=>_ zn1gw3|E#JGfWDr}h1_Li%^y)U&&7FetwGZZx0Lp7*KSLm9%0d|!4_ucbCbi}kuNQR zzw#irwNdsN&j)H>Gg7?`cfdY@ZlCTIp2L4+R6^`-HravE#uFUnnnk#oEgu z!074EIT#7(oJ325X0^n@8;aN!n{XMM7Ub$*No_``GG(1&sBcE+LP#A*&1%2pSPgiIc}3{0+Sj-3 zEWb%3eoFYbP~Ba5{(@1VkTQs)Q#T-k0>|dXgydnoepUj%14o`y*)EsA9*!L&-sn^TbW3j z!+EdGH+{1RU+S_?po79~gER<#5<*H9ozFU%4Iz2;rGbPB1s|n%xEb}=C~L_~r}^y9 zd`)!sVy~Q!Esb`RL>-RpLwkOyVuAT(2_%{Hri8!2q&MW%D&&wW%jYp1iW3W%LCz%- z4*L!+4r}D|R+X11HIBwZ4gI!w!%AH(j3!tzwNxx6P^TK`Y!0{6fGy<^)>@?3Bt~tP z#4k+RGlB!MGb(c*L%s!E${SY)+aG8O+dDxCCym)6{-}2sY_#9FyYhhkF~ zc+D!jR;DW*c)a(4wP`$1VgT0!1KC5^20!}~SVeRw$6cGAyB3hM^7j&$=$fKy%fCok z{LnY`O$&S*2(HRmEw1dj<2`22QjvAGC9O~`-Epq zn9Oju-MgAztrq%G7?`=BK-pZM+%CSKk-ltU6e-Vp_=WmUA{ayT^=_V*GtCk`=d`A2 zd_bUUfr!Zt-rc*4Bbna?0dxoI%QHnxtU5JcwpIGl@3MKSy?Vl>dHZ@qzvl?LyxM^< z;J0sep*~_v|1jZe-{+zD&A2irJDmF7Pl4Q;=i87C=PfBiLdm!GhmF_4B^zG9zpe>+)dM_ zi1P207S1}$ZpR0?`r@H5z<+{HUZQ;TnTNWVv#6#TuK#{>IEkdN51fTv6F3*A_}u2D z0OF^j`i>1c8~tl%cN~;uoHgg{Z>xCLAEK}!M#m?F)v9T?8ZXtx)vJqpEO_HK)=5|g zZ_i3o;UmTxG8bpJC(ta*#qk+oztd9>2K+;>SRkKpIK=Aqa4l%-iR7~o&*Dnx$9_m! z=vxTfV1@}AHp#nhMG0TiFC$~N*LVxSvO&cZZF>-a4sN2!oqlFUC zuUa5Ue8@TU-}@nN5|&!UUEiS)NL+vA9*{w~qoEf034;|&9Y6gaS*k$8_cnBHd>rUJ zOqO<#bvTu5((G7K-4%r|o9~e9P8K_QnGzQL>Z||i(h%~pwzdh44?H)_aBB0!bMBKx zlHr+`C&Aky?p#zkEdhS;8;d8{^~bC2_fMzB)2hn5Wy9LHI2|QJwpA4b4c$!&{MpYo zheOI(NK{Z#etWM&&W9;PW(7>Hq-^ePr=>i#=biT4DfZZ?*ZUKoA$MszKg83m2Fg5N zG5`L?(S}d7z4G0h=bUHx9Qz>($^AW+_KIBkG;#4 zDXxWR!p~;#5OU}!{*QfUpfS!L6W-Ge5qc2y&p@md%j7t-jvyuW*g&F)0SBLLf0Y1& z;W0E`wFo&r=S|Rk!7=cc`t2<=;o^xroHjOCZF0FLdE2 zAn@|lKPH{1RA@6{g|mN7NGo`0;z$@I;(NbRbiX13e7R$Lh&`|R6)%bnv*gWJ$zF3F zANCH+>)@3C1|K&-c6*hkn1H=h)aM-Ls)vN)cCqkdH*g)7vnu5562e$1ZFWl);0F1S zX^Tg$@j0h6!f2VbG45t0&-1F4>Tv|(+iwk{e`}I|i^F4WbW&Yf#3uuNW0Q@#+Me9X zirIY9?=%x9Amp60w`Vt-v>XuSI#zwZ-wGRe%1 z(^t5s`g}4CNGQa4-gz#d8*59SmuDgiRTIg1)s3velkHyyNua?+O;E2k;XIEq^1)Go zxi!1TsHz~d=t_hAzM2RaBijI z`Z7;{hL1dOeYhO@=}`gWV~>zuU&xaOLsLHj&v^-{bmU(ReI*ucuyKg0l-EcxYOtgU zO4ftV?c0^z`?1xH)MHK$EZwuJbeTof#91r9!+-TUg2p5k{pE(k&d7_v+IspD zrZLFHWgisw!^<-xL5+N(%J(lg;0x`WvsLITOxIf9)VknZshH*Clm|bcW17ba{QYTSMKOY1xIef_W!dwd_$dC=2iJMnBLA}qRznFWXLtlEs1GZxhmf{-p-!URX)1$U}!c$q+8OW>HoZ%K*lC zwSy259%hgguJVcJZ8I};j*3M6*iuH7%aOCkjX_o(aui!Q^CgSKuZmPJfa*PvDO?2) zta`tUj(>$C8nRUCrZkr&b5<)Eh<8UJ{OqFLRl)p;bx>&L2q#^s*xa6ste#OEsrAJ& z*in-3fYf=@7(LS|R{Q5T;mjB8J!>a77`&D|F$nDkn0uZtvM0TJ^DTppgiBa zs48fe${N~TBXTSy+2RMkFBFX747*4JeI(~GcFwiFv*-)!yuC9d(CPb^BLAPO%#e+7 z=1yu&x)GckR45zXb$eb~T>7XPgP`W@d}}m3ad6Sd>bOn^t%bPO!1N4U+r`uR68+}6 zQPWB6xgv2=G!M@R$JBf7HhS(88n3?0wO^MhY+X*}Qm1{B7Zji&B5r@9kb`?|^(N;Z znO|5xq1%VkZ@<(+;R(FkX^<~Q`nbZn*M8M0g2WO7zVENypCtEA|3a}cmAf?{Keos@ zWhSxTUFu(WX`_$iD7Ri)rw1o#bBeit$WR%C??B@&n@Hpo+u zD8~>Q4|X-jXEjRZC0(EtIIHg*n4$W}(uX%%6Z+T6S#F{GHeTfaarG8%QFeX1Fd>bg zNJ)ou3L@Pp%}665-HkLucQ?`{AdPelT|;*$-5?zU3^U){-@BjvKKK3uI5>`3YhCO7 zowW#;Xl(E=YQxb;Nnh8D48+KH62|4YcyL2)*#|jiHMfTOL1C;^57=TIhDEeLQ<*&k z_=m4ernfk-04z2I{hUI+nnaXuxTD>HXrd9L?mf6sr}PxuLvwj_SGtBJrsSRhcjxe`UUtK7`_&J|qY^8aCgNNkt2Fy7Wul*$ zJE4+rRl}AZT;7*44ASSP{_PHQm0$7rYi{$T>FN=9Gb#Z_~kA=-qUB02&#uz?!YiE27vaZww ztj&JBhA(4`XesLparB;*W*E;dmW3c}-*)W>#rL7?sH?l4c~?scV?cyMFPQNh-y5*i ze&WOp<8ty5q%=Qoip4-!_EOaALM_^9;Bn1R?~fO2!mEYfel}_q<@l5}4+}rX006Vr zydHlObo{2!fh~HgZeNwz8dxqPUhTBPb3LC==EV!G(->ISs@FM&|9q_K&greP95~db zSbJ$WO;;UlL3i}Y^&?D}S5E$bK&hY-iO^3%sleqrU{4s$eNdKdkZ5$Y3$$GPT2MB} zN0t=geWdb^vp^t$4BErpO%MOtCx-;kj5E^)1Gu(wr0`Cr`c91C< zdsrq;k+&0H?$C)~_V>Q zou{_&^^NqXf>Za)x8QXS5b^sbR|t`B zbpI-Ow4-+L79uP&Q!)MQv(aSdxmwf#6nu4(=POoJ+WQ&%ffENMn*AFbaVeB883RL> z-2ZxrC+|;XpI^mVJ)D;_p5=Q#Vhr6&3*Bb%syKJtkFerSVn19&oPYWpdaXN}|BAmv zW~o4t30rzs>J|8_7LKz)DP{r!%D^=GE;-=xZ>t$3Z$8g%e5Ee{rd~`{&4PWvp?(HWy`gz?z|K-(=PY1fS8#)OB`!@jfQqbf(~47{OCsY2q=Cyy86`b``Si=%~| z<;-MKW^BJ2F!@~*!#LXBe;)s;o!F_S^keyYP0eq@HW`0!TbQ)?4om6NUEz!HV%Fj4 zDgl4gu2tURk0l~_R3gkL&I$MEENioA|2v5#qtMGBLmqHe&pv1^QM;e=gA@!jXmL>L z_;x1p(k|aHd$pI=*jTNySNdCa#UClIZjPzO2u9BK(BkhK0dA<8 zwR}iOxKxGL*C4_&ps)SmRe9y>3-X!|%dO7yKxLW3+>fE7S`PGwwVsd26QXn{Dbiiq z;Ql1c^f})dSfp>^Ef=+-HpYep3Tq|bA8NY`JzBDh8Tv>W=;2&*CEo#EpJJ8bAE z4TY2XvD6*Bond;cReb;{lq_^d)Q44bPgJChi?bv0ZQ3DW4f2D21<`Be0tI=pZQr*F zMCe3S<8Mh*_cbpt2vz%CLXi}|$#U+zfelTZXH|J>TS5pt$H31XQyv4kF89?rEbg`t z@$QGZSI25C9JzTvnulf}Ozt+1yux^EWF5ApmTzgNy|=kk7PR%)S|*jX*9nP@3>^1{ z4S}7XnYcR%+0t`se%=5G7r5ZMV=`KAGWG!L_uxEQjwHr-4sd*>fGM7Q0;P&m*RA$H z&I5m0)W&}!CT>?k0hetVpNGASF2e6m!3O%ck7R!QITM>+Xk`i!L+Xp~fH~mB#GUMFq)m#}5}9bz3u%7cbWWlb|lNa16jBtM-}V zL}WJ}_CX;0Ctncts9Xb_-~IL`^6V|vbV1H#Hg#&R)@Hs$xe~9(hgJ+KT_vo&3NF!1 zkaJ;$Ab%$v7f(HT4*&jv|j8Y99tnYAge4{X$M#)3|f%11hC;;;2`_{*_Ml`k<9?-%2>%3t+mi00^8y z4yc|_70Yqa9GVxpU0@I1vltJp=Zfg(Y@I}64C5n}OLLKW&{B(aWkv?)3O>Jjj9C&4 z%%Z(}Hbq9qx+6I#onX&5#kw_Gm?He6;`QvYlvM8if5&YEO6y@(5432{H8ix@3Puyd z#DV=Tbs{vO4rYK&eJksfC&fYm<6X(4J_UInlf#@Ikhdg*gYa8scOUloH|A&eMXzuk zf;tth*|W`zgbCM)HTk0OAI(WZ$e8S;gW+ zg8oVqw<{GBg{`fv88$XIM=NAR(bp=Qb`f_6v`t@78*;T7^|(Hh*O`Ah3E+HdB8|NJ z2JMf-%vaW|M(5r_{cA~*(l3R#4Q4T+N^HN>Mmb7?`Ekvd#< z?~=$rHKtK$`V+*)&#_ffo%MRyE&SL$Q8nX&OHBVx=;ODdh|7`t`O&~Gr>P{sjrW_~ zbQy09W`amn7G_s6IUXsQP>kH0+|b5+$N-aH>ugB7<-v76+)w5k%I4?opqo7|prHSK z2mX;`r_IsY2CP}iF7V4LG%LSnZeyj#li<0tfMHs`{c*O6MSoT#tj8TDw;P=4-->2Y=s+u*(D&*zp?E$Evro1s)oj;y?IsuzZvIihO4ErY}{ zHD8LY9Q0;mXTek^id0@w0r)~>%8zx&iWL^$NPY~?5u2v!mD&(U%Y3rLLU41jX(W)I z{%p&Ze*038divS(No^l4I@x_avY4tv6I@}rqKX(jQ66e}I@CRa`Vz+MM*$7!d{Gg~+ zf%UgBY{9q`^auw1>;vjP$OXA(+3vZ##Svf*wL;y1u*EzJ%^$~k#=reI9_YBRtm>W2*{*&aP)Le?w1rkqDP@n}|v-4bU%AR}6MnDHgrETH#s>`I42tP~&;aQhwcSw1;C{-h@M&?N+q zjM=u^O%vDTRvjzSaBqLA>2UugSGiYv9R}pQvU-`{!w3dRU)HkrIHUy|l??&kZRX=3 zG(M|Ep!N0)am<~P@Zv_rF^E`j81&)Tn0S-w)=9IPM)IYDw>ilUlA(T5k=y<8EA~z^ zEO%@)U8?s5gl#hJ2U0(sL$yZ#w)_eL*)BY*-e1t;lh_nV{XObT<3de9|A=tcOiLdr z8N&d4vj<}LZ8z`rLV}c+Ge9?`woziWbr^)iEcEj5eL9^k31()rSbc7%kS*a)ucK0O z?6&Jp*-yXo}B>x!Vjo4?Ro?k2f0X52OLin9S5iiW-X5|WyRpv8UqUkzWyBUg^T59xVDs8m2c+m5lQz~rbv?h%|X&oO%t z-~a1-e&i3o>4=|3+K+W2#CajxOW2a_2s8A?ikOf!)`yT-bkfGN%vJUMu~4TrF5nUP zD4+VVW=kdeqp1HL8*|soqb1<;lD`uN+A}1CT8(*Fwa;YGT5Mq90w2c_w^v3;)XyS6 zX1g^G4c2rz%5_1l0;&I*8vrEw??u2gZ6*On}3!v z_5+%_y~_sh_{nB;mf@(OBIAKQ!C|fC#~wIchsYQL45<;n;jzASDNDvhf?Gv>fPyp* z(h3OOWM?}t@Jlm{d}dNMV%#O>8!W)7c`1cStx|<@Vx+7<8u23QU+hnRJU4D>b(yDj zRA7(2bK*C5?QFF5IjQg1^D5h@93yu5Fw9uRGA|x zT$bPm#%f=bRg;hAnt<9IuqyWMn3mr9@a)CWi#zl)ez zy{#Qzr7Z~xRHBSn_nyxrmlC_snV9v4ZE+*hiZQNYI&E#7fRD6_f@!^vKE|play8*l zovuW!ngi8!!vvq-%C30vkXL^k-Nqsl^?i~!W4*h+HzJ{bVV4SRcAHYw(`_MzAzUA944*wwtlsxZy%G01 zjM@z#dpMT@8_VNSCxt!Q^n>nJ?Pj5s#CgQ9v)uMKUSLa-Tf}E{Ee!X)84J8(F+6Nz zW}Pz!pugCBT9gh{3xivaZZJT%);4r!K$43>HsS!k59y&b`nb%1fS)1C<)UPc7dXRW zs=tMDQ8+|-9hNV=9B7z_82cpI=SOpzM~tJjW54?3q4{wIX=hOdyg+N+A2DR*N{L|V z&)BHnk+-;f?o|Ew8}Kf=kHff`&i{eUSapswd*5}_4myevno7I(ZLqZfa+DD1afY}H zFb))mFU&U6)shaZdm~i2-#9IxwZe;$%<_q(=ae}j>aq)bs1pI;US00~0y$mxtX^5k zvoxZtXGt*;r8wriqEb@IEkp^+Ru0Mp{~Mm`u{poC}^9b z;*eha+3_siIigjJ@$}L)~~KC}u06z@>L0i;W+G@9Oel*BWJHgEZNigtbsxqk-&~HJRd<0a@pS z-@i9T(rMcN{M53$F)A6Efo8dFMX{kwy#eBJfLD;I`{^uDLEC)6Xq?@D+SQ`qt9*9D zCC_Upr^(;BHAa{l6dg2w2f+%uJUUWj>HK}u$=L=mC+4Q&l;jRPLdu{Z8-DIxFOz^;~-ZuKxz zG&#wz3L9^?uN4kA$xI8yq%>oWT+wxXUS)JW)cS9z_Z0%XBl#-#H7w-D!U?YaNCZ~J;Z)5OB)B%;|OWX#j@ z;TlnWq4ad$weu;&_q=PWaT2g$4F;k+{tTbb+R`D~RAi9i0zBMnLNNFezrMED5&UTnB;eSB?x>Uh!`VQ^y}89>eEaGYi$t-1UEbbLf#+ zq$&c&g~Bcm!*9`yj=_gv?#|pUZM~zGpP2OquCp)cjW&PC2f@i$dbF82Up=4PPR(r@ zmmyVh2L&Iqy>jU*0`zeG4CelOy-Q`XRevUlT|34J!K>W`g z$igR(2c(OLVdE7d3yPPJ51N@oPo9Ek?Nq=%b^ENLCbUea{d9pF2}mF2QD!|ZSvb?6 z&RYq#OcIX>f*h;BR#e?Tb2mR(`g8+*{g4)K-txN3U#sA80soJP{ePCctf#WJ8_}zA zFp-HYt8v`Tv+xP<06-kjiiz!TC6|uC8#J4)0N?oVJU8`pP_j<4y zU$Ntpv`u&<%7_4SZ~rJYF)GeOhzS1aTK-3eS<#MUaaITLmpoRBAqAMv)8Cf4lUfj? zCfQsybvwhvVz<#Qb)xj_)=Ltx!5FIZ&SH0`PD^MTo()V(NA`ESOffCIjX*Pxb@^Bc zklVucE@~2tJ_^@^{o>pweSAy*Xm!Ehr;Hf+*s-eax7n> zLuFFPbhw^=Ro8gKY>@N%6PUe*^p(A$Q3<@c>&qB1g zQ{eJ6CUCB^E>Q1kAeLod2Z>!3f1}M#=X>#<_L8AzZXd1f(ZAQ}M~_`?*M7+NeY;u? zUw`3M;n`V5a-Z_$X1rP{o3!mUo(kE{PMwW*^rTV8QM3{Dc;@Z|0x0A@FR^O6+AeLs zgxs-HQd^C(p~7PJ0*-Dor|Z3fj+W!|(7(j9I7)5)U$SnWd&tGWG5F6;o{vq>JWZdgj zaf&lOw+6o$Ojo8nCPDv`(KpBm-_sU24}VyFIcu|43OU^uvUU5YB}xB_6e%kyd1d1a z_X3r6kZbI-$d@q@uhj%4Zx zLBNq1%YTW>M4wcD7RCIkkb)*H^O4emm5D!-H9;v4?hRNSQ9b6pKO*r5T zE*+!kU;kzmtUsGP-Tk!z5q6-pe~Z*Ip%nJ~ktX!QPGV8#sI47OQ5vFzZ9}#kj{DcE9lav^M-7ZrboOtalN>|DE1~5=0!5ca zgkvyKvvDBt8&@PUu*LWPH&YOKAN|?Wk|FfX;3CkXSJQ-ud1#Eht@X(XwQ>THrdWN`dSe>= z3R}rZe9@G*M%|=Z0-Rr&sLO*F=Ue*wIA}#Tiq6c~{~dzN?U#`X8k(&l!VqF`ZAsm* zsHm=v(=28Cj|uCa>3S#-rK6Fqvbb1Oi&Y=SO7({`%&YCJ`j#(Z`=|=qM;&3$U15<7 zX@@e9?DqR&%4$oo$aP<9#U#IBM+6V(QGA2!uH^Hea(O>9#C3DSp~xdKpI|(3G)1NA z-PmPI_JbcMBh`yzf!*kcf9^Un20|z>W`^(#R%p1RUf|o(LpSC^viuJh13K<%>l%@m z%+TAzBhDJhZ7P#61dPkvwn%Y#T|2@Dlns#hdKq-}?st$?IKoo)9G-we5kDG3B52K1wkPh{M#<-GTF|k6$I6m7hQud_g?}6=2`FCD7 z`};Gue4Rl9a>Wtq@`zzD>uE~<;K|^5 z8(Q$EtM9+dGaoH$xvmI_%^~9P7#QZXz{U@14bZKAf5KO$1EsV;Js73@m6dj221lig zsL}4#xmPjhHeN{qPReyd?T)GK5FT2nh)Nj((Dpe&;gczKBs5`BIq`eUOqX!-Q!XYS zjgAaJl-VlpTpo1N=}T<3>>o>vxN$?Z?l%rX@kOEK;a}0e?y*6bEdsABpP7-URTDgW zmVV)NKgZ3lLUz{{_~SrS=s>dCT=?}5KL3&X!@6l)9nPFalRK~7g9Gv z!FCPpDmTNk))TnAuTh$wFm4Dj5Su&U{liy|__>m&&n-0{3u@Y%@GTL2clwPz zf6Kqz#DvRTzAfxMltT61Nle|s-`q>m5S=r7#IOYRo|11yDAj*dAJYj=MSETDFs?FM zv_EN^&>`|RCS{jFdhB>9oy=KrB8XqllXg6fYlNcvlhjr57R?UJscAB(0cv18e9L3? z{A3Nzzf~$I_WP&y!SnJSgvckUbpN0aN6{;j(|%%a)^{vFo+Gecc{w+1j%;~(5gyl$ zJ}RvpufLItMf+`>5f4yx5}1P*;DCQo93D(SCOE4xnxBl!+u;LwpQE`Y?1&6u-^6%9 z7fyc=g`O{6?Pv3h1WuF1VyS#^6st2u|Ct9X?EG0Xm{^Br#xNNR)+C-QqACozKVufh z>j+K?L(6;$?nhA;+I;i0TuM`tO4(mw|F|jBuMUIjl4=a2PgdM%%fq za@t+YmMZx@zwXRqm=@ceeY4~2H;E~k?~r;+@>cTd)moYE%kU;0yi&oMkI_!%QfN7zQOL#liWSoHVb~1?5|X;A;me zJtlm7wplULgIfiIT>8g6y_ zc}eE;$1N~$$3Fadn<7@qXQxf_9`h?ZO@M%FxB4^U8tRDH+ZfXj7kSu!@2?|B8Y*`?9-)ho^Ou;YO&Imw3s7O4CW-OX?t^+l4DhBc70qjklrwT3Wu1eeUqyL_%&7_fQ?pHd!f2FRM?jKS9)yM1lf}wd;tFEvGH+st` zi7ejC+q>f;)~KlV!g!ko_&R(#CNKz)vxg6Ub0r-pYa{nff^hsQVi3<9eQ!qstPfST zf50gURVH<1f`FOSDKM_Ae22f;(rK|ep#70`V=XHIN`@+RJXagn{>nJad44pbiU=?K zsPe`|Nt+a|i%b?5-W(T2Fw9jgdc$S03roO9|5z~ts7!r>8ezs?vS7EEXg;uJjHpvN zOik?_X`|qjkVAFKm?Cw_ue3bhrP6KDhTtxv*e5`Xy@p0Nq$o`#CCtLCh=f7XxF?%s zfgrgu2~_x&d<} z_f>VdK%=^C-iT_ZBaFC)NJg4LHu{tj&M(7*mDNd9nQzeoL5 zvN>4>I}40PDf(d7+2^#hpws&CFS7RE@M3*MMB$=ZHO)PcKmO}YKGqss0Buz|7@d_Y zfcc_;{%_|Y#@VY_@A!&WU0~N!$O%;4&4nI{O83SBp8^@HGz%}G5F$&w*!oZejh2>7^AMvHVq7IOwa`^V6Rs*(FDpsh z-J!TC??y9vPl||Tg`{Kd7OsYLn(*ocqY;u?Cr{5ou76zYvFZFMjUkRG%DjXJUa*{3 zTsWz}eGKJ=eALOHjg(`q`aW_|#SsYrq50*FPcF+A*YW)3C~cKJ^6Kl1{QRfCSnq2l zH8@|rt`Nxez(%ebvfooh)s$^$TE`DY87DaWe-BHL|I=M5!cy5(hs1vr8;?gFiRLuy z6T?0j_lmi{Yx_K<5tP9c{WDB*xc@s_o17H-n=R#>lR?D~f^{azAmYDR>AIWG-6PaK zZ{Gnm_ejCK=D`VJ1mbE8K&?62U1l*GxzDid!;3Wp)Yq}8#7ryjq<#Jezvb%>9o^ncA z{F;uKOGH64bQB*gv!JOcBCUtUh|i3PYm>MC5y7&k6j$mPCQx?H_>0csLEYV;T6}rd;>}ziP`2 z%7lX%#UI>{e)8!CAk_ZrAaaDL;ah=(!2sU)kBY*~!p%t7g91f3G3@X!2n?(QOBx(( z26e~^cP!V>N+$_WuK?D&`F5*u)#d1YdHweLy2@0~Qf(qmjL+Ee1MTPBf`_KS(bJFzR*jmzj3ub_`D0ut3S#25T2 zJ3?a}D*{Cu0+sz10#f)u2z$IeA*vNeH2BqzNGb((C4{XYu@{-A*c9Ced!8z0w{+Ur za%2#6>N0WX;rlft%%+B{ z(VgT^y=bWFo4QAG5b{e`vAR{TwiTYyW*nweFE+E1b$2*FYM_WyXQK`KFOy?^Q4j3- zY3_$g_ACKQkD;OA(MWx<%@!2Rbj#(6SFxrPsqw4e9g@N2!hisiWdDiTIoINEft#_E zlYs^CU3|8wM>)LB(8G1AYMRetd0s6!$)yrZuI-W4=d{L;FU&o9$t`f?&jvH-U%l^i zjm-BVp?h6_d#u^{1}3>H&fqo{g^kFA1o0oGHSDT2;K^FW0h58{sAk1hnD2NcnCtsS#nuy{_250N zE>exBIg83_c7+-aNI?^Sqc~qA^*i!LgxCd({N>fA?k#g4G#9wr60lQDmPkJLy~(am zC+aH!XZ(fd!_CCj>yQhO#D!Xf_?TTtyo1c!I8+uB&B1Xtug~D0`d|{avt)#Za(XuxYIJzeY=wA`O%C^)5i5 z@k|!Q^(;b>$^W62oo6|bN93BHYP3s3?KK#qOPjL&fd8dU0|mDJ<%@TyeINxMG7_|Gwn+ePhZwiT!~)!8uYep z-VGo2)sjqL{ymaTBZk0Sg<@W?J;SqXcd!Sh*&|m#gr&jW6S#IyDh?aks!-8yd|%y0F2FBU=)AIF-ZYjfVjb z_=Bpv?t)3IaZ}hT=JNg2Yl)iM`MZG#FO<%3fQgIA-5bSfD`8tci_r3S^nKyQl2f9E ze#m1xUqfU{c;`(9)2ngr-95Gt9@twW^lZ?rhz`W6k6O0r(_S*Gy<7-gtdxBi5YvxP zXVZ6-VDU?;#T}H@;Y(SGp3&=&dok6-ADxc}{zJ?lDXPcMjAz8*q|AefXNUDW>t^o5 zl%BCTXsrf&z>}`C#;51Jo3na>WtBk@CeH_p37eVm^hT4#k`GZ&w2J>_{AWZ$%wNWS zTVWskA92B`*ZY&d=%Ql-&C*E5?0;2tTzIDo@kdWx#zVt$0{zVN4<6rRj`JCt+R}t42U~i5rH{mUD zkF?W@KB|~ce>_~KBsd~INJ>Ptm`NDX>K#3GWP9mdc^~Z?NZ$D3@pV5wUweAcjwQ|f zy3Ho9fr(vdkyc9*F8W`t1Ho8vlkmQcI+zCj&?z!{*>+Wht?jHtK_($7LQu4Ad>gJh zW{N^&{}or{E6ul8jgU;XAMVe$OA##r5q+L|YC)jt#<8;R)fWlH!&;ggvQk)CcBh*I2py+xHGBX#Z^|UO|>*3x7zCk9KB&uEurlA zRwC?3Zh%HQ=(z@)oDZm5!|=(hJ9y~NjZ9->EZuWs%!t15o^4Pz`j3P`k4R>0Mo{@M zbLh5mbLe$0YwNRjUjTRU4a^uwHmeACh9h2NFseZ;SEOL8Eit5@I~L0mg%pa#g&CUn zbf5$eAs@6G6WItcvXC>=ZRiFIj0bYul7I?1vh<*YK#pQfz9N>}P^}Y@B>uKS zp{1N58ojslH};#gMzo7sWEKjbb$MK?-~?fF@a3 z%sQLGvhUTG`t?9AU1>*64UtyBS)Rk;RAe+6ESXWFuEko*@xe6{W!>i_^Gir*{JKjWTUT2x z?=3f_C`yg2R4<Dn)1>O;AJ=nP7 zdnxQTOUSMp=arfk>}MHKm<)vFU9N2oJ~KQQkzn5!jo(5XAI~EM5B>9I7*+qD=L|Lm zSK)}Q{}!Dzz*Hd81v$T$GgX(cHGCPBJ?(^pJ%kAogWSb7#AQbA#32b97FwbO2H#4{A zI)z@aQ{BeOHrL;|i%~tja5Noi=2Gu0-toh_J9y{SSYMtEhy58w zc(SB|bX?@-Cvs*}9SuM5O-vhY{Wn;?ltX6knG(JKqR)PEJ`d(hQKoUx@$1&}gwnM@ z)KCoH_!;ux-#_+UXA3+PC4xH3NW7&k1u${+LY@M);Pzc~_-y^rW}l9Z`+a1|e6i|z?$!%U-Kvz?&>^fy{C!88wl*fuFob`Rf(}uBU7nk zsQO>bH5AD3yekQ3;vpo z!&JK^TdWV4e*>|m$)KGjUi8?%EJf={*}ewZr6%35qXI&24t=&Nmpt%mlseo!X0x+5 zoC9)}z5aOAGeMLg2Uq4$!OWj}vC1)drO=Nh8_>87W#i}Ld{#sgi^uW2`-cC0)cf0# zgFJs)N}-z?Qaz=|Vy@ODRpo%uK3nOO?;IDqFm-!fR}P))j?b2u!j@nXG5 zE-rP7U$pKNHvT*`a-_$1Z(t^Napr?oKI*?91PzeCV4ejF_iq$1O!OH4lDnY+s(#wF zF-Fed!S~BgWrxSDqbmEc^bE|xb@583gzgWE6AtYpluD_moq((VBt06?l$;f>-Q%V` z_{RvUPAk#2Wxq;a9;}PcouY@k^r5ISu9DgSYP>c^t?Uqhmh z9mUWo|1-Cv6JvP$$=OjEFjM<@(v%CRjeW;^FKv)68Ph|tP2~Og1(8&IYYyqk!pdK| zZ{IviDJg}`HM&J7viYZ6VnFqzfS191*ZP9%%C4gIyAeljf@!+HB*RFmo@Q_fg~HCf^{l2@Is6#I8aD)1k>eJ96wj z0N32t-l2dBi3hp7-F||M?{sAKKQAzu8YuAFbHw*RirSx4$c`JO?gr%6p~QkGZ(Zyz zVj81E9`RyX{btG2p`X;v&7e3I4c~dWWH&GZQqRpHC)LxoQb=f|CQKHA7`_JELbP}j zri<6es&Sm#DEXpI-O_32Hx!eC;_fRt)?b=tNFNR46}a>5r;@~ zStYl?+`2S?t1V9X{r6Ex>!qa=ONPK)tiAraf#pmM^r4~Qk3V+W(QS^BOON7(&q*(( z>()irv-4I1G`*xB>OGae0nJw$-5=)n>$#Nmg8%dJZQW%FM9XBD{wG^nox-T}l?X_1 zE>COWoBE@zdY2AfFt7OGg2%e5r4!*By$J3saM~p_Ct2oPj{`Uhits9#t}};$&R(7^ zePm775)Lw@0oDzWtps8DS`}fWK+94<R%pCWz zpt!yovqqAdpRlmpBptgnZB+kFPZB`7Xq{~Cx$?|ox*rgDf+01mZgk5VJ~<>?-ivre z$~LnM1-G?FHrljaUchy>b{iK1xHI(96un{I7R&us0;9a_oh1e+ z?BA&2s2VrJ(rCWQOrG!<_@i;j!*#79B1yM0J_Y`si>ep%*au&+%2R=FRT``OvYJu^ zUJV23&0aYC*6*5>R5m zUmc)>OooJ~O~RF#K|;wS)#?<)CBB{u^#&FH>&q}msS2jp6}$f_>@~7JysnW_c|I&t?RWC#;!u37z-^O zx|Vyy=z>%vF_Fbq`lOh+(y;GakH&XBkN3gxl02HSDC$NE;Fms=UkJ?smf&13?PwIK z0x0*k3Cz6MO7u`iy3VOmO~Z$JuV9)v!FA6q7HQ877vM4DJocHI4gD8@hJ0Qp5`xZ^owz-EMaiGvA!cXZ++INo3FFz)w=;* zI`Ov~!>%$Ix1N{8;iV|4E$^BYl=T)kQrmfE*KUlc!bq^k0SUpuFVAjj0~WeinhvS{ zw0Ce}Dx7!eFx_8O*0wGg`Ky?;S9IKWKmGn1@vZh{fL|ziJ8rw>or2 zG~}pS-#fkK=)RN;y4U`UwRNkpQruK|p}nO8iBS9{zN&D9=JP&Yc0d45Yn<80>?F_u zfDL=8T#|{2@A#aCIqSTI?`6eOUW+%4!ub$}qKRCm4`;b!*B=%?OTmw?;V++`mk8k> z=I^W~I$#3*L6**Afh?#AlAKR3TCWu}beyv|kxKo$uQMGxU$b`#ppRm(@mVvCfzf%T zoy2sMN(|Qci^kc7y;pmPku^+nSo`qbaDmwuR^f=ZBHc_|%k+AW;kGolweB6~EkV*!+R9b2q{p z67k0(1GfD9xTNz_xx&h>7M~{f%0X7gCM$>AglIJ(8X?X6KCEfo#{RVnEsFoKDxY5A zFsN^(k{EF}1Y zX0lh$cuM4zmb(0(n{f?wb*-Ozr1#bulXmrS0o(txwCctzfq$c43QZIsKKtmukL^TH zl)BP63>Z0TTMQBJ`+ccQuYTFtM`#KqFdFhgDO_T=;pp8dpmUJIBi`6k-cf-{;r*QC zrhgo@A^ZE3#&FmJ^rAUkA%>8y%`yZa3d)quY+xZbLGU`7slp!*_-1a*Os=p+0hI@4 zv^3@^Ai)w38^?y5s@GBuoPKEx!WAmCf9&$$#*o-k3h0Vc76!vV-rOyv!qrwcxSxQF z;c?_)c75svOXW@r?~44;{aR+^!NW-b^DpJlA)5)J+R5@^%6<=8$b9IW;ld0d18!6nVrK4Ddsw|v0KaU3e90j;S1W8 z;z8O4Qbixb{M#VK-}}r7W6k5z-&a#MZLssnze(>h+Y`6FVZL8XWjXr+dY;I=op91e zOEUTe?P0BR5CssMy&5YLvw4>TJ;DEn8V(t5JiiCQ{q;C9 zhNS4fu}}BBLSK?RhO#ef?ndH>J{WX*)pMXrs=|ElT9~@wqD{|wXlQ7Ke~*!VKfaDICXYR3{OeGN zt1p&5*(GWj3$VaK0-cH$%cQ3SeCXD#d9kX9P;gDLxk6vRcinxm^Sz8sX#=b!lX( z(%M*aK9rq3H=(a|-F+*JWUTMH|7=!?%LDYdP-{?c7}3z1l-ojNbWPyPt+edl-D3i^3Tj#69BEpNi75E>^vO}ebP zmb2;7xX-@cs}!;&zRZjJ3&4&<**Lk`G=7BrDjeQZKONsMz-%IDsuerM;}~Q9K0IPL z8p4II&$03VDjEaq4K^m0qMmh(i zq(Qp7ySoLXyBnmtYnVCX^S;kH=MT(>*?X^ht!rIDBR+xK;|d>K}2kbor}oK%7HSvw}DvXl8cc5L2NZ{25RMYZ1;tg`fc8oq&ELn3&$<}OX; za&?%#=pR}1GsC*-cD?+xm!Znghf9v}0`Lh?@t%TdG%QD_aoDmf-|F7|lyrbq|FR`` z_!p`aJ@73*LpK99iWN}lOq*MR9_`7ANDz=*|M>WL_~Q@jx`#r>pXt(`Vbnok>e*yg zSpV+X^&og%=&DKzGyh8^AzPp3CC%+_S>fZNn-06ZBz+vy-t)o%2$Ty244KR7%W&|H(Is zzq-O&C;ZE1iE2?R=;ct!6?zqA@p(hwxV&!lLs9y#sCiuA1qk-2gjkq^*Y&)1KKh{J zUU{TL2w1N*4S$ADyH@ydrB_E&c_Ggmu$PU9`|HwSgnnxu``%6Ce1O`Am2z#{k>-&B>>YM@2#H@6;;Yy8fBD9_?w? zGp&)A;uk<^*Ocq6*xFl61w)PRPWkiY9>U=r9jVqipD?f;p(EuIBYk|J0>cfqeONDS zv({x4-)hz$W`x5I!QM@Ms>t=o%NW);M9fkrg_)-O;&yZiy$0oA{)nWfRdyMtgDp&s zC?RgPtKBF@gmr39zTO_9zhMmrBYbe8kq+*HrbBMCc4O?%HJ{#GB$j^{vJWkytkF|0S!L8ZFu_fL|~`rd~U;o7O0 z#VX<|YXP=dtEmLb1_4yi{F|;fud=?`c9|Alb>J~;`_EGu=o-!fMhtqu46lyyTHOha z_Zbcr>3X9>?=V9|1>PF`nct4@BsRsJ+K`%LmvL3Bj>BUHIP{+u3Fmk-kWtVOmb}Qk z%P{eBtU*}&T-GJ+Si;Iw>#L*`D)!?KyHYxy`_%{i+VX){4qYJIR73{~ms#oEgPFj3 z+TD=Ahs!}Kw*XWe9+zTKR1ZRnS*r>D{q%@)U}l4N-Lu1znYF&y(P8=C1RQc^(XOSVL$qJp8aOv(4es z+EsY0$Qpci$%=7UFtDJ=w}muQFHOMTBJ;234SBu!EV>O8_p;n zB8j)mk|!Bi`^Zcc>hYLjp2_Za2Ui^P)EMHvQ*@3-A~8-B^19)QBt)!37yD)19)8x6 zs#E)b@9=a_DHF+-Z<+vfq3`eZ0|$+9Ui`i? z9`;6Ia|4p$&A0_-W)Z{3!MoQUHH}i!ntw}CqyAXVqb@mLX8U3(!kP8gvo>O8Oy6Ox6kYO@& zUNLo;`dQ>w*Y@&X8ShqYB~7$+`az7HE2{>dFn`vA$SCsej3w|;vrY8)5{+YwPP2r4 zQvFpCP7~hSr9)BW))v1jlL0VLinHCI>{I|vad05`B#s{&(lerf6o$2wPP8IsP(^xw!xsN`FoFuZjTeJ z3)76J>Sv6`cjf$NP6AE*nsHmtGes+OQi%aLztHRN6c8Ap(EBcPZ=4Ih(-)S-?L%uq zdjO~+mD|y{p17H3^`Bq>3fTu0)tRwU;>)NZII@vSOJ}-ohdQTUH!MU+;C(d(kRWo- z-0Ce<=7*?kTno)CMeC~Oz~x1wRaN|LdP>U%SIaXxvS!_67;(#E}@QO1@Wdr$h>|XL?MZUPqXk zr#lAAc-D2yIlQ$3FbC}j#R-2sdba0ef(Xw)?CkZ3;z!AANg6EZjP z7T?(fmxm!~IPv4l{4yx{OiY+Nj#*6zF3$gpco78i6EzSv01~y)v@ER;*VjZ0&*YDW z5xF@+-)(`cLtu(oi0QKZGWPdqF9eVot;?(uk(m+yT9np&&F}`p;C49j4Y1yGuYQAz zBgFQ-K$MD7LhSX#Z{u#nXmOPxvEz^_<)gg!vtPwn!H@?u$vk$v?1G`3wXZ-w1Myj> z6j^0|v(H0=?g{?iBqm*!+s>u3Q>0Xa2oYbIbFsv}De1X;kF%?N5^4D%YibxZOhXcU zC0YR2z6xq`;#HycscZQ|6YmgqwBCTu)33jd@Klr^o#YsS{%)AiVa)9l>$&$(3j9@O zf`z`zbl%T!%T#cN|G`x<*(rw9{c4Z?{0kIWW>51Q-WF^GM(g&&=Rju&$>%5~gaq$t^cyPW>g z-uWhVZ@II~orJC(OlcK}BX}Vqpt-(4-1X3Z!^zve16Pv>vos)m^;I9#-C{)O#vo#5 z3zgNPdqefbR4tMTA=&;o;vmhwb16UXH&#@q&)-<7RJFmo#2~)|*^UFZsxD|NyYi(0 zraWALwBZC_65ZN2FIx^G!J|w@AJi0;O&y~Vv z@XhkMLyP{Oi$prO0V)7O^dK7aOS=D((G%!pxV*PO&DMb*Zi4U8_rF(-dE0afJIvAY*+l>OZa9b~sS1dQ!?#x%PvY}*a&wO>er{)W-N3uJpfh$&Y4tE`SBjmQ-c5ZVEc9-bbs_yL9p*etT$ z*JZtolH_bod>(dL_+}0ed`Rdr@a53m zPP?aw!%COq`P4M2C7$eI4oTJhG2VA6uB%%ilxEAS3H_$w{efr%E~7J^yat;hZn=$G zYW03v+D~B+(uu-95BfOTqjvO6lUnZc@gFCdj5RJ^d7|Tgi_js(o&SvB4del(;^Rd1 z=!N^0ZC7t9eta-I2vdFU;1BaFV%K9Z(v~mKc_d|pPiJv_TOe8l(e_1_=w|uLjZ2~K z0c8eAmxUZo6rPalaY+{c({;yEk|e3O6xz#iAaohAU6d{aa;OQoz15!}i}6Oih~_Dl z@Fg+0+Mi)WIUok3eC+6F&ge1Qw~CG4USb!XkBxWv``UXN1ma z_KQ4K^CiK+%55^cv|Ub)uLKAjWZ|APz47Hkj7*3O8luT0^$xY)k@v1D=}UNiE>cXe zW41TQaZ9R2PbhTGQLP`)-ovhadsx@?yh9D$l-!M;7uL&4yfQr+UcZHdgPQjzbuh=7 ze0&UtLuQ$UpLkNOavxh}BdjKQ+f5Jg-IVK5Np8&}SaQZwKitp%K)4@jo$g5D9=eYP zx6F*`SIPg`gY*f0RP#v;KUwO){oop0A>3Tq8rZQ>D9X8CB}R`yyAI~W@s zbmCmAYhkDM;5K<8fYhDIbqLv&@AIi9iuV9*5^8tgRLGZ-_*2T@o`^QNe4^;1PuS`P zvjIyX5n@+AekZy8^Dao%sY5eGZf*wTQ*G^lj;~O-hE&9UOXU}JCRfvC7iH_#yz8U;9 zja_AcBbGF9D~z_+N}!i|pDJbtU_1P~Z5&>K`xE(HXH6-^HH9t?pM7Qx>g}OohJboP z`M}nwzs-k~?3!X}j2>+ct)-T0;j`Hp#RlZfE9C4CSAXM_1km0ZAdbG8(^M3aSYeD} zrk=|ogB}=1w-DAkPqd?72q_jRrWdm?&3${l_)*ovfFBmg%V7ESoPK0{Ox(#f3E#pL zYF=5CUd@NYvPHiMg4}TfD)XC%rBnkh>G)fU`N^M+Y=6LLu`Ur{hL^O^fZ9zwHuHuWMi{--!LCyL zGA+J3U3cbNE6%cP%(p7fmU%LU5=;QL%NPJED!4MN?Mx%L zQ+9gv;1SO*ZPs1Y1mfzgj;a2K3rwvydp!L+1Ko{L%DtQYA{APQsZ{Yg9|tAgaF53C zoNQo`F2dS0O5vu2WBQa|Hb7q;V>{a1DeXIs@$SdHs9Vl6Vd}i@%5xD~g0`mj6%9Da zoc`8*j)@H6bP4=)jUm*&&6p{a4H*r8uiyct*Lwp$5mG&(o7P-)N!cFY) zkXX?4F-DpS(}t?`5`*MMB;tpBPybtSc4jdC@L}hhglKhhks}Mb?s`OG>n^MdvQ@eI zuApZ$gl=*2zV&bPF-c!T(-;7why>B^s4R1vvSpCCjYbxYo{eLYF^57RjJaJPC#9U> zcy*opl#{`lKZ%l$A)&G@0P&O64QJojE#^~1#%ZL9KZ(b9-j z+CJ)@Z~q3KS{2|vVT&ZZtcX5m*Zwfz+mYAt0C=xD4yLG-#83gkRVp@vk8BS9t!VBZ zP%W_xw2(u{4A{htsh(0eOl6mwv3vn8cetE*P7IC?#iCJU+>C1iIm+U zPmk|mK|q5@$6d_1LrXx`z}5VrZE`-==IZJ{d+Ko+#gwDV z%zx5&QrU&889E_9uX9>5PyJ(QjQQJUlzPFR>7nYQF!hjs_v%9)OA0p~w5{;8sS^p< z(nEi`LAwrqqA*zZ0Vo+7I2H~cgUY9)4B7LjdZluO1M{sx&7~*)y-33J&rHE_?#^huW8?T zlHktg=ZWmSQBeHiZgcHio^Ad z56i97%$o1$mG`tEi1~aY|489#^xMQ1<5IS#1yt9rX+BJ(85@uNXo!*5XdCWf6p zB_06cwv9|k3x%89LK&L8`>ht-V0vfyJD_)ROF|VwDSz5(1v|NleN073FQpnNZw;XU zhvFmkznvx5X?@z=yTFSejzknOQi^aIl2MMsAVD1dzqoNx_)#W2TA#5m-JG%Tjr;^8 z>q?Ig!~l@ZBLsjd5hhJywMv^LV~6YMvT_iI<{is)CQZ*rf@Hz}Eb$8A(RRfmn!BBM z4OL5t0b$!YUm$RML2Xa=0AQDDj*K-hFn$@yFx;0;~9Yd{`nHRYJu-W`sZ7;)Snj~R5S$5GUy|Xr) zUZU{-`oPLPsOaPeel`6q><3mi8<97<)jB_iJF-PkTK30L7;`(X|3dc%VJ|omJL*}# zjSNLx4*+%fRs6(*O~pKP1&_l9fYs}Mm$zsy{h;GCOi0tM@vXvxy~-aLaSc9%R)_XlRL9Hb2;m2#+&fYuTByk+c2A+g(@xyK7vKS5IWk{^|dY=`w9 zQ~~bk1r!-s`X64fX1@>@6qR2@Av$bz5ZlefB5|1cJ0~Z@{q*#N5S>Fu{@M{FGcCgLR#JzR{$7YA@3nx0tI zw`<+7eSh(+sT=x1de_A%;OYE47>o2h!<*~2%{`Eny-xUQYqm@!;LTE(r5qE z#s_K}9eNx~N5a9zs2RmiwrzYaTRjg?Sun`pKmd=ejy03`oMbhFLaK?=8NAESY|K+u z`L^M8E~HE6r$};VB#PgL&Fy#s99Z^cO!#He(X!`r$&642n8P1Cl=ii~TyqaGTHtCb z34r}kp_t8X^8ZDM0$UKzPG(Q(S7Da)@~w_n8r2{v|6!RekzkiAag}RC-IW{!_Nzbg zn_bNRz0E0`F~PJ2+Uk%!v}(`rbxnX_57O-J7DT|*_U>U#f1d!=JtyKSHMg ziy9|LeJ57$74_pf+xAfH+8 zDy47IH%a>e2dPXxgNt9Y)S&cQzP?gJHcBdh$?fRX%OC)34s(;$r@*>X8VbrBc6k1( z2UU*)3<7Br@o5#4Uvew{%1VT4G7#G3cljB2vz1OS$*ZMSH(IKvHp?5eYt9zzM9IWD z84!QeDc_05X5W#xyhvR&#|NlJ-;(pR4%sWY*(;{(5wYl*Iro612p}m%;2ug3Ei<6P zHw1%aJc{YfW_0!=d*i_<^-oT&q<}bH$%;i?qE!hU$j?tCr3fs+*;J7$_FXSFFg}z* zHZDSn!OZT90m@N*zAAh(CX)5His}H8J?G2q{=*Z#UNl2BKk@zbQ++qoR^>1?k$%BAzdplo9q=KES6SG>%yAM4vU18k4Ovv>t5<#Dv+ zBz+;3sahHaQ~4ka%8E>|cU4e}lDQE%3|vy$VFdv;*E>|bOr8(jysn-%R9CVz{P$Gv z#ZcY&K=~Gb>Yj0>DJr%eqs0SAv;RaBwAQr6U}*BAu)M8~H$hB(ECheH5!}9y?C`$B z6x(9wNDaE?3e1!zdvJde!gT}1f-1IVU&N-<3X<$fryAcSd#iWgcTJ!IPFMtL z7m6mQ5%c*`(7^ct>GWR7QC@%kQfz+ zzUz|%l3!Zt%*JZ1YRs|KzhWx(Q-ICjN4Tr4-91=1%PW|c7?Obn!cIgmOuk2no{32@i*zU(&}4f9gN z1vd5MlxpEs_m>{Sy~ikXTkO4e$lDai5-P>N$0=u1scu4_&zsJ}`GMhMg#3F^@U)WN zJ;Ep|a@tS$eD&IPT`#V20to3#zA95%eJyL;OH8^d8Ds%jlmT>Un9su~VshH^=9h6n zdV8Lj28O7Jok%elF$o$?{<9P^!M4_~F~b_Ik$1G1{d7Gq37KpAhF)85Q9u#7k7yKl z^pFsGXWr|_(MjFQ6K2NAJSgP_z6+kp=Xp49Mz24g$%M&2z~BRv1gy?b1O)f)U%Tll z{}CyGy10`=B3VGD_d^aB52>#>k00{zYU$FDIXz7}JNc*xwG1}#U01XYhlz7aC-1QSCGXnS~1dcx&lGQ3${s~ccrvUH? z?nqtz_;Jes6#mR;m9mPM{()9Yipbim)d=CIT%q*`^y!#VOg}n6sfG8-i(em z-IzS;aO(vytGs~m5x(<(floX&gQ)<6yR9`i0Q5%J4NePagGbeVdKvZY0>2#VAMR(3 zILO1GFBQ=*6EKJpSxj9>Vx8dq)TIvJ9icJOJLx2qCG6m)S73RszidPV6p6`}PHd@& zn^J43jXTQJf14RF>kX5`C4OWF%kT}f^?t^}d}!IvwAR54tf?YaA8kf@+KGm%y(4x| zYAwhyghS>2ZCt$2vk9Gd6Ew;EA`w?kjRi=RZ$wgB0rKpH4`ss98Es} z0DBKjnQLCni50q}F{W=mX^N2GMxZ-a1C0P0L%^QTzdsHV^|uh(=WsPDX$ks4SAOss zEI*(KJ@-35Br>Z;V?$5{f4qc(*n%aue9H(W8#YY@2a9!`h!lMNVKlRYG<1AtCHZc` z(SfkQs+;;BJa8M!4;X$O=CAX$;OVd5g-W4^x%BXVgc2Ur3*bhqX>eAnGVq) zXmcB!OdwW0*P!3!>zV=Y3&-~@yX&2j9Z4v1mv{eeL8 zJPzNTspG*ARpT$RE)pQ&7?t9mrkvNkLDWTGJaXBQ2qlCF{schrpTb|sz^qL+^b?a! zn9o=Er zZ_6rLg6 zY6#?v7(q((I#};$V?m%Bq)DKaze@hsly>C!p?0f&O=AqLo`rXBY%Ig3BL`$^K>q=DU!J5BAoh-;P^L(|u8?EFd%|NJ~9n z1BWs#3@Dsy!&v}#p@n2EWCT_YR681r&(y7XLYJui?$RzP+|VLu_JAkScsI89EOFSX z`Y1f!LEL_TW-)s2^>tq+s((J|X6%53u@bDK{B66t{W*HTfp?wXwmol7ETP^=-slC? z0jLGu?}Y;`JY~HxWZ8tZUPcO!UnJt`2vTY-k?TUz7$S^jBq02V{qFt z(?;1r3|KruQo}cqq1HB+|7P5WOKbyn@?HduY0RNInaRh{=gFJ`SKcr zd|75Bq`{@66S=*I=qqf`>U&~K7YS^#+)jlxMuaJngU@T}#(BSXq8W1ywv+x{5uY4@ zjsUak-N}^Lj=CJBeSVAHwU8j$4$}<(#OO0~Fz+06^DW|_Ft#_~8N7vV$gv2+sEP@C zt(Bcvlu)MGQgYt8^POIFd@fc-ECh?U8ViOuTS~hp7UThqzHWyiY+w6}5I{(xQ`GfmT*X zUMiYEejMQL&=+*^p82ojZSBIEta|f4ct0C0B7`U^Zzs=|OS+lNMnOR3H!%O6 z>-x=_)K$37>%S5|Y!q*LE(p(qUj*8nwqILOI{;>+{SmMFba(iYJOkvEjjMW^6HP!v;74u-_+Wo`tAU_kDTH6e9O6+)E<2{Gtgi? z-Yb48Kt!ty(kt#~coM;37lh2+kVGEMk_|EMV3daWsfgH1Y&Ll7-Mmq2Ax#2|!Eyby z@fgiVu1oXjnfc*}4dr*`pAl0|^-oaq`vHH?fnN8BxpVfA6kb{wNC}E)q=^5&OV*_b0IfIFT3< zq4xpj%J|adaGIV6+gL8=9EjSg_ev|Cx9v+LF&-X57XTbmpQ7xJX)KJ1+ZXhQ6r6Yg zmLylAP|ExE7rY<-uCIU#oKj{Cb=wZS>|89~nB13F#oMv;gk2O(rD;-cz0tv*3byMAmx|IT>w@;rDjQ!%zWP_3A?bH32fjgQ7dbIN9b6~ zL-g9ug_(-#+zK?_)cL}~>$B`kYDZdmZFQJz`iUmCBEW9J!@Dk?CQL+Jj_M;ctO>o~ zI+m3-) zb*Cp-eT#@9e)+{%7|vh+Y|F%4>jaYy4@X?b%_1}?7ZKCkHnepQW$4WbG1EX!y&4?* zx{uy?!Na+8u*0NT;W(mM{{3{N!6oDV(4>Au{!BPYV=T3q-Dky&V}!0M5CIMOe<{c; z=+*A`1LXG2?Rp(wok;Hx>k-_6jVP|bE+e98a3kB9dSVUI*jFXNZCbPe(ro%jXb)@q z)3UW09p{`Eh^2en&32{UNh}zXJrfZcAh-$IBxwFHa+%=sHob*Z)G<}*T}A-|v0bQ$ z_*#-4gm!`*T32%op0fl~0M4}Pz;`1_(} z2?Xi$&gaZo>Y`EVL5ocHgA(YY-rNw5(%-Ck}W8AvikW=--Wo#Y8QGh zzwUL`JUa4tl-BbAQJ4m{#x@-ko8Nwhjk6gPG=_DSw>~*ciDla0qBbuh6%7!W(IofK zK`g7;SrBd|yLm)N1`}SoVon{5df&JoBo)Ss<0r{+SRt4jDf%QQ;VDiC7tQv{+gFdm@3O@M0aA;{kjw`MM9 z)mZJys(#}apEgi4iQ?bWl3;Yy|Fnb2`&Cj;7;<2Ie>0=Rk1`q81u?zvM#NbLpcqj& z&c>dtxve+s*mb^~+LK%OiU%7r$gZ`d(REOdK6IN}EA5^(trmI4}1Akd@Pc|{nL% z&B~<{@;rEpyJ3Il={ga{T=_btk-_1pIfR8lI*%A^PPCvlMy1&@OAr~r&u}<|OBC62 zYdh%dVk;#HFw>4>`pP;H(}){sK`OZFX$YY4zsiq)kE{DE+Ye~4q=$xYaAbh5Kejfy z!hj`d&(*q+f9_xDXWz)Oex&W|pk)z*b}hRj$L#-rfTlG%Y0yabC+pME`yJXupS#fK zhrVd~ZVNkafaNCBCSgPuZWjP18Wpd2_8lgxzHt6~-C0UmkvEE60`Lq^p) zovaDaZ8pfk`ihZI*fqMke*_sT;ArhDeVYY3s!CrO(oR``T#{8lhhBHKE{-7dzx(rQ z-VeBp2-(vmLjubCHUlEyK=A63I@6juxOw^8O=E}9v0ON=U%G{;u>&b2ynbCeb5d1DS4-#(uh?sa+JC&% z|J1~c0)UsFKKP}JXt3|89aNDKH?Kfc^_otQ45+b>bvFpE16W z+W~mYxal&>X@9IPwcyIL=rCH!coR&H@G|3K6Zk;8);M`zVSFgH!EIsbb_Xl}pjwz8 zi$J9EPSJa5?V*W$ZBHR>6`AN$hoDYAJzbd*jtoAK7dz6H`{Bc%PCpy;(U$ zmUYl6Dw~&Ps+bRxzBHEt*a}S~2r6weV>Ld7@rL59&CF6KNj>2Alc=(qrtYbOmqJwG zbh)Y4I>=Evu)$(`84tZ!?6~tM8^*gZwQSzk2NY|M9M!H`k`*GVr<+7oOGkwt!)9*+ z%!S&p52vPG>^JH&=NL;A|63wYWL}FPU~bHbdHLx!TA89$hq>e%&J;o|gm>0{E1M!J zwxB<7>^pt^vI%A@w}ikUpR+1=jD9blX>z-|Mj@=27vgc!#HJF7iB#?xqTZ>iW7eG_ zt@Z|y9Wg;zECCvqJ8{BgR*tukdnel#%ryvxi4P}}mtw*wI|BltggaSqq!SELC4^q% zDxMlR^iJi^bUkrr#699v9Ms_a4(PchpKsID_fVH2RB*-EW1USYwq9L!IbKcs63y_z zfKW_B&|7`q849P@Csxg@|H}Lb0&PT+2@U(Gh!D#KB+}E%EI-tW+=sr)IC!#*{-Yb` zf{9P~bD*xqm>M4!v~l(LYqs1c1|eKVcY84}Vng4)c`BpIoea#vLS1fZl5~(+y{QzJ zdxhn|G`dVJfi>lA>ixWPi@qCj@H-^tw!xcIvS3((Z=qYzmT9?h4!h1A#5&OkW5|7T z+JGi!kj%t|RnM3hnBW8+iU~NzXd+5|otz=MO6!6m;xyrfK(W&#gTX}6=k$9^O3f3> zWM5c#Hui{oHghZ8aGZ5K4F@;Q=SrdK%q1%S_rz4-Cnjh)O}8_{#)#gHeDiiJ@*0fd z+mDlKqQ#8Y`zj6_@n^wH&}%+j!Qh3DPIjluE@widqPA1DEkx}&ycd|t!AV+Ot{qQ)~>?DyK$YJNNyn}_148YvqkVg;7k~FGoqRV_)Bv2t)M) z5@*XioO}kGDXd*p?qMSk6QWwXx11rGv-yT78H!HK%X`Xcm0a}`SNq5L8nv29=-ZNa z`!xOPktx;5&ZEhMr?`>H0r?Z<)D^?qH#Qpi4f-UL7(O)gT)Q|WY|Fr6F62;lsB|bx zi#ovN=pSEafKqB89&@=!6TY%UgLXS`pc2rtO_(aZtozoMbuElE#Xh{Bp z`ZR^zxK$S(;>m^7mR8CcfwXl&-NLvt$E!!I_0bu=%E;QjQBKac*_IMSk+jCz3a21d zwL{$P5>N1)0HdHeFeVJ@%3g2edS*=i<34LBZ-UaQv1$W_3%76AD>h1~Cl|7d9#=B% z17J6Xo*MBGh<6Z5)AJ$7w>?Tiw$8g1uj;GOM$Az$HqMx(jLV9Cq0cP`Ndv#-eSDQ-Avt4adYO>GF2`tFZq9W(qCaa;2!N_#r{G*1&@h!sa~ zv5EvVP|HTeJgB0Lq60?p=l{`<<4SR=%=CSd33AU}tP0D9REz9}78CEb3%!*~NyGh52;-h_2w>e?-gh{)S2sxPr*cw)`pK`&cSB zFPgowQ!vgSq6t4bl0AwB6IC$LwH-mbjaKyoj;w?%Y+7vD4n9fXf#Hv7Nl-Uv^L^9omS*r&UNcHRc+L%4_Zm@u|lPD~vRvqmSO+3v%YRT~7J%G3s@I<+crFwA|e-~Gm=+U6sto;FEj-Ev>>qDB!j zEG79oM=#;UKoRxf>Lwpq%VB_#cKWM8d3(LNl$RIscUzh*?QTsO=7bWBvK@DsY6J;= z#6DRiDnBD!Hp!X;;xrz+?{Y*eu3{lLWrVa^l0O$Ga_4l{K7}6-`fiG~HaQCk&^`Ma zSG{Xd_-`wOYGWt-sSiVoB zR~Og51`|%C6Ac{~+io?zVfRn#u*_Ls zGF?*WkT{G}=cp)WCwln^+!hHX$KWYdaCUn^j^(tMi^i1i{~}?ageqA)Z`pOu0>`F1 zJ?^wokQU0dj}_q>#rxJfzziTl%}^HBQ)9dqM69>jdNkSuujpfy@&54-2YFJK2I;$0 zK7Uo*AeV!>q^j$gxjr;mbvO>o&of`oUp$jOfESf1y>8&Lxc{jCZZ^d@vRIWXo;qIc z)ZC^+-!;2%bl+Z$u(st0q@qb#AB++W$-YN+*O(gaWwh)<{h5Em6^0Y|;F0&m?P^a5<`kn;OBq>HrIZ={sKIur0%t96?>xJ@Im07z=`>alsFgRyP zq;Q(#T`pu}c75kZB(jZ#xv{7x7ktP7sd?!;LIcL}EbS-vt@s1ZZ0qxj>8#s*hK zmZd#jO1TcO(wJ{{`wLJ%aKg_&P%47L&%Jv8CC(P z_7NKgU_w(CdDirD zk{ zB4oKG`k%x~`6zma9u{hMIzrl1z%3Ap34})>#L8i@iNx8nHt|UWF;ATSNTQ`I*4e$$u%K_PQLI`1wMTjr9#_VC-$xCd{N_DG z&olXyT6PEL)3Z458KA6~o5^rPp3Y8Jic{65e81F?k=?Z^`#M19Wq)bzjcn9vZ=Sxm zt+oERt&AK${G{b&m1`* z)i#yIMnZFw=&4RW`L4`((W+A0Q%yMk9cUa8g)R?2vX%3WY4LtVe1JX71b1xE`1|Ss z-@B)3fknh}s|3em9(zuggN8J~VZ-@y!yngTp(a}@((B@vw{iIY15W>E+-~^bH+x+% zr26&0h8UYx!)`4I%@+vLKBo_26?@-bDUu#eiuUagxPXVrE-^p7f{8f`eLP9L zS)we_wYinBE8t3wGpBn~c15ET0*Af-Dr+>dGAN`Eujpr7B^_vGw_NX~0vRKIQWl5O zO#bv?I`4SbV18O+S0Ka@a!_sz52WI!mWPRaxiig8$ls>m1ayo{f#N5;3_ka0ldHSk z9p$#CGl7{ox7+d1yO|kBe{JSQ(GC9gC*ulLuwBmIqXOhDn;ded5X$@>?$l?Hz%&TD z(iVAx6D69;N~|E9={% zm-xqE`(I?mN);eCW^X}GzOt$#+ZXk?8u5+PZ;pqFbkO9?EIbaiVEdA5Fef*{xQ(D4 zs08VJ+#|OOj{=>nn1e?M4(&HV(m2tvEYP*A=$VTU>#t!I9!P{?WFx|MTp^Z?1jOtQftv;RoOp-Bo->+ zic*a_6z^Zkg}*5gPTXd=T=gx9agyu9StB}RT)T5=Ot)o@&_9fG^ZReUd;xBk=hL-S zZbBja|8KH8;zU;V_kD5E_CL#*rrJE9Fi>A)1|bIb(*iVry`xqaU^Y~SH}k7Q0^cj| zkarR-MSU9|Na?!78d%B-i1r;XD5eyCOFbaFJ>cZm&Gb(gs2%^Ll_H7WF+NTrFWis$ z+5{IS@_V`89?cCa;#-%v?QHsNDsAR0`i9gQiM4EzJuc*XKYSX_g*^R+75?*nfD;NU zrfQ-Zi#q<}Cen!7TtBj65HJvG@XP!0>UN~AD*=bPYW|6f=KoN2mQig+-L_6}*WzBJ zxD+Vv#c7e^?(R~Y1a~P#i@Uo!MO)n6-Q6uW{mwXY|1%gFZ`Ql_%35}a~Z}-H26s0@VLF7T&8J;DdD|)%+Bp= z+ce`K^me0>wfAf)pOUj4-!VLz0BiT>`KaddcE#QsMERG|3t2^&(nr4Bte+#sRD$;_ zK1MXi#-9Yodr;^P?*nwG%PwKD^jpo#blMvyDi|;J@inNmQt8QbcAL*momV?g)9AXJ z(9GgP|9i1lJpS%Ns(LLRIBj3~#fE4)sA{@Pmnbmc!v>$uwTK`Lu~7@(NAXhlOJGe#R_YYTF!#DHyUY!mNxO<*)lm#jF6meKTLyp*1=UMK|m9 zshPZ1>WluGWs!ZN@I@;3u1IA6xI$u|`)dgLVe4<02K6?+O62PEW7DV~v)n&-=QZAV z(81R#Z3VBmbP5wp8U{Eulk%V2y19^N_a~-QrEdgFAI9lal0TH+bUe6A8fqo%q_?_&RogbNXz^*m^cMOSM4LCyQFD z>t=&X7v2`)WE~I{a-4v2D!<1;Vh%Ayxj&bpDMNl!{cgyMvE91z_VaX6@R&iis`!E+ zH!S35`i&V@TlbMl=&hJXnP+R$c4~(hXqD;fxttHvu~;sO355aAL3`<;lfH3$GGK$T z#1Eaaj-E7BH*+VWnq_8@GpA9PI^FAZy4I`Y-6boBbNvbzUCu|^|FaF^;)05NGjH~2 zpf9MIkCc+9{jcNL6O)*G5X|odF>Flis3_tKC@;01FpcKtx)tKRX4-9Ep@JvYAkCn*x4nAtVTS+xM;Xo8&I8 zrCS8C&6g^%=hGEk8<7IZF(krO32D@eoJ-2HGHb{K(u76Cn_9zq(+4gZUA1Yn`z~ey zguh5d;vQPf4Y&ZM_lMA2qOBEQm(rxShVi^1D{JAtjDzzSWkPk8>B&PSQi-MBZ*D3~8P5V3oD zwr^p!;h8)-%=QPb$IRw-Ay%g^4@&R*GvZ=CJA0-oeDVRbgI=Zq>Tk`YupTG4thI?7 z@3&A-p8hJR7{q*@8e%{6gb;Ss`p_6jc}2Zj^okn89T49UJf))GGw!orgtbMN^ZP%Y zkvNd0_}K-#2s`2waRF{zmA&ShXNS~fuX6F@giE@qhK*>rP2=rIp*Mi39_tt@LopC}xA#AjcQ*W!$5C!;O1TgKh^K4)ia2fDJ zK=oZ^ce$1B2&@xJNM)2`1Vv^|q4~4_rExc^rPlaPP6H8T)vjp5#$Ccy6LZ$S+#E9w z$LAt-vX!FcB`B$0HSmet1AM$#kvs{yEmfm?wOguBJqX#k_XSC1&~ybVTtzO`(QAHr z%CirW!+v&i;l>qvhF6jFJID#mbw6E49+UuvdP3eZELtL2J2i2CYJ{4r^mhGG&3aw# z6VESoz$HmZy+5BVODs~2dbAk-B|2|)>vp)+e^%X#=?;w&b@zDvFVp`29H}P%Ua4{y za2qP1$$D+5oXTYedm~xo0TX)hnNFev5_HGm`2d!4U?4nZLps_UYbSThRZaNU-h}ia z5Kf6-TbLu7g;P+~8x3x6DsuvCp_T|pV?bDg#bCG9_4o)QK@?o;bitTO5Ki763o53A zNZ?#8Oh1kfEyWsX>7KW*Aw#k@vXF2!lPzb~4b*>!z(}+alMt4@Xbv>ziG>4T3;jty z;dtf-85mpfasu8Vh(~_awJEwt{BIUOBn6IBzjFMU-Nsdu2lw4oBu|BtBojev{1=;w z$wj-i=0ZITb}we#`Uy1YY@C@U2ZM~k`EP6z*~&QzXoO*!jVIrhe{xRHbQKGEYv?^K zXCm*$2Bn6JYN`$tjk;2Dtee!aUBFp@&G_5mdK;n5D zI&rD438>rjJ}jSXb=LIF5OA-wS*kA)xLYteE?vk^4}w9D_zz-X$$NRY!G3XwS&;MG z1)-V)WeWySdVxS%U@1x%sJVsA?iH>|NGCqst{2`LAaHrvJCV3fSD=Xv0YVT5yFrq; zS$P((L~P-rlGpIzxNn^AvGSu=ufob$A^W&L19(t<-J1OXJ4|o13hqZs@C`H<+hb=1-O%{GIkIA`U+oqHn7-O(|Ivm#vg|duYhZU3=J7 z=@of`TjSDjAQ%zwRDUir#P5t!gL5eUR_T;v(C(SRq$%k>Pr1Q|JamV)3S$}pxm}{fgNy>u57h*~6j+^(O~eVW ztw26W21Zc*NGb!)d7MM-15H~yE*d)EPo%Q<+)gMXXZ9Sd5m0X}ZH*gDAaYf3k6*^T z2KglG2W-DVchLHEe?t1~Q0+5HzOiZrzr)pNQeuln0|s`1?{uv}UrIT9bXO;8j=~6d}s|^pBch zsR(lW#MrOS{m}qsltxp8+^1Tr?=m z2A#U<+3Suas%*>OgM$brP&DBId6g$kGBsq3gC59ehF-Ul|NP+A>@YeWJ*10&CT6N` zu4X7+D4;jtKSwy8f3W9Jfb_)&SuALz%10z0>T>fQ(EIKSuD@K64215Igh`Q2$n0kP z+x$V72xmY6xkGoPScDpdfQiC37HqN||D2j{&P-~TG0q^R00pg8$F}t(HRe>U3eIEF zKr}7P19#z7qz0SQa{YXhCXPW~#=#6+$+^C#wvip33Ssd3h{s`LU~jC&*o^776O03D ztd+dvExa~0CJk8>!O^kO<8tbFgc}MP$kFurw=BtUBsiPzJt#L@w2`X|h=Z+nr^~1# z=~b3~OoHbqd1?`MyTdv$_xrJEhDW`|+qv+ldj6H^8BO>4-b99U7#yc)hO35`sU5vg z)#St_tj$UQJnBmNV%=&BjAA$n*G#E^`;t{r3yV(UiK{=9_L3uOC)->GcwixteuSb4 zY|Qd{Kv41VxvNkq)MhxG`!zl9afEYR^EO8K$r5U%wYa~`f&&O712#NjWzKL>W-w8* zVP5yr;sL`buEXjTuS8v2QwvR~2%oquMvnjsEZdo!+?L=JyZivFpS{*q$!OlP9QQJA zr|kv>@T7UP12xeXu;!MLL09tE;uoY5&0k(HMVH2i@FB1eF@5%!mcdMVguv&cYZ02& z=?6t_zG_>kwbCU66tMS)7tn#u-1y9+YXN3~-V}s*^!@{$r7ZaNJCNlrzUB8KVXpU6P6Txjy6lZKxKB34#=ymyNqy9!%|o9C z{EpvnJ6q{TCuA3`Q48@a%@vWxzrar!O$m#;s-*}uNm+nJ0|*;T5viMK4H-I{#H-94 z_)3M;)nm%M_6xl|{IrJ(E!Bmw9|&g9uCG+Avzmy%kT2L`yNld{)48-XIy?%R?grs3GqBFkc_flZS4;{eTy`B$rU)M?mh9- z0J6W5TCLz%k;OsLiMARStX?x_TB_J;%UN$XMe57YFmNc!f_vy}TLc;K72wz|LUWG{ ze}oDz{J4Y516A;x66Vjrbc4SMoGJN;;t!O)|7&MIt=j}Ox+x744zKBZ@V>#~IM;4k zc!b!@sBMyF1w~^C5gLf4S4`my<53%X7Na?!|MGwt9dPSL{!KB&&=EV>5o5@|hq{85 zOQ^1z_@daS$0*z$?M#=mYmfv{xfA{tP(d`)lN_A9s=YO!;l}{@s`c%@{!YhWt3iAH z;+(im(0k}V4m4rJ6nBd5GVDN#Z)S}-%yS&f<}(txz%VgIr%_3QGa`>EvOgdDd0H8~ zYibIpk`3y;I+q)*jkua4NWY}DrO##Pe)k4Oq~lAWA~-HlsP;swUIp|>sd-|VJ)xaG zzM7_D-^WQ{xMlF}YZyVB$NJZ9NlBg6iJV@&w8q*6dQh5cX?9l$rj_^-ol?XQ_G8Vx zM>)VznykPz2jKW)CJyjhH6R>a(xOVZ!aKO8^!ZO-EK(nHl7Hn~RtaPZd{7$d>L$Gruczn$~74aFN;9d(YgU z8#QNWK7mFBj!f9%c?We<8Nfr@^V3Z=96;j@0T=IJ$m(Yh&AVdEcikvA2@K!39OPkE zYJ$#-nMv!fB;Ai-jB3KDveS(7-VRgvSv$PBd{DK1nsh5NPFcMJS(kf zeB^Nb4FtTDJ$nt_5miwk*PSh9N)r0OSVe#PxF>ag2gu3`z8eQAw=j@%JXAf*Zi4>I ze?;e*bh#)D3mE~;B|u_e4fBviyv8#%W`)Liy@^tbAbrT&La%B;8PCJwuxuJ^(e4tD zev|!uA6qrTp2BBQ#p1VAxSuGjuCA|dbwC$`L6_Sl_|Zxgxn5;sIl)~0PZY}KR9x&q z_Umtxd4rmMpGz=bK`)=jkXZ{vzM#Qy&943G!2H`-zFhAAJM#3&Q3h`-bGR zJfLoefUE7@+=2xldNXXjbyhAjAY%UEgefsy%NoP<m9TIHchJL?o&|YVvVRjM`y1~@Z0_!3WzX1~j8qYVD8f|R+ij%&k^Zv$& z7TG>Fm~Zj?n34kuj(^|zFeQHmOLT0_WTFkG7iBZzS$D1@8ai6cD-w_jv22usclTE< z!W4O_{tQFv23hs|3kNVa;COCboE~kN<#vM_0XQ0r^ZQt|>x-?v3n*lT*IL7Xl|??Y zkmVUN6RXWrwO9xMe-V%xsH|P0=lvRWqOkO!T*XvZ8y;kVv^#A}S$Qze8mko@q+ecf zF#74!4&O3qRMxv1wJ#9?6bwv9^3I+u%cR|&ab9Cx7f1~+(SL2k3w7gl74`Ath^E7w z0N>6*kYlg=GdpkaBt~x>-XLkBHDDx_+nbS zq^VkX6fE>{BSXTo%m;P$bg`YPdca<;G0O<9!T1aI?}0LKgAC>Q%Jx?!tQQ<*oHtx; zQIj{uZHTS5GTfG^6lD0@jw?xwn0Vm$7E^9V$kgY?fE!pL##Zhn>e6PXh_N%05P4X`6t;@v66aQJHkH#u!@Int<>emg z`XF!21j2{r$kyzF&Bgd-T#i8Mpm#%qUPUhqr9Tq7+zwqeRH}(1G0hJci}VOGmX}xf z13GN63w)mKs8kK=N+?Mt4>)L5zGR#Ua~zK^+GpQ=`RJ>Vc2`-#j!E)81za4%9Ok^N z_2lsL-Q%=bRtqAzPdERsSvfZVU|C>ZfNGq>BxbTk9+r#BysaqfsVR-`nmSZD|92oJ zht)^xG5yh!h1DB(e?5*oD3j0MCMR*{z5fO@d}x%e_ow1x#NEr;uA%b}!hh14V`$9A z!Mne1Jj&U0fQRC|7-#ntr_iT9g|3Yphh`|~1>C5j*B?Y4!&M>D z+M=F#2T*EOcgoikMN-2m5ajLbAIZq8W*FuMHtu;G^k!ms;{bY2d%n(s*#4q~j$l7M zi8gHj{0SGuSA8n*hXS^J6xUD@O5%1B+yO_Rx9hAkS{Bn_e(a*adWqusf5c`1>Utmk zOsFW(?H{r7mzOsZq9ACSWSxE1v$A>U4gl4R4MY98zGoTkYsi03hkDj|x*kX6DxzU4 zt)BbBaYsM$g=fG1kS0GIgGMRY&3XuO1gM4N{*@5-KV|6NnlwEHjzI~Z_@s4kGQe8i z6t$TU7gHouKfC2&wiFT6Yq}b|*tiO(Mft$IORdXV1u|mfYQ&B&?39%N7eoMMngigq>*MWfhvy6|wjt3V+ zA=H_1Ed+i-n~+B+1tuRN<{$F%TA-GFD>a)?Jbt|qN(!roj|1<_@kmP%D8&Hl@Hx2# zCX0WkM=i!<&fvzDBJLiei>gs_7E`&Sj;cy5smttbdC9U()+Efq<$KxpO4+i;O4;ie z*0ur>#|&V950U2134usOf*0HR8_~3Rv!aLu4s)RzP^UnBMQsrA_FTlV=%DKhF2+r$ zSiQ3v-807`ER>!oddgrPu!WiZo8srUF4*VgwQRd39v`UctA#tB-uE@CD*W<{*{~{c zS^P@UH}6mM><_u&WDwnjOT7BeZwL|gk*e9_!p~`qxo8t&&i$EFJA^dew{5o;8o&!| zX;P!Xr#>%h!5($ z|BSpvz3#5xG|W04wjvS0Ol8An$$ES25y6qLhB0DZXD$1T3L#wgzicWQU_Uvu9@0gw zx4PM6)U;%IEAE>i48n+!0wAyFAb02ovqf4vlUoEYHgBhyVqUMbxNNVPo&6Xv=|lT# zy8_g%g7WG~c(&d)GlL^PWcf^yGr@FQ=7<&r1O&w8k0b{BA6K^73o!7AX1!fN-QdaL z6y$NDuqy`Mrwx55u9R}lU+9&9@KA=oYW8h((>s7UCOdfUZVx5j7;lMd)|JKUQSuV> z>l|JsO%BJ_;xVEKj0|qV(pOK3(qq8voFpx{X9w!bSWidvhT|~*>K!MnA9UNcMTFR4PdRR;e%f1v@#t{Td!s^I! z!~+b0|XB4YgoR5Q?4W zoC+r9!ZEDePxp?oDfFF$hd*w(_oxxry6FAlWfm>x_nid(J027%tomh~|Cm|eSD99w zc`eOTq3l&$cTc_Jje?TV8aBNdHbOW(MmHQU!h;V~G_p6&x6oWx*~;ik`qNYO3R-B& z7>oll-B4VmR~dS|G(MsunEfCCT5XwpV`zUrS%=E#LJceSI!ct~FWBFJ0NjvXz}mj> zJ)ivWwLc>HpMIgsK3uvV`<+nNFkSF|`yQXmUJA`SHMVYS0wWKw_*A&Vk5wdbG#n=@RO?%HhlO+zU)u& z88|=@!;cl3cMF*?-!ZBid2UbEdK(hdiFC5qO_9TbA)@fV9d{ANtMtdv+IOS+j2h#Es5^ND81Bu>zzQ!@s`J&QP zXmQ<}NXy%{CA~j?5JYW%*tF4cLvn8n2n62IM2PPkzV;~XRH=WaX6`b*_G)q~$;XvZ z^ajq1uqeyX%eV`XhS)o&a^5z_)T7-=(#ETag!=!m2q3hURX zc}FZq{w2{(T8PN<`$Cgc7WUR}Orz`zhqN42pek=>dF%(o93v2h1YGA{-Rc8+hC;Qq zeT4E5;AO<@o}eT>?prgu&ol#ly9+ca9(Ssl-396K==b$<9WhEansY@sf4FhR} zWWbmNfUh*&?G>xX(0aUPfj}oK3Ob<}6{4^BZknVPug-gH_R`rmxsj|N52>dVX;Pe| zL9Lr1Bqt}E*wj)9KNttM`_GSSnTJ*vg}P7y#U|_xA6W;=Fw9G&Hhe!Zp*ZDvy+h5-^C)-qwtg@AlRmCzTYn1wQtPG&b+=b zcvet7BLrvx?4nGPQ85JCE?90uHmEi@RWma;8H*8DqJ7-d1mX9{^D4MI<6L0{tK$92 z;~>9X6t_ftb^PhEYf3F4?T`A;9}qLK_KX%MxL_XVEZ=CZo9bFsvDYpdGF5;iN}fQEDmG!hXy2T>^q~*WfHa zTS{IX1$YOFx*#eI{KPx;1U<#6Tox>%T!h$ft{cn@Mnp>G8z0Q~c zZ;Ru8Noype4iiv}!6^*#dC<#uCK=f|XgUOQQ{U z+<*YO{JJVBV4XP<@T?Md1cO^qW6};D)hJSV|9?z#HBC zlB*V}cX`!P`59NX5p8m(ahBYWL<`Q5$IjJ$o36>O?hX|d{h4Q@WJG_{ID;u_=TniJ zbn>!WH|w;BJTB3*eYShdOf^GR;&MO#@O=&IXc2N6*dVPPzjds^sn z=bK9O(079g;dNF0%>LiC*HA7aoqYMQg4>j6>` z;|~Cdr~C1ECCmm?^@ixkavn#BaH}1qpYuL?8F~j|G9g4dp17E;GndvEU&82rpPMz) znz6G0vL6lL-TI=5QKk0hjFCpE!2_cB`K)(=VC}vG3uwlL`DBK4ex=wgKRKeBO_b#( zpsE->*}b^R1V|k2^w2w@rDTS2`<|R}m^mP4h>WIo_gVsvXx2@a6fpRV{QQeaz%LRW zn_1rEFY(jH1iR=oK)UUa6R+hTlm}zB6FM*XoB@r@02cw04zx&*8PL=5S+uP)&4Idc z-(E-n_*N|A#WZze>@=6# z=5JTJm5Mno%@{42z~gy&%tu}2N7hVBA#S{Nj7%3=%fPlNLM7SoaPIlzH5#g2ot~se z(#x@hBC+CbL^?MIZePvtY_S05Cl|gQH$0~$V$n*^2x0x`1UQmLlZeIy(cw`hNm&qk zA0K%MaB$GOB)!(+sTAcm53ZN1NOe|6Nq%a=o*lW?+0P2Tl+h*6VKlTbz5O~(&Bi6- z9~rQK-1+5&+CNVD`Z9%1Wf+=pZ!pVhlrm@7D|Q-G;}>c$W86;p>)i_La zIl^9F7$r+Fk7V+FcN3Gzrs&oj1;}FIT*BqvTgQ;qCqE>7Q^dYr)rCiP9cDWL3ZJ)M z+nTkAN|$#h)GF4##}XyO(Qtpapa#(O%d&1CIKe9zS0jLKy_Asspmg!=MNNax!Njwg z4&xSUeMCmsPJ_0rQX%`VRHri`iu-9M1F)Wmkd}FK|y|+6P1-r z4rr(dDUwKcde^TSd*U4n_dbUO$=Y1Z8vlOlRk6$J>hWQK7n7rwuE%)6Y)gz9x=z6* zJavOlncin5T#-XGM~QSYFi>Qq|2vs;U=lnC|0iLak&ChkzCgFC{n5lgY*_e3Hm?pd z;5lIN`Ph?-Sz@`CXJhdyOf|<%@fR;-Q>{E4F_hpAr8mjL&FX<9e>B=3BJa+Cq^0<{ z{xFlGfDQ{%RZ~x+Ht5LVc&_);La4~E#3Jor zdV|f3c;!lT_735?h(XDri!VDrdJhdqa`m$vdNW$84=T zUys)6>K%;Xb`QjJTST!cw@6@qQO$lGUg_w%1p*|1Pk3|DeA-B`awoyjZLrX_`<BA0-?HJp*eYN0ITn6W{{$yHVZlzS%3>|s*S3> zzwRIOhd`QuU@Vk(^qE}~k(IE7#pKH`i|x0U;`JpIemyG)#LUkB=O2^@A-<#qWoAJ|fjEs3MI zMME9^#$OB`hcwz>F;Uq!Tg$NKJ&znk0J_&>4a}x2@Bq@@BF|1DDWT;x=SmT8*y&@` z1G60Fkj(2C6oT4tL_lSz==pK$%yoAl^G8t)+bsr{XyXOGa4#kC zJ;8ZRnHCV#ZdBOW)~=B-wfK|S{nm|SOlZ77vF0r6Ib@tInZP#gwec`1wVSHF{I zzC6ET&sz*%cN!NW?}OLQCmr4Cusfg1YvGgenXY#U_Xg*kTW?2epvYjzl4SLed`Pm| z%8nmzLiccGkYwpW%mr3B;o$|k7LqZb-mB)voG`=0-A6&X%<4FTekol)hU*C?h<{qs zr&03JS2ftW7n#!%2COJyI@6u=7U_`Aga(CWnrLzeZ-RgWG^0AkuT_=$puC=YGm~&?nY;DK@v!M;Vf#dWcR~k+dyJhU-HXtL11I$0(6)|7U0|+N> zqbvmT@Q)ok(5J-F{44jDYH4wW_UfFtMa?chcH7Q(K-+ygW2RC-_eI}(%>=wvUxCOf#-Z7=hD-Mz5>tx=3W==404|LxCpR)mNU;)27ktF>RwJMeIH zr~Fe9guFMk@qlY_M^VHo`vQ;SfX@k4k~jFoq{%10KlL{iGceFPvnP+Qb+XP^5+N^G!mnuh3|Rf1lVXy z@L0V7NP$m=5fr*DQ9NbIRx8_0Bo-bQXF0j{nv^7%&A0011a1V=N20JRB;!Rpt+q6L zoiWM*UXZ!3OjaXu{7Xul`{oYh2uT|B>tg2bS2yK$EF?%;TUh!R++qjyfctde%2WZ_ zy{~KcSz}_~)jXu)x>B;CI`^k#B`kJLt5-1k}DQ zq_WAT*AF+Pyz0SQa&>GQC!77oOv}VSSR<~|BzzVqdVMGnxrW~iXNbPTk5`ZdFYZEq_ob@XefSnQR^StV~( z7}*4Yq(Y8<^h*SIm@rQ1ziprEXAXC%O246i7%G*DE(GC*vYHJ#I+~E-t}nqq5k*V= z2|XW>M=yGL#@gP55H;a}pI57kYjUKMk4r&3`rZR~#qV_ui1PqV@Mtc#3m2J*6h!#Z zM%L1K10&;i=9%#?}LWn!q>Po#$@^zW{GX_h1EBlTFg z0EOhY6NX-9TDz&S2nT_g`bVOKqJM^#N6vQx-$`V976N~;fgXoRyiB!#P*P0Q?a(lq z28IT#p)ft*WwW0h0Z`|~Q>ONlU=121$5i`O3;x&VN;Zi~(9?7lKLk4Y@7aUm9WMW1 zg>=_#ad#Xydr=r}-IDi=Q25=|Wt~=J*>^sgpMUY0Rnz!wo($mS`r&82@tfEX<3dg2 zwdlL!#Cy%Md6btSdiG{Bf2QcYsk$%Ev9E{|Zof|OrZ@~7du{z`p0gDaRRXRqg(=h& z*{J(dIHQEH3|pgwd*_t&{}NBjaGYRD#RR_+WfRhA5m4q2Uom>9~Od5*OtlX0osN?l2A}Fvh{3!=T=gani(Kv;T{np=Q)t z@>e5_!<}l&2ag|DfXJ~r$@mph`zaZr`r-95p#XPCm{7nhujP-jO==#iw!AExTlTK~ zs-!_Sh5TF#2eE7rm7 z{jv84ob0<%Vw`07=>BU?26cANjeF&FV?%1$leh2N`VqR*-!z~xg?m+RM^!KWG&BA= zGtU#bp8>Q&KRE3?aUU-%V7e#v+L%qZj*NO}3ohR)+8zc8U;$DrFooU*K`+v(n_|K) zfm#YE*+elNt!y1PQ(<2(7r%!4dYJ?t5(9dh-Hz2U4Oq{?3|eHscZ2vEtK^1+(D12& zJr)Pg$ax$O$Fukz;jSB+HjPrVt+frof9MazwCKl?SihUR4hu(^4J);T@DiX6n0%vb z7PcKqvDP@uBSba)q7Y?8=8snh+elcdP*vgEk%n&Gpcnrmxmj~!=nl?j?Y;@H@6_@0 zfCYvS))kM%CN?bA5n$~VmSHH6zd%8~WWuYvl!a;olE%Ck_>xABb9XO62HJUSs!Dr4 zTNcYI17fh{f=!2$PUrV9K*EUY4&OwhEx1Zyk_v%ir~<@XgP zT$2&toQ4i^zR_}>cPxJE6oK9)R^fbVNF4h;@#?v%q3Pt_VMqUXZ~Z_W9B^-qoGu@Jp#UH z!+*UOJ@MJNBHyncPs0P=)XVdJ_ksQPG8WYS2o3XE@7prEppNvsXY>3k&o%Gx8u(d> zoH8Y6X7fO+!2KDOc2411f1&Lrfh4(uH&)vihqq&2aj|L@1*XiT5$+}yacCPWP+;PMn)d&Ybb4Ivx zcqxaA$_>6PJ`4DRY6zMiUT9^ZE=z}00>cPB+X;e~f2f&B!lc<3PX5;Ray^Cwv7OQ0nbJv6)N8R=)2}HxtwqROXGZ@zjkKcVJL@ zrS$sh5dOu5x!3&WYeO9`86CisRdCoq=JmP%{b=ahAlz3eE*e=**Hy#G0}l=+Jr@tl zK(0)!(76eWgnra)^G?Sb!k^?W5Tt9ax(XZ#)YsFuYoX3T(ZwixAAApEke0yj+jWh6!V{1-n1bToUWPr$F3#*Gu#voxk5}mcw*ti$Ya8%iw;fb-xxbsieuB4OQP5=b&5KA=AN6GbnG%jcL75`Qtg| z73WKf4_9v|;3kGAkI_W83K76bL_{;-_5MtDU@fkOZ-zDB>NoT_l|2wXJ+BsN89b@h z307-{6uRe@_)b+=AX3P`qkWTkDWIAVcxm0NVeC~dYzy`o4x4!I6zs#spw)J-`u8G{ zfEbkw>k|cLMXk25>5ufaHnU-QuHk*L#3k|_ne^O)ToKxFb%+T}m3@6mStKu+COYwc zruOKxSto{2122#2X~Y<<{!kIe^@RoP)vSAf%`m&Ao+19_RkHqU%yYQ$fYz&)mixJi zV)c-Z;eDm~bK~h+=uL`AjF@ZdjHopwv?OKF^AYgHU^8J~Zp(g+rhPixo|FU8Z<`PS z@CCrW-oyIc%rV?YuC~ZL7fizs;Z3Q}zzl=^ zoM4r(-R0$LPpou>*Zqb5_Fgzi$npS@Y`jbPmw2Q>zPru^O<@f6#nL)pA z#)Dz=uVi6flRX#ADlx6#D@#A5pdZa{Os0`UuQYpk09)Rk=wml$hPHIcwMQfSuOwAr z&DqOe{y0(>k%UUtXrdjzW!&>LtvcJdJf&Lfyw~)zzWT3+p#odt-#-Zu>Sm5_GU|OY z@4reME&g8AO|u=y+tF2HBTdw!E1YdYJ>eZGL?}_nL0QAH5eP=}azzi)dG77_tBGN( zRcJIZ!p*wO=zLa7W@LPVOJNIZNy zISVs#^fWE%6#b#SsHzj;xa^$V&dF43NW&qqPj0+V`li5L!N}}dFq___2*A$Np6R)l z+JebG&#(8t^&$(a4|i-0+_)tX+BMa*<7o{2T{RFBjO}%Iz)q+?fm+0_pG8h}^lL(S~XeU?B zI&J@+eU%Q&PaS*=D6U7A{ZOTw#O5nQ#9xZ6$@@Cp7CSU}Z>?E7FqRGSvL_ndK@w^? zDsdA^;BB;M(r+~5Ui(O3S-i-y5gEmCyH^W9cuc)NuoyLLW-f#uCl3+9b>xdUC;x_d zF=oCz%EN78MX|AhAloXN{Ga#dU&%;L0hWJE!nXVMhL|Td+U4mXj-1U_?-+Gg5xZ}p zDU%Zz7FZ-5exuII`_!HTYa5AP}ccOJd}wi&4&rYONuVl=3Pyw7ny#W8~yq3F;G6# zF$c_cN|kCv8L;>fUB(=Ccn+Z=O}wijudcN~CgJMU)>jx)**(U~S$Z@>$?6pvN(j)k z-NEc);TeW{Y7a;(vO-`wrt`{NLzp(}YB|wU37Q#4vlXt_@d_#~ZSVTBX(s8gG<9)p$g^A9bE`S!nf1ZZn53X*k zgR;sg#)&i@D-6dr%<7{aX-8r3blvcvGnoB5(H+5nzjqkCxfX?s>UBUyd6LK;+PNK& z>#&0_qE;w^Oj)?u1hi3&4j5h_Z8kPIvXrP!o?z;lki-WqWi7Z$I$41}ylwPixd%Fg zdnkDnI}Yd`&|fAOX?b8cPDaJ3kU;#-`_hV{llSFK69(C}&{ZafYkbd`{oC7f((BL_ zhw2Wl662cESwDZVaZ$6<@|#SFIdH{zx_5kkxNM*Wui`XvZRAw`v9(wb&5SqR%f6-2 zr$8+bj{VNjQnaFy1f5DEci?bx_7)NFQ(v?JT#rALi?@vf8`3fW%yhR=E`M&AhXxt0 zucT)@1D^SJsQ&jYDe$jFnrr%n`<1s-tIfP33RdBO%3oXEDybv;p?d#;QEhYb$8Ieq z7mYT>h#6M%sYR=*9pnq^ciL|{ck-zs%*7E#lp0=PW*-cf=`lp82iq?a(Io)92`$Sa z$_TV=pkMs?uZPEYtqdAsUYqOlaI1MWpY#LdWS>PY$8!Q9OMKlvlG_8UY^3YAo!8zu zpSpi4KN)6T_o%1rq6myOH=wSf+M?26zk1fWW-!mxz?^X3bty;gqiNDFYs zdDrp+Q0Mbwci7=(g?K}5BnZD+loavmr~Vx-tLJBiXgWXC{2y9FB=cAYi0vph(AD-2 z7qGJW|F$K}@z7rRZGfjMM=hJj1Mh(Fs$KWm-KqX^w`g;u9F`g?5mX?082WyrE^WP^ z+|bcCHV0j~r zmZ-QbC_QZoT)yn(q*rp|#!0cA_)-wC7BP$4!BPCXY`Nav_La%a+8QBDz^=DPybtMP z#C8OyqQ{6qz~BsT&4ilO$jtF@l8jFUZB`{mqybeHxjC4-wb+DN-!JIl>!v_ih?)P-kYeWaJk6tm%UF_cz4MCSj)%``VZ%YPbGmXDP?cn`-u$ zJxYq97C>sP^X|^^=*i3~qu-79s3DYEXAf-`d^TF+Q1`KAL!0rLVH^;V`)IX6Rxu8fZbA9dA>V7O}mX3pzLA?_DfUjQnEmY#~JyCASnufayt zK-%L9Phdm1Vi_pz5F<^YwE?)hcgf(n!@NT@Kdf))i|G|?bu&A%92(lVPB9Feh8Z>c zmC)R0%FgtR8R-u?fyXSdKaH*J4MMs=fX&s>57?Y~Q+Qr>4?mB-L)hG-)hy!c(VND> z1>LCn%S{YPU_-1hE-+Th) z6eO-;`3;j|_CyTOc!nuE`p9OB8)J!S$o)E0^?3w-(RqR5BKXzFkK@89v$h%=>fKk0 zc=ZQYlW-tTzs*PotADTpC3{DcFkgmd5}l#)li-5TgG9WSDgBLx+25@ysnE3U^zTX{ z?#Orj96MyejA})u!tF^+_(U1o{D&WQ4r0+JR0l3ET52~AIQjp6hcP{JuW`MaFGx*#$j8gBuYFXW!)7;Rn>Rl zf(&g#}~ zKZ3J|3j(>U7b6{kr)$C8C4>&VS^P;o7~UUleShhegcNIdH`gh!756 z)wiTS{(X~q6qa~eUCKSHI~#pTwdw@wHV#7ZwdSM>%&h zqMugKwngYX8{VKV@Wa&QV+$}r(93OeSDN<$Tb`8Q<>B6n!myLK>p+rih}_WT1LprU zkea0E)hIU>!q-HgIDIHw5XhEIAf5Jw_r>x!r=Oql;WzG~kw_5f)NwtMG{4i(hIER- ze_g57am0jjfcCf}J>uHqkYHj->TmNH)p92AV00{bL4f@q%CCV0f`2H{I=)^jS#cZZ z&))ot&i%J}MhDj+Hh026w@Lq6c<4vz_MiQKl)YtKRBihOx`!bp21MzQk`8H*MnXVQ zlx_qh1*Cgul$I1J2>}u5u0gs(kZy(&VHmp4=6T-teV+e0pUzjrA2av9_kCY$U2Cli zaE4!RW?ns(M6g;Bq2AL0QJ3&GSgZ<77%j2&(kp>jI*`MxY9c|9wGiR>Pf{|_OaF}@ zb#Ms@4Bz&!OhFroQw^8-W56&<===+H$#KFvgzCVeRjE}1E))#Bu*Sm0Ud7&sQsf1A zqh{y`lfTnm9549$gCsbR=`#9w0PKfr#|xzW4}py#AY&kGpD=Vc1czCzt(CSB3BdE3 zU=QKd5;6|Cq$M*~RLn09Pn4tSrB_KhyFyXRdga_dWZM+#;xhdHx@W-;#|#+Z7W2q{ zbbX}&bq3X`4N2-g%cOI$BPYXbtx7@UdnYRR+%%_<3c=8m+HM?rX)9nc7D~TqgsBRE z%8#c#Vu;Vf2QU6Ea_GV=kEHfKiq*}gF~^Q!=usrIllSatdUP-Bmk~WQ7h5y zAfTHetUA*Ng^7srX~$!#P^~~n{Jqv#!|-3aqcf~?48;(h2hvoOhbQL-lsk`tzMwDJq9t-*bFM<^*SObjto`D`BXu@gi?HIqE%r7B!GmiTjG$gd9_uh?quLzP(3YPjs~H%RNcESk&inPbTBD zzsvS!!C1hfS+K4h3CLJm0SG}Iz=Z142IR{b#BuLbmX*H6DkU&~XO6`IFxYrb22bJR zp?V0Qo`}qu18L6i;?)0qF%S@$JO?3w6@WTB{7ndl#$p3`e^`sJMlzIkc{XbonbhV> z?`Dw_HJ8HVqy*8w{JPuJ|AyOSa!@=txm=N|4mc>Lb1g2$CzqNA;ENWdsMHZ^$o2g_%<`51l%C+TD1eWAibvi%r5uZS61)rU?%L|(VJS|rDdgRp~NaV(c zX=XXpA(Jo>Y^?txSDr)dRJ$2Q{LJsy0 z#nqU|2=xFXG!CznlivZb;IR@lV4a_y1pciD|N0z{p@%e!RkjmH(|&**pudgbHwh*A zQXgzR;RK0<)?)Kk;IZbHpwJ$iE>>e+Bk!V5mYaIa`$K4iyDe>JZrP zBASrTvbM5HaCCij$2yLPn~L?va1XV0D?O5gm1Yy1>L&}HbVcI-I_X{#mcmeAde?7- zQmtaW@!xrQQTe_&-rP+=nj=6X=*~X(l@rZg`}a{EM>5H(AfUDN)nfU zf$mabDrK+)D6!$ob6b020twpNCmlGG zMBG6d({F7k@3~LKBEDaRg^d+GG>{5!o9RwNbdZ2lcaV{(tB30gCt$382C?T+*&n-YI4%VU;wH6jfd7Gi}P&p10#$(jei z0E}p{?3)r7-&S0VN!Pri4X6#9X7*O;JKtUOxw;KZh@fSOo3HAB9}?^w&d$kxrM@Q| zD)VzPjx53iVge~V$z8Ep#6V!!ybFWT>H!Pg9h%i>X_RP{h*!Gl&w9N1(D!PqvHVAApb* zU;?jRL@q{CpUBPm!m&g>y2!5P6PhrRT{zTW5^-hi1pKtl~Y2h`f>^WNJh44AF1hq?|5YPcI8hnxb zJOr(6^Yd&`YFXK=};z4uq)NWm|8!RxmmVBP+v-x+Dc@q;dHCRKFB$M>do55E5;xNXmB{tv6 zwLg%T9ZBqRjjpncDyQ;twb=bE-lb3WDlXVLwl}d2zg&$xnfJ%J+-HSrG~M?)_P|cc z!j`()ixIgI{19*qd7g<4sQT@*RD88CFr!N9<7w!JCu?RsevK;_rG7B17=#tY=ZX9C z9toK7WK9C|8V*b@>3{_5-oqyzqFIc8DqbiC21mTsyf#<)?`002!&gEGnniB?X3!5M zB512sqPfc@S#J@?QFCe2rX*=z2N;je;;X^Reu#R#n`7trBpWKv>swc?NTnUaYeM-c z>wwPI{G(R_;rotT9(2^NrxVWXu_D7lDQJqznZwFsSv~&Dzq*HG{Y5N{=xyF{4Pjpp z?6n`$k}~@yOChKmP=1yGd!3YdBRv@Qy(-74^`+-=-Mz84?UVcOkt0LC^^O9Kn@=2U zo=WVsH*3aVLlwQ??GO9wh zF>T@GvTB-o1+ogdC)YLgC5?E06NIcfS$&YZ+F-HN5xii0Y}o^&a0^_9|J>V?ESFaF zrZTOqV*ah;Iu%$e+w67=XI3+{ok`IgqIb)t5Jh1muZ<3Jj#sqNj5gEt+mhaGkw=~W z>?>-d^^nii|3C#iYCfOaee>peB<8~AXqMVg$jfQrsJe!-;HXISUSepZW|q?fOsadg zh6%j@ZI9(&a7EE&h$9osX)7G2ZWq!%Ve~_EqucVX)y>-)BfiD<^Iy0KEZZi)`bfXV zC`SxI{Yf*d7%le_YrFgp391S%yLK9F^@bN;Q;1Z?0HRy9*MHY?eutmXpN=GI-Y`-H z5Hyt$SWLNq_$Xn12uOXk((vgy#BfINeFZ?K7%f{cVvVJU$2j>|92ZbZ0CXr8e>*j5XFZZ_gq`H>GUBoq(Za6J>5f3@Pa*xU`CR^H$f*V(Pi+o7nYK~!l^ z99dkY93oAjgeTzkEQm3xV_ttm|qN! zXGJ(9z;G>z9JirhnK7dAFCr-#B$DRq6BSA;ZyltLTbxuNSS0K6*0tI`kIy`OaQ~Cc zWb)F;!I~L#l89J_h8DY>>|sE~J<07rer<|-hTE|Ze4o)LMml|DZnM`eR>KtwRW72z z%g%HQ_xvG>dF&{fRdg_t+9~ULm^N=DCjzR^$Vm&r+wfr{R-6CZ9V!A12SWn_>;X8AED!oIvlc!D^ zKCg!mjP`|FXX#*xuWc^3h2_uywzG7ubt5y>jVMf12h3aTjwAp;f6x=L(i z`|pdChR}luB?MCLA`Wk~zUgd|n401bCv}xtDzXc3eRP{``?xuNmk-#(SAfKV zX6W-zyVr~7e%e3TV#)l*Tq~%)OP^Or{}!Z@<@SS*Q33m|B3c2VbP^+( zULV_H&uL3AmZfYNh6LPV+JhF8bng;IbnkH^)ehIWSzujDKNDF{Sj5*bPcu2&ceVPI zy33U0#IC%hYoxFIUrv$=zmxs?VKd(zLjL$|bk$>yUry1Ex7QaXLwg?U;2fVR(*4wL zUcSq~-Q9;C(S2_I*E_y^N@}vlJz$^y#@hPEt79j1R2EaH(OB>&k(@tS4G$t$c<6BX z%Rxxpd-^A?R5wIw32V4hSeYv@vqV0q1Y42&D8QgLq#f{CpFdfr#GxMvG^*fv~1C)s*&VF$iK1Vo*T5PTm3UKk6G#UeA0@t-=@G+AuFd}WQ>H`or|KY=^kL@l0>i}xUII!>xu#vv z5!AJd+~li}N2Pkbo33%zH*Ps`#nZOgdymiKp|oEbCTZ6xAWP)@&e|LUsG!gkq&tCI z(3rwGqx1-~peNXby2Clqt*SH`u}{((uMg9&ZK@Xmx=w1?YKM>aut}LWm+5A*&=oQQ?~_U| z7fAEYTu0|5X9L{NWY2`0z&4I+IW!+*O2%{>yZ_Bi7w)?RcE$38DY9=rBAq*5fNxFu za}xek;zxO9;mJQ0OlvC{#p}tQTY?u^jQ8iJAoNuPPGmlk*yAd+85P32?YsSoeg^u; zz-m?<6o{=+FPtb=*o=Q&bBghvt>iqKcbl=_83E@7DC}=2Nl%}Gw%Uxft)db)4}YY% zv$x54=JjdjwKWjTn&Dx#pVB4qMeG9AW=j?Z(Z4=4zDDxNdt%`F?RqcR-rONxBdl9( zr!)jR%MrY9zJv0#>aT*hjgy`V>aHw>xll{v{nQCHi)RF}Dnn-^Y)Zrg*a5TnksdDIy5APfYob!{BKLIFaVkl`9)cG zRZo4>)Z6uiOSWhqVN15~V`6$JtroIAJBPw-O*ys$t#&U1^o4`2uwwgq2M604jf(+E z{(6Im*NG%11oojVz!M~i8Ba9^>Lur65xobgAtf*G^HF$rP>d^U3it3&u?Ii?ruO+Z z=2w|v^;7CSvS&pvmqokZw#O1Qwu!ZyFAKx$5{#|HEl=4P{@Q@Y7lfC~yjR(o2NO*@ zt^@R!BlMI9`nQ#mZ5u#Lfu5(ykIjB|v{q$>ML!M8aSL2lARQ_o(kAXn--WL{6`bEuY939DWF1HRcMS`#$ zh|v`01KwoK&ycjreFFC*KJ%(wy3B9RCf>|KC*@3IHASCC4=7%}K<)dr=Hk74#UA}Z z(Wq`YacR6Wi`z=*364@nFQYaVs`}12H0vQl>DPOTs+Ydc*05?he8RWKS;+0lxgbnU>3$0amF!JeZ~htY&=r&Lz0*0#}n4 zlba7%O6ayRX)%C(4exd)x}|v&qoiQlMX>^d)lC1Z(*e*oYfX-2Vp#LWaQ_B{-vnT# zA3bc@f4JuKD2xi6)^_^!T@GtXNbAN*B8ZY>m&SP5wYkZUgFI=)=sX*OI?=3HgDNbIxPu%yWbN zvx$~@UdKI3d{*D(Gq2 zh3F5_WkF%U%nM$pbs(|MsH3G$_fM_OM#UCkVp#Gtlr*)<_Se^QGF&m{PtlsG<4K%S z*>w8Tj=62)Or>WX7esaO@GNnRh z2r7<#XycAbH+6~b-yv1#0SvTSN0nT+roNCX(yEqy(ELGm*IET5dS-s4Zmbf+KJlIZ z{%@IJroG!QRsKd9&pfX}4+3Y-Ra*{J33HDtsO6p4I2awKw(>{boZ~JIyxwCs=J4GfX2Rp9 zzdpuB4LkmIVEg@`KSAK6?hihUS(N{A8nTeVE{Uj}#5su+7(`Xw$^eSs+RdmBbTUak z!L~-Dv&ve2sCXiWliUUW>q}5~qoVrH0if{frhYG(o3_(wX%!|-r>van6Y?h?j)0!< zOS^}Amdkz2VEsl+-)w4{Qqfv!hb?p_SxOMwc{+&}gEYuU!vzG_W`9I9$$U)My$l|p z!Ev(Dw91Xk@5r@RX7BBbwX|{*inj`RRv`4wF=1hiYu+4UUoKkVv&nd9ydaHy`cef1 zr*r%3zHnpohh#zhnm6`zhXqQ9WRJfZV*-QpSEw-T+WtdAa^M8azN=j)Qt~=E=OjlA z(3q^+@s<$+7`|W@#;k;|KtbH3p-JupvS=M#1F_HFS4^Zj@K)cc>;_zPrRh8UlOtd;li z2-ML7-;slu-x`oKDtjm8?{}=sC$Zm!hKnHtpVb1*Br*G}=@RgHt9#w5UaL&%7Z_Y& z5*Jx>UREaI(QW2A*}L3(1lMebvY_u33kl9n^X zI-F;h76fTZc3L$9kO8o=^*-qg|HFUcW1_@!6s9#D}maz_b}=%8t4AV z!zXh8>!)i#@rwe=2}fNA&cIt=NDs@)DrH`S&{+#svVQh;BIzjOw2sS0L4W9g&EVh` z6oNrf@wO6DdU6OV9}Sk#t!Wu1@5o{~ByF$^IZAFfF$z2z1GH}U&=cGt6Ag0wovnRK zW**9zRN|4ohWk-3J3t?m@bZ-f8c1Uyrbt6-tCR$e#u{$5M5=V3tJlc;;EIN4w6Ng7 zTaKzqgi3snoR^MenuE>NTxRME3nx(vd=3~UMW)kGlRLyJOr10iGynw-u*S*NmI5-} zg|$HKY6u-%7~q$H>z@QAi$*a?ph(x0L_z2bfji&b7*_e4zrT@uilV4Yx`?y_<{LfZ zwF9ubqphsU<2c$fs+hV(+Y+$g6!nq5MT7w%qV45doJEmJFSC%wDN^xx#HMPid1LF5o5mhqi3pNwVC+oL?53Ru6;GbNfZ* zDfw#ZX`E_O7DQq%X+_>48JRol8zuoye&hcTKi)UbdCittzSs%O!jx^3Se~lIL+f^90pG6nD)dmwE}j-G+E@E{m*>V>fli z-b=z+PaMDZ`_SO5-U>*KiP>H$hbm&`rvD1mGcPUY3Y?-%8Dw6g^&VjdxbEJ1?Z|Qd zNMeUO>0Wm@V(C-UlY6|9iS}E}4vFv3eaiMz61VN9c$8dwLG0iBxwc^yef2ZP#Y)0o zl?ZV5FAE`&4B>J+tgdN_%5CO>p!zv58kd1DWw>NB_u`_z@8yt_XYjyTh-&j71ON>n z0`MO!M(|0jes-sn>NS(Wp^oUBnD2zKtjt(;_L6z#1;N^qPOQmKFDSnyy(&TyL=t5{X-%2B2tuxrXt{0_@HhR@lkK0&`jwPkZ@a6-(ymx5{9sgi<45P8T%Sf`n7F{5r2)6 z7W01uT6BR_CU-Zezqd4tT?M-ieANuI-q{U5zO)xi(0NjQbjj^~gb_^Wl{2C3?0Z~3 zndlW9CbUi20O->T%hE>Q#ZJq4z9W`gEEgZ6J)|tD}S_P zkY<20#Q$1Q(5z%{1V#)~8I-9!D0)(1HEQTSH|~Q9qPM%+qrZ;RA8BekxV^GA3cVXoUk@cPmLP^C2#2cRiF; zb;aor0^so?`0@Z)p}-(ij+&naz7B6R6+;{eeQZCX#!hWe)Ro;4QZ=BWsq~i15s-uY zrzw9^bmN?CIT+4eT)dNB_@+}H+BKGWQ|He7k+Mwk=OG}7 zfuY+1qvL@_{?9=Y2u0=?Dvm*QTKsQQj+)S61rvj72Gn z@o!C`&}6jUj_|ye_id>DJu#bRt)veFCH%g6r52~3*-s1ocaV+O9$Z9M>kf}GOfsr( zoI3+xzQ+7~&@sqNd;@{F_XXp9FjGj~P6{*)9(oz9W56jbFNdx#hIoE&IE}eE*I7s_XmG>T%VO(*L(h|$QTDFMc*y4`d+`q(FKXmJZWe3s;tA5I`|AbEwXF$ z&$k;J#Gi6F^LR)8JsykWda6 z@8%kc`psOl$-8viGnkNLTRZqw`Dnhp<)W`;`{d!m>EK!iub)$l;^N@LUAv5nRn~`u2x`eLW&`&* z*8y8B8p@1wR(~`r;W_yP(R4C6$9XsY0@Uk{Mm-vCIqBdPcJS=eC%AnRlqT}cK$1Rs zeh0r2cM^Im{fvsVDb|`9!=Rp^C82IF^Z@DR>D(GZE*Rr+GPX4HJelHazoR`B;}N72 zNjo8L+Tx_WBKMr0^PZeQQYbNK-!3xI0zQdHX@1dC9Of`bE5X0}l{dV~ zjYt^922%JF1*Mu{v}*K7?^^iY!*|>!j2+AYGb~?&2 z29A8n->Y9+e7he|NaPu(7sg)LUg2Zgq)BA-7kP<16#z2MRCM$n7$pIVAQRF6x!@UV ze7;5o9VU7KCWw5un6~vV*xRmTnB|yu^=y(uJmnG7%Dg zxthl4TqTb-%e*7?!<9}HsCbY>l}MQ%_*FnyqkZVWySlVr)XKS( zdLxsN1b9xfxqt_zH1{Z}B0kM|{VpE3v5tafWy^mxZ$L+id{zlLU}@VvUZmXG7A5-w}Dsf>V&4%S1?I-Ecp9 z-y@T*obn-?JA;uoNS7kIhtS_v=M;85n8O z3Vef=(^l?H8yo@e(f!SP3z=08rR4*utxW?%KQ*? zc}nWIRQNU$Xxw6{fIVgwaU!B2h5brI$jQx9*QM=P1P&qWXVPA?u~y&LU0-|WAR^RhlQWE z022&*Px#z*9*{Mdq4wSmuxpVG@zQCiqvy-`?WPqA?6FBC$*Aai&&w&J7LdA;GDZppRYivc*P_?7p_@Lz>M9qF9fNeJ=%4nKL*$RtUC5)|`s`K)(1 zwJflU3*h@nEzssl;ixL^2}NP^5lJmy+)Ry|1$8L%e(dC}au5Gu=SoFEKQteHz?<3H zkp`QD>dXxN0Hb0LEH)ZToyuwVeqh=&RIUPb2QdlPxZhIqU`sX!Lzj{#s?9GvnUx8yKX4aIF;Q7{q>K1ENwdvj z36=zN0-o2K!i!U4l^HFVh&l3w+ffxF=rHLEQ|OawibW}(0b8RL`^YoRkJusD;h|B! zaJ(CR%P^>K$=l(p0F|=ycqp|8Z`*U z95vPHN~c#98WHgFjl1|SAa;<}3{tfLa}kPes06P}V9C626GRI=$Xb|va}%)Bu| zp!-gyW}dF(bX!pzwIG(gk*eV7bjn5H1LfP}za4`sMBmmt5J2dB2sFzyU((YYnuX-_ z;Q79F6ntQiL|<<`9(OiTOcL?s^QUDW_bOS6N7nJ+Z>~08Cw1<#-fI(j>`rX8C{ONR z08;zE4-dBO8`pQ~FIvCZ46uAz!U+Eb;uA1BG+)&KQtiZv>E8}1gRd?!Jr(tPnN0+B zaZ2clDL;L1@iFo9CdBg4`pDqvKSb8pjW8878JN5#`6gsLL9tVYxEp#I3-C$Fq`-Es z+Den#?w1ZZT3^Cy@Xb%59_MjJmVw@0VM^zht3>%T(X+YneeJLO_A1K zzPbcO2mG8*uo6b65iY;Jjvn2Lx`&UlQM!+FH|zGxDwZYZTQ2A%jC*$w^y&C2j&6+j60QiDw+C5h7>>J@`D(2C~s-U^Rv&-oQjy{aZ?<1O-e&Wh!FVzG@cr z;@DOl+Q|p!B$E$|fAwt6`Z3Dc&((!N^Kk{=@t|PoSG37fzP2x2x;inZ(FrF)PjG2(DKH3Da@ulzggM%MTj`(nzUl=-c^HVdw3Wg>9b$qafZ8ij* z!xP=j)He@Zz3@fLm`bI)AD1_^&47|iJ>`hd>*_$ry4aj-HiQa?hcar^&d|UNZR9p(@g`UYE7b)QKb<^+ zahuWz{&-GDc-vIQE}d*I3y0gI@HJpc)@>%syY{!Nw5*Hn;mix==Kndiasitys60*Jj@ayNEgL$eu)kip+W{&m}zrsc5Z97t6yam*bG zMe?{kSsISBd7+-%K7x1a*&BBHd9DR=p~I5%oaXEOt5=xHr^>7Ak77P3DWm#dZmM2_ zJ#~}s^9(x}{clqbKvMteWaSU^|A#oHMpo|sBaZn!QR1LgZ1m@IAHfTwW}iCSN8V5M zhkoevRdTrKp6b#sRTTWmv5pY84A+8KlNbxs0>C*XzX-rPU| zoCk;(#Wx9%CX|bM%E_lvT3V>Wr||s)5gGQ$kDoayEd!X`n2stu1%D<;2a+7SVe}b5 zTk-aXT;(MCX)f_(6|l4*>pL&;g>P4xW@OgBO6uNEmP8oD%g;hoAo-$Ra7Z>_av?A% z+Lo2b=ks9uoyRJJF?@Crzf?8N_yAieO#ep>Do*j$9VZ-@d$eAtA3@(vWZUBC8sVlJ{SZr%Z>$na zcw(5-dcFTFI++qQ568pyMwD%d>`knOmSS0zKpQa>PeDn;pNG~X^DoX9yTU>vOF09{ zUQ<>pbO%e1+I(!y{Ew(r{YKQPZqH+?E663NCj{l-9Vh1c&u8`nVVk;N7 z$%fJ6zz$0Bal@D*4T(J$my{$f7N1D}#r5>p+$dRV6qB8wf;!=+A2J< zc3i}pw~Az>r3a#N0xm64;nxALiFCfVkIV`^O?S=pGY~%a2d_oV~UROX{EQGtNpnDcZ;1&=0@%;Q>dzG zE~qSM1a@6qg+4~;i>M4c=0XgtD>3en5-m~-QgLl`cVh86dB_Pnq04c}oZ*|EgP^3A z>tB-EJA@aY{Q1rIma8+%SNL#9^@Y_8^kVdg^nS4_egg&_jSJ0Y@Z&C`d%R1fB)Dy) z2i-yRZqTK_SsN3E8|gPgWqrH(DC&_sspd?%MFcga7d!_N6cZXIDow>p#c9xuJFg6z z7nfY!o^P7r2b$wrb|6w~DX+4{|0(b92|2=rP&xFM1$AKNZYmgtD+CT_*o2He|FcBx zCR4c!*WAWfh8UDlo?xN!&W1}#Vo9pyP+glOT|BscKXMr!j?#4hy}xvTzwHD_`wHO4 zi`CH)89|;gHY$M&tL|)u_nl$b+*IGG?kHWM=Jc5YWEW5|)ua@YA!P&0N zx&Kg7%7ma#Wamau1LgvwtAhb8p-YSkruh%y+%W`>Q|C&wjdn4s>1wNGnk4?)I1&u{ z*>-)ZDiB16Fq@~jHJhd&No$P-uPJw0;TQ>vxb&ljB=X00LU+hGo{uIVjGDiGtktKJ zQ*r0u3Sl%p95pU`{Qh27y7tS&x=0Lz2f`A8E$v~GD=CiMw`2OAjT((}x|F#qzh-D6 zu*T1?7VOK*Kqh4SFt;+qF7y`n)m*NYcWWQe_*aAnTdW zGmNS> zuGZE3Xz(udpnihZhUNEaoq7fv^2Ngp>3j~OouGm!m7gtr&)~14E5hm$Ub-xKN9u_g zqQAv{fLX4W(QFx+>+@BDDtqLx8}du4gwleC#6kVuvMmpg=m`HM4!am$iQtwP{#{Fd zKTnn^GNP`9ft0er?T?L><4v;SI`Kx2>W9z&D+p*DLA}6PeC9>27aT;WprY>RQ}x_h z9)ZcxReG$`LjsClnNMu04hh~Rg{2plPG3~dh0&h_&`EFXcvV5_G48DShppY^{0=%9 zfAEh;73n;e)`zr;?SGlQa3r_~&;GGd^;wm&xYhPt;nWMjurw!s@WJkLQ{@MPw=eK! z_$;4Oy`6ThAV`*7`uf>wBZtQrQ{h1)@;S>5Xie zcV4sd<@t2zPa#v|1#Si2x4tvSX^e4a2f{G9^qD!6Mkw=}H@h+Wceojh!@vAnHtG9J zHTlL{jvt#y9Z%z{9(@^V98f%s4#A7!d|I;_D8F%G1R30jtUTyosBMu=M)p zY78HL9^3Y4xtQq{(P!G}ztQw7tW!ZND6m;1p-tOb1w18H-{bMA)m^t2YI@eK8wzkJ zCRI`|!zW9^E-lCZi|IZjsM> zHjU-cXZeM1eVy5?GuP=wnDUtvRcA8y^Jy|gSfjjAr^iMpBoT+5Jr83APiDjb;dg1Q z@n`IhY+1U=n!D4TYK?`@z8W_*J5yTQIyQk0sOk<&KTj3)7+w0Pja zz2OLnk=ZsbYKCq4ZP<23sWhAaR4M<5DWdsh>?(hiyQP7#!s(Z+7{augcS-$B-#D`w z*>!&G3!|TM#+3hbcP!|S`d%gS)lha={RLw}{T-3YX2H{#kbB| zn66qrrb{-P7t3cH!CyZgF6w&6MQD8Ep!X1UM254WllqK*)bsvH`+^QnrdI4ZXIuE_ z!}Ofgv;Le!tn9pN@Aa@G@v0GYvz{x;Bf%y}mP+pm2$j9EFUqgADwcpv6m_d}uVycURvl z}WKhkN!typdQjQyz6hGz28PZ|0@j?_SC@~>sd|F$K&Yyo=w52 zwmw0<@!Ly)t$Y)mn|^q*D4rN(zeHzhzDcfhD=uWY^0c&tfaWV2r%d`cdWQ6%E}8TZ zzDkw$w(($_D=%wqX*jIhKOOUxn3DOu0!gv}mOP$JGdBE8w6{1nULKd#2huZE|90>4 zqpqt&ne~!h2U~vRg`tn(RpmOb?w@yee4oo3h%uJ#9%lCLH2xCWeBL~0m~Ufo>@wcT z+Lzh*2Ab%ArN37p?VqVxIAngR5aDz+d-$%!(h1D8yBd1s&6K=Js+j$EMe^=!YJ7bQoJ@g2jY+Y0;Sm=-B|e)>=KgTdx{ zcnmqOW1s6gr?n4qhbjYxR=b!!@eMxk%-%h6WpunOvXbD4xh2hbFMR+9`AI{{BHRRd zFO)i7(CM)qyFtbf=W>#rMxzI@MsKFX^#^h>vPYJ6PftJCPH-C2NL~M+M!v|yqwO45 z)ejX+w1ev{uWWVDT6+h2i)*fQPAJ&u!|mgGPSuCwImM0Nejb@z>O4xAUwpfzcj;LZ zs%l$63Ma2CqY{+Q2K7H~-1U3!lUpRfvDn_8f2%QWtd$@!LbvFDG1-;+Dq5;ux5`Fy zbF+iU>QAr*#hdnVzZm{)-RIi{rXlt*RrCXR0%}y=ZTMzYM=)V}L`}GL>mS^RS5cmV zAOBF>QSN#3u(*v#OiN38D{oc(8IQj-Ise%>8FKc?rT8+>%e2HydMbn_yCA&X%q1~= z$X|o#v(f2b&RaVVjwWK?D^q`l@3lSXh~mOAE$wF~C4I+A!CILX9~BUj$LC))>xNb?eCKA+>{CxCTsW@qBr9Ed zSJtXgJEzI@ZPphrIG%Cbugkk=H?F#B)o3Ov_Nt4`%~}Y&t}SJ(7U@kxO^zg{GxxxH8qrNHg;ojl6v!&=`a_ z=*E-!_D%#kF6XU^y;>=qL1htnjNYewz7Kt4^TkEwPZ)E4GYqpnQyyWM>ly3kQXqcY z>#34vQ1ZT*f(*hogn?%k+lY2V3=|a;P{S?X{i(~ULI;l_lgkTXuB}g!)aAseT}am* zh|C*C&8+*}nQ{-DsCWkBO92}}K`HGmMn5lGC)t%x0h&3X+%B4-iqD(BCwqmk4@$PA zRhtV4rt*tE-ZHi#oyNA-b_ONYLJnR(KQ(TI;{OY4X+UudK!AJQVSKT$wqD7Gd_Qvc zO^x+Aq#0YxraMfCgW!|dq+~6N9UYao-`h9G7T1xey-%=J3c^XE_bbj6$pljM4awwm z7JtGp;`W!6bpNo|-gaC9y9alwZ1X*3OMS=Ip65kq zYP-NqK1tpwu*0rZVM8v~95I+JTGJv)D;}tG8!~K7e2IuQ?<2|dG$c0dQmOkhV%8I+ zaVY(rU1V||~h1({&4LmTZtx>=n&6@YHlip{z%ORAgX5zZIi7{^J7tJL&WcpE;< zT6B3yIl?#>#~9VW+6Hq-=N+}|ttdI@erSw7(){HEhF>4pL(WFd69pzNE?0*V=S%!9H!geW z1*Jte2{EH$0>1xPVv6{b^10`5fTnSkg;u(kg*V!x`+k(iFzT~{xZrFwnB;Mz<;zcd ztMVPgKI-2HI42+zY{U+LZg?oR#F}eTqg7WJr1^NadD#g(ES#lyGVk%q8Dz>q z9P#YgKQb&G%o`X1N;SrXm4DBIZeKEKIFB&Y)GzmECr%UxX_xE@xiGebslN#)=42i# zr4m*2#VVdyF4Jo%n(|m`3s(zl?%tiz_0$&566)RFUG2;_SAKinFL?Z0&|4PvZ&v@aGtO2i}EV0pMlem-@u4i&+VT48yo4ppWbU4jDFi#XC&8K4wm4O|e%|Fa;oe&>G% z2t{U1fJVy!DwuQhQARc0aJ}sW&lGl!utyoxY6uFn1u@Y@3r?R?@YA}WM?cXtHMts{ z#03oTS}_P*#L^xtc67OJ#_?Xro-!?{`GKFY+{N zf&aX)dvP|h&QbEI<@@d(VAdk?#7CQNHFP17esgK!?)~Dvg*>I^Q#1~@!}p6hFZUsb zXQ$oxlq02aiWIsm{WNpsUQE^(82zJcSSbob(pI%VJF4x)K2}s^w=+0;Pq=2zP2YK| zFy9hZDwGoTKlI5Jjje-q1{zc+gq2wZ!)V=7TG?gpDm6sKHFzJtaZs)F>3E+p05^ow z0=&{5PQhh3;YwbUcP2653#H^BU!|0x>@1f^hW?CWoX)xt=g@p1+xLmnzh>U)yOUo~ z?`|)(piy#{FCvjjQ|a+oK4-~V*so%L=_{V5PyWwN4LyT8|NcT}+#UP$Kf{RM1fR(( zkDZ%{U$X-#?^o(?#gO8+EZ_|$(jm7?7PwnD^S%8HZ~k`+{k6g792z^yy$@FUp2n&@ zXOA%oHJE-}SVrZv@`wq`7&Ms#8D)(WV8Koy^-FDiG2|8r5QkL@5-yONcbm4Jg4z}T z%ZCky$*lp#zK7!jH%c6DBFDDzBH=wo4fey zdm`QUCy-Ad2*b`is@)6|UpdvP!F}D5Q&E2zTLO7GfA5p>{LXik!{9t+s@#(g_)#uY z{N^%kB&_Kkf+oXDFdRt$MG89l)<8}QU*n$_1r&&w5Dr5dLE?-(!bHJay&<}3N!ajE z@3TU=)z3D!tgomsH~HK+9KDNfB~iO@U=p>GwUqT@P3?`;cIHQOdV%P;dz!R|>?>LCh~@D^{SA~)#h4&{w>;&{oeS&8E$ncwwy>bi zWJ!P{>NX*X;Bu?HsDYpfN@2Hzy1V)_a}@TSkEmD?1iv#J6n%k#0-yW;6@{UEbH9O+ z1i~_aiI3kri=6$b3Sk`4Iirjtpnc*vi6e_|66p)auj>x?F-;y5R+*$76kKH3BIl2# zw}!qKXPa6vAYZ=th#x)P{p=)fiwu2{eAnTv%YU-~w!|h5#fjI|VSIo`$NNOr5miQs z?$aTBV5ixn{_cj2#j~q7S9xUg2R_)y%-^RPbkbBbJ~R`!CRDCdP5L60R!;Izou&Ne zKVU{^Mfnf{1C*CXxh9jJ+UJUDS~XPGa4Bm6@vFkh_x151noUFfXYfH1Dsv!RlGrq1Vr@rhcu+p!XOash98l$XXX* zyOzt)h5^^3KZo{$9vYekY1PtSXC1srujftiL)V{@e`+xX&-YWXB7Kg}yH@}`4QzS(nvH;vTyPc91L zuIt)7bUUosbvUcSZViwseCtN`$BL(}^Z09dS43o2{c5V&S>>NM+S~KD}oQjfmnecs~QA?C65-IT#1Zl;X;7lSoE|3K1 z=Ia9mC|?N$KI4~e{`+>zU|0YE0d|npJ~kd#=g-zG&;W- z7N}>)DeHljQ6?E*B zw*p82j4x@@hbsXe4xJ{C_P-!5jCGOOe{hXeZDtKYHT~MaIzcXZujIL_7|DZmoioGL z)3pIjWW!0&K$Sv&Wgni9v+y*PC0UM3p&t9Bp_&F-s}j_bfH1#{7Ag(WV41a^`NU(> zsGOKdd%>bYFry^=0{2h9PTF5nm!sh(pepxId5mv+YyZ+tbH4-n)1=iVkD~PWVTr{W z$8?Jw#QDH!tCtp$&bk*a~?p|9yD$iwA_TRLa;D}ae#(Mk_d zo{-V$-k0h6g@dl!uwCTh1t@)Y3jPMy0r8BLas#5K%4t%k(AZB4an1o)lJ43~+R@Qb z6Nzz0z*#{T-XpH_pKU8d=orJjb&RD!{F39*wLXv+9>b$35UC+yhaJE=DVJ445T4L) zPpFYC+>R1Y+UG;R95VCWIYND;t85i z#*=znEK+wi^ful5py_oR6b_i+zU>SEa@L2SliNLXfg6K^ zi9J^E<1ynTf$h|Ll4*CC{Vb z^;TWR{-=B2y})sY{#Eo*&f_zEbjZdL5EkhUTrONrMQv647Gx&xbYRdginqW(v4UXIvw_TY^&(1ONNx~1 zzZiOM+iCb?A-wZ23~XKZNWNg|@oHwBGLipPD;`p_C*QX`DA-VBB_Sbk;}>}-%oNwu zoFIRl41mpg`i6ush<#);S47t;Q3GtNu@LN!MrGM!U`KM}+n`3*y^?~Y|0y3`R?d*N z8=bL#-}F3VnNjrw`TYFZv0vpMsG`8eEu_r2J6r9^RSKB%ilhk@^5i|e6oJ=QR-kwA z)*mw5kd%6M&+CRR+R~32TwgXJ_1GqID{xM0aeDg5ZP9I=b?-L_JiR7y)i_&ZZl~$J zVR_6c&SSM)uIaDE8XzlbKlOq_^QTLoX)7K}2OW-d!`XVnRL>e-{qW%6$aT?;Jo0Fx z_yqKXUPgyT$hohUmk*R0F2Xc$FGH4!yV40zL4Ada6@iV?h_gEh(lNeEAL~I564W}JM!4Tvdp;479AaVLiGBeBQPHc}HB?5GtvXxXBOmX*^M~SdX)GWKC z)Si5UrERxn=9}I%rvD`JuOLZ$97sO;kk%QD? zPfmniM>+%0n5*{X68=J{MYW zayv=A9|}M5`hw@T;pBAXague|%rc`82Fz1SD1fv{I%hP=^UB^5x=|!Buk6quG(zGP zzQsA1TZ3issgQEU7>NvHBbng8ngjo1EdRqNXGeq*RHQpsSVHD|@8Ur;_=jx#0QeTw zn)IFuMs<;^AZjmI4R&s%7M7E-Zl?sp2TfIvIXSkMKy5L{jKkyqeyqu(ZmSckWWK!c z*(gA~Bh~g4%y+4#e>M)vZCIAy+J1Lk)2s7ovQF(Bec4Zik)u5@fu*qi_GbW1Ez0cf z{gIw>3>}lnFyf_#+wrq@S&(li^PbycYQpt6z^loc~}%O#G%r z&-Rnl%*)wmTf54@n+&J%&PWLf(A61kr$qKshX+7DAb`SAO&gd1x!-AvP(h6#NQ zvPAwt1LfGzNJafo-l*qY6l3IzPZ<_fl4w97zn#W3G_>4IDf@yYKtuLsvv{h%Vfaxt z7!l-~T*G9}S<0SYkY8+;c!4T4eJ5+hXD_#0lZ1P*D@8uwr18;tna2&_37rniKQM6O zz)$ck>0LsayOGj-+hHvCB3192NxY2ss3J$}82RR-()E`gmEc=pSLp94YDc^cB-jR& z-XH63K6Pj~s+*GDl`0b-tPw9G9}Y^Zp7MEiTK)aYnNb3k#zr+OdJ{gjQ{iLQ%XzkD zyEU_y!32CyITo!f*z?0SlI(R|6RJ^AW+M@??&I7m+g2*dt+OV+b(Z-!px`T+w3xPo zZQ_hx)vGGosK9$0!%nkzB#d*rn)X#ec{8-JP)sA510});BpPKL{C0$Ir9Iz?BY z{(C7_>0(q+w@51W%U_Q3e0)TLpS$ygdE0r)dymEXSYx{Jh#o&%#_vnp5~Tr0)e|7O zPj+bw(oOwH25q-n(;cPd2tEinVt#@`-q8X!d68zH+4eFtQoV0)$iFh%eG0)`K8CV` z^Dk@5B))(~*p(W^vIoQH019CdGgsAILO@}+q?uN@W`%P5#oWEuZCVAqdLD7*XuW&j5ZyVE+rJn_3yeK=BP>gVU>uV6e@i! z$(b$EtygEgnlgwkFxs!(;1}{PiTS|_^9HJNVF}?fqze8N(aBBcp5*^`#nuo}0E~2W zD~c!xV%$Rr^-^R{62M5ws@HDM3<#Hehf}z|;f^F%XkUn!o+C{`$ZwJuA5q<~MH?Ev)l7h#%C18?AFLCf)WZGIl>#4yB^EB>&(!_r~iMF>k8hO*6i? z{OJ+?Ki*o%nmn&C#!5%=HB{Pk;L2oNlVFT*hp8jgw`t=w0TcHCA;A#(kK9H9bGSA^ z9obVbA<<`)ChaisiB;rouSb@caxL}(inoMUWWUPp66Rw}fb*pb*&RXBhOw7Pw(Y{& z%9rn+kR4bQM~9085p0}{(#%-NNeSI-Wqg%->s&{ur@0-a)4}HCDQSs*&%bvOO+-dc zzF5|)KVm_}VGyxMe zYH7R9Pc3BbJ-M%`Y(~G}Law_39~N6-{So50G;>9)8vQO1ss(Ex7%-ggia5 zh~bqB_&O)x$NAZQYIPEmUb)IP_`LGm(;aT)%SvFqgh!&8MBVc=Wx#v>> zwM;%dUpP5U==`R?HbVOhM1;dMGuFPP7c83mU{OXmK32oO8rSkjIKGPf?vC&SSY)i^ zb8H`8u|;`B6b>XlDp{j1+~#6OLcbCRKBA6fy2~UcUun3q1Pxj=EQBMARG+ypoY^~UUdX%5`z zEWU_{^z`md1&+mELjGF*l@fgWCp2;7#HO z^L0gUFCz9QGnV%iADUjAVLy*b% z_cnC%=wM6Oc5-%0z-|j<-JL@dpZ1@Gkw2|I8O#ZFn?>VP2eTGMk>R26KNTt@37#xp zeuRWe!0P|dXqs7O(EFJJc9e8NjFAjd&1i)hQiG{%T1Nnnf>LRncFy?M68&@G93YB( ztjD9bFy9VZ`j-a3&*wF-dtV*EJUR}c_%kQ17{SIE{GqC)e}Dc8dfITOIegkMhKDU) z=XE=JRqF62xPMpcQ<3v%f*G(3m;Wip0GYHVepVVUoQ(J;XEBuiFr5H)@L^5bI?>a( zAD7+r--T;0hDd`uCHz@V&R?o22i85^Dmh}9wQR1s_tijxCnZ*bfNfEj7mkm991HJ^ zu|G{(89WF$erlzOx_PfF<&8qjo3*QUHkBQp1i&Mk$lG@_@FTN|`2FW$GR{@Q>G=X+ zF_2Ehttu~EsQSM5{-3Hz80n%9STwWfP85~B9wr|6Mf-Dfi6-A^QugBd86;zY{>ElX zYnO_XO|A7xynxUzPlj@Cv(o201)?q2Bgy51n{A%!+^+yx5U63csO6rNJQz&fqtbV3 z>+fSbBlsRh-uDiQ8Y4>XQKX!h8(_>pm$-JkAZqgEtZ-*FiAX2s;NBVBWPMM0pj^-k zfg=|pM_gkV;<-Ku-Vr`bMD7?&#n;=7iB)Y@uS*!@Dq7hpYY!rxoQ+lYM(=`q_v}c_ zL!WfDoA9P!&HzF`)p=oH5vJh}<{^S5>$U2<_ZGle^#QkO0eaLZ<HzOuyz>2tI~E_|ML%UuW>5aw!=xv=5V3xeL?QV>--zOZ zqb3};O2m6`diViiiCPYe(gt(2rMycTsj|<`KsKP4Y*{VpW0GX++(jR!;E`k&i(+CT z59eRQnk-(DJ2b0A4*j4;NB&8s+8mmDBd(~fY*mX57KXO_J}@Y=jO|SU2HWTH1{e;o>M=AH@rTE}MMbZT!^iHULu;X9F3(#0-eKG`1wF5LAzs)1 zZc>|XlhbBGxH4H4y>4{Mr5rxZ&w$g7q}JI7&oDCHVzUzKn`3=v0Yse(9{QM-G4GXZjf}uKFed(-{0-|NjN++gc2x5{O2DmZ;~Fs>PReuD@Ot( zoM3l4A1->GKY%#xf=LWa>6DXKC$tIwvYC!}lb?C)RQyGUibku!6@M{y`s?p}L^B>9 zRss1a1H&_u2UcVfHc|u;)5Cy^@QP>+2F+d=Af}+!W|`gCc26O<**#z>#MDaI_T%|B z1NQH${R`3PIw8<4t18tPSb$Kx{Vsjp(YlLO+9rSX+uknM{XAg+y{+F6s6ZIZW)mDa ztr8qX9@7y#kK3p~QV97mhoK?#nRbUI_wZ*O=;QA)C~D-HG2&4hh0$J6R89 z3Dj?M5Pw}#r7Eot*yHL8qA+*H7oO9+<6$=*w6MXxo)42Ql^7&R|G})uHez0uBdjrn zZS8>zfmkGapaMh={OQ*$39<*DCGTn<@(hBYE$N+;;rG1|H>){xiofBRt3~@=#O%kA zP4w6hlmu1wC}{!qQ(VYjR|Grw3Z?wDtV>X5V+b9LWKt$Q>1J& zx3l$RYgJm9XMQ-w3MdF@!mkRbCU+Q2L!_CL($o)QR`1g@4#5^5>D1r!uXd7Xa6OvG z<#mBDWVpe)pP-N=GDSkI1ccRrqRN^w@Vf)6=&p2A(JOY3Pu~Pz)vU(dI~)wjI?Ne_ zC4j)FfA zm3OYgh~7j|WpsLJ;R00f?0+7KbOsYL30u&OR(tQQjjLvC2c;SNWOw0UeLfe}7^DOu*w)Oj0F;(A#B% zVmcgLt-``tZcdV0SyftX27oiVZ;lr~Dm5~wtKOIb_53P0d(JTPYusTR+2rc! z%qsOVdgZpRKS9EN>Y38F;*f|v%KJfWM_1aJ8unECi1g0JO2QTc$U}B|UZ1@!;!Zh$ zk>IuIYRq@e_&eo)@Tv-JrhCtv`LY||r$)`kN;1}d-aJ}w7y95`8KI37^PZpD5WVMQ6p4|AYMr@xn z=>dviQm5)`cTj0g#BZP$kf$ar!Z&IuMoWx~{&Lk6}(@5Xp{86YN3=5aiA zt6JuKe&i5^pFazTdSjogs^xNzoOIwQ+J5xF1yZ_UI^Zf|;zZdJ9-RGQCbW1$E!GdN zrW6}$5koK|0zIpgz8r^sT~;WZ4`&gwMOwu5x_f;*dPv54KS!xVrO^}eNy3g;V=w&O zyzN^3AH5)YqPi9{a$BsEAhm5vSeYvh)s0+%0=*w@J@p7EdiEurzOCl}4%x+bukQdi zX1+Bt2IMX$14b1Eeu(r{fu7$8YR9dBRs6Prr>tdxpF(U8whfp@j!2113LUQu+jvXF zh@I))a^mU|9+d0kg9#$P@7>!|ZMNtU7N7=}%7O*s!k6M6$P`eYRrYen$Ti7X^b{B1 zW=m&!zt?}daFU1DV@Lqn=>o4VYj>OGj$J)N{n;lXi4KN04X3XF_`FcIWG!|}PO-Sa zV6FC;ckthE~=Pe1*$z8`mO(8~Fy zI9w=J!#L><{PCGqw0HASIK+fdJhLRw{KT2;{Tp8i(Bo&FfYD_aQyln@cfxbqK(lO> z5954ENl8f`NhWlJjd7?x{HUxS9$zT=lSLp#+;}rYhE%WJbM|X#l%*-YDs0|%=g(N# zsZihlhT%wt5*HLWA6VEG-2@~^r6j!&h#Jp%Vo{+{8TWl2?2ia(J7TD8QTlcW7!Ry6 zIw=LesZa=6z1oAnFOIdtRkoTrv(OxV{T2W(BZsy3=#;b-Np&P98A zwnIy6ty`KdG{~_9dS!ILu_Q*f<)7H);$%sUy;J)5NJ{agkRMU}eHzP_Q1|rjsgI4r zJi!bg4NyFcE|HlpQy}#Ic-MILOhqEqDfbi>6WQhX>Uz~)EM5Yf*GwBD01QpIhhRwm~>u6jy~t9aN{2=3~J@?qeVFmX(IEF zNlcp~f2hUZpRQj%epJ$3GPU0u=4})^UGvM zkSl-@BQ>3vqOHxu!$f!icQ@^>bYMMHjG=X_<1d86sl$K;WOU*SIlV!#7A=ZeeKVCr zPYj>)<=SD9B(++|tO)$oWhW*l)}PHp+SHL(5pTKh{mreqAtB*8TZbIL7t@n}WnORT znSdgvxMF{K-bXCb!;eY=&lIsV6Gz0AhP&jhO9?LgRqko-u>6HwRg$^@fOJs!(;s{x zn0h5QkK(fPBc5wIrQB7@y-j+EaD;$Yz#n~12+D`uPu*S8$A0l;z`e=eHfKsZbaX`U zn3ReE&+VS?H>0p~{&j0CnS}$jt8^s#LA-tU>{DKE4}LnGQSp8h`xpWC+*1$Jm{dGy z&3#0Lm1T$|F|YBL2)t3_FiD&w=@Z4~Yz~JLu*or;|I334F_=(dTi(#-WMnA594`25 zFFiwR(rGPXfB4O2knX+v+Am(wd^J-_y7>y5USdOMO2riTiZEfLm%j5r81^Kzrv8t2u+wp_LkmUSKdT?H5n@4kwNf)*Q0 z>Kl8U&Y%Q}PB7Z5g0j^HpRWLkJ>O)u68eovUSIlB)3G>jE|pT#|0uv%cxOp4HjN~8 z15#2J&-2$N|FzM$QlKkZhWImBiXXoLH7^VzC0$Auvv?ag1~z!VOmsbB#@-x4?|^-xmB(0_nv0B?2+!|ji7jM>1S!LahDNmklev-D|?^1EyZ{%zJUl(kW)rcZ#IRHyX^x(EGW9Uj8C@LE36_6z$v6L zGqk)RqNL_FqFQe*Db!2-XAQV9hX7_)Huj76k}8V-c^%(Vn@=LOa@{#xqWZ5CeNu6D zrpf$5Dj}KIgF;_6f9q8^zS&+b{5>~Fg#u$6+wDln$jRK4BajPa9%k)Hy{%L2whq2g zPvZY?(Hih`5|k;*Mc<)8^~ik{FWGy z(lfq`(rLmw+mtjpGvqd2of>d@AkG;nFqjU(goK3LQ7C^oR66JVKhaX}g(a~{_sh+y zvkSbJ^2i5$jDb?O_p8EEnf5FQ6D7udRKjgWxB&6H$$Rvq&B_RrjG^mQwP}o}AO#%B zJs|%~fc!253sPJ1I@TZNPB=AF=J2hgdQ9YQ|z;S37F&Qhd{&R|eanM6QqLDi~yrW_i8YBsdK!+E!vPl6rKB{k^0+UQl?z zx|=g)NnK$WLqo!)HZhQ+=GH?B%B>Cm<3slsCKiRBn&@;Zphk7AdrU^ zM1{LV)+5djLV+@s?Ecmm%TsEX*+xe>)1(rZ*F4vG337hN;m`oJY|hww={(6QO)o!C z9-Ma7m-ZZ%^ZCMquaZ0U6f|+8s3_R`v;W&sct7*Un!)otMa?uhJz^@hoA$rI$DN%X zpL?bo-kPq0JmC+AHmNCNvBcR{ujV$@TcCq~Mw2m44Mx*DEBP z-x(RW>$LT8(pnK}C(+l{43pc9ead&9W{7_Hmj!%P3c_&O8|v=^0|~&Dx&KCy0!(nm znS^jx?)e-zYWj#cyV=%{^ay&{yTDN~QGxJPi{3fcpU}3aKfa>mRSkvKNz&Yg^>X+Y z!1`BVZ@Ras+Z%5ax5kMlya#t~7Z8;i^*Yq;4HE*nY1h~EZ*XJ4LSS6QG}6Fh>)!kR z8U??j6~^Y05QOI}(JXa9$i`rvCN-@-%yWdd)$vwbXXThg(6-lA>UM2vEt z6-V7+DitZ(Bgb;HZYEs5!OnO!vI~zjxE0%Yu1!il>Qaj2IE5dDKTu-CT6 z&^x&nKa@x2yidsFHO{fM+pVnC zsL3n*SAjE7uFdV&cAqk};5K>}R2PT_+p_ek-8b?PcQ%l7Qw<$)p=x@cCEnM8Nq@~z z73+x&S6OvgeBbZU2ngc^g$l%H_8aIM3FKfx>s!pgl1$dX<(lIs#T0~3 z87n`L|AHW>ADRuZBX0cO`*T5h>kcG($6o=aJ*NF$ZGg9y=C7xkk76bN@LmGi>ds4k;;>I`JWXfrJbzOVFq>l` zOgG@!;iMrl5#m6YDD!)Pz<7Ym_*L+u^i{417}+r;X^L8!M5*t_?==QakCncD2rd%D zbBq7Rb0BD@nRyU%W0lkiG;DMcT2~Z{BKw%{LqO!lX~%i*c63o>XhClVg34%F{^Mrmx)T}0dPic@>bs!cPW7F;H-yg zag~L0k>~}|(D>SLNpP1H;JF=BZ2iq%Rg>uMPnN4ExzzHrt3A*49-CyfF0_$fVV<)) zayi~-cg>=tMm1|T9@qU{Wy3i_pcoj=4U8FcN{6x&G^W55$O6_5phfWINgeqyxJu&2W1b+K|5Bj-Y~7fxzZ6~vQ*K-QFC$pI%`$MRv(;S zUrXUrIw~=3c0Jk#xx>t-{SJo8mJ{ElM2OA8Bwxm=CyCv209o(#>b%Phof?VsiFZ@M z!updL<9(Iuk>D}#A573pc>4kq%Sdd>!V<<9D=EkDI@EK%j5yT3=RvqefC>ka6fS%l zk6%+|@){_lSo%1PQ+hp_4$6%4q~6{#Xh9sgaqBbvtJ*swsC9!J>zqt86L=M{1A@O# zsGyjczxN}c7}slsy#Z?ez#Wc{U|7bU6XqjDJYzdO$WYGw1W8pseGxG>aKSdax zaJlsTs>mb*n!(73k{w0hQfv!4H}TAyH0MNqoyUGB89h*fJw|=Yb`3>dySX*4@O*gXnVemN5x?tTV^YX zkOYOJs3v_cy`RicV-#euiZ8brY<qr`mgUO^>9 z<}xu87vKUV2?}t}qRl`Sm9@%~6~3+;y3SkEooUpJ?`kjH}#4TbQx5DPB z_@23A66fiSe9#}RQ1vvpygAPNB#ct9UT2U#T0hz4ijc#Ls%f(&v}N_SR~bx*&sW(y z`(eW0d6sC0_~HwvZRGQ7ZMBNOA?b&%r!^dJt*TmsMyc$HeV~QA)rghi7FcYxfBXvU z%jyC>%-l~``{*!npqtJrS0WT5sCwh{WEnoPDpBi{2~v};R!^@u3}gq4GACKci_9>+ z?Lw>T0U|i9+yj`?^1%p-FOt5c>y3;t2j2P8;HO!Zo3GPFVlEu>~7p_9zOZv4s zZnrmvhbx>Iw%d)CD2<$!o>jXn3+Xf77tap^Je%Y9N*9iQl)jn=3oTxC1=F}XyPL0g z4>sezJQy@+}%$hhBI!z0dEI$PCZ~5JJbwS>nT`6i12A9$QmlzIZHQ3S(-dp&%}wS+xY0F$)-XreFXoh`Rs?Fn=I zPP-M9=!2-#+TR?1$Rg>o*X3t2+f3@GON|m2nbPQv-tcZU;q#1RE}H$k&+8GOVTq8E zl096Ap~WQZ)uGgH(gT)nd(MuxihThSq3;u+Orj2>C7DNA@Cb=A8+z`y&iF@~-+_`< zHMjHD7~6zS$jwEiJ9rxjPiMvb00>-|R|witnZ4td-~(B>+Dj_pJx0j?$rpYTCL19D z+f7QB$W=5*($#GFIScx6hGE*RIR)xwTZ`YhUwlUZsBd2J2R?BfKmL>ohwm@qIws2p zik@iIr2f&%t0QT$D9vWv|1ZvN4<%xPSaN1rbj3Fn)w=N2@qdXgjG4^WjwgP!e!uHG zWsdtPOOwf_gTt;)o=8ogC=tv1&ikAjw`W4IOFfNkE`XT%)67*Lz%EfL{7-z3x{tg1 zJruL?dfv=|_O`&~T}q=WLqybawfBz$vE|=)^h%xL>~yz|0`74)SGI3AeEV~!9OuYBtjKFuP7;mvDYiLTpt@eFmg!QZo{go!1q+M4~;C+$jD-LwUwL`w<(j_B)~UCz%c zhJAWp95Q^qFS95~P`ejeNVThx@VToY{*gh@qxvf$ozYem4{IJAd#AE7O%1xS1fs9# zJ=qxgzt%}la`PU72*Bk9ah`9VDIp+jZTS0ZIuOl$iro$Ze`a>C4dW4 z@QyI_;hl3piyRo}pArdkM$S<#03RUTD>(+HespneG_v_@0~>Yp%>?6HPf_c{aH;A# z8%z;1@Y_+&+*Nt4Y652>&GFx~CY3%2dJAfgTEV?@VF3^)MKq1HGt=WQ9iD${$F zH*f8XeAd^gmRjQ~|MIItkHh%uKQ$m5LCmYNgK2*Rx+c3=!ZyLfyx1?ftLPcqP3MRF zpsrI^U5#u*v!u`;m9-UUWj)k3h>NH|$etCTQlvoX9A5^EFz6T;WA=M30pAb=SguGU z*{ztWJTj|*jNX;Ei)k?g#?ZQZm>!@pGVRbR^)S+$oB{QTP$mGm37zNBt3(+8kdYq;5AYH+4 z*BT@etiI18?NA`C;I^iH3sm!T>$%z7@qyNgjuCK?7yu%`E4eb)@s|33~M~F#{J=Gf^*1NW5ONMiJZ*^$redPME zJsprW?Kz{Va!8DE(dmtTpr+tKx&J+~GCGd`w{x8PX8|J?_n7$dadU(6k>!7C$v4QI zv}Y4V&9X6j<(A!vTxI-q+#3h>t4B}>D5+XzJ5cTq0G2|o!1F+(6z1|EiWx#w0(#@# z53!kbJk#Ve69YPuuqQ~8G^Yn15AqxCkKd;6CQxb^pzoBwUHu`La(7^>xmWqynN=lT ziQSoAd7XCertX%l+oSb}hR=wSL%Mufvn zz*mo5yW$$qO}>q7rq;PmDjt^@)e4#&jYdkqrX`H#)vw2@*VD8N0SeR$Bat?Cr3eKA zOyWawYavK3 znMfJD0rcJ5XoybfS4Ki%_LKP6({lnGNItUOE4N=OiEpb1s7(EY-1uqk^gx-h^s>-; z>8+(O%Hr{I+pS@19XC0ptWWB^NZciq-um(0K*qbAn@==iWF<#+Mu?XsXp1NQcD$Ug ziSS{k9X#nPbk;{6W&Dxxb+Q#sr}89s4gI-fHgAq%-x@MpXsWRZaR{g5O84i|jTbIEpvqsIBi#q6%#JHx4FT&}^=KN(_aY@41v+=_D^Vtr${n zRTjuchz1=o!FvLy^Sxq!UaTZis#X@)&b{}+L^0{HAyUfx2o&*%N*q_OXX|i1-5cRS zNt}m5<@*Qi{MU-)xhFO-fd&>eM0GPZYj4vS`3tL4;Z^NL$U7 zM{7QgKDq8@|I0{!h_4;-TH#-*K{|#EL93W2QjN*CTymk9EOSk1qU0!}ao^nA&=*Np zC?$wy0<|C&V40O^+>fZG^D&{ZAzRyxuQ%uvR8ISt?U3}oH!BpN+rUj|ovHuZkH^`s zN>O_|6Wq@)tBYc3VTSjJp1!^cr`pSCpB*DfP_fZ}{7MV)_G8`7e7Rz&cPnWLWCqlC z(u_3owd4gvTswL5=!U*#6wz4iX`F&ap5ihq>(|?y>j4`jyPOush~Yp2A4W;8#uHq>^eMx>|zVX{+*& z>G*C7jO-HJ`I_@%N9#@2)lum8Z!;luzU*97x7tyntANP>-V>4;B$9CW#;QlSm&Rwa z-bXTZpRM+r7)irQ2dGn~n}ueq-O81BG-y_zTD)f$=B8EF9AXwD_pb^@1rd|B$t5O0 zH&1a(?BTww#pJkk*1jBFq(%)vz?^50vg4w3PY)-d zk`9Kds)b8YW^a|l2bue2pZuZA2=eV{dx{hgF~bpfZDxA7R&4D|?zG2#qJ1y#v2(2{ z`MEZ4Y#H9=k=)!>bV%3HpHTVR&+DC4#rG7-LQk@Nlpg;ab72tHusKR;2eBSu})ts|@XidHJ6s7*nTk3ywp z)J8e7A&5Er3pKf!VW2ebmusS0?ICk!Xu3-&PKmfSrw{p~mM@|A9QR?f@C{KJmE<+*?Cav+f|RL)^S zhJC{1>0lB(B6i;!uaIwb0MRYKD$9ZdqQchWf|E` z1m`5xq}mj6`)Sp-j%MY&BTMJ{^h6n;ONu<^-zNrW9WF z^*0KDET1{p2-r>}MeR1d&0x`+2~qq=PG8AR7==gg{88C?X77BY%|T1G=sG-Ei|It) zkZ(k>cw0ApxGBfk-){l2up>IS(CMQQM}A}l%XsJG_}1{(I`VVraS?8Hydfbs%=ktw zQPW<*;=uUk1djPh-cwk&p38?MgaU^2(0s? z8~KZPKKP$U`O-1az)s63qGpH5Hg$D8`6h=KT%Tt@T zbej}^8RM*h@Re1L7dGOaq#9FuIn1X3jahb1C74kW6Sx8VtOUHwYiHVh!U3!eZk-L7 z(WD2a^8n9@an&79D+PXmz85xvNefbq`A@eJuRyTiz)^ndi$hyJ93T_t#;3)?8TY!q z-Vjh|&PY&!0^w@Og{L8*GC)B`7Wq|m7Sj|0O5k;$1&}D*0w8iLwyKtmW$RMq3IzBr z@9-o5o}0;fVwp~c-B%V9{2E&2vn_hMSxZjhe=aZm_poBkN&vOw(d7`{zG>uf;cXIp zDj{G=R;JauM545B*xQYU+FUwt% z%Lu6Zw!LE?B0BkqE^hv_OF=qihIYTyXT*S28*?E-N!w3e+xp2Yq#jVz-a@y+ZE&jY z{^gs&J)vCTl>b6sjD{Tq5aDqy*&?$=F+&_G&?y9k%g3er(uuq(DUP<@+hzMBM~olvT)(7D(dO~BkC&ys%nF+ zDe)i;(k&&@-QCh4jdV(Pm$Za*A6mLOG)PK!N_TfRd>h|;@An_hf&I*$XU)u7Ytqbj zKEKJESPc}WUX34LV%n{3hVRo#h1Q!C#>MNC2tjzA;&m`VB{MeLG2Aci6!I)e?j6?W{wT2G37Y=!V)3Zn zRxiQDglXy`@ zOg3QhcQQGqKq{5W3#YpE{4q8Cre7{k(^bD5=AlbwrZ1D~vX4djl&!M1kLP4qs&1RT z^`7@VG{SPF*&(l9zpDy%UwfKvOl`^RVE+!u2XIrZT4I;{ZcbeUjQ+s$SziU_D7ogG zp6@j|O?th^NXw>F%KD6H&Ds0F=kmAK1lf8=8GFf`)cx@YH6};JSJg?tOAmJ()_Yb)D|wSYeU=kl}i?-VvkEr|8U5aPB90hQND3`5&jz{!oe_BBc~(inTAL-Rn9Q@p z>ESm}%MB*EEv!3ob1m##B@Lw}L$#0P2`&k`Wl>3=5?mv$Bpd4_H3TP*?m)22;5L8_ zvSxg8^S`~A?*Ng)>br$X){Yu6JyFwnN1DZG!lJ1<>1x(!hg5}}rD=T9g%{r48<-7} zi|v=q;z?paWoI7&#j7b13FzU+6!6Z@-5QV6d-DuxcpS!<1!HD2pZk7UkqeCqO6t-^ zF7l}7#_=qDWNp*@=*oXZaCg`E*7DMIg)SN~>b8cCR>#_Ef5vY0Zet52uz-}~r0Mvu zw~pZI@giY#z!9~r2E0jf%&RieTzunlhHY?rmi)US)64W_07b<*-r_-UY^?G^>k-w(O>#^E4KD0-_kV5iebBJ9nDE)-0hkc%~q;?u$Vrt zbr{AAsB7lru+?7UFriIv*12y)U)2kd0Qk=#5zEgv1r8T)6#9Zs0(?OBUWW#lb*Mxi zO)=>NVIow|W$b~Z_?VZ|jjxaDr;<|SHHp**<8?-mMUMcoeOPa@#xdJ8_lhPXibh<+ z7v$4{_u+Lt{s6%IDXz_GX+T*N@yG(xLXJ+}9s#$LHdCQjA*reP8^|Pb?^udh3EltP zMFUed@C=T`yN1_k({&-sWgO1A4xyt2SR{kS^=f~*=EHl(*O^@kzh_;Kz17^x^L4%9 zp1}XfAzcv1mTM5OPmKBDrI+oSg&dJEyx+_o<22rWbzBvY!UoSB_?0;$zTa$upawUi zuTH{3@fmbsLUXx%axybZ8Yw(mcp=__I;|TH09u~|k>^Boh)acs7XgH~PF_2@_7Ru9 ztB2jg;Hkaf4^Uo8Fi?6PoltjUTlJX>e~VVWdOH3UC>)J%6?=5Ogi;Pq^O@z#N{Z~gVdqaYz8 z`!}_OY=tLIsK4d%EvI{BHf&9irVs7NR-dmE2|A7#Br_)D@SDcUi;_IDE zXLofGX(r%uQ>W$(4|Pit_Six#h;9BG;?bj$#R}iv8YMs_`0J*zyACQVz9)20i0<={ z!u?i~&)S4V^7r8)smVmKw&qXu55mNxhwT*`&L^bP!i(Zba7{%_P{dJu-elAcSUIA6mCMy7wRk}=8NIe%sRiY%Fq!?!&g z=AfDh1?5|JO>%D!W;<$w$_G~)Fh(R0jC!VnzDruPpVNoltrEB` zv+z|V_VHQX^LW$lD(Gwv14S~v{!X*WE`jedlXmI-))Picirey(a|JY1o!2wq=H~G5 zOQF%?ul43H`+Accst%+3(AA7%-!oU95AwIyGWBf*l;LUvXP#eaS1OhYbK}*Q9N|kp z9~Lj&gf?#;jG7|oUv7=om0fvn_1|nIhCfq!I@{1x$hJ(1O*FO6>-@^iL2dDBT!1U_ zWPWZik^GzScJw7XTYX@S+KE2@;`cKnmk{rwHOq`_uxtaX0b;WJ!ig#Pc-ZN>jnA`a zfIhuO*37GRK3AHV|3>d7Cn~z;Z0^O|t|s50*=RwRJdMLDQRc;|TE}Iu4(xN%de7~? zZA%{i6MYr&;q7GiM&izLNk)Phd{q2>q-8&C+;J?tO)58=_kh>k@c7LDhATD`)NM`e z%aq$ooFF2bwidk+)S;{Y$ckgXv^=~6tWY!ZWh`E9J;%}AxlEgbwG32z*Bdev(o*X$ z>$%P$K31k`7hiIOtlPYd~;e`4tAZF!*hEG8)2H)AB7E^5BGD<+Nb zUC45;1+L1JoSj2&0fe;#V5F@5C5(Z*e^$palIqHbD!njGPn1Xxi%hMKYuYQ*{6+ZiF0@5Fvn7eQSeTeW#G;kaparE44rtd3!yd$M47W?_Drsnf}U?z5J1n zHbTtpH@~%KJ?^CcoLDr}bkw#H=8=B8Tx@G3|N8Cy;8yL+gQ5-3%2Hd+M#J<^>L`l= zN~jUY;rpqKUhXzQt#aSfMMD#6JC7T|y(T@0GhgRFRevVlKHG;rZXD14YSl(X;*u9H zefs^p*qi4r4C}ryjkVj#N!53v@SOH#xh%Ft&^K$UNUtXO2PR`f zvdlLRG9qY3!<{qhWFG^7Q2|k6hZtvZ6m5&)Gvd4*&m8P7+8^1lYtAkmEf==yx z*%75!8RPki^1*DAQ?`%Oaz^%*EDN}^sv1Tz^7RrrMx+CR zRs#kMdflrDU_9>SlfuB)5 z!c3^N!&VV2dcx?eK+zLczNDk|@?n&j(?MWJD^wv3zBkx|BZJ9p2KxVz2#zF zWPoZ^dl>khTEb6(=LSvA*R!v{VK~JGGS|<7eDhbuv!Q6Rci=bwf`vyh36$ka&D%Yx zi&G2eN?;9RP5RU1!uwm&g?w+7`u<5JoBM;c1u&Rk8Z4W6=5@B`#C?#pz-E4PdCOnX z-=3!D(rjHHogH_~JQMhEH0!t(Kf?LVZ8zygsyT{&N^rCPW)XB6#{=`Y-`$M)xW@-% zBAW2UroV4>pIZqp!ioR<-AE)_Gae-`g_tdcJI@2cjj9-pWZ;g>k~EvPP*f41BaD}t zuk^`{@VH{dyLmRINpI7cg=M7Gp{&WLk2SR^zV5?A{dnRSAkn|n=BqV-I4u?|H^(8< z{{D*poB?=#oSlVD03C>aluV9cGP2>=ds~^awdIz|BD3YDR_E`*=>6Guo@1IeZ1W~a zF$wfY1u$RWgkp>gkGxKm3F}megKj_lX1S^bmoFMpAQn;}aZt!qmJ)^XHgZ%vY4w@( zXudX1gma+LeuJvMr{>poT6ps)2NZGrF1codix0z()Ugy=s6~i`)=xtuz3}7=zHxS^?l^5l>|YxE z7oT1lP*6h=ncu&EUnSJHCvUfT2RS+~we+cPkmH!Un!_?ze`|{O2IZbge;o=+Wd=1^ zA+|&wRl<+j8n@Ka7w>9XN#7;hb(YL+7 zwWLK1A7myZwW>YuFH}bxXzIwFz-KR!cjQ)o%xCHmw*p%qEEfkeR~U$z-WLk4Kyhi# z(MU;;20$VSIHc?Man`4mo=>+`@ii|eud-S<6WjE%$c}Hm=N`|1e}%0Ez~`=)zL>l{ z1OSTDLkY`no%#}8&kuE)T{n?B5J?BqA;9^uv%n!?9=#VJ*I2zJV6zdAZ=e7+GlkSwDCT(~RhevdHOJ zu=Mcz)=?Iyh<9I+eh(DI@$ri`oaR0L+e`aUH%`X*!%bR-#@}Y1|*n1njsRt2Q|p1E_am z;9(qqP~~jC*l=cQd76O77-&+GWK(xt&F-{A?+a3)RzOJ7@pd;KuNJTSknq`3V~p!? z$-eFLbeYvJW}}|KR}-?m{SZP2DXz!UuB*qQf{b?nm(839;9x}|0;3Gy`}975-PZ|F zxQj-ScKAImK_SE*AC(f&$tChG_Gc?dp3jroG}L&!E`~X~cu!gYw|;qmxO?>&E5m>Q zS@xbFl`-V@8#RHo$$7y5;5hVXqB~cCy9&!fryEItZYW zXex)<9saFa0|*kRh&T*%F(WHez_N5gdEO(4qM~B-h>Xvyli`Q+$;@XqBmxe)m~|z| zc62+qZ}2dH1{M)`eeHJv6?8I-$>-Z|Pqf*itDX9}K`kvhc)m;{ATmZl^U;3KYayDMx^Eg=(Wjs7?M~i-yHcLOB z`)jcl3TBwi*-+<4J3l{X^U==??}RX#h8&Rau>&mlpMTZX9UmX!y1?pu#LL82Rr$+j z-Hiq(0U;Eh<0AwfPI=clja~|GPCN6~ea1f1f34<=XnDD^n^h(6st<2NY=w74`RVHx zX=00(IK5n8ly7qiK5pAevAYm|VYs?CT28@@T6y}`Iaa$ksrkew_^2U?RFmDxmFx4t_!Bic?sqCm_TD3C=1bf>89I70g&^|8veU)mzcM{|2#r-ZE&O4#M z4m^u4Ev}T%!8`(#y&%DtyU{(FSKZVraTR)9LznyI@uCX|(1|~^pJC$QaAB4JX%&;% zNV=0}|EoNL2!-#o-3cR30x-Rl#O3#J;-P0%E|3S?tp(xi2P&}Gu6Kt4`vh$izh}xS z^Z?vYLVzEcez`h?V245UlNY8I6PhYI^X|mAD*Y0g55>vlC@@+3_5%S@>z zL59zL(JAmv7Bf-2$GCvui0(J{WlIIYC#PGfc|FFX6Ry0&^ORZIqesAEchc2lX9U~@ z+$dc`r&_z*g(|6wBD#)2aJ}eKR&OTWG1qZld6D%XQ7?NL=y2Wi(!e|(>52LXXGGA> z4Bq-z4SHDb+)1t=;t=8V?>Oo$=4`qxY2nREJ&pFtp-Q5ZaY1jF<7N^vUsj*q{jKQS zOCrG@X<3(~FiWVG(yQ(aSMd6{vg6WtlFnq>=#}~SXzaqHtL8Zeszm3-$K^hrAIsG% zaMBjD;d(h)v#oDM)2g$;SWb3U=ds;{tq76vbvc3G+k^QfcD?5ypL{XhX*WlrfFzk& zrx2$6FNPzaNSYrK3>JCgx=u3>vCDl|cPPt~+^fG$?=wO6XbgsnYuBz{(lLXHs#Ti$ zE`GM+j0oLLxxBBoMQ};7zgU_%tc+CzGY@OfBzMf^zV!4P!I03sf286g(6a+Z!(U z&5z7)D1UzkjQF~b1alL0TB6!0OR!?tJw&I0(k*q zfob#mZrf=d7L^Z8*XM5Q@(vKMRLuUVUIS1IGT?GF)dEPDf&jl^Dn$~Yf#lM#{)6_i zaVNb41%KtJZh;|!L{PVuJdgb0uttIFtQ(X4xmWO6i8@l?Q4#((O^3txHcDe)Jp{_r z!;Qk0+bW0)X5j;jg20`z+XnKo`^3$@+2ewO{0L>+jf(Q~73cEU1dDZ24$V?}kR6NuQ8FX;BSCs+g>*oiX2RHhM`dV6{q?jiWu%zvv zGcLR~UAD@Nu13kl@*57DKLG}0TT#U6PHL(q#kD<( z>Ue#oS0-k;3P*zsiof~!GT^T+b#aQzbm`gpP!YOrql%^-X`A0+4XOuq!M}X+y4q^7 z+XGVv8_6>+?Ni16ZdS(sE0r%Ha4TUxR%vs)_S04VXA*Ji&9vQ?#ZAz589_+>_M>z~ z+!499r`qu(vw5wIPr=qoIq2c$*5qSqGsPvrJmuqE8%~gE8NOwLddBld9lIeSgDuyR zuDdo~o^+=*;h8UPPjgjkIB$D@+id!Is|Z4C{+&*1;CIvnxhx z`r0Y?!bcA7veg*(EO6L9iLqhAy4wLPfojbLPpC1;IbSYh|4a=qodx9kJanpMduF2W z_$)Qf^{+LXlyrt(pn`A~-Ab{+m;Di^7qGVP98KwD(e>TS#nim&KOIh=l~x*$SD&`F zJ_I*sHZr~MtKqq;Nip=c(@y4KmXCiqzt8O)RmNZav4}d`a1&h6Ro3RNaq^;|poix2 zum**PQ-SEJcOiDWVf!K)^B&qqXyaMQ8A$w}?2zrIJH9@tfBxpZ7a@Bg!($&csX#=_ zc*Mt@jPR!vZvs&`DvvApthwDF60JhJUTeK^&8(mYrNL}8V?KMl$Ux#9f<&BTi*`Lx z;QP(->cp@z)#FJ7JL$!57|`1zOe8*{@Y=r+whsWvpz;^+tD6*K)N}!QRBOO~5>%w} z&vE5no4-9Rxhz=2I^N2{3^~gKxzyXHKrRitylKA}62^Yy*oLM>Wh>8rH3flxWrutQ zAbn3HK|%h?;}NO!#j)(9?fk3w5JEUl#MYJR``nnp3D`s~0!Gt&ZR8l^4%*Fhl&icA zTrg2WM?$OBgA9m+NsLL1gYQ|{*d;-#0d`lmzG+x~KxIM4KG)OyQF$BK;=P-vQ}^!A zQLm1N)w1ZUj<<8&`j&j|PcsonWhIl>-Byx;>BvF$Y`eV0ge5YwsoxmWvQPw^XpU@i zIQ%Uk8JQROjP?b4>`){lPVAPOS@8EQ^*G%9+^Eeshei0c;FDC}`dF-SjHL+%L*IBd ztWTM9$l)?AWU*Yj-3qsQszEb=$zkX!`)fhsm*G!yQY76^e_p(@j7whRmpUhG6N6m! zp1zzs73@6eHSBI9C(UbY%+1%dSivRpv6~58=@KU?Dsl>55{@ZJ6TuPh(VNb`xE%~A z*6T7if(0MaDsAf>yY>?-FPmNW<`}%{y-WaQAsgz<4^4q`-W}UD64$7S^g1GK(3}n) z!|$zIyFLU@D|8s7{w>#ZE}vlC8qbv@(H)}s;4K;TK!n_acXfkZ+_Qw}@=sS}sV{@M z#~{YgI-I>`m87u-=>VqtBgRY5SZuj0a_H?x1rf26mUZTwY^AvS>`Has@xSs3JJ#Oj zGu1J&(Ov|xa1A*(HRjK;cDq@6A#WV957--CeuXEM;JItNmv4KiZo+BA6y5*SlJUdS zc?M`f$TCR`!#{XZQ>_l5cCxtLu5InpunwcgXu)QGfQGVuKm7eOV1a-FNJ*QA~VgKdlw!M$Kn|#I69~ zv!qXNZQ22t?*#*_J}wBb+6bH=?e}sTA{fuqVaori3{7Ns(Z(}&0Xn)uEsU*fC|P}* zCoX`ZS0RbKQ)ptSrVa3e4`Lk&WnEt^Ng>bakSmYLCk_yks^|w?%rw?Bz)%D%#5^#y zsQ!Ra^%v0TyJUmSnh8k`D@DP_y7%8dyZ2F_XlYW?_Ii*(kh`YU&8UZxzWSude)OR( z8+g!=%_^G6%0N4`^BL^tunF7MsRp> z=V2!9^sMm0kjFu$JRo18Z;~8T3a-1&m~vk`yXkr(xq{wwX+@IpyeaXt94&NC?R)La z<)lwhXVm6NDhJGVZcCUfI%TJIiS4G!4Tkq?*9J0Ia5C<0UOJ1hEGJM2Huq-h!D#R& zO`<&X+Q#u{OBaEsE_>4gkLo96fv&n4Sz3cdnWLZ8i)ORrxvp^@-f8kG4>wNY;l)@T zX~sxn29}!L$#3Q|w>>Y0bWVlU+}){;agcZ|+5kv8YM^+|dox2lZ)9a+#k2jUDag0g zTeVbYz-)Z+&sr(T$|uu)y>AFUqHJlNhk{IBwwGCbe_AC48LznXlS9`WnTUAFxpBD6 zl_)fv<{OFDFB7rhMLwGpEE4FtSG&z&sDW@^o^S02o;d^Mm+BBleSE^%v)7hp1;|X- zM}z(#Zcum{{H(j@HIR7OvCN#hR(RZk-s8b)B>6O)%)+Q+w+JrgHiHQ18=M9^RG5o!{%-eV4^6&8JW%I@1O2|*!( z-7X{`m!M?GuwRF3pde+Bgj!f)KJ%Yrdb=5m5MveFh%!5H8X@!r;Cxtv-KzWX2J55S zmb7ge#cLb#C=r-UM}6;Aq%Ud!p(C9>hPlI5f_kwgJEpj7Y=Sz_>G?$gJ~sn9&%n#q z4Sb_6BFj(5T&*5E=abZ5kRVMJYRlflkxwJ<)%85VN+unmQV=*3a}!MrYxi{6f|YNc z)%}&^D>Be_XL{IH*4jGAlv2k+fJn9``)CluYB7;_>O7KG>@AiC-^>0XoqPj!=DxU2 zeLVs*0#x9G_bTTn`(CRe#hgPurmua+)rP^T>^tInQz)nWeQ*DwG< zz8snI7ui;OOye^n=;GnCTboPc8$LfwZ*m*Lw@^V2{<5&y)@H}%hy`^c+yEJyh&@w| zBE-E0JIK8TC#Xm6AmkdXWgDGImllyULu|t2zU@iXrc%wYX|m+hREpY7bd-CtUI zmO!h9D4dp?*P>Eiw-@%kGzc>cF%ZO<{2*sOn{8sA>QE}~B7V{eSs}MC!WeJVWBekU z#$o$0xi0o$gfYgJ+I-1OHjQNdho)!v%vn7g0Uc^}iu*;2EaoCUTWJzUkl9d`Rln64vnI2Bou;^C0H%?H$aBiv++Yvw`enf6g1tw?D?gvYLaC=4+1XEOX}> zdAbJrwyD~W;YtkKL^Lh^WGurF(AnUU(QA4Du-+zzbF|#roQhw7`8n)878VWJw)>8| z+yLOX9T0u~80Se)mrQ;-CS$T<+A56GACeGKVK7&mW#uqIl(@m|r z5oS~r264sG^%1JM=J0hT?#{pegim(m*`SuqGTZu1x!nMEYQ#(x!NgvbwmC-a2Gk4^M#u)ke1pcdgDlPEsi?p4mbk;2o`b~ z>Vd=R7&Q=!yOT~GKa#t7-rW2fmUF-!J+Ic;3F0J1XqL%L=Iri~R>+-?8308N2_GZQ z%S0oy5lhB1I`+T%3>d-`KwNay)M%|XjT|vohZ~V6s5htsZIgTm;E&iei zt73>Ld!remoth*|n}ifc)tk3b{VXYXAA?;)2ie!p7Mpo9>z+_Z5Jr9v=Lz>{16clom-fBB|)cI zBZl9=A1dFtpOy3}3e7?x+M7rsEQ47JSKFfKx$41GL&DTXC_N~f!saxzzb2jgawGCT zhZYs-a;ZwNK6U|3G(!LPFlFHmmi6!rIdHhF@}Wcrw&R4^!a-2R7^@Q*Of$zBcAW^R z!^?SxN$QDTAi&>w(^i?r1tY>#vuxY;^rhKU?4gaN#H$_pt+}KD7=ePw8b|jVGoy)J z6bCLnI~;C}N@#@(UlB^MW8i5^jbIEem1K2>)Mk8UuRJK-JX{_DL)<%*QG}45=}I$X zIHRxi2 z&wPB*T2z`XD!q37ySB#tiO4#o7#M4UI#kgGF$}dB50iu~?jW&Lp#Kv06_YBk(uV2o zZqzr!2ObEv`AZh48Be3sh?<1FQ>4}SAN^=>>z)AdVvn^`Y{3| zrqX^x${ZMag~y?4l|By8!m^~f5`J;``XIV)I2g;kL^SRlS+))|{cDgei99#Gi()B%u(3+i0j@|gOof2N&QOaD~j0-y1&eRyMQ)Qer8=SSX`Ux3pZVaeNaPb*{ttJBT zLKJ{CUNhAx%hB%n@;rNa5X?{WfeiqcAY3a0b!dll1hn1FmsYn7zS;*2hovmFXab6e zJg*pZ8lqJa97p*%TdUkn5ST`(Q?<#rH9U1_WC#wMnJv0p+2t7H#1Azi^xe;ZRW~Xd zUQB!O5O@QJPmRaP4}UD15ODF9ACYTZGF#cd0#CXfy|4&0hFVD&6!ui4QV^^u;^&F7 zTY4blo+)C8$04MlSwJvKRwUvUw7Wgf9EDa^F>X*Nqtz@SRc-#0*-@g9HsND&XR6^O z?j-h^)DNTIi3$lws9qe^ZJuAMtcLi5VjY=rC^L~!xarNz9p4GxfX8-Pa7b)}DTV({ZFNa$MZ zTE<eW!x#=|ZY zvQZ_V%Z}9=hbQnirLT-NN0{w*>jXI$=NJ3a9Q^lDR4}!PP@?*8k#M8KLNYGSdk!%e zN2EJ0FUsndC#=<&yd?%cv@^C|#(t|Ht>G$VSr3u;(ZMW6N`pn8St>(Fk0JI30}w2F zleq)dJp1nTzAw+k;O|2sLS&?+>Rz{NAvF2hgjeKys^SCL|(ADME$b3wjMYaKU-LlBgr@_07XE}a}P_3^z; zdM*s+_6>Vw=gPHXASau=!x`+7X65xKe}$>>J}I~HnGj&Jz4LTkY~vHB)qxiYQEAA_ z=d3{|EUJ2g9w#N;!FO-#8&`(S5^7V8WS;?DCnTbs`ku-zd92FYG0r{3K7IJiRdJp} z3d{bxiFHyh9(Ep^BbX7B+uWw3oXuac=9yciIZe8yOdx+87^&8%pc4IirI zu&3NCw0-!i{@|-62GKX{&cTrFf;yf~LnP@;Q9~8?JR=Tdyt*)_9+(KCykrdHd!$fC z1ht=4BGMmZHK{vR_g)X>4+!$a8?2)@8V@h;%w z5#kXZ%(ec0pwC1TF8N4RwnhudeXN6Feszc*`IDBw9M!@*=iM=3gn>6WI$4&nad%dZ zY=+$+xy~uP3uD>JxqJkeZ-!Bgq&cer9JnEp!Klj)WGt(&RUPT6BS9$d$htRE(J(d1 zd!4?R`%BlKcasgM1&^(x(MvJGWt)vIyLf7L(F^;vJ#ITP2XIj9X)s~>*6Tq!^DZ3TO*Q-x z`&M)2EC^DxMH&BsU%?>z*aTdJimd47nvmZv0J88wnPFo|4uWDK4Y{pmz;e`u{6aFF zE11fogOSDS`;e*!-&xUe{^MIllBSOl*hWtG{kF!zgwN^ zgCBe{^ZN}{FV>-cZ|ck4S?Qa$$j=&}Phy-Hs+6Tg?xNl#pNYwg;3x-TU=NZ5?GZ$T zShl3HOH%~nY(;nu{P)Zt^n<5k|LzyzER%5_>h=@`m~NCfec3!RFLROc;+)9tOHLYK zA9yZG5A$2owD&U%iTQtWi06$6p@rGbOw$&9+2+ds45|<-BOv&{kDsO@f(C;EfGJfs zEHa}d$0#t*8mrK2YtJZ;U&{)p^5?t}^+vg7mrxnG5tET8KvNqK#TbK{yjyh(Kksgo z#2lgNW$&Z@*#tUDj_%!r)v{pggoQ^^j+JlCvqFH8eK7YMhqFcgzKw%i84lnjAYlX1 zLIg?%_Ps{bjvk)6?6MaswsKAOZa~ko)tFWfxj|u?PcZ96ZD|nDZ6MhDym62G>eKmN zD;VIS(O{2M&6LNOd{LH9vH#{4%`IPu!uOc^`jL+4b};E%^&K1Z+o=+M0Hiy_i1M!f zB2BH7=-gm}fWHlJgCylRG#P7{=QP|Q6Xqr8Lsa8qrkFhV-Ju0B@^zm(TQI2wyle-A z1<(h8_1WO2Qs?dq#z4GYsXV+eIShS1C4#eBOKpP05%xl(S@M+;>5X(v6G&wATDGX` z_<^Qp)${(P&p^5@gJ!FZvzzJ+OodLfgCl#R_8su2rSa#rZS};m-ER&2&FngwM~J_*yrJUY@5lBcO>E; zAi`<(5rzjoD)@$YoTTyN9?C0!{vmz}82a#;CU`CcP&d+gIQ9jgh(|r_8eDETWKESL z{qDFugaFLy3sU846lel#+5D#rT!!wGMNzoLZZH_i==Qc~1f6yjDRayd$5#_6AvnAk zgwmy`z$_?(=R60+bj%BtJSiS{6a&#cO?reFYcbfsS#cHiLc4(Q_50{7bmF)|5S$~p zFeMiv!U}3lOr(3A-rKefp&6lA-$-d|e}Ye?I3pe4F20da~7MJrca$XG!x7ItchrT_T0$PZwC+d0VX zJ`XR(r8dKHt6vHoPBm2(l95-#|L->U`!H5*E_Vb}(*iwdpXL>`)qCd!WWnR#KafjC zEw*DqOeq9DYr{rhy8!>7nst$TUQqX%^sCv+G&bl=BOEAB)nb2gu6VJQowWk&hORK` z40BCN5!oV5*U&B^5Y;*0v{@X-K=`n_h7W^;?SyZITnhvq+%<1q6dXO>K|~`8AT|9N z2>1fh7S*yi*>F8(6V(~#(36j&X-$x|F2Xt=>Vl-}+4eQ@CW^w{v7(Z-2Ck)m@->NV zsF-Xx{mQ5FWo~QjwDgc1>2Ced%T<(tVzwrRZ z(*`ah&Dkfb<%)^`bTy{0j9@grg_evoR$n(aQ!!>IIjW2|A#8_UW2a{@pLgq=s3j}% zyC`KdNR)P%WSPXCH~O!TXF)etf;71RQ7>quJeVkq#@>fb5rZcSXIpY8*u+c|303nO zTT(b$aDIo!3Q^xPQ5lt5gDXSilh*Qacv8=oD}iGUr5r7)Q&A>a;jcd|j# z?w+8LAvQGryB@g7EbZUpz1rTfAI3W~R}F`Yxy$+6ho)5Hf~a1}C{Net>GbI+oMm(AjJIV_|aa}0#K!6&5}6R{%8i3q`k|LC7EHggj@lI&OIhha$Hm1>Ye zp@6Pcmd0X{PpC~%C6UbD9y*i2f!6Z|@|Gs?MgBV$*30W>QoQ2C8mxEP=vDH60&%E3 zXJ6Ng?(b>pWhH8U4&BBEPTxoK#qu0b5{CeM8TkvQHTDizx~(y`1+~wcst`WsU8~dY zh?*_isg^Jgh)Gmj2TkV#w9}q73I3ZRm*bynZYrEforryJyGS~L7DO$yK=d6jUt%K! z$g;)5?9`f5!lXsA6n0SvY@JWz95DH&`&JaQr`bp$=*A+JN!3n%LrfcCIHO~{$6R6y zT5Uc@*qX4Voay%(4LKiMSRb5I{zR>?rl=F0>7<-5*Dj%ognQ7JY@GYZ{R0TEMJODM zY^p*s6Pb{o<~F-Jh)Fk#to`yST8*tKS}hokp!7^!n-(uVY5Y5({oQ+$BEVwPKE+rG z2c~phmqv(ZBg8muF+D{Q)AheNMKjmcW^adYe`Q~!YO#U0mS(#5MVBK&wX|3$P>1PK zRoKdano!=<7OleE9Yl8HC*f)IJ;bDrDl6_29o?5mMrYELWGaHQK=W7$v+s$?)|R27 zJ{=)^JOolSS7_^?Ee#S`yao8MYKS#3_?=x%w>;U%vUBYFq?}!L+)DHM>|NH~6ujQMlpUG#9Bw;^1%b{U+!ArbF zN>focvi72AAL245BY4WHiKW~#6Io$=jM^UiCB|-SGHUgG5i5(IE~GseN&^w_DffgN z8Dl@5*ZvhLF#g-(B|!Vq2_`@br*`DccMC8w(Hq0Oc$R48iO5|M0rZm02+5_uvYBQIlZD5gQQ?)@y$N`X->8TQF_f( z(2}J7LNz&9<z-R_df(CN-lypt{MgV821kKB4{oFGYQdLiAaczvsbBB^QTG_ zI^@wI*GxRHljqrVovYqj1AKl9)nKev5I^u)&PAMF)$6^flPiv>EE~U$dI{#issSk?iFhkglCekA^j8V!78Nm2V zznI%yf(OAmc&e`=MxKW#&`YWyC_dnEo|`OHbE34|TZOzOJuXDUeZGKLgc~K$fiRvt z5{=b7@F5E&bt4E7Cm4WFvmlsK&ZK*dMi+67)1}8sx9OZp!{Hy5hDWXjCZF=8T3hb3 zZG8BV52XJ>Li)E!Wxxh&is8&~U7=q*A^o=<|BJNc zXtSUhIH8x#{{HT_bZZIzAS4+x#~j@wZ1!fHPOeZg1P(otNc&K~FaUw=t`s^L@-2h{ zIY#0)SY@Sq9U_^|QO2-EpBe3lGDGlclf)-{f{)K(WiIFbIt}=rzgjgy$N~BEmH&5G zYZVZP;4}c8c)4J1kB8Xjd$cn=g@;@fi5!8eGQ!pzfk0P2QXRNCf3M3=tv>(L+3+C( zhax|(`A7EY;A^%<8*&C2Ea0Y6TQT2Z@knLzuD+kW{6)75cps$_PS#$Yo9grJQ`iM@!9t z?$6(jtu~Vs2Msys-+UCux3+*Wot>!ruTq>tGgpRKT~t83z@#JZr>2+&P98JN8K8xj zYrPfM>|=Thht&!EvV8A=upjryWWi4iwTUC1K(#2Yw`-RJ82_kvFbyd+A>QGgNr3>(XZ%IbYHbt|7w~L+kFu$H{;77g{>hgGv@?tdW9J zS}O7q-#sW4|BiBaUF`)>)+xn? z=phJH;*1}+6OR?ixIo2htT}oMJ6vVqU&JWFA9&SK)$djw_CF^@I+nMqJqtB^P2CYn z4~C~;V}&CbFvg@+Aex-1xRRG@X&4C$7G~EfxP~x1haJ(9? zZ<+*p8XxgkGNfWOi}EP9_@Zbk6~pamN4fmZLjF7U6c8JY);=5;X8gQ|yqR!sc1@XV zMSl0h#l=N}pK=dRBE=bHls=4{58y@$;U6H+Ba0_TX{6lDimP@EUvREY@JD;SfoGvm ziTN6O-2G=5_euUYaSH)$I`)4Sxa{q83aKOlvFxuUrXwvbS}F}h7-lU9*AjXliyqs6 zt3#us2ldUH2*EroX-;}3qc>~=@AF&0j%930Gj;2Kfy@41&V%yrk@tHNmihoSmpADj zF_B_72Ca#oO(Y>ppXnk6P%K9wQDxA7s$&1LtwYJU5S#gWn z-EZ$}<%B;ho|e;T11py}dS2PS55V{R{7q1N6IFb?4_JvznGiYePrcUsW(i-DZx}|= zMtNn_$5tD;V6epf1l%8Q&zg`i1@d|U)}v1(;>0LoZB-Qy-KdX0qH;@wutL3QjwV*+-{XTZEV$oJ_$&x03O zT`5!utg(@6tfluM@mj&rbrVinqK;eSU7(PtaU@|^zH@{~ zYkUuGuSOHG#)P>ZOpM|8p_KoEJQ#RVf8_m;kx+Bt)p--&<2uPYQJL!@a6=|zoz7$P z{_-%U>&Nus>x=NPVeXSd%*2w})?LPa|0zS-irIV`o0A88nGx&);E~x@1ObK)u;!V$ zRHw1J6GsN6oK|K&Ht#)c0Km;E?YvQ1ey8eQcD}4q=KzF@wzf9U(bcRTYK_?_id-ri z!dpVScK9Smm_s<~OVFdC&R& zz``?g&&(ZHwDu%3iWJP=LZ7B#vTUwMkY#fb9!J}z(g)5yHO+UYp{N3!=C*^csLIFJ9{Zx&B#dvPo8Vb2ny?U|z0nLFeim1H<+Nv!jx&Y}CW zHHC?v{OiLJ)JLott~Nsz2~~n>6V`c2&X~b}=XQGHPr`0Ve5y8g!;IG3@{s{dFU4zJf*gP#aa0I& z>TM|P$De2en1w+lN{R|E?E%NZ-9vnPv`PI2iTK--t&y1vWdOgdN$hhid-X%U@7q_t zm4=NBAT$0Jkd3luH&{FL8s5CQap(p9{u8d-Uoz5L)a$>35XyC_8n;+#X(B%o=$MT@ zu6@OX`lkaaC$a{ThEk}yrSZx8xSG?YV>j~FyBrQ`YBncAv{AyhL(Il0*+z;NBXpkK zEH^&;s#|>l%MlrJv@rd*2Wg3$s6`4R;ZgSM00dXYQ~- z6Yogc491XK#tW^gP-|of`-=sfBZrj=X$i+g%tu9mq$6ubIaK3K@tMhE#NkETMeE^3 z`|rCeB9ob6phyfb>Iw?P08UujuCGJY_(t9X2op7i#X@pfs)oV!=gd1udLlE^G|F^} z`uKO%MYyA$Y}9@6NuKlo`pYga-j>w_{qV!NXakrytubdUa%edxovK9yjRKWvgx0lN_XAB=N!6h$?Q!@w48sd3iEFuoR%-2SQ|e)?p@kW)Iv>FxUm%Of8zBxzYdcMX88?W3 zT&H<)I+pLrUNLAV`yHv4IfUuI0{b;=;o~)JpUo8WerLb;cE{bM_XB_g=4ZD$ujdPm zRlmx9eEo25`l2+Sy$hq`+0L;vp~irb?+)-BzXvoi1yaoWGEkJ#bQ*A9AW~d{-N++{ zz8-Lta}c@sI5T-|Su{^`W{{B(V2izboic|LH(Gl&Z=M2Dw%=T*mGu7j z6z2!mY{^|h=2vASwNn37*nyI{uLHrWSD51r-+r=fPvM>t$AMibXwSMVO4pABiZu>S zesVgoKXgRK%WU`2PGZ7aqJmmM*BsPBxX*}1bq%pfA54Zs0o+ONwfQAUgKAt^GXPXk zGnd*{zs9bIFq=-+O_Q7~Z~x`_;x=c5dH7a;fWX>yedm~rL`sc~y2cnV@L~S3!TnO{ z-rDSQ!c~l@WMc2F2#DQPx`huweM@Imw2zeSn$P$7<>!*pai+0He8a*rb(MYmVeB(l z?6{yZm+GkL1K2eB@|NR%5-;@0iwMYxUKM*$tBeJ+5}MJ^9jRcQpvEw#sqgZ1MO3Ni zi(R)@n0Xv-r;VQ=x$$rCFc)J3QFe=QjOw|~lmJ0XGDYvT`hq4vm{LZ?aAJLW0US5@ z`v6snGD;H;Wpj6*{wN>T_xXxZda|S&!Q~awNVF5vJV{At}S&VaX{T zE7^e^F(;y=Acu(I=}cwm=#H3_c6RWS^O(o^7{W26`+}KO@56Y=WBOQ?1;T-bdFHHh zMm_h`1yIvS1K(`U`7SHz>}q)O{CoH{r0S!x@9EXExhl6G$sM;H-^Z$k1`aWnxNO?M4UFaPYB1h z^aq!(#7XM;AAAE@Z(_2yBPeD(v>w6_2Yg96m+-VsB+=iCu(cGe>AE$<1@MRk6|`!J z-X+8YvS90T41SL!U2;mz(h(c1QMr2@sxVId0pB7-o7yHohoe83MdVU|M;wzqkbsWQ zZD?>71q`W5C`uKe{y~&QjGZM*oN$mIm$4%cgy5VMB4RLh1TwLsBUbP^pVK3rU0qa~ zYHLysYtVBHiiI7|fTc5fub9Rc968_;G;+^yh$l|y=X%`zpqJo=N)0H8+`_#X7LV~X z*N{d}6W*UvGHP81{Hn5%@!M~|Jd!R+=S&LM+^D1AnfujX(bDuGPx1+!=Qg7njGN6z zRhhXX;T^LQlQz*n>LSbRX6hHLpQ~ZqI~#Wv?*ca9o`xWm#xnvQ_z_^&DpkbfJ7n?= z7A4)*FOIX3f8D3DB=#NW4C9!3sF*cT zzB*{$z0LYDe&Af!sLE+bU}jq^fmaBe^k5@x=XgKO{mpz>FymO+t~FL< zHr6K|604k;r_66$)lJ7os~>{#vXAH+CUwe*h4DyYZP8nzoc&rBm+_24bNS)=arHb6 zsf=@^Zhra5r{5J!aqR`G`;(-^aK@w}@BR9Esny z7epRA@XU}6O2=mwPV#I=(x)cIbFkHR97h@tSL$}-3XHWUJuXx27l0xLfrn40CLLlf z(>u}cj~01n94oJuJ)=On4I50#znAnbz{>JdZn7lD(bSP|v`)2Yn|@ulW7V|}Q%5*6 z@@pzO5+>Mlv7~c%?8cMjRg|q-Nb0)7Dc9Sl^9lYo4)J}ljS~c)FT{`5Uba!+K$YT8 zqj~{*&`e3YD?Q18<~{X|FMOr$tp?MvnT=Bnr~tl`pwC(i#RyYjo9U_P##uo{L1q=^{%XF(@hsPpdt|?$Z ze)Ii1q`c|7^;M`))E1UcHo4EQFn1E%uD@0OMrHUj#6h zJ6~?4*d1X=z0GEn+yh#K&*F}M$!qbV#?T7@Z9EF`(*2JXKz2xe%8}4^5+*BZ}-LnQ-4-dSEEgrCh@qlPLbv_Aie|){XFa7qQ@!AZ(5R5n;hAoJu-r+m&dO}x;mewo$dGDEKDakU-CLA zRbx@B&48E(_L2_xqAk&2WH=-Th8X4#+|E|fSZb18VkomFqUrq zQ2v08L^b`==`EcMCZ3>Eud z#(-!fm4jN(&F`NJvu;TVuxs`0vhI$LF*)4-M0oxyQy<1&b;0 zuWs$%Gek>Q=~Uht9ygjFYm*=6(*IN(0b}!_F$1qXxhevdriBjNL+nF$X%S+SV~E>r zwo&mgylFfr-ADbtTkwQmG>#=Y+KjCZ1a>rr*Q_mbnjONWXle95Ye{+7O;V}I#10E8 z3wQYmoA?H8YBg20B{i9rcM0UyH>MkQhG9CsWs=!aW56e3=9Qr*Y1=bF*kA{JjuWFg zWk93HoGCTSxKdcg6K793k)0TGzP4`0$@rT3UKvi74DZ_Rye8b*&c`MaR#&0wu+Exb zlWdF!U-OIb7$b2kzR~4mn{WvGuH8;utXcH}J)EuR=|;+k8OiY7_yVZ<68+Kfg2^}* ze`bhE+6|tv^+bN(B@!xB?W#raJ3c2SM$(GG6YzNTc_!TP6^yg1HB!RSOu0z%7If`zil-7Peqb~>^ z`}!`?JJ`|P5y>RHk|y+$qMXx^#~&2AHu~6E7Iz%whU4JL^@=j3;yL+`uk)H%qvK?y zI4%_um>-aWG!~9+4mcSFo-sYLL}hb5c}#HOSq;;2Q}v|Ludh8!Eu|i5>7dlZc|&zQ zaP6yG$M^4iR<%?SeJB0a6WA!S*eR{`*+$pHp_@$g)8sgY-XD&YK?JF}_$9Es`O+Fr zCgbrw9p!Scq~GA&uQ8H=GL?BhaqAW21!Uxw2Et~bj%O=w)a{V)@FCeWOvckF&kROD zTyU?jUDIhR{yd3)0#ZmFU2LXoyQe6puP|s2^|P5n)wc7Pu#Ob%di{lBF+!kpV&v>v zUHyCTu!~264(wX94`zGD!{bTDt0Z-7vk67yczlCOQ?WlXR5r)2F}^N$@s4NA@(kHv zT}!1khBu$dTX6oC+MR@X0bpS|Ke~$uAp=w?c>VA&X+U9{*@W{8<@xRYJ z$7Dvjt2*-iJT5^LY+06>7rJ(>0+Q-6$HQ{(LNdBoWsnDX1b1hr4?;GGXNaZ79i(`0cmO$t1gUy23|KAi8nkXk%&D8h$r z!b<=@xEN|cA%WY9<4nfHu{nIxX@lkF(@u^xr5+MNa`XySN+5(f2VfdUs%Wf3SnUX` z(QApyKL}!iKT$toC1ki?@%BB@U`yM*9Hy)nthf$-fe&VmBlss0WAvoE`yXW1<8rA}?x23Dip&YI zYn4J>xks-W)%iRTf^IgUDxOaB9sgL74C{*lEscQ7lPw%ouVv3&uJ_xZK*s;R*RU*q zgsB2Uty$~rk?!X(v#=ZKeJitb=>rZE8;l)kj!|Zg19hXDKz&7(oj?ogJMcjZ0Jfhg zrKMiuR`QheHoDKe5GUUc@7~FMK3`upU3?Wb$b#5KA5jf?nSMR|lmj5n(9Wnnak>J= zAVtT4BDKqiST7>>JMW{Qx}q4^l;>Ru-Wf<-B7d$tmQ6eE$PFDKzyLE}4G3l6(+~Ep zA*8^O^PT}>1`lQsYr;rt+VdoA98&gLa-KgB;GDpGRKRR$M*pwRjvIk=tXGJ!YCTuC5D}J9%9H>8Ra1RJrKB9salnuS$$}}C+z0Pf5)1bo? zaLq|APaK}?2)4uq>lA=?$5b_>;`)BBay2u>@^938MjP@kC_Y7^%K2>PYVD_HlN~ zLhUzo{n%?oFJw7*wmLUbw0JO0;iVT}EXEf!PH zulGOXe?-pKmrBcoC8qKc-93Ha$rSlre6Mz*HUkU?MJj0@Xv2nU<0i`=(>abfh0Z)< zZl6{+eaXDTXZfLC4G^;Ge?{gU(SGcYF#p-Kl{tZRVo{&if6a%KlhVLrBY|XT=u*wX ze+zaTqt*e;-RTJ}0@My|hJMWfH76$scYt}3_%!i!P;ey3$yjcX@`Dl6)Wt#Pp|+M* zt?*=tp-`>OET{8++Y5`y#x{wQ7Qd8A;$o`fjmx2!JDuOoa7oP>TP&PrO0_v&`b$SQ zA?THzSx1ix79$Rv5CSim6Wwk4dfyTZ2=s8~6-I$_C0}zE%+n`bW`mH~k3R(mRk8)* zV4pk_3dBna7y!ba%KcJqG$#@GKl+VzmeiI|q(Oi66k- z1@8oJib!=O+uoZUx-zxdMm{1W8`yp&L=3B0Ede|IsRlnec(t1HLv57&BrSf65<}h-(!g%vyDV=B)~E3u z@`ZphDVvhTIN|;Gf!^&d?ge7civy~;TD$y_^a8wGF64w+2$yWKZOrJ-ar&GSZjk_= znIgBXvTuBWrfT}ePhSuIm!y>@nP#;eiq*7ghZtDP8yCbOT}bc^%7Cxx6k<2i?ML4y zbbd}seqifQ|_W7}r{z1LaJt*N_X^Nx_npjkH zhh;ZTomxD8U7K>)GERJMm4OJR`eOLz{a%J~fewa0^ol=&(I?z6_e66d*HR=yht_@j z(F&ll+z{l0<%TGmuX_-2`*U+x%tEzVwnE%?V_TA)^j+5O>d2Xpsz{=M&DXSShB#Tu z?v(et9j=}(md-OpW6{3KsF&`!(?NP+@t3-lY;%c$>Ca}+6SrEN-v|=ym`gt@QLM>GX z*pN=gel?6GAF!nFMye`Vx!t@^DIIVgj+(Dy_<(@B?@SgcqX$f?-z5B{Y5qmB35o&W z1abu^h2Ml09B9OH_;-_Pol=`!w&y$Y3s0cY*>gZ>m)k z6tXS#$!M+NQ3kDF-Yl-Tz%2~$`h+OmetdAKlQb!vph}H5M;fOIQT~SZ-3dZnYP}@!xoY0T zp60vtrtkcVz#Tm!^9Owe8m`$p#AwJ%Fw?apwNOo?WEgi_{{2-gXE~cLXYagJb7ZQn zy-6B9JB=XGeV{;NoZmwtA2JpCbjO;9Ed(xN92H6~e))D2;GNKk)Xs;5HJ)1O>?DdD6z|pnOVf(M8u59xU>|BewWB>6p zypf6yr#+AP!5)IbO%iMHyYX~*lQR0H&na0#a|4(tbAD<6{j1+DIeX0>rg!s3L%H%f z!&sHp2YH(D)Gy9FzN<9cqlxO2q|9&0$H^~|mMZ=~9?cBnM$qVb)IUhMVOqC#fh$28MK-x+(|#tuH+J)OO{>uIt*K((@GN>G_Bwl+n1T%x0!Q|~}sYoRUg zft?T%quYa3zo|(T?<`)~!>^hxH&SX^WNo}gBzA$}$5>s5wGatcB5&qEC7KdVKjHRq5o$~sr6-Zxi^6OUx9byVWw zaVYmi{TlSec0XKs=Q}+8r;PkJXr>|TYT2JFYzOTRm{;K{0BG)PRg!AR-_dm0w7RZ5 z4IM~D^<1ep(_9m7S1vmUT-c$I8Mlb4f_%r}%ML`Sn5EwMa3ni5OUn)(jx7;7z;b!L7^d*gxTG+oZ;4dzQOC5;HgJVh6O8`3NYJDm85zm2SR4-VoC zIY<{e*TnV*_%TTZ57$h_{)lT|cKKOo`MLm;N?6};Kya87p(1CeL`S?i0gt7;PZ>eK zPWrJ%RAYXenXMU#@$k*yE`oC?9lu31DXPQiA3g)P$8n)2utfmt9ewkVxfKtb$n#dB zFx=A)+HTy$QYiUQMT%6-dD0yi%XQy%ru6x*OhJtUui`$f%h+u2$))F#a!xSl-tEB^ z>{GY=a~Q!hbbEydMw5YhL8mU(>}Zg^2yb@1d+(bqW8O4l42l+yWomktL_rHH{B&<# zv+J4pv!kz)^1+(jaV)c|dF%t)qBEPR7(H0v!fU&0bLRKo^%RCZeFd>bD@4(iS))J4 zQS$NJW@y=377A#44Sl|BBsMj-^9?0nDKCS68L<{j5k6NJBOv;zs93+_v#XbLF-kx?XlO9SRgGGeN;(aI3?>TH@PO2cGrQKS zkeC0W3#a@6dK&0!7dA*$`?P|m$CAKa47g1G4jkQ_>6@VrJRP5zsLOqCx_8?k%XVB} zEt690Mqh+%k^>|-Lc#c_qBmCt(l5M=>z^C%qZgAJ+J%~hza#0%)o@_ZCcX#9Gw2di zX8-0*ou~Y%Y3hkzOAqC=MW$-74AngeSPX0CDa_U|G8pMQ$fi_TXT*}^G@tk8{d9M8LxhlRO&wWfz;7-8HmqUFh1a#?6WQFdVn8lE$pl4(KC^~ZDZ6@%F}0Ju z?VnG`0BP3>8gjCqEcW(>Duvjc@ULTX39xlgjS+xi+Hf1d9opK*4}{q}5;~nq-o&%K z=_6zu9t(4g4*m9)*;j&_VKCvUMH0e$a_Q!LmE4x-uILN>M z0uUvqn97w4Z-gvDculU%b0-VWEp8)AKCX)plD-mn7fwy__^(o#47&Zddv|`C zN*nQ3Q=EB#hjhRUXEK>iy%hTt9{pNrinc$%F zz4^i=!y+XK_Kx}Ut^}4saSG>K?};>73iEQHY+t5Il3>!asxTEQX;B9Rm$a8&u+!@L zY*)x;lIs{eu7?Um*AJ#_jkvY1xBd&gJ7Yj&yHCD(*o^I7{AIL~(@w`?vEH zYMLM-Rq*Or0RGliC~mDgx`1A&Q)M}mioAD7#x<9jQ<%rYCKNvVRIT#a=2ef#=T#I! z-3NFg@)M+e{GnAD$-7yYbd#ERS)9}GTwhDb&NEre?V-g-_o$9~ zd3m1*r;dBcqia7WTD^cc&hy35Qtg`2*K&9pGi)6uUZT4Rd`9COF3$)?OpJ(Xn z7Kp#VER>poxGu>;#An%yu3d?qHurI zW#?MAKzpZx_Q`;&B0kq^^1%GoSVkPeN{ag((S0)6m3g1hk8v_mOI>XAa?WlJG|FH% z=_vI%asJ({@5mdQ462d&y_GHW$FB+ktJVqv*wii_nKvgU$!-I=o3RN1{oZ{Wd=W+4 zVm=-Wy04YCx(*p!W9q@rZ%D}gIE;Q0fYTWQy8k}KL~;eV{H7K-Igj}OkY;_Xi52&@ z!(Q*BXUU%Fk0V8sb;tUui7KtpQXl?(z~9h;=CThEJxhQ9uP71Dp%faRdX@9+i9j1t zhqY}?n{0FBbW6DDRi~^N=@*CeoOR9D$=q`~MwGB^5mVJ&>JPXMG}02Vs>J)Wd`Qgm zA)A$#4J!GqC6psu%c8Uu5#n+={_*n?rq_tM7EYfT;PYcx;BTp;g$SZ~XHj%lgze%8m? z{1A?fh(nS`J&4ueGW^RTijfL64H2@ek2*$3R*7S617OnR8)B6D3U^A5*t1j5}MOk zVXm5@ZhOm&?_QgXajVc6*>p6c-q_N3Td4~4uE!XeQVQL;nRu>h(_yuRN$(~1WFdq` zvF-L&6k@K*7IWTO6hJP6KFY}TQlX9q z%Y={e%w~FTn<@#xY;!i8)b+cM-*lZZbSLY+IGfUhPF!*GtFyi5_G|B-D#%I@Cj8DA z*7CSe-72Hb{U-}+N9j?-+Lf_i%2`pcKp%-z*@5gwwXM?)Yg|;mG%^7$XeEyx%2@SZ zIz3m4s?b)^tjw{Nwf)tC?k|pn16`XE|AJkW;Ku=wC{lJUwX_4>TTnU?$2<*@FO^-f zPlZCnpi7WgTW;UsZdoxlksK4gSQQC_Y+SF4{j!Yf>r=H|-D=^Jj?ZO<_-c>yCJF-c zOkjK8A=Ih=Q~Lz}C4m*=o`TLbWvk?XprZTBptILAfnRuC73mhLVxO?~95Z&|GuJ=j zpRW5x!h7`{z7B6ZBJHw^L%FVanJMZSc)yT;QHVMPiUY#{^+q!Q-`Kqtr#kblb%W$F);;Ki;`Wt1!|C zuSra`br+_Nw*JZdzyT5-Vr9-kOR^>J96B!n(5SMameWcO>URT#*OSCo3vk&YDU<~L zRK+G)Gq4DFtkFPg1?f%A5;%D8pCANe0x3v44RWQkv-1tqfL@^E%g?u&KKkDd-dvIQ zr~dx)4XzmtBQUtY>8iT}Gi8EKcVF```&kkH@UhkOIj>0h)Fi)Xq>3@MsM#oX$rZwO z4BLJZ1wSTNcO~7X`tg0TQP)3w{GHa8+=3!k1_70ksAMOmtM*e@dnfjJ!1T_ekmhI| zj)A5+6^~V#ZnaSeHD>G*^y=Sx7o=_-d4O@9JB4@J9ZLEh?=+rAvR=wBbG-2SWT=>2 z_J^l-BR8uDv^si-76i6vECOw5vX|vU%AfnPd`6nw>|SBqkX4yJRT4FuEHDkC;VZEJ z6EX~>P$1|K^3@{+F{;EE;LIs+#T9`B6#FsA8+x`FqV3C=eMw(f-O z0vZ#gSQ5Pff59i3X!Atc1#N$#gi!tv{uX5 zb-(7PNzU{d7GN*Oy9f&M4U|zmWCgv?LX&xhF<*!0rXg|i+Jxhuv%`^b3RF0qBHc4{ zITAP-djKFsi;XdwLCN+1Hy(GSAl#!EFA);dBDNC3{x=|EEnH~ww@U|n9(h{AVFKwb z6{%wauBb+O*l+Q>*1pGjN;@hu^Q(CCy1CXHr^m0=E7oZo!_1P}X!mZ*QSenJYBord zye_HZH&iUU_RyGf>)~5!rROX?o5VWhdAkA3G4@bt=@$Yk~w&{s!k~ z@;2I7s)YgA9}&Fk3BsnUHg+uId1>b}iricBu1b6)=`AYdmSFZ9L@o3@eenEWIxDEu z7-1G@U{gxX&=JR`c2%Woa+HXGr$u8Z{e3*8T6whoH;*2;g#+VdWB2O+#0{eK*Uv9CnGYhjrD~JB{Tlt=H)jeikby5 zq=7h)K*xY%VF@n3Y=TRxh4Wgyd^MZaDn2z6ZX{fzuWZ4`lc4fRw_Yk&yfX)@$jp&% z{8*^7h=LP-Q{uyrTC$n%kK`+g^28$5iiybDt1(xOEC%`AZJ3X}OqxNaz;+oJ9ZT3} zN{?Ci@sL zefafgO$L|(xX`b#zJ~5EHh4|$^wUn=yn(Qu37yhZzXJ_wln%F5gceKJT84P7le$9q?irD9N?$8l@(A8i~o1Nx8oQ) zGDKaJZT zL5!n{;v@TMvUq>`@4~Q~@Os1_S}c|x9ugg`6D<3|M4DY8b0hBg`c%LDa~IC%8H}IF z*+&R>*yhbf-T}mHkUyblFF<=&{!fm8hQKMfN6lcZ;s+(8FHs}cJjm24N{`5%uRu(@$c~o9b3951gzc3_V8b*S^hr z*mI1_wY-z6&HtGuS#BhS?*ne7@7}+SjR$H7o|_RElIr6ERorC^pZ#TFMR1X{XXr$Q zjI;LgKvM)Bg^X5KMXJ%|?U?PJDlF@e6uTL&Xr8D9wSned{u(}NO!w^gm zdcqyaeI7n1-F75hc@eayyX(8C0j-SeLzKik*+nswCrdg-x|u0*xCn3YRO3m+3sed3 z5f{pI^NYHg#Zc(ds(^-b#uwmK0q#Vs|2a5RNX2rfnaB9504O+o?>ZYV)V4-zQxj28 zZfZ=$BosejYI-_Uj?{fh4^*}VW;ai-#=cdbCe3|1-5hIfLSTEphuT4pSV_q8@3lw) z6AAMss5JUyB!bMA$vLTx3~G$gESAyJ#*%IJ@MWVlwl)S&jKg!;x$)8#{gIHWe3`si zY|EZ-N(=%45UKS3my8IgZG*{ocHq{>>wQMr!>6P70l__LrqzeBmPy&zG`xdcK`@iY zmOGE4zV0h08=)W1b1 z=x#!xf4as=JE?{i#hz~JXKN%O*Q_muuFcVy8tto^zItc9rlIUG&<#8P zMRqU}bIN;J9+BTe6!WYiPC1Xy?4O(=RC4(BahfE(>qn!$V(RV*YxE-A6U(N)C_t42 zk2naa%N}}5^0F`J`Vp%@@Ql{{FI8a9_hp}Sjq!vr}(e_ZUlH*B+nQC zDoE(L-VIL9$roT+Y=O2VGOTSm-3zBgo`032#%~JD)iJbl8}VRi9h*(C^j69xv@P2F z7{VJ7@=;56=*{CjowUDa4+8SSpCWINFlXWECM`KJA-@684mSDI4px%+vas{GryF2@ zJ)#Ymd*WGXgQ>q@i390<_73dq|7KeP3@C#?3NF7y63f#_u<>`wtlgSu2U9=)p6V89 z|9F%@tPfJvr->3-EzUPSC(<`PpQL*n)QVP{x89&s(DEoh_$%*61)YHu<{T=57&DP7 zH3_A?&r;bf^53qnY&v1+w`eVCl^Umk262vo(kfyjnrCHy$fPp0)B;v{Gsk~r2ma)$ zAj{Ii68Ai{(8mgQndTjXTqM{=hX)kk+OJMCl%4K5*f6q->n&2D?amyCdhWCwjS}f+oH$}k^_Q3g??Xjj5bHV$CpN99Jsa|mMRrI z89Cm64qtZ|tamlLwLNyy>cYsM;)GHzH|BbabY=Fwg2OSnv z+<|kb619GFy?(5dz3Xmk%l%XIMO!Mb%J1iFW2d{KR}ACHNokDpB~Yi?gd1f_Hqn1ef;#amM*ug94FBz&@z0c)QEoNjZ*y)Ruc1{ zNoQmSHYOi{kleq4<+~ov@t&dF**L&iXC06MRO3VnWmH_HyCb@Fyfh-KYZWYTX6_tY zZxoGCp#T>o1LYh0w@k%kk9QF)t&)5qKlhp~bMF79b+(agk7N@f(PZlmt7{UKK)>mC zmr~+vavZ+*%jDQbm(57tb`3I^vDcEUda{_ymf}d0s1W)0=U$;nQ7@6VUZE|m%O2lZR;oBDPG^i7|#8D$SNbj9tI8TE&Q(zclXpzqHXF zw@7N~jV&DuC%3M3H{(=cWNfTPiJ|PT&^&U;S7cCPh2Fv=tCqYKgsg7gcycTH^{pa5 zmOSZCFAZ#DmXK>K*UZ>s6{vu<#W`7DntUwl2!gY9YvSTkLexosdFaGqACL)7zAJ5g zmRM}xpSbYy+6Vrp-%n!>C{bysJq))`vf`7r6ypQLHCUh|VQ4a< zrT!w{qW_+NqV1*QGJ{HtL-UcZyH{dE6g5?;9ct=(O3jAC!grf9l-%As$GkWWmvGm>he|{V3zADM(Tb>Ez(3l zqQOUbxR2G_go(wkb=2XKI}cp-mCi=qfM509V2GY!@WB2G2uS;xFNV5)l5AVgm)_nt zOPR_TS{QZ>QqQC`b_kwfK8oyhSxQu-zK3k;c8Ke**_iNPue2WQxz6{H)`6?F^v|!k zz?C5tG7n=&B^j86R^7A$l1<^2KLA#yENq^VvGuF6|JP$?Ghzep0M%w;`kMAtX|~K6 zhFN$?qNI@4&fm|$EY&qQ6B-o$vu5b57eg|8lq+ne-_1R3gZd5|@`o$VK2FYs+mgQf zDV+VgU94yo_CZ-O41lGA>ZRu%gVD_Lx6vm34 z$$8U@jg&+w1~HgL*iVm3{QP{s;pCEaG~mkvNrkT@b;rnLZEEpv~j?c^=fcZgWNmmlv&(QE4NP5Hf1;SoBmQ^I)+;lL$=8d zbW5}nC8?=zB$sT|PwfBY#HoJ0Ct?%t8H^8@}1`+WPx|0UJ z;dW9kP`(PlAJ4^k%F(=Tw#+kC|$h7|zyPBRy+p5UA0t*Mw^W^JLoVJdx zx1DDz`5PvG7ZHtqA!6fK2kPu|Iuy)(L~W*l5;gLr{^HyDUgu|9{IM`CmDIHHz2C{W zKw~WGZh30--oUfZPTgh4lzdwIKfHhMqtAz{YK?(KLA2fB$ZGnXutyXxgQz_r?()79dX&xfwJ(QOP#kR4FO_ z=U7Oi-XT_=!M*~Gy39S;BDZf_&NAGZ&Cwh-!`EJTR?{>zUAwcZE=0O;;x)1-d#GA{ z&iC%;Tfd^UaN>B&&Sa-730-Mh)x*{A=m_e~z{Aq;@xT9LDdPiJV{@lG5 z`tbEZFXfrT(iPm`%f^*zzy72C(iH>k_|C30s8y0Vwn5T7yE!x(eB5F0sGz*FF$*eDmTEJm$1_9ay$QB zL=QwVbg9A4P!|U7Il~u2%!_A21``<$J(O%VY1*+rQfEGv7T??ZJ!s%od!GJ0Yr5NN zmtX zYaOK8@to&rN-ok`uYY|{lzFE+>?YZte{4k#T!QT(a_`lVz6;tBU!QV1bn^3c2)=Wa z;5Q|{K1S{LNJEtLRvfdjwrAw}-Jhoudz7dODbd~1nxLd2_x~K`2M8NRm>GHxYK(h& z_hMn<#l|I$7t~vSgs`w4QIZ0hLXMNTY?ZjKw`Wlweq*7|TC;?+tx1Ji zDy=#_p4Dn?SN!bwx?9MHL5Kom=Ju#m{(r-6m)QRCH=s>m`&N=(+`V#ld17?W=erFz zQhM4{`8`82_ub@^A_j)n@ zqcrot2D-3jW3Vyd)Zl_y`{g4)Bg*nVpxa8;c03?aQbh=BaD><|j@~GZa>*!zxDhvD z?K@cNt~*@iqZ`p?c*!r|3$PvBt}k(Tx1)2IEO#kZ*_0RskAuW!#y zaK!g%J`4;{yc?{1*kf5yCp+iE$R{B7$hiNPqOhWQVYt&(uH>aR`1 zU^YnI=SlF0%hxA`yR7=(eBcT*>ghC451A$IFz|nd{q-C5a`SEb(5DM8Jb%-nR-FYO zi+Pz658E*{jPP{LNAYkze{KSO1@<}gQ@!=+9DcQ0wb|=$@6*2Y;Fjmy77XY9x~6%C zdD5l9(_xUqZOy4Rl%cU&%Vn}dO`dZr3L-D+K|o^cL`Uyn=}kKx^Avvc;K#SYVcg}( z+!m}^2|$%w1fGG`*zTMexpNQyrc(CGOsMPIz+g`Z`b9u-r0r0#q0kU!Tf|%5aFk%~ z8~F8y+&eFwdvC34N+#xbE!qb0D>d0z?Xayhvd+XLE2d;9E~e^4r_!nd8*~4@NFLzK zjxayk;tqp+qQo0xiNC#1iE{I-c)Q=s_9UOQUj{0Et*uM+Qg)@FEo6B;zjP~N9{{MuidcV71sSw?#tQfO257dFD%ZK`hna@`H7o^NaUe==qPI z0)O>*9>^f(5he7u__HJ|*8Ii4tE^Db_h#X)_=Gy$3u4GK2VluU^O@r@zF)}yT*@6M z!RO#K%1GY&)sJ{qbQ~V?;97O+;+ULtq9kdhHjGw^n%?6MJYV9qRxgw1rN}yQM^SK= z^9W=H-#)su^6xTcBem#Y2L50v0Su;P2=cPdtM+<_&?!MGmu}|W6EUxzi&}%;M@>DD z!iu}p3$oQI3kC>kZVJ5h&1N2-x`An7C}%a%r8osP#Eq`JJ*N zkejBx!sfkkaZcsux+mXAtZ+}`hnsc&z}R zL@&iVf%yNt8{#l(;*J?W3-mt99X31(HT>nSOR5X|dP9%RjrUq9BehW?RbQ0cI$Qj8 z>D8$0!F}bmIB%ol$ASZ|^Z$>rH*tirf4_jok|l*9TXu?iteLW#DTG3lvSd$;vhUj% zOCw}YNSH~{rtH~`DMI#?eK$0A#yS|h_t5h^-{1DW?;nuvx$n<%u5-?HE)~fb$SgNv91utg0$;_+vs;*5Kf5VqZ_Zm9cX#CX47KtjuZ>Jd zhOIXEQY}Wm=(c0*55(?8r<|Y!;{u|l&1>lvlWi`!b*X4r6slK)X)f~XLHXU zZ^?O?3i&&r`m%L7wzVX;y<)F)f7`O8qM@)TG~H6Yyq#goR_|9Ealv7C!OXgo%=SgI zplZ;ofKwO=ixj)pgA7MA`9yT>Bf*!8a>gayPeKFT}JH%N7JUlBLq6bkS-| z!=3$`=cPuOj6J?86kL87{uv{RjvgL(QbGv&oZ<19NR#ov64F{?HWhn`!~?WOiB66k z@4*~?j9%7rR2G)D8Vo|5ocFHCf!|LucY;cI-D-*=H00Q{by_6E_3m~gV`@kuZ49=& z_xYiS3N;!%N6Oi}c=r(0{yAI91gJVeKm*?=08rW4)eBeO`uRhv^7vU~; zbi<=>ym!TdIG@|dr;h(@WC?Bo{7<9ujZd8$6+2G_C9JfiaHDHYOt&rAkAIR*I=a|< zSxI-*Xe@$lMHw{P-o$#*YsfWx;IVl?TbSs0_2DWX`IeT_HnW!oYTGkF4C@pSbn@CF$!PK5lLe`@zoYw z1*|h8TiSwRVd;Rm<`Zsnw+-ex@)C!IIpM1*9_8tv%@ZqT@T{KIf4LT*&QPNsI2K6g z7=YlcgTF|3RflyYWB<+qaQNz{|L!3NIQHk-Ls2{Gdws?50vKEQ(AwIbf41NWzRwdJ zUz`z_8MeOle)|+xG`NOydZlQ`j6J#|+e8hi{RNVgL(FIsTM`W!?oyjZbxpy!9Ceek z;JpeQ5`y52oyjJX;IDiwSILdm0i7U%8o*E)cYXQ?3iJokKCZr8t+dy+#^R@dbur=P zW&PO5@O4vfdC(~)YFz%!OQWDGPIi)FpRV=o8(4*CwmM`Ak1e>OIXdD<$mSnI&WxqR zaM1wIqdO=Rs2k_#d9{QfIN_8i6Aoc<2yQjMIzQyV+6`Po_8b-2!?bOFNY2fV8qCFx$ypM*U8!)qaze*$RJ5i1;Le%_?r6x4TU~HE}F?!4;QkamX6VS zOEk=Cc(WC~+sAk5Ld~Y>?TlmbI=Sva#OphgNL`G%W0~J#<=E!j>s0M?osFkTioQAH zCHv&|6?^^dl-~Wi1AsM~SO&ym*W!l2_yyzzJ69vkIYUs4Hg^V<18w0t>(h(S7D8g= z_$`7g`l4;icP{bpNNONmHr(}Sbx<%jAMNVtGr*PrM)8hJEESc}4hjfWRGSI1Ry4R6 zkQd)np8ZkkOe-_yyMD}p&9BU;ly|`)A&$3={2@BhyW|V%QbwGNs)4GxSk`)~8Re>Y z$vOiDcI$|Z27~657MYnz^sE-Bb?mcKUsXjGxZ8Q#8zp6pY>+IDNl3iLMX=j6v1o2s zJAEd@riX2YPIvG8KMY#bWXt&>>lOl~{QUKLxB z1vJ|tgHQCQ_v7Z|JgNtIU2T1^t$Q9?GW^0JpIUp-N{1prRj`~RYnX`%5q>p;iv z=%NKXt`h-t$SvzDd~EOUKrfyR9MW^m__hf5-gV!c6P5D=xP84BW^(N>be19t(=F^y z+7CYeB9YkJ9m|yS9nPaYRdcrYzn^VrR{i73Ea#&I72RKgZ(BV&<5H&iKrGcryXC5; zN@q577V(X8pc&IoWUSWnj04o3c>DW*_P{yXGH$8@u~PbGAf0g(2+|4Wr*fuKr0!D$ zHL({r%sJ5$UJTMY3(D6)&)7@F?7!eg8-!TG#GZeWi(y3vw4s)r{bmN*{XL-h-+q~w z-DQ}nR{3Gv7Z=Zd^#eH^L zN8O*El5nEq28zvYfC9Xq!tpmipj;@0GEKm6sH%N|ad;3_4P2IH*w^3Hj;;iksz z0)AU^ZAk1{{kF@?frN9`L4ylQqmse#6_@C~KmX!MAnf|lYugZBZ>2p{2S7qRS6ILo zm5}}GQW!3=HA2B{?5e>@+Q)lynzSq0(A6Zmw(^kO@^W{q^>hvG%K5I4?f|yODAuIv znr^8uwobMg))%T-5zp^PLuyuy3{o}L;xHBI){T8iFbIwXMs_Fo=zgZ%IW>dW0RJha zv|>Ov_Or&evz7p!&^5y*cw<|;nzx4Ty>(0MZu=zG=A--0>>}jj>}aZMxkTsQZzbD+ z5)+Zyim3sS*}l^0AHVNf4R2J+lv#CD*jh2b6P53d-ylBb`B{|qScW>eCg()mPps1= z-9f~2IS%w7Lk`Q?_0u^(xly2U@YU~g^u?JoGCINQuLWIhQu|}APj>2p=!+O5!FkHp zP%aI52~v9y%(h~f z%qdyffoNL#%s6X%$x}*kD?VPeQV~mgyA8+_KRSiBZg#S;e``priWNmg7u+%X(#*QD zS2%XC2b;m}EST)31V`>N#&eBvipW4GHDW*>Kc_yHbUfVCwFq2gV{W}e{-q%l?AYIl z-d)Wa!DC>*vO>Nn$n#UBkd9?11TWZ01ulN>+pM#MdlN7rNWULfxjx@{tG!Wjmzux% z4KK5bHqtbzJIZ2P{tKHGU@c$NjyfbTB~kx_z*HT<8e{(O)HXh>vNYt3y6udScz%^C zV1vF@>8_)jWx^bImM<>2jC^wo3@#6DGT-^~J3v3PjNl)Xv@>|AsM{*$SI9306NM%_ z9!IuvP3g+kf^Ts^UnHzGjz{JkyiN9_#5RYtU|8${$^f>JvV;v1oP!>axOUa79o#^( z^ueE!h#77kjW6GBDcl()|5or-$sZowNkcw`zSblEZtdHCA9i`C69H54oXKAT!m*sG z`yHw@V9hfMw1r)dtAS(>{}AKue0 zG=bdRxz2mfvd?mui6i;*TMRVg{m<^7yJvqO;@BB%Js{N%)BrwBxj3+U>0au}VkEtb zMVH%?9{HxZJ&~7d-yx5i10wJmLU@e{F6cq-QhYFd6$@f$%lSh#Z1-UQemP-Lp>%(` zS^(zJHR})gtOHw>tpag&%wjS`Hc;5+ji}71s*_>HMdwzefj$n!#Uy zV`N4HQ27<`(A=PtPrV;No(2*>YvrFQ7$GjIB>Fpq8<}W&(iR8)k{Ge2>xbX~^fEhl zNk@EhB*o+(CX#`6p*3j>ltJZ6Q;#lDqu$Ux0H&>Keu(?T(6{-~t-wgFWPpWg=K{{z zAaS%d1){Il+}6kfp>pDzs4>Ib-}b(-7VylCt&#=k%C?HYtK<9#DxS|r{PsuPw#VO` z-Y!ZYJI-4hQ_s-2^sPYU<{xEzC_b)F8Fh*{0s0sLjs=&GFHBkm1* zQ4#e!s@Z}UvZ$zz1EV*39zH23?iO`4N=+`-bU|djwc4L#CO+pGXBZzmru^=<>EBok zK(VgZfj43KQcWguIof*jy8*H|cfx$onw;RIj$m0|+C#yA{Y=~@R`JN_j zB@d-VC@{5G@X5AJUbOYXIjNG?u}*TsAIkB;BRz;J1oOc33AryZgCvYhy&{a^roe|!3l zqdi!0U~fV203R|OyrvN1WlpWO06!aQQWlfxU%zL10Vc+*-ov8DpzS}73)`&M0<95W zbL#TIZgfX(3rqMk%6MQ~`p-zfUPQ78x>EN$B|c>IX3hTxjsTGSV@nnA->Xpfe~_fn zw4=5|QCf@jL3oc0Fxb?32MDNQAjr1r^sA4#g-dtv^RWVyGerENofo=d%)&C-(Bu~4km^y zRKG1O7C>7l__>BI+6_6y#`VVTub3&3D5G-k-}+pYXP}g44Rn4FFxTb9-eBS3A*M!PPqZeyA?`0+x z0?y9|yrxu(B~0G!AdSj@6jD=WYCxC&keC1P9#;svkS1f8ClG^K4pjZtv+0azF6>>* z#aGS#)XNYbx#?U+yU9kzmKI374)3JVgd%XcDk7|vVmG8~R=(bf6=OyQN7g{cP% z?Kv2wm}IA19lyU-!h&3RG*4}6tqYT&swuXd>bay!8{zCN-w6^Gf#5p!R!Cv&gxB?& zYDR3Bl1` zcX%us-cAS4#KG<`hYeXz*uTk+tM*%le!!%FMqAu`qWe}wBQn)5zhEm? z2MFffE3Isf$PT=yz)z(fLge-TpA0j?az?8Q3PkI<0AMePEjzrA(bSI0tpRa5}ul?7Z*oT(9KAZXvd2Su#G<9RDOqEnbZQDzcQt z=@ zZcU}m%jje*sJCF9Wl!rl_UV4<`xfBx6LBxz9guJh_xYZi_DRyTXN6rGmyjaJ#V?tq z_W*Wr`(|rG!dkYHL3+cs*02~l@D|dv+>iOL@dl9ZTp<7DbhtV3Z<-HKI)p+Osk6>@ z4VpKlPE)vac^xjo+GW}u^p3Lc$6)4HOHRs3(V(a)2Z&3#>mT9 z^K6eXpxPSQn=9CVxWx`5vI7UeR`A%C&oY9bQtgyq`DO#Np0*x6N1qYyGtJ~;2HS0r z38@+BK2KG%8vNTHhEuIn+`><4pSW`MO57<6jL&$*o;$Z#MZ1d z?$ULTM#;Z>UjVqwhG-=qxJDYV&?six$9l`hCE#L_#E2J;l!Yk*#Wd?%oRhJm*^iHc z6M-oUN*IN0d%U{P*y}DoCs>;G?q}wtX``ZhT zig_-A)eE)GutXGiTNJ43ssVSKU`r)ktEniGN8wDJQV-^)kWIqY zQVH=iRxM&D)Z{_s?5mIg7OfZi$>ceD{Od(z@kz~ZEDr3XlMip0evRVXH7cQc&wYR@z~tA-If;i#?DIRr_xsP z(tr!A#Oz_?Bdn2jN5Uno_2AztwFI4m<^aUpu3(=Z%(>l|(WdTL{CZyUXy-#Zf70h0 z3i&kKVb|cRuU|u^wZ-_Ab zoy}MRz);iA_nbX!S>IS%x;zEK=GAayRT{~5mSn@ztpRh~Px?q_^aOt7*)ji=vR@If z>Ey@?-W+(J|DWsp9_<44o(gb`%>(Gj{&mEbFY~tZ6s+89Ujmy$axY(qyX8*()dImu?#)MG}ys7l>W3XS@<3$8^# zI1>qpoB%n#{oX_%c}XY0wu5o%SKS%Yx#FhFHs=tlY63F1RRi9)0GBt}-j;lEMJ>5=&0J2pk^9lV!zYKq+9NU$ zg;@RT4DC7e{5iZUglYkBsPXq>hLm#>RtK0O7+R*urVS`=h`q>;UIz${JXk`UDo!D}Ldk$QBjoraQ2<`FM zzmb167viHbDUSBN7`X#EPFr@D6g#P5B5DR(qFmI$eNs{H11Twzb;sXXa9v*Y6F>52Lpup=PeK~i{jVm zNuW2{8BYVjb?08qdA$7D$^zZxFM{O>X^ydX7LF4<$T>M58xql~ZS&Vx__j{IFVmZD z7Qkof3sarw)y`o)R_Gt~o#J@aupmyqM#Qt)&1o7(v(!IJmbpR8a?IT&+~=#cwbDPr zq&Po?wI4(7?l>hD)0CQx#8N?b2Rh|%X0#`WcwTbgP6#<2y*mxJ5E5Wlkk;XWG7}i_ z<^ZOC{$z!R{zcx26j(=mY5>0 zHkHD2UpV>yHo0zgg4}>)NHt8%kQeJ$Giu-)RbIG?awEqwd3ve7GO=>-n^u9JXFtek z$0!hXAg5{Hh#<6RW}e93|7#Dhay{|IwO>@Z#~EOCROy!2_cM-iZqB0B|?tUzbbJAj#G5J2ek`3OSrv-kQ%aL6g-i)y&4Ptl~kloUL$7may3|6yr@d<71@AaWYD`x zilyt~aA`hVpd5>#ye_`YS1Y4>qHZ;O23lKEmv}IV=Bd)6<*X^H#GGh}P7~EgGAqWZ z#iaMd3ZRSh0WPP?JO4-~hnmi=XFshI&~-Ooa7At{rj_v)(N2vfvzM(B!7~bPIUC!> z(W1aC>tHD6VXLP)ooxJnEDhl_l<*l^)NqbD^;t9!_NQ(PE@=UOUgdiqS;1kFKyGL! z%K>OGoeD{sh*T*s|8TZToXnAG_cuG^-VMfmr(NkWv9853UF>MWtK-8v5x*hYaV!_r zmFt%$5d*T8{CemMm*+VA8v6P#TbyQpcPM)~8$EKNDBrt!|=fyDFO4Bhm59OFz8dGml;nQCL0uCgUOd$HzDR zL$rBxS^i7a%6gy zx#rZC%T%s~|4|gZ|Hn)k45Z?ITHEJ=XBJ66UZmDfyeq8rQ7f|}lE+}>`$T@u8fX5Zz*So!CM1?tz=fTuxPf|)V+Zu)`1)i^A~)c zPZIBVv_xdyGPX)pZncxIQ}>?pS+SoSIJN`C2R>;1bXV)&w{bj7N*mA+(NsWzw$wP? zNHy8WKsm_>jr4kG-YLL&G^xO6a$hxc%LqbQVh#CMr|ro}Rj61NYba1BP!@>A zyL>CBqXl9$Hgr2CNjHkFGD`Hc7+`&yU0S%7#`*NPFp)#sVzt4G%Ovya8J1&(fw?Me zpddQ`PPE#HF_!LppTVxV-Jd=LKyj3%re&z-TkHHKT^z7E-5eC!4#GQW3xu&L(8R8( ziP$?QZcZ4LRO(@C0;n?AV$c6-%53t~x9!GrVUDLIP`=S>lEosYUalZu7FV++=PwOS7g3qWZ2sA@O>l^B`ohzaI1{c>L)a>a43}Y32Fg`A_9#mM=YWJTB8p-)Kr3rD-dsy<08E z8CBq=OZbCttf-&b3TGwi zccYX`y&*US5M<5QhL^SkM zi^wg@G43xD2$FzJCK{31NnfW6pS)II$HTJH&aK{TaJS{n4WASEj@HI7%4b#VvKTQw z`m7_+itN-#=fs;)e>I%>+yCh)AV^H)2$|K94mU+#r1y%iF-llvzP}3$fcFN%EG%bE z6#71BJ;r5W2&vET3^(KNemW{Q-|2XGub+G=F_?IGuS*P4DRet) zp3;yMPG?QM2vA{S%iA%q)#KN$;g?mXQk8SR8z^mDC5y?}tGRg}>}~n^hFMLWC`|ti zOho&vGWg(+-G;LAJ_y-xDkcymKeYd$@)UB33h@d-G37vi4zHjh93f)yvns$K~76$+`Hb;KQ`=I|g(9(_s5FZCapFmP2sr zRG36of$~#MHm@Z^G=sqD0|uLn2c|D-&aGMejNq~|<+YMJKK|iIFITt8X7Fbwb!BU~ zu*6)oY(B99%q^~Bu(1%h@B~Oz9}D)YMr<+&yG9NR7PY3m*TBkZqYApX!*MtG&x=08 z1ZJki(TBZfzz~J1UPz^1hn=IUd9mkK|49s*bX-ndR`Sdvl%$9Hbu;Sr&HzM%T}vLz zwd3i^q*bqG(NH56*sOy?`8~S+Tl0s3g8vfArb@KPe6-^6X9#DP z?Btbdxek&!KJd@0%46+6PK5woi?@pJf@8v2@O#n=e|uCukxIIgBy_L0A6Fq{FA@%M zXs!&*`IZCM6SfSN%&xH=c$Vj0N%?k?T;F=?0D=O*&OOU9;_Hm8cbl*C{XivVzSS6- z0w$f2nq%siuF|r={c_i?DS7y?H%v<2*9MINA3`4_v&u8hhC8|Wx8J1jD}&@+5FY4C zc_NYT|J^AO=fLL<#40w}DdYZ6 z$c?tR#B0dr9m9es0M37@0%51RTdjy1Y4vlWtgBb#N`shf}JYp4Yjpx5-H_1}vwy z&saYvKWi^`oMmo(B^b0&#D=4){-^XFSERg%>hpU)5|E{f=@Ugc3|3_64iq!s&g6w{ zgDaz%rs2*nEm|Cg6N%amPg8hakdHiAoDsMx5E5`Pl)Q7gU8}1lbnjvVd(!FfE4NZF zDweB2etd}a(r(C4_@aDOH+<_7fAx zSMpys^Q)I0+EHcPpA4X9UxkAkc}y7aX^PhPV;f>JeMaEXH!Ke_DYd=i3zd|)0Y^?#f-)b9akfflgwBp(h2-pE4pV| zk<#BlDOjYtntg8?cmB7%13XPfP-tX^4UhOZP~J_r)AbXW-?9WZMBKP|Px}TXuo~ZP1JgpIek0O<~{GT^hgSw=!z=J~<anb4S9*c=4**S~e4EQGNoNiKTU!Y)Ggfdc>`yy{I?%-A&X(^;{gF_xbg5wR*vkCi zd}!3fh5lE^fLmW_V41vs(pZOUg2~Kriqk#iIpbRbLnaGwMnqw(( zq|iDFxX4ZrzG4`JbD^O4np7Sez|-k}!H$Z$PguX%AYhw$mRW2hY4vO7F7vGeW4vXb z3X}o~n+{MZULp*KKMI=U7DNrLSIHOV6O>T*t6=hmx<*|$BW8-8Z;=0Jq$XTYbDWXt z2|>Aq+lG}=I&^%wIw0Z@T3b(gBuE}_l^=jt{eIz8MN$42)L~<-^7o|H>d0va-RMQ^ z+=slX<-O5mwIq@0LklAAd<2NfzhdkqaoB1B4Zz+wcH-@dytmcBtcj8xJ9B)+Cp!2K z>V7z|jyv{wY{(Ji(RUEi_Xm!>0Ht=u(l_u|s7=Q*aZ^d<$7iz|OHaz8*HxzR3F)p;8onRA zS0u>81ZW>gs^Ho)`BU%zJBu|u8-?*7EaKqqyL96O?huBpjKWe9&*a3r7p9}s?eqWU%{DqasO&L|SC_$yVlZhxa7 zzW>LRLavJfVnI_#>dmA2`=3Dtj9)+y1 z-1>HN!hqahP?}XGh2IYoB!#_Roy$3--`@+f+UmBU8D!GIzNn!c^OoSs0Z4;C@&2GO z<9L>epZo;_(#{E`OgKflAvB%>V~G%H?oq||{wpt3wF|GMlj?N`$=lx>isk}0D4?juHE$pr$O)&#__@0k)#l_~JhT6+H{ zz{{8yhZ3Wg@PY>wj$0I`i#2BA5?xc^bjW;vk16jMU1H!@ZunaJz zqr+y#^f!O}7@&KWLv`B-rqm?LVcWCUd9V#L=LjJzle2DQX#`D1i&uqg%N*G2iZs_z ztXa=3k91hENKk$tkl-0~b8B!ZoJm@7qBHX6#}k41T=jdOCinfZDo!r-l4O55XW+2< zn~=1f7t)Hh{C!CWns7u&POY`TyT9dX4?ls&3U!EYpBHVbxKiV+dRQdU|LAf4egw1^ zLUaaQqesh&=?&^xk#77=681*-N=ng z6h9$;^sDt=kM$yw$Q4rbEpl@2+*{>CceKqt29nGAuFKWlNT-OYC*WIG(^Kr!wdbBdiL9)zl3f{}`KMlPWin%ARGmisVQ+!W z9t}CN2BWWRROQ~WqF(emNq_N+rgF*a-+oAfUzz?LV7BO1A9As85WWw1nZVby)2DwN zQ0~FhO|FAU>jmHC(UD0FDrco)`|oSNo1*&dHS^l_`iZoKJOq{yQhhtT;>6&I<~kDB z!K+-LJ!^RxyFXut{q~1%GtvgZ)PU*C`h|lh=6g^_@U4<2;7WkJu z?z0j`*K5=h!#dgb>w_l|gr7ZMrg&&_tUR>mLTf87is=oc8ir^cay930786=W7;WN) z|113j)2n|?3JZIP@qbYguR+C6v`Nc7Z8TBNmO#sH10CWV@Rq}rf)pOD0tV%zcCEX| zGDsyeJmYCjY}pS3iaPmrzhlVXH{uE?^E1vAL>ATngRO?PG34Zs;zN5Q@Dj*r2dmbu zx?R0YpRPWh3^-?zARa2Ee^4a2TU4fLsZw%6xfK&!2Y9StHC@Z_eaNqXLz=u*6X#Z_ z#@bJIKoz{PM7psEDh&rOZtdPNbmB<2FY{VY6pi)j59Ogfab);QR(=8M7bTmcq1Q3Hqc2(e~qaq|Q*sWd)Eq1rPmxvI7N4uo~LPEdQ<6JcoI@sFqxmIz}%pQhIpNE)SI#NQHIW za=`?j>+;~e@-Tw?gvbp-eXKZXYURNi3hG^~tDAk^6TtJ=OQmOUUSEO<(Y<0rS_9u5)!tcgZ`y z=mvU+$dg>vEWtAxix9RHE3=DdR-$wtgiIHZIoxX+R%`oFXP4;&j*r)^r|sVg(h9l(*N$&(Y-ZTk zPMj>j6s(>l07qv!70?6a&Mvw54X-#q{^il9y+3^Y1P2Vu!%N}or&SW_%%(`~?&-D} zaxzreY+7MJF(|JqrQ!pAPI*I!C+ic5dYY*TS&HG^+5b3=Q5=7w9Ud91PM=(p(g&Oj z14gf$ZkElQ?P?l4wnGTnCk&|s2ET#ry*=>W>hQyQ?csx`L1 zarH4Z$zbn2tj9MLEo1ld6J|Rd^Wb~PyxZQVvW&OMY3w*Gdw8E$9a^G{Z;uN(!8J%H zJE(AKd95#R?dW`r3eAXihNxT-WMNT2c{MaGe}aeAzr6-Cu5bi8M*yeuW_*{l%h#>? zdNxP$4Ule=AdweI=P~>x4YM}Il-rt?M%12TlY=6*pZ#z9!AMF=TKM#oNW9~7#q6^q zS!%Q0>bHc?U?-z=(f&)5PfDVuvO&fL-jRS_4q67XkfJ{sJ5q(D3WutVIg3g>;-`rQ z;FzEV*LHo}TkPIYUG45`z~3jZ@t*N!fnfNq;C_8bMfK*Olli_OsM>a={9toz34U_4 z(5m+{5`bQay^ZVQ#Z2DE4=Br}>R>Ho-@u&iQ!OxGiS*bFh_xBQN=YB7jPBQkY|gTe z%BpNXRQR&0vQ$2>@D~KXTlLeb&sZ(ag{O z0@kP%39F=c2}%jmFTUn9$v`Qlec*JM7OfnVI$R4igL^Bey9Ti$$x+504IIT+3>ge( zu5SGuRe@mTxXEixc%N2Rp`q#!3Z|-Q0YWL9==$MgQWI=6c#<9CDCkF0&97dtGFi`+ z34TAZkKU?zds3_ec0k_LTMs!{J_uIpT%C=P!B+HKIE7=Qv;&l%EOXAWcffUYFLgk^ zZUeAXZm!D@@n%>22;>4{P~MdCmimT?b;Qw#xO-H=!)ocD+cSEjK6dh2+tK`2 zZNyLzZ~eblik#mI6K^z&Jy7SrTg798WTs6mj`|+p;GZlVi__cma=tDRuFPN zsBSB0$VP;@;7sT?c$zW~PD0(=$?ZrPdwZH1eemsODvaHp_X63Uv|_T0*RhUeMPzd& z5A`0K)|z{hzGz~!>IY4v3w1%)o48y`9JEn>A{;zBH3GK}3eGlQz7 z*^b9f$8PRCFV~^^t?sjN7jme6Z|sadHjg#se&xaXLHImjb!6hIDsAD#GaR}+D6!z@ zg2lIv5;t<~$rgl_iF$p|&}@I65CAw$0l46=me@(8SQdBfLKYJEOSaJ)8*MTrzXqNX z`Y9e}^szF=J64s#%TjIuxMqDU zsq|19`i$vn=cejYQGg~oB)7%VWO3*#l=!Iq_)HD zHLp2;-abATcz*nSiI@e6DHAoPExr2ORvv z{l<|6{D0KX)^}Pp44dhMXS<@#RjY~!<(x@i@nn;mMf4<d?&43hb-<*`L+5Eb;*JudLp+LDcjO!lHYCr+5MhMO|R2zg}jk<~Hn@HkMRZ~Z} zR>iQh*4Y@D9Z4%9B#NP-j~ef4maGT-Lc2!`Unw@`zRYz z9Xdv{Nz}7q+7}pLaWy?N5qx?|&Szzskf;rMD}d})qaovHSW3?V5iNY034+qh5rK3r+0hpvQe-u-|tf8}}j8=i|%H+(XoO8>@>O$S-?&!%Y&^|v_12A=Onw2>yu zKNSNHj~NN=g`T2hn9O@AudqsY3J8;+)W*t8Vn?b}Y9l>D#NDW)vO<}#R(2d;)e$WW z$WmVSFl9CIkw+dXd~iMcb?v`|d4yw3PfiFa5}m(l7CwH40(9d@&D?y7FjZ#JMiHi_ z?Pynq#`ZTORAqA2od1I0WD!78#UOk&@YRXacfX1qP{y_|rsz71pA6(wVz2uyW?Xc* z8_H@~^ClCXU|>O+Nk7R8**Nk)jd2;w zunUzYrYOGh==cvs3pN%tKC$3Br=zqF0l5bozfAC`{R?t&x+h zYDGRHm9-$KYIzYy{HmTiYC!G<08uja3-c=`pNNHu>WE$r-h4#QB7Xzevk9G$>I{zt zcfD-q#^bBs@M**=b7_Fcg<6xlVBNS?bG)xj@q&W7advx8V=~|;_*>?>0lj_)Kf}tf zEySyRVxUrFiLk83>cW=~7g*tQ)(zYe6tmALKox_#0wd_4YlUxSSG`rrYEiI!;B7sUyXVoK3UnZou-4Wjk^tTn5}Y#lOsu4zZDT zOjvMzy|P@qVS;y)yWT|2k>B;I2w(hcBG zK733-uD?FCMnhr9rp5Ru%WRqg?e#{3YEe&iu9nXJ%azaCE3P=|C8poEe=Jt_=aGa9 zr9;OymbN74PTyI63XbAFNz}}FY!jaaQv-p-J+5h9xt;jz?8%O?&9d@K9(n&oCld(c zE!M@#x)e@4h8x!UzNP&)%EyL>VO(K&n)@~75Ce2FXIPZGlB$R^#d|8xS$OR?s|3+K z2<6ep@zv(VkxXVVSg6-{^1C43&+|jsgTHjG4SJTB?*}g(t~&8N?br$dRJe`$#YthF zcCCv*n?#fHmxx%_J9=i?Ezw8GBxu7Iviqr*Ve4HQ`i?*>N!7oGGnuP4Kd8CIff8x? zoqi$1?Hc~<9iSVnERMZ~zTaOMA1xV_`WU}mlI@>@Mr4cHp-8LIfOBT;c+;VW$e-1+ zJ@u$KZr?A@HWmeRve?J{nWEXOKPj(T`Ng^Hjexv`o21*df09!0+Q1_Lw#_oe)QoOL)vxm5zKS#_EIckrRGnOe#!6MBvm#QbiqZ!5KlPONoSiYIC{&cX+-w)Eto7qeb>o4JfOC%15f!MG zX~TlmmT2+P;TGwx)XQn0(O)KJ5r=2rIocaw+A?*JIaL{@LEuKb>XAM*b6Y4I>P zM}W$xoq>R~5nxj9kmiTp+Er%b^^q*)@K8(o0qGWo zMJAb=!rETjn|<#B{|U^xDmlDugK@Ox+)(D^EBM2Gd*qlm!@I!U$0V^3-wafTe(aO zQk7yN$ER{LyZ*$8l)yXH{ldgb%K?LlVbaOufAd7Z4CAft10r)KZ+mW$#vnKWT@iKS z&Wc)d0FYMW-gqqF26w^RSVJi98y@x?i$w-idZ1;sOQT-KxleB_y^ zV0X=#1?LEJPc<;y)=aj135d7CSH!$gFMmxSOy36HL&;jB#5<-W9$;|y;|eZY;5(9wNF-_ z*8L6dw~83jNx00bEX4syNLbKxib=k8!b|?+{gex_qx_l!DzA8u6Kk-$^3gj|`B#bu zZl&a0Cn?X!s{8k!{YfcSUsddwU=GbXJHbR06o{1kevWnZiEM9n?lg0OBAe&RP2S0m(*I9e z*Ws7+`nIj($vTy0)-jKRTye@-mRmWgMUJwL6;>*hE03PsD?zjznFDj?q~XX^FwL2Q zdn;usISMxksUV?%2=5ntf8+hUhrfXPdA|2}?)$o~`=w(DHy+Nr3ji`QY8wkRB9GZK zjP6jUoMY^7B}hCAFl90xf1c}s!8;{Zb%HKKEp#Cy-vaSFV|8029_crwr0ngAg0!wX zIrDhZS@M^=cMVV9?bSpNrGQODk2#uHxIR{IS4DTv_kmk)bhGQL0NBBwv~zf|I!7Nm zc&Ed}Q2yDVbN_bOLd8E0%v^l<@$I#RGuBB$5xFmNNg_eWrH@#SdxY;jiwfU}N8X+L zsLks(zhfX$w%vmH!5n8HIRj{gz1k6QPIkNCJZCiJmMyRJM8v|_vTCnN4t!_gyBRHo zY3s`|^tssYX7?ns742kq16)Rpd|yK@VyQ__hW{> z`^Nh}W(A(Orkd!UN4A{@dQaZz{I$gT0WZyUwV(r@?VsUmZd3w!bykSbJRO0(XTIH& zz9%+$p-S@7<74wNE-K67T8cUD2)1HT@-+*e-u=Wv)jYyakv9epf6RT*F9HEH9hL&E zzZz`I9{(>12rcpz53K&3NZjfqG-d4wp5;G=%Y_3B;LgSS$wn~E)^vioVJi53!gKLS z%xMk+i1-f^&P1&~3;D;Z8o6sBWp-Bk!o3SN8|y3H?XxD$Lz4DxVY9T>-d>5g4pM@4 ztLy?)g?UX{h|dHR@f6?xOGai}Ez$ZwGhu9+a}gNhbCW)`!H&r61;hpRA2daO9_fDU z;0wST6WPD*-PhL*N`l19iZIfIaqFM4UP81rNHpzzV^HLIU>E#=bf~Ju?cP1+4kh5e z7o1L8hX(CfV_5`(&%}6Jmt*S}vIAQuyD7)XTQ&1m9t;WGJ;l4_-Bi8Q1yJTg+lxOa z4k-WG`AeILS#H&&D4H!_RE)i&Hj;VL0+D#QJ@N1}y1i>G>negKERDw=%oPQ8Y<&BE1K>p`6oYl-jGo#EI zZ_11_d}9%T1_i231}xN{u%QuPkgvHl$d9H{tKGIA=d7mvwfa#-w;vyOv6$;6y@~_MMO&$cm2XZ4%vktdE#z-n|JcGYbpez_oI~UCv^84;txL6 zQ@18{i$8j1!wUs!^P(Y~REAoOk2fSZxbVZtHHApA}gNpWX}qrhxqMak;Wj(}*e$P>_kUArASJsJ~Ns z<|MmUPia2(&d{OQ(dRQ6k^Xw5S&Ff9Le%kF)BhBPM((=AIwW6<@|@ZISmakXsWMLd z@9`A}WbAYUe@P#BN~5P{A}H;ZmBQ??K7tFco&dDIj51;W#kz|>Cjy=I^hO;$FNCVp z93aek-Vw(Ou_gTb$z6aH#k)}sV|9KyoMb&|-_FY2n-x@;Km3n86TM--xq~nFjHz7w zCUZN3bkx$^MY3Tv&HU1knP1kPjKMjEb^UOg?M*~}ICn9KGUne*{j=!5sCB=hMK0l& zY9<er{uRoqfsI?!#4%$a(K`7#(2GWKF z^_@Jna-a-Y1>(^Pu$zT7f#y{h?#y;gfLr*pVj$TXXRR#)OInVUWLe$A}RN}X- zbCR!68-2cYPHLkJr;GlvQ94?uzDS<85!F^ygQ)yEV|H1wdbrR;5^p(+aepu${W*#u zy$XITg!0!YjtciBG%a5A{)^9C^8EQfYy&{LZugGKcspRZ7-Kn7OyQn2Mo4|^p$0ScAYxaXZ8S50Hk~M0%^EnWbP@qhZq3Xu-pgd z`vrF#h6PB&5e)0c)&D0}PDM#J6W9}0r9z2^FD|-F+T*D?sXL{28T2|Ppe}4(frnmb zFFzeWyye~6Cy>S@{st?l{Cv)>4yOdD38@#kYT{@slLclATvLJN&x5_@|(AQVJetzrgA*#KJOG%&@jKREOQ>CwxFp^yg zfE8Z@{v~ZEJH=Y-mi&*>!kqI*=N@^*#6&3B06`wdV;i}zb`&bU<%Cds&dlJ-j9sIc zflAjrEcIl+SJ?d!_MIHVIrBn!s?ilErg>|LwZpBLrGSBdy?4xRAC_#!?8EJ^zj2do zD+l@tbPd0lOPCDnzF*B&?#oj~=*X&Fg^9k__Ml2;7MYUb$!`ahAGURvLA~sqvT1Kn z-<0z(#*3@l=G&j%sTv`jNbjaXwH0OC&l|@i#}ue6Pd$3}%ulkyGF4L(O$h0>QxHV0 zatiZ-Haa#d`RH{%K)zW@w=}zZ)-5T5MOY5K1}a;`fVtSG-MY zFGE^DY+}70c&ZJDm{-%t&*=zR$@L%fSYdZO)qVuCnS7CS=NTfm(5Bx25FYUBN!7w4 zZJMSV=mpGz`LL^Qc!31&%ZXCRR^hI`J2G$w4;xHyKb!gbudXPOgJuBfRWxSU7~HNN znE~2sX&~VnT`=6ij%N<2V}+dmUdFuga&kT`uC#6SFUB+fzvqDdPwbahsTqcL*Ex6O zseUFb{dUKA+dDmcUQt{sobtM0u~j3xi!2F0;pv5F^8pDo0x`8vXL`Vz-_4@?w_^eZdwc0-+$M+ zzqW2WHvCa(6BO8Tg0Mcwna?FBo6i;7%rF!K3hSp!6X-%=HP-wB4iSo-J|IDk1Ka)v zH|<>@hxK}5E}jC!F7@%_N}7-*t6VLqV+wH78Sw>U(>=G&Z_3E;w7bDI{D016q@rVM z2=L0?OMh$W3AVV}i81euzVP&!{$5{kTno8nCbJ=R!Qlpn@l;yz1Xeth;jalP$Tkj) z1KSt`syJpLbQep^jWcw6oO_R@bq(j8jXq7`agHUx$CcBh%jS$=x}9AuP=$#%v|DDB zaTpxQ`V+fSrO9NHSnh0^7FCI4H_z1P{$PrS)F*)`_(F5%oAJ2I+1d7ZUs$d zI&bnR>n0>L`f^x|u8p$&{H)?a?tEk34^-M6v(V``X#?w2V^&ue2T;x*4+I)i&sHAv zTFI`(((jsPKJZUuTRHbw3zZ$OZ27L05A5}o?FjSwQ(jq-(wk)QQ)V{iJLJsvhDO&p zz#Ta4w_G$F9hxMu2<4fAoV;@hl9(PlxOiXzvOY>5-5ouCy{s6xa48F z#ELv^9rf6guR&pgubS>ch4)Aq2GiRNN@8)IR$bO^Pujex)=ivCBWG-gXT%kZKM#F5 zN@V#bruk|v8y@c>oym| zBh9}e`A)Cu)nlRta3_O6RTI*IB1G%l{J2>covXOXUdTn)U3Q`#aJO6!?TD6K881=? z^mD9b3y!DKey(+}t8e$e=z0(`3Y^O@*kPC@Y$wNvP3!P@w*ry+>f2w&#M#kxZ`Ftj zyr7%|7|(ZKhm!^Ao0oXE7#lh@#Fg56I-8*DE!G@*3|DTIelDDeywBia_j2aAZL32g z26GzxHhwZ6qTSR&yd|bnYV}tN_WW0lin-VUYyuD-W zaX9J!qlZ?m)#|GhzD)i=H)&Q>yR&M3_d>6tR#YK=_%I>2&l>-3x_&iE)!M*AvL5@C zHkXZ{%zC`?u}4>Gxg#8{kuxRG`sCoD7!EI0b6H1Kj?0Ma0cA6t9pU4raNeC=to;G+ zAQ*pk{X3II&g7oh@KQD>Gf`lV#i)J|_2E+KMxf5(VL{hJfqgitpU2^s@0JOtw1prA zVE%@Lbq30A8iOD&q9kAYWGw6+oUyb;_P`_v>~3Q9LECPUw+T7T`X&}r(;(Tpx{qF= zQU6stAo0i3Vc#-sQ(j-^7HyOLR3Uip7PS`r9-~nf_*l#0_elZ@r9AirSZnhkx=^`V z@$K=ZQ#dO z8Qw}Hq>IprI?cC`NaS<8U>+%Gfmp)qB9E0uY!Z(@`_!I4 zU?4$=f~Cn6O=mr8d=>zVQ`4{DXnXt%5?48fen{V)_8c0H5Z;96&?tsjjlmcm_+lQ_ zf71a>p{mL1ZA~iAhw{pEwlGwDd`n>^@NOOFir~EqE9q}m{p!J?|Ie#@~ zDoqmf%S2kL^uw#}z2J*@KSg^AvnYW(uL@xmIM(MUcaQ^x#ezhiJ`83GArC7Cbc1TN zJgAnAt?w-H{(+S7aTO$=yP6q@Y>gfJv2c~g!=qhiAQ`j?)-}PPPV;z2R8q;B;O!Kl z3?*PT-0#-8cNLF|&fiwl3GG!fg0^d6`j?e_7JK(a`|P%DfXPJvo_-Cd?E8W?#~pMe zhGKCFjCUF&=+q1^71zjhOeG+ESq8*vU}hy-MBxr~*b$OZrlmBoOa}-{94Aqn=mZb@ z)pxU>y-%;jaFhZcX2t5qgCqnE{JVI;6h>C@1~)r^92@S$*7{YzyQKbJ;BFgHCi;3s z@OcwL=%5>XB%=gLbRvBn1bK@PAco~rlZ<#90O%DJXXJn(3+d&9PdzY*c?TW*Oo(Kz^0?4Mdz(yrX(0NDLE92S>;KV2CP|;&;;#R&ngGF zBQ{fauRoHJwjr2!Px@YSM{Zx6ER`=kv|L0eLVpT=^0AK8KHAZ4AZ~e}SuEv%;&`Q< zrIxHJJ)o*BykYtS7^4}!)LWkC6;+Pd6;9xeD}Nw%dMm8|CTK;yS3t}-FPU&}?lV^A zkMabc(b?<0CJO}UbVrKRxt|rBRK-Vkus{2* zU0zW+t9XNmx6i6ahh4J4~e@JZWyzC)EKPT zSX*q6{#bW7Z?0;8CT6ZOvQ{3&O^j1l_!F~M^u66(`sqa{K^UXhJ?#DIF^|)cYbiXw#k-*jRFIk1JE_Lm&UzD1ne*!;RH9^$$ zdG;c#bVGxr^PG2K{pbc=ULaCmX?u&I2uQCpf98hX+nqPf#`(Rk3eFX|6#htgw>)AX zPpEV`vFAR^us>x#xc{JXlh<2_l(s2{P3<`$X%sMItxFiP)e3dRyToH3;QyvggNvi8 zI*QlTc;8KB3ATJ=F89f-_g6KHiD3HraNY?i>dx_m|eZ3z~s z;UmS^U$co#KIH;5?xVfA3kHVaK*N>=1Gi{SC`Pc(Y5qGsFie_bIX>-fB*R;jYVweX zk(NRKp)59aysA94%RGJBRvqago#(k_9;pmOoY*!`t0td%#nS2z>xA(6x1uFDi)(rQ z2eTj1bjLo@Dy+`SA7_O|7w4|(wRodcEDz;Zs+6IVg2X5}^x#k=@~=~jPoE%`x8SBD zmo&p?he!3g2-T!#J*PA1V_Aos8pp$C*7sCABB~`3sw2phh`M5O@vwXSG_Ex?n7V*Ln%ksGIe5FXtvo|)9a`?RI@#z8C zuW=X+KWbuZe>*9Y09fR|%S|rVU$l>geipf963XIq?&tHCZ-PT8${$q6T-+Xxz*5u} zvtkau_M?s*`=nSM6%SK#tqqF({=JO`E&p*5u~wC-@c@zkH;c|Hj9oc=-S5u5Qi|Oy zW>)Ey<4XxtP0#60_%toY8SyLrr;3vy$}SST1r&~<#jBO|BX1rmo@vfCRug(4`)02s z7J_cQB?XTQiQZhf!k};$4I63&6DuiC1@HP!E*cDHpy*{{Z!o6WHQoI+hM@&G#5ouy z2w7oxp>Hp@>758c2bkuO=P)NOK7KOg$hSOl~l=!wAPDQTmTUROIcqdyu zR6T8)HaE;zOlvGMu0QCw=c)`E|KRVSH=kUq_y_;Cw6k=ZNlh%mK45DPS!Xx}y#c3Q zWOE7P}$#+z9)WVjGl5+vQ%}2!vwz@+wBN-A#U~yES zxH^yhtq4a`uK`vp6*T z2XFmbscl5Z=bM5JhBpXW9?!)%p?U^+T}gG&4%8+$nRQu9`pYviXa2iazwu|o6rwkW zDA@0&cB4>QR=oK~@7_fJco1gEt3(<3JLY~Oi*j|#{E}mv5rf;GZbVCUto6>DtyF=C z_4R{?zm_q}+ea;C~z8FPjw-L#`-}(DcYPHgM=yT3z#0`pe8FG$d!*i zh+5qVZ#?+tA|*gD%-Zv(&omb+z(fxAH8Y5OYmPga+LndhNH*>QgzJF`b7{c}pW#>b~0 z&o5rLO+q47JLgV-!z%;8rr~R8DwZ*~a?ytwJNc41*nCag zl;Rla91@#v3@ye78SlqP|oaiFsxQg!smi0hL%Iv#G#Y?`kI5>g7 z?znvLRb^EF@?55U)$uW^?Ijc5ef935Vn`^PH+js9J8er?JQKdDO<}j?vlCJAWH$K` zu~V78AzmSy2Tv4SVWSKMdj%(HWM0^h5xMwB*c=&wCm&=aSV|q(3=)Kn@+Ks1uX|2) zbXC#U6$F@>oJ^-B8tT2E?XPeOcXpA+EyZn;Zx*OwqS0VjXbITdiJ#imo65cXH!G{Q zQS#*%sk_waOw^*%T4`H;P;31jETlLG0H?+k%eMQmzX10qG&nf6^~}Eh2+bG2-PmJ& z{HbN<1^E&9%Qj^@)G5`oHP+uoXx7E29BUTmVEDApJzv_unKr7jDOLFUBCX&@f0gRt z=}Z$4tvJUtt2{A`%}Md%R(efXy~^fpK{an_nnZy#h$%$ z@)1?Gx)W3m9EI#fDA#^#)X`p%A{srJ=Y+XWo$##?Z(d1^ivLE8(0rO+XXR9_YGWx* zP{~eMvx#7f=d!8y#y{pG8eFchyk<+<-0ch)EK1I)+&Hu}WYUGf%qyo(7en(e^5Sr) zc;es+y?9f5y*0SabDy{==hUVhVU;b*bYh|oAuuBG?&P20G{LOYJ6Jp_wB;F4lpJ0o zxI3ZNj-1BfH1PN_c-R66vvBOw*Rpp`PV*ppM(eegY?nnPd=yFf!`Iz=%rU&$4)1+l zO0N7bM`%P3_uF3qmAV6cj9_B(wVB)U5oGyaNZLMH&sED)zUUs$7*=Uc@zr^u#qpXN zuqY!~#F3RdtkTpCR_xpElorU1wv*76rI$dc84A4ScBq%S+=CFIs~LJdk3%^lHgp(w z1bf0~-6fWy$@^D|Z81)M+i7iMj<_SlNg9S0yy_P?kpw}!wV&{he|k46Sh~#qx(UB@ zPjg^}xQ6nZpb-td7>t*9p*f~XAh@H`BXnzUavsgLmbX6NmzlFabO&mNsU^4eW90gS t7W)9cOkFT0gny-6lDD+aK~(l?5`ySoQ>UEE!QyAy)DyTdL7OK^t-51z%{J;B}G-7a~~dB1b+d%rvN zo1NOK`ge8r)b`F)b&Q&dEGiNa5(ESUs=S<(1_T5Y;GM5PfP4S+gDx3^fIzCTlay4G zmz1PXb9J(|`)maPAs3UH4zHzofEB#AdYw3lMMXh-O(#bmoPwbb0efIdO#>+r!-1i7 zJh+Ke1&fQx{NWc+6_T8$F+j!Q)>GFfkZpYr+ z#5ZIy8zjr0N?N28iW$@(luL^NdYYf|BEe9wvyhM&2z6G=(b4Rkmb0%$fMwEH=w>US zl%ut^H=QYrn7RlEIhg*Tg3o4n{jwY<*u&cb5Y0wk*DM`@pQG8#MpG%>s#pmk%%v7Y2IH>H9+GCQFn3V=NikInj>R!yYu!)lIQIU-P+C0d z9&ZLw`Uf^2jkh!|y>FTnavv`TjUywD*@n`rkapj4bGL#NwM)$FBLzz8xqX~ztZUm7 zp9t$DQ<;@>umHnYQ_j!qrHr8#GJ0Rf6iKX-Iz_cwc-<7{8A|1#9)^Vlp7+)9Y~ZC5 ze)@YB{nU=l8X&a_@vo?&qLw*O#lA{?xSB55k`d6s60%CE<0_CCF!xsIFvR?RY{HCs zNnB1`w(O^UYjXQx~=J63`t6XqS@&L~jlmJaI)KEAJ)VarM&a9IE6D1uch zKbPFW#CU>6)mRtW_WUBk4xbW!xKuo6xHv`)B^)Ou{5D0fSYj|vufV2{qz#UDoz>OO zm)Uv}UVN~XIj;#*eP*X;y_Y*2!LK@M*-cXWdseE74;Jk^A0dnf;Namwpa%&@2oeRT zygvyK%r+2ZUeJbulv;ysvi_2DhzMe^Jf@*&1i^^9p)CBNAG|}^V8jr@CAn!jl`tfT zEX}efA|h%~kn#!sbjvVAoz!68c0=-`pgKd1cS|=T@vWl?hkEXZrcc6?n?i_VU`fal zM5CEUf2HJ&rtTJRO@g37iIKueq@lr0qC&Ey{7J$nqmbxo39k`BA_1hdNg9zOzJxds z^G#|R#K(!6R-^j?$|%HEM;n%woU(O?%ZMEpznX+{=h2VUE_j;qy=L~sZ3}BGWSa^k zS=VxA&cYnW8|b=l-e{IGL{b47#DC~c-DGm%X{IwoKEO#J7JCD04Ki|1;yZ3$ed1mp4Z%2R27Ng(C{ER>b1E9=FRQRgMK$C*yiG7HGkKl!1 z6pk)Ml_XtH@e4C72C>(D6Ka!bQ`?;70;M)#UjCRqNluW4_zON`77fKtB9eTj{F8jC zJfFN#k*X!`Ps)WP5;+wb#i567jZ45KUa8FslOgj$m;d zr`Yd2eYLi-saf|!&QF95k-j01UmsPZrTcXIjI4gdN?CnZ_%npjlxvs4ZBGQ^ z%`VBSEIG-~&KJpRE1WslbvN;)5{YWhFqRgT4N`b38dhu2+$oRMN-xtc`%}KE6;LUo z&ZW8aV@zvA^TS7>0#BopR6*$#!|YO4HIoYC{6M9b9N!K&$sTcPLuy5f)P6w12$4tz zjk4PqgmRK~$gawmTShhtNl$o}1p?s+A(#N4z(|Q|CUnTAge&eF{MX7+0E;qvYxc_QDtG zs7ma-J+j?3C!i_}+kGkWv74@wS()F9VR=N%izswT!!Mde-I=UuJ z;tqxmG`t25i*y)t&8mqiWm(P>Y1ShRV-1y!Cp8ue5eqv@Jo9Ziwt^fko4;aMusfE( z^EQiTKZCaO4lp(o&nCCe|4c2a@9S=OFU6eV?AP~xpE^jWOQ@Uo$-D}{j~uZ~$7LO3 zT{B!U+^OQJYI7`cly@{(K6Uw;g)q)EPU{s4&V9nV!#>RwF%)qXM)P|51S0!JjE0=ON=h*5B*N)2*`kVEJWvF7P(c zwL`E2B#gdFwMrP26_gm16l5Q4Ev6*q(>Wuy)j8XF*x62zo(CN=cC-*psvc5(9{ z5s2Ht*2`k4KKP)fZ>weNvtP%4#O|XzW9jZXxP6mMuF8=~l|7Atw()#^v!P1GOtmXT zlBvdXlb=3B<7=ER41TevHc|Gr)b~7#FRgsS*h^ ze=fK$NBo8OCA?os!~FB+Y458YikBe}sTI9H|Haz^f(iuM+M;?8$ zf(#6C7Qd1xj2OZ5WZq<5tR>LPYHjw38Tt}RYor*Kc4{PJlvaB@=l}Hl<@s)8D~%6# zAD@|J|Cw?>>QLghgwIABZqA3sx9B(ZON%3g($q|yKsGE~BgRHHR+iUa3eAVZs%WCA zFWk+7Rvt%0b399bu;vuzR*m-R9GzlhOZ=3y(k@ggNKF*cj%o$ewemT6fH!8QcfAMHKO5j^| z;%-p>B;+x(x4U5Q+QhoLyVmY&Go0NB=I}aO%M7f3Y2Oc=2pffWBHIO!c-LQZY`9Ee z-_RGU-sEV%THhErfbE}#(B6Rd69qXUhd7??&mvEE)kd%r2NQ~5RB*X3iJ!_f-0iA2 z$BFcu;=)LXPDGIHbL~#U&QW2|br(#JFR)f1ny=k^xSg13XH3Up}l zIKYAb;?uXQmL0|A^wW?Q6M2)7cD(@mN3zG43)4UAc}f)cC?F_)rKuF0;3hwaeMAV9 z&yjg5#NWP0!4f{86VTnO3Uhj)$9)h(wT_gbUL_0;`-`MRgZdw9C_oY!^O-XtA_p7FbtCf|bo2`?(beCn& zy8zKyPR|Vj0+06Z2`R5ZbN>DezF?=N>#nP;BxvE}z-ngcWNyXk?cn^k9SC7>!FSfd z%H52@+u^gLo1nJ{)jt-3@BCje8x_SrChqnkRJzJ)6p~J^RusIf?5ylm03-?u3Sn1E zYe5YunSaCIzll)Uy1P3Ivaxx2d9iwNu{ychuyF_o2(YnpvT<^b@IKY=T?6oPv$G5TbHPrNnnV@ zS|BD~nOA>mUk)&N4)8f;G{iwlfKr3SakPSJ8gJX%9!h=~5&mZKsy)FL_(blT%j_R) z4UW(*Ma^V}{cnm)g<3Up`09{e9QmU{F75g_~Yj; zjr(p2AzdwWOA+i!B5S?4-E$_M0EPm2M%A$njrmxp$(PF}_ zTeqsy<6_%y&Bh*2Jm0IZy=eeb;@#i)w(VLBbP61maa92csBU~$Ohe^p%=!MPXFKl==jvbc~CmiG%|R5B@9JY%Fbvwlx&?^Q77apV;#*LH#e zqa^a{0xMYFNYupwSWzf|p#ETXaefkB3o`}}e z|9K=rkP6w>ZHExt@|M8&oXURUg3c+Iyn*&B67qCU)=3vo*xt(7t?l0#TE=l+d+RD( zG6$cxq%`ZwdToGpD;q0Gi#n$`*ttn^3sH$b*S|QvoBk!|S_X>qqbg*B;EqPJ%*u?n3+tlm_)L z!q0@#KQCJT0aC_KhB_sfoKilE2ZG?Ln5wcfnR!0{#PLpp(y+agxFsR8E!Zj=sC~6; z7WIn~v0!8;!Eufk5C&v?9;w;-CKK}{4ly|;?CY|MSV|#(*6NlEUZZ0=8mW8~nin+dJ)w4N^NaBO z+i453o8_Bd{23K6rWB%9h!P2A2Hm(?vMvZ1LrF7g`UW1w=DAviCjV#{T&i78Xy7kE z;hL>}uxKjy=y#s+0vN?{rh8Q>kF^#7>BBQnkGo(=uqv&g0zz%jQcGn=*k^hgPn^5K z5Jl(Si=VBqQ^T+>m*C50iEN!~nx3vKCO$(;MAK>x0{1XLkr+|~3nYdRkIfbvP}~h` zQX!^}ul^*^H&_ap1`N2049;rY{CuD2j&HX2SVQHQ$2pRuIB~@jgBQwUToGm{_SLV( zSZa(pjWq5s2=K$Y0xDDPOluUJ!C$U!i1PjHUFY zWX5X*$WH_!^xuQFrpyi5UrR52rce#%virwct?uWV*W0Iv(%|_=e?2g&*6@<9eo(ZN zXNLE>V!?83K0m4C67hz|X>627WXHM1dI6T0MQ&URC?^IC&#&7N<@C0je(zrxej`N^ z9gcbFx#7U6l$@! zo(0CS0Xh=cI`q1GB#57sJ@`Dx5hMMw@q|f`M-2Gbbq*Np_Yo_s9pnliI*5W z=xYX)INB#IPc!g+zZxITmFBaU=`u_nz)aega(prBYO`1ukthZw#DA4P@XrFAy8=xKE z!My$%_Xj%k{YZy#_uGS$&fs=T{yF`Xt%ejyL9?PTL_3jW!-&_@oDsG=$>}!3jk^JS z*~gB){+_k;Vv!=?Sy_U>C_L=%TT^-4F* z`MjT37+43*9L|ox6E0a~G0iysTDWhlom;Cy;Q`i}*V#Dh?qhG2GN?OYEGb9fJVPUc z;Xj&p+n}9lf_F}+eyrg1%R&u?KXkh>qrQ;bXLHx#v%$djBAtNU#iGH_N@z)zkOHdM zF0uTroDMcXGsFGaj#FQk<$}_qp0xO(UwqMrw`h$)cRI~)H_#QT{_*oSs^>GJ&j_NA z6bawzaWcT;B>RQ;qMo=ePSA5yF7>~RX}(LF%Zw$u_|48?c^qt&xIz1Ki-EST%YL3x zXcwnW&?!Q;6>!cJ=Mg3N;=(`qXxU@-YFNlU95rtniMLPn?}2@|7a3=5r=|;e;$}l4 zy?!-qnI}S>7VvpH?svGE9Zh|1TlrM5QdAYy5ko|+sdJ?4E&_<<)Q~&JzIbAI^uP-> z%TecngS!!mYSchVI`bk>D$9dtuXw^CLq#sy(KWA>$!0?$s%iFd2vLt?NAZbHWr2I z!jQlerBc@qNM$NxS&^kRfu##VpIU&W8G?;<(R}FLegP{6rdR(u>H#lD?#&qmu$H!a z9Nv-S>5p$sH4z@;_q#mU)HUCj!L?NM92@|wegvX)6K?Lzz;>|8cpr7j;$oJ{4v)O| znYDBPR%YVtzO=d-)$g(5g~t$Qa%6liTj;BCQ#6va(UG($Q$7OSrnu5xceEEhCX+YD zcXDSIguLY}iKOFY0xw=INS-_N3qQw2n>Sl{zYyOA>Qis%n@coa@|CVIoPe9~OoY$N zeRQdYa~~MvjWT<>f9n-di-+&`we)y(?LeYzd8@yn-w`->vikCPFA|qw-d8xqQ>+cI zThk>(Fg|iv3^Zl{2Tn_$zP3%wNk#_rd^J2?2ZnUHoc{?188C+Ad}{dgd`+@*%`h=S z(`0sfVRhQzv&MpCYwP`shiUr+^M1B=DnBBYPf;WXLdL=jMyRlUm&JUvE}ZCN(B%!D zC(*ToIH?#B2g=FFtK-e)!XNFcV4;buljK#;17AXtI5Ka~+6Qk;ueSlK=Z+vk+1TCV zHe&*1RkZZ>H^{)-LIM9XeK^9{&P9iqzE#haiQ5Mv=&;A(&Xx9+i3P+}*4#`*t6(wgclxDtGp7p|5l*4O;YXpdcR=VwoM;h?zzAF(%-G`BHhANY@d*Ch0&gaaQE~0kK_Lkc4Q z=1r7N-))-?_SUT`Ot0Ru9z+kC?2!+_emx(17)U;b%JsnS+Mo;JN)&QukUsOpMA`5=J(#}ltuRv2SH3w zln%%ky;Yso%^4zjH)lfL_#L`;H`LXIi5y;SuZ*Q@@)F3%RlB8)oX;h-z`!W`;e8d;y_7%_FB$)G= zTVe=?vzAVTFMV=@Mz_)}c|fsOOcL4AWVY#)V1J7&`6U68Jf9i=TCRvz1(fn_r&RX9 z{CHGJ^CVZNB)I42&GemAb$V&(u92|rLRVWQly<96MWp%sFIAmq?%%kQr7O$@A6F#u z38f*?hv3jmpImVSOj3?td7m@5bnyc|69JHH+grS^VplN*xUMgIlE!k4f4L$UwnZ*K zqXFV83$)h6eX1kcgxR|>;E_CJMfUQQRq@)*0%m@*7GxR^JJ%(*$j*x*Sd^*_JmMvY z^#4ML+}{k&YLm1>pR*{Sy$ZZW5Hm!Gr+vk-(8(s(A+t!|KI^BTFmpG0s#HRj$S74~FP1t$XxZ20ahB4(uVg<-PkB{>?>!Rqu(uXG%4<#G9zamAOITC7V z3e}og{3yYt1FZn^RFO86(WbV@K0mLAg6a*5wO*M};4;;0!2152rBl~LoctT>t}}g` zSM6!Fwv7XF+30cMcVF&E-7oFF1>&xJO=@e#;#L9JCMQo*2=wQEjG`KLhk}!vQ?1aF z&sZpT{LX?^OT}O7NF_N%5o6Mtr}L~A z0Q38sh{vRz8CWIivmcJx$HOuin?zD@IC-bHI)?MeX5HL2imRPv!w6=y5iZAXI41W<%mRi)gh$kTw2X#bSJ%rY`#1E4SZ8= zb2BKr7iHQlJ#j=jG0rvDWH-tCc(@$A`$zAH0_d__2W? zp?&638*h__rYTOgKJCrPv=8pn4MQsmNoIr=b1iP9#k7(bm#r#fpeg%F?!61O(**v4 zE|@~Bf!cym)o12r+^)c#+M`?#^yY3KK^q|c`v zCfyyxiquDE6uRYk0czrGZm?@ls;>y-fsc@m+na;D`sa4^qe4-bc+JSG>Kp?HlP|5Q z64y*BUWxfW{i1!v zP~dT2l$){T%rtVc+2Wr7_*|iIZluD#I$Cg-0&j4-mS3E^@#`{gCKX&x{t^ROlZ(YK#`>LXSAkmgs z*dW+i>!nu3o>#c$xRry+r>r#dNu)2AtefID&tITJSZ=w@+iYDLnWxLM4L*+IN9T1W%JBq+f zv|%+IEAK@^Wvvq?YR&l5@WdUI2Zc(}2Y<39x{yPtg-HFn1F|&5(=ood2-sjweF{Wx znr4wAl7|U%+1h9k=Yl(R8doQF_^6Tz)guDWztuJqn}{u#a9|)hAo_H+dokq*>Ej4< zxCwC{vF}NkHJ90YzYOK*ES`nZgt6TKT%hC^+MFqQ@?o4XI*;@tLD9&}lewaSRO9o9 z-D;A!uY2=FJA1hxi_Ic8C;1i{%>pK9xYi{7J68{A>lZRHO+D zaNG#X%E9vR{S*Kit+r^}NjuSgZZ5o>=WfN>mmlxL0VYrr<#vZtVG;kSu!vm%EWV6Z zYvzcNgp4YWT8rrJ@98-A|Rr|@lfS?SV+@9_#KiQw2@%N_RW zARjUhGG;(Je>cdH1*bsPl()Pdq=Qv)toU^9n{qc6A~qy2o%f0TYIhNB)P%Ae+wl#z zX*P+Je04@8N|T3QuXnmCB(GLTp~D99?UoUV%o{zj&WlEwOC*C1kJi3lXeN*goF}+5_MH7JEQWBu1%I&)=_rs3+tj#P9ZH-ocJ&@_SAZG`;4I$ zT(RsJl}oMcbBeIle0)>3)bsqD^GX#8GNv;8OAS-^y{!hY8QUTHnz@G)ZOjsaFk78HnP?sYavW3^SXW391^%aT;K5TwtHW;K> z*MnG!E(S-wyX&)Jp|dV47N_7Z4#gs>oL1Py-hI7;g%&>Q<&x$5^Amyo(9V&@)T-0p zEGc_u)aDIY9{^KS`Z$ZaAiw4twtoD?pW_ewXeJ{LaXGRfg>kD_mkU=t@{l(j{D7(y zxk_P=^(`pUJ8!(A6n+f|#fh@n^0L_<^B?wHI-~2&4qd%R0%1bqdo4pI^b*(7>=>Qj zlZe6SsRH&{*l35+J!dg#Xap^bAT@T z^966C_c!^iQGPf$G6QPb3)yf1U}q&FU#O{iWB%6Xbi~47ZMsAvhUFE zJzZrzOb~2KTaSlWbArB#g?f+xm)Y4)H+=LNvsw6c2WH_4EvJ8NgnIo9A-W$&rLOY-8 zC{%aqKBIn$C85Y=3wCDs6!-!3 zo}WpBde8bUZp4IDf|@%wvCbh0lQT_=5`J4g4r$j2p+c;-0o18i9=Ag8PZTBwj6nB7LtY+)` z1I9wB3Hd8_1~Po1_uHl4{rzy1T;G=x5u=v##vzSPjdck%u}7gm$Jjr2P3L!OuheAK zBJR6zhc8CI>VrYMqTG)m8Ar_LgsYVK3DqAKZ85IH8CIjEsG^Y9&l{H;M~j0;E|R#c zTmp*Lut5W3Q{)N#iApq6wjbIDz?4roq3B5WlfEB*5?Vn3e7ASTRZzhKeyBmWLla4g zmdCxjKnTBjoMthc$?!W{H^MlB58lnL=Bix7dh@b*QAJ?u2?6~4 z>~T3+ht_p^JuifhkxOu78e&;%3dNx(Cl1)+=H}*K_`78B`Lk$f;M0||ew{|~wT|Pb z`lJojROy-2R%>}B_X0NE!nB-$lTJ|pUcJAOpoAnPff?KSeZnl`t+(Yz$C>GkxyFup zgZ@!s?fOQf_hiA5x%!5AllC@~6ONrY}GEY4!c@@FI_6k{nh7y%gGa6-Ayl+w16vESsJfwe?BwDjqiM)#xrU?n=?nqEbD0(1E1K%tVw&#z`2L4lgQ4*5TZ6@J zfBt7dF77;6>x9bPI8a=|dM_*e4~5{Xt(!ySmi`WYq;XLp^E-f*0!OEtM5?eQ-zBCE ztZrus-%f8NoUNvt*-wDypd0)DiRN!mrDWMJ-sZ!7>q~~cwvg8Kk3N>l!kjDVh@#2> z!*bBpQNYDG5iR?t&Li8;=0%XIR6`M+Q?p0*!uOZCW?nG=5Oy7Hch?)Z!K;Y)Rjv&h-Gs-^2GWttUd+!1?=T?OXBEJ^A=( z-dqz9Mg~l}M@ftqGIZfPi0R5UeGU*;J304nRQL_M5uOIzpnD z6EkxnHaJ>h@Y^~Ej#6gEnlf!l4|@I77&oYLOt0Pg;m5$Y&)PvO$%ZlD%^j_kc-AKr zw>wUp>Jad+(x5T$Z@-1fPTX;Eo5Y`dh>~KlDXM}OZrTlLO+=b7@bEuE<-Sx}ErSEd zh4Kkus&}1vFk~Xp3?=D}iW1~W1hAOCI5>NqMIFs`ddz5Fiu8UIY<)dU@GkUf%=9>} zt~U2^fF{0R^rojipPq5Z*r#S!OI9fldHw^3m!4irMkMaU8E+qg!3iU0IA=m7a!}Yk zjzqTnif0h$JJ-q^JMzlznokxoAy91IG0``bA17?1gmUfEWF%Wz103_m^b*?Imk~Y( z`C*n~i{$nv{Y|c1li#Rx+EvA8nh5rR~mJ%8k5=ETcwl;%BjMy z=f|DVAJtzn-dlV-UBA*bVWAZLA|CqCdL92jvlc`Cnezuozmo3L$J?Zi$lwENC?t{7 ztP-@NCAHk-Ld{$H^#rM;xJV4tbCLDQ>6^<{ygx&IkB#z%DL^w;vVNub>J@p&I{^o9 zW!gVKtWK~(h$ajG3UhkKR-@=6eR^r|$}<+3@V)Hv#-=XG1EdU|Mtlw#XQylyd7Hx*64I6!8T=GJ|8Zcp7irNpz-bc z%6XLsKsKk$@9+cX9Lr$je8Q+XOMVArxwL3QQd z>h*j5T2E~~CCv&Fnf%unRz@)`R1V9sXqkn>8wAf`ta~90T00sOOKdy;h5c#}*U>_9 zsoXw|dS;BWHJ%Ub2(Sl5ZXl!e5Sr+bLgLyWen(53w-K=HM z+{SGyYZ8O?u?G{K*xIHxDm*IrW(%|H0)L+@Knj)_j=1`n<<_JnI6D%4shx&ZdZ>ZQ zi?vJLmBE4YVc7N~LgJy(=Lf8>u|JhuJ2X-vNOy^upL*AR%c=r;ZQ&r=_HV^CPylH`l7j%1VKyA9!P{`C~ z@$nIp`A`*wB;}09C$yFF`kudVJUj^6bS~QUEzRXN7K5o>B2jdtI_0|A(OYy#Q-&@U zKJ3-%p_%t+Mu@J8)gFq+L&%b(YBVURX;GB+hAF#BVU$ywz-=NHK(e~~sx+PG-g^&D zsnPnzlJ@##2mK((m3Q8yH=TCNg`?YC<^Q8iYN1T)M@hQ}2oWS-potRH(x7u9&8zQ- zVe1g-+|oeMobzuUUr)g5h#0F=g4|WD9`oky!#XtVy%Hg3igzSe=tuZcmfZaa_E66T z?{FT%!{RKGrED?YC&K^?udzq>xK>7d6=Jd-W^8H#J{9Iy4{v+jL;zH2d1Ace`6`ra zo|VYubw;m~huJNKT8-`qr;3<+QQCSxH8n~E7XJH&EjL4(1aH-{Zh0cZ@4Fof4!FW;rbXAwjD7Kio`LG*`B z6tvm|&CWbtsd`C!)YiqpBN^|#Q2W;l^GES|wTDk2tb-DcK>qPu7K1xa{!?%Xx(CRB zEx_yaqtG&7R&U4Ueb?pQy0sjMY|b&rXvcZ6ByVsN%@={}fx<1jI*M?H2-k5*SyZTr zA5;^>^3N_1<7B8(DF1pXTh}Y^u=4@BM8bev6!j$ZjQFRh^-` zZ`Qd11ODBGvs1EpG}a$Qhr?Y2XQ?CwD-Mo~9(UHzDP7{RO~^ESopa|4j?+pv827%7t};}ml2dCAunGGmZ7j80 zGB~`S-(EZX6g%&v;WUUHN}tk;aAW1j9B?=2C~TnJ$x+>FOJ9bDo#F z3*~u}6r?SKp3s;u7L4&p?R6G*h0wV8ImYWm#={3>LY|<@%Y+0*zEjDi;2ZSjh`8*8HrD zNr&_aCWl8g)#=)EH7;U_250%hPqwiUwqNeXR7^i{$1JcP$^3GxsCa)pz&d3;F|D2N z&3VIw`fP8{5+Qxt^ZN*!K>nx81M2MXcJsr}S;%42*ga0Om~JU1s4q-*?e9gqN~k}` zA5##a^a1T@Aq)jE+)ws6n$#TeiHZYDXpm(FS9|13``jPq*A}{l|DZJr7$X&#lq;%J z*?k?3H}!Xi;nGWRgG`{Oy+O#ZubBJOPxt3mVV+stP}cMqb9lQgL=Fj?TF)?hbovV@ zsoJL;@<)+baSe!Nx_!}%SYr#uz5eq^b)lilW5EVu&%l#gAtCdqWs(GTP9@Lr>7Glj z`{=`3ej*TudF->`a;nYsB9dwC7EefMh)?oT4k?(3#S z2OL^qB73$FxNdkm!+WLix}+m_LPBEsD>9s%n%W4&TGmHtRrGV(&oAs1EK#KQfWx0} zAw65E=c_@~jg#VKX#+YPFC-5{0@TY3kKfT}tXtp>Q?v&OnXbFJIYvx9&G1ArTr9HU zSaf7_c(4P(>e4Q5q>7;QA?2m6Lg+)Bq*E5r4H^D~<$D}QSC{H1M1UrlWpkP){I|#9 zc)8IqJbh6i3b7q~Hju2J_*BImGVSL*#d8?f!5xjkUIeZB4|^|;pRn(@v+!r&T?f?;fvW(juLG>_%uDv8?($}an| zI}CmSnIn*$%0F^Z744oc;X0%0j3vRu7vd8dc_%kCtA(-Q3rQSz=kj(+)hmBoTSx8g_~r zK_x+H^V3Kak$~K4J^og!>ikxOd|rB9sb@{ZPOsmmx|fNecA3?|IHMO|}i zr=a1mI$@?*&%K8;oN^}BM0U2vvd=ljTE*!m$AHJT^^aMcFy;s}uFaesreYZTzNX>P z%yOr;pxq~0M+maO7uZH3@%j=`iuCU>r@MUogJ%{Eo6;@#5g=BqlD$%OD)WqM9t=a@ z_|)I1&!51t37mX%$K_hSp=Y7+O{_i-WE$I#M6p+FMd@SzZ0O2oa2D(wNQ_S|i8{6q zB7tOOKxFc1eDT0RhCDw1h2xN#)vljfJhkakpp zvY)3MC?z41{VGUaw_LlXD`y^WJ(?|<_Y2)~{J1fYdrI1Qt#M{ACxlpbde8h`BH4+$(T_8Eod z-uq*5#Li1>Wbv-tZ}+Gx&3)Gzw;3;fjux110=#@g2$3lrHsWj10B?uKOC^n|i_)qD z;84;fr+}8J^!rX+3{+bCNdpKh^q`Wo67!Pgz_{FljJkAD2jf)uiz-kS?xgG`oHVtjm zrsS2HuG?L+^DuVGK!_IlgiEqUGR*Uup!7q;dd;FY?hvH76YlR}(zSXAU7TrUpM@`9 z6pz;trhjQqSnORGEt^p0RYa=CO>A9CA#`hsFwwh>$$HqKj(Du%f6cEhfHB8*`&tOp z{M~^>4(Sp?LMr;?PbGu4Hi}S^EG`AM!Wpdmk#aeYK8q2bY(PiK=PEmNC|=wg=Lhn- za88|wPDJ)hjuSbOM751&JhJseG`{t^2qunoW|JnZ#Q0KA;DrO6d5)L2Xf(jo zwHNS{qRAJAuV}_Se3=XYUfIuM3ij@Zb;_vQzh^Zw%d%KllPa%|NNBKHriVYI3{l_` z06xSU;w09U_*u2-vgJ#%j_;vw%`P2nL|t*jX8=<8)6;x#-W*80YnN6f`N_8YI3vDa z6S(?E4gY2e5Ireu``C9f!K4eEv-*kvpBv zhPk}-n&OP^;JrY;Yrfra!B6RxA|dH#a~I?|!)rdrX(b`P$PqrflB`%t(u#Ff5C1>d zP3$}Z38GoZ>JRB8n63;=ejjwNzZjXEpRZ;T5a;%gvxRd=pDNObVG_*!!sruMb~W|n zZ5g3G&v@H_ax7Ya-Im~q{h$keF>vL*z3AIgPC4Q*EG^ao8q%xUkrybWCw)ceg{itRsCmEBYj>GE2H$r~qysIOmB~e6g0Pft znkV@_E$J>S4>S>PhZ|+|KIM*L!#H=*@dY#UYBf`=E!b}Xd*$5`)kskbBpt)<6&%S^ z8PgWb$sdLwN0^m1G=QcFdF6AN~6mY6nz;_7f zv4PzEfbQjMoTouheeNU6tk+^|2hiljmk=K28+z%$kTfDSUI9a-*m2iNR5Mu7s4D5q z!u%7OC>RH(Tt-XksCR(){-!$JS&XzS%7W0n8n`iSb?d^bY@&v1*{Ik|-WtEZkNfNn z2pQ39MCw_>tp|W1zdzMQIX+y}R*R!5%05 zbnD6}RQ=W=$D^`Vm7&HmW;`m2dI+*~%=(-851!?K=E&ct3{c5U&ThPMpne202K^tn zjTh&))cyfMu;5HcWBM8jZ{^7HL8q$CaUHLV#H|Y9KwM4DldQV{amt$NG7mnSBh zUdx8hx1OkN*Ep+B=S+@c37hnG(01D)k@kDLg!+qQz2qYfk(z8&b!TosvoLH#+^_3)!Vz z#&PJEYSNbxpu&joYn5Z$G|(CS3ZR^lN)C7)X@~o;&x;xUyB^T#d z6k`d9b9Er^&}THQtBX6a-)1U?j<)N&uD2CWk^PQErSm;OJqYE>u)>w>5tP3wCpaXX z_J{`?i`75)10lLk`h`TakB-r`IwvzeRXgdAp>!w{TVvUpn*dP{f!92@n6G(pvHuB@ zxJ1$;n`wJd?e3QwqH^2IgQPt4QWdZgxytr_olL39dr z^aUh`t3!PvqBfzluBS%yX1ROhHR(_-X!`58LWi^=7WrWkr?@e;T_`zvi1c?EReQM`pW_ylEn1C}pziD#2d0^ZOdl`r^)fv5JM#`bW4I z-gQwc+ECbBn$0d2I64}J;R|HwWunq5Q>QOav&la+dv#>;*drqt55tPTmrJ<4apQui z^9ej$%Q{jD_oH4YU-B~^vrdv6S zen<{=pEJfWNvlJ*Q%a`l zfo+mZtx56KWZ8mnmN;{hpXcNwd1TKv(Jng&M`X(d^RC-8BsE`b7Mm)a(m1`eSsy_t z&dfM4Vf|4n?NPIU7?m>A4(ILzj5vwx_Rof*J1PCkj(?}ys+B{yAOO`yr88{7TqVpl zmJca3!9%02oHUFt>E(-XlFx7FeL!eR2a3AoJc)pZCroKq%pdyi52Y_%j#MRO)fIqf}D z^0~{kG{vxYh|^Lm6$-~w5@o0{c3 zeLp8R3mTSbc?M;F#0Dvg=ryJq+OvvQwrC(E!3hX5#NLcdCIESK5K#qLMw97^y))vt z`V49EYImn+%9;<+F)`FO_=!u*9qiyi>3j($nPt5;;)lV~bnLvpB{Rfk6ixBy=tF=Q z_o~{mK+=z)J9O3q9DIF!IsukMU841|8syT5Ido9lukOEPMP~QKYG#HDC4M<*Tj019 zm)#!^NM(KLRLSICZ^J2d4>jzR-M9HZ-)a6ml40jd53~GAoxNG#&CN<*x(B}T|105TGfj^d;zF$lys9URQL1i0?K#~I` zilpTdT2fL{Kpv<6C|4*2?ku)DJ;kH3xo)c7?ww|skQ6tq`ovYNbp(RSfyH+jBTDnT zHaL%t0xc>sRI`+w8li6pkv%ZB+cI=?yWc@FQH9%o!ds>5kt*O@e84x{R2DE^SP684 zR#^K}l`!1KhfCok-A{gBcDaSDbb&pyh*gnPcsMR}q9v64=h)0Pd_V z{u=ReR?li)aNnln{n_!(!pHz&cfQ^$Beh@hs1<+fQB1#Ye|@KrnS#y;2!Osl%Hui= z5yJgY65`bLS7bz;BziX{dN0r#zW|D&y5`$sNvkEdGvH5m1?>0(s|ae9AKiC>xB-tr4_MfjN z2*eJe?b9=WHn*HEz+)JAJxGj6Vxc4@dZ!r!WlPwTiH?;Ou6f8wphyxiTL#6bQEoClyDwvvW(_QApiY{YV9-kW3 z=t^1Ss^lm#ig?uVxC&wNV3fDz`QvEM=oXYN>p-C|0IJBNCQ1C?RMRnr{|^u6z@1qa zZRv_xv2EM7ZL?zAs@QpB+qRvGZQHip`TE}Oe{jy&WABAIpBV!A9>zm44`D;K>wGGg z+Xu!kUyZV8S^IRt*B;D)r+n~_8}@|uLivF>vegxqRO`ZI6zB}$p~)FvG=zH+E-4wm zSH0jLr$2QbgFgU}?53@uT~b0%NR81RRiucz4)-|ac2Zj|pabT4d9wRgcih9E}3Urlx!%2OksQNKia5X~iT zY!3T8HbGdo1JWpr2WpatLHsSAThi*?H~&OdY7s@e8PYNX1y{_6kgK{-G=m{ML-v9E z?*n+Loe1OM&sum}_(t-xib|8o6L*7=+$?Vva+q_w;ii{{c+Gv}>W-;19FXzLLqL8M zvDC{b$5rJezlYf2oF#cPG8DB=|9|CU!Zv_7}cHfR#mgIBug!|jcqZ} zMO0TajD~6L43cLS8-;p{RhU{EvHS64FL6N^qGgj{b~$8^+zV}tOFEjGP7Z>50nF|l zMw6meIUoT{nocH4BTrRrpdL6>ilb?NB5qf~M2J`_wpadjMeC;f*6g{a5mCycuvGoK zIFx?rMecQJhs}*!=*{1tAG##Rh3Edq6Xchfpk=)1Q(3G~q9}AVgH*Yj7th`|5!fMX zJxsAr3?rvGa9N=s)6yXRcWjVNlKofWQQvyvDtp!4$nA*o!NZ9l#CwLJJBQfDyXC`j zLxc3-wn4-OZ2%B3)SgiC5BA>MW|t(qUGk zuJNDm41od&p{0enAQx`XZ^JES4bglIbzun-A0`vO56bg^PpvpqJkbHB_O|Scj&`5b zru>wvz77Ag6k-IUL%TVh@4uMZ#C(hulb6Gp>d&-+C*SB#_|aSU(9Qg31AH`^rRMfW zO=5}r$k6Z5a!OoOOFB?o+)tND#jNNqV+F~Bpd96z=T#PpgO#$$4p_d5C2!Dhzkp^v zB4kRPFG%k^&M;}tC6z`Oo^#CyG@LFG&7)@qxW!4Yj(={qxM|9xYgHQsIHKFAYydRg z8A|ZJCU7o7Rc8LeZZ5KjW1VZMimw1nS$s>3r6I&N4-tjMQEYB?l*}4Lf`rctW+y`} zO8FBV816UIU7_qID&3&sSxVF#!~}(?m@ieryGH8SlI8Kqxp_!;@!UgcW*(pdE2Wb0%}nM8Nc0R-oF}Osh_5^TyNRbGlAfbsJPOccH1$8OT|w2zCuLOcaQqA9 z^at_zf`iW5nw64S31DqW$7~EH5g)C`1Y4HF?{v8oU? zR5YhI&Y2B5rsuM5aTt60uoD@d5wigq@dmDCC>B<+Q9>(4SR8k}RznZ)?NlX*uhiii zK+Go(h`P(%>ncBw&*aztZt!@abtHD~JxQFdkK*k&$_?nwvC#7hmS44V$7j)z$jt~8 z(Tk*&FTq_Tq;youH^khU%o!tvh|R%HXVUOcX&Crq?U}ejt#lSLSWIfrlFgelhqq~F zqdI2_P?H{1NbdIb%8y5>Ybiq`i8!U_GIH4vrWJ-o`LyqTs(7pvVMT|!B)^AJ>Z5yh?R<(%ImMG=#8RYBkZROB#U(1S{s4cU zu}E~qTR8r=8baMXKZ^}$66ZEkdnr7|J6V$$O0N^P2C=Z-HXz~*v7Mmx_RFi4M{Ww` z^avQg51)2G&ygBfB^PcU#4YR(Jv@*staCG_{N7vDvwe~$Wx>R;`fFjLR}PQuJ7qpp z95s2-1vrdXi1uv|&NMz=u>)Mynlpt&Fs<=$*>YkYSjOo*mT*_4VK~LTI<=QdIk-!) zH|&kHZLWx3$dH^i%Loqq1kHl|ZzvAQND7zAcoYb5N;=kdi(=H`{ogD0B26^?VfXG8 zmeSR!LzS3zD2L6Qw%I0@v&V>=)C*V-GI9`ysP*0TKb{Ww1!u*H|1GokGC(liatqv_ zU|Bl93JQ8R8*|7y?#R4S8!>L%pi`HPP(txv&Xp_&}TV?U0*#o4V766iinqx5D(RO>LBfNZs$AdW^S6Hzp=Z)qKJOJAI44La`z0>w=hli_tzkyH zSt`U}jn0Ly+;u^Y=monCD+I$bINdqi@l&6YLmNMyxG@l%Ql;=c8ldUsx%xPrD7L zf9nR`%?(wMR|pULFZ4+r_(<4TbN!EjJFlV4dDifnV({TD201KIJ)QN6^-C;6ZQ&ug zh6}ZeXq?}c!)FOqT=0AH{>|~}l3Yw3Djd9wJ!qXQjI9(}Y|{CQ|3wQ;lgUgraUK__ zy&yJYK#*o?y`bZDKR$g-?=FDTl2Cq-h;&alFjvrN$+Bse%tdMnl_Pah$p(yrxI1Ss zF1zDzQdVBDj%XGFH_!W*W1P$4=Kn)`qQKI%AfJsiW00z-g;LAx54jF?Ts8h5_SBd1 z#@LpBoXe5Tn@GA=BYnC= zXs^L=isdWwMosMFNVvdPg6#3OW;O5hg&J4hS9<=yk#rbv+hwdBGwpa(|l2DUhcLYR7_d zxd>TY;h=^HblWE*VXzC*Iz=Hn#ngFymrxLIoqX!gTG;9vVttD;UuR{I{aIsM3iR5I zLaJkcfe;HGhZrwecwXp5gc_uEvBVpk)9&#f_|?|-@bY?NX-4sW&$*$_?g}%SV|-5sUwkMAD1oxO*N{8AV%*ChM-MpD7fqiyBcP|;S|wRKQpAR@7>l^lEPK?l>Ty z;x;h^BQBKtlg}e8K_0q?_RV&dgbso5%P)+3JC4y)$aXem^2vyY#Qk;97EAs3q$s8M z)Q}3)3{#y_+K=xNHw5yBQ9$>?96EzGvdzxUfJ)~=Aq5@j3xA_pfL|S$0~um~c4W*` z-{l!!*R(1CO~;>}*S@ljDc)$Lj{nBO-~3R1Wm{P(F13Kk@o57TJ*L)0K+h#OHgpEk zrfWc8XgCuxj)DP})S{$!^FlYr`rwk)D1gW3U3CB87#WfK7PJ1pEC3Y4nTd{JzOu{9 zGz~dbz{DQg1xH>|WR$xdBc*y9V2 zG$m92nzc{#*e9*n$A^fYGYr{ae!Q`biBsJqu>EjS9 z-5Ud-xRh$Ugv++9JprT<@HUuDQV$)!8p({&7t?Be|V38|*v5z3;z6!#C? z%(ie3cd5_Ewa8G;plV=K9=b~gce4df@}yr&@8xc_q&*66pDN(*{r_YCTBNjZ?hS3| zVnj@l0~`E>dlld#U-PR*?>?nfIiJkIs!;)~ZAOYvU5)cvR}IF@YB{UigeeW^D$ceJ0Q2XqTr+lW$)@R9`H z+o>c;M=NWy$*=iK2xmOEp3tZP7@C?DqGM7CGY91Z&{?2u*5Hg>q`GB|7X%3e0!SKn zbH|JM(26i`#3V{^>IF+smxn6hQ2#a#VdL7WK<8PXLn={|hd5&Su>uw&{5-$3u!qp> zGmu4Qx-P4UnPF)MFWi9f%Glp3c zxa;d@#NmiPn&EMGg>-MlfKCysxTDlR`st9nT=LcOB&-o_*zB{!>Sif=;rR5bH-G)b zGIV@S(?T;5(ql`8>jZ9Gtw;oUDTdc;147UE^sQ07o|8}Hj|uUptCLW4MlfM!*cC}Q zrM9IhbquZRp(0$3@vaKgTq9U=NX*FEnqy4fXx>7HF}aR2hUF=Sv`2pQxGGKWIo|L{)AN0~_ayv-x~sREQrn%S{5oO|w}_K3+O6`N)c)wAV$aIzG+Avy z;|UG!fb4GZlPX36ewkHF9kOTg);1s>1A?U{;IELeB^L)|PT!6@H&F&Q+3Dr&9=_o7 z1W90fFn`sK7q~L(E;H|AuM2_u>@qDf3%;G!xI0!(1;YJ|6N}m01leQAFitkE0~Xxw z&`%{fUydI(K8S({)uk{a6K zTYg+ihbZF6ocad=5~#Jr{fK&n~M^Ux+v%!a=o|Df0*T9Bs%ieNzX)^Rq`HUjP3s)YxG zShp+T0Z+DOTz)x}G3x^bK4!WW@G~$Yz}5mN`W)WEK5@n;|0HK7VkLzrQ=ZY!CNyU% zSQ^63TT%&*x3)<-W?(?FiNb|z?dG|ta&Sjef_s1dr32b~NNSuUC_)|GflL)@l!=^& z^-I?&2RoxR8U2j)ObNJqL!N(l!WkHT5Wxj78%r<`y_jQqcAKtapsI}>0NaZJrNQ|A zbw>W1>k8KvWZ?*6#(4#afbsOFVTp*LM2N{>Bx`>byZG3)`4PH{UVcVYFx6z%A1R&~ zl$!m-$s*GhM(pH>KwOu>(dGe%RMQ0vQ<_ftmq!*30Y2_iC6ihv(IWe(VI2E4Ly@$t=WPyCsJtJ*_0<WW$k z92HK->H<^cJ&AoCb%2dWm8HxER74;oqC;-`Pf+-BuYz^WTWInu^{c zq6A6r?wn8GS1p```>5@~cN|6Rf?y|_7mefE+d2`*L8%6>_h-ctGQM!_Yet%W)F=AK zqK`%lX|ggtxsnJ{SCL4gTG`ox6c`8P>BO*513^(xW~0=YqFBA$kp%dK4#L_2JDz&L zN{M0sA%2+%I383QNp6&VRI@|4HIsunQK5-IBZ&g{1yV8yIP6pu{f_Y5K2}Z{TbeA? zd!IN&Fmw)4jtCMpE6d2Hhyfyjo1JM4mp(GB_lOs%lJVq=cXtoyHKM0ij3UIC_$NDL3=$5R5n z0_;$`7zPzt@0&v+@_nfxy`0`wi9_)X`QCdF=hGl1i;es3C0po!7FGo1ov6P6ilOlM z$Z&w%_QwX25@|}w+nuN09E;~t*{D6C=$(7WWoHa`r^aI(!=N$nxRT zjRQ0~gcEz!!T%2SgRH8ZgjkC^CWz<)Xgs+xS5~>c_7*mJwg+gKev=Fr3~zp{p{cbN z@EbgwjlD5FqLtq`vCCu{UoGB?-~$PzA!0M1`W`ylpOf7N4+NWjEz`Ca_Y`N>Gbmwd zU8o8=vZQW@K~u;vEx#?}2HW^6IPk_iL_=Sa^QuoT2oX(1&93e>XoxDC@EtOovMr8> zF+0Pf+lThBE65+kQ8tOt4W$*1F+P{cc7~eEO>=7E-|EqYyr|mcp)KjMARAPs6hdZ}5HSer zx?{+8&-L3;DO!_5#e~6dT@VXvFR2PoZ5+?_&uCpL<(!os*E`RK9ZEZ&8ReAI#Rv{Zs>5#-rxD|%z|Xtc z!~46v`(98^_x%yE*5T{j0pZP`uE+q*d% z9mkk`#u`kc(%#>W;ZH4W&%Pa?o$t>IDV6=+Slr(IZ}x98of_6dry63mN+! zC~^J}+>rZ3+as(t%ydyj7xd3bW~&pT1h44pM-5L>>1&pkQH8SWAzQ0RyG_%>vuPoC(JshpYGhK@t7Z z{>RfK$L*7All*3b7#z68QQvPHC~gswXW}zQnn>vc$p@jW`ewIzG1LDIsv@P3iRrfE(2_@wT%|5uDptPu`8_SaeDtaB2`Yx`p)Z(}CgrGEdOV=G0 zRWm(1Q=f0a3I=Tt-9tS-;9lvyS2oe~YC6H%3k-g~+5Q;S$MC^bk6Z0j5ic+26h_O? zf@OWB)YD5MD4X<lC}X!zZ&?8)h;e-|m(K7Zn56wto=MAmF*xICWD8cjzbsdgVuSI?GIa(7y*G3i%8T zoM-Ps?F7ah2$Rmk{y#azZfUn>Lz6c7-Hly0n zAVTxX77B%h_v$Xy@2+M4`2jrWK$#LH%7&Y=xaR55{ED1)NH^G%F7@y0>uYR8b-ENM5naQ#w($9Bi3Dq-*Kv3B z_=^2`qspQRWtf!;90GlMtmkL3lp&i(OcpWvs4&WAPX!?CGP}apr8Jl69sg#D|31-- zfL}x%&V*#M`~S$$P9CsA z`l44VOcMpYkP`RSCTr+8B@e(JwXEaS#~(H-zHnZWz5J_1Oxq~EZqlcihQi*RbhejI znjDL9K6w-lyk!ZH)bIDPW;=|R&M5&Dk%UfPmcEhwG{r`Yk-8~?=p;2zV+t-0lC?<{aR{lMt$(Xr3 z3nnv;W_hM{yM76vD*Bp+Ay{HrI?s%a+nX3qTec|Nr#z6g(ni`3QxTWDo%Xij+`=lc z?eX)!x!*}%n;!m!;v~$koO0O)#+DA*Bxm*ix9_=BG9XFo%kljPeHop^w|BhB9emM) zNIV~ppiUSiKru{ol|xb#v%;4LU=^LTXdAsd|96NjqW*4ZFRh@=a4?vmN&o>!t0)KGLj9Rr&7J+Hz#kgBlNQ=uTSx%8?=ZZr zpUU~9z>K>&*tH^h_LecIf1?cc!r%G-^U~KmH=GyEUp&Q7vSZex5;)An31Rl3$7{Fv zN4&S_l!Ae$ci8%9Brnc`lf2ElO=7y5 zR?DF_9GI_Wg_26`nX0~ls53IdI9fo0aiuLIsU*^E zC>R%6UfG1h59$Q=spWl>x7)gc*4|SyBJ2921lF5lAHf|%pDRMyxHnAtFCRq6SV(;p z|K+JTH%D6e&_Be&eM#V?5RVX^PCn8Nw+g4d0%c`R8Cd3(!U?l3mNeF*Msm7-Q||;FJ|7?m#kK!vf%SMM!M7&xMOBg2tUe{S%DVewr_7W9+MCDK8A zFT@wct-iwdfWF*W%OP_FUHmJML}(v-fPCFKn<7_I7J2jRjA|@Ouq0dxISq{OxGZI=neNQ4D`zOP ziyu#?htCx!llF32`t+yf9EtC!Z+U_Jm1jby0A#S}vABwfi81i;+5U?4n#9}Ih0a8} z*%eT14RigydBz5@f~V$oO4h!>vVjW_M@-lcLr9dF0?dpN#l&(5sc?DgE&(`rBj$8y zRTVE65KTAg%198gq=sy;z~m^XCFeB;`7IJ&qS`W%v88 zmh_^Fuh(?3Ks?!_NztjV18|>Ts+)$Fo)0N^Vt~5d=~iaj5~6?(5e<-rB@{PV?MC)% zRxi4}RWERlV}XCjagr^i!u>NiOKLwrsQwqo7eJqOzXkr@nRr?tKbu2$Q2*b-ztEQw zzuWhhK>l|B(Omqv7!Lj#@~636Yc{Qw?X|(JK0LCLVo2{HgrbDL1lYTjQ{?--(r#}? z?}wF2fb22grwtirZQEm_6q6^4<6vg+{-Q9jB7ugrmDyl4q;#sIxT!Z1cm=a3p`t~B zKH7JLqenXo>1ZnXB$6?w$**Seb|GdS1$Gdc#Qme<*cG5||6~eGhuE0VP&se|V56eV z-P)Dar*&QO66lva*poR?ne{*>Zq4DO4t3A)T zP*aEyXRA=6KSYf%fg8K`K~We4epzt~(A(X8N_LV4iiV*im6{e7|KC_>IVqqj;x!Ja zUv1&a5wgNU{>z|zSWtJdXC;6P#Rz1jmxs^=2V01rbeWRj1-Lyb>0u)&S3<|{>apta#k^A0oJ#pskd-H^%UJJ#Y4|%Od%L}%dqoZ7vU9!B(fwt_V^MJ+}P>SM~Mm|xg^?VwzDPAx+pqJ9< z0J@KJ95{gKJJqdnBzn21mJh08E~`3cQcx&SEe3feg56%?0(~Ef(a+5H^FFq2A8R=A zZL4#P^a#H|lou+=(vqD(UPUVPsy_-0tn z#eUf`zw$Hwb>ZZ!P|eL#WH9GQpYPxEeOLDPy;k#GK4&DZdC7il3-~YPW~L7RsjG4QeaZ@2?1%1QWk|IPZEna}zOs>s9x+Yk-d7_`Nmw2VF~Q(ZXy z5=aixp#n!5rvH@fLod=(_?1TDcc+p^F;$2^$}%154N6?XPCKU!iHRt>Ag!&TOJzu! zBVtVyndT7z&}?v<6Q^Vm=v<2aTUP*ot&{vf6JTe#1Bk7xncTs#G9`f)IGygR@-*{F*BfY zm-tmX$Qz>^LRg;sTIRC*TNFWVrblNcv{#vhuSk6D&lD<{p3T&2HQ5O*Qc5U&9K31} zcjSuhH`e#pPiWa-AX_|tM(_3K1Cs5`o-`rZT8Z)OqpoWGG93lj1YKGKhTHq*5S1%B z{w}`n=dbZ|j|GYN=8mGG71jJ@TY^Zv1E!;6r7l$7di@votN&JBpk5GAVG% z)i#Hzo!%he`{O>K>f)#TF0xsNx<7Y5vqlf9*p=}{rUjZ9_Anab&~cx|2eYyc+t`yJcJ z)lM7x{`q0&e)`eeRC2y3%=O7JwovZ3UUzN=e@~&_h@W0??E+1#mV*%02yibB{0;b`xvTQpv;4xy7bWYlX%& z=Wic(*)Cklrn#d6<4+sA>Wc4q$V|rDU9!Hw;yz{lu2!LsKuy_7zJ;#q;>XQDDuW6w z)xRH36C!QSKaID_ko z!WoVsc;4aB5Yha_T*RxmDIqyqz=vKtxDj#;l4Q1J;~k45e*rOo2&!m_BsGuBAy(U+ z;oDvMriFZE;KSsVCC3(5TKQb%p^+791fe&z>!~`FRM(1oTRVu3iLq>G6%`k)mg2>j zsPb=DY&lD57Fw`j^5W|ggCkVlrMsfxnZJFd4&hIp&C<{fL(&8wQUhsXSq{woL2%L5 zK^Nn0jBXGe7$+WaNi86f5d6pE4)%=xbgcgz3W_NySCyZ&C`uc(xh!{{4K1vm!~&U9 z4z6*bsTl+aY8LuyOlS^^?pIYy)LkBKj9O2JmRXlp*7yT_+R-p6^T&h4V;J` z?)uWo-ma`~NvMCD5!ky9gi6x>eO5ytKJs)BJ`CSJ`O2z!)bFXX>Ric#!S^ZjYYiwo zrix2Sv)_BC9-U{uW41hZU<-A$z3IDb{_BA=G_)W?z`sR)`tdGnC)!&&P?X zK%7FnW-Sj@o;|fK)VFGxoQQ(WyE36udx0lP|w%%=$}7+Ns{vU^XPcV<#@Sg z_CfvgZAYDdQNd3x%h3Aksm5b%k;fv2t*MDEkNf-1EL#4ubk0+mIK|Vsnz&S`+~Vgr zsm#8%3N2@8RnSYBgBFao6aMs&)slpf>B}gIw&3jQ}dK{joOg`U1~2NzLNso;nZCeUz)iy|E5=-ry(c7wY9VjQA5T*q=}_ zcvptHtg3@C&$73$z7KA;esBHkPywTx9#v(_kIfn)S5B8 zE=<5x%hTm{3Ba=i;yG*{f3WdW*iH%r)C$-j`=@|9Rs~zip2CGus#L`o~NTjEG&|tNa z|GY7I7WxKv8oo-NSW(Kqr&t}yjsZBqYs>p`q3Rs}QVLEbsgs!3hK)zv*{V==RbAa& zkPA05U&gbZ+A|2whZ03TSS;uy8G^(4ii$QV>W=iZlB>8!#>z=uI&c-^_5nFN#hVHK zN_8BKm0D~suUrCJGiCF`$osn+^G9FK+{jCQf4?AAJ@4);ipVC{ce*uS@_L~+#N0;^ zzFT`?LQJblozCK6-*EFJiUPu;o=QEunOofW<@bfA5GCG7r%*^ zhJy$%QY)B)fL2;4;APT;1NQ=us>;B(o4&%;B-}zu2^Cilcj{$@IaYIYSB`LJEy*yw zM9wS8Jpa`T73p;<)KRplRx0F<%Bj>k6@CX`Ycl4QSj?>zpT#lkHNA|*voR*I6$#&F z_QEvEFxb5?4OxeAVT_3RZG)l5y*4?Qb)d!iGNE!(NPZ?{oQ3ix0+fr zUF+jo(Xgf0X6!DfS{=5iVU9fjHxCz4Wq+plR|bER9P2)2?m>{zA?>u#txerRzgRkK z<;m!Jp`FpsxV$W=H&W*d-%|TZUWJvBB6uRk8v|HRAA`?PyldY|^NjaGoigG&Vr_xc z=@rT(DONzM7XE-zX+iiVYPHS&K^NGS78+!o`n_0{u6_b zsnGzjxNpS1B4RXIs=kgdkTU)83`1!sKAMYEAv2*0h*SLju|xUG2H zqX_*q!%DkqlvAo*%SgdqnS~l31e~6~bG-m5&VGt(0R+JX4n^(aiw?WVbZ{=GO6n?Q z!h!L`sOG-bu{fO`9cQP2~f8LoK5|oXh5|n#E3-`*TBN-r8C$%)OeL-yMt}R?RsydAe#w(E} zo$nA{7HCVvzAa{jQ^`WGjT>hhX;vpMHM)PpL~nOj-4^8^x%DG#2hF|GW%W4d7A%J@ zW&o(hsVo=r+AwD~=FSG#vA)lwqvtQa6LmUfalFm+b*|9YU0vz+cW;Psm3=>0-iYcw zPt>McYHC|95`!!AqF0(k%arciPxs4T&1|>b7&;``&_fa;U&bZNEK*j zg*SIEV1yj074f07de6T&ZR>K9K-j@}IXa)pDc>XWm+Y%K&eUkq2F@QJ4rnN|jIGv; zfu6ugXdvZ$Wr<-=_${d_$z!uE+6HvLsU?LGr<&NL*TBtI6@*us$EE&;cB!#50u;pR zRQJySD7WW=#IFB*k`nBZ5gYd-?*-HnzLm#aH6E{LB?R(06`?3}xColsCFYYGG-iMnDOIHO3JudsoaY*jw9q5dAA@Gz{7Trj~B=%3*a%}yYESl{#w=(5uJw7(+jts}=+ReN&= z7pBN?yIyr87MY z$>1U}4fU)S)4UklLPxO92n;(FV+gM@n?m7r36vHKjbKM9vEoWPiNSo(sLPF^iphnr z##tvX@d(ut{EAY$uIUPu{$;eH_>{o=db zabJz3cWcFjK!PCVhNyKHSJ^b$8mltq!lD)a$ijU>@r~&OuT_xc)QFp1+MmN`dxtJsuDB~9sp zj|f5&rYZYB^Ai|6F?o*hzk&!Q7EKkA0ct2#*D79i3gJFbNsBWom}(LYIPU`Z{}iyb zjbev*ZCvzJjy?#KkV&`^B&&JK;0<6TsqZ7m~5%!b;aYZG=Oc9w=I@IPmn4)x3s7fM-W`9-&= z>haqRW|y(l?A>+Z)tLi)m}5w6<*SzO$8tK#rDx(K;F?fl2-nNtOz8BKwFwJcM;u8q z6$sLmrLE*_BwnKQGGWmu+y!{Aq4kT>XO zx>bLET~v*|=wW}W^LpQCY%};u@uEL4l615r!2okNg3T(1bWarkM;o0nl$6Zc9p&YbfU&jEk`>I$JBc4k&kGOz-NI*k}AJO8x%iD-~N3$!ha z3`a}5ArEY1P8hfcNcP#fwREjRcH-UEA^riWS5q_aQW`9B*vw8Yp6P(k)K*F*-z|&& zI~4oy!k&EE-+ywS0Lmz{J89^78HU;3Hc5EXMP!h`b<4%z%<3|T#D-iZQetL@80h0= zOdRw;5Re5fUrHHLc=|25+>gQj$?tKJ`cJsDm$dgr@_ zn{Q7Zn8+8lJCf?z3T0S{4i8QV9-X;md*w~jJyxrW@G|1F+fZ!41>)82t&z1X8*7^o zZk?Y;p3V0bbAkG{@ac=U&33w2T{C~su*R=Nt%4{PQyZyqtB&-lC#%Buc-ya&fVcU9 zzTGk(6AO7{fRPk=Y&#D9jYLyrOsm-PZQ?qmg)4E5dAsW8>%FPnX{B-pyUq2WuRYn6LWY7d`q43p#jb}LZreeh zct*WrL_zZDWi$aL)m%yf);pEICviod8k&dp<>|OYy!qXLaXkX)QI|<1!yjx&8dtHW z#BE2tOXB56K|i6(Ivb1Mj~`u(ykGmxc(QcnHo3WX22*&8wLnyshqsBQ3d*)7d@4_S z04ovnL z|G7jqvL3b9d(=V_04qAc;!~*N&Zg_EJ66SLxwA6%tMRGA{$3pGWZE)Tj?-q2&*8vb z$pxHIqXdTY@fl22Pj`6(Lj*=r=?8peKquTndIrCDoFHMANc^J%0W{&n)T+4gA560~Hwo}!Sphb@)kxEi;{Ait)ZQ8J`=s6!tv0KJDSrza|3ph(2lqiR zu&Mve;LPnj-JKzC@TxL`H%lsYm>Ap)5w?!lBD=7Gcg!_kt8*>H-&HiPij8*5%G}~q zJDS#(GQ`2>&rNa2bOTz^7&IC_%lpYRw;t2(;r$U>zsA# z9?q-JD$$)ruaiM+V`S*|uimF-Dhv*~jkX&8O-jq7@t`j+ZaiGr0$#5O)<b=U*%(k6{An!PT=cAa{Z7X#iO|1<2FjQRq$+(eU@6nWt%Pp?jnSIu1l8{Qdqzl2?qDTHL!`Qn#4h^`pW6jy~ z(K%Jrt4|U=9ZuTFJ+E5S`bdrRwnIa$b}f$;*K5-*zOCx$(53b=Rpux|D!k!>q_No# z&y9OfXliikOr?2epmmW56bz%lnPR_D^O(~&1-UCqAySC6bk7vKTjW6sFkR3&YWfsM zT}in+7PD6rv>g;5n`~)?wH(`!946RCWHDy$fFqynd)~zFv3?~$#t;80ui_}5ZJtQx za$tq8Mr#ZpDF?$o0&aSQ#JN_x?`Qm%g1*+-z_I-0FIlTwwMqQ;a?O_1$z0^ubMRr67RHP=YUO$(FGql6|TSU;PEx zc#H-s#wOd-Mv`eU(*$?EaB1L%rwhNxzi;{gA2Z?x$du&H4M#qA{#G* zaTDUTVm)g>ql*AOtkHTBJCOu^UOjZt{mLf+;U7Og^%Od1(bzD}?KR(tH04;FA=h+9 z?1sJ0F-`2%r|oq8jcqqv|7CK%t>|Dd`M=@(@k(YP*nIT^(cLAgd*<#T>DeL>dkyIR zpofdi84Ax*i2EW@V6u+}fz_PQ+b*5D?_act1~}jhiIxASs;`WSt7+B^5*Q#@fZzm& z5D4z>5G=U61$TFM4{pJN4uiXE@C0{vw;6PX!~30kzV+VybFbaiyQ`n7uI?_`=2SJP zqSV+>Qh$SOysHMCOsnH{el|?E83eaMIz1`$g`6f+Kp>a-DyqoyuHzGqu zxL2G+rdFklvF$vjQD{edxQ@B%NwLf#D*30cL#Yuco+oYkIAEy>wJtI=PhQ8<%$=Xn zIo`K7sx)4o>7+wb7~k*~>sO9)%&Y0=PM^NJb3m)W%EFf1{isAI=o8To5mwGhHFu{j z`(=$)Dy3_%1z$l?15A&ime)o2`!43AfxcBGUJUav*JW^BU>Vp#uTrB3r z44!j%Q37$LhMxFtR#wPvh6<9!%-S}{5Ef2$v>Fe2gnMTB=)A6*;;Y;m-y3I zBjEBUK3b&Mxsf9f*wIw-Gn#R+AdS3#;&)LUZd0l<3h5t$_?ng<_yDWn_anr|%2bf{ z#1t^@*~GD!M|L=>j1s|)Qr<#OU}-#GO|bN;6jP}kJnd^S6aagZ;`-au*oMBVoNHDS ze9q_rvgIJ$g*h^|tV#4?-db0UwcNMp&X^W)>Q4wr2?H{9x=VVf{dTjSiDZcBvwyLE zG9Rq~5Jw)l>{UekoAtvJBa-fxDkGn6;;AmP1|pJ7QnMwDiw;x$L zI1HtT72XBN=^Udo>!F@-eu&^u3OR_Fog<>u!i~Ym77S{8wI-kxJ;6F5o~F22Cx;7{ z8+yu`%-aD&Rs$*bEDr_yl$N2WiFawY)s|>m6PePMju*&CC-p;>q}|L{sokX!?9NXcGEeEx`ldn~KF7Uc3+Ld3x z?3nzajW8!lGzZgKvC|Ew^Q=kzCmHcI0fl;Na;UI*y`*V3Wd8<3mZi|lx*+^*mS~Ax z_?nU+_~Q@vZ@eMLMsDDRnvi})XkaMAYTOUX0wq{H?3v(#r&^n?#@O_%>%)h6@Z2qT zTS$Q|n=e|>oA*SOMHA8nnG!A7l+D-o{W!QVkdsH-HEx`pgH4jdpch8Z7^?;QK^(= zTqTd4UNHpovKEpH@tBvF3)futx_8e!cin72D_1;x1obaoeHo^lE-oJ17#M@l^V%@BvEwLn`=q+@3SfRd9+(=qcoO#B|LgqGyTx4~a3lGr=6- zAm5&1ppPzJh$?=HR+Oh!R5aPtAaWvg352pUm)A$w9ATDgdfEa_AEdhCR!Z)~y5w%{lmxM0o_D$-5tmR?*+f)pEr~w6c0dUubZ-{ysl9pZMd!!U6i@4 zKYK#x4?e^zp3!&$J4+)+tb*RL?JsXv4}4TcaaI%2yq#jJ472=N5@IIAjCLz`I;wBu z_c2u}kW|u=QTZ|vqkR@iIUY!`L8VA_<7zq`^{s_6DSiaUmQ7by?(ccZn^n z3s>{DdAD)Kaba*Xx#zilma{+BrJ9#o|H9wC3LzuE^d2|>h)itFl4NsL#bf-YieT-* z=q7#eyf1p%#kz;X@;qPU_o@!)&C))Cm;}YpnX#HDFV>cP3zF1+P&nRn*!S99S|ZTq zy>9P*8Sv0000MN;0UtD1s1u1}roL=!VdW7`*t(9F@SCmct#@1Gj;~X_A1jBhGIhlB z%{8lwMT`DvD~VXn@cH?PTI~jtEK!WI%*8JE>u}^#e+h<-tsy-&ibkY+7zI4GvqVyo z+zD7nlI1Y2B;7OKCX*L&F<}a6pWI;7>o%;0ZW%hBUxXZQ6Gnam}us z)C(r>VdldkBfHBVX6yEbT+SW#W!E(?Be!-oEk0tRCTF1ll2+N&(LDdZJvU=MNgfzY zO<8o>fn^(r=%<878h3F*3B?l18^-KPnMMk;k34XpIrs!175+JEQUJfz2hta2A!Rzr#uEQ zv2J1fC-&=+42r1Jj$+@JrfS#q1%chFXm9&m#7_0uL^7AnAh6>(p^gn0ftfsl^Ugd>R24G8H+A&({db@P#oGXHp9-)mH{d>iE%QR=cJEc{)n8p|GZ!o zD;s>=utxjzEqRcT+r6VA>1)kmRnzw?MeP@7OX-xD&n=6f_gb~7-ds@$cs?ylvRH&B zuz_H-Q7q=N@Cpn6`XIlLaEAcn+AxpBS;lqw`^Je-)ngRqijLR(x+vhap(a58+(Rb4 zvZp3TZ8*O#OSvsup#~+Aj>=35xBp!+y~JY}-j5R&!Wg#LxZhW*(=DGYlP)FHMMh0n zP2>wh$v0_uru^x=J3}97l7|m@i!_3XK1>?^y_^_3rfZZ9ToP3Ff@Gn-7+YJ3qfKk~ zOPp*lf3k3j`>7}!V^|_SM{@GS%{(<-yOBjX%lO#_$isztpXGEiSeQ!~v7W=!GJF>{ zl+g<-d&gV0_+T-H)EoCr^PO{t7SENI`bt@6^dh63*zvUtSH8UPHnzd(*m$6T4cxo2 zfr}+38#FiecwYfr5hUV88DocrR-6Kocl%epQ|z>W?O2LVJ(kC6 zFYQwt9`=laTZ%81j!c>Z#8Ewj*!kRbcGW5vK~w+|#mtC&^ zgw10s0YK6e9p5PtC5LZF%6s$K*UDTp#?*s@`}6E)f+~}K(}oIphER0>RT{2XzK9>< zpycL79$CGMD72KJx7sUKv+o$~W#R-VMpPFG%=-g*BPHlL%d4xkC+fbh<+qd+1aYlB z9}a(w6`U?Id{In*iOJ_rZ4>0GfXI_+>KZR5h1K>%WnQi*%*kb!s`loDT@|~@buM{h z3ns|H4UmN~-3s99%(aDN^O!iQN&T&{uv3b>q`TuhAJWigoj~7-YKb4iZdIQ+Sxmk! z3eNpZ31Fez!p;{E%V%nAN{iIx2&=U#B^yWI`WxZIgw!zfjWHU0P67oqrD_BdK*+J9 zO>Pywhl;`Y8=Djg#72*M$0cJ+S%H%rB|K7Tqm^>Y8J@)|;RCG_q>3ra6hVR*%gQu3 z1R@b0M~1Q86qH-0$?2t)Ydtg7@xyDhDygo)90ZB^YNY)~ODkDR?~YcE-x9DA1LM;TU^I-umUcsUL2<7U?uN8DD&7Bzg{Rx)lLr9%pto{&5AO@xB zV@)jnkv;u;`LB-fj*0z(ZfuXPlCQ5Wl8;BW_+}=+(`!%aN&rd(D2 zt+&aE>6T6FdWD~hM|x~ddTsSn7vrz7hPD*Z(vaaOGRzWtQ;TroBS<0v~8*>lQ6c4h`ooH9YGMg0m8cw;h_|3Hm znY!O>IetPQUy2!aOZ#TZM83vV2fYc6TI9SV`xO6!D&R{HoF8uLBnGSFPy-80roi7e zsqG0sh1LHiZ;(vj+K%?2r{2m~^5)NLyu z>C3Z#VcWO>3ri8u<8E(2fWeKyZA;N!$2jklU>cuKp`I8}myCvg-2k#=cfkw~)A~+n zR8LS($dJ5D20>)x!yC9(B9amcODk=op`gKzWzvW%M}coKNUud^5uYTgc#}jRKz|6yBhqbs5T3f=1j-1l=E)Qx`th-Rq4#qkxsxb(L@8-t{fmz_E-huNFR7rr*9 zTweDZRybo47l2@rE^@%fDVyfm6|O2w*c};^KJqiS^)J+dH(~@=5>}=;MuB*0t~N%x zDCW46;0j=4*xSzXb*~{BZIUE1w>$diCr`6$muYESaDw4xaD4QT1|xe8&@_iQxM%RG z+S>Jds6bFBk^IFc*%t?Ln$Nl)oz4W=8yX9?4F9AQ{@pM#Z_T&uwp^Wr0l0X8R3E*M zXqvhy&VF~k{9?A3Gu$k(L^DTEXg$*j4=oUElgv*bH)rG2!s`1$+))9iwJ@2Ba<={y z;C9#EcE0RI;JZK(%#Zj5m7KRVyulWc*9eUiPfRS`ith31(u*l277V$7rJUpJUZLrY zQ(+a7Pv_9v#ob=Kk!YIEOt&x%npAD{U*i(+Zy``_?ss6JTFugOE z4C^;^gof96omqAeSr`{vmSYOf4Hi)76Mk1tXw94nCmk|Fzk9OI+$}1pFe$T{umMI9 zpKtBP6TogYQ9T3@6C<){-fRgg(153gIC^o#nN_@ED=t>Opu1m7yKu!$;0W4`XNi}bWAzo(%q%g~;^Cpjv zZ~=^3-I|%dF^6BhsAX7}swM&(8bf%5%)Tilhg7tx<%Pz{sdJ&XrzpG z$i$f9V{8;iclqV|yUCbHV57hSif-@Js;#hz*Q|Qy0TN4S?!vWZ3U$PQU7OZCYMvq# zUpk2`whX<0l|)udSM~~Pu!cvz>NQ@k9QlKqPR5Y=$97^FS>SxM@wu0N_iV*qf0JUY zu|rwnxY7zUq)wD~9_>PEABRSW?}i&Vn@if8SJb;Q=Hou*Q{ll)W7tM_JpGxcOA#<$ zCF!L<7#SQKZC>}bI6+waFz7?!r^`5A+_soE&G9#nd%|XX5|nvBhVnHcGTwKq@XH#> zAFQY^Gii8Ta1VvhOcE4X(*aTwV|xqc=FhtMPfuZIsw$sAQ*j-2OZOxCn|Gn%GHh+o z!#w+xP1opK8uJfJSP5$u4Pa*6$)oJbN(OUmy0bN_{}VY3p0L24CASI%d&*5oFo3lq70K(m!*qebN zJ_+=>4?yNQ^40?Q0)UR2X@e5}R0+$EUyLrM((ox(+L{iVx_I3C<=m|eZ^qphB0(A< z4PavJ*J_oKvrI&RwQe<3`k4JGWwFnTv@s&9063FxZX`r?0sor^77vE<6bCD=Q- z%2#e~bd2OZ!_^1$P~Do#@{Z>lDca!Lvu-yf9rSR?{6q(?QC>YKP78(BD%~n=YI+Dx zXBu4w#tIWC(_HZvdMq}aFy~cdmZ~mVTAG&-nBhD&8va-)Pa-oHqZR<#%Y9@MO4_H^w@1-@5H;n<)NLCzGGc2q8Jg|L1xC9$ofF{+uc-2d3$Oaqv4bj zD`cP7^c#5$wMpO4`dYZqyy~C=R?&#*B@^m`dHOT(Qs}e_fUS!6Q{>YLrYC*dIKvjj zf0Dukt~eaNOi7=(PFs!wQ~XUWO_gsL`)+IqcufO|Xk~Pf@H804OhVQYfW+GHxJ^x> zi}3Av=!4tuM`TgXxm~bEDw`ELi>+nEPv51}7SicIUvj%ptW*8mINn8k zNFQ=_$SG^*7bv+YRw`)d*T6}WNeQOm$2;x#g@)B+s5j!11j3XvarQpvv?~Xeg$CVT z-!noxqU>z`Ba&5Ng7(d5mo(iD|5@ieTI*BR! z{YxgRy`Kaf#o^giahrI(luK{RtZtD@qbEPk-s zK0)i7Y}9I4J@rR@9g1aVeSRbH-kQ(98K?y#DqOI}Z$1eu1@luk(srU?!pX(1=~I39 zjX;bpqkv>J^MKJfwSQyf9moixpye?t&6#Klmc}l6~<=_B%j}pwl zw|#?zIaUwKQu1}z>WF>b^{gWyB@MgZr1G1FJgY;B>kW>Y`{kBG29qe`8Cj(L{lXH4 z$H29o8lvtXQu_(>_+yUde$S29tZoq?A)R zhoIgCR1j-2AHCemCbV56JBJsMu)7FudlPkaN8NFRG`x)O<{3VW!d}K z=Xqr$o1Z1N{{v&WuS*v&Sqj~GtA&G+$=-(ugR+)GF9eHt5=l4Y|60N zcm<^o*?9|VlWpkC2Knj3?b?vaTn`g|B^_Y?N}y&t%q2$9y=P2+XP}An^TiYNnvuW` zTKkxZ)H|Qb!)4J_-ExL59Voy{^I4aeLxK%&$ z9gu;hmQr0iRu`TieU08*2!(C0P<-?_T16ib))f-!zJLB_|!|WiRB0oKn^OJ&V_Q` z@LIO4IUvBt-*=#Q?jGN(0Pa&#vB_^BF4^KeuU~p@eUW0>w8au`f;gAJz-F@-H{+E&%WbiGMtbnW_mff=mHge=5LW zH>EXmC5Qc_tv+Iskl%hz03JjL_V;AsKGN;#uFg(iBPXTnjlD}av!uIGCozC$`^NsZ z$Yu}+uxMt!h0YjUFWAV$%u#Ud~68*z0*$gFj8^0prErvTC0Le#$2#I@1R4__%KH`c= zPs_uOWTFp$JTLz?LJ>-0APYgQ9szY4m2iBz^N=G;lXzDuAKd$~w59Z2-!E>5E36{x zO*+fFX382*kB=RtT-`93#D0Ls#RV<={0oF_+UBp0!nGxwLMJ)!`FyCied$7}X>=&C zyoxcRDDJHfR^87g$hX@<)1J|q3F-*<>Jka(mG+>XB`~$<7^C(&8Q))`JPviX4-2su z8KJ}QS#SGL*&GY0*E5`_^F2&)J4JytBcrsf5C{Z6Z*%?UaeGA$96T42yn=B| z4q^GSR*kP6Ow1iA-BGgREkJ7{J2#$}$E=<@hY1&BHlJD5kC+>BtzOFPQq2#Ukl2)u zOrZOUF{rjgZF2>EDYAdNAs{@ zhq#qA0x9eif1kV^F7>hFiJx)`FCrXp90LNQCR&diqg zvopUarTq*#`d5=)G1_y3&4Rb^SJNfUY2e`DcPGCz!Bs8mYgoj|npLjN$O-xDNBPoySSD|slg`<-ZiXM7;S^^}jkiaWZzEU2J?l;2PF49qU8;EX9%VyB) zs?IkcoxOAf6-I?}S$5CtI=~$KV0#OX7pixhy27A!J%f*~w0O~C*~eJ)+#>m>#CL1| zkz5``l2@(4F15)SH6@g7pYhfYcPc7)GNCv!gILATK{RZ>qwjBMa-(92RCuHM>NKcZ z&dRI3D%W`~<=QBIYgXTKwY-|=Rb>AWZ^u_DRQ!ij0-p8b3^|z|N{7`p5fKZm=}?Ji zsw36A?Y8xv{?BO)^c(X?7d2!MH-%ku}bjL+sYm$(w$B4rQxV1UKE4y;ax53N|D9BJDF-C#SFd9~JVy z|C1BmvxNO|O1?Ba##`H`ozsqDZz<$mn3%F1^Q4WlwSkL`uC>ir*^6&;n+`ix$*+Sj zQ=w9~gr|Qqr(R++HWIT6SqUg&uG$-ioE7ja@^U*E+U3{qmAs#bp(Zl<$h{E~P+XY~ z`x+wd1vV2$MYirM7`w`=KULOD``4ICDIK{6hU>qD-_KT}o{d|(9NR!2JOZX)?$TxL zE;MGRIg7`-@4H>@c_-c2&Q{$j3>AJnW`3!7VOY-CU~0i{baYn_ zaD1!!egB2|1v~t!ldrrQf_b@}TnXV>8l*v{x>~1LUofm@S#^JsOrujz&CX3BHI>)d zE0u$orq6|=kY4Jq2HaPt;sZaju!S2wP*<~8&GH^v@{%RH*r zOHj*=FLWZ|U`M`R%iF*9U+#t74*X>UM&ACgW##`^2TJ#7>};!A>uh1e|8kOEv~b%y zh_T1ZEb&u3<&Fm@|IU}XZU6t{8#ppS{f|IfANJdnGgPV4k|l>mNT~y-M#cBI@e}l< z%Fj8fRBn=f_`-iSHlDS*pIx<}OtK~4oZmW`dlVlaA6j{!{0k=nIN1xKaNE;>l;Vb; z682hDA78YRfjKmu|{MvmEAD)r-###T??p+sI9A|!f^3vFIiJFU-j01 zS?37wodR_H8W=X?EGxJEH90EcE9G_;a5DFMYOI1BrNYZ+i!&&ZsJEri%t5KNFq&eo zynbeE{9I=0ZgsHQ^IyN@i)fH?e?Lgx8T1_5XJyWR2;Z#6(;lM6PXSxu}Sj zotLHR@X*uh@vnCNB8Zcb_uovl6cHLVI(5Q!I0ku!LwRKaJD@{B{yj)-a=ibCzkjsI zi^Ay)4iEid*M76fFzS=KnU_L_u7AyhJ2FuZ#$! zyFwv&2ohN&XARj&CuC%HIUO^CQSL3X7JU2d^Hw&=cmujHrZ+}<@+w0ex&TC0w%Y@E zACHx%h`^1P`Rk(m4Pol_gAd#XaIfc9UjY5CjMMSbp2vB4qr$uQ?FT__&!ybk*>heF z2?E9)x}^EOo!F_assAWre-=br=bHnB_A+6*S*FaN^(@c5k6RnpVq8d78&D^s3rHQZ z+0&ZctIx*#1#CYd!V%AOw~po=P(uxjNIQ1pJf#n2$Z} z34s#`?ibnAi(FJf{QUfRZT-{bkzAD+xF6*+$biydvht&Qpxl0_gm=q4x5sQz&JP`@}`L)F&+}g{M*vwYjQ6T zEaP@zC>Y%7gg}h8MgMU-ss-MMLee@3K_t(Y&HK8Y^q#N#0pB}`El*(R#Xe+($kY~g zwKJ@vt*tCTrYR>EGkw$`?fZPv@(-jpp&~u|Z?kc1g=!?3vnLo*DcQ-p+s|I#J}w9J zaYy9~0uFAN7`@G~9aXyTOtJoaJvlaU8k>2u)URY?W1~8^C+lk@GNA5nH3g~9kufM? zsWh6bo`Ieue%98U#kZ2||YX2$0>($J`;q zEvUGBFH;*O!{WlQCA+ls?J$fl>wEz&URLTYL?(2~=bYtVbhm%;c*W$pA)+mrqf778 z%8UP4LVQqBJ`{Qm)tBDf_3DY)>Hnfcds~OFW1jFLL=KTnm>UEoyukeQrc#gok&XvI zM&wFU(T&&*{@tCQXb%|rG(E$-u9#2Evvd(-x*zZQ+Qa{?9Zb@jFUST-k6UJh%e!x0 OA6ZF7iE1&U;Qs+}(;k5U literal 0 HcmV?d00001