Compare commits

..
Author SHA1 Message Date
Crowdin Bot eae75e8798 New Crowdin translations by GitHub Action 2026-04-16 01:00:16 +00:00
306 changed files with 54296 additions and 67496 deletions

No files matched your search

+4 -4
View File
@@ -11,7 +11,7 @@ concurrency:
group: backend-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
DEFAULT_UV_VERSION: "0.11.x"
DEFAULT_UV_VERSION: "0.10.x"
NLTK_DATA: "/usr/share/nltk_data"
permissions: {}
jobs:
@@ -100,7 +100,7 @@ jobs:
with:
python-version: "${{ matrix.python-version }}"
- name: Install uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
with:
version: ${{ env.DEFAULT_UV_VERSION }}
enable-cache: true
@@ -177,7 +177,7 @@ jobs:
with:
python-version: "${{ env.DEFAULT_PYTHON }}"
- name: Install uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
with:
version: ${{ env.DEFAULT_UV_VERSION }}
enable-cache: true
@@ -201,7 +201,7 @@ jobs:
check \
src/
- name: Cache Mypy
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: .mypy_cache
# Keyed by OS, Python version, and dependency hashes
+6 -6
View File
@@ -108,7 +108,7 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Login to GitHub Container Registry
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
@@ -132,7 +132,7 @@ jobs:
type=semver,pattern={{major}}.{{minor}}
- name: Build and push by digest
id: build
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
with:
context: .
file: ./Dockerfile
@@ -154,7 +154,7 @@ jobs:
echo "${digest}" > "/tmp/digests/digest-${{ matrix.arch }}.txt"
- name: Upload digest
if: steps.check-push.outputs.should-push == 'true'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: digests-${{ matrix.arch }}
path: /tmp/digests/digest-${{ matrix.arch }}.txt
@@ -184,20 +184,20 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Login to GitHub Container Registry
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
if: needs.build-arch.outputs.push-external == 'true'
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to Quay.io
if: needs.build-arch.outputs.push-external == 'true'
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
+3 -3
View File
@@ -11,7 +11,7 @@ concurrency:
permissions:
contents: read
env:
DEFAULT_UV_VERSION: "0.11.x"
DEFAULT_UV_VERSION: "0.10.x"
DEFAULT_PYTHON_VERSION: "3.12"
jobs:
changes:
@@ -78,7 +78,7 @@ jobs:
with:
python-version: ${{ env.DEFAULT_PYTHON_VERSION }}
- name: Install uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
with:
version: ${{ env.DEFAULT_UV_VERSION }}
enable-cache: true
@@ -94,7 +94,7 @@ jobs:
--frozen \
zensical build --clean
- name: Upload GitHub Pages artifact
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4.0.0
with:
path: site
name: github-pages-${{ github.run_id }}-${{ github.run_attempt }}
+16 -16
View File
@@ -81,18 +81,18 @@ jobs:
with:
persist-credentials: false
- name: Install pnpm
uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
with:
version: 10
- name: Use Node.js 24
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
cache: 'pnpm'
cache-dependency-path: 'src-ui/pnpm-lock.yaml'
- name: Cache frontend dependencies
id: cache-frontend-deps
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: |
~/.pnpm-store
@@ -113,17 +113,17 @@ jobs:
with:
persist-credentials: false
- name: Install pnpm
uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
with:
version: 10
- name: Use Node.js 24
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
cache: 'pnpm'
cache-dependency-path: 'src-ui/pnpm-lock.yaml'
- name: Cache frontend dependencies
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: |
~/.pnpm-store
@@ -152,17 +152,17 @@ jobs:
with:
persist-credentials: false
- name: Install pnpm
uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
with:
version: 10
- name: Use Node.js 24
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
cache: 'pnpm'
cache-dependency-path: 'src-ui/pnpm-lock.yaml'
- name: Cache frontend dependencies
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: |
~/.pnpm-store
@@ -191,7 +191,7 @@ jobs:
runs-on: ubuntu-24.04
permissions:
contents: read
container: mcr.microsoft.com/playwright:v1.59.1-noble
container: mcr.microsoft.com/playwright:v1.59.0-noble
env:
PLAYWRIGHT_BROWSERS_PATH: /ms-playwright
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
@@ -207,17 +207,17 @@ jobs:
with:
persist-credentials: false
- name: Install pnpm
uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
with:
version: 10
- name: Use Node.js 24
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
cache: 'pnpm'
cache-dependency-path: 'src-ui/pnpm-lock.yaml'
- name: Cache frontend dependencies
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: |
~/.pnpm-store
@@ -244,17 +244,17 @@ jobs:
fetch-depth: 2
persist-credentials: false
- name: Install pnpm
uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
with:
version: 10
- name: Use Node.js 24
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
cache: 'pnpm'
cache-dependency-path: 'src-ui/pnpm-lock.yaml'
- name: Cache frontend dependencies
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: |
~/.pnpm-store
+1 -1
View File
@@ -25,4 +25,4 @@ jobs:
with:
python-version: "3.14"
- name: Run prek
uses: j178/prek-action@cbc2f23eb5539cf20d82d1aabd0d0ecbcc56f4e3 # v2.0.2
uses: j178/prek-action@53276d8b0d10f8b6672aa85b4588c6921d0370cc # v2.0.1
+12 -12
View File
@@ -8,7 +8,7 @@ concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false
env:
DEFAULT_UV_VERSION: "0.11.x"
DEFAULT_UV_VERSION: "0.10.x"
DEFAULT_PYTHON_VERSION: "3.12"
permissions: {}
jobs:
@@ -20,10 +20,10 @@ jobs:
statuses: read
steps:
- name: Wait for Docker build
uses: lewagon/wait-on-check-action@9312864dfbc9fd208e9c0417843430751c042800 # v1.7.0
uses: lewagon/wait-on-check-action@74049309dfeff245fe8009a0137eacf28136cb3c # v1.5.0
with:
ref: ${{ github.sha }}
check-name: 'Merge and Push Manifest'
check-name: 'Build Docker Image'
repo-token: ${{ secrets.GITHUB_TOKEN }}
wait-interval: 60
build-release:
@@ -39,11 +39,11 @@ jobs:
persist-credentials: false
# ---- Frontend Build ----
- name: Install pnpm
uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
with:
version: 10
- name: Use Node.js 24
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
package-manager-cache: false
@@ -58,7 +58,7 @@ jobs:
with:
python-version: ${{ env.DEFAULT_PYTHON_VERSION }}
- name: Install uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
with:
version: ${{ env.DEFAULT_UV_VERSION }}
enable-cache: false
@@ -135,7 +135,7 @@ jobs:
sudo chown -R 1000:1000 paperless-ngx/
tar -cJf paperless-ngx.tar.xz paperless-ngx/
- name: Upload release artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: release
path: dist/paperless-ngx.tar.xz
@@ -170,18 +170,18 @@ jobs:
fi
- name: Create release and changelog
id: create-release
uses: release-drafter/release-drafter@5de93583980a40bd78603b6dfdcda5b4df377b32 # v7.2.0
uses: release-drafter/release-drafter@139054aeaa9adc52ab36ddf67437541f039b88e2 # v7.1.1
with:
name: Paperless-ngx ${{ steps.get-version.outputs.version }}
tag: ${{ steps.get-version.outputs.version }}
version: ${{ steps.get-version.outputs.version }}
prerelease: ${{ steps.get-version.outputs.prerelease }}
publish: true
commitish: ${{ steps.get-version.outputs.prerelease == 'true' && 'dev' || 'main' }}
commitish: main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload release archive
uses: shogo82148/actions-upload-release-asset@ee2ae851dc5d938b90075b3ef12c540abfd1ee72 # v1.10.1
uses: shogo82148/actions-upload-release-asset@96bc1f0cb850b65efd58a6b5eaa0a69f88d38077 # v1.10.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
upload_url: ${{ steps.create-release.outputs.upload_url }}
@@ -211,7 +211,7 @@ jobs:
with:
python-version: ${{ env.DEFAULT_PYTHON_VERSION }}
- name: Install uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
with:
version: ${{ env.DEFAULT_UV_VERSION }}
enable-cache: false
@@ -250,7 +250,7 @@ jobs:
git commit -am "Changelog ${VERSION} - GHA"
git push origin "${branch_name}"
- name: Create pull request
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
VERSION: ${{ needs.publish-release.outputs.version }}
with:
+2 -2
View File
@@ -26,7 +26,7 @@ jobs:
with:
persist-credentials: false
- name: Run zizmor
uses: zizmorcore/zizmor-action@b1d7e1fb5de872772f31590499237e7cce841e8e # v0.5.3
uses: zizmorcore/zizmor-action@71321a20a9ded102f6e9ce5718a2fcec2c4f70d8 # v0.5.2
semgrep:
name: Semgrep CE
runs-on: ubuntu-24.04
@@ -44,7 +44,7 @@ jobs:
- name: Run Semgrep
run: semgrep scan --config auto --sarif-output results.sarif
- name: Upload results to GitHub code scanning
uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
if: always()
with:
sarif_file: results.sarif
+2 -2
View File
@@ -39,7 +39,7 @@ jobs:
persist-credentials: false
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -47,4 +47,4 @@ jobs:
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
+1 -1
View File
@@ -22,7 +22,7 @@ jobs:
token: ${{ secrets.PNGX_BOT_PAT }}
persist-credentials: false
- name: crowdin action
uses: crowdin/github-action@8868a33591d21088edfc398968173a3b98d51706 # v2.16.2
uses: crowdin/github-action@7ca9c452bfe9197d3bb7fa83a4d7e2b0c9ae835d # v2.16.0
with:
upload_translations: false
download_translations: true
+5 -6
View File
@@ -3,18 +3,17 @@ on:
pull_request_target:
types: [opened]
jobs:
Anti-slop:
anti-slop:
runs-on: ubuntu-latest
permissions:
contents: read
issues: read
pull-requests: write
steps:
- uses: peakoss/anti-slop@57858eead489d08b255fab2af45a506c2ca6eab2 # v0.3.0
- uses: peakoss/anti-slop@85daca1880e9e1af197fc06ea03349daf08f4202 # v0.2.1
with:
max-failures: 4
failure-add-pr-labels: 'ai'
require-pr-template: true
pr-bot:
name: Automated PR Bot
runs-on: ubuntu-latest
@@ -38,7 +37,7 @@ jobs:
fail_if_xl: 'false'
excluded_files: /\.lock$/ /\.txt$/ ^src-ui/pnpm-lock\.yaml$ ^src-ui/messages\.xlf$ ^src/locale/en_US/LC_MESSAGES/django\.po$
- name: Label by PR title
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const pr = context.payload.pull_request;
@@ -64,7 +63,7 @@ jobs:
}
- name: Label bot-generated PRs
if: ${{ contains(github.actor, 'dependabot') || contains(github.actor, 'crowdin-bot') }}
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const pr = context.payload.pull_request;
@@ -89,7 +88,7 @@ jobs:
}
- name: Welcome comment
if: ${{ !contains(github.actor, 'bot') }}
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const pr = context.payload.pull_request;
+1 -1
View File
@@ -19,6 +19,6 @@ jobs:
if: github.event_name == 'pull_request_target' && (github.event.action == 'opened' || github.event.action == 'reopened') && github.event.pull_request.user.login != 'dependabot'
steps:
- name: Label PR with release-drafter
uses: release-drafter/release-drafter@5de93583980a40bd78603b6dfdcda5b4df377b32 # v7.2.0
uses: release-drafter/release-drafter@139054aeaa9adc52ab36ddf67437541f039b88e2 # v7.1.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+3 -3
View File
@@ -62,7 +62,7 @@ jobs:
permissions:
discussions: write
steps:
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
function sleep(ms) {
@@ -121,7 +121,7 @@ jobs:
permissions:
discussions: write
steps:
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
function sleep(ms) {
@@ -215,7 +215,7 @@ jobs:
permissions:
discussions: write
steps:
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
function sleep(ms) {
+4 -7
View File
@@ -3,8 +3,6 @@ on:
push:
branches:
- dev
env:
DEFAULT_UV_VERSION: "0.11.x"
jobs:
generate-translate-strings:
name: Generate Translation Strings
@@ -29,9 +27,8 @@ jobs:
sudo apt-get update -qq
sudo apt-get install -qq --no-install-recommends gettext
- name: Install uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
with:
version: ${{ env.DEFAULT_UV_VERSION }}
enable-cache: true
- name: Install backend python dependencies
run: |
@@ -43,18 +40,18 @@ jobs:
PAPERLESS_SECRET_KEY: "ci-translate-not-a-real-secret"
run: cd src/ && uv run manage.py makemessages -l en_US -i "samples*"
- name: Install pnpm
uses: pnpm/action-setup@903f9c1a6ebcba6cf41d87230be49611ac97822e # v6.0.3
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
with:
version: 10
- name: Use Node.js 24
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.x
cache: 'pnpm'
cache-dependency-path: 'src-ui/pnpm-lock.yaml'
- name: Cache frontend dependencies
id: cache-frontend-deps
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
path: |
~/.pnpm-store
+606 -301
View File
File diff suppressed because it is too large. Load diff
+4 -4
View File
@@ -38,7 +38,7 @@ repos:
- json
# See https://github.com/prettier/prettier/issues/15742 for the fork reason
- repo: https://github.com/rbubley/mirrors-prettier
rev: 'v3.8.3'
rev: 'v3.8.1'
hooks:
- id: prettier
types_or:
@@ -46,16 +46,16 @@ repos:
- ts
- markdown
additional_dependencies:
- prettier@3.8.3
- prettier@3.8.1
- 'prettier-plugin-organize-imports@4.3.0'
# Python hooks
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.12
rev: v0.15.8
hooks:
- id: ruff-check
- id: ruff-format
- repo: https://github.com/tox-dev/pyproject-fmt
rev: "v2.21.1"
rev: "v2.21.0"
hooks:
- id: pyproject-fmt
# Dockerfile hooks
+5250 -3762
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -30,7 +30,7 @@ RUN set -eux \
# Purpose: Installs s6-overlay and rootfs
# Comments:
# - Don't leave anything extra in here either
FROM ghcr.io/astral-sh/uv:0.11.6-python3.12-trixie-slim AS s6-overlay-base
FROM ghcr.io/astral-sh/uv:0.10.9-python3.12-trixie-slim AS s6-overlay-base
WORKDIR /usr/src/s6
+3 -3
View File
@@ -7,9 +7,9 @@
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/paperless-ngx/paperless-ngx/blob/main/docs/assets/logo_full_white.png" width="50%">
<source media="(prefers-color-scheme: light)" srcset="https://github.com/paperless-ngx/paperless-ngx/blob/main/docs/assets/logo_full_black.png" width="50%">
<img src="https://github.com/paperless-ngx/paperless-ngx/blob/main/docs/assets/logo_full_black.png" width="50%">
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/paperless-ngx/paperless-ngx/blob/main/resources/logo/web/png/White%20logo%20-%20no%20background.png" width="50%">
<source media="(prefers-color-scheme: light)" srcset="https://github.com/paperless-ngx/paperless-ngx/raw/main/resources/logo/web/png/Black%20logo%20-%20no%20background.png" width="50%">
<img src="https://github.com/paperless-ngx/paperless-ngx/raw/main/resources/logo/web/png/Black%20logo%20-%20no%20background.png" width="50%">
</picture>
</p>
-1
View File
@@ -57,7 +57,6 @@ We may close reports that are:
The following are not generally considered vulnerabilities unless accompanied by a concrete, reproducible impact in Paperless-ngx:
- large uploads or resource usage that do not bypass documented limits or privileges
- IDOR / access control claims regarding the ability to attach an un-viewable object to a document. This is expected behavior.
- claims based solely on the presence of a library, framework feature or code pattern without a working exploit
- reports that rely on admin-level access, workflow-editing privileges, shell access, or other high-trust roles unless they demonstrate an unintended privilege boundary bypass
- optional webhook, mail, AI, OCR, or integration behavior described without a product-level vulnerability
+6 -7
View File
@@ -357,13 +357,12 @@ and the script does the rest of the work:
document_importer source
```
| Option | Required | Default | Description |
| ------------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------ |
| source | Yes | N/A | The directory containing an export |
| `--no-progress-bar` | No | False | If provided, the progress bar will be hidden |
| `--data-only` | No | False | If provided, only import data, do not import document files or thumbnails |
| `--passphrase` | No | N/A | If your export was encrypted with a passphrase, must be provided |
| `--batch-size` | No | 500 | Number of database records inserted per batch. Lower values reduce peak memory usage on very large installs. |
| Option | Required | Default | Description |
| ------------------- | -------- | ------- | ------------------------------------------------------------------------- |
| source | Yes | N/A | The directory containing an export |
| `--no-progress-bar` | No | False | If provided, the progress bar will be hidden |
| `--data-only` | No | False | If provided, only import data, do not import document files or thumbnails |
| `--passphrase` | No | N/A | If your export was encrypted with a passphrase, must be provided |
When you use the provided docker compose script, put the export inside
the `export` folder in your paperless source directory. Specify
Binary file not shown.

Before

Width:  |  Height:  |  Size: 748 B

After

Width:  |  Height:  |  Size: 768 B

+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 1000 1000" style="enable-background:new 0 0 1000 1000;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<path class="st0" d="M299,891.7c-4.2-19.8-12.5-59.6-13.6-59.6c-176.7-105.7-155.8-288.7-97.3-393.4
c12.5,131.8,245.8,222.8,109.8,383.9c-1.1,2,6.2,27.2,12.5,50.2c27.2-46,68-101.4,65.8-106.7C208.9,358.2,731.9,326.9,840.6,73.7
c49.1,244.8-25.1,623.5-445.5,719.7c-2,1.1-76.3,131.8-79.5,132.9c0-2-31.4-1.1-27.2-11.5C290.7,908.4,294.8,900.1,299,891.7
L299,891.7z M293.8,793.4c53.3-61.8-9.4-167.4-47.1-201.9C310.5,701.3,306.3,765.1,293.8,793.4L293.8,793.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 869 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 57 KiB

+67 -18
View File
@@ -1,19 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 2670 860">
<path id="leaf" style="fill:#005616;" d="M2227.4,821.2c-6.1-17.8-18.1-53.6-19.2-53.4-174.7-77.8-159.8-201.2-117.5-304.2,26.3,120.1,235.3,130.3,128,294.1-.7,2,8.8,24.3,17.1,44.9,19.9-45.4,51.3-101.1,48.8-105.7-199.9-357.4,278.8-444.7,350.7-690.2,72.6,220.1,46.5,577.5-330.4,713.3-1.8,1.2-55.6,130-58.5,131.4-.2-1.9-29.1,2.5-26.4-7.6,1.4-6.2,4.2-14.2,7.2-22.4h0v-.2h.2,0ZM2211.7,731.2c42.3-62.9-11.1-105.7-49.8-133.2,71,94,58.1,105.7,49.8,133.2h0Z"/>
<g id="text" style="fill: #000;">
<path class="st1" d="M654.6,393.2l-.7,137.7h-85.5V188.7h85.4c.4,11.3-.3,21.7,1.3,33.8,23.1-34.1,62.3-50,101.1-38.3,16.5,5,29.6,16.4,39.7,30,34.4,46.5,35.1,134,3.6,182.2-10.1,14.4-22.5,26.9-39,33.4-39.5,15.7-81,1.1-105.9-36.6h0ZM721,362.2c21-26.1,21-82.7-.4-108.4-13.2-15.9-36.4-16.1-49.9-.4-22.2,25.8-21.7,85.3.5,110.1,13.6,15.2,36.6,15,49.7-1.3h.1Z"/>
<path class="st1" d="M164,301l-72.8.7v126.1H3.4V98.1l159.7.5c31.3,0,58.9,13.6,79.4,36.1,30.8,37.6,30.9,91.7.6,129.6-20.1,22.8-47.6,36.5-79,36.8h-.1ZM176.8,199.8c0-20.8-15.1-35-34.7-35l-51,.2v69.5l53.6-.2c18.5,0,32-15.8,32.2-34.5h-.1Z"/>
<polygon class="st1" points="1338.2 427.8 1338 366 1412.4 365.8 1412.5 139.3 1338.1 139.1 1338.1 77.4 1498.1 77.4 1498.1 365.7 1572.3 365.9 1572.5 427.7 1338.2 427.8"/>
<path class="st1" d="M1741.8,364.3c9.1-8.6,14-18.1,17.7-30.3l68.4,13.3c-10.5,45.2-46.5,79.2-92.3,86.7-59.2,9.6-118.7-14.2-138.6-73.7-10.9-32.7-10.7-68.6.6-100.9,17.7-50.6,64.3-80.5,117.1-79.1,76.5,2,113.4,65.4,111.1,136.1h-155.4c-.7,12.5,3,25,9.7,35.9,13.2,21.3,40.9,26.9,61.5,12h.2ZM1749.4,273.1c-2.4-10.8-6.9-18-13.9-24.6-12.8-8.3-30.1-9.5-43.4-1.1-9.3,5.8-14.6,15.1-18,25.7h75.3Z"/>
<path class="st1" d="M1010.3,364.3c9.1-8.5,13.9-18.1,17.7-30.3l68.4,13.3c-10.4,45.2-46.5,79.2-92.3,86.7-59.3,9.6-118.8-14.2-138.7-73.9-10.8-32.3-10.6-67.4.2-99.3,17.3-51.2,64.2-81.8,117.6-80.4,76.6,2,113.5,65.3,111.1,136.1h-155.6c-.2,12.7,3.2,25.1,9.9,35.9,13.2,21.3,40.9,27,61.5,12h.2ZM1018,273.2c-2.4-9.4-6.3-18.5-14.2-24.4-12.3-9.1-30.4-9.4-43.3-1.3-9.3,5.9-14.4,15.1-17.9,25.6h75.4Z"/>
<path class="st1" d="M424.3,376.9c-7.1,13.6-12.5,25.7-23.2,35.5-14.3,13.3-32.6,19.3-52.3,19.4-40.4.2-75.6-23.1-73.6-65.7.9-20.1,9.7-37.2,26.5-49.2,30.5-21.8,55.8-22.4,87.8-40.6,8.1-4.6,18.2-15.3,12.4-22.2s-5-3-8-3.7h-96.3v-61.8h109.6c14.7.6,28.1,2.2,41.7,7.2,23.7,8.8,39.6,29.5,39.8,55.2l.7,90.6c0,13.5,11,23,23.7,23.9l10.1.7v61.3h-29.9c-13.1,0-25.9-3-37.3-8.6-16.9-8.2-26.9-22.2-31.6-42.2h0v.2h-.1ZM364.9,370.1c6.8,5.9,16.2,6.5,24.8,2.7,18.1-7.9,16.5-38.3,16.1-55-3.6,4.3-7.4,9-12.5,11.2l-21.1,9.3c-5.8,2.5-10.6,8-11.8,13s-1,13.8,4.7,18.7h-.2Z"/>
<path class="st1" d="M1943,430.1c-33.5-8.9-68.5-33.6-78.9-68.9l66.6-27.2c11.8,22.1,31.6,42.1,57.2,39.8,4.3-.4,9.3-3.1,11.2-6,7.8-12.5-4.3-24.3-16.2-30.7l-47.3-25.2c-32.2-17.1-57.7-50.7-41.6-87.4,11.9-27,48.1-35,75.3-36h99.2v61.8h-88.6c-2.5.4-6.2,2.3-7,4.2s.7,7,2.7,8.2c31.6,18.6,88.3,38.3,103.8,72,10.4,22.6,6.7,50-9.2,69.1-29.5,35.7-86.1,36.9-127,26.1v.2h-.2,0Z"/>
<path class="st1" d="M1318.2,264.3l-68.5.2c-19.4,0-30.1,10.8-31.6,30.2v133.1h-85.7v-239h85.6l1,58.9,11.9-25.1c14.3-30.5,56.9-36.5,87.4-33.6v75.4h-.1Z"/>
<path class="st1" d="M2232.8,374.2c-26,1.2-44.6-18.4-56.5-40.1l-66.5,27.3c10.8,35.9,46.2,60.4,80.3,69.2h0c10.6,2.6,22,4.5,33.7,5.2,3.2-7.9,6.8-15.6,10.8-23.4,18.5-35.9,44.3-68.4,73.8-98.8-23.6-21.1-62.6-36.7-87-50.6-2.2-1.2-3.6-6.7-2.7-8.7.9-2,4.5-3.5,7.4-3.9h88.2v-61.8h-97.4c-27,.7-63.8,8.2-76.5,34.8-8.3,17.5-6.8,38.5,3.5,54.9,9.3,14.9,22.2,25.8,37.7,33.9l45.8,24.3c11.5,6.1,24.7,17,17.9,30.5-2.1,4.1-7.4,6.5-12.6,7.2h.1Z"/>
<path class="st1" d="M1547.6,801.6h81.2c11.6-.2,23.2-3.8,31.9-11.2,7.3-6.2,11.7-15.4,13.9-24.8l16.8-72.7c-7.2,9-12.8,16.9-20.7,24.2-18.3,16.8-42.3,23.8-66.9,19.5-32.5-5.7-46.7-34.7-47-65.6-.5-44,18.9-93.6,57.6-117.1,18-10.9,39.5-13.9,60-9.6,12.4,2.6,22.1,9.9,29.1,20,5.8,8.4,7.8,17.2,10.8,27.8l10.7-45.4,15.6.3-50.6,219.5c-2.9,12.6-8.9,24.6-18.4,32.9-12,10.4-28.1,15.1-44,15.2l-82.9.2,2.7-13.1h.2ZM1691.8,673.5c12.9-26.3,20.1-60.3,11-88.6-5.1-15.8-17.9-26.5-34.2-28.8-20.7-2.9-40.3,2.9-55.9,16.8-13.6,12.1-23.5,26.7-30.3,43.7-9.8,24.4-14.8,56.5-4.6,81.1,5,12.1,14.7,21.3,27.6,24.7,39,10.3,70.1-16,86.4-49h0Z"/>
<path class="st1" d="M1441.6,556.8c-43.6-8.7-84.4,29.7-93.8,70l-24.8,106.6h-15.7l43.1-186.4,15.6-.2-8.6,39.5c22.3-28.9,53.9-49.3,90.7-42.5,16.8,3.1,29.1,15.6,32.1,32.4,2.1,11.6,1.6,23.4-1.1,35.3l-28.1,122.2h-15.6c0,0,27.5-119.9,27.5-119.9,4.7-20.6,5.9-51.3-21.2-56.7v-.3Z"/>
<path class="st1" d="M1958.9,733.3h-16.2l-38.2-90.1-79.8,90.3-19.3-.2,77.6-87.2c5.1-5.7,11-10.1,17.2-14.5-4.6-4.7-8.5-9.6-11.3-15.3l-33.9-69.3,16.2-.2,35.3,74.1,69-73.9c6.6-.3,12.7-.3,19.6.2l-63.1,66.6c-6.4,6.8-13.4,12.5-20.9,18,3.4,3.4,7.5,7.5,9.6,12.4l38.3,89.2h-.1Z"/>
<path class="st1" d="M1224.4,635.4H3.4c1.1-5.6,1.9-9.5,3.1-13.9h1220.9l-2.9,13.9h0Z"/>
</g>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 2962.2 860.2" style="enable-background:new 0 0 2962.2 860.2;" xml:space="preserve">
<style type="text/css">
.st0{fill:#17541F;stroke:#000000;stroke-miterlimit:10;}
</style>
<path d="M1055.6,639.7v-20.6c-18,20-43.1,30.1-75.4,30.1c-22.4,0-42.8-5.8-61-17.5c-18.3-11.7-32.5-27.8-42.9-48.3
c-10.3-20.5-15.5-43.3-15.5-68.4c0-25.1,5.2-48,15.5-68.5s24.6-36.6,42.9-48.3s38.6-17.5,61-17.5c32.3,0,57.5,10,75.4,30.1v-20.6
h85.3v249.6L1055.6,639.7L1055.6,639.7z M1059.1,514.9c0-17.4-5.2-31.9-15.5-43.8c-10.3-11.8-23.9-17.7-40.6-17.7
c-16.8,0-30.2,5.9-40.4,17.7c-10.2,11.8-15.3,26.4-15.3,43.8c0,17.4,5.1,31.9,15.3,43.8c10.2,11.8,23.6,17.7,40.4,17.7
c16.8,0,30.3-5.9,40.6-17.7C1054,546.9,1059.1,532.3,1059.1,514.9z"/>
<path d="M1417.8,398.2c18.3,11.7,32.5,27.8,42.9,48.3c10.3,20.5,15.5,43.3,15.5,68.5c0,25.1-5.2,48-15.5,68.4
c-10.3,20.5-24.6,36.6-42.9,48.3s-38.6,17.5-61,17.5c-32.3,0-57.5-10-75.4-30.1v165.6h-85.3V390.2h85.3v20.6
c18-20,43.1-30.1,75.4-30.1C1379.2,380.7,1399.5,386.6,1417.8,398.2z M1389.5,514.9c0-17.4-5.1-31.9-15.3-43.8
c-10.2-11.8-23.6-17.7-40.4-17.7s-30.2,5.9-40.4,17.7c-10.2,11.8-15.3,26.4-15.3,43.8c0,17.4,5.1,31.9,15.3,43.8
c10.2,11.8,23.6,17.7,40.4,17.7s30.2-5.9,40.4-17.7S1389.5,532.3,1389.5,514.9z"/>
<path d="M1713.6,555.3l53,49.4c-28.1,29.6-66.7,44.4-115.8,44.4c-28.1,0-53-5.8-74.5-17.5s-38.2-27.7-49.8-48
c-11.7-20.3-17.7-43.2-18-68.7c0-24.8,5.9-47.5,17.7-68c11.8-20.5,28.1-36.7,48.7-48.5s43.5-17.7,68.7-17.7
c24.8,0,47.6,6.1,68.2,18.2s37,29.5,49.1,52.3c12.1,22.7,18.2,49.1,18.2,79l-0.4,11.7h-181.8c3.6,11.4,10.5,20.7,20.9,28.1
c10.3,7.3,21.3,11,33,11c14.4,0,26.3-2.2,35.7-6.5C1695.8,570.1,1704.9,563.7,1713.6,555.3z M1596.9,486.2h92.9
c-2.1-12.3-7.5-22.1-16.2-29.4s-18.7-11-30.1-11s-21.5,3.7-30.3,11S1599,473.9,1596.9,486.2z"/>
<path d="M1908.8,418.4c7.8-10.8,17.2-19,28.3-24.7s22-8.5,32.8-8.5c11.4,0,20,1.6,26,4.9l-10.8,72.7c-8.4-2.1-15.7-3.1-22-3.1
c-17.1,0-30.4,4.3-39.9,12.8c-9.6,8.5-14.4,24.2-14.4,46.9v120.3h-85.3V390.2h85.3V418.4L1908.8,418.4z"/>
<path d="M2113,258.2v381.5h-85.3V258.2H2113z"/>
<path d="M2360.8,555.3l53,49.4c-28.1,29.6-66.7,44.4-115.8,44.4c-28.1,0-53-5.8-74.5-17.5s-38.2-27.7-49.8-48
c-11.7-20.3-17.7-43.2-18-68.7c0-24.8,5.9-47.5,17.7-68s28.1-36.7,48.7-48.5c20.6-11.8,43.5-17.7,68.7-17.7
c24.8,0,47.6,6.1,68.2,18.2c20.6,12.1,37,29.5,49.1,52.3c12.1,22.7,18.2,49.1,18.2,79l-0.4,11.7h-181.8
c3.6,11.4,10.5,20.7,20.9,28.1c10.3,7.3,21.3,11,33,11c14.4,0,26.3-2.2,35.7-6.5C2343.1,570.1,2352.1,563.7,2360.8,555.3z
M2244.1,486.2h92.9c-2.1-12.3-7.5-22.1-16.2-29.4s-18.7-11-30.1-11s-21.5,3.7-30.3,11C2251.7,464.1,2246.2,473.9,2244.1,486.2z"/>
<path d="M2565.9,446.3c-9.9,0-17.1,1.1-21.5,3.4c-4.5,2.2-6.7,5.9-6.7,11s3.4,8.8,10.3,11.2c6.9,2.4,18,4.9,33.2,7.6
c20,3,37,6.7,50.9,11.2s26,12.1,36.1,22.9c10.2,10.8,15.3,25.9,15.3,45.3c0,29.9-10.9,52.4-32.8,67.6
c-21.8,15.1-50.3,22.7-85.3,22.7c-25.7,0-49.5-3.7-71.4-11c-21.8-7.3-37.4-14.7-46.7-22.2l33.7-60.6c10.2,9,23.4,15.8,39.7,20.4
c16.3,4.6,31.3,7,45.1,7c19.7,0,29.6-5.2,29.6-15.7c0-5.4-3.3-9.4-9.9-11.9c-6.6-2.5-17.2-5.2-31.9-7.9c-18.9-3.3-34.9-7.2-48-11.7
c-13.2-4.5-24.6-12.2-34.3-23.1c-9.7-10.9-14.6-26-14.6-45.1c0-27.2,9.7-48.5,29-63.7c19.3-15.3,46-22.9,80.1-22.9
c23.3,0,44.4,3.6,63.3,10.8c18.9,7.2,34,14.5,45.3,22l-32.8,58.8c-10.8-7.5-23.2-13.7-37.3-18.6
C2590.5,448.7,2577.6,446.3,2565.9,446.3z"/>
<path d="M2817.3,446.3c-9.9,0-17.1,1.1-21.5,3.4c-4.5,2.2-6.7,5.9-6.7,11s3.4,8.8,10.3,11.2c6.9,2.4,18,4.9,33.2,7.6
c20,3,37,6.7,50.9,11.2s26,12.1,36.1,22.9c10.2,10.8,15.3,25.9,15.3,45.3c0,29.9-10.9,52.4-32.8,67.6
c-21.8,15.1-50.3,22.7-85.3,22.7c-25.7,0-49.5-3.7-71.4-11c-21.8-7.3-37.4-14.7-46.7-22.2l33.7-60.6c10.2,9,23.4,15.8,39.7,20.4
c16.3,4.6,31.3,7,45.1,7c19.8,0,29.6-5.2,29.6-15.7c0-5.4-3.3-9.4-9.9-11.9c-6.6-2.5-17.2-5.2-31.9-7.9c-18.9-3.3-34.9-7.2-48-11.7
c-13.2-4.5-24.6-12.2-34.3-23.1c-9.7-10.9-14.6-26-14.6-45.1c0-27.2,9.7-48.5,29-63.7c19.3-15.3,46-22.9,80.1-22.9
c23.3,0,44.4,3.6,63.3,10.8c18.9,7.2,34,14.5,45.3,22l-32.8,58.8c-10.8-7.5-23.2-13.7-37.3-18.6
C2841.8,448.7,2828.9,446.3,2817.3,446.3z"/>
<g>
<path d="M2508,724h60.2v17.3H2508V724z"/>
<path d="M2629.2,694.4c4.9-2,10.2-3.1,16-3.1c10.9,0,19.5,3.4,25.9,10.2s9.6,16.7,9.6,29.6v57.3h-19.6v-52.6
c0-9.3-1.7-16.2-5.1-20.7c-3.4-4.5-9.1-6.7-17-6.7c-6.5,0-11.8,2.4-16.1,7.1c-4.3,4.8-6.4,11.5-6.4,20.2v52.6h-19.6v-94.6h19.6v9.5
C2620.2,699.4,2624.4,696.4,2629.2,694.4z"/>
<path d="M2790.3,833.2c-8.6,6.8-19.4,10.2-32.3,10.2c-7.9,0-15.2-1.4-21.9-4.1s-12.1-6.8-16.3-12.2s-6.6-11.9-7.1-19.6h19.6
c0.7,6.1,3.5,10.8,8.4,13.9c4.9,3.2,10.7,4.8,17.4,4.8c7,0,13.1-2,18.2-6c5.1-4,7.7-10.3,7.7-18.9v-24.7c-3.6,3.4-8,6.2-13.3,8.2
c-5.2,2.1-10.7,3.1-16.3,3.1c-8.7,0-16.6-2.1-23.7-6.4c-7.1-4.3-12.6-10-16.7-17.3c-4-7.3-6-15.5-6-24.6s2-17.3,6-24.7
s9.6-13.2,16.7-17.4c7.1-4.3,15-6.4,23.7-6.4c5.7,0,11.1,1,16.3,3.1s9.6,4.8,13.3,8.2v-8.8h19.4v107.8
C2803.2,815.9,2798.9,826.4,2790.3,833.2z M2782.2,755.7c2.6-4.7,3.8-10,3.8-15.9s-1.3-11.2-3.8-16c-2.6-4.8-6.1-8.5-10.5-11.1
c-4.5-2.7-9.5-4-15.1-4c-5.8,0-10.9,1.4-15.4,4.3c-4.5,2.8-7.9,6.6-10.3,11.4c-2.4,4.8-3.6,9.9-3.6,15.5c0,5.4,1.2,10.5,3.6,15.3
c2.4,4.8,5.8,8.6,10.3,11.5s9.6,4.3,15.4,4.3c5.6,0,10.6-1.4,15.1-4.1C2776.1,764.1,2779.6,760.4,2782.2,755.7z"/>
<path d="M2843.5,788.4h-21.6l37.9-48l-36.4-46.6h22.6l25.7,33.3l25.8-33.3h21.6l-36.2,45.9l37.9,48.6h-22.6l-27.4-35L2843.5,788.4z
"/>
</g>
<path d="M835.8,319.2c-11.5-18.9-27.4-33.7-47.6-44.7c-20.2-10.9-43-16.4-68.5-16.4h-90.6c-8.6,39.6-21.3,77.2-38,112.4
c-10,21-21.3,41-33.9,59.9v209.2H647v-135h72.7c25.4,0,48.3-5.5,68.5-16.4s36.1-25.8,47.6-44.7c11.5-18.9,17.3-39.5,17.3-61.9
C853.1,358.9,847.4,338.1,835.8,319.2z M747,416.6c-9.4,9-21.8,13.5-37,13.5l-62.8,0.4v-93.4l62.8-0.4c15.3,0,27.6,4.5,37,13.5
s14.1,20,14.1,33.2C761.1,396.6,756.4,407.7,747,416.6z"/>
<path class="st0" d="M164.7,698.7c-3.5-16.5-10.4-49.6-11.3-49.6c-147.1-88-129.7-240.3-81-327.4C82.8,431.4,277,507.1,163.8,641.2
c-0.9,1.7,5.2,22.6,10.4,41.8c22.6-38.3,56.6-84.4,54.8-88.8C89.7,254.7,525,228.6,615.5,17.9c40.9,203.7-20.9,518.9-370.8,599
c-1.7,0.9-63.5,109.7-66.2,110.6c0-1.7-26.1-0.9-22.6-9.6C157.8,712.6,161.2,705.7,164.7,698.7L164.7,698.7z M160.4,616.9
c44.4-51.4-7.8-139.3-39.2-168C174.3,540.2,170.8,593.3,160.4,616.9L160.4,616.9z"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

-19
View File
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 2670 860">
<path id="leaf" style="fill:#005616;" d="M2227.4,821.2c-6.1-17.8-18.1-53.6-19.2-53.4-174.7-77.8-159.8-201.2-117.5-304.2,26.3,120.1,235.3,130.3,128,294.1-.7,2,8.8,24.3,17.1,44.9,19.9-45.4,51.3-101.1,48.8-105.7-199.9-357.4,278.8-444.7,350.7-690.2,72.6,220.1,46.5,577.5-330.4,713.3-1.8,1.2-55.6,130-58.5,131.4-.2-1.9-29.1,2.5-26.4-7.6,1.4-6.2,4.2-14.2,7.2-22.4h0v-.2h.2,0ZM2211.7,731.2c42.3-62.9-11.1-105.7-49.8-133.2,71,94,58.1,105.7,49.8,133.2h0Z"/>
<g id="text" style="fill: #eee;">
<path class="st1" d="M654.6,393.2l-.7,137.7h-85.5V188.7h85.4c.4,11.3-.3,21.7,1.3,33.8,23.1-34.1,62.3-50,101.1-38.3,16.5,5,29.6,16.4,39.7,30,34.4,46.5,35.1,134,3.6,182.2-10.1,14.4-22.5,26.9-39,33.4-39.5,15.7-81,1.1-105.9-36.6h0ZM721,362.2c21-26.1,21-82.7-.4-108.4-13.2-15.9-36.4-16.1-49.9-.4-22.2,25.8-21.7,85.3.5,110.1,13.6,15.2,36.6,15,49.7-1.3h.1Z"/>
<path class="st1" d="M164,301l-72.8.7v126.1H3.4V98.1l159.7.5c31.3,0,58.9,13.6,79.4,36.1,30.8,37.6,30.9,91.7.6,129.6-20.1,22.8-47.6,36.5-79,36.8h-.1ZM176.8,199.8c0-20.8-15.1-35-34.7-35l-51,.2v69.5l53.6-.2c18.5,0,32-15.8,32.2-34.5h-.1Z"/>
<polygon class="st1" points="1338.2 427.8 1338 366 1412.4 365.8 1412.5 139.3 1338.1 139.1 1338.1 77.4 1498.1 77.4 1498.1 365.7 1572.3 365.9 1572.5 427.7 1338.2 427.8"/>
<path class="st1" d="M1741.8,364.3c9.1-8.6,14-18.1,17.7-30.3l68.4,13.3c-10.5,45.2-46.5,79.2-92.3,86.7-59.2,9.6-118.7-14.2-138.6-73.7-10.9-32.7-10.7-68.6.6-100.9,17.7-50.6,64.3-80.5,117.1-79.1,76.5,2,113.4,65.4,111.1,136.1h-155.4c-.7,12.5,3,25,9.7,35.9,13.2,21.3,40.9,26.9,61.5,12h.2ZM1749.4,273.1c-2.4-10.8-6.9-18-13.9-24.6-12.8-8.3-30.1-9.5-43.4-1.1-9.3,5.8-14.6,15.1-18,25.7h75.3Z"/>
<path class="st1" d="M1010.3,364.3c9.1-8.5,13.9-18.1,17.7-30.3l68.4,13.3c-10.4,45.2-46.5,79.2-92.3,86.7-59.3,9.6-118.8-14.2-138.7-73.9-10.8-32.3-10.6-67.4.2-99.3,17.3-51.2,64.2-81.8,117.6-80.4,76.6,2,113.5,65.3,111.1,136.1h-155.6c-.2,12.7,3.2,25.1,9.9,35.9,13.2,21.3,40.9,27,61.5,12h.2ZM1018,273.2c-2.4-9.4-6.3-18.5-14.2-24.4-12.3-9.1-30.4-9.4-43.3-1.3-9.3,5.9-14.4,15.1-17.9,25.6h75.4Z"/>
<path class="st1" d="M424.3,376.9c-7.1,13.6-12.5,25.7-23.2,35.5-14.3,13.3-32.6,19.3-52.3,19.4-40.4.2-75.6-23.1-73.6-65.7.9-20.1,9.7-37.2,26.5-49.2,30.5-21.8,55.8-22.4,87.8-40.6,8.1-4.6,18.2-15.3,12.4-22.2s-5-3-8-3.7h-96.3v-61.8h109.6c14.7.6,28.1,2.2,41.7,7.2,23.7,8.8,39.6,29.5,39.8,55.2l.7,90.6c0,13.5,11,23,23.7,23.9l10.1.7v61.3h-29.9c-13.1,0-25.9-3-37.3-8.6-16.9-8.2-26.9-22.2-31.6-42.2h0v.2h-.1ZM364.9,370.1c6.8,5.9,16.2,6.5,24.8,2.7,18.1-7.9,16.5-38.3,16.1-55-3.6,4.3-7.4,9-12.5,11.2l-21.1,9.3c-5.8,2.5-10.6,8-11.8,13s-1,13.8,4.7,18.7h-.2Z"/>
<path class="st1" d="M1943,430.1c-33.5-8.9-68.5-33.6-78.9-68.9l66.6-27.2c11.8,22.1,31.6,42.1,57.2,39.8,4.3-.4,9.3-3.1,11.2-6,7.8-12.5-4.3-24.3-16.2-30.7l-47.3-25.2c-32.2-17.1-57.7-50.7-41.6-87.4,11.9-27,48.1-35,75.3-36h99.2v61.8h-88.6c-2.5.4-6.2,2.3-7,4.2s.7,7,2.7,8.2c31.6,18.6,88.3,38.3,103.8,72,10.4,22.6,6.7,50-9.2,69.1-29.5,35.7-86.1,36.9-127,26.1v.2h-.2,0Z"/>
<path class="st1" d="M1318.2,264.3l-68.5.2c-19.4,0-30.1,10.8-31.6,30.2v133.1h-85.7v-239h85.6l1,58.9,11.9-25.1c14.3-30.5,56.9-36.5,87.4-33.6v75.4h-.1Z"/>
<path class="st1" d="M2232.8,374.2c-26,1.2-44.6-18.4-56.5-40.1l-66.5,27.3c10.8,35.9,46.2,60.4,80.3,69.2h0c10.6,2.6,22,4.5,33.7,5.2,3.2-7.9,6.8-15.6,10.8-23.4,18.5-35.9,44.3-68.4,73.8-98.8-23.6-21.1-62.6-36.7-87-50.6-2.2-1.2-3.6-6.7-2.7-8.7.9-2,4.5-3.5,7.4-3.9h88.2v-61.8h-97.4c-27,.7-63.8,8.2-76.5,34.8-8.3,17.5-6.8,38.5,3.5,54.9,9.3,14.9,22.2,25.8,37.7,33.9l45.8,24.3c11.5,6.1,24.7,17,17.9,30.5-2.1,4.1-7.4,6.5-12.6,7.2h.1Z"/>
<path class="st1" d="M1547.6,801.6h81.2c11.6-.2,23.2-3.8,31.9-11.2,7.3-6.2,11.7-15.4,13.9-24.8l16.8-72.7c-7.2,9-12.8,16.9-20.7,24.2-18.3,16.8-42.3,23.8-66.9,19.5-32.5-5.7-46.7-34.7-47-65.6-.5-44,18.9-93.6,57.6-117.1,18-10.9,39.5-13.9,60-9.6,12.4,2.6,22.1,9.9,29.1,20,5.8,8.4,7.8,17.2,10.8,27.8l10.7-45.4,15.6.3-50.6,219.5c-2.9,12.6-8.9,24.6-18.4,32.9-12,10.4-28.1,15.1-44,15.2l-82.9.2,2.7-13.1h.2ZM1691.8,673.5c12.9-26.3,20.1-60.3,11-88.6-5.1-15.8-17.9-26.5-34.2-28.8-20.7-2.9-40.3,2.9-55.9,16.8-13.6,12.1-23.5,26.7-30.3,43.7-9.8,24.4-14.8,56.5-4.6,81.1,5,12.1,14.7,21.3,27.6,24.7,39,10.3,70.1-16,86.4-49h0Z"/>
<path class="st1" d="M1441.6,556.8c-43.6-8.7-84.4,29.7-93.8,70l-24.8,106.6h-15.7l43.1-186.4,15.6-.2-8.6,39.5c22.3-28.9,53.9-49.3,90.7-42.5,16.8,3.1,29.1,15.6,32.1,32.4,2.1,11.6,1.6,23.4-1.1,35.3l-28.1,122.2h-15.6c0,0,27.5-119.9,27.5-119.9,4.7-20.6,5.9-51.3-21.2-56.7v-.3Z"/>
<path class="st1" d="M1958.9,733.3h-16.2l-38.2-90.1-79.8,90.3-19.3-.2,77.6-87.2c5.1-5.7,11-10.1,17.2-14.5-4.6-4.7-8.5-9.6-11.3-15.3l-33.9-69.3,16.2-.2,35.3,74.1,69-73.9c6.6-.3,12.7-.3,19.6.2l-63.1,66.6c-6.4,6.8-13.4,12.5-20.9,18,3.4,3.4,7.5,7.5,9.6,12.4l38.3,89.2h-.1Z"/>
<path class="st1" d="M1224.4,635.4H3.4c1.1-5.6,1.9-9.5,3.1-13.9h1220.9l-2.9,13.9h0Z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 61 KiB

+68 -18
View File
@@ -1,19 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 2670 860">
<path id="leaf" style="fill:#005616;" d="M2227.4,821.2c-6.1-17.8-18.1-53.6-19.2-53.4-174.7-77.8-159.8-201.2-117.5-304.2,26.3,120.1,235.3,130.3,128,294.1-.7,2,8.8,24.3,17.1,44.9,19.9-45.4,51.3-101.1,48.8-105.7-199.9-357.4,278.8-444.7,350.7-690.2,72.6,220.1,46.5,577.5-330.4,713.3-1.8,1.2-55.6,130-58.5,131.4-.2-1.9-29.1,2.5-26.4-7.6,1.4-6.2,4.2-14.2,7.2-22.4h0v-.2h.2,0ZM2211.7,731.2c42.3-62.9-11.1-105.7-49.8-133.2,71,94,58.1,105.7,49.8,133.2h0Z"/>
<g id="text" style="fill: #fff;">
<path class="st1" d="M654.6,393.2l-.7,137.7h-85.5V188.7h85.4c.4,11.3-.3,21.7,1.3,33.8,23.1-34.1,62.3-50,101.1-38.3,16.5,5,29.6,16.4,39.7,30,34.4,46.5,35.1,134,3.6,182.2-10.1,14.4-22.5,26.9-39,33.4-39.5,15.7-81,1.1-105.9-36.6h0ZM721,362.2c21-26.1,21-82.7-.4-108.4-13.2-15.9-36.4-16.1-49.9-.4-22.2,25.8-21.7,85.3.5,110.1,13.6,15.2,36.6,15,49.7-1.3h.1Z"/>
<path class="st1" d="M164,301l-72.8.7v126.1H3.4V98.1l159.7.5c31.3,0,58.9,13.6,79.4,36.1,30.8,37.6,30.9,91.7.6,129.6-20.1,22.8-47.6,36.5-79,36.8h-.1ZM176.8,199.8c0-20.8-15.1-35-34.7-35l-51,.2v69.5l53.6-.2c18.5,0,32-15.8,32.2-34.5h-.1Z"/>
<polygon class="st1" points="1338.2 427.8 1338 366 1412.4 365.8 1412.5 139.3 1338.1 139.1 1338.1 77.4 1498.1 77.4 1498.1 365.7 1572.3 365.9 1572.5 427.7 1338.2 427.8"/>
<path class="st1" d="M1741.8,364.3c9.1-8.6,14-18.1,17.7-30.3l68.4,13.3c-10.5,45.2-46.5,79.2-92.3,86.7-59.2,9.6-118.7-14.2-138.6-73.7-10.9-32.7-10.7-68.6.6-100.9,17.7-50.6,64.3-80.5,117.1-79.1,76.5,2,113.4,65.4,111.1,136.1h-155.4c-.7,12.5,3,25,9.7,35.9,13.2,21.3,40.9,26.9,61.5,12h.2ZM1749.4,273.1c-2.4-10.8-6.9-18-13.9-24.6-12.8-8.3-30.1-9.5-43.4-1.1-9.3,5.8-14.6,15.1-18,25.7h75.3Z"/>
<path class="st1" d="M1010.3,364.3c9.1-8.5,13.9-18.1,17.7-30.3l68.4,13.3c-10.4,45.2-46.5,79.2-92.3,86.7-59.3,9.6-118.8-14.2-138.7-73.9-10.8-32.3-10.6-67.4.2-99.3,17.3-51.2,64.2-81.8,117.6-80.4,76.6,2,113.5,65.3,111.1,136.1h-155.6c-.2,12.7,3.2,25.1,9.9,35.9,13.2,21.3,40.9,27,61.5,12h.2ZM1018,273.2c-2.4-9.4-6.3-18.5-14.2-24.4-12.3-9.1-30.4-9.4-43.3-1.3-9.3,5.9-14.4,15.1-17.9,25.6h75.4Z"/>
<path class="st1" d="M424.3,376.9c-7.1,13.6-12.5,25.7-23.2,35.5-14.3,13.3-32.6,19.3-52.3,19.4-40.4.2-75.6-23.1-73.6-65.7.9-20.1,9.7-37.2,26.5-49.2,30.5-21.8,55.8-22.4,87.8-40.6,8.1-4.6,18.2-15.3,12.4-22.2s-5-3-8-3.7h-96.3v-61.8h109.6c14.7.6,28.1,2.2,41.7,7.2,23.7,8.8,39.6,29.5,39.8,55.2l.7,90.6c0,13.5,11,23,23.7,23.9l10.1.7v61.3h-29.9c-13.1,0-25.9-3-37.3-8.6-16.9-8.2-26.9-22.2-31.6-42.2h0v.2h-.1ZM364.9,370.1c6.8,5.9,16.2,6.5,24.8,2.7,18.1-7.9,16.5-38.3,16.1-55-3.6,4.3-7.4,9-12.5,11.2l-21.1,9.3c-5.8,2.5-10.6,8-11.8,13s-1,13.8,4.7,18.7h-.2Z"/>
<path class="st1" d="M1943,430.1c-33.5-8.9-68.5-33.6-78.9-68.9l66.6-27.2c11.8,22.1,31.6,42.1,57.2,39.8,4.3-.4,9.3-3.1,11.2-6,7.8-12.5-4.3-24.3-16.2-30.7l-47.3-25.2c-32.2-17.1-57.7-50.7-41.6-87.4,11.9-27,48.1-35,75.3-36h99.2v61.8h-88.6c-2.5.4-6.2,2.3-7,4.2s.7,7,2.7,8.2c31.6,18.6,88.3,38.3,103.8,72,10.4,22.6,6.7,50-9.2,69.1-29.5,35.7-86.1,36.9-127,26.1v.2h-.2,0Z"/>
<path class="st1" d="M1318.2,264.3l-68.5.2c-19.4,0-30.1,10.8-31.6,30.2v133.1h-85.7v-239h85.6l1,58.9,11.9-25.1c14.3-30.5,56.9-36.5,87.4-33.6v75.4h-.1Z"/>
<path class="st1" d="M2232.8,374.2c-26,1.2-44.6-18.4-56.5-40.1l-66.5,27.3c10.8,35.9,46.2,60.4,80.3,69.2h0c10.6,2.6,22,4.5,33.7,5.2,3.2-7.9,6.8-15.6,10.8-23.4,18.5-35.9,44.3-68.4,73.8-98.8-23.6-21.1-62.6-36.7-87-50.6-2.2-1.2-3.6-6.7-2.7-8.7.9-2,4.5-3.5,7.4-3.9h88.2v-61.8h-97.4c-27,.7-63.8,8.2-76.5,34.8-8.3,17.5-6.8,38.5,3.5,54.9,9.3,14.9,22.2,25.8,37.7,33.9l45.8,24.3c11.5,6.1,24.7,17,17.9,30.5-2.1,4.1-7.4,6.5-12.6,7.2h.1Z"/>
<path class="st1" d="M1547.6,801.6h81.2c11.6-.2,23.2-3.8,31.9-11.2,7.3-6.2,11.7-15.4,13.9-24.8l16.8-72.7c-7.2,9-12.8,16.9-20.7,24.2-18.3,16.8-42.3,23.8-66.9,19.5-32.5-5.7-46.7-34.7-47-65.6-.5-44,18.9-93.6,57.6-117.1,18-10.9,39.5-13.9,60-9.6,12.4,2.6,22.1,9.9,29.1,20,5.8,8.4,7.8,17.2,10.8,27.8l10.7-45.4,15.6.3-50.6,219.5c-2.9,12.6-8.9,24.6-18.4,32.9-12,10.4-28.1,15.1-44,15.2l-82.9.2,2.7-13.1h.2ZM1691.8,673.5c12.9-26.3,20.1-60.3,11-88.6-5.1-15.8-17.9-26.5-34.2-28.8-20.7-2.9-40.3,2.9-55.9,16.8-13.6,12.1-23.5,26.7-30.3,43.7-9.8,24.4-14.8,56.5-4.6,81.1,5,12.1,14.7,21.3,27.6,24.7,39,10.3,70.1-16,86.4-49h0Z"/>
<path class="st1" d="M1441.6,556.8c-43.6-8.7-84.4,29.7-93.8,70l-24.8,106.6h-15.7l43.1-186.4,15.6-.2-8.6,39.5c22.3-28.9,53.9-49.3,90.7-42.5,16.8,3.1,29.1,15.6,32.1,32.4,2.1,11.6,1.6,23.4-1.1,35.3l-28.1,122.2h-15.6c0,0,27.5-119.9,27.5-119.9,4.7-20.6,5.9-51.3-21.2-56.7v-.3Z"/>
<path class="st1" d="M1958.9,733.3h-16.2l-38.2-90.1-79.8,90.3-19.3-.2,77.6-87.2c5.1-5.7,11-10.1,17.2-14.5-4.6-4.7-8.5-9.6-11.3-15.3l-33.9-69.3,16.2-.2,35.3,74.1,69-73.9c6.6-.3,12.7-.3,19.6.2l-63.1,66.6c-6.4,6.8-13.4,12.5-20.9,18,3.4,3.4,7.5,7.5,9.6,12.4l38.3,89.2h-.1Z"/>
<path class="st1" d="M1224.4,635.4H3.4c1.1-5.6,1.9-9.5,3.1-13.9h1220.9l-2.9,13.9h0Z"/>
</g>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 2962.2 860.2" style="enable-background:new 0 0 2962.2 860.2;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;stroke:#000000;stroke-miterlimit:10;}
.st1{fill:#17541F;stroke:#000000;stroke-miterlimit:10;}
</style>
<path class="st0" d="M1055.6,639.7v-20.6c-18,20-43.1,30.1-75.4,30.1c-22.4,0-42.8-5.8-61-17.5c-18.3-11.7-32.5-27.8-42.9-48.3
c-10.3-20.5-15.5-43.3-15.5-68.4c0-25.1,5.2-48,15.5-68.5s24.6-36.6,42.9-48.3s38.6-17.5,61-17.5c32.3,0,57.5,10,75.4,30.1v-20.6
h85.3v249.6L1055.6,639.7L1055.6,639.7z M1059.1,514.9c0-17.4-5.2-31.9-15.5-43.8c-10.3-11.8-23.9-17.7-40.6-17.7
c-16.8,0-30.2,5.9-40.4,17.7c-10.2,11.8-15.3,26.4-15.3,43.8c0,17.4,5.1,31.9,15.3,43.8c10.2,11.8,23.6,17.7,40.4,17.7
c16.8,0,30.3-5.9,40.6-17.7C1054,546.9,1059.1,532.3,1059.1,514.9z"/>
<path class="st0" d="M1417.8,398.2c18.3,11.7,32.5,27.8,42.9,48.3c10.3,20.5,15.5,43.3,15.5,68.5c0,25.1-5.2,48-15.5,68.4
c-10.3,20.5-24.6,36.6-42.9,48.3s-38.6,17.5-61,17.5c-32.3,0-57.5-10-75.4-30.1v165.6h-85.3V390.2h85.3v20.6
c18-20,43.1-30.1,75.4-30.1C1379.2,380.7,1399.5,386.6,1417.8,398.2z M1389.5,514.9c0-17.4-5.1-31.9-15.3-43.8
c-10.2-11.8-23.6-17.7-40.4-17.7s-30.2,5.9-40.4,17.7c-10.2,11.8-15.3,26.4-15.3,43.8c0,17.4,5.1,31.9,15.3,43.8
c10.2,11.8,23.6,17.7,40.4,17.7s30.2-5.9,40.4-17.7S1389.5,532.3,1389.5,514.9z"/>
<path class="st0" d="M1713.6,555.3l53,49.4c-28.1,29.6-66.7,44.4-115.8,44.4c-28.1,0-53-5.8-74.5-17.5s-38.2-27.7-49.8-48
c-11.7-20.3-17.7-43.2-18-68.7c0-24.8,5.9-47.5,17.7-68c11.8-20.5,28.1-36.7,48.7-48.5s43.5-17.7,68.7-17.7
c24.8,0,47.6,6.1,68.2,18.2s37,29.5,49.1,52.3c12.1,22.7,18.2,49.1,18.2,79l-0.4,11.7h-181.8c3.6,11.4,10.5,20.7,20.9,28.1
c10.3,7.3,21.3,11,33,11c14.4,0,26.3-2.2,35.7-6.5C1695.8,570.1,1704.9,563.7,1713.6,555.3z M1596.9,486.2h92.9
c-2.1-12.3-7.5-22.1-16.2-29.4s-18.7-11-30.1-11s-21.5,3.7-30.3,11S1599,473.9,1596.9,486.2z"/>
<path class="st0" d="M1908.8,418.4c7.8-10.8,17.2-19,28.3-24.7s22-8.5,32.8-8.5c11.4,0,20,1.6,26,4.9l-10.8,72.7
c-8.4-2.1-15.7-3.1-22-3.1c-17.1,0-30.4,4.3-39.9,12.8c-9.6,8.5-14.4,24.2-14.4,46.9v120.3h-85.3V390.2h85.3V418.4L1908.8,418.4z"/>
<path class="st0" d="M2113,258.2v381.5h-85.3V258.2H2113z"/>
<path class="st0" d="M2360.8,555.3l53,49.4c-28.1,29.6-66.7,44.4-115.8,44.4c-28.1,0-53-5.8-74.5-17.5s-38.2-27.7-49.8-48
c-11.7-20.3-17.7-43.2-18-68.7c0-24.8,5.9-47.5,17.7-68s28.1-36.7,48.7-48.5c20.6-11.8,43.5-17.7,68.7-17.7
c24.8,0,47.6,6.1,68.2,18.2c20.6,12.1,37,29.5,49.1,52.3c12.1,22.7,18.2,49.1,18.2,79l-0.4,11.7h-181.8
c3.6,11.4,10.5,20.7,20.9,28.1c10.3,7.3,21.3,11,33,11c14.4,0,26.3-2.2,35.7-6.5C2343.1,570.1,2352.1,563.7,2360.8,555.3z
M2244.1,486.2h92.9c-2.1-12.3-7.5-22.1-16.2-29.4s-18.7-11-30.1-11s-21.5,3.7-30.3,11C2251.7,464.1,2246.2,473.9,2244.1,486.2z"/>
<path class="st0" d="M2565.9,446.3c-9.9,0-17.1,1.1-21.5,3.4c-4.5,2.2-6.7,5.9-6.7,11s3.4,8.8,10.3,11.2c6.9,2.4,18,4.9,33.2,7.6
c20,3,37,6.7,50.9,11.2s26,12.1,36.1,22.9c10.2,10.8,15.3,25.9,15.3,45.3c0,29.9-10.9,52.4-32.8,67.6
c-21.8,15.1-50.3,22.7-85.3,22.7c-25.7,0-49.5-3.7-71.4-11c-21.8-7.3-37.4-14.7-46.7-22.2l33.7-60.6c10.2,9,23.4,15.8,39.7,20.4
c16.3,4.6,31.3,7,45.1,7c19.7,0,29.6-5.2,29.6-15.7c0-5.4-3.3-9.4-9.9-11.9c-6.6-2.5-17.2-5.2-31.9-7.9c-18.9-3.3-34.9-7.2-48-11.7
c-13.2-4.5-24.6-12.2-34.3-23.1c-9.7-10.9-14.6-26-14.6-45.1c0-27.2,9.7-48.5,29-63.7c19.3-15.3,46-22.9,80.1-22.9
c23.3,0,44.4,3.6,63.3,10.8c18.9,7.2,34,14.5,45.3,22l-32.8,58.8c-10.8-7.5-23.2-13.7-37.3-18.6
C2590.5,448.7,2577.6,446.3,2565.9,446.3z"/>
<path class="st0" d="M2817.3,446.3c-9.9,0-17.1,1.1-21.5,3.4c-4.5,2.2-6.7,5.9-6.7,11s3.4,8.8,10.3,11.2c6.9,2.4,18,4.9,33.2,7.6
c20,3,37,6.7,50.9,11.2s26,12.1,36.1,22.9c10.2,10.8,15.3,25.9,15.3,45.3c0,29.9-10.9,52.4-32.8,67.6
c-21.8,15.1-50.3,22.7-85.3,22.7c-25.7,0-49.5-3.7-71.4-11c-21.8-7.3-37.4-14.7-46.7-22.2l33.7-60.6c10.2,9,23.4,15.8,39.7,20.4
c16.3,4.6,31.3,7,45.1,7c19.8,0,29.6-5.2,29.6-15.7c0-5.4-3.3-9.4-9.9-11.9c-6.6-2.5-17.2-5.2-31.9-7.9c-18.9-3.3-34.9-7.2-48-11.7
c-13.2-4.5-24.6-12.2-34.3-23.1c-9.7-10.9-14.6-26-14.6-45.1c0-27.2,9.7-48.5,29-63.7c19.3-15.3,46-22.9,80.1-22.9
c23.3,0,44.4,3.6,63.3,10.8c18.9,7.2,34,14.5,45.3,22l-32.8,58.8c-10.8-7.5-23.2-13.7-37.3-18.6
C2841.8,448.7,2828.9,446.3,2817.3,446.3z"/>
<g>
<path class="st0" d="M2508,724h60.2v17.3H2508V724z"/>
<path class="st0" d="M2629.2,694.4c4.9-2,10.2-3.1,16-3.1c10.9,0,19.5,3.4,25.9,10.2s9.6,16.7,9.6,29.6v57.3h-19.6v-52.6
c0-9.3-1.7-16.2-5.1-20.7c-3.4-4.5-9.1-6.7-17-6.7c-6.5,0-11.8,2.4-16.1,7.1c-4.3,4.8-6.4,11.5-6.4,20.2v52.6h-19.6v-94.6h19.6v9.5
C2620.2,699.4,2624.4,696.4,2629.2,694.4z"/>
<path class="st0" d="M2790.3,833.2c-8.6,6.8-19.4,10.2-32.3,10.2c-7.9,0-15.2-1.4-21.9-4.1s-12.1-6.8-16.3-12.2s-6.6-11.9-7.1-19.6
h19.6c0.7,6.1,3.5,10.8,8.4,13.9c4.9,3.2,10.7,4.8,17.4,4.8c7,0,13.1-2,18.2-6c5.1-4,7.7-10.3,7.7-18.9v-24.7
c-3.6,3.4-8,6.2-13.3,8.2c-5.2,2.1-10.7,3.1-16.3,3.1c-8.7,0-16.6-2.1-23.7-6.4c-7.1-4.3-12.6-10-16.7-17.3c-4-7.3-6-15.5-6-24.6
s2-17.3,6-24.7s9.6-13.2,16.7-17.4c7.1-4.3,15-6.4,23.7-6.4c5.7,0,11.1,1,16.3,3.1s9.6,4.8,13.3,8.2v-8.8h19.4v107.8
C2803.2,815.9,2798.9,826.4,2790.3,833.2z M2782.2,755.7c2.6-4.7,3.8-10,3.8-15.9s-1.3-11.2-3.8-16c-2.6-4.8-6.1-8.5-10.5-11.1
c-4.5-2.7-9.5-4-15.1-4c-5.8,0-10.9,1.4-15.4,4.3c-4.5,2.8-7.9,6.6-10.3,11.4c-2.4,4.8-3.6,9.9-3.6,15.5c0,5.4,1.2,10.5,3.6,15.3
c2.4,4.8,5.8,8.6,10.3,11.5s9.6,4.3,15.4,4.3c5.6,0,10.6-1.4,15.1-4.1C2776.1,764.1,2779.6,760.4,2782.2,755.7z"/>
<path class="st0" d="M2843.5,788.4h-21.6l37.9-48l-36.4-46.6h22.6l25.7,33.3l25.8-33.3h21.6l-36.2,45.9l37.9,48.6h-22.6l-27.4-35
L2843.5,788.4z"/>
</g>
<path class="st0" d="M835.8,319.2c-11.5-18.9-27.4-33.7-47.6-44.7c-20.2-10.9-43-16.4-68.5-16.4h-90.6c-8.6,39.6-21.3,77.2-38,112.4
c-10,21-21.3,41-33.9,59.9v209.2H647v-135h72.7c25.4,0,48.3-5.5,68.5-16.4s36.1-25.8,47.6-44.7c11.5-18.9,17.3-39.5,17.3-61.9
C853.1,358.9,847.4,338.1,835.8,319.2z M747,416.6c-9.4,9-21.8,13.5-37,13.5l-62.8,0.4v-93.4l62.8-0.4c15.3,0,27.6,4.5,37,13.5
s14.1,20,14.1,33.2C761.1,396.6,756.4,407.7,747,416.6z"/>
<path class="st1" d="M164.7,698.7c-3.5-16.5-10.4-49.6-11.3-49.6c-147.1-88-129.7-240.3-81-327.4C82.8,431.4,277,507.1,163.8,641.2
c-0.9,1.7,5.2,22.6,10.4,41.8c22.6-38.3,56.6-84.4,54.8-88.8C89.7,254.7,525,228.6,615.5,17.9c40.9,203.7-20.9,518.9-370.8,599
c-1.7,0.9-63.5,109.7-66.2,110.6c0-1.7-26.1-0.9-22.6-9.6C157.8,712.6,161.2,705.7,164.7,698.7L164.7,698.7z M160.4,616.9
c44.4-51.4-7.8-139.3-39.2-168C174.3,540.2,170.8,593.3,160.4,616.9L160.4,616.9z"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

-11
View File
@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 1000 1000">
<defs>
<style>
.st0 {
fill: #005616;
}
</style>
</defs>
<path class="st0" d="M341,949.1c-6.9-20.3-20.7-61.2-21.9-61-199.6-88.9-182.5-229.8-134.3-347.5,30,137.2,268.8,148.9,146.2,336-.9,2.2,10,27.8,19.5,51.3,22.7-51.9,58.6-115.5,55.8-120.8C178,398.7,724.9,299,807.1,18.5c83,251.5,53.1,659.8-377.4,814.9-2,1.4-63.5,148.6-66.9,150.2-.2-2.1-33.2,2.9-30.1-8.7,1.6-7,4.8-16.2,8.2-25.6h0v-.2h.1ZM323.1,846.2c48.3-71.9-12.7-120.8-56.9-152.2,81.2,107.4,66.4,120.8,56.9,152.2h0Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 644 B

-11
View File
@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 1000 1000">
<defs>
<style>
.st0 {
fill: #fff;
}
</style>
</defs>
<path class="st0" d="M341,949.1c-6.9-20.3-20.7-61.2-21.9-61-199.6-88.9-182.5-229.8-134.3-347.5,30,137.2,268.8,148.9,146.2,336-.9,2.2,10,27.8,19.5,51.3,22.7-51.9,58.6-115.5,55.8-120.8C178,398.7,724.9,299,807.1,18.5c83,251.5,53.1,659.8-377.4,814.9-2,1.4-63.5,148.6-66.9,150.2-.2-2.1-33.2,2.9-30.1-8.7,1.6-7,4.8-16.2,8.2-25.6h0v-.2h.1ZM323.1,846.2c48.3-71.9-12.7-120.8-56.9-152.2,81.2,107.4,66.4,120.8,56.9,152.2h0Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 641 B

-24
View File
@@ -1,29 +1,5 @@
# Changelog
## paperless-ngx 2.20.15
### Security
- Resolve [GHSA-96jx-fj7m-qh6x](https://github.com/paperless-ngx/paperless-ngx/security/advisories/GHSA-8c6x-pfjq-9gr7)
### Bug Fixes
- Fix: use only allauth login/logout endpoints [@shamoon](https://github.com/shamoon) ([#12639](https://github.com/paperless-ngx/paperless-ngx/pull/12639))
- Fix: correctly scope mail account enumeration [@shamoon](https://github.com/shamoon) ([#12636](https://github.com/paperless-ngx/paperless-ngx/pull/12636))
- Fix: prevent intermediate change event when CustomFieldQueryAtom operator changes type [@ggouzi](https://github.com/ggouzi) ([#12597](https://github.com/paperless-ngx/paperless-ngx/pull/12597))
- Fix: reject invalid requests to API notes endpoint [@ggouzi](https://github.com/ggouzi) ([#12582](https://github.com/paperless-ngx/paperless-ngx/pull/12582))
### All App Changes
<details>
<summary>4 changes</summary>
- Fix: use only allauth login/logout endpoints [@shamoon](https://github.com/shamoon) ([#12639](https://github.com/paperless-ngx/paperless-ngx/pull/12639))
- Fix: correctly scope mail account enumeration [@shamoon](https://github.com/shamoon) ([#12636](https://github.com/paperless-ngx/paperless-ngx/pull/12636))
- Fix: prevent intermediate change event when CustomFieldQueryAtom operator changes type [@ggouzi](https://github.com/ggouzi) ([#12597](https://github.com/paperless-ngx/paperless-ngx/pull/12597))
- Fix: reject invalid requests to API notes endpoint [@ggouzi](https://github.com/ggouzi) ([#12582](https://github.com/paperless-ngx/paperless-ngx/pull/12582))
</details>
## paperless-ngx 2.20.14
### Bug Fixes
+14 -22
View File
@@ -2014,57 +2014,49 @@ suggestions. This setting is required to be set to true in order to use the AI f
#### [`PAPERLESS_AI_LLM_EMBEDDING_BACKEND=<str>`](#PAPERLESS_AI_LLM_EMBEDDING_BACKEND) {#PAPERLESS_AI_LLM_EMBEDDING_BACKEND}
: The embedding backend to use for RAG. This can be either "openai-like" or "huggingface". The
"openai-like" backend uses an OpenAI-compatible embeddings API.
: The embedding backend to use for RAG. This can be either "openai" or "huggingface".
Defaults to None.
#### [`PAPERLESS_AI_LLM_EMBEDDING_MODEL=<str>`](#PAPERLESS_AI_LLM_EMBEDDING_MODEL) {#PAPERLESS_AI_LLM_EMBEDDING_MODEL}
: The model to use for the embedding backend for RAG. This can be set to any of the embedding
models supported by the current embedding backend. If not supplied, defaults to
"text-embedding-3-small" for the OpenAI-compatible backend and
"sentence-transformers/all-MiniLM-L6-v2" for Huggingface.
: The model to use for the embedding backend for RAG. This can be set to any of the embedding models supported by the current embedding backend. If not supplied, defaults to "text-embedding-3-small" for OpenAI and "sentence-transformers/all-MiniLM-L6-v2" for Huggingface.
Defaults to None.
#### [`PAPERLESS_AI_LLM_BACKEND=<str>`](#PAPERLESS_AI_LLM_BACKEND) {#PAPERLESS_AI_LLM_BACKEND}
: The AI backend to use. This can be either "openai-like" or "ollama". If set to "ollama", the AI
features will be run locally on your machine. If set to "openai-like", the AI features will use
an OpenAI-compatible API endpoint, including OpenAI itself and compatible providers. This
setting is required to be set to use the AI features.
: The AI backend to use. This can be either "openai" or "ollama". If set to "ollama", the AI
features will be run locally on your machine. If set to "openai", the AI features will be run
using the OpenAI API. This setting is required to be set to use the AI features.
Defaults to None.
!!! note
Remote AI providers may be paid services. If you use a hosted OpenAI-compatible API, you
are responsible for any usage charges incurred by Paperless-ngx features, and your
document data will be sent to the provider you configure.
The OpenAI API is a paid service. You will need to set up an OpenAI account and
will be charged for usage incurred by Paperless-ngx features and your document data
will (of course) be sent to the OpenAI API. Paperless-ngx does not endorse the use of the
OpenAI API in any way.
Paperless-ngx does not endorse any specific provider. Refer to your provider's terms of
service and privacy policy, and use at your own risk.
Refer to the OpenAI terms of service, and use at your own risk.
#### [`PAPERLESS_AI_LLM_MODEL=<str>`](#PAPERLESS_AI_LLM_MODEL) {#PAPERLESS_AI_LLM_MODEL}
: The model to use for the AI backend, i.e. "gpt-3.5-turbo", "gpt-4" or any of the models supported
by the current backend. If not supplied, defaults to "gpt-3.5-turbo" for the OpenAI-compatible
backend and "llama3.1" for Ollama.
: The model to use for the AI backend, i.e. "gpt-3.5-turbo", "gpt-4" or any of the models supported by the
current backend. If not supplied, defaults to "gpt-3.5-turbo" for OpenAI and "llama3.1" for Ollama.
Defaults to None.
#### [`PAPERLESS_AI_LLM_API_KEY=<str>`](#PAPERLESS_AI_LLM_API_KEY) {#PAPERLESS_AI_LLM_API_KEY}
: The API key to use for the AI backend. This is typically required for the OpenAI-compatible
backend (optional for others).
: The API key to use for the AI backend. This is required for the OpenAI backend (optional for others).
Defaults to None.
#### [`PAPERLESS_AI_LLM_ENDPOINT=<str>`](#PAPERLESS_AI_LLM_ENDPOINT) {#PAPERLESS_AI_LLM_ENDPOINT}
: The endpoint / url to use for the AI backend. This is required for the Ollama backend and may be
used with the OpenAI-compatible backend to target a custom provider or local gateway.
: The endpoint / url to use for the AI backend. This is required for the Ollama backend (optional for others).
Defaults to None.
+1 -1
View File
@@ -4,7 +4,7 @@ title: Home
<div class="grid-left" markdown>
![image](assets/logo_full_black.svg#only-light){.index-logo}
![image](assets/logo_full_eee.svg#only-dark){.index-logo}
![image](assets/logo_full_white.svg#only-dark){.index-logo}
**Paperless-ngx** is a _community-supported_ open-source document management system that transforms your
physical documents into a searchable online archive so you can keep, well, _less paper_.
-6
View File
@@ -242,12 +242,6 @@ For example:
}
```
## Task History Cleared on Upgrade
The task tracking system has been redesigned in this release. All existing task history records are dropped from the database during the upgrade. Previously completed, failed, or acknowledged tasks will no longer appear in the task list after upgrading.
No user action is required.
## Consume Script Positional Arguments Removed
Pre- and post-consumption scripts no longer receive positional arguments. All information is
+8 -15
View File
@@ -302,19 +302,13 @@ Paperless-ngx includes several features that use AI to enhance the document mana
!!! warning
Remember that Paperless-ngx will send document content to the AI provider you have configured,
so consider the privacy implications of using these features, especially if using a remote
model or API provider instead of the default local model.
Remember that Paperless-ngx will send document content to the AI provider you have configured, so consider the privacy implications of using these features, especially if using a remote model (e.g. OpenAI), instead of the default local model.
The AI features work by creating an embedding of the text content and metadata of documents, which is then used for various tasks such as similarity search and question answering. This uses the FAISS vector store.
### AI-Enhanced Suggestions
If enabled, Paperless-ngx can use an AI LLM model to suggest document titles, dates, tags,
correspondents and document types for documents. This feature will always be "opt-in" and does not
disable the existing classifier-based suggestion system. Currently, both remote
(via OpenAI-compatible APIs) and local (via Ollama) models are supported, see
[configuration](configuration.md#ai) for details.
If enabled, Paperless-ngx can use an AI LLM model to suggest document titles, dates, tags, correspondents and document types for documents. This feature will always be "opt-in" and does not disable the existing classifier-based suggestion system. Currently, both remote (via the OpenAI API) and local (via Ollama) models are supported, see [configuration](configuration.md#ai) for details.
### Document Chat
@@ -420,7 +414,7 @@ still have "object-level" permissions.
| SavedView | Add, edit, delete or view Saved Views. |
| ShareLink | Add, delete or view Share Links. |
| StoragePath | Add, edit, delete or view Storage Paths. |
| SystemMonitoring | View the system status dialog, tasks summary and their API endpoints. Admin users also retain system status access. |
| SystemStatus | View the system status dialog and corresponding API endpoint. Admin users also retain system status access. |
| Tag | Add, edit, delete or view Tags. |
| UISettings | Add, edit, delete or view the UI settings that are used by the web app.<br/>:warning: **Users that will access the web UI must be granted at least _View_ permissions.** |
| User | Add, edit, delete or view other user accounts via Settings > Users & Groups and `/api/users/`. These permissions are not needed for users to edit their own profile via "My Profile" or `/api/profile/`. |
@@ -861,14 +855,13 @@ Matching natural date keywords:
```
added:today
modified:yesterday
created:"previous week"
added:"previous month"
modified:"this year"
created:this_week
added:last_month
modified:this_year
```
Supported date keywords: `today`, `yesterday`, `previous week`,
`this month`, `previous month`, `this year`, `previous year`,
`previous quarter`.
Supported date keywords: `today`, `yesterday`, `this_week`, `last_week`,
`this_month`, `last_month`, `this_year`, `last_year`.
#### Searching custom fields
+2 -16
View File
@@ -30,25 +30,11 @@
"**/.idea": true,
"**/.venv": true,
"**/.coverage": true,
"**/coverage.json": true,
"htmlcov/": true,
"coverage.xml": true,
"junit.xml": true
"**/coverage.json": true
},
"python.languageServer": "Pylance",
"python.defaultInterpreterPath": "${workspaceFolder:paperless-ngx}/.venv/bin/python3",
"python.analysis.extraPaths": ["${workspaceFolder:paperless-ngx}/src"],
"python.defaultInterpreterPath": ".venv/bin/python3",
"python.analysis.inlayHints.pytestParameters": true,
"python.testing.pytestEnabled": true,
"python.testing.unittestEnabled": false,
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.ruff": "explicit",
"source.organizeImports.ruff": "explicit"
}
}
},
"extensions": {
"recommendations": ["ms-python.python", "charliermarsh.ruff", "editorconfig.editorconfig"],
+20 -23
View File
@@ -1,6 +1,6 @@
[project]
name = "paperless-ngx"
version = "2.20.15"
version = "2.20.14"
description = "A community-supported supercharged document management system: scan, index and archive all your physical documents"
readme = "README.md"
requires-python = ">=3.11"
@@ -28,6 +28,7 @@ dependencies = [
"django-allauth[mfa,socialaccount]~=65.15.0",
"django-auditlog~=3.4.1",
"django-cachalot~=2.9.0",
"django-celery-results~=2.6.0",
"django-compression-middleware~=0.5.0",
"django-cors-headers~=4.9.0",
"django-extensions~=4.1",
@@ -36,30 +37,30 @@ dependencies = [
"django-multiselectfield~=1.0.1",
"django-rich~=2.2.0",
"django-soft-delete~=1.0.18",
"django-treenode>=0.24",
"django-treenode>=0.23.2",
"djangorestframework~=3.16",
"djangorestframework-guardian~=0.4.0",
"drf-spectacular~=0.28",
"drf-spectacular-sidecar~=2026.4.14",
"drf-spectacular-sidecar~=2026.4.1",
"drf-writable-nested~=0.7.1",
"faiss-cpu>=1.10",
"filelock~=3.29.0",
"filelock~=3.25.2",
"flower~=2.0.1",
"gotenberg-client~=0.14.0",
"httpx-oauth~=0.16",
"ijson>=3.2",
"imap-tools~=1.12.1",
"imap-tools~=1.11.0",
"jinja2~=3.1.5",
"langdetect~=1.0.9",
"llama-index-core>=0.14.21",
"llama-index-core>=0.14.12",
"llama-index-embeddings-huggingface>=0.6.1",
"llama-index-embeddings-openai-like>=0.2.2",
"llama-index-embeddings-openai>=0.5.1",
"llama-index-llms-ollama>=0.9.1",
"llama-index-llms-openai-like>=0.7.1",
"llama-index-llms-openai>=0.6.13",
"llama-index-vector-stores-faiss>=0.5.2",
"nltk~=3.9.1",
"ocrmypdf~=17.4.2",
"openai>=2.32",
"ocrmypdf~=17.4.0",
"openai>=1.76",
"pathvalidate~=3.3.1",
"pdf2image~=1.17.0",
"python-dateutil~=2.9.0",
@@ -67,13 +68,13 @@ dependencies = [
"python-gnupg~=0.5.4",
"python-ipware~=3.0.0",
"python-magic~=0.4.27",
"rapidfuzz~=3.14.5",
"rapidfuzz~=3.14.0",
"redis[hiredis]~=5.2.1",
"regex>=2026.4.4",
"regex>=2025.9.18",
"scikit-learn~=1.8.0",
"sentence-transformers>=5.4.1",
"sentence-transformers>=4.1",
"setproctitle~=1.3.4",
"tantivy~=0.26.0",
"tantivy>=0.25.1",
"tika-client~=0.11.0",
"torch~=2.11.0",
"watchfiles>=1.1.1",
@@ -101,16 +102,16 @@ dev = [
{ include-group = "testing" },
]
docs = [
"zensical>=0.0.36",
"zensical>=0.0.21",
]
lint = [
"prek~=0.3.10",
"ruff~=0.15.12",
"prek~=0.3.0",
"ruff~=0.15.0",
]
testing = [
"daphne",
"factory-boy~=3.3.1",
"faker~=40.15.0",
"faker~=40.12.0",
"imagehash",
"pytest~=9.0.3",
"pytest-cov~=7.1.0",
@@ -143,8 +144,7 @@ typing = [
"types-python-dateutil",
"types-pytz",
"types-redis",
"types-regex",
"types-setuptools"
"types-setuptools",
]
[tool.uv]
@@ -179,8 +179,6 @@ respect-gitignore = true
fix = true
show-fixes = true
output-format = "grouped"
[tool.ruff.format]
line-ending = "lf"
[tool.ruff.lint]
# https://docs.astral.sh/ruff/rules/
extend-select = [
@@ -314,7 +312,6 @@ markers = [
"date_parsing: Tests which cover date parsing from content or filename",
"management: Tests which cover management commands/functionality",
"search: Tests for the Tantivy search backend",
"api: Tests for REST API endpoints",
]
[tool.pytest_env]
+16
View File
@@ -0,0 +1,16 @@
9w
{@@N
Q@@@@H
G@@@@@@@\
SilN@@@@@@@
*Q *@@@@@@@@S /= = = = = = = = = = = = = = = = = =\
*@ B@@@@@@@@N || ||
N R$ A@@@@@@@@@@ || PAPERLESS-NGX ||
x@@ $U B@@@@@@@@@R || ||
N@@N^ @ N@@@@@@@@@* \= = = = = = = = = = = = = = = = = =/
|@@@u @ E@@@@@@@@l
Q@@@ \ Px@@@@@@P
1@@S` @@@o'
z$ ;
v
/
@@ -0,0 +1,320 @@
%PDF-1.6 %âãÏÓ
3 0 obj <</Metadata 7 0 R/OCProperties<</D<</ON[8 0 R 22 0 R 36 0 R]/Order 37 0 R/RBGroups[]>>/OCGs[8 0 R 22 0 R 36 0 R]>>/Pages 4 0 R/Type/Catalog>> endobj 7 0 obj <</Length 13018/Subtype/XML/Type/Metadata>>stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.a8731b9, 2021/09/09-00:37:38 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"
xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
<xmp:CreateDate>2018-12-29T21:47:38Z</xmp:CreateDate>
<xmp:CreatorTool>Chromium</xmp:CreatorTool>
<xmp:ModifyDate>2022-02-26T20:10:58-08:00</xmp:ModifyDate>
<xmp:MetadataDate>2022-02-26T20:10:58-08:00</xmp:MetadataDate>
<xmp:Thumbnails>
<rdf:Alt>
<rdf:li rdf:parseType="Resource">
<xmpGImg:width>256</xmpGImg:width>
<xmpGImg:height>76</xmpGImg:height>
<xmpGImg:format>JPEG</xmpGImg:format>
<xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgATAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYqlnmXzJ&#xA;pHlvR7jV9VmENpAP9k7n7MaD9pm7DBKQAssZSAFl5x+RvnjUfN2r+br+8+BWmtJLaCtVijZZUVB8&#xA;liFT3O+VYp8RLVhnxEvWsub3Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FWG+f/zU8seTLdlvJfrWqMKwaZCw9U1Gxc7iNfdvoByueQRa55BF8t+evzB8&#xA;w+c9T+t6pLxgjJFpYx1EMKn+Ud2PdjufltmJOZlzcOczI7vVP+cVYSbjzJNX4VSzSnuxmP8Axrl2&#xA;n6t2m6voLMlynYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FVk88FvBJPPIsMESl5ZZCFRVUVLMx2AA74q8A/Mv/nIqV2l0ryYeEYqkusuPiPY/V0Ybf67fQB1z&#xA;GyZugcXJn6B4TcXFxczyXFxK808rF5ZZGLuzHclmNSScxnGU8Veq/lt+bnlL8rPK/wBb8wW19cz+&#xA;YbqX6sljHFIRDZJGvN/VlhoGedgtK/ZOZeAbOXpxsyy3/wCc0PyollCSWOs26nrJJb25Uf8AIu5d&#xA;vwy9yHrHkn8w/JvnbT2vvLOpxX8UdBPEKpNEW6CWJwrrXsSKHtXFWR4q7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FVO4nSC3lncEpEjOwHWiippXFXhmnf85kfljf6hbWMOma2st1KkEbPBaBQ0jBQWpdE0qfD&#xA;FXu+KuxV2KuxV2KuxV2KuxV2KsR8r/mDYa75v8xeXoiok0WREh3+KVQOE7f885vh+7IRnZIa4zsk&#xA;MuybY+X/AM9PzWude1Sby5pMxj0OxkMdw6Gn1qZDRixHWNGHwjofteFMTLks0OTh5slmhyeR5Q0O&#xA;xVfDDLPMkMKGSWVgkcairMzGgAHiTiqrqXlsfmD+b+lfl5p9+lrbabbyaXDfcTLH61pDNd3kgQMv&#xA;IPc+oqmv2eObCEaFOxhGhTJ/Nv8Azhp5r0fQrvU9M1u21aazied7H0XgkdI15MIzylDPQbA0r45J&#xA;k8g/LXz3qnkbzjp3mHT5GUW8ireQKaCe2YgTQsOh5L0r0ah6jFX6Vo6SIsiEMjgMrDoQdwRireKu&#xA;xV2KuxV2KuxV2KuxV2KuxV2KoXVv+OVe/wDGCX/iBxV+ZXlP/lKdG/5jrb/k8uKv0/xV2KuxV2Ku&#xA;xV2KuxV2KuxV8PaD5v1nRPM8fmOzlpfrM00oNeEgkNZI3HdXrQ/1zXiRBt10ZEG31LffmLZar+VO&#xA;p+atGcpKlnMPTr+8t7rjx4t03RmB9xv3zMM7jYcw5LjYfH+YLguxV2Ksps9H1jQPy+1j8x1i4fUA&#xA;ltojPtW6uJBAblR/y7hyyH/flP5TmRhhe7kYMdmy8s/KnzzF5G8/6X5rmtGv00/6xytVcRs/r20k&#xA;H2yHpT1a9MynLe4ea/8AnNS41DQL2w0Ty4bDULuJoY72e5EywhxxLiNYk5MAfhq1K9a9MVeC/l35&#xA;I1Pzt5w07y7p6MzXcq/WZQNobdSDLKx7BF+80HfFXun/ADk3+e+uxa/P5E8p3kmm6bpirDql1bMY&#xA;5ZpqAmFZB8SxxiimlORqDtirxDyz5O/MrVYpNf8ALelapdLbszNqdlHMSJAatxlTdnFania4q1qH&#xA;5nfmTd3bz3fmbVPrBCo9LqaP+7UIKqjKK0Xc0qTud8VfV+o63rK/84gpqy39yNV/RkD/AF8TSC45&#xA;G7RS3q151ptWuKvlLTfzP/MqzvEns/MuqfWSrxx1uppf71DGaK7MOVH+E0qDuNwMVW+Y/Jv5j6PF&#xA;FrvmHSdUskuWDJqV5FMpLndeUriquabBjXFXu/8Azi9+fmvS6/beRvNN49/a3wKaPf3DF5oplWqw&#xA;O7VLo4BCV3VqDodlWcf85N/n1qPkhIPLHll1j8w30Pr3V8QGNrbsSqcAar6shU7n7IFabghV8v6R&#xA;5D/Nn8xUutcstP1DX1iZvrGoTSc+Tj4mVZJ2HqPvUqlT7YqyD8sPzz8/flv5gSw1Ke6utFgm9DVN&#xA;CvCxeIK3GT0VkPKGVN/h2BOzDwVfT3/ORvmSU/kXd67oF/LCt0bCezvrWR4nMU80bKVZSrAMjYq+&#xA;O9D/ADb/ADM0q6llsfMOoSXNxC9shmuJpyvq0BaNXZgJOytSo7b74q9v/wCcYNK8+N5k806t5nGq&#xA;qv6HeNTqX1gCWSZ1YOPX+2yrEwr2r74q+dPKf/KU6N/zHW3/ACeXFX3X/wA5B/nJ/wAq28rwmwRJ&#xA;vMOrM8WmJJukYQD1Lh1/aCclAXuT4A4q+N7HSvza/NjV7ia3S/8AMt7GQ9xLJJWKHnUqOUjJDEDQ&#xA;8VFPYYqi/K/5gfmj+Uvmb6p6l1YvaOv17QL0v9XkQ0ajRNsOSn4XTfwOKvr3zV+dtpB+Rkn5j6FG&#xA;GluYEWyt5aN6V3LKIGSSlOXovyJ/m4++Kvi+0i/Mn81PM5tI57nzBrk4eYRzzooCru3H1njiRVrs&#xA;q0A7Yqn+l+XPz9/L3zHp+n2MGqaHf6jcJbWaxkvaTzSNQISpktpPEg1oN8VfRH/OTP5q+bPInkzQ&#xA;tF0+8VfMetRst9q8C+myLbJGJnhTf0zNJJ8J/ZFab0IVfLnln8u/zO/Mdr7UtGs59dktCBfXU1zF&#xA;6gZwWALXEiM5O52rir0z8g0/PHSvzSsfKZuNR0uzj/0rWNP1FHeBbKM/GyRzbL6jURZI/wBojemK&#xA;pd5v0Cfy/wCZtS0adSrWc7xpX9qOtY3FezIQwzXyFGnXSjRplvlbU706FcWVuT6HmKwvNPu4f5r3&#xA;ToRcW8ijsZI3SL3NTk4nb3s4nb3vO8qanYq9d/K38h9V12aHVfMkT2GiKQ6Wr1S4uR2FNjHGe7Hc&#xA;/s9eQvx4Sdy348JO55M6/wCcpbS2tPyJ1K1tYlgtoJbGOGGMBURFuYwFUDoBmWA5gD5D/J7yTp/n&#xA;j8xtI8r6hPLbWeofWPVnt+PqL6FrLOvHmGXdogDt0xV9O2v/ADhT+WyScrjWNXmUUIRZLaMGh6E+&#xA;gxofamKvW/If5ZeSvIli1p5a05LQygfWbpiZLiYjp6krVY/6v2R2AxV+e35jC5H5heZxdV+s/pa+&#xA;9ata8/rL8uu/XFX6EflU+hv+W3lltD4fov8AR1uIOFOojAkDU/b9Tlz78q13xV8N/wDOQ76I/wCc&#xA;3mdtGKGzNwnqGKnA3IhQXNKd/X58veuKvoTU/wD1i1P+2Vb/APUYmKvAf+cb20Rfzo8tnWOH1f1p&#xA;Bb+rTh9aMLi2rXv6vHj/AJVMVfa/5xPoyflZ5qOsen9ROm3IIlpQymM+hxr+36vHh/lUxV8B/leL&#xA;s/mV5U+qV+s/piw9KlK8vrKeO3zrirMP+cpBeD88fMP1mtCLM2/Xj6X1OGnGvvWtP2q4qp+Qbb/n&#xA;Ie48tQHyRLrB8vxvIkK2E5WFZOZaQcQ4oeTVNR3xVB6r+T/54avrE11qmg6heavcj1p5JirzuBRO&#xA;bVbkRsBXFXt/nfS/MGlf84cW2m+YLWSz1azeGGa2l2dETUiIQdz/ALq4HFXlf/OJ+nWV7+c2mtdR&#xA;LN9Ut7m5gDgELKkfFXoe68qjwO+KvujVv+OVe/8AGCX/AIgcVfmV5T/5SnRv+Y62/wCTy4q90/5z&#xA;ZW8/5WFobPX6mdJUQ+Hqi5m9Wn+xKYq84/LOD87J7C9T8vJNTFmkqm+TTZvTAlZfhMihlO6rsfbF&#xA;Ub5k/K/8/Ne1KG68w6Rqd/qUqLine truncated
</rdf:li>
</rdf:Alt>
</xmp:Thumbnails>
<pdf:Producer>Skia/PDF m64</pdf:Producer>
<xmpTPg:NPages>1</xmpTPg:NPages>
<xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>
<xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
<xmpTPg:MaxPageSize rdf:parseType="Resource">
<stDim:w>2409.000000</stDim:w>
<stDim:h>909.000000</stDim:h>
<stDim:unit>Pixels</stDim:unit>
</xmpTPg:MaxPageSize>
<xmpTPg:PlateNames>
<rdf:Seq>
<rdf:li>Cyan</rdf:li>
<rdf:li>Magenta</rdf:li>
<rdf:li>Yellow</rdf:li>
<rdf:li>Black</rdf:li>
</rdf:Seq>
</xmpTPg:PlateNames>
<xmpTPg:SwatchGroups>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<xmpG:groupName>Default Swatch Group</xmpG:groupName>
<xmpG:groupType>0</xmpG:groupType>
</rdf:li>
</rdf:Seq>
</xmpTPg:SwatchGroups>
<xmpMM:InstanceID>uuid:eb0c8294-a0b2-4240-b0a8-937e6f03a02e</xmpMM:InstanceID>
<xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
<xmpMM:DocumentID>uuid:ed13c6d4-ee7a-0e4b-a13d-151fee47c8f1</xmpMM:DocumentID>
<dc:format>application/pdf</dc:format>
<illustrator:CreatorSubTool>Adobe Illustrator</illustrator:CreatorSubTool>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?> endstream endobj 4 0 obj <</Count 1/Kids[5 0 R]/Type/Pages>> endobj 5 0 obj <</ArtBox[152.941 154.947 2262.04 755.845]/BleedBox[0.0 0.0 2409.0 909.0]/Contents 38 0 R/CropBox[0.0 0.0 2409.0 909.0]/LastModified(D:20220226201058-08'00')/MediaBox[0 0 2409 909]/Parent 4 0 R/PieceInfo<</Illustrator 39 0 R>>/Resources<</ExtGState<</GS0 40 0 R>>/Properties<</MC0 36 0 R>>>>/Thumb 41 0 R/TrimBox[0.0 0.0 2409.0 909.0]/Type/Page>> endobj 38 0 obj <</Filter/FlateDecode/Length 3538>>stream
H‰ì—ÍŽ¹„ïýõUbòŸWË€O†aøàxw#»~À_$YÕÝ#É‚wGÀ4M’™‘™þöqûð×�aûÓŸ?n·Ÿoaal1óß®_¿üëöÏíßLëß/?Þ>üåaûñ?·Ÿ7ó)Ûú¨Gµ¸¥‘�PGÙ^>ùrýoñ¨µn{:Z/[LGŒ¶ífGìiKvtþ¼Üvë|ßr8J.ÛûQå£Õ¶íÌöTÏ!‹K<ƈ×÷�nC›s‹ÛÞÂs~8»5L~÷HÛÞíHÝ.ÃÖ0håú½ŸßÖÎý4{½ßÏ^wï§å%áþ¾±}¿¯·…v_1_¾ŸÖ/Ï<\1=·/óÃe]p›âD®îŠÕÑ1îÓ5Ñ
c{Å»å�Q¬Èº:¥cè9£­`|iGNéËe\šú}EïGé§£hÞ‚ÍwõrŽR¹$tœÓêQB–™åÈrxÍó–ä¾äqô}Ï®IÍÇм’ru¯¤ü8ŽÐ&RÖ +lȹ¾ÚÆ Ýý¹ná’æo‘É s—ÃJÛ°3'»¿¥Ë„î0àµV6›å¶å |Q{»¼µ†
Ðtçù�ã ugcß ±h­zü}Ì×֌ؔÁ86V¬†5ïÞ9ñÓí‡Ûߨg–ÚaV¿É?ÿÀ?v=ó¯p“ÕGjú‰�­åG–Ø/ÖqŒ’ž˜pÉÑ•2:ù'Õy Ÿ¶]ô[ç>ÓOßé7íÚßþL?½ì‘~zø#ÿä™gþ 6_å_Â'x>ݸ¸%µ½Â™rÓB&¡N x·&‚h‚uktÁþó9c¾¶FÞ•àœ¥óà;±Ä‘Å<éòâûb¦|gnãÂq§6èÌçÙ=<iC&*Vî+ªÄeÔUGÚ}WEÍi"¡Û¯“÷M·~aî¢Â¹ñ³‰E&&¸» -¬HIaž¦�L\¶ß™ÚQ('j�ðßF$q{ âË[‚Å®�Ä(+*¬¾V9;f~¾Þj%DcëøzlÓ°Ô*„$>ø4Dã.¹\Èi‹¤Í é X–�ÿú,�tÑ-Ê�ÕÇ­ �øk'² X;
u�‹à]Ê{ j¸9¢Ì ÖõĽ�ÉÆà†“œB½ÕÎ;,$ˆ£BÙ{š4Y\��iQÞ>Ç/·•ÃÎ |Yü;(,ÚÈCA~pL$ÖHÖ‰EŠÜ•É£„A¨¬º DG}'ãöá;€¼RqÁËqBÛ$¸¥ÌaÒ»¢Ö{>ºfüʽÂ$Z‚»æçg’ÄJÆB5�Î6a2v`_#!¸’S\jY¬6³ã±5äÇÏô
»¯TüعFÄ$rp=ǵ{ÈÙ˜pQÇ8DZ%ËŠÁWx[ -6›¡^ß„¦`�©¢Å‘€×±Þ:°E©0"!KQÞ&´<íó7D�¿&M¦*Ÿð0Ðr†œ4�5ÿ_âfåíª·G4Vy¼'n—§¬»8\y‚c 'Ö­]ýñ!N[xJ;BÙä.¹Ô²Ç«E5kÍÃðôø~ÆÔ¢Ü®-+üò‹© !G‘(xÝáÜ·v §›—ž¼Ñ OR] JÀšØŸq|=GY%›5ŸJB§�냬°R0òH$IÖ'/)=z;TK14p„KœCi&5â߯ ,McVq¦GHv£3!é`É3ŸŠž®t…ëÆPºR!S””Ã*îÝ5| ûÒÖ—¨’#<þÜÃU„Xå�M6¥è²];IÝ�xÑ;üðF—o+i€+Sº¤¤‚óµß¬¤åIIËו´ª%í(éoPÒô�”4}?%mo”´}'%MÿSIó[%­ÿ—’:%96»�ŠåRäø[B:TIf2êB~ *b uÂY‡€”`ÛÙe2é÷«VíBøR䗄섯ÝGK¾T™Ÿ3¬÷^‚
@ ¦{ù®’O×TV5æI‰f¥¼ãÓüÏ2þkb]QÁ¾§B·ØK;b�Éܽ\[
Ô¨Â]’A-ÁÅQ%ú"@@ã¬þ„]£Ëyô-}9·s¸¨'SÙÖQ¥sȪÁn–¯ éCSRFÄjžb¨B¬i^Ì+šËtW­mYj˜„\ŒŒŠW !H5ßÇò>/kö°$©Òv Qå_½YJò‘�4•Õ¢zŸÍ€% ¢Á�?FM.m)ùÄÔ:máí¾P} D€r‰øK†'¢ì
}ö¯rñ�>Ñ«ÆZ=ðH€ìP�®Ô$L<°´^=Ð9„}ÚÙ® i¶z¾A¬”ž×°“Г§Ïs"{fv¿Ä« ]gatÝ ²É;ÏL ‰CnÞÊä®'Í p¦Qa­©)k6 v§‰ÀË‹H`W¿ 5Cð^²HŸ´ÂfKäÉÍÅ¡÷á»^¼à¨Þ©x‰ m‰*!äg­·Q"sŽá^šíÙš¢Z oØ’ `Âìå¼O\²(²t�"ÀÈüé÷5ÂíÔ4“kL#n–xrVyæ¥K·6[Û–¼µUHH=$“™£‡ì_½™×F&ÝJôzã¬æØ¦¤€š©y&Äùš¥…Ùé`c‰ÀŒI“ëÃ6sô³¤E#qäD¿)iíIû¢¤ågIËo%-ÿ^%-Ô%imR¨ø‰š\ðkE-¾³¨)Ù¿›¦õ÷Ô´öþšf¿WM³_©iý%­
§¤!WO’Fÿg‰AÌjZ¢*í¿GaúMσJ^½'•0�²GÍ<¼»¡=ÂꜼvDi*W3(^³Ÿ²x½‰rüFàAɪpo=ù¡ü·°Î3³«œ:“r £œ!>Ÿ $ÓùQ7§U¾�H‘zNp½EuZŒ>õ3á$Ùºã&¸=\’¾ãÊKh`ú¢"ÒÖ8ó>zQÕî-cQ¤è{ÇpÅ/½>arãgFB#–µû»Cu’¬ ^¦¦E‘Ö€¼ÏgðhfÖ–7CRM.IuÚ§.LÝ®”5üI_I”ú$"è=¦2ȉžH²ãzÞ��ÀEÞ�¼ŒJËî n³E#8æ¬Æå5êÂ)ïçþ ÈEÅŒ1µ|öBP5…¹6¸œÒè­,ÙP±¤¦_YQC›ÒÄ™Ø&ERàØÕgw hJ²Y=Uvþ{›�킹8®Õ3ǰ8)ÑKî˜ùÙ¡:²‡ÄOwdËىɔ<fª·™¡Ëè–¨»–éûJÙziv_úL› l:x5‰Hdq¸Hé$²~:®6qŠyÅj;É9“\(`V²Dƒý/bí­Ÿ\4X½sœã›g Ít1ªO!Þ]qKBCóæQx�‡T?ð6d0(¡å•j»¡²ÕÌâ&â4Ú|嘌A]=ÓÙ}gos\Tb‹<i*ŸÇtͼz\úºÍt v5%bns|Á°Ƽ#æ34z»:[+› D†]Ù³¼°�|œÌ}�.4½U+⌲g:Ë™Uk á¯Öc¶Ï“{qˆŽÁ2¡[ƒ„¤Ès#|½9=«›ÐBá]ÑÓ?Jd,GÕl–�¦GgB³l4/a»ÀJmå%�Æi¬Ç'I W2Ñë’([¥”š¿$Yà1¹S2½<S¢RÖ¦IR‰ª,àâî8¦ÀªRÇ0s=u‘‘# }«>
æ…jsû5V‚!Á‰¡E,ù/Ùe�Ü6 „ÑÞ§ð4€HÖ™”>…ЏHšÜ¿È{ ’¢Æ€Iì~ûý 15àõlf«ŸC¸ÕOt7�§ñíxÐÙl¿æaY¦Ñè\ÂÁÆF´©#r6…nEáAì~W@LIŠ
g­[y[Û5½[lÛ4uÕ.( Â8¿ŽÞ;ÍjÙ$ƪ6=gŒ¨±\ÉdÏ ¶³.øxMò°J\çÅ�ÕL­×`Í&¯ëL`zþ5³¬ÉÐOxµ‡çÆ'~¬�¹–b�f¡êÍ›¿ÿ;Nï§f ÿÔ¥}A¶ÎÓ# Ü$åò£Ÿ*ß!—D�ê\*—§öå ~¯�Æ0ì¡ã'ø¹Lj‚Qê¹1ߦ¤ûd¾QîÃ[Ibð`Fé¥ÃÍÊp³Ó\SîêÇé#Ó>hõû£Û‰SwwÊ?WõðÙ½�бSÄ\n1ðÔàø ›Lsµl·@]Ö0HX³Ð×Ú¬GÅÊcG‰§ï¼k“oF+œ·È•“šcCYçg? :ìš7Õ䌊§:òÓÚê†Â>»°nyÛ¢©EkæÇ?ïÀÛÚ¸&µHíªŒóž³“=Ë&cfz7kêÀmÔz–ü6mæýƒ÷GÈÂSb ¨8‡é&´n�Öº[�¹Öëc(È0‰�jFù|íä˜Ód<B…Š3ÅÿûëyvyÁ\z^ííÃ)[œp°9\AßEðœT½ñ¡<¥(â M›Ù‚óBÙªN[[U»•“
Ö¶à± üAé¼J:{bø,Ñ X²Ï<Ù’.GmY )¹†®KÂ=D'ÉÏÉh#Q�hpîAç÷A<‘[€‚mŠ˜•¹�¢ˆqáÞÃõÅËf®g]
dËã1@Vd=ÉÓ Ò±»:±våÐuCÕxÂBƒ+@6§HX™Ä‰ xrP§'\!ì÷8ï4:–³ÛÊ’‡Ål>ÙÏðå|Oö„GŠlÀ ç×å)gp[wß¶øŠÛ®|3;Â.#ØÃšc
DÖKï“:~ýøäß?Í(|“ endstream endobj 41 0 obj <</BitsPerComponent 8/ColorSpace 42 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 39/Length 341/Width 105>>stream
8;Z]!;%eL($q0pNcbniC#K_+GJ<E15BI2-QYYN4g$*WZH;oGN/T@%8hnR0>@ETFsU
;=F[:4pLp#*6itT],LiBHTLDYc,kEBF1[ZR2bGkRVNX43#"`0i&ind`_,9pl5r&8"
:H1]("Ai95^_=lhY#1edW,V[/)5X"5Dq]kTQ2):g\lk5k$PX6=OAr"<R6+j_nud;u
nb!/UdtrFZe>1PRaXFHt73[miI*7dprenMq;+K8hRSNRQ/fH;GP#AtJL*5c[D[S'.
I:JI\Yu,Inbp!]Zd8PIO958dISBad#rhI+)hkLF9,#Yl,.^fN>42G7?VF*,\L9pMb
q@!AnH$W<~> endstream endobj 42 0 obj [/Indexed/DeviceRGB 255 43 0 R] endobj 43 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 36 0 obj <</Intent 44 0 R/Name(Layer 1)/Type/OCG/Usage 45 0 R>> endobj 44 0 obj [/View/Design] endobj 45 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 26.0)/Subtype/Artwork>>>> endobj 40 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 39 0 obj <</LastModified(D:20220226201058-08'00')/Private 46 0 R>> endobj 46 0 obj <</AIMetaData 47 0 R/AIPDFPrivateData1 48 0 R/ContainerVersion 12/CreatorVersion 26/RoundtripStreamType 2/RoundtripVersion 26>> endobj 47 0 obj <</Length 1446>>stream
%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 26.0.3 %%For: (Michael Shamoon) () %%Title: (Black logo - no background.pdf) %%CreationDate: 2/26/22 8:10 PM %%Canvassize: 16383 %%BoundingBox: 152 154 2263 756 %%HiResBoundingBox: 152.941359391029 154.946950299891 2262.04187549133 755.845102922764 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 778 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 2409 909 %AI3_TemplateBox: 1203.5 454.5 1203.5 454.5 %AI3_TileBox: 826.5 166.5 1560.5 742.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -1503 2174 0.375893458271534 0 7785.45073238807 8164.54751330906 2548 1389 18 0 0 6 45 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -1503 2174 0.375893458271534 2548 1389 18 0 0 6 45 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:704 -46 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 48 0 obj <</Length 33982>>stream
%AI24_ZStandard_Data(µ/ýXœ.º…P-�D†™€æ!R‰,]8s!6ŒJl'WÊŠˆH¶õ2>r"€ ‚! -�Ncpø(¤‚ÃG!AëÂÊ0’Y�ÑGÈ•jø(dBRTäâ2z��„„v1p4—Â&á„„ 4)eø²1zÙy^6FžŽ�Í A¬”BÁ 4×f4@X¨,X) Ö|@lf@„…*ááb-T£çÑäÄXŒÖB¥�Ñ|@lk£‚SÑ0Ï`c*"2òp*`Þ…á±Ù`° qU¼4ìV¼Œž§µBˆÃŒŒ<ŠÑ …l…6 N‹â…æ*h±H”â@BÅ"™(!¨ Å�Ñó0$,
ËÓ©Iˆ„’XFÏ£¹°™\X8,‰%ÁbbÁ!¸„Hè¢x8$%±(°JB$ÆÓòpt� lVB`Vp¤’ø0)e¨¹
\T‚£TPñ
HèHeô<”S'ó\&”„`PÊ‘Ê(äA%8J«w�áh9šk#±£(š ÏZHÄ�¨¨´YÀx@P„ŠçâáˆX) ŽÂ(Š*5 eäµJÙùheÁJIp4—ÉÈÃé„F&òÀb´ª…‹€ +É’ƒ—�‘‡£¹&ÚFVÀ âá ¸°HÎÈÈÄAfäi-ˆx8NF "΄æ:�T "©†…L‰ä
*h®•È(¢Ã�ã�:ØP¹B Æ€NHƒ#³³0±°� ¡¬¥£¹$@…”à(‘R š �‡3`Ä"™HÍ20zž�’æà„„£çAØðpB¬”„æ"€ò`êh4]�¥ˆŽƒÔÁ†‡3€ƒsB2°� ᡲQy$8J§‘‡£îBYÌ¡Àâh®�„‹vÐ\ Le@Ș�ñ™«´d)ꋈ€%«•æ‰q0ŽãÅA§åIÌÊ`C à4r¸h aÒoÁÁ�Êc°4×I ä¡)pAˆ§24
-�¡‘âÀÑ\ J°Úh𬠂�B& <˜:V.¶ÈX­bB:ˆ€zŒŽ�“ê£a <͵ÜAUG{8‹Ž”Ò$@MÀD��‡ˆ¨@HÄ!<D „V'B“£QR È8Q‚•ŽÝh1èèh. Óg r…ã#0q¢¢ˆ–O‡Š%Ú‹÷´ÚDÔAU(Ó' È‚
‚@8X#¢„�BËGatâ! �VPsA°xpHí°i(Qx˜@R7$hæ“Z¡¹2ŒÏÄ�ÂÅAæà¢•¢ ñ°VhÚa€‡£)ñˆ\^4× q!©6Z ¼DsòÐ! ¹2 NÕQ�òÑ@�+xÀÁÄùx0+¬¤Ò“PR4V4P.ŹH)p Ÿ’RËk®ý‘Š !hA¹waeèa’ï
œg4 ÎA¦À„>
Ù¢¹b4'$lyÉ" ©’ƒR;“R†'YŠ@s‘¾ h€�h8ЬLE*û¬VˆB)­VšËÔ`°'¬Zhi‹„p$N Ä@Ñ:¸ƒÏk¥¹2(RDB ”F2ˆÖÃAеZ=¨ ‡IEÀ0‰Yi®…îà§Aá/FH‚*”.
$�>aQLÜ$fÓp ‚ $ÍEÀ�ñ/¦ üÉp:4+… j®ý§ñ¢:�Ápb‘à�ˆTZ䀿¢pÑ !!Pb2áÁY@@�ÁȤÀT¨@Dˆ>4{!@e‚#('Z:XP ›„22’A‚I2Ð\¸™Å"8tpd¬D4ÀPh®G¢€�¡‘Š‹¸R¨òTF"`i.…dð P@ä221òÀ¤guÚ†Ab¡ ¥¹D|“!|pDr²0Â’ƒ0P.šÇê4 ‰5—†¾p8‹ˆ ŸEDx”I $´´æJká¢%„K|ƒÅi`­2:V:>zV§i® †’‹ÊG›4$p €�¬H4×iä<z„ �AÉ*Å*ˆÐjÍ }Bw°BSFV,‡ÕJsaðEÂEª`„& MƒJD ¹HxˆpD„ߊÃ8(”�A;‰Yi.UÊ�u@ Àå£yLJÏZi.e(q8ÐG †du²rÙr$+ÍÕâ8Py ‚
JÀ8£gm:¸ƒ¡’UËaµb] œˆÄèè1XÊbÍu�y81±� ”FV-Žã!ƒ•’p—�šB¼Z±.84Ðja|8ŸÖgMÜf´¡†…
iŒ2:R$1ñÙVF%¤�"%; ,8šË�Hp”TTžƒ ”�B0 =ÏiÔŽ*$r òaè8y©�Iƒæa«Ñ"*ŠÀhõHÁ„:hÐHq¤F ƉDLbµe&$ôœh@°Éee#â£*`¢›Ä)"•Q8؃QDËgÕ�Âè¨(pŠø‡QXA™h‹D5‹'ˆ><J4>™‘Ñ
h%‚‰o�€Ú0@k€6NHøRÑC
"´aášq"a …Ò44éCjQ�ÌÊ©7àŽ™1(5µFg#Å9XMCAÇc”éø�8ä±yîÖ‡k,‹5×€P¦QþQÈçÄÀDèDAê8xI�hŸ-¡¡‡±AÒ €…Õ‰àÈ$L<Œ<N©Y�æj¢â„„-ÎvHî‘ÓÇ„…£3€Ã¤#¨° ¤æ:àÁŽXqlF¹Á¢q!‘ƒcm="¸*=p�\Fo%$Ñò€X‡Û0@+§ƒÛj�àt08ì €@pü¤=͵€e*©”,ÔOAêøt°ìj óȤø8 L*¨ÖBe&•ÒjÄ’±ZZ%• Ê$@
#;™Z¨J¨PKÚØ`&U 4‘˜VL-T¦B¡‚J�(@­Jj•òA”)ej•8Z¨”¨•±Pb:œšZ¬,¤¦+攂¢ØpY¥ÐZ}^R+‘#à²*a¬2N¡Rœ½¤V-))T
c€Òj4@i5r¥˜‰J™V©“Ã4Y¬R§“©„By‰iñÈZ¥U†ÊF&P
哱”^(PH…(­FªÙÉäáZK*Uiå¡2­RXY¨¡�B¹ b0–i%…e¬ìTB…P«„µ¤Ä°°ÓI¥*a­˜Ô¥V2aYJé¤ÂR-L%ËPXLj€U
[0a(S‰…ej™T2 •ÂP¥“
‹I �±XX…6P%ŒU²“iC•0”I€ Ce-ÀX–µ´°lUÂ2VÖâ�‘ `*…©d¬’DRd,¥ Qhƒ“â€Ì‚’h±J" ‰Uê„/¦•‡ébURA•Z&¢Ð†&Å'[«(Y.«KÆáa"
mdR|@›OCIȲ“DJ*”±b²Ó)•‚2­N™JêEE¥j§ëÔb©T§k¥R©´•*Ó=oÊàÜKš À$F¬Í/)/)ÙÒJµ—¬…2µ—�Qa©RM€U
…*•L-T©©�µL-PŰš*)¨˜•ÆZ©¬TH©X«Jê€ÊtJiª¼´L(¬RSY¥`•jQ™N+MeÕBe&—”Ò ¥­N)-,«TSY¥ XL¬L¥¡¤ ¤Z(Ó*C™N+™Jsyaц-S %uÀ´2@‹µJ­ LKI…*YvBY•PšË *ÕB±XÙJõ’J)±d¨ÆR•T/©”<5–j•©”ZX�¥@[©T'”*àdj¡ªtZe¤P)-´ìTJ9©RXMe•¯S­•ìôÙ2–Ò‹©­T*mO½¤VVª“Jk¡VN™Ù©±T‹Ãj-Ôʪ­¬¤ÚJ¥Ze˜V!lL%C™V²ÐfUB™PrµM€ÆR±XªU:­´2Vc©V,M€TK[©T)«æò¢j­2P©”¦
€ª„R1‘�jéÈVVÙÆ) €iÃP)>)¦–ZAQ ¤*0Té„¢2¹°Rk• �­6§SétJ¥° J«Œ¥¤j(©�މ•B™°
{Ó;42)>˜&Ň @vR™N d•L§fj¡>NëØ˜�À:X¦·X¥‹V*£ƒ©d*«TJÆÑ ³`µ2ë“�PJ­UJ€‰N+ÅÚ`)K¶Â��T/©Le:¥œJ(˜ +ÌÊ´R­2RªV†�=ŠO¶bT­�ÅZ"ì%Ƥ’aذV&¿§»*åñ<k•Z&– d%»P}ÏMûy¾|¬;Õ�*•’u SAQœNÈå>öމÝtùYP¦– UÉ0µJ§Œ›CUjËXJ1,¨ÒZµ:N§ÅÇeCB¥`Z¥H­+ÙEÇé”�Öc%»Huº’]Ĥ@§SÊVÆZYÑ(µº%ócÝôå§ J-–)Ä‚2 3�<£²V&ºS~s´V²‹– õÑZÉ.òßwJI¥�Í‚úd)%Q«…ÅÄÑœXŽü›%V©ÔId¢bZ�ܹ®KjÕbe+–UÖb•8°T+æƒQ|\X¥—”е:¥R¸™T*n:•TTJ*·,LÅ´bÁHAe«’Š…*­ZØ£ø°`­˜”KJ
墯¬]2�J˜©…*¹l kaÊtjŤ°U¶‚!
*ej•N1/&¶ÊT%ö²
–µJ§Ë„á
Kl•:¥RJØëív0Q|Z¦“ ¥Ô
@æ�e¬2V¶ÚÀ2)>ŸR¶ú¨R+VX­•ìâ%Õj¥PÓe#f{˜ÚÒR1 XU§�ÿ¾!ºV ‹)k`€,e“êÈRL§À
+C¥P*™KJê”&”¬cU@€Öª$€ ,uxIµX1)&,ÔÁuz @©U
e'ÕK‰Õ €+kÅ ˜V­V •­TN¦–V+ëÈN(%Óª$@–Z%•R+{Q Ðz1§’¨L%…bÈTR¨ÓKT
6™J*ã#¤ãà ’µR²SÖÁ¢Ø`§TJ"DññÑÁÕß–^9[†Ïû3¬¸_aH·¢Ù§¼ Çgcƒ¥Ëª„1@é¤b™B¬…¢èøºcÿÏåÇaöRÊØ`,(ÓªÕ‘©¤RL¨�–�˜Êª”Bi­>͵€%(*ej™X©� f¢¹8R§Œ£…2¥6N¥Œ£ƒá¥Õê3Àª„J™Z)¦¬c¢¹J­Rè© &LXY[,Ó…ÄÆ•²q]AÙÈZ­ìTÚPAM8`+Y¨ƒ]�K%K,/Ž / I `&,±b^„`x}B0ÄÒm6¾ôæÄ×{®ß·²s�‘ŸÙuºòËç®!Öîñcwœê�½áÅ�áU
ÉKÃì¤z1ut®,{)et°’Ö)¦´’… l® €Ê¢s±²Ó­ŽÖêó11DM,7WÂæRAM4,¡Ó’“òÀ: «Le¥�­2–ª„�10t–�©J-˜
*&¥zI�²–)¦[e*(ÓJK«´ÒÊP¥ÓF e*]¬J¨Ò)ÀtÁRAe' ¬……bºhIi•бJµL*˜¦VJ¦b­²S‹ª´b1�N%Pkõi­>-­ÒJµqJ¥<N©”ÖŠYI`«¬Õ*¥d-ÖÙ)ÅÔZ•6^X¦S
åe€Uê” €šxY¥V²ÐKÀ²Ué$JP™Jmƒ%° L)¥•¶ÁZ)Ù L%€i•j¥d ›+µ‚¢PŤV#”‰%æ´aò ÊÔB™V¨T†‰*¦•u°¤N©Õ†Fs±Z¨ìå%RAMh4WFCÄ™(*kµJ'‘r~§ó÷ô¡¾Lüö˜ºŠi52qfÀ½eb1­42–Ò†Æ�™@Z%3QAM k•P«¬uú˜x6cî{¿‰=·bîf;wc—�9þ¯®csëwÇãítýæ}ß¾ 1öTl±“kÈL )T¦Ò0Á¤øh.ÆXZ,&˜¬˜LZ¨¬…J�LP&–LÂÄ“µÊ(]¼Äd|+æ”be­ŒeUòÈÒIÔZ}Lú”©¤0ÅGs%Ö��J)˪taÂJñÑ\k`µL¨�UvŠá@dîh­>*•�5 3 �);Ö ]»Äº9ý“©7cÝ5k•Nª—Ìãáò²\V¥Uj•@‚J™L,‡� b #�æB¬�Å‚2µZYGÆRz¡0qŠ�æÂ2–ëÃd)>šëݱ†U†ò“¡r2ÅH˜hR|k•^V)Qv2‰Lšâ£¹0¤N§L+µPK C•a ¬Uê”±XYJjµÑBe/1)©�Fs±sÕ§˜ÍߺÛÍÇퟌM�*–ïßSìçø5îÄžb¾}½É¯±2I£¹\;¶NãNL;±†¤$XP&TLJB£¹ö×%Ö� ÀÄb•@•@Í…±�a6<¦ÚqÚQ¬!k•B¨”)aEEÕTP1©‹KJ K¡0,Å’:a.)¥“ÄkÈN-“‡Fs%l°T*õRjéÀNY©%Å„±ÁV)‘FsmÃæk@¥L¬Ubò�æÂÆŠ%plV©ViÕbÅœNÖ°JµJÙ
¤Ñ\¶eÈPR*†Ž�Œ&Oau°'¬k@ÉPsõK«ƒ‚1!%<'9 `’öp˜ã`“¤=œ IÚÃA�„ƒm$í90A‡ˆ’„·0¡é8©+Ð\:¨¹ \B'ºJôD `�)&ÚÃq/ÊR¬”g ´‡“"�ÚÃI Añp�@‡@{8Ѐ�Hqˆ�²Ç–ˆtPs¥G{8¸¡R`ÂdÓñaù$£Ì`£ÕˆH *êÈPX„.VR6>šK�¥�$8" Ô£=fX™�p?¤dhç) R²3 =œ|`HIÍ%�±àipƒ”íá4 J®ˆ�”a@ʦÂ,£Ô\ (›‰Q²€T‹ÌK4C
ç‚Sj½‹„…ÄŽ¨WB$TEAPJïM"´îàA[8�˜ 0JD:ˆà.œDÉ8Òg$ä4ò .
8”l�‰ —‚'rPau"T@Ns…pŒH@1*¡�LT Ò8IbÀˆjV¨�Lì*ƒS¡ )ŒN˜ÕGiE”yp€Å’ OƒâÒ Å…&t \„ÆóŒHŒhO£Œ…|yÁÈLyN6j D:EX”ˆ¤\R%Ê9 ‘©)q2 ¥FÁå`aLL ©¹@ ötb¨@Ó§D!ËV¢”
êÃáZÀ:˜c÷—gŸLkJPÒ%õÐráH™Ñ¹!
‹DD£¦"F&Ò/”Å'̉5‚‹Q&dh®
†“Ë3XL ¨uXÒ¢=ÎÅBP)™ÈMƒ§‰„Hè†= HÑQ[ŒB4FÏÓ@ÝAÒÂCw�c€!¤�V†“R†¥ ‹ýQH†‰*d(ŒMÁIç@…Ãᳫù€ØGÒNsFè,“ƒ•Heúi0ND îàIP�´Zsñ�Va84E%K­n"r”XÒJ i4÷â¢�Á8Q“Í”(ʪ¸ d‰ p qé ‡ «l ¥ƒ)¥x-Aé`@é`ÅJbHçE¥Ä%‘“S‚ªG†ˆtP…"ä‘!Dˆ4×è߀¯H¡ÂÉ…H_§à„„
<ŽG{8ëÒ�ÑY…��À„Ht46:¸Ò (å_(‹åÁÔ‘ÈF&RA´ÑA,>š+b£ƒ1™ˆMŽQc°H4a$DBT°QŒJ@£’‡’Ôø°8l‡ÂCÂòp4—C‚(ºÓjøXá †Ma%!;�¡I)ÃNÛ �K=,, ©êHm˜˜ˆ8|±‚ ¤öh„`,d.T0 ™“… +ØdÞ¦aa<-U J …₲j�ÉP
  ´€ Œ°´  AŒÈJ¤J$¡å"Ò"RP A 1ñp45"’"‚A‚ՆHI&µã²Qвá�A(°²�%+”�“ §d¤Dd²‘9�Z4W+!a¡ŒFFDHT"š+’ Ñ�,Îdb4&€ˆÄj¢“Ê„4‚Ï“�ÍPŠYi®X´¤•¨%dÊ® (dÌuÑðMm´çãA#!Y$Hd|œ
^æµ8FLPÊ‘“ƒmƒ«M«ƒ0 všgd"9¤‡Á32‘š±àá$pI¤˜&°Åq<Th�ƒLëƒÕÒF(: pVB¬é4A†:«(ãp¦ÔAŽÖ\š«´J@IÐ\
¼ZeLDš«äÀ‡ÇgD�¢´J` xÛ dL  L©ƒ~q túˆN.&¢�ï‡!äU0dVZ|Dh®‚ÁÁƼ\¬`æG'úRr Šaò´|\N>0: •�.¸Pœ"\4—æÒ\ .!D8É,dV«„ )c!£²†Œg? ™‘.d°d!Ó�! !#j-…“±pñp2†LÇÄCF%2"]ÈH´NFsE´NæÈHȸ–�‰Ñv|KCÄH!"¤/+ y2:™)Y€€ÂY‚—‹†ˆLÓ0$HÆD¥¹4—æÒ\šk!%Â�qÒ�AE¸Lœ”&4—æÒ\«bò+'  †gÈ8 àPÁ,dPs‰–#¤*�Í
Vd(L(L‹d#b…À‘’£’AH)$::,܃ÕDiŒJˆ„‚@š‹ã¡ÂÀ†C¬VšKsm4@¬V!�Is)Íõò!qChi.ÍEÒ!4¤H-ùqð$¦£°�š’¢-h“ü€8…Ñq¸�æ¸HôHá¬æ�Y—‡Ñ(42°p‘¤4,o¡‚‹¤*ÈÄx8oÀfã"¡¹LÙDCÇEC�‰è¥bä9ð8@pžæâp©pˆH’–‰ˆ€€ÖBJ@s¨X2§g@1 ´Tsi® –)$‘§�ˆez¡}:˜ˆ4m�&FJ@ÍemÃÌDC„�ˆ$¥Ñ\#Yq“Xð°Ä8�
*H@šK…Ãà‰<]ðD­U'Bc£2(A9µ
ÉjÂA屑qâH-¥˜~¤>Í�‰2¤|"PµðÉ‘ 0¡Ø$@¤ˆS„�¨u°œu)Pe*S�Ñ7�IωˆT„TADe£Q'L><‹B¦Åq<´8ŽN �J�‰†P*M\p�`¼%ÓñqY½ÌAs­€x|Z
˜8¬‚ÖÙtpÄ1I9)M „@ÛP :X à<ldxʬ>+²"¥"`B@"V"(F42‘ "œ‡ �”�¢0Úƒ‚zX­N8ZȤeÄ!BÁ$E5wŒLä
¥iéÀ4„€‚MLǧ m8x|4×IwHD±¡!�
xX…H2,Ö€•�‡<>šëB‹Æ§€´`"jÑp'�–‰ˆâÁ$"a!C…� .Nž!³ ¡��‰t!“ÑR8 ›œL…ŠÉBFÄ'N&bS€“É@è0d”#´ÐÑa8ElDT4ePÉš®6,QP1 B؈Ð\«�QFg@‰�–�†‘ 
ÚÃYRj®Ìh'E ¤¡NDB$4�bÔÁШƒŸ‘�B&(d´‡£Á2@;‰‘æJ‹öp ,Pñ£òq9‘@ÜÃéXäÇBZp<$ îéàÊOHø¡²Qy,2@ ¶bÂÁ`9 ¦Ö
1uhI2Š�ñp8$ ÂJ©=Nv C µLÚÃi›V7¼‘áJ¤=˜’ªCAä¡ã‘°�!5Äp2†Ì¦@FÂÇÀø ˆ´S„æj-§ˆ˜æ9Ø–&ªjñ´|2/"£ÃÑ5u&ÿtNœÕêàƒqI™8Иv3`äá4I{8bñá,ÍJèDz)à&8"º,­j.NÅÈD¶ÏG![Á ;Z.ô`@Èèy  X”:!†ÎÃù“öpH¢ˆEéíá<†Nˆ˜⣀„¢hÉådPÊ͇á?
™#‚R¶—ž4'$l”Rˆ!Q•�ÊCÚªÐñ€  ¥\�LäBÁ J5×K;PÁÒÂÊÉz´‡³Ê\8D˜BRJ Hè»P@}<>* o�8||@ ?:"¼¾àO"×ZI(É~_b›†ˆC‚’C!ÒÁ„f�  å±!d©°H4QX$ŠlŒa ØèàB’Úx­ 
NH¨£j®ÖË3XN5Fì\Œ:¸úx@ÐѨ„1J(8!aBÃHsáEDI Iy. t!B@CÉD*44l6*¨¹H6ìé`vJ&�„
bG°ø�B@&8�Öh�ÔÎA®(�ÚÃQpaeR#�ºSpBBÖH{
NH¸`"¡¡¬¥Ó"ja ÁD4òbPJ
ÒF£YqJ°ø°.R/Ÿ�hi^KádF 2ž“)!SrÐaÈlì‡!ãàâád*J ›LŒ…�‰Âi„d#¢iFô²¡
ŒŽ˜Èð؈Ð\BÏ¥£3B!ýˆYq‰Xi”²CbZe(D,gd"\8ÃÄHFBhi‡qðø�¢ãÁ �ĬB(�
^¼Àx6œÇI¹(� ¹Z PÃ±È �Ép¨ˆŒÁGKç)C¸è@¹h>)�ƒW"BÐá}20 -)ŸÑÅGT Ôby2žNz¬D.X YÔ\¢=áèx<‰Íd>"H«�†Ò‹AHE%¹‚)£ÔF{8*™j<<DŸ
#&£ rEãà1…&åT°Éè<�KËAŨcC#qrxƒ�Í�B†¥ HÄÊË i�TL -]­ZÜÁ͛Ĭ@P³rH�°V�‰Õj5`ƒq‚š !dO°µ&¸RR‚($˜ð±P7 0æ¡O-Á•Ö‚˜(<ð-F¶d' dYy¹@“ Š dxFxaJ‰ð3ÀB„ &°s`bS.&ŽæápÀy0ÎçÀCË´�J2…DÈpF4™UiÃÓAàóS! Õ‰0qx>L(–ÏÁIJvPt4}à‚ŒN«p9ØTÇÉ(5W„*F³1ž–ψIÈô‰ɤ2\¦ÑÁT;ÁШ<1-1-:«�Zah ì€< ´MÃJHHBHÈÊ7 ! š+¢À¦ff„@
AÉD�+H`!áD• P �L€@+¨Q‰ŒDF�ÍÕ)¸°4W‚ +C…ì@¨ aLJY‚æêéé9h'$½lŒ^6œÅ•šˆÝ4 h€(à`Ëb+^`žÁj®Š—Š�EV´ƒµHˆŠFq …E¢Z(((´BVCD+y8$‰…åi‘H,Jb9)ÑÍ=Ñ•‘ŠnB¨¡ƒ�AGˆu°Ò¨>
!‹<L´R mçA!fe°ÎÂÆ‚¨ècbA,2žƒô
ŒœÁÈä$”Áš·!ÀB„­$" Ià“ˆMBK¯�¥½ñ , …á£@ÁhU"‚&Iàp a6„$°ˆPƒ‡ô" ,ˆ ‚ªˆFBDškcÄ�9ÎIêÁ£ƒê¨È
B*: t y<�:ôÑôc Áœð`Ê$ Xq‰ˆ}Lô@Kat N-Ÿ�Ì)£P,u`]ŒL¤„A®ˆ€@ËBI·2Y™p`FFº ¹Â3B „‚R‚`FF##�ƒ‚‘‘ „DXAXÁKd]…TV–.¬ ]X&œ�0Á¤”Y¨,4›±PY$ h€à °ÐøÄZX¨:1YñR±0Ï ¦"+^6Ü`°[ñ’P±i0XÍUñ¢S‘­‡ŽðÅ
R0 ‘PËvH˜ Í� S'C62­OË@­ŒT \6ÏFT
�Ldhd"U "%œÐÈDN”dD&J$8J
‡CÈ€æ d@CB!›UŒèesòii��‰ÔKLI‹JPé_æÁ@‘)p-# Å7³HD¸D_8 2ðéÃIÌJ$�5—�é9²–V‡DÆ«¤˜TäAGÆJ°&
ˆp�Ó,*€ÃÐNbV^ƒ°&Y«Çq`ð.¶�8B ™Š–ÂÉDhYÈxhYȈ¼Š‰WÁ�)ÙCf¢d!c2Å�Ñ\,,Ù8˜>/!͘FLt5:i  GGᣢ%/XNÿòò!�ù ˆØ”‹Ž_h
Ôi d¡ŒDDBDX( ´‚-!deÒ›Þ4è¦!¦ä!$DA› W(ä
‡ WP%¢y@DF&¤)hiŒLdƒAX Ià¤@F)�ˆæú9Å\|Ä}äÂÊ><P:FNGHLÄ AhRÊФ”aŒ‰æÊ h€ˆ‰€yS‘/
ó 6¦"!,¢â¥‚À"!bTÏ`Y Ñ -,ma‘hÂÁ¦E¢ŠІÂ"Q’æbyZŽæjA´ÒcÁÃI%±°<­•�P¨5x.#•
ˆ–‡3b¥$R#•ë]t¤ÂÑ\"QIBPšÈŒ<ѪDT "%¡‘ Ղȃˆæš(™XQ�F&P "2Ð4—‚†Â*â£�‘‚—ƒ φCc³p ‚“˜UæAƒ +ÐP‰É`È�…$X™�(D ®`$£¹
*XX«”D4
HÇEÃA"A^­T
"Z:ããäÀ1€$#`µ"ýЬF#į̀D¤Ài8 2”ˆFØ…ÃeÓÒØÙxÖ&#À%õàáh®6±`È€\<œÌ†ŠÉB&&ÁÀ&ã¡b²�é(YÈà-dÒÁB!cÂð ™ 'Óq e!ã›Lë/¶¬Htć6´äB¨õÙ‰‘’šK¤*R $ù± 2:&ŸÐBv$Vu±PD8"Ú@+Ø ´‚Û@+™– ‰„0ˆ„Hh‚< hÈ‚‚ܦa5×Êde2òìÊDsmV°eàAÛ¦aaÓ°‚š‹� ƒ „% ‚Rà (a”š aFF˜‘‘‘‡@ÌA)9#‚R",À ¬\š �’ J 0+»ƒ°¢�„$€„€„PŒL$a`Vp#± V†œT¯ÿ)æž+¾÷elÞ/1}îõ?Ì}· ÖäNçíØö=ßÕß|Šú­N•¿%ºÇ¯ÿi{Û¯[ÕåçbþÿîZÝeëFÅÔùëëÿõo«‹éz?×Ê�-³WÓ½×¹6d|úß·¦óuuÙœ/–»éVqÛsTŒÛµ¾cåÎæ¿Ø;|v׸ÛÚù“Ù-~'¶~‹ñ{út¿ñ5w¨˜;Ôå\Fö¦Èûgª¶CÅœòËçöÈ˼í®egóËïìÇÒÓá{ïêZ2*æéÚí³¾\ïç–‹Š½tˆï=ävßíʯ½Ù^¢6æw¿ï·—œùœwcDÅRÛ}#êâ·TÆþ~k6ö¾§¿§ê6Ó{Ÿërëy¥¸—ˆ¾­•÷1yßy*£g6WÆ^¾æâúoëÄüDìÅüöÔyŸzºj·uÍ�½Ú|c~üجùšúKÌõý¯w÷··Œ9×úžs/Ù=Uý§ÿÒ�ß{s‰í÷¢ëúc²ê{ ÿeº2ûÛ]mî_^/˜+ëò:gDï×ÏmßsÍt}—¬Þй;ª»zcçnÝ:ÿ˜©ÍÝ�Ãdlý¾‰Î¹]¾uu;[¢:V÷ôås}úËþØ=÷œbë|§ÿz[ê'ÆøÉùÚjö>‡O[_¼¢¢K}ùÍéçõâž:ovØ6ÿòCÔog÷Û~?÷=Ôç‰ïTQ½å~:M—ÜXŸy]:6{7ÏÏÿöw©ùÚã;gªrúû×›¯½wÔçùüµ|wúŽÝûGnìþp×7Ýï7ç|Ó©:F—ßÒ5?ã;î—íµ;æzfævË÷úÞÃGUý–ï=›1õ·ùºfÖô_uÎÛsßúúÍû3÷Yw¿)¿óVL×w�í’µe¾«Û×Õ÷Ùöùv*&wó7vwüºíê<Û·s+ã·æg[v_ÿ_—ŠÜ^=ßۧ鸳¹tÇùÞ=Y¿W9Û{Î_·ËmçoüÜ»òk‡­ŸSÇüoÓa·÷\ogºCì×ý¡ûå÷ömséüØQ±»½:·:ÇfôMlNtìo¯�]ûkî¾._¾_\nÿÜÑí¶Óôl¼ßÏû½wÚÔý¶ëWäUoú¿ØËÙ˜?ýÂÑ]:~ë®%ºìy+¯S§¯á7öŽ““¹�·u.W®‹uçܲ¶:>]lÛœ×û2ÿïó†o=�};ÏmŽØ»î~÷×ìíS5ŸkŸüœS÷ºû+c‰oÝ3;t­µß¿FÍ–þ®Ý¥vÓíL§¿Ù¯¨M¹1q_¯ÃÖçÎÜÅv�»ÛÄõmÔÇ™íÜ£{¯±¡ëÄÜÓ5Û9ß¶ÍVVöåÖ®óºÀü=×טüÞ:ºLnv®¡w^ ÌßóÍ×øýùC§ÝÞ;±vÙ�{�˯Ó}gcwÿœ“ÿ}s×y¥8åMEtíu'æôýýÓásûgl�k÷ë-»û‡�»Y™›{Æò¹›“¿-w³óÅÜ}Úô{«è3«·ÞN,·Ýõb{v×dÏn®ËÍËî¹oéŒ%®¾«ksCmÎ×.3}s;Æ"¶"³fël�î;UÎçýéÚ{ML1ß9û5wÛ§¯é.ûµ÷Ô9îǯÝás}©˜Í!ösÊíËÚûÚ¨º¯m²c»ª¿Û|��ìYŸsý›�¹13¶¾š¾™Œ wsÎ󳟢kÉŒ9}üþôé7ß|îìž.Ý6·Œ=::ûó|my³[]¯bËeLÝî¾ÇvmØ›˜;^_Ö÷^ÙÝ}£6¾ðç}Ó[÷æõ‚uïkÔçè^ãdlQÛ¹kåaÏói¿¾×�›½Ùß:mî6±~¸ûíøV÷bÿݱ#º†nóaìwû»ß5ìÅöw‘·mobêî™»»›óbO{ß{׎›c}þ‹Ì‹ß|]¯¾äLîךs]ö|güö¹‰=gÇÞíy±mÝÇfôo˜·_¾Ld}Žˆ›ú˜ñ¹ó¾svŽþÔ[?MŒ]ò?+{fsn1ç}ÍFGoøÖ½tí¯ Lu3;½“ûboß¾Tn¨ÌíŒê«ûšþòSnôN®12¶¬¹é •Ó÷2÷‘“¿­þ¾º6—윾Ü�S×ÛqsäÄÚ=ôÅ÷fŒYŸ²z»öoûÏ|ÏWý¥f¿Þ—ÞܧËN||lÅçv[Y½¥ob¾¨�û­êœO½¹ÞT×ít³!o^)nßû*>6ÕÝ}¾ên½-nbê˜Ó5.ësë›ÿÓ÷¿Eõoש:6õfvù¯ÙñqŸ6oMìõK×ÎNs[ý=O׌­Y]÷uÿs×ÿ‹éœªsÞ™ÝoS»ýîÏ]Ä~±ÑåûÔlš|�vÓÝö¯?—ïp_;vªó;?ׯ­jbÉïÙ¿úûí_âcNÛ^5÷=Ç÷8>§žê˜üÍ­&ö•Ýk_^æ÷¿¶fM¬óá¯{ª›�šÌÍûuj3rj¶÷ò»9¶uMl]ýÛÙ�³c;ôdoÿšs÷ß;÷Íáæ•ÂoS·¹nbº�¿¯¯Ïû]Õa[·‰½nö×è:›ãê¿Î–oóºÀš?Ý.+z{]ÌÓµLvÚoÓ¹Æn1_õDu^lëë›ùŽëͨÎ_+6טï9/ﯷטüüß¹\—Í&¿~ŠïùwcÇLL~¯¨¼�óyûÃônîa¶óTçñÛc¦{Fåîö™©Ž®¯øüµÖLõw—ý‹Üv3r¿Ou™Í7ô>Wõ½¦³¿¿ë|¯¹1gbœë�•ÝûtœÎŸ½x�Yõ{ØíÜYù=víÎqûºÀœ{]lÿÿçýnÝí6÷œcÅçèîš¿¼@˜{üœý7]cêê+·oL,Ùq;d}ßïê¼ïysKÇL\oüöóJÙ|Ž�»¹m3ÓýWnÎÌÅôOמfbé°¯¿dÔmä~Û˜÷÷)ãb‹¾nýKV^ßmïevÏå³cnùÿOŸË‡»ží;×èïžsî’SÍwý¹íZû^)X;b*ó¾_W\ämf‡ŸïT¢&æÉïü÷ñ½cs/óJÁœïËGÏvîåsd~í?ã]ôW\et޾¾-?sî9Ûºç°ÿ©/¶ôÌëËú¨ûnóe¯KoÞ™WhMF 
×Êuáòáº:ì5â¾Ôtîøéªìï9ÿ×êïý÷?VïÞ|»úŒØÞý•¢É�Sµ·=^LÓ9Ó½sÜmÙù½ŸY»m¯k/>|Î}6u몊îýó7ôÅœC}‡Î¹åï•’Ùª¯]Õõ}w®¶ÎÇ:û©[f·íqùµÏf—YßÝæ·«;÷ävìžcg§ÏÛ®';|Ü/][þ+…·�ÛÛ½u?¶.»™³Ý~ûeìý'3º—ûš»ÇöùËÇnN×xÛu¯éÖå~sÿ+{Œ‰Þ¼Ú¯µ2æü¯nWŸnëlqõ9ñiódì5>ÍÜwúMßc¿™½¨ÛëÍ!û«â~ö[¬Õ_¦kîýÂòb}°w­\™ÌêØÚÙ×ek{w6×ïºÀ~Ñyæ?äoü Âöq:~ùš¿=ÇØóºWçÐ�?cÎiâëǼØòÿJyÎi;muí-cûšywy»ù3¶nùÑß•‚=ºÌvî<±=guï—˜Ø �±‡î_vsËw,Ýû§Î�ïí›1÷÷¬ë^3¶ôE|ÖN}ým™™Ñ_î¿Û×^sø�éýØØ\;Ö¼í¸Þî´i2£ÿºwïµ}éPQÑ©·öÅöõÃMwí´i;ÆÞêùŽŸf{½˜s�¿ñýµn¿R°N—šnÓQóbùÖ=1ù¹Û:Ǿ:2>¿¶§‹yþsžïŸÙÒÓÝm×Ís±ïvùÛøÚ-߯,ñûÙÝ3¶‡‹¹EǾéÜ?ÇþÝêóDÝnˆ‹©KÆLUVl��O>÷õoª¥äã§ìù<ÛÛÇœŸKÿ‡˜ÛÜSì-&~þÃ皺ǞÛó5ªsÛøðS=Ýkø]`«ùørUÛç Öºn7_[µ-.¦ËïÔ[Ùaã÷Š!–¬ÆyÅ(Ä\Ùà !^ /ÍåðÑZ}LKH¬ Q|\`„tZ /Ô–�ØæB¹ÀÃÆëVì5±ç¹Ê(]¨ &L2/ÏX(Œö�h.Íe¡¹¨ûBY| ‚¥"e8Ò§@+YMh€ð™8<«•æbE¨ jGÂrtÛ³â€0˜´�j.ÍÎ ±ÓaXèp:�ň€UàtAsáBgA¢³ÚlDì N4WbÂIBI�@DÓ\œ„„NÇålIÃ@ÌH+„â�€ØèCI�@‚æj™¬ ‹¤�„Hh£d”šk!DPÊ4àp° #é’z8�6¦ÏFHˆH¤�AxVäm”4aâL˜@XúhˆRÁÒÕŠuÁ1Ê2ÚÃé4¨F¹
m 8š‹!£=†VÂÉPx€¨@�j!›…'£ҀÒâ… ¹±h‡ãàIíÑtH­d” æl+%� !ê9`@JNC'p7VÛ ¶^6L¬ŽKHj#Á£á„ɵ:škcuJ�¨À� 0±Ii�4xH„h¡#*ö%¤"\*�õbÒNat¨ ãcÑ¡âŸ�#ÔÐ)Ù`ÌŠéS}gWgoï-¶øË«ø·¹¦cVnÆR“™_ëßíwG^ôÆÛØCtüÌŽ}Û{bŒíþî±õ5åÄ^'#¿so¹¡[Œ�§ö§¾Ö†›(S7™ÝnóÕÜewžù^óUÌñs}ëÿÚÔãÔ}�ù›Ø–õzÁÛ=ßµ¡Sì•S³[³^¥ì6»ºw�š 1ýotvžÉO·!¶¾ˆ 1ué�ßßÛÄ:õNìDnˆíûTÇçû¾ûf^ Ìi·?^ldÅlꌹ¯âjsî°çü»_W?>cìŠïŸªÏµ÷ŸyÝãóö\ö:ÿçt�¨üÚ?Ʋñ=ÝNçßž;Œuß:ïõt­ýúœœÍ¹{ÓÝ{ëÞÃn¨½üšÑ=§ëÚ¶».°}fçÔ¿·Õþýen«}Áú�ïTßAîe>Üý¸);̹§øÑŸ?õí—ú^wÛvXæ»sËNŸãûnêÜõ‚ùc›ùV]kÇ;Þ·ýÊí9÷×ÊzöÄ×í¼©6özõ¿3ýY]slì•�kîýݶv&æûwèÜ[/]1¿½9v¬×=º×î}·×Œ%2ûº²_ ìygúSÆæ˜;›.c¯¹5q÷-·TGNw¥¤¾÷»m²û[Üw½[#c¯¿ÓqÓe7c{w]`­øÝÙwݺæ^_»ôþ÷ðßÂÝ.»÷nÝŒñö{_?§-·±vÜŠ½N³ú¿vCn¬ý›?c»ý‹ùÝîí¹ùág{�±ÆFǯu7öø9s¶ÖÆú¥¯'¿;mï{uéÒ™½½i7ö›ÈÎ÷=wsïë‚÷™ýû9tm¿/PósëºÛc‡)âg«¯{ç0m\Ý|}‡Í½1fÎöçôÆït�g:lÏ5¶ÝéÐ=ÿäöžÃšÓsÓ‘[º~®q:¶Èν6ìÆTÛ¹çZ«_/˜çs¾ŒºÚÍmcù|ß6º;l¼~…°}·î_²ïvcþRõ·uö¾L×m½ÊÊèïû©ËÎwoÙš»Üp&¾l¬Ï­ŽÜ û[û3�ç7^íÏΗÚèÍÏí.uÑ9Tü§Ûü¥¿v�ø˜ŸWŸ?çïßð}Ñó­¾öTq›£êuñÖ÷ó½{oÏS¯—fvnDMPã:vûP½=~NÇϵkÆ}»ÍŒþ©ÈëæKÇ«ÌÉþй¾|}í½§�®9®s®ª®®÷c×—ßÛQ1å§Þëø´Ûm¾síÚ7»ÄηÈÏœî¹7LÅyß/cKEV}ºO¿i*æ\¿ožnß³{è>wÿÝag{Ùþº¸®S›SeFÖt�Íî¥Ã†ÙïúÖ5zÿâë§�ìXSÝýëºï§�«Ù«ˆ»Žwúÿ{ɪûœo+ƘûÒÛe6·ï½îÝ56mż±Ÿ§¾öÔ=ªúcÃÔ×¶¼;Ûó®&>vìΓ×›òK|ï~¹ý*¦î½Ói»î×tLn¼êŽßS|ø½ìÐm¾û}Çív;�k|º­[Û){ÛvïšûÊÛT{üÆÖ÷Þù¥»w‡íÝÿ�y­\ Deǧºýür�3ã³cÌmtî¹¶ÿó³'ç÷îú£úkô·ø|ÕíçówóVŒŸ_;þ÷wÝÍÿ¦N±§ÙÍåã‡éTÕù&ºö›éПb~k§îŽÝ¶º§o÷e¾ô·ëü_�êÛþÇÆÇæ˜ÜûýÜžûçz¿¦¬˜*»ÿvü0ÿO×�¨îÍ­b¯Ù�>ê{ûÒ­:솫Øc*.ºæ;uÚXë^çØwß•ý¶Oå·ï^Û?Ô ÔÝü^7MTnfm‰©Ø&ºû/.ró|÷�3?FtGþƦÛ�þ�ÛY�¿tvˆÌ/ÝÙ¹m¦b.ß©»§ïÿ͹خѵÏÌÌôg§ =5¿kòâ>ö_m×pS±ž/[»N§ßé�µWùùas/±|ºï¬û—Ñ5çÏVÌ~Ï쮯ýKŒÿ3]¾÷kˆŠý·óo�Óõ¯s¬ëèý­¿].ïn{žØ.þ¿sÿ²i§b‰ÝÎÞØ{¾�ëßû-=1—©×÷usœŠ}úæû^|ê2qþ¦ÓE×鞟¹?7Ûo¦³;·ïØ­»:»æ}¬Ÿ‹¼ÝÛÜ%–éß^S×iz·w‰9õõm·Ž³g²:Þ§øìÉïSÛzbŽÚ¿¨›Ù<“Ûi*²kÎӽǎ­/~Õýs»nœÙí\ÿc|lù‰9D§šúO"?Ç×Ú{îßv/*æ�ÿo__CßÞeݦ˜ˆ3wó›sé¸5¦b¬ï].6ò7uî³9»1õfe‡®îíubûÞîkÅvM3Ýê[×}œ.w›gê[×úX¾wêü5ãþ{®“]~sM½@¬Œê^*ÖNý_ê:×”Ó_9W¹y'öÎ?ÿ5k7ìÄçlÅõmêÓ~îçœß›ëTU�óöÜÖ×Ò)Öˆþz3›[uööÜþëÆþoÚŸ˜Ï™±y¿ü~ìΩÃTlÄæU7yûå³s›ÍÛVÝùâ»koë§êÚpQ±î_åÄìîÆÜøoßKÌÇØž•îk¼¨˜KOdôÇÉŸûÏñóåçöeºO×\ϦŒz�ÞµsŒíšc§Ü×Ó©¦k?DnÚ¨¿ºvοӵlÅÜif®cÎçÊŠ¼íY±ä|»�­˜{íô=:v˜;þÝLÄnéP1ýU×Ú/Û~øéö)»æçªkÛUdí·íëMÝ¢î¿Æ/]·Ñ1÷>×Ü¢£Ûwn›cÅøý¿ÓÛ|^‡�ø´m+–øyÙÝç{«í[1·øz§®kwŠ©'ºg~ok‡ú�¼ŽŸ?l¯¿Û±ceôuÙ²Q±üÔFEÜw­�b®Ñ3=›3*æ¸ÕåkìëçZÛ2êõ‚es7»KÏÎ~­®�¿ÓöôBÝ9}îm^/غ·��=Ý·dÅ|ù_1ûýêãÏÇVׯ/ÿ©{ãÛÆ¨ŠånoÿóÌ÷}v‰�S£zv¶UMÞ]ån¹š¬ˆùÉ­[ýq'¿Ëæ¬Ëêî<›[uÿÍØ»ÌMU¿Ÿ_ßCo�ªÞùŸý°·-§§¶C÷©êÞ½ånÙ©®�÷c¦ïfúklŸ©éø1±1¦º³?:bÿSý÷ç²bj#·»wsL}÷ÌÞWOçÅ÷ÏyÿŸn*¯SÌǦœú¨Û¼�º¹o÷q?7w©ê�Ÿí=u_™Ñ?ñµþ|ßùNÑ¡{ÿ¹Ÿ˜Ýúe»®b¯ækþR5ýݾÔ+e�bû»ÕFÝæ\ªj?OduÆ×ïÜv[NM}ý\ËMýþýuº›jê®wöþºÆ™ºÚŽÙð¡b�{S½=w_sïi³ë‡ë­ì_WÛcêãß§‰ÙXS£ºÏWƆœêˆˆœî¤/yÓ±#z;Ïî–¨ÉÍï˜ýiSU÷˜ÎeûÕþÇí^÷±qkê:úë§Û¾Õ=ÇçwŒ¯a«s÷Þú¶z[VV÷’Ý5^]û°Ý©k¬ªüÜ8Õm§Ûäͦ¨¨¼ÎÛ»ù§[ÎìÎÇÜìr¹½K}窈ï‘Sbwvª«+nækÝ©¼™ÝýݼSÿ½¡Kým÷ôa¾×Ö¥ê>V]mÏ¥®«÷/7ç©)ívw]¿–¸û�Ý[›2cúÚñ¶L÷ÎÛ­os»G}ÛRQ1Fw˜Ü/Ÿ¶^vÈïŸñ_»õ†»ë·³!£^X¾û;c:ÄÖº�ÏËÝžÝz¦;~sǘçºå¦ŽŠ9E|^~emëŒõkãº~.;Tl›ÕÝ¿Çï}ëÙ¶Q“=õ¥~ÛgŒ™¹½EÅÞ]±½gì©êrk¦·VÔÅ÷ªú²·a¢^)šowSÝmÛ—›Î%³»Ìænï³gó;¾÷ïXýav~?GNlýš_?:líÞ';úã×Ö1öùTù½Ll©/±]fÞÇØÌí9W¹·]³k¯ëî½o›«éé�ím‘1÷˜ŸÓüìæùÚ%>r»ün¬/1ît�ß™í1çouÿ=Wì½sН.וŸöã|ßÞâs‰Øž/æîú9nÇÝ¿äçŽÙSÛë—³;û7õÅr;õõ†þ²u3ÿñs¦{nüúe·w‹9î{ˆþÙúíªk>»þÄÅ×=72¯¿ïcOÇ^'r?tœ�æænf7MTlݾÇû±¡k·üí:Õ±¹~õ÷Ÿ²sï?NT·«êï9ôæˆz¥¤cu½èn]öb¶þ²ûtïU=uÛþK¬ÿ�óãÛæx—Ÿ"7õ÷^w·¾uwмïÛ ÝKÌßsÙëœ?:~�Žþ\{~ÿÞܾØèXyß>÷Ù›ÿßýÜ{üֵܷŠùÒ=çÜPóýtw�Ù_b¯û¹X~ÿ{ûO¿mº}æÔn÷Øùøaºl­ëšO_§ç6ÆÅ´Ó_2+fK~‰½Tt™ï¨’t¡X”å0ŽcJA†fˆ¶ Ó (‘Iæâñ¶Æ\D(F<B(,‘‰òX0$9¢0Š£¤œbÌ¡³
òn/GYé^é²µN]3ɵüo펒¤sö‘Äãkïÿ<¡#�˜„\Úy{{N6§
Cà)ˆíç} „A‘‚ÒͪĻr¯]_m8ÆuÀˆ‰îvº…­Þ�¢=!(8�ÜÝí´¦%˜Ér­�Ÿ˜§ï@…ábë-öY•ZjS0ê“«„ÞGeýÅy4 ™vçC~‹^RUÿÖô¢8 ƒ’:³“Ñ‹vV”"pyÌI°“øä‰ ›¶5· $tÅ<Tì ·™f©V‰;ÎB¯JY[ŠÁÃE�¢%à­õÊÒšC9-JG̨ê-â¼'_íÀw˜õ˜‘87é&¹V�Ò?@\Ó†ùÔå °vnŲ�›Ñî2ȼ€!?ðå¹}´Ò³Y¢ÛaCØ:¬Ôà�‚?vP�xˆØ!¶† O0/D(Šü¼he±k�íßY¨-zä¨z‚}±ÉU±ÏÝÕq½i!!öþ>Ãu?Ò!j¨æ©Ãˆ…º|ý!òWm3$2’o3ÁP [kÛWÀÕ°£&û<NA+¶Ð;ÀTÍ“1n¡R»q5žK)Giõ"XA]sx�Óþ)Èus †P¯[ 8‹Ý)×]8Ÿ?*Ó>{‹
q: ^¾é§F›(Ñ—�¹„2ÿ±¤²®ˆÙ±x#Ž8õT¿ÀÎYpü+³\G›Ó?€½j�ÁµÈÌÜèiÔ ¿óÍDÓ„wvi”ô™jÚÀ“î=@ºi¿vùKÅCr¾ þÃi9º?#òuE
-”á0nÖé²9\ÔX>b8²$ß§ÅȾûHÀÐÊâ¨y¢ÍËÑ�Ï}ÒÍy”É®t-Ý%zB:áju +Ö$}v˜°ë}_!8Ÿ@’D2PO.
ßÁµK½1à‡¸ãÈ «KÌ4_ÆQ9ÄV¹ÿB¼…› ÈÖ¢Q­.R±q¼ç"#¯íº/†BÅè:TÑêªÿiüU/u™Xׇn½Ó¼N82wä)¢‚ÖCÔƒ Õ(?«w¹!<ªàâVÀ‘×.îu²Õz¯l޼<»3i¥(m#¹±Aµ.(¶èÛ*¶@–Ü4ár±MPHHRåŠôm|»oëFéÀeqýiw‚Áéj 6‚/íS|&À´Ô˜·N¬J¸pìÐ[3XÊUÙª­É%Á¥g°ìãïs ×^ôä)4ŠNV
ey�Es~ØEÿëA…K,±‰9T ƒH´°ÊSD_àª_æR�¤öKºÓ|ËOñ 'qüÏ\–Sù ´2�Yƒ•‹Í˜@Í3¹KeŠinÂ×¼¤QÚèÎ c
ok”šzœjW˜Ïƒ
´êQ:a—0–Q8«ä6EØ×{®b�g„pÜ�@¨žÜ|Ó MØZ¡e„¦àõ4�ZÃú‡$ýyÇ ³ÂÊS47ëˆ6q{ˆ,}Fü¢$L3QS�ÇhÒjÚ`²Í¹ f»xŸY¾£n=`ïOŽx*Q\ðï»Wãâ’æ &†+ˆ–í8X› Çm«WOyÑŸw"´èùɸD¥«;¿¸ü�%à•{õ.mŒw&Á7µÃ“§" ¯'̹[ j_qû•üœ` ~”$öoÀ² ûéÁ.rèŠË×z¬{ÔP80T`iHw6D ‡‚°N~IŒÏšXÚœë± âô¯—˜™ÅÁ� ŠÉ*¿rwŒ{ºŒØ}í:e‡d²ø+ ±��„¯Û+ÿªXqH p½êi^M�(•¯"8z×cô@)ªt¿fÐ+�½ò“E*ˆ=K o�R Ë‹(—EàîA–ðä(ïÓcue`wdj?cØHÙNˆ; ‰Ÿï«â;ÂL¶…ò•VIÈêFû+a…GÝW@5ïÿª&^kýª½s–€í´ù¬ðí~ýªQþ)W_¥ØlNêäcûnK,>‚¾z±t€.Y�éí#£Ò’±™zŸ…Cº‡k´ãfÊ|-Ry¼R~=~ö¸è¢)f¯scν6z>4¢€Ëè;?$0†Óšáq ­¾Áem[ëeóÊI"Eèb ØŒ.U Љ8Ó�?О¨C ˆ‘“ªËɲŸÌƒ²:_¤ü@ÕÙ1¿Ð�Åú%ÎwüÅûžYc•&¼
6iª£&;£Ò´Bïã Ù›ráÏZ”°4*�OàÛ@�zœ¯N®°µÏ¸´–žÜî6Ôû8ՔŶMäd:äÕÕzP(X„
Dƒ�U:Kª)´Nýö¶Ô ÊÄòkwv3ºÆvBÕ#hh=bëéèÁlÚ}†»“¦2’O’§Ùia—'êlš˜d7ß$ Ÿ‚�  {§f/¯ôø¹ÃÈY¶�ê**_Øj¢¬2‡/‘PͧÿÐ.|��þ—È^•VŽ·ÊBز¹FùCrºêÏ“ÅÒ³ø0ºŸÿ ^ƒN€Þi‹6þ<H§÷/èÕŠî©j¡«CsrN™ªîa„JtH]JœÜ¡9E¥ao¢êk©]Ö�ª¬!
¨
‰I®ïS�v<ö²çжRj Î9¸Uij,ñR$¡9H§¤¡.n—õ��í–·}ºt¢Ò Õ°`©À Ö/î!
ðÍãrZª¡§™+ÐKËê§Å
°©Fï¤ZoŽj-�sŒªCjAÑ¢ú‚Å…[jî;ŠêÙ½©½Ÿ†ÂÃyÊwŽE©úwaÓÈ–.‹º
Q—eЉÏÍcüä›ô“nR±Ó2ß ¢ž ÍBMãU]—#¼æ�u2©:Jò†ÚZìÐÙH‹„7Î@ðJ÷~Z_§È?ÊTÏ>N‰l«%…¥êWÂmbNR/fw “OÎ�žÍÖygÅËiWêÇà¤}Ô$Ý^]m`æVL©sdÎkÙGljR•:5:š
Å­i>¿5Ö™Œ3ðSÆÞÇt^P-
V í@nqĕѡ®}FñëÈV缈k.Ú£&H "qZGËì›`ŽÓÉŽy&tÚÆ�¶ÀÙÐ@ö¦¹Å€Ät¦MÙÀNohŠñ�áDL,³Ù`ÕKf L– Yhn+ 7§›f}"¾ ¹ÿ?…ǵÃLKM[éx&Ý:Çäôðó„*oŠºATnÀëÖît Éî¸^ͧÿVö\X0«¦VE4·\÷UOT‘³õè@ëzU©€6½ÕtϽ%n7‚�Mƒ>äd�~W)=”eK;·èAUã±®4Ž]‹«–ó9pR]"S´:ã(±”Ò;zeHÝ61’ù“~vûq……0›?·ßÒå\K£œ³1²…Ó¦wÝ:jº@×nx2r^<å�§±kçód»%4ôè5¹4ï ûþcW‹}RÀŸKK¾cœtCÏ0|�ü”«LHâ#jåkK»¸pH çœ@âeiÚû>ØgnGœ71Ò›~sºI2XYGP¬K„˜œÃ”‰Â³&2û¼”÷ ²^†…T“>8y´TŽx]ôÒü0µQ!ß:·(Z#ªHní ¦Vß¹M«ÓÐnUVþø ÷戙K&=¡Xµ ™ŽMLz:Å~¦+9¾.65”¤.ò¤~k'CU®”¦ÞÈ9V›Æ¤($ (4tUà fÆ3 �iDsßHúŒJG+oÒºúZ¨NÍè—5åYl®*¿FàÌIãÀ«Òìó-†àÑ©C—ØS¹ðî“ ™–D�ƒ§Ü3lV€{ ž°:¤8˳²ׯÄý'FærõÐQzÀøÈÔl¢¹W0š`ðÿq±'¡½R—BOËZVv8÷JÑìæ§©cjUæYÍ®$šà»n¶€Lã�æ€"“:
­]žf½¶:Žôr¢ÈìÁPc }‚¡ýÓ°¦zBrI�èžÁ@Ò«@ m!D êˆ¸¦D ÓˆÍÜ€Öähâñ‡Š)8&—÷“ÊRLì@’ý.š�é¸\1±;&òu¬bÂæ®A–Ü—‚3]vÜ�ɸ¬˜Øâ’,Ëâ6ÔêN§q"Åä>ס/C—®˜Ð“1ù’ŽÍrÅÄ¡§ïÑÿó@’¢¸‘~%J;Ï…yI´�VtÆ Êɧ~܃þ\‡8MY%œ•ßMshq¢¶rïBœ“ãt¨ÒunX™Œ‹Ìi‹aê¸SžQ²Œ»RÉ™ÀFâXŸÌ“˪JRê|È8å :j%žÑù³š¾ï~\eä›YRÌ€'¸Û#úØ¢ nX6�6h:F«KI©ï
*y»ûmií‹¥®—tX3Ä e©P®P,ˆƒ?`1Õe°ùèj7±àôw:y‡Ö°À©`‚®,Ar׈Eß ¶œÙàÔGã4e—�P€è�¬ŸhF:!¥sÅÞŒVÅq¤Ã`3¿óŽ õ$hFŒÿè‘ÄE'eZM3ä�3ðÄx3’|gFxEl
¾"7<zß?ÿÎÍ@02‡Ôƒ�U¦f—AìðSÁ#’5ÀG`ÓQz×,6)ü¢« jµ©¤FŽ4G?ÂY‹Ô–\c% 3d—÷tcûÙîñ—8ölféØÅWf;õ”Dê[;e¿÷,ìDãþÇ 4:åÛÙÍá:iLý�xޝþä5ø‚;“�£Ø6èñj¿ÉTEÒ�yCøìêžÄ{“11×±<7`ß“ ؤ·´Ýé²^Bdä–àèDiü°bˆE‘žžéÈî=Ƨ(ïù   …Ç$…fu½Õª–Dð’mDº‚¤Òª©†@*'�YÂeqª‹ð*"0ZSjož»OìZ3;“ÐâxD4;òY!'èúJY>…û@쑸qmð2,R�ˆÀ°Øy@T0«=u$Ô¼ªq‘S\*Aek3cöÂФcDáÊ:(ޏh™¹Þ÷{N%ø?
ƒ÷a'–ñä;nág–_y콯¼Õ�—³ä´mQèC“…Â,CÅs:,Ë}me(Í].†/S
`¥±?Éy„è´« ƒ!“q+‰uŒZ–Š©
σ ¿&oèµ&b@ùëXrûA ¨¶¾ÿ¼½¾ÍÓÁ.F©n•L:øé%Ö#Î1Œ ÈøówsRPòå5Üô}`Õ§™ÝJXTýºqˆŸ(û÷ÀnîB¶\eã*,Ûæ±Ñ�B„÷�]ÞÂó¿úÀÅŠuŽ¿¶�Æ‘Ôn •c�nÂ2Ÿm9Â%gôš&dc‘ÌH† èéÉtü×ÃÈšë)±¦³ÃÖ–îÇ%Þ�À«Ö~‰�º\w2ô¹Æ1 z“2fÝ/ì §·ƒ>:µ68BJá%ÛfÎýõýB-ÝVñæ¦zT³~‚n�š? SÞ²v<'†j1s]œx 0®ÚŒûó{
‰’¼åóV¤âþ@mÐG¿a»h¹7ŒÒ…·E�¢GøÀ1»ØŽ!?§,ë"nsÞ³4N2Kè­b'ýùRË^?‘Ÿ!¿§’ýû0@¹’ô×ê9BcT {3Q·ùŸ*má]Ø~Wß<œ™}–|6
1ʯøâÃh.L0›A˜¢}jz®d\�ÿ²à oôTæ§q!Wí2[ÉÔßs L% úq5†®«�šLëÂÖ]ª‹RuqöA\@zRKfÐÿ²w£ïkRÃÏIF;T_·Ñ*˜P má¨ÕÓï[ÝZ2i9lÆ‘tªa9 ½ÎÛ�sÛFû’¶{;|³Á˜ÙUãLe¬…Zâžšò<Ìñ”5u,ßJ‰ ²ó’ê¢0.(ÇÆ&φƓTV©/VΡDÛ�\â]Óš‰&a ·åÆ’×þ8ŠQ&$žßÀ«ò C÷ û“‹y�U¼.y‰{pQ>aöŒ¥çLænú9óæ$åãðiº8V8³få‘”Ü]/¹ŠÆ¸Ö^#
Í'8†éB© â@½)A#‘?0‘H™Õ€ÁÑ/�°f“×в5ô«M©ÆûŒÿX9rcYfð‘t1‰m
à®4rçw<Ú›[å�ñ—D³bþÚXfz_Æb_ŠT¤;6–8 *Vðßýc8ÂòBc–XáG°d Î§óNâí†pÞ,ó«Oúk*áÕ(ëc”f�u÷/ ”&Fˆãc½TEJÝD*¢å�kÖ©‹M
Ús3¥¶]hÉÆÂªÊ›·@Aˆàéâ/ãÎ@à–Ÿ<KIxüÄ0ÎBèG�F8W…Lt�A“e�À&í•™kb–mvCCƒŸe�['*Z8)ñÝpèö
KðZ‰Øä§«Ñ WS§ÃÉñÄ3›Ïý­ÃÞ’™-ŸHˆð¯’–Bíðmž’¢û³ð�&Ä5+mǵø=5è)‹€ÑB:iƒªèÖ·ëNú¹:àÃ)
 ”Ý^ýÆéPÀLf�/¥_¿"I9¥[øBS#¬^·å±ËGÛ¹¦4:ôõ†¬XÙáE¯«,eçTöÁ,}ásIpAÉ‹®°ÁCöÔ£äŒêG÷’ÏŠ¼qž_ÿúdpª[  Ôà'GéôÌ–8ÃdܲÀb[°‘ñëÒ,ùëùÃÙ˜ã^!ukrap¼Ãï!ÇŒ¥åý ©‚XäÒ &>ŠXþSè!¥Ù´ü÷4�’;ª×¬ª,(BÛ
·Z\¶ {·0þ kó14Zšm"x’M”Å$‘ªp "A¬æ²îì׫¹s×éi`ß �ÖãÔ ø~ÏòJÉÙÙÂà--êϬ|�°wW/Õ{„-î\òp–9Uo‘œÈ„ïãÞ2µX~ó>?þ0þ5%¼ÖOÇ‹OÌÆ)Õ+$f6]
@ÝÑK ]Dîn¦á-þÖñA3¾D£2g-�&íäÌ0èý3¤hSäzqË cwZ _
œài&S±!}æ“üèp«Ý�©êŠå¶39É­"ŸéZæ<´…Ší 6ºâüÞK«.º°¬01G™z…›€{Š?ÖÁQßÝæR$K3¤R› �$ï/¬eš¬�œõ37?aäL\¥ú[Ú<×_™¹é÷–Ñé~ô�¥U&Ó½ñ9¶U߸J>XË KK®h�¸Á* \…pqE§ñ«�æ´VJ®¦M/Iª±çóêŒ'œÿiBi¬8=Ó
aa.õº‰Â+°Ò'bÝéƒ�ðf"¸÷Á)\RàÒÿAh‡ò*ZÉÞퟚîïd¿Õ¦bÅ Õî…{‹¢4 Bôßÿ62Q¸v~Xho@KÕ;7&±áNʦ¹¿¢xY2–§7wrw¸R{DEXš¨šW(#ªGÉ«E2Ik'uYýΊ@Ô…R~Ar š¡¾ÿ€#mÇðb»3ïJë�ß1¹zÞñº?'›{‘nn•˜h³i6äùÑ3gOçÉÄ'µ�’¤O[öNÙ�páŒñw¿Os¾µ(
n«)C�4‡×q{ÅúüÓô?‡˜~Rù÷3ã ö)å„çø<Ê1 çœ)Óör!-OËU-r‰ú ÄàEóîù(·/ u¹He_/¦s#€þú-³ Œbb*GL;T"{²¨¾³îa‘¬±w!åaÃÏùÙÈŸ‘Ùšçü:
D( 0Þ¸pbNÐÎ÷¤;ÇÑЫ½0eè2š·T·SG|Ü—¶t÷_íYÕö3iì"ö×ðœ�=%`ìš¿{ ÷ýU—�}Ì9?²F f ÚÖ¾Cí‹c�GB^¨H·F"{Âéî1ï]Þ@È+ES(*~)ªÝ ˜1ÏÜš:F/D¾¡M£€rÛ,@Û9ý+<Ë€Q§xkŠ.‰iðèOïH±Úžgô",Ú›Á’ ÍB:ñ1™Öt<º3•\ï[-÷@°e™e¸)²¿Óû¤6¨.®íñY¼ôŽ&_EòKôÚÒ¸–RG6‰Vy1±.�‡ ÓŒÍ'Zƒ@þ¨viuÑœóˆXDæ"êÆ>'¨„˜e>ÜáDXŒ Д�å¨whÂïOsÍ�Ó6ï=â‘“pŽ ò _’ãžSv�<óä¯ÀZ•çc1š52·ÆÊ��Ì”½µ]˜}çT°Îò"AŒ–â°‡±#“´æH¥wZˇ[îŠëÄI
‡—WQ¦»o<Þçfð<óŒ?ÝHÌs}ƒÌ052 ÈÓÿé=î€ùJêCk,¶é= "HO½xöIþ�s>É .×RÕv#´¤1�(7Z¯VÜ7jÜb°÷x�ÒBîÂ`¹³þ»(ºëâiÒACûéÑåZ-÷o
çÍþø%«»š Ñ¦S•ÅÕ£>F‹¸ܱöêݹ ÞclY`‚á:#öªý\]ÂXf^ÙkÇŠ$1Ù‹ƒ¿•Þ¡ •<Eœ2ù_$4¿µg;þž�Öm³.oÛß,Vñã¿ùბLâ{ÈÈ2ã&Nî’/Šz¼K99ø´Æ,Ù�45îÒ‰Óƒ8¡0X{F)36†í"¥E`Ü/«�Q<9×é¦âOa~>%Qz'†iä0R¬æû<Ù@—„(ž ‚MòUF�o{¨³âÉ-?¨P6ÁáM½kî_Ú4`sKÔ0ù@äÝ9«'è\O&¯@¹3ÚâZ+ÑÑÎ�ûA…†×‚#¿9mÜí¿¸>«6Ûºµ41ÍSëçªA§ñ!Ý�Ê�ØÇÙ‡ˆµ$qü%¥’ÓòK›rk`6ÙD³IC
•²Wl¢ð¶+’¤ôz(ÖÝõ#žÛ¤¯³E�ý$ùÖÐaÀpá/küÚAå5+¡ïE£y¨·Ã^Ø‘’]J-ù{ µ-óÔf¹X­º*PÈ�˜É £,mІ}¾^€šÏH0'�›â �ÚzÁóf[\oˤ�Ç÷uÆðxÐDÇ’R*“Ziáò[6ÍMÖ(BÂÆjÈm½"˜5ç,Þs¹P˜¤ìÅrè $²¸�%—>ò¢c0L"$N7w‘<`¹N5h,c;9•Ç©øË1 v�ËÇb˜àKï�ï_îÐx”޲zÄÀUÌ­©>�Ì_r�Õn7°íô9ö33O4oÿyÉO<9[DÅYüŽ. ˆ-lîën<aÔº@7‹q¨)Ü+.&/MQ4›ðS-‚v® ^o<‘.÷OŽ™«¢j ‰¤>BÊÕÂãIè&H�ÿ©ñäÍwÔOº*a{ãÉ- Ѫþט¬s··~RMF{û�Vsš§âåéÃ&%ñs¿îî‡B¦“,G£;öëûòó]H¤¯ˆpwÓ §Þ/>o/$çƒQ F´ n5±Ùø¢| ©ðÓZ€Î gïAI¹:Çl+Í'ÞÆ´*gb:t9UŸhn¼�ðys½A­I•þdN�5,�aò?‰—ï'Ô\Kà±›þ»KÒìy�²ÑZÁÁ‡˜w‰ ÖW6Ž0ÃZ Ç})ªuÊ9t ¨©u j¹¹Uv‰®I^23४��â.aËŒºÑÛl·¹²£¼/sÙP1ÑUÒU,¸¿·¥.QÖéßr%Ìà–È÷ÕèQ^ç/ë1Vr<í@”´üží(ž¥zþ±Ä½^ëvsW·N„}xÚQ ’Éë�¯Êµ•m+uÈœŠ¨ƒƒwyž'qBâasÍjyd³ÁŒºW�W¦öc¼Ï{6v–ßD·`V0y˜³Èx¦•aõÛÝÝû³+T´—y&ÔÃ0­JgÞÈ¡’§ñNw7õtþç)¿®7¿÷\Yçþ Ô’i92íA=�_Ö•N�g&Æ›’‰âòìTj-·:÷–W9ª¶’JÝJ$@Î<5¢«R¢Ò„sÖWi[§ònˆÍ¥ÒJtkD¡F<yƒX¦ôä0`Ÿ%y¹óš‡Ê„ç��ÛB‰F• “¢Œ“zˆ¥'§kÇišœõ^ó´@Ó*i­?ÙÀéF†²9��ލ ÜšÊ`ÏÊÉ/š…½¬ìâZ;焸 ¼�ms,¡Ì†¥p]¨J´±�£4Pl0¦º}ÉÓ+ó€�rrЏ$ÕȬ““AÕ{Ü1¶”yËë??çªÌxÁ ©®´a åMZüŸºÐí±hF‘i)ŽÚÀQ¨ÕC–5ì¦Î úWòÙ–¨éá߇’¸Ž•¹©güý¾Íêí¢çëA®EÕ<ø×~@�,ªÁf¼ãßE€òÕ¿®nbÅ ‹š›Z?E�; Ϲ´�ü¯ÿVQu•â¶BÿÞC�(—ÁZðo¤ ‚Y¶†O"½¹)re®ocÜ[|ú·{2ÿáß<~žš×¿À>tÆ jø7G$¤”nÇÀ¿å-¬’[Ë…þ­© €. éßÝ‘^AK¯þ³HFHmÍ”aïV£ñ;È¡wYü;ê"èßmÄ� .¥Ýjä¶ãßjy~è#²ýNýk>edpü˃ˆº4 ú}Y€K!3gý;¬ì·½@«²´‘1¨;þ½j¼—Eh~2;‰L5!L¢VÎÛòr·�WêNe�É¡šÜÙ\)S:AK¢m‹šÒ Dºáóþs—\·Pbˆõ]=µRŸfÞ V"\9ãL‡–Ú�VSOÙ­GÙŽk—"¢®ðÀ¿a;úµ³âH Ç×О֗Ö,¤N
rPiMîT‚(¬¨î¾PCï}¹¤f^<ÿÔ±#R Ó )ùÒ¤Ä^´¹;ã^ºƒßñ
R¹tg`1Ü*ûç‰D¬ŠYoTÙNÁ^µÅIS1ò‡>!\¦ŒyyÕÜÌ$, `Øa{Æì5eÖ'©S; 1cWÖJ¡ªO¾Ž�Ð�‹ªáMÒ~³FfËý£Ÿþä;&Ž:ËNzw½¹j¦Žlj�+“†ºب\n®Ÿ)UG‚=z–hþÜ´BQ�óØÚT²2ä§l7bbÍ=z ÄÞÿ,V ìBë.ÉZd‚/ÏË£¨€+|+œðº`�uá …Rçp…wóW ¢”÷I-Âô @½ñôKˆsŸ,·Õ«Þoƒ P¹¡ùfhËläXøËMœ ¿¢çÓ!åHñ—,_ßþKÏrÉ¡¹*õV¦”Ê9$a=Ë�MÃpâÓ"�z›•ŒÝ™“‚zW%f ‹û†¼ªÁ'-�D�€KYy ó°da‹ÞB½0ÁÆûV6o�zC"W6§ÚL—"õªLöÕû(¦ RÀÆhšÚ€ŒF›ä�ØgFú�∶
¯ñà˜Ékì¸å9nzcz‘íêŒ#¢*³ (ôíÍ’ưÁ¢/W‚qk€·¢å0¹˜—úko#&^
Ù2pgé${/ú—u(öGÌý(u&a=©‚±Ã9…Jb«'mÓ¬©ýŠYý4oĪï0ÅŽ 6ï2<wr¯,uy/¨:_46—Ïz€2ÀŠSˆ˜fb­~ßÚ`Bè»ç�‘»‹[Ùi†â%üÓïTÖñmcöï1v”1”Âɹäô󵆘Š3‰ìõ <Š$µþÐLåû!ŽÚ
³C‘qš3¢‘£&—L©³H‚”]­)ßòö¬Îå' Âè1õîKå»Ê› %ñ0x//¥aöÜ×21jÛQŃݛ©°Ü®"ÞŸ GzÆH"§¡0ªËŠq [³¤®aà1‚&=µó«gICáH‚óŸãê5=xêª^(Ŧ`ñÉeú굌�×�‚ hæ¾z•úw°GªÞQÓ'eÙ«^2nb.”fLË«zƒ[ÁmpÿJm¹z/Rì�„Fδª+õ a¤•çWæâæêå—ïó™ÂW½$-æ�ì¢#v;|õn›ÿVX‡”ÈÄûã€^må̬z=dc!_#¨¢P?¹µK¦pòi†Á˜¸ˆ„âNúCá€U¡¨6NÓ£&f¥ =y iÒ[’&È#n¨" ¥QÇ%*­Þr†$Ú”#©®u¼¯~ú2sBC‚ýëò9<äð6tciÛ-eÇ@9¹¬J¢±çAvÁäL³ó wAÿPHn²wb‹KÙÙy¤Mv‹kìc,·«ÒoÒ‰²[RÕT¿àìÖ µÊÓ/�ÏmGVc枨¡ÒÔ Ò‹ZfÌ0@ÏÀU˜ŸºŸÝ•Å\ÐÞ º-pÿጭËYˆF ŠÔ^FW¸r¸Âôå[}T»î DÓ a®ŒfVCu{ðê­ÔVÑ‹Ö÷õdA%4§å¿3¿ÃÀ7Ë—Óu˜©RŸÖÈÍå¯bw‰ƒÍø;á‰_c™á‰ËWðSw´'šeà�´¯±~ßþ&é„àdб 5ÏcÞ»}ýÁ\QS­ÈFœ  ßÝ9cÅRÆ¥ƒl¨v?Q ¾»L Ñ—^²l¹m—M©Ú*C¬klÂö©œbú±” Zع•†¨Vf±Ê/Û§à?ï¦!pó(ïîÜ,9ËÇqÞ»k‹n�qïºuG_¥Â{ÛtÙ2-ÞUi³$ß]¯°ã!é¾Úƒ‹Çî»+ðïÖA9Õ ,% ¾¿»ÁnyN_¶諭¼¦±e¤š¹ëùx7êé2HÒ»kf‘zN:ë›kïŽm�1­:îžÙ°AM~�¨Øs²GrRlò¢4ä�×z´?mrt¤D,÷númM$?^�t¢ºçE¬ykç�ã/Â1KêúÙÿ8¶oØ)‡¡`6õNaʉQÛ¨Èj†cìi’}¿™˜)ßRŸ¬É Á³·É÷"W²°ƒÚ�³.û%þË8 ñ;æTf™K�pJ\]0“¹.NüƒÑy%‹JÉî ^™ÚãàUk&,•>ƒ�’ïgxp¬VXZñçãÜÉñ©@m«à¨¯ë}dÇñbtt ˆË‚¦å&‚…;|ÖùáÖ™TÑÑ{]Ð6ÞuÛ
]®äõ¡›yGn ¶$1¥©²D žY.7gîëlàyÊ3“¸GËä)ý»<-Ʀ´¼~^7[d£’¿ÖË«L‡ßøÇ—ÒÞ»ýÑEñÈ…ËßE ÌnD[ØÔJ Ö!Õ ¬Hç%êfðÀhhÓ%\@, Z§ÞÇœžîË…ûÝiï:ŒN¿ 6úc$Ôë¶�¿�u6wŒÒjE܇~1ê´‹;,¢>z ÷ &¥+ê`·ÉD)WȇdÜÙúø^.II:v݃(³¹ØÒˆ*àÆw‰sar2†QÉ|Kp`ØÅó•¿”@éÚî~5Þ na‰¢‡ý:·�KË"~鳕.$²ûa/á!Uõ_j3w³.Yý:f•c¢@7ï€ÈVöý²AP f}Ó;´KÕ—órôMàpU?™žÂzHaXnSÿW½*õ÷ª÷êG äÿ�$°­v™³Ý¡Š _Kh-qd.Šnyªû•Š8<ºMcÒ}vA<œ:ºýJ!0Ú‹®“'ztÏwr&>º(~åŠY®Øº¤H›‹®Œ{t0e”Â÷ª£›ÿ˘B®P±÷Ú%@™_/b¹�D¼}çဈ·k×=ðZ~!†‹%ƒ•E +v&Ü’š¹ý§Yh›t×�ÿqTè‰^ñÚeÄ÷¹&‹RœDEnˆ8ŠÓÖ¯“1pÅúЏ�÷ú(ÂDël¶âÞßÞù˜tø�ü=O™RˆÐ(fIΫmÊnÞÉ
¤6œ·ûPP©†"ùºˆQ uÌ[v¾ç%Ù-t�M¦†™³c–$K>é#ô'å#|Š�Ý‚ Ç´(:qQÎÄ-ǰáÍU·¬ª´ã„"<%ð×—ZõlÂ%Úþ£ršs³„ýiì )§¤ M*ŽƒGØ(–kF�ÑFÉ7߸—xs—÷0·ÎIJaNÝH­D÷r‰=¡<·Û’8¼k}4.lGSêÌì8ίÖÜD?„3l91ÁìÈ.²OÏnÉpɼŒ#�OX:5Z¤^$²Õ£ˆ"Bª)1óZŽXËý–þ�`³ÜŠKEqÓ]_bæ+ÖD¡Lzß7¦ZùˆùŠ6•öCFx¿Gư@ã2ï½m tJRgPÑj¦[ÐóCӄĘ®Èèùw ²r èF‚é¿Á]Rº§‚_ÚŠ¸u�0]ÊfÝ>°ÒýQ‚»dº)η\±&MÓ%GòÇ]o·Ê?Èt©ïK:ÎtͺI›GNžÞÜCÌZþú¾�]�s=!•Â{ñˆk_WÚ
 ¼@õ\z»¸ëÊw:÷Rp�{é-'ê?ü™‚P|�³/­4?ÝûÇ…?W†Kv^÷/ÌÁŸ�É@‚•¡£o,�ƒ1Ÿ2ë¨[;½ÉN�¥–ø lºv—¿•±O_Iب߶½Á•Ðj@oFV÷¹Ä£¹#i{ º¢^,–<ѱªA°¬ñÓc%­­)û=Æ?­¥ ~tW<É¥xR LðÖ·nÍvJ²UC�Û’ÖR˜¥K7dâ˜^_Â)ïc/˜–¦”ìÏ-Ë ã@ÔRâÀv±q ÿ�,™§GŒ�õ\Bd¬�¼�ÀDV€çÒ|Ën� €w¥Û´#Pä6µz„µ¹ö„c–Rç ÿêùL*ˆŽzÊ€ -yÎ
‰
jµÛv§¨b;#¦|8‹¶øÂs—Šä%ËU* ¸µ ªàà�ÀFË“~$2gµƒ¢Øc ©ç45\5/^†’‡bïÇ—”_ëÜÍÌm±£T¡a|Ìëþ
§�û]™[Ƚ`»ã]Æ»¿‰üEꜗúð'Ñ.Uz—nuuÊ�â’|»ô˜ OŠIüÂŠŠ¶ø4àš8L3)Ã
(Oc±V“QÖ}®é17Œ–>ʳËXŒ‹@þ}W8¬ôådÄe!ˆ0ò^!Jº€3+àž$Ńt—„’a‚Kç]�P)âGsv>yžØ›”�ÇñºçÜ0E—á6ú¸°ëš¡¾<–YcÑ9ç\ƒExüÑÍJ…‡âК"¦ûÒœaô6(Þ/ýX[ß-lÒ }ÀúЉ‰\�VM‚þRmi®ÜÇ�„ÄûØ_Ý)|£!›yš[NµX Fç²öPù|¬oOgLÇ®—-�1BâO/�g˜F‘î.Ï!7òV_¯á9þÄ~ÐÎÛ0N §Ô¹eW<ÿ�¢LÛèG¥Ã®Úq6–w™²áùjóƒ?昄·ø`˜1Œ³¶÷“ÀD÷¹4Û5®–¼M.�DèȪd‘·û ÝEŽè b[_}{ÆýE Á[Òÿ¤22qÒ` üîËD÷¾Ëò � °IgU2϶“Œñ„¡ìb‹ë3âÎïÁî'ùìðKÈ9¿wç�õ€^ieÁ.Ó'§¹–á«úuûz¢WðÍ‘þ“ƒÈP_±Ž†x€ëË]X2§�Ä O›úv¨ðú}¾Ò­Äïú¯@1Jç>³�Ž�+×™^æZŽZü‚‘mÙí�. òë7­�3¥ÐÂYÞ¼�%«Àû…D³_{)\ÝAQïpíÚ¬/É( ��¤Ç%IðÜ‘gø©àLîÁÙ‡™GΦq+<§\¹ñqXÊ�ˆn楄ø
äלÍ2'½¦íjŠrù¢nV†§'Èzšæq“f¶]xí•{ˆÌ»©“9úZoõ j…ö4�«“&;L‰mdÅjõ{‹þÔí"á¿Áõø^Ö"R¡ˆh•‚ªË}B:5ê¡I1ÄX,7gµÍÿkèë18æC�øjeèýpáw
?Åþùª‡“t“ÉáúQÄbUÃH"¡J��χÂËòbZ׌ÛrîbMÄðõ…4|3@hm|aÎBe2ÿ8S¹õ€m¨rV±X‹_R_T•e?ÛàHÄæç–ýD]˜Òé”®7¯Ã’!“ÿUòzO2°X­tű
QˆG
~ÔþcÂI' T˜\ ;eù8ZzÔŠ”H‘°—U¢U��A´_ùÏ1ï®Ül?“~®rûãÜå]³ì…A*îcxµ‚‡]0ޏ�³ö€ 1„/Ij>6mf´ºN|5Tkw„±Û€@� ÿ¡§× ‹»œ»+¶$K&ÍÕ¬tÿ¾Í“ù^ +×uñ0éºbÝu²|ªÉê BG¤§šÔ/ð•ü\ ïÁÛð“&hræÌž?e¸¥æ„Vã®Ë8ÒJ�âýõEšÁð¶ô�v‚ì!Æ×’â8iúB®~’›ƒÝÓd …|?¢Ëšq{‡w8¦%@â*·°€\f‘VXŽÎ˜ŽÌÊ™ÕDÅ5?3W÷Å[ðå™—{ŸT+ý�w0É6M/&¢Tqó‚–€7æáéutW\çDËLQQvKDÃŽÕ:Ê“ƒ·ÿ¦²{ñjcZÔý1™×¯·öH\Jf³¿~lM×¾q©€M¤m1 VV9_Èu‡2sÅ [a&V¿jÃtE¤mÆ­†\ß`kXkµù “ÓZ²Ì…IºSÌ”ÄDNlL§Ù†o§Ö!Ê^éœ�j�|‹cÆGT×ë~Hk×zXë¾Z¢’ƒ!ú¯Ò~¨+[@ÛÂÀ9„˦¶–Qm’ו©“‰ú˜ÓÓû#Ø~ü¦Ñ#
€-œ!X œ0 ÇsÈËT#çz=ÉÛ²q- É9Žb¯ÌëxGÉÏáéòþcƒ‰À<®4
«U¥�‡Æ<í/Rß•±mÔ˜,-ehêÀ05F½rÒ*¾Šp-Ø�x/n]£†BãÛÙ‹÷�%ÀÌËjwÄ?¢ Ñ<Íòm[x7I- )æ–\?ë ܸQ‘0—Ž 6?ô« ¥ `xmÇ!cÎkŠñÒʈÅ9ò‹7€»@4`p^ˆ@�}FÍüR“gœ($@!Gä²Y?ãCh=ãNN~ºB%»ìB, ’6É9�i!IXî~2æ°ú–§¾;;sT<§ùlãJ/ÀL¶O˼͜{¥•±¤ƒµ¾ f?›Ù�éyÔ !s‰È™ ^ó ¸¯Ýjúv,×mgº¦Á¥Ñ|Ë‘ –ʠϙ§L*› ´jóÂ~p.#Tz|�{á0Å|øÑÖ)Y òýœoçnêÀs ; ðz�Ç€Îr u£ãpƒ1º¿ÕvPlà}
 ½\ÆÃѾOŒ ßrãf·"Æt©þ`žyýSj÷F(ØAò¤,öƒ˜¦§Ö•-©ñ£|¸šŽù aŒAtŽñÙ‰¥ì; æƒg{‹£’–;û·²Öèle3kPr2;^âýaorÃVÝ"Sû*ûC¯Ó—'×»7ŠC¨ì¸ýg3NyºJs”ŽçM¯›9V<»*Òý²ñ»Ä¬owbzÔ•D,<·`óÍV‚{þEXiuÉÁ¸Qš@Æ;?·c$Ao=5FcÂ+"××4ÏÜ”ßì@„± m½�Žü#•‘‹&‘¡×Èõ|ïèíýà &ÓBn>̽S¹¢O@Ì�]Ü_ð‚½b¤ïy†Œ×d öÖí]¢ï™<‚!†îÌR-<„…`v[*Èó â[)­ð0¸aЈ®Qé>óyY5.—QëÆ´‰Ê·¡7Çl–I")ØFòC}j Þ«ÃÂ_H2èI–�b)q¦Ì}©o‰7(öÁˆè-_ÚI‚¤5DFÐSž—^cŠÍÀ4ŽÚbJDËÜ€Þ‘Ð&Ž�úÈLÚŠ$2Í¥>¡³¢ó›ÂtƒeýÈH¡*ñãZ|#¿q/H›jÇUi­åW^'"¥ü‚á©àûn˜¯¾o5ƒJg¼òÿßÂ2hä5+Îêë#›”<ù¢ã÷Ùv±neŠJO*‹� O=UÞXý¨Œq�¨×Í—*Áÿ ‚›`•QÑW‚Üh ä¬ a(4ZŽ@¿¥±“éOú-¿nü½K)á—¶*ayÖ»ˆ)iá…ÄJ³믅±ÐVóU¯Mù¡÷RÚ#ýL긗A~ùš;ÖÝò³~$p�œ¦=Vã+;¤¦–+ªÁÒ[‹j&­õ�¾¯qUçß“£ 䨻QfasÕáÎRØù ŸÚ=OM‡£a–aâL¾#B÷æ`˜ƒïkÀÖì·,Rz§i‹]ÚÄ>ò/bŒˆ¹FxÉ\Úwä…_G³¼½ k¨
ÇYäµäà"}„ ÿRúª PB€Ã¯\C!I?·™4d|Y^—~®ã(\ÖÅœµg°˜B×}‰Ï=5h«¯oÙŠ?É&Íq5øƒì9ÙÎÙæ÷v‹z·¯ÓrÆ#í”ʦxg®# ò‰êa%Ñ=®¢©ÀIÜ0È®Ý ?›Ízͼi"x»ð>É¥Åßâ"ß“…à…€_9zâ×Vè¿xé]*­\ñ¡ñ.;›ÐŠ©(‚®ú—ø¨~MI]zú¥øYQMp�ùpÖ®*Y½^fÓÜO xÖ·ë%«¡æC•Knh²ÔÇØntXéJóûOÉ×Ê9DÞð¡#ûÍÛjéÊûsf;.|�q*ª¦1¹S4ÌJ×zrǶ:DOœ™BÈg¨™‘³,äãÆ,/šI.­7µê|LÎÖ§ËÙö -¨ë|p*8¯Ã(s‰#ÖB¨�¢:<ú¡"ïv4!ßÀ³ûM¨NŸ–ÒŽÉ„Ø�¹E®›kÚ„Œù3ÅvMGľø
Öé‘°LÖA1¦œö<©.ù„©:몀�Nç”E‹¶ð‚•z+ Ór°m“Gv“ÿ«’Õ".Œˆ•K?•g™½>)¼®í†Ñ™Á«ãPôêUU…óÂî”0“ÿ¨úŸó¬�¥WSa!È ±奄é¹>ºªz€{Þaù à>GÙœ¿Á¡|P„HdtÈ3�™”
«kíãþ:X´�ç‹påÐ07Ÿc¨Ò솑™Ù•%ƒ=A,u1EPÂW¥LGI+ëŽlÞj�©šÄúÐËogsw�6rðþU�L™›ê ‰¼cª™Ú1"\A{‚·[h‚éù}vç™&f ¢3ÝwºÆ¿n�ĈèÿùJ²®ßÂXwßd6bQšÏï[GZNç1¨ß�IB ž&ŸÚ´`’Y¾¿ÕèM¸ _ÜZá‘�j¼žäñgb©®¶«Ä@úñrt‹2\�ž© n5�¼@ùö³ãá$e­ fëv®½NEµ«À�¿¢} {`º€Z¿É1Ÿ¯2È4F–] Võê¾¹ñucÛÑAkè±8uÑ&쥉#'ÚX®"™|ÚÚÑ„`YæËµ­ôÜ£†Ñôë�ËOA+ºã¿Æ¸(ËÊŽ¥Ë©O%,Y²ƒ ‡_oô´ÿÒ|+°R°ÑßrÎÌ,`f©‘…TÝÌNáóƒ —.¬‡¿ñª–À*"µ¤ïo ]ËÁ/u~:?+„ë¶S 0M¸VfUŠŒ•‰€ƒÒM—ejn!Ì ‘Ë´%I¡Ä.î�À-XÏ•º ´àqB÷9³5Þ Áu*~!*òm_:~GàÍ›ü4S©aˆ3ó)ŽÕçµ²®±X´X†4ä2þ#eÇà ]/^d†v<EÛ´^Ò¨5®i€O@,˜üÎ(@VÈ“×- Ó>ù¬˜öå#åƒÖ�ˆÜàÜ^ÜÀAõ[\¥ÏÆ×'ƒV¨M{�_Æ“ÓOCùb\Pý% ²¤ÔÃFf`?Ò¼ùX`fþã9ôÚ¢§îÎ0ºþ&ºAó|Õ½<´ÀPâ³2~%›ÿèz$&ƒ¢­UÎ@ýŠ88!¦Ë&áw3<àLÄe?ý½�<?‹¡åP—b[´ë5
ærFÍ'Ó÷ášÍÎ�ˆ±eAš˜��OüÕÃlp�¯�Œß8<m…SVJ‚µˆCekˆoŸ>­ÈŽ£º†¾l²×S:úPí“»X¹v"
G~PÒ× ²t*-å]캞ý™ÚB^âž]§’¥›g¹Øíûô€c€]:Ya_Žö¦5€] ‹×Á0…ôÎJçKkЃҧ¢Jµè|ñÝß4¦DHŒENƒbf5 Lá)žn:5‹°?›«d–%r¶Ì
CÉ¡Iç’Çö~¢ ·¯ˆTù½Pˆ³WÕlxx:ë0íÀØ®Õðqnü¢àDTêçüäá3ìEªi¤`WÑj#ˆñÀú(ņdŸýiˆ¾@Q¡ÏS‘Ntßœ#7
>c’ôºop%]¸’!I‹{ã |@9�éOœæ€<�é
Í–¡”ˆýe‘ÁáL/ÍZø 6Î)^'�n… ‰qa[Ñ}Çš»Ò±)äh >dÐd‘
eŽ qÁ>S/SÀ4æeàÍ/3›Ï©FŠFH�P¹"NŽ6Ñ÷¶‰”jsMõ®g¸Ø[opñ/!¥A®ŒTÂnIt
Ã,¾IŠ«½—_WŒ™÷˜Ïê¤åQ5±áÿË{ó¨<”òŒû!£Ü„cÏêHfqâ˜Å´Ô?ÝÄ––‡+¡4»N²]û íe_«u­&Šjk{�%<¼=ôÉ >Œ÷
²ÈŒæ{Ôæ€kt oÖ ¹Z×Il �‹×ãg�qã>)u6by¤rÿþ‰B¶½¿­¦¬Ðõ/=zÀ!a¸©’›Ô›R²NK,Éð<e%·6@L’~öJ,y¥žRf®œxãdf­‘<Í¢;�Ÿ7˜MdBÌ+|{s›…ÇšN(·"¼ŒG’šcB­M {€‘‘XOyêÄ ‡åõ(asÆ tÂÚ»Aò“¾…¿é²,ð ’||b®vq`dçëMGÌPÕŒhz Ñ‚[”¿“–Ìë…Ƀ¶�ÑO—àq
Q1ã“|̱tÛy±*!ýºï
nj,d§‡º+
­=±ÈHKI²èJY?ª1BOÞïCÊu9>xWe‹'NÏqiÌy0‚784Û̈ˆ'ˢ—xO�îM Éð~’ŒõÓR*Vq³ñÚÛãÇAù!%˜ô}� ûuïq`-3,)LI‚–Ë4€üÙb“j…¨:¥–Ž@!GpJÜí€GÁ¦y–Ã8&&M ªbúäô¢²«úóxÕ›hé-£"‰šCk !’=K#ÊK¡Û`[ÍÇÌËhÜ®wEÆóŠ:‘+Üsâ’d)Á;p1Áx¼cŒqôDÐFQ®ßRýõøØuÉUÎ¥uœÌG·ÑˆU<" •t ;ÄtþÓ;®}`Ħƒm¡hBùu˜îÏ«Kpw":â6èË‚Ú þªŸR¨t›9¸>Þ¤*¼`ÿÝÀ�¶}õBš#©? £³�×;7²UÀëbv4ú¿Ú|ÕÐOU4‘�»›¬ÈͲh�ÅSsŸ­ÆþeÕÑÒAÆí_¶m5ÕrÎ*¿q0ÃÇO þßúÿ9€È/+«9!Q…,òùP»0•…;És Ù ÑÆœ¡'d²ZÂó�#[Ë-(äÓID `ô^ªÇœ’8ò…–Byijb1–3‘2’�!‚CEG÷±w‚bÇB;"Çý›úØ•ŠeʺF„²-ɺ ®w¨b�òD?Qèâ¦d'¼D¿h¹YA ê Ú Ëú°×u4ùÇWà\
wÑŠãqía•à =3:U#²‰©N‰žÙjXó›|ú¬×]/ûcžËßÄi6�ü´²Uiu(\!7”D/V™pø…ð¾I¶"ÑÀ¯í-�gÆ–8o½?å½AJ_”6¼G²ÜWê‰ö(¯)•ÿœ±3¢É4›¬‹ãÒ=3z‰Ü¿»*%´ä<l¡‡M{ÝToáKÔqýHt2cá„ÿÆc×D£ìmzû�©×ÝŸ'Üð¨“ÿ“'3ÊqTkÕ|]•Z ¨>rÿ:Qz¬uZp1cSË,Äuà>G0E§|ã ’;êyÍÚ‚ßXÞqeŸh.E­­dO�îõ`x\í£9[ ·ˆ�¥”æ� Öé‰ÿ¨ú …+CD îFS*û
IÿõÚÝu ¤G³7øòËòþÁêT©þ®�å`�@bï‚T5"*þÿŒV’ 4‡¹¡XmÇ “#ÛѧœBRèiRq–¢QÍÀòYVz›Á1<Ê0 &éªúj‹´ùÃíU
ø”'9[ .­_©Ë÷Ø‹B­½ªÅÛ½Ù�Ìs÷é‡]×ib[^[ݼÍíbÏ™ÞýιmНß:Wζ»˜z?ç®íSŒ]nç¿ëïöžbú‰øŸN¿[7Ù¡·tÅvù¹Üvç¼üؽ׬ïZ¿b½íßï;Ÿû¾~Ïùš­�Ù7w³)îóEvøZéïí³ãö{é>õÛËÅÜ{Ùè‰ý<Uó5ÛûbÞÎ÷qûnìý>÷Þã;̹|Ϲ-º „9~ê~ÕÑÛzcìžSç¦èî/"·{ëÜöûDö}uî^׸¸Ïšßn=×=÷üœËMY¯•ë¢Ý¢:MÇ·ˆíªó§ûwì%îï[D—�êíÏýo7d~ü·9Æç¯ß�ïù«:tïÜÙÝ�—{ß‘sUS™Ÿ·bžèüžÏ½ö¶Õ±ÕÓ� —HcB£Ñh®Œ¥¤@ª……e«T‹•­X°Œ¥¤ÊZ%, Äb¹VÙÉTZy00\\B°„ ö®Fl¾‹9ï'bÃV÷Úùq?î¦�ˆºÏ©™M™·¿­ºfT]÷¶½¹E‡ÛïV›÷bouß»Ãloìz½`F¨qŒ¤ B„)†¡iÚ!
„£”ÄÒ ¨ÛÌLe-ÿm}È [âÔúÏ“sçO=m
³‘†§´¸òÅU˜!¬8GšÒxZw�<3°ÉF¤ãðá�ITX‹Û{?¾‡ z•L¸ÆýI: ¤gJ¡,Bkr$Gë®1‡ônLcÔº±z8|¨¼�éi7�pìt �þ*îwÔ^-� ¦äN=Zп
yAã>!ÕÙ žˆ+DZŠë“šôþE¢+µá{¹Å‡†ÞGCOfµÄTµöZÀ�dÉâ<xáü`¢jå endstream endobj 8 0 obj <</Intent 16 0 R/Name(Layer 1)/Type/OCG/Usage 17 0 R>> endobj 22 0 obj <</Intent 30 0 R/Name(Layer 1)/Type/OCG/Usage 31 0 R>> endobj 30 0 obj [/View/Design] endobj 31 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 26.0)/Subtype/Artwork>>>> endobj 16 0 obj [/View/Design] endobj 17 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 26.0)/Subtype/Artwork>>>> endobj 37 0 obj [36 0 R] endobj 49 0 obj <</CreationDate(D:20181229214738Z)/Creator(Chromium)/ModDate(D:20220226201058-08'00')/Producer(Skia/PDF m64)>> endobj xref
0 50
0000000001 65535 f
0000000002 00000 f
0000000006 00000 f
0000000016 00000 n
0000013268 00000 n
0000013319 00000 n
0000000009 00000 f
0000000173 00000 n
0000054382 00000 n
0000000010 00000 f
0000000011 00000 f
0000000012 00000 f
0000000013 00000 f
0000000014 00000 f
0000000015 00000 f
0000000018 00000 f
0000054639 00000 n
0000054670 00000 n
0000000019 00000 f
0000000020 00000 f
0000000021 00000 f
0000000000 00000 f
0000054452 00000 n
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000054523 00000 n
0000054554 00000 n
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000018333 00000 n
0000054755 00000 n
0000013681 00000 n
0000018633 00000 n
0000018520 00000 n
0000017289 00000 n
0000017772 00000 n
0000017820 00000 n
0000018404 00000 n
0000018435 00000 n
0000018707 00000 n
0000018851 00000 n
0000020348 00000 n
0000054780 00000 n
trailer <</Size 50/Root 3 0 R/Info 49 0 R/ID[<3C906A544CDD4B34B3711B6E8C01C649><F3F4464E56C745E3AED7CEC368306EA0>]>> startxref 54907 %%EOF
@@ -0,0 +1,311 @@
%PDF-1.6 %âãÏÓ
3 0 obj <</Metadata 7 0 R/OCProperties<</D<</ON[8 0 R 22 0 R 36 0 R]/Order 37 0 R/RBGroups[]>>/OCGs[8 0 R 22 0 R 36 0 R]>>/Pages 4 0 R/Type/Catalog>> endobj 7 0 obj <</Length 13018/Subtype/XML/Type/Metadata>>stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.a8731b9, 2021/09/09-00:37:38 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"
xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
<xmp:CreateDate>2018-12-29T21:47:38Z</xmp:CreateDate>
<xmp:CreatorTool>Chromium</xmp:CreatorTool>
<xmp:ModifyDate>2022-02-26T20:10:40-08:00</xmp:ModifyDate>
<xmp:MetadataDate>2022-02-26T20:10:40-08:00</xmp:MetadataDate>
<xmp:Thumbnails>
<rdf:Alt>
<rdf:li rdf:parseType="Resource">
<xmpGImg:width>256</xmpGImg:width>
<xmpGImg:height>76</xmpGImg:height>
<xmpGImg:format>JPEG</xmpGImg:format>
<xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgATAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYqlnmXzJ&#xA;pHlvR7jV9VmENpAP9k7n7MaD9pm7DBKQAssZSAFl5x+RvnjUfN2r+br+8+BWmtJLaCtVijZZUVB8&#xA;liFT3O+VYp8RLVhnxEvWsub3Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FWG+f/zU8seTLdlvJfrWqMKwaZCw9U1Gxc7iNfdvoByueQRa55BF8t+evzB8&#xA;w+c9T+t6pLxgjJFpYx1EMKn+Ud2PdjufltmJOZlzcOczI7vVP+cVYSbjzJNX4VSzSnuxmP8Axrl2&#xA;n6t2m6voLMlynYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FVk88FvBJPPIsMESl5ZZCFRVUVLMx2AA74q8A/Mv/nIqV2l0ryYeEYqkusuPiPY/V0Ybf67fQB1z&#xA;GyZugcXJn6B4TcXFxczyXFxK808rF5ZZGLuzHclmNSScxnGU8Veq/lt+bnlL8rPK/wBb8wW19cz+&#xA;YbqX6sljHFIRDZJGvN/VlhoGedgtK/ZOZeAbOXpxsyy3/wCc0PyollCSWOs26nrJJb25Uf8AIu5d&#xA;vwy9yHrHkn8w/JvnbT2vvLOpxX8UdBPEKpNEW6CWJwrrXsSKHtXFWR4q7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FVO4nSC3lncEpEjOwHWiippXFXhmnf85kfljf6hbWMOma2st1KkEbPBaBQ0jBQWpdE0qfD&#xA;FXu+KuxV2KuxV2KuxV2KuxV2KsR8r/mDYa75v8xeXoiok0WREh3+KVQOE7f885vh+7IRnZIa4zsk&#xA;MuybY+X/AM9PzWude1Sby5pMxj0OxkMdw6Gn1qZDRixHWNGHwjofteFMTLks0OTh5slmhyeR5Q0O&#xA;xVfDDLPMkMKGSWVgkcairMzGgAHiTiqrqXlsfmD+b+lfl5p9+lrbabbyaXDfcTLH61pDNd3kgQMv&#xA;IPc+oqmv2eObCEaFOxhGhTJ/Nv8Azhp5r0fQrvU9M1u21aazied7H0XgkdI15MIzylDPQbA0r45J&#xA;k8g/LXz3qnkbzjp3mHT5GUW8ireQKaCe2YgTQsOh5L0r0ah6jFX6Vo6SIsiEMjgMrDoQdwRireKu&#xA;xV2KuxV2KuxV2KuxV2KuxV2KoXVv+OVe/wDGCX/iBxV+ZXlP/lKdG/5jrb/k8uKv0/xV2KuxV2Ku&#xA;xV2KuxV2KuxV8PaD5v1nRPM8fmOzlpfrM00oNeEgkNZI3HdXrQ/1zXiRBt10ZEG31LffmLZar+VO&#xA;p+atGcpKlnMPTr+8t7rjx4t03RmB9xv3zMM7jYcw5LjYfH+YLguxV2Ksps9H1jQPy+1j8x1i4fUA&#xA;ltojPtW6uJBAblR/y7hyyH/flP5TmRhhe7kYMdmy8s/KnzzF5G8/6X5rmtGv00/6xytVcRs/r20k&#xA;H2yHpT1a9MynLe4ea/8AnNS41DQL2w0Ty4bDULuJoY72e5EywhxxLiNYk5MAfhq1K9a9MVeC/l35&#xA;I1Pzt5w07y7p6MzXcq/WZQNobdSDLKx7BF+80HfFXun/ADk3+e+uxa/P5E8p3kmm6bpirDql1bMY&#xA;5ZpqAmFZB8SxxiimlORqDtirxDyz5O/MrVYpNf8ALelapdLbszNqdlHMSJAatxlTdnFania4q1qH&#xA;5nfmTd3bz3fmbVPrBCo9LqaP+7UIKqjKK0Xc0qTud8VfV+o63rK/84gpqy39yNV/RkD/AF8TSC45&#xA;G7RS3q151ptWuKvlLTfzP/MqzvEns/MuqfWSrxx1uppf71DGaK7MOVH+E0qDuNwMVW+Y/Jv5j6PF&#xA;FrvmHSdUskuWDJqV5FMpLndeUriquabBjXFXu/8Azi9+fmvS6/beRvNN49/a3wKaPf3DF5oplWqw&#xA;O7VLo4BCV3VqDodlWcf85N/n1qPkhIPLHll1j8w30Pr3V8QGNrbsSqcAar6shU7n7IFabghV8v6R&#xA;5D/Nn8xUutcstP1DX1iZvrGoTSc+Tj4mVZJ2HqPvUqlT7YqyD8sPzz8/flv5gSw1Ke6utFgm9DVN&#xA;CvCxeIK3GT0VkPKGVN/h2BOzDwVfT3/ORvmSU/kXd67oF/LCt0bCezvrWR4nMU80bKVZSrAMjYq+&#xA;O9D/ADb/ADM0q6llsfMOoSXNxC9shmuJpyvq0BaNXZgJOytSo7b74q9v/wCcYNK8+N5k806t5nGq&#xA;qv6HeNTqX1gCWSZ1YOPX+2yrEwr2r74q+dPKf/KU6N/zHW3/ACeXFX3X/wA5B/nJ/wAq28rwmwRJ&#xA;vMOrM8WmJJukYQD1Lh1/aCclAXuT4A4q+N7HSvza/NjV7ia3S/8AMt7GQ9xLJJWKHnUqOUjJDEDQ&#xA;8VFPYYqi/K/5gfmj+Uvmb6p6l1YvaOv17QL0v9XkQ0ajRNsOSn4XTfwOKvr3zV+dtpB+Rkn5j6FG&#xA;GluYEWyt5aN6V3LKIGSSlOXovyJ/m4++Kvi+0i/Mn81PM5tI57nzBrk4eYRzzooCru3H1njiRVrs&#xA;q0A7Yqn+l+XPz9/L3zHp+n2MGqaHf6jcJbWaxkvaTzSNQISpktpPEg1oN8VfRH/OTP5q+bPInkzQ&#xA;tF0+8VfMetRst9q8C+myLbJGJnhTf0zNJJ8J/ZFab0IVfLnln8u/zO/Mdr7UtGs59dktCBfXU1zF&#xA;6gZwWALXEiM5O52rir0z8g0/PHSvzSsfKZuNR0uzj/0rWNP1FHeBbKM/GyRzbL6jURZI/wBojemK&#xA;pd5v0Cfy/wCZtS0adSrWc7xpX9qOtY3FezIQwzXyFGnXSjRplvlbU706FcWVuT6HmKwvNPu4f5r3&#xA;ToRcW8ijsZI3SL3NTk4nb3s4nb3vO8qanYq9d/K38h9V12aHVfMkT2GiKQ6Wr1S4uR2FNjHGe7Hc&#xA;/s9eQvx4Sdy348JO55M6/wCcpbS2tPyJ1K1tYlgtoJbGOGGMBURFuYwFUDoBmWA5gD5D/J7yTp/n&#xA;j8xtI8r6hPLbWeofWPVnt+PqL6FrLOvHmGXdogDt0xV9O2v/ADhT+WyScrjWNXmUUIRZLaMGh6E+&#xA;gxofamKvW/If5ZeSvIli1p5a05LQygfWbpiZLiYjp6krVY/6v2R2AxV+e35jC5H5heZxdV+s/pa+&#xA;9ata8/rL8uu/XFX6EflU+hv+W3lltD4fov8AR1uIOFOojAkDU/b9Tlz78q13xV8N/wDOQ76I/wCc&#xA;3mdtGKGzNwnqGKnA3IhQXNKd/X58veuKvoTU/wD1i1P+2Vb/APUYmKvAf+cb20Rfzo8tnWOH1f1p&#xA;Bb+rTh9aMLi2rXv6vHj/AJVMVfa/5xPoyflZ5qOsen9ROm3IIlpQymM+hxr+36vHh/lUxV8B/leL&#xA;s/mV5U+qV+s/piw9KlK8vrKeO3zrirMP+cpBeD88fMP1mtCLM2/Xj6X1OGnGvvWtP2q4qp+Qbb/n&#xA;Ie48tQHyRLrB8vxvIkK2E5WFZOZaQcQ4oeTVNR3xVB6r+T/54avrE11qmg6heavcj1p5JirzuBRO&#xA;bVbkRsBXFXt/nfS/MGlf84cW2m+YLWSz1azeGGa2l2dETUiIQdz/ALq4HFXlf/OJ+nWV7+c2mtdR&#xA;LN9Ut7m5gDgELKkfFXoe68qjwO+KvujVv+OVe/8AGCX/AIgcVfmV5T/5SnRv+Y62/wCTy4q90/5z&#xA;ZW8/5WFobPX6mdJUQ+Hqi5m9Wn+xKYq84/LOD87J7C9T8vJNTFmkqm+TTZvTAlZfhMihlO6rsfbF&#xA;Ub5k/K/8/Ne1KG68w6Rqd/qUqLine truncated
</rdf:li>
</rdf:Alt>
</xmp:Thumbnails>
<pdf:Producer>Skia/PDF m64</pdf:Producer>
<xmpTPg:NPages>1</xmpTPg:NPages>
<xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>
<xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
<xmpTPg:MaxPageSize rdf:parseType="Resource">
<stDim:w>2409.000000</stDim:w>
<stDim:h>909.000000</stDim:h>
<stDim:unit>Pixels</stDim:unit>
</xmpTPg:MaxPageSize>
<xmpTPg:PlateNames>
<rdf:Seq>
<rdf:li>Cyan</rdf:li>
<rdf:li>Magenta</rdf:li>
<rdf:li>Yellow</rdf:li>
<rdf:li>Black</rdf:li>
</rdf:Seq>
</xmpTPg:PlateNames>
<xmpTPg:SwatchGroups>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<xmpG:groupName>Default Swatch Group</xmpG:groupName>
<xmpG:groupType>0</xmpG:groupType>
</rdf:li>
</rdf:Seq>
</xmpTPg:SwatchGroups>
<xmpMM:InstanceID>uuid:543791ce-a1a9-fb46-9397-838d5e368bd7</xmpMM:InstanceID>
<xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
<xmpMM:DocumentID>uuid:0bbb0505-cf06-5f45-b1eb-c2f2ce58bb0c</xmpMM:DocumentID>
<dc:format>application/pdf</dc:format>
<illustrator:CreatorSubTool>Adobe Illustrator</illustrator:CreatorSubTool>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?> endstream endobj 4 0 obj <</Count 1/Kids[5 0 R]/Type/Pages>> endobj 5 0 obj <</ArtBox[152.941 154.947 2262.04 755.845]/BleedBox[0.0 0.0 2409.0 909.0]/Contents 38 0 R/CropBox[0.0 0.0 2409.0 909.0]/LastModified(D:20220226201040-08'00')/MediaBox[0 0 2409 909]/Parent 4 0 R/PieceInfo<</Illustrator 39 0 R>>/Resources<</ExtGState<</GS0 40 0 R>>/Properties<</MC0 36 0 R>>>>/Thumb 41 0 R/TrimBox[0.0 0.0 2409.0 909.0]/Type/Page>> endobj 38 0 obj <</Filter/FlateDecode/Length 3538>>stream
H‰ì—ÍŽ¹„ïýõUbòŸWË€O†aøàxw#»~À_$YÕÝ#É‚wGÀ4M’™‘™þöqûð×�aûÓŸ?n·Ÿoaal1óß®_¿üëöÏíßLëß/?Þ>üåaûñ?·Ÿ7ó)Ûú¨Gµ¸¥‘�PGÙ^>ùrýoñ¨µn{:Z/[LGŒ¶ífGìiKvtþ¼Üvë|ßr8J.ÛûQå£Õ¶íÌöTÏ!‹K<ƈ×÷�nC›s‹ÛÞÂs~8»5L~÷HÛÞíHÝ.ÃÖ0håú½ŸßÖÎý4{½ßÏ^wï§å%áþ¾±}¿¯·…v_1_¾ŸÖ/Ï<\1=·/óÃe]p›âD®îŠÕÑ1îÓ5Ñ
c{Å»å�Q¬Èº:¥cè9£­`|iGNéËe\šú}EïGé§£hÞ‚ÍwõrŽR¹$tœÓêQB–™åÈrxÍó–ä¾äqô}Ï®IÍÇм’ru¯¤ü8ŽÐ&RÖ +lȹ¾ÚÆ Ýý¹ná’æo‘É s—ÃJÛ°3'»¿¥Ë„î0àµV6›å¶å |Q{»¼µ†
Ðtçù�ã ugcß ±h­zü}Ì×֌ؔÁ86V¬†5ïÞ9ñÓí‡Ûߨg–ÚaV¿É?ÿÀ?v=ó¯p“ÕGjú‰�­åG–Ø/ÖqŒ’ž˜pÉÑ•2:ù'Õy Ÿ¶]ô[ç>ÓOßé7íÚßþL?½ì‘~zø#ÿä™gþ 6_å_Â'x>ݸ¸%µ½Â™rÓB&¡N x·&‚h‚uktÁþó9c¾¶FÞ•àœ¥óà;±Ä‘Å<éòâûb¦|gnãÂq§6èÌçÙ=<iC&*Vî+ªÄeÔUGÚ}WEÍi"¡Û¯“÷M·~aî¢Â¹ñ³‰E&&¸» -¬HIaž¦�L\¶ß™ÚQ('j�ðßF$q{ âË[‚Å®�Ä(+*¬¾V9;f~¾Þj%DcëøzlÓ°Ô*„$>ø4Dã.¹\Èi‹¤Í é X–�ÿú,�tÑ-Ê�ÕÇ­ �øk'² X;
u�‹à]Ê{ j¸9¢Ì ÖõĽ�ÉÆà†“œB½ÕÎ;,$ˆ£BÙ{š4Y\��iQÞ>Ç/·•ÃÎ |Yü;(,ÚÈCA~pL$ÖHÖ‰EŠÜ•É£„A¨¬º DG}'ãöá;€¼RqÁËqBÛ$¸¥ÌaÒ»¢Ö{>ºfüʽÂ$Z‚»æçg’ÄJÆB5�Î6a2v`_#!¸’S\jY¬6³ã±5äÇÏô
»¯TüعFÄ$rp=ǵ{ÈÙ˜pQÇ8DZ%ËŠÁWx[ -6›¡^ß„¦`�©¢Å‘€×±Þ:°E©0"!KQÞ&´<íó7D�¿&M¦*Ÿð0Ðr†œ4�5ÿ_âfåíª·G4Vy¼'n—§¬»8\y‚c 'Ö­]ýñ!N[xJ;BÙä.¹Ô²Ç«E5kÍÃðôø~ÆÔ¢Ü®-+üò‹© !G‘(xÝáÜ·v §›—ž¼Ñ OR] JÀšØŸq|=GY%›5ŸJB§�냬°R0òH$IÖ'/)=z;TK14p„KœCi&5â߯ ,McVq¦GHv£3!é`É3ŸŠž®t…ëÆPºR!S””Ã*îÝ5| ûÒÖ—¨’#<þÜÃU„Xå�M6¥è²];IÝ�xÑ;üðF—o+i€+Sº¤¤‚óµß¬¤åIIËו´ª%í(éoPÒô�”4}?%mo”´}'%MÿSIó[%­ÿ—’:%96»�ŠåRäø[B:TIf2êB~ *b uÂY‡€”`ÛÙe2é÷«VíBøR䗄섯ÝGK¾T™Ÿ3¬÷^‚
@ ¦{ù®’O×TV5æI‰f¥¼ãÓüÏ2þkb]QÁ¾§B·ØK;b�Éܽ\[
Ô¨Â]’A-ÁÅQ%ú"@@ã¬þ„]£Ëyô-}9·s¸¨'SÙÖQ¥sȪÁn–¯ éCSRFÄjžb¨B¬i^Ì+šËtW­mYj˜„\ŒŒŠW !H5ßÇò>/kö°$©Òv Qå_½YJò‘�4•Õ¢zŸÍ€% ¢Á�?FM.m)ùÄÔ:máí¾P} D€r‰øK†'¢ì
}ö¯rñ�>Ñ«ÆZ=ðH€ìP�®Ô$L<°´^=Ð9„}ÚÙ® i¶z¾A¬”ž×°“Г§Ïs"{fv¿Ä« ]gatÝ ²É;ÏL ‰CnÞÊä®'Í p¦Qa­©)k6 v§‰ÀË‹H`W¿ 5Cð^²HŸ´ÂfKäÉÍÅ¡÷á»^¼à¨Þ©x‰ m‰*!äg­·Q"sŽá^šíÙš¢Z oØ’ `Âìå¼O\²(²t�"ÀÈüé÷5ÂíÔ4“kL#n–xrVyæ¥K·6[Û–¼µUHH=$“™£‡ì_½™×F&ÝJôzã¬æØ¦¤€š©y&Äùš¥…Ùé`c‰ÀŒI“ëÃ6sô³¤E#qäD¿)iíIû¢¤ågIËo%-ÿ^%-Ô%imR¨ø‰š\ðkE-¾³¨)Ù¿›¦õ÷Ô´öþšf¿WM³_©iý%­
§¤!WO’Fÿg‰AÌjZ¢*í¿GaúMσJ^½'•0�²GÍ<¼»¡=ÂꜼvDi*W3(^³Ÿ²x½‰rüFàAɪpo=ù¡ü·°Î3³«œ:“r £œ!>Ÿ $ÓùQ7§U¾�H‘zNp½EuZŒ>õ3á$Ùºã&¸=\’¾ãÊKh`ú¢"ÒÖ8ó>zQÕî-cQ¤è{ÇpÅ/½>arãgFB#–µû»Cu’¬ ^¦¦E‘Ö€¼ÏgðhfÖ–7CRM.IuÚ§.LÝ®”5üI_I”ú$"è=¦2ȉžH²ãzÞ��ÀEÞ�¼ŒJËî n³E#8æ¬Æå5êÂ)ïçþ ÈEÅŒ1µ|öBP5…¹6¸œÒè­,ÙP±¤¦_YQC›ÒÄ™Ø&ERàØÕgw hJ²Y=Uvþ{›�킹8®Õ3ǰ8)ÑKî˜ùÙ¡:²‡ÄOwdËىɔ<fª·™¡Ëè–¨»–éûJÙziv_úL› l:x5‰Hdq¸Hé$²~:®6qŠyÅj;É9“\(`V²Dƒý/bí­Ÿ\4X½sœã›g Ít1ªO!Þ]qKBCóæQx�‡T?ð6d0(¡å•j»¡²ÕÌâ&â4Ú|嘌A]=ÓÙ}gos\Tb‹<i*ŸÇtͼz\úºÍt v5%bns|Á°Ƽ#æ34z»:[+› D†]Ù³¼°�|œÌ}�.4½U+⌲g:Ë™Uk á¯Öc¶Ï“{qˆŽÁ2¡[ƒ„¤Ès#|½9=«›ÐBá]ÑÓ?Jd,GÕl–�¦GgB³l4/a»ÀJmå%�Æi¬Ç'I W2Ñë’([¥”š¿$Yà1¹S2½<S¢RÖ¦IR‰ª,àâî8¦ÀªRÇ0s=u‘‘# }«>
æ…jsû5V‚!Á‰¡E,ù/Ùe�Ü6 „ÑÞ§ð4€HÖ™”>…ЏHšÜ¿È{ ’¢Æ€Iì~ûý 15àõlf«ŸC¸ÕOt7�§ñíxÐÙl¿æaY¦Ñè\ÂÁÆF´©#r6…nEáAì~W@LIŠ
g­[y[Û5½[lÛ4uÕ.( Â8¿ŽÞ;ÍjÙ$ƪ6=gŒ¨±\ÉdÏ ¶³.øxMò°J\çÅ�ÕL­×`Í&¯ëL`zþ5³¬ÉÐOxµ‡çÆ'~¬�¹–b�f¡êÍ›¿ÿ;Nï§f ÿÔ¥}A¶ÎÓ# Ü$åò£Ÿ*ß!—D�ê\*—§öå ~¯�Æ0ì¡ã'ø¹Lj‚Qê¹1ߦ¤ûd¾QîÃ[Ibð`Fé¥ÃÍÊp³Ó\SîêÇé#Ó>hõû£Û‰SwwÊ?WõðÙ½�бSÄ\n1ðÔàø ›Lsµl·@]Ö0HX³Ð×Ú¬GÅÊcG‰§ï¼k“oF+œ·È•“šcCYçg? :ìš7Õ䌊§:òÓÚê†Â>»°nyÛ¢©EkæÇ?ïÀÛÚ¸&µHíªŒóž³“=Ë&cfz7kêÀmÔz–ü6mæýƒ÷GÈÂSb ¨8‡é&´n�Öº[�¹Öëc(È0‰�jFù|íä˜Ód<B…Š3ÅÿûëyvyÁ\z^ííÃ)[œp°9\AßEðœT½ñ¡<¥(â M›Ù‚óBÙªN[[U»•“
Ö¶à± üAé¼J:{bø,Ñ X²Ï<Ù’.GmY )¹†®KÂ=D'ÉÏÉh#Q�hpîAç÷A<‘[€‚mŠ˜•¹�¢ˆqáÞÃõÅËf®g]
dËã1@Vd=ÉÓ Ò±»:±våÐuCÕxÂBƒ+@6§HX™Ä‰ xrP§'\!ì÷8ï4:–³ÛÊ’‡Ål>ÙÏðå|Oö„GŠlÀ ç×å)gp[wß¶øŠÛ®|3;Â.#ØÃšc
DÖKï“:~ýøäß?Í(|“ endstream endobj 41 0 obj <</BitsPerComponent 8/ColorSpace 42 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 39/Length 341/Width 105>>stream
8;Z]!;%eL($q0pNcbniC#K_+GJ<E15BI2-QYYN4g$*WZH;oGN/T@%8hnR0>@ETFsU
;=F[:4pLp#*6itT],LiBHTLDYc,kEBF1[ZR2bGkRVNX43#"`0i&ind`_,9pl5r&8"
:H1]("Ai95^_=lhY#1edW,V[/)5X"5Dq]kTQ2):g\lk5k$PX6=OAr"<R6+j_nud;u
nb!/UdtrFZe>1PRaXFHt73[miI*7dprenMq;+K8hRSNRQ/fH;GP#AtJL*5c[D[S'.
I:JI\Yu,Inbp!]Zd8PIO958dISBad#rhI+)hkLF9,#Yl,.^fN>42G7?VF*,\L9pMb
q@!AnH$W<~> endstream endobj 42 0 obj [/Indexed/DeviceRGB 255 43 0 R] endobj 43 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 36 0 obj <</Intent 44 0 R/Name(Layer 1)/Type/OCG/Usage 45 0 R>> endobj 44 0 obj [/View/Design] endobj 45 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 26.0)/Subtype/Artwork>>>> endobj 40 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 39 0 obj <</LastModified(D:20220226201040-08'00')/Private 46 0 R>> endobj 46 0 obj <</AIMetaData 47 0 R/AIPDFPrivateData1 48 0 R/ContainerVersion 12/CreatorVersion 26/RoundtripStreamType 2/RoundtripVersion 26>> endobj 47 0 obj <</Length 1492>>stream
%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 26.0.3 %%For: (Michael Shamoon) () %%Title: (Color logo - no background.pdf) %%CreationDate: 2/26/22 8:10 PM %%Canvassize: 16383 %%BoundingBox: 152 154 2263 756 %%HiResBoundingBox: 152.941359391029 154.946950299891 2262.04187549133 755.845102922764 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 778 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 2409 909 %AI3_TemplateBox: 1203.5 454.5 1203.5 454.5 %AI3_TileBox: 826.5 166.5 1560.5 742.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -2243.30449984141 2991.47222563102 0.25059563884769 0 8194.47620653967 8192.48096032429 2548 1389 26 0 0 6 45 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -2243.30449984141 2991.47222563102 0.25059563884769 2548 1389 26 0 0 6 45 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:704 -46 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 48 0 obj <</Length 34044>>stream
%AI24_ZStandard_Data(µ/ýXt~´F-�D¤™€æ£Ù¥¶[á" ÞJï§ënYÉwzOê°@3×P ùÑ’’–-¢ Q§CÔÙøÈ˜ŒòÃRA˜Œò »“±à@±¢`© :ëp`LÆ‚ÅJÓÐáÀ+QìdÚáÀ"¦X!`²na,8l&Ü%ðË„:¨<D�Í„K¼*8<X
X®‰ƒ��…æ‰Qì¸(ã jQg#±*� -PÆás°iI�È.‚kd%
h0)ÖHDé%%
ˆbGAÃ'¬Në³%;RÅNv¥+!Q0ðHEC‘qØŒX> –O:›ÑŽTX$ëÒiu6›Ð!™…”—ƒ”¡xh:JJZfAKÃÁBh”&bÄŠPD±“9i8q0‘%"aG%¡ˆ>B£´A—θ à>)¹É® D‚Ëžd¦€xÙP)“PÑp°/%‘¥³ ±T›uÙ“•fëDÔµJÊéhiùÀRAl²«DÔÙp@"j@!âUÂ5€…¥e‰A †¨³É®‡¡(€t6$
uØDxˆD`D�VHg“a 1)€t6Ù…­@T.<ªДDÈ.‚ˆèaƒaà2ÀX=ÂKEÆ‚Ãt¡�ÁxIˆH`‰t8X�¶ÂÉ.ˆ�A!4J#UEBÑél2D¬‘Í.Qì|”2“Qbtˆb磳±TÙ5à¤áÄÉ2ŸH�ÒÆ�Ê£³ÉÐØ˜Œ$hG‚>p dV�ê%ÔÙì#-«5>›ìÂÐ�Dš!»2J8U0°ˆøÈ°€H£¬h$U(·%4ÀémË.‘—çB@ð4Zlœš¼l™(iå£G� P¢‚h€•]&¥ŠÓEFð8(¡��Vad+^qabØd—FÃÁl �1àAPÍIÉCP! …ÄŽFÀ¶½|4pò +8P«‚&èl²‹7š“« ïl6ˆÏÇä >N@Dˆ$yŽÐç ÅyÈt@ôR c8,©ÚT*8ÙÅáÉ<D<̲m¸âS¢‰Äz «¼$ÄÉ•æƒqTö!p€’…O†FB_<„88 ¬xD&Ü'%³Ë�•Á±9Cf�¡!"G¾ )XŒGv"» ´“
O„‚ˆ„Æ€´q’2e�Þ‰Ì2:›Œ¤biÉ® ˆõ`­0Z
ž$3iX‰ È. ç$°y¤6&N:4% 0œ6Ñå …Õ!`d0‚£ÓÀCÊÅ iR’)Ä`=$¥˜]& E$0þc`%õ KKŽ…�à½V ûl 0ÏäAЕìzÉLF¹âÑ¢ *ƒŽ‘¿’’–&šj »FÐe,8@,pfB¥y¶-S'¥m+ÀÈ.ŠÏB›Xô*aÅ(Ôá Œ6­�‚„ÛhNb:¬-»0$b5J"˜�C«Á@ÅÚ¶”ä(™P—%/[v%l4'= &Ie:‹P"…hFPÃ'%_ò²¹, d„ÂÈ&»,àDË)";@0›�lK)H”dv1Œ-«
(ÖHB‘ŠƒÈ. –‹‘‘‘ ’’ˆNˆÂa@^´D%o`båÑ à!Ô‘1IÀŠÂ#ENL2V6TRM mD1 )ÙHÙ•¼¡QðƆÅVàaÁE"»âBE‚HB(,OðJ!H¹z•6`e‚*<)„„XD"DÚÂaY—QqH heÈg´OŠ<LDYéOEŠ%#x,Ž �Œ„2».¶E£àUBC Ò" â@³âÙ¥ �Viå£IƒµY`mŒ€ƒ�΋ ‹ã²Ë‚C�„£‚Òá% ��‘m$»P¢çh<8Àè,Œlª6@Ƀ–g<`@5Íɉ5‰l,†mË®Š&M�T¢Ô¨8]d «Ð@ve@p„R¤c
, x2”"'™gò²e×JUpÀ2ÀâÉb�tdmÙµ
%�wòéh¹Œl& g8èuŒlÙµò4Rj€’ ;Ð!de6š“ ÍÈöÁbØ6éÄäeE°‚µ¬Î.Œ¨³y�$vM $²­<� –
âY>8yõ¶±HNj8ƇÁŠÀÔƒ‡’ñ%,8 º¢1t¢eªÃt‘#MIÇBR4l²ë™@h”V4«ŽAĉA Œb%òÎf1@ñ(l˜Dèbd!»BÙâ<lx„B@-!œR ¦7òT¼T˜@¼`¶í£•Œ²cráÐQd"šYr‹+ªRqÐ,*!âD]Bª
ŽAŠÇ¤ 6 0Àd T°F6»X! ÔÁAráÁˆˆR>HjÂMîB†€¾ø`˜Œ²eÂ;ÓÆ”àð@ñkaA`eãÊ|äy(äq‚r“ ’Ç™´hxT+ Ff ›Gó1ÀÃ+ ),•‚‘®D*< øóàªfuveh>O½AK ”ÄÈgàEá :0¬8€B@±cdA€
‹ó ¡A ˆhq˜Ä‘³8Žä��ÄÉ( 0X%-x8‘ô€Ad²!•
Î ÆCK*Ų ”l²�0‘
ŸÕ@-)…ÇÊdv@2TjÐ ±ˆb
¢ÅáÀ ¼�! ·bÃIn­8l8NrN<6oâ�Mv%`ŠÊ¤�JH|6<l»ZÐ8T%< © %UÂZ)í„RÚD*k¥UZ•¨¤N¨*4ÔieÀª”Úø´B Œ ÆpZ•>:À)åÔJi(()ÕGâÓ*�¨6“'UR'Õ©UÒh¥T¡–Æ:yÙxyj±4ОP¬”)%�Á²©ÐÚ<-ª-ô°l¥ŠMkUJUÑZ‹j[1©RªŠJ›h€Ò&z¥— M©N›
õRO›
…:•R'-/+Z«´i)Mtú¨N<šJ©E"h€Ò&ÚÕP'Žç[ ­V¥�cuÚL, äRP¥XR/딢Â4Ö †*¥@) ŒUÂVL/,ÌtB­V%¬õ¢ „ÂJ'L3•P+LÕÂP4-…½¨ØTX K�J**©Së„¢a)–*¡VØ‹j�ÅêÀ\„‘*a¬¦¡N)Xª„©¤N”XXJ[ÆÂ0m¥…i[ ÓXÚ
6r€`)†¢±J*¡©”0JB ŒV ´“lj6 Å*… 6*[N‡Æ‰´•PR¥ÖFI„±*áÑÖæù(‹e+U¨h%!†ª„ç“ñ¸UMCA˜T �õ¢¡P*Sê´¡4U ÊjåP-ªÅZ­P-Ö¶Z¡¸m¥úâ»Ux/êûDH`" Vf€S‹IWZ*×¢µR'×bÚÖJåV0­T©T©tj¥Jn­uZÀê…åV0¥^RkCÙVP­XêDU`uB™Ü*-­Ó «äP6“6ÕÊê„Jq([+¥�XL%Ô‰ÛP¦•MåP6SJåÄÒP܉ªÀ‰ª•:mZê„JÑPK‹Êºl�Z'ª§”Z¬M•’:i*¥U¢hêd+�8–•”ª•b±´mÕ¢2•T´”c­J«•IQ޵Ú4”Ò
˱VpÛj…:)¥4P§V®J¨M@•2­à4TÉ„Z™Xe3utU+ECAušJ©åä¶ÕjýU-ª”m…Bq­T
J@C9ÖŠO^X®•JÙ\JŠÊm«Õ¦ pÚ@Ø'Š–:¥h ÌVJ�Ntc·
€c­X,-Õ*¡RZ˱V›Š[@µâ¶ÕÊ´9–•UkÓH©Ln€U)…r@µ²¡¥lJ À Ãr1UJJâD5�¥J¨“Õ‰…¥ÒX›&€¶eP¨
¥2©¤J›¦RZ¹UçÄR¥N˜*…Å—Ê‘ªlU£�@C­N¨�²J'”;µRžw�m`D@`œ ŒLõ[¬©¥²à`(ʦ2iœ4
VKc±<ê¤ÔÚT«DpZ¦(ƒ1¨N*Ú†@C­ZT&luB™P¥L…-µ•:m«M@µZaiX”ðhëeÕz¹`¬ÁZ^N(Z� k;…¾þ¯TñµV©µqb�<R4Òn„íÖãkTˆ¹ëþƒH©LÚF4””
¥}ž2Ä০»å†*©Ó
ë”*yhœZ%”¦‘®€åJ…�i*¥•T‰„�L'�†:)qh-% Tɤ"±@›ÖJI˜T Vi„Ò62Ck…z IxX2£”J§M5òMÑH(”öaŽ�¤û6E#½¨>(”öÑ–ÆJI¹(µÜi7ÄÜ”*µX'�Jêíä;¥µá®›éºF+E#µN©ŽVŠFR¡›J«‹t•”G3•B­•“†·b*zè ±©T¨P ÊiýûeÕÖbi›Ê¦µX% LÕzñ`V©Eµbm(•©Ýi…ò'T ¥´zÌÂPN›
6€)¥m¥+UÚZX”ð¨`­‹I•bY¸½^:¡JØ©•*=m@kaZê„j½¨°MKÁò$¥:µJ¨—– Û´Ui…E u‚i­JÅ:a¹aj*aÑÙý à$ái�P§“R+¦ °i,mÃÀT%<ž’¶yVªí€V+E#µ¨Z-ÕI¦>õLu1uWZ(' üp÷­+ŒÐe¾ÖŠÊI[`Í´½¨64Ó ¥Hai)U
Ec1©Pz:Ñ6¶’,°¶’,°–¡EÕb½˜JX)ƒL
Õ€R«ÒP«–kA–Öz99m­V)¥m(¨ÓЉ�ÕÒ64ÔIé´•ÐR«„Rji-«ZñU ¥¡¨R
Š*…j
AFCQY�*>8 (Zˤ¡´ –DC©T ‰Ž¦I9é.%Ü“—²
*,Š·‚–²«°‹Ò/EcFÑÁ”e+U PB­X'Pk¥$8Ïÿ„ñï¥ÖR²È`*©ÓÖÚÐPT¦SªƒƒiCÙJª“ֿɔdW¦Ù”êÔ:±T¬$»4T(M£•:©0P%Mƒƒå¥mó °•RªSËtZÀ8%ÙUj•@%QÒÛÛb�H— ãºðq‚¡µZª„�’Š`ÀR4»8ʦ˜^X^(XŽÀ*°T ˜b°Ä&°¼øÀòò|`‰écõŒúÞšÑ%ŸGèÛïÅΆÝÏõ·£Æ.1±cÿkÝ�ý./ ,¯Ò‡^Xj¨UËiƒs%`ZKÉ‚ƒiFZ¨—RŠ"�¹°T)
ÎÅÒP´6Z›'f¦b™«˜f.MæBIE8LÃY1½¨80ŽfÓP¶ lÓTJ©R¦ à˜F[•V60”Ô‹jÕ¢úh­Ó˶i(©SÊJ«„ñÑÒR%F+u*‘¶Rª„Ò8‘X() �­°NN¤S«€�MÕ:¡D`œZ&mÅÚ4ÓieUÚTN(TéÓÚ<­Í³Ò*a¤.R(•Š¥Rq`+¬— Û´V«dÒZ¬64”éÔÚJ-¬JuÒ2ÀÆJ…ÒHE´lª ”Á4˜¶•P!ÍêTrL£’:™J–Á4-“VàäCÑpÚT-“摹T))‰Õ‹j¥N*/(Œhq©¤N­ÔiÃH©,JV/-mCE…RmYv±Z)­¥EõAIEdÙµQá2+>%›ÒZ­*´­Ðõ}Œs£jB±}”Ó&*ùVÀ:!uR9mšJ #{h'GÑJPRÐZ¥Ô¦µPž’Woì½Å"dÅ`ûbq{9_LØn£Bì_d¹ïÛuTˆ%ß7„ü<zúºÄ6•Ÿïî·ÓÓÖ†1v';î]lA;y¨8RÚê¢$U“]�õ.´TJ(I9•´RZ+¥ú”¤N*DÉ+kÓ(‘Z^,`ë¥bi-Me+qh jmžGi(ªŠ(áÉ.Å4TÉ´¡©l%RI¯„'»¶Àj�R›†zÑÈìÞhm-¥²À �жs—ÏŸbîÞBÔÉ]{cî8Wk•P«�#fÄbö²X¶RËJµiFRªÓIEÓ �IlB¤‘eWb ,•Ô©ÕÒ64•R‹DÉKx² [ÐTJ¬Ž–ðdüÇ6í¤åÅuz�(Y•ð(Ö*µlª�†:…J\“],¦
€
…Ò@°R+¥©”*°Ti€¶Àb±4“jÃh¥´–“
”eW¿ß�›ê �ûcÌÛj§Û·‹i„1nz|]»bqS#GgíèXšÆi”e×óÇøíb튭+¶„Jê„’zQAdÙÅ�Ÿb šN,VI€Té“eW–º±]Î[Îb Z«J©Nš”•CI½¨6SéS¥0L¥¢Ba›
¥úd° Õ:qdÙ¥É`š”JÕRZÙÀPZiÅtªÈ` ›*”e»to±…”êÄÚ4�(áɲ+]/¦ÑÈlªVik±^P( [ØT­’¶}²ìÂÒ±‚v¢Bñ(l``²$š˜‘m ö…xNfW Èd9„dM6$CBL%!ÞÙ¼†ˆí*–
bü³Q ÐÞÙhFN:›Àà� ç“Ú¦wms0 '³K9¼³I ”�ˆSÁˆG†Œˆ´Œ–C4�2„Fš…øl`$(@¤†'»T
BƒáÁA³ÞÙ(´ÂV2JîÈ0©fxg%LÊÉðÎFLš] �…/0exgã6*'Ê!…‘æCÁHJ«ˆ4»,N2."Uù¬8Ú“$d—‚iCÚ”ZQC±r� É ùFàbW%=xÏè�sN¸”IIª‚¤�“ϲÑÌyD><P¢NŠÂ@Â"0Xbˆ…Åy@ùX¼ìúÐ�|"^P@Z(ôòÉ^§E€ I+Z!‰à@@ÃSAjm=$ŸU½ª‚C±ð0:}�´¥ aRMôØ—ñ€AM˜Anp²-äáVŠ3ÒOͶ<FÔÃÁ ©ð¬DŒŽm T6Úº8 Îr˜6ü‰ήVFƒ¶Ùc<"КH‰FKÓ¶�
%ÕÁp%`ìõƒWgŒg$'Ê¢jX!½‘ZpH¢<a�¬BHÄIÕƒH„>iY]aráЛ‘ ‰Tc‘]+
(–XÀ©0â4¨$(…w6
R‚@!‰ÐÌBÇ�|@l¦;š”pNÈ)D¢Øqç¤Â(¡Á9¹! Z KËLIIËRÄN÷ ¨Â
kd´‹TE†À„c€¢ÁàaÎ:ØôF¼³ñ�h"ŸUbÀšÆcVaªPðx†Ž!äÑòìê-Nºh4¬ EK-NfT¤IÒ2}´ ÜkaÉ\*L¶„1${Â(,'JÂ’X>X8© ÁÒ(\:á¤j%bgIN8©N8©‘ �h~p:N.NJ]!(Aiv9ô„“( íà!”]"3à„æ“Š&$N¶¸ �É( t6ïl˜e£‚Ã08œ,pù€à\`pr»()$-«áIÉ¡‰D(Bƒ“%Px²ëƒ“/˜V '_
°FV#ò± (é$D$I‰^xT
˜#ÑQøt6 ÙÅ  ç´:Rš¤ �Yظ¤h´Z–”´ä¸L °p²£¢’ « FIIhÓ¤”Tyçâ£"CZ¹$`>PJ0�@ ƒ‰™…”té´V/.'­Ô Ëɶâ¢�„œœ¬xˆ°–€ dàd I�hZ, + !ˆÈÉG Hg³*HÅ([@6 Œ
ã…ƒ`£ãòq(@`i!$Û I FgC"B‚‘òÀÀ D+ÙÕÒ@FX'"�‘Hv©<>0""ûa@€ÕÌ˾<�Ø"8*̇€Š"ÀJ/[v…d¨,‰#A ùhtá„7Ú'õeY.žUÞé(0àFF‹AÄÄ–†¨J*bbâ2¹eZœtÙHèl’ã:"º%t6
‘]‹„ÎFCМŒ^2.DäÊÓh˜Ø «ƒµâD$6l¶ �Egв§aÛ>Úfs°.%Nj$tve×ÂgÓœh²‹AÂ�¡· SÊ.’ ‡…ϦQˆ$v˜Ó'sàRâä“
”PžŠ¥$äyö(|Ä Ìvp¡â@pv�4X&Ò"¶”l(¾I'&Vô!”iAo…¸BÙÆÃKveWvy°|pòÀ“€IØ6 fôQ‘€Aa�¦ÃÌFh0Iâ‘€Y° Á„œ3m0,� †tÀQÀlDˆ(`Aƒ±m™6˜ìzp¦ &†Xh0¯5ãqËá&‹1Ù´A%$c‰DƒC‚Ð0)CG&%A“½Ðxt<P pñXeWveWv@<dW‚
DãÀãÁ„ã’z`‰0)EdWve£”À æB*`26V. ˜Ì.
 -HȨðH@°‹4\0F&[qê¬xRš·àX¤l&…ˆØ”ˆý (|²K£a‚Æ;l[veƂö�
<::£ìÚÙÕâµ;heWv�´B! ƒ…‰ Tˆ38,<ÜbΊ¢
x�4"uÒ©—UçeƒZñTp§Ùì2pa–‘$* `øŒ¨2ÖÁ;�Hê€âóY` ^:›�˜‘ɰ@d×I‹XxÐ -”„Z&DƒƒÃf f—ËÃƒŽ´JB8ÚÙU°RAÀ  BJá µÙ•]¬BQ ëÔ"òp<.zÂEˆ�|8<ÙUúð‚ˆKÄÂCAÁgD•e—Áá`=¶v •†ÁÄÈ'»P4
b¨ã1TÐÚ8¥PÉ Ê/NF¶†Gʃ…Éy¬”^@Ù¡JðLøÆ²È0yr•à±�±é >£ «ãáÀMžì
¡¬N4ƒká!9€–ÄZUpFÂåadÐ!±ú‘ò€ d–SâdBIG'c© `VžFÃÊÓhج  „D¸ƒR)‚¤1rù̈‡e‹Cvm<8<+!§M‹Àq2½àEJL&¥ˆЇV) ŒM†– Ìæa�m¤zpù8ðxØ B§ÏƒKH$B5 › ‡ hSÞ9I5¤|6 *Yax@(1mvõ†H„n©l…ãâB2/ž‰G@”)ÀÀáÉ.wPhäã""iØ@#–+#TÐ Ov‘¨\xF %¡•‹g�áh•„$(<4V*¸ASëÀÒÙ`R*` 4˜Oh0δÑdB6˜ ”’L¨QÌC&dƒ±8à(`V”0jiñXìËŠç Á‚%1<+ZÑ¢áAµHËìú�Ü‚s°¦OkR��á� k8Œ4»ÔÂ; )Œ4”@Aù€X�„ˆ“š�ˆ“‚j,¼³¹PÉÐÏB”]Já��ʼng’:(“ÏÈã;…v$(Ŧ¡3¢ù'·7eJfÕ¡°ðpà‰†Þ,$œ\ëãÄIpŸ”Á<ì�
¤³ÙŒ6.)š‘w6­€v0j•xgã2-NfCË Ä;—Òj¤�Ãá IÀŒ^6˜‰Ž&b¡ÙX6ìDPÙ…q“í°V J�‚z@…2"=™tTpF."Ôz8&Ïjq2º°˜" ²“g2D���xgC�žþpðÀÁÊR@¨QKȋ؀@,«´8™]› ‘u‚:“Qr´�Ö ãC;R* J�BÈël ‰w6£P‡Ÿxˆw6°b#B­âб'[biø”4ãQ€UÑ@I] 'Q™É(]å„“^F%³êŒ8b6VÁc ¤ ‘M 0¥Ó8ádvµ8”,%�NL˜Ã;› Cbx8}˜4$ 6’–ÕRÏŠâW>& žÏBCÇËŽ'/HQ¡·òIÑ�h �!» ý èF„“W Ù—âpà N²PX#«'¬‘M N:'_$08™àÝ|0b«4J“Qn‡ˆ“ÙÕj‰¼q‚æ…ˆ“’ˆ“[GÃÁ’(„D$›‘†Àd”šQv%é�äeÄ…:$‡ƒMx°@¡ ™ Jf×H¦;œTNéô�Xy8°È€žÑ‡GĆãœû$Œ¼³IЄ‘w6,,-3òƒ‘sLFÉñŽ�É(J> ¶¤­p¤á`)hJB"-%•�eB/YhC2`…‡ERµxàC+‹Î´Áˆd¤0ÔIƒ!1à(`0Ø£€a`él0%… æc@EÂÇKh!7‚7-›‡5*$ÞƒÑ,V#,ÙEq€ñ0¸Tp æä!HXùÃv1PRÎÈiÃ(H„X¡�H„0 ½B„ˆ6:XñWa»AbÃä À™¼l T†’¤–—N¦b7&Rˆ&»V
2ÛPX ÀX¼ÔÃæRб²ÑŠÒH)–Ì£òØ(Xx$ ��£áq Y15xB$O(ÔbuXœ%­> #  ³¤:ëqqÁX�ªc’YŒ‘€(Qh©0¼³AÑ
2ãày0©Š ‚ÐG�“ ƒØ™ E�±àÄ��ŒeÅ`B´�‘A `ÆGf€€Q ñxH‰£‹ÊIá µÛÖÒhNf`ÉËæ‘Ò—�A%ÂÚ8Û¶ed*L2»>Ø$[¬Q’)$$y1p2’šŽ„�Ìx( È—�DµÒ#SVXéq’àÈȹ¢¡.R%¥…”%¤Tˆ¢$�T¡ôdP„rA¡@Dr
DD¤ŠåıÉ. ›èÒaØx
48ÌʈäãAÐŒÁF$Ãl% ŽÍƨž -ÎÃI£ƒ!@@?¤J8üAã ¾x ŽØ\D4›]J‘©O˜ÈVÈEˆ1©Œ–ÅÓ.8©r&Ùª¡ó²ò²ÒÂáå¸OŠ‚û¤$Ç£áÀeR>>4[If>²ë!$³à"â"2àãd TòД� 1Yéçã@"ŸÏAJ®@V "QÇã!»8VviXXZ"hÜÇ%?¬))išìÚøØøØø0p&£ü´`ˆZ0&c�âÒ¬Ã�3  ›lq8ðD‹K,àìšh™ÈPè„�[(`
u˜pVX#+Q@³"!!Q Ê8°Zš¨³�F*¬Nk4RÙ‘Š Éš¬’¬É¾ ˆP6Ê`€6@, P¶jð €> ÒÑR-lòÜ„—­€ :›Œ†ƒ-ØPGDDzPX@� !ȽQ‰ È¢3‚‡!€"”®Ñ4Š€CF³â›Á°Ö1 #@Å�Ht„ˆxé�ÆT d(uáCÓ > �Äñ `i8X€:‹ùe†hãzUÇÆÆ´1¡€Lp >Êâhùió²âá`µTx(âÃH:
4K‘':Z­*8,¦‹\±@øÃF€Ã†T°F–�E‰P�Mù|˜u¢o+ÙJ6."¢e…MQpð1`€Æ@I?.""‘‡‡‡�ˆHÄAJ¤¤ä"ú|® ‚. KS––,,-5&£Ô””4ŠEÖáÀŠ…&cÁa“A‘}‡SP¬8/:Ñ2Á.±àeB'Z2½PÀ<Ñ¢™È,pvM´ ¼L¨C«Ád”"MJI‰%;RaÎ(sù€XýÀ8qôcãÐzé´¸OŠ¥€%³édB%�H„‚D"t•A²‰Dh F$‚B£�Ðaà(€d  "Èl/¡–Œ‰GdÅ/>"H\R-/$š”��f£Æ¡0ò€!x$‡°òí Y# M²-·ÁäeÑtvh)p錠†¶BÀÚ€°€(¦’ 5ذHÑ¡VÄ@H¼ÍPYgò² ˆ ;Й²¶•§aPIì> Ì„3m0V0V0 q""N(`HØ£€‰ ñHÀ”d¤0Ù¥ÂZŽ„?Ll(Ôö1¢ ‘'Åœíh€vB@„ÉJ`2“z€�6OZUŇã>)É:�h@>@X'î“’Nó±•|xf¡3 ›Yx!i8øø@XДš²Д\�¬@D‘ýd­ ‘u.)š�ÊC¤òPydWLJÁç…äAÐ+äAÐ Kë@àHmdlˆ:›��—“Q~²¤¤eIIË—’ìÂd,8¼<¸Ä~™P‡‰–‰u‰ü2¡ê0Ñ21@¡/«XÀ¬ upÍ
kdWX#«90È´F6ã Q "ã áNX#;Ê.V§ÕÙdWË¡¥ ��rìH…Õim/Jm¤¶ ²ˆP&Z��ˆ¥‚PUˆPD,Ȳ"”Mv…B¥ÐËÇ@)#êlB¼JY%€D�€D"V 
ÙA‘²úˆD¤@DÀeÂÀÂöàAÐŒA‹F'£q‘I0@ÉŒ¥äeÃ4\ h(/
Ú‘ [ÉÈ@"”€ÐñD0ÙE0¡ÂÚR4PÉ®K¦1I�Þ¶€„·è@1h<dŒ`lÛ2È&¥cD$ ïâA„R�$4 ¢i�‚“ÌŠ'²2,ª†Î&»¼„Bóaél0(% ˜ � †¥$³Aâ‘€ JÀ(¦D*`H,� f£ÀJæ 42˜$±ÃŒX¤ä…ƒ“R xkm 8»$H"±B2vyH©à$X8�‡ƒ�
çÀ‚Wëdc0±î“’î>)Éî“‚Yù€ØȇÈĪGÃÁ~x4ìçeR2»¶’­DÔá­$»2 )Ù"Ðp°.³��YHÉìRP­(eÅ@©b ä*J%PQÇEDDÔðáB(éF4PÒƒ—ƒ”+‹èìè  ”àr� .)+‘LJÆãÃãCB$B?.)‰àr�’ˆ„ݰ°´lبV8§ÀàAP‚~˜…¥¥ÊCåÁ¢Ž�KµàAP�{t PòÃñÁñ!ŠŽ�Æ]
›ìBÈhLF‹í{¸Ñ!䇎—±å÷ø|¦Su^ýw~¿.;ã˜úê{þ}êÞ3¦Ìúx“;]ü\¬ýùÂ×Û®î!cð%ìžÌο¡v?NèšÎ#cãÆeèÝ¿\ì_.·rg¿Ûl¬ªîúËÅÞvTØfs7û?§®ÞQ¡«CL__ÆŸÓÎÅ^Ÿ?†½Qù¶SÎÅ¢¾Ìc¶?èþÛp�ÕEÍõT蟡‹Úªñ½»Î\L×ôÌå„N·±Î˜�¡¯:cÂ×�q÷±ê;Ç_nç0êezQ3Ÿ�o3ìLm†ïu;_Õý6®ròCv®©P3�S¡‹ûÍq_×?o˜ÎëžëŽ Ó{5ºý¨Øo„�ßÝ¡‹ÜØ{¾1¾µ_Ü]F}ÍïßýGÅ:ç/?LíÝ]¨úÛý‘™×=õjÁ~{¹ù}g¾G‡¹¹Çø«ú Ÿö¾Ë÷ÿ¹ÿû®ß?þ÷|ù˜ªëþÿ½ÔNçðYó}ûÓÈï岦«Ó„ŠE¸¯÷Å�ãBî�ýâ‹oӹ·0:;]¨X'ÔÖèxÕ9¾Œëœ77ŸnTèÞB½Z^Ü÷ÞcoÈ3ú÷ƒì C…Ì1æÆ×„o7÷�2Ô·úði»^ØÍO?½ßÝ+TýáÓÕè`ÂoÕÝÖ�0:kt~n|�� _¿a¶ëÿ˜ÌÏú C÷Þ³¾Ý×ù:}Þ°¾ö¨.ú*¿ª*»Ó7Ƙ0w:�ðÕ;Us!»‡PŸw¯>„ÏûÞ»ø /\èÞ¡*Ã^fè¶á{ßÔ_ø<ýi¯S…¿�áòF¨Žã³ë¦¶{C×ÿ¯á²ÿ¾WýÛ·ú*TÇýÏ!?Ýl÷5FŽ«¯]ÝÓ­ðÝç+Ì^è¼­.Æ÷Ñý)û7tüíè/�Ç·¯FÖ—îb|ήú/Ó£ûü˜rÇÈ‘ÝÓïØŸ™›îî·ïûôÎgMoÍO‡.ú÷ó�îÿùiÔ9¹Œÿù˜ý­¾ºfèñ=FøÖíƒìÏáfó¾[9�[]7Ô'}þÓבÿ9ÍׂÅ÷m~û6º„ŽÁ×ÚÚíï¿§)‰ÿ½Ç½¾Ÿq9{ëEêçn9¾Ëȯßϯß+»O >w‡ÿÑûÔ]�ÏAíøÞ>¸ÌÑõ6¦ùÁî—Ïù:ü×ÑsÕéÃçÿtÝ-»ê[Èêpsݶ§&Gç—¾°]•9ý¹vWŒ5ùÙsc«ú{0_Œž.Ÿ+ö¯¿êßÙ±úöös;® û£§vŒüùTÛû=—ïz}°�ñY£køñc¾ußó÷²ÿ½èÊ]tèêúŒßÚ0B÷Ïõ2½mÖÍ|.º+ö>|¨/a;c˜ïùƒüN݃1c»÷v»SØî­Ý ·{¿çTæ¸nac‘7ßëî}çìŠé&»ç?çt°ÿWûÕÝ/·7÷‹:ýÆ4yáﯷËõÖèOUŸ•]¿Æ^fúf÷ªsõÏ2|»­ñês®b›
¿Õ£·;Ž Wÿ©Gã¾×;ú¿Œ¿Q7Õ½L�oÛŸ{�ázîrt¬ýé¿ûð±FW×~Ÿ½ñ=‡¬±Ûu7ÆÏ«Ïª�.™{ïªÇÍç´{~ܸÐ=küï}úØ=n æç÷Ç×è¸YÝ÷9o:åÆö1s„é¿.�û×üÜ#ÜþÐs]“6ǘœúÎ�õjÁÜ9znü|ѵ6ƹ0ý½+åú`ñ5®Ã�Ñc{¿÷G~ëþ±b“úgäuíŒÁ¸ù¯?ó¹|¬×ë×ÉìÐ>—ÎCælO˜ìØY±ý?»ÝÝÝ7cq�c„Ï_»×rvsB÷üœ7j«¶GçÍØ/÷+üNè ²bñûõ»ƒÍû2Lï|èRc²G�ªÙ?3Y7vgüo†ïû}~ÜwW±~Úöö«º÷ûf¸êùù.#¿¨ÏÌ‹„í²ªë»¶ëg,ògä¨Û.·Û¿sŸ—£[È·=ßõãs��q¯²¾ËmÅ6FU†ÙÚÐñB†ûëžö·>·ËnlŸ¿ìô×î³óó9á{cÝ·÷ý9Y1Uc|ÞÌ�ºêÑ9ê»õ©k„é›ñ1ûö¾ÓgÅžs]úî·Æ}÷œuŸû[V—Íz™Gø¼ Óí2s|ÞüŽ“Û×­Ï“{ããéÆ�ñuä܇~cƘüv?ݾw?…Ñûa&LŽëÞW±èQŸ¿Uöý_Ÿw:ïýåèã?‡�SßÛ}ï]Õ=²îëÇÐ*sb�Óói„ºêVûú0ë?vȟ—ýÓu¿áw|ï*¦ _òB†FÍØ­ÙÁ]å?cl}ß¾î§6t�W±¸¹ý¢?7wÇ®ó^Å\cB~q—ÕsµÛ½G×õÎÖU£B÷Ö˜Žã߇þý�ïûÓ_¾ö;W_*3Œð=è^²^¦Ž¬Ëî—[ö„ .d÷8rþîKÇ�‹îýÑó¹ºO^]�FÖ‹„yC}̽ù.cYŸSí·Yßsý{Þ×ÜoNÇÏϪð“ß;÷}ôM÷<5Æon†ü.zjLJð=å§î_jG�›1>tןª©áæ6»†©ñýcê»{1Õßë¾§™ÐÁT}°sÛÝAUÝÏ_¸?:_Õ}øOr¶cV�Ù¡îSuϪŸ•w#\ý~øð¹ÆèíºU±VþØÛ/B}­ßP�óútö.L,¦ûûïíìûù¿Oö‹„½—ÓBßáãÌîÅ÷z3~þ?÷Q¯öbÇÏS—n;詘ökÙ¡ÃßoŽñ½�~ª&¿'t¦^&ÖøéʬìXU±e·½U•SêsqU1}é±ù£v.{¶GvÝ 9n'cœÏ�.¦½ÍÏìïÜýâSدÛ)„0n|“ùÕ_ì÷<¾øÞ?íÆv>‡Êþœ?_&Ì?S·›#äßälöî—PáÛu™«ØkÃ÷�aFøé^T½LØ{Ž
óÕß‹?»£ƒPkæ|¸ÉÛù>ŸŸ�BUì=ØêóÅ—ã>§ÓW½Z0…qa.ÃÇÕùé»wÕ Ä%"��„+å"=�É¿‹žÉQWßBýÝþßÃèû1Bè0ö¾;kd^Ø™>x™V;¶îú&»ØŒ­~«>ø^»ãþ†ï°{ݱó¯sÆŒïAuûøw7_„°¡Ëgì½\øò=g;…|™T}7úïþÂgæ—¼Îb®÷q÷c™ÉTï§/{á?Vè¿ÿþµýõ‹¯¿ßÆw̯ý2¶G}Ž^¦ædÿö÷ç1~êÞ­þ:È�Eµ;_TŽîÄ8~T˜î­Ï57Æüàêã§ Ý?¼LXìÔ|o^�η±o÷1o\v!ÆÉ =[3®{m,zÆUeøº�ƒ¬êœËÎï^öÃÝd¨óý¨úÜ‹ðaz±<X¼R.’j÷~úº:N~êëï®îy¼Hä|¯
c6t ûƒql}5zC_c°ùÁ}/ÿÛ5lì½ÕŒ»9�Bx™â{ëo}Ÿ¿ÓØGïfæfwãÇž óãeÂ`>Uÿ^ÓÅï‡ûïQSÓ]~c1ÿÁŒêÞNácú"Œûí
ßAoì?Â^~Ñ;�>gÂ^×�wwçGeG·±—ÐSßazºç�y³òû¿u«Ýù�„ÿbtõåævæÛwþŒqô˜¬ÿü­[¬ß÷¾Ž«.:cïņ9áGçþ— s}ºúX?×u3¦‘ÿ5µa»ã÷ô—Ÿ�°áº¸Œ½Âø^áCU§ÿØ2³?w¯ŒA÷§�=áºSø— Ó„ûìt1{œ¯Ÿõý»Ž�Aøxãk.»ËdlŸvªîö¦ƒ 3îËøÏÝ.¼L;n¿ÆWbßñ騩ì^\,rjB…1ãsû Û_£ç¾Çž1¡îë‹.!¼H¯ÂŒÊ�»j æË�Yáú®ãdl¹áÛ÷í—®#\,1ey°ÖëáåÒ<X^øÀòò`y•dCGkó”$¦ÑlIt�*>8­–WŠ„iË\'$,±t,1÷Åà*_7m€ %Q¢zuÀJUxg$»²‹"»ÜÇ�´¬.0¡RúŒ,ÞÈâH¶ˆ�ŽÐI£³mÙÅz0@É\Î:…„Ý,{gÛ|*zÄ“Qf×*Çd”Éá($p6 ·B4À"x›�]™ÀI¸p(½l™LÆ'˜Œ2!!!Á$!»45&š€—]�†Ãa‰\º ð"²ÁmF8d¶¡„0àá »Z%\ÂqË© iv%€Jª X�A$BYT (QæäÁøø…T"‡ÎÀƒÄÌŽ"
>›ˆS‚ƃµžÏÀEHå¬Ý6IC¤YxgÃYX‰te6Ù¥`á��‚#ÙX 48Läg• ŽB¢óÐYeŸ¥0Ie‚f(¼³Ñ00È‘w2ÎÈ‘ˆÔ¹Ä~`© Òãb;
FºYpM»c¹Lf«ÅcàÄ"Ù°|¨04.# F¯ÅyÈ.Œ ¥�˜¨€‘Q]Œ,¨LZÛ ‹¤! �¢EÃC�@ cPƒª‚C Bsò\Td„˜ÃCÂåá`�C’Ɉ°°‰üN´Ì.oiqzTD„B¸}@<LB=â�M«T°Žxg“ÒÙäˆw6y¡1`7âƒ�d×GuY»=³{^e{^ìuü�ü®Û_¬u9ÂTÈšŽ{¯ŒÓÿ&üuùƒÛºêÎ{¯Òczÿ>ø\W]b ¡ç÷{ÕŽË.1~Ît‰íÓ� ~Œ¬XÌ·ïšaf»Ä8BÝÏø¡;t©z}°·î›Ó³7Õí7öÏ›¼îýÃâ{è—ªKØXÿ&|¨»ñ¹9a7?˜ñ]|êüÂÖç™ÛÑÁؘzƸìúºøëåÌÈï�_Ÿ¯Ã…­­îý‹/õÿ‹übLw¹Î½óÅ·üû»HÃî÷ö_Ãw¼r·ãuR/ô„oþçEÕø±Ýc»í‡½7aÌüøqŸ=êÆèîØ¦
ÿ=î·Ÿñ3BwûÞÕ‚}ì�¬yŸó×XCÍ‘n»ø¼R®ìׄð¹¿w»ŽEç…ÐU;ö>÷éÜÎ|Ï=øð±¯«¦F_¾ùcÔßTèï^?æü`¾è/BwÑÓì~þí¿>X|Wý¸�îu»ºåÆ¢·¯&sävºŸ­ï2éÆ;ݱöädø^¾;ÏÆ¢C×OÖ§î�¾‹„ù&t§ÙÏüø¹ý"aýôƘ0^Ló?&÷ƒïν±f�1fôøÖ);æ¯}ÓùíëÞ‡pÝe;æ½?]ÃÆ˜r*tÿw°½cBu16æéù::wÇbÇïVçë˜G}~møo|ŽÁ}úô»ßß­;Y³ßs„íîß/R3ì~èñås ýúxÇÇÏÝÅ~ØfBõ}~ð=l=yYá—îß±‡Ý­þ°õ]÷ü^õ¥‹Ï1v×—/>Ôv1>Ì[_Y?ÛÓéóø\ëcœý\—îØ®¿Ÿóý«{�ï¹syÝ=vLãsdÏÿ—®ù/ÆðñƒQû™ÝõÇ�º Ù¹:GÕ_vÎÛÛùzܧ®ðß©¯2·K†üR3ªë…íûÙîÒ¡¯CÕ÷
]ó:TרëùÞ°ýŸ.ç{¹ ã²û¨ýÁÌØ ›7~|º„Ïùšy£‹»Éîs÷"E~†áƒïâë^-Þý홫‡žüúqÌ}¶¾ŽÏŸwrdöî|¨›ÍÏ¥F}ÍÛ­ý1ßoT¸ÑÅæsŸü­¼»¼üû¹Onøþ¹ØvÜwþŒëþXá{þô~𮑳a·¾øïRƒÙÙ!w:ÝìݸºÕÅÞóÝëãûÅ|P™=!ü—®.ª?\N~®ëÞnwöêóô~Q_ºT‡¿‘Ÿç;äŒ׳_¯î?—ô¸ž¼ê¼™Ì¯™c>„1jïr|ϾX§rÔ÷§êÃw~ðŸ§[_ìrz|Ýèâ>˜»Ó¥.\ÇÍ1]læÕŒýúßkógºí¨ ß=Æly±}ð]ßús‡«ŸÚ®yÿuŒ›1¡s¿|¬ðA†¯ý1»¾ç—�ûúÛ~Çþà¯2Üf·»Lèé#üŽúþKwaê•r}2·?ã.;ì¨ü¾;a¿NeÏ÷â¯?„ ûµ:3?Ìýèù‘3>ïc¨°¡»÷Åvô×>üeVݾÅâª7»þº§±cêÛÝ÷¬ùdÕ—Ÿ7:ûÿú±ï‹™£jÔ�Ì®üÂ}»‘Âô„é>µ�¡Ãv°¾V~�n{±Ý~úëˆ=„úÜ3÷ß=^,zÿ[˜#G}¼/Ý%/S79ÿ¡*|ûÖõ.æÎïõ3Ãß~ÓAÝŽ \cîõq÷ŽÑÝjn{÷:M]Œ5ÿrr¶{…ÆVu;ó?zºew}“ÌÞ÷Q¿_fwÔÿþÌv¬ºØSøö_\øz+§?Ïç ªªêÃ~ëòuµºëÕæäØyý¹d] Æ×¨ÎŸë[èú®×=yvL÷¢b—á÷rìäÎ羡ú¦z„ÝÿŒŠµ'„›ŸªOá{t™‹Aèï¡‹­Ï!¿×ËŸïÐ9tÈO¹™ÙÅWŒ9!„ïÁ¨n]Ótÿ~ׯX|öä‡ÎÐé+öT7&?Gw¯u1¨Ï¡sÆ}ª�É1!ë[Îçú`Ãn‡Êê «~ÿ{ _?þßïçͱ*g³;»Š©>tpu3ù­¾;ø{ûüì�_»îWí}ÍqökG¨ëøû\‡œËªîUÛßêf?÷^_Œýéœy„íÏ]«º¿ç0vÂt
{™oWÆ�™?£óW,>Ù�s±÷„0ò&ÜèòÙ™{ÙmjæKUf…î=}í<u±ÞŸrz6tûTouÇö½·_þþ»èŠqŒÌÑ7ý¹UÍ|¼‘9¶>ev¯º‘Ÿ/Ä4·ïájìdãsí§Ðýê^ŸÞÎ}Qó·£.¿ç¶õá¶ò¶{W ¾‡
£÷ºKׄ­¾ÉÏnŸbë°=¾oøî¹îî罿²otúóÌ�Ϊœîñ~¿‹�atO‡Ð­CM�ß½™î=*ôØÿÞ¾„07=Ó=Í]Öf�
û=Vov¼ÿžþs‘ó¸ûë’s1wÈÛšêî®ÛFŽQSc§ƒ½í“£kÎÅž¾fçÇÖ†Ê0¾†Ð=w|UÔ_åW·�{}àó÷:ý¹×oÛ_òëÛÕ_�™íÖs±†ûü½‡®Ï©/öoU•_·ÆßÞlv°#3L_ìEa¾~Ø¿†Ìª™îôåb yŸ¯G]Œ=&ÔÇqûW¡òþ:æÍ^�ìÏïöq.Ãè:ê/{¾nçøÜãü| ßc˜îõb B×ÿ\Œ6¿„™qûbšñ³¹ÿA�‘×A_ìqF˜.ßuùù¿Åö5ÿU¡³ó— a6¿ŽÓE‡î¯_?ÜÎç§N=S¨ë¹™ Ÿó·Øs˜ùª¯î;{íû4º~‹y|¾Ž;÷jÁÔÛ½ÿé««Gßçïá[—´ÿÞÆY¯Œ_dר¯:íÅžÂMõy!t ¦ï¯ë¨0î¿gd×¹‹)³³ÃøªðöÓt­û:÷ÕÕñ®63o»S^íÍT¨íÜ÷arlmøÔ}/÷þ¿W÷x„ÞéÌÝnw¡Ã†c¾ƒ¹û®ªÇtvÜúºþòAÝ}ðEnwêºÏß;LÕgVýèé êêk˜š®S÷¿æg:Œ»~|ê.S׳ýÿÝ}êÂUg_¿9#Œß a\Öm~›
ÓmëÂ\öf×eåÈÛa»ºû0¡:øº ·;jFçP#t…oóå‹*CMuçQý—7�W£û¨»úðßeÔ½Lü6ý!ôÇë¹ìÞÓÝõøš½ß¾Çî¸uu£Çç”u¡C†ü–_º]]æwu†ü\«.¯ªË˜‹ÅvÖ}eÖŒîŸÞÏcòûöÇ„Ëë`êÆ†WS]¯nìÜn§ËÖýÌÌÖüÙ¨Íúú3ßß«»Ó\moøº?®ÛÝSßSyÆö—aºöÕåÏ�—ô}ñ6|�Ñ¥ïû#?û¾ãÞÞµÿ¹æå�Óÿís½» Ûµîc×ÇÚ¬nss›ßû»{¨�[Õ]c·÷SnŸ.|¿›a¶îËtW×ýýMV�Î]·YÕÝ¡»w]ßåÓ…ì/nL�ÑñÓ]޽ËëâÓåßwÈíÞëšü13?�N“9fÿûºíÆ6úkvª¾÷ÇÏÞþ`nd§›‹uþKm�×9÷ËŽvÂè�ß%3¿NvuÙ¹ Sø¿S_¦óeWØÜî`o>~Õÿ„î_c¯ü¸Ý~.ö667Ü^ÇߘÃõäçñ©ë—‹±÷þƒ&tŽüêØsµ_7êBǰ±†ÙÝ.r.ÿrº‹»Ëí«úÎ7—3ÂÝ�êìRs/ÓjdfÝì8*ë{ÚýOÕÛ|±ûÕ~Æáëý˜ê
=~¶¦óèæKç/BíÏ�¿Æ ÆÝŽQ5�nTŒ¹»9vz·ƒ­¼íìÏû9¸ü/FèXyõõaú;ÎÆ^ìŽoª»×èOfûSè®7*ö°]Ÿ+tU!cï#/ñßÛ„û”;®ÇÖ]äŒO3]|ÆþŸÇ×þÚ]ì¨ÿu¿.L=*ÖýßÝ>c/Ûß>„û.?ª/«ÂذUl×Ñ£ºƒ�±OŽ1ó¡:�Ìû«°ŸCMÎè6!¿²¾ìæ‡Ï±_‹®ÙóµÆŽ©¬ÌªîVs1~csÜL—Ï7ô纟î9Ü�¦fÜþv†±5÷1ï~Œ/ß}æ^&}½Ï9ÿñSçT_Èý ¾w_—è˜C¸ù¾aFv¯™;n¶Û�1º»oäÿ·Ù ŸÝ勊}ŒO�ß{˜¯£ëçÇç`GßÛŸÓóõ6GŽª³BÝ㋱#?§yS£¾ø¾].cÏPÿLuŸQ1¸ •1…cd:Öǰ[×ýÁt�SŸ:_þÕ¸Ñõ•]'cëúQ»7ÕiGÅ¢nþ‹ãb/þf„Ï�î=*¶ñE‡1Â…�?¾Ú®ïýÓqŒÏ¼�5n.ô}» �æ‹Æu‘=ºï>…ÊØCÿùþSçž™ó¨’t¡X”å0ŽcJA†fˆ¶ Ó (‘Iæâñ¶ÆZD(H<B(.‘‰òX0$9¢0Š£¤œbÌ¡³
|$ñxíýŸÿt¤D#&A—&{ÉžSœi€BaÀ±}¼ìc€¼ Ôµ*ñîßW{ �Ñpá1ÑÂ�n‰Õ›ghO‡�»ìA;B´9Ì”\k�=fû"á´p±¥e*7«,µiõï*¡ÏQY�;ߌ!S5é›ÿÓK¡TTF k¾ƒ¬œ…Á¤ÎêÉèE�+J¥<ªARPw¿b“¤m�BPR]1›+öä±€¦YþUâ’]zk…,Ö–ƒzÚ¦GÑ xke)Á¡œžÒ‘eTõž¸ï’/@;ðÝÌzÌ"ÎÄÍx“Ü ô°®iÃ|t9Y;]±¬Cƈ}´»Œd^@È<‹Ý>šÛYŽ,Ñå°!üVjðPÁŸ;¬N<<ìGÑ'¬"Ev^”²ØúµÎæï,Ô=bT=žØüªØëî¿è¸‚v4‡„{uŸ!º#Òa1HóÈC]~ý!2Vm3%2Â7±™`¨ŽðµÛWÂÕ°=£&ë<BA+ŠÐ?ÀLÍ»1n¡R»q5žK)Çhõ"XAmsx‚Sþ)Èus̉PoY?‹Ý)Ça:ß=*Ó>{‡
q9ƒU/ßÖŽsG›ðèË·¹Ä9ÿÁ©¬ ‰ëXÜ#Ž€{*S`ç¼8~–Y.G›ãÀ®j¡àZdeîtiÔŒ…ŸóÍ é1„gviq”ôL5ÕÀ“úž¨ ¹)°vøKåC"ž!þÃi9¾?#òuG
+”á1n×é0²=\ÔX>Z82%ß'§ ÅÈ‚ûHÁÐÊâh}2ÍËÑ�Ïa²›Ïµ–.ÑÒá«gûR±&s!PÔúš-øIà„eù ``©G¼÷€ÝÀ–ÜPcu ·æË(*‡˜�û/Š·°Y*Ú±ÑêÂû{.üäãe\÷òPh�.DüOéŸÆ›êE«.CêRÑ­—6¯Gô޼ÎGTÍÚa;õ`­¦~ë×›&�*Ò@œl”!Gä©‹ûL¶ÂÞS›cšgwæ®XÛHI6ˆF­ÛÄû¶ŠÈ’q‚&Ü,ær€Ô»"õÌ�w§`�,˜.®¿•öÌà�ÁÔ ‡ç 0�jÌK�ëÀY8vèÖ Ö�rÕµêEz+sIPÏ9<û°Âÿ\µy
¥¢“ŸB&Y^{Ñœ¨¥¿ßz¬Â%^lbžWáAí&rAѸê{„T7)ÿRï4º¥ƒ§ÂI¼ü3Ë©|­|HÔ¬ÁúÅðæ æ™äR1Å4—ðÀk^’”6º+ÃØ…·¥V=N5,ìó`Zõ*�°OÌgµuò‡k0€} ¥g¸Xa¨?Žcà }“™œn˜u™Ö
-.4Õ×ÓP©eÖ?.éO/Ì´*O¦¹D´¡î!Ò×g„.JÂ|µMõ6F“V´ Fíœ3Cp‰™Õ¼éÖöþ䈧ý¢{µ . j⸂HÚ^¡k3à¸jõê—ñóN™B‹žy�Kô•lugø£÷Xª¼bc¯>¦�}g6|SÓxr*Bûªá„9¿UMí+¾_‰žŒ¨ñG(Äò XFaÏ<œeŽUQ`™Z¿€c��
, éNƒˆáPšÖÙ/‰øY“K›s½DœþáR8³8øT1YåWîŽqïAw›"C^§Ü�LþJ?6Ò/°’ð•Q{e_+2)®W=Í«©¥:àUGïrŒ%Eî׌y%·Wv²H°gá­£�yåµÈ½>ÈrŸŒ¤{2Ù¨|í>¤íg¬)Û qdòó}U|c˜ÉP¾Ò* YÝo%¬ðÈûŠ©æý_ÕÄ{¬_•wÎ’°œ_Spž¡Ý‰_õÊ?åÑW›Í]�p`ßmi‚EŽ ¯[,�Ð%¢ 0úÈ«´dt¦�Ægá îá-𸙲_‹dž¡”_�Ÿ=&ºhŠÙëÐX„s¯�õž�(à2úÎ Œát…f8:�¦oð³6ÄÖú²ye’HÑuñ(6
F—ÒtÂÎäÆ%ê¡ÀÈIÖåTÙOöAY�/z~ ê‹ï˜_ìÆbþg¸þ�â=ˬ±J^=i×QÓŸQI´â÷ñ„Û›¶ð÷Z”ð•Å'ði ‹E=Î×O.ØÚí¸4–ž|wŠ}œ•ŲMŸr2‚Õõ
=¨(X‰¢A“Uú%ÕÔY§~z[ê ÊÄÒŠµwv3Zc{CÕ£5´^cëéÈÇlÈ}†¼“2Ég’§†ì´j—'j6M™d·Ý$ Ÿ‚�¡;§^/¯ìø¹ÃÉYÆ�jWT¾Üjâ_e+‘P�Oÿq]ø›þ.‘}(­´ÊB˲¹óò�ä¸êÏëÅгø°šŸÿ«þƒNpÞi‹9þ¼Ñ:U�ªzuÈ3'ÏRFP‰‚J»É/§¸0´$ªŠ–Ú·r§*4þ@T d¦Šæ¨È+ä�~¾Øºû—s¸c–=œÞÄK/Bk"UIÃ@qcXÖãÛ-=ÒÓ¥: s:©6€Ó�iXwQqQÄóŒáÒRí·fJ‚^ZU?,ý`SK¿“êÛu·J0jŽÔB\‹*‹ßëÔÜUzdwªöÖj„‡“5B§½ß’f]V¨,j5D-\µ=ç´Aê'ßâO=sÅ’–ƒˆ:&4Ók‡¨u]Nõ用õ�I�ÈájÔbÇq#-n>9#Pºë;l}![ü({æ)8%Z^-¨¤_9̨†rjy§ºƒ~ræôìµ�oÞ]‘ƒ³í£NéöŠèjû3·zH�.s~¹d}±© [ê°èXh*x´¶øüÖ4g2ÈÀOz_œÑyA½è7pZ10kʈ#Î�Žuí»ŠïFö:çÅåø8Û³Ñ65�¸‰Ó2Úgßs4�‘wÌóC§¡aµà&€ª7%¨[ HOgêaš ìtB3�L>²`b™Íã^2e
°ÉBs[¸9í4ëñEÍýÿ)<®!fµÔ´HÇ3Ýý§a¼A¢‡OO¨r P¤As»R·ÎáN7HvÓÝø+qàj~múðGe/„S9·j£¹åt_uE”­Gw´~ «Ê hÓQM§Ü[âv#ü8¨5èCHü»ìÒY´ôs;€Ú¨T5ìZ@uìÚ¸
`=Ÿ›¢Ñ%2an(¶'è)}kìykê…�Ì·³
�[D*ÙüYý¦^çàœ™é-\�ëÀQÍê]«�ʈ}à”fºÆµžƒÝ—ŒÐb ¥Éп§m÷7ؾöHÏ/íù&�v íy~(á ç§ü"0!¹•/-MãÂ1u‰.Koï»`Ÿõ¡Þ4‘Þ±›SM’dQ±.QÅä£L8ÏŽÈôóR܃H–õ 0ü úôÁÆ£¥8ràí¢_óã�J|ëT¸E¥ÑCr?±[};æ6­LC£p«²ìãƒZ¸7Ç΄XüP‘èÅúmÈtvQéÕêK˜®˜âø¸˜0ÜPzºh’ú-œ u¹Ò45FαØ4†µØ¢�,ªP¦Ã¨7 3F0<¦qÍ Ü#i5*)­üJëêפA55£¬)o¡Äªý5‚6'í¯JÛÏo1K§^ºEŸºRÀÇOˆÆ^H5~ŸÏ0[vö�xBé0ÅY”ݸ6ö÷Ÿ˜™Ë•9€ì�á#SS‰Æ½l‚Q@ÿ;Äa= EJ]JzZ¶²Ã¡—ªf—MI­3/Íþjvá Ðßu»dZ‡4O�ÔQˆýòžõÚÓ ¥×Sef· ˆêJ‹è†ö߆5Õ("�]
DðÌ"�^�h� U¯@Ä5}!™¦@læìF GË�?ÌVLÑ1Ù¾Ÿ•bb’ìŸøéÐ|LÇ劉Ý1Qψg6w ªä¾"œiÙm´wo<&ã²bb‹K²,‹÷P«;�Ɖ“û\‡¾ ºbBwL¦äKx>4Èq‡žÜGÿïI’Šâ@ú!•(m?7ç%Òvúé"œ5'™úqúšLJ’ð­ÜN·ë¡QÝÊ�ËqfŽÙ¡H×9ce61..§†©ãNyÆÌ2îJ%g‰c}2O.¨N(I­óã8¨W”yF÷Ïj:½ûq™‘Lz¤K1 žàowèc¯/`Ù4ú¡é˜¡,%¥¾+¨äíÐÿ1¥•.–¨–ÒaÍ ,”¥B´B� F€ÅæËà-&#ªnÄÑß•òÅÃUÁX‚Äý‹Ž1vm93‹S„;Ö”Œ"¡z  nd°¶>ÑéjJÏŠ½‘­ŠË††³f~ŸAçI�1êÑ£§£N*”šbÈ»fà/Òðà*ø¦Emà•Šž)øZÜð(¾ö;7yÁg¦Á¢L .ƒx(à�$k[G�MMé]·ØthŠSo€ÔjÓJ�¼zŽ~„Ó©-¹6Æ¢‹�”c«Ì¥£ÑÏEÇ_ú!<´gߎտ2[ÑSÞSël¤(Ãã½ç¢ 1“Š暠üeŸÝhY'erÖˆ â«òx Brg÷ ÅãJ³ÚçH™2éth¦>ƒ|�·äþ“¿Ý±s#}ö6@é™owŠÐK¨³¸%"�€?Æb=Òs>ù¿§òðÅ{G>„ù´l 锤�j✖1l.[§®Vèê)¥•fÎ('í°&
ÃâÄURDÀ[ÓícžˆÊ+ö¬/”&v{ʼnME„›² N'°c¥,ÃÞ;Gl‹ñ8· ˜1eÄlYì¼+*HhOfª@
½êÈo.•̱òṴ̂½0”Ò1"v¥‡2G\ŒD¦EÜ ïó=w‰Ö�ÂæýDÌĉ‡e:ùŽ«ð³áW{�+oõÀËpÚ¶*ôÁƒÉRá
‹ÄR1€œ‹äZMsWÃÔ” XɬNrÞBtÚTÐA�I�˜JbýF-Kd*‚Áó GïÉz­1 Cþº“Ü~d¤­/Ø^ßóÇ´`#ªkF_&�þ´ëQs&²üüÕœœœò1}°öi¦]·iU¿Ö8Ä'Êý{ ›û›�-®²q –ì ÷øh áùÀ®·ðÌ_q``ÅúᯧQHêSZåXÏ4øÙ殾F/]C‹\€`óŒ/jÇð²i¯ñžV§¹öÓ/²¦ûžX£ëÕÖÖõ#¯ïôª _šV:Kœæÿ¹®¸��¡Œ2,ŒóÓ;[]lž+¥Ú�í3Ÿfùþ/K·¨òæ<Z�~b8Û£ͼI³+�`¶˜Ü.
ÜÕÖÿkã껸›S‚<£†$˜|þŠÀÿ^%Pßcô+í‹m#—Ý(]o[ôy„Ï.ffZó÷³K.Ò4ç-ƒäIfaÛ*æ�Ð�Dj™ÃG1äã¿>ÉVZ}4GhÌ oþë6⥬-< ÛÏè[#€#)³û½VŒl*^8ŒNæ fËSð®àHÏÅ…Œ³óßPá�ne>'ZȽ]f‹L]:ÇHÁTB• Z£Ü¹ÚÊ´ú@ØÚ££«Y»ÜX]|6ˆ‹¶§†d�×z7î¾fdø×xǸõõíŠб%C[µ:ø¾±[K-g¨qáL5�¡×‰ß8c´/Ãö>‡ ƒ]µ˜©´a¡ÞÞSKËÜŸ²f�å{)‘$;o©.ö‚’`mò¼&ž¤ì*õ‰ÊÙ%”µ!ð‚[²jê™x€ä¶&Xò÷�#:Êþá7ñá.Vž(ƒ¿:°(Ä×X­½ðœ�ÏÃ%fÎX7,1p§Ÿ‰3oN*/…oÏæ3ƪš)_XÉéæñêT4ž15²PqDj‘0ŒÎ1!šÊ 
êõ’(É€ Ë„‘9u hýÞÊz�| #[³]GÛ,5†Éö_¾•“–E9I##HS'pùGîTÇc�³I²ÿ}IV+Ï�e4 e7á¥HmŠ0}±„XøÓbÅø]Fs4fgùÇ
÷ K¾ê*ÃÉŽ�Œ0d}ß_{t%X�@ûEéoX»GDi„„æ4ÆL;R¸�@€"Bo\à¶ã;q6Фà=7µí –lÙö�«¿Ï Ä›Î/þ*Â…Ür–[JÂ7ÆmI
‰�#q��‰Jtÿ8FÒ^“¹ö`Ù&‹7Òm°þ™y=QÑ¢'% ¤W˜X^+…M>º�_5u6æHÄ?�ì0Ù|ìo��-™Ññ¹„Ý*é�BèÐtæ)YÝŸ‹5!î´ÒX‹Ÿ¦†BLY4˜�¥æ{¨9¨*fMî$!×ÎÑ:œB¾0J5‘íÑo\
xIÀ¨ó¥óëWœ”º…Ÿô°jª4`{»|²=�kK£CA/lÀŠ•^,ª±ÚRfNeÌÒ'/q—–¼è<„O=L2€©~tÓ¸‡„|V¨gÈ€ö¯_'§¥!³±@ ^pr”NÏl‰Æåë,¶¿.Í™¿ž?œ�9îR7 —Ç›üJÌXD^Ë�êÕñDn8Ý(`Âᣈå?…þR
NËOÓ(¹£Rͪʂ"ô±p«Åe˰÷ 3ý¿°=<+C£¥Ù&Â'ÙöG™L¥
·!ÂÄj.ëÎ~½š;w�ö�Ði=N�ƒï÷,¯”œ}‘- ÞÒ¢þÌÈGЩ½/õò¼ÇÙ Î%g™Sõ Á‰Løñ0î-S‹å7ïóãã_SÂkýt„øÄlœbQ½Bb¦aÓ¥8Ô½ÒEäîfú�Îâoá»A4*Sp¶rjÒNÎ ƒÞ?Cª±�6E~ 37¼x±0v§Õð¥ n�vYó1Òg>É€¾·Ú˜Z¡®Xn;““Ü*ò‰�®eÎC[¨ØÞ`£+Îï½´ê¢-Ë
s”©W¸؃K Ø ð`õÝ�`.E²4Aª©¹<Ð9÷þÂZ¦É
ÉY?sóFÎÄUª¿¥Ísý•™›~o�îGÿXZeBÞ�Ó[õ �«äƒµÌ°´ä*�ˆ ¬RÀUèWt¿ºhh¥äaÚô¢Ÿ¤úz>¯ÊxòÙ±Ÿ&T�‡s0¹–Í¥^›(TFúÒÐ1 o Bñ{Á…®÷„q(´¢Uì]ü‰éþâö[s*V Jðì^xoQìA0DoùoË!¬kg£…ö´V½scî¤lšû+Š—%cyzs'w‡+µV„¥‰ê y…2¢z4‘¼Z$Ó‘ìv2P—Õï¬D]¨Ü$ÇС
û/ XyÒv€Ëü;óÕ®´Þø–{¡ç×ûs²¹ùàæV‰‰+›BBž=+ötŽN|R ™Iúô±eï”ýÎ÷3ô7÷ï[‹¢àæQ›2üIsx·Wœ¡Ï?MÿsH€í'µqÿ0ž o‘nNhO€¯ªzn™2m/Òò´0[Õê—¨?B ¾5ïž�…}OP‡‡ÈE$ö•õ`J7è?¨÷[ RL “#ÈÕZO6ÝYwÉß$ëWÇ]HyØpÖülðgd¶æ(¿ŽQŒ'.r˜“hç}Ò�âhj/üHº�æ-Õí°#¾†'‰KÛ¹{€ÀW’¬ê€þL2»”ò)<ï�=¥»ÎáoõJáÏ>æœÉ.P³�­nßáöŵÅ#Ê!¯ ¤[T‘=íÇ÷È{§i fÑj?ƒjwÌÁ3·¦›ŽÑ‹Ÿoh¦Q@Ý6 ×v.ÿ
Ï3`ô)ÞŸ¢€;b¼ºC;P¬¶çȽ‹vÇf°eB£�NxL¦m:žìL¥×û¢†=|ÙDeNŠì�Äô>áM¸‹pÖöh|?½£�¯
†ü>úˆ·4fK©›D«Œ˜XwÈCP3cð‰¦ Ðüš]Z“hN4"Ö" óuW?Ô f7n8vãÂ<hÊf9ê šð÷§æ\È)Í{—xä2œcB�j‹“ìøŸÃ)»N“yòA`�Ês\Œæ€æ™»±rcOf*oí/Ëf¯s*X·±x— FNqØË‰cLjÁ¤›s¤×;µåÃ!wv"'…ãÈ«¨Óý7ìs9xžyÆŸn$f¹¾1føhäéÿt�åÀÜJꣃõÓôž”Ös_9Ãdÿ9ßå•—+©j¼‘SÒ$*ŒÖ« î·˜Ý[Åi!"waPî¬ü]ÔÍõñ„tи}Œô(s­ú7EðæxüWŠ]"h<iÅ”Êâ*¬o£EÜîXû{w.÷ËYÃÂ5•C- †¹9¶Ÿ"¨^su·`™y½×Žä�Ĭ)ÿWzÇ/Tò‰8ò¿ˆLDpübüžlø=Õ ÚNº¼½³TÅÉ…ÿä‡�AÒÀ÷0‘eðM ¹KXuñ.}rÐi�ù³¡jjœ¥K§âa€°ö¤²-f\ ÙE‚Ù¸_5¤xr¥ÓMÝ#ž‚ùù DéšFÉ%`¤Rͯó�.)£xr 6½«¤_ì¡þŠ'§|Pá{b›ꭹÿ²7h¸Íݨaø�¸{#rNБ)ž¼^�~ rg´ÅµV¢£�÷M…8 �!PFsÚ¸Ûq}Æm2¶ukibZ¦:ÖÏUƒNãCº•±�³kIâøKŠ)§å—6¯Êy l²‘DHCÍ)¹®XþÂÓK‘žÕ¢8Òu‚;n“ug»»œ¤l¡#Ö€Óào)ñ«�•cSâ8ÒŒv£^#{�¤#Ÿ&kµh-îdY´TZRæö]µº©€$?~$ƒu±4):ó|w4€f>,˜<bÄAŒfëù¦Üµ¸ˆÄ,3<ïÐ ùÌc'`�)KJ.&UE 'IÙt>Õ(_[T!L½²V‡LÞûɧ8["Í’ÅR H¤[9–$òØÞ Ž#šDÊxºeYòÑrÙ»j˜‰ãQ,r0Üרbˆc¾³:W‰Ÿì0µ—^ðC¡Ü±%ðL<ʸ ±b§úä4÷Ç5†ÝîfÛipìj2ÆÜx"Þ¼Íóbðãɬ§ð;²¤( Ðýµž‰ÓX¯¶ñ„¯uáf ,†N#R»W¬F^zAÑ\ÏOµÚU¼Óx"%\î+x<9d®Šª1Iy„”«%�'Å› 5þ»Pãɤï(žôJ¨„¬Æ“m¢Ñ¿úŸV²ÎÝý¤šŒ0Öö!]ÍižêËÓÇMJÏï~â…'}±¥ì8Ö—äç[�H×uE„ÁM[†\{¯uD{’\£€»8üDCヱNm6AóªÛôÌ*{&·×�9Z[1?)e0ƪ8MÐ…ºúdBñ„ÏË«¥ å&Õú'ƒ„YÃÐ “M½ p?¡åZ�]ùßÝ¢fÀÈœ�ØÞˆ>Ä‹j½²±‡Ó9î÷ç�¦Öä\Þç¢å&sÙe£´ÝKÉ”ÁË�T¶£]Š�täÿ²Ýt¤}½A粚c¢¥Ë*8ý˜„º®r¦¿è•ÄÁ­K +)¯ ¼_nQ0ÚÝ¢$„gÛ©¼ŠF…øc­{êÛ²[ÙO(kloG³’#8&ŸÐµÄ &ð�Ñ3•Ž‚¯ÀeOŠ[âËs�àòˆ¡ÁLf/{ΨL÷Ç`¤w/vfø‰Î¨Y�›a’§¦IøDÇj,swwéÀP·çÕ ›rÀäN�¼Qã%OYž Ýn×Ó„ÏçuÅÐü_z%ý»kt¨%҂ɳYüv]W0Áž™m"ŠË³S©µxlRèÌ[^ÅQå°J*5+‘9óÔ¨®J‰JRÌQ_µ¤m�ʸ9"6·I+!ýqB¬¡üý…ñd ò˜û{�Àu–äænù>(žvn+%IT‚Њ#ê!ÞžœÒ§Õh²Ô{mÓ‚Q«¤©þ¤C€Ù� }çt$:¢¸u*C>+¿’ß4 ô²ø‹kDìœ qy{{Íq‚2»e”’u¡'ocïF ‚ÖOIû’Q¯ âÃèä3|àŒT#]''‚êêqÇ´RN-¯7B~î«–ñ‚ßR]Qö”7oñ|êµÇ.Qp¦e9jïGÑ«wXÖ³ÿœ¡$èå´·3QS¿Ï%q�)sSµñ÷Í6ó·‹¾¥¹U+á_ûA²¨›ñŽ-„«�9Š+|57÷]&þí$<CäÒ6ö¿rü›G]UŠÍý{ "_¥à߆’‚¨³l]>9òæ¦Ð•ùO¼�{o½éßÒÉ�óøyj^ÿbûÐ' ¨áß‘“Rºe ÿ–·°Jn-#ú·¦2º,¤[tx­¾úÏ"!E4S„½�Æï ‡Þeñ廓 ·?þ5¸”v«‘ÛŽ«åù©�Èû�mú×Ö”æø—
ÕÑ�êÿ2Òþ­CæÔúw²²³l{�Ðei2cÐrüû Ôx*‹Îüdm’6˜z²$˜ ­\¶å›ÝBY©ûÈ«C59µ¹Ò§tÞ–Û¥¤h,ÃÇýç. n¡Äë»zj¥&0&>ͼ¬D>¸rÆ™-´­¦ž²[�²×.Eò\á�Ãvô joíªŽÁ¡=‘/­,†�2äˆÒš\¨±^Q=~¡RïÝvIÍÞ=ÿ̱£Q˜Ó0SôÒ¤Á^drwà^;j2â¤rfÙÀb¨UöÉX³Þ¨²9œ’½jÍ“ bá�?!1T¦5óx•ß $TÀü1{âê×›å×'µ<Û4ﮣuAEN¾†�Ò€ˆ
àM²~³ÀÌL–{^?ÉÉw|Œ
ËNZw³¹êKÙÚ×§Â1°Yùß\¿)U8Gj{&ô–rþì´B¹žsŠm*ã6ä§•·qsçb=Fb×6U ¹€ùv—lƒ/—ËãVÀ2¾œNµ°î°ÎêÌAÁŒs¨Â»ë†¢ùI]{Pà�ÞòzbË'Ë’Õ«Á·A.ÀÜо×Ú2_äxülÄS^PˆS çÓ—r˜øKÓÁ× Ç®KÏNäÐK½)¥rIPA¯åfÓ1œø´Á@½ÍJFƒÎÌI¡ÞÕ‰YÂÁâ}Ã8¯jðAK#¢NàRÞÇë<&YØ‹EP¡^˜`ó¾ÕÍ[ Þ‘k“SmVÀ¥H½*“Ýgï}S °1š¦6UV£Í Ò!öé‘8¤¸åUÚ ®×ø3í1v|ú·Ö˜vD»:ì9ƒÂ }ÉfQ£Ä`ÑË•bÜ*ÀéÑr˜\Ñ¥îšÍ³©Åj¸ët’Ý‹¾ dŠýs>J™IL遲*vx Â%1CðêIïb¨Ô~¬~Ï,Õ÷þbGœ^ˆº /NîuK—½W—Æ ç»BÅ…[°�Wq"#žØL?�ô[”ð5Å®Äy*r÷q+KR¡xˆzœÊ:¾Í˜ý!ÆŽ"†R89÷ùƒç|Í!f¦â”¨½>¡�"U-‡?4«|ı¶ÂZÅÈË8{F4~ÔœRêjI�®«5‘à[¾=ëƒs�Iax^¦Þ�`É"Eù®òæÂI^便=ÌþµÀµÌCŽÚæ x°«f*,·«Èû“!äXωÈi(LtY .aë,©g˜<FBЦ§æübY²P8xpþs^½&O­ªšA1Þ<Ÿ\ˆ^½æññ”Sô_#šÑ«Wµÿ6@Õ;eFTöIgÕKÃMì†2ÓþªÞ€Vp»÷o©·«w„Ž�•ÐåL“Ö‚n¥$„·rö*Æ\|®^Ôrâw>S ª—Òb^�]\b·ÿ®ÞÉóŸë�‰Ì¬? Â«w œ€ª×C7òk·ã/
õ“[©ÈŽB>gŒ!îô?4ZX Õ–5=‚bV®'ï2MÚKÒ£>bHéZju¿£ÒÖ–“'Ñòs$ÕHÇûâv!sIhÜC~]&¡Ãcol,�Ýâxå(G€ÕCI4ödìAþ4;7á.ô?Âä&3•!q)¶ [)BKo}½Ñx{+ž!½M:q¶ %]øƒò
În½p´V�ùÖŒù¼5榢5T~ <½ÈúŒYDQ{ÆÂ䚥û»û ×X
Ú ßr!î?‚qºœÅhÔ`‘âÊ(}*‡ N_¾Õ�jÕ}Q‚p1½XæêjfE©.r½µÀ¼^T®Öœ~¨KZþ[ óaXø¶|9Y‡™*õÃ9¹ü6v—8ØŒ»žô–ž¸|”_ëŽö¬Y†a’ö56á÷éo&Yœ :ZëYrÌ;÷äÑ™‹"jª²‰ÉàÝ]9Vœxx%S`�ûjö«Áƒw—éA þÒ+!ï–Gí²)[[eˆµc�û@ØžÊ)¦K©A‹;·ÒÕaeNRùG±}
¾áÇâÝ4nóîÎå‚%gý8NzwmáGñ®«î¾Txo›7[Æã]•¦1CŽäCâ»ë¶b’¹xì|wþÝz(§ÊÀZ²àýw7Ê-¯ê¼h:ñ®’—ç6¶4«™¡]ï†<ÅC­Þ]K©'5¡m±¾ŒöN£ØöRjÕqúÌþ6¨½ï7{ãE¸q¤eCЧ^” =ð*î£ûS$Ç»”(¡&À�ßÖ8ÃáãÕHO÷<Õ»·vóqì¦à;#ZJ]?ûgû†]å0ĦªÌ¢œj YÍtŒ Mrï7S3åYÊ”5$<{Ÿ|/ì96¨�Ÿué_âz�¡c–eséµN›¨ Š3×§�£0BW²�d�[�Á‹!S{ÌjÍ�¥š3Srø ŽÕ
«%�Î'âü•;9¨­
õu½ƒì8ÞBŒo�±,hºÜD°pÊÏ:’îa�‘*^y¯ ÔæÒ»n�pQJI >t3ïÈuÀ–SšR–¨Ì3ärsÌc� <OÝbfò÷(c™’<­µÅÆtËë‡ëÖ ƒlPªÖzɰ
ïèúR›ÔF<º:±pù]$g�ÙMn ÿ�@iÁ'¤Š á¼ôn5ìAM~ú„ xUëôû˜˜Ú}‹p¿;ý®åÑ)Ä.wÕ€zóáÓK’·±í®PZ‘Èù°Ó/FdY‡Eî£7wÏ8RºFìö�(åŠHÆ�¡�ïǮK5›‹*�¸EÃX/qî¯@vÆ0ø‚Ÿ Ü€]~¾Â×h ¨í®\ã º–Rô°Gç6ÐiSįX¶‹Döö’R¥ÿÅ 6#q7ß’¥à@PѯãT9 
tç(ÙÊ»_¶ß`5½CºTÑr^.ß„Wc“Å(ƒ,&ø6c�©2v¯±¯¡~ÄHOñ1QD2!Ú
—¹OÑ�¨¸Ëµ„вFæ«è¬º·q¨ˆç£Û.&µf'ÄÓ£Û©‚³èZ˜Ö£{¨¸“bÂáÑâ÷_ $á�­ EÚäµèjУ{%SF¾¯:º¾Œ5r…{¯X
”yË"–}$‚í;�t ±p»qÝ ¯å ÑÍXÄT2˜(bR±cÂ!©™Ï>Ž…ê¤;Øø…ÿŠ7/;¾Ï;Y¬#Åa*r›€˜™QœPý:©W´¯ÈŒ;x/’…"LÙc³µï­ì�Ã4Å÷îÉ_ò”)€ƒF1Qr^í¦bóŽÏ`\ µä¼5‡‚B5’Ç ‹H•`Þ"çkr^Rnázlo
Ìœ ³ô±$3Ñ¡(ïöSœ3€æL`L»‚¢»3èåÌÚR°‹yo®ºbUÅ»,ä)�×¾Ô‚g:ÑNõ§‘6KôOceHùw`"]hRq<ÂF±\3zŒ6šH¾ùƽě»¼‡¹uNÒPâsêFj v¸•CìÉå¹Ýþ�Ä¡wXë£qa;šRbf·ãüjá&j!�BT‘‹ èŽl"÷ôìIF`W‘äËi<ó„eT©EjEÒ[=D .‰Ÿïrİ´ôÏ›ÐVt’(ª1Ýõµb¾bMʤ÷}cŠ–�˜¯h“m?d„çò{¤ 4.óÞÛ–@§$uö­fº=?¤tIŒéŠŒž— +Š®a$˜.@ñÜ%@J÷ŒBТ¹ˆ[§¦KÖäãp*Ý%¨M¦›â|ËõkÒ,0]r$Üõv«üƒL—ú¾¤ãL׬›´ytàäéÍ=dÁ¬å¯ï ÙÕ8×R)¼W�üö•q¥­ÊKTÏ¥·‹»® qw!÷q·•gñ¸ç�Þr¢¾ÃŸ9Å(0ûÒJóÓ½\øse¸dçuÿÂlœÄðÙ™ $X:úÆ1oÜé•)GÝìišìøXjé�Á¦kwy^ûô•„�úmÛ\ Í4fduŸ›A<Š;’v°'B†+êÅbÉ«êË?+VRÚzˆó°OÑcüÓZ
âwÅ“\Š'eÁÀo}ëÖl§$[5ôˆ-i­!…Yº|C&‡éõ%œÂñ>ö‚iiJÉþœ±,À3NDI%|` òßÉ’yzÄZÏEDÆÐÉLdx.Í·ìÉxW*.@[0EnS«GˆáQ›kO8f)u.°ð¯N�Ϥr�訧 ÈÐÑ’ç¬�¨ð¡V»mwŠ: ¶3bʇ³øa‹/<w-HnQ²¬�Q5¡B�[ ¢
Þ l±<éUqV;(Š=vÀ�zNMÃUó"áe(y(!öb| ûð%°ÎíÐ\ÀL;J:ÆÇ´î3pڹ߹…Ì ¶+ÞE¼û“É_¤Îy©ríR¥wéVW§Ü))À²KGÉðܘÄ/¬¬h{OÞ‰Ã4“2¬€òp0k%<€10eÝ÷�àšcqÃhé£<»ŒÉتäŸÑ÷wå�ÃJ_N†]‹³ï]¢¤›8³"îÉR<hwI<©&¸”Ü-•¢v4oÓ犭IÙs¯{®Á StnS �».>êïc™&�$Î01ø„ÇݬUx(­)bºO íÀFï`Ãò¾íÇBÙrøbÀ.Íp¬×N<MÄjt'è—êLä>q$d½�óõO­7:°™ÿ±åT‹é`´(kOU�ïÇötÆtpìzÙ¢!S$$þôðx†ùP€éîbñr#oõõjžã_Aìí¼­ã”pJžƒwÅüiÊ´�~Tkl©g]y—��À�P›çcÎ$oËdžŒaœ ½ŸðL¹ßÐ¥ÙÁqµámò÷H�¬:»o).r,gËúвgÄ_Äà¼õýOÒ‘‰�Áï\&|�ä]6oP\€ÅH:K%y¶µd O 9`W\Ÿ2#Æ~ ¸vŸ!ægç_2NôÌ2—¬Ìñ>+ì‚2M²I͵~±Ô_·Wʸ¶oÞôŸ„ýŠu.ÄÓ]_Þ…å:'NxÚÔµ³ˆ…×á“ð—n-~鿈P:øÁ˜æt¼\¹®Hõ2×òÔ"Œ<Ën7º€þ¯ßg…’…Ëòó”,Aî/„›]ì¥ð}Q ì€kz³¦ÄFa`B’6/‰ AíŽÌŸá_gxò>|<rVÆ­Àœòâ…‰�`Év¢t³•:ã+®_ó5Ëõš’VS¬Ë[¸Ù˜žà'ÛiÃMŠTXrá»Wî¡1ïI�¨Ð×JÕZP«ßÓô¬N"ª0ó0…¶‘H\Tá-:Aø/·‹Ôü*×ñ{m¸ŠH]B> \T ª†ûªtꡇűXži„6ÿÜÑ“)b¨?L£ñÕÊÐûáÂïrŠýóU'é&“Ãô£ˆÅª<†‘,DB•Ÿ‡—‡ ÔÅ´"®·åÜÅšˆáë qø®‚ÚøB�…Údþr¶rëÛ8å¬b±¿¤¾.¨*˨¶Á‘ˆÍÏ-û‰þ0¥Ó)]o^‡%K&«äöž¬b1_éœc8¢P‹¨ü¨CýÁ O@(?Q 7e©s´4¨i�"›—¥D«6;jîòŸãì®\kÇÃý\•ûãä]“Ù ™T\Çð€«0„¸Ppñ€xc#I>jÚŒ dfºˆO÷jÀÔÞí`ÿ�þCO¯w9w×nIßLãÕìwÿŠÍ'³´^®Óâ�Ó{ź×dYþT÷ B¯ÈØ£šä_à6.*+ø¹«ï‘ßð“hr†˜%?e¸¢æQãþË8Òb�àýôE
Áð¤ô�óÓC,×á=iý¯x’¿ƒÝßd…\>˦q{†÷?¦@ê*Õ°þð]f©VXŽà˜pæ
ÿÌBDõš?3W�Å[ú}™—µO*ƒ~àŽz0Õ6M5&Pªxy•€7Öðôš»«+�i¢%¡X)»Åú�ŽÚ:ŠÎÁ²ÿ°²{•j¤1­Õý™×¯·öH\Jf³¿~dmÕ¾i©€E¤m1 VV9_Èu‡2sÅI[a—fW¿lÃE¤¥ÆR]®Ô4¬ŒµÚÙ@�ÓÚÙ Î%IþSÜ•ÄX6¡ÓD†j§‚!ú /vÏFÁ�|—cöŠ'ªër?tµëzX»^--Q™A€�ü¯e?”–­£ˆ-`à€Ëf[ ¢öÉëÍÔÕDmÌéÝý1¸LÓè@âÎ,PE!‡ãä%U#|½‚‚œá}Yº–„üÇN±Wæu¼£ø3Íðtiÿ1ÀD
`W…ÕªRÈCcžö—©ïJ„xµÍÞ–2„Z3L*£¤\i�
‰lH¼·®Qƒ¡1íìÅûÎ`æeµ;âQÐhžfyº-¼›¤‚–„ó%WÌz`)ntEœ“Ç$zZ†Ò0¾6 à�1‡ó¼‹KÄxieÄáÂàÅÀ¦?ˆ08/D Ä>r­©€3 �£r¬Z›ñ^(ž¤??ß\¡7»ì!~IšŒØ�Àº�,÷6ó"|–´››¹*J§ù´qM/À'Û¡ežf½Ò
Ø ¶ƒ%Ü>³ŸK‡\�é5ê!³D䟼
^Ó!¨ÔÚjâýö�‰¶3»¦¿ÒhŽå” vÊ â ±T,•­ ´gsa8Wê:¾ª½ð0…yøŽÖ©*Fô~®·suêÀ9 › ðf�Ý@g¹Þ:­ÑñAƒ±Üßžvðlàw
¾,ÆcÅ…¾Ž ßSãf·"Æt‰þ@žiý7j÷F(Ø�ö¤<õƒ�¦¯Е-©ñ£|½šŽ9 al@t�±ß‰¥ì; æ�ç~‹£’–+û7²Ö¨le#kPv²:^â´ao~Ã6Ý"«ö ûã®s—?W½7–Chíxþg#OyêJ³(5lMg›9=©*Þý©QºÄ@wb.Ô©D9<'ÎFÌ÷¼Š0iõÌÁ¸_šÆ»?—C+Ao=5FcÂ+"W× Ïܓ߬À‘° ޵Žü#‰ƒ‹^‘¡×ÈõÌïèíýà &ÓBn~̽sù£O$æÆ.î_ðÃ^¥ïƒ<Æë²Ž�öí]Bïœ<Ú!vf½‚v3„0{.Ïó¬â«”ó0ˆaˆ®Eéjóy¬—‘}ãZEÊ÷ÐKcVË ‘Ë)ÅN’Ž}Šޓ oH2ðË‹b)=S+Ìc©oI¼öfˆh—¯ÚI‚T5¤"ˆ‹)…—ÞdŠ•ÀäÇŽ‚çbJGÆÜ˜Þ‘ë‡&ŽÍéÈLÔŠ4²‹æVŸø³¢øMá¸A½~TH3áP9ñãv|ã¿q�ø£½*ÆiÂÖÈ®�Òý‚5áðu7ÌVß�c¥3^ùÿoa(Òžgõõ‘MJž|Ññûˆ‹l»X¿Š1UÅ$�ņ§ž*o¬~TƸFÔØêæK™ ƒŠÁ]°Ê°è+En6Præ�ˆ±1GÀÞ ŠÒ¨‰Éô)ý†_/¯—¥”þK[™°<ã]Ä”üBbņŽyƒõç‚)<«ÒêÕ¢üØ Ž{)í‘~&uÜË ¿|ÍënùÏ]¿€�8 „FNÓ‹ñ•¥RSË
U‚xé­E5“ÖúNß׸*gôïÉQrìÝ/³´¹ì�f)ìü„ŠOí¦¾ÃPo‹0ÄË0m&×1¡÷Æ`˜ÏöeÀF6_>é¼ë´…-mÂÿ1MÄL"´d -íÛòÌï¢Sž¼ k_m‹Ýr]r7p¦~Áîß(}º ¨<ÀáW®¡�¤ŸÛL² ¾l#s”^ÕqL.ës}œÄ³SšB—1ÌÇž´ÎÔׇl…œûd æ¸ÜAÜlóÙà{»ÿz××é;ƒ–Fec¼C®Váõ°"Ñ% ÷ÐÜTÆIvä×Õ­Ȧt ÚÔ<¼ð2É–ÒEÁâ¡‘ïU…!àHÀ/½à'Vt¿{éu*­dáP‰s—?›ÓŠ9AWóKg\ÔŒ½¦ü]šúUü\Qýp�‹|àÖ°*Y�^fÓÖOxëÛõ<«§æG•nh²ä£ÞbtX ¥öûÏÉ×ϺDf1¢,ûíß k銻sRcNœŠY#,®6b¹]4 J×<¹¶:DB\�BˆCÜÌŠ3)äãæ,/žI ­7‚Zî|LL¨ËÙö-:ë|p*8¯Ã(s‰ ÖB¨�¢:<ú¡bï¾ 4!ßÂëûM¨œ–îŽÉ¢”Øœ¹E®qº„Äù3ÅvMGľø
gÖé‘ NÖA3&Ýö=)!ù„©:ëj†ØNà” ‹¶ñ‚KM+ài98·ù#ÈÿÓÕ/�•Ë’m™­>É\X®톹,áÕT‘ôfÀydwI˜IÓ(úŸÓ¬È�¼Òë+�@-È=Ú�Ï ßôß¿<]O=`sÞuù‰qAÙß@P>øÃ$.ºá±ÆLB…•µæó-4ÚGˆÁE”sh˜‡›Ï1TivÃÂÌìÊ’Áž ‹º�˜"(á«Ò ¦£¤€•uG6·ÞT�`}îe®·ÙàŸ @4x?­Î[fÁfw�¼CÆØ&ÔÜí81¾à<Áû,4Ãô‰|�ž³sÎS3‚èl÷-Ý�Ë�¢^j„4 ½#‰¦ßº°o�ízeQôÏoÛãðNÇ1¨ï%!J“rW0©,ß]ÕèM¸à.^­äHH^OØñgÂT‹*«\CúÍâu+/ƒ/]c‹µIGÎÌ´ùöæá²‡bkuS¥Õ¥£Úµç0§¢½u0]Ì@­á\0Ÿÿ²{ÚØeW�wuoëÝøÄö$ÒÚz,.] ûjâȉö–«HfŸ¶4!X–y{m+=÷¨a´Q;äòSЊöøÏ1.Ú²†ºc1rúSKK¶í ÂaÔ½í¿6ßzW6:÷¼3 ˜[kd!U3“SûàÒå‹ô¡?Þ×XVBŒô]o!íy˜ÚKÍOGægåøºã)¸©ÖÊ$ª¤e"Ð`Ðt²ÌË5ˆé4J™VIB)±ó�ûv@Š@¿sàƒÎ)-ø"Îë>g´†;'plCE DE¬ xäíXÇÎ,y“_b*#G ÛÌ|Ʊz{­„kl�ÃC3 ŒÿÙ1•¡Ö�‰Ì€Ž§kƒÖ«Ù�K-°è‚h ¿3jÈêzÒ»eaÚ#ŸÓ~~¤Œh-ˆÈÎþ‹#ü$¾~‹�ôÛxëdÐ
µn¯DëÏøpúê¨_Œ ª¿hD–ØzˆtöCšw ÌÌÃ<‡ž;CôÔM×_G7Ùjž¬º—‡ |VƯdó]�ÄTˆ´µÊ«_1r'ÄtyÃ$üNc&¨pœ‰¸ì§¿’çg1Ô€Ãþ’n wžæ@Å^nÀ¨ùdú>\3:4"¶,J£8åßz�Xðî‘åI†§~ØÌDI0è£�ö«§�|Ôh€Ë²ö¥£;Uxr+—Žd¡ÍVúZB–ޡ律ýÕ³"®“[Ðë@Þ³{UBtó,ã}oX8PD'¬l"Cj×4\,A´[¦�ÒY)sù zBzUT¹�oŽûÛ”‰ÓØ1P”V·À¢âÕMÇçðg°ÊÎ3ÅË–{qˆ9ÉròÑþO?èú¹H­ß«qv©jN áé–ÃtcÅVР!ÊÍ8‹.�Š’îë>ƒY£ê$î¹t1ý0R/ †VPl VQÞÿÄh
ŠqJVªè”þê^·Ò@S¨‘ñéÂZ24°'Ðô%ðútþøÂ8P8D™àAóñÞÐÿ‰ôào×h²“_~Óýgó;+HU6K3‹¾Õô=×ZÖJŽsŽ>ð%€&¹X†l€‹wÚº°Tïhoh™©„¨xN%V6 äÉä±Ëææ@¥—üðR¬&Ÿkâ Û»‡È×°7Ü�g#<JNÙ\TÓwËïX‘Ú” œÌ»c^¾~œQ4ï/Ÿ=гÇ)“…ÿÿÕè—õ1ñî—Ì’Žìë5™Ý‰{&ÛgPkº­[æ‡Ü1Ö¸huvìî ¾—]�º–Eaµ½½G’Þúl
ÇûYä HÔ=ê€ÀGˆ6s–ƒP­û¤PÐÏF,÷g¥üu߬À´‚� <Zå�ϵxì»xcá„R×ÁHì?O–å(xvVojÙzM‘$Ôû¤�Ú&PÞ„KñZÞN­0UL3"fAçòÕZDLwq¶–dŽ¡êY"U„‰R-ž€ÑÑ‚S>ØL2 Ý*È{s*Æ›%rõ–P:n9i Ú’ÚcrøMvz _#‘D9Ñ  ËÈ(p>
äÂÚÛ5™¬#<ù
*›¾Î¢’ Ïí'€jW–‘߇:n†ªêÀóÇ-ÑEù(iż®P˜�iKýì Ô§�Ê3>…À�5µý«²Ó¯`WrS3!;'ÔÝïPÈÚ대ºÔ�$ƒn¡ÏZZ� êò~§rªCÈñA¿*ÓZŒ8qzŽKcΊÞàðØffD¼-‹
¾Ä;‚tqbH÷“0¬Ÿ–R±Š›�×Þ?ÊO)ÁÀ¤ï lدû�;‹8(3*…-CRÐG*hÖ¬@X¶G â��úS3@!Gø4%¶r –Q YC9ÖDÜ0n“R€>Q½SÙ•ýx<êMV~ëA£–LÍ£D´†)ž¥e½Nè„mç#5nÝŸº.c øsý‰È=ÿœù$úIð¦ã¸h$ŽÞ)cœƒ<´QœuU½86@]rç‹XfÑm,b�XP‰I:Ñb<ÿ÷N×>ñ@Ñà“¶5¡àº ÌóçÖ%8;ÑôbÁ-ùOiÔ»ÍÜ\ŸwO~^ÿnäø{y€æ’T‚ ˆé,ìë�XØ*àr± ƒ®†NŠjLÝ5)þÉzíötü`¹t�js_šÆç²njq¦ ãö/Û¼šj!gÍ¿€ß8˜áã§ÿïýÿ@ä—•Õœ�¨B–~(*¬ŠÊR�dSp¶†h1/�RY-ŽaÁùÄ‘­åÏ2ì$Â0s/�c^IùLK‰<GâY¥ÍÙ�ÍÀÁ1¢„ûØ;A±c¡‘ãîšMaìJ@Žrå\£$ÜŽ$[p×;Z1‹Fw¢_3t
q[²’2^´¬Üô¢éá…eqØ×CñvŠ¿ã+<—Á…»PÅ1¸ö0K‡á™ŸªÅT§Eÿì9¬ù%—þíuW–ø_
÷òwâ1›R~úت´:®�J¢«L8Džx¤?[kàûö–ÀcÑœ·ÞŸòÞ%¥J›Ý#ì+-‹Á ‡\{TÕ”Â÷ÎØ5Qdš½ÑÅ1êHœ¿ ½¤3î?»&ää¶PǦ½ÅToþê¸m¤t²á„ÿÆc×D£\nzû�©×ÝRŸ'Üð¨“O”'3ÊÁTkÕ<]…Z‹·>rÿ:ZzÌ~ZsñOSÓ,DnàÞ# E±|C©’SêùÎJ„Ò8á1eŸlnĸ­DO˜îõ`¦<ì£9
#Š`�¥¤æŸÖ)ˆw(ùà…YC1$¤îY*û
wÿeÌ‘órƒÔð\›Z6ÞÎ`§¥éA5Hh.,ÿJê]�v#¢à/âŸQMÒ0„r˜#”Ôv¸`ñ92°}}
)D… EPf)>ªŒ!™e»QÜÁ£ÌÑ`¾®
^mO›?²=îA_y2gká¶Ö›žvÑ‹BݽªÅ3½ÙÏÌÓÜé‡u—rvorpûÅè½ð9‡‹9ûC�Ð5þsô[᪯ë~Vfu›Ÿ³_F×½ØÆ]øýûý.FÆ8!7o—ì~õuo{cºÚÝÑ9dvøŸÍù®Ù±˜ùv¿~vðëôøÏ3}£ÛV,ºv6|/r»|Œõ{]‡ºÑ×%k_Œ0áÃÞÓ¿ç»>Øë¸ò~¾ãw¬_|ûí6ŸææK†œÙþàGþv ƒšý ÷ý‹.£&'Çwov�ƒ­úîð½Çn3zä÷Ûê˜Û÷øþ9Ž‹õSv…ð9tãb 5B} Ý—µ_¾Ó_Œ¹ãSöߟ‘cÞo¨ÂÇ¢&CŽœùÔuß?>Ù]vÇŽŸ›ì^g|¸Ð]c|¸ûòÁoWw—Íí ?[yW·;¾/öšßð5¾è"ûþfú¾þ{ú12ì×þîn“¯õA]è¢2öbTÏ×ôøº«pÕÁgìý=ÇvЋ0Wè""˲ìÒTJ+¨VX˜¶©Z,mSÁ4•ÒJk•0M€KåÚ4Ô©´q((�®˜&ƒÅ«£3Ý3cß 5Ó¥ï‹þÛc»[ÏÌeغªn»Ù¡ã}Þs—_d÷8_²ÃÇëÞ‹¼á¿T׿W
ýñ+¿ø`ÃVn·½WÊEòǹo5M¨�Œ„ B„!…¡Ñ´!
„ƒ´Ú ;èËl†²–ÿ¶¾È0¶Ätà@ÎÁzëÉ-Ìæížžá
Ð\Á Ar¤½Æ;tÕ™�M6ÙtÀŽçÉ þ_Dòû‘PeЛ¨‚4.Û�–žó…e�+—<DêÛßA4šG-&ê…ÀÙ¡"ù˜S»ÑC'¬€®Ò(Öâ~FíÛÒèÎ4hÇéD+Bû /cžÁ{HÏ
í&1€¸¥øÆ«’>´H„g›¸—›qhtñhBdÆ1Ö^¸¡,Y¬ì–HK3XÉ»å(ï{¥'Ôúôšm-¿µ-(j endstream endobj 8 0 obj <</Intent 16 0 R/Name(Layer 1)/Type/OCG/Usage 17 0 R>> endobj 22 0 obj <</Intent 30 0 R/Name(Layer 1)/Type/OCG/Usage 31 0 R>> endobj 30 0 obj [/View/Design] endobj 31 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 26.0)/Subtype/Artwork>>>> endobj 16 0 obj [/View/Design] endobj 17 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 26.0)/Subtype/Artwork>>>> endobj 37 0 obj [36 0 R] endobj 49 0 obj <</CreationDate(D:20181229214738Z)/Creator(Chromium)/ModDate(D:20220226201040-08'00')/Producer(Skia/PDF m64)>> endobj xref
0 50
0000000001 65535 f
0000000002 00000 f
0000000006 00000 f
0000000016 00000 n
0000013268 00000 n
0000013319 00000 n
0000000009 00000 f
0000000173 00000 n
0000054490 00000 n
0000000010 00000 f
0000000011 00000 f
0000000012 00000 f
0000000013 00000 f
0000000014 00000 f
0000000015 00000 f
0000000018 00000 f
0000054747 00000 n
0000054778 00000 n
0000000019 00000 f
0000000020 00000 f
0000000021 00000 f
0000000000 00000 f
0000054560 00000 n
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000054631 00000 n
0000054662 00000 n
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000018333 00000 n
0000054863 00000 n
0000013681 00000 n
0000018633 00000 n
0000018520 00000 n
0000017289 00000 n
0000017772 00000 n
0000017820 00000 n
0000018404 00000 n
0000018435 00000 n
0000018707 00000 n
0000018851 00000 n
0000020394 00000 n
0000054888 00000 n
trailer <</Size 50/Root 3 0 R/Info 49 0 R/ID[<F4A5AAEDD48644A59FC9623C897B308D><CC38A0C0CA0D40C9A77EDFC20EF28711>]>> startxref 55015 %%EOF
@@ -0,0 +1,288 @@
%PDF-1.6 %âãÏÓ
3 0 obj <</Metadata 7 0 R/OCProperties<</D<</ON[8 0 R 22 0 R]/Order 23 0 R/RBGroups[]>>/OCGs[8 0 R 22 0 R]>>/Pages 4 0 R/Type/Catalog>> endobj 7 0 obj <</Length 12768/Subtype/XML/Type/Metadata>>stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.a8731b9, 2021/09/09-00:37:38 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"
xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
<xmp:CreateDate>2018-12-29T21:47:38Z</xmp:CreateDate>
<xmp:CreatorTool>Chromium</xmp:CreatorTool>
<xmp:ModifyDate>2022-02-26T20:10:19-08:00</xmp:ModifyDate>
<xmp:MetadataDate>2022-02-26T20:10:19-08:00</xmp:MetadataDate>
<xmp:Thumbnails>
<rdf:Alt>
<rdf:li rdf:parseType="Resource">
<xmpGImg:width>256</xmpGImg:width>
<xmpGImg:height>100</xmpGImg:height>
<xmpGImg:format>JPEG</xmpGImg:format>
<xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAZAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FVk88MELzzyLFDEpeWVyFVVUVLMx2AAxV45o/5tL5n/OjT9L0yQ/oGCG6ghbcC4l9IyNLTw/d&#xA;USvap70ygZLnXRxxl4p7cns2XuQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq7FXYqkPm/wA8+WvKVh9b1q7EPIH0LZfinlI7Rx9T8+g7nIymI82MpiPN8x/m&#xA;V+cvmDzk7WcVdO0IH4bGNqtLQ1DTuKcv9X7I9zvmJPKZe5w8mUy9y7/nH+3aX809KcdII7qRvkba&#xA;RP1vjh+pcP1B9cZmuc7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXVxV2KvK/wA2vzts/Khk0fRgl55gI/eFt4rUMKgvT7T+CfSfA05MtbDm0Zc3DsOb5k1jWtV1&#xA;rUJdR1W6kvL2Y1kmlNT8gOiqOwGwzEJJ5uISTzQWBCe6F531LyBpOo+bdMSF9TDQ6ZYJcqXj53DG&#xA;aV+IKk8IrYr125jMjTje3I043ttP+cyvzbV1Y2+kuAQSptpaH2NJgcynLe4fkh/zkxpX5gX66BrF&#xA;omk+ZGVmtljYtbXQQcmEXL4kcCp4Guwry7Yq9uxV2KuxV2KuxV2KuxV2KuxV2KuxV8sfnX/zkv8A&#xA;mL5M/M3WfLWjx6e2nWH1b0DcQO8n760imbkwkQH45DTbpir6L8i6zd655I8va1ehBeapplne3IjB&#xA;VPVuLdJX4gk0HJjTfFU8xV2KuxV2KuxV2KuxV2KuxV2KuxV4R+XX5vRy/mhr2n6nMF0/W7srpkzG&#xA;ixyQ/uYU9hLGqj/Wp45jwyeo242PL6jfV6Z+aHm9vKfku/1aGn12ggsQ249eU8VNO/EVentluSXC&#xA;LbskuEW+Mri4nuZ5Li4kaWeZjJLK5LMzMaszE9STmA69TxVtVZ2CICzMQFUCpJPQAYqg/Nt/byeb&#xA;/LvlJOE9no93EuojZ45b+5lj+tKeoZY1RIPAlGI2bM7HHhDn4ocIfX/nr8qPyWXylqb6roOj6LZL&#xA;byF9Uhtbe1kgbiQsiSRqjcg3Ra/EdqHLGx8K/l1NqEPn/wAtS6cGN+uqWf1ZV6s/roAu1PtdDir7&#xA;h/Nj/nIfyT+XVyNNuVl1TXioc6Za8QYlYVUzyN8MfIbgCrdDShrirBtB/wCc1fI928y6zot7pipG&#xA;8kLwtHdCRkUsI/8AdJVnI4r+zXqQN8VZf+Xv/OTXkPz35ptvLWkWGqQX10krxyXcVukQEMZkapju&#xA;JW6Lt8OKofzt/wA5T/l95P8ANN/5a1PT9WmvtOdUnktobZoiXRZBwL3EbHZx1UYqxbX/APnNbyXZ&#xA;3no6Nol5qkAA5XMsiWo5HsqkSsaeJpir0X8qPz48lfmQJLbTWksdZgT1JtKuqCTgDQvEykrIoJ3p&#xA;uO4GKsl89fmB5V8jaK2seY7wWtty4QxgF5ZpKVEcUY3ZvwHcgYq8Kl/5zf8ALQvOEPli9ez5f3z3&#xA;ESS8fH0grLX254q9n/Lb81vJ35iaU9/5euGMkBC3lhcKI7mBm+z6iAsKN2ZSVPjUHFWKfmF/zk15&#xA;D8ieabny1q9hqk99apE8klpFbvERNGJFoZLiJujb/DiqS3f/ADmB+W4vNOtNOsdS1Ca/9H1BHHEn&#xA;otOBSNuUnxSKWAYLVf8AKxV86/8AOUf/AJPbzN/0Y/8AdPt8VfZn5c6lp+mfk55V1DUbiO0sbXy/&#xA;p0tzczMEjRFs4yWZj0xV5R5j/wCc1PJNjfvb6Jo15rFvGxU3jutpG9P2o1ZZJCp/ylU+2Ks0/Kz/&#xA;AJyP8ifmBerpMQl0nXXBMOn3nGk3EVb0JVPFyB+yaN4AgHFWUfmV+aXlL8u9GTU/MEzg3DMllZQL&#xA;znndRVhGpKrRQRVmIA8akYq8TH/OcOgfWeJ8q3Ytq/3guoy/Hx4cKV9uWKvY/wAt/wA4vJP5hadd&#xA;XuhXEsbWCq2oW13H6UkAcEqXarREHgd1c9MVeZeav+czvI2majJZ6Jpd1rkcTFWvQ620L0rvFyEj&#xA;sPcquKo7yR/zl9+X/mDUIdO1Szu9Du7l1jgkkAubdnchVUvEA4JJ7x098Ve7Yq7FXYq7FXwhrVtP&#xA;aazf2sw4T29zLFKvg6SFWH3jNcebrSN3pPnbztqHmH8rbPTdQlM1/pN/bM87fauLWe2mNvMx/nXd&#xA;JN/te5y2c7i2yncaeU5S0u64q+gfyN/Jm5triDzV5kg9OSOkmlafIPiDHdZ5VPQj9hTvXfagzJxY&#xA;upcnDi6l8bXdrPd6/NaW687i4u2ihSoHJ3kKqKkgCpPfMlynoy/84tfnqWAPloKCaFjfafQe+1wT&#xA;ir3D8jf+cZZPJWpL5w85TQ3OqWKPLYadb/vI4G4msruwUPIorxA2U71JpRV8w2Eep/mF+ZFtFe3H&#xA;G/8AM2pok9y3xcDdTAEgHsgb4V8BQYq+nfzN/wCcVPy5038uNUv9AS4tNZ0azlvVvJp2kFwLZDJI&#xA;kyN+7HNFNCgWjU7bYq8a/wCcT/8Ayduj/wDGC8/6hpMVSr/nJH/ydvmn/jPD/wBQ0WKvoXyt/wA4&#xA;jflxceQrSPVPrEvmG9tY5pdWinYejNLHy4xRA+kyKW/aUk06jFXy95T1DUfI/wCaVhPFLS60TVRB&#xA;O8ZIV1jm9GZNv2ZE5KfY4qz3/nLrzJqGpfm7daTM5+p6Fb28FpFX4QbiFLmR6fzMZQpPgo8MVY7o&#xA;/mb8koPIraPqXlS+uvMssT89fS54lLg14NHFyCcEqBxI+Lvviqn/AM49+ab7y7+bvlyW2dhFqV3H&#xA;pd3EDQSRXriGjeIV2V/moxVOv+csP/J26x/xgs/+oaPFXr35If8AOMnkm58q+XPOGr3F3c6xcfV9&#xA;UijikWO3QBxLFHw4Fm2A51b5UxV4t/zlH/5PbzN/0Y/90+3xV6H/AM5AeZ9QsfyD/K7y/bu0dtrO&#xA;l2k95xNOa2VlbcI28VL3AanioxV5D+WnmD8rdF+uy+dvLlz5jml4pZRRzmCKFaEOx4shZ2rtX7NN&#xA;t+irHNR1SwtvNEuqeVln02zhuvrOkpK4ee34sHjXmK8jGeh9t8Ve4f8AOU36d8x6L5D89egzaTqO&#xA;jxGd4wTFBdzhZnRiK8eXMAV68T4Yq818o+dvy8sNCGkeZvIsGtOWYnV4L24s7wBmJBNPUQlK0AAU&#xA;EAVruSq+hPykbyDrX5J+c/LH5b/W1125tLx7q01AoLx3uImSBQ8f7t04gRqVpvuQvLFXyz5c1G18&#xA;u+Y0uNa0OLVo7RnjudIv/ViHMArRuBVlZG7MD7jFXrv5cedP+cfZPzE0bWr3y7deVZ7WXlFGt19e&#xA;0z6wRSKWX1VWaLg/xDjVQaV2FcVfbgIIqNwehxV2KuxV2KvnL/nIL8r7y31ObzfpMDS2N18WqxRi&#xA;phlAoZqD9hwPiPZuvXMXNj6hxM+PewxTy/p9rffl7reqX5NvZ2GnR6baytuZr9r9ruNIx3IjIVvA&#xA;NXIAeklriPSSv8ufkD+YesNG9xaJpNq+5mvHCtT2iTlJX/WAxjhkUxwyL2/yD+RvlPyrJHezg6tq&#xA;8dCt3cKBHGw7xQ7hT7sWPgRmRLine truncated
</rdf:li>
</rdf:Alt>
</xmp:Thumbnails>
<pdf:Producer>Skia/PDF m64</pdf:Producer>
<xmpTPg:NPages>1</xmpTPg:NPages>
<xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>
<xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
<xmpTPg:MaxPageSize rdf:parseType="Resource">
<stDim:w>2409.000000</stDim:w>
<stDim:h>909.000000</stDim:h>
<stDim:unit>Pixels</stDim:unit>
</xmpTPg:MaxPageSize>
<xmpTPg:PlateNames>
<rdf:Seq>
<rdf:li>Cyan</rdf:li>
<rdf:li>Magenta</rdf:li>
<rdf:li>Yellow</rdf:li>
<rdf:li>Black</rdf:li>
</rdf:Seq>
</xmpTPg:PlateNames>
<xmpTPg:SwatchGroups>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<xmpG:groupName>Default Swatch Group</xmpG:groupName>
<xmpG:groupType>0</xmpG:groupType>
</rdf:li>
</rdf:Seq>
</xmpTPg:SwatchGroups>
<xmpMM:InstanceID>uuid:8c8c99aa-3ab0-164e-b1d6-ff16670c96d2</xmpMM:InstanceID>
<xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
<xmpMM:DocumentID>uuid:23870d23-4496-4d41-ae6f-a50b013afc26</xmpMM:DocumentID>
<dc:format>application/pdf</dc:format>
<illustrator:CreatorSubTool>Adobe Illustrator</illustrator:CreatorSubTool>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?> endstream endobj 4 0 obj <</Count 1/Kids[5 0 R]/Type/Pages>> endobj 5 0 obj <</ArtBox[0.0 0.0 2409.0 909.0]/BleedBox[0.0 0.0 2409.0 909.0]/Contents 24 0 R/CropBox[0.0 0.0 2409.0 909.0]/LastModified(D:20220226201019-08'00')/MediaBox[0 0 2409 909]/Parent 4 0 R/PieceInfo<</Illustrator 25 0 R>>/Resources<</ExtGState<</GS0 26 0 R>>/Properties<</MC0 22 0 R>>>>/Thumb 27 0 R/TrimBox[0.0 0.0 2409.0 909.0]/Type/Page>> endobj 24 0 obj <</Filter/FlateDecode/Length 3570>>stream
H‰ì—ÍŽ¹„ïýõUbòŸWË€O†aøàØ»‡Ñ»~À_$YÕÝ#É‚wGÀ4M’™‘™þöqûð×�aûÓŸ?n7Ûôï—nþò�°ýðŸ[ØÂGÝbýclƒ¿-äí—Ýþ}+Çèi³£�¨éVYÑŽú\ñó—Ö´Ç5ÿÜ~Ò-üãÚŸ¹]?më£Õâ–F>Be{ùäËô¿Å£Öºíéh½l11Ú¶›‘›’�?/·Ý°´o9%—m�ý¨ŒòÑjÛvf{ªç�Å%ò¼x}¯ñè6´9·¸í /äüpvk˜0üî‘¶½Û‘º]†­aÐÊõ{?¿­�ûiö:z¿Ÿ½îÞOË >«ü}cû~7^o í¾b¾|?­_žy¸bzn_æ‡Ëºà6ÿȉ\Í ƒ«0îÓ5Ñ
c{Å»å�Q¬Èº:¥cè9£­`|iGNéËe\šú}EïGé§£hÞ‚ÍwõrŽR¹$tœÓêQf–#Ëá5ÏX’sø’ÇÑkôM<»&y4C{ðJÊÕ½’òãD8B›HY3¬°!Säúj't÷纅Kš¿Evü%3Ì=\+mÃΜìþ–.ºÃ€×ZÙxl–Û–3ðEííòÖ*@Ó�çwŽ/DÔ��}3Ä¢µêñ÷1_[3bSãüÙX±�ïõ1¼sâG¨ú÷ö™¥v˜Õoò�Ç?ð�]Ïü+œð@Àdõ‘�š~b`kù‘�%ö‹�u£¤g&\òÀÀ0 Èèä?é§mýÖ¹ÏôÓÅwúM»ö7†?ÓO/{¤ŸþÈ?y時ÍWù�ð žO·†.n‰@mA¯p¦Ü´�I¨^À­‰ š`Â]°?Ç|Θ¯­‘w%8gé<øN,qd1Oº¼ø¾˜éß™‹ºcÎEmÐ=˜Ï³{xÒ†LT¬ÜWT‰Ë¨«Ž´û®>Šþš1ÒDB·_'ï›nýÂÜE…sãg‹LLpwAZX‘’Â<M;™¸l¿3µ£PNÔá¿+ŒHâöÄ—·‹]‰Q6VTX}¬rvÌü|½ÕJˆÆFê�c˜†¥V!$ñÁ !wÉåB@N[$mfHgÀš° ü×Ï`i¤‹nQ~¬>nMðPÞÖNd°vê:Á%"º”÷ÔpsD™¬ë‰{Q©0x€á$§P¯@µóSÞt#Ž
ekìiÒdq>¦qDyû¿ÜV;'ðeñï °h# MùÁ1‘X#Y')rW&�¡²ê.õ�ŒÛ‡ïòJÅ/Ç m“à–2‡IïŠZïùèšñ+÷
“Xh ŸI+ Õ<:CØ„ÉØ�}�„DàJLq©e±rØÌvŒÇÖ�?Ó+ìj¼Rñcç“ÈÁõ×î!gcÂEkàÇ–,+_ám�¶Øl†z||š‚=¦ŠG^ÇzëÀ¥Âˆ„,Ey›Ðò´kÌß=Jüš4™ªÂÃ@ËrÐÖü¿óþŠ›y`”·«ÞÑXåyðž¸]ž²îâpå Ž5œX·vMôWć8lAà)íe“»äR˯qÔ8¬5{ÀÓoàûS‹r»J´¬ðKÈ/¦€†tD¢ài8t‡sßµ¯^ç¥'o4È“Tׂ°&ög_Ï‘GVÉf�Ág€’Ð)äú +¬Œ<IR‡õÉÁKJ�^ÇÕR áÁçPÚ�I�ø÷kKÓ˜Uœé’ÝèLHzXò̧¢§+]áº1”®TÈeå°
‚{w þ4…õ%ªä�?÷p!Vyg“ÍA)ºl×NRw#^³¯¸Ç‡„�ÑåÛJàÊ”.)©à<Eí7+iyRÒòu%-„êAIûJú”4}'%MßOIÛ%mßIIÓÿTÒüVIëÿ¥¤NIŽÍ.¤b¹„9þ–�ÕE’™Œ:…�ˆJ…C]…pÖ! %Øvv™LúýªU»¾ù%!;ák÷Ñ’/Uæç 뽄 ˆé^>‚«äÓ5•UÍ…yRâ„Y)ïø4ÿ³Œ¿ÄšXWTp‡ï©Ð-vÇÒŽd2w/×–B5ªp—dP GpqTA‰¾Ð8«?a×èr}K_Îí.êÉT¶uTé²j°›åkBúД”„±š§ê†kšóŠæ2ÝUk[–&!×#£âUÃGRÍ÷±¼ÏËš=,Iª´]CTùWo–’|d Meµ¨Þg3`I‚ƒhðEgÀ�Q“K[J>1µN[x»/T_ \"þÒŸá‰(»BŸý«\<¤Oôª±V< ;T§+õ ,­WtaŸv¶kBš­žo+¥ç5ì$ôäéóœÈž™Ý/ñjB×YØ]7ˆlòÎ3Hâ�›·2¹ëI3œiTXkjÊšMƒÝi"ðò"ØÕïBͼ—,Ò'­°Ùyrsqè}øÆ®/8ªw*^"H[¢JùY+Ám”Èœc¸—f{¶f€¨–CFÂÄ›‡¶$X…0{9ï—,Š,¤02ú}�p;uÍäƈ…%žœUžyéÒ­ÍÖ¶%omRÉdæèáûWo浑…I÷�½Þ8«9¶)) fjž q¾f©…†Dav:ÅX"0#EÒäú°Íý,iÑH9ÇoJZûCÒ¾(iùYÒò[IË¿WI uIZ›*¾F¢&üZQ‹ï,jJöï¦iý=5­½¿¦ÙïUÓìWjZGIë‚Â)iÈÕ“¤Ñ?ÁYb³š–¨J»GÇïQ˜~ÓsÅ †’DïI%L§ìQ3ïnh�ð€:'¯QšÊÕ ŠWÇì§,žCo¢¿xP²*Ü[O~(ÿ-¬óÌì*§Î¤\Ã(gˆÏçÉt~ÔÍi•°o'’D¤žAoQ�£OýL8Iv†î¸ n‡¤ï¸rÀ˜¾¨ˆ´5μ�^Tµ{‹ÅXTÆ)úÞ1\ñK¯O˜œÅø™‚Јeí>ÂîP�$k‚—©)BQ¤5 ïó<„™µåÍ�T“ƒKR�ö© S÷†+e ÒWÒ¥>I‡z�© râ€'’츞÷ã#p@‘7¤/ã�Ò²;¨ÛlÑŽ9«qy�ºpEÊû¹†?r‘ÁE1cL-Ÿ½TMa® .§4z+K6T,©�éWVÔЦ4q&¶I‘8vu@ÁÙ]Bš’lVO•]‚ÇÞfc;‡`.ŽkõÌ1,NJô’;f~v¨Žì!ñÓÙÅrvb2%�™êmfè2ºƒ%ê®eú¾R¶^šÝ—>Ó&EÆ›^M"Y.R:‰¬ŸŽ«ÍCœb^±…„ÚNrÎ$
˜•,Ñ`ÿ‹X{ë'MVïçøÅÁæC3]Œê@ˆwWÜ’Ðмyä!Õ¼  Jhy¥ZÄn¨ì@5³¸‰8�6A9&cPWÏôEFvßÙÛ•Ä¢OšÊç1]3¯—¾n3Ý‚]M‰˜Û_0,†1ïˆù �Þ®ÎÖŠÇ&(‘aWö,/l''s_  MoÕŠ8£ì™NÀræGÕh8«õ˜íóä^¢c°ƒ EèÖ !)rÁ‚ÀH_oNÏê&t�PxWtÆô�ËQ5›å£éÑÙŸPÇ,Í BØ.°R[yI§qëñIè•Lôº$ÊV)¥æ/I–xŒ@î”L/Ï”¨”5�i’Tâƒú_²Ë9n¢¹Ná l@ »úX��øþ�ßk€ÔÊJì¸"�™žþx>|Ǭ.;–¡õø¢ŠFÒú½gUjŒêžó»V`8'´9%hÌx½›ÙêçnõÝ-ãmœ}t¶Ú¯yY–e4º.q°ÙH›:"gSèV
b÷ó¸Úb–¢¨p×m]¾¬íšÞ-‹mšºjáœ?�ÞWšÕ²IŒ›Úôš1Rc¹’/Èž¡¶s .8¼&yX%žóá�ÕL\­/®ÁšM¾Ÿ3�åõ¯™eM†~§=žcŸü±væZŠ=š…ª7üþßuz?5[ø§.í ²û>=Ià!)�ýTù¹ êTçR¹8[¿½Áï{§1 {ôoü ~®æ)¥žó{`Jº/æeàù6¼•!öf”^:ܬ 7wbškÊÝ@ýx!}dÚ­¾¿u;qêî@ùçª>»·Ñ:vŠ�ËO <[8~¦Ò\-Û#¨« kúZ›õ¨Øò±£ÄÓw¾u“š‹7£Œ®kr夿Lc(ëqö#Ñ ãa׺ª&g*^¶‘Ÿî­n(ì³ ûà–/[Ô¢´´fþu~Xï�kbP‹Ò®Ê8ïµ:Ù³l2f¥w³¦ÜJ­gÉÓf>ßø~Bþ›:[@Å9L7¡u Z·Ý
̵^CA†)ªIË·Ï�sZŒG¨Ðâ¿•âÿýõ:»¼‰`.½¯ööÃ)[œ8ØWÐwÁE¼'Uo”÷¡eBÜ´j3[(°Þ([£ê´µmj·r²DÁÚ åJçSÒÙ ÃWéˆ^À’}æÉVt9jËÝ�¥nÑuI¸Gt*|P8H>@‰êDë¸pÀ¹‡ÎŸƒx’[€‚mJ¬ÊÜ@Qb\Ü{,P¿yÙLÂóªK�ly=Ájƒ¬'yšA:vw�N¬Ýr躡j<áBƒ7€lN‘°2…Añä NOxBØ1îqßit,g·•=’‡Åj>ÙÏørÎS½áQ’ ¸áÜà¹<å ®÷¯kNñØ•ÏafGØe{¬ù1¦@d}jãsRç�Ÿß¿ñß?=µ�Ø endstream endobj 27 0 obj <</BitsPerComponent 8/ColorSpace 28 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 39/Length 341/Width 105>>stream
8;Z]!;%eL($q0pNcbniC#K_+GJ<E15BI2-QYYN4g$*WZH;oGN/T@%8hnR0>@ETFsU
;=F[:4pLp#*6itT],LiBHTLDYc,kEBF1[ZR2bGkRVNX43#"`0i&ind`_,9pl5r&8"
:H1]("Ai95^_=lhY#1edW,V[/)5X"5Dq]kTQ2):g\lk5k$PX6=OAr"<R6+j_nud;u
nb!/UdtrFZe>1PRaXFHt73[miI*7dprenMq;+K8hRSNRQ/fH;GP#AtJL*5c[D[S'.
I:JI\Yu,Inbp!]Zd8PIO958dISBad#rhI+)hkLF9,#Yl,.^fN>42G7?VF*,\L9pMb
q@!AnH$W<~> endstream endobj 28 0 obj [/Indexed/DeviceRGB 255 29 0 R] endobj 29 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 22 0 obj <</Intent 30 0 R/Name(Layer 1)/Type/OCG/Usage 31 0 R>> endobj 30 0 obj [/View/Design] endobj 31 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 26.0)/Subtype/Artwork>>>> endobj 26 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 25 0 obj <</LastModified(D:20220226201019-08'00')/Private 32 0 R>> endobj 32 0 obj <</AIMetaData 33 0 R/AIPDFPrivateData1 34 0 R/ContainerVersion 12/CreatorVersion 26/RoundtripStreamType 2/RoundtripVersion 26>> endobj 33 0 obj <</Length 1402>>stream
%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 26.0.3 %%For: (Michael Shamoon) () %%Title: (Color logo with background.pdf) %%CreationDate: 2/26/22 8:10 PM %%Canvassize: 16383 %%BoundingBox: 0 0 2409 909 %%HiResBoundingBox: 0 0.29620361328125 2409 909 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 778 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 2409 909 %AI3_TemplateBox: 1203.5 454.5 1203.5 454.5 %AI3_TileBox: 826.5 166.5 1560.5 742.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -1096 2147 0.375893458271534 0 8192.48096032429 8191.15079618071 2548 1389 18 0 0 6 45 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -1096 2147 0.375893458271534 2548 1389 18 0 0 6 45 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:704 -46 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 34 0 obj <</Length 34140>>stream
%AI24_ZStandard_Data(µ/ýX”N¦…)-�D„�€æ¿l©­Äè ¹ZAñ‘u®Aäݲ""’Öò8œ!à@­A ¬âÒ’ÕÁêàŽ‡ÆRø ¨Æ?º¨mxlxŒ¢gÃC£qXƒ!d4%¤)‰IË•‹ÑÊÅȳr1òhxdJH r±JHy€Áø‚¡Ð0Ñšp±ÃÑÀ …†‰–†�£�'Z£èÁ(GLŒx¢…pÁp4ðëB¡a#á,±€[$´�Õ1òl$X"F±ÑÑÀªPÀÚ€I¬ (0K¬Œ¢Ç½B™V³„Œ<›ˆQ�}…2  ƒÍ+¢@#x¹D6¢€æ²r‰@˜PQ`= 6qy^ %ñxXÊ(z0X:’ÒÄB“P4™† i@ÅãaÙij!- Á5âñ°,ž—g³œÉ(œx°œäÕ¡à 1i‰Á
Tö!ÃD Av„EOÆ„!Õ¹DÎ’
L:B�<ö!ôA–ư à@'¹Á`™Ëš` <<ñÐ"²"S†CÁp°-$Qų¹X›eY“–b0—ÉÈ3z ˜´ÃñÒÒÁÅzØ`0’‘gÓ …@¨ÁĈ[l€ŠKKˆƒ•‹‘gƒÁ Ü…F�ðáÙ`”&´aÑapy^œÏÃ@S2Jøðl 0˜jÔâ|°\.|”õ1 '‰€ÁZ#�…ÍËà¢õ-
›�EÆå¢…Ááˆl8X‚�–ÒÁ` ‚>d˜H,
ÂãÙ`Œ\"ŠÁBFÑãa”�ò‚c=žMÈÅzÀ`LR Æ%ò!Ãä aÀ2¸ðl026%$åà¨Ã*Óò<d˜T-"Ïf_i]���Ú`° M)¤0˜G�ƒd�W¤�
Œ
¨}4*E+ll°D¹+¢×Go iy,/ceAÀÆiIËV� -”R<š™ÀÀF. Vb¢HY`^%ðøhÖE!Å),N  –pÁp°Û…tA |TcÂ�êP8)±#p°m- �<XAŠU‹ƒà€ < ÆÝÉ–†{6›‰Îtr '$´ñ! }|Ætðê8`Ô@…5²“[t…j…€ˆŠóø4lx%ÁÑ–nÙÏËŒ´Ì¬0lø¥ pQ'[ÐÅU�T‚@œ¶pih(@Hù ŒJ68ÐIb°ÆÆ†ä …ˆ$¹‚¦`/hX f ™P| B" .% “Õ ãáé•Àø†gƒñˆTV0ÆÃv¨�Z¯?‚)aP… À`—Ž fÀ&Ô±Ò�0áPГ,°�ÚpD–ƒ‡’ ’LN '&¥mXmJ'ƒýŒ˜R +É@X¢qñ)«U\Zn�(|ïµÐÆàBð BMÁ`-˜R¦t¬(ƇkÄ€ƒä�ĤåF‰ÆÀ`$è0
¸ë"ÁÒ>Û–+Ó¶\`° �B—Tt‹“â ÚðH ›(!Âit'/׆Á8úñ°¦�˦áÅ`Àrmƒ*7H$Ô€¥IˆÁ8ÝÉ�BI–BHÏÁ"˜J Ô° É“´l,
¨„Hq¸`°�„
(±’‚HŽ�ËF³­"Hƒ1Œ+­ *—HÂÊ?
`° ŒEh¢a@Z¼F$o@¢ÕÁ ÀAÄ�á’€ÖDGŽ˜”`¤h ¬:2ib@C¢‘ 0X²†6Á [– E(24"B©<Á3�(eëYiÀ…Á4áK)D¤ÂÐ $èê¸LÂG‡à…Á>>£|r4ÐQÂ¥é£A+ ÁsuœHDD”ÌbW2
E4P‘Q”=Ò4)ŽÁôÃsàâ”R<zä/\צ¹8Ð8éüº:ƒUl$ŒtPPN¢ É0éÙD0˜jô=‚ž‘�Õ¨<x9† Œ F£;)±§��õ°mŒ¢K%Á(3(R…–hƒa<lˆ2ä£ãÉ, xR”!&™WÒ²a°«àÀe0 @僉MÒеa°M0e<Ç‹Ed+ÙTÃC�CdÃ`)/ƒa¥¨DPØ�ÙŒ +£Ñ�¤iD6×¶¹J&%-;‚®u53¸Œ<›Xb×L![ÊË`¨p±^Å£“©Po›«´é$GhÂX£
ŽZ œÊA%ÊŒT4ÉèPpÆI3«O¦A㳑«‡I‰aƒÁ^ÉC†©%@Óò@˜|´@)zT#÷lZ¡Ô'A£$²B"
L”¯ŽƒF‡$ä@ñòBje `qz¤E EÉCË¥aÛ@ )=% Š QqÀˆ¡ÝðVÄ~Z '½ hHù08E'#e@Òœ ‰Ì˜XÑ,…Kd1˜«!ˆ86F,>—�Ñ hûHMX ÉUÀР‹R®H¸g“pÚ4„8 ¯±%R6 !Œ‚“>$�„X LTŽ1ÀÂáE²qá�.«C‹Pt8.N"&µD·—Eêó
yPqPi2$bä½
ØÕ Cºøê?jÚ”€©"D@+šµa!¥!Š"
P\‡ íaÃh£$’ÜÕq*!÷l$JH©1ê'ƒjm :ûÁt*£Óáò±‹åCR ¶¢!rá°â)É,ÇBñy£ +á¹2™ž�< ™2H*£xzxm4ð+`è¥Øt’_) ›Ŧ““Ž†Í—¸gƒÁ8™†b�´�È�Ƨ“)dØ+Ú†jÄga•*¡V¦ìµÒR(Ó6½D¡‹L¶�j™@:@ê$õZi¨ÔŠнL&¬íôI”UŠ•z™2^+–襹LZ4ÞF¦^.-´)•«EuZE\¨l,¼¶Ï
k½*›‰bÓšµbQ´¶ÂÚRN¬‹bÓ6À´�ž©CW¬ÔÆR½ÔÔÄÆR©R¦•ÉJKʆö2mÚJ¥@,“�†bZ‰X€À´�v5Ujãùš.J­–iÛh¥¶“K ¹X+•UKæJ�°2ÍÕ’©L«Ð*"s™²”S‹+;¥T­–){µ°0©2S*ÓN&U+c½2”¦­²Ö+㤲UÊ„‚²J½R(-[±²•IÕÊZXh.GæD¡‹•)s™2M•:ÉV¦ e•ÀäÊVZ
2W–i)¯LÛL™æÒR62‘ƒì [±2”æ2=h„†bº ….Z#>ÐR&Ú€—Ë$zxØXª\Im©ÒfB­L/ Qèb5⣯íR—Êf¢@Ñ26HD¡ Õˆ(óq&¬š¦z8±Bš«ES©X§UjSi(Ö
ªÕrª—KõrµZª—kkµPnk©¾ønÞ‹ú@ÙÃ(Õ`å´rҔ˭h¯UÊ­œ¶åj±\+§kµ2™R¯•ɵ ½R)hµ¸\+§Uˉsm¨­V˵©LXZ)Õɵ°òJ™¸Lµ�°±RZ)Õ‰Cm¯•–R9™T&nS�RP6–Cm§JÊ¥¡œ «€ ëµJmÚ*¥:ÑPNeÅå+õ2aH� ðrm¬“UJC1µ¥i*“ÍdâTVPV¬×ÊåÒ¶Ö
ëdBÑVÎÕ2µVX'U9WkÓP¦—sµà¶VKebZi¨R¯l™T›&kuJÀi*ÓIÕ:¹j;utÖëDSAuŠi%å¶VkýY+¬“­¥B¹×êD¥  ©œ«Å&-.÷Z�lîä„å¶VkÓHm¡l“ ¥­R'Z(³™V)ÝØµà\-—K[½Lª“—ær®Ö†âZ`¥¸­Õ:mNe¥õÚ4V¬“k eZ¡R$°R4´“M»PiH]dYnÆ:YE˜°$²•IeÒJ©¸XškÓжŒJeR©X'”•iÓPL-gÂ*Ðé¤\¬U*c­²øR7RÃB5â“­F|2²hªVJR—)¥úd©×êó,2� ˆ‡¬£q‘©þËe*½X� ¥¡6ÖIËè  M¸^šËõÑT&¦×Æj¢ó:¥B™l�•BѶ,šªµÂ:e­”ê¤2™d$l©¯Ujkmš¬VŠK£ÈbÄG_-­W‹g/‘H¶Ò’Bi2®-%jøúßbmÄ×^¦—FÊ•ê8ÑJ»¶[�ï®ûïaÅ:iÐP«•J=e˜ÁOMwË QV©WjeêÐH½L*-#=!Ëë"ÓPL-(+S) �R!MebÚÐVL*Ó‰Ur…"6íµŠ8±B/I¥id²…—†JÕ"Šø¨dH+–R‹ä{¢•4T* Ä'ZI÷í‰Vja�T* ¤/Íurbaz¹Ón˜ùiez¹R!”U
ZªöJ{Â]7Ó%ôŒ×‰Vz¥V¯­¤0B?™Zé(«�v2‰^)(©ŒÖLG½6K%"A¥¶Ñ¿_Vam/—¶¡lÚËeÊÈX¯–OñQq™VX-צb�Ú¥Z¨O©L(”©õØ•¡RJ6Ài¥m¦–keÚ^YŒø d¯–ʉµRY¸½nJ©LYêµ2=}@{eÚ*¥zµ°²M;ÉÒdÅJ½Lª–•”+Û´–©•EMe’i/“ŠåJe¹ez2eÑÙý ñy¥T)Ó+ÚF¦ °i.m»ÈT#>“¶}Z¬ €×ëD+­°^/–IÊ •@2ýž'L�ÐéB}¥ ¤´”|•½[yW£ºN@;m-, í”R)N\ÚŠµBi*'–JS&šÆf@×f@×.¬°^®–‰ke�Y©V`z™Bšªµbr)°àÒ^-&©íõ2­´ ¥J¥œ\/MCS™˜R›I5½L(ÓK[i ðŠ-*“+ ÅZ%h(ÖJµAFC±*J�…”ö:i*MÑÉT,ÖC(‚ƒ£“iL˜õ5ó[7IðøL ZÜNØå˜€‚¨èܨLÆç"“©Êf¢À¤j¹R¡LöZEtžÿ3ãÓ˜1KmÅT‘ÉPV©í¥¡¡X§ÔŠ£“i4Cm&–ÉkûdH0'Ó슕z¥\¬‹LF‚Á2X*-ãµJ±.T&-£“å¦mû °™V¬Ôë”RÈ:$Ìô2…"jAÒÛûr¥JØéÃàar¡½^šÊt�ZA,d'Z¨“a  å‘i¦X†G–*KE–š Ó¬@–™D–ØYb�,3}¬žQß[3ºÌâó}û½ØÙ°û¹þvÔøÏeæ/vì­û±ß%–‘%fòPÌ"KMÕZIit0N¦­˜*:™Fä¥j1�h!L![€µšè`.M5ÀKãµ}bfj–¹šiÓd0Ô
ÂešNÊ©…µ‘u4›†Ú,²MC1­LYB‚kd­eJÑÈP«Vk…Ò^©�lÓP«ÔIÊËtáñÒV&ÕÅk•2•6ÓʤÒH•\¨•¦zÈR\&©RÊée€ÆÆz¥P™©×Ik¹6í”Ji™6””Je½¶Ïkû¤¼L+‹Õ…ŠÅÚP±XYŠ«e{È6íõ2�´—k MuJ½6ÓÅŠ+¥b™¬  Ñb©4V+ëD e2M¦m&•HÓJ™\&Ó ¬R'Ó¶‘e2Íë¤0±ÈPšRëuÒ:2ëdÑjam£U
¥EuA+0”UêµJm+VI«å¥i °T¬íƒÁ\¯•¶²Â¡V ¦Aá2)@$»Ò^/“J´­Ðõ}Œs£jB³}Tj‘|'d�¯°J¡¤6 Åt�yh©Gi$¨´—iµi/Õ‡äÕ;{P³Y3ؾ™~B}ñÓÕiT˜Åíå|1a»�
³Ìš]¡7GèÏ.³oÝìÅÔ„LAKu°6VZË‚$5âƒÁ:ëUx¡�@r’"y­´×Š"Y¥P´’Wצ `*­´TÀW‹ŠåÒ2^ÊfÚP“JôÚ>$®ÒP,ŠñÁ`š)h*ÓICCÙL%’Þˆ{™‚ë•Zqlšª%#³[ãµ}´«"S€–@ÛþÌ]>š¹{ U© wí�¹ã\Õ^&UkEÛ áˆ�Ke3­´X›FdÅJ¥P´ ™,F –™‚ e•z½4 Å´Aò –)h(& G|0üÏ6Íd¥¥¥Jµ<�¬F|4{™V6–HS¥D$ñÁ`*'“ê!K¥Ò>2Ók¥¡˜(²•iP¦àr¹´k»x­´•–+ä«pY羸Υe¤H 3f1{³Ì2Sëe•B­ZX Æ�Ÿf
šR.—I€• „Á`YªÌv;o;›)h/ShÅJiNP-‡Zµ°6•“É$Ky¥�±PXªlc©X L¦ ©^© Ód2ÍŠÅZ1¥hd*Í”rJQd2…�%Â`0véÞf
+Vʵi$0âƒÁ`éz3MFfc½LÛËÕ¢REd™ÂÆz™´ „Á`Y:NÐLX¨O‚ÆÅ*�Ä`*¡’e�‘-Y�9‘€¸góV°\¬‡ pφ5@¸g£1ñlr@g€{6Fhœ¾!´½Á#�Ä`ºážM^ @ R-"2Ò
.^þÀP "iöºDL„J'§‹C@qª‡Œ‡Ín¸g“Ð  )™㤊ហŒh8iÃ=eH8){ àx¾à„áž�Û ˜(‹Hš$u¨F)ãT˜d8XFŠju&´á`°„Ó¦´1½¢f"倣ÙùFÀãa[&=xÏè�óN8Žª„dE1òÁÐɃWÙ¨Éå‘>!ª‘gUYa‡*Q´€ruP Š‡Á<2F" ˆAÈC�„Z@˜ç!±dF¬1àp
TÆ~FîP`;mô%bQt4JJ8JªXÑ,ÇE‹C†Â%² ñB€€vàˆ\4>[Š ‘’ (PpÒW/¤>›C˜h
ÆU�… ‰´�pøOËá„¢“ü1i„Êø`0i@bWD ÅhñP|´€¦m"jű€q²NöúAÌ3€ÏÅ1#&ªÂbH)=’VtJ£4q‰l‚hÔI–C„~i]MQbÑЇ‘(�TS�ÁR"
T*±€“%@"Ôa@áè„{6 ›G  F 4£àq›i��&#¼#ò‰‘‡Å(zÈ;™@â0x'7BÛᨸ´Ì�˜´4A hàô‚&¤¸DA³XQd :¨Œ…3†£�OOÄ=ߌ$ò]$ü ]<b(JD ¿àÑ ˆ:^ŽÁºÀ«“, {B©éÕÉŒƒŽ4G^'�—�{+*Š’%áËÈš0JÅDGT’€Š‡J'2TÅ&“N²6"zvĤ“JÀ¤“šˆ’‰¦G‡ÃÄÂÄÔ¦•fwC=>:‰Šmh" 6‚Jh@«xPRúèäŠÛ”�’@�g³ÙpφU4(:LࢃÀqÑÉ�‡ŽÅE'7‹“ÂÒºš0¤:Z„"ˆ.:I2`Àă9\t²åÂÑÀš1êdK—ÈjB<�c€J1�FFÔ⃲PÀ��HȳaÀ`
ŠðÎK�ã¤K … ËÁ‰F+ %‰IËŽËdÁ€J'=((mi°.HHD›.�dÉ=œK©Å¹x H8—F �¹ÄŒÂI²x^­“×ÊDÅdKaÑL@LLR:B\K@2Ðò±}€¬>4/•�”í#ÄăäóYVÈÇ郂”+ÛÅÇÈ…uÑ¢rA�ráa5 ¸´ �‘Íäb„ä³ ù¸Xu\\T£ öÒ>D\&£��‘Öcux\B<BÖÀ€«/—–mq ðñ°AtX7UE€+˜Z6 ‚�²#nÒ¨‚ o4‹Nj˪X<³.ÜÃQ`À‰�&4ª‚x‰¯ŒQ˜4¤ÄÄer˼:É¢Áñl²ã<!º!q<›O„ndzÑht'I¤ ™ò2$ÄàBàâp¥8NH„Fƒ€Í†ªhLÇ´,ÐaØ6�¶Ù,‹©“œÆ`L´iL4l!Âa¡·íB"Â`#86>!
 M“0Kì4.)Pæ€ÅÔÉ/0©>"•
‰èóüIðˆ —í “Ù¤>lc1(> ¾dF,ÑbBñ Y€LôÁ©è d|ÜF@@|x@ƒa0 Ö¡âÑɃ’ çÂÙ6Í…äAÁ¹ ø“pñð'á¢!ZÎ%G:8…
š‹È¹Óæ2¡âÙ\J�„‹DHÂe4—
Ñr.î´¹`0wÚ\"H…æò^ñ)e`ö³¡"‘ #™eEx*: ¥1’…8`F€|à’`éha0 †Á0ØÁƒã°>2:J:,+ˆÃ`ŒQ$ð¤Ds±H€ —…ŒÍ€ ç’ �‚EÅ¥ÄÑ ’‹Æ'e™£*
'¹²`j–E'”a"‘GÒ”ÇÂ@,ƒA‚ÀÅ7lÃ`
Û*èàð�0ØÀ`+R»ƒÃ`"/Hè@A"” -†GSñA¸XH}X0* ‚†”�в(:)J}
4„¶£DÄb°Va�B!¡‚‰� ã:x
Y¨<€@-‚‹A‹g312• –Ò 2J
$¢‰‘ÇÀ³Ð°ˆ,CEbÁAE^$¢œ í VÐBA¸¨`Â*áൠƒU¸R¡U…D®ÔJDèÓù°8hê‚2Úø`0’ˆBX 
@", !4lÇÖî�ãAiY Hˆ€0*£ Š<NE¯­ã`qaj Œ˜¨ÜÂDdƒXhmœ8T”<Òg@Š©%”,ÎGÂ7 !QÆéã�-ΧâãaĦ{‘\%…ÎdH¤(ãðÅDÚ>,‘a¢/ŠACåPàãÁ:±±>P™í�ˆ: �@ÂáÁ¸P.)/ƒ!åe0lRP îÀd‚(e�X>åÒ¢ñQÙ¢¶€Á¶Ÿ�ÔÂEà:�Vhˆ!$§„IÄ
-ƒ“ƆáBKƒÐeûðÇFb9°xt8l¢È�E¡š� ÃEƒÅ)´+
÷˜¬N@[I† ‘¤„,8 �œƒµF„n+LJ‡Å‰8 dZ4>�@D(S`aãƒÁJÜC"‡ ‹‡Uˆ„a ˆ\\.Œ“PA‡6>¬$ÅâC@â�ˆR,^ ÄeãE"Š`˜èpÐ:\™à]QlƒŠgsɘpá< h. Ñr.î´Ñd@6  ç"jÕæâ�Ù\*: —Íq6>¼i¹JjÁ$' R�; pZ(>,HƒIÄTFçñ!‘ $ ÷l8£�¤L+ܳQQIE«ÕC��‡ÕDŒ:©�:ù ù ¨¡Â=  ýXFL'ܳi˜0ñÌ’õQ)‘:Þ³éL(G'6 Í{:¹} )9P™–g¢¢£�% 
x£ÀI¹—GªÃq “¹8ìëóÙ�6,'’{6­€v@z‘¸gã2¯NfúBËíÃ=›SKს³Ñ á\H
-›‹ÄA'á’©ÐH”XTÜk¡ƒY<Dœ$àR² ¡ÔÂd¢¯Ñ©P]8`\"m;%ïzu2²¨œ 0)Î`Œ<qφ =&>íÑ ÀaÃ…9 ©H+ bóñ°Œòê$ÛH„@¨û|Ô”�²Cà% ´£è9(p°BQ0`ê„@žgKܳ!‰8ØÄAܳ� !j”�‡5Y“
¨À¤™Oü ¨ŽLê8T:©Â”�ÒQL:! Ed?P™–‡Ä ‹ Áp° &å„B ”CPBJ—aÒI ¶â Piâ”LJxÃ=›íRZpHyœ4#6–ÖÕVŸ�OkâS@% �ÇKŽNÆG'1HU¢—:ÑŒh �á;‹�!è&⣓W Ù·Úh`�‹NºP.‘U—ÈfÆE']颓- �äøA7 ‹ø2‘� „”Ë1ê${­ÄÞøAÓbÔÉNiÔÉ�ƒá`GD£‘�ÃHCPBJ�ƒeÉa¤Eĉ<¥†ƒå8P�P…L•L$ÓžNjÇ”=´:8dÀ€‰É£bÓqÎ�8$÷l8z‚@rÏAÅ¥eH~@òA )]!îI (!%‡Äãa BZJÇ?v‚€†D²R`ÒˆRFÔ‚á„6#L|\%ÖÊ:¼0Ñ�6—ŒUÂÅ£Ji.#�„Ë. *žÍEbÀ”�¹x  àx´ˆD6"šÍ4 G7Þr’GÄŠR4‰Á6†3X4:- (‰´y¸pØ,LÚIm—„Ñ€K´ �Ð¥O€ÑH)þ( b3Dh”¸’–-´Â ²´RÀâÉPlâ¦ãTÑ`°…”‚Äl&*\*ÞÊac)àHÑhUi%�•
æÃêÐ(Px#� Ñç’Áòp I91|D¥�$ôry^›�ˆLP ­AG•òÁ`+§¢“q�épXaHûi)8©ˆô âpQ 0ë?^¬ ÷lPZAb66DŸËŠ¢å‚ äQÀÄ væ¤"ÈTtâÀF%Å@b¤q�yP-À‚ ŒÂD¤Ãá$V�,H¨TÂÁk·í•Ñ�Ì@’–­c¥-Û+ĵu ¶mÃÈP”$;ðà’|qIžxŒŒ¤Å€‰Hj88 ™éH�- #©zeGž¤¸8²#±‘‘)42ESY$ÊÉJ)I*"J™1FYJ±DùÁ˜¥BBˆì€€H–JjcƒÁ>2l"‹gaó)Àà.)¤‘ƒËA.›Ìe3]ll$¼:© ÏÅðÑ-ûaiûy±P(: åkƒEh‹CTÈŒ”c£’-�„WÅÓ,:Ér%˜ƒ§%¥%…¤ÃÛq “:ÉNÃ�Ë(œxxh<<6’Ì(x$`0�ŒKKÈ“ h@OrGSÒRÈ…B @ ƒ“l}´>F#O‡ë€T\L£âÒA+à@¨°†Ä¤i0˜†‡†‡†‡�+!%håb´rñ&0Åp4pFáC¡�`“¯�–Xa‰ŒÁ$V$2*aà
xB$\D�—ÈFФDDDx…2 .‡—6òlH$ŠËó"‘P–„R2²%«#[²-¨j3¡Ü�ÁEh@#ä2¸aZ „è ? ^,…M‚¸Ã€Ð²0�gù`8Ø‚q@@dÇDÌ AŒÑ+‘”„*Cð.LˆÒ™D"šVhÈhR|3ø×úÔ\ 8“ˆ‚·D!-¢Éø
„¥*xhúƒHÁC‚®Œ†ŠÐ€ç`Q¢»mBoSÂbØÐØ4„4$4‚ЉÎHUB $åhg"#ãSpOÚR@@³ )Ÿ•gQth€ˆXÄ!ápàøÈø�…Kd\¥}øГˆ]&ú6’�dÃ2ZNГ–�d ˜Ä2
utt„„@œäÁÉÁIb#Óø 誸4Uqi©âÒRSBJ͉I›hM`8ø2ÑšÐ`(4l0&0ÏÑÀ­N‹„J¬H0K,h‘P‰•L+0K¬h$2
ŒÁ$VZ$´áÅPBÊ�.�dD�‡%¡p‡„añxXõ¸HuÔãbàÒðjñ¼8ÐÉU ’Ùx2"S(BC!Úâ|@ŒlB!
1rIø€yÈ0A x: !ƒ� …d¶ÑJ¦ä’â#,«•–Í
¤!Á¨m$ˆ8\ÞAÉ]¤|F;h—ÈG�ìJFAEÆe(iÙ>4�Á¬°xH0CK!pi<T@Ô‰DB 4*N´€hÀ1òÑo1PVÀ&Á•´l¢Â4F][ÊË0(ˆ%v Œç"áN›‹C�Îe£@
çò% ¢DÂe„? ˆ‘Î…c•pÁ`(®õp¥¨–@&.$0 ê’xPqˆÈTF§ƒ@ä¤,ŸeA!Ù–èväİùÒ²(@:I—ÉèCóáñÁq™8ÐI:�ÇFâá…Î(lF¡e„áÀÃa}@O èÉf@O²õÑúy:>B „!xY„@¨c98éðÐlX#V«ƒqx€ZJ¹D©¸4„�•†ÆÈ³Ñðhq(!%(ILZ’˜´l!Á` …†–XÀ-Ú ±"±,±€[$´aB$V$&´¡¥ Ø%¡ ®Iq‰lŠKd5™—Èf"
@d"œ‰KdIÌåyy6ìÕðÒ Žg£KBqy^Û�V+†ƒ-ˆ*#”DÃ˳¹X,Šjä‚*;Bm0˜Hdµx ˜ .#ÏFÄ-ÎG‹ó1
�hq> >0Äç£
�Xq>2DÀa0„�ƒ „Íრ™„‚ƒ O&Ã"Ã1@%F…¤e»0X h¨–ŠåàèÀFB2ˆq.8AȃH ¸6… ˜>0˜IGG“AI”��޶„¯àP-d8`ˆ\l òÇ6¥_F#Ïâ=ˆ2aD4¢i•Œ“LŠgçº2*,σ9ÉD¤âÙ\.P$œK‹†@æ²�"á\4F:8—!ÎE&.$ 0áRRñl.R8—/ÈÈ\^^É�ñ’È Ø’ò¹˜@(8`°4RVèà¡ÀÁ@£Ãá* ÔJʧs`ðÀ-Ìeò±1øxX:Iw “d:¹¤x<,èÃ#áÃãaµƒá`=:ô2
'‰Á6’�däá�ƒeNòE€á`]F�“Q8I –0 J1`JŠÅ€ÉQ ˜(L> ,!#KHÈÈ3Àƒ¥4`ÒÍhÀ¤–ƒ áYÒA�‰Ãrp–ƒ“ÖǨÃCÓáÑá¡ –ƒ“D`98ÉÌg7*.-6¬”NÇ%,|aრ Ê�ýn³³~¨ºë/7{ÛQa;˜ÍÝìÿœºzG…®3}}#ü}N;7{}þöFåwØN97‹ú2cŒÙþ ûoÃuV5×S¡;|†.j«Æ÷î:s3]Ð3—:ÝÎ:cB†¾êYŒ _?ÆÝǪï¹�èØéEÍ|v¾Í°3µ¾×í|U÷ÛYT¸ÊÉÙ¹¦BÍtN….î7Ç}ý]wü¼a:¯{î¬;6LïÕèö£f¿B~w‡.rgïùÆø^Ô~qwa\õ5¿#|÷5c蜿ü0µwct £êo÷Gf^÷`Tl%ûíåæ÷�ùæ~ävã¯ê/|Úû.ßÿçþï»~ÿøßóå{cª®ûÿ÷R;�ÃgÍ÷íO#¿—Ëšûz_ܨñ7.äþØ/¾ø6�+| £sÖ µ5:^uŽ/ã:/ÁÍͧº·P±•÷½÷ËØrÇÌ…þý ;ÈP!sŒ¹ñ5áÛÍ}§ õ­>|Ú®vóÓOïw÷
Bøt5:˜ð[u·õ#ŒÎ]„Ÿ_ãG§ðßÂ×/B˜íú?&ó³>Èн÷¬o÷u>…NŸ7섯=ª‹þŸÊ¯ªÊî4Â�1&ÌÝ…N#|õNÕ\Èî!ÔçÝ«áó¾÷.>è ºw¨Ê°—ºmøÞ7õ>OÚëTáïc¸¼ªãøìº©íÞÐõÿk¸ì¿ïÕAÿö턾
ÕqÿóCÈO7ÛÁ}�‘ãêkW÷ô_+|÷ù
³:o«‹ñ}tÊþ ]Ç;úKçñí놑õ¥»Ÿ³«þËôè>?æƒÜ1rd÷ô;ög榻ƒûíû>½óYÓ[óÓ¡‹þýü£û~5BNnã>f«¯®z|�¾uû ûs¸Ù¼ïBNçV× õKŸÿôuäNó­dñ}›ß¾�.¡gðµ¶vû{Çïé Vâïq¯ïg\NÇÞŠ•ú¹BŽï2òë÷óë÷Êî3ƒÏÝáô~uWãsP;¾·.st½�iF~°ûås¾ÿuô\uúðù?]wË®ú²:Ü\·í©ÉÑù¥/lWeN®Ý5cMþVõ÷`¾=]>×ì_Õ¿5²cõííçvþ\±Rö1þFOíùó©¶÷{.ßeã³F×ðãÇ|ë¾kæïeÿ{Ñ•;º>èÐÕõ?¿µa„îŸ+vzÛ¬›ù\t×ì-|øP_ÂvvÆ0ßóù�ºkcÆvïívv¦°Ý[»:n÷~Ï©ÌqÝÂÎ"o¾×ÝûÎÙ5ÓMvÏÎé`ÿ¯ö«»_×,.·7÷‹:ýÎ4yáﯷËõÖèOUŸ•]¿Î^fúf÷ªsuÐ2|»­ñê¾u}.ÂÕlSá·zôvÇqáê?õèbÜ÷ÚcGÿ—ñ7ꦺ—éñmûs¯3\Ï]ŽŽµ?ýw>ÖèêÚï³7¾ç�5v»îÎøyõYµÓ%³fï½Bõ¸ùœvgocÃ�ºg�ÿý¯O»Ç�Áüüþø7«û>çM§ÜÙ>fŽ0ý×¥³fÿšŸ{c„Ûÿz®ëÒÃæ“Sß¹³b+™;Ç|ѵvƹ0ý=ìeñ5®Ã�Ñc{¿÷G~ëþ±f“úgäuíœÁ¸ù¯?ó¹|¬(ë×ÉìÐ>—ÎCælO˜ìØY³ý?»ÝÝÝ7gq�c„Ï_»×rvsB÷üœ7j«¶GçÍÙ/÷+üNè ²fñûõ»ƒÍû2Lï|èRc²G�ªÙ?3Y7vgüo†ïû}~ÜwW³~Úöö«º÷8ûf¸êùù.#¿¨ÏL¬”í²ªë»¶ëç,ògä¨Û.·Û¿sŸ—£[È·=ßõãs��q¯²¾ËmÍ6FU†ÙÚÐñB†ûëžö·>·ËîlŸ¿ìô×î³5óó9á{gÝ·÷ý9Y3Uc|ÞÌ�ºêÑ9ê»õ©k„é›ñ1ûö¾ÓgÍžs]úî·Æ}÷œuŸû[V—ÍŠ�Gø¼ Óí2s|ÞüŽ“5Û×­Ï“{ããéÆ�ñuä܇~gƘüv?ݾw?…Ñûa&LŽëÞW³èQŸ¿Uöý_Ÿw:ïýåèã?‡�SßÛ}ï]Õ=²îëÇÐ*sf�Óói„ºêV1ë?vȟ—ýÓu¿áw|ïj¦ _òB†FÍØ­ÙÁ]å?cl}ß¾î§6t�W³¸¹ý¢?7wÇ®ó^Í\cB~q—ÕsµÛ½G×õÎÖU£B÷Ö˜Ž5ã߇þý�ïûÓ_¾ö;W_*3Œð=è^²b§Ž¬Ëî—5[ö„ .lŽœ¿ûÒñcÍ¢{ô|®î“FV¬”yC}̽ù.gYŸSí·Yßsý8{Þ×ÜoNÇÏϪð“ß;÷}ôM÷<5Æon†ü.zjLJð=å§î_jG�›1>tןª©áæ6»†©ñýcê»{1Õßë¾§™ÐÁT}°sÛÝAUÝÏ_¸?:_Õ}øOr¶cV�Ù¡îSuϪ •w#\ý~øð¹ÆèíºU³VþØÛ/B}­ßP�uö.Ì,¦ûûïíìûù¿Ov¬”½—ÓBßáãÌîÅ÷z3~þ?÷Q1PöbÇÏS—n;è©™ökÙ¡ÃßoŽñ½�~ª&¿'t¦b'VfeǪš-C¸í­ªœúPŸ‹«šéK�͵sÙ³=²ëfÈq;9ã|~üp3ím~fçîŸÂ~ÝN!„qãӘ̯þâÃßû§ÝÙ®ÂçPÙŸógì”ùgêvs„ü›œÍÞý*|».s5{mø2Ì?Ý‹ªØ){ÏQa¾ú{QãgwtªfÍœ7y;ßçó³S¨š½[ýc¾øÒaÜçtúªØJ¦0.ÌeøX£:?}÷®Š…˜dÔ¡Á�€�`¥§1ù÷eÑ39êêûO¨¿Ûã{}?FÆÞwg�Ì ;ÓÁ±ÓjÇÖ]ßd›³ÕoÕßkwÜßðv¯;vþuΘñ=¨nÿîæ‹6tùœ½— _¾çl§�±“ªïFÿÝ_øÌü’×¹ÂÌÕã>î~ì/3¹£ƒêýôe/üÇ
ý÷ß¿¶¿~ñõ÷ÛøŽùµ_Æö¨ÏqCìÔœìßþþïÜaÆOÝ»ÕC¹³¡vç‹ÊÑýƒÇ�
Ó½õ¹æÎ˜\}ü”¡û‡Ø)‹�šïÍëÑùvö á>æ�ËÎ!Ì8y¡gkÆu¯�Eϸª ßB·f�U�sÙùÝË~¸› Õ#g¾UŸ{b¡ˆ�`%ÕîýôuuœüÔ×ß]Ýóˆ•2Èù^Ælè6(ãØú:jô†.¾Î`óƒû^þ·kØÙ{«=vs:…;Å÷Ößú>§±3ŽÞÍÌÍîvÆ�=æGì”Á|ªþþ½¦‹ß÷ߣ¦¦»üÎbþƒÕ½�ÂÏôE÷Û¾ƒÞÙ„½ü¢w:}΄½®:îîÎ�Ê>Žng/¡§¾ÃôtÏ?ófÿä÷ëV»ó!?ÿÅè8êËÍíÌ·ïü9ãè1Yÿù[·þY¿ï+|W]tÎÞ‹ rÂ�Îý±Sæútõ±~®ëæL#ÿkjÃvÇï3è/?;aÃuq9{…ñ½Â‡ªNÿ³efî^9ƒîO!{Âu§ð±S¦ ö?Øébrö8_?ëûw?ƒðñÆ×\v—ÉÙ>íTÝíMfÜ—ñŸº]ˆ�4v\u‘aöŸ>Œ™ÊîÅÍ"§&T3>·f°ý5zî{ìê¾¾èB¬”ñ*̨ܹ렮d¾ü˜®ï:NΖ¾}ß~é:B,Ãc³ÌT±Õó·»ì¹ñ�ªJ™?|�°_ã;íoç…°yFçX†Ç�L“É"†�­°X
VR%VŠX†G¦'XI•X©9:tÿ£ƒÙ‹­dêö;ä|÷
5K×'kŒÓ>YbðÈûd‰‘`°Ž×ö!ÉL£$™BŠà(Qxt^Ÿ,±U)Óh–ÁLJYféYfî›ÁÕ,¾nÚ¦jA¢ŠyàZQ¸ÇW^�Á`lƒ9�{i]]@Å"U<ÒÄ�l
¢T†gÛ0˜ËÁ•¹�u œÝ,»gÛ€(šÄ�Rb°ÕN )³ÓIàt6�‹hb4à"xËÁ`Éép,L-[&ƒáÀœRr8N ƒijJ4&„ƒm4šNG%°É‚@Kˆ†+´!Ð�Y‡ ö"a—ˆëðxØÅÈH1'4`R%°`À !ªÂbP�2©Ï…‡‡H„À5xø#f–ÑPÚ@¤8š×~@"–;¸vÛ\¥Œ‘VážMG¡5Ò-”iØ`°„
÷lÜȦ�¡A"A-Žº‰�ƒ§…qt¢d•ÍL¸g“a`�$÷`:$72RÇ ØÁÅzÈ�‡õ( éFÁ5íÎå2™¯ƒ‹�”kd£âÁºÐl¸„x ½Wǃ]l*̓ÅÈ ËBDAŲá%ëB)�¤D‰ïÇ�ÈDK,�Ò€•E>L¤>Ìù\”ì�Bg$“a3à
ø)˜h‰Á|å;( D" Ü„@%"ŒqϦQ( XEÜ³É øðlRÄ=›´Ð°q�AAG.8Œh"£¡ÚâÙ›êö;ûçM^÷þeñ=t‡Ë Õ%ì¬>ÔÝø\Œœ°›Ìø.>u~aëóÌíè`ìL=c\v}]ü—õrfä÷ίÏ×áÂÖV÷þÅ—úÿžE~1¦»\çŽÞùâ[~Žýa¥Œa÷{û¯á;^‡ ¹Ûñz©z· ô¢jüØî±ÝöËÞ‹›0f~ü¸Ïuctwì/S…ÿ÷ÛÏø¡»}[É>öGV�¼Ïù묡¿æÈ·]|b'ökBøÜß»]Ï¢«v>ì}îÓ3¸�ùž{ðác_WM�¾|/òǨ¿©Ðß½þÌùÁ|Ñ_„î¢w¦ÙýüÛ��²ø®úq;ÝëvuË�Eo_MæÈít?[vÒ�1vºcíÿÈÉð½|wž�E‡®Ÿ¬OÝ;|X)óMèN³Ÿùñs/:VÊúé;Œ1aÄ@™æLîß�{gÍcÌèñ­SöÌ_û¦óÛ×½áºËöÌzº†�1;äTèþï`{Ç„êbìÌÓóutîžÅŽß­Î×3�úüÚðß:ø<ƒûôéw¿¿[÷ ²f¿çÛÝ¿c¥fØýÐãËç:òŽ�Ÿ»‹ý²Í„êûüà{Ùzò²Â…/Ý¿g»[ýa뻆où½êKŸgì®/_|¨íb|™·¾²~¶§Óçñ¹ÖÏ8û=¸.ݳ]/>çûØJößsçòº{ì™ÆçÈžÿ/]óc¡Œáã£ö3»ë�u²suŽª¿ìœ··ó#ô¸O]á¿S_en— ù¥fT× Û÷³Ý¥C_‡ªïºæu¨®Q×ó½aû?]Î÷rÆe÷Q?úƒ™±6oüø>t Ÿó55òFw“Ýç.VŠü 5ÂßÅ×ÅV¼ûÛ3WA=ùõã˜û.6l}Ÿ?ïäÈìÝùP7›ŸK�úš·[ûc¾ß¨p£‹1.Ìç>ù[ywyù=ösŸ ß?7ÛŽûΟqÝ+|ÏŸƒÞOÓ5r6ìÖÿ]êf0;›#äN§›½—ãB·ºÙ{¡{}a¿˜*³'„ÿÒÕEõ‡ËÉÏuÝÛíÎ^}žÞ/êK—êð7òó|‡œÑãzöëÕýáòƒדW�7“ù5ṡ0Fí]ŽïÙ7ëTŽúþTÝcøÎþótë›y|Ýèâ>˜»Ó¥.\ÇÍ1]læÕŒýúßkógºí¨ ß=Æly³}ð]ßús‡«ŸÚ®yÿuŒ›1¡s¿|¬ðA†¯ý1»¾ç—ÝÛÍÔ}ým¿cðWn³ÛÝ &ôô�~Gýÿ¥¿;„0;Á@™ÛŸq—vT~ß�°_§²ç{ñ׆ýÚ
�™æ~ôüÈŸ÷1TØÐÝûf ;úkþ2+„nßfqÕÝÓØ1õíî{Ö|²êËÏŒ›
�¿ýýØ÷Å�ÌQ5êGæ÷îÛ�ì¦'L÷©í ¶ƒíðµò{tÛ›íöƒÐ_Çì!Ôçž¹ÿîñfÑûßÂ3rÔÇûÒ]òf0u“óªÂ·o]ïfîü^?3|÷Þƒ1ÔíÈðÁu0æb wïÝ­æ¶w¯ÓÔÍXóÿ!'g»Wø`lU×±3ÿ³¡§[vׇ0ÙÁì}õûevGýïÏlǪ›=…oÿÅ…¡·rúó|ªªª>ì·._W;¡»^mNŽý�ןKÖÍ`|�êü¹¾…®ïzÝ“·aÇt/j¦q~/ÇNî|îªoªGØý¿ÑÁ¨Y{B¸ù©ú¾G—¹„þºØúò{½üù�C‡ü”›™]|͘BøŒêÖu3M÷ïwýšÅgO~è �¾fOucòst÷Z7ƒú¬:gܧڙ²¾å|®6ìv¨¬²ê÷¿Çðõãÿý~Þ{¡r6»³û§™êCW7“ß껃O³·ÏÏþøµë~ÕÞ×·#Ôuüš}®CÎeU÷ªíou³Ÿ{¯/Æþt^‚¼Âöç®UÝßs;a:…š½Ì·« ãÆÌŽŸÑùkŒìιÙ{Byntùì̽ì65ó¥*³B÷ž¾vžºYo„O9=º}ª·ºgûÞÛ/ÿ]tÍ8Fæè›þܪf>ÞÈ¿[Ÿ2»WÝÈÏfáÛ÷p5v2Œñ¹öSè~u1Po羨›ùÛ‡]»fQ—ßsÛúp[yÛ½kßC…Ñ{Ý¥kÂVßäg·O³uØß7|÷\wôÞ_Ù7:}›yæGgUN÷x¿ßÅÇ0º§CèÖ¡¦ÆïÞL÷zìo_B˜›žéžæ.k³G…ý«7;ÞÏ ÿ¹È›yÜýuɹ™;ämMuw×í #Ǩ©±ÓÁÞöŒÉÑ5çfO_³óckCe_Cèž;>Žªê¯ò«ÛÎÅ@ðù{�þÜë·í/ùõíê¯ÇÌvë¹YÃ}þÞC×çÔ7û·ªÊ¯[ãoo6;Ø›ikd†é›½èo#Ì×/û×�Y5Ó�¾Ül!ïóõ¨›±Ç„ú8nÿ*TÞ_ǼÙë‘ýùÝ>Îe]GýeÏ×íŸ{œŸ�á{ Ó½Þ¬áCèúŸ›±Âæ—03®cßL3~6÷?¨1ò:è›=ÎÓå».?ÿ·Ù¾æ¿*tvþr!Ìæ×ñcºèÐýõë‡ÛùüÔ©çf
u=7“ásþ6{3_õÕ}çf¯}ŸF×o3�Ï×qçb+™z»÷?}uõøð­‹[Úo㋬ØJÆ/²kì×�öfÏ á¦z„¼º†
Ó÷×uT÷ß3²ëÜÍ”ÙÙa|Uø ûiºÖ}�ûêêxW›™·Ý)¯öf*Ôvîû09¶6|ê¾—{ÿß«{¼Bïtæn·»ÐaÃ�1ßÁÜ}WÕc:;n}]ù î>ø"·;uÝçï¦ê3«~ôtPuõ5LMשûßó3Æ]?>u—©ëÙþÿî>uῪ3„¿¯ßœÆo†0.ë6¿M…é¶ua.{³ë²rdŽí°Ý?Ý}˜P|]†Û�5£s¨ºÂ·ùòE•¡¦ºó¨þ˛ΫÑ}Ô]}øï2êb'~›þúãõ\vïéîz|ÍÞïŒßcwܺºÑãsʺÐ!C~Ë/Ý®.ó»:C~®U—×?ÕeÌÍb;뾿2kF÷b\ïç1ù}ûcÂåu0ucCŽ«©®W7vîƒ
·Óeë~ffë?mÔf}ý™ïïÕÝi®¶7|Ý×í暑¼cûƒË0]û2kl¸ºüùÑ㲃¾/~†¯3ºô}ÿbägßwÜÛû¢ö?×¼ü‘cú¿}®w·a»Ö}ìúX›Õmnnó{wõq«ºkìö~ÊíàÓ…ïw3#ÌÖ}™î꺿¿ÉªÑ¹ë6«º;t÷® á»|º�ýÅ�©1:~ºË±wy]|ºüû¹Ý{Ý“?fæçÑi2Çì_·ÝÙFÍNõÁ÷þøÙÛÌ�ìts³Î©íQã:ç~ÙÂNýñ»dæ×É®.;+e
ÿáwêËt¾ì
›ÛìÍǯúŸÐýëì•·ÛÏÍÞfÂæ†Ûëø;s¸žü<>uýr3öÞ0„Α_{®öëF]èvÖ0»ÛEÎÍàÿBNagqw¹}UßùærF¸»Q�]j.vZ�̬û�Ge}O»ÿ©z»ƒ/v¿zÃÏ!|½S]¡ÇÏÖt½£Ã|éüE¨ýù±£ã×Ô¸Û1ª¦Ó�š1w7ÇNïv°•·�ýy?—ÿÅ+¯¾>LÇÙÙ‹Ýñ­Bu÷ýiÂl
ÝõFͶës…®ê äì}Œ¿Y„ïmÂ}Ê¿×ck„.rƧ™.>gÿÏãkí.vÔŽÿº_¦‹5ëþï‡nŸ³—íoÂ}—Õ—Ualت¶ëèQÝÁÇÙ'ǘùP�GæýUØÏ¡&gt›�_Y_vóÃçØ¯ŸE×l�ùZcÇTVfUw«¹?ޱ9n¦Ëç�úsÝO÷îÇS3n;ÃØšû˜w?Æ—ï>s±“¾Þçœÿø©sª/ä~P_„»¯ËŽaÔÌ!Ü|ß0#»×Ì7ÛíÇÝÝ7òÿÛl†ÏîòEÍ>ƧÎï=Ì×Ñõóãs°#„ïíÏéùz›#ÇÕY!„îñÅØ‘ŸS޼©Q_|ß.—³g¨ÿ¦ºÏ¨\†Ê™B‡12Œ ëcØ­ëþ`ºÆŽ©O�/ÿjÜèúÊ®“³uý¨Ý›ê´£fQ7ÿE‡q³3ÂçN÷5Ûø¢Ã˜
áÂÇ _m×÷þé8Æg^È7ú¾Ý†NóÅŽãºÈÝwŸBåì!„ÿ|ÿ©sÏÍö=ÜèòCÇËÙò{|¾ Ó©:¯þ;¿_—�qaÜ¡¯¾çß§î=gʬ�7¹ÓÅÏÍÚŸ/|½íêr_ÂþçÉìüj÷ã„®é<rÖ1n\†žÑýËÍþårš ¨ô‘t¡X”1ŽcJA†fж ã (‘ æâñ¶Æ]D(F<B(,‰òX0$9¢0Š£¤œbÌ¡³
%ÞØ½Rzµ�"0c�‹5&zÝéÖ¶z£ ï¹xpª¹·ôh‡SËs¦Â¶öÒd,ŸY ÷ø‹�c¦h*T©M¨¿W =‰Êúµó©ù1+rH…<{ûWY
U�H”Ã[ó©��, oÔY?Œ^Ôå¦ÑÜãI
Î%ñcsl¸ikâ›’–³w®'ˆó¥­wt óR(°¶�‡%>ŠVÀ[ë/K+ 娔Ž9£ª›Ä8i¾þÀwê1#07OOâvA}~`_÷ú s ËY\Ûˆ›eF#šøî"¼yµ6àŸÆ~û¸R³‘C¢aCüqÔ©Á£…¿ì2ñl·Ch†Ÿ`_7-
Ÿº¤Ó±Mk�ÔYt «ú/|±a¤XõÝ_È\áçwŽò!v‚>ãÅ_éˆ8@Íä úˆÒ']µúCøomã0æo(MÁžú�´á×4ÔpûQõܨ�ÛP-Ö¢}¶ YñæÂΩTpP�<:å•zÑ¡ `•Û±k
ß¶9N*ª(ÏžRuöNh[ÕCÎ^T!´|�vÅ7»ãçÐ&<öå?—|“’(ëÆÆQ;Ј#bOع+Ç1:e|t–`´™Ò°T-‹¸ÿ|@ €Jc!'ßt4½.Á2–†E©°X5!9áàó™\ `8IZþÒRâ_ÒrF¿xóˆuGMÊ+0(waÛÐÅ[7\ÔbA =[¤Nþ+I�‘ÿ¨ˆ¡h‹³ëð9—#˜O­›ü®à½A-FK4vP£ÃúÀ²¯É‘’to±¯–7@ò¶
PÍOŠùç¦Fê=�õÈÓÊBãÙ‘½E—€½~™usˆ¹¬ÿ*‡
A‘‰–Ž÷Ó.̲ÁŽsqõ/�tÏ…ùè–� ‚ƒJDiÜ@V´î2¬.õÝz©yý"pìÈëHD¥Ö³µk±(ÔÛiב nT}ÄUR¬‘ïVܲUð=¹9¦/vg§«Ð­FîEÆëºì­¼À«@u–Œ�špc1û¦�³R;‹ÔW*àÍõŽÔ}8®‰æqe°ñí"ϘΎyÃ'b5 `»Å)t[š\ëö"¦õj$3o«ñ€�r®!ïE‹žRJÓæ! š·½Fó¯wzsI•&&*4+¥½4t.æ8}QKý­@H} a!¥9LµlsJ}8©¨ƶœJl U É5~)éÓežÁ,U¢˜ïÇå¥m£«¹ ÉÞ¤Q¢à8•e™LÅk•¯qÂüÀLá,m Šía_­ôÌ ëÝê�ÖqLÝ@ bb™¦—º–ßD…–M}íéÕ’ÚnôÏøãæˆ§jnvm"ÙúŒ¸,%La¢äD?iÑ<Óê«Ád çü„Bö˜krœhþØžô“£a_(÷
>¹ô†Ô$Ú
ò”^Ikë10õª$/Ôç]»³Šž;ï”h(gqgÄ#ÐXoóa ^•h2}ç?kS4ò|Û´òÕ$„9g«eì+¿BŽLªÛ'ž´äVˆ°|~ Œ@�æ°¼µðK¢£¦ NV–´èþëôpØ®$-‰­í¦€5òsÍyèxÿªØUB-2í¡kh‘sö+-ó  œME‡é¤SJ&ÞeÖ6•@Ñ|¥î^Á²‹_¡/÷J$ð
Ù�Rpóêp¢7íÑc=Cª5»Ð˜íU[.RaÒS¡ó–'…•ADQç/i#²qU@`œ»)q^_%”Q`ôNŠ•vMàòø*j¬!“ÝÌúJ„YSõ‚ÂSöñÝq¿ÚÄEÉ_A:g9(P¤WG;¿úžšš¯Þ3›¹¸N° Ûîƒ%² /Q, ®K¤I0úÈš¶$‚Ô€…caý8-pæLÙ®EÏ€âäWÇσ.š”ì:o,ÂyׯšàCOpÙ¾óÃËÄpú)1üĤت ´µ^z^ù Rt]¼Š­‚Ñ¥¶½õCÖñœÉv´9õ¿aö”ÅEçKξºé~ÓÌÝŒO,”Ÿ¸‰P•/@f�%B{´y�ºcŒŠÐ"LÇÓߤ
J¢4iT!�ź\âã sqëÛYÎ{ò–ÛˆÐêØ(dú`Ÿé�¯Î¨TèÁK¡à]tð� ³­ÒéÆ×85H¥¥ßA&&ºXû÷fU¶¼©žXC«[OË=8Î6̧`4é“|æ<õ®N+Užh§©H�A|®Ÿ™„9?xZ« d{y=ŽŸ>ü|›½bUYQù\«)å*s’ Å>ý·Sâk(ô?¢ˆlš°²=+K†ls&Ñb’iÕ_k•ùÄâTlþ'IÈt2\OûÏ´O-u&'èTµÄ¨O3Y‡HU÷1BwtÈIZÆîøœâ«¸û¨ªàÔ¾MUôˆ.U“òÓåë�q¹}Ÿêı·QHΨNسl±?±…_tiŽsxi|húR}‹i¸F7
9=”n{ÉRͬ.]‹™ÔKU¹¼…7b<Äù„Æ$UPFäøRâQ•ƒ’Ÿ75ô˜T¸Ó£þ’@ÓF5£絨—[,'0ν³¨W,»Úco z8 ¿’&nW”µy§Œ_Që*º’Iþa)Vå›|ûLÈ.—]tLÔ—Ð,ˆ§?¢ê¨É(a�#Q¹5“‘l¨}ÉŽ ŽéÚ¹Iø[ãf¹Q}Étüdä˜L�Ëáñ”È¿Úm-e}%�Q2æ€û¾u˜s,Ò³�Ã\¼“Q…g Λ�ZëöR¡«íÉn5;uÚèüúiÈZ=Xhlj2–::“2°�ÖŽÖߢљt+ó)Vï‹GúóÂz ±ƒßâ-£[­öÅRGލó.ǧ¯IÈEáIÜјÿ�Ÿ·â ¯aÞ\9yã^Ø*4$½)ñÜb@‡t¦ WÁî3&|;ýõþñ²|ÁÚ�͆
½O,Å{’v[Qüs®4Ûeâcžú2xœóÕk'Ä3xý¿´¡Å†÷%Ô­ Pé
¡®\€vt5µœž&lÕ`•xem>€é𩲿Ï
0É}ý¸E)¯OP•¢U%ýˆÕ/ ÍG5}¿·äÆçx DÑç´)@±É·$Ë}8€¢QV5ž¦X@_Ü¥?°*†">™8´3*¥8‰åmåÇn@•�\61–ù�~V·S$„e°›ß¶_òʹHo9‡ae Ò ¤óÆ2ª´ƒ®/{2ê�xúoǦƒÉ:ÅÂÝ÷í°á4ï qÁ æ)VЂ€K2üÅœtm’�0ü1ù,˜èË#ew:x¡D1ঀ"ÎB�õ›°7%Ü÷1¤Ýu6ˆdšð[—@É…ðwƒºsÁ+Žg±oßKù~âsVaÄ‹Ayû€gS«s€§D#Ì/¹EQµT©Ö¹'‹ò;¢–ä.Cò¶ú–òozÔ†Ní«òÊꃢŸ›+ú@LF=TÃËo:f]æTÇò¯õ~LZ@L¨g(š]ßý
ŠŒª¹¢˜ÞËæ<„K[èJ–®èaT·ÛKpÓ)æ† I^e)¼d˜t=h½¢ºšAÝn*Á~àzÊîA6ì[ÎÇ.bØ3%%Lè?‰Dî´cþ¨çma %+’¶`.Ï
¯Ôáµ¹Ýbj].‘XZ¼‡�L]%œúŒ"ýïðô$ „b¥Níú�Ûn>¿vVÎk:»MÅÞÔr 8þ‡: S$ÄùZORBJF£µ0à!sÜKiÝ´œT!Ç"Œ|dȹÄu÷Ð1ˆåSýdãÚ§=‹æS™E±ÛPu*·£ZÂýÐSˆéÏì4¬¤4uóíî.¨ºc½ÊÕþLv B¼Ônñò4ޤº;&ó*>C»œª�‡vÞÅš:-èkÂz6è—‘"šÂˆ@«S äh ‰®@6¹X!PÐ2@à�, bZv?Ø Åô>H‚Fò¦÷1×Ó»c‚ϰEULÑݵÙÉ}Q8Ýg·+ðÜsL‰‹z\Ú²,ÂFY:…S)¦ìë:Ø2 yÅDý1I'_²èÜw ‰£˜Pz
Ðöþß$É2Š¿ÒO,Q
*DÆ‹IÛéÓ«NÖâDêÃE åu�û©&á¨<x˜%l*ϬðÜ�V‡ë_wÃÊ Ñ¸8œª�Ÿ”Èf‹—*«Ÿ)H¤âɤÚMl3¡d)cŒèÃP»˜ó3KxVÓýîÇ…GþaÛCÃŽuôƒ§à{m¡‹:ÒØ�¦#taiúô^áo‚þc[Ú ±´gNÇh�²Âòܧ
ݹ8ði,Z,#�˜¨1EŠf´ËÛþšÌ;„<& L0ˆ§˜XÎŽž–“œ`SÁ4Üã
Ù!¢¨[Òˆcàæ«ýD_ÈXP†¼Ø#yªÈlPèPæÿÏ8OB¨Z=|êdÁ¡ 0‡Ü*þ&€7ãñ‚·œQ5Oñn�‚·Å ¿úý ¸ó€Ð\fåy�¾ÊÔd*žUðG²¿\lJïŒÅÖ`¾lK„0­¶—ÔH0ðúG8âmù½1¬ûHH‰Ðª¢ôcåýÜRü¥ÂO{6Ôt,ü+³ xÊ7U ��üeØÞ{Æaã )üÑ\”¿ìÙ�&uR+žq1¾ÊÀ× "w¶¼‡€`5WûÜ)SþN‡–lŒÃçD-ðÈÞÿ3Ò@n;öÜØÛN„ ˜Eš¹Ú-z‰a–[b”£³JcYC؈ô}MÇ·÷¬°ŸÒ©wDô�Mí“®d{«‰ †cBv B¾ÐJ«N2 MRN bMHµâ$Ÿ.Â…ˆÀ±¦4Ã<1d+ž+_h£ìL­Š¸‹hi[d䟠«—²,<Ç€X¶l{nD2ìfíˆñLZì´+*Vj¯à §zØ�ÜáR‰ê¹6SªVa:f±§WBß×GGÉ´ÜR“7Ÿ&Ç£ú£¶Ì~‚ qHÿÒ
¾c¤üŸ—U8Þ¶“·Gðr|œ¶‘x}©`ò[W3ÊbÖª̅Øv'U<iîøÅx4-³U” …UϬèÔ¹ Sd}^Î{I,%߲ᙊðf7løÉV^Ž|ç/H·ÏÍØÙzÄTÓëóùØb»^Åxu’<‰D×`c= T£Î .ÉÂIÛÄ4}�õU3-¸•ü`‘Põ Â!v¢ŒÕ�¹mIX•MñZÏž6ÛŽöt#DLv÷
�:…úêg¬øë4c¨.ôb¨î¥CXÂ…sôBjPcM,<  cKõ¯ïjÉ•4#kº§Ä� ¶®û´x]q¯Úø¥‰Ó™Þi ÎuÇèAÊd[áHžÞÁñÑÕù 0Rª?Øþ2óÕß÷µt ‡7_ìèõC±=š�,Ì� X㜘‰ÑtQ  €ÿqU+îÿŒ)#h`H¢5Ÿ m�ðjà¿Ý�TÛFú£ô
Ûb´ãpÌî#‘š¿+ÂÕ;»ÐïœÏZŒî“Üow­b)]ÂRkÇ=‰À�ï$åþ³X]’´:À8BÝT£x[R·A¥ë‘ÞÂ[ØCxå2[ÝBk1#_1·mE˜`vƒ0EûêÔô<EȰ:IÃÞè­ÌOOB¦Úe¶©¿âî˜J¨
¦ÚÂÕÕ†•L‡Â2::®;¢{$±€õç#™—Ò´½;Ü×—Ðèç¤J}%þe4…b0©|h�C­"¾ïñëÖì åý1ž¹V&SDJè 6Î86Ú´ƒaEà\ÈÏÁ®Ê3Õ,t…ï©ìòðýSîcY[J^dçs‡T—Ó¹ @›LOò•Z¶r+½ÍøxÇ¢s¦2Ÿ6¹õ ‘õÇêê~H˜Àv¦•~¼ÃÃC ,sî5–Ï^�rRá��éDîÏX탘‹é¯â™JE¦\îp •CR2/ó å*áªcò$TnàH<´2M§2Ä�öŽÔ…ÄAdÀ‚:`ä‘]s
G»U„ONCÓÖŒˆ=W¥/6þGnÅɈEœÁGÒI”|)ŒØyä`ÝHj7·Û?Â_c…gÁÂ�ˆºËn)¢mLä&,<.¼H±Æ¿ó'÷DÊ7 ÿY`匄%Þ5õŠqºq÷11#\™‹wÙ_¨Ò_£”a£0ã×ð7pS–B<K ÉÀ�À¬˜´7.Ñ<øN}”$KÏ®ÚvpK¶��ªàç‚Q”y„Gƒ!E°Œ©.% ^†1OŸ�Æ âHDsÈÄÄv‚SÚKÊŒX¶$,¸¸¾˜D@k†¨¨ð¤„:Ã9Ú+Ök…Ä&«W£rNMµsÔKâ{”®n"ø[K[KجNB´a•qRˆn¶{Ó<Í¿ûƒÆPMˆ{¬´-kñ£ÔP(S 3¢Ytn|/JUy¦Òµ~„Ü…SKLG ¢@¤ Ⱦoý:”rUZ˜Jgøc/Ä.«¹ÒÙht�Œ……Z1"ÃK¡/õTj‚YWRãV}IpqÉ‹.^ƒ‡Ö©Ç|«9Õ�Ë÷hËÏ ãñÍ\ÿZxpO³4Y«²àg/¬tYKð’Çx¢Ue±�ø\Òrÿë* ¯ÇíCêÏrz中߃ËûýŸR-¥È�¤{b&dî4_®éó�ÚkZ¾«`5w„”YUÊY„‚ ·'·ìµä`Võ |ú³bmhÜrÚÄÍ’™ÿ(Á$ݪ�ù"+ÎeÚ§_¬z'®Ó¥ÔƳ:]Ç)Œñó�å–“s.e»Á[š*¿1ò:°Ï¾žªï†øsÙÃYFª# H<ºÃƽ¥ÔbáÍÛýùËük”°ß?�/?ñ§ØT¯€È48»T€»£$�Q¹ÓHÝT,\ÇÏøîFåÎ=š„É3í`ðÏ0Rz M—VÈýI_,Vëi9|Im‚#´�˜|IņôOó {À­~òV¨#–Úœ‰)¯ªs"œ{™òÒ–(–7°Ò‹ãû/�»8ß²ÈÄEÚ+K6ŒQ¬pü€YGq#<—")šíAšÊü0è!]A–i°òäZ;Sù„q•éoa›\ûÈL¦Ž· n÷O€¦2%÷döW}@æ*ûƒEfضä*‘b9V1è*¼€+4±_�P×o¥ýiz1�¤“>ÇÊxöÙ¹œ¦îÆê†sð¹¶Ï¥èLt=�äûè'‡
O¡ ¹�M�à‡ô|;”WÑ’ìmÿSq'û­%>v/\[ÿ a¢ÿþ·Ù�‰â´ûÃB{ZK½s1‰÷VÍñ•ÅÇ’[š½9 »Ó—ÚE)ÂòDwø¼J9¢{<‘¼-’íHZ?™¨Ëà篢(»²’cèÐ ‡ý×ll;öË”�1±®Aßø Ë}Ñò»ºýa³Yòãr›Ä$ ÛÅC^_zu÷t” ~‰…#µúþÜru·}Î}×ÿù›ЭÅGàæîM=¿9˜nÛ)Þ[á{´ß˜$¤ò“1vÿO·È"'²"ÀUU6K™–¶ mòL¦j ’¨ý †áïž÷àýȪc€‘+Ôö=Áà$7è¿Ñ [ôb刼J@…zOÖtÖÉöo“m÷qR½lb9ÿø=�­Uη¡@„‹ã�‹#æÛ‹Ÿtg\ )Ú 'P†.§yDu»éˆ©áÀ_âÒ¶îž!ð•”UH?£Æ.¢]ï²ç‚�ñ½?»?«'q²�=çG,jV“ 9Ûwà¾XWxD³å/¶t!²¯aè>ê=ÌÚŽ'šbùãaUí¿�—ÎÌ­‹Æ1úÕó &;
Li›‰ØN![á© `:Å_íð˜�-­n2Ø“iC¯•ß\”7¡­¥#“IÇÜ"SßõPd ñ6^¾LÙE†f½ßGŽ�×EEÙ>;«[½#×—a!ÿq>æ¸4¯Rúµ*Ñrú&V’ÐÔ‚yÃDÄ!8Æ@Ë.yH4·uÃ
JÃr,ºÿÚ 6Ƈ5N„£¹ðWM‰½;j·L_© g+êTŠ»‰5Î1�pHƒÅ÷eú¯þ(»^û=m÷³þÈ«‡ŒÕF‚ŒÌ‰Y¹‡™ÊÞ ƒ}™æuZ­U˜÷¢‡!Åa†“ÎSÑsHåBïpË.î*⸠)ìù¢¢ôNS®¸qžçãùkDêØàúðߤ22NÏÓ{þkt×;Ÿ•ÔÉî‹®(ö~a'¸è�XÁ0wVFZ¸·èTåµQ7ØAZf¬WŽ Ü—ã·Ø£<f Bú`¹3˺8ì’%Æì MGÀù…ãZ•öoZãe;~ýQŠuHdҊјÅÕk„Î"nô̱æ¾É¹@ï1ªÍ1Áð$ÇÆŠj®î,3‹ïµÑ$ñèEŠÁÿ/•,�çßú®£“ÿígñè‹e›ÌPßïÙ4hÏøònþMzT.|?¼™L¾·§,Ø6íå®Ç%èïÑ»\’Sâ×YÛí©é›ÊŠB!S�µcƒr1 cæ]ÄY™û­ª‰YÅ“sŸn*>â)ìçS¥wb*9#5Ö �ç tß�âÉ7Ø$²*€,ðiõQ<9Ń
ß&¼©FÍý×¼AÃÝÜ5ìÏ:‘³o‚n�âÉûè÷‰›£-¾µ5ÚIp?T¸bØ$ayà'§�»ýãëa“±[·–&n`±~¥š#áÄ¢û-õ€}Tê18<n�µ:å´+ióÇ m ù&ÛG4×4”HÛ{ÅWžGŠ>s
Å5¼ž‹p›¨tv‹±§HÆ:Âp0ü%ŒßÇQùáL:{¡f´õö°š:òÕ²uSKAgñ8ÀQG˽õ Y.‡Uëê
”ò£52ÐXK#�¢oŸ¯ž�¬ç+¬›É†8d°¶^àÀ¼RÁû2iç1|�<tÑ¡¤”ʤV¶p9”MSÏ5Š€°Ñ z{¯|Ú9‹÷œD._LÒìv±z‰,ncÉ¥›Æà4\“H §[H$p.‡Q {¿b<ç"…2â>(Vĩ¬óñð‹¦üÒË&Ÿ•;hžQ£¬]ÄùR¼ ©>-.…¹j·ÿÞv:ÇÐLÊ�§nšÇÿ<ýóOQC(áEñ~çlpY9…Áà_ó÷�u 7ž¶.ÐÀéiDÂꕨÉëMuüÔA£+ÖOH�Ë·’ÇÓÆÌSSµ„D¯�ãáñTT¨ÆŸGk<Åæ;ë�g] ×0¬ÞxR[B*j«ßõ&kÛm©û?©g#ÜnŸ0«Yf®úòŒÝ¼·œ¹ß…ÿ¡¨éøE–ÿî�ÝzþùqY@*"ÛÝ4��Qï< ÛëI`"ƒÛNJ5¾´Ç(Üô-Ž3§²—K²€ø²µ•å'u-cv=É™'~ºÊ«O;ï ì¼_ʯbRÝn2 êVå0ÅÿÇK´û�!\«Nì"ÁÜelæ¸ÙòàvV@ÌÞEPñWæH˜É/Y„ƒCóˆœrÔ:P¦M'ýrSZvÓƒ†$O2/Mð&ˆ¿â.ye† Ýhíd7QËS¼/rÙ�1Ñ1骧-I]Q?Ò?t%tpK%�OÞ&P^/k98íZ…(é¦&ÛÕ/�A4þcY+ùíÛ¯€×'•5е£°’ã|�[ÃÈÚJq eÈ܉ªŽƒKàÒ�'±+ñàsÍ(yd�ÁŒ¦×ºÛS¦öÇø™÷Év–¥‰nǬ`Í0ÿ¢$dVê׽»©ôgx¨¨Ûì z‡ `²NÕ`ÞÈq’§Y`�î²êi�çÍÓºRh~+¹²îý5*ÔÄj�e؃,~»®+˜`ÏL‹7)3ŠËÙ©ÔZ<>)tÞ-¯ò¨r(%•º•Hž˜ynXW«@… )樿Z¢m�ʸ9›K¥�¨þ8I¬ýþB�x R \ì=¸aÀy–¤å2eö:(óËûnß$sUBû£‚zÈzžü­§
h6õÞàh‰I«$´þºšd9í!5p-*ëÏÊ ÉChòò2‹KIì@ q9{ÛÌ¿Ä2n”̺@ÑÆ~4ÔAe�ñæöüÒ§¯ ÌÊÉ)Ú|àÒT#ã''©U×äžRNZ^o„üܧªÆ þ¤ºÚ ›,oº‹áÔ�£ÇÑQI¦m3j›ŽÆWç˰LOÿûeùHP¤(ì¢Æ1þ…HâY_æ¦Æãï‰mXc!|/ªèÁ¿þ BdQ 6£ ÿ*´8Nÿ{+öpjn*ÎStø·†È½éЊø7°¨”[Mõ/2¶L¼Á¿…–‚[ϲwùšðÍMÓ•Mµx[÷Þ¿Ñ¿L&ƒ ÿêõóälý;ìf¬(@п9 .Jå”q$ü[ÞÂ*ÙÊ®ôïÌÊÈb�°þeÕòPzêÿëd„ÔÞ û­4Tóο@‚þÝÖøñ/á(íVGn:þmšgà>òÖï£Ò¿åS¶Æ¿:ˆ¨7ªÛ—ñsðï:r˜ë_ýÊXnÛ â–e¿ŒEâ_— ¶¿,šóSC“ä`j1ÁC`¥v[Žu ½JM-ž ª©œÍURJ#°d„m‰ ÍøÔ@~¸þ?ŽPu 3†FßÕOVjâcÂkæ›Â
òƒ+é™éÐ@ûi5õ„ÝzÔí¸ö)"Ê•üv©OP<*�°pîÚã~ Ê—ÔIÍ!CEk§„ŠJ÷ )÷Þ¦$•ù@`æ7v«º@�fÛ±/Í�ìå“»iî¥ôwß”¯Ò#yâä¬ÒˆM$âA1ËåíH¶FuÙ«ôYM¯?ç2ÿa³?*ëŸ-(kiæ•ãmV~àô¿ŸP�s`¯f¼KËrò £(òoŠeÍ;±\šðr!&_˜’7,;mqÍuŸv¤k \g[¿kÅÀ(#Ns]oª­Ê©ï™«‡ù¹Ò
ÑW´)¢•!?9e»A37Ö㤠"ÿC¥‚Hw‰Á²:ø^.�l…dð­·ÂBÖÿÖ™q‡–q®(¼¿B/JyŸÔ†ÑE AŒødùY½ºö6ˆË o¢L[VGŽ‹Ÿ§\å
ñ+z>Rn‰;øúXFºô0—Ú+R¯%¥Î!‡üZF%ÆoŸ–Ê Ô›­e4Й ,Ô ,1p°GßÔŠi Ý´”EÔÜt‘÷ ;…’µXó-Ô›ÉQÞë¹YÔë,ò§:ÕX°;R¯ÝdQªÞ0…¥ðòÒÔP¬4ÚÁ�'ÄÞJLà*Òq{Yz�jŽY¹ŽýŸãôjÌãfWµÑâÕU0B_Ý´,0> cñŒÿ€d´0É‹¾�^³�7¢…Jš”Á5N'ÁyÑÿ¡¬¿?bÎG©fòiuŒ΃PZƒ‡P=)�b’Ú·Èê'y#Þ úXìò`cƒx—á9“{e9‰÷‚¬ã,/QPñê×ß)fa5Üè§xk�“‡L1„8;‹|Üb�F(^Âÿ'_QÇm3f~б¦ÄPnÎ3šcÀ;߈}£X“f¯ghÀ3$ªåÈ/m*ïqŒèVxKq�1#ŽŽZç�”Žú$Hˆ«� øJÜÓà¼2É:<ì So}X²©£üÙ½ùeâpƒwÉ-P'ó�G-Í+g¾™ÚÖm êþŽá­gøÅ 6ªû—p)Ëc&ãÞ½aÒ“r>D–7
«38—_Wo’ƒG®ê]1(<±€ŸŒÓW¯D|TʉðWz@ó®«·—¿ƒzDÕë##zzRŒ_õë&çB3ÇäùU/¹
n‚û�ŸÚÕ‹â
ßJhwp&«j©P©“S¶Rzå ·7W¯†Tý>|Õ ÔbÍ.»bW„¯^oóÿ*넉lǸÂK3Pœ €ª7!+âkµÃWòÉm íKÇ!<Ͱ™© në?tÚhŠ*”mzÅÌŽ¢'¡,M”K’ zG‘!ZÜ%j¿Fåí-‹“h5b$¥†Ž·üdBvJ¨úCÄx]Ü8†‹1ÞŒnl,»±8(3‡ÕGM4ü<È$ÙÜiÖ>á4è?Â
ÎMü&C¾¸´� �Ád'cqÆ>Œå²zý&Å8+ %¿üƒîœÙx{Q«ÿû…”ûÀÜ5–æ×Ê^M/½ÜzÆ(‚¨yÃÂÄ´[÷uû�k -Ô¾ßòîÛ¸º\‰Ñˆ H¤Ê`UŽ+gVœ¾|Ù�úÖÝ A”?½,ÌÅlf1ÔÑï ÞVþL½Ø*¿6TBZþW ûa³r³|'Y‡™*ãÁŒ?¹|'v—8Ø'˜Ä–žx~”AuG{¸Y†¡Iû›áçíO@ˆ� ú§ƒð|ù˜”{DŒ˜ "5=ÄÉ,úÝ=w¬�Hp5*1*E™«ñÃw7ÓA&úR-!óÙE(W[Õë¢FûAP—Ê(¦_¹Av.EˆŠpe"Wùr½}нa†Å»m\óî‚C%÷òqÁ¿»³àðŽâݹî«TPk;Ÿ--Ä»–¦±ù�äžÔww¶ÆxÒW5»xÓùîü»wPŽš�½²€öïnù-˜ó³Púâ]Ó—q4¶î¨fB÷ Þ� Š‡Ì¬½»“©]hBÙbÝ<ö®£ØÞ¥¥UÇô™ÝQ7¨øßƒnöfËhâXˆTN¼¨ =ð\Ü›é�O.¦”PòO€¾-à‡VŒW“Ψî=ëjÞùã>NÁÀ>ãfK]t÷g/û&å($Ħ—[9j‡YÉwŒ!Mç¿&3ý[ö“5édxâmòEàÊí rÖU¿4ø2#ÆšÊ+æ'ÉQ—Ï2—•51;¯d�É U;ƒ£C¦|¬jͰ%ŽgÔ¥´TÜÛJwKÀÖêˆW3w9*ˆj¼Õד> Öq CŒcŽnY�k¹ bÙ1fŸu/?Ôú Udõ^âÍõ»nWá"sˆ(|èÞ‘ÙÀ–Li,1&OÉå6ÒÎu6ú<µˆ™YîYøz¹ªþd3¢u-oö¬d/´gMëí‡Qßë—¶„·³à˜D´øþÂEº(_f�¤=JF”ÒšÄ�Ò”ãg9Ö\xÓ‚åЄ‹#u«VÈ÷)�úùb¿;ým×¢Ó+ˆÎûU‚zõ•GËMc=‰2PZ¦Rýa‡F½ö°;åGŸ:=ƒMéë%Øí-åË”Œ{¬�w<OR"Çn^ 5ž4²¤
ŠùuâDXá�aVòj Àæú¾Ÿ×%P‹¶Sÿâ ÀYXcë�^w`q³ˆg>†b¶âUD¶~ìE,¤lÿÓëÚÓÝ &[•J•_çxå™(ÐÍ9 Þºž¼l�—ƒÙ/z§íR…㼜¾I9Yë7¥¯H)˜ÄËcÓÿ©WE½?ê½†îˆ )Å=9�d&¶�¿L”¢ÛˆâÀÕ’Xg™¨¢+wuGާ"X�¨‘}(�î_($Œì¢‹Ä‰ݹâþÎä�]¾�9+–„.·î i3ã¢ëÆÝLÙønqtûÿe¤ÄZìïTP&9A¬Ö‘h¾³A8PJãÖúux->”ËŒ´d×ÈBŠ•“IÍhÿéC‹{$UãE@¼,ÁWLÍBÂû\ËZ£(�"·WÄt�â°û×�-pcyE– Æû|a!l›•Po�fï`­,¾GO¾|LÄ÷¹(Nyç�lâmž¥ R›ÎK=DV‘$äºT ór:-çEÔ–ÕÇ2pÀÌa,Û·K°:Lyïø6Å!ê‚‘ÍôŠ2=“-ç’(¬°(öÍUÛ­*™7@ã’pêK5y6UõðÑ$ñÙføÓ0
©õHoÒMJ*�õ#€Š£kz•SÉ7ã�—ØH//°£Þ©ÔkÂTÝÈò¢Á·²‰µ²<m·Ÿ4q<b}ô6¶~¶šøçÔÜäè³X*™Ü‘<�<=#ò<‰há^OXwaZä_„r«d�"’àO"FzŽd—Õ–~Œ`G©Ö'Jqì®_âÌG¬€B›ôþ?&iò‘0mÛ÷ƒFx(|Æ0XãhÎ{a t€¤ÎùPùÊL7àçÂÓä 1Ý’Ñþ»äDs`ÇòÓ-?€]b¬tK+Ä_²5q‹Í0]ÍfÛ?î¸ÒmVBdº.Ï—ø>’,<LWNóÇ¥ÞnÉ¿Èt¯ëK}”éÊj“6AN]Ý�6ÌTêõý¢ÝŒs=&•‚´*Òsj¾2zy+P¹@Õ\Z¥PêÊH¸g«2ÊŽûÁî5'Úø�†P�‚·/­µ<ÝÉÇ…r® ¯v^Å/¬?Ní�¡12+#M¾áäƒoÂ}½2kQ·–8Év½å6>pBþØ„ºK�ÊX)_a¶Qül{í•6¹`V8áâáÒ‘ ƒ…ߟ¼òe –\®¡x‡�Ùøš°HÖ�›Ï½þŸIp¿+€Å¥Z¸Oð![7v�Ò–¢¡lI' RÓ5d87½z†ŸϘ^¸+MãìŸ'ÑfÁÆÙ!´_bv—ÌÿQ“Ìv�õêI�ÈÊ(z…�IT(Ï¥•Ý$ ïʶî æ»Èmjõ5¼Ksý)Ç,¥ÎÞÕ ÂùT® :ø´1iq´ä™ò¾Õj—íO‘ÅÆÌ‰d;eµÅçþÅ-
”5ð®æUF(h{AÁ¹;�­" •'ýðäÎÊE±Çn˜ÒO¡nØê^$¼J%ÄJŒ/£5ìÒ½}D xèâÆRÅÖñi^7Wœfÿûgm¡úÁv‹w™éþ&ðPs^µá/²]^õ»¤õÕQvú-…úw©1^$–ò"­PiàËÄ)凕£0ŽÅ-„w ¼EYÏ>ÐeÓ!~,l1šû(×e“Îqôý]qð°’ÊɼË~aõ{U"é¢gVÄ=YŠ©]Ò‡—ÎwA±R–M8yr½®Þ¤ÎÇI�k¨aN+CBlèkÆ®[�x,WŠ~˜s§&62á77{¡µv˜Ž�6[ ÃZ°¥x9Òc)®n}`øfºVL'Їx5Ú?]§’prÿ‰ï³!+£å�Ð7“l©«x0ÆÅÚñ 2ÿXÑ{Ó}Œõ.ÏhHŒÆ€ ¼€Ït~(KDº{ôz!ïÿõJÃóN+ãíÈÖ@9Í�R»¶]߇\dZ…õAfՎؼ딭ðQ4˜µcvY¦e·ÌáÆxY¹Ÿ‘ß¾ßmKS͸zº6aéH”ެe2ÝîÀ».r‡e2õý»g’$bÞüÏ.‘‰^câ² Ѳ’^SØZ`€G$�«½il}#2~±Àî]¿jFx•v�×+²I¡ù/ N™U«Öržì‚i ™¤ÍU¦ñ£\·Å~xxêÞÓý–1ãÝŠuê�g__Î…eæÀ¸t¨°³ã Ï÷Iœ’nAKï¿ÎÖ)(uôÁ tಹ®PŸkM©áâ$µã¶e·Û]@$ÔgZAg«B'±€…)‹V�Ú ÍöÃKYµD ØàÊk³ÿ•Q¸=RŽ–D„°@œ¡ÅÁ‰´‡Ï>âˆÜLãV³œ’²âÕ`#wB¾Ù Qáëã_S=Ëš{�¼×Ô\å vpcݞЀè5u�›ŒV@x�¦Wh¬7o=’:UÑ×N×wMP³rÓT' ©0ð0ßÞ†C.\èô­-†ðëØ.ESüíÖ�—ïÁÜç"Qô< º¨>J9÷úíT(ª4ÅPs±;Óxþ3Û�LîˆW?üÆbÄ«•q¯‡…ï´¼môslN�Â\buЛ.xñmE²} Õµ=¾5‹WS‡@[%ˆ8Ù"ÉÖ*9[Ô÷ºá#Ì¿Ôø8 ådðâÐæÖ ¶Ç`–Š%~‰F*PÕ.SlƒS÷[ö gJ§WºÞ¿«K&pVÉã=edyõS–Æ&(D1>) ¸Qø�)O$‘€Pa3˜Ó”ѳÑÊC+R"EÂ_V†VYvÑ"|å?Çü»r“al` –sUÕ�3‘w­e/4RqÃ&ö¸¨çBœùBIJ%9÷X0i3ÿçIN›õBòÆ«!íª£œ§Aøz½Æ<.¿Ý!UKÌVëVÓÌý67!XºjŠr�OÕéë ÉvßSÍ\|퇡¾j–ÿ¶¼¨®â'wßSÄþÃO†¾ÉIj`†·”aÏ)‚Æí/CoHƒ‰�wè‹‚!‰éÏJ I¥–¡côSbKÖ½ Cöh Rþx[<Ç-¼1ÃX@¡®2„5ž±â2xZ­îŒ|À%˜+f†Jt¢9Ú\‰/Ðo(2ïñ{RMîGu>ÑÁxÒ4jú°c©²˜º
Þðã§wŸ»ÔÒ|­8Öìö
˜:q<àëØ4ëý ™Ýx¬fÓ°÷`yÞßÚæú;  t6–õ êB÷eœ
€‘fÑ,"poå¡®‡™@�`…qìjõëf‘ŒŽA¯GåÓ*ݰ=©Uz€E§U`3FÌBR¦+ �ÝGN[µÑ� QTxï0 w䭌ɫݪ®Üû¡»Ý×ÃÚuµ´EmnRå? û�«ì{Dœ�¡9,–cÝšHѳw¦›Nóú»†ø“1�Ì"‘Z81e�#aDx ϪæØzÏmè…·¡2¼$Rtµ¶›—øŽò=3Oæýw &#‹yhiT®Vñ"]óñ_ʾ¾È#
ÂQkv~$¶”YAhýÀQËÈ¥k«-”ó·À¡ñ´ÜÚ»F¶]o䘀°—×Ò稂ªø¼�ضèjµô¼x_òüè-káFòB'=F[là­2”À6Úä]†L;œŸ\Ø£ÅKžC3¾ŸõºþßÃØ¼Pð{ ¿ñ%&ÏXQœÀ„ŽËeç|ŒÇ"÷|‚ö<t…J~Ù=„T$ìd0w‚ÒCœ²¼«ÙÞt1XËù¯™—¥¾§æÀ�ç¿ÀÙV-Ã’®J‹Ã^Ä =Ïʾ•j�˜È¨‘B¦="s"ózO¡@Ahªq¿Ø÷L¼�Ø5ìG£'’J]˜S†>A TnV!=›KLÌi•×ñUáBÈâá:XKq±÷Â�¨Sg&”Ê€KÕxy¼WÖ±‹ŽÑÌËþ9Ù‰PV§ŠÈg<×P|÷}Ã�îpB·t+.LWõÝYñÕ÷µF�ÞÈÜæ>�Oº\?¤jZ“&×Ñ’£šʧÅrL¡ ³•Bs…ñNrÅ`¸Ó±33x½·¨ô´òì�kÝçV&Lz%ŠÓ%}Ü÷"¦ö™ÚÓÚi]ÍŒ½�7dDgIç d”GS::Ð1©¡' 9;0Ç�3m¨6{gIJ”X™ÕOl€úO¹àMa@°Tvì{/[„�­t0£I{zŸðT°xfô.$:Öÿ.©+™ùµ�£÷Fê˘SéIéHõgªu¡ ÊêŒT³#ܘæÂ”û€üMа§b•èëá|»‹ðð¹wÀì #Ëð\¥£Ö^é¬Küðì+/.Ä2˜IB e ! ÂJaÚ µ¸;¥h?\+ÓD÷· >Q ée’Ãß;=Á
:À8ørVäN¸ ÐÇVŸæá‚wü°Žƒ¤É‘§8Ð2€XZÒ€#‰ê‹¼‚û{MŠDŸåõvÒAÔ„ÄWÏb¾¡§4e~`ebGgâ[1IA%çÞO]ïÐñÃU¤QÀ{”YŸô:&¢¾š³r�6Ë’ÅíúBm]“CµÂ�§ï[VÇõ;æÉ@¾M_�°n{bÐÌáÞý0”úŠ¢f%ã—exUr«¨*K2;0`8©ãi‚™ðbqé‹G«…,[4«ì
$š¥ð”¨HÒ«/EKâÍä„›
•QÈWJë ®ä€iÌó�@別Á’é«ôüzH{½†Rê/m%cyîtÏ¿ê¨Ä>ž§ëÖ>SZ4½ÞýÓÇ~)OêÌñ×$k½Ýoe�pú&Öˆ+±Hë�&—½1Í‚¨¦…¥á�œ.�kæÍ�åÀçUNÓ aÊH7ó9¸“f±��Ê_í(½Â�a¨Ë°ÍLŒ›Cö–Ã0�Ù`™â!”ùaa×5oçóÚü½†ë5Äèîe�CìãüM›®�Æãy~As;¹Æ1¼ï|µnº‰J¡Áû*�ù ÖmbPÙT^–<¦x¤”Åo7–½í\-¢ãQóâB’¤­gýuX[UCa×à|ž[šâ¹GÖ¼eXoç�ßhêôÛ£��&Ö o˺eŒ¸rƒt‹áA¶‘Ò:9=ƒÓš• Ž”PzÜ{ÏC™¦ÇRã?]þ¶3¤,4Ü=ÐYmlr!NqWƒNùD›ÕQ­•Øw¨d1QÄ/ ºº¹—‹šÖ×OrzloˆÿUë-� ßp¶<’•ÒËl�ú©5»³àj¤ùP…ê†&+£Òз]uÅÊŠñ­°±ë?Àtüð“ÅB|·Æ%@s‡è'kR¢ŽPi(¯]ć�úuø}\‚z�´žiÖõòñ’] gƒGhÇlÐdäÁAÁ¹ãÛKÃp
BÅ[!"µà¨‡»ÇÅÀø
D‚ÝŸ$¹Ú@½i1ÙL65< ü<ÜÁk»{ Öª_-~œ= œ Éà(YŽ„@²V€áÖm߉È)LõjWE(€äð§ì�ˆ`O•äãX!Ý”ƒl›r›ü[1]-}qTV®+úW{–ÙôIÓéîb7e¼>I(aQœ“¶%…Y\0�ÿ¹gEýWú1¥‘ƒüp
ÍêMÏð÷ë£O׻斿÷z”ò[œåƒr˜dN�Yã˜)©0»V¿>𗄆}„_dކùqrƒhÍèÝÌ ¾2ÈD1èW"x]J*U2 êPæXÙÊP¬ì˜ªC,þ½Ïy' üC¼T¯\Ôüc Ȳ-
�Ÿ;öý¬Ž¢Ä—u%ø{U˜BT(²;šuj'úÁ½_w@9P[––~FEIÖñ[™úödhŽ…:
'ñÛë8Ëé|‹âçɤóÉ;9-L*Ëç/5Zò$øsR2)è§'Äô™PÉâï�å–¢ÍþÃ`©�—ñqì°µ1ê nÈ~e8•¬¤1Ùš=ƒ…o.êÈíbxàW4oAN‘.Z«kæŒÂçŠì¥ÆcW}º7·½Ý¸{»:j 5'®F¿Bqåy³æjŒ9;2Zv’PÉèV‹jÏzÔÖÀµN1¹ü(lgüj�+YcÉ1;ùéiÎ’ :(¡pÀŸ�¦òŸ’od«/6KÛéÅË)«D!9?§)…|Èx_†ñ©[heB¨®ñõi¡#m˜CHžŸ®f‹à:måh&Ó*­­Fp"4ÑàÁ°t�²ô’m‡hr™¼$ó•ø-ÀUêèYÌ]=êƒV:-�Cü*|Îx]4GLJZN@åð­¦æ-¸ ‰ˆ1“ûcš´£1æ cþX•ªV°kä�—úI7 �æÿÙñÊ0øÒ•ŒÌÇßµ…WëI�ÇS\ºuA4EÑ™tdu?ïÜéÏ4-Ó:>Igj†È,®ÍÅMýäk¿¥tºóLçà%…VÈ>Jõ§*uzu -¾ •‚&+-ýéÄ=˜'MÿœdtƱ<É�/xZUé0«­·‹¤4<*Žç¡­�U >WÆ«d��Ž ±T(Ú¶Ê (VŒÀ…`º¬0?«1£Ô gb®öï×Kés·jî0¾´-Ã]¥ñKbO`ð6™šœMúaˆ­†eèsÊß=Õ¡.YÀÕh��äࡼ8­ª$˜V»é¹l]{«ÑfF8¢cl˦½~¤£Õ69„•+@²�ó%wÍË¢Ò@ÜER÷«ÿÂÉ%äu$üÙv*X½y"—^Ó>Ï 488àÕÅJ6ï´©ÀšÆK°…xPHï¬Ô|` :8=TšÎ©û[þ”Ž4hìLæ½WÃÅ<ÅÚMºóPû�¥B˜fzl«¸¸«²àiNÚŒžÈ<wÝt‘�¾Ž8sQœ'ö÷ Äaü/²©× =Îf|9—ŠÊ.ôU>Ã\¾j…òh¸
}Þ!¥ôC± ›5¨èÑ_(¨å¾ʯúéUé~Ri`c¹×#ya±FØÝ�oÐò T{r,䨮X)9Z † Ðâ,ÛôҼş`sáç·S†ÑH…–µm{®¢¬]Á'D“†æ‹úMÚÊÛÔ; Úª£À **Ú©å7¿éMÁpN·®l•á‰ÆÕ¹Áº |Áù-L¬¶ø51
[.‡ÈÚ\Ü6#€›¸_‡ªƒµ1˜eÚ4«œ±»ëN¢J¸Q´ï1œAŠ%çŠ#öÿ!mÔà%þ1ñì‡tX¥ëâ™Å‰³�Ùc ÆuZZsv,${užu÷IHõZHh«»Ç$ò2ðJ?߸Hš’Èzr…m$�mãŒIuooDý=hþš*_~ÎÔU&&ˆVá H½þk~·¯,¬Täç±zþ-’=½ÏZef/Ëq”Ø¥½µÏ¦LDÅߌ[I&ÚТÿ ,D¾ ¥å§|Y3gÃa)ëKSïƒÀ?}\8-¸õÑÓº¸8‚…m&‡Z…P=s—÷Y\D]�uàæÃ5QŠÂШ‰�Lü§‰@8K*�hdÙ‰RP%ºëŒ@vå¼i!‘™Vd—oDáé‚–ÀV5>Iúºr ùüæI×7gSèBd5fß‚[ÊÈMKÍuZÃ5vb,è·x”Xt ÙD"’c!¶ùû©¼ô_ëìèÔvÈÞêq]*ŠÍHâð–’>$é!¡™ßP
dŸ<ܰÂÊí(Š}ä¢Ê°"N ì#q�Ój„pá¨'+*¢úìxw¦¡ç‘þ^ÌÓËŒ*ÂùV/´OÍÄô¡°®kïÐÓvÝråp¿AûŒÂv çÉ7•ʃµºp,’n‚:HÄc†f71µë‚Kˆ³¡Éj7+=)ƒcŸè�¬ˆÊ~Ø• +[õ`KKŠòhbXC¸¿Ï‹
f¿g˜³2�ò^Déɦ#8yž0•¡:þ¡[tä“o‰àµ¿u1”aµá¡„¼ƒ¿"\ ‡HÔ ÂeJ®à®ªxdÝæ#l¢ *±É”3ó_Ew÷ƒ)v|âí’�)?¸z òNÊF<Ý7hìâoýO*ýàî+Çûy¶$,ŠÄɤ¨_¸¹'•@„¤R ó{'G^\.îEÃ~«EÁ!­R\9Š ²rw›%Ó–‡n±jî»Õ¸¿­3Z²¢Ê¸ýç¶)¶Z å/ÒƒÌxSÂÿ÷û¿ òçÌbOtAʇ€2'¾L…†&bCp¥´„˜×÷„Ô¤gXrÚ8_™0…g>W <¦ ö8v ÇàÆj‰¥VnB$Ëé¤\ÃhGáð»>|N Pè!Yä¸è`_½=¼i;£�Ôt¡ì–Æ]¡¡õiWò£�…ÑSºÜüUöÄŽ‡*ºî÷£¥É….ÁÈ ­òÀvª?á«üËbÑ݈ę±=ˆÃpÏÌ©JUJSßõ�=¬AUç!ugè;1Rôçã�1›Ù48Ž�R‚7«ptÔÏ´¥/[QÞ@y{5Á…ªi ,o=½äÍjjA‘Æ\#yŽWì Ç ôð¾)’à:ÏH;Ñ|šFë‹õò�z5¼Èº¹*%4ä>n¡O‹ÝT�ÁKëÛts
cáüÄ4cWD#ìMzû�©×^�†#ÜÚ¨sǃ'sÊ9UëÊö\eV‹w?zÿÕÄx¨rÒ` Â4ŦÕ)Üß cVù%@•ô!g:µ…¡ÒܤZ)£ÿZÅu;ýiðïïÀ2?EÌJÙb…+®ö� ­öw¢(á^­›Ñ°ýÐf.Ü9Kb¹‘Ûy&0–fkàrËrÿ1ƒªBþŽÉ]‹ºŸ@gïl¿Ñ5þ=>ê-y­Ï�½§�<Q7µ? p1mDµR­\uÒ.8â �D`È9°R0×…BçWÂ37èæ´ ]û��B’òœ-óa—9M ›NˆßCD²Wµ ª7›ÍzFPúUW?’ŽŒ��þÿy¦otÛšE×ΆïEn—�³~¯ëP7úºdÅ@ªËÚíù˜Ýó*sÿ{ÕÝóf¯ãoä‡pÝþf­Ë¦BÖtÌéÿ
þº|›Ám]u罘É#ƒ1½|®«.³…Ðóû½jÇe—?gºÌöédž ?FÖ,æÛwM‡0³]f¡îg|ŽÐºTÅ@Ù[÷�ÍéÍî1g°Uß¾÷ØmF�ü~[3gûß?Çq³~Ê®>‡îbÜl¡fB¨o¡û²öËwú›1w|Êþï›;ö‹Ñ{ás7sö‡¡küçè¶ÂU_×ý¬Ìê69>g¿Œ®{³�»ðû÷û]ŒœqBnÞ„/ÙýêëÞöÎtµ»£sÈìð?›ó]³g1ó5ì~ýìàk Ý5Ƈ»/üvuwÙÜÎð³•wu»ãûf¯ù _ã‹.²ïo¦ïë¿§#Ã~íïî6eQÔ….*g/Fõ|M�¯»
W|ÎÞßslݳ9¾a—½§1~;Î÷»qS½¡sÿìuÜy?ßñ{Ö/¾ýv›Osó%CÎlð#;†žAÍ~†ûþE—Q““㻘ȃÁ`0 ÅÔ+Å•iëåÒ6”LC1µ´—)Ó0¹P°MS¥LÛFBB©3Ý3gß 5Ó¥ï‹þÛc»[ÏÌeغªn»Ù¡ã}Þs—_dÿvÍ—ìðñºwÎ"/Gø/Õßõ/¶’­BüÊ/>ذ•Ûm/v‚•üqî[ýŒœó~C}~5rä̧®ûþñAÈî²;vüÜd÷:ãÃ^¨ñD£ I #d$1
„ £Äš‡@ UÅPÅ•_©ïÈé«JÔ™oWƒz¯ae¨0»=K‰+ ]3„ΑLo<¡;Ÿ›É.œŽàÃ!9K²¨‹�Ê~$A–&* Xãþ¡@¥'+ä€Ð²%ÉÿèÀ2‡”ìÐRQ G•8>T®ck7ÇtÂ3дÓh\ܳQ»´4èa4éÄ£äýc„¼t<Õ!lPfÅšNKqñŒ[$=¦"Ñ@mb/WéC£Æ£mOfÃÓeíeÁ�Ó’5ãÁ¡ü ¶4ÃIÞ�Žò¯WjA­÷׬Ñò½î(Õd»u<ö«ºàþç­ŽÄŠIô†fÇ8§½Óõã©O¬g‡ú@
ÎR4¶ endstream endobj 8 0 obj <</Intent 16 0 R/Name(Layer 1)/Type/OCG/Usage 17 0 R>> endobj 16 0 obj [/View/Design] endobj 17 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 26.0)/Subtype/Artwork>>>> endobj 23 0 obj [22 0 R] endobj 35 0 obj <</CreationDate(D:20181229214738Z)/Creator(Chromium)/ModDate(D:20220226201019-08'00')/Producer(Skia/PDF m64)>> endobj xref
0 36
0000000001 65535 f
0000000002 00000 f
0000000006 00000 f
0000000016 00000 n
0000013004 00000 n
0000013055 00000 n
0000000000 00000 f
0000000159 00000 n
0000054253 00000 n
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000054323 00000 n
0000054354 00000 n
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000018090 00000 n
0000054439 00000 n
0000013406 00000 n
0000018390 00000 n
0000018277 00000 n
0000017046 00000 n
0000017529 00000 n
0000017577 00000 n
0000018161 00000 n
0000018192 00000 n
0000018464 00000 n
0000018608 00000 n
0000020061 00000 n
0000054464 00000 n
trailer <</Size 36/Root 3 0 R/Info 35 0 R/ID[<FD2A62F8255742B297C39B5E60E67CDE><B125B91A6C7742699DDB00B213B7C27C>]>> startxref 54591 %%EOF
@@ -0,0 +1,329 @@
%PDF-1.6 %âãÏÓ
3 0 obj <</Metadata 7 0 R/OCProperties<</D<</ON[8 0 R 22 0 R]/Order 23 0 R/RBGroups[]>>/OCGs[8 0 R 22 0 R]>>/Pages 4 0 R/Type/Catalog>> endobj 7 0 obj <</Length 8109/Subtype/XML/Type/Metadata>>stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.a8731b9, 2021/09/09-00:37:38 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"
xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
<xmp:CreateDate>2018-12-29T21:47:38Z</xmp:CreateDate>
<xmp:CreatorTool>Chromium</xmp:CreatorTool>
<xmp:ModifyDate>2022-02-26T20:11:14-08:00</xmp:ModifyDate>
<xmp:MetadataDate>2022-02-26T20:11:14-08:00</xmp:MetadataDate>
<xmp:Thumbnails>
<rdf:Alt>
<rdf:li rdf:parseType="Resource">
<xmpGImg:width>256</xmpGImg:width>
<xmpGImg:height>76</xmpGImg:height>
<xmpGImg:format>JPEG</xmpGImg:format>
<xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgATAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYqlnmXzJ&#xA;pHlvR7jV9VmENpAP9k7n7MaD9pm7DBKQAssZSAFl5x+RvnjUfN2r+br+8+BWmtJLaCtVijZZUVB8&#xA;liFT3O+VYp8RLVhnxEvWsub3Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FWG+f/zU8seTLdlvJfrWqMKwaZCw9U1Gxc7iNfdvoByueQRa55BF8t+evzB8&#xA;w+c9T+t6pLxgjJFpYx1EMKn+Ud2PdjufltmJOZlzcOczI7vVP+cVYSbjzJNX4VSzSnuxmP8Axrl2&#xA;n6t2m6voLMlynYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FVk88FvBJPPIsMESl5ZZCFRVUVLMx2AA74q8A/Mv/nIqV2l0ryYeEYqkusuPiPY/V0Ybf67fQB1z&#xA;GyZugcXJn6B4TcXFxczyXFxK808rF5ZZGLuzHclmNSScxnGU8VfTH/OMOlNB5R1LUXFDfXnBPdII&#xA;wAf+CkYZl4Bs5enGz2TL3IdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs&#xA;VdirsVYj5X/MGw13zf5i8vRFRJosiJDv8UqgcJ2/55zfD92QjOyQ1xnZIZdk2x8v/np+a1zr2qTe&#xA;XNJmMeh2MhjuHQ0+tTIaMWI6xow+EdD9rwpiZclmhycPNks0OTyPKGh2Kr4YZZ5khhQySysEjjUV&#xA;ZmY0AA8ScVfbnkXy2nlryjpeiinqWkAE5HQzPV5SPnIxzYQjQp2MI0KT3JMnYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXw9oPm/WdE8zx+Y7OWl+szTSg14SCQ1kj&#xA;cd1etD/XNeJEG3XRkQbfUt9+Ytlqv5U6n5q0ZykqWcw9Ov7y3uuPHi3TdGYH3G/fMwzuNhzDkuNh&#xA;8f5guC7FXYq9q/5x5/LaXUNTTzdqUVNPsWP6NRx/e3A29QA/sxdj/N8jmRhhe7kYMdmy+ksynLdi&#xA;rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir4a836BP5f8AM2pa&#xA;NOpVrOd40r+1HWsbivZkIYZr5CjTrpRo0y3ytqd6dCuLK3J9DzFYXmn3cP8ANe6dCLi3kUdjJG6R&#xA;e5qcnE7e9nE7e953lTU7FXrv5W/kPquuzQ6r5kiew0RSHS1eqXFyOwpsY4z3Y7n9nryF+PCTuW/H&#xA;hJ3PJ9NWlpbWltFa2sSwW0CiOGGMBURFFAqgdAMywHMAVcVdirsVdirsVdirsVdirsVdirsVdirs&#xA;VdirsVdirsVdirsVdirsVdirsVdirsVdiryr86/yjfzbbprOjKq69aJwaI0UXMQ3Ccugdf2SevQ9&#xA;qU5cfFuObRlxcW45vL/ym0y40i+vNc8xwvZaP5Raa5uopk4yPezxCGKDi1DypuPeleuU4xW56NOI&#xA;VueiJ8n/APOP2q+Z7WLXbq6j0XStQLT2tmqNNOsLMSgoxRQCv2TyO29MMcJO6Y4Cd3snk78mvI3l&#xA;Z0uLa0N7qKUIvrykrqw7otAifNVr75fHEA5EcUYs4yxsdirsVdirsVdirsVdirsVdirsVdirsVdi&#xA;rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeRedfy/wBa8z/mjBbyQyxeUJYra81aQlfSnntP&#xA;URUWhrUpIqUNNqnsMolAmXk0TgTLyeuIiIioihUUBVVRQADYAAZe3t4q7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//2Q==</xmpGImg:image>
</rdf:li>
</rdf:Alt>
</xmp:Thumbnails>
<pdf:Producer>Skia/PDF m64</pdf:Producer>
<xmpTPg:NPages>1</xmpTPg:NPages>
<xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>
<xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
<xmpTPg:MaxPageSize rdf:parseType="Resource">
<stDim:w>2409.000000</stDim:w>
<stDim:h>909.000000</stDim:h>
<stDim:unit>Pixels</stDim:unit>
</xmpTPg:MaxPageSize>
<xmpTPg:PlateNames>
<rdf:Seq>
<rdf:li>Cyan</rdf:li>
<rdf:li>Magenta</rdf:li>
<rdf:li>Yellow</rdf:li>
<rdf:li>Black</rdf:li>
</rdf:Seq>
</xmpTPg:PlateNames>
<xmpTPg:SwatchGroups>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<xmpG:groupName>Default Swatch Group</xmpG:groupName>
<xmpG:groupType>0</xmpG:groupType>
</rdf:li>
</rdf:Seq>
</xmpTPg:SwatchGroups>
<xmpMM:InstanceID>uuid:e5f59418-0be8-dd42-a564-bc1f41615750</xmpMM:InstanceID>
<xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
<xmpMM:DocumentID>uuid:c2483dfa-3a53-3149-80a7-6822614a9dee</xmpMM:DocumentID>
<dc:format>application/pdf</dc:format>
<illustrator:CreatorSubTool>Adobe Illustrator</illustrator:CreatorSubTool>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?> endstream endobj 4 0 obj <</Count 1/Kids[5 0 R]/Type/Pages>> endobj 5 0 obj <</ArtBox[152.941 154.947 2262.04 755.845]/BleedBox[0.0 0.0 2409.0 909.0]/Contents 24 0 R/CropBox[0.0 0.0 2409.0 909.0]/LastModified(D:20220226201114-08'00')/MediaBox[0 0 2409 909]/Parent 4 0 R/PieceInfo<</Illustrator 25 0 R>>/Resources<</ExtGState<</GS0 26 0 R>>/Properties<</MC0 22 0 R>>>>/Thumb 27 0 R/TrimBox[0.0 0.0 2409.0 909.0]/Type/Page>> endobj 24 0 obj <</Filter/FlateDecode/Length 3540>>stream
H‰ì—ÍŽ¹„ïýõU"™ü½Z|2 Ã?ÀÀ»{Øõûþ"ɪîI¼;ö° i²ø“ÌŒˆÌüð·�Û‡¿~ ÛŸþüq»ý| ÛcK™ÿvýúå_·nÿ¾ÅMÿ~ùñöá/ÿÛ�ÿ¹ýÌ0ð/n}ԣƴÙÈG¨£l/Ÿnú¢ÿc:j­ÛnGëeKv¤·=Æ#uÛ,�?/·=v¾o9%—mOý¨ŒòÑjÛvf»ÕsÈâ’Ž1Òõ½¦£Ç¡Í¹¥moáH9?œÝ& ¿{ض÷xX�—ak´rýÞÏokç~š½ŽÞïg¯»÷Óòbx€¿olßïÆëm¡ÝWÌ—ï§õË3WLÏíËüpYÜæŸ8‘«»butŒûtM´ÂÄØ^ñn9d+²®6;†ž3ÚÑ
Æ—vd³k,—q©õûŠÞ�Ò5¶£h>†8ßÕË8Jä’ÐqN«G Yf–#Ëá5ÏD“sø’ÇÑkòM<»š<š�¡=xÅru¯X~œGh)k†qȹ¾Æ�ºûsÝÂ%Íß";
þ’Ñ=\ŽXÚ†�Ùâý-]&t‡¯�eã±Yn[ÎÀµ·Ë[k¨Mwžß9¾Qw6öÍ`‹ÖªÇßÇ|m-›2çÏÆŠÕˆMÁ»‡wNütûáö÷öÅh툱~“<þ�ìzæ_á„Z¬� Ôô[Ë� ,©_ ¬ãÅžh¸ä��èÊ�ü“ê<ÐOÛ.ú­sŸé§‹ïô›vío ¦Ÿ^öH?=ü‘òÌ3ÿ›¯ò/á<Ÿn \Ü’€Ú‚^áL¹i!“P^À­F£`�Â]°?Ç|Θ¯­‰wœ‹v|'–8²˜']^|_ÌtƒïÌm\8îÔÝã�ù<»‡'mÈD%–ûŠ*q™uÕ‘vßÕGÑ_3‘4aèöëä}Ó­_˜»¨pnülb‘‰ î.H +ÌæiÚÉÄeû�©…r¢öÿ]aDò�¶Ç ¾¼%XêÚHŒrdE…ÕÁ*g§ÌÏ×[­„hl_� `F,�B|Rä.¹\ȶ%Òf†tX–�ÿú,�tÑ-É�ÕÇ­ �øk'² X;
u�‹à]Ê{#ÔpsD™¬ë‰{!“�Á"Nr
õ
T;ïˆÁt#Ž
ekìiÒdq>Ú8’¼}Ž_n+‡�ø²øwPX´‘†&‚üà˜0ÖHÖ‰…%îÊäQ TVÝ¢“¾“qûð@^©¸àå4¡%¸¥Ì¡é]Ië=]3~å^a £ÁÝèçg’ÄJÆB5�ÎÖ0;°¯‘�\É‚).�Y¬qf;ÆckÈŽŸév5^©ø±s�ˆIâàzŽk÷�³ÑpQÇ8DZ%ËŠÁWx[ -6Ljz||š‚=¦ŠG^ÇúØ�-J…†,%y›Ðò´kÌß�<Jüš4™ªÂÃ@ËrÐÖü¿óþŠ›y`’·«ÞžÐXåyðnÜ.OÅîâpå Ž5œX�íš(诈q2Ø‚ÀSÚÊ&wÉ¥1{¼ZÂQ㈭yØž~ßϘZ”ÛU¢e…_B~1µ4¤ã( ·á`ÐÎýØŽátóÒ“7FÈcªkA Xû3ޝçÈ#«d³Æà3@Ièr}�V
F “Ôa½9xIéÉëØ¡ZŠaGx°¤9”v`R#þýšÀR³Š‹z„d79LKžùTôt¥+\7†Ò•
™¢ì VApﮡàcÄ/Ma}I*9ÂãÏ=\EH¬¼³Éæ ]¶k'©»/z‡ãCÂÀèòm% peJ—”Tpž¢ö›•´<)iùº’Bõ ¤ý%ý JjßIIíû)i{£¤í;)©ýO%Ío•´þ_Jê”äØìB*–KH‘ão éP]$™É¨Sù�¨Tˆ)ÔUgRBÜÎ.“I¿_µj¢À—"¿$d'|í>Zò¥Êüœa½÷‚T1ÝËGpe>]­¬j.Ì“Œf¥¼ãÓüÏ2þkb]QÁ¾[¡[쎥1Èdî^®-…jTá.É Žà⤂}  qV®Ñå<ú–¾œÛ9\Ô“©lë¨Ò9dÕ`7Ëׄô¡)) #b5O‰¨B¬i^Ì+šËtW­³ÔЄÜ(E*^5|„Àj¾�å}^ÖâÃS¥í¢Ê¿z³dòQi*«Eõ>›�hDƒ/:~Œj.mf>1µN[x»/T_ œéÏðD”]¡ÏþU.Ò'zÕT« �ªÓ•ú�D,­WtaŸv¶kBš­žo+¥ç5ì$tóôyNdÏÌî—t5¡ë,ìO®DÖ¼óÌ’8äæ­LîzÒÌgÖšš²§Áî4xy ìêw¡fÞKé“VÄÙyrsqè}øÆ®/8ªw*^"H[’JùY+Ám’Èœc¸g³=[3@TË!#aâÍC[’¬B˜½œ÷‰KE–R™?ý¾F¸�:‚fr� cÂ�ÂOÎ*ϼté±ÍÖ¶™·¶
©‡ƒd2sôpƒý«7óÚ(†I÷�½Þ8«9¶)) ¦5Ï„8_³ÔBC¢0;Œb,˜‘"ir}ØfŽ~–´IÙˆã7%­ý!i_”´ü,iù­¤åß«¤…º$­M
_#Q“ ~­¨¥w5%ûwÓ´þžšÖÞ_ÓâïUÓâ¯Ô´þŽ’Ö…SÒ�«'I£‚³Ä e5-I•vOŽß£0ý¦çJA %/HÞ“J˜NÙ£fÞÝÐáuN^;¢4•«¯ŽÙOY<‡ÞD9~ð dU¸·žüPþ[Xç™ÙUN�I¹†IÎŸÏ ’éü¨›m•°o'L"RÏ Ž ·¨N‹Ñ§~N’�¡;n‚ÛÃÅÁôWXBÓ‘¶Æ™÷Ñ‹ªvo±‹ÊøÀ’ïÿôú„ÉYŒŸ �XÖî#ìÕI²&x™š"EZò>ŸÁ£A˜Y[Þ I59¸$ÕiŸº0uo¸RÖðǾ’þ(õI:DÐ{Le�<‘dÇõ¼�м!x”–ÝA=Î�àDg5.¯I®Hy?×ðA.Ò ¸(fŒ©å³‚ªæÚàrJ£·²dCÅL L¿²¢†qJgb›I�cWœÝ%d Éd³zªì:ü;ö¶8¶sæÒ¸VÏÃbS¢—ܰèg‡êÈ?Ý‘],g'&Sò˜©>Î ]Fw°$ݵLßWÊÖK³ûÒgÚ¤ÈX`ÓÁ«ID"‹ÃEJ'‘õÓquô[Ê+¶�PÛIΙäB³’%ìkoýä¢ÉÀê�ã¿8Ø<ch¦‹Q}ñ Í›GáARýÀÛ�Á „–WªEì†ÊT3‹›ˆÓhó”c2uõL_dd÷�½ÍqQ‰A,Zð¤©|žìšyõ¸ôu[Ô-ØÕ”ˆ¹ÍñÃRóŽ”ÏÐèíêlcñØ%2ìÊžå…mó±E÷ºÐôV­H3Êžé,g~R­�†#¼Z�Ù>OîÅ!:;ÈP„n I‘ æ&øzszV7¡ „»¢3¦”ÈXŽªÅY>F=:ûê˜ecô‚ ¬ÔV^Òilc=Þ$�^É$¯K’l•Rjþ’dI€ÇäNÉôòL‰JY˜š¤TYÀÅÝqL�U¥Žaæzê¢HŽ$ô­ú(D/T›Û¯± î¿d—=rÛ0F{ŸÂÐ  YgRú*â"irÿ"ï-@HŠ{R$±ûí÷ã„6§�©á¯g3[ý­~¢»i<�o¯ÀƒÎfû5Ë2�Fç66¢M‘³)t+
b÷ó¸ÚbJRT8kÝÊÛÚ®éÝb£Ø¦©«vAaÀùuôÞiVË&1Vµé9cD�åJÞ {µ�5pÁÇk’‡Uâ:/~¬fŠàh½¸k6y]gÓó¯™eM†~«=<Ç0>ñcí̵{4 UoÞüýßqz?5[ø§.í ²užIà&)�ýTù¹ êTçR¹8µ/oð{í4†aý?ÁÏå8FŒRÏ�ù>0%Ý'ó�2pÿÞJ‚{€3J/nV†›•˜æšr7P?H™öA«ßÝNœº»Pþ¹ª‡Ïîm´€Ž�"Fàr‹�§ÇOØdš«e»겆Aš…¾Öf=*V;J<}ç]˘ä8x3ÊXá¼E®œÔÀÊ:G8û‘hÐñ`×¼©&gT<Õ‘ŸÖV7öÙ…}pËÛµH-Z3?þy~ØÖÆ51¨EjWeœ÷œ�ìY63Ó»YSn£Ö³ä·i3ï¼?Bþ›:[@Å9L7¡u ´ÖÝ
̵^CA†I|T“0Êçk'Çœ&ã*Tü›)þß_ϳËs�æÒójoNÙ℃Íá
ú.¸(‚ç¤ê�åy(Å@™7mÚ̘ʶPuÚÚªÚ­œ”P°¶�åJçUÒÙÃgéˆ^À’}æÉ–t9jËjHÉ5t]î!:>H|H>@‰êDë8p€s:¿â‰ÜlSÀ¬Ì EŒ ÷¨/^6“p=ëR [�B°Ú ëIžf�ŽÝ-Љµ+‡®ªÆ\q²9EÂÊ$NÅ“ƒ:=á
aǸÇy§Ñ±œÝVö�$8 (fóÉ~†/ç{²'<RdN87¸.O9ƒÛºû¶ÅWÜvås˜ÙvÁÖüS ²^ÚxŸÔùóëÇ'ÿþ 0B¸|– endstream endobj 27 0 obj <</BitsPerComponent 8/ColorSpace 28 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 39/Length 181/Width 105>>stream
8;Z]!\Ij?G$j8@t/k5dUU3<am*`9`037'CAm[R>[,!)9)1.3+''h?`o>gmB[ET8ck
@lE>-DRC'5>'BJ23HlQilI&Ga&7If\2VcDkpR`P&Ag+(rGsf,$]V4,Oi!oYPO?6G/
Ye+**Y]%)+Lu]7C/1+obTM<jR!k7bhp#"6_FO&2i!:ndgO8~> endstream endobj 28 0 obj [/Indexed/DeviceRGB 255 29 0 R] endobj 29 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 22 0 obj <</Intent 30 0 R/Name(Layer 1)/Type/OCG/Usage 31 0 R>> endobj 30 0 obj [/View/Design] endobj 31 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 26.0)/Subtype/Artwork>>>> endobj 26 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 25 0 obj <</LastModified(D:20220226201114-08'00')/Private 32 0 R>> endobj 32 0 obj <</AIMetaData 33 0 R/AIPDFPrivateData1 34 0 R/ContainerVersion 12/CreatorVersion 26/RoundtripStreamType 2/RoundtripVersion 26>> endobj 33 0 obj <</Length 1444>>stream
%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 26.0.3 %%For: (Michael Shamoon) () %%Title: (White logo - no background.pdf) %%CreationDate: 2/26/22 8:11 PM %%Canvassize: 16383 %%BoundingBox: 152 154 2263 756 %%HiResBoundingBox: 152.941359391029 154.946950299891 2262.04187549133 755.845102922764 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 778 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 2409 909 %AI3_TemplateBox: 1203.5 454.5 1203.5 454.5 %AI3_TileBox: 826.5 166.5 1560.5 742.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI24_LargeCanvasScale: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 %AI10_OpenToVie: -2651 3020 0.25059563884769 0 7787.44597860344 8164.54751330906 2548 1389 18 0 0 6 45 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -2651 3020 0.25059563884769 2548 1389 18 0 0 6 45 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 %AI17_Alternate_Content %AI17_End_Versioned_Content %%PageOrigin:704 -46 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 34 0 obj <</Length 33953>>stream
%AI24_ZStandard_Data(µ/ýX<ž¿EZ-�D¤™€æ£Ù¥¶[ã*DÞJï§ënYÉwzOê°@Yþ= )œàr�²
}€h>@>@$F"ôãr�’.)™�HØ Kˆ�j…Ãq
E`ð è‡YXZª>Tü!ò¹T Õ¸A×À”Ÿ�Qìt€h4îRØdBFs2Ê�š�´lɵdˆ:-¢Hæd”–
â€àd”ÙÅ�ŠKÑ™‡c4(Vš¦X‰b'S6 1Å
“y8p+cÁa3á.±€_&ÔAõ!êl&\âeÑñáÀºPÀêpM´ ,0O´ˆbǵ@U»Œˆ:‰•Pm�2ŸƒMK¢€Dv´X$+Q@ƒI±H"H¦”( Š £°:­Ïš€@ìHE;ٕΤ‚‚¡€G*ŠˆŒÃf4À±ŒÒÙŒv¤‚À*�X—N«³Ù„É,¤€¸¤¤Èô¡ð0!i™],  ±A"˜ˆ"+2‰b'ƒÒpâ`"KDÂŽ
H*2‰@bƒ´A—ÖÀ à>)¹É® D‚Ë¢d¦€x!Ù)“`Ñp°/&‘¥³ ±T›uY”•f EÔµHÊñhiùÀRAl²ËDÔÙp@#j@!âUÂ5€…¥eD‰AK†¨³É®—¡(„t6ê°‰ø‰0Àˆ:­„�ÎFÃ@s"Rél"² %Z%„¨\2xT2 )‰�]«ÑÆAe�±z„ �‡ c“ñ’‘Àép° m…“]‚Bl�F*‹„,¢ÓÙhˆX$š] ¢Ø!e'£ÌðÅÎAFgb© ²kJÉ“e>‘¤•AFg£±±9HP�}è0eVˆ ê%ÔÙì«XVo (|6Ù•¡©i†ìZHX Ð0aàTÁHDà"Dãj!mZÑ* ::T¡Ü–Ð+¤·-»F^ž ÁÛha°qzò²d D + =‚L```Š
¢Vv��,NÁã˜B !­ÂÈVܣİÉ.…Œ†ƒØ24 +bÀƒ ”†‡ÀB@J;ÛöÒÀɃ´à@­<˜ ³É.æhN®8¼³ÙPp >Ÿ’ƒø8" Ž��(ä:BŸƒç!SL§a£NüQ:%hÄ‡à‚“]Á­j= ™‰Xx(¾¤œ»Iˆ“+Íã¨ìCàÀ”…�ÆFBc<ˆ88 ¬xD'Ü'%³Ë�¥Ñ±9Cf¡¡!"G¾ )XŒGv"» 4 O„ˆ„Æ ‚%UÊ@:½™3ht6YI'ÄÒ’]ûÁ2Ze´
|IvÒ°�]J6`úHqL x, hJ`8m<¢ËA
ËCÀÈ`G(¥ † ”ŠuHm*J"ë)!­Àì:Ù@X8² ‘ñ +©YXZv˜(|ïµÙgc€!x ‚®d×Kv2Ê•�ÕYP•xŒü™�´ì8ÑTÙ5‚NcÁb¡€³0*ͳm™B!m[F@vQ|
øä¢W +®@¡o`İi}$GsÓñ`mÙ•€ ¡!«!@ÁlZ *Ö¶5˜²ÃdB \
˜¼lÙ•ÀÑœô, œdÅÈ(Ó9XR…ˆf5Œbò&/›Ë‚�)#H0Ù5 p'ZNé‚Ùpd[JAÂ$³‹aÄhY¸P@±HŽ„LR »$X0HHH4JL":
‡‰Ñ™|¼�‰ÕGƒ€‡�GÆV)"€r¢±Â¡’:øÈhD\h#Š� G*È®d�‚86.¶ .ÙI,T2±<Á#‰¨ÈÕ«´Ñ+»Tá+R€Hˆe$b¤¡/F�Åq…‡‚Vv…|F;ð¤hàã$A”¤�þX¤X2‚Ç⸠I(³ c[6
^%4p‘1”!!-Ò 4+ž]Ò9`%T¬€tÉg°6 ¬MƒpÀ‘Âydq\v]t(”pTLn² Ù@ù ÙH² %úŽÁƒƒŒNÁɦjS´<ã"¨áhNNlidó`1l[vYtÅÄA…Š@”'ŒlaÈ. ˆŽPŽ„tLa€O€C†rd£%SàN^¶ìZ©
XX<Yì‘€¬-»V�´ñP>-’ídca =’-»VÞFCJ L‰°°-²AV†£9iÒ�l ,†mcU œ„¼¬Z°–ÕÙe€u6/°‚] �l+o£á‚¥‚xNž@½m¬Š 'V%m Ù?Œô䃢-� ΀ÍSÒ­E,<¤•H7 Tüa†¢a“]ïbƒ´ Yu "P<Z `;(‘w6+Pˆ�É£ÀqU ’…ì
e‹óÀñ=X´\„pJ,`”ÞÈcñbqñ‚qض�f2ÊÎ †CŸ&"RrB"ãaBÂ…å�AQ´¬€0­çUœ�Œ‡÷¼ @Œô‚]IE,X$›]¬Žòè(Áð`FD)Ÿ-$5a�&wAC@c|2NFÙ2á��BiãJpx x޽8� °²qe >òŒ<$r‰@AùKh™)€±á ©Y2Eàqp2NNüÐâ!Ò%Œdp"-=¼Ä-Ä�ª€Y�]šÆSïAPÒæ„@%Aòá0hÑ@8¨ + P´È Y Ââ<lh"D'qä,Žcygã0q2J�SJÅ3á™Ë‚Ê&#Y)œˆ ø`¸ðdב’XŒŠ‡��ÅËzH+›–Âce2;!™"5lŒXD1Ñêp` ^ÐÐk±á$·V6‹ '9(›?ñÎ&»0ͤ*i ‡[À®V´U CêTaJ‘°VJ;™H›èÓ
�22ÃiEúDè§”S+¥™$L)ÕGâÓ"¡¨¶’'UR'Õ©EÚh¥T¡–ÆByáxyj±4ОP¬T)%‘Á²©ÐÚ<-ª-ô°l$‹MkUJeÑZ‹j[)©R*‹H›hÒ&z¤ M©N›
õRO›
…:‘R(-/+Z‹´i)Mtú¨P<š
©E"hÒ&ÚÕP§ŽçKʨX­H[Çê´•XÈ¥ J±¤^0Ö)E…i¬ EJ�R‹„­”^XXé„Z­HXëE5 …‘N˜V"¡V˜ª…™4-…½¨ØTX K�H**©SëdÒ°”
K‘P+ìE5€Æby`.ÊH‘0 ÓP§,EÂTR'H,,¥­ca˜¶Ò´�„i,m¥#9À°”
3i,„Jh*¤ “(£UÂíô�¢ h±H!ˆM…Ê–ÓÖ±qªØH¦©Åae¬Jx´µy>ÊbÙH*ÚF‡I”¡*áùd<EU@ÓP%Hc½h(”ª”:m(ͤj1­VÕb¡Z¬Õ
Õbm«•Ém+Õß­Â{Qß'Bƒm°2´”ZJºÒR¹­•:¹–Ò¾˜X+•[ ´R¥R$Ò©•"¹U´Öi«–[ ”zIq¬Í´­ Z±6ŠªÀê„*¹UZZ'É™¶’6ÕÊê„Jq¦­•ÒN,%
Åm¨ÒŠÊ¦r¦­”R9±4“CQ@QµR§MK�P)šÉ±´¨¬ËÖ©…¢*pJ ÅÚT)©“¦BZ¥IÓP( ű´¨¤T­‹¥m«U‰¤¢¥kEZµ¨JŠr¬Õ¦™H+,ÇZÀm«
…”Ò@�Z¹"¡6MUª´"€ÓP¤jUb9ÓVêèªVІ‚ê4RËÉm«Õú«ZT)Û
er­T
J@C9ÖŠQ^X®•JÙ\JŠÊm«Õ¦ pÚ@Ø(˜IK�R4Pf#¥N(º±[À±V,––j‘P)-�åX«MÅ­ ZqÛjUÚK‹Êªµi¤T%·
ÀŠ”2�FP­ph)›–�ÒpÊÀ°\ OéÂT)) Õ–"¡PV'–JcmšÚ–A¡H(”ª¤’"mš
iåPT8œK•:aª_jGr`¨Jx°U Ï µ:¡>Ê"�PìÔJyÆ‘�q82"0Õo±H-Õ3i¦MUÒ68h¬–Æby4
©µ©Vˆà´J'PcP�T´ €†Zµ¨JØê„*¡H(˜
[j+uÚV›&€jµÂÒ,°(áÑÖ˪õ‚ÁX+D‚µ¼œLš� k;…¾þ¯Tñµ©Åqb�>R´ŠÝÛ­Çרs×ý‘R•4Žh¦”
¥}ž2Ä০»å†*©Ó
ë”"}hœZ$”¶‘®€åJ•�i*¤•©m-ê%$áaÉŒR*œ6ÕÈ7E«à@¡´w¤hºoS´ŠÕ…Ò>ÚÒX))¤–;톘»�
K)R‹u©¤NÐN°SZ+.¡o´R´ŠÖ)åÑJÑ*Fè%Ò
#]%åÑJ¤PkEå´á­˜ŠzCl**db:m¢¿Ì¢ÚZ,mSÙ´‹´�©Z/LÂÃÂ"µ¨V¬ ¥*µ;­LB‘L&Òê1 3�6l€RJÛH+VŠ´µ°(áQÁZ/*–’*Ųp{�tB‘°S+EzÚ
€ÖÂ´Ô ÕzQa›–‚%JJuj‘P/-'¶i+Ò
‹
ÓZ$”ŠuÂrÃÛT(U‰„Eg÷'€“„§uB�PH­h˜&À¦±´-S•ðxHÚæY©¶RX­­¢EÕj©P2õ©gª‹©»Ò2�€ðÃÝ·®0B—ùZ+*'me€´Òö¢âÐJ'” …¥¥T)“ÆRR¡ô„¢ql$X`m$X`-C‹ªÅz)™°R™ª%¤ ¤¡V-$Ö‚ ,­õ‚rÚZ-RJÛL¨ÓJ‰�ÕÒ84
é´‘PR‹d"µ´–Õ­ø‚" �ÒLª”‚fR¥P-0d4“ê¢Â„ÃÀ`ÒZ% ¥q°$2J¥‚Ixxp0 J¢h)Ú“L/ª‚F¦Vh…«€!JLQ˜Ùðdd0eÙH�P+Ö ”ÁZ) Îó?a|3b©µ�.2˜Jê´µ84“ªtJyp0�b¦�¤BimžŒIv%`šM©N­K•‘ÁL²kCÕ�Ò6Z©“*EÒ68X@Ú6Ï)¥:µJ§Œc’]¤ M©“ÞÞëT‘q•2®K (Z«¥¡H¦T–¢�8ØÅÀ¹L ˜bzm€`y™°$!€Y`©0Å
`‰M`y ‚ååÁÓÇêõ½5£K,>�зߋ� »ŸëoG�ÿ\bþbÇþ׺û]^X^$½0°ÔP«–çJÀ´ÒÓ�´P/¤ D s-`)¨Rœ‹¥¡hq´6OÌLÅ2W1Í\šÌeJE8LÃY)½¨:0ŽfÓL¶i*¤ÉSPpL£­H+˜)õ¢Zµ¨>ZëôÂ�mš)uJYi‘2@ZZŠ„Êh¥N¤Š�”"¡4N,SJCA`+,”SÅJ©EǦj�L˜§VI[±6­tZY‘6•
Eú´6Okó¬´H)ŒTJ¥ê@©TØ
ëeƒÀ6­Õ"•´k U:µ6RF ë„R¡´ À±R¡4R-›*Ee0 ¦m$TH³:‘\Ó¨¤N%ÒÖ�e0M«¤@ÁÀLšN›ªUÒ>2—*%%±zQm¢ÔIå•a/.•Ô©•:m)Õ…Éꥥq¨¨Pª-#Ë.V+¥µ´¨>¦TD–].Óâc²)­Õ"¡BÛ
]ßǸ17ª&tÛ7�6‘É·Öù ©“ÊiÃÐTHÙ@;}¸I31¥" µH©Mk¡<&¯Þ؃ŠEÈŠÁöÅ^ÆdVÿv×O!ÖÍùàGïvÿ±Äâû†�ŸGO_—Xn2¦þV[ÐNªŽ”¶Â0I•ðdWc½ -LRN&­”ÖJ©>&©“ŠaòÊÚ´H-/°õ‚R±´�–¦²‘:”„
µ6�‰£4“Ê"Jx²K± E*qh*©Â¤W“][`µN)�MC½ldvs´6�–R]` ÐNhÛ�¹ËçO1wo!ê䮽1wœ«µH¨U‹Ö3b1{Y,©e¥Ú4$)Õ餢mÈ$¶!ÚȲ+±–JêÔjiš
©EÂä%<Ù…-h*$–‡ Kx² þc ›†ÒòraB�^ LV%<еH-›*¤¡N!—ðdK‰„‚À B¡´ŒÔJi*$ ,Eàƒ-°6Jõa±´’jËh¥´–—’
”eW¿ß�›ê �ûcÌÛj§Û·‹i„1nz|]»bqS#GgíèXÚÆi”e×óÇøíb튭+¶„JêdJ½¨ ²ìbÈO±M'‹$@ŠôɲË"S]€Ø.ç-g±­E¥T'MŠiåL©Õ¦ÂR"¡`ª¦€©TT(Lk�Vd° Õ:udÙ¥É`š”JÕBZáÀPi¥t²È` ›*”e»to±…”êÄÚ´(áɲ+]/¦ÙÈlªik±^P( [ØT-’¶}²ìÂÒ±‚†¢2y820YÙ•±¡4"2* ’…QDJVd ¤<ž“Š&#%dìiPYp4^ÖÃÒá”a�l8³À)ÉdDØ øD€€~ (Zf—·´à‡ED(¤�Ð'äã$¤Ñ$ÞÙ´Š…+‰w6™!�M’xg“v$Þ1(øH†‡MLˆÈ8PûD¼ '³«€t²,R²'+’""%ïl^ CÄöK±áÞÙ¨èïl4$(�Mà ðΆóÑí€Ò;€¶;¸$„“Ù¥ÞÙd†I$âTðÂáQ�"$"­ £å B#ÍBdŒ¨"¥”áÉ.‡‚Ø`xpÐl‡w6
­°™Œ’=4JªÞÙ@ ‡’r4¼³Ñ…’f„E”4¼³qå�ÂHó¡`¤ÎÔ*"Í®„ ”Œ‚ „HU>+…ö% Ù¥PÚTlH­¨¡X9HÐä„|#±+‰’¼gôÀ9' \êÄ$eQÒÀɃgÙ(
æ�<# (Q'U!ÂPÂ"2XbˆÁÄâ< ˜>/»@6D$ŸˆD ‰€^>ÙëŒ "LšÝ8h8y6T²÷Ð9܆*P6º-¨,8Ùo”ôeÃâäIÈtlx41a€é=-*%Œñ¶Á�NŽ�’›Ãˆ[�Š*°<h<¨´ÓÊ  2$<n Võp¡"ºàh\<$ Ëê!»T¤¤K˃{HyOL�¨4m ©L)†+ã`¯¼:ð`<+AQUÃJÅé§B”(,’U‰8©z‰Ð¯XV[œ`8ôæAä*Dª¹È®‰K,àT ˜qT”Â;…ME‚0•Dhf¡ãB@ 6ÓMJ8'ä" Qì¸�sRa”ÐàœÜP-'�…¥eÆ„¤%)b€§{Ta…E²FÊ"CpÂ10m0x˜3.=ïl|#šÈg™0„æƒñ˜Yœ„,>ž¡£A}´<»º@‹“. [2)©ÅÉ̃Š4KZ%�–�{-,™‹ÅÉš0¦dQØÄ‚¢%,I€„…“
,mb
'U+;[‚ÂI%€ÂI�DŠ&Ç…Ô¤”f·CAB8i’uh¡ìÁ¨'4ŸT<8©ád‹ÛœŒ’@Ag³éðΆY8,8L ƒƒà‘ÁÉF'7Œ’Še5Di8q ´‘EepÒdÀ
Ov=dpòãáÀº!âäKÉjF@ !ÁÀ”NBTò•4”(†G…¡€9…OgÓ�] ú‘pNkÁ#¥+2 —ƒ�V@K’–—É‚NvTTtÅ¡Ê01 mº"%FÞÁ±HÀT¬\0 &“L#È`bf!%]:­Õ‹ J+…‚²­¸h("((+#¬% x ÙBDR!šKÈJ�ˆ2‚bÒÙ¬j$¤b1Ê–��-#¤£ÊxaÉ XÉè¸|
XZ†HɆ’Qb’ÑÙ”Œ”„d¤>20(ÑJvµ´Šhd$„d’]ªÌÈÈ‚`5ó²/B ¶Ž
â ¢ð…ÒË–]"*[âJL"�. ðFa@Ãा, Ƴ*Ã;ɈBqá�b ˆ˜ØÚõIGN D\&·L‹“. �Mr\g$B7£„ÎF¡3¡{‘ÐÙhš“#ƒÑ‹†€ˆ\y +b€!`y°V\ˆ‡ƒ€Í¦ºèŒãZà4lÛGÛlÖ…ÄÉ�„ήìZølMv1H 0ô¶aLBÙURÀ£Ã3‚°á°ðÙ4
±‚�†æôɸ�8ùH(OÅbò<{@â„f;(Ð( ²+¡À‰‡´¼Æ‹Â¦¢-%“õ°D2ž àppD Øxéð‡–ìÊ®ìú`áäÁ &“°mÌÄ"cb�¦Ã Gh0Yò‘€Y¸ Á„œ+m0,� ¦â€£€áˆQÀ,‚sÚ „+m0ÙõàJL¹Ð`^‹„"¤íJëXx>X¬;„P6ª
•lptEB�”G’’ñ°�d(2sàò±Ê®ìÊ®ì:€xÈ®UÈÆÁÇà Ç%õÀqBŠÈ®ìÊ.6™À” C*`46V. ˜Ì.J�ò\ P%!ÕTKå
WtÕ€²Q‰– Gçmxt�)è‹ b?
ŸìÚh˜ �ñÛ–]Ù•±à°m ‚�Î(»v@vµxFíZÙ•]$­�è`¡%ÂÀB;<Rë@ E?% Íãá� Îv‘’Xˆ‚L³R‰H³‹€ ³4ˆD PÇD•±Þ�FR,ŸÏŠcðÒÙ D�L†"»NZÄÂÃFÅ�I¨eBÔ1è08lbvm°L0<(IË$4@€s �]+
*¤Z›]ÙuÁ:� 
±N- Çãò §ŒQÄHɧÓ]& /Œ¸D,<|HTYv‰öck‘ÐQyaL�|²Ë´QC'ˆ¡‚ÖÆyÀÈ ½€
JPPŽ�B²E0¬:R.NÞÈ3`…ôJU‚gÂ7 Ð…FÉó�«ÏEÄ€ˆMñ¡"<n ¼Œˆ³Kãå`E%0‹édjeÁa±TW,#šÅ `É‘Sf9&!NF ˜xt2–
fåm4¬¼�†ÍÊ€I$Â�H#—_Á¼pxX¶¨1d×6à£Ã³"rÚD°'ÃÑ qĤtBŠ@}x�`e�ÒØ4dhiÂlÙFª�ƒ�‡Í tú<¸„F"T²iÈpÀ(�6eá”TCÊg;Ùp “•†“ÒfWsŒDè–ÊV8..ä àa óÂá™x$@™ žì:q…H20 R ‘† t@‚am°4R@ êðdW… Á(Á$´‚ñN"0-“�DÅǃöÁJ÷ hÊâ`X:L*@L‚ó mæÂ•6šŒÈ3a2IÀ„µÁ<dD6˜‹Žf7@ #šÅ¨Ú€'N #�÷ŒN¢€ƒÉf׿ …‘/�@ AÃ;Þpivé…w6Ri(5€‚(± '5'=#Õ \xgƒ¡¢! Ÿ „(»”Â;
Ϭè˜<,'ŸÑÇw6
õHPŠMC‡DóNn2JSfÕ¡¸øpà‰†Þ,$œ\ äÄIpŸ”$Á<ì�*¤³ÙŒ6.)š‘w6­€v0j™xgã2-Nf:CË-Ä;ÒŠ!¤�Óá IÀŒ^6˜‰Ž&#r¡¡@0iÉÁ�
qvq¼† �„çá=.4»‘
@‹:©XpX ½ 8¡(çäY-NF–R„Av2àŒ†¨³qïl„ÂÓ :XY
5jy›ˆe•'³k31¡ÎãAPGp2J�–€Š5ÐÅÎA�ƒ”Ê‚�¤ ò:xâ�Í(äáÀ(.â� ´ØˆP«8xˆ@,Ê’X>$Íx AU4@RçÁÂITv2JWAᤄ€’ 1eV�‹@,GÃÁ*| �44¡ '£t(œÌ®g`JRBÊ wxg³a*N %M ˆ�Ëê)O‡gEñ+ŸÏg¡Áã¥g#„“$€(ŒÐ[ù¤hJ4È‚Fƒ~t#ÂI�+Ðl�Ku80H'Y&É*
‹ds#ƒ“®"ƒ“/
œLp‚n>±E%ÁÉ(×CÄÉìjµÄÞ¸ACÄIN…ˆ“›GÃÁ–(„D%›‘†àd”šQveÅCÉ ‰ u*6áAÀBI„",,d2¦Ì.’Lw8©Òé±úpà‘(<#��ˆ Ç9÷Iyg“0 )#ïlXXZfä#県’5â‚“Q&˜€@lH[áxHÃÁRИ„FZ
H*!1Ê„^²ЦdÀ
«BÕâ�­,ºÒ3¢‘RÀtP' ¦Ä€£€É`�†�¥³ÁL �2� /!RE‚Zˆ�°<œ4¤¼ÇåKëa­@,™]--ÒÒá!Å‚£áðPR‘Цä†1@RÉiÃ(H„X¡ÍH„0¨x…ˆmt°âÏ vƒÇÉA�;yÙ@©Ì”-.�ŒÅ&n>J"šìbX)ÈlCq1sñR›K�Ç
G+J;¨àH±dÕGÁÂ+ àl„<˜ ˆÍJ©ÁÓªð„D@-VCO*TCÃ@³ÙµzH±à€hØ0Ë„?`H¤ G°^¸R¡  –”*Ã;“V�YGGȃIY¼`€@
 `Ä–ÈJ(‚Ì' d,+"ŽŒ Å 2@2ŒŠÉÇCJ¼aŒL'…ƒÖn[k£9™�&/ÛGJ_6ÕkãDlÛ¦‘±8Éì:á“lñ†I¦€””$Æ
Ij<D2ó¡0 _J>ÕÊ�LYayäÇI¢##[p䊆ÂH•”–Š4¹�¨H…¨!ÊŠ“*” ŠP.(ˆHN�ˆˆT±œ:6Ù²Á `]: O�‡Y•`<z€1ØŒd˜�”ѱáÕ3! Åy8mt:N8*<!ëA°øð�£°àdB>­T³k´y,<ŒÄò°±% OJ&ºx'UîÄ"[5t^V^V<D8¼÷IQpŸ”ä|4¸ÌB
ˆd3É̈Bv=ˆd\F\F€  �L>š’4'+ý|h$âó9HÉUÈ*D"ê|€ dçƒÀÂÊ. KK­À˜òó10åç€5&$M“]   îd”Ÿ– QKÆ£¸4ópàÌÂ�Æ‚Á&[<Ñâ 8»&Z&2:aà
˜B&œD�ÉJЬHHHh�2¬…‡–&êlF£‘
«Ó�Tv¤rR²'«%{²/&‘i3 \�Ah€Ä2Èe«èsÐ! -ÕÂ&?Ìi@xÙ
˜ ³IÈh8Ø‚ yDDäÅÜA Ñ+™œ€.:#x(BéH¡M£8d4+¾ük=j0TŠÄ�‡�ˆW¡�‘�&Ñl|�B†R@4Bà³ÐÁŒ�Ö†Ãh s°¦ÐH(»2DÐÛœ¨:86 Ž �4`‚ñQPGÃÈ["¨‡ ‘jp`8<,!)!•‘–/!•'Ãíg‹0XQŽÈ€�‹dX#
2 )!Ÿ³Pôm&›ÉÆeD´¬0 )
.#@ Ø éÇeD4"úøø0 ‰8HɃ”ƒ”¼BDŸÏÅáAÐeaiÊÂÒ’…¥¥æd”š’F±¢È<C±¢Ðh,8l4(²÷p`
ŠçeB'Z&Ø%¼LèDK¦
˜'Z4™…ή‰„— uh5œŒr¤+RR¢€ ÄŽT˜3Ê\@ VA2NÉÀ8´^:-î“"2°d6�Lˆ‰PÐH„®B"J6 ‘�(Á(„D”@l�": �ÌD`A@ ™í%Ô’9ñŒ¬8HD‰Kªå¥DÓbùhF0j
$‚wPá0V>£4‹$¤K¶e£à"ã6œ¼l!šÎ.-.�ÜÐVXÐT2™PŽ‹-`E ˆ„4Á[ •°Qp'/›Á€€¸°�)k[y±‚Ýg”€™p¥ æ¡ÀJ¦£ÀJ&$NDÄ L {0% �”&»TXëÞÉØШ€„8Õ9Èxmt.8$%µð|,<T0H¸<h `Xò €¢aó«²øpÜ'%Y(¢MHH Å}RÒi@6Ï,tfa3 /%  ëš2a@S6š’«�Uˆ¨ó2¡ŸŒ …1¡Îå åD³Q}ˆTª�ìò1ø¼TxôÃ
yôÃÂÒ<:R¢Î†äåád”Ÿ4!iiBÒòÅ$»0 /.±€_&Ôa¢eb]b¿L¨…:L´L P¨ÃË*0kB\³Â"ÙÉj 2-’Í8HˆÈ8H8ÉŽ²‹Õiu6ÙÕrhiGBg£;RauZÛ‹R©†ƒ-ˆ,"Ó„C«³±T* ‘IÄ‚,+2m²+"…^@HQgâUBÈ*!$¢4±J‰PÉ®ˆ’ˆ„�Õg$"•’ .»2‚fBZ 2:™ ŒL‚�)3“— Ó€1 `˜^.Ô#A6“‘�D(#ÀãŒ`²‹`B…µ-¤h€’](–lcD’*!!½m+„+~á�bØxÐ Áضä�M$JLjJBƃ¥BIh`DÓ,(™ONde0XT �Mv¹ …æÃÒÙ`2L& ˜ � ¦Ãd’€á(ùHÀ Ø%`”�c¢0,� †£ÀJæ 62˜¬`÷°ÑÒrrà$Rˆ1 '›],"Ua|P”%CbÁшšýÐN<8¼ºX(!ƒ�ˆuŸ”t÷IIvŸÌ
Ä~B@B@ V?ä£á`?/³�’Ùµ™l&¢o&Ù•YHÉ�†ƒu™…„ÌBJf—€ªÅ)-H$g1@² ù€ºŒˆ:.##¢Î—Š’nD$=Hp9H¹²ˆÎŽ
H .ËPSè0F†q¡c} »uÝLר1õ©óå_�]_Ùu2¶®µ{S�vT,êæ¿è0.öâoFøÜéÞ£b_tS!\øøã«íúÞ?ÇøÌ YãæBß·ÛÐi¾ØÑa\Ù£ûîS¨Œ=„ðŸï?uî¹Ø¾‡B~èx[~�Ï·a:UçÕç÷ë²3.Œ¡¯¾çß§î=cʬ�7¹ÓÅÏÅÚŸ/|½íê2_ÂþçÉìüj÷ã„®é<2Ö1n\†žÑýËÅþår+wö»ÍÆú¡ê®¿\ìmG…í`6w³ÿsêêº:ÄôõeŒð÷9í\ìõùcØ•ßa;å\,êËŒ1fûƒî¿ ×Y]Ô\O…î𺨭߻ëÌÅtýAÏ\NètëŒ úªc1&|ýw«¾süåv£^¥5óÙù6ÃÎÔfø^·óUÝocQá*'?dçš
5Ó9º¸ß÷õwÝñó†é¼î¹±îØ0½W£Û�ŠýFùݺÈ�½çã{QûÅÝ…qaÔ×üŽðÝTŒ¡sþòÃÔÞ�Ñ%Œª¿Ý™y݃Q¯ì·—›ßwæ{t˜û‘ÛqŒ¿ª¿ðiï»|ÿŸû¿ïúýãÏ—ï!Œ©ºîÿßKítŸ5ß·?�ü^.kº:Í}½/nÔørì_|›Î¾…ÑÙéBÅ:¡¶FÇ«Îñe\çpsóéF…î-Ô«åÅ}ïý0ö†Ü1s¡?È2TÈcn|Møvsß)C}«Ÿ¶ë…ÝüôÓûݽB…Ð>]�&üVÝmý£³FáçÆ×øÑ)ü·ðõ‹f»þ�Éü¬2tï=ëÛ}�O¡Óç ;ák�ê¢ÿ§ò«ª²;�pcŒ sw¡Ó_½S5²{õy÷êCø¼ï½‹úÂ…îª2ìe†n¾÷Mý…ÏÓŸö:Uøû.o„ê8>»nj»7týÿ.ûï{uп};¡¯BuÜÿüòÓÍvp_cä¸úÚÕ=ý×
ß}¾Âì…ÎÛêb|ÝŸ²C×ñÁߎþÒy|ûºad}é.Æçìªÿ2=ºÏ�ù wŒÙ=ýŽý™¹éîà~û¾Oï|ÖôÖütè¢?ÿèþŸŸF��“ÛÁøŸ�Ùßê«k†ßc„oÝ>Èþn6ï»…�Ó¹ÕuCýŠÏú:ò?§ùZ°ø¾ÍoßF—Ð1øZ[»ý½ã÷4åªàïq¯ïg\NÇÞzUôs7„ßeä×ïç×ï•Ý'Ÿ»Ãÿèýê®Æç v|o\æèzÓŒü`÷Ëç|þëè¹êôáóºî–]õ-du¸¹nÛS“£óK_خʜþ\»+Æšüì¹±Uý=˜/FO—Ïû×_õo�ìX}{û¹�?׫û£§vŒüùTÛû=—ïz}°�ñY£køñc¾ußó÷²ÿ½èÊ]tèêúŒßÚ0B÷Ïõ*½mÖÍ|.º+ö>|¨/a;c˜ïùƒüN݃1c»÷v»SØî­Ý ·{¿çTæ¸nac‘7ßëî}çìŠé&»ç?çt°ÿWûÕÝ/·7÷‹:ýÆ4yáﯷËõÖèOUŸ•]¿Æ^fúf÷ªsõÏ2|»­ñês®b›
¿Õ£·;Ž Wÿ©Gã¾×;ú¿Œ¿Q7Õ½L�oÛŸ{�ázîrt¬ýé¿ûð±FW×~Ÿ½ñ=‡¬±Ûu7ÆÏ«Ïª�.™{ïªÇÍç´{~ܸÐ=küï}úØ=n æç÷Ç×è¸YÝ÷9o:åÆö1s„é¿.�û×üÜ#ÜþÐs]W<lŽ19õ�;ëÕ‚¹sôÜøù¢kmŒsaú{WÊõÁâk\‡£Çö~ï�üÖýcÅ<&3ôÏÈëÚƒqó_æsùX¯Ö¯“Ù¡;|.�1†ÌÙž0Ù±³bû~v»»»oÆâ:ÇŸ¿v¯7>äìæ„îù9oÔVm�Λ±_îWø�ÐAeÅâ÷ëw›1öe˜ÞùÐ¥Æd�U³7~f²nìÎøß ß÷ûü¸ï<®bý´!ìíWuï1öÍpÕóó]F~QŸ?˜W¶Ëª®ïÚ®Ÿ±ÈŸ‘£n»ÜnÿÎ}^Žn!wÜö|×�Ïu6ƽÊú.·ÛUfkCÇ î¯{ÚßúÜ.»±}þ²Ó_»ÏVÌ_Ìç„ï�uoÜÞ÷ç`dÅ T�ñy3?êªGç¨ïÔ§® ¦oÆÇìÛûNŸ{Îueè»ß÷ÝsÖ}îoY]6ëUzáó&L·ËÌñyÿñ;NVl_·>Oî��ÿ¥{7Æ×‘s:ø�EcòÛýtûÞýF09®{_Å¢G}þýVÙ÷c|}Þé¼÷—£;ŒÿBN}o÷½wU÷Ⱥ¯Cw¨Ì‰ANϧêª[íëìÿØ!|
_rôO×ý†ßñyt¼«˜6|uÈ :5c·~dw•cüŒ±õe|ûºŸÚÐ=^Åâæö‹þÜÜcl¸Î{s� ùÅ]VÏÕn÷]×;[W]Œ
Ý[c:þUŒú÷w¾ïOùÚï \}©Ì0Â÷ {Éz•:².»_VlÙ2\¸°9rþîKÇ�‹îýÑó¹ºO^]�FÖ«ó†ú˜{ó\Ʋ>§Úo=²¾çú1ö¼¯¹ßœŽŸŸUá'¿wîûè›îyjŒßÜ ù]ôÔŽá{ÊOݿԎ7c|è®?US;ÂÍmv SãûÇÔw÷bª¿×}O3¡ƒ©ú`ç¶»ƒªºŸ¿p3~t¾ªûðŸ:älǬ³=BݧêžU?*ïF¸úýðás�ÑÛu«b­ü±·_„úZ¿¡:çõéì]˜XL÷÷ßÛÙ1öóŸìWö\Na|‡�ÿ1»ßëÍøùÿÜG½>Ø‹¿²>O]^¸í §bÚ¯ýeo„¿9Æ÷vú©šüžÐE˜z•Xã§+³²cUÅ–!ÜöVUN}¨ÏÅUÅô¥Çæ�Ú¹ìÙÙu3ä¸�Œq>?~¸˜ö6?³¿s÷‹Oa¿n§¸ñiLæW±ßó|øâ{ÿ´ÛUø*ûsþ|•0ÿLÝnŽ�“³Ù»_B…o×e®b¯ ßC†á§{Qõ*aï9*ÌW/jüìŽBU¬™óá&oçû|~v
U±÷`«Ì_:ŒûœN_õjÁÆ…¹ kTç§ïÞU/›ˆ>8<®”«âiLþ}XôLŽºúþêïöÇøFß�B‡±÷ÝY#óÂÎtðÁ«´Ú±u×7ÙÅflõ[õÁ÷Ú÷7|‡ÝëŽ��3f|ªÛÇ¿»ù"„ ]>cïå—ï9Û)䫤ê»Ñ÷>3¿äu®sõ¸�»ûËLîè z?}Ù ÿ±Bÿý÷¯í¯_|ýý6¾c~í—±=êsÜð*5'û·¿ÿ;wˆñS÷nõÇÐAn,B¨Ýù¢rtÿ Æñ£Âto}®¹1æW?eèþáUÂb§æ{ózt¾�}C¸�yã²s1N^èÙšqÝkcÑ3®*÷Ðm„dUç\v~÷²î&CõȘïGÕç^„Ó‹åÁâ•rU¨v璘«ãä§¾þîêžÇ«ƒœïUă®a0Ž­¯£Foèâk 6?¸ï廆�½·šÑc7§S¯R|oý­ïówãèÝÌÜìîacüسa~¼J̧êïßkºøýpÿ=jjºËo,æ?˜QÝÛ)|L_„q¿]á;è�ýGØË/z§ÓçLØëºÑ¡ãîîü¨ áãèà6özê;LO÷ü1oöO~ÿ·nµ;òƒð_ŒŽ£¾ÜÜÎ|ûΟ1Ž“õŸ¿uë�õû¾Â×qÕEgì½ØÐ!'üèÜÿ*a®OWëçºnÆ4ò¿¦6lwüƒþò³6\—±Wß+|¨êô[föçî•1èþ²'\w
ÿ*ašÐaÿƒ�.&c�óõ³¾×ñ1o|Íew™ŒíÓNÕÝÞt0aÆ}ÿù¡Û…WIcÇí×øê"Cì;>}3•Ý‹‹ENM¨0f|nÄ`ûkôÜ÷Ø3&Ô}}Ñ%„WÆ«0£r箃ڂùòcV¸¾ë8[nøö}û¥ëKLY¬õzA¸4–@°¼<X^&ÙÅàÑÚ<&‰iÔ[À@ œV„Ë+U�iË\(XbéXbî‹ÁU,¾nÚ¤
S*ÂDõê €•²ðŽ·´8I’]ÙE‘]îã^±¬.0¡BúŒ.ÞÈ#âJ¶‘‡ŽÐi£³mÙÅz00e.g�BÂn–½³m> =bÎÉ(³k•s2Êäp8NçC!`¼MÈ®Là$`8�^¶LFã�NF™���p’�]šš aÀƒË®�FÃá°Ä&axá`�6$2Û@Bðp�]-6a‘¸ˆåX$€Hª X�a$BYT (QæäÉ …T"‡ÎÀ‡ÄÌŽ"
>›ˆS‚惵žÏFHå¬Ý6VņH»ðΆ³°éÊ8l²KáÂ;W²¹@hp˜ÈÏ*A…D硳Ê> Jq’ÊÍPxg³a`�#ïdœ‘+©s‰üÀRAäÄv
Œt³àšvÇr™ÌV‹AÆÀ‰U²aQeh:\F@Œ^‹óê[辬ýò�þbÌŸ²ÿûæŽýbô^øœÃÅœý¡Gèÿ9z„­pÕ×u?+³ºMŽÏÙ/£ë^lã.üþý~#cœ�›7áKv¿úº·½1]íîè2;üÏæ|×ìXÌ| »_?;øŠuú?ü百Ñm+];¾¹]>Æú½®CÝèë’õú¨.k·çcvÏ«ÌýïUctÏ‹½Ž¿‘Âuû‹µ.G˜
YÓqïÕ‚qú¿Â„¿.ßbp[WÝyïEÁ`LïߟëªKl!ôü~¯ÚqÙ%ÆÏ™.±}ú±!Ã�‘‹ùö]Ó!Ìl—G¨ûŸ#t‡.U¯öÖýcszö¦ºýÆþy“×½X|ÝáòBu ëß„u7>#'ìæ3¾‹O�ßCØú<s;:SÏ—]ßCÿa½œù½óëóu¸°µÕ½ñ¥þ¿c‘_Œé.×¹£w¾ø–ŸcWưû½ý×ð¯C†Üíx½¢z· ÿó¢jüØî±ÝöÃÞ‹›0f~ü¸ÏuctwìS…ÿ÷ÛÏø¡»}ïjÁ>öGV�¼Ïùk¬¡¿æÈ·]|^)×ökBøÜß»]Ç¢óBèª�{Ÿût ng¾ç|øØ×US#„/ß‹ü1êo*ôw¯s~0_ô¡»è�iv?ÿö_,¾«~ÜN÷º]ÝrcÑÛW“9r;ÝÏÖw•tcŒ�îXû?r2|/ß�gcÑ¡ë'ëS÷NßU�ù&t§ÙÏüø¹ýªÀúé;Œ1a¼>˜æLîß�{cÍcÌèñ­SvÌ_û¦óÛ×½áºËvÌzº†�1;äTèþï`{Ç„êblÌÓóutîŽÅŽß­Î×1�úüÚðß:øƒûôéw¿¿[w ²f¿çÛÝ¿_Ͱû¡Ç—Ï1ôëã?wûa› Õ÷ùÁ÷°õäe… _ºÇv·úÃÖw ßò{Õ—.>ÇØ]_¾øPÛÅø0o}eýlO§Ïãs­�qö{p]ºc»þ^|Î÷¯ì5¾çÎåu÷Ø1�Ï‘=ÿ_ºæ¿@ÃÇFígv×?ê.dçêUÙ9ooçGèqŸºÂ§¾ÊÜ.òKͨ®¶ïg»K‡¾Uß+tÍëP]£®ç{Ãöºœïå&ŒËî£~ô3c7lÞøñ=|è>çkjä�.î&»ÏÝ«"ò3Ô|_÷jñîoÏ\ý8ôä×�cî»Ø°õu|þ¼“#³wçCÝl~.5êkÞní�ù~£Â�.Ƹ0ŸûäoåÝåå÷ØÏ}rÃ÷ÏŶã¾óg\÷Ç
ßóç ÷Ót�œ »õÅ—ºÌÎæ¹ÓéfïÆå¸Ð­.öžGè^GØ/æƒÊì á¿tuQýáròs]÷v»³WŸ§÷‹úÒ¥:ü�ü<ß!gô¸žýzuÿA¸ü ÇõäUçÍd~Íó!ŒQ{—ã{öÅ:•£¾?U÷¾óƒÿ<Ýúbï�ÓãëF÷ÁÜ}˜.uá:nŽéê`3¯fì×ÿ^›?ÓmGMøî1f;È‹íƒïúÖŸ;\ýÔvÍû¯cÜŒ �ûåc…2|í�Ùõ=ϸìÜ×ßö;ö•á6»ÝÅ`BOßáwÔð_ú»CS¯”듹ýwÙaGå÷Ý ûu*{¾ý!lد­Ð™ùaîGÏ�œñyC… ݽ/Ö°£¿†ðá/³Bèö-W½Ùõ×=�Sßî¾gÍç «¾ü̸©ÐùÛÿ×�}_ÜÈU£~dvå÷îÛ�ì¦'L÷©í ¶ƒíðµò{tÛ‹íöƒÐ_Gì!Ôçž¹ÿîñbÑûßÂÜ9êã}é.y1˜ºÉùUáÛ·®w1w~¯ŸþöØêvdøà:s¯�»wŒîVsÛ»×iêb¬ùÿ�“³Ý+|0¶ªëØ™ÿÙÐÓ-»ëC˜ì`ö¾�úý2»£þ÷g¶cÕŞ·ÿâ‡Ð[9ýy>UUUö[—¯«�Ð]¯6'Ç~ÈëÏ%ëb0¾Fuþ\ßB×w½îÉÛ°cºÓ¸ ¿—c'w>÷ Õ7Õ#ìþßè`T¬=!ÜüT}
ߣË\ B]l}ù½^þ|‡Î¡C~ÊÍÌ.¾bÌ !|Fu뺘¦û÷»~Åâ³'?t†N_±§º1ù9º{­‹A}Ö�3îSíLŽ Yßr>×v;TVYõûßcøúñÿ~?o޽P9›ÝÙýSLõ¡ƒ«›ÉoõÝÁ§ØÛçgüÚu¿jïkŽ›°_;B]ǯØç:ä\Vu¯ÚþV7û¹÷úbìOç�÷AØþܵªû{c'L§P±—ùvuaܘÙñ3:Å⃑Ý9{O#oÂ�.Ÿ�¹—ݦf¾TeVèÞÓ×ÎSë�ð)§gC·ïAõVwlß{ûåï¿‹®ÇÈ}ÓŸ[ÕÌÇù—cëSf÷ªùùBL#|û®ÆN†1>×~
ݯîõéíÜu1û0êò{n[n+o»wÅà{¨0z¯»tMØê›üìö)¶Ûãû†ïžëî~Þû+ûF§o1Ïüè¬Êéï÷»øF÷tÝ:ÔÔøÝ›éÞ£B�ýïíKsÓ3ÝÓÜemö¨°ßcõfÇûï9á?y1�»¿.9s‡¼­©îîº=aä55v:ØÛž19ºæ\ìékv~lm¨ ãkÝsÇÇQõAýU~uÛ¹×>¯ÓŸ{ý¶ý%¿¾]ýõ˜Ùn=k¸Ïß{èúœúbÿVUùuküíÍf{1m�Ì0}±ým„ùúaÿ2«fºÓ—‹-ä}¾u1ö˜PÇí_…Êûë˜7{=²?¿Ûǹ £ë¨¿ìùº�ãs�óó1|�aº×‹5|]ÿs1VØüfÆuì‹iÆÏæþ5F^}±Çaº|×åçÿÛ×üW…ÎÎ_.„Ùü:~Lº¿~ýp;ŸŸ:õ\L¡®çf2|ÎßbÏa櫾ºï\ìµïÓèú-æñù:îÜ«So÷þ§¯®}Ÿ¿‡o]ÜŠý÷6¾Èzµ`ü"»Æ~}Ði/öÜnªGÈ ¡k¨0}]G…qÿ=#»Î]L™�ÆW…ϰŸ¦kÝ×¹¯®Žwµ™yÛ�òjo¦Bm羓ckçî{¹÷ÿ½ºÇû ôNgîv» 6ÜóÌÝw…P=¦³ãÖ×õ—êîƒ/r»S×}þÞaª>³êGOUW_ÃÔt�ºÿý0?ÓaÜ…ðãSw™ºžíÿïîSþ«:CøûúÍaüfã²nóÛT˜n[æ²7».+GæØÛýÓ݇ ÕÁ×e¸ÝùP3:‡¡+|›/_„Pjª;�꿼é¼ÝGÝÕ‡ÿ.£îUâ·é¡?^Ïe÷žî®Ç×ìýÎèð=vÇ­«=>§¬ 2ä·üÒíê2¿«3äçZuyýS]Æ\,¶³îû+³ft/Æõ~“ß·?&\^S76业êzucç>¨p;]¶îgf¶þãÏFmÖןùþ^Ý�æj{Ã×ýqÝî>˜úž:Èë0¶?¸ Óµ¯.~ô¸ì ï‹Ÿ°áëŒ.}ß¿ùÙ÷÷ö¾¨ýÏ5/ä˜þoŸëÝmØ®u»>Öfu››ÛüÞßÝC}ܪŸr;øtáûÝ̳u_¦»ºîïo²jtîºÍªîݽëBø.Ÿ.dqcjŒŽŸîrì]^Ÿ.ÿ¾Cn÷^·ä�™ùytšÌ1ûß×m7¶Ñ_³S}ð½?~öös#;Ý\¬ó_j{Ըι_v„°Fü.™ùu²«Ëν*0…ÿð;õe:_v…ÍíöæãWýOèþ5öÊ�Ûíçbo3asÃíuü�9\O~Ÿº~¹{ï?aBçȯŽ=Wûu£.t k˜Ýí"çbð!§‹°±¸»Ü¾ªï|s9#ÜݨÎ.5÷*­FfÖýÇŽ£²¾§ÝÿT½ÝÁ»_½ágŒ¾Þ�©®Ðãgk:�ÞÑa¾tþ"ÔþüØÑñk jÜíUÓéFŘ»›c§w;ØÊÛÎþ¼ŸƒËÿb„Ž•W_¦¿ãlìÅîøV¡º{�þ4a¶?…îz£bÛõ¹BWu2ö>ò2Œñ‹ð½M¸Où·ãzl�ÐEÎø4ÓÅgìÿy|í¯ÝÅŽÚñ_÷ëÂtÑ£bÝÿýÐí3ö²ýíC¸ïò£ú²*Œ [õÁv=ª;øûä3ªóȼ¿
û9ÔäŒnò+ëËn~øûõ±èší1_kì˜Êʬên5ãÇ16ÇÍtùüqC®ûéžÃýajÆíog[sóîÇøòÝgîUÒ×ûœó?uNõ…Üê‹p÷uÙ1ŒŠ9„›ïfd÷š¹ãf»ý£»ûFþ›ÍðÙ]¾¨ØÇøÔù½‡ù:º~~|v„ð½ý9=_osäø :+„Ð=¾;òsÊ‘75ê‹ïÛå2ö õÿÁT÷ƒ™ó¨’t¡X”å0ŽcJA†fˆÆ à (‘Iæòñ¶Æ]D(F<B(,‘‰òX0$9¢0Š£¤œbÌ¡3
C“�¸dv)1UµÜÈ䖬܅ùAص4CíòN׎²_÷J}µ®ºf'hy¶Ø=Å̱/‰Ç«÷?¯Ç‘È̘„¥>4”Å<'s¦v…íÚvó|à‚AÁ�Rd¢ÄD¯ë^m ˜�íÒ§‹Þ=ÝZ­Þ¨¢{À÷w;ÂvXhž‰ˆÖ^“M‹t ôÂYc±±ž)^NekÓá÷'F¡®¬™<ƒIf#ÞÃWãKô©JùG]xkŠ…ô‘…ñF�ÖÃèEPW”"d<º›¤èó$® `›Ûš¥RÚ&1ãá÷$cAѶ€Uâòº|A
9Ö–OýÀªG‘ðÖʲônbNŠÒQ3ªzJÜ�ŸÉ×F;ðIf=Æ$ÎÄY¸IÆWÔýN×s·a&»…°}D·¬ã}DÔî.m(/Uù�¯@·�à6klå6¤žÃ’<,ø¯À–íÄÓ�ª`(ä æø¢Ek—±‹�Ö¹²�…Â裿U/“›SнÓý§š+hwfbwé3P£l �¹´6žaQRÒõ÷?DÆ¡í-“‘þ&� %Áai¯IÏqÃB 7<j
ÎÑ9´>õ
L h悸àåTJTã)F9¾R/"(¨�ë똎Ÿ‚2g޶E5­JþS�q¤°ù|«.ÈÙ7UˆÓ>U|cuœ1mBA_¾Ë’.ùe]h]ÇŽ8"ï©þÀÎásÀQãË’�6K}SÕš×BÉl
ЦQEîómš¦Sbªri«”0‡ÕnïáóÙ^ bÆ>þ’ð�à$¿W--7õá–<bqwvIªƒÒ¾ßfºêÆkEMý‹A“DRÉCåRÈ1‚504mq>÷róé”í&w­KDþ|ˆ©ú@°¯‰ù`_Ó€$l +™(¶9õˆŠT7ðˬ.ý2ÛÊ!æáþ«öÖrE¦[:§]T¿ïæâ:^ÊÒý
ÓÑ-[Akÿ”¦Ð¸©¥èï2>]”ÝzcóúJàˆÞ‘×F‚êöhfcQìµ£Þ³žQ…Ä™¯¼ÐENVÜDÈVú=ïæ8Qìδ+E³�D°ñ4낪¢ŸUÁûYrzÔ„ËŠ=J!AK5(Rraé¾¥¬ûŸÇõ§c�Elâ³4M ˜“\cÞJ5±j€Ã±C?™Á*M®ÚW½Xni0 .O:cÿ @xŸk@ô¢YO¡ßur
ˆ(ËKY4¯Ô zaY¿W¸”–&æ¿< ��|{¡.Ά¾˜W}|AHîCÇÞcNÆ-Ðy
$œ”Â?£wN�h �TS >QÔë!=6ÏTSjIL£„W-òR£ÑF£ZŒÞ^xŸQ²¶ã”¾Ò�Ú®U@ {ÆÀ¨ÂY—5Xìa_øç™ƒ”ïùž�ãØwï�¦êìZÒD…ö~šÚÏÓ?Njs÷�;ûs¢fV%n
*ÚÐûéÜ2BrH˜—DѺ�hŠÓGƒá
çYþ4ä›7Ît¬ÞIB>¹lT¢SÁcå^UŒK„Ÿšú«àŠÒ«©ÅÚ¦^§^eòBÞyÆ¢¢‡ècýV:Ü™C„£žÎêÕLæÙ©›ÚYž%2©|eaŽÝBÙùŠá¯HÈ3%ÝÁ&%ÉüK#ì· CqR ¼ÖL-ýÀâΨIƒ#Z«Ý�GÞA€ÅÀ%¡‹ñçÀ*͹†Àq¤u lÔ¡}0“¸äÆüJŽxP4gSÏÃD‰ü_“Í÷…�¾"h¯è«bUÞ@æ÷jgy5£t¯¼Újô’ðÑó�ÔsÍࣘ{uð)©ôtw½•KB ¢âò"CY±*}ÎW”ì(Ðî¼ßšßWí€â¯ÆWÁé`Òj2£©¯¸%«ÑúWÁ.<MŸ$Æ_ö«fœ ü+©sžìÙ�ÔJPœ³ ïWßòO¥øª^fø½º­]°V
újÅ
…ºDÊ“­�˜eKI Ø8Fê�Ñž)ѵHÅ389ùÓøÙ#‹‹^j¹j�ExñÚX÷|h­—�s~¸ýNë3{€�÷×µAþlmëæ•Ej©‹¡Øú]:ÐÛ>‹ œ¨‹°#'»Ë©e?™�²&q¾h~`Ô�›_‹Ì%îhŠ—€»Æj'¼
ÚB³GjFõ׊£ãI…o¬ÂßQ
jÔ² �!Ó\Äñ8¿3Igk�¬bà=9Êm fuX ”N2=²Ït0è3¢l衱 à÷'xä�†–Vi;©¦Ï=µ§ÒRâ CW¬íåÍæ[UO>Jkw×ÓÙ�•Ù’û~'LÇ$�8OÝ«ÓS•'ê4�dê&€‚�ð=÷ž+(³^^Åñ# ?ßfÑX•WT¾¿ÕÄ_eŽü#¡H¦ÿÖ(|MÝý÷Ȳ+ÎÊŸmÞSôlÒôYé‘X| Ê€ž†ÿ+@'àõ´Lû¼>FÃ>U=·:j–&Ë1¨Z$2�™“6뎧xÇFUÿ=µ§HSÕ╊ªI¢Fä/>UG\r!Ûþ!`‹½¶°¢œCGý,È?^ê*tT©V$ ¸:Q�3Ú==ÂÀ.å;Ö;uRý¦3c¢V>rc’j(³v|©Ã¨RFÙ—›êuL*Ýô¨¼$p´Q—[ òZT®.ÎeØá~¹¨¬Âî×ÛàŽQ{­¹»#f{Ž¢´úWÔ mÍÁã0ë¨bM¾þ¿fm—›E<&ªNhæˆE?¢:TΩßêÝEÔÓ4“D«6ÔXb‡
„)ì7N²ÆÐ¹]œV:«Z� #zäK|JijÚÍ-D¾òÜhpàúº½atsúêY±NÛ-Þ4£"û‡jG�éß+|ÕngnåJ;äü3È2¥© 'ÖY?°8�TØ2µqKõb‚ î§äz/ö1^x—#ç¯40´»ÇSF¿ª6™Å¥"SNç½r|ô-•¨n›ø\¯Ä}¥mßpsó“Æø(æ'ìÑ�2þÛÒ@@CÚ›’·úº™šÒÃj;à3À?DX,p`³±§—ˆÙÒƒN²¤V¬8­¹”š­Šø~Ú~'¢‘òšÊâY ÿ55èáâ %ò(½A�Ñ.`w]²Sm“­»j¸'nM›×n:¼\Ùºeà@vY¿nÑ”W§¢Ú-ªGW¬.ªjÚhVÓý{‹�ܺ(ú$nJàO³œa„SëV kTüT�')XŠ»F®XÀç@¯¨w‰,;áŒ#?Rˆkì�† # 㙿ég³=hDY2“ó—úA�žëÑts¾G¶x*@ºîŒÐíò3CµC§˜Zgü˜%ª\Fp¥M™øšìyr”íp´c/CÞès4Öo翯1%ÿ¾ï°QŽkùh)d‹A—¨†X2²¯{ëpüNƒ´wïÀ’Lêø0øué*‘ó%7éš �™/Å`=Hí¬ëÂÞ�~èÃn½ÖYÌ�K‰úšßE­ÏH‹F8$
É„†„�õmB¶)� ]U¯J.×dÞœÆ
±3=¢Ð¬–“Žé~2¤—OlPŸ¡×ã±?`€¡Íîrþ÷c\2ˆçÚrzï4ç j�¶àCEbz1À‰QÐ3âX+PO—²6VzéÑ€¢÷¨ëSý~öŸ xÒÓÚ‚ƒÕVhtšÄ´oUĤcÿ= ”Ëxö¡Àâ?/Zò EÔËö¸C’`)ˆ'ÆoÌúo‘iCÍ÷ wyràtoÏ%>2åLòÕy&å÷¿CêéI(Ø…ÓÓ²ô�€.3»ÜöL�dvw×CݱN�¯%»#@.µá¼ ©î•Œy7¡„…ÊV¡�Äšú€ôXŸ­Bº^�x"šˆ@«S d 4�¤§@¦r(A ”eÐòDzM1‘|?“"Ť$±?#ù´é˜„ËÓûc‚gÖâ*¦èîÚ¬ä¾(<Øg·YàÖtLÁÅŠÉ=.˲,jc½þt2')¦ws|#ùŠ ý˜¬’/³øÔ{ ÀQL.9PWÿ¿_’DÅÎé§l¢$Š|‘—­íÒ¥§ù_*õm)±Ã:„}—–Ȭ||߱ïo+ÏÎ`¿rV‡+_wÃÊ Á¸2œ¨Œ¨”#öLèJ¹+•œ ì$êíÉpKM¤šPœºº¯�ˆ#P‰Ýß yVs•Ý�…Fþ›ÞC©ŒýäÐEû?nÁ†…PÐ0³¦ƒ4ÔayjôZá‰7†ÿgK:–°À×NvÆUÅ•ŠÔ”0qXF^F´˜(ÝOxe�0–£ýË;d–á L ҼݎXì™áÀ–sœðªPc܇Öì�ØP¸9†5ûDdRâZìñªhëˆtð æ?å\OBˆ.=1Öê¤"¼ Œ¹íþÆ€—G­‚¿œQµOñd�‚¿Å ¿úý ¼ó€Ð.óä{²ÊÔv<ZðO²Ï\/l7KïdÅVÑÈ<2�ð¿V»€Ô(ªx�p mIlcðãd7ûïÄø}ý\ÀøK !xz6ûéØð+³¥8‚+ÉÎYf+_(•~ïù—ŒWRœGsœPþ²Ïn´¬“
~Ä3øŠ9^ƒXpçæŠ‹F©Qík™ò#XÂg>[ºÀÛ»ŽÉ‹Ý½s#õ÷ˆ`‰4´{óê%n‰õŒ�ŒåG á#Òþ˜3ï•Wò½#Jì´«NRHô ûª&†p <ÙË*FB—wSZ­Ä0íF99‚5YzŠ亸©"»šö9óE^1i¾PÓ´³9'ª<¢ C¨$ËpyÌRÊòªýJÄ~—o»€Ã°œÂ"0×b秨 �öT>Hh…œ*æ:”Kàœ¬É6“£^˜¸t,×¼CgÚWJ‘ie¦„GÚ>=Çãý£j­~Âûã8Øê|Qù_ÇÕb¼¿YF.x9~NÛø¼¾]0™®®f‘˜*†ÔaŽÌ¨Õ¥ÒÜv1žô%h Q°a':�ZÐíº¤FÐAbm¦-ëg*"ÌóÀGÃOÉzmZ È#h¸ýN[?Ðî{ý”Ç@l×ÎÇá`u72Ößp7šmÔ<3œц[´ÀÓ£øº4ƒö·ê ‹¢U_³8t'šŽ=`�{¦�TÙ,¦6¤'rJ´7›BÄ6�ý»ðZQˆ¦@ubI‚¿�fžÔ+†Êqõ1a©ž­&á2sô²=ˆ±È'6ï§;#ŽÍ&ég>þß/²æú˜XÓYbK÷Í„wµñª_*„Òœ ú\。ΤŒWF{
“äé  �¶­Í��RðÁ-3où}¿ÞK·ÙÞܺ�‚ ŸÀTÛ#â˲›l@Ï �½U…"�dWYãþêž‚�Æ„$gù¼8EРžôÑo¶CcÛF:2£ôêm±ì\ÌîXFP›¿W$ØÜºà´9¿Z דl‹�V�J�{¤ö<íÅ�aA+þK˜I±ku8Bޯʽƒ¬ÛB�ndna|Øæ©>?üO2;ƒKVE1çªH‡Ež`ž�0 ûªjz†6dT;ÿÉò oôVæ7¢B¶ÚeÎ=½9(ƒL%þÕÓšåÎÕ”L7 amJ®+�êþä °p$s ÿè´w/ûZmÃS+Ïœ¯¯ÀÃ}‡P è½ m[¨•ô÷UñnmZ8�8ho؈‰^Ç`ã<!£mé1,ƒ�±l0"ØU~¦ªßB­åžÖ1xÊÊËn¥´½ì¼�MuÑÇ”¡b“&5ñ$Õ«Ô÷*ß…Ð- ˜—q ®!g"{m‘ÛL`‰XBOÛl6°¤ràµ?ˆõH†å/²Æ’Ø ³;å”8x JèåLþR†y(šþtžATL™f8o†^Z@®éÂJî8�—\Ecìu¯‰ŒªÆ< —ÅìTÆbÐõ*9‘€K¼I Œ<Tj|q”f“hä}&¤š-NðÙQ£L‹ÿ«ZIÏXZvñ‘ÜIÒ)a¹0:Ê®é�Ù®�Ò—ÈX©*ïXN©aw±p[ЏQ„º9
Ë: Ÿ.Ëï=íy á–XñX(�Pód˜Náâ *ߘ+3ã/ýu‚*ã×4h”g‚•3:*-@hãÄÉD"´� )å�£˜û·“åK2ÒsA©¶ÅØ�æ!ꔑ¿à�÷ˆÊÅÓï�C,ÓT•’ �a¤÷ ˆ ã8Ñ ™øÖ³e3Á.í3Ãg–íj*3Œ&_º"`sQTD?)¡¾áƒ÷
NðZA±ÉŽ«Q] ¦Z€9*#ñ}Ä—6‘ü­ÝÑ’jN&�5¬Ò)ÄÁÛ¾2O'Öý%¿&Ä…•¶õZü)5´)‹ŠÑ ½…AU‘ÓüéÊà©ð‹ì†ˆHnqÆÊ¥ÀfȾ
aýJ”r-Ì¢‡ÄH�‹Â.”¹Ò6:HŠ…½Z±!ÃK±—êTr‚YòFs«¾$¸xÉ‹.Fƒ‡Ö©Çù8Õ�Î÷PëÏzãäy\ÿxpO[Z,›òàn'WotEK£düŸúc±r¼”qXi-ýõ.Â[šãö!õ'9=rüæ÷puÆúþO)÷Èjä~Òmr>ú-Ï©ôdHåJZþ;›FIõÊVUQ¡á­‰—½™¹c˜aüÂæé¬p��6BÉÖec’XÌ$Žð!sY·ôëÕ]€ëÔÔ»é€NoqÊ=¾Ó³ÜlrNŠlÃ|Kõw#¡÷h֋ǽÂ?—o<Ë©ê9?ê*Aww�oyS,�yC€ß†ŸÇþþÓ]äOìÆ—î•3 .4ï(1 �Sîhéà ‹ùr| )ßý¨,‚³¦¿Iñ=3j¶†KbmFµBgîa|±pÁÓjú¥µ ŽÐöeøú"6*g
™?¨ôŽÌý±[‘Q¬Ì?“¼ªja®–A`OF±º`á^9¾TÙÅ–ÅsÑ^°Æ! b�ëÈ:8Š»Ùù)’n&’Šæç�5û â˜è’ÇþL|'\g‹«hw+›äê+3:ߢ:ݧþ#• ¦7ü"ŸvÕ÷_W�[„aÉ‘«à/±JkW!\íýêŽÆ�•’£è¤¼H*jú¹�ÇcÃÎ’iÒXY2{‚0{.%ÚDƒ)ˆ¯¯‡îà3Ä6áåŠð}b¾ø>~p†C£MB�Â_,÷×oçR±ü ¤­{±Q‹.š�%ç¿™‡Lï»2*
è!ê­‰I¨pïækn±X–%êÍ…º;U©]Î"('ºÎ+”Ý£‰Ò"‚Ž$š·€º ~k…uÉ+³a9C‡fHèÿ,`õ¤íƒ,tí VºúÆïØÜ -ïÞí¿Í¦¡È77sLl#
9~è™»§óá#[H1Ñ·dË¿ì{¸pæô»ZÞß<Nm-ä7_Á”ñD›ƒÜN9W‚¯ýÊH‚Üœlð®�ñDºEüœØ|Öùr¢tzŸ’]û.ËÓäZª÷¢1à‚¿{~-ú;q.W·Ù×
*€¯+Ð?u/lÑSLXÈ�#*—=Y:ì¬KȯHÖjFú�ÊØøòüUæßa¶&_
+˜Iœs`î¶ÇRÌÆ!1id@º“fˆê4Ü‘\ÃZ‰K³Ü ‘Àoñ¬jšf†õy@¼¤��_v€ð~·œý�M¬À~á9é)P G‚Áܾïô…�ä"”Ǫ¤cy"{߃÷ïi5õcÑÍãj×Ì,ÂÐg*£G=ß°£¤¶™©íÑ>ÂD¦x6KUÄ4xX±JPŒ¾§?½
ìZe¼ a–fL¦ãŒLÝ×+•Ÿp`ÛÛRú2ÛYq+ó>Çž€•.u{�ü À{G*_†üø~ÜÒ’J)]U¢µþM¬¡!ä†e…0ó�‰]Ò¶h¾YBÌ&( ³_<1Æ (#fÉLž3¹ÐªšB½;
ÓOȾI7wàr„æý�ÝçÀmHÛ`�È™ÿGe×2Ïwå|ä Fä�uF&®ܨÈLßÛÌÎf Ü9Ž/Àk6r•Š‹rXèÔÁcl8Å–SÉé�;øŸ»9‹&…wuT4Òiá§àsŽy¾±ãm ®�ƒ›oF&ëyºÈ¿Fß× ˆ–#/b¹e_¤„¡á•ƒo/€oKµ“ÓTݱ�Ë}P’ë
÷5’[ô@¯Œ±€–¾ÐVîl„.v{†/ñtÜC–|%¸V.ý›({7�_ß—b= ´btfqÅž§p7†u¬¹„t.`zŒë÷‚ñ~ àX§BPVvu›W™™Ò^[ ) ‰Û^¤,­ô–r¨ä!¢¸’ÿ B±êkôÌ�ôïÙcжÎåmú›¥+ÞL!Ì“#óÄ÷x”EåÍ{Üõ¹
©ð®`ràp� µýZj¼¦ì÷ âba²²ö0ð3L×Å5 …¹_l5üP<‰�Ó­éD<±þ|¢Äƒ¦=0r �ó0€ŽŸP<Ñ›Ðñ’A¼2�kôPÅ“›>¨0íÁáM½kî_ö4À& j`ý@EÑ9«'è\)žL¯@š93ZàZ«±ÑÒÆïA…4Æ~‚(¢ˆ9íÜíß¾6�ݺe4a{ëPªyNáSº'õŒØÇÙ‡ˆ5Zò¸›G-§¥H›§µ}k Ÿì¢Q¦¡8
î:*þ¡ðöV¬'O‡Rœáz-–ÛJg§»%YSè`Ö€Gð7PüZÔʇ#‘%£ P/Ç^�êÈÌ΋Z²˺-*­‡¹{V­z+PÍϰd0�-�?ŠŽù|5 Üžï›KN1qH×Ûz=ósZ\$îËÌC+øBfáñ D‡’R*“ÚÕÂ%B6Mú×(†‡�HÈ¡^QÆIç‡÷®G`UáI3ź“ $Ò¹�%I=n‚cÐpL"µŸn©–üçs™¤øèÊc:‹Ü"?ˆÍ¯x¥1²ÎÉÃob˜ôI�[Ü_î¨xJ�2sˆ…¯¸ò©¾cææÍÝ.`Ûý̜ۙOHjžÑóJ<QÅ!â ųøÝðKÉ}íó
h¬'«ñÄo]vCCK¤© «W¢ à8›ê hÖä§òÚÅ26Ôx"\îx<™fvEÕx b|·;ÈÇ“VM@ÿ�²Æ“Ýwí�ÝJð…aœÆS0 �©\}6'YW±])ý¤­Fh´}b®fŸâèå‰Ì¦ï§Þ2™µJ„(×%§NeËrèì¦×ÏÌÏS�ÈB\EdÏMq
ô~D{y“Fá 38™I߯oýq‰ÂGkqz{+HJï@³­4=)ð0¦Õ �9C¥ «¤ú´´ãÝç=ÈRu&Õ'cB¯aQ 3¼L»ß ŵԉÝìîÅfT‹“�– îŽ-ÄFµ´²†Ž÷E8Núó1³S®¨µ" Q©w/7þeW{zðSµ$óX^S£ïwÉNfˆM7ØÿívSl~ìm*—¡ @ºòÁ-ŒÔÅMžþ3¯n-�ÌSZÊKþ²k%Áiˆ’èÛîÅÁ[4" çK«ßÜ
ûDð§Áo;
9ÔÎq³ñ­\[Á±‰VQ‹.øñ.Gð¤$%Þ?×h#�¨ÌtòæSŸÊ”Œž{ýng‡›èeÎ
Òóñ-NBö\¬ÞÍ»[Ëþ¦…ŠÖÏühؾ&rU)å�8#yÒ/”tû±žNzÊÖÊæ÷�+wþªÑÏ-A¦¸–=Èå'0m]�¡ 6f*² ¬(î›�
ÙbMJáðl™�Ž*)(©Ü­ì�ÉÌ“IºÚ*ªÅH1¡þ&mëä઀Øl*ÍE÷× bÕè÷'jÄklà2`ïÙ ÃÖYªÎ݈Oð 8<ŒØ*”h4R š@¦ÐC ò/vœü¡• ÷†J+¯’ôW„YkdPÎi/è'�ëRy$V^K>I³I/Ã->bG1Ä×ûd.„ËŒs£$¬ îÔ66]`À€JM »Ï—ä~ýðø'§Âñ�gRMÏ=9¹%hc̽ L9¡Øò®Aú9_TÇ ëžêš4Ì\yw?ÍS—¯7ÂðˆL2mìQ38r¯îÕaÙŸýOÐ(C‚ž²@³5?ø@;cen2«´ið»~zÐuQE üë €‰Š«Y•ø·s …öôï7M¬ìlPs“÷ž"Õá_§@è#§Éªÿïâ_n6¨R¼qÑ¿ÀP ýe
þmn)ˆf–­×'ÍßÜ®ìFÅÛFöî/ý;2™fðožŸ³äè_Œ`:c…þM‰0\
­ŒRÇ¿ZÖÿ­ã£ê 3-„ô¯Ý›¯ ÒWÿ»DFHx3'Ø‹­A
\ç¹ÿº7pô/ ŒAig|äÜðo@ž¹ð&¿+Fÿ63e—ÿF!¢uÅQm\Æ€«�•³þVÖwÚ^ •,MÊ´ÿ^5æÈ"$?™›Ä ¦ &‘•³m¹½[È+u§¶À­PMî4W) ¥%:¶Eßi²€yøˆÿIY´[(´Ý®ž]©9Œ‰U3o¨ýWR?Óº@ˆk«É-ì–vÇ9IigW¬øßCˆy‚
®§ÃÂIph�ôKö5'5” iZÓ• àTÔÝ/$Å{¤/©T ¹›¿ýØ©Õê4]‰½4'±—+îNs/¤Ç�în˜xu©ø!X„³JQÜDÂOÅÌ—w!ÙX”Ö^åwx®jùy?!¢¯ËnÕ²àiB/ pþšým÷ëÏãï*ù
žY,wÙ¦¥Û'__qGæ‚ð&Y·Y`P˽—ߤää;–ŸÚ…e'-€Ù\ñ�ެÊã¯õÃY0ðeØ5Wk‘j* š=SQmÜ<iQˆgøm¹2ä'4Øn¸ŠÍƒz|(ˆ#ÿ|®�ðB“ë.ÌXà ¾šËתPk|+lš…EÀ:›â€ ™eœ…W¡×ëDéæI¾Ò  Cô£ôÀHsŸÌ·«×®ß†Û¡¾¹a¸ÍÏ´e­ÈUøËý+„ ×@ϧ&åñƒ¯á¢Ð—ž ’Cq%õ¥´88İB h|Ã4êÓ²–õÚO�º™Ž…zË&¦¦èI©‘-­‹ê¬ ]y_¬SŽd,Ò†zIkÎûk7™ õöˆ¼ÇN5¼"+õ¶HPÙ»¦h¥€Í-ššÔµF3#8Ø„x¤8ŠâCJÞ^Q^CÖ1WøØ§Ú縶� ÕÙÕ…ŽäLqZè�7S,$›¹l…q9(-Êd¢.!×̶�XS%¨oeÐnÓ‰í¼h.'ëþí�”ÌL—yX騡?HДÄZtª'«£¡©}fX½!otª‡¾‹ÖvËÐor§‘zOÀºr%r*ÎÏz @Å·ˆÌh2OýÔä·¦+Aí)NˆsZ‘cÆ­:ïCñIü+$°u¼ÆÔr1¦¸1”�Éy¬äÒó­±LŵÊïõ<›µ,r³r°ÇÜm)¯%ãQ3BíQû‰N©×O‚^mÁ‚o£í�Γ�ááé2õæ'Kþ5Ê·Ó›+„¼Ç.ý0ÿÐÙ00jO¸â©Ý›i½Üv>ß_вz1¢7¡«NpE ¿„bY¾÷0Ñià} ‘”žtó²<PxTƒsæ¿z¥žiUïÔAñ¸PødI¿z'ã£S§B¿Òšp_½¶øæU¯7ª'µÒª¯›îÔTL©z ¥ànÝû5®^!BèVBƒgvE‹G•š/YÚŠß«4çfzõ²KïûÌä«Þ‘shv‘#v"tõnÏŸ+¬CJdâßrÀ^m‚ž®zMÚØ×¯q¼]·Q¨’Üšƒr© ¹ša4."¹¸’üÐD8`U*ª�ÛôȈY©”ž|zšˆ—4
ôH,UÄ,´dLÔZ‰Ê¶<™Dkª‘”o¹/„ì$¡k™ùºz=†x;²±rv‹xÒ LV¯šhÀs�m±‡åiÀ„[�ÿÈMü]† êÒŒ²D§ˆ2ž§×©·³»—X‰¾Ý¤De=¶äEdHp¦Í+`j%¬_H™1_ÊYc5;½¡òkxéeì̘$@¼šg/Lèºgd¸~VAs2Ï-»à6Å—ŠFïÉE�r¼r,Éôå›ý¨vÝ ¨žÓ+iÎF3ãAúà ԛ˨²¬h�ɆJhÞìÿvÆfè-ß©ëש�áJ.=ŒÝå»÷;á OŽe^_V4NÝ7o–“QC¥ÆxxBýé¬ÑŠAÑ—ðžó�yu�·$“¹`IMA¶;™2zwµÆŠO�Ç+™Ap™©šo|wG„€/ÁIÈoÁõ.2ª´ÕX7ÖP3SY­ôcAijs ¢ò¯¬h•?h®OA~n¼›Làæ×¼»ûŒ¡dø�£°w·/Ü*Z¼ëÔ=K…�mOd‹»x7¬i¬µ‘\�|w�Ǹ‡ÆöUÞÿÚïnÌ¿+Ê%øQ õîÂÞ²ð%h-Þ}ytc³µjFÝÄ»’4dÌÊ»»é"5„&s¬[ÚÞ9Û$Vµê-³ Æþ%ÅÞ,h³8BdHêųÞÜû{ŽÉ-�’n=ƒpë·•²pø;ñjÑãнÃ.ð·6ùqP0öÏXo©‹¡ýé²}#_9I*³¹³-WN�µ�KV:³7HSœïg«™¸’µ&ïÞ’M¾¸ÑϺñ/!¸Ì¿\±ñËòs‰g­ÔåÅÌÕó0ÌáW’I2(‹ÎP‘!Cv“Z£È’Âô)/{赢ݰ¼8⤑;±€
®Hlõå„cqÚÛôÇx\1Yn[‚�Á‰Ïòɯõ°*H•Öñ^·Ï&ö]—©p9UÓ$tcÞ‘Ÿ`+¦ÔKØáSr¹Úµm�¡?O�b¶6{bx͑ܬQºI*^ËË1ÖC:AÁ7V´Þ“aà°ÿ7fûR7áTP@_ ÞláÎ.³Âìkµ‹(tÇ¢´(RIÓ;1Öñ‚æDTÿqÂ5¬ªþ}DÞhÈåÛï:xCÍè  ¢4 ˜€zoæø´¤±ža°SÚþ°k F-LY‡ã£w>ÏñR:Å춆.å–[IÆ=ÙÇ» “”pÇn
'52�ŒOíœ.qr­` Æ0Cûå`À.”ú• 4¦í´Sð@Öäzhvº r%ÄÛƒ [u"#ì…%¤îþ¨6Çënï$àÀØî×Ñ_ù¬ tä4ÜŠ)^–åÍ`z‡Þ±p©|y^ô¿Éý(é�Õ“ð†Š1‰i£÷Sª7~¡¿†D1û¢’ ÁF|™ÝEŬ%´àldªE·]Õ½ÝSEj:º4cÂ&»,«8º5§³Ýß�=ºV‹;“=<ºà}ŸÞ Yl}AÒfwŠ®xtß0e¬ð ›£Ë…—…®�¡wx¾Š2æ,±µŽ„ùÎá Pk·H×#æµ @^3v€’!Ë")FNl$5‹½§£^ “ô�±¼PŒ\±üK›÷Á”娤8CEŽâˆ{ ŠãÛ_GlàVþŠ´J…÷ùY(Â,¾6Û=ßZƒ½ó­gø=ù{œ²aã“QÜΫÙäÛ¼H¼Haœ×ÚPQÍD²Hº(H‰1Ì‹áüZÎ˨-î�UÞ3ÇȬë—M&¤.ôùòæ÷}Š-
ÁŒÍµzF\Î$…$a±–ËUß­*tf„Ê— íKyúl® ÂÁ£nYäfüi ©èÕ'Ò-%–©G‹£Ó¼æIÉ®—øÚ./jzÍéÔeÂÜßÈ¢!#·bó³<ŸÙÿ�8Û{`}ô9lw7Ùd¾·ç×i7¹ ܈ŠäL¸vä’ï§çö$‰Š¸Z¼‘FÉ&¬ýÃ[$c¤²UGñ–h�#þÅ=¥Ÿ%Øý¶j·D™¨é®Ïóˆ³ü�½»“ä|$\D»¶ý ž�ßCiX¢q™÷^_'©3P¨t2ÓÍüTlšpsLW~´¥]šá9� äÁt3ágc— )]}
QÿAÜ’r˜®ÿYä_é*”0Q2]-çk±�ø’®*Ó…ˆËÇÙe·Z1Èt«ëK:ÎtÏVM›ø„O¾ä\-ÌÌë{¸ÝMs=S”Â@9о2 Þ
â'=RÄ\:dÅêÊÈr°g¦2ªÄ÷pîÝ&JÝð×"¡î
6SZ%uºÂ�#® vï¼Ö_856XÄœa¬*Ã}Ïà&“Á—uå(Qpæ“…‹r{à}C×ÙDé.r*Ã7}Ïd£9o»Ú+fÀÔR­.`͉GJG:–>•¼"ði,¹¿&Ë Dã�a%#[ß›Ž):xÚ&A*î® r—¤,POp@l]ÚwJ}І†ò’¶"¤pNWcÈoz‰†«5Næ½�)M�Ù¿PBŸiŽã€ðšÄvAÂÌÿI]2×1æÕ“Gd„ �Cz�ÛTÌåÊ.·Œ‰»‚í] –�Èý­~Ö^¨¹ÆÂ1}Ô‰b ì1ñ*_ ç”a .,¹ …œ_Ìj7p§ÈL±…«3Ã<‡Ã?zës+B%�JW3Ø
¿ nÑ™–Àp¨øIóÚ§jƒ¨°ÇQÐÏê4ˆ^¤Ô ÅÈ%„ýÇ7AÆ­¿ÝLdqQ©ÂÆøö×ýaNÿ{rX(ý`¿Å»Lt¿“úËÔ8/Ùáϲ]Ê÷.Ïñê�;é’úv ± ›ø‹Š¶ñ5ä:qš&²‡POc±ÆÂ0^£Ìû>Ðt1(Md”).›9n>�Ü:^ï]ùþ°žÉIÏe�ˆ0—{ß‘´ûg×=½Äƒp—ØýO�‹³»`R)¤Œ¦j{òôUmRç‰$Ïu”ar”!“ô9d×)H•w,3¸EÿÙ¹Lc�ðЦ›) BÓš»LGÿH›-†q=ØT½�ÿ˜
¯·�¤™u‹¤™¸í´=®êÐr—?‘÷©ï;ÃøÆB7³fü´Õ7míé RþXfžäi1�—.o4¤7cd
‰!^`ÏV?ÚAºû=GS#ïâzÆs«+ÿPík蟪Kq©¡®LüCÒ2m½¥$cÇm\Þ}ÂV¯œ¨m<†Ø˜Î}Ø’Ö…ù­÷e߯ €/ï—gi6.®
¾M\<uG–U]ow‰å‹3H£¾Ò÷lMñ)o˜ÿiYdÂí`ôò·–�–ù´«ý¶_@IÇAc Û•=€G
Ø}÷×͈Xd£Ý€]Î~¨ìÃ/îÛXŽþÌ„êj‹ç»®�›ìª¹"×_ìˬÛ^2~ì;ŸüÕúCH±�áu®ïXXŸ})Ë'¼†øvöPáíÿ$ö§Û—ÿWdUJ<¾\Fk\W´›Ìµ¢Ú #¬²+]À‹Ö©P7‹Bii‹¡�Å_!í…Íòÿ¥„g‡j p5¨_"Q8% dK‚áÜ »ÏPÿ़GGŸNFNºãyN‘²‘ÆG8XS8UÙõ™ð5ú_#›å޽¦ ÐT®òE;¸áC¤ž€8ßš.ÑM\+_€ë°á?o줎Îò5ëõÝÔ$cšâ«¡*l4L¶¶A` /0y+FOx9¶«eÄõÛñ{'Û¯H™"€!*…”{6pj‡ê![14¶XTÌ´Ï�È>GÄÃ>I±pʨôÃÒ;¥Ã_ó9T/ý"Y=hš>¦§°‰dw í•_”kcë1‚c‹xID� Ö[Z"^¬/‰áãsÊŠñs–ëÉçÀrkÛÆ'ߊ/'~¡–iP‘.·ÑQÑ-Ï& g
&[ºÿËT&|¬ÂÇ{ÅÀ2ži:€MæŠÂmRPѨSù_‚'@2¾¬ ß”]ªh}P+jMŠó/­ew†tàÒ?÷Ù])˰Ü_ë\¯êÇ5Í»5Ù ›TÔÇ ŒÃ
^äPq¡Bæ¸1D“,|,ª´�èNI|³ ŸÕÊìR¼üz½F>®ï6Õe¡L«ñê~è›s¯[¹pņŠuaÉb©†±ƒó&OJ5­¿ ³]Tcð³®ïi~ÿà'&Ãä4z`ŠÇ”¡ã›ÓB�#+c-Ò7°«—÷‹nÀ�BèŸÁCÄ�;dždéKDˉ×öK’5rjF/›Çí9Þ½1Í\@#WÂO”â²|­VwH>À'š«]fâ$ŠhÞp®´¯öo¨�7¸<)%õ³z¾û`†hµ}ªT)ä… ÞðéÓ“ßÝji¸ˆÖ.ìæT‰p<cëètŽ÷þš]=ª)Ž)Ú÷~ÞÈÞZ;ú• 08›×õs\q÷I˜#ͶYÉ%0yåÿ&×%ƒ™uŸd…ãö¤ú­F)"ÞÒwòRѼa&©U7½ÅN{Ãf¸"˜_ b÷'N#ŒèN
).¼—Å1wä_Ž™×ÃWÖý «–êõêi‰Z1âõ×ý˜uöûFœ0ƒsr8”eÔˆ´'¯n¦‘=ƒNóôw ñ“1�ÌbI²pXfaVaDHW#�YMAë½õÚ†oåÞsI pk¹È4ÿzGh?#Otý§ ó�ùêÒ†®V%#o`ó ^
Xßy®ßN¨Ec~tHÊþ ô¹áFšQåºa«ø)g[@!ñPnÍ»&[Ù´ûïZI@ÖËÒvÃDAnÜzXÔ¶ˆo’—Z¢/V,ù¥õ°"âqƒÊ"F:Æ<là”èÑ¢3”PÀÛµÉʇŒ&œ¸ÐÉâ —‘� 3?]ª½þáÊ€q¡Ùûw­ù%Lš�øOàHôË%ì±�ŒÑ"ðó¼Bƒ õÔ¼‚Ðÿ²„¤de2\?á€B*³\OÏ4)HYî[næL©–JsóÆÒ¼€F¶±–™Êܹ¥µW/‚V«FÄþæ.& Ô=B–�ݵxmóPP©U«™¬Múå°�­škFÛ%I\ø,£?‡eGTv!æø<Ù Þ�Óñy¾…ÀœÐá\Y§¼b„÷ë»�2QGºÊi5�[Õx©‡å×Ö±‹NѦåþ6Û�¨�ªQ 7 `f<`(ýû>’åp
¯´7¦«ö�Yíë÷R£ 7
ÞæŒOÊœT5}/lÍ’a�å£ÕuŒñ SmGwͱNðÇ`رp33x¿·¸´´ýí/Ýk-³+먡$½æ°÷JVëSíîÛ/º®—&©±½â
·“'936Ê(müu ÓHäÐŒ.Íñø Iª�Óßmé¯%¾VK'ª§ZBgà‰ƒ„oö»½w!}+ÔFÖÒ%O^>ü<(X�x½|&œã9sBæ»üeBÄ�l#7Ë€Ÿtwä2Q
q‘OeåFNú’Ý—Ú_ahýÉ&pÝ
Ñ8ô¹hÝe÷ *ÜÃCûf�‡sx™Ö�ÊÞQÔåðÆ•‡bŒÍœèl‚€“ÿR˜6g-öJ©Ø ÿ
æúèñ–ò¶Ï*ªÑr™žèpæ ÉlMðM>&¶Ì9¥õOš åøé›cðb–d�X"Y¯!Z¨K‡É0t ¾‚V»wXH´ÚNDÎØ¾í#.¦Cyº\S¸vÆvL^ÁŠé*£ó~{³>ÜM1õ2@fî øÌòÐ*ÑøôEžm¹‰`õ¹ÍúI?ßws·ÚŠ0®‘ 6mî¢9QëBØp"à}‡¼‡AÕ—73œãIäÛW†•Ç[_;ó½³×ƒŒé7žº("s.ÖÖx·Gõ6`ˆð™YeÇh¥@gÕ¥.ÿ’"ZÛxÄ¢2µ|…”=õ‘Ü`a¬ÃQ@S‘–eCw¡ô~B2½—þ�_ôb¯ÔPêa¡-|²ÜÔ]¬‰‘ˆ/1ïi#õ{Ö;ÀÝ� *åü2ì†t�"9szè}¼|ÈÝnçðÒ¿~JÇ
:>9†œ¤Iöå�? Zc‚DŽÛ7zgÁ5ÊÝDVâ³M*#Å2bÈoHJ–âr Ê /^´ú?Z•ô™Åax¯ae™L¦†&ù°¦JèŒ5‘›È,°hÓƒ·ÉYí 9>Å|Òäd åÛ7æÊ“çV^ ³®¦–ŽU¾ä>ত/Þ:žà³¯ÿ�›UŽ�%æµe-îdÙ¾2ÖTãÅ) ý3êv§·¶Þ©ãÃÅ´v⯓luzc¼L&x0Üaø9™Ûd¨Àö‰z¿¯óoÙ3üœÕÍ}oƒà ÓA›•a
Q<ž")ÐÉÝ1ÈœZ·oí�ò¼�dpHÄ “10�¸¼—?:ßdzn²9$\­ƒ¶´mu¼Z%£Y)rpý(ÞØ0EÍÍë„ Û§¸Ÿ‰:{ è�/9dÉRõ2•~ʦ0¿]²X˜2;T³Õ«É7¶7œ£Ã„,BX…;þ<vº,ǯ`¥èt€·Ðx£km}cÀ£�À
eÍ«€ýaÓ~� ¾�Ç€ï!çÖ7šUº|üåÖ×âlQ Í� 8¦<8(8×`|{)#NA¨øb$ ÖüÐò÷¸Kߥ`7ø‡&ZÓ›QÃäiDš�Çl?Æ5´â¯øbĤÓ7dªŽ ëÙÈËNNª1òœvœðG¾ßT]wõ‡x39e«ECxa%×Ä
�¢-[=� åÿ”’ÕöFDåºO?5a™mŸ­|.ùvc¶xàN(²U$ã|±'ÌÔåÂHðŸMVÆè¿Ò¯žF«ä€Ù�èUozº¿n�¾º!4¢ü-Þ¹¡œyo¡‹~!’7½HIc&ŸÂÊZlúÀ¹
µ#”í¢®9Èæöy ®;£ot3ƒÊpOÆ¢éE¸0JüU)‡ÓQ;œ±¤š%X]8UǬ&zÿøÞ?w õo¦P—Ãp¶
H°ö-ú_:±�+MOð 3Ū/�~w–ob8AôÇÝ^÷ÁøïHL•þ?YKÚë[¦éîHÊ@&J„øMeDóéTJ àÎÒd’åy‚ê0“öóÉ0:¸´Š£).)ÿ§§núLÑdÁ*d#$—Ë~ëA{°ÄUp½3µ0Œid÷6‚*d?@d¸Keho-Í`J5ÒÑe»�p)ʱí§ƒ"­UN¹óùNV[ÓKÙ%i^Ãn�MßnêÛŽZB�Å©K0a^™¸ù�J¨sõ–�~Ê¢dʦ¥vÏÃk° §P-í[u2ãkYs¼P2~îxIÃbA8¾°F£ýŸò}üµŸ�²Ê9™² ?KM*$Ó¦,
Ù]Ú_=´�U@§DHÖõaø}Zü@â8™óÓéhÙ!\פ`Ƶê++PÔà(Mt<˜�Næ,[„ aY&-Iü%î§p«ç ¯¾@zÛ}Pì¤Å–Ä9“ÏÒ÷‰ãÞP�QQ¾Å|ê*A<ÀäS™òíhcWÍ
¬8Õªw�˜¢%}ž£aÿü7ï8l1¤}qI�ÙÝq¦hΩõ«ŒÊ›ñÛ
Ä|]L' :3’Œ¥7àLCíCdÚd kÍ]Æ ‘ ¾¨ßo5žÞ3;=¢L!Zí×|©Ñç–†ùÅaO©lÍÒ¬�Ì2€Á¤ÁÛ¹±œy%Ï$¶1O68•ú¡ë,æõÊ·y€C½ˆo—ñ'ÙA£õÁþ¶ç¹„4fsB&°µ�@ÂИ!xÓü˜ˆ=û‹÷‚{Þ<ƒ‰4Ê‘/Ý´h·m®+˜ ¨QN6œ¼`v¢E¼aëŸ4£J6qQKqÈM Â]ãÈxÜäLO… o‚Õ.¾m=Ú‘Žê$zÙt·o逩º'‡°’êGÔrþ0,_åfyž›œ¸èEñà„"ÀÔnHâx†&¥K6ï˵W ï_꜋6M3ýi_Ç/S`n+ã%…ƒ¼LÝF5�§“¤×~}�Œ�âa±Å’˜:U¤r“Á,bþ1Wn„,-m×|÷ù—Kr­å‰œ
n×1ø÷X ŽDÕŒU6é©ùaô´3ÙVƒ‚sã…‚K¡2#ç±ÅaÖ¨zúH�û.½�vø„’P¡ ›Ìª8÷G9Ò†Bl •+5:½ð9`ŒY¨WŠÁ:}!u K4ØEÇ—¸�k �>sRl,NÖ\POyhó"YÐÀÙRi"ØÏ¬ÑXðz94O”’Å‹-eËŽ�€•^û_ãJoõ1 “ó
x6zOÈLë+k€é"賈Ͳ(n܉€ !õ 3rhœôÁ/-lcªU´š*Ɀßp˵·þ0Å¿�”¦^—®©TwYd�z{³£¾ŠºÏï“ÍJ“¼jZ Båÿ%÷æ¡ò¼â©¢ûëK¹—ë�UûÌâhŽit«æÝÞ–t-‹7)�:”º˜)æÕ{ºìµï)ÞkxbÀ~¤æó«}�‘·Íõ(ä†�Q* mÖ< ÒꌶùP™‹—‚o�q"<¤4/D ¬BþþºU)¹=Ú[R�Ó_:1z»@òqó@š”–­äFKr$æ9ɺ^6@-˜¦x¶J,q =µ8¦¼{ÍiÍ[™xŠ£ë‚›7 Ëd®*TáæÔf=‹[Þ‚¿Pƒn³\Q1ŒæŽ³À$öM†€²"¡2؉ò—Á(xu>ôìÚÛ¹_—‚çÓ?Xœ NÕ?ñõºÙCÒþ½\GûPe Fä6FÙ‚FʈšôÌëÏ…9åþ^Ðh•XQ]hÜÇÓ"NË1;D°êÜú qÓa*[eß@]…ü{bL@KûJ"è¸Y«©yB±ïJ‹!›;øP?šTedÅ@+'ÐáH÷sòSN§jjYÄò³™ HsÊ ‰cߌxÄô„£
¾Á
í~öãBý]luú4Àð~�Ü0›u™h#)Î}R·VL0d¶@¥Ï„°ÈR[‚ *Gø%Òw âQ´Y*››¸dĪ'�…·}‚¦²«úóø{›È}ëd£$NÍrˆ%!R|K3jÍšÐ-`ÛÏGÎ iܾ?umL�ð†ú” î¹wIµ„à•ϸ˜` Þq�8{"p£¸ƒo‰"õ¸±­ ÉuÞ ÕÌA·ÙŒ3"’'~¤Ä&ûÁü˜~`Ú^ˆ`¡X‡r20É�ä/A!úˆóÐÇñüÍÿN@ì ç~}>>É9ðþ·�êl‹ú¥ i®† B´á„;�WÀëâ½hô¯µ+øÕÀ�£h"S·¬­Æ2J‹êð¾ÚÆôe…¡+ØŒ›nK«Õœ‰üõÇ -—æ¿?àÿMÎ-ö„FX?$rBÊUn „÷h‚{u£-Ĩ.'Œ&µk %§@Œö(SÈD ó8™§æ{íóNpdn,JôVµòbÎeX†�—õáK²€Ê¡e‘ã–üóÓðæäŒ²æ%YXƒ³‚W{wZé�J£»$t¢¸y_R!”â+š}no EÀE8…MVÚ£�¨jÁ×ÿ•ߢû¶�KöÈ2ÃEÇŒQ¨¶b*‚¹Oô�æ¡ùù�—@uçhÛ/úÖò©÷ÀŸM?¹°U/9t¦�z2#«w8$|ðQ�Ï\qc q{aÀú¥8r½y+*•Z£eà�¶¿W`sƒ#{x4É|¼{gè¨8ÍS÷Åôúð½s/Ä9;¡äb´p§EðTþÄuÎv¨kr²áŒ�é\×ñ£Y+½þÇô9ܳ¦!c«¨yK�§vª<•ÊêðœDT£w?ÒÿER<T9i°EZ`ÓhÜOБžÚðRÃKš¢#àdá¥t¼)MذvÖ9› =ŒÉEvîæ‡†QaR¤¤Âuzå¯yÖ©‘wƒ(êH{)Ù é\«•¹Ž·£ÌeÆ. ìdljÑ_Qåa¤HüT&ø‡ÞmÍß»wÁ;�( ÿv’Lµ%Èá¶Ž$6ÅÌ"ºÌN6�Ò„@èÛ$"ƒeäEAÊ$,…¼Ù^£�˜}%ZkÙj6³ïå€þâCÑV.sAËÈÿÒêU-XïÍffžð¬Õ7cTOPO�÷ó¿cýâÛo·ù47_2äÌö?ò·cèÔìg¸ï_t599¾{³{ÌlÕw‡ï=v›Ñ#¿ßVÇÌØ¾Ç÷Ïq\¬Ÿ²+„Ï¡»[¨™ÙÊ»ºÝñ}±×ü†¯ñEÙ÷7Ó÷õßÓ�‘a¿öww›|}°¨êB•±£z¾¦Ç×]…«>cïï9¶ƒîX„_Œ0áÃÞÓ¿ç»>Øë¸/þKõwý{µ`«Ð¿ò‹6låvÛ{¥\þ8÷­~FNŒy¿¡>‹š 9ræS×}ÿø dwÙ;~n²{�ñáBw�ñáîË¿]Ý]6·3üW#"˲ìÒTH+¨VX˜¶©Z,mSÁ4ÒJk‘0MKåÚ4Ô‰´u((Tt¦{f웡fºô}Ñ¿c{lw뙹 [WÕm7;t¼Ïûaîò‹ìïçKvøxÝ;c‘—< !
„£�È Gƒ˜®"øOâ$'-@é¾0ÛHñt® ^W´Ã$9’Si¼HÕºvftsɾÈtìÜÃ5ûUè‹oµX¨ â0Qž`&4.^í€TÒÓ
m¡¥ ’ŸŸ¬UsXnîp¥ÓŽ¢Ù@½�çÆ¡rÃ`í†_|  cD£^Ü÷Ví´[ l?Þá±h…´Ö?C^;Ä3¸µ�RÊøŸZ
I|Æ~1éi¤H¤%·ÀËms2 endstream endobj 8 0 obj <</Intent 16 0 R/Name(Layer 1)/Type/OCG/Usage 17 0 R>> endobj 16 0 obj [/View/Design] endobj 17 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 26.0)/Subtype/Artwork>>>> endobj 23 0 obj [22 0 R] endobj 35 0 obj <</CreationDate(D:20181229214738Z)/Creator(Chromium)/ModDate(D:20220226201114-08'00')/Producer(Skia/PDF m64)>> endobj xref
0 36
0000000001 65535 f
0000000002 00000 f
0000000006 00000 f
0000000016 00000 n
0000008344 00000 n
0000008395 00000 n
0000000000 00000 f
0000000159 00000 n
0000049269 00000 n
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000049339 00000 n
0000049370 00000 n
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000000000 00000 f
0000013251 00000 n
0000049455 00000 n
0000008757 00000 n
0000013551 00000 n
0000013438 00000 n
0000012367 00000 n
0000012690 00000 n
0000012738 00000 n
0000013322 00000 n
0000013353 00000 n
0000013625 00000 n
0000013769 00000 n
0000015264 00000 n
0000049480 00000 n
trailer <</Size 36/Root 3 0 R/Info 35 0 R/ID[<0637B01B244A4B52B4C4B4C4E2A49950><5DCE82ED017C4F1688E44790ACB41DBA>]>> startxref 49607 %%EOF
Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 3212.8 1212.8" style="enable-background:new 0 0 3212.8 1212.8;" xml:space="preserve">
<style type="text/css">
.st0{fill:#17541F;}
</style>
<path d="M1180.9,847.9v-20.6c-18,20-43.1,30.1-75.4,30.1c-22.4,0-42.8-5.8-61-17.5c-18.3-11.7-32.5-27.8-42.9-48.3
c-10.3-20.5-15.5-43.3-15.5-68.4c0-25.1,5.2-48,15.5-68.5s24.6-36.6,42.9-48.3s38.6-17.5,61-17.5c32.3,0,57.5,10,75.4,30.1v-20.6
h85.3V848L1180.9,847.9L1180.9,847.9z M1184.4,723.1c0-17.4-5.2-31.9-15.5-43.8c-10.3-11.8-23.9-17.7-40.6-17.7
c-16.8,0-30.2,5.9-40.4,17.7c-10.2,11.8-15.3,26.4-15.3,43.8c0,17.4,5.1,31.9,15.3,43.8c10.2,11.8,23.6,17.7,40.4,17.7
s30.3-5.9,40.6-17.7C1179.3,755.1,1184.4,740.5,1184.4,723.1z"/>
<path d="M1543.1,606.4c18.3,11.7,32.5,27.8,42.9,48.3c10.3,20.5,15.5,43.3,15.5,68.5c0,25.1-5.2,48-15.5,68.4
c-10.3,20.5-24.6,36.6-42.9,48.3s-38.6,17.5-61,17.5c-32.3,0-57.5-10-75.4-30.1v165.6h-85.3V598.4h85.3V619
c18-20,43.1-30.1,75.4-30.1C1504.5,588.9,1524.8,594.8,1543.1,606.4z M1514.8,723.1c0-17.4-5.1-31.9-15.3-43.8
c-10.2-11.8-23.6-17.7-40.4-17.7s-30.2,5.9-40.4,17.7c-10.2,11.8-15.3,26.4-15.3,43.8c0,17.4,5.1,31.9,15.3,43.8
c10.2,11.8,23.6,17.7,40.4,17.7s30.2-5.9,40.4-17.7C1509.7,755.1,1514.8,740.5,1514.8,723.1z"/>
<path d="M1838.9,763.5l53,49.4c-28.1,29.6-66.7,44.4-115.8,44.4c-28.1,0-53-5.8-74.5-17.5s-38.2-27.7-49.8-48
c-11.7-20.3-17.7-43.2-18-68.7c0-24.8,5.9-47.5,17.7-68c11.8-20.5,28.1-36.7,48.7-48.5s43.5-17.7,68.7-17.7
c24.8,0,47.6,6.1,68.2,18.2c20.6,12.1,37,29.5,49.1,52.3c12.1,22.7,18.2,49.1,18.2,79l-0.4,11.7h-181.8
c3.6,11.4,10.5,20.7,20.9,28.1c10.3,7.3,21.3,11,33,11c14.4,0,26.3-2.2,35.7-6.5C1821.1,778.3,1830.2,771.9,1838.9,763.5z
M1722.2,694.4h92.9c-2.1-12.3-7.5-22.1-16.2-29.4c-8.7-7.3-18.7-11-30.1-11s-21.5,3.7-30.3,11S1724.3,682.1,1722.2,694.4z"/>
<path d="M2034.1,626.6c7.8-10.8,17.2-19,28.3-24.7s22-8.5,32.8-8.5c11.4,0,20,1.6,26,4.9l-10.8,72.7c-8.4-2.1-15.7-3.1-22-3.1
c-17.1,0-30.4,4.3-39.9,12.8c-9.6,8.5-14.4,24.2-14.4,46.9v120.3h-85.3V598.4h85.3V626.6L2034.1,626.6z"/>
<path d="M2238.3,466.4v381.5H2153V466.4H2238.3z"/>
<path d="M2486.1,763.5l53,49.4c-28.1,29.6-66.7,44.4-115.8,44.4c-28.1,0-53-5.8-74.5-17.5s-38.2-27.7-49.8-48
c-11.7-20.3-17.7-43.2-18-68.7c0-24.8,5.9-47.5,17.7-68s28.1-36.7,48.7-48.5c20.6-11.8,43.5-17.7,68.7-17.7
c24.8,0,47.6,6.1,68.2,18.2c20.6,12.1,37,29.5,49.1,52.3c12.1,22.7,18.2,49.1,18.2,79l-0.4,11.7h-181.8
c3.6,11.4,10.5,20.7,20.9,28.1c10.3,7.3,21.3,11,33,11c14.4,0,26.3-2.2,35.7-6.5C2468.4,778.3,2477.4,771.9,2486.1,763.5z
M2369.4,694.4h92.9c-2.1-12.3-7.5-22.1-16.2-29.4c-8.7-7.3-18.7-11-30.1-11s-21.5,3.7-30.3,11
C2377,672.3,2371.5,682.1,2369.4,694.4z"/>
<path d="M2691.2,654.5c-9.9,0-17.1,1.1-21.5,3.4c-4.5,2.2-6.7,5.9-6.7,11s3.4,8.8,10.3,11.2c6.9,2.4,18,4.9,33.2,7.6
c20,3,37,6.7,50.9,11.2s26,12.1,36.1,22.9c10.2,10.8,15.3,25.9,15.3,45.3c0,29.9-10.9,52.4-32.8,67.6
c-21.8,15.1-50.3,22.7-85.3,22.7c-25.7,0-49.5-3.7-71.4-11c-21.8-7.3-37.4-14.7-46.7-22.2l33.7-60.6c10.2,9,23.4,15.8,39.7,20.4
c16.3,4.6,31.3,7,45.1,7c19.7,0,29.6-5.2,29.6-15.7c0-5.4-3.3-9.4-9.9-11.9c-6.6-2.5-17.2-5.2-31.9-7.9c-18.9-3.3-34.9-7.2-48-11.7
c-13.2-4.5-24.6-12.2-34.3-23.1c-9.7-10.9-14.6-26-14.6-45.1c0-27.2,9.7-48.5,29-63.7c19.3-15.3,46-22.9,80.1-22.9
c23.3,0,44.4,3.6,63.3,10.8c18.9,7.2,34,14.5,45.3,22l-32.8,58.8c-10.8-7.5-23.2-13.7-37.3-18.6
C2715.8,656.9,2702.9,654.5,2691.2,654.5z"/>
<path d="M2942.6,654.5c-9.9,0-17.1,1.1-21.5,3.4c-4.5,2.2-6.7,5.9-6.7,11s3.4,8.8,10.3,11.2c6.9,2.4,18,4.9,33.2,7.6
c20,3,37,6.7,50.9,11.2s26,12.1,36.1,22.9c10.2,10.8,15.3,25.9,15.3,45.3c0,29.9-10.9,52.4-32.8,67.6
c-21.8,15.1-50.3,22.7-85.3,22.7c-25.7,0-49.5-3.7-71.4-11c-21.8-7.3-37.4-14.7-46.7-22.2l33.7-60.6c10.2,9,23.4,15.8,39.7,20.4
c16.3,4.6,31.3,7,45.1,7c19.8,0,29.6-5.2,29.6-15.7c0-5.4-3.3-9.4-9.9-11.9c-6.6-2.5-17.2-5.2-31.9-7.9c-18.9-3.3-34.9-7.2-48-11.7
c-13.2-4.5-24.6-12.2-34.3-23.1s-14.6-26-14.6-45.1c0-27.2,9.7-48.5,29-63.7c19.3-15.3,46-22.9,80.1-22.9c23.3,0,44.4,3.6,63.3,10.8
c18.9,7.2,34,14.5,45.3,22l-32.8,58.8c-10.8-7.5-23.2-13.7-37.3-18.6C2967.1,656.9,2954.2,654.5,2942.6,654.5z"/>
<g>
<path d="M2633.3,932.2h60.2v17.3h-60.2V932.2z"/>
<path d="M2754.5,902.6c4.9-2,10.2-3.1,16-3.1c10.9,0,19.5,3.4,25.9,10.2s9.6,16.7,9.6,29.6v57.3h-19.6V944c0-9.3-1.7-16.2-5.1-20.7
c-3.4-4.5-9.1-6.7-17-6.7c-6.5,0-11.8,2.4-16.1,7.1c-4.3,4.8-6.4,11.5-6.4,20.2v52.6h-19.6v-94.6h19.6v9.5
C2745.5,907.6,2749.7,904.6,2754.5,902.6z"/>
<path d="M2915.6,1041.4c-8.6,6.8-19.4,10.2-32.3,10.2c-7.9,0-15.2-1.4-21.9-4.1s-12.1-6.8-16.3-12.2c-4.2-5.4-6.6-11.9-7.1-19.6
h19.6c0.7,6.1,3.5,10.8,8.4,13.9c4.9,3.2,10.7,4.8,17.4,4.8c7,0,13.1-2,18.2-6c5.1-4,7.7-10.3,7.7-18.9v-24.7
c-3.6,3.4-8,6.2-13.3,8.2c-5.2,2.1-10.7,3.1-16.3,3.1c-8.7,0-16.6-2.1-23.7-6.4c-7.1-4.3-12.6-10-16.7-17.3c-4-7.3-6-15.5-6-24.6
s2-17.3,6-24.7s9.6-13.2,16.7-17.4c7.1-4.3,15-6.4,23.7-6.4c5.7,0,11.1,1,16.3,3.1s9.6,4.8,13.3,8.2v-8.8h19.4v107.8
C2928.5,1024.1,2924.2,1034.6,2915.6,1041.4z M2907.5,963.9c2.6-4.7,3.8-10,3.8-15.9s-1.3-11.2-3.8-16c-2.6-4.8-6.1-8.5-10.5-11.1
c-4.5-2.7-9.5-4-15.1-4c-5.8,0-10.9,1.4-15.4,4.3c-4.5,2.8-7.9,6.6-10.3,11.4c-2.4,4.8-3.6,9.9-3.6,15.5c0,5.4,1.2,10.5,3.6,15.3
c2.4,4.8,5.8,8.6,10.3,11.5s9.6,4.3,15.4,4.3c5.6,0,10.6-1.4,15.1-4.1C2901.4,972.3,2904.9,968.6,2907.5,963.9z"/>
<path d="M2968.8,996.6h-21.6l37.9-48l-36.4-46.6h22.6l25.7,33.3l25.8-33.3h21.6l-36.2,45.9l37.9,48.6h-22.6l-27.4-35L2968.8,996.6z
"/>
</g>
<path d="M961.1,527.4c-11.5-18.9-27.4-33.7-47.6-44.7c-20.2-10.9-43-16.4-68.5-16.4h-90.6c-8.6,39.6-21.3,77.2-38,112.4
c-10,21-21.3,41-33.9,59.9v209.2h89.8v-135H845c25.4,0,48.3-5.5,68.5-16.4s36.1-25.8,47.6-44.7s17.3-39.5,17.3-61.9
C978.4,567.1,972.7,546.3,961.1,527.4z M872.3,624.8c-9.4,9-21.8,13.5-37,13.5l-62.8,0.4v-93.4l62.8-0.4c15.3,0,27.6,4.5,37,13.5
s14.1,20,14.1,33.2C886.4,604.8,881.7,615.9,872.3,624.8z"/>
<path class="st0" d="M290,906.9c-3.5-16.5-10.4-49.6-11.3-49.6c-147.1-88-129.7-240.3-81-327.4c10.4,109.7,204.6,185.4,91.4,319.5
c-0.9,1.7,5.2,22.6,10.4,41.8c22.6-38.3,56.6-84.4,54.8-88.8C215,462.9,650.3,436.8,740.8,226.1c40.9,203.7-20.9,518.9-370.8,599
c-1.7,0.9-63.5,109.7-66.2,110.6c0-1.7-26.1-0.9-22.6-9.6C283.1,920.8,286.5,913.9,290,906.9L290,906.9z M285.7,825.1
c44.4-51.4-7.8-139.3-39.2-168C299.6,748.4,296.1,801.5,285.7,825.1L285.7,825.1z"/>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 3212.8 1212.8" style="enable-background:new 0 0 3212.8 1212.8;" xml:space="preserve">
<style type="text/css">
.st0{fill:#17541F;}
</style>
<path d="M1180.9,847.9v-20.6c-18,20-43.1,30.1-75.4,30.1c-22.4,0-42.8-5.8-61-17.5c-18.3-11.7-32.5-27.8-42.9-48.3
c-10.3-20.5-15.5-43.3-15.5-68.4c0-25.1,5.2-48,15.5-68.5s24.6-36.6,42.9-48.3s38.6-17.5,61-17.5c32.3,0,57.5,10,75.4,30.1v-20.6
h85.3V848L1180.9,847.9L1180.9,847.9z M1184.4,723.1c0-17.4-5.2-31.9-15.5-43.8c-10.3-11.8-23.9-17.7-40.6-17.7
c-16.8,0-30.2,5.9-40.4,17.7c-10.2,11.8-15.3,26.4-15.3,43.8c0,17.4,5.1,31.9,15.3,43.8c10.2,11.8,23.6,17.7,40.4,17.7
s30.3-5.9,40.6-17.7C1179.3,755.1,1184.4,740.5,1184.4,723.1z"/>
<path d="M1543.1,606.4c18.3,11.7,32.5,27.8,42.9,48.3c10.3,20.5,15.5,43.3,15.5,68.5c0,25.1-5.2,48-15.5,68.4
c-10.3,20.5-24.6,36.6-42.9,48.3s-38.6,17.5-61,17.5c-32.3,0-57.5-10-75.4-30.1v165.6h-85.3V598.4h85.3V619
c18-20,43.1-30.1,75.4-30.1C1504.5,588.9,1524.8,594.8,1543.1,606.4z M1514.8,723.1c0-17.4-5.1-31.9-15.3-43.8
c-10.2-11.8-23.6-17.7-40.4-17.7s-30.2,5.9-40.4,17.7c-10.2,11.8-15.3,26.4-15.3,43.8c0,17.4,5.1,31.9,15.3,43.8
c10.2,11.8,23.6,17.7,40.4,17.7s30.2-5.9,40.4-17.7C1509.7,755.1,1514.8,740.5,1514.8,723.1z"/>
<path d="M1838.9,763.5l53,49.4c-28.1,29.6-66.7,44.4-115.8,44.4c-28.1,0-53-5.8-74.5-17.5s-38.2-27.7-49.8-48
c-11.7-20.3-17.7-43.2-18-68.7c0-24.8,5.9-47.5,17.7-68c11.8-20.5,28.1-36.7,48.7-48.5s43.5-17.7,68.7-17.7
c24.8,0,47.6,6.1,68.2,18.2c20.6,12.1,37,29.5,49.1,52.3c12.1,22.7,18.2,49.1,18.2,79l-0.4,11.7h-181.8
c3.6,11.4,10.5,20.7,20.9,28.1c10.3,7.3,21.3,11,33,11c14.4,0,26.3-2.2,35.7-6.5C1821.1,778.3,1830.2,771.9,1838.9,763.5z
M1722.2,694.4h92.9c-2.1-12.3-7.5-22.1-16.2-29.4c-8.7-7.3-18.7-11-30.1-11s-21.5,3.7-30.3,11S1724.3,682.1,1722.2,694.4z"/>
<path d="M2034.1,626.6c7.8-10.8,17.2-19,28.3-24.7s22-8.5,32.8-8.5c11.4,0,20,1.6,26,4.9l-10.8,72.7c-8.4-2.1-15.7-3.1-22-3.1
c-17.1,0-30.4,4.3-39.9,12.8c-9.6,8.5-14.4,24.2-14.4,46.9v120.3h-85.3V598.4h85.3V626.6L2034.1,626.6z"/>
<path d="M2238.3,466.4v381.5H2153V466.4H2238.3z"/>
<path d="M2486.1,763.5l53,49.4c-28.1,29.6-66.7,44.4-115.8,44.4c-28.1,0-53-5.8-74.5-17.5s-38.2-27.7-49.8-48
c-11.7-20.3-17.7-43.2-18-68.7c0-24.8,5.9-47.5,17.7-68s28.1-36.7,48.7-48.5c20.6-11.8,43.5-17.7,68.7-17.7
c24.8,0,47.6,6.1,68.2,18.2c20.6,12.1,37,29.5,49.1,52.3c12.1,22.7,18.2,49.1,18.2,79l-0.4,11.7h-181.8
c3.6,11.4,10.5,20.7,20.9,28.1c10.3,7.3,21.3,11,33,11c14.4,0,26.3-2.2,35.7-6.5C2468.4,778.3,2477.4,771.9,2486.1,763.5z
M2369.4,694.4h92.9c-2.1-12.3-7.5-22.1-16.2-29.4c-8.7-7.3-18.7-11-30.1-11s-21.5,3.7-30.3,11
C2377,672.3,2371.5,682.1,2369.4,694.4z"/>
<path d="M2691.2,654.5c-9.9,0-17.1,1.1-21.5,3.4c-4.5,2.2-6.7,5.9-6.7,11s3.4,8.8,10.3,11.2c6.9,2.4,18,4.9,33.2,7.6
c20,3,37,6.7,50.9,11.2s26,12.1,36.1,22.9c10.2,10.8,15.3,25.9,15.3,45.3c0,29.9-10.9,52.4-32.8,67.6
c-21.8,15.1-50.3,22.7-85.3,22.7c-25.7,0-49.5-3.7-71.4-11c-21.8-7.3-37.4-14.7-46.7-22.2l33.7-60.6c10.2,9,23.4,15.8,39.7,20.4
c16.3,4.6,31.3,7,45.1,7c19.7,0,29.6-5.2,29.6-15.7c0-5.4-3.3-9.4-9.9-11.9c-6.6-2.5-17.2-5.2-31.9-7.9c-18.9-3.3-34.9-7.2-48-11.7
c-13.2-4.5-24.6-12.2-34.3-23.1c-9.7-10.9-14.6-26-14.6-45.1c0-27.2,9.7-48.5,29-63.7c19.3-15.3,46-22.9,80.1-22.9
c23.3,0,44.4,3.6,63.3,10.8c18.9,7.2,34,14.5,45.3,22l-32.8,58.8c-10.8-7.5-23.2-13.7-37.3-18.6
C2715.8,656.9,2702.9,654.5,2691.2,654.5z"/>
<path d="M2942.6,654.5c-9.9,0-17.1,1.1-21.5,3.4c-4.5,2.2-6.7,5.9-6.7,11s3.4,8.8,10.3,11.2c6.9,2.4,18,4.9,33.2,7.6
c20,3,37,6.7,50.9,11.2s26,12.1,36.1,22.9c10.2,10.8,15.3,25.9,15.3,45.3c0,29.9-10.9,52.4-32.8,67.6
c-21.8,15.1-50.3,22.7-85.3,22.7c-25.7,0-49.5-3.7-71.4-11c-21.8-7.3-37.4-14.7-46.7-22.2l33.7-60.6c10.2,9,23.4,15.8,39.7,20.4
c16.3,4.6,31.3,7,45.1,7c19.8,0,29.6-5.2,29.6-15.7c0-5.4-3.3-9.4-9.9-11.9c-6.6-2.5-17.2-5.2-31.9-7.9c-18.9-3.3-34.9-7.2-48-11.7
c-13.2-4.5-24.6-12.2-34.3-23.1s-14.6-26-14.6-45.1c0-27.2,9.7-48.5,29-63.7c19.3-15.3,46-22.9,80.1-22.9c23.3,0,44.4,3.6,63.3,10.8
c18.9,7.2,34,14.5,45.3,22l-32.8,58.8c-10.8-7.5-23.2-13.7-37.3-18.6C2967.1,656.9,2954.2,654.5,2942.6,654.5z"/>
<g>
<path d="M2633.3,932.2h60.2v17.3h-60.2V932.2z"/>
<path d="M2754.5,902.6c4.9-2,10.2-3.1,16-3.1c10.9,0,19.5,3.4,25.9,10.2s9.6,16.7,9.6,29.6v57.3h-19.6V944c0-9.3-1.7-16.2-5.1-20.7
c-3.4-4.5-9.1-6.7-17-6.7c-6.5,0-11.8,2.4-16.1,7.1c-4.3,4.8-6.4,11.5-6.4,20.2v52.6h-19.6v-94.6h19.6v9.5
C2745.5,907.6,2749.7,904.6,2754.5,902.6z"/>
<path d="M2915.6,1041.4c-8.6,6.8-19.4,10.2-32.3,10.2c-7.9,0-15.2-1.4-21.9-4.1s-12.1-6.8-16.3-12.2c-4.2-5.4-6.6-11.9-7.1-19.6
h19.6c0.7,6.1,3.5,10.8,8.4,13.9c4.9,3.2,10.7,4.8,17.4,4.8c7,0,13.1-2,18.2-6c5.1-4,7.7-10.3,7.7-18.9v-24.7
c-3.6,3.4-8,6.2-13.3,8.2c-5.2,2.1-10.7,3.1-16.3,3.1c-8.7,0-16.6-2.1-23.7-6.4c-7.1-4.3-12.6-10-16.7-17.3c-4-7.3-6-15.5-6-24.6
s2-17.3,6-24.7s9.6-13.2,16.7-17.4c7.1-4.3,15-6.4,23.7-6.4c5.7,0,11.1,1,16.3,3.1s9.6,4.8,13.3,8.2v-8.8h19.4v107.8
C2928.5,1024.1,2924.2,1034.6,2915.6,1041.4z M2907.5,963.9c2.6-4.7,3.8-10,3.8-15.9s-1.3-11.2-3.8-16c-2.6-4.8-6.1-8.5-10.5-11.1
c-4.5-2.7-9.5-4-15.1-4c-5.8,0-10.9,1.4-15.4,4.3c-4.5,2.8-7.9,6.6-10.3,11.4c-2.4,4.8-3.6,9.9-3.6,15.5c0,5.4,1.2,10.5,3.6,15.3
c2.4,4.8,5.8,8.6,10.3,11.5s9.6,4.3,15.4,4.3c5.6,0,10.6-1.4,15.1-4.1C2901.4,972.3,2904.9,968.6,2907.5,963.9z"/>
<path d="M2968.8,996.6h-21.6l37.9-48l-36.4-46.6h22.6l25.7,33.3l25.8-33.3h21.6l-36.2,45.9l37.9,48.6h-22.6l-27.4-35L2968.8,996.6z
"/>
</g>
<path d="M961.1,527.4c-11.5-18.9-27.4-33.7-47.6-44.7c-20.2-10.9-43-16.4-68.5-16.4h-90.6c-8.6,39.6-21.3,77.2-38,112.4
c-10,21-21.3,41-33.9,59.9v209.2h89.8v-135H845c25.4,0,48.3-5.5,68.5-16.4s36.1-25.8,47.6-44.7s17.3-39.5,17.3-61.9
C978.4,567.1,972.7,546.3,961.1,527.4z M872.3,624.8c-9.4,9-21.8,13.5-37,13.5l-62.8,0.4v-93.4l62.8-0.4c15.3,0,27.6,4.5,37,13.5
s14.1,20,14.1,33.2C886.4,604.8,881.7,615.9,872.3,624.8z"/>
<path class="st0" d="M290,906.9c-3.5-16.5-10.4-49.6-11.3-49.6c-147.1-88-129.7-240.3-81-327.4c10.4,109.7,204.6,185.4,91.4,319.5
c-0.9,1.7,5.2,22.6,10.4,41.8c22.6-38.3,56.6-84.4,54.8-88.8C215,462.9,650.3,436.8,740.8,226.1c40.9,203.7-20.9,518.9-370.8,599
c-1.7,0.9-63.5,109.7-66.2,110.6c0-1.7-26.1-0.9-22.6-9.6C283.1,920.8,286.5,913.9,290,906.9L290,906.9z M285.7,825.1
c44.4-51.4-7.8-139.3-39.2-168C299.6,748.4,296.1,801.5,285.7,825.1L285.7,825.1z"/>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 3212.8 1212.8" style="enable-background:new 0 0 3212.8 1212.8;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
.st1{fill:#17541F;}
</style>
<rect class="st0" width="3212.8" height="1212.8"/>
<path d="M1180.9,847.9v-20.6c-18,20-43.1,30.1-75.4,30.1c-22.4,0-42.8-5.8-61-17.5c-18.3-11.7-32.5-27.8-42.9-48.3
c-10.3-20.5-15.5-43.3-15.5-68.4c0-25.1,5.2-48,15.5-68.5s24.6-36.6,42.9-48.3s38.6-17.5,61-17.5c32.3,0,57.5,10,75.4,30.1v-20.6
h85.3V848L1180.9,847.9L1180.9,847.9z M1184.4,723.1c0-17.4-5.2-31.9-15.5-43.8c-10.3-11.8-23.9-17.7-40.6-17.7
c-16.8,0-30.2,5.9-40.4,17.7c-10.2,11.8-15.3,26.4-15.3,43.8c0,17.4,5.1,31.9,15.3,43.8c10.2,11.8,23.6,17.7,40.4,17.7
s30.3-5.9,40.6-17.7C1179.3,755.1,1184.4,740.5,1184.4,723.1z"/>
<path d="M1543.1,606.4c18.3,11.7,32.5,27.8,42.9,48.3c10.3,20.5,15.5,43.3,15.5,68.5c0,25.1-5.2,48-15.5,68.4
c-10.3,20.5-24.6,36.6-42.9,48.3s-38.6,17.5-61,17.5c-32.3,0-57.5-10-75.4-30.1v165.6h-85.3V598.4h85.3V619
c18-20,43.1-30.1,75.4-30.1C1504.5,588.9,1524.8,594.8,1543.1,606.4z M1514.8,723.1c0-17.4-5.1-31.9-15.3-43.8
c-10.2-11.8-23.6-17.7-40.4-17.7s-30.2,5.9-40.4,17.7c-10.2,11.8-15.3,26.4-15.3,43.8c0,17.4,5.1,31.9,15.3,43.8
c10.2,11.8,23.6,17.7,40.4,17.7s30.2-5.9,40.4-17.7C1509.7,755.1,1514.8,740.5,1514.8,723.1z"/>
<path d="M1838.9,763.5l53,49.4c-28.1,29.6-66.7,44.4-115.8,44.4c-28.1,0-53-5.8-74.5-17.5s-38.2-27.7-49.8-48
c-11.7-20.3-17.7-43.2-18-68.7c0-24.8,5.9-47.5,17.7-68c11.8-20.5,28.1-36.7,48.7-48.5s43.5-17.7,68.7-17.7
c24.8,0,47.6,6.1,68.2,18.2c20.6,12.1,37,29.5,49.1,52.3c12.1,22.7,18.2,49.1,18.2,79l-0.4,11.7h-181.8
c3.6,11.4,10.5,20.7,20.9,28.1c10.3,7.3,21.3,11,33,11c14.4,0,26.3-2.2,35.7-6.5C1821.1,778.3,1830.2,771.9,1838.9,763.5z
M1722.2,694.4h92.9c-2.1-12.3-7.5-22.1-16.2-29.4c-8.7-7.3-18.7-11-30.1-11s-21.5,3.7-30.3,11S1724.3,682.1,1722.2,694.4z"/>
<path d="M2034.1,626.6c7.8-10.8,17.2-19,28.3-24.7s22-8.5,32.8-8.5c11.4,0,20,1.6,26,4.9l-10.8,72.7c-8.4-2.1-15.7-3.1-22-3.1
c-17.1,0-30.4,4.3-39.9,12.8c-9.6,8.5-14.4,24.2-14.4,46.9v120.3h-85.3V598.4h85.3V626.6L2034.1,626.6z"/>
<path d="M2238.3,466.4v381.5H2153V466.4H2238.3z"/>
<path d="M2486.1,763.5l53,49.4c-28.1,29.6-66.7,44.4-115.8,44.4c-28.1,0-53-5.8-74.5-17.5s-38.2-27.7-49.8-48
c-11.7-20.3-17.7-43.2-18-68.7c0-24.8,5.9-47.5,17.7-68s28.1-36.7,48.7-48.5c20.6-11.8,43.5-17.7,68.7-17.7
c24.8,0,47.6,6.1,68.2,18.2c20.6,12.1,37,29.5,49.1,52.3c12.1,22.7,18.2,49.1,18.2,79l-0.4,11.7h-181.8
c3.6,11.4,10.5,20.7,20.9,28.1c10.3,7.3,21.3,11,33,11c14.4,0,26.3-2.2,35.7-6.5C2468.4,778.3,2477.4,771.9,2486.1,763.5z
M2369.4,694.4h92.9c-2.1-12.3-7.5-22.1-16.2-29.4c-8.7-7.3-18.7-11-30.1-11s-21.5,3.7-30.3,11
C2377,672.3,2371.5,682.1,2369.4,694.4z"/>
<path d="M2691.2,654.5c-9.9,0-17.1,1.1-21.5,3.4c-4.5,2.2-6.7,5.9-6.7,11s3.4,8.8,10.3,11.2c6.9,2.4,18,4.9,33.2,7.6
c20,3,37,6.7,50.9,11.2s26,12.1,36.1,22.9c10.2,10.8,15.3,25.9,15.3,45.3c0,29.9-10.9,52.4-32.8,67.6
c-21.8,15.1-50.3,22.7-85.3,22.7c-25.7,0-49.5-3.7-71.4-11c-21.8-7.3-37.4-14.7-46.7-22.2l33.7-60.6c10.2,9,23.4,15.8,39.7,20.4
c16.3,4.6,31.3,7,45.1,7c19.7,0,29.6-5.2,29.6-15.7c0-5.4-3.3-9.4-9.9-11.9c-6.6-2.5-17.2-5.2-31.9-7.9c-18.9-3.3-34.9-7.2-48-11.7
c-13.2-4.5-24.6-12.2-34.3-23.1c-9.7-10.9-14.6-26-14.6-45.1c0-27.2,9.7-48.5,29-63.7c19.3-15.3,46-22.9,80.1-22.9
c23.3,0,44.4,3.6,63.3,10.8c18.9,7.2,34,14.5,45.3,22l-32.8,58.8c-10.8-7.5-23.2-13.7-37.3-18.6
C2715.8,656.9,2702.9,654.5,2691.2,654.5z"/>
<path d="M2942.6,654.5c-9.9,0-17.1,1.1-21.5,3.4c-4.5,2.2-6.7,5.9-6.7,11s3.4,8.8,10.3,11.2c6.9,2.4,18,4.9,33.2,7.6
c20,3,37,6.7,50.9,11.2s26,12.1,36.1,22.9c10.2,10.8,15.3,25.9,15.3,45.3c0,29.9-10.9,52.4-32.8,67.6
c-21.8,15.1-50.3,22.7-85.3,22.7c-25.7,0-49.5-3.7-71.4-11c-21.8-7.3-37.4-14.7-46.7-22.2l33.7-60.6c10.2,9,23.4,15.8,39.7,20.4
c16.3,4.6,31.3,7,45.1,7c19.8,0,29.6-5.2,29.6-15.7c0-5.4-3.3-9.4-9.9-11.9c-6.6-2.5-17.2-5.2-31.9-7.9c-18.9-3.3-34.9-7.2-48-11.7
c-13.2-4.5-24.6-12.2-34.3-23.1s-14.6-26-14.6-45.1c0-27.2,9.7-48.5,29-63.7c19.3-15.3,46-22.9,80.1-22.9c23.3,0,44.4,3.6,63.3,10.8
c18.9,7.2,34,14.5,45.3,22l-32.8,58.8c-10.8-7.5-23.2-13.7-37.3-18.6C2967.1,656.9,2954.2,654.5,2942.6,654.5z"/>
<g>
<path d="M2633.3,932.2h60.2v17.3h-60.2V932.2z"/>
<path d="M2754.5,902.6c4.9-2,10.2-3.1,16-3.1c10.9,0,19.5,3.4,25.9,10.2s9.6,16.7,9.6,29.6v57.3h-19.6V944c0-9.3-1.7-16.2-5.1-20.7
c-3.4-4.5-9.1-6.7-17-6.7c-6.5,0-11.8,2.4-16.1,7.1c-4.3,4.8-6.4,11.5-6.4,20.2v52.6h-19.6v-94.6h19.6v9.5
C2745.5,907.6,2749.7,904.6,2754.5,902.6z"/>
<path d="M2915.6,1041.4c-8.6,6.8-19.4,10.2-32.3,10.2c-7.9,0-15.2-1.4-21.9-4.1s-12.1-6.8-16.3-12.2c-4.2-5.4-6.6-11.9-7.1-19.6
h19.6c0.7,6.1,3.5,10.8,8.4,13.9c4.9,3.2,10.7,4.8,17.4,4.8c7,0,13.1-2,18.2-6c5.1-4,7.7-10.3,7.7-18.9v-24.7
c-3.6,3.4-8,6.2-13.3,8.2c-5.2,2.1-10.7,3.1-16.3,3.1c-8.7,0-16.6-2.1-23.7-6.4c-7.1-4.3-12.6-10-16.7-17.3c-4-7.3-6-15.5-6-24.6
s2-17.3,6-24.7s9.6-13.2,16.7-17.4c7.1-4.3,15-6.4,23.7-6.4c5.7,0,11.1,1,16.3,3.1s9.6,4.8,13.3,8.2v-8.8h19.4v107.8
C2928.5,1024.1,2924.2,1034.6,2915.6,1041.4z M2907.5,963.9c2.6-4.7,3.8-10,3.8-15.9s-1.3-11.2-3.8-16c-2.6-4.8-6.1-8.5-10.5-11.1
c-4.5-2.7-9.5-4-15.1-4c-5.8,0-10.9,1.4-15.4,4.3c-4.5,2.8-7.9,6.6-10.3,11.4c-2.4,4.8-3.6,9.9-3.6,15.5c0,5.4,1.2,10.5,3.6,15.3
c2.4,4.8,5.8,8.6,10.3,11.5s9.6,4.3,15.4,4.3c5.6,0,10.6-1.4,15.1-4.1C2901.4,972.3,2904.9,968.6,2907.5,963.9z"/>
<path d="M2968.8,996.6h-21.6l37.9-48l-36.4-46.6h22.6l25.7,33.3l25.8-33.3h21.6l-36.2,45.9l37.9,48.6h-22.6l-27.4-35L2968.8,996.6z
"/>
</g>
<path d="M961.1,527.4c-11.5-18.9-27.4-33.7-47.6-44.7c-20.2-10.9-43-16.4-68.5-16.4h-90.6c-8.6,39.6-21.3,77.2-38,112.4
c-10,21-21.3,41-33.9,59.9v209.2h89.8v-135H845c25.4,0,48.3-5.5,68.5-16.4s36.1-25.8,47.6-44.7s17.3-39.5,17.3-61.9
C978.4,567.1,972.7,546.3,961.1,527.4z M872.3,624.8c-9.4,9-21.8,13.5-37,13.5l-62.8,0.4v-93.4l62.8-0.4c15.3,0,27.6,4.5,37,13.5
s14.1,20,14.1,33.2C886.4,604.8,881.7,615.9,872.3,624.8z"/>
<path class="st1" d="M290,906.9c-3.5-16.5-10.4-49.6-11.3-49.6c-147.1-88-129.7-240.3-81-327.4c10.4,109.7,204.6,185.4,91.4,319.5
c-0.9,1.7,5.2,22.6,10.4,41.8c22.6-38.3,56.6-84.4,54.8-88.8C215,462.9,650.3,436.8,740.8,226.1c40.9,203.7-20.9,518.9-370.8,599
c-1.7,0.9-63.5,109.7-66.2,110.6c0-1.7-26.1-0.9-22.6-9.6C283.1,920.8,286.5,913.9,290,906.9L290,906.9z M285.7,825.1
c44.4-51.4-7.8-139.3-39.2-168C299.6,748.4,296.1,801.5,285.7,825.1L285.7,825.1z"/>
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 3212.8 1212.8" style="enable-background:new 0 0 3212.8 1212.8;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
.st1{fill:#17541F;}
</style>
<path class="st0" d="M1180.9,847.9v-20.6c-18,20-43.1,30.1-75.4,30.1c-22.4,0-42.8-5.8-61-17.5c-18.3-11.7-32.5-27.8-42.9-48.3
c-10.3-20.5-15.5-43.3-15.5-68.4c0-25.1,5.2-48,15.5-68.5s24.6-36.6,42.9-48.3s38.6-17.5,61-17.5c32.3,0,57.5,10,75.4,30.1v-20.6
h85.3V848L1180.9,847.9L1180.9,847.9z M1184.4,723.1c0-17.4-5.2-31.9-15.5-43.8c-10.3-11.8-23.9-17.7-40.6-17.7
c-16.8,0-30.2,5.9-40.4,17.7c-10.2,11.8-15.3,26.4-15.3,43.8c0,17.4,5.1,31.9,15.3,43.8c10.2,11.8,23.6,17.7,40.4,17.7
s30.3-5.9,40.6-17.7C1179.3,755.1,1184.4,740.5,1184.4,723.1z"/>
<path class="st0" d="M1543.1,606.4c18.3,11.7,32.5,27.8,42.9,48.3c10.3,20.5,15.5,43.3,15.5,68.5c0,25.1-5.2,48-15.5,68.4
c-10.3,20.5-24.6,36.6-42.9,48.3s-38.6,17.5-61,17.5c-32.3,0-57.5-10-75.4-30.1v165.6h-85.3V598.4h85.3V619
c18-20,43.1-30.1,75.4-30.1C1504.5,588.9,1524.8,594.8,1543.1,606.4z M1514.8,723.1c0-17.4-5.1-31.9-15.3-43.8
c-10.2-11.8-23.6-17.7-40.4-17.7s-30.2,5.9-40.4,17.7c-10.2,11.8-15.3,26.4-15.3,43.8c0,17.4,5.1,31.9,15.3,43.8
c10.2,11.8,23.6,17.7,40.4,17.7s30.2-5.9,40.4-17.7C1509.7,755.1,1514.8,740.5,1514.8,723.1z"/>
<path class="st0" d="M1838.9,763.5l53,49.4c-28.1,29.6-66.7,44.4-115.8,44.4c-28.1,0-53-5.8-74.5-17.5s-38.2-27.7-49.8-48
c-11.7-20.3-17.7-43.2-18-68.7c0-24.8,5.9-47.5,17.7-68c11.8-20.5,28.1-36.7,48.7-48.5s43.5-17.7,68.7-17.7
c24.8,0,47.6,6.1,68.2,18.2c20.6,12.1,37,29.5,49.1,52.3c12.1,22.7,18.2,49.1,18.2,79l-0.4,11.7h-181.8
c3.6,11.4,10.5,20.7,20.9,28.1c10.3,7.3,21.3,11,33,11c14.4,0,26.3-2.2,35.7-6.5C1821.1,778.3,1830.2,771.9,1838.9,763.5z
M1722.2,694.4h92.9c-2.1-12.3-7.5-22.1-16.2-29.4c-8.7-7.3-18.7-11-30.1-11s-21.5,3.7-30.3,11S1724.3,682.1,1722.2,694.4z"/>
<path class="st0" d="M2034.1,626.6c7.8-10.8,17.2-19,28.3-24.7s22-8.5,32.8-8.5c11.4,0,20,1.6,26,4.9l-10.8,72.7
c-8.4-2.1-15.7-3.1-22-3.1c-17.1,0-30.4,4.3-39.9,12.8c-9.6,8.5-14.4,24.2-14.4,46.9v120.3h-85.3V598.4h85.3V626.6L2034.1,626.6z"/>
<path class="st0" d="M2238.3,466.4v381.5H2153V466.4H2238.3z"/>
<path class="st0" d="M2486.1,763.5l53,49.4c-28.1,29.6-66.7,44.4-115.8,44.4c-28.1,0-53-5.8-74.5-17.5s-38.2-27.7-49.8-48
c-11.7-20.3-17.7-43.2-18-68.7c0-24.8,5.9-47.5,17.7-68s28.1-36.7,48.7-48.5c20.6-11.8,43.5-17.7,68.7-17.7
c24.8,0,47.6,6.1,68.2,18.2c20.6,12.1,37,29.5,49.1,52.3c12.1,22.7,18.2,49.1,18.2,79l-0.4,11.7h-181.8
c3.6,11.4,10.5,20.7,20.9,28.1c10.3,7.3,21.3,11,33,11c14.4,0,26.3-2.2,35.7-6.5C2468.4,778.3,2477.4,771.9,2486.1,763.5z
M2369.4,694.4h92.9c-2.1-12.3-7.5-22.1-16.2-29.4c-8.7-7.3-18.7-11-30.1-11s-21.5,3.7-30.3,11
C2377,672.3,2371.5,682.1,2369.4,694.4z"/>
<path class="st0" d="M2691.2,654.5c-9.9,0-17.1,1.1-21.5,3.4c-4.5,2.2-6.7,5.9-6.7,11s3.4,8.8,10.3,11.2c6.9,2.4,18,4.9,33.2,7.6
c20,3,37,6.7,50.9,11.2s26,12.1,36.1,22.9c10.2,10.8,15.3,25.9,15.3,45.3c0,29.9-10.9,52.4-32.8,67.6
c-21.8,15.1-50.3,22.7-85.3,22.7c-25.7,0-49.5-3.7-71.4-11c-21.8-7.3-37.4-14.7-46.7-22.2l33.7-60.6c10.2,9,23.4,15.8,39.7,20.4
c16.3,4.6,31.3,7,45.1,7c19.7,0,29.6-5.2,29.6-15.7c0-5.4-3.3-9.4-9.9-11.9c-6.6-2.5-17.2-5.2-31.9-7.9c-18.9-3.3-34.9-7.2-48-11.7
c-13.2-4.5-24.6-12.2-34.3-23.1c-9.7-10.9-14.6-26-14.6-45.1c0-27.2,9.7-48.5,29-63.7c19.3-15.3,46-22.9,80.1-22.9
c23.3,0,44.4,3.6,63.3,10.8c18.9,7.2,34,14.5,45.3,22l-32.8,58.8c-10.8-7.5-23.2-13.7-37.3-18.6
C2715.8,656.9,2702.9,654.5,2691.2,654.5z"/>
<path class="st0" d="M2942.6,654.5c-9.9,0-17.1,1.1-21.5,3.4c-4.5,2.2-6.7,5.9-6.7,11s3.4,8.8,10.3,11.2c6.9,2.4,18,4.9,33.2,7.6
c20,3,37,6.7,50.9,11.2s26,12.1,36.1,22.9c10.2,10.8,15.3,25.9,15.3,45.3c0,29.9-10.9,52.4-32.8,67.6
c-21.8,15.1-50.3,22.7-85.3,22.7c-25.7,0-49.5-3.7-71.4-11c-21.8-7.3-37.4-14.7-46.7-22.2l33.7-60.6c10.2,9,23.4,15.8,39.7,20.4
c16.3,4.6,31.3,7,45.1,7c19.8,0,29.6-5.2,29.6-15.7c0-5.4-3.3-9.4-9.9-11.9c-6.6-2.5-17.2-5.2-31.9-7.9c-18.9-3.3-34.9-7.2-48-11.7
c-13.2-4.5-24.6-12.2-34.3-23.1s-14.6-26-14.6-45.1c0-27.2,9.7-48.5,29-63.7c19.3-15.3,46-22.9,80.1-22.9c23.3,0,44.4,3.6,63.3,10.8
c18.9,7.2,34,14.5,45.3,22l-32.8,58.8c-10.8-7.5-23.2-13.7-37.3-18.6C2967.1,656.9,2954.2,654.5,2942.6,654.5z"/>
<g>
<path class="st0" d="M2633.3,932.2h60.2v17.3h-60.2V932.2z"/>
<path class="st0" d="M2754.5,902.6c4.9-2,10.2-3.1,16-3.1c10.9,0,19.5,3.4,25.9,10.2s9.6,16.7,9.6,29.6v57.3h-19.6V944
c0-9.3-1.7-16.2-5.1-20.7c-3.4-4.5-9.1-6.7-17-6.7c-6.5,0-11.8,2.4-16.1,7.1c-4.3,4.8-6.4,11.5-6.4,20.2v52.6h-19.6v-94.6h19.6v9.5
C2745.5,907.6,2749.7,904.6,2754.5,902.6z"/>
<path class="st0" d="M2915.6,1041.4c-8.6,6.8-19.4,10.2-32.3,10.2c-7.9,0-15.2-1.4-21.9-4.1s-12.1-6.8-16.3-12.2
c-4.2-5.4-6.6-11.9-7.1-19.6h19.6c0.7,6.1,3.5,10.8,8.4,13.9c4.9,3.2,10.7,4.8,17.4,4.8c7,0,13.1-2,18.2-6c5.1-4,7.7-10.3,7.7-18.9
v-24.7c-3.6,3.4-8,6.2-13.3,8.2c-5.2,2.1-10.7,3.1-16.3,3.1c-8.7,0-16.6-2.1-23.7-6.4c-7.1-4.3-12.6-10-16.7-17.3
c-4-7.3-6-15.5-6-24.6s2-17.3,6-24.7s9.6-13.2,16.7-17.4c7.1-4.3,15-6.4,23.7-6.4c5.7,0,11.1,1,16.3,3.1s9.6,4.8,13.3,8.2v-8.8
h19.4v107.8C2928.5,1024.1,2924.2,1034.6,2915.6,1041.4z M2907.5,963.9c2.6-4.7,3.8-10,3.8-15.9s-1.3-11.2-3.8-16
c-2.6-4.8-6.1-8.5-10.5-11.1c-4.5-2.7-9.5-4-15.1-4c-5.8,0-10.9,1.4-15.4,4.3c-4.5,2.8-7.9,6.6-10.3,11.4
c-2.4,4.8-3.6,9.9-3.6,15.5c0,5.4,1.2,10.5,3.6,15.3c2.4,4.8,5.8,8.6,10.3,11.5s9.6,4.3,15.4,4.3c5.6,0,10.6-1.4,15.1-4.1
C2901.4,972.3,2904.9,968.6,2907.5,963.9z"/>
<path class="st0" d="M2968.8,996.6h-21.6l37.9-48l-36.4-46.6h22.6l25.7,33.3l25.8-33.3h21.6l-36.2,45.9l37.9,48.6h-22.6l-27.4-35
L2968.8,996.6z"/>
</g>
<path class="st0" d="M961.1,527.4c-11.5-18.9-27.4-33.7-47.6-44.7c-20.2-10.9-43-16.4-68.5-16.4h-90.6c-8.6,39.6-21.3,77.2-38,112.4
c-10,21-21.3,41-33.9,59.9v209.2h89.8v-135H845c25.4,0,48.3-5.5,68.5-16.4s36.1-25.8,47.6-44.7s17.3-39.5,17.3-61.9
C978.4,567.1,972.7,546.3,961.1,527.4z M872.3,624.8c-9.4,9-21.8,13.5-37,13.5l-62.8,0.4v-93.4l62.8-0.4c15.3,0,27.6,4.5,37,13.5
s14.1,20,14.1,33.2C886.4,604.8,881.7,615.9,872.3,624.8z"/>
<path class="st1" d="M290,906.9c-3.5-16.5-10.4-49.6-11.3-49.6c-147.1-88-129.7-240.3-81-327.4c10.4,109.7,204.6,185.4,91.4,319.5
c-0.9,1.7,5.2,22.6,10.4,41.8c22.6-38.3,56.6-84.4,54.8-88.8C215,462.9,650.3,436.8,740.8,226.1c40.9,203.7-20.9,518.9-370.8,599
c-1.7,0.9-63.5,109.7-66.2,110.6c0-1.7-26.1-0.9-22.6-9.6C283.1,920.8,286.5,913.9,290,906.9L290,906.9z M285.7,825.1
c44.4-51.4-7.8-139.3-39.2-168C299.6,748.4,296.1,801.5,285.7,825.1L285.7,825.1z"/>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

+82
View File
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="900"
height="900"
id="svg3923"
sodipodi:docname="square.svg"
inkscape:export-filename="/tmp/test.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:version="0.92.2 2405546, 2018-03-11">
<metadata
id="metadata3929">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3927" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="3840"
inkscape:window-height="2096"
id="namedview3925"
showgrid="false"
inkscape:zoom="1.1360927"
inkscape:cx="635.07139"
inkscape:cy="606.383"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g3921" />
<g
transform="matrix(10.638298,0,0,10.638298,106.38298,-206.38301)"
id="g3921">
<defs
id="SvgjsDefs1018" />
<g
id="SvgjsG1019"
featureKey="root"
style="fill:#ffffff" />
<g
id="SvgjsG1020"
featureKey="symbol1"
transform="matrix(0.10341565,0,0,0.10341565,-11.43874,18.048418)"
inkscape:export-filename="/tmp/test.png"
inkscape:export-xdpi="116.02285"
inkscape:export-ydpi="116.02285"
style="fill:#17541f">
<defs
id="defs3911" />
<g
id="g3915">
<path
d="M 231,798 C 227,779 219,741 218,741 49,640 69,465 125,365 c 12,126 235,213 105,367 -1,2 6,26 12,48 26,-44 65,-97 63,-102 C 145,288 645,258 749,16 c 47,234 -24,596 -426,688 -2,1 -73,126 -76,127 0,-2 -30,-1 -26,-11 2,-6 6,-14 10,-22 z M 330,625 C 267,476 452,312 544,271 356,439 324,564 330,625 Z m -104,79 c 51,-59 -9,-160 -45,-193 61,105 57,166 45,193 z"
style="fill:#17541f"
id="path3913"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

+1 -1
View File
@@ -23,7 +23,7 @@ ExecStart=/bin/sh -c '\
[ -n "$PAPERLESS_WEBSERVER_WORKERS" ] && export GRANIAN_WORKERS=$PAPERLESS_WEBSERVER_WORKERS; \
# URL path prefix: only set if PAPERLESS_FORCE_SCRIPT_NAME exists \
[ -n "$PAPERLESS_FORCE_SCRIPT_NAME" ] && export GRANIAN_URL_PATH_PREFIX=$PAPERLESS_FORCE_SCRIPT_NAME; \
exec granian --interface asginl --ws --loop uvloop "paperless.asgi:application"'
exec granian --interface asginl --ws "paperless.asgi:application"'
[Install]
WantedBy=multi-user.target
+367 -558
View File
File diff suppressed because it is too large. Load diff
+27 -27
View File
@@ -1,6 +1,6 @@
{
"name": "paperless-ngx-ui",
"version": "2.20.15",
"version": "2.20.14",
"scripts": {
"preinstall": "npx only-allow pnpm",
"ng": "ng",
@@ -11,17 +11,17 @@
},
"private": true,
"dependencies": {
"@angular/cdk": "^21.2.8",
"@angular/common": "~21.2.10",
"@angular/compiler": "~21.2.10",
"@angular/core": "~21.2.10",
"@angular/forms": "~21.2.10",
"@angular/localize": "~21.2.10",
"@angular/platform-browser": "~21.2.10",
"@angular/platform-browser-dynamic": "~21.2.10",
"@angular/router": "~21.2.10",
"@angular/cdk": "^21.2.4",
"@angular/common": "~21.2.6",
"@angular/compiler": "~21.2.6",
"@angular/core": "~21.2.6",
"@angular/forms": "~21.2.6",
"@angular/localize": "~21.2.6",
"@angular/platform-browser": "~21.2.6",
"@angular/platform-browser-dynamic": "~21.2.6",
"@angular/router": "~21.2.6",
"@ng-bootstrap/ng-bootstrap": "^20.0.0",
"@ng-select/ng-select": "^21.8.0",
"@ng-select/ng-select": "^21.7.0",
"@ngneat/dirty-check-forms": "^3.0.3",
"@popperjs/core": "^2.11.8",
"bootstrap": "^5.3.8",
@@ -36,39 +36,39 @@
"rxjs": "^7.8.2",
"tslib": "^2.8.1",
"utif": "^3.1.0",
"uuid": "^14.0.0",
"uuid": "^13.0.0",
"zone.js": "^0.16.1"
},
"devDependencies": {
"@angular-builders/custom-webpack": "^21.0.3",
"@angular-builders/jest": "^21.0.3",
"@angular-devkit/core": "^21.2.8",
"@angular-devkit/schematics": "^21.2.8",
"@angular-devkit/core": "^21.2.6",
"@angular-devkit/schematics": "^21.2.6",
"@angular-eslint/builder": "21.3.1",
"@angular-eslint/eslint-plugin": "21.3.1",
"@angular-eslint/eslint-plugin-template": "21.3.1",
"@angular-eslint/schematics": "21.3.1",
"@angular-eslint/template-parser": "21.3.1",
"@angular/build": "^21.2.8",
"@angular/cli": "~21.2.8",
"@angular/compiler-cli": "~21.2.10",
"@codecov/webpack-plugin": "^2.0.1",
"@playwright/test": "^1.59.1",
"@angular/build": "^21.2.6",
"@angular/cli": "~21.2.6",
"@angular/compiler-cli": "~21.2.6",
"@codecov/webpack-plugin": "^1.9.1",
"@playwright/test": "^1.59.0",
"@types/jest": "^30.0.0",
"@types/node": "^25.6.0",
"@typescript-eslint/eslint-plugin": "^8.59.1",
"@typescript-eslint/parser": "^8.59.1",
"@typescript-eslint/utils": "^8.59.1",
"eslint": "^10.2.1",
"@types/node": "^25.5.0",
"@typescript-eslint/eslint-plugin": "^8.58.0",
"@typescript-eslint/parser": "^8.58.0",
"@typescript-eslint/utils": "^8.58.0",
"eslint": "^10.1.0",
"jest": "30.3.0",
"jest-environment-jsdom": "^30.3.0",
"jest-junit": "^17.0.0",
"jest-preset-angular": "^16.1.4",
"jest-junit": "^16.0.0",
"jest-preset-angular": "^16.1.2",
"jest-websocket-mock": "^2.5.0",
"prettier-plugin-organize-imports": "^4.3.0",
"ts-node": "~10.9.1",
"typescript": "^5.9.3",
"webpack": "^5.106.2"
"webpack": "^5.105.3"
},
"packageManager": "pnpm@10.17.1",
"pnpm": {
+1047 -1073
View File
File diff suppressed because it is too large. Load diff
+2 -5
View File
@@ -41,10 +41,7 @@ export class AppComponent implements OnInit, OnDestroy {
constructor() {
let anyWindow = window as any
anyWindow.pdfWorkerSrc = new URL(
'assets/js/pdf.worker.min.mjs',
document.baseURI
).toString()
anyWindow.pdfWorkerSrc = 'assets/js/pdf.worker.min.mjs'
this.settings.updateAppearanceSettings()
}
@@ -222,7 +219,7 @@ export class AppComponent implements OnInit, OnDestroy {
},
{
anchorId: 'tour.file-tasks',
content: $localize`Tasks helps you track background work, what needs attention, and what recently completed.`,
content: $localize`File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process.`,
route: '/tasks',
backdropConfig: {
offset: 0,
@@ -337,7 +337,7 @@ describe('SettingsComponent', () => {
.mockImplementation(
(action, type) =>
action === PermissionAction.View &&
type === PermissionType.SystemMonitoring
type === PermissionType.SystemStatus
)
completeSetup()
expect(component['systemStatus']).toEqual(status) // private
@@ -359,7 +359,7 @@ describe('SettingsComponent', () => {
.mockImplementation(
(action, type) =>
action === PermissionAction.View &&
type === PermissionType.SystemMonitoring
type === PermissionType.SystemStatus
)
completeSetup()
component.showSystemStatus()
@@ -652,7 +652,7 @@ export class SettingsComponent
this.permissionsService.isAdmin() ||
this.permissionsService.currentUserCan(
PermissionAction.View,
PermissionType.SystemMonitoring
PermissionType.SystemStatus
)
)
}
@@ -1,16 +1,41 @@
<pngx-page-header
title="Tasks"
title="File Tasks"
i18n-title
info="Tasks shows detailed information about document consumption and system tasks."
info="File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process."
i18n-info
>
<div class="btn-toolbar col col-md-auto align-items-center gap-2">
<button class="btn btn-sm btn-outline-secondary me-2" (click)="clearSelection()" [hidden]="selectedTasks.size === 0">
<i-bs name="x" class="me-1"></i-bs><ng-container i18n>Clear selection</ng-container>
</button>
<button class="btn btn-sm btn-outline-primary me-2" (click)="dismissTasks()" *pngxIfPermissions="{ action: PermissionAction.Change, type: PermissionType.PaperlessTask }" [disabled]="visibleTasks.length === 0">
<button class="btn btn-sm btn-outline-primary me-2" (click)="dismissTasks()" *pngxIfPermissions="{ action: PermissionAction.Change, type: PermissionType.PaperlessTask }" [disabled]="tasksService.total === 0">
<i-bs name="check2-all" class="me-1"></i-bs>{{dismissButtonText}}
</button>
<div class="form-inline d-flex align-items-center">
<div class="input-group input-group-sm flex-fill w-auto flex-nowrap">
<span class="input-group-text text-muted" i18n>Filter by</span>
@if (filterTargets.length > 1) {
<div ngbDropdown>
<button class="btn btn-sm btn-outline-primary" ngbDropdownToggle>{{filterTargetName}}</button>
<div class="dropdown-menu shadow" ngbDropdownMenu>
@for (t of filterTargets; track t.id) {
<button ngbDropdownItem [class.active]="filterTargetID === t.id" (click)="filterTargetID = t.id">{{t.name}}</button>
}
</div>
</div>
} @else {
<span class="input-group-text">{{filterTargetName}}</span>
}
@if (filterText?.length) {
<button class="btn btn-link btn-sm px-2 position-absolute top-0 end-0 z-10" (click)="resetFilter()">
<i-bs width="1em" height="1em" name="x"></i-bs>
</button>
}
<input #filterInput class="form-control form-control-sm" type="text"
(keyup)="filterInputKeyup($event)"
[(ngModel)]="filterText">
</div>
</div>
<div class="form-check form-switch mb-0 ms-2">
<input class="form-check-input" type="checkbox" role="switch" [(ngModel)]="autoRefreshEnabled">
<label class="form-check-label" for="autoRefreshSwitch" i18n>Auto refresh</label>
@@ -23,263 +48,139 @@
<div class="visually-hidden" i18n>Loading...</div>
}
<div class="task-controls mb-3 btn-toolbar align-items-center" role="toolbar">
<div class="task-view-scope btn-group btn-group-sm me-3" role="group">
<input
type="radio"
class="btn-check"
[checked]="selectedSection === TaskSection.All"
id="section-all"
(click)="setSection(TaskSection.All)"
(keydown)="setSection(TaskSection.All)" />
<label class="btn btn-outline-primary" for="section-all">
<ng-container i18n>All</ng-container>
</label>
@for (section of sections; track section) {
<input
type="radio"
class="btn-check"
[checked]="selectedSection === section"
id="section-{{section}}"
(click)="setSection(section)"
(keydown)="setSection(section)" />
<label class="btn btn-outline-primary" for="section-{{section}}">
{{ sectionLabel(section) }}
@if (sectionCount(section) > 0) {
<span class="badge ms-2" [class.bg-danger]="section === TaskSection.NeedsAttention" [class.bg-secondary]="section !== TaskSection.NeedsAttention">{{sectionCount(section)}}</span>
<ng-template let-tasks="tasks" #tasksTemplate>
<table class="table table-striped align-middle border shadow-sm">
<thead>
<tr>
<th scope="col">
<div class="form-check">
<input type="checkbox" class="form-check-input" id="all-tasks" [disabled]="currentTasks.length === 0" [(ngModel)]="togggleAll" (click)="toggleAll($event); $event.stopPropagation();">
<label class="form-check-label" for="all-tasks"></label>
</div>
</th>
<th scope="col" i18n>Name</th>
<th scope="col" class="d-none d-lg-table-cell" i18n>Created</th>
@if (activeTab !== 'started' && activeTab !== 'queued') {
<th scope="col" class="d-none d-lg-table-cell" i18n>Results</th>
}
</label>
}
</div>
<div class="ms-3 me-2 text-muted"><ng-container i18n>Filter by</ng-container>:</div>
<div ngbDropdown>
<button class="btn btn-sm btn-outline-primary me-3" ngbDropdownToggle>{{selectedTaskTypeLabel}}</button>
<div class="dropdown-menu shadow" ngbDropdownMenu>
<button ngbDropdownItem [class.active]="selectedTaskType === null" (click)="setTaskType(null)" i18n>All types</button>
@for (option of taskTypeOptions; track option.value) {
<button ngbDropdownItem [class.active]="selectedTaskType === option.value" [disabled]="isTaskTypeOptionDisabled(option.value)" (click)="setTaskType(option.value)">{{option.label}}</button>
}
</div>
</div>
<div ngbDropdown>
<button class="btn btn-sm btn-outline-primary me-3" ngbDropdownToggle>{{selectedTriggerSourceLabel}}</button>
<div class="dropdown-menu shadow" ngbDropdownMenu>
<button ngbDropdownItem [class.active]="selectedTriggerSource === null" (click)="setTriggerSource(null)" i18n>All sources</button>
@for (option of triggerSourceOptions; track option.value) {
<button ngbDropdownItem [class.active]="selectedTriggerSource === option.value" [disabled]="isTriggerSourceOptionDisabled(option.value)" (click)="setTriggerSource(option.value)">{{option.label}}</button>
}
</div>
</div>
<div class="form-inline d-flex align-items-center flex-grow-1 task-search">
<div class="input-group input-group-sm flex-fill w-auto flex-nowrap">
<div ngbDropdown>
<button class="btn btn-sm btn-outline-primary" ngbDropdownToggle>{{filterTargetName}}</button>
<div class="dropdown-menu shadow" ngbDropdownMenu>
@for (t of filterTargets; track t.id) {
<button ngbDropdownItem [class.active]="filterTargetID === t.id" (click)="filterTargetID = t.id">{{t.name}}</button>
}
</div>
</div>
@if (filterText?.length) {
<button class="btn btn-link btn-sm px-2 position-absolute top-0 end-0 z-10" (click)="resetFilter()">
<i-bs width="1em" height="1em" name="x"></i-bs>
</button>
}
<input #filterInput class="form-control form-control-sm" type="text"
(keyup)="filterInputKeyup($event)"
[(ngModel)]="filterText">
</div>
</div>
@if (isFiltered) {
<button class="btn btn-link py-0 ms-md-auto" (click)="resetFilters()">
<i-bs width="1em" height="1em" name="x"></i-bs><small i18n>Reset filters</small>
</button>
}
<ngb-pagination
class="ms-md-3 mb-0"
[pageSize]="pageSize"
[collectionSize]="totalTasks"
[page]="page"
[maxSize]="5"
[rotate]="true"
size="sm"
aria-label="Tasks pagination"
(pageChange)="setPage($event)">
</ngb-pagination>
</div>
<ng-template let-tasks="tasks" let-section="section" #tasksTemplate>
<div class="section-header d-flex align-items-center justify-content-between mb-2">
<div>
<h5 class="mb-0">{{ sectionLabel(section) }}</h5>
<div class="small text-muted">
<ng-container i18n>{tasks.length, plural, =1 {1 task} other {{{tasks.length}} tasks}}</ng-container>
</div>
</div>
</div>
<div class="card border table-responsive mb-3">
<table class="table table-striped align-middle shadow-sm mb-0 tasks-table">
<thead>
<tr>
<th scope="col" class="select-col">
<th scope="col" class="d-table-cell d-lg-none" i18n>Info</th>
<th scope="col" i18n>Actions</th>
</tr>
</thead>
<tbody>
@for (task of tasks | slice: (page-1) * pageSize : page * pageSize; track task.id) {
<tr (click)="toggleSelected(task, $event); $event.stopPropagation();">
<td>
<div class="form-check">
<input
type="checkbox"
class="form-check-input"
[id]="'all-tasks-' + section"
[disabled]="tasks.length === 0"
[checked]="areAllSelected(tasks)"
(click)="toggleSection(section, $event); $event.stopPropagation();"
(keydown)="toggleSection(section, $event); $event.stopPropagation();" />
<label class="form-check-label" for="all-tasks-{{section}}"><span class="visually-hidden">Check all</span></label>
<input type="checkbox" class="form-check-input" id="task{{task.id}}" [checked]="selectedTasks.has(task.id)" (click)="toggleSelected(task, $event); $event.stopPropagation();">
<label class="form-check-label" for="task{{task.id}}"></label>
</div>
</th>
<th scope="col" class="name-col-header" i18n>Name</th>
<th scope="col" class="d-none d-lg-table-cell created-col" i18n>Created</th>
@if (sectionShowsResults(section)) {
<th scope="col" class="d-none d-lg-table-cell results-col" i18n>Results</th>
}
<th scope="col" class="d-table-cell d-lg-none" i18n>Info</th>
<th scope="col" class="actions-col" i18n>Actions</th>
</tr>
</thead>
<tbody>
@for (task of tasks; track task.id) {
<tr (click)="toggleSelected(task); $event.stopPropagation();" (keydown)="toggleSelected(task); $event.stopPropagation();">
<td class="select-col">
<div class="form-check">
<input
type="checkbox"
class="form-check-input"
id="task{{task.id}}"
[checked]="selectedTasks.has(task.id)"
(click)="toggleSelected(task); $event.stopPropagation();"
(keydown)="toggleSelected(task); $event.stopPropagation();" />
<label class="form-check-label" for="task{{task.id}}"></label>
</div>
</td>
<td class="overflow-auto name-col">
<div>{{ taskDisplayName(task) }}</div>
<div class="small text-muted">
@if (taskShowsSeparateTypeLabel(task)) {
<span>{{ task.task_type_display }}</span>
<span class="mx-1">&bull;</span>
}
<span>{{ task.trigger_source_display }}</span>
</div>
</td>
<td class="d-none d-lg-table-cell created-col">{{ task.date_created | customDate:'short' }}</td>
@if (sectionShowsResults(section)) {
<td class="d-none d-lg-table-cell results-col">
@if (taskHasLongResultMessage(task)) {
<div class="result" (click)="expandTask(task); $event.stopPropagation();"
[ngbPopover]="resultPopover" popoverClass="shadow small mobile" triggers="mouseenter:mouseleave" container="body">
<span class="small d-none d-md-inline-block font-monospace text-muted">{{ taskResultPreview(task) }}</span>
</div>
}
@if (taskHasResultMessage(task) && !taskHasLongResultMessage(task)) {
<span class="small d-none d-md-inline-block font-monospace text-muted">{{ taskResultMessage(task) }}</span>
}
@if (duplicateDocumentId(task)) {
<div class="small text-warning-emphasis d-flex align-items-center gap-1 mt-1">
<i-bs class="lh-1" width="1em" height="1em" name="exclamation-triangle"></i-bs>
<span>{{ duplicateTaskLabel(task) }}</span>
</div>
}
<ng-template #resultPopover>
<pre class="small mb-0">{{ taskResultPopoverMessage(task) }}@if (taskResultMessageOverflowsPopover(task)) {
&hellip;
}</pre>
@if (taskResultMessageOverflowsPopover(task)) {
<br/><em>(<ng-container i18n>click for full output</ng-container>)</em>
}
</ng-template>
</td>
}
<td class="d-lg-none">
<button class="btn btn-link" (click)="expandTask(task); $event.stopPropagation();">
<i-bs width="1.2em" height="1.2em" name="info-circle"></i-bs>
</button>
</td>
<td scope="row" class="actions-col">
<div class="btn-group" role="group">
<button class="btn btn-sm btn-outline-secondary" (click)="dismissTask(task); $event.stopPropagation();" *pngxIfPermissions="{ action: PermissionAction.Change, type: PermissionType.PaperlessTask }">
<i-bs name="check" class="me-1"></i-bs><ng-container i18n>Dismiss</ng-container>
</button>
<ng-container *pngxIfPermissions="{ action: PermissionAction.View, type: PermissionType.Document }">
@if (task.related_document_ids?.[0]) {
<a class="btn btn-sm btn-outline-primary" [routerLink]="['/documents', task.related_document_ids[0]]" (click)="dismissTask(task)">
<i-bs name="file-text" class="me-1"></i-bs><ng-container i18n>Open Document</ng-container>
</a>
}
</ng-container>
</div>
</td>
</tr>
<tr>
<td class="px-2 py-0" [class.border-0]="expandedTask !== task.id" [attr.colspan]="sectionShowsResults(section) ? 5 : 4">
<div #collapse="ngbCollapse" [ngbCollapse]="expandedTask !== task.id" class="task-detail-panel bg-darker small mb-0">
<div class="p-2 p-lg-3 ms-lg-3">
@if (taskHasResultMessage(task)) {
<div class="detail-section mb-3">
<div class="detail-label fs-7 fw-bold text-uppercase text-muted mb-1" i18n>Result message</div>
<pre class="detail-block border border-dark bg-body p-3 rounded-2 mb-0">{{ taskResultMessage(task) }}</pre>
</div>
}
@if (duplicateDocumentId(task); as duplicateDocumentId) {
<div class="detail-section mb-3">
<div class="detail-label fs-7 fw-bold text-uppercase text-muted mb-1" i18n>Duplicate</div>
<div class="detail-block border border-dark bg-body p-3 rounded-2 mb-0">
<div class="d-flex align-items-center justify-content-between gap-3">
<div class="text-break">{{ duplicateTaskLabel(task) }}</div>
<button
class="btn btn-sm btn-outline-primary"
type="button"
(click)="openDuplicateDocument(duplicateDocumentId)">
<ng-container i18n>Open</ng-container>
</button>
</div>
</div>
</div>
}
<div class="row g-3">
<div class="col-12 col-xl-6">
<div class="detail-section h-100">
<div class="detail-label fs-7 fw-bold text-uppercase text-muted mb-1" i18n>Input data</div>
<pre class="detail-block border border-dark bg-body p-3 rounded-2 mb-0">{{ task.input_data | json }}</pre>
</div>
</div>
<div class="col-12 col-xl-6">
<div class="detail-section h-100">
<div class="detail-label fs-7 fw-bold text-uppercase text-muted mb-1" i18n>Result data</div>
<pre class="detail-block border border-dark bg-body p-3 rounded-2 mb-0">{{ (task.result_data ?? {}) | json }}</pre>
</div>
</div>
</td>
<td class="overflow-auto name-col">{{ task.task_file_name }}</td>
<td class="d-none d-lg-table-cell">{{ task.date_created | customDate:'short' }}</td>
@if (activeTab !== 'started' && activeTab !== 'queued') {
<td class="d-none d-lg-table-cell">
@if (task.result?.length > 50) {
<div class="result" (click)="expandTask(task); $event.stopPropagation();"
[ngbPopover]="resultPopover" popoverClass="shadow small mobile" triggers="mouseenter:mouseleave" container="body">
<span class="small d-none d-md-inline-block font-monospace text-muted">{{ task.result | slice:0:50 }}&hellip;</span>
</div>
</div>
}
@if (task.result?.length <= 50) {
<span class="small d-none d-md-inline-block font-monospace text-muted">{{ task.result }}</span>
}
<ng-template #resultPopover>
<pre class="small mb-0">{{ task.result | slice:0:300 }}@if (task.result.length > 300) {
&hellip;
}</pre>
@if (task.result?.length > 300) {
<br/><em>(<ng-container i18n>click for full output</ng-container>)</em>
}
</ng-template>
@if (task.duplicate_documents?.length > 0) {
<div class="small text-warning-emphasis d-flex align-items-center gap-1">
<i-bs class="lh-1" width="1em" height="1em" name="exclamation-triangle"></i-bs>
<span i18n>Duplicate(s) detected</span>
</div>
}
</td>
}
<td class="d-lg-none">
<button class="btn btn-link" (click)="expandTask(task); $event.stopPropagation();">
<i-bs width="1.2em" height="1.2em" name="info-circle"></i-bs>
</button>
</td>
<td scope="row">
<div class="btn-group" role="group">
<button class="btn btn-sm btn-outline-secondary" (click)="dismissTask(task); $event.stopPropagation();" *pngxIfPermissions="{ action: PermissionAction.Change, type: PermissionType.PaperlessTask }">
<i-bs name="check" class="me-1"></i-bs><ng-container i18n>Dismiss</ng-container>
</button>
<ng-container *pngxIfPermissions="{ action: PermissionAction.View, type: PermissionType.Document }">
@if (task.related_document) {
<button class="btn btn-sm btn-outline-primary" (click)="dismissAndGo(task); $event.stopPropagation();">
<i-bs name="file-text" class="me-1"></i-bs><ng-container i18n>Open Document</ng-container>
</button>
}
</ng-container>
</div>
</td>
</tr>
<tr>
<td class="p-0" [class.border-0]="expandedTask !== task.id" colspan="5">
<pre #collapse="ngbCollapse" [ngbCollapse]="expandedTask !== task.id" class="small mb-0"><div class="small p-1 p-lg-3 ms-lg-3">{{ task.result }}</div></pre>
</td>
</tr>
}
</tbody>
</table>
</tbody>
</table>
<div class="pb-3 d-sm-flex justify-content-between align-items-center">
@if (tasks.length > 0) {
<div class="pb-2 pb-sm-0">
<ng-container i18n>{tasks.length, plural, =1 {One {{this.activeTabLocalized}} task} other {{{tasks.length || 0}} total {{this.activeTabLocalized}} tasks}}</ng-container>
@if (selectedTasks.size > 0) {
<ng-container i18n>&nbsp;({{selectedTasks.size}} selected)</ng-container>
}
</div>
}
@if (tasks.length > pageSize) {
<ngb-pagination [(page)]="page" [pageSize]="pageSize" [collectionSize]="tasks.length" maxSize="8" size="sm"></ngb-pagination>
}
</div>
</ng-template>
@if (visibleSections.length > 0) {
@for (section of visibleSections; track section) {
<div class="mb-4">
<ng-container [ngTemplateOutlet]="tasksTemplate" [ngTemplateOutletContext]="{tasks: tasksForSection(section), section: section}"></ng-container>
</div>
}
} @else {
<div class="alert alert-secondary fst-italic" i18n>No tasks match the current filters.</div>
}
<ul ngbNav #nav="ngbNav" [(activeId)]="activeTab" class="nav-tabs" (hidden)="duringTabChange()" (navChange)="beforeTabChange()">
<li ngbNavItem="failed">
<a ngbNavLink i18n>Failed@if (tasksService.failedFileTasks.length > 0) {
<span class="badge bg-danger ms-2">{{tasksService.failedFileTasks.length}}</span>
}</a>
<ng-template ngbNavContent>
<ng-container [ngTemplateOutlet]="tasksTemplate" [ngTemplateOutletContext]="{tasks:currentTasks}"></ng-container>
</ng-template>
</li>
<li ngbNavItem="completed">
<a ngbNavLink i18n>Complete@if (tasksService.completedFileTasks.length > 0) {
<span class="badge bg-secondary ms-2">{{tasksService.completedFileTasks.length}}</span>
}</a>
<ng-template ngbNavContent>
<ng-container [ngTemplateOutlet]="tasksTemplate" [ngTemplateOutletContext]="{tasks:currentTasks}"></ng-container>
</ng-template>
</li>
<li ngbNavItem="started">
<a ngbNavLink i18n>Started@if (tasksService.startedFileTasks.length > 0) {
<span class="badge bg-secondary ms-2">{{tasksService.startedFileTasks.length}}</span>
}</a>
<ng-template ngbNavContent>
<ng-container [ngTemplateOutlet]="tasksTemplate" [ngTemplateOutletContext]="{tasks:currentTasks}"></ng-container>
</ng-template>
</li>
<li ngbNavItem="queued">
<a ngbNavLink i18n>Queued@if (tasksService.queuedFileTasks.length > 0) {
<span class="badge bg-secondary ms-2">{{tasksService.queuedFileTasks.length}}</span>
}</a>
<ng-template ngbNavContent>
<ng-container [ngTemplateOutlet]="tasksTemplate" [ngTemplateOutletContext]="{tasks:currentTasks}"></ng-container>
</ng-template>
</li>
</ul>
<div [ngbNavOutlet]="nav"></div>
@@ -16,39 +16,6 @@ pre {
cursor: pointer;
}
.tasks-table {
width: 100%;
}
@media (min-width: 992px) {
.tasks-table {
table-layout: fixed;
}
.tasks-table .select-col {
width: 3rem;
}
.tasks-table .created-col {
width: 13rem;
white-space: nowrap;
}
.tasks-table .results-col {
width: 24%;
}
.tasks-table .actions-col {
width: 18rem;
white-space: nowrap;
}
.tasks-table .name-col,
.tasks-table .results-col {
overflow: hidden;
}
}
.btn .spinner-border-sm {
width: 0.8rem;
height: 0.8rem;
@@ -63,12 +30,10 @@ pre {
.input-group .dropdown .btn {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.z-10 {
z-index: 10;
}
tbody tr:nth-last-child(2) td {
border-bottom: none !important;
}
@@ -9,17 +9,21 @@ import { FormsModule } from '@angular/forms'
import { By } from '@angular/platform-browser'
import { Router } from '@angular/router'
import { RouterTestingModule } from '@angular/router/testing'
import { NgbModal, NgbModalRef, NgbModule } from '@ng-bootstrap/ng-bootstrap'
import {
NgbModal,
NgbModalRef,
NgbModule,
NgbNavItem,
} from '@ng-bootstrap/ng-bootstrap'
import { allIcons, NgxBootstrapIconsModule } from 'ngx-bootstrap-icons'
import { throwError } from 'rxjs'
import { routes } from 'src/app/app-routing.module'
import {
PaperlessTask,
PaperlessTaskName,
PaperlessTaskStatus,
PaperlessTaskTriggerSource,
PaperlessTaskType,
} from 'src/app/data/paperless-task'
import { Results } from 'src/app/data/results'
import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive'
import { PermissionsGuard } from 'src/app/guards/permissions.guard'
import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe'
@@ -29,131 +33,90 @@ import { ToastService } from 'src/app/services/toast.service'
import { environment } from 'src/environments/environment'
import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dialog.component'
import { PageHeaderComponent } from '../../common/page-header/page-header.component'
import { TasksComponent, TaskSection } from './tasks.component'
import { TasksComponent, TaskTab } from './tasks.component'
const tasks: PaperlessTask[] = [
{
id: 467,
task_id: '11ca1a5b-9f81-442c-b2c8-7e4ae53657f1',
input_data: { filename: 'test.pdf' },
task_file_name: 'test.pdf',
date_created: new Date('2023-03-01T10:26:03.093116Z'),
date_done: new Date('2023-03-01T10:26:07.223048Z'),
task_type: PaperlessTaskType.ConsumeFile,
task_type_display: 'Consume File',
trigger_source: PaperlessTaskTriggerSource.FolderConsume,
trigger_source_display: 'Folder Consume',
status: PaperlessTaskStatus.Failure,
status_display: 'Failure',
result_data: {
error_message:
'test.pd: Not consuming test.pdf: It is a duplicate of test (#100)',
},
type: PaperlessTaskType.Auto,
task_name: PaperlessTaskName.ConsumeFile,
status: PaperlessTaskStatus.Failed,
result: 'test.pd: Not consuming test.pdf: It is a duplicate of test (#100)',
acknowledged: false,
related_document_ids: [],
related_document: null,
},
{
id: 466,
task_id: '10ca1a5b-3c08-442c-b2c8-7e4ae53657f1',
input_data: { filename: '191092.pdf' },
task_file_name: '191092.pdf',
date_created: new Date('2023-03-01T09:26:03.093116Z'),
date_done: new Date('2023-03-01T09:26:07.223048Z'),
task_type: PaperlessTaskType.ConsumeFile,
task_type_display: 'Consume File',
trigger_source: PaperlessTaskTriggerSource.FolderConsume,
trigger_source_display: 'Folder Consume',
status: PaperlessTaskStatus.Failure,
status_display: 'Failure',
result_data: { duplicate_of: 311 },
type: PaperlessTaskType.Auto,
task_name: PaperlessTaskName.ConsumeFile,
status: PaperlessTaskStatus.Failed,
result:
'191092.pd: Not consuming 191092.pdf: It is a duplicate of 191092 (#311)',
acknowledged: false,
related_document_ids: [],
related_document: null,
},
{
id: 465,
task_id: '3612d477-bb04-44e3-985b-ac580dd496d8',
input_data: { filename: 'Scan Jun 6, 2023 at 3.19 PM.pdf' },
task_file_name: 'Scan Jun 6, 2023 at 3.19 PM.pdf',
date_created: new Date('2023-06-06T15:22:05.722323-07:00'),
date_done: new Date('2023-06-06T15:22:14.564305-07:00'),
task_type: PaperlessTaskType.ConsumeFile,
task_type_display: 'Consume File',
trigger_source: PaperlessTaskTriggerSource.FolderConsume,
trigger_source_display: 'Folder Consume',
type: PaperlessTaskType.Auto,
task_name: PaperlessTaskName.ConsumeFile,
status: PaperlessTaskStatus.Pending,
status_display: 'Pending',
result_data: null,
result: null,
acknowledged: false,
related_document_ids: [],
related_document: null,
},
{
id: 464,
task_id: '2eac4716-2aa6-4dcd-9953-264e11656d7e',
input_data: { filename: 'paperless-mail-l4dkg8ir' },
task_file_name: 'paperless-mail-l4dkg8ir',
date_created: new Date('2023-06-04T11:24:32.898089-07:00'),
date_done: new Date('2023-06-04T11:24:44.678605-07:00'),
task_type: PaperlessTaskType.ConsumeFile,
task_type_display: 'Consume File',
trigger_source: PaperlessTaskTriggerSource.EmailConsume,
trigger_source_display: 'Email Consume',
status: PaperlessTaskStatus.Success,
status_display: 'Success',
result_data: { document_id: 422, duplicate_of: 99 },
type: PaperlessTaskType.Auto,
task_name: PaperlessTaskName.ConsumeFile,
status: PaperlessTaskStatus.Complete,
result: 'Success. New document id 422 created',
acknowledged: false,
related_document_ids: [422],
related_document: 422,
},
{
id: 463,
task_id: '28125528-1575-4d6b-99e6-168906e8fa5c',
input_data: { filename: 'onlinePaymentSummary.pdf' },
task_file_name: 'onlinePaymentSummary.pdf',
date_created: new Date('2023-06-01T13:49:51.631305-07:00'),
date_done: new Date('2023-06-01T13:49:54.190220-07:00'),
task_type: PaperlessTaskType.ConsumeFile,
task_type_display: 'Consume File',
trigger_source: PaperlessTaskTriggerSource.FolderConsume,
trigger_source_display: 'Folder Consume',
status: PaperlessTaskStatus.Success,
status_display: 'Success',
result_data: { document_id: 421 },
type: PaperlessTaskType.Auto,
task_name: PaperlessTaskName.ConsumeFile,
status: PaperlessTaskStatus.Complete,
result: 'Success. New document id 421 created',
acknowledged: false,
related_document_ids: [421],
related_document: 421,
},
{
id: 462,
task_id: 'a5b9ca47-0c8e-490f-a04c-6db5d5fc09e5',
input_data: { filename: 'paperless-mail-_rrpmqk6' },
task_file_name: 'paperless-mail-_rrpmqk6',
date_created: new Date('2023-06-07T02:54:35.694916Z'),
date_done: null,
task_type: PaperlessTaskType.ConsumeFile,
task_type_display: 'Consume File',
trigger_source: PaperlessTaskTriggerSource.EmailConsume,
trigger_source_display: 'Email Consume',
type: PaperlessTaskType.Auto,
task_name: PaperlessTaskName.ConsumeFile,
status: PaperlessTaskStatus.Started,
status_display: 'Started',
result_data: null,
result: null,
acknowledged: false,
related_document_ids: [],
},
{
id: 461,
task_id: 'bb79efb3-1e78-4f31-b4be-0966620b0ce1',
input_data: { dry_run: false, scope: 'global' },
date_created: new Date('2023-06-07T03:54:35.694916Z'),
date_done: null,
task_type: PaperlessTaskType.SanityCheck,
task_type_display: 'Sanity Check',
trigger_source: PaperlessTaskTriggerSource.System,
trigger_source_display: 'System',
status: PaperlessTaskStatus.Started,
status_display: 'Started',
result_data: { issues_found: 0 },
acknowledged: false,
related_document_ids: [],
related_document: null,
},
]
const paginatedTasks: Results<PaperlessTask> = {
count: tasks.length,
results: tasks,
}
describe('TasksComponent', () => {
let component: TasksComponent
let fixture: ComponentFixture<TasksComponent>
@@ -202,193 +165,60 @@ describe('TasksComponent', () => {
component = fixture.componentInstance
jest.useFakeTimers()
fixture.detectChanges()
httpTestingController
.expectOne(
(req) =>
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false' &&
req.params.get('page_size') === '1000'
`${environment.apiBaseUrl}tasks/?task_name=consume_file&acknowledged=false`
)
.flush(paginatedTasks)
httpTestingController
.expectOne(
(req) =>
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false' &&
req.params.get('page_size') === '25' &&
req.params.get('page') === '1'
)
.flush(paginatedTasks)
.flush(tasks)
})
it('should display task sections with counts', () => {
expect(component.selectedSection).toBe(TaskSection.All)
expect(component.selectedTaskType).toBeNull()
expect(component.selectedTriggerSource).toBeNull()
it('should display file tasks in 4 tabs by status', () => {
const tabButtons = fixture.debugElement.queryAll(By.directive(NgbNavItem))
let currentTasksLength = tasks.filter(
(t) => t.status === PaperlessTaskStatus.Failed
).length
component.activeTab = TaskTab.Failed
fixture.detectChanges()
expect(tabButtons[0].nativeElement.textContent).toEqual(
`Failed${currentTasksLength}`
)
expect(
fixture.debugElement.queryAll(By.css('table input[type="checkbox"]'))
).toHaveLength(currentTasksLength + 1)
const viewScope = fixture.debugElement.query(By.css('.task-view-scope'))
const text = viewScope.nativeElement.textContent
expect(text).toContain('All')
expect(text).toContain('Needs attention')
expect(text).toContain('2')
expect(text).toContain('In progress')
expect(text).toContain('3')
expect(text).toContain('Recently completed')
})
it('should filter visible sections by selected status', () => {
component.setSection(TaskSection.InProgress)
currentTasksLength = tasks.filter(
(t) => t.status === PaperlessTaskStatus.Complete
).length
component.activeTab = TaskTab.Completed
fixture.detectChanges()
expect(tabButtons[1].nativeElement.textContent).toEqual(
`Complete${currentTasksLength}`
)
expect(component.visibleSections).toEqual([TaskSection.InProgress])
expect(fixture.nativeElement.textContent).toContain('In progress')
expect(fixture.nativeElement.textContent).not.toContain('Recent completed')
})
currentTasksLength = tasks.filter(
(t) => t.status === PaperlessTaskStatus.Started
).length
component.activeTab = TaskTab.Started
fixture.detectChanges()
expect(tabButtons[2].nativeElement.textContent).toEqual(
`Started${currentTasksLength}`
)
it('should filter tasks by task type', () => {
component.setSection(TaskSection.InProgress)
component.setTaskType(PaperlessTaskType.SanityCheck)
expect(component.tasksForSection(TaskSection.InProgress)).toHaveLength(1)
expect(component.tasksForSection(TaskSection.InProgress)[0].task_type).toBe(
PaperlessTaskType.SanityCheck
currentTasksLength = tasks.filter(
(t) => t.status === PaperlessTaskStatus.Pending
).length
component.activeTab = TaskTab.Queued
fixture.detectChanges()
expect(tabButtons[3].nativeElement.textContent).toEqual(
`Queued${currentTasksLength}`
)
})
it('should filter tasks by trigger source', () => {
component.setSection(TaskSection.InProgress)
component.setTriggerSource(PaperlessTaskTriggerSource.EmailConsume)
expect(component.tasksForSection(TaskSection.InProgress)).toHaveLength(1)
expect(
component.tasksForSection(TaskSection.InProgress)[0].trigger_source
).toBe(PaperlessTaskTriggerSource.EmailConsume)
})
it('should reset all active filters together', () => {
component.setSection(TaskSection.InProgress)
component.setTaskType(PaperlessTaskType.SanityCheck)
component.setTriggerSource(PaperlessTaskTriggerSource.System)
component.filterText = 'system'
jest.advanceTimersByTime(150)
expect(component.isFiltered).toBe(true)
component.resetFilters()
expect(component.selectedSection).toBe(TaskSection.InProgress)
expect(component.selectedTaskType).toBeNull()
expect(component.selectedTriggerSource).toBeNull()
expect(component.filterText).toBe('')
expect(component.isFiltered).toBe(false)
})
it('should keep header controls focused on actions and auto refresh', () => {
fixture.detectChanges()
const header = fixture.debugElement.query(By.css('pngx-page-header'))
const headerText = header.nativeElement.textContent
expect(headerText).toContain('Dismiss visible')
expect(headerText).toContain('Auto refresh')
expect(headerText).not.toContain('All types')
expect(headerText).not.toContain('All sources')
expect(headerText).not.toContain('Reset filters')
})
it('should render the view scope row above the filter bar', () => {
fixture.detectChanges()
const controls = fixture.debugElement.query(By.css('.task-controls'))
const viewScope = controls.query(By.css('.task-view-scope'))
const search = controls.query(By.css('.task-search'))
expect(viewScope).not.toBeNull()
expect(search).not.toBeNull()
expect(
viewScope.nativeElement.compareDocumentPosition(search.nativeElement) &
Node.DOCUMENT_POSITION_FOLLOWING
).toBeTruthy()
})
it('should render pagination controls next to the task filter', () => {
fixture.detectChanges()
const controls = fixture.debugElement.query(By.css('.task-controls'))
const search = controls.query(By.css('.task-search'))
const pagination = controls.query(By.css('ngb-pagination'))
expect(search).not.toBeNull()
expect(pagination).not.toBeNull()
})
it('should load a different task page when pagination changes', () => {
component.setPage(2)
const pageTwoTasks = {
count: 30,
results: [tasks[0]],
}
httpTestingController
.expectOne(
(req) =>
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false' &&
req.params.get('page_size') === '25' &&
req.params.get('page') === '2'
)
.flush(pageTwoTasks)
expect(component.page).toBe(2)
expect(component.totalTasks).toBe(30)
expect(component.pagedTasks).toEqual([tasks[0]])
})
it('should expose stable task type options and disable empty ones', () => {
expect(component.taskTypeOptions.map((option) => option.value)).toContain(
PaperlessTaskType.TrainClassifier
)
expect(
component.isTaskTypeOptionDisabled(PaperlessTaskType.TrainClassifier)
).toBe(true)
expect(
component.isTaskTypeOptionDisabled(PaperlessTaskType.ConsumeFile)
).toBe(false)
})
it('should fall back to the raw selected task type label when no option matches', () => {
component.selectedTaskType = 'unknown_task_type' as PaperlessTaskType
expect(component.selectedTaskTypeLabel).toBe('unknown_task_type')
})
it('should expose stable trigger source options and disable empty ones', () => {
expect(
component.triggerSourceOptions.map((option) => option.value)
).toContain(PaperlessTaskTriggerSource.ApiUpload)
expect(
component.isTriggerSourceOptionDisabled(
PaperlessTaskTriggerSource.ApiUpload
)
).toBe(true)
expect(
component.isTriggerSourceOptionDisabled(
PaperlessTaskTriggerSource.EmailConsume
)
).toBe(false)
})
it('should fall back to the raw selected trigger source label when no option matches', () => {
component.selectedTriggerSource =
'unknown_trigger_source' as PaperlessTaskTriggerSource
expect(component.selectedTriggerSourceLabel).toBe('unknown_trigger_source')
it('should to go page 1 between tab switch', () => {
component.page = 10
component.duringTabChange()
expect(component.page).toEqual(1)
})
it('should support expanding / collapsing one task at a time', () => {
@@ -400,31 +230,6 @@ describe('TasksComponent', () => {
expect(component.expandedTask).toBeUndefined()
})
it('should show structured task details when expanded', () => {
component.setSection(TaskSection.InProgress)
component.expandTask(tasks[6])
fixture.detectChanges()
const detailText = fixture.nativeElement.textContent
expect(detailText).toContain('Input data')
expect(detailText).toContain('Result data')
expect(detailText).toContain('"scope": "global"')
expect(detailText).toContain('"issues_found": 0')
})
it('should show duplicate warnings and duplicate details when present', () => {
component.setSection(TaskSection.Completed)
component.expandTask(tasks[3])
fixture.detectChanges()
const content = fixture.nativeElement.textContent
expect(content).toContain('Duplicate of document #99')
expect(content).toContain('Duplicate')
expect(content).toContain('Open')
})
it('should support dismiss single task', () => {
const dismissSpy = jest.spyOn(tasksService, 'dismissTasks')
component.dismissTask(tasks[0])
@@ -435,7 +240,7 @@ describe('TasksComponent', () => {
component.toggleSelected(tasks[0])
component.toggleSelected(tasks[1])
component.toggleSelected(tasks[3])
component.toggleSelected(tasks[3])
component.toggleSelected(tasks[3]) // uncheck, for coverage
const selected = new Set([tasks[0].id, tasks[1].id])
expect(component.selectedTasks).toEqual(selected)
let modal: NgbModalRef
@@ -484,70 +289,41 @@ describe('TasksComponent', () => {
expect(component.selectedTasks.size).toBe(0)
})
it('should support dismiss visible tasks', () => {
component.setSection(TaskSection.NeedsAttention)
it('should support dismiss all tasks', () => {
let modal: NgbModalRef
modalService.activeInstances.subscribe((m) => (modal = m[m.length - 1]))
const dismissSpy = jest.spyOn(tasksService, 'dismissTasks')
component.dismissTasks()
expect(modal).not.toBeUndefined()
modal.componentInstance.confirmClicked.emit()
expect(dismissSpy).toHaveBeenCalledWith(new Set([467, 466]))
expect(dismissSpy).toHaveBeenCalledWith(new Set(tasks.map((t) => t.id)))
})
it('should dismiss the currently visible scoped and filtered tasks', () => {
component.setSection(TaskSection.InProgress)
component.setTaskType(PaperlessTaskType.SanityCheck)
component.setTriggerSource(PaperlessTaskTriggerSource.System)
const dismissSpy = jest.spyOn(tasksService, 'dismissTasks')
component.dismissTasks()
expect(dismissSpy).toHaveBeenCalledWith(new Set([461]))
})
it('should support toggling a full section', () => {
component.setSection(TaskSection.NeedsAttention)
fixture.detectChanges()
it('should support toggle all tasks', () => {
const toggleCheck = fixture.debugElement.query(
By.css('#all-tasks-needs_attention')
By.css('table input[type=checkbox]')
)
toggleCheck.nativeElement.dispatchEvent(new MouseEvent('click'))
fixture.detectChanges()
expect(component.selectedTasks).toEqual(
new Set(
tasks
.filter((t) => t.status === PaperlessTaskStatus.Failed)
.map((t) => t.id)
)
)
expect(toggleCheck).not.toBeNull()
toggleCheck.nativeElement.dispatchEvent(new MouseEvent('click'))
fixture.detectChanges()
expect(component.selectedTasks).toEqual(new Set([467, 466]))
})
it('should remove a full section from selection when toggled off', () => {
component.setSection(TaskSection.NeedsAttention)
component.selectedTasks = new Set([467, 466])
component.toggleSection(TaskSection.NeedsAttention, {
target: { checked: false },
} as unknown as PointerEvent)
expect(component.selectedTasks).toEqual(new Set())
})
it('should support dismiss and open a document', () => {
const dismissSpy = jest.spyOn(component, 'dismissTask')
fixture.detectChanges()
const openDocumentLink = fixture.debugElement
.queryAll(By.css('a'))
.find((link) => link.nativeElement.textContent.includes('Open Document'))
expect(openDocumentLink).not.toBeNull()
openDocumentLink.triggerEventHandler(
'click',
new MouseEvent('click', { ctrlKey: true })
)
expect(dismissSpy).toHaveBeenCalledWith(tasks[3])
const routerSpy = jest.spyOn(router, 'navigate')
component.dismissAndGo(tasks[3])
expect(routerSpy).toHaveBeenCalledWith([
'documents',
tasks[3].related_document,
])
})
it('should auto refresh, allow toggle', () => {
@@ -560,127 +336,57 @@ describe('TasksComponent', () => {
})
it('should filter tasks by file name', () => {
fixture.detectChanges()
const input = fixture.debugElement.query(
By.css('.task-search input[type=text]')
By.css('pngx-page-header input[type=text]')
)
expect(input).not.toBeNull()
input.nativeElement.value = '191092'
input.nativeElement.dispatchEvent(new Event('input'))
jest.advanceTimersByTime(150)
jest.advanceTimersByTime(150) // debounce time
fixture.detectChanges()
expect(component.filterText).toEqual('191092')
expect(component.tasksForSection(TaskSection.NeedsAttention)).toHaveLength(
1
)
})
it('should match task type and source in name filtering', () => {
component.setSection(TaskSection.InProgress)
component.filterText = 'system'
jest.advanceTimersByTime(150)
expect(component.tasksForSection(TaskSection.InProgress)).toHaveLength(1)
expect(component.tasksForSection(TaskSection.InProgress)[0].task_type).toBe(
PaperlessTaskType.SanityCheck
)
})
it('should fall back to task type when filename is unavailable', () => {
component.setSection(TaskSection.InProgress)
fixture.detectChanges()
const nameColumn = fixture.debugElement.queryAll(
By.css('tbody td.name-col')
)
const sanityTaskRow = nameColumn.find((cell) =>
cell.nativeElement.textContent.includes('Sanity Check')
)
expect(sanityTaskRow.nativeElement.textContent).toContain('Sanity Check')
expect(sanityTaskRow.nativeElement.textContent).toContain('System')
expect(
fixture.debugElement.queryAll(By.css('table tbody tr')).length
).toEqual(2) // 1 task x 2 lines
})
it('should filter tasks by result', () => {
component.setSection(TaskSection.NeedsAttention)
component.filterTargetID = 1
component.activeTab = TaskTab.Failed
fixture.detectChanges()
component.filterTargetID = 1
const input = fixture.debugElement.query(
By.css('.task-search input[type=text]')
By.css('pngx-page-header input[type=text]')
)
expect(input).not.toBeNull()
input.nativeElement.value = 'duplicate'
input.nativeElement.dispatchEvent(new Event('input'))
jest.advanceTimersByTime(150)
jest.advanceTimersByTime(150) // debounce time
fixture.detectChanges()
expect(component.filterText).toEqual('duplicate')
expect(component.tasksForSection(TaskSection.NeedsAttention)).toHaveLength(
2
)
})
it('should prefer explicit reason in the result message', () => {
expect(
component.taskResultMessage({
...tasks[0],
result_data: { reason: 'Manual review required', duplicate_of: 311 },
})
).toBe('Manual review required')
})
it('should return null preview and popover text when there is no result message', () => {
expect(component.taskResultPreview(tasks[2])).toBeNull()
expect(component.taskResultPopoverMessage(tasks[2])).toBe('')
expect(component.taskResultMessageOverflowsPopover(tasks[2])).toBe(false)
})
it('should navigate to a duplicate document details page', () => {
const routerSpy = jest.spyOn(router, 'navigate')
component.openDuplicateDocument(99)
expect(routerSpy).toHaveBeenCalledWith(['documents', 99, 'details'])
})
it('should report when a result message overflows the popover limit', () => {
const longMessage = 'x'.repeat(350)
const task = {
...tasks[0],
result_data: { error_message: longMessage },
}
expect(component.taskResultPopoverMessage(task)).toBe(
longMessage.slice(0, 300)
)
expect(component.taskResultMessageOverflowsPopover(task)).toBe(true)
fixture.debugElement.queryAll(By.css('table tbody tr')).length
).toEqual(4) // 2 tasks x 2 lines
})
it('should support keyboard events for filtering', () => {
fixture.detectChanges()
const input = fixture.debugElement.query(
By.css('.task-search input[type=text]')
By.css('pngx-page-header input[type=text]')
)
expect(input).not.toBeNull()
input.nativeElement.value = '191092'
input.nativeElement.dispatchEvent(
new KeyboardEvent('keyup', { key: 'Enter' })
)
expect(component.filterText).toEqual('191092')
expect(component.filterText).toEqual('191092') // no debounce needed
input.nativeElement.dispatchEvent(
new KeyboardEvent('keyup', { key: 'Escape' })
)
expect(component.filterText).toEqual('')
})
it('should keep clearing selection independent from resetting filters', () => {
component.setTaskType(PaperlessTaskType.ConsumeFile)
component.toggleSelected(tasks[0])
expect(component.selectedTasks.size).toBe(1)
component.clearSelection()
expect(component.selectedTasks.size).toBe(0)
expect(component.selectedTaskType).toBe(PaperlessTaskType.ConsumeFile)
expect(component.isFiltered).toBe(true)
it('should reset filter and target on tab switch', () => {
component.filterText = '191092'
component.filterTargetID = 1
component.activeTab = TaskTab.Completed
component.beforeTabChange()
expect(component.filterText).toEqual('')
expect(component.filterTargetID).toEqual(0)
})
})
@@ -1,11 +1,12 @@
import { JsonPipe, NgTemplateOutlet } from '@angular/common'
import { NgTemplateOutlet, SlicePipe } from '@angular/common'
import { Component, inject, OnDestroy, OnInit } from '@angular/core'
import { FormsModule, ReactiveFormsModule } from '@angular/forms'
import { Router, RouterLink } from '@angular/router'
import { Router } from '@angular/router'
import {
NgbCollapseModule,
NgbDropdownModule,
NgbModal,
NgbNavModule,
NgbPaginationModule,
NgbPopoverModule,
} from '@ng-bootstrap/ng-bootstrap'
@@ -19,12 +20,7 @@ import {
takeUntil,
timer,
} from 'rxjs'
import {
PaperlessTask,
PaperlessTaskStatus,
PaperlessTaskTriggerSource,
PaperlessTaskType,
} from 'src/app/data/paperless-task'
import { PaperlessTask } from 'src/app/data/paperless-task'
import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive'
import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe'
import { TasksService } from 'src/app/services/tasks.service'
@@ -33,11 +29,11 @@ import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dial
import { PageHeaderComponent } from '../../common/page-header/page-header.component'
import { LoadingComponentWithPermissions } from '../../loading-component/loading.component'
export enum TaskSection {
All = 'all',
NeedsAttention = 'needs_attention',
InProgress = 'in_progress',
export enum TaskTab {
Queued = 'queued',
Started = 'started',
Completed = 'completed',
Failed = 'failed',
}
enum TaskFilterTargetID {
@@ -50,82 +46,6 @@ const FILTER_TARGETS = [
{ id: TaskFilterTargetID.Result, name: $localize`Result` },
]
const SECTION_LABELS = {
[TaskSection.All]: $localize`All`,
[TaskSection.NeedsAttention]: $localize`Needs attention`,
[TaskSection.InProgress]: $localize`In progress`,
[TaskSection.Completed]: $localize`Recently completed`,
}
const TASK_TYPE_OPTIONS: Array<{
value: PaperlessTaskType
label: string
}> = [
{
value: PaperlessTaskType.ConsumeFile,
label: $localize`Consume File`,
},
{
value: PaperlessTaskType.TrainClassifier,
label: $localize`Train Classifier`,
},
{
value: PaperlessTaskType.SanityCheck,
label: $localize`Sanity Check`,
},
{ value: PaperlessTaskType.MailFetch, label: $localize`Mail Fetch` },
{ value: PaperlessTaskType.LlmIndex, label: $localize`LLM Index` },
{
value: PaperlessTaskType.EmptyTrash,
label: $localize`Empty Trash`,
},
{
value: PaperlessTaskType.CheckWorkflows,
label: $localize`Check Workflows`,
},
{
value: PaperlessTaskType.BulkUpdate,
label: $localize`Bulk Update`,
},
{
value: PaperlessTaskType.ReprocessDocument,
label: $localize`Reprocess Document`,
},
{
value: PaperlessTaskType.BuildShareLink,
label: $localize`Build Share Link`,
},
{
value: PaperlessTaskType.BulkDelete,
label: $localize`Bulk Delete`,
},
]
const TRIGGER_SOURCE_OPTIONS: Array<{
value: PaperlessTaskTriggerSource
label: string
}> = [
{
value: PaperlessTaskTriggerSource.Scheduled,
label: $localize`Scheduled`,
},
{ value: PaperlessTaskTriggerSource.WebUI, label: $localize`Web UI` },
{
value: PaperlessTaskTriggerSource.ApiUpload,
label: $localize`API Upload`,
},
{
value: PaperlessTaskTriggerSource.FolderConsume,
label: $localize`Folder Consume`,
},
{
value: PaperlessTaskTriggerSource.EmailConsume,
label: $localize`Email Consume`,
},
{ value: PaperlessTaskTriggerSource.System, label: $localize`System` },
{ value: PaperlessTaskTriggerSource.Manual, label: $localize`Manual` },
]
@Component({
selector: 'pngx-tasks',
templateUrl: './tasks.component.html',
@@ -134,13 +54,13 @@ const TRIGGER_SOURCE_OPTIONS: Array<{
PageHeaderComponent,
IfPermissionsDirective,
CustomDatePipe,
JsonPipe,
SlicePipe,
FormsModule,
ReactiveFormsModule,
NgTemplateOutlet,
RouterLink,
NgbCollapseModule,
NgbDropdownModule,
NgbNavModule,
NgbPaginationModule,
NgbPopoverModule,
NgxBootstrapIconsModule,
@@ -155,22 +75,15 @@ export class TasksComponent
private readonly router = inject(Router)
private readonly toastService = inject(ToastService)
readonly TaskSection = TaskSection
readonly sections = [
TaskSection.NeedsAttention,
TaskSection.InProgress,
TaskSection.Completed,
]
public activeTab: TaskTab
public selectedTasks: Set<number> = new Set()
public togggleAll: boolean = false
public expandedTask: number
public autoRefreshEnabled: boolean = true
public readonly pageSize = 25
public pageSize: number = 25
public page: number = 1
public totalTasks: number = 0
public pagedTasks: PaperlessTask[] = []
public selectedSection: TaskSection = TaskSection.All
public selectedTaskType: PaperlessTaskType | null = null
public selectedTriggerSource: PaperlessTaskTriggerSource | null = null
public autoRefreshEnabled: boolean = true
private _filterText: string = ''
get filterText() {
@@ -182,86 +95,24 @@ export class TasksComponent
public filterTargetID: TaskFilterTargetID = TaskFilterTargetID.Name
public get filterTargetName(): string {
return FILTER_TARGETS.find((t) => t.id == this.filterTargetID).name
return this.filterTargets.find((t) => t.id == this.filterTargetID).name
}
private filterDebounce: Subject<string> = new Subject<string>()
public get filterTargets(): Array<{ id: number; name: string }> {
return FILTER_TARGETS
}
public get taskTypeOptions(): Array<{
value: PaperlessTaskType
label: string
}> {
return TASK_TYPE_OPTIONS
}
public get triggerSourceOptions(): Array<{
value: PaperlessTaskTriggerSource
label: string
}> {
return TRIGGER_SOURCE_OPTIONS
}
public get selectedTaskTypeLabel(): string {
if (this.selectedTaskType === null) {
return $localize`All types`
}
return (
this.taskTypeOptions.find(
(option) => option.value === this.selectedTaskType
)?.label ?? this.selectedTaskType
)
}
public get selectedTriggerSourceLabel(): string {
if (this.selectedTriggerSource === null) {
return $localize`All sources`
}
return (
this.triggerSourceOptions.find(
(option) => option.value === this.selectedTriggerSource
)?.label ?? this.selectedTriggerSource
)
return [TaskTab.Failed, TaskTab.Completed].includes(this.activeTab)
? FILTER_TARGETS
: FILTER_TARGETS.slice(0, 1)
}
get dismissButtonText(): string {
return this.selectedTasks.size > 0
? $localize`Dismiss selected`
: $localize`Dismiss visible`
}
get visibleSections(): TaskSection[] {
const sections =
this.selectedSection === TaskSection.All
? this.sections
: [this.selectedSection]
return sections.filter(
(section) => this.tasksForSection(section).length > 0
)
}
get visibleTasks(): PaperlessTask[] {
return this.visibleSections.flatMap((section) =>
this.tasksForSection(section)
)
}
get isFiltered(): boolean {
return (
this.selectedTaskType !== null ||
this.selectedTriggerSource !== null ||
this._filterText.length > 0
)
: $localize`Dismiss all`
}
ngOnInit() {
this.tasksService.reload()
this.reloadPage()
timer(5000, 5000)
.pipe(
filter(() => this.autoRefreshEnabled),
@@ -269,7 +120,6 @@ export class TasksComponent
)
.subscribe(() => {
this.tasksService.reload()
this.reloadPage(false)
})
this.filterDebounce
@@ -279,10 +129,7 @@ export class TasksComponent
distinctUntilChanged(),
filter((query) => !query.length || query.length > 2)
)
.subscribe((query) => {
this._filterText = query
this.clearSelection()
})
.subscribe((query) => (this._filterText = query))
}
ngOnDestroy() {
@@ -296,25 +143,20 @@ export class TasksComponent
dismissTasks(task: PaperlessTask = undefined) {
let tasks = task ? new Set([task.id]) : new Set(this.selectedTasks.values())
if (!task && tasks.size == 0) {
tasks = new Set(this.visibleTasks.map((t) => t.id))
}
if (!task && tasks.size == 0)
tasks = new Set(this.tasksService.allFileTasks.map((t) => t.id))
if (tasks.size > 1) {
let modal = this.modalService.open(ConfirmDialogComponent, {
backdrop: 'static',
})
modal.componentInstance.title = $localize`Confirm Dismiss`
modal.componentInstance.messageBold = $localize`Dismiss ${tasks.size} tasks?`
modal.componentInstance.title = $localize`Confirm Dismiss All`
modal.componentInstance.messageBold = $localize`Dismiss all ${tasks.size} tasks?`
modal.componentInstance.btnClass = 'btn-warning'
modal.componentInstance.btnCaption = $localize`Dismiss`
modal.componentInstance.confirmClicked.pipe(first()).subscribe(() => {
modal.componentInstance.buttonsEnabled = false
modal.close()
this.tasksService.dismissTasks(tasks).subscribe({
next: () => {
this.reloadPage(false)
},
error: (e) => {
this.toastService.showError($localize`Error dismissing tasks`, e)
modal.componentInstance.buttonsEnabled = true
@@ -322,11 +164,8 @@ export class TasksComponent
})
this.clearSelection()
})
} else if (tasks.size === 1) {
} else {
this.tasksService.dismissTasks(tasks).subscribe({
next: () => {
this.reloadPage(false)
},
error: (e) =>
this.toastService.showError($localize`Error dismissing task`, e),
})
@@ -334,6 +173,11 @@ export class TasksComponent
}
}
dismissAndGo(task: PaperlessTask) {
this.dismissTask(task)
this.router.navigate(['documents', task.related_document])
}
expandTask(task: PaperlessTask) {
this.expandedTask = this.expandedTask == task.id ? undefined : task.id
}
@@ -344,177 +188,75 @@ export class TasksComponent
: this.selectedTasks.add(task.id)
}
toggleSection(section: TaskSection, event: PointerEvent) {
const sectionTasks = this.tasksForSection(section)
get currentTasks(): PaperlessTask[] {
let tasks: PaperlessTask[] = []
switch (this.activeTab) {
case TaskTab.Queued:
tasks = this.tasksService.queuedFileTasks
break
case TaskTab.Started:
tasks = this.tasksService.startedFileTasks
break
case TaskTab.Completed:
tasks = this.tasksService.completedFileTasks
break
case TaskTab.Failed:
tasks = this.tasksService.failedFileTasks
break
}
if (this._filterText.length) {
tasks = tasks.filter((t) => {
if (this.filterTargetID == TaskFilterTargetID.Name) {
return t.task_file_name
.toLowerCase()
.includes(this._filterText.toLowerCase())
} else if (this.filterTargetID == TaskFilterTargetID.Result) {
return t.result.toLowerCase().includes(this._filterText.toLowerCase())
}
})
}
return tasks
}
toggleAll(event: PointerEvent) {
if ((event.target as HTMLInputElement).checked) {
sectionTasks.forEach((task) => this.selectedTasks.add(task.id))
this.selectedTasks = new Set(this.currentTasks.map((t) => t.id))
} else {
sectionTasks.forEach((task) => this.selectedTasks.delete(task.id))
this.clearSelection()
}
}
areAllSelected(tasks: PaperlessTask[]): boolean {
return (
tasks.length > 0 && tasks.every((task) => this.selectedTasks.has(task.id))
)
}
taskDisplayName(task: PaperlessTask): string {
return task.input_data?.filename?.toString() || task.task_type_display
}
taskShowsSeparateTypeLabel(task: PaperlessTask): boolean {
return this.taskDisplayName(task) !== task.task_type_display
}
taskResultMessage(task: PaperlessTask): string | null {
if (!task.result_data) {
return null
}
const documentId = task.result_data?.['document_id']
if (typeof documentId === 'number') {
return $localize`Success. New document id ${documentId} created`
}
const reason = task.result_data?.['reason']
if (typeof reason === 'string') {
return reason
}
const duplicateOf = task.result_data?.['duplicate_of']
if (typeof duplicateOf === 'number') {
return $localize`Duplicate of document #${duplicateOf}`
}
const errorMessage = task.result_data?.['error_message']
if (typeof errorMessage === 'string') {
return errorMessage
}
return null
}
taskResultPreview(task: PaperlessTask): string | null {
const message = this.taskResultMessage(task)
if (!message) {
return null
}
return message.length > 50 ? `${message.slice(0, 50)}...` : message
}
taskHasLongResultMessage(task: PaperlessTask): boolean {
return (this.taskResultMessage(task)?.length ?? 0) > 50
}
taskHasResultMessage(task: PaperlessTask): boolean {
return !!this.taskResultMessage(task)
}
duplicateDocumentId(task: PaperlessTask): number | null {
const duplicateOf = task.result_data?.['duplicate_of']
return typeof duplicateOf === 'number' ? duplicateOf : null
}
duplicateTaskLabel(task: PaperlessTask): string {
return $localize`Duplicate of document #${this.duplicateDocumentId(task)}`
}
openDuplicateDocument(documentId: number) {
this.router.navigate(['documents', documentId, 'details'])
}
taskResultPopoverMessage(task: PaperlessTask): string {
return this.taskResultMessage(task)?.slice(0, 300) ?? ''
}
taskResultMessageOverflowsPopover(task: PaperlessTask): boolean {
return (this.taskResultMessage(task)?.length ?? 0) > 300
}
tasksForSection(section: TaskSection): PaperlessTask[] {
let tasks = this.pagedTasks.filter((task) =>
this.taskBelongsToSection(task, section)
)
return tasks.filter((task) => this.taskMatchesCurrentFilters(task))
}
sectionLabel(section: TaskSection): string {
return SECTION_LABELS[section]
}
sectionCount(section: TaskSection): number {
return this.pagedTasks.filter((task) =>
this.taskBelongsToSection(task, section)
).length
}
sectionShowsResults(section: TaskSection): boolean {
return section !== TaskSection.InProgress
}
setSection(section: TaskSection) {
this.selectedSection = section
this.clearSelection()
}
setTaskType(taskType: PaperlessTaskType | null) {
this.selectedTaskType = taskType
this.clearSelection()
}
setTriggerSource(triggerSource: PaperlessTaskTriggerSource | null) {
this.selectedTriggerSource = triggerSource
this.clearSelection()
}
taskTypeOptionCount(taskType: PaperlessTaskType | null): number {
return this.tasksForOptionCounts({ taskType }).length
}
triggerSourceOptionCount(
triggerSource: PaperlessTaskTriggerSource | null
): number {
return this.tasksForOptionCounts({ triggerSource }).length
}
isTaskTypeOptionDisabled(taskType: PaperlessTaskType | null): boolean {
return this.taskTypeOptionCount(taskType) === 0
}
isTriggerSourceOptionDisabled(
triggerSource: PaperlessTaskTriggerSource | null
): boolean {
return this.triggerSourceOptionCount(triggerSource) === 0
}
clearSelection() {
this.togggleAll = false
this.selectedTasks.clear()
}
setPage(page: number) {
if (this.page === page) {
return
}
duringTabChange() {
this.page = 1
}
this.page = page
this.clearSelection()
this.reloadPage()
beforeTabChange() {
this.resetFilter()
this.filterTargetID = TaskFilterTargetID.Name
}
get activeTabLocalized(): string {
switch (this.activeTab) {
case TaskTab.Queued:
return $localize`queued`
case TaskTab.Started:
return $localize`started`
case TaskTab.Completed:
return $localize`completed`
case TaskTab.Failed:
return $localize`failed`
}
}
public resetFilter() {
this._filterText = ''
}
public resetFilters() {
this.selectedTaskType = null
this.selectedTriggerSource = null
this.resetFilter()
this.clearSelection()
}
filterInputKeyup(event: KeyboardEvent) {
if (event.key == 'Enter') {
this._filterText = (event.target as HTMLInputElement).value
@@ -522,116 +264,4 @@ export class TasksComponent
this.resetFilter()
}
}
private taskBelongsToSection(
task: PaperlessTask,
section: TaskSection
): boolean {
switch (section) {
case TaskSection.NeedsAttention:
return [
PaperlessTaskStatus.Failure,
PaperlessTaskStatus.Revoked,
].includes(task.status)
case TaskSection.InProgress:
return [
PaperlessTaskStatus.Pending,
PaperlessTaskStatus.Started,
].includes(task.status)
case TaskSection.Completed:
return task.status === PaperlessTaskStatus.Success
}
}
private taskMatchesCurrentFilters(task: PaperlessTask): boolean {
return this.taskMatchesFilters(task, {
taskType: this.selectedTaskType,
triggerSource: this.selectedTriggerSource,
})
}
private taskMatchesFilters(
task: PaperlessTask,
{
taskType,
triggerSource,
}: {
taskType: PaperlessTaskType | null
triggerSource: PaperlessTaskTriggerSource | null
}
): boolean {
if (taskType !== null && task.task_type !== taskType) {
return false
}
if (triggerSource !== null && task.trigger_source !== triggerSource) {
return false
}
if (!this._filterText.length) {
return true
}
const query = this._filterText.toLowerCase()
if (this.filterTargetID == TaskFilterTargetID.Name) {
return [
this.taskDisplayName(task),
task.task_type_display,
task.trigger_source_display,
]
.filter(Boolean)
.some((value) => value.toLowerCase().includes(query))
}
return this.taskResultMessage(task)?.toLowerCase().includes(query) ?? false
}
private tasksForOptionCounts({
taskType = this.selectedTaskType,
triggerSource = this.selectedTriggerSource,
}: {
taskType?: PaperlessTaskType | null
triggerSource?: PaperlessTaskTriggerSource | null
}): PaperlessTask[] {
const sections =
this.selectedSection === TaskSection.All
? this.sections
: [this.selectedSection]
return this.pagedTasks.filter(
(task) =>
sections.some((section) => this.taskBelongsToSection(task, section)) &&
this.taskMatchesFilters(task, { taskType, triggerSource })
)
}
private reloadPage(resetToFirstPage: boolean = false) {
if (resetToFirstPage) {
this.page = 1
}
this.loading = true
this.tasksService
.list(this.page, this.pageSize, { acknowledged: false })
.pipe(first(), takeUntil(this.unsubscribeNotifier))
.subscribe({
next: (result) => {
this.pagedTasks = result.results
this.totalTasks = result.count
this.loading = false
if (
this.page > 1 &&
this.pagedTasks.length === 0 &&
this.totalTasks > 0
) {
this.page -= 1
this.reloadPage()
}
},
error: () => {
this.loading = false
},
})
}
}
@@ -8,8 +8,10 @@
[ngClass]="{ 'slim': slimSidebarEnabled, 'col-auto col-md-3 col-lg-2 col-xxxl-1' : !slimSidebarEnabled, 'py-3' : !customAppTitle?.length || slimSidebarEnabled, 'py-2': customAppTitle?.length }"
routerLink="/dashboard"
tourAnchor="tour.intro">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000" width="1.5em" height="1.5em" fill="currentColor">
<path d="M341,949.1c-6.9-20.3-20.7-61.2-21.9-61-199.6-88.9-182.5-229.8-134.3-347.5,30,137.2,268.8,148.9,146.2,336-.9,2.2,10,27.8,19.5,51.3,22.7-51.9,58.6-115.5,55.8-120.8C178,398.7,724.9,299,807.1,18.5c83,251.5,53.1,659.8-377.4,814.9-2,1.4-63.5,148.6-66.9,150.2-.2-2.1-33.2,2.9-30.1-8.7,1.6-7,4.8-16.2,8.2-25.6h0v-.2h.1ZM323.1,846.2c48.3-71.9-12.7-120.8-56.9-152.2,81.2,107.4,66.4,120.8,56.9,152.2h0Z"/>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 198.43 238.91" width="1em" height="1.5em" fill="currentColor">
<path
d="M194.7,0C164.22,70.94,17.64,79.74,64.55,194.06c.58,1.47-10.85,17-18.47,29.9-1.76-6.45-3.81-13.48-3.52-14.07,38.11-45.14-27.26-70.65-30.78-107.58C-4.64,131.62-10.5,182.92,39,212.53c.3,0,2.64,11.14,3.81,16.71a58.55,58.55,0,0,0-2.93,6.45c-1.17,2.93,7.62,2.64,7.62,3.22.88-.29,21.7-36.93,22.28-37.23C187.67,174.72,208.48,68.6,194.7,0ZM134.61,74.75C79.5,124,70.12,160.64,71.88,178.53,53.41,134.85,107.64,86.77,134.61,74.75ZM28.2,145.11c10.55,9.67,28.14,39.28,13.19,56.57C44.91,193.77,46.08,175.89,28.2,145.11Z"
transform="translate(0 0)" />
</svg>
<div class="ms-2 ms-md-3 d-inline-block" [class.d-md-none]="slimSidebarEnabled">
@if (customAppTitle?.length) {
@@ -292,13 +294,13 @@
*pngxIfPermissions="{ action: PermissionAction.View, type: PermissionType.PaperlessTask }"
tourAnchor="tour.file-tasks">
<a class="nav-link" routerLink="tasks" routerLinkActive="active" (click)="closeMenu()"
ngbPopover="Tasks" i18n-ngbPopover [disablePopover]="!slimSidebarEnabled" placement="end"
ngbPopover="File Tasks" i18n-ngbPopover [disablePopover]="!slimSidebarEnabled" placement="end"
container="body" triggers="mouseenter:mouseleave" popoverClass="popover-slim">
<i-bs class="me-2" name="list-task"></i-bs><span><ng-container i18n>Tasks</ng-container>@if (tasksService.needsAttentionTasks.length > 0) {
<span><span class="badge bg-danger ms-2 d-inline">{{tasksService.needsAttentionTasks.length}}</span></span>
<i-bs class="me-2" name="list-task"></i-bs><span><ng-container i18n>File Tasks</ng-container>@if (tasksService.failedFileTasks.length > 0) {
<span><span class="badge bg-danger ms-2 d-inline">{{tasksService.failedFileTasks.length}}</span></span>
}</span>
@if (tasksService.needsAttentionTasks.length > 0 && slimSidebarEnabled) {
<span class="badge bg-danger position-absolute top-0 end-0 d-none d-md-block">{{tasksService.needsAttentionTasks.length}}</span>
@if (tasksService.failedFileTasks.length > 0 && slimSidebarEnabled) {
<span class="badge bg-danger position-absolute top-0 end-0 d-none d-md-block">{{tasksService.failedFileTasks.length}}</span>
}
</a>
</li>
@@ -94,18 +94,12 @@ main {
}
.sidebar.slim:not(.animating) {
transition: none;
li.nav-item span,
.sidebar-heading span {
display: none;
}
}
.sidebar.slim:not(.animating) ~ main.col-slim {
transition: none;
}
.sidebar.animating {
li.nav-item span,
.sidebar-heading span {
@@ -36,7 +36,6 @@ import { RemoteVersionService } from 'src/app/services/rest/remote-version.servi
import { SavedViewService } from 'src/app/services/rest/saved-view.service'
import { SearchService } from 'src/app/services/rest/search.service'
import { SettingsService } from 'src/app/services/settings.service'
import { TasksService } from 'src/app/services/tasks.service'
import { ToastService } from 'src/app/services/toast.service'
import { environment } from 'src/environments/environment'
import { ProfileEditDialogComponent } from '../common/profile-edit-dialog/profile-edit-dialog.component'
@@ -98,7 +97,6 @@ describe('AppFrameComponent', () => {
let savedViewSpy
let modalService: NgbModal
let maybeRefreshSpy
let tasksService: TasksService
beforeEach(async () => {
TestBed.configureTestingModule({
@@ -176,7 +174,6 @@ describe('AppFrameComponent', () => {
openDocumentsService = TestBed.inject(OpenDocumentsService)
modalService = TestBed.inject(NgbModal)
router = TestBed.inject(Router)
tasksService = TestBed.inject(TasksService)
jest
.spyOn(settingsService, 'displayName', 'get')
@@ -447,16 +444,6 @@ describe('AppFrameComponent', () => {
expect(maybeRefreshSpy).toHaveBeenCalled()
})
it('should show tasks badge for needs-attention tasks', () => {
jest
.spyOn(tasksService, 'needsAttentionTasks', 'get')
.mockReturnValue([{} as any, {} as any])
fixture.detectChanges()
expect(fixture.nativeElement.textContent).toContain('Tasks2')
})
it('should indicate attributes management availability when any permission is granted', () => {
jest
.spyOn(permissionsService, 'currentUserCan')
@@ -8,21 +8,10 @@
<div class="chat-messages font-monospace small">
@for (message of messages; track message) {
<div class="message d-flex flex-row small" [class.justify-content-end]="message.role === 'user'">
<div class="p-2 m-2" [class.bg-dark]="message.role === 'user'">
<span>
{{ message.content }}
@if (message.isStreaming) { <span class="blinking-cursor">|</span> }
</span>
@if (message.role === 'assistant' && message.references?.length) {
<div class="chat-references list-group mt-3">
@for (reference of message.references; track reference.id) {
<a class="list-group-item list-group-item-action text-primary" [routerLink]="['/documents', reference.id]">
<i-bs width="0.9em" height="0.9em" name="file-text" class="me-1"></i-bs><span>{{ reference.title }}</span>
</a>
}
</div>
}
</div>
<span class="p-2 m-2" [class.bg-dark]="message.role === 'user'">
{{ message.content }}
@if (message.isStreaming) { <span class="blinking-cursor">|</span> }
</span>
</div>
}
<div #scrollAnchor></div>
@@ -7,10 +7,6 @@
overflow-y: auto;
}
.chat-references {
font-family: var(--bs-font-sans-serif);
}
.dropdown-toggle::after {
display: none;
}
@@ -3,13 +3,9 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'
import { ElementRef } from '@angular/core'
import { ComponentFixture, TestBed } from '@angular/core/testing'
import { NavigationEnd, Router } from '@angular/router'
import { RouterTestingModule } from '@angular/router/testing'
import { allIcons, NgxBootstrapIconsModule } from 'ngx-bootstrap-icons'
import { Subject } from 'rxjs'
import {
CHAT_METADATA_DELIMITER,
ChatService,
} from 'src/app/services/chat.service'
import { ChatService } from 'src/app/services/chat.service'
import { ChatComponent } from './chat.component'
describe('ChatComponent', () => {
@@ -22,11 +18,7 @@ describe('ChatComponent', () => {
beforeEach(async () => {
TestBed.configureTestingModule({
imports: [
NgxBootstrapIconsModule.pick(allIcons),
RouterTestingModule,
ChatComponent,
],
imports: [NgxBootstrapIconsModule.pick(allIcons), ChatComponent],
providers: [
provideHttpClient(withInterceptorsFromDi()),
provideHttpClientTesting(),
@@ -92,57 +84,6 @@ describe('ChatComponent', () => {
expect(component.messages[1].isStreaming).toBe(false)
})
it('should parse references from the metadata trailer without showing it', () => {
component.input = 'Hello'
component.sendMessage()
mockStream$.next(
`Hi there${CHAT_METADATA_DELIMITER}{"references":[{"id":42,"title":"Bread Recipe"}]}`
)
jest.advanceTimersByTime(1000)
expect(component.messages[1].content).toBe('Hi there')
expect(component.messages[1].references).toEqual([
{ id: 42, title: 'Bread Recipe' },
])
})
it('should render document reference links under assistant messages', () => {
component.input = 'Hello'
component.sendMessage()
mockStream$.next(
`Hi there${CHAT_METADATA_DELIMITER}{"references":[{"id":42,"title":"Bread Recipe"}]}`
)
jest.advanceTimersByTime(1000)
fixture.detectChanges()
const link = fixture.nativeElement.querySelector('.chat-references a')
expect(link.textContent).toContain('Bread Recipe')
expect(link.getAttribute('href')).toContain('/documents/42')
})
it('should remove delimiter fragments that were already streamed', () => {
component.input = 'Hello'
component.sendMessage()
mockStream$.next(`Hi there${CHAT_METADATA_DELIMITER.slice(0, 8)}`)
jest.advanceTimersByTime(1000)
expect(component.messages[1].content).toBe(
`Hi there${CHAT_METADATA_DELIMITER.slice(0, 8)}`
)
mockStream$.next(
`Hi there${CHAT_METADATA_DELIMITER}{"references":[{"id":42,"title":"Bread Recipe"}]}`
)
jest.advanceTimersByTime(1000)
expect(component.messages[1].content).toBe('Hi there')
expect(component.messages[1].references).toEqual([
{ id: 42, title: 'Bread Recipe' },
])
})
it('should handle errors during streaming', () => {
component.input = 'Hello'
component.sendMessage()
@@ -1,21 +1,16 @@
import { Component, ElementRef, inject, OnInit, ViewChild } from '@angular/core'
import { FormsModule, ReactiveFormsModule } from '@angular/forms'
import { NavigationEnd, Router, RouterModule } from '@angular/router'
import { NavigationEnd, Router } from '@angular/router'
import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'
import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons'
import { filter, map } from 'rxjs'
import {
ChatMessage,
ChatService,
parseChatResponse,
} from 'src/app/services/chat.service'
import { ChatMessage, ChatService } from 'src/app/services/chat.service'
@Component({
selector: 'pngx-chat',
imports: [
FormsModule,
ReactiveFormsModule,
RouterModule,
NgxBootstrapIconsModule,
NgbDropdownModule,
],
@@ -75,24 +70,13 @@ export class ChatComponent implements OnInit {
this.messages.push(assistantMessage)
this.loading = true
let lastVisibleContent = ''
let lastPartialLength = 0
this.chatService.streamChat(this.documentId, this.input).subscribe({
next: (chunk) => {
const nextResponse = parseChatResponse(chunk)
if (nextResponse.content.length < lastVisibleContent.length) {
this.resetTypewriter(assistantMessage, nextResponse.content)
lastVisibleContent = nextResponse.content
} else {
const visibleDelta = nextResponse.content.substring(
lastVisibleContent.length
)
lastVisibleContent = nextResponse.content
this.enqueueTypewriter(visibleDelta, assistantMessage)
}
assistantMessage.references = nextResponse.references
const delta = chunk.substring(lastPartialLength)
lastPartialLength = chunk.length
this.enqueueTypewriter(delta, assistantMessage)
},
error: () => {
assistantMessage.content += '\n\n⚠️ Error receiving response.'
@@ -109,13 +93,6 @@ export class ChatComponent implements OnInit {
this.input = ''
}
private resetTypewriter(message: ChatMessage, content: string): void {
this.typewriterBuffer = []
this.typewriterActive = false
message.content = content
this.scrollToBottom()
}
enqueueTypewriter(chunk: string, message: ChatMessage): void {
if (!chunk) return
@@ -86,7 +86,7 @@
<div class="selected-icon">
@if (addedRelativeDate) {
<a class="text-light focus-variants" href="javascript:void(0)" (click)="clearAddedRelativeDate()">
<i-bs width="1em" height="1em" name="check" class="variant-unfocused text-dark"></i-bs>
<i-bs width="1em" height="1em" name="check" class="variant-unfocused"></i-bs>
<i-bs width="1em" height="1em" name="x" class="variant-focused text-primary"></i-bs>
</a>
}
@@ -1,22 +1,22 @@
@if (customLogo) {
<img src="{{customLogo}}" [class]="getClasses()" [attr.style]="'height:'+height" />
} @else {
<svg [class]="getClasses()" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2670 860" [attr.style]="'height:'+height">
<path class="leaf" style="fill:#005616;" d="M2227.4,821.2c-6.1-17.8-18.1-53.6-19.2-53.4-174.7-77.8-159.8-201.2-117.5-304.2,26.3,120.1,235.3,130.3,128,294.1-.7,2,8.8,24.3,17.1,44.9,19.9-45.4,51.3-101.1,48.8-105.7-199.9-357.4,278.8-444.7,350.7-690.2,72.6,220.1,46.5,577.5-330.4,713.3-1.8,1.2-55.6,130-58.5,131.4-.2-1.9-29.1,2.5-26.4-7.6,1.4-6.2,4.2-14.2,7.2-22.4h0v-.2h.2,0ZM2211.7,731.2c42.3-62.9-11.1-105.7-49.8-133.2,71,94,58.1,105.7,49.8,133.2h0Z"/>
<g class="text" style="fill: #000;">
<path class="st1" d="M654.6,393.2l-.7,137.7h-85.5V188.7h85.4c.4,11.3-.3,21.7,1.3,33.8,23.1-34.1,62.3-50,101.1-38.3,16.5,5,29.6,16.4,39.7,30,34.4,46.5,35.1,134,3.6,182.2-10.1,14.4-22.5,26.9-39,33.4-39.5,15.7-81,1.1-105.9-36.6h0ZM721,362.2c21-26.1,21-82.7-.4-108.4-13.2-15.9-36.4-16.1-49.9-.4-22.2,25.8-21.7,85.3.5,110.1,13.6,15.2,36.6,15,49.7-1.3h.1Z"/>
<path class="st1" d="M164,301l-72.8.7v126.1H3.4V98.1l159.7.5c31.3,0,58.9,13.6,79.4,36.1,30.8,37.6,30.9,91.7.6,129.6-20.1,22.8-47.6,36.5-79,36.8h-.1ZM176.8,199.8c0-20.8-15.1-35-34.7-35l-51,.2v69.5l53.6-.2c18.5,0,32-15.8,32.2-34.5h-.1Z"/>
<polygon class="st1" points="1338.2 427.8 1338 366 1412.4 365.8 1412.5 139.3 1338.1 139.1 1338.1 77.4 1498.1 77.4 1498.1 365.7 1572.3 365.9 1572.5 427.7 1338.2 427.8"/>
<path class="st1" d="M1741.8,364.3c9.1-8.6,14-18.1,17.7-30.3l68.4,13.3c-10.5,45.2-46.5,79.2-92.3,86.7-59.2,9.6-118.7-14.2-138.6-73.7-10.9-32.7-10.7-68.6.6-100.9,17.7-50.6,64.3-80.5,117.1-79.1,76.5,2,113.4,65.4,111.1,136.1h-155.4c-.7,12.5,3,25,9.7,35.9,13.2,21.3,40.9,26.9,61.5,12h.2ZM1749.4,273.1c-2.4-10.8-6.9-18-13.9-24.6-12.8-8.3-30.1-9.5-43.4-1.1-9.3,5.8-14.6,15.1-18,25.7h75.3Z"/>
<path class="st1" d="M1010.3,364.3c9.1-8.5,13.9-18.1,17.7-30.3l68.4,13.3c-10.4,45.2-46.5,79.2-92.3,86.7-59.3,9.6-118.8-14.2-138.7-73.9-10.8-32.3-10.6-67.4.2-99.3,17.3-51.2,64.2-81.8,117.6-80.4,76.6,2,113.5,65.3,111.1,136.1h-155.6c-.2,12.7,3.2,25.1,9.9,35.9,13.2,21.3,40.9,27,61.5,12h.2ZM1018,273.2c-2.4-9.4-6.3-18.5-14.2-24.4-12.3-9.1-30.4-9.4-43.3-1.3-9.3,5.9-14.4,15.1-17.9,25.6h75.4Z"/>
<path class="st1" d="M424.3,376.9c-7.1,13.6-12.5,25.7-23.2,35.5-14.3,13.3-32.6,19.3-52.3,19.4-40.4.2-75.6-23.1-73.6-65.7.9-20.1,9.7-37.2,26.5-49.2,30.5-21.8,55.8-22.4,87.8-40.6,8.1-4.6,18.2-15.3,12.4-22.2s-5-3-8-3.7h-96.3v-61.8h109.6c14.7.6,28.1,2.2,41.7,7.2,23.7,8.8,39.6,29.5,39.8,55.2l.7,90.6c0,13.5,11,23,23.7,23.9l10.1.7v61.3h-29.9c-13.1,0-25.9-3-37.3-8.6-16.9-8.2-26.9-22.2-31.6-42.2h0v.2h-.1ZM364.9,370.1c6.8,5.9,16.2,6.5,24.8,2.7,18.1-7.9,16.5-38.3,16.1-55-3.6,4.3-7.4,9-12.5,11.2l-21.1,9.3c-5.8,2.5-10.6,8-11.8,13s-1,13.8,4.7,18.7h-.2Z"/>
<path class="st1" d="M1943,430.1c-33.5-8.9-68.5-33.6-78.9-68.9l66.6-27.2c11.8,22.1,31.6,42.1,57.2,39.8,4.3-.4,9.3-3.1,11.2-6,7.8-12.5-4.3-24.3-16.2-30.7l-47.3-25.2c-32.2-17.1-57.7-50.7-41.6-87.4,11.9-27,48.1-35,75.3-36h99.2v61.8h-88.6c-2.5.4-6.2,2.3-7,4.2s.7,7,2.7,8.2c31.6,18.6,88.3,38.3,103.8,72,10.4,22.6,6.7,50-9.2,69.1-29.5,35.7-86.1,36.9-127,26.1v.2h-.2,0Z"/>
<path class="st1" d="M1318.2,264.3l-68.5.2c-19.4,0-30.1,10.8-31.6,30.2v133.1h-85.7v-239h85.6l1,58.9,11.9-25.1c14.3-30.5,56.9-36.5,87.4-33.6v75.4h-.1Z"/>
<path class="st1" d="M2232.8,374.2c-26,1.2-44.6-18.4-56.5-40.1l-66.5,27.3c10.8,35.9,46.2,60.4,80.3,69.2h0c10.6,2.6,22,4.5,33.7,5.2,3.2-7.9,6.8-15.6,10.8-23.4,18.5-35.9,44.3-68.4,73.8-98.8-23.6-21.1-62.6-36.7-87-50.6-2.2-1.2-3.6-6.7-2.7-8.7.9-2,4.5-3.5,7.4-3.9h88.2v-61.8h-97.4c-27,.7-63.8,8.2-76.5,34.8-8.3,17.5-6.8,38.5,3.5,54.9,9.3,14.9,22.2,25.8,37.7,33.9l45.8,24.3c11.5,6.1,24.7,17,17.9,30.5-2.1,4.1-7.4,6.5-12.6,7.2h.1Z"/>
<path class="st1" d="M1547.6,801.6h81.2c11.6-.2,23.2-3.8,31.9-11.2,7.3-6.2,11.7-15.4,13.9-24.8l16.8-72.7c-7.2,9-12.8,16.9-20.7,24.2-18.3,16.8-42.3,23.8-66.9,19.5-32.5-5.7-46.7-34.7-47-65.6-.5-44,18.9-93.6,57.6-117.1,18-10.9,39.5-13.9,60-9.6,12.4,2.6,22.1,9.9,29.1,20,5.8,8.4,7.8,17.2,10.8,27.8l10.7-45.4,15.6.3-50.6,219.5c-2.9,12.6-8.9,24.6-18.4,32.9-12,10.4-28.1,15.1-44,15.2l-82.9.2,2.7-13.1h.2ZM1691.8,673.5c12.9-26.3,20.1-60.3,11-88.6-5.1-15.8-17.9-26.5-34.2-28.8-20.7-2.9-40.3,2.9-55.9,16.8-13.6,12.1-23.5,26.7-30.3,43.7-9.8,24.4-14.8,56.5-4.6,81.1,5,12.1,14.7,21.3,27.6,24.7,39,10.3,70.1-16,86.4-49h0Z"/>
<path class="st1" d="M1441.6,556.8c-43.6-8.7-84.4,29.7-93.8,70l-24.8,106.6h-15.7l43.1-186.4,15.6-.2-8.6,39.5c22.3-28.9,53.9-49.3,90.7-42.5,16.8,3.1,29.1,15.6,32.1,32.4,2.1,11.6,1.6,23.4-1.1,35.3l-28.1,122.2h-15.6c0,0,27.5-119.9,27.5-119.9,4.7-20.6,5.9-51.3-21.2-56.7v-.3Z"/>
<path class="st1" d="M1958.9,733.3h-16.2l-38.2-90.1-79.8,90.3-19.3-.2,77.6-87.2c5.1-5.7,11-10.1,17.2-14.5-4.6-4.7-8.5-9.6-11.3-15.3l-33.9-69.3,16.2-.2,35.3,74.1,69-73.9c6.6-.3,12.7-.3,19.6.2l-63.1,66.6c-6.4,6.8-13.4,12.5-20.9,18,3.4,3.4,7.5,7.5,9.6,12.4l38.3,89.2h-.1Z"/>
<path class="st1" d="M1224.4,635.4H3.4c1.1-5.6,1.9-9.5,3.1-13.9h1220.9l-2.9,13.9h0Z"/>
</g>
<svg [class]="getClasses()" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2897.4 896.6" [attr.style]="'height:'+height">
<path class="leaf" d="M140,713.7c-3.4-16.4-10.3-49.1-11.2-49.1c-145.7-87.1-128.4-238-80.2-324.2C59,449,251.2,524,139.1,656.8 c-0.9,1.7,5.2,22.4,10.3,41.4c22.4-37.9,56-83.6,54.3-87.9C65.9,273.9,496.9,248.1,586.6,39.4c40.5,201.8-20.7,513.9-367.2,593.2 c-1.7,0.9-62.9,108.6-65.5,109.5c0-1.7-25.9-0.9-22.4-9.5C133.1,727.4,136.6,720.6,140,713.7L140,713.7z M135.7,632.6 c44-50.9-7.8-137.9-38.8-166.4C149.5,556.7,146,609.3,135.7,632.6L135.7,632.6z" transform="translate(0)" style="fill:#17541f"/>
<g class="text" style="fill:#000">
<path d="M1022.3,428.7c-17.8-19.9-42.7-29.8-74.7-29.8c-22.3,0-42.4,5.7-60.5,17.3c-18.1,11.6-32.3,27.5-42.5,47.8 s-15.3,42.9-15.3,67.8c0,24.9,5.1,47.5,15.3,67.8c10.3,20.3,24.4,36.2,42.5,47.8c18.1,11.5,38.3,17.3,60.5,17.3 c32,0,56.9-9.9,74.7-29.8v20.4v0.2h84.5V408.3h-84.5V428.7z M1010.5,575c-10.2,11.7-23.6,17.6-40.2,17.6s-29.9-5.9-40-17.6 s-15.1-26.1-15.1-43.3c0-17.1,5-31.6,15.1-43.3s23.4-17.6,40-17.6c16.6,0,30,5.9,40.2,17.6s15.3,26.1,15.3,43.3 S1020.7,563.3,1010.5,575z" transform="translate(0)"/>
<path d="M1381,416.1c-18.1-11.5-38.3-17.3-60.5-17.4c-32,0-56.9,9.9-74.7,29.8v-20.4h-84.5v390.7h84.5v-164 c17.8,19.9,42.7,29.8,74.7,29.8c22.3,0,42.4-5.7,60.5-17.3s32.3-27.5,42.5-47.8c10.2-20.3,15.3-42.9,15.3-67.8s-5.1-47.5-15.3-67.8 C1413.2,443.6,1399.1,427.7,1381,416.1z M1337.9,575c-10.1,11.7-23.4,17.6-40,17.6s-29.9-5.9-40-17.6s-15.1-26.1-15.1-43.3 c0-17.1,5-31.6,15.1-43.3s23.4-17.6,40-17.6s29.9,5.9,40,17.6s15.1,26.1,15.1,43.3S1347.9,563.3,1337.9,575z" transform="translate(0)"/>
<path d="M1672.2,416.8c-20.5-12-43-18-67.6-18c-24.9,0-47.6,5.9-68,17.6c-20.4,11.7-36.5,27.7-48.2,48s-17.6,42.7-17.6,67.3 c0.3,25.2,6.2,47.8,17.8,68c11.5,20.2,28,36,49.3,47.6c21.3,11.5,45.9,17.3,73.8,17.3c48.6,0,86.8-14.7,114.7-44l-52.5-48.9 c-8.6,8.3-17.6,14.6-26.7,19c-9.3,4.3-21.1,6.4-35.3,6.4c-11.6,0-22.5-3.6-32.7-10.9c-10.3-7.3-17.1-16.5-20.7-27.8h180l0.4-11.6 c0-29.6-6-55.7-18-78.2S1692.6,428.8,1672.2,416.8z M1558.3,503.2c2.1-12.1,7.5-21.8,16.2-29.1s18.7-10.9,30-10.9 s21.2,3.6,29.8,10.9c8.6,7.2,13.9,16.9,16,29.1H1558.3z" transform="translate(0)"/>
<path d="M1895.3,411.7c-11,5.6-20.3,13.7-28,24.4h-0.1v-28h-84.5v247.3h84.5V536.3c0-22.6,4.7-38.1,14.2-46.5 c9.5-8.5,22.7-12.7,39.6-12.7c6.2,0,13.5,1,21.8,3.1l10.7-72c-5.9-3.3-14.5-4.9-25.8-4.9C1917.1,403.3,1906.3,406.1,1895.3,411.7z" transform="translate(0)"/>
<rect x="1985" y="277.4" width="84.5" height="377.8" transform="translate(0)"/>
<path d="M2313.2,416.8c-20.5-12-43-18-67.6-18c-24.9,0-47.6,5.9-68,17.6s-36.5,27.7-48.2,48c-11.7,20.3-17.6,42.7-17.6,67.3 c0.3,25.2,6.2,47.8,17.8,68c11.5,20.2,28,36,49.3,47.6c21.3,11.5,45.9,17.3,73.8,17.3c48.6,0,86.8-14.7,114.7-44l-52.5-48.9 c-8.6,8.3-17.6,14.6-26.7,19c-9.3,4.3-21.1,6.4-35.3,6.4c-11.6,0-22.5-3.6-32.7-10.9c-10.3-7.3-17.1-16.5-20.7-27.8h180l0.4-11.6 c0-29.6-6-55.7-18-78.2S2333.6,428.8,2313.2,416.8z M2199.3,503.2c2.1-12.1,7.5-21.8,16.2-29.1s18.7-10.9,30-10.9 s21.2,3.6,29.8,10.9c8.6,7.2,13.9,16.9,16,29.1H2199.3z" transform="translate(0)"/>
<path d="M2583.6,507.7c-13.8-4.4-30.6-8.1-50.5-11.1c-15.1-2.7-26.1-5.2-32.9-7.6c-6.8-2.4-10.2-6.1-10.2-11.1s2.3-8.7,6.7-10.9 c4.4-2.2,11.5-3.3,21.3-3.3c11.6,0,24.3,2.4,38.1,7.2c13.9,4.8,26.2,11,36.9,18.4l32.4-58.2c-11.3-7.4-26.2-14.7-44.9-21.8 c-18.7-7.1-39.6-10.7-62.7-10.7c-33.7,0-60.2,7.6-79.3,22.7c-19.1,15.1-28.7,36.1-28.7,63.1c0,19,4.8,33.9,14.4,44.7 c9.6,10.8,21,18.5,34,22.9c13.1,4.5,28.9,8.3,47.6,11.6c14.6,2.7,25.1,5.3,31.6,7.8s9.8,6.5,9.8,11.8c0,10.4-9.7,15.6-29.3,15.6 c-13.7,0-28.5-2.3-44.7-6.9c-16.1-4.6-29.2-11.3-39.3-20.2l-33.3,60c9.2,7.4,24.6,14.7,46.2,22c21.7,7.3,45.2,10.9,70.7,10.9 c34.7,0,62.9-7.4,84.5-22.4c21.7-15,32.5-37.3,32.5-66.9c0-19.3-5-34.2-15.1-44.9S2597.4,512.1,2583.6,507.7z" transform="translate(0)"/>
<path d="M2883.4,575.3c0-19.3-5-34.2-15.1-44.9s-22-18.3-35.8-22.7c-13.8-4.4-30.6-8.1-50.5-11.1c-15.1-2.7-26.1-5.2-32.9-7.6 c-6.8-2.4-10.2-6.1-10.2-11.1s2.3-8.7,6.7-10.9c4.4-2.2,11.5-3.3,21.3-3.3c11.6,0,24.3,2.4,38.1,7.2c13.9,4.8,26.2,11,36.9,18.4 l32.4-58.2c-11.3-7.4-26.2-14.7-44.9-21.8c-18.7-7.1-39.6-10.7-62.7-10.7c-33.7,0-60.2,7.6-79.3,22.7 c-19.1,15.1-28.7,36.1-28.7,63.1c0,19,4.8,33.9,14.4,44.7c9.6,10.8,21,18.5,34,22.9c13.1,4.5,28.9,8.3,47.6,11.6 c14.6,2.7,25.1,5.3,31.6,7.8s9.8,6.5,9.8,11.8c0,10.4-9.7,15.6-29.3,15.6c-13.7,0-28.5-2.3-44.7-6.9c-16.1-4.6-29.2-11.3-39.3-20.2 l-33.3,60c9.2,7.4,24.6,14.7,46.2,22c21.7,7.3,45.2,10.9,70.7,10.9c34.7,0,62.9-7.4,84.5-22.4 C2872.6,627.2,2883.4,604.9,2883.4,575.3z" transform="translate(0)"/>
<rect x="2460.7" y="738.7" width="59.6" height="17.2" transform="translate(0)"/>
<path d="M2596.5,706.4c-5.7,0-11,1-15.8,3s-9,5-12.5,8.9v-9.4h-19.4v93.6h19.4v-52c0-8.6,2.1-15.3,6.3-20c4.2-4.7,9.5-7.1,15.9-7.1 c7.8,0,13.4,2.3,16.8,6.7c3.4,4.5,5.1,11.3,5.1,20.5v52h19.4v-56.8c0-12.8-3.2-22.6-9.5-29.3 C2615.8,709.8,2607.3,706.4,2596.5,706.4z" transform="translate(0)"/>
<path d="M2733.8,717.7c-3.6-3.4-7.9-6.1-13.1-8.2s-10.6-3.1-16.2-3.1c-8.7,0-16.5,2.1-23.5,6.3s-12.5,10-16.5,17.3 c-4,7.3-6,15.4-6,24.4c0,8.9,2,17.1,6,24.3c4,7.3,9.5,13,16.5,17.2s14.9,6.3,23.5,6.3c5.6,0,11-1,16.2-3.1 c5.1-2.1,9.5-4.8,13.1-8.2v24.4c0,8.5-2.5,14.8-7.6,18.7c-5,3.9-11,5.9-18,5.9c-6.7,0-12.4-1.6-17.3-4.7c-4.8-3.1-7.6-7.7-8.3-13.8 h-19.4c0.6,7.7,2.9,14.2,7.1,19.5s9.6,9.3,16.2,12c6.6,2.7,13.8,4,21.7,4c12.8,0,23.5-3.4,32-10.1c8.6-6.7,12.8-17.1,12.8-31.1 V708.9h-19.2V717.7z M2732.2,770.1c-2.5,4.7-6,8.3-10.4,11.2c-4.4,2.7-9.4,4-14.9,4c-5.7,0-10.8-1.4-15.2-4.3s-7.8-6.7-10.2-11.4 c-2.3-4.8-3.5-9.8-3.5-15.2c0-5.5,1.1-10.6,3.5-15.3s5.8-8.5,10.2-11.3s9.5-4.2,15.2-4.2c5.5,0,10.5,1.4,14.9,4s7.9,6.3,10.4,11 s3.8,10,3.8,15.8S2734.7,765.4,2732.2,770.1z" transform="translate(0)"/>
<polygon points="2867.9,708.9 2846.5,708.9 2820.9,741.9 2795.5,708.9 2773.1,708.9 2809.1,755 2771.5,802.5 2792.9,802.5 2820.1,767.9 2847.2,802.6 2869.6,802.6 2832,754.4 " transform="translate(0)"/>
<path d="M757.6,293.7c-20-10.8-42.6-16.2-67.8-16.2H600c-8.5,39.2-21.1,76.4-37.6,111.3c-9.9,20.8-21.1,40.6-33.6,59.4v207.2h88.9 V521.5h72c25.2,0,47.8-5.4,67.8-16.2s35.7-25.6,47.1-44.2c11.4-18.7,17.1-39.1,17.1-61.3c0.1-22.7-5.6-43.3-17-61.9 C793.3,319.2,777.6,304.5,757.6,293.7z M716.6,434.3c-9.3,8.9-21.6,13.3-36.7,13.3l-62.2,0.4v-92.5l62.2-0.4 c15.1,0,27.3,4.4,36.7,13.3c9.4,8.9,14,19.9,14,32.9C730.6,414.5,726,425.4,716.6,434.3z" transform="translate(0)"/>
</g>
</svg>
}
@@ -9,15 +9,6 @@ describe('PngxPdfViewerComponent', () => {
let fixture: ComponentFixture<PngxPdfViewerComponent>
let component: PngxPdfViewerComponent
const setBaseHref = (href: string) => {
let base = document.querySelector('base')
if (!base) {
base = document.createElement('base')
document.head.appendChild(base)
}
base.setAttribute('href', href)
}
const initComponent = async (src = 'test.pdf') => {
component.src = src
fixture.detectChanges()
@@ -33,10 +24,6 @@ describe('PngxPdfViewerComponent', () => {
component = fixture.componentInstance
})
afterEach(() => {
setBaseHref('/')
})
it('loads a document and emits events', async () => {
const loadSpy = jest.fn()
const renderedSpy = jest.fn()
@@ -46,7 +33,7 @@ describe('PngxPdfViewerComponent', () => {
await initComponent()
expect(pdfjs.GlobalWorkerOptions.workerSrc).toBe(
new URL('assets/js/pdf.worker.min.mjs', document.baseURI).toString()
'/assets/js/pdf.worker.min.mjs'
)
const isVisible = (component as any).findController.onIsPageVisible as
| (() => boolean)
@@ -59,19 +46,6 @@ describe('PngxPdfViewerComponent', () => {
expect((component as any).pdfViewer).toBeInstanceOf(PDFViewer)
})
it('resolves the worker source relative to the document base URI', async () => {
setBaseHref('/paperless/')
await initComponent()
expect(pdfjs.GlobalWorkerOptions.workerSrc).toBe(
new URL('assets/js/pdf.worker.min.mjs', document.baseURI).toString()
)
expect(pdfjs.GlobalWorkerOptions.workerSrc).toContain(
'/paperless/assets/js/pdf.worker.min.mjs'
)
})
it('initializes single-page viewer and disables text layer', async () => {
component.renderMode = PdfRenderMode.Single
component.selectable = false
@@ -1,10 +1,8 @@
import {
AfterViewInit,
Component,
DOCUMENT,
ElementRef,
EventEmitter,
inject,
Input,
OnChanges,
OnDestroy,
@@ -41,8 +39,6 @@ import {
export class PngxPdfViewerComponent
implements AfterViewInit, OnChanges, OnDestroy
{
private readonly document = inject<Document>(DOCUMENT)
@Input() src!: PdfSource
@Input() page?: number
@Output() pageChange = new EventEmitter<number>()
@@ -170,10 +166,7 @@ export class PngxPdfViewerComponent
this.lastFindQuery = ''
this.loadingTask?.destroy()
GlobalWorkerOptions.workerSrc = new URL(
'assets/js/pdf.worker.min.mjs',
this.document.baseURI
).toString()
GlobalWorkerOptions.workerSrc = '/assets/js/pdf.worker.min.mjs'
this.loadingTask = getDocument(this.src)
try {
@@ -279,7 +272,7 @@ export class PngxPdfViewerComponent
if (!this.hasRenderedPage) {
return
}
const query = this.searchQuery?.trim()
const query = this.searchQuery.trim()
if (query === this.lastFindQuery) {
return
}
@@ -133,28 +133,28 @@ describe('PermissionsSelectComponent', () => {
expect(viewInput.nativeElement.disabled).toBeFalsy()
})
it('should treat system monitoring as view-only', () => {
it('should treat system status as view-only', () => {
component.ngOnInit()
fixture.detectChanges()
expect(
component.isActionSupported(
PermissionType.SystemMonitoring,
PermissionType.SystemStatus,
PermissionAction.View
)
).toBeTruthy()
expect(
component.isActionSupported(
PermissionType.SystemMonitoring,
PermissionType.SystemStatus,
PermissionAction.Change
)
).toBeFalsy()
const changeInput = fixture.debugElement.query(
By.css('input#SystemMonitoring_Change')
By.css('input#SystemStatus_Change')
)
const viewInput = fixture.debugElement.query(
By.css('input#SystemMonitoring_View')
By.css('input#SystemStatus_View')
)
expect(changeInput.nativeElement.disabled).toBeTruthy()
@@ -261,7 +261,7 @@ export class PermissionsSelectComponent
// Global statistics and system status only support view
if (
type === PermissionType.GlobalStatistics ||
type === PermissionType.SystemMonitoring
type === PermissionType.SystemStatus
) {
return action === PermissionAction.View
}
@@ -25,19 +25,19 @@
</div>
}
@if (suggestions?.suggested_tags.length > 0) {
<small class="list-group-item text-uppercase text-muted small"><i-bs class="me-2" name="tags"></i-bs>Tags</small>
<small class="list-group-item text-uppercase text-muted small">Tags</small>
@for (tag of suggestions.suggested_tags; track tag) {
<button type="button" class="list-group-item list-group-item-action bg-light" (click)="addTag.emit(tag)" i18n>{{ tag }}</button>
}
}
@if (suggestions?.suggested_document_types.length > 0) {
<div class="list-group-item text-uppercase text-muted small"><i-bs class="me-2" name="hash"></i-bs>Document Types</div>
<div class="list-group-item text-uppercase text-muted small">Document Types</div>
@for (type of suggestions.suggested_document_types; track type) {
<button type="button" class="list-group-item list-group-item-action bg-light" (click)="addDocumentType.emit(type)" i18n>{{ type }}</button>
}
}
@if (suggestions?.suggested_correspondents.length > 0) {
<div class="list-group-item text-uppercase text-muted small"><i-bs class="me-2" name="person"></i-bs>Correspondents</div>
<div class="list-group-item text-uppercase text-muted small">Correspondents</div>
@for (correspondent of suggestions.suggested_correspondents; track correspondent) {
<button type="button" class="list-group-item list-group-item-action bg-light" (click)="addCorrespondent.emit(correspondent)" i18n>{{ correspondent }}</button>
}
@@ -142,31 +142,6 @@
}
</ng-template>
</dd>
<dt i18n>Recent Task Activity <span class="small text-muted fw-light">({{status.tasks.summary.days}} days)</span></dt>
<dd class="mb-0">
@if (status.tasks.summary.total_count > 0) {
<ul class="list-group border-light mt-2">
<li class="list-group-item list-group-item-action d-flex justify-content-between align-items-center">
<span class="small"><ng-container i18n>Total</ng-container>:</span>
<span class="badge bg-light rounded-pill">{{status.tasks.summary.total_count}}</span>
</li>
<li class="list-group-item list-group-item-action d-flex justify-content-between align-items-center">
<span class="small"><ng-container i18n>Successful</ng-container>:</span>
<span class="badge bg-primary rounded-pill">{{status.tasks.summary.success_count}}</span>
</li>
<li class="list-group-item list-group-item-action d-flex justify-content-between align-items-center">
<span class="small"><ng-container i18n>Failed</ng-container>:</span>
<span class="badge bg-danger rounded-pill">{{status.tasks.summary.failure_count}}</span>
</li>
<li class="list-group-item list-group-item-action d-flex justify-content-between align-items-center">
<span class="small"><ng-container i18n>Pending</ng-container>:</span>
<span class="badge bg-warning rounded-pill">{{status.tasks.summary.pending_count}}</span>
</li>
</ul>
} @else {
<span class="small text-muted" i18n>No recent tasks</span>
}
</dd>
</dl>
</div>
</div>
@@ -184,11 +159,25 @@
<button class="btn btn-sm d-flex align-items-center btn-dark text-uppercase small" [ngbPopover]="indexStatus" triggers="click mouseenter:mouseleave">
{{status.tasks.index_status}}
@if (status.tasks.index_status === 'OK') {
<i-bs name="check-circle-fill" class="text-primary ms-2 lh-1"></i-bs>
@if (isStale(status.tasks.index_last_modified)) {
<i-bs name="exclamation-triangle-fill" class="text-warning ms-2 lh-1"></i-bs>
} @else {
<i-bs name="check-circle-fill" class="text-primary ms-2 lh-1"></i-bs>
}
} @else {
<i-bs name="exclamation-triangle-fill" class="text-danger ms-2 lh-1"></i-bs>
}
</button>
@if (currentUserIsSuperUser) {
@if (isRunning(PaperlessTaskName.IndexOptimize)) {
<div class="spinner-border spinner-border-sm ms-2" role="status"></div>
} @else {
<button class="btn btn-sm d-flex align-items-center btn-dark small ms-2" (click)="runTask(PaperlessTaskName.IndexOptimize)">
<i-bs name="play-fill" class="me-1"></i-bs>
<ng-container i18n>Run Task</ng-container>
</button>
}
}
</dd>
<ng-template #indexStatus>
@if (status.tasks.index_status === 'OK') {
@@ -214,10 +203,10 @@
}
</button>
@if (currentUserIsSuperUser) {
@if (isRunning(PaperlessTaskType.TrainClassifier)) {
@if (isRunning(PaperlessTaskName.TrainClassifier)) {
<div class="spinner-border spinner-border-sm ms-2" role="status"></div>
} @else {
<button class="btn btn-sm d-flex align-items-center btn-dark small ms-2" (click)="runTask(PaperlessTaskType.TrainClassifier)">
<button class="btn btn-sm d-flex align-items-center btn-dark small ms-2" (click)="runTask(PaperlessTaskName.TrainClassifier)">
<i-bs name="play-fill" class="me-1"></i-bs>
<ng-container i18n>Run Task</ng-container>
</button>
@@ -248,10 +237,10 @@
}
</button>
@if (currentUserIsSuperUser) {
@if (isRunning(PaperlessTaskType.SanityCheck)) {
@if (isRunning(PaperlessTaskName.SanityCheck)) {
<div class="spinner-border spinner-border-sm ms-2" role="status"></div>
} @else {
<button class="btn btn-sm d-flex align-items-center btn-dark small ms-2" (click)="runTask(PaperlessTaskType.SanityCheck)">
<button class="btn btn-sm d-flex align-items-center btn-dark small ms-2" (click)="runTask(PaperlessTaskName.SanityCheck)">
<i-bs name="play-fill" class="me-1"></i-bs>
<ng-container i18n>Run Task</ng-container>
</button>
@@ -296,10 +285,10 @@
}
</button>
@if (currentUserIsSuperUser) {
@if (isRunning(PaperlessTaskType.LlmIndex)) {
@if (isRunning(PaperlessTaskName.LLMIndexUpdate)) {
<div class="spinner-border spinner-border-sm ms-2" role="status"></div>
} @else {
<button class="btn btn-sm d-flex align-items-center btn-dark small ms-2" (click)="runTask(PaperlessTaskType.LlmIndex)">
<button class="btn btn-sm d-flex align-items-center btn-dark small ms-2" (click)="runTask(PaperlessTaskName.LLMIndexUpdate)">
<i-bs name="play-fill" class="me-1"></i-bs>
<ng-container i18n>Run Task</ng-container>
</button>
@@ -25,7 +25,7 @@ import {
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons'
import { Subject, of, throwError } from 'rxjs'
import { PaperlessTaskType } from 'src/app/data/paperless-task'
import { PaperlessTaskName } from 'src/app/data/paperless-task'
import {
InstallType,
SystemStatus,
@@ -71,13 +71,6 @@ const status: SystemStatus = {
llmindex_status: SystemStatusItemStatus.OK,
llmindex_last_modified: new Date().toISOString(),
llmindex_error: null,
summary: {
days: 30,
total_count: 12,
pending_count: 1,
success_count: 10,
failure_count: 1,
},
},
}
@@ -145,9 +138,9 @@ describe('SystemStatusDialogComponent', () => {
})
it('should check if task is running', () => {
component.runTask(PaperlessTaskType.SanityCheck)
expect(component.isRunning(PaperlessTaskType.SanityCheck)).toBeTruthy()
expect(component.isRunning(PaperlessTaskType.TrainClassifier)).toBeFalsy()
component.runTask(PaperlessTaskName.IndexOptimize)
expect(component.isRunning(PaperlessTaskName.IndexOptimize)).toBeTruthy()
expect(component.isRunning(PaperlessTaskName.SanityCheck)).toBeFalsy()
})
it('should support running tasks, refresh status and show toasts', () => {
@@ -158,22 +151,22 @@ describe('SystemStatusDialogComponent', () => {
// fail first
runSpy.mockReturnValue(throwError(() => new Error('error')))
component.runTask(PaperlessTaskType.SanityCheck)
expect(runSpy).toHaveBeenCalledWith(PaperlessTaskType.SanityCheck)
component.runTask(PaperlessTaskName.IndexOptimize)
expect(runSpy).toHaveBeenCalledWith(PaperlessTaskName.IndexOptimize)
expect(toastErrorSpy).toHaveBeenCalledWith(
`Failed to start task ${PaperlessTaskType.SanityCheck}, see the logs for more details`,
`Failed to start task ${PaperlessTaskName.IndexOptimize}, see the logs for more details`,
expect.any(Error)
)
// succeed
runSpy.mockReturnValue(of({}))
getStatusSpy.mockReturnValue(of(status))
component.runTask(PaperlessTaskType.SanityCheck)
expect(runSpy).toHaveBeenCalledWith(PaperlessTaskType.SanityCheck)
component.runTask(PaperlessTaskName.IndexOptimize)
expect(runSpy).toHaveBeenCalledWith(PaperlessTaskName.IndexOptimize)
expect(getStatusSpy).toHaveBeenCalled()
expect(toastSpy).toHaveBeenCalledWith(
`Task ${PaperlessTaskType.SanityCheck} started`
`Task ${PaperlessTaskName.IndexOptimize} started`
)
})
@@ -8,7 +8,7 @@ import {
} from '@ng-bootstrap/ng-bootstrap'
import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons'
import { Subject, takeUntil } from 'rxjs'
import { PaperlessTaskType } from 'src/app/data/paperless-task'
import { PaperlessTaskName } from 'src/app/data/paperless-task'
import {
SystemStatus,
SystemStatusItemStatus,
@@ -49,14 +49,14 @@ export class SystemStatusDialogComponent implements OnInit, OnDestroy {
private settingsService = inject(SettingsService)
public SystemStatusItemStatus = SystemStatusItemStatus
public PaperlessTaskType = PaperlessTaskType
public PaperlessTaskName = PaperlessTaskName
public status: SystemStatus
public frontendVersion: string = environment.version
public versionMismatch: boolean = false
public copied: boolean = false
private runningTasks: Set<PaperlessTaskType> = new Set()
private runningTasks: Set<PaperlessTaskName> = new Set()
private unsubscribeNotifier: Subject<any> = new Subject()
get currentUserIsSuperUser(): boolean {
@@ -107,11 +107,11 @@ export class SystemStatusDialogComponent implements OnInit, OnDestroy {
return now.getTime() - date.getTime() > hours * 60 * 60 * 1000
}
public isRunning(taskName: PaperlessTaskType): boolean {
public isRunning(taskName: PaperlessTaskName): boolean {
return this.runningTasks.has(taskName)
}
public runTask(taskName: PaperlessTaskType) {
public runTask(taskName: PaperlessTaskName) {
this.runningTasks.add(taskName)
this.toastService.showInfo(`Task ${taskName} started`)
this.tasksService.run(taskName).subscribe({
@@ -1,5 +1,5 @@
<pngx-page-header title="Dashboard" [subTitle]="subtitle" i18n-title tourAnchor="tour.dashboard">
<pngx-logo extra_classes="d-none d-md-block mt-n2" height="3rem"></pngx-logo>
<pngx-logo extra_classes="d-none d-md-block mt-n2" height="3.5rem"></pngx-logo>
</pngx-page-header>
<div class="row">
@@ -54,10 +54,10 @@
@if (isFinished(status)) {
<div>
@if (status.documentId) {
<a class="btn btn-sm btn-outline-primary btn-open" [routerLink]="['/documents', status.documentId]" (click)="dismiss(status)">
<button class="btn btn-sm btn-outline-primary btn-open" routerLink="/documents/{{status.documentId}}" (click)="dismiss(status)">
<small i18n>Open document</small>
<i-bs name="arrow-right-short"></i-bs>
</a>
</button>
}
</div>
}
@@ -1381,7 +1381,6 @@ describe('DocumentDetailComponent', () => {
it('should get suggestions', () => {
const suggestionsSpy = jest.spyOn(documentService, 'getSuggestions')
const aiSuggestionsSpy = jest.spyOn(documentService, 'getAiSuggestions')
suggestionsSpy.mockReturnValue(
of({
tags: [42, 43],
@@ -1392,35 +1391,6 @@ describe('DocumentDetailComponent', () => {
)
initNormally()
expect(suggestionsSpy).toHaveBeenCalled()
expect(aiSuggestionsSpy).not.toHaveBeenCalled()
expect(component.suggestions).toEqual({
tags: [42, 43],
suggested_tags: [],
suggested_document_types: [],
suggested_correspondents: [],
})
})
it('should get AI suggestions when AI is enabled', () => {
const getSetting = settingsService.get.bind(settingsService)
jest
.spyOn(settingsService, 'get')
.mockImplementation((key) =>
key === SETTINGS_KEYS.AI_ENABLED ? true : getSetting(key)
)
const suggestionsSpy = jest.spyOn(documentService, 'getSuggestions')
const aiSuggestionsSpy = jest.spyOn(documentService, 'getAiSuggestions')
aiSuggestionsSpy.mockReturnValue(
of({
tags: [42, 43],
suggested_tags: [],
suggested_document_types: [],
suggested_correspondents: [],
})
)
initNormally()
expect(suggestionsSpy).not.toHaveBeenCalled()
expect(aiSuggestionsSpy).toHaveBeenCalled()
expect(component.suggestions).toEqual({
tags: [42, 43],
suggested_tags: [],
@@ -2221,20 +2191,10 @@ describe('DocumentDetailComponent', () => {
expect(createElementSpy).toHaveBeenCalledWith('iframe')
expect(appendChildSpy).toHaveBeenCalledWith(mockIframe)
expect(createObjectURLSpy).toHaveBeenCalledWith(blob)
expect(mockIframe.style).toEqual({
position: 'fixed',
right: '0',
bottom: '0',
width: '0',
height: '0',
border: '0',
visibility: 'hidden',
})
if (mockIframe.onload) {
mockIframe.onload({} as any)
}
tick()
expect(mockContentWindow.focus).toHaveBeenCalled()
expect(mockContentWindow.print).toHaveBeenCalled()
@@ -2347,7 +2307,6 @@ describe('DocumentDetailComponent', () => {
mockIframe.onload(new Event('load'))
}
tick()
tick(200)
if (expectToast) {
@@ -981,10 +981,8 @@ export class DocumentDetailComponent
getSuggestions() {
this.suggestionsLoading = true
const suggestionsObservable = this.aiEnabled
? this.documentsService.getAiSuggestions(this.documentId)
: this.documentsService.getSuggestions(this.documentId)
suggestionsObservable
this.documentsService
.getSuggestions(this.documentId)
.pipe(
first(),
takeUntil(this.unsubscribeNotifier),
@@ -1873,39 +1871,31 @@ export class DocumentDetailComponent
next: (blob) => {
const blobUrl = URL.createObjectURL(blob)
const iframe = document.createElement('iframe')
iframe.style.position = 'fixed'
iframe.style.right = '0'
iframe.style.bottom = '0'
iframe.style.width = '0'
iframe.style.height = '0'
iframe.style.border = '0'
iframe.style.visibility = 'hidden'
iframe.style.display = 'none'
iframe.src = blobUrl
document.body.appendChild(iframe)
iframe.onload = () => {
timer(0).subscribe(() => {
try {
iframe.contentWindow.focus()
iframe.contentWindow.print()
iframe.contentWindow.onafterprint = () => {
document.body.removeChild(iframe)
URL.revokeObjectURL(blobUrl)
}
} catch (err) {
// FF throws cross-origin error on onafterprint
const isCrossOriginAfterPrintError =
err instanceof DOMException &&
err.message.includes('onafterprint')
if (!isCrossOriginAfterPrintError) {
this.toastService.showError($localize`Print failed.`, err)
}
timer(100).subscribe(() => {
// delay to avoid FF print failure
document.body.removeChild(iframe)
URL.revokeObjectURL(blobUrl)
})
try {
iframe.contentWindow.focus()
iframe.contentWindow.print()
iframe.contentWindow.onafterprint = () => {
document.body.removeChild(iframe)
URL.revokeObjectURL(blobUrl)
}
})
} catch (err) {
// FF throws cross-origin error on onafterprint
const isCrossOriginAfterPrintError =
err instanceof DOMException &&
err.message.includes('onafterprint')
if (!isCrossOriginAfterPrintError) {
this.toastService.showError($localize`Print failed.`, err)
}
timer(100).subscribe(() => {
// delay to avoid FF print failure
document.body.removeChild(iframe)
URL.revokeObjectURL(blobUrl)
})
}
}
},
error: () => {
+2 -2
View File
@@ -55,12 +55,12 @@ export const ConfigCategory = {
}
export const LLMEmbeddingBackendConfig = {
OPENAI_LIKE: 'openai-like',
OPENAI: 'openai',
HUGGINGFACE: 'huggingface',
}
export const LLMBackendConfig = {
OPENAI_LIKE: 'openai-like',
OPENAI: 'openai',
OLLAMA: 'ollama',
}
+34 -51
View File
@@ -1,66 +1,49 @@
import { Document } from './document'
import { ObjectWithId } from './object-with-id'
export enum PaperlessTaskType {
ConsumeFile = 'consume_file',
TrainClassifier = 'train_classifier',
SanityCheck = 'sanity_check',
MailFetch = 'mail_fetch',
LlmIndex = 'llm_index',
EmptyTrash = 'empty_trash',
CheckWorkflows = 'check_workflows',
BulkUpdate = 'bulk_update',
ReprocessDocument = 'reprocess_document',
BuildShareLink = 'build_share_link',
BulkDelete = 'bulk_delete',
Auto = 'auto_task',
ScheduledTask = 'scheduled_task',
ManualTask = 'manual_task',
}
export enum PaperlessTaskTriggerSource {
Scheduled = 'scheduled',
WebUI = 'web_ui',
ApiUpload = 'api_upload',
FolderConsume = 'folder_consume',
EmailConsume = 'email_consume',
System = 'system',
Manual = 'manual',
export enum PaperlessTaskName {
ConsumeFile = 'consume_file',
TrainClassifier = 'train_classifier',
SanityCheck = 'check_sanity',
IndexOptimize = 'index_optimize',
LLMIndexUpdate = 'llmindex_update',
}
export enum PaperlessTaskStatus {
Pending = 'pending',
Started = 'started',
Success = 'success',
Failure = 'failure',
Revoked = 'revoked',
Pending = 'PENDING',
Started = 'STARTED',
Complete = 'SUCCESS',
Failed = 'FAILURE',
}
export interface PaperlessTask extends ObjectWithId {
task_id: string
task_type: PaperlessTaskType
task_type_display: string
trigger_source: PaperlessTaskTriggerSource
trigger_source_display: string
type: PaperlessTaskType
status: PaperlessTaskStatus
status_display: string
date_created: Date
date_started?: Date
date_done?: Date
duration_seconds?: number
wait_time_seconds?: number
input_data: Record<string, any>
result_data?: Record<string, any>
related_document_ids: number[]
acknowledged: boolean
task_id: string
task_file_name: string
task_name: PaperlessTaskName
date_created: Date
date_done?: Date
result?: string
related_document?: number
duplicate_documents?: Document[]
owner?: number
}
export interface PaperlessTaskSummary {
task_type: PaperlessTaskType
total_count: number
pending_count: number
success_count: number
failure_count: number
avg_duration_seconds: number | null
avg_wait_time_seconds: number | null
last_run: Date | null
last_success: Date | null
last_failure: Date | null
}
-7
View File
@@ -47,13 +47,6 @@ export interface SystemStatus {
llmindex_status: SystemStatusItemStatus
llmindex_last_modified: string // ISO date string
llmindex_error: string
summary: {
days: number
total_count: number
pending_count: number
success_count: number
failure_count: number
}
}
websocket_connected?: SystemStatusItemStatus // added client-side
}
+1 -23
View File
@@ -9,11 +9,7 @@ import {
} from '@angular/common/http/testing'
import { TestBed } from '@angular/core/testing'
import { environment } from 'src/environments/environment'
import {
CHAT_METADATA_DELIMITER,
ChatService,
parseChatResponse,
} from './chat.service'
import { ChatService } from './chat.service'
describe('ChatService', () => {
let service: ChatService
@@ -59,22 +55,4 @@ describe('ChatService', () => {
partialText: mockResponse,
} as any)
})
it('should parse chat references from the metadata trailer', () => {
const parsed = parseChatResponse(
`Answer text${CHAT_METADATA_DELIMITER}{"references":[{"id":1,"title":"Document 1"}]}`
)
expect(parsed.content).toBe('Answer text')
expect(parsed.references).toEqual([{ id: 1, title: 'Document 1' }])
})
it('should hide incomplete metadata trailer from the visible content', () => {
const parsed = parseChatResponse(
`Answer text${CHAT_METADATA_DELIMITER}{"references"`
)
expect(parsed.content).toBe('Answer text')
expect(parsed.references).toBeUndefined()
})
})
-40
View File
@@ -11,46 +11,6 @@ export interface ChatMessage {
role: 'user' | 'assistant'
content: string
isStreaming?: boolean
references?: ChatReference[]
}
export interface ChatReference {
id: number
title: string
}
export interface ParsedChatResponse {
content: string
references?: ChatReference[]
}
export const CHAT_METADATA_DELIMITER = '\n\n__PAPERLESS_CHAT_METADATA__'
export function parseChatResponse(response: string): ParsedChatResponse {
const delimiterIndex = response.indexOf(CHAT_METADATA_DELIMITER)
if (delimiterIndex === -1) {
return { content: response }
}
const metadataString = response.slice(
delimiterIndex + CHAT_METADATA_DELIMITER.length
)
try {
const metadata = JSON.parse(metadataString) as {
references?: ChatReference[]
}
return {
content: response.slice(0, delimiterIndex),
references: metadata.references ?? [],
}
} catch {
return {
content: response.slice(0, delimiterIndex),
}
}
}
@Injectable({
@@ -8,7 +8,7 @@ import {
const VIEW_ONLY_PERMISSION_TYPES = new Set<PermissionType>([
PermissionType.GlobalStatistics,
PermissionType.SystemMonitoring,
PermissionType.SystemStatus,
])
describe('PermissionsService', () => {
@@ -270,7 +270,7 @@ describe('PermissionsService', () => {
'delete_applicationconfiguration',
'view_applicationconfiguration',
'view_global_statistics',
'view_system_monitoring',
'view_system_status',
],
{
username: 'testuser',
@@ -30,7 +30,7 @@ export enum PermissionType {
Workflow = '%s_workflow',
ProcessedMail = '%s_processedmail',
GlobalStatistics = '%s_global_statistics',
SystemMonitoring = '%s_system_monitoring',
SystemStatus = '%s_system_status',
}
@Injectable({
@@ -193,14 +193,6 @@ describe(`DocumentService`, () => {
expect(req.request.method).toEqual('GET')
})
it('should call appropriate api endpoint for getting AI suggestions', () => {
subscription = service.getAiSuggestions(documents[0].id).subscribe()
const req = httpTestingController.expectOne(
`${environment.apiBaseUrl}${endpoint}/${documents[0].id}/ai_suggestions/`
)
expect(req.request.method).toEqual('GET')
})
it('should call appropriate api endpoint for bulk download', () => {
const ids = [1, 2, 3]
const content = 'both'
@@ -404,12 +404,6 @@ export class DocumentService extends AbstractPaperlessService<Document> {
)
}
getAiSuggestions(id: number): Observable<DocumentSuggestions> {
return this.http.get<DocumentSuggestions>(
this.getResourceUrl(id, 'ai_suggestions')
)
}
getHistory(id: number): Observable<AuditLogEntry[]> {
return this.http.get<AuditLogEntry[]>(this.getResourceUrl(id, 'history'))
}
+30 -104
View File
@@ -1,8 +1,4 @@
import {
HttpRequest,
provideHttpClient,
withInterceptorsFromDi,
} from '@angular/common/http'
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'
import {
HttpTestingController,
provideHttpClientTesting,
@@ -10,8 +6,8 @@ import {
import { TestBed } from '@angular/core/testing'
import { environment } from 'src/environments/environment'
import {
PaperlessTaskName,
PaperlessTaskStatus,
PaperlessTaskTriggerSource,
PaperlessTaskType,
} from '../data/paperless-task'
import { TasksService } from './tasks.service'
@@ -41,21 +37,16 @@ describe('TasksService', () => {
it('calls tasks api endpoint on reload', () => {
tasksService.reload()
const req = httpTestingController.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false' &&
req.params.get('page_size') === '1000'
`${environment.apiBaseUrl}tasks/?task_name=consume_file&acknowledged=false`
)
expect(req.request.method).toEqual('GET')
req.flush({ count: 0, results: [] })
})
it('does not call tasks api endpoint on reload if already loading', () => {
tasksService.loading = true
tasksService.reload()
httpTestingController.expectNone(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/`
`${environment.apiBaseUrl}tasks/?task_name=consume_file&acknowledged=false`
)
})
@@ -72,79 +63,68 @@ describe('TasksService', () => {
// reload is then called
httpTestingController
.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false' &&
req.params.get('page_size') === '1000'
`${environment.apiBaseUrl}tasks/?task_name=consume_file&acknowledged=false`
)
.flush({ count: 0, results: [] })
.flush([])
})
it('groups mixed task types by status when reloading', () => {
it('sorts tasks returned from api', () => {
expect(tasksService.total).toEqual(0)
const mockTasks = [
{
task_type: PaperlessTaskType.ConsumeFile,
trigger_source: PaperlessTaskTriggerSource.FolderConsume,
status: PaperlessTaskStatus.Success,
type: PaperlessTaskType.Auto,
task_name: PaperlessTaskName.ConsumeFile,
status: PaperlessTaskStatus.Complete,
acknowledged: false,
task_id: '1234',
input_data: { filename: 'file1.pdf' },
task_file_name: 'file1.pdf',
date_created: new Date(),
related_document_ids: [],
},
{
task_type: PaperlessTaskType.SanityCheck,
trigger_source: PaperlessTaskTriggerSource.System,
status: PaperlessTaskStatus.Failure,
type: PaperlessTaskType.Auto,
task_name: PaperlessTaskName.ConsumeFile,
status: PaperlessTaskStatus.Failed,
acknowledged: false,
task_id: '1235',
input_data: {},
task_file_name: 'file2.pdf',
date_created: new Date(),
related_document_ids: [],
},
{
task_type: PaperlessTaskType.MailFetch,
trigger_source: PaperlessTaskTriggerSource.Scheduled,
type: PaperlessTaskType.Auto,
task_name: PaperlessTaskName.ConsumeFile,
status: PaperlessTaskStatus.Pending,
acknowledged: false,
task_id: '1236',
input_data: {},
task_file_name: 'file3.pdf',
date_created: new Date(),
related_document_ids: [],
},
{
task_type: PaperlessTaskType.LlmIndex,
trigger_source: PaperlessTaskTriggerSource.WebUI,
type: PaperlessTaskType.Auto,
task_name: PaperlessTaskName.ConsumeFile,
status: PaperlessTaskStatus.Started,
acknowledged: false,
task_id: '1237',
input_data: {},
task_file_name: 'file4.pdf',
date_created: new Date(),
related_document_ids: [],
},
{
task_type: PaperlessTaskType.EmptyTrash,
trigger_source: PaperlessTaskTriggerSource.Manual,
status: PaperlessTaskStatus.Success,
type: PaperlessTaskType.Auto,
task_name: PaperlessTaskName.ConsumeFile,
status: PaperlessTaskStatus.Complete,
acknowledged: false,
task_id: '1238',
input_data: {},
task_file_name: 'file5.pdf',
date_created: new Date(),
related_document_ids: [],
},
]
tasksService.reload()
const req = httpTestingController.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false' &&
req.params.get('page_size') === '1000'
`${environment.apiBaseUrl}tasks/?task_name=consume_file&acknowledged=false`
)
req.flush({ count: mockTasks.length, results: mockTasks })
req.flush(mockTasks)
expect(tasksService.allFileTasks).toHaveLength(5)
expect(tasksService.completedFileTasks).toHaveLength(2)
@@ -153,64 +133,10 @@ describe('TasksService', () => {
expect(tasksService.startedFileTasks).toHaveLength(1)
})
it('includes revoked tasks in needs attention', () => {
const mockTasks = [
{
task_type: PaperlessTaskType.SanityCheck,
trigger_source: PaperlessTaskTriggerSource.System,
status: PaperlessTaskStatus.Failure,
acknowledged: false,
task_id: '1235',
input_data: {},
date_created: new Date(),
related_document_ids: [],
},
{
task_type: PaperlessTaskType.MailFetch,
trigger_source: PaperlessTaskTriggerSource.Scheduled,
status: PaperlessTaskStatus.Revoked,
acknowledged: false,
task_id: '1236',
input_data: {},
date_created: new Date(),
related_document_ids: [],
},
{
task_type: PaperlessTaskType.EmptyTrash,
trigger_source: PaperlessTaskTriggerSource.Manual,
status: PaperlessTaskStatus.Success,
acknowledged: false,
task_id: '1238',
input_data: {},
date_created: new Date(),
related_document_ids: [],
},
]
tasksService.reload()
const req = httpTestingController.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false' &&
req.params.get('page_size') === '1000'
)
req.flush({ count: mockTasks.length, results: mockTasks })
expect(tasksService.needsAttentionTasks).toHaveLength(2)
expect(tasksService.needsAttentionTasks.map((task) => task.status)).toEqual(
expect.arrayContaining([
PaperlessTaskStatus.Failure,
PaperlessTaskStatus.Revoked,
])
)
})
it('supports running tasks', () => {
tasksService.run(PaperlessTaskType.SanityCheck).subscribe((res) => {
tasksService.run(PaperlessTaskName.SanityCheck).subscribe((res) => {
expect(res).toEqual({
task_id: 'abc-123',
result: 'success',
})
})
const req = httpTestingController.expectOne(
@@ -218,7 +144,7 @@ describe('TasksService', () => {
)
expect(req.request.method).toEqual('POST')
req.flush({
task_id: 'abc-123',
result: 'success',
})
})
})
+19 -52
View File
@@ -1,13 +1,12 @@
import { HttpClient } from '@angular/common/http'
import { Injectable, inject } from '@angular/core'
import { Observable, Subject } from 'rxjs'
import { first, map, takeUntil, tap } from 'rxjs/operators'
import { first, takeUntil, tap } from 'rxjs/operators'
import {
PaperlessTask,
PaperlessTaskName,
PaperlessTaskStatus,
PaperlessTaskType,
} from 'src/app/data/paperless-task'
import { Results } from 'src/app/data/results'
import { environment } from 'src/environments/environment'
@Injectable({
@@ -18,9 +17,8 @@ export class TasksService {
private baseUrl: string = environment.apiBaseUrl
private endpoint: string = 'tasks'
private readonly defaultReloadPageSize = 1000
public loading: boolean = false
public loading: boolean
private fileTasks: PaperlessTask[] = []
@@ -35,35 +33,21 @@ export class TasksService {
}
public get queuedFileTasks(): PaperlessTask[] {
return this.fileTasks.filter(
(t) => t.status === PaperlessTaskStatus.Pending
)
return this.fileTasks.filter((t) => t.status == PaperlessTaskStatus.Pending)
}
public get startedFileTasks(): PaperlessTask[] {
return this.fileTasks.filter(
(t) => t.status === PaperlessTaskStatus.Started
)
return this.fileTasks.filter((t) => t.status == PaperlessTaskStatus.Started)
}
public get completedFileTasks(): PaperlessTask[] {
return this.fileTasks.filter(
(t) => t.status === PaperlessTaskStatus.Success
(t) => t.status == PaperlessTaskStatus.Complete
)
}
public get failedFileTasks(): PaperlessTask[] {
return this.fileTasks.filter(
(t) => t.status === PaperlessTaskStatus.Failure
)
}
public get needsAttentionTasks(): PaperlessTask[] {
return this.fileTasks.filter((t) =>
[PaperlessTaskStatus.Failure, PaperlessTaskStatus.Revoked].includes(
t.status
)
)
return this.fileTasks.filter((t) => t.status == PaperlessTaskStatus.Failed)
}
public reload() {
@@ -71,38 +55,19 @@ export class TasksService {
this.loading = true
this.http
.get<Results<PaperlessTask>>(`${this.baseUrl}${this.endpoint}/`, {
params: {
acknowledged: 'false',
page_size: this.defaultReloadPageSize,
},
})
.pipe(map((r) => r.results))
.get<PaperlessTask[]>(
`${this.baseUrl}${this.endpoint}/?task_name=consume_file&acknowledged=false`
)
.pipe(takeUntil(this.unsubscribeNotifer), first())
.subscribe((r) => {
this.fileTasks = r
this.fileTasks = r.filter(
(t) => t.task_name == PaperlessTaskName.ConsumeFile
)
this.loading = false
})
}
public list(
page: number,
pageSize: number,
extraParams?: Record<string, string | number | boolean>
): Observable<Results<PaperlessTask>> {
return this.http.get<Results<PaperlessTask>>(
`${this.baseUrl}${this.endpoint}/`,
{
params: {
page,
page_size: pageSize,
...extraParams,
},
}
)
}
public dismissTasks(task_ids: Set<number>): Observable<any> {
public dismissTasks(task_ids: Set<number>) {
return this.http
.post(`${this.baseUrl}tasks/acknowledge/`, {
tasks: [...task_ids],
@@ -120,10 +85,12 @@ export class TasksService {
this.unsubscribeNotifer.next(true)
}
public run(taskType: PaperlessTaskType): Observable<{ task_id: string }> {
return this.http.post<{ task_id: string }>(
public run(taskName: PaperlessTaskName): Observable<any> {
return this.http.post<any>(
`${environment.apiBaseUrl}${this.endpoint}/run/`,
{ task_type: taskType }
{
task_name: taskName,
}
)
}
}
@@ -142,21 +142,6 @@ describe('CustomFieldQueryAtom', () => {
atom.value = [1, 3]
expect(changeSpy).toHaveBeenCalledTimes(1)
})
it('should emit one changed event when operator change coerces value', () => {
const atom = new CustomFieldQueryAtom([
1,
CustomFieldQueryOperator.In,
[1, 2],
])
const changeSpy = jest.fn()
atom.changed.subscribe(changeSpy)
atom.operator = CustomFieldQueryOperator.Exact
expect(changeSpy).toHaveBeenCalledTimes(1)
expect(atom.serialize()).toEqual([1, CustomFieldQueryOperator.Exact, ''])
})
})
describe('CustomFieldQueryExpression', () => {
@@ -70,29 +70,29 @@ export class CustomFieldQueryAtom extends CustomFieldQueryElement {
const newTypes: string[] =
CUSTOM_FIELD_QUERY_VALUE_TYPES_BY_OPERATOR[operator]?.split('|')
if (!newTypes) {
this._value = null
this.value = null
} else {
if (!newTypes.includes(typeof this.value)) {
switch (newTypes[0]) {
case 'string':
this._value = ''
this.value = ''
break
case 'boolean':
this._value = 'true'
this.value = 'true'
break
case 'array':
this._value = []
this.value = []
break
case 'number':
const num = parseFloat(this.value as string)
this._value = isNaN(num) ? null : num.toString()
this.value = isNaN(num) ? null : num.toString()
break
}
} else if (
['true', 'false'].includes(this.value as string) &&
newTypes.includes('string')
) {
this._value = ''
this.value = ''
}
}
super.operator = operator
@@ -103,13 +103,7 @@ export class CustomFieldQueryAtom extends CustomFieldQueryElement {
return super.operator
}
constructor(
queryArray: [number, string, string | string[] | number[]] = [
null,
null,
null,
]
) {
constructor(queryArray: [number, string, string] = [null, null, null]) {
super(CustomFieldQueryElementType.Atom)
;[this._field, this._operator, this._value] = queryArray
}
+1 -1
View File
@@ -6,7 +6,7 @@ export const environment = {
apiVersion: '10', // match src/paperless/settings.py
appTitle: 'Paperless-ngx',
tag: 'prod',
version: '2.20.15',
version: '2.20.14',
webSocketHost: window.location.host,
webSocketProtocol: window.location.protocol == 'https:' ? 'wss:' : 'ws:',
webSocketBaseUrl: base_url.pathname + 'ws/',
Loaded 100 of 306 files, more files were not shown because too many files have changed in this diff. Show more